persistent vhLib.Macro,VHSys.Scheduler 1 VHSysSched %Persistent 0 97 %Date %Integer %Time "E" = error "I" = info "W" = warn "D" = debug %String Toegangscode zie includefile BL.EC.Common bv. $$$tgWebShop %String %String %String Stack level in case of errors %String 1 1 Datum,SubID 1 Method AAACompilerFirst() moet eerst staan in alfabetische lijst, want moet als eerste gecompileerd worden! 1 objectgenerator 1 Datum,Tijd,Niveau:%String,Groep:%String,Actie:%String,Detail:%String,ProgLabel:%String Datum,Tijd,Niveau:%String,Groep:%String,Actie:%String,Detail:%String,ProgLabel:%String Set oLog=##class(VHSys.Scheduler.Logging).AddToLog(Niveau,Groep,Actie,Detail) 1 Niveau:%String,Groep:%String,Actie:%String,Detail:%String Logging Set oLog=##class(VHSys.Scheduler.Logging).AddErrorToLog(Groep,Actie,Error,Detail) 1 Groep:%String,Actie:%String,Error,Detail:%String,blnSendMail:%Boolean=1 Logging islist+2^%occRun")&&($$$GETERRORCODE(Error)=$$$GeneralError) lbTo=$LB("ICT_Meldingen@vanhoecke.be") ; Does not provide any extra information Set sc=$$SendMiniMailForced^vhLib.Mail(From,lbTo,Subj,Body,,,,,) Quit aelErrorMailBody() #define BodyTitle "Queue Processing Error in "_..%ClassName(1)_" : " #define ErrorToLine(%v) $S($L($P(%v,">",2)):$TEXT(@$P(%v,">",2,32767)), 1:"") Set Body="" Set Body=Body_$$$BodyTitle_$$$CRLF Set Body=Body_"Error message: "_$$ParseStatus^vhLib($G(Error,$G(%objlasterror)))_$$$CRLF Set Body=Body_""_$$$CRLF Set Body=Body_$$$CRLF_"Groep: "_$G(Groep) Set Body=Body_$$$CRLF_"Actie: "_$G(Actie) Set Body=Body_$$$CRLF_"Detail: "_$G(Detail) Set Body=Body_$$$CRLF_"Error: "_$$ParseStatus^vhLib(Error) Set Body=Body_$$$CRLF Set Body=Body_$$$CRLF_"$ZError: "_$ZError Set:($L($ZError)) Body=Body_$$$CRLF_"Line : "_$$$ErrorToLine($ZError) ; $$aelErrorToLine Set:($L($G(%objlasterror))) Body=Body_$$$CRLF_"Object Last Error: "_$$ParseStatus^vhLib(%objlasterror) Set Body=Body_$$$CRLF_"$ECode: "_$ECode Set Body=Body_$$$CRLF_"Stack: " For EST=1:1:$ESTACK Set Body=Body_$$$CRLF_" "_$STACK($STACK-EST,"PLACE") Set Body=Body_$$$CRLF Set Body=Body_$$$CRLF_"--- End of message ---"_$$$CRLF Set Body=Body_$$$CRLF_..GetJobInfo(1,"") Quit Body ]]> Do ##class(VHSys.Scheduler.Logging).GetMailFields(.From,.lbTo,.Subj, "Error") 1 " Set lbTo=$LB("wv@vanhoecke.be") Quit ]]> 1 blnMultiLine:%String,Indent:%String %String Niv:"_..Niveau_" Groep:"_..Groep_$S($L(..Actie):" Actie:"_..Actie,1:"")_$S($L(..Detail):" Detail:"_..Detail,1:"")_$S($L(..ProgLabel):" ProgLabel:"_..ProgLabel,1:"")) ]]> 1 Dagen TotDatum Do . Kill $$$StorageGlobal(Datum) ]]> Analoog aan CleanOld, behalve de extra controle dat de global node geen subnodes meer bevat (blnCheckEmpty=1) startH en StopH zijn inclusief, ze worden dus ook verwijderd uit de global. 1 StartH:%Integer,StopH:%Integer,blnCheckEmpty:%Boolean=1 StopH) Kill:($$$NoSubNodes($$$StorageGlobal(Datum))) $$$StorageGlobal(Datum) Else Do . For Set Datum=$O($$$StorageGlobal(Datum)) Quit:(Datum="") Quit:(Datum>StopH) Kill $$$StorageGlobal(Datum) Quit ]]> %Library.CacheStorage ^VHSys.Scheduler.LoggingD LoggingDefaultData ^VHSys.Scheduler.LoggingD ^VHSys.Scheduler.LoggingI ^VHSys.Scheduler.LoggingS %%CLASSNAME Tijd Niveau Groep Actie Detail ProgLabel