2016-11-02 2 views
1

입력시 매핑을 만드는 방법 두 개의 스키마가 있으며 출력시 하나의 스키마와 일부 조건이 매핑됩니다.Biztalk 두 스키마와 조건이있는 루프 펑 토이 드

입력은 인라인 스키마이고 인보이스 및 고객 스키마가 들어 있습니다. 둘 다 CustomerNumber와 DepartmentCode가 Invoices 스키마에만 있습니다.

[CONDITION]

MAPP 만이 DepartmentCode CUSTOMERNUMBER 모두 송장 및 고객 정보 (광고)에 동일 경우.

If Invoice.CustomerNumber == Customer.CustomerNumber then map Invoice.DepartmentCode. 

나는 loop, 평등하고 값 매핑 펑 토이 드의의를 사용하려했지만 예상 결과없이, 두 번째 I는 "인라인 XSLT 호출 템플릿"을 사용하려했지만 내가 처리에 오류가있어 생각합니다.

[코드의 XSLT 펑 토이]

<xsl:template name="GetDepartmenCodeByCustomerNumber"> 
    <xsl:param name="CustomerNumber" /> 
    <xsl:if test="$CustomerNumber != ''"> 
     <xsl:element name="DepartmentCode"> 
      <xsl:value-of select="//s1:Customer[s1:CustomerNumber=$CustomerNumber]/s1:DepartmentCode/text()" /> 
     </xsl:element> 
    </xsl:if> 
</xsl:template> 

예 :

입력

<ROOT> 
<Invoices> 
    <Invoice> 
    <CustomerNumber>123</CustomerNumber> 
    <DepartmentCode>321</DepartmentCode> 
    </Invoice> 
</Invoices> 
<Customers> 
    <Customer> 
    <CustomerNumber>123</CustomerNumber> 
    </Customer> 
    <Customer> 
    <CustomerNumber>222</CustomerNumber> 
    </Customer> 
</Customers> 
</ROOT> 

기대

<Document> 
<CustomerNumber>123</CustomerNumber> 
<DepartmentCode>321</DepartmentCode> 
</Document> 

예를 들어 Invoice 및 Customer 세그먼트에서 CustomerNumber와 같아야합니다.

답변

1

여러 개의 송장 및 고객이 있으니 "이중"루프를 만들어야합니다. XSLT는 좋은 해결책이지만, 당신은이 두 필드가 필요한 경우이 같은지도를 사용할 수 있습니다 : (

enter image description here

루프 A Table Looping에 송장이 두 아이를 추가하고 모든 CNumb의 Cumulative Concatenate을 나중에 고객이 검색 할 수 있도록 특수 문자 (예 : @ CNumb @)를 추가합니다. Table Extractors을 사용하여 모든 값을 가져오고 Invoices의 각 CNumb이 연결에 있는지 여부를 확인하여 비교 결과를 대상 스키마의 루프 요소에 보냅니다.

+0

이 펑 토이 드에 대한 매개 변수 (입력/출력)를 확인하십시오. [Concatenate] (http://imgur.com/1qVM3MD), [누적] (http://imgur.com/3NoxIAc). 이 [TLoop] (http://imgur.com/MUUQ1dP)의 경우이 매개 변수는 맞습니까? 두 번째로 나는 테이블을 만들 필요가 없다. [Greater] (http://imgur.com/ypHxweb)의 두 번째 매개 변수에 "0"을 추가해야한다고 생각합니다. 맞습니까? [TExtractor] (http://imgur.com/8LD1JXL)는 테이블 루프 func에 따라 달라지며,이 모든 유형의 경고 문제를 해결하기 위해 필요한 설정은 무엇입니까? – Nerus

+1

TLoop에서 두 번째 매개 변수로 원하는 열의 수를 사용해야하므로 두 번째 매개 변수로 "3"을 추가하십시오. 이 작업이 완료되면 Table Looping Grid에서 열을 구성 할 수 있습니다. Greater yes에서는 비교를 위해 "0"을 추가해야합니다.TExtractors에서 열 번호를 두 번째 매개 변수로 추가해야합니다. 표에는 3 개의 열이 있으므로 가져 오는 열에 따라 "1", "2"및 "3"을 사용하십시오. –

+0

훌륭하게 작동합니다! – Nerus