UNPKG

bpm-engine

Version:

Business Process Management Engine for JavaScript

115 lines (90 loc) 8.72 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _getIterator2 = require('babel-runtime/core-js/get-iterator'); var _getIterator3 = _interopRequireDefault(_getIterator2); var _asyncToGenerator2 = require('babel-runtime/helpers/asyncToGenerator'); var _asyncToGenerator3 = _interopRequireDefault(_asyncToGenerator2); var _Gateway = require('./Gateway'); var _Gateway2 = _interopRequireDefault(_Gateway); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } class InclusiveGateway extends _Gateway2.default { constructor(...args) { var _temp, _this; return _temp = _this = super(...args), this.makeReady = (0, _asyncToGenerator3.default)(function* () { yield _this.callPlugins('onReady'); // if this token has a parent // we pull ourselves out of its childs if (_this.tokenInstance.parent) { const parentToken = yield _this.persist.tokenInstance.update({ tokenId: _this.tokenInstance.parent }, { $pull: { childs: _this.tokenInstance.tokenId } }); // if there are still childs left // we set us to be paused, since only the last // token should be continued if (parentToken.childs.length > 0) { _this.tokenInstance.status = 'paused'; } } }), this.makeComplete = (0, _asyncToGenerator3.default)(function* () { const outgoing = _this.definition.outgoing; yield _this.callPlugins('onComplete'); if (outgoing.length > 1) { const next = yield _this.getNext(); if (!next.length) { if (_this.definition.default) { next.push(_this.definition.default); } else { return; } } const childTokenInstances = yield _this.instantiateChildTokenInstances(next); _this.tokenInstance.status = 'paused'; yield _this.processChilds(childTokenInstances); } }), _temp; } getNext() { var _this2 = this; return (0, _asyncToGenerator3.default)(function* () { const outgoing = _this2.definition.outgoing; const payload = _this2.tokenInstance.payload; const next = []; if (outgoing.length > 1) { var _iteratorNormalCompletion = true; var _didIteratorError = false; var _iteratorError = undefined; try { for (var _iterator = (0, _getIterator3.default)(outgoing), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { const path = _step.value; if (path.conditionExpression) { const conditionExpression = path.conditionExpression; (yield _this2.evalCondition(conditionExpression.body, payload)) && next.push(path); } } } catch (err) { _didIteratorError = true; _iteratorError = err; } finally { try { if (!_iteratorNormalCompletion && _iterator.return) { _iterator.return(); } } finally { if (_didIteratorError) { throw _iteratorError; } } } } else { next.push(outgoing[0]); } return next; })(); } } exports.default = InclusiveGateway; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIvRWxlbWVudHMvSW5jbHVzaXZlR2F0ZXdheS5qcyJdLCJuYW1lcyI6WyJJbmNsdXNpdmVHYXRld2F5IiwiR2F0ZXdheSIsIm1ha2VSZWFkeSIsImNhbGxQbHVnaW5zIiwidG9rZW5JbnN0YW5jZSIsInBhcmVudCIsInBhcmVudFRva2VuIiwicGVyc2lzdCIsInVwZGF0ZSIsInRva2VuSWQiLCIkcHVsbCIsImNoaWxkcyIsImxlbmd0aCIsInN0YXR1cyIsIm1ha2VDb21wbGV0ZSIsIm91dGdvaW5nIiwiZGVmaW5pdGlvbiIsIm5leHQiLCJnZXROZXh0IiwiZGVmYXVsdCIsInB1c2giLCJjaGlsZFRva2VuSW5zdGFuY2VzIiwiaW5zdGFudGlhdGVDaGlsZFRva2VuSW5zdGFuY2VzIiwicHJvY2Vzc0NoaWxkcyIsInBheWxvYWQiLCJwYXRoIiwiY29uZGl0aW9uRXhwcmVzc2lvbiIsImV2YWxDb25kaXRpb24iLCJib2R5Il0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7OztBQUFBOzs7Ozs7QUFFZSxNQUFNQSxnQkFBTixTQUErQkMsaUJBQS9CLENBQXVDO0FBQUE7QUFBQTs7QUFBQSxnREFDcERDLFNBRG9ELG1DQUN4QyxhQUFZO0FBQ3RCLFlBQU0sTUFBS0MsV0FBTCxDQUFpQixTQUFqQixDQUFOOztBQUVBO0FBQ0E7QUFDQSxVQUFJLE1BQUtDLGFBQUwsQ0FBbUJDLE1BQXZCLEVBQStCO0FBQzdCLGNBQU1DLGNBQWMsTUFBTSxNQUFLQyxPQUFMLENBQWFILGFBQWIsQ0FBMkJJLE1BQTNCLENBQ3hCO0FBQ0VDLG1CQUFTLE1BQUtMLGFBQUwsQ0FBbUJDO0FBRDlCLFNBRHdCLEVBSXhCO0FBQ0VLLGlCQUFPLEVBQUVDLFFBQVEsTUFBS1AsYUFBTCxDQUFtQkssT0FBN0I7QUFEVCxTQUp3QixDQUExQjs7QUFTQTtBQUNBO0FBQ0E7QUFDQSxZQUFJSCxZQUFZSyxNQUFaLENBQW1CQyxNQUFuQixHQUE0QixDQUFoQyxFQUFtQztBQUNqQyxnQkFBS1IsYUFBTCxDQUFtQlMsTUFBbkIsR0FBNEIsUUFBNUI7QUFDRDtBQUNGO0FBQ0YsS0F2Qm1ELFFBNENwREMsWUE1Q29ELG1DQTRDckMsYUFBWTtBQUFBLFlBQ2pCQyxRQURpQixHQUNKLE1BQUtDLFVBREQsQ0FDakJELFFBRGlCOzs7QUFHekIsWUFBTSxNQUFLWixXQUFMLENBQWlCLFlBQWpCLENBQU47O0FBRUEsVUFBSVksU0FBU0gsTUFBVCxHQUFrQixDQUF0QixFQUF5QjtBQUN2QixjQUFNSyxPQUFPLE1BQU0sTUFBS0MsT0FBTCxFQUFuQjs7QUFFQSxZQUFJLENBQUNELEtBQUtMLE1BQVYsRUFBa0I7QUFDaEIsY0FBSSxNQUFLSSxVQUFMLENBQWdCRyxPQUFwQixFQUE2QjtBQUMzQkYsaUJBQUtHLElBQUwsQ0FBVSxNQUFLSixVQUFMLENBQWdCRyxPQUExQjtBQUNELFdBRkQsTUFHSztBQUNIO0FBQ0Q7QUFDRjs7QUFFRCxjQUFNRSxzQkFBc0IsTUFBTSxNQUFLQyw4QkFBTCxDQUFvQ0wsSUFBcEMsQ0FBbEM7QUFDQSxjQUFLYixhQUFMLENBQW1CUyxNQUFuQixHQUE0QixRQUE1QjtBQUNBLGNBQU0sTUFBS1UsYUFBTCxDQUFtQkYsbUJBQW5CLENBQU47QUFDRDtBQUNGLEtBakVtRDtBQUFBOztBQXlCOUNILFNBQU4sR0FBZ0I7QUFBQTs7QUFBQTtBQUFBLFlBQ05ILFFBRE0sR0FDTyxPQUFLQyxVQURaLENBQ05ELFFBRE07QUFBQSxZQUVOUyxPQUZNLEdBRU0sT0FBS3BCLGFBRlgsQ0FFTm9CLE9BRk07OztBQUlkLFlBQU1QLE9BQU8sRUFBYjtBQUNBLFVBQUlGLFNBQVNILE1BQVQsR0FBa0IsQ0FBdEIsRUFBeUI7QUFBQTtBQUFBO0FBQUE7O0FBQUE7QUFDdkIsMERBQW1CRyxRQUFuQiw0R0FBNkI7QUFBQSxrQkFBbEJVLElBQWtCOztBQUMzQixnQkFBSUEsS0FBS0MsbUJBQVQsRUFBOEI7QUFBQSxvQkFDcEJBLG1CQURvQixHQUNJRCxJQURKLENBQ3BCQyxtQkFEb0I7O0FBRTVCLGVBQUMsTUFBTSxPQUFLQyxhQUFMLENBQW1CRCxvQkFBb0JFLElBQXZDLEVBQTZDSixPQUE3QyxDQUFQLEtBQWlFUCxLQUFLRyxJQUFMLENBQVVLLElBQVYsQ0FBakU7QUFDRDtBQUNGO0FBTnNCO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFPeEIsT0FQRCxNQVFLO0FBQ0hSLGFBQUtHLElBQUwsQ0FBVUwsU0FBUyxDQUFULENBQVY7QUFDRDtBQUNELGFBQU9FLElBQVA7QUFoQmM7QUFpQmY7O0FBMUNtRDtrQkFBakNqQixnQiIsImZpbGUiOiJJbmNsdXNpdmVHYXRld2F5LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IEdhdGV3YXkgZnJvbSAnbGliL0VsZW1lbnRzL0dhdGV3YXknO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBJbmNsdXNpdmVHYXRld2F5IGV4dGVuZHMgR2F0ZXdheSB7XG4gIG1ha2VSZWFkeSA9IGFzeW5jICgpID0+IHtcbiAgICBhd2FpdCB0aGlzLmNhbGxQbHVnaW5zKCdvblJlYWR5Jyk7XG5cbiAgICAvLyBpZiB0aGlzIHRva2VuIGhhcyBhIHBhcmVudFxuICAgIC8vIHdlIHB1bGwgb3Vyc2VsdmVzIG91dCBvZiBpdHMgY2hpbGRzXG4gICAgaWYgKHRoaXMudG9rZW5JbnN0YW5jZS5wYXJlbnQpIHtcbiAgICAgIGNvbnN0IHBhcmVudFRva2VuID0gYXdhaXQgdGhpcy5wZXJzaXN0LnRva2VuSW5zdGFuY2UudXBkYXRlKFxuICAgICAgICB7XG4gICAgICAgICAgdG9rZW5JZDogdGhpcy50b2tlbkluc3RhbmNlLnBhcmVudCxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICRwdWxsOiB7IGNoaWxkczogdGhpcy50b2tlbkluc3RhbmNlLnRva2VuSWQgfSxcbiAgICAgICAgfSxcbiAgICAgICk7XG5cbiAgICAgIC8vIGlmIHRoZXJlIGFyZSBzdGlsbCBjaGlsZHMgbGVmdFxuICAgICAgLy8gd2Ugc2V0IHVzIHRvIGJlIHBhdXNlZCwgc2luY2Ugb25seSB0aGUgbGFzdFxuICAgICAgLy8gdG9rZW4gc2hvdWxkIGJlIGNvbnRpbnVlZFxuICAgICAgaWYgKHBhcmVudFRva2VuLmNoaWxkcy5sZW5ndGggPiAwKSB7XG4gICAgICAgIHRoaXMudG9rZW5JbnN0YW5jZS5zdGF0dXMgPSAncGF1c2VkJztcbiAgICAgIH1cbiAgICB9XG4gIH07XG5cbiAgYXN5bmMgZ2V0TmV4dCgpIHtcbiAgICBjb25zdCB7IG91dGdvaW5nIH0gPSB0aGlzLmRlZmluaXRpb247XG4gICAgY29uc3QgeyBwYXlsb2FkIH0gPSB0aGlzLnRva2VuSW5zdGFuY2U7XG5cbiAgICBjb25zdCBuZXh0ID0gW107XG4gICAgaWYgKG91dGdvaW5nLmxlbmd0aCA+IDEpIHtcbiAgICAgIGZvciAoY29uc3QgcGF0aCBvZiBvdXRnb2luZykge1xuICAgICAgICBpZiAocGF0aC5jb25kaXRpb25FeHByZXNzaW9uKSB7XG4gICAgICAgICAgY29uc3QgeyBjb25kaXRpb25FeHByZXNzaW9uIH0gPSBwYXRoO1xuICAgICAgICAgIChhd2FpdCB0aGlzLmV2YWxDb25kaXRpb24oY29uZGl0aW9uRXhwcmVzc2lvbi5ib2R5LCBwYXlsb2FkKSkgJiYgbmV4dC5wdXNoKHBhdGgpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgbmV4dC5wdXNoKG91dGdvaW5nWzBdKTtcbiAgICB9XG4gICAgcmV0dXJuIG5leHQ7XG4gIH1cblxuICBtYWtlQ29tcGxldGUgPSBhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgeyBvdXRnb2luZyB9ID0gdGhpcy5kZWZpbml0aW9uO1xuXG4gICAgYXdhaXQgdGhpcy5jYWxsUGx1Z2lucygnb25Db21wbGV0ZScpO1xuXG4gICAgaWYgKG91dGdvaW5nLmxlbmd0aCA+IDEpIHtcbiAgICAgIGNvbnN0IG5leHQgPSBhd2FpdCB0aGlzLmdldE5leHQoKTtcblxuICAgICAgaWYgKCFuZXh0Lmxlbmd0aCkge1xuICAgICAgICBpZiAodGhpcy5kZWZpbml0aW9uLmRlZmF1bHQpIHtcbiAgICAgICAgICBuZXh0LnB1c2godGhpcy5kZWZpbml0aW9uLmRlZmF1bHQpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBjb25zdCBjaGlsZFRva2VuSW5zdGFuY2VzID0gYXdhaXQgdGhpcy5pbnN0YW50aWF0ZUNoaWxkVG9rZW5JbnN0YW5jZXMobmV4dCk7XG4gICAgICB0aGlzLnRva2VuSW5zdGFuY2Uuc3RhdHVzID0gJ3BhdXNlZCc7XG4gICAgICBhd2FpdCB0aGlzLnByb2Nlc3NDaGlsZHMoY2hpbGRUb2tlbkluc3RhbmNlcyk7XG4gICAgfVxuICB9O1xufVxuIl19