CBR (BizTalk Server 範例)
CBR 範例示範如何使用 ExplorerOM 系統管理物件來新增和設定 BizTalk 訊息內容型路由的新傳送埠。
必要條件
此範例需要執行位於 <Samples Path> \Messaging\CBRSample 目錄中的 setup.bat 來部署 CBRSample。
您必須擁有BizTalk Server系統管理許可權,才能使用此範例中的系統管理物件。
Windows PowerShell 指令碼範例需要 Windows PowerShell 執行原則來允許指令碼執行。 如需詳細資訊,請參閱 about_Execution_Policies。
此範例的用途
此範例示範如何使用 Microsoft.BizTalk.ExplorerOM 命名空間中的系統管理物件,將兩個新的埠新增至 CBRApplication 範例。 這些新埠是 CBRApplication 的範例埠。 埠會設定為使用 HTTP 配接器將訊息路由傳送至假設的 HTTP Web 服務位址。 此範例會使用 ExplorerOM 物件示範下列作業:
使用Application類別的AddNewSendPort方法,將名為 SendportUSOrders 的新傳送埠新增至 CBRApplication。 埠會設定為使用 HTTP 配接器搭配假設的網址進行傳輸。
將篩選新增至 SendportUSOrders,以使用美國國家/地區代碼值 100 訂閱 CBRApplication 中的訊息。
將 CBRApplication 對應新增至 SendportUSOrders 的輸出對應,以轉換美國訊息。
將名為 SendportCANOrders 的新傳送埠新增至 CBRApplication,並將它設定為使用 HTTP 配接器搭配假設的網址進行傳輸。
將篩選新增至 SendportCANOrders,以使用加拿大國家/地區代碼值為 200 的 CBRApplication 訂閱訊息。
將 CBRApplication 對應新增至 SendportCANOrders 的輸出對應,以轉換加拿大訊息。
此範例的位置
這個範例位於下列 SDK 位置:
<範例路徑>\管理員\ExplorerOM\CBR
下表顯示此範例中的檔案,並描述其用途。
檔案 | Description |
---|---|
ContentBasedRouting.cs | 此範例中示範之作業的 Visual C# 原始程式檔。 |
CBR.sln、CBR.csproj、CBR.suo | 此範例的方案和專案檔。 |
建置和執行此範例
建置此範例
請確定您已完成建置、部署和設定 CBRSample 的步驟。 這些步驟是在CBRSample (BizTalk Server 範例) 中提供。
在 Visual Studio 中,開啟方案檔 CBR.sln。
在 [建置] 功能表上,按一下 [建置方案]。
執行此範例
開啟 BizTalk Server 管理主控台,然後流覽至CBRApplication節點。
展開 CBRApplication 節點,以確認 [ 傳送埠 ] 節點目前只有兩個埠列為 CBRUSSendPort 和 CBRCANSendPort。
開啟命令視窗並巡覽至下列資料夾:
<範例路徑>\管理員\ExplorerOM\CBR\bin\Debug
執行檔案 CBR.exe。
在 BizTalk Server 管理主控台中按 F5,以重新整理 [傳送埠] 節點下的檢視。 您現在應該會看到此範例新增至 CBRApplication 的兩個新埠。 它們稱為 SendportUSOrders 和 SendportCANOrders。
Windows PowerShell 指令碼範例
下列 Windows PowerShell 指令碼可以用來示範 ExplorerOM 類別的相同功能。 不過,由於SendPort.OutboundTranforms集合的Add方法在ExplorerOM元件中標示為 Internal,因此無法直接從 Windows PowerShell 呼叫。 此Windows PowerShell腳本示範如何使用來自 Windows PowerShell 的 BizTalk WMI 提供者,將輸出轉換對應新增至新的埠。
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
}
以下是執行Windows PowerShell腳本以建立兩個新埠的範例輸出。 如前所述,您也可以在 BizTalk Server 管理主控台中驗證新的埠。
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
另請參閱
管理員-ExplorerOM (BizTalk Server 範例資料夾) CBRSample (BizTalk Server 範例)