CBR (esempio di BizTalk Server)
L'esempio CBR illustra l'uso degli oggetti amministrativi ExplorerOM per aggiungere e configurare nuove porte di invio per il routing basato sul contenuto dei messaggi BizTalk.
Prerequisiti
Questo esempio richiede che CBRSample venga distribuito eseguendo setup.bat che si trova nella < directory Samples Path>\Messaging\CBRSample.
È necessario disporre di BizTalk Server privilegi amministrativi per usare gli oggetti amministrativi in questo esempio.
L'esecuzione dell'esempio di script di Windows PowerShell richiede i criteri di esecuzione di Windows PowerShell. Per altre informazioni, vedere about_Execution_Policies.
Scopo dell'esempio
Questo esempio illustra l'uso degli oggetti amministrativi nello spazio dei nomi Microsoft.BizTalk.ExplorerOM per aggiungere due nuove porte all'esempio CBRApplication. Si tratta di porte di esempio per CBRApplication, configurate per il routing di messaggi all'indirizzo di un ipotetico servizio Web HTTP tramite l'adapter HTTP. Nell'esempio vengono illustrate le operazioni seguenti utilizzando gli oggetti di ExplorerOM :
Uso del metodo AddNewSendPort della classe Application per aggiungere una nuova porta di trasmissione denominata SendportUSOrders a CBRApplication. La porta è configurata per l'utilizzo dell'adapter HTTP per il trasporto con un ipotetico indirizzo Web.
Aggiunta di un filtro in SendportUSOrders che sottoscrive i messaggi in CBRApplication con il valore 100 del codice paese USA.
Aggiunta della mappa CBRApplication per trasformare i messaggi USA nelle mappe in uscita per SendportUSOrders.
Aggiunta di una nuova porta di trasmissione denominata SendportCANOrders in CBRApplication e configurazione per l'utilizzo dell'adapter HTTP per il trasporto con un ipotetico indirizzo Web.
Aggiunta di un filtro in SendportUSOrders che sottoscrive i messaggi in CBRApplication con il valore 200 del codice paese Canada.
Aggiunta della mappa CBRApplication per trasformare i messaggi canadesi nelle mappe in uscita per SendportCANOrders.
Percorso dell'esempio
L'esempio è disponibile nel seguente percorso dell'SDK:
<Percorso> esempi\Amministrazione\ExplorerOM\CBR
Nella seguente tabella sono riportati i file inclusi nell'esempio e ne viene descritto lo scopo.
File | Descrizione |
---|---|
ContentBasedRouting.cs | File di origine visual C# per le operazioni illustrate in questo esempio. |
CBR.sln, CBR.csproj, CBR.suo | File di soluzione e di progetto per l'esempio. |
Compilazione ed esecuzione dell'esempio
Per generare l'esempio
Assicurarsi di che avere completato i passaggi per la compilazione, la distribuzione e la configurazione dell'esempio CBRSample. Questi passaggi vengono forniti in CBRSample (BizTalk Server Esempio).
In Visual Studio aprire il file di soluzione CBR.sln.
Nel menu Compila scegliere Compila soluzione.
Per eseguire questo esempio
Aprire la console di amministrazione BizTalk Server e passare al nodo CBRApplication.
Espandere il nodo CBRApplication per verificare che il nodo Porte di trasmissione abbia attualmente solo due porte elencate come CBRUSSendPort e CBRCANSendPort.
Aprire una finestra di comando e passare alla cartella seguente:
<Percorso> esempi\Amministrazione\ExplorerOM\CBR\bin\Debug
Eseguire il file CBR.exe.
Premere F5 nella console di amministrazione BizTalk Server per aggiornare la visualizzazione nel nodo Porte di invio. Verranno visualizzate le due nuove porte aggiunte in CBRApplication tramite l'esempio, denominate SendportUSOrders e SendportCANOrders.
Esempio di script di Windows PowerShell
Il seguente script di Windows PowerShell può essere utilizzato per illustrare le stesse funzionalità delle classi di ExplorerOM : Tuttavia, poiché il metodo Add per l'insieme SendPort.OutboundTranforms è contrassegnato Come interno nell'assembly ExplorerOM non può essere chiamato direttamente dall'Windows PowerShell. In questo script di Windows PowerShell viene illustrato l'utilizzo del provider WMI di BizTalk da Windows PowerShell per l'aggiunta della mappa di trasformazione in uscita alla nuova porta.
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
}
Di seguito è riportato un esempio di output dell'esecuzione dello script di Windows PowerShell per la creazione delle due nuove porte. Le nuove porte possono essere verificate anche nella console di amministrazione BizTalk Server, come indicato in precedenza.
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
Vedere anche
Amministrazione-ExplorerOM (BizTalk Server cartella esempi)CBRSample (esempio di BizTalk Server)