BPMN Task Marker and Task Type
Explanation
Section titled “Explanation”A BPMN task is one step in a process model. Two kinds of small symbols refine it: types and markers. The BPMN Activity article covers the wider idea of tasks and activities.
Task types
- Service task: a work item with a specific type. When the process reaches it, the engine creates a job for a worker to pick up.
- Script task: the engine evaluates a script. The script can be written in Groovy, JavaScript, or Python.
- Manual task: a person does the work without external tooling or a user interface. The engine simply passes through it.
Multi-instance marker
Multi-instance repeats a step. It comes in two forms:
- Sequential: drawn with three horizontal lines at the bottom of the activity.
- Parallel: drawn with three vertical lines. All instances are created when the activity starts. They run at the same time, independently of each other.
In Camunda 8, parallel is the default.
Loop marker
Camunda 7 does not natively support the loop marker. If you use that engine, model the loop explicitly, for example with gateways. The BPMN Gateway article explains gateways.
Compensation marker
Compensation handlers sit outside the regular flow. They run only when a compensation event is thrown. An association links them, not a sequence flow. The BPMN Compensation Event article covers the event side.
Example
Section titled “Example”An order process has a parallel multi-instance service task named “Reserve item”. Each order line gets its own instance. All instances start together and run independently. A script task then totals the prices. A manual task, “Pack parcel”, follows. A person does it, and the engine passes straight through.
Trade-offs
Section titled “Trade-offs”Check the target engine before you use a marker. Camunda 7 lacks native loop support, so a loop there needs explicit modeling, such as gateways. Parallel multi-instance runs all instances at once and independently. Sequential multi-instance is the other choice when you want repetition one instance at a time.
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="orderProcess" isExecutable="true"> <startEvent id="start" name="Order received"> <outgoing>f1</outgoing> </startEvent> <serviceTask id="reserve" name="Reserve item"> <incoming>f1</incoming> <outgoing>f2</outgoing> <multiInstanceLoopCharacteristics /> </serviceTask> <scriptTask id="total" name="Total prices"> <incoming>f2</incoming> <outgoing>f3</outgoing> </scriptTask> <manualTask id="pack" name="Pack parcel"> <incoming>f3</incoming> <outgoing>f4</outgoing> </manualTask> <endEvent id="end" name="Order packed"> <incoming>f4</incoming> </endEvent> <sequenceFlow id="f1" sourceRef="start" targetRef="reserve" /> <sequenceFlow id="f2" sourceRef="reserve" targetRef="total" /> <sequenceFlow id="f3" sourceRef="total" targetRef="pack" /> <sequenceFlow id="f4" sourceRef="pack" targetRef="end" /> </process> <bpmndi:BPMNDiagram id="BPMNDiagram_orderProcess"> <bpmndi:BPMNPlane id="BPMNPlane_orderProcess" bpmnElement="orderProcess"> <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_reserve" bpmnElement="reserve"> <dc:Bounds x="216" y="80" width="100" height="80" /> </bpmndi:BPMNShape> <bpmndi:BPMNShape id="BPMNShape_total" bpmnElement="total"> <dc:Bounds x="416" y="80" width="100" height="80" /> </bpmndi:BPMNShape> <bpmndi:BPMNShape id="BPMNShape_pack" bpmnElement="pack"> <dc:Bounds x="616" y="80" width="100" height="80" /> </bpmndi:BPMNShape> <bpmndi:BPMNShape id="BPMNShape_end" bpmnElement="end"> <dc:Bounds x="816" y="102" width="36" height="36" /> <bpmndi:BPMNLabel> <dc:Bounds x="791" y="143" width="87" height="14" /> </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:BPMNEdge id="BPMNEdge_f4" bpmnElement="f4"> <di:waypoint x="716" y="120" /> <di:waypoint x="816" y="120" /> </bpmndi:BPMNEdge> </bpmndi:BPMNPlane> </bpmndi:BPMNDiagram></definitions>Checks
Section titled “Checks”- Each loop in a model targeting Camunda 7 is modeled explicitly (for example with gateways), not with the loop marker.
- Each multi-instance activity is clearly drawn as parallel (vertical lines) or sequential (horizontal lines).
- Each compensation handler is linked by association and triggered by a compensation event, not reached by sequence flow.
- Manual tasks are used only for work that needs no external tooling or UI, since the engine passes through them.
Related
Section titled “Related”- BPMN Activity
- BPMN Compensation Event
- BPMN Gateway
- BPMN Ad Hoc Sub-Process
- BPMN Core Elements
- BPMN 2.0 Notation
Sources
Section titled “Sources”- Task Markers | docs.camunda.org — docs.camunda.org, accessed 2026-11-09
- Script tasks | Camunda 8 Docs — docs.camunda.io, accessed 2026-11-09
- Service tasks | Camunda 8 Docs — docs.camunda.io, accessed 2026-11-09
- Manual tasks | Camunda 8 Docs — docs.camunda.io, accessed 2026-11-09
- Multi-instance | Camunda 8 Docs — docs.camunda.io, accessed 2026-11-09