ヘッダーをスキップ
Oracle® Application Expressアプリケーション・ビルダー・ユーザーズ・ガイド
リリース4.0
B61338-01
  目次へ
目次
索引へ
索引

前へ
前へ
 
次へ
次へ
 

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

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

内容は次のとおりです。


参照:

Oracle Application Express APIリファレンスおよび「アプリケーションのデプロイ」

DMLロックについて

自動的なデータ操作言語(DML)が表内の行を更新または削除するためにOracle Application Expressで使用される場合、トランザクションが開始されるとまず行をロックし、ページに表示されてから変更されたかどうかを確認して、最後に行に対するUPDATEまたはDELETE文を発行します。

行のロックが頻繁に発生する一部の環境では、DML操作を制御してDML操作が次の状態かどうかを判別する場合があります。

APEX_DML_LOCK_WAIT_TIMEについて

アプリケーション置換文字列、アプリケーション・アイテムまたはページ・アイテムの値をAPEX_DML_LOCK_WAIT_TIMEに設定すると、DML操作を制御できます。次の値がサポートされています。

アプリケーションで設定する場合、APEX_DML_LOCK_WAIT_TIMEの値はアプリケーション全体の自動DMLを使用するすべてのUPDATEおよびDELETE DML操作に適用されます。特定の自動DMLプロセスを制御するには、自動DMLプロセスの前にAPEX_DML_LOCK_WAIT_TIMEの値を更新して、自動DMLプロセスの後にリセットします。これは、表形式フォームを使用した更新および削除には影響しないことに注意してください。

FSP_DML_LOCK_ROWについて

アプリケーション置換文字列、アプリケーション・アイテムまたはページ・アイテムの値をFSP_DML_LOCK_ROWに設定して、DML操作を制御することもできます。次の値がサポートされています。

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

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

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


注意:

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

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

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

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

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

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

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

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

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

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

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

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


参照:

Oracle Application Express SQLワークショップ・ガイドの「オブジェクト・ブラウザでのデータベース・オブジェクトの管理」、およびOracle Database管理者ガイドの「データベース・リンク」

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

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


参照:

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

APEX_MAILには3つのプロシージャが含まれています。アプリケーションから外部へ電子メール・メッセージを送信するには、APEX_MAIL.SENDを使用します。APEX_MAIL_QUEUEに格納されたメール・メッセージを配信するには、APEX_MAIL.PUSH_QUEUEを使用します。アプリケーションから外部へ添付ファイルとして電子メール・メッセージを送信するには、APEX_MAIL.ADD_ATTACHMENTを使用します。Application Express用のすべてのApplication Program Interfaceパッケージについては、『Oracle Application Express APIリファレンス』に記載されています。


参照:

Oracle Application Express APIリファレンスの「APEX_MAIL」およびOracle Application Express管理ガイドの「メールの管理」

コレクションの使用

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

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

コレクション情報は、PL/SQL API APEX_COLLECTIONを使用して挿入、更新および削除します。Application Express用のすべてのApplication Program Interfaceパッケージについては、『Oracle Application Express APIリファレンス』に記載されています。


参照:

Oracle Application Express APIリファレンスの「APEX_COLLECTION」

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

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

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

表 15-1 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アドレス

ir_report_id

NUMBER

対話モード・レポートID

ir_search

VARCHAR2

ユーザーが入力した対話モード・レポート検索条件。

user_agent

VARCHAR2(4000)

クライアントのWebブラウザ・ユーザー・エージェント

flow_id

NUMBER

アプリケーションID

step_id

NUMBER

ページ番号。

session_id

NUMBER

Oracle Application Expressセッション識別子。

sqlerrm

VARCHAR2(4000)

SQLエラー・メッセージ

sqlerrm_component_type

VARCHAR2(255)

今後使用する目的で確保されていいます。

sqlerrm_component_name

VARCHAR2(255)

今後使用する目的で確保されていいます。


アクティビティ・ログの領域を節約するため、一意のセッションそれぞれの最初のログ・エントリにのみ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

Oracle Application Expressインスタンスでのアクティビティのロギングは2つの異なるログ表を順番に使用することに注意してください。このため、ロギング情報はログのうち古い方の使用可能なエントリのみとなります。アプリケーションの特定のログ情報を常に保持する場合は、所有するアプリケーション表に両方のログ情報をコピーするか、アプリケーションに直接ロギングを実装する必要があります。


参照:

定義の編集ページで、有効なロギングの情報に関する「名前」を参照してください。

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

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

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

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

表 15-2 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_JOBビューで表示できます。

Application Express用のすべてのApplication Program Interfaceパッケージについては、『Oracle Application Express APIリファレンス』に記載されています。


参照:

Oracle Application Express APIリファレンスの「APEX_PLSQL_JOB」

システム・ステータスの更新について

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

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

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

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

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

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

テストおよび説明用に、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)またはRepresentational State Transfer(REST)アーキテクチャに基づいています。SOAPは、インターネット経由でリクエストおよびレスポンスを送受信するためのWorld Wide Web Consortium(W3C)標準プロトコルです。SOAPメッセージはSOAPエンベロープに格納された状態でサービス・プロバイダとサービス・ユーザーの間で交換できます。RESTful Webサービスはリソース指向です。WebサービスのスコープはURI内から検出され、サービスのメソッドは使用されるHTTPメソッドによって記述されます。これらのHTTPメソッドには、GET、POST、PUT、HEADおよびDELETEなどがあります。

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


ヒント:

Oracle Application ExpressをOracle Database 11g リリース1(11.1)以上と同時に実行している場合は、Webサービスを使用するためにネットワーク・サービスを有効にする必要があります。Oracle Database 11gのネットワーク・サービスの有効に関する項を参照してください。

RESTには、同様のメリットがあります。

内容は次のとおりです。


注意:

SOAP 1.1仕様はW3C技術ノートです。SOAPバージョン1.2仕様はW3C勧告です。

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

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

Webサービス参照の理解

Oracle Application ExpressでWebサービスを使用するには、ウィザードを使用してWebサービス参照を作成します。Webサービス参照は、Web Services Description Language(WSDL)ドキュメントに基づくか、RESTfulスタイルに基づくか、サービスに関する情報を指定して手動で作成することができます。

WSDLに基づいてWebサービス参照を作成する場合、ウィザードはWSDLを分析し、すべての必要な情報を収集して、次を含んだ有効なSOAPメッセージを作成します。

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

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

  • Webサービスの操作

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

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

手動でWebサービス参照を作成する場合、必要な情報を指定して、次を含んだ有効なSOAPリクエストを作成します。

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

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

  • アイテムの置換を含んだリクエストのSOAPエンベロープ

  • オプションで、Webサービスからのレスポンスを格納するコレクション名

RESTful Webサービス参照を作成する場合、次を含むリクエストおよびレスポンスの構造に関する必要な情報を指定します。

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

  • Webサービスのメソッドを識別するHTTPメソッド

  • リクエストの一部であるHTTPヘッダー(必要に応じて)

  • Webサービスに必要な入力のタイプ

  • レスポンスの書式およびレスポンス・パラメータの識別方法

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    アプリケーションのホームページが表示されます。

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

  4. 「アプリケーション」で、「定義の編集」をクリックします。

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

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

SSL有効Webサービスでの作業

Secure Sockets Layer(SSL)は、RSA公開鍵による暗号化と対称鍵による暗号化を使用して、認証、暗号化およびデータの整合性を実現する業界標準プロトコルです。

通信する必要のあるWebサービスがSSL有効Webサービスの場合(つまり、Webサービスに対するURLにhttpsと表示される)、ウォレットを作成し、そのウォレットがApplication Expressによって使用されるように構成する必要があります。ウォレットは、SSLに必要な認証および署名された資格証明(秘密鍵、証明書および信頼できる証明書)の格納に使用されるパスワード保護されたコンテナです。


参照:

Oracle Application Express管理ガイドの「ウォレット情報の構成」

WSDLに基づいたWebサービス参照の作成

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

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

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

UDDIレジストリは企業がWebサービスを登録するディレクトリです。

内容は次のとおりです。

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

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

  1. Webサービス参照ページにナビゲートします。「Webサービス参照ページへのアクセス」を参照してください。

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

  3. 「WSDLに基づく」を選択し、「次へ」をクリックします。

  4. WSDLを検出するためにUDDIレジストリを検索することを確認するプロンプトが表示されたら、「はい」の次に「次へ」をクリックします。

  5. 「UDDIの位置」で、UDDIレジストリへのURLエンドポイントを入力し、「次へ」をクリックします。

  6. 「検索」で、次を指定します。

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

    2. 名前: 検索に使用するビジネス名またはサービス名を入力します。ワイルドカードにはパーセント(%)を使用します。

    3. オプションで、完全一致検索または大文字/小文字を区別する検索を指定できます。

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

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

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

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

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

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

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

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

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

  1. Webサービス参照ページにナビゲートします。「Webサービス参照ページへのアクセス」を参照してください。

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

  3. 「WSDLに基づく」を選択し、「次へ」をクリックします。

  4. WSDLを検出するためにUDDIレジストリを検索することを確認するプロンプトが表示されたら、「いいえ」の次に「次へ」をクリックします。

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

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

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

Webサービス参照の手動作成

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

  1. Webサービス参照ページにナビゲートします。「Webサービス参照ページへのアクセス」を参照してください。

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

  3. 「手動」を選択し、「次へ」をクリックします。

    Webサービスの作成/編集ページが表示されます。

  4. 「名前」で、参照を識別する名前を入力します。

  5. 「サービスの説明」には、次の項目があります。

    1. URL: WebサービスのURLエンドポイントを入力します。

    2. アクション: Webサービスのアクションを入力します(オプション)。

    3. プロキシ: このサービスのアプリケーション・プロキシを上書きする場合、プロキシを入力します。

    4. SOAPのバージョン: 「1.1」または「1.2」を選択します。

    5. Basic認証: Webサービスが認証を必要とするかどうかを選択します。「はい」または「いいえ」を選択します。

  6. 「SOAPエンベロープ」で、このリクエストのSOAPエンベロープを入力します。


    注意:

    #ITEM_NAME#構文を使用すると、SOAPエンベロープのセッション・ステートからアイテムを参照できます。

  7. 「コレクションにレスポンスを格納」で、レスポンスを格納するコレクション名を入力します(オプション)。

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

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

RESTful Webサービス参照の作成

アプリケーションからRESTful Webサービスを使用する場合、RESTfull Webサービス参照を作成する必要があります。

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

  1. Webサービス参照ページにナビゲートします。「Webサービス参照ページへのアクセス」を参照してください。

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

  3. 「REST」を選択して「次へ」をクリックします。

  4. 「RESTの詳細」で、次の項目を指定します。

    1. 名前: 参照を識別する名前を入力します。

    2. URL: WebサービスのURLエンドポイントを入力します。

    3. プロキシ: このサービスのアプリケーション・プロキシを上書きする場合、プロキシを入力します(オプション)。

    4. HTTPメソッド: Webサービスへのリクエストに使用するhttpメソッドを選択します。「GET」、「HEAD」、「POST」、「PUT」または「DELETE」を選択します。

    5. 基本認証: HTTP基本認証が必要な場合は「はい」を選択します。それ以外の場合は、「いいえ」を選択します。

    6. HTTPヘッダー: リクエストで送信するHTTPヘッダーの名前を入力します。

    7. 「次へ」をクリックします。

  5. 「REST入力パラメータ」で、次の項目を指定します。

    1. 名前: メソッドに必要な入力パラメータの名前を入力します。

    2. タイプ: 入力タイプを選択します。

    3. 「パラメータの追加」をクリックします。

    4. 必要な各入力に対して、ステップaからcを繰り返します。

    5. 「次へ」をクリックします。

  6. 「REST出力パラメータ」で、次の項目を指定します。

    1. 出力形式: Webサービスから返されるレスポンス形式について「XML」または「テキスト」を選択します。

    2. 出力パラメータへのXPath(XMLのみ): レスポンスの関連部分へのXPath式を入力します。

    3. レスポンス・ネームスペース(XMLのみ): レスポンスXPathに対応する名前空間を入力します。

    4. パラメータ・デリミタ(テキストのみ): Webサービスから返されるパラメータを区切る文字またはシーケンスを入力します。新しい行を表すには\nを、タブ文字を表すには\tを使用します。

    5. 新規レコード・デリミタ(テキストのみ): Webサービスからのテキスト・レスポンスに含まれる新規レコードを特定する文字またはシーケンスを入力します。新しい行を表すには\nを、タブ文字を表すには\tを使用します。

    6. 名前: メソッドによって戻される出力パラメータの名前を入力します。

    7. タイプ: 出力タイプを選択します。

    8. 「パラメータの追加」をクリックします。

    9. 返される各出力パラメータに対して、ステップfからhを繰り返します。

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

Webサービス参照の作成成功ページが表示されます。Webサービス参照はWebサービス参照リポジトリに追加されます。

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

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

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

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

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

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

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

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

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

    ページ上部の「ナビゲーション」バーを使用して、Webサービス参照の検索またはページ表示の変更を行います。使用可能なオプションは次のとおりです。

    • Webサービス参照: 大/小文字を区別しない問合せを入力して、「実行」をクリックします。すべてのWebサービス参照を表示するには、フィールドを空白のままにして「実行」をクリックします。

    • ビュー: 表示モードを選択して「実行」をクリックします。使用可能なオプションは次のとおりです。

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

      • レポート: 各Webサービス参照をレポート内の1行として表示します。

  5. 「ビュー」リストから「レポート」を選択して、「実行」をクリックします。

  6. レポート・ビューでは、次の操作が可能です。

    • 参照名をクリックして参照を編集します。

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

    • 「ビュー」アイコンをクリックして参照に関する詳細を表示します。このオプションは、手動作成されたWebサービス参照またはREST Webサービス参照には使用できないことに注意してください。

WSDLから作成されたWebサービス参照のテスト

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

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

  1. Webサービス参照ページにナビゲートします。「Webサービス参照ページへのアクセス」を参照してください。

  2. 「ビュー」で、「レポート」を選択します。

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

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

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

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

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

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

