<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>
<channel>
	<title>Magento eCommerce - ERP Divalto - Flex - Java - PHP&#187; Magento eCommerce &#8211; ERP Divalto &#8211; Flex &#8211; Java &#8211; PHP</title>
	<atom:link href="http://www.x2i.fr/techs/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.x2i.fr/techs</link>
	<description>Les pages techniques de Xi Ingenierie</description>
	<lastBuildDate>Tue, 15 Mar 2011 14:18:54 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1.1</generator>
		<item>
		<title>XiConnect, Notre solution de couplage Magento vers votre ERP ou SI</title>
		<link>http://www.x2i.fr/techs/2011/03/15/xiconnect-notre-solution-couplage-magento-vers-votre-erp-ou-si/</link>
		<comments>http://www.x2i.fr/techs/2011/03/15/xiconnect-notre-solution-couplage-magento-vers-votre-erp-ou-si/#comments</comments>
		<pubDate>Tue, 15 Mar 2011 14:15:53 +0000</pubDate>
		<dc:creator>marcjean</dc:creator>
				<category><![CDATA[Magento]]></category>
		<category><![CDATA[Techniques de pro]]></category>
		<category><![CDATA[csv]]></category>
		<category><![CDATA[eCommerce]]></category>
		<category><![CDATA[erp]]></category>
		<category><![CDATA[export]]></category>
		<category><![CDATA[import]]></category>
		<category><![CDATA[import export]]></category>
		<guid isPermaLink="false">http://www.x2i.fr/techs/?p=349</guid>
		<description><![CDATA[L’utilisation simultanée d’un site de eCommerce Magento et d’un ERP nécessite une possibilité de synchronisation entre ces deux entités. La solution XiConnect est un serveur d’échange intermédiaire entre un site Magento et un ERP, ce qui permet de synchroniser les données entre ces deux entités sans nuire aux performances du site eCommerce. Chaque flux de [...]
Related posts:<ol><li><a href='http://www.x2i.fr/techs/2009/07/04/le-livre-blanc-magento-community-edition/' rel='bookmark' title='Permanent Link: Magento, l&#8217;atout pour votre eCommerce'>Magento, l&#8217;atout pour votre eCommerce</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>L’utilisation simultanée d’un site de eCommerce Magento et d’un ERP nécessite une possibilité de synchronisation entre ces deux entités.</p>
<p>La solution XiConnect est un serveur d’échange intermédiaire entre un site Magento et un ERP, ce qui permet de synchroniser les données entre ces deux entités sans nuire aux performances du site eCommerce.</p>
<p>Chaque flux de données (produits, commandes, stocks…) passant entre l’ERP et Magento via XiConnect est matérialisé par un ou plusieurs fichiers CSV.<br />
L’ERP et Magento possèdent des API d’import/export capables de créer et consommer ces fichiers.</p>
<div id="attachment_401" class="wp-caption aligncenter" style="width: 160px"><a href="http://www.x2i.fr/techs/files/2011/02/cap1_fr.png"><img class="size-thumbnail wp-image-401" src="http://www.x2i.fr/techs/files/2011/02/cap1_fr-150x150.png" alt="cap1_fr" width="150" height="150" /></a><p class="wp-caption-text">Schema des flux entre Magento et un ERP</p></div>
<p>XiConnect possède une base de données où ces échanges sont répertoriés sous forme d’objets Task, ou tâches. Chaque tâche est caractérisée entre autres par un type d’entité (client, produit, commande…), un sens (de l’ERP vers le site eCommerce ou inversement), son état (actuel et précédent) et son contenu (fichiers concernés).</p>
<p>Un composant de XiConnect, le Task Manager, manipule les tâches, met à jour leur état et lance les traitements nécessaires pour appliquer les règles métier aux flux.</p>
<p>En consultant la base de données, un utilisateur peut à tout moment connaître l’état de chaque flux.</p>
<p>Les screenshots valent mieux qu&#8217;un long discours, vous noterez que le css n&#8217;est pas sans rappeler une certaine plateforme eCommerce, permettant à nos utilisateurs d&#8217;y être familier.</p>
<p><strong>1 &#8211; Connexion</strong></p>
<div id="attachment_365" class="wp-caption aligncenter" style="width: 657px"><a href="http://www.x2i.fr/techs/files/2011/02/connexion.jpg"><img class="size-full wp-image-365   " src="http://www.x2i.fr/techs/files/2011/02/connexion.jpg" alt="Interface de connexion" width="647" height="196" /></a><p class="wp-caption-text">Authentification</p></div>
<p><strong>2 &#8211; Gestion des tâches</strong></p>
<p>La page de gestion des tâches est utilisée pour consulter les tâches répertoriées dans la base de données du serveur d’échange, que ce soit les tâches terminées ou les tâches en cours d’exécution.</p>
<p>Elle permet également de donner l’ordre au serveur d’échange de relancer les tâches qui ont échoué.</p>
<div id="attachment_375" class="wp-caption aligncenter" style="width: 577px"><a href="http://www.x2i.fr/techs/files/2011/02/magento-xiconnect-tasks1.jpg"><img class="size-full wp-image-375 " src="http://www.x2i.fr/techs/files/2011/02/magento-xiconnect-tasks1.jpg" alt="Affichage des tâches" width="567" height="274" /></a><p class="wp-caption-text">Affichage des tâches</p></div>
<p>En double-cliquant sur une tâche, une pop-up apparaît avec, en plus des informations de base sur la tâche, l’emplacement courant du ou des fichiers CSV représentant le flux de données. Si un fichier se trouve sur le serveur d’échange, son chemin est également affiché.</p>
<p>Dans le cas où la tâche en question est une tâche échouée, la pop-up comporte un bouton permettant de la redémarrer.</p>
<div id="attachment_402" class="wp-caption aligncenter" style="width: 413px"><a href="http://www.x2i.fr/techs/files/2011/02/cap3_fr.png"><img class="size-full wp-image-402" src="http://www.x2i.fr/techs/files/2011/02/cap3_fr.png" alt="Détails d'une tâche" width="403" height="371" /></a><p class="wp-caption-text">Détails d&#39;une tâche</p></div>
<p style="text-align: center">
<p><strong>3 &#8211; Consultation de la base intermédiaire</strong></p>
<p>La page de consultation de la base intermédiaire permet de consulter toutes les tables de la base de données du serveur d’échange. Elle peut être accédée en cliquant sur l’onglet « Base intermédiaire » dans la barre de navigation.</p>
<div id="attachment_361" class="wp-caption aligncenter" style="width: 459px"><a href="http://www.x2i.fr/techs/files/2011/02/magento-xiconnect-view-table.jpg"><img class="size-full wp-image-361 " src="http://www.x2i.fr/techs/files/2011/02/magento-xiconnect-view-table.jpg" alt="magento-xiconnect-view-table" width="449" height="299" /></a><p class="wp-caption-text">Consultation des données stockées par XiConnect</p></div>
<p><strong>4 &#8211; Gestion des utilisateurs</strong><br />
La page de gestion des utilisateurs permet de visualiser, créer, modifier et supprimer les utilisateurs enregistrés. Elle peut être accédée en cliquant sur l’onglet « Utilisateurs » dans la barre de navigation.</p>
<div id="attachment_358" class="wp-caption aligncenter" style="width: 547px"><a href="http://www.x2i.fr/techs/files/2011/02/magento-xiconnect-users-edit1.jpg"><img class="size-full wp-image-358" src="http://www.x2i.fr/techs/files/2011/02/magento-xiconnect-users-edit1.jpg" alt="magento-xiconnect-users-edit1" width="537" height="363" /></a><p class="wp-caption-text">Création / Modification d&#39;un utilisateur</p></div>
<p><strong>5 &#8211; Configuration de XiConnect</strong><br />
La page de configuration du serveur d’échange permet de visualiser et modifier les fichiers de configuration du serveur d’échange, plusieurs configurations sont possibles : «production », «développement », «recette», «intégration»</p>
<p>Elle peut être accédée en cliquant sur l’onglet « Configuration du serveur » dans la barre de navigation.</p>
<p><strong>6 &#8211; Configuration de l’adaptateur ERP</strong></p>
<p>Cette page permet de visualiser et modifier le fichier de configuration de l’adaptateur ERP.Elle peut être accédée en cliquant sur l’onglet « Configuration de l’adaptateur » dans la barre de navigation.</p>
<p>Les détails des parties &#8220;Configuration du serveur d’échange&#8221;  et &#8220;Configuration de  l’adaptateur ERP&#8221; sont réservés à nos clients. N&#8217;hésitez pas à nous  contacter pour avoir plus d&#8217;informations sur XiConnect en suivant ce  lien : <a href="../../contacter-xi/23?utm_source=x2i&amp;utm_medium=blogtechs&amp;utm_campaign=xiconnect">couplage entre Magento et les ERP.</a></p>
<p>Related posts:<ol><li><a href='http://www.x2i.fr/techs/2009/07/04/le-livre-blanc-magento-community-edition/' rel='bookmark' title='Permanent Link: Magento, l&#8217;atout pour votre eCommerce'>Magento, l&#8217;atout pour votre eCommerce</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.x2i.fr/techs/2011/03/15/xiconnect-notre-solution-couplage-magento-vers-votre-erp-ou-si/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Tests de site Magento : la réduction des tests manuel</title>
		<link>http://www.x2i.fr/techs/2010/10/07/tests-site-magento-rduction-des-tests-manuel/</link>
		<comments>http://www.x2i.fr/techs/2010/10/07/tests-site-magento-rduction-des-tests-manuel/#comments</comments>
		<pubDate>Thu, 07 Oct 2010 08:37:30 +0000</pubDate>
		<dc:creator>marcjean</dc:creator>
				<category><![CDATA[Outils / Frameworks]]></category>
		<category><![CDATA[Techniques de pro]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[Magento]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[test]]></category>
		<guid isPermaLink="false">http://www.x2i.fr/techs/?p=336</guid>
		<description><![CDATA[Aujourd’hui, nos clients sous Magento progressent vite, très vite. En effet la possibilité de multiplication des boutiques sur le même socle Magento ouvre de nouvelles portes mais aussi de nouvelles problématiques : -    un bug en production peut faire planter l’ensemble des sites. -    un mauvais contenu en ligne peut se répercuter sur l’ensemble des [...]
No related posts.]]></description>
			<content:encoded><![CDATA[<p style="text-align: left">Aujourd’hui, nos clients sous <a href="http://www.magentocommerce.com" target="_blank"><strong>Magento </strong></a>progressent vite, très vite. En effet la possibilité de multiplication des boutiques sur le même socle <a href="http://www.magentocommerce.com" target="_blank"><strong>Magento </strong></a>ouvre de nouvelles portes mais aussi de nouvelles problématiques :</p>
<p style="text-align: left">-    un bug en production peut faire planter l’ensemble des sites.<br />
-    un mauvais contenu en ligne peut se répercuter sur l’ensemble des boutiques</p>
<p style="text-align: left">Aujourd’hui, nous avons décidé de réduire au maximum une activité chronophage et couteuse : le test manuel.</p>
<p style="text-align: left">La maturité dans ce domaine de PHP ne nous propose pas le panel d’outils que nous avons l’habitude d’utilisé en Java, mais les premières briques sont là et vont bien nous aidé.</p>
<p style="text-align: left">Les tests automatiques sont réalisés sur 2 niveaux :</p>
<p style="text-align: left">1)    Test de fonctionnalité des principaux éléments du site, de la recherche de produit au processus de commande sous plusieurs modes en passant par la création de compte client.<br />
2)    Test de contenu afin de vérifier que celui-ci n’as pas changé de façon non intentionnelle.</p>
<p style="text-align: left">Ces tests une fois implémentés seront exécutés sur des serveurs d’intégration continu (reprenant à l’identique les serveurs de production). Ces tests automatisés seront exécutés automatiquement tous les jours sur la dernière version du code disponible en configuration (<a href="http://subversion.tigris.org/" target="_blank">SVN</a>, <a href="http://git-scm.com/" target="_blank">GIT</a>).</p>
<p style="text-align: left"><strong>Avec <a href="http://cubictest.seleniumhq.org/" target="_blank">CubicTest</a>, <a href="http://seleniumhq.org/" target="_blank">Selenium</a>, <a href="http://hudson-ci.org/" target="_blank">Hudson</a>, je m’assure d’avoir mon socle </strong><strong>Magento fonctionnels de livraison en livraison.</strong></p>
<p style="text-align: left">La première partie a été réalisée avec CubicTest, un plugin <a href="http://www.eclipse.org" target="_blank">Eclipse </a>du logiciel de test reconnu Selenium.</p>
<p style="text-align: left">La création des tests est relativement simple et rapide puisqu’il existe un mode enregistrement qui enregistre les opérations faites par l’utilisateur.</p>
<p style="text-align: left">Le logiciel capte les actions réalisées dans le navigateur et les transforme en un test fonctionnel et facilement compréhensible grâce à l’interface graphique.</p>
<p style="text-align: center"><a href="http://www.x2i.fr/techs/files/2010/10/magento-selenium-hudson-cubictest.jpg"><img class="size-full wp-image-337   aligncenter" src="http://www.x2i.fr/techs/files/2010/10/magento-selenium-hudson-cubictest.jpg" alt="magento-selenium-hudson-cubictest" width="622" height="605" /></a></p>
<p style="text-align: left">Ci-dessus un exemple de test simple réalisé avec CubicTest. Ce test exécute une recherche dans le moteur interne du site puis visite un lien du résultat.</p>
<p style="text-align: left">En plus des fonctionnalités classiques il permet notamment de réaliser des tests personnalisés ce qui permet d’ajouter les interactions qui n’existeraient pas.</p>
<p style="text-align: left">Il devient donc possible de constituer une véritable batterie de test pour passer en revue toutes les fonctionnalités vitales d’un site e-Commerce :<br />
-    création de compte<br />
-    mise au panier<br />
-    processus d’achat<br />
-    abonnement newsletter<br />
-    navigation a facette<br />
-    et tous les autres (mode grille/liste, prix, filtre, …)</p>
<p>La compatibilité avec des logiciels d’intégration continue tel qu’Hudson permet de réaliser une programmation des tests (journalière, hebdomadaire ou mensuelle par exemple en fonction des besoins).<br />
Cela permet de recevoir par email par exemple les rapports des tests ayant échoués afin d’évaluer et de corriger les éventuelles erreurs.</p>
<p style="text-align: left">Avec ce système de test automatisé réalisé de manière continue l’accessibilité et la fonctionnalité du site est vérifié, les problèmes sont donc corrigés au plus vite afin d’éviter toute perte trop importante.</p>
<p style="text-align: left"><strong>Mon socle fonctionnel Magento est sécurisé, de quels outils je dispose pour la vérification du contenu qui peut être modifié par mon service client.</strong></p>
<p style="text-align: left">La deuxième partie qui concerne la vérification du contenu a été réalisée en Java.</p>
<p style="text-align: left">Après avoir cherché et testé de nombreux softs de tests de contenu, nous avons opté pour développer notre propre moteur. En effet aucun ne répond suffisamment finement à notre besoin :</p>
<ol>
<li>Parcourir un site entièrement</li>
<li>Historiser tous les liens du site ainsi que leur contenu à des dates précises</li>
<li>Pouvoir comparer les contenus du site actuel au contenu enregistré dans la base de référence.</li>
<li>Pourvoir changer le contenu de référence pour que les évolutions des contenus ne soit pas détecté comme des erreurs.</li>
</ol>
<p style="text-align: left">Ce développement maison s’intègre dans le processus d’intégration continue afin d’être alerté de toutes modifications non souhaitées.</p>
<p style="text-align: left">Ces deux outils sont donc complémentaires pour vérifier l’intégrité et la fonctionnalité d’un site e-Commerce et ce particulièrement s’il est en évolution constante (vérifier que la correction d’un problème ou l’ajout d’une fonctionnalité n’entame pas le reste du site).</p>
<p style="text-align: left">Si vous aussi vous souhaitez mettre en place ce type de processus, <a href="http://www.x2i.fr/contacter-xi/23">contactez nous par mail</a> ou par téléphone au 05 61 82 58 86.</p>
<p>No related posts.</p>]]></content:encoded>
			<wfw:commentRss>http://www.x2i.fr/techs/2010/10/07/tests-site-magento-rduction-des-tests-manuel/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Augmenter la qualité des photos sur Magento</title>
		<link>http://www.x2i.fr/techs/2009/07/13/augmenter-la-qualite-des-photos-sur-magento/</link>
		<comments>http://www.x2i.fr/techs/2009/07/13/augmenter-la-qualite-des-photos-sur-magento/#comments</comments>
		<pubDate>Mon, 13 Jul 2009 09:24:19 +0000</pubDate>
		<dc:creator>marcjean</dc:creator>
				<category><![CDATA[Magento]]></category>
		<guid isPermaLink="false">http://www.x2i.fr/techs/?p=239</guid>
		<description><![CDATA[Modifier la qualité de compression des photos Magento : Étape 1 Copier le ficher &#8220;/lib/Varien/Image/Adapter/Gd2.php&#8221; vers &#8220;/app/code/local/Varien/Image/Adapter/Gd2.php&#8221; en créant les répertoires manquant si nécessaire. Étape 2 Ouvrez le fichier Gd2.php (la copie, pas l&#8217;original) au environ de la ligne 80 et remplacer : call_user_func($this-&#62;_getCallback('output'), $this-&#62;_imageHandler, $fileName); par : if ($this-&#62;_fileType === IMAGETYPE_JPEG) { call_user_func($this-&#62;_getCallback(’output’), $this-&#62;_imageHandler, $fileName, 90); [...]
No related posts.]]></description>
			<content:encoded><![CDATA[<h3>Modifier la qualité de compression des photos Magento :</h3>
<ol>
<li>
<h4>Étape 1</h4>
<p>Copier le ficher <em><strong>&#8220;/lib/Varien/Image/Adapter/Gd2.php&#8221;</strong></em> vers <em><strong>&#8220;/app/code/local/Varien/Image/Adapter/Gd2.php&#8221;</strong></em> en créant les répertoires manquant si nécessaire.</li>
<li>
<h4>Étape 2</h4>
<p>Ouvrez le fichier <em>Gd2.php</em> (la copie, pas l&#8217;original) au environ de la ligne 80 et remplacer :</p>
<p><code>call_user_func($this-&gt;_getCallback('output'), $this-&gt;_imageHandler, $fileName);<br />
</code></p>
<p>par :</p>
<p><code>if ($this-&gt;_fileType === IMAGETYPE_JPEG) {<br />
call_user_func($this-&gt;_getCallback(’output’), $this-&gt;_imageHandler, $fileName, 90);<br />
} else {<br />
call_user_func($this-&gt;_getCallback(’output’), $this-&gt;_imageHandler, $fileName);<br />
}</code></p>
<p>Dans mon cas j&#8217;ai opté pour 90, mais vous pouvez faire varier cette valeur entre 0 et 100 de qualité.</li>
<li>
<h4>Étape 3</h4>
<p>Pour déterminer, pensez à <strong>vider le cache des images</strong> via <em>System &gt; Cache Management</em>.</li>
</ol>
<p>Voilà, c&#8217;était simple, efficace et réutilisable sur n&#8217;importe quel projet, à partir du moment ou vous travaillez avec des images au format JPG et que votre serveur supporte GD2.</p>
<p>Source : h<a href="http://narno.com/blog/augmenter-la-qualite-des-photos-sur-magento" target="_blank">ttp://narno.com/blog/augmenter-la-qualite-des-photos-sur-magento</a></p>
<p>No related posts.</p>]]></content:encoded>
			<wfw:commentRss>http://www.x2i.fr/techs/2009/07/13/augmenter-la-qualite-des-photos-sur-magento/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ameliorer la performance de son site ecommerce (Part 1)</title>
		<link>http://www.x2i.fr/techs/2009/07/08/ameliorer-la-performance-de-son-site-ecommerce-part-1/</link>
		<comments>http://www.x2i.fr/techs/2009/07/08/ameliorer-la-performance-de-son-site-ecommerce-part-1/#comments</comments>
		<pubDate>Wed, 08 Jul 2009 12:46:14 +0000</pubDate>
		<dc:creator>marcjean</dc:creator>
				<category><![CDATA[eCommerce]]></category>
		<category><![CDATA[Techniques de pro]]></category>
		<category><![CDATA[webAnalyse]]></category>
		<category><![CDATA[optimisation]]></category>
		<category><![CDATA[performance]]></category>
		<category><![CDATA[webMarketing]]></category>
		<guid isPermaLink="false">http://www.x2i.fr/techs/?p=174</guid>
		<description><![CDATA[Aujourd'hui, pour dans un site ecommerce, l'important c'est en general :
- d'ameliorer son taux de transformation
- de diminuer son taux de rebond
- d'augmenter le nombre de creation de compte client
- d'augmenter le nombre de creation de panier
- d'augmenter son nombre de pages vues
No related posts.]]></description>
			<content:encoded><![CDATA[<p style="padding-left: 30px">Aujourd&#8217;hui, pour dans un site ecommerce,  l&#8217;important c&#8217;est en general :</p>
<p style="padding-left: 30px">- <strong>d&#8217;ameliorer son taux de transformation,</strong></p>
<p style="padding-left: 30px"><strong>- de diminuer son taux de rebond,</strong></p>
<p style="padding-left: 30px"><strong>- d&#8217;augmenter le nombre de creation de compte client,</strong></p>
<p style="padding-left: 30px"><strong>- d&#8217;augmenter le nombre de creation de panier,</strong></p>
<p style="padding-left: 30px"><strong>- d&#8217;augmenter son nombre de pages vues.</strong></p>
<p style="padding-left: 30px">Avec ces objectifs en memoire, nous repensons regulierement les ergonomies de nos pages, avec tous les doutes que cela implique. Heureusement, <span style="text-decoration: line-through">sony</span> Google l&#8217;a fait, l&#8217;outil <a href="https://www.google.com/accounts/ServiceLogin?hl=fr&amp;service=websiteoptimizer" target="_blank">Google Optimiseur de site</a>.</p>
<p style="padding-left: 30px">Cet outil va permettre de tester differentes combinaisons et laisser l&#8217;utilisateur final nous demontrer quelle est l&#8217;ergonomie la plus pertinente. Pour faire simple, voici avec un exemple les etapes :</p>
<ol>
<li> Definir ce que l&#8217;on souhaite ameliorer
<ul>
<li>ameliorer le taux de confirmation de commande</li>
</ul>
</li>
<li>Imaginer les differentes ergonomies possible avec par exemple :
<ul>
<li>Mettre 2 boutons &#8220;commander&#8221; au lieu d&#8217;un,</li>
<li>Changer le texte de validation, etc&#8230;</li>
</ul>
</li>
<li>Implementer ces differentes ergonomies</li>
<li>C&#8217;est ici qu&#8217;on intervient, ces implementations necessitent des competences en developpement (<a href="http://www.x2i.fr/contacter-xi/23">n&#8217;hesitez donc pas à nous appeler</a>)</li>
<li>Suivre les resultats en observant les combinaisons les plus pertinentes.</li>
</ol>
<p style="padding-left: 30px">En fonction du volume de visites/transformations, on obtient des resultats pertinents  plus ou moins rapidement.</p>
<p style="padding-left: 30px">Voici en pratique ce que cela donne pour quelques combinaisons de notre site de vente de <a href="http://www.made-in-ethic.com" target="_blank">vetements bio</a> pour lequel nous avons mis en place 24 combinaisons possibles ( testees sur IE7 IE6 FF3 = 72 pages de tests) sur la page de liste des produits :</p>
<ul>
<li> <a href="http://www.made-in-ethic.com/vetements-bio-femme-c-1.html#utmxid=EAAAAJTDus_4U8my9Gfdb1VRAW4;utmxpreview=1-0-0-0" target="_blank">Combinaison1</a></li>
<li><a href="http://www.made-in-ethic.com/vetements-bio-femme-c-2.html#utmxid=EAAAAJTDus_4U8my9Gfdb1VRAW4;utmxpreview=1-2-1-1" target="_blank">Combinaison23</a></li>
<li><a href="http://www.made-in-ethic.com/vetements-bio-femme-c-1_4.html#utmxid=EAAAAJTDus_4U8my9Gfdb1VRAW4;utmxpreview=0-0-1-1" target="_blank">Combinaison18</a></li>
<li> <a href="http://www.made-in-ethic.com/vetements-bio-femme-c-1_46.html#utmxid=EAAAAJTDus_4U8my9Gfdb1VRAW4;utmxpreview=0-1-1-0" target="_blank">Combinaison10</a></li>
</ul>
<p style="padding-left: 30px">L&#8217;objectif etant de trouver une combinaison qui va ameliorer le passage de la page de liste de produit vers la fiche produit. Rendez-vous dans quelques <span style="text-decoration: line-through">jours</span> semaines, des que Google  aura identifie les combinaisons gagnantes.</p>
<p style="padding-left: 30px">
<p style="padding-left: 30px">Voici le resultat d&#8217;un test qui vise a ameliorer le passage du blog a la boutique :</p>
<ol>
<li> <a href="http://www.made-in-ethic.com/blog/index.php#utmxid=EAAAADWwr_P4g2Z8BS0UzecPiIY;utmxpreview=0" target="_blank">vetements bio &#8211; le blog &#8211; Original</a></li>
<li><a href="http://www.made-in-ethic.com/blog/index.php#utmxid=EAAAADWwr_P4g2Z8BS0UzecPiIY;utmxpreview=1" target="_blank">vetements bio &#8211; le blog &#8211; Combinaison1</a></li>
<li><a href="http://www.made-in-ethic.com/blog/index.php#utmxid=EAAAADWwr_P4g2Z8BS0UzecPiIY;utmxpreview=2" target="_blank">vetements bio &#8211; le blog &#8211; Combinaison2</a></li>
</ol>
<p>Et voici le resultat apres 4 jours de tests seulement :</p>
<p style="text-align: center"><a href="http://www.x2i.fr/techs/files/2009/07/2009-07-08_144601.jpg"></a><a href="http://www.x2i.fr/techs/files/2009/07/2009-07-08_1446011.jpg"><img class="aligncenter size-full wp-image-187" src="http://www.x2i.fr/techs/files/2009/07/2009-07-08_1446011.jpg" alt="2009-07-08_1446011" width="800" height="274" /></a></p>
<p style="padding-left: 30px">
<p style="padding-left: 30px">
<p style="padding-left: 30px">Nous sommes a priori sur une piste serieuse pour doubler le traffic entrant sur la boutique en provenance du blog !!!!! CQFD Merci Google.</p>
<p style="padding-left: 30px">En mettant ces techniques en place, on met l&#8217;amelioration de la performance au centre de sa strategie ecommerce et je pense que c&#8217;est un point au moins aussi important que les resultats pertinents que cela apporte.</p>
<p style="padding-left: 30px">Je vous exposerai dans la Partie 2 du sujet, le resultat du test des 24 combinaisons</p>
<p style="padding-left: 30px">Pour terminer, sachez que Magento supporte nativement Google Optimiseur de Site, en revanche il y a certaines limitations&#8230; suite dans le prochain episode.</p>
<p style="padding-left: 30px">
<p>No related posts.</p>]]></content:encoded>
			<wfw:commentRss>http://www.x2i.fr/techs/2009/07/08/ameliorer-la-performance-de-son-site-ecommerce-part-1/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Patch Magento pour l&#8217;envoi de mail sur les machines de dev</title>
		<link>http://www.x2i.fr/techs/2009/07/06/patch-magento-pour-lenvoi-de-mail-sur-les-machines-de-dev/</link>
		<comments>http://www.x2i.fr/techs/2009/07/06/patch-magento-pour-lenvoi-de-mail-sur-les-machines-de-dev/#comments</comments>
		<pubDate>Mon, 06 Jul 2009 14:22:58 +0000</pubDate>
		<dc:creator>marcjean</dc:creator>
				<category><![CDATA[Magento]]></category>
		<category><![CDATA[PHP]]></category>
		<guid isPermaLink="false">http://www.x2i.fr/techs/?p=258</guid>
		<description><![CDATA[Dans le fichier app/code/core/Mage/Core/Model/Email/Template.php Remplacer la method send(), ligne 317 par celle-ci : public function send($email, $name=null, array $variables = array()) { if(!$this-&#62;isValidForSend()) { return false; } if (is_null($name)) { $name = substr($email, 0, strpos($email, &#039;@&#039;)); } $variables[&#039;email&#039;] = $email; $variables[&#039;name&#039;] = $name; //ini_set(&#039;SMTP&#039;, Mage::getStoreConfig(&#039;system/smtp/host&#039;)); //ini_set(&#039;smtp_port&#039;, Mage::getStoreConfig(&#039;system/smtp/port&#039;)); $config = array(&#039;port&#039; =&#62; 25, &#039;auth&#039; =&#62; &#039;login&#039;, [...]
No related posts.]]></description>
			<content:encoded><![CDATA[<pre class="brush: php">
Dans le fichier app/code/core/Mage/Core/Model/Email/Template.php
Remplacer la method send(), ligne 317 par celle-ci :
public function send($email, $name=null, array $variables = array())
{
if(!$this-&gt;isValidForSend()) {
return false;
}
if (is_null($name)) {
$name = substr($email, 0, strpos($email, &#039;@&#039;));
}
$variables[&#039;email&#039;] = $email;
$variables[&#039;name&#039;] = $name;
//ini_set(&#039;SMTP&#039;, Mage::getStoreConfig(&#039;system/smtp/host&#039;));
//ini_set(&#039;smtp_port&#039;, Mage::getStoreConfig(&#039;system/smtp/port&#039;));
$config = array(&#039;port&#039; =&gt; 25, &#039;auth&#039; =&gt; &#039;login&#039;, &#039;username&#039; =&gt; &#039;xxxxx&#039;, &#039;password&#039; =&gt; &#039;xxxxxxx&#039;);
$transport = new Zend_Mail_Transport_Smtp(&#039;smtp.xxx.fr&#039;, $config);
Zend_Mail::setDefaultTransport($transport);
$mail = $this-&gt;getMail();
if (is_array($email)) {
foreach ($email as $emailOne) {
$mail-&gt;addTo($emailOne, $name);
}
} else {
$mail-&gt;addTo($email, &#039;=?utf-8?B?&#039;.base64_encode($name).&#039;?=&#039;);
}
$this-&gt;setUseAbsoluteLinks(true);
$text = $this-&gt;getProcessedTemplate($variables, true);
if($this-&gt;isPlain()) {
$mail-&gt;setBodyText($text);
} else {
$mail-&gt;setBodyHTML($text);
}
$mail-&gt;setSubject(&#039;=?utf-8?B?&#039;.base64_encode($this-&gt;getProcessedTemplateSubject($variables)).&#039;?=&#039;);
$mail-&gt;setFrom($this-&gt;getSenderEmail(), $this-&gt;getSenderName());
//try {
$mail-&gt;send(); // Zend_Mail warning..
$this-&gt;_mail = null;
//}
//catch (Exception $e) {
//    return false;
//}
return true;
}
</pre>
<p>No related posts.</p>]]></content:encoded>
			<wfw:commentRss>http://www.x2i.fr/techs/2009/07/06/patch-magento-pour-lenvoi-de-mail-sur-les-machines-de-dev/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>La reprise de donnees vers une base Magento</title>
		<link>http://www.x2i.fr/techs/2009/07/05/la-reprise-de-donnees-vers-une-base-magento/</link>
		<comments>http://www.x2i.fr/techs/2009/07/05/la-reprise-de-donnees-vers-une-base-magento/#comments</comments>
		<pubDate>Sat, 04 Jul 2009 22:05:06 +0000</pubDate>
		<dc:creator>marcjean</dc:creator>
				<category><![CDATA[Magento]]></category>
		<category><![CDATA[guide]]></category>
		<category><![CDATA[migration]]></category>
		<guid isPermaLink="false">http://www.x2i.fr/techs/?p=115</guid>
		<description><![CDATA[Nous avons donc mis en place une methodologie qui nous permet de convertir les données d'un système vers une base de donnees magento. Nous vous livrons en exclusivité la demarche que nous application sur ce type de projet.
No related posts.]]></description>
			<content:encoded><![CDATA[<p>La ou de nombreux prestataires s&#8217;arretent aux comptes client, chez Xi nous proposons une migration complete de vos données :</p>
<ul>
<li>client (compte, carnet d&#8217;adresse, abonnement)</li>
<li>commande (recapitulatif, tva, ligne de commande)</li>
<li>produit (descriptif, image, stock)</li>
<li>categorie (descriptif, lien avec les produits)</li>
<li>coupons (nombre d&#8217;utilisation, validite)</li>
<li>panier en cours</li>
</ul>
<p>Cette etape est delicate dans un projet Magento, car :</p>
<ul>
<li>les imports natifs magento sont <span style="text-decoration: line-through">impossibles a faire </span>tres long</li>
<li>le modele de donnees magento est complexe</li>
</ul>
<p>Nous avons donc mis en place une methodologie qui nous permet de convertir les donnees d&#8217;un systeme vers une base de donnees magento. Nous vous livrons en exclusivité la demarche que nous application sur ce type de projet.</p>
<p>A telecharger notre <a href="http://www.x2i.fr/techs/files/2009/07/magento-migration-et-import-de-donnees-v10-wwwx2ifr.pdf">methodologie de migration magento</a></p>
<p><span style="text-decoration: underline">Extrait:</span></p>
<p><!--[if gte mso 9]&gt;  Normal 0 21   false false false        MicrosoftInternetExplorer4  &lt;![endif]--><!--[if gte mso 9]&gt;   &lt;![endif]--><!--[if !mso]&gt;--><strong>La problématique</strong><br />
Lorsque l’on parle de reprise (ou migration) de données, on a souvent tendance à ne penser qu’aux seules données stockées en base.<br />
Pourtant, de nombreuses autres données peuvent être impliquées :<br />
· Les images,<br />
· Les fichiers de type média (fichiers audio, vidéo, flash…)<br />
· Les fichiers de type documentaire (fichier Word, Excel, PDF…)<br />
· Les fichiers de type personnalisation client fichiers CSV, XML…) qui stockent des informations personnalisées par vos clients en dehors de la base de données.<br />
· …et d’autres types de fichiers auxquels nous n’avons pas encore pensés…</p>
<p>Ces types de données peuvent ou non être liées ou non aux données de la base.</p>
<p><strong>La réponse Xi Ingénierie</strong><br />
L’une des premières étapes de la spécification détaillée de reprise des données consisté à justement identifier l’ensemble des données qui doivent faire l’objet de cette migration.</p>
<p>Pour chaque donnée identifiée, nous stipulons :<br />
· Son type d’origine : base de données, fichier contenu, fichier de données…<br />
· Son type de destination (idem)<br />
· Son utilisation FO (Front Office) ou BO (Back Office)<br />
· Les relations existantes entre les données<br />
· Sa signification métier : l’utilisation qui en sera faite dans votre site eCommerce<br />
· Les processus d’intégrité qui lui sont associés : par exemple, une adresse est nécessairement liée à une personne physique ou une entité juridique.</p>
<p>No related posts.</p>]]></content:encoded>
			<wfw:commentRss>http://www.x2i.fr/techs/2009/07/05/la-reprise-de-donnees-vers-une-base-magento/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Magento, l&#8217;atout pour votre eCommerce</title>
		<link>http://www.x2i.fr/techs/2009/07/04/le-livre-blanc-magento-community-edition/</link>
		<comments>http://www.x2i.fr/techs/2009/07/04/le-livre-blanc-magento-community-edition/#comments</comments>
		<pubDate>Sat, 04 Jul 2009 20:56:31 +0000</pubDate>
		<dc:creator>marcjean</dc:creator>
				<category><![CDATA[eCommerce]]></category>
		<category><![CDATA[Magento]]></category>
		<category><![CDATA[guide]]></category>
		<guid isPermaLink="false">http://www.x2i.fr/techs/?p=105</guid>
		<description><![CDATA[Grace a ce livre blanc, vous aurez la documentation des fonctionnalites de magento en francais.
Related posts:<ol><li><a href='http://www.x2i.fr/techs/2011/03/15/xiconnect-notre-solution-couplage-magento-vers-votre-erp-ou-si/' rel='bookmark' title='Permanent Link: XiConnect, Notre solution de couplage Magento vers votre ERP ou SI'>XiConnect, Notre solution de couplage Magento vers votre ERP ou SI</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p style="text-align: center"><img class="aligncenter size-full wp-image-290" src="http://www.x2i.fr/techs/files/2009/07/magento-box_1.png" alt="magento-box_1" width="159" height="175" /></p>
<p>Voici en exclusivité notre eBook &#8220;<a href="http://www.x2i.fr/techs/files/2009/07/magento-ecommerce-les-atouts-v11-x2i.pdf">Votre projet eCommerce : les atouts de Magento</a>&#8221; from toulouse, il concerne la version community edition, c&#8217;est la premiere version, il y aura surement des ameliorations et/ou corrections.</p>
<p>Nous sommes partis du document anglais pour produire ce document de reference qui liste notamment toutes les fonctionnalites de magento</p>
<p>A Telecharger pour mieux connaitre Magento : <a href="http://www.x2i.fr/techs/files/2009/07/magento-ecommerce-les-atouts-v11-x2i.pdf">Votre projet eCommerce : les atouts de Magento</a><a href="http://www.x2i.fr/techs/files/2009/07/livre-blanc-magento-v10-wwwx2ifr.pdf"><br />
</a></p>
<p><span style="text-decoration: underline">Extrait</span>:</p>
<p><strong>WebMarketing promotionnel</strong><br />
Au cœur du site ecommerce, le marketing promotionnel est un des facteurs de ventes les plus importants. Notamment, Magento vous assiste fortement dans tout ce qui a trait aux ventes croisées et proposition de produits en fonction du contexte, et ce, jusqu’au moment de l’achat.<br />
Par ailleurs, vous disposer d’un outil de gestion des promotions intégralement paramétrable : faites enfin les promotions dont vous rêviez !<br />
Magento intègre aussi des fonctionnalités très appréciée comme les listes de vœux, les bons cadeaux, les sondages…</p>
<p>Related posts:<ol><li><a href='http://www.x2i.fr/techs/2011/03/15/xiconnect-notre-solution-couplage-magento-vers-votre-erp-ou-si/' rel='bookmark' title='Permanent Link: XiConnect, Notre solution de couplage Magento vers votre ERP ou SI'>XiConnect, Notre solution de couplage Magento vers votre ERP ou SI</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.x2i.fr/techs/2009/07/04/le-livre-blanc-magento-community-edition/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Best practices pour FLEX PureMVC</title>
		<link>http://www.x2i.fr/techs/2009/06/25/best-practices-pour-puremvc/</link>
		<comments>http://www.x2i.fr/techs/2009/06/25/best-practices-pour-puremvc/#comments</comments>
		<pubDate>Thu, 25 Jun 2009 10:26:23 +0000</pubDate>
		<dc:creator>marcjean</dc:creator>
				<category><![CDATA[AS3 / Flex / Air]]></category>
		<category><![CDATA[flex]]></category>
		<category><![CDATA[puremvc]]></category>
		<guid isPermaLink="false">http://www.x2i.fr/techs/?p=130</guid>
		<description><![CDATA[Ce document s'adresse en priorité aux personnes ayant des connaissances en Flex et en Action Script et qui ont une vision du travail qu'effectue PureMVC. Il nécessite donc de bien comprendre les notions de classes Action Script 3 et d'avoir un vue d'ensemble de la réalisation d'une application PureMVC.
No related posts.]]></description>
			<content:encoded><![CDATA[
<h1>Préambule</h1>
<h2>Version logicielle</h2>
<p>Pour cet article, les versions utilisées sont les suivantes</p>
<p>* Flex 3<br />
* ActionScript 3<br />
* PureMVC 2.0.1</p>
<h2>A qui s&#8217;adresse ce document ?</h2>
<p>Ce document s&#8217;adresse en priorité aux personnes ayant des connaissances en Flex et en Action Script et qui ont une vision du travail qu&#8217;effectue PureMVC. Il nécessite donc de bien comprendre les notions de classes Action Script 3 et d&#8217;avoir un vue d&#8217;ensemble de la réalisation d&#8217;une application PureMVC.</p>
<h2>Que contient ce document ?</h2>
<p>Ce document contient un ensemble de bonnes pratiques à appliquer sur le projet. Il décrit le fonctionnement rapide et l&#8217;intérêt des concepts de pure MVC, ainsi que les structures de fichiers des projects et les séquences de démarrage d&#8217;une application pure MVC couplée à Flex.</p>
<h1>Principe de fonctionnement de PureMVC</h1>
<p>Ce paragraphe a pour objectif de faire un rapide tour d&#8217;horizon des notions qui entoure PureMVC.</p>
<h2>L&#8217;application Façade</h2>
<p>L&#8217;application facade est, dans PureMVC, l&#8217;interlocuteur privilégié pour tous les &#8220;acteurs&#8221; du projet. C&#8217;est elle qui va démarrer le système PureMVC, en initialisant les différentes commandes et envoyant les messages de démarrage. C&#8217;est aussi à elle que l&#8217;on va s&#8217;adresser pour récupérer une instance sur un proxy, ou pour enregistrer un proxy.</p>
<p><strong>Règles de nommage</strong> : La facade étant unique dans une application, on la nommera toujours ApplicationFacade.</p>
<h2>Les notifications</h2>
<p>Les principes de base dans PureMVC résident dans les notifications, qui permettent le dialogue entre les différentes couches de l&#8217;application. Une notification est capable de transporter un objet qui sera utilisé par l&#8217;intercepteur pour réaliser son travail.</p>
<p><strong>Règles de création</strong>: La constante représentant une notification est toujours écrite dans le proxy qui est en charge de la notification. Dans le cas où aucun proxy n&#8217;intervient alors on devra faire en sorte que la constante se trouve dans la vue qui doit l&#8217;envoyer.</p>
<p><strong>Règles de nommage</strong> : Les notifications seront suffixées par &#8220;_NOTIFICATION&#8221;. Cela permet en particulier de les distinguer des événements.</p>
<h2>Les Médiators</h2>
<p>Au sein de PureMVC, l&#8217;objectif des médiators est de faire l&#8217;interface entre la partie vue et la partie les couches sous-jacentes de l&#8217;application PureMVC. Dans un premier temps, il se charge simplement de recevoir les évènements en provenant de la vue et de créer les notifications qui correspond. Dans un deuxième temps, il reçoit les événements de la couche model et met à jour la vue en conséquence.</p>
<p><strong>Règle de créations </strong> : On crée en général un médiator par composant qui envoie plusieurs évènements, afin de ne pas multiplier les médiators effectuant des actions qui pourraient être regroupées. Ainsi, si on a un panel avec 3 boutons et une liste, il sera conseillé de créer un médiator pour le panel qui réceptionnera les informations du panel et les informations des boutons et un médiator pour la liste qui prendra en charge les événements en provenance de la liste s&#8217;ils sont nombreux.<br />
<strong><br />
Règles de nommage</strong> : Le nom d&#8217;un médiator doit être composé sous la forme &#8220;nomdelavueconcernée&#8221;+&#8221;Mediator&#8221;</p>
<h2>Les Commands</h2>
<p>Les commandes sont des classes qui vont être enregistrées sur les notifications qui transitent dans PureMVC. L&#8217;objectif de ces classes est d&#8217;effectuer des actions complexes pour le compte de la vue. La question qui se pose est de savoir pourquoi on n&#8217;utilise pas directement les médiators pour effectuer les actions sur le modèle. Sans l&#8217;utilisation des commandes, le médiator va contenir l&#8217;ensemble des actions à effectuer et de ce fait toute réorganisation de la vue va entrainer une réorganisation du code contenu dans les médiators. Par ailleurs si on souhaite effectuer la même commande sur une autre notification on va devoir dupliquer le code.</p>
<p><strong>Règles de création</strong> : D&#8217;une manière générale on créera des commandes pour toutes interactions avec les modèles via les proxy, à partir du moment où l&#8217;on veut faire autre chose qu&#8217;une consultation. D&#8217;une manière plus spécifique, on créera une commande lorsque l&#8217;action qui devra être réalisée est complexe et lourde ou lorsque l&#8217;on souhaite connecter la même action sur plusieurs notifications.</p>
<p><strong>Règles de nommage</strong> : Le nom d&#8217;une commande doit forcément se terminer par le mot clé &#8220;Command&#8221;.</p>
<h1>Les Proxy</h1>
<p>L&#8217;objectif des proxy est de venir masquer l&#8217;interaction avec les modèles métier et les services. Il offre un ensemble de méthode et prend en charge ensuite l&#8217;appel aux services, la modification de données etc&#8230; Le principal avantage du proxy est de permettre la modification de l&#8217;appel à un service sans avoir à impacter l&#8217;ensemble du code nécessitant ce service. Il masque l&#8217;utilisation des services et de ce fait permet la réalisation de services fictifs répondant à un besoin mais qui n&#8217;effectue pas d&#8217;action sur le modèle. Cette technique permet de travailler sur un interface en flex sans que l&#8217;appel réel aux services soit réalisé.</p>
<p><strong>Règle de création</strong> : On créera un service par objet qui va transiter vers les services via par exemple AMF PHP.</p>
<h2>Les Values Objects</h2>
<p>Un value object est un conteneur d&#8217;information, qui permet de faire transiter des données entre les différents couches de l&#8217;application. Ces objets sont une représentation d&#8217;un groupe de données qui transitent au sein de l&#8217;application. On utilise principalement les values objects au moment de la présentation des données en les &#8220;bindant&#8221; aux champs du formulaire flex. Ceci permet ensuite la récupération d&#8217;un objet dont les données sont automatiquement complétées par les mécanismes Flex.</p>
<p><strong>Règle de création</strong> : On créera un value object pour représenter un élément complexe de l&#8217;application et lorsque l&#8217;on aura besoin de faire transiter un groupe d&#8217;informations via les notifications. Par exemple si on dispose d&#8217;un ensemble de formulaire éditant tout ou une partie des propriétés d&#8217;un objet métier, on va donc créer un Value Object qui rassemblera l&#8217;ensemble des propriétés des différents formulaire afin de centraliser l&#8217;information.</p>
<h1>Structure du projet</h1>
<h2>Le répertoire ressources</h2>
<p>Le répertoire ressources contient l&#8217;ensemble des ressources qui vont être embarquées dans l&#8217;application avec la spécification embed. Il contient généralement les images et surtout les fichiers de locales qui vont être chargés lors du démarrage de l&#8217;application.</p>
<h2>Le répertoire src</h2>
<p>Ce répertoire contient les sources de l&#8217;application et est structuré en trois packages.</p>
<p>* Le package controller</p>
<p>On regroupera dans ce package l&#8217;ensemble des commandes de l&#8217;application.</p>
<p>* Le package view : c&#8217;est dans ce package seront regroupé l&#8217;ensemble des médiators mais aussi l&#8217;ensemble des composants Mxml de l&#8217;application. Il est important de suivre la règle de création suivante pour les sous packages : un sous package par groupe de médiators et composants. Tous médiators qui concernent un composant particulier seront groupés.</p>
<p>* Le package model: on retrouvera dans ce package l&#8217;ensemble des proxy ainsi que les values objets de l&#8217;application. Les value objets sont placés ici pour éviter les dépendances montant entre les proxy et les deux couches supérieures contenant les commandes et les vues.</p>
<h1>Séquence de démarrage d&#8217;une application Flex 3 couplée à PureMVC</h1>
<p style="text-align: left">Dans le cadre d&#8217;un modèle MVC standard, il est généralement préférable de faire démarrer l&#8217;application par le biais d&#8217;un controller qui va initialiser l&#8217;ensemble des intervenants de l&#8217;application. Cette stratégie n&#8217;est pas applicable dans le cas de Flex, puisqu&#8217;il existe une application par défaut dans flex. L&#8217;application par défaut (fichier Mxml) qui va être appelée par le runtime de Flex au démarrage de l&#8217;application. On se retrouve donc dans un position inversée : La vue démarre l&#8217;application, sans être au préalable assurée de la disponibilité des autres intervenants.</p>
<p style="text-align: center"><a href="http://www.x2i.fr/techs/files/2009/07/application_startup.png"><img class="size-thumbnail wp-image-143 aligncenter" src="http://www.x2i.fr/techs/files/2009/07/application_startup-150x150.png" alt="application_startup" width="150" height="150" /></a>Exemple de démarrage d&#8217;un application PureMVC</p>
<p>Pour palier à ce problème il faut donc faire en sorte que la vue démarre l&#8217;ensemble de l&#8217;application de manière correcte afin d&#8217;éviter d&#8217;éventuels problèmes d&#8217;accès à des objets non existant. Pour ce faire, il est nécessaire d&#8217;utiliser l&#8217;application facade, qui elle va prendre en charge le démarrage de l&#8217;application. On suivra donc les étapes suivantes :</p>
<p>1. Création d&#8217;un médiator pour la vue application ApplicationMediator. Ce médiator va prendre en charge les évènements et le comportement de l&#8217;Application par défaut flex.<br />
2. Créer une macro commande ApplicationCommand qui va prendre en charge le démarrage de l&#8217;application.<br />
3. Rajouter dans l&#8217;initialisation de l&#8217;applicationCommand, deux sous commandes : ModelPreparationCommand et ViewPreparationCommand.<br />
4. Le corps de la commande de préparation du model &#8220;ModelPreparationCommand&#8221; enregistre l&#8217;ensemble des proxys nécessaire à l&#8217;application.<br />
5. Le corps de la commande de préparation de la vue &#8220;ViewPreparationCommand&#8221; enregistre le médiator de l&#8217;application (Application Mediator) et lui demande d&#8217;afficher la première vue (généralement, on effectue un changement d&#8217;index sur une stack).<br />
6. L&#8217;application mxml récupère une instance de l&#8217;application facade et le onCreationComplete execute la fonction startup de l&#8217;applicationFacade.<br />
7. A son initialisation l&#8217;applicationFacade enregistre la commande ApplicationCommande sur la notification Startup puis la fonction startup de l&#8217;applicationFacade envoie la notification de démarrage de l&#8217;application :</p>
<pre><span style="color: #ff6600">override protected function initializeController():void</span></pre>
<pre><span style="color: #ff6600">{
 //initialise les controllers.</span></pre>
<pre><span style="color: #ff6600"> super.initializeController();</span></pre>
<pre><span style="color: #ff6600"> //register the application on the startup notification.</span></pre>
<pre><span style="color: #ff6600"> this.registerCommand(STARTUP_NOTIFICATION,ApplicationStartupCommand);            </span></pre>
<pre><span style="color: #ff6600">}</span></pre>
<pre><span style="color: #ff6600">public function startup(flexApplication:ArchectypeApplication ):void
{</span></pre>
<pre><span style="color: #ff6600"> this.sendNotification(STARTUP_NOTIFICATION, flexApplication);</span></pre>
<pre><span style="color: #ff6600">}</span></pre>
<h1>Gestion de évènements et des notifications</h1>
<h2>Utilisation des values objects</h2>
<p>Comme nous l&#8217;avons vue précédemment, il est important de disposer de value object pour pouvoir faire transiter l&#8217;information correctement entre les différentes couches. Un fois la classe value object définie, on va créer un instance dans la vue et la rentre public et bindable de la manière suivante:</p>
<p><span style="color: #ff6600">[Bindable] public var categoryVO:CategoryVO = new CategoryVO();</span></p>
<p>L&#8217;objectif est ici que l&#8217;on puisse récupérer l&#8217;object par le médiator pour l&#8217;envoyer dans la notification.<br />
Création et remontée des évènements dans la vues</p>
<p>L&#8217;objectif dans l&#8217;utilisation de PureMVC est que la vue Flex (fichier MXML) ne connaisse pas du tout son médiateur, afin que l&#8217;on puisse changer à volonter le médiateur gérant les évènements. Pour pouvoir effectuer ce découplage, la stratégie consiste faire remonter les évènements vers les éléments à l&#8217;écoute du composant.</p>
<p>Pour cela on crée un ensemble de constantes qui vont définir les évènements :</p>
<p><span style="color: #ff6600">/**<br />
* Type d&#8217;évènement envoyé lors du clique sur le bouton de suppression.<br />
*/<br />
public static const DELETE_EVENT:String = &#8220;DELETE_EVENT&#8221;;<br />
/**<br />
* Type d&#8217;évènement envoyé lorsque le composant à été crée complètement<br />
*/<br />
public static const CREATION_COMPLETE_EVENT:String = &#8220;CREATION_COMPLETE_EVENT&#8221;;</span></p>
<p>On créera ensuite un fonction pour renvoyer les évènements vers les listeners :</p>
<p><span style="color: #ff6600">/**<br />
* Méthode qui intercepte les évenments sur les boutons.<br />
* @param type le type d&#8217;évènement qui est interceptés.<br />
*/<br />
public function handleButtonEvent(type:String):void<br />
{<br />
//Dispatch les évènements vers les listeners<br />
dispatchEvent(new Event(type));<br />
}</span></p>
<p>Et on branchera ensuite cette fonction sur les différents évènements comme par exemple sur un bouton :</p>
<p><span style="color: #ff6600">&lt;mx:Button x=&#8221;317&#8243; y=&#8221;71&#8243; width=&#8221;100&#8243; label=&#8221;Supprimer&#8221; click=&#8221;handleButtonEvent(DELETE_EVENT)&#8221; id=&#8221;deleteButton&#8221;/&gt;</span></p>
<p>Une des pratiques importantes est de documenter ces évènements grâce au méta-data :</p>
<p><span style="color: #ff6600">&lt;mx:Metadata&gt;<br />
/**<br />
* Evènement déclenché lorsque la création du composant est terminée.<br />
*/<br />
[Event("CREATION_COMPLETE_EVENT")]</span></p>
<p><span style="color: #ff6600">/**<br />
* Evènement déclenché lors de la mise à jour de la sélection sur la liste.<br />
*/<br />
[Event("SELECTION_CHANGE_EVENT")]<br />
&lt;/mx:Metadata&gt;</span></p>
<p>On spécifie ici que la vue en question va envoyer un évènement<strong> SELECTION_CHANGE_EVENT</strong> et un évènement <strong>CREATION_COMPLETE_EVENT</strong> et les commentaires apparaitront dans la documentation générée grâce à asdoc.</p>
<h2>Réception et traitement des évènements dans les médiators</h2>
<p>Dans le paragraphe précédent nous avons vu que les vues remontaient des évènements suites à des actions de l&#8217;utilisateur. Sachant que le médiator d&#8217;une vue est la pour faire le dialogue avec les couches inférieures, on l&#8217;enregistrera de la manière suivante sur les évènements de la vue :</p>
<p><span style="color: #ff6600">categoryScreen.addEventListener(CategoryScreen.DELETE_EVENT, onEvent);<br />
categoryScreen.addEventListener(CategoryScreen.CREATION_COMPLETE_EVENT, onEvent);</span></p>
<p>Dans ce code, categoryScreen est le composant mxml sur lequel sont enregistrés le médiator et onEvent est la fonction qui va traiter l&#8217;évènement. Dans la fonction onEvent, on va faire en sorte d&#8217;envoyer une notification, qui sera interceptée par la couche commande pour effectuer le travail désiré:</p>
<p><span style="color: #ff6600">public function onEvent(event:Event):void<br />
{<br />
[...]<br />
switch (event.type)<br />
{<br />
[...]<br />
case CategoryScreen.DELETE_EVENT:<br />
//envoie d&#8217;une notification contenant l&#8217;élément à supprimer<br />
category = this.categoryScreen.categoriesList.selectedItem as CategoryVO;<br />
facade.sendNotification(CategoryProxy.CATEGORY_DELETE_NOTIFICATION, category);<br />
break;<br />
}<br />
}</span></p>
<p>Il est à noté que l&#8217;on évitera de faire un succession d&#8217;accès par l&#8217;opérateur &#8220;.&#8221; aux éléments fils d&#8217;une vue. L&#8217;exemple présenté ici est en partie un contre exemple. Ce qu&#8217;il est important de noté est la récupération du value object.</p>
<h2>Séquence de propagation des évènements</h2>
<p>La séquence de propagation des évènements est la suivante</p>
<p>1. L&#8217;utilisateur clique sur un bouton ce qui déclenche un évènement<br />
2. L&#8217;évènement est intercepté par la vue et dispatcher aux listeners<br />
3. Le médiateur qui est à l&#8217;écoute sur l&#8217;évènement, est alerté et envoie un notification<br />
4. La commande reçoit la notification et fait appel au proxy pour exécuter les appels<br />
5. Si l&#8217;appel se déroule bien alors le proxy envoie une notification de mise à jour<br />
1. le médiator intercepte la notification<br />
2. le médiator fait appel au proxy récupérer les valeurs.<br />
3. le médiator met à jour la vue avec les données du proxy.<br />
6. Si l&#8217;appel ne se déroule pas bien le proxy ou la commande envoie un notification de problème<br />
1. le médiator intercepte la notification de problème.<br />
2. le médiator affiche le message d&#8217;erreur.</p>
<h1>Stratégie d&#8217;enregistrement des médiateurs</h1>
<p>Un médiator est toujours enregistré sur un vue existante. Cependant, en raison de l&#8217;initialisation à la demande des composants en Flex, on se retrouve régulièrement dans le cas d&#8217;un appel à une instance d&#8217;un object qui n&#8217;existe pas.<br />
L&#8217;évènement onCreationComplete</p>
<p>Cet évènement est déclenché lorsque tout les composants ont été initialisé. Cependant dans le cas d&#8217;un accordéon qui contient deux canvas, eux même contenant deux boutons, l&#8217;évènement onCreationComplete apparait lorsque les deux canvas on été initialisé, mais les boutons du deuxième canvas n&#8217;ont pas été crée. On recoit donc un évènement lorsque les deux éléments fils ont été crée.</p>
<p><a href="http://livedocs.adobe.com/flex/15/flex_docs_en/wwhelp/wwhimpl/common/html/wwhelp.htm?context=Flex_Documentation&amp;file=00000388.htm" target="_self">onCreationComplete with flex</a></p>
<h2>Création des médiateurs</h2>
<p>Pour palier aux problèmes évoqués précédemment, il est nécessaire de faire en sorte que la création des médiators fils se fasse de la manière suivante :</p>
<p style="text-align: center"><a href="http://www.x2i.fr/techs/files/2009/07/mediator_registering_strategy.png"><img class="aligncenter size-thumbnail wp-image-160" src="http://www.x2i.fr/techs/files/2009/07/mediator_registering_strategy-150x150.png" alt="mediator_registering_strategy" width="150" height="150" /></a>Exemple de séquence de création de médiateurs</p>
<p style="text-align: left">1. On part du postula que le médiator du composant parent ainsi que le composant parent ont été créés<br />
2. Le mediator du composant parent s&#8217;enregistre sur l&#8217;évènement creation complete du composant parent<br />
3. L&#8217;évènement CreationComplete du composant parent est déclenché, on sait alors que tout les composants fils de premier niveau ont été créés.<br />
4. Le médiator du composant parent crée alors les médiators pour les composants fils et les enregistre sur les composants fils.<br />
5. Les médiators du composants fils s&#8217;initialisent et s&#8217;enregistrent sur les évènements des composants concernés.</p>
<h1>Résumé des règles</h1>
<p>1. Utiliser des values objects pour le transport des informations<br />
2. Utiliser la méthode &#8220;DispatchEvent&#8221; pour la gestion des évènements sur les vues<br />
3. Utiliser le mediator comme simple intermédiaire entre les vues et les couches inférieures.<br />
4. Préferer l&#8217;utilisation des commandes au placement de la logique métier dans la vue</p>
<p>No related posts.</p>]]></content:encoded>
			<wfw:commentRss>http://www.x2i.fr/techs/2009/06/25/best-practices-pour-puremvc/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>GED Alfresco</title>
		<link>http://www.x2i.fr/techs/2009/06/22/alfresco/</link>
		<comments>http://www.x2i.fr/techs/2009/06/22/alfresco/#comments</comments>
		<pubDate>Mon, 22 Jun 2009 10:15:48 +0000</pubDate>
		<dc:creator>marcjean</dc:creator>
				<category><![CDATA[GED Alfresco]]></category>
		<guid isPermaLink="false">http://www.x2i.fr/techs/?p=134</guid>
		<description><![CDATA[Xi Ingenierie utilise Alfresco, qui est une solution Open Source sous licence LGPL1 de gestion de contenu d'entreprise créée en juin 2005.
No related posts.]]></description>
			<content:encoded><![CDATA[
<h1><span class="mw-headline">Présentation</span></h1>
<p>Alfresco est une solution Open Source sous licence LGPL1 de gestion de contenu d&#8217;entreprise créée en juin 2005. C&#8217;est un système ouvert et basé sur la technologie J2EE JSF (Java Server Faces) permettant la gestion de contenu d&#8217;entreprise et l&#8217;accès fluide et aisé au contenu pour les différents utilisateurs. Cette solution utilise de nombreux outils libres reconnus comme Tomcat (serveur Web et compilateur JSP), HSQLDB (base de données relationnelle en Java), Lucene (moteur de recherche libre en Java), et bien d&#8217;autres&#8230;</p>
<p>Alfresco propose de nombreuses fonctionnalités, notamment :</p>
<ul type="disc">
<li class="MsoNormal">Solution libre</li>
<li class="MsoNormal">Peu gourmand en ressources      serveur</li>
<li class="MsoNormal">Système CIFS</li>
<li class="MsoNormal">Accès via une interface web      ou explorateur via CIFS</li>
<li class="MsoNormal">Facile à administrer via      l&#8217;interface web</li>
<li class="MsoNormal">Possibilité d&#8217;éditer des      documents en ligne ou via CIFS</li>
<li class="MsoNormal">Mise à jour automatique      lors des modifications de documents</li>
<li class="MsoNormal">Gestion des droits et de      l&#8217;accès en fonction des utilisateurs</li>
</ul>
<h1><a name="Versions"></a><span class="mw-headline">Versions</span></h1>
<p>Pour un topo sur les versions suivez ce lien : <a title="Alfresco Versions" href="http://rome-v/mediawiki/index.php/Alfresco_Versions">Alfresco Versions</a></p>
<h1><a name="Developpement"></a><span class="mw-headline">Développement</span></h1>
<p><a name="cas_d.27utilisation_du_client_web"></a></p>
<h2><span class="mw-headline">Cas d&#8217;utilisation du client web</span></h2>
<p><span class="mw-headline"><img class="aligncenter" src="http://rome-v/mediawiki/images/7/7d/Usecasewebclient.jpeg" alt="" width="620" height="561" /><br />
</span></p>
<h2><a name="Liste_des_Fonctionnalit.C3.A9s_pour_les_"></a><span class="mw-headline">Liste des Fonctionnalités pour les modifications </span></h2>
<h3><a name="Environnements_de_d.C3.A9veloppement"></a><span class="mw-headline">Environnements de développement</span></h3>
<h4><a name="SDk"></a><span class="mw-headline">SDk</span></h4>
<p>Alfresco propose dans le cadre de sa logique Open Source un standard développement Kit téléchargeable sur le site de sourceforge. Cet SDK est la méthode la plus simple pour apprendre a <span> </span><span> </span>l’application Alfresco et a créer des plugins.</p>
<h4><a name="SVN"></a><span class="mw-headline">SVN</span></h4>
<p>Alfresco propose un répertoire subversion accessible a tous en lecture. Il est ainsi possible pour tout développeur désireux de <span> </span><span> </span>le core de l’application. Mais, dans notre cas, comme nous voulons faire du suivi de version il est plus conseillé de ne pas utiliser cette méthode, il sera plus logique de passer par un système de plugins.</p>
<h3><a name="Les_possibilit.C3.A9s_de_d.C3.A9veloppem"></a><span class="mw-headline">Les possibilités de développement</span></h3>
<h4><a name="Java_script_API"></a><span class="mw-headline">Java script API</span></h4>
<p>Alfresco propose une bibliothèque afin de faciliter l’écriture de java scripts directement exécutables dans le web client. Les scripts java script exécutés sur le client proposent même d’inclure d’autres scripts, on peut ainsi créer des bibliothèques de java script.<br />
<a title="http://wiki.alfresco.com/wiki/JavaScript_API" href="http://wiki.alfresco.com/wiki/JavaScript_API">http://wiki.alfresco.com/wiki/JavaScript_API</a></p>
<h4><a name="Content_Management_Web_Services_API"></a><span class="mw-headline">Content Management Web Services API</span></h4>
<p>Les web services proposent de nombreuses actions sur le contexte Alfresco. Alfresco propose ainsi, des services sur l’authentification, les repositories, les actions… mais aussi, des services sur les données et les métas donnés ainsi que sur les SOAP headers et un langage de requête.<br />
<a title="http://wiki.alfresco.com/wiki/Alfresco_Content_Management_Web_Services" href="http://wiki.alfresco.com/wiki/Alfresco_Content_Management_Web_Services">http://wiki.alfresco.com/wiki/Alfresco_Content_Management_Web_Services</a></p>
<h4><a name="Content_Management_Java_API"></a><span class="mw-headline">Content Management Java API</span></h4>
<p>Alfresco&#8217;s Content Management Java Services API est un ensemble de services qui permettent un accès complet au dépôt des fichiers d&#8217;Alfresco.<br />
<a title="http://wiki.alfresco.com/wiki/Alfresco_Content_Management_Java_API" href="http://wiki.alfresco.com/wiki/Alfresco_Content_Management_Java_API">http://wiki.alfresco.com/wiki/Alfresco_Content_Management_Java_API</a></p>
<h4><a name="Java_Content_Repository_.28JCR.29_API"></a><span class="mw-headline">Java Content Repository (JCR) API</span></h4>
<p>Méthode standard pour travailler sur les fchiers Alfresco<br />
<a title="http://wiki.alfresco.com/wiki/Introducing_the_Alfresco_Java_Content_Repository_API" href="http://wiki.alfresco.com/wiki/Introducing_the_Alfresco_Java_Content_Repository_API">http://wiki.alfresco.com/wiki/Introducing_the_Alfresco_Java_Content_Repository_API</a></p>
<h4><a name="Web_Script"></a><span class="mw-headline">Web Script</span></h4>
<p><a title="http://wiki.alfresco.com/wiki/Web_Scripts" href="http://wiki.alfresco.com/wiki/Web_Scripts">http://wiki.alfresco.com/wiki/Web_Scripts</a><br />
Pour plus d&#8217;infos : <a title="Alfresco:webscript" href="http://rome-v/mediawiki/index.php/Alfresco:webscript">alfresco:webscript</a></p>
<h2><a name="Cahier_des_charges_XI"></a><span class="mw-headline">Cahier des charges XI</span></h2>
<ul type="disc">
<li class="MsoNormal"><a title="Alfresco:cahier des charges xi" href="http://rome-v/mediawiki/index.php/Alfresco:cahier_des_charges_xi">Alfresco:cahier des charges xi</a></li>
<li class="MsoNormal"><a title="Alfresco:calendrier du développement" href="http://rome-v/mediawiki/index.php/Alfresco:calendrier_du_d%C3%A9veloppement">Alfresco:calendrier du      développement</a></li>
</ul>
<h1><a name="Tutoriaux"></a><span class="mw-headline">Tutoriaux</span></h1>
<ul type="disc">
<li class="MsoNormal"><a title="Alfresco:Module Management Tool" href="http://rome-v/mediawiki/index.php/Alfresco:Module_Management_Tool">Alfresco:Module Management Tool</a></li>
<li class="MsoNormal"><a title="Alfresco:Acceder au CIFS avec firefox" href="http://rome-v/mediawiki/index.php/Alfresco:Acceder_au_CIFS_avec_firefox">Alfresco:Acceder au CIFS      avec firefox</a></li>
</ul>
<h1><a name="Liens"></a><span class="mw-headline">Liens</span></h1>
<ul type="disc">
<li class="MsoNormal">Forum
<ul type="circle">
<li class="MsoNormal">Le forum francophone:       <a title="http://forum.alfresco-fr.org/" href="http://forum.alfresco-fr.org/">http://forum.alfresco-fr.org/</a></li>
<li class="MsoNormal">Le forom       anglais : <a title="http://forums.alfresco.com/" href="http://forums.alfresco.com/">http://forums.alfresco.com/</a></li>
</ul>
</li>
</ul>
<ul type="disc">
<li class="MsoNormal">Téléchargement :
<ul type="circle">
<li class="MsoNormal">La page       sourceforge : <a title="http://sourceforge.net/project/showfiles.php?group_id=143373" href="http://sourceforge.net/project/showfiles.php?group_id=143373">http://sourceforge.net/project/showfiles.php?group_id=143373</a></li>
</ul>
</li>
</ul>
<ul type="disc">
<li class="MsoNormal">Wiki:
<ul type="circle">
<li class="MsoNormal">Français : <a title="http://wiki.alfresco.com/fr/index.php/Accueil" href="http://wiki.alfresco.com/fr/index.php/Accueil">http://wiki.alfresco.com/fr/index.php/Accueil</a></li>
<li class="MsoNormal">Anglais : <a title="http://wiki.alfresco.com/wiki/Main_Page" href="http://wiki.alfresco.com/wiki/Main_Page">http://wiki.alfresco.com/wiki/Main_Page</a></li>
</ul>
</li>
</ul>
<ul type="disc">
<li class="MsoNormal">Developpeurs
<ul type="circle">
<li class="MsoNormal"><span lang="EN-GB">Developer Guide: </span><a title="http://wiki.alfresco.com/wiki/Developer_Guide" href="http://wiki.alfresco.com/wiki/Developer_Guide"><span lang="EN-GB">http://wiki.alfresco.com/wiki/Developer_Guide</span></a><span> </span></li>
<li class="MsoNormal"><span lang="EN-GB">Repository architecture: </span><a title="http://wiki.alfresco.com/wiki/Alfresco_Repository_Architecture" href="http://wiki.alfresco.com/wiki/Alfresco_Repository_Architecture"><span lang="EN-GB">http://wiki.alfresco.com/wiki/Alfresco_Repository_Architecture</span></a><span> </span></li>
<li class="MsoNormal"><span lang="EN-GB">SDK: </span><a title="http://wiki.alfresco.com/wiki/Alfresco_SDK" href="http://wiki.alfresco.com/wiki/Alfresco_SDK"><span lang="EN-GB">http://wiki.alfresco.com/wiki/Alfresco_SDK</span></a><span> </span></li>
<li class="MsoNormal">SVN Dev Env.: <a title="http://wiki.alfresco.com/wiki/Alfresco_SVN_Development_Environment" href="http://wiki.alfresco.com/wiki/Alfresco_SVN_Development_Environment">http://wiki.alfresco.com/wiki/Alfresco_SVN_Development_Environment</a></li>
</ul>
</li>
</ul>
<ul type="disc">
<li class="MsoNormal">Forge:
<ul type="circle">
<li class="MsoNormal"><a title="http://forge.alfresco.com/" href="http://forge.alfresco.com/">http://forge.alfresco.com/</a> (Pour les projets développés par des particuliers en complément à       Alfresco)</li>
</ul>
</li>
</ul>
<ul type="disc">
<li class="MsoNormal">Javadoc :
<ul type="circle">
<li class="MsoNormal"><a title="http://wiki.alfresco.com/wiki/Alfresco_JavaDoc" href="http://wiki.alfresco.com/wiki/Alfresco_JavaDoc">http://wiki.alfresco.com/wiki/Alfresco_JavaDoc</a></li>
</ul>
</li>
</ul>
<ul type="disc">
<li class="MsoNormal">Divers
<ul type="circle">
<li class="MsoNormal">Site d&#8217;un       developpeur alfresco avec de trés bon tutoriaux : <a title="http://ecmarchitect.com/alfresco-developer-series/" href="http://ecmarchitect.com/alfresco-developer-series/">http://ecmarchitect.com/alfresco-developer-series/</a></li>
</ul>
</li>
</ul>
<p class="MsoNormal">
<p class="MsoNormal">
<p>No related posts.</p>]]></content:encoded>
			<wfw:commentRss>http://www.x2i.fr/techs/2009/06/22/alfresco/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Magento osCommerce, la migration</title>
		<link>http://www.x2i.fr/techs/2009/06/20/magento-oscommerce-migration/</link>
		<comments>http://www.x2i.fr/techs/2009/06/20/magento-oscommerce-migration/#comments</comments>
		<pubDate>Sat, 20 Jun 2009 17:16:34 +0000</pubDate>
		<dc:creator>marcjean</dc:creator>
				<category><![CDATA[Magento]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[talend]]></category>
		<category><![CDATA[migration]]></category>
		<category><![CDATA[oscommerce]]></category>
		<guid isPermaLink="false">http://www.x2i.fr/techs/?p=26</guid>
		<description><![CDATA[La démarche suivie par Xi Ingénierie pour migrer les données de osCommerce vers Magento.
Related posts:<ol><li><a href='http://www.x2i.fr/techs/2009/07/05/la-reprise-de-donnees-vers-une-base-magento/' rel='bookmark' title='Permanent Link: La reprise de donnees vers une base Magento'>La reprise de donnees vers une base Magento</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[
<h1>Intro</h1>
<p>Dans cette article nous allons aborde la problematique de la migration de données sous Magento. En effet meme si Magento propose en standard des formats d&#8217;import, ceux ci sont tous simplement inutilisable lorsqu&#8217;il y a du volume.</p>
<p>Nous avons donc mis en place un projet specifique avec <a title="site officiel de talend" href="http://fr.talend.com/index.php" target="_blank">Talend</a>, qui nous permet d&#8217;importer les données depuis oscommerce ou autre source vers Magento. Cette migration s&#8217;appuie sur une methodologie qui fonctionne pour toutes source de donnees, aujourd&#8217;hui nous avons developpe des sous projet de migration pour :</p>
<ul>
<li>osCommerce</li>
<li>Divalto</li>
<li>Fichiers Excel.</li>
</ul>
<p>Voici les grandes lignes :</p>
<h2>1) Magento et son schema de base</h2>
<h2>2) Avoir un projet Talend lisible et maintenable</h2>
<h2>3) Les schemas intermediaires de Xi Ingenierie :</h2>
<ul>
<li>
<h3>une base de données normaliser Xi (tres lisible)</h3>
</li>
<li>
<h3>des fichiers excel normalisé également.</h3>
</li>
</ul>
<h2>4) l&#8217;importation en 2 phases.</h2>
<ul>
<li>importation du standard magento</li>
<li>importation du specifique</li>
</ul>
<p>Vous trouverez plus en detail notre demarche dans le billet/document relatif a la <a title="magento oscommerce : migration des donnees" href="http://www.x2i.fr/techs/2009/07/05/la-reprise-de-donnees-vers-une-base-magento/" target="_self">migration magento</a></p>
<p>Related posts:<ol><li><a href='http://www.x2i.fr/techs/2009/07/05/la-reprise-de-donnees-vers-une-base-magento/' rel='bookmark' title='Permanent Link: La reprise de donnees vers une base Magento'>La reprise de donnees vers une base Magento</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.x2i.fr/techs/2009/06/20/magento-oscommerce-migration/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

