ヘッダーをスキップ
Oracle Database Application Expressユーザーズ・ガイド
リリース2.2
B31492-01
  目次
目次
索引
索引

戻る
戻る
 
次へ
次へ
 

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

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

内容は次のとおりです。

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

「作業領域」ホームページはOracleデータベース上で実行されるため、ユーザーは、すべての分散Oracleデータベース機能を使用できます。 通常、分散データベース操作は、データベース・リンクを使用して実行します。

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


注意:

デフォルトでは、割当て済の作業領域またはデータベース・ユーザーに「CREATE DATABASE LINK」システム権限は付与されていません。 この機能を使用するには、DBAまたは管理者は、ユーザーの作業領域のデータベース・ユーザーにこの特別な権限を付与する必要があります。 詳細は、『Oracle Database管理者ガイド』の「データベース・リンクの作成」を参照してください。

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

  1. 「作業領域」ホームページで「SQLワークショップ」をクリックして、「オブジェクト・ブラウザ」をクリックします。

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

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

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

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

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

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

  1. 「作業領域」ホームページで「SQLワークショップ」をクリックして、「オブジェクト・ブラウザ」をクリックします。

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

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


参照:

「オブジェクト・ブラウザを使用したデータベース・オブジェクトの管理」および『Oracle Database管理者ガイド』の「データベース・リンク」

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

このセクションでは、アプリケーション・ビルダー・アプリケーションから電子メールを送信する方法を説明します。 アプリケーション・ビルダー・アプリケーションから電子メールを送信するには、最初に「電子メールの環境設定」を構成する必要があります。

このセクションの内容は次のとおりです。

「電子メールの環境設定」の構成

ユーザーがログイン・ページのリンクを使用して作業領域をリクエストしたり、パスワードを再設定するには、メールを送信するようにOracle Application Expressを構成する必要があります。 Oracle Application Expressによるメールの送信を有効にするには、「環境プリファレンス」ページで多くの設定を構成する必要があります。

メールを送信するようにOracle Application Expressを構成するには、次のステップを実行します。

  1. Oracle Application Express管理サービスにログインします。 「Oracle Application Express管理サービスへのログイン」を参照してください。

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

  3. 「環境設定の管理」をクリックします。

  4. 「電子メール」で、次のように入力します。

    1. SMTPホスト・アドレス(SMTP_HOST_ADDRESS): SMTPサーバーのサーバー・アドレスを定義します。 これは、インストール時にlocalhostに設定されます。 別のサーバーをSMTPリレーまたはメール・サーバーとして使用する場合は、localhostをそのサーバーの名前またはアドレスに変更します。

    2. SMTPホスト・ポート: SMTPサーバーがメール・リクエストをリスニングするポートを定義します。 デフォルトでは、インストール時に25に設定されます。

    3. 管理電子メール・アドレス: 電子メールを生成するための、割当てリクエストの承認、パスワードの再設定などの管理タスク用の送信元アドレスを定義します。

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

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

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

  • バックグラウンド・ジョブを作成して、アクティブなメール・キューに格納されているすべてのメール・メッセージを定期的に送信する

  • PL/SQLパッケージAPEX_MAILをコールする

このセクションの内容は次のとおりです。

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

Oracle Application Expressでは、未送信の電子メール・メッセージは、APEX_MAIL_QUEUEという表に格納されます。 DBMS_JOBバックグラウンド・プロセスは、Oracle Application Expressのインストール時に自動的に作成されます。 バックグラウンド・プロセスは、15分ごとにメール・キューを送信します。 デフォルトでは、このジョブ番号は4002です。Application Expressスキーマ(FLOWS_020200)に作成されます。

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

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

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


参照:

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

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

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

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

Oracle Application Expressでは、未送信の電子メール・メッセージは、APEX_MAIL_QUEUEという表に格納されます。 プロシージャAPEX_MAIL.PUSH_QUEUEをコールすることによって、このキューに格納されたメール・メッセージを指定したSMTPゲートウェイに配信できます。

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

