Skip to content

审批、任务与协作 ​

审批协作覆盖用户处理任务时的全部动作,包括通过、驳回、转办、委派、协办、加签、减签、退回、撤回已办、催办和动态抄送。入口主要是「待我审批」「我已办」「抄送我的」「我的申请」和实例详情。

待办列表 ​

「待我审批」按任务组织:同一实例的多条并行待办(如并行会签、加签)各占一行,可独立勾选和处理;列表总数与行数同口径。批量勾选以任务为粒度,提交前会拉取最新列表做陈旧检查,状态已变化的任务被剔除并提示刷新。

新待办通过 WS 实时推送并刷新列表缓存(见下文)。

待办处理 ​

操作说明
通过当前任务通过;按审批方式判断是否推进节点
驳回当前任务驳回;按按钮跳转配置或节点驳回策略处理
转办把当前任务转给目标用户,当前处理人退出任务
委派目标用户先给出建议,再回到最早委派人最终确认
加签临时增加审批人,可前加签、后加签或并加签
减签移除由加签产生且仍可处理的任务
退回退回前序审批/办理节点
催办对待处理任务发送提醒
协办邀请其他用户提供意见,不代替审批
撤回已办撤回本人已通过 / 驳回的正式意见;实例须仍运行,后续节点和补充审批不能已有正式处理。原任务保留意见与签名并增加「已撤回」标记,活动任务作废为 skipped(注释 [撤回重审] 原审批链作废),清理活动 Token 后回到该节点建立新的激活轮次与任务
修改可编辑字段节点表单权限含「可编辑」字段时,处理人可在详情中修改并随「通过」提交(formUpdates),服务端按节点权限白名单过滤后写回实例表单

审批接口使用幂等防重复提交,批量审批与转办额外通过 Redis 动作去重,避免重复点击造成多次推进。通过、拒绝、转办、委派、加签、减签、退回七类动作在服务端按节点「操作按钮」配置强制校验启用态,未启用的动作即使绕过前端也会被拒绝。

重复处理人预检 ​

转办、委派、加签、管理员改派和离职交接在写入前统一校验目标处理人:目标用户已在同节点同激活轮次持有 pending/waiting 任务时,返回 409 并附带姓名(如「赵六·财务主管 已是本节点待办处理人,无需重复指派」)。离职交接逐条改派时命中冲突的条目自动跳过、不阻断其余条目。数据库层的活动任务部分唯一索引作为最后防线(见实例生命周期)。

委派回执场景下,若最早委派人已在同节点同轮持有活动任务,由既有任务直接承接最终确认。

实时提醒与列表刷新 ​

管理后台在 AdminLayout 挂载统一的 WS 消费 hook,按事件类型失效对应的 TanStack Query 缓存:

  • 新待办推送 workflow:taskCreated:右上角弹出可点击提醒(直达「待我审批」并自动展开该任务),并刷新待办列表缓存。
  • 自己的任务被超时自动通过 / 自动拒绝时推送 workflow:taskFinished(decision: approved | rejected),刷新待办列表。
  • 流程结束(通过 / 驳回 / 撤回)向发起人推送 workflow:instanceFinished,刷新「我的申请」、待办与流程监控缓存;刻意不做全域失效,避免设计器编辑中的画布被 refetch 覆盖。

移动审批(approval.html)不走 WS,底部 TabBar 的待办 / 抄送未读角标由 30 秒轮询 GET /api/workflows/instances/pending-mine/count 与 GET /api/workflows/instances/cc-mine/unread-count 维持。

审批方式 ​

方式运行效果
或签一份正式基础意见满足基础条件;跳过无关候选,仍等待必须处理的锚定席位及补充组
会签全部基础席位正式同意,并满足补充组后节点通过
依次审批只开放当前基础席位;其后签完成后才开放下一席位
比例会签按冻结席位数计算通过阈值,达标后只跳过无关候选;加签人数不改变分母
随机一人从候选人中选一人处理
自动通过节点不产生人工待办,自动推进

同一次进入节点创建一个激活轮次(activationId),冻结基础审批方式、席位数和通过阈值;节点重入创建新轮。计票以正式审批席位为依据,任务记录、抄送、加签和委派建议不增加基础票数。转办及委派回执继续归属原席位。详情的「审批明细」展示基础意见、必须处理的席位和各补充加签组。

