我有一个我想要映射到的架构。在源端,我有一个包含很多字段的结构。在目的地方面,我有以下架构:
<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业务流程?
答案 0 :(得分:0)
最有可能的是,您需要做的就是使用从源的根元素链接到输出中的Mass Copy Functoid。
答案 1 :(得分:0)
您可以将元素提升为可分辨字段,并在地图后的业务流程消息分配形状中将其分配。您分配的数据可以是业务流程中的消息或变量,包括另一个映射的输出。
答案 2 :(得分:0)
如果您真的必须在地图中执行此操作,请使用带有XSLT调用模板的脚本功能块。您可以传入任何您想要的参数,并为任何节点构建文档。然而,这很快就会变得笨拙。
确实,您无法宣传或区分它,但您仍然可以像这样进行xpath分配(在Orchestration中使用消息分配形状):
xpath(msg, "/ServiceResponse/ServiceResponseBody") = varXmlDoc.OuterXml;
或者如果你没有使用XmlDocument
xpath(msg, "/ServiceResponse/ServiceResponseBody") = xpath(msg2, "//*")