Oracle HTML DB 2日で開発者
リリース2.0
B25048-01
  目次
目次

戻る
戻る
次へ
次へ
 

10 問題追跡アプリケーションの作成および配置方法

Oracleデータベースに情報を格納すると、その情報は表に編成され、類似の情報はグループにまとめられ、重複したものは削除されます。Oracle HTML DB開発環境を使用すると、Oracleデータベースに格納された情報をユーザーが表示および更新できるアプリケーションを簡単に作成できます。

このチュートリアルでは、Oracle HTML DBを使用して、プロジェクトに関連する問題の割当て、ステータスおよび進捗を追跡するアプリケーションを作成および配置する方法について説明します。

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

業務での使用例

スケジュールどおりに予算内でプロジェクトを完了するには、効率的にプロジェクトを管理する必要があります。すべてのプロジェクトには、追跡し、優先順位を付けて対処する必要がある複数の問題があります。

MRVL Companyには、会社が利益をあげるためにスケジュールどおりに完了する必要があるいくつかのプロジェクトがあります。これらのプロジェクトが期限内に完了しないと、会社は金銭的損害を被ります。プロジェクト・リーダーは、様々な方法で問題を追跡しています。発生した問題をノートブックで手動で追跡している担当者や、発生した問題をテキスト・ドキュメントで追跡している担当者がいます。スプレッドシートを使用して追跡しているマネージャもいます。

各プロジェクト・リーダーは、ホスティングされたアプリケーションをOracle HTML DBに作成して、一元管理で問題を簡単に記録および追跡できます。すべてのユーザーが必要なデータのみにアクセスできるだけでなく、データを1箇所に格納することで、対処されていない致命的な問題がないかどうかを簡単に管理できるようになります。

計画およびプロジェクト分析

アプリケーションで開発を開始する前に、まず、アプリケーションの機能に関する要件を定義する必要があります。定義した要件は、データベースの設計、およびユーザー・インタフェースでデータを受け入れて表示する方法のアウトラインに適用できます。

この業務での使用例では、プロジェクト・リーダーが、追跡の必要がある情報、セキュリティの動作、含まれるデータ管理機能およびデータの表示方法を定義する要件を決定します。

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

必要なデータ

現在、情報の追跡方法は、プロジェクト・リーダーによって若干異なります。同時に、すべてのプロジェクト・リーダーは、次の情報がアプリケーションに必要であると考えています。

  • 問題のサマリー

  • 問題の詳細

  • 問題を発見したユーザー

  • 問題が発見された日付

  • 問題が関連するプロジェクト

  • 問題を割り当てられたユーザー

  • 問題の現在のステータス

  • 問題の優先順位

  • 目標とする解決日

  • 実際の解決日

  • 進捗レポート

  • 解決のサマリー

リクエストされたセキュリティ

プロジェクト・リーダーは、すべての情報にアクセスできるすべてのユーザーを監視する必要があるため、次のアクセス・ルールに従っています。

  • 各チーム・メンバーおよびプロジェクト・リーダーが一度に割り当てられるのは、1つのプロジェクトのみです。

  • 各チーム・メンバーおよびプロジェクト・リーダーは、1つのプロジェクトに割り当てられる必要があります。

  • マネージャは、特定のプロジェクトには割り当てられません。

  • マネージャのみがプロジェクトおよびユーザーを定義および管理できます。

  • すべてのユーザーが新しい問題に取り組むことができます。

  • 割り当てられた後は、割り当てられたユーザーまたはプロジェクト・リーダーのみがその問題に関するデータを変更できます。

  • マネージャには、特定の問題の詳細にアクセスしなくても、データのサマリーを表示するビューが必要です。

データ管理機能

次に、プロジェクト・リーダーは、システムに情報を入力する方法を決定します。この場合、ユーザーは、次の操作を行う権限が必要です。

  • 問題の作成

  • 問題の割当て

  • 問題の編集

  • プロジェクトの作成

  • プロジェクトの管理

  • ユーザーの作成

  • ユーザー情報の管理

  • プロジェクト割当ての管理

データ表示機能

データをアプリケーションに入力した後、ユーザーはそのデータを表示する必要があります。まず、次の内容は表示できるようにする必要があることが決定しています。

  • プロジェクトごとのすべての問題

  • プロジェクトごとの未解決の問題

  • プロジェクトごとの期限切れ問題(すべてのユーザー用)

  • 最近発見された問題

  • 未割当ての問題

  • プロジェクトごとの問題のサマリー(マネージャ用)

  • 指定した月ごとの解決済問題

  • カレンダに示される問題解決日

  • ユーザーごとの問題解決にかかる日数

特別な機能

最後に、プロジェクト・リーダーは、アプリケーションによって次の特別な機能がサポートされる必要があることを決定します。

  • 問題がユーザーに割り当てられた際に、ユーザーに通知します。

  • 問題が期限切れになった際に、プロジェクト・リーダーに通知します。

データベース・オブジェクトの設計

データベース・オブジェクト要件を定義した後は、これらの要件をデータベースの設計、およびユーザー・インタフェースでデータを受け入れて表示する方法のアウトラインに適用します。この手順では、基礎となるデータベース内の表に情報を編成する方法について検討する必要があります。「計画およびプロジェクト分析」で示す要件に従って、このプロジェクトでは、3つの表を作成する必要があります。

これらの表をサポートするには、順序、トリガーなどの追加のデータベース・オブジェクトも作成する必要があることに注意してください。すべての表にシステム生成の主キーを使用すると、カスケード更新を実装しなくてもすべてのデータを編集できます。

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

Projects表

各プロジェクトには名前が必要で、プロジェクト開始日およびプロジェクト終了日が指定されている必要があります。これらの日付は、未処理の問題が終了日に間に合うかどうかを確認するために使用します。表10-1に、Projects表に含まれる列を示します。

表10-1 Projects表の詳細

列名 タイプ サイズ NOT NULL? 制約 説明
project_id integer 該当なし はい 主キー 数値による各プロジェクトの一意の識別番号です。

トリガーを使用して順序に従って移入されます。

project_name varchar2 100 はい 一意キー 各プロジェクトの一意の英数字名です。
start_date date 該当なし はい なし プロジェクト開始日です。
target_end_date date 該当なし はい なし 目標とするプロジェクト終了日です。
actual_end_date date 該当なし いいえ なし 実際の終了日です。

People表

各ユーザーには、定義された名前およびロールがあります。プロジェクト・リーダーおよびチーム・メンバーには、プロジェクトも割り当てられています。現行ユーザーに組織内のロールを割り当てる場合は、ユーザー名に電子メール・アドレスを使用します。

表10-2に、People表に含まれる列を示します。

表10-2 People表の詳細

列名 タイプ サイズ NOT NULL? 制約 説明
person_id integer 該当なし はい 主キー 各ユーザーを識別する数値IDです。

トリガーを使用して順序に従って移入されます。

person_name varchar2 100 はい 一意キー 各ユーザーを識別する一意の名前です。
person_email varchar2 100 はい なし ユーザーの電子メール・アドレスです。
person_role varchar2 7 はい チェック制約 各ユーザーに割り当てられたロールです。


注意:

このアプリケーションは、この演習用に簡略化されています。通常、「People」データはより複雑で、多くの場合、企業の人事システムから抽出されます。また、通常、ユーザーは一度に複数のプロジェクトに取り組みます。ユーザーに割り当てるロールを動的にする必要がある場合は、People表にリンクする外部キーを持つ個別の表としてロールを実装します。

Issues表

プロジェクト・リーダーは、アプリケーション要件の定義時に、特定のユーザーに割り当てた特定の問題を追跡する必要があることを決定しました。問題は、監査証跡を提供する追加の列とともに列として含まれます。監査証跡では、問題を作成したユーザー、問題が作成された日付、問題を最後に変更したユーザーおよびその変更が行われた日付が追跡されます。

表10-3に、Issues表に含まれる列を示します。

表10-3 Issues表の詳細

列名 タイプ サイズ NOT NULL? 制約 説明
issue_id integer 該当なし はい 主キー 問題を識別する一意の数値IDです。

トリガーを使用して順序に従って移入されます。

issue_summary varchar2 200 はい なし 問題の簡潔なサマリーです。
issue_description varchar2 2000 いいえ なし 問題の詳細です。
identified_by integer 該当なし はい 「People」への外部キー 問題を発見したユーザーです。
identified_date date 該当なし はい なし 問題が発見された日付です。
related_project integer 該当なし はい 「Projects」への外部キー 問題に関連するプロジェクトです。
assigned_to integer 該当なし いいえ 「People」への外部キー この問題を所有しているユーザーです。
status varchar2 8 はい チェック制約 問題のステータスです。新しい場合はOpenに、実際の解決日が入力された場合はClosedに自動的に設定されます。
priority varchar2 6 いいえ チェック制約 問題の優先順位です。
target_resolution_date date 該当なし いいえ なし 目標とする解決日です。
progress varchar2 2000 いいえ なし 問題の進捗です。
actual_resolution_date date 該当なし いいえ なし 問題の実際の解決日です。
resolution_summary varchar2 2000 いいえ なし 解決のサマリーです。
created_date date 該当なし はい なし トリガーによって移入されます。
created_by varchar2 60 はい なし この問題を作成したユーザーです。
last_modified_date date 該当なし いいえ なし トリガーによって移入されます。


注意:

実際のアプリケーションでは、より高コストの監査を行う必要があります。たとえば、最後の変更のみでなく、データに対して行われたすべての変更を追跡する必要があります。データに対して行われたすべての変更を追跡するには、Issues表にリンクする追加の表が必要です。問題に割り当てられる有効な優先順位を動的にする必要がある場合は、Issues表にリンクする外部キーを持つ個別の表を追加する必要があります。

データベース・オブジェクトの実装

アプリケーション作成の最初の手順として、基礎となるデータベースにデータベース・オブジェクトを作成します。データベース・オブジェクトは、Oracleデータベースのユーザー・アカウント内に作成します。このアプリケーションを作成するには、Oracle HTML DB開発環境内に新しい作業領域をリクエストする必要があります。 管理者が、アプリケーション・オブジェクトを格納する初期スキーマ内に作業領域を作成します。

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

新しい作業領域のリクエスト


注意:

Oracle HTML DBをローカルにインストールしている場合は、このセクションをスキップし、既存の作業領域を使用できます。

作業領域をリクエストするには、次の手順を実行します。

  1. Webブラウザで、Oracle HTML DBのログイン・ページにナビゲートします。Oracle HTML DB開発のOracleサポート・サイトにログインするには、次のURLに移動します。

    http://htmldb.oracle.com/
    
    

    ログイン・ページが表示されます。

  2. 「タスク」で、「作業領域をリクエスト」をクリックします。

  3. 続行」をクリックし、画面に表示される手順に従います。

    リクエストが承認され、作業領域が割り当てられると、電子メールで通知されます。

データベース・オブジェクトの作成

Oracle HTML DBにオブジェクトを作成するにはいくつかの方法があります。次の選択肢があります。

  • 「オブジェクト・ブラウザ」でのオブジェクトの作成: 「オブジェクト・ブラウザ」を使用して表、ビュー、索引、順序、タイプ、パッケージ、プロシージャ、ファンクション、データベース・リンクのトリガー、マテリアライズド・ビューおよびシノニムを作成します。 ウィザードでは、選択したデータベース・オブジェクトを作成する場合に必要な選択肢の概要を確認できます。 「オブジェクト・ブラウザ」でオブジェクトを作成するには、「オブジェクト・ブラウザ」にナビゲートし、「作成」をクリックします。

  • SQLコマンド・プロセッサでのコマンドの実行: SQLコマンドを実行するには、それらのコマンドをSQLコマンド・プロセッサに入力または貼り付けます。 「SQLコマンド・プロセッサ」にアクセスするには、「作業領域」のホームページで「SQLワークショップ」をクリックした後、「SQLコマンド」を選択します。

  • スクリプトのアップロード:すべての必要なcreate object文を含むスクリプトをSQLの「スクリプト・リポジトリ」にアップロードします。 スクリプトをアップロードするには、「作業領域」のホームページで「SQLワークショップ」をクリックし、「SQLスクリプト」を選択した後、「アップロード」をクリックします。

  • オンラインでのスクリプトの作成:スクリプトをスクリプト・リポジトリにオンラインで作成します。この演習では、この方法を使用してデータベース・オブジェクトを作成します。 スクリプトをオンラインで作成するには、「作業領域」のホームページで「SQLワークショップ」アイコンをクリックし、「SQLスクリプト」を選択した後、「作成」をクリックします。

スクリプトを作成してデータベース・オブジェクトを作成するには、次の手順を実行します。

  1. Oracle HTML DBにログインします。

  2. 「作業領域」ホームページで「SQLワークショップ」アイコンをクリックします。

  3. SQLスクリプト」をクリックします。

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

  5. 「スクリプト・エディタ」で、次の手順を実行します。

    1. 「スクリプト名」で、DDL for Issue Management Applicationと入力します。

    2. 「スクリプト」に、「アプリケーション・データベース・オブジェクトのDDLの作成」のDDL(データ定義言語)をコピーして貼り付けます。

    3. 保存」をクリックします。

DDL for Issue Management Applicationスクリプトを実行するには、次の手順を実行します。

  1. 「SQLスクリプト」ページで、DDL for Issue Management Applicationのアイコンを選択します。

    「スクリプト・エディタ」が表示されます。

  2. 実行」をクリックします。

    サマリー・ページが表示されます。

  3. 再度、「実行」をクリックします。

作成したデータベース・オブジェクトの表示

「オブジェクト・ブラウザ」を使用してデータベース・オブジェクトを表示できます。

SQLワークショップでデータベース・オブジェクトを表示するには、次の手順を実行します。

  1. SQLワークショップ」タブをクリックします。

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

  3. ページの左側にある「オブジェクト」リストから、「」を選択します。

  4. 「データベース・ブラウザ」で、「」をクリックします。

  5. 特定のオブジェクト(HT_ISSUESHT_PEOPLEまたはHT_PROJECTS)の詳細を表示するには、そのオブジェクトを選択します。

デモンストレーション・データのロード

すべての必要なデータベース・オブジェクトを作成した後、表にデータをロードします。 データは、SQLワークショップで利用できるインポート機能を使用して、手動でロードできます。次の演習では、SQLワークショップを使用してデモンストレーション・データをロードします。

「アプリケーション・データベース・オブジェクトのDDLの作成」からコピーしたDDLを確認します。デモンストレーション・データ用の領域を確保するには、主キーに使用されている順序が40から始まっていることに注意してください。BEFORE INSERTトリガーは、主キー値が指定されていない場合にのみ順序がアクセスされるようにコーディングされているため、データをロードする場合は無効にする必要はありません。

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

「Projects」データのロード

Projects表にデータをインポートするには、次の手順を実行します。

  1. SQLワークショップ」タブを選択します。

  2. SQLスクリプト」をクリックします。

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

  4. 「スクリプト・エディタ」で、次の手順を実行します。

    1. 「スクリプト名」に、Load Project Dataと入力します。

    2. 「スクリプト」に、次の文をコピーして貼り付けます。

      INSERT INTO ht_projects
            (project_id, project_name, start_date, target_end_date)   values
            (1, 'Internal Infrastructure', sysdate-150, sysdate-30)
      /
      INSERT INTO ht_projects
            (project_id, project_name, start_date, target_end_date)   values
            (2, 'New Payroll Rollout', sysdate-150, sysdate+15)
      /
      INSERT INTO ht_projects
            (project_id, project_name, start_date, target_end_date)   values
            (3, 'Email Integration', sysdate-120, sysdate-60)
      /
      INSERT INTO ht_projects
            (project_id, project_name, start_date, target_end_date)   values
            (4, 'Public Website Operational', sysdate-60, sysdate+30)
      /
      insert into ht_projects
            (project_id, project_name, start_date, target_end_date)   values
            (5, 'Employee Satisfaction Survey', sysdate-30, sysdate+60)
      /
      
      
    3. 保存」をクリックします。

  5. 「SQLスクリプト」ページで、Load Project Dataのアイコンを選択します。

  6. 実行」をクリックします。

    サマリー・ページが表示されます。

  7. 再度、「実行」をクリックします。

日付を更新してプロジェクトをカレントにする

「Projects」は作成されましたが、プロジェクトをカレントにするには日付を更新する必要があります。これを行うには、別のスクリプトを実行します。

プロジェクトの日付を更新してプロジェクトをカレントにするには、次の手順を実行します。

  1. SQLワークショップ」タブを選択します。

  2. SQLスクリプト」をクリックします。

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

  4. 「スクリプト・エディタ」で、次の手順を実行します。

    1. 「スクリプト名」に、Update Project Datesと入力します。

    2. 「スクリプト」に、次の文をコピーして貼り付けます。

      UPDATE ht_projects
         SET start_date = sysdate-150,
             target_end_date = sysdate-30
       WHERE project_id = 1
      /
      
      UPDATE ht_projects
         SET start_date = sysdate-150,
             target_end_date = sysdate+15
       WHERE project_id = 2
      /
      UPDATE ht_projects
         SET start_date = sysdate-120,
             target_end_date = sysdate-60
       WHERE project_id = 3
      /
      UPDATE ht_projects
         SET start_date = sysdate-60,
             target_end_date = sysdate+30
       WHERE project_id = 4
      /
      UPDATE ht_projects
         SET start_date = sysdate-30,
             target_end_date = sysdate+60
       WHERE project_id = 5
      /
      
      
    3. 保存」をクリックします。

  5. 「SQLスクリプト」ページで、Update Project Datesのアイコンを選択します。

  6. 実行」をクリックします。

    サマリー・ページが表示されます。

  7. 再度、「実行」をクリックします。

「People」データのロード

Projects表にデータをロードした後、「People」データをロードできます。Projects表の外部キーのため、「People」データは「Projects」データの後にロードする必要があります。SQLワークショップでスクリプトを作成および実行して、People表にデータをロードします。

People表にデータをロードするには、次の手順を実行します。

  1. SQLワークショップ」タブを選択します。

  2. SQLスクリプト」をクリックします。

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

  4. 「スクリプト・エディタ」で、次の手順を実行します。

    1. 「スクリプト名」に、Load People Dataと入力します。

    2. 「スクリプト」に、次の文をコピーして貼り付けます。

      INSERT INTO ht_people
           (person_id, person_name, person_email, person_role, assigned_project)
        VALUES
           (1, 'Joe Cerno', 'joe.cerno@mrvl-bademail.com', 'CEO', null)
      /
      INSERT INTO ht_people
           (person_id, person_name, person_email, person_role, assigned_project)
        VALUES
           (2, 'Kim Roberts', 'kim.roberts@mrvl-bademail.com', 'Manager', null)
      /
      INSERT INTO ht_people
           (person_id, person_name, person_email, person_role, assigned_project)
        VALUES
           (3, 'Tom Suess', 'tom.suess@mrvl-bademail.com', 'Manager', null)
      /
      INSERT INTO ht_people
           (person_id, person_name, person_email, person_role, assigned_project)
        VALUES
           (4, 'Al Bines', 'al.bines@mrvl-bademail.com', 'Lead', 1)
      /
      INSERT INTO ht_people
           (person_id, person_name, person_email, person_role, assigned_project)
        VALUES
           (5, 'Carla Downing', 'carla.downing@mrvl-bademail.com', 'Lead', 2)
      /
      INSERT INTO ht_people
           (person_id, person_name, person_email, person_role, assigned_project)
        VALUES
           (6, 'Evan Fanner', 'evan.fanner@mrvl-bademail.com', 'Lead', 3)
      /
      INSERT INTO ht_people
           (person_id, person_name, person_email, person_role, assigned_project)
        values
           (7, 'George Hurst', 'george.hurst@mrvl-bademail.com', 'Lead', 4)
      /
      INSERT INTO ht_people
           (person_id, person_name, person_email, person_role, assigned_project)
      VALUES
           (8, 'Irene Jones', 'irene.jones@mrvl-bademail.com', 'Lead', 5)
      /
      INSERT INTO ht_people
           (person_id, person_name, person_email, person_role, assigned_project)
        VALUES
           (9, 'Karen London', 'karen.london@mrvl-bademail.com', 'Member', 1)
      /
      INSERT INTO ht_people
           (person_id, person_name, person_email, person_role, assigned_project)
         values
           (10, 'Mark Nile', 'mark.nile@mrvl-bademail.com', 'Member', 1)
      /
      INSERT INTO ht_people
           (person_id, person_name, person_email, person_role, assigned_project)
        VALUES
           (11, 'Jane Kerry', 'jane.kerry@mrvl-bademail.com', 'Member', 5)
      /
      INSERT INTO ht_people
           (person_id, person_name, person_email, person_role, assigned_project)
        VALUES
           (12, 'Olive Pope', 'olive.pope@mrvl-bademail.com', 'Member', 2)
      /
      INSERT INTO ht_people
           (person_id, person_name, person_email, person_role, assigned_project)
        VALUES
           (13, 'Russ Sanders', 'russ.sanders@mrvl-bademail.com', 'Member', 3)
      /
      INSERT INTO ht_people
           (person_id, person_name, person_email, person_role, assigned_project)
        VALUES
           (14, 'Tucker Uberton', 'tucker.uberton@mrvl-bademail.com', 'Member', 3)
      /
      INSERT INTO ht_people
            (person_id, person_name, person_email, person_role, assigned_project)
        VALUES
            (15, 'Vicky Williams', 'vicky.willaims@mrvl-bademail.com', 'Member', 4)
      /
      INSERT INTO ht_people
            (person_id, person_name, person_email, person_role, assigned_project)
        VALUES
            (16, 'Scott Tiger', 'scott.tiger@mrvl-bademail.com', 'Member', 4)
      /
      INSERT INTO ht_people
            (person_id, person_name, person_email, person_role, assigned_project)
        VALUES
            (17, 'Yvonne Zeiring', 'yvonee.zeiring@mrvl-bademail.com', 'Member', 4)
      /
      
      
    3. 保存」をクリックします。

  5. 「SQLスクリプト」ページで、Load People Dataのアイコンを選択します。

  6. 実行」をクリックします。

    サマリー・ページが表示されます。

  7. 再度、「実行」をクリックします。

