UNPKG

workflow-4-node

Version:

Workflow 4 Node is a .NET Workflow Foundation like framework for Node.js. The goal is to reach feature equivalence and beyond.

171 lines (150 loc) 5.83 kB
"use strict"; var specStrings = require("../common/specStrings"); var InstIdPaths = require("./instIdPaths"); var _ = require("lodash"); var debug = require("debug")("wf4node:KnownInstaStore"); var enums = require("../common/enums"); function KnownInstaStore() { this._instances = new Map(); } KnownInstaStore.prototype.add = function (workflowName, insta) { this._instances.set(specStrings.hosting.doubleKeys(workflowName, insta.id), insta); }; KnownInstaStore.prototype.get = function (workflowName, instanceId) { return this._instances.get(specStrings.hosting.doubleKeys(workflowName, instanceId)); }; KnownInstaStore.prototype.exists = function (workflowName, instanceId) { return this._instances.has(specStrings.hosting.doubleKeys(workflowName, instanceId)); }; KnownInstaStore.prototype.remove = function (workflowName, instanceId) { this._instances.delete(specStrings.hosting.doubleKeys(workflowName, instanceId)); }; KnownInstaStore.prototype.getNextWakeupables = function (count) { var now = new Date(); var result = []; var _iteratorNormalCompletion = true; var _didIteratorError = false; var _iteratorError = undefined; try { for (var _iterator = this._instances.values()[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { var insta = _step.value; if (insta.execState === enums.activityStates.idle && insta.activeDelays) { var _iteratorNormalCompletion2 = true; var _didIteratorError2 = false; var _iteratorError2 = undefined; try { for (var _iterator2 = insta.activeDelays[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) { var ad = _step2.value; if (ad.delayTo <= now) { result.push({ instanceId: insta.id, workflowName: insta.workflowName, activeDelay: { methodName: ad.methodName, delayTo: ad.delayTo } }); } } } catch (err) { _didIteratorError2 = true; _iteratorError2 = err; } finally { try { if (!_iteratorNormalCompletion2 && _iterator2.return) { _iterator2.return(); } } finally { if (_didIteratorError2) { throw _iteratorError2; } } } } } } catch (err) { _didIteratorError = true; _iteratorError = err; } finally { try { if (!_iteratorNormalCompletion && _iterator.return) { _iterator.return(); } } finally { if (_didIteratorError) { throw _iteratorError; } } } result.sort(function (i1, i2) { if (i1.updatedOn < i2.updatedOn) { return -1; } else if (i1.updatedOn > i2.updatedOn) { return 1; } else if (i1.activeDelay.delayTo < i2.activeDelay.delayTo) { return -1; } else if (i1.activeDelay.delayTo > i2.activeDelay.delayTo) { return 1; } return 0; }); return _.take(result, count); }; KnownInstaStore.prototype.getRunningInstanceHeadersForOtherVersion = function (workflowName, version) { var result = []; var _iteratorNormalCompletion3 = true; var _didIteratorError3 = false; var _iteratorError3 = undefined; try { for (var _iterator3 = this._instances.values()[Symbol.iterator](), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) { var insta = _step3.value; if (insta.workflowName === workflowName && insta.version !== version) { result.push({ workflowName: insta.workflowName, workflowVersion: insta.workflowVersion, instanceId: insta.id }); } } } catch (err) { _didIteratorError3 = true; _iteratorError3 = err; } finally { try { if (!_iteratorNormalCompletion3 && _iterator3.return) { _iterator3.return(); } } finally { if (_didIteratorError3) { throw _iteratorError3; } } } return result; }; KnownInstaStore.prototype.addTracker = function (tracker) { var _iteratorNormalCompletion4 = true; var _didIteratorError4 = false; var _iteratorError4 = undefined; try { for (var _iterator4 = this._instances.values()[Symbol.iterator](), _step4; !(_iteratorNormalCompletion4 = (_step4 = _iterator4.next()).done); _iteratorNormalCompletion4 = true) { var insta = _step4.value; insta.addTracker(tracker); } } catch (err) { _didIteratorError4 = true; _iteratorError4 = err; } finally { try { if (!_iteratorNormalCompletion4 && _iterator4.return) { _iterator4.return(); } } finally { if (_didIteratorError4) { throw _iteratorError4; } } } }; module.exports = KnownInstaStore; //# sourceMappingURL=knownInstaStore.js.map