Skip to content

bpmn-server / Engine

Class: Engine#

super class for various objects that are part of the server

Hierarchy#

↳ Engine

Implements#

Table of contents#

Constructors#

Properties#

Accessors#

Methods#

Constructors#

constructor#

• new Engine(server): Engine

Parameters#

Name Type
server any

Returns#

Engine

Overrides#

ServerComponent.constructor

Defined in#

packages/bpmn-server/src/server/Engine.ts:46

Properties#

runningCounter#

• runningCounter: number = 0

Defined in#

packages/bpmn-server/src/server/Engine.ts:41


callsCounter#

• callsCounter: number = 0

Defined in#

packages/bpmn-server/src/server/Engine.ts:42


workers#

• Private Readonly workers: Set\<Promise\<unknown>>

Executions handed off with noWait, still running.

Defined in#

packages/bpmn-server/src/server/Engine.ts:44


closing#

• Private closing: boolean = false

Defined in#

packages/bpmn-server/src/server/Engine.ts:45


server#

• server: any

Inherited from#

ServerComponent.server

Defined in#

packages/bpmn-server/src/server/ServerComponent.ts:10

Accessors#

configuration#

• get configuration(): any

Returns#

any

Inherited from#

ServerComponent.configuration

Defined in#

packages/bpmn-server/src/server/ServerComponent.ts:15


logger#

• get logger(): any

Returns#

any

Inherited from#

ServerComponent.logger

Defined in#

packages/bpmn-server/src/server/ServerComponent.ts:16


cron#

• get cron(): Cron

Returns#

Cron

Inherited from#

ServerComponent.cron

Defined in#

packages/bpmn-server/src/server/ServerComponent.ts:17


cache#

• get cache(): ICacheManager

Returns#

ICacheManager

Inherited from#

ServerComponent.cache

Defined in#

packages/bpmn-server/src/server/ServerComponent.ts:18


appDelegate#

• get appDelegate(): any

Returns#

any

Inherited from#

ServerComponent.appDelegate

Defined in#

packages/bpmn-server/src/server/ServerComponent.ts:19


engine#

• get engine(): IEngine

Returns#

IEngine

Inherited from#

ServerComponent.engine

Defined in#

packages/bpmn-server/src/server/ServerComponent.ts:20


dataStore#

• get dataStore(): any

Returns#

any

Inherited from#

ServerComponent.dataStore

Defined in#

packages/bpmn-server/src/server/ServerComponent.ts:21


lockManager#

• get lockManager(): any

The lock port: the configuration's, else the data store's.

Returns#

any

Inherited from#

ServerComponent.lockManager

Defined in#

packages/bpmn-server/src/server/ServerComponent.ts:23


definitions#

• get definitions(): any

Returns#

any

Inherited from#

ServerComponent.definitions

Defined in#

packages/bpmn-server/src/server/ServerComponent.ts:24


listener#

• get listener(): any

Returns#

any

Inherited from#

ServerComponent.listener

Defined in#

packages/bpmn-server/src/server/ServerComponent.ts:25


scriptHandler#

• get scriptHandler(): any

Returns#

any

Inherited from#

ServerComponent.scriptHandler

Defined in#

packages/bpmn-server/src/server/ServerComponent.ts:26

Methods#

close#

▸ close(): void

From now on, new calls are refused; running ones finish.

Returns#

void

Defined in#

packages/bpmn-server/src/server/Engine.ts:55


drain#

▸ drain(timeout?): Promise\<boolean>

Waits until no call runs and no handed-off execution is running, or timeout ms pass; true when idle.

Parameters#

Name Type Default value
timeout number 10_000

Returns#

Promise\<boolean>

Defined in#

packages/bpmn-server/src/server/Engine.ts:57


start#

▸ start(name, data?, startNodeId?, userName?, options?): Promise\<Execution>

loads a definitions and start execution

Parameters#

Name Type Default value Description
name any undefined name of the process to start
data any {} input data
startNodeId string null in process has multiple start node; you need to specify which one
userName string null -
options Object {} -

Returns#

Promise\<Execution>

Implementation of#

IEngine.start

Defined in#

packages/bpmn-server/src/server/Engine.ts:73


retry#

▸ retry(itemQuery, userName?): Promise\<Execution>

Runs a failed item's work again: an item whose status is error (its work threw; statusDetails.error says why), and the instance on from it.

Parameters#

Name Type Default value
itemQuery any undefined
userName string null

Returns#

Promise\<Execution>

Implementation of#

IEngine.retry

Defined in#

packages/bpmn-server/src/server/Engine.ts:137


restart#

▸ restart(itemQuery, data, userName, options?): Promise\<Execution>

Parameters#

Name Type
itemQuery any
data any
userName any
options Object

Returns#

Promise\<Execution>

Implementation of#

IEngine.restart

Defined in#

packages/bpmn-server/src/server/Engine.ts:160


