Freigeben über


Auftragsverarbeitungsrichtlinie

Download sample

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.

Tipp

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

Tipp

Weitere Informationen 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 die OrderErrorCollection-Klasse definiert werden. Eine OrderError-Instanz wird erstellt, wenn eine ungültige Eingabe gemacht wird. Die Bibliothek bietet auch eine Erweiterungsmethode in der OrderErrorCollection-Klasse, mit der die ErrorText-Eigenschaft für alle OrderError-Objekte in der OrderErrorCollection ausgegeben wird.

  • OrderProcessingPolicy

    Das OrderProcesssingPolicy-Projekt ist eine WF-Konsolenanwendung, die eine einzelne PolicyFromFile-Aktivität definiert. Die Aktivität weist drei 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 die ErrorText-Eigenschaft und die CustomerName-Eigenschaft für das Objekt fest.

  • Sie erstellt ein invalidItemNumErrorCollection-Objekt.

  • Sie fügt die neu erstellte OrderError-Instanz der invalidItemNumErrorCollection 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 aufweist und im Bereich 600 bis 99998 liegt. Falls die Postleitzahl innerhalb des gültigen Bereichs liegt, führt die Regel keine Aktion aus (mit Ausnahme des Druckens auf der Konsole). Falls die Länge der Postleitzahl kleiner ist als 5 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 die ErrorText-Eigenschaft und die CustomerName-Eigenschaft für das Objekt fest.

  • Sie erstellt ein invalidZipCodeErrorCollection-Objekt.

  • Sie fügt die neu erstellte OrderError-Instanz der neu erstellten invalidZipCodeErrorCollection 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-Objekten invalidItemNumErrorCollection und invalidIZipCodeErrorCollection Fehler hinzugefügt wurden. Wenn es Fehler (entweder die invalidItemNumErrorCollection oder die invalidZipCodeErrorCollection ist nicht null) gegeben hat, geht die Regel wie folgt vor:

  • Sie ruft den überladenen +-Operator zum Kopieren des Inhalts der invalidItemNumErrorCollection und der invalidZipCodeErrorCollection an eine invalidOrdersCollection OrderErrorCollection-Instanz auf.

  • Sie ruft die PrintOrderErrors-Erweiterungsmethode für die invalidOrdersCollection auf und gibt die ErrorText-Eigenschaft für alle orderError-Objekte in der invalidOrdersCollection 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 eine Unterklasse zu erstellen oder den ursprünglichen Typ neu zu kompilieren.

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

  1. Öffnen Sie die Projektdatei OrderProcessingPolicy.sln in Visual Studio.

  2. Es gibt zwei verschiedene Projekte in der Projektmappe: OrderErrorLibrary und OrderProcessingPolicy. Das OrderProcessingPolicy-Projekt verwendet in der OrderErrorLibrary definierte Klassen und Methoden.

  3. Erstellen Sie alle Projekte.

  4. Klicken Sie auf Ausführen.

Footer image

Copyright © 2007 by Microsoft Corporation. Alle Rechte vorbehalten.