> Tech > Relever le défi de cinq minutes Grails

Relever le défi de cinq minutes Grails

Tech - Par iTPro - Publié le 11 mai 2012
email

Pour relever le défi de cinq minutes Grails, il vous faut les trois ingrédients suivants.

Relever le défi de cinq minutes Grails

•    le nom d’un fichier physique sur votre IBM i, qui a une clé unique
•    JDK 5.0 ou version supérieure
•    Grails 1.1 ou version supérieure installé sur votre PC

Pour voir si Java est installé sur votre PC, ouvrez une fenêtre DOS et entrez javac.

Vous pouvez télécharger Java à partir de oracle.com (veillez à sélectionner un JDK, pas un JRE.) Les instructions de téléchargement de Grails se trouvent à grails.org/installation. Une fois JDK et Grails correctement installés, vous devriez pouvoir exécuter la commande suivante à partir de DOS:

grails -help

et voir une liste d’environ une vingtaine d’options ligne de commande Grails. Grails étant installé, vous êtes prêt à participer au défi de cinq minutes. Allons-y.

Ouvrez une fenêtre DOS. Déplacez (change) votre répertoire (avec la commande cd) là où vous souhaitez créer votre projet Grails. Puis exécutez cette commande :

grails create-app challenge

Cette commande stupéfiante crée un répertoire appelé challenge qui contient l’infrastructure d’une robuste application web. J’assume pleinement l’adjectif « stupéfiante ». En effet, sans Grails, il me faudrait deux jours pour créer une infrastructure comparable pour des applications web PHP ou Java.
Ensuite, changez votre répertoire courant pour le projet généré :

cd challenge

Vous pouvez maintenant ajouter à l’application des classes d’accès aux données et des pages HTML. Pendant que les précieuses secondes s’égrènent, laissons Grails générer ces artifacts.

Permettez-moi d’abord quelques explications. Les artifacts, appelés domaines, sont une composante principale de Grails. Les domaines sont des classes Java/Groovy qui s’associent à des fichiers de données. Cela pose un problème avec les anciens fichiers System i, parce que Grails s’attend à des tables construites avec SQL/DDL, pas DDS. La solution ? Confier l’association des domaines à l’un des nombreux (plusieurs centaines) de plug-ins Grails. Plus précisément, nous utiliserons le plug-in Systemi Grails Domain (grails.org/plugin/systemitools). L’installation du générateur de domaine Systemi Grails est simplissime. Entrez la commande :

grails install-plugin
http://grails400utils.googlecode.com/files/grails-systemitools-0.5.zip

(Tapez la commande sur une ligne) Au préalable, consultez le Wiki du plug-in (code.google.com/p/grails400utils/wiki/GrailsProjectPlugin) pour voir s’il existe une version du plug-in plus récente.
Une fois l’installation terminée, un message affichera la liste de plusieurs des nouvelles options ligne de commande Grails qui ont été ajoutées avec le plug-in. Ensuite, forcez la compilation du nouveau plug-in en entrant cette commande :

grails compile

Nous utiliserons l’option ligne de commande Grails appelée build-systemi-grails-domain pour générer la classe de domaine pour votre fichier System i. Sélectionnez un fichier qui a une clé unique (j’utilise un fichier appelé OEORD1.) Dans votre fenêtre DOS, invoquez la nouvelle commande Grails :

grails build-systemi-grails-domain

L’utilitaire va vous demander : IP, nom d’utilisateur, mot de passe, bibliothèques, nom de fichier, et nom de classe de domaine. Pour ce dernier, choisissez un nom qui décrit bien le fichier System i, en utilisant la convention maj/min Java standard (j’ai choisi OrderDetail.)

L’utilitaire va travailler pendant quelques minutes pour se connecter à votre IBM i, extraire l’information sur le fichier, et finalement générer la classe de domaine Grails. La fenêtre DOS contient le texte suivant : be sure to modify grails-app/conf/DataSource.groovy to specify your System i settings, suivi par ceci :

dataSource {
 pooled = true
 url = « jdbc:as400://yourip/yourlib »
 driverClassName =
  « com.ibm.as400.access.AS400JDBCDriver »
 username = « yourusername »
 password = « yourpassword »
 dialect =
  org.hibernate.dialect.DB2400Dialect.class
}

La classe DataSource permet à Grails de savoir quel système et driver JDBC utiliser pour créer une instance de votre nouvelle classe de domaine. Avec Grails, il est facile de paramétrer le test, le développement et la production pour votre emplacement de fichiers de domaines. Dans votre classe DataSource, remplacez la section dataSource qui se trouve dans le bloc de code entre accolades libellé development. Utilisez un éditeur autre que Notepad—par exemple, Textpad (www.textpad.com)—afin que les instructions n’apparaissent pas sur une ligne. (À noter que, pour un développement de production, vous utiliserez un IDE tel que WebSphere Development Studio client—WDSc, Rational Developer for System i–RDi, Eclipse, NetBeans, ou IntelliJ.)

La figure 1 montre la classe de domaine qui a été générée pour le fichier que j’ai sélectionné. Deux points sont important à signaler. Premièrement, observez que les noms d’attributs sont plus descriptifs que les noms de champs d’anciens fichiers cryptés sur quatre à six caractères. En effet, l’utilitaire s’inspire du texte ou des intitulés de colonnes du champ pour engendrer des noms d’attributs intelligibles. Deuxièmement, regardez la section qui commence par static constraints. Les contraintes générées par l’utilitaire sont utilisées par Grails pour s’assurer que l’entrée respecte les bonnes longueurs. Les contraintes de Grails sont très pratiques et il est facile d’ajouter des validations diverses : e-mails, cartes de crédit, et URL. Vous pouvez aussi écrire des expressions ordinaires et une logique de contraintes personnalisée pour valider des attributs de domaine (aussi appelés valeur de champs de fichiers.) Je vérifie souvent des associations de fichiers avec contraintes personnalisées (par exemple, que le numéro d’article indiqué dans une commande existe bien dans le fichier maître des articles.) En gardant les contraintes dans un endroit – dans la classe à laquelle elles appartiennent – vous réduirez nettement le code.

Une dernière chose que je tiens à souligner à propos de la classe de domaine générée est la section static mapping. C’est là que le nom de fichier est spécifié avec sa clé et l’association (mapping) entre le nom du champ de fichier et le nom de l’attribut de domaine. C’est ce qu’on appelle l’object-relational mapping (ORM) et Grails fournit le meilleur mécanisme ORM que j’aie jamais utilisé.

Téléchargez gratuitement cette ressource

Comment cerner la maturité digitale de votre entreprise ?

Comment cerner la maturité digitale de votre entreprise ?

Conçu pour les directions IT et Métiers, ce guide vous permettra d'évaluer précisément vos processus de communication client, d'identifier vos lacunes et points d'inflexion pour établir un plan d’actions capable de soutenir durablement votre évolution. Bénéficiez maintenant d'une feuille de route complète.

Tech - Par iTPro - Publié le 11 mai 2012