SharePointCommunity
Die deutschsprachige Community für SharePoint, Microsoft 365, Teams, Yammer und mit Azure

Sponsored by

Willkommen im Forum Archiv.
Einträge sind hier nicht mehr möglich, aber der Bestand von 12 Jahren SharePoint-Wissen ist hier recherchierbar.




Nintex Workflow schlägt fehl bei "Element in einer anderen Website erstellen"

Unbeantwortet Dieser Beitrag hat 7 Antworten

Ohne Rang
24 Beiträge
Seppi erstellt 25 Aug. 2014 17:48
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Hallo zusammen,

bei einem Nintex Workflow stelle ich ein sonderbares Verhalten fest und hoffe, jemand kann helfen, das Problem zu beheben.

Der Workflow soll bei der Neuanlage eines Elements auf Liste 1 angestoßen werden und mehrere Elemente auf Liste 2 anlegen. Liste 2 ist hierbei eine Liste innerhalb der gleichen Teamsite und mit der gleichen Berechtigungsvergabe.

Der Workflow schlägt zuerst die ID des auf Liste 1 neu angelegten Elementes nach und speichert diese in einer Workflowvariable ("ID-Liste1"). Weiterhin schlägt der Workflow von einer dritten Liste die Spalte "Lieferer" nach. Das soll nicht weiter von Belang sein. Sinn dahinter ist nur, die potentiellen Lieferer, die in dieser Spalte hinterlegt sind alle in einer Collection zu speichern um später einzeln auf sie zugreifen zu können. Die Collection heißt "Lieferer".

Nun starte ich eine Schleife. Bei jedem Durchlauf der Schleife soll ein Element auf Liste 2 angelegt werden. Dazu benutze ich die Workflowaktion "Element in einer anderen Website erstellen". Bei der Anlage eines neuen Elements auf Liste 2 soll das Feld "ID" mittels der Workflowvariable "ID-Liste1" und das Feld "Lieferer" mitgegeben werden. Den sich jeweils aktuell im Zugriff befindlichen Lieferer hole ich mir per Collection-Operator aus der zuvor erstellten "Lieferer"-Collection.

Die Erwartung wäre, dass die Schleife n Mal durchlaufen wird (je nach Anzahl der Lieferer in der dritten Liste) und jedes Mal ein neues Element auf Liste 2 angelegt wird, das sich im Prinzip nur in dem Wert des Lieferers unterscheidet.

Das Problem ist, dass unabhängig davon wieviele Elemente sich in der dritten Liste, aus der die verschiedenen Lieferer ausgelesen werden, befinden, der Workflow immer beim 2. Schleifendurchlauf mit Fehler abbricht. Im Workflowprotokoll wird bei der Aktion "Schleife" "unvollständig ausgegeben. Das komische ist, der erste Schleifendurchlauft funktioniert ohne Probleme und es wird der erwartete Eintrag erstellt.

Grundsätzlich denke ich auch, dass der Workflow richtig eingestellt ist. Wenn ich beispielsweise eine Benachrichtigung in die Schleife einbaue und mir die mitgegebenen Werte für das neu anzulegende Element angeben lasse, habe ich in jeder Iteration genau die Werte in Zugriff, die ich zu diesem Zeitpunkt auch erwartet hätte.

Kann es sein, dass es zu einem Problem kommt, wenn die Workflowaktion "Element in einer anderen Website erstellen" in einer Schleife verwendet wird und mehr als 1 Element innerhalb eines Workflow-Runs anlegen soll? Und wenn ja, hat jemand eine Idee, wie man das Problem lösen/umgehen kann?

Vielen herzlichen Dank schon mal vorab!

 

Alle Antworten

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 26 Aug. 2014 08:46
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

[quote user="Seppi"]Kann es sein, dass es zu einem Problem kommt, wenn die Workflowaktion "Element in einer anderen Website erstellen" in einer Schleife verwendet wird und mehr als 1 Element innerhalb eines Workflow-Runs anlegen soll?[/quote]

Also normalerweise ist das überhaupt kein Problem. Ich nehme mal an, daß im Workflow doch noch irgendein Parameter nicht bei jedem Durchlauf initialisiert wird und es deshalb beim zweitenmal zu einer Kollision kommt.

Und schaue mal in der Zentraladministration bei den Nintex-Einstellungen. Es gibt dort einen Punkt Safe-Looping, der angehakt sein sollte.

