Skip to main content

BaseWorkflow

@adamondo/backend


@adamondo/backend / core/workflow/BaseWorkflow

core/workflow/BaseWorkflow

Classes

abstract BaseWorkflowEngine

Defined in: src/core/workflow/BaseWorkflow.ts:15

Generic workflow engine that evaluates transitions and executes versioned side effects.

Extended by

Type Parameters

TStatus

TStatus

TAction

TAction extends keyof TPayloadMap & keyof TResultMap

TActor

TActor

TContext

TContext extends BaseWorkflowContext<TStatus>

TResultMap

TResultMap extends Record<TAction, AnyValue>

TPayloadMap

TPayloadMap extends Record<TAction, AnyValue>

Constructors

Constructor

new BaseWorkflowEngine<TStatus, TAction, TActor, TContext, TResultMap, TPayloadMap>(definitions): BaseWorkflowEngine<TStatus, TAction, TActor, TContext, TResultMap, TPayloadMap>

Defined in: src/core/workflow/BaseWorkflow.ts:29

Parameters
definitions

WorkflowDefinition<TStatus, TAction, TActor, TContext, TResultMap>[]

Returns

BaseWorkflowEngine<TStatus, TAction, TActor, TContext, TResultMap, TPayloadMap>

Methods

getNextStatus()

getNextStatus(currentStatus, action, actor, version?): TStatus

Defined in: src/core/workflow/BaseWorkflow.ts:65

Parameters
currentStatus

TStatus | null

action

TAction

actor

TActor

version?

number

Returns

TStatus

Deprecated

Use executeAction instead. Computes the next status for a given action/actor pair.

Throws

When no matching transition exists.

isActionAllowed()

isActionAllowed(currentStatus, action, actor, version?): boolean

Defined in: src/core/workflow/BaseWorkflow.ts:95

Checks whether an action is allowed for the actor in the current status.

Parameters
currentStatus

TStatus

action

TAction

actor

TActor

version?

number

Returns

boolean

getAllowedActions()

getAllowedActions(currentStatus, actor, version?): TAction[]

Defined in: src/core/workflow/BaseWorkflow.ts:113

Lists all allowed actions for an actor in the current status.

Parameters
currentStatus

TStatus

actor

TActor

version?

number

Returns

TAction[]

isActionAlreadyApplied()

isActionAlreadyApplied(currentStatus, action, actor, version?): boolean

Defined in: src/core/workflow/BaseWorkflow.ts:128

Returns true when the action's target status already matches current status for this actor. Useful for idempotent API behavior on duplicate requests.

Parameters
currentStatus

TStatus | null

action

TAction

actor

TActor

version?

number

Returns

boolean

getActionsWithMetadata()

getActionsWithMetadata(currentStatus, actor, version?): object[]

Defined in: src/core/workflow/BaseWorkflow.ts:144

Returns allowed actions enriched with UI metadata.

Parameters
currentStatus

TStatus

actor

TActor

version?

number

Returns

object[]

executeAction()

executeAction<K>(currentStatus, action, actor, context): Promise<{ nextStatus: TStatus; result: TResultMap[K]; }>

Defined in: src/core/workflow/BaseWorkflow.ts:172

Executes a transition side effect in a transaction and returns the resulting status/value.

Type Parameters
K

K extends string | number | symbol

Parameters
currentStatus

TStatus | null

action

K

actor

TActor

context

TContext

Returns

Promise<{ nextStatus: TStatus; result: TResultMap[K]; }>

Throws

When no matching transition exists.

getLatestVersion()

getLatestVersion(): number

Defined in: src/core/workflow/BaseWorkflow.ts:233

Returns the highest registered workflow definition version.

Returns

number

getMermaidDiagram()

getMermaidDiagram(version?): string

Defined in: src/core/workflow/BaseWorkflow.ts:240

Generates a Mermaid state diagram from workflow transitions.

Parameters
version?

number

Returns

string

setStatusMetadata()

setStatusMetadata(status, actor, metadata): void

Defined in: src/core/workflow/BaseWorkflow.ts:260

Associates status metadata for a specific actor.

Parameters
status

TStatus

actor

TActor

metadata

unknown

Returns

void

getStatusMetadata()

getStatusMetadata(status, actor): unknown

Defined in: src/core/workflow/BaseWorkflow.ts:267

Retrieves status metadata previously bound for an actor.

Parameters
status

TStatus

actor

TActor

Returns

unknown

resolveWorkflowContext()

abstract resolveWorkflowContext<K>(userId, targetId, action, payload, actorContext?): Promise<TContext>

Defined in: src/core/workflow/BaseWorkflow.ts:273

Builds action execution context from user, target resource, and payload.

Type Parameters
K

K extends string | number | symbol

Parameters
userId

string

targetId

number | undefined

action

K

payload

TPayloadMap[K]

actorContext?

unknown

Returns

Promise<TContext>

getActor()

abstract getActor(context): TActor

Defined in: src/core/workflow/BaseWorkflow.ts:283

Resolves workflow actor from runtime context.

Parameters
context

TContext

Returns

TActor