Mittwoch, 23. Mai 2012


Artikel

November 2009 | Artikel

Human Centric Workflows (Teil 2) Fortsetzung, Teil 2

Teil 1   Teil 2   

Abbruch, Error Handling

Sie haben ein Workflow definiert. Sie haben sich einen Verweis auf einen Listeneintrag in einer zusätzlichen Liste zwischengespeichert. Die nächste Aktivität findet erst in zwei Monaten statt. In der Zwischenzeit wurde dieser Listeneintrag gelöscht. Haben Sie bei der Modellierung in SharePoint Designer daran gedacht? Denken Sie bei der Modellierung nicht nur an den optimistischen Pfad. Beachten Sie die Abweichungen. Bei kritischen Workflows ist SharePoint Designer die falsche Wahl. Sie stoßen sehr schnell an die Grenzen.

Neue Version?

Wie am Anfang des Artikels beschrieben, "merken" sich die laufenden Workflows den Zustand der Variablen sowie die Version des Workflow Assemblies. Das hat mehrere Konsequenzen:

  • Verändern Sie z. B. nicht die Grundstruktur von einer Liste, falls laufende Workflows noch darauf aufbauen. Sonst basieren alle diese Workflows auf Fehlern.
  • Wenn Sie eine Version von einem Workflow einspielen, müssen Sie sich Gedanken über laufende Workflows machen. Sie haben grundsätzlich drei Alternativen:
    1. Sie verwenden zur Modellierung eine State Machine und speichern den Zustand und die Variablen nicht als Workflow-Variablen, sondern verlagern sie in die Liste. Sie können ein Workflow vorzeitig beenden und mit der neuen Version zu dem letzten Zustand "springen". Das erfordert erheblich mehr Aufwand bei der Modellierung.
    2. Sie sorgen dafür, dass keine neuen Instanzen von der letzten Workflow-Version gezogen werden. Damit laufen alle neuen Workflows nur mit der neuen Version. Das ist aber keine gute Lösung für Workflows mit Bugs.
    3. Sie brechen die alten Workflows ab und klären es gleichzeitig mit den betroffenen Usern. Das ist nur bei einer Bibliothek mit wenig laufenden Workflow-Instanzen ein praktikabler Weg.

Testing

Das Testing von Workflows im SharePoint-Umfeld ist nicht trivial. Hier spielen mehre Aspekte eine Rolle:

  • Testen Sie nicht als "Super User", sondern schlüpfen Sie wirklich in die Rollen der einzelnen Benutzergruppen.
  • Die Zeitspanne in einem Produktivsystem, z. B. für einen Reminder, liegt eher im Bereich von Tagen. Auf dem Testsystem und auch bei der Modellierung will man nicht so lange warten.

Für das erste Problem empfiehlt sich das Testen der Workflows über die Web-Service-Schnittstelle. Damit können Sie viel leichter Ihre Testfälle "aufnehmen" und auch zwischen den Gruppen umschalten. Das Visual Studio bieten Ihnen die Möglichkeit des Debuggings an. Vergessen Sie nicht, nach der Testphase im Produktivsystem Ihre Logs sehr stark zu reduzieren.

Fazit

