Workflow Expression Builder

Learn how to create workflow expressions quickly and easily.

Last published at: June 19th, 2023

This UI make it easy for users to build expressions, specially business users or non-technical users of FlowWright.  

The expression builder (C# based expressions, computed on server side code) will also display Variables/Globals based on context.  The functions/variables/globals should be able to add with double click.

Open a new process definition. Drag evaluate decision step to the canvas and connect to Start step as shown below. 

Select "evaludatedecisions" step and inspect the step properties where inputs are required as Variable/Global to store the result, as shown below. 

Click on "Alt + E" to invoke the Workflow Expression Builder as a modal window inside the box marked. Use the expression builder UI to build an expression and validate it. Copy the expression to clipboard and paste it where an input is required for workflow step property (like above). 

Parts of the user interface

1)    Expression – Placeholder to build the expression. This can be done via manual entry type or by picking an operators (7), function (8).

2)    Verify – Select this function to verify the logic of the expression. It will give you the option to enter a value to the defined input fields and simulate the expression. Example Expession: = CONCAT(“Dear, “ + variable.username + “, we’re today : “ +DAYTEXT(TODAY())

3)    Use & Close: The expression is use in the process or form control, depending on the starting point. Window gets closed.

4)    Save As – Saves the expression as a new function to re-use. Will be displayed in the functions overview (8) – Section Custom Expression

5)    Send to Clipboard : copies the expression into the clipboard, so it can be paste for later purpose.

6)    Clear Expressions: erases any definition in the expression builder

7)    Available Operators

8)    Available Functions (See below)

9)    Description and example of the function 

Functions Aggregate Table

AVERAGE

Description: Returns the average of the given numbers
Example: AVERAGE(1,2,3) // returns 2

 

COUNT

Description: Counts the number of numerical items.
Example: COUNT(1, 2, "a") // returns 2

 

MAX

Description: Returns the largest value from a set of data
Example: MAX(3,15,27) // returns 27

 

MIN

Description: Returns the smallest value from a set of data
Example: MIN(3,15,27) // returns 3

 

SUM

Description: Sums up all the given numbers
Example: SUM(2,3,8) // returns 13

 

Functions Numeric Table

ABS

Description: Returns the absolute value of a given number
Example: ABS(-324) = 324

 

FLOOR

Description: Round a number down to the nearest specified multiple

Example: FLOOR(36,7) // returns 35

 

ISEVEN

Description: check if a numeric value is an even number.

Example: ISEVEN(7) // returns False

LOG

Description: Gets the logarithm of a number
Example: LOG (16,2) // returns 4

 

MOD

Description: Returns the remainder of the division of the given number in the divisor
Example:MOD(10,3) // returns 1

QUOTIENT

Description: Returns the result of integer division without the remainder
Example:MOD(10,3) // returns 3

 

POWER

Description: A number raised to a power
Example: POWER(2,3) // returns 8

 

ROUND

Description: Rounds a number to a specific number of digits
Example: ROUND(14.67891, 2) // returns 14.68

 

ROUNDUP

Description: Always rounds a number up
Example: ROUNDUP(21.6,0) // returns 22

 

ROUNDDWN

Description: Always rounds a number down
Example: ROUNDDOWN(1.1,0) // returns 1

 

SQRT

Description: Positive square root of a positive number
Example:SQRT(9) // returns 3

 

TRUNC

Description: Truncate a number to a given precision

Example: TRUNC(4.9) // returns 4

TRUNC(-3.5) // returns -3

TRUNC(PI(), 3) // returns 3.141

 

Function Date Time Table

ADD_DAYS

Description: Adds days to the given date. Returns the new date.  
Examples: ADD_DAYS("2021-04-15", 5)
ADD_DAYS(TODAY(), 5)
FORMAT_DATE(ADD_DAYS("2021-04-15", 5) // returns 2020-04-20

 

ARE_SAME_DATE


 

Description: Returns a boolean value

TRUE - if date1 is same as date2

FALSE - if date1 is not same as date2
Example: ARE_SAME_DATE(date1, date2) // returns TRUE  


 

COMPARE


 

Description: Returns the quarter of a given date
Example: MONTH(variable.startdate) // returns 2 


 

CONVERT_TO_UTC


 

Description: Returns an UTC date time for requested timezone OR offset value
Example: 

CONVERT_TO_UTC("2021-04-15T06:00:00","-05:00") // 

returns 2021-04-15T11:00:00) 

CONVERT_TO_UTC("2021-04-15T16:00:00","Eastern Standard Time") // returns 2021-04-15T20:00:00 


 

CONVERT_UTC


 

Description: Returns an UTC date time based on current time zone 
Example: 

CONVERT_TO_UTC("2021-04-15T06:00:00") // 

returns UTC value based on your current time zone


 

DATE

Description: Returns the value for the given parameters
Example: DATE(2021,4,15) // returns Wed April 15 2021 

 

DAYNUMBER

Description: Returns the day of the month of a given date.
Example: DAY(variable.startdate) // returns 31

 

DAYTEXT

Description: Returns the day of the month of a given date in long format.
Example: DAY(variable.startdate) // returns Monday

 

DAYS

Description: Returns the number of days between the two dates
Example:DAYS(variable.startdate, variable.enddate) // returns diff between dates in days

 

