Einstieg zur Workflow Foundation 4 : Hallo Workflow

by Gregor Biswanger 1. Dezember 2010 09:45

Die Workflow Foundation gibt es bereits ab den .NET-Framework 3. Die Idee dahinter ist, das Arbeitsabläufe oder auch Geschäftslogik Grafisch definiert werden kann. Somit werden komplexe Abläufe leicht gehandhabt. Jedoch war die Technische Umsetzung der Workflow Foundation 3 und 3.5 sehr Fehleranfällig und für heutige Entwicklungsansprüche (TDD etc.) nicht geeignet. Auch der Designer war leider sehr Fehleranfällig. Somit wurde von Microsoft die Workflow Foundation komplett neu geschrieben und mit dem .NET-Framework 4 veröffentlicht.

Aus persönlichen Erfahrungen kann ich eine Vorsicht zur Workflow Foundation 4 entschärfen. Ganz zum Gegenteil sogar, ich kann jedem nur empfehlen die Projekte auf Basis der WF 4 aufzubauen. Hier wird gewehrleistet das man sich an die Komponentenorientierte Entwicklung hält und es behilft die Entwicklung mittels TDD enorm. Aber Details folgen mit weiteren Blog-Einträgen zur WF 4. Dieser Blog-Eintrag soll vorerst ein einfaches “Hallo Workflow” demonstrieren.

Die benötigten Tools:

  • Microsoft Visual Studio 2010 Professional, Premium oder Ultimate
  • Das .NET-Framework 4 (Wird bei Visual Studio 2010 mit installiert)

 

Der Workflow zur Worklfow

Die Vorgehensweise mit der Verwendung der Workflow Foundation ist folgendermaßen aufgebaut:

 

  1. Komponenten werden entwickelt. (In TDD empfohlen!)
  2. Komponente als Activity zur Verfügung stellen.
  3. Einen Workflow aus Aktivitäten (activities) deklarieren.
  4. WF Host mit Workflows in eigene App zur Verfügung stellen.

 

Der erste Schritt beinhaltet das einfache Entwickeln der Komponenten die die eigentlichen Anforderungen (Tasks) abdecken. Das kann ein Update der Datenbank, Senden von WCF-Nachrichten zu einem anderen System, einer Rechnung/Validierung usw. sein.

Die Komponenten werden dann mit activities als Adapter erweitert. Es gibt zudem bereits vorhandene Activities die von der WF zur Verfügung stehen. Hierbei spielt wie bei jeden Programmfluss ein IN und OUT eine wichtige Rolle. Das handhaben der Informationen wird durch diese Activitiy-Facade geregelt.

Die Activities werden dann bei einem Workflow durch Regeln und Validierungen miteinander Definiert.

Das ansteuern und abspielen der Workflows geschieht über einen Hoster. Ein Hoster kann bei unterschiedlichen .NET-Projekten (Ab .NET 4) eingesetzt werden.

Hallo Workflow

Um ein besseres Bild zu erhalten fängt der erste Teil dieser Serie mit einem “Hallo Workflow” an. Dafür werden folgende Schritte umgesetzt:

 

  1. Das erstellen eines neuen Workflow Consolen-Projekts.
  2. Eine Sequence Activity wird dem Workflow definiert.
  3. Eine WriteLine Activity wird der Sequence Activity hinzugefügt.
  4. Dem WriteLine Activity wird dem Text-Property eine Nachricht definiert.

 

Das erstellen eines neuen Workflow Consolen-Projekts

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 “HalloWorkflow” verwendet.

 

SNAGHTML102af95

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

Die Projektvorlage erzeugt nun ein neues Projekt das anschließend die erste Workflow.xaml-Datei ausgewählt im Designer anzeigen lässt.

SNAGHTML1076eaf

Abb. 2 – Der Aufbau eines Workflow-Projekts in Visual Studio.

Links in der Toolbox befinden sich vorhandene oder selbst geschriebene Activities. In der Mitte des Bildschirms befindet sich der Workflow-Designer womit die Abläufe grafisch definiert werden. Ganz rechts im Solution Explorer befindet sich auch schon die Projektstruktur.

