Compartir a través de


PartnerManagement (ejemplo de BizTalk Server)

En el ejemplo PartnerManagement se muestra cómo administrar partes en el entorno de BizTalk Server mediante los objetos de administración explorerOM.

Requisitos previos

  • Debe tener BizTalk Server privilegios administrativos para usar los objetos administrativos de este ejemplo.

  • El script de Windows PowerShell requiere que la directiva de ejecución de Windows PowerShell permita la ejecución de scripts. Para obtener más información, vea Examinar la directiva de ejecución.

Descripción del ejemplo

En este ejemplo se muestra cómo usar las clases administrativas del espacio de nombres Microsoft.BizTalk.ExplorerOM para administrar partes. Las entidades representan socios comerciales o aplicaciones de servidor con las que puede interactuar un proceso empresarial. Para obtener más información sobre las partes en general, consulte la documentación de Partes o Vínculos de rol y Roles de vínculo de servicio. El ejemplo se escribe en Microsoft Visual C#. En este tema también se incluye un script de ejemplo de Windows PowerShell. El ejemplo muestra las siguientes operaciones:

  • Crear una nueva entidad con un alias personalizado o estándar y agregar puertos de envío de BizTalk Server existentes a la entidad.

  • Dar de alta a la nueva entidad con un vínculo de rol existente en BizTalk Server.

  • Dar de baja la nueva entidad.

  • Eliminar la nueva entidad.

Dónde encontrar este ejemplo

El ejemplo se encuentra en la siguiente ubicación del SDK:

<Ruta de acceso de> ejemplos\Administración\ExplorerOM\PartnerManagement

En la tabla siguiente se enumeran los archivos del ejemplo y se describe su propósito.

Archivos Descripción
PartnerManagement.cs Archivo de origen de Visual C# para las operaciones que se muestran en este ejemplo.
PartnerManagement.sln y PartnerManagement.csproj Archivos de solución y proyecto para el ejemplo.

Generación y ejecución del ejemplo

Antes de generar el ejemplo, debe realizar cuatro modificaciones de código para personalizar el ejemplo del servidor BizTalk Server. Esta acción es necesaria porque el ejemplo usa nombres arbitrarios para puertos de envío asociados con la entidad y un nombre de rol arbitrario para dar de alta. Por lo tanto, debe proporcionar nombres válidos para el ejemplo. Para demostrar este ejemplo, en este tema se describe primero la creación del ejemplo PartyResolution desde el siguiente directorio: <Samples Path>\Orchestrations\PartyResolution. Este enfoque se usa para asegurar que estén presentes un nombre de rol y nombres de puerto de envío válidos en BizTalk Server para mostrar los procedimientos del ejemplo.

Procedimiento para generar este ejemplo

  1. En primer lugar, asegúrese de que se ha generado e inicializado el ejemplo PartyResolution de modo que en él se puedan usar un nombre de rol y nombres de puerto de envío válidos. Esto se documenta en la sección titulada "Compilar e inicializar este ejemplo" en PartyResolution (BizTalk Server Ejemplo).

  2. En Visual Studio, abra el archivo de solución PartnerManagement.sln.

  3. En el Explorador de soluciones, abra el archivo de origen PartnerManagement.cs.

  4. Desplácese hacia abajo hasta la función denominada CreateParty e inserte los dos nombres de puerto de envío del ejemplo PartyResolution o use nombres válidos del entorno de BizTalk Server. En el ejemplo de código siguiente se muestra el cambio mediante los puertos de envío del ejemplo 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. Desplácese hacia abajo hasta la función denominada EnlistParty y cambie el bucle foreach para que busque en el ensamblado proveedor un rol denominado "ShipmentRole" para usarlo con la inscripción. En el ejemplo de código siguiente se muestra el cambio para usar el ShipmentRole del ejemplo 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. Desplácese hacia abajo hasta la función denominada UnenlistParty y cambie el bucle foreach para buscar el ensamblado Proveedor para El envíoRole. En el siguiente ejemplo de código se muestra este cambio.

                // 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. Después de crear y dar de alta la nueva entidad con ShipmentRole, el ejemplo está diseñado para dar de baja inmediatamente a la entidad y eliminarla. Agregue el siguiente cambio de código al procedimiento principal para pausar la ejecución y le permita ver la inscripción creada para la nueva entidad en la consola de administración de 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. En el menú Compilar , haga clic en Compilar solución.

Para ejecutar el ejemplo

  1. Abra una ventana de comandos y desplácese a la siguiente carpeta:

    <Ruta de acceso de> ejemplos\Administración\ExplorerOM\PartnerManagement\bin\Debug

  2. Ejecute el archivo PartnerManagement.exe.

  3. Cuando el ejemplo muestra el mensaje de que se crea y se inscribe la nueva entidad, abra la consola de administración de BizTalk Server y vea la nueva entidad denominada FedEx en el nodo Partes.

  4. En la consola de administración de BizTalk Server, vaya a la vista de árbol a ShipmentRole en Aplicaciones\BizTalk Application 1\Role Links( Vínculos de rol). Haga doble clic en ShipmentRole y observe que ShipmentAgency1 está asignado a la operación SupplierAdvice y ShipmentAgency2 asignado a la operación SupplierOrder en la inscripción.

  5. En la ventana de comandos, presione ENTRAR para permitir que el ejemplo dé de baja y elimine la nueva entidad.

  6. En la consola de administración de BizTalk Server, compruebe que la entidad se ha anulado de la inscripción desde el elemento ShipmentRole y se eliminó del nodo Partes.

Ejemplo de un script de Windows PowerShell

El siguiente ejemplo de script de Windows PowerShell se puede usar para mostrar las mismas características de las clases 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

A continuación se proporciona el resultado de la ejecución del script de ejemplo de PowerShell. Si no se ejecuta el script, asegúrese de que el script de PowerShell está habilitado según la nota de requisitos que aparece en la parte superior de este tema.

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

Consulte también

Rolesde roles de partes y roles de vínculo de servicioAdministración (carpeta de ejemplos de BizTalk Server)