diff --git a/lib/features/auto-resize/BpmnAutoResizeProvider.js b/lib/features/auto-resize/BpmnAutoResizeProvider.js index d44e9aa6..721b0810 100644 --- a/lib/features/auto-resize/BpmnAutoResizeProvider.js +++ b/lib/features/auto-resize/BpmnAutoResizeProvider.js @@ -33,6 +33,12 @@ BpmnAutoResizeProvider.$inject = [ */ BpmnAutoResizeProvider.prototype.canResize = function(elements, target) { + // do not resize plane elements: + // root elements, collapsed sub-processes + if (is(target.di, 'bpmndi:BPMNPlane')) { + return false; + } + if (!is(target, 'bpmn:Participant') && !is(target, 'bpmn:Lane') && !(is(target, 'bpmn:SubProcess'))) { return false; } diff --git a/test/spec/features/replace/BpmnReplace.collapsedSubProcess.bpmn b/test/spec/features/replace/BpmnReplace.collapsedSubProcess.bpmn new file mode 100644 index 00000000..7c9d08ae --- /dev/null +++ b/test/spec/features/replace/BpmnReplace.collapsedSubProcess.bpmn @@ -0,0 +1,377 @@ + + + + + + sid-89A3F9F2-CCC8-46C7-816B-DD8AC8A98300 + + + sid-89A3F9F2-CCC8-46C7-816B-DD8AC8A98300 + sid-F06605E1-AEC1-4B39-8843-4AD3F547B557 + sid-FC2ECAF5-771E-4ED3-BEF6-EFAB45E79500 + + + sid-F06605E1-AEC1-4B39-8843-4AD3F547B557 + sid-31F6EC44-E44C-4121-B4FE-BD69AF208C05 + + sid-EB275CF2-5EF1-44FA-B41B-71EB37CC2657 + + + sid-EB275CF2-5EF1-44FA-B41B-71EB37CC2657 + sid-FB543319-8DFB-4445-AAA3-720137FB230B + + + + + + + sid-FB543319-8DFB-4445-AAA3-720137FB230B + sid-B99D259B-1BD5-45FF-BD57-FB99C360BAC0 + + sid-472B540C-A0CD-46F4-9640-DF692EC1BFFC + + + sid-472B540C-A0CD-46F4-9640-DF692EC1BFFC + sid-910420B0-D11B-4F9D-B285-703D8AC0BA90 + + sid-A7460113-CB75-491D-817B-5E1A8C606B8C + + + sid-A7460113-CB75-491D-817B-5E1A8C606B8C + sid-01982395-64E8-43EF-A6D3-CDD276C312AA + + + sid-01982395-64E8-43EF-A6D3-CDD276C312AA + + + + + + + + sid-910420B0-D11B-4F9D-B285-703D8AC0BA90 + + + + + + + + sid-B99D259B-1BD5-45FF-BD57-FB99C360BAC0 + + + + + + + + + + sid-FC2ECAF5-771E-4ED3-BEF6-EFAB45E79500 + sid-5B23450F-AF5E-4519-B134-32107776BD44 + + sid-E71F5783-AFE7-44ED-8A9C-378C95087448 + + + sid-E71F5783-AFE7-44ED-8A9C-378C95087448 + sid-6B9741CD-D94B-41C7-A2EA-63A4C9445E16 + + + sid-6B9741CD-D94B-41C7-A2EA-63A4C9445E16 + sid-1A9DABC6-6079-4BF2-9D49-C4DC9569C519 + + sid-E5404926-738D-4447-87FE-FC6DD1E8BEFC + + + sid-E5404926-738D-4447-87FE-FC6DD1E8BEFC + sid-FED62A8F-6C3A-4BB2-8DE9-18FB0B35B50E + + + sid-FED62A8F-6C3A-4BB2-8DE9-18FB0B35B50E + + + + + + + + sid-1A9DABC6-6079-4BF2-9D49-C4DC9569C519 + + + + + + + + + + + + + + + + sid-5B23450F-AF5E-4519-B134-32107776BD44 + sid-31F6EC44-E44C-4121-B4FE-BD69AF208C05 + sid-F7DA1903-6A1A-4858-AF4B-286A968C957F + + + sid-DCB98638-BEBD-4548-B501-F0E29AC71ED4 + + + + sid-DCB98638-BEBD-4548-B501-F0E29AC71ED4 + + + sid-F7DA1903-6A1A-4858-AF4B-286A968C957F + sid-3FAE72F2-4037-4CBA-8B89-01D7FC7FF3E3 + + + sid-3FAE72F2-4037-4CBA-8B89-01D7FC7FF3E3 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/test/spec/features/replace/BpmnReplaceSpec.js b/test/spec/features/replace/BpmnReplaceSpec.js index 0e8688cb..f26e9b1b 100644 --- a/test/spec/features/replace/BpmnReplaceSpec.js +++ b/test/spec/features/replace/BpmnReplaceSpec.js @@ -311,6 +311,81 @@ describe('features/replace - bpmn replace', function() { }); + describe('should replace in sub-process (collapsed)', function() { + + var diagramXML = require('./BpmnReplace.collapsedSubProcess.bpmn'); + + beforeEach(bootstrapModeler(diagramXML, { + modules: testModules, + moddleExtensions: { + camunda: camundaPackage + } + })); + + + beforeEach(inject(function(canvas) { + canvas.setActivePlane('SubProcess_Collapsed'); + })); + + + it('task', inject(function(elementRegistry, bpmnReplace) { + + // given + var task = elementRegistry.get('UserTask'); + var newElementData = { + type: 'bpmn:ServiceTask' + }; + + // when + var newElement = bpmnReplace.replaceElement(task, newElementData); + + // then + var businessObject = newElement.businessObject; + + expect(newElement).to.exist; + expect(is(businessObject, 'bpmn:ServiceTask')).to.be.true; + })); + + + it('task with collapsed sub-process', inject(function(elementRegistry, bpmnReplace) { + + // given + var task = elementRegistry.get('UserTask'); + var newElementData = { + type: 'bpmn:SubProcess' + }; + + // when + var newElement = bpmnReplace.replaceElement(task, newElementData); + + // then + var businessObject = newElement.businessObject; + + expect(newElement).to.exist; + expect(is(businessObject, 'bpmn:SubProcess')).to.be.true; + })); + + + it('collapsed sub-process with task', inject(function(elementRegistry, bpmnReplace) { + + // given + var task = elementRegistry.get('NestedCollapsed_SubProcess'); + var newElementData = { + type: 'bpmn:Task' + }; + + // when + var newElement = bpmnReplace.replaceElement(task, newElementData); + + // then + var businessObject = newElement.businessObject; + + expect(newElement).to.exist; + expect(is(businessObject, 'bpmn:Task')).to.be.true; + })); + }); + + describe('should replace in collaboration', function() { var diagramXML = require('./BpmnReplace.collaboration.bpmn');