ReceiveLocations (BizTalk Server サンプル)
ReceiveLocations サンプルは、ExplorerOM 管理オブジェクトを使用して、BizTalk Server環境で受信場所を作成する方法を示しています。 一般的な受信場所の詳細については、「 受信場所」を参照してください。
前提条件
このサンプルの管理オブジェクトを使用するには、BizTalk Server管理特権が必要です。
Windows PowerShell スクリプトを実行するには、Windows PowerShell 実行ポリシーが必要です。 詳細については、「 実行ポリシーの確認」を参照してください。
このサンプルの処理
このサンプルでは、 ExplorerOM 管理クラスを使用して、受信ポートと受信場所を作成および構成する方法を示します。 このトピックには、Windows PowerShell のスクリプト例も含まれています。 このサンプルは、次の操作を実行します。
"My Receive Port" という名前の新しい受信ポートを作成します。
新しいポートに関連付けられ、HTTP トランスポート プロトコルを使用するよう構成された新しい受信場所を作成します。
このサンプルには、受信ポートと受信場所の削除と列挙を行う手順の例も含まれています。
このサンプルの場所
このサンプルは、次の SDK の場所にあります。
<サンプル パス>\管理\ExplorerOM\ReceiveLocations
次の表は、このサンプルのファイルとその目的を示しています。
ファイル | 説明 |
---|---|
ReceiveLocations.cs | このサンプルで示されている操作用の Visual C# ソース ファイル。 |
ReceiveLocations.sln と ReceiveLocations.csproj | このサンプルのソリューション ファイルとプロジェクト ファイルです。 |
このサンプルのビルドおよび実行
このサンプルをビルドするには
Visual Studio で、ソリューション ファイル ReceiveLocations.sln を開きます。
[ビルド] メニューの [ソリューションのビルド] をクリックします。
このサンプルを実行するには
BizTalk Server管理特権を使用してコマンド プロンプトを開きます。
Samples>\管理\ExplorerOM\ReceiveLocations\bin\debug ディレクトリに<移動します。
ReceiveLocations.exe を実行します。
BizTalk Server管理コンソールを使用して、新しい受信ポートと受信場所を表示します。
Windows PowerShell スクリプトの例
次の PowerShell サンプル スクリプトは、Visual C# バージョンと同じ操作を示しています。 このトピックの要件セクションで示したように、スクリプト実行ポリシーが正しく構成されていることを確認します。
#==================================================================#
#=== ===#
#=== Create a new receive port named "My Receive Port" as an ===#
#=== example. ===#
#=== ===#
#=== A new receive location will also be created and associated ===#
#=== with the receive port. ===#
#=== ===#
#==================================================================#
Function CreateAndConfigureReceiveLocation()
{
$myreceivePort = $catalog.AddNewReceivePort($false)
#=== Note that if you don’t set the name property for the receieve port, ===#
#=== it will create a new receive location and add it to the receive ===#
#=== port. ===#
$myreceivePort.Name = "My Receive Port"
#=== Create a new receive location and add it to the receive port ===#
$myreceiveLocation = $myreceivePort.AddNewReceiveLocation()
foreach ($handler in $catalog.ReceiveHandlers)
{
if ($handler.TransportType.Name -eq "HTTP")
{
$myreceiveLocation.ReceiveHandler = $handler
break
}
}
#=== Associate a transport protocol and URI with the receive location. ===#
$myreceiveLocation.TransportType = $catalog.ProtocolTypes["HTTP"]
$myreceiveLocation.Address = "/home"
#=== Assign the first receive pipeline found to process the message. ===#
foreach ($pipeline in $catalog.Pipelines)
{
if ($pipeline.Type -eq [Microsoft.Biztalk.ExplorerOM.PipelineType] "Receive")
{
$myreceiveLocation.ReceivePipeline = $pipeline
break
}
#=== Enable the receive location. ===#
$myreceiveLocation.Enable = $true
#=== Optional Properties ===#
$myreceiveLocation.FragmentMessages = [Microsoft.BizTalk.ExplorerOM.Fragmentation] "Yes"
$myreceiveLocation.ServiceWindowEnabled = $false
}
#=== Try to commit the changes made so far. If the commit fails, ===#
#=== roll back all changes. ===#
$catalog.SaveChanges()
}
#===============================================================#
#=== ===#
#=== Delete the receive port named "My Receive Port" ===#
#=== ===#
#===============================================================#
Function DeleteReceivePort
{
$receivePort = $catalog.ReceivePorts["My Receive Port"]
if ($receivePort -ne $null)
{
#=== Enumerate the receive locations. ===#
foreach ($location in $receivePort.ReceiveLocations)
{
if (($location.Name -eq "Receive Location1") -and ($location.IsPrimary -eq $false))
{
$receivePort.RemoveReceiveLocation($location)
}
}
$catalog.RemoveReceivePort($receivePort)
#=== Try to commit the changes made so far. If the commit fails, ===#
#=== roll back all changes in the trap handler. ===#
$catalog.SaveChanges()
}
}
#================================================================#
#=== ===#
#=== Enumerate the receive ports and their receive locations. ===#
#=== ===#
#================================================================#
Function EnumerateReceiveLocations
{
#=== Enumerate the receive locations in each of the receive ports. ===#
foreach ($receivePort in $catalog.ReceivePorts)
{
Write-host "`r`n$($receivePort.Name)"
#=== Enumerate the receive locations. ===#
foreach ($location in $receivePort.ReceiveLocations)
{
Write-Host "`t$($location.Name)"
}
}
Write-host ""
}
#===================#
#=== 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"
#==================================================================#
#=== Register a trap handler to discard changes on exceptions ===#
#=== Execution will continue in the event we want to delete the ===#
#=== receive port. ===#
#==================================================================#
$Script:NoExceptionOccurred = $true
$ErrorActionPreference="silentlycontinue"
trap
{
$Script:NoExceptionOccurred = $false
"Exception encountered:`r`n"; $_; "`r`nDiscarding Changes and continuing execution so we can attempt to clean up the receive port...`r`n"
$Catalog.DiscardChanges()
}
#=== Create the new receive port with its new receive location ===#
CreateAndConfigureReceiveLocation
Write-Host "`r`n`"My Receive Port`" created."
#=== Enumerate each receive port along with its receive locations ===#
Write-Host "`r`nEnumerating all receive ports...`r`n"
EnumerateReceiveLocations
#=== Prompt before removing the new example receive port and location ===#
Write-Host "`r`nPress <ENTER> to delete `"My Receive Port`"..."
Read-Host
DeleteReceivePort
#=== Enumerate again to show the receive port and location was removed ===#
Write-Host "`r`nEnumerating all receive ports to show `"My Receive Port`" was removed...`r`n"
EnumerateReceiveLocations
次に、作成され削除される受信ポートと受信場所を示す PowerShell スクリプト実行からの出力例を示します。
PS C:\> .\ReceiveLocations.ps1
"My Receive Port" created.
Enumerating all receive ports...
BatchControlMessageRecvPort
BatchControlMessageRecvLoc
ResendReceivePort
ResendReceiveLocation
HelloWorldReceivePort
HelloWorldReceiveLocation
CBRReceivePort
CBRReceiveLocation
RP_ReceivePOFromInternal
RL_ReceivePOFromInternal
RP_ShipmentAgency1_OrderFiles
RL_ShipmentAgency1_OrderFiles
RP_ShipmentAgency2_OrderFiles
RL_ShipmentAgency2_OrderFiles
RP_ReceivePOFromBuyer
RL_ReceivePOFromBuyer
RP_Receive_ShipmentAgency_Ack
RL_Receive_ShipmentAgency_Ack
My Receive Port
Receive Location1
Press <ENTER> to delete "My Receive Port"...
Enumerating all receive ports to show "My Receive Port" was removed...
BatchControlMessageRecvPort
BatchControlMessageRecvLoc
ResendReceivePort
ResendReceiveLocation
HelloWorldReceivePort
HelloWorldReceiveLocation
CBRReceivePort
CBRReceiveLocation
RP_ReceivePOFromInternal
RL_ReceivePOFromInternal
RP_ShipmentAgency1_OrderFiles
RL_ShipmentAgency1_OrderFiles
RP_ShipmentAgency2_OrderFiles
RL_ShipmentAgency2_OrderFiles
RP_ReceivePOFromBuyer
RL_ReceivePOFromBuyer
RP_Receive_ShipmentAgency_Ack
RL_Receive_ShipmentAgency_Ack