├── .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 | [![Simulation Screen Capture](./screencapture.gif)](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 | 2 | 3 | 4 | 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 | }; --------------------------------------------------------------------------------