1

BizTalk マップを使用して、次のことを行う良い方法があるかどうかを考えています。

受信した請求書を注文のリストにマップする必要があります。ただし、各注文には 2 つの項目のみを含める必要があります (請求書の番号が偶数であると仮定します)。

これは、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: 行ごとの注文 (半分はクライアントを持っています)
  • Table Looping (Gated to index % 2) + Extractor to Client : 行ごとに注文、半分の行のみ

私がやりそうなこと:

  • XSLT
  • または、マッピング後の C# 操作
4

1 に答える 1

-1

ツールボックスの高度な Functoid セクションで、'index' Functoid を探します。出力にスクリプト Functoid を追加します。照合するインデックスを確認する C# コードを追加します。スクリプト Functoid からブール値を返すことで、出力のオンとオフを切り替えることができます。

于 2013-09-05T16:24:40.257 に答える