bpmn-js-properties-panel
Version:
A simple properties panel for bpmn-js
221 lines (179 loc) • 5.19 kB
JavaScript
'use strict';
/**
* Create an input parameter representing the given
* binding and value.
*
* @param {PropertyBinding} binding
* @param {String} value
* @param {BpmnFactory} bpmnFactory
*
* @return {ModdleElement}
*/
function createInputParameter(binding, value, bpmnFactory) {
var scriptFormat = binding.scriptFormat,
parameterValue,
parameterDefinition;
if (scriptFormat) {
parameterDefinition = bpmnFactory.create('camunda:Script', {
scriptFormat: scriptFormat,
value: value
});
} else {
parameterValue = value;
}
return bpmnFactory.create('camunda:InputParameter', {
name: binding.name,
value: parameterValue,
definition: parameterDefinition
});
}
module.exports.createInputParameter = createInputParameter;
/**
* Create an output parameter representing the given
* binding and value.
*
* @param {PropertyBinding} binding
* @param {String} value
* @param {BpmnFactory} bpmnFactory
*
* @return {ModdleElement}
*/
function createOutputParameter(binding, value, bpmnFactory) {
var scriptFormat = binding.scriptFormat,
parameterValue,
parameterDefinition;
if (scriptFormat) {
parameterDefinition = bpmnFactory.create('camunda:Script', {
scriptFormat: scriptFormat,
value: binding.source
});
} else {
parameterValue = binding.source;
}
return bpmnFactory.create('camunda:OutputParameter', {
name: value,
value: parameterValue,
definition: parameterDefinition
});
}
module.exports.createOutputParameter = createOutputParameter;
/**
* Create camunda property from the given binding.
*
* @param {PropertyBinding} binding
* @param {String} value
* @param {BpmnFactory} bpmnFactory
*
* @return {ModdleElement}
*/
function createCamundaProperty(binding, value, bpmnFactory) {
return bpmnFactory.create('camunda:Property', {
name: binding.name,
value: value || ''
});
}
module.exports.createCamundaProperty = createCamundaProperty;
/**
* Create camunda:in element from given binding.
*
* @param {PropertyBinding} binding
* @param {String} value
* @param {BpmnFactory} bpmnFactory
*
* @return {ModdleElement}
*/
function createCamundaIn(binding, value, bpmnFactory) {
var properties = createCamundaInOutAttrs(binding, value);
return bpmnFactory.create('camunda:In', properties);
}
module.exports.createCamundaIn = createCamundaIn;
/**
* Create camunda:in with businessKey element from given binding.
*
* @param {PropertyBinding} binding
* @param {String} value
* @param {BpmnFactory} bpmnFactory
*
* @return {ModdleElement}
*/
function createCamundaInWithBusinessKey(binding, value, bpmnFactory) {
return bpmnFactory.create('camunda:In', {
businessKey: value
});
}
module.exports.createCamundaInWithBusinessKey = createCamundaInWithBusinessKey;
/**
* Create camunda:out element from given binding.
*
* @param {PropertyBinding} binding
* @param {String} value
* @param {BpmnFactory} bpmnFactory
*
* @return {ModdleElement}
*/
function createCamundaOut(binding, value, bpmnFactory) {
var properties = createCamundaInOutAttrs(binding, value);
return bpmnFactory.create('camunda:Out', properties);
}
module.exports.createCamundaOut = createCamundaOut;
/**
* Create camunda:executionListener element containing an inline script from given binding.
*
* @param {PropertyBinding} binding
* @param {String} value
* @param {BpmnFactory} bpmnFactory
*
* @return {ModdleElement}
*/
function createCamundaExecutionListenerScript(binding, value, bpmnFactory) {
var scriptFormat = binding.scriptFormat,
parameterValue,
parameterDefinition;
if (scriptFormat) {
parameterDefinition = bpmnFactory.create('camunda:Script', {
scriptFormat: scriptFormat,
value: value
});
} else {
parameterValue = value;
}
return bpmnFactory.create('camunda:ExecutionListener', {
event: binding.event,
value: parameterValue,
script: parameterDefinition
});
}
module.exports.createCamundaExecutionListenerScript = createCamundaExecutionListenerScript;
/////////// helpers ////////////////////////////
/**
* Create properties for camunda:in and camunda:out types.
*/
function createCamundaInOutAttrs(binding, value) {
var properties = {};
// camunda:in source(Expression) target
if (binding.target) {
properties.target = binding.target;
if (binding.expression) {
properties.sourceExpression = value;
} else {
properties.source = value;
}
} else
// camunda:(in|out) variables local
if (binding.variables) {
properties.variables = 'all';
if (binding.variables === 'local') {
properties.local = true;
}
}
// camunda:out source(Expression) target
else {
properties.target = value;
[ 'source', 'sourceExpression' ].forEach(function(k) {
if (binding[k]) {
properties[k] = binding[k];
}
});
}
return properties;
}