Udostępnij za pośrednictwem


Wykonywanie zaawansowanych zadań dotyczących zestawów reguł za pomocą 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.

W tym przewodniku opisano bardziej zaawansowane operacje, które można wykonywać na zestawach reguł w narzędziu Microsoft Rules Composer.

Wymagania wstępne

  • Pobierz i zainstaluj program Microsoft Rules Composer.

  • Plik XML zawierający zestaw reguł, nad którym chcesz pracować.

Kopiowanie wersji zestawu reguł

Możesz utworzyć kopię istniejącej wersji zestawu reguł, ale z innym numerem wersji.

  1. Otwórz program Microsoft Rules Composer. W oknie Eksplorator zestawu reguł otwórz menu skrótów zestawu reguł i wybierz pozycję Kopiuj.

  2. Otwórz menu skrótów zestawu reguł i wybierz pozycję Wklej wersję zestawu reguł.

    Narzędzie Microsoft Rules Composer tworzy nową wersję zestawu reguł z tymi samymi elementami co skopiowana wersja, ale z inną liczbą.

    Uwaga

    Jeśli zaktualizujesz zestaw .NET użyty do podania faktów w zestawie reguł, pamiętaj, aby zaktualizować odwołania wersji zestawu reguł do tego zestawu. Aby uzyskać więcej informacji, zobacz Update .NET assembly references (Aktualizowanie odwołań do zestawów .NET).

Tworzenie pustej wersji zestawu reguł

Po dodaniu reguł do wersji zestawu reguł można utworzyć nową pustą wersję zestawu reguł z innym numerem i zapisać wersję, aby pracować później.

  1. Otwórz program Microsoft Rules Composer. Z menu skrótów zestawu reguł wybierz pozycję Dodaj nową wersję.

    Narzędzie Microsoft Rules Composer tworzy nową pustą wersję zestawu reguł z inną liczbą.

  2. Otwórz menu skrótów nowego zestawu reguł, a następnie wybierz pozycję Zapisz.

Teraz możesz skopiować reguły z innych wersji zestawu reguł i wkleić je do nowej wersji.

Przekazywanie typów faktów do zestawu reguł

Chociaż nie można bezpośrednio określić typu zwracanego dla zestawu reguł, można przekazać jeden z następujących typów faktów do zestawu reguł, zestaw reguł zmienia wartość faktu na true lub false, a następnie sprawdza wartość właściwości lub elementu/kolumny po wykonaniu zestawu reguł:

  • Obiekt .NET, który ma właściwość o Boolean typie
  • Dokument XML, który ma element z Boolean typem

Konfigurowanie programu pobierania faktów dla zestawu reguł

W przypadku korzystania z programu pobierania faktów z zestawem reguł można przechowywać fakty, które nie są często zmieniane, tak aby przed pierwszym cyklem wykonywania aplikacji hosta. W ten sposób można pobrać te fakty z magazynu, przedstawić je raz aparatowi reguł do buforowania i użyć ich ponownie w wielu cyklach wykonywania. Aby uzyskać więcej informacji, zobacz Tworzenie twórców faktów i elementów pobierania.

Istnieją dwa sposoby kojarzenia elementu pobierania faktów z zestawem reguł:

  • Ręcznie wybierz moduł pobierania faktów dla wersji zestawu reguł w programie Microsoft Rules Composer.

  • Programowo przy użyciu RuleSetExecutionConfiguration obiektu .

Uwaga

Można skojarzyć tylko jedną implementację modułu pobierania faktów z wersją zestawu reguł.

Ręczne wybieranie elementu pobierania faktów dla zestawu reguł

  1. Otwórz program Microsoft Rules Composer. W Eksploratorze RuleSet wybierz wersję zestawu reguł, którą chcesz skojarzyć z modułem pobierania faktów.

  2. W oknie Właściwości wybierz wiersz właściwości FactRetriever, a następnie wybierz przycisk wielokropka (...), aby znaleźć i wybrać istniejący obiekt modułu pobierania faktów.

    Uwaga

    Przycisk wielokropka (...) nie jest wyświetlany do momentu wybrania wiersza FactRetriever w oknie Właściwości .

Wywoływanie podrzędnego zestawu reguł z nadrzędnego zestawu reguł

W tym zadaniu użyj jednej z następujących metod:

  • Wywołaj metodę Ruleset.Execute bezpośrednio z nadrzędnego zestawu reguł.

  • Z nadrzędnego zestawu reguł wywołaj metodę składnika pomocnika .NET, który opakowuje metodę Ruleset.Execute .

    Przy użyciu drugiej metody można dodać kod przetwarzania wstępnego i przetwarzania po jego przetwarzaniu Ruleset.Execute do metody . Można na przykład utworzyć wszystkie fakty wymagane z podrzędnego zestawu reguł w ramach tej metody otoki. W poniższych sekcjach przedstawiono przykład dla każdej metody.

