UNPKG

@5minds/processcube_engine

Version:

The ProcessCube Engine. Stores and executes BPMNs.

171 lines • 8.35 kB
"use strict"; var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { if (k2 === undefined) k2 = k; var desc = Object.getOwnPropertyDescriptor(m, k); if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { desc = { enumerable: true, get: function() { return m[k]; } }; } Object.defineProperty(o, k2, desc); }) : (function(o, m, k, k2) { if (k2 === undefined) k2 = k; o[k2] = m[k]; })); var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { Object.defineProperty(o, "default", { enumerable: true, value: v }); }) : function(o, v) { o["default"] = v; }); var __importStar = (this && this.__importStar) || (function () { var ownKeys = function(o) { ownKeys = Object.getOwnPropertyNames || function (o) { var ar = []; for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k; return ar; }; return ownKeys(o); }; return function (mod) { if (mod && mod.__esModule) return mod; var result = {}; if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]); __setModuleDefault(result, mod); return result; }; })(); var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.initialize = initialize; exports.triggerMessageEvent = triggerMessageEvent; exports.triggerMessageStartEvent = triggerMessageStartEvent; exports.triggerSignalEvent = triggerSignalEvent; exports.triggerSignalStartEvent = triggerSignalStartEvent; const dayjs_1 = __importDefault(require("dayjs")); const uuid = __importStar(require("uuid")); const processcube_engine_sdk_1 = require("@5minds/processcube_engine_sdk"); const IocRegistrations_1 = require("../../Contracts/IocRegistrations"); let container; const logger = new processcube_engine_sdk_1.Logger('extensions:trigger_events'); let messageEventService; let signalEventService; function initialize(iocContainer) { container = iocContainer; messageEventService = container.get(IocRegistrations_1.IocRegistrationKeys.core.services.MessageEventService); signalEventService = container.get(IocRegistrations_1.IocRegistrationKeys.core.services.SignalEventService); } async function triggerMessageEvent(messageName, payload, processInstanceId, identity, correlationId, messageChannel, givenEventId, resolver) { const identityToUse = await getInternalIdentity(identity); const eventId = givenEventId ?? uuid.v4(); ensureHasClaim(identityToUse, processcube_engine_sdk_1.claims.canTriggerSignals); logger.debug(`Received "triggerMessageEvent" from Extension (Event ID: ${eventId}) for message ${messageName}, directed at Process Instance "${processInstanceId}" through channel "${messageChannel}"`); throwAndConfirmEventNonBlocking(async () => { await messageEventService.throwMessage({ messageReference: messageName, currentToken: payload, targetProcessInstanceId: processInstanceId, identity: identity, correlationId: correlationId, messageChannel, }, true); }, eventId, resolver, correlationId, processInstanceId); return eventId; } async function triggerMessageStartEvent(messageName, payload, identity, correlationId, messageChannel, givenEventId, resolver) { const identityToUse = await getInternalIdentity(identity); const eventId = givenEventId ?? uuid.v4(); ensureHasClaim(identityToUse, processcube_engine_sdk_1.claims.canTriggerMessages); logger.debug(`Received "triggerMessageStartEvent" from Extension (Event ID: ${eventId}) for message ${messageName} through channel "${messageChannel}"`); throwAndConfirmEventNonBlocking(async () => { await messageEventService.throwStartMessage({ messageReference: messageName, currentToken: payload, identity: identity, correlationId: correlationId, messageChannel: messageChannel, }, true); }, eventId, resolver, correlationId); return eventId; } async function triggerSignalEvent(signalName, payload, processInstanceId, identity, correlationId, signalChannel, givenEventId, resolver) { const identityToUse = await getInternalIdentity(identity); const eventId = givenEventId ?? uuid.v4(); ensureHasClaim(identityToUse, processcube_engine_sdk_1.claims.canTriggerSignals); logger.debug(`Received "triggerSignalEvent" from Extension (Event ID: ${eventId}) for message "${signalName}" directed at Process Instance "${processInstanceId}" through channel "${signalChannel}"`); throwAndConfirmEventNonBlocking(async () => { await signalEventService.throwSignal({ signalReference: signalName, currentToken: payload, targetProcessInstanceId: processInstanceId, identity: identity, correlationId: correlationId, signalChannel: signalChannel, }, true, eventId); }, eventId, resolver, correlationId, processInstanceId); return eventId; } async function triggerSignalStartEvent(signalName, payload, identity, correlationId, signalChannel, givenEventId, resolver) { const identityToUse = await getInternalIdentity(identity); const eventId = givenEventId ?? uuid.v4(); ensureHasClaim(identityToUse, processcube_engine_sdk_1.claims.canTriggerSignals); logger.debug(`Received "triggerSignalStartEvent" from Extension (Event ID: ${eventId}) for message ${signalName} through channel "${signalChannel}"`); throwAndConfirmEventNonBlocking(async () => { await signalEventService.throwStartSignal({ signalReference: signalName, currentToken: payload, identity: identity, correlationId: correlationId, signalChannel: signalChannel, }, true); }, eventId, resolver, correlationId); return eventId; } function throwAndConfirmEventNonBlocking(eventThrower, eventId, resolver, correlationId, processInstanceId) { eventThrower().then(() => { logger.debug(`Event with ID ${eventId} was successfully processed. Sending confirmation back to extension.`, { eventId, correlationId, processInstanceId }); logEventAcknowledgement(eventId, correlationId, processInstanceId); if (resolver != null) { resolver(eventId); } }); } async function logEventAcknowledgement(eventId, correlationId, processInstanceId) { const eventMiddlewareHandler = container.get(IocRegistrations_1.IocRegistrationKeys.internal.EventMiddlewareHandler); await eventMiddlewareHandler.triggerEvent({ eventType: processcube_engine_sdk_1.EngineEventType.OnEventProcessed, eventId: eventId, timestamp: dayjs_1.default.utc().toDate(), logLevel: processcube_engine_sdk_1.LogLevel.info, correlationId: correlationId, processInstanceId: processInstanceId, processModelId: undefined, processModelName: undefined, processDefinitionHash: undefined, processDefinitionId: undefined, }, { correlationId: correlationId, correlationMetadata: { correlationId: correlationId, }, processInstanceMetadata: { processInstanceId: processInstanceId, }, allowNonObjectResults: false, }); } async function getInternalIdentity(identity) { const identityService = container.get(IocRegistrations_1.IocRegistrationKeys.internal.IdentityService); if (!identity) { return identityService.getIdentityForExtensionAdapters(); } return identityService.getIdentity({ token: identity.token, userId: identity.userId }); } function ensureHasClaim(identity, claimName) { const iamService = container.get(IocRegistrations_1.IocRegistrationKeys.internal.IamService); const isSuperAdmin = iamService.checkIfUserIsSuperAdmin(identity); if (isSuperAdmin) { return; } iamService.ensureHasClaim(identity, claimName); } //# sourceMappingURL=TriggerEvents.js.map