« GetFirst (TStereotypeClassQueue) » : différence entre les versions
(Page créée avec « <source lang='delphi'>class function GetFirst(const iTopic:string):TQueueObject;</source> Cette fonction retourne le premier objet prêt de la file d'attente sans le cons... ») |
Aucun résumé des modifications |
||
Ligne 12 : | Ligne 12 : | ||
|} | |} | ||
{{tip|Cette fonction est utile pour | {{tip|Cette fonction est utile pour | ||
* Anticiper la valeur du sujet lorsqu'elle est utilisée avec un topic comportant une partie variable | |||
* Consommer les objets par une boucle First/Next sans être bloqué par un message "poison" | |||
}} | |||
Exemple : | Exemple : | ||
Ligne 29 : | Ligne 32 : | ||
if Assigned(obj) then | if Assigned(obj) then | ||
begin | begin | ||
// We can do some check on the actual topic of the queue object | |||
// we keep obj for the GetNext, so we used an other instance | |||
todo := MyQueue.deQueue(obj.queueTopic); | todo := MyQueue.deQueue(obj.queueTopic); | ||
// the object may has been consumed by an other process, so we have to check it again. | |||
if Assigned(todo) then | if Assigned(todo) then | ||
begin | begin | ||
Ligne 35 : | Ligne 41 : | ||
if Assigned(inst) then | if Assigned(inst) then | ||
try | try | ||
// | // This is a test case for requeue capability | ||
if inst.unEntier=21 then raise Exception.Create('check error'); | if inst.unEntier=21 then raise Exception.Create('check error'); | ||
// | // | ||
S := S+stag+inst.unCode; | S := S+stag+inst.unCode; | ||
stag := ','; | stag := ','; | ||
// delete this queue object | // delete this queue object | ||
todo.DeleteThisObject; | todo.DeleteThisObject; | ||
except | except | ||
// on error requeue the object with the same topic | // on error requeue the object with the same topic | ||
// The object will not been retreive in the next loop turn because of the GetNext | |||
todo.ReQueue(''); | todo.ReQueue(''); | ||
end; | end; |
Dernière version du 17 avril 2013 à 09:39
<source lang='delphi'>class function GetFirst(const iTopic:string):TQueueObject;</source>
Cette fonction retourne le premier objet prêt de la file d'attente sans le consommer.
Result | Le premier objet non consommée de la file pour le sujet. |
iTopic | Nom de sujet demandé. |
Exemple :
<source lang='delphi'>
//Procedure TestInQueue; var sel:TSelector; obj,todo:MyQueue; inst:WFClasseA; S,stag:string; begin
sel := WFClasseA.CreateSelector('unEntier>%1',,true,[10]); sel.InQueue('MyQueue','wfclassea/@oid');
S := ; stag := ; obj := MyQueue.GetFirst(); Repeat if Assigned(obj) then begin // We can do some check on the actual topic of the queue object // we keep obj for the GetNext, so we used an other instance todo := MyQueue.deQueue(obj.queueTopic); // the object may has been consumed by an other process, so we have to check it again. if Assigned(todo) then begin inst := todo.queueRef as WFClasseA; if Assigned(inst) then try // This is a test case for requeue capability if inst.unEntier=21 then raise Exception.Create('check error'); // S := S+stag+inst.unCode; stag := ','; // delete this queue object todo.DeleteThisObject; except // on error requeue the object with the same topic // The object will not been retreive in the next loop turn because of the GetNext todo.ReQueue(); end; end; end; // obj := MyQueue.GetNext(,obj); Until not Assigned(obj);
showMessage(S);
end; </source>
Voir aussi
{{#if:Classe_file_d'attente_(stereotype)|
{{#if:Classe_file_d'attente_(stereotype)|— Classe_file_d'attente_(stereotype) |}} — Développement DSM —
|
{{#if:|— [[{{{1}}}]] |}} — Développement DSM —
}}