「Issues」データのロード

ロードする必要がある最後のデータは「Issues」データです。「People」データの場合と同様に、Issues表に移入するスクリプトを作成および実行します。

Issues表にデータをロードするには、次の手順を実行します。

  1. SQLワークショップ」タブを選択します。

  2. SQLスクリプト」をクリックします。

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

  4. 「スクリプト・エディタ」で、次の手順を実行します。

    1. 「スクリプト名」に、Load Issue Dataと入力します。

    2. 「スクリプト」に、「問題スクリプトの作成」のスクリプトをコピーして貼り付けます。

    3. 保存」をクリックします。

  5. 「SQLスクリプト」ページで、Load Issue Dataのアイコンを選択します。

  6. 実行」をクリックします。

    サマリー・ページが表示されます。

  7. 再度、「実行」をクリックします。

標準ユーザー・インタフェースの作成

アプリケーションをサポートするオブジェクトを作成し、デモンストレーション・データをロードした後、ユーザー・インタフェースを作成します。この演習では、アプリケーション・ビルダーで「アプリケーションの作成」ウィザードを使用してアプリケーションを作成した後で、「計画およびプロジェクト分析」で説明したデータ管理およびデータ表示機能をサポートするページを作成します。

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

アプリケーションの作成

「アプリケーションの作成」ウィザード使用して、ユーザーがレポートを表示したり、選択した表のデータをスキーマ内に作成することができるページを含むアプリケーションを作成できます。また、先にアプリケーションを作成し、その後、ページを追加することもできます。概要ページのカスタマイズがアプリケーション要件に含まれているため、この演習では、後者の方法を使用します。

アプリケーションを手動で作成するには、次の手順を実行します。

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

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

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

  4. 「方法」で、「アプリケーションの作成」を選択します。

  5. 「名前」で、次の手順を実行します。

    1. 「名前」に、Issue Trackerと入力します。

    2. 「アプリケーションの作成」で、「最初から」を選択します。

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

  6. 次の手順で空白ページを追加します。

    1. 「ページ・タイプの選択」で、「空白」を選択します。

    2. ページの追加」をクリックします。

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

  7. 「タブ」で、「タブなし」を選択して「次へ」をクリックします。

  8. 「共有コンポーネント」で、デフォルトを受け入れて「次へ」をクリックします。

  9. 「属性」で、「認証スキーム」、「言語」、「ユーザー言語プリファレンスの派生元」にデフォルトを受け入れて、「次へ」をクリックします。

  10. 「ユーザー・インタフェース」で、「テーマ10」を選択して「次へ」をクリックします。

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

アプリケーションを表示するには、次の手順を実行します。

  1. 「アプリケーション」ホームページの「アプリケーションの実行」アイコンをクリックします。

  2. プロンプトが表示されたら、作業領域のユーザー名およびパスワードを入力して、「ログイン」をクリックします。

    この認証は、新しく作成したアプリケーションのデフォルトのセキュリティの一部です。図10-1に示すとおり、ホームページが表示されます。

    図10-1 問題追跡アプリケーションのホームページ

    iss_home1.gifの説明が続きます。
    iss_home1.gifの説明

    ページにコンテンツはありませんが、「アプリケーションの作成」ウィザードによって次のアイテムが作成されていることに注意してください。

    • ナビゲーション・リンク: ページの右上にナビゲーション・バー・エントリが表示されます。「ログアウト」によって、ユーザーはアプリケーションからログアウトできます。

    • 開発者リンク: ページの下部に「開発者」ツールバーが表示されます。これらのリンクは、開発者としてログインした場合にのみ表示されます。アプリケーションの実行権限のみを持つ通常のユーザーには、これらのリンクは表示されません。次に、「開発者」ツールバーのリンクを左から順に示します。

      • アプリケーションを編集: アプリケーション・ビルダーのホームページにリンクしてアプリケーションを編集します。

      • ページを編集1: 現在実行中のページを編集します。このリンクによって、カレント・ページのページ定義が表示されます。

      • 作成: カレント・ページに新しいコンポーネントを追加します。

      • セッション: カレント・ページのセッションの詳細を含む新しいページを開きます。

      • デバッグ: カレント・ページをデバッグ・モードで表示します。

      • 編集リンクを表示: ページで編集可能な各オブジェクトの横に編集リンクが表示されます。各編集リンクは2つのコロン(::)に似ていて、ナビゲーション・バー・アイテム、タブ、リージョン・タイトル、ボタンおよびアイテムの右に表示されます。編集リンクをクリックすると、オブジェクトを編集するための別のウィンドウが表示されます。

  3. 「開発者」ツールバーの「アプリケーションを編集」をクリックして、アプリケーション・ビルダーのホームページに戻ります。「アプリケーションの作成」ウィザードによって「ログイン」ページも作成されていることに注意してください。

基本的なアプリケーション構造を作成した後、個々のページを作成します。

プロジェクトを管理するためのページの追加

まず、ユーザーがデータを表示したり、データを表に追加できるページを作成する必要があります。 これを行うには、「レポート付きの表のフォーム」ウィザードを使用します。このウィザードを使用して、HT_PROJECTSで始まる各表にレポート・ページおよびメンテナンス・ページを作成します。

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

プロジェクトを管理するためのページの作成

HT_PROJECTS表を管理するためのページを作成するには、次の手順を実行します。

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

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

  3. レポート付きの表のフォーム」を選択して「次へ」をクリックします。

  4. 「表/ビューの所有者」で、適切なスキーマを選択して「次へ」をクリックします。

  5. 「表/ビューの名前」で、HT_PROJECTSを選択して「次へ」をクリックします。

  6. 「レポート・ページの定義」で、次の手順を実行します。

    1. 「ページ」に、2と入力します。

    2. 「ページ名」および「リージョン・タイトル」に、Projectsと入力します。

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

  7. 「タブ・オプション」で、デフォルトの選択肢「タブを使用しない」を受け入れて「次へ」をクリックします。

  8. 「列を選択」で、PROJECT_ID以外のすべての列を選択して「次へ」をクリックします。

    プロジェクト名は一意で、プロジェクトを識別します。外部キーを簡略化し、カスケード更新を有効にするためにIDが追加されています。

  9. リンク・イメージの編集」で、3番目のオプション(白地に青字の「EDIT」)を選択して「次へ」をクリックします。

  10. 「フォーム・ページの定義」で、次の手順を実行します。

    1. 「ページ」に、3と入力します。

    2. 「ページ名」および「リージョン・タイトル」に、Create/Edit Projectと入力します。

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

  11. 「タブ・オプション」で、デフォルトの「タブを使用しない」を受け入れ、「次へ」をクリックします。

  12. 「主キー」で、デフォルトのPROJECT_IDを受け入れて「次へ」をクリックします。

  13. 「ソース・タイプ」で、デフォルトの「既存のトリガー」を受け入れて「次へ」をクリックします。

  14. 「列を選択」で、すべての列を選択して「次へ」をクリックします。

  15. 「プロセス・オプションを指定」で、「挿入」、「更新」および「削除」のデフォルト値を受け入れて「次へ」をクリックします。

  16. 選択内容を確認して、「終了」をクリックします。

ページのプレビューを表示するには、「ページの実行」をクリックします。図10-2に示すとおり、新しく作成されたレポートにデモ・データが表示されます。

図10-2 「Projects」ページ

iss_project1.gifの説明が続きます。
iss_project1.gifの説明

EDIT」アイコンをクリックして既存の行を表示するか、または「作成」ボタンをクリックして新しいレコードを作成します。「Employee Satisfaction Survey」の左にある「EDIT」アイコンをクリックすると、図10-3が表示されます。

図10-3 「Create/Edit Project」フォーム

iss_projedit1.gifの説明が続きます。
iss_projedit1.gifの説明

「Projects」レポート・ページの外観の調整

書式マスクを日付に追加して、「Projects」レポート・ページの外観を変更できます。

「Create/Edit Project」ページで書式マスクを日付に追加するには、次の手順を実行します。

  1. ページ2(「Projects」)のページ定義にナビゲートします。 「開発者」ツールバーから「ページ2の編集」を選択します。

  2. 「リージョン」で、Projectsの横にある「レポート」をクリックします。

  3. START_DATEの書式を編集するには、次の手順を実行します。

    1. START_DATEの左にある「編集」アイコンをクリックします。

      「列属性」ページが表示されます。

    2. 「数値/日付書式」に、DD-MON-YYYYと入力します。

  4. TARGET_END_DATEの書式を編集するには、次の手順を実行します。

    1. ページの上部にある「次へ」ボタン(>)をクリックして、次のレポート・アイテムにナビゲートします。

      「列属性」ページが表示されます。

    2. 「数値/日付書式」に、DD-MON-YYYYと入力します。

  5. ACTUAL_END_DATEの書式を編集するには、次の手順を実行します。

    1. ページの上部にある「次へ」ボタン(>)をクリックして、次のレポート・アイテムにナビゲートします。

      「列属性」ページが表示されます。

    2. 「数値/日付書式」に、DD-MON-YYYYと入力します。

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

    「レポート属性」ページが表示されます。

  7. PROJECT_IDのヘッダー「編集」を削除します。

  8. START_DATE、TARGET_END_DATEおよびACTUAL_END_DATE列の「列の位置合せ」および「ヘッダーの位置合せ」で、「中央」を選択します。

  9. 列ヘッダーのソートを有効にするには、PROJECT_ID以外のすべての列で、「ソート」を選択します。

  10. PROJECT_NAMEの「ソート順序」で、「1」を選択します。

    これを選択すると、PROJECT_NAMEがデフォルトのソート基準列として指定されます。この機能は、ユーザーの選択によって変更される場合があります。

  11. 「ソート」までスクロールします。「昇順イメージ」および「降順イメージ」で、グレーの矢印を選択します。

  12. 「メッセージ」で、「データが見つからなかった場合のメッセージ」に次のように入力します。

    No Projects found.
    
    
  13. 変更の適用」をクリックします。

行った変更を表示するには、ページの右上にある「実行」アイコンをクリックします。図10-4に示すとおり、「Project Name」列にソート制御が追加されていること、および「Start Date」および「Target End Date」列の日付書式に注意してください。

図10-4 ソート制御が表示された「Projects」ページ

iss_project2.gifの説明が続きます。
iss_project2.gifの説明

「Create/Edit Project」ページの調整

次に、「Create/Edit Project」ページをカスタマイズして、「Project Name」フィールドの拡大、日付フィールドの縮小、日付ピッカー・タイプの変更、日付書式マスクの追加、および目標とする終了日および実際の終了日が開始日の後であるかどうかを確認する検証の追加を行います。

「Project Name」フィールドを拡大し、日付フィールドを縮小するには、次の手順を実行します。

  1. ページ3(「Create/Edit Project」)のページ定義にナビゲートします。

    1. 「開発者」ツールバーで、「アプリケーションを編集」を選択します。

    2. Create/Edit Project」を選択します。

  2. 「アイテム」で、「アイテム」ヘッダーを選択します。

  3. 右にスクロールし、「」列を設定するには、次の手順を実行します。

    1. 「Project Name」に、60と入力します。

    2. 「Start Date」に、12と入力します。

    3. 「Target End Date」に、12と入力します。

    4. 「Target End Date」に、12と入力します。

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

  4. ページの右上にある「ページの編集」アイコンをクリックしてページ定義に戻ります。

日付ピッカーのタイプを変更して日付書式マスクを追加するには、次の手順を実行します。

  1. アイテムP3_START_DATEを編集します。

    1. 「アイテム」で、「P3_START_DATE」を選択します。

    2. 「指定」で、「表示形式」に「日付ピッカー(DD-MON-YYYY)」を選択します。

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

    アイテムP3_TARGET_END_DATEを編集します。

    1. 「アイテム」で、「P3_TARGET_END_DATE」を選択します。

    2. 「指定」で、「表示形式」に「日付ピッカー(DD-MON-YYYY)」を選択します。

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

    アイテムP3_ACTUAL_END_DATEを編集します。

    1. 「アイテム」で、「P3_ACTUAL_END_DATE」を選択します。

    2. 「指定」で、「表示形式」に「日付ピッカー(DD-MON-YYYY)」を選択します。

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

目標とする終了日および実際の終了日が開始日の後であるかどうかを確認する検証を追加するには、次の手順を実行します。

  1. 「検証」セクションで、「作成」アイコンをクリックします。

  2. 「検証レベルを指定」で、デフォルトの「アイテム・レベルの検証」を受け入れて「次へ」をクリックします。

  3. 「アイテム」で、「Create/Edit Project: 40. P3_TARGET_END_DATE (Target End Date)」を選択して「次へ」をクリックします。

  4. 「検証方法を選択」で、「PL/SQL」を選択して「次へ」をクリックします。

  5. 作成する検証タイプを指定します。 デフォルトの「PL/SQL式」を受け入れて、「次へ」をクリックします。

  6. 「検証名」で、TARGET_AFTER_STARTと入力して「次へ」をクリックします。

  7. 「検証およびエラー・メッセージを指定」で、次の手順を実行します。

    1. 「検証」に、次のように入力します。

      to_date(:P3_ACTUAL_END_DATE,'DD-MON-YYYY') >= to_date(:P3_START_DATE,'DD-MON-YYYY')
      
      
    2. 「エラー・メッセージ」に、次のように入力します。

      Actual End Date must be same or after Start Date.
      
      
    3. 次へ」をクリックします。

  8. 「条件」で、次の手順を実行します。

    1. 条件タイプ」で、ショートカット・リンク「[アイテムがNOT NULL]」を選択します。

      このショートカット・リンクを選択すると、「条件タイプ」リストから「式1のアイテムの値がNOT NULL」が選択されます。

    2. 「式1」に、次のように入力します。

      P3_ACTUAL_END_DATE.
      
      

      これを選択すると、ユーザーが実際の終了日を入力した場合にのみこの検証が実行されます。

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

行った変更を表示するには、ページの右上にある「ページの実行」アイコンをクリックします。(図10-5を参照。)

図10-5 変更された「Create/Edit Project」

iss_projedit2.gifの説明が続きます。
iss_projedit2.gifの説明

ユーザーを追跡するためのページの追加

最初の「Projects」ページの作成が完了した後で、ユーザーを管理するためのページを作成します。

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

ユーザーを管理するためのページの作成

HT_PEOPLE表を管理するためのページを作成するには、次の手順を実行します。

  1. 「アプリケーション」のホームページに戻ります。

  2. ページの作成」をクリックします。

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

  4. レポート付きの表のフォーム」を選択して「次へ」をクリックします。

  5. 「表/ビューの所有者」で、適切なスキーマを選択して「次へ」をクリックします。

  6. 「表/ビューの名前」で、HT_PEOPLEを選択して「次へ」をクリックします。

  7. 「レポート・ページの作成」で、次の手順を実行します。

    1. 「ページ」に、4と入力します。

    2. 「ページ名」および「リージョン・タイトル」に、Peopleと入力します。

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

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

  9. 列を選択」で、PERSON_ID以外のすべての列を選択して「次へ」をクリックします。

  10. リンク・イメージを編集」で、3番目のオプション(白地に青字の「EDIT」)を選択して「次へ」をクリックします。

  11. 「フォーム・ページの定義」で、次の手順を実行します。

    1. 「ページ」に、5と入力します。

    2. 「ページ名」および「リージョン・タイトル」に、Create/Edit Person. Informationと入力します。

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

  12. 「タブ・オプション」で、デフォルトの「タブを使用しない」を受け入れ、「次へ」をクリックします。

  13. 「主キー」で、デフォルトの「PERSON_ID」を受け入れて「次へ」をクリックします。

  14. 主キー列のソースを指定します。 デフォルトの「既存のトリガー」を受け入れ、「次へ」をクリックします。

  15. 「列を選択」で、すべての列を選択して「次へ」をクリックします。

  16. 「挿入」、「更新」および「削除」で、デフォルト値を受け入れて「次へ」をクリックします。

  17. 選択内容を確認して、「終了」をクリックします。

ページのプレビューを表示するには、「ページの実行」を選択します。図10-6に示すとおり、新しく作成されたレポートにデモ・データが表示されます。

図10-6 「People」ページ

iss_people1.gifの説明が続きます。
iss_people1.gifの説明

ユーザーを追加または編集するためのページのプレビューを表示するには、左端の列の「EDIT」ボタンをクリックします。

「People」レポート・ページの変更

次に、Projects表への結合が含まれ、ヘッダーが変更されるように問合せを変更して、「People」レポート・ページを変更します。

Projects表への結合が含まれるように問合せを変更するには、次の手順を実行します。

  1. ページ4(「People」)のページ定義にナビゲートします。

  2. 「リージョン」で、「People」を選択します。

  3. 「ソース」までスクロールします。

  4. 「リージョン・ソース」に、次のように入力します。

    SELECT a."PERSON_ID",
           a."PERSON_NAME",
           a."PERSON_EMAIL",
           a."PERSON_ROLE",
           b."PROJECT_NAME"
       FROM "#OWNER#"."HT_PEOPLE" a,
            "#OWNER#"."HT_PROJECTS" b
     WHERE a.assigned_project = b.project_id (+)
    
    

    プロジェクトの割当てはオプションであるため、外部結合が必要であることに注意してください。

  5. 「レポート属性」タブを選択します。

    1. PERSON_IDのヘッダー「編集」を削除します。

    2. PERSON_NAMEのヘッダーをNameに変更します。

    3. PERSON_EMAILのヘッダーをEmailに変更します。

    4. PERSON_ROLEのヘッダーをRoleに変更します。

    5. PROJECT_NAMEのヘッダーをAssigned Projectに変更して、「ヘッダーの位置合せ」で「」を選択します。

  6. PERSON_ID以外のすべての列で「ソート」を選択して、列ヘッダーのソートを有効にします。

  7. PERSON_NAMEの「ソート順序」で、「1」を選択します。

    これを選択すると、PERSON_NAMEがデフォルトのソート基準列として指定されます。 この機能は、ユーザーの選択によって変更される場合があります。

  8. 「ソート」までスクロールします。「昇順イメージ」および「降順イメージ」で、グレーの矢印を選択します。

  9. 「メッセージ」で、「データが見つからなかった場合のメッセージ」に次のように入力します。

    No people found.
    
    
  10. 変更の適用」をクリックします。

行った変更を表示するには、ページの右上にある「ページの実行」アイコンをクリックします。図10-7に示すとおり、「名前」列にソート制御が追加されていることに注意してください。

図10-7 修正した「People」ページ

iss_people2.gifの説明が続きます。
iss_people2.gifの説明

「Create/Edit People」ページの調整

次に、LOVを追加して「Create/Edit People」ページをカスタマイズし、ユーザーが「Role」または「Assigned Project」を簡単に選択できるようにします。

LOVの追加

「Projects」のLOVを追加するには、次の手順を実行します。

  1. ページ5(「Create/Edit Person」)のページ定義にナビゲートします。

  2. 「共有コンポーネント」で、「LOV」を検索して「作成」アイコンをクリックします。

  3. 「LOVを作成」で、デフォルトの「最初から」を受け入れて「次へ」をクリックします。

  4. 「名前およびタイプ」で、次の手順を実行します。

    1. 「名前」に、PROJECTSと入力します。

    2. 「タイプ」で、「動的」を選択します。

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

  5. 「問合せ」に、次のように入力します。

    SELECT project_name d, project_id v
      FROM ht_projects
     ORDER BY d
    
    
  6. LOVの作成」をクリックします。

「Roles」のLOVを追加するには、次の手順を実行します。

  1. 「共有コンポーネント」で、「LOV」を検索して「作成」アイコンをクリックします。

  2. 「LOVを作成」で、デフォルトの「最初から」を受け入れて「次へ」をクリックします。

  3. 「名前およびタイプ」で、次の手順を実行します。

    1. 「名前」に、ROLESと入力します。

    2. 「タイプ」で、「静的」を選択します。

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

  4. 表10-4に示す表示値と戻り値の組合せを入力します。

    表10-4 表示値と戻り値の組合せ

    表示値 戻り値
    CEO CEO
    Manager Manager
    Lead Lead
    Member Member

  5. LOVの作成」をクリックします。

  6. ページ5のページ定義に戻ります。右上にある「ページの編集」アイコンをクリックします。

表示属性の編集

P5_PERSON_ROLEの表示属性を編集するには、次の手順を実行します。

  1. 「アイテム」で、「P5_PERSON_ROLE」を選択します。

  2. 「名前」で、「表示形式」リストから「ラジオ・グループ」を選択します。

  3. 「ラベル」までスクロールします。

  4. 「ラベル」を編集し、Roleにします。

  5. 「要素」で、「フォーム要素オプション属性」に次のように入力します。

    class="instructiontext"
    
    

    これによって、各ラジオ・グループ・オプションに関連付けられたテキストがページの他のアイテムと同じサイズになるように指定されます。

  6. 「LOV」までスクロールします。

  7. 「名前付きLOV」リストから「ROLES」を選択します。

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

