@5minds/processcube_engine
Version:
The ProcessCube Engine. Stores and executes BPMNs.
485 lines • 24.1 kB
JavaScript
"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