You can only use BusinessEvents rule sessions and rule functions and ActiveMatrix BusinessWorks processes that are configured in the TIBCO Designer integration project, and they must also be included in the relevant EAR files deployed for the integration project.
You can use all the integration features regardless of which product’s engine is used as the container, ActiveMatrix BusinessWorks or BusinessEvents, within the guidelines presented in this chapter.
It is possible to configure a complex execution path in your project, for example, one in which BusinessEvents invokes an ActiveMatrix BusinessWorks process, which in turn invokes a BusinessEvents rule function, and so on.
The BusinessWorks.InvokeProcess() rule function and the Invoke RuleFunction activity both operate synchronously. Both attempt to acquire a lock on BusinessEvents working memory.
Take care to avoid threading issues. Check your execution path carefully to ensure that there are no threading issues leading to deadlock. In general, make sure that no action in the entire execution path attempts to use the same working memory that is already locked.
For example, if you execute BusinessWorks.InvokeProcess() function in BusinessEvents, then in the ActiveMatrix BusinessWorks process it calls, you cannot use an Invoke RuleFunction activity to invoke a rule function in the same rule session. You could invoke a rule function running in a different rule session, however.
All of the variables and properties set in TIBCO Designer and TIBCO Administrator and in the container’s TRA file are available to the contained engine at runtime.
The engine used as the container is responsible for state and object management, fault tolerance, and logging. The contained engine delegates management of these features to the container. The main points to keep in mind are listed below.
When BusinessEvents is the container, ActiveMatrix BusinessWorks checkpointing can be used in a limited way. Do not use ActiveMatrix BusinessWorks checkpointing in any process that is called by
startProcess() or
invokeProcess(), or in any process called by such processes.
When a secondary BusinessEvents engine takes over as primary, it starts the ActiveMatrix BusinessWorks engine (if it was running in the primary at time of failure). On failback to the primary engine, the secondary then stops the ActiveMatrix BusinessWorks engine (and therefore any ActiveMatrix BusinessWorks channels also).