次の方法で共有


SendPorts (BizTalk Server サンプル)

SendPorts サンプルでは、 Microsoft.BizTalk.ExplorerOM 管理クラスを使用して送信ポートを列挙および管理する方法を示します。

前提条件

  • このサンプルの管理オブジェクトを使用するには、BizTalk Server管理特権が必要です。

  • Windows PowerShell スクリプトを実行するには、Windows PowerShell 実行ポリシーが必要です。 詳細については、「about_Execution_Policies」を参照してください。

このサンプルの処理

このサンプルでは、Microsoft.BizTalk.ExplorerOM 名前空間の BtsCatalogExplorer クラスと SendPort クラスを使用して、BizTalk Server環境で送信ポートを管理する方法を示します。 このサンプルは、Microsoft Visual C# で記述されています。 このトピックには、Windows PowerShell のスクリプト例も含まれています。 このサンプルは次の操作を示します。

  1. BtsCatalogExplorer クラスを使用して BizTalk 管理データベースに接続します。

  2. myStaticOnewaySendPort1 と myDynamicTwowaySendPort1 という名前の 2 つの新しい送信ポートを作成します。 myStaticOnewaySendPort1 は、その名前が示すように、静的な一方向送信ポートです。 これは、宛先 URL の例で HTTP トランスポートを使用するように作成されます http://sample1. myDynamicTwowaySendPort1 は、動的双方向送信ポートとして作成されます。

  3. BizTalk Server環境での送信ポートの列挙。 この列挙には、2 つの新しい送信ポートが含まれます。

  4. 2 つの新しい送信ポートを削除する。

  5. 新しい送信ポートを構成する。 サンプルで示す構成は、サンプル送信ポート myStaticOnewaySendPort1 に適用されます。 サンプルで適用される構成内容は次のとおりです。

    • メッセージ本文を追跡するための [ポート処理前にメッセージを要求 する] オプションを有効にします。

    • メッセージ本文を追跡するための [ポート処理後にメッセージを要求 する] オプションを有効にします。

    • 送信メッセージで使用する送信ポートの暗号化証明書を指定する。

    • メッセージのセットに対する参加のフィルターを指定する。

    • メッセージを変換するためのマップを追加する。

  6. 2 つの新しい送信ポートの状態を変更する。 サンプルを実行すると、myStaticOnewaySendPort1 の次の状態が変更されます。

    • 状態が "開始" に変更される。

    • 状態が "停止" に変更される。

    • 状態が "バインド済み" に変更される。 "バインド済み" は、参加解除と同じです。

このサンプルの場所

このサンプルは、SDK がある次の場所にあります。

<サンプル パス>\管理\ExplorerOM\SendPorts

次の表は、このサンプルのファイルとその目的を示しています。

ファイル 説明
SendPorts.cs このサンプルで示す操作用の Visual C# ソース ファイル。
SendPorts.sln、SendPorts.csproj、SendPorts.suo このサンプルのソリューション ファイルとプロジェクト ファイル。

このサンプルのビルドおよび実行

このサンプルをビルドするには

  1. Visual Studio で、ソリューション ファイル SendPorts.sln を開きます。

  2. [メイン] メニューの [ビルド] をクリックし、[ソリューションのビルド] をクリックします。

このサンプルを実行するには

  1. コマンド ウィンドウを開き、次のフォルダーに移動します。

    <サンプル パス>\管理\ExplorerOM\SendPorts\bin\Debug

  2. SendPorts.exe ファイルを実行します。

Windows PowerShell スクリプトの例

次のWindows PowerShellスクリプト フラグメントを使用して、ExplorerOM クラスの同じ機能を示すことができます。

