}
componentDidMount() {
- const { composition, activities } = this.props;
+ const { composition, activities, inputOutput } = this.props;
this.modeler = new CustomModeler({
propertiesPanel: {
},
workflow: {
activities: activities,
- onChange: this.onActivityChanged
+ onChange: this.onActivityChanged,
+ workflowInputOutput: inputOutput
}
});
const selectedActivity = this.props.activities.find(
el => el.name === selectedValue
);
+ const config = this.modeler.get('config');
if (selectedActivity) {
const inputsOutputs = {
inputs: selectedActivity.inputs,
outputs: selectedActivity.outputs
};
+ config.workflow.selectedActivityInputs = inputsOutputs;
+ this.modeler.config = config;
setElementInputsOutputs(
bo,
inputsOutputs,
- this.modeler.get('moddle')
+ this.modeler.get('moddle'),
+ true
);
}
};
});
}
-export function setElementInputsOutputs(businessObject, inputOutput, moddle) {
+export function setElementInputsOutputs(
+ businessObject,
+ inputOutput,
+ moddle,
+ cleanInputsOutpus
+) {
const { inputs = [], outputs = [] } = inputOutput;
if (!businessObject.extensionElements) {
const processInputs = updatedData(
moddle,
inputs,
- (existingInputOutput && existingInputOutput.inputParameters) || [],
+ cleanInputsOutpus
+ ? []
+ : (existingInputOutput && existingInputOutput.inputParameters) ||
+ [],
bpmnElementsTypes.INPUT_PARAMETER
);
const processOutputs = updatedData(
moddle,
outputs,
- (existingInputOutput && existingInputOutput.outputParameters) || [],
+ cleanInputsOutpus
+ ? []
+ : (existingInputOutput && existingInputOutput.outputParameters) ||
+ [],
bpmnElementsTypes.OUTPUT_PARAMETER
);
"isAttr": true,
"type": "String"
},
+ {
+ "name": "workflowSource",
+ "isAttr": true,
+ "type": "String"
+ },
+ {
+ "name": "workflowTarget",
+ "isAttr": true,
+ "type": "String"
+ },
{
"name": "value",
"isBody": true,
element,
bpmnFactory,
elementRegistry,
- translate
+ translate,
+ config
)
};
tabs.unshift(inputOutputTab);
-'use strict';
-
import inputOutputParameter from './implementation/InputOutputParameter';
import assign from 'lodash.assign';
-module.exports = function(group, element, bpmnFactory, options, translate) {
+export default function(
+ group,
+ element,
+ bpmnFactory,
+ options,
+ translate,
+ config
+) {
group.entries = group.entries.concat(
inputOutputParameter(
element,
bpmnFactory,
assign({}, options),
- translate
+ translate,
+ config
)
);
-};
+}
'use strict';
-var inputOutput = require('./implementation/InputOutput');
+import inputOutput from './implementation/InputOutput';
-module.exports = function(group, element, bpmnFactory, translate) {
- var inputOutputEntry = inputOutput(element, bpmnFactory, {}, translate);
+export default function(group, element, bpmnFactory, translate) {
+ const inputOutputEntry = inputOutput(element, bpmnFactory, {}, translate);
group.entries = group.entries.concat(inputOutputEntry.entries);
return {
getSelectedParameter: inputOutputEntry.getSelectedParameter
};
-};
+}
-let inputOutputParameter = require('./InputOutputParameterProps');
-let inputOutput = require('./InputOutputProps');
-var is = require('bpmn-js/lib/util/ModelUtil').is;
+import inputOutputParameter from './InputOutputParameterProps';
+import inputOutput from './InputOutputProps';
+const is = require('bpmn-js/lib/util/ModelUtil').is;
var getInputOutputParameterLabel = function(param, translate) {
if (is(param, 'camunda:InputParameter')) {
element,
bpmnFactory,
elementRegistry,
- translate
+ translate,
+ config
) {
var inputOutputGroup = {
id: 'input-output',
bpmnFactory,
translate
);
-
var inputOutputParameterGroup = {
id: 'input-output-parameter',
entries: [],
element,
bpmnFactory,
options,
- translate
+ translate,
+ config
);
return [inputOutputGroup, inputOutputParameterGroup];
-'use strict';
+import inputOutputHelper from './InputOutputHelper';
var getBusinessObject = require('bpmn-js/lib/util/ModelUtil').getBusinessObject;
var elementHelper = require('bpmn-js-properties-panel/lib/helper/ElementHelper'),
extensionElementsHelper = require('bpmn-js-properties-panel/lib/helper/ExtensionElementsHelper'),
- inputOutputHelper = require('./InputOutputHelper'),
cmdHelper = require('bpmn-js-properties-panel/lib/helper/CmdHelper');
var extensionElementsEntry = require('bpmn-js-properties-panel/lib/provider/camunda/parts/implementation//ExtensionElements');
);
}
-module.exports = function(element, bpmnFactory, options, translate) {
+export default function(element, bpmnFactory, options, translate) {
var TYPE_LABEL = {
'camunda:Map': translate('Map'),
'camunda:List': translate('List'),
name: value
});
- console.log(newElem);
-
commands.push(
cmdHelper.addElementsTolist(element, inputOutput, prop, [
newElem
}
return result;
-};
+}
-'use strict';
-
var ModelUtil = require('bpmn-js/lib/util/ModelUtil'),
is = ModelUtil.is,
getBusinessObject = ModelUtil.getBusinessObject;
var InputOutputHelper = {};
-module.exports = InputOutputHelper;
-
function getElements(bo, type, prop) {
var elems = extensionElementsHelper.getExtensionElements(bo, type) || [];
return !prop ? elems : (elems[0] || {})[prop] || [];
element.type !== 'bpmn:Process'
);
};
+
+export default InputOutputHelper;
-'use strict';
+import inputOutputHelper from './InputOutputHelper';
var is = require('bpmn-js/lib/util/ModelUtil').is;
var elementHelper = require('bpmn-js-properties-panel/lib/helper/ElementHelper'),
- inputOutputHelper = require('./InputOutputHelper'),
cmdHelper = require('bpmn-js-properties-panel/lib/helper/CmdHelper'),
utils = require('bpmn-js-properties-panel/lib/Utils');
return inputOutputHelper.isInputOutputSupported(element, insideConnector);
}
-module.exports = function(element, bpmnFactory, options, translate) {
+export default function(element, bpmnFactory, options, translate, config) {
var typeInfo = {
'camunda:Map': {
value: 'map',
})
);
+ //workflow source parameter (type = text) ///////////////////////////////////////////////////////
+ const workflowInputs = config.workflowInputOutput.inputs.map(item => ({
+ name: item.name,
+ value: item.name
+ }));
+
+ const workflowOutputs = config.workflowInputOutput.outputs.map(item => ({
+ name: item.name,
+ value: item.name
+ }));
+
+ const workflowSources = [
+ { name: '', value: '' },
+ ...workflowInputs,
+ ...workflowOutputs
+ ];
+
+ entries.push(
+ entryFactory.selectBox({
+ id: 'parameter-workflowSource',
+ label: 'Workflow Source Parameter',
+ selectOptions: workflowSources,
+ modelProperty: 'workflowSource',
+
+ get: function(element, node) {
+ return {
+ workflowSource: (getSelected(element, node) || {})
+ .workflowSource
+ };
+ },
+
+ set: function(element, values, node) {
+ var properties = {
+ workflowSource: undefined
+ };
+
+ properties.workflowSource = values.workflowSource;
+ var param = getSelected(element, node);
+ values.workflowSource = values.workflowSource || undefined;
+
+ return cmdHelper.updateBusinessObject(element, param, values);
+ },
+
+ hidden: function(element, node) {
+ var bo = getSelected(element, node);
+ return !(
+ bo &&
+ bo.$type &&
+ bo.$type === 'camunda:InputParameter'
+ );
+ }
+ })
+ );
+
+ //workflow target parameter (type = text) ///////////////////////////////////////////////////////
+ entries.push(
+ entryFactory.selectBox({
+ id: 'parameter-workflowTarget',
+ label: 'Workflow Target Parameter',
+ selectOptions: workflowSources,
+ modelProperty: 'workflowTarget',
+
+ get: function(element, node) {
+ return {
+ workflowTarget: (getSelected(element, node) || {})
+ .workflowTarget
+ };
+ },
+
+ set: function(element, values, node) {
+ var properties = {
+ workflowTarget: undefined
+ };
+
+ properties.workflowTarget = values.workflowTarget;
+ var param = getSelected(element, node);
+ values.workflowTarget = values.workflowTarget || undefined;
+
+ return cmdHelper.updateBusinessObject(element, param, values);
+ },
+
+ hidden: function(element, node) {
+ var bo = getSelected(element, node);
+ return !(
+ bo &&
+ bo.$type &&
+ bo.$type === 'camunda:OutputParameter'
+ );
+ }
+ })
+ );
+
return entries;
-};
+}
ACTIVITY_PROPS[implementationType] = undefined;
-module.exports = function(element, bpmnFactory, options, translate) {
+export default function(element, bpmnFactory, options, translate) {
var DEFAULT_OPTIONS = [
{ value: 'class', name: translate('Java Class') },
{ value: 'expression', name: translate('Expression') },
);
return entries;
-};
+}
-<?xml version="1.0" encoding="UTF-8"?>
+export default `<?xml version="1.0" encoding="UTF-8"?>
<bpmn2:definitions xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:bpmn2="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xsi:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd" id="sample-diagram" targetNamespace="http://bpmn.io/schema/bpmn">
<bpmn2:process id="Process_1" isExecutable="false">
</bpmn2:process>
<bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="Process_1">
</bpmndi:BPMNPlane>
</bpmndi:BPMNDiagram>
-</bpmn2:definitions>
+</bpmn2:definitions>`;
+
this.props.handleSearch(value);
};
- handleNameChange = (key, isBlur = false) => value => {
- let name = isBlur ? value.target.value : value;
- name = name.replace(/\s+/g, ' ');
- name = isBlur
- ? name.replace(/^\s+|\s+$/g, '')
- : name.replace(/^\s+/g, '');
-
+ handleNameChange = key => name => {
this.props.handleNameChange(name, key);
};
nameErrorMessage={errorMessage}
dataTestId="wf-input-output-row"
handleNameChange={this.handleNameChange(i)}
- handleNameBlur={this.handleNameChange(i, true)}
handleTypeChange={this.handleTypeChange(i)}
handleMandatoryChange={this.handleMandatoryChange(i)}
handleRemoveClick={this.handleRemoveClick(i)}
const groupKey = value.name;
if (groupKey) {
- if (!/^[\w\s\d]+$/.test(groupKey)) {
+ if (!/^[\w\d]+$/.test(groupKey)) {
result.push(key);
}
}
`${baseUrl(workflowId)}/${versionId}/artifact`
);
},
- updateVersionArtifact: ({ workflowId, versionId, payload }) => {
+ updateVersionArtifact: ({
+ workflowId,
+ versionId,
+ workflowName,
+ versionName,
+ payload
+ }) => {
let formData = new FormData();
var blob = new Blob([payload], { type: 'text/xml' });
- formData.append('fileToUpload', blob);
+ formData.append(
+ 'fileToUpload',
+ blob,
+ `${workflowName}-${versionName}.bpmn`
+ );
return RestfulAPIUtil.put(
`${baseUrl(workflowId)}/${versionId}/artifact`,
};
sendSaveParamsToServer = () => {
- const { savedParams, saveParamsToServer, workflowId } = this.props;
- saveParamsToServer({ params: savedParams, workflowId });
+ const {
+ savedParams,
+ saveParamsToServer,
+ workflowId,
+ workflowName
+ } = this.props;
+ saveParamsToServer({ params: savedParams, workflowId, workflowName });
};
certifyVersion = () => {
try {
const {
workflowId,
+ workflowName,
params: { composition, ...versionData }
} = action.payload;
+
yield call(versionApi.updateVersion, {
workflowId,
params: versionData
if (composition) {
yield call(versionApi.updateVersionArtifact, {
workflowId,
+ workflowName,
+ versionName: versionData.name.split('.').join('_'),
versionId: versionData.id,
payload: composition
});