Petri-Nets and Pi-Calculus… where’s the B in BPMN?
Recently there has been quite an interesting discussion around Pi Calculus vs. Petri-Nets, and between BPEL and other implementations of BPMN. The real discussion thread (consolidated place to read) is here. The start of this discussion appears to be Ismael’s post on BPEL/Pi-Calculus vs. BPMN engines that use Petri-Nets. This is pretty esoteric stuff to the average person, but it has sparked quite the debate. If you’re technical, and you’re curious about what’s going on inside the black box BPMS you’re using, this is a great debate to read through. The basic point made by Arthur and others is that BPEL is an implementation detail, and that BPMN is the most important standard because it represents the process, and as we all should know, representation affects how we think about process. Arthur’s basic point is not that BPEL is deficient, but merely that it is like arguing about whether we should compile to Java bytecode or C-sharp byte code. Or native machine code… do we really care as long as the code runs well on our target platform? :) The victim in the debate is often “petri-nets” as compared to “pi-calculus”. Ismael makes the argument that BPEL is superior to the other approaches out there, partly because it is standards-based, and partly because it employs pi-calculus and that that is superior to petri nets for parallel processes. A great debate over whether BPEL really implements pi-calculus ensues, missing that the key point Arthur was making is that either a pi-calculus model or a petri-net model could represent parallel processing of BPMN models well. My personal experience reflects this as well, as I’ve participated in projects that leveraged both technologies and they both work… moreover, they don’t appear to be entirely mutually exclusive. Lost in all of this debate is the B in BPMN: The Business. The Business doesn’t care as much about the specific technical differences of these approaches under the hood, so long as they execute the process faithfully. Personally I just want to use the best tool for the job. I’m going to “write” processes in BPMN. I’m going to execute them and deal with differences in interpretation of the spec when BPMN is married up to execution engines, regardless of whether they are BPEL or other technologies (and the fact that it goes to BPEL doesn’t get me away from interpretation issues, because the issue is how is BPMN “interpreted” into BPEL just as much as it is an issue of interpreting BPMN into some other exeuction form).