Posts taggés ORM

akeneo_4

Akeneo : PIM open source

0

Nous allons vous présenter aujourd’hui une solution de PIM open-source pleine d’avenir, Akeneo. L’outil a déjà été présenté à travers l’histoire de Julia. Pour resituer le contexte, Julia travaille au sein du service marketing d’un détaillant international d’articles de mode et se charge de la mise en place du site e-commerce du groupe. Utilisant un ERP (Enterprise Resource Planning),  le groupe prévoit de l’utiliser directement afin d’alimenter la base produit du nouveau site. C’est à partir de cet instant que les ennuis commencent :

  • Il ne contient aucun média (photos, vidéos) attaché aux produits
  • Les descriptions produit sont trop pauvres ou non adaptées à une diffusion publique ou marketing
  • Le nom du produit est souvent un simple SKU (identifiant produit unique)

Julia commence alors à enrichir les fiches produit grâce au tableur Excel afin de constituer une base produit pouvant alimenter convenablement le site de vente en ligne. Il lui faut alors gérer de nombreux documents Excel, chaque type de produits ayant ses attributs propres. Cette tâche devient rapidement hasardeuse au fur et à mesure que le nombre de fichiers augmente et qu’il faut les maintenir à jour. Vient ensuite le coup de grâce lorsqu’il faut bientôt gérer le même catalogue produit mais avec des informations potentiellement différentes pour chaque canaux (papier/mobile/etc..) et/ou langues. L’outil, ici Excel, n’est clairement pas adapté. C’est donc à ce moment là que le PIM rentre en jeu.

Qu’est-ce qu’un PIM ?

PIM signifie « Product Info Management ».

schema-pim-2

Le PIM est l’outil destiné à centraliser l’ensemble des informations concernant les produits. Il va permettre, via des connecteurs, de récupérer l’information disponible dans diverses sources existantes (comme un ERP) et de la rendre accessible grâce à une interface dédiée  à des utilisateurs chargés de l’enrichir (standardisation, ajout d’informations non disponibles sur les sources externes, traduction). Enfin, il permettra de classer cette information, d’établir des liens entre plusieurs produits puis enfin de la diffuser sous une forme adaptée sur d’autres canaux, comme un site d’e-commerce ou encore un catalogue papier.

 


 

Un socle technique solide

Techniquement la solution d’Akeneo se base sur la plateforme OroPlatform.
Cette plateforme open source qui repose sur le framework Symfony2 permet d’accélérer certains développements en proposant un ensemble de fonctionnalités natives comme une interface d’administration, un système d’ACL (Access Control List) avancé ou encore un système de workflow. Côté stockage des données, la solution s’appuie sur l’ORM Doctrine2 lui permettant ainsi de s’adapter à de nombreux SGBD (Système de Gestion de Base de Données). La partie cliente est quant à elle, confiée à Backbone.js et au classique couple jQuery et jQuery UI. Des choix techniques open-source qui apparaissent sûrs au vu de leur notoriété et qui profitent d’une large communauté ainsi que d’un savoir-faire.

Fonctionnalités natives

L’interface d’Akeneo est multilingue. L’outil est déjà traduit en français, allemand, hollandais et japonais dans sa version 1.0. Seulement quelques minutes sont nécessaires pour se l’’approprier, la navigation étant simple et claire.

La solution propose nativement de nombreuses fonctionnalités, dont voici un aperçu :

  • Gestion de familles de produits : chaque famille de produit possède des attributs spécifiques configurables via l’interface
  • Multi-catalogue : possibilité de configurer plusieurs catalogues possédant chacun une arborescence de catégories propre, un produit pouvant être rattaché ensuite à un ou plusieurs catalogues.
  • Multi canal : plusieurs canaux de diffusion (un site d’e-commerce et un catalogue papier par exemple) peuvent être configurés . Chaque canal possède alors ses langues et devises gérées et les attributs d’une fiche produit peuvent être configurés afin de posséder des valeurs différentes en fonction du canal.
  • Suivi du remplissage des informations produit : chaque produit propose des indicateurs de complétion permettant de visualiser rapidement si toutes les informations ont été saisies pour une langue ou un vecteur de diffusion donné
  • Multilinguisme : chaque attribut d’une fiche produit peut être configuré pour être localisable (c’est-à-dire posséder une valeur différente en fonction du pays cible)
  • Multidevise : possibilité d’activer la gestion de certaines devises via l’interface, le prix des produits et d’autres attributs financiers devenant alors localisables
  • Associations : possibilité de créer des relations entre produits, permettant ainsi de gérer des packs de produits, des ventes liées, etc.
  • Variantes : gestion des variantes de produits (taille, couleur, etc.)
  • Gestion des droits : création de profils de droits, des groupes et de gérer plusieurs utilisateurs. Les autorisations peuvent être assez fines permettant à un utilisateur d’accéder à certaines fonctionnalités de la solution ou de gérer seulement certaines langues. Bien qu’il soit impossible pour le moment de restreindre l’accès à certains types de produits ou certaines familles d’attributs, une gestion plus fine des droits est déjà prévue sur la feuille de route.

 

Une des fonctionnalités au cœur de la solution étant l’échange d’informations (en import comme en export), un système de connecteurs a été imaginé permettant de développer facilement une passerelle vers des systèmes existants. L’éditeur propose déjà un connecteur d’import/export au format CSV ainsi qu’un connecteur vers la plateforme Magento. On peut également miser sur le fait que la communauté autour de l’outil proposera rapidement d’autres connecteurs vers les principales solutions d’e-commerce et d’ERP du marché.

