Microsoft Rules Composer を使用してルールに算術演算子と論理演算子を追加する

適用対象: Azure Logic Apps (Standard)

このガイドでは、Microsoft Rules Composer を使用して、ルール セット内のルールに算術演算子と論理演算子を追加する方法について説明します。

前提条件

  • Microsoft Rules Composer をダウンロードしてインストールします。

  • 作業するルールセットを含む XML ファイル。

ルールに算術演算子を追加する

ルールの条件またはアクションに算術演算子を追加できます。 次の表では、使用可能な算術演算子について説明します。

算術演算子 説明
追加 arg1 を arg2 に加算する加算演算子。
減算 arg2 から arg1 を減算する減算演算子。
掛ける arg1 に arg2 を乗算する乗算演算子。
除算 arg1 を arg2 で除算する除算演算子。
剰余 arg1 を arg2 で割ったときの剰余を求める演算子。
  1. Microsoft Rules Composer で、作業するルール ストアを含む XML ファイルを読み込みます。

  2. RuleSet エクスプローラー ウィンドウで、目的のルールを見つけて選択します。

  3. ファクト エクスプローラー ウィンドウで、[ボキャブラリ] タブを選択します。

  4. ボキャブラリ関数バージョン 1.0において、条件エディターの条件またはアクションエディターのアクションの引数に、必要な算術演算子をドラッグします。

  5. 条件またはアクション引数で、左オペランドと右オペランドの値を指定します。

    • オペランドの型が異なる場合、ルール エンジンでは自動数値昇格が実行され、小さい方のオペランド型が大きい方のオペランド型に変換されます。

      たとえば、int 型を持つオペランドと long 型を持つオペランドに対して、Add 演算子を使用するとします。 エンジンでは、Add 演算が実行される前に、int 型が long 型に変換されます。

    • エンジンでは、両方のオペランドを共通の型に昇格できる場合、二重昇格がサポートされます。

      たとえば、int 型を持つオペランドと uint 型を持つオペランドに対して、Add 演算子を使用するとします。 エンジンでは、Add 演算が実行される前に、両方のオペランドの型が long 型に変換されます。

ルールに論理演算子を追加する

条件の述語に論理演算子を追加できます。 次の表では、使用可能な論理演算子について説明しています。

論理演算子 説明
そして 2 つ以上の述語を組み合わせて論理 AND 式を形成します。 両方の述語が true に評価される場合は、true が返されます。 それ以外の場合は、false が返されます。
又は 2 つ以上の述語を組み合わせて論理 OR 式を形成します。 1 つの述語が true に評価される場合は、true が返されます。 それ以外の場合は、false が返されます。
じゃない 論理式または述語を否定します。 述語が false に評価される場合は、true が返されます。 それ以外の場合は、false が返されます。
  1. Microsoft Rules Composer で、作業するルール ストアを含む XML ファイルを読み込みます。

  2. RuleSet エクスプローラー ウィンドウで、目的のルールを見つけて選択します。

  3. 条件エディターである [IF] ペインの [条件] ショートカット メニューから、次のいずれかのコマンドを選択します。

    論理演算子 説明
    論理 AND の追加 2 つ以上の述語を組み合わせて論理 AND 式を形成します。
    論理 OR の追加 2 つ以上の述語を組み合わせて論理 OR 式を形成します。
    ロジカルNOTを追加 論理式または述語を否定します。
  4. 条件エディターで、演算子のショートカット メニューを開き、必要な述語または入れ子になった論理演算子を追加します。

    オペランドの型が異なる場合、ルール エンジンによって、1 つのオペランドの型がもう 1 つのオペランドの型と一致するように変換されるか、式が評価される前に両方のオペランドの型が共通の型に変換されます。

null 値を処理する

次のセクションでは、さまざまな型に関連付けられた null 値に対して想定される動作について説明し、特定のフィールドまたはメンバーについて null あるいは存在を確認するためのオプションを示します。

.NET クラス

  • Object 型から派生した型の場合は、そのフィールドを null に設定できます。

  • 値型ではないパラメーターの引数として null を渡すことはできますが、メンバーの実装に基づいてランタイム エラーが発生する可能性があります。

  • 戻り値の型が Object 型でない場合は、比較に null を使用できません。

XML 要素

  • XML ドキュメントから、XML 値が null として返されることはありません。 代わりに、この値は空の文字列または "存在しない" エラーになります。 空の文字列の場合、ルールの作成時に整数型として指定されたフィールドなど、特定の型の変換でエラーが発生する可能性があります。

  • Microsoft Rules Composer では、フィールドを null に設定したり、フィールド型を Object に設定したりすることはできません。

  • オブジェクト モデルを使用すれば、型を Object に設定できます。 この場合、戻り値は、XPath 式に基づいて、Float、Boolean、String など、XPath で評価される型になります。

null か存在するか確認する

ルールを記述するときは、フィールドの値を比較する前に、フィールドが存在することを当然確認する必要があります。 ただし、フィールドが null であるか、存在しない場合は、値を比較するとエラーが発生します。

たとえば、次のようなルールがあるとします。

IF Product/Quantity Exists AND Product/Quantity > 1

Product/Quantity が存在しない場合、ルールはエラーを発生させます。 この問題を回避するために、その要素が存在する場合は Product/Quantity 値を返すヘルパー メソッドに親ノードを渡すか、その要素が存在しない場合は別のものを返すことができます。

次の例は、更新された新しいヘルパー メソッド ルールを示しています。

規則 1

IF Exists(Product/Quantity) THEN Assert(CreateObject(typeof(Helper), Product/Quantity))

規則 2

IF Helper.Value == X THEN...

考えられるもう 1 つの解決策として、次の例のようなルールを作成できます。

IF Product/Quantity Exists THEN CheckQuantityAndDoSomething(Product/Quantity)

前の例では、<CheckQuantityAndDoSomething> 関数でパラメーター値が確認され、条件が満たされた場合に実行されます。

既存の引数が null かどうかを判断するには、composer を使用します。

argument is equal to <null>

注

または、XML ファクトの XPath Field プロパティを変更してエラーをキャッチすることもできますが、この方法は推奨されません。