spec.md 4.1 KB

流程审批动作权限与办理要求控制

status: implement created: 2026-05-23 complexity: 中等

1. 背景与目标

当前流程办理页默认展示同意、驳回、转办,并且审批意见固定必填。业务需要按审批节点控制办理人可执行的动作,并配置办理时是否必须签名、是否必须填写审批意见。

目标:

  • 在流程设计器用户任务节点中配置办理动作权限:通过、拒绝、退回、终结流程、转办等。
  • 在审批办理接口侧校验动作权限,避免只靠前端隐藏按钮。
  • 在待办办理页按配置展示动作按钮,并校验签名、审批意见必填规则。
  • 将审批签名写入任务记录,满足后续审计展示。

2. 现状

相关文件:

  • forge-admin-ui/src/components/bpmn/NodePropertiesPanel.vue:节点属性配置,当前只维护 BPMN XML 属性。
  • forge-admin-ui/src/views/flow/todo.vue:待办审批抽屉,当前固定要求审批意见,并展示同意/驳回/转办。
  • forge-admin-ui/src/api/flow.js:流程任务 API。
  • forge/forge-framework/forge-plugin-parent/forge-plugin-flow/src/main/java/.../FlowTaskServiceImpl.java:审批通过、驳回、转办、任务表单信息。
  • forge/forge-flow/forge-flow-server/src/main/java/.../FlowTaskController.java:任务办理接口。
  • forge/db/migration/:正式 Flyway 迁移脚本。

已有能力:

  • TaskFormInfo 已返回 allowDelegateallowRejectallowRejectToStart
  • FlowNodeConfig 已有转办/转交/加签/减签/驳回等部分字段,但设计器主链路主要通过 BPMN XML 保存节点属性。
  • FlowInstanceService 已支持按流程实例终止、回退到指定活动、任务转派。

3. 功能范围

功能 1:节点办理动作配置

在用户任务节点增加“办理控制”配置:

  • 允许通过
  • 允许拒绝
  • 允许退回
  • 允许终结流程
  • 允许转办
  • 需要审批意见
  • 需要签名

保存到 BPMN 的 flowable:* 扩展属性,同时后端兼容 sys_flow_node_config 字段。

功能 2:办理页按配置展示与校验

待办抽屉:

  • 只展示当前节点允许的动作按钮。
  • 审批意见按 requireComment 决定是否必填。
  • 签名按 requireSignature 决定是否显示并必填。
  • 外置表单提交也沿用同一套校验规则。

功能 3:服务端权限与必填校验

接口侧:

  • approve 校验允许通过、审批意见、签名。
  • reject 校验允许拒绝、审批意见、签名。
  • delegate 校验允许转办。
  • 新增 return 校验允许退回,并退回上一已完成用户任务。
  • 新增 terminate 校验允许终结流程,并终止当前流程实例。

功能 4:数据持久化

数据库迁移新增:

  • sys_flow_node_config.allow_approve
  • sys_flow_node_config.allow_return
  • sys_flow_node_config.allow_terminate
  • sys_flow_node_config.require_signature
  • sys_flow_node_config.require_comment
  • sys_flow_task.signature

4. 非目标

  • 不实现加签/减签的完整流程语义,只保留配置扩展空间。
  • 不新增手写签名板,签名先按文本签名保存。
  • 不改造 Flowable BPMN 拒绝网关建模规则,仅在拒绝时补充 approved=false 变量。

5. 业务规则

  • 未配置时保持兼容默认:允许通过、允许拒绝、允许转办;不允许退回、终结;审批意见必填;签名非必填。
  • 审批动作权限既可来自 BPMN flowable:* 属性,也可来自 sys_flow_node_config,节点配置表优先级高于 BPMN。
  • 退回默认退到当前流程实例中最近一个已完成的用户任务;没有可退回节点时返回错误。
  • 终结流程会结束当前流程实例并将本地任务标记完成。
  • 审批意见、签名必填校验以去除首尾空格后的内容为准。

6. 验证策略

  • 后端编译:mvn -pl forge-flow/forge-flow-server -am compile -DskipTests 或可编译覆盖 flow 模块的命令。
  • 前端构建:source ~/.nvm/nvm.sh && nvm use v20.19.0 && cd forge-admin-ui && pnpm build
  • 手工验证:设计器配置用户任务办理控制,保存并发布后,在待办页验证按钮展示与必填校验。