camunda-bpmn-js 0.12.1 → 0.13.0-drilldown.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +23 -0
- package/dist/assets/base-modeler.css +2 -1
- package/dist/assets/bpmn-js.css +113 -0
- package/dist/assets/camunda-platform-modeler.css +2 -1
- package/dist/assets/diagram-js.css +82 -78
- package/dist/assets/element-templates.css +75 -0
- package/dist/assets/properties-panel.css +115 -18
- package/dist/base-modeler.development.js +37641 -40582
- package/dist/base-modeler.production.min.js +8 -3
- package/dist/camunda-cloud-modeler.development.js +41845 -42826
- package/dist/camunda-cloud-modeler.production.min.js +8 -3
- package/dist/camunda-platform-modeler.development.js +51089 -53714
- package/dist/camunda-platform-modeler.production.min.js +8 -3
- package/lib/base/Modeler.js +5 -9
- package/lib/camunda-cloud/Modeler.js +16 -3
- package/lib/camunda-cloud/features/drilldown/index.js +3 -0
- package/lib/camunda-cloud/features/modeling/behavior/CleanUpAssignmentDefinitionBehavior.js +78 -0
- package/lib/camunda-cloud/features/modeling/behavior/CreateZeebeCallActivityBehavior.js +2 -2
- package/lib/camunda-cloud/features/modeling/behavior/FormDefinitionBehavior.js +2 -2
- package/lib/camunda-cloud/features/modeling/behavior/index.js +3 -0
- package/lib/camunda-cloud/helper/CalledElementHelper.js +1 -1
- package/lib/camunda-cloud/helper/ElementHelper.js +18 -0
- package/lib/camunda-cloud/helper/ExtensionElementsHelper.js +17 -0
- package/lib/camunda-cloud/helper/FormsHelper.js +5 -5
- package/lib/camunda-cloud/helper/InputOutputHelper.js +2 -6
- package/lib/camunda-cloud/helper/Utils.js +10 -0
- package/lib/camunda-cloud/helper/ZeebeServiceTaskHelper.js +22 -5
- package/lib/camunda-platform/Modeler.js +7 -3
- package/package.json +11 -10
- package/styles/base-modeler.css +2 -1
- package/styles/camunda-platform-modeler.css +2 -1
- package/lib/camunda-cloud/features/properties-provider/ZeebePropertiesProvider.js +0 -201
- package/lib/camunda-cloud/features/properties-provider/index.js +0 -11
- package/lib/camunda-cloud/features/properties-provider/parts/CallActivityProps.js +0 -90
- package/lib/camunda-cloud/features/properties-provider/parts/ErrorProps.js +0 -13
- package/lib/camunda-cloud/features/properties-provider/parts/FormProps.js +0 -14
- package/lib/camunda-cloud/features/properties-provider/parts/HeadersProps.js +0 -52
- package/lib/camunda-cloud/features/properties-provider/parts/InputOutputProps.js +0 -8
- package/lib/camunda-cloud/features/properties-provider/parts/MessageProps.js +0 -51
- package/lib/camunda-cloud/features/properties-provider/parts/MultiInstanceProps.js +0 -25
- package/lib/camunda-cloud/features/properties-provider/parts/SequenceFlowProps.js +0 -149
- package/lib/camunda-cloud/features/properties-provider/parts/TaskDefinitionProps.js +0 -135
- package/lib/camunda-cloud/features/properties-provider/parts/TimerEventProps.js +0 -77
- package/lib/camunda-cloud/features/properties-provider/parts/implementation/ElementReferenceExtensionElementProperty.js +0 -110
- package/lib/camunda-cloud/features/properties-provider/parts/implementation/FormDefinition.js +0 -207
- package/lib/camunda-cloud/features/properties-provider/parts/implementation/Headers.js +0 -208
- package/lib/camunda-cloud/features/properties-provider/parts/implementation/InputOutput.js +0 -274
- package/lib/camunda-cloud/features/properties-provider/parts/implementation/InputOutputParameter.js +0 -147
- package/lib/camunda-cloud/features/properties-provider/parts/implementation/MultiInstanceLoopCharacteristics.js +0 -176
- package/lib/camunda-cloud/features/properties-provider/parts/implementation/OutputParameterToggle.js +0 -97
- package/lib/camunda-cloud/features/properties-provider/parts/implementation/TimerDurationDefinition.js +0 -69
- package/lib/camunda-cloud/features/properties-provider/parts/implementation/TimerEventDefinition.js +0 -132
|
@@ -1,135 +0,0 @@
|
|
|
1
|
-
import elementHelper from 'bpmn-js-properties-panel/lib/helper/ElementHelper';
|
|
2
|
-
|
|
3
|
-
import cmdHelper from 'bpmn-js-properties-panel/lib/helper/CmdHelper';
|
|
4
|
-
|
|
5
|
-
import {
|
|
6
|
-
getBusinessObject
|
|
7
|
-
} from 'bpmn-js/lib/util/ModelUtil';
|
|
8
|
-
|
|
9
|
-
import {
|
|
10
|
-
isZeebeServiceTask
|
|
11
|
-
} from '../../../helper/ZeebeServiceTaskHelper.js';
|
|
12
|
-
|
|
13
|
-
import entryFactory from 'bpmn-js-properties-panel/lib/factory/EntryFactory';
|
|
14
|
-
|
|
15
|
-
import extensionElementsHelper from 'bpmn-js-properties-panel/lib/helper/ExtensionElementsHelper';
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
export default function(group, element, bpmnFactory, translate) {
|
|
19
|
-
|
|
20
|
-
if (!isZeebeServiceTask(element)) {
|
|
21
|
-
return;
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
function getElements(bo, type, prop) {
|
|
25
|
-
const elems = extensionElementsHelper.getExtensionElements(bo, type);
|
|
26
|
-
return !prop ? elems : (elems[0] || {})[prop] || [];
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
function getTaskDefinition(element) {
|
|
30
|
-
const bo = getBusinessObject(element);
|
|
31
|
-
return (getElements(bo, 'zeebe:TaskDefinition') || [])[0];
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
group.entries.push(entryFactory.validationAwareTextField(translate, {
|
|
35
|
-
id: 'taskDefinitionType',
|
|
36
|
-
label: translate('Type'),
|
|
37
|
-
modelProperty: 'type',
|
|
38
|
-
|
|
39
|
-
getProperty: function(element, node) {
|
|
40
|
-
return (getTaskDefinition(element) || {}).type;
|
|
41
|
-
},
|
|
42
|
-
|
|
43
|
-
setProperty: function(element, values, node) {
|
|
44
|
-
const bo = getBusinessObject(element);
|
|
45
|
-
const commands = [];
|
|
46
|
-
|
|
47
|
-
// create extensionElements
|
|
48
|
-
let extensionElements = bo.get('extensionElements');
|
|
49
|
-
if (!extensionElements) {
|
|
50
|
-
extensionElements = elementHelper.createElement('bpmn:ExtensionElements', { values: [] }, bo, bpmnFactory);
|
|
51
|
-
commands.push(cmdHelper.updateProperties(element, { extensionElements: extensionElements }));
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
// create taskDefinition
|
|
55
|
-
let taskDefinition = getTaskDefinition(element);
|
|
56
|
-
|
|
57
|
-
if (!taskDefinition) {
|
|
58
|
-
taskDefinition = elementHelper.createElement('zeebe:TaskDefinition', { }, extensionElements, bpmnFactory);
|
|
59
|
-
commands.push(cmdHelper.addAndRemoveElementsFromList(
|
|
60
|
-
element,
|
|
61
|
-
extensionElements,
|
|
62
|
-
'values',
|
|
63
|
-
'extensionElements',
|
|
64
|
-
[ taskDefinition ],
|
|
65
|
-
[]
|
|
66
|
-
));
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
commands.push(cmdHelper.updateBusinessObject(element, taskDefinition, values));
|
|
70
|
-
return commands;
|
|
71
|
-
},
|
|
72
|
-
|
|
73
|
-
validate: function(element, values) {
|
|
74
|
-
const bo = getTaskDefinition(element);
|
|
75
|
-
let validation = {};
|
|
76
|
-
if (bo) {
|
|
77
|
-
const {
|
|
78
|
-
type
|
|
79
|
-
} = values;
|
|
80
|
-
|
|
81
|
-
if (!type) {
|
|
82
|
-
validation = {
|
|
83
|
-
type: translate('Must have a type')
|
|
84
|
-
};
|
|
85
|
-
}
|
|
86
|
-
|
|
87
|
-
}
|
|
88
|
-
return validation;
|
|
89
|
-
}
|
|
90
|
-
}));
|
|
91
|
-
|
|
92
|
-
group.entries.push(entryFactory.textField(translate, {
|
|
93
|
-
id: 'taskDefinitionRetries',
|
|
94
|
-
label: translate('Retries'),
|
|
95
|
-
modelProperty: 'retries',
|
|
96
|
-
|
|
97
|
-
get: function(element) {
|
|
98
|
-
return {
|
|
99
|
-
retries: (getTaskDefinition(element) || {}).retries
|
|
100
|
-
};
|
|
101
|
-
},
|
|
102
|
-
|
|
103
|
-
set: function(element, values) {
|
|
104
|
-
const bo = getBusinessObject(element);
|
|
105
|
-
const commands = [];
|
|
106
|
-
|
|
107
|
-
// create extensionElements
|
|
108
|
-
let extensionElements = bo.get('extensionElements');
|
|
109
|
-
if (!extensionElements) {
|
|
110
|
-
extensionElements = elementHelper.createElement('bpmn:ExtensionElements', { values: [] }, bo, bpmnFactory);
|
|
111
|
-
commands.push(cmdHelper.updateProperties(element, { extensionElements: extensionElements }));
|
|
112
|
-
}
|
|
113
|
-
|
|
114
|
-
// create taskDefinition
|
|
115
|
-
let taskDefinition = getTaskDefinition(element);
|
|
116
|
-
|
|
117
|
-
if (!taskDefinition) {
|
|
118
|
-
taskDefinition = elementHelper.createElement('zeebe:TaskDefinition', { }, extensionElements, bpmnFactory);
|
|
119
|
-
commands.push(cmdHelper.addAndRemoveElementsFromList(
|
|
120
|
-
element,
|
|
121
|
-
extensionElements,
|
|
122
|
-
'values',
|
|
123
|
-
'extensionElements',
|
|
124
|
-
[ taskDefinition ],
|
|
125
|
-
[]
|
|
126
|
-
));
|
|
127
|
-
}
|
|
128
|
-
|
|
129
|
-
commands.push(cmdHelper.updateBusinessObject(element, taskDefinition, values));
|
|
130
|
-
return commands;
|
|
131
|
-
}
|
|
132
|
-
|
|
133
|
-
}));
|
|
134
|
-
|
|
135
|
-
}
|
|
@@ -1,77 +0,0 @@
|
|
|
1
|
-
import eventDefinitionHelper from 'bpmn-js-properties-panel/lib/helper/EventDefinitionHelper';
|
|
2
|
-
|
|
3
|
-
import {
|
|
4
|
-
getBusinessObject,
|
|
5
|
-
is
|
|
6
|
-
} from 'bpmn-js/lib/util/ModelUtil';
|
|
7
|
-
|
|
8
|
-
import {
|
|
9
|
-
isEventSubProcess
|
|
10
|
-
} from 'bpmn-js/lib/util/DiUtil';
|
|
11
|
-
|
|
12
|
-
import timerEventDefinitionImpl from './implementation/TimerEventDefinition';
|
|
13
|
-
|
|
14
|
-
import timerDurationDefinitionImpl from './implementation/TimerDurationDefinition';
|
|
15
|
-
|
|
16
|
-
export default function(group, element, bpmnFactory, translate) {
|
|
17
|
-
|
|
18
|
-
const timerEventDefinition = eventDefinitionHelper.getTimerEventDefinition(element);
|
|
19
|
-
|
|
20
|
-
const timerOptions = getTimerOptions(element);
|
|
21
|
-
|
|
22
|
-
if (!timerEventDefinition) {
|
|
23
|
-
return;
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
if (!timerOptions.length) {
|
|
27
|
-
return timerDurationDefinitionImpl(group, bpmnFactory, timerEventDefinition, translate);
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
timerEventDefinitionImpl(group, bpmnFactory, timerEventDefinition, timerOptions, translate);
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
// helper //////////
|
|
35
|
-
|
|
36
|
-
const cancelActivity = (element) => {
|
|
37
|
-
const bo = getBusinessObject(element);
|
|
38
|
-
return bo.cancelActivity;
|
|
39
|
-
};
|
|
40
|
-
|
|
41
|
-
const isInterrupting = (element) => {
|
|
42
|
-
const bo = getBusinessObject(element);
|
|
43
|
-
return bo.isInterrupting !== false;
|
|
44
|
-
};
|
|
45
|
-
|
|
46
|
-
const getTimerOptions = (element) => {
|
|
47
|
-
let timerOptions = [];
|
|
48
|
-
|
|
49
|
-
const isStartEvent = is(element, 'bpmn:StartEvent');
|
|
50
|
-
const isBoundaryEvent = is(element, 'bpmn:BoundaryEvent');
|
|
51
|
-
|
|
52
|
-
const hasEventSubprocessParent = isEventSubProcess(element.parent);
|
|
53
|
-
|
|
54
|
-
if (isBoundaryEvent || hasEventSubprocessParent) {
|
|
55
|
-
timerOptions = [
|
|
56
|
-
...timerOptions,
|
|
57
|
-
{ value: 'timeDuration', name: 'Duration' }
|
|
58
|
-
];
|
|
59
|
-
|
|
60
|
-
if (!cancelActivity(element) && !(hasEventSubprocessParent && isInterrupting(element))) {
|
|
61
|
-
timerOptions = [
|
|
62
|
-
...timerOptions,
|
|
63
|
-
{ value: 'timeCycle', name: 'Cycle' }
|
|
64
|
-
];
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
if (isStartEvent && !hasEventSubprocessParent) {
|
|
69
|
-
timerOptions = [
|
|
70
|
-
...timerOptions,
|
|
71
|
-
{ value: 'timeDate', name: 'Date' },
|
|
72
|
-
{ value: 'timeCycle', name: 'Cycle' }
|
|
73
|
-
];
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
return timerOptions;
|
|
77
|
-
};
|
|
@@ -1,110 +0,0 @@
|
|
|
1
|
-
import entryFactory from 'bpmn-js-properties-panel/lib/factory/EntryFactory';
|
|
2
|
-
|
|
3
|
-
import cmdHelper from 'bpmn-js-properties-panel/lib/helper/CmdHelper';
|
|
4
|
-
|
|
5
|
-
import elementHelper from 'bpmn-js-properties-panel/lib/helper/ElementHelper';
|
|
6
|
-
|
|
7
|
-
import extensionElementsHelper from 'bpmn-js-properties-panel/lib/helper/ExtensionElementsHelper';
|
|
8
|
-
|
|
9
|
-
import {
|
|
10
|
-
getBusinessObject
|
|
11
|
-
} from 'bpmn-js/lib/util/ModelUtil';
|
|
12
|
-
|
|
13
|
-
/**
|
|
14
|
-
* Create an entry to modify a property of an element which
|
|
15
|
-
* is referenced by a event definition.
|
|
16
|
-
*
|
|
17
|
-
* @param {djs.model.Base} element
|
|
18
|
-
* @param {ModdleElement} definition
|
|
19
|
-
* @param {BpmnFactory} bpmnFactory
|
|
20
|
-
* @param {Function} translate
|
|
21
|
-
* @param {Object} options
|
|
22
|
-
* @param {string} options.id the id of the entry
|
|
23
|
-
* @param {string} options.label the label of the entry
|
|
24
|
-
* @param {string} options.referenceProperty the name of referencing property
|
|
25
|
-
* @param {string} options.modelProperty the name of property to modify
|
|
26
|
-
* @param {string} options.extensionElement the name of the extensionElement to modify
|
|
27
|
-
* @param {string} options.shouldValidate a flag indicate whether to validate or not
|
|
28
|
-
*
|
|
29
|
-
* @return {Array<Object>} return an array containing the entries
|
|
30
|
-
*/
|
|
31
|
-
export default function(element, definition, bpmnFactory, translate, options) {
|
|
32
|
-
|
|
33
|
-
const id = options.id || 'element-property';
|
|
34
|
-
const label = options.label;
|
|
35
|
-
const referenceProperty = options.referenceProperty;
|
|
36
|
-
const modelProperty = options.modelProperty || 'name';
|
|
37
|
-
const extensionElementKey = options.extensionElement || 'zeebe:Subscription';
|
|
38
|
-
const shouldValidate = options.shouldValidate || false;
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
function getElements(bo, type, prop) {
|
|
42
|
-
const elems = extensionElementsHelper.getExtensionElements(bo, type);
|
|
43
|
-
return !prop ? elems : (elems[0] || {})[prop] || [];
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
function getExtensionElement(element) {
|
|
47
|
-
const bo = getBusinessObject(element);
|
|
48
|
-
return (getElements(bo, extensionElementKey) || [])[0];
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
const entry = entryFactory.textField(translate, {
|
|
52
|
-
id: id,
|
|
53
|
-
label: label,
|
|
54
|
-
modelProperty: modelProperty,
|
|
55
|
-
|
|
56
|
-
get: function(element, node) {
|
|
57
|
-
const reference = definition.get(referenceProperty);
|
|
58
|
-
const props = {};
|
|
59
|
-
props[modelProperty] = reference && (getExtensionElement(reference) || {})[modelProperty];
|
|
60
|
-
return props;
|
|
61
|
-
},
|
|
62
|
-
|
|
63
|
-
set: function(element, values, node) {
|
|
64
|
-
|
|
65
|
-
const reference = definition.get(referenceProperty);
|
|
66
|
-
const bo = getBusinessObject(reference);
|
|
67
|
-
reference.businessObject = bo;
|
|
68
|
-
const commands = [];
|
|
69
|
-
let extensionElements = bo.get('extensionElements');
|
|
70
|
-
if (!extensionElements) {
|
|
71
|
-
extensionElements = elementHelper.createElement('bpmn:ExtensionElements', { values: [] }, bo, bpmnFactory);
|
|
72
|
-
commands.push(cmdHelper.updateProperties(reference, { extensionElements: extensionElements }));
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
let extensionElement = getExtensionElement(reference);
|
|
76
|
-
|
|
77
|
-
if (!extensionElement) {
|
|
78
|
-
extensionElement = elementHelper.createElement(extensionElementKey, { }, extensionElements, bpmnFactory);
|
|
79
|
-
commands.push(cmdHelper.addAndRemoveElementsFromList(
|
|
80
|
-
element,
|
|
81
|
-
extensionElements,
|
|
82
|
-
'values',
|
|
83
|
-
'extensionElements',
|
|
84
|
-
[ extensionElement ],
|
|
85
|
-
[]
|
|
86
|
-
));
|
|
87
|
-
}
|
|
88
|
-
|
|
89
|
-
commands.push(cmdHelper.updateBusinessObject(element, extensionElement, values));
|
|
90
|
-
return commands;
|
|
91
|
-
},
|
|
92
|
-
|
|
93
|
-
hidden: function(element, node) {
|
|
94
|
-
return !definition.get(referenceProperty);
|
|
95
|
-
}
|
|
96
|
-
});
|
|
97
|
-
|
|
98
|
-
if (shouldValidate) {
|
|
99
|
-
entry.validate = (element, values, node) => {
|
|
100
|
-
const reference = definition.get(referenceProperty);
|
|
101
|
-
if (reference && !values[modelProperty]) {
|
|
102
|
-
const validationErrors = {};
|
|
103
|
-
validationErrors[modelProperty] = 'Must provide a value';
|
|
104
|
-
return validationErrors;
|
|
105
|
-
}
|
|
106
|
-
};
|
|
107
|
-
}
|
|
108
|
-
|
|
109
|
-
return [ entry ];
|
|
110
|
-
}
|
package/lib/camunda-cloud/features/properties-provider/parts/implementation/FormDefinition.js
DELETED
|
@@ -1,207 +0,0 @@
|
|
|
1
|
-
import entryFactory from 'bpmn-js-properties-panel/lib/factory/EntryFactory';
|
|
2
|
-
|
|
3
|
-
import {
|
|
4
|
-
getBusinessObject,
|
|
5
|
-
is
|
|
6
|
-
} from 'bpmn-js/lib/util/ModelUtil';
|
|
7
|
-
|
|
8
|
-
import elementHelper from 'bpmn-js-properties-panel/lib/helper/ElementHelper';
|
|
9
|
-
|
|
10
|
-
import cmdHelper from 'bpmn-js-properties-panel/lib/helper/CmdHelper';
|
|
11
|
-
|
|
12
|
-
import {
|
|
13
|
-
createFormDefinition,
|
|
14
|
-
createFormId,
|
|
15
|
-
createFormKey,
|
|
16
|
-
createUserTaskForm,
|
|
17
|
-
getFormDefinition,
|
|
18
|
-
getUserTaskForm
|
|
19
|
-
} from '../../../../helper/FormsHelper';
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
export default function(element, bpmnFactory, translate) {
|
|
23
|
-
let entries = [];
|
|
24
|
-
|
|
25
|
-
function cleanupUserTaskForm(element) {
|
|
26
|
-
|
|
27
|
-
const businessObject = getBusinessObject(element),
|
|
28
|
-
rootElement = getRootElement(element),
|
|
29
|
-
extensionElements = businessObject.get('extensionElements'),
|
|
30
|
-
rootExtensionElements = rootElement.get('extensionElements');
|
|
31
|
-
|
|
32
|
-
let commands = [];
|
|
33
|
-
|
|
34
|
-
// (1) remove form definition
|
|
35
|
-
const formDefinition = getFormDefinition(element);
|
|
36
|
-
|
|
37
|
-
if (!formDefinition) {
|
|
38
|
-
return commands;
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
commands.push(cmdHelper.removeElementsFromList(
|
|
42
|
-
element,
|
|
43
|
-
extensionElements,
|
|
44
|
-
'values',
|
|
45
|
-
'extensionElements',
|
|
46
|
-
[ formDefinition ]
|
|
47
|
-
));
|
|
48
|
-
|
|
49
|
-
// (2) remove referenced user task form
|
|
50
|
-
const userTaskForm = getUserTaskForm(element);
|
|
51
|
-
|
|
52
|
-
if (!userTaskForm) {
|
|
53
|
-
return commands;
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
commands.push(cmdHelper.removeElementsFromList(
|
|
57
|
-
element,
|
|
58
|
-
rootExtensionElements,
|
|
59
|
-
'values',
|
|
60
|
-
'extensionElements',
|
|
61
|
-
[ userTaskForm ]
|
|
62
|
-
));
|
|
63
|
-
|
|
64
|
-
return commands;
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
entries.push(entryFactory.textField(translate, {
|
|
68
|
-
id: 'form-json',
|
|
69
|
-
label: translate('Form JSON Configuration'),
|
|
70
|
-
modelProperty: 'formJSON',
|
|
71
|
-
get: function(element) {
|
|
72
|
-
const userTaskForm = getUserTaskForm(element);
|
|
73
|
-
|
|
74
|
-
return {
|
|
75
|
-
formJSON: userTaskForm ? userTaskForm.get('body') : ''
|
|
76
|
-
};
|
|
77
|
-
},
|
|
78
|
-
set: function(element, values) {
|
|
79
|
-
|
|
80
|
-
const businessObject = getBusinessObject(element),
|
|
81
|
-
rootElement = getRootElement(element),
|
|
82
|
-
body = values.formJSON;
|
|
83
|
-
|
|
84
|
-
let commands = [],
|
|
85
|
-
userTaskForm,
|
|
86
|
-
formId;
|
|
87
|
-
|
|
88
|
-
// (0) cleanup user task form + form definition on empty body
|
|
89
|
-
if (!body || body === '') {
|
|
90
|
-
return cleanupUserTaskForm(element);
|
|
91
|
-
}
|
|
92
|
-
|
|
93
|
-
// (1) ensure extension elements
|
|
94
|
-
let extensionElements = businessObject.get('extensionElements');
|
|
95
|
-
|
|
96
|
-
if (!extensionElements) {
|
|
97
|
-
extensionElements = elementHelper.createElement(
|
|
98
|
-
'bpmn:ExtensionElements',
|
|
99
|
-
{ values: [] },
|
|
100
|
-
businessObject,
|
|
101
|
-
bpmnFactory
|
|
102
|
-
);
|
|
103
|
-
|
|
104
|
-
commands.push(
|
|
105
|
-
cmdHelper.updateBusinessObject(element, businessObject, {
|
|
106
|
-
extensionElements: extensionElements,
|
|
107
|
-
})
|
|
108
|
-
);
|
|
109
|
-
}
|
|
110
|
-
|
|
111
|
-
// (2) ensure root element extension elements
|
|
112
|
-
let rootExtensionElements = rootElement.get('extensionElements');
|
|
113
|
-
|
|
114
|
-
if (!rootExtensionElements) {
|
|
115
|
-
rootExtensionElements = elementHelper.createElement(
|
|
116
|
-
'bpmn:ExtensionElements',
|
|
117
|
-
{ values: [] },
|
|
118
|
-
rootElement,
|
|
119
|
-
bpmnFactory
|
|
120
|
-
);
|
|
121
|
-
|
|
122
|
-
commands.push(
|
|
123
|
-
cmdHelper.updateBusinessObject(element, rootElement, {
|
|
124
|
-
extensionElements: rootExtensionElements,
|
|
125
|
-
})
|
|
126
|
-
);
|
|
127
|
-
}
|
|
128
|
-
|
|
129
|
-
// (3) ensure form definition
|
|
130
|
-
let formDefinition = getFormDefinition(element);
|
|
131
|
-
|
|
132
|
-
if (!formDefinition) {
|
|
133
|
-
formId = createFormId();
|
|
134
|
-
|
|
135
|
-
formDefinition = createFormDefinition(
|
|
136
|
-
{
|
|
137
|
-
formKey: createFormKey(formId)
|
|
138
|
-
},
|
|
139
|
-
extensionElements,
|
|
140
|
-
bpmnFactory
|
|
141
|
-
);
|
|
142
|
-
|
|
143
|
-
commands.push(cmdHelper.addAndRemoveElementsFromList(
|
|
144
|
-
element,
|
|
145
|
-
extensionElements,
|
|
146
|
-
'values',
|
|
147
|
-
'extensionElements',
|
|
148
|
-
[ formDefinition ],
|
|
149
|
-
[]
|
|
150
|
-
));
|
|
151
|
-
}
|
|
152
|
-
|
|
153
|
-
formId = resolveFormId(formDefinition.get('formKey'));
|
|
154
|
-
|
|
155
|
-
// (4) ensure user task form
|
|
156
|
-
userTaskForm = getUserTaskForm(element);
|
|
157
|
-
|
|
158
|
-
if (!userTaskForm) {
|
|
159
|
-
userTaskForm = createUserTaskForm(
|
|
160
|
-
{
|
|
161
|
-
id: formId,
|
|
162
|
-
body: body
|
|
163
|
-
},
|
|
164
|
-
rootExtensionElements,
|
|
165
|
-
bpmnFactory
|
|
166
|
-
);
|
|
167
|
-
|
|
168
|
-
commands.push(cmdHelper.addAndRemoveElementsFromList(
|
|
169
|
-
element,
|
|
170
|
-
rootExtensionElements,
|
|
171
|
-
'values',
|
|
172
|
-
'extensionElements',
|
|
173
|
-
[ userTaskForm ],
|
|
174
|
-
[]
|
|
175
|
-
));
|
|
176
|
-
}
|
|
177
|
-
|
|
178
|
-
// (5) update user task form
|
|
179
|
-
commands.push(cmdHelper.updateBusinessObject(element, userTaskForm, {
|
|
180
|
-
body: values.formJSON
|
|
181
|
-
}));
|
|
182
|
-
|
|
183
|
-
return commands;
|
|
184
|
-
|
|
185
|
-
}
|
|
186
|
-
}));
|
|
187
|
-
|
|
188
|
-
return entries;
|
|
189
|
-
}
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
// helpers //////////////////////
|
|
193
|
-
|
|
194
|
-
function getRootElement(element) {
|
|
195
|
-
var businessObject = getBusinessObject(element),
|
|
196
|
-
parent = businessObject;
|
|
197
|
-
|
|
198
|
-
while (parent.$parent && !is(parent, 'bpmn:Process')) {
|
|
199
|
-
parent = parent.$parent;
|
|
200
|
-
}
|
|
201
|
-
|
|
202
|
-
return parent;
|
|
203
|
-
}
|
|
204
|
-
|
|
205
|
-
function resolveFormId(formKey) {
|
|
206
|
-
return formKey.split(':')[2];
|
|
207
|
-
}
|