UNPKG

@5minds/processcube_engine

Version:

The ProcessCube Engine. Stores and executes BPMNs.

81 lines (80 loc) 4.84 kB
import { BaseError, FlowNodeInstance, FlowNodeInstanceState, Identity, Logger, Model } from '@5minds/processcube_engine_sdk'; import { FlowNodeInstanceTypeSpecificData } from '../../../Contracts'; import { EventMiddlewareHandler, FlowNodeInstanceDatabaseAdapter } from '../../../Tools'; import { FlowNodeExpressionConfig, ProcessInstance } from '../../ProcessInstance'; import { InternalEngineEvent } from '../FlowNodeHandler'; import { ActivityHandler } from './ActivityHandler'; export declare abstract class ActivityInstanceHandler<TActivity extends Model.Activities.Activity> { protected readonly flowNodeInstanceDatabaseAdapter: FlowNodeInstanceDatabaseAdapter; protected readonly eventMiddlewareHandler: EventMiddlewareHandler; protected instanceContext: { [key: string]: any; }; protected readonly activityHandler: ActivityHandler<TActivity>; protected readonly processInstance: ProcessInstance; protected triggeredByFlowNodeInstanceId: string; protected typeData: FlowNodeInstanceTypeSpecificData; protected logger: Logger; protected loggingMetaData: any; protected loggerNamespace: string; protected currentToken: Record<string, any> | Array<any>; protected previousFlowNodeInstanceId: string; private _state; private _flowNodeInstanceId; private startedAt; private finishedAt; private tokenChangedSubscription; constructor(eventMiddlewareHandler: EventMiddlewareHandler, flowNodeInstanceDatabaseAdapter: FlowNodeInstanceDatabaseAdapter, activityHandler: ActivityHandler<TActivity>, processInstance: ProcessInstance, previousFlowNodeInstanceId?: string, instanceContext?: { [key: string]: any; }); get flowNodeInstanceId(): string; protected set flowNodeInstanceId(value: string); get state(): string; protected set state(value: FlowNodeInstanceState); protected get flowNode(): TActivity; protected get flowNodeLane(): Model.ProcessElements.Lane; protected get owner(): Identity; initFromFlowNodeInstance(fni: FlowNodeInstance): void; execute(startToken: Record<string, any> | Array<any>, executionCanceledCallback?: Function): Promise<Record<string, any> | Array<any>>; resume(flowNodeInstanceForHandler: FlowNodeInstance, resumptionCanceledCallback?: Function): Promise<Record<string, any> | Array<any>>; private handleActivityError; endWithError(error: BaseError, force?: boolean): Promise<void>; terminate(): Promise<void>; cancel(): Promise<void>; persistOnEnter(): Promise<void>; protected persistOnSuspend<TFlowNodeData extends FlowNodeInstanceTypeSpecificData>(updatedTokenPayload?: any, typeData?: TFlowNodeData): Promise<void>; protected persistOnExit<TFlowNodeData extends FlowNodeInstanceTypeSpecificData>(dataObjectValues: Record<string, any>, typeData?: TFlowNodeData): Promise<void>; protected persistOnError<TFlowNodeData extends FlowNodeInstanceTypeSpecificData>(error: BaseError, typeData?: TFlowNodeData, force?: boolean): Promise<void>; protected persistOnCancel<TFlowNodeData extends FlowNodeInstanceTypeSpecificData>(typeData?: TFlowNodeData): Promise<void>; protected persistOnTerminate<TFlowNodeData extends FlowNodeInstanceTypeSpecificData>(typeData?: TFlowNodeData): Promise<void>; protected beforeExecute(): Promise<void>; protected afterExecute(): Promise<void>; protected runHandler(_executionCanceledCallback?: Function): Promise<void>; private resumeFromState; /** * Hook for resuming a Flow Node Handler that is currently in a suspended state. */ protected resumeAfterSuspend(flowNodeInstance: FlowNodeInstance, resumptionCanceledCallback?: Function): Promise<void>; protected finishActivity(): Promise<void>; protected ensureHasClaim(): void; protected executeRuntimeExpressionOnInstanceContext<TResult>(config: FlowNodeExpressionConfig): Promise<TResult>; protected postEventToEventMiddlewares(payload: InternalEngineEvent): Promise<void>; private subscribeToMiddlewareEvent; /** * Executes all expressions for updating some meta property on the containing ProcessInstance. * For example "engine.setProcessInstanceMetadata.propertyName" or "engine.setCorrelationMetadata.propertyName". * * These expressions can be found within the FlowNode's extension properties. * * @async */ private executeRuntimePropertyExpressionsOnFlowNode; private setCorrelationMetadata; private setProcessInstanceMetadata; private logFlowNodePersistenceEvent; private publishActivityReachedNotification; private publishActivityFinishedNotification; private publishActivityCanceledNotification; private publishProcessInstanceMetadataChangedNotification; private publishCorrelationMetadataChangedNotification; }