共用方式為


使用 Microsoft Rules Composer 測試規則集 (預覽)

適用於:Azure Logic Apps (標準)

重要

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

當您建置規則集以便整合商業規則與標準工作流程時,請以累加方式測試規則集,或在應用程式中使用規則之前測試規則集。 如此一來,您可以檢查規則的運作方式,或當您的規則較不複雜且更容易進行疑難解答時,可以更快找到並修正問題。

如果您等到一切時間或全部完成時測試規則,而且您的規則很長或很複雜,您可能會得到比您想像的更多錯誤或問題,這可能需要較長的時間才能解決或證明難以進行疑難解答。

必要條件

  • 下載並安裝 Microsoft Rules Composer

  • XML 檔案,其中包含您想要處理的規則集,以及您想要測試的事實。

    若要新增事實,請在您在下列步驟中選取 [測試規則集] 之後開啟的 [選取事實] 視窗所參考的 XML 檔案中指定其值。 您可能想要建置事實建立者來新增 .NET 事實。 如需詳細資訊,請參閱 建置事實建立者和擷取程式

測試規則集版本

  1. 開啟Microsoft規則編輯器。 在 [RuleSet Explorer] 視窗中,選取您要測試的規則集版本,這會開啟版本信息視窗。

  2. 從規則集版本的快捷方式功能表中,選取 [ 測試規則集]。

    在出現的 [ 選取事實] 方塊中,頂端視窗會顯示規則集規則所參考的事實類型。

  3. 若要新增事實實例,請在 [XML 檔] 或 [.NET 類別] 底下選取對應的事實類型,然後選取 [新增實例]。

    注意

    如果您將衍生類別判斷為規則,但規則是直接針對基類成員撰寫的,則會改為判斷提示基類實例,並針對基類實例評估條件。

  4. 若要移除事實實例,請選取對應的事實類型,然後選取 [ 移除實例]。

  5. 若要新增您建置的事實建立者,請在 [事實建立者 ] 視窗中選取 [ 新增]。

  6. 當您準備好時,請選取 [ 測試]。

    [輸出] 視窗會顯示 規則集測試追蹤輸出

  7. 開啟測試輸出視窗的快捷方式功能表,然後選取選項以儲存、清除、選取或複製輸出文字,以便檢閱結果。

    下表描述可用來處理輸出文字的 [輸出] 視窗命令:

    Task 快速鍵命令
    清除 [輸出] 視窗中的所有文字。 全部清除
    將 [輸出] 視窗中選取的文字複製到剪貼簿。 複製
    選取 [輸出] 視窗中的所有文字。 全選
    將 [輸出] 視窗中所包含的文字儲存至指定的檔案。 儲存至檔案

Ruleset 測試追蹤輸出

本節描述當您使用 Microsoft Rules Composer 測試規則集時,追蹤所包含的追蹤信息和活動。 追蹤輸出可以包含下列語句型態:

  • 事實活動
  • 條件評估
  • 議程更新
  • 引發規則

事實活動

此活動表示引擎工作記憶體中事實的變更。 下列範例顯示範例事實活動專案:

FACT ACTIVITY 3/16/2023 9:50:28 AM
Rule Engine Instance Identifier: 9effe3f9-d3ad-4125-99fa-56bb379188f7
Ruleset Name: LoanProcessing
Operation: Assert
Object Type: MyTest.test
Object Instance Identifier: 872

下表描述這個項目中的資訊:

項目 說明
規則引擎實例標識碼 RuleEngine 實例的唯一標識符,提供規則引發的執行環境。
規則集名稱 規則集的名稱。
運算 下列作業類型可能發生在事實活動中:

- 判斷提示:將事實新增至工作記憶體。 注意:如果判斷提示事實的類型不符合規則集中使用的任何類型,Assert 函式會顯示錯誤「判斷提示 – 事實無法辨識」。

- 更新:規則會更新事實,然後必須根據新的數據和狀態重新評估引擎。

- 撤銷:已從工作記憶體中移除事實。
物件類型 特定活動的事實類型: - TypedXmlDocument

父實例和子 TypedXmlDocument 實例都會顯示判斷提示。
對象實例標識碼 事實參考的唯一實例標識碼。

條件評估

此活動表示評估個別述詞的結果。 下列範例顯示範例條件評估專案:

