式を使用して、オーケストレーションのさまざまな方法でメッセージを操作できます。
メッセージ フィールドの参照
メッセージ内の識別フィールドを参照するには、次のようにフィールド名をメッセージ名に追加します。
MyMsg.Amount
この例では、MyMsg はメッセージ、量は MyMsg の基になっているメッセージの種類の識別フィールドとして識別されているフィールドです。
メッセージとメッセージ パーツへの割り当て
メッセージを別のメッセージに直接割り当てたり、メッセージパーツにメッセージパーツを割り当てたりすることができます。
MyMsg=IncomingMsg;
MyMsg.Invoice=IncomingMsg.Invoice;
この例では、Invoice はスキーマに基づくメッセージ部分です。
既に構築されているメッセージ (受信したメッセージなど) のプロパティを変更する場合は、[メッセージの構築] 図形で 1 つ目を 2 つ目に割り当てて新しいメッセージを作成し、同じメッセージの構造図形内の新しいメッセージのプロパティを変更する必要があります。
注
昇格されていない限り、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 には、次の 3 つのオーバーロードされたメソッドがあります。
public void AddPart(object part, String partName); public void AddPart(XLANGPart part); public void AddPart(XLANGPart part, String partName);
BizTalk プロジェクトで、パブリック クラスへの参照を追加し、オーケストレーションの式図形から AddPart メソッドを次のように呼び出します。
MyAddPartHelper.AddPart(myMessage, myStringObject, “StringObject1”);
注
シリアル化できないオブジェクトまたはカスタムの書式設定されたオブジェクトをメッセージ部分として追加することはできません。 AddPart メソッドを使用して追加のパーツを追加する前に、すべての静的パーツを初期化する必要があります。 任意の部分をメッセージに追加できるのは、そのメッセージコンストラクト ステートメント内だけです。 メッセージ構成ステートメントの外部にパーツを追加することはサポートされていません。
メッセージ パーツの取得
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 プロジェクトで、パブリック クラスへの参照を追加し、オーケストレーションの式図形から 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
メッセージパートのコンテキストプロパティアクセス
メッセージ 部分には、メッセージ コンテキストとは別のコンテキストがあります。 関連付けられた要素のプロパティ スキーマ ベース プロパティを PartContextPropertyBase に設定すると、スキーマ エディターを使用してメッセージ パーツ コンテキスト プロパティを作成できます。
アクセスは、メッセージのプロパティに似た次のような式を通じて行います。
Msg.PartName(myPartContextProperty)
例えば次が挙げられます。
Str=Msg.PartName(myPartContextProperty); //assumes myPartContextProperty is of type string
XLANGMessage コンテキスト プロパティのアクセス
コードから XLANGMessage インターフェイスからメッセージ プロパティにアクセスする場合は、メッセージを Microsoft.XLANGs.BaseTypes.XLANGMessage 型のパラメーターとして Expression 図形のメソッドに渡し、 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 コンパイル時にエラーが発生します。