Wywoływanie metody Ruleset.Execute bezpośrednio z nadrzędnego zestawu reguł

Ta sekcja zawiera ogólne kroki wywoływania podrzędnego zestawu reguł bezpośrednio z nadrzędnego zestawu reguł przy użyciu Ruleset.Execute metody . Poniższa procedura przedstawia kroki dodawania Ruleset.Execute metody jako akcji do nadrzędnego zestawu reguł przekazującego dokument XML jako fakt do podrzędnego zestawu reguł.

Uwaga

W tym przykładowym scenariuszu dokument XML jest przesyłany jako fakt do nadrzędnego zestawu reguł. Ten dokument jest przekazywany jako fakt do podrzędnego zestawu reguł. Można jednak wywołać metodę .NET, która zamiast tego tworzy fakty dla podrzędnego zestawu reguł.

  1. Otwórz program Microsoft Rules Composer. W oknie Eksplorator faktów wybierz kartę Klasy platformy .NET.

  2. Otwórz menu skrótów dla zestawów platformy .NET, a następnie wybierz pozycję Przeglądaj.

  3. Z listy Zestawy platformy .NET wybierz pozycję Microsoft.RuleEngine, a następnie wybierz przycisk OK.

  4. Rozwiń pozycję Zestaw reguł i przeciągnij element Execute(Object facts) lub Execute(Object facts, IRuleSetTrackingInterceptor trackingInterceptor) do okienka THEN.

  5. Wybierz węzeł Schematy XML, otwórz menu skrótów schematów, a następnie wybierz pozycję Przeglądaj.

  6. Wybierz schemat dokumentu XML, który chcesz przekazać jako fakt, a następnie wybierz pozycję Otwórz.

  7. Aby przekazać dokument XML przekazany do nadrzędnego zestawu reguł jako fakt do podrzędnego zestawu reguł, przeciągnij element <schema-name.xsd> do pierwszego argumentu w metodzie Ruleset.Execute.

  8. Jeśli używasz metody Execute , która nie wykonuje metody IRuleSetTrackingInterceptor jako drugiego argumentu, pomiń poniższe kroki.

  9. Wybierz kartę Klasy platformy .NET i przeciągnij element DebugTrackingInterceptor w pliku Microsoft.RuleEngine do drugiego argumentu metody Ruleset.Execute .

    Uwaga

    W przypadku wykonania tej akcji klient musi przekazać wystąpienie klasy DebugTrackingInterceptor jako fakt do nadrzędnego zestawu reguł, który następnie przekazuje wystąpienie jako fakt do podrzędnego zestawu reguł. Zamiast tego możesz przeciągnąć konstruktor klasy DebugTrackingInterceptor , aby wystąpienie zostało automatycznie utworzone.

Modyfikowanie aplikacji klienckiej wywołującej nadrzędny zestaw reguł

Klient, który wywołuje nadrzędny zestaw reguł tworzy wystąpienie klasy Reguły z nazwą podrzędnego zestawu reguł jako parametrem i przekazuje to wystąpienie jako fakt do nadrzędnego zestawu reguł wraz z innymi faktami. Poniższy przykładowy kod ilustruje tę akcję:

DebugTrackingInterceptor dti = new DebugTrackingInterceptor("RulesetTracking.txt");
Ruleset Ruleset = new Ruleset("ParentRuleset");
object[] facts = new object[3];
facts[0] = txd;
facts[1] = new Ruleset("ChildRuleset");
facts[2] = new DebugTrackingInterceptor("RulesetTracking2.txt");
Ruleset.Execute(facts, dti);
Ruleset.Dispose();

Jeśli klient jest orkiestracją BizTalk, może być konieczne umieszczenie kodu w kształcie wyrażenia w celu utworzenia faktów, a następnie przekazanie faktów jako parametrów do kształtu Reguły wywołań.

Wywoływanie metody otoki platformy .NET z nadrzędnego zestawu reguł

W tej sekcji przedstawiono ogólne kroki wywoływania metody .NET, która opakowuje wywołanie metody Ruleset.Execute z nadrzędnego zestawu reguł.

