Dans une action j'ai un XMLGram dans lequel j'importe un autre XMLGram, cet autre XMLGram utilise des caches, quand j'affiche le contenu XML de mon action les éléments du cache apparaissent plusieurs fois, d'ou cela peut il venir ?
Dans une action j'ai un XMLGram dans lequel j'importe un autre XMLGram, cet autre XMLGram utilise des caches, quand j'affiche le contenu XML de mon action les éléments du cache apparaissent plusieurs fois, d'ou cela peut il venir ?
Peux tu nous décrire un peu plus tes XMLGram ? Que mets tu en Cache ? Utilises tu un cache global ? Caches tu des grappes en fonction d'un paramètre ou non ?
J'ai un XMLGram qui me sert dans plusieurs actions, ce XMLGram contient un cache me sert à récupérer plusieurs valeurs de paramétrage de ma base de données, par exemple le nombre d'enregistrements à afficher ;-) :
Donc j'ai 1 XMLGram qui contient 1 cache (Expires = -1 , Shared coché) qui contient plusieurs DBExtract (1 pour chaque paramètre).
Ce XMLGram est ensuite importé dans chaque action qui en a besoin.
Je t'avoue que j'ai pas trop d'idée là... : Un petit coup de débug ce serait pas mal pour essayer d'identifier la cause de ton problème.
Est-ce que tu n'aurais pas placer l'import en tant que fils d'un DBExtract par exemple ?
Dans ce cas, l'import serait executé pour chaque enregistrement récupéré lors du DBExtract, ce qui pourrait expliquer pourquoi tu vois plusieurs fois les elements.
Sinon, post ton xmlgram histoire qu'on puisse jeter un coup d'oeil.
En gros mon XMLGram donne :
XMLGram
|- Cache1
....
|- Cache2
......
|- Cache3
|- DBExtract3.1
|- DBExtract3.2
|- DBExtract3.3
Le résultat de ce XMLGram donne n fois le Cache1, n fois le Cache2 et 3 fois le cache 3, si j'ajoute un DBExtract3.4 en dessous de cache3, le cache 3 apparait alors 4 fois ... cela dépend en fait du nombre de DBExtract ... bizarre
euh... ca parait strange en effet
tu peux ouvrir le xmlgram avec le notepad et faire un copier-coller massif de tout ca ? Avec le XMLGRAM qui fait l'import aussi
XMLGram qui importe :
---------------------------
<?xml version="1.0" encoding="ISO-8859-1"?>
<!-- edited with XML Spy v4.2 (http://www.xmlspy.com) by Fabien (Thalassa) -->
<xmlgram name="About">
<Import>
<HRef>Test.xmlgram</HRef>
<Select>/xmlgram/*</Select>
</Import>
</xmlgram>
XMLGram Importé :
-----------------------
<?xml version="1.0" encoding="ISO-8859-1"?>
<!-- edited with XMLSPY v5 rel. 3 U (http://www.xmlspy.com) by user user (THALASSA INGENIERIE INFORMATIQUE) -->
<xmlgram name="Test">
<Cache Name="CACHEDETEST">
<Expires>-1</Expires>
<Shared>1</Shared>
<Params/>
<DBExtract Name="A">
<Fields/>
<DataSource>CopieBDD</DataSource>
<Kind>Single</Kind>
<MaxRows>1</MaxRows>
<Statement><![CDATA[SELECT PARNUMERIC FROM PARAMS WHERE
PARMOTCLE = 'NBARTICLESLISTECOMPACTE']]></Statement>
<MultipleContainerName/>
<RecordName/>
<GenerateOutput>True</GenerateOutput>
<ReplaceBlankValues/>
<Object>QUERY</Object>
<Filter/>
<Params/>
</DBExtract>
<DBExtract Name="B">
<Fields/>
<DataSource>CopieBDD</DataSource>
<Kind>Single</Kind>
<MaxRows>1</MaxRows>
<Statement><![CDATA[SELECT PARNUMERIC FROM PARAMS WHERE
PARMOTCLE = 'NBARTICLESLISTEDETAILLEE']]></Statement>
<MultipleContainerName/>
<RecordName/>
<GenerateOutput>True</GenerateOutput>
<ReplaceBlankValues/>
<Object>QUERY</Object>
<Filter/>
<Params/>
</DBExtract>
</Cache>
</xmlgram>
Et dans le résultat :
----------------------
- <A>
<PARNUMERIC>3</PARNUMERIC>
</A>
- <B>
<PARNUMERIC>7</PARNUMERIC>
</B>
- <A>
<PARNUMERIC>3</PARNUMERIC>
</A>
- <B>
<PARNUMERIC>7</PARNUMERIC>
</B>
J'arrive effectivement a reproduire le problème, je remonte l'info.
Workaround: faire une instruction cache par DBExtract, cela permet d'être plus souple dans la composition des données du document de sortie.
Je ne comprends pas bien ce que tu veux dire ...faire une instruction cache par DBExtract
Je crois que RDM te conseille de mettre un seul DBExtract par instruction Cache. Visiblement tu as un DBExtract "A" et "B". Créés deux instructions Cache "CacheA" et "CacheB" dans lesquels tu mets respectivements tes DBExtract "A" et "B".
Oui, mais en quoi mon document sera plus souple ?
le degré de granularité du cache est plus fin en mettant une insutrction DBExtract par instruction Cache.
Actuellement, tu as la grappe A+B qui est mise en cache. Si a un moement tu n'as besoin que de B par exemple il te sera impossible de le dissocier de A. si tu dois mettre à jour le cache, tu dois réeffectuer obligatorement les 2 requêtes.
Si tu as une requête C et que tu veuilles faire A+C ou bien B+C tu auras un peu de mal ;-)
Ah oui en effet, en fait dans mon cas j'ai utilisé 5 caches mais il y a des informations que j'utilise toujours en même temps donc je les ai regroupées dans 1 seul et c'est là que j'ai rencontré mon problème.
Partager