FORMAT_DATE

Description: Returns a formatted date
Examples: FORMAT_DATE(TODAY()) // returns "Apr 15, 2021" (using default format)
FORMAT_DATE(TODAY(), "YYYY-MM-DD") // returns "2021-04-15"
FORMAT_DATE(TODAY(), "dddd, MMMM Do YYYY") // returns Wednesday, April 15th 2021

 

HOUR

Description: Returns the hour as a number from 0 (12:00 A.M.) to 23 (11:00 P.M.).
Example: HOUR(NOW()) // returns 23 (in case it's 23:00 - 23:59 o'clock now)

 

HOURS_DIFF

Description: Returns the difference between two hours columns
Example: HOURS_DIFF("13:00", "07:00") // returns 05:00

 

WORKDAYS

Description: Returns the number of working days between the two dates
Example: WORKDAYS(variable.startdate, variable.enddate) // returns working days between dates in days

 

MINUTE

Description: Returns the minute as a number from 0 to 59.
Example: MINUTE(NOW()) // returns 42 (in case it's 11:42 now)

 

MONTH

Description: Returns the month of a given date.
Example: MONTH(variable.startdate) // returns 4

 

MONTHTEXT

Description: Returns the month of a given date in long format.
Example: DAY(variable.startdate) // returns March

 

NOW

Description: Gets the current time in 24hour format
Example: NOW () // returns 11:50:14

 

NOW_UTC


 

Description: Gets the current UTC time in 24hour format
Example: UTC_NOW () // returns 11:50:14


 

QUARTER

Description: Returns the quarter of a given date.

Example: MONTH(variable.startdate) // returns 2

 

SECOND

Description: Returns the second as a number from 0 to 59.
Example: SECOND(NOW()) // returns 1 (in case it's 11:42:01 now)

 

SUBTRACT_DAYS

Description: Subtract days from the given date. Returns the new date.  
Examples: SUBTRACT_DAYS("2021-04-15", 5)
SUBTRACT_DAYS(TODAY(), 5)
FORMAT_DATE(SUBTRACT_DAYS("2021-04-15", 5) // returns "2021-04-10

 

TODAY

Description: Gets the current date
Example: TODAY() // returns 14th Wednesday April 2021.

 

TODAY_UTC


 

Description: Gets the current server date in UTC Format
Example: TODAY() // returns 14th Wednesday April 2021.


 

WEEKNUM

Description: Returns the yearly week number of a given date.
Example: WEEKNUM(variable.startdate)// returns 17

 

YEAR

Description: Returns the year of a given date.
Example: YEAR(global.startyear) // returns 2017

 

Functions String / Text

CONCAT

Description: This operator concatenate text values into a single text value
Example: CONCATENATE(“I”,”love”,”FlowWright.com”) // returns “IloveFlowWright.com”

 

CONTAINS

Description: Returns a value indicating whether a specified character occurs within this string.

Example: CONTAINS("FlowWright","iBPMS", "Enterprise Business Automation Software", "Flexible","Adaptable", "Embeddable") // true if the value parameter occurs within this string; otherwise, false. 

CONTAINSLIST

Description: Returns a value indicating whether a specified character occurs within this string.

Example: CONTAINSLIST("1", "2", "3", "4","5","6","7","8","9","10","123") // true if the value parameter occurs within this string; otherwise, false.

EXACT

Description: compares two strings and returns TRUE if both values are the same

Example: EXACT(variable.username, global.username) // returns TRUE – if the value of both variable and global are the same

 

LEFT

Description: Extracts a given number of characters from the left side.
Example: LEFT("flowwright.com", 4) // returns “flow”

 

LEN

Description: Returns the amount of characters of a given text string.
Example: LEN("hello") // returns 5

 

LOWER

Description: Converts a specified string to lowercase
Example: LOWER("Have a Nice Day") // returns “have a nice day”

 

MID

Description: Extracts a given number of characters from the middle of a supplied text string.

Example: MID(“I Like FlowWright”, 3,4) // returns “Like”

REPLACE

Description: Replaces a part of a string with the new string.
Example: REPLACE("Goat",1, 2,"Fl") // returns “Flat”

 

REPT

Description: Repeats a string a given number of times.
Example: REPT("Flow",3) // returns “FlowFlowFlow”

 

RIGHT

Description: Extracts a number of characters from the right side of a given text string.
Example: RIGHT("FlowWright", 4) // returns “right”

 

SEARCH

Description: Searches a string within another string
Example: IF(SEARCH("love", "I love FlowWright", 1) > 0, "Exist", "Not") // returns “exist”

 

SUBSTITUTE

Description: Replace text in a given text string by matching.
Example: SUBSTITUTE("goodmorning", "morning", "night") // returns “goodnight”

 

TEXT

Description: Formats the given value based on the given text format
Example: TEXT(9340.1,"#,##0.00€") // returns “9,340.10€”

 

TRIM

Description: Removes all spaces from a string except for single spaces between words.
Example: TRIM(" I love FW ") // returns “I love FW”

 

UPPER

Description: Convert a specified string to uppercase
Example: UPPER(“www.flowwright.com”) // returns “WWW.FLOWWRIGHT.COM