手動作成されたWebサービス参照のテスト

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

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

  1. Webサービス参照ページにナビゲートします。「Webサービス参照ページへのアクセス」を参照してください。

  2. 「ビュー」で、「レポート」を選択します。

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

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

  4. 必要に応じて、「Basic認証」でユーザー名およびパスワードを入力します。

  5. 「SOAPエンベロープ」テキスト領域では、オプションで、SOAPリクエスト・エンベロープを編集します。

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

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

REST Webサービス参照のテスト

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

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

  1. Webサービス参照ページにナビゲートします。「Webサービス参照ページへのアクセス」を参照してください。

  2. 「ビュー」で、「レポート」を選択します。

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

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

  4. 「URL」および「プロキシ・オーバーライド」フィールドで、オプションでテストの値を編集します。

  5. 必要に応じて、「Basic認証」でユーザー名およびパスワードを入力します。

  6. 「HTTPヘッダー」で、適切な値を入力します。

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

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

    ページの下部にメッセージのレスポンスが表示されます。

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

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

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

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

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

  1. Webサービス参照を作成します。「WSDLに基づいたWebサービス参照の作成」および「RESTful Webサービス参照の作成」を参照してください。

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

  3. 「サービスと操作の選択」で、次の操作を実行します。

    1. Webサービス参照: Webサービス参照を選択します。

    2. 操作: 実行するメソッドを選択します。RESTスタイルWeb参照の場合、「doREST」を選択します。

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

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

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

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

  6. 該当する場合、Basic認証に「アイテム名」および「アイテム・ラベル」を指定します。このステップは、Basic認証が作成時にこのWebサービス参照に対して指定された場合にのみ表示されることに注意してください。

  7. ウィンドウ・サービスの結果で、次の操作を実行します。

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

    2. レポート対象の結果ツリー(RESTスタイルWebサービス参照では表示されない): レポートに含める情報を格納する、作成されるXML文書の一部を選択します。

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

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

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

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

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

  1. Webサービス参照を作成します。「WSDLに基づいたWebサービス参照の作成」「Webサービス参照の手動作成」および「RESTful Webサービス参照の作成」を参照してください。

  2. 新しいページを作成します。「データベース・アプリケーションのページの管理」を参照してください。

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

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

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

  3. 「サービスと操作の選択」で、次の操作を実行します。

    1. Webサービス参照: Webサービス参照を選択します。

    2. 操作: 実行するメソッドを選択します。RESTfulスタイルWeb参照の場合、doRESTが自動的に選択されます。手動スタイルWeb参照については、「操作」オプションは表示されません。

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

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

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

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

  6. 該当する場合、Basic認証に「アイテム名」および「アイテム・ラベル」を指定します。このステップは、Basic認証が作成時にこのWebサービス参照に対して指定された場合にのみ表示されることに注意してください。

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

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

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

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

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

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

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

  1. Webサービス参照を作成します。「WSDLに基づいたWebサービス参照の作成」「RESTful Webサービス参照の作成」および「Webサービス参照の手動作成」を参照してください。

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

  3. 「サービスと操作の選択」で、次の操作を実行します。

    1. Webサービス参照: Webサービス参照を選択します。

    2. 操作: 実行するメソッドを選択します。RESTfulスタイルWeb参照の場合、doRESTが自動的に選択されます。手動スタイルWeb参照については、「操作」オプションは表示されません。

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

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

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

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

  6. 「出力パラメータのアイテム」で、次の操作を実行します(このステップは手動スタイルWeb参照では省略されます)。

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

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

  7. 該当する場合、Basic認証に「アイテム名」および「アイテム・ラベル」を指定します。

    このステップは、Webサービス参照を作成したときに、Basic認証がこのWebサービス参照に対して指定された場合にのみ表示されることに注意してください。

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

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

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

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

  1. Webサービス参照を作成します。「WSDLに基づいたWebサービス参照の作成」「RESTful Webサービス参照の作成」および「Webサービス参照の手動作成」を参照してください。

  2. 新しいページを作成します。「データベース・アプリケーションのページの管理」を参照してください。

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

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

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

  3. 「Webサービス参照と操作」で、Webサービス参照および操作(つまり、実行されるメソッド)を選択します。RESTfulスタイルWeb参照の場合、doRESTが自動的に選択されます。手動スタイルWeb参照については、「操作」オプションは表示されません。

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

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

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

    2. 該当する場合、Basic認証に「アイテム名」および「アイテム・ラベル」を指定します。

      このステップは、Webサービス参照を作成したときに、Basic認証がこのWebサービス参照に対して指定された場合にのみ表示されることに注意してください。

  6. 「出力パラメータのアイテム」で、次の操作を実行します(このステップは手動スタイルWeb参照では省略されます)。

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

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

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

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

Webサービスをページ上でプロセスとして起動することもできます。Webサービス用のいずれかのフォームの作成ウィザードを実行すると、プロセスが作成されます。このプロセスを実行すると、リクエストがサービス・プロバイダに送信されます。その後で、レポートにリクエスト結果を表示できます。

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

  1. Webサービス参照を作成します。「WSDLに基づいたWebサービス参照の作成」「Webサービス参照の手動作成」または「RESTful Webサービス参照の作成」を参照してください。

  2. ページを作成します。「データベース・アプリケーションのページの管理」を参照してください。

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

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

    2. タブの使用を確認するプロンプトが表示されたら、「いいえ」を選択します。

  3. 「ページ定義」にナビゲートします。「ページ属性の変更」を参照してください。

  4. 「ページ・レンダリング」または「ページ・プロセス」で、「プロセス」セクションを探して「作成」をクリックします。

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

  5. 「プロセス・タイプ」で、「Webサービス」を選択して「次へ」をクリックします。

  6. 「プロセス属性」で、次の項目を指定します。

    1. 名前: プロセス名を入力します。

    2. 順序: このコンポーネントの順序を入力します。これによって評価の順序が決まります。

    3. ポイント: プロセス・ポイントを選択します。

    4. 「次へ」をクリックします。

  7. 「プロセス」で、次の項目を指定します。

    1. Webサービス参照: このプロセスのWebサービス参照を選択します。

      Web参照がWSDLから作成されたか、またはRESTfulスタイルである場合、「操作」の選択が表示されます。

    2. 操作(WSDLまたはRESTfulスタイルWebサービス参照のみ): このプロセスが実行するWebサービス操作を選択します。

      「Webサービスの入力パラメータ」と「Webサービスの出力パラメータ」が表示されます。

    3. 「Webサービスの入力パラメータ」で、Webサービス・プロセスの入力を指定します。

      • ソース: ソース・タイプを選択します。

      • 値: ソース値を選択します。

    4. 「Webサービスの出力パラメータ」で、結果の格納先を指定します。

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

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

      • 値: コレクションの名前を入力します。

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

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

      • 値: 適切なアイテム値を選択します。

    5. 「次へ」をクリックします。

  8. 「メッセージ」で、次の項目を指定します。

    1. 成功メッセージ: プロセスが正常に実行された場合に次のページに表示されるメッセージを入力します。

    2. 失敗メッセージ: 未処理例外が発生した場合に表示されるメッセージを入力します。エラー・プロセスが停止した後は、常にロールバックが実行され、エラー・メッセージが表示されます。

  9. 「プロセス条件」で、次の項目を指定します。

    1. 対象ボタン: プロセスを実行させるボタンを選択します。

    2. 条件タイプ: このコンポーネントを処理するために満たされる必要がある条件タイプを選択します。条件タイプに比較用の式が必要な場合、「式1」と、場合によっては「式2」フィールドが表示されます。必要に応じてこれらのフィールドに式を入力します。

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

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

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

  1. 「ページ定義」にナビゲートします。「コンポーネント・ビューでのページの編集」を参照してください。

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

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

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

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

  5. Web参照が手動で作成されたか、WSDLから作成されたか、またはRESTfulスタイルかを選択します。

  6. Webサービス参照がWSDLから作成された場合、次のステップを実行します。

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

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

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

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

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

  7. Webサービス参照が手動で作成された場合、次のステップを実行します。

    1. Webサービス参照を選択します。

    2. SOAPスタイルを選択します。

    3. メッセージの書式を選択します。

    4. レポートの対象となるノードへのXPath式を入力します。

    5. SOAPレスポンス・エンベロープのネームスペースを入力して、「次へ」をクリックします。

    6. レスポンス・メッセージが格納されているコレクション名を入力します。

    7. レポートに含めるパラメータ名を入力します。

  8. Webサービス参照がRESTスタイルの場合、次のステップを実行します。

    1. Webサービス参照を選択します。

    2. レスポンス・メッセージが格納されているコレクション名を入力します。

    3. レポート・テンプレートと、ページごとに表示される行数を選択します。

    4. レポートに含めるパラメータを選択します。

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

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

WSDLから作成されたWebサービス参照またはRESTfulスタイルの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サービス参照を作成した後のみです。

RESTful Webサービスとしてのレポート・リージョンの公開

RESTful Webサービス(URLでコール可能でJSONまたはXMLを返す)は、レポート・リージョン内で公開できます。レポート・リージョンをRESTful Webサービスとして公開するには、次のステップを実行する必要があります。

  1. インスタンス管理者は、インスタンス設定のRESTプロバイダ機能を有効化する必要があります。Application ExpressインスタンスへのRESTfulアクセスを有効化するには、Oracle Application Express管理ガイドの「RESTfulアクセスの有効化」を参照してください。

  2. 開発者はレポート・リージョンへのRESTfulアクセスを有効にする必要があります。「レポート・リージョンへのRESTfulアクセスの有効化」を参照してください。

  3. レポートを格納するページでは、認証を要求しない必要があります。

内容は次のとおりです。

レポート・リージョンへのRESTfulアクセスの有効化

レポート・リージョンへのRESTfulアクセスを有効化するには、認証が不要になるようにページを公開し、レポートをRESTfulアクセスのために有効化する必要があります。

ページを公開するには、次のステップを実行します。

  1. ワークスペースのホームページで、「アプリケーション・ビルダー」をクリックします。

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

  3. 有効にするレポートが格納されているページを選択します。

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

  4. 「ページ」で、「編集」アイコンをクリックします。

  5. 「セキュリティ」で、「認証」リストから「パブリック・ページ」を選択します。

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

レポート・リージョンをRESTfulアクセスのために有効化するには、次のステップを実行します。

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

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

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

  3. 有効にするレポートが格納されているページを選択します。

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

  4. 「リージョン」で、有効化するレポートが格納されているリージョンの名前をクリックします。

  5. 「属性」で、「静的ID」フィールドの値を入力します。この値はレポートにRESTfulにアクセスするために使用されます。

  6. 「RESTfulアクセスの有効化」リストで、「はい」を選択します。

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

Webサービス・クライアントからのRESTful有効レポート・リージョンへのアクセス

レポートをRESTfulアクセス用に有効化すると、RESTful Webサービスに渡すエンドポイントURLおよびパラメータを知ることが必要となります。エンドポイントURLは、Application Expressのこのインスタンスへのアクセスに使用するURLと似ており、リソースのapex_rest.getReportが後に続きます。次に例を示します。

http://apex.oracle.com/apex/apex_rest.getReport


ヒント:

クライアントがPOSTメソッドを使用する場合、HTTPヘッダーContent-Typeapplication/x-www-form-urlencodedの値に設定する必要があります。

名前 Default 必須 説明
app N/A はい RESTful有効レポートが格納されているアプリケーションの数値IDまたは別名。
page N/A はい RESTful有効レポートが格納されているページの数値IDまたは別名。
reportid N/A はい RESTful有効レポートの静的ID属性。
parmvalues null いいえ レポート・パラメータの値をカンマ区切りリストで送信できます(例: CLERK,10)
lang en いいえ 渡された言語に基づき、レポートを実行する前にNLS環境変数を設定します(例: de)
output xml はい XMLまたはJSONのいずれがクライアントに戻されるかを決定します。有効な値のドメインはxml、jsonです。

また、apex_restサービスには、アプリケーションIDまたは別名を指定して、RESTful有効レポートを検出できるようにする操作もあります。レスポンスは、RESTful Webサービスによってアクセス可能なすべてのレポートを記述したXMLドキュメントです。このサービスは、次のようなURLを使用して起動します。

http://apex.oracle.com/apex/apex_rest.getServiceDescription?app=691

このURLで、691はアプリケーションの数値IDです。戻されるドキュメントは次のようになります。

<?xml version="1.0"?>
<urn:getServiceDescriptionResponse xmlns:urn="urn:oasis:names:tc:wsrp:v1:types">
        <urn:requiresRegistration>false</urn:requiresRegistration>
        <urn:offeredPortlets>
                    <urn:PortletDescription>
                              <urn:portletHandle>employees</urn:portletHandle>
                              <urn:markupTypes>
                                        <urn:mimeType>application/xml</urn:mimeType>
                                        <urn:mimeType>application/json</urn:mimeType>
                              </urn:markupTypes>
                              <urn:groupID>1</urn:groupID>
                              <urn:description/>
                              <urn:title>EMP</urn:title>
                              <urn:keywords>
                                <urn:value>P1_JOB</urn:value>
                                      <urn:value>P1_DEPTNO</urn:value>
                              </urn:keywords>
                    </urn:PortletDescription>
        </urn:offeredPortlets>
</urn:getServiceDescriptionResponse

portletHandleはレポート・リージョンの静的IDか、RESTリクエストのreportidパラメータにマップされます。groupIDは、RESTリクエストのページIDまたはページ・パラメータにマップされます。さらに、SQLレポートによって使用されるすべてのパラメータはkeywordsノードの子としてリストされます。

例: RESTfulスタイルWebサービスでのWebサービス参照の作成

