PartyResolution (exemple BizTalk Server)
L'exemple PartyResolution illustre l'utilisation des orchestrations BizTalk avec la résolution de tiers pour acheminer les messages vers l'un des deux destinataires possibles.
Fonctions de l'exemple
Cet exemple exécute plusieurs orchestrations qui illustrent les rôles suivants :
orchestration de l'acheteur, qui permet de lancer le traitement des messages relatifs aux bons de commande ;
orchestration du fournisseur, qui illustre la résolution de tiers entrants et sortants ;
orchestrations ShipmentAgency1 et ShipmentAgency2, qui répondent à l'orchestration du fournisseur sur la base de l'adresse de livraison figurant sur le bon de commande.
Comment cet exemple est conçu et pourquoi
La résolution de tiers fait référence au processus qui consiste à déterminer l'expéditeur (tiers) d'un message. Par exemple, vous pouvez autoriser uniquement les tiers connus à envoyer un message. La résolution de tiers sortants est le processus qui consiste à déterminer les tiers destinataires d'un message.
Outre la résolution de tiers, cet exemple présente l'implémentation et l'utilisation des rôles. Par exemple, pour traiter la livraison d'un produit, vous créez un port d'envoi auquel vous envoyez un document demandant à un expéditeur de livrer le produit. Si vous avez le choix entre plusieurs expéditeurs, vous pouvez créer un rôle Expéditeur dans votre orchestration, plutôt que de créer plusieurs ports d'envoi dont la seule différence réside dans l'URL de l'expéditeur. Vous pouvez ensuite envoyer des messages relatifs à la livraison du produit au rôle Expéditeur. Vous créez des tiers, puis associez un port d'envoi à chaque tiers et certificat de tiers. Pour terminer, vous inscrivez chaque tiers au rôle Expéditeur pour l'activer. Dans l'orchestration, vous pouvez ensuite spécifier dynamiquement l'expéditeur auquel vous envoyez le message.
Cet exemple illustre également l'utilisation de la corrélation afin de faire correspondre le message entrant à l'instance d'orchestration adéquate.
Les flux de processus d'entreprise pour l'acheteur, le fournisseur et les expéditeurs sont les suivants :
Flux de processus d'entreprise de l'acheteur :
Recevez le message de bon de commande envoyé par le service interne au format .xml.
Envoyez le message de bon de commande au fournisseur.
Flux de processus d'entreprise du fournisseur :
Résolvez le tiers (résolution de tiers entrant) pour mettre à jour le tiers source sur la base d'un certificat de signature.
Recevez un message d'activation (bon de commande) de l'acheteur.
Envoyez un accusé de réception de bon de commande à l'acheteur.
Vérifiez le pays ou la région de la livraison.
Résolvez le tiers sortant pour rechercher l'agence d'expédition à utiliser. Aux États-Unis, l'agence d'expédition est ShipmentAgency2. Au Canada, l'agence d'expédition est ShipmentAgency1.
Envoyez un message de demande d'ordre de livraison à l'agence d'expédition appropriée.
Recevez l'accusé de réception d'ordre de livraison provenant de l'agence d'expédition appropriée.
Envoyez un message d'avis d'expédition à l'agence d'expédition appropriée.
Recevez un accusé de réception d'avis d'expédition provenant de l'agence d'expédition appropriée.
Envoyez un message d'accusé de réception du bon de commande à l'acheteur.
Flux de processus d'entreprise de l'agence d'expédition (identique pour les deux agences d'expédition) :
Recevez un message de demande d'ordre de livraison provenant du fournisseur.
Générez et envoyez un message d'accusé de réception du message de demande d'ordre de livraison.
Recevez un message d'avis d'expédition du fournisseur.
Générez et envoyez un message d'accusé de réception du message d'avis d'expédition.
Les énoncés suivants décrivent la conception de cet exemple :
L'orchestration BuyerProcess.odx reçoit un message et utilise le pipeline personnalisé MimePartyResSendPipeline pour l'encoder et l'envoyer au fournisseur. Cette opération est effectuée à l'aide du Concepteur de pipeline pour générer et déployer un pipeline d'envoi personnalisé. Avant d’envoyer le message au fournisseur, le message est signé numériquement avec la clé privée de l’acheteur, qui est spécifiée dans les propriétés du groupe BizTalk dans la console Administration BizTalk Server.
L'orchestration SupplierProcess.odx utilise le pipeline personnalisé MimePartyResReceivePipeline, qui inclut le Composant Décodeur MIME/SMIME, pour décoder le message et procéder à une résolution de tiers entrant à l'aide de la clé publique de l'acheteur pour résoudre et valider l'identité de celui-ci. Cette opération est effectuée en générant et en déployant un pipeline de réception personnalisé.
L'orchestration du fournisseur lance ensuite POCorrelationSets, qui se base sur la propriété promue PONo. Celle-ci permettra de faire correspondre les messages entrants et sortants avec cette instance d'orchestration ultérieurement, car plusieurs actions d'envoi et de réception transitent par l'orchestration entière.
L'orchestration du fournisseur implémente les liens de rôle pour traiter la résolution des tiers entrants et sortants. Elle utilise deux types de liens de rôle :
Type de lien de rôle Buyer_Supplier
Type de lien de rôle Supplier_Shipment
Dans la forme de lien de rôle Buyer_Supplier, le fournisseur est dans le rôle Fournisseur et l’acheteur est dans le rôle Consommateur, car le fournisseur reçoit le premier message de l’acheteur. Lorsque l'orchestration du fournisseur envoie l'accusé de réception au rôle de l'acheteur, un port d'envoi est associé à l'acheteur et le message est envoyé à celui-ci via le port d'envoi spécifié. Pour rechercher le port d’envoi, cliquez avec le bouton droit sur BuyerAgency dans la console d’administration BizTalk Server, puis cliquez sur Propriétés. Le port d’envoi s’affiche sous Ports d’envoi.
L'orchestration utilise ensuite l'expression suivante pour renvoyer les informations du partenaire, puis génère un fichier XML dans un dossier via un appel à un assembly externe nommé CheckPartyName.
Buyer_Supplier(Microsoft.XLANGs.BaseTypes.SourceParty)
Dans la forme de lien de rôle Supplier_Shipment, le rôle Expédition contient un port d’envoi avec deux opérations qui sont utilisées pour envoyer le message du fournisseur à l’agence d’expédition appropriée en fonction de la partie de destination. Le rôle Fournisseur inclut un port de réception contenant deux opérations permettant de recevoir la réponse de l'agence d'expédition. La corrélation, basée sur la propriété PONo, est utilisée lors de l'envoi et de la réception de ces messages.
Notes
Lorsque vous lierez l'orchestration du fournisseur, vous remarquerez que seul un port d'envoi et deux ports de réception doivent être liés. Ceci s'explique par le fait que les ports d'envoi vers les tiers de destination sont déjà liés aux tiers. De plus, l’un des ports de réception de l’orchestration contient deux opérations de réception. Par conséquent, même si vous voyez trois formes de réception , seules deux d’entre elles doivent être liées.
L'orchestration du fournisseur utilise la première ligne du code suivant pour obtenir l'agence d'expédition en appelant un assembly externe nommé QueryShipmentCatalogComponent. Elle utilise ensuite la deuxième ligne pour définir le tiers de destination pour le rôle Livraison.
strShipmentName= objQueryShipmentCatalog.GetShipmentDetails(POMessage.MessagePart_1.POHeader.Address.Country); Supplier_Shipment(Microsoft.XLANGs.BaseTypes.DestinationParty) = new Microsoft.XLANGs.BaseTypes.Party(strShipmentName,"OrganizationName");
Shipper1Process.odx et Shipper2Process.odx sont générés pour recevoir le bordereau de livraison et l'avis d'expédition de SupplierProcess.odx, ainsi que pour renvoyer la réponse à SupplierProcess.odx. Dans les deux orchestrations d'expéditeur, la corrélation est utilisée et son type est basé sur la propriété promue PONo.
Accès à l'exemple
<Chemin d’accès> d’exemples\Orchestrations\PartyResolution\
Le tableau suivant présente les fichiers de cet exemple et décrit leur fonction.
Fichier(s) | Description |
---|---|
BuyerBinding.xml, ShippingAgency1Binding.xml, ShippingAgency2Binding.xml, SupplierBinding.xml | Utilisé pour une configuration automatisée, telle que la liaison de port. |
Cleanup.bat | Permet d'annuler le déploiement des assemblys et de supprimer ceux-ci du Global Assembly Cache. Supprime les ports d'envoi et de réception. Supprime les répertoires virtuels Microsoft Internet Information Services (IIS) le cas échéant. |
PartyResolution.sln | Fichier de solution qui inclut tous les projets des sous-dossiers. |
PurchaseOrder.xml | Exemple d'entrée de bon de commande. |
Setup.bat | Il permet de créer et d'initialiser des parties de cet exemple. |
Dans le dossier \Buyer : Buyer.btproj, BuyerProcess.odx |
Projet et orchestration BizTalk qui permettent d'implémenter l'acheteur dans cet exemple. |
Dans le dossier \Catalog : Catalog.xml |
Permet de déterminer l'agence d'expédition selon la destination de livraison spécifiée dans le bon de commande. |
Dans le dossier \CheckPartyName : AssemblyInfo.cs, CheckPartyName.csproj, Class1.cs |
Projet et fichiers sources Microsoft Visual C# pour l'application CheckPartyName permettant d'accéder aux propriétés du tiers source. |
Dans le dossier \FilePolling : App.ico, AssemblyInfo.cs, FilePolling.cs, FilePolling.csproj, FilePolling.resx, FilePolling.sln, |
Solution, projet et source Visual c#, ainsi que les fichiers associés pour l'application FilePolling. Cette application permet de rester informé sur l'état de progression de ce scénario automatisé. |
Dans le dossier \Pipeline\projectschema : MimePartyResReceivePipeline.btp, MimePartyResSendPipeline.btp |
BizTalk Server fichiers de pipeline utilisés par les différents rôles de cet exemple. |
Dans le dossier \QueryShipmentCatalogComponent : AssemblyInfo.cs, QueryShipmentCatalog.cs, QueryShipmentCatalogComponent.csproj |
Projet et fichiers sources Visual C# pour le composant QueryShipmentCatalog permettant d'accéder au catalogue de livraison défini dans le fichier Catalog.xml. Le composant QueryShipmentCatalog détermine l'agence d'expédition utilisée par le fournisseur. Il utilise les données du fichier Catalog.xml pour déterminer l'expéditeur le plus approprié en fonction de sa situation géographique. |
Dans le dossier \Schemas : PODeliveryReceipt.xsd, POPropertySchema.xsd, PurchaseOrder.xsd, PurchaseOrderAcknowledgement.xsd, Schemas.btproj, ShipmentAdvice.xsd, ShipmentAdviceAcknowledgement.xsd, ShipmentOrderAcknowledgement.xsd, ShipmentOrderRequest.xsd |
Schémas utilisés par les divers rôles de cet exemple. |
Dans le dossier \ShipmentAgency1 : ShipmentAdviceAck.btm, ShipmentAgency1.btproj, ShipmentOrderAck.btm, Shipper1Process.odx |
Projet, orchestration et mappages BizTalk qui permettent d'implémenter ShipmentAgency1 dans cet exemple. |
Dans le dossier \ShipmentAgency2 : ShipmentAdviceAck.btm, ShipmentAgency2.btproj, ShipmentOrderAck.btm, Shipper2Process.odx |
Projet, orchestration et mappages BizTalk qui permettent d'implémenter ShipmentAgency2 dans cet exemple. |
Dans le dossier \Supplier : PO_POAck.btm, PO_ShipmentOrderRequest.btm, ShipmentAdviceAck_PODeliveryReceipt.btm, ShipmentOrder_ShipmentAdvice.btm, Supplier.btproj, SupplierProcess.odx |
Projet, orchestration et mappages BizTalk qui permettent d'implémenter le fournisseur dans cet exemple. |
Génération et initialisation de cet exemple
Notes
Avant de générer et d'initialiser l'exemple, vous devez veiller à ce que l'hôte BizTalk de type In-Process par défaut soit configuré comme étant approuvé par authentification. Pour plus d’informations, consultez recommandations de sécurité du runtime BizTalk Server.
Le composant de pipeline MIME n'est pas pris en charge dans une instance d'hôte 64 bits. L'hôte associé au gestionnaire d'envoi et de réception pour l'adaptateur de FILE doit être configuré en tant qu'hôte 32 bits uniquement. Pour plus d’informations à ce sujet, consultez Comment modifier les propriétés de l’hôte. Si vous disposez déjà d’un hôte 32 bits uniquement configuré sur le système et que vous souhaitez l’utiliser, consultez Configuration de l’adaptateur de fichier pour obtenir des instructions sur la configuration du ou des hôtes associés au gestionnaire d’envoi et de réception de l’adaptateur de fichier.
Le certificat mentionné dans cette section doit être ajouté au magasin personnel du compte de connexion configuré pour l'instance d'hôte BizTalk de type In-Process par défaut qui signera les messages.
Par défaut, le fichier setup.bat mentionné ci-dessous installe l’exemple Résolution de partie dans l’application BizTalk Server par défaut. Vous pouvez modifier le fichier setup.bat pour déployer l’exemple dans une nouvelle application BizTalk Server en ouvrant le fichier setup.bat et en remplaçant la section précédée de l’instruction @ECHO Deploy Assemblies...
par ce qui suit :
@ECHO Deploy Assemblies...
btstask AddApp -ApplicationName:PartyResolutionSample -Description:"Party Resolution Orchestration sample from the SDK"
btstask AddResource -ApplicationName:PartyResolutionSample -Type:System.BizTalk:BizTalkAssembly -Source:Schemas\bin\Release\Schemas.dll -Options:GacOnAdd
btstask AddResource -ApplicationName:PartyResolutionSample -Type:System.BizTalk:BizTalkAssembly -Source:Pipeline\projectschema\bin\Release\ProjectSchema.dll -Options:GacOnAdd
btstask AddResource -ApplicationName:PartyResolutionSample -Type:System.BizTalk:BizTalkAssembly -Source:Buyer\bin\Release\Buyer.dll -Options:GacOnAdd
btstask ImportBindings -ApplicationName:PartyResolutionSample -Source:%BuyerBindingFileName%
btstask AddResource -ApplicationName:PartyResolutionSample -Type:System.BizTalk:BizTalkAssembly -Source:ShipmentAgency1\bin\Release\ShipmentAgency1.dll -Options:GacOnAdd
btstask ImportBindings -ApplicationName:PartyResolutionSample -Source:%ShipmentAgency1BindingFileName%
btstask AddResource -ApplicationName:PartyResolutionSample -Type:System.BizTalk:BizTalkAssembly -Source:ShipmentAgency2\bin\Release\ShipmentAgency2.dll -Options:GacOnAdd
btstask ImportBindings -ApplicationName:PartyResolutionSample -Source:%ShipmentAgency2BindingFileName%
btstask AddResource -ApplicationName:PartyResolutionSample -Type:System.BizTalk:BizTalkAssembly -Source:Supplier\bin\Release\Supplier.dll -Options:GacOnAdd
btstask ImportBindings -ApplicationName:PartyResolutionSample -Source:%SupplierBindingFileName%
Pour créer et initialiser l'exemple PartyResolution
Dans une fenêtre de commande, accédez au dossier suivant :
<Chemin d’accès> des exemples\Orchestrations\PartyResolution
Exécutez le fichier Setup.bat, qui effectue les actions suivantes :
Compile les projets Visual Studio pour cet exemple et déploie les assemblys résultants.
Crée et lie les ports d’envoi et de réception BizTalk Server.
Au cours de l'installation, vous pouvez recevoir les avertissements suivants ou des avertissements similaires. Vous pouvez les ignorer en toute sécurité.
"C:\Program Files\Microsoft BizTalk Server <version>\SDK\Samples\Orchestrations\PartyResolution\PartyResolution.sln" (Buildtarget) (1) -> "C:\Program Files\Microsoft BizTalk Server <version>\SDK\Samples\Orchestrations\PartyResolution\Supplier\Supplier.btproj" (default target) (5) -> "C:\Program Files\Microsoft BizTalk Server <version>\SDK\Samples\Orchestrations\PartyResolution\Supplier\Supplier.btproj" (default target) (5:2) -> (CompileODX target) -> C:\Program Files\Microsoft BizTalk Server <version>\SDK\Samples\Orchestrations\PartyResolution\Supplier\SupplierProcess.odx(831,13): warning X4014: convoy processing will not occur -- check your protocol if you were expecting it [C:\ProgramFiles\Microsoft BizTalk Server <version>\SDK\Samples\Orchestrations\PartyResolution\Supplier\Supplier.btproj] C:\Program Files\Microsoft BizTalk Server <version>\SDK\Samples\Orchestrations\PartyResolution\Supplier\SupplierProcess.odx(841,13): warning X4014: convoy processing will not occur -- check your protocol if you were expecting it [C:\ProgramFiles\Microsoft BizTalk Server <version>\SDK\Samples\Orchestrations\PartyResolution\Supplier\Supplier.btproj]
Démarrez l’invite de commandes Visual Studio.
Tapez les commandes suivantes pour installer les assemblys dans le Global Assembly Cache :
gacutil -i \Program Files (x86)\Microsoft BizTalk Server <VERSION>SDK\Samples\Orchestrations\PartyResolution\Schemas\bin\Release\schemas.dll
gacutil -i \Program Files (x86)\Microsoft BizTalk Server <VERSION>SDK\Samples\Orchestrations\PartyResolution\Pipeline\projectschema\bin\Release\ProjectSchema.dll
gacutil -i \Program Files (x86)\Microsoft BizTalk Server <VERSION>SDK\Samples\Orchestrations\PartyResolution\Buyer\bin\Release\Buyer.dll
gacutil -i \Program Files (x86)\Microsoft BizTalk Server <VERSION>SDK\Samples\Orchestrations\PartyResolution\ShipmentAgency1\bin\Release\ShipmentAgency1.dll
gacutil -i \Program Files (x86)\Microsoft BizTalk Server <VERSION>SDK\Samples\Orchestrations\PartyResolution\ShipmentAgency2\bin\Release\ShipmentAgency2.dll
gacutil -i \Program Files (x86)\Microsoft BizTalk Server <VERSION>SDK\Samples\Orchestrations\PartyResolution\Supplier\bin\Release\Supplier.dll
Obtenez un certificat de messagerie sécurisé auprès d'une autorité de certification (autorité tierce ou autorité de votre organisation). Une fois le certificat obtenu, exportez les clés publique et privée.
Pour importer la clé privée dans le magasin personnel du compte de connexion de l'instance d'hôte et la clé publique dans le magasin Autres personnes de l'ordinateur local, procédez comme suit :
Dans BizTalk Server console d’administration, développez le groupe BizTalk, puis paramètres de la plateforme.
Cliquez sur Instances d’hôte et recherchez le compte d’ouverture de session indiqué pour le instance hôte In-Process par défaut. Dans une installation par défaut, l'hôte de type In-Process par défaut doit être nommé BizTalkServerApplication.
Cliquez sur Démarrer, puis sur Exécuter. Dans la zone Exécuter , tapez mmc.exe, puis cliquez sur OK. Entrez le mot de passe correct du compte de connexion de l'instance d'hôte pour ouvrir la console MMC (Microsoft Management Console) sous ce compte.
Dans le menu Fichier , cliquez sur Ajouter/Supprimer un composant logiciel enfichable.
Dans la boîte de dialogue Ajouter ou supprimer des composants logiciels enfichables , sélectionnez Certificats, puis cliquez sur Ajouter.
Dans la boîte de dialogue Composant logiciel enfichable Certificats , sélectionnez Mon compte d’utilisateur, puis cliquez sur Terminer.
Dans la boîte de dialogue Ajouter ou supprimer des composants logiciels enfichables , sélectionnez Certificats, puis cliquez sur Ajouter.
Dans la boîte de dialogue Composant logiciel enfichable Certificats, sélectionnez Compte d'ordinateur, puis cliquez sur Suivant.
Dans la boîte de dialogue Sélectionner un ordinateur , sélectionnez Ordinateur local, puis cliquez sur Terminer.
Dans la boîte de dialogue Ajouter ou supprimer des composants logiciels enfichables , cliquez sur OK.
Développez le nœud Certificats - Utilisateur actuel , puis Développez Personnel. Cliquez avec le bouton droit sur Certificats, cliquez sur Toutes les tâches, puis cliquez sur Importer.
Importez la clé privée et indiquez un mot de passe dans l'Assistant.
Développez le nœud Certificats (ordinateur local), puis développez Autres Personnes. Cliquez avec le bouton droit sur Certificats, cliquez sur Toutes les tâches, puis cliquez sur Importer.
Importez la clé publique.
Dans la console Administration BizTalk Server, cliquez avec le bouton droit sur le nœud Groupe BizTalk, puis cliquez sur Propriétés. Dans la boîte de dialogue Groupe BizTalk - Propriétés du groupe , sélectionnez Certificat.
Dans la boîte de dialogue Certificat , cliquez sur Parcourir et sélectionnez la clé privée que vous venez d’importer. Le certificat spécifié ici permet de signer le message sortant. Cliquez sur OK.
Pour mettre à jour le tiers BuyerAgency dans cet exemple, procédez comme suit :
Dans la console Administration BizTalk Server, sélectionnez Parties.
Cliquez avec le bouton droit sur BuyerAgency , puis cliquez sur Propriétés. Dans la boîte de dialogue BuyerAgency - Party Properties ,sélectionnez Général.
Dans la section Alias de la boîte de dialogue, ajoutez un nouvel alias avec le nom et le qualificateur définis sur WindowsUser. Définissez la valeur sur un nom d’utilisateur <au format domaine\nom> d’utilisateur (par exemple, SOMEDOMAIN\someuser).
Sélectionnez Certificat , puis cliquez sur Parcourir et sélectionnez la clé publique que vous venez d’importer. Le certificat spécifié ici permet de valider l'identité de l'expéditeur du message entrant. Cliquez sur OK.
Dans la console d’administration BizTalk Server, développez Paramètres de la plateforme, puis sélectionnez Hôtes.
Cliquez avec le bouton droit sur BizTalkServerApplication , puis cliquez sur Propriétés. Dans la boîte de dialogue BizTalkServerApplication - Propriétés de l’hôte , sélectionnez Certificats.
Cliquez sur Parcourir et sélectionnez la clé privée que vous venez d’importer. Le certificat spécifié ici permet de déchiffrer les messages entrants. Cliquez sur OK.
Dans la console d’administration BizTalk Server, développez Paramètres de la plateforme, puis sélectionnez Instances d’hôte.
Cliquez avec le bouton droit sur BizTalkServerApplication , puis cliquez sur Redémarrer.
Exécution de cet exemple
Pour exécuter l'exemple PartyResolution
Exécutez FilePolling.exe à partir du dossier suivant :
<Chemin d’accès> d’exemples\Orchestrations\PartyResolution\FilePolling\bin\Debug
Cliquez sur Démarrer l’interrogation.
Collez une copie du fichier d'instance de bon de commande fourni, PurchaseOrder.xml, dans le dossier suivant :
<Chemin d’accès> d’exemples\Orchestrations\PartyResolution\FileDrop\PurchaseOrder
Observez la séquence de messages fournis sous forme de MessageBoxes qui vous informent de la progression de l'exemple :
Lorsque le fournisseur reçoit le bon de commande de l'acheteur.
Lorsqu'une demande d'ordre de livraison est reçue de l'agence d'expédition 1 ou 2.
Lorsqu'un avis d'expédition est reçu par l'agence d'expédition 1 ou 2.
Lorsque le fournisseur envoie l'accusé de réception du bon de commande à l'acheteur.
Cliquez sur Quitter pour fermer le programme d’interrogation de fichiers.
Notes
Modifiez la balise Pays dans PurchaseOrder.xml sur « FR », puis répétez les étapes 2 et 3. Vous noterez que l'ordre de livraison est désormais envoyé à l'agence d'expédition 2.
Désinstallation de l'exemple
Pour désinstaller l'exemple PartyResolution
À une invite de commandes Visual Studio, remplacez répertoire (cd) par <Samples Path>\Orchestrations\ PartyResolution\.
Exécutez Cleanup.bat.
Voir aussi
Composant de pipeline Résolution du tiers
Configuration du composant de pipeline Encodeur MIME/SMIME
Guide pratique pour configurer le composant de pipeline de décodeur MIME-SMIME
Orchestrations (dossier d’exemples BizTalk Server)