import { Container } from 'inversify'; import { BaseError, EngineEventType, FlowNodeInstance, FlowNodeInstanceResult, LogLevel, Logger, Model, ProcessInstanceState, ProcessModelFacade, RuntimeExpressionParameters, Subscription } from '@5minds/processcube_engine_sdk'; import { InternalIdentity as Identity, ProcessInstanceInternal as ProcessInstanceFromRepo, ProcessStartOptionsInternal } from '../Contracts/InternalDataModels/index'; import { EventMessageInternal, OnKillProcessCallback, OnProcessEndedCallback, OnProcessErrorCallback, OnProcessKilledCallback, OnProcessOwnerChangedCallback, OnProcessStartedCallback } from '../Contracts/InternalMessages/index'; import { CorrelationDatabaseAdapter, FlowNodeInstanceDatabaseAdapter, ProcessInstanceDatabaseAdapter } from '../Tools/DatabaseAdaptersSequelize'; import { EventMiddlewareHandler } from '../Tools/EventMiddlewareHandler'; import { IamService, IdentityService } from '../Tools/Iam/index'; import { ProcessDefinitionMediator } from '../Tools/ProcessDefinitionMediator'; import { DataObjectFacade } from './Facades/DataObjectFacade'; import { FlowNodeHandlerFactory } from './FlowNodeHandler/FlowNodeHandlerFactory'; import { ProcessTokenService, SubProcessInstance } from './index'; export type ProcessInstanceFactory = (args: { parentProcessInstance?: ProcessInstance; processInstanceId?: string; }) => ProcessInstance; export type FlowNodeExpressionConfig = { expression: string; dataContract?: string; currentToken: object; allowNonObjectResults: boolean; previousFlowNode?: Model.Base.FlowNode; currentFlowNode?: Model.Base.FlowNode; dataObjectId?: string; additionalProperties?: { [key: string]: any; }; }; type FlowNodeInstanceResumingGroup = { nonActivityFlowNodeInstances: Array; defaultActivityFlowNodeInstances: Array; multiInstanceActivityFlowNodeInstances: { [activityExecutionId: string]: Array; }; }; type FlowNodeExpressionBuilderConfig = Omit; export declare class ProcessInstance { protected readonly container: Container; protected readonly correlationDatabaseAdapter: CorrelationDatabaseAdapter; protected readonly dataObjectFacade: DataObjectFacade; protected readonly eventMiddlewareHandler: EventMiddlewareHandler; protected readonly flowNodeHandlerFactory: FlowNodeHandlerFactory; protected readonly flowNodeInstanceDatabaseAdapter: FlowNodeInstanceDatabaseAdapter; protected readonly iamService: IamService; protected readonly identityService: IdentityService; protected readonly processInstanceDatabaseAdapter: ProcessInstanceDatabaseAdapter; protected readonly processDefinitionMediator: ProcessDefinitionMediator; protected readonly processTokenService: ProcessTokenService; protected processDefinitionId: string; protected processDefinitionHash: string; protected processModelId: string; protected processModelName: string; protected processModelVersion: string; protected correlationId: string; protected parentProcessInstance: ProcessInstance; protected processInstanceId: string; protected state: ProcessInstanceState; protected owner: Identity; protected initialTokenPayload: {}; protected startedByRootAccessToken: boolean; protected correlationMetaData: {}; protected processInstanceMetaData: {}; protected processModelFacade: ProcessModelFacade; protected logger: Logger; private ownerChangedSubscription; private correlationMetadataChangedSubscription; private startedAt; private finishedAt; constructor(container: Container, correlationDatabaseAdapter: CorrelationDatabaseAdapter, dataObjectFacade: DataObjectFacade, eventMiddlewareHandler: EventMiddlewareHandler, flowNodeHandlerFactory: FlowNodeHandlerFactory, flowNodeInstanceDatabaseAdapter: FlowNodeInstanceDatabaseAdapter, identityService: IdentityService, iamService: IamService, processDefinitionMediator: ProcessDefinitionMediator, processInstanceDatabaseAdapter: ProcessInstanceDatabaseAdapter, processTokenService: ProcessTokenService, parentProcessInstance?: ProcessInstance, processInstanceId?: string); getState(): ProcessInstanceState; getProcessInstanceId(): string; getCorrelationId(): string; getDataObjectFacade(): DataObjectFacade; getProcessDefinitionId(): string; getProcessDefinitionHash(): string; getProcessModelId(): string; getProcessModelName(): string; getProcessModelVersion(): string; getParentProcessInstance(): ProcessInstance | undefined; getProcessModelFacade(): ProcessModelFacade; getProcessTokenService(): ProcessTokenService; getOwner(): Identity; getInitialPayload(): Record; getCorrelationMetaData(): Record; getProcessInstanceMetaData(): Record; getStartedByRootAccessToken(): boolean; getStartedAt(): Date; getFinishedAt(): Date; getContainer(): Container; isEmbeddedSubprocess(): boolean; execute(identity: Identity, options: ProcessStartOptionsInternal): Promise; resume(identity: Identity, processInstance: ProcessInstanceFromRepo, flowNodeInstances: Array): Promise; kill(killerIdentity: Identity): void; ensureOwnerHasClaim(claimName: string, claimValue?: string): Promise; setCorrelationMetadataValue(key: string, rawValue: string, flowNode: Model.Base.FlowNode, flowNodeInstanceId: string, currentToken?: object): Promise; setProcessInstanceMetadataValue(key: string, rawValue: string, flowNode: Model.Base.FlowNode, flowNodeInstanceId: string, currentToken?: object): Promise; executeRuntimeExpression(config: FlowNodeExpressionConfig): Promise; onProcessStarted(callback: OnProcessStartedCallback): Subscription; onProcessEnded(callback: OnProcessEndedCallback): Subscription; onProcessEndEventReached(endEventId: string, callback: OnProcessEndedCallback): Subscription; onProcessError(callback: OnProcessErrorCallback): Subscription; onKillProcess(callback: OnKillProcessCallback): Subscription; onProcessKilled(callback: OnProcessKilledCallback): Subscription; onOwnerChanged(callback: OnProcessOwnerChangedCallback): Subscription; createSubProcessInstance(subProcessModel: Model.Activities.SubProcess, currentTokenPayload: TPayload, childProcessInstanceIdToUse?: string): SubProcessInstance; buildRuntimeExpressionDataForFlowNodeInstance(config: FlowNodeExpressionBuilderConfig): RuntimeExpressionParameters; protected configure(identity: Identity, options: ProcessStartOptionsInternal, processInstanceData?: ProcessInstanceFromRepo): Promise; protected save(options: ProcessStartOptionsInternal): Promise; protected executeProcess(options: ProcessStartOptionsInternal): Promise; protected resumeProcess(flowNodeInstances: Array, flowNodeInstancesToResume?: Array): Promise; protected resumeProcessFromStart(allFlowNodeInstances: Array): Promise; protected resumeProcessAtExitPoints(allFlowNodeInstances: Array, flowNodeInstancesToResume: Array): Promise; protected buildResumptionPromises(allFlowNodeInstances: Array, flowNodeInstancesToResume: Array): Promise; protected finish(): Promise; protected finishWithError(error: BaseError): Promise; protected cleanup(): void; protected terminateSubprocesses(): Promise; protected changeOwner(newOwner: Identity, eventId: string): void; protected updateCorrelationMetadata(newMetadata: Record): void; protected sendProcessStartingNotification(): void; protected sendProcessResumedNotification(): void; protected sendProcessOwnerChangedNotification(): void; protected sendFinishedNotification(resultToken: FlowNodeInstanceResult, finalFlowNode: Model.Base.FlowNode): void; protected sendErrorNotification(error: Error): void; protected sendTerminationNotification(error: BaseError): void; protected logProcessStarting(payload?: TPayload): void; protected logProcessStarted(payload?: TPayload): void; protected logProcessResumed(payload?: TPayload): void; protected logProcessFinished(payload?: TPayload): void; protected logProcessError(error: Error): void; protected logProcessTerminated(payload?: TPayload): void; protected writeLog(event: EngineEventType, logLevel: LogLevel, payload?: TPayload): void; private checkForFlowNodeInstancesWithMultipleSuccessors; protected getFlowNodeInstancesToResume(allFlowNodeInstances: Array): Array; private retrieveCorrelationMetadata; private getNotificationPayload; private getEventType; protected groupFlowNodeInstancesByResumingStrategy(flowNodeInstancesToResume: Array): FlowNodeInstanceResumingGroup; private isActivity; private seedDataObjectsWithIntialValues; } export {};