Wachtrij met opdrachten voor de scheduler Een opdracht is van het type Sys.FOP.Task persistent 1 TaskQueue SysFOP %Persistent,VHSys.Scheduler.QueueItem 0 BL.Sys.FOP.Scheduler SysFOPScheduler Moet zonder quotes, anders zinloos. Oplossing zoeken via correcte Caché implementatie !!! Voorlopig moeten de ClassMethods die embedded sql bevatten, overschreven worden en de Sql-table name manueel aangepast worden. Sys_FOP.TaskQueue inherited from QueueAbstract *** / /*** ***/ ]]> De Task moet expliciet gedefinieerd worden. Sys.FOP.Task 1 Geeft het eerstvolgende Item van de queue (in status "W"ait) gesorteerd op prioriteit. De hoogste prioriteit eerst, bij gelijke wordt het kleinste ID gekozen (created first)/ 1 blnCheckMaxBusy:%Boolean=1 %RegisteredObject GetNextTask") Quit:(blnCheckMaxBusy)&&(..GetMaxBusyTasks("")=0) "" Set QItemID=$$gntNextID() Quit:(QItemID="") "" Set QItem=..%OpenId(QItemID) Quit QItem gntNextID() Set NextID="" &SQL(DECLARE crsNextQItem CURSOR FOR SELECT ID, SingleLockKey INTO :NextID, :SingleLockKey FROM Sys_FOP.TaskQueue WHERE Status='W' ORDER BY Priority DESC, ID) &SQL(OPEN crsNextQItem) For &SQL(FETCH crsNextQItem) Quit:(SQLCODE) Do:($L(SingleLockKey)) Quit:($L(NextID)) . d WL^vhDBG("NextID?") . Set:(..IsSingleLocked(SingleLockKey)) NextID="" ; // To debug : uncomment this block instead of previous block. ;For &SQL(FETCH crsNextQItem) Quit:(SQLCODE) Do Quit:($L(NextID)) ;. d WL^vhDBG("NextID? "_NextID) ;. q:('$L(SingleLockKey)) ;. d W^vhDBG("Check IsSingleLocked "_SingleLockKey) ;. Set:(..IsSingleLocked(SingleLockKey)) NextID="" ;. d WL^vhDBG(" --> "_$S(NextID="":" Is Locked", 1:NextID_" retained")) d WL^vhDBG("NextID:"_$G(NextID)_" SQLCODE="_SQLCODE) ; _" Status:"_$G(Status)) &SQL(CLOSE crsNextQItem) Quit $G(NextID) ]]> Maximaal aantal taken die tegelijk mogen uitgevoerd worden. Kan voor iedere prioriteit apart gedefinieerd worden. Belangrijkste oproep vanuit method ..CountFreeProcesses() Door MaxBusyTask (subnode "MaxBusyTask") op 0 te zetten, wordt de scheduler ge-suspended. 1 PrioCode:%String %String Geeft het aantal processen terug dat in de queue op Status "B"usy of "S"tarted staan. 1 1 Geeft het aantal processen terug dat in de queue op Status "B"usy of "S"tarted staan. 1 Priority:%String="" %Status returns value for InitialStatus (usually "W" of "H") This method is ProcedureBlock=0 because it contains eXecute command. ]]> EvalExpr:%String 1 0 %String %Library.CacheStorage ^Sys.FOP.QueueItemD QueueItemDefaultData ^Sys.FOP.QueueItemD ^Sys.FOP.QueueItemI ^Sys.FOP.QueueItemS %%CLASSNAME Created FeedBack Finished InternePersoon LogType MaxBusyTime PrioCode PrioValue Priority RunMode SignalPID Started Status Task ThreadedPID SingleLockKey