Expression Parser

The product provides support for defining expressions that may be of a mathematical or logical/boolean nature. The expression may include variables and functions.

The data explorer column parameter is an example of where this may be used. That parameter supports the definition of a formula. Edge applications may include support for a formula or expression using this parser as well. For example, several application include a type of ‘rule’ object (calculation rule, form rule or usage rule) that is used for validation or calculation that may support applying a formula.

The following tables highlight what is supported in the expressions that use this parser.

Category Supported in Expression Description
Data types Number
String
Boolean
List
Literals Numbers
Strings surrounded with either single quote or double quote.
Note: 'Escaping' special characters is not currently supported.
Boolean values: true and false.
Operations + Plus
Minus
/ Division
* Multiplication
^ or ** Power
% Modulus
Logical operations = Equal
> Greater than
>= Greater than or equal to
< Less than
<= Less than or equal to
!= or <> Not equal to

This table identifies the functions that are supported. Note that several of the functions are applicable to a list of values. Note that although the functions are listed in lower case, the column parameter syntax in data explorer indicates referencing the functions as all capital letters. The system converts the data explorer column formula to lowercase before being evaluated.

Function Parameter Results Comments
size( ) List element Number of elements in the list.
isEmpty( ) List element Returns true if the list is empty.
sum( ) List element of type 'number' Returns the sum of the numbers in the list.
avg( ) List element of type 'number' Returns the average of the numbers in the list.
One or more numbers separated by commas Returns the average of the number arguments.
max( ) List element Returns the largest value in the list.
One or more comparable elements. Returns the largest value of the number arguments.
min( ) List element Returns the smallest value in the list.
One or more comparable elements. Returns the smallest value of the number arguments.
abs( ) Number Returns the absolute value.
ceiling( ) Number Rounds the number to the ceiling.
exp10( ) Number Raises 10 to the number power.
acos( ) Number Returns the arc cosine of the number in radians. The result will lose precision, as it uses the system's double float based functions.
asin( ) Number Returns the arc sine of the number radians. The result will lose precision, as it uses the system's double float based functions.
atan( ) Number Returns the arc tangent of the number radians. The result will lose precision, as it uses the system's double float based functions.
cos( ) Radian Returns the cosine of the radian angle input. The result will lose precision, as it uses the system's double float based functions.
exp( ) Number Raises e to the number power. The result will lose precision, as it uses the system's double float based functions.
log10( ) Number Takes the log, base 10, of the number. The result will lose precision, as it uses the system's double float based functions.
log( ) Number Takes the natural log (base e) of the number. The result will lose precision, as it uses the system's double float based functions.
sin( ) Radian Returns the sine of the radian angle input. The result will lose precision, as it uses the system's double float based functions.
sqrt( ) Number Returns the square root of the number. The result will lose precision, as it uses the system's double float based functions.
tan( ) Radian Returns the tangent of the radian angle input. The result will lose precision, as it uses the system's double float based functions.
floor( ) Number Rounds the number to the floor.
round( ) Number Assumes a scale of 0. The default rounding mode of “round half up” is applied.
Number, Scale The default rounding mode of “round half up” is applied.
Number, Scale, Mode The mode must be set to one of the following:
  • “ROUND_​CEILING”

  • “ROUND_​DOWN”

  • “ROUND_​FLOOR”

  • “ROUND_​HALF_​DOWN”

  • “ROUND_​HALF_​UP”

  • “ROUND_​HALF_​EVEN”

  • “ROUND_​UP”

  • “ROUND_​UNNECESSARY”

negate( ) Number Returns the negative value of the number. Only available in data explorer.

The following are special functions supported in the application for a list of values. In each case, the syntax is function [ indexVariable in listName | expression using indexVariable ], where the indexVariable is chosen by the formula writer to represent each entry in the list and the expression used to evaluate each entry must reference that variable.

Note: The syntax supported for a given use of the formula in a functional area is driven by that particular functional area. For example, in Oracle Public Sector Revenue Management, a formula is supported in the “conditional element validation” form rule. In that form rule all variables including lists are declared in the form rule using letters and the formulas in turn use these letters. In that scenario, the functions below would reference the declared variable letter as the “listName”. Other specific functional area that use this expression parser may support different syntax for referencing elements or lists.
Function Description Examples
any [ ] This function returns the value true if any of the entries in list satisfies the expression. The following returns true if any entry in the Balance list is greater than 0.
any [ i in list/Balance | i > 0 ]
all [ ] This function returns the value true if all of the entries in the list satisfy the expression. The following returns true if all phone numbers are populated.
all [ i in list/phoneNumber | i != ' ' ]
collect [ ] This function returns a new list of elements from the referenced list where the value of each entry of the new list is the result of the expression applied to each original value. The following returns a new list with the tax rate applied to each amount.
collect [ i in list/amount | i * taxRate ]
select [ ] This function returns a list of all the values of the original list that satisfy the Boolean expression. The following returns a new list with only the amounts that are negative numbers.
select [ i in list/amount | i < 0 ]
reject [ ] This function returns a list of all the values of the original list that do not satisfy the Boolean expression. The following returns a new list with only the amounts that are not negative numbers.
reject [ i in list/amount | i < 0 ]