aboutsummaryrefslogtreecommitdiffstats
path: root/workflow-designer-ui/src/main/frontend/src/features/version/composition/custom-properties-provider/provider/camunda/parts/WorkflowServiceTaskDelegateProps.js
blob: fee8583b73b9ff61de34316a8ffaad872a9068b5 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
import inherits from 'inherits';

import ImplementationTypeHelper from 'bpmn-js-properties-panel/lib/helper/ImplementationTypeHelper';
import ServiceTaskDelegateProps from 'bpmn-js-properties-panel/lib/provider/camunda/parts/ServiceTaskDelegateProps';
import workflowImplementationType from './implementation/WorkflowImplementationType';
import workflowActivity from './implementation/WorkflowActivity';
import {
    implementationType as implementationTypeConst,
    serviceTaskEntries
} from './implementation/implementationConstants';
import Delegate from './implementation/Delegate';
import ResultVariable from './implementation/ResultVariable';

const getImplementationType = element => {
    let implementationType = ImplementationTypeHelper.getImplementationType(
        element
    );

    if (!implementationType || implementationType === 'expression') {
        const bo = getBusinessObject(element);
        if (bo) {
            if (
                typeof bo.get(implementationTypeConst.ACTIVITY) !== 'undefined'
            ) {
                return 'workflowActivity';
            }
        }
    }

    return implementationType;
};

const hideResultVariable = element => {
    return getImplementationType(element) !== 'expression';
};

const getBusinessObject = element =>
    ImplementationTypeHelper.getServiceTaskLikeBusinessObject(element);

const isDmnCapable = element => ImplementationTypeHelper.isDmnCapable(element);

const isExternalCapable = element =>
    ImplementationTypeHelper.isExternalCapable(element);

const isServiceTaskLike = element =>
    ImplementationTypeHelper.isServiceTaskLike(element);

function WorkflowServiceTaskDelegateProps(
    group,
    element,
    config,
    bpmnFactory,
    translate
) {
    ServiceTaskDelegateProps.call(this, group, element, bpmnFactory, translate);

    if (isServiceTaskLike(getBusinessObject(element))) {
        group.entries = group.entries.filter(
            entry =>
                entry.id !== serviceTaskEntries.IMPLEMENTATION &&
                entry.id !== serviceTaskEntries.DELEGATE &&
                entry.id !== serviceTaskEntries.RESULT_VARIABLE
        );

        group.entries = group.entries.concat(
            workflowImplementationType(
                element,
                bpmnFactory,
                {
                    getBusinessObject: getBusinessObject,
                    getImplementationType: getImplementationType,
                    hasDmnSupport: isDmnCapable(element),
                    hasExternalSupport: isExternalCapable(
                        getBusinessObject(element)
                    ),
                    hasServiceTaskLikeSupport: true
                },
                translate
            )
        );
        group.entries = group.entries.concat(
            workflowActivity(
                element,
                config,
                bpmnFactory,
                {
                    getBusinessObject: getBusinessObject,
                    getImplementationType: getImplementationType
                },
                translate
            )
        );

        group.entries = group.entries.concat(
            Delegate(
                element,
                bpmnFactory,
                {
                    getBusinessObject: getBusinessObject,
                    getImplementationType: getImplementationType
                },
                translate
            )
        );

        group.entries = group.entries.concat(
            ResultVariable(
                element,
                bpmnFactory,
                {
                    getBusinessObject: getBusinessObject,
                    getImplementationType: getImplementationType,
                    hideResultVariable: hideResultVariable
                },
                translate
            )
        );
    }
}

inherits(WorkflowServiceTaskDelegateProps, ServiceTaskDelegateProps);

export default WorkflowServiceTaskDelegateProps;