Testowanie zestawów reguł przy użyciu narzędzia Microsoft Rules Composer (wersja zapoznawcza)
Dotyczy: Azure Logic Apps (Standardowa)
Ważne
Ta funkcja jest dostępna w wersji zapoznawczej i podlega dodatkowym warunkom użytkowania wersji zapoznawczej platformy Microsoft Azure.
Podczas tworzenia zestawu reguł, aby umożliwić integrację logiki biznesowej z przepływami pracy w warstwie Standardowa, przetestuj zestaw reguł przyrostowo lub przed użyciem reguł w aplikacji. Dzięki temu możesz sprawdzić, czy reguły działają zgodnie z oczekiwaniami w drodze, lub możesz znaleźć i rozwiązać problemy wcześniej, gdy reguły są mniej złożone i łatwiejsze do rozwiązania.
Jeśli zaczekasz na przetestowanie reguł jednocześnie lub gdy wszystko będzie gotowe, a reguły są długie lub złożone, może wystąpić więcej błędów lub problemów, co może potrwać dłużej, aby rozwiązać lub okazać się trudne do rozwiązania.
Wymagania wstępne
Pobierz i zainstaluj program Microsoft Rules Composer.
Plik XML zawierający zestaw reguł, nad którym chcesz pracować, oraz fakty, które chcesz przetestować.
Aby dodać fakty, określ ich wartości w plikach XML, do których odwołujesz się w oknie Wybieranie faktów , które zostanie otwarte po wybraniu zestawu reguł testowania w poniższych krokach. Możesz utworzyć twórcę faktów, aby dodać fakty platformy .NET. Aby uzyskać więcej informacji, zobacz Tworzenie twórców faktów i elementów pobierania.
Testowanie wersji zestawu reguł
Otwórz program Microsoft Rules Composer. W oknie Eksplorator zestawu reguł wybierz wersję zestawu reguł, którą chcesz przetestować, co spowoduje otwarcie okna informacji o wersji.
Z menu skrótów wersji zestawu reguł wybierz pozycję Test Ruleset (Zestaw reguł testowania).
W wyświetlonym polu Wybierz fakty górne okno zawiera typy faktów , do których odwołuje się reguł zestawu reguł.
Aby dodać wystąpienie faktów, w obszarze Dokumenty XML lub Klasy platformy .NET wybierz odpowiedni typ faktów, a następnie wybierz pozycję Dodaj wystąpienie.
Uwaga
W przypadku potwierdzenia klasy pochodnej w regule, ale reguły są bezpośrednio zapisywane względem składowych klasy bazowej, wystąpienie klasy bazowej jest zamiast tego potwierdzane, a warunki są oceniane względem wystąpienia klasy bazowej.
Aby usunąć wystąpienie faktów, wybierz odpowiedni typ faktów, a następnie wybierz pozycję Usuń wystąpienie.
Aby dodać utworzonego twórcę faktów, w oknie Fact Creators (Twórcy faktów ) wybierz pozycję Dodaj.
Gdy wszystko będzie gotowe, wybierz pozycję Testuj.
W oknie Dane wyjściowe są wyświetlane dane wyjściowe śledzenia testu zestawu reguł.
Otwórz menu skrótów dla okna danych wyjściowych testu i wybierz opcję zapisywania, czyszczenia, zaznaczania lub kopiowania tekstu wyjściowego, aby można było przejrzeć wyniki.
W poniższej tabeli opisano polecenia okna danych wyjściowych, których można użyć do pracy z tekstem wyjściowym:
Zadanie Polecenie skrótu Wyczyść cały tekst z okna Dane wyjściowe. Wyczyść wszystko Skopiuj zaznaczony tekst w oknie Dane wyjściowe do schowka. kopia Zaznacz cały tekst w oknie Dane wyjściowe. Wybierz wszystko Zapisz tekst zawarty w oknie Dane wyjściowe w określonym pliku. Zapisz w pliku
Dane wyjściowe śledzenia testowego zestawu reguł
W tej sekcji opisano informacje i działania śledzenia zawarte w śladzie podczas testowania zestawu reguł przy użyciu narzędzia Microsoft Rules Composer. Dane wyjściowe śledzenia mogą zawierać następujące typy instrukcji:
- Działanie faktów
- Ocena warunku
- Aktualizacja programu
- Reguła została wyzwolona
Działanie faktów
To działanie wskazuje zmiany faktów w pamięci roboczej aparatu. W poniższym przykładzie przedstawiono przykładowy wpis działania faktów:
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
W poniższej tabeli opisano informacje opisane w tym wpisie:
Produkt | opis |
---|---|
Identyfikator wystąpienia aparatu reguł | Unikatowy identyfikator wystąpienia RuleEngine , który udostępnia środowisko wykonywania dla wyzwalania reguły. |
Nazwa zestawu reguł | Nazwa zestawu reguł. |
Operacja | Następujące typy operacji mogą wystąpić w działaniu faktów: - Potwierdzenie: fakt jest dodawany do pamięci roboczej. Uwaga: Jeśli typ asertywnego faktu nie pasuje do żadnego z typów używanych w zestawie reguł, funkcja Assert wyświetla błąd "Assert – Fact Unrecognized". - Aktualizacja: reguła aktualizuje fakt, który następnie musi zostać ponownie przesłany do aparatu w celu ponownej oceny na podstawie nowych danych i stanu. - Wycofaj: fakt jest usuwany z pamięci roboczej. |
Typ obiektu | Typ faktu dla określonego działania: - TypedXmlDocument Asercja jest wyświetlana zarówno dla wystąpień nadrzędnych, jak i podrzędnych TypedXmlDocument . |
Identyfikator wystąpienia obiektu | Unikatowy identyfikator wystąpienia dla odwołania do faktów. |
Ocena warunku
To działanie wskazuje wynik oceny poszczególnych predykatów. W poniższym przykładzie przedstawiono przykładowy wpis oceny warunku:
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
W poniższej tabeli opisano informacje opisane w tym wpisie:
Produkt | opis |
---|---|
Wyrażenie testowe | Proste wyrażenie jednoargumentowe lub binarne w regule. |
Lewa wartość operandu | Wartość terminu po lewej stronie wyrażenia. |
Prawa wartość operandu | Wartość terminu po prawej stronie wyrażenia. |
Wynik testu | Wynik z oceny, czyli prawda lub fałsz. |
Aktualizacja programu
To działanie wskazuje reguły, które są dodawane do programu aparatu reguł w celu późniejszego wykonania. W poniższym przykładzie przedstawiono przykładowy wpis aktualizacji programu:
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
W poniższej tabeli opisano informacje opisane w tym wpisie:
Produkt | opis |
---|---|
Operacja | Operacja, która dodaje lub usuwa reguły z porządku obrad. |
Nazwa reguły | Nazwa reguły, która jest dodawana lub usuwana z porządku obrad. |
Kryteria rozwiązywania konfliktów | Priorytet reguły, która określa względną kolejność wykonywania akcji i gdzie najpierw są wykonywane akcje o wyższym priorytcie. |
Reguła została wyzwolona
To działanie wskazuje wykonywanie akcji reguły. W poniższym przykładzie przedstawiono wyzwolony wpis reguły:
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
Funkcja Update
W tym przykładzie przedstawiono przykładową regułę "InventoryCheck" i regułę "Ship" w przykładowym zestawie reguł o nazwie "Order". Gdy reguła zostanie najpierw sprawdzona, warunek skojarzony z regułą "Wysyłka" ma wartość False. Jednak gdy reguła "InventoryCheck" zostanie wyzwolona, pole InventoryAvailable wzamówieniu zostanie zmienione, a polecenie Update zostanie wystawione dla aparatu dla "obiektu Order", co powoduje ponowne oszacowanie reguły "Wysyłka". Tym razem warunek ma wartość True, a reguła "Ship" jest uruchamiana.
Uwaga
Jeśli reguły są niepoprawnie zapisywane, tworzenie łańcuchów dalej za pomocą funkcji Update może spowodować nieskończoną pętlę. W tym przypadku podczas testowania zestawu reguł w narzędziu Microsoft Rules Composer zostanie wyświetlony komunikat o błędzie z tekstem "Aparat reguł wykrył pętlę wykonywania".
Reguła kontrolna spisu
IF Inventory.AllocateInventory == True
THEN Order.InventoryAvailable == True
Update(Order)
Reguła wysyłki
IF Order.InventoryAvailable == True
THEN Shipment.ShipOrder
Wyjście
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
Przykłady danych wyjściowych śledzenia testowego zestawu reguł
W tej sekcji przedstawiono przykłady pokazujące dane wyjściowe testu zestawu reguł dla różnych typów faktów.
Typ faktów klasy platformy .NET
W tym przykładzie jest przykładowa reguła o nazwie "TestRule1" w zestawie reguł o nazwie "LoanProcessing":
IF test.get_ID > 0
THEN <do something>
Wyjście
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
Typ faktu TypedXmlDocument
W tym przykładzie pokazano, że jednostka TypedXmlDocument z typem dokumentu o nazwie Microsoft.Samples.BizTalk.LoansProcessor.Case jest potwierdzana w a aparatu reguł. Na podstawie wartości selektora XPath zdefiniowanej w regule aparat tworzy i potwierdza podrzędną jednostkę TypedXmlDocument o typie Microsoft.Samples.BizTalk.LoansProcessor.Case:/Root/EmploymentType na podstawie typu dokumentu i ciągu selektora. Ta podrzędna jednostka TypedXmlDocument zwraca wartość True w warunku, powodując aktualizację programu i wyzwalanie reguły. Jednostki nadrzędne i podrzędne TypedXmlDocument są następnie wycofane.
W tym przykładzie pokazano przykładową regułę o nazwie "TestRule1" w zestawie reguł o nazwie "LoanProcessing":
IF Microsoft.Samples.BizTalk.LoansProcessor.Case:/Root/EmploymentType.TimeInMonths >= 4
THEN <do something>
Wyjście
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