Accueil > Développement Web > Utiliser la Technologie ‘Direct to Web’

Utiliser la Technologie ‘Direct to Web’

Par Josh Paul le 01/11/2003

Traduit par Olivier, le 05/11/2003

Bienvenue à une autre série de “WebObjects, les EnterpriseObjects et Vous.” La dernière fois, je vous ai présenté les formidables technologies de WebObjects et EnterpriseObjects. Dans cet article vous allez faire connaissance avec une autre technologie tout aussi merveilleuse et efficace : “Direct to Web” (D2W).

RBRAD

Nombreux parmi vous ont entendu parlé du Rapid Application Development (RAD) / Développement Rapide d’Application. D2W s’appuie sur RAD et lui injecte une dose de stéroides technologiques pour créer RBRAD, ou Rule-Based Rapid Application Development (RAD basé sur des Règles). En utilisant un fichier EOModel et un fichier D2WModel, vous allez créer une application web complète en seulement quelques étapes. En fait, vous n’aurez même pas besoin de travailler directement avec D2WModel. Vous ne me croyez pas ? Lisez ce qui suit…

Pour exploiter les avantages de D2W, nous démarrerons avec un EOModel. Heureusement, dans l’article précédent, vous avez créé un EOModel simple pour maintenir les informations concernant les utilisateurs. Donc je ne parlerai pas de la création de l’EOModel, je parlerai directement de D2W. Cependant, juste au cas où vous ne pourriez pas retrouver votre projet, votre EOModel devrait ressembler à cela :

Ouvrez ProjectBuilder et créez un nouveau Projet. Sélectionnez l’option “Direct to Web Application”. Ensuite, nommez votre projet et continuez en acceptant les options par défaut, en cliquant sur le bouton “Next” jusqu’à ce que vous arriviez sur la fenêtre “Choose EOModels”. Là, choisissez “Add” pour ajouter votre EOModel.

Après avoir ajouté votre fichier EOModel, vous devrez choisir un “Look” pour votre projet. J’utilise généralement l’option “Neutral”, mais choisissez celui que vous voulez. En fait, je vous recommande de revenir quelques étapes en arrière, et de sélectionner un Look différent à chaque fois.

C’est fini…enfin presque. ProjectBuilder vous offre l’option de “Build and launch project now” / “Compiler et lancer le projet maintenant”, qui vous permettra de lancer de immédiatement votre application. Laissez l’option sélectionnée, et cliquez sur le bouton “Finish”.

Et voilà !

Quand l’application est lancée, elle affichera le composant Main.wo dans votre navigateur internet. Vu qu’il n’y a pas encore de code derrière ce composant, vous pouvez vous connecter à votre application en cliquant simplement sur le bouton “Login”.

Une fois que vous vous êtes connecté à votre application, vous découvrirez que vous pouvez facilement effectuer des recherches, créer, éditer et même supprimer des informations de votre base de données. Toutes les pages créées utilisent le fichier de règles appelé d2wmodel. En regardant l’application au complet que vous êtes en train d’utiliser, vous avez un aperçu du monde merveilleux de RBRAD.

Personnalisation par Assistant

Après avoir joué un peu avec votre nouvelle application web, déconnectez-vous en cliquant sur “Logout”. Vous remarquerez sur votre composant Main.wo une case intitulé “Assistant”. Désélectionnez cette case et connectez-vous de nouveau à votre application.

L’Assistant

Comme vous avez fait appel à l’Assistant, vous allez voir un nouveau bouton “Customize” sur le côté gauche de la fenêtre. Quand vous serez prêts à personnaliser votre application, une applet Java sera démarrée. Une petite frame sera alors affichée dans la partie inférieure de votre navigateur pour vous informer de l’état de l’Assistant.

Une nouvelle fenêtre s’ouvrira et vous permettra de personnaliser votre fichier D2WModel. En utilisant l’Assistant vous pourrez personnaliser votre application sans avoir à éditer d’XML. Vous pouvez personnaliser votre fichier D2WModel en utilisant l’application Rule Editor (Editeur de Règles), mais nous utiliserons l’Assistant…pour le moment.

