Introduction aux développements sur la suite SAP Hybris

sap_hybris_horz_r_pos_blugld

Dans cet article, nous vous proposons de vous familiariser avec les concepts clés de développement de la suite e-commerce SAP Hybris.

Le référentiel

La suite SAP Hybris est basée sur JAVA / Spring mais possède son propre référenciel appelé Type System. On ne parle plus de classes et d’objets mais de types et d’items.

Un item est une instance de type.

classVsType

http://help.hybris.com

loio85af15198669101495af9f3c0fec25a7_LowRes

http://help.hybris.com

Le modèle est défini dans un fichier xml et les classes JAVA associées sont générées par la commande ANT. Par exemple, la définition d’un item Product va générer la classe ProductModel.java.
Exemple de définition

<itemtype code="NaosProduct" extends="Product"
          autocreate="true" generate="true"
          jaloclass="fr.netapsys.core.jalo.NaosProduct">
    <description>Base Naos product extension that contains additional attributes.</description>
    <attributes>
        <attribute qualifier="genders" type="GenderList">
            <description>List of genders that the NaosProduct is designed for</description>
            <modifiers/>
            <persistence type="property"/>
        </attribute>
    </attributes>
</itemtype>

Le cycle de vie d’une requête client

Hybris suit un modèle standard où la séparation des responsabilités est respectée.

Chaque action client va être interceptée par un contrôleur. Le contrôleur va manipuler des objets de transfert de données ( les Data Transfer Object ) pour communiquer avec les façades. La façade va ensuite faire appel à différents services qui vont eux faire appel aux Data Access Object pour récupérer les données stockées en base de données et appliquer la logique métier.

Les données résultant du traitement sont renvoyées à la façade qui va les transformer en DTO en utilisant un convertisseur qui contient une liste de populateurs dont le rôle et de prendre les données du modèle et de remplir les DTO avec seulement les données nécessairse pour l'affiche sur la page web. Les DTO remplis, la façade les retourne au contrôleur qui est chargé de rendre la page du site web.

action_diagram

http://help.hybris.com

Définitions et fichiers XML

  • Le modèle est défini dans des fichiers *-items.xml. Chaque item défini va générer la classe *Model associée. Il faudra lancer une commande ant et faire une mise à jour du système en backoffice.
  • Les DTO ou tout autre POJO sont définis dans des fichiers *-beans.xml. La commande ant suffira pour générer les classes.
  • Les façades, les services et les DAO sont définis dans des fichiers *-spring.xml. Encore une fois il faudra lancer la commande ant.

Les impex

L'API du système impex permet un mécanisme d'import et d'export. Elle permet d’insérer, modifier ou supprimer n'importe quel item et donc d'agir sur les informations en base de données.

L'API peut être utilisé directement dans le code, par fichier d'import ou d'export ou encore en backoffice dans la console d'import / export.

hac_impex_hybris

Dans un impex, on peut déclarer plusieurs items à mettre à jour, chaque type d'item devant avoir une ligne d'entête. L'ordre de déclarations des items n'est pas important, même pour les objets liés car le fichier impex sera traité deux fois pour résoudre les dépendances.

Si lors de l'import d'un champ, il faut appliquer une logique spécifique, on peut implémenter un translator qui va faire le traitement sur la donnée.

hybris_impex

Le Javascript

Le javascript dans Hybris est du javascript standard mais il est intéressant de remarquer la fonction d'autoload et l'utilisation des espaces de noms.

Chaque fichier javascript doit définir une variable _autoload et chaque fonction remplissant les conditions seront appelé une fois le DOM de la page web chargée.

 

hybris_javascript_autoload

L'architecture

Tout les développements spécifiques à votre projet vont être isolés du framework Hybris. Pour cela, voici une proposition de découpage des paquets avec les types de classes principales

  • Netapsyscore
    • Interceptors
    • Event Listener
    • Attribute handler
  • Netapsysstorefront
    • controlleur
    • Validator
  • Netapsysfacades
    • populator
    • converter
    • email context
    • DTO
  • Netapsyscommerceservices
    • services
    • strategies
    • DAO
  • Netapsysinitialdata
    • Impex

Conclusion

Voici une courte introduction à la suite SAP Hybris qui a pour but de vous donner les clés pour bien démarrer vos futurs développements.

Pour aller plus loin, il faut garder à l'esprit les différents design pattern inhérents à la conception logicielle, et observer et comprendre l'architecture logiciel déjà présente pour faire évoluer la solution en préservant le standard.

Enregistrer

Enregistrer

Enregistrer

Enregistrer

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Captcha *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.