Personnalisation de la solution

Bien que la solution soit déjà complète, il faudra souvent qu’elle réponde également aux besoins spécifiques de la structure dans laquelle elle est implémentée. Akeneo a donc été imaginée de manière à être extensible. En effet, grâce au framework Symfony2, la solution peut être étendue au moyen du développement de « bundles » qui pourront s’intégrer au sein de l’interface existante. Le site de la solution propose d’ailleurs déjà un cookbook détaillant la marche à suivre pour réaliser certaines opérations comme l’ajout de règles de validations personnalisées ou encore l’ajout d’un nouvel onglet au formulaire d’une fiche produit.

Conclusion

Les +

  • Qualité du socle technique
  • Eventail des fonctionnalités déjà présentes
  • Possibilités de personnalisation
  • Projet open source français
  • L’outil est multilingue
Les –

  • Communauté encore peu nombreuse

 

Akeneo semble donc une solution très prometteuse.
Pilotée par une équipe de 4 anciens stratèges et développeurs du e-commerce, la start-up nantaise éditrice a levé 350 000 € en Octobre dernier soutenue, en autre, par le fond d’investissement de Xavier Niel (Kima Ventures).

Il est à parier qu’Akeneo s’enrichira de nouvelles fonctionnalités rapidement, épaulée par la communauté qui se construit chaque jour autour d’elle. La roadmap de l’éditeur promet d’ailleurs déjà l’amélioration du moteur de droits de l’application et de la gestion des médias associés aux produits. Du côté des nouveautés, seront au programme : la possibilité d’ajouter des workflows de validation, de revenir à une version antérieure d’une fiche produit ou encore d’automatiser certaines actions comme l’association de produit ou le calcul de certains champs.

Si cette introduction vous a donné envie d’en savoir plus, testez la solution par vous-même grâce à la démo sur le site de l’éditeur : www.akeneo.com/demo

 

 

Introduction à Propel 2 par William Durand

1

Le nouveau Lead Developper William Durand (@couac) a présenté la future version de l’ORM Propel. La conférence ne s’adressait pas uniquement aux nouveaux utilisateurs Propel, car elle était divisée en deux parties :

  • présentation de Propel 1.6
  • présentation de Propel 2

Cette nouvelle version est une refactorisation complète de l’ORM Propel 1.6, qui lui même est déjà porté en PSR-0.

Pour rappel, PSR-0 a pour but d’éviter la mise en œuvre de plusieurs mécanismes d’auto-chargement de classes lorsque l’on utilise des composants provenant de projets différents. Ce mécanisme se base sur un certain nombre de règles concernant à la fois le nom des fichiers, leur contenu ainsi que leur organisation.

Nombre de personnes associent Propel à un ORM Active Record, mais ce n’est pas le cas, les concepts de table et l’enregistrement sont séparés. On y retrouve même l’API Active Query qui permet d’écrire les requêtes SQL comme des phrases.

 

Par exemple :

 

<?php

use Acme\Job;

$jobs = JobQuery::create()
       ->_if(preg_match('/^[A-Z]{2}$/', $location))
             ->filterByCanton($location)->
       ->_else()
             ->filterByCity($location)->
       ->_endif()
       ->find();

 

A la différence de Doctrine 2 (l’autre acteur du marché des ORM PHP), Propel 2 reste sur de la génération de code et se veut ainsi être plus rapide, facilitant ainsi  les développements.

Propel utilise également beaucoup de Behaviors (portion de code réutilisable dont on dispose dans nos fonctions métier), tels que :

  • l’archivage : fonctionne sur le model du soft-delete. Avec ce système l’objet supprimé est alors déplacé dans une autre table, ce qui a un impact sur les tables contenant des milliers d’entrées car cela réduit le nombre de données à traiter.
  • Nested set : qui permet de représenter des données hiérarchisées dans une base de données relationnelle.
  • Géocodable : qui permet de localiser une entrée automatiquement si les champs street et city ont été définis et renseignés.
  • Mais bien d’autres encore comme Agregate Colum, Delegate, i18n, Timestampable, Sortable, etc

Tous les behaviors sont disponibles depuis Propel 1.6 et font désormais partie du corps. De ce fait, ils seront toujours maintenus dans la nouvelle version.

Un autre avantage de Propel, qui a un impact direct sur les temps de réponse, est la pré-génèreration de requêtes SQL. Par exemple pour les recherches par clef primaire.

Pour cette nouvelle version de Propel, l’équipe s’est essentiellement concentré sur le cœur de métier, c’est-à-dire l’ORM, et a décidé de réutiliser des composants proposés par la communauté. Notamment  les 5 composants Symfony2 suivants :

Ce qui à permis de supprimer beaucoup de code existant et de l’homogénéiser. Par exemple si on n’utilise pas le validator Propel, on n’a pas de code généré évitant ainsi de polluer le code. Il ne sera présent que si on en a vraiment besoin. Il faut également noter que les tables et relations se décrivent toujours en XML.

Depuis 2005, la rédaction de la documentation de Propel n’a cessé de croître. Pour cette nouvelle version, nous aurons le droit à une documentation totalement réécrite, et cerise sur le gâteau, l’équipe a prévu de la traduire dans toutes les langues. Affaire à suivre !

Reste à attendre la très prochaine version alpha release prévue courant de l’été 2012 afin de se faire notre propre opinion.

Vous pourrez retrouver les slides de cette conférence ici :

https://speakerdeck.com/u/willdurand/p/introduction-to-propel2