Expressies & scripts
Wat is een expressie?
Een expressie is een regel code (oneliner) die on the fly een waarde retourneert. Expressies brengen flexibiliteit binnen je configureerde dienstverlening. Op deze manier kan je gemakkelijker inspelen op verschillende scenarios. Binnen Skryv bestaan verschillende expressie types (talen) en het hangt van de context af welke je moet gebruiken.
Voorbeeld
${number > 10}
retourneert true
indien het getal groter is dan 10, indien niet false
.
Wat is een script?
Een script is een stuk code dat complexer is dan een expressie. Scripts kunnen logica bevatten zoals loops, conditionele statements, en functies. Ze worden gebruikt om meer geavanceerde bewerkingen uit te voeren die niet mogelijk zijn met eenvoudige expressies. Scripts kunnen geschreven worden in JavaScript of Groovy.
Voorbeeld
Hieronder een eenvoudig JavaScript script dat binnen de context van een workflow execution een getal neemt en de vierkantswortel ervan teruggeeft.
// Procesvariabele 'mijnGetal' ophalen en toewijzen aan script variabele 'number'
var number = execution.getVariable("mijnGetal");
// Vierkantswortel nemen en resultaat toewijzen aan script variabele 'sqrtValue'
var sqrtValue = Math.sqrt(number);
// Script variabele 'sqrtValue' wegschrijven naar procesvariabele 'vierkantsWortel'
execution.setVariable("vierkantsWortel", sqrtValue);
Best practice: enkel de hoogstnodige logica in je proces
Expressies en scripts zijn voor je proces wat olie is voor een motor. Ze brengen op elk punt van de workflow precies die hoeveelheid informatie en logica die nodig is om het proces efficiënt te laten verlopen. Maar net zoals je ook niet te veel olie in een motor mag gieten, moet je erover waken dat je ook niet te veel informatie en logica in je proces stopt. De reden hiervoor is dat procesvariabelen, expressies en scripts lastig zijn om te onderhouden (moeilijk om het overzicht te bewaren, stroef om te migreren en te testen). Vandaar de stelregel: breng enkel de hoogstnodige logica onder in je proces, d.w.z. enkel die logica die belangrijk is voor business en/of die cruciaal is om je proces correct te laten verlopen. De overige logica breng je beter onder in stukken code die we vanuit de workflow aanspreken. Klik hier voor meer best practices.
Expressie types
Afhankelijk van het niveau waarop je een expressie wil gebruiken, gebruik je een ander type. Klik door op de hyperlinks voor meer info en voorbeelden.
Niveau | Type | Beschrijving |
---|---|---|
BPMN-workflow |
|
|
Formulier logica |
| Skryv platform specifieke expressies worden hier toegepast om logica (formliervariabelen) aan te maken. Op basis van deze formuliervariabelen kan je vervolgens het gedrag van het formulier bepalen (bijvoorbeeld een bepaalde sectie in het formulier wordt enkel getoond indien een variabele |
Formulier validatie |
| Skryv platform specifieke expressies worden hier toegepast om veldwaardes te valideren (bijvoorbeeld een ingevoerde datum wordt geweigerd als deze in het verleden valt). |
Communicatie (e-mail of document) | Handlebars | Handlebars worden gebruikt binnen communicatietemplates enerzijds om te verwijzen naar dossiervelden (bijvoorbeeld naam en voornaam aanvrager ophalen) of om er dynamische content aan toe te voegen (bijvoorbeeld afhankelijk of een subsidie is goedgekeurd of afgekeurd een andere tekst visualiseren). |
Beslissings-tabellen | Ondersteuning van diverse types zoals FEEL, JUEL, JavaScript, Groovy, Python en Ruby. |
|
Script types
Afhankelijk van het niveau waarop je een script wil gebruiken, gebruik je een ander type. Klik door op de hyperlinks voor meer info en voorbeelden.
Niveau | Type | Beschrijving |
---|---|---|
BPMN-workflow | Scripts worden geschreven in JavaScript. | Wees waakzaam dat je scripts niet te uitgebreid of complex worden (lees: meer dan enkele regels). Als dit dreigt zo te worden, is het beter om over te schakelen op een extensie. |
Beslissings-tabellen | Ondersteuning van diverse types zoals FEEL, JUEL, JavaScript, Groovy, Python en Ruby. | Wees waakzaam dat je scripts niet te uitgebreid of complex worden (lees: meer dan enkele regels). |