共用方式為


使用Microsoft規則撰寫器將算術和邏輯運算元新增至規則 (預覽)

適用於:Azure Logic Apps (標準)

重要

此功能處於預覽狀態,且受限於 Microsoft Azure 預覽版的補充使用規定

本指南說明如何使用 Microsoft Rules Composer,將算術和邏輯運算元新增至規則集中的規則。

必要條件

將算術運算元新增至規則

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

算術運算子 描述
加入 將 arg1 新增arg2 的加號運算子。
差集 arg2去 arg1 的減法運算符。
乘積 乘積 1以 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 作業之前,引擎會將這兩個操作數類型 轉換成長 型別。

將邏輯運算元新增至規則

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

邏輯運算子 描述
AND 結合兩個或多個述詞以形成邏輯 AND 運算式。 如果兩個述詞都評估為 true,則傳回 true。 否則,會傳 回 false
OR 結合兩個或多個述詞以形成邏輯 OR 運算式。 如果一個述詞評估為 true,則傳回 true。 否則,會傳 回 false
NOT 否定邏輯表達式或述詞。 如果述詞評估為 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 運算式評估的型別,例如 FloatBooleanString

檢查 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> 式會檢查參數值,並在符合條件時執行。

注意

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