Chapitre 5 Modélisation de messages 1. Rôle et usage du contenu d'un message 1.1 Les scénarios sans utilisation du contenu du message Dans le chapitre La messagerie avec BizTalk, nous avons utilisé BizTalk pour router et transmettre des messages sans exploiter leur contenu. Le contenu des messages transportés a donc été complètement ignoré par BizTalk qui s'est contenté de transporter un flux d'informations. Pour preuve, notre exemple de routage, illustré par un échange entre l'application de gestion commerciale et l'application de comptabilité, est en mesure de fonctionner pour transporter des messages XML, des fichiers PDF ou tout autre type de données. Ces scénarios de transport, sans exploitation de contenu, sont fréquents mais ne constituent pas la majeure partie des projets EAI implémentés avec BizTalk. 1.2 Utilisation du contenu d'un message par BizTalk Dans les scénarios d'échanges les plus fréquemment mis en œuvre, le contenu d'un message joue un rôle central et fondamental. Pour BizTalk, le contenu d'un message est utile dans divers scénarios : - Pour détecter le type de message : BizTalk peut exploiter le contenu d'un message entrant pour déterminer quel est son type (exemple : Commande, Facture...). - Pour router le message : le contenu d'un message peut permettre à BizTalk de prendre une décision pour le router au(x) destinataire(s) concerné(s).
162 BizTalk Server 2009 Mise en œuvre opérationnelle - Pour vérifier le message : lors de la réception ou lors de l'envoi d'un message, BizTalk peut opérer un ensemble de vérifications sur la structure ou sur le contenu fonctionnel. BizTalk peut ainsi interdire à des messages mal formés d'être véhiculés dans le Système d'information. Il peut également garantir aux destinataires que les messages qui leur sont transmis ont été vérifiés par rapport à des structures normalisées ou des règles de gestion. - Pour transformer ou modifier le message : lors de la réception ou de l'envoi, BizTalk peut opérer un ensemble d'opérations sur le contenu du message et ce, afin de le transformer ou de le modifier. Ces transformations/modifications, que nous étudierons en détail dans le chapitre Transformation de messages permettent de convertir des formats ou de rendre conforme des messages. Nous allons, dans ce chapitre et dans les suivants, illustrer ces différentes utilisations du contenu d'un message. 2. Le rôle fondamental de XML dans BizTalk Vous le comprendrez très vite, le rôle de XML (extensible Markup Language) est à plusieurs titres fondamental dans BizTalk. Tous les messages traités par BizTalk sont représentés en interne comme des messages XML. Cela est vrai même si le contenu n'a pas été modélisé, dans ce cas, BizTalk va simplement encapsuler le contenu d'un message dans un message XML. Le rôle central de XML dans BizTalk entraîne de fait l'utilisation d'un ensemble de normes, technologies ou standards connexes à XML. C'est le cas de XSD (XML Schema Definition) pour la modélisation des messages mais aussi, nous le verrons plus loin, de XPATH pour la recherche de données ou de XSL (XML Stylesheet Language) pour la transformation des données. La bonne compréhension des notions XML en général et des normes ou usages XML est donc fondamentale pour les équipes projets en charge du développement. Cet ouvrage suppose que le lecteur connaisse, même de manière basique, les principales notions XML. 3. Notions fondamentales pour la modélisation de schémas 3.1 Utilisation de XSD Dans la mise en œuvre d'un scénario d'échange avec prise en compte du contenu du message, l'étape primordiale et préliminaire est la définition du contenu. Les messages doivent être modélisés, c'est-à-dire décrits précisément. Editions ENI - Toute reproduction interdite
Modélisation de messages 163 Chapitre 5 La description d'un message est effectuée dans un schéma. Les concepteurs de BizTalk ont souhaité s'appuyer sur un standard pour représenter les schémas BizTalk. Ainsi, depuis la version 2004 de BizTalk, les schémas sont écrits en XSD (Xml Schema Definition, http://www.w3.org/xml/schema). Remarque Avant la version 2004 de BizTalk, les schémas étaient écrits en XDR (Xml Data Reduced). Afin de permettre la migration depuis les versions précédentes, BizTalk propose un outil de conversion XDR vers XSD. Le choix de XSD pour modéliser la structure des schémas est en cohérence avec le rôle fondamental de XML dans les Systèmes d'information d'aujourd'hui et sa prédominance dans les échanges de données. XSD est en effet très largement répandu, documenté et supporté par de nombreux outils et de nombreux éditeurs. BizTalk propose des outils graphiques pour la modélisation de schémas XSD mais vous pouvez tout à fait effectuer la modélisation de vos schémas avec un outil tiers et ensuite les utiliser dans BizTalk. Microsoft a étendu la spécification XSD pour ajouter des éléments complémentaires permettant notamment la modélisation de fichiers plats. Ces extensions ne rompent cependant pas la compatibilité avec le standard XSD puisque ce sont des annotations dans le schéma qui ne sont donc pas obligatoirement interprétées par l'outil ou le parseur XML utilisant le schéma. Vous pouvez donc réutiliser des schémas XSD conçus avec BizTalk dans d'autres outils. 3.2 Les outils BizTalk pour la modélisation de schémas Pour modéliser un schéma avec BizTalk, plusieurs outils sont disponibles : - Un outil de conception de schéma (Éditeur de schémas BizTalk ou BizTalk Schema Editor). Cet outil permet de modéliser graphiquement des schémas XSD. - Des assistants pour faciliter la génération de schémas. Ces assistants permettent de générer un schéma à partir d'un exemple de fichier XML ou de migrer des définitions XDR vers XSD. Nous allons illustrer dans un premier temps la modélisation d'un schéma avec l'éditeur de schémas BizTalk. 3.3 Visual Studio 2008 comme outil de développement Jusqu'à maintenant, nous n'avons pas eu recours à des phases de développement BizTalk puisque nous avons travaillé sur de la configuration via la console d'administration.
164 BizTalk Server 2009 Mise en œuvre opérationnelle À partir du moment où nous devons effectuer du développement, nous devons utiliser Microsoft Visual Studio 2008, l'environnement de développement.net de Microsoft. Lors de l'installation de BizTalk, vous disposez en effet d'une option vous permettant d'installer les outils de développement BizTalk qui viennent compléter la panoplie d'outils déjà disponible dans Visual Studio. Suite à l'installation des outils de développement BizTalk, des compléments sont ajoutés à Visual Studio et permettent la modélisation de schémas, la création de transformations, la création de pipelines ou encore l'implémentation d'orchestrations. 3.3.1 Notion de solution Visual Studio La première étape du développement BizTalk est la création d'un projet Visual Studio dans une solution Visual Studio. Une solution Visual Studio (fichier d'extension.sln) permet de regrouper différents projets.net. Pour le développeur.net ou BizTalk, une solution permet de rassembler dans une même instance de l'environnement de développement l'ensemble des composants nécessaires pour l'implémentation d'un projet donné. 3.3.2 Notion de projet Visual Studio Une solution est composée de projets.net. Un projet.net est un ensemble d'éléments (classes, composants...) qui, une fois compilé, produit une assembly.net (assemblage en français), c'est-à-dire un exécutable ou une librairie. Il existe plusieurs modèles de projets selon ce que l'on souhaite implémenter. Voici quelques exemples : - Bibliothèque de classes : permet de générer une librairie.net (une dll) contenant des classes. Utile pour développer des composants utilitaires et réutilisables par exemple. - Application Web ASP.Net : permet de créer un site Web dynamique en ASP.Net. - Application WPF : permet de créer une application Windows riche déployée sur un poste client. - Application console : permet de créer une application sans interface graphique (exemple : un utilitaire en ligne de commande). Il existe un très grand nombre de modèles de projets en fonction des composants installés sur le poste du développeur. Les modèles de projets sont regroupés en types de projets. Par exemple, les projets de développement C# sont regroupés sous le type de projet Visual C#. Editions ENI - Toute reproduction interdite
Modélisation de messages 165 Chapitre 5 3.3.3 Les modèles de projet BizTalk Le développement BizTalk dans Visual Studio repose sur les notions de solutions et projets que nous venons d'évoquer. Lors de l'installation des outils de développement BizTalk sur un poste disposant de Visual Studio 2008, un nouveau type de projet est créé (Projets BizTalk) contenant deux nouveaux modèles de projets : - Projet BizTalk Server vide : projet BizTalk pour accueillir des schémas, maps, pipelines et orchestrations. - Projet d'importation BPEL BizTalk Server : migration d'un projet BPEL (Business Process Engine Language). Ces deux modèles de projets peuvent accueillir des composants BizTalk que nous étudions dans cet ouvrage : - Schémas : modélisation de messages pour les échanges. - Mappages : transformations de messages. - Pipelines : pipelines de réception ou d'envois. - Orchestrations : implémentation de processus métier. Le développement BizTalk repose sur les mêmes notions que le développement.net. Ainsi les projets BizTalk créés dans Visual Studio deviennent, après compilation, des assemblies.net (librairies.net). Le résultat de cette compilation (la dll.net générée par Visual Studio) est ensuite déployée au niveau du serveur BizTalk. Nous abordons le déploiement d'assemblies BizTalk à la fin de ce chapitre. 4. Modélisation de schémas Remarque La solution Visual Studio ainsi que l'ensemble des schémas modélisés dans ce chapitre sont disponibles en téléchargement. Le fichier à télécharger se nomme Chapitre6.zip. 4.1 Créer un projet BizTalk Nous allons maintenant créer notre premier projet BizTalk pour ensuite modéliser des schémas d'échanges. Pour créer un nouveau projet BizTalk, voici comment il faut procéder : s Dans Visual Studio 2008, ouvrez le menu Fichier puis Nouveau et Projet. s Dans Types de projets, sélectionnez Projets BizTalk, puis dans Modèles, sélectionnez Projet BizTalk Server vide. s Choisissez le nom du projet ainsi que le chemin de stockage. Vous devez également sélectionner le nom de la solution qui sera créée.
166 BizTalk Server 2009 Mise en œuvre opérationnelle s Lorsque vous cliquez sur le bouton OK, et si vous avez saisi des valeurs identiques à la copie d'écran ci-dessus ; vous obtenez : - un répertoire ENI.BizTalk dans le répertoire c:\enieditions ; - un fichier ENI.BizTalk.sln (représentant la solution) ; - un sous répertoire ENI.Schemas (pour le projet) ; - un fichier ENI.Schemas.btproj (représentant le projet) ; - un fichier ENI.Schemas.btproj.user qui contient les préférences de l'utilisateur concernant ce projet. 4.2 Modéliser un schéma 4.2.1 Ajouter un nouveau schéma Nous disposons désormais du conteneur (le projet BizTalk) dans lequel nous pouvons ajouter un ou plusieurs schémas. Nous allons ajouter un schéma dans ce projet. Pour illustrer la manipulation, nous allons mettre en place un schéma qui représente une commande passée par un client à son fournisseur. Nous réutiliserons ce schéma dans l'ensemble des exemples de cet ouvrage afin d'obtenir un processus métier complet implémenté dans BizTalk. Editions ENI - Toute reproduction interdite