Implémenter des Services Web grâce à LANSA Integrator
Cet article est extrait du LANSA Review n° 33 paru en 2006
Il existe sur Internet pléthore de ressources traitant des Services Web, alors plutôt que de fournir une nième définition, spécification technique ou standard, cet article vous décrira les Services Web sous une forme certainement moins théorique mais plus pratique. Nous nous attacherons tout d’abord à présenter les avantages des Services Web, leurs implications dans la SOA (« Service Oriented Architecture » ou Architecture Orientée Service) et pourquoi vous devez maîtriser toutes ces notions. Ensuite, nous soulignerons comment LANSA Integrator vous simplifie à l’extrême l’implémentation des Services Web pour les développeurs utilisant LANSA ou des langages de 3ème génération (L3G).
Ceci est juste un aperçu de la façon dont vous pouvez implémenter les Services Web en utilisant LANSA Integrator. Les Services Web ne sont que l’un des multiples « Services Java » que vous pouvez intégrer rapidement dans vos applications métiers System i, Windows ou Linux grâce à LANSA Integrator. Le site web de LANSA met à votre disposition la documentation complète de LANSA Integrator incluant des démonstrations et des tutoriaux en ligne, que vous pouvez découvrir à loisir.
Que peuvent nous apporter les Services Web ?
Premièrement, arrêtons de penser à Internet comme la seule chose que vous pouvez voir au travers de votre navigateur. Aujourd’hui, on apprend plus de choses par Internet que par notre propre expérience. Les Services Web sont « les Services Web » non pas parce que vous y accédez au travers de votre navigateur, mais plus parce que vous les implémentez en utilisant des protocoles et des standards Internet, tels que XML et HTTP, et ce sur une infrastructure fédératrice partagée.
En utilisant les Services Web, vous pouvez transformer la plus traditionnelle des applications 5250 ou « batch » en application « Internet ». Par cela, je ne sous-entends pas que nous la transformions en une application graphique, couleur, en mode client riche, remplaçant comme par magie vos écrans noir et vert 80 colonnes (si c’est votre besoin, LANSA propose une autre solution pour cela : RAMP). Ce que je veux dire, c’est que si votre application est « étendue » ou « enrichie » afin de permettre l’utilisation de certaines de ses fonctionnalités au travers de Services Web, alors seulement elle devient une application Internet. C’est un aspect important de la modernisation d’application – dans certains cas même, le seul aspect qui puisse vous intéresser.
Vous pouvez voir les Services Web comme un moyen abstrait d’appeler des programmes et d’échanger des informations entre ces programmes. La différence cruciale entre la technique traditionnelle et les Services Web est que vous n’avez pas besoin de savoir en quel langage est écrit l’autre programme, sur quel système d’exploitation il s’exécute, si c’est de l’ASCII ou de l’EBCDIC, quel protocole est nécessaire pour l’invoquer, ou tout autre détail concernant sa localisation ou son implémentation. Du moins en théorie.
Pour faire simple, les Services Web représentent une manière d’utiliser ou de publier les fonctionnalités d’une application depuis ou à destination de tout ordinateur connecté, qu’il soit au sein de votre système d’information ou quelque part sur le Net. Cette fonctionnalité est typiquement présentée comme opérations ou modes discrets (je ne comprends pas ce que cela veut dire !), chacun recevant ou retournant des paramètres ou des données.
Si vous êtes familiers avec les concepts de la programmation orientée objet (POO), vous pourriez penser qu’il s’agit de POO sous un autre nom. Même s’il existe certaines similitudes, les Services Web sont généralement plus « trapus » et représentent typiquement des entités organisationnelles, leurs attributs et leurs opérations. Une caractéristique générale de l’implémentation des Services Web (et d’une SOA) est que les interfaces externes qu’elle présente tendent à refléter de manière plus fidèle la vision du monde réel de votre organisation et de ses modes opératoires. Ce qui nous conduit au sujet suivant.
Quel rapport y a-t-il entre les Services Web et une Architecture Orientée Services (SOA) ?
La première chose que vous devez comprendre est qu’une SOA n’est pas un produit. Elle est un modèle de représentation ou d’architecture qui est une progression logique, néanmoins importante, des précédentes approches architecturales en réponse aux espérances contemporaines et aux exigences de réponses et de flexibilité du monde informatique.
La SOA est indépendante des plateformes, des outils et des standards, comme il y a plusieurs manières d’implémenter une architecture SOA. D’un autre côté, les Services Web sont un exemple concret de l’ensemble des standards et protocoles qui devraient être utilisés dans l’implémentation d’une SOA. Le trait d’union qui lie les deux réside dans le mot « Service ».
L’une des manières de commencer à réaliser les bénéfices de la SOA est d’implémenter des Services Web qui peuvent être combinés pour créer une application composite, réutilisés au sein de multiples applications et remplacés avec un équivalent qui expose la même interface.
Pourquoi ai-je besoin de comprendre les Services Web ?
La raison principale est certainement que vous n’avez pas le choix.
L’une des fortes tendances de ces dernières années a été l’intégration des processus métiers, à la fois à l’intérieur et à l’extérieur de l’entreprise. Il y a plusieurs raisons à cela – vous avez du entendre parler de l’optimisation des processus métiers, l’amélioration de la qualité des données, la diminution du « time-to-market », les stocks en flux tendus, etc. … - mais la réalité est que l’intégration n’est plus seulement l’affaire des départements informatiques, mais est exigée par les contraintes métiers.
Une seconde raison est relative à l’architecture applicative. De nombreux développeurs vous diront avoir suivi les principes de la SOA bien avant que ce terme n’ait été inventé. Mais l’approche SOA se distingue des pratiques architecturales passées de deux façons : par l’emphase de l’interopérabilité au travers de l’utilisation de standards largement adoptés et par la perception que les services sont plus proches de la vue métier. Actuellement, les Services Web sont le mode le plus accessible pour l’implémentation d’une SOA.
La troisième raison concerne la modernisation des applications « maison ». Le terme « maison » semble avoir acquis une connotation négative avec le temps, quand dans un grand nombre de cas, nous entendons par ce terme qu’elles sont aujourd’hui le cœur du système d’information de la plupart des entreprises.
Beaucoup de ces applications ont été développées avant l’émergence des concepts évoqués ici et ont donc besoin d’être adaptées. La modernisation peut prendre plusieurs formes, mais lier les interfaces Services Web aux applications existantes peut représenter l’une des voies pour assurer la continuité de leur pertinence. En comparaison des autres procédés, cette technique peut même se révéler économique.