Oracle Application ExpressでWebサービスを使用するには、ウィザードを使用してWebサービスを作成します。Web参照を作成する場合は、次のいずれかの方法を使用できます。

  • WSDLドキュメントのURLを指定します。ウィザードはWSDLを分析し、すべての必要な情報を収集して、有効なSOAPメッセージを作成します。

    ウィザードには、Universal Description, Discovery, and Integration(UDDI)レジストリを使用してWSDLを検索できるステップがあります。UDDIレジストリはビジネスのWebサービスを登録するディレクトリです。WSDLはサービスまたはビジネス名のいずれかを入力して検索します。

  • Webサービスと対話する方法に関する情報(SOAPリクエスト・エンベロープなど)を入力し、Web参照を手動で作成します。

  • RESTfulスタイルWebサービスと対話する方法に関する情報を入力します(URLエンドポイント、HTTPメソッドおよび入力パラメータ、ペイロードなど)。

この例では、RESTful WebサービスへのWeb参照を作成します。RESTfulスタイルWebサービス参照は、Web参照の作成ウィザードの実行中にサービスの文書を検討し、その情報を指定することによって作成されます。次に、サービスと対話して結果を表示するフォームとレポートを作成します。

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


注意:

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


注意:

次の例は、最終的に起動される指定のWebサービスの可用性に依存しています。Webサービスを使用できない場合、この演習の完了が困難になることがあります。

RESTfullスタイルWebサービス用のWebサービス参照の作成

RESTfulスタイルWebサービスで新しいWeb参照を作成するには、次のステップを実行します。

  1. Webサービスのドキュメントを開くために、Webブラウザで次のように入力します。

    https://developer.yahoo.com/maps/rest/V1/

  2. 指示に従って、アプリケーションIDを入手します。

  3. アプリケーションのホームページで、「共有コンポーネント」をクリックします。

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

  5. 「REST」を選択して「次へ」をクリックします。

  6. 「RESTの詳細」で、次の変更を加えます。

    1. 名前: Yahoo Mapと入力します。

    2. URL: http://local.yahooapis.com/MapsService/V1/mapImageと入力します。

    3. 他のすべてのデフォルト値を受け入れ、「次へ」をクリックします。

  7. 「RESTの入力」で、次の変更を加えます。

    1. 名前: appidと入力します。

    2. 「パラメータの追加」をクリックします。

    3. 名前: locationと入力します。

    4. 「次へ」をクリックします。

  8. 「RESTの出力」で、次の変更を加えます。

    1. 出力パラメータへのXPath: /Resultと入力します

    2. 名前: URLと入力します

    3. パス: /text()と入力します

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

    Webサービス参照の作成成功ページが表示されます。Yahoo MapのWebサービス参照がWebサービス参照リポジトリに追加されます。

Webサービス結果のフォームとレポートの作成

次に、前のステップで作成したWebサービス参照によって記述されるWebサービスと対話するための、フォームとレポートを含むページを作成します。

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

  1. Webサービス参照の作成成功ページで、「Webサービスのフォームとレポートの作成」を選択します。

  2. 「サービスと操作の選択」で、次の変更を加えます。

    1. Webサービス参照: 「Yahoo Map」を選択します。

    2. 操作: 「doREST」を選択します。

    3. 「次へ」をクリックします。

  3. 「ページおよびリージョン属性」で、次の変更を加えます。

    1. フォーム・リージョン・タイトル: Addressと入力します。

    2. レポート・リージョン・タイトル: Mapと入力します。

    3. 他のすべてのデフォルト値を受け入れ、「次へ」をクリックします。

  4. 「入力アイテム」では、すべてのデフォルトを受け入れて「次へ」をクリックします。

  5. 「レポート・パラメータ」で、次の変更を加えます。

    1. 「URL」を選択します。

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

  6. 「ページの実行」をクリックします。

  7. ログインするためのプロンプトが表示されたら、ワークスペースのユーザー名とパスワードを入力して、「ログイン」をクリックします。

    図15-1のようなフォームとレポートが表示されます。ページ上部のAddressフォームにはデータ入力フィールドと送信ボタンが含まれていますが、Mapレポートにはデータが含まれていないことに注意してください。

    図15-1 Yahoo Mapのフォームとレポート(データなし)

    図15-1の説明は図の下のリンクをクリックしてください。
    「図15-1 Yahoo Mapのフォームとレポート(データなし)」の説明

  8. フォームをテストするには、次のように入力します。

    1. Appid: 前のステップでリクエストしたYahoo!アプリケーションIDを入力します。

    2. Location: 500 Oracle Parkway, Redwood Shores, CA 94065と入力します。

    3. 「送信」をクリックします。

      Mapレポートは、イメージへの長いURLを表示します。次に、Map Reportリージョンを編集して、URLのかわりにイメージを表示するようにします。

  9. 開発者バーで、「ページ4の編集」をクリックします。

  10. ページ4の編集ページの「ツリー・ビュー」で、次の手順を実行します。

    1. 「ページ・レンダリング」で、「リージョン」を右クリックし、「すべて開く」を選択します。

    2. 「URL」をダブルクリックします。

    3. 「列の書式」で、「HTML式」に次を入力します。

      <img src="#URL#" />

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

  11. 「ページの実行」をクリックします。

    図15-2に示すように、レポート・リージョンに地図が表示されます。

    図15-2 Yahoo Mapのフォームとレポート(データあり)

    図15-2の説明が続きます
    「図15-2 Yahoo Mapのフォームとレポート(データあり)」の説明

例: WSDLからのWebサービス参照の作成

Oracle Application ExpressでWebサービスを使用するには、ウィザードを使用してWebサービスを作成します。Web参照を作成する場合は、次のいずれかの方法を使用できます。

  • WSDLドキュメントのURLを指定します。ウィザードはWSDLを分析し、すべての必要な情報を収集して、有効なSOAPメッセージを作成します。

    ウィザードには、Universal Description, Discovery, and Integration(UDDI)レジストリを使用してWSDLを検索できるステップがあります。UDDIレジストリはビジネスのWebサービスを登録するディレクトリです。WSDLはサービスまたはビジネス名のいずれかを入力して検索します。

  • Webサービスと対話する方法に関する情報(SOAPリクエスト・エンベロープなど)を入力し、Web参照を手動で作成します。

  • RESTfulスタイルWebサービスと対話する方法に関する情報を入力します(URLエンドポイント、HTTPメソッドおよび入力パラメータ、ペイロードなど)。

この例では、WebサービスのWSDLドキュメントの位置を指定することによってWebサービス参照を作成します。次に、Webサービス参照をテストし、映画館と位置を表示するフォームとレポートを作成します。


注意:

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


注意:

次の例は、最終的に起動される指定のWebサービスの可用性に依存しています。Webサービスを使用できない場合、この演習の完了が困難になることがあります。

WSDLからのWebサービス参照の作成

WSDLの位置を指定して新しいWeb参照を作成するには、次のステップを実行します。

  1. アプリケーションのホームページで、「共有コンポーネント」をクリックします。

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

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

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

  4. 「WSDLに基づく」を選択し、「次へ」をクリックします。

  5. WSDLを検出するためにUDDIレジストリを検索することを確認するプロンプトが表示されたら、「いいえ」を選択して「次へ」をクリックします。

  6. 「WSDLの位置」フィールドで、次の内容を入力し、「次へ」をクリックします。

    http://www.ignyte.com/webservices/ignyte.whatsshowing.webservice/moviefunctions.asmx?wsdl

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

  7. 「参照の作成」をクリックします。

    Webサービス参照の作成ページが表示されます。MovieInformationのWebサービス参照がWebサービス参照リポジトリに追加されます。

Webサービス結果のフォームとレポートの作成

次に、Webサービス参照で使用するフォームとレポートを含むページを作成する必要があります。

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

  1. Webサービス参照の作成成功ページで、「Webサービスのフォームとレポートの作成」を選択します。

  2. 「サービスと操作の選択」で、次の操作を実行します。

    1. Webサービス参照: 「MovieInformation」を選択します。

    2. 操作: 「GetTheatersAndMovies」を選択します。

    3. 「次へ」をクリックします。

  3. 「ページおよびリージョン属性」で、次の操作を実行します。

    1. フォーム・リージョン・タイトル: Theater Informationに変更します。

    2. 他のデフォルト値を受け入れ、「次へ」をクリックします。

  4. 「入力アイテム」で、次の操作を実行します。

    1. P2_ZIPCODEとP2_RADIUSでは、「作成」列でデフォルトの「はい」を受け入れます。

    2. P2_ZIPCODEで、「アイテム・ラベル」のデフォルトをZIP Codeに変更します。

    3. 「次へ」をクリックします。

  5. 「Webサービスの結果」で、次の操作を実行します。

    1. 一時結果セット名(コレクション): デフォルトを受け入れます。

    2. レポート対象の結果ツリー: 「Theater (tns:Theater)」を選択します。

    3. 「次へ」をクリックします。

  6. 「結果パラメータ」で、すべてのパラメータを選択して、「終了」をクリックします。

  7. 「ページの実行」をクリックします。

  8. ログインするためのプロンプトが表示されたら、ワークスペースのユーザー名とパスワードを入力して、「ログイン」をクリックします。

    図15-3のようなフォームとレポートが表示されます。ページ上部のTheater Informationフォームにはデータ入力フィールドと送信ボタンが含まれていますが、Resultsレポートにはデータが含まれていないことに注意してください。

    図15-3 Theater Informationのフォームとレポート(データなし)

    図15-3の説明が続きます
    「図15-3 Theater Informationのフォームとレポート(データなし)」の説明

  9. フォームをテストするには、「ZIP Code」フィールドに43221を、「Radius」フィールドに5を入力します。次に、「送信」をクリックします。

    ページ下部のレポートは、図15-4のようになります。レポートには、入力されたZIPコードと半径に一致する映画館の名前と住所がされます。

    図15-4 Theater Informationレポート(結果データを表示)

    図15-4の説明が続きます
    「図15-4 Theater Informationレポート(結果データを表示)」の説明

例: Webサービス参照の手動作成

この例では、Webサービスについての情報を指定し、手動機能を使用してWeb参照を作成します。手動によるWeb参照は、WSDLドキュメントを視覚的に検討し、Webサービス・リクエスト用のSOAPエンベロープを決定するためのツールを使用して作成します。

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

Webサービス参照の手動作成

手動でWeb参照を作成する場合、WSDLからMovieInformationという名前のサービスについてのセクションをコピーします。

次のステップで提供する設定例は、このマニュアルがリリースされた時点でのMovieInformationサービスに基づいていることに注意してください。

手動Web参照を作成するには、次のステップを実行します。

  1. アプリケーションのホームページで、「共有コンポーネント」をクリックします。

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

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

  4. 「手動」を選択し、「次へ」をクリックします。

    Webサービスの作成/編集ページが表示されます。

  5. 「名前」フィールドで、Movie Infoと入力します。

  6. MovieInformationサービスのエンドポイントを探します。

    1. 次の場所に移動して、WSDLを開きます。

      http://www.ignyte.com/webservices/ignyte.whatsshowing.webservice/moviefunctions.asmx?wsdl
      
    2. WSDLで、soap:addressエレメントのlocation属性を見つけます(これはportエレメントの子です)。コード内でsoap:address locationという語を検索できます。

      このマニュアルのリリース時点では、次の属性です。

      http://www.ignyte.com/webservices/ignyte.whatsshowing.webservice/moviefunctions.asmx
      
  7. Webサービスの作成/編集ページの「URL」フィールドで、探したMovieInformationサービスのエンドポイントを入力します。次に例を示します。http://www.ignyte.com/webservices/ignyte.whatsshowing.webservice/moviefunctions.asmx

  8. GetTheatersAndMovies操作のSOAPアクションを探します。

    1. 必要な場合、WSDLを再び開きます。ステップ7aを参照してください。

    2. WSDLで、soap:operationエレメントのsoapAction属性を見つけます(これはGetTheatersAndMoviesの名前属性を持つ操作エレメントの子です)。コード内でsoap:operation soapActionという語を検索できます。

      このマニュアルのリリース時点では、次の属性です。

      http://www.ignyte.com/whatsshowing/GetTheatersAndMovies
      
  9. Webサービスの作成/編集ページの「アクション」フィールドで、探したSOAPアクションを入力します。次に例を示します。http://www.ignyte.com/whatsshowing/GetTheatersAndMovies

  10. Web参照の作成/編集ページの「SOAPエンベロープ」フィールドで、SOAPリクエスト・メッセージを表すxmlドキュメントを入力します。次に例を示します。

    <?xml version="1.0" encoding="UTF-8"?>
    <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
    xmlns:tns="http://www.ignyte.com/whatsshowing"
    xmlns:xs="http://www.w3.org/2001/XMLSchema">
       <soap:Body>
          <tns:GetTheatersAndMovies>
             <tns:zipCode>#ZIP#</tns:zipCode>
             <tns:radius>#RADIUS#</tns:radius>
          </tns:GetTheatersAndMovies>
       </soap:Body>
    </soap:Envelope>
    

    指定されたWebサービスに対して有効なSOAPリクエストを作成するために、MindReefなどのSOAPメッセージ生成ツールを使用できます。

  11. 「コレクションにレスポンスを格納」フィールドに、MOVIE_RESULTSと入力します。これはWebサービスからのレスポンスが格納される場所です。

    Webサービスの作成/編集ページは図15-5のようになります。

    図15-5 Webサービスの作成/編集ページ

    図15-5の説明が続きます
    「図15-5 Webサービスの作成/編集ページ」の説明

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

    Webサービス参照ページが表示され、Movie Infoがリストに表示されます。

Webサービス参照のテスト

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

  1. Webサービス参照ページで、Movie Info Web参照の横にある「テスト」アイコンをクリックします。

    Webサービスのテスト・ページが表示されます。


    注意:

    ビューは「レポート」に設定されている必要があります。それ以外の場合、「テスト」アイコンは表示されません。

  2. 「SOAPエンベロープ」フィールドで、#ZIP#を43221に、#RADIUS#を5に置換します。

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

  4. 「結果」フィールドを検討し、レスポンスの次の内容を確認します。

    • リターン・エンベロープのベース・ノードは次のようにコールされます。

      GetTheatersAndMoviesResponse
      
    • メッセージのネームスペースは次のようになります。

      http://www.ignyte.com/whatsshowing
      
    • 結果エレメントにおけるレスポンスの対象部分へのXPathは、次のようになります。

      /GetTheatersAndMoviesResponse/GetTheatersAndMoviesResult/Theater/Movies/Movie
      
    • 結果の対象エレメントは次のようにコールされます。

      Name
      Rating
      RunningTime
      ShowTimes
      

