Defining subprocesses in BPEL
Is it possible to define subprocesses in BPEL, like function(Methods) in programming languages?
The current incarnation of the BPEL specification does not entail support for subprocesses. However, the conventional definition of a subprocess is closely related to properties associated with BPEL scopes and BPEL processes. A BPEL process can call another BPEL process, either synchronously or asynchronously, passing information from the context of the calling process to the called process. The latter process can run on the same BPEL engine or one that runs on a different machine.
A subprocess is normally tightly-coupled with the calling process, i.e. (1) termination of the calling process results in termination of the subprocess, (2) unrecoverable faults are propagated from the subprocess to the calling process, and (3) the calling process can invoke the compensation activity of the subprocess. In the BPEL case, since processes are loosely-coupled Web services, the conventional form of a subprocess does not exist (yet).
This was first published in December 2003