UNPKG

@5minds/processcube_engine

Version:

The ProcessCube Engine. Stores and executes BPMNs.

114 lines 5.84 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; }; var __metadata = (this && this.__metadata) || function (k, v) { if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); }; var __param = (this && this.__param) || function (paramIndex, decorator) { return function (target, key) { decorator(target, key, paramIndex); } }; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.CronjobApiServiceProxyConfiguration = exports.CronjobApiService = void 0; const inversify_1 = require("inversify"); const processcube_engine_sdk_1 = require("@5minds/processcube_engine_sdk"); const index_1 = require("../../Contracts/index"); const index_2 = require("../../Core/index"); const Tools_1 = require("../../Tools"); const Configurator_1 = __importDefault(require("../../Tools/Configurator")); const index_3 = require("../../Tools/DatabaseAdaptersSequelize/index"); const index_4 = require("../../Tools/Iam/index"); let CronjobApiService = class CronjobApiService { cronjobCoreService; cronjobAdapter; iamService; logger; processInstanceAdapter; config; constructor(cronjobCoreService, cronjobAdapter, iamService, processInstanceAdapter) { this.cronjobCoreService = cronjobCoreService; this.cronjobAdapter = cronjobAdapter; this.iamService = iamService; this.logger = new processcube_engine_sdk_1.Logger('api:cronjob_service'); this.processInstanceAdapter = processInstanceAdapter; this.config = Configurator_1.default.application(); } async query(query, offset = 0, limit = 0, sort, includeCount) { if (!limit || limit <= 0) { limit = this.config.defaultResponseLimit; } const allCronjobs = await this.cronjobAdapter.query(query, offset, limit, sort, includeCount ?? true); const cronjobsWithInstanceCount = await Promise.all(allCronjobs.cronjobs.map(async (cronjob) => { // TODO // A direct join requires a DB relation with a single property, which isn't possible yet, // since cronjobs are uniqely identified by their Process Model ID and Start Event ID. // // Unfortunately, this also means that server side filtering isn't fully supported yet. const processInstanceHistory = await this.processInstanceAdapter.query({ processModelId: cronjob.processModelId, startEventId: cronjob.startEventId, }, undefined, 1, { sortBy: processcube_engine_sdk_1.ProcessInstanceSortableColumns.createdAt, sortDir: 'DESC', }); return { ...cronjob, startedProcessInstances: processInstanceHistory.totalCount, lastStartedProcessInstance: processInstanceHistory.processInstances[0]?.processInstanceId, }; })); return { cronjobs: cronjobsWithInstanceCount, totalCount: allCronjobs.totalCount, }; } async setEnabled(identity, processModelId, startEventId, enabled) { this.ensureHasClaim(identity, processcube_engine_sdk_1.claims.canWriteProcessModel); this.logger.debug(`Setting 'enabled' flag for StartEvent ${startEventId} of Process Model ${processModelId} to '${enabled}'`, { processModelId: processModelId, startEventId: startEventId, enabled: enabled, }); await this.cronjobCoreService.updateCronjob({ processModelId: processModelId, flowNodeId: startEventId, enabled: enabled, }); Tools_1.EventAggregator.publish(index_1.eventAggregatorSettings.messagePaths.cronjobEnabledChanged, { processModelId: processModelId, flowNodeId: startEventId, enabled: enabled, }); } ensureHasClaim(identity, claimName) { const isSuperAdmin = this.iamService.checkIfUserIsSuperAdmin(identity); if (isSuperAdmin) { return; } this.iamService.ensureHasClaim(identity, claimName); } }; exports.CronjobApiService = CronjobApiService; exports.CronjobApiService = CronjobApiService = __decorate([ (0, inversify_1.injectable)(), __param(0, (0, inversify_1.inject)(index_1.IocRegistrationKeys.core.services.CronjobService)), __param(1, (0, inversify_1.inject)(index_1.IocRegistrationKeys.internal.CronjobDatabaseAdapter)), __param(2, (0, inversify_1.inject)(index_1.IocRegistrationKeys.internal.IamService)), __param(3, (0, inversify_1.inject)(index_1.IocRegistrationKeys.internal.ProcessInstanceDatabaseAdapter)), __metadata("design:paramtypes", [index_2.CronjobService, index_3.CronjobDatabaseAdapter, index_4.IamService, index_3.ProcessInstanceDatabaseAdapter]) ], CronjobApiService); exports.CronjobApiServiceProxyConfiguration = { proxyKey: index_1.IocRegistrationKeys.api.services.CronjobServiceProxy, targetKey: index_1.IocRegistrationKeys.api.services.CronjobService, target: CronjobApiService, }; //# sourceMappingURL=CronjobService.js.map