3

我有一个要映射到的架构。在源代码方面,我有一个包含很多字段的结构。在目标端,我有以下架构:

<xsd:element name="ServiceResponse">
  <xsd:sequence>
     <xsd:element ref="s:ServiceResponseHeader" />
     <xsd:element ref="s:ServiceResponseBody" />
  </xsd:sequence>
</xsd:element>
<xsd:element name="ServiceResponseHeader" type="s:HeaderType" />
<xsd:element name="ServiceResponseBody" type="xsd:anyType" />
<xsd:complexType name="HeaderType">
  <xsd:sequence>
     <xsd:element name="Timestamp" minOccurs="0" />
     .
     .
  </xsd:sequence>
</xsd:complexType>

这会产生一个示例文档,例如:

<ServiceResponse>
  <ServiceResponseHeader>
    .
    .
  </ServiceResponseHeader>
  <ServiceResponseBody>
     <!-- XML message as anytype -->
  </ServiceResponseBody>
</ServiceResponse>

我正在创建一个映射以将字段从我的架构传输到此架构。该映射将字段传输到 ServiceResponseHeader。但是,对于正文,我需要传入一个 XML 文档。正文接受任何类型,因为可以传入各种文档。

但是,从 BizTalk 映射中,是否可以构造一个 XML 文档,并在它没有结构时通过 body 字段传递它?

或者是否有其他方式通过 BizTalk 编排?

4

3 回答 3

0

最有可能的是,您需要做的就是使用从源的根元素链接到输出中的 Mass Copy Functoid。

于 2015-01-29T14:46:36.910 回答
0

您可以将元素提升为可区分字段,并将其分配到映射后的业务流程消息分配形状中。您分配的数据可以是编排中的消息或变量,包括另一个映射的输出。

于 2015-01-29T15:05:32.003 回答
0

如果您确实必须在映射中执行此操作,请使用带有 XSLT 调用模板的 Scripting Functoid。您可以将任何您想要的参数传递给它,并以这种方式为任何节点构建文档。但是,这很快就会变得笨拙。

确实,您无法提升或区分它,但您仍然应该能够像这样进行 xpath 分配(在编排中使用消息分配形状):

xpath(msg, "/ServiceResponse/ServiceResponseBody") = varXmlDoc.OuterXml;

或者,如果您没有使用 XmlDocument

xpath(msg, "/ServiceResponse/ServiceResponseBody") = xpath(msg2, "//*")
于 2015-02-07T07:02:16.493 回答