Compartir a través de


CBR (ejemplo de BizTalk Server)

En el ejemplo de CBR se muestra cómo usar los objetos administrativos ExplorerOM para agregar y configurar nuevos puertos de envío para el enrutamiento basado en contenido de mensajes de BizTalk.

Requisitos previos

  • Este ejemplo requiere que el CBRSample se implemente ejecutando setup.bat ubicado en el < directorio Samples Path>\Messaging\CBRSample.

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

  • El ejemplo del 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 about_Execution_Policies.

Descripción del ejemplo

En este ejemplo se muestra cómo usar los objetos administrativos en el espacio de nombres Microsoft.BizTalk.ExplorerOM para agregar dos puertos nuevos al ejemplo CBRApplication. Estos nuevos puertos son puertos de ejemplo para CBRApplication. Los puertos están configurados para enrutar mensajes a una dirección hipotética de servicios web HTTP mediante el uso del adaptador de HTTP. En el ejemplo se muestran las siguientes operaciones con los objetos ExplorerOM :

  • Con el método AddNewSendPort de la clase Application para agregar un nuevo puerto de envío denominado SendportUSOrders a CBRApplication. El puerto está configurado para usar el adaptador de HTTP para el transporte con una dirección web hipotética.

  • Adición de un filtro a SendportUSOrders que se suscribe a mensajes de CBRApplication con el valor de código de país 100 de Estados Unidos.

  • Adición de la asignación CBRApplication para transformar los mensajes basados en Estados Unidos a las asignaciones salientes para SendportUSOrders.

  • Adición a CBRApplication de un nuevo puerto de envío denominado SendportCANOrders y configuración de éste para usar el adaptador HTTP para el transporte con una dirección web hipotética.

  • Adición de un filtro a SendportCANOrders que se suscribe a mensajes de CBRApplication con el valor de código de país 200 de Canadá.

  • Adición de la asignación CBRApplication para transformar los mensajes basados en Canadá a las asignaciones salientes para SendportCANOrders.

Dónde encontrar este ejemplo

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

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

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

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

Generación y ejecución del ejemplo

Procedimiento para generar este ejemplo

  1. Asegúrese de haber completado los pasos para generar, implementar y configurar CBRSample. Estos pasos se proporcionan en CBRSample (BizTalk Server Ejemplo).

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

  3. En el menú Compilar , haga clic en Compilar solución.

Para ejecutar el ejemplo

  1. Abra la consola de administración de BizTalk Server y vaya al nodo CBRApplication.

  2. Expanda el nodo CBRApplication para comprobar que el nodo Puertos de envío tiene actualmente solo dos puertos enumerados como CBRUSSendPort y CVITANSendPort.

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

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

  4. Ejecute el archivo CBR.exe.

  5. Presione F5 en la consola de administración de BizTalk Server para actualizar la vista en el nodo Puertos de envío. Ahora debería ver los dos nuevos puertos agregados a CBRApplication mediante este ejemplo. Se denominan SendportUSOrders y SendportCANOrders.

Ejemplo de un script de Windows PowerShell

El siguiente script de Windows PowerShell se puede usar para mostrar las mismas características de las clases ExplorerOM : Sin embargo, dado que el método Add de la colección SendPort.OutboundTranforms está marcado como Internal en el ensamblado ExplorerOM, no se puede llamar directamente desde Windows PowerShell. Este script de Windows PowerShell muestra el uso del proveedor WMI de BizTalk desde Windows PowerShell para agregar la asignación de transformación saliente al nuevo puerto.