Webサービス結果についてのフォームとレポートの作成

次に、手動のWebサービス参照に使用するフォームとレポートを含むページを作成します。

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

  1. アプリケーションのホームページで、「ページの作成」をクリックします。

  2. 「フォーム」を選択して、「次へ」をクリックします。

  3. 「Webサービスのフォームとレポート」を選択し、「次へ」をクリックします。

  4. 「Webサービス参照」で、「Movie Info」を選択して「次へ」をクリックします。

  5. 「ページおよびリージョン属性」で、次の変更を加えます。

    1. フォーム・リージョン・タイトル: Theater Informationと入力します。

    2. 他のすべてのデフォルト値を受け入れ、「次へ」をクリックします。

  6. 「入力アイテム」で、次の変更を加えます。

    1. 「ZIP」と「RADIUS」について、「作成」列でデフォルトの「はい」を受け入れます。

    2. 「ZIP」で、「アイテム・ラベル」のデフォルトを「ZIP Code」に変更します。

    3. 「次へ」をクリックします。

  7. 「Webサービスの結果」で、次の変更を加えます。

    1. SOAPスタイル: 「ドキュメント」を選択します。

    2. メッセージの書式: 「リテラル」を選択します。

    3. 結果ノード・パス: 次を入力します。

      /GetTheatersAndMoviesResponse/GetTheatersAndMoviesResult/Theater/Movies/Movie

    4. メッセージの名前空間: 次を入力します。

      http://www.ignyte.com/whatsshowing

    5. 「次へ」をクリックします。

  8. 「パラメータ名」に、NameRatingRunningTimeおよびShowtimesと入力して、「次へ」をクリックします。

  9. 「タブ・オプション」では、デフォルトを受け入れて「次へ」をクリックします。

  10. 「フォームとレポートの作成」をクリックします。

  11. 「ページの実行」をクリックします。

  12. ログインするためのプロンプトが表示されたら、ワークスペースのユーザー名とパスワードを入力して、「ログイン」をクリックします。

    図15-6のようなフォームとレポートが表示されます。ページ上部のTheater Informationフォームにはデータ入力フィールドと送信ボタンが含まれていますが、Resultsレポートにはデータが含まれていないことに注意してください。

    図15-6 Theater Informationのフォームとレポート(データなし)

    図15-6の説明が続きます
    「図15-6 Theater Informationのフォームとレポート(データなし)」の説明

  13. フォームをテストするには、「ZIP Code」フィールドに43221を、「Radius」フィールドに5を入力します。次に、「送信」をクリックします。

    ページ下部のレポートは、図15-7のようになります。レポートには、入力されたZIPコードと半径に一致する映画館の名前と住所がされます。

    図15-7 Theater Informationレポート(結果データを表示)

    図15-7の説明が続きます
    「図15-7 Theater Informationレポート(結果データを表示)」の説明

プラグインの実装

このセクションでは、プラグインをアプリケーションに追加する方法と、再利用および共有を管理する方法について説明します。プラグインの例はOracle Technology NetworkのApplication Expressプラグイン・リポジトリから入手可能で、「サンプル・データベース・アプリケーション」に含まれています。

内容は次のとおりです。

プラグインについて

プラグインによって、開発者はApplication Expressで使用可能な組込みタイプを宣言的に拡張したり、開発者が組込みタイプを共有および再利用できます。

Application Expressでは、アイテム、リージョン、動的アクションおよびプロセス・タイプのグループ・セットがサポートされます。プラグインによってアプリケーション内で新しいタイプを宣言的に作成および使用することによって、これらの組込みタイプを拡張する手段が提供されます。プラグインは再利用を目的として設計されているため、開発者はプラグインを別のワークスペースにエクスポートおよびインポートしたり、プラグイン・リポジトリを使用してプラグインをApplication Expressプラグイン・コミュニティと共有できます。

プラグインを実装するプロセスには、次の手順があります。

  1. アプリケーション・ワークスペースでプラグインを作成するか、またはインポートします。

  2. プラグインを使用するためのアイテム、リージョン、プロセスまたは動的アクション・タイプを編集または作成します。

  3. プラグインをテストするためにアプリケーションを実行します。

プラグインの実装例については、次の場所にあるLearning Libraryに移動し、「All Content」タブをクリックして、Application Express(APEX)製品OBEの検索基準を入力します。

http://apex.oracle.com/pls/apex/f?p=9830:1:0::NO

プラグインへのアクセス

プラグインにアクセスするには、次の手順を実行します。

  1. プラグイン・ページにナビゲートします。

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

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

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

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

    5. 「ユーザー・インタフェース」で、「プラグイン」を選択します。

      プラグイン・ページが表示され、「プラグイン」タブがデフォルトで選択されます。使用可能なすべてのプラグインが表示されます。

  2. ページの外観は、ページ上部にある検索バーを使用してカスタマイズできます。使用可能なコントロールは次のとおりです。

    • 「検索」アイコン: 虫めがねに似ています。このアイコンをクリックして、検索を特定の列のみに絞ります。すべての列を検索するには、「すべての列」を選択します。

    • テキスト領域: 大/小文字を区別しない検索基準(ワイルド・カード文字は暗黙的に定義される)を入力し、「実行」をクリックします。

    • 「実行」ボタン: 検索を実行するか、フィルタを適用します。

    • ビュー・アイコン: このコントロールを使用して、アイコン・ビューとレポート・ビューを切り替えます。ビューを変更するには、次のいずれかを選択します。

      • 「アイコンの表示」(デフォルト)は、各計算を大きいアイコンとして表示します。

      • 「レポートの表示」は、各計算をレポート内の1行として表示します。

    • 「アクション・メニュー」: 「アクション」を表示します。レポート・ビューをカスタマイズするにはこのメニューを使用します。「「アクション」メニューの使用」を参照してください。

プラグインの編集

プラグインを編集するには、次のようにします。

  1. プラグイン・ページにナビゲートします。「プラグインへのアクセス」を参照してください。

  2. 編集または表示するプラグインをクリックします。

    プラグインの作成/編集ページが表示されます。

  3. 変更を加えます。各オプションの詳細は、アイテム・ヘルプ、「プラグインの作成」「プラグインへのカスタム属性の追加」「プラグインに関連付けるファイルのアップロード」および「プラグインへのイベントの追加」を参照してください

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

プラグインの作成

プラグインを作成するには、次のようにします。

  1. プラグイン・ページにナビゲートします。「プラグインへのアクセス」を参照してください。

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

    プラグインの作成/編集ページが表示されます。

  3. 「名前」で、次の項目を指定します。

    1. 名前(必須): プラグインの名前を入力します。

    2. 内部名(必須): プラグインの内部名を入力します。この名前は、現在のアプリケーション内で一意である必要があります。


      ヒント:

      内部名をワールドワイドでグローバルな一意名とするために、組織のドメイン名を内部プラグイン名の接頭辞として使用することをお薦めします。たとえば、ドメイン名mycompany.comSliderという名前のプラグインに接頭辞として付けると、内部名はCOM.MYCOMPANY.SLIDERとなります。

    3. タイプ(必須): このプラグインを使用するコンポーネントのタイプを選択します。「コールバック」と「標準属性」の設定は選択されるプラグイン・タイプによって異なります。詳細は、次のセクションを参照してください。

  4. 「サブスクリプション」で、次の項目を指定します。

    • マスター・プラグインの参照元: このプラグインを、このワークスペースの別のプラグインに基づくようにするには、ポップアップ・リストからプラグインを選択します。それ以外の場合、このフィールドをブランクのままにし、これをこのプラグインのマスター・コピーとします。

  5. 「設定」で、次の項目を指定します。

    • ファイルの接頭辞: データベースのプラグイン定義とともに格納されたファイルを参照するには、デフォルトの#PLUGIN_PREFIX#を使用します。この接頭辞は、Webサーバーがプラグインのファイルを指定する場合に使用する仮想パスを特定します。パフォーマンスを向上するために、プラグイン・ファイルをWebサーバーに格納し、#IMAGE_PREFIX#または任意の有効なURLを使用してプラグイン・ファイルを参照することもできます。

  6. 「ソース」で、次の項目を指定します。

    1. 「PL/SQLコード」: このプラグインのレンダリング、検証、実行およびAJAXコールバックの実行用のプロシージャを含むコードのPL/SQL無名ブロックを入力します。

    2. PL/SQLコードを検証しない(実行時にのみPL/SQLコードを解析)。: PL/SQLコードを実行時にのみ解析する場合は、このオプションを選択します。選択しない場合、コードはプラグインが作成されるときに解析されます。

  7. 「コールバック」で、次の項目を指定します。

    1. レンダリング・ファンクション名(リージョン、アイテムおよび動的アクション・タイプのプラグインの場合のみ使用可能): プラグインをレンダリングするためにコールされるPL/SQLファンクションの名前を入力します。

    2. AJAXファンクション名(リージョン、アイテムおよび動的アクション・タイプのプラグインの場合のみ使用可能): AJAXのコールで追加データをロードするためにプラグインによって使用されるPL/SQLファンクションの名前を入力します。

    3. 検証ファンクション名(アイテム・タイプのプラグインの場合のみ使用可能): 送信済データについて基本検証を実行するためにプラグインが使用できるPL/SQLファンクションの名前を入力します。

    4. 実行ファンクション名(プロセス・タイプのプラグインの場合のみ使用可能): プラグインを実行するためにコールされるPL/SQLファンクションの名前を入力します。


    注意:

    すべてのコールバック・ファンクション名は、無名PL/SQLコード・ブロックのファンクション、パッケージ内のファンクションまたはデータベース内のスタンドアロン・ファンクションを参照できます。詳細情報と例についてはアイテム・ヘルプを参照してください。

  8. 「標準属性」(プロセス・タイプのプラグインでは使用不可)で、次の項目を指定します。

    動的アクション・タイプのプラグインでは、オプションが選択されると、次の記述が適用されます。

    1. アイテムの場合: 動的アクションでは、影響を受ける要素としてアイテムの選択がサポートされます。

    2. リージョンの場合: 動的アクションでは、影響を受ける要素としてリージョンの選択がサポートされます。

    3. DOMオブジェクトの場合: 動的アクションでは、影響を受ける要素としてDOMオブジェクトの選択がサポートされます。

    4. jQueryセレクタの場合: 動的アクションでは、影響を受ける要素としてjQueryセレクタの選択がサポートされます。

    5. トリガー要素: 動的アクションでは、影響を受ける要素としてトリガー要素の選択がサポートされます。

    6. イベント・ソース: 動的アクションでは、影響を受ける要素としてイベント・ソースの選択がサポートされます。

    7. 影響を受ける要素が必要です: 動的アクションでは、影響を受ける要素の指定が必要となります。

    8. 「ページ・ロード時に実行」を選択: アクションの「ページのロード時に実行」フィールドのデフォルト値を定義します。

    9. エラー時に実行停止属性を指定: アクションの「エラー時に実行停止」フィールドが使用できます。

    アイテム・タイプ・プラグインでは、次のオプションを選択して有効化します。

    1. ウィジェットの表示: ウィジェットが表示されます。

    2. セッション・ステート変更可能: アイテムの値をセッション・ステート中に変更できます。「ウィジェットの表示」属性が選択されている必要があります。

    3. 読取り専用属性を指定: ユーザーはアイテムの「読取り専用」条件を指定できます。この属性を有効にするには「ウィジェットの表示」属性が選択されている必要があります。

    4. エスケープ出力属性を指定: アイテムの編集時に、アイテムの「セキュリティ」セクションに「特殊文字をエスケープ」フィールドが存在します。「ウィジェットの表示」属性が選択されている必要があります。

    5. クイック選択属性を指定: アイテムにクイック選択属性が存在します。「ウィジェットの表示」属性が選択されている必要があります。

    6. ソース属性を指定: 「使用されるソース」、「ソース・タイプ」、「書式マスク」などのソースに関連した属性がアイテムに表示されます。

    7. 日付のみの書式マスク: 日付情報を処理するアイテムについて、「書式マスク」フィールド・ポップアップで選択する日付値を表示することによって日付の選択を制限します。「ソース属性を指定」が選択されている必要があります。

    8. 数値のみの書式マスク: 数値情報を処理するアイテムについて、「書式マスク」フィールド・ポップアップで選択する数値を表示することによって数値の選択を制限します。

    9. 要素属性を指定: アイテムには、「横/縦の位置合せ」、「HTMLフォームの要素属性」、「要素の前のテキスト」、「要素の後のテキスト」などの要素属性が存在します。

    10. 幅属性を指定: アイテムの幅を制御できます。

    11. 高さ属性を指定: アイテムの高さを制御できます。

    12. 要素オプション属性を指定: チェック・ボックスのラジオ・グループなどの複数の選択要素をレンダリングするときに、アイテムで追加のオプション属性を指定できます。

    13. 暗号化セッション・ステート属性を指定: アイテムを編集するとき、「セキュリティ」リージョンの下に「セッション・ステートに暗号化された値を保存」が表示されます。

    14. LOVを指定: アイテムに関連付けられたLOVが存在します。「ウィジェットの表示」属性が選択されている必要があります。

    15. LOVが必須: LOVを処理するアイテムで、LOVを定義する必要があります。「LOVを指定」属性が選択されている必要があります。

    16. LOVのNULL表示属性を指定: アイテムは、null値を含むことが可能なLOVに関連付けられます。「LOVを指定」属性が選択されている必要があります。

    17. カスケードLOV属性を指定: アイテムにカスケードLOV関連の属性が存在します。「LOVを指定」属性が選択されている必要があります。

    リージョン・タイプ・プラグインでは、次のオプションを選択して有効化します。

    1. リージョン・ソースはSQL文です: リージョン・ソースはSQL文です。選択すると、問合せによって戻すことができる最小と最大の列数を指定でき、ユーザーを支援するために、SQLの例が表示されます。

    2. リージョン・ソースはプレーン・テキストです: リージョン・ソースはプレーン・テキストです。

    3. リージョン・ソースが必要です: リージョン・ソースがSQL文の場合は、この属性が必須の値になります。

  9. 「情報」で、次の項目を指定します。

    1. バージョン: プラグインのバージョンを識別する文字列を入力します。

    2. URL情報: プラグイン作成者のホームページのURL、またはプラグインに関する追加情報のURLです。

  10. 「ヘルプ・テキスト」に、ユーザーがプラグインの機能を理解するのに使用するヘルプ・テキストを入力します。

  11. 「コメント」に、アプリケーションが実行されているときに表示されないコメントおよび注意を入力します。

    各オプションの詳細は、アイテムのヘルプを参照してください。

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

    プラグインが作成されたら、追加のカスタム属性の指定、プラグインと関連付けるイメージ、CSSおよびJavaScriptファイルなどのファイルのアップロードおよびイベントの追加を実行できます。「プラグインへのカスタム属性の追加」「プラグインと関連付けるファイルのアップロード」および「プラグインへのイベントの追加」を参照してください。

