ReceiveLocations (Empfangsspeicherorte – BizTalk Server-Beispiel)
Im ReceiveLocations-Beispiel wird veranschaulicht, wie Sie Empfangsspeicherorte in der BizTalk Server-Umgebung mithilfe der ExplorerOM-Verwaltungsobjekte erstellen. Weitere Informationen zu Empfangsspeicherorten im Allgemeinen finden Sie unter Empfangsspeicherorte.
Voraussetzungen
Sie müssen über BizTalk Server Administratorrechte verfügen, um die Administrativen Objekte in diesem Beispiel verwenden zu können.
Für die Skriptausführung erfordert das Windows PowerShell-Skript die Windows PowerShell-Ausführungsrichtlinie. Weitere Informationen finden Sie unter Überprüfen der Ausführungsrichtlinie.
Ziel des Beispiels
In diesem Beispiel wird die Verwendung der ExplorerOM-Verwaltungsklassen zum Erstellen und Konfigurieren von Empfangsports und Empfangsspeicherorten veranschaulicht. Ein Windows PowerShell-Beispielskript ist ebenfalls Bestandteil dieses Themas. Im Beispiel werden die folgenden Vorgänge ausgeführt:
Erstellen eines neuen Empfangsports namens „Mein Empfangsport“.
Erstellen eines neuen Empfangsspeicherorts, der dem neuen Port zugeordnet und für die Verwendung des HTTP-Transportprotokolls konfiguriert ist.
Dieses Beispiel enthält außerdem exemplarische Vorgehensweisen zum Löschen und Auflisten von Empfangsports und -speicherorten.
Speicherort dieses Beispiels
Dieses Beispiel befindet sich am folgenden SDK-Speicherort:
<Beispielpfad> \Admin\ExplorerOM\ReceiveLocations
In der folgenden Tabelle werden die Dateien in diesem Beispiel samt Zweck beschrieben.
Datei(en) | BESCHREIBUNG |
---|---|
ReceiveLocations.cs | Visual C#-Quelldatei für die vorgänge, die in diesem Beispiel veranschaulicht werden. |
ReceiveLocations.sln und ReceiveLocations.csproj | Projektmappen- und Projektdateien für dieses Beispiel |
Erstellen und Ausführen dieses Beispiels
So erstellen Sie dieses Beispiel
Öffnen Sie in Visual Studio die Projektmappendatei ReceiveLocations.sln.
Klicken Sie im Menü Erstellen auf Projektmappe erstellen.
So führen Sie dieses Beispiel aus
Öffnen Sie eine Eingabeaufforderung mit BizTalk Server Administratorrechten.
Wechseln Sie zum < Verzeichnis Samples>\Admin\ExplorerOM\ReceiveLocations\bin\debug.
Führen Sie ReceiveLocations.exe aus.
Zeigen Sie den neuen Empfangsport und den neuen Empfangsspeicherort mit der BizTalk Server Verwaltungskonsole an.
Beispiel für ein Windows PowerShell-Skript
Das folgende PowerShell-Beispielskript veranschaulicht dieselben Vorgänge wie die Visual C#-Version. Stellen Sie sicher, dass die Skriptausführungsrichtlinie entsprechend dem Abschnitt mit den Anforderungen in diesem Thema ordnungsgemäß konfiguriert wurde.
#==================================================================#
#=== ===#
#=== 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
Hier ist eine Beispielausgabe aus der PowerShell-Skriptausführung, die den zu erstellenden und zu löschenden Empfangsport und -speicherort zeigt:
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
Weitere Informationen
EmpfangsorteAdmin-ExplorerOM (BizTalk Server Beispielordner)