bpmn-js 0.13.1 → 0.14.1
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/.travis.yml +1 -1
- package/.wiredeps +5 -5
- package/lib/Modeler.js +52 -9
- package/lib/Viewer.js +205 -105
- package/lib/draw/BpmnRenderer.js +4 -0
- package/lib/features/context-pad/ContextPadProvider.js +21 -15
- package/lib/features/label-editing/LabelEditingProvider.js +21 -6
- package/lib/features/label-editing/LabelUtil.js +6 -6
- package/lib/features/label-editing/cmd/UpdateLabelHandler.js +19 -17
- package/lib/features/modeling/BpmnUpdater.js +12 -4
- package/lib/features/modeling/ElementFactory.js +25 -11
- package/lib/features/modeling/{BpmnLabelSupport.js → behavior/LabelBehavior.js} +14 -4
- package/lib/features/modeling/behavior/ModelingFeedback.js +3 -3
- package/lib/features/modeling/behavior/UpdateFlowNodeRefsBehavior.js +4 -4
- package/lib/features/modeling/behavior/index.js +2 -0
- package/lib/features/modeling/cmd/SplitLaneHandler.js +6 -4
- package/lib/features/modeling/cmd/UpdateCanvasRootHandler.js +6 -0
- package/lib/features/modeling/cmd/UpdateFlowNodeRefsHandler.js +6 -0
- package/lib/features/modeling/cmd/UpdatePropertiesHandler.js +6 -4
- package/lib/features/modeling/index.js +1 -2
- package/lib/features/ordering/BpmnOrderingProvider.js +7 -4
- package/lib/features/ordering/index.js +3 -0
- package/lib/features/palette/PaletteProvider.js +13 -9
- package/lib/features/palette/index.js +2 -1
- package/lib/features/popup-menu/ReplaceMenuProvider.js +22 -10
- package/lib/features/popup-menu/index.js +4 -0
- package/lib/features/replace/BpmnReplace.js +17 -1
- package/lib/features/replace/ReplaceOptions.js +22 -0
- package/lib/features/replace/index.js +0 -1
- package/lib/features/rules/BpmnRules.js +14 -0
- package/lib/features/snapping/BpmnSnapping.js +2 -2
- package/lib/import/BpmnImporter.js +30 -18
- package/lib/import/BpmnTreeWalker.js +42 -15
- package/lib/import/Importer.js +19 -7
- package/lib/import/index.js +3 -0
- package/package.json +8 -7
- package/test/fixtures/bpmn/extension/custom-override.bpmn +54 -0
- package/test/fixtures/bpmn/extension/custom.bpmn +54 -0
- package/test/fixtures/bpmn/features/modeling/update-label.bpmn +24 -0
- package/test/fixtures/json/model/custom-override.json +39 -0
- package/test/fixtures/json/model/custom.json +39 -0
- package/test/helper/index.js +6 -1
- package/test/integration/ReimportSpec.js +89 -0
- package/test/spec/ModelerSpec.js +155 -9
- package/test/spec/ViewerSpec.js +328 -43
- package/test/spec/features/context-pad/ContextPadProviderSpec.js +5 -5
- package/test/spec/features/label-editing/LabelEditingProviderSpec.js +201 -128
- package/test/spec/features/modeling/AppendShapeSpec.js +0 -43
- package/test/spec/features/modeling/UpdateLabelSpec.js +129 -0
- package/test/spec/features/modeling/append/TextAnnotationSpec.js +13 -0
- package/test/spec/features/modeling/behavior/LabelBehaviorSpec.js +144 -0
- package/test/spec/features/modeling/layout/LayoutAssociationSpec.js +3 -3
- package/test/spec/features/ordering/BpmnOrderingProviderSpec.js +41 -2
- package/test/spec/features/ordering/ordering-subprocesses.bpmn +14 -2
- package/test/spec/features/popup-menu/ReplaceMenuProviderSpec.js +0 -4
- package/test/spec/features/replace/BpmnReplace.collaboration.bpmn +70 -0
- package/test/spec/features/replace/BpmnReplaceSpec.js +37 -0
- package/test/spec/features/rules/BpmnRules.collaboration.bpmn +6 -1
- package/test/spec/features/rules/BpmnRulesSpec.js +32 -0
- package/test/spec/features/snapping/BpmnSnappingSpec.js +16 -6
- package/test/spec/i18n/custom-translate/custom-translate.js +15 -0
- package/test/spec/i18n/custom-translate/index.js +3 -0
- package/test/spec/i18n/translateSpec.js +53 -0
- package/test/spec/import/ImporterSpec.js +3 -3
- package/test/spec/features/modeling/BpmnLabelSupportSpec.js +0 -37
package/lib/import/Importer.js
CHANGED
|
@@ -15,12 +15,19 @@ var BpmnTreeWalker = require('./BpmnTreeWalker');
|
|
|
15
15
|
function importBpmnDiagram(diagram, definitions, done) {
|
|
16
16
|
|
|
17
17
|
var importer = diagram.get('bpmnImporter'),
|
|
18
|
-
eventBus = diagram.get('eventBus')
|
|
18
|
+
eventBus = diagram.get('eventBus'),
|
|
19
|
+
translate = diagram.get('translate');
|
|
19
20
|
|
|
20
21
|
var error,
|
|
21
22
|
warnings = [];
|
|
22
23
|
|
|
23
|
-
|
|
24
|
+
/**
|
|
25
|
+
* Walk the diagram semantically, importing (=drawing)
|
|
26
|
+
* all elements you encounter.
|
|
27
|
+
*
|
|
28
|
+
* @param {ModdleElement} definitions
|
|
29
|
+
*/
|
|
30
|
+
function render(definitions) {
|
|
24
31
|
|
|
25
32
|
var visitor = {
|
|
26
33
|
|
|
@@ -37,21 +44,26 @@ function importBpmnDiagram(diagram, definitions, done) {
|
|
|
37
44
|
}
|
|
38
45
|
};
|
|
39
46
|
|
|
40
|
-
var walker = new BpmnTreeWalker(visitor);
|
|
47
|
+
var walker = new BpmnTreeWalker(visitor, translate);
|
|
41
48
|
|
|
42
|
-
//
|
|
49
|
+
// traverse BPMN 2.0 document model,
|
|
50
|
+
// starting at definitions
|
|
43
51
|
walker.handleDefinitions(definitions);
|
|
44
52
|
}
|
|
45
53
|
|
|
46
|
-
eventBus.fire('import.start', { definitions: definitions });
|
|
54
|
+
eventBus.fire('import.render.start', { definitions: definitions });
|
|
47
55
|
|
|
48
56
|
try {
|
|
49
|
-
|
|
57
|
+
render(definitions);
|
|
50
58
|
} catch (e) {
|
|
51
59
|
error = e;
|
|
52
60
|
}
|
|
53
61
|
|
|
54
|
-
eventBus.fire(
|
|
62
|
+
eventBus.fire('import.render.complete', {
|
|
63
|
+
error: error,
|
|
64
|
+
warnings: warnings
|
|
65
|
+
});
|
|
66
|
+
|
|
55
67
|
done(error, warnings);
|
|
56
68
|
}
|
|
57
69
|
|
package/lib/import/index.js
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "bpmn-js",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.14.1",
|
|
4
4
|
"description": "A bpmn 2.0 toolkit and web modeler",
|
|
5
5
|
"scripts": {
|
|
6
6
|
"test": "grunt test"
|
|
@@ -35,6 +35,7 @@
|
|
|
35
35
|
"bundle-collapser": "^1.1.1",
|
|
36
36
|
"chai": "~2.2.0",
|
|
37
37
|
"grunt": "^0.4.4",
|
|
38
|
+
"grunt-cli": "^0.1.13",
|
|
38
39
|
"grunt-contrib-copy": "^0.7.0",
|
|
39
40
|
"grunt-contrib-jshint": "^0.7.2",
|
|
40
41
|
"grunt-karma": "^0.12.0",
|
|
@@ -46,8 +47,8 @@
|
|
|
46
47
|
"karma-chrome-launcher": "^0.2.2",
|
|
47
48
|
"karma-firefox-launcher": "^0.1.3",
|
|
48
49
|
"karma-ie-launcher": "^0.2.0",
|
|
49
|
-
"karma-phantomjs-launcher": "^0.2.0",
|
|
50
50
|
"karma-mocha": "~0.1.0",
|
|
51
|
+
"karma-phantomjs-launcher": "^0.2.0",
|
|
51
52
|
"karma-safari-launcher": "^0.1.1",
|
|
52
53
|
"karma-sinon-chai": "~0.3.0",
|
|
53
54
|
"load-grunt-tasks": "^0.3.0",
|
|
@@ -63,11 +64,11 @@
|
|
|
63
64
|
"watchify": "^3.7.0"
|
|
64
65
|
},
|
|
65
66
|
"dependencies": {
|
|
66
|
-
"bpmn-moddle": "^0.
|
|
67
|
-
"diagram-js": "^0.
|
|
68
|
-
"diagram-js-direct-editing": "^0.
|
|
69
|
-
"
|
|
70
|
-
"ids": "^0.
|
|
67
|
+
"bpmn-moddle": "^0.11.0",
|
|
68
|
+
"diagram-js": "^0.14.0",
|
|
69
|
+
"diagram-js-direct-editing": "^0.14.0",
|
|
70
|
+
"diagram-js-origin": "^0.13.0",
|
|
71
|
+
"ids": "^0.2.0",
|
|
71
72
|
"inherits": "^2.0.1",
|
|
72
73
|
"lodash": "^3.0.1",
|
|
73
74
|
"min-dom": "^0.2.0",
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<bpmn2:definitions xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:bpmn2="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:camunda="http://activiti.org/bpmn" xmlns:custom="http://customdescriptor.com/bpmn2" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xsi:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd" id="_FVEpwO_VEeOtYvXzz5ksgw" exporter="camunda modeler" exporterVersion="2.5.0" targetNamespace="http://activiti.org/bpmn">
|
|
3
|
+
<bpmn2:process id="testProcess" isExecutable="true">
|
|
4
|
+
<bpmn2:startEvent id="StartEvent_1">
|
|
5
|
+
<bpmn2:outgoing>SequenceFlow_1</bpmn2:outgoing>
|
|
6
|
+
</bpmn2:startEvent>
|
|
7
|
+
<bpmn2:sendTask id="send" name="send">
|
|
8
|
+
<bpmn2:extensionElements>
|
|
9
|
+
<camunda:inputOutput>
|
|
10
|
+
<camunda:inputParameter name="var1">
|
|
11
|
+
<camunda:map>
|
|
12
|
+
<camunda:entry key="a">
|
|
13
|
+
<camunda:list>
|
|
14
|
+
<camunda:value>stringInListNestedInMap</camunda:value>
|
|
15
|
+
<camunda:value>${ 'b' }</camunda:value>
|
|
16
|
+
</camunda:list>
|
|
17
|
+
</camunda:entry>
|
|
18
|
+
</camunda:map>
|
|
19
|
+
</camunda:inputParameter>
|
|
20
|
+
<camunda:inputParameter name="var2">stringConstantValue</camunda:inputParameter>
|
|
21
|
+
</camunda:inputOutput>
|
|
22
|
+
<custom:CustomSendElementOverride name="custom" value="1" />
|
|
23
|
+
</bpmn2:extensionElements>
|
|
24
|
+
<bpmn2:incoming>SequenceFlow_1</bpmn2:incoming>
|
|
25
|
+
<bpmn2:outgoing>SequenceFlow_2</bpmn2:outgoing>
|
|
26
|
+
</bpmn2:sendTask>
|
|
27
|
+
<bpmn2:sequenceFlow id="SequenceFlow_1" name="" sourceRef="StartEvent_1" targetRef="send"/>
|
|
28
|
+
<bpmn2:endEvent id="EndEvent_1">
|
|
29
|
+
<bpmn2:incoming>SequenceFlow_2</bpmn2:incoming>
|
|
30
|
+
</bpmn2:endEvent>
|
|
31
|
+
<bpmn2:sequenceFlow id="SequenceFlow_2" name="" sourceRef="send" targetRef="EndEvent_1"/>
|
|
32
|
+
</bpmn2:process>
|
|
33
|
+
<bpmndi:BPMNDiagram id="BPMNDiagram_1">
|
|
34
|
+
<bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="testProcess">
|
|
35
|
+
<bpmndi:BPMNShape id="_BPMNShape_StartEvent_2" bpmnElement="StartEvent_1">
|
|
36
|
+
<dc:Bounds height="36.0" width="36.0" x="128.0" y="178.0"/>
|
|
37
|
+
</bpmndi:BPMNShape>
|
|
38
|
+
<bpmndi:BPMNShape id="_BPMNShape_UserTask_2" bpmnElement="send">
|
|
39
|
+
<dc:Bounds height="80.0" width="100.0" x="214.0" y="156.0"/>
|
|
40
|
+
</bpmndi:BPMNShape>
|
|
41
|
+
<bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_1" bpmnElement="SequenceFlow_1" sourceElement="_BPMNShape_StartEvent_2" targetElement="_BPMNShape_UserTask_2">
|
|
42
|
+
<di:waypoint xsi:type="dc:Point" x="164.0" y="196.0"/>
|
|
43
|
+
<di:waypoint xsi:type="dc:Point" x="214.0" y="196.0"/>
|
|
44
|
+
</bpmndi:BPMNEdge>
|
|
45
|
+
<bpmndi:BPMNShape id="_BPMNShape_EndEvent_2" bpmnElement="EndEvent_1">
|
|
46
|
+
<dc:Bounds height="36.0" width="36.0" x="364.0" y="178.0"/>
|
|
47
|
+
</bpmndi:BPMNShape>
|
|
48
|
+
<bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_2" bpmnElement="SequenceFlow_2" sourceElement="_BPMNShape_UserTask_2" targetElement="_BPMNShape_EndEvent_2">
|
|
49
|
+
<di:waypoint xsi:type="dc:Point" x="314.0" y="196.0"/>
|
|
50
|
+
<di:waypoint xsi:type="dc:Point" x="364.0" y="196.0"/>
|
|
51
|
+
</bpmndi:BPMNEdge>
|
|
52
|
+
</bpmndi:BPMNPlane>
|
|
53
|
+
</bpmndi:BPMNDiagram>
|
|
54
|
+
</bpmn2:definitions>
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<bpmn2:definitions xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:bpmn2="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:camunda="http://activiti.org/bpmn" xmlns:custom="http://customdescriptor.com/bpmn2" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xsi:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd" id="_FVEpwO_VEeOtYvXzz5ksgw" exporter="camunda modeler" exporterVersion="2.5.0" targetNamespace="http://activiti.org/bpmn">
|
|
3
|
+
<bpmn2:process id="testProcess" isExecutable="true">
|
|
4
|
+
<bpmn2:startEvent id="StartEvent_1">
|
|
5
|
+
<bpmn2:outgoing>SequenceFlow_1</bpmn2:outgoing>
|
|
6
|
+
</bpmn2:startEvent>
|
|
7
|
+
<bpmn2:sendTask id="send" name="send">
|
|
8
|
+
<bpmn2:extensionElements>
|
|
9
|
+
<camunda:inputOutput>
|
|
10
|
+
<camunda:inputParameter name="var1">
|
|
11
|
+
<camunda:map>
|
|
12
|
+
<camunda:entry key="a">
|
|
13
|
+
<camunda:list>
|
|
14
|
+
<camunda:value>stringInListNestedInMap</camunda:value>
|
|
15
|
+
<camunda:value>${ 'b' }</camunda:value>
|
|
16
|
+
</camunda:list>
|
|
17
|
+
</camunda:entry>
|
|
18
|
+
</camunda:map>
|
|
19
|
+
</camunda:inputParameter>
|
|
20
|
+
<camunda:inputParameter name="var2">stringConstantValue</camunda:inputParameter>
|
|
21
|
+
</camunda:inputOutput>
|
|
22
|
+
<custom:customSendElement name="custom" value="1" />
|
|
23
|
+
</bpmn2:extensionElements>
|
|
24
|
+
<bpmn2:incoming>SequenceFlow_1</bpmn2:incoming>
|
|
25
|
+
<bpmn2:outgoing>SequenceFlow_2</bpmn2:outgoing>
|
|
26
|
+
</bpmn2:sendTask>
|
|
27
|
+
<bpmn2:sequenceFlow id="SequenceFlow_1" name="" sourceRef="StartEvent_1" targetRef="send"/>
|
|
28
|
+
<bpmn2:endEvent id="EndEvent_1">
|
|
29
|
+
<bpmn2:incoming>SequenceFlow_2</bpmn2:incoming>
|
|
30
|
+
</bpmn2:endEvent>
|
|
31
|
+
<bpmn2:sequenceFlow id="SequenceFlow_2" name="" sourceRef="send" targetRef="EndEvent_1"/>
|
|
32
|
+
</bpmn2:process>
|
|
33
|
+
<bpmndi:BPMNDiagram id="BPMNDiagram_1">
|
|
34
|
+
<bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="testProcess">
|
|
35
|
+
<bpmndi:BPMNShape id="_BPMNShape_StartEvent_2" bpmnElement="StartEvent_1">
|
|
36
|
+
<dc:Bounds height="36.0" width="36.0" x="128.0" y="178.0"/>
|
|
37
|
+
</bpmndi:BPMNShape>
|
|
38
|
+
<bpmndi:BPMNShape id="_BPMNShape_UserTask_2" bpmnElement="send">
|
|
39
|
+
<dc:Bounds height="80.0" width="100.0" x="214.0" y="156.0"/>
|
|
40
|
+
</bpmndi:BPMNShape>
|
|
41
|
+
<bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_1" bpmnElement="SequenceFlow_1" sourceElement="_BPMNShape_StartEvent_2" targetElement="_BPMNShape_UserTask_2">
|
|
42
|
+
<di:waypoint xsi:type="dc:Point" x="164.0" y="196.0"/>
|
|
43
|
+
<di:waypoint xsi:type="dc:Point" x="214.0" y="196.0"/>
|
|
44
|
+
</bpmndi:BPMNEdge>
|
|
45
|
+
<bpmndi:BPMNShape id="_BPMNShape_EndEvent_2" bpmnElement="EndEvent_1">
|
|
46
|
+
<dc:Bounds height="36.0" width="36.0" x="364.0" y="178.0"/>
|
|
47
|
+
</bpmndi:BPMNShape>
|
|
48
|
+
<bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_2" bpmnElement="SequenceFlow_2" sourceElement="_BPMNShape_UserTask_2" targetElement="_BPMNShape_EndEvent_2">
|
|
49
|
+
<di:waypoint xsi:type="dc:Point" x="314.0" y="196.0"/>
|
|
50
|
+
<di:waypoint xsi:type="dc:Point" x="364.0" y="196.0"/>
|
|
51
|
+
</bpmndi:BPMNEdge>
|
|
52
|
+
</bpmndi:BPMNPlane>
|
|
53
|
+
</bpmndi:BPMNDiagram>
|
|
54
|
+
</bpmn2:definitions>
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<bpmn:definitions xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" id="Definitions_1" targetNamespace="http://bpmn.io/schema/bpmn">
|
|
3
|
+
<bpmn:process id="Process_1" isExecutable="false">
|
|
4
|
+
<bpmn:startEvent id="StartEvent_1" name="Foo" />
|
|
5
|
+
<bpmn:startEvent id="StartEvent_2" />
|
|
6
|
+
<bpmn:task id="Task_1" />
|
|
7
|
+
</bpmn:process>
|
|
8
|
+
<bpmndi:BPMNDiagram id="BPMNDiagram_1">
|
|
9
|
+
<bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="Process_1">
|
|
10
|
+
<bpmndi:BPMNShape id="_BPMNShape_StartEvent_2" bpmnElement="StartEvent_1">
|
|
11
|
+
<dc:Bounds x="173" y="102" width="36" height="36" />
|
|
12
|
+
</bpmndi:BPMNShape>
|
|
13
|
+
<bpmndi:BPMNShape id="StartEvent_1peicoz_di" bpmnElement="StartEvent_2">
|
|
14
|
+
<dc:Bounds x="255" y="102" width="36" height="36" />
|
|
15
|
+
<bpmndi:BPMNLabel>
|
|
16
|
+
<dc:Bounds x="228" y="138" width="90" height="20" />
|
|
17
|
+
</bpmndi:BPMNLabel>
|
|
18
|
+
</bpmndi:BPMNShape>
|
|
19
|
+
<bpmndi:BPMNShape id="Task_16agoun_di" bpmnElement="Task_1">
|
|
20
|
+
<dc:Bounds x="339" y="80" width="100" height="80" />
|
|
21
|
+
</bpmndi:BPMNShape>
|
|
22
|
+
</bpmndi:BPMNPlane>
|
|
23
|
+
</bpmndi:BPMNDiagram>
|
|
24
|
+
</bpmn:definitions>
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "Custom descriptor Override",
|
|
3
|
+
"uri": "http://customdescriptor.com/bpmn2",
|
|
4
|
+
"prefix": "custom",
|
|
5
|
+
"xml": {
|
|
6
|
+
"tagAlias": "lowerCase"
|
|
7
|
+
},
|
|
8
|
+
"associations": [],
|
|
9
|
+
"types": [
|
|
10
|
+
{
|
|
11
|
+
"name": "CustomSendElementOverride",
|
|
12
|
+
"superClass": [
|
|
13
|
+
"Element"
|
|
14
|
+
],
|
|
15
|
+
"properties": [
|
|
16
|
+
{
|
|
17
|
+
"name": "name",
|
|
18
|
+
"isAttr": true,
|
|
19
|
+
"type": "String"
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
"name": "value",
|
|
23
|
+
"isAttr": true,
|
|
24
|
+
"type": "String"
|
|
25
|
+
}
|
|
26
|
+
]
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
"name": "ServiceTaskGroupOverride",
|
|
30
|
+
"extends": [
|
|
31
|
+
"bpmn:ServiceTask",
|
|
32
|
+
"bpmn:BusinessRuleTask",
|
|
33
|
+
"bpmn:SendTask",
|
|
34
|
+
"bpmn:MessageEventDefinition"
|
|
35
|
+
]
|
|
36
|
+
}
|
|
37
|
+
],
|
|
38
|
+
"emumerations": [ ]
|
|
39
|
+
}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "Custom descriptor",
|
|
3
|
+
"uri": "http://customdescriptor.com/bpmn2",
|
|
4
|
+
"prefix": "custom",
|
|
5
|
+
"xml": {
|
|
6
|
+
"tagAlias": "lowerCase"
|
|
7
|
+
},
|
|
8
|
+
"associations": [],
|
|
9
|
+
"types": [
|
|
10
|
+
{
|
|
11
|
+
"name": "CustomSendElement",
|
|
12
|
+
"superClass": [
|
|
13
|
+
"Element"
|
|
14
|
+
],
|
|
15
|
+
"properties": [
|
|
16
|
+
{
|
|
17
|
+
"name": "name",
|
|
18
|
+
"isAttr": true,
|
|
19
|
+
"type": "String"
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
"name": "value",
|
|
23
|
+
"isAttr": true,
|
|
24
|
+
"type": "String"
|
|
25
|
+
}
|
|
26
|
+
]
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
"name": "ServiceTaskGroup",
|
|
30
|
+
"extends": [
|
|
31
|
+
"bpmn:ServiceTask",
|
|
32
|
+
"bpmn:BusinessRuleTask",
|
|
33
|
+
"bpmn:SendTask",
|
|
34
|
+
"bpmn:MessageEventDefinition"
|
|
35
|
+
]
|
|
36
|
+
}
|
|
37
|
+
],
|
|
38
|
+
"emumerations": [ ]
|
|
39
|
+
}
|
package/test/helper/index.js
CHANGED
|
@@ -76,7 +76,12 @@ function bootstrapBpmnJS(BpmnJS, diagram, options, locals) {
|
|
|
76
76
|
_locals = _locals();
|
|
77
77
|
}
|
|
78
78
|
|
|
79
|
-
_options = merge({
|
|
79
|
+
_options = merge({
|
|
80
|
+
container: testContainer,
|
|
81
|
+
canvas: {
|
|
82
|
+
deferUpdate: false
|
|
83
|
+
}
|
|
84
|
+
}, OPTIONS, _options);
|
|
80
85
|
|
|
81
86
|
if (_locals) {
|
|
82
87
|
var mockModule = {};
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var Modeler = require('../../lib/Modeler');
|
|
4
|
+
|
|
5
|
+
var TestContainer = require('mocha-test-container-support');
|
|
6
|
+
|
|
7
|
+
function delay(fn) {
|
|
8
|
+
setTimeout(fn, 10);
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
describe.skip('scenario - successive reopening', function() {
|
|
13
|
+
|
|
14
|
+
var container;
|
|
15
|
+
|
|
16
|
+
beforeEach(function() {
|
|
17
|
+
container = TestContainer.get(this);
|
|
18
|
+
});
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
var boundaryXML = require('../fixtures/bpmn/boundary-events.bpmn'),
|
|
22
|
+
containersXML = require('../fixtures/bpmn/containers.bpmn'),
|
|
23
|
+
flowMarkersXML = require('../fixtures/bpmn/flow-markers.bpmn'),
|
|
24
|
+
simpleXML = require('../fixtures/bpmn/simple.bpmn');
|
|
25
|
+
|
|
26
|
+
var allDiagrams = [
|
|
27
|
+
boundaryXML,
|
|
28
|
+
containersXML,
|
|
29
|
+
flowMarkersXML,
|
|
30
|
+
simpleXML
|
|
31
|
+
];
|
|
32
|
+
|
|
33
|
+
it('should import 100 diagrams', function(done) {
|
|
34
|
+
|
|
35
|
+
// this test needs time
|
|
36
|
+
this.timeout(30000);
|
|
37
|
+
|
|
38
|
+
var count = 0;
|
|
39
|
+
|
|
40
|
+
// given
|
|
41
|
+
var modeler = new Modeler({ container: container });
|
|
42
|
+
|
|
43
|
+
modeler.on('import.done', function(event) {
|
|
44
|
+
|
|
45
|
+
console.log('imported #' + count);
|
|
46
|
+
|
|
47
|
+
if (event.error) {
|
|
48
|
+
console.error('ERROR', event.error);
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
if (event.warnings && event.warnings.length) {
|
|
52
|
+
console.warn('WARNINGS', event.warnings );
|
|
53
|
+
}
|
|
54
|
+
});
|
|
55
|
+
|
|
56
|
+
function finish(err) {
|
|
57
|
+
modeler.destroy();
|
|
58
|
+
|
|
59
|
+
done(err);
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
function importNext() {
|
|
63
|
+
|
|
64
|
+
if (count === 100) {
|
|
65
|
+
return finish();
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
var i = count % allDiagrams.length;
|
|
69
|
+
|
|
70
|
+
var xml = allDiagrams[i];
|
|
71
|
+
|
|
72
|
+
// when
|
|
73
|
+
modeler.importXML(xml, function(err) {
|
|
74
|
+
|
|
75
|
+
count++;
|
|
76
|
+
|
|
77
|
+
if (err) {
|
|
78
|
+
return finish(err);
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
delay(importNext);
|
|
82
|
+
});
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
// when
|
|
86
|
+
importNext();
|
|
87
|
+
});
|
|
88
|
+
|
|
89
|
+
});
|
package/test/spec/ModelerSpec.js
CHANGED
|
@@ -107,17 +107,45 @@ describe('Modeler', function() {
|
|
|
107
107
|
});
|
|
108
108
|
|
|
109
109
|
|
|
110
|
+
describe('translate support', function() {
|
|
111
|
+
|
|
112
|
+
var xml = require('../fixtures/bpmn/simple.bpmn');
|
|
113
|
+
|
|
114
|
+
it('should allow translation of multi-lingual strings', function(done) {
|
|
115
|
+
|
|
116
|
+
createModeler(xml, function(err, warnings, modeler) {
|
|
117
|
+
|
|
118
|
+
// given
|
|
119
|
+
var translate = modeler.get('translate');
|
|
120
|
+
|
|
121
|
+
// assume
|
|
122
|
+
expect(translate).to.exist;
|
|
123
|
+
|
|
124
|
+
// when
|
|
125
|
+
var interpolatedString = translate('HELLO {you}!', { you: 'WALT' });
|
|
126
|
+
|
|
127
|
+
// then
|
|
128
|
+
expect(interpolatedString).to.eql('HELLO WALT!');
|
|
129
|
+
|
|
130
|
+
done(err);
|
|
131
|
+
});
|
|
132
|
+
|
|
133
|
+
});
|
|
134
|
+
|
|
135
|
+
});
|
|
136
|
+
|
|
137
|
+
|
|
110
138
|
describe('overlay support', function() {
|
|
111
139
|
|
|
112
140
|
it('should allow to add overlays', function(done) {
|
|
113
141
|
|
|
114
142
|
var xml = require('../fixtures/bpmn/simple.bpmn');
|
|
115
143
|
|
|
116
|
-
createModeler(xml, function(err, warnings,
|
|
144
|
+
createModeler(xml, function(err, warnings, modeler) {
|
|
117
145
|
|
|
118
146
|
// given
|
|
119
|
-
var overlays =
|
|
120
|
-
elementRegistry =
|
|
147
|
+
var overlays = modeler.get('overlays'),
|
|
148
|
+
elementRegistry = modeler.get('elementRegistry');
|
|
121
149
|
|
|
122
150
|
// assume
|
|
123
151
|
expect(overlays).to.exist;
|
|
@@ -162,13 +190,13 @@ describe('Modeler', function() {
|
|
|
162
190
|
|
|
163
191
|
var xml = require('../fixtures/bpmn/simple.bpmn');
|
|
164
192
|
|
|
165
|
-
createModeler(xml, function(err, warnings,
|
|
193
|
+
createModeler(xml, function(err, warnings, modeler) {
|
|
166
194
|
|
|
167
195
|
// given
|
|
168
|
-
var bendpointMove =
|
|
169
|
-
dragging =
|
|
170
|
-
elementRegistry =
|
|
171
|
-
canvas =
|
|
196
|
+
var bendpointMove = modeler.get('bendpointMove'),
|
|
197
|
+
dragging = modeler.get('dragging'),
|
|
198
|
+
elementRegistry = modeler.get('elementRegistry'),
|
|
199
|
+
canvas = modeler.get('canvas');
|
|
172
200
|
|
|
173
201
|
// assume
|
|
174
202
|
expect(bendpointMove).to.exist;
|
|
@@ -216,6 +244,81 @@ describe('Modeler', function() {
|
|
|
216
244
|
});
|
|
217
245
|
|
|
218
246
|
|
|
247
|
+
describe('ids', function() {
|
|
248
|
+
|
|
249
|
+
it('should provide ids with moddle', function() {
|
|
250
|
+
|
|
251
|
+
// given
|
|
252
|
+
var modeler = new Modeler({ container: container });
|
|
253
|
+
|
|
254
|
+
// when
|
|
255
|
+
var moddle = modeler.get('moddle');
|
|
256
|
+
|
|
257
|
+
// then
|
|
258
|
+
expect(moddle.ids).to.exist;
|
|
259
|
+
});
|
|
260
|
+
|
|
261
|
+
|
|
262
|
+
it('should populate ids on import', function(done) {
|
|
263
|
+
|
|
264
|
+
// given
|
|
265
|
+
var xml = require('../fixtures/bpmn/simple.bpmn');
|
|
266
|
+
|
|
267
|
+
var modeler = new Modeler({ container: container });
|
|
268
|
+
|
|
269
|
+
var moddle = modeler.get('moddle');
|
|
270
|
+
var elementRegistry = modeler.get('elementRegistry');
|
|
271
|
+
|
|
272
|
+
// when
|
|
273
|
+
modeler.importXML(xml, function(err) {
|
|
274
|
+
|
|
275
|
+
var subProcess = elementRegistry.get('SubProcess_1').businessObject;
|
|
276
|
+
var bpmnEdge = elementRegistry.get('SequenceFlow_3').businessObject.di;
|
|
277
|
+
|
|
278
|
+
// then
|
|
279
|
+
expect(moddle.ids.assigned('SubProcess_1')).to.eql(subProcess);
|
|
280
|
+
expect(moddle.ids.assigned('BPMNEdge_SequenceFlow_3')).to.eql(bpmnEdge);
|
|
281
|
+
|
|
282
|
+
done();
|
|
283
|
+
});
|
|
284
|
+
|
|
285
|
+
});
|
|
286
|
+
|
|
287
|
+
|
|
288
|
+
it('should clear ids before re-import', function(done) {
|
|
289
|
+
|
|
290
|
+
// given
|
|
291
|
+
var someXML = require('../fixtures/bpmn/simple.bpmn'),
|
|
292
|
+
otherXML = require('../fixtures/bpmn/basic.bpmn');
|
|
293
|
+
|
|
294
|
+
var modeler = new Modeler({ container: container });
|
|
295
|
+
|
|
296
|
+
var moddle = modeler.get('moddle');
|
|
297
|
+
var elementRegistry = modeler.get('elementRegistry');
|
|
298
|
+
|
|
299
|
+
// when
|
|
300
|
+
modeler.importXML(someXML, function() {
|
|
301
|
+
|
|
302
|
+
modeler.importXML(otherXML, function() {
|
|
303
|
+
|
|
304
|
+
var task = elementRegistry.get('Task_1').businessObject;
|
|
305
|
+
|
|
306
|
+
// then
|
|
307
|
+
// not in other.bpmn
|
|
308
|
+
expect(moddle.ids.assigned('SubProcess_1')).to.be.false;
|
|
309
|
+
|
|
310
|
+
// in other.bpmn
|
|
311
|
+
expect(moddle.ids.assigned('Task_1')).to.eql(task);
|
|
312
|
+
|
|
313
|
+
done();
|
|
314
|
+
});
|
|
315
|
+
});
|
|
316
|
+
|
|
317
|
+
});
|
|
318
|
+
|
|
319
|
+
});
|
|
320
|
+
|
|
321
|
+
|
|
219
322
|
it('should handle errors', function(done) {
|
|
220
323
|
|
|
221
324
|
var xml = 'invalid stuff';
|
|
@@ -239,7 +342,7 @@ describe('Modeler', function() {
|
|
|
239
342
|
|
|
240
343
|
describe('dependency injection', function() {
|
|
241
344
|
|
|
242
|
-
it('should
|
|
345
|
+
it('should provide self as <bpmnjs>', function(done) {
|
|
243
346
|
|
|
244
347
|
var xml = require('../fixtures/bpmn/simple.bpmn');
|
|
245
348
|
|
|
@@ -251,6 +354,49 @@ describe('Modeler', function() {
|
|
|
251
354
|
});
|
|
252
355
|
});
|
|
253
356
|
|
|
357
|
+
|
|
358
|
+
it('should allow Diagram#get before import', function() {
|
|
359
|
+
|
|
360
|
+
// when
|
|
361
|
+
var modeler = new Modeler({ container: container });
|
|
362
|
+
|
|
363
|
+
// then
|
|
364
|
+
var eventBus = modeler.get('eventBus');
|
|
365
|
+
|
|
366
|
+
expect(eventBus).to.exist;
|
|
367
|
+
});
|
|
368
|
+
|
|
369
|
+
|
|
370
|
+
it('should keep references to services across re-import', function(done) {
|
|
371
|
+
|
|
372
|
+
// given
|
|
373
|
+
var someXML = require('../fixtures/bpmn/simple.bpmn'),
|
|
374
|
+
otherXML = require('../fixtures/bpmn/basic.bpmn');
|
|
375
|
+
|
|
376
|
+
var modeler = new Modeler({ container: container });
|
|
377
|
+
|
|
378
|
+
var eventBus = modeler.get('eventBus'),
|
|
379
|
+
canvas = modeler.get('canvas');
|
|
380
|
+
|
|
381
|
+
// when
|
|
382
|
+
modeler.importXML(someXML, function() {
|
|
383
|
+
|
|
384
|
+
// then
|
|
385
|
+
expect(modeler.get('canvas')).to.equal(canvas);
|
|
386
|
+
expect(modeler.get('eventBus')).to.equal(eventBus);
|
|
387
|
+
|
|
388
|
+
modeler.importXML(otherXML, function() {
|
|
389
|
+
|
|
390
|
+
// then
|
|
391
|
+
expect(modeler.get('canvas')).to.equal(canvas);
|
|
392
|
+
expect(modeler.get('eventBus')).to.equal(eventBus);
|
|
393
|
+
|
|
394
|
+
done();
|
|
395
|
+
});
|
|
396
|
+
});
|
|
397
|
+
|
|
398
|
+
});
|
|
399
|
+
|
|
254
400
|
});
|
|
255
401
|
|
|
256
402
|
});
|