camunda-bpmn-js-behaviors
Version:
Camunda Platform 7 and 8 behaviors for bpmn-js
90 lines (75 loc) • 1.87 kB
JavaScript
import {
getBusinessObject,
is
} from 'bpmn-js/lib/util/ModelUtil';
import { createElement } from '../../util/ElementUtil';
/**
* Get zeebe:IoMapping from an element.
*
* @param {djs.model.Base|ModdleElement} element
*
* @return {ModdleElement}
*/
export function getIoMapping(element) {
const businessObject = getBusinessObject(element);
const extensionElements = businessObject.get('extensionElements');
if (!extensionElements) {
return;
}
return extensionElements.get('values').find((value) => {
return is(value, 'zeebe:IoMapping');
});
}
/**
* Get zeebe:InputParameters from an element.
*
* @param {djs.model.Base|ModdleElement} element
*
* @return {Array<ModdleElement>}
*/
export function getInputParameters(element) {
const ioMapping = getIoMapping(element);
if (ioMapping) {
return ioMapping.get('zeebe:inputParameters');
}
return [];
}
/**
* Get zeebe:OutputParameters from an element.
*
* @param {djs.model.Base|ModdleElement} element
*
* @return {Array<ModdleElement>}
*/
export function getOutputParameters(element) {
const ioMapping = getIoMapping(element);
if (ioMapping) {
return ioMapping.get('zeebe:outputParameters');
}
return [];
}
/**
* Get zeebe:Input at index.
*
* @param {djs.model.Base|ModdleElement} element
* @param {number} index
*
* @return {ModdleElement}
*/
export function getInputParameter(element, index) {
return getInputParameters(element)[ index ];
}
/**
* Get zeebe:Output at index.
*
* @param {djs.model.Base|ModdleElement} element
* @param {number} index
*
* @return {ModdleElement}
*/
export function getOutputParameter(element, index) {
return getOutputParameters(element)[ index ];
}
export function createIoMapping(parent, bpmnFactory, properties) {
return createElement('zeebe:IoMapping', properties, parent, bpmnFactory);
}