Matériel co-écrit par Wedmeed
En 2017, lorsque notre projet a commencĂ© au Vietnam, nous avons rencontrĂ© la nouvelle bĂȘte IBM DataPower pour nous. IBM DataPower est un produit de passerelle entre les clients et les backends conçu pour le filtrage, le routage, l'enrichissement ou d'autres transformations des messages qui le traversent (ci-aprĂšs dĂ©nommĂ©es requĂȘtes). Il fallait apprendre rapidement, il n'y avait pas de temps pour l'accumulation, donc on nous a demandĂ© de nous familiariser avec, aprĂšs quoi il y a eu de nombreuses heures de confĂ©rence Skype avec notre collĂšgue de Moscou, qui nous a transmis ses connaissances et son expĂ©rience avec ce produit.
L'autoformation était basée sur l'étude de la documentation et le visionnage de vidéos de formation sur Internet - et ici j'attendais une prise. Je n'ai pratiquement pas pu trouver d'informations en russe. Soit dit en passant, ma connaissance de la langue anglaise à cette époque n'était pas au plus haut niveau, d'ailleurs c'était mon premier projet et, probablement, ces facteurs ont compliqué ma vie. Cela m'a fait écrire un article de formation en russe et de la maniÚre la plus simple possible pour les développeurs débutants qui sont tombés sur ce produit et essaient de comprendre rapidement ses bases. L'article ne vous libérera pas de la lecture de la documentation, mais il vous facilitera la vie dans les premiers stades de la compréhension de «comment cela fonctionne».
Il convient Ă©galement de noter que la structure donnĂ©e dans la pratique sera proche du projet rĂ©el, ce qui vous permettra de l'utiliser comme base, d'Ă©largir et de complĂ©ter vos besoins. En conclusion, quelques mots sur le projet dĂ©jĂ mis en Ćuvre, ainsi que certaines fonctionnalitĂ©s qui mĂ©ritent une attention particuliĂšre, seront donnĂ©s aux sections ThĂ©orie.

Partie 1. Installation de DataPower avec la boĂźte Ă outils Docker
Installez et exécutez l'application Docker Toolbox. Immédiatement aprÚs le démarrage, vous verrez l'adresse IP de la machine, à travers laquelle DataPower sera disponible plus tard:

