식을 사용하여 메시지 할당을 수행하는 방법
오케스트레이션에서는 식을 사용하여 메시지를 여러 방식으로 조작할 수 있습니다.
메시지 필드 참조
다음과 같이 메시지 이름에 필드 이름을 추가하여 메시지의 고유 필드를 참조할 수 있습니다.
MyMsg.Amount
이 예제에서 MyMsg는 메시지이고, Amount는 MyMsg의 기반이 되는 메시지 유형의 고유 필드로 식별된 필드입니다.
메시지 및 메시지 파트에 할당
메시지를 다른 메시지에 직접 할당하거나 메시지 파트를 다른 메시지 파트에 직접 할당할 수 있습니다.
MyMsg=IncomingMsg;
MyMsg.Invoice=IncomingMsg.Invoice;
이 예제에서 Invoice는 스키마 기반의 메시지 파트입니다.
이미 생성된 메시지(예: 수신된 메시지)의 속성을 수정하려면 생성 메시지 셰이프에서 첫 번째 메시지를 두 번째 메시지에 할당하여 새 메시지를 생성하고 동일한 생성 메시지 셰이프 내에서 새 메시지의 속성을 수정해야 합니다.
참고
MyMsg.Invoice.MyField와 같은 메시지 필드는 승격되지 않는 한 참조 또는 할당할 수 없습니다. 전체 메시지, 메시지 파트, 승격된 메시지 속성 또는 고유 필드만 참조 또는 할당할 수 있습니다.
메시지 파트 추가
XLANGs.BaseTypes.XLANGMessage.AddPart 메서드를 사용하여 기존 다중 파트 메시지에 파트를 추가할 수 있습니다. 이렇게 하려면 다음을 수행합니다.
C# 프로젝트를 만들고 Microsoft.XLANGs.BaseTypes에 대한 참조를 추가합니다.
공용 클래스를 구현하는 방법은 다음과 유사합니다.
public class MyAddPartHelper { public static void AddPart(XLANGMessage msg, object part, String partName) { msg.AddPart(part, partName); } }
Microsoft.XLANGs.BaseTypes.AddPart에 대한 세 가지 오버로드된 메서드가 있습니다.
public void AddPart(object part, String partName); public void AddPart(XLANGPart part); public void AddPart(XLANGPart part, String partName);
BizTalk 프로젝트에서 public 클래스에 대한 참조를 추가하고 다음과 같이 오케스트레이션의 식 셰이프에서 AddPart 메서드를 호출합니다.
MyAddPartHelper.AddPart(myMessage, myStringObject, “StringObject1”);
참고
Serialize할 수 없는 개체나 사용자 지정 형식 개체는 메시지 파트로 추가할 수 없습니다. AddPart 메서드를 사용하여 추가 파트를 추가하기 전에 모든 정적 부분을 초기화해야 합니다. 메시지 construct 문에 있는 메시지에만 임의의 파트를 추가할 수 있습니다. 메시지 construct 문 바깥쪽에 추가 파트를 추가하는 것은 지원되지 않습니다.
메시지 파트 검색
Microsoft.XLANGs.BaseTypes에서 RetrieveAs 메서드를 사용하여 기존 다중 파트 메시지에서 메시지 부분을 검색할 수 있습니다. 이렇게 하려면 다음을 수행합니다.
C# 프로젝트를 만들고 Microsoft.XLANGs.BaseTypes에 대한 참조를 추가합니다.
공용 클래스를 구현하는 방법은 다음과 유사합니다.
Public class MyAddPartHelper { public static Object GetPart(XLANGMessage msg, string sName, Type t) { XLANGPart p = msg[sName]; return p.RetrieveAs(t); } public static Object GetPart(XLANGMessage msg, int partIndex, Type t) { XLANGPart p = msg[partIndex]; return p.RetrieveAs(t); } }
참고
RetrieveAs 메서드는 이름 및 인덱스별로 메시지 파트 검색을 지원합니다.
BizTalk 프로젝트에서 public 클래스에 대한 참조를 추가하고 다음과 같이 오케스트레이션의 식 셰이프에서 GetPart 메서드를 호출합니다.
sPart = (System.String) MyAddPartHelper.GetPart(msg, "StringObject1" , typeof(System.String)); //sPart is a type of System.String sPart = (System.String) MyAddPartHelper.GetPart(msg, 1, typeof(System.String)); //Retriving the message part with index = 1
메시지 파트 컨텍스트 속성 액세스
메시지 파트에는 메시지 컨텍스트와 별개의 컨텍스트가 있습니다. 연결된 요소의 Property Schema Base 속성을 PartContextPropertyBase로 설정할 때 스키마 편집기를 통해 메시지 파트 컨텍스트 속성을 생성할 수 있습니다.
액세스 방법은 다음 식에서와 같이 메시지 속성과 비슷합니다.
Msg.PartName(myPartContextProperty)
예:
Str=Msg.PartName(myPartContextProperty); //assumes myPartContextProperty is of type string
XLANGMessage 컨텍스트 속성 액세스
코드에서 XLANGMessage 인터페이스의 메시지 속성에 액세스하려면 메시지를 Microsoft.XLANGs.BaseTypes.XLANGMessage 형식의 매개 변수로 식 셰이프의 메서드로 전달한 다음 Microsoft.XLANGs.BaseTypes.XLANGMessage 메서드 SetPropertyValue 및 GetPropertyValue 를 사용하여 이 작업을 수행할 수 있습니다. 이렇게 하려면 다음을 수행합니다.
C# 프로젝트를 만들고 Microsoft.XLANGs.BaseTypes 및 Microsoft.BizTalk.GlobalPropertySchemas에 대한 참조를 추가합니다.
아래와 유사한 코드를 사용하여 컨텍스트 속성에 액세스할 수 있습니다.
MyMsg.GetPropertyValue(typeof(BTS.MessageID)); MyMsg.SetPropertyValue(typeof(MIME.IsMultipartRelated), true);
참고
사용자 지정 컨텍스트 속성을 가져오거나 설정하려면 C# 프로젝트에 속성 스키마 프로젝트에 대한 참조를 추가하거나 속성 스키마가 포함된 어셈블리에 대한 참조를 추가해야 합니다.
메시지 속성에 할당
메시지 속성에 값을 할당할 수 있습니다.
MyMessage(MySchemaNamespace.MyProperty)=True;
BizTalk Server 다중 파트 메시지의 MIME 속성을 참조하고 값을 할당할 수 있습니다.
Message_Out.MessagePart_1(MIME.FileName)="document.doc";
참고
BizTalk 메시지는 메시지 컨텍스트와 메시지 파트로 구성되어 있습니다. 모든 메시지 컨텍스트 속성을 가져오거나 설정하려면 우선 메시지를 초기화해야 합니다. 그렇지 않은 경우 XLANG 컴파일 시에 오류 메시지가 나타납니다.