UEL
Introduction
Dirigent uses UEL for expression-resolving. UEL stands for unified expression language and is a part of the EE6 specification. To support all features of latest UEL spec on ALL environments, we use a modified version of JUEL. Expressions can be used in connections and elements. Although there are 2 types of expressions, value-expression and method-expression, Dirigent abstracts this so they can both be used whereever an expression is needed.
Value expression
Resolves process variable to a value. By default, all process variables are available to use. For example, if myVar is a process variable it can be used in the following way: #{myVar}
System variables
System variables provide basic information about main process, application or case. Users cannot override the value of system variables. To use system variables in the external process input mapping must be done.
Name | Description |
---|---|
CaseID |
ID of the current case |
CaseStartedBy |
Username of the user who started the case |
AppID |
ID of the application executing the process |
AppName |
Name of the application executing the process |
ProcessVersion |
Version of the process |
ProcessUpdatedBy |
Username of the user who last updated the process |
CaseDateTime |
Date and time when the case has been started |
Method expression
Invokes a method, with or without parameters. When invoking a method without parameters, be sure to add empty parentheses after the method-name (as this distinguishes the expression from a value expression). The passed parameters can be literal values or expressions that are resolved themselves. Note that these expressions support resolving primitives (incl. comparing them), lists, arrays and maps.
Variable | Description |
---|---|
systemDateTime() |
Always returns current date and time in 'yyyy-MM-dd HH-mm-ss' format |
customDateTime(format) |
Is used when users need system date and/or time in a specific format defined as a string (e.g. customDateTime('dd-MM HH:mm') |
yesterdayDate() |
Returns yesterday's date |
oneWeekAgoDate() |
Eturns date 7 days before today |
oneMonthAgoDate() |
Returns date 30 days before today |
startOfWeek() |
Returns date when current week started (Sunday) |
endOfWeek() |
Returns date when current week will end (Sunday) |
startOfMonth() |
Returns date when the current month started |
endOfMonth() |
Returns date of the last day of the current month |
For example if users wish to invoke a method which will resolve with current date and time, they may use the following: #{systemDateTime()}
Operators
The UML provides the following operators, which can be used in value expressions only:
Arithmetic:
+, - (binary), *, / and div, % and mod, - (unary)Logical:
and, &&, or, ||, not, !Relational:
==, eq, !=, ne, <, lt, >, gt, <=, ge, >=, le. Comparisons can be made against other values or against Boolean, string, integer, or floating-point literals.Empty:
The empty operator is a prefix operation that can be used to determine whether a value is null or empty.Conditional:
A ? B : C. Evaluate B or C, depending on the result of the evaluation of A.
The precedence of operators highest to lowest, left to right
- [] .
- () (used to change the precedence of operators)
-
- (unary) not ! empty
- / div % mod
- (* + -) (binary)
- < > <= >= lt gt le ge
- == != eq ne
- && and
- || or
- ? :
Reserved keywords
User's cannot use UEL reserved words as process variables, labels, or function names: