Udostępnij za pośrednictwem


Zewnętrzne przybornik zestawu reguł

Zwykle gdy reguły są używane w aplikacji przepływu pracy, reguły są częścią zestawu. W niektórych scenariuszach można zachować zestawy Reguł oddzielnie od zestawu, aby można je było aktualizować bez ponownego kompilowania i wdrażania zestawu przepływu pracy. Ten przykład umożliwia zarządzanie i edytowanie zestawów reguł w bazie danych oraz uzyskiwanie dostępu do tych zestawów reguł z przepływu pracy w czasie wykonywania. Dzięki temu uruchomione wystąpienia przepływu pracy mogą automatycznie uwzględniać zmiany RuleSet.

Przykładowy zestaw reguł zewnętrznych zawiera narzędzie oparte na formularzach systemu Windows, którego można użyć do zarządzania i edytowania wersji ruleSet w bazie danych. Obejmuje również działanie i usługę hosta do wykonywania tych reguł.

Uwaga

Ten przykład wymaga programu Microsoft SQL Server.

Program Visual Studio udostępnia edytor RuleSet w ramach programu Windows Workflow Foundation (WF). Możesz uruchomić ten edytor, klikając Policy dwukrotnie działanie w przepływie pracy; serializuje zdefiniowany obiekt RuleSet do pliku rules skojarzonego z przepływem pracy ( Policy działanie uruchamia wystąpienie RuleSet względem przepływu pracy). Plik reguł jest kompilowany w zestawie jako zasób podczas kompilowania projektu przepływu pracy.

Składniki tego przykładu obejmują:

  • Graficzne narzędzie interfejsu użytkownika RuleSet, za pomocą którego można edytować wersje RuleSet w bazie danych i zarządzać nimi.

  • Usługa RuleSet skonfigurowana w aplikacji hosta i uzyskuje dostęp do elementów RuleSet z bazy danych.

  • Działanie ExternalPolicy , które żąda zestawu RuleSet z usługi RuleSet i uruchamia zestaw RuleSet względem przepływu pracy.

Interakcja składników jest pokazana na poniższej ilustracji. W kolejnych sekcjach opisano każdy składnik.

Diagram showing the External RuleSet Toolkit sample overview.

Narzędzie RuleSet

Na poniższej ilustracji przedstawiono zrzut ekranu narzędzia RuleSet. Z menu Magazyn reguł można załadować dostępne zestawy reguł z bazy danych i zapisać zmodyfikowane zestawy reguł z powrotem do magazynu. Plik konfiguracji aplikacji zawiera parametry połączenia bazy danych dla bazy danych RuleSet. Po uruchomieniu narzędzia automatycznie ładuje zestawy Reguł z skonfigurowanej bazy danych.

Screenshot showing the RuleSet Browser.

Narzędzie RuleSet stosuje główne i pomocnicze numery wersji do zestawów Reguł, co umożliwia jednoczesne przechowywanie i przechowywanie wielu wersji (narzędzie nie zapewnia blokady ani innych funkcji zarządzania konfiguracją oprócz możliwości przechowywania wersji). Za pomocą narzędzia można utworzyć nowe wersje zestawu reguł lub usunąć istniejące wersje. Po kliknięciu przycisku Nowy narzędzie utworzy nową nazwę RuleSet i zastosuje wersję 1.0. Podczas kopiowania wersji narzędzie tworzy kopię wybranej wersji RuleSet, w tym zawarte reguły i przypisuje nowe, unikatowe numery wersji. Te numery wersji są oparte na numerach wersji istniejących zestawów reguł. Nazwy zestawu reguł i numerów wersji można zmienić przy użyciu skojarzonych pól w formularzu.

Po kliknięciu pozycji Edytuj reguły zostanie uruchomiony edytor RuleSet, jak pokazano na poniższej ilustracji:

Screenshot showing the RuleSet Editor.

Jest to ponowne hostowanie okna dialogowego edytora, które jest częścią dodatku Programu Visual Studio programu Windows Workflow Foundation. Zapewnia tę samą funkcjonalność, w tym obsługę funkcji IntelliSense. Reguły są tworzone względem typu docelowego (takiego jak przepływ pracy), który jest skojarzony z elementem RuleSet w narzędziu; Po kliknięciu przycisku Przeglądaj w oknie dialogowym głównego narzędzia zostanie wyświetlone okno dialogowe Selektor przepływu pracy/typu, jak pokazano na rysunku 4.

Workflow /Type Selection

Rysunek 4. Selektor przepływu pracy/typu

Możesz użyć okna dialogowego Selektor przepływu pracy/typu, aby określić zestaw i określony typ w tym zestawie. Ten typ jest typem docelowym, względem którego są tworzone reguły (i uruchamiane). W wielu przypadkach typ docelowy to przepływ pracy lub inny typ działania. Można jednak uruchomić zestaw reguł dla dowolnego typu platformy .NET.