get#

▸ get(instanceQuery): Promise\<Execution>

restores an instance into memeory or provides you access to a running instance

this will also resume execution

Parameters#

Name Type Description
instanceQuery any criteria to fetch the instance query example: jsonl { id: instanceId} { data: {caseId: 1005}} { items.id : 'abcc111322'} { items.itemKey : 'businesskey here'}

Returns#

Promise\<Execution>

Implementation of#

IEngine.get

Defined in#

packages/bpmn-server/src/server/Engine.ts:210


cancel#

▸ cancel(instanceQuery, userName?, options?): Promise\<Execution>

Cancels a running instance: its tokens are terminated (their waiting items end as terminated), its timers on this server are cancelled, process.terminated is emitted, and it is saved as terminated: never deleted. An instance that has ended or was cancelled before is left as it is.

Parameters#

Name Type Default value Description
instanceQuery any undefined criteria to fetch the instance, as for get
userName string null -
options Object {} -

Returns#

Promise\<Execution>

Implementation of#

IEngine.cancel

Defined in#

packages/bpmn-server/src/server/Engine.ts:232


lock#

▸ lock(executionId): Promise\<void>

lock instance

Parameters#

Name Type
executionId any

Returns#

Promise\<void>

Defined in#

packages/bpmn-server/src/server/Engine.ts:268


release#

▸ release(execution, id?): Promise\<void>

release instance lock

Parameters#

Name Type Default value
execution Execution undefined
id any null

Returns#

Promise\<void>

Defined in#

packages/bpmn-server/src/server/Engine.ts:280


restore#

▸ restore(instanceId, itemId?): Promise\<Execution>

* Loads instance into memory for purpose of execution Locks instance first if required check if in cache

Parameters#

Name Type Default value
instanceId any undefined
itemId any null

Returns#

Promise\<Execution>

Defined in#

packages/bpmn-server/src/server/Engine.ts:294


invokeItem#

▸ invokeItem(itemQuery, data?): Promise\<Execution>

Parameters#

Name Type
itemQuery any
data Object

Returns#

Promise\<Execution>

Defined in#

packages/bpmn-server/src/server/Engine.ts:318


assign#

▸ assign(itemQuery, data?, assignment?, userName, options?): Promise\<Execution>

update an existing item that is in a wait state with an assignment can modify data or assignment or both


Parameters#

Name Type Description
itemQuery any criteria to retrieve the item
data Object
assignment Object -
userName string -
options Object -

Returns#

Promise\<Execution>

Implementation of#

IEngine.assign

Defined in#

packages/bpmn-server/src/server/Engine.ts:331


invoke#

▸ invoke(itemQuery, data?, userName?, options?): Promise\<Execution>

Continue an existing item that is in a wait state


scenario:

itemId  {itemId: value }
itemKey     {itemKey: value}
instance,task   {instanceId: instanceId, elementId: value }

Parameters#

Name Type Default value Description
itemQuery any undefined criteria to retrieve the item
data Object {}
userName string null -
options Object {} -

Returns#

Promise\<Execution>

Implementation of#

IEngine.invoke

Defined in#

packages/bpmn-server/src/server/Engine.ts:379


startRepeatTimerEvent#

▸ startRepeatTimerEvent(instanceId, prevItem, data?, options?): Promise\<Execution>

Repeat Timers need to create new Item

Parameters#

Name Type
instanceId any
prevItem any
data Object
options Object

Returns#

Promise\<Execution>

Implementation of#

IEngine.startRepeatTimerEvent

Defined in#

packages/bpmn-server/src/server/Engine.ts:435


startEvent#

▸ startEvent(instanceId, elementId, data?, userName?, options?): Promise\<Execution>

Invoking an event (usually start event of a secondary process) against an existing instance or Invoking a start event (of a secondary process) against an existing instance


 instance,task

{instanceId: instanceId, elementId: value }

Parameters#

Name Type Default value
instanceId any undefined
elementId any undefined
data Object {}
userName string null
options Object {}

Returns#

Promise\<Execution>

Implementation of#

IEngine.startEvent

Defined in#

packages/bpmn-server/src/server/Engine.ts:480


throwMessage#

▸ throwMessage(messageId, data?, matchingQuery?): Promise\<Execution>

A message has one receiver (a signal is the broadcast): the first waiting item the matching query finds (an instance waiting for it: a catch event, a receive task, a boundary event), else, when none waits, a definition whose start event it is, started. A waiting instance is never passed over for a new one (the upstream tried the start events first).

Parameters#

Name Type Description
messageId any the message's name
data Object -
matchingQuery Object what narrows the waiting instances (their id, their data)

Returns#

Promise\<Execution>

Implementation of#

IEngine.throwMessage

Defined in#

packages/bpmn-server/src/server/Engine.ts:521


waitingFor#

▸ waitingFor(kind, name, matchingQuery?): Promise\<any>