Tworzenie klasy .NET narzędzia

  1. Utwórz projekt biblioteki klas platformy .NET. Dodaj klasę do projektu.

  2. Dodaj metodę statyczną, która wywołuje Ruleset.Execute metodę w celu wywołania zestawu reguł, którego nazwa jest przekazywana jako parametr, na przykład, jak pokazano w poniższym przykładowym kodzie:

    public static void Execute(string RulesetName, TypedXmlDocument txd)
    {
        DebugTrackingInterceptor dti = new   DebugTrackingInterceptor("RulesetTracking.txt");
        Ruleset Ruleset = new Ruleset("ParentRuleset");
        object[] facts = new object[3];
        facts[0] = txd;
        facts[1] = new Ruleset("ChildRuleset");
        facts[2] = new DebugTrackingInterceptor("RulesetTracking2.txt");
        Ruleset.Execute(facts, dti);
        Ruleset.Dispose();
    }
    

    Klient wywołuje nadrzędny zestaw reguł, a nadrzędny zestaw reguł wywołuje metodę pomocnika, która wywołuje podrzędny zestaw reguł, na przykład, jak pokazano w poniższym przykładowym kodzie klienta:

    facts[0] = txd;
    facts[1] = new RulesetExecutor(txd);
    
    // Call the first or parent ruleset.
    Ruleset Ruleset = new Ruleset(RulesetName);
    DebugTrackingInterceptor dti = new DebugTrackingInterceptor("RulesetTracking.txt");
    Ruleset.Execute(facts, dti);
    Ruleset.Dispose();
    

    Uwaga

    Jeśli metoda jest metodą wystąpienia, klient musi utworzyć wystąpienie klasy pomocnika .NET i przekazać to wystąpienie jako fakt do nadrzędnego zestawu reguł.

Analizowanie wielu obiektów o tym samym typie w regule

W wielu scenariuszach tworzysz regułę biznesową względem typu i oczekujesz, że aparat będzie oddzielnie analizować i działać na każdym wystąpieniu typu, który jest aserowany do aparatu. Jednak w niektórych scenariuszach aparat ma jednocześnie analizować wiele wystąpień, które mają ten sam typ. Na przykład poniższa przykładowa reguła używa wielu wystąpień klasy FamilyMember :

IF FamilyMember.Role == Father
AND FamilyMember.Role == Son
AND FamilyMember.Surname == FamilyMember.Surname
THEN FamilyMember.AddChild(FamilyMember)

Reguła identyfikuje wiele wystąpień FamilyMember, gdzie jeden jest Ojcem, a drugi jest Synem. Jeśli wystąpienia są powiązane przez nazwisko, reguła dodaje wystąpienie Syna do kolekcji dzieci w wystąpieniu Ojca . Jeśli aparat oddzielnie analizuje każde wystąpienie FamilyMember, reguła nigdy nie jest wyzwalana, ponieważ w tym scenariuszu familyMember ma tylko jedną rolę, Ojciec lub Syn.

Dlatego w tym scenariuszu należy wskazać, że aparat analizuje wiele wystąpień razem w regule i potrzebujesz sposobu odróżnienia tożsamości każdego wystąpienia w regule. Możesz użyć pola Identyfikator wystąpienia, aby zapewnić tę funkcję. To pole jest dostępne w oknie Właściwości po wybraniu faktu w Eksploratorze faktów.

Ważne

Jeśli zdecydujesz się użyć pola Identyfikator wystąpienia, pamiętaj, aby zmienić jego wartość przed przeciągnięciem faktu lub elementu członkowskiego do reguły.

Gdy używasz pola Identyfikator wystąpienia, reguła zostanie ponownie skompilowana. Dla tych argumentów reguły używających wystąpienia Son klasy FamilyMember zmień wartość identyfikatora wystąpienia z wartości domyślnej 0 na 1. Po zmianie wartości Identyfikator wystąpienia z wartości 0 i przeciągnięciu faktu lub elementu członkowskiego do Edytora reguł wartość Identyfikator wystąpienia jest wyświetlana w regule następującej jako klasa, na przykład:

IF FamilyMember.Role == Father
AND FamilyMember(1).Role== Son
AND FamilyMember.Surname == FamilyMember(1).Surname
THEN FamilyMember.AddChild(FamilyMember(1))

Załóżmy teraz, że wystąpienie Ojca i wystąpienie Syna są potwierdzane w aucie. Aparat ocenia regułę względem różnych kombinacji tych wystąpień. Zakładając, że wystąpienie Ojca i Syna ma takie samo nazwisko, wystąpienie Syna jest dodawane do wystąpienia Ojca zgodnie z oczekiwaniami.

Uwaga

Pole Identyfikator wystąpienia jest używane tylko w kontekście określonej oceny reguły. To pole nie jest umieszczone w wystąpieniu obiektu w ramach wykonywania zestawu reguł i nie jest związane z kolejnością używaną dla obiektów assesrting. Każde wystąpienie obiektu jest oceniane we wszystkich argumentach reguły dla tego typu.