import { BpmnType, EventType, GenericFlowNodeInstanceQuery, UserTaskConfig, UserTaskConfigModel } from '@5minds/processcube_engine_sdk'; import { DataObjectValueCollection } from './DataObjectInstance'; export type PersistOnStateChangeAdditionalData = { finishedAt?: Date; typeData?: FlowNodeInstanceTypeSpecificData; tokenPayload?: any; error?: Error; dataObjectValues?: DataObjectValueCollection; triggeredByFlowNodeInstanceId?: string; }; export type PersistDataObjectData = { processDefinitionId: string; processModelId: string; processInstanceId: string; flowNodeInstanceId?: string; dataObjectValues?: DataObjectValueCollection; }; /** * For internal use only - A generic FlowNode Instance query, coupled with the ID of the requesting user. * Used for authorization checks. */ export type InternalFlowNodeInstanceQuery = GenericFlowNodeInstanceQuery & { requestingUserEmail?: string; requestingUserId?: string; requestingUserName?: string; }; export type CreateFlowNodeInstanceRequest = { flowNodeInstanceId: string; flowNodeId: string; flowNodeName?: string; flowNodeLane?: string; flowNodeType: BpmnType; eventType?: EventType; previousFlowNodeInstanceId?: string; parentProcessInstanceId?: string; processDefinitionId: string; processModelId: string; processInstanceId: string; correlationId: string; currentToken: TTokenPayload; multiInstanceMetadataId?: string; ownerId: string; flowNodeInstanceTypeData?: FlowNodeInstanceTypeSpecificData; triggeredByFlowNodeInstanceId?: string; }; export type FlowNodeInstanceTypeSpecificData = CallActivityInstanceData | CatchEventInstanceData | ThrowEventInstanceData | ManualTaskInstanceData | UserTaskInstanceData | ReceiveTaskInstanceData | SendTaskInstanceData | ExternalServiceTaskInstanceData | HttpServiceTaskInstanceData | SubprocessInstanceData; export type CallActivityInstanceData = { type: FlowNodeInstanceDataTypes.callActivity; /** * The ID of the Process Model that the Call Activity should start. */ targetProcessModelId: string; /** * The ID of the Start Event at which the Call Activity should start the target process. */ startEventId: string; /** * The ID of the Process Instance that the Call Activity started. */ childProcessInstanceId: string; }; export type SubprocessInstanceData = { type: FlowNodeInstanceDataTypes.subprocess; /** * The ID of the Process Instance that the Subprocess started. */ childProcessInstanceId: string; /** * The ID of the Start Event at which the Subprocess started. */ startEventId: string; }; export type CatchEventInstanceData = { type: FlowNodeInstanceDataTypes.catchEvent; eventName: string; /** * If set, the event will only fire, if the received event is matching the specific triggerValue. * Used by Message- and Signal- Events only. */ triggerValue?: string; /** * The ID of the FlowNodeInstance that triggered the Catch Event. */ triggeredByFlowNodeInstanceId?: string; }; export type ThrowEventInstanceData = { type: FlowNodeInstanceDataTypes.throwEvent; eventName: string; /** * If set, any process triggered by this event will use the following correlation id. * Used by Message- and Signal- Events only. */ customCorrelationId?: string; }; export type ManualTaskInstanceData = { type: FlowNodeInstanceDataTypes.manualTask; /** * The ID of the User that finished (aka 'resumed') the Manual Task. */ finishedByUserId?: string; }; export type UserTaskInstanceData = { type: FlowNodeInstanceDataTypes.userTask; /** * The ID of the User that reserved the User Task. */ actualOwnerId?: string; /** * The ID of the User that finished (aka 'resumed') the User Task. */ finishedByUserId?: string; userTaskConfig?: UserTaskConfig; userTaskConfigModel?: UserTaskConfigModel; assignedUserIds?: Array; }; export type ReceiveTaskInstanceData = { type: FlowNodeInstanceDataTypes.receiveTask; /** * The ID of the Send Task that triggered the Receive Task. */ triggeredByFlowNodeInstanceId?: string; }; export type SendTaskInstanceData = { type: FlowNodeInstanceDataTypes.sendTask; /** * The ID of the Send Task that triggered the Receive Task. */ triggeredByFlowNodeInstanceId?: string; }; export type ExternalServiceTaskInstanceData = { type: FlowNodeInstanceDataTypes.externalServiceTask; externalTaskId: string; topic: string; isSingleTry: boolean; state?: string; }; export type HttpServiceTaskInstanceData = { type: FlowNodeInstanceDataTypes.httpServiceTask; method: string; url: string; body?: any; headers?: Array>; }; export declare enum FlowNodeInstanceDataTypes { httpServiceTask = "HttpServiceTask", externalServiceTask = "ExternalServiceTask", callActivity = "CallActivity", catchEvent = "CatchEvent", throwEvent = "ThrowEvent", manualTask = "ManualTask", userTask = "UserTask", receiveTask = "ReceiveTask", sendTask = "SendTask", subprocess = "Subprocess" }