Udostępnij za pośrednictwem


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ł

  1. 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.

  2. 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ł.

  3. 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.

  4. Aby usunąć wystąpienie faktów, wybierz odpowiedni typ faktów, a następnie wybierz pozycję Usuń wystąpienie.

  5. Aby dodać utworzonego twórcę faktów, w oknie Fact Creators (Twórcy faktów ) wybierz pozycję Dodaj.

  6. Gdy wszystko będzie gotowe, wybierz pozycję Testuj.

    W oknie Dane wyjściowe są wyświetlane dane wyjściowe śledzenia testu zestawu reguł.

  7. 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