Dela via


Extern policyaktivitet i .NET Framework 4.5

DetRules-ExternalizedPolicy4 exemplet visar hur externalizedPolicy4-aktiviteten tillåter körning av befintliga .NET Framework 3.5 Windows Workflow Foundation-objekt (WF 3.5) RuleSet i .NET Framework 4.6.1 Windows Workflow Foundation (WF 4.5) direkt med hjälp av regelmotorn som levereras i WF 3.5. Genom att använda den här aktiviteten kan du öppna och köra alla befintliga WF 3.5 RuleSet. Mer information om WF 3.5-regelmotorn som ingår i Windows Workflow Foundation finns i Introduktion till Windows Workflow Foundation Rules Engine. Mer information om hur du migrerar regler till WF i .NET Framework 4.6.1 finns i Migreringsvägledning.

Projekt i det här exemplet

Projektnamn Beskrivning Huvudfiler
ExternalizedPolicy4 Innehåller aktiviteten ExternalizedPolicy4 och dess WF 4.5-designer. ExternalizedPolicy4.cs: aktivitetsdefinition.

ExternalizedPolicy4Designer.xaml: Anpassad designer för externalizedPolicy4-aktivitet. Den använder regelredigeraren (RuleSetDialog) från WF 3.5 Rules Engine.
ImperativeCodeClientSample Exempelklientprogram som konfigurerar och kör ett arbetsflöde med hjälp av ett ExternalizedPolicy4-program med imperativ C#-kod (ingen designer används). ApplyDiscount.rules: Fil med WF-regeldefinitioner.

Order.cs: Typ som representerar en kundorder. Regler tillämpas på objekt av den här typen.

Program.cs: Konfigurerar och kör ett arbetsflöde som har en Policy4-aktivitet för att tillämpa regler som definierats i ApplyDiscount.rules på instanser av Order-objekt.

App.config: Konfigurationsfilen med sökvägen till regelfilen.
DesignerClientSample Exempelklientprogram som konfigurerar och kör ett arbetsflöde med hjälp av ett ExternalPolicy4-program i WF Designer. Sequence1.xaml: Sekventiellt arbetsflöde som använder en Policy4-aktivitet för att utföra regelutvärderingar.

Program.cs: Kör en instans av arbetsflödet som definierats i Sequence1.xaml.

ExternalizedPolicy4-aktiviteten

ExternalizedPolicy4-aktiviteten är en NativeActivity aktivitet som tillåter körning av WF 3.5-objekt RuleSet i WF 4.5-arbetsflöden. Följande exempel är en förenklad definition av aktivitetens offentliga objektmodell.

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
}
Fastighet Beskrivning
Regeluppsättningsfilväg Sökväg till .NET Framework 3.5-filen RuleSet som ska utvärderas när aktiviteten körs.
RuleSetName Namnet på RuleSet som ska användas i .rules-filen.
Målobjekt Objektet som objekten Rule i RuleSet utvärderas mot.
ResultObject Det resulterande objektet efter att reglerna har tillämpats (till exempel tillämpas regler mot argumentet Input och resultatet lagras i argumentet Resultat.
ValidationError Listan över valideringsfel som returneras av WF 3.5-regelmotorn när RuleSet valideras mot målobjektet före körning.

ExternalizedPolicy4 aktivitetsdesigner

Med ExternalizedPolicy4-designern kan du konfigurera en aktivitet för att använda en befintlig RuleSet utan att skriva kod. Ange bara sökvägen där .rules-filen finns och ange det RuleSet namn som du vill använda. Du kan också ändra RuleSet. När du har skapat lösningen finns den i verktygslådan i avsnittet Microsoft.Samples.Activities.Rules. Med designern kan du välja en .rules-fil och en RuleSet. När knappen Redigera regeluppsättning klickas visas WF 3.5 RuleSetDialog . Den här dialogrutan är den omvärdade WF 3.5-regelredigeraren och används för att visa och redigera de regler som externalizedPolicy4-aktiviteten kör.

Policy4 och ExternalPolicy4

Med principaktiviteten kan du skapa och köra en .NET Framework 3.5 RuleSet i ett WF 4.5-arbetsflöde. RuleSet serialiseras inline i XAML-definitionen för aktiviteten Policy4. Exemplet ExternalizedPolicy4 visar hur du använder en befintlig extern RuleSet (som finns i en .rules-fil).

Använd det här exemplet

Ingen särskild konfiguration krävs för att köra det här exemplet. Öppna lösningen i Visual Studio och tryck sedan på F5 för att köra programmet.

Det här exemplet innehåller två klientprogram: ImperativeCodeClientSample och DesignerClientSample. ImperativeCodeClientSample-klienten visar hur du konfigurerar och kör externalizedPolicy4-aktiviteten med C#-imperativ kod. DesignerClientSample visar hur du konfigurerar och kör aktiviteten ExternalizedPolicy4 med hjälp av designern.

Kör ImperativeCodeClientSample-programmet

  1. Använd Visual Studio och öppna Policy4sample.sln lösningsfilen.

  2. Högerklicka på projektet ImperativeCodeClientSample i Solution Explorer och välj sedan Ange som startprojekt.

  3. Om du vill köra projektet trycker du på Ctrl+F5.

Kör programmet DesignerClientSample

  1. Använd Visual Studio och öppna Policy4sample.sln lösningsfilen.

  2. Högerklicka på projektet DesignerClientSample i Solution Explorer och välj sedan Ange som startprojekt.

  3. Tryck på Ctrl+Skift+B för att kompilera projektet.

  4. Kör projektet genom att trycka på Ctrl+F5 .