Using Custom Expressions in Exception Monitor

You can write your own custom expressions to control how Exception Monitor routes records using the Groovy scripting language to create an expression.

Using Groovy Scripting

For information on Groovy, see groovy-lang.org.

Groovy expressions used in the Exception Monitor stage must evaluate to a Boolean value (true or false) that indicates whether the record is considered an exception and should be routed for manual review. Exception records are routed to the exception port.

For example, if you need to review records with a validation confidence level of <85, your script would look like:

data['Confidence']<85

The monitor would evaluate the value of the Confidence field against your criteria to determine which output port to send it to.

Example: Checking a Field for a Single Value

This example evaluates to true if the Status field has 'F' in it. This would have to be an exact match, so 'f' would not evaluate to true.

return data['Status'] == 'F'; 

Example: Checking a Field for Multiple Values

This example evaluates to true if the Status field has 'F' or 'f' in it.

boolean returnValue = false;
if (data['Status'] == 'F' || data['Status'] == 'f')
{
 returnValue = true;
}
return returnValue; 

Example: Evaluating Field Length

This example evaluates to true if the PostalCode field has more than 5 characters.

return data['PostalCode'].length() > 5; 

Example: Checking for a Character Within a Field Value

This example evaluates to true if the PostalCode field has a dash in it.

boolean returnValue = false; 
if (data['PostalCode'].indexOf('-') != -1) 
{ 
	returnValue = true; 
} 
return returnValue; 

Common Mistakes

The following illustrate common mistakes when using scripting.

The following is incorrect because PostalCode (the column name) must be in single or double quotes

return data[PostalCode]; 

The following is incorrect because no column is specified

return data[]; 

The following is incorrect because row.set() does not return a Boolean value. It will always evaluate to false as well as change the PostalCode field to 88989.

return row.set('PostalCode', '88989'); 

Use a single equals sign to set the value of a field, and a double equals sign to check the value of a field.