UNPKG

@5minds/processcube_engine

Version:

The ProcessCube Engine. Stores and executes BPMNs.

159 lines • 10.5 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.createFlowNodeInstanceFromModel = createFlowNodeInstanceFromModel; const dayjs_1 = __importDefault(require("dayjs")); const processcube_engine_sdk_1 = require("@5minds/processcube_engine_sdk"); const Compression_1 = require("./Compression"); async function createFlowNodeInstanceFromModel(dataModel) { if (!dataModel) { return; } const runtimeFlowNodeInstance = await createTypedFlowNodeInstance(dataModel); runtimeFlowNodeInstance.multiInstanceMetadataId = dataModel.multiInstanceMetadataId; runtimeFlowNodeInstance.multiInstanceStartToken = await deserializeTokenPayload(dataModel.multiInstanceMetadata?.startToken); runtimeFlowNodeInstance.multiInstanceEndToken = await deserializeTokenPayload(dataModel.multiInstanceMetadata?.endToken); runtimeFlowNodeInstance.flowNodeInstanceId = dataModel.flowNodeInstanceId; runtimeFlowNodeInstance.flowNodeId = dataModel.flowNodeId; runtimeFlowNodeInstance.flowNodeName = dataModel.flowNodeName; runtimeFlowNodeInstance.flowNodeLane = dataModel.flowNodeLane; runtimeFlowNodeInstance.flowNodeType = dataModel.flowNodeType; runtimeFlowNodeInstance.eventType = dataModel.eventType; runtimeFlowNodeInstance.state = dataModel.state; runtimeFlowNodeInstance.previousFlowNodeInstanceId = dataModel.previousFlowNodeInstanceId; runtimeFlowNodeInstance.parentProcessInstanceId = dataModel.parentProcessInstanceId; runtimeFlowNodeInstance.processDefinitionId = dataModel.processDefinitionId; runtimeFlowNodeInstance.processModelId = dataModel.processModelId; runtimeFlowNodeInstance.embeddedProcessModelId = dataModel.embeddedProcessModelId; runtimeFlowNodeInstance.processModelName = dataModel.processInstance?.processModelName; runtimeFlowNodeInstance.processInstanceId = dataModel.processInstanceId; runtimeFlowNodeInstance.correlationId = dataModel.correlationId; runtimeFlowNodeInstance.ownerId = dataModel.ownerId; runtimeFlowNodeInstance.startToken = await deserializeTokenPayload(dataModel.startToken, dataModel.startTokenCompressed); runtimeFlowNodeInstance.endToken = await deserializeTokenPayload(dataModel.endToken, dataModel.endTokenCompressed); runtimeFlowNodeInstance.error = (0, processcube_engine_sdk_1.deserializeJson)(dataModel.error); runtimeFlowNodeInstance.startedAt = dataModel.createdAt; runtimeFlowNodeInstance.finishedAt = dataModel.finishedAt; runtimeFlowNodeInstance.triggeredByFlowNodeInstance = dataModel.triggeredByFlowNodeInstance ? await createFlowNodeInstanceFromModel(dataModel.triggeredByFlowNodeInstance) : undefined; return runtimeFlowNodeInstance; } async function createTypedFlowNodeInstance(dataModel) { switch (dataModel.flowNodeType) { case processcube_engine_sdk_1.BpmnType.callActivity: const callActivityInstance = { childProcessInstanceId: dataModel.callActivityInstanceMetaInfo?.childProcessInstanceId, targetProcessModelId: dataModel.callActivityInstanceMetaInfo?.targetProcessModelId, startEventId: dataModel.callActivityInstanceMetaInfo?.startEventId, }; return callActivityInstance; case processcube_engine_sdk_1.BpmnType.subProcess: const subprocessInstance = { childProcessInstanceId: dataModel.subprocessInstanceMetaInfo?.childProcessInstanceId, startEventId: dataModel.subprocessInstanceMetaInfo?.startEventId, }; return subprocessInstance; case processcube_engine_sdk_1.BpmnType.manualTask: const manualTaskInstance = { finishedByUserId: dataModel.manualTaskMetaInfo?.finishedByUserId, }; return manualTaskInstance; case processcube_engine_sdk_1.BpmnType.businessRuleTask: const businessRuleTaskInstance = {}; if (dataModel.externalTaskData) { const lockExpirationTime = new Date(dataModel.externalTaskData.lockExpirationTime); const locKExpirationTimeIsNull = (0, dayjs_1.default)(lockExpirationTime).unix() != (0, dayjs_1.default)(new Date(null)).unix(); businessRuleTaskInstance.businessRuleTaskData = { externalTaskId: dataModel.externalTaskData.externalTaskId, workerId: dataModel.externalTaskData.workerId, topic: dataModel.externalTaskData.topic, isSingleTry: dataModel.externalTaskData.isSingleTry ?? false, payload: await deserializeTokenPayload(dataModel.startToken, dataModel.startTokenCompressed), state: dataModel.state === processcube_engine_sdk_1.FlowNodeInstanceState.suspended ? processcube_engine_sdk_1.ExternalTaskState.pending : processcube_engine_sdk_1.ExternalTaskState.finished, lockExpirationTime: locKExpirationTimeIsNull ? lockExpirationTime : undefined, result: dataModel.state === processcube_engine_sdk_1.FlowNodeInstanceState.finished ? await deserializeTokenPayload(dataModel.endToken, dataModel.endTokenCompressed) : undefined, error: dataModel.error ? (0, processcube_engine_sdk_1.deserializeJson)(dataModel.error) : undefined, finishedAt: dataModel.externalTaskData.finishedAt ? new Date(dataModel.externalTaskData.finishedAt) : undefined, }; } return businessRuleTaskInstance; case processcube_engine_sdk_1.BpmnType.serviceTask: const serviceTaskInstance = {}; if (dataModel.externalTaskData) { const lockExpirationTime = new Date(dataModel.externalTaskData.lockExpirationTime); const locKExpirationTimeIsNull = (0, dayjs_1.default)(lockExpirationTime).unix() != (0, dayjs_1.default)(new Date(null)).unix(); serviceTaskInstance.externalTaskData = { externalTaskId: dataModel.externalTaskData.externalTaskId, workerId: dataModel.externalTaskData.workerId, topic: dataModel.externalTaskData.topic, isSingleTry: dataModel.externalTaskData.isSingleTry ?? false, payload: await deserializeTokenPayload(dataModel.startToken, dataModel.startTokenCompressed), state: dataModel.state === processcube_engine_sdk_1.FlowNodeInstanceState.suspended ? processcube_engine_sdk_1.ExternalTaskState.pending : processcube_engine_sdk_1.ExternalTaskState.finished, lockExpirationTime: locKExpirationTimeIsNull ? lockExpirationTime : undefined, result: dataModel.state === processcube_engine_sdk_1.FlowNodeInstanceState.finished ? await deserializeTokenPayload(dataModel.endToken, dataModel.endTokenCompressed) : undefined, error: dataModel.error ? (0, processcube_engine_sdk_1.deserializeJson)(dataModel.error) : undefined, finishedAt: dataModel.externalTaskData.finishedAt ? new Date(dataModel.externalTaskData.finishedAt) : undefined, }; } if (dataModel.httpServiceTaskData) { serviceTaskInstance.httpServiceTaskData = { method: dataModel.httpServiceTaskData.method, url: dataModel.httpServiceTaskData.url, body: (0, processcube_engine_sdk_1.deserializeJson)(dataModel.httpServiceTaskData.body) ?? undefined, headers: (0, processcube_engine_sdk_1.deserializeJson)(dataModel.httpServiceTaskData.headers) ?? undefined, }; } return serviceTaskInstance; case processcube_engine_sdk_1.BpmnType.userTask: const userTaskInstance = { actualOwnerId: dataModel.userTaskMetaInfo?.actualOwnerId, finishedByUserId: dataModel.userTaskMetaInfo?.finishedByUserId, userTaskConfig: (0, processcube_engine_sdk_1.deserializeJson)(dataModel.userTaskMetaInfo?.userTaskConfig ?? '{}'), userTaskConfigModel: (0, processcube_engine_sdk_1.deserializeJson)(dataModel.userTaskMetaInfo?.userTaskConfigModel ?? '{}'), assignedUserIds: (0, processcube_engine_sdk_1.deserializeJson)(dataModel.userTaskMetaInfo?.assignedUserIds), }; return userTaskInstance; case processcube_engine_sdk_1.BpmnType.startEvent: case processcube_engine_sdk_1.BpmnType.intermediateCatchEvent: case processcube_engine_sdk_1.BpmnType.boundaryEvent: const catchingEventInstance = { eventName: dataModel.catchEventInstanceMetaInfo?.eventName, triggerValue: dataModel.catchEventInstanceMetaInfo?.triggerValue, }; return catchingEventInstance; case processcube_engine_sdk_1.BpmnType.intermediateThrowEvent: case processcube_engine_sdk_1.BpmnType.endEvent: const throwingEventInstance = { eventName: dataModel.throwEventInstanceMetaInfo?.eventName, customCorrelationId: dataModel.throwEventInstanceMetaInfo?.customCorrelationId, }; return throwingEventInstance; case processcube_engine_sdk_1.BpmnType.receiveTask: const receiveTaskInstance = { messageName: dataModel.catchEventInstanceMetaInfo?.eventName, triggerValue: dataModel.catchEventInstanceMetaInfo?.triggerValue, }; return receiveTaskInstance; case processcube_engine_sdk_1.BpmnType.sendTask: const sendTaskInstance = { messageName: dataModel.throwEventInstanceMetaInfo?.eventName, customCorrelationId: dataModel.throwEventInstanceMetaInfo?.customCorrelationId, }; return sendTaskInstance; default: return {}; } } async function deserializeTokenPayload(uncompressedToken, compressedToken) { if (uncompressedToken) { return (0, processcube_engine_sdk_1.deserializeJson)(uncompressedToken); } if (compressedToken) { return (0, Compression_1.decompressToken)(compressedToken); } return {}; } //# sourceMappingURL=FlowNodeInstanceFactory.js.map