跳到主要内容

调试组件

调试组件(Debug)用于在流程执行过程中输出指定的上下文数据,帮助开发者查看请求参数、上游结果与内部变量,快速定位配置问题。

概述​

在编排复杂流程时,某个组件的输入或输出往往难以直接观察。调试组件把选定的上下文数据打印出来,串联在流程中间即可看到该位置的数据快照。

调试组件通过一个「调试模式」下拉框选择要输出的内容,Mode 缺省为 ContextAll(输出所有上下文信息),并支持「输出到最终结果」(IsFinalResult),从而直接在接口返回中查看数据。

配置项​

配置项说明
调试模式(Mode)选择要输出的上下文内容,必填
输出到最终结果(IsFinalResult)开启后调试内容作为接口返回值返回

调试模式取值​

界面名称值(Mode)说明
输出所有上下文信息ContextAll输出完整上下文,缺省值
输出请求信息Request输出前端请求参数
输出字典变量DicParam输出组件间传递的字典参数
输出上游弱类型参数Param输出上游写入的弱类型参数
输出上游组件结果CmpResult输出上游组件的执行结果
输出上游最终结果Result输出当前累积的最终结果
输出交互模型TransferResult输出交互返回模型
输出过滤器Filter输出查询过滤器
输出Chameleon上下文ChameleonContext输出 Chameleon 运行时上下文

执行流程​

调试组件是普通业务节点,不改变流程走向,只是把数据快照写入结果并继续执行下游。

使用场景​

  • 查看上游组件返回的数据结构
  • 校验条件分支字段取到的值
  • 追踪请求参数是否按预期传入
  • 调试脚本组件时观察 CmpResult 内容

注意事项​

注意

调试组件用于开发排查,上线前建议移除或改为不输出到最终结果,避免暴露内部数据结构。

下一步​

属性明细​

以下内容面向技术实现与 AI 检索,说明调试组件的节点元数据。

节点元数据​

调试组件由 FlowCmpType.Debug 标识:

属性名类型含义取值/存储值
typestring组件类型固定为 "Debug"
Modestring调试模式"ContextAll"(缺省)等,见上表
IsFinalResultstring(bool)是否输出到最终结果"true" / "false"
orderstring同级排序例:"1"

元数据存储示例​

{
"ID": "debug1",
"type": "Debug",
"Mode": "CmpResult",
"IsFinalResult": "true",
"order": "1"
}

服务端执行逻辑​

调试组件由 DebugComponentManager(继承 InterfaceComponentManagerBase)实现。本节说明服务端如何按 Mode 取用上下文并决定是否作为接口返回值。

元数据均为字符串

节点元数据以 Dictionary<string, string> 存储,Mode、IsFinalResult 都是字符串;服务端通过 meta.SafeGet("键名") 读取,IsFinalResult 再经 Convert.ToBoolean 转换。

执行时机与场景​

时机说明
流程执行到调试节点_ExecuteAsync 读取 Mode,按需把上下文写入 Result,然后推进下游
保存/发布校验_VerifyAsync 不做额外校验,直接 VerifyNextAsync

输入参数(meta 键)​

meta 键类型含义取值/存储值
Modestring调试模式ContextAll / Request / DicParam / Param / CmpResult / Result / TransferResult / Filter / ChameleonContext
IsFinalResultstring(bool)是否输出到最终结果"true" / "false",缺省视为 false

执行步骤​

  1. 读取 meta.SafeGet("Mode");读取 meta.SafeGet("IsFinalResult") 并转换为布尔。
  2. 仅当 IsFinalResult == true 时执行模式分派,把对应数据写入 context.Result;否则不写入任何内容。
  3. 调用 ExecuteNextAsync(context) 继续推进下游(无论是否输出)。

输出与上下文​

Mode 与写入 context.Result 的对应关系(与 DebugComponentManager 的 switch 分支一致):

Mode写入 context.Result 的内容
ContextAll新建 ComponentContext,复制 Request、InterfaceId、DicParam、Param、AndFilter、MouFilter、FilterOverride、CmpResult、Result、TransferResult
Requestcontext.Request
DicParamcontext.DicParam
Paramcontext.Param
CmpResultcontext.CmpResult
Resultcontext.Result(自赋值,值保持不变)
TransferResultcontext.TransferResult
Filter新建 ComponentContext,仅含 AndFilter、MouFilter、FilterOverride
ChameleonContextChameleonContext.Current(运行时上下文)
其他值不写入,走 default 分支

异常与校验​

场景说明
Mode 取值非法不抛异常,走 default 分支(context.Result 保持原值)
IsFinalResult 非法字符串Convert.ToBoolean 可能抛出格式异常
校验阶段_VerifyAsync 仅透传下游校验,无专属校验项