The items waiting for a message or signal (kind: messageId or signalId), the matching query narrowing their instances.

Parameters#

Name Type
kind "messageId" | "signalId"
name string
matchingQuery Object

Returns#

Promise\<any>

Defined in#

packages/bpmn-server/src/server/Engine.ts:545


throwSignal#

▸ throwSignal(signalId, data?, matchingQuery?, from?): Promise\<any[]>

Throws a signal: starts the models whose start event catches it, and invokes the items waiting for it. from is the item throwing it inside an instance: that instance's own catching items are signalled on its running execution (an engine call on it would be refused: the throwing call holds it).

Parameters#

Name Type
signalId any
data Object
matchingQuery Object
from? IItem

Returns#

Promise\<any[]>

Implementation of#

IEngine.throwSignal

Defined in#

packages/bpmn-server/src/server/Engine.ts:568


status#

▸ status(): Object

Returns#

Object

Name Type
running number
calls number
handedOff number

Defined in#

packages/bpmn-server/src/server/Engine.ts:629


deleteInstances#

▸ deleteInstances(query): Promise\<{ deletedCount: number }>

Removes the instances a query matches, each under its lock, so a call running it finishes first, and with its timers, so nothing fires for it after. What changes an instance is the engine's: its host asks.

Parameters#

Name Type
query any

Returns#

Promise\<{ deletedCount: number }>

Implementation of#

IEngine.deleteInstances

Defined in#

packages/bpmn-server/src/server/Engine.ts:637


tagInstance#

▸ tagInstance(instanceId, tag): Promise\<void>

Marks a saved instance with a tag of the caller's (a test's run), as the data store does.

Parameters#

Name Type
instanceId string
tag any

Returns#

Promise\<void>

Implementation of#

IEngine.tagInstance

Defined in#

packages/bpmn-server/src/server/Engine.ts:657


upgrade#

▸ upgrade(model, afterNodeIds): Promise\<string[] | { errors: any }>

Points the saved instances of model at its current definition source, each under its instance lock; with afterNodeIds, only the instances that have not reached any of them.

Parameters#

Name Type
model string
afterNodeIds string[]

Returns#

Promise\<string[] | { errors: any }>

Implementation of#

IEngine.upgrade

Defined in#

packages/bpmn-server/src/server/Engine.ts:669


upgradeRunning#

▸ upgradeRunning(models?, options?): Promise\<IUpgradeReport[]>

Moves the instances that have not ended onto their model's current saved source: a model saved again (with the data store's saveSource, each instance runs the source it started with) reaches the instances still running, not only those started afterwards. Unlike upgrade(), it needs no node ids and leaves the ended instances alone: their source is the record of what ran.

  • The saved model must pass verifyModel; one with errors is refused and none of its instances changed.
  • An instance on a step (waiting, or part-way) that the new model does not have would be stranded: it is left as it is and reported.
  • Each instance changes under its instance lock and is checked again once the lock is held; one another call holds past the lock wait is reported as busy, to try again.

Parameters#

Name Type Default value Description
models string[] [] the models to upgrade; none: every model that has instances still running
options Object {} dryRun: report what would change, change nothing
options.dryRun? boolean undefined -

Returns#

Promise\<IUpgradeReport[]>

Implementation of#

IEngine.upgradeRunning

Defined in#

packages/bpmn-server/src/server/Engine.ts:721


findOneItem#

▸ findOneItem(itemQuery): Promise\<any>

The one item itemQuery names; none, or more than one, is an error.

Parameters#

Name Type
itemQuery any

Returns#

Promise\<any>

Defined in#

packages/bpmn-server/src/server/Engine.ts:803


assertOpen#

▸ assertOpen(): void

Returns#

void

Defined in#

packages/bpmn-server/src/server/Engine.ts:811


handOff#

▸ handOff(execution, run): void

Keeps a handed-off execution's worker until it settles (then its lock is released); its rejection stays on execution.worker, for whoever awaits it, and is reported.

Parameters#

Name Type
execution Execution
run Promise\<unknown>

Returns#

void

Defined in#

packages/bpmn-server/src/server/Engine.ts:815


report#

▸ report(error): void

Parameters#

Name Type
error any

Returns#

void

Defined in#

packages/bpmn-server/src/server/Engine.ts:821


exception#

▸ exception(exc, execution): Promise\<never>

A failed call: reported, the execution dropped from the cache (its state in memory may be part-way; the next call restores it from the store), process.exception emitted, and the error thrown to the caller as it is (the engine has always thrown here).

Parameters#

Name Type
exc any
execution any

Returns#

Promise\<never>

Defined in#

packages/bpmn-server/src/server/Engine.ts:830


sanitizeData#

▸ sanitizeData(data): any

Parameters#

Name Type
data any

Returns#

any

Defined in#

packages/bpmn-server/src/server/Engine.ts:845

Comments