An util for bpmn-js to extract Camunda BPM process variables from a BPMN 2.0 diagram.
$ npm i --save @bpmn-io/extract-process-variables
Given this example diagram
import {
getProcessVariables,
getVariablesForScope,
} from '@bpmn-io/extract-process-variables';
// For Camunda Platform 8 diagrams, use the /zeebe submodule
// import {
// getProcessVariables,
// getVariablesForScope,
// } from '@bpmn-io/extract-process-variables/zeebe';
const canvas = modeler.get('canvas');
const rootElement = canvas.getRootElement();
const allVariables = getProcessVariables(rootElement.businessObject);
/*
[
{
"name": "variable1",
"origin": [ "Task_1" ],
"scope": "Process_1"
},
{
"name": "variable2",
"origin": [ "Task_1" ],
"scope": "Process_1"
},
{
"name": "variable3",
"origin": [ "Task_2" ],
"scope": "SubProcess_1"
}
]
*/
const scopeVariables = getVariablesForScope('Process_1', rootElement.businessObject);
/*
[
{
"name": "variable1",
"origin": [ "Task_1" ],
"scope": "Process_1"
},
{
"name": "variable2",
"origin": [ "Task_1" ],
"scope": "Process_1"
}
]
*/
Note that origin
and scope
retrieves the full moddle element. The example outputs are reduced due to better readibility.
Note that camunda-bpmn-moddle or zeebe-bpmn-moddle descriptors have to be installed.
We are currently extracting process variables from the following diagram properties
camunda:formField
camunda:outputParameter
camunda:out
camunda:resultVariable
camunda:errorCodeVariable
camunda:errorMessageVariable
camunda:escalationCodeVariable
We are currently extracting process variables from the following diagram properties
zeebe:input
zeebe:output
zeebe:loopCharacteristics > inputElement
zeebe:loopCharacteristics > outputCollection
zeebe:calledDecision > resultVariable
- camunda-bpmn-moddle
- Camunda BPM Process Variables Documentation
- zeebe-bpmn-moddle
- Camunda Platform 8 Variables Documentation
MIT