方法: LDAP クエリを利用してメール アドレスにメッセージを動的に送信するスケジュールを作成する
目標
このセクションでは、LDAP (ライトウェイト ディレクトリ アクセス プロトコル) を介して電子メール アドレスを照会し、BizTalk Server SMTP アダプターを使用して解決されたエンドポイントに電子メール メッセージを送信するスケジュールを作成する方法について説明します。
このハウツー トピックでは、次の手順を実行します。
LDAP クエリを使用してメッセージを動的にルーティングするためのスケジュール ルーティング スリップを作成します。
スケジュール テスト クライアント サンプル アプリケーションを使用して、旅程をテストします。
前提条件
このハウツー トピックの手順では、 開発アクティビティの前提条件を完了する必要があります。
このセクションを完了するコンピューターは、Microsoft Active Directory ディレクトリ サービスを構成して実行している必要があります (コンピューターがドメイン コントローラーである必要はありませんが、ドメインに接続されている必要があります)。 また、SMTP サーバーを構成して実行する必要があります。このハウツー トピックの結果をテストするには、ESB から送信された電子メールをチェックするクライアントが必要です。
このセクションの手順では、グローバル バンクという名前のorganizationを想定し、ドメインが globalbank.com で、プロファイルに有効な電子メール アドレスを持つ John Evans という名前のユーザーを含む Employees という Active Directory 組織単位を持ちます (例: johne@globalbank.com)。 これらの環境要因を複製する必要はありません。ただし、環境でこの実装を再作成する目的で、これらの要因を考慮し、必要に応じて代替を行ってください。
手順
ESB スケジュール ドメイン固有言語 (DSL) モデルを作成するには
Visual Studio で C:\HowTos\Patterns\Patterns.slnを開きます。
ソリューション エクスプローラーで、ItineraryLibrary プロジェクトを右クリックし、[追加] をポイントして、[新しいスケジュール] をクリックします。
[新しい項目の追加] ダイアログ ボックスの [名前] ボックスに「LdapResolution」と入力し、[追加] をクリックします。
旅程のプロパティを構成するには
Visual Studio で、 LdapResolution.itinerary のデザイン画面をクリックします。 LdapResolution プロパティ ウィンドウで、次のプロパティを構成します。
[ モデル エクスポーター ] ドロップダウン リストで、[ XML スケジュール エクスポーター] をクリックします。
[ エクステンダーの設定] セクションの [ スケジュール XML ファイル ] プロパティの横にある省略記号ボタン (...) をクリックします。
[XML ファイルの選択] ダイアログ ボックスで、[ファイル名] ボックスに「C:\HowTos\Itineraries\LdapResolution」と入力し、[保存] をクリックします。
注意
この手順では、スケジュールを XML としてローカル ファイルの場所にエクスポートできます。 スケジュールデータベースではなく、ローカルファイルの場所に旅程をエクスポートすることで、ESBテストクライアントアプリケーションを使用して旅程のテストを行えます。 このプロセスは、このハウツー トピックの後半で完了します。
旅程の構造を定義するには
ツールボックスから、 On-Ramp モデル要素をデザインサーフェイスにドラッグします。 OnRamp1 プロパティ ウィンドウで、次のプロパティを構成します。
Name プロパティをクリックし、「ReceiveNAOrder」と入力します。
[ エクステンダー ] ドロップダウン リストで、[ On-Ramp ESB エクステンダー] をクリックします。
[BizTalk アプリケーション] ドロップダウン リストで、[Microsoft.Practices.ESB] をクリックします。
[ 受信ポート ] ドロップダウン リストで、[ OnRamp.Itinerary] をクリックします。
ツールボックスから、 Itinerary Service モデル要素をデザインサーフェイスにドラッグし、 On-Ramp モデル要素の右側に配置します。 ItineraryService1 プロパティ ウィンドウで、次のプロパティを構成します。
Name プロパティをクリックし、「RouteMessageEmail」と入力します。
[ スケジュール サービス エクステンダー ] ドロップダウン リストで、[ メッセージング エクステンダー] をクリックします。
注意
このプロパティは、プロセスがパイプライン (メッセージング) で実行されることを定義します。 または、プロセスがオーケストレーションで行われる場合は、 スケジュール サービス エクステンダー プロパティを オーケストレーション エクステンダーに設定します。
[ コンテナー ] ドロップダウン リストで、[ ReceiveNAOrder] を展開し、[ Receive Handlers]\(受信ハンドラー\) をクリックします。
[ サービス名] ドロップダウン リストで、[ Microsoft.Practices.ESB.Services.Routing] をクリックします。
RouteMessageEmail モデル要素の Resolver コレクションを右クリックし、[新しい競合回避モジュールの追加] をクリックします。 Resolver1 プロパティ ウィンドウで、次のプロパティを構成します。
[名前] プロパティをクリックし、「LdapResolver」と入力します。
[ 競合回避モジュールの実装 ] ドロップダウン リストで、[ LDAP リゾルバー拡張機能] をクリックします。
[ トランスポート名 ] ドロップダウン リストで、[ SMTP] をクリックします。
[トランスポートの場所] プロパティをクリックし、「{mail}」と入力します。
SearchRoot プロパティをクリックし、「ou=Employees,dc=globalbank,dc=com」と入力します。
注意
「前提条件」セクションの仕様に従って環境を設定していない場合は、前のプロパティの値を環境に適した値に置き換えます。
Filter プロパティをクリックし、値を (&(objectClass=User)(|(givenName=john)))
注意
前の値を入力して、既存のテキストを置き換えます。
[ ThrowErrorIfNotFound ] ドロップダウン リストで、[ True] をクリックします。
プロパティ ウィンドウで、[エンドポイント構成] プロパティをクリックし、省略記号ボタン (...) をクリックします。
[ エンドポイント構成 ] ダイアログ ボックスで、[ EmailBodyText ] プロパティをクリックし、「 Order is ready to be processed」と入力します。
From プロパティをクリックし、「」と入力orders@globalbank.comします。
MessagePartsAttachment プロパティをクリックし、「2」と入力します。
Subject プロパティをクリックし、「Order for {givenName}」と入力します。
ローカル環境の接続情報を使用して、SMTPAuthentication、SMTPHost、UserName、Password の各プロパティを構成します。
[ OK] をクリックして [ エンドポイントの構成] ダイアログ ボックスを閉じます。
LdapResolver リゾルバーを右クリックし、[競合回避モジュールの構成のテスト] をクリックします。
[出力] ウィンドウで、解決された エンドポイント構成 の値の件名が Order for John であることを確認し、解決された トランスポートの場所 が Active Directory のユーザーのアカウントに関連付けられている電子メール アドレスであることを確認します (例: johne@globalbank.com)。
[ツールボックス] で、[ コネクタ] をクリックします。 ReceiveNAOrder モデル要素から RouteMessageEmail モデル要素に接続をドラッグします。
ツールボックスから 、Off-Ramp モデル要素をデザインサーフェイスにドラッグし、 RouteMessageEmail モデル要素の右側に配置します。 OffRamp1 プロパティ ウィンドウで、次のプロパティを構成します。
[名前] プロパティをクリックし、「EmailNAOrderDoc」と入力します。
[ エクステンダー ] ドロップダウン リストで、[ Off-Ramp ESB エクステンダー] をクリックします。
[BizTalk アプリケーション] ドロップダウン リストで、[GlobalBank.ESB] をクリックします。
[ 送信ポート ] ドロップダウン リストで、[ DynamicResolutionOneWay] をクリックします。
ツールボックスから、 Itinerary Service モデル要素をデザイン画面にドラッグし、 RouteMessageEmail モデル要素と EmailNAOrderDoc モデル要素の間に配置します。 ItineraryService1 プロパティ ウィンドウで、次のプロパティを構成します。
[名前] プロパティをクリックし、「SendPortFilter」と入力します。
[ スケジュール サービス エクステンダー ] ドロップダウン リストで、[ オフランプ エクステンダー] をクリックします。
[オフランプ] ドロップダウン リストで、[EmailNAOrderDoc] を展開し、[ハンドラーの送信] をクリックします。
[ツールボックス] で、[ コネクタ] をクリックします。 RouteMessageEmail モデル要素から SendPortFilter モデル要素に接続をドラッグします。
[ツールボックス] で、[ コネクタ] をクリックします。 接続を SendPortFilter モデル要素から EmailNAOrderDoc モデル要素にドラッグします。
スケジュール テスト クライアントで使用するモデルをエクスポートするには
Visual Studio で、 LdapResolution スケジュールのデザイン 画面を右クリックし、[ モデルのエクスポート] をクリックします。
注意
スケジュールの XML バージョンが Visual Studio で開きます。
すべてのプロジェクト成果物を保存します。
Windows エクスプローラーで、C:\HowTos\Itineraries に移動し、旅程 XML (LdapResolution.xml) の作成に注目します。
旅程をテストするには
開発アクティビティの前提条件 (C:\HowTos\ESB.Itinerary.Test.exe - ショートカット) の間に作成されたショートカットを使用して、Itinerary Test Client サンプル アプリケーションを開きます。
[スケジュール テスト クライアント] で、[WCF サービス チェックを使用する] ボックスをオフにし、[スケジュールの読み込み] をクリックします。
[ スケジュール ファイルを開く ] ダイアログ ボックスで、C:\HowTos\Itineraries に移動します。 [LdapResolution.xml] を選択し、[開く] をクリックして旅程を読み込みます。
[ OK] をクリックして 、[ スケジュールが正常に読み込まれました ] メッセージをクリアします。
[スケジュール テスト クライアント] で、[ メッセージの読み込み ] ボックスの横にある省略記号ボタン (...) をクリックします。
[ 読み込む XML ドキュメントの選択 ] ダイアログ ボックスで、C:\HowTos を参照します。 [NAOrderDoc.xml] を選択し、[開く] をクリックしてテスト メッセージを読み込みます。
[ 要求の送信] ボタンをクリックします。 テストが完了したら、[OK] を クリックして、表示される確認を閉じます。
Microsoft Outlook Express (または任意のメール クライアント) を開き、John Evans の電子メールへのメッセージの配信を確認します。
その他のリソース
詳細については、次の関連項目を参照してください。