Les bases
REST veut dire littéralement Representational State Transfer. Aujourd’hui on parle d’avantage de service RESTfull. Il ne s’agit ni d’un langage de programmation, ni d’un outil de développement. Loin d’être une représentation bien encadrée et standardisé comme SOAP, REST est un style d’architecture qui se veut simple à mettre en œuvre. Même si aujourd’hui REST n’est pas le standard d’un organisme reconnu à l’échelle internationale, il s’appuie sur le protocole HTTP qui lui par contre a des méthodes standards. De ce fait il sera plus facile pour les services développés en REST, d’implémenter les méthodes CRUD (Create/Read/Update/Delete). REST tout comme HTTP est stateless ou sans état. Il a quand même l’avantage de permettre facilement l’implémentation du cache au niveau applicatif. En plus, combiné au langage comme PHP, REST peut être totalement statefull. Il est d’avantage préféré au SOAP pour sa simplicité même s’il souffre de quelques problèmes clairement identifiés:
- il n’est pas standardisé comme je l’ai déjà dit
- en plus, contrairement à SOAP qui peut faire le WS security, REST n’en est pas capable.
Les différentes méthodes
Pour le support des projets REST, TIBCO met à disposition les méthodes suivantes:
- GET : permet d’accéder à la représentation d’une ressource
- PUT : créer ou mettre à jour une ressource avec une URI connue
- POST : créer une ressource lorsqu’on ne connaît pas l’URI
- DELETE : supprime une ressource.
- PATCH: mise à jour partielle d’une ressource.
Mise en œuvre
Dans le tutoriel qui suit, nous allons développer et exposer un service REST simple de gestion de Projets. Avant toute chose il faut donner un nom à la ressource à manipuler. Dans notre cas, ce sera projects. Chaque projet aura un identifiant (string), un nom (String) et un statut (boolean). Nous allons agir sur la ressource projects au travers de son identifiant unique projectID. Rappelez vous que sur les services REST, nous avons des ressources sur les quelles on agit à travers des méthodes.
Par où commencer ?
Pour commencer, il faut démarrer le studio de TIBCO que nous avons installé dans ce tutoriel.
Pour ce faire, aller dans le répertoire d’installation de TIBCO BWCE. Dans mon cas, c’est /opt/esb/TBWCE/studio/4.0/eclipse et lancer ./TIBCOBusinessStudio et attendre le démarrage de Eclipse studio.
Si vous avez déjà utilisé Eclipse, vous allez rapidement vous retrouver. En effet le Studio de TIBCO est basé sur Eclipse.
Pour continuer, Cliquer sur Workbench et sélectionner un espace de travail (Workspace). Vous allez vous retrouver dans un espace de perspectives.
Création d’un nouveau projet TIBCO BW
Pour créer le projet BW, les étapes sont les suivantes: aller sur FILE => NEW => Businessworks Resources et sélectionner BusinessWorks Application Module. En réalité, vous pouvez sélectionner à cette étape BusinessWorks Application à la place de BusinessWorks Application Module. Ce qu’il faut savoir c’est que si vous sélectionnez BusinessWorks Application Module, durant les étapes guidées de création du projet BW, TIBCO vous demandera si vous voulez créer directement le module d’application « BusinessWorks Application « qui évidemment peut être créé par la suite voir même à la fin du développement. Le module d’application permet de générer l’archive EAR qui sera déployé sur le serveur TIBCO.
Revenons à notre « BusinessWorks Application Module ».
Renseignez les informations sur le projet en cours de création. Vous pouvez laisser les autres options par défaut et cliquez sur finish. Vous pouvez aussi cliquer sur Next pour voir des options de personnalisation. Mais ces personnalisations ne sont pas utiles aux fins de ce tutoriel.
Si vous vous rappelez, plus haut j’ai dit que le module d’application pouvait être créé plus tard même si TIBCO propose de le créer à la création du module. Comme vous pouvez le voir, dans mon cas, j’ai choisi de le créer directement. Si je ne coche pas la case « Create Application », je pourrai toujours créer mon application plus tard.
Vue d’ensemble module et application
Nous avons ainsi créé 2 modules à savoir 1 module projet et un module d’application. Le process est pour le moment vide parce que nous n’avons encore ajouté aucune ressource. Remarquez que le module contient une erreur, qui est normale. Le process en fait ne contient aucune activité. Nous allons donc le compléter. Mais avant de compléter notre process, prenons le temps d’observer l’arborescence du projet qui est généré ci dessus, vous remarquerez qu’il s’agit d’une arborescente très complète avec tous les répertoires qui vont bien.
Configuration des méthodes
Pour compléter notre process, cliquez sur « Create REST Service » en haut à gauche et complétez la configuration qui s’affiche. En particulier, renseignez le nom de la ressource « Resource Name » et le chemin vers la ressource « Resource Service Path », en plus sélectionnez d’implémenter toutes les méthodes mises à disposition. Il s’agit de POST, GET, PUT, DELETE et PATCH. Pour plus de détails, vous pouvez consulter la documentation en ligne sur les web service RESTfull. Notez que dans les versions antérieures de studio, il fallait cliquer sur le Process, aller dans « Advance » et finalement sélectionner « stateless ».
Pour revenir à notre configuration. Voici les valeurs que j’ai renseigné.
- Resource Name: Projects
- Resource Service Path: /projects.
Laissez l’implémentation Data par défaut sur « Structured ». En fait cela nous permet juste d’avoir une réponse déjà formatée. Si l’on sélectionne « Opaque », il faudrait ajouter un parseur JSON ou XML pour obtenir un payload qui convienne.
Respectons notre cahier des charges
Pour être conforme à notre cahier des charges défini plus haut, nous allons définir une structure de données contenant un identifiant (string), un nom (String) et un statut (boolean). Pour ce faire il suffit de cliquer sur Browse, puis sur Create New Schema en laissant les autres options par défaut. Lorsque la fenêtre « Create XML Schema » apparait, donnez un nom à « Resource Name » qui sera le nom du schéma xsd. Modifiez les noms par défaut des 3 champs name, number et flag. En fait il s’agit des noms par défaut que l’IDE propose. On peut en ajouter d’autres, modifier le type, la cardinalité ou carrément les supprimer.
Cliquez sur Next pour personnaliser les options, sinon vous pouvez cliquer sur Finish pour terminer la configuration de la ressource à exposer.
Si vous avez cliqué sur Next, remarquez les noms qui seront utilisés pour agir sur la ressource Projects. Sélectionnez chaque méthode pour voir alors les options. Vous pouvez à ce niveau ajouter une description sur chaque méthode, ajouter des notes. Plus encore, vous pouvez aussi choisir comme réponse uniquement le code du statut de l’exécution. Ainsi pour une exécution correcte, vous obtiendrez un statut de type successful 200.
Cliquez sur Finish pour retourner à la vue perspective projet. il ne nous reste plus qu’à configurer les entrées et sorties de notre projet et tester.
Supprimer les erreurs
Ce projet a quelques erreurs qui sont normales, du moins pour le moment. Nous allons maintenant compléter le développement de toutes les méthodes, ce qui va permettre de supprimer les erreurs. Pour une question de simplicité dans ce tutoriel, je vais juste ajouter des logs en entrées et des messages de réponse fixe.
Pour compléter le projet, déroulez le module « miaffo.net.GestionProjets », en suite le « Module Descriptor », et enfin double cliquez sur « Components ». Remarquez le choix sur le type de réponse attendue qui peut être XML ou JSON.
Pour terminer la configuration, toujours sur le component, cliquer sur HTTP Connector pour configurer les informations d’accès au service. Il s’agit principalement du port d’accès au service. Dans mon cas, j’ai sélectionné le port 19600 pour exposer ma ressource. Faites attention avec le port 8080 car il peut être déjà occupé sur votre poste.
Pour tester le projet, allez sur Run => Run Configurations… Sélectionnez le module qu’on vient de créer, puis l’exécuter en cliquant sur Run, puis laissez la magie s’opérer.
Si vous avez bien suivi toutes les étapes, alors votre projet va s’exécuter et vous aurez les traces comme celles ci.
00:06:11.200 INFO [main] TIBCO BusinessWorks Container Edition version 2.3.3, TIBCO-THOR-FRWK-300006: Started BW Application [miaffo.net.GestionProjets.application:1.0]
Pour voir les informations d’exposition configurée plus haut, exécutez sur la console de log « lrestdoc ».
Vous allez obtenir:
lrestdoc [Application Name]: miaffo.net.GestionProjets.application [Discovery Url]: http://dmiaffo:7777/miaffo.net.GestionProjets.application [Reverse Proxy Url]: null
Accédez à l’url « Discovery Url » pour ouvrir l’interface swagger qui va vous permettre de tester les méthodes d’accès à la ressource Projects.