1

BizTalk 2013 でマップを実行しようとしていますが、このマッピングの問題でブロックされています (マッパーを使用):

入力メッセージ:

<DetailsResponse>
    <HeaderDetails>
        <DocumentNumber>322</DocumentNumber>
    </HeaderDetails>
    <ItemDetails>
        <item>
            <DocumentNumber>322</DocumentNumber>
            <ItemNumber>1</ItemNumber>
            <MaterialNumber>40</MaterialNumber>
            <Description>random description 1</Description>
        </item>
        <item>
            <DocumentNumber>322</DocumentNumber>
            <ItemNumber>2</ItemNumber>
            <MaterialNumber>41</MaterialNumber>
            <Description>random description 2</Description>
        </item>
    </ItemDetails>
    <ScheduleDetails>
        <item>
            <DocumentNumber>322</DocumentNumber>
            <ItemNumber>1</ItemNumber>
            <ConfirmedQuantity>2.000</ConfirmedQuantity>
        </item>
        <item>
            <DocumentNumber>322</DocumentNumber>
            <ItemNumber>2</ItemNumber>
            <ConfirmedQuantity>3.000</ConfirmedQuantity>
        </item>
    </ScheduleDetails>
</DetailsResponse>

意図した出力メッセージ:

<Response>
    <Data>
        <Items>
            <Item>
                <LineNumber>
                    <Internal>1</Internal>
                </LineNumber>
                <ConfirmedQuantity>
                    <Value>2</Value>
                </ConfirmedQuantity>
                <Article>
                    <Number>40</Number>
                    <Description>random description 1</Description>
                </Article>
            </Item>
            <Item>
                <LineNumber>
                    <Internal>2</Internal>
                </LineNumber>
                <ConfirmedQuantity>
                    <Value>3</Value>
                </ConfirmedQuantity>
                <Article>
                    <Number>41</Number>
                    <Description>random description 2</Description>
                </Article>
            </Item>
        </Items>
    </Data>
</Response>

に基づいてデータを「マージ」することにより、ItemsDetailsScheduleDetailsをにマップしたい。私はすでに多くのことを試しましたが、まだそれを行うことができませんでした.ItemItemNumber

これに関する例は見つかりませんでした.このパターンには特定の名前がありますか?

誰かが共有できるアイデアを持っている場合は、それをいただければ幸いです。

4

2 に答える 2

0

マップバニラXSLTに変換すると、マッピングは簡単になります:

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet
      xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
      version="1.0">

   <xsl:output method="xml" indent="yes"/>

   <xsl:key name="itemSchedules" 
            match="/DetailsResponse/ScheduleDetails/item" 
            use="concat(DocumentNumber,'-',ItemNumber)" />

   <xsl:template match="/DetailsResponse">
      <Response>
         <Data>
            <Items>
               <xsl:apply-templates select="ItemDetails/item" />
            </Items>
         </Data>
      </Response>
   </xsl:template>

   <xsl:template match="item">
      <Item>
         <LineNumber>
            <Internal>
               <xsl:value-of select="ItemNumber"/>
            </Internal>
         </LineNumber>
         <ConfirmedQuantity>
            <Value>
               <xsl:value-of select="format-number(key('itemSchedules', 
                concat(DocumentNumber,'-',ItemNumber))/ConfirmedQuantity,0)" />
            </Value>
         </ConfirmedQuantity>
         <Article>
            <Number>
               <xsl:value-of select="MaterialNumber"/>
            </Number>
            <Description>
               <xsl:value-of select="Description"/>
            </Description>
         </Article>
      </Item>
   </xsl:template>
</xsl:stylesheet>

は、パズルのスケジュール詳細の「部分」への参照のxsl:keyインデックスを保持し、 と の連結キーを作成しDocumentNumberますItemNumber

于 2014-01-29T10:37:36.457 に答える