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.




Fehler in Workflow mit Variblen/Initiierungsparametern

Unbeantwortet Dieser Beitrag hat 5 Antworten

Ohne Rang
70 Beiträge
Jan Er erstellt 9 Apr. 2015 16:15
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Hallo Zusammen,

ich möchte einen WF bauen den ich aber irgendwie nicht hinbekomme, ich hole etwas aus und beschreibe mal alles, auch mein Problem – vielleicht hat jemand einen anderen Lösungsansatz oder weiß wie ich mein Problem behoben bekomme!

Folgende Ausgangssituation:
Eine Aufgabenliste (eigener Inhaltstyp) mit den Personenfeldern „Federführung“ (FF)  und „Weitere Beauftragte“ (WB).  
Bei FF ist nur ein Wert zulässig, WB kann mehrere Werte aufnehmen, kann aber auch leer sein.
Nach dem Anlegen einer Aufgabe läuft ein WF der einige Dinge macht, u.a. eMails an FF+WB senden und die Berechtigungen des Elements ändert so dass nur FF+WB und eine weitere Gruppe „Sekretariat“  Änderungen an dem Auftrag vornehmen können.

Aufgabe:
Ich möchte einen zweiten WF haben der manuell durch die Gruppe Sekretariat gestartet werden kann und die Möglichkeit bietet FF+WB zu ändern (Personen hinzufügen/löschen), die Rechte anpasst und an alle neuen Personen eine eMail versendet.

Hier scheitere ich irgendwie – ich muss ja kumulieren welche Personen bereits Zugriff hatten, welche neu sind und an die Neuen dann eine eMail  senden.

Mein Denkansatz ist folgender: 2 Initiierungsparameter (Neuer FF, Neue WB) sowie 2 Variablen (Aktueller FF = FF, Aktuelle WB = WB) und dann:

 

Wenn „Neuer FF“ ungleich „Aktueller FF“
               
Rechte ändern
                eMail senden

Aber hier scheitere ich bereits mit folgendem Fehler im WF-Verlauf: „Koersionsfehler: Die Eingabenachschlagedaten können nicht in den angeforderten Typ umgewandelt werden..“

Ich vermute es liegt daran dass der Initiierungsparameter „Neuer FF“ ein Personenfeld ist, die Variable „Aktueller FF“ allerdings eine Zeichenfolge, ich habe aber gerade keine Idee wie ich das umgehe.

 

Bei den WB werde ich über dieses Problem vermutlich auch stolpern, habe aber noch ein weiteres:

Ich muss ja zunächst die „Neue WB“-Personen berechtigen/anmailen, aber danach zusammen mit den „Aktuelle WB“ zurück in das Feld WB schreiben, wie füge ich denn den Parameter und die Variable zusammen?

 

Ich hoffe ihr konntet mir folgen :-/ und bin für jede Hilfe oder andere Denkansätze dankbar! :-)

 

 

Alle Antworten

Ohne Rang
31 Beiträge
Kuhba Als Antwort am 26 Mai 2015 09:00
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Hi :-)

ich denke, die Geschichte mit dem FF könnte man noch mit dem Designer und einem Workflow hinbekommen, da man hier immer nur eine Person angeben kann.

Die Problematik hast du schon selbst angesprochen, Personenfeld vs. Variable. Vielleicht hilft es schon, wenn du im Workflow den Inhalt des Personenfeldes in eine weitere Variable schreibst (als Zeichenfolge). Natürlich müsstest du dann prüfen, was in der Variable steht (z.B. sich den Inhalt der Variable als Mail schicken). Nur so findest du raus, ob du beide Felder miteinander vergleichen kannst oder ob der Workflow noch irgendwelche unerwünschte Zeichen mit ablegt.

Ein anderer Vorschlag:
Warum erstellt du nicht eine neue Bearbeiten-Ansicht im Designer für das Sekretariat, in der nur die Felder FF und WB editierbar sind? Dann würden die Änderungen direkt am Element geschehen. Das Einzige, was dann schwierig wird, ist das Versenden der E-Mail, wenn sich etwas ändert, da der Workflow ja dann immer gestartet wird, sobald eine Änderung (und da ist es egal, was geändert wurde) durchgeführt wurde. Lösen würde ich dieses Problem mit 2 "versteckten" Textfeldern, in denen immer der "alte" FF bzw. WB steht. dann kann man hier auch wieder vergleichen (sofern das mit der Variable klappt). Wobei das mit den WBs wahrscheinlich mit den Standard-Mitteln nicht gehen wird - zumindest meiner Einschätzung nach.

Grüße

Kuhba

