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.




Vermeiden von Rekursiven Aufrufen bei einem Genehmigungs-Workflows

Unbeantwortet Dieser Beitrag hat 3 Antworten

Ohne Rang
49 Beiträge
Wolfgang erstellt 15 März 2018 14:51
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Hallo zusammen,

ich hoffe einer von euch kann mir bei meinem Problem helfen.

Ich habe einen Workflow (2010er) erstellt. Der Workflow prüft ob bestimmte Bedingungen erfüllt sind, wenn ja schränkt er die Berechtigungen auf dem aktuellen Element ein und startet einen Genehmigungsworkflow mit eingeschränkten Berechtigungen. Nach Abschluss des Genehmigungsworkflows wird  die Berechtigungsverebung wieder hergestellt und das Element erhält die "alten" Berechtigungen zurück. Ich möchte damit vermeiden, dass ein Dokument von einem User während des Genehmigungs-WF geändert werden kann.

Im WF wechsel ich mehrfach zwischen normalen Schritten und Identitätswechselschritten hin und her ... um eine saubere Dokumentation im Versionsverlauf zu erhalten.

Das ganze läuft auch zu 95% sauber durch. Manchmal bekomme ich aber einen Fehler zwischen den Schrittwechseln ... also immer dann wenn an den Berechtigungen geschraubt wird. 

Teilweise war das Dokument geöffnet, dass haben wir jetzt organisatorisch geregelt. In anderen Fällen komme ich aber nicht dahinter wo der Fehler her kommt.

Im Log ist vermerkt, dass Rekursive WFs nicht zulässig sind.

Das einbauen von Pausen hat leider auch nicht geklappt - da läuft der WF direkt auf einen Fehler.

Hat von Euch einer noch eine Idee woran es liegen könnte. 

Beste Grüße und vielen Dank

Wolfgang

Alle Antworten

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 15 März 2018 15:52
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Das Einzige, was da hilft, sind Pausen an den richtigen Stellen. Offenbar hast Du diese richtigen Stellen aber noch nicht gefunden. Im Prinzip braucht es z.B. eine Pause zwischen Änderungen an einem Listenelement und Ändern der Berechtigungen für dieses Listenelement. Es gibt aber noch ein paar andere solche Bedingungen.

[quote user="Wolfgang"]Im Log ist vermerkt, dass Rekursive WFs nicht zulässig sind[/quote]

Das ist eine Standardfehlermeldung, die man getrost ignorieren kann. Das wird protokolliert, wenn ein Workflow, der bei Änderungen automatisch startet, das Element ändert, an dem er hängt.

Viele Grüße
Andi
af @ evocom de
Blog
Ohne Rang
49 Beiträge
Wolfgang Als Antwort am 15 März 2018 16:46
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

[quote user="Andi Fandrich"]

Das Einzige, was da hilft, sind Pausen an den richtigen Stellen. Offenbar hast Du diese richtigen Stellen aber noch nicht gefunden. Im Prinzip braucht es z.B. eine Pause zwischen Änderungen an einem Listenelement und Ändern der Berechtigungen für dieses Listenelement. Es gibt aber noch ein paar andere solche Bedingungen.

[/quote]

Hallo Andi,

danke für die schnelle Antwort. Ich habe die Pause vor den Aufruf des Identitätswechsel-Schritts gesetzt. Also ans Ende der Abfrage die noch im Rahmen des angemeldeten Users läuft. Der Workflow läuft danach - genau an dieser Stelle - auf einen Fehler. Am Anfang des Identitäts-Wechselschritts passiert das gleiche. In diesem Schritt ist lediglich das setzen der Berechtigungen ... Ist das nicht die richtige Stelle? Hast du einen Tipp auf was ich achten muss?

Vielen Dank und viele Grüße

Wolfgang

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 16 März 2018 08:50
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Im Grunde hört es sich so an, als ob Du schon alles richtig hättest. Direkt vor und nach einem Identitätswechselschritt braucht es keine Pause, weil der Identitätswechsel das implizit erledigt. Aber es gibt viele Situationen, in denen das nötig ist. Der klassische Fall ist eben (wie oben geschrieben) Änderungen an einem Element und danach Berechtigungen für dieses Element.

Es geht dabei immer um den Kontext. Der Workflow hält im Hintergrund z.B. ein Element. Daran werden Änderungen gemacht. Dann passiert etwas und es werden wieder Änderungen gemacht. Wirklich gespeichert werden die Änderungen aber immer erst, wenn es irgendwie eine Pause gibt. Das kann eine explizite Pause sein oder auch implizit zum Beispiel eine Aufgabe, bei der auf Erledigung gewartet wird. Und dann gibt es eben Aktionen wie die mit den Berechtigungen, die mit einem eigenen Element arbeiten. Deshalb muß man dafür sorgen, daß vorher alle Änderungen gespeichert werden.

Viele Grüße
Andi
af @ evocom de
Blog