Model Integration Guide for BPMN®
BPMN to SpecIF mapping
For introduction to the Business Process Model and Notation (BPMN), see the BPMN 2.0 Symbol Reference, for example.
Resources
BPMN-XML | SpecIF |
---|---|
collaboration | SpecIF:Diagram |
process1 | tbd |
participant2, laneSet, lane3, task, manualTask, userTask, scriptTask, serviceTask, sendTask, receiveTask, callActivity, transaction, subProcess, businessRuleTask, forking and joining parallelGateway, joining exclusiveGateway, joining inclusiveGateway | FMC:Actor |
forking exclusiveGateway, forking inclusiveGateway, forking eventBasedGateway | FMC:Actor plus FMC:Event per outgoing sequenceFlow |
dataObjectReference4, dataStoreReference4, messageFlow5 | FMC:State |
startEvent, timerStartEvent, messageStartEvent, intermediateEvent, messageThrowEvent, intermediateThrowEvent, intermediateCatchEvent, intermediateTimerCatchEvent, intermediateMessageCatchEvent, boundaryEvent, timerBoundaryEvent, messageBoundaryEvent, endEvent | FMC:Event |
group6 | SpecIF:Collection |
Where:
- For all entities in the left column the namespace ‘bpmn:’ is used; the XML header defines
targetNamespace="http://bpmn.io/schema/bpmn"
. - All SpecIF resource class terms are defined in the Vocabulary.
- The original model element type is stored in a property named dcterms:type.
Comments:
- The participants are transformed, but not the processes, for the following reasons:
- To our experience with different tools, there is no process without participant, but there can be participants without a process.
- Participants are source or target of messageFlows, but not the referenced processes.
- Thus, the role and need of a process in BPMN as implemented by the tools we know is unclear.
- A participant is also called a ‘pool’.
- A lane is considered a responsible person or role, thus an FMC:Actor.
- Interestingly enough, in BPMN the name and other information are properties of dataObjectReference resp. dataStoreReference (rather than dataObject or dataStore). Also the associations point to the references. Therefore, the references are transformed and the dcterms:type is anyways set to dataObject resp. dataStore.
- A messageFlow between different processes is transformed to a dataObject with SpecIF:writes and SpecIF:reads statements connecting to the sending resp. receiving process steps or events.
- Currently a group is not represented as a SpecIF model element, because some (or even all) widely used BPMN modelers do not indicate explicitly in their BPMN-XML export, which activities or other are contained. Thus, the semantics of a group are not easily derived. The geometric coordinates of the diagram can be analyzed to identify contained elements of a group, of course: This is a development task to do.
Statements
At present, the following statements are derived from BPMN diagrams, where the statement terms (predicates) are highlighted in italics:
BPMN-XML | SpecIF | Comment | |
---|---|---|---|
Appearance on diagram | diagram SpecIF:shows model-element | SpecIF:shows | |
Graphical Containment | process SpecIF:contains lane | SpecIF:contains | |
Graphical Containment | lane SpecIF:contains activity or event | SpecIF:contains | |
dataInputAssociation | activity SpecIF:reads data | SpecIF:reads | |
dataOutputAssociation | activity SpecIF:writes data | SpecIF:writes | |
sequenceFlow | activity SpecIF:precedes activity | SpecIF:precedes | |
sequenceFlow (‘outgoing’ with respect to the event) | event SpecIF:precedes activity | SpecIF:precedes | |
sequenceFlow (‘incoming’ with respect to the event) | activity SpecIF:precedes event | SpecIF:precedes | |
association | annotation SpecIF:refersTo model-element | SpecIF:refersTo |
Where:
- For all entities in the left column the namespace ‘bpmn:’ is used; the XML header defines
targetNamespace="http://bpmn.io/schema/bpmn"
. - ‘model-element’ is one of [ ‘FMC:Actor’, ‘FMC:State’, ‘FMC:Event’ ]
- ‘activity’ is one of [ task, manualTask, userTask, scriptTask, serviceTask, sendTask, receiveTask, callActivity, transaction, subProcess ], thus a FMC:Actor.
- ‘data’ is one of [ dataObjectReference, dataStoreReference ], thus a FMC:State.
- ‘event’ is one of [ startEvent, intermediateThrowEvent, intermediateCatchEvent, boundaryEvent, endEvent ], thus a FMC:Event.
- All SpecIF statement class terms are defined in the Ontology.
- The original model element type is stored in a property named dcterms:type.
Example
The following clipping from BPMN-XML represents an event, an activity, a sequenceFlow and a forking exclusive gateway:
The following SpecIF graph expresses the same:
The full example can be inspected, here:
- Telephone Connection Request (BPMN-XML)
- Telephone Connection Request (SpecIF)
- Telephone Connection Request (SpecIF-Viewer)
Transformation Code
Here you may look at the current code of the BPMN to SpecIF transformation.