Trees : application d’analyse de cycle de vie participative (Part 1/2)

Pour ce sprint "seed", il s'agit de pouvoir présenter et décrire un produit fini en fonction de ses constituants, puis de considérer récursivement les constituants comme des produits. Objectif : décrire tout produit fini comme une arborescence vers ses matières premières les plus élémentaires. Cette analyse, dite analyse par attributs, est utilisée particulièrement dans le domaine de l'éco-conception. La stack est composée des trois éléments principaux suivants : Neo4j, Spring Boot et React.

Neo4j

Neo4j est une base de données graphe. On y modélise des nœuds et des liens entre eux. Les nœuds comme les liens peuvent contenir une liste de propriétés en clé/valeurs. A l'instar des bases NoSql, il n'y a pas de schéma.

Son intérêt est de pouvoir faire des requêtes en profondeur sur les liens entre nos entités. Exemple: "donne moi la hiérarchie complète des parents de l'élément E".

Dans la base de données, les produits (bulles violettes ci-dessous) ne sont présents qu'une seule fois. L'utilisation des constituants par d'autres constituants sont représentées par les liens.

graphe Neo4j

Exemple trivial d'une graphe de constituants tel que stocké dans la base de données Neo4j.

Ci-dessus, l'électricité est utilisée pour obtenir de la farine, mais aussi pour le gâteau au chocolat. Les noms des constituants sont portés par les nœuds et les associations ainsi que les quantités sont portées par les liens. D'un point de vue technique nous avons un graphe. D'un point de vue fonctionnel nous avons de multiples arbres quantifiés.

Spring Boot

Spring Boot nous permet rapidement d'avoir une application :

  • Qui exploite notre base de données,
  • Dans laquelle on peut écrire des services métier,
  • Qui permet de présenter les services par une interface REST.

Nous allons exploiter la base de données Neo4j (via Spring Data Neo4j). Puis nous allons présenter les services de notre application en REST. Notre composant Spring Boot gère le modèle physique de données (tout est Nœud ou Lien), le domaine fonctionnel (Tout est arborescence quantifiée d'objets) et sa présentation en HTTP.

On trouve les services suivants: créer un arbre, créer une branche, rechercher par nom, etc.

React

Une application web exploite les services fournis par le composant Spring Boot. Rappel de notre objectif : "Pouvoir décrire de manière récursive un produit et ses sous-produits de manière quantifiée"

Aperçu de l'édition d'une arborescence (ne pas utiliser cette recette de gâteau au chocolat!)

Exemple d'arborescence pour un gâteau au chocolat (ne pas utiliser cette recette de gâteau au chocolat!)

Dans l'image ci-dessus, on représente une arborescence grâce à une liste et une indentation. Sur chaque ligne, on voit la quantité, le nom du composant, un bouton pour "ajouter sous" et un bouton pour supprimer un composant. Quand on clique sur "ajouter sous", on ouvre une ligne de création/recherche de composant. Dans l'illustration, on vient de cliquer sur le bouton "ajouter sous 2min usine".

Il est à noter qu'à la création d'un composant, une seule zone de texte est utilisée, mais la quantité, l'unité et le nom sont parsés indépendamment pour raccorder les produits avec une auto-complétion sur l'unité et une autre sur le nom. (composant Lookup, hors étude)

Il a été très agréable de découvrir React, le framework utilisé pour gérer la vue de l'application web. Son intérêt réside dans la simplicité et la clarté du code, grâce à jsx et le fait de pourvoir binder des éléments de données et des fonctions dans la vue. L'écran ci-dessus est crée par le code ci-dessous:

Code jsx du composant "Arbre"

Extrait de code du composant "Arbre"

Il y a trois sections dans ce code comme les trois sections de l'écran :

  • ligne 64-66 : Afficher les quantités, noms, et boutons d'action,
  • ligne 70-79 : Ré-utiliser le composant à l'intérieur de lui-même pour chaque sous-produit (si il y a des sous-produits),
  • ligne 83-84 : Afficher la zone "ajouter-sous" en utilisant le composant Lookup (si la ligne "ajouter sous" a été demandée).

Bref

En quelques lignes de neo4j, de Java et de js, nous avons une application web pour gérer une collection de produits en suivant la méthode de l'analyse par attributs. L'objectif de cet article a été de couvrir le développement d'une application, techniquement et fonctionnellement.

Le prochain sprint aura pour objectif l'industrialisation du build et du déploiement de cette application.

Laisser un commentaire

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

Captcha *