mirror of
https://github.com/sartography/bpmn-js.git
synced 2025-02-17 03:16:32 +00:00
parent
37ac1abf3f
commit
8722b6e3c2
@ -117,10 +117,10 @@ ElementFactory.prototype.createBpmnElement = function(elementType, attrs) {
|
||||
|
||||
if (attrs.eventDefinitionType) {
|
||||
eventDefinitions = businessObject.get('eventDefinitions') || [];
|
||||
newEventDefinition = this._moddle.create(attrs.eventDefinitionType);
|
||||
newEventDefinition = this._bpmnFactory.create(attrs.eventDefinitionType);
|
||||
|
||||
if (attrs.eventDefinitionType === 'bpmn:ConditionalEventDefinition') {
|
||||
newEventDefinition.condition = this._moddle.create('bpmn:FormalExpression');
|
||||
newEventDefinition.condition = this._bpmnFactory.create('bpmn:FormalExpression');
|
||||
}
|
||||
|
||||
eventDefinitions.push(newEventDefinition);
|
||||
|
7
test/spec/features/modeling/ElementFactory.bpmn
Normal file
7
test/spec/features/modeling/ElementFactory.bpmn
Normal file
@ -0,0 +1,7 @@
|
||||
<?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" />
|
||||
<bpmndi:BPMNDiagram id="BPMNDiagram_1">
|
||||
<bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="Process_1" />
|
||||
</bpmndi:BPMNDiagram>
|
||||
</bpmn:definitions>
|
115
test/spec/features/modeling/ElementFactorySpec.js
Normal file
115
test/spec/features/modeling/ElementFactorySpec.js
Normal file
@ -0,0 +1,115 @@
|
||||
import {
|
||||
bootstrapModeler,
|
||||
inject
|
||||
} from 'test/TestHelper';
|
||||
|
||||
import coreModule from 'lib/core';
|
||||
import modelingModule from 'lib/features/modeling';
|
||||
|
||||
import {
|
||||
getBusinessObject,
|
||||
is
|
||||
} from '../../../../lib/util/ModelUtil';
|
||||
|
||||
|
||||
describe('features - element factory', function() {
|
||||
|
||||
var diagramXML = require('./ElementFactory.bpmn');
|
||||
|
||||
var testModules = [ modelingModule, coreModule ];
|
||||
|
||||
beforeEach(bootstrapModeler(diagramXML, { modules: testModules }));
|
||||
|
||||
|
||||
describe('create', function() {
|
||||
|
||||
it('should create with message event definition', inject(function(elementFactory) {
|
||||
|
||||
// when
|
||||
var intermediateThrowEvent = elementFactory.createShape({
|
||||
type: 'bpmn:IntermediateThrowEvent',
|
||||
eventDefinitionType: 'bpmn:MessageEventDefinition'
|
||||
});
|
||||
|
||||
// then
|
||||
expect(intermediateThrowEvent).to.exist;
|
||||
expect(is(intermediateThrowEvent, 'bpmn:IntermediateThrowEvent')).to.be.true;
|
||||
|
||||
var intermediateThrowEventBo = getBusinessObject(intermediateThrowEvent),
|
||||
eventDefinitions = intermediateThrowEventBo.eventDefinitions;
|
||||
|
||||
expect(eventDefinitions).to.exist;
|
||||
expect(eventDefinitions).to.have.length(1);
|
||||
|
||||
var messageEventDefinition = eventDefinitions[ 0 ];
|
||||
|
||||
expect(is(messageEventDefinition, 'bpmn:MessageEventDefinition')).to.be.true;
|
||||
}));
|
||||
|
||||
|
||||
it('should create event with conditional event definition', inject(function(elementFactory) {
|
||||
|
||||
// when
|
||||
var intermediateCatchEvent = elementFactory.createShape({
|
||||
type: 'bpmn:IntermediateCatchEvent',
|
||||
eventDefinitionType: 'bpmn:ConditionalEventDefinition'
|
||||
});
|
||||
|
||||
// then
|
||||
expect(intermediateCatchEvent).to.exist;
|
||||
expect(is(intermediateCatchEvent, 'bpmn:IntermediateCatchEvent')).to.be.true;
|
||||
|
||||
var intermediateThrowEventBo = getBusinessObject(intermediateCatchEvent),
|
||||
eventDefinitions = intermediateThrowEventBo.eventDefinitions;
|
||||
|
||||
expect(eventDefinitions).to.exist;
|
||||
expect(eventDefinitions).to.have.length(1);
|
||||
|
||||
var conditionalEventDefinition = eventDefinitions[ 0 ];
|
||||
|
||||
expect(is(conditionalEventDefinition, 'bpmn:ConditionalEventDefinition')).to.be.true;
|
||||
expect(conditionalEventDefinition.condition).to.exist;
|
||||
expect(is(conditionalEventDefinition.condition, 'bpmn:FormalExpression')).to.be.true;
|
||||
}));
|
||||
|
||||
|
||||
describe('integration', function() {
|
||||
|
||||
it('should create event definition with ID', inject(function(elementFactory) {
|
||||
|
||||
// when
|
||||
var intermediateThrowEvent = elementFactory.createShape({
|
||||
type: 'bpmn:IntermediateThrowEvent',
|
||||
eventDefinitionType: 'bpmn:MessageEventDefinition'
|
||||
});
|
||||
|
||||
// then
|
||||
var intermediateThrowEventBo = getBusinessObject(intermediateThrowEvent),
|
||||
eventDefinitions = intermediateThrowEventBo.eventDefinitions,
|
||||
messageEventDefinition = eventDefinitions[ 0 ];
|
||||
|
||||
expect(messageEventDefinition.id).to.exist;
|
||||
}));
|
||||
|
||||
|
||||
it('should create formal expression with ID', inject(function(elementFactory) {
|
||||
|
||||
// when
|
||||
var intermediateCatchEvent = elementFactory.createShape({
|
||||
type: 'bpmn:IntermediateCatchEvent',
|
||||
eventDefinitionType: 'bpmn:ConditionalEventDefinition'
|
||||
});
|
||||
|
||||
// then
|
||||
var intermediateThrowEventBo = getBusinessObject(intermediateCatchEvent),
|
||||
eventDefinitions = intermediateThrowEventBo.eventDefinitions,
|
||||
conditionalEventDefinition = eventDefinitions[ 0 ];
|
||||
|
||||
expect(conditionalEventDefinition.condition.id).not.to.exist;
|
||||
}));
|
||||
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
});
|
Loading…
x
Reference in New Issue
Block a user