Oracle HTML DBユーザーズ・ガイド
リリース2.0
B25045-01
  目次
目次
索引
索引

戻る
戻る
次へ
次へ
 

14 高度なプログラミング手法

このセクションでは、データベース・リンクの確立、コレクションの使用、バックグラウンドSQLの実行、Webサービスの使用、ユーザー・プリファレンスの管理など、高度なプログラミング手法について説明します。

内容は次のとおりです。

アプリケーションからの電子メール送信

次の方法でOracle HTML DBアプリケーションから電子メールを送信できます。

このセクションの構成は次のとおりです。


参照:

メール・キューおよびメール・ログの表示方法については、「メールを送信するためのOracle HTML DBの構成」および「電子メールの管理」を参照してください。

バックグラウンド・ジョブを使用した電子メールの送信

Oracle HTML DBでは、未送信の電子メール・メッセージは、HTMLDB_MAIL_QUEUEという表に格納されます。DBMS_JOBバックグラウンド・プロセスは、Oracle HTML DBのインストール時に自動的に作成されます。バックグラウンド・プロセスは、15分ごとにメール・キューを送信します。バックグラウンド・プロセスによって実行されるパッケージには、次の2つのパラメータがあります。

  • p_smtp_host: SMTPゲートウェイのホスト名です。デフォルト値は、localhostです。

  • p_smtp_portno: SMTPゲートウェイのポート番号です。デフォルト値は、25です。

電子メールを送信するための最も有効な方法は、バックグラウンド・ジョブ(DBMS_JOBパッケージを使用)を作成して、アクティブなメール・キューに格納されているすべてのメール・メッセージを定期的に送信することです。

HTMLDB_MAILのコールによる電子メールの手動送信

HTMLDB_MAILというPL/SQLパッケージをコールすることによって、Oracle HTML DBアプリケーションから電子メールを送信できます。このパッケージは、Oracleで提供されるUTL_SMTPパッケージをベースとして構築されています。 このような依存性があるため、HTMLDB_MAILを使用するには、UTL_SMTPパッケージがインストール済で機能している必要があります。


参照:

詳細は、『Oracle Database PL/SQLパッケージ・プロシージャおよびタイプ・リファレンス』を参照してください。

HTMLDB_MAILには、電子メールを手動で送信するための次の2つのプロシージャが含まれています。

  • アプリケーションから外部へ電子メール・メッセージを送信するには、HTMLDB_MAIL.SENDプロシージャを使用します。

  • HTMLDB_MAIL_QUEUEに格納されたメール・メッセージを配信するには、 HTMLDB_MAIL.PUSH_QUEUEを使用します。

Oracle HTML DBでは、未送信の電子メール・メッセージは、HTMLDB_MAIL_QUEUEという表に格納されます。プロシージャHTMLDB_MAIL.PUSH_QUEUEをコールすることによって、このキューに格納されたメール・メッセージを指定したSMTPゲートウェイに配信できます。このプロシージャには、2つの入力パラメータが必要です。

  • p_smtp_hostname: SMTPゲートウェイのホスト名を定義します。

  • p_smtp_portno: SMTPゲートウェイのポート番号を定義します(25など)。

Oracle HTML DBによって、正常に送信されたメッセージのログが、サーバーのローカル時間でのタイムスタンプとともにHTMLDB_MAIL_LOGに作成されます。

次のUNIX/LINUXの例では、シェル・スクリプトを使用したHTMLDB_MAIL.PUSH_QUEUEプロシージャの使用方法を示します。この例では、SMTPゲートウェイのホスト名はsmtp01.oracle.com、SMTPゲートウェイのポート番号は25として定義されています。

SQLPLUS / <<EOF
FLOWS_020000.HTMLDB_MAIL.PUSH_QUEUE('smtp01.oracle.com','25');
DISCONNECT
EXIT
EOF


参照:

HTMLDB_MAILの使用方法については、「HTMLDB_MAIL」を参照してください。

データベース・リンクを使用したデータへのアクセス

Oracle HTML DBはOracleデータベース上で実行されるため、ユーザーは、すべての分散Oracleデータベース機能を使用できます。通常、分散データベース操作は、データベース・リンクを使用して実行します。

データベース・リンクは1つのデータベースのスキーマ・オブジェクトであり、これを使用すると、別のデータベース上のオブジェクトにアクセスできます。データベース・リンクを作成すると、表名またはビュー名に@dblink を追加することによって、リモート・オブジェクトにアクセスできます。この場合のdblinkは、「データベース・オブジェクトの作成」ウィザードで指定するデータベース・リンク名です。

データベース・リンクを作成するには、次のステップを実行します。

  1. 「作業領域」ホームページにナビゲートします。

  2. 「SQLワークショップ」アイコンをクリックします。

  3. 「オブジェクト・ブラウザ」をクリックします。

    オブジェクト・ブラウザが表示されます。

  4. 作成」をクリックします。

  5. 「データベース・リンク」を選択して、「次へ」をクリックします。

  6. 画面に表示されるステップに従います。

    データベース・リンク名は、Oracleのネーミング規則に従う必要があり、空白を含めたり、数字やアンダースコアから開始することはできません。

既存のデータベース・リンクを表示するには、次のステップを実行します。

  1. 「作業領域」ホームページにナビゲートします。

  2. 「SQLワークショップ」アイコンをクリックします。

  3. 「オブジェクト・ブラウザ」をクリックします。

    オブジェクト・ブラウザが表示されます。

  4. ページ上部のオブジェクト・タイプ「データベース・リンク」を選択します。


参照:

「データベース・リンクの管理」および『Oracle Database管理者ガイド』

コレクションの使用

コレクションを使用すると、1つ以上の非スカラー値を一時的に取得できます。コレクションを使用して、現在セッション・ステートにある行および列を格納します。これによって、あるユーザーの特定のセッション中にそれらの行および列に対してアクセス、操作または処理を行うことができます。コレクションは、バケツのようなものと考えることができます。その中に情報の行を一時的に格納し、その情報を指定できます。

コレクションを使用する場合の例を次に示します。

このセクションの構成は次のとおりです。

HTMLDB_COLLECTION API

各コレクションには、データ要素(メンバー)の名前付きリストが含まれます。このリストには、最大50個の属性(列)を含めることができます。PL/SQL API HTMLDB_COLLECTIONを使用して、コレクション情報を挿入、更新および削除します。

コレクションの名前の指定

新しいコレクションを作成する場合、255文字以下の名前を付ける必要があります。コレクション名の大/小文字は区別されず、すべて大文字に変換されます。

名前を付けた後、コレクション内の値にアクセスするには、HTMLDB_COLLECTIONSビューに対してSQL問合せを実行します。

コレクションの作成

各コレクションには、データ要素(メンバー)の名前付きリストが含まれます。このリストには、最大50個の属性(列)を含めることができます。コレクションを作成するには、次のメソッドを使用します。

  • CREATE_COLLECTION

  • CREATE_OR_TRUNCATE_COLLECTION

  • CREATE_COLLECTION_FROM_QUERY

CREATE_COLLECTIONでは、指定したコレクションがすでに存在する場合は例外が発生します。次に例を示します。

HTMLDB_COLLECTION.CREATE_COLLECTION(
    p_collection_name => collection name );

CREATE_OR_TRUNCATE_COLLECTIONでは、指定したコレクションが存在しない場合に、新しいコレクションが作成されます。指定したコレクションが存在する場合は、そのコレクションが切り捨てられます。切り捨てられたコレクションは空になりますが、コレクション自体はそのまま残ります。次に例を示します。

HTMLDB_COLLECTION.CREATE_OR_TRUNCATE_COLLECTION(
    p_collection_name => collection name );
    p_generate_md5    => YES or NO );