Function WMI_AddOutboundTransformToPort($transform,$strPortName)
{
    Write-Host "WMI Processing Transform...`r`nPortName `:"$strPortName
    Write-Host "Transform `:"$transform.AssemblyQualifiedName

    $WMIsendport = get-wmiobject MSBTS_SendPort -filter "Name=`"$strPortName`"" -namespace root\microsoftbiztalkserver
    $WMIsendport.OutboundTransforms = $transform.AssemblyQualifiedName
    [Void] $WMIsendport.Put()
    [Void] $WMIsendport.Start()
}

#===================#
#=== 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"

$CBRApp = $Catalog.Applications["CBRApplication"]

if ($CBRApp -eq $null)
{
    Write-Host "`r`nFailed to find `"CBRApplication`" deployed on this BizTalk server."
    Write-Host "You must deploy the SDK\Samples\Messaging\CBRSample in order to test this script.`r`n"
}
else
{
    #=== Register a trap handler for any exceptions ===#
    $ErrorActionPreference="silentlycontinue"
    trap { "Exception encountered:`r`n"; $_; "`r`nDiscarding Changes.`r`n";$Catalog.DiscardChanges();exit; }

    #===================================#
    #=== Create the U.S. Orders Port ===#
    #===================================#

    $USPort = $CBRApp.AddNewSendPort($false,$false)
    $USPort.Name = "SendportUSOrders"
    $USPort.PrimaryTransport.TransportType = $Catalog.ProtocolTypes["HTTP"]
    $USPort.PrimaryTransport.Address = "http://process_orders_US.asp"
    $USPort.SendPipeline = $Catalog.Pipelines["Microsoft.BizTalk.DefaultPipelines.XMLTransmit"]

    #=== add the filter to subscribe to messages with U.S country code 100 ===#

    $USPort.Filter = "<Filter><Group>" +
                     "<Statement Property='BTS.ReceivePortName' Operator='0' Value='ReceivePortPO'/>" +
                     "<Statement Property='CBRSample.CountryCode' Operator='0' Value='100'/>" +
                     "</Group></Filter>"

    Write-Host("`r`nAdding " + $UsPort.Name + " to catalog ...")
    $Catalog.SaveChanges()

    #=========================================================================================#
    #=== SendPortTranformCollection::Add is marked internal in ExplorerOM for some reason. ===#
    #=== Use WMI to set this as a workaround through PowerShell.                           ===#
    #=========================================================================================#

    WMI_AddOutboundTransformToPort $Catalog.Transforms["CBRSample.CBRInput2USMap"] $USport.Name

    #=====================================#
    #=== Create the Canada Orders Port ===#
    #=====================================#

    $CanadaPort = $CBRApp.AddNewSendPort($false,$false)
    $CanadaPort.Name = "SendportCANOrders"
    $CanadaPort.PrimaryTransport.TransportType = $Catalog.ProtocolTypes["HTTP"]
    $CanadaPort.PrimaryTransport.Address = "http://process_orders_CAN.asp"
    $CanadaPort.SendPipeline = $Catalog.Pipelines["Microsoft.BizTalk.DefaultPipelines.XMLTransmit"]

    #=== add the filter to subscribe to messages with U.S country code 100 ===#

    $CanadaPort.Filter = "<Filter><Group>" +
                     "<Statement Property='BTS.ReceivePortName' Operator='0' Value='ReceivePortPO'/>" +
                     "<Statement Property='CBRSample.CountryCode' Operator='0' Value='200'/>" +
                     "</Group></Filter>"

    Write-Host("`r`nAdding " + $UsPort.Name + " to catalog ...")
    $Catalog.SaveChanges()

    #=========================================================================================#
    #=== SendPortTranformCollection::Add is marked internal in ExplorerOM for some reason. ===#
    #=== Use WMI to set this as a workaround through PowerShell.                           ===#
    #=========================================================================================#

    WMI_AddOutboundTransformToPort $Catalog.Transforms["CBRSample.CBRInput2CANMap"] $CanadaPort.Name

    Write-Host
}

Éste es un ejemplo de los resultados de la ejecución del script de Windows PowerShell para crear los dos nuevos puertos. Los nuevos puertos también se pueden comprobar en la consola de administración de BizTalk Server como se mencionó anteriormente.

PS C:\> .\CBR.ps1

Adding SendportUSOrders to catalog ...
WMI Processing Transform...
PortName : SendportUSOrders
Transform : CBRSample.CBRInput2USMap,CBRSample, Version=1.0.0.0, Culture=neutral, PublicKeyToken=ba2e1651515c6db7

Adding SendportUSOrders to catalog ...
WMI Processing Transform...
PortName : SendportCANOrders
Transform : CBRSample.CBRInput2CANMap,CBRSample, Version=1.0.0.0, Culture=neutral, PublicKeyToken=ba2e1651515c6db7

Consulte también

Administración-ExplorerOM (carpeta de ejemplos de BizTalk Server)CBRSample (ejemplo de BizTalk Server)