Viele Grüße
Andi
af @ evocom de
Blog
Ohne Rang
24 Beiträge
Seppi Als Antwort am 26 Aug. 2014 10:31
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Hallo Andi,

vielen Dank schon mal für deine Antwort. An die Zentraladministration komme ich leider nicht ran, da ich Nintex lediglich als Power User nutze und kein Admin bin.

Habe die Einstellung des Safe Loopings gegoogled und wie ich es verstehe, soll sie lediglich vor dem Laufenlassen einer Endlosschleife schützen, oder?

Ich glaube aber auch nicht, dass der Fehler erzeugt wurde weil der WF in eine Endlosschleife läuft. Die Schleife ansich wird sauber durchlaufen. Wenn ich beispielsweise anstatt neue Element anzulegen bei jeder Iteration eine Nachricht mit den aktuell in Zugriff befindlichen Werten versende, funktioniert das einwandfrei und auch in der erwarteten Anzahl.

Deshalb will ich nochmal den Ablauf des Workflows etwas genauer beschreiben. Das veranschaulicht das Problem vlt noch etwas besser:

1) Workflowaktion (WFA): Variable setzen
Ich speichere mir die ID des manuell auf Liste 1 neu angelegten Elements in einer Workflowvariable namens "ID-Liste1".

2) WFA: Nachschlagen in Liste
Hier gehe ich auf meine dritte Liste um die potentiellen Lieferer zu referenzieren. Es wird durch die gesamte Liste iteriert und alle Lieferer in der Collection "Lieferer" gespeichert.

3) WFA: Nachschlagen in Liste
Nach dem gleichen Prinzip wie in Punkt 2 soll hier der Ansprechpartern eines Lieferers in persona nachgeschlagen und in der Collection "Ansprechpartner" gespeichert werden.

4) WFA: Variable setzen
Hier wird lediglich der Schleifenzähler "i" definiert und auf den Default-Wert "0" gesetzt.

5) WFA: Collection Operator
Zählen der Elemente in Collection "Lieferer" und speichern des Wertes in die Workflowvariable "cnt_Lieferer". Hierdurch soll die Anzahl der Schleifendurchläufe ermittelt werden.

6) WFA: Schleife
Die Schleife soll laufen, solange "i" kleiner ist als "cnt_Lieferer".
Anmerkung: "kleiner" weil die Iteration durch die Collection ja an Position 0 beginnt.

6.1) WFA: Collection Operator
Holen des aktuellen Lieferers ("tempLieferer") an Position i aus der Collection "Lieferer".

6.2) WFA: Collection Operator
Holen des aktuellen Ansprechpartners ("tempAnsprechpartner") an Position i aus der Collection "Ansprechpartner".

6.3) WFA: Element in einer anderen Webseite erstellen
Liste: "Liste2"
Inhaltstyp: "Element"
Feld ID: "ID-Liste1"
Feld Lieferer: "tempLieferer"
Feld Ansprechpartner: "tempAnsprechpartner"
Titel*: "i"
(den Titel habe ich nur Testweise mit der Zählervariablen befüllt, da sich diese in jeder Iteration ändert und so ausgeschlossen werden kann, dass identische Titel zu Problemen führen)
Neue Element-ID speichern in: <leer> Hier habe ich auch versucht die Neue Element-ID in einer Workflowvariablen zu speichern. Mir ist allerdings nicht bewusst, wofür ich das machen sollte und auch am Ergebnis, nämlich dass der Workflow auf einen Fehler läuft, hat es nichts geändert.

7.) WFA: Mathematische Berechnung
Hochzählen der Workflowvariable "i" um 1 (i = i + 1 gespeichert in i).

 

Da die Schleife korekt durchlaufen wird, wenn ich die WFA "Element in einer anderen Webseite erstellen" entferne, innerhalb dieser WFA aber nicht wüsste, wo noch Parameter fehlen oder vlt falsch eingerichtet sein könnten, weiß ich nicht genau wo ich noch etwas drehen könnte?

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 26 Aug. 2014 10:45
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

[quote user="Seppi"]Habe die Einstellung des Safe Loopings gegoogled und wie ich es verstehe, soll sie lediglich vor dem Laufenlassen einer Endlosschleife schützen, oder?[/quote]

Es geht dabei nicht nur um das Verhindern von Endlosschleifen. Mit Safe Looping wird bei jedem Schleifendurchlauf der Zustand geprüft, eine kleine Pause gemacht und alle ausstehenden Änderungen gespeichert. Ohne Safe Looping rennt der Workflow einfach alles durch.

