Skip to main content
Skip table of contents

Workflow expressies syntax

Concept

Workflow expressies worden geschreven in een door Camunda gecustomiseerde versie van JUEL (een op Java-gebaseerde expressietaal).

Een expressie is pas uitvoerbaar als die tussen accolades genoteerd staat. Het geheel wordt door een $ dollarteken voorafgegaan.

${expressie}

Via chaining operators kan je meerdere elementen in een logisch verband onderbrengen.

${getal>10?'groot':'klein'}

${voornaam.concat(' ‘).concat(achternaam)}

Expressies bieden slechts beperkte functionaliteit. Heb je nood aan meer complexiteit (bijvoorbeeld itereren over lijstelementen)? Dan kan je gebruik maken van scripts.

Wil je een apart stukje code opstellen en deze vervolgens oproepen via een workflow expressie? Kijk dan onder de sectie extensies en customizaties.

Data types

Volgende data types zijn ondersteund binnen workflow expressies.

Data type

Voorbeeld waarde

Null

Geen waarde

String

'Hello World!'

Boolean

true or false

Integer

15 (geheel getal, negatief of positief)

Double

15.5 (decimaal getal, negatief of positief)

Datum

2025-04-01T13:49:13 (altijd inclusief tijdsstempel)

Data objecten

De data zit typisch in volgende Java-gebaseerde structuren.

Data structuur

Voorbeeld opbouw

Directe waarde

‘Hello World!’

Lijst

['value1','value2','value3']

Map

{“key1”:'value1',“key2”:'value2',“key3”:'value3'}

Lijst-Map

[{“key1”:'value1',“key2”:'value2',“key3”:'value3'},{“key1”:'value1',“key2”:'value2',“key3”:'value3'},{“key1”:'value1',“key2”:'value2',“key3”:'value3'}]

Omgaan met data objecten

Procesvariabelen met een complexere structuur zoals lijsten, maps en lijst-maps kan je op volgende manieren manipuleren vanuit een expressie. De mogelijkheden zijn erg beperkt. Via een workflow script kan je extra zaken doen zoals bijvoorbeeld waardes toevoegen aan of verwijderen uit een lijst.

Waarde ophalen

Je kan een waarde ophalen via volgende expressie.

${mijnVariabele}

Waarde uit een lijst ophalen

Je kan een waarde uit een lijst ophalen via de index.

$[mijnLijst[0]} retourneert het eerste item in de lijst.

Aantal items in een lijst vaststellen

Lengte van een lijst vaststellen.

mijnLijst = ['jan','mieke','paul']

${mijnLijst.size()} retourneert het aantal items in de lijst als integer (bijvoorbeeld 3).

Waarde uit een map ophalen

Je kan een waarde uit een map ophalen via de key.

${mijnMap['leeftijd']} retourneert de waarde van de key ‘leeftijd’ in de map.

Operatoren

Booleaanse operatoren

Operator

Beschrijving

Data types

&&

Verbindt twee booleaanse waardes. Indien de twee waardes true zijn, dan retourneert de expressie true. Vanaf het ogenblik dat één van beide waardes (of allebei) false is, dan retourneert de expressie false.

Boolean

||

Verbindt twee booleaanse waardes. Vanaf het ogenblik dat één van beide waardes (of allebei) true is, dan retourneert de expressie true. Indien beide waardes false zijn, dan retourneert de expressie false.

Boolean

Vergelijkende operatoren

Operator

Beschrijving

Data types

==

Vergelijk twee waardes met elkaar. Indien identiek, retourneert de expressie true. Indien niet, retourneert de expressie false. De vergeleken waardes moeten van hetzelfde data type zijn.

String, boolean, number, date

!=

Vergelijk twee waardes met elkaar. Indien identiek, retourneert de expressie false. Indien niet, retourneert de expressie true. De vergeleken waardes moeten van hetzelfde data type zijn.

String, boolean, number, date

<

Vergelijkt twee waardes met elkaar. Indien waarde A kleiner dan waarde B, retourneert de expressie true. Indien waarde A gelijk of groter dan waarde B, retourneert de expressie false. De vergeleken waardes moeten van hetzelfde data type zijn.

Number, date

>

Vergelijkt twee waardes met elkaar. Indien waarde A groter dan waarde B, retourneert de expressie true. Indien waarde A gelijk of kleiner dan waarde B, retourneert de expressie false. De vergeleken waardes moeten van hetzelfde data type zijn.

Number, date

<=

Vergelijkt twee waardes met elkaar. Indien waarde A kleiner of gelijk aan waarde B, retourneert de expressie true. Indien waarde A groter dan waarde B, retourneert de expressie false. De vergeleken waardes moeten van hetzelfde data type zijn.

Number, date

>=

Vergelijkt twee waardes met elkaar. Indien waarde A groter of gelijk aan waarde B, retourneert de expressie true. Indien waarde A kleiner dan waarde B, retourneert de expressie false. De vergeleken waardes moeten van hetzelfde data type zijn.

Number, date

Logische statements

Statement

Beschrijving

[boolean] ? [functie A] : [functie B]

Indien boolean true is, voer functie A uit. Indien boolean false is, voer functie B uit. Je kan dergelijke statements bouwen via de workflow expression builder.

[(getal A + getalB) * 3] / 2

Via haakjes kan je verschillende numerieke bewerkingen groeperen en hiërarchisch met elkaar combineren.

Functies

Camunda engine services

Functies worden aaneengeregen tot expressies via de Fluent API methodiek (method chaining).

Meer info vind je volgende pagina’s:

Skryv platform services

Functies worden aaneengeregen tot expressies via de Fluent API methodiek (method chaining).

Meer info vind je volgende pagina’s:

Datum tijd functies

De huidige datum en tijd ophalen

Hiervoor heb je twee mogelijke expressies:

  • ${now()}

  • ${dateTime().toDate}

Deze resulteren in een datum waarde als 2025-04-01T13:49:13

Een specifieke datum en tijd instellen

Ook hiervoor heb je verschillende mogelijkheden. Onderstaande is er één van.

${dateTime().withDate(2030,12,30).toDate()}

Het resultaat is een datum waarde 2030-12-30T09:24:30, waarbij de tijdsstempel gelijk is aan het ogenblik waarop de variabele aangemaakt wordt.

Wil je ook de tijdsstempel preciseren, dan voeg je .withTime() method toe.

${dateTime().withDate(2030,12,30).withTime(12,0,0,0).toDate()}

Opgelet, de workflow engine zit in tijdszone UTC, en een tijdsstempel zetten is dus vanuit UTC tijd gezien. Doordat België zich in de winter in UTC+1 bevindt, zal de resulterende datum waarde 2030-12-30T13:00:00 zijn. In de zomer bevindt België zich in UTC+2, dus zal de resulterende datum waarde bijvoorbeeld 2030-06-30T14:00:00 zijn.

Datumveld uit formulier omzetten naar een datum waarde

Dit kan je doen in twee stappen:

  • Stap 1: Breng de waarde van het datumveld formulier over naar een procesvariabele zoals mijnDatum. De waarde is nu evenwel van het type string.

  • Stap 2: Zet daarom nu de procesvariabele om naar een datum waarde via volgende expressie ${dateTime().parse(mijnDatum).toDate()}

Het resultaat is een datum waarde, bijvoorbeeld: 2025-04-01T00:00:00

Datum waarde wegschrijven naar een datumveld in formulier

Een procesvariabele (bijvoorbeeld ‘test’) met een datum waarde kan je via de setField functie in het formulierveld (bijvoorbeeld ‘datum’) wegschrijven.

${skryv.dossierFromScope(execution).getOrCreateDocumentByDefinitionKey("testFormulierC").setField("datum",test)}

De tijdsstempel wordt hierbij achterwege gelaten.

Rekenen met datum tijd binnen workflow

Binnen de scope van de workflow is het best practice om timer events te gebruiken. Enkele voorbeelden van use cases: na weigering krijgt de aanvrager nog 30 dagen de mogelijkheid om beroep aan te tekenen, twee dagen vóór de opleveringsdatum van een taak wordt een reminder uitgestuurd naar de uitvoerder van de taak, enzovoort. Klik hier voor meer uitleg over timer events, hun gedrag en eigenschappen.

Rekenen met datum tijd binnen expressies

Binnen de scope van een expressie kan je volgende functies aanspreken.

Functie met voorbeeld

Beschrijving

${dateTime().plusDays(1).toDate}

Zelfde opbouw lukt ook met plusYears(), plusMonths(), plusWeeks(), plusHours(), plusMinutes(), plusSeconds(). Je kan ook combinaties maken.

Huidige datum plus één dag.

${dateTime().minusDays(1).toDate}

Zelfde opbouw lukt ook met minusYears(), minusMonths(), minusWeeks(), minusHours(), minusMinutes(), minusSeconds(). Je kan ook combinaties maken.

Huidige datum min één dag.

Getal functies

Overzicht van functies die je kan uitvoeren op een variabele van het type getal.

Operator

Beschrijving

+

Som van twee getalwaardes.

-

Verschil van twee getalwaardes.

/

Quotiënt van twee getalwaardes.

*

Product van twee getalwaardes.

String functies

Overzicht van een aantal courante functies die je kan uitvoeren op een variabele van het type string.

Functie met voorbeeld

Beschrijving

‘Hello'.concat(' ’).concat('world‘).concat(’!')

Twee of meerdere string waardes met elkaar concateneren. Retourneert ‘Hello world!’.

naamProcesVariabele.toString()

Waarde in procesvariabele omzetten naar een string.

naamProcesVariabele.contains('Jan')

Retourneert true als de string ‘Jan’ bevat.

naamProcesVariabele.startsWith('Jan')

Retourneert true als de string start met ‘Jan’.

naamProcesVariabele.endsWith('Jan')

Retourneert true als de string eindigt met ‘Jan’.

naamProcesVariabele.toString.matches('Jan Peeters')

Retourneert true als de waarde van een procesvariabele 100% overeenkomt met de opgegeven waarde ‘Jan Peeters’.

naamProcesVariabele.equalsIgnoreCase('jan peeters')

Retourneert true als de input waarde 100% overeenkomt met de opgegeven waarde ‘jan peeters’ zonder rekening te houden met case (uppercase of lowercase).

' tekst met whitespace voor en na '.trim()

Verwijdert whitespace voor en na en retourneert ‘tekst met whitespace voor en na’.

‘Jan Peeters’.toLowerCase()

Retourneert ‘jan peeters'.

‘Jan Peeters’.toUpperCase()

Retourneert ‘JAN PEETERS’.

'Jan Peeters'.replaceAll('Peeters','Janssen')

Retourneert ‘Jan Janssen’.

‘Jan Peeters’.substring(0,2)

Retourneert ‘Jan’. Dit het stuk van de string dat zich uitstrekt van index positie 0 tot en met index positie 2.

‘Jan Peeters’.substring(4)

Retourneert ‘Peeters’. Dit is het stuk van de string dat zich uitstrekt van index positie 4 tot en met de laatste index positie.

JavaScript errors detected

Please note, these errors can depend on your browser setup.

If this problem persists, please contact our support.