UNPKG

@5minds/processcube_engine

Version:

The ProcessCube Engine. Stores and executes BPMNs.

74 lines 4.2 kB
"use strict"; var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; return c > 3 && r && Object.defineProperty(target, key, r), r; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.UserTaskInstanceDatabaseAdapter = void 0; const inversify_1 = require("inversify"); const processcube_engine_sdk_1 = require("@5minds/processcube_engine_sdk"); const BaseDatabaseAdapter_1 = require("./BaseDatabaseAdapter"); const SequelizeConnectionManager_1 = require("./Lib/SequelizeConnectionManager"); const index_1 = require("./Models/index"); let UserTaskInstanceDatabaseAdapter = class UserTaskInstanceDatabaseAdapter extends BaseDatabaseAdapter_1.DatabaseAdapter { async initialize() { await super.initialize('database_adapter:user_task_instances'); } async reserveUserTaskInstance(identity, flowNodeInstanceId, actualOwnerId) { const flowNodeInstance = await (0, SequelizeConnectionManager_1.executeWithRetry)(async () => index_1.FlowNodeInstanceModel.findOne({ where: { flowNodeInstanceId: flowNodeInstanceId, }, }), `Find Flow Node Instance '${flowNodeInstanceId}'`); if (!flowNodeInstance) { throw new processcube_engine_sdk_1.NotFoundError(`UserTask instance with ID \`${flowNodeInstanceId}\` not found!`); } const userTaskInstance = await (0, SequelizeConnectionManager_1.executeWithRetry)(async () => index_1.UserTaskMetaInfoModel.findOne({ where: { flowNodeInstanceId: flowNodeInstanceId, }, }), `Find UserTask Instance Meta Info '${flowNodeInstanceId}'`); if (!userTaskInstance) { await (0, SequelizeConnectionManager_1.executeWithRetry)(async () => { await index_1.UserTaskMetaInfoModel.create({ actualOwnerId: actualOwnerId, flowNodeInstanceId: flowNodeInstanceId, }); }, `reserve user task instance '${flowNodeInstanceId}'`); } else { userTaskInstance.actualOwnerId = actualOwnerId; await (0, SequelizeConnectionManager_1.executeWithRetry)(async () => { await userTaskInstance.save(); }, `reserve user task instance '${flowNodeInstanceId}'`); } } async cancelUserTaskInstanceReservation(identity, flowNodeInstanceId) { const flowNodeInstance = await (0, SequelizeConnectionManager_1.executeWithRetry)(async () => index_1.FlowNodeInstanceModel.findOne({ where: { flowNodeInstanceId: flowNodeInstanceId, }, }), `Find Flow Node Instance '${flowNodeInstanceId}'`); if (!flowNodeInstance) { throw new processcube_engine_sdk_1.NotFoundError(`UserTask instance with ID \`${flowNodeInstanceId}\` not found!`); } const userTaskInstance = await (0, SequelizeConnectionManager_1.executeWithRetry)(async () => index_1.UserTaskMetaInfoModel.findOne({ where: { flowNodeInstanceId: flowNodeInstanceId, }, }), `Find UserTask Instance Meta Info '${flowNodeInstanceId}'`); if (userTaskInstance) { userTaskInstance.actualOwnerId = null; } await (0, SequelizeConnectionManager_1.executeWithRetry)(async () => { await userTaskInstance.save(); }, `cancel user task instance '${flowNodeInstanceId}'`); } }; exports.UserTaskInstanceDatabaseAdapter = UserTaskInstanceDatabaseAdapter; exports.UserTaskInstanceDatabaseAdapter = UserTaskInstanceDatabaseAdapter = __decorate([ (0, inversify_1.injectable)() ], UserTaskInstanceDatabaseAdapter); //# sourceMappingURL=UserTaskInstanceAdapter.js.map