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 适配器与假设的 Web 地址一起使用。
将筛选器添加到订阅美国国家/地区代码值为 100 的 CBRApplication 中的消息的 SendportUSOrders。
添加 CBRApplication 映射,将基于美国的消息转换为 SendportUSOrders 的出站映射。
将名为 SendportCANOrders 的新发送端口添加到 CBRApplication,并将其配置为将用于传输的 HTTP 适配器与假设的 Web 地址一起使用。
将筛选器添加到订阅加拿大国家/地区代码值为 200 的 CBRApplication 中的消息的 SendportCANOrders。
添加 CBRApplication 映射,将基于加拿大的消息转换为 SendportCANOrders 的出站映射。
本示例的所在位置
本示例位于以下 SDK 位置中:
<示例路径>\管理员\ExplorerOM\CBR
下表显示了本示例中的文件及其用途说明:
文件 | 说明 |
---|---|
ContentBasedRouting.cs | 此示例中演示的操作的 Visual C# 源文件。 |
CBR.sln、CBR.csproj、CBR.suo | 示例的解决方案文件和项目文件。 |
生成并运行本示例
生成示例
确保您已经完成了构建、部署和配置 CBRSample 的步骤。 这些步骤在 CBRSample (BizTalk Server Sample) 中提供。
在 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 示例)