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.




Workflow über Code starten und Wert übergeben.

Unbeantwortet Dieser Beitrag hat 8 Antworten

Ohne Rang
12 Beiträge
Daniel erstellt 26 Nov. 2010 08:46
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Hallo Zusammen,

ich bin auf ein Problem gestoßen wo ich leider nicht weiterkomme.

Und zwar starte ich einen Workflow mit folgenden Befehl aus dem Code:

"wfm.StartWorkflow(thisItem, wfa, wfa.AssociationData, true);"

 

 

Besteht hier die Möglichkeit eine Variable zu übergeben, die ich im gestarteten Workflow z.B. an eine Action übergeben kann?

Schon mal vorab vielen Dank!

 

Alle Antworten

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 26 Nov. 2010 09:11
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Schreibe den Wert doch in ein (verstecktes) Feld des Elements, auf dem der Workflow läuft.

Viele Grüße
Andi
af @ evocom de
Blog
Ohne Rang
12 Beiträge
Daniel Als Antwort am 26 Nov. 2010 09:29
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Glaube das geht nicht mit dem versteckten Feld.

Der Parameter sollte dem gestarteten Workflow mitteilen, in welcher Zeile innerhalb einer wiederholten Infopath Tabelle er sich befindet.

(Zur info am Rande: Ich möchte innerhalb eines Infopath formulars eine wiederholte Tabelle abarbeiten und an jedes Mitglied innerhalb der Tabelle eine Mail senden. Daher starte ich momentan zum testen manuell einem Workflow, der x-mal nacheinander einen anderen Workflow startet der Paramter soll dabei dem neuen Workflow angeben, in welcher Zeile der Tabelle er sich gerade befindet.)

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 26 Nov. 2010 09:36
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Wie machst Du das denn? Ich nehme an mit Visual Studio Workflows und dann kannst Du das auch gleich in einem einzigen Workflow unterbringen.

Trotzdem kannst Du den gewünschten Parameter in ein Feld schreiben, den Workflow starten und der liest es dann dort wieder aus.

Viele Grüße
Andi
af @ evocom de
Blog
Ohne Rang
12 Beiträge
Daniel Als Antwort am 26 Nov. 2010 09:49
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Danke für deine Antwort! Also ich habe in Visual Studio so eine neue Action erstellt, der ich den Namen des zu startenden Workflos übergebe und die Anzahl, wie oft er ausgeführt werden soll. Da ja immer nur einer gleichzeitig laufen darf werden sie nacheinander abgearbeitet was halt ein paar min geht. Hier ein Link zur Action, die ich verwende:

http://sharepointcommunity.de/forums/p/8229/23399.aspx#23399

Zu deinem Vorschlag.. Meinst ich soll im Infopath Formular ein Feld anlegen, wo ich immer rein schreibe, wo ich gerade bin? Bin mir nicht ganz sicher aber da würde der "Vaterworkflow" sozusagen noch mal neu starten weil das Formular verändert wurde.

 

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 26 Nov. 2010 10:11
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

[quote user="Daniel"]ich habe in Visual Studio so eine neue Action erstellt[/quote]

Da hättest Du doch auch gleich eine Action bauen können, die die gesamte Arbeit übernimmt, d.h. alle Zeilen durchgeht und irgendwas damit macht. Hätte ich für sinnvoller gehalten.

[quote user="Daniel"]Meinst ich soll im Infopath Formular ein Feld anlegen, wo ich immer rein schreibe, wo ich gerade bin? Bin mir nicht ganz sicher aber da würde der "Vaterworkflow" sozusagen noch mal neu starten weil das Formular verändert wurde.[/quote]

So meinte ich das. Wenn der "Vaterworkflow" schon läuft, was ja bei Dir der Fall ist, dann kann er gar nicht nochmal gestartet werden. Das Problem stellt sich also nicht.

Viele Grüße
Andi
af @ evocom de
Blog
Ohne Rang
12 Beiträge
Daniel Als Antwort am 26 Nov. 2010 15:04
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Ich wollte eigentlich vermeiden das alles in eine Action zu packen, da dies ziemlich umfangreich wird. Das was ich hier geschildert habe ist nur ein kleiner Ausschnitt des gesamten Workflows. (In dem Formular sind noch weitere Tabellen mit denen ähnliches geschehen soll und viele mehr :-/.)

Der Wunsch ist daher möglichst viele Actions zu erstellen, damit zum einen alles übersichtlich im Designer einzusehen ist und auch wiederverwendbar bleibt.

Den Vaterworkflow habe ich nicht mehrmals gestartet. Der startet immer ein Kind, geht dann schlafen, prüft regelmäßig ob das Kind fertig ist und soll  dann ein Kind mit der nächsten Zeile starten.

wfm.StartWorkflow(thisItem, wfa, wfa.AssociationData,

 

true);

Der 3. Parameter ist ein XML String und dem hab ich jetzt versucht noch was drauf zu packen. Leider kann ich es dann im Kind nirgens finden. 

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 26 Nov. 2010 15:43
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Das XML ist auch nur ein String, den Du mit der genannten Methode durchreichen könntest. Ansonsten findest Du hier Workflow Actions zum Zugriff auf InfoPath-XML. Vielleicht hilft Dir das:

http://spdactivities.codeplex.com/

Viele Grüße
Andi
af @ evocom de
Blog
Ohne Rang
12 Beiträge
Daniel Als Antwort am 29 Nov. 2010 10:14
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Hab mich jetzt noch mal versucht....

Leider finde ich den XML String nicht im neuen Workflow. Hab dazu mal eine Custom Action geschrieben, der ich ein Breakpoint verpasst habe um zu schauen, wo das XML (hier zum Test ein String) jetzt gespeichert ist...

wfm.StartWorkflow(thisItem,wfa,

 

 

"gesuchter Paramter",true);