다음을 통해 공유


식을 사용하여 메시지 할당을 수행하는 방법

오케스트레이션에서는 식을 사용하여 메시지를 여러 방식으로 조작할 수 있습니다.

메시지 필드 참조

다음과 같이 메시지 이름에 필드 이름을 추가하여 메시지의 고유 필드를 참조할 수 있습니다.

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 메서드 SetPropertyValueGetPropertyValue 를 사용하여 이 작업을 수행할 수 있습니다. 이렇게 하려면 다음을 수행합니다.

  • C# 프로젝트를 만들고 Microsoft.XLANGs.BaseTypesMicrosoft.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 컴파일 시에 오류 메시지가 나타납니다.

참고 항목

오케스트레이션에서 메시지 사용
사용자 코드에서 메시지 생성