Exporter (0) Imprimer
Développer tout

Routage des messages des ponts vers les destinations dans le projet BizTalk Service

Mis à jour: septembre 2014

L'une des raisons les plus évidentes pour connecter plusieurs composants d'un projet de service BizTalk est de router les messages d'un ordinateur vers un autre. Il y a cependant une autre condition : vous pourriez avoir besoin de router le message à partir d'un composant source vers plusieurs composants de destination selon votre logique métier. Il s'agit de la « condition de routage ». Lorsqu'il existe plusieurs conditions de routage, vous devez également définir l'ordre dans lequel elles sont respectées. Enfin, certaines actions (comme l'attribution de valeurs aux en-têtes de message, l'ajout d'en-têtes personnalisés, etc.) peuvent être réalisées sur le message avant de le router vers sa destination. Cette rubrique décrit ces aspects en détail et fournit également des instructions sur leur réalisation dans un projet de service BizTalk.

Cette rubrique explique ces étapes à l'aide d'un exemple de scénario. Imaginons qu'un message XML au format suivant doit être traité à l'aide d'un pont unidirectionnel XML.

<PaymentHistory xmlns:ns0="http://Integration.PipelineChaining">
  <BaseData>
    <Amount>10.4</Amount> 
    <CurrencyCode>CurrencyCode_0</CurrencyCode> 
    <EntryDate>1999-05-31</EntryDate> 
    <EntryTime>13:20:00.000-05:00</EntryTime> 
    <PaymentMode>Mode_0</PaymentMode> 
    <StatusCode>StatusCode_0</StatusCode> 
    <PurposeCode>PurposeCode_0</PurposeCode> 
  </BaseData>
</PaymentHistory>

La logique métier veut que, si les paiements se font par carte bancaire, le message doit être redirigé vers un service externe unidirectionnel. Si le paiement se fait en espèces, le message doit être redirigé vers un point de terminaison de relais unidirectionnel. Si le mode de paiement ne correspond à aucun des deux précédents, il doit être redirigé vers une file d'attente Service Bus.

Cette étape est simple et rapide. Vous devez définir la destination de routage vers laquelle sera redirigé le message après avoir été traité par le pont. Il existe certaines conditions selon les destinations de routages possibles d'un message provenant d'un pont unidirectionnel XML ou d'un Pont demande-réponse XML. Pour plus d'informations sur ces considérations, consultez les rubriques Constraints on Using an XML One-Way Bridge et Constraints on Using an XML Request Reply Bridge.

La procédure suivante décrit la manière de connecter deux composants à un flux de message.

  1. Créez un projet de service BizTalk, comme indiqué dans Créer un projet de service BizTalk.

  2. Ajoutez des composants au projet de service BizTalk, comme décrit dans plusieurs rubriques de Configure Rich Messaging Endpoints on Azure.

  3. Dans la catégorie Boîte à outils, sous la catégorie Ponts, cliquez sur le composant Connecteur.

  4. Placez le pointeur de votre souris à l'extrémité droite du composant (représentée par un point rouge lorsque vous déplacez le curseur sur le composant) pour la désigner comme source du message. Le pointeur de la souris change pour afficher un petit signe « S », ce qui signifie que ce composant ajoutera la source du message. Cliquez et maintenez la souris sur le point, déplacez-la vers la gauche jusqu'au composant cible (le curseur devrait alors changer à nouveau pour afficher un petit « T » pour représenter la cible), puis relâchez la souris. Les deux composants sont maintenant connectés. Remarque : vous pouvez connecter un composant source avec plusieurs composants cibles.

    noteRemarque
    Pour cette étape, un flux de message droit toujours commencer par un pont unidirectionnel XML ou un Pont demande-réponse XML. Par la suite, vous pouvez rediriger les messages vers n'importe quel composant, du moment que vous respectez les contraintes. Ces contraintes sont répertoriées dans Constraints on Using an XML One-Way Bridge et Constraints on Using an XML Request Reply Bridge.

    En suivant le scénario d'exemple, vous devez connecter le pont unidirectionnel XML à un service externe unidirectionnel, un point de terminaison unidirectionnel et une file d'attente Service Bus.

Hormis la connexion entre deux composants, l'autre aspect important du routage est de rediriger le message d'un composant source vers plusieurs composants de destination, selon votre logique métier.

En suivant le scénario d'exemple expliqué plus haut, les conditions de routage doivent se baser sur le mode de paiement, qui est représenté par l'élément PaymentMode dans le message XML. Pour implémenter cette logique métier dans un projet de service BizTalk, nous devons créer des filtres de routage pour chaque condition. La procédure suivante décrit la marche à suivre.

