@5minds/processcube_engine
Version:
The ProcessCube Engine. Stores and executes BPMNs.
91 lines (90 loc) • 4.61 kB
TypeScript
import { BaseElementViewModel, FlowNodeInstance, Model } from '@5minds/processcube_engine_sdk';
import { CreateFlowNodeInstanceRequest, DataObjectValueCollection } from '../../../Contracts';
import { FlowNodeInstanceDatabaseAdapter } from '../../../Tools/DatabaseAdaptersSequelize/FlowNodeInstanceAdapter';
import { Subscription } from '../../../Tools/EventAggregator';
import { ProcessInstance } from '../../ProcessInstance';
import { FlowNodeHandlerFactory } from '../FlowNodeHandlerFactory';
/**
* This is the base handler for all Activities and Tasks.
*/
export declare class ActivityHandler<TActivity extends Model.Activities.Activity> {
private readonly flowNodeInstanceDatabaseAdapter;
private readonly flowNodeHandlerFactory;
private attachedBoundaryEventHandlers;
private readonly processInstance;
private readonly _flowNode;
private _previousFlowNodeInstanceId;
private _multiInstanceMetadataId;
private startToken;
private endToken;
protected batchPersistOnEnterRequests: CreateFlowNodeInstanceRequest<Record<string, any>>[];
protected batchPersistOnEnterResolves: Function[];
private processEventSubscriptions;
private allBoundaryEventExecutionPromises;
private errorBoundaryEventExecutionPromises;
private activityExecutionStrategy;
private logger;
private loggingMetaData;
private loggerNamespace;
private abortController;
private waitForResumption;
constructor(flowNodeInstanceDatabaseAdapter: FlowNodeInstanceDatabaseAdapter, flowNodeHandlerFactory: FlowNodeHandlerFactory, processInstance: ProcessInstance, flowNode: TActivity);
get viewModel(): BaseElementViewModel;
get flowNode(): TActivity;
get multiInstanceMetadataId(): string;
get previousFlowNodeInstanceId(): string;
private get flowNodeInstanceId();
get abortSignal(): AbortSignal;
getInstanceId(): string;
abort(): Promise<void>;
cancel(): Promise<void>;
execute(previousFlowNodeInstanceId?: string, previousResult?: any, executionCanceledCallback?: Function): Promise<void>;
resume(flowNodeInstancesForHandler: FlowNodeInstance | Array<FlowNodeInstance>, allFlowNodeInstances: Array<FlowNodeInstance>, resumptionCanceledCallback?: Function): Promise<void>;
isMultiInstanceType(): boolean;
batchPersistOnEnterRequest(request: CreateFlowNodeInstanceRequest<Record<string, any>>, limit: number, resolve: Function): Promise<void>;
runOutgoingDataObjectExpressions(token: Record<string, any> | Array<any>): Promise<DataObjectValueCollection>;
private beforeExecution;
private runExecution;
private afterExecution;
private beforeResuming;
private loadMultiInstanceDataFromResumableFlowNodeInstances;
private runResuming;
private getNextFlowNode;
private subscribeToProcessInstanceEvents;
private subscribeToProcessKilledEvent;
private subscribeToProcessError;
protected subscribeToTerminateEndEventReached(): Subscription;
private disposeEventSubscriptions;
private handleSubsequentError;
private handleBeforeExecutionError;
private handleExecutionError;
private handleAfterExecutionError;
private runErrorBoundaryEventsForError;
private isAbortedOrTerminatedError;
private saveMultiInstanceData;
private persistDataObjectValues;
private handleNextFlowNode;
private findNextFlowNodeInstance;
private parseDataObjectExpression;
private runPreScript;
runPostScript(token: Record<string, any> | Array<Record<string, any>>): Promise<Record<string, any> | Array<Record<string, any>>>;
private executeByStrategy;
private attachBoundaryEvents;
private createAndRunBoundaryEventHandler;
/**
* Used for interactive tasks, to prevent interrupting a task, which has already produced a result and is effectively finished.
* ErrorBoundaryEvents must be kept alive, until "persistOnExit" has completed, so that errors in post scripts, or data associations can be handled.
* All other Boundary Event Types must be canceled before that. See also https://github.com/atlas-engine/Engine/issues/1223
*/
private detachNonErrorBoundaryEvents;
private detachAllBoundaryEvents;
private cancelExecution;
private throwMultipleSubsequentFlowNodesError;
private ensureIsNotMultiInstanceAtEventBasedGateway;
private ensureMultiInstanceInputIsValid;
private getActivityExecutionStrategy;
private parseAdditionalActivityProperties;
private parseTimeoutBetweenLoopIterations;
private parseMaxLoopIterations;
private parseNumberValueFromExpression;
}