跳转到内容

工作流:取消审批

当业务单据已经撤回、作废或失效,相关审批却仍停留在待处理状态时,容易造成“单据已经不能办理,审批人仍可继续审批”的流程脱节。

工作流:取消审批会在业务单据状态变化时,自动终止该单据关联的进行中审批,让审批状态与实际业务状态始终一致。审批人无需再手工处理已经失效的待办,业务人员也不用逐条查找和关闭审批。

常见问题使用插件后的效果
订单、合同、费用申请等单据已经撤回或作废,审批任务仍在待办列表中单据状态变更后,关联的进行中审批会自动作废,待办不再可处理
业务人员需要手工联系审批人停止审批,容易遗漏或重复沟通通过工作流统一处理,无需逐位通知审批人
已失效单据被继续审批,导致后续业务操作出现误判审批状态与业务单据状态保持同步,减少无效审批和错误操作
同一单据可能发起多个审批流程可一次取消全部进行中审批,也可只取消指定审批流程

插件只处理仍在进行中的审批。已经通过、拒绝、完成或此前已作废的审批记录会被保留,不会篡改既有业务历史。

整体流程如下:

  1. 业务人员或系统将单据更新为“已撤回”“已作废”“已取消”等状态。
  2. 工作流识别该状态变化,找到这条单据关联的进行中审批。
  3. 插件终止对应审批执行,并同步更新审批及待办状态。
  4. 审批人看到的相关待办不再可处理,业务单据与审批记录保持一致。
  • 已安装并启用 NocoBase 工作流插件。
  • 已安装并启用 NocoBase 审批插件。
  • 已在对应业务数据表中建立审批流程。
  • 建议由熟悉业务规则的工作流管理员进行配置。

以“单据作废时自动取消审批”为例:

  1. 在需要管理的业务数据表上,新建一个数据表事件工作流
  2. 设置触发条件:仅当单据状态变为“已作废”“已撤回”或企业定义的失效状态时执行。

  1. 在工作流中添加 取消审批 节点。

  1. 配置节点字段:
配置项填写方式作用
数据表选择当前业务单据所在的数据表告知插件在哪个业务对象中查找关联审批
单据主键选择触发器中的当前单据主键精确定位需要取消审批的那一条业务单据
审批工作流标识(key)可留空;需精确控制时填写目标审批工作流标识留空时取消该单据的全部进行中审批;填写后仅取消指定流程

  1. 保存并启用工作流。
  2. 用一条处于审批中的测试单据执行作废或撤回操作,确认审批和待办均变为已终止。

  • 明确触发条件:只在单据真正失效时执行,避免普通编辑误触发取消审批。
  • 多审批流程场景:若单据上存在多个相互独立的审批流程,建议填写“审批工作流标识”,只关闭应停止的流程。

取消审批节点成功执行后,会将处理结果作为节点结果输出。后续节点可通过工作流变量选择器读取这些字段,例如用于记录日志、发送通知或判断是否还有需要人工跟进的审批。

返回字段说明
matchedApprovals找到的审批记录总数,包含本次已取消、此前已作废和已经结束的审批。
canceledExecutions本次实际成功取消的进行中审批执行数量。
skippedExecutions本次未处理的审批执行数量,始终等于 skipped 列表的条目数。
skipped未处理项的明细列表,每一项包含审批工作流标识和未处理原因。

节点结果示例:

{
"matchedApprovals": 2,
"canceledExecutions": 1,
"skippedExecutions": 1,
"skipped": [
{
"workflowKey": "order-approval",
"reason": "already_terminal"
}
]
}

skipped 中每一项的字段说明如下:

字段说明
workflowKey对应审批工作流的标识,可用于判断是哪一个审批流程未被处理。
reason未处理原因。already_aborted 表示审批已作废;already_terminal 表示审批已通过、拒绝、完成或失败;state_changed 表示取消过程中审批状态已变化。

matchedApprovalscanceledExecutions 都为 0 时,表示该单据没有正在进行的审批。节点仍会正常执行完成,适合在业务流程中重复调用。

情况插件行为
单据存在进行中的审批终止审批执行,并将相应审批及待办更新为已终止
单据没有进行中的审批正常结束,不会报错
审批已经通过、拒绝、完成或失败保留历史记录,不做修改
审批已经作废不重复处理
在审批工作流内部配置该节点不支持,系统会阻止此配置,避免审批取消自身