Au démarrage, une fenêtre s’affichera vous informant que votre page n’autorise pas de personnalisation. La page initiale est appelée D2WQueryAllPage et vous permettra d’interroger n’importe quelle table de votre base de données. Puisqu’il s’agit d’une page générique, il serait difficile de la personnaliser, c’est pourquoi, nous n’allons pas essayer.

La Page de Requête

Afin de personnaliser l’application, nous allons avoir besoin d’une page à personnaliser afin de l’afficher. Heureusement, la plupart des pages sont personnalisables, et nous allons commencer par une page “Query” / “Requête”. Pous pouvez obtenir une page “Query” en cliquant sur le bouton “Search”.

Votre assistant devrait maintenant ressembler à ceci :

Vous ne souhaitez probablement pas afficher le mot de passe de vos utilisateurs, alors pourquoi ne pas cacher cette information de votre page. Pour cela, sélectionner l’attritbu password dans l’Assistant et cliquez sur le bouton FlècheVerte:Gauche puis cliquez sur le bouton “Save”.

Votre page web devrait automatiquement se réafficher. Le champ password ne devrait plus être visible. Effectuer une recherche d’un utilisateur en tapant un nom dans le champ username et en cliquant “Search DB”. Laissez le champ username vide si vous souhaitez afficher tous les utilisateurs de votre base de données.

La Page Listing

La page suivante, après celle de recherche dans la base de données, sera une D2WListPage. Cette page devrait afficher une liste d’utilisateurs, basée sur les critères que vous avez entrés. En vous rappelant le dernier article, j’ai reçu la liste suivante pour ma recherche :

Sur cette page “Listing” vous pouvez :

  • Trier les éléments :
    • Par Ordre Croissant ()
    • Par Ordre Décroissant ()
    • Non trié ()
  • Editer une ligne :
  • Supprimer une ligne :

Puisque vous effectuez les recherches d’utilisateurs en fonction de leur username, vous souhaitez probablement voir le username affiché devant le password. Pour cela, sélectionnez simplement le username dans l’Assistant (qui devrait avoir mis à jour son contenu ; chouette !) et cliquez sur le bouton FlècheVerte:Montante . Vous pouvez cliquez le bouton “Save” dans l’Assistant. De retour sur votre navigateur, cliquez sur les différents boutons de tri pour voir les modifications sur l’affichage de la liste.

La Page d’Edition

Quelle serait l’intérêt d’une base de données gérée par une interface web sans la possibilité d’ajouter ou modifier des informations ? La seule façon d’ajouter de nouvelles informations ou de les modifier est d’utiliser “Edit”. Sélectionnez un utilisateur et cliquez sur le bouton “edit .

Zut ! Le password est affiché devant le username. Il est facile d’y remédier. Suivez simplement les étapes comme précédemment :

  1. Sélectionnez username dans l’Assistant
  2. Cliquez sur le bouton FlècheVerte:Montante

Pour vous amusez, modifiez le username et cliquez sur le bouton “Save” . La page Listing sera affichée contenant les nouvelles informations que vous avez rentrées.

La Page de Suppression

Appuyez sur le bouton “Delete” . Vous devriez voir s’afficher une page “Confirm” vous demandant de bien vouloir confirmer votre demande de suppression de l’utilisateur sélectionné. Je ne vous donnerai aucun conseil là-dessus…il s’agit de vos données, et c’est à vous de décider si vous souhaiter les conserver ou non.

Au Coeur de D2W

Bien, vous avez soit supprimé un utilisateur de votre base de données, soit décidé de l’épargner en attendant les prochaines expérimentations (ajouter un petit rire démoniaque ici). N’importe comment, pourquoi ne vous rendez-vous pas à la page “Home” pour faire le point sur ce que vous avez appris ? Votre page “Home” est la page D2WQueryAll. Pour le moment, nous ne changerons rien.