noteRemarque
Avant de commencer à créer des filtres, assurez-vous d'avoir créé les trois connecteurs (comme décrit dans la procédure précédente). Vous devez également avoir créé une propriété (par exemple :PaymentMode) à l'étape Enrichissement d'un pont pour extraire la valeur d'un élément PaymentMode dans le message XML. Pour obtenir des instructions sur l'extraction d'une valeur d'un élément XML, consultez To extract values from a message body using xpath.

La procédure qui suit décrit la manière de définir les conditions de routage dans un projet de service BizTalk.

  1. Cliquez avec le bouton droit pour rediriger un connecteur entre un pont unidirectionnel XML et le service externe unidirectionnel, puis cliquez sur Propriétés. Dans le volet Propriétés, pour la propriété Condition de filtrage, cliquez sur le bouton de sélection (…) pour ouvrir la boîte de dialogue Configuration du filtre de routage.

  2. Dans la boîte de dialogue, sélectionnez l'option Filtrer, puis spécifiez la chaîne de filtrage suivante :

    PaymentMode='credit_card'
    
    noteRemarque
    Vous devez utiliser la syntaxe SQL 92 standard pour filtrer les expressions.

    Notez que PaymentMode est la propriété que vous devez avoir spécifiée pour l'extraction lors de l'étape d'Enrichissement. La condition de filtrage (indiquée sur le connecteur entre le pont unidirectionnel XML et le service externe unidirectionnel) précise que le message sera envoyé au service externe unidirectionnel, si cette condition est remplie.

    Cliquez sur OK pour enregistrer les modifications et quitter.

  3. De même, pour le connecteur entre le pont unidirectionnel XML et le point de terminaison de relais unidirectionnel, précisez la chaîne de filtrage comme suit :

    PaymentMode='cash'
    
  4. Si la méthode de paiement n'est ni espèce ni carte bancaire, le message doit être redirigé vers une file d'attente Service Bus. Pour appliquer ceci dans votre flux de message, pour le connecteur entre le pont unidirectionnel XML et la file d'attente Service Bus, vous devez ouvrir la boîte de dialogue Configuration du filtre de routage, puis sélectionner Match All. Ce paramètre spécifie que si aucune des conditions n'est remplie, la condition du filtre est respectée et le message est redirigé vers une file d'attente Service Bus.

Dans la section précédente, nous avons défini les filtres des connecteurs de routage afin que les messages appropriés soient redirigés vers les composants correspondants d'un flux de message. Toutefois, l'ordre de routage est tout aussi important. Par exemple, si l'on revient au scénario évoqué plus haut, si un message ayant une propriété PaymentMode définie sur credit_card est redirigé vers une condition de filtre définie sur Match All, celui-ci sera routé vers une file d'attente Service Bus plutôt que vers un point de terminaison de service externe unidirectionnel. Selon votre logique métier, la condition Match All devrait donc être respectée en dernier. Pour ce faire, vous pouvez définir l'ordre dans lequel les conditions de filtre doivent être respectées.

  1. Cliquez avec le bouton droit sur le pont XML (pont unidirectionnel XML ou Pont demande-réponse XML) puis sélectionnez Properties. Dans le volet Propriétés, cliquez sur le bouton de sélection (…) en regard de la propriété Tableau d'ordre de routage.

  2. La boîte de dialogue Tableau d'ordre de routage affiche l'ordre de respect par défaut des filtres de routage. L'ordre par défaut est l'ordre dans lequel vous avez créé les connecteurs de routage. Pour les réorganiser, sélectionnez un filtre de routage, puis utilisez les boutons haut et bas pour changer l'ordre. Répétez cette étape pour tous les filtres jusqu'à obtenir l'ordre de routage souhaité.

  3. Cliquez sur OK pour enregistrer les modifications et quitter.

Vous pourriez vouloir ajouter des en-têtes de message personnalisés ou attribuer des valeurs aux en-têtes standards avant d'expédier des messages vers les récepteurs. C'est possible grâce à l'action de routage. Pour plus d'informations, consultez Route Action.

