Freigeben über


CBR (BizTalk Server-Beispiel)

Das CBR-Beispiel veranschaulicht die Verwendung der ExplorerOM-Verwaltungsobjekte zum Hinzufügen und Konfigurieren neuer Sendeports für das inhaltsbasierte Routing von BizTalk-Nachrichten.

Voraussetzungen

  • Für dieses Beispiel muss cbRSample bereitgestellt werden, indem setup.bat im < Verzeichnis Samples Path>\Messaging\CBRSample ausgeführt wird.

  • Sie müssen über BizTalk Server Administratorrechte verfügen, um die Administrativen Objekte in diesem Beispiel verwenden zu können.

  • Für die Skriptausführung erfordert das Windows PowerShell-Skriptbeispiel die Windows PowerShell-Ausführungsrichtlinie. Weitere Informationen finden Sie unter about_Execution_Policies.

Ziel des Beispiels

In diesem Beispiel wird die Verwendung der Administrativen Objekte im Microsoft.BizTalk.ExplorerOM-Namespace veranschaulicht, um dem CBRApplication-Beispiel zwei neue Ports hinzuzufügen. Bei diesen neuen Ports handelt es sich um Beispielports für CBRApplication. Die Ports sind so konfiguriert, dass Nachrichten mit dem HTTP-Adapter an eine hypothetische HTTP-Webdienstadresse weitergeleitet werden. Mit dem Beispiel werden die folgenden Vorgänge unter Verwendung der ExplorerOM -Objekte veranschaulicht:

  • Verwenden der AddNewSendPort-Methode der Application-Klasse zum Hinzufügen eines neuen Sendeports namens SendportUSOrders zu CBRApplication. Der Port ist so konfiguriert, dass für den Transport der HTTP-Adapter mit einer hypothetischen Webadresse verwendet wird.

  • Hinzufügen eines Filters zu SendportUSOrders, der die Nachrichten in CBRApplication mit der Landeskennzahl für die USA (100) abonniert.

  • Hinzufügen der CBRApplication-Zuordnung für die Transformation von Nachrichten aus den USA zu den ausgehenden Zuordnungen für SendportUSOrders.

  • Hinzufügen eines neuen Sendeports namens SendportCANOrders zu CBRApplication und Konfigurieren des Ports, so dass für den Transport der HTTP-Adapter mit einer hypothetischen Webadresse verwendet wird.

  • Hinzufügen eines Filters zu SendportCANOrders, der die Nachrichten in CBRApplication mit der Landeskennzahl für Kanada (200) abonniert.

  • Hinzufügen der CBRApplication-Zuordnung für die Transformation von Nachrichten aus Kanada zu den ausgehenden Zuordnungen für SendportCANOrders.

Speicherort dieses Beispiels

Das Beispiel ist im folgenden SDK-Verzeichnis gespeichert:

<Beispielpfad>\Admin\ExplorerOM\CBR

In der folgenden Tabelle werden die Dateien in diesem Beispiel samt Zweck beschrieben.

Datei(en) BESCHREIBUNG
ContentBasedRouting.cs Visual C#-Quelldatei für Vorgänge, die in diesem Beispiel veranschaulicht werden.
CBR.sln, CBR.csproj, CBR.suo Die Projektmappen- und Projektdateien für das Beispiel.

Erstellen und Ausführen dieses Beispiels

So erstellen Sie dieses Beispiel

  1. Sie müssen zuerst die Schritte zum Erstellen, Bereitstellen und Konfigurieren von CBRSample abgeschlossen haben. Diese Schritte werden in CBRSample (BizTalk Server Beispiel) bereitgestellt.

  2. Öffnen Sie in Visual Studio die Projektmappendatei CBR.sln.

  3. Klicken Sie im Menü Erstellen auf Projektmappe erstellen.

So führen Sie dieses Beispiel aus

  1. Öffnen Sie die BizTalk Server-Verwaltungskonsole, und navigieren Sie zum Knoten CBRApplication.

  2. Erweitern Sie den Knoten CBRApplication , um zu überprüfen, ob der Knoten Sendeports derzeit nur über zwei Ports verfügt, die als CBRUSSendPort und CBRCANSendPort aufgeführt sind.

  3. Öffnen Sie ein Befehlsfenster, und navigieren Sie zum folgenden Ordner:

    <Beispielpfad>\Admin\ExplorerOM\CBR\bin\Debug

  4. Führen Sie die Datei CBR.exe aus.

  5. Drücken Sie F5 in der BizTalk Server Verwaltungskonsole, um die Ansicht unter dem Knoten Sendeports zu aktualisieren. Jetzt sollten die zwei neuen Ports, die CBRApplication in diesem Beispiel hinzugefügt wurden, angezeigt werden. Hierbei handelt es sich um SendportUSOrders und SendportCANOrders.

Beispiel für ein Windows PowerShell-Skript

Mit dem folgenden Windows PowerShell-Skript können identische Funktionen der ExplorerOM -Klassen veranschaulicht werden. Da die Add-Methode für die SendPort.OutboundTranforms-Auflistung in der ExplorerOM-Assembly jedoch als Intern gekennzeichnet ist, kann sie nicht direkt von Windows PowerShell aufgerufen werden. Dieses Windows PowerShell-Skript veranschaulicht, wie Sie mit dem BizTalk WMI-Provider aus Windows PowerShell heraus die ausgehenden Zuordnungen für die Transformation dem neuen Port hinzufügen.

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
}

Nachfolgend sehen Sie ein Beispiel für die Ausführung des Windows PowerShell-Skripts zum Erstellen der zwei neuen Ports: Die neuen Ports können auch wie oben erwähnt in der BizTalk Server-Verwaltungskonsole überprüft werden.

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

Weitere Informationen

Admin-ExplorerOM (BizTalk Server Beispielordner)CBRSample (BizTalk Server Beispiel)