Im Zeichen der modellbasierten Softwareentwicklung (MDSD) rückt die Visualisierung von Software und deren Prozessen -- nicht in Form von Dokumentation, sondern als Quelle für den Programmcode -- immer weiter in den Fokus des Projektalltags. Die mit Microsoft.NET 3.0 erschienene Workflow Foundation (WF) wird diesen Anforderungen (oder: dieser Forderung) gerecht. Sie unterstützt bei der Entwicklung ablaufgesteuerter Anwendungen mit besonderem Fokus auf die Interaktion zwischen Menschen und Systemen. Die Vision, unsere Software zusammen mit dem Kunden zu modellieren und kaum noch Code schreiben zu müssen, scheint näher zu rücken. Zumindest hübsch sind die mit dem in Visual Studio integrierten Workflow Designer erstellten Abläufe. Dieser Vortrag stellt die Konzepte rund um die WF sowie eine Übersicht über die mitgelieferten Dienste, Ablaufvarianten und Aktionen (Aktivitäten) vor. Weiter gibt es einige pragmatische Demos und Informationen zur Erweiterbarkeit der WF. Ob die WF nun hält was sie verspricht, wie sie sich in unseren Entwicklungszyklus im Projektalltag einfügt und wie gut sie im produktiven Betrieb performt, wird zur Diskussion gestellt.
NRW 08 Windows Workflow Foundation - Presentation Transcript
Einführung in die Windows Workflow Foundation Lars Corneliussen Senior Web Developer itemis AG
Lars Corneliussen
Senior Web Developer
http://www.startbigthinksmall.com
Webentwicklung
Enterprise CMS
eCommerce
.NET / C# internals
Serviceorientierung
MDSD
Modellbasierte Softwareentwicklung (MDSD) für Enterprise und Embedded Systems
Standorte in Deutschland und Frankreich
Top 100, Land der Ideen, start2grow
Strategisches Mitglied der Eclipse Foundation
Forschung & Entwicklung
Agenda/Übersicht
Warum Workflows?
Die Windows Workflow Foundation
Demo
“ known issues”
Best Practices
Fragen und Antworten
Warum Workflows?
Fast immer soll Software Arbeitsabläufe optimieren
Die Kommunikation zwischen Menschen und Maschinen ist aufwändig
Die Fachlogik in Architekturcode ertränkt
Unlesbarer und unwartbarer Spagetticode ist das Ergebnis
Beispiel: Sesam öffne dich static void Main() { // Print the key string key = DateTime.Now.Millisecond.ToString(); Console.WriteLine("here is your key: " + key); string s = Console.ReadLine(); // Print the greeting if the key is provided if (key.Equals(s)) Console.WriteLine("hello, world"); }
Beispiel: Sesam öffne dich [WebService] public class Service : WebService { [WebMethod(EnableSession = true)] public string PrintKey() { string key = DateTime.Now.Millisecond.ToString(); Session["key"] = key; return "here is your key: " + key ; } [WebMethod(EnableSession = true)] public string PrintGreeting(string s) { if (Session["key"].Equals(s)) return "hello, world"; return null; } }
Beispiel: Sesam öffne dich [WebService] public class Service : WebService { [WebMethod(EnableSession = true)] public string PrintKey() { bool alreadyDidStep1 = (Session["key"] != null); if (alreadyDidStep1) throw new InvalidOperationException(); string key = DateTime.Now.Millisecond.ToString(); Session["key"] = key; return "here is your key: " + key; } [WebMethod(EnableSession = true)] public string PrintGreeting(string s) { bool didNotDoStep1Yet = (Session["key"] == null); if (didNotDoStep1Yet) throw new InvalidOperationException(); bool alreadyDidStep2 = (Session["programDone"] != null); if (alreadyDidStep2) throw new InvalidOperationException(); Session["programDone"] = true; if (Session["key"].Equals(s)) return "hello, world"; return null; } }
Typische Probleme
Zustandssicherung über lange Zeiträume und Rechnerneustarts
Optimaler Ressourceneinsatz
Überwachung laufender Prozesse
Synchronisierung verschiedener Threads/User
...
...
Warum also Workflows?
Eine klare Trennung zwischen
Arbeitseinheiten,
Ablauf,
und Architektur
führt zu hauptsächlich zu höherer Qualität,
respektive höherem Kundennutzen .
Windows Workflow Foundation ist ein Weg , dies zu erreichen.
Agenda/Übersicht
Warum Workflows?
Die Windows Workflow Foundation
Demo
“ known issues”
Best Practices
Fragen und Antworten
Architektur der WF Workflow Host Process Definitions Instances Workflow Runtime
Die Workflow Definition
Die Workflow Definition ist das Modell eines Workflows.
Per Workflow wird eine Instanz aus dem Modell erstellt.
Workflow Instance
Kontrolliert den geordneten Ablauf der Aktivitäten eines Workflows
Initialisiert Ausführend Erledigt Die Aktivität wurde parametrisiert und initialisiert. Die Aktivität befindet sich in der Ausführung ihrer Aufgabe. Die Aufgabe wurde unterbrochen, aber nicht beendet! Die Aufgabe ist erledigt
Workflow Runtime
Kontrolliert den Ablauf aller Workflows
Verwaltet Services
Persistiert ruhende Workflows und lädt sie bei Bedarf
Informiert den Host über Events
Aufbau Benutzerdefinierte Dienste Windows Workflow Foundation Aktivitäten-Bibliothek Workflows Workflow Hosting Benutzerdefinierte Aktivitäten und Workflows Dienste Persistenz Überwachung Datenaustausch Programm-Schnittstelle State Machine Sequential Laufzeit-bibliothek Visual Studio 2008 Integration „ Workflow Designer“ Angepasste Designer für eigene Aktivitäten und Workflows Regeln und Bedingungen Baukasten Runtime Design
Aufbau Benutzerdefinierte Dienste Windows Workflow Foundation Aktivitäten-Bibliothek Workflows Workflow Hosting Benutzerdefinierte Aktivitäten und Workflows Dienste Persistenz Überwachung Datenaustausch Programm-Schnittstelle State Machine Sequential Laufzeit-bibliothek Visual Studio 2008 Integration „ Workflow Designer“ Angepasste Designer für eigene Aktivitäten und Workflows Regeln und Bedingungen Baukasten Runtime Design
Aktivitätenbibliothek
Aktionseinheit (Activity)
Interaktion über Webservice, WCF-Service oder Interface
CodeActivity oder benutzerdefinierte Aktivität
Ablaufsteuerung (ComposedActivity)
Bedingungen
Parallele Ausführung
Transaktionen
...
Benutzerdefinierter Ablauf
Klassenbibliothek – Workflows
Im Wesentlichen auch Aktivitäten
Sequenzieller Workflow
Definierter Ablauf mit Ein- und Ausgabe-Parametern
State Machine
Zustände mit kontroliertem Zustandswechsel
Sequenzielle Workflows für Aktionen
Eventbasierte Steuerung
Typische sequenzielle Abläufe
Urlaubsantrag
Passwort-zurücksetzten
Neuer-Mitarbeiter-Prozess
...
Typische State Machines
Bug Tracker
NewIssue
Assigned
...
Order Flow
OpenOrder
ApprovedOrder
...
Aufbau Benutzerdefinierte Dienste Windows Workflow Foundation Aktivitäten-Bibliothek Workflows Workflow Hosting Benutzerdefinierte Aktivitäten und Workflows Dienste Persistenz Überwachung Datenaustausch Programm-Schnittstelle State Machine Sequential Laufzeit-bibliothek Visual Studio 2008 Integration „ Workflow Designer“ Angepasste Designer für eigene Aktivitäten und Workflows Regeln und Bedingungen Baukasten Runtime Design
Scheduling
Alle Arbeiten in einem Workflow werden gequeued.
Der SchedulerService übernimmt das Abarbeiten dieser Aufgaben.
DefaultSchedulerService benutzt den ThreadPool, es ist aber möglich benutzerdefinierte Scheduler anzusprechen.
Multithreading
Auf einer Workflow-Instanz ist maximal ein Thread unterwegs.
Paralellität wird nur simuliert.
Das vereinfacht die Entwicklung von Aktivitäten ungemein.
Local Services
Regeln und Bedingungen
Regeln (Rulesets)
Liste von Wenn-Dann-Sonst Anweisungen zur Veränderung von Properties
Bedingungen (Conditions)
Deklarative Bedingungen zur Steuerung des Ablaufs
Für IfElseActivity, ConditionedGroupActivity, ...
Transaktionen
System.Transactions seit .NET 2.0
Kein Workflow für Rollbacks
Keine Dehydration während einer Transaktion
Keine verschachtelten Transaktionen
Fehlerbehandlung, Abruch und Kompensation Initialisiert Ausführend Erledigt Im Abbruch Fehlerbehandlung Kompensierend
Aufbau Benutzerdefinierte Dienste Windows Workflow Foundation Aktivitäten-Bibliothek Workflows Workflow Hosting Benutzerdefinierte Aktivitäten und Workflows Dienste Persistenz Überwachung Datenaustausch Programm-Schnittstelle State Machine Sequential Laufzeit-bibliothek Visual Studio 2008 Integration „ Workflow Designer“ Angepasste Designer für eigene Aktivitäten und Workflows Regeln und Bedingungen Baukasten Runtime Design
Visual Studio Designer
Debugging
Rehosting
Agenda/Übersicht
Warum Workflows?
Die Windows Workflow Foundation
Demo
“ known issues”
Best Practices
Fragen und Antworten
Agenda/Übersicht
Warum Workflows?
Die Windows Workflow Foundation
Demo
“ known issues”
Best Practices
Fragen und Antworten
„ Known Issues“
Änderung von Workflows
Laufende Workflows kann man schwer auf neue Prozessstände migrieren.
Bei der Persistenz von Aktivitäten tauchen gerne mal Versionierungsprobleme auf, da im Standardfall Binary Serializer benutzt werden.
Workflows im Web
Stabilität von in Webapplikationen gehosteten Workflows ist dürftig.
Designer
Gestalten von eigenen Designern ist relativ aufwändig, aber eigentlich nötig. Alles muss von Hand programmiert werden.
Agenda/Übersicht
Warum Workflows?
Die Windows Workflow Foundation
Demo
“ known issues”
Best Practices
Fragen und Antworten
Best Practices: Think
Wenn man einen Hammer hat, sieht jedes Problem aus wie ein Nagel.
Gründlich prüfen, ob der Einsatz von WF die gewünschten Vorteile bringt.
Mit WF modellieren, nicht programmieren!! Die Aktivitäten sind für die Aufgaben zuständig, die Workflows für den Ablauf.
Ein Prozess hat keine „Bugs“ und wird auch selten geändert. Damit umgeht man die Probleme bei der Versionierung.
Workflows partitionieren und untereinander aufrufen. Workflow-enabled Applications, nicht Application-enabled Workflows.
Agenda/Übersicht
Warum Workflows?
Die Windows Workflow Foundation
Demo
“ known issues”
Best Practices
Fragen und Antworten
Fragen?
Danke für’s Zuhören! Lars Corneliussen http://www.startbigthinksmall.com http://delicious.com/lcorneliussen/workflowfoundation http://www.itemis.de
0 comments
Post a comment