Einstieg zur Workflow Foundation 4 : Activities parallel ausführen

by Gregor Biswanger 16. Dezember 2010 05:37

Mit der Workflow Foundation 4 wird das Parallel Activity bereitgestellt. Womit gleichzeitig ein Satz untergeordneter Aktivitäten ausgeführt werden kann.

Jedoch werden die Activities nicht “wirklich” parallel ausgeführt, sondern werden der Reihe nach durchlaufen. Sollte sich ein Activity im Leerlauf befinden, wird sofort das zweite Activity abgespielt. Der ganze Prozess wird daher auch im selben Thread ausgeführt.

 

Beispiel: Das WorkflowParallelExample

Dazu wird Visual Studio 2010 geöffnet und ein neues Projekt angelegt. Als Template wird unter “Workflow” – “Workflow Console Application” gewählt. Als Name wird “WorkflowParallelExample” verwendet.

 

SNAGHTML394dbef

Abb.1 – Neues “Workflow Console Application” Projekt erzeugen.

 

Deklarieren der Workflow

  1. Das Parallel Activity auf den Workflow hinzufügen.
  2. Zwei Sequence Activities der Parallel Activity hinzufügen.
  3. Die Namen der Sequence Activities abändern in “Sequence 1” und “Sequence 2”.
  4. Dann erhält jede Sequence Activity drei WriteLine Activities.
  5. Dabei erhält jede WriteLine Activity passend zur jeweiligen Position folgende Expression:
    String.Format("Sequence 1 - Activity 1 - Thead: {0}", System.Threading.Thread.CurrentThread.ManagedThreadId)

 

Wenn alles korrekt deklariert wurde, sieht der Workflow wie in Abb. 2 aus:

image

Abb. 2 – Das Parallel Activity mit zwei Sequence Activities.

 

Wenn das Projekt nun mit der Tastenkombination [Strg] + [F5] ausgeführt wird, wird sofort ersichtlich, das die Activities nicht wirklich Parallel verarbeitet werden und sich im selben Thread befinden:

SNAGHTML3aabf4b

Abb. 3 – Ausgabe des Workflows zeigt keine parallele Verarbeitung.

 

Somit wird ersichtlich wie genau das Parallel Activity die enthaltenen Activities verarbeitet:

image

Abb. 4 – So arbeitet das Parallel Activity seine Activities ab.

 

Das Parallel Activity führt nur bei einem Leerlauf das darauffolgende Activity aus. Somit kann während eines wartenden prozesses ein folge Prozess ausgeführt werden. Als Beispiel soll ein Delay Activity in der ersten Sequence direkt nach dem ersten WriteLine Activity gesetzt werden. Als Expression wird folgender Wert verwendet: TimeSpan.FromSeconds(1)

Wenn alles korrekt deklariert wurde, sieht der Workflow wie in Abb. 5 aus:

image

Abb. 5 – Sequence 1 wurde durch ein Delay Activity erweitert.

 

Wenn das Projekt nun mit der Tastenkombination [Strg] + [F5] ausgeführt wird, wird sofort ersichtlich, das bei einem Leerlauf sofort beim nächsten Activity weitergemacht wird:

SNAGHTML3c820fb

Abb. 6 - Ausgabe des Workflows zeigt die nächste Verarbeitung der enthaltenen Activities.

 

Somit wird ersichtlich wie genau das Parallel Activity die enthaltenen Activities bei einem Leerlauf verarbeitet:

image

Abb. 7 - So arbeitet das Parallel Activity seine Activities bei einem Leerlauf ab.



Wenn ihnen der Artikel gefallen hat oder er für sie hilfreich war, bitten "kicken" sie ihn.
kick it on dotnet-kicks.de

Kommentare

Powered by BlogEngine.NET 1.4.5.0
Theme by Extensive SEO

Über den Autor

Gregor Biswanger

Microsoft MVP für Client App Dev
XING

Gregor Biswanger (Microsoft MVP für Client App Dev) ist freier Consultant, Trainer, Autor und Speaker.


Seine Schwerpunkte liegen im Bereich der .NET-Architektur, agilen Prozessen und XAML. Er veröffentlichte vor kurzem seine DVD´s mit Video-Trainings zum Thema „Meine erste Windows 8 App“, „Windows Store Apps mit XAML und C#“ und „WPF 4.5 und Silverlight 5“ bei Addison-Wesley von video2brain.


Biswanger ist auch im Auftrag von Intel GmbH als Technologieberater für die Intel Developer Zone aktiv und ist Leader bei der Ingolstädter .NET Developers Group (INdotNET). 

 

Video über mich:
http://www.youtube.com/watch?v=mx_6SiiLxjk


Basta! 2011 Speaker

CLIPer

MCTS
Windows SharePoint Services 3.0 – Application Development (MCTS)