From ddaaef7c9f2a160d00f1571dd76f54882c21996c Mon Sep 17 00:00:00 2001 From: lorne <1991wangliang@gmail.com> Date: Fri, 30 Oct 2026 01:31:54 +0800 Subject: [PATCH 1/2] =?UTF-8?q?fix(flow-design):=20=E6=8B=92=E7=BB=9D?= =?UTF-8?q?=E7=AD=96=E7=95=A5=E8=84=9A=E6=9C=AC=E6=94=B9=E4=B8=BA=E6=8C=89?= =?UTF-8?q?=E8=84=9A=E6=9C=AC=20key=20=E5=AD=98=E5=82=A8=EF=BC=88codingapi?= =?UTF-8?q?/flow-engine#235=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - RejectActionForm 通过 GroovyScriptLoader 按 key 加载与保存脚本正文 - 兼容历史内联脚本的正文回显与编辑 - 新增 ActionRejectScriptUtils.isInlineScript 与单元测试 Co-Authored-By: Claude Code --- .../src/plugins/action-reject-view-type.ts | 2 +- .../components/action/components/reject.tsx | 36 ++++++++++++++++--- .../services/action-reject.tsx | 13 +++++++ .../tests/script/action_reject.test.ts | 21 +++++++++++ 4 files changed, 67 insertions(+), 5 deletions(-) create mode 100644 packages/flow-design/tests/script/action_reject.test.ts diff --git a/packages/flow-design/src/plugins/action-reject-view-type.ts b/packages/flow-design/src/plugins/action-reject-view-type.ts index 85187e9..2aea015 100644 --- a/packages/flow-design/src/plugins/action-reject-view-type.ts +++ b/packages/flow-design/src/plugins/action-reject-view-type.ts @@ -6,7 +6,7 @@ export const VIEW_KEY = 'ActionRejectViewPlugin'; export interface ActionRejectViewPlugin { // 当前节点id nodeId:string; - // 当前的脚本 + // 当前的脚本正文(由脚本key加载,兼容历史内联脚本) value?: string; // 脚本更改回掉 onChange?: (value: string) => void; diff --git a/packages/flow-design/src/script-components/components/action/components/reject.tsx b/packages/flow-design/src/script-components/components/action/components/reject.tsx index 9d6816b..170f3d4 100644 --- a/packages/flow-design/src/script-components/components/action/components/reject.tsx +++ b/packages/flow-design/src/script-components/components/action/components/reject.tsx @@ -2,10 +2,29 @@ import React from "react"; import {ActionFormProps} from "@/script-components/typings"; import {Col, Form, Row} from "antd"; import {ActionRejectView} from "@/plugins/view/action-reject-view"; +import {GroovyScriptLoader, GroovyScriptLoaderContent} from "@/script-components/components/groovy-script-loader"; +import {ActionRejectScriptUtils} from "@/script-components/services/action-reject"; +/** + * 按节点id创建脚本加载器的内容组件。 + *

