次の方法で共有


BizTalk Server を使用して Oracle Database の BFILE データ型を持つテーブルに対する操作を実行する

Oracle データベース アダプターは、テーブルとストアド プロシージャの BFILE データ型をサポートします。 このセクションでは、BFILE データ型の列を持つテーブルに対して操作を実行する方法について説明します。 Oracle Database アダプターが BFILE をサポートする方法の詳細については、「Oracle Database の BFILE データ型を使用したテーブルに対する操作」を参照してください。

BFILE での操作用に Oracle データベース サーバーを設定する

このセクションでは、SCOTT.CUSTOMERDOC テーブルにレコードを挿入するプロシージャを呼び出す方法を示します。 このテーブルには、BFILE データ型の列が含まれており、BizTalk アダプター パックのサンプルに付属する SQL スクリプトを実行して作成されます。 サンプルと SQL スクリプトの詳細については、 Oracle Database アダプターのサンプルを参照してください。

CUSTOMERDOC テーブルを作成するスクリプトを実行したら、Oracle データベースを実行しているコンピューターで特定のアクションを実行して、BFILE データ型に対する操作を有効にする必要があります。 Oracle データベースで実行する必要があるタスクは次のとおりです。

  1. Oracle データベースを実行しているコンピューターにディレクトリ C:\MYDIR を作成します。

  2. Oracle データベースに論理ディレクトリを作成します。 これには通常、SYSDBA 特権を持つユーザーが必要です。 例えば次が挙げられます。

    CREATE OR REPLACE DIRECTORY MYDIR AS 'C:\MYDIR';  
    
  3. Oracle の論理ディレクトリにアクセスするための権限をユーザーに追加します。 例えば次が挙げられます。

    GRANT READ, WRITE ON DIRECTORY MYDIR to SCOTT;  
    
  4. アクセスするファイルを、Oracle の論理ディレクトリに関連付けられている Oracle データベースを実行しているコンピューター上の物理ディレクトリの場所にコピーします。 手順 1 でこのディレクトリを作成しました。

    上記の例に基づいて、ファイル customer_profile.txt をディレクトリ C:\MYDIR にコピーします。 このファイルは、BFILE 操作で使用できるようになりました。 操作の実行の詳細については、「 Oracle Database で BizTalk Server を使用して、大きなオブジェクト型のデータを持つテーブルに対する操作を実行する」を参照してください。

    Von Bedeutung

    ReadLOB 操作は、BFILE データ型のテーブルでサポートされています。 UpdateLOB 操作はサポートされていません。 ただし、ユーザーは UPDATE 操作を代わりに使用できます。

BFILE データ型を使用して操作を実行する方法

BizTalk Server で Oracle データベース アダプターを使用して Oracle データベースに対する操作を実行するには、「Oracle Database を使用して BizTalk アプリケーションを開発するための構成要素」で説明されている手順を実行します。 SCOTT にレコードを挿入するプロシージャを呼び出します。CUSTOMERDOC テーブルでは、次のタスクが実行されます。

  1. BizTalk プロジェクトを作成し、CREATE_CUSTOMERDOC ストアド プロシージャのスキーマを生成します。

  2. Oracle データベースからメッセージを送受信するためのメッセージを BizTalk プロジェクトに作成します。

  3. Oracle データベース テーブルまたはビューで操作を呼び出すオーケストレーションを作成します。

  4. BizTalk プロジェクトをビルドして展開します。

  5. 物理送受信ポートを作成して BizTalk アプリケーションを構成します。

  6. BizTalk アプリケーションを起動します。

    このトピックでは、これらのタスクを実行する手順について説明します。

このトピックに基づくサンプル

このトピックに基づくサンプル Operate_BFILEは、BizTalk アダプター パックでも提供されています。 詳細については、 Oracle データベース アダプターのサンプルを参照してください

スキーマの生成

このトピックでは、BFILE 列を含むテーブルに対して操作を実行する方法を示すために、CREATE_CUSTOMERDOC プロシージャを呼び出します。 この手順は、サンプルで提供されている SQL スクリプトを実行することで、SCOTT\Package\ACCOUNT_PKG スキーマの下に作成されます。 この手順では、BFILE レコードの種類を受け取り、CUSTOMERDOC テーブルにレコードを追加します。 SQL スクリプトの詳細については、「 スキーマ サンプル」を参照してください。

