Resolving exceptions in generated bytecode

You can resolve exceptions when the rule engine execution generates bytecode in sequential, Fastpath or RetePlus mode.

Symptoms

If an exception occurs during rule engine execution, and the stack trace begins with ilog.rules.engine.sequential.generated, this trace indicates that an execution occurred within the generated bytecode. Bytecode is generated in sequential or Fastpath modes, or in RetePlus with the Just-In-Time compilation property useJit enabled.

Causes

The characters that follow ilog.rules.engine.sequential.generated indicate which part of the IRL code caused the exception. The cause might originate in the action part of a rule, or in a function. The exception is caused by a function when the word function is present before the function name. If the function name begins with translation, this means that the function has been generated by the BOM-to-XOM mapping. The function content is the body of a mapping of a business class member whose name follows the translation word.

Diagnosing the problem

Look at the stack trace to determine the origin of the exception. For example, the stack trace begins:
java.lang.NullPointerException
and includes:
ilog.rules.engine.sequential.generated.loanvalidation$35$$33$$_$validation_0.function_translation_loan_LoanUtil_getStringSize(ilog.rules.engine.sequential.generated.loanvalidation$35$$33$$_$validation_0)
This trace indicates that a null pointer exception occurred in the body of the mapping of the business method loan.LoanUtil.getStringSize.

Resolving the problem

To avoid this exception, check for null values in the body of the mapping of the business method.