Outils pour utilisateurs

Outils du site


techniques:projet_jhipster

JHIPSTER est un ensemble d'outils de développement d'application web orienté java. Il permet d'intégrer, avec un minimum de paramétrage manuel, les outils suivants :

  • spring boot
  • liquibase
  • angular js et ses librairies
  • jhipster model entity generator
  • web application squelette generator (java, javascript/angular, liquibase changelogs)

Définition du modèle métier et génération jhipster

Chaque projet jhipster se voit doté d'un fichier jhipster-jdl.jh. Il représente conceptuellement le modèle métier.

https://jhipster.github.io/jdl/

Definition des entitée via un éditeur graphique

Il existe un éditeur graphique nommé “JDL studio” pour définir le modèle conceptuel de données :

http://www.jhipster.tech/jdl-studio/

(ancienne url : https://jhipster.github.io/jdl-studio/)

Cet éditeur permet d'écrire les entités et de visualiser directement leur relations avec les autres entités du modèle. En voici un apercu pour le projet testify-jhi :

Definition des entitée via l'utilitaire node.js YEOMAN

Créer une entité
  # cd <your JHipster application’s root folder>
  # yo jhipster:entity <AnEntity>

–> génère :

  • le modele java (domain. En l'occurence pour ce projet package = fr.softeam.domain)
  • les repository et controllers java
  • modifie le fichier liquibase master.xml (schéma database) et ajouter des fichiers changeLog.xml
  • des pages html (angular) pour la gestion des élements de type <AnEntity> + fichiers CSS
  • des scripts js (angular) pour la gestion des élements de type <AnEntity>
  • des fichiers json pour les libellés des pages web
Générer un modèle entier
  # cd <your JHipster application’s root folder>
  # yo jhipster:import-jdl your-jdl-file.jh

–> génère : la même chose, pour toutes les entités dans le fichier modèle JDL

Typiquement, il semble possible de générer à partir d'un fichier jdl, pour un projet dont certaines entity et relationship ont déjà été générées.

Espace de travail temporaire du modèle métier

Il se trouve dans le dossier <Projet>/.jhipster/

On y retrouve, sous format json, pour chaque entité : la traduction des ses champs et de ses relations avec les autres entités.

C'est de ce dossier que jhipster se sert ensuite pour effectuer la génération (java, javascript, liquibase, etc…) : La génération commence par rajouter de nouveaux fichiers json dans le dossier “.jhipster”, décrivant les entitées et leur relations. Puis elle effectue la génération.

Limitation de la version actuelle : suppression d'une entité, et/ou une relation du fichier JDL

J'ai créé la ClasseA et Invitation en Invitation ManyToOne –> ClasseA, puis jhipster:import-jdl

Bidouille : On modifie le fichier JDL : on enlève l'entity ClasseA et la relation avec Invitation, puis à nouveau jhipster:import-jdl

–> L'exécution de l'utilitaire :

  • n'a pas supprimé les fichiers java, js, etc, mais a peut être mis à jour certains fichiers du front
  • a mis à jour <Projet>/.jhipster/Invitation.json, en supprimant sa relation avec ClasseA, mais n'a pas supprimé ClasseA.json
  • a généré 2 nouveaux changelog (contraintes pour Invitation et entité Invitation)

–> liquibase:update plante puisque que la table Invitation existe déjà

–> Je fais le test suivant : je retire les anciens fichier changelog suivants et leur référence dans master.xml :

  • création de la ClasseA
  • création de la Invitation
  • création des contraintes de Invitation
  • Et je relance le projet pour voir …

–> Ca ne marche pas non plus, normal il tente de recréer la table Invitation …

–> Je remet les changelogs a l'état cohérent, avant de faire yo jhipster:entity pour supprimer des relations que je ne veux plus

Remarque : pour remettre à l'état cohérent, il faut vérifier que les changelogs sont cohérents, que master.xml pointent bien sur eux, mais aussi que les json du dossier .jhipster soit aussi à un état cohérent.

J'ai du manuellement m'occuper de Invitation.json, qui avait été modifié lors de notre tentative de suppression précédente à partir du fichier JDL …

Je teste les suppressions avec l'outil yo jhipster:entity :

  # yo jhipster:entity ClasseA

–> Malheureusment, il ne propose pas de rollback dans les changedlog : il modifie les changedlog existants qui concernant Invitation et Invitation_Contraints ; le changelog de création de la ClasseA est toujours là …

–> Ce qui veut dire qu'il faut peut être supprimer soit même la colonne de la clé étrangère et la contrainte d'intégrité soit même en base.

non ca ne suffira pas, l'analyse de la checksum du changelog de Invitation suffira à indiquer une modif.

–> Donc ce qu'il faudrait faire c'est :

  • Supprimer en base ce qu'on a rajouté
  • Supprimer les lignes de changedlog associées
  • relancer liquibase:update

D'autre part, l'outil jhipster:entity ne permet pas de supprimer l'entité ClasseA

techniques/projet_jhipster.txt · Dernière modification: 2018/01/22 19:43 (modification externe)