Freigeben über


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

  1. Öffnen Sie in Visual Studio die Projektmappendatei ReceiveLocations.sln.

  2. Klicken Sie im Menü Erstellen auf Projektmappe erstellen.

So führen Sie dieses Beispiel aus

  1. Öffnen Sie eine Eingabeaufforderung mit BizTalk Server Administratorrechten.

  2. Wechseln Sie zum < Verzeichnis Samples>\Admin\ExplorerOM\ReceiveLocations\bin\debug.

  3. Führen Sie ReceiveLocations.exe aus.

  4. 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)