Partage via


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 :

  1. reçoit une commande du système de commande client de Northwind Traders :

  2. envoie une demande d'expédition à Wide World Importers et demande confirmation ;

  3. reçoit une confirmation de demande d'expédition de Wide World Importers ;

  4. reçoit une notification d'enlèvement de Wide World Importers ;

  5. reçoit des messages relatifs à l'état de l'expédition jusqu'au moment où le client reçoit la livraison ;

  6. reçoit une facture de Wide World Importers ;

  7. répond à Wide World Importers par un accusé de réception de la facture ;

  8. reçoit une confirmation de paiement de Wide World Importers ;

  9. 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

  1. 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.

  2. 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).

  3. 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.

  4. Sélectionnez un emplacement pour le projet, puis cliquez sur OK pour démarrer l’Assistant Importation BPEL.

  5. Sur la page d’accueil, cliquez sur Suivant.

  6. Dans la page Sélectionner les fichiers BPEL, WSDL et XSD , cliquez sur Parcourir.

  7. 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.

  8. Dans la page Sélectionner des fichiers WSDL pour les services web appelés , cliquez sur Terminer.

  9. Après que l'Assistant Importation BPEL a signalé une importation réussie, fermez l'Assistant. Le projet est maintenant créé.

  10. À l’invite de commandes Visual Studio, remplacez répertoire (cd) par l’emplacement du projet.

  11. Exécutez la commande suivante :

    sn –k BPELShipping.snk

  12. Dans Explorateur de solutions, cliquez avec le bouton droit sur le projet BPELShipping, puis cliquez sur Propriétés.

  13. Sous Propriétés communes\Assembly, sélectionnez le fichier de clé d’assembly BPELShipping.snk créé à l’étape 11, puis cliquez sur OK.

  14. Dans l'Explorateur de solutions, sélectionnez tous les fichiers .xsd, puis supprimez-les.

  15. Dans Explorateur de solutions, sélectionnez Ajouter une référence, puis sous l’onglet Projets, cliquez sur Parcourir.

  16. 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.

  17. Dans Explorateur de solutions, double-cliquez sur OrderShippingProcess.bpel.odx.

  18. Dans le menu Affichage , sélectionnez Autre affichage Windows/Orchestration.

  19. 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.

  20. Dans le Fenêtre Propriétés, définissez la propriété Orchestration Exportable sur False.

  21. Dans Explorateur de solutions, double-cliquez sur OrderShipping.wsdl.odx.

  22. Dans la fenêtre Vue d’orchestration, développez Types/Types de messages en plusieurs parties.

  23. Développez InvoiceAckMessageType , puis cliquez sur InvoiceAckMessagePart.

  24. 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é.

  25. 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.

  26. 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
  27. Dans Explorateur de solutions, cliquez avec le bouton droit sur le projet BPELShipping, pointez sur Ajouter, puis cliquez sur Élément existant.

  28. Sélectionnez tous les fichiers .btm à partir de l’emplacement <Samples Path>\Orchestrations\BPELImport\Solution\BPELShipping\BPELShipping.

  29. Dans la fenêtre Vue orchestration, recherchez la forme d’affectation de message nommée MessageAssignment_1 dans ConstructMessage1 et supprimez-la.

  30. À partir de la boîte à outils, faites glisser une forme Transformer vers la forme ConstructMessage1.

  31. Dans le Fenêtre Propriétés, cliquez sur le bouton de sélection (...) et ouvrez la boîte de dialogue Transformer la configuration.

  32. Sélectionnez Carte existante.

  33. Sélectionnez le nom complet de la carte BPELShipping.Order2ShipRequest.

  34. Sélectionnez la source comme ordre. OrderMessagePart.

  35. Sélectionnez la destination comme ship_request. ShipRequestMessagePart et cliquez sur OK.

  36. 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
  37. Enregistrez l'orchestration.

  38. Double-cliquez sur Rule_1 dans la Decision_1Décider de la forme.

  39. Dans l'Éditeur d'expression BizTalk, remplacez

    ship_request_ack(BPELShipping.Ship_Acknowledged) == true

    par

    ship_request_ack(ShippingSchemas.Ship_Acknowledged) == true

  40. Double-cliquez sur la forme boucle nommée Loop_1.

  41. Dans l'Éditeur d'expression BizTalk, remplacez

    ship_history(BPELShipping.Ship_Completed) == true

    par

    ship_history(ShippingSchemas.Ship_Completed) == true

  42. Double-cliquez sur Rule_2 dans la Decision_2Décider de la forme.

  43. Dans l'Éditeur d'expression BizTalk, remplacez

    ship_status(BPELShipping.ShipStatus) == "DONE"

    par

    ship_status(ShippingSchemas.ShipStatus) == "DONE"

  44. Dans la vue Orchestration, développez Types/Types de corrélation , puis cliquez sur OrderCorrelationSet_Type\.

  45. Dans le Fenêtre Propriétés, cliquez sur le bouton de sélection (...) sur Propriétés de corrélation.

  46. Dans le volet Propriétés à mettre en corrélation, cliquez sur BPELShipping.OrderID, puis sur Supprimer.

  47. Dans le volet Propriétés disponibles, développez Schémas d’expédition, sélectionnez ID de commande, puis cliquez sur Ajouter.

  48. Cliquez sur OK.

  49. Enregistrez tous les fichiers, puis générez la solution.

  50. déployer la solution ;

  51. 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

  1. Démarrez l’invite de commandes Visual Studio.

  2. À 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

  3. 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

  1. 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

  2. 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

  1. Copiez le fichier Order.xml du <dossier Samples Path>\Orchestrations\BPELImport\Solution vers le < dossier Samples Path>\Orchestrations\BPELImport\Solution\Ports\ReceiveOrder.

  2. 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

  1. À l’invite de commandes Visual Studio, remplacez le répertoire (cd) par <Samples Path>\Orchestrations\BPELImport\BPELShipping.

  2. Exécutez Cleanup.bat.

  3. Accédez à <Samples Path>\Orchestrations\BPELImport\ShipperProcess.

  4. Exécutez Cleanup.bat.

Voir aussi

Orchestrations (dossier d’exemples BizTalk Server)