aboutsummaryrefslogtreecommitdiffstats
path: root/sdc-workflow-designer-ui/src/main/frontend/src/features/version/composition/custom-properties-provider/provider/camunda/parts/implementation/WorkflowActivity.js
diff options
context:
space:
mode:
Diffstat (limited to 'sdc-workflow-designer-ui/src/main/frontend/src/features/version/composition/custom-properties-provider/provider/camunda/parts/implementation/WorkflowActivity.js')
-rw-r--r--sdc-workflow-designer-ui/src/main/frontend/src/features/version/composition/custom-properties-provider/provider/camunda/parts/implementation/WorkflowActivity.js89
1 files changed, 89 insertions, 0 deletions
diff --git a/sdc-workflow-designer-ui/src/main/frontend/src/features/version/composition/custom-properties-provider/provider/camunda/parts/implementation/WorkflowActivity.js b/sdc-workflow-designer-ui/src/main/frontend/src/features/version/composition/custom-properties-provider/provider/camunda/parts/implementation/WorkflowActivity.js
new file mode 100644
index 00000000..6616f6a4
--- /dev/null
+++ b/sdc-workflow-designer-ui/src/main/frontend/src/features/version/composition/custom-properties-provider/provider/camunda/parts/implementation/WorkflowActivity.js
@@ -0,0 +1,89 @@
+import entryFactory from 'bpmn-js-properties-panel/lib/factory/EntryFactory';
+import cmdHelper from 'bpmn-js-properties-panel/lib/helper/CmdHelper';
+import {
+ implementationType,
+ IMPLEMENTATION_TYPE_VALUE,
+ SERVICE_TASK_NAME
+} from './implementationConstants';
+
+import InputOutputUpdater from './InputOutputUpdater';
+
+const workflowActivity = (element, config, bpmnFactory, options, translate) => {
+ const { getImplementationType, getBusinessObject } = options;
+
+ const isWorkflowActivity = element =>
+ getImplementationType(element) === 'workflowActivity';
+
+ const workflowActivityEntry = entryFactory.selectBox({
+ id: 'activitySelect',
+ label: translate('Activity Spec'),
+ selectOptions: config.activities,
+ emptyParameter: true,
+ modelProperty: 'workflowActivity',
+
+ get: function(element) {
+ var bo = getBusinessObject(element);
+ const value = bo.get(implementationType.ACTIVITY);
+ const activityValue =
+ value && value.indexOf(IMPLEMENTATION_TYPE_VALUE) > -1
+ ? value.substr(IMPLEMENTATION_TYPE_VALUE.length)
+ : '';
+
+ return {
+ workflowActivity: activityValue
+ };
+ },
+
+ set: function(element, values) {
+ var bo = getBusinessObject(element);
+
+ const commands = [];
+ const dataForUpdate = {};
+
+ const activityInputsOutputs = config.getActivityInputsOutputs(
+ values.workflowActivity
+ );
+
+ dataForUpdate[
+ implementationType.ACTIVITY
+ ] = `${IMPLEMENTATION_TYPE_VALUE}${values.workflowActivity}`;
+
+ dataForUpdate[implementationType.EXPRESSION] =
+ implementationType.EXPRESSION_VALUE;
+
+ dataForUpdate[SERVICE_TASK_NAME] = values.workflowActivity;
+
+ commands.push(
+ cmdHelper.updateBusinessObject(element, bo, dataForUpdate)
+ );
+ return [
+ ...commands,
+ ...InputOutputUpdater({
+ element,
+ bo,
+ bpmnFactory,
+ activityInputsOutputs,
+ commands
+ })
+ ];
+ },
+
+ validate: function(element, values) {
+ const hasErrors =
+ isWorkflowActivity(element) && !values.workflowActivity;
+ config.validationUpdate(element, !hasErrors);
+
+ return hasErrors
+ ? { workflowActivity: 'Must provide a value' }
+ : {};
+ },
+
+ hidden: function(element) {
+ return !isWorkflowActivity(element);
+ }
+ });
+
+ return [workflowActivityEntry];
+};
+
+export default workflowActivity;