Overview: Dynamic execution object model (XOM)

The dynamic execution object model (XOM) can be generated from native Java™ classes or from XML data. The rule engine accesses XML directly.

The execution object model (XOM) is an object model against which rules are run. Business rules are written against the Business Object Model (BOM), and then translated into the ILOG® Rule Language (IRL) and run against the XOM. The rule engine evaluates the rules against the application objects and runs them when appropriate.

In Decision Server, a XOM can be generated from native Java classes or from dynamic classes, or derived from XML schema definitions (XSDs). The word dynamic means that no native Java object is constructed or generated. Instead, dynamic XML objects are created to represent the instances of the dynamic classes.
  • A XOM generated from native Java classes is known as a Java XOM.
  • A XOM generated from dynamic classes is known as a Dynamic XOM.
When the rule engine looks for XOM classes, it looks first in the dynamic XOM, then in the Java XOM.
Note: The use of a Java XOM is recommended over Dynamic XOM. If you are using a Dynamic XOM, and HTDS to execute decision services, the reasons for using Java XOM become clear:
  • You can easily generate a Java model from XSD files by using a maven plug-in, like jaxb2-maven-plugin or a Java IDE.
  • By using the managed Java XOM feature for Rule Execution Server, you can keep deploying decision services without worrying about the XOM.
  • The HTDS requests and responses are very similar after moving to a Java XOM, and the differences might be addressed by annotating Java XOM classes if necessary.

The following diagram shows the mapping between a XOM and Java classes and dynamic classes.

Mapping between a XOM and classes

The XOM is represented by the Java class IlrReflect. Instances of this class contain all the classes that are required for the execution of IRL rules.

The rule engine accesses XML directly, in two stages:
  1. At compile time, the XOM uses an XML driver to read XML schemas.
  2. At run time, the rule engine uses the class IlrReflect to manage the XOM.
The IlrReflect class provides the following services:
  • Create a XOM
  • Add a new Java class to the XOM
  • Retrieve all dynamic classes
  • Create a dynamic class in the XOM
  • Add a new dynamic attribute to a dynamic class

Consequently, rules can run directly on dynamic data without the data being converted to Java objects.

For native Java classes, the rule engine uses Java type introspection to apply rules directly to the application objects.

The following diagram shows how the rule engine reads XML schemas directly, through an XML driver.

Diagram showing how the rule engine reads XML schemas directly

You can define a dynamic XOM in the New Rule Project wizard when you create a rule project, or add it later by using the Rule Project Properties dialog.