diff --git a/docs/architecture/images/architecture/internal-model.drawio b/docs/architecture/images/architecture/internal-model.drawio
index 40fdfe4a7c..0e11d4770e 100644
--- a/docs/architecture/images/architecture/internal-model.drawio
+++ b/docs/architecture/images/architecture/internal-model.drawio
@@ -1 +1 @@
-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
\ No newline at end of file
+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
\ No newline at end of file
diff --git a/docs/architecture/images/architecture/internal-model.svg b/docs/architecture/images/architecture/internal-model.svg
index 9be0e748ac..35b6298b60 100644
--- a/docs/architecture/images/architecture/internal-model.svg
+++ b/docs/architecture/images/architecture/internal-model.svg
@@ -1,3 +1,3 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/docs/bpmn-support.adoc b/docs/bpmn-support.adoc
index 1c10746f55..e74d582b44 100644
--- a/docs/bpmn-support.adoc
+++ b/docs/bpmn-support.adoc
@@ -148,6 +148,25 @@ The event definition can be defined on the event or on the definitions.
|The stroke & icon width may be adjusted
|===
+[cols="1,1,4", options="header"]
+.Event Sub-Process Non-Interrupting Start Events
+|===
+|Name
+|Rendering
+|Comments
+
+|Timer Non-interrupting Start Event
+|icon:check-circle-o[]
+|The icon width may be adjusted
+
+|MessageNon-interrupting Start Event
+|icon:check-circle-o[]
+|The stroke & icon width may be adjusted
+
+|Signal Non-interrupting Start Event
+|icon:check-circle-o[]
+|The stroke & icon width may be adjusted
+|===
[cols="1,1,4", options="header"]
.Intermediate Catch Events
diff --git a/src/component/mxgraph/config/StyleConfigurator.ts b/src/component/mxgraph/config/StyleConfigurator.ts
index 61d23e7c5e..0a273b1312 100644
--- a/src/component/mxgraph/config/StyleConfigurator.ts
+++ b/src/component/mxgraph/config/StyleConfigurator.ts
@@ -20,7 +20,14 @@ import { MarkerIdentifier, StyleDefault, StyleIdentifier } from '../StyleUtils';
import Shape from '../../../model/bpmn/shape/Shape';
import Edge from '../../../model/bpmn/edge/Edge';
import Bounds from '../../../model/bpmn/Bounds';
-import { ShapeBpmnActivity, ShapeBpmnBoundaryEvent, ShapeBpmnCallActivity, ShapeBpmnEvent, ShapeBpmnSubProcess } from '../../../model/bpmn/shape/ShapeBpmnElement';
+import {
+ ShapeBpmnActivity,
+ ShapeBpmnBoundaryEvent,
+ ShapeBpmnCallActivity,
+ ShapeBpmnEvent,
+ ShapeBpmnStartEvent,
+ ShapeBpmnSubProcess,
+} from '../../../model/bpmn/shape/ShapeBpmnElement';
import { Font } from '../../../model/bpmn/Label';
import { FlowKind } from '../../../model/bpmn/edge/FlowKind';
import { AssociationFlow, SequenceFlow } from '../../../model/bpmn/edge/Flow';
@@ -280,7 +287,7 @@ export default class StyleConfigurator {
if (bpmnElement instanceof ShapeBpmnEvent) {
styleValues.set(StyleIdentifier.BPMN_STYLE_EVENT_KIND, bpmnElement.eventKind);
- if (bpmnElement instanceof ShapeBpmnBoundaryEvent) {
+ if (bpmnElement instanceof ShapeBpmnBoundaryEvent || (bpmnElement instanceof ShapeBpmnStartEvent && bpmnElement.isInterrupting !== undefined)) {
styleValues.set(StyleIdentifier.BPMN_STYLE_IS_INTERRUPTING, String(bpmnElement.isInterrupting));
}
} else if (bpmnElement instanceof ShapeBpmnActivity) {
diff --git a/src/component/mxgraph/shape/event-shapes.ts b/src/component/mxgraph/shape/event-shapes.ts
index e5a30cf0e4..0ac43233fb 100644
--- a/src/component/mxgraph/shape/event-shapes.ts
+++ b/src/component/mxgraph/shape/event-shapes.ts
@@ -59,7 +59,11 @@ abstract class EventShape extends mxEllipse {
public paintVertexShape(c: mxAbstractCanvas2D, x: number, y: number, w: number, h: number): void {
this.markNonFullyRenderedEvents(c);
const paintParameter = buildPaintParameter(c, x, y, w, h, this, 0.25, this.withFilledIcon);
+
+ this.setDashedOuterShapePattern(paintParameter, StyleUtils.getBpmnIsInterrupting(this.style));
this.paintOuterShape(paintParameter);
+ this.restoreOriginalOuterShapePattern(paintParameter);
+
this.paintInnerShape(paintParameter);
}
@@ -81,6 +85,21 @@ abstract class EventShape extends mxEllipse {
const paintIcon = this.iconPainters.get(StyleUtils.getBpmnEventKind(this.style)) || (() => this.iconPainter.paintEmptyIcon());
paintIcon(paintParameter);
}
+
+ protected setDashedOuterShapePattern(paintParameter: PaintParameter, isInterrupting: string): void {
+ if (isInterrupting === 'false') {
+ paintParameter.c.setDashed(true, false);
+ paintParameter.c.setDashPattern('3 2');
+ }
+ }
+
+ protected restoreOriginalOuterShapePattern(paintParameter: PaintParameter): void {
+ // Restore original configuration
+ // TODO missing mxShape.configureCanvas in mxgraph-type-definitions (this will replace explicit function calls)
+ // this.configureCanvas(c, x, y, w, h);
+ paintParameter.c.setDashed(StyleUtils.isDashed(this.style), StyleUtils.isFixDash(this.style));
+ paintParameter.c.setDashPattern(StyleUtils.getDashPattern(this.style));
+ }
}
export class StartEventShape extends EventShape {
@@ -130,20 +149,4 @@ export class BoundaryEventShape extends IntermediateEventShape {
public constructor(bounds: mxRectangle, fill: string, stroke: string, strokewidth?: number) {
super(bounds, fill, stroke, strokewidth);
}
-
- protected paintOuterShape(paintParameter: PaintParameter): void {
- const isInterrupting = StyleUtils.getBpmnIsInterrupting(this.style);
- if (isInterrupting === 'false') {
- paintParameter.c.setDashed(true, false);
- paintParameter.c.setDashPattern('3 2');
- }
-
- super.paintOuterShape(paintParameter);
-
- // Restore original configuration
- // TODO missing mxShape.configureCanvas in mxgraph-type-definitions (this will replace explicit function calls)
- // this.configureCanvas(c, x, y, w, h);
- paintParameter.c.setDashed(StyleUtils.isDashed(this.style), StyleUtils.isFixDash(this.style));
- paintParameter.c.setDashPattern(StyleUtils.getDashPattern(this.style));
- }
}
diff --git a/src/component/parser/json/converter/ProcessConverter.ts b/src/component/parser/json/converter/ProcessConverter.ts
index fe5c5cb451..67e667a340 100644
--- a/src/component/parser/json/converter/ProcessConverter.ts
+++ b/src/component/parser/json/converter/ProcessConverter.ts
@@ -19,6 +19,7 @@ import ShapeBpmnElement, {
ShapeBpmnBoundaryEvent,
ShapeBpmnCallActivity,
ShapeBpmnEvent,
+ ShapeBpmnStartEvent,
ShapeBpmnSubProcess,
} from '../../../../model/bpmn/shape/ShapeBpmnElement';
import { ShapeBpmnElementKind } from '../../../../model/bpmn/shape/ShapeBpmnElementKind';
@@ -197,6 +198,9 @@ export default class ProcessConverter {
if (ShapeUtil.isBoundaryEvent(elementKind)) {
return this.buildShapeBpmnBoundaryEvent(bpmnElement as TBoundaryEvent, eventKind);
}
+ if (ShapeUtil.isStartEvent(elementKind)) {
+ return new ShapeBpmnStartEvent(bpmnElement.id, bpmnElement.name, eventKind, processId, bpmnElement.isInterrupting);
+ }
return new ShapeBpmnEvent(bpmnElement.id, bpmnElement.name, elementKind, eventKind, processId);
}
}
diff --git a/src/model/bpmn/shape/ShapeBpmnElement.ts b/src/model/bpmn/shape/ShapeBpmnElement.ts
index 8a3db3aa56..a5b6a6d562 100644
--- a/src/model/bpmn/shape/ShapeBpmnElement.ts
+++ b/src/model/bpmn/shape/ShapeBpmnElement.ts
@@ -48,6 +48,12 @@ export class ShapeBpmnEvent extends ShapeBpmnElement {
}
}
+export class ShapeBpmnStartEvent extends ShapeBpmnEvent {
+ constructor(id: string, name: string, eventKind: ShapeBpmnEventKind, parentId: string, readonly isInterrupting?: boolean) {
+ super(id, name, ShapeBpmnElementKind.EVENT_START, eventKind, parentId);
+ }
+}
+
export class ShapeBpmnBoundaryEvent extends ShapeBpmnEvent {
constructor(id: string, name: string, eventKind: ShapeBpmnEventKind, parentId: string, readonly isInterrupting: boolean = true) {
super(id, name, ShapeBpmnElementKind.EVENT_BOUNDARY, eventKind, parentId);
diff --git a/src/model/bpmn/shape/ShapeUtil.ts b/src/model/bpmn/shape/ShapeUtil.ts
index fc661a718d..c991507216 100644
--- a/src/model/bpmn/shape/ShapeUtil.ts
+++ b/src/model/bpmn/shape/ShapeUtil.ts
@@ -66,6 +66,10 @@ export default class ShapeUtil {
return ShapeBpmnElementKind.EVENT_BOUNDARY === kind;
}
+ public static isStartEvent(kind: ShapeBpmnElementKind): boolean {
+ return ShapeBpmnElementKind.EVENT_START === kind;
+ }
+
public static canHaveNoneEvent(kind: ShapeBpmnElementKind): boolean {
return ShapeBpmnElementKind.EVENT_INTERMEDIATE_THROW === kind || ShapeBpmnElementKind.EVENT_END === kind || ShapeBpmnElementKind.EVENT_START === kind;
}
diff --git a/test/e2e/__image_snapshots__/bpmn-rendering-test-ts-no-visual-regression-events-1-snap.png b/test/e2e/__image_snapshots__/bpmn-rendering-test-ts-no-visual-regression-events-1-snap.png
index e6e78ab030..3a16b8b3c1 100644
Binary files a/test/e2e/__image_snapshots__/bpmn-rendering-test-ts-no-visual-regression-events-1-snap.png and b/test/e2e/__image_snapshots__/bpmn-rendering-test-ts-no-visual-regression-events-1-snap.png differ
diff --git a/test/e2e/mxGraph.model.test.ts b/test/e2e/mxGraph.model.test.ts
index 08fa001f51..4d0190741c 100644
--- a/test/e2e/mxGraph.model.test.ts
+++ b/test/e2e/mxGraph.model.test.ts
@@ -67,6 +67,9 @@ export interface ExpectedSequenceFlowModelElement extends ExpectedEdgeModelEleme
export interface ExpectedBoundaryEventModelElement extends ExpectedEventModelElement {
isInterrupting?: boolean;
}
+export interface ExpectedStartEventModelElement extends ExpectedEventModelElement {
+ isInterrupting?: boolean;
+}
function expectGeometry(cell: mxCell, geometry: mxGeometry): void {
const cellGeometry = cell.getGeometry();
@@ -188,6 +191,11 @@ describe('mxGraph model', () => {
expect(cell.style).toContain(`bpmn.isInterrupting=${boundaryEventModelElement.isInterrupting}`);
}
+ function expectModelContainsBpmnStartEvent(cellId: string, startEventModelElement: ExpectedStartEventModelElement): void {
+ const cell = expectModelContainsBpmnEvent(cellId, { ...startEventModelElement, kind: ShapeBpmnElementKind.EVENT_START });
+ expect(cell.style).toContain(`bpmn.isInterrupting=${startEventModelElement.isInterrupting}`);
+ }
+
function expectModelContainsSubProcess(cellId: string, subProcessModelElement: ExpectedSubProcessModelElement): mxCell {
const cell = expectModelContainsShape(cellId, {
...subProcessModelElement,
@@ -571,6 +579,15 @@ describe('mxGraph model', () => {
parentId: 'expanded_embedded_sub_process_id',
});
+ // Start Event in Event Sub Process
+ expectModelContainsBpmnStartEvent('expanded_event_sub_process_with_non_interrupting_start_event_id_startEvent_1', {
+ kind: ShapeBpmnElementKind.EVENT_START,
+ eventKind: ShapeBpmnEventKind.TIMER,
+ label: 'non-interrupting start event in subprocess',
+ parentId: 'expanded_event_sub_process_with_non_interrupting_start_event_id',
+ isInterrupting: false,
+ });
+
// Call Activity calling process
// Expanded
expectModelContainsShape('expanded_callActivity_1', { kind: ShapeBpmnElementKind.CALL_ACTIVITY, label: 'Expanded Call Activity' });
diff --git a/test/fixtures/bpmn/model-complete-semantic.bpmn b/test/fixtures/bpmn/model-complete-semantic.bpmn
index 43a32938ad..b2ad64c330 100644
--- a/test/fixtures/bpmn/model-complete-semantic.bpmn
+++ b/test/fixtures/bpmn/model-complete-semantic.bpmn
@@ -183,6 +183,11 @@
+
+
+
+
+
@@ -630,7 +635,16 @@
-
+
+
+
+
+
+
+
+
+
+
diff --git a/test/unit/component/mxgraph/config/StyleConfigurator.test.ts b/test/unit/component/mxgraph/config/StyleConfigurator.test.ts
index 4232ed5107..537bcff73b 100644
--- a/test/unit/component/mxgraph/config/StyleConfigurator.test.ts
+++ b/test/unit/component/mxgraph/config/StyleConfigurator.test.ts
@@ -21,6 +21,7 @@ import ShapeBpmnElement, {
ShapeBpmnBoundaryEvent,
ShapeBpmnCallActivity,
ShapeBpmnEvent,
+ ShapeBpmnStartEvent,
ShapeBpmnSubProcess,
} from '../../../../../src/model/bpmn/shape/ShapeBpmnElement';
import { ShapeBpmnElementKind } from '../../../../../src/model/bpmn/shape/ShapeBpmnElementKind';
@@ -79,6 +80,10 @@ function newShapeBpmnBoundaryEvent(eventKind: ShapeBpmnEventKind, isInterrupting
return new ShapeBpmnBoundaryEvent('id', 'name', eventKind, null, isInterrupting);
}
+function newShapeBpmnStartEvent(eventKind: ShapeBpmnEventKind, isInterrupting: boolean): ShapeBpmnStartEvent {
+ return new ShapeBpmnStartEvent('id', 'name', eventKind, null, isInterrupting);
+}
+
function newShapeBpmnSubProcess(subProcessKind: ShapeBpmnSubProcessKind, marker?: ShapeBpmnMarkerKind[]): ShapeBpmnSubProcess {
return new ShapeBpmnSubProcess('id', 'name', subProcessKind, null, marker);
}
@@ -236,6 +241,23 @@ describe('mxgraph renderer', () => {
});
});
+ describe('compute style - event sub-process start event', () => {
+ it('interrupting message', () => {
+ const shape = newShape(newShapeBpmnStartEvent(ShapeBpmnEventKind.MESSAGE, true), newLabel({ name: 'Arial' }));
+ expect(computeStyle(shape)).toEqual('startEvent;bpmn.eventKind=message;bpmn.isInterrupting=true;fontFamily=Arial');
+ });
+
+ it('non interrupting timer', () => {
+ const shape = newShape(newShapeBpmnStartEvent(ShapeBpmnEventKind.TIMER, false), newLabel({ isItalic: true }));
+ expect(computeStyle(shape)).toEqual('startEvent;bpmn.eventKind=timer;bpmn.isInterrupting=false;fontStyle=2');
+ });
+
+ it('cancel with undefined interrupting value', () => {
+ const shape = newShape(newShapeBpmnStartEvent(ShapeBpmnEventKind.CANCEL, undefined), newLabel({ isStrikeThrough: true }));
+ expect(computeStyle(shape)).toEqual('startEvent;bpmn.eventKind=cancel;fontStyle=8');
+ });
+ });
+
describe('compute style - sub-processes', () => {
describe.each([
['expanded', []],