API BAM (exemple BizTalk Server)
L'exemple API BAM montre comment incorporer des appels à l'API BAM dans une application pour enregistrer des informations clés que vous pouvez surveiller.
Fonctions de l'exemple
Cet exemple implémente un scénario d'achat simple. Il génère des bons de commande, traite chaque bon de commande, crée des expéditions et crée et traite des factures. Pendant son exécution, l'exemple crée et met à jour des activités BAM pour refléter les détails et la disposition des bons de commande et des factures.
Conception et finalité de cet exemple
Cet exemple a été conçu pour illustrer l'utilisation de l'analyse BAM pour stocker des informations d'une application qui n'est pas une orchestration BizTalk. Lorsque l'application est simple, il montre les différents aspects de BAM que vous pourriez utiliser dans une application de production. Ces options en question sont les suivantes :
Plusieurs threads qui contribuent à une activité unique
Création d'une relation entre deux activités
Utilisation d'une continuation pour permettre l'accès à la même activité avec différents ID
L’exemple d’API BAM se compose de trois classes main : l’une pour traiter les bons de commande, l’autre pour traiter les expéditions et l’autre pour traiter les factures. Chaque classe a une méthode RunOnce qui récupère un message d’une file d’attente, puis traite le message. Chaque classe a également une méthode Run qui appelle continuellement la méthode RunOnce .
La méthode RunOnce de la classe PoApplication effectue les opérations suivantes :
Crée un message XML qui représente un bon de commande.
Commence une activité BAMApiPo et ajoute à l'activité des informations relatives au bon de commande et au moment de sa réception.
Approuve ou rejette arbitrairement le bon de commande.
Met à jour l'activité BAMApiPo pour enregistrer l'état du bon de commande (accepté ou rejeté).
Si le bon de commande a été accepté, la méthode RunOnce effectue également les opérations suivantes :
Crée un message XML pour représenter un paquet à expédier et ajoute le message à la file d'attente des expéditions.
Ajoute le message XML qui représente le bon de commande à la file d'attente des bons de commande à inclure dans une facture.
Active la continuation de l'activité BAMApiPo.
Met fin à l'activité BAMApiPo.
La méthode RunOnce de la classe ShipmentApplication effectue les opérations suivantes :
Extrait de sa file d'attente un message XML qui représente un paquet à expédier.
Met à jour l'activité BAMApiPo pour enregistrer l'heure à laquelle le paquet a été expédié.
Met fin à l'activité BAMApiPo.
La méthode RunOnce de la classe InvoiceApplication effectue les opérations suivantes :
Extrait de sa file d'attente un message XML qui représente un bon de commande à facturer.
Commence une activité BAMApiInvoice.
Crée une relation BAM entre l'activité BAMApiInvoice et l'activité BAMApiPo pour le bon de commande en cours de facturation.
Ajoute à l'activité BAMApiPo des informations relatives à la facture et à l'heure à laquelle elle a été créée.
Après un délai arbitraire pour simuler l'attente de la facture à payer, ajoute à l'activité BAMApiInvoice l'heure à laquelle la facture a été payée.
Met fin à l'activité BAMApiInvoice.
La méthode Main de la classe MainApp initialise l’application. Elle effectue les opérations suivantes :
Crée un objet DirectEventStream .
Démarre plusieurs threads et appelle la méthode Run de l’objet POApplication dans chaque thread.
Démarre plusieurs threads et appelle la méthode Run de l’objet ShipmentApplication dans chaque thread.
Démarre plusieurs threads et appelle la méthode Run de l’objet InvoiceApplication dans chaque thread.
La classe Global définit les constantes utilisées par l’exemple d’application, telles que le nombre de threads à créer et le pourcentage de bons de commande à rejeter.
En plus de la solution Visual Studio, l’exemple contient également un fichier Microsoft Excel qui définit les activités.
Accès à l'exemple
Vous trouverez cet exemple dans <Chemin d’accès> d’exemples\BAM\BamApiSample.
Le tableau suivant présente les fichiers de cet exemple et décrit leur fonction.
Fichier | Description |
---|---|
BamApiSample.cs | Application instrumentée. |
BamApiSample.csproj | Projet de l'application instrumentée. |
BamApiSample.sln | Solution de l'application instrumentée. |
BamApiSample.xls | Feuille de style de définition BAM. |
Cleanup.bat | Fichier de commandes pour supprimer les exemples de fichiers déployés. |
Input.txt | Exemple d'entrée de configuration de l'intercepteur. |
InterceptorConfig.cs | Code de configuration de l'intercepteur pour l'exemple d'API. |
InterceptorConfig.csproj | Projet de configuration de l'intercepteur. |
Invoice_config.xml | Configuration de l'intercepteur de facture. |
Invoice_interceptor.bin | Intercepteur de facture sérialisé. |
PurchaseOrder_config.xml | Configuration de l'intercepteur de PurchaseOrder. |
PurchaseOrder_interceptor.bin | Intercepteur de PurchaseOrder sérialisé. |
Setup.bat | Fichier de commandes pour déployer et inscrire les exemples de fichiers. |
Shipment_config.xml | Configuration de l'intercepteur d'expédition. |
Shipment_interceptor.bin | Intercepteur d'expédition sérialisé. |
Exécuter l’exemple d’API BAM
Ouvrez une invite de commandes en tant qu’administrateur et exécutez <Samples Path>\BAM\ BamApiSample\setup.bat.
Démarrez Visual Studio en tant qu’administrateur et ouvrez la <solution Samples Path>\BAM\ BamApiSample\BamApiSample.sln.
Important
La ligne
//#define Interceptor
du fichier BamApiSample.cs doit être commentée. Ne supprimez pas le « / / » de cette ligne. L’exemple d’API BAM utilise uniquement le code qui n’est pas à l’intérieur d’une#if Interceptor
directive de préprocesseur.Générez la solution.
Exécuter <le chemin d’accès> des exemples\BAM\BamApiSample\bin\debug\BamApiSample.exe.
La sortie doit ressembler à ce qui suit :
... New Purchase Order #17 Received 8 was shipped as pkg#87 New Purchase Order #18 Received. Shipping package pkg#87 via DHL 13 was Approved. 18 was Rejected. 17 was Rejected. 11 was shipped as pkg#114 16 wsas Rejected. Shipping package pkg#114 via DHL Invoice #5 send for {2 5 1 9 4 8 11 } Package pkg#49 was delivered New Purchase Order #19 Received. ...
Après une minute environ, appuyez sur CTRL+C ou fermez la fenêtre de l'invite de commandes pour arrêter le programme BamApiSample.
Afficher les résultats
Ouvrez SQL Server Management Studio.
Dans SQL Server Management Studio, développez le serveur, bases de données, BAMPrimaryImport, puis Tables.
Cliquez avec le bouton droit sur dbo.bam_BAMApiInvoice_Active , puis cliquez sur Ouvrir la table. Si vous utilisez SQL Server, cliquez sur Sélectionner les 1000 premières lignes.
Le contenu de la table bam_BAMApiInvoice_Active s'affiche dans le volet droit. Chaque ligne de la table représente une activité BAMApiInvoice qui a été démarrée, mais qui n’a pas été terminée.
Cliquez avec le bouton droit sur dbo.bam_BAMApiPo_Completed , puis cliquez sur Ouvrir la table. Si vous utilisez SQL Server, cliquez sur Sélectionner les 1000 premières lignes.
Le contenu de la table bam_BAMApiPo_Completed s'affiche dans le volet droit. Chaque ligne de la table représente une activité BAMApiPo terminée.