Entity Overview en Property Mapping
Ultimo werkt met drie lagen: het scherm (wat de gebruiker ziet), de entiteit/property (businesslogica), en de tabel/kolom (database). Als consultant navigeer je dagelijks tussen deze lagen — voor het bouwen van workflows, schrijven van SQL-queries, debuggen van configuratie en het interpreteren van schermgedrag. Dit artikel beschrijft hoe die mapping werkt en welke tools je daarvoor gebruikt.
Gerelateerde artikelen: workflow-designer, workflow-instructies, sql-patronen, sql-referentie
De drie lagenbewerken
| Laag | Wat het is | Voorbeeld |
|---|---|---|
| Scherm | Wat de gebruiker ziet: velden, labels, knoppen | Veld "Afdeling" op het Prepare Job-scherm |
| Entiteit/Property | Businesslogica-laag in UCT (Entity Overview) | Entiteit Job, property Department |
| Tabel/Kolom | De fysieke database (SQL, SSMS) | Tabel job, kolom job_DEP_ID |
Het vertalen tussen deze lagen is een kernvaardigheid. UCT biedt hiervoor drie specifieke tools: Technical Screen Information, Screen Database Objects en Entity Overview.
Technical Screen Informationbewerken
De snelste manier om van een schermveld naar de bijbehorende tabel en kolom te gaan.
Stappen:
- Open het scherm waar het veld op staat
- Klik met de cursor in het gewenste veld
- Klik op het ? icoon rechtsboven in het scherm
- Er verschijnt een overlay met de tabelnaam en kolomnaam van het veld
- Scroll naar beneden in de overlay: eventueel gekoppelde workflow is ook zichtbaar
Use cases:
- Debuggen: welke kolom wordt precies beschreven door dit veld?
- Workflow bouwen: wat is de property die bij dit veld hoort?
- SQL-queries schrijven: juiste kolomnaam opzoeken zonder gokwerk
Screen Database Objectsbewerken
Een UCT-scherm dat de koppeling toont tussen databasetabellen en entiteiten.
Gebruik:
- Zoek op tabelnaam (bijv.
job) → ziet de bijbehorende entiteitnaam (Job) - Zoek op entiteitnaam → ziet de bijbehorende tabelnaam
- Essentieel als tussenstap wanneer je alleen de tabelnaam weet (vanuit Technical Screen Info) en de entiteitnaam nodig hebt (voor Entity Overview)
Entity Overviewbewerken
Te vinden in UCT onder Documentation > Entity Overview. Dit scherm toont alle properties van een entiteit met de bijbehorende databasekolommen.
Gebruik:
- Zoek op entiteitnaam (bijv.
Job) - De lijst toont alle properties met hun kolomnaam, datatype en label
- Context tab: toont de mogelijke contextwaarden voor die entiteit
- Status Matrix tab: toont de mogelijke statuswaarden en toegestane overgangen
Compleet vertaalproces: Schermveld → Workflow Propertybewerken
Concreet voorbeeld met het veld "Afdeling" op het Prepare Job-scherm:
1. Scherm Open het Prepare Job-scherm, klik in het veld "Afdeling (Department)".
2. Technical Screen Information Klik op het ? icoon. Toont:
- Tabel:
job - Kolom:
job_DEP_ID
3. Screen Database Objects
Zoek op tabel job → entiteit = Job
4. Entity Overview
Zoek entiteit Job, zoek kolom job_DEP_ID → property = Department
5. In workflow Gebruik de property name in een expression:
${root.job.Department}
${newJob.Department}
Property chaining syntaxbewerken
Properties kunnen worden gekoppeld om gerelateerde waarden op te halen. De puntnotatie volgt de relaties tussen entiteiten.
${root.job} → het job-record op het scherm
${root.job.Equipment} → het equipment van de job
${root.job.Equipment.Id} → het ID van dat equipment
${root.job.Equipment.WarrantDate} → de garantiedatum van dat equipment
${equipmentList.Count} → aantal items in een lijst
${employee.Description} → beschrijving van een medewerker
Vuistregels:
- Gebruik altijd
.Descriptionvoor leesbare tekst in berichten en workflows (niet.Id) - Property names zijn case-sensitive —
Departmentwerkt,departmentniet - Gebruik
empty()voor null-checks, niet""ofnull
Veelgebruikte entiteiten en hun tabellenbewerken
| Entiteit | Tabel | Prefix | Primary Key | Veelgebruikte properties |
|---|---|---|---|---|
| Job | job |
JOB_ |
JOB_ID |
Description, Status, Context, Equipment, Employee, WorkOrderType, Priority |
| Equipment | equipment |
EQM_ |
EQM_ID |
Description, Department, Context, WarrantDate, EquipmentType |
| Employee | employee |
AMP_ |
AMP_ID |
Description, FirstName, Surname, ToolAddress (email), Department, Context |
| Department | department |
DEP_ |
DEP_ID |
Description |
| WorkOrderType | work_order_type |
WHAT_ |
WHAT_ID |
Description, Category |
| SkillCategory | skill_category |
MSKC_ |
MSKC_ID |
Description |
Foreign key patronenbewerken
Ultimo gebruikt een consistente naamgevingsconventie voor foreign keys: <tabelprefix>_<doeltabelprefix>_ID.
JOB_DEP_ID → DEP_ID (Job → Department)
JOB_EQM_ID → EQM_ID (Job → Equipment)
JOB_AMP_ID → AMP_ID (Job → Employee)
JOB_WHAT_ID → WHAT_ID (Job → WorkOrderType)
EQM_DEP_ID → DEP_ID (Equipment → Department)
AMP_MSKCID → MSKC_ID (Employee → SkillCategory/Team)
Zie ook: configuration/database-objects voor het volledige databaseschema.
Context waardenbewerken
Context bepaalt in welke "modus" een entiteit wordt gebruikt. Dezelfde entiteit (bijv. Equipment) gedraagt zich anders afhankelijk van de context — andere schermen, andere workflows, andere velden.
| Entiteit | Context | Waarde | Betekenis |
|---|---|---|---|
| Equipment | 1 | Technische Dienst | Standaard installaties |
| Equipment | 32 | Configuration Item | IT/CMDB items |
| Job | (varies) | Technische Dienst | Standaard werkorders |
| Employee | 1 | Personeel | Eigen medewerkers |
Zie voor een volledig overzicht: concepts/contexten
Valkuilen en tipsbewerken
- Property names zijn case-sensitive.
${root.job.department}werkt niet; gebruik${root.job.Department}. - Gebruik
.Descriptionvoor leesbare waarden. Een foreign key property geeft het gerelateerde object terug;.Descriptiongeeft de omschrijving als tekst. empty()voor null-checks. In Ultimo expressions gebruik jeempty(root.job.Equipment)om te controleren of een veld leeg is, niet== nullof== "".- Screen Database Objects als tussenstap. Als je alleen de tabelnaam weet (van Technical Screen Info) maar de entiteitnaam nodig hebt voor Entity Overview, gebruik dan altijd Screen Database Objects.
- Technical Screen Info werkt per veld. Klik eerst in het veld, dan pas op het ? icoon — anders zie je de info van het scherm als geheel.
Brondatabewerken
Dit artikel is consultant-synthese. Voor ground-truth data over specifieke Ultimo-objecten gebruik de onderstaande tools.
- Entiteit-data —
lookup_entity("<Name>")·lookup_table_schema("<Name>")Alle properties, DB-kolomnamen, triggers en computed columns. Bronnen:Entities.xml,database-schema.json. - Workflows per entiteit —
find_workflows("", entity="<Name>")Alle Before/After Save events en andere ActionFields voor een entiteit. Bron:workflows.xml. - Schermen —
lookup_screen("<ScreenName>")· Schermen index Schermdefinities incl. tabel, autorisatielevel, screen-level. Bron:ultimo_screens_names.xml. - AET-settings / feature toggles —
find_aet_settings(query)· AET index Feature toggles en systeem-configuratie. Bron:ApplicationElementTreeData.json. - Kennisbank-breed zoeken —
search(query)Doorzoekt alle wiki-artikelen, entities, workflows, schermen, templates en ActionFields tegelijk.