tasks.md 7.3 KB

任务拆分 — 流程分支条件表单规则配置优化

拆分顺序:入口传参 → 条件配置实现 → 测试验证

前置条件

  • 已确认流程设计页存在 formFieldCatalog
  • 已确认 BPMN 导出使用 edge.condition

Task 1: 接入表单字段目录

  • 状态: 已完成
  • 目标: 将流程设计页动态表单字段目录传入条件分支配置组件。
  • 涉及文件:
    • forge-admin-ui/src/views/flow/design.vue — 给 DingFlowDesigner 增加 form-field-catalog 入参。
    • forge-admin-ui/src/components/flow-designer/DingFlowDesigner.vue — 新增 prop 并传给 NodeConfigDrawer
    • forge-admin-ui/src/components/flow-designer/panel/NodeConfigDrawer.vue — 新增 prop 并透传给网关配置组件。

Task 2: 实现条件规则配置器

  • 状态: 已完成
  • 目标: 在条件分支配置里支持字段、运算符和值组合生成 SpEL。
  • 涉及文件:
    • forge-admin-ui/src/components/flow-designer/panel/ConditionConfig.vue — 替换单输入框为规则模式 + 高级表达式模式。
  • 关键签名: js function buildExpression(rules, logic) {} function updateRule(edgeId, index, patch) {}

Task 3: 补充测试并验证

  • 状态: 已完成
  • 目标: 覆盖新交互,执行针对性前端测试。
  • 涉及文件:
    • forge-admin-ui/src/components/flow-designer/panel/__tests__/ConditionConfig.spec.js — 新增组件测试。
    • forge-admin-ui/src/views/flow/utils/form-field-catalog.js — 新增动态表单字段目录递归解析工具。
    • forge-admin-ui/src/views/flow/utils/__tests__/form-field-catalog.spec.js — 覆盖嵌套表单、_forge.fieldBindingref_ 过滤。
    • code-copilot/changes/flow-condition-form-rules/execution-log.md — 记录验证命令和结果。

Task 4: 修正分支条件交互细节

  • 状态: 已完成
  • 目标: 修复条件表达式内容溢出、规则不能移除,以及点击条件边时错误展示全部分支的问题。
  • 涉及文件:
    • forge-admin-ui/src/components/flow-designer/DingFlowDesigner.vue — 分支标签点击时传递当前 edgeId,节点点击时恢复全部分支。
    • forge-admin-ui/src/components/flow-designer/panel/NodeConfigDrawer.vue — 透传聚焦分支 ID。
    • forge-admin-ui/src/components/flow-designer/panel/ConditionConfig.vue — 支持聚焦单分支、删除最后一条规则后清空条件、收紧规则行和表达式预览布局。
    • forge-admin-ui/src/components/flow-designer/panel/__tests__/ConditionConfig.spec.js — 覆盖聚焦分支和删除最后一条规则。
    • forge-admin-ui/src/components/flow-designer/__tests__/DingFlowDesigner.spec.js — 覆盖点击分支标签只展示当前分支。

Task 5: 修正默认分支条件配置和规则行对齐

  • 状态: 已完成
  • 目标: 默认分支仍允许配置条件表达式,并优化规则配置行的视觉对齐。
  • 涉及文件:
    • forge-admin-ui/src/components/flow-designer/panel/ConditionConfig.vue — 设置默认分支不再清空条件;默认分支不再禁用条件配置;规则行改为字段/关系/取值对齐布局。
    • forge-admin-ui/src/components/flow-designer/canvas/BranchHeader.vue — 默认分支始终展示默认标签,避免误导为条件会参与执行。
    • forge-admin-ui/src/components/flow-designer/canvas/EdgePath.vue — 连线标签同步保持默认标签。
    • forge-admin-ui/src/components/flow-designer/converter/json-to-bpmn.js — 默认边存在条件时不写出 conditionExpression,满足 Flowable 部署校验。
    • forge-admin-ui/src/components/flow-designer/converter/branch-parser.js — 导入 BPMN 时不再清空 default 边已有条件。
    • ConditionConfig.spec.js, EdgePath.spec.js, json-to-bpmn.spec.js, branch-parser.spec.js — 补默认分支条件保留、展示和导出跳过测试。