次のUNIX/Linuxの例では、シェル・スクリプトを使用したAPEX_MAIL.PUSH_QUEUEプロシージャの使用方法を示します。

SQLPLUS / <<EOF
APEX_MAIL.PUSH_QUEUE;
DISCONNECT
EXIT
EOF


参照:

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

コレクションの使用

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

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

このセクションの内容は次のとおりです。

APEX_COLLECTION API

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

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

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

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

コレクションの作成

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

  • CREATE_COLLECTION

  • CREATE_OR_TRUNCATE_COLLECTION

  • CREATE_COLLECTION_FROM_QUERY

  • APEX_COLLECTION.CREATE_COLLECTION_FROM_QUERY_B

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

APEX_COLLECTION.CREATE_COLLECTION(
    p_collection_name => collection name );

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

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

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

APEX_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メソッドでも、コレクションが作成され、指定した問合せの結果がそのコレクションに移入されます。次に例を示します。

APEX_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の使用方法については、「コレクション・ステータスの判別」を参照してください。

コレクションの切捨て

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

APEX_COLLECTION.TRUNCATE_COLLECTION(
    p_collection_name => collection name );

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

コレクションのメンバーへのアクセスは、データベース・ビューAPEX_COLLECTIONSへの問合せによって行うことができます。 APEX_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)

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

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

コレクションの削除

コレクションの削除では、コレクションとそのすべてのメンバーが削除されます。次に例を示します。

APEX_COLLECTION.DELETE_COLLECTION (
    p_collection_name => collection name );

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

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

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

APEX_COLLECTION.DELETE_ALL_COLLECTIONS;

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

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

APEX_COLLECTION.DELETE_ALL_COLLECTIONS_SESSION;

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

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

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

APEX_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メソッドを使用して、コレクションに新しいメンバー(またはメンバーの配列)を追加することもできます。次に例を示します。

APEX_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);

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

パラメータp_generate_md5およびp_clob001

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

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


参照:

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

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

コレクション・メンバーを更新するには、UPDATE_MEMBERプロシージャをコールして、更新するコレクション・メンバーを順序番号を使用して参照します。次に例を示します。

APEX_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],

UPDATE_MEMBERプロシージャによって、メンバーの個々の属性でなく1つのコレクション・メンバー全体が置換されます。 このプロシージャでは、指定したコレクションが存在しない場合はエラーが発生します。 次に例を示します。

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

コレクション・メンバーの1つの属性を更新するには、UPDATE_MEMBER_ATTRIBUTEプロシージャを使用します。次に例を示します。

APEX_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 )

APEX_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 );

UPDATE_MEMBER_ATTRIBUTEプロシージャのコールでは、指定したコレクションが存在しない場合はエラーが発生します。

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

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

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

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

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

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

APEX_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);

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

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

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

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

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

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

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

APEX_COLLECTION.RESET_COLLECTION_CHANGED (
    p_collection_name => collection name)

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

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

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

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

コレクションのマージ

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

APEX_COLLECTION.MERGE_MEMBERS
p_collection_name => collection_name

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

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

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

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

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

表13-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_value

p_null_indexと組み合せて使用します。 この引数は、NULL値を識別します。 この値をNULLにすることはできません。 この引数の通常の値は0(ゼロ)です。

p_init_query

コレクションが存在しない場合に、この引数によって定義した問合せを使用してコレクションを作成できます。


コレクションの管理

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

このセクションの内容は次のとおりです。

メンバー数の取得

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

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

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

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

APEX_COLLECTION.RESEQUENCE_COLLECTION (
   p_collection_name => collection name )

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

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

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

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

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

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

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

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

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

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

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

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

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

APEX_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メソッドをコールすると、既存のコレクションが削除され、そのコレクションが再作成されます。次に例を示します。

