Einstieg zur Workflow Foundation 4 : Parameter übergeben

by Gregor Biswanger 2. Dezember 2010 04:49

Wie bereits beim Blog-Post “Hallo Workflow” berichtet wurde, spielt bei jedem Programmfluss ein IN und OUT eine wichtige Rolle. Das handhaben dieser Informationen wird durch die Activities geregelt. Allerdings müssen auch Activities auf eine allgemeine Informationen  des Workflows zugreifen. Dazu können einem Workflow allgemeine Argumente übergeben werden.

Beispiel: Hallo …

Auch dieser Blog-Eintrag demonstriert mir einer Begrüßung die funktionsweise der WF. Folgende Schritte sind dafür nötig:

  1. Das Erstellen eines neuen Workflow Consolen-Projekts.
  2. Ein Workflow Input Argument setzen.
  3. Eine Sequence Activity wird dem Workflow definiert.
  4. Eine WriteLine Activity wird der Sequence Activity hinzugefügt.
  5. Dem WriteLine Activity wird dem Text-Property das Argument zugewiesen.

 

Das Erstellen eines neuen Workflow Consolen-Projekts

Dazu wird in Visual Studio 2010 eine neues “Workflow Consolen Application”-Projekt mit dem Namen ParameterUebergeben erstellt.

 

SNAGHTML221b22a

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

 

Ein Workflow Input Argument setzen

Nach dem erzeugen des Projekts wird der Workflow automatisch im Designer geöffnet. Für die Verwaltung von Variablen, Argumenten und Assemblies muss am unteren Ende des Designers der jeweilige Bereich ausgewählt werden. Unter diesem Beispiel wird ein klick auf “Arguments” getätigt (Siehe Abb.2).

Nun stehen vier Spalten bereit. Die erste steht für den Namen des Arguments von dem aus im Source-Code zugegriffen wird. Hierbei empfiehlt sich vor dem jeweiligen Namen eine Abkürzung von “Arg” hinzuzufügen. Das dient zur besseren Übersichtlichkeit umso größer das Projekt wird. In diesem Projekt bitte den Namen “ArgBenutzername” eingeben.

Die Direction definiert in welche Richtung der Parameter mitgegeben werden darf. In diesem Beispiel wird “In” gewählt. Das bedeutet, das beim starten des Workflows eine Information “In” den Prozess geladen wird. Out steht dafür das beim beenden des Prozesses auch eine Information zurückgegeben wird.

Der Argument type steht für den Typen der hierbei Übertragen wird.

Unter Default value kommt kein Wert rein. Hier wird nur die Möglichkeit gegeben, das ein Standardwert dem Parameter geben wird, falls entsprechend nichts enthalten ist. Es wird allerdings die gesamte “Visual Basic”-Expression Sprache zur Verfügung gestellt.

image

Abb. 2 – Die Arguments im Workflow-Designer.

 

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.

SNAGHTML23cfbc7

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.

SNAGHTML23e5829

Abb. 4 – Workflow mit WriteLine Activity.

 

Dem WriteLine Activity wird dem Text-Property das Argument zugewiesen

Nun wird dem WrtieLine Activity dem Text-Property eine “Visual Basic” Expression zugewiesen. Das kann direkt in der TextBox geschehen oder bei einem kleineren Editor worin etwas mehr Platz ist. Der VB Code ruft die statische Methode Format von der Klasse String auf. Dieses erzeugt ein String aus unterschiedlichen Objekten.

image

Abb. 5 – Der Expression Editor.

 

Als nächstes muss beim Workflow Host ein Wert für das Argument als Parameter übergeben werden. Dazu wird der Anwender vorher nach seinem Namen gefragt und anschließend der Workflow mit der Information gestartet. Parameter kann man mittels Dictionary durchreichen. Wobei der Schlüsselwert genau nach dem Namen des Arguments entsprechen muss.

 

   1:  class Program
   2:  {
   3:      static void Main(string[] args)
   4:      {
   5:          Console.Write("Bitte Namen eingeben: ");
   6:          string username = Console.ReadLine();
   7:   
   8:          WorkflowInvoker.Invoke(new Workflow1(), new Dictionary<string, object>
   9:                                                      {
  10:                                                          {"ArgBenutzername", username}
  11:                                                      });
  12:   
  13:          Console.WriteLine("Zum Beenden drücken Sie eine beliebige Taste...");
  14:          Console.ReadKey();
  15:      }
  16:  }

Listing 1 – Parameter mittels Dictionary überreichen.

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

 

SNAGHTML327ab9a

Abb. 6 – Ausgabe des Workflows.

 

Argument Properties verwenden

Es gibt auch die Möglichkeit die Parameter über Properties zu setzen. Dazu wird vom Workflow ein Objekt instanziiert und anschließend stehen die Argumente als Properties zur Verfügung. Diese Vorgehensweise wird eher empfohlen, da diese Typsicher ist (Siehe Listing 2).

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

Listing 2 – Parameter über Properties zuweisen

 

Beim ausführen der Anwendung wird nun der Parameter ausgegeben.

 

SNAGHTML337f279

Abb. 7 – Ausgabe des Workflows.



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)