Function CreateSendPorts($Catalog)
{
    #=== Register a trap handler to discard changes on exceptions ===#

    $ErrorActionPreference="silentlycontinue"
    trap { "Exception encountered:`r`n"; $_; "`r`nDiscarding Changes.`r`n";$Catalog.DiscardChanges();exit; }

    #=== create a new static one-way send port using HTTP transport ===#

    $myStaticOnewaySendPort = $Catalog.AddNewSendPort($false,$false)
    $myStaticOnewaySendPort.Name = "myStaticOnewaySendPort1"
    $myStaticOnewaySendPort.PrimaryTransport.TransportType = $catalog.ProtocolTypes["HTTP"]
    $myStaticOnewaySendPort.PrimaryTransport.Address = "http://sample1"
    $myStaticOnewaySendPort.SendPipeline = $Catalog.Pipelines["Microsoft.BizTalk.DefaultPipelines.XMLTransmit"]

    #=== create a new dynamic two-way send port ===#

    $myDynamicTwowaySendPort = $catalog.AddNewSendPort($true,$true)
    $myDynamicTwowaySendPort.Name = "myDynamicTwowaySendPort1";
    $myDynamicTwowaySendPort.SendPipeline = $Catalog.Pipelines["Microsoft.BizTalk.DefaultPipelines.XMLTransmit"];
    $myDynamicTwowaySendPort.ReceivePipeline = $Catalog.Pipelines["Microsoft.BizTalk.DefaultPipelines.XMLReceive"];

    #=== Persist new ports to BizTalk configuration database ===#

    Write-Host Adding $myStaticOnewaySendPort.Name...
    Write-Host Adding $myDynamicTwowaySendPort.Name...
    $catalog.SaveChanges();
    Write-Host "`r`nCreateSendPorts() completed."
}

Function DeleteSendPorts($Catalog)
{
    #=== Register a trap handler to discard changes on exceptions ===#

    $ErrorActionPreference="silentlycontinue"
    trap { "Exception encountered:`r`n"; $_; "`r`nDiscarding Changes.`r`n";$Catalog.DiscardChanges();exit; }

    #=== Delete this sample's new send ports by name ===#

    $Catalog.RemoveSendPort($Catalog.SendPorts["myStaticOnewaySendPort1"])
    $Catalog.RemoveSendPort($Catalog.SendPorts["myDynamicTwowaySendPort1"])

    #=== Persist changes to BizTalk configuration database ===#

    $catalog.SaveChanges();
    Write-Host "DeleteSendPorts() completed."
}

Function EnumerateSendPorts($Catalog)
{
    #=== Display all send ports and their status info ===#

    $catalog.SendPorts | format-table -Property Name, Status -autosize

    Write-Host "EnumerateSendPorts`(`) completed."
}

Function ConfigureSendPort($Catalog)
{
    #=== Register a trap handler to discard changes on exceptions ===#

    $ErrorActionPreference="silentlycontinue"
    trap { "Exception encountered:`r`n"; $_; "`r`nDiscarding Changes.`r`n";$Catalog.DiscardChanges();exit; }

    $sendport = $catalog.SendPorts["myStaticOnewaySendPort1"];

    #=== specify tracking settings for tracking ===#

    Write-Host $sendport.Name: Enabling BeforeSendPipeline and AfterSendPipeline message body tracking.
    $sendport.Tracking = ([Microsoft.BizTalk.ExplorerOM.TrackingTypes] "BeforeSendPipeline" -bor
                         [Microsoft.BizTalk.ExplorerOM.TrackingTypes] "AfterSendPipeline")

    #=== specify an encryption certificate for outgoing messages ===#

    Write-Host $sendport.Name: Adding a encryption certificate
    foreach ($certificate in $catalog.Certificates)
    {
        if ($certificate.UsageType -eq [Microsoft.BizTalk.ExplorerOM.CertUsageType] "Encryption")
        {
            $sendport.EncryptionCert = $certificate
        }
    }

    #=== specify filters for content-based routing ===#
    Write-Host $sendport.Name: Adding a filter
    $sendport.Filter = "<Filter><Group>" +
                       "<Statement Property='SMTP.Subject' Operator='0' Value='Purchase Order'/>" +
                       "<Statement Property='SMTP.From' Operator='0' Value='Customer'/>" +
                       "</Group></Filter>"

    #=== specify transform maps for document normalization ===#

    foreach ($transform in $catalog.Transforms)
    {
        if (($transform.SourceSchema.FullName -ieq "myPO") -and (transform.TargetSchema.FullName -ieq "partnerPO"))
        {
            Write-Host $sendport.Name: Adding a transform
            $sendport.OutboundTransforms.Add($transform)
        }
    }

    #=== Persist all changes to BizTalk configuration database ===#

    Write-Host $sendport.Name: Saving changes
    $catalog.SaveChanges();
    Write-Host "`r`nConfigureSendPort() completed."
}

