调试组件
调试组件(Debug)用于在流程执行过程中输出指定的上下文数据,帮助开发者查看请求参数、上游结果与内部变量,快速定位配置问题。
概述
在编排复杂流程时,某个组件的输入或输出往往难以直接观察。调试组件把选定的上下文数据打印出来,串联在流程中间即可看到该位置的数据快照。
调试组件通过一个「调试模式」下拉框选择要输出的内容,Mode 缺省为 ContextAll(输出所有上下文信息),并支持「输出到最终结果」(IsFinalResult),从而直接在接口返回中查看数据。
配置项
| 配置项 | 说明 |
|---|---|
调试模式(Mode) | 选择要输出的上下文内容,必填 |
输出到最终结果(IsFinalResult) | 开启后调试内容作为接口返回值返回 |
调试模式取值
| 界面名称 | 值(Mode) | 说明 |
|---|---|---|
| 输出所有上下文信息 | ContextAll | 输出完整上下文,缺省值 |
| 输出请求信息 | Request | 输出前端请求参数 |
| 输出字典变量 | DicParam | 输出组件间传递的字典参数 |
| 输出上游弱类型参数 | Param | 输出上游写入的弱类型参数 |
| 输出上游组件结果 | CmpResult | 输出上游组件的执行结果 |
| 输出 上游最终结果 | Result | 输出当前累积的最终结果 |
| 输出交互模型 | TransferResult | 输出交互返回模型 |
| 输出过滤器 | Filter | 输出查询过滤器 |
| 输出Chameleon上下文 | ChameleonContext | 输出 Chameleon 运行时上下文 |
执行流程
调试组件是普通业务节点,不改变流程走向,只是把数据快照写入结果并继续执行下游。
使用场景
- 查看上游组件返回的数据结构
- 校验条件分支字段取到的值
- 追踪请求参数是否按预期传入
- 调试脚本组件时观察
CmpResult内容
注意事项
warning
调试 组件用于开发排查,上线前建议移除或改为不输出到最终结果,避免暴露内部数据结构。
下一步
属性明细
以下内容面向技术实现与 AI 检索,说明调试组件的节点元数据。
节点元数据
调试组件由 FlowCmpType.Debug 标识:
| 属性名 | 类型 | 含义 | 取值/存储值 |
|---|---|---|---|
type | string | 组件类型 | 固定为 "Debug" |
Mode | string | 调试模式 | "ContextAll"(缺省)等,见上表 |
IsFinalResult | string(bool) | 是否输出到最终结果 | "true" / "false" |
order | string | 同级排序 | 例:"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 键 | 类型 | 含义 | 取值/存储值 |
|---|---|---|---|
Mode | string | 调试模式 | ContextAll / Request / DicParam / Param / CmpResult / Result / TransferResult / Filter / ChameleonContext |
IsFinalResult | string(bool) | 是否输出到最终结果 | "true" / "false",缺省视为 false |
执行步骤
- 读取
meta.SafeGet("Mode");读取meta.SafeGet("IsFinalResult")并转换为布尔。 - 仅当
IsFinalResult == true时执行模式分派,把对应数据写入context.Result;否则不写入任何内容。 - 调用
ExecuteNextAsync(context)继续推进下游(无论是否输出)。
输出与上下文
Mode 与写入 context.Result 的对应关系(与 DebugComponentManager 的 switch 分支一致):
Mode | 写入 context.Result 的内容 |
|---|---|
ContextAll | 新建 ComponentContext,复制 Request、InterfaceId、DicParam、Param、AndFilter、MouFilter、FilterOverride、CmpResult、Result、TransferResult |
Request | context.Request |
DicParam | context.DicParam |
Param | context.Param |
CmpResult | context.CmpResult |
Result | context.Result(自赋值,值保持不变) |
TransferResult | context.TransferResult |
Filter | 新建 ComponentContext,仅含 AndFilter、MouFilter、FilterOverride |
ChameleonContext | ChameleonContext.Current(运行时上下文) |
| 其他值 | 不写入,走 default 分支 |
异常与校验
| 场景 | 说明 |
|---|---|
Mode 取值非法 | 不抛异常,走 default 分支(context.Result 保持原值) |
IsFinalResult 非法字符串 | Convert.ToBoolean 可能抛出格式异常 |
| 校验阶段 | _VerifyAsync 仅透传下游校验,无专属校验项 |