Étape 7 (sur site) : Création d’une orchestration
Selon le scénario métier, une fois que BizTalk Server a reçu le message de commande client de la file d’attente Service Bus, il doit case activée si la quantité commandée dans le message est supérieure à 100. Si la quantité est supérieure à 100, le message est inséré dans la table SalesOrder . Sinon, le message est envoyé dans un emplacement de fichier partagé. Northwind parvient à mettre en œuvre cette logique métier en créant une orchestration. Cette rubrique fournit des instructions pas à pas pour la créer.
Pour ajouter une orchestration au projet BizTalk Server
Dans le BizTalk Server que vous avez déjà créé, cliquez avec le bouton droit sur le projet, pointez sur Ajouter, puis cliquez sur Nouvel élément.
Dans la boîte de dialogue Nouvel élément , sélectionnez Orchestration BizTalk, entrez le nom de la carte ,
OrderProcessing.odx
puis cliquez sur Ajouter.
Création de messages pour l’orchestration
Le schéma que vous avez généré précédemment décrit les « types » requis pour les messages dans l’orchestration. Un message est généralement une variable, du type défini par le schéma correspondant. Vous devez à présent créer des messages pour l’orchestration, puis les lier aux schémas que vous avez générés précédemment. Vous devez créer les trois messages suivants :
Nom du message | Correspond au schéma |
---|---|
Message1_SO_Inbound | Ce message est un instance du schéma ECommerceSalesOrder.xsd. |
Message2_SO_Inbound | Ce message est une copie du Message1_SO_Inbound. Il est recommandé de créer une copie du message, puis de modifier le nouveau message de manière à garder intact le message d’orgine. Pour plus d’informations, consultez Le message BizTalk Server. |
Message1_SO_Outbound | Ce message est un instance du schéma TableOperations.dbo.SalesOrder (Insert). |
Pour créer les messages
Ouvrez la fenêtre Vue d’orchestration du projet BizTalk, si elle n’est pas déjà ouverte. Pour ce faire, cliquez sur Affichage, pointez sur Autres fenêtres, puis cliquez sur Vue d’orchestration.
Dans la vue Orchestration, cliquez avec le bouton droit sur Messages, puis cliquez sur Nouveau message.
Cliquez avec le bouton droit sur le message nouvellement créé, puis sélectionnez Fenêtre Propriétés.
Dans le volet Propriétés du Message_1, procédez comme suit :
Nom de la propriété Action à effectuer Identificateur Entrez Message1_SO_Inbound
Type de message Dans la liste déroulante, développez Schémas, puis sélectionnez OrderProcessingDemo.ECommerceSalesOrder, où OrderProcessingDemo est le nom de votre projet BizTalk. ECommerceSalesOrder est le schéma du message de commande client reçu de la file d’attente Service Bus. Répétez les étapes pour créer les messages avec les informations suivantes :
Nom du message Effectuer une action Message2_SO_Inbound - Définissez Identificateur sur Message2_SO_Inbound
- Définissez type de message sur OrderProcessingDemo.ECommerceSalesOrderMessage1_SO_Outbound - Définissez Identificateur sur Message1_SO_Outound
- Définissez type de message sur OrderProcessingDemo.TableOperation_dbo_SalesOrder.Insert
Ajout de formes à l’orchestration
Les formes d’orchestration définissent le flux d’une application BizTalk Server. Dans cette section, vous allez ajouter les formes requises à l’orchestration.
Pour ajouter des formes à l'orchestration
Pour commencer, vous devez ajouter une forme Recevoir . Cette forme reçoit le message de commande client entrant en provenance de la file d’attente Service Bus. Définissez les propriétés suivantes sur la forme Réception.
Définissez Activer sur True.
Définissez Messagesur Message1_SO_Inbound.
Définissez Nom sur ReceiveOrder.
Comme indiqué précédemment, vous devez créer une copie du message de commande client d’origine reçu dans l’orchestration.
Glisser-déplacer une forme De message de construction sous la forme ReceiveOrder . Étant donné que vous utilisez cette forme pour construire un message de type Message2_SO_Inbound, définissez la propriété Messages construits sur Message2_SO_Inbound.
Ajoutez une forme d’affectation de message dans la forme Construire un message . Double-cliquez sur la forme pour ouvrir l’Éditeur d’expression, puis ajoutez les informations suivantes :
Message2_SO_Inbound = Message1_SO_Inbound; //copy the message Message2_SO_Inbound(*) = Message1_SO_Inbound(*); //copy the context properties on the message
Cliquez sur OK.
D’après le scénario d’entreprise, le message doit être envoyé vers différentes destinations en fonction de la quantité d’articles commandés. Aussi, vous devez à présent extraire la valeur de quantité du message de commande client entrant.
L’élément Quantity dans le message entrant (ECommerceSalesOrder.xsd) contient la valeur de la quantité commandée. Vous devez promouvoir cette propriété de sorte que l’élément puisse être utilisé dans les expressions au sein de l’orchestration. Pour promouvoir la propriété, ouvrez le schéma ECommerceSalesOrder.xsd , cliquez avec le bouton droit sur Quantity, pointez sur Promouvoir, puis cliquez sur Promotions rapides.
Créez une variable afin de stocker la valeur de quantité. Pour créer une variable, dans la vue Orchestration, cliquez avec le bouton droit sur Variables, puis cliquez sur Nouvelle variable. Définissez les propriétés suivantes de la variable :
Nom de la propriété Valeur Identificateur Entrez quantityOrdered
Type Sélectionnez Int32. Vous devez maintenant affecter la valeur de l’élément Quantity à la variable quantityOrdered . Faites glisser-déplacer un éditeur d’expressions après la forme Construire un message . Ouvrez l’Éditeur, puis entrez l’expression suivante :
quantityOrdered = Message2_SO_Inbound.Quantity;
Cliquez sur OK.
Après avoir extrait la quantité commandée, vous devez maintenant créer un bloc de décision dans lequel vous disposez deux chemins d’accès différents que doit emprunter le flux de message. Vous créez le bloc de décision dans une orchestration en ajoutant une forme Décider .
Faites glisser et déposez une forme Décider après la forme de l’Éditeur d’expressions .
Sélectionnez la forme Rule_1 et, dans la fenêtre Propriétés , spécifiez les éléments suivants :
Nom de la propriété Valeur Identificateur Entrez Yes
. Note: L’autre itinéraire est nommé Par défaut Else.Expression Entrez quantityOrdered > 100
.Vous avez maintenant deux itinéraires possibles. Si la valeur dans la variable quantityOrdered est supérieure à 100, le message prend l’itinéraire Oui . Sinon, il prend la route Else . Vous devez maintenant définir les actions à effectuer au sein de chaque itinéraire.
D’après le scénario d’entreprise, si la quantité commandée est supérieure à 100, le message doit être inséré dans la table SalesOrder. Ainsi, dans l’itinéraire Oui , vous devez transformer le schéma ECommerceSalesOrder.xsd en schéma TableOperations.SalesOrder.Insert. Vous avez créé le schéma d’insertion dans la rubrique Étape 5 (Sur site) : générer le schéma pour l’insertion d’un message dans la table SalesOrder. Après avoir transformé le schéma, vous devez envoyer le message dans la table de base de données SQL Server.
Dans l’itinéraire Oui , faites glisser et déposez une forme Construire un message . Définissez la propriété Messages Construits pour la forme sur Message1_SO_Outbound.
Dans la forme Construire un message , ajoutez une forme Transformer . Double-cliquez sur la forme pour ouvrir la boîte de dialogue Transformer la configuration . Effectuez les actions suivantes :
Sélectionnez l’option Carte existante .
Dans la liste déroulante Nom de la carte complète , sélectionnez OrderProcessingDemo.SalesOrder_SQL.
Pour Source, sélectionnez Message2_SO_Inbound.
Pour Destination, sélectionnez Message1_SO_Outound.
Après la forme Construire un message , faites glisser et déposez une forme Envoyer et définissez la propriété Message de la forme sur
Message1_SO_Outbound
.
D’après le scénario d’entreprise, si la quantité commandée est inférieure à 100, le message doit être envoyé dans un emplacement de fichier partagé. Ainsi, dans l’itinéraire Else , vous devez ajouter une forme d’envoi.
Dans l’itinéraire Else , faites glisser et déposez une forme Envoyer, puis définissez la propriété Message de la forme sur
Message2_SO_Inbound
.Notes
Vous définissez la propriété Message sur Message2_SO_Inbound, car le même message reçu de la file d’attente Service Bus est envoyé dans l’emplacement de fichier, sans aucun traitement. Message2_SO_Inbound représente le message reçu par la file d’attente Service Bus.
ajout des ports à l'orchestration
Pour une orchestration, les ports représentent les intermédiaires d’entrée et de sortie d’un message. Les messages sont consommés par une orchestration à l’aide d’un port de réception, puis sont renvoyés à l’aide d’un port d’envoi. Dans le scénario d’entreprise, un message est reçu d’un intermédiaire (une file d’attente Service Bus), puis renvoyé vers deux emplacements différents (une base de données SQL Server ou un emplacement de partage de fichiers) en fonction du traitement du message. Ainsi, vous devez créer un port de réception et deux ports d’envoi dans le cadre de l’orchestration.
Pour ajouter des ports
Faites glisser et déposez une forme de port dans le volet Port Surface de l’orchestration Designer pour lancer l’Assistant Configuration du port. Sur la page d’accueil, cliquez sur Suivant.
Dans la page Propriétés du port, nommez le port,
ReceiveSO
puis cliquez sur Suivant.Dans la page Sélectionner un type de port , sélectionnez l’option Créer un type de port , sélectionnez le modèle de communication unidirectionnel , laissez la valeur par défaut pour les restrictions d’accès, puis cliquez sur Suivant.
Dans la page Liaison de port, pour la direction du port, sélectionnez Je vais toujours recevoir des messages sur ce port, laissez le port enchérissant à la valeur par défaut, puis cliquez sur Suivant.
Dans la dernière page, cliquez sur Terminer.
Répétez les étapes pour créer les deux ports d’envoi, en spécifiant les valeurs suivantes.
Nom du port Propriétés SendToSQL - Définissez Nom sur SendToSQL
- Sélectionnez Créer un type de port.
- Définir le modèle de communication sur Unidirectionnel
- Définissez le sens du port sur Je vais toujours envoyer des messages sur ce portSendToFile - Définissez Nom sur SendToFile
- Sélectionnez Créer un type de port.
- Définir le modèle de communication sur Unidirectionnel
- Définissez le sens du port sur Je vais toujours envoyer des messages sur ce port
Connexion des ports et des formes de message
Pour terminer l’orchestration, vous devez à présent connecter les ports et les formes de message. L’orchestration démarre lorsque le message est reçu par la forme ReceiveOrder et l’orchestration se termine lorsque le message est envoyé par les deux formes d’envoi. Vous devez utiliser ce critère pour connecter les ports et les formes de message.
Pour connecter les ports aux formes de message
Connectez le port de réception ReceiveSO à la forme ReceiveOrder .
Connectez la forme Envoyer sous l’itinéraire Oui au port d’envoi SendToSQL . Cela indique que si un message entre dans cet itinéraire (quantityOrdered> 100), il est envoyé à la table SalesOrder de la base de données SQL Server.
Connectez la forme Envoyer sous l’itinéraire Else au port d’envoi SendToFile . Cela indique que si un message entre dans cet itinéraire (quantityOrdered<= 100), il est envoyé à un emplacement de fichier spécifié.
L’orchestration doit ressembler à ceci :
Voir aussi
Tutoriel 4 : Création d’une application hybride à l’aide de BizTalk Server 2013