Event Handling

Each orchestration workflow should handle only one type of event. This can be achieved even if an event needs to either create a new item if one does not yet exist, or update an item if one does exist. The same event can be consumed by two workflows, one for "create" and one for "update." For example, the "create" workflow would check whether the item exists and end if it does, or process it if it does not. The "update" workflow would check whether an item exists and end if it does not exist, or process it if it does exist.

In most connector orchestration process apps, there are six orchestration workflows to handle events:

If you want to raise an event from an external tool that will invoke an orchestration workflow, define the interface in a custom event definition and then export a WSDL file from the event definition. The external tool uses the WSDL file to call Web services that raise events. This is described in About Application Links and Event Definitions.

You can design SBM and external tools to provide operations that expose high-level business granularity. For example, you could have a set of orchestration workflows that include "create," "transition" (update), and "delete" operations that are invoked by transitions in the application workflow. You could have similar orchestration workflows that are invoked by the external tool.

Note: The custom event definition is simply a description of the events. It does not automatically implement an event generator from the external tool.

When SBM Application Engine calls the Orchestration Engine via the ALF event mechanism, it sends any empty numeric primary table fields using the following max values: 4294967295 for floating point or fixed precision number and 2147483647 for an integer field. These numbers are defined constants in the SBM Application Engine. You can avoid this by: making any numeric fields that you send on an event required, giving them a default value, or by ensuring the user provides a value by some other means. If that is not possible, test for these max values in any orchestrations that might receive them and handle the case as appropriate for your application (for example, by changing the value to 0).