このセクションでは、アプリケーション・ビルダーの概要を説明します。アプリケーション・ビルダーは、Oracle HTML DBの中核的なコンポーネントです。アプリケーション・ビルダーを使用すると、データベース集中型のWebアプリケーションを構築できます。
内容は次のとおりです。
Oracle HTML DBにログインすると、「作業領域」ホームページが表示されます。作業領域は、Oracle HTML DB開発環境内の共有の作業領域で、複数の開発者がアプリケーションを作成できます。
ページ左上にログインしたユーザーの名前と作業領域名が表示されます。次の3つの大きいアイコンがページの中央に表示されます。
アプリケーション・ビルダー:アプリケーション・ビルダーを使用すると、表やプロシージャなどのデータベース・オブジェクトの外観としてHTMLインタフェース(またはアプリケーション)を構築できます。
SQLワークショップ:SQLワークショップを使用すると、データベース・オブジェクトの作成および表示、SQL問合せの作成、データのインポートおよびエクスポート、パッケージ、プロシージャ、ファンクションおよびトリガーの編集およびコンパイル、SQLスクリプトの実行を行うことができます。
管理: 管理を使用すると、パスワードの変更、作業領域アクティビティの監視、作業領域アプリケーション・レポートの表示を行うことができます。また、作業領域管理者は、このページを使用してユーザー・アカウントおよび作業領域サービスを管理します。
Oracle HTML DBでは、アプリケーション・ビルダーを使用して、動的にレンダリングされたアプリケーションを構築します。各アプリケーションは、タブ、ボタンまたはハイパーテキスト・リンクを使用して相互にリンクされたコレクションです。
アプリケーション・ビルダーにアクセスするには、次のステップを実行します。
Oracle HTML DBの作業領域にログインします。
「作業領域」ホームページが表示されます。
「アプリケーション・ビルダー」アイコンをクリックします。
アプリケーション・ビルダーが表示されます。
ページは、アプリケーションの基本的なビルディング・ブロックです。アプリケーション・ビルダーでアプリケーションを構築する際は、タブ、リスト、ボタン、アイテム、リージョンなどのユーザー・インタフェース要素を含むページを作成します。
このセクションの構成は次のとおりです。
ページ定義上のページにコントロールを追加します。
既存のページのページ定義を表示するには、次のステップを実行します。
「作業領域」ホームページにナビゲートします。
「アプリケーション・ビルダー」アイコンをクリックします。
アプリケーションを選択します。
ページを選択します。
ページ定義が表示されます。
ページ定義は3つのセクションに分かれています。
「ページ・レンダリング」には、ページのレンダリング時に実行されるユーザー・インタフェース・コントロールとロジックが表示されます。
「ページ・プロセス」には、ページ・プロセス時に評価および実行されるロジック・コントロール(計算やプロセスなど)が表示されます。
「共有コンポーネント」には、アプリケーション内のすべてのページに表示または適用される共通のコンポーネントが表示されます。
ページ定義の「ページ・レンダリング」セクションの概要を次に示します。
リージョン:カレント・ページのリージョンが表示されます。リージョンはページ上の領域で、コンテンツのコンテナとして機能します。各ページには任意の数のリージョンを設定できます。リージョンの外観は、特定のリージョン・テンプレートで制御します。リージョンを使用すると、ページ・コントロール(アイテムやボタン)をグループ化できます。また、追加のHTMLを生成しない単純なリージョンを作成したり、HTML表やイメージ内でコンテンツを形成する詳細なリージョンを作成することもできます。
ボタン: カレント・ページのボタンが表示されます。ボタンは、ページの送信に使用されます。ページを送信すると、HTML DBエンジンによって処理され、ユーザーはプロセスなしで他のページにリダイレクトされます。ボタンは、HTMLボタンやイメージとして、またはテンプレートを使用して実装できます。
アイテム: リージョンでグループ化されたカレント・ページのアイテムが表示されます。アイテムは、関連するセッション・ステートを持つテキスト・フィールド、選択リスト、チェック・ボックスなどのHTMLフォーム要素です。
計算:ページのレンダリング時に実行される計算が表示されます。計算は、セッション・ステートをアイテムに割り当てるために使用される論理単位です。
プロセス:ページのレンダリング時に実行されるプロセスが表示されます。プロセスは、データ操作言語(DML)またはPL/SQLを実行するために使用されるロジック・コントロールです。たとえば、ページのレンダリング時に、プロセスを使用してセッション・ステートを移入できます。
共有コンポーネントは、アプリケーション内のすべてのページに表示または適用される共通の要素です。次のセクションでは、ページ定義の「共有コンポーネント」セクションについて簡単に説明します。
タブは、アプリケーションのページ間でのナビゲートに有効な方法です。アプリケーション・ビルダーには、標準タブおよび親タブという2つのタイプのタブが含まれています。
タブが1レベルのみのアプリケーションでは、標準タブ・セットを使用します。標準タブ・セットは、特定のページに関連付けられます。標準タブを使用すると、アプリケーション内の他のページにユーザーをリンクできます。親タブ・セットは、標準タブのグループを保持するコンテナとして機能します。親タブを使用すると、ナビゲーションのレベルおよびアプリケーション内でのコンテキスト(位置)を増やすことができます。
LOVは、ラジオ・グループ、チェック・ボックス、選択リストなどの、特定のタイプのページ・アイテムを表示するために使用される静的定義または動的定義です。LOVは、静的(事前定義された一連の表示値および戻り値に基づく)または動的(表から値を選択するSQL問合せに基づく)のいずれかです。作成したLOVは、1つ以上のページ・アイテムによって参照できます。
LOVは、「LOV」ウィザードを実行してLOVリポジトリに追加して、アプリケーション・レベルで定義します。
リストは、テンプレートを使用してレンダリングされるリンクのコレクションです。リストの各エントリに対して、表示テキスト、ターゲットURL、およびリスト・エントリがいつどのように表示されるかを制御するその他の属性を指定します。リストの表示や、すべてのリスト・エントリの外観は、そのリストをテンプレートにリンクすることによって制御します。
テーマは、アプリケーションのユーザー・インタフェースを定義するテンプレートのコレクションです。各テーマには、すべてのタイプのアプリケーション・コンポーネントおよびページ・コントロール(個々のページ、リージョン、レポート、リスト、ラベル、メニュー、ボタンおよびLOV)のテンプレートが含まれます。
テンプレートは、アプリケーション内のページのルック・アンド・フィールを制御します。アプリケーションの作成時に、ページ、リージョン、レポート、リスト、ラベル、メニュー、ボタンおよびポップアップLOVのテンプレートを指定します。テンプレートのグループは、テーマという指定したコレクションで構成されます。
Oracle HTML DBにアプリケーションを作成する際に、タブ、ボタンまたはハイパーテキスト・リンクを使用して複数のページをリンクできます。各ページにはボタンおよびアイテムを配置でき、アプリケーション・ロジックを含めることができます。ページでは、条件付きナビゲーションを使用したあるページから次のページへのブランチ、計算の実行、検証の実行、およびレポート、カレンダおよびチャートの表示を行うことができます。組込みウィザードを使用してレポート、チャートおよびフォームを生成したり、静的HTMLを生成したり、PL/SQLプログラミングによってカスタム・レンダリングを行うことができます。
このセクションの構成は次のとおりです。
HTML DBエンジンは、Oracleデータベース表に格納されたデータに基づいて、ページを動的にレンダリングおよび処理します。レンダリングされたアプリケーションを表示するには、HTML DBエンジンにそのアプリケーションをリクエストします。アプリケーションを実行すると、HTML DBエンジンによって次の2つのプロセスが使用されます。
ページ表示は、ページ・レンダリング・プロセスです。このプロセスによって、すべてのページ属性(リージョン、アイテム、ボタンなど)が表示可能なHTMLページに編成されます。
ページ受入れでは、ページの処理が行われます。このプロセスによって、すべての計算、検証、プロセスおよびブランチが実行されます。
URLを使用してページを要求すると、エンジンによってページ表示が実行されます。ページを送信すると、HTML DBエンジンは、ページ受入れ、または送信した値がセッション・キャッシュに保存され、任意の計算、検証またはプロセスが実行されるページ・プロセスを実行します。
条件とは、リージョン、アイテム、ボタンおよびタブの表示と、プロセス、計算および検証の実行を制御するために役立つ論理単位です。たとえば、ボタンに条件を適用すると、レンダリング・エンジンによって、レンダリング(ページ表示)プロセス中にその条件が評価されます。条件に合格するかどうかによって、そのページ・コントロール(この場合はボタン)が表示されるかどうかが決まります。
条件を指定するには、コントロールまたはコンポーネント(リージョン、アイテム、ボタン、タブなど)の作成時に条件タイプを選択するか、または条件タイプ属性から選択します。選択した条件タイプに応じて、「式」フィールドに適切な値を入力します。条件は、「式」フィールドに入力した値に基づいて、trueまたはfalseに評価されます。
注意: 「式」フィールドを使用するかどうかは、選択した条件タイプによって決まります。いずれのフィールドの値も必要としない条件タイプ、「式1」の値のみが必要な条件タイプ、両方のフィールドの値が必要な条件タイプなどがあります。これらのフィールドは「式1」および「式2」とラベル付けされていますが、指定した条件タイプの値が式という用語の公式の定義に準拠していない場合があります。これらの値は、選択した条件タイプに適したテキスト値です。 |
任意のコンポーネントまたはコントロールに使用可能なすべての条件のリストを表示するには、「条件タイプ」リストの右にある「ビュー」アイコンをクリックします。リストのすぐ下に、一般的な選択項目へのショートカットが表示されます。条件に式が必要な場合は、該当するフィールドにその式を入力します。
次のセクションでは、一般的に使用されるいくつかの条件タイプについて説明します。
「カレント・ページ=式1」は、カレント・ページIDが、「式1」内のカンマで区切られたページ・リストに含まれている場合にtrueと評価されます。次に例を示します。
100
カレント・ページが100である場合、この条件はtrueに評価され、条件に合格します。
認証は、ユーザーがアプリケーションにアクセスする前に、そのユーザーの本人確認を行うプロセスです。認証では、ユーザーがユーザー名とパスワードを入力するか、またはデジタル証明書や保護キーを使用する場合があります。
Oracle HTML DBは、モジュール認証をサポートしているため、必要に応じて認証メソッドを簡単に切り替えられます。ユーザーの本人確認は、複数の組込み認証メソッドから選択するか、またはウィザードを使用して独自のカスタム認証方法を作成して実行できます。
条件はページ上の特定のコントロールまたはコンポーネントのレンダリングおよび処理を制御しますが、認可スキームはユーザーのアクセスを制御します。認可は、ユーザー権限に基づいてリソースへのアクセスを制御することを示す広義語です。
認可スキームは、アプリケーションの認証スキームのセキュリティを強化します。認可スキームは、アプリケーション全体、各ページ、またはリージョン、アイテム、ボタンなどの特定のページ・コントロールに対して指定できます。たとえば、認可スキームを使用して、ユーザーに表示するタブ、リージョンまたはナビゲーション・バー・エントリを選択的に決定できます。
HTTP(HTMLページの配布に最も一般的に使用されるプロトコル)は、ステートレスなプロトコルです。Webブラウザは、ページ全体をダウンロードするために必要な時間のみサーバーに接続します。また、サーバーでは、各ページ・リクエストは、発生済または将来発生する他のページ・リクエストと関連しない個別のイベントとして処理されます。これは、あるページで入力したフォーム値に後続のページでアクセスするには、なんらかのセッション・ステート管理を使用する必要があることを意味します。通常、ユーザーがあるページのフォームに入力した値には、後続のページからはアクセスできません。Oracle HTML DBは透過的にセッション・ステートを保持するため、開発者は、アプリケーションの任意のページでセッション・ステートの値を取得および設定できます。
このセクションの構成は次のとおりです。
セッションは、ページ・ビュー間で永続性(またはステートフルな動作)を確立する論理的な構成体です。 各セッションには、Oracle HTML DBの使用環境で一意の識別子が割り当てられています。HTML DBエンジンは、この識別子(セッションID)を使用して、各ページ・ビューの前後に、アプリケーションで作業中のデータ・セット(セッション・ステート)を格納および取得します。
個々のセッションは相互に完全に独立しているため、任意の数のセッションがデータベース内に同時に存在できます。セッションは管理者によって消去されるまでデータベース内で存続するため、ユーザーは、以前のセッションに戻ることができ、1つのアプリケーションを長期間実行し続けることができます。また、ユーザーは複数のブラウザ・セッションで、アプリケーションの複数のインスタンスを同時に実行できます。
Oracle HTML DBセッションは、ページ・リクエストの処理に使用されるOracleデータベース・セッションとは論理的にも物理的にも異なります。ユーザーはアプリケーションを、1つのOracle HTML DBセッションで、ログインからログアウトまで実行します。この期間は、通常分単位か時間単位です。このセッション中にページがリクエストされるたびに、Oracle HTML DBエンジンはOracleデータベース・セッションを作成または再利用してデータベース・リソースにアクセスします。多くの場合、これらのOracleデータベース・セッションは、数分の1秒のみ存続します。
HTML DBエンジンは、データベースからセッション・ステートをフェッチするために、各ページ・リクエストのユーザーの識別情報(匿名性)、およびセッションIDを確認します。セッションIDは、ページ・リクエストのURL内に明示的に示されています。また、ページのHTML POSTデータにも明示的に示され、セッションのCookieのコンテンツ内にも間接的に示されています。このCookieは、認証中にHTML DBエンジンによって送信され、アプリケーション(またはブラウザ)・セッションが終了するまで保持されます。
また、ページのHTML POST構造や、認証中にHTML DBエンジンによって送信され、アプリケーション(またはブラウザ)・セッションが終了するまで保持されるセッションのCookie内にもセッションIDが示されています。
Oracle HTML DBは、認証プロセス中に新しいセッションIDを割り当て、認証されたユーザーの識別情報をセッションIDとともに記録し、続けて各ページ・リクエストのURLまたはPOSTデータをセッションのCookieおよびデータベースのセッション・レコードと照合して確認します。この確認によって、柔軟性とセキュリティが向上します。
セッションIDがセッション・ステート用のキーであるのに対し、セッションのCookie(使用される場合)およびセッション・レコードは、セッションIDとユーザーの認証ステータスの整合性を保証します。
HTML DBアプリケーションの動作は、通常、セッション・ステートの値によって決まります。たとえば、ボタンは、アイテムのセッション・ステートの値に基づいて、条件付きで表示できます。ページのセッション・ステートを表示するには、「開発者」ツールバーの「セッション」をクリックします。
「セッション・ステート」ページには、カレント・ページに関する重要な情報が含まれています。 特定のページを検索するには、「ページ」フィールドにページIDを入力し、「実行」をクリックします。表4-1に、「セッション・ステート」ページで参照可能な様々なタイプの情報を示します。
表4-1 「セッション・ステート」ページで参照可能な情報
ヘッダー | 説明 |
---|---|
アプリケーション | アプリケーション名、セッションID、カレント・ユーザー、作業領域IDおよびブラウザの言語が表示されます。 |
ページ・アイテム | アプリケーションIDおよびページID、アイテム名、アイテムの表示方法(非表示、ポップアップ、ボタン、HTMLでのみ表示)、セッション・ステートのアイテム値、ステータスなどのページ・アイテムの属性が表示されます。
「ステータス」列には、セッション・ステートのステータスが示されます。表示される値を次に示します。
|
アプリケーション・アイテム | アプリケーション・アイテムは、ページに存在しないアイテムです。アプリケーション・アイテムは、関連付けられたユーザー・インタフェース・プロパティを持たないセッション・ステート変数です。
参照: アイテム値を参照する方法については、「アプリケーション・レベル・アイテムの作成」および「置換文字列の使用」を参照してください。 |
セッション・ステート | カレント・セッションのセッション・ステートのサマリーが表示されます。適用可能なアプリケーションID、ページID、アイテム名、表示タイプ、アイテム値および表示ラベルが表示されます。 |
インタラクティブな、データに応じて動作するWebアプリケーションを構築するには、セッション・ステート値にアクセスして管理する機能が重要です。Oracle HTML DBでは、セッション・ステートはページごとに自動的に管理され、静的HTML、またはプロセスや検証などのロジック・コントロールによって簡単に参照できます。
このセクションの構成は次のとおりです。
アイテムの値の参照は、セッション・ステートの参照の最も一般的な例です。Oracle HTML DBでは、アイテムはフィールド、テキスト領域、パスワード、選択リスト、チェック・ボックスなどです。表4-2に、アイテム値を参照するためにサポートされている構文を示します。
Oracle HTML DBのページがユーザーによって送信されると、HTML DBエンジンは、フィールド(アイテム)に入力された値をセッション・ステートに自動的に格納します。たとえば、2つのページを持つアプリケーションが存在すると想定します。このアプリケーションの最初のページには、ユーザーが電話番号を入力できるフォームが含まれています。このフォームは、P2_PhoneNo
という名前のアイテムを作成して定義しています。2つ目のページには、ユーザーがフォームに入力する情報を表示する必要があります。
このページが送信されると、Oracle HTML DBによって、電話番号フィールドに入力された値が取得され、その値が今後の使用のために格納されます。ユーザーが入力した電話番号は、そのページのフィールドに関連付けられたアイテムを参照することで、セッション・ステートから取得できます。
アプリケーションの開発時に、特定のアイテム、ページ上のすべてのアイテム、アプリケーション内のすべてのページ、または現行のユーザー・セッション用にキャッシュされた値を消去する必要がある場合があります。キャッシュされた値を消去すると、その値がNULLにリセットされます。次のトピックでは、セッション・ステートを消去する具体的な例について説明します。
このセクションの構成は次のとおりです。
1つのアイテムのキャッシュを消去すると、そのアイテムの値がNULLにリセットされます。たとえば、ページがレンダリング用に準備されるときに特定のアイテムの値を確実にNULLにしておく必要がある場合に、この方法を使用します。
次の例では、標準f?p
構文を使用してアイテムのキャッシュを消去します。この例では、アプリケーション100のページ5がコールされます。f?p
構文のClearCache
位置にMY_ITEM
を指定すると、MY_ITEM
の値がNULL
にリセットされます。
f?p=100:5:&SESSION.::NO:MY_ITEM
次の例では、アイテムTHE_EMPNO
および THE_DEPTNO
の値がリセットされます。
f?p=100:5:&SESSION.::NO:THE_EMPNO,THE_DEPTNO
アプリケーション・アイテムをキャッシュすると、セッション・ステートを効率的に保持できます。ただし、ページ上のすべてのアイテムのキャッシュを消去する必要がある場合もあります。たとえば、ユーザーが新しい注文を作成するリンクをクリックすると、ページ上のすべてのフィールドが消去されるようにする必要があると想定します。ページ全体のキャッシュを消去することで、ページ上のすべてのアイテムの値をNULLに設定できます。
この例では、2つのページのセッション・キャッシュが消去され、ページ区切りがリセットされます。
f?p=6000:6003:&SESSION.::NO:RP,6004,6014
この例では、次の処理が行われます。
アプリケーション6000のページ6003が実行され、現行のセッションIDが使用されます。
デバッグ情報を表示しないように指示されます(NO
)。
カレント・セッションのキャッシュに保持されたページ6004および6014のアイテムのすべての値が消去されます。
ページ6003(リクエストされたページ)のリージョンのページ区切り(RP
)がリセットされます。
この例では、更新フォームの実装方法を示します。既存の情報を消去し、アイテムの値(通常、主キー)を設定します。
f?p=6000:6003:&SESSION.::NO:6003:MY_ITEM:1234
この例では、次の処理が行われます。
アプリケーション6000のページ6003が実行され、現行のセッションIDが使用されます。
デバッグ情報を表示しないように指示されます(NO
)。
カレント・セッションのキャッシュに保持されたページ6003のアイテムのすべての値が消去されます。
MY_ITEM
というアイテムのセッション・ステートの値を1234
に設定します。
この例は、値が複数のアイテムに渡されること以外は、前述の例に類似しています。
f?p=6000:6004:&SESSION.::NO:6003:MY_ITEM1,MY_ITEM2,MY_ITEM3:1234,,5678
この例では、次の処理が行われます。
アプリケーション6004のページ6003が実行され、現行のセッションIDが使用されます。
ページ6003のアイテムのカレント・セッションのキャッシュが消去されます。
デバッグ情報を表示しないように指示されます(NO
)。
MY_ITEM1
の値が1234、MY_ITEM2
の値がNULL(プレースホルダとして使用されたカンマによって示される)およびMY_ITEM3
の値が5678に設定されます。
f?p
構文で、キーワードAPPを使用してClear Cache
引数を作成することによって、アプリケーション・キャッシュを消去することができます。次の構文を使用します。
f?p=App:Page:Session::NO:APP
注意: アプリケーション全体のキャッシュをリセットしても、アプリケーションは完全なリセット状態にはリストアされません。たとえば、アプリケーションに新しいインスタンス開始時の計算やプロセスが含まれている場合、HTML DBエンジンは、該当するアプリケーション・セッションが作成されたときに、これらの計算やプロセスを実行します。その後、キャッシュ消去リクエストを処理し、リクエストされたページを表示します。(セッションIDの追跡にCookieが使用されていない場合に)セッションIDを指定せずにアプリケーションを完全にリセットするには、セッションIDを指定せずにURLを使用するか、または別のアプリケーションから |
アプリケーション・プロセスまたはSQL問合せ内でバインド変数を使用すると、特定のアイテムのセッション・ステートを参照できます。次に例を示します。
SELECT * FROM emp WHERE name like '%' || :SEARCH_STRING || '%'
この例では、検索文字列がページ・アイテムです。リージョン・タイプがSQL問合せとして定義されている場合、標準SQLバインド変数構文を使用して値を参照できます。バインド変数を使用すると、解析済のSQL問合せがデータベースによって再利用されるため、サーバーによるメモリーの使用が最適化されます。
バインド変数構文を使用する場合は、次の規則に注意してください。
バインド変数名は、アイテム名に対応している必要があります。
バインド変数名は、大/小文字が区別されません。
バインド変数名は、30文字以下である必要があります(有効なOracle識別子である必要があります)。
ページ・アイテム名とアプリケーション・アイテム名は255文字以下に設定できますが、アプリケーション・アイテムをバインド変数構文を使用したSQL内で使用する場合、そのアイテム名は30文字以下で指定する必要があります。
リージョン・タイプがSQL問合せ、SQL問合せ(SQL問合せを戻すPL/SQLファンクション本体)、またはLOVとして定義されている場合は、次の構文を使用してセッション・ステートを参照できます。
:MY_ITEM
これを行うための一般的な方法の1つは、セッション・ステート変数をWHERE
句に組み込むことです。次の例では、アイテムTHE_DEPTNO
の値を、SQL問合せから定義されるリージョンにバインドする方法を示します。
SELECT ename, job, sal FROM emp WHERE deptno = :THE_DEPTNO
各アプリケーションは、そのアプリケーションを一意に識別する番号(アプリケーションID)を持ちます。同様に、各ページも一意の番号(ページID)を持ちます。アプリケーションとページは、英数字の別名を持つ場合もあります。アプリケーションの別名は作業領域内で一意で、ページの別名は各アプリケーション内で一意です。アプリケーションを実行すると、HTML DBエンジンによってセッション番号が生成されます。この番号は、ユーザーのセッション・ステートに対するキーとして機能します。
このセクションの構成は次のとおりです。
各ページ用に表示されるURLには、Oracle HTML DBの位置、アプリケーションID、ページIDおよびセッションIDが示されます。次に例を示します。
http://htmldb.oracle.com/pls/otn/f?p=4350:1:220883407765693447
この例では、次の項目が示されています。
Oracle HTML DBのアドレス:
http://htmldb.oracle.com/pls/otn/
アプリケーションID: 4350
ページID: 1
セッションID: 220883407765693447
アプリケーションのページ間にリンクを作成するには、次の構文を使用します。
f?p=App:Page:Session:Request:Debug:ClearCache:itemNames:itemValues:PrinterFriendly
表4-3に、f?p
構文の使用時に指定できる引数を示します。
表4-3 f?p構文の引数
構文 | 説明 |
---|---|
App
|
アプリケーションIDまたは英数字の別名を指定します。 |
Page
|
ページIDまたは英数字の別名を指定します。 |
Session
|
セッションIDを指定します。セッションIDを参照して、セッション番号を渡すことで同じセッション・ステートを保持している他のページへのハイパーテキスト・リンクを作成できます。セッションIDを参照するには、次の構文を使用します。
|
Request
|
REQUEST の値を設定します。REQUEST の値は、各アプリケーション・ボタンによって、そのボタンの名前に設定されます。これによって、ユーザーがボタンをクリックしたときに、受入れプロセスでそのボタンの名前が参照されるようになります。REQUEST を参照するには、次の構文を使用します。
|
Debug
|
アプリーション処理の詳細を表示します。DEBUGフラグの有効値はYES またはNO です。このフラグをYES に設定すると、アプリケーション・プロセスの詳細を表示できます。DEBUGフラグを参照するには、次の構文を使用します。
|
ClearCache
|
キャッシュを消去します。1つのアイテムのキャッシュを消去すると、その名前リストの値がNULLに設定されます。キャッシュされたアイテムを消去するには、カンマで区切られたページIDのリストを使用します。カンマで区切られたリストには、リセットされるもののコレクションまたはキーワードRPを含めることもできます。キーワードRP は、リクエストされたページ上のリージョンのページ区切りをリセットします。
|
itemNames
|
URLでセッション・ステートを設定するために使用される、カンマで区切られたアイテム名のリストです。 |
itemValues
|
URLでセッション・ステートを設定するために使用されるアイテム値のリストです。アイテム値にコロンを含めることはできませんが、カンマをバックスラッシュで囲んで指定することは可能です。アイテム値にカンマを渡すには、文字をバックスラッシュで囲んでください。次に例を示します。
\123,45\ |
PrinterFriendly
|
ページを「印刷用」モードでレンダリングするかどうかを決定します。PrinterFriendlyが「はい」に設定されている場合は、ページが「印刷用」モードでレンダリングされます。PrinterFriendlyの値は、リージョンなどの要素をページから削除して印刷される出力を最適化するための条件のレンダリングに使用されます。印刷用プリファレンスを参照するには、次の構文を使用します。
V('PRINTER_FRIENDLY') 参照時は、HTML DBエンジンはタブやナビゲーション・バーを表示しません。すべてのアイテムは、フォーム要素ではなくテキストで表示されます。 |
f?p
構文の動作を理解することは重要ですが、この構文をユーザー自身が構築する必要がある場合はほとんどありません。Oracle HTML DBには、これらの参照を自動的に作成する多くのウィザードが含まれています。 次のセクションでは、f?p
構文を使用してページをリンクする特定のインスタンスについて説明します。
アプリケーションおよびページの別名は、有効なOracle識別子で構成する必要があります。空白を含めることはできず、また大/小文字は区別されません。次の例では、Oracle HTML DBアプリケーション内から、アプリケーションおよびページの別名を使用してページをコールします。アプリケーションmyapp
のページhome
が実行され、現行のセッションIDが使用されます。
f?p=myapp:home:&SESSION.
アプリケーションの別名は、作業領域内で一意である必要があります。同じOracle HTML DBインスタンス内の異なる作業領域にあるアプリケーションで、アプリケーション別名が同じである場合は、&c
引数を使用して作業領域名を指定します。次に例を示します。
f?p=common_alias:home:&session.&c=WORKSPACE_A
ボタンの作成時に、ユーザーがそのボタンをクリックするとリダイレクトされるURLを指定できます。この例では、アプリケーション6000のページ6001が実行され、現行のセッションIDが使用されます。
f?p=6000:6001:&SESSION.
これは、Oracle HTML DBでボタンを使用するための唯一の方法です。この方法は、ページの送信をバイパスし、そのページ上のハイパーリンクとして機能します。他にも、まずページを送信する方法があります。その方法では、ボタンをクリックすると、処理するページが送信され、フォームが送信された後、セッション・ステートが保存されます。
ページ・テンプレート内またはリージョン・ソース内で置換文字列を使用すると、文字列を別の値に置換できます。ユーザーによるアイテムの編集を可能にするアプリケーションを設計するには、情報を渡すために置換文字列を使用する必要があります。
Oracle HTML DBでは、次のように置換文字列を使用できます。
置換文字列をテンプレートに含めます。
&ITEM
構文を使用して、ページまたはアプリケーション・アイテムを参照します。
組込み置換文字列を使用して、特定のタイプの機能を実現します。
テンプレート内で使用する置換文字列は、シャープ記号(#)で区切ります。次に例を示します。
#ABC#
置換変数を使用してページまたはアプリケーション・アイテムを参照するには、次のステップを実行します。
アイテム名の先頭にアンパサンド(&)を追加します。
アイテム名の末尾にピリオド(.)を追加します。
たとえば、HTMLリージョン、リージョン・タイトル、アイテム・ラベル、または他の多くのコンテキストでF101_X
という名前のアプリケーション・アイテムを参照する場合は、次のように入力します。
&F101_X.
最後のピリオドが必要であることに注意してください。ページのレンダリング時に、HTML DBエンジンによって置換文字列の値がアイテムF101_X
の値で置換されます。
アプリケーション・ビルダーでは、多くの組込み置換文字列がサポートされています。これらの値を参照して特定のタイプの機能を実行できます。
次のセクションでは、これらの置換文字列の詳細、使用するタイミングおよび現在使用可能な構文について説明します。バインド変数:USER
は、Oracle HTML DBでは特殊な意味を持つため使用されないことに注意してください。
このセクションの構成は次のとおりです。
APP_ALIAS
は、カレント・アプリケーションの英数字の名前です。APP_ALIAS
は、APP_ID
が1つのデータベースでホスティングされているすべての作業領域およびすべてのアプリケーションで一意である必要があるという点で、APP_ID
と異なります。APP_ALIAS
は、作業領域内で一意である必要があります。たとえば、1つのAPP_ALIAS
を使用して2つの異なる作業領域にABCというアプリケーションを作成することができます。APP_ALIAS
は、APP_ID
を使用できる場所であればほぼすべての場合に使用できます。たとえば、次の例に示すように、f?p
構文にAPP_ALIAS
またはアプリケーションIDを使用できます。
f?p=ABC:1:&SESSION.
この例では、アプリケーションABCのページ1が、カレント・セッションを使用して実行されます。
表4-4に、APP_ALIAS
を参照するためにサポートされている構文を示します。
次に、HTMLの例を示します。
Click me to go to page 1 <a href="f?p=&APP_ALIAS.:1:&SESSION."> of the current application</a>
APP_ID
は、現在実行されているアプリケーションのアプリケーションIDを示します。表4-5に、APP_ID
を参照するためにサポートされている構文を示します。
表4-5 APP_ID構文
参照タイプ | 構文 |
---|---|
バインド変数 | :APP_ID
|
直接PL/SQL | HTMLDB_APPLICATION.G_FLOW_ID (A NUMBER)
|
PL/SQL | NV('APP_ID')
|
置換文字列 | &APP_ID.
|
次に、置換文字列の参照の例を示します。
f?p=&APP_ID.:40:&SESSION.
この置換文字列を使用して、特定のアプリケーションに固有で、複数のアプリケーションでは共有されていないアップロードされたイメージ、JavaScriptおよびカスケード・スタイルシートを参照します。ファイルをアップロードして、そのファイルをアプリケーション固有に設定した場合、この置換文字列またはバインド変数を使用する必要があります。表4-6に、APP_IMAGES
を参照するためにサポートされている構文を示します。
APP_PAGE_ID
はカレント・アプリケーションIDです。たとえば、アプリケーションが3ページ目に存在した場合、結果は3になります。この構文の使用は、複数のアプリケーションで汎用的に動作する必要があるアプリケーション・コンポーネントを記述する場合に有効です。表4-7に、APP_PAGE_ID
を参照するためにサポートされている構文を示します。
表4-7 APP_PAGE_ID構文
参照タイプ | 構文 |
---|---|
バインド変数 | :APP_PAGE_ID
|
直接PL/SQL | HTMLDB_APPLICATION.G_FLOW_STEP_ID (A NUMBER)
|
直接PL/SQL | :APP_PAGE_ID
|
PL/SQL | NV('APP_PAGE_ID')
|
置換文字列 | &APP_PAGE_ID .
|
次に、置換文字列の参照の例を示します。
f?p=&APP_ID.:&APP_PAGE_ID.:&SESSION.
APP_SESSION
は、最も一般的に使用される組込み置換文字列の1つです。この置換文字列を使用すると、セッション番号を渡すことで同じセッション・ステートを保持しているアプリケーション・ページ間にハイパーテキスト・リンクを作成できます。表4-8に、APP_SESSION
を参照するためにサポートされている構文を示します。
表4-8 APP_SESSION構文
参照タイプ | 構文 |
---|---|
バインド変数 | :APP_SESSION
|
PL/SQL | V('APP_SESSION')
|
短縮PL/SQL | V('SESSION')
|
短縮置換文字列 | &SESSION.
|
置換文字列 | &APP_SESSION.
|
次に例を示します。
HTMLリージョン内からの参照:
<a href="f?p=100:5:&SESSION.">click me</a>
PL/SQLを使用した参照:
htf.anchor('f?p=100:5:'||V('SESSION'),'click me');
SQL問合せを使用した参照:
SELECT htf.anchor('f?p=100:5:'||:app_session,'clickme') FROM DUAL;
APP_UNIQUE_PAGE_ID
は、各ページ・ビューに固有なOracle順序から生成される整数です。この数値は、アプリケーションで重複したページの送信を防止するために使用され、その他の用途にも使用できます。たとえば、ブラウザのキャッシュの問題を防止するために一意のURLを作成する場合、この数値を、f
プロシージャへのコール内のリクエスト列またはデバッグ列に埋め込むことができます。表4-9に、APP_UNIQUE_PAGE_ID
を参照するためにサポートされている構文を示します。
表4-9 APP_UNIQUE_PAGE_ID構文
参照タイプ | 構文 |
---|---|
バインド変数 | :APP_UNIQUE_PAGE_ID
|
PL/SQL | V('APP_UNIQUE_PAGE_ID')
|
置換文字列 | &APP_UNIQUE_PAGE_ID .
|
次に、HTMLの例を示します。
SELECT 'f?p=100:1:'||:APP_SESSION||':'||:APP_UNIQUE_PAGE_ID|| ':::P1_EMPNO:'||empno, ename, job FROM emp
リクエスト列にAPP_UNIQUE_PAGE_ID
が使用されていることに注意してください。これによって、このURLが一意になり、ブラウザによる過度のキャッシュの問題を回避できます。
APP_USER
は、アプリケーションを実行しているカレント・ユーザーです。認証モデルに応じて、ユーザーの値の設定も異なります。アプリケーションがデータベース認証を使用して実行されている場合、ユーザーの値はデータベースの擬似列USERと同じになります。アプリケーションが、ユーザー認証を必要とする認証スキームを使用する場合、APP_USER
の値はその認証スキームによって設定され、通常は、認証時に使用されるユーザー名に設定されます。表4-10に、APP_USER
を参照するためにサポートされている構文を示します。
次に例を示します。
HTMLリージョン内からの参照:
Hello you are logged in as &USER.
PL/SQLを使用した参照:
htp.p('Hello you are logged in as'||V('USER'));
バインド変数としての参照:
SELECT * FROM some_table WHERE user_id = :app_user
このアプリケーション・レベルの属性は、有効な認証済接頭辞(ログインしているURLの接頭辞)を示します。相対パスまたはhttp
で始まるフルパスを使用できます。このアイテムは、アプリケーションが認証済(ログイン済)モードとパブリック(未ログイン)・モードの両方で実行可能な場合に有効です。AUTHENTICATED_URL_PREFIX
を使用すると、認証済のページへのリンクを作成できます。このアイテムは、Basicデータベース認証の使用時に最も有効です。これは、URLの変更に認証が必要になる場合があるためです。表4-11に、AUTHENTICATED_URL_PREFIX
を参照するためにサポートされている構文を示します。
BROWSER_LANGUAGE
は、Webブラウザの現行の言語プリファレンスを参照します。表4-12に、BROWSER_LANGUAGE
を参照するためにサポートされている構文を示します。
CURRENT_PARENT_TAB_TEXT
は、ページ・テンプレートで最も有効です。ただし、この文字列は、2つのレベルのタブ(親タブと標準タブ)が使用されるアプリケーションでのみ使用できます。この文字列は、親タブ・ラベルの参照に使用します。この置換文字列を使用すると、現在選択されている親タブを、ページ・テンプレート内で繰り返すことができます。表4-13に、CURRENT_PARENT_TAB_TEXT
を参照するためにサポートされている構文を示します。
DEBUG
フラグの有効値はYesまたはNoです。デバッグを有効にすると、アプリケーション・プロセスの詳細が表示されます。カスタム・コードを記述する場合、デバッグ・モードがYesに設定されている場合にのみデバッグ情報を生成できます。表4-14に、DEBUG
を参照するためにサポートされている構文を示します。
表4-14 DEBUG構文
参照タイプ | 構文 |
---|---|
バインド変数 | :DEBUG
|
直接PL/SQL | HTMLDB_APPLICATION.G_DEBUG
|
PL/SQL | V('DEBUG')
|
置換文字列 | &DEBUG .
|
次に、DEBUG
の現行の値を保持する置換文字列の参照の例を示します。
f?p=100:1:&SESSION.::&DEBUG
HOME_LINK
は、アプリケーションのホームページです。HTML DBエンジンは、ページが指定されていない場合および認証スキームのロジックによって代替ページが指定されていない場合に、ここへリダイレクトします。ホーム・リンクは「アプリケーション属性」ページに定義します。
表4-15に、HOME_LINKを参照するためにサポートされている構文を示します。
表4-15 HOME_LINK構文
参照タイプ | 構文 |
---|---|
直接PL/SQL | HTMLDB_APPLICATION.G_HOME_LINK
|
PL/SQL | V('HOME_LINK')
|
テンプレート参照 | #HOME_LINK#
|
置換文字列 | &HOME_LINK.
|
現在ログインしていないユーザー用のログイン・ページへのリンクを表示するには、LOGIN_URL
を使用します。表4-16に、LOGIN_URL
を参照するためにサポートされている構文を示します。
IMAGE_PREFIX
の値によって、Oracle HTML DBによって分散されたイメージ・ディレクトリを指すためにWebサーバーが使用する仮想パスが決まります。アップロードされたイメージを参照する場合、WORKSPACE_IMAGES
およびAPP_IMAGES
を使用します。表4-17に、IMAGE_PREFIX
を参照するためにサポートされている構文を示します。
PL/SQLコードからアプリケーションへのコールを生成する場合、Oracle HTML DBスキーマの所有者を参照する必要がある場合があります。次に、直接PL/SQLの参照用の適切な構文を示します。
HTMLDB_APPLICATION.G_FLOW_SCHEMA_OWNER
また、#FLOW_OWNER#
を使用してSQL問合せおよびPL/SQL(リージョンやプロセスなど)でこの値を参照することもできます。
PRINTER_FRIENDLY
の値によって、HTML DBエンジンが印刷表示モードで実行するかどうかが決定されます。この設定は、印刷されるドキュメントには不適切な要素をページから排除する条件で参照できます。表4-18に、PRINTER_FRIENDLY
を参照するためにサポートされている構文を示します。
LOGOUT_URL
はアプリケーション・レベルの属性であり、ログアウトURLの指定に使用されます。これは、ユーザーをログアウト・ページに移動させるか、またはオプションで直接ユーザーをログアウトさせるURLです。ログアウト・ナビゲーション・バー・エントリを作成するには、&LOGOUT_URL
の最後にピリオドを追加します(&LOGOUT_URL.
)。ページ・テンプレートをコーディングしている場合は、#LOGOUT_URL#
を使用します。表4-19に、LOGOUT_URL
を参照するためにサポートされている構文を示します。
PROXY SERVER
は、アプリケーション属性です。この属性は、ソースがURLであるリージョンによって使用される場合があります。次に、直接PL/SQL参照用の適切な構文を示します。この参照は、データベースからリモートWebサーバーにアクセスするためのPL/SQLを記述する場合に使用します(たとえば、データベースに付属するutl_httpパッケージ
を使用する場合)。
HTMLDB_APPLICATION.G_PROXY_SERVER
PUBLIC_URL_PREFIX
は、アプリケーション・レベルの属性であり、ログイン・モードをパブリック表示に切り替えるURLを指定します。表4-20に、PUBLIC_URL_PREFIX
を参照するためにサポートされている構文を示します。
REQUEST
の値は、各アプリケーション・ボタンによって、そのボタンの名前またはそのボタンに関連付けられているリクエスト値属性に設定されます。これによって、ユーザーがボタンをクリックしたときに、受入れプロセスでそのボタンの名前が参照されるようになります。f?p
構文では、REQUEST
は4つ目の引数を使用して設定できます。
ページをポストすると、受入れプロセスが起動されます。受入れプロセスは、計算、検証、プロセスおよびブランチで構成されています。REQUEST
の値は、受入れプロセスの各フェーズで使用可能です。Oracle HTML DBが別のページにブランチされると、REQUEST
はNULLに設定されます。
REQUEST
の値は、ユーザーがクリックするボタンの名前か、またはユーザーが選択するタブの名前です。たとえば、名前がCHANGE
、ラベルが「変更の適用」というボタンがあるとします。ユーザーがこのボタンをクリックすると、REQUEST
の値がCHANGE
になります。
REQUEST
は、通常、条件を使用して参照されます。たとえば、ユーザーがレポート・ページ上の「実行」をクリックしたときにページ区切りをリセットする必要がある場合があります。ページ区切りは、送信時ページ・プロセスを作成してリセットできます。ページ・プロセスには、条件「リクエスト=式1」を使用して条件を付けることができます。
送信時ページ・プロセスを作成するには、次のステップを実行します。
「条件」で、条件タイプ「リクエスト=式1」を選択します。
式1で「実行」を実行します。
REQUEST
は、f?p
構文を使用してページに移動するときの表示プロセスにも使用できます。次に例を示します。
f?p=100:1:&SESSION.:GO
f?p
構文の4つ目の引数がREQUEST
です。この例では、カレント・セッションのアプリケーション100のページ1に移動し、REQUEST
の値がGO
に設定されます。すべてのプロセスまたはリージョンでは、表示プロセスを使用してREQUEST
の値を参照できます。
次に、PL/SQLを使用した同様の例を示します。
IF V ('REQUEST') = 'GO' THEN htp.p('hello'); END IF;
htp.p('hello')
は、特定のテキスト文字列を出力するためのPL/SQL Webツールキット・パッケージへのコールであることに注意してください。
参照:
|
SQLERRM
は、アプリケーション・リージョン・エラー・メッセージでのみ使用可能なテンプレート置換です。次に、リージョン・テンプレート置換の参照用の適切な構文を示します。
#SQLERRM#
SYSDATE_YYYYMMDD
は、データベース・サーバーの現在の日付にYYYYMMDD
書式マスクを適用して表示します。この値を、SYSDATE()
ファンクションを繰り返しコールするかわりに使用できます。次のリストに、SYSDATE_YYYYMMDD
を参照するためにサポートされている構文を示します。
バインド変数
:SYSDATE_YYYYMMDD
PL/SQL
V('SYSDATE_YYYYMMDD')
直接PL/SQL
HTMLDB_APPLICATION.G_SYSDATE (DATE DATATYPE)
この置換文字列を使用して、作業領域内の複数のアプリケーションで共有されているアップロードされたイメージ、JavaScriptおよびカスケード・スタイルシートを参照します。表4-23に、WORKSPACE_IMAGES
を参照するためにサポートされている構文を示します。