Skip to content

监控、诊断与运维

工作流运维围绕实例、任务、执行 Token、异步作业和健康巡检展开。后台入口包括 流程监控健康巡检事件订阅触发器执行流程监控 页内分五个页签:实例监控、数据分析、引擎诊断、作业账本、补偿工单

流程监控(实例监控)

工作流引擎 → 流程监控 → 实例监控 提供实例维度的查询和处置能力:

能力说明
实例列表按流程、状态、发起人、时间等维度查询,支持保存视图快速切换筛选组合
实例导出按当前筛选导出实例列表(单次封顶 10000 行)
流程详情查看实例基础信息、表单数据、当前节点和任务
运行时诊断汇总节点、任务、触发器、事件派发、执行 Token、定义快照
强制跳转将实例推进到指定节点(原因必填 + 终止任务清单,见下文)
改派处理人调整待办任务处理人;目标用户已在同节点持有待办时返回 409
批量恢复对卡住实例执行批量跳过或恢复动作(原因必填)
诊断包导出导出实例运行快照,便于工单留档和离线分析

强制干预留痕

强制跳转与批量恢复属于改写执行位置的高危动作,统一要求留痕:

  • 强制跳转:确认框展示将被终止的活动任务清单(任务号、节点、处理人、状态),跳转原因必填(服务端 schema 同步强制);执行后被终止任务标记 skipped 并写入 [管理员强制跳转至「目标节点」] + 原因 备注,原因同时进入操作审计。
  • 批量推进卡死实例:按定义、节点和卡住时长圈定实例,恢复原因必填,逐实例跳过活动 Token 并推进,单个失败不影响其它。

运行时诊断

运行时诊断抽屉包含这些视图:

视图内容
引擎轨迹实例相关的引擎事件和作业链路
节点流程图节点状态、当前节点、异常节点
任务全量任务、处理人、动作、耗时和状态(抄送任务显示「已抄送」)
触发器节点触发器派发状态、请求、响应和错误
事件派发事件投递状态、订阅命中和错误
执行 Token并行、包容、子流程等待等执行路径状态
流程图按运行状态渲染的流程定义快照
表单数据实例运行时表单数据
定义快照发起时冻结的流程定义

诊断结论内置双向 Token 一致性校验:

规则级别说明
运行中实例没有活动任务criticalrunning 但无 pending/waiting 任务,推进中断或状态未回写
运行中实例无活动执行 Tokencriticalrunning 但没有任何 active Token,执行路径中断
活动任务缺少执行 Token(Task→Token)critical节点存在待处理任务但没有 active Token,任务提交必然失败,需用「强制跳转」重置执行位置
Token 与任务不一致(Token→Task)warning节点存在 active Token 但无活动任务,可能状态漂移(parked join Token 除外)
等待任务无法被唤醒(疑似死锁)critical仅剩 waiting 任务且不存在外部回调、触发器、子流程或同节点 pending 等任何唤醒来源
外部审批分派失败 / 触发器执行失败critical对应作业 failed/dead
事件派发失败 / 待处理critical / warningoutbox 作业异常或积压

数据分析

流程监控 → 数据分析 提供流程效率与负载的聚合视图,可按流程定义过滤:

板块内容
总量指标各状态实例计数、已完结实例平均耗时、当前挂起任务数、近 7 天发起数
发起 / 完结趋势近 14 天按日的发起与完结曲线
流程定义排行实例量 Top 定义的运行中/通过/驳回分布与平均耗时
节点瓶颈人工节点的平均处理时长与积压待办数,定位卡点节点
审批人工作量各审批人的待办与已处理量
超时预警已超时待办数、24 小时内将超时待办数,以及超时待办明细列表
异步健康作业、Webhook 投递、子流程实例的状态分布速览

健康巡检

工作流引擎 → 健康巡检 用于快速识别异常实例和异步执行问题,阈值(10 分钟 ~ 1 天)由页面参数控制。巡检规则:

问题类型级别说明
token_task_mismatch 活动任务缺少执行 Tokencritical超阈值活动任务所在节点无 active Token,提交必然失败,指向「强制跳转」修复
external_dispatch_failed 外部审批分派失败critical派发作业 failed/dead
external_dispatch_pending 外部审批未派发warning任务等待超阈值仍未派发到外部系统
trigger_execution_failed 触发器执行失败critical触发器作业最终失败
trigger_waiting_no_execution 触发器无执行记录critical触发器任务等待超阈值且无执行记录
subprocess_waiting 子流程等待过久warning父任务等待超阈值
delay_missing_wake_job 延迟缺唤醒作业critical延迟任务无对应 delay_wake 作业,将无法自动唤醒
delay_overdue 延迟到期未唤醒critical唤醒作业已到期但任务仍在等待
task_timeout_overdue 任务超时未处理warning超时作业到期,等待超时处理器执行
waiting_task_stuck 审批任务滞留过久warning普通人工待办超过阈值仍未处理(无其它异常特征),提示催办、转办或配置超时策略
workflow_event_outbox_failed / _pending 事件派发异常critical / warning事件分发作业失败或积压
instance_stalled 实例疑似卡死critical进行中实例既无待办/等待任务也无在途作业,需用监控页恢复动作处理

每条任务只报告最高优先级问题(Token 缺失 > 作业异常 > 滞留),不会重复计数。

引擎诊断

流程监控 → 引擎诊断 展示引擎内部状态内省、队列分布、健康趋势历史和恢复动作。恢复动作按作业类型细分,每个动作只处理对应类型的作业:

动作处理的作业类型
重放事件派发event_dispatch
恢复触发器重派trigger_dispatch
恢复延时任务delay_wake
处理超时任务task_timeout
恢复子流程subprocess_spawn / subprocess_join
恢复 Webhook 投递webhook_delivery

这些动作按恢复扫描设计,适合处理队列积压、进程重启后恢复和外部系统短暂故障后的补偿。每个动作支持按实例、入库时长、处理上限筛选,并可先预览「将处理的作业数 + 样本」再执行,运维可精确定向恢复(例如「只恢复触发器」或「只处理超时」),减少无关作业的波及。引擎健康快照由系统任务每 5 分钟采集一次,沉淀为健康趋势历史曲线。

作业账本

异步能力统一进入作业账本。作业记录包含类型、状态、关联实例、任务、节点、traceId、运行时间、尝试次数、错误和执行明细。

作业类型说明
delay_wake延迟器到期唤醒
task_timeout待办超时处理
trigger_dispatch触发器节点派发
external_dispatch外部审批派发
subprocess_spawn发起子流程
subprocess_join子流程完成后汇聚
event_dispatch工作流事件分发
webhook_delivery事件订阅 Webhook 投递
compensation_action失败策略的反向 / 兜底补偿动作
状态说明
pending等待执行
running执行中
succeeded执行成功
failed本轮失败,仍可重试
dead重试耗尽进入死信
canceled已取消或跳过(含实例终态/退回时清场取消的推进类作业)

作业账本支持按类型和状态筛选、查看执行明细、查看同一 traceId 的链路、单条重试、单条跳过、批量重试、批量跳过、条件重放和多维失败聚类。

前六类(delay_wake ~ subprocess_join)为推进类作业:实例进入终态、被退回发起人、撤回或取消时随全量清场一并取消,不会苏醒后推进已终结的实例。事件分发、Webhook 投递与补偿动作属于通知/补偿类,不受清场影响。

保留期清理

终态实例的执行 Token 由「数据保留策略」workflow_tokens 清理(每日 data-retention 任务执行,默认保留 90 天,仅处理通过/驳回/撤回/取消实例);调度节点注册记录(system_scheduler_nodes,节点 ID 含进程号、每次进程重启新增一行)由数据保留策略按最后心跳时间清理(默认 7 天)。

运行状态面板

作业账本顶部提供运行状态面板,聚合 worker 心跳与作业派生指标,用于快速判断作业平台整体健康:

指标说明
存活 Worker心跳新鲜(90 秒内)的调度节点数 / 近 24 小时有心跳的节点数(悬浮查看各节点在途数与心跳时间;更早的历史节点行不计入分母,由保留策略清理)
在途作业当前 running 状态作业数
卡死running 且锁定超过宽限期(5 分钟)的作业数
积压已到期(runAt<=now)但仍 pending 的作业数
死信dead 状态作业数
最后领取最近一次作业被领取的时间(max lockedAt
失败率(1h)近 60 分钟执行失败率
平均耗时(1h)近 60 分钟平均处理耗时

本系统为「单 Worker + drain 兜底」模型,「存活 Worker」实为心跳新鲜的调度节点数。

多维失败聚类

失败聚类 支持按 错误原因 / 作业类型 / 实例 / TraceId 四个维度下钻聚合 dead/failed 作业,定位高频故障来源。每个聚类簇可直接「重放该簇」,自动带入对应过滤条件进入条件重放弹窗。

条件重放与限流

重放死信 打开条件重放弹窗,支持按 目标状态(dead/failed)、作业类型、实例、TraceId、错误关键字、入库时长 精确圈定要重放的作业,并可先「预览匹配数」再执行。

为避免一次性重放大量死信冲垮下游连接器与数据库,重放内置限流

  • 重放速率(条/秒):默认 20,按速率对 runAt 错峰分散,而非全部立即入队;
  • 单次上限:默认 500、最大 500,超出部分需再次重放;
  • 弹窗内展示预计错峰完成时间窗,执行结果会提示实际速率、成功数与匹配总数。

批量重试同样走错峰限流路径,默认 20 条/秒。

补偿工单

补偿工单用于承接需要人工判断的异常实例。工单记录实例、失败节点、异常原因、自动补偿动作状态和处理历史。处理人可以:

操作说明
恢复推进补偿完成后从失败节点继续推进流程
重试补偿动作自动补偿动作失败时重新入队
添加备注 / 附件沉淀处理过程到工单历史
标记修复放行确认外部问题已处理,流程继续运行
终止流程结束异常实例并跳过待办

补偿工单适合外部系统不可用、审批回调无法自动确认、异常路径需要人工兜底的场景。工单如何由节点失败策略产生、反向动作如何配置,见补偿 / Saga 能力

接入系统告警

作业平台的关键指标已接入 系统管理 → 监控告警,可像 CPU/内存一样配置阈值规则、持续时长抑制、静默与多通道(邮件 / Webhook / 站内信)派发:

指标说明单位
流程引擎健康分引擎健康巡检综合评分
流程引擎队列积压到期未处理作业数
流程作业死信数dead 状态作业数
流程作业失败率近 60 分钟执行失败率%
流程作业卡死数running 且锁定超宽限期的作业数

指标全集、租户口径与通知渠道的统一说明见系统运维 → 监控告警;支付与开放平台域的业务指标同样接入了这套引擎。

指标由告警评估器(默认每分钟)实时采集派生,无需额外采集任务。运维可据此在死信堆积、积压升高、失败率异常或长时间 running 卡死时自动收到告警。

排查顺序

Built with VitePress for local documentation preview.