プラグインへのカスタム属性の追加

プラグイン属性は、プラグインが使用されるとき、開発者に追加データの入力を求めるプロンプトをビルダー内で表示するために使用します。

プラグインにカスタム属性を追加するには、次の手順を実行します。

  1. プラグイン・ページにナビゲートします。「プラグインへのアクセス」を参照してください。

  2. 変更するプラグインをクリックします。

    プラグインの作成/編集ページが表示されます。

  3. 「カスタム属性」までスクロールし、「属性の追加」をクリックします。

    属性の編集ページが表示されます。

  4. 「名前」で、次の項目を指定します。

    1. 有効範囲: 属性がアプリケーションについて1回のみ定義される場合は「アプリケーション」を選択します。プラグインがコンポーネント内で参照されるたびに属性が定義される場合は「コンポーネント」を選択します。

    2. 属性: ATTRBUTE_XX列に関連付けられ、apex_pluginパッケージに定義されたPL/SQLタイプと関連するシーケンスを入力します。

    3. 表示順序: Application Expressビルダー内でのこのプラグイン属性の表示順序を入力します。

    4. ラベル: Application Expressビルダー内でのこの属性に表示されるラベルを入力します。

  5. 「設定」で、次の項目を指定します。

    1. タイプ: 属性タイプを選択します。

    2. 必須: この属性を指定する必要がある場合は「はい」を選択します。それ以外の場合は、「いいえ」を選択します。

    3. 翻訳可能: この属性を翻訳ファイルに含める場合は「はい」を選択します。それ以外の場合は、「いいえ」を選択します。

    4. 表示幅: Application Expressビルダー内でこの属性に表示する長さを(文字で)入力します。

    5. 最大幅: Application Expressビルダー内でこの属性に対してユーザーが入力できる最大の文字数を入力します。

  6. 「デフォルト値」で、このプラグインを使用する新しいコンポーネントが作成されるときにこのプラグイン属性について使用する値を指定します。Yes/Noタイプの属性ではYとNを使用します。

  7. 「条件」で、次の項目を指定します。

    1. 依存先: 現在の属性が依存する属性を選択します

    2. 条件タイプ(依存属性の場合のみ表示): この属性がレンダリングされるために満たされる必要がある条件のタイプを選択します。

    3. 式(条件タイプで必要な場合のみ表示): 選択された条件タイプを満たす必要がある式を入力します。詳細は、アイテム・ヘルプを参照してください。

  8. 「ヘルプ・テキスト」で、Application Expressビルダー内でこの属性の状況依存ヘルプとして表示されるヘルプ・テキストを指定します。

  9. 「コメント」に、アプリケーションが実行されているときに表示されないコメントまたは注意を入力します。

  10. 属性を作成して編集ページに戻るために「作成」をクリックするか、属性を作成して別の属性の作成を続行するために「作成後、さらに作成」をクリックします。


注意:

「作成」または「作成後、さらに作成」をクリックするとき、右側のパネルの「プラグイン」の下の「ページに戻る」チェック・ボックスが選択されていると、同じ属性の編集ページが表示されます。

プラグインに関連付けるファイルのアップロード

プラグインに関連付けるイメージ、CSSおよびJavaScriptファイルをアップロードします。アップロードする別のファイルを参照するには、アップロードするCSSファイルおよびJavaScriptファイル内で#PLUGIN_PREFIX#を使用します。詳細は、新規ファイルのアップロード・ページの右側の「プラグイン・ファイル」リージョンを参照してください。

たとえばCSSファイルでは、参照は次のようになります。