CREATE_COLLECTION_FROM_QUERYでは、コレクションが作成され、指定した問合せの結果がそのコレクションに移入されます。次に例を示します。

HTMLDB_COLLECTION.CREATE_COLLECTION_FROM_QUERY(
    p_collection_name => collection name,
    p_query           => your query );
    p_generate_md5    => YES or NO );

また、CREATE_COLLECTION_FROM_QUERY_Bでも、コレクションが作成され、指定した問合せの結果がそのコレクションに移入されます。次に例を示します。

HTMLDB_COLLECTION.CREATE_COLLECTION_FROM_QUERY_B(
    p_collection_name => collection name,
    p_query           => your query );

CREATE_COLLECTION_FROM_QUERY_Bでは、バルクSQL操作を実行することにより、CREATE_COLLECTION_FROM_QUERYよりも非常に速いパフォーマンスが提供されますが、次の制限があります。

  • 問合せの選択リスト内の列値は、2,000バイトを超えることはできません。列値が2,000バイトを超える行がある場合は、実行中にエラーが発生します。

  • コレクション内のいずれのメンバーに対してもMD5チェックサムは計算されません。

パラメータp_generate_md5

p_generate_md5フラグを使用して、コレクション・メンバーのデータのメッセージ・ダイジェストを計算する必要があるかどうかを指定します。デフォルトでは、このフラグはNOに設定されています。このパラメータを使用して、コレクション・メンバーのMD5をチェックします(つまり、MD5を他のメンバーと比較して、メンバーが変更されたかどうかを確認します)。


参照:

ファンクションGET_MEMBER_MD5の使用方法については、「コレクション・ステータスの判別」を参照してください。

コレクションの切捨て

コレクションの切捨てでは、指定したコレクションからすべてのメンバーが削除されますが、そのコレクション自体はそのまま残ります。次に例を示します。

HTMLDB_COLLECTION.TRUNCATE_COLLECTION(
    p_collection_name => collection name );

コレクションへのアクセス

コレクションのメンバーへのアクセスは、データベース・ビューHTMLDB_COLLECTIONSへの問合せによって行うことができます。HTMLDB_COLLECTIONSビューは次のように定義されています。

COLLECTION_NAME   NOT NULL VARCHAR2(255)
SEQ_ID            NOT NULL NUMBER
C001                       VARCHAR2(4000)
C002                       VARCHAR2(4000)
C003                       VARCHAR2(4000)
C004                       VARCHAR2(4000)
C005                       VARCHAR2(4000)
...
C050                       VARCHAR2(4000)
CLOB001                    CLOB
MD5_ORIGINAL               VARCHAR2(4000)

HTMLDB_COLLECTIONSビューは、Oracle HTML DBアプリケーションで、アプリケーション内の他の表またはビューと同様に使用します。次に例を示します。

SELECT c001, c002, c003
   FROM htmldb_collections
 WHERE collection_name = 'FIREARMS'

コレクションの削除

コレクションの削除では、コレクションとそのすべてのメンバーが削除されます。自分でコレクションを削除しなくても、セッションの消去時にコレクションが削除されることに注意してください。次に例を示します。

HTMLDB_COLLECTION.DELETE_COLLECTION (
    p_collection_name => collection name );

カレント・アプリケーションのすべてのコレクションの削除

カレント・アプリケーションに定義されたすべてのコレクションを削除するには、DELETE_ALL_COLLECTIONSメソッドを使用します。次に例を示します。

HTMLDB_COLLECTION.DELETE_ALL_COLLECTIONS;

カレント・セッションのすべてのコレクションの削除

カレント・セッションに定義されたすべてのコレクションを削除するには、DELETE_ALL_COLLECTIONS_SESSIONメソッドを使用します。次に例を示します。

HTMLDB_COLLECTION.DELETE_ALL_COLLECTIONS_SESSION;

コレクションへのメンバーの追加

コレクションに追加したデータ要素(メンバー)には、一意の順序番号が割り当てられます。メンバーをコレクションに追加すると、最も新しいメンバーが一番大きい番号を持つように、前のメンバーより1大きい番号が新しいメンバーに割り当てられます。

コレクションに新しいメンバーを追加するには、ADD_MEMBERファンクションを使用します。このメソッドをコールすると、新しく追加したメンバーの順序番号が戻されます。次の例では、ADD_MEMBERプロシージャを使用する方法を示します。

HTMLDB_COLLECTION.ADD_MEMBER(
    p_collection_name => collection name,
    p_c001          => [member attribute 1],
    p_c002          => [member attribute 2],
    p_c003          => [member attribute 3],
    p_c004          => [member attribute 4],
    p_c005          => [member attribute 5],
    p_c006          => [member attribute 6],
    p_c007          => [member attribute 7],
  ...
    p_c050          => [member attribute 50]);
    p_clob001       => [CLOB member attribute 1],    p_generate_md5  => YES or NO);

次の例では、ADD_MEMBERファンクションを使用する方法を示します。このファンクションでは、新しく作成したメンバーに割り当てられた順序番号が戻されます。

l_id := HTMLDB_COLLECTION.ADD_MEMBER(
    p_collection_name => collection name,
    p_c001          => [member attribute 1],
    p_c002          => [member attribute 2],
    p_c003          => [member attribute 3],
    p_c004          => [member attribute 4],
    p_c005          => [member attribute 5],
    p_c006          => [member attribute 6],
    p_c007          => [member attribute 7],
  ...
    p_c050          => [member attribute 50]);
    p_clob001       => [CLOB member attribute 1],    p_generate_md5  => YES or NO);

ADD_MEMBERSメソッドを使用して、コレクションに新しいメンバー(またはメンバーの配列)を追加することもできます。このメソッドでは、指定したカレント・ユーザー名を持つコレクションが同じセッションに存在しない場合は、例外が発生します。また、4,000文字を超える属性は、4,000文字に切り捨てられます。追加されるメンバーの数は、1番目の配列内の要素数に基づきます。次に例を示します。

HTMLDB_COLLECTION.ADD_MEMBERS(
    p_collection_name => collection name,
    p_c001          => member attribute array 1,
    p_c002          => member attribute array 2,
    p_c003          => member attribute array 3,
    p_c004          => member attribute array 4,
    p_c005          => member attribute array 5,
    p_c006          => member attribute array 6,
    p_c007          => member attribute array 7,
    ...
    p_c050          => member attribute array 50);
    p_generate_md5  => YES or NO);

パラメータp_generate_md5およびp_clob001

p_generate_md5フラグを使用して、コレクション・メンバーのデータのメッセージ・ダイジェストを計算する必要があるかどうかを指定します。デフォルトでは、このフラグはNOに設定されています。このパラメータを使用して、コレクション・メンバーのMD5をチェックします(つまり、MD5を他のメンバーと比較して、メンバーが変更されたかどうかを確認します)。

4,000文字を超えるコレクション・メンバー属性には、p_clob001を使用します。


参照:

ファンクションGET_MEMBER_MD5の使用方法については、「コレクション・ステータスの判別」を参照してください。

コレクション・メンバーの更新

コレクション・メンバーを更新するには、UPDATE_MEMBERをコールして、更新するコレクション・メンバーを順序番号を使用して参照します。このプロシージャによって、メンバーの個の属性ではなく1つのコレクション・メンバー全体が置換されます。このプロシージャでは、指定したコレクションが存在しない場合は例外が発生します。次に例を示します。

HTMLDB_COLLECTION.UPDATE_MEMBER (
    p_collection_name => collection name,
    p_seq             => member sequence number,
    p_c001            => member attribute 1,
    p_c002            => member attribute 2,
    p_c003            => member attribute 3,
    p_c004            => member attribute 4,
    p_c005            => member attribute 5,
    p_c006            => member attribute 6,
    p_c007            => member attribute 7,
    ...
    p_c050            => member attribute 50);
    p_clob001         => [CLOB member attribute 1],

