BizTalk映射成对

时间:2013-03-07 02:38:13

标签: biztalk biztalk-2010

使用BizTalk Map并想知道是否有一种很好的方法来执行以下操作。

我需要将收到的发票映射到订单列表。但是,每个订单必须只包含两个订单项(假设发票具有偶数)。

这意味着发票(1,2,3,4)应映射到订单(订单(1,2),订单(3,4))。

基本上,我需要在(index % 2 == 0)时创建新的父元素。

是否有 functoid-only 这样做?

下面的XML示例:

<Invoice>
  <Client>Client1</Client>
  <Line>
    <Code>1</Code>
    <Price>$1.00</Price>
    <Qty>1</Qty>
  </Line>
  <Line>
    <Code>2</Code>
    <Price>$2.00</Price>
    <Qty>2</Qty>
  </Line>
  <Line>
    <Code>3</Code>
    <Price>$3.00</Price>
    <Qty>3</Qty>
  </Line>
  <Line>
    <Code>4</Code>
    <Price>$4.00</Price>
    <Qty>4</Qty>
  </Line>
</Invoice>

<Orders>
  <Order>
    <Client>Client1</Client>
    <OrderItem>
      <Code>1</Code>
      <Qty>1</Qty>
    </OrderItem>
    <OrderItem>
      <Code>2</Code>
      <Qty>2</Qty>
    </OrderItem>
  </Order>
  <Order>
    <Client>Client1</Client>
    <OrderItem>
      <Code>3</Code>
      <Qty>3</Qty>
    </OrderItem>
    <OrderItem>
      <Code>4</Code>
      <Qty>4</Qty>
    </OrderItem>  
   </Order>
</Orders>

我尝试了什么:

  • 标准制图:按预期划分所有行的单个订单
  • 基于index % 2客户端的值映射:每行订单(一半有客户端
  • 表循环(门控index % 2)+ 客户端的提取器:每行订单,只有半行

我最终可能会做的事情:

  • XSLT
  • 或者,映射后的C#操作

1 个答案:

答案 0 :(得分:-1)

在工具箱的高级functoids部分中查找'index'functoid。 在输出上添加脚本functoid。 添加C#代码以检查要匹配的索引。 您可以通过从脚本functoid返回一个布尔值来打开和关闭输出。