P5_ASSIGNED_PROJECTの表示属性を編集するには、次の手順を実行します。

  1. 「アイテム」で、「P5_ASSIGNED_PROJECT」を選択します。

  2. 「名前」で、「表示形式」リストから「選択リスト」を選択します。

  3. 「LOV」までスクロールします。

  4. 「LOV」で、次の手順を実行します。

    1. 「名前付きLOV」リストから「PROJECTS」を選択します。

      次に、基礎となる列が必須とならないように指定します。

    2. 「NULL表示値」に、次のように入力します。

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

フィールドおよびフィールド・ラベルの表示を変更するには、次の手順を実行します。

  1. ヘッダー「アイテム」をクリックします。

  2. 「P5_PERSON_NAME」で、次の手順を実行します。

    1. 「プロンプト」に、Nameと入力します。

    2. 「幅」に、60と入力します。

  3. 「P5_PERSON_EMAIL」で、次の手順を実行します。

    1. 「プロンプト」に、Email Addressと入力します。

    2. 「幅」に、60と入力します。

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

  5. 右上にある「ページの編集」アイコンをクリックして、ページ5のページ定義に戻ります。

検証の作成

ウィザードによって、「Name」、「Email」および「Role」のNOT NULL検証が作成されました。リーダーおよびメンバーにプロジェクトが割り当てられ、CEOおよびマネージャには割り当てられないようにするには、別の検証を手動で作成する必要があります。 通常は、高速の組込み検証タイプを使用することをお薦めします。ただし、この複合タイプの検証では、PL/SQL検証を作成します。

適切なユーザーがプロジェクトに割り当てられていることを確認する検証を追加するには、次の手順を実行します。

  1. 「検証」セクションで、「作成」アイコンをクリックします。

  2. 「検証タイプを指定」で、デフォルトの「アイテム・レベルの検証」を受け入れて「次へ」をクリックします。

  3. 「アイテム」で、「Create/Edit Person Information: 50. P5_ASSIGNED_PROJECT (Assigned Project)」を選択して「次へ」をクリックします。

  4. 「検証方法」で、「PL/SQL」を選択して「次へ」をクリックします。

  5. 作成するPL/SQLの検証タイプを指定します。 デフォルトの「PL/SQL式」を受け入れて、「次へ」をクリックします。

  6. 「検証名」で、PROJECT_MAND_FOR_LEADER_AND_MEMBERと入力して「次へ」をクリックします。

  7. 「検証およびエラー・メッセージを指定」で、次の手順を実行します。

    1. 「検証」に、次のように入力します。

      (:P5_PERSON_ROLE IN ('CEO','Manager') AND
      :P5_ASSIGNED_PROJECT = '%'||'null%') OR
      (:P5_PERSON_ROLE IN ('Lead','Member') AND
      :P5_ASSIGNED_PROJECT != '%'||'null%')
      
      

      Oracle HTML DBでは、NULLは%null%として渡されます。また、データの処理時に%null%はNULLに置換されるため、検証にデータを保存するには、文字列が認識および置換されないように分割する必要があります。

    2. 「エラー・メッセージ」に、次のように入力します。

      Leads and Members must have an Assigned Project. CEO and Managers cannot have an Assigned Project.
      
      
    3. 次へ」をクリックします。

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

行った変更を表示するには、ページの右上にある「ページの実行」アイコンをクリックします。(図10-8を参照。)

図10-8 修正した「Create/Edit Person Information」フォーム

iss_peoedit1.gifの説明が続きます。
iss_peoedit1.gifの説明

レコードをいくつか入力して検証をテストします。プロジェクトを指定してCEOを入力し、次に、プロジェクトを指定せずにリーダーを入力します。いずれの場合も失敗し、定義したエラー・メッセージが表示されます。

問題を追跡するためのページの追加

最後に、HT_ISSUES用のページを作成する必要があります。このアプリケーションには、「Issues」の複数のビューが必要です。 これらのビューは、1つの複雑なレポートして作成するか、または別々のレポートとして作成することができます。この演習では、複雑なレポートを作成します。このレポートには、「Issues」メンテナンス・フォームが含まれます。このメンテナンス・フォームを複数の場所にリンク付けします。最終的に、問題を発見したユーザー、プロジェクト、割り当てられたユーザー、ステータスまたは優先順位ごとの問題が「Issues」レポートに表示されます。

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

HT_ISSUESのレポートの作成

HT_ISSUESを管理するためのレポートを作成するには、次の手順を実行します。

  1. 「アプリケーション」のホームページに戻ります。

  2. ページの作成」をクリックします。

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

  4. レポート付きの表のフォーム」を選択して「次へ」をクリックします。

  5. 「表/ビューの所有者」で、適切なスキーマを選択して「次へ」をクリックします。

  6. 「表/ビューの名前」で、「HT_ISSUES」を選択して「次へ」をクリックします。

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

    1. 「ページ」に、6と入力します。

    2. 「ページ名」および「リージョン・タイトル」に、Issuesと入力します。

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

  8. 「タブ・オプション」で、デフォルトの「タブを使用しない」を受け入れ、「次へ」をクリックします。

  9. 列を選択」で、次の列を選択して「次へ」をクリックします。

    • ISSUE_SUMMARY

    • IDENTIFIED_BY

    • RELATED_PROJECT

    • ASSIGNED_TO

    • STATUS

    • PRIORITY

    • TARGET_RESOLUTION_DATE

    • ACTUAL_RESOLUTION_DATE

  10. リンク・イメージを編集」で、3番目のオプション(白地に青字の「EDIT」)を選択して「次へ」をクリックします。

  11. 「フォーム・ページの定義」で、次の手順を実行します。

    1. 「ページ」に、7と入力します。

    2. 「ページ名」および「リージョン・タイトル」に、Create/Edit Issuesと入力します。

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

  12. 「タブ・オプション」で、デフォルトの「タブを使用しない」を受け入れ、「次へ」をクリックします。

  13. 「主キー」で、デフォルトの「ISSUE_ID」を受け入れて「次へ」をクリックします。

  14. 「列を選択」で、すべての列を選択して「次へ」をクリックします。

  15. 「挿入」、「更新」および「削除」で、デフォルト値「はい」を受け入れて「次へ」をクリックします。

  16. 選択内容を確認して、「終了」をクリックします。

「Create/Edit Issues」ページの調整

「Create/Edit Issues」ページを調整する場合は、次の操作を行います。

  • ユーザーが外部キー列を簡単に選択するためのLOVの追加

  • アイテムの編成およびクリーンアップ

  • 「監査」列の表示の変更

  • データ・エントリを高速にするためのボタンの追加

LOVの追加

次に、「Status」、「Priorities」および「People」のLOVを追加する必要があります。

「Status」のLOVを追加するには、次の手順を実行します。

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

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

  3. 「LOVを作成」で、デフォルトの「最初から」を受け入れて「次へ」をクリックします。

  4. 「LOVを作成」で、次の手順を実行します。

    1. 「名前」に、STATUSと入力します。

    2. 「タイプ」で、「静的」を選択します。

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

  5. 表10-5に示す表示値と戻り値の組合せを入力します。

    表10-5 表示値と戻り値の組合せ

    表示値 戻り値
    Open Open
    On-Hold On-Hold
    Closed Closed

  6. LOVの作成」をクリックします。

「Priorities」のLOVを追加するには、次の手順を実行します。

  1. ページ7のページ定義に戻ります。右上にある「ページの編集」アイコンをクリックします。

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

  3. 「LOVを作成」で、デフォルトの「最初から」を受け入れて「次へ」をクリックします。

  4. 「LOVを作成」で、次の手順を実行します。

    1. 「名前」に、PRIORITIESと入力します。

    2. 「タイプ」で、「静的」を選択して「次へ」をクリックします。

  5. 表10-6に示す表示値と戻り値の組合せを入力します。

    表10-6 表示値と戻り値の組合せ

    表示値 戻り値
    High High
    Medium Medium
    Low Low

  6. LOVの作成」をクリックします。

「People」のLOVを追加するには、次の手順を実行します。

  1. ページ7のページ定義に戻ります。右上にある「ページの編集」アイコンをクリックします。

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

  3. 「LOVを作成」で、デフォルトの「最初から」を受け入れて「次へ」をクリックします。

  4. 「LOVを作成」で、次の手順を実行します。

    1. 「名前」に、PEOPLEと入力します。

    2. 「タイプ」で、「動的」を選択して「次へ」をクリックします。

  5. 「問合せ」に、次のように入力します。

    SELECT person_name d, person_id v
       FROM ht_people
     ORDER BY 1
    
    
  6. LOVの作成」をクリックします。

特定のアイテムの編集

次に、個々のアイテムを編集します。

P7_IDENTIFIED_BYを編集するには、次の手順を実行します。

  1. ページ7のページ定義に戻ります。右上にある「ページの編集」アイコンをクリックします。

  2. 「アイテム」で、「P7_IDENTIFIED_BY」を選択します。

  3. 「名前」で、「表示形式」リストから「選択リスト」を選択します。

  4. 「LOV」までスクロールします。

    1. 「名前付きLOV」で、「PEOPLE」を選択します。

    2. 「NULLを表示」で、「はい」を選択します。ベース列は必須ですが、リストの最初の名前がデフォルトの値にならないようにする必要があります。

    3. 「NULL表示値」に、次のように入力します。

       - Select Person -
      
      
  5. ページの上部にある「次へ」ボタン(>)をクリックして、次のアイテムにナビゲートします。

P7_IDENTIFIED_DATEを編集するには、次の手順を実行します。

  1. P7_IDENTIFIED_DATEにナビゲートします。

  2. 「名前」で、「表示形式」リストから「日付ピッカー(DD-MON-YYYY)」を選択します。

  3. 「デフォルト」までスクロールして、次の手順を実行します。

    1. 「デフォルト値」に、次のように入力します。

      to_char(sysdate,'DD-MON-YYYY')
      
      
    2. 「デフォルト値のタイプ」で、「PL/SQL式」を選択します。

  4. ページの上部にある「次へ」ボタン(>)をクリックして、次のアイテムにナビゲートします。

P7_RELATED_PROJECTを編集するには、次の手順を実行します。

  1. P7_RELATED_PROJECTにナビゲートします。

  2. 「指定」で、「表示形式」リストから「選択リスト」を選択します。

  3. 「LOV」までスクロールします。

    1. 「名前付きLOV」で、「PEOPLE」を選択します。

    2. 「NULLを表示」で、「はい」を選択します。

    3. 「NULL表示値」に、次のように入力します。

       - Select Person -
      
      
  4. ページの上部にある「次へ」ボタン(>)をクリックして、P7_STATUSにナビゲートします。

P7_STATUSを編集するには、次の手順を実行します。

  1. P7_STATUSにナビゲートします。

  2. 「指定」で、「表示形式」リストから「ラジオ・グループ」を選択します。

  3. 「ラベル」に、次のように入力します。

    Status:
    
    
  4. 「要素」までスクロールします。 「フォーム要素オプション属性」に、次のように入力します。

    class="instructiontext"
    
    
  5. 「デフォルト」までスクロールします。 「デフォルト値」に、Openと入力します。

  6. 「LOV」までスクロールします。

    1. 「名前付きLOV」で、「STATUS」を選択します。

    2. 「列」に、3と入力します。

      これを選択すると、3つの有効な値を横に並べて表示することができます。

  7. ページの上部にある「次へ」ボタン(>)をクリックして、P7_PRIORITYにナビゲートします。

P7_PRIORITYを編集するには、次の手順を実行します。

  1. P7_PRIORITYにナビゲートします。

  2. 「名前」で、「表示形式」リストから「ラジオ・グループ」を選択します。

  3. 「ラベル」に、次のように入力します。

    Priority:
    
    
  4. 「要素」までスクロールします。 「フォーム要素オプション属性」に、次のように入力します。

    class="instructiontext"
    
    
  5. 「デフォルト」までスクロールします。 「デフォルト値」に、Openと入力します。

  6. 「LOV」までスクロールします。

    1. 「名前付きLOV」で、「PRIORITIES」を選択します。

    2. 「NULLを表示」で、「はい」を選択します。

    3. 「列」に、4と入力します。

      この選択は、3つの有効な値とNULL値が存在しているということを反映しています。

    4. 「NULL表示値」に、Noneと入力します。

  7. ページの上部にある「次へ」ボタン(>)をクリックして、次のアイテムにナビゲートします。

P7_TARGET_RESOLUTION_DATEを編集するには、次の手順を実行します。

  1. P7_TARGET_RESOLUTION_DATEにナビゲートします。

  2. 「名前」で、「表示形式」リストから「日付ピッカー(DD-MON-YYYY)」を選択します。

  3. ページの上部にある「次へ」ボタン(>)をクリックして、P7_ACTUAL_RESOLUTION_DATEにナビゲートします。

次の手順を実行して、P7_ACTUAL_RESOLUTION_DATEを編集します。

  1. P7_ACTUAL_RESOLUTION_DATEにナビゲートします。

  2. 「名前」で、「表示形式」リストから「日付ピッカー(DD-MON-YYYY)」を選択します。

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

アイテムをグループ化するためのリージョンの作成

現在、すべてのアイテムが1つの大きいリージョンにグループ化されています。論理グループにアイテムを表示すると、ユーザーはデータ・エントリを簡単に行うことができます。次に、「Buttons」、「Identification」、「Progress」、「Resolution」および「Audit Information」という5つの新しいリージョンを作成します。

新しいリージョンを作成してアイテムをグループ化するには、次の手順を実行します。

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

  2. 複数のHTML」を選択します。

  3. 最初の行では、次の操作を行います。

    • 「順序」に、5と入力します。

    • 「タイトル」に、Buttonsと入力します。

    • 「テンプレート」で、「タイトルなしのボタン・リージョン」を選択します。

  4. 2番目の行では、「タイトル」にProgressと入力します。

  5. 3番目の行では、「タイトル」にResolutionと入力します。

  6. 4番目の行では、「タイトル」にAudit Informationと入力します。

  7. リージョンを作成」をクリックします。

新しいリージョンの作成後、最初のリージョン「Create/Edit Issues」の名前を変更します。

  1. 「リージョン」で、「Create/Edit Issues」をクリックします。

  2. タイトル」に、次のように入力します。

    Issue Identification
    
    
  3. 変更の適用」をクリックします。

適切なリージョンへのアイテムの移動

次に、各アイテムを適切なリージョンに移動します。一部のアイテムの幅を変更する必要もあります。

アイテムを適切なリージョンに移動するには、次の手順を実行します。

  1. 「アイテム」で、「アイテム」ヘッダーを選択します。

  2. 「リージョン」で、次のアイテムの「Progress」を選択します。

    • P7_ASSIGNED_TO

    • P7_STATUS

    • P7_PRIORITY

    • P7_TARGET_RESOLUTION_DATE

    • P7_PROGRESS

  3. 「リージョン」で、次のアイテムの「Resolution」を選択します。

    • P7_ACTUAL_RESOLUTION_DATE

    • P7_RESOLUTION_SUMMARY

  4. 「リージョン」で、次のアイテムの「Audit Information」を選択します。

    • P7_CREATED_DATE

    • P7_CREATED_BY

    • P7_LAST_MODIFIED_DATE

    • P7_LAST_MODIFIED_BY

  5. P7_ISSUE_SUMMARYの「幅」に、60と入力します。

  6. P7_IDENTIFIED_DATEの「幅」に、12と入力します。

  7. P7_TARGET_RESOLUTION_DATEの「幅」に、12と入力します。

  8. P7_ACTUAL_RESOLUTION_DATEの「幅」に、12と入力します。

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

  10. 右上にある「ページの編集」アイコンをクリックして、ページ7のページ定義に戻ります。

ボタンを「Buttons」リージョンに移動するには、次の手順を実行します。

  1. ページ7のページ定義に戻ります。

  2. 「ボタン」セクションで、「ボタン」ヘッダーをクリックします。

  3. すべてのボタンの「リージョン」で、「Buttons」を選択します。

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

  5. 右上にある「ページの編集」アイコンをクリックして、ページ7のページ定義に戻ります。

「監査」列の表示の変更

「監査」列は、表示可能かつ編集不可にする必要があるため、表示専用にします。次の演習では、「Audit Information」リージョンの条件を作成します。結果として、「Audit Information」リージョンは、ユーザーが既存の問題を編集する場合は表示されますが、新しい問題を作成する場合は表示されなくなります。

「Audit Information」リージョンの条件を作成するには、次の手順を実行します。

  1. ページ7のページ定義で、「Audit Information」リージョンを選択します。

  2. 「条件付き表示」までスクロールします。

  3. 「条件タイプ」で、「式1のアイテムの値がNULL」を選択します。

  4. 「式1」に、P7_ISSUE_IDと入力します。

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

次に、「監査」列を表示専用に変更します。

P7_CREATED_DATEを編集するには、次の手順を実行します。

  1. 「アイテム」で、「P7_CREATED_DATE」を選択します。

  2. 「名前」で、「表示形式」リストから「テキストとして表示(状態を保存する)」を選択します。

  3. 「ラベル」までスクロールして、次の手順を実行します。

    1. 「ラベル」に、次のように入力します。

      Created Date:
      
      
    2. 「テンプレート」で、「ヘルプ付きのオプションのラベル」を選択します。

    3. 「HTML表のセル属性」に、次のように入力します。

      class="instructiontext"
      
      
  4. 「ソース」で、「書式マスク」に次のように入力します。

    DD-MON-YYYY
    
    
  5. ページの上部にある「次へ」ボタン(>)をクリックして、次のアイテムにナビゲートします。

P7_CREATED_BYを編集するには、次の手順を実行します。

  1. 「名前」で、「表示形式」リストから「テキストとして表示(状態を保存する)」を選択します。

  2. 「ラベル」までスクロールして、次の手順を実行します。

    1. 「ラベル」に、次のように入力します。

      Created By:
      
      
    2. 「テンプレート」で、「ヘルプ付きのオプションのラベル」を選択します。

    3. 「HTML表のセル属性」に、次のように入力します。

      class="instructiontext"
      
      
  3. ページの上部にある「次へ」ボタン(>)をクリックして、次のアイテムにナビゲートします。

P7_LAST_MODIFIED_DATEを編集するには、次の手順を実行します。

  1. 「名前」で、「表示形式」リストから「テキストとして表示(状態を保存する)」を選択します。

  2. 「ラベル」までスクロールして、次の手順を実行します。

    1. 「ラベル」に、次のように入力します。

      Last Modified Date:
      
      
    2. 「テンプレート」で、「ヘルプ付きのオプションのラベル」を選択します。

    3. 「HTML表のセル属性」に、次のように入力します。

      class="instructiontext"
      
      
  3. 「ソース」で、「書式マスク」に次のように入力します。

    DD-MON-YYYY
    
    
  4. ページの上部にある「次へ」ボタン(>)をクリックして、次のアイテムにナビゲートします。

P7_LAST_MODIFIED_BYを編集するには、次の手順を実行します。

  1. 「名前」で、「表示形式」リストから「テキストとして表示(状態を保存する)」を選択します。

  2. 「ラベル」までスクロールして、次の手順を実行します。

    1. 「ラベル」に、次のように入力します。

      Last Modified By:
      
      
    2. 「テンプレート」で、「ヘルプ付きのオプションのラベル」を選択します。

    3. 「HTML表のセル属性」に、次のように入力します。

      class="instructiontext"
      
      
  3. 変更の適用」をクリックします。

不要な検証の削除

ウィザードによって、「Issue Summary」、「Identified By」、「Related Project」、「Status」、「Created Date」および「Created By」のNOT NULL検証が作成されています。「監査」列はトリガーによって設定されるため、これらの検証を削除する必要があります。

NOT NULL検証を削除するには、次の手順を実行します。

  1. 「検証」で、「P7_CREATED_DATEがNULLでない」を選択します。

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

  3. OK」をクリックして選択を確認します。

  4. 「検証」で、「P7_CREATED_BYがNULLでない」を選択します。

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

  6. OK」をクリックして選択を確認します。

コール元ページへのユーザーの移動

この「作成/編集」ページは複数の場所からコールされるため、ユーザーは、表示を終了すると、コール元ページに戻る必要があります。これを行うには、このページにアイテムを作成してブランチを変更します。このページがコールされるたびに、コール元ページの番号を指定してアイテムを設定する必要があります。

非表示アイテムを作成するには、次の手順を実行します。

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

  2. 「アイテム・タイプの選択」で、「非表示」を選択して「次へ」をクリックします。

  3. 「表示位置および名前」で、次の手順を実行します。

    1. 「アイテム名」に、次のように入力します。

      P7_PREV_PAGE
      
      
    2. 「リージョン」で、「Issue Identification」を選択します。

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

  4. アイテムの作成」をクリックします。

    次に、「取消」ボタンを編集します。

  5. 「ボタン」で、「取消」を選択します。

  6. 「オプションのURLリダイレクト」までスクロールします。

  7. 「ページ」に、次のように入力します。

    &P7_PREV_PAGE.
    
    

    末尾のピリオドに注意してください。

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

    次に、ブランチを編集します。

  9. 「アクション」で、「ページ」に次のように入力します。

    &P7_PREV_PAGE.
    
    
  10. 変更の適用」をクリックします。

複数の問題を順次追加する機能の追加

次に、ユーザーが一度に複数の問題を追加できる機能を追加します。これを行うには、まず新しいボタンを追加し、次に新しいブランチを追加します。

新しいボタンを追加するには、次の手順を実行します。

  1. 「ボタン」セクションで、「コピー」アイコンをクリックします。

  2. 「名前」で、「作成」を選択します。

  3. 「ターゲット・ページ」で、デフォルトの「7」を受け入れて「次へ」をクリックします。

  4. 「ボタン名」に、CREATE_AGAINと入力します。

  5. 「ラベル」に、Create and Create Anotherと入力します。

  6. ボタンをコピー」をクリックします。

