irX General Integration Concepts
Runtime Mapping across Nested Relationships
Much like Salesforce, the InRule rule engine offers strong support for hierarchical and relational data. Within a given Rule Application, data can be considered across parent-child relationships within a single rule request. These relationships can take the form of Collections (1 - * relationships) or 1 – 1 relationships.
When N:N relationships are imported into InRule, they behave as 1:N Collection relationships within the Rule Application.
In addition to the abilities of both products to handle relational data, both products also offer the ability to declaratively configure "Entities" and "Fields". Both products also allow for different strongly-typed Entities and Fields to be accessed with loosely-typed SDK interfaces. Because of these inherent similarities and flexible interfaces, it is possible to build a reusable mapping component that can convert any given graph of loosely-typed Salesforce Entities to InRule Entities, and vice versa.
Controlling irVerify Behavior with Load, Save and Inactive Record Settings
When working with an Entity Schema composed of many related Salesforce Entities, it is often useful to have explicit control over which relationships are either automatically loaded or automatically considered in change detection for persistence. If a relationship is skipped during the initial load routines, then it is available to be conditionally populated later using rules.
In the irX rule authoring ribbon, there are two buttons that give the rule author the control to denote if a relationship should be automatically loaded or saved excluded.
Automatic loading and saving is enabled by default for all relationships that are imported from Salesforce. The rule author can opt-out of these automatic behaviors by unselecting "Auto Load" or "Auto Save". When these buttons are selected, metadata attributes are written into the Rule Application for the given relationship. These metadata attributes are used by the irVerify data loader when recursively loading data or detecting changes for persistence.
If loading or saving is disabled for a given relationship, then it is also disabled for all Entities that are children of that relationship.