Dokument aus Workflowakte via Mail verschicken

Hallo Community,

seit ein paar Tagen tüftele ich an einer Möglichkeit aus dem Workflow heraus serverseitig ein Dokument aus der Workflowakte via Mail verschicken zu können.

Ich arbeite in VBS.

Methode 1:
iRet = wfSystem.SendMail(sMailReceiver, sEmailSender, sSubject, sBody, oAttachment)
Methode 2: krn.SendMail

Beide Methoden verlangen einen „Filepath“ im String Format

Meine Versuche:

  1. Über das IComFileDoc: leider existiert keine Methode, um den „Path“ des in der Akte liegenden Documents auszulesen.

  2. Set oJob = initJob("std.StoreInCacheDirect") path = oRC.ServerData.TempDir oJob.InputParameters.AddNewIntegerParameter "Flags", 1 ' only file is transmitted oJob.InputParameters.AddNewIntegerParameter "dwObjectID", iObjectId oJob.InputParameters.AddNewStringParameter "Path", path lRet = runJob()

Scheitert an fehlenden Rechten des „SERVER_ROOT“ accounts auf dem temppfad?

  1. std.StoreInCacheByID
    scheitert auch an Berechtigungsproblemen

Die Mailmethoden 1 und 2 funktionieren. Aus dem Gleichen Skript verschicke ich auch ein .os file, dass ich zuvor im Skript erstellt habe.

Ich bin erstaunt, dass OS hierfür keine Methode im IComFileDoc vorgesehen hat…

Über Ideen und Gedankenanstöße würde ich mich freuen.

Grüße

Das ist die Lösung:

		' Store file in cache and receive filepath
		path = oRC.ServerData.TempDir
		
		Set oJob = initJob("std.StoreInCacheDirect")
		oJob.InputParameters.AddNewIntegerParameter "Flags", 1 ' only file is transmitted
		oJob.InputParameters.AddNewIntegerParameter "dwObjectID", iObjectId 
		oJob.InputParameters.AddNewStringParameter "Path", path
		lRet = runJob()

		oAttachment = oJob.OutputParameters(2).Value ' File_0: Pfad zu temporärer Datei

Geht:
debug2File("Test: " & oJob.OutputParameters(2).Name & "Value: " & oJob.OutputParameters(2).Value)
Geht nicht:

For j = 1 To oJob.OutputParameters.Count
	            debug2File("j=" & j & " Name= " & oJob.OutputParameters(j).Name)
Next

Die Collection startet bei 1..
Sind die 6 outputparameter des Jobs.
Hat jemand eine Idee, warum die For Schleife failt?

2 Likes

Hallo @VK, ich bin erstmal total verwirrt, dass das geht. Normalerweise mag es VBScript doch nicht, wenn man einen Aufruf mit Klammerung macht, aber keine Zuweisung hat, also:

x = InputBox("Test") ' geht
InputBox("Test") ' geht, meinte ich, nicht

Hier würde ich gerne nochmals ansetzen. Der Workflow sollte hier doch mit Systemrechten laufen, oder? Welche Fehlermeldung kommt denn hier zurück?

(Ich frage auch mal intern nach, ob wir ein Beispiel-Script haben.)

Moin,
@Aufruf: im Prinzip ist es ja nur ein Wert, der einer Funktion übergeben wird. Sogesehen steht es ja nicht ohne Deklaration im Raum, sondern wird direkt weiterverwendet.

StoreInCacheByID hat bei uns in ein Schreibgeschütztes Verzeichnis geschrieben.. Mit eigener „path“ angabe konnte ich das Problem umgehen.

Der API-Endpunkt std.StoreInCacheDirect gibt meines Wissens einfach den direkten Pfad zum Workverzeichnis zurück – was etwas riskant ist. Das funktioniert in serverseitigen Workflow-Events, aber man muss unbedingt achten, dass man die Datei nicht verändert oder löscht. Wollte das kurz erwähnen mach dem ich da vor Jahren mal den Fehler gemacht hatte :confused: . Es gibt enaio APIs, die Input Files nach dem Transfer selbsttätig aufräumen.

@VK Wie hast du den Pfad für den std.StoreInCacheById im WF-Event angepasst?