現在、「ボタンをコピー」は、機能的に「作成」ボタンと同様に動作します。次に、「作成」ページでユーザーを保持するブランチを作成します。

このブランチによって、P7_PREV_PAGEの再設定も行われます。これは、ページのキャッシュが消去されるとそのアイテムの値が失われるためです。この新しいブランチの順序には0を指定します。これによって、このブランチはデフォルトのブランチの前に起動されます(ただし、「作成後、別のものを作成」ボタンが使用されている場合にのみ)。

「作成」ページでユーザーを保持するブランチを作成するには、次の手順を実行します。

  1. 「ブランチ」で、「作成」アイコンをクリックします。

  2. 「ポイントおよびタイプ」で、デフォルトを受け入れて「次へ」をクリックします。

  3. 「ターゲット」で、次の手順を実行します。

    1. 「ページ」に、7と入力します。

    2. 「キャッシュを消去」に、7と入力します。

    3. 「次のアイテムを設定」に、次のように入力します。

      P7_PREV_PAGE
      
      
    4. 「次の値を使用」に、次のように入力します。

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

  4. 「ブランチ条件」で、次の手順を実行します。

    1. 「順序」に、0と入力します。

    2. 「対象ボタン」で、「CREATE_AGAIN」を選択します。

  5. ブランチを作成」をクリックします。

  6. 「ブランチ」で、新しく作成したブランチを選択します。

  7. 「ブランチ・アクション」で、「プロセスの成功メッセージを含める)」を選択します。

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

    変更を表示するには、「ページの実行」アイコンをクリックします。(図10-9を参照。)

    図10-9 「Create/Edit Issues」フォーム

    iss_edit1.gifの説明が続きます。
    iss_edit1.gifの説明

    作成したブランチによって、P7_PREV_PAGEの値が検索されます。このページは別のページからコールされなかったため、値は設定されていません。次に、これを修正します。

問題のレポートの追加

次に、問合せの動的変更がサポートされるように「Issues」レポート・ページを調整します。これを行うには、次の操作を実行する必要があります。

  • 新しいリージョンへの「作成」ボタンの移動およびラベルの編集

  • ユーザーによる問合せの制限を可能にする新しいアイテムの作成

  • 新しいアイテムを参照するためのWHERE句の追加

  • 各ユーザー名およびプロジェクトを表示するためのレポート列属性の変更

  • ヘッダーの変更

新しいリージョンへの「作成」ボタンの移動

「作成」ボタン用の新しいリージョンを作成するには、次の手順を実行します。

  1. ページ6(「Issues」)のページ定義にナビゲートします。

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

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

  4. 作成するHTMLリージョン・コンテナのタイプを指定します。 「HTML」を選択して、「次へ」をクリックします。

  5. 「表示属性」で、次の手順を実行します。

    1. 「タイトル」に、Buttonsと入力します。

    2. 「リージョン・テンプレート」で、「タイトルなしのボタン・リージョン」を選択します。

    3. 「表示ポイント」で、「ページ・テンプレート・ボディ (2. リージョン・コンテンツより下のアイテム)」を選択します。

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

  6. リージョンの作成」をクリックします。

「作成」ボタンを「Buttons」リージョンに移動するには、次の手順を実行します。

  1. 「ボタン」で、「作成」ボタンを選択します。

  2. 「テキスト・ラベル」に、次のように入力します。

    Add a New Issue
    
    
  3. 「リージョン」の「表示」で、「Buttons」を選択します。

  4. 「オプションのURLリダイレクト」までスクロールして、次の手順を実行します。

    1. 「次のアイテムを設定」に、次のように入力します。

      P7_PREV_PAGE
      
      
    2. 「次の値を使用」に、6を入力します。

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

問合せの変更および表示

次に、IDではなく、ユーザーおよびプロジェクトの実際の値が表示されるように問合せを変更した後、レポートの表示をクリーンアップします。

ISSUE_IDの列属性を編集するには、次の手順を実行します。

  1. 「リージョン」セクションで、Issuesの横の「レポート」を選択します。

  2. ISSUE_IDの左にある「編集」アイコンをクリックします。

  3. 「列リンク」までスクロールします。

    1. 「アイテム2」の「名前」に、次のように入力します。

      P7_PREV_PAGE
      
      
    2. 「アイテム2」の「値」に、6と入力します。

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

IDENTIFIED_BY、RELATED_PROJECTおよびASSIGNED_TOの列属性を編集するには、次の手順を実行します。

  1. IDENTIFIED_BYの左にある「編集」アイコンをクリックします。

  2. 「表形式フォームの要素」までスクロールします。「表示形式」リストから、「テキストとして表示(LOVに基づき、状態は保存しない)」を選択します。

  3. 「LOV」までスクロールします。「名前付きLOV」で、「PEOPLE」を選択します。

  4. ページの上部に戻って「次へ」アイコン(>)をクリックします。

    RELATED_PROJECTの「列属性」ページが表示されます。

  5. 「表形式フォームの要素」までスクロールします。「表示形式」リストから、「テキストとして表示(LOVに基づき、状態は保存しない)」を選択します。

  6. 「LOV」までスクロールします。

    1. 「名前付きLOV」で、「PROJECTS」を選択します。

    2. 「NULLを表示」で、「はい」を選択します。

    3. 「NULLテキスト」に、ハイフン(-)を入力します。

  7. ページの上部に戻って「次へ」アイコン(>)をクリックします。

    ASSIGNED_TOの「列属性」ページが表示されます。

  8. 「表形式フォームの要素」までスクロールします。「表示形式」リストから、「テキストとして表示(LOVに基づき、状態は保存しない)」を選択します。

  9. 「LOV」までスクロールします。

    1. 「名前付きLOV」で、「PEOPLE」を選択します。

    2. 「NULLを表示」で、「はい」を選択します。

    3. 「NULLテキスト」に、ハイフン(-)を入力します。

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

次に、レポート属性を変更して、レポートの表示方法をカスタマイズします。

レポートの表示を変更するには、次の手順を実行します。

  1. ISSUE_IDのヘッダー「編集」を削除します。

  2. ISSUE_SUMMARYのヘッダーをSummaryに変更します。

  3. TARGET_RESOLUTION_DATEで、次の手順を実行します。

    1. ヘッダーに強制折返しを設定します。「ヘッダー」に、次のように入力します。

      Target<br>Resolution<br>Date
      
      
    2. 「列の位置合せ」で、「中央」を選択します。

    3. 「ヘッダーの位置合せ」で、「中央」を選択します。

  4. ISSUE_ID以外のすべての列で、「ソート」を選択します。

  5. ISSUE_SUMMARYの「ソート順序」で、「1」を選択します。

  6. 「レイアウトおよびページ区切り」までスクロールして、次の手順を実行します。

    1. 「NULL値の表示形式」に、ハイフン(-)を入力します。

    2. 「行数」に、5と入力します。

  7. 「ソート」で、「昇順イメージ」および「降順イメージ」のグレーの矢印を選択します。

  8. 「メッセージ」で、「データが見つからなかった場合のメッセージ」に次のように入力します。

    No issues found.
    
    
  9. 変更の適用」をクリックします。

フィルタ処理のサポートの追加

この時点で、レポートは適切に表示されますが、エンド・ユーザーによるフィルタ処理はサポートされません。この機能を追加するには、まず、ユーザーによる問合せの値の設定を可能にするアイテムを作成します。レポートの上に表示される新しいリージョンにこれらの新しいアイテムを格納します。

新しいリージョンを作成するには、次の手順を実行します。

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

  2. HTML」を選択して、「次へ」をクリックします。

  3. 作成するHTMLリージョン・コンテナのタイプを選択します。 「HTML」を選択して、「次へ」をクリックします。

  4. 「表示属性」で、次の手順を実行します。

    1. 「タイトル」に、Issue Report Parametersと入力します。

    2. 「リージョン・テンプレート」で、デフォルトの「レポート・リージョン」を受け入れます。

    3. 「順序」に、5と入力します。

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

  5. リージョンの作成」をクリックします。

次に、アイテムを作成します。

「Identified By」のアイテムを作成するには、次の手順を実行します。

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

  2. 「アイテム・タイプの選択」で、「選択リスト」を選択して「次へ」をクリックします。

  3. 「リスト制御タイプの選択」で、デフォルトの選択肢の「選択リスト」を受け入れて「次へ」をクリックします。

  4. 「アイテム名および表示位置を指定」で、次の手順を実行します。

    1. 「アイテム名」に、P6_IDENTIFIED_BYと入力します。

    2. 「リージョン」で、「Issue Report Parameters」を選択します。

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

  5. 「LOVを指定」で、次の手順を実行します。

    1. 「名前付きLOV」で、「PEOPLE」を選択します。

    2. 「NULLテキスト」に、次のように入力します。

      - All -
      
      
    3. 「NULL値」に、次のように入力します。

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

  6. 「アイテム属性」で、デフォルトを受け入れて「次へ」をクリックします。

  7. 「デフォルト」に、次のように入力します。

    -1
    
    
  8. アイテムの作成」をクリックします。

「Assigned To」のアイテムを作成するには、次の手順を実行します。

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

  2. 「アイテム・タイプの選択」で、「選択リスト」を選択して「次へ」をクリックします。

  3. 「リスト制御タイプの選択」で、デフォルトの選択肢の「選択リスト」を受け入れて「次へ」をクリックします。

  4. 「表示位置および名前」で、次の手順を実行します。

    1. 「アイテム名」に、P6_ASSIGNED_TOと入力します。

    2. 「リージョン」で、「Issue Report Parameters」を選択します。

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

  5. 「LOVを指定」で、次の手順を実行します。

    1. 「名前付きLOV」で、「PEOPLE」を選択します。

    2. 「NULLテキスト」に、次のように入力します。

      - All -
      
      
    3. 「NULL値」に、次のように入力します。

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

  6. 「アイテム属性」で、デフォルトを受け入れて「次へ」をクリックします。

  7. 「デフォルト」に、次のように入力します。

    -1
    
    
  8. アイテムの作成」をクリックします。

「Status」のアイテムを作成するには、次の手順を実行します。

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

  2. 「アイテム・タイプの選択」で、「選択リスト」を選択して「次へ」をクリックします。

  3. 「リスト制御タイプの選択」で、デフォルトの選択肢の「選択リスト」を受け入れて「次へ」をクリックします。

  4. 「アイテム名および表示位置を指定」で、次の手順を実行します。

    1. 「アイテム名」に、P6_STATUSと入力します。

    2. 「リージョン」で、「Issue Report Parameters」を選択します。

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

  5. 「LOVを指定」で、次の手順を実行します。

    1. 「名前付きLOV」で、「STATUS」を選択します。

    2. 「NULLテキスト」に、次のように入力します。

      - All -
      
      
    3. 「NULL値」に、次のように入力します。

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

  6. 「アイテム属性」で、デフォルトを受け入れて「次へ」をクリックします。

  7. 「デフォルト」に、次のように入力します。

    -1
    
    
  8. アイテムの作成」をクリックします。

「Priority」のアイテムを作成するには、次の手順を実行します。

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

  2. 「アイテム・タイプの選択」で、「選択リスト」を選択して「次へ」をクリックします。

  3. 「リスト制御タイプの選択」で、デフォルトの選択肢の「選択リスト」を受け入れて「次へ」をクリックします。

  4. 「アイテム名および表示位置を指定」で、次の手順を実行します。

    1. 「アイテム名」に、P6_PRIORITYと入力します。

    2. 「リージョン」で、「Issue Report Parameters」を選択します。

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

  5. 「LOV」で、次の手順を実行します。

    1. 「名前付きLOV」で、「PRIORITIES」を選択します。

    2. 「NULLテキスト」に、次のように入力します。

      - All -
      
      
    3. 「NULL値」に、次のように入力します。

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

  6. 「アイテム属性を指定」で、デフォルト値を受け入れて「次へ」をクリックします。

  7. 「デフォルト」に、次のように入力します。

    -1
    
    
  8. アイテムの作成」をクリックします。

「Related Project」のアイテムを作成するには、次の手順を実行します。

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

  2. 「アイテム・タイプの選択」で、「選択リスト」を選択して「次へ」をクリックします。

  3. 「リスト制御タイプの選択」で、デフォルトの選択肢の「選択リスト」を受け入れて「次へ」をクリックします。

  4. 「アイテム名および表示位置を指定」で、次の手順を実行します。

    1. 「アイテム名」に、P6_RELATED_PROJECTと入力します。

    2. 「リージョン」で、「Issue Report Parameters」を選択します。

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

  5. 「LOVを指定」で、次の手順を実行します。

    1. 「名前付きLOV」で、「PRIORITIES」を選択します。

    2. 「NULLテキスト」に、次のように入力します。

      - All -
      
      
    3. 「NULL値」に、次のように入力します。

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

  6. 「アイテム属性を指定」で、デフォルト値を受け入れて「次へ」をクリックします。

  7. 「デフォルト」に、次のように入力します。

    -1
    
    
  8. アイテムの作成」をクリックします。

次に、「実行」ボタンを作成します。このボタンによって、ユーザーは、レポート・パラメータを選択した後、問合せを実行できます。ボタンは、リージョン位置に作成するか、またはアイテム間に表示することができます。次の演習では、「実行」ボタンは、最後のレポート・パラメータの右に表示されるため、リージョンのアイテム間に作成します。

「実行」ボタンを作成するには、次の手順を実行します。

  1. 「ボタン」で、「作成」アイコンをクリックします。

  2. 「ボタンのリージョンを選択してください」で、「Issue Report Parameters」を選択して「次へ」をクリックします。

  3. 「位置」で、「このリージョン・アイテムで表示されるボタンの作成」を選択して「次へ」をクリックします。

  4. 「ボタン名」に、P6_GOと入力します。

  5. 「ボタン・スタイル」で、「テンプレート・ベースのボタン」を選択します。

  6. テンプレート」で、「ボタン」を選択します。

  7. ボタンの作成」をクリックします。

現在、アイテムは重なって表示されます。空白をより効果的に使用するには、横に並んで表示されるようにP6_RELATED_PROJECT、P6_STATUSおよびP6_PRIORITYの位置を変更します。最初の行にP6_RELATED_PROJECTとP6_STATUSを、2番目の行にP6_PRIORITYを配置します。

6_RELATED_PROJECT、P6_STATUSおよびP6_PRIORITYの位置を変更するには、次の手順を実行します。

  1. 「アイテム」セクションで、「アイテム」ヘッダーをクリックします。

  2. P6_RELATED_PROJECT、P6_STATUSおよびP6_PRIORITYの「新しい行」で、「いいえ」を選択します。

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

  4. 右上にある「ページの編集」アイコンをクリックして、ページ6のページ定義に戻ります。

次に、パラメータに対応するようにレポートを変更する必要があります。これを行うには、問合せのWHERE句を変更する必要があります。1つの方法として、次のWHERE句を追加する方法があります。次に例を示します。

WHERE (IDENTIFIED_BY = :P6_IDENTIFIED_BY OR
       :P6_IDENTIFIED_BY = '-1')
   AND (RELATED_PROJECT = :P6_RELATED_PROJECT OR
       :P6_RELATED_PROJECT = '-1')
   AND (ASSIGNED_TO = :P6_ASSIGNED_TO OR
       :P6_ASSIGNED_TO = '-1')
   AND (STATUS = :P6_STATUS OR
       :P6_STATUS = '-1')
   AND (PRIORITY = :P6_PRIORITY OR
       :P6_PRIORITIY = '-1')

これは有効な方法ですが、問合せが必要なWHERE句を指定して生成すると、問合せをより高速に実行できます。これを行うには、「Issues」リージョンを「SQL問合せを戻すPL/SQLファンクション本体」に適用します。

「Issues」リージョンを「SQL問合せを戻すPL/SQLファンクション本体」に適用するには、次の手順を実行します。

  1. 「リージョン」で、「Issues」を選択します。

  2. 「タイプ」で、「SQL問合せ(SQL問合せを戻すPL/SQLファンクション本体)」を選択します。

  3. 「リージョン・ソース」に、次のように入力します。

    DECLARE
    
       q VARCHAR2(32767); -- query
       w VARCHAR2(4000) ; -- where clause
       we VARCHAR2(1) := 'N'; -- identifies if where clause exists
    
    BEGIN
    
       q := 'SELECT "ISSUE_ID", '||
            ' "ISSUE_SUMMARY", '||
            ' "IDENTIFIED_BY", '||
            ' "RELATED_PROJECT", '||
            ' "ASSIGNED_TO", '||
            ' "STATUS", '||
            ' "PRIORITY", '||
            ' "TARGET_RESOLUTION_DATE", '||
    
            ' "ACTUAL_RESOLUTION_DATE" '||
            ' FROM "#OWNER#"."HT_ISSUES" ';
    
       IF :P6_IDENTIFIED_BY != '-1'
          THEN
          w := ' IDENTIFIED_BY = :P6_IDENTIFIED_BY ';
          we := 'Y';
       END IF;
    
       IF :P6_RELATED_PROJECT != '-1'
          THEN
          IF we = 'Y'
             THEN
             w := w || ' AND RELATED_PROJECT = :P6_RELATED_PROJECT ';
          ELSE
             w := ' RELATED_PROJECT = :P6_RELATED_PROJECT ';
             we := 'Y';
          END IF;
       END IF;
    
       IF :P6_ASSIGNED_TO != '-1'
          THEN
          IF we = 'Y'
             THEN
             w := w || ' AND ASSIGNED_TO = :P6_ASSIGNED_TO ';
        ELSE
             w := ' ASSIGNED_TO = :P6_ASSIGNED_TO ';
             we := 'Y';
        END IF;
       END IF;
    
       IF :P6_STATUS != '-1'
          THEN
          IF we = 'Y'
             THEN
             w := w || ' AND STATUS = :P6_STATUS ';
          ELSE
             w := ' STATUS = :P6_STATUS ';
             we := 'Y';
          END IF;
    END IF;
    
       IF :P6_PRIORITY != '-1'
           THEN
           IF we = 'Y'
              THEN
              w := w || ' AND PRIORITY = :P6_PRIORITY ';
           ELSE
              w := ' PRIORITY = :P6_PRIORITY ';
              we := 'Y';
           END IF;
       END IF;
    
       IF we = 'Y'
          THEN q := q || ' WHERE '|| w;
       END IF;
    
    RETURN q;
    
    END;
    
    
  4. 変更の適用」をクリックします。

このファンクションでは、まず、変数qが元のSELECT文に設定されることに注意してください。次に、ユーザーが設定した変数で構成されるWHERE句(w)が作成されます。いずれかの変数が設定されている場合、WHERE句は、元のSELECT文に追加され、その新しいSELECT文がデータベースに渡されます。

これで、レポートの作成は完了です。「ページの実行」アイコンをクリックします。(図10-10を参照。)

図10-10 「Issues」レポート

iss_add_iss.gifの説明が続きます。
iss_add_iss.gifの説明

レポート・パラメータを変更するには、「Issue Report Parameters」で新しく選択を行って「実行」をクリックします。

複数の問題の同時割当てをサポートするページの追加

現在、問題を編集して割り当てることができます。 次に、ユーザーによる複数の問題の一括割当ておよび「Related Project」、「Status」および「Priority」の変更を可能にする新しいページを追加します。

表形式フォームの作成

複数の問題の割当てをサポートする新しいページを追加するには、次の手順を実行します。

  1. 「アプリケーション」のホームページにナビゲートします。

  2. ページの作成」をクリックします。

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

  4. 表形式フォーム」を選択して「次へ」をクリックします。

  5. 「表/ビューの所有者」で、適切なスキーマを選択します。

    このフォームでは、ユーザーによる問題の割当てを可能にすることが目的であるため、問題の作成または削除ではなく、既存のレコードの更新のみを行うことが前提とされています。

  6. この前提を確定するには、「実行可能な操作」リストから「更新のみ」を選択して「次へ」クリックします。

  7. 「表/ビューの名前」で、「HT_ISSUES」を選択して「次へ」をクリックします。

  8. 「表示列」で、次の列を選択して「次へ」をクリックします。

    • ISSUE_SUMMARY

    • IDENTIFIED_BY

    • IDENTIFIED_DATE

    • RELATED_PROJECT

    • ASSIGNED_TO

    • STATUS

    • PRIORITY

  9. 「主キー」で、デフォルトの「ISSUE_ID」を受け入れて「次へ」をクリックします。

  10. 「主キーのソース」で、デフォルトの「既存のトリガー」を受け入れて「次へ」をクリックします。

  11. 「更新可能な列」で、次の列を選択して「次へ」をクリックします。

    • RELATED_PROJECT

    • ASSIGNED_TO

    • STATUS

    • PRIORITY

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

    1. 「ページ」に、8と入力します。

    2. 「ページ名」に、Assign Issuesと入力します。

    3. 「リージョン・タイトル」に、Assign Issuesと入力します。

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

  13. 「タブ・オプション」で、デフォルトの「タブを使用しない」を受け入れ、「次へ」をクリックします。

  14. 「ボタン・ラベル」で、次の手順を実行します。

    1. 「「取消」ボタン・ラベル」で、デフォルトを受け入れます。

    2. 「「送信」ボタン・ラベル」に、Apply Changesと入力します。

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

  15. 「ブランチ」で、デフォルト値を受け入れて「次へ」をクリックします。

  16. 選択内容を確認して、「終了」をクリックします。

LOVの追加

初期表形式フォームを作成した後、問題を簡単に選択するためにLOVを追加する必要があります。また、未割当ての問題のみが表示されるように問合せを制限する必要があります。

