2009-03-24 4 views
0

중간 규모의 복잡한 플랫 파일 스키마에서 작업하고 있으며 커브 볼을 내게 던졌습니다. 여기에 입력이 보이는 무엇과 같은 :Biztalk 매핑 문제, 아이디어 please

BCT121, C, 7.35,6.5,0.39,7216, "스미스, 트레이시", 13456321, 클래스 양재 전문점, 클래스 양재 전문점, VAN, BC, 200901092009011220090127, V , 0.46, BCT121, C, 14.7,13.01,0.78,7216, "SMITH, TRACEY", 13456321, 클래스 드레스 셔츠, 클래스 드레스 셔츠, VAN, BC 200901102009011220090127, V, 0.91, BCT121, C , 60.27,53.34,3.2,5812, "SMITH, TRACEY", 13456321, ME-N-ED 'S PIZZA PARLORS, ME-N-ED 'S PIZZA PARLORS, VAN, BC 200901102009011220090127, V, 3.73, BCT121, C, 201.56,179.96,0,5200, "SMITH, TRACEY", 13456321, 홈 디포 # 7145, 홈 디포 # 7145, 밴, BC 200901102009011220090127, V, 21.6, REF. #^1^

좋아, 그래서 클라이언트가 원하는 출력은 다음과 같습니다.

각 개인/카드 번호에 대해 PRQT라는 헤더 행과 위의 각 거래에 대한 행이 있습니다. 따라서 Tracy의 경우 거래 세부 사항 인 PRQT 행 1 개와 PRLN 행 4 개가 있습니다. . 그래서 같은과 같습니다

PRQT, SMIT6321, 13456321, 세부 사항, 세부 사항 등

PRLN, SMIT6321,7.35, 6.5, 등 등

PRLN, SMIT6321, 14.7 , 13.01 등.

PRLN 등

PRLN, 등 등

좋아, 그래서 내 주요 문제는 헤더에 대해 하나 개의 prqt의 레코드를 삽입하는 방법은? 논리 펑 토이 드에서 출력 스키마에 대해 기존 값이 만들어 졌는지 확인하기 위해 찾아 볼 수있는 것이 있는지 살펴보고 있습니다. 내 기본 키는 SMIT6321 (성 + 카드 번호의 마지막 4 자리)입니다. 그래서 기본적으로 내가 C#으로 코딩했다면 이전에 삽입 된 PRQT 키 배열을 만들고 내 루프 중에 이미 레코드를 만들었는지 확인하기 위해 검색을 수행 할 것입니다. 이미 만든 경우 PRQT 중복 레코드를 만들지 않으므로 건너 뛰었습니다. 레코드는 원본 문서에서 연대순으로 작성되므로 위의 레코드는 위의 샘플처럼 순식간에 뒤죽박죽이 될 가능성이 있습니다.

누구나 올바른 방향으로 나를 가리킬 수 있습니까? 어떤 펑 토이 드를 사용해야합니까? Biztalk Mapper가 이런 종류의 문제를 처리 할 수 ​​있습니까? 나는 그것을 할 수있을 것이라고 확신한다 ... 나는 그것을 알아낼 필요가있다.

덕분에,

에릭

답변

1

에릭, 나는 정의 XSLT에서지도를하고 볼 것

. 매퍼는 (자체적으로 강력한 반면에) 농구를 통하지 않고 원하는 것을 100 %주지 않을 것입니다. 사용자 정의 XSLT를 사용하면 필드에서 전체 정렬을 수행하고 문서를 올바르게 탐색하여 원하는 출력을 얻을 수 있습니다. 앞으로 이와 같은 문제를 다루기 위해 APress의 BizTalk 2009 Pro Mapping이라는 새로운 책이 나옵니다.

- 브라이언

+0

감사합니다. 나는 커스텀 XSLT를 사용하는 것을 끝내었고, 처음에는 약간은 알아 내기가 까다 롭지 만, 꽤 직설적이었다. 나는 필터를 사용하고 나서 위의 출력을 얻기 위해 모든 레코드를 루핑 (for-each)했다. 다시 한 번 감사드립니다. –