.sidebar{
background-image:url(#PLUGIN_PREFIX#flowers.png);
}

ファイルをアップロードする手順は、次のとおりです。

  1. プラグイン・ページにナビゲートします。「プラグインへのアクセス」を参照してください。

  2. アップロード先のプラグインをクリックします。

    プラグインの作成/編集ページが表示されます。

  3. 「ファイル」までスクロールし、「新規ファイルのアップロード」をクリックします。

    新規ファイルのアップロード・ページが表示されます。

  4. 「ファイル」で、アップロードするファイルを参照して選択します。

  5. 「アップロード」をクリックします。

    作成/編集ページが表示されます。アップロード対象ファイルの名前が「ファイル」の下に表示されます。

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

プラグインへのイベントの追加

アイテム、リージョンまたは動的アクション・タイプのプラグインにイベントを追加すると、イベントを動的アクションに公開できます。たとえば、Start Slide、Sliding、Stop Slideなどのイベントを公開するSliderプラグインによって、これらのイベントが発生したときに応答できる動的アクションを作成できます。

プラグインにイベントを追加するには、次の手順を実行します。

  1. プラグイン・ページにナビゲートします。「プラグインへのアクセス」を参照してください。

  2. 編集するプラグインをクリックします。

    プラグインの作成/編集ページが表示されます。

  3. 「イベント」までスクロールし、「イベントの追加」をクリックします。

    「イベント」の下に新しい行が表示されます。

  4. 「イベント」で、次の項目を指定します。

    1. 名前: 動的アクション内でプラグイン・イベントが表示される表示名。例: Start Slide

    2. 内部名: 動的アクションをトリガーする割り当てられたJavaScriptイベントの名前。例: slidestart

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

プラグインの削除

プラグインは使用中でなければ削除できます。プラグインを使用中の場合、「削除」ボタンは表示されません。

プラグインを削除するには、次のようにします。

  1. プラグイン・ページにナビゲートします。「プラグインへのアクセス」を参照してください。

  2. 削除するプラグインをクリックします。

    プラグインの作成/編集ページが表示されます。

  3. 「削除」をクリックします。

  4. OK」をクリックして続行します。

プラグイン・リポジトリの表示

プラグイン・リポジトリの目的は、開発者がプラグインを共有およびダウンロードできる一元的な場所を提供することです。リポジトリはOracle Technology Networkにあります。

プラグイン・リポジトリを表示するには、次の手順を実行します。

  1. プラグイン・ページにナビゲートします。「プラグインへのアクセス」を参照してください。

  2. 「プラグイン・リポジトリの表示」をクリックします。

    Oracle Application Expressプラグイン・リポジトリが表示されます。

プラグイン・ページからのプラグインのインポート

エクスポートされたプラグインをアプリケーションにインポートするにはこのオプションを使用します。プラグインのインポートは、ここで説明するように、プラグイン・ページの「共有コンポーネント」からか、アプリケーション・ビルダーのホームページから実行できます。「プラグインのインポート」を参照してください。

プラグインをインポートするには、次の手順を実行します。

  1. プラグイン・ページにナビゲートします。「プラグインへのアクセス」を参照してください。

  2. 「インポート」をクリックします。

    プラグインのインポート・ページが表示されます。

  3. 「ファイルの指定」で、次の項目を指定します。

    • インポート・ファイル: インポート・ファイルの名前を選択します。

    • ファイル・タイプ: 「プラグイン」を選択します。

    • ファイルのキャラクタ・セット: インポート・ファイルのキャラクタ・セット・エンコードを選択します。

  4. 「次へ」をクリックします。

  5. 「ファイルのインポートの確認」で、「次へ」をクリックします。

  6. 「インストール」で、「プラグインのインストール」をクリックします。

プラグイン・ページからのプラグインのエクスポート

プラグイン定義をファイルにエクスポートするにはこのオプションを使用します。このファイルは任意のAPEXアプリケーションにインポートできます。プラグインのエクスポートは、ここで説明するように、プラグイン・ページの「共有コンポーネント」からか、アプリケーション・ビルダーのホームページから実行できます。「プラグインのエクスポート」を参照してください。

  1. プラグイン・ページにナビゲートします。「プラグインへのアクセス」を参照してください。

  2. 「タスク」で、「プラグインのエクスポート」をクリックします。

    プラグインのエクスポート・ページが表示されます。

  3. 「アプリケーション」で、プラグインのエクスポート元のアプリケーションを選択します。

  4. 「アプリケーションの設定」をクリックします。

  5. 「プラグインのエクスポート」で、次の項目を指定します。

    • プラグイン: プラグインを選択します。

    • ファイル形式: エクスポート・プラグインのファイル形式を選択します。

  6. 「プラグインのエクスポートをクリックします。

  7. 「ファイルを保存」を選択して、「OK」をクリックします。

    ダウンロード完了メッセージが表示されます。

プラグイン対話モード・レポートのリセット

対話モード・レポートをリセットするには、次の手順を実行します。

  1. プラグイン・ページにナビゲートします。「プラグインへのアクセス」を参照してください。

  2. 「リセット」をクリックします。

プラグインの使用状況の表示

プラグインの使用状況ページには、各プラグインを使用するページ、コンポーネントおよびリージョンが表示されます。

プラグインの使用状況を表示するには、次の手順を実行します。

  1. プラグイン・ページにナビゲートします。「プラグインへのアクセス」を参照してください。

  2. 「使用状況」をクリックします。

    使用状況ページが表示されます。

プラグイン履歴の表示

プラグイン履歴ページには、各プラグインで実行されたアクション、アクションを実行した開発者および各アクションの日付が表示されます。

プラグインの履歴を表示するには、次の手順を実行します。

  1. プラグイン・ページにナビゲートします。「プラグインへのアクセス」を参照してください。

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

    履歴ページが表示されます。

動的アクションの実装

このセクションでは、動的アクションの概要と、動的アクションの作成および変更方法について説明します。

内容は次のとおりです。

動的アクションの理解

動的アクションは、JavaScriptを必要としないで複雑なクライアント側の動作を宣言的に定義する方法を提供します。動的アクションの作成ウィザードを使用して、定義された条件セットが発生したときに実行されるアクションを指定できます。また、アクションの影響を受ける要素や、影響を受ける時期と影響も指定できます。

動的アクションを使用するとき、ページに追加する動的アクションが多くなるほど全体のページ・サイズが大きくなることに注意する必要があります。これは、動的アクション・フレームワークでは、定義された各動的アクションについてクライアントへの追加コードを生成し、そのコードはクライアント内のフレームワークによってダウンロードおよび実行される必要があるためです。問題をデバッグする方法についての情報は、「動的アクションのデバッグ」を参照してください。

動的アクションを実装するプロセスには、次の手順があります。

  1. ページのアイテムを編集または作成します。このアイテムは、起動される時期を定義する際、動的アクション内で参照されます。

  2. アクションを起動するアプリケーション・ページから動的アクションを作成します。

  3. 動的アクションをテストするためにアプリケーションを実行します。

動的アクションの実装例については、次の場所にあるLearning Libraryに移動し、「All Content」タブをクリックして、Application Express(APEX)製品OBEの検索基準を入力します。

http://apex.oracle.com/pls/apex/f?p=9830:1:0::NO

動的アクションの作成

動的アクションの作成には、アクションが発生する時期(オプション条件を指定する)、実行されるアクションおよびアクションの影響を受ける要素を指定する手順が含まれます。

動的アクションを作成するには、次のステップを実行します。

  1. 該当するページ定義にナビゲートします。「ページ定義へのアクセス」を参照してください。

  2. 動的アクションの作成ウィザードにアクセスします。

    • ツリー・ビュー: 「ページ・レンダリング」で、「動的アクション」を探します。右クリックして「作成」を選択します。

      また、動的アクションのトリガーとなる特定のページ・アイテムまたはリージョンを右クリックして、ウィザードを起動することもできます。この方法は、特定の「時期」の値が事前入力されるため、定義が速くなります。

    • コンポーネント・ビュー: 「ページ・レンダリング」で、「動的アクション」までスクロールして、「作成」をクリックします。

  3. 「実装」で、次のいずれかの動的アクション・タイプを入力し、「次へ」をクリックします。

    • 標準: ページ・アイテムの値が変更されたときにページ要素を表示、非表示、有効化および無効化する単純なアクションを作成する場合は、このオプションを選択します。

    • 詳細: 値の設定、クラスの追加および動的アクション・プラグインの使用などの複雑なアクションを作成する場合は、このオプションを選択します。また、このオプションを使用すると、動的アクションをトリガーする様々なイベントを選択することもできます。

  4. 「指定」で、次の内容を入力し、「次へ」をクリックします。

    • 名前: 動的アクションの名前を入力します。

    • 順序: このコンポーネントの順序を入力します。これによって評価の順序が決まります。

  5. 「時期」では、アクションを実行する時期を指定して「次へ」をクリックします。このページのオプションは次のとおりです。

    1. イベント: 動的アクションは、ページで発生するイベントに基づいて起動するように定義できます。使用できるイベントには、ブラウザ・イベント、フレームワーク・イベントおよびコンポーネント・イベントの3種類のカテゴリがあります。サポートされるすべてのイベントの詳細は次のとおりです(JavaScriptの内部イベント名をカッコで示します)。

      ブラウザ・イベント

      • 変更(change): コントロールが入力フォーカスを失い、フォーカスの取得後に値が変更された場合に起動します。これがデフォルトの設定です。

      • クリック(click): ポインティング・デバイスのボタンがトリガー要素上でクリックされたときに起動します。

      • ダブルクリック(dblclick): ポインティング・デバイスのボタンがトリガー要素上でダブルクリックされたときに起動します。

      • フォーカスを取得(focusin): ポインティング・デバイスまたは要素へのタブによる移動によってトリガー要素がフォーカスを受け取ったときに起動します。

      • キー・ダウン(keydown): キーボード上のキーが押されたときに起動します。矢印キーなどの特殊なキーストロークを(キーが押された後に)取得するときにこのイベントを使用します。

      • キー・プレス(keypress): キーボード上のキーが押され、結果としてテキストが入力されたときに起動します。実際のテキスト入力を取得するときにこのイベントを使用します。

      • キー・リリース(keyup): キーボード上のキーが解放されたときに起動します。矢印キーなどの特殊なキーストロークを(キーが解放された後に)取得するときにこのイベントを使用します。

      • フォーカスを失う(focusout): ポインティング・デバイスまたは要素からのタブによる移動によってトリガー要素がフォーカスを失ったときに起動します。

      • マウス・ボタン・プレス(mousedown): ポインティング・デバイスのボタンがトリガー要素上で押されたときに起動します。

      • マウス・ボタン・リリース(mouseup): ポインティング・デバイスのボタンがトリガー要素上で解放されたときに起動します。

      • マウス・エンター(mouseenter): ポインティング・デバイスがトリガー要素内に移動すると起動します。

      • マウス・リーブ(mouseleave): ポインティング・デバイスがトリガー要素外に移動すると起動します。

      • マウス・ムーブ(mousemove): ポインティング・デバイスがトリガー要素上にあるとき、移動すると起動します。

      • ページのロード(ready): ページがロードされるときに起動します。

      • ページのアンロード(unload): ページがアンロードされるときに起動します。

      • サイズ変更: ブラウザ・ウィンドウがサイズ変更されるときに起動します。

      • リソースのロード: トリガー要素がウィンドウ要素の場合(「時期」属性の「DOMオブジェクト」値に「window」を使用)、ブラウザでドキュメント内のすべてのコンテンツ(ウィンドウ、フレーム、オブジェクトおよびイメージを含む)のロードが完了したときにイベントが起動します。他の要素の場合、ターゲット要素とそのすべてのコンテンツのロードが完了したときに起動します。

      • スクロール: スクロール可能なトリガー要素がスクロールされるときに起動します。これは、ブラウザ・ウィンドウ(「時期」属性の「DOMオブジェクト」値に「window」を使用)、スクロール可能なフレーム、またはCSSプロパティの「overflow」が「scroll」(要素の明示的な高さがコンテンツの高さよりも低いときは「auto」)に設定されている要素が考えられます。

      • 選択: ユーザーがテキスト・フィールドの一部のテキストを選択するときに起動します。

      フレームワーク・イベント

      • リフレッシュ後(apexafterrefresh): トリガー要素がリフレッシュされた後に起動します。このイベントは、「部分ページ・リフレッシュ」を実行してこのイベントを起動するトリガー要素でのみ有効です。これらのトリガー要素には、対話モード・レポート、クラシック・レポート、カスケードLOVサポートを持つすべてのアイテム・タイプなどがあります。プラグインでもこのイベントがサポートされる場合があります。

      • ページの送信前: ページが送信される前に起動します。

      • リフレッシュ前(apexbeforerefresh): トリガー要素がリフレッシュされる前に起動します。このイベントは、「部分ページ・リフレッシュ」を実行してこのイベントを起動するトリガー要素でのみ有効です。これらのトリガー要素には、対話モード・レポート、クラシック・レポート、カスケードLOVサポートを持つすべてのアイテム・タイプなどがあります。プラグインでもこのイベントがサポートされる場合があります。

      コンポーネント・イベント

      これらのイベントは、カスタム・イベントをトリガーする、アプリケーションで使用可能なコンポーネント(アイテム、リージョンまたは動的アクションのいずれか)が存在する場合にのみ使用できます。これらのイベントは、イベント名[コンポーネント名]の書式で表示され、たとえばShuttleネイティブ・アイテム・タイプによってトリガーされるChange Orderイベントは、Change Order [Shuttle]と表示されます。Application Expressでは、これらのイベントは、アプリケーションにインストールしたプラグイン・コンポーネントに付属のネイティブ・コンポーネントのいずれかからトリガーされます。

      • ネイティブ・コンポーネントによってトリガーされるイベント

        順序の変更[シャトル](shuttlechangeorder): 右側の選択リストの値の順序が変更された(Move Top、Move Up、Move DownまたはMove Bottomを使用)ときに起動します。Application Expressでは現在、ネイティブ・コンポーネントによってトリガーされるイベントは他にありません。

      • プラグイン・コンポーネントによってトリガーされるイベント

        これらは現在のアプリケーションに追加されると使用可能になり、イベント名[コンポーネント名]の書式になります。プラグインによって実行されるイベントに関連したヘルプについては、「共有コンポーネント」>「プラグイン」>[プラグイン名]>「ヘルプ・テキスト」をナビゲートして、プラグイン構成ページのヘルプ・テキストを参照してください。ここにプラグイン作成者がドキュメントを格納している場合があります。

    2. 選択タイプ: 動的アクションをトリガーするページ要素のタイプを選択します。ページ要素の名前を指定するための対応する名前フィールドが表示されます。


      注意:

      選択されたイベントでページ要素の定義がサポートされている場合にのみ、使用できます。「ページのロード」、「ページのアンロード」、「サイズ変更」、「ページの送信前」のイベントを選択すると、このフィールドは非表示になります。他のすべてのイベント・タイプでは、このフィールドが表示されます。

    3. アイテム、リージョン、DOMオブジェクトまたはjQueryセレクタ: ページ要素の名前を次のように選択します。

      • アイテム: 動的アクションをトリガーする1つ以上のページ・アイテム名を入力または選択します。複数のアイテムを指定する場合は、アイテムをカンマで区切ります。

      • リージョン: 動的アクションをトリガーするリージョン名を選択します。選択されたリージョンでは、ID属性を#REGION_STATIC_ID#に設定したコンテナ要素を含むリージョン・テンプレートを使用する必要があります。動的アクション・フレームワークは、リージョンを参照するためにこのID値を使用します。

        リージョンは、イベント自体を起動したり(「リフレッシュ前」や「リフレッシュ後」のイベントの場合など)、リージョン内のアイテムまたは他の要素を起動するイベントをキャッチするコンテナになることもできます。このことがサポートされているイベントのサブセットは、変更(change)、クリック(click)、ダブルクリック(dblclick)、フォーカスの取得(focus)、キー・ダウン(keydown)、キー・プレス、キー・リリース(keyup)、フォーカスを失う(blur)、マウス・ボタン・プレス(mousedown)、マウス・ボタン・リリース(mouseup)、マウス・ムーブ(mousemove)のみです。

      • DOMオブジェクト: 動的アクションをトリガーするDocument Object Model(DOM)オブジェクトまたはDOMオブジェクトのIDを入力します。

      • jQueryセレクタ: 動的アクションをトリガーする1つ以上のページ要素を戻すjQueryセレクタ構文を入力します。

    4. 条件: トリガーに条件を設定するには、「条件タイプ」リストから選択し、「値」フィールドにテキストを入力します。この条件が満たされるかどうかに基づいて、Trueアクション(満たされた場合)とFalseアクション(満たされなかった場合)の両方を定義できます。「- 条件なし -」が指定された場合、Trueアクションのみが起動されます。詳細は、アイテム・レベルのヘルプを参照してください。

  6. 以前指定されたイベントが発生して条件が満たされた場合に実行されるアクションを指定し、「次へ」をクリックします。

    • 「True / Falseアクション」(標準)で、「Trueアクション」を指定します。

      • 表示: イベントがtrueで「- 条件なし -」が指定された場合にアイテムが表示されます。

      • 非表示: イベントがtrueであるか、または「- 条件なし -」が指定された場合、アイテムは表示されません。

      • 有効化: イベントがtrueであるか、「- 条件なし -」が指定された場合、アイテムが有効化されます。

      • 無効化: 影響を受ける要素を無効化します。影響を受ける要素を無効化することによって、ページ要素は編集不可能になり、ページが送信されるときにアイテムの値を保存しません。

      • 反対のFALSEアクションの作成: 選択された前述のtrueアクションについて、イベントがfalseのときに発生する反対のアクションを作成します。ウィザードの「標準」ブランチでは、「Trueアクション」で「表示」、「非表示」、「有効化」または「無効化」のいずれかのアクションを選択でき、論理的に反対のアクションを作成する機能が提供されています。たとえば、「Trueアクション」で「表示」が選択されている場合は、「反対のFALSEアクションの作成」チェック・ボックスを選択すると、「非表示」のfalseアクションも作成されます。


        注意:

        反対のFALSEアクションの作成」は、「条件」が選択された場合のみ使用できます。

    • 「Trueアクション」の場合(詳細のみ): ウィザードの詳細ブランチでは、すべてのアクションを選択でき、別のTrueアクションとFalseアクションを選択できます。「Trueアクション」と「Falseアクション」の両方のページで指定します。選択されたアクションによっては、追加のオプションが表示されます。これらのオプションを使用して、アクションを実行するために必要な追加の設定と値を指定します。

      コンポーネント

      • クリア: 影響を受ける要素をクリアします。

      • 無効化: 影響を受ける要素を無効化します。影響を受ける要素を無効化することによって、ページ要素は編集不可能になり、ページが送信されるときにアイテムの値を保存しません。

      • 有効化: 影響を受ける要素を有効化します。

      • 非表示: 影響を受ける要素を非表示にします。「同じ行のすべてのページ・アイテムを非表示」にするオプションもあります。

      • リフレッシュ: 影響を受ける要素のリフレッシュをトリガーします。すべての要素でリフレッシュがサポートされるわけではありません。リフレッシュは、対話モード・レポート、クラシック・レポート、カスケードLOVサポートが存在するすべてのアイテム・タイプに使用できます。プラグインでもこのアクションがサポートされる場合があります。

      • フォーカスの設定: 影響を受ける要素にフォーカスを設定します。影響を受ける要素が複数ある場合、先頭の要素にデフォルトで設定されます。このことは、特に、適切なアイテムをユーザーに直接示すために、「表示」および「有効化」アクションと組み合せて使用する場合に役立ちます。

      • 値の設定: 影響を受ける要素の値を設定します。これは、「静的割当て」、「JavaScript式」、「SQL文」、「PL/SQL式」、「PL/SQLファンクション本体」のタイプの設定をサポートします。

      • 表示: 影響を受ける要素を表示します。「同じ行のすべてのページ・アイテムを表示」のオプションもあります。

      実行

      • JavaScriptコードの実行: 動的アクション・フレームワーク内で使用する、ページ固有のカスタムJavaScriptコードを定義またはコールできます。1つのページについてのみ固有のJavaScriptコードを定義する場合、新しいページ・レベル属性「ファンクションおよびグローバル変数の宣言」を使用してこれを定義することもできます。ここで定義されるファンクションと変数は、後でこのアクションから参照できます。

      • PL/SQLコードの実行: サーバー上でPL/SQLコードを実行します。実行中にエラーが発生した場合、ユーザーにアラートが表示されます。

      通知

      • アラート: アラートを表示します。

      • 確認: 確認ダイアログを表示します。ユーザーが「取消」を選択した場合、続行アクションは実行されず、現在のイベントは取り消されます。

      スタイル

      • クラスの追加: 影響を受ける要素に1つ以上のCSSクラスを追加します。

      • 確認: 確認ダイアログを表示します。ユーザーが「取消」を選択した場合、続行アクションは実行されず、現在のイベントは取り消されます。

      その他

      • イベントの取消: ある特定の条件に基づき、後続の動的アクションまたはイベントの起動を取り消します。このことは、次の状況で役立つ場合があります。

        同じイベント(「クリック」など)に基づく複数の動的アクションが1つのページ上にあり、かつ、それらの動的アクションがそのページ上の同じ要素を参照する場合、「イベントの取消」アクションは、アクションの「WHEN条件」に基づく条件によって、後続の動的アクションの起動を防止するために使用できます。

        1つの動的アクションに複数のtrueまたはfalseアクションがある場合、「イベントの取消」は、後続のアクションが処理されるのを停止するために使用できます。動的アクションのアクションを条件付きで起動するように定義できないため、現在は値が制限されています。したがって、このイベントでは、常に、後続のアクションの処理を防止するのみです。アクションを防止することは、デバッグに役立つ場合があります。

        動的アクションの「ページの送信前」イベントと組み合せて使用して、ページの送信を取り消すために使用します。たとえば、「ページの送信前」で起動する動的アクションを定義し、「条件」に「JavaScript式」を定義し、「値」に$v('P2_ENAME') == 'DO NOT SUBMIT'のような式を定義します。その後、「イベントの取消」アクションを使用するTrueアクションを定義すると、ページはENAMEフィールドがDO NOT SUBMITに等しいときに送信されません。

      • ページの送信: ページを送信します。

      プラグイン

      • my_plugin_action[Plug-in]: アプリケーション構成によっては、ここで追加のプラグイン動的アクションを使用できる場合もあります。これらは「my_plugin_action [Plug-in]」と表示されます。プラグイン動的アクションはアプリケーションの共有コンポーネント内にインストールされます。プラグイン開発者はアクションに対応するカテゴリを割り当てます(コンポーネント、実行など)。

    • ページのロード時に実行(詳細のみ): ページをロードするときにこのアクションもトリガーするには、このオプションを選択します。このオプションがデフォルトで選択されているかどうかは、選択されたアクションのタイプによって異なります。

  7. 「影響を受ける要素」(影響を受ける要素がサポートされているアクションでのみ使用可能)で、この動的アクションによる影響を受ける要素と要素が受ける影響を指定し、「次へ」をクリックします。

    動的アクションを作成する最終ステップは、影響を受ける要素の選択が、選択したアクションによってサポートされているかどうかによって異なります。「ページの送信」のような一部のアクションでは、影響を受ける要素を選択する必要はありません。「表示」などの他のアクションでは、影響を受ける要素を選択する必要があります。影響を受ける要素の選択が、選択したアクションによってサポートされていない場合、最後のページは動的アクションの詳細を確認できる、単なる確認ページとなります。影響を受ける要素の選択が、選択したアクションによってサポートされている場合、このページのオプションは次のとおりです。

    • 選択タイプ: 動的アクションによる影響を受けるページ要素のタイプを選択します。選択されたタイプによって、追加のオプションが表示されます。これらのオプションを使用して、要素が受ける影響を指定するために必要な追加の設定と値を指定します。

    • アイテム、リージョン、DOMオブジェクトまたはjQueryセレクタ: ページ要素の名前を次のように選択します。

      • アイテム: 動的アクションによる影響を受けるアイテム名を選択します。

      • リージョン: 動的アクションによる影響を受けるリージョン名を入力または選択します。選択されたリージョンは、ID属性を#REGION_STATIC_ID#に設定したコンテナ要素を含むリージョン・テンプレートを使用する必要があります。動的アクション・フレームワークは、リージョンを参照するためにこのID値を使用します。

      • DOMオブジェクト: 動的アクションの影響を受けるDocument Object Model(DOM)オブジェクトまたはDOMオブジェクトのIDを入力します。

      • jQueryセレクタ: 動的アクションの影響を受ける1つ以上のページ要素を戻すjQueryセレクタ構文を入力します。

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

動的アクションの編集

動的アクションを作成した後、作成プロセス中に定義した属性を変更したり、プロセス中に指定できなかった属性を指定したり(「認可スキーム」の指定など)、追加のtrueまたはfalseアクションを追加できます。

動的アクションを編集するには、次のステップを実行します。

  1. 該当するページ定義にナビゲートします。「ページ定義へのアクセス」を参照してください。

  2. 動的アクションの編集ページにアクセスします。

    • ツリー・ビュー: 「ページ・レンダリング」で、「動的アクション」を探します。右クリックして「編集」を選択します。

      ツリー・ノードを展開して動的アクションを見つけ、編集する特定のアクションを右クリックして「編集」を選択することで、動的アクションのtrueまたはfalseアクションの編集に直接進むことができます。

    • コンポーネント・ビュー: 「ページ・レンダリング」で、「動的アクション」までスクロールして、編集する動的アクションをクリックします。

    動的アクションの編集ページが表示されます。

TrueまたはFalseアクションの追加

動的アクションには、TrueアクションとFalseアクションが起動する時期を制御するために指定できる条件が含まれています。たとえば、従業員情報をマネージャに表示するアプリケーションについて考えます。従業員が上級一般職の場合は給与が表示され、それ以外の場合は時給が表示されます。

動的アクション作成ウィザードでは、1つのTrueアクションと1つのFalseアクションのみ指定できます。複数のアクションを追加するには、動的アクションを作成するための作成ウィザードを使用した後、TrueアクションまたはFalseアクションを追加するようにアクションを編集する必要があります。

アクションを追加するには、次の手順を実行します。

  1. 該当するページ定義にナビゲートします。「ページ定義へのアクセス」を参照してください。

  2. 動的アクションの編集ページにアクセスします。

    • ツリー・ビュー: 「ページ・レンダリング」で、「動的アクション」を探します。右クリックして「編集」を選択します。

      また、ツリーの動的アクション・ノードのすぐ下にあるTrueまたはFalseノードを直接右クリックすることもできます。ここで「作成」を選択すると、追加のtrueまたはfalseアクションを作成するページに直接移動します。これはシンプルな作成方法であり、次のステップが省略されます。

    • コンポーネント・ビュー: 「ページ・レンダリング」で、「動的アクション」までスクロールして、編集する動的アクションをクリックします。

    動的アクションの編集ページが表示されます。

  3. 条件が満たされたとき、または条件が指定されなかったときに実行されるアクションを追加する場合、「Trueアクション」までスクロールして、「Trueアクションの追加」をクリックします。

    それ以外の場合は、「Falseアクション」までスクロールして、「Falseアクションの追加」をクリックします。

    アクションの作成/編集ページが表示されます。

  4. 「指定」で、次の項目を指定します。

    1. 順序: このコンポーネントの順序を入力します。これによって評価の順序が決まります。

    2. アクション: 条件がtrueまたはfalseのときにトリガーされるアクションを選択します。

  5. 「実行オプション」で、次の項目を指定します。

    1. ページのロード時に実行: ページをロードするときにもアクションをトリガーする場合に選択します。

    2. エラー時に実行停止: 現在のアクションの実行中にエラーが発生した場合、続行アクションを実行するかどうかを指定します。「PL/SQLコードの実行」など、選択されたアクションがこの属性を公開するように定義されている場合のみ使用可能です。

  6. 「影響を受ける要素」で、次の項目を指定します(選択されたアクションで、影響を受ける要素の定義がサポートされる場合にのみ使用可能)。


    注意:

    選択されたアクションのタイプによって、次のフィールドの一部またはすべてを選択できないことがあります。たとえば、「無効化」アクションでは、影響を受ける要素として「リージョン」を選択することがサポートされていません。

    1. 選択タイプ: 動的アクションによる影響を受けるページ要素のタイプを選択します。ページ要素の名前を指定するための対応する名前フィールドが表示されます。

    2. アイテム、リージョン、DOMオブジェクトまたはjQueryセレクタ: ページ要素の名前を次のように選択します。

      • アイテム: 動的アクションによる影響を受けるアイテム名を入力または選択します。

      • リージョン: 動的アクションによる影響を受けるリージョン名を入力または選択します。選択されたリージョンは、ID属性を#REGION_STATIC_ID#に設定したコンテナ要素を含むリージョン・テンプレートを使用する必要があります。動的アクション・フレームワークは、リージョンを参照するためにこのID値を使用します。

      • DOMオブジェクト: 動的アクションの影響を受けるDocument Object Model(DOM)オブジェクトまたはDOMオブジェクトのIDを入力します。

      • jQueryセレクタ: 動的アクションの影響を受ける1つ以上のページ要素を戻すjQueryセレクタ構文を入力します。

  7. 「コメント」に、開発者のコメントまたは注意を入力します。これらのコメントは、アプリケーションの実行中に表示されません。

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

    動的アクションの編集ページが表示され、追加したアクションが「Trueアクション」または「Falseアクション」の下に表示されます。

頻度と有効範囲の定義

動的アクションを作成した後、アクションの有効範囲を1回のみのトリガーとするか、現在のページの存続期間中とするか、トリガー要素が部分ページ・リフレッシュ(PPR)によって更新されるまでとするかを変更できます。

有効範囲を指定するには、次の手順を実行します。

  1. 該当するページ定義にナビゲートします。「ページ定義へのアクセス」を参照してください。

  2. 動的アクションの編集ページにアクセスします。

    • ツリー・ビュー: 「ページ・レンダリング」で、「動的アクション」を探します。右クリックして「編集」を選択します。

    • コンポーネント・ビュー: 「ページ・レンダリング」で、「動的アクション」までスクロールして、編集する動的アクションをクリックします。

    動的アクションの編集ページが表示されます。

  3. 「詳細」までスクロールして、「イベント有効範囲」で次のいずれかを選択します。

    1. バインド: 現在のページの存続期間中、イベント・ハンドラをトリガー要素にバインドします。ただし、トリガー要素が部分ページ・リフレッシュ(PPR)を通じて更新された場合はバインドされなくなります。

    2. 存続: 現在のページの存続期間中、イベント・ハンドラをトリガー要素にバインドします(部分ページ・リフレッシュ(PPR)を通じて更新されたトリガー要素を含む)。

    3. 1回: 1回のみのイベントについて、イベント・ハンドラをトリガー要素にバインドします。

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

動的アクションのデバッグ

Application Express内での動的アクションのデバッグは、他のデバッグと少し異なります。これは、動的アクション・フレームワーク内で実行される処理の多くが、サーバー側でなくクライアント側で実行されるためです。動的アクションをデバッグするには、ブラウザでJavaScriptコンソールがサポートされている場合、デバッグ情報をブラウザのJavaScriptコンソールに出力します(たとえば、FirebugがインストールされたFirefoxは、デバッグ情報を「Console」ペインに表示します)。デバッグ情報によって、動的アクションが起動した時期、動的アクションの名前および起動した特定のアクションがわかります。

動的アクションをデバッグするには、次のステップを実行します。

  1. 動的アクションが含まれているアプリケーションのデバッグが有効化されていることを確認します。「デバッグ・モードへのアクセス」を参照してください。

  2. 動的アクションが含まれているページを実行します。

  3. ブラウザのJavaScriptコンソールを開きます。「Developer」ツールバーで、「Debug」をクリックします。ページがリフレッシュされ、ページのロード時に起動するように設定された動的アクションがある場合、「Dynamic Action Fired: [Dynamic action name] ([specific action fired])」というコンソールに対するテキスト出力が表示されます。デバッグ・モードをオンにしたままの状態で(デバッグ情報はデバッグ・モードで実行中の場合のみ出力されるため)、動的アクションが必要な時期に起動するかどうかをテストできます。たとえば、ある特定のアイテムの値が変更されるときに起動する動的アクションを定義した場合、そのアイテムの値を変更すると、動的アクションが起動したかどうかのデバッグ出力がコンソールに表示されます。

フォームおよびレポートでのBLOBサポートについて

Oracle Application Expressでは、宣言的なBLOBサポートが提供されているため、開発者はフォームでのファイルの宣言的なアップロードや、レポートでのファイルのダウンロードおよび表示を行うことができます。BLOBの表示とダウンロードは、PL/SQLを使用して手続き的に作成することもできます。このセクションでは、ファイルのアップロード、ダウンロードおよび表示を行う方法と、BLOB列に格納されているファイルを正しく管理するために重要となる追加のファイル属性(MIMEタイプやファイル名など)の管理方法について説明します。この機能を使用すると、簡単にOracle Application Expressアプリケーションを拡張して、イメージ、ドキュメント、ビデオなどのファイルを管理できます。

内容は次のとおりです。

フォームでのBLOBについて

フォームを作成する場合(アプリケーションの作成ウィザードを使用して、フォーム型(またはレポートおよびフォーム型)のページを作成するか、フォーム型のリージョンを作成する)、または既存のフォームにアイテムを追加する場合、BLOB型のデータベース列がソースであるアイテムは、ファイル参照型のアイテムになります。フォームがINSERTにコールされる場合、ユーザーが選択したファイルは、BLOB列にロードされます。フォームが更新でコールされる場合、ダウンロード・リンクが「参照」ボタンの右に表示されます。ユーザーはこのリンクを使用してファイルをダウンロードできます。

BLOBへのファイルのアップロードとダウンロード

デフォルトのBLOBサポートでは、一般的なアプリケーションでBLOBを効果的に管理するために必要とされるすべての情報が提供されているわけではありません。列がBLOBであるという情報に加えて、ファイルの詳細情報も提供されると、エンド・ユーザーの使いやすさが向上します。ファイル参照ページ・アイテムには、この追加情報を完全に宣言的に管理することを容易にするための追加設定があります。


参照:

付録A、「アイテム・タイプについて」の「ファイル参照」、「ファイル参照」設定のアイテム・レベル・ヘルプ

ファイル参照アイテム・タイプ内では、次の2つの異なるタイプの記憶域タイプが使用できます。

  • アイテム・ソース属性で指定されたBLOB列: ここで説明する追加設定の構成をサポートする、完全に宣言的なアプローチです。この記憶域タイプでは、所有するデータベース表のBLOBを参照します。

  • WWV_FLOW_FILES表: WWV_FLOW_FILES表に格納されたBLOBを参照する場合の拡張オプションです。

この追加情報を提供するには、MIMEタイプ、ファイル名、最終更新日およびキャラクタ・セット設定を格納および追跡するための追加の列を元表に追加することをお薦めします。これは表を拡張することで実行できます。次に例を示します。

ALTER TABLE emp ADD 
   (ATTACH_MIMETYPE     VARCHAR2(255),
    ATTACH_FILENAME     VARCHAR2(255),
    ATTACH_LAST_UPDATE  DATE,
    ATTACH_CHARSET      VARCHAR2(128));

注意:

BLOBのキャラクタ・セットはアップロード時に自動的に設定されません。BLOBのキャラクタ・セット値を格納する場合、キャラクタ・セットを格納するために使用する列にバインドされる追加のページ・アイテムをページに提供する必要があり、ユーザーはその場合、アップロードするドキュメント用のキャラクタ・セットを指定できるようになります。

カスタム表でフォームを手動作成する場合も、この機能を利用できます。このことを行うには、DMLプロセス・タイプがDML_PROCESS_ROWのページにおいて、「記憶域タイプ」設定が「アイテム・ソース属性で指定されたBLOB列」である「ファイル参照」アイテム・タイプを使用します。このプロセスによって、表名と主キー列が決定されます。

BLOBの表示

使用するBLOBがイメージの場合は、イメージをフォームでも表示できます。これを宣言的に処理するために、イメージの表示アイテム・タイプを使用できます。付録A、「アイテム・タイプについて」を参照してください。手続き的に処理するには、「手続き的なBLOBの使用」を参照してください。

イメージ参照の削除

ファイル参照の使用時はNULLへの設定が存在しないため、イメージ参照を削除するメカニズムを提供する必要がある場合は、イメージを削除する特別なボタン(必要な列を無効化する機能を持つボタン)を含める必要があります。次の例を参照してください。

UPDATE demo_product_info
   SET product_image = NULL,
       MIMETYPE = NULL,
       FILENAME = NULL,
       IMAGE_LAST_UPDATE = NULL,
       CHARSET = NULL
 WHERE product_id = :P6_PRODUCT_ID;

レポートでのBLOBサポートについて

Oracle Application Expressでは、従来のレポートと対話モード・レポートの両方に対するBLOBサポートが提供されています。ウィザードを使用してレポートを作成し、BLOBタイプの列を含める場合は、基本的なサポートが含まれます。ダウンロード機能を使いやすくするために、生成後に詳細情報を追加する必要があります。

ダウンロード・リンクの提供

レポートにダウンロード・リンクを容易に含めることができるように、レポートにはBLOBの長さ(dbms_lob.getlength(RESUME)など)を選択します。長さが0の場合、BLOBNULLとなり、ダウンロード・リンクは表示されません。同様に、ダウンロード・リンクの書式を設定できる、日付または数に対する書式マスクを指定します。DOWNLOAD書式は、次の例のように3つ以上のパラメータを指定する必要があるという点で他の書式マスクより複雑です。

DOWNLOAD:EMP:RESUME:EMPNO

次の表に、DOWNLOAD書式のパラメータの説明を示します。

位置 属性 必須 説明
1 DOWNLOAD はい DOWNLOADレポート書式マスクを指定します。
2 表名 はい BLOBタイプのターゲット列を含む表の名前(大/小文字が区別されます)。
3 BLOBを含む列 はい BLOBタイプの列の名前(大/小文字が区別されます)。
4 主キー列1 はい 主キー列1の名前。大文字と小文字が区別されます。
5 主キー列2 いいえ 主キー列2の名前。大文字と小文字が区別されます。
6 MIMEタイプ列 いいえ MIMEタイプを格納するために使用する列名(大/小文字が区別されます)。
7 ファイル名列 いいえ BLOBのファイル名を格納するために使用する列名(大/小文字が区別されます)。ユーザーがファイルをダウンロードするときにNULLの場合は、この列名がデフォルトで使用されます。
8 最終更新列 いいえ BLOBの最終更新日付を格納するために使用する列名(大/小文字が区別されます)。これを指定すると、ファイルをダウンロードする際のHTTPヘッダーに最終変更日が示され、BLOBをWebブラウザにキャッシュできるようになります。指定しない場合は、ファイルをブラウザにキャッシュできない場合があります。
9 キャラクタ・セット列 いいえ BLOBのキャラクタ・セットを格納するために使用する列名(大/小文字が区別されます)。キャラクタ・セットのエンコーディングを維持する必要がある場合など、アジア言語で最も使用されます。
10 コンテンツ配置 いいえ inlineまたはattachmentを指定します。その他の値はすべて無視されます。MIMEタイプが提供され、ファイルが表示可能なタイプである場合は、ファイルが表示されます。MIMEタイプが提供されていない場合、またはファイルをインラインで表示できない場合、ユーザーはダウンロードを行うように求められます。
11 ダウンロード・テキスト いいえ ダウンロード・リンクに使用する文字列。何も指定されていない場合は、Downloadが使用されます。これは置換をサポートしています(翻訳されたアプリケーションに有効です)。

次に例を示します。

DOWNLOAD:EMP:RESUME:EMPNO::RESUME_MIMETYPE:RESUME_FILENAME:RESUME_LAST_UPDATE::attachment:Resume

DOWNLOAD:で始まる書式マスクを使用するレポート列がある場合、書式の下にリンク「BLOBダウンロードの書式マスク」が表示されます。このポップアップは、DOWNLOAD書式に必要なすべてのパラメータを入力するために役立ちます。

BLOBの表示

作業中のBLOBがイメージである場合は、レポートでも表示できます。そのためには、新しいレポート書式マスク「IMAGE」を使用します。 MIMEタイプに関係なく、レポートでは常にBLOBの表示が試行されます。BLOBのレンダリングを行うことができない場合は、壊れたイメージが表示されます。

次の表に、IMAGE書式マスクのパラメータの説明を示します。

位置 属性 必須 説明
1 IMAGE はい IMAGEレポート書式マスクを指定します。
2 表名 はい BLOBタイプのターゲット列を含む表の名前(大/小文字が区別されます)。
3 BLOBを含む列 はい BLOBタイプの列の名前(大/小文字が区別されます)。
4 主キー列1 はい 主キー列1の名前。大文字と小文字が区別されます。
5 主キー列2 いいえ 主キー列2の名前。大文字と小文字が区別されます。
6 MIMEタイプ列 いいえ MIMEタイプを格納するために使用する列名(大/小文字が区別されます)。
7 ファイル名列 いいえ IMAGE書式には使用しませんが、IMAGEとDOWNLOAD間で書式を簡単に変更する場合に必要です。
8 最終更新列 いいえ BLOBの最終更新日付を格納するために使用する列名(大/小文字が区別されます)。これを指定すると、ファイルをダウンロードする際のHTTPヘッダーに最終変更日が示され、BLOBをWebブラウザにキャッシュできるようになります。指定しない場合は、ファイルをブラウザにキャッシュできない場合があります。
9 キャラクタ・セット列 いいえ IMAGE書式には使用しませんが、IMAGEとDOWNLOAD間で書式を簡単に変更する場合に必要です。
10 コンテンツ配置 いいえ IMAGE書式には使用しませんが、IMAGEとDOWNLOAD間で書式を簡単に変更する場合に必要です。
11 代替テキスト いいえ イメージに関連付けられている代替タグに使用する文字列です。

次に例を示します。

IMAGE:EMP:RESUME:EMPNO::RESUME_MIMETYPE:RESUME_FILENAME:RESUME_LAST_UPDATE::attachment:Resume

書式マスクがIMAGE:で始まるレポート列がある場合、書式「BLOBダウンロードの書式マスク」の下のリンクを参照してください。このポップアップはIMAGE書式に必要なすべてのパラメータの入力に役立ちます。

BLOBの手続き的な操作

埋込み方法を使用してダウンロード・リンクを提供するかわりに、APEX_UTIL.GET_BLOB_FILE_SRCファンクションを使用することもできます。この方法の利点は、イメージ表示の体裁を(heightとwidthタグで)より具体的に指定できることです。この方法は、有効なOracle Application Expressセッションからコールされた場合にのみ有効です。また、BLOBを記述するパラメータを、アプリケーション内の有効なアイテムの書式としてリストする必要もあります。これにより、ファンクションからそのアイテムが参照されます。


参照:

Oracle Application Express APIリファレンスの「GET_BLOB_FILE_SRCファンクション」

スクリーン・リーダー・モードについて

APEX内のセッションは、Application Express開発環境とWebシートのランタイムの両方で(また独自のデータベース・アプリケーション内でも)、スクリーン・リーダー用に最適化されていることが確認できるようになりました。デフォルトでは、セッションはスクリーン・リーダー・モードで実行するようにフラグ付けされていません。

このモードによって、スクリーン・リーダーによるApplication Expressの使いやすさが向上されますが、未解決の問題が残っている領域がある場合があります。未解決の問題と可能な回避策の完全なリストについては、リリース・ノートを参照してください。

内容は次のとおりです。

スクリーン・リーダー・モードの機能

スクリーン・リーダー・モードを有効化すると、現在はデフォルトで次の機能を実行します。

  • Application Express Flashチャートはスクリーン・リーダーから現在アクセスできないため、スクリーン・リーダー・モードで実行すると、ユーザーはチャートで伝達される情報のレポート表示を受け取ります。複数シリーズのチャートでは、各シリーズについて別々のレポートが生成されます。スクリーン・リーダー・モードで実行するとき、これらのデータ表には説明テキストが次の形式で格納されます。

    • サマリー・テキスト: Webシートでは、セクション・タイトルがサマリー・テキストとして使用されます。

    • サマリー・テキスト: アプリケーション・ビルダーでは、チャート・タイトルとチャート・シリーズ・タイトルの組合せが使用されます。

    • 列ヘッダー: Webシートでは、レポートの列を識別するために「データ・グリッド」レポート・ラベルが使用されます。

    • 列ヘッダー: アプリケーション・ビルダーでは、レポートの列を識別するために、チャート・シリーズ問合せの列名または別名が使用されます。


      注意:

      このことは、Flashチャート5でのみサポートされています。ユーザーがFlash 3チャート・データをスクリーン・リーダー・モードで表示するには、まず「アプリケーションのアップグレード」を使用して、Flashチャート3のチャートをFlashチャート5にアップグレードする必要があります。Flash 3チャートがアップグレードされ、ユーザーがスクリーン・リーダー・モードで実行すると、Flashチャートのチャート・シリーズ問合せのレポートが表示されます。

  • ラジオおよびチェック・ボックス・ページ・アイテムはFIELDSET HTMLタグ内でレンダリングされます。FIELDSET要素には、個々のラジオ入力など、その内部での任意の要素のコンテキストとして使用されるテキスト記述が必要です。これはLEGEND HTMLタグを使用して行います。スクリーン・リーダー・モードで実行すると、このタグが生成され、ページ・アイテムのLabelの値が指定されます。

  • 対話モード・レポート・リージョンでは、フィルタ、検索、ソートなどを指定するためのユーザー対話中に部分ページ・リフレッシュを非常に多く使用します。ページが部分的にリフレッシュされたことをスクリーン・リーダーのユーザーに通知するには、スクリーン・リーダー・モードで実行中に対話モード・レポート・リージョンをWAI-ARIA Liveリージョンとして定義します。このことは、部分ページ・リフレッシュが完了したときにユーザーに通知することを意味します。ここではpolite設定が使用されますが、これはスクリーン・リーダーがページ上で何も実行していない場合のみスクリーン・リーダーが更新を通知することを意味します。使用するスクリーン・リーダーとブラウザの両方でWAI-ARIA Liveリージョンがサポートされている必要があります。Application Expressは、Liveリージョンがサポートされている、最新のJAWSスクリーン・リーダー(11.0.1430)でのみテストされています。現時点でこのことがサポートされているブラウザのリストは、次のとおりです。

    • Firefox 3.0以上

    • IEバージョン8

  • Report ViewまたはGroup By Viewの対話モード・レポート・リージョンでは、情報を伝達するためにデータ表が使用されます。データ表では、スクリーン・リーダーのユーザーに対して表が格納する情報を記述するテキスト記述が必要です。スクリーン・リーダー・モードで実行するとき、これらのデータ表には詳細なサマリー・テキストが次の形式で格納されます。

    • リージョン: 開発者によって定義されたリージョンの名前。レポート: 対話モード・レポート内の現在のSaved Reportの名前。保存済レポートが定義されていない場合はデフォルトでPrimary Defaultに設定されます。ビュー: レポートの現在のビュー(ReportまたはGroup Byのいずれか)。表示行の開始: 現在表示されている行のセットの開始行。表示行の終了: 現在表示されている行のセットの終了行。行合計: レポートによって戻された行数の合計。

  • 対話モード・レポート・リージョンには、レポート・データにAggregatesを追加する機能が提供されています。使用可能な集計の1つが列の値のSumです。スクリーン・リーダー・モードでの実行中、合計された値の接頭辞としてSum:のテキストが表示されます。標準モードでは、合計された値のみが表示されます。その他の集計では、モードにかかわらず、集計タイプ接頭辞がデフォルトで表示されます。

  • アイテム・タイプのヘルプ・テキストは、スクリーン・リーダー・モードでは別の方法で提供されます。標準モードでは、特定アイテムのヘルプ・テキストを表示するダイアログがページに表示されます。ただし、これらのダイアログはスクリーン・リーダーと一緒に使用する場合に多くの問題があるため、スクリーン・リーダー・モードで実行するときは、クラシック・ポップアップ・ページを使用してアイテムのヘルプ・テキストを表示します。

  • Application Express開発環境のアプリケーション・ビルダーで、ページ情報を管理するために使用するページ定義ページには、「コンポーネント・ビュー」と「ツリー・ビュー」の2つの異なるビューが含まれています。「ツリー・ビュー」で使用されるツリーには、スクリーン・リーダーを使用してアクセスできないため、このページをスクリーン・リーダー・モードで実行する場合、デフォルトは「コンポーネント・ビュー」です。

スクリーン・リーダー・モードの有効化

開発環境およびWebシートのランタイム環境でこのモードを有効化する方法の詳細は、Oracle Application Expressインストレーション・ガイドの「Oracle Application Expressのアクセシビリティ」を参照してください。

スクリーン・リーダー・モードのプロビジョニング

独自のデータベース・アプリケーションのユーザーに対してこのモードをプロビジョニングするには、3つの方法があります。

  1. ページ・テンプレート#SCREEN_READER_TOGGLE#置換文字列: この置換文字列をページ・テンプレートに追加すると、Application Expressでは、モードのオンまたはオフにする(切り替える)ためのリンクを現在のページに表示します。したがって、標準モードの場合、このプロシージャによってモードをオンに切り替えるリンクが生成されます。

  2. このモードを制御するために使用できるAPIもあります。1つの場所でのみ切替えをレンダリングし、ページ・テンプレート・レベルではこのことを行わない場合や、実際に表示されるリンク・テキストをより詳細に制御する場合に、APIを使用することがあります。これらのAPIの詳細は、Oracle Application Express APIリファレンスを参照してください。

  3. f?p構文のREQUEST属性を使用してスクリーン・リーダー・モードを有効化および無効化します。f?pの一般的な構文は、f?p=application:page:session:request:...です。

    リクエストがSET_SESSION_SCREEN_READER_ONまたはSET_SESSION_SCREEN_READER_OFFの場合、セッションのスクリーン・リーダー・モードがオンまたはオフになります。次に例を示します。

    <a href="f?p=100:1:&SESSION.:SET_SESSION_SCREEN_READER_ON">Set Screen Reader On</a>
    

スクリーン・リーダー・モードの拡張

前述の「スクリーン・リーダー・モードの機能」のセクションで詳細に説明した、このモードで実行されるデフォルトの機能の他に、スクリーン・リーダー・モードでの実行中に条件に応じてリージョンを表示するなどの独自のページ・コンポーネントを制御できます。関連するデータベース・ファンクション、APEX_UTIL.IS_SCREEN_READER_SESSIONおよびAPEX_UTIL.IS_SCREEN_READER_SESSION_YNの詳細は、『Oracle Application Express APIリファレンス』を参照してください。