LOVを追加するには、次の手順を実行します。

  1. 「成功」で、「ページの編集」を選択します。

    ページ8(「Assign Issues」)のページ定義が表示されます。

  2. 「リージョン」で、「Assign Issues」を選択します。

  3. リージョン・ソース」に、次のように入力します。

SELECT "ISSUE_ID",
       "ISSUE_SUMMARY",
       "IDENTIFIED_BY",
       "IDENTIFIED_DATE",
       "RELATED_PROJECT",
       "ASSIGNED_TO",
       "STATUS",
       "PRIORITY"
  FROM "#OWNER#"."HT_ISSUES"
WHERE assigned_to IS NULL

レポート属性を編集するには、次の手順を実行します。

  1. レポート属性」タブを選択します。

  2. 「レポート列属性」で、次の手順を実行します。

    1. ISSUE_SUMMARYの既存のヘッダーを次のように編集します。

      Summary
      
      
    2. ISSUE_ID以外のすべての列で、「ソート」を選択します。

    3. IDENTIFIED_DATEの「ソート順序」で、「1」を選択します。

  3. IDENTIFIED_BYの左にある「編集」アイコンをクリックして、次の属性を編集します。

    1. 「表形式フォームの要素」までスクロールします。「表示形式」リストから、「テキストとして表示(LOVに基づき、状態は保存しない)」を選択します。

    2. 「LOV」までスクロールします。 「名前付きLOV」リストから「PEOPLE」を選択します。

    3. ページの上部にある「次へ」ボタン(>)をクリックして、次の列にナビゲートします。

  4. IDENTIFIED_DATEの次の属性を編集するには、次の手順を実行します。

    1. 「列の書式」で、「数値/日付書式」にDD-MON-YYYYと入力します。

    2. ページの上部にある「次へ」ボタン(>)をクリックして、次の列にナビゲートします。

  5. RELATED_PROJECTの次の属性を編集するには、次の手順を実行します。

    1. 「表形式フォームの要素」までスクロールします。「表示形式」で、「選択リスト(名前付きLOV)」を選択します。

    2. 「LOV」までスクロールします。「名前付きLOV」リストから「PROJECTS」を選択します。

    3. ページの上部にある「次へ」ボタン(>)をクリックして、次の列にナビゲートします。

  6. ASSIGNED_TOの次の属性を編集するには、次の手順を実行します。

    1. 「表形式フォームの要素」までスクロールします。「表示形式」で、「選択リスト(名前付きLOV)」を選択します。

    2. 「LOV」までスクロールします。

      • 「名前付きLOV」リストから「PEOPLE」を選択します。

      • 「NULLを表示」で、「はい」を選択します。

      • 「NULLテキスト」に、ハイフン(-)を入力します。

    3. ページの上部にある「次へ」ボタン(>)をクリックして、次の列にナビゲートします。

  7. STATUSの次の属性を編集するには、次の手順を実行します。

    1. 「表形式フォームの要素」までスクロールします。「表示形式」で、「選択リスト(名前付きLOV)」を選択します。

    2. 「LOV」までスクロールします。 「名前付きLOV」リストから「STATUS」を選択します。

    3. ページの上部にある「次へ」ボタン(>)をクリックして、次の列にナビゲートします。

  8. PRIORITYの次の属性を編集するには、次の手順を実行します。

    1. 「表形式フォームの要素」までスクロールします。「表示形式」で、「選択リスト(名前付きLOV)」を選択します。

    2. 「LOV」までスクロールします。

      • 「名前付きLOV」で、「PRIORITIES」を選択します。

      • 「NULLを表示」で、「はい」を選択します。

      • 「NULLテキスト」に、ハイフン(-)を入力します。

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

    「レポート属性」ページが表示されます。

  9. 「ソート」までスクロールします。「昇順イメージ」および「降順イメージ」で、グレーの矢印を選択します。

  10. 「メッセージ」で、「データが見つからなかった場合のメッセージ」に次のように入力します。

    No Unassigned Issues.
    
    
  11. 変更の適用」をクリックします。

ウィザードによって、不要な「取消」ボタンが作成されています。

この「取消」ボタンを削除するには、次の手順を実行します。

  1. ページ8のページ定義で、「取消」ボタンを選択します。

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

  3. OK」をクリックして選択を確認します。

これで、表形式フォームの作成は完了です。新しいフォームを表示するには、「ページの実行」アイコンをクリックします。(図10-11を参照。)

図10-11 Assign Issues

iss_assiss.gifの説明が続きます。
iss_assiss.gifの説明

問題を割り当てるには、「Assigned To」リストから選択を行って「変更の適用」をクリックします。問題が割り当てられると、その問題は表示されなくなることに注意してください。

サマリー・レポートの作成

最後に、4つのサマリー・レポートを追加します。

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

プロジェクト別の問題サマリーの追加

問題のサマリーを示すレポートを使用すると、プロジェクトを選択し、そのプロジェクトに関連する問題のサマリーを表示できます。このレポートには、次のサマリー情報が含まれています。

  • 最初に問題が発見された日付

  • 最後に問題が終結した日付

  • 問題の合計数

  • ステータス別の問題数

  • 優先順位の未解決の問題数

  • ステータス別の割当て

このレポートを作成するには、情報を2つのSQL文でコーディングします。1つ目の文は単一の結果を持つ情報を収集し、2つ目の文は複数の結果を持つ情報を収集します。

プロジェクト別の問題サマリーのレポートを追加するには、次の手順を実行します。

  1. 「アプリケーション」のホームページにナビゲートします。

  2. ページの作成」をクリックします。

  3. レポート」を選択して「次へ」をクリックします。

  4. SQLレポート」を選択して「次へ」をクリックします。

  5. 「ページ属性」で、次の手順を実行します。

    1. 「ページ」に、9と入力します。

    2. 「ページ名」に、Issue Summary by Projectと入力します。

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

  6. 「タブ・オプション」で、デフォルトの「タブを使用しない」を受け入れ、「次へ」をクリックします。

  7. 次のSQL SELECT文を入力して「次へ」をクリックします。

    SELECT MIN(identified_date) first_identified,
           MAX(actual_resolution_date) last_closed,
           COUNT(issue_id) total_issues,
           SUM(DECODE(status,'Open',1,0)) open_issues,
           SUM(DECODE(status,'On-Hold',1,0)) onhold_issues,
           SUM(DECODE(status,'Closed',1,0)) closed_issues,
           SUM(DECODE(status,
                      'Open',decode(priority,null,1,0),
                      0))                     open_no_prior,
           SUM(DECODE(status,
                      'Open',decode(priority,'High',1,0),
                      0))                     open_high_prior,
           SUM(DECODE(status,
                      'Open',decode(priority,'Medium',1,0),
                      0))                     open_medium_prior,
           SUM(DECODE(status,
                      'Open',decode(priority,'Low',1,0),
                      0))                     open_low_prior
       FROM ht_issues
    WHERE related_project = :P9_PROJECT
    
    
  8. 「レポート属性」で、次の手順を実行します。

    1. 「リージョン名」に、Issue Summary by Projectと入力します。

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

  9. 選択内容を確認して、「終了」をクリックします。

1つ目の問合せを作成したら、ヘッダーを編集し、関連するプロジェクトを制御するアイテムを作成する必要があります。最初に、レポートの上に表示されるリージョン(プロジェクト・パラメータが含まれる)を作成します。

新しいリージョンの作成

レポートの上に表される新しいリージョンを作成するには、次の手順を実行します。

  1. 「成功」ページで、「ページの編集」をクリックします。

    ページ9(「Issue Summary by Project」)のページ定義が表示されます。

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

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

  4. 作成するHTMLリージョン・コンテナのタイプを選択します。 「HTML」を選択して、「次へ」をクリックします。

  5. 「表示属性」で、次の手順を実行します。

    1. 「タイトル」に、Issue Summary Report Parametersと入力します。

    2. 「表示ポイント」で、「ページ・テンプレート・ボディ (2. リージョン・コンテンツより下のアイテム)」を選択します。

    3. 「順序」に、5と入力します。

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

  6. リージョンの作成」をクリックします。

プロジェクト・アイテムの作成

プロジェクト・アイテムを作成するには、次の手順を実行します。

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

  2. 「アイテム・タイプの選択」で、「選択リスト」を選択して「次へ」をクリックします。

  3. 「リスト制御タイプの選択」で、デフォルトの「選択リスト」を受け入れて「次へ」をクリックします。

  4. 「表示位置および名前」で、次の手順を実行します。

    1. 「アイテム名」に、P9_PROJECTと入力します。

    2. 「リージョン」で、「Issue Summary Report Parameters」を選択します。

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

  5. 「LOVを指定」で、次の手順を実行します。

    1. 「名前付きLOV」で、「PROJECTS」を選択します。

    2. 「NULLテキスト」に、次のように入力します。

      - Select -
      
      
    3. NULL値」に、-1と入力します。

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

  6. 「アイテム属性を指定」で、デフォルトを受け入れて「次へ」をクリックします。

  7. 「デフォルト」に、-1と入力します。

  8. アイテムの作成」をクリックします。

「実行」ボタンの作成

問合せを実行する「実行」ボタンを作成するには、次の手順を実行します。

  1. 「ボタン」で、「作成」アイコンをクリックします。

  2. 「ボタン・リージョン」で、「Issue Summary Report Parameters」を選択して「次へ」をクリックします。

  3. 「位置」で、「このリージョン・アイテムで表示されるボタンを作成」を選択して「次へ」をクリックします。

  4. 「ボタン属性」で、次の手順を実行します。

    1. 「ボタン名」に、P9_GOと入力します。

    2. 「ボタン・スタイル」で、「テンプレート・ベースのボタン」を選択します。

    3. 「テンプレート」で、「ボタン」を選択します。

  5. ボタンの作成」をクリックします。

ヘッダーおよびレポート設定の編集

次に、レポート・リージョンのヘッダーおよびレポート設定を編集する必要があります。また、ユーザーがプロジェクトを選択している場合に、条件に合わせて表示するレポート・リージョンを設定する必要もあります。

ヘッダーおよびレポート設定を編集するには、次の手順を実行します。

  1. 「リージョン」で、「Issue Summary by Project」の横にある「レポート」を選択します。

  2. 「ヘッダー・タイプ」で、「カスタム」を選択します。

  3. 「レポート列属性」で、次の手順を実行します。

    1. FIRST_IDENTIFIEDのヘッダーを次のように変更します。

      First Issue Identified:
      
      
    2. LAST_CLOSEDのヘッダーを次のように変更します。

      Last Issue Closed:
      
      
    3. TOTAL_ISSUESのヘッダーを次のように変更します。

      Total Issues:
      
      
    4. OPEN_ISSUESのヘッダーを次のように変更します。

      Open Issues:
      
      
    5. ONHOLD_ISSUESのヘッダーを次のように変更します。

      On-Hold Issues:
      
      
    6. CLOSED_ISSUESのヘッダーを次のように変更します。

      Closed Issues:
      
      
    7. OPEN_NO_PRIORのヘッダーを次のように変更します。

      Open Issues with No Priority:
      
      
    8. OPEN_HIGH_PRIORのヘッダーを次のように変更します。

      Open Issues of High Priority:
      
      
    9. OPEN_MEDIUM_PRIORのヘッダーを次のように変更します。

      Open Issues of Medium Priority:
      
      
    10. OPEN_LOW_PRIORのヘッダーを次のように変更します。

      Open Issues of Low Priority:
      
      
  4. 「レイアウトおよびページ区切り」までスクロールして、次の手順を実行します。

    1. 「NULL値の表示形式」に、ハイフン(-)を入力します。

    2. 「ページ区切りスキーム」で、「- ページ区切りが選択されていない -」を選択します。

  5. ページ上部の「リージョン定義」タブを選択します。

    1. 「条件付き表示」までスクロールします。

    2. 「条件タイプ」で、「式1のアイテムの値が、式2のコロンで区切られたリストに含まれない」を選択します。

    3. 「式1」に、P9_PROJECTと入力します。

    4. 「式2」に、-1と入力します。

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

割当てを取得する問合せの作成

ステータス別の割当てを取得する問合せを作成するには、次の手順を実行します。

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

  2. レポート」を選択して「次へ」をクリックします。

  3. 「レポート実装」で、「SQLレポート」を選択して「次へ」をクリックします。

  4. 「表示属性」で、次の手順を実行します。

    1. 「タイトル」に、Assignments by Statusと入力します。

    2. 「列」で、2を選択します。

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

  5. 「ソース」で、次の手順を実行します。

    1. SQL問合せを入力」に、次のように入力します。

      SELECT p.person_name,
             i.status,
             COUNT(i.issue_id) issues
        FROM ht_issues i,
             ht_people p
      WHERE i.related_project = :P9_PROJECT
        AND i.assigned_to = p.person_id
      GROUP BY person_name, status
      
      
    2. 「ページごとの行数」に、20と入力します。

    3. 「ブレーク列」で、「列1」を選択します。

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

  6. 「条件付き表示」で、次の手順を実行します。

    1. 「条件タイプ」で、「式1のアイテムの値が、式2のコロンで区切られたリストに含まれない」を選択します。

    2. 「式1」に、次のように入力します。

      P9_PROJECT
      
      
    3. 「式2」に、-1と入力します。

  7. リージョンの作成」をクリックします。

ヘッダーおよびレポート設定を編集するには、次の手順を実行します。

  1. 「リージョン」で、「Assignments by Status」の横にある「レポート」を選択します。

  2. 「ヘッダー・タイプ」で、「カスタム」を選択します。

  3. PERSON_NAMEで、ヘッダーをAssigned Toに変更します。

  4. 「レイアウトおよびページ区切り」までスクロールします。「ページ区切りスキーム」で、「選択リストの1から15、16から30の範囲の行」を選択します。

  5. 「メッセージ」で、「データが見つからなかった場合のメッセージ」に次のように入力します。

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

新しく作成したレポートを表示するには、「ページの実行」アイコンをクリックします。最初は、プロジェクトが選択されていないため、データは表示されません。プロジェクトを選択します。レポートが図10-12に示すように表示されます。

図10-12 「Issue Summary by Project」レポート

iss_sumrpt.gifの説明が続きます。
iss_sumrpt.gifの説明

発見された月別の解決の追加

「Resolved by Month Identified」レポートは、折れ線グラフです。このレポートは、最初に、終結した各問題の解決にかかった日数を計算し、その問題が発見された月ごとに平均値を計算して、最後に、月別に表示します。

「Resolved by Month Identified」レポートを追加するには、次の手順を実行します。

  1. 「アプリケーション」のホームページにナビゲートします。

  2. ページの作成」をクリックします。

  3. チャート」を選択して「次へ」をクリックします。

  4. 折れ線」を選択して「次へ」をクリックします。

  5. 「ページ属性」で、次の手順を実行します。

    1. 「ページ」に、10と入力します。

    2. 「ページ名」および「リージョン名」に、Resolved by Month Identifiedと入力します。

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

  6. 「タブ(オプション)」で、デフォルトの「タブを使用しない」を受け入れて「次へ」をクリックします。

  7. 「問合せ」で、次の手順を実行します。

    1. 「シリーズ名」に、Resolvedと入力します。

    2. SQL」に、次のように入力します。

      SELECT NULL l,
             TO_CHAR(identified_date,'Mon YYYY') month,
             AVG(actual_resolution_date-identified_date) days
         FROM ht_issues
        WHERE status = 'Closed'
        GROUP BY TO_CHAR(identified_date,'Mon YYYY')
      
      

      この問合せにはリンクはありません。つまり、l列です。発見された日付から月が抽出されるため、データを月別にグループ化できます。最後に、その月に発見された問題を終結するためにかかった平均日数が計算されます。

    3. データが見つからなかった場合のメッセージ」に、次のように入力します。

      No Closed Issues found.
      
      
  8. 次へ」をクリックします。

  9. 選択内容を確認して、「終了」をクリックします。

次に、正しい軸ラベルを追加して、チャート・タイトルと凡例をオフにします。

チャートを編集するには、次の手順を実行します。

  1. 「成功」で、「ページの編集」を選択します。

    ページ10(「Resolved by Month Identified」)のページ定義が表示されます。

  2. 「リージョン」で、「Resolved by Month Identified」の横にある「チャート」を選択します。

  3. 「チャートの設定」で、次の手順を実行します。

    1. 「チャート高さ」に、300と入力します。

    2. 凡例を表示」を無効にします。

  4. 「軸の設定」セクションで、次の手順を実行します。

    1. 「X軸のタイトル」に、Date Identifiedと入力します。

    2. 「Y軸のタイトル」に、Days to Resolveと入力します。

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

新しく作成した折れ線グラフを表示するには、「ページの実行」アイコンをクリックします。折れ線グラフが図10-13に示すように表示されます。

図10-13 「Resolved by Month Identified」折れ線グラフ

iss_line.gifの説明が続きます。
iss_line.gifの説明

解決目標日の追加

「Target Resolution Dates」レポートは、終結していない問題と、問題の解決目標日となっている日に割り当てられたユーザーが表示されるカレンダです。

カレンダの作成

解決目標日のカレンダを作成するには、次の手順を実行します。

  1. 「アプリケーション」のホームページにナビゲートします。

  2. ページの作成」をクリックします。

  3. カレンダ」を選択して「次へ」をクリックします。

  4. SQLカレンダ」を選択して「次へ」をクリックします。

  5. 「ページ属性」で、次の手順を実行します。

    1. 「ページ」に、11と入力します。

    2. 「ページ名」および「リージョン名」に、Target Resolution Datesと入力します。

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

  6. 「タブ・オプション」で、デフォルトの「タブを使用しない」を受け入れ、「次へ」をクリックします。

  7. SQL問合せを入力」に、次のように入力して「次へ」をクリックします。

    SELECT I.TARGET_RESOLUTION_DATE,
           I.ISSUE_SUMMARY ||
              ' ('||nvl(P.PERSON_NAME,'Unassigned') ||') ' disp,
           I.ISSUE_ID
      FROM HT_ISSUES I,
           HT_PEOPLE P
      WHERE I.ASSIGNED_TO = P.PERSON_ID (+)
       AND (I.RELATED_PROJECT = :P11_PROJECT OR
            :P11_PROJECT = '-1')
    
    AND I.STATUS != 'Closed'
    
    

    次のことに注意してください。

    • target_resolution_dateは、問題が表示される日付です。

    • issue_summaryは、割り当てられたユーザーと連結しています。

    • issue_idは、表示されませんが、ユーザーが問題を表示して編集できるようにするリンクの作成に使用されます。

  8. 「カレンダ列を指定」で、次の手順を実行します。

    1. 「日付列」で、「TARGET_RESOLUTION_DATE」を選択します。

    2. 「表示列」で、「DISP」を選択します。

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

  9. 選択内容を確認して、「終了」をクリックします。

プロジェクトの検索をサポートするアイテムの追加

ユーザーが1つのプロジェクトまたはすべてのプロジェクトを検索できるようにするには、アイテムを追加する必要があります。

プロジェクトの検索をサポートするアイテムを追加するには、次の手順を実行します。

  1. 「成功」で、「ページの編集」を選択します。

    ページ11(「Target Resolution Dates」)のページ定義が表示されます。

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

  3. 「アイテム・タイプの選択」で、「選択リスト」を選択して「次へ」をクリックします。

  4. 「リスト制御タイプの選択」で、デフォルトの「選択リスト」を受け入れて「次へ」をクリックします。

  5. 「アイテム名」に、P11_PROJECTと入力して「次へ」をクリックします。

  6. 「LOV」で、次の手順を実行します。

    1. 「名前付きLOV」で、「PROJECTS」を選択します。

    2. 「NULLテキスト」に、次のように入力します。

      - All Projects -
      
      
    3. 「NULL値」に、次のように入力します。

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

  7. 「アイテム属性」で、デフォルトを受け入れて「次へ」をクリックします。

  8. デフォルト」に、次のように入力します。

    -1
    
    
  9. アイテムの作成」をクリックします。

「実行」ボタンの作成

問合せを実行する「実行」ボタンを作成するには、次の手順を実行します。

  1. 「ボタン」で、「作成」アイコンをクリックします。

  2. 「ボタン・リージョン」で、「Target Resolution Dates」を選択して「次へ」をクリックします。

  3. 「位置」で、「このリージョン・アイテムで表示されるボタンを作成」を選択して「次へ」をクリックします。

  4. 「ボタン属性」で、次の手順を実行します。

    1. 「ボタン名」に、P11_GOと入力します。

    2. 「ボタン・スタイル」で、「テンプレート・ベースのボタン」を選択します。

    3. 「テンプレート」で、「ボタン」を選択します。

  5. ボタンの作成」をクリックします。

カレンダ属性の変更

最後に、カレンダ属性を変更して、問題を表示し、その問題を編集するためのリンク・サポートを追加する必要があります。これを実行するには、ページ7(「View/Edit Issues」)をコールし、そのページからすべてのデータを消去し、コール元のページはページ11であるということを指定して、現行の問題のIDに渡す必要があります。その後で、問合せが終結した問題を除外する際に表示するコメントを追加する必要があります。

カレンダ属性を変更するには、次の手順を実行します。

  1. 「リージョン」で、「Target Resolution Dates」の左にある「CAL」を選択します。

  2. 「列リンク」までスクロールして、次の手順を実行します。

    1. 「ページ」に、7と入力します。

    2. 「キャッシュを消去」に、7と入力します。

    3. 「次のアイテムを設定」に、次のように入力します。

      P7_ISSUE_ID,P7_PREV_PAGE
      
      
    4. 「次の値を使用」に、次のように入力します。

      #ISSUE_ID#,11
      
      
      
  3. リージョン定義」タブを選択します。

  4. 「ヘッダーおよびフッターのテキスト」までスクロールします。

  5. 「リージョン・フッター」に、次のように入力します。

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

