Index: BL/Sys/FOP/Verwerker/tmpDev.mac.rou =================================================================== diff -u -r73436 -r74008 --- BL/Sys/FOP/Verwerker/tmpDev.mac.rou (.../tmpDev.mac.rou) (revision 73436) +++ BL/Sys/FOP/Verwerker/tmpDev.mac.rou (.../tmpDev.mac.rou) (revision 74008) @@ -93,6 +93,7 @@ Set SeqItem=$$asqCreateSeqItemDocBase(TSeq,"PrintPDF","A","vh_printFileProcessor") Do asqAddParamsLoadFileTask(SeqItem,Doc.DataRef) Do asqAddParamsPrintTask(SeqItem,Task.ActionPrint) + Set SeqItem.LogInfo=$$asqGeefLogInfoDocBaseV7() Quit sc /*** =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= ***/ @@ -108,13 +109,14 @@ #define ConvertDateOLD $TR($ZDT($H,8)," :","_") #define ConvertDate $$$FormatYMDHMS($H,"_") - New Task,PrintGroupName,PrinterName,PPODFilePath,PrintFilePath,DestDir,DestName,sc + New Task,PrintGroupName,PrinterName,PPODFilePath,PrintFilePath,DestDir,DestName,sc,DocBaseDirectoryUtils New TSeq,SeqItem Set Task=FopTask ; FopProcess.TaskID Set sc=$$$OK Quit:($$$ISERR(sc)) sc Set PrintGroupName=$S($IsObject(Task.ActionPrint):Task.ActionPrint.OMRCode, 1:"") Set PrinterName=$S($IsObject(Task.ActionPrint):Task.ActionPrint.Printer, 1:"") + Set DocBaseDirectoryUtils = ##class(BL.Sys.FOP.DocBaseDirectoryUtils).%New() Set TSeq=##class(BL.Sys.FOP.Data).NewTaskSequence(Task) Set arTaskSeq(0,"OBJTSeq")=TSeq ; TSeq is passed by this array to the calling method BuildTaskSequence() from class BL.Sys.FOP.Verwerker If (PrintGroupName["\")||($$$LCase(PrintGroupName)[".ps") Do @@ -123,33 +125,34 @@ . Set PrintGroupName="" Else Do . ;Set blnSkipMergePPOD=0 - . Set PPODFilePath=$$$OMRSourceDir_PrintGroupName_".ps" + . Set PPODFilePath=DocBaseDirectoryUtils.GeefOMRSourceDir()_PrintGroupName_".ps" ;Goto:(blnSkipMergePPOD) mpoStartRenamePrint ; Skip MergePPOD, immediatly go to StartRenamePrint // Build Cach�-SeqItem to clean up files before creating the .ps file If $L(PrintGroupName) Do ; 'blnSkipMergePPOD . If 1 Do ; Rename to .BAK - . . Set BackupFilePath=$$$OMRSourceDir_PrintGroupName_"_"_$$$ConvertDate_".ps.BAK" - . . Do AddSeqItemMoveFile(TSeq,$$$CvtFop2Ntw(PPODFilePath),$$$CvtFop2Ntw(BackupFilePath),0) + . . Set BackupFilePath=DocBaseDirectoryUtils.GeefOMRSourceDir()_PrintGroupName_"_"_$$$ConvertDate_".ps.BAK" + . . Do AddSeqItemMoveFile(TSeq,DocBaseDirectoryUtils.ConvertFopLocalDirToNetworkPath(PPODFilePath),DocBaseDirectoryUtils.ConvertFopLocalDirToNetworkPath(BackupFilePath),0) . Else Do ; Delete - . . Do AddSeqItemDeleteFiles(TSeq,$$$CvtFop2Ntw(PPODFilePath),0) + . . Do AddSeqItemDeleteFiles(TSeq,DocBaseDirectoryUtils.ConvertFopLocalDirToNetworkPath(PPODFilePath),0) // Build SeqItem MergePPOD If $L(PrintGroupName) Do ; 'blnSkipMergePPOD . Do AddSeqItemMergePPODGroup(TSeq,PrintGroupName) // Build Cach�-SeqItem to rename/move the PrintFile - Set DestDir=$$$OMRPrintDir + Set DestDir=DocBaseDirectoryUtils.GeefOMRPrintDir() Set DestName=$$$ConvertDate_"_"_##class(%File).GetFilename(PPODFilePath) Set PrintFilePath=DestDir_DestName - Do AddSeqItemMoveFile(TSeq,$$$CvtFop2Ntw(PPODFilePath),$$$CvtFop2Ntw(PrintFilePath),1) + Do AddSeqItemMoveFile(TSeq,DocBaseDirectoryUtils.ConvertFopLocalDirToNetworkPath(PPODFilePath),DocBaseDirectoryUtils.ConvertFopLocalDirToNetworkPath(PrintFilePath),1) ; Quit:(PrinterName="")||(PrinterName="~") sc // Build SeqItem to Print File Set SeqItem=$$asqCreateSeqItemDocBase(TSeq,"PrintOMRFile","A","vh_printFileProcessor") Do asqAddParamsLoadFileTask(SeqItem,PrintFilePath) Do asqAddParamsPrintTask(SeqItem,Task.ActionPrint) + Set SeqItem.LogInfo=$$asqGeefLogInfoDocBaseV7() Quit sc @@ -391,69 +394,9 @@ /*** =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= ***/ FaxRenderToPPODMergeAndSend - Set sc=$$FaxRenderToPPODMergeAndSendSub() + Set sc=$$$ERROR($$$GeneralError,"The method 'FaxRenderToPPODMergeAndSendSub' is no longer supported since October 2024, because FOP server has been phased out.") Quit -FaxRenderToPPODMergeAndSendSub() - New Task,TSeq,CntDocMain,sc,DocM,pxDocMulti,DocKey,Doc, PPODGroupName,PPODFilePath,FaxFilePath,DestDir,DestName,FExt,CmdLine - Set Task=FopTask ; FopProcess.TaskID - Set sc=$$$OK - Set pxDocMulti=Task.DocMulti - Set:('$IsObject(pxDocMulti)) sc=$$$ERROR($$$GeneralError,"FaxTask does not contain a DocMulti-object. Task "_$S($L(Task.%Id()):Task.%Id(), 1:Task)) - Quit:($$$ISERR(sc)) sc - // Prepare Variables - Set PPODGroupName=pxDocMulti.PPODGroupName - Set PPODFilePath=##class(BL.Sys.FOP.CommonTasks).BuildPPODFilePath(PPODGroupName,pxDocMulti.PPODOutputType) - Set blnSkipVoorblad=(pxDocMulti.MetVoorblad=0) - - Set TSeq=##class(BL.Sys.FOP.Data).NewTaskSequence(Task) - Set arTaskSeq(0,"OBJTSeq")=TSeq ; TSeq is passed by this array to the calling method BuildTaskSequence() from class BL.Sys.FOP.Verwerker - // Build SeqItem to render Docs - Set DocKey="" - For Set Doc=pxDocMulti.Docs.GetNext(.DocKey) Quit:(DocKey="") Do - . Do frsSetPPODFields(Doc,PPODGroupName,DocKey) - . Do AddSeqItemRenderAndSaveToPPOD(TSeq,,Doc,0) - // SeqItem to render voorblad. Calc PageCount in advance in case of PROXY-voorblad - Set Doc=pxDocMulti.RenderVoorblad - If ('blnSkipVoorblad)&&($IsObject(Doc))&&($L(Doc.DataFetchType)) Do - . Do frsSetPPODFields(Doc,PPODGroupName,$$$Max(pxDocMulti.Docs.Next("")-1,0)) - . // Build SeqItem to render voorblad - . If (Doc.DataFetchType="PROXY") Do - . . // AddRenderParams Voorblad via PreProcess: Execute Just-In-Time - . . Set CmdLine="Set sc=##class(Sys.FOP.emDocMulti).AddVoorbladRenderParamsVT(TSeq.Task,SeqItem,1)" - . . Do AddSeqItemRenderAndSaveToPPOD(TSeq,,Doc,0, CmdLine,0) - . Else Do - . . Do AddSeqItemRenderAndSaveToPPOD(TSeq,,Doc,0, "", 1) - - // Build Cach�-SeqItem to clean up files before creating the .pdf file - Do AddSeqItemDeleteFiles(TSeq,$$$CvtFop2Ntw(PPODFilePath),0) - // Build SeqItem MergePPOD : create temp .pdf file - Do AddSeqItemMergePPODGroup(TSeq,PPODGroupName) - -#If ($$$UCase($$$Server)="CACHE02") - ;q sc -#EndIf - - // Build Cach�-SeqItem to rename/move the temp-file to FaxDir - Set FaxFilePath=pxDocMulti.GenerateFaxFilePath(PPODFilePath) - Do AddSeqItemMoveFile(TSeq,$$$CvtFop2Ntw(PPODFilePath),(FaxFilePath),1) - - Do:(Task.ActionFax.DoNotSend)||('Task.ActionFax.FaxNr) WLFMT^vhDBG("SeqItem ""FaxSendPDF"" will be skipped! FaxNr="_Task.ActionFax.FaxNr_" Fax.DoNotSend="_Task.ActionFax.DoNotSend, "A") - Quit:(Task.ActionFax.DoNotSend)||('Task.ActionFax.FaxNr) sc - // Build Cach�-SeqItem to Send Fax via WS - Do AddSeqItemFaxSendPDF(TSeq,Task,1,FaxFilePath) - - Quit sc -frsSetPPODFields(Doc,PPODGroupName,SortKey) - New tmpLB - Set tmpLB=Doc.PPODFields - Set:($$$Trim($LG(tmpLB,10))="") $LI(tmpLB,10)=PPODGroupName - Set:($$$Trim($LG(tmpLB,9))="") $LI(tmpLB,9)=PPODGroupName - Set:($$$Trim($LG(tmpLB,8))="") $LI(tmpLB,8)=SortKey - ;d WL^vhDBG("tmpLB="_$$$LCVT(tmpLB)_" PPOD="_PPODGroupName) - Set Doc.PPODFields=tmpLB - Quit - /*** =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= ***/ /// Fax a PDF file from disk: @@ -710,6 +653,7 @@ Set SeqItem=$$asqCreateSeqItemDocBase(TSeq,"PrintPDF","A","vh_printFileProcessor") Do asqAddParamsLoadFileTask(SeqItem,Doc.DataRef) Do asqAddParamsPrintTask(SeqItem,Task.ActionPrint) + Set SeqItem.LogInfo=$$asqGeefLogInfoDocBaseV7() Quit:($$$ISERR(sc)) sc // Build Cach�-SeqItem to delete the .pdf file after printing @@ -756,7 +700,7 @@ Set SeqItem=$$asqCreateSeqItemDocBase(TSeq,"Render+File","A","vh_renderAndSaveToFileProcessor") Set sc=$$asqAddParamsRenderTask(SeqItem,Doc,) Do asqAddParamsSaveTaskVP(SeqItem,$LG(lbFileDef,1),$LG(lbFileDef,2)) - Set SeqItem.LogInfo=$G(LogInfo) + Set SeqItem.LogInfo=$$asqGeefLogInfoDocBaseV7()_$G(LogInfo) Quit AddSeqItemRenderAndFile(TSeq,Task,Doc,blnLogInfo) ; SqItem: DocBase // Build SeqItem Render+File @@ -768,7 +712,7 @@ Set SeqItem=$$asqCreateSeqItemDocBase(TSeq,"Render+File","A","vh_renderAndSaveToFileProcessor") Set sc=$$asqAddParamsRenderTask(SeqItem,Doc,) Do asqAddParamsSaveTask(SeqItem,Task.ActionFile) - Set SeqItem.LogInfo=$G(LogInfo) + Set SeqItem.LogInfo=$$asqGeefLogInfoDocBaseV7()_$G(LogInfo) Quit AddSeqItemRenderAndPrint(TSeq,Task,Doc,blnLogInfo) ; SqItem: DocBase // Build SeqItem Render+Print @@ -780,7 +724,7 @@ Set SeqItem=$$asqCreateSeqItemDocBase(TSeq,"Render+Print","A","vh_renderAndPrintProcessor") Set sc=$$asqAddParamsRenderTask(SeqItem,Doc,) Do asqAddParamsPrintTask(SeqItem,Task.ActionPrint) - Set SeqItem.LogInfo=$G(LogInfo) + Set SeqItem.LogInfo=$$asqGeefLogInfoDocBaseV7()_$G(LogInfo) Quit AddSeqItemRenderAndSaveToPPOD(TSeq,Task,Doc,blnLogInfo,PreProcessCmdLine,AddRenderPNow) ; SqItem: DocBase // Build SeqItem Render+SaveToPPOD @@ -792,7 +736,7 @@ Set SeqItem=$$asqCreateSeqItemDocBase(TSeq,"Render+SaveToPPOD","A","vh_renderAndSaveToPostprocoutdataProcessor",.PreProcessCmdLine) Set:($G(AddRenderPNow,1)) sc=$$asqAddParamsRenderTask(SeqItem,Doc,) Do asqAddParamsSaveToPPODTask(SeqItem) - Set SeqItem.LogInfo=$G(LogInfo) + Set SeqItem.LogInfo=$$asqGeefLogInfoDocBaseV7()_$G(LogInfo) Quit AddSeqItemRenderAndMail(TSeq,Task,Doc,blnLogInfo) ; SqItem: DocBase // Build SeqItem Render+Mail @@ -804,7 +748,7 @@ Set SeqItem=$$asqCreateSeqItemDocBase(TSeq,"Render+Mail","A","vh_renderAndEmailProcessor") Set sc=$$asqAddParamsRenderTask(SeqItem,Doc,) Do asqAddParamsMailTask(SeqItem,Task.ActionMail) - Set SeqItem.LogInfo=$G(LogInfo) + Set SeqItem.LogInfo=$$asqGeefLogInfoDocBaseV7()_$G(LogInfo) Quit AddSeqItemLoadFilesAndMail(TSeq,Task,lbFileNames,blnLogInfo) ; SqItem: DocBase // Build SeqItem LoadFiles+Mail (via DocBase) @@ -814,7 +758,7 @@ Set SeqItem=$$asqCreateSeqItemDocBase(TSeq,"MailFiles","A","vh_LoadAndEmailProcessor") Do asqAddParamsLoadFilesTask(SeqItem,lbFileNames) Do asqAddParamsMailTask(SeqItem,Task.ActionMail) - Set SeqItem.LogInfo=$G(LogInfo) + Set SeqItem.LogInfo=$$asqGeefLogInfoDocBaseV7()_$G(LogInfo) Quit AddSeqItemCacheMailFiles(TSeq,Task,lbFileNames,blnLogInfo) ; SqItem: Cache // Build SeqItem MailFiles (via Cach�) @@ -835,7 +779,7 @@ Set SeqItem=$$asqCreateSeqItemDocBase(TSeq,"XslTransform+File","A","vh_XSLTransformAndFileSequenceProcessor") Set sc=$$asqAddParamsTransformXsltTask(SeqItem,Doc,) Do asqAddParamsSaveTask(SeqItem,Task.ActionFile) - Set SeqItem.LogInfo=$G(LogInfo) + Set SeqItem.LogInfo=$$asqGeefLogInfoDocBaseV7()_$G(LogInfo) Quit AddSeqItemDocPrintToPPOD(TSeq,Task,Doc,blnLogInfo) @@ -848,6 +792,7 @@ New SeqItem Set SeqItem=$$asqCreateSeqItemDocBase(TSeq,"MergePPOD","A","vh_mergePollingConsumerSequenceProcessor") Do asqAddParamsMergePPODTask(SeqItem,PPODGroupName) + Set SeqItem.LogInfo = $$asqGeefLogInfoDocBaseV7() Quit AddSeqItemMergePPODviaTask(TSeq,Task,Doc,blnLogInfo) /// Dit is toekomstmuziek ... @@ -941,6 +886,9 @@ /// Objects : emSeqItem DocBase - Fill /*** =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= ***/ +asqGeefLogInfoDocBaseV7() + Quit "" + asqAddParamsRenderTask(SeqItem,Doc,DocBaseTemplate) #define SourceData $S(SeqItem.DataInType="Stream":SeqItem.DataInStream, 1:SeqItem.DataIn) New blFOPData,lbXsltParams,sc @@ -1078,7 +1026,7 @@ /*** ***/ ExecCacheTask(SeqItem,TSeq) - New TaskName,oLog,msgData,msg + New TaskName,oLog,msgData,msg, lbWaitSeconds,logger,blnExists Set TaskName=SeqItem.OmsID ;d WL^vhDBG("TaskSeq Item inside ExecCacheTask: TaskName="_TaskName_$$$CRLF_$$ObjToText^vhLib(SeqItem)) If TaskName="DeleteFiles" Do @@ -1176,7 +1124,7 @@ ectTaskMailFiles(SeqItem) // Send Mail with Files attached #define AttachBinary 1 - New From,lbTo,Subject,Body,lbAttachments,lbCC,lbBCC, FirstItem + New From,lbTo,Subject,Body,lbAttachments,lbCC,lbBCC, FirstItem,LastItemFilePath,NumberOfItems Set From=SeqItem.Params.GetAt("MailFiles.From") Set lbTo=SeqItem.Params.GetAt("MailFiles.lbTo") Set Subject=SeqItem.Params.GetAt("MailFiles.Subject") Set:(Subject="") Subject="-" @@ -1189,6 +1137,21 @@ . Quit:(FirstItem="")||($$IsList^vhLib(FirstItem)) . ; Else make $LB() from each item. SendMiniMail() requires format $LB($LB(file1,1),$LB(file2,1),$LB(file3,1),...) . For i=1:1:$LL(lbAttachments) Set:($LD(lbAttachments,i)) $LI(lbAttachments,i)=$LB($LI(lbAttachments,i),$$$AttachBinary) + + // Verify that last file of lbAttachments exists (in case of DFS this is a necessary check) + Set NumberOfItems = $LL(lbAttachments) + If NumberOfItems > 0 { + Set lbWaitSeconds = $ListBuild(1,1,1,1,2,2,3,4,5,5,5) + Set Logger = ##class(vhLib.Logger).%New("Sys.FOP.Verwerker") + Set LastItemFilePath = $LG($LG(lbAttachments,NumberOfItems),1) + If $$$HasLength(LastItemFilePath) { + Set blnExists = ##class(TECH.Files).WaitUntilFileExists(LastItemFilePath, lbWaitSeconds, Logger, "FopQueue.MailFiles", "MailFiles.lbAttachName(s): ") + + // Early quit :-O + Quit:('blnExists) $$$ERROR($$$GeneralError,"File does not exist: "_LastItemFilePath) + } + } + Set ReplyTo="" Set:(SeqItem.Params.IsDefined("MailFiles.lbCC")) lbCC=SeqItem.Params.GetAt("MailFiles.lbCC") Set:(SeqItem.Params.IsDefined("MailFiles.lbBCC")) lbBCC=SeqItem.Params.GetAt("MailFiles.lbBCC")