Pour continuer avec le même exemple, supposons que le message doit être envoyé vers un service externe unidirectionnel avec un en-tête SOAP personnalisé (CustomerName) et une valeur.

  1. Cliquez avec le bouton droit sur le connecteur de routage entre le pont et le service externe unidirectionnel, puis sélectionnez Propriétés. Dans le volet Propriétés, pour la propriété Action de routage, cliquez sur le bouton de sélection (…) pour ouvrir la boîte de dialogue Actions de routage.

  2. Dans la boîte de dialogue Actions de routage, cliquez sur Ajouter pour ouvrir la boîte de dialogue Ajouter une action de routage. Dans la boîte de dialogue Ajouter une action de routage, procédez comme suit :

     

    Section Nom du champ Description

    Propriété (pour la lecture)

    Nom de la propriété

    Répertorie toutes les propriétés ayant été définies dans les deux précédentes étapes d'enrichissement du Pont demande-réponse XML. Lorsque vous sélectionnez une propriété ici, vous spécifiez que sa valeur doit être attribuée à l'en-tête de message correspondant dans le message sortant.

    Expression

    Utilisez cette option pour fournir une expression dont la valeur est transmise à l'en-tête correspondant du message sortant. Vous pouvez également utiliser cette option pour spécifier une valeur constante qui sera attribuée à l'en-tête de message. Voici quelques exemples d'expressions :

    • P1 + P2, où P1 et P2 sont deux propriétés prédéfinies dans une version antérieure des étapes d'enrichissement.

    • « Fabrikam », est une constante de chaîne

      ImportantImportant
      Vous devez toujours spécifier la valeur d'une expression entre guillemets simples.

    ImportantImportant
    Vous pouvez soit choisir l'option Nom de la propriété ou l'option Expression. Ces options sont mutuellement exclusives.

    Destination (pour l'écriture)

    Type

    Spécifie le type du message sortant, dont l'en-tête recevra la valeur spécifiée auparavant.

    Selon la destination du message, les valeurs disponibles dans la liste déroulante peuvent varier.

    • Si vous routez vers un service externe ou un point de terminaison de relais (uni- ou bi- directionnel), les valeurs disponibles dans la liste déroulante sont SOAP et HTTP.

    • Si vous routez vers une file d'attente ou une rubrique, les valeurs disponibles dans la liste déroulante sont SOAP et Explicite.

    • Si vous routez vers une destination FTP, la valeur disponible dans la liste déroulante est FTP.

    • Si vous routez vers une destination SFTP, la valeur disponible dans la liste déroulante est SFTP.

    • Si vous routez vers un objet blob Azure, la valeur disponible dans la liste déroulante est Objet blob Azure.

    Espace de noms d'en-tête SOAP (uniquement si le Type est défini sur SOAP)

    Spécifie l'espace de noms de l'en-tête personnalisé SOAP auquel sera attribuée la valeur.

    ImportantImportant
    Ce champ est grisé si vous avez sélectionné un en-tête standard dans la liste déroulante Identificateur. Vous devez entrer un espace de noms uniquement pour les en-têtes personnalisés SOAP.

    Ce champ est également grisé si le Type est défini sur HTTP ou Explicite.

    Identificateur

    Spécifie le nom de la propriété d'en-tête de message à laquelle sera attribuée la valeur.

    Vous pouvez également spécifier un en-tête personnalisé ici. Pour un type de message SOAP, la liste déroulante répertorie les quatre identificateurs standards. Pour un type de message HTTP, compte tenu du grand nombre d'en-têtes standards, aucun ne figure dans la liste déroulante. Pour les types de messages HTTP et SOAP, vous pouvez répertorier un en-tête personnalisé dont la valeur doit être attribuée à une autre propriété.

    Pour les autres types de destinations comme FTP, SFTP et les objets blob Azure, vous pouvez sélectionner les en-têtes de message dans lesquels la valeur de propriété doit être écrite.

    En prenant toujours le même exemple, vous devez définir l'option CustomerName, car il s'agit du nom de l'en-tête personnalisé à inclure dans le message sortant.

  3. Cliquez sur OK dans la boîte de dialogue Ajouter une action de routage. Les boîtes de dialogue devraient maintenant se présenter comme ceci :

    Actions de routage

    Que signifie cette boîte de dialogue ? Elle indique que le pont utilisera la propriété de valeur P1 (déjà prédéfinie lors des étapes d'enrichissement antérieures) et l'attribuera à l'en-tête personnalisé SOAP CustomerName avec l'espace de noms http://schemas.microsoft.com/integration/promotedpropertiesinfo, puis l'enverra au récepteur du message.

    ImportantImportant
    Si vous créez deux actions de routage sur le même connecteur pointant vers la même destination mais utilisant deux propriétés différentes, par exemple P1 et P2, vous n'obtiendrez pas d'erreur de build. La dernière action de routage remplacera les actions définies précédemment. Dans cet exemple, c'est l'action de routage pour la propriété P2 qui sera respectée.

  4. Pour mettre à jour ou supprimer une action de routage, vous pouvez la sélectionner dans la boîte de dialogue, puis cliquer sur Modifier ou Supprimer. Cliquez sur OK dans la boîte de dialogue Actions de routage, puis sur Enregistrer pour enregistrer les modifications apportées au Configuration de pont.

Voir aussi

Afficher:
© 2014 Microsoft