bc87135763b9d4741fcd7fc7be9dcf4238542d18
[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             workflowActivity(
67                 element,
68                 config,
69                 bpmnFactory,
70                 {
71                     getBusinessObject: getBusinessObject,
72                     getImplementationType: getImplementationType
73                 },
74                 translate
75             )
76         );
77
78         group.entries = group.entries.concat(
79             Delegate(
80                 element,
81                 bpmnFactory,
82                 {
83                     getBusinessObject: getBusinessObject,
84                     getImplementationType: getImplementationType
85                 },
86                 translate
87             )
88         );
89
90         group.entries = group.entries.concat(
91             ResultVariable(
92                 element,
93                 bpmnFactory,
94                 {
95                     getBusinessObject: getBusinessObject,
96                     getImplementationType: getImplementationType,
97                     hideResultVariable: hideResultVariable
98                 },
99                 translate
100             )
101         );
102         group.entries = group.entries.concat(
103             workflowImplementationType(
104                 element,
105                 bpmnFactory,
106                 {
107                     getBusinessObject: getBusinessObject,
108                     getImplementationType: getImplementationType,
109                     hasDmnSupport: isDmnCapable(element),
110                     hasExternalSupport: isExternalCapable(
111                         getBusinessObject(element)
112                     ),
113                     hasServiceTaskLikeSupport: true
114                 },
115                 translate
116             )
117         );
118     }
119 }
120
121 inherits(WorkflowServiceTaskDelegateProps, ServiceTaskDelegateProps);
122
123 export default WorkflowServiceTaskDelegateProps;