@entity-access/entity-access 1.0.161 → 1.0.163
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.ts +4 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -4
- package/dist/index.js.map +1 -1
- package/dist/tests/eternity/child-tests.js +8 -8
- package/dist/tests/eternity/child-tests.js.map +1 -1
- package/dist/tests/eternity/eternity-tests.js +8 -8
- package/dist/tests/eternity/eternity-tests.js.map +1 -1
- package/dist/tests/eternity/external-event-tests.js +8 -8
- package/dist/tests/eternity/external-event-tests.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/workflows/ActivitySuspendedError.d.ts.map +1 -0
- package/dist/workflows/ActivitySuspendedError.js.map +1 -0
- package/dist/workflows/Waiter.d.ts +11 -0
- package/dist/workflows/Waiter.d.ts.map +1 -0
- package/dist/workflows/Waiter.js +22 -0
- package/dist/workflows/Waiter.js.map +1 -0
- package/dist/{eternity → workflows}/Workflow.d.ts +3 -3
- package/dist/workflows/Workflow.d.ts.map +1 -0
- package/dist/workflows/Workflow.js.map +1 -0
- package/dist/workflows/WorkflowClock.d.ts.map +1 -0
- package/dist/workflows/WorkflowClock.js.map +1 -0
- package/dist/{eternity/EternityContext.d.ts → workflows/WorkflowContext.d.ts} +13 -8
- package/dist/workflows/WorkflowContext.d.ts.map +1 -0
- package/dist/{eternity/EternityContext.js → workflows/WorkflowContext.js} +37 -26
- package/dist/workflows/WorkflowContext.js.map +1 -0
- package/dist/workflows/WorkflowRegistry.d.ts.map +1 -0
- package/dist/workflows/WorkflowRegistry.js.map +1 -0
- package/dist/{eternity/EternityStorage.d.ts → workflows/WorkflowStorage.d.ts} +6 -5
- package/dist/workflows/WorkflowStorage.d.ts.map +1 -0
- package/dist/{eternity/EternityStorage.js → workflows/WorkflowStorage.js} +45 -33
- package/dist/workflows/WorkflowStorage.js.map +1 -0
- package/package.json +1 -1
- package/src/index.ts +4 -4
- package/src/tests/eternity/child-tests.ts +8 -8
- package/src/tests/eternity/eternity-tests.ts +8 -8
- package/src/tests/eternity/external-event-tests.ts +8 -8
- package/src/workflows/Waiter.ts +24 -0
- package/src/{eternity → workflows}/Workflow.ts +2 -2
- package/src/{eternity/EternityContext.ts → workflows/WorkflowContext.ts} +15 -16
- package/src/{eternity/EternityStorage.ts → workflows/WorkflowStorage.ts} +22 -11
- package/dist/eternity/ActivitySuspendedError.d.ts.map +0 -1
- package/dist/eternity/ActivitySuspendedError.js.map +0 -1
- package/dist/eternity/EternityContext.d.ts.map +0 -1
- package/dist/eternity/EternityContext.js.map +0 -1
- package/dist/eternity/EternityStorage.d.ts.map +0 -1
- package/dist/eternity/EternityStorage.js.map +0 -1
- package/dist/eternity/Workflow.d.ts.map +0 -1
- package/dist/eternity/Workflow.js.map +0 -1
- package/dist/eternity/WorkflowClock.d.ts.map +0 -1
- package/dist/eternity/WorkflowClock.js.map +0 -1
- package/dist/eternity/WorkflowRegistry.d.ts.map +0 -1
- package/dist/eternity/WorkflowRegistry.js.map +0 -1
- /package/dist/{eternity → workflows}/ActivitySuspendedError.d.ts +0 -0
- /package/dist/{eternity → workflows}/ActivitySuspendedError.js +0 -0
- /package/dist/{eternity → workflows}/Workflow.js +0 -0
- /package/dist/{eternity → workflows}/WorkflowClock.d.ts +0 -0
- /package/dist/{eternity → workflows}/WorkflowClock.js +0 -0
- /package/dist/{eternity → workflows}/WorkflowRegistry.d.ts +0 -0
- /package/dist/{eternity → workflows}/WorkflowRegistry.js +0 -0
- /package/src/{eternity → workflows}/ActivitySuspendedError.ts +0 -0
- /package/src/{eternity → workflows}/WorkflowClock.ts +0 -0
- /package/src/{eternity → workflows}/WorkflowRegistry.ts +0 -0
|
@@ -4,12 +4,13 @@ import { randomUUID } from "crypto";
|
|
|
4
4
|
import EntityAccessError from "../common/EntityAccessError.js";
|
|
5
5
|
import Inject, { ServiceProvider, injectServiceKeysSymbol } from "../di/di.js";
|
|
6
6
|
import DateTime from "../types/DateTime.js";
|
|
7
|
-
import
|
|
7
|
+
import WorkflowStorage from "./WorkflowStorage.js";
|
|
8
8
|
import { ActivitySuspendedError } from "./ActivitySuspendedError.js";
|
|
9
9
|
import { WorkflowRegistry } from "./WorkflowRegistry.js";
|
|
10
10
|
import crypto from "crypto";
|
|
11
11
|
import TimeSpan from "../types/TimeSpan.js";
|
|
12
12
|
import sleep from "../common/sleep.js";
|
|
13
|
+
import Waiter from "./Waiter.js";
|
|
13
14
|
async function hash(text) {
|
|
14
15
|
const sha256 = crypto.createHash("sha256");
|
|
15
16
|
return sha256.update(text).digest("base64");
|
|
@@ -108,7 +109,7 @@ function bindStep(context, store, name, old, unique = false) {
|
|
|
108
109
|
return lastResult;
|
|
109
110
|
};
|
|
110
111
|
}
|
|
111
|
-
let
|
|
112
|
+
let WorkflowContext = class WorkflowContext {
|
|
112
113
|
constructor(storage) {
|
|
113
114
|
this.storage = storage;
|
|
114
115
|
this.registry = new Map();
|
|
@@ -116,21 +117,31 @@ let EternityContext = class EternityContext {
|
|
|
116
117
|
register(type) {
|
|
117
118
|
this.registry.set(type.name, WorkflowRegistry.register(type, void 0));
|
|
118
119
|
}
|
|
119
|
-
async start(signal) {
|
|
120
|
+
async start({ workerGroup = "default", signal = void 0 }) {
|
|
120
121
|
console.log(`Started executing workflow jobs`);
|
|
121
122
|
while (!signal?.aborted) {
|
|
123
|
+
const env_1 = { stack: [], error: void 0, hasError: false };
|
|
122
124
|
try {
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
125
|
+
try {
|
|
126
|
+
const total = await this.processQueueOnce({ workerGroup, signal });
|
|
127
|
+
if (total > 0) {
|
|
128
|
+
// do not wait till we have zero messages to process
|
|
129
|
+
continue;
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
catch (error) {
|
|
133
|
+
console.error(error);
|
|
127
134
|
}
|
|
135
|
+
const ws = __addDisposableResource(env_1, Waiter.create(), false);
|
|
136
|
+
await sleep(15000, ws.signal);
|
|
128
137
|
}
|
|
129
|
-
catch (
|
|
130
|
-
|
|
138
|
+
catch (e_1) {
|
|
139
|
+
env_1.error = e_1;
|
|
140
|
+
env_1.hasError = true;
|
|
141
|
+
}
|
|
142
|
+
finally {
|
|
143
|
+
__disposeResources(env_1);
|
|
131
144
|
}
|
|
132
|
-
const ws = (this.waiter = new AbortController()).signal;
|
|
133
|
-
await sleep(15000, ws);
|
|
134
145
|
}
|
|
135
146
|
}
|
|
136
147
|
async get(c, id) {
|
|
@@ -183,7 +194,7 @@ let EternityContext = class EternityContext {
|
|
|
183
194
|
eta
|
|
184
195
|
});
|
|
185
196
|
if (eta < clock.utcNow) {
|
|
186
|
-
|
|
197
|
+
Waiter.releaseAll();
|
|
187
198
|
}
|
|
188
199
|
}
|
|
189
200
|
catch (error) {
|
|
@@ -217,13 +228,13 @@ let EternityContext = class EternityContext {
|
|
|
217
228
|
parent.eta = w.updated;
|
|
218
229
|
parent.updated = w.updated;
|
|
219
230
|
await this.storage.save(parent);
|
|
220
|
-
|
|
231
|
+
Waiter.releaseAll();
|
|
221
232
|
}
|
|
222
233
|
log(...a) {
|
|
223
234
|
// console.log(... a);
|
|
224
235
|
}
|
|
225
|
-
async processQueueOnce(signal) {
|
|
226
|
-
const pending = await this.storage.dequeue(signal);
|
|
236
|
+
async processQueueOnce({ workerGroup = "default", signal = void 0 } = {}) {
|
|
237
|
+
const pending = await this.storage.dequeue(workerGroup, signal);
|
|
227
238
|
// run...
|
|
228
239
|
for (const iterator of pending) {
|
|
229
240
|
try {
|
|
@@ -259,7 +270,7 @@ let EternityContext = class EternityContext {
|
|
|
259
270
|
throw new ActivitySuspendedError();
|
|
260
271
|
}
|
|
261
272
|
async run(workflow) {
|
|
262
|
-
const
|
|
273
|
+
const env_2 = { stack: [], error: void 0, hasError: false };
|
|
263
274
|
try {
|
|
264
275
|
const clock = this.storage.clock;
|
|
265
276
|
if (workflow.state === "failed" || workflow.state === "done") {
|
|
@@ -269,7 +280,7 @@ let EternityContext = class EternityContext {
|
|
|
269
280
|
}
|
|
270
281
|
return;
|
|
271
282
|
}
|
|
272
|
-
const scope = __addDisposableResource(
|
|
283
|
+
const scope = __addDisposableResource(env_2, ServiceProvider.from(this).createScope(), false);
|
|
273
284
|
this.log(`Run workflow ${workflow.id} -----------------------------------`);
|
|
274
285
|
const schema = WorkflowRegistry.getByName(workflow.name);
|
|
275
286
|
const { eta, id, queued } = workflow;
|
|
@@ -322,18 +333,18 @@ let EternityContext = class EternityContext {
|
|
|
322
333
|
}
|
|
323
334
|
}
|
|
324
335
|
}
|
|
325
|
-
catch (
|
|
326
|
-
|
|
327
|
-
|
|
336
|
+
catch (e_2) {
|
|
337
|
+
env_2.error = e_2;
|
|
338
|
+
env_2.hasError = true;
|
|
328
339
|
}
|
|
329
340
|
finally {
|
|
330
|
-
__disposeResources(
|
|
341
|
+
__disposeResources(env_2);
|
|
331
342
|
}
|
|
332
343
|
}
|
|
333
344
|
};
|
|
334
|
-
|
|
345
|
+
WorkflowContext = __decorate([
|
|
335
346
|
__param(0, Inject),
|
|
336
|
-
__metadata("design:paramtypes", [
|
|
337
|
-
],
|
|
338
|
-
export default
|
|
339
|
-
//# sourceMappingURL=
|
|
347
|
+
__metadata("design:paramtypes", [WorkflowStorage])
|
|
348
|
+
], WorkflowContext);
|
|
349
|
+
export default WorkflowContext;
|
|
350
|
+
//# sourceMappingURL=WorkflowContext.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WorkflowContext.js","sourceRoot":"","sources":["../../src/workflows/WorkflowContext.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WorkflowRegistry.d.ts","sourceRoot":"","sources":["../../src/workflows/WorkflowRegistry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AACrD,OAAO,KAAK,QAAQ,MAAM,eAAe,CAAC;AAE1C,MAAM,WAAW,eAAe;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,QAAQ,CAAC,QAAQ,CAAC,CAAC;IACzB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,gBAAgB,EAAE,MAAM,EAAE,CAAC;CAC9B;AAKD,eAAO,MAAM,gBAAgB;qBACR,SAAS,GAAG,CAAC;oBAgBd,MAAM;CAGzB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WorkflowRegistry.js","sourceRoot":"","sources":["../../src/workflows/WorkflowRegistry.ts"],"names":[],"mappings":"AAUA,sDAAsD;AACtD,MAAM,YAAY,GAAgC,IAAI,GAAG,EAAE,CAAC;AAE5D,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC5B,QAAQ,CAAC,MAAqB,EAAE,GAAG,EAAE,MAAM,GAAG,KAAK;QAC/C,IAAI,OAAO,GAAG,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAC5C,IAAI,CAAC,OAAO,EAAE;YACV,OAAO,GAAG,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,OAAO,EAAE,sBAAsB,CAAC,EAAE,gBAAgB,EAAE,EAAE,EAAE,CAAC;YACnH,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;SAC1C;QACD,IAAI,GAAG,EAAE;YACL,IAAI,MAAM,EAAE;gBACR,OAAO,CAAC,gBAAgB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;aACtC;iBAAM;gBACH,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;aAChC;SACJ;QACD,OAAO,OAAO,CAAC;IACnB,CAAC;IAED,SAAS,CAAC,IAAY;QAClB,OAAO,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAClC,CAAC;CACJ,CAAC"}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
import { BaseDriver } from "../drivers/base/BaseDriver.js";
|
|
3
3
|
import DateTime from "../types/DateTime.js";
|
|
4
4
|
import WorkflowClock from "./WorkflowClock.js";
|
|
5
|
-
export declare class
|
|
5
|
+
export declare class WorkflowItem {
|
|
6
6
|
id: string;
|
|
7
7
|
isWorkflow: boolean;
|
|
8
8
|
name: string;
|
|
@@ -12,6 +12,7 @@ export declare class WorkflowStorage {
|
|
|
12
12
|
eta: DateTime;
|
|
13
13
|
queued: DateTime;
|
|
14
14
|
updated: DateTime;
|
|
15
|
+
workerGroup: string;
|
|
15
16
|
priority: number;
|
|
16
17
|
lockedTTL: DateTime;
|
|
17
18
|
lockToken: string;
|
|
@@ -21,7 +22,7 @@ export declare class WorkflowStorage {
|
|
|
21
22
|
parentID: string;
|
|
22
23
|
lastID: string;
|
|
23
24
|
}
|
|
24
|
-
export default class
|
|
25
|
+
export default class WorkflowStorage {
|
|
25
26
|
private driver;
|
|
26
27
|
readonly clock: WorkflowClock;
|
|
27
28
|
private lockQuery;
|
|
@@ -58,8 +59,8 @@ export default class EternityStorage {
|
|
|
58
59
|
* @returns true if all items are deleted
|
|
59
60
|
*/
|
|
60
61
|
delete(id: any): Promise<boolean>;
|
|
61
|
-
save(state: Partial<
|
|
62
|
-
dequeue(signal?: AbortSignal): Promise<
|
|
62
|
+
save(state: Partial<WorkflowItem>): Promise<void>;
|
|
63
|
+
dequeue(workerGroup: string, signal?: AbortSignal): Promise<WorkflowItem[]>;
|
|
63
64
|
seed(): Promise<void>;
|
|
64
65
|
}
|
|
65
|
-
//# sourceMappingURL=
|
|
66
|
+
//# sourceMappingURL=WorkflowStorage.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WorkflowStorage.d.ts","sourceRoot":"","sources":["../../src/workflows/WorkflowStorage.ts"],"names":[],"mappings":";AAKA,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAG3D,OAAO,QAAQ,MAAM,sBAAsB,CAAC;AAC5C,OAAO,aAAa,MAAM,oBAAoB,CAAC;AAG/C,qBAca,YAAY;IAGd,EAAE,EAAE,MAAM,CAAC;IAGX,UAAU,EAAE,OAAO,CAAC;IAGpB,IAAI,EAAE,MAAM,CAAC;IAGb,SAAS,EAAE,MAAM,CAAC;IAGlB,KAAK,EAAE,MAAM,CAAC;IAGd,MAAM,EAAE,MAAM,CAAC;IAGf,GAAG,EAAE,QAAQ,CAAC;IAGd,MAAM,EAAE,QAAQ,CAAC;IAGjB,OAAO,EAAE,QAAQ,CAAC;IAMlB,WAAW,EAAE,MAAM,CAAC;IAGpB,QAAQ,EAAE,MAAM,CAAC;IAGjB,SAAS,EAAE,QAAQ,CAAC;IAGpB,SAAS,EAAE,MAAM,CAAC;IAGlB,KAAK,EAAE,QAAQ,GAAG,QAAQ,GAAG,MAAM,CAAC;IAGpC,KAAK,EAAE,MAAM,CAAC;IAGd,KAAK,EAAE,MAAM,CAAC;IAGd,QAAQ,EAAE,MAAM,CAAC;IAGjB,MAAM,EAAE,MAAM,CAAC;CACzB;AAcD,MAAM,CAAC,OAAO,OAAO,eAAe;IAM5B,OAAO,CAAC,MAAM;aAEE,KAAK,EAAE,aAAa;IANxC,OAAO,CAAC,SAAS,CAAW;gBAIhB,MAAM,EAAE,UAAU,EAEV,KAAK,EAAE,aAAa;IAKlC,WAAW,CAAC,EAAE,EAAE,MAAM;;;;;;;;;;;;;IAsBtB,MAAM,CAAC,EAAE,EAAE,MAAM;;;;;;;;;;;;;IAqBvB;;;;OAIG;IACG,MAAM,CAAC,EAAE,KAAA;IAwBT,IAAI,CAAC,KAAK,EAAE,OAAO,CAAC,YAAY,CAAC;IAuBjC,OAAO,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW;IAqEjD,IAAI;CAMb"}
|
|
@@ -9,77 +9,84 @@ import EntityContext from "../model/EntityContext.js";
|
|
|
9
9
|
import { CallExpression, Expression, NullExpression, NumberLiteral, UpdateStatement } from "../query/ast/Expressions.js";
|
|
10
10
|
import DateTime from "../types/DateTime.js";
|
|
11
11
|
import WorkflowClock from "./WorkflowClock.js";
|
|
12
|
-
let
|
|
12
|
+
let WorkflowItem = class WorkflowItem {
|
|
13
13
|
};
|
|
14
14
|
__decorate([
|
|
15
15
|
Column({ dataType: "Char", length: 400, key: true }),
|
|
16
16
|
__metadata("design:type", String)
|
|
17
|
-
],
|
|
17
|
+
], WorkflowItem.prototype, "id", void 0);
|
|
18
18
|
__decorate([
|
|
19
19
|
Column({ dataType: "Boolean" }),
|
|
20
20
|
__metadata("design:type", Boolean)
|
|
21
|
-
],
|
|
21
|
+
], WorkflowItem.prototype, "isWorkflow", void 0);
|
|
22
22
|
__decorate([
|
|
23
23
|
Column({ dataType: "Char", nullable: true }),
|
|
24
24
|
__metadata("design:type", String)
|
|
25
|
-
],
|
|
25
|
+
], WorkflowItem.prototype, "name", void 0);
|
|
26
26
|
__decorate([
|
|
27
27
|
Column({ dataType: "Char", length: 200, nullable: true }),
|
|
28
28
|
__metadata("design:type", String)
|
|
29
|
-
],
|
|
29
|
+
], WorkflowItem.prototype, "groupName", void 0);
|
|
30
30
|
__decorate([
|
|
31
31
|
Column({ dataType: "Char" }),
|
|
32
32
|
__metadata("design:type", String)
|
|
33
|
-
],
|
|
33
|
+
], WorkflowItem.prototype, "input", void 0);
|
|
34
34
|
__decorate([
|
|
35
35
|
Column({ dataType: "Char", nullable: true }),
|
|
36
36
|
__metadata("design:type", String)
|
|
37
|
-
],
|
|
37
|
+
], WorkflowItem.prototype, "output", void 0);
|
|
38
38
|
__decorate([
|
|
39
39
|
Column({}),
|
|
40
40
|
__metadata("design:type", DateTime)
|
|
41
|
-
],
|
|
41
|
+
], WorkflowItem.prototype, "eta", void 0);
|
|
42
42
|
__decorate([
|
|
43
43
|
Column({}),
|
|
44
44
|
__metadata("design:type", DateTime)
|
|
45
|
-
],
|
|
45
|
+
], WorkflowItem.prototype, "queued", void 0);
|
|
46
46
|
__decorate([
|
|
47
47
|
Column({}),
|
|
48
48
|
__metadata("design:type", DateTime)
|
|
49
|
-
],
|
|
49
|
+
], WorkflowItem.prototype, "updated", void 0);
|
|
50
|
+
__decorate([
|
|
51
|
+
Column({
|
|
52
|
+
dataType: "Char", length: 50,
|
|
53
|
+
default: () => `default`
|
|
54
|
+
}),
|
|
55
|
+
__metadata("design:type", String)
|
|
56
|
+
], WorkflowItem.prototype, "workerGroup", void 0);
|
|
50
57
|
__decorate([
|
|
51
58
|
Column({ dataType: "Int", default: () => 0 }),
|
|
52
59
|
__metadata("design:type", Number)
|
|
53
|
-
],
|
|
60
|
+
], WorkflowItem.prototype, "priority", void 0);
|
|
54
61
|
__decorate([
|
|
55
62
|
Column({ nullable: true }),
|
|
56
63
|
__metadata("design:type", DateTime)
|
|
57
|
-
],
|
|
64
|
+
], WorkflowItem.prototype, "lockedTTL", void 0);
|
|
58
65
|
__decorate([
|
|
59
66
|
Column({ nullable: true }),
|
|
60
67
|
__metadata("design:type", String)
|
|
61
|
-
],
|
|
68
|
+
], WorkflowItem.prototype, "lockToken", void 0);
|
|
62
69
|
__decorate([
|
|
63
70
|
Column({ dataType: "AsciiChar", length: 10 }),
|
|
64
71
|
__metadata("design:type", String)
|
|
65
|
-
],
|
|
72
|
+
], WorkflowItem.prototype, "state", void 0);
|
|
66
73
|
__decorate([
|
|
67
74
|
Column({ dataType: "Char", nullable: true }),
|
|
68
75
|
__metadata("design:type", String)
|
|
69
|
-
],
|
|
76
|
+
], WorkflowItem.prototype, "error", void 0);
|
|
70
77
|
__decorate([
|
|
71
78
|
Column({ dataType: "Char", nullable: true }),
|
|
72
79
|
__metadata("design:type", String)
|
|
73
|
-
],
|
|
80
|
+
], WorkflowItem.prototype, "extra", void 0);
|
|
74
81
|
__decorate([
|
|
75
82
|
Column({ dataType: "Char", length: 200, nullable: true }),
|
|
76
83
|
__metadata("design:type", String)
|
|
77
|
-
],
|
|
84
|
+
], WorkflowItem.prototype, "parentID", void 0);
|
|
78
85
|
__decorate([
|
|
79
86
|
Column({ dataType: "Char", length: 200, nullable: true }),
|
|
80
87
|
__metadata("design:type", String)
|
|
81
|
-
],
|
|
82
|
-
|
|
88
|
+
], WorkflowItem.prototype, "lastID", void 0);
|
|
89
|
+
WorkflowItem = __decorate([
|
|
83
90
|
Table("Workflows"),
|
|
84
91
|
Index({
|
|
85
92
|
name: "IX_Workflows_Group",
|
|
@@ -87,16 +94,19 @@ WorkflowStorage = __decorate([
|
|
|
87
94
|
filter: (x) => x.groupName !== null
|
|
88
95
|
}),
|
|
89
96
|
Index({
|
|
90
|
-
name: "
|
|
91
|
-
columns: [
|
|
97
|
+
name: "IX_Workflows_WorkerGroup_ETA",
|
|
98
|
+
columns: [
|
|
99
|
+
{ name: (x) => x.eta, descending: false },
|
|
100
|
+
{ name: (x) => x.workerGroup, descending: false }
|
|
101
|
+
],
|
|
92
102
|
filter: (x) => x.isWorkflow === true
|
|
93
103
|
})
|
|
94
|
-
],
|
|
95
|
-
export {
|
|
104
|
+
], WorkflowItem);
|
|
105
|
+
export { WorkflowItem };
|
|
96
106
|
let WorkflowContext = class WorkflowContext extends EntityContext {
|
|
97
107
|
constructor() {
|
|
98
108
|
super(...arguments);
|
|
99
|
-
this.workflows = this.model.register(
|
|
109
|
+
this.workflows = this.model.register(WorkflowItem);
|
|
100
110
|
this.verifyFilters = false;
|
|
101
111
|
this.raiseEvents = false;
|
|
102
112
|
}
|
|
@@ -104,7 +114,7 @@ let WorkflowContext = class WorkflowContext extends EntityContext {
|
|
|
104
114
|
WorkflowContext = __decorate([
|
|
105
115
|
RegisterScoped
|
|
106
116
|
], WorkflowContext);
|
|
107
|
-
let
|
|
117
|
+
let WorkflowStorage = class WorkflowStorage {
|
|
108
118
|
constructor(driver, clock) {
|
|
109
119
|
this.driver = driver;
|
|
110
120
|
this.clock = clock;
|
|
@@ -191,15 +201,16 @@ let EternityStorage = class EternityStorage {
|
|
|
191
201
|
}
|
|
192
202
|
}
|
|
193
203
|
w.state ||= "queued";
|
|
204
|
+
w.workerGroup ||= "default";
|
|
194
205
|
w.updated ??= DateTime.utcNow;
|
|
195
206
|
await db.saveChanges();
|
|
196
207
|
});
|
|
197
208
|
}
|
|
198
|
-
async dequeue(signal) {
|
|
209
|
+
async dequeue(workerGroup, signal) {
|
|
199
210
|
const db = new WorkflowContext(this.driver);
|
|
200
211
|
const now = this.clock.utcNow;
|
|
201
212
|
if (!this.lockQuery) {
|
|
202
|
-
const type = db.model.getEntityType(
|
|
213
|
+
const type = db.model.getEntityType(WorkflowItem);
|
|
203
214
|
const px = Expression.parameter("x");
|
|
204
215
|
const lockTokenField = type.getProperty("lockToken").field.columnName;
|
|
205
216
|
const lockTTLField = type.getProperty("lockedTTL").field.columnName;
|
|
@@ -222,10 +233,11 @@ let EternityStorage = class EternityStorage {
|
|
|
222
233
|
}
|
|
223
234
|
const q = this.lockQuery;
|
|
224
235
|
const items = await db.workflows
|
|
225
|
-
.where({ now }, (p) => (x) => x.eta <= p.now
|
|
236
|
+
.where({ now, workerGroup }, (p) => (x) => x.eta <= p.now
|
|
226
237
|
&& (x.lockedTTL === null || x.lockedTTL <= p.now)
|
|
227
238
|
&& x.lockToken === null
|
|
228
|
-
&& x.isWorkflow === true
|
|
239
|
+
&& x.isWorkflow === true
|
|
240
|
+
&& x.workerGroup === p.workerGroup)
|
|
229
241
|
.orderBy({}, (p) => (x) => x.eta)
|
|
230
242
|
.thenBy({}, (p) => (x) => x.priority)
|
|
231
243
|
.limit(20)
|
|
@@ -249,12 +261,12 @@ let EternityStorage = class EternityStorage {
|
|
|
249
261
|
await db.connection.automaticMigrations().migrate(db);
|
|
250
262
|
}
|
|
251
263
|
};
|
|
252
|
-
|
|
264
|
+
WorkflowStorage = __decorate([
|
|
253
265
|
RegisterSingleton,
|
|
254
266
|
__param(0, Inject),
|
|
255
267
|
__param(1, Inject),
|
|
256
268
|
__metadata("design:paramtypes", [BaseDriver,
|
|
257
269
|
WorkflowClock])
|
|
258
|
-
],
|
|
259
|
-
export default
|
|
260
|
-
//# sourceMappingURL=
|
|
270
|
+
], WorkflowStorage);
|
|
271
|
+
export default WorkflowStorage;
|
|
272
|
+
//# sourceMappingURL=WorkflowStorage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WorkflowStorage.js","sourceRoot":"","sources":["../../src/workflows/WorkflowStorage.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/src/index.ts
CHANGED
|
@@ -2,22 +2,22 @@ export { BaseDriver } from "./drivers/base/BaseDriver.js";
|
|
|
2
2
|
export { default as SqlServerDriver } from "./drivers/sql-server/SqlServerDriver.js";
|
|
3
3
|
export { default as PostgreSqlDriver } from "./drivers/postgres/PostgreSqlDriver.js";
|
|
4
4
|
|
|
5
|
-
export { default as EternityStorage } from "./
|
|
5
|
+
export { default as EternityStorage } from "./workflows/WorkflowStorage.js";
|
|
6
6
|
export { default as EntityAccessError } from "./common/EntityAccessError.js";
|
|
7
7
|
export { default as DateTime } from "./types/DateTime.js";
|
|
8
8
|
export { default as ChangeSet } from "./model/changes/ChangeSet.js";
|
|
9
9
|
export { default as ChangeEntry } from "./model/changes/ChangeEntry.js";
|
|
10
10
|
export { default as ContextEvents } from "./model/events/ContextEvents.js";
|
|
11
11
|
export { default as TimedCache } from "./common/cache/TimedCache.js";
|
|
12
|
-
export { Activity, UniqueActivity } from "./
|
|
13
|
-
export { default as Workflow } from "./
|
|
12
|
+
export { Activity, UniqueActivity } from "./workflows/Workflow.js";
|
|
13
|
+
export { default as Workflow } from "./workflows/Workflow.js";
|
|
14
14
|
export { default as Sql } from "./sql/Sql.js";
|
|
15
15
|
export { default as Index } from "./decorators/Index.js";
|
|
16
16
|
export { default as Table } from "./decorators/Table.js";
|
|
17
17
|
export { RelateTo, RelateToOne } from "./decorators/Relate.js";
|
|
18
18
|
export { default as Column } from "./decorators/Column.js";
|
|
19
19
|
export { default as EntityContext } from "./model/EntityContext.js";
|
|
20
|
-
export { default as EternityContext } from "./
|
|
20
|
+
export { default as EternityContext } from "./workflows/WorkflowContext.js";
|
|
21
21
|
|
|
22
22
|
export {
|
|
23
23
|
default as Inject,
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import assert from "assert";
|
|
2
2
|
import Inject, { Register, RegisterSingleton, ServiceProvider } from "../../di/di.js";
|
|
3
|
-
import
|
|
4
|
-
import Workflow, { Activity, UniqueActivity } from "../../
|
|
5
|
-
import WorkflowClock from "../../
|
|
3
|
+
import WorkflowContext from "../../workflows/WorkflowContext.js";
|
|
4
|
+
import Workflow, { Activity, UniqueActivity } from "../../workflows/Workflow.js";
|
|
5
|
+
import WorkflowClock from "../../workflows/WorkflowClock.js";
|
|
6
6
|
import DateTime from "../../types/DateTime.js";
|
|
7
7
|
import { TestConfig } from "../TestConfig.js";
|
|
8
8
|
import { BaseDriver } from "../../drivers/base/BaseDriver.js";
|
|
9
|
-
import
|
|
9
|
+
import WorkflowStorage from "../../workflows/WorkflowStorage.js";
|
|
10
10
|
import TimeSpan from "../../types/TimeSpan.js";
|
|
11
11
|
import sleep from "../../common/sleep.js";
|
|
12
12
|
|
|
@@ -70,11 +70,11 @@ export default async function(this: TestConfig) {
|
|
|
70
70
|
scope.add(WorkflowClock, mockClock);
|
|
71
71
|
scope.add(BaseDriver, this.driver);
|
|
72
72
|
scope.add(CallTracker, tracker);
|
|
73
|
-
const storage = new
|
|
74
|
-
scope.add(
|
|
73
|
+
const storage = new WorkflowStorage(this.driver, mockClock);
|
|
74
|
+
scope.add(WorkflowStorage, storage);
|
|
75
75
|
|
|
76
|
-
const c = new
|
|
77
|
-
scope.add(
|
|
76
|
+
const c = new WorkflowContext(storage);
|
|
77
|
+
scope.add(WorkflowContext, c);
|
|
78
78
|
|
|
79
79
|
// this is an important step
|
|
80
80
|
c.register(ChildWorkflow);
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import assert from "assert";
|
|
2
2
|
import Inject, { Register, RegisterSingleton, ServiceProvider } from "../../di/di.js";
|
|
3
|
-
import
|
|
4
|
-
import Workflow, { Activity } from "../../
|
|
5
|
-
import WorkflowClock from "../../
|
|
3
|
+
import WorkflowContext from "../../workflows/WorkflowContext.js";
|
|
4
|
+
import Workflow, { Activity } from "../../workflows/Workflow.js";
|
|
5
|
+
import WorkflowClock from "../../workflows/WorkflowClock.js";
|
|
6
6
|
import DateTime from "../../types/DateTime.js";
|
|
7
7
|
import { TestConfig } from "../TestConfig.js";
|
|
8
8
|
import { BaseDriver } from "../../drivers/base/BaseDriver.js";
|
|
9
|
-
import
|
|
9
|
+
import WorkflowStorage from "../../workflows/WorkflowStorage.js";
|
|
10
10
|
import TimeSpan from "../../types/TimeSpan.js";
|
|
11
11
|
import sleep from "../../common/sleep.js";
|
|
12
12
|
|
|
@@ -64,12 +64,12 @@ export default async function (this: TestConfig) {
|
|
|
64
64
|
const scope = new ServiceProvider();
|
|
65
65
|
scope.add(WorkflowClock, mockClock);
|
|
66
66
|
scope.add(BaseDriver, this.driver);
|
|
67
|
-
const storage = new
|
|
67
|
+
const storage = new WorkflowStorage(this.driver, mockClock);
|
|
68
68
|
scope.add(Mailer, mailer);
|
|
69
|
-
scope.add(
|
|
69
|
+
scope.add(WorkflowStorage, storage);
|
|
70
70
|
|
|
71
|
-
const c = new
|
|
72
|
-
scope.add(
|
|
71
|
+
const c = new WorkflowContext(storage);
|
|
72
|
+
scope.add(WorkflowContext, c);
|
|
73
73
|
|
|
74
74
|
// this is an important step
|
|
75
75
|
c.register(SendWorkflow);
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import assert from "assert";
|
|
2
2
|
import Inject, { Register, RegisterScoped, RegisterSingleton, ServiceProvider } from "../../di/di.js";
|
|
3
|
-
import
|
|
4
|
-
import Workflow, { Activity } from "../../
|
|
5
|
-
import WorkflowClock from "../../
|
|
3
|
+
import WorkflowContext from "../../workflows/WorkflowContext.js";
|
|
4
|
+
import Workflow, { Activity } from "../../workflows/Workflow.js";
|
|
5
|
+
import WorkflowClock from "../../workflows/WorkflowClock.js";
|
|
6
6
|
import DateTime from "../../types/DateTime.js";
|
|
7
7
|
import { TestConfig } from "../TestConfig.js";
|
|
8
8
|
import { BaseDriver } from "../../drivers/base/BaseDriver.js";
|
|
9
|
-
import
|
|
9
|
+
import WorkflowStorage from "../../workflows/WorkflowStorage.js";
|
|
10
10
|
import TimeSpan from "../../types/TimeSpan.js";
|
|
11
11
|
import sleep from "../../common/sleep.js";
|
|
12
12
|
|
|
@@ -78,11 +78,11 @@ export default async function (this: TestConfig) {
|
|
|
78
78
|
scope.add(WorkflowClock, mockClock);
|
|
79
79
|
scope.add(BaseDriver, this.driver);
|
|
80
80
|
scope.add(StateLogger, stateLogger);
|
|
81
|
-
const storage = new
|
|
82
|
-
scope.add(
|
|
81
|
+
const storage = new WorkflowStorage(this.driver, mockClock);
|
|
82
|
+
scope.add(WorkflowStorage, storage);
|
|
83
83
|
|
|
84
|
-
const c = new
|
|
85
|
-
scope.add(
|
|
84
|
+
const c = new WorkflowContext(storage);
|
|
85
|
+
scope.add(WorkflowContext, c);
|
|
86
86
|
|
|
87
87
|
// this is an important step
|
|
88
88
|
c.register(VerifyWorkflow);
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
export default class Waiter {
|
|
2
|
+
|
|
3
|
+
public static create() {
|
|
4
|
+
return new Waiter();
|
|
5
|
+
}
|
|
6
|
+
|
|
7
|
+
public static releaseAll() {
|
|
8
|
+
const copy = Array.from(this.set);
|
|
9
|
+
this.set.clear();
|
|
10
|
+
for (const iterator of copy) {
|
|
11
|
+
iterator.controller.abort();
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
private static set = new Set<Waiter>();
|
|
16
|
+
|
|
17
|
+
constructor(private controller = new AbortController(), public readonly signal = controller.signal) {
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
[Symbol.dispose]() {
|
|
21
|
+
Waiter.set.delete(this);
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
}
|
|
@@ -3,7 +3,7 @@ import Inject from "../di/di.js";
|
|
|
3
3
|
import DateTime from "../types/DateTime.js";
|
|
4
4
|
import TimeSpan from "../types/TimeSpan.js";
|
|
5
5
|
import { ActivitySuspendedError } from "./ActivitySuspendedError.js";
|
|
6
|
-
import
|
|
6
|
+
import WorkflowContext from "./WorkflowContext.js";
|
|
7
7
|
import { WorkflowRegistry } from "./WorkflowRegistry.js";
|
|
8
8
|
|
|
9
9
|
|
|
@@ -50,7 +50,7 @@ export default abstract class Workflow<TIn = any, TOut = any> {
|
|
|
50
50
|
eta: DateTime,
|
|
51
51
|
currentTime: DateTime
|
|
52
52
|
},
|
|
53
|
-
protected context:
|
|
53
|
+
protected context: WorkflowContext
|
|
54
54
|
) {
|
|
55
55
|
this.input = input;
|
|
56
56
|
this.id = id;
|