LANSA Integrator simplifie l’implémentation des Services Web
En dépit de l’attention et de l’exagération que suscitent les Services Web, malgré leurs bénéfices soupçonnés, cette technologie n’a pas encore révélé toutes ses capacités. Les standards continuent à évoluer et l’interopérabilité entre les précurseurs ne répond pas toujours à toutes les attentes. Le manque de maturité et d’interopérabilité, associés à une pléthore de standards supportant autant de technologies peuvent rendre le développement d’applications publiant ou consommant des Services Web très intimidant.
LANSA Integrator fournit un cadre permettant une intégration facile entre les programmes Java et les applications métiers, au travers de l’utilisation du Gestionnaire de Services Java (Java Services Manager) et d’un ensemble de services associés. Parmi les nombreux services fournis figurent l’agent SOAP et le serveur SOAP, vous permettant d’implémenter les Services Web. SOAP est un protocole basé sur XML vous permettant d’échanger des informations sur HTTP.
En utilisant ces services, les entreprises peuvent entrer dans le monde des Services Web avec une relative aisance. LANSA Integrator vous offre une approche sur le développement des Services Web au travers d’un assistant graphique, gommant ainsi la complexité des protocoles et présentant aux développeurs une interface simple. L’assistant SOAP (SOAP Wizard) facilite le mappage des données XML et génère automatiquement les objets Java et XML associés.
Les diagrammes et exemples de programmes de cet article sont basés sur les tutoriaux d’un serveur SOAP et d’un agent SOAP. Vous pouvez trouver les liens vers ces tutoriaux dans la version en-ligne de cet article sous la section Livre Blancs & Rapports (White Paper & Reports) de notre site web LANSA.
Qu’est-ce qu’un agent SOAP et un serveur SOAP ?
LANSA Integrator supporte deux types de projets Service Web : l’Agent SOAP et le Serveur SOAP.
Vous définissez un projet Agent SOAP lorsque vous voulez consommer (appeler) un Service Web depuis des applications LANSA ou L3G. Dans ce cas, les opérations et les paramètres de ce Service Web sont définis extérieurement et vous devez écrire vos applications en tenant compte de ces définitions.
L’éditeur de ce Service Web fournira habituellement cette définition au travers d’un document XML contenant des meta-data décrivant le Service Web dans un format standard en utilisant le langage de description des Services Web, le WSDL (Web Services Description Language). L’assistant SOAP de LANSA Integrator se chargera d’importer cette définition pour vous.
Vous définissez un projet Serveur SOAP lorsque vous désirez publier un Service Web, depuis votre application LANSA ou L3G, que d’autres applications pourront appeler. Dans ce cas, vous avez habituellement le contrôle de la définition des opérations et des paramètres que vous décrivez en utilisant l’assistant SOAP. LANSA Integrator prendra alors en charge la publication de la description de votre Service Web en utilisant WSDL.