Quand vous cliquez sur le bouton “New” , vous verrez une page “Edit”. De prime abord, cela peut paraitre étrange, mais en y réfléchissant, lorsque vous créer un nouvel utilisateur, est-ce-que vous ne créez pas en fait une ligne vide, que vous éditez ? Après tout, les ingénieurs d’Apple doivent avoir une idée derrière la tête.

Si vous laissez soit username ou password vides (ou les deux) et essayez de sauvegarder, vous devriez obtenir une erreur.

Hé ! Comment WebObjects peut-il savoir que les utilisateurs n’ayant pas de username ou de password ne doivent pas être sauvegardés dans la base de données ? La réponse est simple : votre EOModel.

L’EOModel

Si vous ouvrez le fichier de votre EOModel et inspectez l’Entité User, vous devriez voir que les attributs username et password n’autorisent pas les valeurs NULL.

Vous pouvez en avoir confirmation en regardant dans la colonne Allow Null Value. Si cette colonne est vide, et elle devrait l’être, lorsque votre application tente de sauvegarder des informations dans la base de données, le merveilleux EnterpriseObjects framework fait son tour de magie. Votre EOModel vous informera (ainsi que vos clients) que la donnée n’est pas conforme au modèle de données est qu’elle ne peut donc pas être sauvegardée.

D2WModel

Commme je l’ai indiqué auparvant, il existe un fichier D2WModel qui participe à la création de votre application. Pour le moment, déconnectez-vous de votre application, et arrêtez son exécution dans ProjectBuilder. Vous pouvez trouvez le fichier D2WModel (en fait user.d2wmodel) dans votre projet dans le group “Resources”.

En hacker que vous êtes, vous allez ouvrir ce fichier tôt ou tard. Autant le faire tôt.

Quand vous ouvrez le fichier user.d2wmodel, l’application RuleEditor devrait se lancer.

Votre user.d2wmodel est une collection de Rules (règles). Chaque Rule est constituée de plusieurs parties :

  • Une partie gauche : une condition à remplir
  • Une partie droite : une paire clé/valeur à utiliser lorsque la condition est remplie.
  • Une priorité : un nombre indiquant votre préférence pour la partie droite à utiliser.

Puisque vous utilisez l’Assistant pour personnaliser votre application, vous avez déjà quelques règles dans votre fichier user.d2wmodel. Je vais vous aider à en disséquer une.

La règle mise en évidence peut se lire ainsi :

Si la task courante (c.à.d l’action) est “Edit” et que le nom de l’Entité (c.à.d la table) courante est “User” Alors Afficher les attributs username et password (c.à.d. les colonnes) sur la page courante.

En d’autres termes, si quelqu’un veut éditer un utilisateur, on lui donne accès aux champs username et password.

Qu’est-ce-que cette histoire de Priority ? Pour vous le montrer, copiez/collez la règle mis en évidence. Puis sélectionnez la règle nouvellement créée. Modifiez la partie droite de (username, password) à (username).

Modifiez également la priorité de la règle en un nombre plus grand que 100…comme 101. Sauvegardez les changements.

De Retour à ProjectBuilder

Ensuite, démarrez votre application. Comme auparavant, vous pouvez vous connectez sans entrer votre authentifiant (vous devriez vraiment corriger cela…voyez l’article précédent). Quand vous créez un nouvel utilisateur, la page d’édition apparait exactement comme avant.

Mais cette fois, quelque chose a changé. Evidemment vous ne pouvez entrez d’information que pour le champ username. Ceci va poser de gros problèmes, puisque vous ne pouvez pas sauvegarder d’utilisateur sans password. Essayez !

Ouvrez user.d2wmodel et changez la priorité de la nouvelle règle en un nombre inférieur à 100…comme 99. Enregistrez vos modifications et retournez à votre navigateur. Cliquez sur le bouton “Cancel” . De retour sur la page principale, essayer de créer un nouvel utilisateur. Vous devriez maintenant voir l’option d’origine avec username et password.

