Scheduler class : creates and manages the FopTask objects, contained in a FopTaskQueue. BL.Sys.FOP.Common 1 %RegisteredObject Sys.FOP.QueueItem Parameter ClassNm wordt "at compile time" berekend = %class.Name BL.Sys.FOP.SchedulerAbstract Method AAACompilerFirst() moet eerst staan in alfabetische lijst, want moet als eerste gecompileerd worden! 1 objectgenerator Toevoegen van de Task aan de queue. Creƫert een QItem met een link/reference naar de Task. Returns the QItemID via .local and %Status as Result of the method 1 %Status 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 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 QItem:%RegisteredObject %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 QItem:%String 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 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