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.




zeitgesteuerter Workflow zum durchlaufen aller Listenelemente

Geprüfte Antwort Dieser Beitrag hat 8 Antworten

Ohne Rang
9 Beiträge
Mue erstellt 24 Okt. 2014 14:37
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Hallo Zusammen,

Ich bin gerade auf der Suche nach einer Workflowerweiterung für den SharePoint-Designer 2010 die unter SharePoint Foundation 2010 laufen soll. Diese soll regelmäßig (1x pro Woche) alle Elemente einer Sharepoint-Liste durchlaufen und einfach jedes Listenelement für die Weiterverarbeitung mittels Workflow-Designer zur Verfügung stellen.

Zum besseren Verständnis hier eine konkrete Beschreibung. Die Liste enthält diverse Daten zu Messgeräten, unter anderem das Ablaufdatum der Kalibrierung und den jeweiligen Verantwortlichen. Beim Durchlaufen der Liste soll geprüft werden, ob in den nächsten 4 Wochen die Kalibrierung abläuft und wenn ja eine wiederkehrende Mail an den Verantwortlichen senden. Dies habe ich in der Vergangenheit (seit WSS-3 Zeiten) über mehrere verschachtelte Workflows realisiert, die mit der ersten Eintragung des jeweiligen Messgerätes in die Liste gestartet wurden. Da seitdem 7 Jahre ins Land gegangen sind, in denen Serverwechsel, Migration und einspielen von Service Packs stattgefunden haben, ist die Stabilität der Lösung inzwischen leider nicht mehr gegeben. Manchmal werden die Workflows ohne ersichtlichen Grund vorzeitig abgebrochen. Da es sich hier um hunderte Workflows handelt, ist ein sinnvolles "Debuggen" und händisches Eingreifen nicht mehr möglich. Daher soll die bisherige Lösung dringend durch EINEN Workflow ersetzt werden, der eben regelmäßig die ganze Liste durchläuft. Ich denke mit den Bordmitteln des Workflow-Designers ist da nichts zu machen. Kennt jemand eine, möglichst kostenlose, Erweiterung die diesen Listendurchlauf erledigen kann oder gibt es einen anderen Lösungsansatz? Trotz intensiver Suche habe ich da bisher nichts passendes gefunden. Für jede Idee oder weiterführenden Link wäre ich sehr dankbar.

Mit besten Grüßen

Mue

Alle Antworten

Ohne Rang
91 Beiträge
Myrcella Als Antwort am 24 Okt. 2014 14:47
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Also mit Timer-Jobs etc. kenne ich mich nicht aus, aber eine Liste von Elementen durchlaufen kannst du ganz einfach über eine Schleife. Dazu brauchst du einfach eine bedingte Schleife, die so lange läuft, bis eine Variable XYZ einen bestimmten Wert erreicht hat. Dieser Wert sollte mindestens so hoch sein wie die höchste Element-ID in der Liste und muss dementsprechend evtl. bei Bedarf immer mal erhöht werden. Am Ende von jedem Schleifendurchlauf wird die Variable um 1 erhöht. Und in der Schleife führst du eben immer die gewünschten Aktionen für das Element mit ID=Variable:XYZ durch. So mache ich das zumindest immer und bin mit dieser Lösung recht zufrieden.

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 24 Okt. 2014 15:14
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Hallo Mue,

die von Myrcella angebotene Schleife gibt es leider erst ab SharePoint 2013 und auch da nur beim Server.

Im Grunde hast Du die vorhandenen Möglichkeiten schon richtig genutzt. Workflows in 2010 und ihre Möglichkeiten sind immer noch weitgehend dieselben wie in WSS 3 von 2007.

Die von Dir genannten Probleme wie die nicht nachvollziehbaren Abbrüche sind quasi normal und gehören zu den Workflows dazu. Je nach Umgebung betrifft das 1-5 Prozent der laufenden Workflows. Wenn Dich das stört, müßtest Du entweder eine andere Workflowengine verwenden. Nintex verwendet dieselbe wie SharePoint. K2 hat etwas eigenes, aber ich habe selbst keine Erfahrung damit. Oder Du entwickelst selbst etwas wie z.B. einen SharePoint Timerjob. Das braucht aber Visual Studio und entsprechendes Know-How.

Viele Grüße
Andi
af @ evocom de
Blog
Ohne Rang
9 Beiträge
Mue Als Antwort am 24 Okt. 2014 15:56
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Hallo Myrcella, hallo Andi,