4,000文字を超えるコレクション・メンバー属性には、p_clob001を使用します。

コレクション・メンバーの1つの属性を更新するには、UPDATE_MEMBER_ATTRIBUTEを使用します。指定したコレクションが存在しない場合、このプロシージャをコールすると例外が発生します。次に例を示します。

HTMLDB_COLLECTION.UPDATE_MEMBER_ATTRIBUTE(
    p_collection_name       => collection_name,
    p_seq                   => member sequence number,
    p_attr_number           => member attribute number,
    p_attr_value            => member attribute value )

HTMLDB_COLLECTION.UPDATE_MEMBER_ATTRIBUTE(
    p_collection_name        => collection_name,
    p_seq                    => member sequence number,
    p_clob_number            => CLOB member attribute number,
    p_clob_value             => CLOB member attribute value );

p_clob_numberの有効値は1のみであることに注意してください。

コレクション・メンバーの削除

コレクション・メンバーを削除するには、DELETE_MEMBERをコールして、削除するコレクション・メンバーを順序番号を使用して参照します。次に例を示します。

HTMLDB_COLLECTION.DELETE_MEMBER(
    p_collection_name => collection name,
    p_seq             => member sequence number);

このプロシージャを使用すると、指定したコレクション内の順序番号が欠落することに注意してください。また、指定したコレクションが存在しない場合、このプロシージャをコールするとエラーが発生します。

属性が特定の値に一致するまで、コレクションからすべてのメンバーを削除することもできます。次に例を示します。

HTMLDB_COLLECTION.DELETE_MEMBERS(
    p_collection_name => collection name,
    p_attr_number     => number of attribute used to match for the specified
                         attribute value for deletion,
    p_attr_value      => attribute value of the member attribute used to
                         match for deletion);

このプロシージャを使用する場合も、指定したコレクション内の順序番号が欠落することに注意してください。また、このプロシージャでは、次の場合に例外が発生します。

  • 指定したコレクションが存在しない場合

  • 指定した属性番号が1から50の範囲外であるか、無効である場合

指定した属性値がNULLの場合、指定したコレクションのすべてのメンバーが削除されます。

コレクション・ステータスの判別

p_generate_md5パラメータは、コレクションの各メンバーに対してMD5メッセージ・ダイジェストを計算するかどうかを判別します。コレクションの作成直後、コレクション・ステータス・フラグはFALSEに設定されます。コレクションに対して操作(追加、更新、切捨てなど)が行われると、このフラグはTRUEに設定されます。

このフラグは、RESET_COLLECTION_CHANGEDをコールすることで、手動でリセットできます。次に例を示します。

HTMLDB_COLLECTION.RESET_COLLECTION_CHANGED (
    p_collection_name => collection name)

このフラグをリセットした後にコレクションが変更されたかどうかを判別するには、COLLECTION_HAS_CHANGEDをコールします。次に例を示します。

l_changed := HTMLDB_COLLECTION.COLLECTION_HAS_CHANGED(
  p_collection_name => collection_name);

p_generated_md5パラメータがYESに設定されている場合、コレクションに新しいメンバーを追加すると、50個のすべての属性とCLOB属性に対してMD5メッセージ・ダイジェストが計算されます。この値はHTMLDB_COLLECTIONビューのMD5_ORIGINAL列に存在し、GET_MEMBER_MD5ファンクションを使用してアクセスできます。次に例を示します。

HTMLDB_COLLECTION.GET_MEMBER_MD5 (
    p_collection_name => collection name,
    p_seq             => member sequence number );
    RETURN VARCHAR2;

コレクションのマージ

コレクションのメンバーを、配列の集合として渡した値とマージできます。p_init_query引数を使用することで、指定した問合せからコレクションを作成できます。次に例を示します。

HTMLDB_COLLECTION.MERGE_MEMBERS
p_collection_name => collection_name

ただし、そのコレクションが存在する場合、次の操作が実行されることに注意してください。

  • コレクション(配列ではない)内の行が削除されます。

  • コレクションおよび配列内の行が更新されます。

  • 配列内に存在し、コレクション内に存在しない行が挿入されます。

4,000文字を超える属性は、4,000文字に切り捨てられます。表14-1に、コレクションのマージに使用可能な引数を示します。

表14-1 コレクションのマージに使用可能な引数

引数 説明
p_c001 マージされる1番目の属性値の配列です。最大長は4,000文字です。最大長より大きい値は4,000文字に切り捨てられます。

P_C001 PL/SQL表内の要素数は、すべてのPL/SQL表内のアイテムの合計数として使用されます。たとえば、P_C001.count = 2およびP_C002.count = 10の場合、2つのメンバーのみがマージされます。P_C001がNULLの場合は、アプリケーション・エラーが発生することに注意してください。

p_c0xx マージされるXX番目の属性値の属性です。最大長は4,000文字です。最大長より大きい値は4,000文字に切り捨てられます。
p_collection_name コレクションの名前です。

参照: 「コレクションの名前の指定」

p_null_index マージ・ファンクションで無視する行を識別するために使用します。この引数は、行をNULLとして識別します。NULL行は、コレクションから自動的に削除されます。p_null_indexと組み合せて使用します。
p_null_value p_null_indexと組み合せて使用します。この引数は、NULL値を識別します。この値をNULLにすることはできません。この引数の通常の値は0(ゼロ)です。
p_init_query コレクションが存在しない場合に、この引数によって定義した問合せを使用してコレクションを作成できます。

コレクションの管理

コレクションの管理には、次のユーティリティを使用できます。

このセクションの構成は次のとおりです。

メンバー数の取得

コレクション内のすべてのメンバーの合計数を戻すには、COLLECTION_MEMBER_COUNTを使用します。この数は、コレクション内の順序番号の最大値ではないことに注意してください。次に例を示します。

l_count := HTMLDB_COLLECTION.COLLECTION_MEMBER_COUNT (
  p_collection_name => collection name );

コレクションの再順序付け

要素の順序を保持したままで、コレクションを再順序付けして順序番号の欠落を排除するには、RESEQUENCE_COLLECTIONを使用します。次に例を示します。

HTMLDB_COLLECTION.RESEQUENCE_COLLECTION (
   p_collection_name => collection name )

コレクションの存在の確認

コレクションが存在するかどうかを確認するには、COLLECTION_EXISTSを使用します。次に例を示します。

l_exists := HTMLDB_COLLECTION.COLLECTION_EXISTS  (
  p_collection_name => collection name );

メンバーの順序番号の調整

順序番号を上下に移動させることで、コレクション内の特定のメンバーの順序番号を調整できます。順序番号を調整すると、指定した番号が別の番号と入れ替えられます。たとえば、番号2を1つ上に移動すると、2が3になり、3が2になります。

メンバーの順序番号を1つ上に移動するには、MOVE_MEMBER_UPを使用します。メンバーの順序番号を1つ下に移動するには、MOVE_MEMBER_DOWNを使用します。次に例を示します。

HTMLDB_COLLECTION.MOVE_MEMBER_DOWN(
    p_collection_name => collection name,
    p_seq             => member sequence number);

これらのいずれかのメソッドの使用中は、次の場合にアプリケーション・エラーが表示されます。

  • 指定したコレクションが、カレント・ユーザーのカレント・セッションに存在しない場合

  • 順序番号p_seqで指定したメンバーが存在しない場合

ただし、指定したメンバーにコレクション内で最も大きい番号または最も小さい番号(MOVE_MEMBER_UPまたはMOVE_MEMBER_DOWNのどちらをコールするかによる)が割り当てられている場合、アプリケーション・エラーは戻されません。

コレクション・メンバーの格納