Pour démarrer l'image, vous devez modifier certains paramÚtres de la machine virtuelle (pertinents pour la version IDG.2018.4.1.0) et la redémarrer:
- ArrĂȘtez la machine docker avec la commande:
docker-machine stop
- SystÚme -> Carte mÚre -> Mémoire principale: minimum 4096 Mo;
- SystĂšme -> Processeur: minimum 2;
- Affichage -> Ăcran -> MĂ©moire vidĂ©o: au moins 128 Mo;
- Nous lançons la machine docker avec la commande:
docker-machine start
Remarque Si vous ĂȘtes invitĂ© Ă redĂ©marrer docker-machine env, exĂ©cutez:
docker-machine env
- Ensuite, vous devez dégonfler l'image IBM DataPower:
docker pull ibmcom/datapower
- Lancez ensuite le conteneur Docker avec la commande suivante:
docker run -it \ -v $PWD/config:/drouter/config \ -v $PWD/local:/drouter/local \ -e DATAPOWER_ACCEPT_LICENSE=true \ -e DATAPOWER_INTERACTIVE=true \ -p 9090:9090 \ -p 3630:3630 \ -p 9022:22 \ -p 7170:7170 \ --name idg \ ibmcom/datapower
- AprÚs avoir terminé la commande, appuyez sur Entrée et entrez admin / admin comme nom d'utilisateur et mot de passe
- Pour démarrer l'interface de gestion Web, utilisez les commandes:
co
et
web-mgmt 0 9090
- AprÚs toutes ces étapes, exécutez dans le navigateur https://192.168.99.100:9090/
Partie 2. Domaines
2.1. Théorie
Les domaines dans DataPower vous permettent de séparer les outils d'administration et de développement, ainsi que d'assurer la sécurité.
AprĂšs l'installation, il n'y a qu'un domaine par dĂ©faut Ă partir duquel les domaines d'application peuvent ĂȘtre créés. Chaque domaine a sa propre configuration de paramĂštres.
Certaines ressources et certains paramĂštres communs ne peuvent ĂȘtre dĂ©finis que dans le domaine par dĂ©faut, notamment les interfaces rĂ©seau, les utilisateurs et le contrĂŽle d'accĂšs, les domaines d'application et autres.
Un domaine d'application est une section de dĂ©veloppement pour les services de traitement des demandes. Les services qui y sont dĂ©finis ne peuvent pas ĂȘtre partagĂ©s avec un autre domaine d'application. Les domaines d'application peuvent ĂȘtre redĂ©marrĂ©s sĂ©parĂ©ment et indĂ©pendamment, sans avoir besoin d'un redĂ©marrage complet de DataPower.
Vous pouvez créer, redémarrer, réinitialiser, suspendre, renouveler ou supprimer des domaines. Vous pouvez trouver des informations plus détaillées sur toutes les fonctionnalités d'administration dans la documentation officielle.
Un peu sur le projet terminé. Nous avons utilisé 3 domaines:
- default - le domaine par défaut contenant les ressources et les paramÚtres partagés;
- trunk - le domaine principal contenant tout le nécessaire pour le traitement des demandes;
- paramÚtres - paramÚtres et domaine de sécurité, les fichiers locaux contiennent des informations sur les rÚgles de routage des services et les paramÚtres de sécurité.
La nécessité de transférer tous les paramÚtres vers un domaine distinct est apparue dans le cadre de la recherche d'un chemin de déploiement plus simple. Comme dans de nombreux projets, les environnements de développement, de test et de production ont été séparés, et le transfert vers un domaine de paramÚtres séparé nous a permis d'installer tous les domaines principaux de l'environnement de développement dans d'autres environnements via l'exportation / importation, sans risque de perdre les paramÚtres d'environnement.
2.2. Pratique
- Dans le champ de recherche, entrez «domaine», sélectionnez «Domaine d'application» et cliquez sur «Ajouter»

- Ici, vous devez spécifier le nom de domaine, commenter (si vous le souhaitez) et activer l'audit et la journalisation. Remplissez les champs et appliquez les modifications

- De mĂȘme, ajoutez un autre domaine "tronc"
- Allez Ă Examiner les modifications

- et enregistrez la configuration du domaine

- Vous pouvez vĂ©rifier l'Ă©tat des objets créés en accĂ©dant au domaine par dĂ©faut dans l'arborescence de navigation dans Ătat -> Principal -> Ătat de l'objet

- Choisissez Afficher par: types

- Recherchez le domaine d'application dans la liste et vĂ©rifiez l'Ă©tat des objets: chacun d'eux doit ĂȘtre enregistrĂ©, allumĂ© et Ă l'Ă©tat haut. Si c'est le cas, passez au chapitre suivant.