Figure 1 : Le Studio de LANSA Integrator est un environnement de
développement permettant la spécification des mappages
et des autres informations nécessaires à l’implémentation des
services LANSA Integrator. Il est aussi un point central
d’administration et de déploiement de ces services ainsi que
des solutions associées.

Figure 2 : Avec l’assistant graphique SOAP, vous définissez ou
choisissez les opérations relatives au Service Web et réalisez
le mappage des paramètres de ce Service Web avec les variables
du programme. Les noms entre crochets sont des variables de
programme qui fournissent ou reçoivent des valeurs provenant
des paramètres correspondants du Service Web.

Figure 3 : Dans une application LANSA, vous invoquez des services
LANSA Integrator en utilisant des fonctions intégrées (« Built-In »).
Vous pouvez réaliser cela depuis des fonctions RDML/RDMLX, des
formulaires ou des éléments réutilisables. Note : le code gérant les
exceptions a été omis pour des soucis de clarté et de simplicité.
Comment implémentez les Services Web avec LANSA Integrator ?
Si vous créez un projet Agent SOAP ou Serveur SOAP, vous exécuterez les mêmes étapes dans l’assistant SOAP (SOAP Wizard) et le Studio pour définir votre solution SOAP :
Etape 1 : Créer une nouvelle solution en utilisant le Studio LANSA Integrator
Le Studio de LANSA Integrator (cf. figure 1) vous fournit un environnement de développement pour spécifier les configurations, le mappage et les autres informations nécessaires aux Services Web et Java, agissant comme un point central d’administration et de déploiement des ces services et des solutions LANSA Integrator.
Vous démarrez votre projet Service Web en créant une nouvelle solution dans le Studio LANSA Integrator. Si vous devez créer un Agent SOAP, LANSA Integrator vous assistera dans l’importation du WSDL que vous souhaitez utiliser dans votre Service Web.
Etape 2 : Choisir les opérations sur les Services Web et le mappage des paramètres
En utilisant l’assistant SOAP (cf. figure 2), vous sélectionnez les opérations sur le Service Web que vous voulez consommer dans votre Agent SOAP, ou bien vous définissez les opérations et les paramètres du Service Web que vous voulez exposer dans un Serveur SOAP.
Dans les deux cas, vous associerez les paramètres entrants et sortants pour chacune des opérations aux variables du programme, de la manière la plus adaptée à votre façon de les traiter dans votre application.
Etape 3 : Créer le code de votre application
Le Studio LANSA Integrator peut vous aider à démarrer en générant le squelette du code RDML nécessaire à votre application pour utiliser la solution SOAP que vous avez définie.
Dans une fonction, un formulaire ou un élément réutilisable LANSA RDML /RDMLX, vous invoquez les services LANSA Integrator, en utilisant les fonctions intégrées (« Built-in ») qui sont fournies à cette intention.
Bien que non documenté ici, vous pouvez aussi invoquer les services LANSA Integrator depuis des applications L3G – depuis par exemple du RPG ILE – en utilisant des APIs.
Les étapes précédentes représentent les principales tâches de développement associées à l’implémentation des Services Web en utilisant LANSA Integrator.
Naturellement, il y a aussi des tâches associées à la configuration, à la construction et au déploiement de la solution. Vous êtes assisté par le Studio de LANSA Integrator dans ces différentes tâches qui sont décrites de façon précise dans la documentation et les tutoriaux.

