Beslissing expressie syntax (FEEL)
Algemeen
Comments
Binnen je expressie kan je gebruik maken van een comment regel of comment block.
// dit is een comment regel
/*
* dit is een comment block
* deze bevat meerdere regels
*/
Haakjes
Om structuur aan te brengen in complexe expressies kan je gebruik maken van parentheses of haakjes.
if (x < 10) then true else false retouneert true wanneer x bijvoorbeeld 5 is.
2 - 1 * 2 - 1 retourneert -1
(2 - 1) * (2 - 1) retourneert 1
Unary tests voor business regels
Deze tests pas je toe in de business rule cellen. Ze evalueren steeds naar true of false. Evaluatie gebeurt door de inputwaarde te vergelijken met een gestelde waarde. Indien alle tests in een business rule naar true evalueren, dan matcht de regel.
Meer uitgebreide info over binnen FEEL ondersteunde unary tests vind je terug via de Camunda documentatie site.
Maak gebruik van de FEEL playground om unary test uit te proberen.
Voor het opbouwen van deze tests is user interface ondersteuning voorzien (klik op het potlood icoon naast de cel waar je de expressie wil opbouwen).
Inputwaarde en gestelde waarde moeten van hetzelfde data type zijn. Indien dit niet het geval is, krijg je een error terug.
Functie of operator | Beschrijving | Data types + voorbeeld |
|---|---|---|
Geen | Inputwaarde exact gelijk aan gestelde waarde, levert Indien je louter | Eender welk |
< | Inputwaarde kleiner dan gestelde waarde, levert | Number, date, time, date-time |
<= | Inputwaarde kleiner dan of gelijk aan gestelde waarde, levert | Number, date, time, date-time |
> | Inputwaarde groter dan gestelde waarde, levert | Number, date, time, date-time |
>= | Inputwaarde groter dan of gelijk aan gestelde waarde, levert | Number, date, time, date-time |
[ x .. y ] | Inputwaarde in de range van gestelde waardes x en y (x en y inclusief), levert | Number, date, time, date-time |
] x .. y [ | Inputwaarde in de range van gestelde waardes x en y (x en y exclusief), levert | Number, date, time, date-time |
, | OR-operator die toelaat om twee of meerdere van bovenstaande expressies met elkaar te combineren. Van zodra één lid van de expressie | Eender welk |
not() | NOT-operator die één van bovenstaande expressies kan inverteren, d.w.z. de expressie zal | Eender welk |
Booleaanse expressie | Binnen een beslissingstabel inputkolom kan je gebruik maken van eender welke booleaanse expressie, d.w.z. een expressie die | Eender welk |
Expressies, methods, functies & operatoren
Deze expressies pas je toe om een specifieke waarde uit te rekenen. Onderstaande lijst biedt een beknopt overzicht van de mogelijkheden binnen FEEL-expressies.
Meer uitgebreide info over binnen FEEL ondersteunde expressions, methods, functions & operators vind je terug via de Camunda documentatiesite.
Maak gebruik van de FEEL playground om expressies uit te proberen.
Boolean expressies
Expressies die naar true of false evalueren.
Functie of operator | Beschrijving | Voorbeeld |
|---|---|---|
= | Gelijk aan |
|
!= | Niet gelijk aan |
|
| Null-check |
|
< | Kleiner dan |
|
<= | Kleiner of gelijk aan |
|
> | Groter dan |
|
>= | Groter of gelijk aan |
|
between [value] and [value] | Checkt of waarde zich tussen twee andere waardes bevindt |
|
and | Dubbele conditie, beiden moeten |
|
or | Van zodrag één conditie |
|
instance of | Checkt of een waarde behoort tot een bepaald data type (boolean, date, string, number). |
|
in | Checkt of een waarde zich in een gepredefinieerde lijst van waardes bevindt Checkt of een waarde zich in een context (map of key-value pairs) bevindt |
|
String data type
Functie of operator | Beschrijving | Voorbeeld |
|---|---|---|
| Conversie van getal, datum … naar een string. |
|
+ | Concatenatie van strings. Elke waarde moet van het type string zijn. |
|
Numeric data type
Functie of operator | Beschrijving | Voorbeeld |
|---|---|---|
| Conversie van string naar een getal. Indien niet mogelijk, zal de functie |
|
| Retourneert de rest na deling van het |
|
| Retourneert de absolute waarde van het |
|
| Rondt het getal af naar beneden en retourneert de dichtsbijzijnde integer. |
|
| Rondt het getal af naar beneden en retourneert het dichtsbijzijnde getal met y decimalen. |
|
| Rondt het getal af naar boven en retourneert de dichtsbijzijnde integer. |
|
| Rondt het getal af naar boven en retourneert het dichtsbijzijnde getal met y decimalen. |
|
+ | Optellen |
|
- | Aftrekken |
|
* | Vermenigvuldigen |
|
/ | Delen |
|
** | Exponentieel |
|
List data type
Het is mogelijk om een lijst door te geven als input waarde voor de beslissing.
Wat binnen FEEL aangeduid wordt als een List, wordt binnen andere programmeer- of expressietalen aangeduid met Array, enzovoort. Het is een oplijsting van waardes.
Functie of operator | Beschrijving | Voorbeeld |
|---|---|---|
Select | Retourneert specifieke waarde uit de lijst op basis van positie. De eerste waarde heeft positie |
|
Filter | Retourneert vanuit een lijst de items die voldoen aan de gestelde conditie. Je kan werken met de speciale variabele |
|
| Geeft |
|
| Geeft |
|
Context data type
Het is mogelijk om een map door te geven als input waarde voor de beslissing.
Wat binnen FEEL aangeduid wordt als een Context, wordt binnen andere programmeer- of expressietalen aangeduid met Map, Dictionary, enzovoort. Het is een opsomming van key-value pairs.
Functie of operator | Beschrijving | Voorbeeld |
|---|---|---|
Select | Retourneert specifieke waarde uit de context op basis van key. |
|
Filter | Retourneert vanuit een context de key-value pairs die voldoen aan de gestelde conditie. |
|
Projectie | Retourneert een lijst met specifieke waardes uit een lijst met verschillende contexten. |
|
Temporal data type
Functie | Beschrijving | Voorbeeld |
|---|---|---|
| Retourneert de huidige datum-tijd met de tijdzone inbegrepen |
|
| Retourneert de huidige datum |
|
| Retourneert de dag van de week als string |
|
| Retourneert de dag van het jaar als getal |
|
| Retourneert de week van het jaar als getal |
|
| Retourneert de maand van het jaar als string |
|
| Retourneert absolute waarde van een tijdsduur (bijvoorbeeld mocht die negatief zijn). |
|
| Berekent het tijdsinterval uitgedrukt in jaren en maanden tussen twee datums. |
|
+ | Optelling, enkel specifieke combinaties werken, anders retourneert de expressie Voorbeelden:
|
|
- | Aftrekken, enkel specifieke combinaties werken, anders retourneert de expressie Voorbeelden:
|
|
* | Vermenigvuldigen, enkel specifieke combinaties werken, anders retourneert de expressie Voorbeelden:
|
|
/ | Delen, enkel specifieke combinaties werken, anders retourneert de expressie Voorbeeld:
|
|
Get properties | Specifieke eigenschap van een date, time of date-time ophalen. Retourneert een getal.
Specifieke eigenschappen van een duration (tijdsduur). Retourneert een getal.
|
|
Logical statements
If conditions
if x then y else z
Voorbeelden
if "Piet" in ["Jan","Paul","Mieke"] then true else falsegeeftfalseif prijs > 500 then "duur" else "goedkoop"geeft"duur"wanneer pijs 600 is en"goedkoop"wanneer prijs is 400.
For loops
for a in b return c
Voorbeeld
for x in [100,101,102,103] return "Order: " + string(x) geeft ["Order: 100", "Order: 101", "Order: 102", "Order: 103"]