Index: topia2/doc/TopiaDocumentation.rst diff -u /dev/null topia2/doc/TopiaDocumentation.rst:1.1 --- /dev/null Wed Jan 11 14:07:58 2006 +++ topia2/doc/TopiaDocumentation.rst Wed Jan 11 14:07:52 2006 @@ -0,0 +1,44 @@ +===== +ToPIA +===== + +But +=== + +- abstraction de la persistence +- sauvegarde/restauration en XML +- securite sur les instances d'objets +- generation de code meme si non obligatoire pour utiliser ToPIA + +Ce qu'il serait bien de recuperer par rapport a la version 2 + +- support des sous-transactions + +peut-etre plus tard + +- gestion des services +- distribution transparente + +La vision ToPIA +=============== + +Un point d'entre le TopiaContext sur lequel on ouvre des transactions ce qui +retourne un autre TopiaContext a partir duquel on recupere les DAO des +differentes entités qui permettent de faire les traitements que l'on souhaite. + +Ensuite on peut appeler la methode commit de ce sous TopiaContext pour mettre +a jour la base de données et permettre a d'autre TopiaContext d'avoir la +nouvelle vision de nos objets. + +Chaque TopiaContext creer sur le TopiaContext root sont independant. + +Lorsque l'on travaille avec un objet provenant d'un TopiaContext sur lequel +on a fait un rollback celui-ci n'est plus valide et il vaut mieux en recuperer +une version correct sur le TopiaContext. + +Apres avoir fait un commit ou un rollback sur un TopiaContext on peut continuer +a l'utiliser et refaire des commits pour synchroniser de temps en temps les +modification fait sur la base. + +Un TopiaContext peu servir aussi longtemps que l'on souhaite, il ne maintient +pas inutilement de transaction sur la base. Index: topia2/doc/event.rst diff -u /dev/null topia2/doc/event.rst:1.1 --- /dev/null Wed Jan 11 14:07:58 2006 +++ topia2/doc/event.rst Wed Jan 11 14:07:52 2006 @@ -0,0 +1,67 @@ +Gestion des evenements +====================== + +On peut se mettre listener sur deux sortes d'evenement les TopiaEntityEvent et +les TopiaVetoableEntityEvent. La difference entre les deux est le moment de +l'appel. + + +TopiaVetoableEntityEvent +------------------------ + +Les TopiaVetoableEntityEvent sont appelé avant l'action, ce qui +permet de l'interdire en levant une exception (par exemple pour gérer la +sécurité). + +Les TopiaVetoableEntityEvent contiennent la classe au quel se rapporte l'event +et si possible l'identifiant de l'objet qui sera impacté. Cela n'est pas +toujours, par exemple lors de la creation l'identifiant n'existe pas forcement +et donc ne peut-etre donné. + +Propagation +~~~~~~~~~~~ + +Les TopiaVetoableEntityEvent sont aussi leve pour tous les contexts pere +du context qui a produit l'event et ceci juste apres avoir prevenu les +listeners du context courant. + +TopiaEntityEvent +---------------- + +Les TopiaEntityEvent sont appelé après l'action pour prévenir du changement. + +Les TopiaEntityEvent contiennent l'entity au quel se rapporte l'event + +Propagation +~~~~~~~~~~~ + +Les TopiaEntityEvent sont propagé au context pere lors du commit du context. + +Si un rollback est fait alors ce sont les listeners du context eux meme qui +sont prevenu du changement. + +Implantation +============ + +Les DAO sont responsable de l'appel des methodes fire sur le context qui les +a créer lors de l'appel sur ceux-ci des methodes create, update, delete, find +(pour le chargement). + +Le cas Hibernate +---------------- + +Dans le DAO hibernate le context est listener des différents evenements levés +par la session. Mais ces evenements ne sont levé que lors du commit. Dans Topia +on souhaite avoir directement un evenement lors d'un create, update ou delete +sur le DAO. Le DAO hibernate leve donc des evenements lorsque l'on appelle +ces methodes. + +On a aussi des evenements lors du commit, il est donc possible qu'on est le +par exemple le meme evenement Update deux fois envoyé au listener si on fait +un update sur le DAO suivi du commit sur le context. + +On conserve tout de meme le mecanisme d'evenement leve au moment du commit par +hibernate car il est beaucoup plus puissant, il permet d'etre prevenu aussi de +modification apporté au constituant d'une entite et non pas seulement des +evenement portant sur l'entite elle meme comme dans le mecanisme implante dans +les DAO.