50d53b563ffa9b61cfcc45923dd95b238332f2a4
[sdc/sdc-workflow-designer.git] /
1 import entryFactory from 'bpmn-js-properties-panel/lib/factory/EntryFactory';
2 import cmdHelper from 'bpmn-js-properties-panel/lib/helper/CmdHelper';
3 import {
4     implementationType,
5     IMPLEMENTATION_TYPE_VALUE,
6     SERVICE_TASK_NAME
7 } from './implementationConstants';
8
9 import InputOutputUpdater from './InputOutputUpdater';
10
11 const workflowActivity = (element, config, bpmnFactory, options, translate) => {
12     const { getImplementationType, getBusinessObject } = options;
13
14     const isWorkflowActivity = element =>
15         getImplementationType(element) === 'workflowActivity';
16
17     const workflowActivityEntry = entryFactory.selectBox({
18         id: 'activitySelect',
19         label: translate('Activity Spec'),
20         selectOptions: config.activities,
21         emptyParameter: true,
22         modelProperty: 'workflowActivity',
23
24         get: function(element) {
25             var bo = getBusinessObject(element);
26             const value = bo.get(implementationType.ACTIVITY);
27             const activityValue =
28                 value && value.indexOf(IMPLEMENTATION_TYPE_VALUE) > -1
29                     ? value.substr(IMPLEMENTATION_TYPE_VALUE.length)
30                     : '';
31
32             return {
33                 workflowActivity: activityValue
34             };
35         },
36
37         set: function(element, values) {
38             var bo = getBusinessObject(element);
39
40             const commands = [];
41             const dataForUpdate = {};
42
43             const activityInputsOutputs = config.getActivityInputsOutputs(
44                 values.workflowActivity
45             );
46
47             dataForUpdate[
48                 implementationType.ACTIVITY
49             ] = `${IMPLEMENTATION_TYPE_VALUE}${values.workflowActivity}`;
50
51             dataForUpdate[implementationType.EXPRESSION] =
52                 implementationType.EXPRESSION_VALUE;
53
54             dataForUpdate[SERVICE_TASK_NAME] = values.workflowActivity;
55
56             commands.push(
57                 cmdHelper.updateBusinessObject(element, bo, dataForUpdate)
58             );
59             return [
60                 ...commands,
61                 ...InputOutputUpdater({
62                     element,
63                     bo,
64                     bpmnFactory,
65                     activityInputsOutputs,
66                     commands
67                 })
68             ];
69         },
70
71         validate: function(element, values) {
72             return isWorkflowActivity(element) && !values.workflowActivity
73                 ? { workflowActivity: 'Must provide a value' }
74                 : {};
75         },
76
77         hidden: function(element) {
78             return !isWorkflowActivity(element);
79         }
80     });
81
82     return [workflowActivityEntry];
83 };
84
85 export default workflowActivity;