CONDITION EVALUATION TEST (MATCH) 1/07/2023 5:33:13 PM
Rule Engine Instance Identifier: f1dd3ff2-b4a8-4fe1-8d46-4d9b3e2502d3
Ruleset Name: LoanProcessing
Test Expression: TypedXmlDocument:Microsoft.Samples.BizTalk.LoansProcessor.Case:Root.EmploymentType/TimeInMonths >= 18
Left Operand Value: 31
Right Operand Value: 18
Test Result: True

下表描述這個項目中的資訊:

項目 說明
測試表達式 規則內的簡單一元或二進位表達式。
左操作數值 表達式左邊的字詞值。
右操作數值 表達式右邊的字詞值。
測試結果 評估的結果,也就是 TrueFalse

議程更新

此活動指出規則引擎後續執行時新增至規則引擎的議程中的規則。 下列範例顯示範例議程更新專案:

AGENDA UPDATE 1/07/2023 5:33:13 PM
Rule Engine Instance Identifier: f1dd3ff2-b4a8-4fe1-8d46-4d9b3e2502d3
Ruleset Name: LoanProcessing
Operation: Add
Rule Name: Employment Status Rule
Conflict Resolution Criteria: 0

下表描述這個項目中的資訊:

項目 說明
運算 加入或移除議程規則的作業。
規則名稱 新增或移除議程之規則的名稱。
衝突解決準則 規則的優先順序,決定動作執行時的相對順序,以及優先執行較高優先順序的動作。

引發規則

此活動表示規則動作的執行。 下列範例顯示引發的規則專案:

RULE FIRED 1/07/2023 5:33:13 PM
Rule Engine Instance Identifier: f1dd3ff2-b4a8-4fe1-8d46-4d9b3e2502d3
Ruleset Name: LoanProcessing
Rule Name: Residency Status Rule
Conflict Resolution Criteria: 10

Update 函式

此範例示範名為 「Order」 的範例規則集中的範例 「InventoryCheck」 規則和 「Ship」 規則。第一次檢查規則時,與「Ship」 規則相關聯的條件會評估為 False。 不過,當 「InventoryCheck」 規則引發時,Order 上的 InventoryAvailable 字段就會變更,而且 Update 命令會發出至 “Order 物件” 的引擎,導致重新評估 “Ship” 規則。 這一次,條件會評估為 True,並引發「Ship」規則。

注意

如果您的規則撰寫不正確,則使用Update函式的正向鏈結可能會導致無限迴圈。 在此事件中,當您在Microsoft Rules Composer 中測試規則集時,會收到錯誤訊息,其中包含「規則引擎偵測到執行迴圈」文字

InventoryCheck 規則

IF Inventory.AllocateInventory == True
THEN Order.InventoryAvailable == True
Update(Order)

出貨規則

IF Order.InventoryAvailable == True
THEN Shipment.ShipOrder

輸出

