执行记录与诊断

执行记录回答“这一次具体发生了什么”。每条运行固定关联一个工作流版本,并保存输入快照、状态、时间以及节点级执行证据。

查看执行记录

从“设置 → 自动化 → 工作流执行”查看所有运行。列表支持按工作流标题和状态筛选,展示运行 ID、工作流标题、触发时间、状态和耗时。当前状态筛选器提供运行中、已完成、失败和错误;排队中与已中止仍会显示在未筛选列表中,但没有独立筛选项。

也可以从工作流列表或详情点击运行次数,查看该业务流程最近的执行记录。排查问题时先记录运行 ID,以免把相似时间的其他运行混在一起。

理解运行状态

界面状态含义
排队中已创建但后台执行服务尚未开始
运行中后台执行服务正在执行
已完成所选路径正常结束
失败流程或节点得到失败结论
错误节点代码、模块或执行基础设施发生异常
已中止运行被中止,可能与超时有关

短暂排队是异步执行的正常状态。长时间不变化时,将运行 ID 和时间反馈给开发者检查后台执行服务。

“已完成”说明工作流状态机正常结束,不自动证明每个外部系统都达成最终业务目标;重要副作用仍应核对领域数据。

查看执行详情

点击运行后,详情页显示:

  • 工作流标题和本次使用的版本;
  • 触发时间、总耗时和整体状态;
  • 带执行状态叠加的流程图;
  • 本次输入快照;
  • 实际到达的节点。

详情必须按运行自己的版本解释。开发者后来发布的新版本不会改变这里的路径和输入。

查看节点尝试和载荷

点击已执行节点可以查看:

  • 节点标题与开发者说明;
  • 当前显示的尝试;
  • 结果;
  • 错误;
  • 节点日志;
  • 是否因体积过大而截断。

系统会对常见秘密字段和日志片段进行脱敏,并对过大的结果、错误或日志截断。脱敏和截断是安全与存储保护,不表示原始业务一定为空。需要更完整证据时,把运行 ID、节点和时间交给开发者关联服务端日志,不要关闭脱敏。

同一节点可能有多次尝试。诊断当前结果时先看最新尝试,并按时间比较各次状态。

推荐的诊断顺序

  1. 确认整体运行状态和实际使用的版本;
  2. 查看本次运行的实际路径;
  3. 找到第一个失败的叶子节点;
  4. 查看该节点最新一次尝试的结果、错误和日志;
  5. 记录内容是否经过脱敏或截断;
  6. 将运行证据交给应用开发者判断恢复方式。

父 Condition 可能因为其分支中的 Run 节点失败而显示失败。先检查最深层的失败节点,避免把传播状态误当根因。

向应用开发者反馈什么

至少提供:

  • 工作流名称;
  • 运行 ID;
  • 工作流版本;
  • 触发时间;
  • 是否为手动运行;
  • 整体状态和原因;
  • 第一个失败节点及尝试;
  • 错误摘要;
  • 结果或日志是否脱敏、截断。

不要在聊天或工单中复制密码、Token、Cookie 或完整敏感输入。

恢复原则

  • 参数错误:修正参数后,由业务负责人判断是否创建新运行;
  • 输入错误:历史输入不可改,确认副作用后再用正确输入发起新运行;
  • 代码错误:开发者修复、测试并发布新版本;
  • 暂时性故障:由开发者或业务负责人判断是否按原业务事件安全重试;
  • 已经发生部分副作用:执行显式补偿,而不是删除历史记录。

诊断请求本身不应自动重跑、启停或修改数据。这些恢复动作需要单独确认影响。

常见问题

排队时间较长是否一定是故障

不一定。短暂等待正常;持续排队时,把运行 ID 和时间反馈给开发者检查后台执行服务及队列。

失败、错误和中止有什么区别

失败通常是明确的业务或指令失败;错误是执行异常;中止表示运行被停止,超时是常见原因。以具体节点错误、运行 reason 和日志为准。

为什么父节点失败而真正错误在子节点

分支子节点失败会向父 Condition 和整个运行传播。第一个失败的叶子节点通常最接近根因。

为什么一个节点存在多次尝试

重跑或恢复可能产生多次节点尝试。不要默认第一条就是当前结果,应按时间查看全部尝试。

为什么结果或日志不完整

内容可能经过秘密脱敏或体积截断。界面会显示截断提示;需要时由开发者关联结构化日志。

为什么流程结束后部分节点仍显示 Pending

如果 Terminate 在 Condition 的分支内结束整个流程,父 Condition 可能未完成正常恢复步骤。结合 Terminate 节点和整体终态判断,不要仅凭父节点状态认定卡死。