Skip to content

BPMN as Modeling Language, Not Method

BPMN stands for Business Process Model and Notation. The key word is notation. It is a graphical language for drawing processes. Camunda describes it as a graphical notation for representing complex processes.

Two design goals

  • Readable for business users. The main goal is a notation that all business users can readily understand. It looks like a flowchart and does not depend on any particular implementation environment.
  • Precise enough for software. The notation is exact enough to translate diagrams into software process components. The specification maps the graphics to constructs of execution languages. These are languages that a process engine can run.

Bridging business and technical roles

BPMN is meant for direct use by the people who design, manage, and realize processes. It supports both technical and business users. It also aims to avoid communication gaps between process design and implementation.

A limited scope

BPMN covers only the modeling concepts that apply to business processes. It is a language for drawing process models. It is not a general-purpose modeling language. For related topics, see the articles BPMN 2.0 Notation and Modeling Method.

Execution needs a target

A diagram can be translated to executable form. But it must target a specific engine to run. The notation alone does not pick that engine.

A team draws an “Approve order” process. A sales manager reads the diagram and confirms the steps match daily work. A developer later maps the same diagram to a process engine. The drawing stays the shared reference for both roles. For execution, the team must first choose a target engine.

One notation serves two audiences, business users and technical users. That is its strength. The readable, flowchart-like look supports business understanding. The precision needed for translation to software asks more of the diagram. Its scope is limited to business processes, so it is not a tool for every modeling need. Execution also depends on the chosen engine.

A small process any business user can read and a process engine could later run.

Diagram source
<?xml version="1.0" encoding="UTF-8"?>
<definitions xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" targetNamespace="http://example.org/bpmn">
<process id="approveOrder" isExecutable="false">
<startEvent id="start" name="Order received">
<outgoing>f1</outgoing>
</startEvent>
<task id="check" name="Check order">
<incoming>f1</incoming>
<outgoing>f2</outgoing>
</task>
<task id="approve" name="Approve order">
<incoming>f2</incoming>
<outgoing>f3</outgoing>
</task>
<endEvent id="end" name="Order approved">
<incoming>f3</incoming>
</endEvent>
<sequenceFlow id="f1" sourceRef="start" targetRef="check" />
<sequenceFlow id="f2" sourceRef="check" targetRef="approve" />
<sequenceFlow id="f3" sourceRef="approve" targetRef="end" />
</process>
<bpmndi:BPMNDiagram id="BPMNDiagram_approveOrder">
<bpmndi:BPMNPlane id="BPMNPlane_approveOrder" bpmnElement="approveOrder">
<bpmndi:BPMNShape id="BPMNShape_start" bpmnElement="start">
<dc:Bounds x="80" y="102" width="36" height="36" />
<bpmndi:BPMNLabel>
<dc:Bounds x="68" y="143" width="60" height="28" />
</bpmndi:BPMNLabel>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="BPMNShape_check" bpmnElement="check">
<dc:Bounds x="216" y="80" width="100" height="80" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="BPMNShape_approve" bpmnElement="approve">
<dc:Bounds x="416" y="80" width="100" height="80" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="BPMNShape_end" bpmnElement="end">
<dc:Bounds x="616" y="102" width="36" height="36" />
<bpmndi:BPMNLabel>
<dc:Bounds x="604" y="143" width="60" height="28" />
</bpmndi:BPMNLabel>
</bpmndi:BPMNShape>
<bpmndi:BPMNEdge id="BPMNEdge_f1" bpmnElement="f1">
<di:waypoint x="116" y="120" />
<di:waypoint x="216" y="120" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="BPMNEdge_f2" bpmnElement="f2">
<di:waypoint x="316" y="120" />
<di:waypoint x="416" y="120" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="BPMNEdge_f3" bpmnElement="f3">
<di:waypoint x="516" y="120" />
<di:waypoint x="616" y="120" />
</bpmndi:BPMNEdge>
</bpmndi:BPMNPlane>
</bpmndi:BPMNDiagram>
</definitions>
  • The document states that process diagrams use BPMN as a notation that business users can read.
  • Diagrams meant for execution name the specific engine they target.
  • BPMN is used only for business-process concepts, not for other modeling needs.