Aaron H. Kim Fearless Integration Maniac

Orchestration에서 Xml Message 생성하기

2008-02-21
Aaron Kim

오늘의 주제는 “How to create messages ‘from scratch’ within an Orchestration context”입니다. (from scratch 라는 건 ‘아주 처음부터’, ‘무에서부터’란 의미를 가지고 있죠.)

Orchestration에서 Message를 사용하기 전에는 반드시 Construct라는 단계를 거쳐야 합니다. Orchestration View에서 선언만 해두고 실제 인스턴스를 생성하지 않은 상태에서 Message를 사용할 경우,

오늘의 주제는 “How to create messages ‘from scratch’ within an Orchestration context”입니다. (from scratch 라는 건 ‘아주 처음부터’, ‘무에서부터’란 의미를 가지고 있죠.)

라고 하는 컴파일 에러가 발생합니다.

BizTalk에서 사용하는 보통의 메시지들은 Pre-constructed 된 형태로 들어오지만, 때로 소스 메시지가 없는 경우, BizTalk 개발자가 Orchestration 내에서 수동으로 메시지를 생성해야 하는 상황이 분명 있습니다.

타겟 스키마만 있고, 소스 스키마가 없는 경우죠. 이런 경우 타겟 스키마에 해당하는 xml 인스턴스를 생성한 후 타겟 스키마와 일치하는 TypedMessage를 만들어줘야 합니다. 그러기 위한 여러 방법들은 다음 주소에 잘 설명되어 있습니다.

<A href=”http://objectsharp.com/cs/blogs/matt/archive/2004/11/09/1009.aspx” target=_blank>http://www.objectsharp.com/Blogs/matt/archive/2004/11/09/1009.aspx</A>

저는 이 중 5번 .Net Helper Class를 사용했는데 이 방법의 단점은 생성해야 하는 메시지가 많아질 경우 관리가 어렵다는 점입니다. 스키마의 변동이 예상되는 프로젝트 초기에는 더욱 불편하지요. 또, 생성하는 메시지가 클 경우 코딩의 양이 늘어나므로 더욱 귀찮습니다.

그래서 저는 이 방법을 약간 변경해서 절대 변할 필요없는 저만의 dummy 스키마를 따로 만들고 이 스키마에 해당하는 인스턴스를 3번 방법을 사용하여 생성한 후 Transform Shape을 통해 원하는 메시지를 생성합니다. 이렇게 하면 아주 약간의 코딩으로 어떤 타겟 스키마의 인스턴스던 쉽게 만들수가 있습니다. 하지만, 작지만 불필요한 메시지 생성과, Mapping이 필요하다는 점은 단점으로 지적될 수 있겠습니다.

<A href=”http://www.traceofthought.net/PermaLink,guid,c1164c59-72e2-49e2-be7a-47e4e8dc46d4.aspx” target=_blank>http://www.traceofthought.net/PermaLink,guid,c1164c59-72e2-49e2-be7a-47e4e8dc46d4.aspx</A>

여태까지 발견한 방법 중에 이게 가장 심플하고 깔끔한 방법이 아닐까 싶군요. 이 방법의 경우, 스키마가 변경되도 간단히 xml 인스턴스만 교체해주면 되고 코드를 고치지 않아도 문제없습니다. 물론 Helper dll은 재컴파일 해주어야 하겠지만요.


Similar Posts

Comments