UNPKG

@5minds/processcube_engine

Version:

The ProcessCube Engine. Stores and executes BPMNs.

144 lines (143 loc) • 9.65 kB
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 } 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<FlowNodeInstance>; defaultActivityFlowNodeInstances: Array<FlowNodeInstance>; multiInstanceActivityFlowNodeInstances: { [activityExecutionId: string]: Array<FlowNodeInstance>; }; }; type FlowNodeExpressionBuilderConfig = Omit<FlowNodeExpressionConfig, 'expression'>; 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 embeddedProcessModelId?: string; 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; getEmbeddedProcessModelId(): string; getProcessModelName(): string; getProcessModelVersion(): string; getParentProcessInstance(): ProcessInstance | undefined; getProcessModelFacade(): ProcessModelFacade; getProcessTokenService(): ProcessTokenService; getOwner(): Identity; getInitialPayload(): Record<string, any>; getCorrelationMetaData(): Record<string, string>; getProcessInstanceMetaData(): Record<string, string>; getStartedByRootAccessToken(): boolean; getStartedAt(): Date; getFinishedAt(): Date; getContainer(): Container; isEmbeddedSubprocess(): boolean; execute<TToken extends object>(identity: Identity, options: ProcessStartOptionsInternal<TToken>): Promise<EventMessageInternal>; resume(identity: Identity, processInstance: ProcessInstanceFromRepo, flowNodeInstances: Array<FlowNodeInstance>, parentDataObjectFacade?: DataObjectFacade, parentProcessModelFacade?: ProcessModelFacade): Promise<EventMessageInternal>; kill(killerIdentity: Identity): void; ensureOwnerHasClaim(claimName: string, claimValue?: string): void; setCorrelationMetadataValue(key: string, rawValue: string, flowNode: Model.Base.FlowNode, flowNodeInstanceId: string, currentToken?: object): Promise<string>; setProcessInstanceMetadataValue(key: string, rawValue: string, flowNode: Model.Base.FlowNode, flowNodeInstanceId: string, currentToken?: object): Promise<string>; executeRuntimeExpression<TExpectedResult>(config: FlowNodeExpressionConfig): Promise<TExpectedResult>; onProcessStarted(callback: OnProcessStartedCallback): Subscription; onProcessEnded(callback: OnProcessEndedCallback): Subscription; onProcessEndEventReached(endEventId: string, callback: OnProcessEndedCallback): Subscription; onTerminateEndEventReached(callback: OnProcessErrorCallback): Subscription; onProcessError(callback: OnProcessErrorCallback): Subscription; onKillProcess(callback: OnKillProcessCallback): Subscription; onProcessKilled(callback: OnProcessKilledCallback): Subscription; onOwnerChanged(callback: OnProcessOwnerChangedCallback): Subscription; buildRuntimeExpressionDataForFlowNodeInstance(config: FlowNodeExpressionBuilderConfig): RuntimeExpressionParameters; protected configure<TToken extends object>(identity: Identity, options: ProcessStartOptionsInternal<TToken>, processInstanceData?: ProcessInstanceFromRepo): Promise<void>; protected save(options: ProcessStartOptionsInternal<object>): Promise<void>; protected executeProcess<TToken extends object>(options: ProcessStartOptionsInternal<TToken>): Promise<FlowNodeInstanceResult>; protected resumeProcess(flowNodeInstances: Array<FlowNodeInstance>, flowNodeInstancesToResume?: Array<FlowNodeInstance>): Promise<FlowNodeInstanceResult>; protected resumeProcessFromStart(allFlowNodeInstances: Array<FlowNodeInstance>): Promise<void>; protected resumeProcessAtExitPoints(allFlowNodeInstances: Array<FlowNodeInstance>, flowNodeInstancesToResume: Array<FlowNodeInstance>): Promise<void>; protected buildResumptionPromises(allFlowNodeInstances: Array<FlowNodeInstance>, flowNodeInstancesToResume: Array<FlowNodeInstance>): Promise<void>; protected finish(): Promise<FlowNodeInstanceResult>; protected finishWithError(error: BaseError): Promise<void>; protected cleanup(): Promise<void>; protected terminateSubprocesses(): Promise<void>; protected changeOwner(newOwner: Identity, eventId: string): void; protected updateCorrelationMetadata(newMetadata: Record<string, any>): void; protected sendProcessStartingNotification(): void; protected sendProcessResumedNotification(): void; protected sendProcessOwnerChangedNotification(): void; protected sendFinishedNotification(resultToken: FlowNodeInstanceResult, finalFlowNode: Model.Base.FlowNode): void; protected sendErrorNotification(error: BaseError): void; protected sendTerminationNotification(error: BaseError): void; protected logProcessStarting<TPayload extends object>(payload?: TPayload): void; protected logProcessStarted<TPayload extends object>(payload?: TPayload): void; protected logProcessResumed<TPayload extends object>(payload?: TPayload): void; protected logProcessFinished<TPayload extends object>(payload?: TPayload): void; protected logProcessError(error: Error): void; protected logProcessTerminated<TPayload extends object>(payload?: TPayload): void; protected writeLog<TPayload extends object>(event: EngineEventType, logLevel: LogLevel, payload?: TPayload): void; private checkForFlowNodeInstancesWithMultipleSuccessors; protected getFlowNodeInstancesToResume(allFlowNodeInstances: Array<FlowNodeInstance>): Array<FlowNodeInstance>; private retrieveCorrelationMetadata; private getNotificationPayload; private getEventType; protected groupFlowNodeInstancesByResumingStrategy(flowNodeInstancesToResume: Array<FlowNodeInstance>): FlowNodeInstanceResumingGroup; private isActivity; private seedDataObjectsWithIntialValues; } export {};