基础比例仍可能达标、或新增或签组仍有成员可能同意时,可以继续等待其它正式意见。必须处理的锚定席位拒绝或必办组失败时执行节点拒绝/退回策略;真正终止或退回时清理本轮未结束任务、席位及组。时间线按决策事实展示退回目标,不把部分拒绝或委派回执推断成退回/重审。

驳回与退回 ​

驳回用于表达不同意,退回用于让前序节点补充处理。

能力说明
终止流程实例进入 rejected,全量清场(任务/Token/推进作业)
退回上一节点找到上一个审批/办理节点重新生成任务
退回发起人全量清场后实例进入 returned,发起人修改后在原实例重新提交(见实例生命周期)
退回指定节点按节点 key 回到目标节点
按钮跳转拒绝/退回按钮可配置跳转目标,优先于节点默认策略
回到原节点被退回节点完成后直接回到发起退回的节点

被清场的待办都带来源注释,处理人在「我已办」和时间线中能看到任务因何作废。

转办与委派 ​

转办、委派、管理员改派、离职交接、超时升级转交统一写入 workflow_task_transfers 明细表(移出方、接收方、操作人、原因、时间),完整回答"谁在何时因何把任务交给了谁":

字段说明
originalAssigneeId任务最初处理人
transfers任务的转办明细列表(详情场景返回,时间线逐条展示)
delegatedFromId委派期间指向最早委派人

系统禁止把任务转回曾经经手的人(基于转办明细的 from/to 并集判定),避免 A → B → A 的循环;转给同节点已有活动待办的人则被预检拦截(409 带姓名)。委派多次时,最终回执仍回到最早委派人。

加签与减签 ​

加签位置说明
前加签新增组先处理,原席位等待;组通过或合法全减后原席位恢复,仍须形成正式意见
后加签新增组先等待,原席位正式同意后才激活;建议制委派的回执不算正式同意
并加签新增组与原席位同时处理;基础条件和全部必办新增组均满足后才能推进

三个位置都支持新增组的会签或或签,signMode 只控制本次新增组,不改写原节点策略或比例分母。前后加签将原席位标为必须处理;即使基础或签/比例已达标,也不能跳过该原席位和未完成的新增组。顺序会签中的后签完成后才开放下一原始席位。只允许原始审批席位创建组,同一席位可以创建多个组,新增组成员不再嵌套加签。

减签在「审批明细」中按组操作,原任务正在等待或已经办完都可以处理有权限的未办成员。接口为 POST /api/workflows/sign-groups/{groupId}/reduce,传 targetSlotIds;不能移除原始审批人或已办意见。全减记为取消关卡,不产生同意票。待办通知和超时从任务真正激活后开始,等待原因在审批链中明确展示。加签和减签分别触发 task.addSigned、task.reduceSigned 事件。

协办 ​

协办用于收集意见,不改变任务处理人。审批人发起协办后,协办人在「我的协办」中回复意见,审批人在任务详情中查看并自行决定通过或驳回。

审批代理 ​

审批代理(离岗委托)用于出差、休假等场景:委托人把自己的待审批任务在一段时间内自动转交给代理人。入口为 工作流引擎 → 审批中心 → 审批代理。

配置说明
委托人 / 代理人待办从委托人自动转交给代理人
适用流程可限定单个流程定义;留空对全部流程生效
生效时间开始 / 结束时间;留空表示立即生效 / 长期有效
原因备注委托原因
启用状态规则可随时停用

代理在任务生成时生效:引擎解析出的处理人命中启用中的代理规则时,待办直接指派给代理人,任务上保留 delegatedFromId 指向原处理人,时间线可见转交痕迹。已生成的历史待办不受新增规则影响。管理员执行离职交接时可一并停用离职人的代理规则。

催办 ​

发起人和管理员可对运行中实例的 pending 任务催办。单个任务 5 分钟内只允许催办一次;实例级催办会对所有待办尝试提醒,并跳过命中节流的任务。节点开启超时「自动提醒」时,系统也会在每次到期提醒时向处理人自动发送催办通知。

