Freitag, 5. Dezember 2014

InfoPath/Nintex Workflow - Repeating Table auslesen

InfoPath ermöglicht mit Hilfe des Steuerelements „Wiederholte Tabelle" (Repeating Table) das Einfügen von Datensatz-Zeilen in einem Formular. Ein einfaches Beispiel wäre eine Bestellung mit mehreren Positionen. Zu jeder Position soll die Menge und die Artikelbezeichnung angegeben werden. Eine Bestellung kann mehrere Positionen haben. Die wiederholte Tabelle ermöglicht das Einfügen von weiteren Zeilen mit den Feldern „Artikelbezeichnung" und „Menge" der einzelnen Position.

Gegeben sei ein InfoPath Formular zur Erfassung einer Bestellung. Das Formular wurde in einer Formularbibliothek im SharePoint veröffentlicht und enthält eine wiederholte Tabelle. Die Felder eines InfoPath Formulars lassen sich mit Hilfe der Property Promotion als Spalten in SharePoint anzeigen. Bei Feldern in einer wiederholten Tabelle (wiederholtes Feld) ist dies zwar möglich, allerdings stehen in der SharePoint Spalte nur die Daten der ersten Zeile der Tabelle. Mit Nintex Workflow ist es möglich, auf einzelne Zeilen einer wiederholten Tabelle zuzugreifen, um zum Beispiel aus den einzelnen Positionen in einer zweiten Liste neue Elemente anzulegen.
 
Beim Absenden des Formulars wird eine XML-Datei in der Formularbibliothek gespeichert. Diese XML-Datei kann im Nintex Workflow ausgelesen werden.
 
Zum Auslesen der XML-Datei wird die Aktion „Query XML" verwendet. In der Konfiguration der Aktion kann mittels XPath auf die Formularfelder zugegriffen und in einer Collection Variable gespeichert werden. Wir speichern die Artikelbezeichnung in der Variable „collArtikel" und die Menge in der Variable „collMenge".


In den Collection Variablen werden die Daten aller Zeilen gespeichert. Mit Hilfe einer For Each Schleife kann die Collection Variable durchlaufen, die einzelnen Datensätze (Zeilen) zusammengesetzt und ein neues Element in einer zweiten Liste erstellt werden.



In der For Each Aktion wird eine der beiden Collection Variablen angegeben und eine Output Variable festgelegt.


Wichtig an dieser Stelle ist eine Variable für den Index. Diese wird benötigt, um in einem weiteren Collection Vorgang den richtigen Datensatz für die Menge auszulesen.
 
Innerhalb der For Each Schleife muss für jedes Feld aus der wiederholten Tabelle ein Collection Vorgang platziert werden. Aus der Variable collMenge wird das Element mit dem Index „numIndex" (aktuelles Element der For Each Schleife) ausgelesen und der Wert in der Variable „Menge" gespeichert. 


Nach den Collection Vorgängen zum Auslesen des Datensatzes, kann innerhalb der For Each Schleife eine Create List Item Aktion hinzugefügt werden, um für jede Position der Bestellung in einer separaten Liste ein neues Listenelement anzulegen.

InfoPath/Nintex Workflow - Delegieren von Workflowaufgaben

Nicht selten kommt es vor, dass mit Hilfe eines Formulars Daten erfasst werden und nach Absenden des Formulars ein Nintex Workflow startet. Dieser Workflow könnte zum Beispiel die Genehmigung oder Prüfung eines Antrages darstellen. Angenommen Sie haben ein recht komplexes InfoPath Formular mit mehreren Ansichten auf denen Daten eingegeben werden müssen sowie eine Ansicht für den Prüfer des Formulars.

Im Formular wählt der Antragsteller einen Zuständigkeitsbereich aus, der für die Prüfung notwendig ist. Das Formular wird ausgefüllt, abgesendet und der Bearbeiter erhält die Benachrichtigung über eine neue Aufgabe. Er öffnet das Formular und stellt fest, dass die Bearbeitung in einen anderen Zuständigkeitsbereich fällt. Aus Sicht des Prüfers wäre es praktisch in der Prüfer-Ansicht eine andere Person oder Gruppe anzugeben und die Aufgabe zu delegieren.
 
