UNPKG

@5minds/processcube_engine

Version:

The ProcessCube Engine. Stores and executes BPMNs.

485 lines • 24.1 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); } }; Object.defineProperty(exports, "__esModule", { value: true }); exports.RuntimeRouter = void 0; const inversify_1 = require("inversify"); const Api_1 = require("../../Api"); const ExtensionInfoService_1 = require("../../Api/Services/ExtensionInfoService"); const index_1 = require("../../Contracts/index"); const Environment_1 = require("../../Tools/Environment"); const EngineRouter_1 = require("../EngineRouter"); const ServiceFacade_1 = require("../ServiceFacade"); const RuntimeWorkerFacade_1 = require("./RuntimeWorkerFacade"); const paths = index_1.restSettings.paths; let RuntimeRouter = class RuntimeRouter extends EngineRouter_1.EngineRouter { constructor(workerFacade, serviceFacade, container) { super(workerFacade, serviceFacade, container, 'engine:runtime_router'); } async resumeProcessInstances() { return this.workerFacade.callFunction('resumeProcessInstances'); } initProxies() { const proxies = [ Api_1.CronjobApiServiceProxyConfiguration, Api_1.CustomEndpointServiceProxyConfiguration, ExtensionInfoService_1.ExtensionInfoServiceProxyConfiguration, Api_1.ExternalTaskServiceProxyConfiguration, Api_1.FlowNodeInstanceServiceProxyConfiguration, Api_1.ProcessDefinitionApiServiceProxyConfiguration, Api_1.ProcessInstanceServiceProxyConfiguration, Api_1.ProcessModelApiServiceProxyConfiguration, Api_1.NotificationServiceProxyConfiguration, ]; if ((0, Environment_1.isWindowsAndSQLite)()) { return proxies.concat(this.getAdditionalProxiesForSQLite()); } return proxies; } initSocketController() { const socketControllers = [Api_1.RuntimeNotificationLongPollingController]; if ((0, Environment_1.isWindowsAndSQLite)()) { return socketControllers.concat(this.getAdditionalSocketControllersForSQLite()); } return socketControllers; } initHttpRoutes() { const httpRoutes = [ { route: `/v1${paths.persistProcessDefinitions}`, method: 'post', controllerClass: Api_1.ProcessDefinitionController, controllerMethod: Api_1.ProcessDefinitionController.prototype.persistProcessDefinitions, }, { route: `/v1${paths.deleteProcessDefinition}`, method: 'delete', controllerClass: Api_1.ProcessDefinitionController, controllerMethod: Api_1.ProcessDefinitionController.prototype.deleteById, }, { route: `/v1${paths.changeProcessInstanceOwner}`, method: 'put', controllerClass: Api_1.ProcessInstanceController, controllerMethod: Api_1.ProcessInstanceController.prototype.transferOwnership, }, { route: `/v1${paths.terminateProcessInstances}`, method: 'put', controllerClass: Api_1.ProcessInstanceController, controllerMethod: Api_1.ProcessInstanceController.prototype.terminateProcessInstance, }, { route: `/v1${paths.retryProcessInstance}`, method: 'put', controllerClass: Api_1.ProcessInstanceController, controllerMethod: Api_1.ProcessInstanceController.prototype.retryProcessInstance, }, { route: `/v1${paths.deleteProcessInstances}`, method: 'delete', controllerClass: Api_1.ProcessInstanceController, controllerMethod: Api_1.ProcessInstanceController.prototype.deleteProcessInstances, }, { route: `/v1${paths.startProcessInstance}`, method: 'post', controllerClass: Api_1.ProcessModelController, controllerMethod: Api_1.ProcessModelController.prototype.start, }, { route: `/v1${paths.enableProcessModel}`, method: 'post', controllerClass: Api_1.ProcessModelController, controllerMethod: Api_1.ProcessModelController.prototype.enableProcessModel, }, { route: `/v1${paths.disableProcessModel}`, method: 'post', controllerClass: Api_1.ProcessModelController, controllerMethod: Api_1.ProcessModelController.prototype.disableProcessModel, }, { route: `/v1${paths.deleteProcessDefinitionByProcessModelId}`, method: 'delete', controllerClass: Api_1.ProcessModelController, controllerMethod: Api_1.ProcessModelController.prototype.deleteDefinitionByProcessModelId, }, { route: `/v1${paths.finishUntypedTask}`, method: 'put', controllerClass: Api_1.FlowNodeInstanceController, controllerMethod: Api_1.FlowNodeInstanceController.prototype.finishUntypedTask, }, { route: `/v1${paths.finishManualTask}`, method: 'put', controllerClass: Api_1.FlowNodeInstanceController, controllerMethod: Api_1.FlowNodeInstanceController.prototype.finishManualTask, }, { route: `/v1${paths.finishUserTask}`, method: 'put', controllerClass: Api_1.FlowNodeInstanceController, controllerMethod: Api_1.FlowNodeInstanceController.prototype.finishUserTask, }, { route: `/v1${paths.triggerMessageEvent}`, method: 'post', controllerClass: Api_1.FlowNodeInstanceController, controllerMethod: Api_1.FlowNodeInstanceController.prototype.triggerMessageEvent, }, { route: `/v1${paths.triggerSignalEvent}`, method: 'post', controllerClass: Api_1.FlowNodeInstanceController, controllerMethod: Api_1.FlowNodeInstanceController.prototype.triggerSignalEvent, }, { route: `/v1${paths.triggerTimerEvent}`, method: 'post', controllerClass: Api_1.FlowNodeInstanceController, controllerMethod: Api_1.FlowNodeInstanceController.prototype.triggerTimerEvent, }, { route: `/v1${paths.reserveUserTaskInstance}`, method: 'put', controllerClass: Api_1.FlowNodeInstanceController, controllerMethod: Api_1.FlowNodeInstanceController.prototype.reserveUserTaskInstance, }, { route: `/v1${paths.cancelUserTaskInstanceReservation}`, method: 'delete', controllerClass: Api_1.FlowNodeInstanceController, controllerMethod: Api_1.FlowNodeInstanceController.prototype.cancelUserTaskInstanceReservation, }, { route: `/v1${paths.enableCronjob}`, method: 'post', controllerClass: Api_1.CronjobController, controllerMethod: Api_1.CronjobController.prototype.enableCronjob, }, { route: `/v1${paths.disableCronjob}`, method: 'post', controllerClass: Api_1.CronjobController, controllerMethod: Api_1.CronjobController.prototype.disableCronjob, }, { route: `/v1${paths.finishExternalTask}`, method: 'put', controllerClass: Api_1.ExternalTaskController, controllerMethod: Api_1.ExternalTaskController.prototype.finishExternalTask, }, { route: `/v1${paths.finishExternalTaskWithError}`, method: 'put', controllerClass: Api_1.ExternalTaskController, controllerMethod: Api_1.ExternalTaskController.prototype.handleError, }, { route: `/v1${paths.onCronjobCreated}`, method: 'get', controllerClass: Api_1.NotificationLongPollingController, controllerMethod: Api_1.NotificationLongPollingController.prototype.onCronjobCreated, }, { route: `/v1${paths.onCronjobExecuted}`, method: 'get', controllerClass: Api_1.NotificationLongPollingController, controllerMethod: Api_1.NotificationLongPollingController.prototype.onCronjobExecuted, }, { route: `/v1${paths.onCronjobStopped}`, method: 'get', controllerClass: Api_1.NotificationLongPollingController, controllerMethod: Api_1.NotificationLongPollingController.prototype.onCronjobStopped, }, { route: `/v1${paths.onCronjobUpdated}`, method: 'get', controllerClass: Api_1.NotificationLongPollingController, controllerMethod: Api_1.NotificationLongPollingController.prototype.onCronjobUpdated, }, { route: `/v1${paths.onCronjobRemoved}`, method: 'get', controllerClass: Api_1.NotificationLongPollingController, controllerMethod: Api_1.NotificationLongPollingController.prototype.onCronjobRemoved, }, { route: `/v1${paths.onProcessDeployed}`, method: 'get', controllerClass: Api_1.NotificationLongPollingController, controllerMethod: Api_1.NotificationLongPollingController.prototype.onProcessDeployed, }, { route: `/v1${paths.onProcessIsExecutableChanged}`, method: 'get', controllerClass: Api_1.NotificationLongPollingController, controllerMethod: Api_1.NotificationLongPollingController.prototype.onProcessIsExecutableChanged, }, { route: `/v1${paths.onCronjobEnabledChanged}`, method: 'get', controllerClass: Api_1.NotificationLongPollingController, controllerMethod: Api_1.NotificationLongPollingController.prototype.onCronjobEnabledChanged, }, { route: `/v1${paths.onProcessUndeployed}`, method: 'get', controllerClass: Api_1.NotificationLongPollingController, controllerMethod: Api_1.NotificationLongPollingController.prototype.onProcessUndeployed, }, { route: `/v1${paths.onProcessStarting}`, method: 'get', controllerClass: Api_1.NotificationLongPollingController, controllerMethod: Api_1.NotificationLongPollingController.prototype.onProcessStarting, }, { route: `/v1${paths.onProcessStarted}`, method: 'get', controllerClass: Api_1.NotificationLongPollingController, controllerMethod: Api_1.NotificationLongPollingController.prototype.onProcessStarted, }, { route: `/v1${paths.onProcessResumed}`, method: 'get', controllerClass: Api_1.NotificationLongPollingController, controllerMethod: Api_1.NotificationLongPollingController.prototype.onProcessResumed, }, { route: `/v1${paths.onProcessEnded}`, method: 'get', controllerClass: Api_1.NotificationLongPollingController, controllerMethod: Api_1.NotificationLongPollingController.prototype.onProcessEnded, }, { route: `/v1${paths.onProcessOwnerChanged}`, method: 'get', controllerClass: Api_1.NotificationLongPollingController, controllerMethod: Api_1.NotificationLongPollingController.prototype.onProcessOwnerChanged, }, { route: `/v1${paths.onProcessTerminated}`, method: 'get', controllerClass: Api_1.NotificationLongPollingController, controllerMethod: Api_1.NotificationLongPollingController.prototype.onProcessTerminated, }, { route: `/v1${paths.onProcessError}`, method: 'get', controllerClass: Api_1.NotificationLongPollingController, controllerMethod: Api_1.NotificationLongPollingController.prototype.onProcessError, }, { route: `/v1${paths.onProcessInstancesDeleted}`, method: 'get', controllerClass: Api_1.NotificationLongPollingController, controllerMethod: Api_1.NotificationLongPollingController.prototype.onProcessInstancesDeleted, }, { route: `/v1${paths.onActivityReached}`, method: 'get', controllerClass: Api_1.NotificationLongPollingController, controllerMethod: Api_1.NotificationLongPollingController.prototype.onActivityReached, }, { route: `/v1${paths.onActivityFinished}`, method: 'get', controllerClass: Api_1.NotificationLongPollingController, controllerMethod: Api_1.NotificationLongPollingController.prototype.onActivityFinished, }, { route: `/v1${paths.onActivityCanceled}`, method: 'get', controllerClass: Api_1.NotificationLongPollingController, controllerMethod: Api_1.NotificationLongPollingController.prototype.onActivityCanceled, }, { route: `/v1${paths.onUntypedTaskWaiting}`, method: 'get', controllerClass: Api_1.NotificationLongPollingController, controllerMethod: Api_1.NotificationLongPollingController.prototype.onUntypedTaskWaiting, }, { route: `/v1${paths.onUntypedTaskFinished}`, method: 'get', controllerClass: Api_1.NotificationLongPollingController, controllerMethod: Api_1.NotificationLongPollingController.prototype.onUntypedTaskFinished, }, { route: `/v1${paths.onEndEventFinished}`, method: 'get', controllerClass: Api_1.NotificationLongPollingController, controllerMethod: Api_1.NotificationLongPollingController.prototype.onEndEventFinished, }, { route: `/v1${paths.onStartEventFinished}`, method: 'get', controllerClass: Api_1.NotificationLongPollingController, controllerMethod: Api_1.NotificationLongPollingController.prototype.onStartEventFinished, }, { route: `/v1${paths.onManualTaskWaiting}`, method: 'get', controllerClass: Api_1.NotificationLongPollingController, controllerMethod: Api_1.NotificationLongPollingController.prototype.onManualTaskWaiting, }, { route: `/v1${paths.onManualTaskFinished}`, method: 'get', controllerClass: Api_1.NotificationLongPollingController, controllerMethod: Api_1.NotificationLongPollingController.prototype.onManualTaskFinished, }, { route: `/v1${paths.onUserTaskWaiting}`, method: 'get', controllerClass: Api_1.NotificationLongPollingController, controllerMethod: Api_1.NotificationLongPollingController.prototype.onUserTaskWaiting, }, { route: `/v1${paths.onUserTaskFinished}`, method: 'get', controllerClass: Api_1.NotificationLongPollingController, controllerMethod: Api_1.NotificationLongPollingController.prototype.onUserTaskFinished, }, { route: `/v1${paths.onUserTaskReserved}`, method: 'get', controllerClass: Api_1.NotificationLongPollingController, controllerMethod: Api_1.NotificationLongPollingController.prototype.onUserTaskReserved, }, { route: `/v1${paths.onUserTaskReservationCanceled}`, method: 'get', controllerClass: Api_1.NotificationLongPollingController, controllerMethod: Api_1.NotificationLongPollingController.prototype.onUserTaskReservationCanceled, }, { route: `/v1${paths.onBoundaryEventTriggered}`, method: 'get', controllerClass: Api_1.NotificationLongPollingController, controllerMethod: Api_1.NotificationLongPollingController.prototype.onBoundaryEventTriggered, }, { route: `/v1${paths.onBoundaryEventFinished}`, method: 'get', controllerClass: Api_1.NotificationLongPollingController, controllerMethod: Api_1.NotificationLongPollingController.prototype.onBoundaryEventFinished, }, { route: `/v1${paths.onIntermediateThrowEventTriggered}`, method: 'get', controllerClass: Api_1.NotificationLongPollingController, controllerMethod: Api_1.NotificationLongPollingController.prototype.onIntermediateThrowEventTriggered, }, { route: `/v1${paths.onIntermediateCatchEventReached}`, method: 'get', controllerClass: Api_1.NotificationLongPollingController, controllerMethod: Api_1.NotificationLongPollingController.prototype.onIntermediateCatchEventReached, }, { route: `/v1${paths.onIntermediateCatchEventFinished}`, method: 'get', controllerClass: Api_1.NotificationLongPollingController, controllerMethod: Api_1.NotificationLongPollingController.prototype.onIntermediateCatchEventFinished, }, { route: `/v1${paths.onFlowNodeEventRetrySending}`, method: 'get', controllerClass: Api_1.NotificationLongPollingController, controllerMethod: Api_1.NotificationLongPollingController.prototype.onFlowNodeEventRetrySending, }, { route: `/v1${paths.onMessageTriggered}`, method: 'get', controllerClass: Api_1.NotificationLongPollingController, controllerMethod: Api_1.NotificationLongPollingController.prototype.onMessageTriggered, }, { route: `/v1${paths.onSignalTriggered}`, method: 'get', controllerClass: Api_1.NotificationLongPollingController, controllerMethod: Api_1.NotificationLongPollingController.prototype.onSignalTriggered, }, { route: `/v1${paths.onExternalTaskCreated}`, method: 'get', controllerClass: Api_1.NotificationLongPollingController, controllerMethod: Api_1.NotificationLongPollingController.prototype.onExternalTaskCreated, }, { route: `/v1${paths.onProcessInstanceMetadataChanged}`, method: 'get', controllerClass: Api_1.NotificationLongPollingController, controllerMethod: Api_1.NotificationLongPollingController.prototype.onProcessInstanceMetadataChanged, }, { route: `/v1${paths.onCorrelationMetadataChanged}`, method: 'get', controllerClass: Api_1.NotificationLongPollingController, controllerMethod: Api_1.NotificationLongPollingController.prototype.onCorrelationMetadataChanged, }, ]; if ((0, Environment_1.isWindowsAndSQLite)()) { return httpRoutes.concat(this.getAdditionalHttpRoutesForSQLite()); } return httpRoutes; } initEventTopicsListening() { return [index_1.socketSettings.paths.externalTaskExpired]; } async getExtensionRoutes() { const routesRegisteredByExtensions = (await this.workerFacade.callFunction('getExtensionRoutes')) ?? []; return routesRegisteredByExtensions.map((customRoute) => { return { route: customRoute.httpRoute, method: customRoute.method, controllerClass: Api_1.CustomEndpointController, controllerMethod: Api_1.CustomEndpointController.prototype.handle, options: customRoute.options, }; }); } getAdditionalSocketControllersForSQLite() { const queryRouter = this.globalContainer.get(index_1.IocRegistrationKeys.internal.QueryRouter); const fetchAndLockRouter = this.globalContainer.get(index_1.IocRegistrationKeys.internal.FetchAndLockRouter); return queryRouter.initSocketController().concat(fetchAndLockRouter.initSocketController()); } getAdditionalProxiesForSQLite() { const queryRouter = this.globalContainer.get(index_1.IocRegistrationKeys.internal.QueryRouter); const fetchAndLockRouter = this.globalContainer.get(index_1.IocRegistrationKeys.internal.FetchAndLockRouter); return queryRouter.initProxies().concat(fetchAndLockRouter.initProxies()); } getAdditionalHttpRoutesForSQLite() { const queryRouter = this.globalContainer.get(index_1.IocRegistrationKeys.internal.QueryRouter); const fetchAndLockRouter = this.globalContainer.get(index_1.IocRegistrationKeys.internal.FetchAndLockRouter); return queryRouter.initHttpRoutes().concat(fetchAndLockRouter.initHttpRoutes()); } }; exports.RuntimeRouter = RuntimeRouter; exports.RuntimeRouter = RuntimeRouter = __decorate([ (0, inversify_1.injectable)(), __param(0, (0, inversify_1.inject)(index_1.IocRegistrationKeys.internal.RuntimeWorkerFacade)), __param(0, (0, inversify_1.optional)()), __param(1, (0, inversify_1.inject)(index_1.IocRegistrationKeys.internal.ServiceFacade)), __param(1, (0, inversify_1.optional)()), __param(2, (0, inversify_1.inject)(index_1.IocRegistrationKeys.internal.Container)), __metadata("design:paramtypes", [RuntimeWorkerFacade_1.RuntimeWorkerFacade, ServiceFacade_1.ServiceFacade, inversify_1.Container]) ], RuntimeRouter); //# sourceMappingURL=RuntimeRouter.js.map