123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251 |
- 'use strict';
- var assign = require('lodash/assign');
- /**
- * 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('activiti:Script', {
- scriptFormat: scriptFormat,
- value: value
- });
- } else {
- parameterValue = value;
- }
- return bpmnFactory.create('activiti: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('activiti:Script', {
- scriptFormat: scriptFormat,
- value: binding.source
- });
- } else {
- parameterValue = binding.source;
- }
- return bpmnFactory.create('activiti:OutputParameter', {
- name: value,
- value: parameterValue,
- definition: parameterDefinition
- });
- }
- module.exports.createOutputParameter = createOutputParameter;
- /**
- * Create activiti property from the given binding.
- *
- * @param {PropertyBinding} binding
- * @param {String} value
- * @param {BpmnFactory} bpmnFactory
- *
- * @return {ModdleElement}
- */
- function createActivitiProperty(binding, value, bpmnFactory) {
- return bpmnFactory.create('activiti:Property', {
- name: binding.name,
- value: value || ''
- });
- }
- module.exports.createActivitiProperty = createActivitiProperty;
- /**
- * Create activiti:in element from given binding.
- *
- * @param {PropertyBinding} binding
- * @param {String} value
- * @param {BpmnFactory} bpmnFactory
- *
- * @return {ModdleElement}
- */
- function createActivitiIn(binding, value, bpmnFactory) {
- var properties = createActivitiInOutAttrs(binding, value);
- return bpmnFactory.create('activiti:In', properties);
- }
- module.exports.createActivitiIn = createActivitiIn;
- /**
- * Create activiti:in with businessKey element from given binding.
- *
- * @param {PropertyBinding} binding
- * @param {String} value
- * @param {BpmnFactory} bpmnFactory
- *
- * @return {ModdleElement}
- */
- function createActivitiInWithBusinessKey(binding, value, bpmnFactory) {
- return bpmnFactory.create('activiti:In', {
- businessKey: value
- });
- }
- module.exports.createActivitiInWithBusinessKey = createActivitiInWithBusinessKey;
- /**
- * Create activiti:out element from given binding.
- *
- * @param {PropertyBinding} binding
- * @param {String} value
- * @param {BpmnFactory} bpmnFactory
- *
- * @return {ModdleElement}
- */
- function createActivitiOut(binding, value, bpmnFactory) {
- var properties = createActivitiInOutAttrs(binding, value);
- return bpmnFactory.create('activiti:Out', properties);
- }
- module.exports.createActivitiOut = createActivitiOut;
- /**
- * Create activiti:executionListener element containing an inline script from given binding.
- *
- * @param {PropertyBinding} binding
- * @param {String} value
- * @param {BpmnFactory} bpmnFactory
- *
- * @return {ModdleElement}
- */
- function createActivitiExecutionListenerScript(binding, value, bpmnFactory) {
- var scriptFormat = binding.scriptFormat,
- parameterValue,
- parameterDefinition;
- if (scriptFormat) {
- parameterDefinition = bpmnFactory.create('activiti:Script', {
- scriptFormat: scriptFormat,
- value: value
- });
- } else {
- parameterValue = value;
- }
- return bpmnFactory.create('activiti:ExecutionListener', {
- event: binding.event,
- value: parameterValue,
- script: parameterDefinition
- });
- }
- module.exports.createActivitiExecutionListenerScript = createActivitiExecutionListenerScript;
- /**
- * Create activiti:field element containing string or expression from given binding.
- *
- * @param {PropertyBinding} binding
- * @param {String} value
- * @param {BpmnFactory} bpmnFactory
- *
- * @return {ModdleElement}
- */
- function createActivitiFieldInjection(binding, value, bpmnFactory) {
- var DEFAULT_PROPS = {
- 'string': undefined,
- 'expression': undefined,
- 'name': undefined
- };
- var props = assign({}, DEFAULT_PROPS);
- if (!binding.expression) {
- props.string = value;
- } else {
- props.expression = value;
- }
- props.name = binding.name;
- return bpmnFactory.create('activiti:Field', props);
- }
- module.exports.createActivitiFieldInjection = createActivitiFieldInjection;
- // helpers ////////////////////////////
- /**
- * Create properties for activiti:in and activiti:out types.
- */
- function createActivitiInOutAttrs(binding, value) {
- var properties = {};
- // activiti:in source(Expression) target
- if (binding.target) {
- properties.target = binding.target;
- if (binding.expression) {
- properties.sourceExpression = value;
- } else {
- properties.source = value;
- }
- } else
- // activiti:(in|out) variables local
- if (binding.variables) {
- properties.variables = 'all';
- if (binding.variables === 'local') {
- properties.local = true;
- }
- }
- // activiti:out source(Expression) target
- else {
- properties.target = value;
- [ 'source', 'sourceExpression' ].forEach(function(k) {
- if (binding[k]) {
- properties[k] = binding[k];
- }
- });
- }
- return properties;
- }
|