├── .github
└── workflows
│ └── CI.yml
├── .gitignore
├── CHANGELOG.md
├── LICENSE
├── README.md
├── assets
└── css
│ └── bpmn-js-token-simulation.css
├── docs
├── screenshot.png
└── simulation-support
│ ├── README.md
│ └── screencapture.gif
├── eslint.config.mjs
├── example
├── favicon.png
├── index.html
├── modeler.html
├── resources
│ ├── all.bpmn
│ ├── example.bpmn
│ └── inclusive-gateway.bpmn
├── screenshot.png
├── src
│ ├── modeler.js
│ └── viewer.js
├── style.css
└── viewer.html
├── karma.conf.js
├── lib
├── animation
│ ├── Animation.js
│ ├── behaviors
│ │ ├── AnimatedMessageFlowBehavior.js
│ │ ├── AnimatedSequenceFlowBehavior.js
│ │ └── index.js
│ └── index.js
├── base.js
├── features
│ ├── colored-scopes
│ │ ├── ColoredScopes.js
│ │ └── index.js
│ ├── context-pads
│ │ ├── ContextPads.js
│ │ ├── handler
│ │ │ ├── ExclusiveGatewayHandler.js
│ │ │ ├── InclusiveGatewayHandler.js
│ │ │ ├── PauseHandler.js
│ │ │ └── TriggerHandler.js
│ │ └── index.js
│ ├── disable-modeling
│ │ ├── DisableModeling.js
│ │ └── index.js
│ ├── editor-actions
│ │ ├── EditorActions.js
│ │ └── index.js
│ ├── element-colors
│ │ ├── ElementColors.js
│ │ └── index.js
│ ├── element-notifications
│ │ ├── ElementNotifications.js
│ │ └── index.js
│ ├── element-support
│ │ ├── ElementSupport.js
│ │ └── index.js
│ ├── exclusive-gateway-settings
│ │ ├── ExclusiveGatewaySettings.js
│ │ └── index.js
│ ├── inclusive-gateway-settings
│ │ ├── InclusiveGatewaySettings.js
│ │ └── index.js
│ ├── keyboard-bindings
│ │ ├── KeyboardBindings.js
│ │ └── index.js
│ ├── log
│ │ ├── Log.js
│ │ └── index.js
│ ├── neutral-element-colors
│ │ ├── NeutralElementColors.js
│ │ └── index.js
│ ├── notifications
│ │ ├── Notifications.js
│ │ └── index.js
│ ├── palette
│ │ ├── Palette.js
│ │ └── index.js
│ ├── pause-simulation
│ │ ├── PauseSimulation.js
│ │ └── index.js
│ ├── reset-simulation
│ │ ├── ResetSimulation.js
│ │ └── index.js
│ ├── scope-filter
│ │ ├── ScopeFilter.js
│ │ └── index.js
│ ├── set-animation-speed
│ │ ├── SetAnimationSpeed.js
│ │ └── index.js
│ ├── show-scopes
│ │ ├── ShowScopes.js
│ │ └── index.js
│ ├── simulation-state
│ │ ├── SimulationState.js
│ │ └── index.js
│ ├── simulation-styles
│ │ ├── SimulationStyles.js
│ │ └── index.js
│ ├── toggle-mode
│ │ ├── modeler
│ │ │ ├── ToggleMode.js
│ │ │ └── index.js
│ │ └── viewer
│ │ │ ├── ToggleMode.js
│ │ │ └── index.js
│ └── token-count
│ │ ├── TokenCount.js
│ │ └── index.js
├── index.js
├── modeler.js
├── simulation-support
│ ├── SimulationSupport.js
│ ├── SimulationTrace.js
│ └── index.js
├── simulator
│ ├── Scope.js
│ ├── ScopeStates.js
│ ├── ScopeTraits.js
│ ├── Simulator.js
│ ├── behaviors
│ │ ├── ActivityBehavior.js
│ │ ├── BoundaryEventBehavior.js
│ │ ├── EndEventBehavior.js
│ │ ├── EventBasedGatewayBehavior.js
│ │ ├── EventBehaviors.js
│ │ ├── ExclusiveGatewayBehavior.js
│ │ ├── InclusiveGatewayBehavior.js
│ │ ├── IntermediateCatchEventBehavior.js
│ │ ├── IntermediateThrowEventBehavior.js
│ │ ├── MessageFlowBehavior.js
│ │ ├── ParallelGatewayBehavior.js
│ │ ├── ProcessBehavior.js
│ │ ├── ScopeBehavior.js
│ │ ├── SequenceFlowBehavior.js
│ │ ├── StartEventBehavior.js
│ │ ├── SubProcessBehavior.js
│ │ ├── TransactionBehavior.js
│ │ └── index.js
│ ├── index.js
│ └── util
│ │ ├── EventsUtil.js
│ │ ├── ModelUtil.js
│ │ └── SetUtil.js
├── util
│ ├── ElementHelper.js
│ └── EventHelper.js
└── viewer.js
├── package-lock.json
├── package.json
├── renovate.json
├── rollup.config.js
├── src
└── icons
│ ├── angle-right.svg
│ ├── check-circle.svg
│ ├── exclamation-triangle.svg
│ ├── fork.svg
│ ├── index.js
│ ├── info.svg
│ ├── log.svg
│ ├── pause-remove.svg
│ ├── pause.svg
│ ├── play.svg
│ ├── reset.svg
│ ├── tachometer-alt.svg
│ ├── times-circle.svg
│ ├── times.svg
│ ├── toggle-off.svg
│ └── toggle-on.svg
├── tasks
└── update-example
├── test
├── TestHelper.js
├── all.js
├── mocks
│ └── Animation.js
├── reporters
│ └── fixture-reporter.js
├── spec
│ ├── ModelerSpec.js
│ ├── SimulationSpec.js
│ ├── ViewerSpec.js
│ ├── all-elements.bpmn
│ ├── animation
│ │ ├── Animation.bpmn
│ │ └── AnimationSpec.js
│ ├── booking.bpmn
│ ├── boundary-events.bpmn
│ ├── cancel-events.bpmn
│ ├── collapsed-sub-process.bpmn
│ ├── colors.bpmn
│ ├── compensation-keep-alive.bpmn
│ ├── compensation-manual.bpmn
│ ├── compensation.bpmn
│ ├── event-based-gateway.bpmn
│ ├── event-sub-process.bpmn
│ ├── features
│ │ ├── context-pads
│ │ │ ├── ContextPads.collapsed.subprocess.bpmn
│ │ │ ├── ContextPads.scope-filter.bpmn
│ │ │ └── ContextPadsSpec.js
│ │ ├── log
│ │ │ ├── LogSpec.js
│ │ │ ├── end-events.bpmn
│ │ │ ├── gateways.bpmn
│ │ │ ├── intermediate-events.bpmn
│ │ │ ├── start-events.bpmn
│ │ │ ├── sub-processes.bpmn
│ │ │ ├── tasks.bpmn
│ │ │ └── termination.bpmn
│ │ └── show-scopes
│ │ │ ├── ShowScopesSpec.js
│ │ │ ├── event-sub-processes.bpmn
│ │ │ ├── processes.bpmn
│ │ │ ├── scoper.bpmn
│ │ │ └── sub-processes.bpmn
│ ├── implicit-start-no-event.bpmn
│ ├── implicit-start.bpmn
│ ├── links.bpmn
│ ├── message-flows.bpmn
│ ├── multiple-events-signaling.bpmn
│ ├── pause.bpmn
│ ├── simple.bpmn
│ ├── simulator
│ │ ├── ScopeStatesSpec.js
│ │ ├── Simulator.boundary-interrupting-sub-process.bpmn
│ │ ├── Simulator.boundary-interrupting-sub-process.json
│ │ ├── Simulator.boundary-interrupting-task.bpmn
│ │ ├── Simulator.boundary-interrupting-task.json
│ │ ├── Simulator.boundary-non-interrupting-sub-process.bpmn
│ │ ├── Simulator.boundary-non-interrupting-sub-process.json
│ │ ├── Simulator.boundary-non-interrupting-task.bpmn
│ │ ├── Simulator.boundary-non-interrupting-task.json
│ │ ├── Simulator.catch-event-1.json
│ │ ├── Simulator.catch-event-2.json
│ │ ├── Simulator.catch-event.bpmn
│ │ ├── Simulator.catch-event.json
│ │ ├── Simulator.collapsed-compensation-event-sub-process.bpmn
│ │ ├── Simulator.collapsed-compensation-event-sub-process.json
│ │ ├── Simulator.collapsed-event-sub-process.bpmn
│ │ ├── Simulator.collapsed-event-sub-process.json
│ │ ├── Simulator.collapsed-sub-process-compensation-event-sub-process.bpmn
│ │ ├── Simulator.collapsed-sub-process-compensation-event-sub-process.json
│ │ ├── Simulator.collapsed-sub-process-event-sub-process.bpmn
│ │ ├── Simulator.collapsed-sub-process-event-sub-process.json
│ │ ├── Simulator.collapsed-sub-process-link-events.bpmn
│ │ ├── Simulator.collapsed-sub-process-link-events.json
│ │ ├── Simulator.compensation-after-error-recovery.bpmn
│ │ ├── Simulator.compensation-after-error-recovery.json
│ │ ├── Simulator.compensation-after-escalation-recovery.bpmn
│ │ ├── Simulator.compensation-after-escalation-recovery.json
│ │ ├── Simulator.compensation-booking.bpmn
│ │ ├── Simulator.compensation-booking.json
│ │ ├── Simulator.compensation-end.bpmn
│ │ ├── Simulator.compensation-end.json
│ │ ├── Simulator.compensation-error.bpmn
│ │ ├── Simulator.compensation-error.json
│ │ ├── Simulator.compensation-event-sub-process.bpmn
│ │ ├── Simulator.compensation-event-sub-process.json
│ │ ├── Simulator.compensation-intermediate-throw.bpmn
│ │ ├── Simulator.compensation-intermediate-throw.json
│ │ ├── Simulator.compensation-nested-event-sub-process.bpmn
│ │ ├── Simulator.compensation-nested-event-sub-process.json
│ │ ├── Simulator.compensation-nested.bpmn
│ │ ├── Simulator.compensation-nested.json
│ │ ├── Simulator.compensation-no-compensate-activity.bpmn
│ │ ├── Simulator.compensation-no-compensate-activity.json
│ │ ├── Simulator.compensation-once.bpmn
│ │ ├── Simulator.compensation-once.json
│ │ ├── Simulator.data-objects.bpmn
│ │ ├── Simulator.data-objects.json
│ │ ├── Simulator.end-event.bpmn
│ │ ├── Simulator.end-event.json
│ │ ├── Simulator.error-catch-all-boundary-none.bpmn
│ │ ├── Simulator.error-catch-all-boundary-none.json
│ │ ├── Simulator.error-catch-all-boundary-ref.bpmn
│ │ ├── Simulator.error-catch-all-boundary-ref.json
│ │ ├── Simulator.error-catch-all-inner-event-sub-none.bpmn
│ │ ├── Simulator.error-catch-all-inner-event-sub-none.json
│ │ ├── Simulator.error-catch-all-inner-event-sub-ref.bpmn
│ │ ├── Simulator.error-catch-all-inner-event-sub-ref.json
│ │ ├── Simulator.error-catch-all-outer-event-sub-none.bpmn
│ │ ├── Simulator.error-catch-all-outer-event-sub-none.json
│ │ ├── Simulator.error-catch-all-outer-event-sub-ref.bpmn
│ │ ├── Simulator.error-catch-all-outer-event-sub-ref.json
│ │ ├── Simulator.error-consume.bpmn
│ │ ├── Simulator.error-consume.json
│ │ ├── Simulator.error-nested-trigger-boundary.bpmn
│ │ ├── Simulator.error-nested-trigger-boundary.json
│ │ ├── Simulator.error-no-catch.bpmn
│ │ ├── Simulator.error-no-catch.json
│ │ ├── Simulator.error-rethrow.bpmn
│ │ ├── Simulator.error-rethrow.json
│ │ ├── Simulator.error-trigger-boundary.bpmn
│ │ ├── Simulator.error-trigger-boundary.json
│ │ ├── Simulator.error-trigger-event-sub-process.bpmn
│ │ ├── Simulator.error-trigger-event-sub-process.json
│ │ ├── Simulator.escalation-catch-all-boundary-none.bpmn
│ │ ├── Simulator.escalation-catch-all-boundary-none.json
│ │ ├── Simulator.escalation-catch-all-boundary-ref.bpmn
│ │ ├── Simulator.escalation-catch-all-boundary-ref.json
│ │ ├── Simulator.escalation-catch-all-inner-event-sub-none.bpmn
│ │ ├── Simulator.escalation-catch-all-inner-event-sub-none.json
│ │ ├── Simulator.escalation-catch-all-inner-event-sub-ref.bpmn
│ │ ├── Simulator.escalation-catch-all-inner-event-sub-ref.json
│ │ ├── Simulator.escalation-catch-all-outer-event-sub-none.bpmn
│ │ ├── Simulator.escalation-catch-all-outer-event-sub-none.json
│ │ ├── Simulator.escalation-catch-all-outer-event-sub-ref.bpmn
│ │ ├── Simulator.escalation-catch-all-outer-event-sub-ref.json
│ │ ├── Simulator.escalation-consume.bpmn
│ │ ├── Simulator.escalation-consume.json
│ │ ├── Simulator.escalation-no-catch.bpmn
│ │ ├── Simulator.escalation-no-catch.json
│ │ ├── Simulator.escalation-rethrow.bpmn
│ │ ├── Simulator.escalation-rethrow.json
│ │ ├── Simulator.escalation-trigger-boundary-event.bpmn
│ │ ├── Simulator.escalation-trigger-boundary-event.json
│ │ ├── Simulator.escalation-trigger-event-sub-process.bpmn
│ │ ├── Simulator.escalation-trigger-event-sub-process.json
│ │ ├── Simulator.event-based-gateway-same-events.bpmn
│ │ ├── Simulator.event-based-gateway-same-events.json
│ │ ├── Simulator.event-based-gateway.bpmn
│ │ ├── Simulator.event-based-gateway.json
│ │ ├── Simulator.event-sub-process-cancelation.bpmn
│ │ ├── Simulator.event-sub-process-cancelation.json
│ │ ├── Simulator.event-sub-process-implicit-start.bpmn
│ │ ├── Simulator.event-sub-process-implicit-start.json
│ │ ├── Simulator.event-sub-process-interrupting.bpmn
│ │ ├── Simulator.event-sub-process-interrupting.json
│ │ ├── Simulator.event-sub-process-multiple-starts.bpmn
│ │ ├── Simulator.event-sub-process-multiple-starts.json
│ │ ├── Simulator.event-sub-process-nested-cancelation-absorb-event.bpmn
│ │ ├── Simulator.event-sub-process-nested-cancelation-absorb-event.json
│ │ ├── Simulator.event-sub-process-nested-cancelation-rethrow.bpmn
│ │ ├── Simulator.event-sub-process-nested-cancelation-rethrow.json
│ │ ├── Simulator.event-sub-process-nested-cancelation-throws-error.bpmn
│ │ ├── Simulator.event-sub-process-nested-cancelation-throws-error.json
│ │ ├── Simulator.event-sub-process-nested-cancelation-throws-escalation.bpmn
│ │ ├── Simulator.event-sub-process-nested-cancelation-throws-escalation.json
│ │ ├── Simulator.event-sub-process-nested-interrupting-non-interrupting-boundary.bpmn
│ │ ├── Simulator.event-sub-process-nested-interrupting-non-interrupting-boundary.json
│ │ ├── Simulator.event-sub-process-non-interrupting.bpmn
│ │ ├── Simulator.event-sub-process-non-interrupting.json
│ │ ├── Simulator.exclusive-gateway-fork-join.bpmn
│ │ ├── Simulator.exclusive-gateway-fork-join.json
│ │ ├── Simulator.exclusive-gateway-join.bpmn
│ │ ├── Simulator.exclusive-gateway-join.json
│ │ ├── Simulator.exclusive-gateway-no-outgoings.bpmn
│ │ ├── Simulator.exclusive-gateway-no-outgoings.json
│ │ ├── Simulator.inclusive-gateway-boundary-event.bpmn
│ │ ├── Simulator.inclusive-gateway-boundary-event.json
│ │ ├── Simulator.inclusive-gateway-default-flow.bpmn
│ │ ├── Simulator.inclusive-gateway-default-flow.json
│ │ ├── Simulator.inclusive-gateway-exclusive-gateway.bpmn
│ │ ├── Simulator.inclusive-gateway-exclusive-gateway.json
│ │ ├── Simulator.inclusive-gateway-fork-join.bpmn
│ │ ├── Simulator.inclusive-gateway-fork-join.json
│ │ ├── Simulator.inclusive-gateway-incoming-flow-taken.bpmn
│ │ ├── Simulator.inclusive-gateway-incoming-flow-taken.json
│ │ ├── Simulator.inclusive-gateway-link-collapsed-subprocess.bpmn
│ │ ├── Simulator.inclusive-gateway-link-collapsed-subprocess.json
│ │ ├── Simulator.inclusive-gateway-link-event.bpmn
│ │ ├── Simulator.inclusive-gateway-link-event.json
│ │ ├── Simulator.inclusive-gateway-link-missing.bpmn
│ │ ├── Simulator.inclusive-gateway-link-missing.json
│ │ ├── Simulator.inclusive-gateway-multiple-activation.bpmn
│ │ ├── Simulator.inclusive-gateway-multiple-activation.json
│ │ ├── Simulator.inclusive-gateway-multiple-elements.bpmn
│ │ ├── Simulator.inclusive-gateway-multiple-elements.json
│ │ ├── Simulator.inclusive-gateway-multiple-link-events.bpmn
│ │ ├── Simulator.inclusive-gateway-multiple-link-events.json
│ │ ├── Simulator.inclusive-gateway-multiple-starts.bpmn
│ │ ├── Simulator.inclusive-gateway-multiple-starts.json
│ │ ├── Simulator.inclusive-gateway-no-outgoings.bpmn
│ │ ├── Simulator.inclusive-gateway-no-outgoings.json
│ │ ├── Simulator.inclusive-gateway-single-incoming.bpmn
│ │ ├── Simulator.inclusive-gateway-single-incoming.json
│ │ ├── Simulator.inclusive-gateway-single-token-pass-through.bpmn
│ │ ├── Simulator.inclusive-gateway-single-token-pass-through.json
│ │ ├── Simulator.inclusive-gateway-sync.bpmn
│ │ ├── Simulator.inclusive-gateway-sync.json
│ │ ├── Simulator.inclusive-gateway-visiting-token.bpmn
│ │ ├── Simulator.inclusive-gateway-visiting-token.json
│ │ ├── Simulator.link-event.bpmn
│ │ ├── Simulator.link-event.json
│ │ ├── Simulator.loop-0.json
│ │ ├── Simulator.loop-1.json
│ │ ├── Simulator.loop.bpmn
│ │ ├── Simulator.message-event.bpmn
│ │ ├── Simulator.message-flow-end-event-trigger-flow.bpmn
│ │ ├── Simulator.message-flow-end-event-trigger-flow.json
│ │ ├── Simulator.message-flow-pool-pool.bpmn
│ │ ├── Simulator.message-flow-pool-pool.json
│ │ ├── Simulator.message-flow-send-receive-tasks.bpmn
│ │ ├── Simulator.message-flow-send-receive-tasks.json
│ │ ├── Simulator.message-flow-send-receive.bpmn
│ │ ├── Simulator.message-flow-signal-active-participant.bpmn
│ │ ├── Simulator.message-flow-signal-active-participant.json
│ │ ├── Simulator.message-flow-task-trigger-flow.bpmn
│ │ ├── Simulator.message-flow-task-trigger-flow.json
│ │ ├── Simulator.message-flow-throw-catch-events.bpmn
│ │ ├── Simulator.message-flow-throw-catch-events.json
│ │ ├── Simulator.message-flow-trigger-event-based-gateway-multiple-events.bpmn
│ │ ├── Simulator.message-flow-trigger-event-based-gateway-multiple-events.json
│ │ ├── Simulator.message-flow-trigger-event-based-gateway.bpmn
│ │ ├── Simulator.message-flow-trigger-event-based-gateway.json
│ │ ├── Simulator.message-flow-trigger-receive-task.bpmn
│ │ ├── Simulator.message-flow-trigger-receive-task.json
│ │ ├── Simulator.message-flow-trigger-start-event.bpmn
│ │ ├── Simulator.message-flow-trigger-start-event.json
│ │ ├── Simulator.message-flow-trigger-start-multiple-events.bpmn
│ │ ├── Simulator.message-flow-trigger-start-multiple-events.json
│ │ ├── Simulator.message-flow-trigger-start-multiple-message-events.bpmn
│ │ ├── Simulator.message-flow-trigger-start-multiple-message-events.json
│ │ ├── Simulator.parallel-gateway-join-1.json
│ │ ├── Simulator.parallel-gateway-join-2.json
│ │ ├── Simulator.parallel-gateway-join-3.json
│ │ ├── Simulator.parallel-gateway-join.bpmn
│ │ ├── Simulator.parallel-gateway-stuck.bpmn
│ │ ├── Simulator.parallel-gateway-stuck.json
│ │ ├── Simulator.parallel-gateway.bpmn
│ │ ├── Simulator.parallel-gateway.json
│ │ ├── Simulator.process-implicit-start-collaboration-message-trigger.json
│ │ ├── Simulator.process-implicit-start-collaboration.bpmn
│ │ ├── Simulator.process-implicit-start-collaboration.json
│ │ ├── Simulator.process-implicit-start-no-start-events.bpmn
│ │ ├── Simulator.process-implicit-start-no-start-events.json
│ │ ├── Simulator.process-implicit-start-none-event.bpmn
│ │ ├── Simulator.process-implicit-start-none-event.json
│ │ ├── Simulator.process-implicit-start-trigger.bpmn
│ │ ├── Simulator.process-implicit-start-trigger.json
│ │ ├── Simulator.process-multiple-starts-1.json
│ │ ├── Simulator.process-multiple-starts-2.json
│ │ ├── Simulator.process-multiple-starts.bpmn
│ │ ├── Simulator.signal-consume.bpmn
│ │ ├── Simulator.signal-consume.json
│ │ ├── Simulator.signal-end-event-trigger-event-sub-process-interrupting.bpmn
│ │ ├── Simulator.signal-end-event-trigger-event-sub-process-interrupting.json
│ │ ├── Simulator.signal-end-event-trigger-sub-process-non-interrupting.bpmn
│ │ ├── Simulator.signal-end-event-trigger-sub-process-non-interrupting.json
│ │ ├── Simulator.signal-events.bpmn
│ │ ├── Simulator.signal-madness.bpmn
│ │ ├── Simulator.signal-madness.json
│ │ ├── Simulator.signal-rethrow.bpmn
│ │ ├── Simulator.signal-rethrow.json
│ │ ├── Simulator.signal-trigger-boundary-event.bpmn
│ │ ├── Simulator.signal-trigger-boundary-event.json
│ │ ├── Simulator.signal-trigger-event-based-gateway.bpmn
│ │ ├── Simulator.signal-trigger-event-based-gateway.json
│ │ ├── Simulator.signal-trigger-event-sub-process.bpmn
│ │ ├── Simulator.signal-trigger-event-sub-process.json
│ │ ├── Simulator.signal-trigger-intermediate-catch-event.bpmn
│ │ ├── Simulator.signal-trigger-intermediate-catch-event.json
│ │ ├── Simulator.signal-trigger-multiple-start-events.bpmn
│ │ ├── Simulator.signal-trigger-multiple-start-events.json
│ │ ├── Simulator.signal-trigger-start-event.bpmn
│ │ ├── Simulator.signal-trigger-start-event.json
│ │ ├── Simulator.simple-0.json
│ │ ├── Simulator.simple-1.json
│ │ ├── Simulator.simple.bpmn
│ │ ├── Simulator.simple.json
│ │ ├── Simulator.sub-process-empty-continuation.bpmn
│ │ ├── Simulator.sub-process-empty-continuation.json
│ │ ├── Simulator.sub-process-multiple-starts.bpmn
│ │ ├── Simulator.sub-process-multiple-starts.json
│ │ ├── Simulator.sub-process.bpmn
│ │ ├── Simulator.sub-process.json
│ │ ├── Simulator.task-join.bpmn
│ │ ├── Simulator.task-join.json
│ │ ├── Simulator.terminate-nested-scopes.bpmn
│ │ ├── Simulator.terminate-nested-scopes.json
│ │ ├── Simulator.terminate.bpmn
│ │ ├── Simulator.terminate.json
│ │ ├── Simulator.token-sink-all.bpmn
│ │ ├── Simulator.token-sink-task.bpmn
│ │ ├── Simulator.token-sink-task.json
│ │ ├── Simulator.transaction-cancel-from-nested-scope.bpmn
│ │ ├── Simulator.transaction-cancel-from-nested-scope.json
│ │ ├── Simulator.transaction-cancel-trigger-cancel-boundary.bpmn
│ │ ├── Simulator.transaction-cancel-trigger-cancel-boundary.json
│ │ ├── Simulator.transaction-compensation-multiple.bpmn
│ │ ├── Simulator.transaction-compensation-multiple.json
│ │ ├── Simulator.transaction-compensation.bpmn
│ │ ├── Simulator.transaction-compensation.json
│ │ ├── Simulator.transaction-error.bpmn
│ │ ├── Simulator.transaction-error.json
│ │ ├── Simulator.transaction-no-compensate-activity.bpmn
│ │ ├── Simulator.transaction-no-compensate-activity.json
│ │ ├── Simulator.transaction-terminate.bpmn
│ │ ├── Simulator.transaction-terminate.json
│ │ └── SimulatorSpec.js
│ ├── sub-process.bpmn
│ ├── transaction-event-sub-process.bpmn
│ └── transaction.bpmn
└── suite.js
└── webpack.config.js
/.github/workflows/CI.yml:
--------------------------------------------------------------------------------
1 | name: CI
2 | on: [ push, pull_request ]
3 | jobs:
4 | build:
5 | strategy:
6 | matrix:
7 | os: [ ubuntu-latest ]
8 | node-version: [ 20 ]
9 | integration-deps:
10 | - "" # as defined in package.json
11 | - "bpmn-js@17"
12 |
13 | runs-on: ${{ matrix.os }}
14 |
15 | steps:
16 | - name: Checkout
17 | uses: actions/checkout@v4
18 | - name: Use Node.js
19 | uses: actions/setup-node@v4
20 | with:
21 | node-version: ${{ matrix.node-version }}
22 | cache: 'npm'
23 | - name: Install dependencies
24 | run: npm ci
25 | - name: Install dependencies for integration test
26 | if: ${{ matrix.integration-deps != '' }}
27 | run: npm install ${{ matrix.integration-deps }}
28 | - name: Project setup
29 | uses: bpmn-io/actions/setup@latest
30 | - name: Build
31 | if: ${{ matrix.integration-deps != '' }}
32 | run: npm run all
33 | - name: Build with coverage
34 | if: ${{ matrix.integration-deps == '' }}
35 | env:
36 | COVERAGE: 1
37 | run: npm run all
38 | - name: Upload coverage
39 | if: ${{ matrix.integration-deps == '' }}
40 | uses: codecov/codecov-action@v5
41 | with:
42 | fail_ci_if_error: true
43 | env:
44 | CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
45 | - name: Update example
46 | if: ${{ github.event_name == 'push' && github.ref == 'refs/heads/main' }}
47 | env:
48 | GIT_USER_NAME: ${{secrets.BPMN_IO_USER_NAME}}
49 | GIT_USER_EMAIL: ${{secrets.BPMN_IO_EMAIL}}
50 | GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}}
51 | run: tasks/update-example
52 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | coverage
2 | example/dist
3 | lib/icons/index.js
4 | node_modules
5 | tmp
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | Copyright (c) 2014-present Camunda Services GmbH
2 |
3 | Permission is hereby granted, free of charge, to any person obtaining a copy
4 | of this software and associated documentation files (the "Software"), to deal
5 | in the Software without restriction, including without limitation the rights
6 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
7 | copies of the Software, and to permit persons to whom the Software is
8 | furnished to do so, subject to the following conditions:
9 |
10 | The above copyright notice and this permission notice shall be included in all
11 | copies or substantial portions of the Software.
12 |
13 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
19 | SOFTWARE.
20 |
--------------------------------------------------------------------------------
/docs/screenshot.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bpmn-io/bpmn-js-token-simulation/949c4343cac5de0c70653636d396382824dfa2ac/docs/screenshot.png
--------------------------------------------------------------------------------
/docs/simulation-support/README.md:
--------------------------------------------------------------------------------
1 | # Simulation Support / Scripting
2 |
3 | Use the [`simulation-support` module](../../lib/simulation-support) to drive and introspect a [token simulation instance](https://github.com/bpmn-io/bpmn-js-token-simulation) via API.
4 |
5 | [](https://codesandbox.io/s/amazing-christian-ry9yw)
6 |
7 |
8 | ## Features
9 |
10 | * Record and assert the trace of execution
11 | * Toggle pause and resume
12 | * Await element enter and exit
13 | * Trigger event / continue execution
14 |
15 |
16 | ## Usage
17 |
18 | Driver and introspection capabilities are hooked up via the [`simulation-support` module](../../lib/simulation-support):
19 |
20 | ```javascript
21 | import SimulationSupportModule from 'bpmn-js-token-simulation/lib/simulation-support';
22 |
23 | const modeler = new BpmnModeler({
24 | additionalModules: [
25 | ...,
26 | SimulationSupportModule
27 | ]
28 | });
29 | ```
30 |
31 | The [`SimulationSupport`](../../lib/simulation-support/SimulationSupport.js) service exposed by the module provides all relevant APIs:
32 |
33 | ```javascript
34 | const simulationSupport = modeler.get('simulationSupport');
35 |
36 | // enable simulation
37 | simulationSupport.toggleSimulation(true);
38 |
39 | // toggle pause on activity
40 | simulationSupport.triggerElement('UserTask_1');
41 |
42 | // start simulation
43 | simulationSupport.triggerElement('StartEvent_1');
44 |
45 | await simulationSupport.elementEnter('UserTask_1');
46 |
47 | window.alert('WANT ME TO CONTINUE?');
48 |
49 | // trigger un-pause
50 | simulationSupport.triggerElement('UserTask_1');
51 | ```
52 |
--------------------------------------------------------------------------------
/docs/simulation-support/screencapture.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bpmn-io/bpmn-js-token-simulation/949c4343cac5de0c70653636d396382824dfa2ac/docs/simulation-support/screencapture.gif
--------------------------------------------------------------------------------
/eslint.config.mjs:
--------------------------------------------------------------------------------
1 | import bpmnIoPlugin from 'eslint-plugin-bpmn-io';
2 |
3 | const files = {
4 | ignored: [
5 | 'example/dist',
6 | 'lib/icons/index.js',
7 | 'tmp'
8 | ],
9 | build: [
10 | '*.js',
11 | '*.mjs',
12 | 'tasks',
13 | 'test/reporters/fixture-reporter.js'
14 | ],
15 | test: [
16 | '**/test/**/*.js'
17 | ]
18 | };
19 |
20 | export default [
21 | {
22 | ignores: files.ignored
23 | },
24 |
25 | // build
26 | ...bpmnIoPlugin.configs.node.map(config => {
27 | return {
28 | ...config,
29 | files: files.build
30 | };
31 | }),
32 |
33 | // lib + test
34 | ...bpmnIoPlugin.configs.browser.map(config => {
35 | return {
36 | ...config,
37 | ignores: files.build
38 | };
39 | }),
40 |
41 | // test
42 | ...bpmnIoPlugin.configs.mocha.map(config => {
43 | return {
44 | ...config,
45 | files: files.test,
46 | ignores: files.build
47 | };
48 | }),
49 | {
50 | languageOptions: {
51 | globals: {
52 | sinon: true,
53 | require: true
54 | }
55 | },
56 | files: files.test
57 | },
58 |
59 | // misc
60 | // ignore first level indent in template literals
61 | {
62 | rules: {
63 | indent: [ 2, 2, {
64 | VariableDeclarator: { 'var': 2, 'let': 2, 'const': 3 },
65 | FunctionDeclaration: { 'body': 1, 'parameters': 2 },
66 | FunctionExpression: { 'body': 1, 'parameters': 2 },
67 | ignoredNodes: [ 'TemplateLiteral > *' ]
68 | } ]
69 | }
70 | }
71 | ];
72 |
--------------------------------------------------------------------------------
/example/favicon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bpmn-io/bpmn-js-token-simulation/949c4343cac5de0c70653636d396382824dfa2ac/example/favicon.png
--------------------------------------------------------------------------------
/example/screenshot.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bpmn-io/bpmn-js-token-simulation/949c4343cac5de0c70653636d396382824dfa2ac/example/screenshot.png
--------------------------------------------------------------------------------
/example/viewer.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | Viewer | BPMN Token Simulation Demo
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
Hint: Drop a diagram to open
28 |
29 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
--------------------------------------------------------------------------------
/lib/animation/behaviors/AnimatedMessageFlowBehavior.js:
--------------------------------------------------------------------------------
1 | import MessageFlowBehavior from '../../simulator/behaviors/MessageFlowBehavior';
2 |
3 | import inherits from 'inherits-browser';
4 |
5 |
6 | export default function AnimatedMessageFlowBehavior(injector, animation) {
7 | injector.invoke(MessageFlowBehavior, this);
8 |
9 | this._animation = animation;
10 | }
11 |
12 | inherits(AnimatedMessageFlowBehavior, MessageFlowBehavior);
13 |
14 | AnimatedMessageFlowBehavior.$inject = [
15 | 'injector',
16 | 'animation'
17 | ];
18 |
19 | AnimatedMessageFlowBehavior.prototype.signal = function(context) {
20 |
21 | const {
22 | element,
23 | scope
24 | } = context;
25 |
26 | this._animation.animate(element, scope, () => {
27 | MessageFlowBehavior.prototype.signal.call(this, context);
28 | });
29 | };
30 |
--------------------------------------------------------------------------------
/lib/animation/behaviors/AnimatedSequenceFlowBehavior.js:
--------------------------------------------------------------------------------
1 | import SequenceFlowBehavior from '../../simulator/behaviors/SequenceFlowBehavior';
2 |
3 | import inherits from 'inherits-browser';
4 |
5 |
6 | export default function AnimatedSequenceFlowBehavior(injector, animation) {
7 | injector.invoke(SequenceFlowBehavior, this);
8 |
9 | this._animation = animation;
10 | }
11 |
12 | inherits(AnimatedSequenceFlowBehavior, SequenceFlowBehavior);
13 |
14 | AnimatedSequenceFlowBehavior.$inject = [
15 | 'injector',
16 | 'animation'
17 | ];
18 |
19 | AnimatedSequenceFlowBehavior.prototype.enter = function(context) {
20 |
21 | const {
22 | element,
23 | scope
24 | } = context;
25 |
26 | this._animation.animate(element, scope, () => {
27 | SequenceFlowBehavior.prototype.enter.call(this, context);
28 | });
29 | };
--------------------------------------------------------------------------------
/lib/animation/behaviors/index.js:
--------------------------------------------------------------------------------
1 | import AnimatedMessageFlowBehavior from './AnimatedMessageFlowBehavior';
2 | import AnimatedSequenceFlowBehavior from './AnimatedSequenceFlowBehavior';
3 |
4 | export default {
5 | sequenceFlowBehavior: [ 'type', AnimatedSequenceFlowBehavior ],
6 | messageFlowBehavior: [ 'type', AnimatedMessageFlowBehavior ]
7 | };
--------------------------------------------------------------------------------
/lib/animation/index.js:
--------------------------------------------------------------------------------
1 | import AnimatedBehaviorsModule from './behaviors';
2 | import ScopeFilterModule from '../features/scope-filter';
3 | import SimulatorModule from '../simulator';
4 |
5 | import Animation from './Animation';
6 |
7 | export default {
8 | __depends__: [
9 | SimulatorModule,
10 | AnimatedBehaviorsModule,
11 | ScopeFilterModule
12 | ],
13 | animation: [ 'type', Animation ]
14 | };
--------------------------------------------------------------------------------
/lib/base.js:
--------------------------------------------------------------------------------
1 | import SimulatorModule from './simulator';
2 | import AnimationModule from './animation';
3 | import ColoredScopesModule from './features/colored-scopes';
4 | import ContextPadsModule from './features/context-pads';
5 | import SimulationStateModule from './features/simulation-state';
6 | import ShowScopesModule from './features/show-scopes';
7 | import LogModule from './features/log';
8 | import ElementSupportModule from './features/element-support';
9 | import PauseSimulationModule from './features/pause-simulation';
10 | import ResetSimulationModule from './features/reset-simulation';
11 | import TokenCountModule from './features/token-count';
12 | import SetAnimationSpeedModule from './features/set-animation-speed';
13 |
14 | import ExclusiveGatewaySettingsModule from './features/exclusive-gateway-settings';
15 | import NeutralElementColors from './features/neutral-element-colors';
16 | import InclusiveGatewaySettingsModule from './features/inclusive-gateway-settings';
17 | import TokenSimulationPaletteModule from './features/palette';
18 |
19 | export default {
20 | __depends__: [
21 | SimulatorModule,
22 | AnimationModule,
23 | ColoredScopesModule,
24 | ContextPadsModule,
25 | SimulationStateModule,
26 | ShowScopesModule,
27 | LogModule,
28 | ElementSupportModule,
29 | PauseSimulationModule,
30 | ResetSimulationModule,
31 | TokenCountModule,
32 | SetAnimationSpeedModule,
33 | ExclusiveGatewaySettingsModule,
34 | NeutralElementColors,
35 | InclusiveGatewaySettingsModule,
36 | TokenSimulationPaletteModule
37 | ]
38 | };
--------------------------------------------------------------------------------
/lib/features/colored-scopes/ColoredScopes.js:
--------------------------------------------------------------------------------
1 | import randomColor from 'randomcolor';
2 |
3 | import {
4 | SCOPE_CREATE_EVENT
5 | } from '../../util/EventHelper';
6 |
7 | const HIGH_PRIORITY = 1500;
8 |
9 |
10 | export default function ColoredScopes(eventBus) {
11 |
12 | const colors = randomColor({
13 | count: 60
14 | }).filter(c => getContrastYIQ(c.substring(1)) < 200);
15 |
16 | function getContrastYIQ(hexcolor) {
17 | var r = parseInt(hexcolor.substr(0,2),16);
18 | var g = parseInt(hexcolor.substr(2,2),16);
19 | var b = parseInt(hexcolor.substr(4,2),16);
20 | var yiq = ((r * 299) + (g * 587) + (b * 114)) / 1000;
21 | return yiq;
22 | }
23 |
24 | let colorsIdx = 0;
25 |
26 | function getColors(scope) {
27 | const {
28 | element
29 | } = scope;
30 |
31 | if (element && element.type === 'bpmn:MessageFlow') {
32 | return {
33 | primary: '#999',
34 | auxiliary: '#FFF'
35 | };
36 | }
37 |
38 | if (scope.parent) {
39 | return scope.parent.colors;
40 | }
41 |
42 | const primary = colors[ (colorsIdx++) % colors.length ];
43 |
44 | return {
45 | primary,
46 | auxiliary: getContrastYIQ(primary) >= 128 ? '#111' : '#fff'
47 | };
48 | }
49 |
50 | eventBus.on(SCOPE_CREATE_EVENT, HIGH_PRIORITY, event => {
51 |
52 | const {
53 | scope
54 | } = event;
55 |
56 | scope.colors = getColors(scope);
57 | });
58 | }
59 |
60 | ColoredScopes.$inject = [
61 | 'eventBus'
62 | ];
--------------------------------------------------------------------------------
/lib/features/colored-scopes/index.js:
--------------------------------------------------------------------------------
1 | import ColoredScopes from './ColoredScopes';
2 |
3 | export default {
4 | __init__: [
5 | 'coloredScopes'
6 | ],
7 | coloredScopes: [ 'type', ColoredScopes ]
8 | };
--------------------------------------------------------------------------------
/lib/features/context-pads/handler/ExclusiveGatewayHandler.js:
--------------------------------------------------------------------------------
1 | import {
2 | is
3 | } from 'bpmn-js/lib/util/ModelUtil';
4 |
5 | import {
6 | ForkIcon
7 | } from '../../../icons';
8 |
9 |
10 | export default function ExclusiveGatewayHandler(exclusiveGatewaySettings) {
11 | this._exclusiveGatewaySettings = exclusiveGatewaySettings;
12 | }
13 |
14 | ExclusiveGatewayHandler.prototype.createContextPads = function(element) {
15 |
16 | const outgoingFlows = element.outgoing.filter(function(outgoing) {
17 | return is(outgoing, 'bpmn:SequenceFlow');
18 | });
19 |
20 | if (outgoingFlows.length < 2) {
21 | return;
22 | }
23 |
24 | const html = `
25 |
26 | ${ForkIcon()}
27 |
28 | `;
29 |
30 | const action = () => {
31 | this._exclusiveGatewaySettings.setSequenceFlow(element);
32 | };
33 |
34 | return [
35 | {
36 | action,
37 | element,
38 | html
39 | }
40 | ];
41 | };
42 |
43 | ExclusiveGatewayHandler.$inject = [
44 | 'exclusiveGatewaySettings'
45 | ];
--------------------------------------------------------------------------------
/lib/features/context-pads/handler/InclusiveGatewayHandler.js:
--------------------------------------------------------------------------------
1 | import {
2 | ForkIcon
3 | } from '../../../icons';
4 |
5 | import {
6 | getBusinessObject
7 | } from 'bpmn-js/lib/util/ModelUtil';
8 |
9 | import { isSequenceFlow } from '../../../simulator/util/ModelUtil';
10 |
11 | export default function InclusiveGatewayHandler(inclusiveGatewaySettings) {
12 | this._inclusiveGatewaySettings = inclusiveGatewaySettings;
13 | }
14 |
15 | InclusiveGatewayHandler.prototype.createContextPads = function(element) {
16 | const outgoingFlows = element.outgoing.filter(isSequenceFlow);
17 |
18 | if (outgoingFlows.length < 2) {
19 | return;
20 | }
21 |
22 | const nonDefaultFlows = outgoingFlows.filter(outgoing => {
23 | const flowBo = getBusinessObject(outgoing),
24 | gatewayBo = getBusinessObject(element);
25 |
26 | return gatewayBo.default !== flowBo;
27 | });
28 |
29 | const html = `
30 |
31 | ${ForkIcon()}
32 |
33 | `;
34 |
35 | return nonDefaultFlows.map(sequenceFlow => {
36 | const action = () => {
37 | this._inclusiveGatewaySettings.toggleSequenceFlow(element, sequenceFlow);
38 | };
39 |
40 | return {
41 | action,
42 | element: sequenceFlow,
43 | html
44 | };
45 | });
46 | };
47 |
48 | InclusiveGatewayHandler.$inject = [
49 | 'inclusiveGatewaySettings'
50 | ];
--------------------------------------------------------------------------------
/lib/features/context-pads/handler/TriggerHandler.js:
--------------------------------------------------------------------------------
1 | import {
2 | PlayIcon
3 | } from '../../../icons';
4 |
5 |
6 | export default function TriggerHandler(simulator) {
7 | this._simulator = simulator;
8 | }
9 |
10 | TriggerHandler.$inject = [
11 | 'simulator'
12 | ];
13 |
14 | TriggerHandler.prototype.createContextPads = function(element) {
15 | return [
16 | this.createTriggerContextPad(element)
17 | ];
18 | };
19 |
20 | TriggerHandler.prototype.createTriggerContextPad = function(element) {
21 |
22 | const contexts = () => {
23 | const subscriptions = this._findSubscriptions({
24 | element
25 | });
26 |
27 | const sortedSubscriptions = subscriptions.slice().sort((a, b) => {
28 | return a.event.type === 'none' ? 1 : -1;
29 | });
30 |
31 | return sortedSubscriptions;
32 | };
33 |
34 | const html = `
35 |
36 | ${PlayIcon()}
37 |
38 | `;
39 |
40 | const action = (subscriptions) => {
41 |
42 | const {
43 | event,
44 | scope
45 | } = subscriptions[0];
46 |
47 | return this._simulator.trigger({
48 | event,
49 | scope
50 | });
51 | };
52 |
53 | return {
54 | action,
55 | element,
56 | html,
57 | contexts
58 | };
59 | };
60 |
61 | TriggerHandler.prototype._findSubscriptions = function(options) {
62 | return this._simulator.findSubscriptions(options);
63 | };
--------------------------------------------------------------------------------
/lib/features/context-pads/index.js:
--------------------------------------------------------------------------------
1 | import ContextPads from './ContextPads';
2 |
3 | import ScopeFilterModule from '../scope-filter';
4 |
5 | export default {
6 | __depends__: [
7 | ScopeFilterModule
8 | ],
9 | __init__: [
10 | 'contextPads'
11 | ],
12 | contextPads: [ 'type', ContextPads ]
13 | };
--------------------------------------------------------------------------------
/lib/features/disable-modeling/index.js:
--------------------------------------------------------------------------------
1 | import DisableModeling from './DisableModeling';
2 |
3 | export default {
4 | __init__: [
5 | 'disableModeling'
6 | ],
7 | disableModeling: [ 'type', DisableModeling ]
8 | };
--------------------------------------------------------------------------------
/lib/features/editor-actions/EditorActions.js:
--------------------------------------------------------------------------------
1 | import { TOGGLE_MODE_EVENT } from '../../util/EventHelper';
2 |
3 | export default function EditorActions(
4 | eventBus,
5 | toggleMode,
6 | pauseSimulation,
7 | resetSimulation,
8 | editorActions,
9 | injector
10 | ) {
11 | var active = false;
12 |
13 | editorActions.register({
14 | toggleTokenSimulation: function() {
15 | toggleMode.toggleMode();
16 | }
17 | });
18 |
19 | editorActions.register({
20 | togglePauseTokenSimulation: function() {
21 | active && pauseSimulation.toggle();
22 | }
23 | });
24 |
25 | editorActions.register({
26 | resetTokenSimulation: function() {
27 | active && resetSimulation.resetSimulation();
28 | }
29 | });
30 |
31 | const log = injector.get('log', false);
32 |
33 | log && editorActions.register({
34 | toggleTokenSimulationLog: function() {
35 | log.toggle();
36 | }
37 | });
38 |
39 | eventBus.on(TOGGLE_MODE_EVENT, (event) => {
40 | active = event.active;
41 | });
42 | }
43 |
44 | EditorActions.$inject = [
45 | 'eventBus',
46 | 'toggleMode',
47 | 'pauseSimulation',
48 | 'resetSimulation',
49 | 'editorActions',
50 | 'injector'
51 | ];
--------------------------------------------------------------------------------
/lib/features/editor-actions/index.js:
--------------------------------------------------------------------------------
1 | import EditorActions from './EditorActions';
2 |
3 | export default {
4 | __init__: [
5 | 'tokenSimulationEditorActions'
6 | ],
7 | tokenSimulationEditorActions: [ 'type', EditorActions ]
8 | };
--------------------------------------------------------------------------------
/lib/features/element-colors/index.js:
--------------------------------------------------------------------------------
1 | import ElementColors from './ElementColors';
2 |
3 | export default {
4 | elementColors: [ 'type', ElementColors ]
5 | };
--------------------------------------------------------------------------------
/lib/features/element-notifications/ElementNotifications.js:
--------------------------------------------------------------------------------
1 | import {
2 | domify
3 | } from 'min-dom';
4 |
5 | import {
6 | TOGGLE_MODE_EVENT,
7 | RESET_SIMULATION_EVENT,
8 | SCOPE_CREATE_EVENT
9 | } from '../../util/EventHelper';
10 |
11 | const OFFSET_TOP = -15;
12 | const OFFSET_RIGHT = 15;
13 |
14 |
15 | export default function ElementNotifications(overlays, eventBus) {
16 | this._overlays = overlays;
17 |
18 | eventBus.on([
19 | RESET_SIMULATION_EVENT,
20 | SCOPE_CREATE_EVENT,
21 | TOGGLE_MODE_EVENT
22 | ], () => {
23 | this.clear();
24 | });
25 | }
26 |
27 | ElementNotifications.prototype.addElementNotification = function(element, options) {
28 | const position = {
29 | top: OFFSET_TOP,
30 | right: OFFSET_RIGHT
31 | };
32 |
33 | const {
34 | type,
35 | icon,
36 | text,
37 | scope = {}
38 | } = options;
39 |
40 | const colors = scope.colors;
41 |
42 | const colorMarkup = colors
43 | ? `style="color: ${colors.auxiliary}; background: ${colors.primary}"`
44 | : '';
45 |
46 | const html = domify(`
47 |
48 | ${ icon || '' }
49 | ${ text }
50 |
51 | `);
52 |
53 | this._overlays.add(element, 'bts-element-notification', {
54 | position,
55 | html: html,
56 | show: {
57 | minZoom: 0.5
58 | }
59 | });
60 | };
61 |
62 | ElementNotifications.prototype.clear = function() {
63 | this._overlays.remove({ type: 'bts-element-notification' });
64 | };
65 |
66 | ElementNotifications.prototype.removeElementNotification = function(element) {
67 | this._overlays.remove({ element: element });
68 | };
69 |
70 | ElementNotifications.$inject = [ 'overlays', 'eventBus' ];
--------------------------------------------------------------------------------
/lib/features/element-notifications/index.js:
--------------------------------------------------------------------------------
1 | import ElementNotifications from './ElementNotifications';
2 |
3 | export default {
4 | elementNotifications: [ 'type', ElementNotifications ]
5 | };
--------------------------------------------------------------------------------
/lib/features/element-support/index.js:
--------------------------------------------------------------------------------
1 | import ElementSupport from './ElementSupport';
2 | import ElementNotificationsModule from '../element-notifications';
3 | import NotificationsModule from '../notifications';
4 |
5 | export default {
6 | __depends__: [
7 | ElementNotificationsModule,
8 | NotificationsModule
9 | ],
10 | __init__: [ 'elementSupport' ],
11 | elementSupport: [ 'type', ElementSupport ]
12 | };
13 |
--------------------------------------------------------------------------------
/lib/features/exclusive-gateway-settings/index.js:
--------------------------------------------------------------------------------
1 | import ExclusiveGatewaySettings from './ExclusiveGatewaySettings';
2 | import ElementColorsModule from '../element-colors';
3 | import SimulationStylesModule from '../simulation-styles';
4 |
5 | export default {
6 | __depends__: [
7 | ElementColorsModule,
8 | SimulationStylesModule
9 | ],
10 | exclusiveGatewaySettings: [ 'type', ExclusiveGatewaySettings ]
11 | };
--------------------------------------------------------------------------------
/lib/features/inclusive-gateway-settings/index.js:
--------------------------------------------------------------------------------
1 | import InclusiveGatewaySettings from './InclusiveGatewaySettings';
2 | import ElementColorsModule from '../element-colors';
3 | import SimulationStylesModule from '../simulation-styles';
4 |
5 | export default {
6 | __depends__: [
7 | ElementColorsModule,
8 | SimulationStylesModule
9 | ],
10 | inclusiveGatewaySettings: [ 'type', InclusiveGatewaySettings ]
11 | };
--------------------------------------------------------------------------------
/lib/features/keyboard-bindings/index.js:
--------------------------------------------------------------------------------
1 | import KeyboardBindings from './KeyboardBindings';
2 |
3 | export default {
4 | __init__: [
5 | 'tokenSimulationKeyboardBindings'
6 | ],
7 | tokenSimulationKeyboardBindings: [ 'type', KeyboardBindings ]
8 | };
--------------------------------------------------------------------------------
/lib/features/log/index.js:
--------------------------------------------------------------------------------
1 | import Log from './Log';
2 |
3 | import ScopeFilterModule from '../scope-filter';
4 | import NotificationsModule from '../notifications';
5 |
6 | export default {
7 | __depends__: [
8 | NotificationsModule,
9 | ScopeFilterModule
10 | ],
11 | __init__: [
12 | 'log'
13 | ],
14 | log: [ 'type', Log ]
15 | };
--------------------------------------------------------------------------------
/lib/features/neutral-element-colors/NeutralElementColors.js:
--------------------------------------------------------------------------------
1 | import {
2 | TOGGLE_MODE_EVENT
3 | } from '../../util/EventHelper';
4 |
5 | const ID = 'neutral-element-colors';
6 |
7 | export default function NeutralElementColors(
8 | eventBus, elementRegistry, elementColors) {
9 |
10 | this._elementRegistry = elementRegistry;
11 | this._elementColors = elementColors;
12 |
13 | eventBus.on(TOGGLE_MODE_EVENT, event => {
14 | const { active } = event;
15 |
16 | if (active) {
17 | this._setNeutralColors();
18 | }
19 | });
20 | }
21 |
22 | NeutralElementColors.prototype._setNeutralColors = function() {
23 | this._elementRegistry.forEach(element => {
24 | this._elementColors.add(element, ID, {
25 | stroke: '#212121',
26 | fill: '#fff'
27 | });
28 | });
29 | };
30 |
31 | NeutralElementColors.$inject = [
32 | 'eventBus',
33 | 'elementRegistry',
34 | 'elementColors'
35 | ];
--------------------------------------------------------------------------------
/lib/features/neutral-element-colors/index.js:
--------------------------------------------------------------------------------
1 | import NeutralElementColors from './NeutralElementColors';
2 | import ElementColorsModule from '../element-colors';
3 |
4 | export default {
5 | __depends__: [ ElementColorsModule ],
6 | __init__: [
7 | 'neutralElementColors'
8 | ],
9 | neutralElementColors: [ 'type', NeutralElementColors ]
10 | };
--------------------------------------------------------------------------------
/lib/features/notifications/index.js:
--------------------------------------------------------------------------------
1 | import ScopeFilterModule from '../scope-filter';
2 |
3 | import Notifications from './Notifications';
4 |
5 | export default {
6 | __depends__: [
7 | ScopeFilterModule
8 | ],
9 | notifications: [ 'type', Notifications ]
10 | };
--------------------------------------------------------------------------------
/lib/features/palette/Palette.js:
--------------------------------------------------------------------------------
1 | import {
2 | domify,
3 | classes as domClasses
4 | } from 'min-dom';
5 |
6 | import {
7 | TOGGLE_MODE_EVENT
8 | } from '../../util/EventHelper';
9 |
10 |
11 | export default function Palette(eventBus, canvas) {
12 | var self = this;
13 |
14 | this._canvas = canvas;
15 |
16 | this.entries = [];
17 |
18 | this._init();
19 |
20 | eventBus.on(TOGGLE_MODE_EVENT, function(context) {
21 | var active = context.active;
22 |
23 | if (active) {
24 | domClasses(self.container).remove('hidden');
25 | } else {
26 | domClasses(self.container).add('hidden');
27 | }
28 | });
29 | }
30 |
31 | Palette.prototype._init = function() {
32 | this.container = domify('');
33 |
34 | this._canvas.getContainer().appendChild(this.container);
35 | };
36 |
37 | Palette.prototype.addEntry = function(entry, index) {
38 | var childIndex = 0;
39 |
40 | this.entries.forEach(function(entry) {
41 | if (index >= entry.index) {
42 | childIndex++;
43 | }
44 | });
45 |
46 | this.container.insertBefore(entry, this.container.childNodes[childIndex]);
47 |
48 | this.entries.push({
49 | entry: entry,
50 | index: index
51 | });
52 | };
53 |
54 | Palette.$inject = [ 'eventBus', 'canvas' ];
--------------------------------------------------------------------------------
/lib/features/palette/index.js:
--------------------------------------------------------------------------------
1 | import Palette from './Palette';
2 |
3 | export default {
4 | __init__: [
5 | 'tokenSimulationPalette'
6 | ],
7 | tokenSimulationPalette: [ 'type', Palette ]
8 | };
--------------------------------------------------------------------------------
/lib/features/pause-simulation/index.js:
--------------------------------------------------------------------------------
1 | import PauseSimulation from './PauseSimulation';
2 |
3 | import NotificationsModule from '../notifications';
4 |
5 | export default {
6 | __depends__: [
7 | NotificationsModule
8 | ],
9 | __init__: [
10 | 'pauseSimulation'
11 | ],
12 | pauseSimulation: [ 'type', PauseSimulation ]
13 | };
--------------------------------------------------------------------------------
/lib/features/reset-simulation/ResetSimulation.js:
--------------------------------------------------------------------------------
1 | import {
2 | domify,
3 | classes as domClasses,
4 | event as domEvent
5 | } from 'min-dom';
6 |
7 | import {
8 | TOGGLE_MODE_EVENT,
9 | RESET_SIMULATION_EVENT,
10 | SCOPE_CREATE_EVENT
11 | } from '../../util/EventHelper';
12 |
13 | import {
14 | ResetIcon
15 | } from '../../icons';
16 |
17 |
18 | export default function ResetSimulation(eventBus, tokenSimulationPalette, notifications) {
19 | this._eventBus = eventBus;
20 | this._tokenSimulationPalette = tokenSimulationPalette;
21 | this._notifications = notifications;
22 |
23 | this._init();
24 |
25 | eventBus.on(SCOPE_CREATE_EVENT, () => {
26 | domClasses(this._paletteEntry).remove('disabled');
27 | });
28 |
29 | eventBus.on(TOGGLE_MODE_EVENT, (event) => {
30 | const active = this._active = event.active;
31 |
32 | if (!active) {
33 | this.resetSimulation();
34 | }
35 | });
36 | }
37 |
38 | ResetSimulation.prototype._init = function() {
39 | this._paletteEntry = domify(`
40 |
41 | ${ ResetIcon() }
42 |
43 | `);
44 |
45 | domEvent.bind(this._paletteEntry, 'click', () => {
46 | this.resetSimulation();
47 |
48 | this._notifications.showNotification({
49 | text: 'Reset Simulation',
50 | type: 'info'
51 | });
52 | });
53 |
54 | this._tokenSimulationPalette.addEntry(this._paletteEntry, 2);
55 | };
56 |
57 | ResetSimulation.prototype.resetSimulation = function() {
58 | domClasses(this._paletteEntry).add('disabled');
59 |
60 | this._eventBus.fire(RESET_SIMULATION_EVENT);
61 | };
62 |
63 | ResetSimulation.$inject = [
64 | 'eventBus',
65 | 'tokenSimulationPalette',
66 | 'notifications'
67 | ];
--------------------------------------------------------------------------------
/lib/features/reset-simulation/index.js:
--------------------------------------------------------------------------------
1 | import ResetSimulation from './ResetSimulation';
2 |
3 | import NotificationsModule from '../notifications';
4 |
5 | export default {
6 | __depends__: [
7 | NotificationsModule
8 | ],
9 | __init__: [
10 | 'resetSimulation'
11 | ],
12 | resetSimulation: [ 'type', ResetSimulation ]
13 | };
--------------------------------------------------------------------------------
/lib/features/scope-filter/index.js:
--------------------------------------------------------------------------------
1 | import ScopeFilter from './ScopeFilter';
2 |
3 | export default {
4 | scopeFilter: [ 'type', ScopeFilter ]
5 | };
--------------------------------------------------------------------------------
/lib/features/set-animation-speed/index.js:
--------------------------------------------------------------------------------
1 | import SetAnimationSpeed from './SetAnimationSpeed';
2 |
3 | export default {
4 | __init__: [
5 | 'setAnimationSpeed'
6 | ],
7 | setAnimationSpeed: [ 'type', SetAnimationSpeed ]
8 | };
--------------------------------------------------------------------------------
/lib/features/show-scopes/index.js:
--------------------------------------------------------------------------------
1 | import ShowScopes from './ShowScopes';
2 |
3 | import ScopeFilterModule from '../scope-filter';
4 | import SimulationStylesModule from '../simulation-styles';
5 |
6 | export default {
7 | __depends__: [
8 | ScopeFilterModule,
9 | SimulationStylesModule
10 | ],
11 | __init__: [
12 | 'showScopes'
13 | ],
14 | showScopes: [ 'type', ShowScopes ]
15 | };
--------------------------------------------------------------------------------
/lib/features/simulation-state/SimulationState.js:
--------------------------------------------------------------------------------
1 | import {
2 | SCOPE_DESTROYED_EVENT
3 | } from '../../util/EventHelper';
4 |
5 | import {
6 | CheckCircleIcon
7 | } from '../../icons';
8 |
9 |
10 | export default function SimulationState(
11 | eventBus,
12 | simulator,
13 | elementNotifications) {
14 |
15 | eventBus.on(SCOPE_DESTROYED_EVENT, event => {
16 | const {
17 | scope
18 | } = event;
19 |
20 | const {
21 | destroyInitiator,
22 | element: scopeElement
23 | } = scope;
24 |
25 | if (!scope.completed || !destroyInitiator) {
26 | return;
27 | }
28 |
29 | const processScopes = [
30 | 'bpmn:Process',
31 | 'bpmn:Participant'
32 | ];
33 |
34 | if (!processScopes.includes(scopeElement.type)) {
35 | return;
36 | }
37 |
38 | elementNotifications.addElementNotification(destroyInitiator.element, {
39 | type: 'success',
40 | icon: CheckCircleIcon(),
41 | text: 'Finished',
42 | scope
43 | });
44 | });
45 | }
46 |
47 | SimulationState.$inject = [
48 | 'eventBus',
49 | 'simulator',
50 | 'elementNotifications'
51 | ];
--------------------------------------------------------------------------------
/lib/features/simulation-state/index.js:
--------------------------------------------------------------------------------
1 | import SimulationState from './SimulationState';
2 |
3 | import ElementNotificationsModule from '../element-notifications';
4 | import NotificationsModule from '../notifications';
5 |
6 | export default {
7 | __depends__: [
8 | ElementNotificationsModule,
9 | NotificationsModule
10 | ],
11 | __init__: [
12 | 'simulationState'
13 | ],
14 | simulationState: [ 'type', SimulationState ]
15 | };
--------------------------------------------------------------------------------
/lib/features/simulation-styles/SimulationStyles.js:
--------------------------------------------------------------------------------
1 | export default function SimulationStyles() {
2 | this._cache = {};
3 | }
4 |
5 | SimulationStyles.$inject = [];
6 |
7 |
8 | SimulationStyles.prototype.get = function(prop) {
9 |
10 | const cachedValue = this._cache[prop];
11 |
12 | if (cachedValue) {
13 | return cachedValue;
14 | }
15 |
16 | if (!this._computedStyle) {
17 | this._computedStyle = this._getComputedStyle();
18 | }
19 |
20 | return this._cache[prop] = this._computedStyle.getPropertyValue(prop).trim();
21 | };
22 |
23 | SimulationStyles.prototype._getComputedStyle = function() {
24 |
25 | const get = typeof getComputedStyle === 'function'
26 | ? getComputedStyle
27 | : getComputedStyleMock;
28 |
29 | const element = typeof document !== 'undefined'
30 | ? document.documentElement
31 | : {};
32 |
33 | return get(element);
34 | };
35 |
36 |
37 | // helpers //////////////////
38 |
39 | function getComputedStyleMock() {
40 | return {
41 | getPropertyValue() {
42 | return '';
43 | }
44 | };
45 | }
--------------------------------------------------------------------------------
/lib/features/simulation-styles/index.js:
--------------------------------------------------------------------------------
1 | import SimulationStyles from './SimulationStyles';
2 |
3 | export default {
4 | simulationStyles: [ 'type', SimulationStyles ]
5 | };
--------------------------------------------------------------------------------
/lib/features/toggle-mode/modeler/index.js:
--------------------------------------------------------------------------------
1 | import ToggleMode from './ToggleMode';
2 |
3 | export default {
4 | __init__: [
5 | 'toggleMode'
6 | ],
7 | toggleMode: [ 'type', ToggleMode ]
8 | };
--------------------------------------------------------------------------------
/lib/features/toggle-mode/viewer/index.js:
--------------------------------------------------------------------------------
1 | import ToggleMode from './ToggleMode';
2 |
3 | export default {
4 | __init__: [
5 | 'toggleMode'
6 | ],
7 | toggleMode: [ 'type', ToggleMode ]
8 | };
--------------------------------------------------------------------------------
/lib/features/token-count/index.js:
--------------------------------------------------------------------------------
1 | import TokenCount from './TokenCount';
2 |
3 | import ScopeFilterModule from '../scope-filter';
4 | import SimulationStylesModule from '../simulation-styles';
5 |
6 | export default {
7 | __depends__: [
8 | ScopeFilterModule,
9 | SimulationStylesModule
10 | ],
11 | __init__: [
12 | 'tokenCount'
13 | ],
14 | tokenCount: [ 'type', TokenCount ]
15 | };
--------------------------------------------------------------------------------
/lib/index.js:
--------------------------------------------------------------------------------
1 | export { default } from './modeler';
2 |
--------------------------------------------------------------------------------
/lib/modeler.js:
--------------------------------------------------------------------------------
1 | import BaseModule from './base';
2 | import DisableModelingModule from './features/disable-modeling';
3 |
4 | import ToggleModeModule from './features/toggle-mode/modeler';
5 | import TokenSimulationEditorActionsModule from './features/editor-actions';
6 | import TokenSimulationKeyboardBindingsModule from './features/keyboard-bindings';
7 |
8 | export default {
9 | __depends__: [
10 | BaseModule,
11 | DisableModelingModule,
12 | ToggleModeModule,
13 | TokenSimulationEditorActionsModule,
14 | TokenSimulationKeyboardBindingsModule
15 | ]
16 | };
--------------------------------------------------------------------------------
/lib/simulation-support/SimulationTrace.js:
--------------------------------------------------------------------------------
1 | import * as AllEvents from '../util/EventHelper';
2 |
3 | import {
4 | assign,
5 | forEach
6 | } from 'min-dash';
7 |
8 | const VERY_HIGH_PRIORITY = 100000;
9 |
10 |
11 | /**
12 | * A utility that traces everything that is happening
13 | * on the diagram. Tracing can be started, stopped and cleared.
14 | *
15 | * @param {EventBus} eventBus
16 | */
17 | export default function SimulationTrace(eventBus) {
18 | this._eventBus = eventBus;
19 |
20 | this._events = [];
21 |
22 | this._log = this._log.bind(this);
23 | }
24 |
25 | SimulationTrace.$inject = [ 'eventBus' ];
26 |
27 | SimulationTrace.prototype._log = function(event) {
28 | this._events.push(assign({}, event));
29 | };
30 |
31 | SimulationTrace.prototype.start = function() {
32 | forEach(AllEvents, event => {
33 | this._eventBus.on(event, VERY_HIGH_PRIORITY, this._log);
34 | });
35 | };
36 |
37 | SimulationTrace.prototype.stop = function() {
38 | forEach(AllEvents, event => {
39 | this._eventBus.off(event, this._log);
40 | });
41 | };
42 |
43 | SimulationTrace.prototype.getAll = function() {
44 | return this._events;
45 | };
--------------------------------------------------------------------------------
/lib/simulation-support/index.js:
--------------------------------------------------------------------------------
1 | import SimulationTrace from './SimulationTrace';
2 | import SimulationSupport from './SimulationSupport';
3 |
4 | import {
5 | TRACE_EVENT
6 | } from '../util/EventHelper';
7 |
8 | import {
9 | ENTER_EVENT,
10 | EXIT_EVENT
11 | } from './SimulationSupport';
12 |
13 |
14 | export default {
15 | __init__: [ 'eventBus', function(eventBus) {
16 | eventBus.on(TRACE_EVENT, function(event) {
17 |
18 | if (event.action === 'enter') {
19 | eventBus.fire(ENTER_EVENT, event);
20 | }
21 |
22 | if (event.action === 'exit') {
23 | eventBus.fire(EXIT_EVENT, event);
24 | }
25 | });
26 | } ],
27 | simulationTrace: [ 'type', SimulationTrace ],
28 | simulationSupport: [ 'type', SimulationSupport ]
29 | };
30 |
--------------------------------------------------------------------------------
/lib/simulator/ScopeTraits.js:
--------------------------------------------------------------------------------
1 | /* eslint no-bitwise: off */
2 |
3 | const ACTIVATED = 1;
4 | const RUNNING = 1 << 1;
5 | const ENDING = 1 << 2;
6 | const ENDED = 1 << 3;
7 | const DESTROYED = 1 << 4;
8 | const FAILED = 1 << 5;
9 | const TERMINATED = 1 << 6;
10 | const CANCELED = 1 << 7;
11 | const COMPLETED = 1 << 8;
12 | const COMPENSABLE = 1 << 9;
13 |
14 | const ACTIVE = ACTIVATED | RUNNING | ENDING;
15 | const NOT_DEAD = ACTIVATED | ENDED;
16 |
17 | export const ScopeTraits = Object.freeze({
18 | ACTIVATED,
19 | RUNNING,
20 | ENDING,
21 | ENDED,
22 | DESTROYED,
23 | FAILED,
24 | TERMINATED,
25 | CANCELED,
26 | COMPLETED,
27 | COMPENSABLE,
28 | ACTIVE,
29 | NOT_DEAD
30 | });
--------------------------------------------------------------------------------
/lib/simulator/behaviors/BoundaryEventBehavior.js:
--------------------------------------------------------------------------------
1 | import {
2 | getBusinessObject
3 | } from '../util/ModelUtil';
4 |
5 |
6 | export default function BoundaryEventBehavior(
7 | simulator,
8 | activityBehavior,
9 | scopeBehavior) {
10 |
11 | this._simulator = simulator;
12 | this._activityBehavior = activityBehavior;
13 | this._scopeBehavior = scopeBehavior;
14 |
15 | simulator.registerBehavior('bpmn:BoundaryEvent', this);
16 | }
17 |
18 | BoundaryEventBehavior.prototype.signal = function(context) {
19 |
20 | const {
21 | element,
22 | scope,
23 | hostScope = this._simulator.findScope({
24 | parent: scope.parent,
25 | element: element.host
26 | })
27 | } = context;
28 |
29 | if (!hostScope) {
30 | throw new Error('host scope not found');
31 | }
32 |
33 | const cancelActivity = getBusinessObject(element).cancelActivity;
34 |
35 | if (cancelActivity) {
36 | this._scopeBehavior.interrupt(hostScope, scope);
37 |
38 | // activities are pending completion before actual exit
39 | const event = this._scopeBehavior.tryExit(hostScope, scope);
40 |
41 | if (event) {
42 | const subscription = this._simulator.subscribe(hostScope, event, initiator => {
43 | subscription.remove();
44 |
45 | return this._simulator.exit(context);
46 | });
47 |
48 | return;
49 | }
50 | }
51 |
52 | this._simulator.exit(context);
53 | };
54 |
55 | BoundaryEventBehavior.prototype.exit = function(context) {
56 | this._activityBehavior.exit(context);
57 | };
58 |
59 | BoundaryEventBehavior.$inject = [
60 | 'simulator',
61 | 'activityBehavior',
62 | 'scopeBehavior'
63 | ];
--------------------------------------------------------------------------------
/lib/simulator/behaviors/EndEventBehavior.js:
--------------------------------------------------------------------------------
1 | export default function EndEventBehavior(
2 | simulator,
3 | scopeBehavior,
4 | intermediateThrowEventBehavior) {
5 |
6 | this._intermediateThrowEventBehavior = intermediateThrowEventBehavior;
7 | this._scopeBehavior = scopeBehavior;
8 |
9 | simulator.registerBehavior('bpmn:EndEvent', this);
10 | }
11 |
12 | EndEventBehavior.$inject = [
13 | 'simulator',
14 | 'scopeBehavior',
15 | 'intermediateThrowEventBehavior'
16 | ];
17 |
18 | EndEventBehavior.prototype.enter = function(context) {
19 | this._intermediateThrowEventBehavior.enter(context);
20 | };
21 |
22 | EndEventBehavior.prototype.signal = function(context) {
23 | this._intermediateThrowEventBehavior.signal(context);
24 | };
25 |
26 | EndEventBehavior.prototype.exit = function(context) {
27 |
28 | const {
29 | scope
30 | } = context;
31 |
32 | this._scopeBehavior.tryExit(scope.parent, scope);
33 | };
--------------------------------------------------------------------------------
/lib/simulator/behaviors/EventBasedGatewayBehavior.js:
--------------------------------------------------------------------------------
1 | import { isAny } from '../util/ModelUtil';
2 |
3 |
4 | export default function EventBasedGatewayBehavior(simulator) {
5 | this._simulator = simulator;
6 |
7 | simulator.registerBehavior('bpmn:EventBasedGateway', this);
8 | }
9 |
10 | EventBasedGatewayBehavior.$inject = [
11 | 'simulator'
12 | ];
13 |
14 | EventBasedGatewayBehavior.prototype.enter = function(context) {
15 |
16 | const {
17 | element,
18 | scope
19 | } = context;
20 |
21 | const parentScope = scope.parent;
22 |
23 | const triggerElements = getTriggers(element);
24 |
25 | // create subscriptions for outgoing event triggers
26 | // do nothing else beyond that
27 | const subscriptions = triggerElements.map(
28 | triggerElement => this._simulator.subscribe(parentScope, triggerElement, initiator => {
29 |
30 | // cancel all subscriptions
31 | subscriptions.forEach(subscription => subscription.remove());
32 |
33 | // destroy this scope
34 | this._simulator.destroyScope(scope, initiator);
35 |
36 | // signal triggered event
37 | return this._simulator.signal({
38 | element: triggerElement,
39 | parentScope,
40 | initiator
41 | });
42 | })
43 | );
44 |
45 | };
46 |
47 |
48 | // helpers ////////////////
49 |
50 | function getTriggers(element) {
51 | return element.outgoing.map(
52 | outgoing => outgoing.target
53 | ).filter(activity => isAny(activity, [
54 | 'bpmn:IntermediateCatchEvent',
55 | 'bpmn:ReceiveTask'
56 | ]));
57 | }
--------------------------------------------------------------------------------
/lib/simulator/behaviors/ExclusiveGatewayBehavior.js:
--------------------------------------------------------------------------------
1 | import {
2 | filterSequenceFlows
3 | } from '../util/ModelUtil';
4 |
5 |
6 | export default function ExclusiveGatewayBehavior(simulator, scopeBehavior) {
7 | this._scopeBehavior = scopeBehavior;
8 | this._simulator = simulator;
9 |
10 | simulator.registerBehavior('bpmn:ExclusiveGateway', this);
11 | }
12 |
13 | ExclusiveGatewayBehavior.prototype.enter = function(context) {
14 | this._simulator.exit(context);
15 | };
16 |
17 | ExclusiveGatewayBehavior.prototype.exit = function(context) {
18 |
19 | const {
20 | element,
21 | scope
22 | } = context;
23 |
24 | // depends on UI to properly configure activeOutgoing for
25 | // each exclusive gateway
26 |
27 | const outgoings = filterSequenceFlows(element.outgoing);
28 |
29 | if (outgoings.length === 1) {
30 | return this._simulator.enter({
31 | element: outgoings[0],
32 | scope: scope.parent
33 | });
34 | }
35 |
36 | const {
37 | activeOutgoing
38 | } = this._simulator.getConfig(element);
39 |
40 | const outgoing = outgoings.find(o => o === activeOutgoing);
41 |
42 | if (!outgoing) {
43 | return this._scopeBehavior.tryExit(scope.parent, scope);
44 | }
45 |
46 | return this._simulator.enter({
47 | element: outgoing,
48 | scope: scope.parent
49 | });
50 | };
51 |
52 | ExclusiveGatewayBehavior.$inject = [
53 | 'simulator',
54 | 'scopeBehavior'
55 | ];
--------------------------------------------------------------------------------
/lib/simulator/behaviors/IntermediateCatchEventBehavior.js:
--------------------------------------------------------------------------------
1 | export default function IntermediateCatchEventBehavior(
2 | simulator,
3 | activityBehavior) {
4 |
5 | this._activityBehavior = activityBehavior;
6 | this._simulator = simulator;
7 |
8 | simulator.registerBehavior('bpmn:IntermediateCatchEvent', this);
9 | simulator.registerBehavior('bpmn:ReceiveTask', this);
10 | }
11 |
12 | IntermediateCatchEventBehavior.$inject = [
13 | 'simulator',
14 | 'activityBehavior'
15 | ];
16 |
17 | IntermediateCatchEventBehavior.prototype.signal = function(context) {
18 | return this._simulator.exit(context);
19 | };
20 |
21 | IntermediateCatchEventBehavior.prototype.enter = function(context) {
22 | const {
23 | element
24 | } = context;
25 |
26 | // adapt special wait semantics; user must manually
27 | // trigger to indicate message received
28 | return this._activityBehavior.signalOnEvent(context, element);
29 | };
30 |
31 | IntermediateCatchEventBehavior.prototype.exit = function(context) {
32 | this._activityBehavior.exit(context);
33 | };
--------------------------------------------------------------------------------
/lib/simulator/behaviors/IntermediateThrowEventBehavior.js:
--------------------------------------------------------------------------------
1 | export default function IntermediateThrowEventBehavior(
2 | simulator,
3 | activityBehavior,
4 | eventBehaviors) {
5 |
6 | this._simulator = simulator;
7 | this._activityBehavior = activityBehavior;
8 | this._eventBehaviors = eventBehaviors;
9 |
10 | simulator.registerBehavior('bpmn:IntermediateThrowEvent', this);
11 | simulator.registerBehavior('bpmn:SendTask', this);
12 | }
13 |
14 | IntermediateThrowEventBehavior.prototype.enter = function(context) {
15 | const {
16 | element
17 | } = context;
18 |
19 | const eventBehavior = this._eventBehaviors.get(element);
20 |
21 | if (eventBehavior) {
22 | const event = eventBehavior(context);
23 |
24 | if (event) {
25 | return this._activityBehavior.signalOnEvent(context, event);
26 | }
27 | }
28 |
29 | this._activityBehavior.enter(context);
30 | };
31 |
32 | IntermediateThrowEventBehavior.prototype.signal = function(context) {
33 | this._activityBehavior.signal(context);
34 | };
35 |
36 | IntermediateThrowEventBehavior.prototype.exit = function(context) {
37 | this._activityBehavior.exit(context);
38 | };
39 |
40 | IntermediateThrowEventBehavior.$inject = [
41 | 'simulator',
42 | 'activityBehavior',
43 | 'eventBehaviors'
44 | ];
--------------------------------------------------------------------------------
/lib/simulator/behaviors/MessageFlowBehavior.js:
--------------------------------------------------------------------------------
1 | import {
2 | isCatchEvent
3 | } from '../util/ModelUtil';
4 |
5 |
6 | export default function MessageFlowBehavior(simulator) {
7 | this._simulator = simulator;
8 |
9 | simulator.registerBehavior('bpmn:MessageFlow', this);
10 | }
11 |
12 | MessageFlowBehavior.$inject = [ 'simulator' ];
13 |
14 | MessageFlowBehavior.prototype.signal = function(context) {
15 | this._simulator.exit(context);
16 | };
17 |
18 | MessageFlowBehavior.prototype.exit = function(context) {
19 | const {
20 | element,
21 | scope: initiator
22 | } = context;
23 |
24 | const target = element.target;
25 |
26 | // the event triggered is either the message event
27 | // represented by the target message start or catch event _or_
28 | // an event that uses { name: messageFlow.id } as an identifier
29 | const event = isCatchEvent(target) ? target : {
30 | type: 'message',
31 | element,
32 | name: element.id
33 | };
34 |
35 | const subscription = this._simulator.findSubscription({
36 | event,
37 | elements: [ target, target.parent ]
38 | });
39 |
40 | if (subscription) {
41 | this._simulator.trigger({
42 | event,
43 | initiator,
44 | scope: subscription.scope
45 | });
46 | }
47 | };
--------------------------------------------------------------------------------
/lib/simulator/behaviors/ProcessBehavior.js:
--------------------------------------------------------------------------------
1 | import {
2 | isImplicitStartEvent,
3 | isNoneStartEvent,
4 | isStartEvent
5 | } from '../util/ModelUtil';
6 |
7 |
8 | export default function ProcessBehavior(
9 | simulator,
10 | scopeBehavior) {
11 |
12 | this._simulator = simulator;
13 | this._scopeBehavior = scopeBehavior;
14 |
15 | simulator.registerBehavior('bpmn:Process', this);
16 | simulator.registerBehavior('bpmn:Participant', this);
17 | }
18 |
19 | ProcessBehavior.prototype.signal = function(context) {
20 |
21 | const {
22 | element,
23 | startEvent,
24 | startNodes = this._findStarts(element, startEvent),
25 | scope
26 | } = context;
27 |
28 | if (!startNodes.length) {
29 | throw new Error('missing or ');
30 | }
31 |
32 | for (const startNode of startNodes) {
33 |
34 | if (isStartEvent(startNode)) {
35 | this._simulator.signal({
36 | element: startNode,
37 | parentScope: scope
38 | });
39 | } else {
40 | this._simulator.enter({
41 | element: startNode,
42 | scope
43 | });
44 | }
45 | }
46 |
47 | };
48 |
49 | ProcessBehavior.prototype.exit = function(context) {
50 |
51 | const {
52 | scope,
53 | initiator
54 | } = context;
55 |
56 | // ensure that all sub-scopes are destroyed
57 |
58 | this._scopeBehavior.destroyChildren(scope, initiator);
59 | };
60 |
61 | ProcessBehavior.prototype._findStarts = function(element, startEvent) {
62 |
63 | const isStartEvent = startEvent
64 | ? (node) => startEvent === node
65 | : (node) => isNoneStartEvent(node);
66 |
67 | return element.children.filter(
68 | node => (
69 | isStartEvent(node) || isImplicitStartEvent(node)
70 | )
71 | );
72 | };
73 |
74 | ProcessBehavior.$inject = [
75 | 'simulator',
76 | 'scopeBehavior'
77 | ];
--------------------------------------------------------------------------------
/lib/simulator/behaviors/SequenceFlowBehavior.js:
--------------------------------------------------------------------------------
1 | export default function SequenceFlowBehavior(
2 | simulator,
3 | scopeBehavior) {
4 |
5 | this._simulator = simulator;
6 | this._scopeBehavior = scopeBehavior;
7 |
8 | simulator.registerBehavior('bpmn:SequenceFlow', this);
9 | }
10 |
11 | SequenceFlowBehavior.prototype.enter = function(context) {
12 | this._simulator.exit(context);
13 | };
14 |
15 | SequenceFlowBehavior.prototype.exit = function(context) {
16 | const {
17 | element,
18 | scope
19 | } = context;
20 |
21 | this._simulator.enter({
22 | initiator: scope,
23 | element: element.target,
24 | scope: scope.parent
25 | });
26 | };
27 |
28 | SequenceFlowBehavior.$inject = [
29 | 'simulator',
30 | 'scopeBehavior'
31 | ];
--------------------------------------------------------------------------------
/lib/simulator/behaviors/StartEventBehavior.js:
--------------------------------------------------------------------------------
1 | export default function StartEventBehavior(
2 | simulator,
3 | activityBehavior) {
4 |
5 | this._simulator = simulator;
6 | this._activityBehavior = activityBehavior;
7 |
8 | simulator.registerBehavior('bpmn:StartEvent', this);
9 | }
10 |
11 | StartEventBehavior.prototype.signal = function(context) {
12 | this._simulator.exit(context);
13 | };
14 |
15 | StartEventBehavior.prototype.exit = function(context) {
16 | this._activityBehavior.exit(context);
17 | };
18 |
19 | StartEventBehavior.$inject = [
20 | 'simulator',
21 | 'activityBehavior'
22 | ];
--------------------------------------------------------------------------------
/lib/simulator/index.js:
--------------------------------------------------------------------------------
1 | import Simulator from './Simulator';
2 | import SimulationBehaviorModule from './behaviors';
3 |
4 | const HIGH_PRIORITY = 5000;
5 |
6 | export default {
7 | __depends__: [
8 | SimulationBehaviorModule
9 | ],
10 | __init__: [
11 | [ 'eventBus', 'simulator', function(eventBus, simulator) {
12 | eventBus.on([
13 | 'tokenSimulation.toggleMode',
14 | 'tokenSimulation.resetSimulation'
15 | ], HIGH_PRIORITY, event => {
16 | simulator.reset();
17 | });
18 | } ]
19 | ],
20 | simulator: [ 'type', Simulator ]
21 | };
--------------------------------------------------------------------------------
/lib/simulator/util/EventsUtil.js:
--------------------------------------------------------------------------------
1 | export function eventsMatch(a, b) {
2 | const attrMatch = [ 'type', 'name', 'iref' ].every(attr => !(attr in a) || a[attr] === b[attr]);
3 | const catchAllMatch = !b.ref && (b.type === 'error' || b.type === 'escalation');
4 |
5 | return attrMatch && (catchAllMatch || refsMatch(a, b));
6 | }
7 |
8 | export function refsMatch(a, b) {
9 | const attr = 'ref';
10 | return !(attr in a) || a[attr] === b[attr];
11 | }
--------------------------------------------------------------------------------
/lib/simulator/util/SetUtil.js:
--------------------------------------------------------------------------------
1 | export function filterSet(set, matchFn) {
2 |
3 | const matched = [];
4 |
5 | for (const el of set) {
6 | if (matchFn(el)) {
7 | matched.push(el);
8 | }
9 | }
10 |
11 | return matched;
12 | }
13 |
14 | export function findSet(set, matchFn) {
15 |
16 | for (const el of set) {
17 | if (matchFn(el)) {
18 | return el;
19 | }
20 | }
21 |
22 | return null;
23 | }
--------------------------------------------------------------------------------
/lib/util/ElementHelper.js:
--------------------------------------------------------------------------------
1 | import {
2 | find,
3 | some
4 | } from 'min-dash';
5 |
6 | import {
7 | is,
8 | getBusinessObject
9 | } from 'bpmn-js/lib/util/ModelUtil';
10 |
11 | export function getEventDefinition(event, eventDefinitionType) {
12 | return find(getBusinessObject(event).eventDefinitions, definition => {
13 | return is(definition, eventDefinitionType);
14 | });
15 | }
16 |
17 | export function isTypedEvent(event, eventDefinitionType) {
18 | return some(getBusinessObject(event).eventDefinitions, definition => {
19 | return is(definition, eventDefinitionType);
20 | });
21 | }
--------------------------------------------------------------------------------
/lib/util/EventHelper.js:
--------------------------------------------------------------------------------
1 | const TOGGLE_MODE_EVENT = 'tokenSimulation.toggleMode';
2 | const PLAY_SIMULATION_EVENT = 'tokenSimulation.playSimulation';
3 | const PAUSE_SIMULATION_EVENT = 'tokenSimulation.pauseSimulation';
4 | const RESET_SIMULATION_EVENT = 'tokenSimulation.resetSimulation';
5 | const ANIMATION_CREATED_EVENT = 'tokenSimulation.animationCreated';
6 | const ANIMATION_SPEED_CHANGED_EVENT = 'tokenSimulation.animationSpeedChanged';
7 | const ELEMENT_CHANGED_EVENT = 'tokenSimulation.simulator.elementChanged';
8 | const SCOPE_DESTROYED_EVENT = 'tokenSimulation.simulator.destroyScope';
9 | const SCOPE_CHANGED_EVENT = 'tokenSimulation.simulator.scopeChanged';
10 | const SCOPE_CREATE_EVENT = 'tokenSimulation.simulator.createScope';
11 | const SCOPE_FILTER_CHANGED_EVENT = 'tokenSimulation.scopeFilterChanged';
12 | const TRACE_EVENT = 'tokenSimulation.simulator.trace';
13 |
14 | export {
15 | TOGGLE_MODE_EVENT,
16 | PLAY_SIMULATION_EVENT,
17 | PAUSE_SIMULATION_EVENT,
18 | RESET_SIMULATION_EVENT,
19 | ANIMATION_CREATED_EVENT,
20 | ANIMATION_SPEED_CHANGED_EVENT,
21 | ELEMENT_CHANGED_EVENT,
22 | SCOPE_DESTROYED_EVENT,
23 | SCOPE_CHANGED_EVENT,
24 | SCOPE_CREATE_EVENT,
25 | SCOPE_FILTER_CHANGED_EVENT,
26 | TRACE_EVENT
27 | };
--------------------------------------------------------------------------------
/lib/viewer.js:
--------------------------------------------------------------------------------
1 | import ToggleModeModule from './features/toggle-mode/viewer';
2 |
3 | import BaseModule from './base';
4 |
5 | export default {
6 | __depends__: [
7 | BaseModule,
8 | ToggleModeModule
9 | ]
10 | };
--------------------------------------------------------------------------------
/renovate.json:
--------------------------------------------------------------------------------
1 | {
2 | "$schema": "https://docs.renovatebot.com/renovate-schema.json",
3 | "extends": [
4 | "github>bpmn-io/renovate-config:recommended"
5 | ]
6 | }
7 |
--------------------------------------------------------------------------------
/rollup.config.js:
--------------------------------------------------------------------------------
1 | import { string } from 'rollup-plugin-string';
2 |
3 | export default {
4 | input: 'src/icons/index.js',
5 | output: {
6 | file: 'lib/icons/index.js',
7 | format: 'esm'
8 | },
9 | plugins: [
10 | string({
11 | include: '**/*.svg'
12 | })
13 | ]
14 | };
--------------------------------------------------------------------------------
/src/icons/angle-right.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/icons/check-circle.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/icons/exclamation-triangle.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/icons/fork.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/icons/index.js:
--------------------------------------------------------------------------------
1 | import LogSVG from './log.svg';
2 | import AngleRightSVG from './angle-right.svg';
3 | import CheckCircleSVG from './check-circle.svg';
4 | import ForkSVG from './fork.svg';
5 | import ExclamationTriangleSVG from './exclamation-triangle.svg';
6 | import InfoSVG from './info.svg';
7 | import PauseSVG from './pause.svg';
8 | import RemovePauseSVG from './pause-remove.svg';
9 | import PlaySVG from './play.svg';
10 | import ResetSVG from './reset.svg';
11 | import TachometerSVG from './tachometer-alt.svg';
12 | import TimesCircleSVG from './times-circle.svg';
13 | import TimesSVG from './times.svg';
14 | import ToggleOffSVG from './toggle-off.svg';
15 | import ToggleOnSVG from './toggle-on.svg';
16 |
17 |
18 | function createIcon(svg) {
19 | return function Icon(className = '') {
20 | return `${svg}`;
21 | };
22 | }
23 |
24 | export const LogIcon = createIcon(LogSVG);
25 | export const AngleRightIcon = createIcon(AngleRightSVG);
26 | export const CheckCircleIcon = createIcon(CheckCircleSVG);
27 | export const RemovePauseIcon = createIcon(RemovePauseSVG);
28 | export const ForkIcon = createIcon(ForkSVG);
29 | export const ExclamationTriangleIcon = createIcon(ExclamationTriangleSVG);
30 | export const InfoIcon = createIcon(InfoSVG);
31 | export const PauseIcon = createIcon(PauseSVG);
32 | export const PlayIcon = createIcon(PlaySVG);
33 | export const ResetIcon = createIcon(ResetSVG);
34 | export const TachometerIcon = createIcon(TachometerSVG);
35 | export const TimesCircleIcon = createIcon(TimesCircleSVG);
36 | export const TimesIcon = createIcon(TimesSVG);
37 | export const ToggleOffIcon = createIcon(ToggleOffSVG);
38 | export const ToggleOnIcon = createIcon(ToggleOnSVG);
39 |
--------------------------------------------------------------------------------
/src/icons/info.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/icons/log.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/icons/pause-remove.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/src/icons/pause.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/icons/play.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/icons/reset.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/icons/tachometer-alt.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/icons/times-circle.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/icons/times.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/icons/toggle-off.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/icons/toggle-on.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/tasks/update-example:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | # publish bpmn-js-token-simulation example to
4 |
5 | set -e
6 |
7 | WORK_DIR="$(pwd)"
8 | TEMP_DIR="$WORK_DIR/tmp"
9 | GH_PAGES_DIR="$TEMP_DIR/gh-pages"
10 |
11 | echo "Publishing example to "
12 |
13 | # create work dir
14 | mkdir -p "$TEMP_DIR"
15 |
16 | # setup gh-pages branch
17 | git clone --depth=1 "https://$GITHUB_ACTOR:$GITHUB_TOKEN@github.com/bpmn-io/bpmn-js-token-simulation.git" "$GH_PAGES_DIR"
18 |
19 | cd "$GH_PAGES_DIR"
20 | git checkout --orphan gh-pages
21 | git reset --hard
22 |
23 | (cd "$WORK_DIR" && cp -r example/* $GH_PAGES_DIR)
24 |
25 |
26 | if [[ "x$SKIP_COMMIT" = "x" ]]; then
27 |
28 | git config --local user.email "$GIT_USER_EMAIL"
29 | git config --local user.name "$GIT_USER_NAME"
30 | git config push.default simple
31 |
32 | # add all resources
33 | git add -A
34 | git commit -m "chore: update example"
35 | git push -qf -u origin gh-pages &2>/dev/null
36 | else
37 | echo "Skipping commit (SKIP_COMMIT=$SKIP_COMMIT)"
38 | fi
39 |
40 | cd "$WORK_DIR"
--------------------------------------------------------------------------------
/test/TestHelper.js:
--------------------------------------------------------------------------------
1 | export * from 'bpmn-js/test/helper';
2 |
3 | import {
4 | insertCSS
5 | } from 'bpmn-js/test/helper';
6 |
7 | import semver from 'semver';
8 |
9 |
10 | export function injectStyles() {
11 |
12 | insertCSS('diagram-js.css', require('bpmn-js/dist/assets/diagram-js.css')),
13 |
14 | insertCSS('bpmn-font.css', require('bpmn-js/dist/assets/bpmn-font/css/bpmn-embedded.css'));
15 |
16 | bpmnJsSatisfies('>= 9') && insertCSS('bpmn-js.css', require('bpmn-js/dist/assets/bpmn-js.css'));
17 |
18 | insertCSS('bpmn-js-token-simulation.css', require('../assets/css/bpmn-js-token-simulation.css'));
19 |
20 | insertCSS('diagram-js-testing.css',
21 | 'body .test-container { height: auto }' +
22 | 'body .test-container .test-content-container { height: 90vmin; }'
23 | );
24 | }
25 |
26 | /**
27 | * Execute test only if currently installed bpmn-js is of given version.
28 | *
29 | * @param {string} versionRange
30 | * @param {boolean} only
31 | */
32 | export function withBpmnJs(versionRange, only = false) {
33 | if (bpmnJsSatisfies(versionRange)) {
34 | return only ? it.only : it;
35 | } else {
36 | return it.skip;
37 | }
38 | }
39 |
40 | function bpmnJsSatisfies(versionRange) {
41 | const bpmnJsVersion = require('bpmn-js/package.json').version;
42 |
43 | return semver.satisfies(bpmnJsVersion, versionRange, { includePrerelease: true });
44 | }
45 |
--------------------------------------------------------------------------------
/test/all.js:
--------------------------------------------------------------------------------
1 | var allTests = require.context('.', true, /Spec\.js$/);
2 |
3 | allTests.keys().forEach(allTests);
4 |
5 | var allSources = require.context('../lib', true, /.*\.js$/);
6 |
7 | allSources.keys().forEach(allSources);
--------------------------------------------------------------------------------
/test/mocks/Animation.js:
--------------------------------------------------------------------------------
1 | function noop() {}
2 |
3 | function Animation() {
4 | this.animations = [];
5 | this.hiddenAnimations = [];
6 |
7 | this.createAnimation = function(connection, processInstanceId, done) {
8 | setTimeout(done);
9 | };
10 |
11 | this.setAnimationSpeed = noop;
12 | this.showProcessInstanceAnimations = noop;
13 | this.hideProcessInstanceAnimations = noop;
14 | }
15 |
16 | export default {
17 | __init__: [ 'animation' ],
18 | animation: [ 'type', Animation ]
19 | };
--------------------------------------------------------------------------------
/test/spec/ViewerSpec.js:
--------------------------------------------------------------------------------
1 | import TokenSimulationViewerModules from 'lib/viewer';
2 | import NavigatedViewer from 'bpmn-js/lib/NavigatedViewer';
3 |
4 | import {
5 | bootstrapViewer,
6 | inject
7 | } from 'test/TestHelper';
8 |
9 |
10 | describe('viewer extension', function() {
11 |
12 | describe('basic', function() {
13 |
14 | const diagram = require('./simple.bpmn');
15 |
16 | beforeEach(bootstrapViewer(diagram, {
17 | additionalModules: [
18 | ...(NavigatedViewer.prototype._modules),
19 | TokenSimulationViewerModules
20 | ]
21 | }));
22 |
23 |
24 | it('should toggle mode', inject(function(toggleMode) {
25 |
26 | // YEA!
27 | toggleMode.toggleMode();
28 |
29 | // and do it again!
30 | toggleMode.toggleMode();
31 | }));
32 |
33 | });
34 |
35 |
36 | describe('all-elements', function() {
37 |
38 | const diagram = require('./all-elements.bpmn');
39 |
40 | beforeEach(bootstrapViewer(diagram, {
41 | additionalModules: [
42 | ...NavigatedViewer.prototype._modules,
43 | TokenSimulationViewerModules
44 | ]
45 | }));
46 |
47 |
48 | it('should mark unsupported', inject(function(toggleMode, elementSupport) {
49 |
50 | // given
51 | toggleMode.toggleMode();
52 |
53 | // then
54 | expect(
55 | elementSupport.getUnsupportedElements()
56 | ).to.have.length(1);
57 | }));
58 |
59 | });
60 |
61 | });
--------------------------------------------------------------------------------
/test/spec/implicit-start-no-event.bpmn:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
--------------------------------------------------------------------------------
/test/spec/simulator/ScopeStatesSpec.js:
--------------------------------------------------------------------------------
1 | import { ScopeStates } from 'lib/simulator/ScopeStates';
2 | import { ScopeTraits } from 'lib/simulator/ScopeTraits';
3 |
4 |
5 | describe('simulator - ScopeStates', function() {
6 |
7 | describe('transitions', function() {
8 |
9 | it('should complete normally', function() {
10 |
11 | // assume
12 | ScopeStates.ACTIVATED.start().complete().destroy();
13 | });
14 |
15 |
16 | it('should fail', function() {
17 |
18 | // assume
19 | ScopeStates.ACTIVATED.start().fail().destroy();
20 | });
21 |
22 |
23 | it('should become compensable', function() {
24 |
25 | // given
26 | const running = ScopeStates.ACTIVATED.start();
27 |
28 | // when
29 | const compensableCompleted = running.compensable().complete().destroy();
30 | const compensableCanceled = compensableCompleted.cancel().destroy();
31 |
32 | // then
33 | expect(compensableCompleted.hasTrait(ScopeTraits.DESTROYED)).to.be.false;
34 | expect(compensableCanceled.hasTrait(ScopeTraits.DESTROYED)).to.be.true;
35 | });
36 |
37 | });
38 |
39 |
40 | describe('error handling', function() {
41 |
42 | it('should indicate illegal transition', function() {
43 |
44 | expect(function() {
45 | ScopeStates.RUNNING.start();
46 | }).to.throw(/illegal transition: running -> start/);
47 | });
48 |
49 | });
50 |
51 | });
--------------------------------------------------------------------------------
/test/spec/simulator/Simulator.boundary-interrupting-sub-process.json:
--------------------------------------------------------------------------------
1 | [
2 | "createScope:Process_1:null",
3 | "signal:Process_1:A",
4 | "createScope:START:A",
5 | "signal:START:B",
6 | "exit:START:B",
7 | "createScope:Flow_4:A",
8 | "destroyScope:START:B",
9 | "enter:Flow_4:A",
10 | "exit:Flow_4:C",
11 | "createScope:SUB:A",
12 | "destroyScope:Flow_4:C",
13 | "enter:SUB:A",
14 | "createScope:START_SUB:D",
15 | "signal:START_SUB:E",
16 | "exit:START_SUB:E",
17 | "createScope:Flow_3:D",
18 | "destroyScope:START_SUB:E",
19 | "enter:Flow_3:D",
20 | "exit:Flow_3:F",
21 | "createScope:CATCH_SUB:D",
22 | "destroyScope:Flow_3:F",
23 | "enter:CATCH_SUB:D",
24 | "createScope:B_RUPTING:A",
25 | "signal:B_RUPTING:H",
26 | "destroyScope:CATCH_SUB:G",
27 | "exit:SUB:D",
28 | "destroyScope:SUB:D",
29 | "exit:B_RUPTING:H",
30 | "createScope:Flow_6:A",
31 | "destroyScope:B_RUPTING:H",
32 | "enter:Flow_6:A",
33 | "exit:Flow_6:I",
34 | "createScope:END_B:A",
35 | "destroyScope:Flow_6:I",
36 | "enter:END_B:A",
37 | "exit:END_B:J",
38 | "destroyScope:END_B:J",
39 | "exit:Process_1:A",
40 | "destroyScope:Process_1:A"
41 | ]
--------------------------------------------------------------------------------
/test/spec/simulator/Simulator.boundary-interrupting-task.json:
--------------------------------------------------------------------------------
1 | [
2 | "createScope:Process_1:null",
3 | "signal:Process_1:A",
4 | "createScope:START:A",
5 | "signal:START:B",
6 | "exit:START:B",
7 | "createScope:Flow_1:A",
8 | "destroyScope:START:B",
9 | "enter:Flow_1:A",
10 | "exit:Flow_1:C",
11 | "createScope:RECEIVE:A",
12 | "destroyScope:Flow_1:C",
13 | "enter:RECEIVE:A",
14 | "createScope:B_RUPTING:A",
15 | "signal:B_RUPTING:E",
16 | "exit:RECEIVE:D",
17 | "destroyScope:RECEIVE:D",
18 | "exit:B_RUPTING:E",
19 | "createScope:Flow_2:A",
20 | "destroyScope:B_RUPTING:E",
21 | "enter:Flow_2:A",
22 | "exit:Flow_2:F",
23 | "createScope:END_B:A",
24 | "destroyScope:Flow_2:F",
25 | "enter:END_B:A",
26 | "exit:END_B:G",
27 | "destroyScope:END_B:G",
28 | "exit:Process_1:A",
29 | "destroyScope:Process_1:A"
30 | ]
--------------------------------------------------------------------------------
/test/spec/simulator/Simulator.boundary-non-interrupting-sub-process.json:
--------------------------------------------------------------------------------
1 | [
2 | "createScope:Process_1:null",
3 | "signal:Process_1:A",
4 | "createScope:START:A",
5 | "signal:START:B",
6 | "exit:START:B",
7 | "createScope:Flow_4:A",
8 | "destroyScope:START:B",
9 | "enter:Flow_4:A",
10 | "exit:Flow_4:C",
11 | "createScope:SUB:A",
12 | "destroyScope:Flow_4:C",
13 | "enter:SUB:A",
14 | "createScope:START_SUB:D",
15 | "signal:START_SUB:E",
16 | "exit:START_SUB:E",
17 | "createScope:Flow_3:D",
18 | "destroyScope:START_SUB:E",
19 | "enter:Flow_3:D",
20 | "exit:Flow_3:F",
21 | "createScope:CATCH_SUB:D",
22 | "destroyScope:Flow_3:F",
23 | "enter:CATCH_SUB:D",
24 | "createScope:B_NRUPTING:A",
25 | "signal:B_NRUPTING:H",
26 | "exit:B_NRUPTING:H",
27 | "createScope:Flow_6:A",
28 | "destroyScope:B_NRUPTING:H",
29 | "enter:Flow_6:A",
30 | "exit:Flow_6:I",
31 | "createScope:END_B:A",
32 | "destroyScope:Flow_6:I",
33 | "enter:END_B:A",
34 | "exit:END_B:J",
35 | "destroyScope:END_B:J"
36 | ]
--------------------------------------------------------------------------------
/test/spec/simulator/Simulator.boundary-non-interrupting-task.json:
--------------------------------------------------------------------------------
1 | [
2 | "createScope:Process_1:null",
3 | "signal:Process_1:B",
4 | "createScope:START:B",
5 | "signal:START:C",
6 | "exit:START:C",
7 | "createScope:Flow_1:B",
8 | "destroyScope:START:C",
9 | "enter:Flow_1:B",
10 | "exit:Flow_1:D",
11 | "createScope:RECEIVE:B",
12 | "destroyScope:Flow_1:D",
13 | "enter:RECEIVE:B",
14 | "createScope:B_NRUPTING:B",
15 | "signal:B_NRUPTING:F",
16 | "exit:B_NRUPTING:F",
17 | "createScope:Flow_2:B",
18 | "destroyScope:B_NRUPTING:F",
19 | "enter:Flow_2:B",
20 | "exit:Flow_2:G",
21 | "createScope:END_B:B",
22 | "destroyScope:Flow_2:G",
23 | "enter:END_B:B",
24 | "exit:END_B:H",
25 | "destroyScope:END_B:H"
26 | ]
--------------------------------------------------------------------------------
/test/spec/simulator/Simulator.catch-event-1.json:
--------------------------------------------------------------------------------
1 | [
2 | "createScope:Process_1:null",
3 | "signal:Process_1:A",
4 | "createScope:START:A",
5 | "signal:START:B",
6 | "exit:START:B",
7 | "createScope:Flow_1:A",
8 | "destroyScope:START:B",
9 | "enter:Flow_1:A",
10 | "exit:Flow_1:C",
11 | "createScope:CATCH:A",
12 | "destroyScope:Flow_1:C",
13 | "enter:CATCH:A"
14 | ]
--------------------------------------------------------------------------------
/test/spec/simulator/Simulator.catch-event-2.json:
--------------------------------------------------------------------------------
1 | [
2 | "signal:CATCH:D",
3 | "exit:CATCH:D",
4 | "createScope:Flow_2:A",
5 | "destroyScope:CATCH:D",
6 | "enter:Flow_2:A",
7 | "exit:Flow_2:E",
8 | "createScope:END:A",
9 | "destroyScope:Flow_2:E",
10 | "enter:END:A",
11 | "exit:END:F",
12 | "destroyScope:END:F",
13 | "exit:Process_1:A",
14 | "destroyScope:Process_1:A"
15 | ]
--------------------------------------------------------------------------------
/test/spec/simulator/Simulator.catch-event.json:
--------------------------------------------------------------------------------
1 | [
2 | "signal:CATCH:D",
3 | "exit:CATCH:D",
4 | "createScope:Flow_2:A",
5 | "destroyScope:CATCH:D",
6 | "enter:Flow_2:A",
7 | "exit:Flow_2:E",
8 | "createScope:END:A",
9 | "destroyScope:Flow_2:E",
10 | "enter:END:A",
11 | "exit:END:F",
12 | "destroyScope:END:F",
13 | "exit:Process_1:A",
14 | "destroyScope:Process_1:A"
15 | ]
--------------------------------------------------------------------------------
/test/spec/simulator/Simulator.collapsed-event-sub-process.json:
--------------------------------------------------------------------------------
1 | [
2 | "createScope:Process_0zfnexu:null",
3 | "signal:Process_0zfnexu:B",
4 | "createScope:StartEvent_1:B",
5 | "signal:StartEvent_1:C",
6 | "exit:StartEvent_1:C",
7 | "createScope:Flow_1:B",
8 | "destroyScope:StartEvent_1:C",
9 | "enter:Flow_1:B",
10 | "exit:Flow_1:D",
11 | "createScope:EscalationEvent_1:B",
12 | "destroyScope:Flow_1:D",
13 | "enter:EscalationEvent_1:B",
14 | "createScope:EscalationHandler_1:B",
15 | "signal:EscalationHandler_1:F",
16 | "destroyScope:EscalationEvent_1:E",
17 | "createScope:EscalationStartEvent_1:F",
18 | "signal:EscalationStartEvent_1:G",
19 | "exit:EscalationStartEvent_1:G",
20 | "createScope:Flow_11:F",
21 | "destroyScope:EscalationStartEvent_1:G",
22 | "enter:Flow_11:F",
23 | "exit:Flow_11:H",
24 | "createScope:EndEvent_2:F",
25 | "destroyScope:Flow_11:H",
26 | "enter:EndEvent_2:F",
27 | "exit:EndEvent_2:I",
28 | "destroyScope:EndEvent_2:I",
29 | "exit:EscalationHandler_1:F",
30 | "destroyScope:EscalationHandler_1:F",
31 | "exit:Process_0zfnexu:B",
32 | "destroyScope:Process_0zfnexu:B"
33 | ]
--------------------------------------------------------------------------------
/test/spec/simulator/Simulator.collapsed-sub-process-event-sub-process.json:
--------------------------------------------------------------------------------
1 | [
2 | "createScope:Process_080cguo:null",
3 | "signal:Process_080cguo:B",
4 | "createScope:StartEvent_1:B",
5 | "signal:StartEvent_1:C",
6 | "exit:StartEvent_1:C",
7 | "createScope:Flow_1:B",
8 | "destroyScope:StartEvent_1:C",
9 | "enter:Flow_1:B",
10 | "exit:Flow_1:D",
11 | "createScope:SubProcess_1:B",
12 | "destroyScope:Flow_1:D",
13 | "enter:SubProcess_1:B",
14 | "createScope:StartEvent_2:E",
15 | "signal:StartEvent_2:F",
16 | "exit:StartEvent_2:F",
17 | "createScope:Flow_10:E",
18 | "destroyScope:StartEvent_2:F",
19 | "enter:Flow_10:E",
20 | "exit:Flow_10:G",
21 | "createScope:EscalationEvent_1:E",
22 | "destroyScope:Flow_10:G",
23 | "enter:EscalationEvent_1:E",
24 | "createScope:EscalationSubProcess_1:E",
25 | "signal:EscalationSubProcess_1:I",
26 | "destroyScope:EscalationEvent_1:H",
27 | "createScope:EscalationStart_1:I",
28 | "signal:EscalationStart_1:J",
29 | "exit:EscalationStart_1:J",
30 | "createScope:Flow_12:I",
31 | "destroyScope:EscalationStart_1:J",
32 | "enter:Flow_12:I",
33 | "exit:Flow_12:K",
34 | "createScope:EndEvent_4:I",
35 | "destroyScope:Flow_12:K",
36 | "enter:EndEvent_4:I",
37 | "exit:EndEvent_4:L",
38 | "destroyScope:EndEvent_4:L",
39 | "exit:EscalationSubProcess_1:I",
40 | "destroyScope:EscalationSubProcess_1:I",
41 | "exit:SubProcess_1:E",
42 | "createScope:Flow_3:B",
43 | "destroyScope:SubProcess_1:E",
44 | "enter:Flow_3:B",
45 | "exit:Flow_3:M",
46 | "createScope:EndEvent_1:B",
47 | "destroyScope:Flow_3:M",
48 | "enter:EndEvent_1:B",
49 | "exit:EndEvent_1:N",
50 | "destroyScope:EndEvent_1:N",
51 | "exit:Process_080cguo:B",
52 | "destroyScope:Process_080cguo:B"
53 | ]
--------------------------------------------------------------------------------
/test/spec/simulator/Simulator.collapsed-sub-process-link-events.json:
--------------------------------------------------------------------------------
1 | [
2 | "createScope:Process_1uwsgrb:null",
3 | "signal:Process_1uwsgrb:B",
4 | "createScope:StartEvent_1:B",
5 | "signal:StartEvent_1:C",
6 | "exit:StartEvent_1:C",
7 | "createScope:Flow_1:B",
8 | "destroyScope:StartEvent_1:C",
9 | "enter:Flow_1:B",
10 | "exit:Flow_1:D",
11 | "createScope:SubProcess_1:B",
12 | "destroyScope:Flow_1:D",
13 | "enter:SubProcess_1:B",
14 | "createScope:StartEvent_2:E",
15 | "signal:StartEvent_2:F",
16 | "exit:StartEvent_2:F",
17 | "createScope:Flow_11:E",
18 | "destroyScope:StartEvent_2:F",
19 | "enter:Flow_11:E",
20 | "exit:Flow_11:G",
21 | "createScope:LinkThrow_1:E",
22 | "destroyScope:Flow_11:G",
23 | "enter:LinkThrow_1:E",
24 | "createScope:LinkCatch_1:E",
25 | "signal:LinkCatch_1:I",
26 | "exit:LinkThrow_1:H",
27 | "destroyScope:LinkThrow_1:H",
28 | "exit:LinkCatch_1:I",
29 | "createScope:Flow_12:E",
30 | "destroyScope:LinkCatch_1:I",
31 | "enter:Flow_12:E",
32 | "exit:Flow_12:J",
33 | "createScope:EndEvent_2:E",
34 | "destroyScope:Flow_12:J",
35 | "enter:EndEvent_2:E",
36 | "exit:EndEvent_2:K",
37 | "destroyScope:EndEvent_2:K",
38 | "exit:SubProcess_1:E",
39 | "createScope:Flow_2:B",
40 | "destroyScope:SubProcess_1:E",
41 | "enter:Flow_2:B",
42 | "exit:Flow_2:L",
43 | "createScope:EndEvent_1:B",
44 | "destroyScope:Flow_2:L",
45 | "enter:EndEvent_1:B",
46 | "exit:EndEvent_1:M",
47 | "destroyScope:EndEvent_1:M",
48 | "exit:Process_1uwsgrb:B",
49 | "destroyScope:Process_1uwsgrb:B"
50 | ]
--------------------------------------------------------------------------------
/test/spec/simulator/Simulator.compensation-end.json:
--------------------------------------------------------------------------------
1 | [
2 | "createScope:Process_1:null",
3 | "signal:Process_1:B",
4 | "createScope:START:B",
5 | "signal:START:C",
6 | "exit:START:C",
7 | "createScope:Flow_1aintfm:B",
8 | "destroyScope:START:C",
9 | "enter:Flow_1aintfm:B",
10 | "exit:Flow_1aintfm:D",
11 | "createScope:A:B",
12 | "destroyScope:Flow_1aintfm:D",
13 | "enter:A:B",
14 | "exit:A:E",
15 | "createScope:Flow_1w8hzat:B",
16 | "destroyScope:A:E",
17 | "enter:Flow_1w8hzat:B",
18 | "exit:Flow_1w8hzat:F",
19 | "createScope:COMP_A_END:B",
20 | "destroyScope:Flow_1w8hzat:F",
21 | "enter:COMP_A_END:B",
22 | "createScope:COMPENSATE_A:B",
23 | "enter:COMPENSATE_A:B",
24 | "exit:COMPENSATE_A:H",
25 | "destroyScope:COMPENSATE_A:H",
26 | "signal:COMP_A_END:G",
27 | "exit:COMP_A_END:G",
28 | "destroyScope:COMP_A_END:G",
29 | "exit:Process_1:B",
30 | "destroyScope:Process_1:B"
31 | ]
--------------------------------------------------------------------------------
/test/spec/simulator/Simulator.compensation-event-sub-process.json:
--------------------------------------------------------------------------------
1 | [
2 | "createScope:Process_1:null",
3 | "signal:Process_1:B",
4 | "createScope:START:B",
5 | "signal:START:C",
6 | "exit:START:C",
7 | "createScope:Flow_1aintfm:B",
8 | "destroyScope:START:C",
9 | "enter:Flow_1aintfm:B",
10 | "exit:Flow_1aintfm:D",
11 | "createScope:A:B",
12 | "destroyScope:Flow_1aintfm:D",
13 | "enter:A:B",
14 | "exit:A:E",
15 | "createScope:Flow_1w8hzat:B",
16 | "destroyScope:A:E",
17 | "enter:Flow_1w8hzat:B",
18 | "exit:Flow_1w8hzat:F",
19 | "createScope:ESCALATE_END:B",
20 | "destroyScope:Flow_1w8hzat:F",
21 | "enter:ESCALATE_END:B",
22 | "createScope:E:B",
23 | "signal:E:H",
24 | "destroyScope:ESCALATE_END:G",
25 | "createScope:E_START:H",
26 | "signal:E_START:I",
27 | "exit:E_START:I",
28 | "createScope:Flow_1hfcj6z:H",
29 | "destroyScope:E_START:I",
30 | "enter:Flow_1hfcj6z:H",
31 | "exit:Flow_1hfcj6z:J",
32 | "createScope:E_COMP_A_END:H",
33 | "destroyScope:Flow_1hfcj6z:J",
34 | "enter:E_COMP_A_END:H",
35 | "createScope:COMPENSATE_A:B",
36 | "enter:COMPENSATE_A:B",
37 | "exit:COMPENSATE_A:L",
38 | "destroyScope:COMPENSATE_A:L",
39 | "signal:E_COMP_A_END:K",
40 | "exit:E_COMP_A_END:K",
41 | "destroyScope:E_COMP_A_END:K",
42 | "exit:E:H",
43 | "destroyScope:E:H",
44 | "exit:Process_1:B",
45 | "destroyScope:Process_1:B"
46 | ]
--------------------------------------------------------------------------------
/test/spec/simulator/Simulator.compensation-intermediate-throw.json:
--------------------------------------------------------------------------------
1 | [
2 | "createScope:Process_1:null",
3 | "signal:Process_1:B",
4 | "createScope:START:B",
5 | "signal:START:C",
6 | "exit:START:C",
7 | "createScope:Flow_1aintfm:B",
8 | "destroyScope:START:C",
9 | "enter:Flow_1aintfm:B",
10 | "exit:Flow_1aintfm:D",
11 | "createScope:A:B",
12 | "destroyScope:Flow_1aintfm:D",
13 | "enter:A:B",
14 | "exit:A:E",
15 | "createScope:Flow_1w8hzat:B",
16 | "destroyScope:A:E",
17 | "enter:Flow_1w8hzat:B",
18 | "exit:Flow_1w8hzat:F",
19 | "createScope:COMP_A:B",
20 | "destroyScope:Flow_1w8hzat:F",
21 | "enter:COMP_A:B",
22 | "createScope:COMPENSATE_A:B",
23 | "enter:COMPENSATE_A:B",
24 | "exit:COMPENSATE_A:H",
25 | "destroyScope:COMPENSATE_A:H",
26 | "signal:COMP_A:G",
27 | "exit:COMP_A:G",
28 | "createScope:Flow_0lsswgi:B",
29 | "destroyScope:COMP_A:G",
30 | "enter:Flow_0lsswgi:B",
31 | "exit:Flow_0lsswgi:I",
32 | "createScope:END:B",
33 | "destroyScope:Flow_0lsswgi:I",
34 | "enter:END:B",
35 | "exit:END:J",
36 | "destroyScope:END:J",
37 | "exit:Process_1:B",
38 | "destroyScope:Process_1:B"
39 | ]
--------------------------------------------------------------------------------
/test/spec/simulator/Simulator.compensation-nested-event-sub-process.json:
--------------------------------------------------------------------------------
1 | [
2 | "createScope:PROCESS:null",
3 | "signal:PROCESS:B",
4 | "createScope:START:B",
5 | "signal:START:C",
6 | "exit:START:C",
7 | "createScope:FLOW_1:B",
8 | "destroyScope:START:C",
9 | "enter:FLOW_1:B",
10 | "exit:FLOW_1:D",
11 | "createScope:SUB:B",
12 | "destroyScope:FLOW_1:D",
13 | "enter:SUB:B",
14 | "createScope:SUB_START:E",
15 | "signal:SUB_START:F",
16 | "exit:SUB_START:F",
17 | "createScope:FLOW_3:E",
18 | "destroyScope:SUB_START:F",
19 | "enter:FLOW_3:E",
20 | "exit:FLOW_3:G",
21 | "createScope:SUB_END:E",
22 | "destroyScope:FLOW_3:G",
23 | "enter:SUB_END:E",
24 | "exit:SUB_END:H",
25 | "destroyScope:SUB_END:H",
26 | "exit:SUB:E",
27 | "createScope:FLOW_2:B",
28 | "enter:FLOW_2:B",
29 | "exit:FLOW_2:I",
30 | "createScope:COMP_TRIGGER:B",
31 | "destroyScope:FLOW_2:I",
32 | "enter:COMP_TRIGGER:B",
33 | "createScope:COMP_SUB:E",
34 | "signal:COMP_SUB:K",
35 | "createScope:COMP_START:K",
36 | "signal:COMP_START:L",
37 | "exit:COMP_START:L",
38 | "createScope:FLOW_5:K",
39 | "destroyScope:COMP_START:L",
40 | "enter:FLOW_5:K",
41 | "exit:FLOW_5:M",
42 | "createScope:COMP_END:K",
43 | "destroyScope:FLOW_5:M",
44 | "enter:COMP_END:K",
45 | "exit:COMP_END:N",
46 | "destroyScope:COMP_END:N",
47 | "exit:COMP_SUB:K",
48 | "destroyScope:COMP_SUB:K",
49 | "exit:SUB:E",
50 | "destroyScope:SUB:E",
51 | "signal:COMP_TRIGGER:J",
52 | "exit:COMP_TRIGGER:J",
53 | "createScope:FLOW_10:B",
54 | "destroyScope:COMP_TRIGGER:J",
55 | "enter:FLOW_10:B",
56 | "exit:FLOW_10:O",
57 | "createScope:END:B",
58 | "destroyScope:FLOW_10:O",
59 | "enter:END:B",
60 | "exit:END:P",
61 | "destroyScope:END:P",
62 | "exit:PROCESS:B",
63 | "destroyScope:PROCESS:B"
64 | ]
--------------------------------------------------------------------------------
/test/spec/simulator/Simulator.compensation-no-compensate-activity.json:
--------------------------------------------------------------------------------
1 | [
2 | "createScope:Process_1:null",
3 | "signal:Process_1:B",
4 | "createScope:START:B",
5 | "signal:START:C",
6 | "exit:START:C",
7 | "createScope:Flow_1aintfm:B",
8 | "destroyScope:START:C",
9 | "enter:Flow_1aintfm:B",
10 | "exit:Flow_1aintfm:D",
11 | "createScope:A:B",
12 | "destroyScope:Flow_1aintfm:D",
13 | "enter:A:B",
14 | "exit:A:E",
15 | "createScope:Flow_1w8hzat:B",
16 | "destroyScope:A:E",
17 | "enter:Flow_1w8hzat:B",
18 | "exit:Flow_1w8hzat:F",
19 | "createScope:COMP_A:B",
20 | "destroyScope:Flow_1w8hzat:F",
21 | "enter:COMP_A:B",
22 | "exit:COMP_A:G",
23 | "createScope:Flow_0lsswgi:B",
24 | "destroyScope:COMP_A:G",
25 | "enter:Flow_0lsswgi:B",
26 | "exit:Flow_0lsswgi:H",
27 | "createScope:END:B",
28 | "destroyScope:Flow_0lsswgi:H",
29 | "enter:END:B",
30 | "exit:END:I",
31 | "destroyScope:END:I",
32 | "exit:Process_1:B",
33 | "destroyScope:Process_1:B"
34 | ]
--------------------------------------------------------------------------------
/test/spec/simulator/Simulator.data-objects.json:
--------------------------------------------------------------------------------
1 | [
2 | "createScope:Process_1:null",
3 | "signal:Process_1:A",
4 | "createScope:START:A",
5 | "signal:START:B",
6 | "exit:START:B",
7 | "createScope:Flow_1:A",
8 | "destroyScope:START:B",
9 | "enter:Flow_1:A",
10 | "exit:Flow_1:C",
11 | "createScope:TASK_A:A",
12 | "destroyScope:Flow_1:C",
13 | "enter:TASK_A:A",
14 | "exit:TASK_A:D",
15 | "createScope:Flow_2:A",
16 | "destroyScope:TASK_A:D",
17 | "enter:Flow_2:A",
18 | "exit:Flow_2:E",
19 | "createScope:TASK_B:A",
20 | "destroyScope:Flow_2:E",
21 | "enter:TASK_B:A",
22 | "exit:TASK_B:F",
23 | "createScope:Flow_3:A",
24 | "destroyScope:TASK_B:F",
25 | "enter:Flow_3:A",
26 | "exit:Flow_3:G",
27 | "createScope:END:A",
28 | "destroyScope:Flow_3:G",
29 | "enter:END:A",
30 | "exit:END:H",
31 | "destroyScope:END:H",
32 | "exit:Process_1:A",
33 | "destroyScope:Process_1:A"
34 | ]
--------------------------------------------------------------------------------
/test/spec/simulator/Simulator.end-event.json:
--------------------------------------------------------------------------------
1 | [
2 | "createScope:Process_1:null",
3 | "signal:Process_1:A",
4 | "createScope:START:A",
5 | "signal:START:B",
6 | "exit:START:B",
7 | "createScope:Flow_1:A",
8 | "createScope:Flow_2:A",
9 | "destroyScope:START:B",
10 | "enter:Flow_1:A",
11 | "enter:Flow_2:A",
12 | "exit:Flow_1:C",
13 | "createScope:END:A",
14 | "destroyScope:Flow_1:C",
15 | "exit:Flow_2:D",
16 | "createScope:END:A",
17 | "destroyScope:Flow_2:D",
18 | "enter:END:A",
19 | "enter:END:A",
20 | "exit:END:E",
21 | "destroyScope:END:E",
22 | "exit:END:F",
23 | "destroyScope:END:F",
24 | "exit:Process_1:A",
25 | "destroyScope:Process_1:A"
26 | ]
--------------------------------------------------------------------------------
/test/spec/simulator/Simulator.error-catch-all-boundary-none.json:
--------------------------------------------------------------------------------
1 | [
2 | "createScope:Process_1:null",
3 | "signal:Process_1:B",
4 | "createScope:StartEvent_1:B",
5 | "signal:StartEvent_1:C",
6 | "exit:StartEvent_1:C",
7 | "createScope:Flow_1:B",
8 | "destroyScope:StartEvent_1:C",
9 | "enter:Flow_1:B",
10 | "exit:Flow_1:D",
11 | "createScope:SubProcess:B",
12 | "destroyScope:Flow_1:D",
13 | "enter:SubProcess:B",
14 | "createScope:StartEvent_2:E",
15 | "signal:StartEvent_2:F",
16 | "exit:StartEvent_2:F",
17 | "createScope:Flow_2:E",
18 | "destroyScope:StartEvent_2:F",
19 | "enter:Flow_2:E",
20 | "exit:Flow_2:G",
21 | "createScope:ErrorEndEvent_1:E",
22 | "destroyScope:Flow_2:G",
23 | "enter:ErrorEndEvent_1:E",
24 | "createScope:ErrorBoundary_none:B",
25 | "signal:ErrorBoundary_none:I",
26 | "destroyScope:ErrorEndEvent_1:H",
27 | "exit:SubProcess:E",
28 | "destroyScope:SubProcess:E",
29 | "exit:ErrorBoundary_none:I",
30 | "createScope:Flow_9:B",
31 | "destroyScope:ErrorBoundary_none:I",
32 | "enter:Flow_9:B",
33 | "exit:Flow_9:J",
34 | "createScope:EndEvent_7:B",
35 | "destroyScope:Flow_9:J",
36 | "enter:EndEvent_7:B",
37 | "exit:EndEvent_7:K",
38 | "destroyScope:EndEvent_7:K",
39 | "exit:Process_1:B",
40 | "destroyScope:Process_1:B"
41 | ]
--------------------------------------------------------------------------------
/test/spec/simulator/Simulator.error-catch-all-boundary-ref.json:
--------------------------------------------------------------------------------
1 | [
2 | "createScope:Process_1:null",
3 | "signal:Process_1:B",
4 | "createScope:StartEvent_1:B",
5 | "signal:StartEvent_1:C",
6 | "exit:StartEvent_1:C",
7 | "createScope:Flow_1:B",
8 | "destroyScope:StartEvent_1:C",
9 | "enter:Flow_1:B",
10 | "exit:Flow_1:D",
11 | "createScope:SubProcess:B",
12 | "destroyScope:Flow_1:D",
13 | "enter:SubProcess:B",
14 | "createScope:StartEvent_2:E",
15 | "signal:StartEvent_2:F",
16 | "exit:StartEvent_2:F",
17 | "createScope:Flow_2:E",
18 | "destroyScope:StartEvent_2:F",
19 | "enter:Flow_2:E",
20 | "exit:Flow_2:G",
21 | "createScope:ErrorEndEvent_1:E",
22 | "destroyScope:Flow_2:G",
23 | "enter:ErrorEndEvent_1:E",
24 | "createScope:ErrorBoundary_123:B",
25 | "signal:ErrorBoundary_123:I",
26 | "destroyScope:ErrorEndEvent_1:H",
27 | "exit:SubProcess:E",
28 | "destroyScope:SubProcess:E",
29 | "exit:ErrorBoundary_123:I",
30 | "createScope:Flow_10:B",
31 | "destroyScope:ErrorBoundary_123:I",
32 | "enter:Flow_10:B",
33 | "exit:Flow_10:J",
34 | "createScope:EndEvent_8:B",
35 | "destroyScope:Flow_10:J",
36 | "enter:EndEvent_8:B",
37 | "exit:EndEvent_8:K",
38 | "destroyScope:EndEvent_8:K",
39 | "exit:Process_1:B",
40 | "destroyScope:Process_1:B"
41 | ]
--------------------------------------------------------------------------------
/test/spec/simulator/Simulator.error-catch-all-inner-event-sub-none.json:
--------------------------------------------------------------------------------
1 | [
2 | "createScope:Process_1:null",
3 | "signal:Process_1:B",
4 | "createScope:StartEvent_1:B",
5 | "signal:StartEvent_1:C",
6 | "exit:StartEvent_1:C",
7 | "createScope:Flow_1:B",
8 | "destroyScope:StartEvent_1:C",
9 | "enter:Flow_1:B",
10 | "exit:Flow_1:D",
11 | "createScope:SubProcess:B",
12 | "destroyScope:Flow_1:D",
13 | "enter:SubProcess:B",
14 | "createScope:StartEvent_2:E",
15 | "signal:StartEvent_2:F",
16 | "exit:StartEvent_2:F",
17 | "createScope:Flow_2:E",
18 | "destroyScope:StartEvent_2:F",
19 | "enter:Flow_2:E",
20 | "exit:Flow_2:G",
21 | "createScope:ErrorEndEvent_1:E",
22 | "destroyScope:Flow_2:G",
23 | "enter:ErrorEndEvent_1:E",
24 | "createScope:EventSubProcess_1:E",
25 | "signal:EventSubProcess_1:I",
26 | "destroyScope:ErrorEndEvent_1:H",
27 | "createScope:InnerErrorStart_none:I",
28 | "signal:InnerErrorStart_none:J",
29 | "exit:InnerErrorStart_none:J",
30 | "createScope:Flow_5:I",
31 | "destroyScope:InnerErrorStart_none:J",
32 | "enter:Flow_5:I",
33 | "exit:Flow_5:K",
34 | "createScope:EndEvent_3:I",
35 | "destroyScope:Flow_5:K",
36 | "enter:EndEvent_3:I",
37 | "exit:EndEvent_3:L",
38 | "destroyScope:EndEvent_3:L",
39 | "exit:EventSubProcess_1:I",
40 | "destroyScope:EventSubProcess_1:I",
41 | "exit:SubProcess:E",
42 | "createScope:Flow_4:B",
43 | "destroyScope:SubProcess:E",
44 | "enter:Flow_4:B",
45 | "exit:Flow_4:M",
46 | "createScope:EndEvent_2:B",
47 | "destroyScope:Flow_4:M",
48 | "enter:EndEvent_2:B",
49 | "exit:EndEvent_2:N",
50 | "destroyScope:EndEvent_2:N",
51 | "exit:Process_1:B",
52 | "destroyScope:Process_1:B"
53 | ]
--------------------------------------------------------------------------------
/test/spec/simulator/Simulator.error-catch-all-inner-event-sub-ref.json:
--------------------------------------------------------------------------------
1 | [
2 | "createScope:Process_1:null",
3 | "signal:Process_1:B",
4 | "createScope:StartEvent_1:B",
5 | "signal:StartEvent_1:C",
6 | "exit:StartEvent_1:C",
7 | "createScope:Flow_1:B",
8 | "destroyScope:StartEvent_1:C",
9 | "enter:Flow_1:B",
10 | "exit:Flow_1:D",
11 | "createScope:SubProcess:B",
12 | "destroyScope:Flow_1:D",
13 | "enter:SubProcess:B",
14 | "createScope:StartEvent_2:E",
15 | "signal:StartEvent_2:F",
16 | "exit:StartEvent_2:F",
17 | "createScope:Flow_2:E",
18 | "destroyScope:StartEvent_2:F",
19 | "enter:Flow_2:E",
20 | "exit:Flow_2:G",
21 | "createScope:ErrorEndEvent_1:E",
22 | "destroyScope:Flow_2:G",
23 | "enter:ErrorEndEvent_1:E",
24 | "createScope:EventSubProcess_2:E",
25 | "signal:EventSubProcess_2:I",
26 | "destroyScope:ErrorEndEvent_1:H",
27 | "createScope:InnerErrorStart_123:I",
28 | "signal:InnerErrorStart_123:J",
29 | "exit:InnerErrorStart_123:J",
30 | "createScope:Flow_6:I",
31 | "destroyScope:InnerErrorStart_123:J",
32 | "enter:Flow_6:I",
33 | "exit:Flow_6:K",
34 | "createScope:EndEvent_4:I",
35 | "destroyScope:Flow_6:K",
36 | "enter:EndEvent_4:I",
37 | "exit:EndEvent_4:L",
38 | "destroyScope:EndEvent_4:L",
39 | "exit:EventSubProcess_2:I",
40 | "destroyScope:EventSubProcess_2:I",
41 | "exit:SubProcess:E",
42 | "createScope:Flow_4:B",
43 | "destroyScope:SubProcess:E",
44 | "enter:Flow_4:B",
45 | "exit:Flow_4:M",
46 | "createScope:EndEvent_2:B",
47 | "destroyScope:Flow_4:M",
48 | "enter:EndEvent_2:B",
49 | "exit:EndEvent_2:N",
50 | "destroyScope:EndEvent_2:N",
51 | "exit:Process_1:B",
52 | "destroyScope:Process_1:B"
53 | ]
--------------------------------------------------------------------------------
/test/spec/simulator/Simulator.error-catch-all-outer-event-sub-none.json:
--------------------------------------------------------------------------------
1 | [
2 | "createScope:Process_1:null",
3 | "signal:Process_1:B",
4 | "createScope:StartEvent_1:B",
5 | "signal:StartEvent_1:C",
6 | "exit:StartEvent_1:C",
7 | "createScope:Flow_1:B",
8 | "destroyScope:StartEvent_1:C",
9 | "enter:Flow_1:B",
10 | "exit:Flow_1:D",
11 | "createScope:SubProcess:B",
12 | "destroyScope:Flow_1:D",
13 | "enter:SubProcess:B",
14 | "createScope:StartEvent_2:E",
15 | "signal:StartEvent_2:F",
16 | "exit:StartEvent_2:F",
17 | "createScope:Flow_2:E",
18 | "destroyScope:StartEvent_2:F",
19 | "enter:Flow_2:E",
20 | "exit:Flow_2:G",
21 | "createScope:ErrorEvent_1:E",
22 | "destroyScope:Flow_2:G",
23 | "enter:ErrorEvent_1:E",
24 | "createScope:EventSubProcess_3:B",
25 | "signal:EventSubProcess_3:I",
26 | "destroyScope:ErrorEvent_1:H",
27 | "destroyScope:SubProcess:E",
28 | "createScope:OuterErrorStart_none:I",
29 | "signal:OuterErrorStart_none:J",
30 | "exit:OuterErrorStart_none:J",
31 | "createScope:Flow_7:I",
32 | "destroyScope:OuterErrorStart_none:J",
33 | "enter:Flow_7:I",
34 | "exit:Flow_7:K",
35 | "createScope:EndEvent_5:I",
36 | "destroyScope:Flow_7:K",
37 | "enter:EndEvent_5:I",
38 | "exit:EndEvent_5:L",
39 | "destroyScope:EndEvent_5:L",
40 | "exit:EventSubProcess_3:I",
41 | "destroyScope:EventSubProcess_3:I",
42 | "exit:Process_1:B",
43 | "destroyScope:Process_1:B"
44 | ]
--------------------------------------------------------------------------------
/test/spec/simulator/Simulator.error-catch-all-outer-event-sub-ref.json:
--------------------------------------------------------------------------------
1 | [
2 | "createScope:Process_1:null",
3 | "signal:Process_1:B",
4 | "createScope:StartEvent_1:B",
5 | "signal:StartEvent_1:C",
6 | "exit:StartEvent_1:C",
7 | "createScope:Flow_1:B",
8 | "destroyScope:StartEvent_1:C",
9 | "enter:Flow_1:B",
10 | "exit:Flow_1:D",
11 | "createScope:SubProcess:B",
12 | "destroyScope:Flow_1:D",
13 | "enter:SubProcess:B",
14 | "createScope:StartEvent_2:E",
15 | "signal:StartEvent_2:F",
16 | "exit:StartEvent_2:F",
17 | "createScope:Flow_2:E",
18 | "destroyScope:StartEvent_2:F",
19 | "enter:Flow_2:E",
20 | "exit:Flow_2:G",
21 | "createScope:ErrorEvent_1:E",
22 | "destroyScope:Flow_2:G",
23 | "enter:ErrorEvent_1:E",
24 | "createScope:EventSubProcess_4:B",
25 | "signal:EventSubProcess_4:I",
26 | "destroyScope:ErrorEvent_1:H",
27 | "destroyScope:SubProcess:E",
28 | "createScope:OuterErrorStart_123:I",
29 | "signal:OuterErrorStart_123:J",
30 | "exit:OuterErrorStart_123:J",
31 | "createScope:Flow_8:I",
32 | "destroyScope:OuterErrorStart_123:J",
33 | "enter:Flow_8:I",
34 | "exit:Flow_8:K",
35 | "createScope:EndEvent_6:I",
36 | "destroyScope:Flow_8:K",
37 | "enter:EndEvent_6:I",
38 | "exit:EndEvent_6:L",
39 | "destroyScope:EndEvent_6:L",
40 | "exit:EventSubProcess_4:I",
41 | "destroyScope:EventSubProcess_4:I",
42 | "exit:Process_1:B",
43 | "destroyScope:Process_1:B"
44 | ]
--------------------------------------------------------------------------------
/test/spec/simulator/Simulator.error-consume.json:
--------------------------------------------------------------------------------
1 | [
2 | "createScope:Process_1:null",
3 | "signal:Process_1:B",
4 | "createScope:START:B",
5 | "signal:START:C",
6 | "exit:START:C",
7 | "createScope:Flow_11zefw2:B",
8 | "destroyScope:START:C",
9 | "enter:Flow_11zefw2:B",
10 | "exit:Flow_11zefw2:D",
11 | "createScope:S:B",
12 | "destroyScope:Flow_11zefw2:D",
13 | "enter:S:B",
14 | "createScope:S_START:E",
15 | "signal:S_START:F",
16 | "exit:S_START:F",
17 | "createScope:Flow_1:E",
18 | "destroyScope:S_START:F",
19 | "enter:Flow_1:E",
20 | "exit:Flow_1:G",
21 | "createScope:S_ERROR_END:E",
22 | "destroyScope:Flow_1:G",
23 | "enter:S_ERROR_END:E",
24 | "createScope:S_EVT:E",
25 | "signal:S_EVT:I",
26 | "destroyScope:S_ERROR_END:H",
27 | "createScope:S_EVT_START:I",
28 | "signal:S_EVT_START:J",
29 | "exit:S_EVT_START:J",
30 | "createScope:Flow_3:I",
31 | "destroyScope:S_EVT_START:J",
32 | "enter:Flow_3:I",
33 | "exit:Flow_3:K",
34 | "createScope:S_EVT_END:I",
35 | "destroyScope:Flow_3:K",
36 | "enter:S_EVT_END:I",
37 | "exit:S_EVT_END:L",
38 | "destroyScope:S_EVT_END:L",
39 | "exit:S_EVT:I",
40 | "destroyScope:S_EVT:I",
41 | "exit:S:E",
42 | "createScope:Flow_07fma4i:B",
43 | "destroyScope:S:E",
44 | "enter:Flow_07fma4i:B",
45 | "exit:Flow_07fma4i:M",
46 | "createScope:END:B",
47 | "destroyScope:Flow_07fma4i:M",
48 | "enter:END:B",
49 | "exit:END:N",
50 | "destroyScope:END:N",
51 | "exit:Process_1:B",
52 | "destroyScope:Process_1:B"
53 | ]
--------------------------------------------------------------------------------
/test/spec/simulator/Simulator.error-nested-trigger-boundary.json:
--------------------------------------------------------------------------------
1 | [
2 | "createScope:Process_1:null",
3 | "signal:Process_1:B",
4 | "createScope:START:B",
5 | "signal:START:C",
6 | "exit:START:C",
7 | "createScope:Flow_0izjhw2:B",
8 | "destroyScope:START:C",
9 | "enter:Flow_0izjhw2:B",
10 | "exit:Flow_0izjhw2:D",
11 | "createScope:CANCEL_EVENT_SUB_INT:B",
12 | "destroyScope:Flow_0izjhw2:D",
13 | "enter:CANCEL_EVENT_SUB_INT:B",
14 | "createScope:SUB_START:E",
15 | "signal:SUB_START:F",
16 | "exit:SUB_START:F",
17 | "createScope:Flow_0atqqyc:E",
18 | "destroyScope:SUB_START:F",
19 | "enter:Flow_0atqqyc:E",
20 | "exit:Flow_0atqqyc:G",
21 | "createScope:SUB_END_ERROR:E",
22 | "destroyScope:Flow_0atqqyc:G",
23 | "enter:SUB_END_ERROR:E",
24 | "createScope:CS_SUB:E",
25 | "signal:CS_SUB:I",
26 | "destroyScope:SUB_END_ERROR:H",
27 | "createScope:CS_START:I",
28 | "signal:CS_START:J",
29 | "exit:CS_START:J",
30 | "createScope:Flow_1jqqcdq:I",
31 | "destroyScope:CS_START:J",
32 | "enter:Flow_1jqqcdq:I",
33 | "exit:Flow_1jqqcdq:K",
34 | "createScope:CS_TRIGGER_ERROR:I",
35 | "destroyScope:Flow_1jqqcdq:K",
36 | "enter:CS_TRIGGER_ERROR:I",
37 | "createScope:ERROR_BOUNDARY:B",
38 | "signal:ERROR_BOUNDARY:M",
39 | "destroyScope:CS_TRIGGER_ERROR:L",
40 | "destroyScope:CS_SUB:I",
41 | "exit:CANCEL_EVENT_SUB_INT:E",
42 | "destroyScope:CANCEL_EVENT_SUB_INT:E",
43 | "exit:ERROR_BOUNDARY:M",
44 | "createScope:Flow_06o1xs1:B",
45 | "destroyScope:ERROR_BOUNDARY:M",
46 | "enter:Flow_06o1xs1:B",
47 | "exit:Flow_06o1xs1:N",
48 | "createScope:ERROR_END:B",
49 | "destroyScope:Flow_06o1xs1:N",
50 | "enter:ERROR_END:B",
51 | "exit:ERROR_END:O",
52 | "destroyScope:ERROR_END:O",
53 | "exit:Process_1:B",
54 | "destroyScope:Process_1:B"
55 | ]
--------------------------------------------------------------------------------
/test/spec/simulator/Simulator.error-no-catch.json:
--------------------------------------------------------------------------------
1 | [
2 | "createScope:Process_1:null",
3 | "signal:Process_1:B",
4 | "createScope:START:B",
5 | "signal:START:C",
6 | "exit:START:C",
7 | "createScope:Flow_1:B",
8 | "destroyScope:START:C",
9 | "enter:Flow_1:B",
10 | "exit:Flow_1:D",
11 | "createScope:S:B",
12 | "destroyScope:Flow_1:D",
13 | "enter:S:B",
14 | "createScope:S_START:E",
15 | "signal:S_START:F",
16 | "exit:S_START:F",
17 | "createScope:Flow_3:E",
18 | "destroyScope:S_START:F",
19 | "enter:Flow_3:E",
20 | "exit:Flow_3:G",
21 | "createScope:S_ERROR_END:E",
22 | "destroyScope:Flow_3:G",
23 | "enter:S_ERROR_END:E",
24 | "exit:S_ERROR_END:H",
25 | "destroyScope:S_ERROR_END:H",
26 | "exit:S:E",
27 | "createScope:Flow_2:B",
28 | "destroyScope:S:E",
29 | "enter:Flow_2:B",
30 | "exit:Flow_2:I",
31 | "createScope:End:B",
32 | "destroyScope:Flow_2:I",
33 | "enter:End:B",
34 | "exit:End:J",
35 | "destroyScope:End:J",
36 | "exit:Process_1:B",
37 | "destroyScope:Process_1:B"
38 | ]
--------------------------------------------------------------------------------
/test/spec/simulator/Simulator.error-rethrow.json:
--------------------------------------------------------------------------------
1 | [
2 | "createScope:Process_1:null",
3 | "signal:Process_1:B",
4 | "createScope:START:B",
5 | "signal:START:C",
6 | "exit:START:C",
7 | "createScope:Flow_11zefw2:B",
8 | "destroyScope:START:C",
9 | "enter:Flow_11zefw2:B",
10 | "exit:Flow_11zefw2:D",
11 | "createScope:S:B",
12 | "destroyScope:Flow_11zefw2:D",
13 | "enter:S:B",
14 | "createScope:S_START:E",
15 | "signal:S_START:F",
16 | "exit:S_START:F",
17 | "createScope:Flow_1:E",
18 | "destroyScope:S_START:F",
19 | "enter:Flow_1:E",
20 | "exit:Flow_1:G",
21 | "createScope:S_ERROR_END:E",
22 | "destroyScope:Flow_1:G",
23 | "enter:S_ERROR_END:E",
24 | "createScope:S_EVT:E",
25 | "signal:S_EVT:I",
26 | "destroyScope:S_ERROR_END:H",
27 | "createScope:S_EVT_START:I",
28 | "signal:S_EVT_START:J",
29 | "exit:S_EVT_START:J",
30 | "createScope:Flow_3:I",
31 | "destroyScope:S_EVT_START:J",
32 | "enter:Flow_3:I",
33 | "exit:Flow_3:K",
34 | "createScope:S_EVT_END:I",
35 | "destroyScope:Flow_3:K",
36 | "enter:S_EVT_END:I",
37 | "createScope:S_ERROR_BOUNDARY:B",
38 | "signal:S_ERROR_BOUNDARY:M",
39 | "destroyScope:S_EVT_END:L",
40 | "destroyScope:S_EVT:I",
41 | "exit:S:E",
42 | "destroyScope:S:E",
43 | "exit:S_ERROR_BOUNDARY:M",
44 | "createScope:Flow_0q92w6l:B",
45 | "destroyScope:S_ERROR_BOUNDARY:M",
46 | "enter:Flow_0q92w6l:B",
47 | "exit:Flow_0q92w6l:N",
48 | "createScope:CANCEL_END:B",
49 | "destroyScope:Flow_0q92w6l:N",
50 | "enter:CANCEL_END:B",
51 | "exit:CANCEL_END:O",
52 | "destroyScope:CANCEL_END:O",
53 | "exit:Process_1:B",
54 | "destroyScope:Process_1:B"
55 | ]
--------------------------------------------------------------------------------
/test/spec/simulator/Simulator.error-trigger-boundary.json:
--------------------------------------------------------------------------------
1 | [
2 | "createScope:Process_1:null",
3 | "signal:Process_1:B",
4 | "createScope:START:B",
5 | "signal:START:C",
6 | "exit:START:C",
7 | "createScope:Flow_1:B",
8 | "destroyScope:START:C",
9 | "enter:Flow_1:B",
10 | "exit:Flow_1:D",
11 | "createScope:S:B",
12 | "destroyScope:Flow_1:D",
13 | "enter:S:B",
14 | "createScope:S_START:E",
15 | "signal:S_START:F",
16 | "exit:S_START:F",
17 | "createScope:Flow_3:E",
18 | "destroyScope:S_START:F",
19 | "enter:Flow_3:E",
20 | "exit:Flow_3:G",
21 | "createScope:S_END:E",
22 | "destroyScope:Flow_3:G",
23 | "enter:S_END:E",
24 | "createScope:Error_Boundary:B",
25 | "signal:Error_Boundary:I",
26 | "destroyScope:S_END:H",
27 | "exit:S:E",
28 | "destroyScope:S:E",
29 | "exit:Error_Boundary:I",
30 | "createScope:Flow_1qizkga:B",
31 | "destroyScope:Error_Boundary:I",
32 | "enter:Flow_1qizkga:B",
33 | "exit:Flow_1qizkga:J",
34 | "createScope:Error_End:B",
35 | "destroyScope:Flow_1qizkga:J",
36 | "enter:Error_End:B",
37 | "exit:Error_End:K",
38 | "destroyScope:Error_End:K",
39 | "exit:Process_1:B",
40 | "destroyScope:Process_1:B"
41 | ]
--------------------------------------------------------------------------------
/test/spec/simulator/Simulator.error-trigger-event-sub-process.json:
--------------------------------------------------------------------------------
1 | [
2 | "createScope:Process_1:null",
3 | "signal:Process_1:B",
4 | "createScope:START:B",
5 | "signal:START:C",
6 | "exit:START:C",
7 | "createScope:Flow_1:B",
8 | "destroyScope:START:C",
9 | "enter:Flow_1:B",
10 | "exit:Flow_1:D",
11 | "createScope:S:B",
12 | "destroyScope:Flow_1:D",
13 | "enter:S:B",
14 | "createScope:S_START:E",
15 | "signal:S_START:F",
16 | "exit:S_START:F",
17 | "createScope:Flow_3:E",
18 | "destroyScope:S_START:F",
19 | "enter:Flow_3:E",
20 | "exit:Flow_3:G",
21 | "createScope:S_END:E",
22 | "destroyScope:Flow_3:G",
23 | "enter:S_END:E",
24 | "createScope:S_ERROR_SUB:E",
25 | "signal:S_ERROR_SUB:I",
26 | "destroyScope:S_END:H",
27 | "createScope:START_ERROR:I",
28 | "signal:START_ERROR:J",
29 | "exit:START_ERROR:J",
30 | "createScope:Flow_7:I",
31 | "destroyScope:START_ERROR:J",
32 | "enter:Flow_7:I",
33 | "exit:Flow_7:K",
34 | "createScope:END_ERROR:I",
35 | "destroyScope:Flow_7:K",
36 | "enter:END_ERROR:I",
37 | "exit:END_ERROR:L",
38 | "destroyScope:END_ERROR:L",
39 | "exit:S_ERROR_SUB:I",
40 | "destroyScope:S_ERROR_SUB:I",
41 | "exit:S:E",
42 | "createScope:Flow_2:B",
43 | "destroyScope:S:E",
44 | "enter:Flow_2:B",
45 | "exit:Flow_2:M",
46 | "createScope:End:B",
47 | "destroyScope:Flow_2:M",
48 | "enter:End:B",
49 | "exit:End:N",
50 | "destroyScope:End:N",
51 | "exit:Process_1:B",
52 | "destroyScope:Process_1:B"
53 | ]
--------------------------------------------------------------------------------
/test/spec/simulator/Simulator.escalation-catch-all-boundary-none.json:
--------------------------------------------------------------------------------
1 | [
2 | "createScope:Process_1:null",
3 | "signal:Process_1:B",
4 | "createScope:StartEvent_1:B",
5 | "signal:StartEvent_1:C",
6 | "exit:StartEvent_1:C",
7 | "createScope:Flow_1:B",
8 | "destroyScope:StartEvent_1:C",
9 | "enter:Flow_1:B",
10 | "exit:Flow_1:D",
11 | "createScope:SubProcess:B",
12 | "destroyScope:Flow_1:D",
13 | "enter:SubProcess:B",
14 | "createScope:StartEvent_2:E",
15 | "signal:StartEvent_2:F",
16 | "exit:StartEvent_2:F",
17 | "createScope:Flow_2:E",
18 | "destroyScope:StartEvent_2:F",
19 | "enter:Flow_2:E",
20 | "exit:Flow_2:G",
21 | "createScope:Event_1vfmjkk:E",
22 | "destroyScope:Flow_2:G",
23 | "enter:Event_1vfmjkk:E",
24 | "createScope:EscalationBoundary_none:B",
25 | "signal:EscalationBoundary_none:I",
26 | "destroyScope:Event_1vfmjkk:H",
27 | "exit:SubProcess:E",
28 | "destroyScope:SubProcess:E",
29 | "exit:EscalationBoundary_none:I",
30 | "createScope:Flow_9:B",
31 | "destroyScope:EscalationBoundary_none:I",
32 | "enter:Flow_9:B",
33 | "exit:Flow_9:J",
34 | "createScope:EndEvent_7:B",
35 | "destroyScope:Flow_9:J",
36 | "enter:EndEvent_7:B",
37 | "exit:EndEvent_7:K",
38 | "destroyScope:EndEvent_7:K",
39 | "exit:Process_1:B",
40 | "destroyScope:Process_1:B"
41 | ]
--------------------------------------------------------------------------------
/test/spec/simulator/Simulator.escalation-catch-all-boundary-ref.json:
--------------------------------------------------------------------------------
1 | [
2 | "createScope:Process_1:null",
3 | "signal:Process_1:B",
4 | "createScope:StartEvent_1:B",
5 | "signal:StartEvent_1:C",
6 | "exit:StartEvent_1:C",
7 | "createScope:Flow_1:B",
8 | "destroyScope:StartEvent_1:C",
9 | "enter:Flow_1:B",
10 | "exit:Flow_1:D",
11 | "createScope:SubProcess:B",
12 | "destroyScope:Flow_1:D",
13 | "enter:SubProcess:B",
14 | "createScope:StartEvent_2:E",
15 | "signal:StartEvent_2:F",
16 | "exit:StartEvent_2:F",
17 | "createScope:Flow_2:E",
18 | "destroyScope:StartEvent_2:F",
19 | "enter:Flow_2:E",
20 | "exit:Flow_2:G",
21 | "createScope:Event_1vfmjkk:E",
22 | "destroyScope:Flow_2:G",
23 | "enter:Event_1vfmjkk:E",
24 | "createScope:EscalationBoundary_123:B",
25 | "signal:EscalationBoundary_123:I",
26 | "destroyScope:Event_1vfmjkk:H",
27 | "exit:SubProcess:E",
28 | "destroyScope:SubProcess:E",
29 | "exit:EscalationBoundary_123:I",
30 | "createScope:Flow_10:B",
31 | "destroyScope:EscalationBoundary_123:I",
32 | "enter:Flow_10:B",
33 | "exit:Flow_10:J",
34 | "createScope:EndEvent_8:B",
35 | "destroyScope:Flow_10:J",
36 | "enter:EndEvent_8:B",
37 | "exit:EndEvent_8:K",
38 | "destroyScope:EndEvent_8:K",
39 | "exit:Process_1:B",
40 | "destroyScope:Process_1:B"
41 | ]
--------------------------------------------------------------------------------
/test/spec/simulator/Simulator.escalation-catch-all-inner-event-sub-none.json:
--------------------------------------------------------------------------------
1 | [
2 | "createScope:Process_1:null",
3 | "signal:Process_1:B",
4 | "createScope:StartEvent_1:B",
5 | "signal:StartEvent_1:C",
6 | "exit:StartEvent_1:C",
7 | "createScope:Flow_1:B",
8 | "destroyScope:StartEvent_1:C",
9 | "enter:Flow_1:B",
10 | "exit:Flow_1:D",
11 | "createScope:SubProcess:B",
12 | "destroyScope:Flow_1:D",
13 | "enter:SubProcess:B",
14 | "createScope:StartEvent_2:E",
15 | "signal:StartEvent_2:F",
16 | "exit:StartEvent_2:F",
17 | "createScope:Flow_2:E",
18 | "destroyScope:StartEvent_2:F",
19 | "enter:Flow_2:E",
20 | "exit:Flow_2:G",
21 | "createScope:Event_1vfmjkk:E",
22 | "destroyScope:Flow_2:G",
23 | "enter:Event_1vfmjkk:E",
24 | "createScope:EventSubProcess_1:E",
25 | "signal:EventSubProcess_1:I",
26 | "destroyScope:Event_1vfmjkk:H",
27 | "createScope:InnerEscalationStart_none:I",
28 | "signal:InnerEscalationStart_none:J",
29 | "exit:InnerEscalationStart_none:J",
30 | "createScope:Flow_5:I",
31 | "destroyScope:InnerEscalationStart_none:J",
32 | "enter:Flow_5:I",
33 | "exit:Flow_5:K",
34 | "createScope:EndEvent_3:I",
35 | "destroyScope:Flow_5:K",
36 | "enter:EndEvent_3:I",
37 | "exit:EndEvent_3:L",
38 | "destroyScope:EndEvent_3:L",
39 | "exit:EventSubProcess_1:I",
40 | "destroyScope:EventSubProcess_1:I",
41 | "exit:SubProcess:E",
42 | "createScope:Flow_4:B",
43 | "destroyScope:SubProcess:E",
44 | "enter:Flow_4:B",
45 | "exit:Flow_4:M",
46 | "createScope:EndEvent_2:B",
47 | "destroyScope:Flow_4:M",
48 | "enter:EndEvent_2:B",
49 | "exit:EndEvent_2:N",
50 | "destroyScope:EndEvent_2:N",
51 | "exit:Process_1:B",
52 | "destroyScope:Process_1:B"
53 | ]
--------------------------------------------------------------------------------
/test/spec/simulator/Simulator.escalation-catch-all-inner-event-sub-ref.json:
--------------------------------------------------------------------------------
1 | [
2 | "createScope:Process_1:null",
3 | "signal:Process_1:B",
4 | "createScope:StartEvent_1:B",
5 | "signal:StartEvent_1:C",
6 | "exit:StartEvent_1:C",
7 | "createScope:Flow_1:B",
8 | "destroyScope:StartEvent_1:C",
9 | "enter:Flow_1:B",
10 | "exit:Flow_1:D",
11 | "createScope:SubProcess:B",
12 | "destroyScope:Flow_1:D",
13 | "enter:SubProcess:B",
14 | "createScope:StartEvent_2:E",
15 | "signal:StartEvent_2:F",
16 | "exit:StartEvent_2:F",
17 | "createScope:Flow_2:E",
18 | "destroyScope:StartEvent_2:F",
19 | "enter:Flow_2:E",
20 | "exit:Flow_2:G",
21 | "createScope:Event_1vfmjkk:E",
22 | "destroyScope:Flow_2:G",
23 | "enter:Event_1vfmjkk:E",
24 | "createScope:EventSubProcess_2:E",
25 | "signal:EventSubProcess_2:I",
26 | "destroyScope:Event_1vfmjkk:H",
27 | "createScope:InnerEscalationStart_123:I",
28 | "signal:InnerEscalationStart_123:J",
29 | "exit:InnerEscalationStart_123:J",
30 | "createScope:Flow_6:I",
31 | "destroyScope:InnerEscalationStart_123:J",
32 | "enter:Flow_6:I",
33 | "exit:Flow_6:K",
34 | "createScope:EndEvent_4:I",
35 | "destroyScope:Flow_6:K",
36 | "enter:EndEvent_4:I",
37 | "exit:EndEvent_4:L",
38 | "destroyScope:EndEvent_4:L",
39 | "exit:EventSubProcess_2:I",
40 | "destroyScope:EventSubProcess_2:I",
41 | "exit:SubProcess:E",
42 | "createScope:Flow_4:B",
43 | "destroyScope:SubProcess:E",
44 | "enter:Flow_4:B",
45 | "exit:Flow_4:M",
46 | "createScope:EndEvent_2:B",
47 | "destroyScope:Flow_4:M",
48 | "enter:EndEvent_2:B",
49 | "exit:EndEvent_2:N",
50 | "destroyScope:EndEvent_2:N",
51 | "exit:Process_1:B",
52 | "destroyScope:Process_1:B"
53 | ]
--------------------------------------------------------------------------------
/test/spec/simulator/Simulator.escalation-catch-all-outer-event-sub-none.json:
--------------------------------------------------------------------------------
1 | [
2 | "createScope:Process_1:null",
3 | "signal:Process_1:B",
4 | "createScope:StartEvent_1:B",
5 | "signal:StartEvent_1:C",
6 | "exit:StartEvent_1:C",
7 | "createScope:Flow_1:B",
8 | "destroyScope:StartEvent_1:C",
9 | "enter:Flow_1:B",
10 | "exit:Flow_1:D",
11 | "createScope:SubProcess:B",
12 | "destroyScope:Flow_1:D",
13 | "enter:SubProcess:B",
14 | "createScope:StartEvent_2:E",
15 | "signal:StartEvent_2:F",
16 | "exit:StartEvent_2:F",
17 | "createScope:Flow_2:E",
18 | "destroyScope:StartEvent_2:F",
19 | "enter:Flow_2:E",
20 | "exit:Flow_2:G",
21 | "createScope:Event_1vfmjkk:E",
22 | "destroyScope:Flow_2:G",
23 | "enter:Event_1vfmjkk:E",
24 | "createScope:EventSubProcess_3:B",
25 | "signal:EventSubProcess_3:I",
26 | "destroyScope:Event_1vfmjkk:H",
27 | "destroyScope:SubProcess:E",
28 | "createScope:OuterEscalationStart_none:I",
29 | "signal:OuterEscalationStart_none:J",
30 | "exit:OuterEscalationStart_none:J",
31 | "createScope:Flow_7:I",
32 | "destroyScope:OuterEscalationStart_none:J",
33 | "enter:Flow_7:I",
34 | "exit:Flow_7:K",
35 | "createScope:EndEvent_5:I",
36 | "destroyScope:Flow_7:K",
37 | "enter:EndEvent_5:I",
38 | "exit:EndEvent_5:L",
39 | "destroyScope:EndEvent_5:L",
40 | "exit:EventSubProcess_3:I",
41 | "destroyScope:EventSubProcess_3:I",
42 | "exit:Process_1:B",
43 | "destroyScope:Process_1:B"
44 | ]
--------------------------------------------------------------------------------
/test/spec/simulator/Simulator.escalation-catch-all-outer-event-sub-ref.json:
--------------------------------------------------------------------------------
1 | [
2 | "createScope:Process_1:null",
3 | "signal:Process_1:B",
4 | "createScope:StartEvent_1:B",
5 | "signal:StartEvent_1:C",
6 | "exit:StartEvent_1:C",
7 | "createScope:Flow_1:B",
8 | "destroyScope:StartEvent_1:C",
9 | "enter:Flow_1:B",
10 | "exit:Flow_1:D",
11 | "createScope:SubProcess:B",
12 | "destroyScope:Flow_1:D",
13 | "enter:SubProcess:B",
14 | "createScope:StartEvent_2:E",
15 | "signal:StartEvent_2:F",
16 | "exit:StartEvent_2:F",
17 | "createScope:Flow_2:E",
18 | "destroyScope:StartEvent_2:F",
19 | "enter:Flow_2:E",
20 | "exit:Flow_2:G",
21 | "createScope:Event_1vfmjkk:E",
22 | "destroyScope:Flow_2:G",
23 | "enter:Event_1vfmjkk:E",
24 | "createScope:EventSubProcess_4:B",
25 | "signal:EventSubProcess_4:I",
26 | "destroyScope:Event_1vfmjkk:H",
27 | "destroyScope:SubProcess:E",
28 | "createScope:OuterEscalationStart_123:I",
29 | "signal:OuterEscalationStart_123:J",
30 | "exit:OuterEscalationStart_123:J",
31 | "createScope:Flow_8:I",
32 | "destroyScope:OuterEscalationStart_123:J",
33 | "enter:Flow_8:I",
34 | "exit:Flow_8:K",
35 | "createScope:EndEvent_6:I",
36 | "destroyScope:Flow_8:K",
37 | "enter:EndEvent_6:I",
38 | "exit:EndEvent_6:L",
39 | "destroyScope:EndEvent_6:L",
40 | "exit:EventSubProcess_4:I",
41 | "destroyScope:EventSubProcess_4:I",
42 | "exit:Process_1:B",
43 | "destroyScope:Process_1:B"
44 | ]
--------------------------------------------------------------------------------
/test/spec/simulator/Simulator.escalation-consume.json:
--------------------------------------------------------------------------------
1 | [
2 | "createScope:Process_1:null",
3 | "signal:Process_1:B",
4 | "createScope:START:B",
5 | "signal:START:C",
6 | "exit:START:C",
7 | "createScope:Flow_11zefw2:B",
8 | "destroyScope:START:C",
9 | "enter:Flow_11zefw2:B",
10 | "exit:Flow_11zefw2:D",
11 | "createScope:S:B",
12 | "destroyScope:Flow_11zefw2:D",
13 | "enter:S:B",
14 | "createScope:S_START:E",
15 | "signal:S_START:F",
16 | "exit:S_START:F",
17 | "createScope:Flow_1:E",
18 | "destroyScope:S_START:F",
19 | "enter:Flow_1:E",
20 | "exit:Flow_1:G",
21 | "createScope:S_ESC_END:E",
22 | "destroyScope:Flow_1:G",
23 | "enter:S_ESC_END:E",
24 | "createScope:S_EVT:E",
25 | "signal:S_EVT:I",
26 | "destroyScope:S_ESC_END:H",
27 | "createScope:S_EVT_START:I",
28 | "signal:S_EVT_START:J",
29 | "exit:S_EVT_START:J",
30 | "createScope:Flow_3:I",
31 | "destroyScope:S_EVT_START:J",
32 | "enter:Flow_3:I",
33 | "exit:Flow_3:K",
34 | "createScope:S_EVT_END:I",
35 | "destroyScope:Flow_3:K",
36 | "enter:S_EVT_END:I",
37 | "exit:S_EVT_END:L",
38 | "destroyScope:S_EVT_END:L",
39 | "exit:S_EVT:I",
40 | "destroyScope:S_EVT:I",
41 | "exit:S:E",
42 | "createScope:Flow_07fma4i:B",
43 | "destroyScope:S:E",
44 | "enter:Flow_07fma4i:B",
45 | "exit:Flow_07fma4i:M",
46 | "createScope:END:B",
47 | "destroyScope:Flow_07fma4i:M",
48 | "enter:END:B",
49 | "exit:END:N",
50 | "destroyScope:END:N",
51 | "exit:Process_1:B",
52 | "destroyScope:Process_1:B"
53 | ]
--------------------------------------------------------------------------------
/test/spec/simulator/Simulator.escalation-no-catch.json:
--------------------------------------------------------------------------------
1 | [
2 | "createScope:Process_1:null",
3 | "signal:Process_1:A",
4 | "createScope:START:A",
5 | "signal:START:B",
6 | "exit:START:B",
7 | "createScope:Flow_1:A",
8 | "destroyScope:START:B",
9 | "enter:Flow_1:A",
10 | "exit:Flow_1:C",
11 | "createScope:TRIGGER_E:A",
12 | "destroyScope:Flow_1:C",
13 | "enter:TRIGGER_E:A",
14 | "exit:TRIGGER_E:D",
15 | "createScope:Flow_2:A",
16 | "destroyScope:TRIGGER_E:D",
17 | "enter:Flow_2:A",
18 | "exit:Flow_2:E",
19 | "createScope:END:A",
20 | "destroyScope:Flow_2:E",
21 | "enter:END:A",
22 | "exit:END:F",
23 | "destroyScope:END:F",
24 | "exit:Process_1:A",
25 | "destroyScope:Process_1:A"
26 | ]
--------------------------------------------------------------------------------
/test/spec/simulator/Simulator.escalation-rethrow.json:
--------------------------------------------------------------------------------
1 | [
2 | "createScope:Process_1:null",
3 | "signal:Process_1:B",
4 | "createScope:START:B",
5 | "signal:START:C",
6 | "exit:START:C",
7 | "createScope:Flow_2:B",
8 | "destroyScope:START:C",
9 | "enter:Flow_2:B",
10 | "exit:Flow_2:D",
11 | "createScope:S:B",
12 | "destroyScope:Flow_2:D",
13 | "enter:S:B",
14 | "createScope:S_START:E",
15 | "signal:S_START:F",
16 | "exit:S_START:F",
17 | "createScope:Flow_1:E",
18 | "destroyScope:S_START:F",
19 | "enter:Flow_1:E",
20 | "exit:Flow_1:G",
21 | "createScope:S_ESC_END:E",
22 | "destroyScope:Flow_1:G",
23 | "enter:S_ESC_END:E",
24 | "createScope:S_EVT:E",
25 | "signal:S_EVT:I",
26 | "destroyScope:S_ESC_END:H",
27 | "createScope:S_EVT_START:I",
28 | "signal:S_EVT_START:J",
29 | "exit:S_EVT_START:J",
30 | "createScope:Flow_8:I",
31 | "destroyScope:S_EVT_START:J",
32 | "enter:Flow_8:I",
33 | "exit:Flow_8:K",
34 | "createScope:S_EVT_END:I",
35 | "destroyScope:Flow_8:K",
36 | "enter:S_EVT_END:I",
37 | "createScope:S_ESC_BOUNDARY:B",
38 | "signal:S_ESC_BOUNDARY:M",
39 | "destroyScope:S_EVT_END:L",
40 | "destroyScope:S_EVT:I",
41 | "exit:S:E",
42 | "destroyScope:S:E",
43 | "exit:S_ESC_BOUNDARY:M",
44 | "createScope:Flow_4:B",
45 | "destroyScope:S_ESC_BOUNDARY:M",
46 | "enter:Flow_4:B",
47 | "exit:Flow_4:N",
48 | "createScope:CANCEL_END:B",
49 | "destroyScope:Flow_4:N",
50 | "enter:CANCEL_END:B",
51 | "exit:CANCEL_END:O",
52 | "destroyScope:CANCEL_END:O",
53 | "exit:Process_1:B",
54 | "destroyScope:Process_1:B"
55 | ]
--------------------------------------------------------------------------------
/test/spec/simulator/Simulator.escalation-trigger-boundary-event.json:
--------------------------------------------------------------------------------
1 | [
2 | "createScope:Process_1:null",
3 | "signal:Process_1:B",
4 | "createScope:START:B",
5 | "signal:START:C",
6 | "exit:START:C",
7 | "createScope:Flow_130qbbc:B",
8 | "destroyScope:START:C",
9 | "enter:Flow_130qbbc:B",
10 | "exit:Flow_130qbbc:D",
11 | "createScope:SUB:B",
12 | "destroyScope:Flow_130qbbc:D",
13 | "enter:SUB:B",
14 | "createScope:START_SUB:E",
15 | "signal:START_SUB:F",
16 | "exit:START_SUB:F",
17 | "createScope:Flow_1ovq66q:E",
18 | "destroyScope:START_SUB:F",
19 | "enter:Flow_1ovq66q:E",
20 | "exit:Flow_1ovq66q:G",
21 | "createScope:TRIGGER_E:E",
22 | "destroyScope:Flow_1ovq66q:G",
23 | "enter:TRIGGER_E:E",
24 | "createScope:BOUNDARY_E:B",
25 | "signal:BOUNDARY_E:I",
26 | "destroyScope:TRIGGER_E:H",
27 | "exit:SUB:E",
28 | "destroyScope:SUB:E",
29 | "exit:BOUNDARY_E:I",
30 | "createScope:Flow_0otmxuz:B",
31 | "destroyScope:BOUNDARY_E:I",
32 | "enter:Flow_0otmxuz:B",
33 | "exit:Flow_0otmxuz:J",
34 | "createScope:END_E:B",
35 | "destroyScope:Flow_0otmxuz:J",
36 | "enter:END_E:B",
37 | "exit:END_E:K",
38 | "destroyScope:END_E:K",
39 | "exit:Process_1:B",
40 | "destroyScope:Process_1:B"
41 | ]
--------------------------------------------------------------------------------
/test/spec/simulator/Simulator.escalation-trigger-event-sub-process.json:
--------------------------------------------------------------------------------
1 | [
2 | "createScope:Process_1:null",
3 | "signal:Process_1:B",
4 | "createScope:START:B",
5 | "signal:START:C",
6 | "exit:START:C",
7 | "createScope:Flow_130qbbc:B",
8 | "destroyScope:START:C",
9 | "enter:Flow_130qbbc:B",
10 | "exit:Flow_130qbbc:D",
11 | "createScope:SUB:B",
12 | "destroyScope:Flow_130qbbc:D",
13 | "enter:SUB:B",
14 | "createScope:START_SUB:E",
15 | "signal:START_SUB:F",
16 | "exit:START_SUB:F",
17 | "createScope:Flow_1ovq66q:E",
18 | "destroyScope:START_SUB:F",
19 | "enter:Flow_1ovq66q:E",
20 | "exit:Flow_1ovq66q:G",
21 | "createScope:TRIGGER_E:E",
22 | "destroyScope:Flow_1ovq66q:G",
23 | "enter:TRIGGER_E:E",
24 | "createScope:EVT_E:B",
25 | "signal:EVT_E:I",
26 | "destroyScope:TRIGGER_E:H",
27 | "destroyScope:SUB:E",
28 | "createScope:START_EVT_E:I",
29 | "signal:START_EVT_E:J",
30 | "exit:START_EVT_E:J",
31 | "createScope:Flow_19vkjao:I",
32 | "destroyScope:START_EVT_E:J",
33 | "enter:Flow_19vkjao:I",
34 | "exit:Flow_19vkjao:K",
35 | "createScope:END_EVT_E:I",
36 | "destroyScope:Flow_19vkjao:K",
37 | "enter:END_EVT_E:I",
38 | "exit:END_EVT_E:L",
39 | "destroyScope:END_EVT_E:L",
40 | "exit:EVT_E:I",
41 | "destroyScope:EVT_E:I",
42 | "exit:Process_1:B",
43 | "destroyScope:Process_1:B"
44 | ]
--------------------------------------------------------------------------------
/test/spec/simulator/Simulator.event-based-gateway-same-events.json:
--------------------------------------------------------------------------------
1 | [
2 | "createScope:Process_1:null",
3 | "signal:Process_1:B",
4 | "createScope:START:B",
5 | "signal:START:C",
6 | "exit:START:C",
7 | "createScope:Flow_11alkyh:B",
8 | "destroyScope:START:C",
9 | "enter:Flow_11alkyh:B",
10 | "exit:Flow_11alkyh:D",
11 | "createScope:GATE:B",
12 | "destroyScope:Flow_11alkyh:D",
13 | "enter:GATE:B",
14 | "destroyScope:GATE:E",
15 | "createScope:WAIT_B:B",
16 | "signal:WAIT_B:F",
17 | "exit:WAIT_B:F",
18 | "createScope:Flow_0t1zpag:B",
19 | "destroyScope:WAIT_B:F",
20 | "enter:Flow_0t1zpag:B",
21 | "exit:Flow_0t1zpag:G",
22 | "createScope:END:B",
23 | "destroyScope:Flow_0t1zpag:G",
24 | "enter:END:B",
25 | "exit:END:H",
26 | "destroyScope:END:H",
27 | "exit:Process_1:B",
28 | "destroyScope:Process_1:B"
29 | ]
--------------------------------------------------------------------------------
/test/spec/simulator/Simulator.event-based-gateway.json:
--------------------------------------------------------------------------------
1 | [
2 | "createScope:Process_1:null",
3 | "signal:Process_1:B",
4 | "createScope:START:B",
5 | "signal:START:C",
6 | "exit:START:C",
7 | "createScope:Flow_1:B",
8 | "destroyScope:START:C",
9 | "enter:Flow_1:B",
10 | "exit:Flow_1:D",
11 | "createScope:G_EVENT:B",
12 | "destroyScope:Flow_1:D",
13 | "enter:G_EVENT:B",
14 | "destroyScope:G_EVENT:E",
15 | "createScope:M_CATCH:B",
16 | "signal:M_CATCH:F",
17 | "exit:M_CATCH:F",
18 | "createScope:Flow_4:B",
19 | "destroyScope:M_CATCH:F",
20 | "enter:Flow_4:B",
21 | "exit:Flow_4:G",
22 | "createScope:END_A:B",
23 | "destroyScope:Flow_4:G",
24 | "enter:END_A:B",
25 | "exit:END_A:H",
26 | "destroyScope:END_A:H",
27 | "exit:Process_1:B",
28 | "destroyScope:Process_1:B"
29 | ]
--------------------------------------------------------------------------------
/test/spec/simulator/Simulator.event-sub-process-cancelation.json:
--------------------------------------------------------------------------------
1 | [
2 | "createScope:Process_1:null",
3 | "signal:Process_1:B",
4 | "createScope:START:B",
5 | "signal:START:C",
6 | "exit:START:C",
7 | "createScope:Flow_1:B",
8 | "destroyScope:START:C",
9 | "enter:Flow_1:B",
10 | "exit:Flow_1:D",
11 | "createScope:END:B",
12 | "destroyScope:Flow_1:D",
13 | "enter:END:B",
14 | "createScope:SUB_INT:B",
15 | "signal:SUB_INT:F",
16 | "destroyScope:END:E",
17 | "createScope:START_INT:F",
18 | "signal:START_INT:G",
19 | "exit:START_INT:G",
20 | "createScope:Flow_3:F",
21 | "destroyScope:START_INT:G",
22 | "enter:Flow_3:F",
23 | "exit:Flow_3:H",
24 | "createScope:END_INT:F",
25 | "destroyScope:Flow_3:H",
26 | "enter:END_INT:F",
27 | "exit:END_INT:I",
28 | "destroyScope:END_INT:I",
29 | "exit:SUB_INT:F",
30 | "destroyScope:SUB_INT:F",
31 | "exit:Process_1:B",
32 | "destroyScope:Process_1:B"
33 | ]
--------------------------------------------------------------------------------
/test/spec/simulator/Simulator.event-sub-process-implicit-start.json:
--------------------------------------------------------------------------------
1 | [
2 | "createScope:Process_1:null",
3 | "signal:Process_1:B",
4 | "createScope:START:B",
5 | "enter:START:B",
6 | "createScope:EVENT_SUB:B",
7 | "signal:EVENT_SUB:D",
8 | "destroyScope:START:C",
9 | "createScope:ESCALATION_START:D",
10 | "createScope:TASK:D",
11 | "signal:ESCALATION_START:E",
12 | "enter:TASK:D",
13 | "exit:ESCALATION_START:E",
14 | "createScope:Flow_1:D",
15 | "destroyScope:ESCALATION_START:E",
16 | "exit:TASK:F",
17 | "createScope:Flow_2:D",
18 | "destroyScope:TASK:F",
19 | "enter:Flow_1:D",
20 | "enter:Flow_2:D",
21 | "exit:Flow_1:G",
22 | "createScope:END:D",
23 | "destroyScope:Flow_1:G",
24 | "exit:Flow_2:H",
25 | "createScope:END:D",
26 | "destroyScope:Flow_2:H",
27 | "enter:END:D",
28 | "enter:END:D",
29 | "exit:END:I",
30 | "destroyScope:END:I",
31 | "exit:END:J",
32 | "destroyScope:END:J",
33 | "exit:EVENT_SUB:D",
34 | "destroyScope:EVENT_SUB:D",
35 | "exit:Process_1:B",
36 | "destroyScope:Process_1:B"
37 | ]
--------------------------------------------------------------------------------
/test/spec/simulator/Simulator.event-sub-process-interrupting.json:
--------------------------------------------------------------------------------
1 | [
2 | "createScope:Process_1:null",
3 | "signal:Process_1:A",
4 | "createScope:START:A",
5 | "signal:START:B",
6 | "exit:START:B",
7 | "createScope:Flow_5:A",
8 | "destroyScope:START:B",
9 | "enter:Flow_5:A",
10 | "exit:Flow_5:C",
11 | "createScope:S:A",
12 | "destroyScope:Flow_5:C",
13 | "enter:S:A",
14 | "createScope:START_S:D",
15 | "signal:START_S:E",
16 | "exit:START_S:E",
17 | "createScope:Flow_6:D",
18 | "destroyScope:START_S:E",
19 | "enter:Flow_6:D",
20 | "exit:Flow_6:F",
21 | "createScope:RECEIVE:D",
22 | "destroyScope:Flow_6:F",
23 | "enter:RECEIVE:D",
24 | "createScope:EVENT_SUB:A",
25 | "signal:EVENT_SUB:H",
26 | "destroyScope:RECEIVE:G",
27 | "destroyScope:S:D",
28 | "createScope:START_SUB:H",
29 | "signal:START_SUB:I",
30 | "exit:START_SUB:I",
31 | "createScope:Flow_3:H",
32 | "destroyScope:START_SUB:I",
33 | "enter:Flow_3:H",
34 | "exit:Flow_3:J",
35 | "createScope:END_SUB:H",
36 | "destroyScope:Flow_3:J",
37 | "enter:END_SUB:H",
38 | "exit:END_SUB:K",
39 | "destroyScope:END_SUB:K",
40 | "exit:EVENT_SUB:H",
41 | "destroyScope:EVENT_SUB:H",
42 | "exit:Process_1:A",
43 | "destroyScope:Process_1:A"
44 | ]
--------------------------------------------------------------------------------
/test/spec/simulator/Simulator.event-sub-process-nested-cancelation-absorb-event.json:
--------------------------------------------------------------------------------
1 | [
2 | "createScope:Process_1:null",
3 | "signal:Process_1:B",
4 | "createScope:START:B",
5 | "signal:START:C",
6 | "exit:START:C",
7 | "createScope:Flow_5:B",
8 | "destroyScope:START:C",
9 | "enter:Flow_5:B",
10 | "exit:Flow_5:D",
11 | "createScope:SUB:B",
12 | "destroyScope:Flow_5:D",
13 | "enter:SUB:B",
14 | "createScope:START_SUB:E",
15 | "signal:START_SUB:F",
16 | "exit:START_SUB:F",
17 | "createScope:Flow_1:E",
18 | "destroyScope:START_SUB:F",
19 | "enter:Flow_1:E",
20 | "exit:Flow_1:G",
21 | "createScope:THROW_SUB:E",
22 | "destroyScope:Flow_1:G",
23 | "enter:THROW_SUB:E",
24 | "createScope:SUB_INT:E",
25 | "signal:SUB_INT:I",
26 | "destroyScope:THROW_SUB:H",
27 | "createScope:START_INT:I",
28 | "signal:START_INT:J",
29 | "exit:START_INT:J",
30 | "createScope:Flow_3:I",
31 | "destroyScope:START_INT:J",
32 | "enter:Flow_3:I",
33 | "exit:Flow_3:K",
34 | "createScope:END_INT:I",
35 | "destroyScope:Flow_3:K",
36 | "enter:END_INT:I",
37 | "exit:END_INT:L",
38 | "destroyScope:END_INT:L",
39 | "exit:SUB_INT:I",
40 | "destroyScope:SUB_INT:I",
41 | "exit:SUB:E",
42 | "createScope:Flow_6:B",
43 | "destroyScope:SUB:E",
44 | "enter:Flow_6:B",
45 | "exit:Flow_6:M",
46 | "createScope:END:B",
47 | "destroyScope:Flow_6:M",
48 | "enter:END:B",
49 | "exit:END:N",
50 | "destroyScope:END:N",
51 | "exit:Process_1:B",
52 | "destroyScope:Process_1:B"
53 | ]
--------------------------------------------------------------------------------
/test/spec/simulator/Simulator.event-sub-process-nested-cancelation-rethrow.json:
--------------------------------------------------------------------------------
1 | [
2 | "createScope:Process_1:null",
3 | "signal:Process_1:B",
4 | "createScope:START:B",
5 | "signal:START:C",
6 | "exit:START:C",
7 | "createScope:Flow_5:B",
8 | "destroyScope:START:C",
9 | "enter:Flow_5:B",
10 | "exit:Flow_5:D",
11 | "createScope:SUB:B",
12 | "destroyScope:Flow_5:D",
13 | "enter:SUB:B",
14 | "createScope:START_SUB:E",
15 | "signal:START_SUB:F",
16 | "exit:START_SUB:F",
17 | "createScope:Flow_1:E",
18 | "destroyScope:START_SUB:F",
19 | "enter:Flow_1:E",
20 | "exit:Flow_1:G",
21 | "createScope:SIGNAL_SUB:E",
22 | "destroyScope:Flow_1:G",
23 | "enter:SIGNAL_SUB:E",
24 | "createScope:SUB_INT:E",
25 | "signal:SUB_INT:I",
26 | "destroyScope:SIGNAL_SUB:H",
27 | "createScope:START_INT:I",
28 | "signal:START_INT:J",
29 | "exit:START_INT:J",
30 | "createScope:Flow_3:I",
31 | "destroyScope:START_INT:J",
32 | "enter:Flow_3:I",
33 | "exit:Flow_3:K",
34 | "createScope:END_INT:I",
35 | "destroyScope:Flow_3:K",
36 | "enter:END_INT:I",
37 | "createScope:BOUNDARY_S:B",
38 | "signal:BOUNDARY_S:M",
39 | "destroyScope:END_INT:L",
40 | "destroyScope:SUB_INT:I",
41 | "exit:SUB:E",
42 | "destroyScope:SUB:E",
43 | "exit:BOUNDARY_S:M",
44 | "createScope:Flow_10:B",
45 | "destroyScope:BOUNDARY_S:M",
46 | "enter:Flow_10:B",
47 | "exit:Flow_10:N",
48 | "createScope:END_S:B",
49 | "destroyScope:Flow_10:N",
50 | "enter:END_S:B",
51 | "exit:END_S:O",
52 | "destroyScope:END_S:O",
53 | "exit:Process_1:B",
54 | "destroyScope:Process_1:B"
55 | ]
--------------------------------------------------------------------------------
/test/spec/simulator/Simulator.event-sub-process-nested-cancelation-throws-error.json:
--------------------------------------------------------------------------------
1 | [
2 | "createScope:Process_1:null",
3 | "signal:Process_1:B",
4 | "createScope:START:B",
5 | "signal:START:C",
6 | "exit:START:C",
7 | "createScope:Flow_196os62:B",
8 | "destroyScope:START:C",
9 | "enter:Flow_196os62:B",
10 | "exit:Flow_196os62:D",
11 | "createScope:SUB:B",
12 | "destroyScope:Flow_196os62:D",
13 | "enter:SUB:B",
14 | "createScope:SUB_START:E",
15 | "signal:SUB_START:F",
16 | "exit:SUB_START:F",
17 | "createScope:Flow_1811uor:E",
18 | "destroyScope:SUB_START:F",
19 | "enter:Flow_1811uor:E",
20 | "exit:Flow_1811uor:G",
21 | "createScope:SUB_END:E",
22 | "destroyScope:Flow_1811uor:G",
23 | "enter:SUB_END:E",
24 | "createScope:EVENT_SUB:E",
25 | "signal:EVENT_SUB:I",
26 | "destroyScope:SUB_END:H",
27 | "createScope:EVENT_SUB_START:I",
28 | "signal:EVENT_SUB_START:J",
29 | "exit:EVENT_SUB_START:J",
30 | "createScope:Flow_3:I",
31 | "destroyScope:EVENT_SUB_START:J",
32 | "enter:Flow_3:I",
33 | "exit:Flow_3:K",
34 | "createScope:EVENT_SUB_END:I",
35 | "destroyScope:Flow_3:K",
36 | "enter:EVENT_SUB_END:I",
37 | "createScope:ERROR_BOUNDARY:B",
38 | "signal:ERROR_BOUNDARY:M",
39 | "destroyScope:EVENT_SUB_END:L",
40 | "destroyScope:EVENT_SUB:I",
41 | "exit:SUB:E",
42 | "destroyScope:SUB:E",
43 | "exit:ERROR_BOUNDARY:M",
44 | "createScope:Flow_0km9xmy:B",
45 | "destroyScope:ERROR_BOUNDARY:M",
46 | "enter:Flow_0km9xmy:B",
47 | "exit:Flow_0km9xmy:N",
48 | "createScope:END_EXPECTED:B",
49 | "destroyScope:Flow_0km9xmy:N",
50 | "enter:END_EXPECTED:B",
51 | "exit:END_EXPECTED:O",
52 | "destroyScope:END_EXPECTED:O",
53 | "exit:Process_1:B",
54 | "destroyScope:Process_1:B"
55 | ]
--------------------------------------------------------------------------------
/test/spec/simulator/Simulator.event-sub-process-nested-cancelation-throws-escalation.json:
--------------------------------------------------------------------------------
1 | [
2 | "createScope:Process_1:null",
3 | "signal:Process_1:B",
4 | "createScope:START:B",
5 | "signal:START:C",
6 | "exit:START:C",
7 | "createScope:Flow_196os62:B",
8 | "destroyScope:START:C",
9 | "enter:Flow_196os62:B",
10 | "exit:Flow_196os62:D",
11 | "createScope:SUB:B",
12 | "destroyScope:Flow_196os62:D",
13 | "enter:SUB:B",
14 | "createScope:SUB_START:E",
15 | "signal:SUB_START:F",
16 | "exit:SUB_START:F",
17 | "createScope:Flow_1811uor:E",
18 | "destroyScope:SUB_START:F",
19 | "enter:Flow_1811uor:E",
20 | "exit:Flow_1811uor:G",
21 | "createScope:SUB_END:E",
22 | "destroyScope:Flow_1811uor:G",
23 | "enter:SUB_END:E",
24 | "createScope:EVENT_SUB:E",
25 | "signal:EVENT_SUB:I",
26 | "destroyScope:SUB_END:H",
27 | "createScope:EVENT_SUB_START:I",
28 | "signal:EVENT_SUB_START:J",
29 | "exit:EVENT_SUB_START:J",
30 | "createScope:Flow_3:I",
31 | "destroyScope:EVENT_SUB_START:J",
32 | "enter:Flow_3:I",
33 | "exit:Flow_3:K",
34 | "createScope:EVENT_SUB_END:I",
35 | "destroyScope:Flow_3:K",
36 | "enter:EVENT_SUB_END:I",
37 | "createScope:ESCALATION_BOUNDARY:B",
38 | "signal:ESCALATION_BOUNDARY:M",
39 | "destroyScope:EVENT_SUB_END:L",
40 | "destroyScope:EVENT_SUB:I",
41 | "exit:SUB:E",
42 | "destroyScope:SUB:E",
43 | "exit:ESCALATION_BOUNDARY:M",
44 | "createScope:Flow_0km9xmy:B",
45 | "destroyScope:ESCALATION_BOUNDARY:M",
46 | "enter:Flow_0km9xmy:B",
47 | "exit:Flow_0km9xmy:N",
48 | "createScope:END_EXPECTED:B",
49 | "destroyScope:Flow_0km9xmy:N",
50 | "enter:END_EXPECTED:B",
51 | "exit:END_EXPECTED:O",
52 | "destroyScope:END_EXPECTED:O",
53 | "exit:Process_1:B",
54 | "destroyScope:Process_1:B"
55 | ]
--------------------------------------------------------------------------------
/test/spec/simulator/Simulator.event-sub-process-non-interrupting.json:
--------------------------------------------------------------------------------
1 | [
2 | "createScope:Process_1:null",
3 | "signal:Process_1:A",
4 | "createScope:START:A",
5 | "signal:START:B",
6 | "exit:START:B",
7 | "createScope:Flow_1:A",
8 | "destroyScope:START:B",
9 | "enter:Flow_1:A",
10 | "exit:Flow_1:C",
11 | "createScope:RECEIVE:A",
12 | "destroyScope:Flow_1:C",
13 | "enter:RECEIVE:A",
14 | "createScope:EVENT_SUB:A",
15 | "signal:EVENT_SUB:E",
16 | "createScope:START_SUB:E",
17 | "signal:START_SUB:F",
18 | "exit:START_SUB:F",
19 | "createScope:Flow_3:E",
20 | "destroyScope:START_SUB:F",
21 | "enter:Flow_3:E",
22 | "exit:Flow_3:G",
23 | "createScope:END_SUB:E",
24 | "destroyScope:Flow_3:G",
25 | "enter:END_SUB:E",
26 | "exit:END_SUB:H",
27 | "destroyScope:END_SUB:H",
28 | "exit:EVENT_SUB:E",
29 | "destroyScope:EVENT_SUB:E"
30 | ]
--------------------------------------------------------------------------------
/test/spec/simulator/Simulator.exclusive-gateway-fork-join.json:
--------------------------------------------------------------------------------
1 | [
2 | "createScope:Process_1:null",
3 | "signal:Process_1:A",
4 | "createScope:START:A",
5 | "signal:START:B",
6 | "exit:START:B",
7 | "createScope:Flow_1:A",
8 | "destroyScope:START:B",
9 | "enter:Flow_1:A",
10 | "exit:Flow_1:C",
11 | "createScope:G_A:A",
12 | "destroyScope:Flow_1:C",
13 | "enter:G_A:A",
14 | "exit:G_A:D",
15 | "createScope:Flow_2:A",
16 | "destroyScope:G_A:D",
17 | "enter:Flow_2:A",
18 | "exit:Flow_2:E",
19 | "createScope:G_B:A",
20 | "destroyScope:Flow_2:E",
21 | "enter:G_B:A",
22 | "exit:G_B:F",
23 | "createScope:Flow_4:A",
24 | "destroyScope:G_B:F",
25 | "enter:Flow_4:A",
26 | "exit:Flow_4:G",
27 | "createScope:END:A",
28 | "destroyScope:Flow_4:G",
29 | "enter:END:A",
30 | "exit:END:H",
31 | "destroyScope:END:H",
32 | "exit:Process_1:A",
33 | "destroyScope:Process_1:A"
34 | ]
--------------------------------------------------------------------------------
/test/spec/simulator/Simulator.exclusive-gateway-join.json:
--------------------------------------------------------------------------------
1 | [
2 | "createScope:Process_1:null",
3 | "signal:Process_1:A",
4 | "createScope:START:A",
5 | "signal:START:B",
6 | "exit:START:B",
7 | "createScope:Flow_2:A",
8 | "destroyScope:START:B",
9 | "enter:Flow_2:A",
10 | "exit:Flow_2:C",
11 | "createScope:GATE:A",
12 | "destroyScope:Flow_2:C",
13 | "enter:GATE:A",
14 | "exit:GATE:D",
15 | "createScope:Flow_1:A",
16 | "destroyScope:GATE:D",
17 | "enter:Flow_1:A",
18 | "exit:Flow_1:E",
19 | "createScope:END:A",
20 | "destroyScope:Flow_1:E",
21 | "enter:END:A",
22 | "exit:END:F",
23 | "destroyScope:END:F",
24 | "exit:Process_1:A",
25 | "destroyScope:Process_1:A"
26 | ]
--------------------------------------------------------------------------------
/test/spec/simulator/Simulator.exclusive-gateway-no-outgoings.json:
--------------------------------------------------------------------------------
1 | [
2 | "createScope:Process_1:null",
3 | "signal:Process_1:B",
4 | "createScope:START:B",
5 | "signal:START:C",
6 | "exit:START:C",
7 | "createScope:Flow_1:B",
8 | "destroyScope:START:C",
9 | "enter:Flow_1:B",
10 | "exit:Flow_1:D",
11 | "createScope:EXCLUSIVE_GATEWAY:B",
12 | "destroyScope:Flow_1:D",
13 | "enter:EXCLUSIVE_GATEWAY:B",
14 | "exit:EXCLUSIVE_GATEWAY:E",
15 | "destroyScope:EXCLUSIVE_GATEWAY:E",
16 | "exit:Process_1:B",
17 | "destroyScope:Process_1:B"
18 | ]
--------------------------------------------------------------------------------
/test/spec/simulator/Simulator.inclusive-gateway-boundary-event.json:
--------------------------------------------------------------------------------
1 | [
2 | "createScope:Process_1:null",
3 | "signal:Process_1:B",
4 | "createScope:START:B",
5 | "signal:START:C",
6 | "exit:START:C",
7 | "createScope:Flow_2:B",
8 | "destroyScope:START:C",
9 | "enter:Flow_2:B",
10 | "exit:Flow_2:D",
11 | "createScope:F_GATE:B",
12 | "destroyScope:Flow_2:D",
13 | "enter:F_GATE:B",
14 | "exit:F_GATE:E",
15 | "createScope:Flow_3:B",
16 | "createScope:Flow_4:B",
17 | "createScope:Flow_5:B",
18 | "destroyScope:F_GATE:E",
19 | "enter:Flow_3:B",
20 | "enter:Flow_4:B",
21 | "enter:Flow_5:B",
22 | "exit:Flow_3:F",
23 | "createScope:PausedActivity:B",
24 | "destroyScope:Flow_3:F",
25 | "exit:Flow_4:G",
26 | "createScope:J_GATE:B",
27 | "destroyScope:Flow_4:G",
28 | "exit:Flow_5:H",
29 | "createScope:J_GATE:B",
30 | "destroyScope:Flow_5:H",
31 | "enter:PausedActivity:B",
32 | "enter:J_GATE:B",
33 | "enter:J_GATE:B",
34 | "createScope:TimerEvent:B",
35 | "signal:TimerEvent:L",
36 | "exit:PausedActivity:I",
37 | "destroyScope:PausedActivity:I",
38 | "destroyScope:J_GATE:K",
39 | "exit:TimerEvent:L",
40 | "createScope:Flow_0k3cxv5:B",
41 | "destroyScope:TimerEvent:L",
42 | "exit:J_GATE:J",
43 | "createScope:Flow_1:B",
44 | "destroyScope:J_GATE:J",
45 | "enter:Flow_0k3cxv5:B",
46 | "enter:Flow_1:B",
47 | "exit:Flow_0k3cxv5:M",
48 | "createScope:Event_07226lb:B",
49 | "destroyScope:Flow_0k3cxv5:M",
50 | "exit:Flow_1:N",
51 | "createScope:END:B",
52 | "destroyScope:Flow_1:N",
53 | "enter:Event_07226lb:B",
54 | "enter:END:B",
55 | "exit:Event_07226lb:O",
56 | "destroyScope:Event_07226lb:O",
57 | "exit:END:P",
58 | "destroyScope:END:P",
59 | "exit:Process_1:B",
60 | "destroyScope:Process_1:B"
61 | ]
--------------------------------------------------------------------------------
/test/spec/simulator/Simulator.inclusive-gateway-default-flow.json:
--------------------------------------------------------------------------------
1 | [
2 | "createScope:Process_1:null",
3 | "signal:Process_1:B",
4 | "createScope:START:B",
5 | "signal:START:C",
6 | "exit:START:C",
7 | "createScope:Flow_2:B",
8 | "destroyScope:START:C",
9 | "enter:Flow_2:B",
10 | "exit:Flow_2:D",
11 | "createScope:F_GATE:B",
12 | "destroyScope:Flow_2:D",
13 | "enter:F_GATE:B",
14 | "exit:F_GATE:E",
15 | "createScope:Flow_4:B",
16 | "destroyScope:F_GATE:E",
17 | "enter:Flow_4:B",
18 | "exit:Flow_4:F",
19 | "createScope:J_GATE:B",
20 | "destroyScope:Flow_4:F",
21 | "enter:J_GATE:B",
22 | "exit:J_GATE:G",
23 | "createScope:Flow_1:B",
24 | "destroyScope:J_GATE:G",
25 | "enter:Flow_1:B",
26 | "exit:Flow_1:H",
27 | "createScope:END:B",
28 | "destroyScope:Flow_1:H",
29 | "enter:END:B",
30 | "exit:END:I",
31 | "destroyScope:END:I",
32 | "exit:Process_1:B",
33 | "destroyScope:Process_1:B"
34 | ]
--------------------------------------------------------------------------------
/test/spec/simulator/Simulator.inclusive-gateway-exclusive-gateway.json:
--------------------------------------------------------------------------------
1 | [
2 | "createScope:Process_00zx48j:null",
3 | "signal:Process_00zx48j:B",
4 | "createScope:StartEvent_1:B",
5 | "signal:StartEvent_1:C",
6 | "exit:StartEvent_1:C",
7 | "createScope:Flow_1:B",
8 | "destroyScope:StartEvent_1:C",
9 | "enter:Flow_1:B",
10 | "exit:Flow_1:D",
11 | "createScope:ParallelGateway:B",
12 | "destroyScope:Flow_1:D",
13 | "enter:ParallelGateway:B",
14 | "exit:ParallelGateway:E",
15 | "createScope:Flow_4:B",
16 | "createScope:Flow_2:B",
17 | "destroyScope:ParallelGateway:E",
18 | "enter:Flow_4:B",
19 | "enter:Flow_2:B",
20 | "exit:Flow_4:F",
21 | "createScope:TimerEvent:B",
22 | "destroyScope:Flow_4:F",
23 | "exit:Flow_2:G",
24 | "createScope:InclusiveGateway:B",
25 | "destroyScope:Flow_2:G",
26 | "enter:TimerEvent:B",
27 | "enter:InclusiveGateway:B",
28 | "signal:TimerEvent:H",
29 | "exit:TimerEvent:H",
30 | "createScope:Flow_5:B",
31 | "destroyScope:TimerEvent:H",
32 | "enter:Flow_5:B",
33 | "exit:Flow_5:J",
34 | "createScope:ExclusiveGateway:B",
35 | "destroyScope:Flow_5:J",
36 | "enter:ExclusiveGateway:B",
37 | "exit:ExclusiveGateway:K",
38 | "createScope:Flow_7:B",
39 | "destroyScope:ExclusiveGateway:K",
40 | "enter:Flow_7:B",
41 | "exit:InclusiveGateway:I",
42 | "createScope:Flow_3:B",
43 | "destroyScope:InclusiveGateway:I",
44 | "exit:Flow_7:L",
45 | "createScope:EndEvent_2:B",
46 | "destroyScope:Flow_7:L",
47 | "enter:Flow_3:B",
48 | "enter:EndEvent_2:B",
49 | "exit:Flow_3:M",
50 | "createScope:EndEvent_1:B",
51 | "destroyScope:Flow_3:M",
52 | "exit:EndEvent_2:N",
53 | "destroyScope:EndEvent_2:N",
54 | "enter:EndEvent_1:B",
55 | "exit:EndEvent_1:O",
56 | "destroyScope:EndEvent_1:O",
57 | "exit:Process_00zx48j:B",
58 | "destroyScope:Process_00zx48j:B"
59 | ]
--------------------------------------------------------------------------------
/test/spec/simulator/Simulator.inclusive-gateway-fork-join.json:
--------------------------------------------------------------------------------
1 | [
2 | "createScope:Process_1:null",
3 | "signal:Process_1:B",
4 | "createScope:START:B",
5 | "signal:START:C",
6 | "exit:START:C",
7 | "createScope:Flow_1:B",
8 | "destroyScope:START:C",
9 | "enter:Flow_1:B",
10 | "exit:Flow_1:D",
11 | "createScope:INC_FORK:B",
12 | "destroyScope:Flow_1:D",
13 | "enter:INC_FORK:B",
14 | "exit:INC_FORK:E",
15 | "createScope:Flow_2:B",
16 | "createScope:Flow_3:B",
17 | "destroyScope:INC_FORK:E",
18 | "enter:Flow_2:B",
19 | "enter:Flow_3:B",
20 | "exit:Flow_2:F",
21 | "createScope:INC_FORK_JOIN:B",
22 | "destroyScope:Flow_2:F",
23 | "exit:Flow_3:G",
24 | "createScope:INC_FORK_JOIN:B",
25 | "destroyScope:Flow_3:G",
26 | "enter:INC_FORK_JOIN:B",
27 | "enter:INC_FORK_JOIN:B",
28 | "destroyScope:INC_FORK_JOIN:H",
29 | "exit:INC_FORK_JOIN:I",
30 | "createScope:Flow_4:B",
31 | "createScope:Flow_5:B",
32 | "destroyScope:INC_FORK_JOIN:I",
33 | "enter:Flow_4:B",
34 | "enter:Flow_5:B",
35 | "exit:Flow_4:J",
36 | "createScope:INC_JOIN:B",
37 | "destroyScope:Flow_4:J",
38 | "exit:Flow_5:K",
39 | "createScope:INC_JOIN:B",
40 | "destroyScope:Flow_5:K",
41 | "enter:INC_JOIN:B",
42 | "enter:INC_JOIN:B",
43 | "destroyScope:INC_JOIN:L",
44 | "exit:INC_JOIN:M",
45 | "createScope:Flow_6:B",
46 | "destroyScope:INC_JOIN:M",
47 | "enter:Flow_6:B",
48 | "exit:Flow_6:N",
49 | "createScope:END:B",
50 | "destroyScope:Flow_6:N",
51 | "enter:END:B",
52 | "exit:END:O",
53 | "destroyScope:END:O",
54 | "exit:Process_1:B",
55 | "destroyScope:Process_1:B"
56 | ]
--------------------------------------------------------------------------------
/test/spec/simulator/Simulator.inclusive-gateway-multiple-starts.json:
--------------------------------------------------------------------------------
1 | [
2 | "createScope:Process_1:null",
3 | "signal:Process_1:B",
4 | "createScope:START:B",
5 | "signal:START:C",
6 | "exit:START:C",
7 | "createScope:Flow_2:B",
8 | "destroyScope:START:C",
9 | "enter:Flow_2:B",
10 | "exit:Flow_2:D",
11 | "createScope:F_GATE:B",
12 | "destroyScope:Flow_2:D",
13 | "enter:F_GATE:B",
14 | "exit:F_GATE:E",
15 | "createScope:Flow_3:B",
16 | "createScope:Flow_4:B",
17 | "createScope:Flow_5:B",
18 | "destroyScope:F_GATE:E",
19 | "enter:Flow_3:B",
20 | "enter:Flow_4:B",
21 | "enter:Flow_5:B",
22 | "exit:Flow_3:F",
23 | "createScope:PausedActivity:B",
24 | "destroyScope:Flow_3:F",
25 | "exit:Flow_4:G",
26 | "createScope:J_GATE:B",
27 | "destroyScope:Flow_4:G",
28 | "exit:Flow_5:H",
29 | "createScope:J_GATE:B",
30 | "destroyScope:Flow_5:H",
31 | "enter:PausedActivity:B",
32 | "enter:J_GATE:B",
33 | "enter:J_GATE:B",
34 | "createScope:Process_1:null",
35 | "signal:Process_1:L",
36 | "createScope:START:L",
37 | "signal:START:M",
38 | "exit:START:M",
39 | "createScope:Flow_2:L",
40 | "destroyScope:START:M",
41 | "enter:Flow_2:L",
42 | "exit:Flow_2:N",
43 | "createScope:F_GATE:L",
44 | "destroyScope:Flow_2:N",
45 | "enter:F_GATE:L",
46 | "exit:F_GATE:O",
47 | "createScope:Flow_3:L",
48 | "createScope:Flow_4:L",
49 | "createScope:Flow_5:L",
50 | "destroyScope:F_GATE:O",
51 | "enter:Flow_3:L",
52 | "enter:Flow_4:L",
53 | "enter:Flow_5:L",
54 | "exit:Flow_3:P",
55 | "createScope:PausedActivity:L",
56 | "destroyScope:Flow_3:P",
57 | "exit:Flow_4:Q",
58 | "createScope:J_GATE:L",
59 | "destroyScope:Flow_4:Q",
60 | "exit:Flow_5:R",
61 | "createScope:J_GATE:L",
62 | "destroyScope:Flow_5:R",
63 | "enter:PausedActivity:L",
64 | "enter:J_GATE:L",
65 | "enter:J_GATE:L"
66 | ]
--------------------------------------------------------------------------------
/test/spec/simulator/Simulator.inclusive-gateway-no-outgoings.json:
--------------------------------------------------------------------------------
1 | [
2 | "createScope:Process_1:null",
3 | "signal:Process_1:B",
4 | "createScope:START:B",
5 | "signal:START:C",
6 | "exit:START:C",
7 | "createScope:Flow_1:B",
8 | "destroyScope:START:C",
9 | "enter:Flow_1:B",
10 | "exit:Flow_1:D",
11 | "createScope:INCLUSIVE_GATEWAY:B",
12 | "destroyScope:Flow_1:D",
13 | "enter:INCLUSIVE_GATEWAY:B",
14 | "exit:INCLUSIVE_GATEWAY:E",
15 | "destroyScope:INCLUSIVE_GATEWAY:E",
16 | "exit:Process_1:B",
17 | "destroyScope:Process_1:B"
18 | ]
--------------------------------------------------------------------------------
/test/spec/simulator/Simulator.inclusive-gateway-single-token-pass-through.json:
--------------------------------------------------------------------------------
1 | [
2 | "createScope:Process_1:null",
3 | "signal:Process_1:B",
4 | "createScope:START:B",
5 | "signal:START:C",
6 | "exit:START:C",
7 | "createScope:Flow_2:B",
8 | "destroyScope:START:C",
9 | "enter:Flow_2:B",
10 | "exit:Flow_2:D",
11 | "createScope:GATE:B",
12 | "destroyScope:Flow_2:D",
13 | "enter:GATE:B",
14 | "exit:GATE:E",
15 | "createScope:Flow_1:B",
16 | "destroyScope:GATE:E",
17 | "enter:Flow_1:B",
18 | "exit:Flow_1:F",
19 | "createScope:END:B",
20 | "destroyScope:Flow_1:F",
21 | "enter:END:B",
22 | "exit:END:G",
23 | "destroyScope:END:G",
24 | "exit:Process_1:B",
25 | "destroyScope:Process_1:B"
26 | ]
--------------------------------------------------------------------------------
/test/spec/simulator/Simulator.inclusive-gateway-sync.json:
--------------------------------------------------------------------------------
1 | [
2 | "createScope:Process_1:null",
3 | "signal:Process_1:B",
4 | "createScope:START:B",
5 | "signal:START:C",
6 | "exit:START:C",
7 | "createScope:Flow_2:B",
8 | "destroyScope:START:C",
9 | "enter:Flow_2:B",
10 | "exit:Flow_2:D",
11 | "createScope:F_GATE:B",
12 | "destroyScope:Flow_2:D",
13 | "enter:F_GATE:B",
14 | "exit:F_GATE:E",
15 | "createScope:Flow_3:B",
16 | "createScope:Flow_5:B",
17 | "destroyScope:F_GATE:E",
18 | "enter:Flow_3:B",
19 | "enter:Flow_5:B",
20 | "exit:Flow_3:F",
21 | "createScope:J_GATE:B",
22 | "destroyScope:Flow_3:F",
23 | "exit:Flow_5:G",
24 | "createScope:J_GATE:B",
25 | "destroyScope:Flow_5:G",
26 | "enter:J_GATE:B",
27 | "enter:J_GATE:B",
28 | "destroyScope:J_GATE:H",
29 | "exit:J_GATE:I",
30 | "createScope:Flow_1:B",
31 | "destroyScope:J_GATE:I",
32 | "enter:Flow_1:B",
33 | "exit:Flow_1:J",
34 | "createScope:END:B",
35 | "destroyScope:Flow_1:J",
36 | "enter:END:B",
37 | "exit:END:K",
38 | "destroyScope:END:K",
39 | "exit:Process_1:B",
40 | "destroyScope:Process_1:B"
41 | ]
--------------------------------------------------------------------------------
/test/spec/simulator/Simulator.link-event.json:
--------------------------------------------------------------------------------
1 | [
2 | "createScope:Process_1:null",
3 | "signal:Process_1:B",
4 | "createScope:START:B",
5 | "signal:START:C",
6 | "exit:START:C",
7 | "createScope:Flow_1:B",
8 | "destroyScope:START:C",
9 | "enter:Flow_1:B",
10 | "exit:Flow_1:D",
11 | "createScope:LINK_T:B",
12 | "destroyScope:Flow_1:D",
13 | "enter:LINK_T:B",
14 | "createScope:LINK_C:B",
15 | "signal:LINK_C:F",
16 | "exit:LINK_T:E",
17 | "destroyScope:LINK_T:E",
18 | "exit:LINK_C:F",
19 | "createScope:Flow_2:B",
20 | "destroyScope:LINK_C:F",
21 | "enter:Flow_2:B",
22 | "exit:Flow_2:G",
23 | "createScope:END:B",
24 | "destroyScope:Flow_2:G",
25 | "enter:END:B",
26 | "exit:END:H",
27 | "destroyScope:END:H",
28 | "exit:Process_1:B",
29 | "destroyScope:Process_1:B"
30 | ]
--------------------------------------------------------------------------------
/test/spec/simulator/Simulator.loop-0.json:
--------------------------------------------------------------------------------
1 | [
2 | "createScope:Process:null",
3 | "signal:Process:B",
4 | "createScope:START:B",
5 | "signal:START:C",
6 | "exit:START:C",
7 | "createScope:Flow_1:B",
8 | "destroyScope:START:C",
9 | "enter:Flow_1:B",
10 | "exit:Flow_1:D",
11 | "createScope:Join:B",
12 | "destroyScope:Flow_1:D",
13 | "enter:Join:B",
14 | "exit:Join:E",
15 | "createScope:Flow_3:B",
16 | "destroyScope:Join:E",
17 | "enter:Flow_3:B",
18 | "exit:Flow_3:F",
19 | "createScope:Split:B",
20 | "destroyScope:Flow_3:F",
21 | "enter:Split:B",
22 | "exit:Split:G",
23 | "createScope:Flow_2:B",
24 | "createScope:Flow_4:B",
25 | "destroyScope:Split:G",
26 | "enter:Flow_2:B",
27 | "enter:Flow_4:B",
28 | "exit:Flow_2:H",
29 | "createScope:End:B",
30 | "destroyScope:Flow_2:H",
31 | "exit:Flow_4:I",
32 | "createScope:Wait:B",
33 | "destroyScope:Flow_4:I",
34 | "enter:End:B",
35 | "enter:Wait:B",
36 | "exit:End:J",
37 | "destroyScope:End:J"
38 | ]
--------------------------------------------------------------------------------
/test/spec/simulator/Simulator.loop-1.json:
--------------------------------------------------------------------------------
1 | [
2 | "signal:Wait:K",
3 | "exit:Wait:K",
4 | "createScope:Flow_5:B",
5 | "destroyScope:Wait:K",
6 | "enter:Flow_5:B",
7 | "exit:Flow_5:L",
8 | "createScope:Join:B",
9 | "destroyScope:Flow_5:L",
10 | "enter:Join:B",
11 | "exit:Join:M",
12 | "createScope:Flow_3:B",
13 | "destroyScope:Join:M",
14 | "enter:Flow_3:B",
15 | "exit:Flow_3:N",
16 | "createScope:Split:B",
17 | "destroyScope:Flow_3:N",
18 | "enter:Split:B",
19 | "exit:Split:O",
20 | "createScope:Flow_2:B",
21 | "createScope:Flow_4:B",
22 | "destroyScope:Split:O",
23 | "enter:Flow_2:B",
24 | "enter:Flow_4:B",
25 | "exit:Flow_2:P",
26 | "createScope:End:B",
27 | "destroyScope:Flow_2:P",
28 | "exit:Flow_4:Q",
29 | "createScope:Wait:B",
30 | "destroyScope:Flow_4:Q",
31 | "enter:End:B",
32 | "enter:Wait:B",
33 | "exit:End:R",
34 | "destroyScope:End:R"
35 | ]
--------------------------------------------------------------------------------
/test/spec/simulator/Simulator.message-flow-end-event-trigger-flow.json:
--------------------------------------------------------------------------------
1 | [
2 | "createScope:PART_EXP:null",
3 | "signal:PART_EXP:A",
4 | "createScope:START:A",
5 | "signal:START:B",
6 | "exit:START:B",
7 | "createScope:Flow_1:A",
8 | "destroyScope:START:B",
9 | "enter:Flow_1:A",
10 | "exit:Flow_1:C",
11 | "createScope:END:A",
12 | "destroyScope:Flow_1:C",
13 | "enter:END:A",
14 | "createScope:M_FLOW:null",
15 | "signal:M_FLOW:E",
16 | "exit:END:D",
17 | "destroyScope:END:D",
18 | "exit:M_FLOW:E",
19 | "destroyScope:M_FLOW:E",
20 | "exit:PART_EXP:A",
21 | "destroyScope:PART_EXP:A"
22 | ]
--------------------------------------------------------------------------------
/test/spec/simulator/Simulator.message-flow-pool-pool.bpmn:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
--------------------------------------------------------------------------------
/test/spec/simulator/Simulator.message-flow-pool-pool.json:
--------------------------------------------------------------------------------
1 | [
2 | "createScope:M_FLOW:null",
3 | "signal:M_FLOW:A",
4 | "exit:M_FLOW:A",
5 | "destroyScope:M_FLOW:A"
6 | ]
--------------------------------------------------------------------------------
/test/spec/simulator/Simulator.message-flow-send-receive-tasks.json:
--------------------------------------------------------------------------------
1 | [
2 | "createScope:PART_A:null",
3 | "signal:PART_A:A",
4 | "createScope:START:A",
5 | "signal:START:B",
6 | "exit:START:B",
7 | "createScope:Flow_2:A",
8 | "destroyScope:START:B",
9 | "enter:Flow_2:A",
10 | "exit:Flow_2:C",
11 | "createScope:TASK_S:A",
12 | "destroyScope:Flow_2:C",
13 | "enter:TASK_S:A",
14 | "createScope:M_FLOW_A:null",
15 | "signal:M_FLOW_A:E",
16 | "exit:TASK_S:D",
17 | "createScope:Flow_1:A",
18 | "destroyScope:TASK_S:D",
19 | "exit:M_FLOW_A:E",
20 | "createScope:PART_B:null",
21 | "destroyScope:M_FLOW_A:E",
22 | "enter:Flow_1:A",
23 | "signal:PART_B:G",
24 | "createScope:START_B:G",
25 | "exit:Flow_1:F",
26 | "createScope:TASK_R:A",
27 | "destroyScope:Flow_1:F",
28 | "signal:START_B:H",
29 | "enter:TASK_R:A",
30 | "exit:START_B:H",
31 | "createScope:Flow_3:G",
32 | "destroyScope:START_B:H",
33 | "enter:Flow_3:G",
34 | "exit:Flow_3:J",
35 | "createScope:END_B:G",
36 | "destroyScope:Flow_3:J",
37 | "enter:END_B:G",
38 | "createScope:M_FLOW_B:null",
39 | "signal:M_FLOW_B:L",
40 | "exit:END_B:K",
41 | "destroyScope:END_B:K",
42 | "exit:M_FLOW_B:L",
43 | "destroyScope:M_FLOW_B:L",
44 | "exit:PART_B:G",
45 | "destroyScope:PART_B:G",
46 | "signal:TASK_R:I",
47 | "exit:TASK_R:I",
48 | "createScope:Flow_4:A",
49 | "destroyScope:TASK_R:I",
50 | "enter:Flow_4:A",
51 | "exit:Flow_4:M",
52 | "createScope:END:A",
53 | "destroyScope:Flow_4:M",
54 | "enter:END:A",
55 | "exit:END:N",
56 | "destroyScope:END:N",
57 | "exit:PART_A:A",
58 | "destroyScope:PART_A:A"
59 | ]
--------------------------------------------------------------------------------
/test/spec/simulator/Simulator.message-flow-signal-active-participant.json:
--------------------------------------------------------------------------------
1 | [
2 | "createScope:Participant_A:null",
3 | "signal:Participant_A:C",
4 | "createScope:START:C",
5 | "signal:START:D",
6 | "exit:START:D",
7 | "createScope:Flow_1:C",
8 | "destroyScope:START:D",
9 | "enter:Flow_1:C",
10 | "exit:Flow_1:E",
11 | "createScope:Task_A:C",
12 | "destroyScope:Flow_1:E",
13 | "enter:Task_A:C",
14 | "createScope:Message_Flow_1:null",
15 | "createScope:Message_Flow_2:null",
16 | "signal:Message_Flow_1:G",
17 | "signal:Message_Flow_2:H",
18 | "exit:Task_A:F",
19 | "createScope:Flow_2:C",
20 | "destroyScope:Task_A:F",
21 | "exit:Message_Flow_1:G",
22 | "createScope:Participant_B:null",
23 | "destroyScope:Message_Flow_1:G",
24 | "exit:Message_Flow_2:H",
25 | "destroyScope:Message_Flow_2:H",
26 | "enter:Flow_2:C",
27 | "signal:Participant_B:J",
28 | "createScope:Start_B:J",
29 | "exit:Flow_2:I",
30 | "createScope:End_A:C",
31 | "destroyScope:Flow_2:I",
32 | "signal:Start_B:K",
33 | "enter:End_A:C",
34 | "exit:Start_B:K",
35 | "createScope:Flow_3:J",
36 | "destroyScope:Start_B:K",
37 | "exit:End_A:L",
38 | "destroyScope:End_A:L",
39 | "enter:Flow_3:J",
40 | "exit:Participant_A:C",
41 | "destroyScope:Participant_A:C",
42 | "exit:Flow_3:M",
43 | "createScope:End_B:J",
44 | "destroyScope:Flow_3:M",
45 | "enter:End_B:J",
46 | "exit:End_B:N",
47 | "destroyScope:End_B:N",
48 | "exit:Participant_B:J",
49 | "destroyScope:Participant_B:J"
50 | ]
--------------------------------------------------------------------------------
/test/spec/simulator/Simulator.message-flow-task-trigger-flow.json:
--------------------------------------------------------------------------------
1 | [
2 | "createScope:PART_EXP:null",
3 | "signal:PART_EXP:A",
4 | "createScope:START:A",
5 | "signal:START:B",
6 | "exit:START:B",
7 | "createScope:Flow_1:A",
8 | "destroyScope:START:B",
9 | "enter:Flow_1:A",
10 | "exit:Flow_1:C",
11 | "createScope:TASK:A",
12 | "destroyScope:Flow_1:C",
13 | "enter:TASK:A",
14 | "createScope:M_FLOW:null",
15 | "signal:M_FLOW:E",
16 | "exit:TASK:D",
17 | "createScope:Flow_2:A",
18 | "destroyScope:TASK:D",
19 | "exit:M_FLOW:E",
20 | "destroyScope:M_FLOW:E",
21 | "enter:Flow_2:A",
22 | "exit:Flow_2:F",
23 | "createScope:END:A",
24 | "destroyScope:Flow_2:F",
25 | "enter:END:A",
26 | "exit:END:G",
27 | "destroyScope:END:G",
28 | "exit:PART_EXP:A",
29 | "destroyScope:PART_EXP:A"
30 | ]
--------------------------------------------------------------------------------
/test/spec/simulator/Simulator.message-flow-throw-catch-events.json:
--------------------------------------------------------------------------------
1 | [
2 | "createScope:PART_A:null",
3 | "signal:PART_A:A",
4 | "createScope:START:A",
5 | "signal:START:B",
6 | "exit:START:B",
7 | "createScope:Flow_2:A",
8 | "destroyScope:START:B",
9 | "enter:Flow_2:A",
10 | "exit:Flow_2:C",
11 | "createScope:THROW_M:A",
12 | "destroyScope:Flow_2:C",
13 | "enter:THROW_M:A",
14 | "createScope:M_FLOW_A:null",
15 | "signal:M_FLOW_A:E",
16 | "exit:THROW_M:D",
17 | "createScope:Flow_7:A",
18 | "destroyScope:THROW_M:D",
19 | "exit:M_FLOW_A:E",
20 | "createScope:PART_B:null",
21 | "destroyScope:M_FLOW_A:E",
22 | "enter:Flow_7:A",
23 | "signal:PART_B:G",
24 | "createScope:START_B:G",
25 | "exit:Flow_7:F",
26 | "createScope:CATCH_M:A",
27 | "destroyScope:Flow_7:F",
28 | "signal:START_B:H",
29 | "enter:CATCH_M:A",
30 | "exit:START_B:H",
31 | "createScope:Flow_3:G",
32 | "destroyScope:START_B:H",
33 | "enter:Flow_3:G",
34 | "exit:Flow_3:J",
35 | "createScope:END_B:G",
36 | "destroyScope:Flow_3:J",
37 | "enter:END_B:G",
38 | "createScope:M_FLOW_B:null",
39 | "signal:M_FLOW_B:L",
40 | "exit:END_B:K",
41 | "destroyScope:END_B:K",
42 | "exit:M_FLOW_B:L",
43 | "destroyScope:M_FLOW_B:L",
44 | "exit:PART_B:G",
45 | "destroyScope:PART_B:G",
46 | "signal:CATCH_M:I",
47 | "exit:CATCH_M:I",
48 | "createScope:Flow_4:A",
49 | "destroyScope:CATCH_M:I",
50 | "enter:Flow_4:A",
51 | "exit:Flow_4:M",
52 | "createScope:END:A",
53 | "destroyScope:Flow_4:M",
54 | "enter:END:A",
55 | "exit:END:N",
56 | "destroyScope:END:N",
57 | "exit:PART_A:A",
58 | "destroyScope:PART_A:A"
59 | ]
--------------------------------------------------------------------------------
/test/spec/simulator/Simulator.message-flow-trigger-event-based-gateway-multiple-events.json:
--------------------------------------------------------------------------------
1 | [
2 | "createScope:Participant_A:null",
3 | "signal:Participant_A:C",
4 | "createScope:START:C",
5 | "signal:START:D",
6 | "exit:START:D",
7 | "createScope:Flow_11alkyh:C",
8 | "destroyScope:START:D",
9 | "enter:Flow_11alkyh:C",
10 | "exit:Flow_11alkyh:E",
11 | "createScope:GATE:C",
12 | "destroyScope:Flow_11alkyh:E",
13 | "enter:GATE:C",
14 | "createScope:M_FLOW:null",
15 | "signal:M_FLOW:G",
16 | "exit:M_FLOW:G",
17 | "destroyScope:GATE:F",
18 | "createScope:WAIT_B:C",
19 | "destroyScope:M_FLOW:G",
20 | "signal:WAIT_B:H",
21 | "exit:WAIT_B:H",
22 | "createScope:Flow_0t1zpag:C",
23 | "destroyScope:WAIT_B:H",
24 | "enter:Flow_0t1zpag:C",
25 | "exit:Flow_0t1zpag:I",
26 | "createScope:END:C",
27 | "destroyScope:Flow_0t1zpag:I",
28 | "enter:END:C",
29 | "exit:END:J",
30 | "destroyScope:END:J",
31 | "exit:Participant_A:C",
32 | "destroyScope:Participant_A:C"
33 | ]
--------------------------------------------------------------------------------
/test/spec/simulator/Simulator.message-flow-trigger-event-based-gateway.json:
--------------------------------------------------------------------------------
1 | [
2 | "createScope:PART_EXP:null",
3 | "signal:PART_EXP:C",
4 | "createScope:START:C",
5 | "signal:START:D",
6 | "exit:START:D",
7 | "createScope:Flow_1:C",
8 | "destroyScope:START:D",
9 | "enter:Flow_1:C",
10 | "exit:Flow_1:E",
11 | "createScope:EVT_GATE:C",
12 | "destroyScope:Flow_1:E",
13 | "enter:EVT_GATE:C",
14 | "createScope:M_FLOW:null",
15 | "signal:M_FLOW:G",
16 | "exit:M_FLOW:G",
17 | "destroyScope:EVT_GATE:F",
18 | "createScope:R_TASK:C",
19 | "destroyScope:M_FLOW:G",
20 | "signal:R_TASK:H",
21 | "exit:R_TASK:H",
22 | "createScope:Flow_2:C",
23 | "destroyScope:R_TASK:H",
24 | "enter:Flow_2:C",
25 | "exit:Flow_2:I",
26 | "createScope:END:C",
27 | "destroyScope:Flow_2:I",
28 | "enter:END:C",
29 | "exit:END:J",
30 | "destroyScope:END:J",
31 | "exit:PART_EXP:C",
32 | "destroyScope:PART_EXP:C"
33 | ]
--------------------------------------------------------------------------------
/test/spec/simulator/Simulator.message-flow-trigger-receive-task.json:
--------------------------------------------------------------------------------
1 | [
2 | "createScope:PART_EXP:null",
3 | "signal:PART_EXP:A",
4 | "createScope:START:A",
5 | "signal:START:B",
6 | "exit:START:B",
7 | "createScope:Flow_1:A",
8 | "destroyScope:START:B",
9 | "enter:Flow_1:A",
10 | "exit:Flow_1:C",
11 | "createScope:R_TASK:A",
12 | "destroyScope:Flow_1:C",
13 | "enter:R_TASK:A",
14 | "createScope:M_FLOW:null",
15 | "signal:M_FLOW:E",
16 | "exit:M_FLOW:E",
17 | "destroyScope:M_FLOW:E",
18 | "signal:R_TASK:D",
19 | "exit:R_TASK:D",
20 | "createScope:Flow_2:A",
21 | "destroyScope:R_TASK:D",
22 | "enter:Flow_2:A",
23 | "exit:Flow_2:F",
24 | "createScope:END:A",
25 | "destroyScope:Flow_2:F",
26 | "enter:END:A",
27 | "exit:END:G",
28 | "destroyScope:END:G",
29 | "exit:PART_EXP:A",
30 | "destroyScope:PART_EXP:A"
31 | ]
--------------------------------------------------------------------------------
/test/spec/simulator/Simulator.message-flow-trigger-start-event.json:
--------------------------------------------------------------------------------
1 | [
2 | "createScope:M_FLOW:null",
3 | "signal:M_FLOW:A",
4 | "exit:M_FLOW:A",
5 | "createScope:PART_EXP:null",
6 | "destroyScope:M_FLOW:A",
7 | "signal:PART_EXP:B",
8 | "createScope:START:B",
9 | "signal:START:C",
10 | "exit:START:C",
11 | "createScope:Flow_1:B",
12 | "destroyScope:START:C",
13 | "enter:Flow_1:B",
14 | "exit:Flow_1:D",
15 | "createScope:END:B",
16 | "destroyScope:Flow_1:D",
17 | "enter:END:B",
18 | "exit:END:E",
19 | "destroyScope:END:E",
20 | "exit:PART_EXP:B",
21 | "destroyScope:PART_EXP:B"
22 | ]
--------------------------------------------------------------------------------
/test/spec/simulator/Simulator.message-flow-trigger-start-multiple-events.json:
--------------------------------------------------------------------------------
1 | [
2 | "createScope:M_FLOW:null",
3 | "signal:M_FLOW:C",
4 | "exit:M_FLOW:C",
5 | "createScope:Participant_A:null",
6 | "destroyScope:M_FLOW:C",
7 | "signal:Participant_A:D",
8 | "createScope:START_2:D",
9 | "signal:START_2:E",
10 | "exit:START_2:E",
11 | "createScope:Flow_1atsyoy:D",
12 | "destroyScope:START_2:E",
13 | "enter:Flow_1atsyoy:D",
14 | "exit:Flow_1atsyoy:F",
15 | "createScope:END:D",
16 | "destroyScope:Flow_1atsyoy:F",
17 | "enter:END:D",
18 | "exit:END:G",
19 | "destroyScope:END:G",
20 | "exit:Participant_A:D",
21 | "destroyScope:Participant_A:D"
22 | ]
--------------------------------------------------------------------------------
/test/spec/simulator/Simulator.message-flow-trigger-start-multiple-message-events.json:
--------------------------------------------------------------------------------
1 | [
2 | "createScope:M_FLOW:null",
3 | "signal:M_FLOW:C",
4 | "exit:M_FLOW:C",
5 | "createScope:Participant_A:null",
6 | "destroyScope:M_FLOW:C",
7 | "signal:Participant_A:D",
8 | "createScope:START_2:D",
9 | "signal:START_2:E",
10 | "exit:START_2:E",
11 | "createScope:Flow_1atsyoy:D",
12 | "destroyScope:START_2:E",
13 | "enter:Flow_1atsyoy:D",
14 | "exit:Flow_1atsyoy:F",
15 | "createScope:END:D",
16 | "destroyScope:Flow_1atsyoy:F",
17 | "enter:END:D",
18 | "exit:END:G",
19 | "destroyScope:END:G",
20 | "exit:Participant_A:D",
21 | "destroyScope:Participant_A:D"
22 | ]
--------------------------------------------------------------------------------
/test/spec/simulator/Simulator.parallel-gateway-join-1.json:
--------------------------------------------------------------------------------
1 | [
2 | "createScope:Process_1:null",
3 | "signal:Process_1:B",
4 | "createScope:StartEvent_1:B",
5 | "signal:StartEvent_1:C",
6 | "exit:StartEvent_1:C",
7 | "createScope:Flow_1:B",
8 | "destroyScope:StartEvent_1:C",
9 | "enter:Flow_1:B",
10 | "exit:Flow_1:D",
11 | "createScope:Activity_1:B",
12 | "destroyScope:Flow_1:D",
13 | "enter:Activity_1:B",
14 | "createScope:Timer_1:B",
15 | "signal:Timer_1:F",
16 | "exit:Timer_1:F",
17 | "createScope:Flow_3:B",
18 | "destroyScope:Timer_1:F",
19 | "enter:Flow_3:B",
20 | "exit:Flow_3:G",
21 | "createScope:ParallelJoin_1:B",
22 | "destroyScope:Flow_3:G",
23 | "enter:ParallelJoin_1:B",
24 | "signal:Activity_1:E",
25 | "exit:Activity_1:E",
26 | "createScope:Flow_2:B",
27 | "destroyScope:Activity_1:E",
28 | "enter:Flow_2:B",
29 | "exit:Flow_2:I",
30 | "createScope:ParallelJoin_1:B",
31 | "destroyScope:Flow_2:I",
32 | "enter:ParallelJoin_1:B",
33 | "destroyScope:ParallelJoin_1:H",
34 | "exit:ParallelJoin_1:J",
35 | "createScope:Flow_4:B",
36 | "destroyScope:ParallelJoin_1:J",
37 | "enter:Flow_4:B",
38 | "exit:Flow_4:K",
39 | "createScope:EndEvent_1:B",
40 | "destroyScope:Flow_4:K",
41 | "enter:EndEvent_1:B",
42 | "exit:EndEvent_1:L",
43 | "destroyScope:EndEvent_1:L",
44 | "exit:Process_1:B",
45 | "destroyScope:Process_1:B"
46 | ]
--------------------------------------------------------------------------------
/test/spec/simulator/Simulator.parallel-gateway-join-2.json:
--------------------------------------------------------------------------------
1 | [
2 | "createScope:Process_1:null",
3 | "signal:Process_1:B",
4 | "createScope:StartEvent_1:B",
5 | "signal:StartEvent_1:C",
6 | "exit:StartEvent_1:C",
7 | "createScope:Flow_1:B",
8 | "destroyScope:StartEvent_1:C",
9 | "enter:Flow_1:B",
10 | "exit:Flow_1:D",
11 | "createScope:Activity_1:B",
12 | "destroyScope:Flow_1:D",
13 | "enter:Activity_1:B",
14 | "createScope:Timer_1:B",
15 | "signal:Timer_1:F",
16 | "exit:Timer_1:F",
17 | "createScope:Flow_3:B",
18 | "destroyScope:Timer_1:F",
19 | "enter:Flow_3:B",
20 | "exit:Flow_3:G",
21 | "createScope:ParallelJoin_1:B",
22 | "destroyScope:Flow_3:G",
23 | "enter:ParallelJoin_1:B",
24 | "createScope:Timer_1:B",
25 | "signal:Timer_1:I",
26 | "exit:Timer_1:I",
27 | "createScope:Flow_3:B",
28 | "destroyScope:Timer_1:I",
29 | "enter:Flow_3:B",
30 | "exit:Flow_3:J",
31 | "createScope:ParallelJoin_1:B",
32 | "destroyScope:Flow_3:J",
33 | "enter:ParallelJoin_1:B"
34 | ]
--------------------------------------------------------------------------------
/test/spec/simulator/Simulator.parallel-gateway-join-3.json:
--------------------------------------------------------------------------------
1 | [
2 | "createScope:Process_1:null",
3 | "signal:Process_1:B",
4 | "createScope:StartEvent_1:B",
5 | "signal:StartEvent_1:C",
6 | "exit:StartEvent_1:C",
7 | "createScope:Flow_1:B",
8 | "destroyScope:StartEvent_1:C",
9 | "enter:Flow_1:B",
10 | "exit:Flow_1:D",
11 | "createScope:Activity_1:B",
12 | "destroyScope:Flow_1:D",
13 | "enter:Activity_1:B",
14 | "signal:Activity_1:E",
15 | "exit:Activity_1:E",
16 | "createScope:Flow_2:B",
17 | "destroyScope:Activity_1:E",
18 | "enter:Flow_2:B",
19 | "exit:Flow_2:F",
20 | "createScope:ParallelJoin_1:B",
21 | "destroyScope:Flow_2:F",
22 | "enter:ParallelJoin_1:B",
23 | "createScope:Process_1:null",
24 | "signal:Process_1:H",
25 | "createScope:StartEvent_1:H",
26 | "signal:StartEvent_1:I",
27 | "exit:StartEvent_1:I",
28 | "createScope:Flow_1:H",
29 | "destroyScope:StartEvent_1:I",
30 | "enter:Flow_1:H",
31 | "exit:Flow_1:J",
32 | "createScope:Activity_1:H",
33 | "destroyScope:Flow_1:J",
34 | "enter:Activity_1:H",
35 | "createScope:Timer_1:H",
36 | "signal:Timer_1:L",
37 | "exit:Timer_1:L",
38 | "createScope:Flow_3:H",
39 | "destroyScope:Timer_1:L",
40 | "enter:Flow_3:H",
41 | "exit:Flow_3:M",
42 | "createScope:ParallelJoin_1:H",
43 | "destroyScope:Flow_3:M",
44 | "enter:ParallelJoin_1:H"
45 | ]
--------------------------------------------------------------------------------
/test/spec/simulator/Simulator.parallel-gateway-stuck.json:
--------------------------------------------------------------------------------
1 | [
2 | "createScope:Process_1:null",
3 | "signal:Process_1:A",
4 | "createScope:START:A",
5 | "signal:START:B",
6 | "exit:START:B",
7 | "createScope:Flow_2:A",
8 | "destroyScope:START:B",
9 | "enter:Flow_2:A",
10 | "exit:Flow_2:C",
11 | "createScope:GATE:A",
12 | "destroyScope:Flow_2:C",
13 | "enter:GATE:A"
14 | ]
--------------------------------------------------------------------------------
/test/spec/simulator/Simulator.parallel-gateway.json:
--------------------------------------------------------------------------------
1 | [
2 | "createScope:Process_1:null",
3 | "signal:Process_1:B",
4 | "createScope:START:B",
5 | "signal:START:C",
6 | "exit:START:C",
7 | "createScope:Flow_2:B",
8 | "destroyScope:START:C",
9 | "enter:Flow_2:B",
10 | "exit:Flow_2:D",
11 | "createScope:F_GATE:B",
12 | "destroyScope:Flow_2:D",
13 | "enter:F_GATE:B",
14 | "exit:F_GATE:E",
15 | "createScope:Flow_3:B",
16 | "createScope:Flow_4:B",
17 | "createScope:Flow_5:B",
18 | "destroyScope:F_GATE:E",
19 | "enter:Flow_3:B",
20 | "enter:Flow_4:B",
21 | "enter:Flow_5:B",
22 | "exit:Flow_3:F",
23 | "createScope:J_GATE:B",
24 | "destroyScope:Flow_3:F",
25 | "exit:Flow_4:G",
26 | "createScope:J_GATE:B",
27 | "destroyScope:Flow_4:G",
28 | "exit:Flow_5:H",
29 | "createScope:J_GATE:B",
30 | "destroyScope:Flow_5:H",
31 | "enter:J_GATE:B",
32 | "enter:J_GATE:B",
33 | "enter:J_GATE:B",
34 | "destroyScope:J_GATE:I",
35 | "destroyScope:J_GATE:J",
36 | "exit:J_GATE:K",
37 | "createScope:Flow_1:B",
38 | "destroyScope:J_GATE:K",
39 | "enter:Flow_1:B",
40 | "exit:Flow_1:L",
41 | "createScope:END:B",
42 | "destroyScope:Flow_1:L",
43 | "enter:END:B",
44 | "exit:END:M",
45 | "destroyScope:END:M",
46 | "exit:Process_1:B",
47 | "destroyScope:Process_1:B"
48 | ]
--------------------------------------------------------------------------------
/test/spec/simulator/Simulator.process-implicit-start-collaboration-message-trigger.json:
--------------------------------------------------------------------------------
1 | [
2 | "createScope:PARTICIPANT_2:null",
3 | "signal:PARTICIPANT_2:F",
4 | "createScope:MESSAGE_THROW:F",
5 | "enter:MESSAGE_THROW:F",
6 | "createScope:MESSAGE_FLOW_1:null",
7 | "signal:MESSAGE_FLOW_1:H",
8 | "exit:MESSAGE_THROW:G",
9 | "destroyScope:MESSAGE_THROW:G",
10 | "exit:MESSAGE_FLOW_1:H",
11 | "createScope:PARTICIPANT_1:null",
12 | "destroyScope:MESSAGE_FLOW_1:H",
13 | "exit:PARTICIPANT_2:F",
14 | "destroyScope:PARTICIPANT_2:F",
15 | "signal:PARTICIPANT_1:I",
16 | "createScope:TASK:I",
17 | "createScope:START:I",
18 | "enter:TASK:I",
19 | "signal:START:K",
20 | "exit:START:K",
21 | "destroyScope:START:K"
22 | ]
--------------------------------------------------------------------------------
/test/spec/simulator/Simulator.process-implicit-start-collaboration.json:
--------------------------------------------------------------------------------
1 | [
2 | "createScope:PARTICIPANT_1:null",
3 | "signal:PARTICIPANT_1:C",
4 | "createScope:TASK:C",
5 | "createScope:START:C",
6 | "enter:TASK:C",
7 | "signal:START:E",
8 | "exit:START:E",
9 | "destroyScope:START:E"
10 | ]
--------------------------------------------------------------------------------
/test/spec/simulator/Simulator.process-implicit-start-no-start-events.bpmn:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/test/spec/simulator/Simulator.process-implicit-start-no-start-events.json:
--------------------------------------------------------------------------------
1 | [
2 | "createScope:Process_1:null",
3 | "signal:Process_1:B",
4 | "createScope:TASK:B",
5 | "enter:TASK:B",
6 | "exit:TASK:C",
7 | "destroyScope:TASK:C",
8 | "exit:Process_1:B",
9 | "destroyScope:Process_1:B"
10 | ]
--------------------------------------------------------------------------------
/test/spec/simulator/Simulator.process-implicit-start-none-event.json:
--------------------------------------------------------------------------------
1 | [
2 | "createScope:Process_1:null",
3 | "signal:Process_1:B",
4 | "createScope:TASK:B",
5 | "createScope:START:B",
6 | "enter:TASK:B",
7 | "signal:START:D",
8 | "exit:TASK:C",
9 | "createScope:Flow_1:B",
10 | "destroyScope:TASK:C",
11 | "exit:START:D",
12 | "createScope:Flow_2:B",
13 | "destroyScope:START:D",
14 | "enter:Flow_1:B",
15 | "enter:Flow_2:B",
16 | "exit:Flow_1:E",
17 | "createScope:GATEWAY:B",
18 | "destroyScope:Flow_1:E",
19 | "exit:Flow_2:F",
20 | "createScope:GATEWAY:B",
21 | "destroyScope:Flow_2:F",
22 | "enter:GATEWAY:B",
23 | "enter:GATEWAY:B",
24 | "destroyScope:GATEWAY:G",
25 | "exit:GATEWAY:H",
26 | "destroyScope:GATEWAY:H",
27 | "exit:Process_1:B",
28 | "destroyScope:Process_1:B"
29 | ]
--------------------------------------------------------------------------------
/test/spec/simulator/Simulator.process-implicit-start-trigger.json:
--------------------------------------------------------------------------------
1 | [
2 | "createScope:Process_1:null",
3 | "signal:Process_1:B",
4 | "createScope:TASK:B",
5 | "createScope:MESSAGE_START:B",
6 | "enter:TASK:B",
7 | "signal:MESSAGE_START:D",
8 | "exit:TASK:C",
9 | "createScope:Flow_1:B",
10 | "destroyScope:TASK:C",
11 | "exit:MESSAGE_START:D",
12 | "createScope:Flow_2:B",
13 | "destroyScope:MESSAGE_START:D",
14 | "enter:Flow_1:B",
15 | "enter:Flow_2:B",
16 | "exit:Flow_1:E",
17 | "createScope:GATEWAY:B",
18 | "destroyScope:Flow_1:E",
19 | "exit:Flow_2:F",
20 | "createScope:GATEWAY:B",
21 | "destroyScope:Flow_2:F",
22 | "enter:GATEWAY:B",
23 | "enter:GATEWAY:B",
24 | "destroyScope:GATEWAY:G",
25 | "exit:GATEWAY:H",
26 | "destroyScope:GATEWAY:H",
27 | "exit:Process_1:B",
28 | "destroyScope:Process_1:B"
29 | ]
--------------------------------------------------------------------------------
/test/spec/simulator/Simulator.process-multiple-starts-1.json:
--------------------------------------------------------------------------------
1 | [
2 | "createScope:Process_1:null",
3 | "signal:Process_1:B",
4 | "createScope:START_1:B",
5 | "signal:START_1:C",
6 | "exit:START_1:C",
7 | "createScope:Flow_0krxhmu:B",
8 | "destroyScope:START_1:C",
9 | "enter:Flow_0krxhmu:B",
10 | "exit:Flow_0krxhmu:D",
11 | "createScope:END:B",
12 | "destroyScope:Flow_0krxhmu:D",
13 | "enter:END:B",
14 | "exit:END:E",
15 | "destroyScope:END:E",
16 | "exit:Process_1:B",
17 | "destroyScope:Process_1:B"
18 | ]
--------------------------------------------------------------------------------
/test/spec/simulator/Simulator.process-multiple-starts-2.json:
--------------------------------------------------------------------------------
1 | [
2 | "createScope:Process_1:null",
3 | "signal:Process_1:F",
4 | "createScope:START_2:F",
5 | "signal:START_2:G",
6 | "exit:START_2:G",
7 | "createScope:Flow_1atsyoy:F",
8 | "destroyScope:START_2:G",
9 | "enter:Flow_1atsyoy:F",
10 | "exit:Flow_1atsyoy:H",
11 | "createScope:END:F",
12 | "destroyScope:Flow_1atsyoy:H",
13 | "enter:END:F",
14 | "exit:END:I",
15 | "destroyScope:END:I",
16 | "exit:Process_1:F",
17 | "destroyScope:Process_1:F"
18 | ]
--------------------------------------------------------------------------------
/test/spec/simulator/Simulator.signal-consume.json:
--------------------------------------------------------------------------------
1 | [
2 | "createScope:Process_1:null",
3 | "signal:Process_1:B",
4 | "createScope:START:B",
5 | "signal:START:C",
6 | "exit:START:C",
7 | "createScope:Flow_11zefw2:B",
8 | "destroyScope:START:C",
9 | "enter:Flow_11zefw2:B",
10 | "exit:Flow_11zefw2:D",
11 | "createScope:S:B",
12 | "destroyScope:Flow_11zefw2:D",
13 | "enter:S:B",
14 | "createScope:S_START:E",
15 | "signal:S_START:F",
16 | "exit:S_START:F",
17 | "createScope:Flow_1:E",
18 | "destroyScope:S_START:F",
19 | "enter:Flow_1:E",
20 | "exit:Flow_1:G",
21 | "createScope:S_SIGNAL_END:E",
22 | "destroyScope:Flow_1:G",
23 | "enter:S_SIGNAL_END:E",
24 | "createScope:S_EVT:E",
25 | "signal:S_EVT:I",
26 | "destroyScope:S_SIGNAL_END:H",
27 | "createScope:S_EVT_START:I",
28 | "signal:S_EVT_START:J",
29 | "exit:S_EVT_START:J",
30 | "createScope:Flow_3:I",
31 | "destroyScope:S_EVT_START:J",
32 | "enter:Flow_3:I",
33 | "exit:Flow_3:K",
34 | "createScope:S_EVT_END:I",
35 | "destroyScope:Flow_3:K",
36 | "enter:S_EVT_END:I",
37 | "exit:S_EVT_END:L",
38 | "destroyScope:S_EVT_END:L",
39 | "exit:S_EVT:I",
40 | "destroyScope:S_EVT:I",
41 | "exit:S:E",
42 | "createScope:Flow_07fma4i:B",
43 | "destroyScope:S:E",
44 | "enter:Flow_07fma4i:B",
45 | "exit:Flow_07fma4i:M",
46 | "createScope:END:B",
47 | "destroyScope:Flow_07fma4i:M",
48 | "enter:END:B",
49 | "exit:END:N",
50 | "destroyScope:END:N",
51 | "exit:Process_1:B",
52 | "destroyScope:Process_1:B"
53 | ]
--------------------------------------------------------------------------------
/test/spec/simulator/Simulator.signal-end-event-trigger-event-sub-process-interrupting.json:
--------------------------------------------------------------------------------
1 | [
2 | "createScope:Process_1:null",
3 | "signal:Process_1:A",
4 | "createScope:START:A",
5 | "signal:START:B",
6 | "exit:START:B",
7 | "createScope:Flow_1:A",
8 | "destroyScope:START:B",
9 | "enter:Flow_1:A",
10 | "exit:Flow_1:C",
11 | "createScope:SIGNAL_END:A",
12 | "destroyScope:Flow_1:C",
13 | "enter:SIGNAL_END:A",
14 | "createScope:S_EVT:A",
15 | "signal:S_EVT:E",
16 | "destroyScope:SIGNAL_END:D",
17 | "createScope:S_EVT_START:E",
18 | "signal:S_EVT_START:F",
19 | "exit:S_EVT_START:F",
20 | "createScope:Flow_3:E",
21 | "destroyScope:S_EVT_START:F",
22 | "enter:Flow_3:E",
23 | "exit:Flow_3:G",
24 | "createScope:S_EVT_END:E",
25 | "destroyScope:Flow_3:G",
26 | "enter:S_EVT_END:E",
27 | "exit:S_EVT_END:H",
28 | "destroyScope:S_EVT_END:H",
29 | "exit:S_EVT:E",
30 | "destroyScope:S_EVT:E",
31 | "exit:Process_1:A",
32 | "destroyScope:Process_1:A"
33 | ]
--------------------------------------------------------------------------------
/test/spec/simulator/Simulator.signal-end-event-trigger-sub-process-non-interrupting.json:
--------------------------------------------------------------------------------
1 | [
2 | "createScope:Process_1:null",
3 | "signal:Process_1:A",
4 | "createScope:START:A",
5 | "signal:START:B",
6 | "exit:START:B",
7 | "createScope:Flow_1:A",
8 | "destroyScope:START:B",
9 | "enter:Flow_1:A",
10 | "exit:Flow_1:C",
11 | "createScope:SIGNAL_END:A",
12 | "destroyScope:Flow_1:C",
13 | "enter:SIGNAL_END:A",
14 | "createScope:S_EVT:A",
15 | "signal:S_EVT:E",
16 | "createScope:S_EVT_START:E",
17 | "exit:SIGNAL_END:D",
18 | "destroyScope:SIGNAL_END:D",
19 | "signal:S_EVT_START:F",
20 | "exit:S_EVT_START:F",
21 | "createScope:Flow_3:E",
22 | "destroyScope:S_EVT_START:F",
23 | "enter:Flow_3:E",
24 | "exit:Flow_3:G",
25 | "createScope:S_EVT_END:E",
26 | "destroyScope:Flow_3:G",
27 | "enter:S_EVT_END:E",
28 | "exit:S_EVT_END:H",
29 | "destroyScope:S_EVT_END:H",
30 | "exit:S_EVT:E",
31 | "destroyScope:S_EVT:E",
32 | "exit:Process_1:A",
33 | "destroyScope:Process_1:A"
34 | ]
--------------------------------------------------------------------------------
/test/spec/simulator/Simulator.signal-rethrow.json:
--------------------------------------------------------------------------------
1 | [
2 | "createScope:Process_1:null",
3 | "signal:Process_1:B",
4 | "createScope:START:B",
5 | "signal:START:C",
6 | "exit:START:C",
7 | "createScope:Flow_11zefw2:B",
8 | "destroyScope:START:C",
9 | "enter:Flow_11zefw2:B",
10 | "exit:Flow_11zefw2:D",
11 | "createScope:S:B",
12 | "destroyScope:Flow_11zefw2:D",
13 | "enter:S:B",
14 | "createScope:S_START:E",
15 | "signal:S_START:F",
16 | "exit:S_START:F",
17 | "createScope:Flow_1:E",
18 | "destroyScope:S_START:F",
19 | "enter:Flow_1:E",
20 | "exit:Flow_1:G",
21 | "createScope:S_SIGNAL_END:E",
22 | "destroyScope:Flow_1:G",
23 | "enter:S_SIGNAL_END:E",
24 | "createScope:S_EVT:E",
25 | "signal:S_EVT:I",
26 | "destroyScope:S_SIGNAL_END:H",
27 | "createScope:S_EVT_START:I",
28 | "signal:S_EVT_START:J",
29 | "exit:S_EVT_START:J",
30 | "createScope:Flow_3:I",
31 | "destroyScope:S_EVT_START:J",
32 | "enter:Flow_3:I",
33 | "exit:Flow_3:K",
34 | "createScope:S_EVT_END:I",
35 | "destroyScope:Flow_3:K",
36 | "enter:S_EVT_END:I",
37 | "createScope:S_SIGNAL_BOUNDARY:B",
38 | "signal:S_SIGNAL_BOUNDARY:M",
39 | "destroyScope:S_EVT_END:L",
40 | "destroyScope:S_EVT:I",
41 | "exit:S:E",
42 | "destroyScope:S:E",
43 | "exit:S_SIGNAL_BOUNDARY:M",
44 | "createScope:Flow_0q92w6l:B",
45 | "destroyScope:S_SIGNAL_BOUNDARY:M",
46 | "enter:Flow_0q92w6l:B",
47 | "exit:Flow_0q92w6l:N",
48 | "createScope:CANCEL_END:B",
49 | "destroyScope:Flow_0q92w6l:N",
50 | "enter:CANCEL_END:B",
51 | "exit:CANCEL_END:O",
52 | "destroyScope:CANCEL_END:O",
53 | "exit:Process_1:B",
54 | "destroyScope:Process_1:B"
55 | ]
--------------------------------------------------------------------------------
/test/spec/simulator/Simulator.signal-trigger-boundary-event.json:
--------------------------------------------------------------------------------
1 | [
2 | "createScope:Process_1:null",
3 | "signal:Process_1:B",
4 | "createScope:START:B",
5 | "signal:START:C",
6 | "exit:START:C",
7 | "createScope:Flow_176dg60:B",
8 | "destroyScope:START:C",
9 | "enter:Flow_176dg60:B",
10 | "exit:Flow_176dg60:D",
11 | "createScope:SUB:B",
12 | "destroyScope:Flow_176dg60:D",
13 | "enter:SUB:B",
14 | "createScope:START_SUB:E",
15 | "signal:START_SUB:F",
16 | "exit:START_SUB:F",
17 | "createScope:Flow_104tc9y:E",
18 | "destroyScope:START_SUB:F",
19 | "enter:Flow_104tc9y:E",
20 | "exit:Flow_104tc9y:G",
21 | "createScope:SIGNAL_A:E",
22 | "destroyScope:Flow_104tc9y:G",
23 | "enter:SIGNAL_A:E",
24 | "createScope:BOUNDARY_A:B",
25 | "signal:BOUNDARY_A:I",
26 | "destroyScope:SIGNAL_A:H",
27 | "exit:SUB:E",
28 | "destroyScope:SUB:E",
29 | "exit:BOUNDARY_A:I",
30 | "createScope:Flow_0pzj65w:B",
31 | "destroyScope:BOUNDARY_A:I",
32 | "enter:Flow_0pzj65w:B",
33 | "exit:Flow_0pzj65w:J",
34 | "createScope:END_A:B",
35 | "destroyScope:Flow_0pzj65w:J",
36 | "enter:END_A:B",
37 | "exit:END_A:K",
38 | "destroyScope:END_A:K",
39 | "exit:Process_1:B",
40 | "destroyScope:Process_1:B"
41 | ]
--------------------------------------------------------------------------------
/test/spec/simulator/Simulator.signal-trigger-event-based-gateway.json:
--------------------------------------------------------------------------------
1 | [
2 | "createScope:Process_1:null",
3 | "signal:Process_1:B",
4 | "createScope:START:B",
5 | "signal:START:C",
6 | "exit:START:C",
7 | "createScope:Flow_1:B",
8 | "destroyScope:START:C",
9 | "enter:Flow_1:B",
10 | "exit:Flow_1:D",
11 | "createScope:PARALLEL_GATE:B",
12 | "destroyScope:Flow_1:D",
13 | "enter:PARALLEL_GATE:B",
14 | "exit:PARALLEL_GATE:E",
15 | "createScope:Flow_2:B",
16 | "createScope:Flow_5:B",
17 | "destroyScope:PARALLEL_GATE:E",
18 | "enter:Flow_2:B",
19 | "enter:Flow_5:B",
20 | "exit:Flow_2:F",
21 | "createScope:EVENT_BLANK:B",
22 | "destroyScope:Flow_2:F",
23 | "exit:Flow_5:G",
24 | "createScope:EVT_GATE:B",
25 | "destroyScope:Flow_5:G",
26 | "enter:EVENT_BLANK:B",
27 | "enter:EVT_GATE:B",
28 | "exit:EVENT_BLANK:H",
29 | "createScope:Flow_3:B",
30 | "destroyScope:EVENT_BLANK:H",
31 | "enter:Flow_3:B",
32 | "exit:Flow_3:J",
33 | "createScope:THROW_A:B",
34 | "destroyScope:Flow_3:J",
35 | "enter:THROW_A:B",
36 | "destroyScope:EVT_GATE:I",
37 | "createScope:CATCH_A:B",
38 | "signal:CATCH_A:L",
39 | "exit:THROW_A:K",
40 | "createScope:Flow_4:B",
41 | "destroyScope:THROW_A:K",
42 | "exit:CATCH_A:L",
43 | "createScope:Flow_7:B",
44 | "destroyScope:CATCH_A:L",
45 | "enter:Flow_4:B",
46 | "enter:Flow_7:B",
47 | "exit:Flow_4:M",
48 | "createScope:END_A:B",
49 | "destroyScope:Flow_4:M",
50 | "exit:Flow_7:N",
51 | "createScope:END_B:B",
52 | "destroyScope:Flow_7:N",
53 | "enter:END_A:B",
54 | "enter:END_B:B",
55 | "exit:END_A:O",
56 | "destroyScope:END_A:O",
57 | "exit:END_B:P",
58 | "destroyScope:END_B:P",
59 | "exit:Process_1:B",
60 | "destroyScope:Process_1:B"
61 | ]
--------------------------------------------------------------------------------
/test/spec/simulator/Simulator.signal-trigger-event-sub-process.json:
--------------------------------------------------------------------------------
1 | [
2 | "createScope:Process_1:null",
3 | "signal:Process_1:A",
4 | "createScope:START:A",
5 | "signal:START:B",
6 | "exit:START:B",
7 | "createScope:Flow_04u2uoq:A",
8 | "destroyScope:START:B",
9 | "enter:Flow_04u2uoq:A",
10 | "exit:Flow_04u2uoq:C",
11 | "createScope:SIGNAL_A:A",
12 | "destroyScope:Flow_04u2uoq:C",
13 | "enter:SIGNAL_A:A",
14 | "createScope:EVT_SUB:A",
15 | "signal:EVT_SUB:E",
16 | "createScope:START_A:E",
17 | "exit:SIGNAL_A:D",
18 | "createScope:Flow_4:A",
19 | "destroyScope:SIGNAL_A:D",
20 | "signal:START_A:F",
21 | "enter:Flow_4:A",
22 | "exit:START_A:F",
23 | "createScope:Flow_5:E",
24 | "destroyScope:START_A:F",
25 | "exit:Flow_4:G",
26 | "createScope:END_A:A",
27 | "destroyScope:Flow_4:G",
28 | "enter:Flow_5:E",
29 | "enter:END_A:A",
30 | "exit:Flow_5:H",
31 | "createScope:END_SUB:E",
32 | "destroyScope:Flow_5:H",
33 | "exit:END_A:I",
34 | "destroyScope:END_A:I",
35 | "enter:END_SUB:E",
36 | "exit:END_SUB:J",
37 | "destroyScope:END_SUB:J",
38 | "exit:EVT_SUB:E",
39 | "destroyScope:EVT_SUB:E",
40 | "exit:Process_1:A",
41 | "destroyScope:Process_1:A"
42 | ]
--------------------------------------------------------------------------------
/test/spec/simulator/Simulator.signal-trigger-intermediate-catch-event.json:
--------------------------------------------------------------------------------
1 | [
2 | "createScope:Process_1:null",
3 | "signal:Process_1:A",
4 | "createScope:START:A",
5 | "signal:START:B",
6 | "exit:START:B",
7 | "createScope:Flow_1:A",
8 | "destroyScope:START:B",
9 | "enter:Flow_1:A",
10 | "exit:Flow_1:C",
11 | "createScope:PARALLEL_GATE:A",
12 | "destroyScope:Flow_1:C",
13 | "enter:PARALLEL_GATE:A",
14 | "exit:PARALLEL_GATE:D",
15 | "createScope:Flow_2:A",
16 | "createScope:Flow_6:A",
17 | "destroyScope:PARALLEL_GATE:D",
18 | "enter:Flow_2:A",
19 | "enter:Flow_6:A",
20 | "exit:Flow_2:E",
21 | "createScope:EVENT_BLANK:A",
22 | "destroyScope:Flow_2:E",
23 | "exit:Flow_6:F",
24 | "createScope:SIGNAL_A_CATCH:A",
25 | "destroyScope:Flow_6:F",
26 | "enter:EVENT_BLANK:A",
27 | "enter:SIGNAL_A_CATCH:A",
28 | "exit:EVENT_BLANK:G",
29 | "createScope:Flow_3:A",
30 | "destroyScope:EVENT_BLANK:G",
31 | "enter:Flow_3:A",
32 | "exit:Flow_3:I",
33 | "createScope:SIGNAL_A_THROW:A",
34 | "destroyScope:Flow_3:I",
35 | "enter:SIGNAL_A_THROW:A",
36 | "signal:SIGNAL_A_CATCH:H",
37 | "exit:SIGNAL_A_THROW:J",
38 | "createScope:Flow_4:A",
39 | "destroyScope:SIGNAL_A_THROW:J",
40 | "exit:SIGNAL_A_CATCH:H",
41 | "createScope:Flow_7:A",
42 | "destroyScope:SIGNAL_A_CATCH:H",
43 | "enter:Flow_4:A",
44 | "enter:Flow_7:A",
45 | "exit:Flow_4:K",
46 | "createScope:END_A:A",
47 | "destroyScope:Flow_4:K",
48 | "exit:Flow_7:L",
49 | "createScope:END_B:A",
50 | "destroyScope:Flow_7:L",
51 | "enter:END_A:A",
52 | "enter:END_B:A",
53 | "exit:END_A:M",
54 | "destroyScope:END_A:M",
55 | "exit:END_B:N",
56 | "destroyScope:END_B:N",
57 | "exit:Process_1:A",
58 | "destroyScope:Process_1:A"
59 | ]
--------------------------------------------------------------------------------
/test/spec/simulator/Simulator.signal-trigger-multiple-start-events.json:
--------------------------------------------------------------------------------
1 | [
2 | "createScope:Process_1:null",
3 | "signal:Process_1:B",
4 | "createScope:START:B",
5 | "signal:START:C",
6 | "exit:START:C",
7 | "createScope:Flow_3:B",
8 | "destroyScope:START:C",
9 | "enter:Flow_3:B",
10 | "exit:Flow_3:D",
11 | "createScope:END:B",
12 | "destroyScope:Flow_3:D",
13 | "enter:END:B",
14 | "createScope:Process_1:null",
15 | "createScope:Process_1:null",
16 | "signal:Process_1:F",
17 | "createScope:START_S1:F",
18 | "signal:Process_1:G",
19 | "createScope:START_S2:G",
20 | "exit:END:E",
21 | "destroyScope:END:E",
22 | "signal:START_S1:H",
23 | "signal:START_S2:I",
24 | "exit:Process_1:B",
25 | "destroyScope:Process_1:B",
26 | "exit:START_S1:H",
27 | "createScope:Flow_1:F",
28 | "destroyScope:START_S1:H",
29 | "exit:START_S2:I",
30 | "createScope:Flow_2:G",
31 | "destroyScope:START_S2:I",
32 | "enter:Flow_1:F",
33 | "enter:Flow_2:G",
34 | "exit:Flow_1:J",
35 | "createScope:END_S1:F",
36 | "destroyScope:Flow_1:J",
37 | "exit:Flow_2:K",
38 | "createScope:END_S2:G",
39 | "destroyScope:Flow_2:K",
40 | "enter:END_S1:F",
41 | "enter:END_S2:G",
42 | "exit:END_S1:L",
43 | "destroyScope:END_S1:L",
44 | "exit:END_S2:M",
45 | "destroyScope:END_S2:M",
46 | "exit:Process_1:F",
47 | "destroyScope:Process_1:F",
48 | "exit:Process_1:G",
49 | "destroyScope:Process_1:G"
50 | ]
--------------------------------------------------------------------------------
/test/spec/simulator/Simulator.signal-trigger-start-event.json:
--------------------------------------------------------------------------------
1 | [
2 | "createScope:Participant_1:null",
3 | "signal:Participant_1:A",
4 | "createScope:START:A",
5 | "signal:START:B",
6 | "exit:START:B",
7 | "createScope:Flow_1:A",
8 | "destroyScope:START:B",
9 | "enter:Flow_1:A",
10 | "exit:Flow_1:C",
11 | "createScope:SIGNAL_THROW:A",
12 | "destroyScope:Flow_1:C",
13 | "enter:SIGNAL_THROW:A",
14 | "createScope:Participant_2:null",
15 | "signal:Participant_2:E",
16 | "createScope:SIGNAL_START:E",
17 | "exit:SIGNAL_THROW:D",
18 | "createScope:Flow_2:A",
19 | "destroyScope:SIGNAL_THROW:D",
20 | "signal:SIGNAL_START:F",
21 | "enter:Flow_2:A",
22 | "exit:SIGNAL_START:F",
23 | "createScope:Flow_4:E",
24 | "destroyScope:SIGNAL_START:F",
25 | "exit:Flow_2:G",
26 | "createScope:END:A",
27 | "destroyScope:Flow_2:G",
28 | "enter:Flow_4:E",
29 | "enter:END:A",
30 | "exit:Flow_4:H",
31 | "createScope:SIGNAL_END:E",
32 | "destroyScope:Flow_4:H",
33 | "exit:END:I",
34 | "destroyScope:END:I",
35 | "enter:SIGNAL_END:E",
36 | "exit:Participant_1:A",
37 | "destroyScope:Participant_1:A",
38 | "exit:SIGNAL_END:J",
39 | "destroyScope:SIGNAL_END:J",
40 | "exit:Participant_2:E",
41 | "destroyScope:Participant_2:E"
42 | ]
--------------------------------------------------------------------------------
/test/spec/simulator/Simulator.simple-0.json:
--------------------------------------------------------------------------------
1 | [
2 | "createScope:Process_1:null",
3 | "signal:Process_1:A",
4 | "createScope:START:A",
5 | "signal:START:B",
6 | "exit:START:B",
7 | "createScope:Flow_2:A",
8 | "destroyScope:START:B",
9 | "enter:Flow_2:A",
10 | "exit:Flow_2:C",
11 | "createScope:TASK:A",
12 | "destroyScope:Flow_2:C",
13 | "enter:TASK:A"
14 | ]
--------------------------------------------------------------------------------
/test/spec/simulator/Simulator.simple-1.json:
--------------------------------------------------------------------------------
1 | [
2 | "signal:TASK:D",
3 | "exit:TASK:D",
4 | "createScope:Flow_1:A",
5 | "destroyScope:TASK:D",
6 | "enter:Flow_1:A",
7 | "exit:Flow_1:E",
8 | "createScope:END:A",
9 | "destroyScope:Flow_1:E",
10 | "enter:END:A",
11 | "exit:END:F",
12 | "destroyScope:END:F",
13 | "exit:Process_1:A",
14 | "destroyScope:Process_1:A"
15 | ]
--------------------------------------------------------------------------------
/test/spec/simulator/Simulator.simple.json:
--------------------------------------------------------------------------------
1 | [
2 | "createScope:Process_1:null",
3 | "signal:Process_1:A",
4 | "createScope:START:A",
5 | "signal:START:B",
6 | "exit:START:B",
7 | "createScope:Flow_2:A",
8 | "destroyScope:START:B",
9 | "enter:Flow_2:A",
10 | "exit:Flow_2:C",
11 | "createScope:TASK:A",
12 | "destroyScope:Flow_2:C",
13 | "enter:TASK:A",
14 | "exit:TASK:D",
15 | "createScope:Flow_1:A",
16 | "destroyScope:TASK:D",
17 | "enter:Flow_1:A",
18 | "exit:Flow_1:E",
19 | "createScope:END:A",
20 | "destroyScope:Flow_1:E",
21 | "enter:END:A",
22 | "exit:END:F",
23 | "destroyScope:END:F",
24 | "exit:Process_1:A",
25 | "destroyScope:Process_1:A"
26 | ]
--------------------------------------------------------------------------------
/test/spec/simulator/Simulator.sub-process.json:
--------------------------------------------------------------------------------
1 | [
2 | "createScope:Process_1:null",
3 | "signal:Process_1:B",
4 | "createScope:START:B",
5 | "signal:START:C",
6 | "exit:START:C",
7 | "createScope:Flow_2:B",
8 | "destroyScope:START:C",
9 | "enter:Flow_2:B",
10 | "exit:Flow_2:D",
11 | "createScope:SUB:B",
12 | "destroyScope:Flow_2:D",
13 | "enter:SUB:B",
14 | "createScope:START_SUB:E",
15 | "signal:START_SUB:F",
16 | "exit:START_SUB:F",
17 | "createScope:Flow_4:E",
18 | "destroyScope:START_SUB:F",
19 | "enter:Flow_4:E",
20 | "exit:Flow_4:G",
21 | "createScope:TASK_SUB:E",
22 | "destroyScope:Flow_4:G",
23 | "enter:TASK_SUB:E",
24 | "exit:TASK_SUB:H",
25 | "createScope:Flow_1:E",
26 | "destroyScope:TASK_SUB:H",
27 | "enter:Flow_1:E",
28 | "exit:Flow_1:I",
29 | "createScope:END_SUB:E",
30 | "destroyScope:Flow_1:I",
31 | "enter:END_SUB:E",
32 | "exit:END_SUB:J",
33 | "destroyScope:END_SUB:J",
34 | "exit:SUB:E",
35 | "createScope:Flow_3:B",
36 | "destroyScope:SUB:E",
37 | "enter:Flow_3:B",
38 | "exit:Flow_3:K",
39 | "createScope:END:B",
40 | "destroyScope:Flow_3:K",
41 | "enter:END:B",
42 | "exit:END:L",
43 | "destroyScope:END:L",
44 | "exit:Process_1:B",
45 | "destroyScope:Process_1:B"
46 | ]
--------------------------------------------------------------------------------
/test/spec/simulator/Simulator.task-join.json:
--------------------------------------------------------------------------------
1 | [
2 | "createScope:Process_1:null",
3 | "signal:Process_1:A",
4 | "createScope:START:A",
5 | "signal:START:B",
6 | "exit:START:B",
7 | "createScope:Flow_2:A",
8 | "createScope:Flow_4:A",
9 | "destroyScope:START:B",
10 | "enter:Flow_2:A",
11 | "enter:Flow_4:A",
12 | "exit:Flow_2:C",
13 | "createScope:TASK:A",
14 | "destroyScope:Flow_2:C",
15 | "exit:Flow_4:D",
16 | "createScope:TASK:A",
17 | "destroyScope:Flow_4:D",
18 | "enter:TASK:A",
19 | "enter:TASK:A",
20 | "exit:TASK:E",
21 | "createScope:Flow_3:A",
22 | "destroyScope:TASK:E",
23 | "exit:TASK:F",
24 | "createScope:Flow_3:A",
25 | "destroyScope:TASK:F",
26 | "enter:Flow_3:A",
27 | "enter:Flow_3:A",
28 | "exit:Flow_3:G",
29 | "createScope:END:A",
30 | "destroyScope:Flow_3:G",
31 | "exit:Flow_3:H",
32 | "createScope:END:A",
33 | "destroyScope:Flow_3:H",
34 | "enter:END:A",
35 | "enter:END:A",
36 | "exit:END:I",
37 | "destroyScope:END:I",
38 | "exit:END:J",
39 | "destroyScope:END:J",
40 | "exit:Process_1:A",
41 | "destroyScope:Process_1:A"
42 | ]
--------------------------------------------------------------------------------
/test/spec/simulator/Simulator.terminate-nested-scopes.json:
--------------------------------------------------------------------------------
1 | [
2 | "createScope:Process_1:null",
3 | "signal:Process_1:B",
4 | "createScope:START:B",
5 | "signal:START:C",
6 | "exit:START:C",
7 | "createScope:Flow_4:B",
8 | "createScope:Flow_6:B",
9 | "destroyScope:START:C",
10 | "enter:Flow_4:B",
11 | "enter:Flow_6:B",
12 | "exit:Flow_4:D",
13 | "createScope:SUB:B",
14 | "destroyScope:Flow_4:D",
15 | "exit:Flow_6:E",
16 | "createScope:END_TERM:B",
17 | "destroyScope:Flow_6:E",
18 | "enter:SUB:B",
19 | "createScope:START_SUB:F",
20 | "enter:END_TERM:B",
21 | "destroyScope:START_SUB:H",
22 | "destroyScope:SUB:F",
23 | "destroyScope:END_TERM:G",
24 | "exit:Process_1:B",
25 | "destroyScope:Process_1:B"
26 | ]
--------------------------------------------------------------------------------
/test/spec/simulator/Simulator.terminate.json:
--------------------------------------------------------------------------------
1 | [
2 | "createScope:Process_1:null",
3 | "signal:Process_1:A",
4 | "createScope:START:A",
5 | "signal:START:B",
6 | "exit:START:B",
7 | "createScope:Flow_1:A",
8 | "createScope:Flow_2:A",
9 | "destroyScope:START:B",
10 | "enter:Flow_1:A",
11 | "enter:Flow_2:A",
12 | "exit:Flow_1:C",
13 | "createScope:TASK:A",
14 | "destroyScope:Flow_1:C",
15 | "exit:Flow_2:D",
16 | "createScope:T_END:A",
17 | "destroyScope:Flow_2:D",
18 | "enter:TASK:A",
19 | "enter:T_END:A",
20 | "destroyScope:TASK:E",
21 | "destroyScope:T_END:F",
22 | "exit:Process_1:A",
23 | "destroyScope:Process_1:A"
24 | ]
--------------------------------------------------------------------------------
/test/spec/simulator/Simulator.token-sink-task.bpmn:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Flow_1
6 |
7 |
8 | Flow_1
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/test/spec/simulator/Simulator.token-sink-task.json:
--------------------------------------------------------------------------------
1 | [
2 | "createScope:Process_1:null",
3 | "signal:Process_1:B",
4 | "createScope:START:B",
5 | "signal:START:C",
6 | "exit:START:C",
7 | "createScope:Flow_1:B",
8 | "destroyScope:START:C",
9 | "enter:Flow_1:B",
10 | "exit:Flow_1:D",
11 | "createScope:END:B",
12 | "destroyScope:Flow_1:D",
13 | "enter:END:B",
14 | "exit:END:E",
15 | "destroyScope:END:E",
16 | "exit:Process_1:B",
17 | "destroyScope:Process_1:B"
18 | ]
--------------------------------------------------------------------------------
/test/spec/simulator/Simulator.transaction-cancel-trigger-cancel-boundary.json:
--------------------------------------------------------------------------------
1 | [
2 | "createScope:Process_1:null",
3 | "signal:Process_1:B",
4 | "createScope:START:B",
5 | "signal:START:C",
6 | "exit:START:C",
7 | "createScope:Flow_1:B",
8 | "destroyScope:START:C",
9 | "enter:Flow_1:B",
10 | "exit:Flow_1:D",
11 | "createScope:T:B",
12 | "destroyScope:Flow_1:D",
13 | "enter:T:B",
14 | "createScope:START_T:E",
15 | "signal:START_T:F",
16 | "exit:START_T:F",
17 | "createScope:Flow_3:E",
18 | "destroyScope:START_T:F",
19 | "enter:Flow_3:E",
20 | "exit:Flow_3:G",
21 | "createScope:PARALLEL_GATE:E",
22 | "destroyScope:Flow_3:G",
23 | "enter:PARALLEL_GATE:E",
24 | "exit:PARALLEL_GATE:H",
25 | "createScope:Flow_1s2x1rg:E",
26 | "createScope:Flow_1qdkqr6:E",
27 | "destroyScope:PARALLEL_GATE:H",
28 | "enter:Flow_1s2x1rg:E",
29 | "enter:Flow_1qdkqr6:E",
30 | "exit:Flow_1s2x1rg:I",
31 | "createScope:CANCEL_T_END:E",
32 | "destroyScope:Flow_1s2x1rg:I",
33 | "exit:Flow_1qdkqr6:J",
34 | "createScope:RECEIVE:E",
35 | "destroyScope:Flow_1qdkqr6:J",
36 | "enter:CANCEL_T_END:E",
37 | "createScope:CANCELED_T_BOUNDARY:B",
38 | "enter:RECEIVE:E",
39 | "signal:CANCELED_T_BOUNDARY:M",
40 | "destroyScope:CANCEL_T_END:K",
41 | "destroyScope:RECEIVE:L",
42 | "exit:T:E",
43 | "destroyScope:T:E",
44 | "exit:CANCELED_T_BOUNDARY:M",
45 | "createScope:Flow_8:B",
46 | "destroyScope:CANCELED_T_BOUNDARY:M",
47 | "enter:Flow_8:B",
48 | "exit:Flow_8:N",
49 | "createScope:CANCELED_END:B",
50 | "destroyScope:Flow_8:N",
51 | "enter:CANCELED_END:B",
52 | "exit:CANCELED_END:O",
53 | "destroyScope:CANCELED_END:O",
54 | "exit:Process_1:B",
55 | "destroyScope:Process_1:B"
56 | ]
--------------------------------------------------------------------------------
/test/spec/simulator/Simulator.transaction-compensation.json:
--------------------------------------------------------------------------------
1 | [
2 | "createScope:Process_1:null",
3 | "signal:Process_1:B",
4 | "createScope:START:B",
5 | "signal:START:C",
6 | "exit:START:C",
7 | "createScope:Flow_1446f6b:B",
8 | "destroyScope:START:C",
9 | "enter:Flow_1446f6b:B",
10 | "exit:Flow_1446f6b:D",
11 | "createScope:T:B",
12 | "destroyScope:Flow_1446f6b:D",
13 | "enter:T:B",
14 | "createScope:T_START:E",
15 | "signal:T_START:F",
16 | "exit:T_START:F",
17 | "createScope:Flow_1wguwxw:E",
18 | "destroyScope:T_START:F",
19 | "enter:Flow_1wguwxw:E",
20 | "exit:Flow_1wguwxw:G",
21 | "createScope:A:E",
22 | "destroyScope:Flow_1wguwxw:G",
23 | "enter:A:E",
24 | "exit:A:H",
25 | "createScope:Flow_13dftyt:E",
26 | "destroyScope:A:H",
27 | "enter:Flow_13dftyt:E",
28 | "exit:Flow_13dftyt:I",
29 | "createScope:T_End:E",
30 | "destroyScope:Flow_13dftyt:I",
31 | "enter:T_End:E",
32 | "createScope:CANCEL_BOUNDARY:B",
33 | "signal:CANCEL_BOUNDARY:K",
34 | "destroyScope:T_End:J",
35 | "createScope:Compensate_A:E",
36 | "enter:Compensate_A:E",
37 | "exit:Compensate_A:L",
38 | "destroyScope:Compensate_A:L",
39 | "exit:CANCEL_BOUNDARY:K",
40 | "createScope:Flow_0cfhejw:B",
41 | "destroyScope:CANCEL_BOUNDARY:K",
42 | "exit:T:E",
43 | "destroyScope:T:E",
44 | "enter:Flow_0cfhejw:B",
45 | "exit:Flow_0cfhejw:M",
46 | "createScope:CANCELED:B",
47 | "destroyScope:Flow_0cfhejw:M",
48 | "enter:CANCELED:B",
49 | "exit:CANCELED:N",
50 | "destroyScope:CANCELED:N",
51 | "exit:Process_1:B",
52 | "destroyScope:Process_1:B"
53 | ]
--------------------------------------------------------------------------------
/test/spec/simulator/Simulator.transaction-error.json:
--------------------------------------------------------------------------------
1 | [
2 | "createScope:Process_1:null",
3 | "signal:Process_1:B",
4 | "createScope:START:B",
5 | "signal:START:C",
6 | "exit:START:C",
7 | "createScope:Flow_1:B",
8 | "destroyScope:START:C",
9 | "enter:Flow_1:B",
10 | "exit:Flow_1:D",
11 | "createScope:T:B",
12 | "destroyScope:Flow_1:D",
13 | "enter:T:B",
14 | "createScope:START_T:E",
15 | "signal:START_T:F",
16 | "exit:START_T:F",
17 | "createScope:Flow_3:E",
18 | "destroyScope:START_T:F",
19 | "enter:Flow_3:E",
20 | "exit:Flow_3:G",
21 | "createScope:Transactional_A:E",
22 | "destroyScope:Flow_3:G",
23 | "enter:Transactional_A:E",
24 | "exit:Transactional_A:H",
25 | "createScope:Flow_4:E",
26 | "destroyScope:Transactional_A:H",
27 | "enter:Flow_4:E",
28 | "exit:Flow_4:I",
29 | "createScope:ERROR_T_END:E",
30 | "destroyScope:Flow_4:I",
31 | "enter:ERROR_T_END:E",
32 | "createScope:ERROR_T:B",
33 | "signal:ERROR_T:K",
34 | "destroyScope:ERROR_T_END:J",
35 | "exit:T:E",
36 | "destroyScope:T:E",
37 | "exit:ERROR_T:K",
38 | "createScope:Flow_8:B",
39 | "destroyScope:ERROR_T:K",
40 | "enter:Flow_8:B",
41 | "exit:Flow_8:L",
42 | "createScope:Canceled_End:B",
43 | "destroyScope:Flow_8:L",
44 | "enter:Canceled_End:B",
45 | "exit:Canceled_End:M",
46 | "destroyScope:Canceled_End:M",
47 | "exit:Process_1:B",
48 | "destroyScope:Process_1:B"
49 | ]
--------------------------------------------------------------------------------
/test/spec/simulator/Simulator.transaction-no-compensate-activity.json:
--------------------------------------------------------------------------------
1 | [
2 | "createScope:Process_1:null",
3 | "signal:Process_1:B",
4 | "createScope:START:B",
5 | "signal:START:C",
6 | "exit:START:C",
7 | "createScope:Flow_1:B",
8 | "destroyScope:START:C",
9 | "enter:Flow_1:B",
10 | "exit:Flow_1:D",
11 | "createScope:T:B",
12 | "destroyScope:Flow_1:D",
13 | "enter:T:B",
14 | "createScope:T_START:E",
15 | "signal:T_START:F",
16 | "exit:T_START:F",
17 | "createScope:Flow_3:E",
18 | "destroyScope:T_START:F",
19 | "enter:Flow_3:E",
20 | "exit:Flow_3:G",
21 | "createScope:Transactional_A:E",
22 | "destroyScope:Flow_3:G",
23 | "enter:Transactional_A:E",
24 | "exit:Transactional_A:H",
25 | "createScope:Flow_4:E",
26 | "destroyScope:Transactional_A:H",
27 | "enter:Flow_4:E",
28 | "exit:Flow_4:I",
29 | "createScope:T_CANCEL_END:E",
30 | "destroyScope:Flow_4:I",
31 | "enter:T_CANCEL_END:E",
32 | "createScope:T_CANCEL_BOUNDARY:B",
33 | "signal:T_CANCEL_BOUNDARY:K",
34 | "destroyScope:T_CANCEL_END:J",
35 | "exit:T:E",
36 | "destroyScope:T:E",
37 | "exit:T_CANCEL_BOUNDARY:K",
38 | "createScope:Flow_8:B",
39 | "destroyScope:T_CANCEL_BOUNDARY:K",
40 | "enter:Flow_8:B",
41 | "exit:Flow_8:L",
42 | "createScope:T_CANCELED:B",
43 | "destroyScope:Flow_8:L",
44 | "enter:T_CANCELED:B",
45 | "exit:T_CANCELED:M",
46 | "destroyScope:T_CANCELED:M",
47 | "exit:Process_1:B",
48 | "destroyScope:Process_1:B"
49 | ]
--------------------------------------------------------------------------------
/test/spec/simulator/Simulator.transaction-terminate.json:
--------------------------------------------------------------------------------
1 | [
2 | "createScope:Process_1:null",
3 | "signal:Process_1:B",
4 | "createScope:START:B",
5 | "signal:START:C",
6 | "exit:START:C",
7 | "createScope:Flow_1:B",
8 | "destroyScope:START:C",
9 | "enter:Flow_1:B",
10 | "exit:Flow_1:D",
11 | "createScope:T:B",
12 | "destroyScope:Flow_1:D",
13 | "enter:T:B",
14 | "createScope:START_T:E",
15 | "signal:START_T:F",
16 | "exit:START_T:F",
17 | "createScope:Flow_3:E",
18 | "destroyScope:START_T:F",
19 | "enter:Flow_3:E",
20 | "exit:Flow_3:G",
21 | "createScope:Transactional_A:E",
22 | "destroyScope:Flow_3:G",
23 | "enter:Transactional_A:E",
24 | "exit:Transactional_A:H",
25 | "createScope:Flow_4:E",
26 | "destroyScope:Transactional_A:H",
27 | "enter:Flow_4:E",
28 | "exit:Flow_4:I",
29 | "createScope:Terminate_T_END:E",
30 | "destroyScope:Flow_4:I",
31 | "enter:Terminate_T_END:E",
32 | "destroyScope:Terminate_T_END:J",
33 | "exit:T:E",
34 | "createScope:Flow_2:B",
35 | "destroyScope:T:E",
36 | "enter:Flow_2:B",
37 | "exit:Flow_2:K",
38 | "createScope:End:B",
39 | "destroyScope:Flow_2:K",
40 | "enter:End:B",
41 | "exit:End:L",
42 | "destroyScope:End:L",
43 | "exit:Process_1:B",
44 | "destroyScope:Process_1:B"
45 | ]
--------------------------------------------------------------------------------
/test/suite.js:
--------------------------------------------------------------------------------
1 | var allTests = require.context('.', true, /Spec\.js$/);
2 |
3 | allTests.keys().forEach(allTests);
--------------------------------------------------------------------------------
/webpack.config.js:
--------------------------------------------------------------------------------
1 | const CopyWebpackPlugin = require('copy-webpack-plugin');
2 | const { DefinePlugin } = require('webpack');
3 |
4 |
5 | module.exports = (env, argv) => {
6 |
7 | const mode = argv.mode || 'development';
8 |
9 | const devtool = mode === 'development' ? 'eval-source-map' : 'source-map';
10 |
11 | return {
12 | mode,
13 | entry: {
14 | viewer: './example/src/viewer.js',
15 | modeler: './example/src/modeler.js'
16 | },
17 | output: {
18 | filename: 'dist/[name].js',
19 | path: __dirname + '/example'
20 | },
21 | module: {
22 | rules: [
23 | {
24 | test: /\.bpmn$/,
25 | type: 'asset/source'
26 | }
27 | ]
28 | },
29 | plugins: [
30 | new CopyWebpackPlugin({
31 | patterns: [
32 | { from: './assets', to: 'dist/vendor/bpmn-js-token-simulation/assets' },
33 | { from: 'bpmn-js/dist/assets', context: 'node_modules', to: 'dist/vendor/bpmn-js/assets' },
34 | { from: '@bpmn-io/properties-panel/dist/assets', context: 'node_modules', to: 'dist/vendor/bpmn-js-properties-panel/assets' }
35 | ]
36 | }),
37 | new DefinePlugin({
38 | 'process.env.TOKEN_SIMULATION_VERSION': JSON.stringify(require('./package.json').version)
39 | })
40 | ],
41 | devtool
42 | };
43 |
44 | };
--------------------------------------------------------------------------------