DequeueList (TStereotypeClassQueue)
De Wiki1000
class function DequeueList(const iTopic:string):TQueueObjectList;
Cette fonction consomme les objets suivant disponibles de la file d'attente vérifiant le sujet et retourne une liste.
Result | Une liste des objets vérifiant le sujet. |
iTopic | Nom de sujet demandé. |
Exemple :
//Procedure doDeQueueWithGroupBy; var obj:MyQueue; aList:TQueueObjectList; indx:Integer; aTopic,aGroupByTopic:string; begin // In this step we dequeue and process the ready objects. // The objects are dequeued group by unCode // Request objects in initial state in case of the queue contains multiple states aTopic := 'wfclassea/0/%'; // This is just an estimation of the count, could be false if several processes run in parallel ProgressMax(MyQueue.CountWhere('queueTopic like %1',true,[aTopic])); obj := MyQueue.GetFirst(aTopic); Repeat if Assigned(obj) then begin // Progress indicator ProgressCount(indx); // Get the topic on which to group by aGroupByTopic := 'wfclassea/0/'+StringPart(obj.queueTopic,'/',2)+'/%'; // Get a list of queue object with this topic aList := MyQueue.deQueueList(aGroupByTopic); // the objects may has been consumed by an other process, so we have to check it again. if Assigned(aList) and (aList.Count>0) then try // process the list of objects doProcessList(aList); aList.DeleteObjects; except // On error ReQueue the list MyQueue.ReQueueList(aList,'/0/','/99/'); end; end; obj := MyQueue.GetNext(aTopic,obj); Until not Assigned(obj); // ProgressFull(); end;
Voir aussi