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.




Infopath Speicherfehler 5567

Unbeantwortet Dieser Beitrag hat 3 Antworten

Ohne Rang
29 Beiträge
Ronnyengelhardt erstellt 17 Feb. 2017 17:04
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Hallo,

ich habe einen Speicherfehler beim Absenden einer Infopath Form.

Der Fehlercode heißt 5567 und behauptet, dass ein anderer User das Formular gleichzeitig bearbeitet hat.

Nun habe ich schon lokalisiert, dass es am Workflow liegt der im Hintergrund abläuft.

Ablauf wie folgt:

Der User legt ein Element in einer Liste anhand eines Infopath Formulares an. Das Neuanlegen und speichern funktioniert mit Infopath Form einwandfrei. Danach startet ein Workflow der bestimmte Felder im Listenelement bei Bedarf abändert.
Nun das Problem öffnet ein Nutzer während der Workflow startet oder schon angelaufen ist, so kann er in der Infopath Form nicht mehr speichern und erhält den Speicherfehler 5567.
Nun habe ich bereits gelesen dass eine Pause vor dem Beginn des Workflows das ganze umgehen soll, aber das nützt leider nichts wenn der Nutzer genau nach der Pause das entsprechende Listenelement öffnet, da er dann auch wieder nicht speichern kann.

In den Logs stehen bei diesem Fehler teilweise unterschiedliche Gründe aber dieser hier kommt am häufigsten: Leaving Monitored Scope (Request (POST:https://beispiel.de:443/Bewirtung/_layouts/15/Postback.FormServer.aspx)). Ausführungszeit=325,699704850756

Habe ich hier einen Designfehler gemacht?

Alle Antworten

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 17 Feb. 2017 17:12
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Ich nehme mal an, daß der Workflow bei Neuanlage automatisch starten soll? Falls ja, dann darf der Workflow zunächst nichts an den Daten ändern, bis der Benutzer fertig ist. Das kann man z.B. machen, indem man den Workflow warten läßt, bis ein bestimmtes Feld nicht mehr leer ist. Das Feld kann auch für den Benutzer unsichtbar sein und es wird gefüllt, wenn das Formular endgültig gespeichert wird (per Regel in InfoPath). Oder man arbeitet mit Check-In/Check-Out und der Workflow wartet dann, bis das Formular eingecheckt wurde.

Viele Grüße
Andi
af @ evocom de
Blog
Ohne Rang
29 Beiträge
Ronnyengelhardt Als Antwort am 17 Feb. 2017 22:19
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Hallo,

zunächst nochmal zur Erläuterung. Der User legt ein Listenelement durch eine angepasste Infopath Form an.
Das funktioniert soweit wunderbar mit meiner Infopath Form.
Der für mich wichtige Workflow startet bei jeder Änderung des angelegten Listenelementes.
Ich kann in dem angelegten Listenelement auch nicht wissen wann der User fertig ist, da ich nicht vorhersehen kann welche Felder er ausfüllt oder nicht.

Nun meine Fragen:

1. Ich hab bereits gesucht ob man Listenelemente ein oder auschecken kann aber in den Ribbons bzw. SP-Designer im Workflow nichts gefunden. Ich gehe mal davon aus, dass dies nur funktioniert wenn man das ausgefüllte Formular in einer Dokumentenbibliothek anlegt. Dazu müsste ich aber wieder einiges ändern, da bei mir nicht das Formular selbst vom User in einer Bibliothek bearbeitet wird, sondern ein Listenelement mit einer angepassten EditForm mit Hilfe von Infopath. Eventuell denk ich da gerade auch etwas zu kompliziert und es sind nur wenige Änderungen in meinem System dafür notwendig.

2. Aus deinen Hinweisen würde ich nunmal folgendes probieren:

a) Jedes mal wenn ein User ein Listenelement öffnet setze ich beim Formularladevorgang ein Feld user_active=true, sollte nun im Hintergrund ein Workflow versuchen zu starten soll er solange warten bis die Form vom User wieder geschlossen wird und beim Schließen automatisch das Bit wieder auf false gesetzt wird. Nun müsste ich mir nur nochmal überlegen wie ich den Fehler abfange falls ein User das Formular einfach offen lässt und nicht mehr schließt. Dann muss ich ja das Bit irgendwie wieder auf false setzen oder nen Timeout beim Workflowwartevorgang rein basteln.

b) Und falls der Workflow schon im Hintergrund läuft während ein User das Element öffnet könnte man dem Workflow ja bei Beginn ebenfalls ein Bit setzen lassen z.B. Workflow_aktiv und der Nutzer wird zu einer Infopath Formularansicht umgeleitet die darauf hinweist, das gerade ein Workflow im Hintergrund läuft und die Bearbeitung für kurze Zeit gesperrt ist.

 

