Suche

Mittwoch, 15. Juni 2011

Benutzer einer SharePoint-Gruppe auslesen (Data One Power Activity for Nintex Workflow)

Ich habe dieser Tage ein kleines Problem mit der Nintex-Aktivität << Data Request >> gehabt. Derzeit ist es leider nur möglich dieser Aktivität einen Benutzer zuzuweisen. Was nun aber tun, wenn mehrere Benutzer diese Dateneingabe vornehmen sollen. Man kann das Ganze umgehen, indem man eine neue SharePoint-Gruppe anlegt und die Benutzer in dieser Gruppe einpflegt.
Hier bin ich dann jedoch auf das nächste Problem gestoßen. Die SharePoint-Gruppe wird nicht aufgelöst, so dass die Aufgabe nicht in den Nintex-Webpart << Meine Workflowaufgaben >> angezeigt wird. Ich habe mir nun Gedanken über eine mögliche Lösung gemacht und bin zu folgendem Ergebnis gekommen.

Schritt 1: SharePoint Webservice
Auslesen der SharePoint-Gruppe mit dem SharePoint Webservice (http://sharepoint/_vti_bin/UserGroup.asmx) und der Methode << GetUserCollectionFromGroup >>. Als Ergebnis bekommen wir folgendes XML-Konstrukt (aus Darstellungsgründen habe ich es auf den LoginName beschränkt):


<GetUserCollectionFromGroup xmlns="http://schemas.microsoft.com/sharepoint/soap/directory/">
   <Users>
        <User  LoginName="Domäne\ps_test"  />
        <User  LoginName="Domäne\tk_bpmhelp" />
        <User  LoginName="Domäne\tk_discmanager"  />
   </Users>
</GetUserCollectionFromGroup>

Schritt 2: Auslesen mit PowerShell
Für die weitere Vorgehensweise werden die einzelnen Benutzer (in diesem Fall der LoginName) benötigt. Das Auslesen der Benutzer habe ich mit der Powershell realisiert. Die meisten werden nun fragen, wie kann ich Nintex Workflow in Verbindung mit der PowerShell nutzen? Ganz einfach, man benutzt die  << Data One PowerActivity for Nintex Workflow >>. Das folgende Script liest die einzelnen Benutzer aus und speichert Sie in einer ArrayList. Das Ergebnis wird dann einer Nintex-Collection-Variablen übergeben und man hat nun die Möglichkeit auf die einzelnen Benutzer dieser SharePoint-Gruppe zuzugreifen.


# path to the xml-file
$InputXML = 'C:\Users\ps\Desktop\UserGroup.xml' 
# get the content from the xml-file
$xml = [xml](Get-Content -Path $InputXML)
# create a variable of type System.Collections.ArrayList
$users = new-object 'System.Collections.ArrayList'
# iterate through the xml-file and get all users of the SharePoint-Group
$xml.GetUserCollectionFromGroup.users.user | foreach { 
$users.Add($_.Loginname)
}


Schritt 3: Zuweisen << Data Request >> an die Benutzer
Damit die Benutzer nun Ihre Aufgaben auch im Webpart << Meine Workflowaufgaben >> sehen können, muss jedem Benutzer ein << Data Request >> zugewiesen werden. In der Collection-Variable, die zuvor in der << Data One PowerActivity >> gefüllt wurde, sind alle Benutzer der SharePoint-Gruppe enthalten. Für jeden Eintrag wird ein << Data Request >> gestellt. Nun müssen wir noch die Abarbeitung der restlichen Aufgaben realisieren, wenn jemand seine Eingabe getätigt hat. Die << Data Request >> Aktivität hat derzeit leider nicht die Möglichkeit, dass man in der Konfiguration angeben kann, dass die erste Antwort zählt (wie man es z.B. vom Flexi-Task gewöhnt ist). Man muss sich die Action-ID's der einzelnen Aufgaben speichern und kann hiermit dann die noch offenen Aufgaben abschließen.

Die Lösung ist zwar nur suboptimal, aber man kann damit arbeiten und diese Aktivität auch mit mehreren Usern nutzen. Ich hoffe, dass in einem der nächsten Releases dieses Feature implementiert sein wird.

Viele Grüße,
Patrick

Keine Kommentare:

Kommentar veröffentlichen