Workflows aus einen laufenden Workflow heraus starten

Das Objekt ist laut Optimal Systems der Standarduser vom Server, der dafür genutzt wird, das müsste passen.

Hier ist der Code den ich benutze, um einen Workflow aus einem anderen heraus serverseitig zu starten:

Function StartProcess(sInstanceName)
	Dim sName : sName = "StartProcess"
	Dim sReturn : sReturn = vbNullstring
	Dim oActiveWFModels : Set oActiveWFModels = wfsystem.GetActiveWorkflowmodels
	Dim sProcessId : sProcessId = vbNullstring
	Dim bFoundModel : bFoundModel = False
	Dim oModel
	Dim i
	For i = 0 To oActiveWFModels.count - 1
		Set oModel = oActiveWFModels.item(i)
		sModel = oModel.name
		If lcase(sInstanceName) = lcase(left(sModel,len(sInstanceName))) Then
			bFoundModel = True
			Exit For
		End If
	Next
	
	If bFoundModel Then
 		set params = oModel.inputvariables
		params.item("StartBenutzer").Value = wfvariables.StartBenutzer.Value
	
		set files = oModel.file
		sProcessId = oModel.StartProcess (files, params) ' start process

		If len(sProcessId) > 0 Then ' successfull
			' ...
		Else ' not successfull
			sReturn = "ERROR can't start subprocess for " & sInstanceName & "."			
		End If

		Set params = Nothing
		Set files = Nothing
		Set oModel = Nothing
	Else
		sReturn = "ERROR can't find workflow " & sInstanceName & ". Start subprocess not successfull."
	End If
	
	Set oActiveWFModels = Nothing
	StartProcess = sReturn
End Function

Und mit diesem Code möchte ich den Prozessverantwortlichen im neu gestarteten Workflow hinzufügen:

Sub AddResponsible(orgid)
	On Error Resume Next
	If len(orgid) > 0 Then
		If Not C_WF_ORG_USER (orgid) Then
			rc.logger.error "Kein System User"
			Set oUser = wforganisation.GetOrgObjectById(orgid)
			If Not oUser is nothing Then
				Set listResponsibles = thisprocess.Responsibles
				listResponsibles.Add oUser.id, oUser
				ThisProcess.Responsibles = listResponsibles
			End If
			Set oUser = Nothing
		End If
	End If
	On Error Goto 0
End Sub

Bei der Function „C_WF_ORG_USER“ wird geprüft, ob es sich um einen System User handelt und ist dann entweder true oder false.

Ich weiss, dass wir das irgendwo auch schon mal gemacht haben, finde aber unser damaliges Beispiel nicht mehr. Ich frage nach, ob sich jemand erinnern mag.

1 Like

Guten Morgen @rk

ich wollte nur kurz nachfragen, ob sich eventuell schon etwas ergeben hat? =)

Viele Grüße

Hi, ich würde mal versuchen die Prozessverantwortlichen einmal komplett zu löschen:

ListResponsibles.RemoveAll

Das WF-System3 ist ansonsten in der Auflistung noch drin und das kann er dann wahrscheinlich keinem User zuordnen.

2 Likes

Hi,

danke für den Tipp, das hatte ich auch versucht. Allerdings kommt immer schon beim Zugreifen auf die Verantwortlichen ein Fehler, dass er den WF-System nicht in der Orga-Struktur hat.

Haben es jetzt anders umgesetzt. Wir starten den Workflow unter einem anderen User und fügen dann den Verantwortlichen hinzu, das klappt.

Trotzdem danke für die Hilfe.

Grüße

1 Like