Zur Delegierung der Workflowaufgabe wird der Nintex Workflow Webservice und die zwei Methoden „GetRunningWorkflowTasksForCurrentUser" und „DelegateTask" verwendet. Erstere wird dazu genutzt, um die entsprechende Workflowaufgabe auf dem aktuellen Dokument nachzuschlagen. Mit der „DelegateTaks" Methode wird die Aufgabe letztendlich delegiert. Beide Datenverbindungen sollen nicht beim Öffnen des Formulars automatisch abgefragt werden. Für die Aufgabendelegierung wird das Formular wie folgt aufgebaut:

 

Das Feld „File URL" (Textfeld) dient zur Angabe der URL zum Dokument, auf der der Workflow und die Workflowaufgabe liegen. In einem praktischen Anwendungsszenario kann die File URL automatisch ermittelt werden. Im Feld „Delegate to User" wird der User angegeben, dem die Task neu zugewiesen werden soll.
 
Als erstes wird die Datenverbindung zum Auslesen der aktuellen Aufgaben ID angelegt. Der Nintex Workflow Webservice kann wie folgt aufgerufen werden:

http://<sitename>/_vti_bin/nintexworkflow/workflow.asmx

Wir verwenden hier die Methode „GetRunningWorkflowTasksForCurrentUser".

Am „Query Task ID" Button erstellen wir eine Regel, die als erste Aktion die File URL aus dem Textfeld im Formular in das Query Feld „fileURL" der eben angelegten Datenverbindung schreibt. Mit der zweiten Aktion dieser Regel wird die Datenverbindung abgefragt.

 

Ein Klick auf den "Query Task ID" Button fragt, bei eingegebener File URL, alle benötigten Informationen zur Nintex Workflow Aufgabe zum dazugehörigen Element ab. Als nächstes kann die eigentliche Delegation der Aufgabe eingerichtet werden. Dazu wird zunächst die Datenverbindung benötigt, die den Nintex Workflow Webservice aufruft und diesmal die Methode „DelegateTask" verwendet.

Am „Delegate User" Button wird eine Regel angelegt, die zunächst alle benötigten Query Felder der Delegate Task Datenverbindung füllt und anschließend die Datenverbindung abfragt.


 

Der Wert für die „spTaskId" erhalten wir aus der „GetRunningWorkflowTasksForCurrentUser" Datenverbindung. Den „taskListName" und den Kommentar setzen wir in diesem Beispiel auf einen fixen Wert. Die Person, an die die Aufgabe delegiert werden soll, wird über ein Personen oder Gruppenfeld im Formular festgelegt. Mit der Checkbox „sendNotification" kann festgelegt werden, ob der neue Bearbeiter der Aufgabe eine E-Mail Benachrichtigung erhalten soll. Nach dem Setzen der Felder wird letztendlich die Datenverbindung abgefragt und die Aufgabe entsprechend delegiert.
 
Das Formular ist nun fertig eingerichtet. Im Feld File URL tragen wir einen Link zu einem Dokument mit einem laufenden Workflow inklusive einer Workflowaufgabe, die mir zugewiesen ist, ein. Mit Hilfe des „Query Task ID" Buttons erhalten wir die entsprechende Task ID der Aufgabe. Im Feld „Delegate to User" legen wir fest, wem die Aufgabe zugewiesen werden soll. Die Checkbox steuert den Versand einer E-Mail Benachrichtigung zur Delegation der Aufgabe.

Microsoft Gold Partner

Eine Profilierung als Gold Certified Partner im Microsoft Partner Programm ist der höchste Partnerstatus den Microsoft zu vergeben hat. Der Gold Status ist Auszeichnung aber zugleich auch eine jährlich wiederkehrende Herausforderung, da Microsoft hohe Anforderungen an die Vergabe dieser Auszeichnung stellt. Die Nachweise zu Qualifikation und Zertifizierung von Mitarbeitern sowie zu Praxiserfahrung sind jährlich aufs Neue zu erbringen.
Auch für das Jahr 2015 haben uns in den Microsoft Kompetenzen „Collaboration and Content“, „Application Development“ und „Midmarket Solution Provider“ wieder profiliert.
So können wir Sie auch im Jahr 2015 wieder mit aktuellstem Know-How in Ihren Projekten begleiten.