Partager via


CBR (exemple BizTalk Server)

L’exemple CBR illustre l’utilisation des objets d’administration ExplorerOM pour ajouter et configurer de nouveaux ports d’envoi pour le routage basé sur le contenu des messages BizTalk.

Prérequis

  • Cet exemple nécessite que le CBRSample soit déployé en exécutant setup.bat situé dans le < répertoire Samples Path>\Messaging\CBRSample.

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

  • L'exemple de script Windows PowerShell requiert que la stratégie d'exécution de Windows PowerShell autorise l'exécution des scripts. Pour plus d’informations, consultez about_Execution_Policies.

Fonctions de l'exemple

Cet exemple illustre l’utilisation des objets d’administration dans l’espace de noms Microsoft.BizTalk.ExplorerOM pour ajouter deux nouveaux ports à l’exemple CBRApplication. Ces nouveaux ports sont des exemples de ports pour CBRApplication. Les ports sont configurés pour router les messages vers une adresse de service Web HTTP hypothétique à l'aide de l'adaptateur HTTP. L'exemple illustre les opérations suivantes utilisant les objets ExplorerOM :

  • Utilisation de la méthode AddNewSendPort de la classe Application pour ajouter un nouveau port d’envoi appelé SendportUSOrders à CBRApplication. Le port est configuré pour utiliser l'adaptateur HTTP pour le transport avec une adresse Web hypothétique.

  • Ajout d'un filtre à SendportUSOrders, qui s'abonne aux messages dans CBRApplication avec la valeur de code de pays U.S. 100.

  • Ajout du mappage CBRApplication pour la transformation de messages U.S. aux mappages sortants pour SendportUSOrders.

  • Ajout d'un nouveau port nommé SendportCANOrders à CBRApplication et configuration de ce port pour utiliser l'adaptateur HTTP pour le transport avec une adresse Web hypothétique.

  • Ajout d'un filtre à SendportCANOrders, qui s'abonne aux messages dans CBRApplication avec la valeur de code de pays Canada 200.

  • Ajout du mappage CBRApplication pour la transformation de messages canadiens aux mappages sortants pour SendportCANOrders.

Accès à l'exemple

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

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

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

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

Création et exécution de l'exemple

Pour créer l'exemple

  1. Assurez-vous de que vous avez effectué les étapes de création, de déploiement et de configuration de CBRSample. Ces étapes sont fournies dans CBRSample (exemple BizTalk Server).

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

  3. Dans le menu Générer, cliquez sur Générer la solution.

Pour exécuter l'exemple

  1. Ouvrez la console Administration BizTalk Server et accédez au nœud CBRApplication.

  2. Développez le nœud CBRApplication pour vérifier que le nœud Ports d’envoi n’a actuellement que deux ports répertoriés comme CBRUSSendPort et CBRCANSendPort.

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

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

  4. Exécutez le fichier CBR.exe.

  5. Appuyez sur F5 dans la console Administration BizTalk Server pour actualiser l’affichage sous le nœud Ports d’envoi. Vous devez à présent voir les deux ports de nouveau ajoutés à CBRApplication par cet exemple. Ils sont nommés SendportUSOrders et SendportCANOrders.

Exemple de script Windows PowerShell

L'exemple de script Windows PowerShell suivant permet d'illustrer les mêmes fonctionnalités des classes ExplorerOM . Toutefois, étant donné que la méthode Add de la collection SendPort.OutboundTranforms est marquée Interne dans l’assembly ExplorerOM, elle ne peut pas être appelée directement à partir de Windows PowerShell. Ce script Windows PowerShell illustre l'utilisation du fournisseur BizTalk WMI à partir de Windows PowerShell pour ajouter le mappage de transformation sortant au nouveau port.

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
}

Voici un exemple de résultat de l'exécution du script Windows PowerShell pour créer les deux nouveaux ports. Les nouveaux ports peuvent également être vérifiés dans la console d’administration BizTalk Server, comme mentionné ci-dessus.

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

Voir aussi

Administration-ExplorerOM (dossier d’exemples BizTalk Server)CBRSample (exemple BizTalk Server)