新しく作成したカレンダを表示するには、「ページの実行」アイコンをクリックします。レポートが図10-14に示すように表示されます。問題について表示されたテキストをクリックすると、「Edit Issue」ページを表示できます。カレンダに戻るには、「取消」をクリックします。

図10-14 「Target Resolution Dates」レポート

iss_cal.gifの説明が続きます。
iss_cal.gifの説明

解決の平均日数の追加

「Average Days to Resolve」レポートは、棒グラフで、終結した各問題の解決にかかった日数を計算し、その数の平均値を担当者別に計算します。

解決の平均日数のレポートを追加するには、次の手順を実行します。

  1. 「アプリケーション」のホームページにナビゲートします。

  2. ページの作成」をクリックします。

  3. チャート」を選択して「次へ」をクリックします。

  4. 棒(HTML)」を選択して「次へ」をクリックします。

  5. 「ページ属性を指定」で、次の手順を実行します。

    1. 「ページ」に、12と入力します。

    2. 「ページ名」に、Average Days to Resolveと入力します。

    3. 「リージョン名」に、Average Days to Resolveと入力します。

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

  6. 「タブ(オプション)」で、デフォルトの「タブを使用しない」を受け入れて「次へ」をクリックします。

  7. 「チャート属性を指定」で、次の手順を実行します。

    1. チャートのSQL」に、次のように入力します。

      SELECT NULL l,
             NVL(p.person_name,'None Assigned') person,
             AVG(i.actual_resolution_date-i.identified_date) days
        FROM ht_issues i,
             ht_people p
       WHERE i.assigned_to = p.person_id (+)
         AND i.status = 'Closed'
       GROUP BY p.person_name
      
      

      前述のSELECT文の内容は、次のとおりです。

      • 1番目に選択されるアイテムはリンクです。このレポートは他のページにリンクしないため、NULLが選択されています。

      • 2番目のアイテムはユーザーの名前です(assigned_toNULLの場合はNone Assigned)。

      • 3番目に選択されるアイテムは、そのユーザーがすべての問題の解決にかかった平均日数です。問題のステータスは、終結を示しています。

    2. 「サマリーに含める」で、「データ・ポイント数」のみを選択します。その他のオプションは、すべて選択解除します。

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

  8. 選択内容を確認して、「終了」をクリックします。

新しく作成した棒グラフを表示するには、「ページの実行」を選択します。レポートが図10-15に示すように表示されます。

図10-15 「Average Days to Resolve」レポート

iss_bar.gifの説明が続きます。
iss_bar.gifの説明

ホームページへのコンテンツの追加

詳細ページがすべて完成したら、コンテンツをホームページに追加し、すべてのページを結びつける必要があります。このセクションでは、次の情報を表示するように、ホームページを変更します。

  • 使用可能なすべてのレポートのメニュー

  • メンテナンス・ページへのナビゲーション

  • 新しい問題を追加するボタン

  • 期限切れの問題

  • 最近発見された問題

  • プロジェクト別の未解決の問題のグラフ

  • 未割当ての問題

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

レポート・メニューの追加

最初に、リストとして実装されるメニューを追加します。

メニューを追加するには、次の手順を実行します。

  1. 「アプリケーション」のホームページにナビゲートします。

  2. 共有コンポーネント」を選択します。

  3. 「ナビゲーション」で、「リスト」を選択します。

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

  5. 「名前」に、Main Menuと入力します。

  6. リスト・テンプレート」で、「縦のサイドバー・リスト」を選択します。

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

リスト・エントリの作成

リストを作成したら、これにリスト・アイテムを追加します。各レポート・ページに対し、1つのリスト・アイテムを追加する必要があります。

「Assign Issues」のリスト・アイテムを追加するには、次の手順を実行します。

  1. リスト・エントリを作成 」をクリックします。

  2. 「リスト・エントリ・ラベル」に、Assign Issuesと入力します。

  3. 「ターゲット」で、次の手順を実行します。

    1. 「ページ」で、8を選択します。

    2. このページのページ区切りをリセット」を選択します。

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

その他の各レポートに対して1つのリスト・アイテムをアプリケーションに作成します。

アプリケーションのその他の各レポートのリスト・アイテムを追加するには、次の手順を実行します。

  1. リスト・エントリを作成 」をクリックします。

  2. 問題のリスト・アイテム属性を定義するには、次の手順を実行します。

    1. 「順序」に、20と入力します。

    2. 「リスト・エントリ・ラベル」に、Issuesと入力します。

    3. 「ターゲット」セクションで、次の手順を実行します。

      • 「ページ」で、6を選択します。

      • このページのページ区切りをリセット」を選択します。

      • 「キャッシュを消去」に、6と入力します。

        これによって、ページ6のすべての選択項目がセッション・ステートから消去されます。

  3. 作成後、別のものを作成」をクリックします。

  4. 「Issue Summary」のリスト・アイテム属性を定義するには、次の手順を実行します。

    1. 「順序」に、30と入力します。

    2. 「リスト・エントリ・ラベル」に、Issue Summary by Projectと入力します。

    3. 「ターゲット」セクションで、次の手順を実行します。

      • 「ページ」で、9を選択します。

      • このページのページ区切りをリセット」を選択します。

      • キャッシュを消去」に、9と入力します。

  5. 作成後、別のものを作成」をクリックします。

  6. 「Resolved by Month Identified」のリスト・アイテム属性を定義するには、次の手順を実行します。

    1. 「順序」に、40と入力します。

    2. 「リスト・エントリ・ラベル」に、Resolved by Month Identified (chart)と入力します。

  7. 作成後、別のものを作成」をクリックします。

  8. 「Target Resolution Dates」のリスト・アイテム属性を定義するには、次の手順を実行します。

    1. 「リスト」で、「Main Menu」を選択します。

    2. 「順序」に、50と入力します。

    3. 「リスト・エントリ・ラベル」に、Target Resolution Dates (calendar)と入力します。

    4. 「ターゲット」セクションで、次の手順を実行します。

      • 「ページ」で、11を選択します。

      • このページのページ区切りをリセット」を選択します。

  9. 作成後、別のものを作成」をクリックします。

  10. 「Average Days to Resolve」のリスト・アイテムを定義するには、次の手順を実行します。

    1. 「順序」に、60と入力します。

    2. 「リスト・エントリ・ラベル」に、Average Days to Resolve (chart)と入力します。

    3. 「ターゲット」の「ページ」で、12を選択します。

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

ホームページへのリストの挿入

リストを作成したら、これをホームページに含める必要があります。左マージンにリストを表示するには、ページ・テンプレートを、該当するリージョン位置をサポートするテンプレートに変更する必要があります。

ホームページのページ・テンプレートを変更するには、次の手順を実行します。

  1. ページの編集」アイコンをクリックします。

    ページ12(「Average Days to Resolve」)のページ定義が表示されます。

  2. 「ページ」フィールドに、1と入力して「実行」をクリックします。

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

  4. 「表示属性」を確認します。

  5. 「ページ・テンプレート」リストから、「サイドバー付きのタブなし」を選択します。

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

次に、メニューを含めるリージョンを作成します。

新しいリージョンを作成するには、次の手順を実行します。

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

  2. リスト」を選択して「次へ」をクリックします。

  3. 「表示属性」で、次の手順を実行します。

    1. 「タイトル」に、Menuと入力します。

    2. 「リージョン・テンプレート」で、「テンプレートなし」を選択します。

    3. 「表示ポイント」で、「ページ・テンプレートのリージョン位置2」を選択するか、またはクイック・リンク[Pos. 2]を選択します。

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

  4. 「リスト」で、「Main Menu」を選択します。

  5. リスト・リージョンを作成」をクリックします。

メンテナンス・ナビゲーションの追加

次に、リストとしてメンテナンス・ナビゲーションを追加します。このリストは、左マージンのレポートのすぐ下に表示されます。

  1. 「アプリケーション」のホームページにナビゲートします。

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

  3. 「ナビゲーション」で、「リスト」を選択します。

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

  5. 「名前」に、Maintenanceと入力します。

  6. リスト・テンプレート」で、「縦のサイドバー・リスト」を選択します。

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

次に、3つのリスト・アイテムを作成します。1つ目のリスト・アイテムは、2つのナビゲーション・リージョン間のセパレータとなります。他の2つは、ユーザーとプロジェクトの表示を可能にします。

リスト・アイテムを追加するには、次の手順を実行します。

  1. リスト・エントリを作成 」をクリックします。

  2. 1つ目のリスト・アイテムのリスト・アイテム属性を定義するには、次の手順を実行します。

    1. 「リスト・エントリ・ラベル」に、次のように入力します。

      &nbsp;
      
      
    2. 「ターゲット」の「ページ」で、1を選択します。

  3. 作成後、別のものを作成」をクリックします。

  4. 「Projects」のリスト・アイテム属性を定義するには、次の手順を実行します。

    1. 「順序」に、20と入力します。

    2. 「リスト・エントリ・ラベル」に、次のように入力します。

      Projects
      
      
    3. 「ターゲット」で、次の手順を実行します。

      • 「ページ」で、2を選択します。

      • このページのページ区切りをリセット」を選択します。

  5. 作成後、別のものを作成」をクリックします。

  6. 「People」のリスト・アイテム属性を定義するには、次の手順を実行します。

    1. 「順序」に、30と入力します。

    2. 「リスト・エントリ・ラベル」に、次のように入力します。

      People
      
      
    3. 「ターゲット」で、次の手順を実行します。

      • 「ページ」で、4を選択します。

      • このページのページ区切りをリセット」を選択します。

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

リージョンを作成して新しいリストを表示するには、次の手順を実行します。

  1. ページの編集」アイコンをクリックします。

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

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

  4. 「表示属性」で、次の手順を実行します。

    1. 「タイトル」に、Maintenanceと入力します。

    2. 「リージョン・テンプレート」で、「テンプレートなし」を選択します。

    3. 「表示ポイント」で、「ページ・テンプレートのリージョン位置2」を選択するか、またはクイック・リンク[Pos. 2]を選択します。

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

  5. 「リスト」で、「Maintenance」を選択します。

  6. リスト・リージョンを作成」をクリックします。

新しい問題ボタンの追加

次に、ユーザーをページ7(「Create/Edit Issue」)にナビゲートするボタンを作成します。

ボタンを含めるリージョンを作成するには、次の手順を実行します。

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

  2. HTML」を選択して、「次へ」をクリックします。

  3. 作成するHTMLリージョン・コンテナのタイプを選択します。 「HTML」を選択して、「次へ」をクリックします。

  4. 「表示属性」で、次の手順を実行します。

    1. 「タイトル」に、Buttonsと入力します。

    2. 「リージョン・テンプレート」で、「テンプレートなし」を選択します。

    3. 「表示ポイント」で、「ページ・テンプレートのリージョン位置1」を選択するか、またはクイック・リンク[Pos. 1]を選択します。

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

  5. リージョンの作成」をクリックします。

ボタンを追加するには、次の手順を実行します。

  1. 「ボタン」で、「作成」アイコンをクリックします。

  2. 「リージョン」で、「Buttons」を選択して「次へ」をクリックします。

  3. 「ボタン位置」で、デフォルトの「リージョン位置にボタンを作成」を受け入れて「次へ」をクリックします。

  4. 「ボタン属性」で、次の手順を実行します。

    1. 「ボタン名」に、ADDと入力します。

    2. 「ラベル」に、次のように入力します。

      新しい問題を追加
      
      
    3. 「アクション」で、「ページを送信せずにURLにリダイレクト」を選択します。

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

  5. 「ボタン・テンプレート」で、「ボタン」を選択して「次へ」をクリックします。

  6. 「位置」で、「リージョンの上部」を選択して「次へ」をクリックします。

    「ブランチ」ページで、正しいページをコールし、キャッシュを消去して、「作成」および「取消」ボタンによってユーザーがホームページに戻されることを指定する必要があります。

  7. 「ブランチ」で、次の手順を実行します。

    1. 「ページ」で、7を選択します。

    2. 「キャッシュを消去」に、7と入力します。

    3. 「次のアイテムを設定」に、次のように入力します。

      P7_PREV_PAGE
      
      
    4. 「次の値を使用」に、1を入力します。

  8. ボタンの作成」をクリックします。

期限切れ問題のレポートの追加

次に、ホームページにコンテンツを追加します。この演習では、期限切れの問題を表示するレポートを追加します。このレポートの問合せによって、未解決のすべての問題と、過ぎてしまった解決目標日が取得されます。

期限切れの問題を表示するレポートを追加するには、次の手順を実行します。

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

  2. レポート」を選択して「次へ」をクリックします。

  3. 「レポート実装」で、「SQLレポート」を選択して「次へ」をクリックします。

  4. 「表示属性」で、「タイトル」にOverdue Issuesと入力して「次へ」をクリックします。

  5. 「SQL問合せを入力」に、次のように入力します。

    SELECT i.issue_id,
           i.priority,
           i.issue_summary,
           p.person_name assignee,
           i.target_resolution_date,
           r.project_name
      FROM ht_issues i,
           ht_people p,
           ht_projects r
     WHERE i.assigned_to = p.person_id (+)
       AND i.related_project = r.project_id
       AND i.target_resolution_date < sysdate
       AND i.status != 'Closed'
    
    

    割当てはオプションであるため、外部結合が必要です。

  6. リージョンの作成」をクリックします。

リージョンを作成したら、ヘッダーを編集し、サマリーに問題の詳細を表示するリンクを作成する必要があります。

列ヘッダーを編集するには、次の手順を実行します。

  1. 「リージョン」で、「Overdue Issues」の左にある「レポート」を選択します。

  2. 「ヘッダー・タイプ」で、「カスタム」を選択します。

  3. ISSUE_IDで、ヘッダーを削除します。

  4. ISSUE_SUMMARYで、ヘッダーを次のように編集します。

    Summary
    
    
  5. ASSIGNEEで、ヘッダーを次のように変更します。

    Assigned To
    
    
  6. TARGET_RESOLUTION_DATEで、次の手順を実行します。

    1. ヘッダー」に、次のように入力します。

      Target<br>Resolution<br>Date
      
      
    2. 「列の位置合せ」で、「中央」を選択します。

    3. 「ヘッダーの位置合せ」で、「中央」を選択します。

  7. ISSUE_IDで、「表示」を選択解除します。

    これによって、問合せはリンクに渡されますが、表示はされなくなります。

  8. ISSUE_ID以外のすべての列で、「ソート」を選択します。

  9. TARGET_RESOLUTION_DATEで、「ソート順序」に「1」を選択します。

  10. ISSUE_SUMMARYで、「ソート順序」に「2」を選択します。

ISSUE_SUMMARYの列属性を編集するには、次の手順を実行します。

  1. ISSUE_SUMMARYの左にある「編集」をクリックします。

  2. 「列リンク」までスクロールして、次の手順を実行します。

    1. 「リンク・テキスト」で、クイック・リンク[Icon 3]を使用します。

    2. 「ページ」で、7を選択します。

    3. 「キャッシュを消去」で、7を選択します。

    4. 「アイテム1」に、次の名前を入力します。

      P7_ISSUE_ID
      
      
    5. 「アイテム1」に、次の値を入力します。

      #ISSUE_ID#
      
      
    6. 「アイテム2」に、次の名前を入力します。

      P7_PREV_PAGE
      
      
    7. 「アイテム2」に、次の値を入力します。

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

レイアウトおよびページ区切り属性を選択するには、次の手順を実行します。

  1. 「レイアウトおよびページ区切り」までスクロールして、次の手順を実行します。

    1. 「ページ区切りスキーム」で、「検索エンジン1、2、3、4(ページ区切りに基づいて設定)」を選択します。

    2. 「行数」に、5と入力します。

  2. 「ソート」で、「昇順イメージ」および「降順イメージ」のグレーの矢印を選択します。

  3. 「メッセージ」セクションで、「データが見つからなかった場合のメッセージ」に次のように入力します。

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

未割当ての問題のレポートの追加

次に追加するレポートは、未割当て(未解決)の問題を表示します。このレポートは、「Overdue Issues」と非常に似ています。これは手動で作成せずに、「Overdue Issues」レポートをコピーしてから変更します。

既存のレポートをコピーして、「Unassigned Issues」レポートを作成するには、次の手順を実行します。

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

  2. 「名前」で、「Overdue Issues」を選択します。

  3. 「コピー先ページ」で、デフォルトの「1」を受け入れて「次へ」をクリックします。

  4. 「リージョン名」に、Unassigned Issuesと入力します。

  5. リージョンをコピー」をクリックします。

問合せを変更し、レポート・リージョンを編集するには、次の手順を実行します。

  1. 「リージョン」セクションで、「Unassigned Issues」を選択します。

  2. リージョン・ソース」に、次のように入力します。

    SELECT i.issue_id,
           i.priority,
           i.issue_summary,
           i.target_resolution_date,
           r.project_name,
           p.person_name identifiee
      FROM ht_issues i,
           ht_people p,
           ht_projects r
     WHERE i.assigned_to IS NULL
       AND i.status != 'Closed'
       AND i.related_project = r.project_id
       AND i.identified_by = p.person_id
    
    
  3. レポート属性」タブを選択します。

    以前に定義した列には、変更された属性が保持されていることに注意してください。

  4. IDENTIFIEEに、次のヘッダーを入力します。

    Identified By
    
    
  5. 「メッセージ」で、「データが見つからなかった場合のメッセージ」に次のように入力します。

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

最近発見された問題のレポートの追加

最後に、最近発見された問題のレポートを追加します。基礎となる問合せによって、最近発見された問題が5つ表示されます。この演習では、既存のレポートをコピーしてから変更します。

既存のレポートをコピーして、最近発見された問題のレポートを作成するには、次の手順を実行します。

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

  2. 「名前」で、「Unassigned Issues」を選択します。

  3. 「コピー先ページ」で、デフォルトの「1」を受け入れて「次へ」をクリックします。

  4. 「リージョン名」に、Recently Opened Issuesと入力します。

  5. リージョンをコピー」をクリックします。

問合せを変更し、レポート・リージョンを編集するには、次の手順を実行します。

  1. 「リージョン」で、「Recently Opened Issues」の左にある「レポート」をクリックします。

  2. すべての列に対して、次の手順を実行します。

    1. ソート」を選択解除して、ソートを無効にします。

    2. 「順序」を-に設定します。

  3. リージョン定義」タブを選択します。

  4. リージョン・ソース」に、次のように入力します。

    SELECT issue_id,
           priority,
           issue_summary,
           assignee,
           target_resolution_date,
           project_name,
           identifiee
    FROM
    (
    SELECT i.issue_id,
           i.priority,
           i.issue_summary,
           p.person_name assignee,
           i.target_resolution_date,
           r.project_name,
           p2.person_name identifiee
      FROM ht_issues i,
           ht_people p,
           ht_people p2,
           ht_projects r
     WHERE i.assigned_to = p.person_id (+)
       AND i.related_project = r.project_id
       AND i.identified_by = p2.person_id
       AND i.created_date > (sysdate - 7)
     ORDER BY i.created_date desc
    )
     WHERE rownum < 6
    
    
  5. レポート属性」タブを選択します。

  6. ASSIGNEEで、ASSIGNEEがISSUE_SUMMARYのすぐ後ろに来るまで「編集」列の右にあるグレーの上矢印をクリックします。

  7. ASSIGNEEで、ヘッダーを次のように変更します。

    Assigned To
    
    
  8. 「レイアウトおよびページ区切り」セクションまでスクロールします。「ページ区切りスキーム」で、「- ページ区切りが選択されていない -」を選択します。

  9. 「メッセージ」セクションで、「データが見つからなかった場合のメッセージ」に次のように入力します。

    No Recently Opened Issues.
    
    
    
  10. 変更の適用」をクリックします。

プロジェクトごとの未解決の問題の追加

次に、「Open Issues by Project」を表示する円グラフを追加します。

円グラフを追加するには、次の手順を実行します。

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

  2. チャート」を選択して「次へ」をクリックします。

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

  4. 「タイトル」で、Open Issues by Projectと入力して「次へ」をクリックします。

  5. 「SVGチャートのSQL問合せを入力」に、次のように入力します。

    SELECT NULL LINK,
           NVL(r.project_name,'No Project') label,
           COUNT(r.project_name) value
      FROM ht_issues i,
           ht_projects r
     WHERE i.status = 'Open'
       AND i.related_project = r.project_id
    GROUP BY NULL, r.project_name
    ORDER BY r.project_name
    
    

    この問合せにはリンクは含まれないこと、ラベルはProject Nameであること、また、円グラフで計算および使用される値はプロジェクト別の未解決の問題の合計数であることに注意してください。

  6. リージョンの作成」をクリックします。

チャートを編集するには、次の手順を実行します。

  1. 「リージョン」で、「Open Issues by Project」の左にある「チャート」を選択します。

  2. 「チャート幅」に、500と入力します。

  3. 「チャート高さ」に、200と入力します。

  4. 「チャート・タイトル」で、タイトルを削除します。

  5. 「チャート問合せ」で、「データが見つからなかった場合のメッセージ」に次のように入力します。

    No Open Issues.
    
    
  6. 「フォントの設定」の「凡例」で、「フォント・サイズ」に「14」を選択します。

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

修正されたページを表示するには、「ページの実行」アイコンをクリックします。ホームページが図10-16のように表示されます。

図10-16 修正されたホームページ

