SQL Server から厳密に型指定されたポーリング メッセージを受信するように SQL アダプターを構成できます。 データベースをポーリングするためにアダプターが実行するポーリング ステートメントを指定できます。 ポーリング ステートメントには、結果セットを返す SELECT ステートメントまたはストアド プロシージャを指定できます。
ポーリング メッセージ内の要素を他のスキーマにマップするシナリオでは、厳密に型指定されたポーリングを使用する必要があります。 マップするスキーマは、SQL Server 上の別の操作用である可能性があります。 たとえば、ポーリング メッセージ内の特定の要素を、別のテーブルの挿入操作のスキーマにマップできます。 そのため、ポーリング メッセージの値は、挿入操作のパラメーターとして機能します。 より単純なシナリオでは、厳密に型指定されたポーリング メッセージのスキーマを、情報のみを格納するスキーマ ファイルにマップできます。
Von Bedeutung
1 つの BizTalk アプリケーションで複数のポーリング操作を行う場合は、接続 URI の一部として InboundID 接続プロパティを指定して一意にする必要があります。 一意の接続 URI を使用すると、同じデータベースまたはデータベース内の同じテーブルをポーリングする複数の受信ポートを作成できます。 詳細については、「 Biztalk Server を使用して SQL から複数の受信ポート間でポーリング メッセージを受信する」を参照してください。
アダプターが厳密に型指定されたポーリングをサポートする方法の詳細については、「 ポーリングのサポート」を参照してください。 強く型付けされたポーリングのメッセージスキーマの詳細については、「ポーリングおよびTypedPolling操作のメッセージスキーマ」を参照してください。
このトピックで厳密に型指定されたポーリングを示す方法
このトピックでは、厳密に型指定されたポーリングを使用して、ポーリング メッセージを別のスキーマにマップする方法について説明します。 このトピックでは、BizTalk プロジェクトを作成し、 TypedPolling 操作のスキーマを生成する方法について説明します。 TypedPolling 操作のスキーマを生成する前に、次の操作を行う必要があります。
接続 URI の一部として InboundID を指定する必要があります。
PollingStatement バインディング プロパティのポーリング ステートメントを指定する必要があります。
ポーリング ステートメントの一部として、次の操作を実行します。
Employee テーブルからすべての行を選択します。
ストアド プロシージャ (MOVE_EMP_DATA) を実行して、すべてのレコードを Employee テーブルから EmployeeHistory テーブルに移動します。
ストアド プロシージャ (ADD_EMP_DETAILS) を実行して、Employee テーブルに新しいレコードを追加します。 この手順では、従業員の名前、指定、給与をパラメーターとして受け取ります。
これらの操作を実行するには、 PollingStatement バインディング プロパティに次を指定する必要があります。
SELECT * FROM Employee;EXEC MOVE_EMP_DATA;EXEC ADD_EMP_DETAILS John, Tester, 100000
TypedPolling 操作のスキーマを生成するため、スキーマは厳密に型指定され、ポーリング メッセージに含まれるすべての要素が含まれます。
同じ BizTalk プロジェクトの一部として、EmployeeDetails.xsd などの別のスキーマ ファイルを追加します。 EmployeeDetails.xsd のスキーマは次のようになります。
<?xml version="1.0" encoding="utf-16" ?>
<xs:schema xmlns:b="http://schemas.microsoft.com/BizTalk/2003" xmlns="http://Typed_Polling.EmployeeDetails" elementFormDefault="qualified" targetNamespace="http://Typed_Polling.EmployeeDetails" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="EmployeeDetails">
<xs:complexType>
<xs:sequence>
<xs:element name="Employee_Info" type="xs:string" />
<xs:element name="Employee_Profile" type="xs:string" />
<xs:element name="Employee_Performance" type="xs:string" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
また、プロジェクトに BizTalk マッパーを追加して、Employee テーブル (ポーリング メッセージとして受信) の要素を EmployeeDetails.xsd スキーマ内の要素にマップします。 マップの一部として、ポーリング メッセージから 1 つ以上の要素を結合し、EmployeeDetails スキーマの 1 つの要素にマップします。 これを行うには、 文字列連結 Functoid を使用します。
最後に、BizTalk プロジェクトの一部として、EmployeeDetails.xsd スキーマに準拠するファイルが FILE 送信ポートにドロップされます。
SQL アダプターのバインド プロパティを使用して型指定されたポーリングを構成する
次の表は、データ変更メッセージを受信するようにアダプターを構成するために使用する SQL アダプター バインド プロパティをまとめたものです。 BizTalk Server 管理コンソールで受信ポートを構成する際には、 PollingStatement バインド プロパティ以外に、このセクションに記載されている他のすべてのバインド プロパティが必要です。 TypedPolling 操作のスキーマを生成する前に、PollingStatement バインディング プロパティを指定する必要があります。
注
型指定されたポーリングでは、スキーマの生成中に PollingStatement の biding プロパティを指定する必要があります。 スキーマを生成するときに、必須ではない場合でも、他のバインド プロパティを指定することもできます。 バインド プロパティを指定すると、Consume Adapter Service アドインがメタデータ生成の一部として生成するポート バインド ファイルにも、バインド プロパティに指定した値が含まれます。 このバインド ファイルは、後で BizTalk Server 管理コンソールにインポートして、既に設定されているバインディング プロパティを使用して WCF カスタムまたは WCF-SQL 受信ポートを作成できます。 バインド ファイルを使用してポートを作成する方法の詳細については、「 ポート バインド ファイルを使用して SQL アダプターを使用するように物理ポート バインドを構成する」を参照してください。
| バインディングプロパティ | 説明 |
|---|---|
| InboundOperationType | ポーリング、TypedPolling、または通知の受信操作を実行するかどうかを指定します。 既定値は ポーリングです。 厳密に型指定されたポーリング メッセージを受信するには、これを TypedPolling に設定します。 |
| ポーリングデータの利用可能声明 | ポーリングに使用できるデータがあるかどうかを判断するためにアダプターが実行する SQL ステートメントを指定します。 SQL ステートメントは、行と列で構成される結果セットを返す必要があります。 行が使用可能な場合にのみ、 PollingStatement バインディング プロパティに指定された SQL ステートメントが実行されます。 |
| PollingIntervalInSeconds | SQL アダプターが PolledDataAvailableStatement バインディング プロパティに指定されたステートメントを実行する間隔を秒単位で指定します。 既定値は 30 秒です。 ポーリング間隔は、連続するポーリング間の時間間隔を決定します。 指定した期間内にステートメントが実行された場合、アダプターはその間隔の残りの時間を待機します。 |
| PollingStatement | SQL Server データベース テーブルをポーリングする SQL ステートメントを指定します。 ポーリング ステートメントには、単純な SELECT ステートメントまたはストアド プロシージャを指定できます。 既定値は null です。 ポーリングを有効にするには、 PollingStatement の値を指定する必要があります。 ポーリング ステートメントは、 PolledDataAvailableStatement バインディング プロパティによって決定されるポーリングに使用できるデータがある場合にのみ実行されます。 任意の数の SQL ステートメントをセミコロンで区切って指定できます。 大事な:TypedPolling の場合は、メタデータを生成する前に、このバインド プロパティを指定する必要があります。 |
| PollWhileDataFound | ポーリング対象のテーブルでデータが使用可能な場合に、SQL アダプターがポーリング間隔を無視し、 PolledDataAvailableStatement バインディング プロパティに指定された SQL ステートメントを継続的に実行するかどうかを指定します。 テーブルに使用可能なデータがない場合、アダプターは指定されたポーリング間隔で SQL ステートメントを実行するように戻ります。 既定値は falseです。 |
これらのプロパティの詳細については、「 BizTalk Adapter for SQL Server アダプターのバインドプロパティ」を参照してください。 SQL アダプターを使用して SQL Server をポーリングする方法の詳細については、詳細を参照してください。
SQL Server データベースから厳密に型指定されたデータ変更メッセージを受信する方法
BizTalk Server で SQL アダプターを使用して SQL Server データベースに対して操作を実行するには、「SQL アダプターを使用して BizTalk アプリケーションを開発するための構成要素」で説明されている手続き型タスクが含まれます。 厳密に型指定されたデータ変更メッセージを受信するようにアダプターを構成するには、次のタスクを実行します。
BizTalk プロジェクトを作成し、 TypedPolling 操作のスキーマを生成します。 スキーマの生成中に 、InboundID 接続プロパティと PollingStatement バインディング プロパティを指定する必要があります。 たとえば、受信 ID が指定された接続 URI は次のようになります。
mssql://mysqlserver//mysqldatabase?InboundID=mydatabaseIdSQL Server データベースからメッセージを受信するためのメッセージを BizTalk プロジェクトに作成します。
SQL Server データベースからメッセージを受信し、フォルダーに保存するオーケストレーションを作成します。
スキーマ (EmployeeDetails.xsd など) を BizTalk プロジェクトに追加します。
ポーリング メッセージのスキーマを EmployeeDetails.xsd スキーマにマップする BizTalk マッパーを追加します。
BizTalk プロジェクトをビルドして展開します。
物理送受信ポートを作成して BizTalk アプリケーションを構成します。
Von Bedeutung
受信ポーリングのシナリオでは、常に一方向の WCF-Custom または WCF-SQL の受信ポートを構成する必要があります。 双方向 WCF-Custom または WCF-SQL 受信ポートは、受信操作ではサポートされていません。
BizTalk アプリケーションを起動します。
このトピックでは、これらのタスクを実行する手順について説明します。
このトピックに基づくサンプル
このトピックに基づく TypedPolling のサンプルは、BizTalk アダプター パックと共に提供されています。 詳細については、 SQL アダプターのサンプルを参照してください。
スキーマの生成
TypedPolling 操作のスキーマを生成する必要があります。 スキーマの生成方法の詳細については、「 SQL アダプターを使用した Visual Studio での SQL Server 操作のメタデータの取得 」を参照してください。 スキーマを生成するときは、次のタスクを実行します。
接続 URI を指定するときに 、InboundID 接続プロパティを指定します。 このトピックでは、 InboundID を Employee として指定できます。 接続 URI の詳細については、「 SQL Server 接続 URI の作成」を参照してください。
PollingStatement バインディング プロパティの値を指定します。 このバインディング プロパティの詳細については、「 BizTalk Adapter for SQL Server アダプターのバインドプロパティ」を参照してください。
バインディング プロパティを指定する方法については、「 SQL アダプターのバインド プロパティを構成する」を参照してください。
コントラクトの種類として サービス (受信操作) を選択します。
TypedPolling 操作のスキーマを生成します。
メッセージとメッセージの種類を定義する
前に生成したスキーマでは、オーケストレーション内のメッセージに必要な "型" が記述されています。 通常、メッセージは変数であり、対応するスキーマによって定義される型です。 スキーマが生成されたら、BizTalk プロジェクトのオーケストレーション ビューからメッセージにリンクする必要があります。
このトピックでは、SQL Server データベースからメッセージを受信するメッセージを 1 つ作成する必要があります。
メッセージを作成し、スキーマにリンクするには、次の手順を実行します。
メッセージを作成し、スキーマにリンクする
BizTalk プロジェクトにオーケストレーションを追加します。 ソリューション エクスプローラーで、BizTalk プロジェクト名を右クリックし、[ 追加] をポイントして、[ 新しい項目] をクリックします。 BizTalk オーケストレーションの名前を入力し、[ 追加] をクリックします。
まだ開いていない場合は、BizTalk プロジェクトのオーケストレーション ビュー ウィンドウを開きます。 [ 表示] をクリックし、[ その他のウィンドウ] をポイントし、[ オーケストレーション ビュー] をクリックします。
オーケストレーション ビューで、[メッセージ] を右クリックし、[新しいメッセージ] をクリックします。
新しく作成したメッセージを右クリックし、[ プロパティ ウィンドウ] を選択します。
Message_1の [プロパティ] ウィンドウで、次の操作を行います。
これを使用する 目的 識別子 「 PollingMessage」と入力します。 メッセージの種類 ドロップダウン リストから [ スキーマ] を展開し、 Typed_Polling.TypedPolling_Employee.TypedPolling を選択します。 ここで、Typed_Polling は BizTalk プロジェクトの名前です。 TypedPolling_Employee は、 TypedPolling 操作に対して生成されるスキーマです。
オーケストレーションを設定する
SQL Server データベースからポーリング ベースのデータ変更メッセージを受信するために BizTalk Server を使用するには、BizTalk オーケストレーションを作成する必要があります。 このオーケストレーションでは、アダプターは、指定されたポーリング ステートメントのポーリング メッセージを受信します。 BizTalk マッパーは、ポーリング メッセージ スキーマを EmployeeDetails.xsd スキーマにマップします。 その後、マップされたメッセージは FILE の場所に保存されます。 SQL Server データベースから厳密に型指定されたポーリング メッセージを受信するための一般的なオーケストレーションには、次のものが含まれます。
受信と送信の図形を使用して、SQL Server からメッセージを受信し、FILE ポートに送信します。
SQL Server からメッセージを受信する一方向の受信ポート。
Von Bedeutung
受信ポーリングのシナリオでは、常に一方向の受信ポートを構成する必要があります。 双方向の受信ポートは、受信操作ではサポートされていません。
SQL Server データベースからフォルダーにポーリング応答を送信する一方向送信ポート。
ポーリング メッセージのスキーマを他のスキーマにマップする BizTalk マッパー。
サンプル オーケストレーションは次のようになります。
メッセージ図形を追加する
メッセージ図形ごとに次のプロパティを指定してください。 [図形] 列に一覧表示される名前は、先ほど説明したオーケストレーションに表示されるメッセージ図形の名前です。
| 形 | 図形の種類 | 特性 |
|---|---|---|
| メッセージ受信 | 受け取る | - 名前を ReceiveMessage に設定する - アクティブ化を True に設定する |
| メッセージを保存 | 送信 | - 名前を SaveMessage に設定する |
ポートの追加
論理ポートごとに次のプロパティを指定してください。 [ポート] 列に表示される名前は、オーケストレーションに表示されるポートの名前です。
| 港 / ポート | 特性 |
|---|---|
| SQLReceivePort | - 識別子を SQLReceivePort に設定する - 型を SQLReceivePortType に設定する - 通信パターンを一方向に設定する - 通信方向を受信に設定する |
| SaveMessagePort | - 識別子を SaveMessagePort に設定する - 型を SaveMessagePortType に設定する - 通信パターンを一方向に設定する - 通信方向を送信に設定する |
アクション 図形のメッセージを入力し、ポートに接続する
次の表では、アクション図形のメッセージを指定し、メッセージをポートにリンクするために設定するプロパティとその値を指定します。 [図形] 列に表示される名前は、前述のオーケストレーションに表示されるメッセージ図形の名前です。
| 形 | 特性 |
|---|---|
| メッセージ受信 |
メッセージを PollingMessage に設定する 操作を SQLReceivePort.TypedPolling.Request に設定する |
| メッセージを保存 |
メッセージを PollingMessage に設定する SaveMessagePort.TypedPolling.Request に操作を設定する |
これらのプロパティを指定すると、メッセージの図形とポートが接続されます。
BizTalk マッパーを追加する
ポーリング メッセージ スキーマを EmployeeDetails.xsd スキーマにマップするには、BizTalk マッパーをオーケストレーションに追加する必要があります。 BizTalk Server 管理コンソールでは、このマッパーを使用して、ポーリング メッセージのスキーマを EmployeeDetails.xsd スキーマにマップします。
BizTalk マッパーを BizTalk プロジェクトに追加します。 BizTalk プロジェクトを右クリックし、[ 追加] をポイントして、[ 新しい項目] をクリックします。
[ 新しい項目の追加 ] ダイアログ ボックスの左側のウィンドウで、[ マップ ファイル] を選択します。 右側のウィンドウで、[ マップ] を選択します。
MapSchema.btmなど、マップの名前を指定します。 追加をクリックします。[ソース スキーマ] ウィンドウで、[ オープン ソース スキーマ] をクリックします。
[BizTalk 型選択] ダイアログ ボックスで、プロジェクト名を展開し、[スキーマ] を展開して、ポーリング メッセージのスキーマを選択します。 このトピックでは、Typed_Polling.TypedPolling_Employee を選択します。 OK をクリックします。
[ ソース スキーマのルート ノード ] ダイアログ ボックスで[TypedPolling] を選択し、[ OK] をクリックします。
[宛先スキーマ] ウィンドウで、[ 宛先スキーマを開く] をクリックします。
[BizTalk 型選択] ダイアログ ボックスで、プロジェクト名を展開し、[スキーマ] を展開して、EmployeeDetails のスキーマを選択します。 このトピックでは、Typed_Polling.EmployeeDetails を選択します。 OK をクリックします。
ポーリング メッセージのソース スキーマで、TypedPollingResultSet0 ノードと後続のノードを展開して、ポーリング メッセージで返される要素を表示します。 宛先スキーマで、EmployeeDetails ノードを展開して、スキーマ内のさまざまな要素を表示します。 このトピックでは、次のようにスキーマをマップする必要があります。
ソース スキーマのEmployee_IDと名前は、宛先スキーマのEmployee_Infoにマップする必要があります。
ソース スキーマの指定とJob_Descriptionは、宛先スキーマのEmployee_Profileにマップする必要があります。
ソース スキーマの評価と給与は、移行先スキーマのEmployee_Performanceにマップする必要があります。
ソース スキーマ内の複数のノードを結合し、それらを宛先スキーマの 1 つのノードにマップするには、 文字列連結 Functoid を使用する必要があります。 UI ガイダンスと開発者 API 名前空間リファレンスの詳細。
文字列結合ファンクトイドを使用するには:
ツールボックスから、文字列連結 Functoid をドラッグし、マッパー グリッドにドロップします。
ソース スキーマの Employee_ID 要素と Name 要素を Functoid に接続します。
Functoid を宛先スキーマの Employee_Info 要素に接続します。
マップするすべての要素に対して、これらの手順を繰り返します。 完成したマップは次のようになります。
をマップするマップを保存します。
マッパーを作成した後、オーケストレーションが完了します。 BizTalk ソリューションをビルドし、BizTalk Server に展開する必要があります。 詳細については、「オーケストレーションの ビルドと実行」を参照してください。
BizTalk アプリケーションの構成
BizTalk プロジェクトを展開すると、前に作成したオーケストレーションが BizTalk Server 管理コンソールの [ オーケストレーション ] ウィンドウの下に一覧表示されます。 BizTalk Server 管理コンソールを使用してアプリケーションを構成する必要があります。 チュートリアルについては、「 チュートリアル: 基本的な BizTalk アプリケーションの展開」を参照してください。
アプリケーションの構成には、次の作業が含まれます。
アプリケーションのホストの選択。
オーケストレーションで作成したポートを BizTalk Server 管理コンソールの物理ポートにマッピングします。 このオーケストレーションでは、次の操作を行う必要があります。
物理 WCF-Custom または一方向の受信ポート WCF-SQL 定義します。 このポートは、ポートに指定したポーリング ステートメントを使用して SQL Server データベースをポーリングします。 ポートを作成する方法については、「 SQL アダプターへの物理ポート バインドを手動で構成する」を参照してください。 受信ポートには、次のバインド プロパティを指定してください。
Von Bedeutung
接続 URI の一部として InboundID を指定してください。 受信 ID は、スキーマの生成時に指定したのと同じである必要があります。
Von Bedeutung
デザイン時にバインド プロパティを指定した場合は、この手順を実行する必要はありません。 このような場合は、アダプターの使用サービス アドインによって作成されたバインド ファイルをインポートすることで、必要なバインド プロパティを設定して、WCF カスタムまたは WCF-SQL 受信ポートを作成できます。 詳細については、 SQL アダプターを使用するようにポート バインド ファイルを使用して物理ポート バインドを構成するを参照してください。
バインディングプロパティ 価値 InboundOperationType これを TypedPolling に設定してください。 ポーリングデータの利用可能声明 スキーマの生成中に指定したのと同じ SQL ステートメントを必ず指定してください。これは次のとおりです。
SELECT COUNT(*) FROM EmployeePollingStatement スキーマの生成中に指定したのと同じポーリング ステートメントを指定してください。次のようになります。
SELECT * FROM Employee;EXEC MOVE_EMP_DATA;EXEC ADD_EMP_DETAILS John, Tester, 100000さまざまなバインド プロパティの詳細については、「 BizTalk Adapter for SQL Server アダプターのバインドプロパティ」を参照してください。
注
SQL アダプターを使用して受信操作を実行するときに、トランザクション分離レベルとトランザクション タイムアウトを構成することをお勧めします。 サービス動作を WCF-Custom または WCF-SQL 受信ポートの構成時に追加します。 サービスの動作を追加する方法については、「SQL を使用して トランザクション分離レベルとトランザクション タイムアウトを構成する」を参照してください。
アダプターがメッセージをドロップする FILE 送信ポートを定義します。 この送信ポートでは、オーケストレーションで作成したマップを使用して、EmployeeDetails.xsd スキーマに準拠するメッセージにポーリング メッセージをマップします。 マップを使用するように FILE 送信ポートを構成するには、次の手順を実行します。
FILE 送信ポートを作成します。
[送信ポートのプロパティ] ダイアログ ボックスの左側のウィンドウで、[ 送信マップ] をクリックします。 右側のウィンドウで、[ マップ ] 列の下にあるフィールドをクリックし、ドロップダウンから [MapSchema] を選択します。 OK をクリックします。
で送信マップを構成する
アプリケーションを起動する
SQL Server データベースからメッセージを受信するには、BizTalk アプリケーションを起動する必要があります。 BizTalk アプリケーションを起動する手順については、「オーケストレーションを 開始する方法」を参照してください。
この段階で、次のことを確認します。
pollingStatement バインディング プロパティに指定されたステートメントを使用して SQL Server データベースをポーリングする、WCF-Custom または WCF-SQL 一方向の受信ポートが実行されています。
ポーリング メッセージを EmployeeDetails スキーマにマップする FILE 送信ポートが実行されています。
操作の BizTalk オーケストレーションが実行されています。
操作を実行する
アプリケーションを実行すると、同じ順序で次の一連のアクションが実行されます。
アダプターは、Employee テーブル で PolledDataAvailableStatement を実行し、テーブルにポーリング用のレコードがあることを確認します。
アダプターはポーリング ステートメントを実行します。 ポーリング ステートメントは SELECT ステートメントとストアド プロシージャで構成されるため、アダプターはすべてのステートメントを 1 つずつ実行します。
アダプターは、まず、Employee テーブル内のすべてのレコードを返す SELECT ステートメントを実行します。
その後、アダプターは、Employee テーブルから EmployeeHistory テーブルにすべてのデータを移動するMOVE_EMP_DATA ストアド プロシージャを実行します。 このストアド プロシージャは値を返しません。
その後、アダプターは、1 つのレコードを Employee テーブルに追加するADD_EMP_DETAILS ストアド プロシージャを実行します。 このストアド プロシージャは、挿入されたレコードの従業員 ID を返します。
ポーリング ステートメントが実行され、メッセージが受信されると、ポーリング メッセージは FILE 送信ポートに送信されます。 ここでは、送信ポートで構成された送信マップ (MapSchema) は、ポーリング メッセージを EmployeeDetails スキーマにマップし、メッセージをファイルの場所にドロップします。 メッセージは次のようになります。
<?xml version="1.0" encoding="utf-8" ?> <EmployeeDetails xmlns="http://Typed_Polling.EmployeeDetails"> <Employee_Info>10751John</Employee_Info> <Employee_Profile>TesterManagesTesting</Employee_Profile> <Employee_Performance>100000</EmployeePerformance> </EmployeeDetails>前の応答では、Employee_Info要素に従業員 ID (10751) と従業員名 (John) の組み合わせが含まれていることに注意してください。 他の要素には、オーケストレーションの一部として作成したマッパーでマップされた組み合わせも含まれます。
注
BIZTalk Server 管理コンソールから受信ポートを明示的に無効にするまで、SQL アダプターはポーリングを続行します。
ベスト プラクティス
BizTalk プロジェクトを展開して構成したら、構成設定をバインド ファイルと呼ばれる XML ファイルにエクスポートできます。 バインド ファイルを生成したら、同じオーケストレーションの送信ポートと受信ポートを作成する必要がないように、ファイルから構成設定をインポートできます。 バインディング・ファイルの詳細については、 アダプター・バインディングの再利用を参照してください。