Mit derart schnellen Antworten hatte ich jetzt gar nicht gerechnet. Super Reaktionszeit. Die Antworten sind dafür leider recht ernüchternd und fast so, wie ich befürchtet hatte. Die Nutzung mit Schleife über alle Elemente hätte ich natürlich gern genutzt, ist aber im SPD 2010 und in den mir bekannten Erweiterungen (z.B. aus dieser Liste http://sharepointcommunity.de/blogs/mgreth/archive/2011/05/25/sharepoint-designer-2010-custom-workflow-actions.aspx) nicht enthalten. Genau so etwas habe ich ja gesucht. Den regelmäßig wiederholten Aufruf würde ich mit Bordmitteln schon hinbekommen.

Auf dem Sharepoint-Server steht mir leider keine Entwicklungsumgebung (Visual Studio) zur direkten Nutzung der Sharepoint-Klassen zur Verfügung und die Einbindung der notwendigen Klassen "zu Fuß" auf einem Fremdsystem übersteigt dann wohl doch meine Möglichkeiten. Ich hätte jetzt nicht gedacht, dass diese Anforderung so selten ist. Trotzdem schon mal vielen Dank.

Mue

 

Ohne Rang
91 Beiträge
Myrcella Als Antwort am 27 Okt. 2014 07:12
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Hallo Andi,

da war ich wohl etwas übereifrig. Ich hab bisher nur mit 2013 gearbeitet, deswegen hab ich von 2010 nicht so viel Ahnung, sorry...

Dass es im SPD 2010 keine Schleifen gibt, ist mir bisher gar nicht aufgefallen. Meiner Meinung nach kannst du meinen Ansatz trotzdem umsetzen, nur statt einer Schleife nutzt du dazu verschiedene Stufen.

Beste Grüße,

Myrcella

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

Hallo Myrcella,

Schleifen bekommt man mit einem 2010er Workflow nicht hin - jedenfalls nicht mit Bordmitteln. Aber natürlich trotzdem danke für die Antwort. Viele Antworten und damit viele Ideen sind immer besser :-)

Viele Grüße
Andi
af @ evocom de
Blog
Ohne Rang
91 Beiträge
Myrcella Als Antwort am 28 Okt. 2014 08:52
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Okay, du hast recht, das geht tatsächlich nicht. Ganz schön frustrierend.

Ohne Rang
9 Beiträge
Mue Als Antwort am 30 Okt. 2014 09:54
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Ich habe noch einmal intensiver gesucht und einige (angebliche) ältere Lösungsansätze gefunden: http://sharepointgypsy.blogspot.de/2011/11/create-for-each-loop-for-workflows.html, http://sharepointgypsy.blogspot.de/2011/01/sharepoint-designer-workflows-2.html, http://sharepointsolutions.blogspot.com/2008/05/looping-through-items-in-sharepoint.html

Nachdem ich diese getestet habe, musste ich allerdings feststellen, dass sie unter Sharepoint 2010 mit den aktuellen Patches und SP's nicht oder nicht mehr laufen. Grund dafür ist, dass sich Listen-Workflows inzwischen nicht mehr selber aufrufen dürfen, z.B. bei Änderung eines Elements in der Liste, durch die der WF gestartet wird. Solche WF laufen bei mir nur noch 1 mal und brechen dann ab. Außerdem ist der Vorschlag unter dem ersten Link völlig unsicher, da hier mit fest zugeordneten ID (ID =1) beim suchen oder ändern gearbeitet wird und dieses Element spätestens nach einem eventuellen Löschen nie mehr vorhanden sein wird. Daher werde ich jetzt (mangels Direktzugriff auf das Objektmodell auf den Sharepointserver) eine Konsolenanwendung  unter Nutzung der Sharepoint Webservices programmieren, die dann über den Windows Aufgabenplaner regelmäßig alle 7 Tage aufgerufen wird und dann einfach beim ersten Durchlauf den Wert einer ja/nein Spalte auf ja setzt. Dadurch wird dann für das Element der WF bei Änderung gestartet. Dort kann ich den normalen SP Designer Mitteln meine Mails zusammenbauen und versenden. Anschließend wird dann durch die Konsolenanwendung die Spalte zurückgesetzt. Dies ist zwar eigentlich nicht nötig und bedingt dann im obigen SP-WF ein zusätzliche Abfrage, ist aber für die optische Kontrolle ganz sinnvoll. Man bräuchte auch nur eine Zählerspalte hochzählen lassen. Dies hat den zusätzlichen Charme, dass beim aufrufen des Webservices schon alle notwendigen Filter gesetzt werden können, damit die Liste wesentliche kürzer wird und nur noch die wirklich betroffenen Elemente "angesteuert" werden. Somit kann man sich aufwendige  Bedingungsabfragen im Workflow sparen.

Vorschläge zur grundsätzlichen Realisierung dieser Konsolenanwendung findet man hier: http://weblogs.mysharepoint.de/blogs/mgreth/archive/2009/08/25/msdn-code-sharepoint-schnipsel.aspx

Viele Grüße

Mue

 

Ohne Rang
9 Beiträge
Mue Als Antwort am 30 Okt. 2014 12:18
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Noch ein zusätzlicher Hinweis zu meiner oben stehenden Lösung mit den Hochzählen einer Zählerspalte. Das funktioniert nur dann sinnvoll, wenn es keinen anderen Workflow gibt, der auf Änderungen im aktuellen Element reagiert. Man hat damit keine Spalte, die man als Filter zum abbrechen des WF nutzen kann. Mit der Lösung über die ja/nein Spalte funktioniert diese allerdings. Hier kann man in jedem anderen WF auf "Abgearbeitet=nein?" prüfen und nur in diesem Fall den WF fortsetzen.