diff --git a/packages/plugins/@nocobase/plugin-workflow/src/server/Plugin.ts b/packages/plugins/@nocobase/plugin-workflow/src/server/Plugin.ts index 4b05e6804..19bccbe8f 100644 --- a/packages/plugins/@nocobase/plugin-workflow/src/server/Plugin.ts +++ b/packages/plugins/@nocobase/plugin-workflow/src/server/Plugin.ts @@ -398,6 +398,7 @@ export default class WorkflowPlugin extends Plugin { const execution = (await this.db.getRepository('executions').findOne({ filter: { status: EXECUTION_STATUS.QUEUEING, + 'workflow.enabled': true, 'workflow.id': { [Op.not]: null, }, @@ -405,7 +406,7 @@ export default class WorkflowPlugin extends Plugin { appends: ['workflow'], sort: 'createdAt', })) as ExecutionModel; - if (execution && execution.workflow.enabled) { + if (execution) { this.getLogger(execution.workflowId).info(`execution (${execution.id}) fetched from db`); next = [execution]; } diff --git a/packages/plugins/@nocobase/plugin-workflow/src/server/__tests__/Plugin.test.ts b/packages/plugins/@nocobase/plugin-workflow/src/server/__tests__/Plugin.test.ts index 64411fe7b..85283d833 100644 --- a/packages/plugins/@nocobase/plugin-workflow/src/server/__tests__/Plugin.test.ts +++ b/packages/plugins/@nocobase/plugin-workflow/src/server/__tests__/Plugin.test.ts @@ -356,10 +356,8 @@ describe('workflow > Plugin', () => { const p1 = await PostRepo.create({ values: { title: 't1' } }); const ExecutionModel = db.getCollection('executions').model; - const e1 = await ExecutionModel.create({ - workflowId: w1.id, + const e1 = await w1.createExecution({ key: w1.key, - useTransaction: w1.useTransaction, context: { data: p1.get(), }, @@ -378,10 +376,25 @@ describe('workflow > Plugin', () => { await db.reconnect(); - const e2 = await ExecutionModel.create({ - workflowId: w1.id, + const e2 = await w1.createExecution({ key: w1.key, - useTransaction: w1.useTransaction, + context: { + data: p1.get(), + }, + createdAt: p1.createdAt, + }); + + const w2 = await WorkflowModel.create({ + enabled: true, + type: 'collection', + config: { + mode: 1, + collection: 'posts', + }, + }); + + const e3 = await w2.createExecution({ + key: w2.key, context: { data: p1.get(), }, @@ -393,6 +406,10 @@ describe('workflow > Plugin', () => { await e2.reload(); expect(e2.status).toBe(EXECUTION_STATUS.QUEUEING); + + // queueing execution of disabled workflow should not effect other executions + await e3.reload(); + expect(e3.status).toBe(EXECUTION_STATUS.RESOLVED); }); }); diff --git a/packages/plugins/@nocobase/plugin-workflow/src/server/collections/executions.ts b/packages/plugins/@nocobase/plugin-workflow/src/server/collections/executions.ts index e967e1329..fe9669df2 100644 --- a/packages/plugins/@nocobase/plugin-workflow/src/server/collections/executions.ts +++ b/packages/plugins/@nocobase/plugin-workflow/src/server/collections/executions.ts @@ -13,11 +13,6 @@ export default { type: 'uid', name: 'key', }, - { - type: 'boolean', - name: 'useTransaction', - defaultValue: false, - }, { type: 'hasMany', name: 'jobs',