Multi-line boolean expressions

The validation script of a validation rule may consist of multiple boolean expressions. To increase legibility, you can use specific constructs.

Using the constructs makes your rule a little more verbose, but more readable in most cases.

Constructions

Expression Purpose
allOf All the conditions have to be valid (= AND).
anyOf One or more of the conditions have to be valid (= OR).
condition Capture the result of a boolean to re-use in other constructs.

Examples

The examples below give the same result but are formulated in a single line, multi-line or in a hybrid construct.

Single-line expression:

Copy code

rule {
((isNotEmpty (name) && isEqual (name, 'doesnotequal2', message: 'shouldfail')\
 || isEqual (name, 'doesnotequal')) && isNotEmpty (id)
}

Multi-line expression:

Copy code

rule {
    allOf {
	anyOf {
	    allOf {
		condition { isNotEmpty (name) }
	 	condition { isEqual (name, 'doesnotequal2', message:\
'shouldfail') }
	    }
	    condition { isEqual (name, 'doesnotequal') }
	}
	condition { isNotEmpty (id) }
    }
}

Hybrid expression:

Copy code

rule {
    allOf {
	anyOf {
	    condition { isNotEmpty (name) && isEqual (name,\
               'doesnotequal2', message: 'shouldfail') }
	    condition { isEqual (name, 'doesnotequal') }
	}
	condition { isNotEmpty (id) }
    }
}