UNPKG

bpm-engine

Version:

Business Process Management Engine for JavaScript

116 lines (84 loc) 9.85 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _stringify = require('babel-runtime/core-js/json/stringify'); var _stringify2 = _interopRequireDefault(_stringify); var _promise = require('babel-runtime/core-js/promise'); var _promise2 = _interopRequireDefault(_promise); var _asyncToGenerator2 = require('babel-runtime/helpers/asyncToGenerator'); var _asyncToGenerator3 = _interopRequireDefault(_asyncToGenerator2); var _Activity = require('./Activity'); var _Activity2 = _interopRequireDefault(_Activity); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } class SubProcess extends _Activity2.default { constructor(...args) { var _temp, _this; return _temp = _this = super(...args), this.makeActive = (0, _asyncToGenerator3.default)(function* () { yield _this.callPlugins('onActive'); const loop = _this.definition.loopCharacteristics; let childTokenInstances = []; // not looping, not a multi instance if (!loop) { const tokenInstance = yield _this.engine.createTokenInstance({ payload: _this.tokenInstance.payload, parent: _this.tokenInstance.tokenId, processId: _this.tokenInstance.processId, flowObjects: _this.definition.flowElements }); childTokenInstances.push(tokenInstance); } else { // get cardinality or collection const subProcessItems = yield _this.getSubProcessItems(loop); if (!subProcessItems || subProcessItems.length === 0) { _this.tokenInstance.status = 'running'; } else { childTokenInstances = yield _promise2.default.all(subProcessItems.map((() => { var _ref2 = (0, _asyncToGenerator3.default)(function* (item) { const payload = JSON.parse((0, _stringify2.default)(_this.tokenInstance.payload)); if (!payload._) { payload._ = {}; } payload._.item = item; const tokenInstance = yield _this.engine.createTokenInstance({ payload, parent: _this.tokenInstance.tokenId, processId: _this.tokenInstance.processId, isSubProcess: true, flowObjects: _this.definition.flowElements }); return tokenInstance; }); return function (_x) { return _ref2.apply(this, arguments); }; })())); } } _this.tokenInstance.status = 'paused'; yield _this.processChilds(childTokenInstances); }), _temp; } getSubProcessItems(loop) { var _this2 = this; return (0, _asyncToGenerator3.default)(function* () { const evalCondition = _this2.evalCondition, tokenInstance = _this2.tokenInstance; const payload = tokenInstance.payload; const collectionLocation = loop.$attrs['camunda:collection']; const cardinality = loop.loopCardinality && Number(loop.loopCardinality.body); let collection = []; if (collectionLocation) { collection = yield evalCondition(collectionLocation, payload); } if (cardinality) { for (let i = 0; i < cardinality; i += 1) { collection.push(i); } } return collection; })(); } } exports.default = SubProcess; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIvRWxlbWVudHMvU3ViUHJvY2Vzcy5qcyJdLCJuYW1lcyI6WyJTdWJQcm9jZXNzIiwiQWN0aXZpdHkiLCJtYWtlQWN0aXZlIiwiY2FsbFBsdWdpbnMiLCJsb29wIiwiZGVmaW5pdGlvbiIsImxvb3BDaGFyYWN0ZXJpc3RpY3MiLCJjaGlsZFRva2VuSW5zdGFuY2VzIiwidG9rZW5JbnN0YW5jZSIsImVuZ2luZSIsImNyZWF0ZVRva2VuSW5zdGFuY2UiLCJwYXlsb2FkIiwicGFyZW50IiwidG9rZW5JZCIsInByb2Nlc3NJZCIsImZsb3dPYmplY3RzIiwiZmxvd0VsZW1lbnRzIiwicHVzaCIsInN1YlByb2Nlc3NJdGVtcyIsImdldFN1YlByb2Nlc3NJdGVtcyIsImxlbmd0aCIsInN0YXR1cyIsImFsbCIsIm1hcCIsIml0ZW0iLCJKU09OIiwicGFyc2UiLCJfIiwiaXNTdWJQcm9jZXNzIiwicHJvY2Vzc0NoaWxkcyIsImV2YWxDb25kaXRpb24iLCJjb2xsZWN0aW9uTG9jYXRpb24iLCIkYXR0cnMiLCJjYXJkaW5hbGl0eSIsImxvb3BDYXJkaW5hbGl0eSIsIk51bWJlciIsImJvZHkiLCJjb2xsZWN0aW9uIiwiaSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7Ozs7OztBQUVlLE1BQU1BLFVBQU4sU0FBeUJDLGtCQUF6QixDQUFrQztBQUFBO0FBQUE7O0FBQUEsZ0RBdUIvQ0MsVUF2QitDLG1DQXVCbEMsYUFBWTtBQUN2QixZQUFNLE1BQUtDLFdBQUwsQ0FBaUIsVUFBakIsQ0FBTjs7QUFFQSxZQUFNQyxPQUFPLE1BQUtDLFVBQUwsQ0FBZ0JDLG1CQUE3Qjs7QUFFQSxVQUFJQyxzQkFBc0IsRUFBMUI7O0FBRUE7QUFDQSxVQUFJLENBQUNILElBQUwsRUFBVztBQUNULGNBQU1JLGdCQUFnQixNQUFNLE1BQUtDLE1BQUwsQ0FBWUMsbUJBQVosQ0FBZ0M7QUFDMURDLG1CQUFTLE1BQUtILGFBQUwsQ0FBbUJHLE9BRDhCO0FBRTFEQyxrQkFBUSxNQUFLSixhQUFMLENBQW1CSyxPQUYrQjtBQUcxREMscUJBQVcsTUFBS04sYUFBTCxDQUFtQk0sU0FINEI7QUFJMURDLHVCQUFhLE1BQUtWLFVBQUwsQ0FBZ0JXO0FBSjZCLFNBQWhDLENBQTVCOztBQU9BVCw0QkFBb0JVLElBQXBCLENBQXlCVCxhQUF6QjtBQUNELE9BVEQsTUFVSztBQUNIO0FBQ0EsY0FBTVUsa0JBQWtCLE1BQU0sTUFBS0Msa0JBQUwsQ0FBd0JmLElBQXhCLENBQTlCOztBQUVBLFlBQUksQ0FBQ2MsZUFBRCxJQUFvQkEsZ0JBQWdCRSxNQUFoQixLQUEyQixDQUFuRCxFQUFzRDtBQUNwRCxnQkFBS1osYUFBTCxDQUFtQmEsTUFBbkIsR0FBNEIsU0FBNUI7QUFDRCxTQUZELE1BR0s7QUFDSGQsZ0NBQXNCLE1BQU0sa0JBQVFlLEdBQVIsQ0FBWUosZ0JBQWdCSyxHQUFoQjtBQUFBLHdEQUFvQixXQUFPQyxJQUFQLEVBQWdCO0FBQzFFLG9CQUFNYixVQUFVYyxLQUFLQyxLQUFMLENBQVcseUJBQWUsTUFBS2xCLGFBQUwsQ0FBbUJHLE9BQWxDLENBQVgsQ0FBaEI7O0FBRUEsa0JBQUksQ0FBQ0EsUUFBUWdCLENBQWIsRUFBZ0I7QUFDZGhCLHdCQUFRZ0IsQ0FBUixHQUFZLEVBQVo7QUFDRDs7QUFFRGhCLHNCQUFRZ0IsQ0FBUixDQUFVSCxJQUFWLEdBQWlCQSxJQUFqQjs7QUFFQSxvQkFBTWhCLGdCQUFnQixNQUFNLE1BQUtDLE1BQUwsQ0FBWUMsbUJBQVosQ0FBZ0M7QUFDMURDLHVCQUQwRDtBQUUxREMsd0JBQVEsTUFBS0osYUFBTCxDQUFtQkssT0FGK0I7QUFHMURDLDJCQUFXLE1BQUtOLGFBQUwsQ0FBbUJNLFNBSDRCO0FBSTFEYyw4QkFBYyxJQUo0QztBQUsxRGIsNkJBQWEsTUFBS1YsVUFBTCxDQUFnQlc7QUFMNkIsZUFBaEMsQ0FBNUI7O0FBUUEscUJBQU9SLGFBQVA7QUFDRCxhQWxCdUM7O0FBQUE7QUFBQTtBQUFBO0FBQUEsZUFBWixDQUE1QjtBQW1CRDtBQUNGOztBQUVELFlBQUtBLGFBQUwsQ0FBbUJhLE1BQW5CLEdBQTRCLFFBQTVCO0FBQ0EsWUFBTSxNQUFLUSxhQUFMLENBQW1CdEIsbUJBQW5CLENBQU47QUFDRCxLQXpFOEM7QUFBQTs7QUFDekNZLG9CQUFOLENBQXlCZixJQUF6QixFQUErQjtBQUFBOztBQUFBO0FBQUEsWUFDckIwQixhQURxQixHQUNZLE1BRFosQ0FDckJBLGFBRHFCO0FBQUEsWUFDTnRCLGFBRE0sR0FDWSxNQURaLENBQ05BLGFBRE07QUFBQSxZQUVyQkcsT0FGcUIsR0FFVEgsYUFGUyxDQUVyQkcsT0FGcUI7OztBQUk3QixZQUFNb0IscUJBQXFCM0IsS0FBSzRCLE1BQUwsQ0FBWSxvQkFBWixDQUEzQjtBQUNBLFlBQU1DLGNBQWM3QixLQUFLOEIsZUFBTCxJQUF3QkMsT0FBTy9CLEtBQUs4QixlQUFMLENBQXFCRSxJQUE1QixDQUE1Qzs7QUFFQSxVQUFJQyxhQUFhLEVBQWpCOztBQUVBLFVBQUlOLGtCQUFKLEVBQXdCO0FBQ3RCTSxxQkFBYSxNQUFNUCxjQUFjQyxrQkFBZCxFQUFrQ3BCLE9BQWxDLENBQW5CO0FBQ0Q7O0FBRUQsVUFBSXNCLFdBQUosRUFBaUI7QUFDZixhQUFLLElBQUlLLElBQUksQ0FBYixFQUFnQkEsSUFBSUwsV0FBcEIsRUFBaUNLLEtBQUssQ0FBdEMsRUFBeUM7QUFDdkNELHFCQUFXcEIsSUFBWCxDQUFnQnFCLENBQWhCO0FBQ0Q7QUFDRjs7QUFFRCxhQUFPRCxVQUFQO0FBbkI2QjtBQW9COUI7O0FBckI4QztrQkFBNUJyQyxVIiwiZmlsZSI6IlN1YlByb2Nlc3MuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgQWN0aXZpdHkgZnJvbSAnbGliL0VsZW1lbnRzL0FjdGl2aXR5JztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgU3ViUHJvY2VzcyBleHRlbmRzIEFjdGl2aXR5IHtcbiAgYXN5bmMgZ2V0U3ViUHJvY2Vzc0l0ZW1zKGxvb3ApIHtcbiAgICBjb25zdCB7IGV2YWxDb25kaXRpb24sIHRva2VuSW5zdGFuY2UgfSA9IHRoaXM7XG4gICAgY29uc3QgeyBwYXlsb2FkIH0gPSB0b2tlbkluc3RhbmNlO1xuXG4gICAgY29uc3QgY29sbGVjdGlvbkxvY2F0aW9uID0gbG9vcC4kYXR0cnNbJ2NhbXVuZGE6Y29sbGVjdGlvbiddO1xuICAgIGNvbnN0IGNhcmRpbmFsaXR5ID0gbG9vcC5sb29wQ2FyZGluYWxpdHkgJiYgTnVtYmVyKGxvb3AubG9vcENhcmRpbmFsaXR5LmJvZHkpO1xuXG4gICAgbGV0IGNvbGxlY3Rpb24gPSBbXTtcblxuICAgIGlmIChjb2xsZWN0aW9uTG9jYXRpb24pIHtcbiAgICAgIGNvbGxlY3Rpb24gPSBhd2FpdCBldmFsQ29uZGl0aW9uKGNvbGxlY3Rpb25Mb2NhdGlvbiwgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgaWYgKGNhcmRpbmFsaXR5KSB7XG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNhcmRpbmFsaXR5OyBpICs9IDEpIHtcbiAgICAgICAgY29sbGVjdGlvbi5wdXNoKGkpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBjb2xsZWN0aW9uO1xuICB9XG5cbiAgbWFrZUFjdGl2ZSA9IGFzeW5jICgpID0+IHtcbiAgICBhd2FpdCB0aGlzLmNhbGxQbHVnaW5zKCdvbkFjdGl2ZScpO1xuXG4gICAgY29uc3QgbG9vcCA9IHRoaXMuZGVmaW5pdGlvbi5sb29wQ2hhcmFjdGVyaXN0aWNzO1xuXG4gICAgbGV0IGNoaWxkVG9rZW5JbnN0YW5jZXMgPSBbXTtcblxuICAgIC8vIG5vdCBsb29waW5nLCBub3QgYSBtdWx0aSBpbnN0YW5jZVxuICAgIGlmICghbG9vcCkge1xuICAgICAgY29uc3QgdG9rZW5JbnN0YW5jZSA9IGF3YWl0IHRoaXMuZW5naW5lLmNyZWF0ZVRva2VuSW5zdGFuY2Uoe1xuICAgICAgICBwYXlsb2FkOiB0aGlzLnRva2VuSW5zdGFuY2UucGF5bG9hZCxcbiAgICAgICAgcGFyZW50OiB0aGlzLnRva2VuSW5zdGFuY2UudG9rZW5JZCxcbiAgICAgICAgcHJvY2Vzc0lkOiB0aGlzLnRva2VuSW5zdGFuY2UucHJvY2Vzc0lkLFxuICAgICAgICBmbG93T2JqZWN0czogdGhpcy5kZWZpbml0aW9uLmZsb3dFbGVtZW50cyxcbiAgICAgIH0pO1xuXG4gICAgICBjaGlsZFRva2VuSW5zdGFuY2VzLnB1c2godG9rZW5JbnN0YW5jZSk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgLy8gZ2V0IGNhcmRpbmFsaXR5IG9yIGNvbGxlY3Rpb25cbiAgICAgIGNvbnN0IHN1YlByb2Nlc3NJdGVtcyA9IGF3YWl0IHRoaXMuZ2V0U3ViUHJvY2Vzc0l0ZW1zKGxvb3ApO1xuXG4gICAgICBpZiAoIXN1YlByb2Nlc3NJdGVtcyB8fCBzdWJQcm9jZXNzSXRlbXMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHRoaXMudG9rZW5JbnN0YW5jZS5zdGF0dXMgPSAncnVubmluZyc7XG4gICAgICB9XG4gICAgICBlbHNlIHtcbiAgICAgICAgY2hpbGRUb2tlbkluc3RhbmNlcyA9IGF3YWl0IFByb21pc2UuYWxsKHN1YlByb2Nlc3NJdGVtcy5tYXAoYXN5bmMgKGl0ZW0pID0+IHtcbiAgICAgICAgICBjb25zdCBwYXlsb2FkID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh0aGlzLnRva2VuSW5zdGFuY2UucGF5bG9hZCkpO1xuXG4gICAgICAgICAgaWYgKCFwYXlsb2FkLl8pIHtcbiAgICAgICAgICAgIHBheWxvYWQuXyA9IHt9O1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHBheWxvYWQuXy5pdGVtID0gaXRlbTtcblxuICAgICAgICAgIGNvbnN0IHRva2VuSW5zdGFuY2UgPSBhd2FpdCB0aGlzLmVuZ2luZS5jcmVhdGVUb2tlbkluc3RhbmNlKHtcbiAgICAgICAgICAgIHBheWxvYWQsXG4gICAgICAgICAgICBwYXJlbnQ6IHRoaXMudG9rZW5JbnN0YW5jZS50b2tlbklkLFxuICAgICAgICAgICAgcHJvY2Vzc0lkOiB0aGlzLnRva2VuSW5zdGFuY2UucHJvY2Vzc0lkLFxuICAgICAgICAgICAgaXNTdWJQcm9jZXNzOiB0cnVlLFxuICAgICAgICAgICAgZmxvd09iamVjdHM6IHRoaXMuZGVmaW5pdGlvbi5mbG93RWxlbWVudHMsXG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgICByZXR1cm4gdG9rZW5JbnN0YW5jZTtcbiAgICAgICAgfSkpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMudG9rZW5JbnN0YW5jZS5zdGF0dXMgPSAncGF1c2VkJztcbiAgICBhd2FpdCB0aGlzLnByb2Nlc3NDaGlsZHMoY2hpbGRUb2tlbkluc3RhbmNlcyk7XG4gIH07XG59XG4iXX0=