2013-02-04 3 views
0

나는이 같은 입력 XML 파일을 가지고 :Biztalk 2010 집계

<root> 
    <item ...> 
    <item ...> 
    <item ...> 
</root> 

을 내가 구성하고 같은 오케스트레이션 2 가지 방법으로 메시지를 보낼 필요가 : 1. 당 1 개 XML 파일로 하나 개의 목적지로 보내기 item 2. "item"을 하나의 csv 플랫 파일로 보내십시오.

내 파일은 봉투에서 모든 "항목"을 추출하는 파이프 라인에 의해 실제로 처리됩니다. 문제는 특정 조건에 따라 모든 "항목"을 병합해야한다는 것입니다.

아이디어를 얻으려면 어떻게해야합니까?

+0

나는 잊어 버렸습니다 ... 보내려는 항목의 무리는 조건에 의해 필터링되어야합니다. csv 플랫 파일로 전송되는 모든 항목이 아닙니다. –

+0

왜 같은 오케스트레이션에 있습니까? BizTalk은 게시/구독입니다. 하나의 오케스트레이션은 이미 토론 된 을 구독하고 처리합니다. 다른 오케스트레이션은 필터 조건을 기반으로 상관 관계를 설정하고 을 모두 집계하고 마지막으로 .csv를 보냅니다. – user1826905

답변

1

적어도 2 가지 방법이 있습니다. 입력 XML 파일 배치에 어떻게 도달했는지는 명확하지 않습니다. 이는 IMO의 결정을 이끌 것입니다.

  1. 처음에는 이미 모든 메시지가 하나의 xml 일괄 처리로 준비되어있는 것으로 보이므로 매우 쉽습니다. 메시지를 파이프 라인에서 파기하기 전에 메시지 상자에 아직 배치 메시지 (root ...)가 게시되어 있지 않으면 직접 게시해야합니다 (예 : 직접 바인딩, 메시지가 메세지 박스).

    그런 다음 루트 메시지를 입력으로 사용하는 CSV 파일에 대한 맵을 만든 다음 CSV에서 원하지 않는 item을 필터링 할 수 있습니다. 맵에서 필터링을 수행하려면 루프 functoid with conditionals을 사용할 수 있습니다. 또는 필자가 선호하는 것은 xslt에서 맵을 구현 한 다음 xpath 필터를 사용하여 바람직한 item에 템플릿을 적용하는 것입니다. 등록 된 FILE 송신 포트는 들어오는 xml 일괄 처리 메시지에 대한 필터 (BTS.MessageType)가이 맵을 적용 할 수 있습니다.

    각 xml 파일은 debatching 파이프 라인에 의해 처리 된 다음 등록 된 다른 실제 FILE 송신 포트가이를 쓸 수 있습니다.

    2. 또는 너무 늦어 root xml 파일의 토론을 취소 한 경우 원본 Xml 파일 FWR을 가져올 수 없으면 다른 orch를 사용하여 CSV (분산 및 수집) 메시지에 필요한 메시지를 재구성해야합니다. . 메시지 (예 : 일괄 식별자)를 상호 연관 시키거나 타이머 등을 적용해야 할 가능성이 높기 때문에 더욱 복잡해집니다.

    '바람직한'CSV를 수집하는 방법에 대한 Pipeline Aggregator 샘플을 살펴보십시오. 메시지를 루프를 사용하여 Microsoft.XLANGs.Pipeline.SendPipelineInputMessages 변수에 넣은 다음 파이프 라인을 사용하여 배치를 어셈블합니다. 'desired'에 대한 기준이 개별 항목 메시지에서 이미 승격 된 경우 수신시 필터를 적용 할 수 있지만 그렇지 않은 경우 루프에 결정을 사용하여 메시지를 추가할지 여부를 결정해야합니다 배치.

+0

실제로 xml은 SQL 추출로 xmlfile로 저장 한 결과입니다. 'root'항목은 엔벨로프이고 모든 항목은 별도의 메시지이므로 파일은 실제로 처리됩니다. 나는 파이프 라인으로 이것을했다.문제는 동일한 orch에서 개별 항목을 xml 파일로 저장해야하며 그 중 일부는 단일 csv 파일로 저장해야한다는 것입니다. –

관련 문제