+ * 使用工厂返回稳定的组件类型,避免父组件每次渲染都生成新的组件类型导致下拉框重新挂载。 + */ +const createRejectScriptContent = (nodeId: string): React.FC => { + const RejectScriptContent: React.FC = (contentProps) => ( + + ); + return RejectScriptContent; +}; -export const RejectActionForm:React.FC = (props)=>{ +export const RejectActionForm: React.FC = (props) => { + const script = Form.useWatch("script", props.form) as string | undefined; + const content = React.useMemo(() => createRejectScriptContent(props.nodeId), [props.nodeId]); return ( @@ -16,9 +35,18 @@ export const RejectActionForm:React.FC = (props)=>{ label={"拒绝策略"} help={"配置拒绝时跳转的节点"} > - + {ActionRejectScriptUtils.isInlineScript(script) ? ( + // 兼容历史数据:脚本字段中保存的是脚本正文,直接按正文回显; + // 保存流程时后端会将其归一化为脚本key + + ) : ( + // 脚本字段保存脚本key,脚本正文由脚本接口按key加载与保存 + + )} diff --git a/packages/flow-design/src/script-components/services/action-reject.tsx b/packages/flow-design/src/script-components/services/action-reject.tsx index d6f8678..77a8b30 100644 --- a/packages/flow-design/src/script-components/services/action-reject.tsx +++ b/packages/flow-design/src/script-components/services/action-reject.tsx @@ -54,6 +54,19 @@ export class ActionRejectScriptUtils { } + /** + * 判断脚本字段中存放的是脚本正文而非脚本key。 + *

+ * 旧版设计器会把脚本正文直接写入动作的 script 字段,后端在保存流程时会将其 + * 归一化为脚本key;此处用于兼容此类历史数据的回显与编辑。 + */ + public static isInlineScript(value?: string) { + if (!value) { + return false; + } + return value.includes('def run') || value.includes('\n') || value.includes('\r'); + } + public static getType(script?: string) { if (script) { const meta = GroovyScriptConvertorUtil.getScriptMeta(script); diff --git a/packages/flow-design/tests/script/action_reject.test.ts b/packages/flow-design/tests/script/action_reject.test.ts new file mode 100644 index 0000000..61bc1c3 --- /dev/null +++ b/packages/flow-design/tests/script/action_reject.test.ts @@ -0,0 +1,21 @@ +import {describe, expect, it} from '@rstest/core'; +import {ActionRejectScriptUtils} from '@/script-components/services/action-reject'; + +describe('ActionRejectScriptUtils', () => { + it('生成的拒绝脚本应包含可回显的脚本元数据', () => { + const script = ActionRejectScriptUtils.update({label: '发起节点', value: 'start-node'}); + + expect(script).toContain('def run'); + expect(ActionRejectScriptUtils.getType(script)).toBe('start-node'); + }); + + it('应识别脚本字段中存放的是正文而非脚本key(兼容历史数据)', () => { + const script = ActionRejectScriptUtils.update({label: '终止流程', value: 'TERMINATE'}); + + // 设计器写入的脚本正文需要被识别为内联脚本,避免被当成脚本key提交 + expect(ActionRejectScriptUtils.isInlineScript(script)).toBe(true); + // 后端正常保存的脚本key不包含换行与def run + expect(ActionRejectScriptUtils.isInlineScript('script-20261030-abcdef')).toBe(false); + expect(ActionRejectScriptUtils.isInlineScript(undefined)).toBe(false); + }); +}); \ No newline at end of file From f842432279ddd8e8bd40578ec6a0e0c98819d4bc Mon Sep 17 00:00:00 2001 From: lorne <1991wangliang@gmail.com> Date: Fri, 30 Oct 2026 01:31:58 +0800 Subject: [PATCH 2/2] =?UTF-8?q?chore:=20=E5=8F=91=E5=B8=83=20@coding-flow/?= =?UTF-8?q?*@0.2.13=EF=BC=88=E6=8B=92=E7=BB=9D=E8=84=9A=E6=9C=AC=20key=20?= =?UTF-8?q?=E5=AD=98=E5=82=A8=E4=BF=AE=E5=A4=8D=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 11 个 @coding-flow/* 包按 fixed 版本组同步升级至 0.2.13 - flow-design:修复拒绝动作脚本存储方式,兼容脚本正文与脚本 key(codingapi/flow-engine#235) Co-Authored-By: Claude Code --- packages/flow-approval-presenter/CHANGELOG.md | 6 ++++++ packages/flow-approval-presenter/package.json | 2 +- packages/flow-core/CHANGELOG.md | 6 ++++++ packages/flow-core/package.json | 2 +- packages/flow-design/CHANGELOG.md | 6 ++++++ packages/flow-design/package.json | 2 +- packages/flow-icons/CHANGELOG.md | 6 ++++++ packages/flow-icons/package.json | 2 +- packages/flow-mobile/flow-mobile-approval/CHANGELOG.md | 6 ++++++ packages/flow-mobile/flow-mobile-approval/package.json | 2 +- packages/flow-mobile/flow-mobile-form/CHANGELOG.md | 6 ++++++ packages/flow-mobile/flow-mobile-form/package.json | 2 +- packages/flow-mobile/flow-mobile-ui/CHANGELOG.md | 6 ++++++ packages/flow-mobile/flow-mobile-ui/package.json | 2 +- packages/flow-pc/flow-pc-approval/CHANGELOG.md | 6 ++++++ packages/flow-pc/flow-pc-approval/package.json | 2 +- packages/flow-pc/flow-pc-form/CHANGELOG.md | 6 ++++++ packages/flow-pc/flow-pc-form/package.json | 2 +- packages/flow-pc/flow-pc-ui/CHANGELOG.md | 6 ++++++ packages/flow-pc/flow-pc-ui/package.json | 2 +- packages/flow-types/CHANGELOG.md | 6 ++++++ packages/flow-types/package.json | 2 +- 22 files changed, 77 insertions(+), 11 deletions(-) diff --git a/packages/flow-approval-presenter/CHANGELOG.md b/packages/flow-approval-presenter/CHANGELOG.md index a04c828..206eaa0 100644 --- a/packages/flow-approval-presenter/CHANGELOG.md +++ b/packages/flow-approval-presenter/CHANGELOG.md @@ -1,5 +1,11 @@ # @coding-flow/flow-approval-presenter +## 0.2.13 + +### Patch Changes + +- 版本升级至 0.2.13(配合 flow-design 拒绝脚本 key 存储修复发布,本包无功能变更) + ## 0.2.11 ### Patch Changes diff --git a/packages/flow-approval-presenter/package.json b/packages/flow-approval-presenter/package.json index 6948271..6b58c80 100644 --- a/packages/flow-approval-presenter/package.json +++ b/packages/flow-approval-presenter/package.json @@ -1,6 +1,6 @@ { "name": "@coding-flow/flow-approval-presenter", - "version": "0.2.11", + "version": "0.2.13", "description": "flow-engine approval presenter framework ", "type": "module", "sideEffects": [ diff --git a/packages/flow-core/CHANGELOG.md b/packages/flow-core/CHANGELOG.md index bf70c1b..01aebf4 100644 --- a/packages/flow-core/CHANGELOG.md +++ b/packages/flow-core/CHANGELOG.md @@ -1,5 +1,11 @@ # @coding-flow/flow-core +## 0.2.13 + +### Patch Changes + +- 版本升级至 0.2.13(配合 flow-design 拒绝脚本 key 存储修复发布,本包无功能变更) + ## 0.2.11 ### Patch Changes diff --git a/packages/flow-core/package.json b/packages/flow-core/package.json index b3a6439..d857739 100644 --- a/packages/flow-core/package.json +++ b/packages/flow-core/package.json @@ -1,6 +1,6 @@ { "name": "@coding-flow/flow-core", - "version": "0.2.11", + "version": "0.2.13", "description": "flow-engine core lib framework ", "type": "module", "sideEffects": [ diff --git a/packages/flow-design/CHANGELOG.md b/packages/flow-design/CHANGELOG.md index 6d05c0d..8c84f7a 100644 --- a/packages/flow-design/CHANGELOG.md +++ b/packages/flow-design/CHANGELOG.md @@ -1,5 +1,11 @@ # @coding-flow/flow-design +## 0.2.13 + +### Patch Changes + +- 修复拒绝动作的脚本存储:动作 script 字段保存脚本 key,脚本正文由脚本接口按 key 加载与保存,兼容历史内联脚本(codingapi/flow-engine#235) + ## 0.2.11 ### Patch Changes diff --git a/packages/flow-design/package.json b/packages/flow-design/package.json index 9a5f3d1..810306c 100644 --- a/packages/flow-design/package.json +++ b/packages/flow-design/package.json @@ -1,6 +1,6 @@ { "name": "@coding-flow/flow-design", - "version": "0.2.11", + "version": "0.2.13", "description": "flow-engine design components ", "type": "module", "sideEffects": [ diff --git a/packages/flow-icons/CHANGELOG.md b/packages/flow-icons/CHANGELOG.md index 670ee96..66a9d5c 100644 --- a/packages/flow-icons/CHANGELOG.md +++ b/packages/flow-icons/CHANGELOG.md @@ -1,5 +1,11 @@ # @coding-flow/flow-icons +## 0.2.13 + +### Patch Changes + +- 版本升级至 0.2.13(配合 flow-design 拒绝脚本 key 存储修复发布,本包无功能变更) + ## 0.2.11 ### Patch Changes diff --git a/packages/flow-icons/package.json b/packages/flow-icons/package.json index 1c792f3..c8427b8 100644 --- a/packages/flow-icons/package.json +++ b/packages/flow-icons/package.json @@ -1,6 +1,6 @@ { "name": "@coding-flow/flow-icons", - "version": "0.2.11", + "version": "0.2.13", "description": "flow-engine icons ", "type": "module", "sideEffects": [ diff --git a/packages/flow-mobile/flow-mobile-approval/CHANGELOG.md b/packages/flow-mobile/flow-mobile-approval/CHANGELOG.md index f6fb503..f69de3f 100644 --- a/packages/flow-mobile/flow-mobile-approval/CHANGELOG.md +++ b/packages/flow-mobile/flow-mobile-approval/CHANGELOG.md @@ -1,5 +1,11 @@ # @coding-flow/flow-mobile-approval +## 0.2.13 + +### Patch Changes + +- 版本升级至 0.2.13(配合 flow-design 拒绝脚本 key 存储修复发布,本包无功能变更) + ## 0.2.11 ### Patch Changes diff --git a/packages/flow-mobile/flow-mobile-approval/package.json b/packages/flow-mobile/flow-mobile-approval/package.json index 8eda2de..c7f52a6 100644 --- a/packages/flow-mobile/flow-mobile-approval/package.json +++ b/packages/flow-mobile/flow-mobile-approval/package.json @@ -1,6 +1,6 @@ { "name": "@coding-flow/flow-mobile-approval", - "version": "0.2.11", + "version": "0.2.13", "description": "flow-engine pc mobile approval components", "type": "module", "sideEffects": [ diff --git a/packages/flow-mobile/flow-mobile-form/CHANGELOG.md b/packages/flow-mobile/flow-mobile-form/CHANGELOG.md index cfa1da6..da0ac89 100644 --- a/packages/flow-mobile/flow-mobile-form/CHANGELOG.md +++ b/packages/flow-mobile/flow-mobile-form/CHANGELOG.md @@ -1,5 +1,11 @@ # @coding-flow/flow-mobile-form +## 0.2.13 + +### Patch Changes + +- 版本升级至 0.2.13(配合 flow-design 拒绝脚本 key 存储修复发布,本包无功能变更) + ## 0.2.11 ### Patch Changes diff --git a/packages/flow-mobile/flow-mobile-form/package.json b/packages/flow-mobile/flow-mobile-form/package.json index c501c31..1a5a2e7 100644 --- a/packages/flow-mobile/flow-mobile-form/package.json +++ b/packages/flow-mobile/flow-mobile-form/package.json @@ -1,6 +1,6 @@ { "name": "@coding-flow/flow-mobile-form", - "version": "0.2.11", + "version": "0.2.13", "description": "flow-engine mobile form engine", "type": "module", "sideEffects": [ diff --git a/packages/flow-mobile/flow-mobile-ui/CHANGELOG.md b/packages/flow-mobile/flow-mobile-ui/CHANGELOG.md index 764a08b..3c42afd 100644 --- a/packages/flow-mobile/flow-mobile-ui/CHANGELOG.md +++ b/packages/flow-mobile/flow-mobile-ui/CHANGELOG.md @@ -1,5 +1,11 @@ # @coding-flow/flow-mobile-ui +## 0.2.13 + +### Patch Changes + +- 版本升级至 0.2.13(配合 flow-design 拒绝脚本 key 存储修复发布,本包无功能变更) + ## 0.2.11 ### Patch Changes diff --git a/packages/flow-mobile/flow-mobile-ui/package.json b/packages/flow-mobile/flow-mobile-ui/package.json index a64098c..f891b74 100644 --- a/packages/flow-mobile/flow-mobile-ui/package.json +++ b/packages/flow-mobile/flow-mobile-ui/package.json @@ -1,6 +1,6 @@ { "name": "@coding-flow/flow-mobile-ui", - "version": "0.2.11", + "version": "0.2.13", "description": "flow-engine mobile ui components", "type": "module", "sideEffects": [ diff --git a/packages/flow-pc/flow-pc-approval/CHANGELOG.md b/packages/flow-pc/flow-pc-approval/CHANGELOG.md index 46313fd..4cb5188 100644 --- a/packages/flow-pc/flow-pc-approval/CHANGELOG.md +++ b/packages/flow-pc/flow-pc-approval/CHANGELOG.md @@ -1,5 +1,11 @@ # @coding-flow/flow-pc-approval +## 0.2.13 + +### Patch Changes + +- 版本升级至 0.2.13(配合 flow-design 拒绝脚本 key 存储修复发布,本包无功能变更) + ## 0.2.11 ### Patch Changes diff --git a/packages/flow-pc/flow-pc-approval/package.json b/packages/flow-pc/flow-pc-approval/package.json index ace1a82..41e912a 100644 --- a/packages/flow-pc/flow-pc-approval/package.json +++ b/packages/flow-pc/flow-pc-approval/package.json @@ -1,6 +1,6 @@ { "name": "@coding-flow/flow-pc-approval", - "version": "0.2.11", + "version": "0.2.13", "description": "flow-engine pc form approval components", "type": "module", "sideEffects": [ diff --git a/packages/flow-pc/flow-pc-form/CHANGELOG.md b/packages/flow-pc/flow-pc-form/CHANGELOG.md index 2cb993c..cb6455f 100644 --- a/packages/flow-pc/flow-pc-form/CHANGELOG.md +++ b/packages/flow-pc/flow-pc-form/CHANGELOG.md @@ -1,5 +1,11 @@ # @coding-flow/flow-pc-form +## 0.2.13 + +### Patch Changes + +- 版本升级至 0.2.13(配合 flow-design 拒绝脚本 key 存储修复发布,本包无功能变更) + ## 0.2.11 ### Patch Changes diff --git a/packages/flow-pc/flow-pc-form/package.json b/packages/flow-pc/flow-pc-form/package.json index 76d28a1..a1623f1 100644 --- a/packages/flow-pc/flow-pc-form/package.json +++ b/packages/flow-pc/flow-pc-form/package.json @@ -1,6 +1,6 @@ { "name": "@coding-flow/flow-pc-form", - "version": "0.2.11", + "version": "0.2.13", "description": "flow-engine pc form engine", "type": "module", "sideEffects": [ diff --git a/packages/flow-pc/flow-pc-ui/CHANGELOG.md b/packages/flow-pc/flow-pc-ui/CHANGELOG.md index d265593..4b52f92 100644 --- a/packages/flow-pc/flow-pc-ui/CHANGELOG.md +++ b/packages/flow-pc/flow-pc-ui/CHANGELOG.md @@ -1,5 +1,11 @@ # @coding-flow/flow-pc-ui +## 0.2.13 + +### Patch Changes + +- 版本升级至 0.2.13(配合 flow-design 拒绝脚本 key 存储修复发布,本包无功能变更) + ## 0.2.11 ### Patch Changes diff --git a/packages/flow-pc/flow-pc-ui/package.json b/packages/flow-pc/flow-pc-ui/package.json index 8088597..5543196 100644 --- a/packages/flow-pc/flow-pc-ui/package.json +++ b/packages/flow-pc/flow-pc-ui/package.json @@ -1,6 +1,6 @@ { "name": "@coding-flow/flow-pc-ui", - "version": "0.2.11", + "version": "0.2.13", "description": "flow-engine pc ui components", "type": "module", "sideEffects": [ diff --git a/packages/flow-types/CHANGELOG.md b/packages/flow-types/CHANGELOG.md index 9c5c291..4128383 100644 --- a/packages/flow-types/CHANGELOG.md +++ b/packages/flow-types/CHANGELOG.md @@ -1,5 +1,11 @@ # @coding-flow/flow-types +## 0.2.13 + +### Patch Changes + +- 版本升级至 0.2.13(配合 flow-design 拒绝脚本 key 存储修复发布,本包无功能变更) + ## 0.2.11 ### Patch Changes diff --git a/packages/flow-types/package.json b/packages/flow-types/package.json index 1fc52bb..41f6e14 100644 --- a/packages/flow-types/package.json +++ b/packages/flow-types/package.json @@ -1,6 +1,6 @@ { "name": "@coding-flow/flow-types", - "version": "0.2.11", + "version": "0.2.13", "description": "flow-engine types", "type": "module", "sideEffects": [