Du kannst im Workflow innerhalb der Schleife einfach mal die Aktion "Ausstehende Änderungen speichern" einbauen und damit einen ähnlichen Effekt auslösen. Vielleicht hilft das ja.

Viele Grüße
Andi
af @ evocom de
Blog
Ohne Rang
24 Beiträge
Seppi Als Antwort am 26 Aug. 2014 12:45
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Hallo Andi,

danke für die Erklärung und deine Idee für einen Workaround. Habe zum einen beim Admin nachgefragt, ob Safe Looping aktiviert ist. Zum Anderen habe ich versucht deinen Vorschlag "Ausstehende Änderungen speichern" umzusetzen. Ich habe die Aktion direkt hinter die Aktion "Element in einer anderen Webseite erstellen" gepackt, so dass die Anlage des neuen Elements auf Liste 2 zuerst vervollständigt wird, bevor der Workflow weiterläuft. So wäre zumindest mein Verständnis von der Aktion. Ist das korrekt?

Der Workflow schlägt nach wie vor auf den selben Fehler. Beim ersten Durchlauf wird das Element korrekt angelegt, beim zweiten Durchlauf "errort" der Workflow.

Muss ich bei der Aktion "Ausstehende Änderungen speichern" noch etwas besonderes einstellen?

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 26 Aug. 2014 13:15
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Das sollte eigentlich so passen.

Bei der Aktion "Element in anderer Website erstellen" kannst Du doch den Fehler abfangen. Packe den mal in eine Textvariable und lasse sie Dir in den Workflowverlauf ausgeben. Vielleicht erfährst Du dann, was genau schiefläuft.

Viele Grüße
Andi
af @ evocom de
Blog
Ohne Rang
24 Beiträge
Seppi Als Antwort am 26 Aug. 2014 14:02
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Hi Andi,

den Fehler abzufangen hat schon mal geklappt. Er lautet: "Object reference not set to an instance of an object."

Das habe ich natürlich auch schon mal gegoogelt in der Hoffnung, dass das Problem schon mal bei anderen Usern aufgetreten ist. Was wirklich brauchbares habe ich nicht gefunden, lediglich folgenden Thread-Schnippsel:

"It may be that when the item is being created it is not ready yet and the workflow cannot access it. If you insert a delay before the approval actoin, does this help"

Das war der Kommentar des Users, der einen Fehler mit gleicher Fehlerbeschreibung erhalten hat. Allerdings ging es bei Ihm um einen Genehmigungsprozess.

Der Erste Teil der Aussage hat mich darüber nachdenken lassen, ob das auf Liste 1 neu angelegte Element, dessen Neuanlage letztendlich auch den Workflow triggerte, nicht mehr als "neu angelegtes Element" von Sharepoint gesehen wird, sobald ein erstes neues Element durch den Workflow auf Liste 2 angelegt wurde.
-> Diese Befürchtung schließe ich aber auch wieder dadurch aus, dass Benachrichtigungen nach wie vor sauber von der Schleife abgehandelt werden, nur "Element in einer anderen Liste anlegen" kann nicht sauber abgehandelt werden. Es herrscht die gleiche Situation wie zuvor: Erste Schleife läuft perfekt, 2. Durchlauf läuft auf o.g. Fehler.

Der zweite Teil der Aussage zielt glaube ich auf das gleiche ab, wie du mir mit der Workflowaktion "Ausstehende Änderungen speichern" empfohlen hast, oder? Diese Aktion habe ich jetzt sowohl vor als auch nach die Aktion "Element in einer anderen Liste anlegen" gepackt. Hilft trotzdem nix.

ergo: unterm Strich bin ich trotz Fehlermeldung nicht schlauer geworden. Ich verstehe nicht, welche Objektreferenz ich in der zweiten Iteration nicht (mehr) gesetzt haben sollte, die in der ersten Iteration scheinbar vorhanden war?

Einziges Attribut, das ich in der Aktion "Element in einer anderen Liste anlegen" nicht befüllt habe ist "neue Element-ID speichern in", was aber auch kein Pflichtfeld ist.

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 26 Aug. 2014 14:13
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Diese Fehlermeldung ist leider sowas von Standard und damit null aussagekräftig :-(

Ich fürchte, Du wirst hier die IT einschalten müssen. Die könnten mal einen Blick in die Logs werfen und dadurch hoffentlich mehr erfahren.

Viele Grüße
Andi
af @ evocom de
Blog