APEX_COLLECTION.CREATE_OR_TRUNCATE_COLLECTION(
    p_collection_name       => collection name,

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

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

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

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

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

表13-2 APEX_ACTIVITY_LOGの列

タイプ 説明

time_stamp

DATE

アクティビティがページ・ビューの末尾に記録された日時

component_type

VARCHAR2(255)

今後の使用のための予約

component_name

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

ページ番号

session_id

NUMBER

Oracle Application Expressセッション識別子


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

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

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

Application Expressインスタンスのアクティビティのロギングは2つの異なるログ表間で交互に行われることに注意してください。 このため、ロギング情報がどの程度新しいかは、そのログ内で最も古い使用可能なエントリと同等といえます。 アプリケーション固有のログ情報を長期間保持する場合は、ログの情報を自分のアプリケーション表にコピーするか、ご使用のアプリケーションに直接ロギングを実装します。


参照:

「定義の編集」ページでのロギングの有効化については、「名前」を参照してください。

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

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

このセクションの内容は次のとおりです。

APEX_PLSQL_JOBパッケージの理解

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

SQL> DESC APEX_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

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

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

ファンクションまたはプロシージャ 説明

SUBMIT_PROCESS

このプロシージャを使用すると、バックグラウンドPL/SQLを送信できます。 このプロシージャは、一意のジョブ番号を戻します。 このジョブ番号は、このパッケージ内の他のプロシージャおよびファンクションの参照点として使用できるため、自分のスキーマ内に格納しておくと役に立ちます。

UPDATE_JOB_STATUS

このプロシージャをコールすると、現在実行しているジョブのステータスを更新できます。 このプロシージャは、送信されたPL/SQLからコールされたときに最も有効です。

TIME_ELAPSED

このファンクションを使用すると、ジョブが送信されてから経過した時間を確認できます。

JOBS_ARE_ENABLED

このファンクションをコールすると、そのデータベースが現在、APEX_PLSQL_JOBパッケージへのジョブの送信をサポートするモードであるかどうかを確認できます。

PURGE_PROCESS

このプロシージャをコールすると、送信されたジョブをクリーンアップできます。 送信されたジョブは、Oracle Application Expressによってそれらのレコードがクリーンアップされるか、またはPURGE_PROCESSのコールによって手動で削除するまで、APEX_PLSQL_JOBSビューに保持されます。


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

SQL> DESCRIBE APEX_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

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

表 13-4 APEX_PLSQL_JOBSビューの列

名前 説明

ID

各行の一意の識別子です。

JOB

送信された各PL/SQLジョブに割り当てられたジョブ番号です。 この値を戻すには、APEX_PLSQL_JOB.SUBMIT_PROCESSファンクションを使用します。 これは、APEX_PLSQL_JOBパッケージ内の他のプロシージャおよびファンクションに渡す値でもあります。

FLOW_ID

このジョブの送信元のアプリケーションです。

OWNER

アプリケーションを所有するデータベース・スキーマです。 この値は、DBMS_JOBがこのコードを実行する際に、コードを解析するスキーマを識別します。

ENDUSER

このプロセスを送信させたエンド・ユーザー(アプリケーションにログインしたユーザー)です。

CREATED

ジョブが送信された日付です。

MODIFIED

ステータスが変更された日付です。

STATUS

このジョブに対してユーザーが定義したステータスです。 この列を更新するには、APEX_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の実装

APEX_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        APEX_PLSQL_JOB.UPDATE_JOB_STATUS(
006          P_JOB     => :APP_JOB,
007          P_STATUS  => i || 'rows inserted');
008      END IF;
009      APEX_UTIL.PAUSE(2);
010    END LOOP;
011  END;

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

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

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

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

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

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

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

Webサービスの実装

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

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 Application Expressで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. 「ロジック」で、「Webサービス参照」を選択します。

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

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

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

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

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

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

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

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

  4. 定義」をクリックします。

  5. 「名前」で、「プロキシ・サーバー」にプロキシ・サーバーを入力します。

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

Webサービス参照の作成

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

  • Universal Description, Discovery and Integration(UDDI)レジストリを検索する

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

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. 「ロジック」で、「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. 入力パラメータを静的な値にマップするには、次のステップを実行します。

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

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

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

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

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

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

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

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

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

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

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

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

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


注意:

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