映射转换前Biztalk预加载输出消息

映射转换前Biztalk预加载输出消息,biztalk,biztalk-mapper,biztalk-2013,biztalk-orchestrations,Biztalk,Biztalk Mapper,Biztalk 2013,Biztalk Orchestrations,我有两条来自两个不同系统(SystemA和SystemB)的相关传入消息,我只想通过几个字段将SystemA消息复制到SystemB消息 因此,我的构造消息形状如下所示: 消息分配形状中只有以下代码: xmlIncomingNoAttachHolder = new System.Xml.XmlDocument(); xmlIncomingNoAttachHolder = msgMultiPartInNoAttachment.BodySegments; // assigning the Ssy

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

因此,我的构造消息形状如下所示:

消息分配形状中只有以下代码:

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";
然后,映射左侧只有两条输入(SystemA模式和SystemB模式)ORU消息,右侧只有输出ORU消息,这两条消息也与SystemB输入消息共享相同的模式

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

但似乎只要我应用映射,它就会在执行转换之前清除预加载的
msgComboWithAttach
消息,然后应用映射。然后,生成的消息只包含在映射中复制的字段,而不包含在消息分配预加载中分配的其他段/字段


这是预期的行为吗?在这种情况下,我必须对地图中的所有线段进行大规模复制?或者有没有一种方法可以像我想要的那样预加载/复制消息,然后只映射几个字段?

是的,这是预期的行为

你想做的是

  • 区分模式中的字段(目标和源,在您的情况下,如果我理解您的意思,它们可能是相同的)
  • 首先让地图确认你的地图创建了你想要填充一些虚拟值的字段
  • 之后有一个赋值形状,每个字段只有一行,格式为
    msgdestinition.record.field=msgSource.record.field(注意:您可能有多个级别的记录)

  • 这仅适用于不重复出现的字段。对于重复出现的字段,您需要使用多部分映射。

    是的,这是预期行为

    你想做的是

  • 区分模式中的字段(目标和源,在您的情况下,如果我理解您的意思,它们可能是相同的)
  • 首先让地图确认你的地图创建了你想要填充一些虚拟值的字段
  • 之后有一个赋值形状,每个字段只有一行,格式为
    msgdestinition.record.field=msgSource.record.field(注意:您可能有多个级别的记录)

  • 这仅适用于不重复出现的字段。对于重复出现的字段,您需要使用多部分映射。

    是的,这是预期行为

    你想做的是

  • 区分模式中的字段(目标和源,在您的情况下,如果我理解您的意思,它们可能是相同的)
  • 首先让地图确认你的地图创建了你想要填充一些虚拟值的字段
  • 之后有一个赋值形状,每个字段只有一行,格式为
    msgdestinition.record.field=msgSource.record.field(注意:您可能有多个级别的记录)

  • 这仅适用于不重复出现的字段。对于重复出现的字段,您需要使用多部分映射。

    是的,这是预期行为

    你想做的是

  • 区分模式中的字段(目标和源,在您的情况下,如果我理解您的意思,它们可能是相同的)
  • 首先让地图确认你的地图创建了你想要填充一些虚拟值的字段
  • 之后有一个赋值形状,每个字段只有一行,格式为
    msgdestinition.record.field=msgSource.record.field(注意:您可能有多个级别的记录)

  • 这仅适用于不重复出现的字段。对于重复出现的字段,您需要使用多部分映射。

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


    Dijkgraaf的解决方案会奏效。或者,您可以使用Orchestration xpath()函数来读取和设置消息中的特定值。请参阅:

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


    Dijkgraaf的解决方案会奏效。或者,您可以使用Orchestration xpath()函数来读取和设置消息中的特定值。请参阅:

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


    Dijkgraaf的解决方案会奏效。或者,您可以使用Orchestration xpath()函数来读取和设置消息中的特定值。请参阅:

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


    Dijkgraaf的解决方案会奏效。或者,您可以使用Orchestration xpath()函数来读取和设置消息中的特定值。请参阅:

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