@nocobase/plugin-workflow 1.9.2 → 1.9.4
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/client/index.js +1 -1
- package/dist/externalVersion.js +11 -11
- package/dist/node_modules/cron-parser/package.json +1 -1
- package/dist/node_modules/lru-cache/package.json +1 -1
- package/dist/node_modules/nodejs-snowflake/package.json +1 -1
- package/dist/server/Dispatcher.d.ts +0 -1
- package/dist/server/Dispatcher.js +3 -6
- package/dist/server/Plugin.d.ts +1 -0
- package/dist/server/Plugin.js +21 -8
- package/dist/server/Processor.js +27 -10
- package/package.json +2 -2
package/dist/externalVersion.js
CHANGED
|
@@ -11,8 +11,8 @@ module.exports = {
|
|
|
11
11
|
"react": "18.2.0",
|
|
12
12
|
"@formily/core": "2.3.0",
|
|
13
13
|
"@formily/react": "2.3.0",
|
|
14
|
-
"@nocobase/client": "1.9.
|
|
15
|
-
"@nocobase/utils": "1.9.
|
|
14
|
+
"@nocobase/client": "1.9.4",
|
|
15
|
+
"@nocobase/utils": "1.9.4",
|
|
16
16
|
"antd": "5.24.2",
|
|
17
17
|
"@ant-design/icons": "5.6.1",
|
|
18
18
|
"react-router-dom": "6.28.1",
|
|
@@ -20,17 +20,17 @@ module.exports = {
|
|
|
20
20
|
"lodash": "4.17.21",
|
|
21
21
|
"@dnd-kit/core": "6.1.0",
|
|
22
22
|
"@formily/shared": "2.3.2",
|
|
23
|
-
"@nocobase/plugin-mobile": "1.9.
|
|
23
|
+
"@nocobase/plugin-mobile": "1.9.4",
|
|
24
24
|
"sequelize": "6.35.2",
|
|
25
|
-
"@nocobase/database": "1.9.
|
|
26
|
-
"@nocobase/server": "1.9.
|
|
27
|
-
"@nocobase/data-source-manager": "1.9.
|
|
28
|
-
"@nocobase/logger": "1.9.
|
|
29
|
-
"@nocobase/evaluators": "1.9.
|
|
25
|
+
"@nocobase/database": "1.9.4",
|
|
26
|
+
"@nocobase/server": "1.9.4",
|
|
27
|
+
"@nocobase/data-source-manager": "1.9.4",
|
|
28
|
+
"@nocobase/logger": "1.9.4",
|
|
29
|
+
"@nocobase/evaluators": "1.9.4",
|
|
30
30
|
"@formily/antd-v5": "1.2.3",
|
|
31
31
|
"@formily/reactive": "2.3.0",
|
|
32
|
-
"@nocobase/actions": "1.9.
|
|
32
|
+
"@nocobase/actions": "1.9.4",
|
|
33
33
|
"dayjs": "1.11.13",
|
|
34
|
-
"@nocobase/plugin-workflow-test": "1.9.
|
|
35
|
-
"@nocobase/test": "1.9.
|
|
34
|
+
"@nocobase/plugin-workflow-test": "1.9.4",
|
|
35
|
+
"@nocobase/test": "1.9.4"
|
|
36
36
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"name":"cron-parser","version":"4.4.0","description":"Node.js library for parsing crontab instructions","main":"lib/parser.js","types":"index.d.ts","typesVersions":{"<4.1":{"*":["types/ts3/*"]}},"directories":{"test":"test"},"scripts":{"test:tsd":"tsd","test:unit":"TZ=UTC tap ./test/*.js","test:cover":"TZ=UTC tap --coverage-report=html ./test/*.js","lint":"eslint .","lint:fix":"eslint --fix .","test":"npm run lint && npm run test:unit && npm run test:tsd"},"repository":{"type":"git","url":"https://github.com/harrisiirak/cron-parser.git"},"keywords":["cron","crontab","parser"],"author":"Harri Siirak","contributors":["Nicholas Clawson","Daniel Prentis <daniel@salsitasoft.com>","Renault John Lecoultre","Richard Astbury <richard.astbury@gmail.com>","Meaglin Wasabi <Meaglin.wasabi@gmail.com>","Mike Kusold <hello@mikekusold.com>","Alex Kit <alex.kit@atmajs.com>","Santiago Gimeno <santiago.gimeno@gmail.com>","Daniel <darc.tec@gmail.com>","Christian Steininger <christian.steininger.cs@gmail.com>","Mykola Piskovyi <m.piskovyi@gmail.com>","Brian Vaughn <brian.david.vaughn@gmail.com>","Nicholas Clawson <nickclaw@gmail.com>","Yasuhiroki <yasuhiroki.duck@gmail.com>","Nicholas Clawson <nickclaw@gmail.com>","Brendan Warkentin <faazshift@gmail.com>","Charlie Fish <fishcharlie.code@gmail.com>","Ian Graves <ian+diskimage@iangrav.es>","Andy Thompson <me@andytson.com>","Regev Brody <regevbr@gmail.com>"],"license":"MIT","dependencies":{"luxon":"^1.28.0"},"devDependencies":{"eslint":"^8.2.0","sinon":"^10.0.0","tap":"^16.0.1","tsd":"^0.19.0"},"engines":{"node":">=0.8"},"browser":{"fs":false},"tap":{"check-coverage":false},"tsd":{"directory":"test","compilerOptions":{"lib":["es2017","dom"]}},"_lastModified":"2025-11-
|
|
1
|
+
{"name":"cron-parser","version":"4.4.0","description":"Node.js library for parsing crontab instructions","main":"lib/parser.js","types":"index.d.ts","typesVersions":{"<4.1":{"*":["types/ts3/*"]}},"directories":{"test":"test"},"scripts":{"test:tsd":"tsd","test:unit":"TZ=UTC tap ./test/*.js","test:cover":"TZ=UTC tap --coverage-report=html ./test/*.js","lint":"eslint .","lint:fix":"eslint --fix .","test":"npm run lint && npm run test:unit && npm run test:tsd"},"repository":{"type":"git","url":"https://github.com/harrisiirak/cron-parser.git"},"keywords":["cron","crontab","parser"],"author":"Harri Siirak","contributors":["Nicholas Clawson","Daniel Prentis <daniel@salsitasoft.com>","Renault John Lecoultre","Richard Astbury <richard.astbury@gmail.com>","Meaglin Wasabi <Meaglin.wasabi@gmail.com>","Mike Kusold <hello@mikekusold.com>","Alex Kit <alex.kit@atmajs.com>","Santiago Gimeno <santiago.gimeno@gmail.com>","Daniel <darc.tec@gmail.com>","Christian Steininger <christian.steininger.cs@gmail.com>","Mykola Piskovyi <m.piskovyi@gmail.com>","Brian Vaughn <brian.david.vaughn@gmail.com>","Nicholas Clawson <nickclaw@gmail.com>","Yasuhiroki <yasuhiroki.duck@gmail.com>","Nicholas Clawson <nickclaw@gmail.com>","Brendan Warkentin <faazshift@gmail.com>","Charlie Fish <fishcharlie.code@gmail.com>","Ian Graves <ian+diskimage@iangrav.es>","Andy Thompson <me@andytson.com>","Regev Brody <regevbr@gmail.com>"],"license":"MIT","dependencies":{"luxon":"^1.28.0"},"devDependencies":{"eslint":"^8.2.0","sinon":"^10.0.0","tap":"^16.0.1","tsd":"^0.19.0"},"engines":{"node":">=0.8"},"browser":{"fs":false},"tap":{"check-coverage":false},"tsd":{"directory":"test","compilerOptions":{"lib":["es2017","dom"]}},"_lastModified":"2025-11-10T09:29:16.212Z"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"name":"lru-cache","description":"A cache object that deletes the least-recently-used items.","version":"8.0.5","author":"Isaac Z. Schlueter <i@izs.me>","keywords":["mru","lru","cache"],"sideEffects":false,"scripts":{"build":"npm run prepare","preprepare":"rm -rf dist","prepare":"tsc -p tsconfig.json && tsc -p tsconfig-esm.json","postprepare":"bash fixup.sh","pretest":"npm run prepare","presnap":"npm run prepare","test":"c8 tap","snap":"c8 tap","preversion":"npm test","postversion":"npm publish","prepublishOnly":"git push origin --follow-tags","format":"prettier --write .","typedoc":"typedoc --tsconfig tsconfig-esm.json ./src/*.ts","benchmark-results-typedoc":"bash scripts/benchmark-results-typedoc.sh","prebenchmark":"npm run prepare","benchmark":"make -C benchmark","preprofile":"npm run prepare","profile":"make -C benchmark profile"},"main":"./dist/cjs/index-cjs.js","module":"./dist/mjs/index.js","types":"./dist/mjs/index.d.ts","exports":{"./min":{"import":{"types":"./dist/mjs/index.d.ts","default":"./dist/mjs/index.min.js"},"require":{"types":"./dist/cjs/index.d.ts","default":"./dist/cjs/index.min.js"}},".":{"import":{"types":"./dist/mjs/index.d.ts","default":"./dist/mjs/index.js"},"require":{"types":"./dist/cjs/index.d.ts","default":"./dist/cjs/index-cjs.js"}}},"repository":"git://github.com/isaacs/node-lru-cache.git","devDependencies":{"@size-limit/preset-small-lib":"^7.0.8","@types/node":"^17.0.31","@types/tap":"^15.0.6","benchmark":"^2.1.4","c8":"^7.11.2","clock-mock":"^1.0.6","esbuild":"^0.17.11","eslint-config-prettier":"^8.5.0","marked":"^4.2.12","mkdirp":"^2.1.5","prettier":"^2.6.2","size-limit":"^7.0.8","tap":"^16.3.4","ts-node":"^10.7.0","tslib":"^2.4.0","typedoc":"^0.23.24","typescript":"^4.6.4"},"license":"ISC","files":["dist"],"engines":{"node":">=16.14"},"prettier":{"semi":false,"printWidth":70,"tabWidth":2,"useTabs":false,"singleQuote":true,"jsxSingleQuote":false,"bracketSameLine":true,"arrowParens":"avoid","endOfLine":"lf"},"tap":{"coverage":false,"node-arg":["--expose-gc","--no-warnings","--loader","ts-node/esm"],"ts":false},"size-limit":[{"path":"./dist/mjs/index.js"}],"_lastModified":"2025-11-
|
|
1
|
+
{"name":"lru-cache","description":"A cache object that deletes the least-recently-used items.","version":"8.0.5","author":"Isaac Z. Schlueter <i@izs.me>","keywords":["mru","lru","cache"],"sideEffects":false,"scripts":{"build":"npm run prepare","preprepare":"rm -rf dist","prepare":"tsc -p tsconfig.json && tsc -p tsconfig-esm.json","postprepare":"bash fixup.sh","pretest":"npm run prepare","presnap":"npm run prepare","test":"c8 tap","snap":"c8 tap","preversion":"npm test","postversion":"npm publish","prepublishOnly":"git push origin --follow-tags","format":"prettier --write .","typedoc":"typedoc --tsconfig tsconfig-esm.json ./src/*.ts","benchmark-results-typedoc":"bash scripts/benchmark-results-typedoc.sh","prebenchmark":"npm run prepare","benchmark":"make -C benchmark","preprofile":"npm run prepare","profile":"make -C benchmark profile"},"main":"./dist/cjs/index-cjs.js","module":"./dist/mjs/index.js","types":"./dist/mjs/index.d.ts","exports":{"./min":{"import":{"types":"./dist/mjs/index.d.ts","default":"./dist/mjs/index.min.js"},"require":{"types":"./dist/cjs/index.d.ts","default":"./dist/cjs/index.min.js"}},".":{"import":{"types":"./dist/mjs/index.d.ts","default":"./dist/mjs/index.js"},"require":{"types":"./dist/cjs/index.d.ts","default":"./dist/cjs/index-cjs.js"}}},"repository":"git://github.com/isaacs/node-lru-cache.git","devDependencies":{"@size-limit/preset-small-lib":"^7.0.8","@types/node":"^17.0.31","@types/tap":"^15.0.6","benchmark":"^2.1.4","c8":"^7.11.2","clock-mock":"^1.0.6","esbuild":"^0.17.11","eslint-config-prettier":"^8.5.0","marked":"^4.2.12","mkdirp":"^2.1.5","prettier":"^2.6.2","size-limit":"^7.0.8","tap":"^16.3.4","ts-node":"^10.7.0","tslib":"^2.4.0","typedoc":"^0.23.24","typescript":"^4.6.4"},"license":"ISC","files":["dist"],"engines":{"node":">=16.14"},"prettier":{"semi":false,"printWidth":70,"tabWidth":2,"useTabs":false,"singleQuote":true,"jsxSingleQuote":false,"bracketSameLine":true,"arrowParens":"avoid","endOfLine":"lf"},"tap":{"coverage":false,"node-arg":["--expose-gc","--no-warnings","--loader","ts-node/esm"],"ts":false},"size-limit":[{"path":"./dist/mjs/index.js"}],"_lastModified":"2025-11-10T09:29:15.863Z"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"name":"nodejs-snowflake","collaborators":["Utkarsh Srivastava <utkarsh@sagacious.dev>"],"description":"Generate time sortable 64 bits unique ids for distributed systems (inspired from twitter snowflake)","version":"2.0.1","license":"Apache 2.0","repository":{"type":"git","url":"https://github.com/utkarsh-pro/nodejs-snowflake.git"},"files":["nodejs_snowflake_bg.wasm","nodejs_snowflake.js","nodejs_snowflake.d.ts"],"main":"nodejs_snowflake.js","types":"nodejs_snowflake.d.ts","_lastModified":"2025-11-
|
|
1
|
+
{"name":"nodejs-snowflake","collaborators":["Utkarsh Srivastava <utkarsh@sagacious.dev>"],"description":"Generate time sortable 64 bits unique ids for distributed systems (inspired from twitter snowflake)","version":"2.0.1","license":"Apache 2.0","repository":{"type":"git","url":"https://github.com/utkarsh-pro/nodejs-snowflake.git"},"files":["nodejs_snowflake_bg.wasm","nodejs_snowflake.js","nodejs_snowflake.d.ts"],"main":"nodejs_snowflake.js","types":"nodejs_snowflake.d.ts","_lastModified":"2025-11-10T09:29:15.675Z"}
|
|
@@ -38,7 +38,6 @@ export default class Dispatcher {
|
|
|
38
38
|
constructor(plugin: PluginWorkflowServer);
|
|
39
39
|
readonly onQueueExecution: QueueEventOptions['process'];
|
|
40
40
|
setReady(ready: boolean): void;
|
|
41
|
-
private serving;
|
|
42
41
|
getEventsCount(): number;
|
|
43
42
|
trigger(workflow: WorkflowModel, context: object, options?: EventOptions): void | Promise<Processor | null>;
|
|
44
43
|
resume(job: any): Promise<void>;
|
|
@@ -45,7 +45,7 @@ class Dispatcher {
|
|
|
45
45
|
events = [];
|
|
46
46
|
eventsCount = 0;
|
|
47
47
|
get idle() {
|
|
48
|
-
return !this.executing && !this.pending.length && !this.events.length;
|
|
48
|
+
return this.ready && !this.executing && !this.pending.length && !this.events.length;
|
|
49
49
|
}
|
|
50
50
|
onQueueExecution = async (event) => {
|
|
51
51
|
const ExecutionRepo = this.plugin.db.getRepository("executions");
|
|
@@ -62,9 +62,6 @@ class Dispatcher {
|
|
|
62
62
|
setReady(ready) {
|
|
63
63
|
this.ready = ready;
|
|
64
64
|
}
|
|
65
|
-
serving() {
|
|
66
|
-
return this.plugin.app.serving(WORKER_JOB_WORKFLOW_PROCESS);
|
|
67
|
-
}
|
|
68
65
|
getEventsCount() {
|
|
69
66
|
return this.eventsCount;
|
|
70
67
|
}
|
|
@@ -153,7 +150,7 @@ class Dispatcher {
|
|
|
153
150
|
this.plugin.getLogger(next[0].workflowId).info(`pending execution (${next[0].id}) ready to process`);
|
|
154
151
|
}
|
|
155
152
|
} else {
|
|
156
|
-
if (this.serving()) {
|
|
153
|
+
if (this.plugin.serving()) {
|
|
157
154
|
execution = await this.acquireQueueingExecution();
|
|
158
155
|
if (execution) {
|
|
159
156
|
next = [execution];
|
|
@@ -287,7 +284,7 @@ class Dispatcher {
|
|
|
287
284
|
try {
|
|
288
285
|
const execution = await this.createExecution(...event);
|
|
289
286
|
if (!(execution == null ? void 0 : execution.dispatched)) {
|
|
290
|
-
if (this.serving() && !this.executing && !this.pending.length) {
|
|
287
|
+
if (this.plugin.serving() && !this.executing && !this.pending.length) {
|
|
291
288
|
logger.info(`local pending list is empty, adding execution (${execution.id}) to pending list`);
|
|
292
289
|
this.pending.push({ execution });
|
|
293
290
|
} else {
|
package/dist/server/Plugin.d.ts
CHANGED
package/dist/server/Plugin.js
CHANGED
|
@@ -202,6 +202,9 @@ class PluginWorkflowServer extends import_server.Plugin {
|
|
|
202
202
|
}
|
|
203
203
|
}
|
|
204
204
|
}
|
|
205
|
+
serving() {
|
|
206
|
+
return this.app.serving(import_Dispatcher.WORKER_JOB_WORKFLOW_PROCESS);
|
|
207
|
+
}
|
|
205
208
|
/**
|
|
206
209
|
* @experimental
|
|
207
210
|
*/
|
|
@@ -279,10 +282,6 @@ class PluginWorkflowServer extends import_server.Plugin {
|
|
|
279
282
|
this.snowflake = new import_nodejs_snowflake.Snowflake({
|
|
280
283
|
custom_epoch: pluginRecord == null ? void 0 : pluginRecord.createdAt.getTime()
|
|
281
284
|
});
|
|
282
|
-
this.app.backgroundJobManager.subscribe(`${this.name}.pendingExecution`, {
|
|
283
|
-
idle: () => this.app.serving(import_Dispatcher.WORKER_JOB_WORKFLOW_PROCESS) && this.dispatcher.idle,
|
|
284
|
-
process: this.dispatcher.onQueueExecution
|
|
285
|
-
});
|
|
286
285
|
}
|
|
287
286
|
/**
|
|
288
287
|
* @internal
|
|
@@ -340,12 +339,20 @@ class PluginWorkflowServer extends import_server.Plugin {
|
|
|
340
339
|
db.on("workflows.afterDestroy", this.onAfterDestroy);
|
|
341
340
|
this.app.on("afterStart", this.onAfterStart);
|
|
342
341
|
this.app.on("beforeStop", this.onBeforeStop);
|
|
342
|
+
if (this.serving()) {
|
|
343
|
+
this.app.backgroundJobManager.subscribe(`${this.name}.pendingExecution`, {
|
|
344
|
+
idle: () => this.dispatcher.idle,
|
|
345
|
+
process: this.dispatcher.onQueueExecution
|
|
346
|
+
});
|
|
347
|
+
}
|
|
343
348
|
}
|
|
344
349
|
toggle(workflow, enable, { silent, transaction } = {}) {
|
|
345
350
|
const type = workflow.get("type");
|
|
346
351
|
const trigger = this.triggers.get(type);
|
|
347
352
|
if (!trigger) {
|
|
348
|
-
this.getLogger(workflow.id).error(`trigger type ${workflow.type} of workflow ${workflow.id} is not implemented
|
|
353
|
+
this.getLogger(workflow.id).error(`trigger type ${workflow.type} of workflow ${workflow.id} is not implemented`, {
|
|
354
|
+
workflowId: workflow.id
|
|
355
|
+
});
|
|
349
356
|
return;
|
|
350
357
|
}
|
|
351
358
|
const next = enable ?? workflow.get("enabled");
|
|
@@ -353,14 +360,20 @@ class PluginWorkflowServer extends import_server.Plugin {
|
|
|
353
360
|
const prev = workflow.previous();
|
|
354
361
|
if (prev.config) {
|
|
355
362
|
trigger.off({ ...workflow.get(), ...prev });
|
|
356
|
-
this.getLogger(workflow.id).info(`toggle OFF workflow ${workflow.id} based on configuration before updated
|
|
363
|
+
this.getLogger(workflow.id).info(`toggle OFF workflow ${workflow.id} based on configuration before updated`, {
|
|
364
|
+
workflowId: workflow.id
|
|
365
|
+
});
|
|
357
366
|
}
|
|
358
367
|
trigger.on(workflow);
|
|
359
|
-
this.getLogger(workflow.id).info(`toggle ON workflow ${workflow.id}
|
|
368
|
+
this.getLogger(workflow.id).info(`toggle ON workflow ${workflow.id}`, {
|
|
369
|
+
workflowId: workflow.id
|
|
370
|
+
});
|
|
360
371
|
this.enabledCache.set(workflow.id, workflow);
|
|
361
372
|
} else {
|
|
362
373
|
trigger.off(workflow);
|
|
363
|
-
this.getLogger(workflow.id).info(`toggle OFF workflow ${workflow.id}
|
|
374
|
+
this.getLogger(workflow.id).info(`toggle OFF workflow ${workflow.id}`, {
|
|
375
|
+
workflowId: workflow.id
|
|
376
|
+
});
|
|
364
377
|
this.enabledCache.delete(workflow.id);
|
|
365
378
|
}
|
|
366
379
|
if (!silent) {
|
package/dist/server/Processor.js
CHANGED
|
@@ -144,7 +144,9 @@ class Processor {
|
|
|
144
144
|
async start() {
|
|
145
145
|
const { execution } = this;
|
|
146
146
|
if (execution.status) {
|
|
147
|
-
this.logger.warn(`execution was ended with status ${execution.status} before, could not be started again
|
|
147
|
+
this.logger.warn(`execution was ended with status ${execution.status} before, could not be started again`, {
|
|
148
|
+
workflowId: execution.workflowId
|
|
149
|
+
});
|
|
148
150
|
return;
|
|
149
151
|
}
|
|
150
152
|
await this.prepare();
|
|
@@ -158,7 +160,9 @@ class Processor {
|
|
|
158
160
|
async resume(job) {
|
|
159
161
|
const { execution } = this;
|
|
160
162
|
if (execution.status) {
|
|
161
|
-
this.logger.warn(`execution was ended with status ${execution.status} before, could not be resumed
|
|
163
|
+
this.logger.warn(`execution was ended with status ${execution.status} before, could not be resumed`, {
|
|
164
|
+
workflowId: execution.workflowId
|
|
165
|
+
});
|
|
162
166
|
return;
|
|
163
167
|
}
|
|
164
168
|
await this.prepare();
|
|
@@ -168,7 +172,7 @@ class Processor {
|
|
|
168
172
|
async exec(instruction, node, prevJob) {
|
|
169
173
|
let job;
|
|
170
174
|
try {
|
|
171
|
-
this.logger.debug(`config of node`, { data: node.config });
|
|
175
|
+
this.logger.debug(`config of node`, { data: node.config, workflowId: node.workflowId });
|
|
172
176
|
job = await instruction(node, prevJob, this);
|
|
173
177
|
if (job === null) {
|
|
174
178
|
return this.exit();
|
|
@@ -179,7 +183,7 @@ class Processor {
|
|
|
179
183
|
} catch (err) {
|
|
180
184
|
this.logger.error(
|
|
181
185
|
`execution (${this.execution.id}) run instruction [${node.type}] for node (${node.id}) failed: `,
|
|
182
|
-
err
|
|
186
|
+
{ error: err, workflowId: node.workflowId }
|
|
183
187
|
);
|
|
184
188
|
job = {
|
|
185
189
|
result: err instanceof Error ? {
|
|
@@ -199,7 +203,10 @@ class Processor {
|
|
|
199
203
|
}
|
|
200
204
|
const savedJob = this.saveJob(job);
|
|
201
205
|
this.logger.info(
|
|
202
|
-
`execution (${this.execution.id}) run instruction [${node.type}] for node (${node.id}) finished as status: ${savedJob.status}
|
|
206
|
+
`execution (${this.execution.id}) run instruction [${node.type}] for node (${node.id}) finished as status: ${savedJob.status}`,
|
|
207
|
+
{
|
|
208
|
+
workflowId: node.workflowId
|
|
209
|
+
}
|
|
203
210
|
);
|
|
204
211
|
this.logger.debug(`result of node`, { data: savedJob.result });
|
|
205
212
|
if (savedJob.status === import_constants.JOB_STATUS.RESOLVED && node.downstream) {
|
|
@@ -217,7 +224,9 @@ class Processor {
|
|
|
217
224
|
if (typeof instruction.run !== "function") {
|
|
218
225
|
return Promise.reject(new Error("`run` should be implemented for customized execution of the node"));
|
|
219
226
|
}
|
|
220
|
-
this.logger.info(`execution (${this.execution.id}) run instruction [${node.type}] for node (${node.id})
|
|
227
|
+
this.logger.info(`execution (${this.execution.id}) run instruction [${node.type}] for node (${node.id})`, {
|
|
228
|
+
workflowId: node.workflowId
|
|
229
|
+
});
|
|
221
230
|
return this.exec(instruction.run.bind(instruction), node, input);
|
|
222
231
|
}
|
|
223
232
|
// parent node should take over the control
|
|
@@ -225,7 +234,9 @@ class Processor {
|
|
|
225
234
|
this.logger.debug(`branch ended at node (${node.id})`);
|
|
226
235
|
const parentNode = this.findBranchParentNode(node);
|
|
227
236
|
if (parentNode) {
|
|
228
|
-
this.logger.debug(`not on main, recall to parent entry node (${node.id})})
|
|
237
|
+
this.logger.debug(`not on main, recall to parent entry node (${node.id})})`, {
|
|
238
|
+
workflowId: node.workflowId
|
|
239
|
+
});
|
|
229
240
|
await this.recall(parentNode, job);
|
|
230
241
|
return null;
|
|
231
242
|
}
|
|
@@ -242,7 +253,9 @@ class Processor {
|
|
|
242
253
|
new Error(`"resume" method should be implemented for [${node.type}] instruction of node (#${node.id})`)
|
|
243
254
|
);
|
|
244
255
|
}
|
|
245
|
-
this.logger.info(`execution (${this.execution.id}) resume instruction [${node.type}] for node (${node.id})
|
|
256
|
+
this.logger.info(`execution (${this.execution.id}) resume instruction [${node.type}] for node (${node.id})`, {
|
|
257
|
+
workflowId: node.workflowId
|
|
258
|
+
});
|
|
246
259
|
return this.exec(instruction.resume.bind(instruction), node, job);
|
|
247
260
|
}
|
|
248
261
|
async exit(s) {
|
|
@@ -295,7 +308,9 @@ class Processor {
|
|
|
295
308
|
if (this.mainTransaction && this.mainTransaction !== this.transaction) {
|
|
296
309
|
await this.mainTransaction.commit();
|
|
297
310
|
}
|
|
298
|
-
this.logger.info(`execution (${this.execution.id}) exiting with status ${this.execution.status}
|
|
311
|
+
this.logger.info(`execution (${this.execution.id}) exiting with status ${this.execution.status}`, {
|
|
312
|
+
workflowId: this.execution.workflowId
|
|
313
|
+
});
|
|
299
314
|
return null;
|
|
300
315
|
}
|
|
301
316
|
/**
|
|
@@ -326,7 +341,9 @@ class Processor {
|
|
|
326
341
|
this.lastSavedJob = job;
|
|
327
342
|
this.jobsMapByNodeKey[job.nodeKey] = job;
|
|
328
343
|
this.jobResultsMapByNodeKey[job.nodeKey] = job.result;
|
|
329
|
-
this.logger.debug(`job added to save list: ${JSON.stringify(job)}
|
|
344
|
+
this.logger.debug(`job added to save list: ${JSON.stringify(job)}`, {
|
|
345
|
+
workflowId: this.execution.workflowId
|
|
346
|
+
});
|
|
330
347
|
return job;
|
|
331
348
|
}
|
|
332
349
|
/**
|
package/package.json
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
"displayName.zh-CN": "工作流",
|
|
5
5
|
"description": "A powerful BPM tool that provides foundational support for business automation, with the capability to extend unlimited triggers and nodes.",
|
|
6
6
|
"description.zh-CN": "一个强大的 BPM 工具,为业务自动化提供基础支持,并且可任意扩展更多的触发器和节点。",
|
|
7
|
-
"version": "1.9.
|
|
7
|
+
"version": "1.9.4",
|
|
8
8
|
"license": "AGPL-3.0",
|
|
9
9
|
"main": "./dist/server/index.js",
|
|
10
10
|
"homepage": "https://docs.nocobase.com/handbook/workflow",
|
|
@@ -45,7 +45,7 @@
|
|
|
45
45
|
"@nocobase/test": "1.x",
|
|
46
46
|
"@nocobase/utils": "1.x"
|
|
47
47
|
},
|
|
48
|
-
"gitHead": "
|
|
48
|
+
"gitHead": "7431e8b3b3b9e06c21b05dc0af68349f7cfbe04f",
|
|
49
49
|
"keywords": [
|
|
50
50
|
"Workflow"
|
|
51
51
|
]
|