手順 4:BizTalk Server ソリューションの構成
前の手順では、Salesforce 通知をBizTalk Serverに受信し、詳細をオンプレミスのSQL Server データベースに挿入するBizTalk Server アプリケーションを作成してデプロイしました。 この手順では、BizTalk Server管理コンソールでアプリケーションを構成します。 アプリケーションの構成は、主にオーケストレーションで作成した論理ポートに対応する物理ポートの作成です。 また、物理ポートの論理ポートへのバインドも関係します。 BizTalk Server アプリケーションを構成するには、次の手順を実行します。
Salesforce から営業案件通知を受信する、要求 - 応答 WCF-BasicHttpRelay 受信場所を構成します。
Salesforce にクエリを送信して受信した営業案件通知に関連する商品の詳細を取得するための、要求 - 応答 WCF-WebHttp 送信ポートを構成します。 この送信ポートでは、Salesforce からのクエリの応答も受信します。
Salesforce からのクエリの応答を内部設置型の SQL Server データベースに挿入するための一方向の WCF-SQL 送信ポートを構成します。
オーケストレーション内の論理ポートを、BizTalk Server管理コンソールで作成された物理ポートに関連付けることにより、BizTalk Server アプリケーションを構成します。
WCF-BasicHttpRelay 受信場所を構成するには
BizTalk Server管理コンソールを開きます。 [アプリケーション] ノードを展開し、 SalesforceIntegration アプリケーションを 探します。 このアプリケーションは、Visual Studio から BizTalk Server プロジェクトをデプロイしたときに作成されます。
SalesforceIntegration アプリケーションを展開し、[受信ポート] を右クリックし、[新規] をポイントして、[要求-応答受信ポート] をクリックします。 左側のウィンドウでポート名を と として
ReceiveOppNotification
指定し、[ 受信場所] をクリックします。[受信場所のプロパティ] ダイアログ ボックスで、次の値を指定します。
パラメーター 値 名前 「 ReceiveOppNotification
」と入力します。Type [WCF-BasicHttpRelay] を選択します 受信ハンドラー BizTalkServerApplication の選択 [受信パイプライン] [XMLReceive] を選択します 送信パイプライン [PassThruTransmit] を選択します ポートの種類に対して [構成] をクリックします。
[WCF-BasicHttpRelay トランスポートのプロパティ] ダイアログ ボックスで、次の値を指定します。
[ 全般 ] タブの [ アドレス (URI)] に「」と入力します
https://btssalesforce.servicebus.windows.net/notifications/opportunity
。 ここでは、 btssalesforce は 、「手順 1: Service Bus 名前空間を作成する」で作成した名前空間です。 ここで指定する URL は、「 手順 2: Salesforce システムを設定する」の Salesforce でワークフローを作成するときに指定した URL と同じです。 営業案件のステージが Closed Won に設定されるたびに、Salesforce が URLhttps://btssalesforce.servicebus.windows.net/notifications/opportunity
に通知を送信するワークフローを設定します。 ここでは、受信場所の構成の一部として同じ URL を指定します。 受信場所が有効になっている場合、URL で指定されたリレー エンドポイントが Microsoft Azure に作成されます。[ セキュリティ ] タブで、次を指定します。
[ セキュリティ モード] で [ トランスポート ] を選択し、[ Relay クライアント認証の種類] で [なし] を選択します。
[サービス検出チェックを有効にする] ボックスを選択して、サービス レジストリでサービスの動作を発行します。 サービスがレジストリに発行される名前を示す 表示 名を指定します。 探索モードは、パブリックまたはプライベートに設定できます。 このチュートリアルでは、[表示名] を に、探索モードを
SF Outbound Notification
[パブリック] に設定します。[アクセス制御サービス] ボックスで、[ 編集] をクリックします。 [Access Control サービス STS Uri] に「」と入力します
https://btssalesforce-sb.accesscontrol.windows.net/
。 [発行者名] と [発行者キー] に、「手順 1: 既定のユーザーと既定のキーのフィールドに Service Bus 名前空間を作成する」で保存した値を入力します。
開いているすべてのダイアログ ボックスを終了するまで [ OK] をクリックします 。
WCF-WebHttp 送信ポートを構成するには
SalesforceIntegration アプリケーションを展開し、[送信ポート] を右クリックし、[新規] をポイントして、[静的 Solicit-Response 送信ポート] をクリックします。
[送信ポートのプロパティ] ダイアログ ボックスで、次の値を指定します。
パラメーター 値 名前 「 SalesforceREST
」と入力します。Type [WCF-WebHttp] を選択します 送信ハンドラー BizTalkServerApplication の選択 送信パイプライン [PassThruTransmit] を選択します [受信パイプライン] [ AddNamespace] を選択し、パイプラインに対して省略記号ボタンをクリックしてパイプラインを構成します。
- [ステージ 1: デコード] の [NamespaceBase] に「」と入力しますhttp://BtsSalesforceIntegration.QueryResult
。 これは、「 手順 3b: WCF-WebHttp アダプターを使用して Salesforce から営業案件の詳細を取得する」で作成した QueryResult.xsd スキーマの名前空間です。 AddNamespace 受信パイプラインが Salesforce から応答を受信すると、この名前空間が応答メッセージに追加されます。 既定では、Salesforce からの応答メッセージには名前空間は含まれません。
[ NamespacePrefix] に「」と入力しますsf
。
- [ステージ 2: 逆アセンブリ] で既定値をそのまま使用し、[OK] をクリック します。[送信ポートのプロパティ] ダイアログ ボックスで、ポートの種類に対して [構成 ] をクリックします。
[WCF-WebHttp トランスポートのプロパティ] ダイアログ ボックスで、次の値を指定します。
[全般] タブで、次の操作を行います。
[ アドレス (URI)] に「」と入力します
https://<Salesforce_instance_name>.salesforce.com/services/data/v24.0
。 Salesforce のインスタンス名は、Salesforce.com ポータルを開いている場所のアドレス バーの https:// と Salesforce.com の間のテキストをコピーして取得できます。 たとえば、Salesforce ポータルの URL が https://na15.salesforce.com/home/home.jsp の場合、Salesforce インスタンス名は na15 になります。[ HTTP メソッドと URL マッピング ] ボックスで、次のように指定します。
<BtsHttpUrlMapping> <Operation Method="GET" Url="/query?q={VAR}" /> </BtsHttpUrlMapping>
この設定の使用方法を次に示します。営業案件通知に関する詳細情報を取得するために Salesforce にクエリを実行するには、Salesforce REST エンドポイント ( [アドレス ] フィールドで指定) に GET 操作を実行し、クエリを追加して営業案件の詳細を取得する必要があります。 つまり、URL は次のようになります。
https://na15.salesforce.com/services/data/v24.0/query?q=<query_string>
[ アドレス (URI)] フィールドの一部として Salesforce REST エンドポイントが既にあります。 そのため、 HTTP メソッドと URL マッピング プロパティの一部として、GET メソッドを使用し、 変数として {VAR} を 追加して を指定します。
[ 変数マッピング ] ボックスで、[ 編集] をクリックします。 このボックスでは、 実行時に {VAR} 変数の値がどのように推測されるかを指定します。
「手順 3b: WCF-WebHttp アダプターを使用して Salesforce から営業案件の詳細を取得する」で Query プロパティを昇格し、PropertySchema.xsd を作成しました。 そのスキーマの Query 要素を使用して、その要素を URL の {VAR} 変数にマッピングしてクエリ文字列を渡します。
[変数マッピング] ダイアログ ボックスの [ 変数 ] 列には、前に指定した変数の名前 ( VAR など) が一覧表示されます。 [ プロパティ名] 列で、変数に渡すクエリ文字列を含む昇格されたプロパティの名前を指定します。 このチュートリアルでは、そのプロパティ名は Query です。 最後に、 Property Namespace にPropertySchema.xsd の名前空間 () を
https://BtsSalesforceIntegration.PropertySchema
指定します。 [OK] をクリックします。
[ セキュリティ ] タブの [ セキュリティ モード] で、[トランスポート] を選択 します。
[動作] タブで、「手順 3d: Salesforce からのメッセージの送受信にBizTalk Serverを有効にする」で作成したカスタム動作を使用して、Salesforce で認証します。 この動作を使用するには、次の操作を行います。
[EndpointBehavior] を右クリックし、[拡張機能の追加] を選択します。
[ 動作拡張機能の選択 ] ダイアログ ボックスで、[ Microsoft.BizTalk.Adapter.Behaviors.Demo.Salesforce] を選択します。 この動作名は、machine.config に動作を追加する際に使用しました。
新しく追加した動作を選択して、次の値を指定します。
パラメーター 値 consumerKey (必須) Salesforce アカウントのコンシューマー キーを指定します。 コンシューマー キーを取得するには、「 手順 2: Salesforce システムを設定する」で作成した Salesforce 接続アプリケーションに移動します。 consumerSecret (必須) 「手順 2: Salesforce システムを設定する」で作成した Salesforce 接続アプリケーションからコンシューマー シークレットを取得します。 パスワード (必須) Salesforce アカウントのパスワードを指定します。 サード パーティのアプリケーションから Salesforce に接続するには、パスワードの後にセキュリティ トークンが続く形式のパスワードを指定する必要があります。 たとえば、パスワードが パスワード で、トークンが XXXXXX の場合は、「 」と入力 passwordXXXXXX
する必要があります。sessionTimeout 既定の値は「300」になっています。 Username (必須) Salesforce デベロッパーのログイン アカウントを指定します。
[ メッセージ ] タブの [ 送信メッセージ ] ボックスの [ 動詞の本文を抑制する] に「」と入力します
GET
。 こうすることで、GET メソッドで Salesforce に送信されるリクエストにメッセージ ペイロードがないことを確認できます。開いているすべてのダイアログ ボックスを終了するまで、[ OK] をクリックします 。
WCF-SQL 送信ポートを構成するには
SalesforceIntegration アプリケーションを展開し、[送信ポート] を右クリックし、[新規] をポイントして、[静的一方向送信ポート] をクリックします。
[送信ポートのプロパティ] ダイアログ ボックスで、次の値を指定します。
パラメーター 値 名前 「 SendToSQL
」と入力します。Type [WCF-SQL] を選択します 送信ハンドラー BizTalkServerApplication を選択する 送信パイプライン [ XMLTransmit] を選択します [送信ポートのプロパティ] ダイアログ ボックスで、ポートの種類に対して [構成 ] をクリックします。
[WCF-SQL トランスポートのプロパティ ] ダイアログ ボックスで、次の値を指定します。
[全般] タブで、次の操作を行います。
の下の [
Endpoint Address
構成] をクリックします。 InitialCatalog プロパティには、Salesforce 応答のデータを入力する必要があるテーブルを含むデータベース名を指定します。 このチュートリアルでは、この値を としてOrders
入力します。 [サーバー] プロパティに、データベースがインストールされているサーバー名SQL Server入力します。[ SOAP アクション ヘッダー] で、 OrderDetails テーブルへの挿入に使用するアクションを指定します。 「」と入力
TableOp/Insert/dbo/OrderDetails
する必要があります。
[資格情報] タブで、内容をすべて空白のままにすると、アダプターは Windows 認証を使用して SQL Server データベースに接続します。 他の認証形式を使用したい場合は、関連する値を指定することもできます。
開いているすべてのダイアログ ボックスを終了するまで、[ OK] をクリックします 。
BizTalk Server アプリケーションを構成するには
BizTalk Server管理コンソールで、SalesforceIntegration アプリケーションを右クリックし、[構成] をクリックします。
[アプリケーションの構成] ダイアログ ボックスで、 NotificationServiceClient オーケストレーションを選択し、右側のウィンドウから次の操作を行います。
[ホスト] で、 BizTalkServerApplication を選択します。
論理受信ポート SalesforceNotificationPort を物理受信ポート ReceiveOppNotification にマップします。
論理送信ポート SalesforceRESTInterface を物理送信ポート SalesforceREST にマップします。
論理送信ポート SendToSQL を物理送信ポート SendToSQL にマップします。
[OK] をクリックします。
SalesforceIntegration アプリケーションを右クリックし、[開始] をクリックします。 これにより 、NotificationServiceClient オーケストレーションが開始され、受信場所が有効になり、送信ポートが開始されます。
このトピックでは、オーケストレーション内の論理ポートを物理ポートに関連付けることで、BizTalk Server管理コンソールでソリューションの構成を完了しました。