Ścieżka do pliku zestawu i typ name are stored with the RuleSet w bazie danych, aby po pobraniu zestawu RuleSet z bazy danych narzędzie próbowało automatycznie załadować typ docelowy.

Po kliknięciu przycisku OK w oknie dialogowym Selektor przepływu pracy/typu sprawdza on wybrany typ względem elementu RuleSet, aby upewnić się, że typ docelowy zawiera wszystkie elementy członkowskie, do których odwołuje się reguła. Błędy są wyświetlane w oknie dialogowym Błędy walidacji. Możesz kontynuować zmianę pomimo błędów lub kliknąć przycisk Anuluj. W menu Narzędzia w głównym oknie dialogowym narzędzia możesz kliknąć pozycję Weryfikuj, aby ponownie zweryfikować wersję RuleSet względem działania docelowego.

Screenshot showing the Validation Errors dialog.

Z menu Dane w narzędziu można importować i eksportować zestawy reguł. Po kliknięciu przycisku Importuj zostanie wyświetlone okno dialogowe wyboru plików, z którego można wybrać plik reguł. Może to być plik, który początkowo został utworzony w programie Visual Studio. Plik reguł powinien zawierać zserializowane RuleDefinitions wystąpienie, które zawiera kolekcję warunków i kolekcję ruleSets. Narzędzie nie używa kolekcji warunków, ale używa RuleDefinitions formatu reguł w celu umożliwienia interakcji ze środowiskiem programu Visual Studio.

Po wybraniu pliku reguł zostanie wyświetlone okno dialogowe Selektor zestawu reguł. Możesz użyć okna dialogowego, aby wybrać zestawy reguł z pliku, który chcesz zaimportować (wartość domyślna określa wszystkie zestawy reguł). Zestawy reguł w pliku reguł nie mają numerów wersji, ponieważ ich przechowywanie wersji w projekcie WF jest takie samo jak wersja zestawu. Podczas importowania narzędzie automatycznie przypisuje następny dostępny numer wersji głównej (który można zmienić po zaimportowaniu); Przypisane numery wersji można wyświetlić na liście Selektor zestawu reguł.

Dla każdego zestawu reguł importuje narzędzie próbuje zlokalizować skojarzony typ z folderu bin\Debug w lokalizacji pliku reguł (jeśli istnieje), na podstawie elementów członkowskich używanych w zestawie reguł. Jeśli narzędzie znajdzie wiele pasujących typów, próbuje wybrać typ na podstawie dopasowania między nazwą pliku reguł i nazwą typu (na przykład Workflow1 typ odpowiada Workflow1.rules). Jeśli istnieje wiele dopasowań, zostanie wyświetlony monit o wybranie typu. Jeśli ten mechanizm automatycznej identyfikacji nie może zlokalizować pasującego zestawu lub typu, po zaimportowaniu można kliknąć przycisk Przeglądaj w głównym oknie dialogowym narzędzia, aby przejść do skojarzonego typu. Na poniższej ilustracji przedstawiono selektor RuleSet:

Screenshot showing the RuleSet Selector dialog.

Po kliknięciu pozycji Data-Export z menu głównego narzędzia zostanie ponownie wyświetlone okno dialogowe Selektor zestawu reguł, z którego można określić zestawy reguł z bazy danych, które mają zostać wyeksportowane. Po kliknięciu przycisku OK zostanie wyświetlone okno dialogowe Zapisywanie pliku, w którym można określić nazwę i lokalizację wynikowego pliku reguł. Ponieważ plik reguł nie zawiera informacji o wersji, można wybrać tylko jedną wersję zestawu reguł o podanej nazwie RuleSet.

Działanie PolicyFromService

Kod działania PolicyFromService jest prosty. Działa podobnie jak Policy działanie dostarczone z usługą WF, ale zamiast pobierać docelowy element RuleSet z pliku reguł, wywołuje usługę hosta w celu uzyskania wystąpienia RuleSet. Następnie uruchamia element RuleSet względem głównego wystąpienia działania przepływu pracy.

Aby użyć działania w przepływie pracy, dodaj odwołanie do PolicyActivities zestawów i RuleSetService z projektu przepływu pracy. Zapoznaj się z procedurą na końcu tego tematu, aby zapoznać się z omówieniem sposobu dodawania działania do przybornika.

Po umieszczeniu działania w przepływie pracy należy podać nazwę zestawu reguł do uruchomienia. Możesz wprowadzić nazwę jako wartość literału lub powiązać ze zmienną przepływu pracy lub właściwością innego działania. Opcjonalnie możesz wprowadzić numery wersji dla określonego zestawu reguł, które powinny być uruchamiane. Jeśli pozostawisz wartość domyślną 0 dla głównych i pomocniczych numerów wersji, najnowszy numer wersji w bazie danych zostanie automatycznie podany dla działania.

