Une des fonctionnalités principales des solutions e-Commerce est la possibilité de partager des données avec les systèmes de gestion de ventes offline. Magento rend les échanges de données flexibles et relativement simples grâce au module DataFlow (flux de données).
Le module DataFlow est un framework d'échange de données qui recourt à quatre types de composants :
- l'adapter (adaptateur),
- le parser (analyseur),
- le mapper (mise en relation)
- et le validator (validateur).
Dans l'état actuel des développement, les validators ne sont pas implémentés, mais réservés pour une utilisation future.
Le process du module DataFlow est défini dans un fichier XML appelé profile. Magento fournit un assistant pour générer des profiles d'import/export basiques opérant sur les données produits (catalogue) ou les données clients. Un outil de gestion avancé de profiles est également mis à disposition des utilisateurs confirmés qui souhaitent créer le fichier XML du profile
- sans passer par l'assistant,
- et/ou pour créer des opérations de flux de données (DataFlow) plus personnalisées qui requièrent des relations avec d'autres entités.
Les Adapters sont responsables de la connexion à une ressource externe de données, de récupérer les données demandées et filtrées.
Cela peut être utilisé par exemple pour récupérer des données depuis :
- un fichier local ou distant,
- un web service,
- une base de données,
- et caetera.
Par exemple, pour lire des données depuis un fichier CSV vous pouvez mettre le code suivant dans votre fichier XML :
<var name="type">file</var>
<var name="path">var/import</var>
<var name="filename"><![CDATA[products.csv]]></var>
<var name="format"><![CDATA[csv]]></var>
</action>
Pour lire des données depuis un serveur FTP distant vous pouvez utiliser le meme adapter, mais avec les paramètres suivants :
<var name="type">ftp</var>
<var name="host"><![CDATA[ftp.server.com]]></var>
<var name="passive">true</var>
<var name="user"><![CDATA[user]]></var>
<var name="password"><![CDATA[password]]></var>
<var name="path">var/import</var>
<var name="filename"><![CDATA[products.csv]]></var>
<var name="format"><![CDATA[csv]]></var>
</action>
Les parsers sont responsables de transformer un format de données en un autre. Il peuvent par exemple être utilisés pour convertir le contenu d'un fichier CSV dans un tableau à deux dimensions, ou l'inverse.
Pour parser le contenu d'un fichier CSV dans l'entité produitde la base de données, vous pouvez utiliser le code suivant dans votre profile :
<var name="delimiter"><![CDATA[,]]></var>
<var name="enclose"><![CDATA["]]></var>
<var name="fieldnames">true</var>
<var name="store"><![CDATA[0]]></var>
<var name="number_of_records">1</var>
<var name="decimal_separator"><![CDATA[.]]></var>
<var name="adapter">catalog/convert_adapter_product</var>
<var name="method">parse</var>
</action>
L'adapter défini au sein des attributs du parser comme <var name="adapter"> et la méthode de l'adapter <var name="method"> sont responsables de l'analyse (parsing) des données lues. Dans ce cas de figure le parser convertit les données du fichier CSV vers un tableau à deux dimensions et appelle la méthode de l'adapter appelée "parse" pour les traiter.
Le moyen le plus simple de personnaliser l'import est de créer son propre adapter et de le préciser dans la déclaration du parser.
Dans la plupart des cas vous aurez besoin de partir d'un adapter existant et de modifier ou de créer votre méthode d'analyse (parsing).
Les Mappers sont responsables de transformer les valeurs des données. Ceci est utile pour faire correspondre un champ à un autre.
Dans l'exemple ci-dessous, la colonne source 'reference' est mappée dans la colonne 'sku' et la variable '_only_specified' est définie à 'true' :
<var name="map">
<map name="sku"><![CDATA[reference]]></map>
<map name="name"><![CDATA[name]]></map>
<map name="price"><![CDATA[price]]></map>
<map name="qty"><![CDATA[qty]]></map>
</var>
<var name="_only_specified">true</var>
</action>
Tout ceci n'est que la partie émergée de l'icerberg des possibilités que le module DataFlow de Magento permet.
Revenez plus tard pour en savoir plus !
Traduction par Benjamin Bellamy





