07 September 2009

Workflowtasks mit automatischen Erinnerungen

Beispiel Workflow
SharePoint Workflows bieten relativ einfach die Möglichkeit, an verschiedenen Personen Tasks zuzuweisen, welche diese dann abarbeiten. In der Theorie mag sich das zwar gut anhören, in der Praxis werden diese Tasks einfach ignoriert und der Workflow kommt zum Stillstand ("Nööö, ich hab' nie einen Task zugewiesen gekriegt? Ach das E-Mail? Das hab' ich gelöscht…).
Eine Lösung dazu ist simpel: In periodischen Abständen wird dem Benutzer automatisch ein Reminder gesendet. Hört sich auch noch einfach an, gell? Links der Workflow ohne Erinnerungen:


Ein einfacher Approval Workflow also. Wir nehmen mal einfach so an, dass der Genehmigungstask ein Custom Form besitzt, wo der Benutzer zwei Buttons «Genehmigen» und «Ablehnen» hat. Im onApprovalTaskChanged.Invoked Event wird abgefragt, welcher Button geklickt wurde und doSomething führt die entsprechende Aktion aus.


Workflow mit automatischen ErinnerungenFalls wir einen Timeout einbauen möchten, müssen wir auf ein zweites Event warten die Delay Activity um anschliessend den Reminder zu senden. Glücklicherweise gibt's in der Windows Workflow Foundation die Listen Activity, welche es ermöglicht, auf mehrere Events gleichzeitig zu warten. Diese Activity blockiert den Workflow bis einer der angegebenen Events eintritt.
Dort packen wir in einen Ast die OnTaskChanged Activity und in den Anderen eine Delay Activity und eine SendEmail Activity. Da der Reminder nicht nur einmal gesendet werden soll, gibt's noch eine while Schlaufe drumherum.


Vergesst nicht, die Correlation Tokens richtig zusetzten: Es gibt zwei Tokens, eines für die onWorkflowActivated und sendReminder Activities und ein Anderes für die createApprovalTask und onApprovalTaskChanged Activities.

Gut zu wissen: Die Delay Activity wird vom SharePoint Timer Service abgearbeitet. Um sicherzugehen, dass das korrekte Assembly geladen wurde, muss also nach einem Deployment in den GAC auch der Server SPTimerV3 neu gestartet werden. Um zu Debuggen, muss der Prozess OWSTimer.exe attached werden.

01 September 2009

IRM SharePoint integriert

Mittels Information Rights Management (IRM) wird der Zugriff auf Dokumente nicht über Berechtigungen sondern über Verschlüsselung sichergestellt. Nur wer den entsprechenden Schlüssel hat, kann das Dokument öffnen. Microsoft hat mit dem Right Management Server (RMS) eine IRM Lösung, welche sich perfekt in Office integriert.

image

Jeder Benutzer kann sehr einfach den Zugriff auf sein Dokument nur für bestimmte Gruppen freigeben. Dabei kann über die sogenannte Policy eingeschränkt werden, wer die Datei nur lesen und wer sie auch verändern darf. Weiter kann auch definiert werden, ob der Inhalt ausgedruckt, in die Zwischenablage kopiert oder unter einem anderen Dateinamen abgespeichert wird. Die Datei wird verschlüsselt abgelegt.

Etwas anders verhält sich die SharePoint Integration des RMS Servers. Dabei legt der SharePoint die Datei in Klartext in der Datenbank ab und liefert sie nur verschlüsselt aus. Die Policy wird dabei aus den SharePoint Berechtigungen generiert. Damit kann z.B. sichergestellt werden, dass Benutzer, welche nur Leserechte haben, die Datei weder verändern noch ausdrucken oder abspeichern können.

image

Alles in allem eine sehr gelungene Lösung. Leider kann man die IRM Settings nur auf einzelne Document Libraries und nicht auf einen Content Type anwenden.

Hier finden sich weitere Information zum Setup von RMS und zur Verbindung zu SharePoint.