Partie 3. Gestionnaires de files d'attente
Le gestionnaire de files d'attente n'est pas un composant obligatoire d'IBM DataPower, mais c'est à travers l'exemple de MQ que vous pouvez montrer toute la puissance de ce produit. Nous utiliserons MQ d'IBM. Lors des tests décrits au chapitre 6, nous devrons envoyer un message au gestionnaire de files d'attente local. Dans cet article, je vais le faire en utilisant l'utilitaire rfhutil, mais vous pouvez utiliser n'importe quelle méthode à votre disposition. Pour les tests, vous devrez créer une connexion de DP à votre gestionnaire de files d'attente local à l'aide du gestionnaire de files d'attente MQ.
3.1. Théorie
Le gestionnaire de files d'attente permet l'échange de données entre la passerelle et les gestionnaires de files d'attente distantes.
Vous pouvez Ă©galement configurer le groupe MQ Queue Manager, ce qui augmentera la tolĂ©rance aux pannes du systĂšme. Cela peut ĂȘtre utile, par exemple, si vous souhaitez connecter le client Ă l'un des ensembles de gestionnaires de files d'attente de travail et, dans certains cas, que vous pouvez trouver dans la documentation officielle.
D'aprĂšs l'expĂ©rience du projet, une seule caractĂ©ristique doit ĂȘtre notĂ©e: Ă un moment donnĂ©, nous voulions essayer d'implĂ©menter l'Ă©quilibrage de charge en utilisant DataPower, en particulier en utilisant des groupes de gestionnaires de files d'attente, mais en pratique, nous n'avons pas trouvĂ© une telle opportunitĂ©. Une autre solution consiste Ă crĂ©er un cluster de gestionnaires de files d'attente.
3.2. Pratique
3.2.1. La préparation
- Installez WebSphere MQ;
- Créez un gestionnaire de files d'attente LOCAL_DP_QM local, accessible sur le port 3630;
- Configurer le canal DP.SVRCONN;
Lors de la crĂ©ation d'une chaĂźne, les commandes suivantes peuvent vous ĂȘtre utiles:
strmqm LOCAL_DP_QM /* mq*/ runmqsc LOCAL_DP_QM /* mq*/ DEFINE CHANNEL (DP.SVRCONN) CHLTYPE(SVRCONN) MCAUSER('evlasenko') /* */ SET CHLAUTH('DP.SVRCONN') TYPE(USERMAP) CLNTUSER('evlasenko') USERSRC(channel) ADDRESS('*') ACTION(ADD) /* */ SET CHLAUTH(DP.SVRCONN) TYPE(BLOCKUSER) USERLIST('nobody') /* */ ALTER LISTENER (SYSTEM.DEFAULT.LISTENER.TCP) TRPTYPE(TCP) PORT(3630) control(QMGR) /* 3630*/ ALTER AUTHINFO (SYSTEM.DEFAULT.AUTHINFO.IDPWOS) AUTHTYPE(IDPWOS) CHCKCLNT(OPTIONAL) /* */ REFRESH SECURITY TYPE(CONNAUTH) /* */ endmqm LOCAL_DP_QM /* mq*/ strmqm LOCAL_DP_QM /* mq*/ END
- Créez les files d'attente DP.IIB.REQIN et DP.IIB.RESIN
- Exécutez rfhutil sous le nom de l'utilisateur pour lequel le canal a été créé. Dans la ligne Nom du gestionnaire de files d'attente (pour vous connecter), écrivez:
DP.SVRCONN/TCT/127.0.0.1(3630)
- Essayez de charger la liste des noms de file d'attente; il ne devrait pas y avoir d'erreurs dans la fenĂȘtre de message. La connexion au canal a Ă©tĂ© vĂ©rifiĂ©e.
3.2.2. Créer IBM MQ Queue Manager
- Accédez au domaine de jonction.
- Dans la recherche, saisissez MQ, sélectionnez IBM MQ Queue Manager, puis cliquez sur Ajouter.
- Vous devez spécifier le nom (TEST_QM), le nom d'hÎte du gestionnaire de files d'attente, le nom du gestionnaire de files d'attente et le nom du canal, ainsi que le délai d'expiration. Configurez et enregistrez les modifications.

