bpm-engine
Version:
Business Process Management Engine for JavaScript
116 lines (84 loc) • 9.85 kB
JavaScript
;
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=