bpm-engine
Version:
Business Process Management Engine for JavaScript
95 lines (70 loc) • 5.71 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
var _slicedToArray2 = require('babel-runtime/helpers/slicedToArray');
var _slicedToArray3 = _interopRequireDefault(_slicedToArray2);
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 ExclusiveGateway extends _Gateway2.default {
constructor(...args) {
var _temp, _this;
return _temp = _this = super(...args), this.makeActive = (0, _asyncToGenerator3.default)(function* () {
const outgoing = _this.definition.outgoing;
const payload = _this.tokenInstance.payload;
yield _this.callPlugins('onActive');
const next = [];
if (outgoing.length > 1) {
// eslint-disable-next-line
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;
// eslint-disable-next-line
(yield _this.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 {
var _outgoing = (0, _slicedToArray3.default)(outgoing, 1);
_this.next = _outgoing[0];
return;
}
if (next.length > 1) {
return;
}
if (next.length === 1) {
_this.next = next[0];
}
if (!next.length) {
if (_this.definition.default) {
_this.next = _this.definition.default;
}
}
}), _temp;
}
}
exports.default = ExclusiveGateway;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIvRWxlbWVudHMvRXhjbHVzaXZlR2F0ZXdheS5qcyJdLCJuYW1lcyI6WyJFeGNsdXNpdmVHYXRld2F5IiwiR2F0ZXdheSIsIm1ha2VBY3RpdmUiLCJvdXRnb2luZyIsImRlZmluaXRpb24iLCJwYXlsb2FkIiwidG9rZW5JbnN0YW5jZSIsImNhbGxQbHVnaW5zIiwibmV4dCIsImxlbmd0aCIsInBhdGgiLCJjb25kaXRpb25FeHByZXNzaW9uIiwiZXZhbENvbmRpdGlvbiIsImJvZHkiLCJwdXNoIiwiZGVmYXVsdCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7Ozs7OztBQUVlLE1BQU1BLGdCQUFOLFNBQStCQyxpQkFBL0IsQ0FBdUM7QUFBQTtBQUFBOztBQUFBLGdEQUNwREMsVUFEb0QsbUNBQ3ZDLGFBQVk7QUFBQSxZQUNmQyxRQURlLEdBQ0YsTUFBS0MsVUFESCxDQUNmRCxRQURlO0FBQUEsWUFFZkUsT0FGZSxHQUVILE1BQUtDLGFBRkYsQ0FFZkQsT0FGZTs7O0FBSXZCLFlBQU0sTUFBS0UsV0FBTCxDQUFpQixVQUFqQixDQUFOOztBQUVBLFlBQU1DLE9BQU8sRUFBYjs7QUFFQSxVQUFJTCxTQUFTTSxNQUFULEdBQWtCLENBQXRCLEVBQXlCO0FBQ3ZCO0FBRHVCO0FBQUE7QUFBQTs7QUFBQTtBQUV2QiwwREFBbUJOLFFBQW5CLDRHQUE2QjtBQUFBLGtCQUFsQk8sSUFBa0I7O0FBQzNCLGdCQUFJQSxLQUFLQyxtQkFBVCxFQUE4QjtBQUFBLG9CQUNwQkEsbUJBRG9CLEdBQ0lELElBREosQ0FDcEJDLG1CQURvQjtBQUU1Qjs7QUFDQSxlQUFDLE1BQU0sTUFBS0MsYUFBTCxDQUFtQkQsb0JBQW9CRSxJQUF2QyxFQUE2Q1IsT0FBN0MsQ0FBUCxLQUFpRUcsS0FBS00sSUFBTCxDQUFVSixJQUFWLENBQWpFO0FBQ0Q7QUFDRjtBQVJzQjtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBU3hCLE9BVEQsTUFVSztBQUFBLHFEQUNXUCxRQURYOztBQUNGLGNBQUtLLElBREg7O0FBRUg7QUFDRDs7QUFFRCxVQUFJQSxLQUFLQyxNQUFMLEdBQWMsQ0FBbEIsRUFBcUI7QUFDbkI7QUFDRDs7QUFFRCxVQUFJRCxLQUFLQyxNQUFMLEtBQWdCLENBQXBCLEVBQXVCO0FBQ3BCLGNBQUtELElBRGUsR0FDUEEsSUFETztBQUV0Qjs7QUFFRCxVQUFJLENBQUNBLEtBQUtDLE1BQVYsRUFBa0I7QUFDaEIsWUFBSSxNQUFLTCxVQUFMLENBQWdCVyxPQUFwQixFQUE2QjtBQUMzQixnQkFBS1AsSUFBTCxHQUFZLE1BQUtKLFVBQUwsQ0FBZ0JXLE9BQTVCO0FBQ0Q7QUFDRjtBQUNGLEtBckNtRDtBQUFBOztBQUFBO2tCQUFqQ2YsZ0IiLCJmaWxlIjoiRXhjbHVzaXZlR2F0ZXdheS5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBHYXRld2F5IGZyb20gJ2xpYi9FbGVtZW50cy9HYXRld2F5JztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRXhjbHVzaXZlR2F0ZXdheSBleHRlbmRzIEdhdGV3YXkge1xuICBtYWtlQWN0aXZlID0gYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IHsgb3V0Z29pbmcgfSA9IHRoaXMuZGVmaW5pdGlvbjtcbiAgICBjb25zdCB7IHBheWxvYWQgfSA9IHRoaXMudG9rZW5JbnN0YW5jZTtcblxuICAgIGF3YWl0IHRoaXMuY2FsbFBsdWdpbnMoJ29uQWN0aXZlJyk7XG5cbiAgICBjb25zdCBuZXh0ID0gW107XG5cbiAgICBpZiAob3V0Z29pbmcubGVuZ3RoID4gMSkge1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXG4gICAgICBmb3IgKGNvbnN0IHBhdGggb2Ygb3V0Z29pbmcpIHtcbiAgICAgICAgaWYgKHBhdGguY29uZGl0aW9uRXhwcmVzc2lvbikge1xuICAgICAgICAgIGNvbnN0IHsgY29uZGl0aW9uRXhwcmVzc2lvbiB9ID0gcGF0aDtcbiAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmVcbiAgICAgICAgICAoYXdhaXQgdGhpcy5ldmFsQ29uZGl0aW9uKGNvbmRpdGlvbkV4cHJlc3Npb24uYm9keSwgcGF5bG9hZCkpICYmIG5leHQucHVzaChwYXRoKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIFt0aGlzLm5leHRdID0gb3V0Z29pbmc7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKG5leHQubGVuZ3RoID4gMSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmIChuZXh0Lmxlbmd0aCA9PT0gMSkge1xuICAgICAgW3RoaXMubmV4dF0gPSBuZXh0O1xuICAgIH1cblxuICAgIGlmICghbmV4dC5sZW5ndGgpIHtcbiAgICAgIGlmICh0aGlzLmRlZmluaXRpb24uZGVmYXVsdCkge1xuICAgICAgICB0aGlzLm5leHQgPSB0aGlzLmRlZmluaXRpb24uZGVmYXVsdDtcbiAgICAgIH1cbiAgICB9XG4gIH07XG59XG4iXX0=