Windows Workflow Foundation im .Net Framework 3.0
Seite 2: Workflow-Bausteine
Bausteine eines .Net Workflow
(Bild:Â Microsoft)
Die WF-Laufzeitumgebung (siehe Abbildung 1) stellt diverse Basisdienste wie Laden, Persistenz, Ablaufverfolgung, Scheduling und Kommunikationsdienste bereit. Workflows können auf dieser Basis Daten mit ihrem Host und der Außenwelt austauschen, Webservices aufrufen oder selbst als Webservice bereitgestellt werden. Der eingebaute Persistenzmechanismus gestattet langlebige Workflows, wobei Microsoft als vorgefertigte Persistenzlösung nur die Ablage in einem Microsoft SQL Server anbietet. Da sich jedoch alle Basisdienste austauschen lassen, sind andere Datenspeicher möglich.
WF unterstützt zwei Grundtypen: Flussdiagramme (klassische sequenzielle oder parallele Abfolgen von Aktionen) und Zustandsübergangsdiagramme (State Charts). Elemente sind Aktivitäten oder Zustände, wobei alle Bausteine in Form von .Net-Klassen implementiert sind. Microsoft liefert zahlreiche vordefinierte generische Aktivitäten. Entwickler können beliebig eigene in Form von .Net-Klassen ergänzen. Da sich diese Klassen in Assemblies kapseln lassen, ist ein kommerzieller Markt von WF-Aktivitäten möglich.
Workflows sind zur Laufzeit immer von der CLR ausgeführter Programmcode (Managed Code in Assemblies). Zur Entwicklungszeit können sie durch Programmquellcode in einer beliebigen .Net-Programmiersprache oder durch XML-Dokumente (XAML-Markup mit der Dateiextension .xaml) dargestellt werden.
In den XML-Dokumenten kommt zur Repräsentation von Workflows die XML Application Markup Language (XAML) zum Einsatz, die auch bei WPF Verwendung findet. Mit XAML sind beliebige .Net-Objektbäume definierbar; ein XAML-Dokument ist die serialisierte Form eines .Net-Objektmodells. Auch bei ASP.Net, Microsoft Build und dem Konfigurationsmodell des .Net Framework wird dieses Konzept angewendet, allerdings ist hier das XML-Format etwas weniger mächtig. Außerdem gab es den Namen XAML noch nicht, als ASP.Net und das .Net Framework 2.0 entwickelt wurden.
XAML kann zwar Basiskonstrukte wie Bedingungen, Schleifen und Datenbindung ausdrücken, nicht jedoch Code-Aktivität. In der Regel kommt sie kombiniert mit Hintergrundcode zum Einsatz. Der Vorteil der Markup-Sprache: Sie ist einfacher durch externe Werkzeuge generierbar als Programmcode.