Importation BPEL (exemple BizTalk Server)
L'exemple Importation BPEL montre comment créer une orchestration à partir d'une description de processus Business Process Execution Language (BPEL) et des artefacts qui y sont associés.
Fonctions de l'exemple
Wide World Importers est une société de transport qui offre aux détaillants des services d'expédition automatisés. Plus précisément, Wide World Importers permet aux détaillants d'effectuer les opérations suivantes :
commander des expéditions de commande ;
suivre les expéditions ;
vérifier les expéditions ;
vérifier la facturation et le paiement des expéditions.
Si la disponibilité de ces services peut être représentée à l'aide d'un document WSDL (Web Services Description Language), un document BPEL décrit la manière classique dont des fabricant de produits sont supposés faire appel aux services et comment ils peuvent attendre des réponses de Wide World Importers.
Lorsque Northwind Traders fait appel à Wide World Importers pour gérer ses expéditions, il reçoit un fichier BPEL et des artefacts associés décrivant l'ensemble de l'interaction. À l’aide du fichier BPEL, Northwind Traders crée une application BizTalk Server (BPELShipping) pour traiter automatiquement les commandes via Wide World Importers.
Cet exemple vous guide tout au long de ce scénario dans lequel l'application BPELShipping :
reçoit une commande du système de commande client de Northwind Traders :
envoie une demande d'expédition à Wide World Importers et demande confirmation ;
reçoit une confirmation de demande d'expédition de Wide World Importers ;
reçoit une notification d'enlèvement de Wide World Importers ;
reçoit des messages relatifs à l'état de l'expédition jusqu'au moment où le client reçoit la livraison ;
reçoit une facture de Wide World Importers ;
répond à Wide World Importers par un accusé de réception de la facture ;
reçoit une confirmation de paiement de Wide World Importers ;
envoie une confirmation de livraison finale au système de commande.
Une application BizTalk distincte (ShipperProcess) permet de simuler l'activité de Wide World Importers en relation avec cet exemple. L'application BPELShipping communique avec ShipperProcess à l'aide du transport FILE qui utilise des emplacements de système de fichiers communs pour la communication.
Comment cet exemple est conçu et pourquoi
BPEL pour services Web est un langage basé sur XML destiné à décrire le processus d'entreprise de façon à ce qu'il soit aisément partageable entre des sociétés différentes désireuses de commercer entre elles à l'aide de services Web. BPEL décrit comment gérer le processus d'entreprise au niveau du protocole d'entreprise, mais ne décrit pas le processus interne d'une société, par exemple, les étapes de traitement d'un bon de commande reçu d'un partenaire. Cette exemple est conçu pour montrer comment importer des fichiers BPEL et les fichiers WSDL correspondants, les convertir en une orchestration, puis commencer à exécuter le processus d'entreprise avec le partenaire.
La section ci-après décrit pas à pas les procédures d'importation des fichiers BPEL et WSDL et de conversion de ces derniers en une orchestration permettant d'interagir avec une application BizTalk prégénérée (ShipperProcess). Si vous suivez ces étapes, vous ne devez pas exécuter la procédure intitulée « Pour créer et initialiser l'application BPELShipping ».
Pour importer à partir de BPEL et créer une solution de travail
Dans Microsoft Visual Studio, dans le menu Fichier , cliquez sur Nouveau, puis sur Projet.
Notes
Avant d'exécuter cette procédure, vous devez configurer l'application ShipperProcess pour créer les processus et projets de schéma correspondants.
Dans la boîte de dialogue Nouveau projet, dans le volet Types de projets, sélectionnez BizTalk (Projets). Dans le volet Modèles, sélectionnez Projet d’importation BPEL BizTalk (Server).
Dans la zone Nom , entrez BPELShipping.
Notes
Si vous utilisez un autre nom, vous pouvez rencontrer des problèmes avec l'étape de liaison finale.
Sélectionnez un emplacement pour le projet, puis cliquez sur OK pour démarrer l’Assistant Importation BPEL.
Sur la page d’accueil, cliquez sur Suivant.
Dans la page Sélectionner les fichiers BPEL, WSDL et XSD , cliquez sur Parcourir.
Sélectionnez tous les fichiers dans le < dossier Samples Path>\Orchestrations\BPELImport\BPELSource, cliquez sur Ouvrir, puis sur Suivant.
Notes
Au cours de cette étape, vous sélectionnez les fichiers BPEL et WSDL pour décrire le processus d'entreprise et les fichiers XSD pour représenter les schémas de document commercial.
Dans la page Sélectionner des fichiers WSDL pour les services web appelés , cliquez sur Terminer.
Après que l'Assistant Importation BPEL a signalé une importation réussie, fermez l'Assistant. Le projet est maintenant créé.
À l’invite de commandes Visual Studio, remplacez répertoire (cd) par l’emplacement du projet.
Exécutez la commande suivante :
sn –k BPELShipping.snk
Dans Explorateur de solutions, cliquez avec le bouton droit sur le projet BPELShipping, puis cliquez sur Propriétés.
Sous Propriétés communes\Assembly, sélectionnez le fichier de clé d’assembly BPELShipping.snk créé à l’étape 11, puis cliquez sur OK.
Dans l'Explorateur de solutions, sélectionnez tous les fichiers .xsd, puis supprimez-les.
Dans Explorateur de solutions, sélectionnez Ajouter une référence, puis sous l’onglet Projets, cliquez sur Parcourir.
Sélectionnez ShippingSchemas.dll à partir de l’emplacement <Chemin d’accès> exemples\Orchestrations\BPELImport\Solution\ShipperProcess\ShippingSchemas\bin\Development, puis cliquez sur OK.
Notes
La section « Pour créer et initialiser l'application ShipperProcess » contient des instructions sur la manière de procéder.
Dans Explorateur de solutions, double-cliquez sur OrderShippingProcess.bpel.odx.
Dans le menu Affichage , sélectionnez Autre affichage Windows/Orchestration.
Dans la fenêtre Vue d’orchestration, cliquez avec le bouton droit sur Propriétés d’orchestration , puis cliquez sur Fenêtre Propriétés.
Dans le Fenêtre Propriétés, définissez la propriété Orchestration Exportable sur False.
Dans Explorateur de solutions, double-cliquez sur OrderShipping.wsdl.odx.
Dans la fenêtre Vue d’orchestration, développez Types/Types de messages en plusieurs parties.
Développez InvoiceAckMessageType , puis cliquez sur InvoiceAckMessagePart.
Dans le Fenêtre Propriétés, développez le champ Type, puis sélectionnez Schémas/Sélectionner à partir d’un assembly référencé.
Dans la boîte de dialogue Sélectionner le type d’artefact , cliquez sur ShippingSchemas, sélectionnez le Imported_InvoiceAckMessage type, puis cliquez sur OK.
Notes
Dans les étapes 23 à 25, vous remplacez le type de message des services participant au processus BPEL par le type de message correspondant décrit dans ShippingSchemas.
Répétez les étapes 23 à 25 pour chaque type de message à l'aide des valeurs suivantes.
Partie du message type de message InvoiceMessagePart ShippingSchemas.Imported_InvoiceMessage OrderAckMessagePart ShippingSchemas.Imported_OrderAckMessage OrderMessagePart ShippingSchemas.Imported_OrderMessage PaymentConfirmationMessagePart ShippingSchemas.Imported_PaymentConfirmationMessage PickupNotificationMessagePart ShippingSchemas.Imported_PickupNotificationMessage ShipConfirmationMessagePart ShippingSchemas.Imported_ShipConfirmationMessage ShippingHistoryPart ShippingSchemas.Imported_ShippingHistory ShipRequestAckMessagePart ShippingSchemas.Imported_ShipRequestAckMessage ShipRequestMessagePart ShippingSchemas.Imported_ShipRequestMessage ShipStatusMessagePart ShippingSchemas.Imported_ShipStatusMessage Dans Explorateur de solutions, cliquez avec le bouton droit sur le projet BPELShipping, pointez sur Ajouter, puis cliquez sur Élément existant.
Sélectionnez tous les fichiers .btm à partir de l’emplacement <Samples Path>\Orchestrations\BPELImport\Solution\BPELShipping\BPELShipping.
Dans la fenêtre Vue orchestration, recherchez la forme d’affectation de message nommée MessageAssignment_1 dans ConstructMessage1 et supprimez-la.
À partir de la boîte à outils, faites glisser une forme Transformer vers la forme ConstructMessage1.
Dans le Fenêtre Propriétés, cliquez sur le bouton de sélection (...) et ouvrez la boîte de dialogue Transformer la configuration.
Sélectionnez Carte existante.
Sélectionnez le nom complet de la carte BPELShipping.Order2ShipRequest.
Sélectionnez la source comme ordre. OrderMessagePart.
Sélectionnez la destination comme ship_request. ShipRequestMessagePart et cliquez sur OK.
Répétez les étapes 29 à 35 pour chacune des formes d’affectation de message et remplacez-les par transformer les formes conformément au tableau suivant.
Forme à remplacer Mappage à utiliser Document source Document de destination MessageAssignment_2 BPELShipping.Order2OrderAck order.OrderMessagePart order_ack.OrderAckMessagePart MessageAssignment_3 BPELShipping.Order2OrderNAck order.OrderMessagePart order_ack.OrderAckMessagePart MessageAssignment_4 BPELShipping.Order2ShipHistory order.OrderMessagePart ship_history.ShippingHistoryPart MessageAssignment_5 BPELShipping.ShipHistory2Completed order.OrderMessagePart ship_history.ShippingHistoryPart MessageAssignment_6 BPELShipping.Invoice2Ack Invoice.InvoiceMessagePart invoice_ack.InvoiceAckMessagePart MessageAssignment_7 BPELShipping.Order2FinalConfirmation order.OrderMessagePart order_shipped.OrderAckMessagePart Enregistrez l'orchestration.
Double-cliquez sur Rule_1 dans la Decision_1Décider de la forme.
Dans l'Éditeur d'expression BizTalk, remplacez
ship_request_ack(BPELShipping.Ship_Acknowledged) == true
par
ship_request_ack(ShippingSchemas.Ship_Acknowledged) == true
Double-cliquez sur la forme boucle nommée Loop_1.
Dans l'Éditeur d'expression BizTalk, remplacez
ship_history(BPELShipping.Ship_Completed) == true
par
ship_history(ShippingSchemas.Ship_Completed) == true
Double-cliquez sur Rule_2 dans la Decision_2Décider de la forme.
Dans l'Éditeur d'expression BizTalk, remplacez
ship_status(BPELShipping.ShipStatus) == "DONE"
par
ship_status(ShippingSchemas.ShipStatus) == "DONE"
Dans la vue Orchestration, développez Types/Types de corrélation , puis cliquez sur OrderCorrelationSet_Type\.
Dans le Fenêtre Propriétés, cliquez sur le bouton de sélection (...) sur Propriétés de corrélation.
Dans le volet Propriétés à mettre en corrélation, cliquez sur BPELShipping.OrderID, puis sur Supprimer.
Dans le volet Propriétés disponibles, développez Schémas d’expédition, sélectionnez ID de commande, puis cliquez sur Ajouter.
Cliquez sur OK.
Enregistrez tous les fichiers, puis générez la solution.
déployer la solution ;
Accédez à l’emplacement <Samples Path>\Orchestrations\BPELImport\Solution\BPELShipping et double-cliquez sur BindAndStartOnly.bat pour lier et démarrer l’orchestration.
Accès à l'exemple
<Chemin d’accès> d’exemples\Orchestrations\BPELImport
Le tableau suivant présente les fichiers de cet exemple et décrit leur fonction.
Fichier(s) | Description |
---|---|
BPELSource\InvoiceAckMessage.xsd | Schéma d'accusé de réception de facture. |
BPELSource\InvoiceMessage.xsd | Schéma de facture. |
BPELSource\OrderAckMessage.xsd | Schéma d'accusé de réception de commande. |
BPELSource\OrderHeader.xsd | Schéma d'en-tête de commande. |
BPELSource\OrderMessage.xsd | Schéma de message de commande. |
BPELSource\OrderShipping.wsdl | Fichier WSDL désigné par BPEL. |
BPELSource\OrderShippingProcess.bpel | Flux de processus BPEL. |
BPELSource\PaymentConfirmationMessage.xsd | Message de confirmation de paiement. |
BPELSource\PickupNotificationMessage.xsd | Message de notification d'enlèvement. |
BPELSource\ShipConfirmationMessage.xsd | Message de confirmation d'expédition. |
BPELSource\ShippingHistory.xsd | Document de l'historique d'expédition. |
BPELSource\ShipRequestAckMessage.xsd | Accusé de livraison de demande d'expédition. |
BPELSource\ShipRequestMessage.xsd | Demande de demande d'expédition. |
BPELSource\ShipStatusMessage.xsd | Message d'état d'expédition. |
Solution\bindings\BPELBindings.xml | Fichier de liaison spécifiant des liaisons de port pour l'orchestration BPELShipping. |
Solution\bindings\ShipperBindings.xml | Fichier de liaison spécifiant des liaisons de port pour l'orchestration ShipperProcess. |
Solution\BPELShipping\BindAndStartOnly.bat | Fichier de commandes pour la liaison et le démarrage de l'orchestration BPELImport après sa création manuelle et son déploiement. |
Solution\BPELShipping\cleanup.bat | Fichier de commandes à utiliser pour supprimer le processus BPELShipping. |
Solution\BPELShipping\Setup.bat | Fichier de commandes à utiliser pour installer et démarrer l'exemple BPELShipping fourni. |
Solution\BPELShipping\BPELShipping.sln | Exemple BPELShipping prégénéré. |
olution\BPELShipping\BPELShipping\Invoice2Ack.btm | Facture pour mappage d'accusé de réception de facture. |
Solution\BPELShipping\BPELShipping\Order2FinalConfirmation.btm | Mappage à convertir à partir du message de commande vers la confirmation de livraison finale. |
Solution\BPELShipping\BPELShipping\Order2OrderAck.btm | Mappage à convertir à partir du message de commande vers l'accusé de réception de commande. |
Solution\BPELShipping\BPELShipping\Order2OrderNack.btm | Mappage à convertir à partir du message de commande vers l'accusé de réception négatif de commande. |
Solution\BPELShipping\BPELShipping\Order2ShipHistory.btm | Mappage à convertir à partir du message de commande vers le document de l'historique d'expédition. |
Solution\BPELShipping\BPELShipping\Order2ShipRequest.btm | Mappage à convertir à partir du message de commande vers la demande d'expédition de commande. |
Solution\BPELShipping\BPELShipping\ShipRequest2Completed.btm | Mappage pour définir l'historique de l'expédition comme terminé. |
Solution\ShipperProcess\setup.bat | Fichier de commandes pour générer, déployer, lier et démarrer l'orchestration de l'application auxiliaire ShipperProcess et ses ports. |
Solution\ShipperProcess\cleanup.bat | Fichier de commandes pour arrêter, annuler l'inscription et annuler le déploiement de l'orchestration de l'application auxiliaire ShipperProcess et de ses ports. |
Génération et initialisation de cet exemple
La première étape consiste à créer et initialiser l'application ShipperProcess utilisée pour simuler Wide World Importers.
Pour créer et initialiser l'application ShipperProcess
Démarrez l’invite de commandes Visual Studio.
À partir de l’invite de commandes Visual Studio, remplacez répertoire (cd) par le dossier suivant :
<Chemin d’accès> d’exemples\Orchestrations\BPELImport\Solution\ShipperProcess
Exécutez le fichier Setup.bat, qui effectue les actions suivantes :
crée le projet ShippingSchemas contenant les schémas utilisés dans les processus ShipperProcess et BPELShipping ;
crée le processus ShipperProcess ;
déploie les projets ShippingSchemas et ShipperProcess ;
crée et lie les ports d'envoi et de réception utilisés par ShipperProcess ;
démarre les ports utilisés par ShipperProcess ;
inscrit et démarre l'orchestration ShipperProcess.
Avant de tenter d'exécuter cet exemple, vous devez vérifier qu'aucune erreur n'a été signalée durant le processus de création et d'initialisation. Un ou plusieurs des avertissements suivants peuvent s'afficher. Vous pouvez les ignorer.
The 'http://contoso.org/samples/Fragments:XXXX' element is not declared. An error occurred at , (35, 16).
<SAMPLE_LOCATION>\Orchestrations\BPELImport\Solution\ShipperProcess\ShipperProcess\ShipperProcess.odx(701,13): warning X4014: convoy processing will not occur -- check your protocol if you were expecting it
<SAMPLE_LOCATION>\Samples\Orchestrations\BPELImport\Solution\ShipperProcess\ShipperProcess\ShipperProcess.odx(667,22): convoy found at 'activate receive(Receive_ShipOrder.Operation_1, Request, initialize Correl)'
<SAMPLE_LOCATION>\Samples\Orchestrations\BPELImport\Solution\ShipperProcess\ShipperProcess\ShipperProcess.odx(701,13): and 'receive(ReceiveInvoiceAck.Operation_1, Invoice_Ack, Correl)'
Notes
Si vous avez exécuté la procédure décrite dans la section « Pour importer à partir de BPEL et créer une solution de travail », vous ne devez pas exécuter la procédure suivante.
Pour créer et initialiser l'application BPELShipping
-
Avertissement
Avant d'exécuter cette procédure, vous devez exécuter la procédure ci-dessus intitulée « Pour créer et initialiser l'application ShipperProcess ».
À partir de l’invite de commandes Visual Studio, remplacez répertoire (cd) par le dossier suivant :
<Chemin d’accès> d’exemples\Orchestrations\BPELImport\Solution\BPELShipping
Exécutez le fichier Setup.bat, qui effectue les actions suivantes :
crée le projet BPELShipping ;
déploie le projet BPELShipping ;
crée et lie les ports d'envoi et de réception utilisés par le processus BPELShipping ;
démarre les ports utilisés par le processus BPELShipping ;
inscrit et démarre l'orchestration BPELShipping.
Exécution de cet exemple
Pour exécuter l'exemple Importation BPEL
Copiez le fichier Order.xml du <dossier Samples Path>\Orchestrations\BPELImport\Solution vers le < dossier Samples Path>\Orchestrations\BPELImport\Solution\Ports\ReceiveOrder.
L’orchestration BPELShipping récupère ce fichier en tant que commande auprès du système de traitement des commandes client, s’exécute tout au long du processus d’expédition et produit un fichier chacun dans le < dossier Samples Path>\Orchestrations\BPELImport\Solution\Ports\SendOrder et le < dossier Samples Path>\Orchestrations\BPELImport\Solution\Ports\FinalConfirmation. Le format du nom de ces fichiers est <MessageID>.xml, où <MessageID> est le GUID généré pour identifier le message de manière unique.
Désinstallation de l'exemple
Pour désinstaller l'exemple Importation BPEL
À l’invite de commandes Visual Studio, remplacez le répertoire (cd) par <Samples Path>\Orchestrations\BPELImport\BPELShipping.
Exécutez Cleanup.bat.
Accédez à <Samples Path>\Orchestrations\BPELImport\ShipperProcess.
Exécutez Cleanup.bat.