Partager via


PartnerManagement (exemple BizTalk Server)

L’exemple PartnerManagement montre comment gérer des parties dans l’environnement BizTalk Server à l’aide des objets d’administration ExplorerOM.

Prérequis

  • Vous devez disposer de BizTalk Server privilèges administratifs pour utiliser les objets d’administration de cet exemple.

  • La stratégie d'exécution de Windows PowerShell doit autoriser l'exécution des scripts. Pour plus d'informations, consultez la page Examen de la stratégie d'exécution.

Fonctions de l'exemple

Cet exemple montre comment utiliser les classes d’administration de l’espace de noms Microsoft.BizTalk.ExplorerOM pour gérer les parties. Les tiers représentent les partenaires commerciaux ou les applications principales avec lesquels un processus d'entreprise peut interagir. Pour plus d’informations sur les parties en général, consultez la documentation relative aux parties ou aux liens de rôle et aux rôles de liaison de service. L’exemple est écrit dans Microsoft Visual C#. Un exemple de script Windows PowerShell est également inclus dans cette rubrique. Il illustre les opérations suivantes :

  • La création d’un tiers avec un alias personnalisé ou standard et l’ajout de ports d’envoi de BizTalk Server existants à la partie.

  • Inscription du nouveau tiers avec un lien de rôle existant sur le serveur BizTalk.

  • Annulation de l'inscription du nouveau tiers.

  • Suppression du nouveau tiers.

Accès à l'exemple

L'exemple se trouve dans l'emplacement SDK suivant :

<Chemin d’accès> des exemples\Administration\ExplorerOM\PartnerManagement

Le tableau suivant présente les fichiers de cet exemple et décrit leur fonction.

Fichier(s) Description
PartnerManagement.cs Fichier source Visual C# pour les opérations illustrées dans cet exemple.
PartnerManagement.sln et PartnerManagement.csproj Fichiers de projet et de solution de l'exemple.

Création et exécution de l'exemple

Avant de créer l'exemple, vous devez le personnaliser pour le serveur BizTalk en apportant quatre modifications au code. Cette opération est nécessaire car l'exemple utilise des noms arbitraires pour les ports d'envoi associés au tiers et un nom de rôle arbitraire pour l'inscription. C'est pourquoi, vous devez fournir des noms valides pour l'exemple. Pour illustrer cet exemple, cette rubrique décrit d’abord la génération de l’exemple PartyResolution à partir du répertoire suivant : <Chemin d’accès> des exemples\Orchestrations\PartyResolution. Cette solution permet de s'assurer qu'un nom de rôle et des noms de ports d'envoi valides figurent sur le serveur BizTalk pour illustrer les procédures de l'exemple.

Pour créer l'exemple

  1. Vous devez commencer par vérifier que l'exemple PartyResolution a été créé et initialisé de manière à utiliser un nom de rôle et des noms de ports d'envoi valides. Cela est documenté dans la section intitulée « Génération et initialisation de cet exemple » dans PartyResolution (BizTalk Server sample).

  2. Dans Visual Studio, ouvrez le fichier solution PartnerManagement.sln.

  3. Dans l'Explorateur de solutions, ouvrez le fichier source PartnerManagement.cs.

  4. Faites défiler la fonction nommée CreateParty et insérez les deux noms de port d’envoi de l’exemple PartyResolution ou utilisez des noms valides de l’environnement de serveur BizTalk. L'exemple de code suivant illustre les modifications apportées à l'aide des ports d'envoi de l'exemple PartyResolution.

    // Replacing arbitrary send port names with PartyResolution send port names ===
    
    //            myParty.SendPorts.Add(catalog.SendPorts["NormalDelivery"]);
    //            myParty.SendPorts.Add(catalog.SendPorts["ExpressDelivery"]);
                myParty.SendPorts.Add(catalog.SendPorts["SP_FilesToShipmentAgency1"]);
                myParty.SendPorts.Add(catalog.SendPorts["SP_FilesToShipmentAgency2"]);
    
    
  5. Faites défiler la fonction nommée EnlistParty et modifiez la boucle foreach afin qu’elle recherche dans l’assembly fournisseur un rôle nommé « ShipmentRole » à utiliser avec l’inscription. L'exemple de code suivant illustre les modifications à apporter pour utiliser ShipmentRole, à partir de l'exemple PartyResolution.

                // Search for the “Shipmentrole” instead of “shipperRole”
                Role svcRole = null;
    //===       foreach (Role role in catalog.Assemblies[0].Roles)
                foreach (Role role in catalog.Assemblies["Supplier"].Roles)
                {
    //===          if (role.Name == "ShipperRole")
                   if (role.Name == "ShipmentRole")
                   {
                      svcRole = role;
                      break;
                   }
                }
    
    
  6. Faites défiler vers le bas la fonction nommée UnenlistParty et modifiez la boucle foreach pour rechercher le shipmentRole dans l’assembly Fournisseur. L'exemple de code suivant illustre cette modification.

                // Search for the “ShipmentRole” instead of “shipperRole”
                Role svcRole = null;
    //===       foreach (Role role in catalog.Assemblies[0].Roles)
                foreach (Role role in catalog.Assemblies["Supplier"].Roles)
                {
    //===          if (role.Name == "ShipperRole")
                   if (role.Name == "ShipmentRole")
                   {
                      svcRole = role;
                      break;
                   }
                }
    
    
  7. Après la création et l'inscription du nouveau tiers avec le ShipmentRole, l'exemple est conçu pour annuler immédiatement l'inscription du tiers et supprimer celui-ci. Ajoutez la modification de code suivante à la procédure main pour suspendre l’exécution et vous permettre d’afficher l’inscription créée pour la nouvelle partie dans la console d’administration BizTalk Server.

    static void Main(string[] args)
    {
       CreateParty();
       EnlistParty();
    
       Console.WriteLine("\nNew Party created and enlisted.\n\nPress <Enter> to unenlist and delete.\n");
       Console.ReadLine();
    
       UnenlistParty();
       DeleteParty();
    }
    
    
  8. Dans le menu Générer, cliquez sur Générer la solution.

