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 { protected readonly flowNodeInstanceDatabaseAdapter: FlowNodeInstanceDatabaseAdapter; protected readonly eventMiddlewareHandler: EventMiddlewareHandler; protected instanceContext: { [key: string]: any; }; protected readonly activityHandler: ActivityHandler; protected readonly processInstance: ProcessInstance; protected triggeredByFlowNodeInstanceId: string; protected typeData: FlowNodeInstanceTypeSpecificData; protected logger: Logger; protected loggingMetaData: any; protected loggerNamespace: string; protected currentToken: Record | Array; protected previousFlowNodeInstanceId: string; private _state; private _flowNodeInstanceId; private startedAt; private finishedAt; private tokenChangedSubscription; constructor(eventMiddlewareHandler: EventMiddlewareHandler, flowNodeInstanceDatabaseAdapter: FlowNodeInstanceDatabaseAdapter, activityHandler: ActivityHandler, 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 | Array, executionCanceledCallback?: Function): Promise | Array>; resume(flowNodeInstanceForHandler: FlowNodeInstance, resumptionCanceledCallback?: Function): Promise | Array>; private handleActivityError; endWithError(error: BaseError, force?: boolean): Promise; terminate(): Promise; cancel(): Promise; persistOnEnter(): Promise; protected persistOnSuspend(updatedTokenPayload?: any, typeData?: TFlowNodeData): Promise; protected persistOnExit(dataObjectValues: Record, typeData?: TFlowNodeData): Promise; protected persistOnError(error: BaseError, typeData?: TFlowNodeData, force?: boolean): Promise; protected persistOnCancel(typeData?: TFlowNodeData): Promise; protected persistOnTerminate(typeData?: TFlowNodeData): Promise; protected beforeExecute(): Promise; protected afterExecute(): Promise; protected runHandler(_executionCanceledCallback?: Function): Promise; private resumeFromState; /** * Hook for resuming a Flow Node Handler that is currently in a suspended state. */ protected resumeAfterSuspend(flowNodeInstance: FlowNodeInstance, resumptionCanceledCallback?: Function): Promise; protected finishActivity(): Promise; protected ensureHasClaim(): Promise; protected executeRuntimeExpressionOnInstanceContext(config: FlowNodeExpressionConfig): Promise; protected postEventToEventMiddlewares(payload: InternalEngineEvent): Promise; 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; }