Freigeben über


Externalisierte Richtlinienaktivität in .NET Framework 4.5

Das Beispiel Rules-ExternalizedPolicy4 veranschaulicht, wie die ExternalizedPolicy4-Aktivität das direkte Ausführen vorhandener WF 3.5-RuleSet-Objekte (.NET Framework 3.5 Windows Workflow Foundation) in .NET Framework 4.6.1 Windows Workflow Foundation (WF 4.5) ermöglicht, indem die im Lieferumfang von WF 3.5 enthaltene Regel-Engine verwendet wird. Mit dieser Aktivität können Sie alle vorhandenen WF 3.5 RuleSet-Elemente öffnen und ausführen. Weitere Informationen zur WF 3.5-Regel-Engine als Bestandteil von Windows Workflow Foundation finden Sie unter Einführung in die Regel-Engine von Windows Workflow Foundation. Weitere Informationen zur Migration von Regeln zu WF in .NET Framework 4.6.1 finden Sie im Leitfaden zur Migration.

Projekte in diesem Beispiel

Projektname BESCHREIBUNG Hauptdateien
ExternalizedPolicy4 Enthält die ExternalizedPolicy4-Aktivität und ihren WF 4.5-Designer. ExternalizedPolicy4.cs: Aktivitätsdefinition.

ExternalizedPolicy4Designer.xaml: Benutzerdefinierter Designer für die ExternalizedPolicy4-Aktivität. Er verwendet den Regeleditor (RuleSetDialog) der WF 3.5-Regel-Engine.
ImperativeCodeClientSample Beispielclientanwendung, die einen Workflow mithilfe einer ExternalizedPolicy4-Anwendung mit obligatorischem C#-Code konfiguriert und ausführt (kein Designer verwendet). ApplyDiscount.rules: Datei mit WF-Regeldefinitionen.

Order.cs: Typ, der einen Kundenauftrag repräsentiert. Regeln werden auf Objekte dieses Typs angewendet.

Program.cs: Konfiguriert und führt einen Workflow aus, der eine Policy4-Aktivität enthält, um die in „ApplyDiscount.rules“ definierten Regeln auf Instanzen von Auftragsobjekten anzuwenden.

App.config: Die Konfigurationsdatei mit dem Pfad der Regeldatei.
DesignerClientSample Beispielclientanwendung, die einen Workflow mit einer ExternalPolicy4-Anwendung im WF-Designer konfiguriert und ausführt. Sequence1.xaml: Sequenzieller Workflow, der eine Policy4-Aktivität verwendet, um Regelauswertungen durchzuführen.

Program.cs: Führt eine Instanz des in „Sequence1.xaml“ definierten Workflows aus.

Die ExternalizedPolicy4-Aktivität

Die ExternalizedPolicy4-Aktivität ist eine NativeActivity, mit der die Ausführung von RuleSet-Objekten in WF 3.5 innerhalb von WF 4.5-Workflows ermöglicht wird. Das folgende Beispiel ist eine vereinfachte Definition des öffentlichen Objektmodells der Aktivität.

public class ExternalizedPolicy4Activity<TResult>: CodeActivity
{
    public string RulesFilePath

    public string RuleSetName

    [RequiredArgument]
    public InArgument<T> TargetObject

    [RequiredArgument]
    public OutArgument<T> ResultObject

    public OutArgument<ValidationErrorCollection> ValidationErrors
}
Eigenschaft Beschreibung
RuleSetFilePath Pfad zur .NET Framework 3.5 RuleSet Datei, die beim Ausführen der Aktivität ausgewertet werden soll.
RuleSetName Name des RuleSet, der in der RULES-Datei verwendet werden soll.
TargetObject Das Objekt, für das die Rule-Objekte im RuleSet ausgewertet werden.
ResultObject Das Objekt, das sich nach der Anwendung der Regeln ergibt. (Die Regeln werden zum Beispiel auf das Input-Argument angewendet, und das Ergebnis wird im Result-Argument gespeichert.)
ValidationError Die Liste der Validierungsfehler, die von der WF 3.5-Regel-Engine beim Überprüfen des RuleSet für das Zielobjekt vor der Ausführung zurückgegeben wurde.

ExternalizedPolicy4-Aktivitätsdesigner

Mit dem ExternalizedPolicy4-Designer können Sie eine Aktivität zur Verwendung eines vorhandenen RuleSet konfigurieren, ohne dass Sie Code schreiben müssen. Geben Sie den Pfad an, in dem sich die RULES-Datei befindet, und legen Sie den zu verwendenden RuleSet-Namen fest. Sie können außerdem das RuleSet ändern. Nach dem Erstellen der Projektmappe befindet sich dies im Abschnitt Microsoft.Samples.Activities.Rules. Mit dem Designer können Sie eine RULES-Datei und ein RuleSet auswählen. Durch Klicken auf die Schaltfläche Regelsatz bearbeiten wird der WF 3.5 RuleSetDialog angezeigt. Dieses Dialogfeld ist der neu gehostete WF 3.5-Regeleditor. Es wird verwendet, um die von der ExternalizedPolicy4-Aktivität ausgeführten Regeln anzuzeigen und zu bearbeiten.

Policy4 und ExternalPolicy4

Die Richtlinienaktivität ermöglicht es Ihnen, einen .NET Framework 3.5-Regelsatz in einem WF 4.5-Workflow zu erstellen und auszuführen. Das RuleSet wird inline in der XAML-Definition der Policy4-Aktivität serialisiert. Im ExternalizedPolicy4-Beispiel wird gezeigt, wie ein vorhandenes externes RuleSet (enthalten in einer RULES-Datei) verwendet wird.

Verwenden dieses Beispiels

Zum Ausführen dieses Beispiels ist keine spezielle Einrichtung erforderlich. Öffnen Sie die Projektmappe in Visual Studio, und drücken Sie dann F5, um die Anwendung auszuführen.

Dieses Beispiel umfasst zwei Clientanwendungen: ImperativeCodeClientSample und DesignerClientSample. Der ImperativeCodeClientSample-Client zeigt, wie die ExternalizedPolicy4-Aktivität mit obligatorischem C#-Code konfiguriert und ausgeführt wird. Das DesignerClientSample zeigt, wie die ExternalizedPolicy4-Aktivität mithilfe des Designers konfiguriert und ausgeführt wird.

So führen Sie die ImperativeCodeClientSample-Anwendung aus

  1. Öffnen Sie mit Visual Studio die Projektmappendatei Policy4sample.sln.

  2. Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf das Projekt ImperativeCodeClientSample, und wählen Sie dann Als Startprojekt festlegen aus.

  3. Drücken Sie zum Ausführen des Projekts STRG+F5.

So führen Sie die DesignerClientSample-Anwendung aus

  1. Öffnen Sie mit Visual Studio die Projektmappendatei Policy4sample.sln.

  2. Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf das Projekt DesignerClientSample, und wählen Sie dann Als Startprojekt festlegen aus.

  3. Drücken Sie STRG+UMSCHALT+B, um das Projekt zu kompilieren.

  4. Drücken Sie STRG+F5, um das Projekt auszuführen.