Click for larger view.
In BPM suites based on workflow architecture, the language is typically proprietary but compliant with the XPDL (XML Process Definition Language) standard from the Workflow Management Coalition. Process activities may be one of several predefined implementation types (Web service, user task, integration activity)‚ each assigned to a resource, such as a human task role or an integration adapter. The configuration dialog for each activity depends on its type.
By contrast, BPM suites based on service orchestration rely on the BPEL language standard. BPEL provides a single activity type -- Invoke -- to call a Web service, human task, or integration adapter, all of which must be implemented as a service, with an interface described by WSDL. But Invoke must be addressed to a service end point -- a URL, not a task role. To accommodate human tasks, what gets invoked by BPEL is not the user task itself but a task manager service, which handles the workflow details.
Another difference is that workflow-based BPM suites support the notion of a subprocess, a reusable process fragment that shares context data and state management with the calling parent. BPEL provides no such concept. A subprocess is another BPEL process; data sharing and state synchronization must be explicitly defined in the process logic. To address these real-world limitations, IBM and SAP last summer outlined optional extensions to the BPEL standard, but the specs are not yet complete. In the end, regardless of architecture and coding differences, BPM suites tend to accomplish the same set of core functions.
Rolling out process-driven apps
The completed process design is then deployed to the process engine. As each instance of the process is triggered, the engine routes it through the defined sequence of activities, integrating external applications, routing workflow tasks to human participants, and managing deadlines and exceptions throughout the process. In offerings from app server vendors such as IBM, Microsoft, Oracle, or SAP, the process engine leverages unique capabilities of the app server and its associated middleware. Offerings from BPM pure-plays tend to run on the user's choice of app server platforms.