式を使用してメッセージの割り当てを実行する方法
式を使用して、さまざまな方法でオーケストレーションのメッセージを操作できます。
メッセージ フィールドの参照
次のようにフィールド名をメッセージ名に追加して、メッセージの識別フィールドを参照できます。
MyMsg.Amount
この例の場合、MyMsg はメッセージを表しています。Amount は、MyMsg の基になるメッセージの種類の識別フィールドとして認識されているフィールドです。
メッセージとメッセージ部分への割り当て
メッセージを別のメッセージに (または、メッセージ部分を他のメッセージ部分に) 直接割り当てることができます。
MyMsg=IncomingMsg;
MyMsg.Invoice=IncomingMsg.Invoice;
この例の場合、Invoice は、スキーマに基づくメッセージ部分です。
既に作成されているメッセージ (受信したメッセージなど) のプロパティを変更する場合は、[メッセージの構築] 図形の 1 つ目を 2 つ目に割り当てて新しいメッセージを作成し、同じメッセージの構造図形内の新しいメッセージの プロパティを変更する必要があります。
Note
メッセージ フィールドを昇格させた場合を除き、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 プロジェクトで、パブリック クラスへの参照を追加し、オーケストレーションの Expression 図形から AddPart メソッドを次のように呼び出します。
MyAddPartHelper.AddPart(myMessage, myStringObject, “StringObject1”);
Note
シリアル化できないオブジェクトまたはカスタムの書式設定されたオブジェクトをメッセージ部分として追加することはできません。 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); } }
Note
RetrieveAs メソッドは、名前とインデックスによるメッセージ部分の取得をサポートしています。
BizTalk プロジェクトで、パブリック クラスへの参照を追加し、オーケストレーションの Expression 図形から 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);
Note
独自のカスタム コンテキスト プロパティを取得または設定するには、C# プロジェクトで、プロパティ スキーマ プロジェクトに参照を追加するか、そのプロパティ スキーマが含まれているアセンブリに参照を追加する必要があります。
メッセージ プロパティへの割り当て
値をメッセージ プロパティに割り当てることができます。
MyMessage(MySchemaNamespace.MyProperty)=True;
BizTalk Serverでは、マルチパート メッセージの MIME プロパティを参照して値を割り当てることができます。
Message_Out.MessagePart_1(MIME.FileName)="document.doc";
Note
BizTalk メッセージは、メッセージ コンテキストとメッセージ部分で構成されます。 メッセージ コンテキスト プロパティを取得または設定するには、まずメッセージ部分を初期化する必要があります。初期化をしないと、XLANG コンパイル時にエラーが発生します。