Auftragsverarbeitung mit Richtlinie
Dieses Thema gilt für Windows Workflow Foundation 4.
Das Beispiel Auftragsverarbeitungsrichtlinie veranschaulicht einige der in .NET Framework, Version 3.5 von Windows Workflow Foundation (WF) eingeführten Schlüsselfeatures. Die folgende Funktionalität ist für das WF-Regelmodul neu:
Unterstützung für Operatorüberladung.
Unterstützung für den new-Operator, mit dem die Benutzer neue Objekte und Arrays von WF-Regeln erstellen können.
Unterstützung von Erweiterungsmethoden, um die Benutzerfreundlichkeit beim Aufrufen der Erweiterungsmethoden von WF-Regeln mit den C#-Codierungsstilen kompatibel zu machen.
Hinweis: |
---|
Zum Erstellen und Ausführen dieses Beispiels muss .NET Framework, Version 3.5 installiert sein. Zum Öffnen des Projekts und der Projektmappendateien ist Visual Studio 2010 erforderlich. |
Das Beispiel veranschaulicht ein OrderProcessingPolicy-Projekt, in dem eine Kundenbestellung eingegeben wird, die aus einer nummerierten Liste mit verfügbaren Elementen und einer Postleitzahl besteht. Die Bestellung wird erfolgreich verarbeitet, wenn beide Einträge richtig sind. Andernfalls erstellt die Richtlinie Fehlerobjekte, wobei ein überladener +
-Operator sowie eine vordefinierte Erweiterungsmethode verwendet werden, um den Benutzer über die Fehler zu informieren.
Hinweis: |
---|
Weitere Informationen über zu Erweiterungsmethoden finden Sie in der C# Version 3.0-Spezifikation (Seite ist möglicherweise nur in englischer Sprache verfügbar). |
Das Beispiel besteht aus den folgenden Projekten:
OrderErrorLibrary
OrderErrorLibrary ist eine Klassenbibliothek, mit der die
OrderError
-Klasse und dieOrderErrorCollection
-Klasse definiert werden. EineOrderError
-Instanz wird erstellt, wenn eine ungültige Eingabe gemacht wird. Die Bibliothek bietet auch eine Erweiterungsmethode in derOrderErrorCollection
-Klasse, mit der dieErrorText
-Eigenschaft für alleOrderError
-Objekte in derOrderErrorCollection
ausgegeben wird.OrderProcessingPolicy
Das OrderProcesssingPolicy-Projekt ist eine WF-Konsolenanwendung, die eine einzelne
PolicyFromFile
-Aktivität definiert. Die Aktivität weist folgende Regeln auf:invalidItemNum
Diese Regel überprüft, dass die Artikelnummer zwischen 1 und 6 liegt. Wenn die Artikelnummer innerhalb des gültigen Bereichs liegt, führt die Regel keine Aktion aus (mit Ausnahme des Druckens auf der Konsole). Wenn die Artikelnummer nicht zwischen 1 und 6 liegt, geht die invalidItemNum-Regel wie folgt vor:
Sie erstellt ein neues
OrderError
-Objekt und übergibt ihm die eingegebene Artikelnummer. Außerdem legt sie dieErrorText
-Eigenschaft und dieCustomerName
-Eigenschaft für das Objekt fest.Sie erstellt ein
invalidItemNumErrorCollection
-Objekt.Sie fügt die neu erstellte
OrderError
-Instanz derinvalidItemNumErrorCollection
hinzu.Dies weist auf die Unterstützung des new-Operators hin, mit dem Objekte in Regeln instanziiert werden können.
invalidZip
Diese Regel überprüft, ob die Postleitzahl 5 Ziffern hat und im Bereich 600 bis 99998 liegt. Wenn die Postleitzahl innerhalb des gültigen Bereichs liegt, führt die Regel keine Aktion aus (mit Ausnahme der Ausgabe auf der Konsole). Falls die Postleitzahl weniger als 5 Stellen aufweist und nicht im Bereich 00600 bis 99998 liegt, geht die invalidZip-Regel wie folgt vor:
Sie erstellt ein
OrderError
-Objekt und übergibt ihm die eingegebene Postleitzahl. Außerdem legt sie dieErrorText
-Eigenschaft und dieCustomerName
-Eigenschaft für das Objekt fest.Sie erstellt ein
invalidZipCodeErrorCollection
-Objekt.Sie fügt die neu erstellte
OrderError
-Instanz der neu erstellteninvalidZipCodeErrorCollection
hinzu.Diese Regel veranschaulicht die Unterstützung des new-Operators, mit dem Objekte in Regeln instanziiert werden können.
displayErrors
Bei dieser Regel wird überprüft, ob von den vorherigen beiden Regeln in den beiden
OrderErrorCollection
-ObjekteninvalidItemNumErrorCollection
undinvalidIZipCodeErrorCollection
Fehler hinzugefügt wurden. Wenn es Fehler (entweder dieinvalidItemNumErrorCollection
oder dieinvalidZipCodeErrorCollection
ist nicht NULL) gegeben hat, geht die Regel wie folgt vor:Sie ruft den überladenen
+
-Operator zum Kopieren des Inhalts derinvalidItemNumErrorCollection
und derinvalidZipCodeErrorCollection
an eineinvalidOrdersCollection
OrderErrorCollection
-Instanz auf.Sie ruft die
PrintOrderErrors
-Erweiterungsmethode für dieinvalidOrdersCollection
auf und gibt dieErrorText
-Eigenschaft für alleorderError
-Objekte in derinvalidOrdersCollection
aus.
Der überladene +
-Operator der OrderErrorCollection
wird in der OrderErrorCollection
-Klasse im OrderErrorLibrary
-Projekt definiert. Er verfügt über zwei OrderErrorCollection
-Objekte und kombiniert diese in einem OrderErrorCollection
-Objekt.
Die PrintOrderErrors
-Erweiterungsmethode wird auch im OrderErrorLibrary
-Projekt definiert. Erweiterungsmethoden sind ein neues C#-Feature, mit dem Entwickler dem öffentlichen Vertrag eines vorhandenen CLR-Typs neue Methoden hinzufügen können, ohne davon eine Klasse ableiten oder den ursprünglichen Typ neu kompilieren zu müssen.
Beim Ausführen eines Beispiels werden Sie zur Eingabe eines Namens, der Artikelnummer des zu erwerbenden Artikels und einer Postleitzahl aufgefordert. Diese Informationen werden dann von den in der Richtlinienaktivität definierten Regeln überprüft. Im Folgenden finden Sie eine Beispielausgabe des Programms.
Please enter your name: John
What would you like to purchase?
(1) Vista Ultimate DVD
(2) Vista Ultimate Upgrade DVD
(3) Vista Home Premium DVD
(4) Vista Home Premium Upgrade DVD
(5) Vista Home Basic DVD
(6) Vista Home Basic Upgrade DVD
Please enter an item number: 1
Please enter your 5-Digit zip code: 98102
Executing Rule: invalidItemNum
Executing Rule: invalidZip
Executing Rule: displayErrors
Thank you for your order, it has been processed.
Workflow Completed
Another Order? (Y/N): y
Please enter your name: Joel
What would you like to purchase?
(1) Vista Ultimate DVD
(2) Vista Ultimate Upgrade DVD
(3) Vista Home Premium DVD
(4) Vista Home Premium Upgrade DVD
(5) Vista Home Basic DVD
(6) Vista Home Basic Upgrade DVD
Please enter an item number: 8
Please enter your 5-Digit zip code: 0000
Executing Rule: invalidItemNum
Executing Rule: invalidZip
Executing Rule: displayErrors
Your order contains the following error(s)
Error: No item number found. Please choose an available item.
Error: Invalid zip code. Please choose a zip code between 00600 and 99998.
Workflow Completed
Another Order? (Y/N): n
So richten Sie das Beispiel ein, erstellen es und führen es aus
Öffnen Sie die Projektdatei OrderProcessingPolicy.sln in Visual Studio.
Es gibt zwei verschiedene Projekte in der Projektmappe: OrderErrorLibrary und OrderProcessingPolicy. Das OrderProcessingPolicy-Projekt verwendet in der OrderErrorLibrary definierte Klassen und Methoden.
Erstellen Sie alle Projekte.
Klicken Sie auf Ausführen.
Hinweis: |
---|
Die Beispiele sind möglicherweise bereits auf dem Computer installiert. Überprüfen Sie das folgende (standardmäßige) Verzeichnis, bevor Sie fortfahren.
<Installationslaufwerk>:\WF_WCF_Samples
Wenn dieses Verzeichnis nicht vorhanden ist, rufen Sie Windows Communication Foundation (WCF) and Windows Workflow Foundation (WF) Samples for .NET Framework 4 auf, um alle Windows Communication Foundation (WCF)- und WF-Beispiele herunterzuladen. Dieses Beispiel befindet sich im folgenden Verzeichnis.
<Installationslaufwerk>:\WF_WCF_Samples\WF\Basic\Rules\Policy\OrderProcessingPolicy
|