persistent vhLib.Macro,VHSys.Scheduler 1 VHSysSched %Persistent 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:%String,Tijd:%String,Niveau:%String,Groep:%String,Actie:%String,Detail:%String,ProgLabel:%String Datum:%String,Tijd:%String,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 Tekst=##class(VHSys.Scheduler.Logging).GeefTekstOpErrorLocatie($ZError) 1 DollarZError:%String %String ",2)):$TEXT(@$$$TextBetween(%v,">"," ")), 1:"") Set Tekst="" If $L(DollarZError) { Try { Set Tekst=$$$ErrorToLine(DollarZError) } Catch (e) { Set Tekst="Kan tekst op errorlocatie niet ophalen." } } Quit Tekst ]]> Set oLog=##class(VHSys.Scheduler.Logging).AddErrorToLog(Groep,Actie,Error,Detail) 1 Groep:%String,Actie:%String,Error:%Status,Detail:%String,blnSendMail:%Boolean=1 Logging zOutputToDevice+16^%Library.FileBinaryStream.1")&&($$$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)_" : " 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 : "_##class(VHSys.Scheduler.Logging).GeefTekstOpErrorLocatie($ZError) 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:%Integer 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