Ce qui s’est passé, c’est que D2W à évalué les règles de votre D2WModel. Quand D2W a rencontré deux partie gauche de condition qui étaient remplies, D2W a vérifié les priorités pour déterminer quelle règle utiliser. Et le tout, sans avoir à recompiler l’application. Ca, c’est ce que j’appelle du Rapide.

Plus loin avec D2W

Stocker les username et password de vos utilisateurs est insuffisant pour vos besoins. Vous souhaiteriez avoir plus d’informations comme le prénom et le nom. Si vous ouvrez votre fichier EOModel, vous pouvez facilement ajouter ces informations…alors pourquoi ne pas le faire.

Modifier l’Entité Utilisateur

Pour créer les attributs nameFirst et nameLast, j’effectue un simple copier/coller à partir de l’attribut username. Je modifie ensuite les informations Name et Column pour refléter mes nouveaux critères. J’ai également fais le choix d’autoriser des valeurs NULL en sélectionnant l’option dans la colonne Allow Null Value.

Maintenant que j’ai édité mon EOModel, ma base de données doit avoir une schéma correspondant. Il fut un temps quand EOModeler vous permettait de “Synchroniser le modèle…” de façon assez sûre (vous pouvez trouver cette commande dans le menu “Model”). Mais avec les modifications au niveau JDBC, le succès de la synchronisation dépendra de votre base de données (et de son plugin). Pour être synchro, vous pouvez soit :

  • Utiliser la commande “Synchronize Schema…” avec succès.
  • Modifier votre table à la main.
  • Utiliser l’outil de génération SQL d’EOModeler.

Etant une personne de bon coeur, et le fait que j’utilise une base de données de test, j’ai choisi d’utiliser la dernière option. En cliquant sur le bouton SQL dans l’EOModeler, plusieurs options vous seront proposées. D’après mes choix, quand je cliquerai sur “Execute SQL”, EOModeler va effectuer un drop de la table User (et les données qu’elle contient). Si vous n‘ utilisez pas une base de test, ne choisissez pas l’option drop table…mais vous le saviez déjà…n’est-ce-pas ?

Une fois que votre EOModel et votre base de données sont synchronisés, revenez à ProjectBuilder.

Travailler avec l’Assistant

Quand vous effectuez un “Build and Launch” de votre application, vous connectez et vous balladez sur votre site, vous remarquerez que les modifications que vous avez effectuées sur l’Entité User ne sont pas disponibles. Ceci parce que vous avez créé précédemment un ensemble de règles et D2W ne va pas les ignorer soudainement.

Si vous activez l’Assistant (rappelez-vous de la case sur la page Login), et naviguez vers une page “Edit”, vous verrez que l’Assistant liste les attributs nameFirst et nameLast tout à gauche (le key path browser).

Suivez votre intuition et sélectionnez l’attribut nameFirst et cliquez sur la FlècheVerte:Droite . Vous devriez voir apparaitre nameFirst en dessous des attributs username et password. Quand vous cliquez sur le bouton “Save”, dans la fenêtre Assistant, la page de votre navigateur devrait être rafraîchie avec les modifications.

Conclusion

Avec tout ceci, vous devriez avoir suffisamment d’informations pour travailler avec l’Assistant D2W, EOModeler et RuleEditor pour créer de simples applications pour gérer les informations utilisateurs. Et au cas où vous ne l’auriez pas remarqué, il n’y a pas une ligne de code à maintenir (bon d’accord, le fichier user.d2wmodel est une sorte de fichier contenant du code).

Si vous souhaitez en savoir plus sur D2W, je vous recommande la documentation Apple sur WebObjects. Je me dois également de signaler le projet de frameworks WebObjects et outils open source à Project WONDER. Mais je dois vous prévenir, WONDER est énorme et peu recommandé pour les coeurs sensibles.

Textes originaux en anglais sur O’Reilly : Using WebObjects “Direct to Web” Technology par Josh Paul

opoppon Développement Web , ,

  1. Pas encore de commentaire
  1. Pas encore de trackbacks
Vous devez être identifié pour poster un commentaire