Technical Blog Post
Abstract
Event Propagation 'issue' in the Maximo Integration Framework
Body
With the release of Maximo 7.5, we introduced a feature in the Integration Framework to propagate events on a child object to the parent and generate outbound transactions.
The goal of this feature was to allow customers to generate outbound transactions when a change is made to a child object on an object structure when it is changed in the parent objects application.
Then, create an event enabled Publish Channel and add it to an active External System
Now if you open the "Item Master" application and find an Item that has an Asset associated, then make a change to that Item which will trigger the event propagation, the propagation will not work - you'll see the following message in the log with the Integration logger dialed up to Debug:
"nullcomparing relations - event relation = null os relation = ASSET_ITEM"
Because in the world of the "Item Master" application there is no parent Asset object so the relationship cannot resolve.
So, what can we do?
Question
What do I need to change so that changes to the child object in an object structure always send out transactions?
Cause
When you create an object structure such as:
MAINOBJECT
CHILD1
CHILD2
Once you enable the event listener in the Publish Channel for MAINOBJECT, and check the box to propagate events for all of the children, the child events will only propagate to MAINOBJECT when MAINOBJECT is the top-level object in the set of business objects instantiated by the application.
An application which is designed to load one MAINOBJECT and then one or more CHILD1 or CHILD2 objects will work with this object structure. A change to CHILD1 will propagate up to MAINOBJECT and trigger the event on MAINOBJECT and the outbound transaction.
An application which only loads CHILD1 objects and does not include MAINOBJECT will not work. Changes to CHILD1 will cause the propagation mechanism to look for MAINOBJECT, but there is no MAINOBJECT business object loaded, so the event on MAINOBJECT cannot be triggered.
Answer
There are two ways to resolve this:
1. Redesign the applications so that the MAINOBJECT is loaded and CHILD1 and CHILD2 are then loaded under it.
2. Create object structures for each instance of the child object, such as:
Object Structure 1
CHILD1
MAINOBJECT
CHILD1
CHILD2
Object Structure 2
CHILD2
MAINOBJECT
CHILD1
CHILD2
This means you must also modify your external system to accept both formats and remove or ignore the top-level CHILD1 elements so that the result is
MAINOBJECT
CHILD1
CHILD2
This solution may not work in all instances and should be tested for the object structure in question.
UID
ibm11133055