Zwar bringt die WF4 schon eine große Menge an vordefinierten Activities mit sich, jedoch empfiehlt es sich wiederkehrende Aktionen in Form von eigenen Activities bereitzustellen.
In WF4 gibt es unterschiedliche Wege um eine eigene Activity zur erstellen.
- Composite Activity
- werden im WF4-Designer erstellt
- wird verwendet wenn man zusammengesetzte Activities erstellen möchte
- CodeActivity
- werden im Code entwickelt
- Basisklasse für einfache Workflowaktivitäten
- Tracking Support
- AsyncCodeActivity
- werden im Code entwickelt
- alle Features der CodeActivity
- Basisklasse für Activities die asynchrone Verarbeitung durchführen
- NativeActivity
- werden im Code entwickelt
- alle Features der AsyncCode Activity
- Basisklasse die Bookmarks und Scheduling ermöglicht
Die Erstellung von AsyncCodeActivities oder NativeActivities lässt sich leider nicht in wenigen Worten gut darstellen, daher habe ich mich entschlossen die einzelnen Activity-Typen jeweils in eigenen Posts vorzustellen und zu zeigen wie man damit einfach eigene Activities erstellt.
Kurz noch etwas zum Vorgehensmodell
Wie so oft hat jeder Entwickler freie Hand was das Vorgehensmodell für die Entwicklung von Komponenten angeht. Für die Entwicklung von WF4 Activities bietet sich jedoch Test Driven Development (TDD oder TestFirst) an. Vor allem die Tatsache das jeder Workflow eine Activity ist und ohne großen Aufwand durch den WorkflowInvoker oder WorkflowApplication gestartet werden kann machen die WF4 zu einer sehr gut testbaren API.
Doch nun zum ersten Custom-Activity-Typ, einer eigenen CompositeActivity.
Eine Composite-Activity entwickeln
Eine Composite-Activity stellt die einfachste, selbst zu erstellende Art einer Activity dar. Es muss kein Quellcode geschrieben werden um auf diese Art und Weise eine eigene Activity zu erstellen. Die Tatsache dass man keinen Code schreiben muss, hindert allerdings nicht daran eine komplexe Activity zu erstellen, ganz im Gegenteil, durch die Verwendung des WF4-Designers bleiben auch komplexere Activities stets übersichtlich und leicht zu warten.
Unabhängig vom Activity-Typ, benötigt man einen Container für die eigenen Activities, auch hier bietet Visual Studio 2010 direkt eine passende Vorlage, die Activity Library. Eine Activity Library kann genau wie jeder andere Projekttyp schnell über den “New project” Link der Startseite oder über das Menü von Visual Studio erstellt werden.
Das Activity Library Projekttemplate beinhaltet zwar bereits eine Activity1 Datei, diese ignorieren oder löschen wir aber einfach an dieser Stelle um von Grund auf mit der Erstellung einer Composite-Activity zu beginnen.
Im aktuellen RC1 von Visual Studio 2010 gibt es noch einen kleinen Naming-Missmatch, denn überall in der MSDN oder sonstigen Dokumentation spricht man von Composite-Activities, lediglich der Dialog im Visual Studio zum eigentlichen Hinzufügen begrüßt den Entwickler mit der Bezeichnung “Activity”.
Um eine eigene Composite-Activity zu erstellen fügt man der Activity-Library nun also eine neue “Activity” hinzu.
Nach der Vergabe des Namens und dem Bestätigen mit Add öffnet sich der Workflowdesigner der Windows Workflow Foundation 4. Neben der Option einfach Activities anzuordnen und zu konfigurieren, bietet der Designer auch an dieser Stelle wieder vollen Support für die Definition von Argumenten, Variablen oder dem Import von alternativen Namespaces.
In nur wenigen Sekunden kann man mit der WF4 eine einfache GreetingActivity erstellen, die abhängig von einem Eingabeparameter den Anwender unterschiedlich begrüßt.
Abbildung 2 zeigt wie übersichtlich und einfach die verschiedenen Activities im WF4-Designer angeordnet werden.
Nach Abschluss der Implementierungs- oder Konfigurierungsphase der Workflow-Activity, kann man die Assembly wie gewohnt bauen und als Activity-Library, in Verbindung mit der BAL von WF4 in eigenen Anwendungen verwenden.
Composite-Activities bieten dem Entwickler die Möglichkeit wiederkehrende Aktionen in eine eigene (eventuell parametrisierte) Activity zusammenzufassen, ohne hierzu Quellcode schreiben zu müssen. Durch diese Funktionalität kann sich jedes Unternehmen, welches WF4 einsetzt schnell und einfach ein Set an domainspezifischen Activities erstellen und für den eigenen Gebrauch verwenden.
Doch oftmals genügt “einfach” nicht, manchmal möchte man einfach mehr, oder man möchte genau Wissen was im Hintergrund geschieht… hier kommen Code-Activities ins Spiel. In den nächsten Posts werde ich mich näher den Code-Activities widmen um dessen Funktionsweisen und Features etwas genauer zu erklären.
Technorati-Tags:
WF4,
Activities