The relation between BPML and pi-calculus is very simple. Pi-calculus provides a way to determine how two processes interact with each other based on the flow of messages between these processes.
In BPML we have decided that each participant can be as simple as a stateless one-method service or as complex as another process with well-defined message exchange (e.g. an auction service).
When you define a process that utilizes another process, you must be able to determine whether you are sending messages in the right order. Sequence numbers work nicely at run-time, but are inadequate for design time. At design time you would want to know that 'cancelOrder' can only follow 'orderAccepted', and that 'orderCancelled' will never be followed by 'orderShipping'.
There are three ways to achieve this:
1. You can define a constrained binary interface language for connecting the two processes, and by virtue of the languages's simplicity you can easily show how the two processes correctly interact with each other
The limitation of this approach is that the language limits you in the form of interactions, describing exception handling, recursive composition and other complex patterns is hard, and multi-party choreography, essential in any multi-party process definition, is nearly impossible.
2. You can define a stateless language for connecting the two processes that does not support any explicit state-transition, therefore avoiding the problem of how to determine if the interaction is correct (similar to WSDL or IDL)
The limitation of this approach is that while the process can talk to its participants, there is no way to determine at design time if all the possible communication paths (including decisions and exception
handlings) will lead to a successful discussion, since the flow is not modeled.
3. You can define a one-sided language for connecting the two processes that includes some model that allows you to validate whether the interaction between the two processes is correct
This is what BPML's abstract process definition does. By itself it is not pi-calculus and contains a wider set of primitives and control flows (pi-calculus does not directly support time-outs, exceptions, transactions or repetition). However, each of its constructs is reducible to pi-calculus.
Because we can reduce any BPML abstract into a pi-calculus form of message exchange, we can take any two BPML abstracts (for two process participants) and show, using pi-calculus, that the two processes will correctly interact with each other. Pi-calculus simply provides a concise, correct model for performing this validation.
By leveraging pi-calculus this way we can both support one-sided language that is more capable than existing languages (RN PIP, BPSS,
etc) and still perform the level of contractual validation that is at the core of these languages.
----------------------------------------------------------------------
Assaf Arkin arkin@intalio.com
CTO, Intalio Inc.
www.intalio.comThe Business Process Management Company (650) 345 2777