π’ Operaton β
Engine-specific behavior when using processEngine = OPERATON.
Operaton is an open-source fork of Camunda 7. It follows the same extraction patterns as Camunda 7, but uses its own XML namespace (http://operaton.org/schema/1.0/bpmn) with the operaton: prefix instead of camunda:.
Migrating from Camunda 7?
If your Operaton models were originally created with Camunda 7 Modeler and still use camunda: namespace attributes, use processEngine = CAMUNDA_7 instead until you migrate the namespace.
Service Task Detection β
Service tasks are detected via one of these operaton: attributes:
operaton:delegateExpressionβ e.g.#{sendMailDelegate}operaton:classβ e.g.com.example.SendMailDelegateoperaton:topicβ for external tasks, e.g.mail.send
<bpmn:serviceTask id="Activity_SendMail" name="Send Mail"
operaton:delegateExpression="#{sendMailDelegate}">
</bpmn:serviceTask>The attribute value becomes the entry in the generated ServiceTasks object.
Variable Extraction β
I/O Mappings β
Variables are extracted from operaton:inputOutput:
<bpmn:extensionElements>
<operaton:inputOutput>
<operaton:inputParameter name="orderId">${orderId}</operaton:inputParameter>
<operaton:outputParameter name="mailSent">true</operaton:outputParameter>
</operaton:inputOutput>
</bpmn:extensionElements>The name attribute of each parameter becomes a variable.
Message Start Events
operaton:inputOutput is not supported on message start events. Use extension properties with additionalInputVariables / additionalOutputVariables instead (see below).
Call Activity Mappings β
Call activity variables come from operaton:in and operaton:out mappings, not from operaton:inputOutput:
<bpmn:callActivity id="CallActivity_Process" calledElement="sub-process">
<bpmn:extensionElements>
<operaton:in source="orderId" target="orderId" />
<operaton:out source="result" target="processResult" />
</bpmn:extensionElements>
</bpmn:callActivity>Variables are extracted from the source attribute of operaton:in and the target attribute of operaton:out.
Multi-Instance β
Multi-instance variables come from attributes on the multiInstanceLoopCharacteristics element:
<bpmn:multiInstanceLoopCharacteristics
operaton:collection="${subscribers}"
operaton:elementVariable="subscriber" />Extracted variables: subscribers β Input (from collection expression), subscriber β Output (from elementVariable)
Additional Input / Output Variables (Extension Properties) β
For elements where I/O mappings aren't supported (like message start events), declare variables via operaton:properties. Two directional property names are recognised:
<bpmn:extensionElements>
<operaton:properties>
<operaton:property name="additionalInputVariables" value="orderId, customerEmail" />
<operaton:property name="additionalOutputVariables" value="processingResult" />
</operaton:properties>
</bpmn:extensionElements>Each comma-separated value becomes a variable β values under additionalInputVariables land in the element's Inputs sub-object, values under additionalOutputVariables in Outputs. Works on any BPMN element. The legacy undirected additionalVariables property is no longer extracted β split your values into the two directional properties above.