Scheduled Workflows
Scheduled Workflows zijn workflows die op een vast tijdschema automatisch worden uitgevoerd, zonder handmatige trigger of gebruikersinteractie. Ze worden geconfigureerd via de Workflow Scheduler in UCT en vormen de ruggengraat van automatische processen zoals PO-generatie, herinneringen, anonimisering en licentiemonitoring.
Gerelateerd: workflow-engine, workflow-instructies, workflow-debugger, standaard-workflows
Wat zijn Scheduled Workflows?bewerken
Een Scheduled Workflow is een workflow met WorkflowType="Scheduled" die periodiek wordt aangeroepen door de Ultimo Scheduler. In tegenstelling tot ChangeStatus-workflows (die worden getriggerd door een statuswijziging) of Standard-workflows (die worden aangeroepen via WorkflowCall), draait een scheduled workflow zelfstandig op basis van een tijdschema.
Kenmerkenbewerken
AllowUserInteractionis altijdFalse— er is geen UI beschikbaar- Draait onder een geconfigureerde systeemgebruiker (niet onder een ingelogde gebruiker)
- Moet minimaal de property
LastCheckvan typeDateTimebevatten om correct te functioneren - Wordt geconfigureerd via een cron-expressie of een recurrence pattern
- De standaard Ultimo-installatie bevat circa 91 scheduled workflows
Configuratie in UCTbewerken
Locatiebewerken
UCT > Business Rules > Workflow Scheduler
Lijstweergavebewerken
De lijstweergave toont alle geplande workflows met de volgende kolommen:
| Kolom | Beschrijving |
|---|---|
| Workflow name | Technische naam van de workflow |
| Active | Vinkje als de workflow actief is en wordt uitgevoerd |
| Cron | De cron-expressie die het schema definieert |
| Last run | Datum/tijd van de laatste uitvoering |
| Message | Status- of foutmelding van de laatste run |
Detailpaneel (3 tabbladen)bewerken
Tabblad Basic
| Veld | Beschrijving |
|---|---|
| Workflow Id | Unieke identificatiecode van de workflow |
| Workflow name | Technische naam |
| Workflow description | Beschrijving van de functie |
| Active | Of de workflow actief is en volgens schema wordt uitgevoerd |
| Last check | Datum/tijd van de laatste uitvoering |
| Next check | Datum/tijd van de volgende geplande uitvoering |
| User | De Ultimo-gebruiker waaronder de workflow draait (impersonation) |
| Companies | De bedrijven waartoe de gebruiker toegang heeft |
| Remarks | Opmerkingen bij het schedule |
Tabblad Properties
Toont de property-waarden van de geselecteerde workflow. Alleen properties die als Optional In of Required In zijn gemarkeerd worden getoond. De kolom Name toont de propertynaam, de kolom Value de waarde.
Tabblad Schedule
Definieert het recurrence pattern. Er zijn drie schedule types:
| Type | Beschrijving |
|---|---|
| Run once | Eenmalige uitvoering op een specifiek moment (YYYY-MM-DD hh:mm) |
| Repeat by minutes | Herhaling op basis van een interval in minuten |
| Recurrence pattern | Terugkerend patroon op basis van dagen, weken of maanden, met een starttijd en optioneel een einddatum of aantal herhalingen |
Cron-expressiesbewerken
In de lijstweergave wordt het schema weergegeven als cron-expressie. Veelvoorkomende patronen:
| Cron-expressie | Betekenis |
|---|---|
0 01 * * * |
Dagelijks om 01:00 |
0 02 * * * |
Dagelijks om 02:00 |
0 */2 * * * |
Elke 2 uur |
0 01 * * 1 |
Wekelijks op maandag om 01:00 |
0 06 1 * * |
Maandelijks op de 1e om 06:00 |
Belangrijke standaard Scheduled Workflowsbewerken
PO-resultaat emailbewerken
| Eigenschap | Waarde |
|---|---|
| Workflow | PmWorkOrder_SendAutomaticPmResultEmail |
| Functie | Verstuurt automatisch e-mails met PO-resultaten naar verantwoordelijke medewerkers |
| Typisch schema | Dagelijks |
Automatische PO-generatiebewerken
| Eigenschap | Waarde |
|---|---|
| Workflow | AutoPM-gerelateerde workflows |
| Functie | Genereert automatisch preventieve werkorders op basis van PmWorkOrder-definities en de NextRunDate |
| Typisch schema | Dagelijks om 01:00 |
| AET-setting | Gerelateerd aan PmWorkOrder NextRunDate-berekening |
Let op: De automatische PO-generatie is een van de kritische scheduled workflows. Als deze niet draait, worden preventieve werkorders niet aangemaakt en lopen onderhoudsschema's uit de pas.
GDPR anonimiseringbewerken
| Eigenschap | Waarde |
|---|---|
| Workflow | Anonimiserings-workflow |
| Functie | Maakt persoonsgegevens onherkenbaar conform AVG/GDPR-regelgeving |
| Typisch schema | Periodiek (afhankelijk van retentiebeleid) |
Per gebruiker kan in UCT de optie "Make user unrecognizable" worden ingesteld. Gebruikers met deze instelling worden bij uitvoering van de anonimiserings-workflow onherkenbaar gemaakt.
Licence Monitorbewerken
| Eigenschap | Waarde |
|---|---|
| Workflow | Licence Monitor workflow |
| Functie | Controleert licentie-informatie, actieve sessies en beschikbare modules |
| Typisch schema | Regelmatig (bijv. dagelijks) |
De resultaten zijn zichtbaar via UCT > Logging > Licence Monitor.
Een custom Scheduled Workflow aanmakenbewerken
Stap 1: Workflow aanmakenbewerken
- Ga naar
UCT > Business Rules > Workflows - Maak een nieuwe workflow aan met
WorkflowType="Scheduled" - Zet
AllowUserInteraction="False" - Definieer minimaal de property
LastCheckvan typeDateTime(Accessor:Optional, Direction:In) - Schrijf de gewenste bedrijfslogica in het
<Execution>blok
Zie workflow-engine voor de volledige XML-structuur. Het minimale vereiste is WorkflowType="Scheduled", AllowUserInteraction="False", en een property LastCheck van type DateTime.
Stap 2: Workflow inplannenbewerken
- Ga naar
UCT > Business Rules > Workflow Scheduler - Voeg de workflow toe en configureer het schema (cron-expressie of recurrence pattern)
- Stel de User in op een systeemgebruiker met de juiste rechten en de Companies op de relevante bedrijven
- Activeer de workflow door op Activate te klikken
Stap 3: Testenbewerken
- Gebruik de knop Run om de workflow handmatig uit te voeren (alleen beschikbaar als de workflow actief is)
- Controleer de Message-kolom op fouten en het Event Log / Debug Log in
UCT > Logging
Monitoringbewerken
- Event Log (
UCT > Logging > Event Log) — systeemgebeurtenissen inclusief workflow-uitvoeringen - Debug Log (
UCT > Logging > Debug Log) — gedetailleerde technische informatie bij het troubleshooten van falende workflows - Message-kolom — in de Workflow Scheduler lijstweergave; toont de status of foutmelding van de laatste run
Activeren en deactiverenbewerken
- Activeren: Selecteer een inactieve workflow en klik op Activate. De workflow wordt uitgevoerd volgens het schema.
- Deactiveren: Selecteer een actieve workflow en klik op Deactivate. De workflow wordt niet meer uitgevoerd.
- Handmatig uitvoeren: Klik op Run om een actieve workflow direct uit te voeren, ongeacht het schema.
Valkuilen en aandachtspuntenbewerken
- Deactiveer niet zonder reden — sommige standaard scheduled workflows zijn essentieel voor de correcte werking van Ultimo (bijv. automatische PO-generatie). Ultimo kan bij een upgrade of patch standaard workflows opnieuw activeren
- Systeemgebruiker — scheduled workflows draaien onder een specifieke gebruiker. Zorg dat deze gebruiker de juiste autorisaties heeft en niet wordt verwijderd of gedeactiveerd
- Licentie vereist — de licentie "Workflow Scheduler+" is vereist om workflows te kunnen inplannen. Neem contact op met Ultimo Sales voor meer informatie
- Cron-syntax — een fout in de cron-expressie kan ertoe leiden dat de workflow nooit of te vaak draait. Controleer de expressie zorgvuldig
- Package Manager — gebruik de package-manager om aanmaak, wijziging en verwijdering van scheduled workflows op te nemen, zodat ze overdraagbaar zijn naar andere omgevingen
- Alleen gelicentieerde workflows — je kunt alleen workflows inplannen die zijn opgenomen in je Ultimo-licentie
Best practicesbewerken
- Plan zware workflows buiten kantooruren — nachtelijke batch-taken (01:00-05:00) minimaliseren de impact op eindgebruikers
- Controleer regelmatig de Message-kolom — vroegtijdige signalering van fouten voorkomt dat processen ongemerkt stilvallen
- Documenteer custom scheduled workflows — leg vast wat de workflow doet, waarom deze is ingepland, en wie verantwoordelijk is
- Gebruik de Debug Log bij problemen — de Workflow Debugger en Debug Log bieden gedetailleerd inzicht in wat er misgaat
- Deactiveer in plaats van verwijderen — als een workflow tijdelijk niet nodig is, deactiveer deze in plaats van te verwijderen
Praktijkvoorbeeld: Wekelijks email rapportbewerken
Scenario: Een maintenance manager wil elke maandagochtend een overzicht ontvangen van alle jobs die de afgelopen week zijn afgerond.
Opzet van de workflowbewerken
WorkflowType: Scheduled
AllowUserInteraction: False — scheduled workflows draaien zonder UI; dialogen zijn niet mogelijk.
Properties
| Naam | Type | Accessor | Direction | Beschrijving |
|---|---|---|---|---|
LastCheck |
DateTime |
Optional |
In |
Verplicht voor scheduled workflows |
to |
UltimoString |
Required |
In |
E-mailadres ontvanger — via Scheduler in te vullen |
Stap 1: GetList — afgeronde jobs ophalen
Haal alle jobs op die in de afgelopen 7 dagen zijn afgerond:
<Transaction>
<GetList Name="Haal afgeronde jobs op" Type="Job" OutputProperty="${jobs}">
<Filter Property="FinishedDate"
Operator="GreaterThanOrEqual"
Value="=#startofday(#adddays(#{Environment.CurrentDate}, -7))" />
<Filter Property="FinishedDate"
Operator="SmallerThan"
Value="=#startofday(#{Environment.CurrentDate})" />
</GetList>
</Transaction>
Datumpatroon:
#startofday(#adddays(now(), -2))geeft het begin van de dag van 2 dagen geleden. Gebruik dit voor bereikfilters (BETWEEN) door twee filters te combineren: GreaterThanOrEqual voor de startdatum en SmallerThan voor de einddatum.
Stap 2: TextTemplate — conditionele e-mailtekst
Gebruik een TextTemplate met conditionele logica op basis van het aantal gevonden jobs:
#if(${jobs.Count} > 0)
In de afgelopen week zijn ${jobs.Count} jobs afgerond:
#foreach(${job} in ${jobs})
- ${job.Id}: ${job.Description} (afgerond: ${job.FinishedDate})
#end
#else
Er zijn geen jobs afgerond in de afgelopen week.
#end
${jobs.Count}geeft het aantal elementen in de lijst- De
#foreachiteratie toont per job het ID, de omschrijving en de afmelddatum - De
#elsetak toont een alternatieve tekst als de lijst leeg is
Stap 3: Email versturen
<Email Name="Stuur weekrapport"
From="#{Settings.EmailSender}"
To="${to}"
SubjectTemplateCode="WEEKRAPPORT_SUBJECT"
BodyTemplateCode="WEEKRAPPORT_BODY" />
From: gebruik#{Settings.EmailSender}om het geconfigureerde afzenderadres te gebruikenTo: gebruik de${to}property (Required In), zodat het e-mailadres per scheduler-instantie instelbaar is
Stap 4: Scheduler instellen
- Ga naar
UCT > Business Rules > Workflow Scheduler - Voeg de workflow toe
- Stel het schema in: Recurrence pattern > Weekly > Maandag > 07:00
- Vul bij Properties het veld
toin met het e-mailadres van de maintenance manager - Activeer de workflow
Testen zonder te wachten
Gebruik de Test Run knop (of Run in de Scheduler-lijst) om de workflow direct uit te voeren zonder te wachten op het geplande tijdstip. Controleer daarna de Message-kolom en het Event Log op eventuele fouten.
Valkuil: Als
AllowUserInteractionper ongeluk opTruestaat, zal de scheduler de workflow niet uitvoeren. Zet dit altijd opFalsevoor scheduled workflows.
Brondatabewerken
Dit artikel beschrijft workflow-concepten en -patronen. Voor de feitelijke workflow-XML van een specifieke trigger of ActionField:
- Workflow opvragen —
lookup_workflow("<WorkflowName>")Volledige workflow-XML incl. properties en CurrentValue. Bron:workflows.xml. - Workflows doorzoeken —
find_workflows(query, entity=None)Fuzzy zoeken op naam, beschrijving of per entiteit. Bron:workflows.xml. - Alle ActionFields als index — ActionFields index
1341 gegenereerde pagina's, één per ActionField. Bron:
workflows.xml. - Entiteit-definities voor referenties in workflows —
lookup_entity("<Name>")Properties en kolomnamen van entiteiten waarnaar workflows verwijzen. Bron:Entities.xml. - Kennisbank-breed zoeken —
search(query)Doorzoekt alle wiki + reference + workflows tegelijk.
Zie ookbewerken
- workflow-engine — Workflow Engine overzicht en WorkflowType uitleg
- workflow-instructies — Beschikbare workflow-instructies
- workflow-debugger — Debugging van workflows
- standaard-workflows — Overzicht standaard workflows per entiteit