De la publication à la consommation des Services Web en passant
par le formatage et la distribution des documents, LANSA Integrator
est le choix pratique qui s’impose pour le transfert et la conversion
des données dans n’importe quel format entre vous et les applications
de vos partenaires commerciaux indépendamment des plateformes
et des protocoles.
Exemple de code Agent SOAP
Voyons la structure du code LANSA nécessaire à l’appel d’un simple Service Web (cf. figure 3).
- Connexion et chargement [Connect & Load] : Cette étape prépare le programme à l’appel du Service Web en initialisant une connexion au Gestionnaire de Services Java (Java Services Manager) et en chargeant le service Agent SOAP. Ensuite a lieu le chargement du Service Web EMPLOYEEAGENT qui a été défini avec l’assistant SOAP de LANSA Integrator.
- Positionner les opérations et effectuer le mapping les paramètres : Ensuite, vous précisez que vous souhaitez appeler l’opération GETEMPLOYEES du Service Web. Les deux instructions SET PARAMETER lient les variables du programme £DEPTMENT et £SECTION aux paramètres correspondant dans l’opération.
Le Gestionnaire de Service Java (Java Services Manager) a accès aux variables du programme LANSA par l’intermédiaire des mots clés SERVICE_EXCHANGE (*FIELD) ; il sait alors quel champ associer quel paramètre via le mapping spécifié dans l’assistant SOAP.
- Exécuter / Appeler [Execute / Call] : Dans cette étape, le code exécute (appelle) le Service Web et attend la réponse.
- Rechercher et traiter les résultats [Retreive and Process Results] : Ce code exécute la commande service GET pour rechercher les informations concernant les employés appartenant au département et à la section qui ont été spécifiés en paramètre de l’opération.
- Déchargement et déconnexion [Unload and Disconnect] : Quand le processus est terminé, vous devez décharger le service et fermer la connexion au JSM.
Le Serveur SOAP étend vos applications
Le code LANSA nécessaire pour mettre en œuvre un projet de Serveur SOAP a une architecture similaire à celui décrit dans les sections précédentes. Typiquement, votre fonction LANSA sera invoquée par un serveur HTTP qui aura reçu la requête du Service Web.
Cette fonction LANSA a besoin de suivre le même processus pour se connecter au JSM, charger le service SOAP Server, identifier et recevoir la requête, la traiter, préparer la réponse et l’envoyer pour finir par le déchargement et la déconnexion du JSM.
La partie du milieu, où le code spécifique à la logique applicative traite la requête, est la partie la plus intéressante. Elle peut inclure des appels à des programmes LANSA ou L3G existants. Vous pouvez exposer des fonctionnalités clés des applications existantes à d’autres applications, et ce, sans changer une ligne de code de l’application originelle.
LANSA Integrator supporte beaucoup d’autres services Java
LANSA Integrator masque la complexité d’implémentation des Services Web aux développeurs LANSA et L3G. Mais LANSA Integrator ne traite pas que les Services Web.
Pour faire simple, LANSA Integrator fournit un cadre qui vous permet une intégration aisée entre les programmes Java et les applications métiers développées en LANSA ou en L3G tels que le C, le RPG ou le COBOL. Le Gestionnaire de Services Java est livré avec un ensemble complet de services.
L’Agent SOAP et le Serveur SOAP ne sont que deux des services fournis par LANSA. LANSA Integrator est livré avec un ensemble de services adressant les tâches classiques d’intégration telles que le traitement de fichiers XML, le transport des données sur des protocoles qu’ils soient FTP, HTTP ou par e-mail, la création de fichiers aussi variés que les PDF, ZIP, CSV et feuilles de calculs EXCEL.
Ces services exposent au développeur d’application une interface simple qui lui masque la complexité des interactions avec le programme Java ou des méthodes de transports et autres protocoles sous-jacents. Vous avez aussi la possibilité de concevoir vos propres services.
Les solutions LANSA EDI, GDSN et autres s'appuyant sur LANSA Integrator
LANSA Integrator est un produit fait pour les développeurs d’applications. LANSA vous offre aussi d’autres applications, construites et basées sur la technologie LANSA Integrator, offrant ainsi une vue fonctionnelle et dédiée aux spécialistes métiers, s’interfaçant avec des tâches d’intégration spécifiques.
LANSA EDI Direct permet à vos spécialistes métiers de définir le mappage entre votre base de données applicative et les transactions EDI entrantes et sortantes. Il code et décode les messages EDI et génère automatiquement les accusés de réceptions, conformément au standard retenu (EDIFACT, X12, …)
LANSA Data Sync Direct et LANSA Data Secure Direct permettent aux acteurs de la « Supply Chain » distributeurs, fournisseurs, grossistes, d’automatiser de façon sûre la synchronisation des données avec le Global Registry GS1 au travers de tout data pool et grâce à AS2 pour le domaine EDI-INT (EDI sur Internet).
Les offres de services professionnels CodeStart vous fournissent des solutions pour le ePayment, des modes de connexion à la place de marché ARIBA et bien d’autres réponses à vos besoins d’intégration B2B.
Services Web en action chez les Clients LANSA
E.P. Barrus Ltd, clients anglais, conçoit et produit des moteurs et distribue divers autres produits connexes incluant les matériels de jardinage MTD, des moteurs de moto et scooters et des moteurs industriels et marins pour Mercury, Mariner et Yanmar. Barrus utilise LANSA Integrator pour échanger des messages EDI avec ses partenaires parmi lesquels B&Q, la plus grande chaîne self-service en Europe et la 3ème au monde. Barrus utilise LANSA Integrator sur son site de revente avec les Services Web de Epitomy, une société spécialisée dans les diagrammes éclatés, de façon à ce que les revendeurs puissent, sans la connaissance de la nomenclature produit, décortiquer les schémas techniques des moteurs afin de trouver la pièce dont ils ont besoin. Un message SOAP est renvoyé au site de web de Barrus pour permettre au revendeur de terminer sa commande.
La commission d’études de New South Wales est responsable du contenu, de la distribution et de la logistique des programmes scolaires des lycées dans le NSW, l’état le plus populaire en Australie. La commission offre de plus en plus de services internet utilisés par environ 900 lycéens pour soumettre et mettre à jour leurs cursus et leurs notes. Avec LANSA Integrator, le comité étend ses services Internet avec des Services Web pour éviter la saisie d’information par les écoles, Services Web fournis par TAFE NSW, le plus grand institut éducatif technique, afin de réaliser les échanges d’un nombre astronomique d’information relatives aux étudiants et aux cursus, aujourd’hui envoyés et fusionnées manuellement, sans validation et automatique. La commission utilise aussi LANSA Integrator pour accéder à des Services Web de paiement en ligne.
COMMON, le plus grand des groupes utilisateurs IBM avec plus de 6500 membres, utilise les Services Web de LANSA Integrator pour la gestion des réservations d’hôtels pour les conférenciers. L’entité « réservation », Passkey, fournit à LANSA le WSDL identifiant les règles et les méthodes d’appels de leur API. LANSA Integrator crée une transaction SOAP sur HTTPS en utilisant le WSDL pour envoyer et recevoir les données via l’API. Quand un conférencier choisi un hôtel de conférence, l’API du Service Web vérifie le code enregistrement de l’hébergement et détermine les frais d’inscription, en accordant une réduction aux personnes qui décident de réserver leurs nuits dans ce même hôtel, avant même que le processus de facturation commence.
REHAU AG+Co en Allemagne est l’un des plus gros fabricants mondiaux de polymères, fournissant des matériaux pour les secteurs BTP, automobile, médicaux et potentiellement n’importe quelle autre industrie. L’équipe de développement de REHAU (très petite) utilise Visual LANSA pour la conception de son ERP, déployé sur 21 serveurs System i dans 23 langues et sur 170 sites à travers le monde. Les machines régionales de REHAU échangent des transactions et des statistiques sur des projets et clients multi-régions, en combinant les services SQL et Services Web de LANSA Integrator. LANSA Integrator supporte aussi les Services Web et les transactions basées sur XML avec des systèmes tiers tels que SAP.
La Faculté de Sciences de Swinburne, à Melbourne, Australie, a une solide réputation en tant que pourvoyeur de talent et connu pour son engagement dans la recherche. Lorsque le gouvernement australien a mis en œuvre le Commonwealth Higher Education Student Support Number (CHESSN – numéro d’identification), la Faculté de Science de Swinburne utilise des Services Web LANSA et assisté le partenaire local LANSA Watershed Systems, pour répondre dans les temps aux contraintes légales. L’interface CHESSN entre le gouvernement et les facultés est basée sur les Services Web et permet une communication bidirectionnelle.
La société TERMINIX International aux USA fait partie des marques spécialisées dans l’assistance aux familles et est l’autorité de contrôle de la Peste la plus importante au monde. Les applications cœurs de Terminix sont développées en LANSA, utilisées à travers 400 sites par 12.000 employés et 5.500 services mobiles spécialisés, interconnectés avec un nombre croissant de systèmes tiers, grâce à LANSA Integrator et les Services Web. Par exemple, Terminix utilise un Service Web pour extraire des opportunités générées en temps réel par le groupe ServiceMaster, utilisant un logiciel de contrôle d’adresse couplé à un système GPS pour une gestion de planning efficace. De nouvelles adresses sont rentrées dans la base de données, LANSA Integrator déclenche un Service Web fournit par ServiceMaster pour obtenir la latitude et la longitude et automatiquement corriger l’adresse afin qu’elle soit conforme à la réglementation postale américaine. Les Service Web de Point Serve, un spécialiste du routage, sont utilisés pour organiser les rendez-vous en optimisant le temps de trajet des conducteurs.
Pour plus d’exemple, reportez-vous à notre section Cas Clients sur notre site web