Communardo Software GmbH, Kleiststraße 10 a, D-01129 Dresden
0800 1 255 255

Zugriff auf erweiterte Eigenschaften einer Workflowaufgabe

Bei der Entwicklung kom­ple­xer Workflows für den SharePoint spie­len auch Workflowaufgaben für die Benutzerinteraktion wäh­rend der Ausführung des Workflows eine nicht unbe­deu­tende Rolle.

Eine sol­che Aufgabe hat nicht nur die Standardeigenschaften wie einen Titel oder eine Beschreibung son­dern auch erwei­terte Eigenschaften. Das prak­ti­sche daran ist, dass diese kein eige­nes Feld in der Liste benö­ti­gen son­dern die Daten in den bereits vor­han­de­nen Feldern gespei­chert werden.

Und wenn man weiß, wie es geht, ist der Zugriff auf diese Daten auch sehr einfach.

1.) bei der Erstellung
Während der Erstellung der Aufgaben ver­wen­det man in der Regel den Typ WssTaskActivity. Dieser ver­fügt bereits über eine Eigenschaft ExtendedProperties, die vom Typ Hashtable ist und in die man seine gewünsch­ten Daten schrei­ben kann.

createTask.TaskId = Guid.NewGuid();
createTask.TaskProperties.Title = "Bitte genehmigen";
createTask.TaskProperties.ExtendedProperties["AdditionalText"]
    = "Bitte persönlich bearbeiten!";

2.) über den Item der TaskList

Möchte man nun spä­ter noch ein­mal dar­auf zugrei­fen, sieht man sich vor die Aufgaben gestellt, die Daten wie­der aus dem SPListItem der TaskList zu lesen und nach der Änderung auch wie­der zu schrei­ben. Sieht man sich das SPListItem genauer an, das die Aufgabe reprä­sen­tiert, so erkennt man, dass es ein Feld ExtendedProperties ent­hält, in dem die Daten auch ent­hal­ten sind – aller­dings sind hier ein­fach die XML-Attribute die die Eigenschaften reprä­sen­tie­ren angegeben:

"AdditionalText='Bitte persönlich bearbeiten!' Department='Einkauf'"

Die große Frage ist jetzt, wie man ein­fach auf diese Daten zugreift, diese ver­än­dert und wie­der abspei­chert. Die Hashtable die bei der Erstellung wäre hier­für ein adäqua­tes Objekt, das hier aber wie es zunächst scheint nicht vor­han­den ist. Aber man muss hier nicht ver­za­gen – auch dafür gibt es eine bereits vor­han­dene Lösung, auf die man aber erst kom­men muss. Der Typ SPWorkflowTask aus dem NameSpace Microsoft.SharePoint.Workflow ver­fügt über 2 inter­es­sante sta­ti­sche Methoden: GetExtendedPropertiesAsHashtable hat als Rückgabewert genau die eben noch ver­misste Hashtable und AlterTask ver­fügt über die Möglichkeiten, den Item mit den geän­der­ten Daten auch wie­der zu aktualisieren.

// get the extended properties hashtable
Hashtable taskItemExtProps = SPWorkflowTask.GetExtendedPropertiesAsHashtable(this.TaskListItem);
// write new values to the hashtable
taskItemExtProps["AdditionalText"] = "Mein Kommentar: genehmigt!";
// update the task item with new values
SPWorkflowTask.AlterTask(this.TaskListItem, taskItemExtProps, true);

Related Posts

Pin It on Pinterest