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

Vermeiden von Rekursiven Aufrufen bei einem Genehmigungs-Workflows

bewertet von 0 Usern
Nicht beantwortet Dieser Beitrag hat 0 Geprüfte Antworten | 3 Antworten | 1 Follower

Top-500-Beitragsschreiber
42 Beiträge
Wolfgang erstellt in 15 Mrz 2018 14:51

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

Top-10-Beitragsschreiber
18.977 Beiträge

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.

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

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
Top-500-Beitragsschreiber
42 Beiträge

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.

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

Top-10-Beitragsschreiber
18.977 Beiträge

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
Seite 1 von 1 (4 Elemente) | RSS