UNPKG

bpm-engine

Version:

Business Process Management Engine for JavaScript

115 lines (87 loc) 10.7 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _asyncToGenerator2 = require('babel-runtime/helpers/asyncToGenerator'); var _asyncToGenerator3 = _interopRequireDefault(_asyncToGenerator2); var _promise = require('babel-runtime/core-js/promise'); var _promise2 = _interopRequireDefault(_promise); var _keys = require('babel-runtime/core-js/object/keys'); var _keys2 = _interopRequireDefault(_keys); var _debug = require('./debug'); var _debug2 = _interopRequireDefault(_debug); var _serial = require('./serial'); var _serial2 = _interopRequireDefault(_serial); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } const log = (0, _debug2.default)('process:plugins'); class Element { constructor({ definition, plugins, tokenInstance }) { var _this = this; this.callPlugins = (fn, extra) => { log(`${this.tokenInstance.tokenId} > ${this.definition.id} > ${fn}`); const promises = []; (0, _keys2.default)(this.plugins).forEach(pluginName => { if (this.plugins[pluginName][fn]) { const plugin = this.plugins[pluginName][fn]; promises.push(plugin(this.definition, this.tokenInstance, extra)); } }); return _promise2.default.all(promises); }; this.makeReady = () => this.callPlugins('onReady'); this.makeActive = () => this.callPlugins('onActive'); this.makeComplete = () => this.callPlugins('onComplete'); this.persistChildIdsToParent = childIds => this.persist.tokenInstance.update({ tokenId: this.tokenInstance.tokenId }, { $set: { currentActivity: this.definition.id, childs: childIds, status: this.tokenInstance.status } }); this.processChilds = (() => { var _ref = (0, _asyncToGenerator3.default)(function* (childTokenInstances) { const childTokenInstancesIds = childTokenInstances.map(function (child) { return child.tokenId; }); yield _this.persistChildIdsToParent(childTokenInstancesIds); yield _promise2.default.all(childTokenInstances.map(function (childTokenInstance) { return childTokenInstance.persistCreate(); })); yield (0, _serial2.default)(childTokenInstances.map(function (childTokenInstance) { return childTokenInstance.execute; })); }); return function (_x) { return _ref.apply(this, arguments); }; })(); this.instantiateChildTokenInstances = outgoing => _promise2.default.all(outgoing.map((() => { var _ref2 = (0, _asyncToGenerator3.default)(function* (path) { const token = yield _this.engine.createTokenInstance({ payload: _this.tokenInstance.payload, processId: _this.tokenInstance.processId, parent: _this.tokenInstance.tokenId, isSubProcess: _this.tokenInstance.isSubProcess, currentActivity: path.id, status: 'running', flowObjects: _this.tokenInstance.flowObjects }); token.next = token.flowObjects.find(function (el) { return el.id === path.id; }); return token; }); return function (_x2) { return _ref2.apply(this, arguments); }; })())); this.definition = definition; this.plugins = plugins; this.tokenInstance = tokenInstance; this.engine = tokenInstance.engine; this.evalCondition = this.engine.evalCondition; this.persist = this.engine.persist; } } exports.default = Element; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvRWxlbWVudC5qcyJdLCJuYW1lcyI6WyJsb2ciLCJFbGVtZW50IiwiY29uc3RydWN0b3IiLCJkZWZpbml0aW9uIiwicGx1Z2lucyIsInRva2VuSW5zdGFuY2UiLCJjYWxsUGx1Z2lucyIsImZuIiwiZXh0cmEiLCJ0b2tlbklkIiwiaWQiLCJwcm9taXNlcyIsImZvckVhY2giLCJwbHVnaW5OYW1lIiwicGx1Z2luIiwicHVzaCIsImFsbCIsIm1ha2VSZWFkeSIsIm1ha2VBY3RpdmUiLCJtYWtlQ29tcGxldGUiLCJwZXJzaXN0Q2hpbGRJZHNUb1BhcmVudCIsImNoaWxkSWRzIiwicGVyc2lzdCIsInVwZGF0ZSIsIiRzZXQiLCJjdXJyZW50QWN0aXZpdHkiLCJjaGlsZHMiLCJzdGF0dXMiLCJwcm9jZXNzQ2hpbGRzIiwiY2hpbGRUb2tlbkluc3RhbmNlcyIsImNoaWxkVG9rZW5JbnN0YW5jZXNJZHMiLCJtYXAiLCJjaGlsZCIsImNoaWxkVG9rZW5JbnN0YW5jZSIsInBlcnNpc3RDcmVhdGUiLCJleGVjdXRlIiwiaW5zdGFudGlhdGVDaGlsZFRva2VuSW5zdGFuY2VzIiwib3V0Z29pbmciLCJwYXRoIiwidG9rZW4iLCJlbmdpbmUiLCJjcmVhdGVUb2tlbkluc3RhbmNlIiwicGF5bG9hZCIsInByb2Nlc3NJZCIsInBhcmVudCIsImlzU3ViUHJvY2VzcyIsImZsb3dPYmplY3RzIiwibmV4dCIsImZpbmQiLCJlbCIsImV2YWxDb25kaXRpb24iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBOzs7O0FBQ0E7Ozs7OztBQUVBLE1BQU1BLE1BQU0scUJBQU0saUJBQU4sQ0FBWjs7QUFFZSxNQUFNQyxPQUFOLENBQWM7QUFDM0JDLGNBQVksRUFBRUMsVUFBRixFQUFjQyxPQUFkLEVBQXVCQyxhQUF2QixFQUFaLEVBQW9EO0FBQUE7O0FBQUEsU0FTcERDLFdBVG9ELEdBU3RDLENBQUNDLEVBQUQsRUFBS0MsS0FBTCxLQUFlO0FBQzNCUixVQUFLLEdBQUUsS0FBS0ssYUFBTCxDQUFtQkksT0FBUSxNQUFLLEtBQUtOLFVBQUwsQ0FBZ0JPLEVBQUcsTUFBS0gsRUFBRyxFQUFsRTs7QUFFQSxZQUFNSSxXQUFXLEVBQWpCO0FBQ0EsMEJBQVksS0FBS1AsT0FBakIsRUFBMEJRLE9BQTFCLENBQW1DQyxVQUFELElBQWdCO0FBQ2hELFlBQUksS0FBS1QsT0FBTCxDQUFhUyxVQUFiLEVBQXlCTixFQUF6QixDQUFKLEVBQWtDO0FBQ2hDLGdCQUFNTyxTQUFTLEtBQUtWLE9BQUwsQ0FBYVMsVUFBYixFQUF5Qk4sRUFBekIsQ0FBZjtBQUNBSSxtQkFBU0ksSUFBVCxDQUFjRCxPQUFPLEtBQUtYLFVBQVosRUFBd0IsS0FBS0UsYUFBN0IsRUFBNENHLEtBQTVDLENBQWQ7QUFDRDtBQUNGLE9BTEQ7QUFNQSxhQUFPLGtCQUFRUSxHQUFSLENBQVlMLFFBQVosQ0FBUDtBQUNELEtBcEJtRDs7QUFBQSxTQXNCcERNLFNBdEJvRCxHQXNCeEMsTUFBTSxLQUFLWCxXQUFMLENBQWlCLFNBQWpCLENBdEJrQzs7QUFBQSxTQXVCcERZLFVBdkJvRCxHQXVCdkMsTUFBTSxLQUFLWixXQUFMLENBQWlCLFVBQWpCLENBdkJpQzs7QUFBQSxTQXdCcERhLFlBeEJvRCxHQXdCckMsTUFBTSxLQUFLYixXQUFMLENBQWlCLFlBQWpCLENBeEIrQjs7QUFBQSxTQTBCcERjLHVCQTFCb0QsR0EwQjFCQyxZQUN4QixLQUFLQyxPQUFMLENBQWFqQixhQUFiLENBQTJCa0IsTUFBM0IsQ0FDRSxFQUFFZCxTQUFTLEtBQUtKLGFBQUwsQ0FBbUJJLE9BQTlCLEVBREYsRUFFRTtBQUNFZSxZQUFNO0FBQ0pDLHlCQUFpQixLQUFLdEIsVUFBTCxDQUFnQk8sRUFEN0I7QUFFSmdCLGdCQUFRTCxRQUZKO0FBR0pNLGdCQUFRLEtBQUt0QixhQUFMLENBQW1Cc0I7QUFIdkI7QUFEUixLQUZGLENBM0JrRDs7QUFBQSxTQXNDcERDLGFBdENvRDtBQUFBLGlEQXNDcEMsV0FBT0MsbUJBQVAsRUFBK0I7QUFDN0MsY0FBTUMseUJBQXlCRCxvQkFBb0JFLEdBQXBCLENBQXdCO0FBQUEsaUJBQVNDLE1BQU12QixPQUFmO0FBQUEsU0FBeEIsQ0FBL0I7QUFDQSxjQUFNLE1BQUtXLHVCQUFMLENBQTZCVSxzQkFBN0IsQ0FBTjtBQUNBLGNBQU0sa0JBQVFkLEdBQVIsQ0FBWWEsb0JBQW9CRSxHQUFwQixDQUF3QjtBQUFBLGlCQUFzQkUsbUJBQW1CQyxhQUFuQixFQUF0QjtBQUFBLFNBQXhCLENBQVosQ0FBTjtBQUNBLGNBQU0sc0JBQU9MLG9CQUFvQkUsR0FBcEIsQ0FBd0I7QUFBQSxpQkFBc0JFLG1CQUFtQkUsT0FBekM7QUFBQSxTQUF4QixDQUFQLENBQU47QUFDRCxPQTNDbUQ7O0FBQUE7QUFBQTtBQUFBO0FBQUE7O0FBQUEsU0E2Q3BEQyw4QkE3Q29ELEdBNkNuQkMsWUFDL0Isa0JBQVFyQixHQUFSLENBQVlxQixTQUFTTixHQUFUO0FBQUEsa0RBQWEsV0FBT08sSUFBUCxFQUFnQjtBQUN2QyxjQUFNQyxRQUFRLE1BQU0sTUFBS0MsTUFBTCxDQUFZQyxtQkFBWixDQUFnQztBQUNsREMsbUJBQVMsTUFBS3JDLGFBQUwsQ0FBbUJxQyxPQURzQjtBQUVsREMscUJBQVcsTUFBS3RDLGFBQUwsQ0FBbUJzQyxTQUZvQjtBQUdsREMsa0JBQVEsTUFBS3ZDLGFBQUwsQ0FBbUJJLE9BSHVCO0FBSWxEb0Msd0JBQWMsTUFBS3hDLGFBQUwsQ0FBbUJ3QyxZQUppQjtBQUtsRHBCLDJCQUFpQmEsS0FBSzVCLEVBTDRCO0FBTWxEaUIsa0JBQVEsU0FOMEM7QUFPbERtQix1QkFBYSxNQUFLekMsYUFBTCxDQUFtQnlDO0FBUGtCLFNBQWhDLENBQXBCOztBQVVBUCxjQUFNUSxJQUFOLEdBQWFSLE1BQU1PLFdBQU4sQ0FBa0JFLElBQWxCLENBQXVCO0FBQUEsaUJBQU1DLEdBQUd2QyxFQUFILEtBQVU0QixLQUFLNUIsRUFBckI7QUFBQSxTQUF2QixDQUFiOztBQUVBLGVBQU82QixLQUFQO0FBQ0QsT0FkVzs7QUFBQTtBQUFBO0FBQUE7QUFBQSxTQUFaLENBOUNrRDs7QUFDbEQsU0FBS3BDLFVBQUwsR0FBa0JBLFVBQWxCO0FBQ0EsU0FBS0MsT0FBTCxHQUFlQSxPQUFmO0FBQ0EsU0FBS0MsYUFBTCxHQUFxQkEsYUFBckI7QUFDQSxTQUFLbUMsTUFBTCxHQUFjbkMsY0FBY21DLE1BQTVCO0FBQ0EsU0FBS1UsYUFBTCxHQUFxQixLQUFLVixNQUFMLENBQVlVLGFBQWpDO0FBQ0EsU0FBSzVCLE9BQUwsR0FBZSxLQUFLa0IsTUFBTCxDQUFZbEIsT0FBM0I7QUFDRDs7QUFSMEI7a0JBQVJyQixPIiwiZmlsZSI6IkVsZW1lbnQuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgZGVidWcgZnJvbSAnbGliL2RlYnVnJztcbmltcG9ydCBzZXJpYWwgZnJvbSAnbGliL3NlcmlhbCc7XG5cbmNvbnN0IGxvZyA9IGRlYnVnKCdwcm9jZXNzOnBsdWdpbnMnKTtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRWxlbWVudCB7XG4gIGNvbnN0cnVjdG9yKHsgZGVmaW5pdGlvbiwgcGx1Z2lucywgdG9rZW5JbnN0YW5jZSB9KSB7XG4gICAgdGhpcy5kZWZpbml0aW9uID0gZGVmaW5pdGlvbjtcbiAgICB0aGlzLnBsdWdpbnMgPSBwbHVnaW5zO1xuICAgIHRoaXMudG9rZW5JbnN0YW5jZSA9IHRva2VuSW5zdGFuY2U7XG4gICAgdGhpcy5lbmdpbmUgPSB0b2tlbkluc3RhbmNlLmVuZ2luZTtcbiAgICB0aGlzLmV2YWxDb25kaXRpb24gPSB0aGlzLmVuZ2luZS5ldmFsQ29uZGl0aW9uO1xuICAgIHRoaXMucGVyc2lzdCA9IHRoaXMuZW5naW5lLnBlcnNpc3Q7XG4gIH1cblxuICBjYWxsUGx1Z2lucyA9IChmbiwgZXh0cmEpID0+IHtcbiAgICBsb2coYCR7dGhpcy50b2tlbkluc3RhbmNlLnRva2VuSWR9ID4gJHt0aGlzLmRlZmluaXRpb24uaWR9ID4gJHtmbn1gKTtcblxuICAgIGNvbnN0IHByb21pc2VzID0gW107XG4gICAgT2JqZWN0LmtleXModGhpcy5wbHVnaW5zKS5mb3JFYWNoKChwbHVnaW5OYW1lKSA9PiB7XG4gICAgICBpZiAodGhpcy5wbHVnaW5zW3BsdWdpbk5hbWVdW2ZuXSkge1xuICAgICAgICBjb25zdCBwbHVnaW4gPSB0aGlzLnBsdWdpbnNbcGx1Z2luTmFtZV1bZm5dO1xuICAgICAgICBwcm9taXNlcy5wdXNoKHBsdWdpbih0aGlzLmRlZmluaXRpb24sIHRoaXMudG9rZW5JbnN0YW5jZSwgZXh0cmEpKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gUHJvbWlzZS5hbGwocHJvbWlzZXMpO1xuICB9O1xuXG4gIG1ha2VSZWFkeSA9ICgpID0+IHRoaXMuY2FsbFBsdWdpbnMoJ29uUmVhZHknKTtcbiAgbWFrZUFjdGl2ZSA9ICgpID0+IHRoaXMuY2FsbFBsdWdpbnMoJ29uQWN0aXZlJyk7XG4gIG1ha2VDb21wbGV0ZSA9ICgpID0+IHRoaXMuY2FsbFBsdWdpbnMoJ29uQ29tcGxldGUnKTtcblxuICBwZXJzaXN0Q2hpbGRJZHNUb1BhcmVudCA9IGNoaWxkSWRzID0+XG4gICAgdGhpcy5wZXJzaXN0LnRva2VuSW5zdGFuY2UudXBkYXRlKFxuICAgICAgeyB0b2tlbklkOiB0aGlzLnRva2VuSW5zdGFuY2UudG9rZW5JZCB9LFxuICAgICAge1xuICAgICAgICAkc2V0OiB7XG4gICAgICAgICAgY3VycmVudEFjdGl2aXR5OiB0aGlzLmRlZmluaXRpb24uaWQsXG4gICAgICAgICAgY2hpbGRzOiBjaGlsZElkcyxcbiAgICAgICAgICBzdGF0dXM6IHRoaXMudG9rZW5JbnN0YW5jZS5zdGF0dXMsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICk7XG5cbiAgcHJvY2Vzc0NoaWxkcyA9IGFzeW5jIChjaGlsZFRva2VuSW5zdGFuY2VzKSA9PiB7XG4gICAgY29uc3QgY2hpbGRUb2tlbkluc3RhbmNlc0lkcyA9IGNoaWxkVG9rZW5JbnN0YW5jZXMubWFwKGNoaWxkID0+IGNoaWxkLnRva2VuSWQpO1xuICAgIGF3YWl0IHRoaXMucGVyc2lzdENoaWxkSWRzVG9QYXJlbnQoY2hpbGRUb2tlbkluc3RhbmNlc0lkcyk7XG4gICAgYXdhaXQgUHJvbWlzZS5hbGwoY2hpbGRUb2tlbkluc3RhbmNlcy5tYXAoY2hpbGRUb2tlbkluc3RhbmNlID0+IGNoaWxkVG9rZW5JbnN0YW5jZS5wZXJzaXN0Q3JlYXRlKCkpKTtcbiAgICBhd2FpdCBzZXJpYWwoY2hpbGRUb2tlbkluc3RhbmNlcy5tYXAoY2hpbGRUb2tlbkluc3RhbmNlID0+IGNoaWxkVG9rZW5JbnN0YW5jZS5leGVjdXRlKSk7XG4gIH07XG5cbiAgaW5zdGFudGlhdGVDaGlsZFRva2VuSW5zdGFuY2VzID0gb3V0Z29pbmcgPT5cbiAgICBQcm9taXNlLmFsbChvdXRnb2luZy5tYXAoYXN5bmMgKHBhdGgpID0+IHtcbiAgICAgIGNvbnN0IHRva2VuID0gYXdhaXQgdGhpcy5lbmdpbmUuY3JlYXRlVG9rZW5JbnN0YW5jZSh7XG4gICAgICAgIHBheWxvYWQ6IHRoaXMudG9rZW5JbnN0YW5jZS5wYXlsb2FkLFxuICAgICAgICBwcm9jZXNzSWQ6IHRoaXMudG9rZW5JbnN0YW5jZS5wcm9jZXNzSWQsXG4gICAgICAgIHBhcmVudDogdGhpcy50b2tlbkluc3RhbmNlLnRva2VuSWQsXG4gICAgICAgIGlzU3ViUHJvY2VzczogdGhpcy50b2tlbkluc3RhbmNlLmlzU3ViUHJvY2VzcyxcbiAgICAgICAgY3VycmVudEFjdGl2aXR5OiBwYXRoLmlkLFxuICAgICAgICBzdGF0dXM6ICdydW5uaW5nJyxcbiAgICAgICAgZmxvd09iamVjdHM6IHRoaXMudG9rZW5JbnN0YW5jZS5mbG93T2JqZWN0cyxcbiAgICAgIH0pO1xuXG4gICAgICB0b2tlbi5uZXh0ID0gdG9rZW4uZmxvd09iamVjdHMuZmluZChlbCA9PiBlbC5pZCA9PT0gcGF0aC5pZCk7XG5cbiAgICAgIHJldHVybiB0b2tlbjtcbiAgICB9KSk7XG59XG4iXX0=