跳到主要内容

匹配分支组件

匹配分支组件(SwitchCase)定义多路分支中的单个匹配项,用于与多路分支产生的结果值比较。

概述​

匹配分支是多路分支(Switch)的落点:它配置一个「匹配值」(CaseValue),当多路分支脚本返回的结果与匹配值相等时,执行连在匹配分支下游的组件。

一个多路分支可以连接多个匹配分支,各自匹配不同的值,形成 case 列表。

配置项​

配置项说明
匹配值与脚本结果比较的目标值(CaseValue)

匹配规则​

规则说明
相等匹配脚本结果经字符串化后与 CaseValue 完全相等时命中该分支
多分支一个多路分支可连出多个匹配分支,各自独立判断
无命中所有匹配分支都未命中时,不继续任何分支

使用场景​

  • 状态值分类路由
  • 类型分类处理
  • 条件分发

下一步​

属性明细​

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

节点元数据​

匹配分支组件由 FlowCmpType.SwitchCase 标识:

属性名类型含义取值/存储值
typestring组件类型固定为 "SwitchCase"
CaseValuestring匹配值目标字符串,例 "Approved"
orderstring同级排序例:"3"

元数据存储示例​

{
"ID": "case1",
"type": "SwitchCase",
"CaseValue": "Approved",
"order": "3"
}

服务端执行逻辑​

匹配分支由 SwitchCaseComponentManager(继承 InterfaceComponentManagerBase)实现。本节说明它如何读取脚本结果并决定是否继续推进。

元数据均为字符串

节点元数据以 Dictionary<string, string> 存储,CaseValue 为字符串;比较时脚本结果也会先转成字符串,因此是字符串等值比较。

执行时机与场景​

时机说明
保存/发布校验_VerifyAsync 校验上游类型与 CaseValue 后 VerifyNextAsync
被 Switch 调度Switch 的 ExecuteNextAsync 会执行全部下游,因此每个 SwitchCase 都会进入 _ExecuteAsync

输入参数(meta 键)​

meta 键类型含义取值/存储值
CaseValuestring匹配值与脚本结果比较的字符串,长度不超过 100

此外,_ExecuteAsync 隐式依赖上下文中的 CmpResult(上游 Switch 写入的脚本结果)。

执行步骤​

  1. 读取 meta.SafeGet("CaseValue")。
  2. 把上游结果转为字符串:Convert.ToString(context.CmpResult)。
  3. 若与 CaseValue 完全相等,调用 ExecuteNextAsync(context) 继续执行本分支下游。
  4. 否则直接 return context,不推进(该分支在此终止)。

分支路由规则​

  • 判断依据是 CmpResult 的字符串形式与 CaseValue 的完全相等(区分大小写、不做数值归一)。
  • SwitchCase 之间互不影响:每个分支独立比较,命中的分支各自推进,未命中的分支各自终止。
  • 上游必须是 Switch:执行前 PreviousCmpType 会被 Switch 置为 "Switch",校验阶段以此断言用法正确。

输出与上下文​

上下文属性匹配分支的处理
CmpResult / Result不写入
下游推进仅命中时调用 ExecuteNextAsync

异常与校验​

_VerifyAsync 的校验规则:

场景判定异常 / 提示
上游不是 Switchcontext.PreviousCmpType != "Switch"SwitchCaseMustBeUsedWithBranch(上游必须配合分支组件使用)
匹配值为空CaseValue 为空白SetMatchValueInComponent
匹配值超长CaseValue.Length > 100MatchValueLengthLimit