fix(ordering): correctly treat transactions / ad-hoc sub-processes

This commit is contained in:
Nico Rehwaldt 2016-03-16 11:26:41 +01:00
parent 4732dcfc74
commit 13be55dca1
3 changed files with 56 additions and 5 deletions

View File

@ -53,7 +53,7 @@ function BpmnOrderingProvider(eventBus, translate) {
function computeOrder(element) {
var entry = find(orders, function(o) {
return element.type === o.type;
return isAny(element, [ o.type ]);
});
return entry && entry.order || { level: 1 };

View File

@ -98,10 +98,10 @@ describe('features/modeling - ordering', function() {
it('should stay behind boundary events', inject(function() {
// when
move('BoundaryEvent_1', { x: 50, y: 0 }, 'SubProcess_1', true);
move('BoundaryEvent_SubProcess', { x: 50, y: 0 }, 'SubProcess_1', true);
// then
expectZOrder('SubProcess_1', 'BoundaryEvent_1');
expectZOrder('SubProcess_1', 'BoundaryEvent_SubProcess');
}));
@ -126,4 +126,43 @@ describe('features/modeling - ordering', function() {
});
describe('transaction', function() {
var diagramXML = require('./ordering-subprocesses.bpmn');
beforeEach(bootstrapModeler(diagramXML, { modules: testModules }));
it('should stay behind boundary events', inject(function() {
// when
move('BoundaryEvent_Transaction', { x: 50, y: 0 }, 'Transaction_1', true);
// then
expectZOrder('Transaction_1', 'BoundaryEvent_Transaction');
}));
it('should stay behind tasks', inject(function() {
// when
move(['Task_1', 'Task_2'], { x: 50, y: 0 }, 'Transaction_1');
// then
expectZOrder('Transaction_1', 'Task_1', 'Task_2');
}));
it('should be in front of tasks if task is not a child', inject(function() {
// when
move(['Task_1', 'Task_2'], { x: 200, y: 0 }, 'Root');
// then
expectZOrder('Task_1', 'Task_2', 'Transaction_1');
}));
});
});

View File

@ -1,3 +1,4 @@
<?xml version="1.0" encoding="UTF-8"?>
<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" id="Definitions_1" targetNamespace="http://bpmn.io/schema/bpmn">
<bpmn:process id="Process_1" isExecutable="false">
@ -5,14 +6,16 @@
<bpmn:task id="Task_1" />
<bpmn:task id="Task_2" />
</bpmn:subProcess>
<bpmn:boundaryEvent id="BoundaryEvent_1" attachedToRef="SubProcess_1" />
<bpmn:boundaryEvent id="BoundaryEvent_SubProcess" attachedToRef="SubProcess_1" />
<bpmn:transaction id="Transaction_1" />
<bpmn:boundaryEvent id="BoundaryEvent_Transaction" attachedToRef="Transaction_1" />
</bpmn:process>
<bpmndi:BPMNDiagram id="BPMNDiagram_1">
<bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="Process_1">
<bpmndi:BPMNShape id="SubProcess_1_di" bpmnElement="SubProcess_1" isExpanded="true">
<dc:Bounds x="100" y="44" width="350" height="200" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="BoundaryEvent_1_di" bpmnElement="BoundaryEvent_1">
<bpmndi:BPMNShape id="BoundaryEvent_SubProcess_di" bpmnElement="BoundaryEvent_SubProcess">
<dc:Bounds x="157" y="226" width="36" height="36" />
<bpmndi:BPMNLabel>
<dc:Bounds x="130" y="262" width="90" height="20" />
@ -24,6 +27,15 @@
<bpmndi:BPMNShape id="Task_2_di" bpmnElement="Task_2">
<dc:Bounds x="305" y="68" width="100" height="80" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Transaction_1_di" bpmnElement="Transaction_1" isExpanded="true">
<dc:Bounds x="100" y="302" width="350" height="200" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="BoundaryEvent_Transaction_di" bpmnElement="BoundaryEvent_Transaction">
<dc:Bounds x="249" y="484" width="36" height="36" />
<bpmndi:BPMNLabel>
<dc:Bounds x="222" y="520" width="90" height="20" />
</bpmndi:BPMNLabel>
</bpmndi:BPMNShape>
</bpmndi:BPMNPlane>
</bpmndi:BPMNDiagram>
</bpmn:definitions>