Pour exécuter l'exemple

  1. Ouvrez une fenêtre de commande, puis accédez au dossier suivant :

    <Chemin d’accès> des exemples\Administration\ExplorerOM\PartnerManagement\bin\Debug

  2. Exécutez le fichier PartnerManagement.exe.

  3. Lorsque l’exemple affiche le message indiquant que la nouvelle partie est créée et inscrite, ouvrez la console d’administration BizTalk Server et affichez la nouvelle partie nommée FedEx sous le nœud Parties.

  4. Dans la console d’administration BizTalk Server, accédez à l’arborescence jusqu’à expéditionRole sous Applications\Application BizTalk 1\Role Links. Double-cliquez sur ShipmentRole et notez ShipmentAgency1 mappé à l’opération SupplierAdvice et ShipmentAgency2 mappé à l’opération SupplierOrder dans l’inscription.

  5. Dans la fenêtre de commande, appuyez sur ENTRÉE pour autoriser l'exemple à annuler l'inscription et à supprimer le nouveau tiers.

  6. Dans la console d’administration BizTalk Server, vérifiez que la partie a été désinscrit de l’objet ShipmentRole et supprimée du nœud Parties.

Exemple de script Windows PowerShell

L’exemple de script Windows PowerShell suivant peut être utilisé pour illustrer les mêmes fonctionnalités des classes ExplorerOM :

#===============================================================#
#===                                                         ===#
#=== Create a new party named "FedEx" as an example.         ===#
#===                                                         ===#
#=== Two Shipment agency send ports from the PartyResolution ===#
#=== sample will be added to the party.                      ===#
#===                                                         ===#
#===============================================================#
Function CreateParty
{
  #=== Create a party =====================#
  $myParty = $Catalog.AddNewParty()
  $myParty.Name = "FedEx"

  #=== create a standard alias ==========================#
  $standardAlias = $myParty.AddNewAlias()
  $standardAlias.Name = "D-U-N-S (Dun & Bradstreet)"
  $standardAlias.Value = "Value1"

  #=== Create a custom alias ==================#
  $customAlias = $myParty.AddNewAlias()
  $customAlias.Name = "Telephone"
  $customAlias.Qualifier = "100"
  $customAlias.Value = "4255550234"

  #=== Add party send ports =====================================================#

  #===============================================================#
  #=== Have to use IList directly on this sendports collection ===#
  #=== to work around a PowerShell issue.                      ===#
  #===============================================================#
  $iList = [System.Collections.IList]

  $sendport1 = $Catalog.SendPorts["SP_FilesToShipmentAgency1"]
  [void] $iList.GetMethod("Add").Invoke($myParty.SendPorts,$sendport1)

  $sendport2 = $Catalog.SendPorts["SP_FilesToShipmentAgency2"]
  [void] $iList.GetMethod("Add").Invoke($myParty.SendPorts,$sendport2)

  #=== Specify a signature certificate, make sure the certificate is available ===#
  #=== in the AddressBook store of the Local Machine                           ===#

  foreach ($certificate in $Catalog.Certificates)
  {
    if ($certificate.ShortName -eq "BR, Certisign Certificadora Digital Ltda., Certisign - Autoridade Certificadora - AC2")
    {
      $myParty.SignatureCert = $certificate
    }
  }

  #=== Commit the changes ===#
  $catalog.SaveChanges()
}

#===============================================================#
#===                                                         ===#
#=== Delete the party named "FedEx"                          ===#
#===                                                         ===#
#===============================================================#
Function DeleteParty
{
  $Catalog.RemoveParty($Catalog.Parties["FedEx"])

  #=== Commit the changes ===#
  $catalog.SaveChanges()
}

