在BizTalk中循环

时间:2014-02-21 12:43:26

标签: oracle biztalk

在Oracle数据库中,我得到了一个带有Id和Name的客户表,因此,许多customerstuff表都与一个密钥相关。 使用BizTalk中的Oracle WCF适配器需要创建一个包含所有客户的文件 像这样:

<Root>
  <Customers>
    <Customer>
      <Id>1</Id>
      <Name>A</Name>
      <Stuff1>
        <data>
         .
         .
        </data>
      </Stuff1>
      .
      .
      <Stuff6>
        <data>
        .
        .
        </data>
      </Stuff6>
   </Customer>
   <Customer>
     <Id>2</Id>
      <Name>B</Name>
      <Stuff1>
      .
      .
      .
      </Stuff6>
    </Customer>
  </Customers>
</Root>

我开始时选择了所有客户,并在Orchestration中循环遍历它们,从每个customerstuff表中选择当前客户的密钥,为我在结果文件中的第一个客户节点准备好所有数据。

问题:如何构建结果文件?我必须将当前的客户/ customerstuff数据添加到结果文件中,然后在保持结果文件的同时进行新的循环,我该如何在BizTalk中执行此操作?

2 个答案:

答案 0 :(得分:0)

这可能适用于自定义XSLT,但我不确定没有看到有关输入和输出模式的更多细节。

如果你采用循环方法,这将需要3条消息

  • 输出消息(最终输出)
  • 当前输出占位符消息(与最终输出相同的架构)
  • 客户资料(您希望在给定的循环中附加到输出的数据)

    和一个有两条消息的地图(或一些基于XPATH的操作):

为每位客户

  • 创建“客户资料”
  • 将输出消息复制到当前输出占位符
  • 执行将客户资料和当前输出占位符消息作为输入并映射到“输出消息”的地图

答案 1 :(得分:0)

当您使用查询或存储过程读取数据本身时,请尝试在sql server中使用类似于“for xml”的内容。在oracle中,您可以使用dbms_xmlgen包将结果集作为xml返回:

选择dbms_xmlgen.getxml('select * from emp where rownum&lt; = 2')xmlstr from dual;