Nintex: Erste Einblicke in die Aktion “Web Service Aufruf”

Ich möchte an dieser Stelle kurz ein paar Infos zu der Aktion “Web Service Aufruf” in Verbindung mit der Rechtevergabe auf Websites zum Besten geben. Ist ein erster Wurf und soll eher brainstormingmäßig ein paar sehr schöne Möglichkeiten vermitteln. Rechtschreib- und Grammatikfehler sind als bewusste Stilmittel gedacht 😉

Ausgangspunkt:

Benutzerdefinierte Liste; nur die Spalte Titel

Über “Neuen Workflow mit Nintex erstellen” geht ihr in den Workflow Editor von Nintex. Fügt ihr hier eine Aktion vom Typ “Web Service Aufruf” ein und öffnet dann die Eigenschaft, so ist der erste Blick ernüchternd:

Web Service Aufruf - Konfiguration

Web Service Aufruf – Konfiguration

Ohne jetzt zu wissen, welche Web Services SharePoint zum Beispiel anbietet, wird man nicht wirklich weiterkommen. Im Folgenden möchte ich auf zwei Dienste zu sprechen kommen, die bei der Rechtevergabe von Interesse sind: Permission und usergroup

Um eine Gruppe über einen Webservice anzulegen, tragt ihr in das Feld URL folgende Adresse ein: http://<siteurl>/_vti_bin/usergroup.asmx;  jetzt noch die Credentials hinterlegen, die berechtigt sind, diesen Dienst anzusprechen.

HALT STOP!!!

TIPP: Es macht wenig Sinn, für jede einzelne Aktion Benutzername und Passwort einzutragen. Ändert sich der Benutzer oder sein Passwort muss erneuert werden, habt ihr ein echtes Problem. Sinnhafter ist das Hinterlegen der Credentials in zentral hinterlegten Workflowkonstanten. Hierfür geht ihr in die jeweilige Websiteeinstellung (oder gleich auf die Ebene der Websitesammlung) und ruft den Menüpunkt “Workflowkonstanten verwalten” auf. In dem Dialog zum Neuanlegen einer Konstanten könnt ihr jetzt den  Typ Zugangsdaten auswählen und die entsprechenden Information dort hinterlegen. Die Credentials werden verschlüsselt im System gespeichert und können jetzt in allen Websites in der Websitesammlung (wenn auf Websitesammlungsebene definiert) oder in der entsprechenden Website in jedem Workflow genutzt werden.

Ich brauch’ nicht sagen, das man hier keinen allmächtigen Account hinterlegen sollte, wenn man nicht der einzige ist, der Nintexworkflows erstellen darf.

Web Service Usergroup

Web Service Usergroup

 

Danach klickt ihr auf Aktualisieren und ihr bekommt eine Liste aller Methoden, die der Dienst anbietet. In unserem Anwendungsfall wählen wir die Methode AddGroup aus.

Und hier wird jetzt für mich eine weitere Stäre von Nintex deutlich, in den meisten Methoden bietet die Oberfläche eine Art Wizard an. Man muss sich nicht mit XML o.ä. auskennen. Die benötigten Felder werden aufgelistet und man gibt dort die Werte ein (SOAP-Assistent). In manchen Fällen aber steht dieser nicht zur Verfügung und man muss über den SOAP-Editor gehen.

Ich will jetzt nur kurz auf die einzelnen Eingaben eingehen. In groupName hinterlegt man den Namen der Gruppe. In diesem Fall ist der Titel des Items der Benutzerdefinierten Liste. Den Gruppenbesitzer hinterlegt ihr unter ownerIdentifier (hier der Ersteller des Items), dieser ist vom Typ “user, was ihr bei ownerType angebt. Den Defaultuser, quasi Mitglied Nr.1, gebt Ihr unter defaultUserLoginName. Jetzt noch eine kleine Beschreibung unter description hinterlegen und fertig!

