Skip to content

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
  1. [] .
  2. () (used to change the precedence of operators)
    • (unary) not ! empty
  3. / div % mod
  4. (* + -) (binary)
  5. < > <= >= lt gt le ge
  6. == != eq ne
  7. && and
  8. || or
  9. ? :

Reserved keywords

User's cannot use UEL reserved words as process variables, labels, or function names:

and, or, not, eq, ne, lt, gt, le, ge, true, false, null, instanceof, empty, div, mod