【问题标题】:Biztalk Preload output message before Map transformBiztalk 在映射转换之前预加载输出消息
【发布时间】:2014-08-06 23:02:30
【问题描述】:

我有来自 2 个不同系统(SystemA 和 SystemB)的 2 条相关传入消息,我只想将 SystemA 消息中的几个字段复制到 SystemBmessage。

所以我的 Construct Message 形状如下所示:

消息分配形状里面只有这段代码:

xmlIncomingNoAttachHolder = new System.Xml.XmlDocument();
xmlIncomingNoAttachHolder = msgMultiPartInNoAttachment.BodySegments;

// assigning the SsytemB version (no attachment) first.
// Also, since we are only copying a couple fields, this can serve as the base.
msgComboWithAttach = xmlIncomingNoAttachHolder;
msgComboWithAttach(XMLNORM.TargetCharset) = "UTF-8";

然后,映射只有左侧的 2 个输入(SystemA 架构和 SystemB 架构)ORU 消息和右侧的输出 ORU 消息,它们也与 SystemB 输入消息共享相同的架构。

我希望我可以使用上面的消息分配代码来分配输出msgComboWithAttach 消息,然后使用映射器将我们需要的几个字段从 SystemA 消息映射到 SystemB 消息。

但似乎一旦我应用地图,它就会在执行转换之前清除预加载的msgComboWithAttach 消息,然后应用地图。然后,生成的消息包含在地图中复制的那些字段,而不包含在消息分配pre-load中分配的其他段/字段。 p>

这是预期的行为吗,在这种情况下,我必须对地图中的所有部分进行批量复制?或者有没有办法像我想要的那样预加载/复制消息,然后只映射几个字段?

【问题讨论】:

    标签: biztalk biztalk-mapper biztalk-2013 biztalk-orchestrations


    【解决方案1】:

    是的,这是预期的行为,因为转换将创建 new 消息。您不能使用 Xslt 以这种方式修改文档。

    Dijkgraaf 的解决方案会奏效。作为替代方案,您可以使用 Orchestration xpath() 函数来读取和设置 Message 中的特定值。见:http://msdn.microsoft.com/en-us/library/ee268159(v=bts.10).aspx

    【讨论】:

    • 很高兴知道预期的行为。你对我描述的场景有什么建议吗?人们通常只是大量复制整个消息,还是使用 xpath()?如果使用地图,是否有什么特别的事情必须做(我正在考虑 Dijkgraaf 提到的重复字段)。我只做过非常简单的地图,但想在这个项目中使用它们,以防我们摆脱编排。
    • 在这种情况下,我在主文档上按结构/名称链接,然后重新链接字段以修改到“更改”消息。
    【解决方案2】:

    是的,这是预期的行为。

    你想做的是

    1. 区分架构中的字段(目标和源,在您的情况下,如果我理解您的意思,它们可能是同一个)。
    2. 首先让地图确保您的地图创建了您要使用一些虚拟值填充的字段。
    3. 之后有一个分配形状,每个字段只有一行,格式为 msgDestination.record.field = msgSource.record.field;(注意:您可能有多个级别的记录)。

    这仅适用于非重复出现的字段。对于重复出现的字段,您需要改用多部分地图。

    【讨论】:

    • 我认为我们并不完全一致。我要避免的部分是让地图完成复制消息的所有工作,并且只需使用地图来更改消息副本中的几个字段。我认为如果我省略第 2 步,而是进行消息分配以制作 SchemaB 的副本并将字段从源分配到目标,我认为您的建议会起作用。
    • 是的,您可以复制整个消息并分配一些字段并完全消除地图。
    猜你喜欢
    • 2013-10-27
    • 2018-05-07
    • 2012-03-16
    • 2013-09-10
    • 1970-01-01
    • 2013-08-30
    • 2017-04-01
    • 2015-04-29
    • 1970-01-01
    相关资源
    最近更新 更多