bpm-engine
Version:
Business Process Management Engine for JavaScript
79 lines (55 loc) • 7.42 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
var _asyncToGenerator2 = require('babel-runtime/helpers/asyncToGenerator');
var _asyncToGenerator3 = _interopRequireDefault(_asyncToGenerator2);
var _Event = require('./Event');
var _Event2 = _interopRequireDefault(_Event);
var _iso8601RepeatingInterval = require('iso8601-repeating-interval');
var _iso8601RepeatingInterval2 = _interopRequireDefault(_iso8601RepeatingInterval);
var _constants = require('../constants');
var constants = _interopRequireWildcard(_constants);
function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
const evaluateIntervalString = body => {
const extendedBody = `R2/\${timestamp}/${body}`;
const fnBody = `return \`${extendedBody}\`;`;
const f = new Function('timestamp', fnBody);
const intervalString = f(new Date().toISOString());
return intervalString;
};
class IntermediateCatchEvent extends _Event2.default {
constructor(...args) {
var _temp, _this;
return _temp = _this = super(...args), this.makeActive = (0, _asyncToGenerator3.default)(function* () {
yield _this.callPlugins('onActive');
_this.tokenInstance.status = 'paused';
yield _this.tokenInstance.persistUpdate();
// create the timer event so the process continues at some point
const eventDefinitions = _this.definition.eventDefinitions;
const firstEventDefinition = eventDefinitions[0];
if (firstEventDefinition) {
const timeDuration = firstEventDefinition.timeDuration;
if (timeDuration) {
const intervalString = evaluateIntervalString(timeDuration.body);
const interval = (0, _iso8601RepeatingInterval2.default)(intervalString);
const firstAfter = interval.firstAfter(new Date() - 1000);
if (firstAfter && firstAfter.index === 0) {
const secondAfter = interval.firstAfter(firstAfter.time + 500);
yield _this.persist.timer.create({
timerId: _this.engine.generateId(),
index: secondAfter.index,
time: secondAfter.date / 1,
interval: intervalString,
intent: constants.CONTINUE_TOKEN_INSTANCE_INTENT,
tokenId: _this.tokenInstance.tokenId
});
}
}
}
}), _temp;
}
}
exports.default = IntermediateCatchEvent;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIvRWxlbWVudHMvSW50ZXJtZWRpYXRlQ2F0Y2hFdmVudC5qcyJdLCJuYW1lcyI6WyJjb25zdGFudHMiLCJldmFsdWF0ZUludGVydmFsU3RyaW5nIiwiYm9keSIsImV4dGVuZGVkQm9keSIsImZuQm9keSIsImYiLCJGdW5jdGlvbiIsImludGVydmFsU3RyaW5nIiwiRGF0ZSIsInRvSVNPU3RyaW5nIiwiSW50ZXJtZWRpYXRlQ2F0Y2hFdmVudCIsIkV2ZW50IiwibWFrZUFjdGl2ZSIsImNhbGxQbHVnaW5zIiwidG9rZW5JbnN0YW5jZSIsInN0YXR1cyIsInBlcnNpc3RVcGRhdGUiLCJldmVudERlZmluaXRpb25zIiwiZGVmaW5pdGlvbiIsImZpcnN0RXZlbnREZWZpbml0aW9uIiwidGltZUR1cmF0aW9uIiwiaW50ZXJ2YWwiLCJmaXJzdEFmdGVyIiwiaW5kZXgiLCJzZWNvbmRBZnRlciIsInRpbWUiLCJwZXJzaXN0IiwidGltZXIiLCJjcmVhdGUiLCJ0aW1lcklkIiwiZW5naW5lIiwiZ2VuZXJhdGVJZCIsImRhdGUiLCJpbnRlbnQiLCJDT05USU5VRV9UT0tFTl9JTlNUQU5DRV9JTlRFTlQiLCJ0b2tlbklkIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBQUE7Ozs7QUFDQTs7OztBQUNBOztJQUFZQSxTOzs7Ozs7QUFFWixNQUFNQyx5QkFBMEJDLElBQUQsSUFBVTtBQUN2QyxRQUFNQyxlQUFnQixvQkFBbUJELElBQUssRUFBOUM7O0FBRUEsUUFBTUUsU0FBVSxZQUFXRCxZQUFhLEtBQXhDO0FBQ0EsUUFBTUUsSUFBSSxJQUFJQyxRQUFKLENBQWEsV0FBYixFQUEwQkYsTUFBMUIsQ0FBVjtBQUNBLFFBQU1HLGlCQUFpQkYsRUFBRSxJQUFJRyxJQUFKLEdBQVdDLFdBQVgsRUFBRixDQUF2QjtBQUNBLFNBQU9GLGNBQVA7QUFDRCxDQVBEOztBQVNlLE1BQU1HLHNCQUFOLFNBQXFDQyxlQUFyQyxDQUEyQztBQUFBO0FBQUE7O0FBQUEsZ0RBQ3hEQyxVQUR3RCxtQ0FDM0MsYUFBWTtBQUN2QixZQUFNLE1BQUtDLFdBQUwsQ0FBaUIsVUFBakIsQ0FBTjtBQUNBLFlBQUtDLGFBQUwsQ0FBbUJDLE1BQW5CLEdBQTRCLFFBQTVCOztBQUVBLFlBQU0sTUFBS0QsYUFBTCxDQUFtQkUsYUFBbkIsRUFBTjs7QUFFQTtBQU51QixZQU9mQyxnQkFQZSxHQU9NLE1BQUtDLFVBUFgsQ0FPZkQsZ0JBUGU7O0FBUXZCLFlBQU1FLHVCQUF1QkYsaUJBQWlCLENBQWpCLENBQTdCOztBQUVBLFVBQUlFLG9CQUFKLEVBQTBCO0FBQUEsY0FDaEJDLFlBRGdCLEdBQ0NELG9CQURELENBQ2hCQyxZQURnQjs7O0FBR3hCLFlBQUlBLFlBQUosRUFBa0I7QUFDaEIsZ0JBQU1iLGlCQUFpQk4sdUJBQXVCbUIsYUFBYWxCLElBQXBDLENBQXZCO0FBQ0EsZ0JBQU1tQixXQUFXLHdDQUFhZCxjQUFiLENBQWpCO0FBQ0EsZ0JBQU1lLGFBQWFELFNBQVNDLFVBQVQsQ0FBb0IsSUFBSWQsSUFBSixLQUFhLElBQWpDLENBQW5COztBQUVBLGNBQUljLGNBQWNBLFdBQVdDLEtBQVgsS0FBcUIsQ0FBdkMsRUFBMEM7QUFDeEMsa0JBQU1DLGNBQWNILFNBQVNDLFVBQVQsQ0FBb0JBLFdBQVdHLElBQVgsR0FBa0IsR0FBdEMsQ0FBcEI7O0FBRUEsa0JBQU0sTUFBS0MsT0FBTCxDQUFhQyxLQUFiLENBQW1CQyxNQUFuQixDQUEwQjtBQUM5QkMsdUJBQVMsTUFBS0MsTUFBTCxDQUFZQyxVQUFaLEVBRHFCO0FBRTlCUixxQkFBT0MsWUFBWUQsS0FGVztBQUc5QkUsb0JBQU1ELFlBQVlRLElBQVosR0FBbUIsQ0FISztBQUk5Qlgsd0JBQVVkLGNBSm9CO0FBSzlCMEIsc0JBQVFqQyxVQUFVa0MsOEJBTFk7QUFNOUJDLHVCQUFTLE1BQUtyQixhQUFMLENBQW1CcUI7QUFORSxhQUExQixDQUFOO0FBUUQ7QUFDRjtBQUNGO0FBQ0YsS0FqQ3VEO0FBQUE7O0FBQUE7a0JBQXJDekIsc0IiLCJmaWxlIjoiSW50ZXJtZWRpYXRlQ2F0Y2hFdmVudC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBFdmVudCBmcm9tICdsaWIvRWxlbWVudHMvRXZlbnQnO1xuaW1wb3J0IG1ha2VJbnRlcnZhbCBmcm9tICdpc284NjAxLXJlcGVhdGluZy1pbnRlcnZhbCc7XG5pbXBvcnQgKiBhcyBjb25zdGFudHMgZnJvbSAnbGliL2NvbnN0YW50cyc7XG5cbmNvbnN0IGV2YWx1YXRlSW50ZXJ2YWxTdHJpbmcgPSAoYm9keSkgPT4ge1xuICBjb25zdCBleHRlbmRlZEJvZHkgPSBgUjIvXFwke3RpbWVzdGFtcH0vJHtib2R5fWA7XG5cbiAgY29uc3QgZm5Cb2R5ID0gYHJldHVybiBcXGAke2V4dGVuZGVkQm9keX1cXGA7YDtcbiAgY29uc3QgZiA9IG5ldyBGdW5jdGlvbigndGltZXN0YW1wJywgZm5Cb2R5KTtcbiAgY29uc3QgaW50ZXJ2YWxTdHJpbmcgPSBmKG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSk7XG4gIHJldHVybiBpbnRlcnZhbFN0cmluZztcbn07XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEludGVybWVkaWF0ZUNhdGNoRXZlbnQgZXh0ZW5kcyBFdmVudCB7XG4gIG1ha2VBY3RpdmUgPSBhc3luYyAoKSA9PiB7XG4gICAgYXdhaXQgdGhpcy5jYWxsUGx1Z2lucygnb25BY3RpdmUnKTtcbiAgICB0aGlzLnRva2VuSW5zdGFuY2Uuc3RhdHVzID0gJ3BhdXNlZCc7XG5cbiAgICBhd2FpdCB0aGlzLnRva2VuSW5zdGFuY2UucGVyc2lzdFVwZGF0ZSgpO1xuXG4gICAgLy8gY3JlYXRlIHRoZSB0aW1lciBldmVudCBzbyB0aGUgcHJvY2VzcyBjb250aW51ZXMgYXQgc29tZSBwb2ludFxuICAgIGNvbnN0IHsgZXZlbnREZWZpbml0aW9ucyB9ID0gdGhpcy5kZWZpbml0aW9uO1xuICAgIGNvbnN0IGZpcnN0RXZlbnREZWZpbml0aW9uID0gZXZlbnREZWZpbml0aW9uc1swXTtcblxuICAgIGlmIChmaXJzdEV2ZW50RGVmaW5pdGlvbikge1xuICAgICAgY29uc3QgeyB0aW1lRHVyYXRpb24gfSA9IGZpcnN0RXZlbnREZWZpbml0aW9uO1xuXG4gICAgICBpZiAodGltZUR1cmF0aW9uKSB7XG4gICAgICAgIGNvbnN0IGludGVydmFsU3RyaW5nID0gZXZhbHVhdGVJbnRlcnZhbFN0cmluZyh0aW1lRHVyYXRpb24uYm9keSk7XG4gICAgICAgIGNvbnN0IGludGVydmFsID0gbWFrZUludGVydmFsKGludGVydmFsU3RyaW5nKTtcbiAgICAgICAgY29uc3QgZmlyc3RBZnRlciA9IGludGVydmFsLmZpcnN0QWZ0ZXIobmV3IERhdGUoKSAtIDEwMDApO1xuXG4gICAgICAgIGlmIChmaXJzdEFmdGVyICYmIGZpcnN0QWZ0ZXIuaW5kZXggPT09IDApIHtcbiAgICAgICAgICBjb25zdCBzZWNvbmRBZnRlciA9IGludGVydmFsLmZpcnN0QWZ0ZXIoZmlyc3RBZnRlci50aW1lICsgNTAwKTtcblxuICAgICAgICAgIGF3YWl0IHRoaXMucGVyc2lzdC50aW1lci5jcmVhdGUoe1xuICAgICAgICAgICAgdGltZXJJZDogdGhpcy5lbmdpbmUuZ2VuZXJhdGVJZCgpLFxuICAgICAgICAgICAgaW5kZXg6IHNlY29uZEFmdGVyLmluZGV4LFxuICAgICAgICAgICAgdGltZTogc2Vjb25kQWZ0ZXIuZGF0ZSAvIDEsXG4gICAgICAgICAgICBpbnRlcnZhbDogaW50ZXJ2YWxTdHJpbmcsXG4gICAgICAgICAgICBpbnRlbnQ6IGNvbnN0YW50cy5DT05USU5VRV9UT0tFTl9JTlNUQU5DRV9JTlRFTlQsXG4gICAgICAgICAgICB0b2tlbklkOiB0aGlzLnRva2VuSW5zdGFuY2UudG9rZW5JZCxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfTtcbn1cbiJdfQ==