iss_home2.gifの説明が続きます。
iss_home2.gifの説明

ブレッドクラムの追加

前述の演習で、ホームページにメニューを作成し、アプリケーション内の様々なページにナビゲートできるようにしました。次に、ホームページにナビゲートする方法を指定する必要があります。 これは、ブレッドクラムを利用して行います。 アプリケーションを作成すると、ウィザードによってブレッドクラムが自動的に作成されます。

次の演習では、ブレッドクラム・エントリを追加し、次にそのブレッドクラムをページ0のリージョンに挿入します。ページ0に追加するコンポーネントは、アプリケーションのすべてのページで表示できます。

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

ブレッドクラム・ページへのナビゲート

ブレッドクラム・ページへナビゲートするには、次の手順を実行します。

  1. 「アプリケーション」のホームページにナビゲートします。

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

  3. 「ナビゲーション」で、「ブレッドクラム」を選択します。

  4. ブレッドクラム「ブレッドクラム」を選択します。

ブレッドクラム・エントリの追加

次に、ブレッドクラム・エントリを追加します。

ページ1の既存のブレッドクラム・エントリを編集するには、次の手順を実行します。

  1. 「ブレッドクラム・エントリ」で、「ページ1」をクリックします。

  2. 「ブレッドクラム」で、「ページ」に1と入力します。

  3. 「短縮名」に、Homeと入力します。

  4. 「ターゲット」で、「ページ」に1と入力します。

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

ページ2のブレッドクラム・エントリを作成するには、次の手順を実行します。

  1. ブレッドクラム・エントリの作成」をクリックします。

  2. 「ブレッドクラム」で、「ページ」に2と入力します。

  3. 「エントリ」で、次の手順を実行します。

    1. 「親エントリ」で、「Home」を選択します。

    2. 「短縮名」に、Projectsと入力します。

  4. 「ターゲット」で、「ページ」に2と入力します。

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

ページ3のブレッドクラム・エントリを作成するには、次の手順を実行します。

  1. ブレッドクラム・エントリの作成」をクリックします。

  2. 「ブレッドクラム」で、「ページ」に3と入力します。

  3. 「エントリ」で、次の手順を実行します。

    1. 「親エントリ」で、「Projects」を選択します。

    2. 「短縮名」に、Create/Edit Projectsと入力します。

  4. 「ターゲット」で、「ページ」に3と入力します。

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

ページ4のブレッドクラム・エントリを作成するには、次の手順を実行します。

  1. ブレッドクラム・エントリの作成」をクリックします。

  2. 「ブレッドクラム」で、「ページ」に4と入力します。

  3. 「エントリ」で、次の手順を実行します。

    1. 「親エントリ」で、「Home」を選択します。

    2. 「短縮名」に、Peopleと入力します。

  4. 「ターゲット」で、「ページ」に4と入力します。

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

ページ5のブレッドクラム・エントリを作成するには、次の手順を実行します。

  1. ブレッドクラム・エントリの作成」をクリックします。

  2. 「ブレッドクラム」で、「ページ」に5と入力します。

  3. 「エントリ」で、次の手順を実行します。

    1. 「親エントリ」で、「People」を選択します。

    2. 「短縮名」に、Create/Edit Person Informationと入力します。

  4. 「ターゲット」で、「ページ」に5と入力します。

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

ページ6のブレッドクラム・エントリを作成するには、次の手順を実行します。

  1. メニュー・オプションを作成」をクリックします。

  2. 「ブレッドクラム」で、「ページ」に6と入力します。

  3. 「エントリ」で、次の手順を実行します。

    1. 「親エントリ」で、「Home」を選択します。

    2. 「短縮名」に、Issuesと入力します。

  4. 「ターゲット」で、「ページ」に6と入力します。

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

ページ7のブレッドクラム・エントリを作成するには、次の手順を実行します。

  1. ブレッドクラム・エントリの作成」をクリックします。

  2. 「ブレッドクラム」で、「ページ」に7と入力します。

  3. 「エントリ」で、次の手順を実行します。

    1. 「親エントリ」で、「Home」を選択します。

    2. 「短縮名」に、Create/Edit Issueと入力します。

  4. 「ターゲット」で、「ページ」に7と入力します。

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

ページ8のブレッドクラム・エントリを作成するには、次の手順を実行します。

  1. メニュー・オプションを作成」をクリックします。

  2. 「ブレッドクラム」で、「ページ」に8と入力します。

  3. 「エントリ」で、次の手順を実行します。

    1. 「親エントリ」で、「Home」を選択します。

    2. 「短縮名」に、Assign Issuesと入力します。

  4. 「ターゲット」で、「ページ」に8と入力します。

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

ページ9のブレッドクラム・エントリを作成するには、次の手順を実行します。

  1. ブレッドクラム・エントリの作成」をクリックします。

  2. 「ブレッドクラム」で、「ページ」に9と入力します。

  3. 「エントリ」で、次の手順を実行します。

    1. 「親エントリ」で、「Home」を選択します。

    2. 「短縮名」に、Issue Summary by Projectと入力します。

  4. 「ターゲット」で、「ページ」に9と入力します。

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

ページ10のブレッドクラム・エントリを作成するには、次の手順を実行します。

  1. ブレッドクラム・エントリの作成」をクリックします。

  2. 「ブレッドクラム」で、「ページ」に10と入力します。

  3. 「メニュー・オプション」で、次の手順を実行します。

    1. 「親エントリ」で、「Home」を選択します。

    2. 「短縮名」に、Resolved by Month Identifiedと入力します。

  4. 「ターゲット」で、「ページ」に10と入力します。

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

ページ11のブレッドクラム・エントリを作成するには、次の手順を実行します。

  1. ブレッドクラム・エントリの作成」をクリックします。

  2. 「ブレッドクラム」で、「ページ」に11と入力します。

  3. 「エントリ」で、次の手順を実行します。

    1. 「親エントリ」で、「Home」を選択します。

    2. 「短縮名」に、Target Resolution Datesと入力します。

  4. 「ターゲット」で、「ページ」に11と入力します。

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

ページ12のブレッドクラム・エントリを作成するには、次の手順を実行します。

  1. ブレッドクラム・エントリの作成」をクリックします。

  2. 「ブレッドクラム」で、「ページ」に12と入力します。

  3. 「エントリ」で、次の手順を実行します。

    1. 「親エントリ」で、「Home」を選択します。

    2. 「短縮名」に、Average Days to Resolveと入力します。

  4. 「ターゲット」で、「ページ」に12と入力します。

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

ページ0の作成

ブレッドクラムが完成したら、ページ0を作成し、ブレッドクラム・メニューを含めるリージョンを作成する必要があります。

ページ0を作成するには、次の手順を実行します。

  1. 「アプリケーション」のホームページにナビゲートします。

  2. ページの作成」をクリックします。

  3. 空白ページ」を選択して「次へ」をクリックします。

  4. 「ページ」に、0を入力して「次へ」をクリックします。

  5. 「名前」に、Breadcrumbsと入力して「次へ」をクリックします。

  6. 「タブを指定」で、デフォルトの「いいえ」を受け入れて「次へ」をクリックします。

  7. 選択内容を確認して、「終了」をクリックします。

ブレッドクラムを含めるリージョンの作成

ブレッドクラムを含めるリージョンを作成するには、次の手順を実行します。

  1. 「成功」で、「ページの編集」を選択します。

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

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

  3. 「一般的なリージョン・タイプを選択」で、「ブレッドクラム」を選択して「次へ」をクリックします。

  4. 「ブレッドクラム・コンテナ・リージョン」で、次の手順を実行します。

    1. 「タイトル」に、Breadcrumbsと入力します。

    2. 「リージョン・テンプレート」で、「テンプレートなし」を選択します。

    3. 「表示ポイント」で、「ページ・テンプレートのリージョン位置1」を選択します。

      これを選択すると、ページのその他のすべてのコンテンツの上にブレッドクラムが表示されます。

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

  5. 「ブレッドクラム」で、次の手順を実行します。

    1. 「ブレッドクラム」で、「Breadcrumbs」を選択します。

    2. 「メニュー・テンプレート」で、「ブレッドクラム・メニュー」を選択します。

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

  6. 「ブレッドクラム・エントリ」で、デフォルト値を受け入れて「次へ」をクリックします。

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

「ページの編集」をクリックして、ホームページに戻ります。 ページ0の「ページ定義」が表示されたら、「次のページ」アイコン(>)をクリックします。ページ1のページ定義が表示されます。完成したホームページを表示するには、「ページの実行」アイコンをクリックします。ホームページが図10-17のように表示されます。

図10-17 ブレッドクラム・メニュー付きの修正されたホームページ

iss_home3.gifの説明が続きます。
iss_home3.gifの説明

ブレッドクラムは、上部のバーに表示されます。ページの左側にあるメンテナンス・メニューのいずれかのアイテムをクリックします。ブレッドクラム・メニューがどのように変化するか、ブレッドクラムの変化を確認します。

この段階で、アプリケーションは完全に機能しますが、セキュリティおよび電子メール通知が欠落しています。これらについては、次のセクションで説明します。

拡張機能の追加

アプリケーションが完全に機能するようになったら、計画およびプロジェクト分析段階で示した拡張機能を追加することができます。

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

電子メール通知のサポートの追加

計画およびプロジェクト分析フェーズでは、次の2つの電子メール要件が作成されました。

  • 問題がユーザーに割り当てられた際に、ユーザーに通知します。

  • 問題が期限切れになった際に、プロジェクト・リーダーに通知します。

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

電子メール通知の動作方法

Oracle HTML DBアプリケーション内からメールを送信するには、提供されているHTMLDB_MAILパッケージをコールするPL/SQLプロセスを作成します。

電子メールはOracle HTML DBからすぐには送信されず、DBMS_JOBによってキューがプッシュされるまで、一時キューに格納されます。DBMS_JOB は、SMTP_HOST_ADDRESSおよびSMTP_HOST_PORTというプリファレンスを使用して、キュー内のメールを送信します。デフォルトでは、これらのプリファレンスはlocalhostおよび25に設定されています。

Oracle HTML DBがインストールされているサーバーがSMTPサービス用に構成されていない場合は、SMTP_HOST_ADDRESSプリファレンスを変更する必要があります。使用するインスタンスが電子メールを送信するように適切に構成されていることを、Oracle HTML DB管理者に確認します。

HTMLDB_MAILパッケージのSENDプロシージャの内容を次に示します。

PROCEDURE SEND
Argument Name                  Type                    In/Out Default?
------------------------------ ----------------------- ------ --------
P_TO                           VARCHAR2                IN
P_FROM                         VARCHAR2                IN
P_BODY                         VARCHAR2                IN
P_BODY_HTML                    VARCHAR2                IN     DEFAULT
P_SUBJ                         VARCHAR2                IN     DEFAULT
P_CC                           VARCHAR2                IN     DEFAULT
P_BCC                          VARCHAR2                IN     DEFAULT

新しい割当ての通知の追加

最初に、ユーザーが新しく割り当てられた際のそのユーザーへの通知を追加します。割当ての作成または変更は、次の2つの異なるページから実行できます。

  • Create/Edit Issues

  • Assign Issues

「Create/Edit Issues」ページでは、初期値を格納し、すべての変更に対してその初期値を確認して、割当てが作成または変更されたかどうかを確認できます。「Assign Issues」は表形式フォームであるため、古い値と新しい値を確認する方法はありません。このため、通知を実装する最適な方法は、HT_ISSUESでBEFORE INSERTおよびBEFORE UPDATEトリガーを使用することです。SQLワークショップを使用すると、このトリガーをプログラムによって作成できます。


注意:

作成するトリガーは、電子メールを送信します。 このアプリケーションを使用する場合は、p_top_fromをユーザー自身の電子メール・アドレスに変更して、問題の割当てや再割当てを行うたびに無効なアドレスを持つ電子メールが作成されないようにする必要があります。

HT_ISSUESにBEFORE INSERTおよびBEFORE UPDATEトリガーを作成するには、次の手順を実行します。

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

  2. SQLワークショップ」をクリックします。

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

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

  5. 「作成するデータベース・オブジェクトのタイプの選択」で、「トリガー」を選択して「次へ」をクリックします。

  6. 「名前」で、次の手順を実行します。

    1. 「スキーマ」で、適切なスキーマを選択して「次へ」をクリックします。

    2. 「表名」で、「HT_ISSUES」を選択して「次へ」をクリックします。

  7. 「アクション」で、デフォルトの「トリガーを作成」を受け入れて「次へ」をクリックします。

  8. 「定義」で、次の手順を実行します。

    1. 「トリガー名」に、BIU_HT_ISSUES_NOTIFY_ASSIGNEEと入力します。

    2. 「実行ポイント」で、「」を選択します。

    3. 「オプション」で、「挿入」と「更新」を選択します。

    4. トリガー本体」に、次のように入力します。

      IF (INSERTING AND
          :new.assigned_to IS NOT NULL)
         OR
         (UPDATING AND
          (:old.assigned_to IS NULL OR
           :new.assigned_to != :old.assigned_to) AND
         :new.assigned_to IS NOT NULL)
         THEN
            FOR c1 IN
               (SELECT person_name, person_email
                  FROM ht_people
                 WHERE person_id = :new.assigned_to)
            LOOP
      
            IF c1.person_email IS NOT NULL
               THEN
                  FOR c2 IN
                      (SELECT project_name
                         FROM ht_projects
                        WHERE project_id = :new.related_project)
                  LOOP
      
                  HTMLDB_MAIL.SEND(
                     p_to => c1.person_email,
                     p_from => c1.person_email,
                     p_body =>
                        'You have been assigned a new issue. '||
                        'The details are below. ' ||chr(10)||
                         chr(10)||
                        ' Project: '|| c2.project_name ||chr(10)||
                        ' Summary: '||:new.issue_summary ||chr(10)||
                        ' Status: '||:new.status ||chr(10)||
                        'Priority: '||nvl(:new.priority,'-'),
                    p_subj => 'New Issue Assignment');
                  END LOOP;
            END IF;
      
        END LOOP;
      END IF;
      
      
    5. 次へ」をクリックします。

  9. コードを確認するには、「SQL」アイコンを展開します。

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


注意:

このアプリケーションの使用を予定している場合は、このトリガーを無効にするか、またはp_top_fromをユーザー自身の電子メールに変更して、問題の割当てや再割当てを行うたびに無効なアドレスを持つ電子メールが作成されないようにする必要があります。

期限切れの問題の通知の追加

2つ目の電子メール通知では、問題が期限切れになるとプロジェクト・リーダーに通知されます。解決目標日が過ぎると、問題は期限切れになりますが、終結はしていません。問題の期限が切れたかどうかの判別にユーザーは介入しないため、ページ上で、またはトリガーで期限切れを確認することはできません。

期限切れの問題を確認する最適な方法は、HT_ISSUES表を問い合せるパッケージを記述することです。パッケージは、期限切れの問題を検出すると、プロジェクト・リーダーに電子メールを送信します。このプロシージャは、プロジェクト別に問題を確認するため、プロジェクト・リーダーが受信する電子メールは、各問題で1つではなく、すべての期限切れの問題で1つのみです。パッケージは、dbms_jobによって1日に1回コールされます。

オブジェクトの作成機能は、次のいずれかの方法で使用できます。

  • SQLワークショップ内からパッケージおよびパッケージ本体を作成する。

  • SQLコマンド・プロセッサを使用して、createコマンドを実行する。

この演習では、SQLコマンド・プロセッサを使用します。

パッケージを作成するには、次の手順を実行します。

  1. 「SQLワークショップ」のホームページにナビゲートします。

  2. SQLコマンド」を選択します。

  3. スキーマ」で、適切なスキーマを選択します。

  4. 「SQL文またはPL/SQL文を入力」に、次のように入力します。

    CREATE OR REPLACE package ht_check_overdue_issues
    AS
       PROCEDURE email_overdue;
    END;
    /
    
    
  5. 実行」をクリックします。

パッケージ本体を作成するには、次の手順を実行します。

  1. 「SQLワークショップ」のホームページにナビゲートします。

  2. SQLコマンド・プロセッサ」を選択します。

  3. スキーマ」で、適切なスキーマを選択します。

  4. 「SQL文またはPL/SQL文を入力」に、次のように入力します。

    CREATE OR REPLACE PACKAGE BODY ht_check_overdue_issues
    AS
    
    PROCEDURE email_overdue
    IS
       l_msg_body varchar2(32000) := null;
       l_count number             := 0;
    BEGIN
    
    FOR c1 IN
       (SELECT pr.project_id,
               pr.project_name,
               pe.person_name,
               pe.person_email
          FROM ht_projects pr,
               ht_people pe
         WHERE pr.project_id = pe.assigned_project
           AND pe.person_role = 'Lead')
    LOOP
       FOR c2 IN
          (SELECT i.target_resolution_date,
                  i.issue_summary,
                  p.person_name,
                  i.status,
                  i.priority
             FROM ht_issues i,
                  ht_people p
            WHERE i.assigned_to = p.person_id (+)
              AND i.related_project = c1.project_id
              AND i.target_resolution_date < SYSDATE
              AND i.status != 'Closed'
         ORDER BY i.target_resolution_date, i.issue_summary)
    LOOP
       IF l_count = 0
          THEN
             l_msg_body :=
               'As of today, the following issues '||
               'are overdue:'||chr(10)||
                chr(10)||
               ' Project: '|| c1.project_name ||chr(10)||
                chr(10)||
              '     Target: '||c2.target_resolution_date ||chr(10)||
              '    Summary: '||c2.issue_summary ||chr(10)||
              ' Status:     '||c2.status ||chr(10)||
              ' Priority:   '||c2.priority ||chr(10)||
              'Assigned to: '||c2.person_name;
     ELSE
            l_msg_body := l_msg_body ||chr(10)||
                chr(10)||
             '     Target: '||c2.target_resolution_date ||chr(10)||
             '    Summary: '||c2.issue_summary ||chr(10)||
             '     Status: '||c2.status ||chr(10)||
             ' Priority:   '||c2.priority ||chr(10)||
             'Assigned to: '||c2.person_name;
    END IF;
    l_count := l_count + 1;
    END LOOP;
    
     IF l_msg_body IS NOT NULL
       THEN
          HTMLDB_MAIL.SEND(
              p_to => c1.person_email,
            p_from => c1.person_email,
            p_body => l_msg_body,
            p_subj => 'Overdue Issues for Project '||
                       c1.project_name);
     END IF;
     l_count := 0;
    
    END LOOP;
    
    END email_overdue;
    
    END ht_check_overdue_issues;
    /
    
    
  5. 実行」をクリックします。

DBMS_JOBを作成するには、次の手順を実行します。


注意:

このジョブによって電子メールが生成されます。 ホスティングされたOracle HTML DBインスタンスを実行している場合は、次のスクリプトを実行しないでください。 Oracle HTML DBインスタンスをローカルで実行している際に、このスクリプトをテストする必要がある場合は、デモンストレーション・データを更新して、有効な電子メール・アドレスを含めてください。

  1. 「SQLワークショップ」のホームページにナビゲートします。

  2. SQLコマンド」を選択します。

  3. スキーマ」で、適切なスキーマを選択します。

  4. 「SQL文またはPL/SQL文を入力」に、次のように入力します。

    DECLARE
       jobno number;
    BEGIN
       DBMS_JOB.SUBMIT(
          job => jobno,
         what => 'BEGIN
                  ht_check_overdue_issues.email_overdue;
                  END;',
    next_date => SYSDATE,
     interval => 'TRUNC(SYSDATE)+(25/24)'
                 );
       COMMIT;
    END;
    /
    
    
  5. 実行」をクリックします。

このdbms_jobは、毎日深夜0時を過ぎると実行されます。


注意:

このアプリケーションの使用を予定している場合は、ht_check_overdue_issuesパッケージ本体のp_top_fromをユーザー自身の電子メール・アドレスに変更するか、またはdbms_jobを作成しないようにします。記述どおりのコードを実行すると、メール・キューに無効なアドレスを持つ電子メールが作成されます。


参照:

HTML DBアプリケーションから電子メールを送信する方法については、OTNを参照してください。
http://www.oracle.com/technology/products/database/htmldb/howtos/index.html


アプリケーション・セキュリティの追加

計画およびプロジェクト分析フェーズでは、2つのセキュリティ要件が作成されました。

  • CEOおよびマネージャのみが、プロジェクトおよびユーザーを定義および管理できます。

  • 割り当てられた後は、割り当てられたユーザーまたはプロジェクト・リーダーのみがその問題に関するデータを変更できます。

Oracle HTML DB内で、認可スキームを定義できます。認可は、ユーザー権限に基づいて、特定のコントロールまたはコンポーネントへのユーザーのアクセスを制御します。定義した後で、アクセスを制限するページ、リージョンまたはアイテムに認可スキームを関連付けることができます。各認可スキームは必要なときにのみ実行されます。ページ・ビューごとに1回検証するか、セッションごとに1回検証するかを定義します。

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

プロジェクトおよびユーザー定義の制限

1つ目の要件は、CEOおよびマネージャのみが、プロジェクトおよびユーザーを定義および管理できることです。この要件に対処するには、次の手順を実行します。

  • 認可スキームを作成して、現行ユーザーのロールを確認します。

  • 認可スキームを「作成」ページおよび「編集」ページにナビゲートするプロジェクトとユーザーのレポートのアイテムと関連付けます。

  • 認可スキームを「作成」ページおよび「編集」ページそのものと関連付けて、ユーザーがターゲット・ページへのURLを手動で編集し、セキュリティを回避しないようにします。

