VHSys.Scheduler Template Scheduler class : creates and manages the FopTask objects, contained in a FopTaskQueue. %VHMacro,VHSys.Scheduler 1 %RegisteredObject 61545,56867.132788 0 Scheduler Resource Name : - moet een unieke naam zijn over de hele Namespace !!! - mag maximaal 24 karakters lang zijn !!! (punten en andere leestekens niet meegerekend) - meestal wordt de naam van de Scheduler-klasse genomen, of alleszins op basis daarvan VHSysSchedulerAbstract VHSys.Scheduler.BL.SchedulerAbstract VHSys.Scheduler.QueueItem VHSys.Scheduler.QueueArchive VHSys.Scheduler.Logging 97 192.168.1.97 Toevoegen van de Task aan de queue. Creƫert een QItem met een link/reference naar de Task. Returns the NewQItemID via .local and %Status as Result of the method 1 %Status Taak opnieuw in de Queue plaatsen, vertrekkende van een bestaande QItem. De parameter Task is optioneel, indien niet gegeven, dan halen uit QItem.Task Met blnMoveOld=1 wordt het oorspronkelijke QItem verplaatst van Queue naar Archive; Met blnMveOld="" (default) bepaalt de waarde van QItem.Status of het QItem verplaatst wordt. Returns the NewQItemID via .local and %Status as Result of the method 1 %Status Taak opnieuw in de Queue plaatsen, vertrekkende van een bestaande item uit het QueueArchive. De parameter Task is optioneel, indien niet gegeven, dan halen uit QItem.Task Returns the NewQItemID via .local and %Status as Result of the method 1 %Status 1 Niveau:%String,Groep:%String,Actie:%String,Detail:%String %RegisteredObject 1 Groep:%String,Actie:%String,Error,Detail:%String,blnSendMail:%Boolean=1 %RegisteredObject 1 %RegisteredObject 1 QItemID:%String %RegisteredObject 1 QItemID:%String %Status Controle of job draait en triggeren van de job om een volgende task uit te voeren 1 Wacht op een Event signal, die gestuurd wordt als een Task geprocessed is. 1 TimeOut:%Integer=-1 %Integer Zelfde als Trigger, maar wacht tot de Task verwerkt is Er moet een Task in de queue zitten waarvan de property "SignalPID" de waarde van deze $J bevat. 1 TimeOut:%Integer=-1 %Integer Result="ADBfop1c783c510f85c5f80d7ffd"]]> 1 Suffix:%String %String Controle of job draait en triggeren van de job om een volgende task uit te voeren 1 Controle of de job nog aan het lopen is, indien niet dan herstarten 1 Controle of de lopende tasks niet blijven hangen of vastgelopen zijn of ... Indien wel: melding geven / Busy Timeout verlengen / Status van task in Error zetten / task stoppen / ... Oproepen via: d ##class(BL.Sys.FOP.Scheduler).CheckBusyTasks() 1 1 %Integer Opkuisen van Locks en Event Resources 1 1 1 0 %Status ",2))) sLine=$TEXT(@$P($ZError,">",2,32767)) Quit $G(sLine) ]]> Neemt de eerstvolgende taak uit de Queue, volgens Prioriteit, en controleert of er nog een process beschikbaar is om deze taak te verwerken 1 blnCheckFreeProcess:%Boolean=1 %RegisteredObject 0) ]]> Zie method ProcessTask() 1 QItemID:%String %Status Volledige verwerking van het QueueItem. Of de verwerking in-process of ge-jobbed wordt uitgevoerd, is bepaald door de RunMode van het QItem. 1 QItem:%RegisteredObject="" %Status 1 QItem:%RegisteredObject Start the Process attached to the QItem. Returns 0 when started in the current process, 1 if started in a new process (blnJobbed) When blnJobbed=1, then the method PostProcessTask() must be called from within the jobbed process (via the QItem) The scheduler can actually run in 3 different modes of processing: Run a task in - a new process - its own process - a fixed process Default is: run task in new process (when the RunMode of QItem is Threaded or Batch) This method should be overridden to modify the mode of processing. 1 %Boolean Finalize the QItem object and trigger next. QItem can be passed as an object or as string (QItem.%Id()) When StartProcessTask() returns blnJobbed=1, the last statement in the jobbed process should be this PostProcessTask() method. 1 Remove the QItem from the (active) Queue By ID : Make sure that the object itself is already closed before calling this method By ORef: Pass object by reference (as .local), this method will close the object itself. 1 %Status wordt gewijzigd door Oref van Archive-object]]> 1 %Status wordt gewijzigd door Oref van Archive-object]]> 1 Zie method ArchiveTask() 1 QItemID:%String,blnRemove:%Boolean Stoppen van de Scheduler (only 1 process) Oproepen via : s sc=##class(BL.Sys.FOP.Scheduler).Stop() 1 %Status