Was mich aber noch wundert, ich habe schonmal eine andere Lösung ohne Infopath implementiert, da hatte ich nie die Probleme beim Speichern obwohl auch dort im Hintergrund ein Workflow lief. 

Sind meine Vorschläge soweit ok oder hättest noch andere eventuell benutzerfreundlichere Vorschläge?

Vielen Dank im Voraus!

Ohne Rang
496 Beiträge
Derby Als Antwort am 20 Feb. 2017 16:11
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

[quote user="Ronnyengelhardt"]

Habe ich hier einen Designfehler gemacht?

[/quote]

Ja und Nein. :)

[quote user="Ronnyengelhardt"]

a) Jedes mal wenn ein User ein Listenelement öffnet setze ich beim Formularladevorgang ein Feld user_active=true, sollte nun im Hintergrund ein Workflow versuchen zu starten soll er solange warten bis die Form vom User wieder geschlossen wird und beim Schließen automatisch das Bit wieder auf false gesetzt wird. Nun müsste ich mir nur nochmal überlegen wie ich den Fehler abfange falls ein User das Formular einfach offen lässt und nicht mehr schließt. Dann muss ich ja das Bit irgendwie wieder auf false setzen oder nen Timeout beim Workflowwartevorgang rein basteln.

b) Und falls der Workflow schon im Hintergrund läuft während ein User das Element öffnet könnte man dem Workflow ja bei Beginn ebenfalls ein Bit setzen lassen z.B. Workflow_aktiv und der Nutzer wird zu einer Infopath Formularansicht umgeleitet die darauf hinweist, das gerade ein Workflow im Hintergrund läuft und die Bearbeitung für kurze Zeit gesperrt ist.

[/quote]

Das öffnen eines Formulars und Ändern eines Werte triggert noch keinen Workflow. Erst auf das Speichern [item.update()] reagiert der Workflow. Es sei den es gibt spezielle Regeln, die beim Ändern eines Feldes ein Speichern auslösen.

Was Du hier jetzt machen könntest, wäre beim öffnen des Formulars zu prüfen ob der Workflow läuft. Das könnte anhand der Workflow-Statusspalte oder eines Felds user_active=true, welches der Workflow beim Starten/Beenden jeweils umschaltet, erfolgen. Wenn das Feld einen bestimmten Wert hat, wird das Speichern des Formulars deaktiviert. Die InfoPath-Speicherfunktion deaktivieren und eine Button einbauen, diesen per Regel ein/ausblenden.  Ein spezielle Form würde hier nicht reichen, wenn die Speicher-Funktion nicht angepasst wurde.

Weitere Möglichkeit wäre ein Element aus der Ansicht auszublenden, solange der Workflow läuft (Workflowstatusspalte).

Du must Dir allerdings bewusst sein, das Du das Problem nicht 100% verhindern kannst, da man bei Listenelementen keine Meldung bekommt, das schon jemand anderes daran Arbeitet, wie bei Dokumenten, Egal ob Standard oder InfoPath.

Dirk