Commerce digital

PIM Akeneo : passer des données entre les différents étapes d’un job

by Benoit Wannepain 7 janvier 2020

Akeneo PIM est une puissante solution de gestion d’information produit (Product Information Management) aujourd’hui plébiscitée par nombre d’acteurs du e-commerce pour sa simplicité d’utilisation et les services rendus. Akeneo PIM permet de collecter, gérer, enrichir l’information produit, créer des catalogues, afin de les distribuer sur différents canaux de diffusion (web, print, etc…).

L’une des tâches les plus fréquentes qu’un développeur est amené à effectuer avec le PIM Akeneo, est l’écriture de jobs d’import ou d’export assurant les flux de données entre un ETL et le PIM ou entre le PIM et des solutions ecommerce comme Magento, Oro Commerce ou Sylius. Ces jobs se déroulent en différentes étapes, représentées, dans le code, par des classes d’objets indépendantes les unes des autres. Dans leur séquence d’exécution, les étapes ultérieures n’ont a priori pas accès aux données calculées dans les étapes antérieures. Il existe pourtant un objet qui permet d’emmagasiner des données afin notamment de les rendre disponibles dans toutes les étapes d’un job. C’est l’objet JobExecution. Son utilisation est très simple.

logo Akeneo

Comment passer des données entre les différentes étapes d’un job grâce au contexte d’exécution

En effet, la récupération ou le calcul de données peut être très coûteux. Par exemple, on peut avoir besoin de récupérer un contenu distant sur Internet et de l’utiliser dans plusieurs étapes (steps) d’un job d’import ou d’export.
Pour des raisons de performances notamment, on ne peut pas se permettre de récupérer ce contenu distant à chacune des étapes du job. Si on récupère ces données dans une étape A, il faut qu’une étape B (ou C ou D) puisse en profiter.
On peut stocker des données dans le contexte d’exécution d’un job pour ensuite les récupérer facilement dans n’importe quelle étape du job. Chaque Step d’un Job se voit injecter un objet StepExecution qui lui-même contient l’objet JobExecution.

Step A et enregistrement de la donnée dans le contexte d’exécution du job :

$stepExecution
    ->getJobExecution()
    ->getExecutionContext()
    ->put('remoteContent', $remoteContent)
;

Step B et récupération de la donnée enregistrée dans le Step A :

$stepExecution
    ->getJobExecution()
    ->getExecutionContext()
    ->get('remoteContent')
;

Benoit Wannepain

Benoit Wannepain

Lead Developer

J'ai découvert l'informatique et la programmation dans les années 80. L'essor de l'Internet depuis les années 90 m'a progressivement amené au développement d'applications web backend et à la mise en place des infrastructures de serveurs nécessaires au bon fonctionnement de celles-ci. Aujourd'hui, je m'intéresse particulièrement au framework PHP Symfony et à son écosystème (Akeneo, EzPublish, Oro, ...).

Commentaires

Ajouter un commentaire

Votre commentaire sera modéré par nos administrateurs

Vous avez un projet ? Nos équipes répondent à vos questions

Contactez-nous