Microsoft hat noch ein paar Aufgaben zu erledigen und arbeitet jetzt an einer neuen Workflow Engine. Das gute dabei ist, dass ebenfalls das gesamte SharePoint-System sehr stark auf der Workflow Foundation aufbaut. Damit sammelt auch Microsoft praktische Erfahrungen mit dem eigenen System ("eats its own dog food") Das erkennt man auch an der Performance-Untersuchung, die von Mann LLC durchgeführt wurde. Das System skaliert linear bis zum 4-Frontend-Server, danach bricht die Kurve ein. Dasselbe Verhalten sieht man auch in einer SharePoint-Farm ohne Workflows. Das gute dabei ist, dass das System schon in der jetzigen Version fähig ist, auch großen Projekten standzuhalten, mit sehr vielen nebenläufigen Aufgaben. Die meisten Einschränkungen (Tabelle 1: "Einschränkungen") haben einen Hintergrund in der Performance vom Gesamtsystem. Microsoft erlaubt keine dedizierten Workflow-Server, z. B. bei der Suche. Dadurch müssen viele Parameter so eingestellt werden, dass neben den Workflows auch das Standard SharePoint-System noch gut funktioniert. So z. B. sollte man den Timer für asynchrone Aufgaben nicht auf weniger als 5 Minuten reduzieren. Bei aller Begeisterung für das Model Driven Development darf man nicht vergessen, dass damit letztendlich Applikationen entwickelt werden und genau so muss man auch bei Entwurf, Umsetzung und Testing damit umgehen. Diese Arbeit wird durch die höhere Abstraktion nicht durch eine Art künstliche Intelligenz weggenommen. Das "Zusammenklicken" von Prozessen funktioniert nur für simple, kleine Anwendungen. Ich spreche hier gerne von Workflow Based Development. Last but not least: Nicht alles ist für ein SharePoint Workflow geeignet. Aber das werden Sie schon selbst entdecken. Have fun!

Problem Auswirkung Lösung
Memory Leak beim Timer Job owstimer.exe Der Prozess nimmt für sich mit der Zeit den gesamten Speicher Der Timer-Job muss regelmäßig neugestartet werden. Das kann man auch über das Admin-Komandozeilentool stsadm regeln. Die laufenden Workflows gehen damit nicht verloren und starten nach dem Neustart entsprechend.
Anzahl der gleichzeitig laufenden Workflows – 15. Es geht nicht um die Anzahl der Workflows im Status – „In Bearbeitung“ Die nachfolgenden Workflows werden in eine Queue gestellt und zeitversetzt abgearbeitet Das SharePoint-System soll sich damit nicht exklusiv mit Workflows beschäftigen. Bei Systemen mit wenig rechenintensiven Workflow-Aktivitäten kann die Zahl höher gestellt werden. Lesen: stsadm -o getproperty -pn workflow- eventdelivery-throttle Auf 25 setzen: stsadm -o setproperty -pn workflow- eventdelivery-throttle - pv“25”
Verschieben von Bibliothekelementen mit Workflows Die laufenden Workflows und die Historie werden nicht mit umgezogen. Teilweise Abhilfe durch Bindung von Workflows an den Content Type und nicht eine Liste
60 Tage, danach Löschen der Zuordnung Verlauf/Payload SPWorkflowAssociation.AutoCleanupDays Audit Trail Workflows mit dieser Einstellung nicht umsetzbar. Es handelt sich um eine Einstellung in der Datenbank. Diese darf man nicht verändern, da jegliche Gewährleistung erlischt. Microsoft liefert eine Lösung, mit der alle neuen Workflows gesucht werden und die den Wert auf 9999 setzt. Es entspricht 27 Jahren Alternativ kann der Timer Job für AutoClent gestoppt werden. Vorsicht, es hat Auswirkung auf alle Workflows. Es ist ebenfalls möglich, den Wert vom ? Workflow aus zu verändern. Mehr dazu in [3]
Löschen der Aufgaben nach dem Abbruch Die Aufgaben und die damit erfragten Daten gehen verloren. Muss beachtet werden
Nur MS-Basic-Aktivitäten können in ein Batch zusammengefasst werden Dehydratisieren, Hydratisieren kosten Zeit Beim Entwurf beachten. Sehr gute Datenbankanbindung empfehlenswert, da Workflows sehr datenbankintensiv sind.
Maximale Anzahl der Teilnehmer bei einer Aufgabe: ca. 1000   Das Feld hierfür hat 64 KB. Eher selten von praktischer Bedeutung
 
 

Teil 1   Teil 2   

Kommentare