UNPKG

@onify/flow-extensions

Version:
61 lines (60 loc) 1.9 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.OnifySequenceFlow = void 0; var _bpmnElements = require("bpmn-elements"); var _getExtensions = require("./getExtensions.js"); class OnifySequenceFlow extends _bpmnElements.SequenceFlow { constructor(flowDef, context) { super(flowDef, context); this.extensions = (0, _getExtensions.getExtensions)(this, context); this._activate(); } _activate() { if (!this.extensions.listeners?.onTake) return; this.broker.subscribeTmp('event', 'flow.take', (_, msg) => { this._executeListeners(msg); }, { noAck: true, consumerTag: '_onify-execution-listener' }); } async _executeListeners(message) { try { await this.extensions.listeners.execute('take', message); } catch (err) { this.logger.error(`<${this.id}> execution listener error: ${err}`); } } evaluate(fromMessage, callback) { const properties = this.extensions.properties; if (!properties) return super.evaluate(fromMessage, callback); try { const preProperties = properties.resolve(this.getApi(fromMessage)); var evaluateMessage = fromMessage; evaluateMessage.content.properties = { ...fromMessage.content.properties, ...preProperties }; } catch (err) { return callback(err); } super.evaluate(evaluateMessage, (err, result) => { if (err) return callback(err); try { let overriddenResult = result ? {} : false; if (result) { overriddenResult = { ...(typeof result === 'object' && result), properties: properties.resolve(this.getApi(evaluateMessage)) }; } return callback(err, overriddenResult); } catch (formatErr) { return callback(formatErr); } }); } } exports.OnifySequenceFlow = OnifySequenceFlow;