VĂ©rifiez l'Ă©tat de l'objet gestionnaire de files d'attente de la mĂȘme maniĂšre que la vĂ©rification de l'Ă©tat des domaines. Pour ce faire, sĂ©lectionnez Ătat de l'objet et le filtre Afficher par: types dans le domaine de jonction. Dans la section "IBM MQ Queue Manager", recherchez l'objet appropriĂ© et vĂ©rifiez son Ă©tat.
Partie 4. Passerelles multiprotocoles
4.1. Théorie
La passerelle multiprotocole (MPG) est une passerelle multiprotocole qui vous permet de recevoir des demandes de clients à l'aide de divers protocoles, puis de les transférer vers différents serveurs à l'aide de divers protocoles. Le protocole utilisé par le client peut ne pas correspondre au protocole utilisé par le serveur d'accÚs distant.
Dans les principaux paramÚtres MPG, vous pouvez définir les composants suivants:
- XML Manager - contrĂŽle la compilation et la mise en cache des feuilles de style (xsl, xslt), la mise en cache des documents.
- Stratégie - se compose de rÚgles, chacune définissant un ensemble d'actions appliquées au message passant par la passerelle.
- ParamÚtres avant et arriÚre (réglage de l'URL, types de messages entrants et sortants, délais d'expiration et plus).
Quelques mots sur le projet:
Le projet utilise 4 passerelles multiprotocoles (routage, 2 transformationnelles pour différents systÚmes d'extrémité et une autre conçue pour recevoir des fichiers du domaine des paramÚtres). Le diagramme ci-dessous montre le schéma d'interaction général:

La quantité de MPG peut varier en fonction de l'architecture de la solution dans son ensemble. Dans notre cas, DataPower fait face à un bus d'intégration (IIB) et à des microservices, qui présentent des différences d'interfaces importantes (json / http contre xml / mq), il a donc été décidé de créer des MPG transformationnels pour chaque backend spécifique et de le nommer en conséquence. Pour tous les clients, nous travaillons sur json / http, donc le routage MPG en est un. Les principaux MPG sont constitués de 3 rÚgles de traitement des messages - demande, réponse et erreurs. Chaque rÚgle comprend les actions nécessaires, telles que la transformation, la journalisation, le routage et autres.
à partir des fonctionnalités - si dans la politique, vous utilisez l'action ConvertQueryParamToXML, alors soyez attentif à InputConversion. Si vous définissez le codage par défaut sur JSON et essayez d'envoyer une demande GET, vous serez surpris de constater que le message n'a subi aucune transformation que vous avez spécifiée et vous n'en trouverez aucune trace. Cette fonctionnalité aidera à surmonter la création d'une rÚgle distincte pour les demandes GET.
4.2. Pratique
4.2.1. La préparation
Vous pouvez trouver tous les fichiers nécessaires au travail sur le lien https://github.com/EvgenyaVlasenko/IBM_DataPower.git
4.2.1.1. Tronc de domaine
- Accédez au domaine de jonction.
- Dans le panneau de configuration, sélectionnez Gestion des fichiers.
- Dans le répertoire local, créez la structure de répertoires suivante et placez-y les fichiers correspondants (chaque fichier contient une brÚve description des fonctions qu'il exécute, ainsi qu'une discussion plus détaillée à ce sujet plus loin dans l'article).

4.2.1.2. ParamĂštres de domaine
- Accédez au domaine des paramÚtres.
- Dans le panneau de configuration, sélectionnez Gestion des fichiers.
- Dans le répertoire local, créez la structure de répertoires suivante et placez-y les fichiers appropriés (les fichiers en contiennent également une brÚve description).

4.2.2. Créer GetFileMPG
Tout d'abord, créez un MPG d'assistance simple qui retournera les fichiers du domaine des paramÚtres.
- Accédez au domaine des paramÚtres.
- Dans le panneau de configuration, sélectionnez Passerelle multiprotocole et cliquez sur Créer.
- Spécifiez le nom (GetFileMPG), la description (facultatif) et le type de backend (dynamique). En fait, puisqu'il n'y aura aucun appel au backend, et seul le fichier sera retourné depuis le systÚme local, dans cet exemple, vous pouvez spécifier n'importe quel type de backend.

- Spécifiez les types de demande et de réponse. La spécification explicite des types réduira le nombre de vérifications en ligne. La spécification du type Pass through vous permet de ne pas créer de rÚgle (dans ce cas, pour transformer la réponse). Si nous spécifions que le type de demande est également transmis, nous ne pourrons en aucun cas traiter le message. Cette option ne nous convient pas, nous limitons donc le type de demande à l'aide de Non-XML.

- Cliquez sur + et sélectionnez le gestionnaire HTTP pour créer un nouveau protocole frontal.

- Ici, vous devez spĂ©cifier un nom, une adresse IP, un port et une liste des mĂ©thodes autorisĂ©es. Faites attention Ă l'adresse IP. Si vous spĂ©cifiez 0.0.0.0, tout le monde peut accĂ©der Ă cette passerelle. Si 127.0.0.1 - uniquement d'autres passerelles Ă l'intĂ©rieur du mĂȘme DataPower. Puisqu'il y a des paramĂštres de sĂ©curitĂ© parmi les paramĂštres, nous utilisons la deuxiĂšme option. Remplissez les champs et cliquez sur "Appliquer", le protocole sera automatiquement ajoutĂ© Ă la passerelle.

- Cliquez sur + pour ajouter une nouvelle politique.

- Remplissez le nom de la politique «GetFilePolicy».
- Créez une nouvelle rÚgle, indiquez le nom et la direction de la rÚgle. Puisqu'il n'y a vraiment pas de backend et que seul le fichier souhaité est retourné, il n'y aura qu'une seule rÚgle (client vers serveur).

- Double-cliquez sur l'action Correspondance pour la configurer, sĂ©lectionnez une rĂšgle existante et appliquez les modifications. Il serait idĂ©ologiquement correct de dĂ©finir une restriction sur la capacitĂ© de recevoir uniquement des requĂȘtes Get, mais dans le cadre de la tĂąche de formation, vous pouvez sĂ©lectionner celle existante.
- Ajoutez une autre action - GatewayScript en la faisant glisser sur la rÚgle et en la configurant. En tant que transformation, nous utiliserons le fichier préparé, qui dans le systÚme de fichiers local: /// trouvera le fichier par son nom à partir de l'URI de la demande entrante et le placera dans le corps du message. Le résultat de l'opération sera transféré directement dans le tampon de sortie de la rÚgle. Enregistrez les modifications.

- Le résultat final de la politique devrait ressembler à ceci:

- La création de MPG est terminée, enregistrez les modifications.
- Vous pouvez vĂ©rifier le succĂšs de sa crĂ©ation Ă l'aide de l'Ă©tat de l'objet, comme pour vĂ©rifier l'Ă©tat des domaines et le gestionnaire de files d'attente. Pour ce faire, sĂ©lectionnez Ătat de l'objet et le filtre Afficher par: services dans le domaine des paramĂštres. Dans la section «Passerelle multiprotocole», recherchez l'objet correspondant et vĂ©rifiez son Ă©tat.
- Vous ne pouvez pas appeler ce MPG de l'extĂ©rieur, car vous l'avez protĂ©gĂ© avec ip. Modifiez temporairement l'ip de 127.0.0.1 Ă 0.0.0.0 et le port de 7171 Ă 7170 et exĂ©cutez la requĂȘte suivante:
curl -vv -k "http://192.168.99.100:7170/trunk/route/routeRules.xml"
- Vous devriez obtenir la réponse suivante:

- Encore une fois, changez l'ip et le port en 127.0.0.1:7171 d'origine.
4.2.3. Création de routageMPG
CrĂ©ez maintenant RoutingMPG. En fonction de la demande d'entrĂ©e et des rĂšgles de routage, il dĂ©terminera oĂč et avec quels paramĂštres la demande doit ĂȘtre envoyĂ©e.
- Accédez au domaine de jonction.
- Créez une nouvelle passerelle multiprotocole conformément aux clauses 2-10 de la section 4.2.2 en utilisant les valeurs suivantes:
- 3 - nom: RoutingMPG, type de backend: Dynamique (pour la possibilité d'acheminer les demandes vers différents MPG si nécessaire).
- 4 - Rq: non xml, Rs: non xml.
- 6 - nom: RoutingHTTP_FSH, ip: 0.0.0.0, port: 7170, + méthode Get.
- 8 - nom: RoutingPolicy.
- 9 - nom: RoutingPolicy_rule_req, direction: Client to Server.
- Ajoutez une action supplĂ©mentaire pour acheminer la demande. Pour ce faire, faites glisser l'action "Acheminer" sur la rĂšgle, double-cliquez dessus pour la configurer, remplissez les champs et appliquez les modifications. Le fichier route.xsl reçoit le fichier de paramĂštres de routage du domaine de paramĂštres via GetFileMPG créé prĂ©cĂ©demment. AprĂšs cela, en fonction de l'URI, les paramĂštres nĂ©cessaires Ă cette opĂ©ration sont dĂ©jĂ sĂ©lectionnĂ©s dans le fichier. Certains d'entre eux sont utilisĂ©s pour le routage, et certains sont ajoutĂ©s aux en-tĂȘtes pour une utilisation dans d'autres MPG. Les paramĂštres d'entrĂ©e et de sortie dĂ©terminent la façon de travailler uniquement avec le corps du message et n'affectent en aucune façon les en-tĂȘtes et les variables. Par consĂ©quent: entrĂ©e de null - puisque les informations du corps du message ne sont pas utilisĂ©es pour le routage. La sortie est nulle - car le rĂ©sultat de la transformation n'est qu'un changement dans les informations de service.

- De mĂȘme, crĂ©ez 2 rĂšgles supplĂ©mentaires et enregistrez toutes les modifications:
- Direction: Server-Client, nom: RoutingPolicy_rule_resp;
Transformation: entrĂ©e INPUT, sortie NULL, fichier de transformation local: ///RoutingMPG/transform/resp.xslt. Le fichier resp.xslt reçoit le statut http de la rĂ©ponse MPG de transformation et le dĂ©finit explicitement sur la rĂ©ponse RoutingMPG. Si cela n'est pas fait, le code par dĂ©faut sera dĂ©fini sur 200, mĂȘme si une erreur s'est produite dans la transformation MPG.
- Direction: Erreur, nom: RoutingPolicy_rule_error;
Transformation: Input INPUT, Output PIPE (selon la documentation, l'utilisation de PIPE entre deux nĆuds d'action adjacents comme INPUT et OUTPUT peut Ă©liminer le traitement supplĂ©mentaire et rĂ©duire la quantitĂ© de mĂ©moire utilisĂ©e), le fichier de transformation est local: ///RoutingMPG/transform/errors.xsl. Le fichier errors.xsl reçoit le code d'erreur et le texte de la rĂ©ponse de la transformation MPG et gĂ©nĂšre un message d'erreur JSON au format attendu par le client.
- Le résultat final de la politique devrait ressembler à ceci:

- La création de MPG est terminée, enregistrez les modifications.
- Ă l'aide, par exemple, de l'utilitaire curl, exĂ©cutez la requĂȘte suivante:
curl -vv -k "http://192.168.99.100:7170/dp/test/transformMessage"
- Si vous obtenez l'erreur suivante, alors tout est fait correctement. Cette erreur signifie que le message a été reçu et traité avec succÚs, mais la tentative d'appel du backend (dans ce cas IIBMPG) a échoué. Passez à l'étape suivante.

4.2.4. Création de IIBMPG
L'Ă©tape suivante consiste Ă crĂ©er un MPG transformationnel. Supposons que le systĂšme externe soit au format de requĂȘte JSON et que le interne soit XML. Nous devons transformer le message d'entrĂ©e afin que le systĂšme interne puisse le comprendre. Il convient de noter qu'il ne s'agit pas toujours d'une simple conversion de l'ensemble du message. Il est souvent nĂ©cessaire de transmettre un message tronquĂ© ou augmentĂ©, parfois avec une structure complĂštement repensĂ©e.
- Accédez au domaine de jonction.
- Créez une nouvelle passerelle multiprotocole conformément aux clauses 2-10 de la section 4.2.2 en utilisant les valeurs suivantes:
- 3 - nom: IIBMPG, type de backend: dynamique
- 4 - Rq: JSON, Rs: XML
- 6 - nom: IIBHTTP_FSH, ip: 127.0.0.1 (uniquement les requĂȘtes du mĂȘme DataPower), port: 7172, + mĂ©thode Get
- 8 - Nom: IIBPolicy
- 9 - nom: IIBPolicy_rule_req, direction: Client to Server
- Ajoutez une description. En fonction du nom X-DP-Transform-Name dans les en-tĂȘtes de demande, le fichier IIBRuleRoute.xsl reçoit du fichier local: ///IIB/route/IIBRouteRules.xml les noms des fichiers de transformation de demande, de rĂ©ponse et d'erreur pour ce service et dĂ©finit leurs valeurs dans les variables de contexte correspondantes var: // context / IIB / reqTransform, var: // context / IIB / ansTransform, var: // context / IIB / errTransform. D'autres valeurs des en-tĂȘtes (url, uri, expire, timeout) sont Ă©galement placĂ©es dans des variables de contexte.

- Ajoutez une autre action en faisant glisser AvancĂ© vers votre rĂšgle et en sĂ©lectionnant Convertir les paramĂštres de requĂȘte en XML dans la liste, configurez. Vous devez ajouter une nouvelle mappe de conversion d'entrĂ©e, en lui donnant un nom (cmnJSONParseCNVM) et le type requis (JSON).


- Ajoutez la transformation aprĂšs la conversion standard et configurez-la. Dans ce cas, la variable dĂ©finie dans la transformation prĂ©cĂ©dente est utilisĂ©e pour indiquer le fichier de transformation. Cette opĂ©ration est effectuĂ©e de maniĂšre Ă ce que la transformation soit universelle et que le fichier lui-mĂȘme soit remplacĂ© "Ă la volĂ©e" en fonction du message d'entrĂ©e. Le corps du message est prĂȘt. L'Ă©tape suivante consiste Ă router le message, et le corps du message ne changera pas, nous crĂ©ons donc la variable dpvar_1 et y enregistrons le rĂ©sultat. C'est cette variable que nous dĂ©signons l'entrĂ©e de l'action RĂ©sultats. Enregistrez les modifications.

- Ajoutez une action de routage et définissez les paramÚtres suivants. Le fichier IIBURLRoute.xsl reçoit les valeurs des variables de contexte, certaines d'entre elles sont définies comme variables de demande de service, et à partir du reste, il forme un URI pour la demande au systÚme de destination, qui stocke également dans la variable de service.

- De mĂȘme, crĂ©ez 2 rĂšgles supplĂ©mentaires et enregistrez toutes les modifications:
- Direction: Server-Client, nom: IIBPolicy_rule_resp;
Transformation: Entrée INPUT, Sortie PIPE, fichier de transformation var: // context / IIB / ansTransform (variable de contexte pour substituer la transformation de la réponse "à la volée"). - Direction: Erreur, nom: IIBPolicy_rule_error;
Transformation: entrée NULL, sortie PIPE, fichier de transformation var: // context / IIB / errTransform (variable de contexte pour remplacer la transformation d'erreur à la volée).
- Le résultat final de la politique devrait ressembler à ceci:

- La création de MPG est terminée, enregistrez les modifications.
Partie 5. Test
5.1. La préparation
- Téléchargez, par exemple, l'utilitaire rfhutil pour lire et écrire des messages dans la file d'attente;
- Les fichiers de test se trouvent dans le dossier tests du mĂȘme rĂ©pertoire que les fichiers de projet.
5.2. Bilan de santé
- Envoyez la demande Ă l'aide de l'utilitaire curl (pour la demande ci-dessous, le rĂ©pertoire en cours doit ĂȘtre le mĂȘme que example.json).
curl -vv -k "http://192.168.99.100:7170/dp/test/transformMessage" -H "Content-Type: application/json" --data-binary @example.json
- Ouvrez 2 instances de l'utilitaire rfhutil et soustrayez le message de la file d'attente DP.IIB.REQIN avec la premiĂšre instance;
- Accédez à l'onglet MQMD et copiez le MessageID;
- Dans la deuxiÚme instance, ouvrez le fichier rs.xml, dans l'onglet MQMD, insérez l'identifiant de message dans CorrelID et placez le message dans la file d'attente DP.IIB.RESIN;
- Vous devriez obtenir une réponse similaire:

- Répétez les étapes 1 à 3;
- rs_error.xml correllId;

6.
6.1. Théorie
Log Targets , .
Log Targets . , 4 1000Kb, . 2-4 . , . , DataPower, , , , , , - MPG, .
6.2.
- trunk;
- Log Target ;
- :
- (IIB_LOG);
- (File);
- (Text);
- timestamp(zulu);
- (logtemp:///IIB.log â IIBMPG);
- (1000).

- . MPG IIBMPG.

- , , ( , ).

- ;
- ;
- .
- Log Targets MPG.
- :
- , , .

- .

7. -
- â , . â , , - .
- . View Logs. , « », « » .
- . . MPG Show Probe -> Enable Probe. . , .

- , .
â .