Classe qui permet de trouver un ordre d’évaluation entre des entités qui ont une dépendance entre-eux.
Exemple :
Si on a des vues qui sont basées sur des vues et on veut faire un Requery(‘VuePrincipale’), il faut d’abord faire un requery de bas en haut de la hiérarchie
create sql view VueC as Select * from TableX where (… = ?Param)
create sql view VueB as Select * from VueC where (… = ?Param)
create sql view VueA as Select * from TableA where (… = ?Param)
create sql view VueTop as Select * from VueA, VueB where ( …)
Un bon ordre de requery()
-Requery(‘VueC’)
-Requery(‘VueB’)
-Requery(‘VueA’)
-Requery(‘VueTop’)
La classe permet d’entrer les dépendances et de demander un tri
Voir le bout de code
Code source :
*------------------------------------------------------------------------------- function TestVue()
local Success
Success = TRUE
local obj, QueueObj, CycleInfoString, LaVue
docase case !m.Success
case !Dependency_Object(@m.obj) assert FALSE
Success = FALSE
case !m.obj.Edge('VueB', 'VueC') assert FALSE
Success = FALSE
case !m.obj.Edge('VueTop', 'VueA') assert FALSE
Success = FALSE
case !m.obj.Edge('VueTop', 'VueB') assert FALSE
Success = FALSE
case !m.obj.Dependency(@m.QueueObj, @m.CycleInfoString) assert FALSE
Success = FALSE
endcase
dowhile m.Success and m.QueueObj.DeQueue(@m.LaVue)
?m.LaVue && =Requery(m.LaVue)
le 18/10/2008, Michel Lévy a écrit : Bravo! très très élegant...
le 19/10/2008, Gregory Adam a écrit : Merci Michel
le 19/10/2008, Gregory Adam a écrit : Changements (1) Ajout d'une classe Stack (facile)
(2) Ajout a la classe de base de Collection (et donc a Queue et Stack) - methode Clone (avec DeepCopy en option) - methode Reverse - Propriete Keyed qui retourne TRUE si la collection a des Key
Bravo!
très très élegant...