|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Membre confirmé
![]() Inscription : août 2003 Messages : 354 ![]() |
Bonjour!
En vue de répondre aux normes FDA, nous souhaitons tracer toutes les modifications apportées aux données de notre appli. Pour effectuer cela, nous mettons en place des triggers (attendez avant de sauter de votre chaise! Ces triggers doivent etre capable d'indiquer quel est l'utilisateur logique (login interne à notre application) qui a effectué telle opération. Pour cela dans l'appli "windows", on joint le compte utilisateur et la session SQLServer ou Oracle. En mode connecté, pas de probleme. Dans l'application XMLRAD ca se complique.... j'ai 4 pool et en plus pour chaque xmlmodule, potentiellement une connexion à la BDD (partage de code) (d'ailleurs j'ai une question à ce sujet que je soulèverais plus tard...). Donc pour un user sur l'appli je vais avoir plusieurs sessions BDD et entre chaque requete HTTP je suis biensur susceptible d'avoir plusieurs users différents. Pour les courageux qui m'ont lu jusque la, voici ma question: Ou mettre mon code qui me permettra de faire le lien entre la session et l'utilisateur? Je ne peux pas faire cela trop tot (dans le dispatch) car j'ai besoin de connaitre qu'elle sera exactement la session BDD qui sera utilisée. Je ne sais pas si c'est possible ni si c'est centralisable (si ca l'est pas, je le ferais pas Michael |
|
|
00
|
|
|
#2 |
|
Membre confirmé
![]() Inscription : août 2003 Messages : 354 ![]() |
Allez, la suite directement:
Actuellement j'ai un ADOConnection par XMLmodule. Cela car j'ai besoin de connecter un ensemble d'objets basé sur des ADOQuery classiques pour effectuer un certain nombre d'opérations (ca représente plus d'une centaines de méthodes dans pleins de datamodules... trop délicat et couteux de les migrer en dacquery aujourd'hui... même si dans l'absolu ce serait l'idéal!). J'aimerais plutot que de gérer cela par XMLModule, le faire par Pool, ce qui me parait plus logique. Comment puis-je créer un objet ADOConnection par instance de pool (pour le partager ensuite aux modules du pool)? Y a t-il un "endroit" privilégié, sorte de threadvar ou qqch comme ca ? J'aimerais gérer cela proprement. Michael |
|
|
00
|
|
|
#3 | |
|
Membre Expert
![]() |
Citation:
De toutes facons il faut se tourner vers les evenénements XMLApplication ou XMLCollection. les événements XMLApplication sont déclenchés en dehors des XMLCollections donc tu n'as normalement pas encore accès aux ressources des XMLcollections et donc pas d'accès aux BDD. les événements XMLCollection sont déclenchés une fois que ta requête a acquis une XMLCollection et donc la tu as accès aux connexions BDD. le XMLCollection.BeforeDispatch me semble un bon endroit en général.
__________________
RDM Tout Est Relatif Rubrique XMLRAD: http://xmlrad.developpez.com FAQ XMLRAD: http://xmlrad.developpez.com/faq/ |
|
|
|
00
|
|
|
#4 | |||
|
Membre Expert
![]() |
Citation:
et dans le OnInitialize du module tu fais: Code :
et après dans ton code:
__________________
RDM Tout Est Relatif Rubrique XMLRAD: http://xmlrad.developpez.com FAQ XMLRAD: http://xmlrad.developpez.com/faq/ |
|||
|
|
00
|
|
|
#5 |
|
Membre confirmé
![]() Inscription : août 2003 Messages : 354 ![]() |
Pour le point 2 (xmCommun), c'est excatement ce que je cherchais! J'avais pas réussi à le matérialiser, Merci!
Pour le premier point (session BDD), je vais faire un peu autrement et me baser sur le xmCommun de façon à référencer l'ensemble des sessions disponibles d'entrée de jeu et passer ensuite par le OnDispatch de la collection... A voir encore, je sais pas trop... Si ca vous interesse je vous donnerais le resultat de tout ca. Michael |
|
|
00
|
|
|
#6 | |||
|
Membre confirmé
![]() Inscription : août 2003 Messages : 354 ![]() |
Citation:
Michael |
|||
|
|
00
|
|
|
#7 |
|
Membre confirmé
![]() Inscription : août 2003 Messages : 354 ![]() |
Contrairement à ce que je pensais, le GetModule ne crée pas le module... comment le créer pour chaque collection et le référencer pour que le GetModule renvoie la référence et non nil ?
Michael |
|
|
00
|
|
|
#8 |
|
Membre confirmé
![]() Inscription : août 2003 Messages : 354 ![]() |
Non, au final il semblerait surtout que dans create du module, le xmlcollection ne soit pas affecté... ce qui parait logique. Le OnInitialize parait donc plus indiqué!
|
|
|
00
|
|
|
#9 |
|
Membre confirmé
![]() Inscription : août 2003 Messages : 354 ![]() |
Question subsidiaire:
Sur un XMLModule qui est référencé dans tous les pool, il y a un composant CollectionEvent... Est ce que ses évènements réagissent pour tout les pool ou seulement pour le premier ? Autrement dit, est ce qu'un seul composant CollectionEvent est suffisant pour géré les evenements dispatch par exemple de tout les pools (si le module sur lequel il est posé est référencé dans tous les pools) ? Michael |
|
|
00
|
|
|
#10 |
|
Membre Expert
![]() |
oui tout est dans la phrase "si le module sur lequel il est posé est référencé dans tous les pools"
__________________
RDM Tout Est Relatif Rubrique XMLRAD: http://xmlrad.developpez.com FAQ XMLRAD: http://xmlrad.developpez.com/faq/ |
|
|
00
|
|
|
#11 |
|
Membre confirmé
![]() Inscription : août 2003 Messages : 354 ![]() |
Desole, je reviens à la charge avec l'histoire du xmCommon.
J'ai une application en mode pluggin... 2 Dll sont chargées. Dans la principale j'ai mon XMCommon qui possède les objets partagés dans chaque pool. Dans la seconde dll, (dont l'unique module est positionné sur le pool principal 'User'), j'ai aussi besoin d'accéder à ce même XmCommon... Comment faire ? Dans le OnInitialize de ce module j'ai le même code qui fait le GetModule, mais j'ai une exception Invalid Class Type (sur le "as TXmCommon")... Comment je peux m'en sortir ? Michael |
|
|
00
|
|
|
#12 | ||
|
Membre confirmé
![]() Inscription : août 2003 Messages : 354 ![]() |
Je peux m'en sortir comme ca:
Dans le OnInitialize de tous mes modules Code :
Michael |
||
|
|
00
|
|
|
#13 | ||||
|
Membre confirmé
![]() Inscription : août 2003 Messages : 354 ![]() |
Je me fais mon thread tout seul moi 8)
OnInitialize: Code :
A la destruction: Code :
Michael |
||||
|
|
00
|
|
|
#14 |
|
Membre Expert
![]() |
oulah c'est super dangeureux tout ca.
pour les plugins les modules sont bien créés dans la même XMLCollection seulement tu as du mettre dans ton module un uses xmCommon ce qui a eu pour effet de compiler l'unité dans ton plugin. Or cette unité est déjà compilé dans la DLL principale. du coup tu as 2 TxmCommon qui sont des types incompatibles Il faut que tu passes par un package central comme le VCLXMLxx.bpl et que les 2 DLL link sur ce package pour partager la même classe xmCommon
__________________
RDM Tout Est Relatif Rubrique XMLRAD: http://xmlrad.developpez.com FAQ XMLRAD: http://xmlrad.developpez.com/faq/ |
|
|
00
|
|
|
#15 |
|
Membre confirmé
![]() Inscription : août 2003 Messages : 354 ![]() |
Mmm, pourquoi est ce que je m'en doutais....
Je risque quoi en réalité ? Compiler XmCommon dans un paquet a peut etre l'air de rien comme ca, mais au regard de mon projet, ca se complique sérieusement... |
|
|
00
|
|
|
#16 |
|
Membre Expert
![]() |
la meilleure chose reste alors d'encapsuler les méthodes dont tu as besoin dans un XMLService qui sera alors invokable par un XMLCollection.execute ou une instruction Invoke
__________________
RDM Tout Est Relatif Rubrique XMLRAD: http://xmlrad.developpez.com FAQ XMLRAD: http://xmlrad.developpez.com/faq/ |
|
|
00
|
|
|
#17 |
|
Membre confirmé
![]() Inscription : août 2003 Messages : 354 ![]() |
Oui, c'est une idée aussi!
Bon, au final, j'ai réussi à compiler xmCommon dans un bpl séparé... malgré les insultes de Delphi voulant rajouter tout un tas de dépendances qui ne sont pas possibles pour moi... ca fonctionne bien, la seconde dll ne pese plus que 90Ko contre plus 3Mo avant! (forcement tout est passé dans le bpl) je pense d'ailleurs que mon architecture est bien meilleure comme ca! Donc Merci bcp! Michael |
|
|
00
|
|
|
#18 |
|
Membre Expert
![]() |
auparavant c'etait au nombre de session conenctés donc dans ton cas c'est bien 8, quelques soit le nombre d'utilisateur de ton application.
Au vu des archis Web voire des 3 tiers, certains editeurs ont changé leur mode de licence pour le faire par processeur ou par Mhz pour prendre compte ces nouvelles archis ou l'on ne peut plus facilement compté le nombre d'utilisateurs conenctés
__________________
RDM Tout Est Relatif Rubrique XMLRAD: http://xmlrad.developpez.com FAQ XMLRAD: http://xmlrad.developpez.com/faq/ |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com