コレクションのメンバーを列番号で並べ替えるには、SORT_MEMBERSを使用します。このメソッドは、特定の列番号でコレクションをソートするのみでなく、各メンバーの順序番号の欠落を排除するように順序番号を再割当てします。次に例を示します。

HTMLDB_COLLECTION.SORT_MEMBERS(
    p_collection_name       => collection name,
    p_sort_on_column_number => column number to sort by);

コレクションのセッション・ステートの消去

コレクションのセッション・ステートを消去すると、コレクション・メンバーが削除されます。コレクションのセッション・ステートの消去が必要な場合の例には、ショッピング・カートがあります。カートを空にして最初からやり直すリクエストをユーザーから受信したときに、コレクションのセッション・ステートを消去する必要があります。コレクションのセッション・ステートを削除するには、CREATE_OR_TRUNCATE_COLLECTIONメソッドをコールするか、またはf?p構文を使用します。

CREATE_OR_TRUNCATE_COLLECTIONをコールすると、既存のコレクションが削除され、そのコレクションが再作成されます。次に例を示します。

HTMLDB_COLLECTION.CREATE_OR_TRUNCATE_COLLECTION(
    p_collection_name       => collection name,

f?p構文の6つ目の引数を使用してセッション・ステートを消去することもできます。次に例を示します。

f?p=App:Page:Session::NO:1,2,3,collection name

HTMLDB_ACTIVITY_LOGを使用したカスタム・アクティビティ・レポートの作成

HTMLDB_ACTIVITY_LOGビューには、開発者アクティビティ、アプリケーション実行時アクティビティなどの作業領域内のすべてのアクティビティが記録されます。HTMLDB_ACTIVITY_LOGビューを使用して、現行の作業領域のすべてのアクティビティを問い合せることができます。たとえば、このビューを使用すると、特定のアプリケーション内の監視レポートを開発し、リアルタイムのパフォーマンス統計を提供できます。

表14-2に、HTMLDB_ACTIVITY_LOGビューの列を示します。

表14-2 HTMLDB_ACTIVITY_LOGの列

タイプ 説明
time_stamp DATE アクティビティがページ・ビューの末尾に記録された日時
component_type VARCHAR2(255) 今後の使用のための予約
component_type VARCHAR2(255) 今後の使用のための予約
component_attribute VARCHAR2(4000) ページのタイトル
information VARCHAR2(4000) 今後の使用のための予約
elap NUMBER ページ・ビューの経過時間(秒)
num_rows NUMBER ページ上で処理された行数
userid VARCHAR2(255) ページ・ビューを実行しているユーザーのID
ip_address VARCHAR2(4000) クライアントのIPアドレス
user_agent VARCHAR2(4000) クライアントのWebブラウザ・ユーザー・エージェント
flow_id NUMBER アプリケーションID
step_id NUMBER ページID
session_id NUMBER Oracle HTML DBセッション識別子

アクティビティ・ログの領域を節約するため、一意のOracle HTML DBセッションそれぞれの最初のログ・エントリにのみIPアドレスとWebブラウザ・ユーザー・エージェントが含まれます。

次に、アプリケーション9529に関する過去24時間のページ・ビュー合計数および平均ページ・ビュー時間がユーザーID別に表示されるレポートを作成する方法の例を示します。

SELECT COUNT(*), AVG(elap), userid
    FROM HTMLDB_ACTIVITY_LOG
 WHERE time_stamp > (SYSDATE-1)
   AND flow_id = 9529
GROUP BY userid

バックグラウンドPL/SQLの実行

HTMLDB_PLSQL_JOBパッケージを使用すると、アプリケーションのバックグラウンドでPL/SQLコードを実行できます。操作が完了していない状態でもユーザーがアプリケーションで作業を継続できるため、長時間実行操作の管理に有効な方法です。

このセクションの構成は次のとおりです。

HTMLDB_PLSQL_JOB パッケージの理解

HTMLDB_PLSQL_JOBは、Oracleデータベースで提供されるDBMS_JOB機能をラップしたラッパー・パッケージです。HTMLDB_PLSQL_JOBパッケージでは、PL/SQLをバックグラウンドで実行するために必要な機能のみが公開されることに注意してください。HTMLDB_PLSQL_JOB パッケージの記述を次に示します。

SQL> DESC HTMLDB_PLSQL_JOB
FUNCTION JOBS_ARE_ENABLED RETURNS BOOLEAN
PROCEDURE PURGE_PROCESS
 Argument Name                  Type                    In/Out Default?
 ------------------------------ ----------------------- ------ --------
 P_JOB                          NUMBER                  IN
FUNCTION SUBMIT_PROCESS RETURNS NUMBER
 Argument Name                  Type                    In/Out Default?
 ------------------------------ ----------------------- ------ --------
 P_SQL                          VARCHAR2                IN
 P_WHEN                         VARCHAR2                IN     DEFAULT
 P_STATUS                       VARCHAR2                IN     DEFAULT
FUNCTION TIME_ELAPSED RETURNS NUMBER
 Argument Name                  Type                    In/Out Default?
 ------------------------------ ----------------------- ------ --------
 P_JOB                          NUMBER                  IN
PROCEDURE UPDATE_JOB_STATUS
 Argument Name                  Type                    In/Out Default?
 ------------------------------ ----------------------- ------ --------
 P_JOB                          NUMBER                  IN
 P_STATUS                       VARCHAR2                IN
 P_DESC

表14-3に、HTMLDB_PLSQL_JOBパッケージで使用可能なファンクションを示します。

表14-3 HTMLDB_PLSQL_JOBパッケージで使用可能なファンクション

ファンクション 説明
SUBMIT_PROCESS このプロシージャを使用すると、バックグラウンドPL/SQLを送信できます。このプロシージャは、一意のジョブ番号を戻します。このジョブ番号は、このパッケージ内の他のプロシージャおよびファンクションの参照点として使用できるため、自分のスキーマ内に格納しておくと役に立ちます。
UPDATE_JOB_STATUS このプロシージャをコールすると、現在実行しているジョブのステータスを更新できます。このプロシージャは、送信されたPL/SQLからコールされたときに最も有効です。
TIME_ELAPSED このファンクションを使用すると、ジョブが送信されてから経過した時間を確認できます。
JOBS_ARE_ENABLED このファンクションをコールすると、そのデータベースが現在、HTMLDB_PLSQL_JOBパッケージへのジョブの送信をサポートするモードであるかどうかを確認できます。
PURGE_PROCESS このプロシージャをコールすると、送信されたジョブをクリーンアップできます。送信されたジョブは、Oracle HTML DBによってそれらのレコードがクリーンアップされるか、またはPURGE_PROCESSのコールによって手動で削除するまで、HTMLDB_PLSQL_JOBSビューに保持されます。

HTMLDB_PLSQL_JOBパッケージに送信したすべてのジョブは、HTMLDB_PLSQL_JOBSビューで表示できます。HTMLDB_PLSQL_JOBSビューの記述を次に示します。

SQL> DESCRIBE HTMLDB_PLSQL_JOBS
 Name                              Null?    Type
 --------------------------------- -------- ----------------------------
 ID                                         NUMBER
 JOB                                        NUMBER
 FLOW_ID                                    NUMBER
 OWNER                                      VARCHAR2(30)
 ENDUSER                                    VARCHAR2(30)
 CREATED                                    DATE
 MODIFIED                                   DATE
 STATUS                                     VARCHAR2(100)
 SYSTEM_STATUS                              VARCHAR2(4000)
 SYSTEM_MODIFIED                            DATE
 SECURITY_GROUP_ID                          NUMBER

表14-4に、HTMLDB_PLSQL_JOBSビューで使用可能な列を示します。

表14-4 HTMLDB_PLSQL_JOBSビューの列

名前 説明
ID 各行の一意の識別子です。
JOB 送信された各PL/SQLジョブに割り当てられたジョブ番号です。この値を戻すには、HTMLDB_PLSQL_JOB.SUBMIT_PROCESSファンクションを使用します。これは、HTMLDB_PLSQL_JOBパッケージ内の他のプロシージャおよびファンクションに渡す値でもあります。
FLOW_ID このジョブの送信元のアプリケーションです。
OWNER アプリケーションを所有するデータベース・スキーマです。この値は、DBMS_JOBがこのコードを実行する際に、コードを解析するスキーマを識別します。
ENDUSER このプロセスを送信させたエンド・ユーザー(アプリケーションにログインしたユーザー)です。
CREATED ジョブが送信された日付です。
MODIFIED ステータスが変更された日付です。
STATUS このジョブに対してユーザーが定義したステータスです。この列を更新するには、HTMLDB_PLSQL_JOB.UPDATE_JOB_STATUSをコールします。
SYSTEM_STATUS このジョブに対してシステムが定義したステータスです。
SYSTEM_MODIFIED システム・ステータスが変更された日付です。
SECURITY_GROUP_ID 作業領域に割り当てられた一意のIDです。開発者は、自分の作業領域から送信されたジョブのみを参照できます。

システム・ステータスの更新

送信されたジョブには、次のいずれかのシステム・ステータス設定が含まれています。

  • SUBMITTEDは、ジョブが送信済であるが、開始されていないことを示します。DBMS_JOBでは、ジョブの即時開始は保証されていません。

  • IN PROGRESSは、DBMS_JOBがプロセスを開始したことを示します。

  • COMPLETEDは、ジョブが完了したことを示します。

  • BROKEN (sqlcode) sqlerrmは、ジョブに問題があり、例外が発生したことを示します。 例外が発生したことを示すSQLコードおよびSQLエラー・メッセージがシステム・ステータスに表示されます。この情報を参照して、エラーの原因を判別してください。

プロセスを使用したバックグラウンドPL/SQLの実装

HTMLDB_PLSQL_JOBパッケージを実装する最も簡単な方法は、PLSQL DBMS JOBプロセス・タイプを指定するページ・プロセスを作成することです。このプロセス・タイプを選択すると、ジョブとして指定したPL/SQLコードがアプリケーション・ビルダーによって送信されます。ファンクションを直接コールしないため、組込み置換アイテムであるAPP_JOBを使用して、送信する任意のジョブのジョブ番号を指定できます。

テストおよび説明用に、PL/SQLジョブをバックグラウンドで実行する例を次に示します。

001  BEGIN
002    FOR i IN 1 .. 100 LOOP
003      INSERT INTO emp(a,b) VALUES (:APP_JOB,i);
004      IF MOD(i,10) = 0 THEN
005        HTMLDB_PLSQL_JOB.UPDATE_JOB_STATUS(
006          P_JOB     => :APP_JOB,
007          P_STATUS  => i || 'rows inserted');
008      END IF;
009      HTMLDB_UTIL.PAUSE(2);
010    END LOOP;
011  END;

この例の説明を次に示します。

  • 002から010行では、100個のレコードをemp表に挿入するループを実行します。

  • APP_JOBは、INSERTのVALUE句内でバインド変数として参照され、UPDATE_JOB_STATUSへのコール内でP_JOBパラメータの値として指定されます。

  • APP_JOBは、HTMLDB_PLSQL_JOBに送信される際に、このプロセスに割り当てられるジョブ番号を表します。プロセス・コード内にこの予約アイテムを指定すると、実行時に実際のジョブ番号に自動的に置換されます。

  • この例では、コード・ブロック内で、10個のレコードごとにUPDATE_JOB_STATUSがコールされることに注意してください。通常、Oracleトランザクション規則では、コード・ブロック内で実行された更新は、トランザクション全体がコミットされるまで表示されません。一方、HTMLDB_PLSQL_JOB.UPDATE_JOB_STATUSプロシージャは、ジョブが成功したか失敗したかにかかわらず更新を実行するように実装されています。このことは、次の2つの理由から重要です。

    1. ステータスが「100行が挿入されました。」の場合でも、操作全体が成功したわけではありません。コード・ブロックでコミットが試行されたときに例外が発生した場合、ステータスの更新は個別にコミットされるため、HTMLDB_PLSQL_JOBSuser_status列は影響を受けません。

    2. これらの更新は自律的に実行されます。ジョブが完了する前にジョブ・ステータスを表示できます。これによって、バックグラウンドで実行中の各操作についてステータス・テキストを表示できます。

Webサービスの実装

Webサービスを使用すると、アプリケーション同士がWeb上でプラットフォームおよび言語に依存しない環境で相互に通信できます。通常のWebサービス・シナリオでは、ビジネス・アプリケーションが、HTTPプロトコルを使用して、特定のURLにあるサービスに対してリクエストを送信します。サービスは、リクエストを受信すると、これを処理し、レスポンスを返します。外部WebサービスへのコールをOracle HTML DBで開発されたアプリケーションに組み込むことができます。

Oracle HTML DBのWebサービスは、Simple Object Access Protocol(SOAP)に基づいています。SOAPは、World Wide Web Consortium(W3C)が策定した、インターネットを介したリクエストとレスポンスの送受信用の標準プロトコルです。SOAPメッセージは、サービス・プロバイダとサービス・ユーザー間でSOAPエンベロープに入れて送受信できます。

SOAPには、主に2つのメリットがあります。

このセクションの構成は次のとおりです。


注意:

SOAP 1.1仕様はW3C覚書です。(SOAPより優先される標準を作成するために、W3C XML Protocol Working Groupが結成されています。)

Simple Object Access Protocol(SOAP)1.1については、次のWebサイトを参照してください。

http://www.w3.org/TR/SOAP/


Webサービス参照の理解

Oracle HTML DBでWebサービスを使用するには、ウィザードを使用してWebサービス参照を作成します。各Webサービス参照は、ターゲットWebサービスを説明するWeb Services Description Language(WSDL)ドキュメントをベースにしています。Webサービス参照を作成する場合、ウィザードはWSDLを分析して必要な情報をすべて収集し、有効なSOAPメッセージを作成します。必要な情報は、次のとおりです。

  • HTTPを介したSOAPリクエストのポストに使用するURL

  • SOAP HTTPリクエストを識別するUniversal Resource Identifier(URI)

  • Webサービスの操作

  • 各操作の入力パラメータ

  • 各操作の出力パラメータ

「Webサービス参照」ページへのアクセス

Webサービス参照は、「Webサービス参照」ページで管理します。

「Webサービス参照」ページにアクセスするには、次のステップを実行します。

  1. 「作業領域」ホームページにナビゲートします。

  2. 「アプリケーション・ビルダー」アイコンをクリックします。

  3. アプリケーションを選択します。

    アプリケーション・ビルダーが表示されます。

  4. 共有コンポーネント」をクリックします。

    「共有コンポーネント」ページが表示されます。

  5. 「ロジック」で、「Webサービス参照」を選択します。

    「Webサービス参照」ページが表示されます。

アプリケーション・プロキシ・サーバー・アドレスの指定

インターネットのアクセスにプロキシ・サーバーが必要な環境の場合は、Webサービス参照を作成する前に「アプリケーション属性」ページでプロキシ・サーバー・アドレスを指定する必要があります。

アプリケーションにプロキシ・アドレスを指定するには、次のステップを実行します。

  1. 「作業領域」ホームページにナビゲートします。

  2. 「アプリケーション・ビルダー」アイコンをクリックします。

  3. アプリケーションを選択します。

    アプリケーション・ビルダーが表示されます。

  4. 属性の編集」をクリックします。

  5. 「標準属性の編集」をクリックします。

  6. 「アプリケーションの定義」で、「プロキシ・サーバー」にプロキシ・サーバーを入力します。

  7. 変更の適用」をクリックします。

Webサービス参照の作成

Webサービス参照を作成する場合、WSDLの位置の特定方法を決定する必要があります。WSDLの位置の特定には、2つの方法があります。

  • UDDIレジストリを検索する

  • WSDLドキュメントのURLを入力する

Universal Description, Discovery and Integration(UDDI)レジストリは、ビジネスのWebサービスを登録するディレクトリです。

UDDIレジストリの検索によるWebサービス参照の作成

UDDIレジストリを検索して、新しいWebサービスを作成するには、次のステップを実行します。

  1. 「Webサービス参照」ページにナビゲートします。

    1. 「作業領域」ホームページで「アプリケーション・ビルダー」アイコンをクリックします。

    2. アプリケーションを選択します。

    3. 共有コンポーネント」をクリックします。

    4. 「ロジック」で、「Webサービス参照」を選択します。

      「Webサービス参照」ページが表示されます。

  2. 作成」をクリックします。

  3. WSDLを検出するためにUDDIレジストリを検索するかどうかを尋ねるプロンプトが表示されたら、「はい」をクリックします。

  4. 「UDDIの位置」では、次のいずれかを実行できます。

    • UDDIレジストリへのURLエンドポイントを入力する。

    • 「リスト」 アイコンをクリックして、UDDIレジストリを選択する。

  5. 「サービスを検索」で、ビジネス名またはサービス名のどちらを検索するかを指定します。

    1. 「検索タイプ」で、ビジネス名またはサービス名のどちらを検索するかを指定します。両方を検索することはできません。

    2. 「名前」に、検索するビジネス名またはサービス名を入力します。

    3. オプションで、検索で大文字と小文字を区別するか、または完全一致させるかを指定します。ワイルドカード文字としてパーセント記号(%)を使用します。

    4. 検索」をクリックします。

    5. 検索結果が表示されたら、選択した後で「次へ」をクリックします。

    選択したWebサービスについて説明するサマリー・ページが表示されます。

  6. 選択内容を確認し、「次へ」をクリックして続行します。

    WSDLドキュメントへのURLが「WSDLの位置」フィールドに表示されます。

  7. 終了」をクリックします。

Webサービス参照がWebサービス参照リポジトリに追加されます。

WSDLドキュメントの指定によるWebサービス参照の作成

特定のWSDLドキュメントへのURLを指定して、新しいWebサービスを作成するには、次のステップを実行します。

  1. 「Webサービス参照」ページにナビゲートします。

    1. 「作業領域」ホームページで「アプリケーション・ビルダー」アイコンをクリックします。

    2. アプリケーションを選択します。

    3. 共有コンポーネント」をクリックします。

    4. 「ロジック」で、「Webサービス参照」を選択します。

      「Webサービス参照」ページが表示されます。

  2. 作成」をクリックします。

  3. WSDLを検出するためにUDDIレジストリを検索するかどうかを尋ねるプロンプトが表示されたら、「いいえ」をクリックします。

  4. 「WSDLの位置」に、WSDLドキュメントへのURLを入力します。

  5. 終了」をクリックします。

Webサービス参照がWebサービス参照リポジトリに追加されます。

Webサービス参照リポジトリの使用

Webサービス参照がWebサービス参照リポジトリに格納されます。

Webサービス参照リポジトリにアクセスするには、次のステップを実行します。

  1. 「作業領域」ホームページにナビゲートします。

  2. 「アプリケーション・ビルダー」アイコンをクリックします。

  3. アプリケーションを選択します。

    アプリケーション・ビルダーが表示されます。

  4. 共有コンポーネント」をクリックします。

    「共有コンポーネント」ページが表示されます。

  5. 「ロジック」で、「Webサービス参照」を選択します。

    「Webサービス参照」ページが表示されます。

「ビュー」リストから選択して、ページの外観を変更できます。使用可能なオプションは次のとおりです。

  • アイコン(デフォルト): 各Webサービス参照を大きいアイコンとして表示します。Webサービス参照を編集するには、該当するアイコンをクリックします。

  • 詳細: 各アプリケーション・アイテムをレポートに1行で表示します。

    「詳細」ビューでは、次の操作を実行できます。

    • 「編集」アイコンをクリックして参照を編集します。

    • 「実行」アイコンをクリックして参照をテストします。

    • 参照名をクリックして、参照の詳細を表示します。

Webサービス参照のテスト

Webサービス参照を作成した後、「Webサービス参照のテスト」ページでテストできます。

Webサービス参照をテストするには、次のステップを実行します。

  1. 「Webサービス参照」ページにナビゲートします。

    1. 「作業領域」ホームページで「アプリケーション・ビルダー」アイコンをクリックします。

    2. アプリケーションを選択します。

    3. 共有コンポーネント」をクリックします。

    4. 「ロジック」で、「Webサービス参照」を選択します。

      「Webサービス参照」ページが表示されます。

  2. 「ビュー」から、「詳細」を選択します。

  3. Webサービス参照名の横にある「 実行 」アイコンをクリックします。

    「Webサービス参照のテスト」ページが表示されます。ページの上部に、Webサービス名とURLエンドポイントが表示されます。

  4. 「操作」から、実行する操作を選択します。

  5. 「入力パラメータ」で、適切な値を入力します。

  6. テスト」をクリックします。

    ページの下部に、メッセージ・リクエストとレスポンスが表示されます。

Webサービスでの入力フォームとレポートの作成

「Webサービスのフォームとレポートの作成」ウィザードでは、入力フォーム、送信ボタンおよび結果を表示するレポートが作成されます。Webサービス参照を作成した直後、または新しいページを追加して、このウィザードを実行できます。

このウィザードは、Webサービスの結果が非スカラーであることが予想される場合に使用します。Amazon社のWebサービスが良い例です。このWebサービスでは、入力フォームに入力された検索基準に基づいて多くの結果が戻されます。

参照を作成した直後のフォームとレポートの作成

Webサービス参照を作成した直後に、フォームとレポートを作成するには、次のステップを実行します。

  1. Webサービス参照を作成します。詳細は、「Webサービス参照の作成」を参照してください。

  2. Webサービス参照が追加された後で、「Webサービスのフォームとレポートの作成」を選択します。

  3. 「Webサービス参照と操作」で、Webサービス参照および実行する操作を選択します。

  4. 「ページおよびリージョン属性の指定」で、ページとリージョン属性を確認します。指定したページが存在しない場合は、ウィザードによってページが作成されます。

  5. 「入力パラメータのアイテム」で、次の操作を実行します。

    1. フォームに追加するアイテムを指定します。アイテムを含めるには、「作成」列で「はい」を選択します。アイテムを含めない場合は、「いいえ」を選択します。

    2. 必要に応じて、アイテム・ラベルを編集します。

  6. 「ベース・ノード」で、次の操作を実行します。

    1. 「一時結果セット名」に、Webサービスの結果を格納するコレクションの名前を入力します。

    2. 「レポート対象の結果ツリー」で、作成されるXML文書(レポートに含める情報を含む)の一部を選択します。

  7. 「表示する結果パラメータ」で、レポートに含めるパラメータを選択します。

  8. 終了」をクリックします。

新しいページの追加によるフォームとレポートの作成

既存のWebサービス参照がある場合は、新しいページを追加して、入力フォームとレポートを作成できます。

新しいページを追加して、フォームとレポートを作成するには、次のステップを実行します。

  1. Webサービス参照を作成します。詳細は、「Webサービス参照の作成」を参照してください。

  2. 新しいページを作成します。詳細は、「ページのアプリケーションへの追加」を参照してください。

    「ページの作成」ウィザードで、次のステップを実行します。

    1. フォーム」を選択します。

    2. 「Webサービスのフォームとレポート」を選択します。

  3. 「Webサービス参照と操作」で、Webサービス参照および実行する操作を選択します。

  4. 「ページおよびリージョン属性の指定」で、ページとリージョン属性を確認します。指定したページが存在しない場合は、ウィザードによってページが作成されます。

  5. 「入力パラメータのアイテム」で、次の操作を実行します。

    1. フォームに追加するアイテムを指定します。アイテムを含めるには、「作成」列で「はい」を選択します。アイテムを含めない場合は、「いいえ」を選択します。

    2. 必要に応じて、アイテム・ラベルを編集します。

  6. 「ベース・ノード」で、次の操作を実行します。

    1. 「一時結果セット名」に、Webサービスの結果を格納するコレクションの名前を入力します。

    2. 「レポート対象の結果ツリー」で、作成されるXML文書(レポートに含める情報を含む)の一部を選択します。

  7. 「表示する結果パラメータ」で、レポートに含めるパラメータを選択します。

  8. 終了」をクリックします。

Webサービスでのフォームの作成

「Webサービスのフォームの作成」ウィザードでは、フォームと送信ボタンが作成されます。Webサービス参照を作成した直後、またはページ定義から、このウィザードを実行できます。

このウィザードは、Webサービスの結果がスカラーであることが予想される場合に使用します。株価を調べるWebサービスが良い例です。入力は銘柄記号で、出力はスカラーの適正価格であるためです。

参照を作成した直後のフォームの作成

Webサービス参照を作成した直後に、フォームを作成するには、次のステップを実行します。

  1. Webサービス参照を作成します。詳細は、「Webサービス参照の作成」を参照してください。

  2. Webサービス参照が追加された後で、「Webサービスのフォームの作成」を選択します。

  3. 「Webサービス参照と操作」で、Webサービス参照および実行する操作を選択します。

  4. 「ページおよびリージョン属性の指定」で、ページとリージョン属性を確認します。指定したページが存在しない場合は、ウィザードによってページが作成されます。

  5. 「入力パラメータのアイテム」で、次の操作を実行します。

    1. 追加するアイテムを指定します。アイテムを含めるには、「作成」列で「はい」を選択します。アイテムを含めない場合は、「いいえ」を選択します。

    2. 必要に応じて、アイテム・ラベルを編集します。

  6. 「出力パラメータのアイテム」で、次の操作を実行します。

    1. 追加する必要があるアイテムを指定します。アイテムを含めるには、「作成」列で「はい」を選択します。アイテムを含めない場合は、「いいえ」を選択します。

    2. 必要に応じて、アイテム・ラベルを編集します。

  7. 終了」をクリックします。

新しいページの追加によるフォームの作成

既存のWebサービス参照がある場合は、新しいページを追加して、フォームを作成できます。

新しいページを追加して、フォームを作成するには、次のステップを実行します。

  1. Webサービス参照を作成します。詳細は、「Webサービス参照の作成」を参照してください。

  2. 新しいページを作成します。詳細は、「ページのアプリケーションへの追加」を参照してください。

    「ページの作成」ウィザードで、次のステップを実行します。

    1. フォーム」を選択します。

    2. 「Webサービスのフォーム」を選択します。

  3. 「Webサービス参照と操作」で、Webサービス参照および実行する操作を選択します。

  4. 「ページおよびリージョン属性の指定」で、ページとリージョン属性を確認します。指定したページが存在しない場合は、ウィザードによってページが作成されます。

  5. 「入力パラメータのアイテム」で、次の操作を実行します。

    1. 追加する必要があるアイテムを指定します。アイテムを含めるには、「作成」列で「はい」を選択します。アイテムを含めない場合は、「いいえ」を選択します。

    2. 必要に応じて、アイテム・ラベルを編集します。

  6. 「出力パラメータのアイテム」で、次の操作を実行します。

    1. 追加する必要があるアイテムを指定します。アイテムを含めるには、「作成」列で「はい」を選択します。アイテムを含めない場合は、「いいえ」を選択します。

    2. 必要に応じて、アイテム・ラベルを編集します。

  7. 終了」をクリックします。

プロセスとしてのWebサービスの起動

ページ上で、Webサービスをプロセスとして実装することもできます。このプロセスを実行すると、リクエストがサービス・プロバイダに送信されます。その後で、レポートにリクエスト結果を表示できます。

Webサービスをプロセスとして起動するには、次のステップを実行します。

  1. 新しいページを作成します。詳細は、「ページのアプリケーションへの追加」を参照してください。

    「ページの作成」ウィザードで、次のステップを実行します。

    1. 空白ページ」を選択します。

    2. タブを使用するかどうかを尋ねるプロンプトが表示されたら、「いいえ」を選択します。

  2. ページ定義にナビゲートします。

    1. 「作業領域」ホームページにナビゲートします。

    2. 「アプリケーション・ビルダー」アイコンをクリックします。

    3. アプリケーションを選択します。

    4. ページを選択します。

      ページ定義が表示されます。

  3. 「ページ・レンダリング」の「プロセス」で、「作成」アイコンをクリックします。

    「ページ・プロセスの作成」ウィザードが表示されます。

  4. プロセスのカテゴリから、「Webサービス」を選択します。

  5. プロセス名、順序およびプロセス・ポイントを指定します。

  6. Webサービス参照および実行する操作を選択します。

  7. プロセスを定義します。「Webサービスの出力パラメータ」でオプションを選択すると、結果をコレクションまたはページ上のアイテムに格納できます。

    1. コレクションに結果を格納するには、次のステップを実行します。

      • 「結果の格納場所」で、「コレクション」を選択します。

      • 「値」フィールドにコレクションの名前を入力します。

    2. ページ上のアイテムに結果を格納するには、次のステップを実行します。

      • 「結果の格納場所」で、「アイテム」を選択します。

      • 表示されるフィールドに該当するアイテムの値を入力します。

  8. プロセスの作成」をクリックします。

レポートでのWebサービス結果の表示

Webサービスのリクエスト結果を表示するレポートを作成するには、次のステップを実行します。

  1. ページ定義にナビゲートします。

    1. 「作業領域」ホームページにナビゲートします。

    2. 「アプリケーション・ビルダー」アイコンをクリックします。

    3. アプリケーションを選択します。

    4. ページを選択します。

      ページ定義が表示されます。

  2. 「リージョン」で、「作成」アイコンをクリックします。

    「リージョンの作成」ウィザードが表示されます。

  3. 「リージョン・タイプ」で、「レポート」を選択します。

  4. 「レポート実装」で、「Webサービスの結果を含むコレクションのレポート」を選択します。「リージョン属性を指定」で、リージョン・タイトルを入力し、オプションでリージョン属性を編集します。

  5. 「Webサービス参照と操作」で、Webサービス参照および実行する操作を選択します。

  6. 「レポート対象の結果ツリー」で、作成されるXML文書(レポートに含める情報を含む)の一部を選択します。

  7. 「結果パラメータ」で、次の操作を実行します。

    1. 「一時結果セット名」に、Webサービスの結果を格納するコレクションの名前を入力します。

    2. 該当するパラメータを選択した後、選択解除します。

  8. SQLレポートの作成」をクリックします。

Webサービス・プロセスの編集

Webサービス・タイプのプロセスを作成した後で、Webサービス・プロセスを編集すると、入力パラメータを静的な値にマップできます(たとえば、キーを渡すなど)。

Webサービス・プロセスを編集するには、次のステップを実行します。

  1. Webサービス・プロセスを作成します。詳細は、「プロセスとしてのWebサービスの起動」を参照してください。

  2. Webサービス・プロセスが含まれているページ定義にナビゲートします。

  3. プロセス名を選択します。

    「ページ・プロセスの編集」ページが表示されます。

  4. 「Webサービスの入力パラメータ」までスクロールします。

  5. 入力パラメータを静的な値にマップするには、次のステップを実行します。

    1. 「Webサービスの入力パラメータ」までスクロールします。

    2. 該当するパラメータ名の横にある「値」フィールドに値を入力します。

  6. 変更の適用」をクリックします。

Webサービス参照履歴の表示

「Webサービス履歴」では、カレント・アプリケーションのWebサービス参照の変更が、アプリケーションID、Webサービス参照名、開発者および日付ごとに表示されます。

Webサービス参照の変更履歴を表示するには、次のステップを実行します。

  1. 「作業領域」ホームページにナビゲートします。

  2. 「アプリケーション・ビルダー」アイコンをクリックします。

  3. アプリケーションを選択します。

    アプリケーション・ビルダーが表示されます。

  4. 共有コンポーネント」をクリックします。

    「共有コンポーネント」ページが表示されます。

  5. 「ロジック」で、「Webサービス参照」を選択します。

  6. 履歴」をクリックします。


注意:

「Webサービス参照」ページに「履歴」ボタンが表示されるのは、Webサービス参照を作成した後のみです。

ユーザー・プリファレンスの管理

プリファレンスを使用すると、特定のユーザーの値を異なるセッションにわたって格納できます。これらのプリファレンスは、設定後、プログラムによって削除するか、またはOracle HTML DB管理者が削除することができます。ユーザー・プリファレンスは、ページ・プロセスの作成またはプリファレンスのアイテム・ソース値の計算によって、あるいはPL/SQL APIを使用してプログラムによって設定できます。

このセクションの構成は次のとおりです。

ユーザープリファレンスの表示

特定のユーザーのユーザー・プリファレンスは、「セッション・ステートの管理」ページに表示されます。

特定のユーザーのユーザー・プリファレンスを表示するには、次のステップを実行します。

  1. 「作業領域」ホームページにナビゲートします。

  2. 「管理」アイコンをクリックします。

  3. 「サービスの管理」をクリックします。

  4. 「セッション・ステート」をクリックします。

  5. ユーザーのプリファレンスをレポート」をクリックします。

  6. 表示されるフィールドにユーザー名を入力して、「実行」をクリックします。


参照:

「セッション・ステートの管理」ページの使用方法については、「セッション・ステートおよびユーザー・プリファレンスの管理」を参照してください。

ユーザープリファレンスの設定

ユーザー・プリファレンスは、ページ・プロセスの作成またはプリファレンス・アイテムの作成によって、あるいはプログラム的にアプリケーション内に設定できます。

このセクションの構成は次のとおりです。

ページ・プロセスを使用したユーザー・プリファレンスの設定

ページ・プロセスの作成によってユーザー・プリファレンスを設定するには、次のステップを実行します。

  1. 該当するページ定義にナビゲートします。

    1. 「作業領域」ホームページにナビゲートします。

    2. 「アプリケーション・ビルダー」アイコンをクリックします。

    3. アプリケーションを選択します。

    4. ページを選択します。

      ページ定義が表示されます。

  2. 「ページ・プロセス」で、「作成」アイコンをクリックします。

    「ページ計算の作成」ウィザードが表示されます。

  3. プロセス名、順序およびプロセス・ポイントを指定します。

  4. 「タイプ」から、次のいずれかの項目を選択します。

    • プリファレンスをアイテムの値に設定

    • アイテムがNULLでない場合、プリファレンスをアイテムの値に設定

  5. 表示されるフィールドに、次の形式でプリファレンスを指定します。

    PreferenceName:Item
    
    
  6. ページ・アイテム」をクリックして、使用可能なアイテムのリストを表示します。

  7. 画面に表示されるステップに従います。

ユーザー・プリファレンスに基づいたアイテムのソースの設定

アイテム・ソース・タイプをプリファレンスとして定義することによって、ユーザー・プリファレンスに基づいてアイテムのソースを設定できます。

ユーザー・プリファレンスに基づいてアイテムのソースを定義するには、次のステップを実行します。

  1. 該当するページ定義にナビゲートします。

    1. 「作業領域」ホームページにナビゲートします。

    2. 「アプリケーション・ビルダー」アイコンをクリックします。

    3. アプリケーションを選択します。

    4. ページを選択します。

      ページ定義が表示されます。

  2. 「アイテム」で、「作成」アイコンをクリックします。

    「ページ計算の作成」ウィザードが表示されます。

  3. 「アイテム名」属性および「表示位置」属性を指定し、「次へ」をクリックします。

  4. 「アイテム属性」を指定し、「次へ」をクリックします。

  5. 「アイテム・ソース」リストから、「プリファレンス」を選択します。

  6. 「アイテム・ソース値」で、プリファレンスの名前を入力します。

  7. 画面に表示されるステップに従います。

プログラムでのユーザー・プリファレンスの設定

ユーザー・プリファレンスをプログラム的に設定または参照するには、PL/SQL APIを使用する必要があります。ユーザー・レベルのキャッシュが、プログラムを介して使用できます。ユーザー・レベルのプリファレンスNAMED_PREFERENCEを設定するには、set_preferenceファンクションを使用します。次に例を示します。

HTMLDB_UTIL.SET_PREFERENCE(
 p_preference=>'NAMED_PREFERENCE',
 p_value =>:ITEM_NAME);

ユーザー・プリファレンスの値を参照するには、GET_PREFERENCESファンクションを使用します。次に例を示します。

NVL(HTMLDB_UTIL.GET_PREFERENCE('NAMED_PREFERENCE'),15)

前述の例では、プリファレンスに値が含まれていない場合、このプリファレンスの値はデフォルトの15になります。

プログラムでのユーザー・プリファレンスの削除

ユーザー・プリファレンスをプログラムによって削除するには、PL/SQL APIを使用する必要があります。ユーザー・レベルのプリファレンスNAMED_PREFERENCEを削除するには、REMOVE_PREFERENCEプロシージャを使用します。次に例を示します。

HTMLDB_UTIL.REMOVE_PREFERENCE(
p_preference=>'NAMED_PREFERENCE',
p_value =>:ITEM_NAME);

手動でのユーザー・プリファレンスのリセット

特定のユーザーのユーザー・プリファレンスは、手動で消去できます。

特定のユーザーのユーザー・プリファレンスを手動で消去するには、次のステップを実行します。

  1. 「作業領域」ホームページにナビゲートします。

  2. 「管理」アイコンをクリックします。

  3. 「サービスの管理」をクリックします。

  4. 「セッション・ステート」をクリックします。

  5. 選択したユーザーのプリファレンスの消去」をクリックします。

  6. ユーザーを指定し、画面に表示される手順に従います。


参照:

「セッション・ステートの管理」ページの使用方法については、「セッション・ステートおよびユーザー・プリファレンスの管理」を参照してください。

ページ・プロセスを使用したプリファレンスのリセット

ユーザー・プリファレンスをリセットするには、ページ・プロセスを作成し、プロセス・タイプの「プリファレンスをリセット」を選択します。

ページ・プロセスを使用してユーザー・プリファレンスをリセットするには、次のステップを実行します。

  1. 該当するページ定義にナビゲートします。

    1. 「作業領域」ホームページにナビゲートします。

    2. 「アプリケーション・ビルダー」アイコンをクリックします。

    3. アプリケーションを選択します。

    4. ページを選択します。

      ページ定義が表示されます。

  2. 「ページ・プロセス」で、「作成」アイコンをクリックします。

    「ページ計算の作成」ウィザードが表示されます。

  3. プロセス名、順序およびプロセス・ポイントを指定します。

  4. 「タイプ」から、「プリファレンスをリセット」を選択します。

  5. 画面に表示されるステップに従います。