スキーマの生成方法の詳細については、 Visual Studio での Oracle 操作のメタデータの取得 に関するページを参照してください。

メッセージとメッセージの種類の定義

前に生成したスキーマでは、オーケストレーション内のメッセージに必要な "型" が記述されています。 通常、メッセージは変数であり、対応するスキーマによって定義される型です。 最初の手順で生成したスキーマを、BizTalk プロジェクトの [オーケストレーション ビュー] ウィンドウのメッセージにリンクする必要があります。

このトピックでは、2 つのメッセージを作成する必要があります。1 つは Oracle データベースに要求を送信し、もう 1 つは応答を受信するメッセージです。

メッセージを作成し、スキーマにリンクするには、次の手順を実行します。

  1. まだ開いていない場合は、BizTalk プロジェクトの [オーケストレーション ビュー] ウィンドウを開きます。 これを行うには、[ 表示] をクリックし、[ その他のウィンドウ] をポイントし、[ オーケストレーション ビュー] をクリックします。

  2. オーケストレーション ビューで、[ メッセージ] を右クリックし、[ 新しいメッセージ] をクリックします。

  3. 新しく作成したメッセージを右クリックし、[ プロパティ ウィンドウ] を選択します。

  4. Message_1[プロパティ] ウィンドウで、次の操作を行います。

    これを使用する 目的
    識別子 要求」を入力してください。
    メッセージの種類 ドロップダウン リストから [ スキーマ] を展開し、 BFILE_Operations.OracleDBBindingSchema.CREATE_CUSTOMERDOC を選択します。 ここで、BFILE_Operations は BizTalk プロジェクトの名前です。 OracleDBBindingSchema は、CREATE_CUSTOMERDOC プロシージャ用に生成されるスキーマです。
  5. 手順 2. を繰り返して、新しいメッセージを作成します。 新しいメッセージの [プロパティ ] ウィンドウで、次の操作を行います。

    これを使用する 目的
    識別子 応答」と入力します。
    メッセージの種類 ドロップダウン リストから [ スキーマ] を展開し、 BFILE_Operations.OracleDBBindingSchema.CREATE_CUSTOMERDOCResponse を選択します。

オーケストレーションの設定

BizTalk Server を使用してプロシージャを実行するには、BizTalk オーケストレーションを作成する必要があります。 このオーケストレーションでは、定義された受信場所に要求メッセージをドロップします。 Oracle データベース アダプターはこのメッセージを使用し、ODP 経由で Oracle データベースに渡します。 Oracle データベースからの応答は、別の場所に保存されます。 Oracle データベース テーブル内の BFILE 列に対して操作を実行するための一般的なオーケストレーションには、次のものが含まれます。

  • Oracle データベースにメッセージを送信し、応答を受信する図形を送受信します。

  • Oracle データベースに送信する要求メッセージを受信する一方向の受信ポート。

  • Oracle データベースに要求メッセージを送信し、応答を受信する双方向送信ポート。

  • Oracle データベースからフォルダーに応答を送信する一方向の送信ポート。

    サンプル オーケストレーションは次のようになります。

    BFILE で操作を実行するためのオーケストレーション

メッセージ図形の追加

メッセージ図形ごとに次のプロパティを指定してください。 [図形] 列に一覧表示される名前は、先ほど説明したオーケストレーションに表示されるメッセージ図形の名前です。

図形の種類 特性
メッセージ受信 受け取る - 名前ReceiveMessage に設定する
- アクティブ化True に設定する
メッセージを送信 送信 - 名前SendMessage に設定する
応答を受信する 受け取る - 名前ReceiveResponse に設定する
- アクティブ化False に設定する
SendResponse 送信 - 名前SendResponse に設定する

ポートの追加

論理ポートごとに次のプロパティを指定してください。 [ポート] 列に表示される名前は、オーケストレーションに表示されるポートの名前です。

港 / ポート 特性
ファイルイン - 識別子FileIn に設定する
- FileInType に設定する
- 通信パターン一方向に設定する
- 通信方向受信に設定する
LOBPort - 識別子LOBPort に設定する
- LOBPortType に設定する
- 通信パターンRequest-Response に設定する
- 通信方向送受信に設定する
応答を保存 - 識別子SaveResponse に設定する
- SaveResponseType に設定する
- 通信パターン一方向に設定する
- 通信方向送信に設定する