現行ユーザーを参照するには、セッション変数:APP_USERを使用します。これは、ユーザーの電子メール・アドレス(Oracle HTML DBのユーザー名と同じ)と比較されます。このタイプのセキュリティをコーディングする場合は、常に、すべてのセキュリティを通過できるユーザーでコーディングする必要があります。このユーザーは、開発およびテストで非常に役に立ちます。この方法を実行できない場合は、自分自身をCEOまたはマネージャとして定義しないかぎり、制限付きページにアクセスすることはできません。

認可スキームの作成

認可スキームを作成するには、次の手順を実行します。

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

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

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

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

  5. 「セキュリティ」で、「認可スキーム」を選択します。

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

  7. 「認可スキームを作成」で、デフォルトの「最初から」を受け入れて「次へ」をクリックします。

  8. 「認可スキームの指定」の「名前」に、次のように入力します。

    USER_CEO_OR_MANAGER
    
    
  9. 「認可スキーム」で、次の手順を実行します。

    1. 「スキーム・タイプ」で、「EXISTS SQL問合せ」を選択します。

    2. 「式1」に、次のように入力します。

      SELECT '1'
        FROM ht_people
       WHERE (upper(person_email) = UPPER(:APP_USER) AND
              person_role IN ('CEO','Manager'))
          OR (UPPER(:APP_USER) = 'HOWTO')
      
      
    3. 「スキームの違反時に表示されるエラー・メッセージを指定」に、次のように入力します。

      You are not authorized to access this function.
      
      
  10. 「評価ポイント」までスクロールします。「認可スキームを検証」で、「セッションごとに1回」を選択します。

    通常、割り当てられたロールは指定されたセッション内では変更されないため、このインスタンスでは、この選択で十分です。

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

次に、認可スキームを適切なオブジェクトと関連付ける必要があります。

「Projects」レポートのオブジェクトの関連付け

認可スキームを「Projects」レポートと関連付けるには、次の手順を実行します。

  1. ページの編集」アイコンをクリックします。

  2. 「ページ」に、2と入力して「実行」をクリックします。

    ページ2(「Projects」)のページ定義が表示されます。

  3. 「リージョン」で、「Projects」の左にある「レポート」を選択します。

  4. PROJECT_IDの左にある「編集」をクリックします。

  5. 「認可」で、認可スキームの「USER_CEO_OR_MANAGER」を選択します。

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

  7. 取消」をクリックします。

認可スキームを「Projects」レポートの「作成」ボタンと関連付けるには、次の手順を実行します。

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

  2. 「ボタン」で、「作成」を選択します。

  3. 「認可」で、認可スキームの「USER_CEO_OR_MANAGER」を選択します。

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

オブジェクトと「Create/Edit Project」レポートとの関連付け

認可スキームを「Create/Edit Project」ページと関連付けるには、次の手順を実行します。

  1. 「次のページ」アイコン(>)をクリックして、ページ3にナビゲートします。

    ページ3(「Create/Edit Project」)のページ定義が表示されます。

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

  3. 「セキュリティ」までスクロールします。

  4. 認可スキームの「USER_CEO_OR_MANAGER」を選択します。

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

オブジェクトと「People」レポートとの関連付け

認可スキームを「People」レポートと関連付けるには、次の手順を実行します。

  1. 「次のページ」アイコン(>)をクリックして、ページ4にナビゲートします。

    ページ4(「People」)のページ定義が表示されます。

  2. 「リージョン」で、「People」の左にある「レポート」を選択します。

  3. PERSON_IDの左にある「編集」アイコンをクリックします。

  4. 「認可」で、認可スキームの「USER_CEO_OR_MANAGER」を選択します。

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

  6. 取消」をクリックします。

認可スキームを「People」レポートの「作成」ボタンと関連付けるには、次の手順を実行します。

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

  2. 「ボタン」で、「作成」を選択します。

  3. 「認可」で、認可スキームの「USER_CEO_OR_MANAGER」を選択します。

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

認可スキームを「Create/Edit Person Information」ページと関連付けるには、次の手順を実行します。

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

    ページ5(「Create/Edit Person Information」)のページ定義が表示されます。

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

  3. 「セキュリティ」までスクロールします。

  4. 認可スキームの「USER_CEO_OR_MANAGER」を選択します。

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

HOWTOというユーザー名を持つユーザーを作成すると、これをテストできます。HOWTOユーザーは、編集リンクを表示可能である必要があります。その後で、HOWTO2という別のユーザーを作成します。このユーザーは、リンクを表示不可能である必要があります。

問題の変更の制限

2つ目の要件は、問題が割り当てられた後で、割り当てられたユーザー(またはプロジェクト・リーダー)のみが問題に関するデータを変更できることです。この要件は、すべての問題に対して変更を行うため、多少複雑です。

現在、ユーザーが問題を変更できるページは、「Create/Edit Issues」ページと「Assign Issues」ページの2つです。「Assign Issues」ページで表示される問題は、未割当ての問題のみです。問題が未割当てのため、セキュリティは必要ありません。

ユーザーが問題を編集するためにナビゲートできる場所は多数あります。

  • ホームページの3つのリージョンで問題を表示するか、または編集リンクを含めます。

  • 「Issues」レポートには、各問題を編集するためのリンクがあります。

  • 「Target Resolution Dates」レポートを使用すると、ユーザーが問題を選択して編集できます。

他のユーザーはデータを変更することはできませんが、進捗および解決を表示できるように、問題に関するすべての詳細データをユーザーが表示できるようにする場合があります。この要件の場合、最適な方法は、ページ・ビューごとに1回評価される認可スキームを作成することです。

認可スキームを、「Create/Edit Issues」ページの「変更を適用」および「削除」ボタンの両方と関連付けます。この方法では、認可されていないユーザーは、すべての詳細を表示できますが、変更を行っても、その変更を保存することはできません。

追加したセキュリティでは、HT_ISSUESで挿入、更新および削除を行うプロセスと認可スキームを関連付けます。これによって、アプリケーションでは、他のユーザーによる変更の適用プロセスをコールするためのURLの変更を防ぐことができます。変更できない理由をユーザーに知らせるには、認可に失敗した際に説明が表示されるHTMLリージョンを追加します。このスキームのSQLはP7_ISSUE_IDを参照する必要があるため、「Create/Edit Issues」ページに固有になります。また、評価される時点で、必要なデータはセッション・ステートで使用できないため、データベースからデータを取得する必要があります。使用可能なアイテムは、リンクによって渡されるP7_ISSUE_IDのみです。

認可スキームの作成

認可スキームを作成するには、次の手順を実行します。

  1. 「アプリケーション」のホームページにナビゲートします。

  2. 共有コンポーネント」を選択します。

  3. 「セキュリティ」で、「認可スキーム」を選択します。

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

  5. 「作成メソッド」で、デフォルトの「最初から」を受け入れて「次へ」をクリックします。

  6. 「認可スキームの指定」の「名前」に、次のように入力します。

    P7_ASSIGNED_OR_PROJECT_LEAD
    
    
  7. 「認可スキーム」で、次の手順を実行します。

    1. 「スキーム・タイプ」で、「ブールを戻すPL/SQLファンクション」を選択します。

    2. 「式1」に、次のように入力します。

      DECLARE
         l_related_project   integer;
         l_assigned_to       integer;
         l_person_id         integer;
         l_person_role       varchar2(7);
         l_assigned_project  integer;
      BEGIN
      
      -- User is HOWTO or new Issue
      IF :APP_USER = 'HOWTO' or
         :P7_ISSUE_ID IS NULL
         THEN RETURN TRUE;
      END IF;
      
      FOR c1 IN (SELECT related_project,
                        assigned_to
                   FROM ht_issues
                  WHERE issue_id = :P7_ISSUE_ID)
      LOOP
         l_related_project := c1.related_project;
         l_assigned_to     := c1.assigned_to;
      END LOOP;
      
      -- Issue not yet assigned
      IF l_assigned_to IS NULL
      THEN RETURN TRUE;
      END IF;
      
      FOR c2 IN (SELECT person_id,
                 person_role,
                 assigned_project
            FROM ht_people
           WHERE upper(person_email) = upper(:APP_USER))
      LOOP
         l_person_id        := c2.person_id;
         l_person_role      := c2.person_role;
         l_assigned_project := c2.assigned_project;
      END LOOP;
      
      -- User is lead of related project
      IF l_person_role = 'Lead' and
         l_assigned_project = l_related_project
         THEN RETURN TRUE;
      
      -- User is assigned to issue
      ELSIF l_assigned_to = l_person_id
         THEN RETURN TRUE;
      ELSE
         RETURN FALSE;
      END IF;
      END;
      
      
    3. 「スキームの違反時に表示されるエラー・メッセージを指定」に、次のように入力します。

      This issue is not assigned to you, nor are you the Project Lead. Therefore you are not authorized to modify the data.
      
      
  8. 「評価ポイント」までスクロールします。「認可スキームを検証」で、「ページ・ビューごとに1回」を選択します。

    それぞれ問題で結果が異なる場合があるため、この選択は必要です。

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

次に、認可スキームを「Create/Edit Issues」ページの適切なオブジェクトと関連付ける必要があります。

オブジェクトと「Create/Edit Issues」レポートとの関連付け

認可スキームをボタンおよびプロセスと関連付けるには、次の手順を実行します。

  1. 「アプリケーション」ホームページにナビゲートします。

  2. ページ「7 - Create/Edit Issues」を選択します。

  3. 「ボタン」で、「削除」を選択します。

    1. 「認可」で、認可スキームの「P7_ASSIGNED_OR_PROJECT_LEAD」を選択します。

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

  4. 「ボタン」で、「保存」を選択します。

    1. 「認可」で、認可スキームの「P7_ASSIGNED_OR_PROJECT_LEAD」を選択します。

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

  5. 「プロセス」で、「HT_ISSUESの行を処理」を選択します。

    1. 「認可」で、認可スキームの「P7_ASSIGNED_OR_PROJECT_LEAD」を選択します。

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

HTMLリージョンの作成

最後に、認可に失敗した際に説明を表示する新しいリージョンを作成します。

新しいリージョンを作成するには、次の手順を実行します。

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

  2. 「一般的なリージョン・タイプを選択」で、デフォルトの「HTML」を受け入れて「次へ」をクリックします。

  3. 「リージョン・タイプ」で、「HTML」を選択して「次へ」をクリックします。

  4. 「表示属性」で、次の手順を実行します。

    1. 「タイトル」に、Not Authorizedと入力します。

    2. 「表示ポイント」で、「ページ・テンプレート・ボディ (2. リージョン・コンテンツより下のアイテム)」を選択します。

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

  5. HTMLテキスト・リージョン・ソースを入力」に、次のように入力して「次へ」をクリックします。

    You are not authorized to modify the data for this issue because<br>you are not the Project Lead nor is the issue assigned to you.
    
    
  6. 「認可スキーム」で、「{Not}P7_ASSIGNED_OR_PROJECT_LEAD」を選択します。これによって、認可スキームが失敗したときにのみ、リージョンが表示されるようになります。

  7. リージョンの作成」をクリックします。

図10-18に、認可が失敗したユーザーによって実行される「Create/Edit Issues」ページを示します。新しいリージョンはページの上部に表示され、表示されるボタンは「取消」のみです。

図10-18 認可の失敗を表示する新しいリージョン

iss_auth.gifの説明が続きます。
iss_auth.gifの説明

このセキュリティ要件に対しては、問題の詳細を表示する別のページを作成することがより効果的です。issue_idと現行ユーザーを取得し、表示専用または編集用のフラグを渡すプロシージャが必要となります。このプロシージャへのコールに基づいて「ビュー」ページまたは「編集」ページのいずれかをコールする、すべてのレポートのリンクを動的に構築できます。リンクを使用しないで編集ページにアクセスするユーザーを回避するために、挿入、更新および削除処理が行われる前に権限を確認することがあります。

アプリケーションの配置

アプリケーションが完成したら、次の手順で、このアプリケーションを配置します。通常、開発者はあるサーバーでアプリケーションを作成し、別のサーバーに配置します。この方法は必須ではありませんが、本番のインスタンスに影響を与えずに不具合を解決できます。


注意:

別のサーバーにアプリケーションを配置するには、別のOracle HTML DBインスタンスをインストールおよび構成する必要があります。

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

アプリケーション定義の移動

アプリケーション定義は、Oracleデータベースに格納されます。アプリケーション定義には、テンプレートなど、アプリケーションを構成するすべての要素が含まれていますが、データベース・オブジェクト定義や基礎となるデータは含まれていません。アプリケーションを別のOracle HTML DBインスタンスに移動するには、アプリケーション定義を開発サーバーからエクスポートして、本番サーバーにインポートする必要があります。

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

アプリケーション定義のエクスポート

開発サーバーからアプリケーション定義をエクスポートするには、次の手順を実行します。

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

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

  3. エクスポートするアプリケーションを選択します。

  4. エクスポート/インポート」アイコンをクリックし、「エクスポート」をクリックします。

  5. 「アプリケーション」で、この演習で作成したアプリケーションを選択します。

  6. アプリケーションのエクスポート」をクリックします。

  7. 選択を求められたら、ファイルを保存するように選択します。

  8. ローカルのハード・ドライブの場所を指定して「保存」をクリックします。

アプリケーションをサポートする必須オブジェクトの作成

本番インスタンスでは、アプリケーションのサポートに必要なオブジェクトを作成する必要があります。本番インスタンスにログインして、「データベース・オブジェクトの作成」に示す手順を実行します。


注意:

アプリケーション定義をインポートするために、サポートするオブジェクトは必要はありませんが、これらがないと、コードはテストできません。

アプリケーション定義の本番インスタンスへのインポート

Oracle HTML DBの本番インスタンスにログインして、次の手順を実行します。

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

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

  3. エクスポートするアプリケーションを選択します。

  4. エクスポート/インポート」アイコンをクリックし、「インポート」をクリックします。

  5. 「ファイルのインポート」で、次の手順を実行します。

    1. 「ファイルのインポート」で、「参照」ボタンをクリックして、エクスポートしたファイルを指定します。

    2. 「ファイル・タイプ」で、「エクスポート済のアプリケーション/ページ」を選択します。

    3. 「ファイルのキャラクタ・セット」で、デフォルトを受け入れて「次へ」をクリックします。

    成功メッセージが表示されたら、次の手順で、ファイルをインストールします。

  6. インストール」をクリックします。

  7. 「アプリケーションのインストール」で、次の手順を実行します。

    1. 「解析スキーマ」で、アプリケーション・オブジェクトが含まれる本番サーバー上のスキーマを選択します。

    2. 「ビルド・ステータス」で、「アプリケーションの実行および構築」を選択します。

      このオプションを使用すると、他のユーザーがアプリケーションを実行したり、必要に応じてログインし、コードを変更したりできるようになります。また、「アプリケーションの実行のみ」を選択することもできます。このオプションを選択した場合は、アプリケーションのソース・コードにアクセスできなくなることに注意してください。

    3. 「次のアプリケーションとしてインストール」で、次の項目を選択できます。

      • エクスポート・ファイルからアプリケーションIDを再利用: アプリケーションIDが本番インスタンスで使用されていない場合にのみ選択します。

      • 新しいアプリケーションIDを自動割当て: 新しいアプリケーションIDを割り当てる場合に選択します。

      • アプリケーションIDを変更: 既存のアプリケーションIDを変更する場合に選択します。このオプションを選択すると、新しいアプリケーションIDを入力するように求められます。

        既存のアプリケーションと同じIDを持つアプリケーションを現行の作業領域にインストールすると、既存のアプリケーションが削除されてから、新しいアプリケーションがインストールされます。既存のアプリケーションと同じIDを持つアプリケーションを異なる作業領域にインストールしようとすると、エラー・メッセージが表示されます。

        すべての文が成功すると、インストールはコミットされ、永続的になります。エラーが発生した場合、インストールはロールバックされ、永続的な変更は行われません。

    4. アプリケーションをインストール」をクリックします

    インストールが成功すると、「アプリケーション・インストール後のユーティリティ・オプション」ページが表示されます。ここでは、次のいずれかを選択できます。

    • アプリケーションを実行: アプリケーションを実行する場合に選択します。

    • アプリケーション属性を編集: Oracle HTML DB内のアプリケーション定義を表示する場合に選択します。

データのロード

アプリケーションを配置する次の手順では、データをロードします。少なくとも、project表およびpeople表は移入する必要があります。

このタスクの実行に使用できるメカニズムは、次のように様々なものがあります。

  • アプリケーション自体を使用して、データを作成します。

  • データ・ローダーを使用して、スプレッドシートからコピーされたデータをロードします。

  • SQLワークショップを使用して、データを作成するスクリプトを実行します。

  • データがOracleデータベースにすでにある場合は、エクスポート/インポートを使用してマシン間でデータを移動するか、またはSQLを使用して既存データを取得および変換し、アプリケーション表にロードします。

考慮すべき認証メカニズムの変更

アプリケーションのログイン・ページで、ユーザー名とパスワードを指定してOracle HTML DBのログインAPIをコールすると、HTML DBエンジンによって、アプリケーションの現行の認証スキームに指定されている資格証明の検証方式がコールされます。ログインAPIから資格証明を検証するには、3つの方法があります。

  • ブールを戻すPL/SQLファンクションとしてユーザー独自の方式を実装し、アプリケーションのスキーマに配置します。

  • 組込み式のLDAP認証方式を使用します。これは、ユーザーが指定したLDAPディレクトリに対してユーザー名とパスワードを確認します。

  • 組込み式のOracle HTML DB認証方式を使用します。これは、Oracle HTML DBアカウント・リポジトリに対してユーザー名とパスワードを確認します。

現在、アプリケーションは組込み式のOracle HTML DBを使用しています。Oracle Application Server Single Sign-Onなど、外部の認証サービスを使用することもできます。ただし、Oracle HTML DBは、ログイン・ページを表示するかわりに、これらのサービスにリダイレクトすることに注意してください。


参照:

HTML DBアプリケーションでOracleAS Single Sign-Onを使用する方法および認証方式を変更する方法については、OTNを参照してください。
http://www.oracle.com/technology/products/database/htmldb/howtos/index.html


ユーザーの作成

アプリケーションにアクセスできるようにするために、ユーザーを作成する必要があります。Oracle HTML DBの認証を使用している場合、ユーザーを作成する最も簡単な方法は、アプリケーションを所有する作業領域内の「ユーザーを管理」ページにアクセスすることです。このページにアクセスするには、作業領域の管理権限が付与されている必要があります。

新しいユーザーを作成するには、次の手順を実行します。

  1. 「作業領域」ホームページにナビゲートし、「管理」アイコンをクリックします。

  2. HTML DBユーザーの管理」をクリックします。

  3. 開発者の作成」を選択します。

  4. 「ユーザーの指定」に、必要な情報を入力します。Oracle HTML DBの認証を使用している場合は、「ユーザー名」と「電子メール・アドレス」を同じにする必要があります。

    「開発者権限」を使用すると、ユーザーはアプリケーションを実行できますが、アプリケーション・ビルダーにはアクセスできません。

  5. 「開発者権限」で、次の手順を実行します。

    1. 「ユーザーは開発者」で、「いいえ」を選択します。

    2. 「ユーザーは管理者」で、「いいえ」を選択します。

  6. 作成」または「作成後、別のものを作成」をクリックします。

URLの公開

アプリケーションの配置、データのロードおよびユーザーの作成が完了したら、本番URLを公開できます。

アプリケーションへのURLは、「アプリケーション」ホームページの「実行」アイコンの上にマウスを合わせると確認できます。ページ下部のステータス・バーにURLが表示されます。

「実行」アイコンの値は、「セキュリティ属性の編集」ページの「ホーム・リンク」属性から取得されます。このリンクは、このアイコンと、Oracle HTML DBのログインAPIを使用していないアプリケーションによってのみ参照されます。次に例を示します。

http://htmldb.oracle.com/pls/otn/f?p=11563:1:3397731373043366363

各要素の意味は次のとおりです。

  • htmldb.oracle.comは、サーバーのURLです。

  • plsは、mod_plsqlカートリッジを使用するためのインジケータです。

  • otnは、データ・アクセス記述子(DAD)名です。

  • f?p= は、Oracle HTML DBが使用する接頭辞です。

  • 11563は、コールされるアプリケーションです。

  • 1は、表示されるアプリケーション内のページです。

  • 3397731373043366363は、セッション番号です。

この例のアプリケーションを実行するには、次のURLを使用します。

http://htmldb.oracle.com/pls/otn/f?p=11563:1

各ユーザーは、ログイン時に一意のセッション番号を受信します。

問題追跡アプリケーションは、「アプリケーションの作成」ウィザードを使用して作成しました。このウィザードは、認証を制御する「ログイン」ページ(ページ101)にプロセスを作成します。プロセスの内容は、次のとおりです。

WWV_FLOW_CUSTOM_AUTH_STD.LOGIN(
    P_UNAME => :P101_USERNAME,
    P_PASSWORD => :P101_PASSWORD,
    P_SESSION_ID => :FLOW_SESSION,
    P_FLOW_PAGE => :APP_ID||':1'
    );

ページは、このプロセスにハード・コードされることに注意してください。このため、URLに渡されるページは上書きされ、含める必要はありません。次のURLを使用して、アプリケーションにアクセスできます。

http://htmldb.oracle.com/pls/otn/f?p=11563:1

使用した例からもわかるように、URLに意味はなく、長くすることができます。ホスト名は、わかりやすいように変更できます。また、短縮した形式で公開したり、ユーザーにとってわかりやすいURLを公開するために、Apacheを構成してURLを書き直すこともできます。詳細は、Apacheのドキュメントを参照してください。