The Business Process Execution Language for Web Services, BPEL4WS, or BPEL for short, is an XML-based format for describing web services process orchestration. It provides a platform-, protocol- and implementation language-independent format for describing long-running workflows composed from web services.
Virtuoso implements a BPEL server as an optional package included in the open-source distribution. The package offers the core BPEL engine which uses the Virtuoso database for persisting states of long-running processes plus a web-based administration interface for viewing the status of running processes, loading and testing new processes and gathering statistics.
- "Dehydration" and "Rehydration" of process instances: when a process instance is not actively running, it takes no memory and is wholly serialized in the database. It will be "rehydrated," i.e. brought into memory for execution when an event pertaining to its state arrives.
- Full implementation of BPEL language features, including parallel and asynchronous web-service invocation, loops, exception and compensation handlers, complex flows and join conditions.
- Versioning - processes represent business rules and procedures. Single-process instances, for example in the case of an order, custom manufacturing, delivery, acceptance-testing and billing cycle can run for months. The specifics of these procedures, however, can change at any time. Therefore Virtuoso supports completing old process instances with the old script while new instances of the same process may follow a different one.
- Support for WS Security and WS Reliable Messaging in BPEL partner links.
- Calling SQL, Java or .NET code from BPEL processes. The BPEL language intentionally limits itself to workflows and has limited programming language features. These are supposed to be provided by the services invoked from the workflow. In Virtuoso, inline logic can be added to a workflow in any of these languages.
When running the Virtuoso demo database, go to http://localhost:8890/BPELGUI to access online tutorials and samples. These contain the traditional LoanFlow? loan application-processing sample with different protocol variants plus many others.