2010년 4월 13일 화요일

[Biztalk] Orchestration에서 Message의 특정 Element값 수정하기

!ns0:Root xmlns:ns0="http://TestXpath.Schema1">
!Record>
!AAA>AAA_0!/AAA>
!AAA>AAA_1!/AAA>
!AAA>AAA_2!/AAA>
!Count>Count_0!/Count>
!Count>Count_1!/Count>
!Count>Count_2!/Count>
!/Record>
!Record>
!AAA>AAA_0!/AAA>
!AAA>AAA_1!/AAA>
!AAA>AAA_2!/AAA>
!Count>Count_0!/Count>
!Count>Count_1!/Count>
!Count>Count_2!/Count>
!/Record>
!Record>
!AAA>AAA_0!/AAA>
!AAA>AAA_1!/AAA>
!AAA>AAA_2!/AAA>
!Count>Count_0!/Count>
!Count>Count_1!/Count>
!Count>Count_2!/Count>
!/Record>
!/ns0:Root>

보시다시피 Record가 반복이고 AAA나 Count 또한 반복이 됩니다.
이 경우 AAA는 Record 가 반복이므로 Distinguished Field로 올리지 못합니다.
처리하기 위하여 xpath라는 구문을 사용합니다.
xpath(Test_Msg2,"//Record[1]/AAA[2]/text()")="SUCC";
xpath(Test_Msg2,"//Record[1]/AAA[3]/text()")=(System.Int32)xpath(Test_Msg,"count(//Record)");
Message Assignment Shape안에서 위 구문을 입력하면 첫번째 Record의 두번째 AAA에 SUCC값을 넣을 수 있구요.
또한 첫번째 Record의 3번째 AAA에 Record의 개수를 넣을 수도 있습니다.
처리 결과는 다음과 같습니다.
!?xml version="1.0" encoding="utf-8"?>
!ns0:Root xmlns:ns0="http://TestXpath.Schema1">
!Record>
!AAA>AAA_0!/AAA>!AAA>SUCC!/AAA>!AAA>3!/AAA>!Count>Count_0!/Count>!Count>Count_1!/Count>!Count>Count_2!/Count>
!/Record>
!Record>
!AAA>AAA_0!/AAA>!AAA>AAA_1!/AAA>!AAA>AAA_2!/AAA>!Count>Count_0!/Count>!Count>Count_1!/Count>!Count>Count_2!/Count>
!/Record>
!Record>
!AAA>AAA_0!/AAA>!AAA>AAA_1!/AAA>!AAA>AAA_2!/AAA>!Count>Count_0!/Count>!Count>Count_1!/Count>!Count>Count_2!/Count>
!/Record>
!/ns0:Root>
반복되는 Record라고 하더라도 Distinguished Field와 동일한 기능을 사용할 수도 있다는 얘기지요.
xpath에 대한 내용은 다음 사이트를 보시면 좀 더 아실 수 있습니다.
http://msdn.microsoft.com/ko-kr/library/ms256086(VS.80).aspx

댓글 없음:

댓글 쓰기