TIPP: Ein halbes Stündchen habe ich mit der Suche nach den neuangelegten Gruppen verbracht. Ich hatte am Anfang aus Versehen den Webservice auf der Root angesprochen, so dass dort die Gruppen angelegt wurden. Ich war die ganze Zeit in Benutzer und Gruppen in der Website auf der Suche nach den Gruppen, und vermutete, dass ich den Webservice nicht konfiguriert hätte. Als ich dann aber einen Datensatz mit dem gleichen Titel anlegte und die Fehlermeldung bekam, dass es diese Gruppe schon geben würde, war irgendwie klar, dass ich an der falschen Stelle suchte. Ein Kollege fragte mich, auf welcher Ebene ich denn den Dienst ansprechen würde und dann war es klar.

 Also, wenn man die Gruppen nur auf der Website anlegen möchte,muss man die URL oben dementsprechend anpassen: http://<siteurl><website>/_vti_bin/usergroup.asmx

 

Jetzt muss die Gruppe mit Benutzern gefüllt werden; wir bleiben bei dem Web Service suchen uns aber eine andere Methode aus; vorweg wird natürlich eine neue Aktion vom Typ “Web Service aufrufen” hinzugefügt.

Zur Gruppe hinzufügen

Zur Gruppe hinzufügen

 

Als Methode wählt ihr AddUserToGroup aus. Auch hier möchte ich nur kurz die einzelnen Felder erläutern. In den Feld groupName hinterlegt ihr die Gruppe, die ihr im ersten Schritt erstellt habt. Die nächsten drei Eingaben (userName, userLoginName und userEmail) betreffen den Benutzer, den ihr der Gruppe hinzufügen wollt; in Verbindung mit userNotes wird beim Ablauf des Workflows die übliche bedingt customizebare Mail an den Benutzer geschickt. Soweit klar? (Fragen wie immer gerne in den Kommentaren).

Wir haben jetzt eine Gruppe erstellt, die mit Benutzer(n) gefüllt und gehen jetzt an die eigentliche Berechtigungsvergabe. Hierfür fügt ihr einen weiteren Web Service Aufruf dem Workflow hinzu. Den jetzt benötigten Permission-Webservice sprecht ihr mit der URL http://<siteurl>/_vti_bin/permissions.asmx an.

 

Rechtevergabe

Rechtevergabe

 

Nach der Angabe der URL und den Credentials sucht ihr euch die Methode AddPermission aus. Die jetzigen Eingaben sind zum Teil etwas erklärungsbedürftig. Unter objectName hinterlegt ihr das Objekt, auf das ihr die Rechte setzen wollt. In unserem Fall ist es mal die Website, auf der der Workflow läuft, den kann man sehr schön unter den Referenzen (kleines Büchlein rechts vom Feld) auswählen. Dann müsst ihr der Aktion auch noch mitgeben, von welchem Typ das Objekt ist. Unter permissionIdentifier hinterlegt ihr die Gruppe oder die Person, die auf der Website berechtigt werden soll. Hier ist es die Gruppe, die wir oben erstellt haben und die hat ja als Namen den Titels des Items. Und auch hier muss man (unter permissionType) den Typ des Objekts angeben.

Jetzt wird es ein bisschen schwieriger. Unter permissionMask müsste ihr jetzt das Recht eintragen, dass die Gruppe auf die Website bekommen soll. Am Ende des Artikels habe ich ein paar Links zu diesem Thema aufgelistet, u.a. findet ihr hier eine Liste von PermissionsMasks.

TIPP: Auf der einen Seite (MSDN) werden die Werte hexadezimal angegeben: 0x00000100, wenn man das so dort einträgt, bekommt man einen Fehler, da das Feld vom Typ Integer ist und auf das x sehr allergisch reagiert.

Das war’s eigentlich auch schon. So sieht der Ablauf aus:

 

Workflow

Workflow

 

Jetzt noch die Einstellungen für den eigentlichen Workflow hinterlegen (wann soll der Workflow starten, Name, etc.; vieles davon habe ich hier schon im Rahmen eines anderen Workflows beschrieben) und los geht’s

Fragen? Einfach in den Kommentaren hinterlegen.

Links:

SPRights Enumeration (englisch, MSDN)

How To: Create SharePoint Groups in Nintex Workflow 2010 (englisch, sehr gute aber auch kurze Erklärung)

SharePoint Foundation 2010 Web Services (englisch, MSDN)

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.