import { BaseElementViewModel, FlowNodeInstance, Model } from '@5minds/processcube_engine_sdk'; import { CreateFlowNodeInstanceRequest, DataObjectValueCollection } from '../../../Contracts'; import { FlowNodeInstanceDatabaseAdapter } from '../../../Tools/DatabaseAdaptersSequelize/FlowNodeInstanceAdapter'; import { ProcessInstance } from '../../ProcessInstance'; import { FlowNodeHandlerFactory } from '../FlowNodeHandlerFactory'; /** * This is the base handler for all Activities and Tasks. */ export declare class ActivityHandler { 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>[]; protected batchPersistOnEnterResolves: Function[]; private terminationSubscription; private processErrorSubscription; 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; cancel(): Promise; execute(previousFlowNodeInstanceId?: string, previousResult?: any, executionCanceledCallback?: Function): Promise; resume(flowNodeInstancesForHandler: FlowNodeInstance | Array, allFlowNodeInstances: Array, resumptionCanceledCallback?: Function): Promise; isMultiInstanceType(): boolean; batchPersistOnEnterRequest(request: CreateFlowNodeInstanceRequest>, limit: number, resolve: Function): Promise; runOutgoingDataObjectExpressions(token: Record | Array): Promise; private beforeExecution; private runExecution; private afterExecution; private beforeResuming; private loadMultiInstanceDataFromResumableFlowNodeInstances; private runResuming; private getNextFlowNode; private subscribeToProcessInstanceEvents; private subscribeToProcessTermination; private subscribeToProcessError; 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 | Array>): Promise | Array>>; 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; }