催办记录写入 workflow_task_urges,并触发 task.urged 事件(系统超时提醒仅发事件,不写催办记录)。

抄送 ​

抄送节点解析接收人后写入抄送任务,送达即完成,不阻塞流程:

  • 「抄送我的」列表的抄送时间为 CC 任务的送达时间(运行中补加的抄送按补加时刻计),与实例发起时间无关;未读/已读状态独立维护,支持标记已读与转发。
  • 所有运行态视图(节点列表、流程图卡片、审批时间线、监控任务明细)对已送达的抄送统一显示「已抄送」(成功色);流程尚未到达的抄送节点显示「待抄送」。

运行中的实例支持动态补加抄送:

http
POST /api/workflows/instances/{id}/cc/add

调用者必须是发起人或管理员,目标节点必须是 ccNode,系统会自动去重已抄送过的用户。

常用语、附件与签名 ​

能力说明
常用语用户维护自己的审批常用语,在审批弹窗中快速填入
附件每个操作按钮(通过/拒绝/转办/委派/加签/退回)可独立配置附件策略:不显示 / 选填 / 必填,必填时未上传附件无法提交。审批与发起表单的附件统一走 POST /api/workflows/attachments(按工作流身份放行,见权限与范围控制)
手写签名按节点策略选择无需签名、确认使用个人签名或本次重新手写;字段签名不代替节点签名
意见必填节点启用后,通过或驳回必须填写意见

签名策略为 reusable 时,可在审批操作中确认使用我的签名,也可重新手写。选择模板仅用于本次操作,不自动执行同意;handwritten 策略要求本次重写。提交失败可以在当前操作内重试,切换任务后按目标节点重新确认。

成功审批把图片写入任务 signature,来源、真实签署人、签署时间及模板版本写入 signatureEvidence。证据由服务端生成,详情、流程记录与打印读取固定结果;以后更换或删除个人模板不会改变已签记录。模拟登录期间不能签署。

沟通与通知深链 ​

实例详情「沟通」页签支持:

能力说明
自由评论参与人(发起人/处理人/超管)可留言
@提及提及参与人并发送站内信 + WS 实时提醒(带实例详情深链)
评论附件每条评论最多 5 个附件,随评论展示
回复引用对某条评论回复,展示被引用评论的作者与内容摘要(父评论删除后引用置空,本条保留)

工作流站内信均带深链(link 字段):待办/催办/转交提醒跳「待我审批」并自动弹出对应任务详情;抄送提醒跳「抄送我的」;审批结果与 @提及跳「我的申请」实例详情。顶栏消息点击直达,WS 实时弹窗点击文案同样跳转。

批量处理 ​

操作说明
批量通过对多个待办任务逐条审批通过,返回每条成功/失败结果
批量驳回对多个待办任务逐条驳回,返回每条成功/失败结果
批量撤回对多个自己发起的运行实例撤回
批量催办对多个实例的待办批量催办

批量通过最多 200 个任务,签名输入只接受已保存模板引用。一次确认可以用于所选的可复用签名任务,服务端逐条核验本人、租户与版本并生成每条任务自己的证据:

  • none:正常审批,不记录传入的模板签名。
  • reusable:未选择模板、模板失效或版本已变化时,该任务返回失败;其余符合条件的任务仍可成功。
  • handwritten:返回需单独手写的提示,界面不允许加入批量同意。
  • 需要指定下一节点审批人或必填附件等逐条操作的任务,同样不能批量同意。

结果按任务返回 success/message,页面保留失败项和原因,不把部分成功当作全部成功。批量操作以任务为粒度(勾选的每行即一个任务),提交前做陈旧检查,遇 409 并发冲突自动刷新列表引导重选。

保存视图 ​

「我的申请」「待我审批」「我已办」「抄送我的」和「流程监控」列表支持把当前筛选条件保存为个人视图,一键切换常用筛选组合;可设默认视图(进入页面自动套用)并调整排序。视图按用户隔离存储。

审批单打印 ​

实例详情提供 PDF 预览、打印和下载,需同时具有实例可见性与 workflow:instance:print 权限。模板、脱敏、归档原件、实时重渲、验真二维码和批量导出统一见审批单打印与存证。

Built with VitePress for local documentation preview.