Ohne Rang
496 Beiträge
Derby Als Antwort am 26 Mai 2015 10:43
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Wie Kuhba schon schrieb must du aufpassen dass das Personen Feld und die Variable den selben Typ haben. (Login Name, Anzeigename,ID usw.)

Wenn in der Variable der Login Name steht, tausch die abfrage von:

Wenn „Neuer FF“ ungleich „Aktueller FF“
               
Rechte ändern
                eMail senden

in:

Wenn „Aktueller FF“ ungleich „Neuer FF“ (Rückgabewert = Loginname)
               
Rechte ändern
                eMail senden

Für das Problem mit dem Abfragen von neuen Usern in dem Feld "Neue WB", das könntest du mit einer Schleife in einem 2013 WF prüfen. Also das Feld "Neue WB" auseinander nehmen (trennen nach ; oder #) und prüfen ob der Wert in "Aktuelle WB" vorhanden ist, wenn nein in eine Variable. Wenn alle Werte geprüft, sendest du an diese Variable die Mail nochmal. Ist etwas aufwändig, funktioniert aber. Lässt sich sogar mit einem 2010er nachbauen, allerdings wird der sehr groß ^^.

Derby

Ohne Rang
70 Beiträge
Jan Er Als Antwort am 27 Mai 2015 13:12
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Hallo Zusammen,
danke euch für eure Antworten! :-)

Das erste Problem hatte ich schon selbst gelöst, das lag an falschem Datentyp, es klappt nur mit "Zeichenfolge".

Bei den WBs habe ich es aber nicht so hinbekommen wie ich es gerne hätte! Ich habe aktuell folgendes umgesetzt:

Wenn "Aktuelle WB" = leer

Parameter "Neue WB" berechtigen
eMail versenden
Feld "Aktuelle WB" auf Wert "Parameter neue WB" aktualisieren
WF Ende

Wenn "Aktuelle WB" != leer

Parameter "Neue WB" berechtigen
eMail versenden an Parameter "Neue WB"
Variable "WBSumme" = [AktuelleWB];[Parameter "Neue WB"]
Feld "Aktuelle WB" auf Wert Variable "WBSumme" aktualisieren

 

Hierbei habe ich jedoch das Problem das immer nur der erste Wert vom Parameter "Neue WB" gesetzt wird, alle weiteren werden nicht übernommen. Eine Idee woran das liegt?
Das mit dem 13er WF und Schleife hilft mir in 10 leider nicht :D Habe dich aber auch nicht ganz verstanden glaube ich, wie würde das in dem 10er aussehen den du nachbauen würdest? Das er groß wird ist ja relativ egal, sieht der User ja nicht ;-)

Ohne Rang
496 Beiträge
Derby Als Antwort am 27 Mai 2015 14:56
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Hierbei habe ich jedoch das Problem das immer nur der erste Wert vom Parameter "Neue WB" gesetzt wird, alle weiteren werden nicht übernommen. Eine Idee woran das liegt?
 Du must den Wert des Parameters erst in 1 Variable schreiben (Rückgabewert Anzeigenname), da der String-Inhalt von Workflow-Parametern etwas anders ist. Auch beim E-Mail senden nicht den String nehmen.

<pc:Person xmlns:pc="http://schemas.microsoft.com/office/infopath/2007/PartnerControls"><pc:DisplayName>Derby</pc:DisplayName><pc:AccountId>derby</pc:AccountId><pc:AccountType>User</pc:AccountType></pc:

 Mit dem nachbauen in 2010 meinte ich das du mit Hilfe der Utility-Actions den String der WB-Parameter auseinander nimmst und mit der WB-Spalte vergleichst, was aber bei 10 Werten in der Spalte extrem aufwendig wird, da alles "Hart" im Workflow steht. Daher auch die ^^.

Schau mal ob dir das was bringt.

Ohne Rang
70 Beiträge
Jan Er Als Antwort am 29 Mai 2015 07:23
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

[quote user="Derby"]

Hierbei habe ich jedoch das Problem das immer nur der erste Wert vom Parameter "Neue WB" gesetzt wird, alle weiteren werden nicht übernommen. Eine Idee woran das liegt?
 Du must den Wert des Parameters erst in 1 Variable schreiben (Rückgabewert Anzeigenname), da der String-Inhalt von Workflow-Parametern etwas anders ist. Auch beim E-Mail senden nicht den String nehmen.

<pc:Person xmlns:pc="http://schemas.microsoft.com/office/infopath/2007/PartnerControls"><pc:DisplayName>Derby</pc:DisplayName><pc:AccountId>derby</pc:AccountId><pc:AccountType>User</pc:AccountType></pc:

[/quote]

 

Okay danke, das werde ich nächste Woche mal testen! :-)