BizTalk Serverを使用して Oracle Database の BFILE データ型を持つテーブルに対する操作を実行する
Oracle Database アダプターでは、テーブルとストアド プロシージャの BFILE データ型がサポートされています。 このセクションでは、BFILE データ型の列を持つテーブルに対して操作を実行する方法について説明します。 Oracle Database アダプターが BFILE をサポートする方法の詳細については、「Oracle Database の BFILE データ型を使用したテーブルに対する操作」を参照してください。
BFILE での操作用の Oracle データベース サーバーの設定
このセクションでは、レコードを SCOTT に挿入するプロシージャを呼び出す方法について説明します。CUSTOMERDOC テーブル。 このテーブルには、BFILE データ型の列が含まれており、BizTalk アダプター パックのサンプルに付属する SQL スクリプトを実行して作成されます。 サンプルと SQL スクリプトの詳細については、「 Oracle Database アダプターのサンプル」を参照してください。
スクリプトを実行して CUSTOMERDOC テーブルを作成したら、Oracle データベースを実行しているコンピューターで特定のアクションを実行して、BFILE データ型に対する操作を有効にする必要があります。 Oracle データベースで実行する必要があるタスクは次のとおりです。
Oracle データベースを実行しているコンピューターにディレクトリ C:\MYDIR を作成します。
Oracle データベースに論理ディレクトリを作成します。 これには通常、SYSDBA 特権を持つユーザーが必要です。 次に例を示します。
CREATE OR REPLACE DIRECTORY MYDIR AS 'C:\MYDIR';
Oracle の論理ディレクトリにアクセスするための特権をユーザーに追加します。 次に例を示します。
GRANT READ, WRITE ON DIRECTORY MYDIR to SCOTT;
アクセスするファイルを、Oracle の論理ディレクトリに関連付けられている Oracle データベースを実行しているコンピューター上の物理ディレクトリの場所にコピーします。 手順 1 でこのディレクトリを作成しました。
上記の例に基づいて、customer_profile.txt ファイルをディレクトリ C:\MYDIR にコピーします。 このファイルは、BFILE 操作で使用できるようになりました。 操作の実行の詳細については、「Oracle Database のBizTalk Serverを使用したラージ オブジェクト型データを使用したテーブルに対する操作の実行」を参照してください。
重要
ReadLOB 操作は、BFILE データ型のテーブルでサポートされています。 UpdateLOB 操作はサポートされていません。 ただし、ユーザーは UPDATE 操作を使用することもできます。
BFILE データ型を使用して操作を実行する方法
BizTalk Serverで Oracle Database アダプターを使用して Oracle データベースに対して操作を実行するには、「Building blocks to develop BizTalk Applications with Oracle Database」で説明されている手続き型タスクが含まれます。 レコードを SCOTT に挿入するプロシージャを呼び出すには。CUSTOMERDOC テーブルでは、次のタスクを実行します。
BizTalk プロジェクトを作成し、CREATE_CUSTOMERDOC ストアド プロシージャのスキーマを生成します。
Oracle データベースからメッセージを送受信するためのメッセージを BizTalk プロジェクトに作成します。
Oracle データベース テーブルまたはビューで操作を呼び出すオーケストレーションを作成します。
BizTalk プロジェクトをビルドして展開します。
物理送受信ポートを作成して BizTalk アプリケーションを構成します。
BizTalk アプリケーションを起動します。
このトピックでは、これらのタスクを実行する手順について説明します。
このトピックに基づくサンプル
このトピックに基づくサンプル Operate_BFILEは、BizTalk アダプター パックでも提供されています。 詳細については、「 Oracle Database アダプターのサンプル」を参照してください。
スキーマの生成
このトピックでは、BFILE 列を含むテーブルに対して操作を実行する方法を示すために、CREATE_CUSTOMERDOC プロシージャを呼び出します。 この手順は、サンプルで提供されている SQL スクリプトを実行して、SCOTT\Package\ACCOUNT_PKG スキーマの下に作成されます。 この手順では、BFILE レコードの種類を受け取り、CUSTOMERDOC テーブルにレコードを追加します。 SQL スクリプトの詳細については、「 スキーマ サンプル」を参照してください。
スキーマの生成方法の詳細については、「 Visual Studio での Oracle 操作のメタデータの取得 」を参照してください。
メッセージとメッセージの種類の定義
前に生成したスキーマでは、オーケストレーション内のメッセージに必要な "型" について説明します。 通常、メッセージは変数であり、対応するスキーマによって定義される型です。 最初の手順で生成したスキーマを、BizTalk プロジェクトの [オーケストレーション ビュー] ウィンドウからメッセージにリンクする必要があります。
このトピックでは、2 つのメッセージを作成する必要があります。1 つは Oracle データベースに要求を送信し、もう 1 つは応答を受信するメッセージです。
メッセージを作成し、スキーマにリンクするには、次の手順を実行します。
メッセージを作成し、スキーマにリンクするには
BizTalk プロジェクトの [オーケストレーションの種類] ウィンドウを開きます (まだ表示されていない場合)。 これを行うには、[ 表示] をクリックし、[ その他のウィンドウ] をポイントして、[ オーケストレーション ビュー] をクリックします。
[オーケストレーション ビュー] で、[ メッセージ] を右クリックし、[ 新しいメッセージ] をクリックします。
新しく作成したメッセージを右クリックし、[ プロパティ ウィンドウ] を選択します。
Message_1の [プロパティ] ウィンドウで、次の操作を行います。
プロパティ 目的 識別子 「 Request」と入力します。 メッセージ型 ドロップダウン リストから [ スキーマ] を展開し、[ BFILE_Operations.OracleDBBindingSchema.CREATE_CUSTOMERDOC] を選択します。 ここで、BFILE_Operations は BizTalk プロジェクトの名前です。 OracleDBBindingSchema は、CREATE_CUSTOMERDOC プロシージャ用に生成されたスキーマです。 手順 2 を繰り返して、新しいメッセージを作成します。 新しいメッセージの [プロパティ ] ウィンドウで、次の操作を行います。
プロパティ 目的 識別子 「 Response」と入力します。 メッセージ型 ドロップダウン リストから [ スキーマ] を展開し、[ BFILE_Operations.OracleDBBindingSchema.CREATE_CUSTOMERDOCResponse] を選択します。
オーケストレーションの設定
BizTalk Serverを使用してプロシージャを実行するには、BizTalk オーケストレーションを作成する必要があります。 このオーケストレーションでは、定義された受信場所に要求メッセージをドロップします。 Oracle Database アダプターはこのメッセージを使用し、ODP を介して Oracle データベースに渡します。 Oracle データベースからの応答は、別の場所に保存されます。 Oracle データベース テーブルの BFILE 列に対して操作を実行するための一般的なオーケストレーションには、次のものが含まれます。
Oracle データベースにメッセージを送信し、応答を受信する図形を送受信します。
Oracle データベースに送信する要求メッセージを受信する一方向の受信ポート。
Oracle データベースに要求メッセージを送信し、応答を受信する双方向送信ポート。
Oracle データベースからフォルダーに応答を送信する一方向送信ポート。
サンプル オーケストレーションは次のようになります。
BFILE で
メッセージ図形の追加
メッセージ図形ごとに次のプロパティを指定してください。 [図形] 列に表示される名前は、前述のオーケストレーションに表示されるメッセージ図形の名前です。
図形 | 図形の種類 | プロパティ |
---|---|---|
ReceiveMessage | 受信 | - 名前を ReceiveMessage に設定する - アクティブ化を True に設定する |
SendMessage | Send | - 名前を SendMessage に設定する |
ReceiveResponse | 受信 | - 名前を ReceiveResponse に設定する - アクティブ化を False に設定する |
SendResponse | Send | - 名前を SendResponse に設定する |
ポートの追加
論理ポートごとに次のプロパティを指定してください。 [ポート] 列に表示される名前は、オーケストレーションに表示されるポートの名前です。
Port | プロパティ |
---|---|
FileIn | - 識別子を FileIn に設定する - Type を FileInType に設定する - 通信パターンを一方向に設定する - 通信方向を受信に設定する |
LOBPort | - 識別子を LOBPort に設定する - 型を LOBPortType に設定する - 通信パターンを Request-Response に設定する - [通信の方向] を [送受信] に設定する |
SaveResponse | - 識別子を SaveResponse に設定する - Type を SaveResponseType に設定する - 通信パターンを一方向に設定する - [通信の方向] を [送信] に設定する |
アクション 図形のメッセージを指定し、ポートに接続する
次の表では、アクション図形のメッセージを指定し、メッセージをポートにリンクするために設定するプロパティとその値を指定します。 [図形] 列に表示される名前は、前述のオーケストレーションに表示されるメッセージ図形の名前です。
図形 | プロパティ |
---|---|
ReceiveMessage | - メッセージを要求に設定する - [操作] を [FileIn.Create_BFILE] に設定します 。要求 |
SendMessage | - メッセージを要求に設定する - [操作] を [LOBPort.Create_BFILE] に設定します。要求 |
ReceiveResponse | - メッセージを応答に設定する - [操作] を [LOBPort.Create_BFILE] に設定します。応答 |
SendResponse | - メッセージを応答に設定する - [操作] を [SaveResponse.Create_BFILE] に設定します 。要求 |
これらのプロパティを指定すると、メッセージの図形とポートが接続され、オーケストレーションが完了します。
BizTalk ソリューションをビルドし、BizTalk Serverに展開する必要があります。 詳細については、「オーケストレーションの ビルドと実行」を参照してください。
BizTalk アプリケーションの構成
BizTalk プロジェクトを展開すると、先ほど作成したオーケストレーションが、BizTalk Server管理コンソールの [オーケストレーション] ウィンドウの下に一覧表示されます。 アプリケーションを構成するには、BizTalk Server管理コンソールを使用する必要があります。 チュートリアルについては、「 チュートリアル: 基本的な BizTalk アプリケーションの展開」を参照してください。
アプリケーションの構成には、次の作業が含まれます。
アプリケーションのホストの選択。
オーケストレーションで作成したポートを、BizTalk Server管理コンソールの物理ポートにマッピングします。 このオーケストレーションでは、次の操作を行う必要があります。
ハード ディスク上の場所と、要求メッセージをドロップする対応するファイル ポートを定義します。 BizTalk オーケストレーションは要求メッセージを使用し、Oracle データベースに送信します。
ハード ディスク上の場所と、BizTalk オーケストレーションが Oracle データベースからの応答を含む応答メッセージを削除する対応するファイル ポートを定義します。
Oracle データベースにメッセージを送信する物理 WCF-Custom または送信ポート WCF-OracleDB 定義します。 また、送信ポートでアクションを指定する必要があります。 WCF-Custom または WCF-OracleDB ポートを作成する方法については、「 Oracle データベース アダプターへの物理ポート バインドを手動で構成する」を参照してください。
Note
アダプター サービス BizTalk プロジェクト アドインを使用してスキーマを生成すると、ポートに関する情報と、それらのポートに設定するアクションを含むバインド ファイルも作成されます。 BizTalk Server管理コンソールからこのバインド ファイルをインポートして、送信ポート (送信呼び出しの場合) または受信ポート (受信呼び出し用) を作成できます。 詳細については、「 Oracle Database へのポート バインド ファイルを使用して物理ポート バインドを構成する」を参照してください。
アプリケーションの起動
CUSTOMERDOC テーブルにレコードを作成するプロシージャを呼び出す場合は、BizTalk アプリケーションを起動する必要があります。 BizTalk アプリケーションを起動する手順については、「オーケストレーションを 開始する方法」を参照してください。
この段階で、次のことを確認します。
オーケストレーションの要求メッセージを受信する FILE 受信ポートが実行されています。
オーケストレーションからの応答メッセージを受信する FILE 送信ポートが実行されています。
Oracle データベースにメッセージを送信するための WCF-Custom または WCF-OracleDB 送信ポートが実行されています。
操作の BizTalk オーケストレーションが実行されています。
操作の実行
アプリケーションを実行した後、FILE 受信場所に要求メッセージをドロップする必要があります。 要求メッセージのスキーマは、前に生成したプロシージャのスキーマに準拠している必要があります。 Oracle Database アダプターを使用してプロシージャを呼び出すための要求メッセージ スキーマの詳細については、「 関数とプロシージャ のメッセージ スキーマ」を参照してください。
たとえば、CREATE_CUSTOMERDOC プロシージャを呼び出す要求メッセージは次のとおりです。
<CREATE_CUSTOMERDOC xmlns="http://Microsoft.LobServices.OracleDB/2007/03/SCOTT/Package/ACCOUNT_PKG">
<CNAME>John Smith</CNAME>
<CDOC>MYDIR/John_Smith_profile.txt</CDOC>
</CREATE_CUSTOMERDOC>
Note
John_Smith_profile.txt テキスト ファイルは、Oracle の論理ディレクトリに関連付けられている物理ディレクトリの場所に存在する必要があります。 この例では、テキスト ファイルが C:\MYDIR に存在する必要があります
オーケストレーションによってメッセージが使用され、Oracle データベースに送信されます。 Oracle データベースからの応答は、オーケストレーションの一部として定義されている他の FILE の場所に保存されます。 たとえば、上記の要求メッセージに対する Oracle データベースからの応答は次のようになります。
<?xml version="1.0" encoding="utf-8"?>
<CREATE_CUSTOMERDOCResponse xmlns="http://Microsoft.LobServices.OracleDB/2007/03/SCOTT/Package/ACCOUNT_PKG"></CREATE_CUSTOMERDOCResponse>
Note
同様のオーケストレーションを作成して、BFILE 型フィールドを持つテーブルからデータを読み取ることができます。 BizTalk アダプター パックに付属する SQL スクリプトは、GET_CUSTOMERDOC プロシージャを含むACCOUNT_PKGを作成します。 この手順を使用して、SCOTT から BFILE データを取得できます。CUSTOMERDOC テーブル。
サンプル Operate_BFILEは、BizTalk アダプター パックのサンプルにも含まれています。 このサンプルでは、SCOTT にレコードを挿入する方法を示します。CREATE_CUSTOMERDOC ストアド プロシージャを使用する CUSTOMERDOC テーブル (このトピックで説明します)。このサンプルでは、SCOTT から BFILE データを読み取る方法も示しています。ストアド プロシージャを使用GET_CUSTOMERDOC CUSTOMERDOC テーブル。
考えられる例外
BizTalk Serverを使用した DML 操作の実行中に発生する可能性がある例外の詳細については、「例外とエラー処理」を参照してください。
ベスト プラクティス
BizTalk プロジェクトを展開して構成したら、バインド ファイルと呼ばれる XML ファイルに構成設定をエクスポートできます。 バインド ファイルを生成したら、同じオーケストレーションに対して送信ポートや受信ポートなどを作成する必要がないように、ファイルから構成設定をインポートできます。 バインド ファイルの詳細については、「 Oracle データベース アダプター バインドの再利用」を参照してください。