次の方法で共有


受信メッセージ図形でのフィルターの使用

フィルター式は、Activate プロパティの値 True を指定するオーケストレーション受信図形に適用できる省略可能なパラメーターです。 フィルター式が指定されている場合、受信メッセージがフィルター式で指定された条件と一致する場合にのみオーケストレーションがアクティブになります。 フィルター式が指定されていない場合は、オーケストレーションがサブスクライブする受信メッセージによってオーケストレーションがアクティブ化されます。

フィルター式を作成するには、式の左側にある受信メッセージのプロパティと、式の右側にある定数を比較します。 AND 演算子と OR 演算子を 2 つ以上の式に適用して、複合式を作成することもできます。 フィルター式を空白のままにしてもかまいません。その場合、すべてのメッセージが受け入れられます。

フィルター式は次のようになります。

InvoiceSchema.Quantity >= 1000  

この例では、受信メッセージがオーケストレーションに表示されます。 オーケストレーションには、前述のフィルター式が適用されたアクティブ化 受信 図形があります (特定のメッセージを受信するとオーケストレーションが実行されるように、 Activation プロパティが True に設定されています)。 受信メッセージには、 名前空間 InvoiceSchema に Quantity というプロパティが必要です。 オーケストレーションは、1000 個以上の項目の請求書のみを受け入れるため、ランタイム エンジンは、実行前に受信メッセージを確認します。

次の表に、フィルター式で使用できる演算子を示します。

オペレーター 説明
== 等しい ReqMsg(Total) == 100
!= 等しくない ReqMsg(Total) != 100
< より小さい ReqMsg(Total) < 100
> より大きい ReqMsg(Total) > 100
<= 以下 ReqMsg(Total) <= 100
>= 以上 リクエストメッセージ(合計) >= 100
存在 存在 ReqMsg(Description) が存在します

フィルター式の文字列値は引用符で囲まれます。たとえば、ReqMsg(Description) = "発注書の状態" です。 フィルター式で文字値を使用することはできません。

アクティブ化受信がダイレクト バインド ポートに関連付けられている場合、その後、フィルターでテストされたプロパティに対して同じ値を持つ同じ型のメッセージを送信すると、無限ループが作成されます。 メッセージは MessageBox に移動し、フィルター条件に一致するため、メッセージが再び取得されます。 これを回避するには、別のプロパティでフィルター処理するか、別の型のメッセージを送信するか、同じ型のメッセージを送信する前にプロパティの値を必ず変更する必要があります。

こちらもご覧ください

受信図形を構成する方法
オーケストレーションでの相関関係の使用
識別フィールドとプロパティ フィールドの使用
オーケストレーションでのメッセージの使用