RULE ENGINE TRACE for RULESET: Order 3/17/2023 10:31:17 AM
FACT ACTIVITY 3/17/2023 10:31:17 AM
Rule Engine Instance Identifier: 533f2fb6-a91f-49c1-8f36-e03a27ca9d72
Ruleset Name: Order
Operation: Assert
Object Type: TestClasses.Order
Object Instance Identifier: 448
CONDITION EVALUATION TEST (MATCH) 3/17/2023 10:31:17 AM
Rule Engine Instance Identifier: 533f2fb6-a91f-49c1-8f36-e03a27ca9d72
Ruleset Name: Order
Test Expression: TestClasses.Order.inventoryAvailable == True
Left Operand Value: null
Right Operand Value: True
Test Result: False
FACT ACTIVITY 3/17/2023 10:31:17 AM
Rule Engine Instance Identifier: 533f2fb6-a91f-49c1-8f36-e03a27ca9d72
Ruleset Name: Order
Operation: Assert
Object Type: TestClasses.Shipment
Object Instance Identifier: 447
FACT ACTIVITY 3/17/2023 10:31:17 AM
Rule Engine Instance Identifier: 533f2fb6-a91f-49c1-8f36-e03a27ca9d72
Ruleset Name: Order
Operation: Assert
Object Type: TestClasses.Inventory
Object Instance Identifier: 446
CONDITION EVALUATION TEST (MATCH) 3/17/2023 10:31:17 AM
Rule Engine Instance Identifier: 533f2fb6-a91f-49c1-8f36-e03a27ca9d72
Ruleset Name: Order
Test Expression: TestClasses.Inventory.AllocateInventory == True
Left Operand Value: True
Right Operand Value: True
Test Result: True
AGENDA UPDATE 3/17/2023 10:31:17 AM
Rule Engine Instance Identifier: 533f2fb6-a91f-49c1-8f36-e03a27ca9d72
Ruleset Name: Order
Operation: Add
Rule Name: InventoryCheck
Conflict Resolution Criteria: 0
RULE FIRED 3/17/2023 10:31:17 AM
Rule Engine Instance Identifier: 533f2fb6-a91f-49c1-8f36-e03a27ca9d72
Ruleset Name: Order
Rule Name: InventoryCheck
Conflict Resolution Criteria: 0
FACT ACTIVITY 3/17/2023 10:31:17 AM
Rule Engine Instance Identifier: 533f2fb6-a91f-49c1-8f36-e03a27ca9d72
Ruleset Name: Order
Operation: Update
Object Type: TestClasses.Order
Object Instance Identifier: 448
CONDITION EVALUATION TEST (MATCH) 3/17/2023 10:31:17 AM
Rule Engine Instance Identifier: 533f2fb6-a91f-49c1-8f36-e03a27ca9d72
Ruleset Name: Order
Test Expression: TestClasses.Order.inventoryAvailable == True
Left Operand Value: True
Right Operand Value: True
Test Result: True
AGENDA UPDATE 3/17/2023 10:31:17 AM
Rule Engine Instance Identifier: 533f2fb6-a91f-49c1-8f36-e03a27ca9d72
Ruleset Name: Order
Operation: Add
Rule Name: Ship
Conflict Resolution Criteria: 0
RULE FIRED 3/17/2023 10:31:17 AM
Rule Engine Instance Identifier: 533f2fb6-a91f-49c1-8f36-e03a27ca9d72
Ruleset Name: Order
Rule Name: Ship
Conflict Resolution Criteria: 0
FACT ACTIVITY 3/17/2023 10:31:17 AM
Rule Engine Instance Identifier: 533f2fb6-a91f-49c1-8f36-e03a27ca9d72
Ruleset Name: Order
Operation: Retract
Object Type: TestClasses.Order
Object Instance Identifier: 448
FACT ACTIVITY 3/17/2023 10:31:17 AM
Rule Engine Instance Identifier: 533f2fb6-a91f-49c1-8f36-e03a27ca9d72
Ruleset Name: Order
Operation: Retract
Object Type: TestClasses.Shipment
Object Instance Identifier: 447
FACT ACTIVITY 3/17/2023 10:31:17 AM
Rule Engine Instance Identifier: 533f2fb6-a91f-49c1-8f36-e03a27ca9d72
Ruleset Name: Order
Operation: Retract
Object Type: TestClasses.Inventory
Object Instance Identifier: 446

規則集測試追蹤輸出範例

本節提供範例,顯示不同類型的事實的規則集測試輸出。

.NET 類別事實類型

此範例是名為 “LoanProcessing” 的規則集中名為 “TestRule1” 的範例規則:

IF test.get_ID > 0
THEN <do something>

輸出

RULE ENGINE TRACE for RULESET: LoanProcessing 3/16/2023 9:50:28 AM
FACT ACTIVITY 3/16/2023 9:50:28 AM
Rule Engine Instance Identifier: 9effe3f9-d3ad-4125-99fa-56bb379188f7
Ruleset Name: LoanProcessing
Operation: Assert
Object Type: MyTest.test
Object Instance Identifier: 872
CONDITION EVALUATION TEST (MATCH) 3/16/2023 9:50:28 AM
Rule Engine Instance Identifier: 9effe3f9-d3ad-4125-99fa-56bb379188f7
Ruleset Name: LoanProcessing
Test Expression: MyTest.test.get_ID > 0
Left Operand Value: 100
Right Operand Value: 0
Test Result: True
AGENDA UPDATE 3/16/2023 9:50:28 AM
Rule Engine Instance Identifier: 9effe3f9-d3ad-4125-99fa-56bb379188f7
Ruleset Name: LoanProcessing
Operation: Add
Rule Name: TestRule1
Conflict Resolution Criteria: 0
RULE FIRED 3/16/2023 9:50:28 AM
Rule Engine Instance Identifier: 9effe3f9-d3ad-4125-99fa-56bb379188f7
Ruleset Name: LoanProcessing
Rule Name: TestRule1
Conflict Resolution Criteria: 0
FACT ACTIVITY 3/16/2023 9:50:28 AM
Rule Engine Instance Identifier: 9effe3f9-d3ad-4125-99fa-56bb379188f7
Ruleset Name: LoanProcessing
Operation: Retract
Object Type: MyTest.test
Object Instance Identifier: 872

