diff --git a/packages/plugins/workflow/package.json b/packages/plugins/workflow/package.json
index dda2714a0..caf96b60d 100644
--- a/packages/plugins/workflow/package.json
+++ b/packages/plugins/workflow/package.json
@@ -14,7 +14,7 @@
"@nocobase/resourcer": "0.9.3-alpha.1",
"@nocobase/server": "0.9.3-alpha.1",
"@nocobase/utils": "0.9.3-alpha.1",
- "antd": "4.22.8",
+ "antd": "^4.24.8",
"axios": "^0.27.2",
"classnames": "^2.3.1",
"cron-parser": "4.4.0",
diff --git a/packages/plugins/workflow/src/client/WorkflowCanvas.tsx b/packages/plugins/workflow/src/client/WorkflowCanvas.tsx
index f405c3ee4..6f89fab4e 100644
--- a/packages/plugins/workflow/src/client/WorkflowCanvas.tsx
+++ b/packages/plugins/workflow/src/client/WorkflowCanvas.tsx
@@ -1,6 +1,6 @@
import React, { useEffect, useState } from 'react';
import { Link, useHistory } from 'react-router-dom';
-import { Dropdown, Menu, Button, Tag, Switch, message, Breadcrumb } from 'antd';
+import { Dropdown, Button, Tag, Switch, message, Breadcrumb, Modal } from 'antd';
import { DownOutlined, RightOutlined, EllipsisOutlined } from '@ant-design/icons';
import { cx } from '@emotion/css';
import classnames from 'classnames';
@@ -95,6 +95,24 @@ export function WorkflowCanvas() {
history.push(`${revision.id}`);
}
+ async function onDelete() {
+ const content = workflow.current
+ ? lang('Delete a main version will cause all other revisions to be deleted too.')
+ : '';
+ Modal.confirm({
+ title: t('Are you sure you want to delete it?'),
+ content,
+ async onOk() {
+ await resource.destroy({
+ filterByTk: workflow.id,
+ });
+ message.success(t('Operation succeeded'));
+
+ history.push(workflow.current ? '..' : `${revisions.find((item) => item.current)?.id}`);
+ },
+ });
+ }
+
async function onMenuCommand({ key }) {
switch (key) {
case 'history':
@@ -102,6 +120,8 @@ export function WorkflowCanvas() {
return;
case 'revision':
return onRevision();
+ case 'delete':
+ return onDelete();
default:
break;
}
@@ -134,31 +154,29 @@ export function WorkflowCanvas() {
b.id - a.id)
- .map((item, index) => ({
- key: `${item.id}`,
- icon: item.current ? : null,
- label: (
-
- {`#${item.id}`}
-
-
- ),
- }))}
- />
- }
+ menu={{
+ onClick: onSwitchVersion,
+ defaultSelectedKeys: [`${workflow.id}`],
+ className: cx(workflowVersionDropdownClass),
+ items: revisions
+ .sort((a, b) => b.id - a.id)
+ .map((item, index) => ({
+ key: `${item.id}`,
+ icon: item.current ? : null,
+ label: (
+
+ {`#${item.id}`}
+
+
+ ),
+ })),
+ }}
>
diff --git a/packages/plugins/workflow/src/client/locale/zh-CN.ts b/packages/plugins/workflow/src/client/locale/zh-CN.ts
index 5fcf1e483..d0066cddf 100644
--- a/packages/plugins/workflow/src/client/locale/zh-CN.ts
+++ b/packages/plugins/workflow/src/client/locale/zh-CN.ts
@@ -9,6 +9,7 @@ export default {
Version: '版本',
'Copy to new version': '复制到新版本',
Duplicate: '复制',
+ 'Delete a main version will cause all other revisions to be deleted too.': '删除主版本将导致其他版本一并被删除。',
Loading: '加载中',
'Load failed': '加载失败',
Trigger: '触发器',
diff --git a/packages/plugins/workflow/src/server/Plugin.ts b/packages/plugins/workflow/src/server/Plugin.ts
index 3f21099b6..fb1104030 100644
--- a/packages/plugins/workflow/src/server/Plugin.ts
+++ b/packages/plugins/workflow/src/server/Plugin.ts
@@ -253,26 +253,14 @@ export default class WorkflowPlugin extends Plugin {
const executed = await workflow.countExecutions({ transaction });
// NOTE: not to trigger afterUpdate hook here
- await workflow.update({ executed }, { transaction, hooks: false });
+ await workflow.increment('executed', { transaction });
- const allExecuted = await (execution.constructor).count({
+ await (workflow.constructor).increment('allExecuted', {
where: {
key: workflow.key,
},
transaction,
});
- await (workflow.constructor).update(
- {
- allExecuted,
- },
- {
- where: {
- key: workflow.key,
- },
- individualHooks: true,
- transaction,
- },
- );
execution.workflow = workflow;
diff --git a/packages/plugins/workflow/src/server/collections/workflows.ts b/packages/plugins/workflow/src/server/collections/workflows.ts
index cee79cde9..a8190eb77 100644
--- a/packages/plugins/workflow/src/server/collections/workflows.ts
+++ b/packages/plugins/workflow/src/server/collections/workflows.ts
@@ -74,6 +74,7 @@ export default function () {
sourceKey: 'key',
// NOTE: no constraints needed here because tricky self-referencing
constraints: false,
+ onDelete: 'NO ACTION',
},
],
// NOTE: use unique index for avoiding deadlock in mysql when setCurrent