使用 Microsoft 規則編輯器將算術和邏輯運算元添加至規則

適用於:Azure Logic Apps (標準)

本指南說明如何使用 Microsoft Rules Composer 在規則集中加入算術運算子和邏輯運算子。

必要條件

將算術運算元新增至規則

您可以將算術運算元新增至規則中的條件或動作。 下表描述可用的算術運算子:

算術運算子 描述
加入 將 arg1 加至 arg2 的加法運算子。
減去 將 arg1 從 arg2 中減去的減法運算符。
乘積 乘法運算子將 arg1 乘以 arg2。
分割 除法運算符,將 arg1 除以 arg2。
剩餘 執行 arg1 模 arg2 的餘數運算符。
  1. 在 Microsoft Rules Composer 中,載入包含您要處理之規則存放區的 XML 檔案。

  2. 在 [ RuleSet Explorer] 視窗中,尋找並選取您想要的規則。

  3. 在 [事實瀏覽器] 視窗中,選取 [詞彙] 標籤。

  4. 在詞彙>函式>版本 1.0 底下,將您要使用的算術運算子拖曳到條件編輯器中條件的引數,或拖曳到動作編輯器中的動作。

  5. 在條件或動作自變數中,指定左右作數的值。

    • 如果操作元類型不同,規則引擎會進行自動數值提升,將較小的操作元類型轉換成較大的操作元類型。

      例如,假設您在一個具 int 型別的運算元,以及一個具 long 型別的運算元上,使用 Add 運算子。 在引擎執行 Add 作業之前,引擎會將 int 類型 轉換成 long 類型。

    • 如果引擎可以將兩個運算元提升為共同型別,則引擎支援雙重提升。

      例如,假設您對一個具有 int 類型的運算元和一個具有 uint 類型的運算元使用 Add 運算符。 在引擎執行 Add 作業之前,引擎會將這兩個運算元類型 轉換成 long 型別。

將邏輯運算元新增至規則

您可以將邏輯運算元新增至條件中的述詞。 下表描述可用的邏輯運算子:

邏輯運算子 描述
AND 結合兩個或多個述詞以形成邏輯 AND 運算式。 回傳 true,如果兩個謂詞的結果均為 true。 否則,會傳回false。
或 結合兩個或多個述詞以形成邏輯 OR 運算式。 如果有一個述詞評估為 true,則會傳回 true。 否則,會回傳 false。
不 否定邏輯表達式或述詞。 如果該述詞評估為 false,則會傳回 true。 否則,傳回 false。
  1. 在 Microsoft Rules Composer 中,載入包含您要處理之規則存放區的 XML 檔案。

  2. 在 [ RuleSet Explorer] 視窗中,尋找並選取您想要的規則。

  3. 在 [IF ] 窗格中,這是條件編輯器,從 [條件 ] 快捷方式功能表中,選取下列其中一個命令:

    邏輯運算子 描述
    新增邏輯 AND 結合兩個或多個述詞以形成邏輯 AND 運算式。
    新增邏輯 OR 結合兩個或多個述詞以形成邏輯 OR 運算式。
    新增邏輯 NOT 否定邏輯表達式或述詞。
  4. 在條件編輯器中,開啟運算子的快捷方式功能表,並新增您想要的述詞或巢狀邏輯運算符。

    如果作數有不同的類型,規則引擎會轉換一個作數的類型以符合另一個作數的類型,或在評估表達式之前,將兩個作數的類型轉換成一般類型。

處理 Null 值

下一節描述與不同類型相關聯之 Null 值的預期行為,並提供檢查 Null 或特定欄位或成員是否存在的選項。

.NET 類別

  • 對於衍生自 Object 類型的類型,您可以將其欄位設定為 null。

  • 您可以針對不是實值型別的參數傳遞 null 作為自變數,但根據成員的實作,您可能會收到運行時錯誤。

  • 如果傳回類型不是 Object 類型,則您無法使用 Null 進行比較。

XML 元素

  • XML 檔永遠不會將 XML 值傳回為 null。 相反地,這個值是空字串或「不存在」錯誤。 對於空字串,某些類型的轉換可能會發生錯誤,例如當您建置規則時指定為整數類型的字段。

  • Microsoft Rules Composer 不允許您將欄位設定為 null 或將欄位類型設定為 Object。

  • 透過物件模型,您可以將類型設定為 Object。 在此情況下,傳回的值具有 XPath 根據 XPath 運算式評估的型別,例如 Float、 Boolean 或 String。

檢查 null 或存在性

當您撰寫規則時,自然想要先檢查字段是否存在,再比較其值。 不過,如果欄位為 Null 或不存在,則比較值會造成錯誤。

例如,假設您有下列規則:

IF Product/Quantity Exists AND Product/Quantity > 1

如果 Product/Quantity 不存在,規則會擲回錯誤。 若要解決此問題,您可以將父節點傳遞至 Helper 方法,如果該專案存在,則會傳回 Product/Quantity 值,或如果該元素不存在,則傳回其他專案。

下列範例顯示更新和新的協助程式方法規則:

規則 1

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

規則 2

IF Helper.Value == X THEN...

作為另一個可能的解決方案,您可以建立規則,例如下列範例:

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

在上述範例中,函 <CheckQuantityAndDoSomething> 式會檢查參數值,並在符合條件時執行。

若要判斷現有的自變數是否為 Null,請使用撰寫器:

argument is equal to <null>

注意

或者,您可以修改 XML 事實的 XPath Field 屬性來攔截任何錯誤,但不建議使用此方法。