如何在BizTalk中创建记录数组

时间:2011-09-09 10:15:43

标签: xsd biztalk

我有一个xsd类型,它由一些元素组成。其中一个元素定义为 <xs:element name="Parameters" type="ParametersType" />其中ParametersType

<xs:complexType name="ParametersType">
    <xs:sequence>
        <xs:element name="Parameter"
                    type="ParameterType"
                    minOccurs="0"
                    maxOccurs="unbounded" />
        <xs:element name="UserDefinedParameter"
                    type="xs:base64Binary"
                    minOccurs="0"
                    maxOccurs="1">
        </xs:element>
    </xs:sequence>
</xs:complexType>

也就是说,我有一组Parameter类型的记录。所以到目前为止我有两个问题:

  1. Ноw初始化此类数组以及如何在Expression块中使用它;
  2. 如何调整从相同类型的传入邮件到我的邮件的映射?

1 个答案:

答案 0 :(得分:3)

当我们在这里谈论数组时,我们实际上是在讨论消息中嵌套的,可重复的节点。

一种解决方案是在业务流程中的循环内分解您的数组。

这不简单,但这是一个例子:

Deconstructing nested repeatable message section inside biztalk orch

各种表达形式内的代码:

在“计算数组项目”里面

intCountArrayItems = xpath(MyMessage, "count(XpathToParameterNodeInYourMessage)");

在“foreach数组项目”里面

intLoopIndex < intCountArrayItems 

在“使用数组项”

strXPathToArrayItem = System.String.Format("XpathToParameterNodeInYourMessage[{0}]", intLoopIndex + 1);
MyXmlDocument = xpath(MyMessage, strXPathToArrayItem);
// Now you can do what you want with the xml document.

内部“增量循环索引”

intLoopIndex = intLoopIndex + 1;

上面提供了一种方法来分解业务流程中的数组,并将每个“Paramter”类型作为xml文档访问(然后你可以用它来处理)。

希望这有帮助。