fee8583b73b9ff61de34316a8ffaad872a9068b5
[sdc/sdc-workflow-designer.git] /
1 import inherits from 'inherits';
2
3 import ImplementationTypeHelper from 'bpmn-js-properties-panel/lib/helper/ImplementationTypeHelper';
4 import ServiceTaskDelegateProps from 'bpmn-js-properties-panel/lib/provider/camunda/parts/ServiceTaskDelegateProps';
5 import workflowImplementationType from './implementation/WorkflowImplementationType';
6 import workflowActivity from './implementation/WorkflowActivity';
7 import {
8     implementationType as implementationTypeConst,
9     serviceTaskEntries
10 } from './implementation/implementationConstants';
11 import Delegate from './implementation/Delegate';
12 import ResultVariable from './implementation/ResultVariable';
13
14 const getImplementationType = element => {
15     let implementationType = ImplementationTypeHelper.getImplementationType(
16         element
17     );
18
19     if (!implementationType || implementationType === 'expression') {
20         const bo = getBusinessObject(element);
21         if (bo) {
22             if (
23                 typeof bo.get(implementationTypeConst.ACTIVITY) !== 'undefined'
24             ) {
25                 return 'workflowActivity';
26             }
27         }
28     }
29
30     return implementationType;
31 };
32
33 const hideResultVariable = element => {
34     return getImplementationType(element) !== 'expression';
35 };
36
37 const getBusinessObject = element =>
38     ImplementationTypeHelper.getServiceTaskLikeBusinessObject(element);
39
40 const isDmnCapable = element => ImplementationTypeHelper.isDmnCapable(element);
41
42 const isExternalCapable = element =>
43     ImplementationTypeHelper.isExternalCapable(element);
44
45 const isServiceTaskLike = element =>
46     ImplementationTypeHelper.isServiceTaskLike(element);
47
48 function WorkflowServiceTaskDelegateProps(
49     group,
50     element,
51     config,
52     bpmnFactory,
53     translate
54 ) {
55     ServiceTaskDelegateProps.call(this, group, element, bpmnFactory, translate);
56
57     if (isServiceTaskLike(getBusinessObject(element))) {
58         group.entries = group.entries.filter(
59             entry =>
60                 entry.id !== serviceTaskEntries.IMPLEMENTATION &&
61                 entry.id !== serviceTaskEntries.DELEGATE &&
62                 entry.id !== serviceTaskEntries.RESULT_VARIABLE
63         );
64
65         group.entries = group.entries.concat(
66             workflowImplementationType(
67                 element,
68                 bpmnFactory,
69                 {
70                     getBusinessObject: getBusinessObject,
71                     getImplementationType: getImplementationType,
72                     hasDmnSupport: isDmnCapable(element),
73                     hasExternalSupport: isExternalCapable(
74                         getBusinessObject(element)
75                     ),
76                     hasServiceTaskLikeSupport: true
77                 },
78                 translate
79             )
80         );
81         group.entries = group.entries.concat(
82             workflowActivity(
83                 element,
84                 config,
85                 bpmnFactory,
86                 {
87                     getBusinessObject: getBusinessObject,
88                     getImplementationType: getImplementationType
89                 },
90                 translate
91             )
92         );
93
94         group.entries = group.entries.concat(
95             Delegate(
96                 element,
97                 bpmnFactory,
98                 {
99                     getBusinessObject: getBusinessObject,
100                     getImplementationType: getImplementationType
101                 },
102                 translate
103             )
104         );
105
106         group.entries = group.entries.concat(
107             ResultVariable(
108                 element,
109                 bpmnFactory,
110                 {
111                     getBusinessObject: getBusinessObject,
112                     getImplementationType: getImplementationType,
113                     hideResultVariable: hideResultVariable
114                 },
115                 translate
116             )
117         );
118     }
119 }
120
121 inherits(WorkflowServiceTaskDelegateProps, ServiceTaskDelegateProps);
122
123 export default WorkflowServiceTaskDelegateProps;