Workflows serialisieren mit der WF4

Workflows die mit WF4 erstellt wurden, werden komplett in XAML (XML Application Markup Language) gespeichert. XAML werden die meisten wohl bereits aus WPF oder Silverlight kennen.

XAML?!

XAML dient dazu .NET Objekte in deklarativer Weise zu beschreiben. Bei einem Buildvorgang erstellt MSBuild aus .xaml Dateien zwei neue Dateien eine C# Klasse und eine BAML (Binary Application Markup Language) Datei. Die BAML Datei ist lediglich eine binäre Version der XAML Datei wohingegen die C# Klasse lediglich die Koordination des beschriebenen Objektbaumes übernimmt (Laden des BAML-Files…).

 

wf4_7

 

Die Verwendung von XAML bedeutet, dass die erstellten Workflows nach einem Kompilierungsvorgang nicht mehr ohne weiteres geändert werden können.

Es muss neu deployed werden, dar der Workflow in der Zielassembly enthalten ist. Doch die WF4 erlaubt, analog zur WPF, XAML-Files zur Laufzeit zu laden und danach auszuführen.

Diese Möglichkeit bringt viel Flexibilität in Workflow Anwendungen. So können Workflows von Anwendungen einfach als externe Resource gelagert und bei Bedarf über ein ManagementTool (VS2010 oder Eigenentwicklung->Rehosting des WF4-Designers) angepasst werden.

Zauberwort ActivityXamlServices

ActivityXamlServices ist eine Klasse im System.Activities.XamlIntegration, mit deren Hilfe man einfach XAML Files (Workflows oder genauer Activities) laden kann.

Ein kleines Beispiel zeigt wie einfach das Laden eines in XAML vorhandenen Workflows funktioniert.

   1:  Activity myXamlWorkflow;
   2:   
   3:  using (Stream xamlStream= File.OpenRead("MyXamlWorkflow.xaml"))
   4:  {
   5:      myXamlWorkflow
   6:        = ActivityXamlServices.Load(xamlStream);
   7:  }
   8:  var result = WorkflowInvoker.Invoke(myXamlWorkflow);

 

Das kleine Snippet öffnet die angegebene XAML-Datei und gibt den gesamten Stream direkt an die Load Methode der ActivityXamlServices Klasse, diese erstellt eine System.Activities.Activity Instanz aus dem XAML, welche direkt über den WorkflowInvoker oder eine WorkflowApplication Instanz ausgeführt werden kann.

 

Technorati-Tags: ,,
DotNetKicks-DE Image
Published Mittwoch, 10. März 2010 23:51 von ThorstenHans
Abgelegt unter: ,

Kommentare

# Workflows serialisieren mit der WF4

Donnerstag, 11. März 2010 08:35 von dotnet-kicks.de

Sie wurden gekickt (eine gute Sache) - Trackback von dotnet-kicks.de

Kommentar abgeben

(verpflichtend) 
(verpflichtend) 
(optional)
(verpflichtend)