Usługa RuleSet

Usługa jest odpowiedzialna za pobieranie określonej wersji RuleSet z bazy danych i zwracanie jej do działania wywołującego. Jak wspomniano wcześniej, jeśli wartości wersji głównej i pomocniczej przekazane w wywołaniu GetRuleSet to 0, usługa pobiera najnowszą wersję. W tym momencie nie ma buforowania definicji lub wystąpień zestawu reguł; podobnie nie ma żadnych funkcji oznaczania wersji RuleSet jako "wdrożonych" w celu odróżnienia ich od zestawów reguł w toku.

Baza danych, która ma być uzyskiwana przez usługę, powinna być skonfigurowana na hoście przy użyciu pliku konfiguracji aplikacji.

Aby uruchomić narzędzie

  1. Folder, który konfiguruje tabelę RuleSet używaną przez narzędzie, a usługa zawiera plik Setup.sql. Możesz uruchomić plik wsadowy Setup.cmd, aby utworzyć bazę danych reguł w programie SQL Express i skonfigurować tabelę RuleSet.

  2. Jeśli edytujesz plik wsadowy lub Setup.sql i określisz, że nie należy używać programu SQL Express lub umieścić tabelę w bazie danych o nazwie innej niż Rules, pliki konfiguracji aplikacji w narzędziu RuleSet i UsageSample projektach powinny być edytowane przy użyciu tych samych informacji.

  3. Po uruchomieniu skryptu Setup.sql możesz skompilować ExternalRuleSetToolkit rozwiązanie, a następnie uruchomić narzędzie RuleSet z projektu ExternalRuleSetTool.

  4. Rozwiązanie RuleSetToolkitUsageSample aplikacji konsoli sekwencyjnego przepływu pracy zawiera przykładowy przepływ pracy. Przepływ pracy składa się z PolicyFromService działania i dwóch zmiennych oraz orderValuediscount, względem których jest uruchamiany docelowy zestaw reguł.

  5. Aby użyć przykładu, skompiluj RuleSetToolkitUsageSample rozwiązanie. Następnie w menu głównym narzędzia RuleSet kliknij pozycję Data-Import i wskaż plik DiscountRuleSet.rules w folderze RuleSetToolkitUsageSample. Kliknij opcję menu Zapisywanie magazynu reguł, aby zapisać zaimportowany zestaw reguł do bazy danych.

  6. PolicyActivities Ponieważ zestaw jest przywołyny z przykładowego projektu przepływu pracy, PolicyFromService działanie jest wyświetlane w przepływie pracy. Nie jest ona jednak wyświetlana w przyborniku domyślnie. Aby dodać go do przybornika, wykonaj następujące czynności:

    • Kliknij prawym przyciskiem myszy przybornik i wybierz pozycję Wybierz elementy (może to chwilę potrwać).

    • Po wyświetleniu okna dialogowego Wybieranie elementów przybornika kliknij kartę Działania .

    • Przejdź do PolicyActivities zestawu w rozwiązaniu ExternalRuleSetToolkit i kliknij przycisk Otwórz.

    • Upewnij się, że PolicyFromService działanie jest zaznaczone w oknie dialogowym Wybieranie elementów przybornika, a następnie kliknij przycisk OK.

    • Działanie powinno być teraz wyświetlane w przyborniku w kategorii RuleSetToolkitUsageSample Components .

  7. Usługa RuleSet jest już skonfigurowana na hoście aplikacji konsolowej przy użyciu następującej instrukcji w Program.cs.

    workflowRuntime.AddService(new RuleSetService());
    
  8. Usługę można również skonfigurować na hoście przy użyciu pliku konfiguracji. Aby uzyskać szczegółowe informacje, zobacz dokumentację zestawu SDK.

  9. Plik konfiguracji aplikacji jest dodawany do projektu przepływu pracy w celu określenia parametry połączenia, aby baza danych była używana przez usługę. Powinna to być ta sama parametry połączenia używana przez narzędzie RuleSet, które wskazuje bazę danych zawierającą tabelę RuleSet.

  10. Teraz możesz uruchomić RuleSetToolkitUsageSample projekt tak, jak w przypadku dowolnej innej aplikacji konsolowej przepływu pracy. Naciśnij klawisz F5 lub Ctrl+F5 w programie Visual Studio lub uruchom bezpośrednio plik RuleSetToolkitUsageSample.exe.

    Uwaga

    Aby ponownie skompilować przykład użycia, należy zamknąć narzędzie RuleSet, ponieważ narzędzie ładuje przykładowy zestaw użycia.