アクション図形のメッセージを指定し、ポートに接続する

次の表では、アクション図形のメッセージを指定し、メッセージをポートにリンクするために設定するプロパティとその値を指定します。 [図形] 列に表示される名前は、前述のオーケストレーションに表示されるメッセージ図形の名前です。

特性
メッセージ受信 - メッセージ要求に設定する
- 操作FileIn.Create_BFILE.Request に設定します
メッセージを送信 - メッセージ要求に設定する
- 操作LOBPort.Create_BFILE.Request に設定します。
応答を受信する - メッセージ応答に設定する
- 操作LOBPort.Create_BFILE.Responseに設定します
SendResponse - メッセージ応答に設定する
- 操作SaveResponse.Create_BFILE.Requestに設定します。

これらのプロパティを指定すると、メッセージの図形とポートが接続され、オーケストレーションが完了します。

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 データベース アダプターへの物理ポート バインドを手動で構成する」を参照してください。

      また、Consume Adapter Service BizTalk Project アドインを使用してスキーマを生成すると、それらのポートに設定するポートとアクションに関する情報を含むバインディング ファイルも作成されます。 BizTalk Server 管理コンソールからこのバインド ファイルをインポートして、送信ポート (発信呼び出し用) または受信ポート (受信呼び出し用) を作成できます。 詳細については、「 Oracle Database へのポート バインド ファイルを使用して物理ポート バインドを構成する」を参照してください。

アプリケーションの起動

CUSTOMERDOC テーブルにレコードを作成するプロシージャを呼び出すには、BizTalk アプリケーションを起動する必要があります。 BizTalk アプリケーションを起動する手順については、「オーケストレーションを 開始する方法」を参照してください。

この段階で、次のことを確認します。

  • オーケストレーションの要求メッセージを受信する FILE 受信ポートが実行されています。

  • オーケストレーションからの応答メッセージを受信する FILE 送信ポートが実行中です。

  • Oracle データベースにメッセージを送信する WCF-Custom または WCF-OracleDB 送信ポートが実行されています。

  • 操作の BizTalk オーケストレーションが実行されています。

操作の実行

アプリケーションを実行した後、FILE 受信場所に要求メッセージをドロップする必要があります。 要求メッセージのスキーマは、前に生成したプロシージャのスキーマに準拠している必要があります。 Oracle データベース アダプターを使用してプロシージャを呼び出すための要求メッセージ スキーマの詳細については、「 関数とプロシージャ のメッセージ スキーマ」を参照してください。

たとえば、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>  

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>  

同様のオーケストレーションを作成して、BFILE 型フィールドを持つテーブルからデータを読み取ることができます。 BizTalk アダプター パックに付属する SQL スクリプトは、GET_CUSTOMERDOC プロシージャを含むACCOUNT_PKGを作成します。 この手順を使用して、SCOTT.CUSTOMERDOC テーブルから BFILE データを取得できます。

BizTalk アダプター パックのサンプルには、Operate_BFILEサンプルも含まれています。 このサンプルでは、CREATE_CUSTOMERDOC ストアド プロシージャを使用して SCOTT.CUSTOMERDOC テーブルにレコードを挿入する方法を示します(このトピックで説明されています)。また、このサンプルでは、GET_CUSTOMERDOC ストアド プロシージャを使用して SCOTT.CUSTOMERDOC テーブルから BFILE データを読み取る方法も示します。

考えられる例外

BizTalk Server を使用した DML 操作の実行中に発生する可能性がある例外については、「 例外とエラー処理」を参照してください。

ベスト プラクティス

BizTalk プロジェクトを展開して構成したら、構成設定をバインド ファイルと呼ばれる XML ファイルにエクスポートできます。 バインド ファイルを生成したら、同じオーケストレーションの送信ポートや受信ポートなどを作成する必要がないように、ファイルから構成設定をインポートできます。 バインド ファイルの詳細については、「 Oracle データベース アダプターのバインドを再利用する」を参照してください。

こちらもご覧ください

Oracle データベースを使用して BizTalk アプリケーションを開発するための構成要素