Segmenting BPMN: My View

Tom Baeyens weighs in on my debate with Michael. He mostly sides with Michael, but I think because of a slight understanding of my stance. I'm not saying BPMN is all or nothing. Yes it has parts that are not very useful. And, like Michael, the tool vendors factor into my thinking as well, in particular the BPMS vendors who support BPMN's model-driven implementation style. So I, too, divide up BPMN constructs into different buckets, but with very different criteria.

I am thinking about the problem of model portability. Yes, I'm on that horse again. I've been working with Robert Shapiro and Tom Laverty to define a model portability conformance standard for XPDL 2.1, the new version that supports BPMN 1.1. (Sorry to say, you can't just download the spec and white paper; WfMC makes you go through an online interview: "First, tell us a little bit about yourself..." Good god...)

XPDL provides a BPMN schema, but just because a BPMN model is XPDL schema-valid doesn't mean that a) the diagram has been serialized in XPDL properly, or b) another tool can make sense of it. Tom Laverty has developed an XSLT that, when applied to the XPDL instance, generates a list of errors about any improper serialization or internal inconsistencies, and warnings for elements that fall outside of the portability conformance set. It's very cool.

What portability conformance set? I'm glad you asked! We divide up BPMN into 3 categories, based on the likelihood a BPMN tool supports the constructs.

  • The SIMPLE conformance set includes task, collapsed subprocess, gateway (exclusive data-based and parallel), None start and end events, pool, lane, data object, text annotation, sequence flow, and association.
  • The STANDARD conformance set includes task (task type User, Service, Send, Receive); collapsed and expanded subprocess, looping or multi-instance activity, gateway (inclusive, exclusive data-based, exclusive event-based, parallel), start events (None, message, timer), catching intermediate events in sequence flow (timer, message), throwing intermediate events in sequence flow (message), attached intermediate events (timer, message, error), end events (None, error, message, terminate), pool, lane, data object, text annotation, sequence flow (uncontrolled, conditional, default), and association. [Looks like we left out message flow... not sure why.]
  • The COMPLETE conformance set includes the full BPMN 1.1 spec.
Because this is intended to validate portability of "models" not executable designs, the only attributes of these objects supported are either ids (to hold the model elements together) and labels or subtypes that print in the diagram. The executable details of these objects are rarely added in BPMN, anyway.

Note that my SIMPLE is similar to Michael's core + extended. To me it's pseudo-BPMN, but any tool that claims to be BPMN supports all of it. The STANDARD reflects my view of the important parts of BPMN. Not all event types - mostly timer, message, error, and terminate, as those are the ones you need. Some tools are there today - Lombardi, Appian, Tibco, maybe others. Most are working hard to get there. The COMPLETE level is basically for modeling tools with no runtime... they can do whatever.

In my training we focus on the STANDARD constructs and patterns. True, before the training users don't know how to use all of it, and afterwards, they do. I think that's the point.

The way I see it, if we can get tool vendors to buy into the portability standard, the marketplace will decide whether SIMPLE or STANDARD is the sweet spot for tools. And that's as it should be.