Is empty

images/download/attachments/201668058/image-2025-4-8_16-8-55-version-1-modificationdate-1744121335502-api-v2.png

The Is empty comparison type checks whether the value defined as the Check value (value configuration) is considered 'empty'.

The following values are considered 'empty':

Change value

in JSON notation

Data type

Meaning

null

n/a

No value

""
String

empty string

[]
List, Set, Array

empty 'list'

Configuration

The value configuration for the Check value is not optional for the Is empty comparison type.

Examples

Check an address field for 'filled'

An association criterion (see Association criteria) should apply if the property 'Account number' (accNumber) within the address of a company is filled with an arbitrary string (except "").

Configuration:

The association criterion (see image on the right) uses two rules in an AND conjunction:

  • The introductory Check type ensures that the reference object is a 'Company account' (see Company accounts) type. The following rule is only checked if this is the case.

  • The value configuration for the check value of an Entity property rule refers to the company address (address) by an Object property resolver.

    • The concatenated Object property resolver reads the 'Account-No.' (accNumber) field of the address, which is the check value, here.

  • The Is empty comparison type is used here in the negative (see not (Matcher), which is signalled by the text 'not (...)' in connection with the specification of the comparison type.

NOTE◄ The Is empty comparison is 'passed' in the given context, if the company account does not refer to an address at all, or references an address without an indication for 'Account-No.' (accNumber) or if an empty string ("") has been assigned to this property (for example by an interface/workflow).

images/download/attachments/201668058/image-2025-4-8_16-11-51-version-1-modificationdate-1744121512180-api-v2.png

NOTE◄ Whether a single arbitrary character is accepted as 'Receipt no.' can be additionally via an input restriction or Validators for the Text field in forms.

Evaluate results of a search

After executing a Search (Event action) (event action) in an event handling (see Event handling) a case discrimination shall check if the 'result list' written into a variable is empty. If the search returned matches, a warning is issued.

Configuration:

The introductory Search (Event action) concerns accounts for Guest users, which are written as a list to the special_guests variable if successful. Further details about the search are omitted here.

The If then else event action shown on the right implements case discrimination via an Entity property rule with the Is empty comparison type:

  • The special_guest variable serves as a Check value, which is filled by the Search (Event action) with a Collection of entities with the Class 'Guest user' (GuestUser), provided that the search criteria configured there return matches. If this is not the case, the Search (Event action) returns an empty list ([]).

  • If no special_guests were found, no actions are provided. Therefore, the THEN branch below the rule does not contain any event actions.

  • No further condition is defined for the OTHER branch (right). The action block contains the Show alert event action that generates a warning when special guests are found.

images/download/attachments/201668058/image-2025-4-8_16-22-52-version-1-modificationdate-1744122172530-api-v2.png

NOTE◄ The Is empty comparison type could be negated by the not (Matcher) and the Show alert event action could be placed in the THEN branch below. Then the OTHER branch can be omitted completely and the configuration looks 'leaner'. However, many users find the variant chosen here without negation, in which the 'rule case' (here: Is empty) is handled in the THEN branch and the 'special case' in the OTHER branch, to be more transparent and intuitive, even if it takes up a bit more space.

Success monitoring for a type conversion

If, when adding a specific Working state for a shipment (see Shipments), there is no specification for the 'Incoterms' (International Commerce Terms) field yet, a corresponding specification shall be requested from the user via the User prompt value resolver in the context of an event handling.

Although the User prompt value resolver only supports the input of free text, so that no dropdown with reference to the dynamic enumeration Incoterms can be offered. However, trade clauses are usually identified by three-digit letter combinations that can be easily entered manually.

After the entry, however, the dynamic enumeration Incoterms is used to check whether the entered letter code corresponds to the internal name of an entry created there. Otherwise, the transaction should be aborted with an error message.

Configuration:

In an event handling that reacts to the relevant working state change (see Working state (Events)), the configuration summarized on the right per Execute with event action is used:

  • The text from the User prompt value resolver is specified as the alternative reference object for the context of the Execute with event action, which is processed by the Trim and Upper case value resolvers via the value resolver chain.

  • In the action block, the condition of an If then else event action checks whether the letter combination entered as the name (name) of a value corresponds to the dynamic enumeration Incoterms. Only in cases of an exact match will the Input object (type safe) value resolver return this enumeration value. Otherwise: 'No value' ($null) The success of the 'lookup' in the dynamic enumeration can therefore be easily checked in the context of an Entity property rule using the Is empty comparison type.

    NOTE◄ The chained Store value as variable resolver stores the resolved enumeration value (if any) in Variable inco for later use in an assignment (see below).

  • As the only action (in the THEN branch of the case distinction) an Abort event action is executed below, where the entered text can be used as a parameter in the message text. This also has the effect that the working state change is prevented via rollback.

NOTE◄ The Set value event action (below) is executed only if there is no cancellation. Then the enumeration value derived from the User prompt (in Variable inco) is assigned to the corresponding field of the shipment.

NOTE◄ We assume here that the field for 'International Commerce Terms' (incoterm) has already been checked for the 'empty' state in the Validating rule of the event handling, so that the user will only be prompted if there is no indication yet.

images/download/attachments/201668058/image-2025-4-8_16-24-12-version-1-modificationdate-1744122252467-api-v2.png

Runtime example:

images/download/attachments/201668058/image-2025-4-9_7-33-44-version-1-modificationdate-1744176823822-api-v2.png

NOTEEntering 'FCA' (Free Carrier) would have worked if this option existed in the dynamic enumeration for Incoterms.

Negative criteria for a list

An association criterion (see Association criteria) should be considered passed for a user (see Users) exactly when the list in the 'roles' (roles) field does not contain a role whose name contains the string 'admin' (case-insensitive).

Configuration:

The association criteria links two rules in an AND-conjuction:

  • The introductory Check type ensures that the input value is a user (see Users). Only then will the second rule be evaluated.

  • The check of the user's 'roles' list is performed in two stages:

    • The outer Entity property rule uses the Is empty comparison type. It is to be passed if the evaluation of the user's Roles does not contain a match for the negative criteria.

    • The associated value configuration aims at finding a 'critical' role in the sense of the criteria with the Rule list resolver. If its return value is 'empty', no 'critical' role is assigned and the association criteria is considered to be passed.

    • The basis for the search is a list of all roles assigned to the user. This must be generated from the list of role IDs in the 'roles' (roles) field by a Collect values value resolver to enable evaluation by the concatenated Rule list resolver. The Value to collect is the complete role, which is 'resolved' starting from the list entry (Long value as reference to the ID of the role) via the Input object (type safe) value resolver.

    • The concatenated Rule list resolver evaluates the inner Entity property rule for the list of roles ((Rolle[]) passed as input value, which checks with the Contains comparison type whether the 'role name' (roleName) field of the role contains the text 'admin'. In the Check value (left), the concatenated Lower case value resolver ensures that this string comparison is case-insensitive.

images/download/attachments/201668058/image-2025-4-8_16-29-15-version-1-modificationdate-1744122554763-api-v2.png

NOTE◄ Even if the Resolve all as list option were set in the Rule list resolver, for example to store a list of all critical role (names) in a variable, the Rule list resolver will return 'No value' ($null) rather than an empty list ([]) if no role name like *admin* is found. The Is empty comparison type does not distinguish these two cases anyway.

NOTE◄ The special case in which the 'roles' (roles) field does not assign a single role is not dealt with here, as a user account cannot be saved without assigning a role.