Function ChangeSendPortStatus($Catalog)
{
    #=== Register a trap handler to discard changes on exceptions ===#

    $ErrorActionPreference="silentlycontinue"
    trap { "Exception encountered:`r`n"; $_; "`r`nDiscarding Changes.`r`n";$Catalog.DiscardChanges();exit; }

    $sendport = $catalog.SendPorts["myStaticOnewaySendPort1"];

    #=== start the send port to begin processing messages ===#

    $sendport.Status = [Microsoft.BizTalk.ExplorerOM.PortStatus] "Started"
    Write-Host Changing ($sendport.Name) status to ($sendport.Status)...
    $catalog.SaveChanges();
    Write-Host Complete.

    #=== stop the send port to stop processing and suspend messages ===#

    $sendport.Status = [Microsoft.BizTalk.ExplorerOM.PortStatus] "Stopped"
    Write-Host Changing ($sendport.Name) status to ($sendport.Status)...
    $catalog.SaveChanges();
    Write-Host Complete.

    #=== unenlist the send port to stop processing and discard messages ===#

    $sendport.Status = [Microsoft.BizTalk.ExplorerOM.PortStatus] "Bound"
    Write-Host Changing ($sendport.Name) status to ($sendport.Status)`(Unenlisted`)...
    $catalog.SaveChanges();
    Write-Host Complete.
}

#=== Main Script Body ===#

#=== 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"

#=== Exercise the CreateSendPorts function to create the two new ports ===#

Write-Host "`r`n========================="
Write-Host "=== CreateSendPorts`(`) ==="
Write-Host "=========================`r`n"
CreateSendPorts $Catalog

#=== Enumerate all send ports to view the two new ports ===#

Write-Host "`r`n============================"
Write-Host "=== EnumerateSendPorts`(`) ==="
Write-Host "============================`r`n"
EnumerateSendPorts $Catalog

#=== Add some configuration to the static send port ===#

Write-Host "`r`n==========================="
Write-Host "=== ConfigureSendPort`(`) ==="
Write-Host "===========================`r`n"
ConfigureSendPort $Catalog

#=== Cycle through some status changes on the static send port ===#

Write-Host "`r`n=============================="
Write-Host "=== ChangeSendPortStatus`(`) ==="
Write-Host "==============================`r`n"
ChangeSendPortStatus $Catalog

#=== Delete the two new ports ===#

Write-Host "`r`n========================="
Write-Host "=== DeleteSendPorts`(`) ==="
Write-Host "=========================`r`n"
DeleteSendPorts $Catalog

Write-Host

次に、Windows PowerShell スクリプト サンプルの実行により想定される出力例を示します。

PS C:\> & 'C:\SendPorts.ps1'

=========================
=== CreateSendPorts() ===
=========================

Adding myStaticOnewaySendPort1 ...
Adding myDynamicTwowaySendPort1 ...

CreateSendPorts() completed.

============================
=== EnumerateSendPorts() ===
============================

Name                      Status
----                      ------
ResendPort               Started
HelloWorldSendPort       Started
ToCustomerSendPort       Started
CBRUSSendPort            Started
CBRCANSendPort           Started
SendportCANOrders          Bound
myStaticOnewaySendPort1    Bound
myDynamicTwowaySendPort1   Bound

EnumerateSendPorts() completed.

===========================
=== ConfigureSendPort() ===
===========================

myStaticOnewaySendPort1 : Enabling BeforeSendPipeline and AfterSendPipeline message body tracking.
myStaticOnewaySendPort1 : Adding a encryption certificate
myStaticOnewaySendPort1 : Adding a filter
myStaticOnewaySendPort1 : Saving changes

ConfigureSendPort() completed.

==============================
=== ChangeSendPortStatus() ===
==============================

Changing myStaticOnewaySendPort1 status to Started ...
Complete.
Changing myStaticOnewaySendPort1 status to Stopped ...
Complete.
Changing myStaticOnewaySendPort1 status to Bound (Unenlisted)...
Complete.

=========================
=== DeleteSendPorts() ===
=========================

DeleteSendPorts() completed.

参照

Admin-ExplorerOM (BizTalk Server Samples フォルダー)