使用 BizTalk Map 并想知道是否有执行以下操作的好方法。
我需要将收到的发票映射到订单列表。然而,每个订单必须只包含两个行项目(假设发票有一个偶数)。
这意味着 Invoice(1, 2, 3, 4) 应该映射到 Orders(Order (1, 2), Order (3, 4))。
本质上,我需要在(index % 2 == 0)
.
有没有一种仅限functoid的方法?
下面的 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# 操作