Hierbei spielen die beiden Dateien Program.cs und Workflow1.xaml eine wichtige Rolle. In der Program.cs-Datei ist die statische Main-Methode die beim Ausführen des Projektes gestartet wird. Hier befindet sich ein fertiger Workflow Hosting-Code.

 

   1:  class Program
   2:  {
   3:      static void Main(string[] args)
   4:      {
   5:          WorkflowInvoker.Invoke(new Workflow1());
   6:      }
   7:  }
Listing 1 – Source-Code der Program.cs-Datei

 

Die Klasse WorkflowInvoker bietet eine statische Methode Invoke zum synchronen Aufrufen von Workflows an. Es werden auch Instanzmethoden zum asynchronen Aufrufen von Workflows bereitgestellt. Somit dient diese Klasse als Hosting für Workflow Instanzen.

Die zweite Datei Workflow1.xaml ist der hauptsächliche Workflow. Die Workflows selbst werden mittels XAML (XML) Deklariert. Wobei hauptsächlich der Designer dafür verwendet wird.

Die Workflow Foundation 4 Funktionalität wird von der Assembly System.Activities bereitgestellt.

 

Eine Sequence Activity wird dem Workflow definiert

Unter dem Bereich "Control Flow” der Toolbox wird eine Sequence Activity ausgewählt und mittels Drag & Drop auf den Designer geschoben. Eine Sequence Activity koordiniert die Ausführung eines Satzes untergeordneter Aktivitäten gemäß einer bestimmten Reihenfolge. Dabei wird jeweils ein Satz ausgeführt. SequenceActivity wird abgeschlossen, wenn die abschließende untergeordnete Aktivität beendet wird.
 

SNAGHTML130a836

Abb. 3 – Workflow mit Sequence Activity

Eine WriteLine Activity wird der Sequence Activity hinzugefügt

Eine bei der Workflow Foundation 4 vorhandene Activity bietet das ausgeben von Informationen über der Console an. Dieses befindet sich im Bereich “Primitives”. Dieses muss auch mittels Drag & Drop zur Sequence Activity hinzugefügt werden.

 

SNAGHTML13576bb

Abb. 4 – Workflow mit WriteLine Activity.

 

Dem WriteLine Activity wird dem Text-Property eine Nachricht definiert

Wie bereits zu Beginn erwähnt spielen bei jeden Programmfluss ein IN und OUT eine wichtige Rolle. Dies wird mittels Properties der  Activities geregelt. Dabei wird auf das WriteLine Activity ausgewählt und dem Text-Property die Nachricht “Hallo Workflow!” geschrieben. Dabei dürfen die Anführungszeichen nicht vergessen werden. Das liegt daran, das Nachrichten unter der WF 4 mittels “Visual Basic”-Syntax definiert werden.

image

Abb. 5 – WriteLine Activity mit zugewiesenen Text.

 

WF Host mit Workflows in eigene App zur Verfügung stellen

Auch hier wurde zu Beginn erwähnt das die Workflow1 von der Program.cs aus gestartet wird. Hier befindet sich die Workflow-Hoster-Klasse WorkflowInvoker. Diese Datei bekommt noch ein paar weitere Zeile hinzugefügt, so das beim Debuggen die Console nicht sofort geschlossen wird.

 

   1:  class Program
   2:  {
   3:      static void Main(string[] args)
   4:      {
   5:          WorkflowInvoker.Invoke(new Workflow1());
   6:   
   7:          Console.WriteLine("Zum Beenden drücken Sie eine beliebige Taste...");
   8:          Console.ReadKey();
   9:      }
  10:  }

Listing 2 – Source-Code der Program.cs-Datei

 

Jetzt kann wie gewohnt die Anwendung mittels [F5]-Tastendruck ausgeführt werden.

 

SNAGHTML156b503

Abb. 6 – Ausgabe des Workflows.

 

Fazit

Dieses erste “Hallo Workflow”-Beispiel sollte auf einfache Art und weise Demonstrieren wie grundlegend mit der WF 4 gearbeitet wird. Es folgen weitere Blog-Einträge die jeweils tiefer in die Thematik einsteigen werden.



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)