You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

BizTalk中如何按条件将属性列表映射到列模式?

解决方案:用值映射Functoid实现按domain属性的字段映射

推荐使用的Functoid

值映射(Value Mapping)Functoid是最适配的选择——它专门用来基于条件匹配,把输入值定向到目标字段,刚好满足你根据domain属性值,把<Classification>的内容分配到数据库表对应列的需求。如果要处理重复输入组并生成单条输出记录,也可以用值映射(平坦)Functoid,效果基本一致。

具体配置步骤

1. 准备映射画布

把输入Schema(包含重复<Classification>元素的List)和输出Schema(cata_class表的各个列)拖到BizTalk的映射画布上。

2. 添加值映射Functoid

从工具箱的「逻辑」分类里,拖入对应数量的值映射Functoid——每个目标列对应一个。

3. 配置每个Functoid的输入与输出

值映射Functoid需要两组输入:条件判断项和待映射的内容,以classification_type列为例:

  • 条件输入:先拖一个常量Functoid,设置值为Type;然后把输入Schema里<Classification>的domain属性,和这个常量Functoid一起连到值映射Functoid的前两个输入端口(作用是判断当前Classification的domain是否等于Type)。
  • 内容输入:把<Classification>的文本内容(即元素的value)连到值映射Functoid的第三个输入端口。
  • 输出:把值映射Functoid的输出端连到输出Schema的classification_type列。

照着这个逻辑,给每个目标列配置对应的Functoid:

  • classification_color:常量设为Color,匹配domain="Color"的Classification内容
  • classification_colorCode:常量设为ColorCode,匹配domain="ColorCode"的Classification内容
  • classification_os:常量设为OS,匹配domain="OS"的Classification内容
  • classification_chargetype:常量设为ChargeType,匹配domain="ChargeType"的Classification内容
  • classification_capacity:常量设为Capacity,匹配domain="Capacity"的Classification内容

4. 处理重复组(可选)

因为输入的<Classification>是重复组(maxOccurs="unbounded"),但每个domain只会出现一次,所以用普通值映射Functoid就足够生成单条输出记录。如果遇到同一domain多次出现的场景,换成值映射(平坦)Functoid可以自动把重复值扁平化为单字段内容。

5. 测试验证

运行映射测试,输入你提供的示例XML后,输出的cata_class记录会自动把每个domain对应的Classification值填充到对应列中。

备选:脚本Functoid

如果需要更灵活的逻辑(比如兼容未定义的domain值),可以用脚本Functoid写C#或XSLT脚本实现判断。示例C#脚本如下:

public string GetClassificationValue(XmlNodeList classifications, string targetDomain)
{
    foreach(XmlNode node in classifications)
    {
        if(node.Attributes["domain"].Value.Equals(targetDomain, StringComparison.OrdinalIgnoreCase))
        {
            return node.InnerText;
        }
    }
    return null;
}

配置时,把整个List节点作为第一个输入,目标domain的常量作为第二个输入,输出连到对应列即可。


内容的提问来源于stack exchange,提问作者Vijay Mandanka

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 22:40:57