#===============================================================#
#===                                                         ===#
#=== Enlist the "FedEx" party with the "ShipmentRole"        ===#
#===                                                         ===#
#===============================================================#
Function EnlistParty
{
  $myParty = $Catalog.Parties["FedEx"]

  #=== Get the "ShipmentRole" in the Supplier assembly.        ===#
  $svcRole = $Catalog.Assemblies["Supplier"].Roles["ShipmentRole"]

  #=== Enlist the party under the shipper role ===#
  $enlistedParty = $svcRole.AddNewEnlistedParty($myParty)

  #===============================================================#
  #=== Have to use IList directly on this sendports collection ===#
  #=== to work around a PowerShell issue.                      ===#
  #===============================================================#
  $iList = [System.Collections.IList]

  #===============================================================#
  #=== Example port to be used for the role's "SupplierAdvice" ===#
  #=== operation.                                              ===#
  #=== Using the first send port added to the new party which  ===#
  #=== is "SP_FilesToShipmentAgency1" at index 0 in the        ===#
  #=== sendports collection.                                   ===#
  #===============================================================#
  $enlistedParty.Mappings[0].SendPort = $iList.GetProperty("Item").GetValue($myParty.SendPorts,0)

  #===============================================================#
  #=== Example port to be used for the role's "SupplierOrder"  ===#
  #=== operation.                                              ===#
  #=== Using the second send port added to the new party which ===#
  #=== is "SP_FilesToShipmentAgency2" at index 1 in the        ===#
  #=== sendports collection.                                   ===#
  #===============================================================#
  $enlistedParty.Mappings[1].SendPort = $iList.GetProperty("Item").GetValue($myParty.SendPorts,1)

  #=== Commit the changes ===#
  $Catalog.SaveChanges()
}

#===============================================================#
#===                                                         ===#
#=== Unenlist the "FedEx" party from the ShipmentRole        ===#
#===                                                         ===#
#===============================================================#
Function UnenlistParty
{
  #=== Get the "ShipmentRole" from the Supplier assembly. ===#
  $svcRole = $Catalog.Assemblies["Supplier"].Roles["ShipmentRole"]

  #=== Remove the "FedEx" party ===#
  foreach ($enlistedparty in $svcRole.EnlistedParties)
  {
    if ($enlistedparty.Party.Name -eq "FedEx")
    {
      $svcRole.RemoveEnlistedParty($enlistedparty)
      break
    }
  }

  #=== Commit the changes ===#
  $Catalog.SaveChanges()
}

#===================#
#=== Main Script ===#
#===================#

#=== Make sure the ExplorerOM assembly is loaded ===#

[void] [System.reflection.Assembly]::LoadWithPartialName("Microsoft.BizTalk.ExplorerOM")

#=== Connect to the BizTalk Management database ===#

$Catalog = New-Object Microsoft.BizTalk.ExplorerOM.BtsCatalogExplorer
$Catalog.ConnectionString = "SERVER=.;DATABASE=BizTalkMgmtDb;Integrated Security=SSPI"

#=== This sample expects the PartyResolution sample to be built and deployed  ===#
#=== to the BizTalk Server.                                                   ===#

write-host `r`nMake sure the "PartyResolution" sample application from the Orchestrations
write-host sample directory is deployed and running.
write-host By default it will be listed in the BizTalk Server Administration Console
write-host with the application name: `"BizTalk.Application.1`"`r`n

$SupplierAssembly = $Catalog.Assemblies["Supplier"]

#==================================================================#
#=== Register a trap handler to discard changes on exceptions   ===#
#=== Execution will continue in the event we want to unenlist,  ===#
#=== and delete the party.                                      ===#
#==================================================================#

$Script:NoExceptionOccurred = $true
$ErrorActionPreference="silentlycontinue"
trap
{
  $Script:NoExceptionOccurred = $false
  "Exception encountered:`r`n"; $_; "`r`nDiscarding Changes and continuing execution so we can attempt to clean up the party...`r`n"
  $Catalog.DiscardChanges()
}

CreateParty
EnlistParty

if ($Script:NoExceptionOccurred)
{
  Write-Host "`r`nExample Party `"FedEx`" should be created and enlisted with the `"ShipmentRole`".`r`n"
  Write-Host You can view the results in the BizTalk Server Administration console.`r`n
  Write-Host "Press <Enter> to unenlist and delete...`r`n"
  Read-Host
}

UnenlistParty
DeleteParty

Voici un exemple de sortie de l'exécution de l'exemple de script PowerShell. Si l'exécution du script échoue, vérifiez que l'exécution de scripts PowerShell est activée en vous référant à la section relative aux conditions préalables dans la partie supérieure de cette rubrique.

PS C:\> .\PartnerManagement.ps1

Make sure the PartyResolution sample application from the Orchestrations
sample directory is deployed and running.
By default it will be listed in the BizTalk Server Administration Console
with the application name: "BizTalk.Application.1"

Example Party "FedEx" should be created and enlisted with the "ShipmentRole".

You can view the results in the BizTalk Server Administration console.

Press <Enter> to unenlist and delete...

Voir aussi

Liens de rôles de parties et rôles de liaison de serviceAdministration (BizTalk Server dossier d’exemples)