TypedXmlDocument 事實類型

此範例顯示類型為 Microsoft.Samples.BizTalk.LoansProcessor.Case 的 TypedXmlDocument 實體會判斷提示到規則引擎中。 根據規則中定義的 XPath 選取器值,引擎會根據檔類型和選取器字串,建立並判斷提示名為 Microsoft.Samples.BizTalk.LoansProcessor.Case:/Root/EmploymentType 的子 TypedXmlDocument 實體。 此子 TypedXmlDocument 實體在條件中評估為 True ,導致議程更新和規則引發。 接著會撤銷父代和子 TypedXmlDocument 實體。

此範例會在名為 “LoanProcessing” 的規則集中顯示名為 “TestRule1” 的範例規則:

IF Microsoft.Samples.BizTalk.LoansProcessor.Case:/Root/EmploymentType.TimeInMonths >= 4
THEN <do something>

輸出

RULE ENGINE TRACE for RULESET: LoanProcessing 3/17/2023 9:23:05 AM
FACT ACTIVITY 3/17/2023 9:23:05 AM
Rule Engine Instance Identifier: 51ffbea4-468f-4ce8-8ab7-977cadda2e2b
Ruleset Name: LoanProcessing
Operation: Assert
Object Type: TypedXmlDocument:Microsoft.Samples.BizTalk.LoansProcessor.Case
Object Instance Identifier: 858
FACT ACTIVITY 3/17/2023 9:23:05 AM
Rule Engine Instance Identifier: 51ffbea4-468f-4ce8-8ab7-977cadda2e2b
Ruleset Name: LoanProcessing
Operation: Assert
Object Type: TypedXmlDocument:Microsoft.Samples.BizTalk.LoansProcessor.Case:/Root/EmploymentType
Object Instance Identifier: 853
CONDITION EVALUATION TEST (MATCH) 3/17/2023 9:23:05 AM
Rule Engine Instance Identifier: 51ffbea4-468f-4ce8-8ab7-977cadda2e2b
Ruleset Name: LoanProcessing
Test Expression: TypedXmlDocument:Microsoft.Samples.BizTalk.LoansProcessor.Case:/Root/EmploymentType.TimeInMonths >= 4
Left Operand Value: 6
Right Operand Value: 4
Test Result: True
AGENDA UPDATE 3/17/2023 9:23:05 AM
Rule Engine Instance Identifier: 51ffbea4-468f-4ce8-8ab7-977cadda2e2b
Ruleset Name: LoanProcessing
Operation: Add
Rule Name: TestRule1
Conflict Resolution Criteria: 0
RULE FIRED 3/17/2023 9:23:05 AM
Rule Engine Instance Identifier: 51ffbea4-468f-4ce8-8ab7-977cadda2e2b
Ruleset Name: LoanProcessing
Rule Name: TestRule1
Conflict Resolution Criteria: 0
FACT ACTIVITY 3/17/2023 9:23:05 AM
Rule Engine Instance Identifier: 51ffbea4-468f-4ce8-8ab7-977cadda2e2b
Ruleset Name: LoanProcessing
Operation: Retract
Object Type: TypedXmlDocument:Microsoft.Samples.BizTalk.LoansProcessor.Case
Object Instance Identifier: 858
FACT ACTIVITY 3/17/2023 9:23:05 AM
Rule Engine Instance Identifier: 51ffbea4-468f-4ce8-8ab7-977cadda2e2b
Ruleset Name: LoanProcessing
Operation: Retract
Object Type: TypedXmlDocument:Microsoft.Samples.BizTalk.LoansProcessor.Case:/Root/EmploymentType
Object Instance Identifier: 853