Task 6: 支持条件网关继续添加多条分支

  • 状态: 已完成
  • 目标: 条件分支不再限制为固定两条,配置面板可继续添加分支,并保持唯一默认分支。
  • 涉及文件:
    • forge-admin-ui/src/components/flow-designer/composables/useFlowDesigner.js — 新增 addBranch(gatewayId),追加审批分支并接回已有合流节点,归一化默认分支。
    • forge-admin-ui/src/components/flow-designer/panel/ConditionConfig.vue — 在条件摘要区域增加“添加分支”入口。
    • forge-admin-ui/src/components/flow-designer/panel/NodeConfigDrawer.vue — 透传添加分支事件。
    • forge-admin-ui/src/components/flow-designer/DingFlowDesigner.vue — 接收添加分支事件,创建分支后聚焦新分支条件配置。
    • useFlowDesigner.spec.js, ConditionConfig.spec.js, DingFlowDesigner.spec.js — 覆盖第三分支、唯一默认分支和抽屉聚焦新分支。

Task 7: 调整分支添加入口与条件回显

  • 状态: 已完成
  • 目标: 将添加分支操作放到画布分支连线区域,并简化边上条件展示;表单字段表达式重新打开时回显到字段条件模式。
  • 涉及文件:
    • forge-admin-ui/src/components/flow-designer/canvas/BranchAddButton.vue — 新增画布层添加分支按钮。
    • forge-admin-ui/src/components/flow-designer/canvas/BranchHeader.vue — 条件分支标签改为摘要显示,不直接显示 SpEL 原文。
    • forge-admin-ui/src/components/flow-designer/canvas/EdgePath.vue — 网关分支边不再在 SVG 层重复渲染条件标签。
    • forge-admin-ui/src/components/flow-designer/DingFlowDesigner.vue — 在条件网关分支区域渲染添加分支按钮。
    • forge-admin-ui/src/components/flow-designer/panel/ConditionConfig.vue — 移除抽屉内添加分支入口,并支持把常见表单字段表达式反解析为规则行。
    • AddNodeButton.spec.js, EdgePath.spec.js, ConditionConfig.spec.js, DingFlowDesigner.spec.js — 覆盖画布按钮、条件摘要和规则模式回显。

Task 8: 补齐流程审批策略和表单字段权限

  • 状态: 已完成
  • 目标: 在流程设计时支持提交人撤回权限、重复审批自动同意策略、审批意见必填配置,并将表单字段权限从手工输入改为按动态表单字段勾选。
  • 涉及文件:
    • forge-admin-ui/src/views/flow/design.vue — 新增审批设置页,配置提交人撤回和重复审批自动同意策略,并写入流程级 BPMN 属性。
    • forge-admin-ui/src/components/flow-designer/DingFlowDesigner.vueuseFlowDesigner.jsjson-to-bpmn.jsbpmn-to-json.js — 增加 flowJson.config 读写和 BPMN process 扩展属性持久化。
    • forge-admin-ui/src/components/flow-designer/panel/FormPermissionConfig.vueApproverConfig.vueNodeConfigDrawer.vue — 表单字段权限改为按全局表单字段目录勾选。
    • forge-admin-ui/src/components/form-create/FlowFormCreateRenderer.vueforge-admin-ui/src/views/flow/todo.vue — 待办动态表单按字段权限隐藏、禁用和补必填校验。
    • forge-server/.../TaskFormInfo.javaFlowTaskServiceImpl.java — 下发表单字段权限,按流程属性限制提交人撤回,审批通过后执行重复审批自动同意。
    • FormPermissionConfig.spec.jsjson-to-bpmn.spec.jsbpmn-to-json-linear.spec.jsuser-task-parser-permissions.spec.js — 补流程级策略和字段权限持久化测试。