跳到主要内容

结束组件

结束组件(End)是平台接口流程图的出口节点,标记一条执行路径的结束,并把最终结果返回给调用方。

概述​

流程执行到结束组件时终止当前分支,不再向下执行。接口场景下,返回给调用方的数据由「输出到最终结果」(IsFinalResult)的组件决定,结束组件本身不承载业务逻辑,只作为路径终点。

一个流程可以包含多个结束组件,用于不同分支分别收尾。结束节点属于引擎固定节点,不可禁用、不可删除,也不能插入到连线中间。

配置项​

配置项说明
排序同一层级节点的执行顺序
禁用当前节点固定节点不支持禁用,不显示该开关

多结束点​

不同分支可以连向不同的结束组件,从而在视觉上区分收尾路径。无论连向哪个结束组件,接口返回值都由标记了 IsFinalResult 的组件决定。

返回结果说明​

返回来源说明
输出到最终结果组件属性面板开启后,其执行结果作为接口返回值
自定义响应CustomResponse 组件可显式设定返回码与提示
JSON 脚本JsonScript 组件可配置完整的响应结构

下一步​

属性明细​

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

节点元数据​

结束组件由 FlowCmpType.End 标识,GetNodeMeta 返回的 meta 只包含类型:

属性名类型含义取值/存储值
typestring组件类型固定为 "End"
orderstring同级排序例:"99"
IDstring节点标识画布生成

元数据存储示例​

{
"ID": "end1",
"type": "End",
"order": "99"
}

引擎约束​

约束说明
固定节点FlowCmpFixedTypes 包含 End,不可禁用、不可插入边中间
初始化节点接口画布以 [Start, End] 初始化

服务端执行逻辑​

结束组件由 EndComponentManager 实现,为兼容对象触发器链路,它继承的是 TriggerComponentManagerBase(InterfaceComponentManagerBase 的子类)。本节说明结束节点如何终止分支并决定返回值。

元数据均为字符串

节点元数据以 Dictionary<string, string> 存储,meta 中所有值都是字符串,服务端通过 meta.SafeGet("键名") 读取后再做类型转换。

执行时机与场景​

时机说明
分支到达出口执行流进入结束节点,标记当前分支终止,不再递归下游
保存/发布校验_VerifyAsync 校验流程至少存在一个输出节点(触发器链路例外)

结束组件是 FlowCmpFixedTypes 成员,IsDisabled 对其无效,引擎不会跳过结束节点。

输入参数(meta 键)​

结束组件没有业务输入参数,meta 仅含通用键:

meta 键类型含义取值/存储值
typestring组件类型"End"
orderstring(数字)同级排序如 "99"
IDstring节点标识画布生成

执行步骤​

EndComponentManager._ExecuteAsync 非常轻量:

  1. context.Result ??= ResponseResult.Success();:当上游没有任何输出节点写入结果时,兜底填入「成功」响应。
  2. 直接返回上下文,不调用 ExecuteNextAsync,从而终止当前分支的继续推进。

分支终止规则​

结束组件不参与 GetNextList 的下游遍历,因此它的下游连线不会被引擎执行;一个流程中出口在数据上表现为「得到 Result 的收尾节点」。

输出与上下文​

上下文属性结束组件的处理
Result仅当为 null 时写入 ResponseResult.Success();已有值则保留上游输出
其他属性不做修改

接口的实际返回值由标记 IsFinalResult == "true" 的组件在执行时写入的 context.Result 决定;结束组件只在无输出时兜底成功响应。

异常与校验​

_VerifyAsync 的校验规则:

场景判定异常 / 提示
接口链路无输出节点FinalResultCount == 0 且非触发器链路ProcessOutputNotFound
对象触发器链路IsTriggerRun(context) == true(上下文含触发器节点采集器)不校验输出节点,直接通过

FinalResultCount 由 InterfaceComponentManagerBase.VerifyFinalResultCount 累加:校验过程中每遇到一个 IsFinalResult == "true" 的节点即加一。因此若唯一的输出节点被禁用(校验时不会成为 CurrentNode),也会触发 ProcessOutputNotFound。