ヘッダーをスキップ
Oracle Database Application Expressアドバンスト・チュートリアル
リリース3.0
E05693-01
  目次
目次

戻る
戻る
 
次へ
次へ
 

14 問題追跡アプリケーションの作成およびデプロイ方法

このチュートリアルでは、プロジェクトに関連する問題の割当て、ステータスおよび進捗を追跡するアプリケーションを作成およびデプロイする方法を説明します。また、プロジェクトの計画、基礎となるデータベース・オブジェクトの作成、デモンストレーション・データのロード、機能豊富なユーザー・インタフェースの作成など、堅牢な問題追跡アプリケーションの作成に必要なすべてのステップを実際に行います。


注意:

このチュートリアルを完了するには、約4、5時間かかります。特定の演習を試す前に、資料に慣れるため、最初にドキュメント全体を通して読むことをお薦めします。

この項の内容は次のとおりです。

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

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

このビジネス例では、MRVL Companyには、会社が利益をあげるためにスケジュールどおりに完了する必要があるいくつかのプロジェクトがあります。プロジェクトが期限内に完了しないと、減収につながります。会社のプロジェクト・リーダーは、手動でノートブックにステータスを記録したり、テキスト文書で問題を編成したり、スプレッドシートを使用して問題を分類するなど、様々な問題追跡方法を使用します。

プロジェクト・リーダーは、ホスティングされたアプリケーションをOracle Application Expressに作成することで、一元的に問題を簡単に記録および追跡できます。この方法によって、プロジェクト・リーダーが必要なデータのみにアクセスし、致命的な問題がに対する処置が行われているかどうかを簡単に管理できるようになります。

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

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

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

この項の内容は次のとおりです。

必要なデータの収集

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

  • 問題のサマリー

  • 問題の詳細

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

  • 問題が発見された日付

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

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

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

  • 問題の優先順位

  • 目標とする解決日

  • 実際の解決日

  • 進捗レポート

  • 解決のサマリー

セキュリティ要件の定義

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

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

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

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

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

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

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

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

データ管理機能の選択

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

  • 問題の作成

  • 問題の割当て

  • 問題の編集

  • プロジェクトの作成

  • プロジェクトの管理

  • ユーザーの作成

  • ユーザー情報の管理

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

データ表示機能の選択

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

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

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

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

  • 最近発見された問題

  • 未割当ての問題

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

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

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

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

特別な機能要件の定義

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

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

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

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

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

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

この項の内容は次のとおりです。

Projects表

各プロジェクトには、プロジェクト名、プロジェクトの開始日、目標とする終了日、実際の終了日の列を含める必要があります。これらの日付列は、未処理の問題がプロジェクト終了日に間に合うかどうかを確認するのに役立ちます。 表14-1に、Projects表に含まれる列を示します。

表14-1 Projects表の詳細

列名 タイプ サイズ NOT NULL? 制約 説明

project_id

integer

該当なし

はい

主キー

数値による各プロジェクトの一意の識別情報です。

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

project_name

varchar2

100

はい

一意キー

各プロジェクトの一意の英数字名です。

start_date

date

該当なし

はい

なし

プロジェクト開始日です。

target_end_date

date

該当なし

はい

なし

目標とするプロジェクト終了日です。

actual_end_date

date

該当なし

いいえ

なし

実際の終了日です。


People表

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

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

表14-2 People表の詳細

列名 タイプ サイズ NOT NULL? 制約 説明

person_id

integer

該当なし

はい

主キー

各ユーザーを識別する数値IDです。

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

person_name

varchar2

100

はい

一意キー

各ユーザーを識別する一意の名前です。

person_email

varchar2

100

はい

なし

ユーザーの電子メール・アドレスです。

person_role

varchar2

7

はい

チェック制約

各ユーザーに割り当てられたロールです。



注意:

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

Issues表

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

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

表14-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 Application Expressにオブジェクトを作成するにはいくつかの方法があります。次の選択肢があります。

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

  • SQLコマンドの実行: SQLコマンドを実行するには、それらのコマンドを「SQLコマンド」に入力または貼り付けます。「SQLコマンド」にアクセスするには、「作業領域」ホームページで「SQLワークショップ」アイコンをクリックした後、「SQLコマンド」をクリックします。『Oracle Database Application Expressユーザーズ・ガイド』の「SQLコマンドの使用」を参照してください。

  • スクリプトのアップロード: すべての必要なcreate object文を含むスクリプトをSQLの「スクリプト・リポジトリ」にアップロードします。スクリプトをアップロードするには、「作業領域」ホームページで「SQLワークショップ」をクリックし、「SQLスクリプト」をクリックした後、「アップロード」をクリックします。『Oracle Database Application Expressユーザーズ・ガイド』の「SQLスクリプトのアップロード」を参照してください。

  • オンラインでのスクリプトの作成:スクリプトをスクリプト・リポジトリにオンラインで作成します。この演習では、この方法を使用してデータベース・オブジェクトを作成します。スクリプトをオンラインで作成するには、「作業領域」ホームページで「SQLワークショップ」アイコンをクリックし、「SQLスクリプト」を選択した後、「作成」をクリックします。『Oracle Database Application Expressユーザーズ・ガイド』の「スクリプト・エディタでのSQLスクリプトの作成」を参照してください。

この演習では、スクリプトを作成して実行します。

スクリプトの作成および実行

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

  1. Oracle Application Expressにログインします。

  2. 「作業領域」ホームページで「SQLワークショップ」をクリックして、「SQLスクリプト」をクリックします。

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

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

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

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

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

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

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

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

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

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

    「スクリプト結果の管理」ページに、実行のためにスクリプトが送信されたことを示すメッセージが表示されます。

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

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

「オブジェクト・ブラウザ」でデータベース・オブジェクトを表示するには、次のステップを実行します。

  1. 「作業領域」ホームページに戻ります。「ホーム」ブレッドクラム・リンクをクリックします。

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

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

  4. 特定のオブジェクトの詳細を表示するには、次の表のいずれかを選択します。

    • HT_ISSUES

    • HT_PEOPLE

    • HT_PROJECTS


参照:

『Oracle Database Application Expressユーザーズ・ガイド』の「オブジェクト・ブラウザを使用したデータベース・オブジェクトの管理」

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

すべての必要なデータベース・オブジェクトを作成した後、表にデータをロードします。データは、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. 再度、「実行」をクリックします。

    「スクリプト結果の管理」ページに、実行のためにスクリプトが送信されたことを示すメッセージが表示されます。

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

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

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

  1. SQLスクリプト」ブレッドクラム・リンクをクリックします。

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

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

    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. 保存」をクリックします。

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

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

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

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

    「スクリプト結果の管理」ページに、実行のためにスクリプトが送信されたことを示すメッセージが表示されます。

「People」データのロード

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

People表にデータをロードするには、次のステップを実行します。

  1. SQLスクリプト」ブレッドクラム・リンクをクリックします。

  2. 「SQLスクリプト」ページで、「作成」をクリックします。

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

    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. 保存」をクリックします。

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

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

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

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

    「スクリプト結果の管理」ページに、実行のためにスクリプトが送信されたことを示すメッセージが表示されます。

「Issues」データのロード

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

Issues表にデータをロードするには、次のステップを実行します。

  1. SQLスクリプト」ブレッドクラム・リンクをクリックします。

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

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

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

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

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

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

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

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

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

    「スクリプト結果の管理」ページに、実行のためにスクリプトが送信されたことを示すメッセージが表示されます。

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

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

この項の内容は次のとおりです。

アプリケーションの作成

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

アプリケーションを作成するには、次のステップを実行します。

  1. ホーム」ブレッドクラム・リンクをクリックします。

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

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

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

  5. 「名前」で、次のステップを実行します。

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

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

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

  6. 次に、空白ページを追加します。「ページの追加」で、次のように実行します。

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

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

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

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

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

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

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

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

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

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

  2. プロンプトが表示されたら、作業領域のユーザー名およびパスワードを入力して、「ログイン」をクリックします。詳細は、「アプリケーション認証の概要」を参照してください。

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

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

    図14-1の説明が続きます。
    「図14-1 問題追跡アプリケーションのホームページ」の説明

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

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

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

  3. 「開発者」ツールバーの「アプリケーション」をクリックして、「アプリケーション」ホームページに戻ります。

    「アプリケーションの作成」ウィザードによって「ログイン」ページも作成されていることに注意してください。

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

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

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

この項の内容は次のとおりです。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  9. 「リンク・イメージの編集」で、4番目のオプション(「編集」という単語)を選択して「次へ」をクリックします。

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

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

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

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

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

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

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

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

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

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

  17. ページの実行」アイコンをクリックします。

図14-2に示すとおり、新しく作成されたレポートにデモ・データが表示されます。

図14-2 「Projects」ページ

図14-2の説明が続きます。
「図14-2 「Projects」ページ」の説明

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

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

図14-3の説明が続きます。
「図14-3 「Create/Edit Project」フォーム」の説明

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

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

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

  1. ページ2(「Projects」)のページ定義に移動します。

    1. 「開発者」ツールバーで「アプリケーション」をクリックします。

    2. 「アプリケーション」ホームページで、「2 - Projects」をクリックします。

  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_DATETARGET_END_DATEおよび ACTUAL_END_DATE列に対して、「列の位置合せ」および「ヘッダーの位置合せ」で、「中央」を選択します。

    次に、ユーザーが列ヘッダーでソートできるようにします。

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

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

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

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

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

    No Projects found.
    
    
  13. ページ上部の「変更の適用」をクリックします。

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

図14-4に示すとおり、「Project Name」列にソート制御が追加されたことと、「Start Date」および「Target End Date」列の日付書式が変更されたことを確認してください。

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

図14-4の説明が続きます。
「図14-4 ソート制御が表示された「Projects」ページ」の説明

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

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

フィールドの編集

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

  1. ページ3(「Create/Edit Project」)のページ定義に移動します。

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

    2. 3 - 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. 変更の適用」をクリックします。

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

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

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

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

  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. 条件タイプ」で、「式1のアイテムの値がNOT NULL」を選択するか、ショートカット・リンク「アイテムがNOT NULL」をクリックします。

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

      P3_ACTUAL_END_DATE.
      
      

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

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

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

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

図14-5の説明が続きます。
「図14-5 変更された「Create/Edit Project」」の説明

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

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

この項の内容は次のとおりです。

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

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

  1. 「開発者」ツールバーで「アプリケーション」をクリックします。

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

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

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

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

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

  7. 「レポート・ページの定義」で、次のステップを実行します。

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

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

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

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

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

  10. リンク・イメージの編集」で、4番目のオプション(「編集」という単語)を選択して「次へ」をクリックします。

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

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

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

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

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

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

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

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

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

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

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

図14-6 「People」ページ

図14-6の説明が続きます。
「図14-6 「People」ページ」の説明

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

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

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

結合が含まれるようにする問合せの変更

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

  1. ページ4(「People」)のページ定義に移動します。

    1. 実行中のフォームを表示している場合は、「開発者」ツールバーの「アプリケーション」をクリックします。

    2. 「アプリケーション」ホームページで、「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 (+)
    
    

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

ヘッダーの変更

ヘッダーを変更するには、次のステップを実行します。

  1. ページ上部の「レポート属性」タブをクリックします。

  2. 「列属性」で、次の列ヘッダーを編集します。

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

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

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

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

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

      次に、列ヘッダーのソートを有効にします。

  3. 列ヘッダーのソートを有効にするには、次のステップを実行します。

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

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

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

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

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

    No people found.
    
    
  5. ページの上部の「変更の適用」をクリックします。

ページの実行

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

図14-7 更新された「People」ページ

図14-7の説明が続きます。
「図14-7 更新された「People」ページ」の説明

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

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

「Projects」のLOVの追加

「Projects」のLOVを追加するには、次のステップを実行します。

  1. ページ5(「Create/Edit Person」)のページ定義に移動します。

    1. フォームを表示している場合は、「開発者」ツールバーの「アプリケーション」をクリックします。

    2. 「アプリケーション」ホームページで、「5 - Create/Edit Person Information」をクリックします。

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

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

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

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

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

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

  5. 「問合せ」で、既存の文を次と置き換えます。

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

「Roles」のLOVの追加

「Roles」のLOVを追加するには、次のステップを実行します。

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

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

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

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

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

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

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

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

    表示値 戻り値

    CEO

    CEO

    Manager

    Manager

    Lead

    Lead

    Member

    Member


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

  6. 「LOV」ページで、右上にある「ページの編集」アイコンをクリックします。

表示属性の編集

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. 「検証」に、次のように入力します。

    1. PL/SQL」を選択して「次へ」をクリックします。

    2. デフォルトの「PL/SQL式」を受け入れて、「次へ」をクリックします。

  5. 「順序と名前」で、次のステップを実行します。

    1. 「検証名」に、PROJECT_MAND_FOR_LEADER_AND_MEMBERと入力します。

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

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

    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 Application Expressでは、NULLは%null%として渡されます。また、データの処理時に%null%はNULLと置換されます。このため、検証に%null%を含めるには、文字列が認識および置換されないように分割する必要があります。

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

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

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

ページの実行

行った変更を表示するには、ページの右上にある「ページの実行」アイコンをクリックします。 図14-8に示すとおり、更新されたフォームが表示されます。

図14-8 更新された「Create/Edit Person Information」フォーム

図14-8の説明が続きます。
「図14-8 更新された「Create/Edit Person Information」フォーム」の説明

レコードをいくつか入力して検証をテストします。プロジェクトを指定して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. 「列の選択」で、次のステップを実行します。

    1. [Ctrl]キーを押しながら、次の列を選択します。

      • ISSUE_SUMMARY

      • IDENTIFIED_BY

      • RELATED_PROJECT

      • ASSIGNED_TO

      • STATUS

      • PRIORITY

      • TARGET_RESOLUTION_DATE

      • ACTUAL_RESOLUTION_DATE

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

  10. リンク・イメージの編集」で、4番目のオプション(「編集」という単語)を選択して「次へ」をクリックします。

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

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

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

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

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

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

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

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

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

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

  18. ページの編集」をクリックします。

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

次の理由で「Create/Edit」ページを調整します。

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

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

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

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

LOVの追加

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

「Status」のLOVを追加するには、次のステップを実行します。

  1. ページ7(「Create/Edit Issue」)のページ定義に移動します。ページ定義で、「ページ」フィールドに7と入力して「実行」をクリックします。

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

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

  4. 「LOVの作成」で、次のステップを実行します。

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

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

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

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

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

    表示値 戻り値

    Open

    Open

    On-Hold

    On-Hold

    Closed

    Closed


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

「Priorities」のLOVを追加するには、次のステップを実行します。

  1. 「LOV」ページで、「作成」をクリックします。

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

  3. 「LOVの作成」で、次のステップを実行します。

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

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

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

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

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

    表示値 戻り値

    High

    High

    Medium

    Medium

    Low

    Low


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

「People」のLOVを追加するには、次のステップを実行します。

  1. 「LOV」ページで、「作成」をクリックします。

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

  3. 「LOVの作成」で、次のステップを実行します。

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

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

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

  4. 「問合せ」で、既存の文を次と置き換えます。

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

  6. ページ7のページ定義に移動します。

特定のアイテムの編集

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

P7_IDENTIFIED_BYを編集するには、次のステップを実行します。

  1. ページ7の「ページ定義」の「アイテム」で、「P7_IDENTIFIED_BY」をクリックします。

  2. 「名前」セクションの「表示形式」リストから、「選択リスト」を選択します。

  3. 「LOV」で、次のステップを実行します。

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

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

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

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

    「ページ・アイテムの編集」ページが表示されます。

P7_IDENTIFIED_DATEを編集するには、次のステップを実行します。

  1. 「名前」セクションの「表示形式」リストから、「日付ピッカー(DD-MON-YYYY)」を選択します。

  2. 「デフォルト」までスクロールして、次のステップを実行します。

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

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

  3. ページの上部にある「次へ」ボタン(>)をクリックして、次のアイテムP7_RELATED_PROJECTに移動します。

    「ページ・アイテムの編集」ページが表示されます。

P7_RELATED_PROJECTを編集するには、次のステップを実行します。

  1. 「名前」セクションの「表示形式」リストから、「選択リスト」を選択します。

  2. 「LOV」までスクロールします。「LOV」で、次のステップを実行します。

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

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

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

       - Select Project -
      
      
  3. ページの上部にある「次へ」ボタン(>)をクリックして、P7_STATUSに移動します。

P7_STATUSを編集するには、次のステップを実行します。

  1. 「名前」セクションの「表示形式」リストから、「ラジオ・グループ」を選択します。

  2. 「ラベル」で、「ラベル」フィールドに次のように入力します。

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

    class="instructiontext"
    
    
  4. 「デフォルト値」で、「デフォルト値」フィールドにOpenと入力します。

  5. 「LOV」で、次のステップを実行します。

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

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

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

  6. ページの上部にある「次へ」ボタン(>)をクリックして、P7_PRIORITYに移動します。

P7_PRIORITYを編集するには、次のステップを実行します。

  1. 「名前」セクションの「表示形式」リストから、「ラジオ・グループ」を選択します。

  2. 「ラベル」で、「ラベル」フィールドに次のように入力します。

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

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

  5. 「LOV」で、次のステップを実行します。

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

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

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

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

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

      None-
      
      
  6. ページの上部にある「次へ」ボタン(>)をクリックして、P7_TARGET_RESOLUTION_DATEに移動します。

P7_TARGET_RESOLUTION_DATEを編集するには、次のステップを実行します。

  1. 「名前」セクションの「表示形式」リストから、「日付ピッカー(DD-MON-YYYY)」を選択します。

  2. ページの上部にある「次へ」ボタン(>)をクリックして、P7_ACTUAL_RESOLUTION_DATEに移動します。

P7_ACTUAL_RESOLUTION_DATEを編集するには、次のステップを実行します。

  1. 「名前」セクションの「表示形式」リストから、「日付ピッカー(DD-MON-YYYY)」を選択します。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  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. 「リージョン」で、次のアイテムの「監査情報」を選択します。

    • P7_CREATED_DATE

    • P7_CREATED_BY

    • P7_LAST_MODIFIED_DATE

    • P7_LAST_MODIFIED_BY

  5. 「幅」で、次のように編集します。

    1. P7_ISSUE_SUMMARYに、60と入力します。

    2. P7_IDENTIFIED_DATEに、12と入力します。

    3. P7_TARGET_RESOLUTION_DATEに、12と入力します。

    4. P7_ACTUAL_RESOLUTION_DATEに、12と入力します。

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

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

ボタンを「ボタン」リージョンに移動するには、次のステップを実行します。

  1. 「ボタン」で、「すべて編集」アイコンをクリックします。

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

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

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

「監査」列の表示の変更

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

「監査情報」リージョンの条件を作成するには、次のステップを実行します。

  1. 「リージョン」で、「監査情報」をクリックします。

  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に移動します。

P7_CREATED_BYを編集するには、次のステップを実行します。

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

  2. 「ラベル」で、次のステップを実行します。

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

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

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

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

P7_LAST_MODIFIED_DATEを編集するには、次のステップを実行します。

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

  2. 「ラベル」で、次のステップを実行します。

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

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

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

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

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

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でない」を削除します。

    1. 「ページ・プロセス」の「検証」で、「P7_CREATED_DATEがNULLでない」をクリックします。

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

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

  2. 次のステップを実行して、「P7_CREATED_BYがNULLでない」を削除します。

    1. 「ページ・プロセス」の「検証」で、「P7_CREATED_BYがNULLでない」をクリックします。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

「取消」ボタンを編集するには、次のステップを実行します。

  1. 「ボタン」で、「取消」をクリックします。

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

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

    &P7_PREV_PAGE.
    
    

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

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

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

ブランチを編集するには、次のステップを実行します。

  1. 「ブランチ」で、「プロセスの後」ブランチ、「ページに移動」を選択します。

  2. 「アクション」で、「ページ」に次のように入力します(ピリオドを含めます)。

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

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

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

新しいボタンを追加するには、次のステップを実行します。

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

  2. コピーする「ボタン」に、CREATEと入力します。

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

  4. 「新しいボタン」で、次のステップを実行します。

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

    2. 「ラベル」に、作成後、別のものの作成と入力します。

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

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

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

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

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

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

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

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

    2. 「キャッシュのクリア」に、7と入力します。

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

      P7_PREV_PAGE
      
      
    4. 「次の値を使用」に、次のように入力します(ピリオドを含めます)。

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

  4. 「ブランチ条件」で、次のステップを実行します。

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

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

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

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

  6. 「ブランチ」で、7の横にある新しく作成したブランチ「ページに移動」を選択します。

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

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

ページの実行

変更を表示するには、「ページの実行」アイコンをクリックします。 図14-9に示すとおり、新しいフォームが表示されます。

図14-9 「Create/Edit Issue」フォーム

図14-9の説明が続きます。
「図14-9 「Create/Edit Issue」フォーム」の説明

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

問題のレポートの追加

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

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

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

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

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

  • ヘッダーの変更

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

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

  1. ページ6(「Issues」)のページ定義に移動します。

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

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

  4. リージョン・コンテナとして「HTML」を選択し、「次へ」をクリックします。

  5. 「表示属性」で、次のステップを実行します。

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

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

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

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

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

「作成」ボタンを「ボタン」リージョンに移動するには、次のステップを実行します。

  1. 「ボタン」で、「作成」リンクをクリックします。

  2. 「名前」で、「Text Label/Alt」フィールドに次のように入力します。

    Add a New Issue
    
    
  3. 「表示」で、「リージョン」フィールドの「表示」で「ボタン」を選択します。

  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_BYRELATED_PROJECTおよびASSIGNED_TOの列属性を編集するには、次のステップを実行します。

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

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

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

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

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

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

  6. 「LOV」までスクロールします。「LOV」で、次のステップを実行します。

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

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

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

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

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

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

  9. 「LOV」までスクロールします。「LOV」で、次のステップを実行します。

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

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

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

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

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

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

レポートの表示を変更するには、次のステップを実行します。

  1. 「ヘッダー・タイプ」(「列属性」上部のラジオ・グループ行)から、デフォルトの「カスタム」を受け入れます。

  2. ISSUE_IDのヘッダー・テキストを削除します。

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

  4. TARGET_RESOLUTION_DATEに対して、次のステップを実行します。

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

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

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

  5. ISSUE_IDでソートするには、次のステップを実行します。

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

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

  6. 「レイアウトおよびページ区切り」までスクロールします。次のように指定します。

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

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

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

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

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

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

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

新しいリージョンを作成するには、次のステップを実行します。

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

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

  3. リージョン・コンテナとして「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」で、「PROJECTS」を選択します。

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

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

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

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

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

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

次に、「実行」ボタンを作成します。このボタンによって、ユーザーは、レポート・パラメータを選択した後、問合せを実行できます。ボタンは、リージョン位置に作成するか、またはアイテム間に表示することができます。

「実行」ボタンを作成するには、次のステップを実行します。

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

  2. 「ボタン・リージョン」で、「Issue Report Parameters」を選択して「次へ」をクリックします。

  3. 「ボタン位置」で、「このリージョン・アイテムで表示されるボタンの作成」を選択します。

    これを選択すると、最後のレポート・パラメータの右側にボタンが表示されます。

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

  5. 「ボタン属性」で、次のステップを実行します。

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

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

    3. テンプレート」で、「ボタン」を選択します。

  6. ボタンの作成」をクリックします。

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

現在、アイテムは重なって表示されます。空白をより効果的に使用するには、横に並んで表示されるようにP6_RELATED_PROJECT、 P6_STATUSおよびP6_PRIORITYの位置を変更します。最初の行にP6_RELATED_PROJECT、P6_STATUS、2番目の行にP6_PRIORITYをデプロイします。

P6_RELATED_PROJECT、P6_STATUSおよびP6_PRIORITYの位置を変更するには、次のステップを実行します。

  1. 「アイテム」で、「すべて編集」アイコンをクリックします。

  2. P6_RELATED_PROJECT、P6_STATUSおよびP6_PRIORITYの「新しい行」で「いいえ」を選択します。

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

  4. 右上にある「ページの編集」アイコンをクリックして、ページ6のページ定義に戻ります。「ページの編集」アイコンは、小さな緑色の紙と鉛筆に似ています。

次に、パラメータに対応するようにレポートを変更する必要があります。これを行うには、次のように問合せの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文がデータベースに渡されます。

ページの実行

これで、レポートの作成は完了です。「ページの実行」アイコンをクリックします。 図14-10に示すような、更新されたレポートが表示されます。

図14-10 「Issues」レポート

図14-10の説明が続きます。
「図14-10 「Issues」レポート」の説明

レポート・パラメータを変更するには、「Issue Report Parameters」で新しく選択を行って「実行」をクリックします。

複数の問題の同時割当てをサポートするページの追加

現在、問題を編集して割り当てることができます。次に、ユーザーによる複数の問題の一括割当ておよび「Related Project」、「Status」および「Priority」の変更を可能にする新しいページを追加します。

表形式フォームの作成

複数の問題の割当てをサポートする新しいページを追加するには、次のステップを実行します。

  1. 「アプリケーション」ホームページに移動します。

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

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

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

  5. 「表/ビューの所有者」で、次のステップを実行します。

    1. 「表/ビューの所有者」で、適切なスキーマを選択します。

      この演習では、ユーザーが問題を作成または削除できるようにすることではなく、問題を割り当てたり既存のレコードを更新できるようにすることがこのフォームの目的としています。

    2. 「実行可能な操作」で、「更新のみ」を選択します。

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

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

  7. 「表示列」で、次のステップを実行します。

    1. [Ctrl]キーを押しながら、次の列を選択します。

      • ISSUE_SUMMARY

      • IDENTIFIED_BY

      • IDENTIFIED_DATE

      • RELATED_PROJECT

      • ASSIGNED_TO

      • STATUS

      • PRIORITY

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

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

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

  10. 「更新可能な列」で、次のステップを実行します。

    1. [Ctrl]キーを押しながら、次の列を選択します。

      • RELATED_PROJECT

      • ASSIGNED_TO

      • STATUS

      • PRIORITY

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

  11. 「ページおよびリージョン属性」で、次のステップを実行します。

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

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

    3. 「リージョン・タイトル」に、Assign Issuesと入力します。

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

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

  13. 「ボタン・ラベル」で、次のステップを実行します。

    1. 「「取消」ボタン・ラベル」で、デフォルトを受け入れます。

    2. 「「送信」ボタン・ラベル」に、変更の適用と入力します。

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

  14. 「ブランチ」でデフォルト値を受け入れ、「次へ」をクリックします。

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

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. ページ上部の「レポート属性」タブを選択します。

    ISSUE_SUMMARYのヘッダーを編集します。

  2. ISSUE_SUMMARYの「ヘッダー」フィールドに次のように入力します。

    Summary
    
    
  3. ISSUE_IDでソートするには、次のステップを実行します。

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

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

  4. IDENTIFIED_BYの次の属性を編集します。

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

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

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

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

    5. ページの上部にある「次へ」ボタン(>)をクリックして、IDENTIFIED_DATEに移動します。

  5. IDENTIFIED_DATEの次の属性を編集します。

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

    2. ページの上部にある「次へ」ボタン(>)をクリックして、RELATED_PROJECT列に移動します。

  6. RELATED_PROJECTの次の属性を編集します。

    1. 「表形式フォームの要素」の「表示形式」で、「選択リスト(名前付きLOV)」を選択します。

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

    3. ページの上部にある「次へ」ボタン(>)をクリックして、ASSIGNED_TO列に移動します。

  7. ASSIGNED_TOの次の属性を編集するには、次のステップを実行します。

    1. 「表形式フォームの要素」の「表示形式」で、「選択リスト(名前付きLOV)」を選択します。

    2. 「LOV」で、次のステップを実行します。

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

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

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

    3. ページの上部にある「次へ」ボタン(>)をクリックして、STATUS列に移動します。

  8. STATUSの次の属性を編集するには、次のステップを実行します。

    1. 「表形式フォームの要素」の「表示形式」で、「選択リスト(名前付きLOV)」を選択します。

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

    3. ページの上部にある「次へ」ボタン(>)をクリックして、PRIORITY列に移動します。

  9. PRIORITYの次の属性を編集するには、次のステップを実行します。

    1. 「表形式フォームの要素」の「表示形式」で、「選択リスト(名前付きLOV)」を選択します。

    2. 「LOV」で、次のステップを実行します。

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

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

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

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

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

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

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

    No Unassigned Issues.
    
    
  12. 変更の適用」をクリックします。

不要な「取消」ボタンの削除

ウィザードによって、不要な「取消」ボタンが作成されています。

この「取消」ボタンを削除するには、次のステップを実行します。

  1. ページ8のページ定義で、「ボタン」セクションにある「取消」をクリックします。

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

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

ページの実行

これで、表形式フォームの作成は完了です。新しいフォームを表示するには、「ページの実行」アイコンをクリックします。 図14-11に示すとおり、「Assign Issues」フォームが表示されます。

図14-11 Assign Issues

図14-11の説明が続きます。
「図14-11 Assign Issues」の説明

問題を割り当てるには、「Assigned To」リストから選択を行って「変更の適用」をクリックします。問題が割り当てられると、その問題は表示されなくなることに注意してください。

サマリー・レポートの作成

最後に、4つのサマリー・レポートを追加する必要があります。

この項の内容は次のとおりです。

プロジェクト別の問題サマリーの追加

問題のサマリーを示すレポートを使用すると、プロジェクトを選択し、そのプロジェクトに関連する問題のサマリーを表示できます。このレポートには、次のサマリー情報が含まれています。

  • 最初に問題が発見された日付

  • 最後に問題が終結した日付

  • 問題の合計数

  • ステータス別の問題数

  • 優先順位の未解決の問題数

  • ステータス別の割当て

このレポートを作成するには、情報を2つのSQL文でコーディングします。1つ目の文は単一の結果を持つ情報を収集し、2つ目の文は複数の結果を持つ情報を収集します。

プロジェクト別の問題サマリーのレポートを追加するには、次のステップを実行します。

  1. 「アプリケーション」ホームページに移動します。

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

  3. レポート」を選択して「次へ」をクリックします。

  4. SQLレポート」を選択して「次へ」をクリックします。

  5. 「ページ属性」で、次のステップを実行します。

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

    2. 「ページ名」に、Issue Summary by Projectと入力します。

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

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

  7. 「SQL問合せ」で、次のステップを実行します。

    1. 次の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
      
      
    2. 次へ」をクリックします。

  8. 「レポート属性」で、次のステップを実行します。

    1. 「レポート・テンプレート」で、デフォルトの「デフォルト: 縦のレポート、look 1(NULL列を含む)」を受け入れます。

    2. 「リージョン名」に、Issue Summary by Projectと入力します。

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

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

1つ目の問合せを作成したら、ヘッダーを編集し、関連するプロジェクトを制御するアイテムを作成する必要があります。最初に、レポートの上に表示されるリージョン(プロジェクト・パラメータが含まれる)を作成します。

新しいリージョンの作成

レポートの上に表される新しいリージョンを作成するには、次のステップを実行します。

  1. 「成功」ページで、「ページの編集」をクリックします。

    ページ9(「Issue Summary by Project」)のページ定義が表示されます。

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

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

  4. リージョン・コンテナとして「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問合せ、またはSQL問合せを戻すPL/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. 変更の適用」をクリックします。

ページの実行

新しく作成したレポートを表示するには、「ページの実行」アイコンをクリックします。最初は、プロジェクトが選択されていないため、データは表示されません。プロジェクトを選択して「実行」をクリックします。 レポートが図14-12に示すように表示されます。

図14-12 「Issue Summary by Project」レポート

図14-12の説明が続きます。
「図14-12 「Issue Summary by Project」レポート」の説明

「Resolved by Month Identified」レポートの追加

「Resolved by Month Identified」レポートは、折れ線グラフです。このレポートは、最初に、終結した各問題の解決にかかった日数を計算し、その問題が発見された月ごとに平均値を計算して、最後に、月別に表示します。

「Resolved by Month Identified」レポートを追加するには、次のステップを実行します。

  1. 「アプリケーション」ホームページに移動します。

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

  3. チャート」を選択して「次へ」をクリックします。

  4. SVGチャート」を選択して「次へ」をクリックします。

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

  6. 「ページ属性」で、次のステップを実行します。

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

    2. 「ページ名」および「リージョン名」に、Resolved by Month Identifiedと入力します。

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

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

  8. 「問合せ」で、次のステップを実行します。

    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.
      
      
    4. 次へ」をクリックします。

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

チャートの編集

次に、正しい軸ラベルを追加して、チャート・タイトルと凡例をオフにします。

チャートを編集するには、次のステップを実行します。

  1. 「成功」で、「ページの編集」を選択します。

    ページ10(「Resolved by Month Identified」)のページ定義が表示されます。

  2. 「リージョン」で、「Resolved by Month Identified」の横にある「SVGチャート」を選択します。

  3. 「チャートの設定」で、次のステップを実行します。

    1. 「チャート高さ」に、300と入力します。

    2. 凡例を表示」を選択解除します。

  4. 「軸の設定」までスクロールします。

    1. 「X軸のタイトル」に、Date Identifiedと入力します。

    2. 「Y軸のタイトル」に、Days to Resolveと入力します。

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

ページの実行

新しく作成した折れ線グラフを表示するには、「ページの実行」アイコンをクリックします。 折れ線グラフが図14-13のように表示されます。

図14-13 「Resolved by Month Identified」折れ線グラフ

図14-13の説明が続きます。
「図14-13 「Resolved by Month Identified」折れ線グラフ」の説明

問題を表示するためのカレンダの追加

「Target Resolution Dates」レポートは、終結していない問題と、問題の解決目標日となっている日に割り当てられたユーザーが表示されるカレンダです。

カレンダの作成

解決目標日のカレンダを作成するには、次のステップを実行します。

  1. 「アプリケーション」ホームページに移動します。

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

  3. カレンダ」を選択して「次へ」をクリックします。

  4. SQLカレンダ」を選択して「次へ」をクリックします。

  5. 「ページ属性」で、次のステップを実行します。

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

    2. 「ページ名」および「リージョン名」に、Target Resolution Datesと入力します。

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

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

  7. 「表/ビューの所有者」で、次のステップを実行します。

    1. 「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'
      
      
    2. 次へ」をクリックします。

    次のことに注意してください。

    • 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. 「表示位置および名前」で、次のステップを実行します。

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

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

  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」の右にある「カレンダ」をクリックします。

  2. 「列リンク」までスクロールし、次のように入力します。

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

    2. 「キャッシュのクリア」に、7と入力します。

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

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

      #ISSUE_ID#,11
      
      
  3. ページ上部の「リージョン定義」タブを選択します。

  4. 「ヘッダーおよびフッター」までスクロールします。

  5. 「リージョン・フッター」に、次のように入力します。

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

ページの実行

新しく作成したカレンダを表示するには、「ページの実行」アイコンをクリックします。 レポートが図14-14に示すように表示されます。「毎週」または「毎日」をクリックすると、対応するカレンダ表示で見ることができます。

また、問題について表示されたテキストをクリックすると、「Edit Issue」ページも表示できます。カレンダに戻るには、「取消」をクリックします。

図14-14 「Target Resolution Dates」レポート

図14-14の説明が続きます。
「図14-14 「Target Resolution Dates」レポート」の説明

解決に要した平均日数を表示する棒グラフの追加

「Average Days to Resolve」レポートは、棒グラフで、終結した各問題の解決にかかった日数を計算し、その数の平均値を担当者別に計算します。

「Average Days to Resolve」レポートを追加するには、次のステップを実行します。

  1. 「アプリケーション」ホームページに移動します。

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

  3. チャート」を選択して「次へ」をクリックします。

  4. HTMLチャート」を選択して「次へ」をクリックします。

  5. 棒(HTML)」を選択して「次へ」をクリックします。

  6. 「ページ属性」で、次のステップを実行します。

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

    2. 「ページ名」および「リージョン名」に、Average Days to Resolveと入力します。

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

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

  8. 「チャート定義」で、次のステップを実行します。

    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. 残りのデフォルトを受け入れて「次へ」をクリックします。

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

ページの実行

新しく作成した棒グラフを表示するには、「ページの実行」をクリックします。 レポートが図14-15に示すように表示されます。

図14-15 「Average Days to Resolve」レポート

図14-15の説明が続きます。
「図14-15 「Average Days to Resolve」レポート」の説明

ホームページへのコンテンツの追加

詳細ページがすべて完成したら、コンテンツをホームページに追加し、すべてのページを結びつける必要があります。このセクションでは、次の情報を表示するように、ホームページを変更します。

  • 使用可能なすべてのレポートのメニュー

  • メンテナンス・ページへのナビゲーション

  • 新しい問題を追加するボタン

  • 期限切れの問題

  • 最近発見された問題

  • プロジェクト別の未解決の問題のチャート

  • 未割当ての問題

この項の内容は次のとおりです。

リストの追加

最初に、リストとして実装されるメニューを追加します。

メニューを追加するには、次のステップを実行します。

  1. 「アプリケーション」ホームページに移動します。

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

  3. 「ナビゲーション」で、「リスト」をクリックします。

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

  5. 「名前」に、Main Menuと入力します。

  6. 「リスト・テンプレート」で、「縦のサイドバー・リスト」を選択します。

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

リスト・エントリの作成

リストを作成したら、これにリスト・アイテムを追加します。各レポート・ページに対し、1つのリスト・アイテムを追加する必要があります。

「Assign Issues」のリスト・アイテムを追加するには、次のステップを実行します。

  1. ページの右側の「リスト・エントリの作成」ボタンをクリックします。

  2. 「リスト・エントリ・ラベル」に、Assign Issuesと入力します。

  3. 「ターゲット」で、次のように入力します。

    1. 「ページ」で、「8」を選択します。

    2. このページのページ区切りをリセット」を選択します。

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

    「リスト・エントリ」ページが表示されます。

ここで、さらに4つのリスト・アイテム(アプリケーションの各レポートに1つずつ)を作成する必要があります。

さらに4つのリスト・アイテムを追加するには、次のステップを実行します。

  1. 「リスト・エントリ」ページで、「リスト・エントリの作成」をクリックします。

  2. 次のステップを実行して、「Issues」のリスト・アイテムを定義します。

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

    2. 「リスト・エントリ・ラベル」に、Issuesと入力します。

    3. 「ターゲット」で、次の各項目を指定します。

      • 「ページ」で、「6」を選択します。

      • このページのページ区切りをリセット」を選択します。

      • 「キャッシュのクリア」に、6と入力します。

        これによって、ページ6のすべての選択項目がセッション・ステートから消去されます。

  3. 作成後、別のものを作成」をクリックします。

  4. 次のステップを実行して、「Issues 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)と入力します。

    3. 「ターゲット」の「ページ」で、「10」を選択します。

  7. 作成後、別のものを作成」をクリックします。

  8. 「Target Resolution Dates」のリスト・アイテムを定義するには、次のステップを実行します。

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

    2. 「リスト・エントリ・ラベル」に、Target Resolution Dates (calendar)と入力します。

    3. 「ターゲット」で、次の各項目を指定します。

      • 「ページ」で、「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. 変更の適用」をクリックします。

次に、メニューを含めるリージョンを作成します。

新しいリージョンを作成するには、次のステップを実行します。

  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」を選択し、「次へ」をクリックします。

  4. 「表示属性」で、次のステップを実行します。

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

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

    3. 「表示ポイント」で、「ページ・テンプレートのリージョン位置1」を選択するか、またはクイック・リンク「[Pos. 1]」を選択します。

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

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

ボタンを追加するには、次のステップを実行します。

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

  2. 「ボタン・リージョン」で、「ボタン」を選択して「次へ」をクリックします。

  3. 「ボタン位置」で、デフォルトの「リージョン位置にボタンを作成」を受け入れて「次へ」をクリックします。

  4. 「ボタン属性」で、次のステップを実行します。

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

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

      Add a New Issue
      
      
    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でソートするには、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」レポートをコピーしてから変更できます。

既存のレポートをコピーして新しいレポートを作成するには、次のステップを実行します。

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

  2. Name列で、「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」円グラフの追加

次に、「Open Issues by Project」を表示する円グラフを追加します。

円グラフを追加するには、次のステップを実行します。

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

  2. チャート」を選択して「次へ」をクリックします。

  3. SVGチャート」を選択して「次へ」をクリックします。

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

  5. 「表示属性」で、「タイトル」にOpen Issues by Projectと入力して「次へ」をクリックします。

  6. 「ソース」で、「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であること、また、円グラフで計算および使用される値はプロジェクト別の未解決の問題の合計数であることに注意してください。

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

チャートを編集するには、次のステップを実行します。

  1. 「リージョン」で、「Open Issues by Project」の横にある「SVGチャート」を選択します。

  2. 「チャート幅」に、500と入力します。

  3. 「チャート高さ」に、200と入力します。

  4. 「チャート・タイトル」で、タイトルを削除します。

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

    No Open Issues.
    
    
  6. 「フォントの設定」の「凡例」で、「フォント・サイズ」に「14」を選択します。

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

ページの実行

更新されたページを表示するには、「ページの実行」アイコンをクリックします。 ホームページが図14-16のように表示されます。

図14-16 更新されたホームページ

図14-16の説明が続きます。
「図14-16 更新されたホームページ」の説明

ブレッドクラム・メニューの追加

前述の演習で、ホームページにメニューを作成し、アプリケーション内の様々なページにナビゲートできるようにしました。次に、ホームページにナビゲートする方法を指定する必要があります。これは、ブレッドクラムを利用して行います。ブレッドクラムは、新しいページを作成するときに追加するか、ページを作成した後に手動で追加できます。

次の演習では、ブレッドクラム・エントリを追加し、次にそのブレッドクラムをページ0のリージョンに挿入します。ページ0に追加するコンポーネントは、アプリケーションのすべてのページで表示できます。

この項の内容は次のとおりです。

ブレッドクラム・ページへのナビゲート

ブレッドクラム・ページへナビゲートするには、次のステップを実行します。

  1. 「アプリケーション」ホームページに移動します。

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

  3. 「ナビゲーション」で、「ブレッドクラム」をクリックします。

  4. ブレッドクラム」アイコンをクリックします。

    「ブレッドクラム・エントリ」ページが表示されます。

ブレッドクラム・エントリの追加

次に、既存のブレッドクラム・エントリを編集し、他のページのブレッドクラム・エントリを追加します。

ページ1のブレッドクラム・エントリの編集

ページ1のブレッドクラム・エントリを編集するには、次のステップを実行します。

  1. 「ブレッドクラム・エントリ」で、「ページ1」をクリックします。

  2. 「ブレッドクラム」で、「ページ」に1と入力します。

  3. 「エントリ」で、「短縮名」にHomeと入力します。

  4. 「ターゲット」で、「ページ」に1と入力します。

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

ページ2のブレッドクラム・エントリの作成

ページ2のブレッドクラム・エントリを追加するには、次のステップを実行します。

  1. ブレッドクラム・エントリの作成」をクリックします。

  2. 「ブレッドクラム」で、「ページ」に2と入力します。

  3. 「エントリ」で、次のステップを実行します。

    1. 「親エントリ」で、「Home」を選択します。

    2. 「短縮名」に、Projectsと入力します。

  4. 「ターゲット」で、「ページ」に2と入力します。

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

ページ3のブレッドクラム・エントリの作成

ページ3のブレッドクラム・エントリを作成するには、次のステップを実行します。

  1. ブレッドクラム・エントリの作成」をクリックします。

  2. 「ブレッドクラム」で、「ページ」に3と入力します。

  3. 「エントリ」で、次のステップを実行します。

    1. 「親エントリ」で、「Projects」を選択します。

    2. 「短縮名」に、Create/Edit Projectsと入力します。

  4. 「ターゲット」で、「ページ」に3と入力します。

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

ページ4のブレッドクラム・エントリの作成

ページ4のブレッドクラム・エントリを作成するには、次のステップを実行します。

  1. ブレッドクラム・エントリの作成」をクリックします。

  2. 「ブレッドクラム」で、「ページ」に4と入力します。

  3. 「エントリ」で、次のステップを実行します。

    1. 「親エントリ」で、「Home」を選択します。

    2. 「短縮名」に、Peopleと入力します。

  4. 「ターゲット」で、「ページ」に4と入力します。

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

    「People」のブレッドクラム・エントリは、「Projects」と兄弟関係にあることに注意してください。

ページ5のブレッドクラム・エントリの作成

ページ5のブレッドクラム・エントリを作成するには、次のステップを実行します。

  1. ブレッドクラム・エントリの作成」をクリックします。

  2. 「ブレッドクラム」で、「ページ」に5と入力します。

  3. 「エントリ」で、次のステップを実行します。

    1. 「親エントリ」で、「People」を選択します。

    2. 「短縮名」に、Create/Edit Person Informationと入力します。

  4. 「ターゲット」で、「ページ」に5と入力します。

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

ページ6のブレッドクラム・エントリの作成

ページ6のブレッドクラム・エントリを作成するには、次のステップを実行します。

  1. ブレッドクラム・エントリの作成」をクリックします。

  2. 「ブレッドクラム」で、「ページ」に6と入力します。

  3. 「エントリ」で、次のステップを実行します。

    1. 「親エントリ」で、「Home」を選択します。

    2. 「短縮名」に、Issuesと入力します。

  4. 「ターゲット」で、「ページ」に6と入力します。

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

ページ7のブレッドクラム・エントリの作成

ページ7のブレッドクラム・エントリを作成するには、次のステップを実行します。

  1. ブレッドクラム・エントリの作成」をクリックします。

  2. 「ブレッドクラム」で、「ページ」に7と入力します。

  3. 「エントリ」で、次のステップを実行します。

    1. 「親エントリ」で、「Home」を選択します。

    2. 「短縮名」に、Create/Edit Issueと入力します。

  4. 「ターゲット」で、「ページ」に7と入力します。

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

ページ8のブレッドクラム・エントリの作成

ページ8のブレッドクラム・エントリを作成するには、次のステップを実行します。

  1. ブレッドクラム・エントリの作成」をクリックします。

  2. 「ブレッドクラム」で、「ページ」に8と入力します。

  3. 「エントリ」で、次のステップを実行します。

    1. 「親エントリ」で、「Home」を選択します。

    2. 「短縮名」に、Assign Issuesと入力します。

  4. 「ターゲット」で、「ページ」に8と入力します。

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

ページ9のブレッドクラム・エントリの作成

ページ9のブレッドクラム・エントリを作成するには、次のステップを実行します。

  1. ブレッドクラム・エントリの作成」をクリックします。

  2. 「ブレッドクラム」で、「ページ」に9と入力します。

  3. 「エントリ」で、次のステップを実行します。

    1. 「親エントリ」で、「Home」を選択します。

    2. 「短縮名」に、Issue Summary by Projectと入力します。

  4. 「ターゲット」で、「ページ」に9と入力します。

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

ページ10のブレッドクラム・エントリの作成

ページ10のブレッドクラム・エントリを作成するには、次のステップを実行します。

  1. ブレッドクラム・エントリの作成」をクリックします。

  2. 「ブレッドクラム」で、「ページ」に10と入力します。

  3. 「メニュー・オプション」で、次のステップを実行します。

    1. 「親エントリ」で、「Home」を選択します。

    2. 「短縮名」に、Resolved by Month Identifiedと入力します。

  4. 「ターゲット」で、「ページ」に10と入力します。

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

ページ11のブレッドクラム・エントリの作成

ページ11のブレッドクラム・エントリを作成するには、次のステップを実行します。

  1. ブレッドクラム・エントリの作成」をクリックします。

  2. 「ブレッドクラム」で、「ページ」に11と入力します。

  3. 「エントリ」で、次のステップを実行します。

    1. 「親エントリ」で、「Home」を選択します。

    2. 「短縮名」に、Target Resolution Datesと入力します。

  4. 「ターゲット」で、「ページ」に11と入力します。

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

ページ12のブレッドクラム・エントリの作成

ページ12のブレッドクラム・エントリを作成するには、次のステップを実行します。

  1. ブレッドクラム・エントリの作成」をクリックします。

  2. 「ブレッドクラム」で、「ページ」に12と入力します。

  3. 「エントリ」で、次のステップを実行します。

    1. 「親エントリ」で、「Home」を選択します。

    2. 「短縮名」に、Average Days to Resolveと入力します。

  4. 「ターゲット」で、「ページ」に12と入力します。

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

ページ0の作成

ブレッドクラムが完成したら、ページ0を作成し、ブレッドクラム・メニューを含めるリージョンを作成する必要があります。ページ0にコンポーネントを作成すると、アプリケーションを使用してすべてのページにコンポーネントが表示されます。

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

  1. 「アプリケーション」ホームページに移動します。

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

  3. 空白ページ」を選択して「次へ」をクリックします。

  4. 「ページ属性」で、「ページ番号」に0と入力して「次へ」をクリックします。

  5. 「ページ名」で、「名前」にBreadcrumbsと入力して「次へ」をクリックします。

  6. 「タブ」で、デフォルトの「いいえ」を受け入れて「次へ」をクリックします。

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

ブレッドクラムを含めるリージョンの作成

ブレッドクラムを含めるリージョンを作成するには、次のステップを実行します。

  1. 「成功」で、「ページの編集」を選択します。

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

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

  3. 「このページに追加するリージョン・タイプを指定」で、「ブレッドクラム」を選択して「次へ」をクリックします。

  4. 「ブレッドクラム・コンテナ・リージョン」で、次のステップを実行します。

    1. 「リージョン・タイトル」に、Breadcrumbsと入力します。

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

    3. 「表示ポイント」で、「ページ・テンプレートのリージョン位置1」を選択します。

      これを選択すると、ページのその他のすべてのコンテンツの上にブレッドクラムが表示されます。

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

  5. 「ブレッドクラム」で、デフォルト値を受け入れて「次へ」をクリックします。

  6. 「ブレッドクラム・エントリ」で、デフォルト値を受け入れて「次へ」をクリックします。

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

ページの編集」をクリックして、ホームページに戻ります。ページ0の「ページ定義」が表示されたら、「次のページ」ボタン(>)をクリックします。ページ1のページ定義が表示されます。

ページの実行

完成したホームページを表示するには、「ページの実行」アイコンをクリックします。 ホームページが図14-17のように表示されます。

図14-17 ブレッドクラム・メニュー付きの更新されたホームページ

図14-17の説明が続きます。
「図14-17 ブレッドクラム・メニュー付きの更新されたホームページ」の説明

ブレッドクラムは、上部のバーに表示されます。ページの左側にあるメンテナンス・メニューのいずれかのアイテムをクリックします。ブレッドクラムの変化に注意してください。

この段階で、アプリケーションは完全に機能しますが、セキュリティおよび電子メール通知が欠落しています。これらについては、次の項で説明します。

拡張機能の追加

アプリケーションが完全に機能するようになったら、計画およびプロジェクト分析段階で示した拡張機能を追加することができます。

この項の内容は次のとおりです。

電子メール通知のサポートの追加

計画およびプロジェクト分析フェーズでは、2つの電子メール要件が作成されました。

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

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

この項の内容は次のとおりです。

電子メール通知の動作方法

Oracle Application Expressアプリケーション内からメールを送信するには、提供されているAPEX_MAILパッケージをコールするPL/SQLプロセスを作成します。

電子メールはすぐには送信されず、DBMS_JOBによってキューがプッシュされるまで、一時キューに格納されます。DBMS_JOB は、SMTPホスト・アドレスおよびSMTPホスト・ポートというプリファレンスを使用して、キュー内のメールを送信します。デフォルトでは、これらのプリファレンスはlocalhostおよび25に設定されています。Oracle Application ExpressがSMTPサービス用に構成されない場合は、「電子メールの環境設定」を変更する必要があります。


参照:

電子メールの環境設定の構成については、『Oracle Database Application Expressユーザーズ・ガイド』の「アプリケーションからの電子メールの送信方法」を参照してください。

APEX_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 Issue」および「Assign Issues」)から実行できます。

「Create/Edit Issue」ページでは、初期値を格納し、すべての変更に対してその初期値を確認して、割当てが作成または変更されたかどうかを確認できます。「Assign Issues」は表形式フォームであるため、古い値と新しい値を確認する方法はありません。このため、通知を実装する最適な方法は、HT_ISSUESでBEFORE INSERTおよびBEFORE UPDATEトリガーを使用することです。SQLワークショップを使用すると、このトリガーをプログラムによって作成できます。

HT_ISSUESにBEFORE INSERTおよびBEFORE UPDATEトリガーを作成するには、次のステップを実行します。

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

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

  3. 「作成するデータベース・オブジェクトのタイプの選択」で、「トリガー」をクリックします。

  4. 「表名」で、「HT_ISSUES」を選択して「次へ」をクリックします。

  5. 「定義」で、次のステップを実行します。

    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
      
                 -- APEX_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. このトリガーをご使用の環境で機能させるには、APEX_MAIL.SENDのコメントをはずし、p_toおよびp_fromを、独自の有効な電子メール・アドレスと置き換えます。

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

  6. コードを確認するには、「SQL」の矢印を展開します。

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

期限切れの問題の通知の追加

2つ目の電子メール通知では、問題が期限切れになるとプロジェクト・リーダーに通知されます。解決目標日が過ぎると、問題は期限切れになりますが、終結はしていません。問題の期限が切れたかどうかの判別にユーザーは介入しないため、ページ上で、またはトリガーで期限切れを確認することはできません。

期限切れの問題を確認する最適な方法は、HT_ISSUES表を問い合せるパッケージを記述することです。パッケージは、期限切れの問題を検出すると、プロジェクト・リーダーに電子メールを送信します。このプロシージャは、プロジェクト別に問題を確認するため、プロジェクト・リーダーが受信する電子メールは、各問題で1つではなく、すべての期限切れの問題で1つのみです。パッケージは、dbms_jobによって1日に1回コールされます。

オブジェクトの作成機能は、次のいずれかの方法で使用できます。

  • SQLワークショップ内からパッケージおよびパッケージ本体を作成する。

  • SQLコマンド・プロセッサを使用して、createコマンドを実行する。

パッケージを作成するには、次のステップを実行します。

  1. 「作業領域」ホームページで「SQLワークショップ」をクリックして、「SQLコマンド」をクリックします。

    SQLコマンドが表示されます。

  2. 表示されるフィールドに次の文を入力します。

    CREATE OR REPLACE package ht_check_overdue_issues
    AS
       PROCEDURE email_overdue;
    END;
    /
    
    
  3. 実行」をクリックします。

パッケージ本体を作成するには、次のステップを実行します。

  1. 「作業領域」ホームページで「SQLワークショップ」をクリックして、「SQLコマンド」をクリックします。

    SQLコマンドが表示されます。

  2. 表示されるフィールドに次の文を入力します。

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

    このトリガーをご使用の環境で機能させるには、APEX_MAIL.SENDのコメントをはずし、p_toおよびp_fromを、独自の有効な電子メール・アドレスと置き換えます。

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

    次に、従業員の有効な電子メール・アドレスを含むデモンストレーション・データを更新します。

有効な電子メール・アドレスを含むデモンストレーション・データを更新するには、次のステップを実行します。

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

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

  3. HT_PEOPLE表を選択します。

  4. 「データ」タブを選択します。

  5. 各ユーザーの電子メール・アドレスを編集します。

    1. 編集」アイコンをクリックします。

    2. 「Person Email」を有効な電子メール・アドレスに変更します。

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

  6. HT_PEOPLE表内のすべてのユーザーについて、ステップ5を繰り返します。

  7. ホーム」ブレッドクラム・リンクをクリックして、「作業領域」ホームページに戻ります。

    次に、新しく作成されたパッケージを、指定した時間間隔で実行するDBMS_JOBを作成します。

DBMS_JOBを作成するには、次のステップを実行します。

次に、新しく作成されたパッケージを実行するDBMS_JOBの例を示します。ただし、これを有効なDBMS_JOBにするには、適切に間隔を設定してSQLワークショップ内でSQLコマンドを使用して実行する必要があります。

DECLARE
   jobno number;
BEGIN
   DBMS_JOB.SUBMIT(
      job => jobno,
     what => 'BEGIN
              ht_check_overdue_issues.email_overdue;
              END;',
next_date => SYSDATE,
 interval => desired_interval
             );
   COMMIT;
END;
/

このDBMS_JOBで、desired_intervalを適切な間隔に置き換えます。たとえば、毎日1回このジョブを実行するには、desired_intervalを次と置き換えます。

'TRUNC(SYSDATE)+(25/24)'

参照:

Application Expressアプリケーションから電子メールを送信する方法については、OTNを参照してください。
http://www.oracle.com/technology/products/database/application_express/howtos/index.html


アプリケーション・セキュリティの追加

計画およびプロジェクト分析フェーズでは、2つのセキュリティ要件が作成されました。

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

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

Oracle Application Express内で、認可スキームを定義できます。認可は、ユーザー権限に基づいて、特定のコントロールまたはコンポーネントへのユーザーのアクセスを制御します。定義した後で、アクセスを制限するページ、リージョンまたはアイテムに認可スキームを関連付けることができます。各認可スキームは必要なときにのみ実行されます。ページ・ビューごとに1回検証するか、セッションごとに1回検証するかを定義します。

この項の内容は次のとおりです。

プロジェクトおよびユーザー定義の制限

1つ目の要件は、CEOおよびマネージャのみが、プロジェクトおよびユーザーを定義および管理できることです。この要件に対処するには、次のステップを実行します。

  • 認可スキームを作成して、カレント・ユーザーのロールを確認します。

  • 認可スキームを「作成」ページおよび「編集」ページにナビゲートするプロジェクトとユーザーのレポートのアイテムと関連付けます。

  • 認可スキームを「作成」ページおよび「編集」ページそのものと関連付けて、ユーザーがターゲット・ページへのURLを手動で編集し、セキュリティを回避しないようにします。

カレント・ユーザーを参照するには、セッション変数:APP_USERを使用します。このセッション変数は、ユーザーの電子メール・アドレス(作業領域または作業領域名と同じ)と比較されます。このタイプのセキュリティをコーディングする場合は、常に、すべてのセキュリティを通過できるユーザーでコーディングする必要があります。このユーザーは、開発およびテストで非常に役に立ちます。この方法を実行できない場合は、自分をCEOまたはマネージャとして定義しないかぎり、制限付きページにアクセスすることはできません。

認可スキームの作成

認可スキームを作成するには、次のステップを実行します。

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

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

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

  4. 「セキュリティ」で、「認可スキーム」をクリックします。

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

  6. 「認可スキームを作成」で、デフォルトの「最初から」を受け入れて「次へ」をクリックします。

  7. 「認可スキーム」の「名前」に、次のように入力します。

    USER_CEO_OR_MANAGER
    
    
  8. 「認可スキーム」で、次のステップを実行します。

    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.
      
      
  9. 「評価ポイント」までスクロールします。「認可スキームを検証」で、「セッションごとに1回」を選択します。

    通常、割り当てられたロールは指定されたセッション内では変更されないため、このインスタンスでは、この選択で十分です。

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

次に、認可スキームを適切なオブジェクトと関連付ける必要があります。

「Projects」レポートのオブジェクトの関連付け

認可スキームを「Projects」レポートと関連付けるには、次のステップを実行します。

  1. 右上にある「ページの編集」アイコンをクリックします。「ページの編集」アイコンは、小さな緑色の紙と鉛筆に似ています。

  2. 「ページ」に、2と入力して「実行」をクリックします。

    ページ2(「Projects」)のページ定義が表示されます。

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

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

  5. 「認可」で、認可スキームの「USER_CEO_OR_MANAGER」を選択します。

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

  7. 取消」をクリックします。

認可スキームを「Projects」レポートの「作成」ボタンと関連付けるには、次のステップを実行します。

  1. ページ2のページ定義の「ボタン」で、「作成」リンク(アイコンでない)をクリックします。

    「ページ・ボタンの編集」ページが表示されます。

  2. 「認可」で、認可スキームの「USER_CEO_OR_MANAGER」を選択します。

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

オブジェクトと「Create/Edit Project」レポートとの関連付け

認可スキームを「Create/Edit Project」ページと関連付けるには、次のステップを実行します。

  1. 「次のページ」(>)ボタンをクリックして、ページ3に移動します。

    ページ3(「Create/Edit Project」)のページ定義が表示されます。

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

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

  3. 「セキュリティ」で、認可スキームの「USER_CEO_OR_MANAGER」を選択します。

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

オブジェクトと「People」レポートとの関連付け

認可スキームを「People」レポートと関連付けるには、次のステップを実行します。

  1. 「次のページ」(>)ボタンをクリックして、ページ4に移動します。

    ページ4(「People」)のページ定義が表示されます。

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

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

  4. 「認可」で、認可スキームの「USER_CEO_OR_MANAGER」を選択します。

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

  6. 取消」をクリックします。

認可スキームを「People」レポートの「作成」ボタンと関連付けるには、次のステップを実行します。

  1. 「次のページ」(>)ボタンをクリックして、ページ5に移動します。

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

  2. 「ボタン」で、「作成」リンク(アイコンでない)をクリックします。

    「ページ・ボタンの編集」ページが表示されます。

  3. 「認可」で、認可スキームの「USER_CEO_OR_MANAGER」を選択します。

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

認可スキームを「Create/Edit Person Information」ページと関連付けるには、次のステップを実行します。

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

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

  2. 「セキュリティ」で、認可スキームの「USER_CEO_OR_MANAGER」を選択します。

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

HOWTOというユーザー名を持つユーザーを作成すると、これをテストできます。HOWTOユーザーは、編集リンクを表示可能である必要があります。その後で、HOWTO2という別のユーザーを作成します。このユーザーは、リンクを表示不可能である必要があります。

問題の変更の制限

2つ目の要件は、問題が割り当てられた後で、割り当てられたユーザー(またはプロジェクト・リーダー)のみが問題に関するデータを変更できることです。この要件は、すべての問題に対して変更を行うため、多少複雑です。

現在、ユーザーが問題を変更できるページは、「Create/Edit Issue」ページと「Assign Issues」ページの2つです。「Assign Issues」ページで表示される問題は、未割当ての問題のみです。問題が未割当てのため、セキュリティは必要ありません。

ユーザーが問題を編集するためにナビゲートできる場所は多数あります。

  • ホームページの3つのリージョンで問題を表示するか、または編集リンクを含めます。

  • 「Issues」レポートには、各問題を編集するためのリンクがあります。

  • 「Target Resolution Dates」レポートを使用すると、ユーザーが問題を選択して編集できます。

他のユーザーはデータを変更することはできませんが、進捗および解決を表示できるように、問題に関するすべての詳細データをユーザーが表示できるようにする場合があります。この要件の場合、最適な方法は、ページ・ビューごとに1回評価される認可スキームを作成することです。

認可スキームを、「Create/Edit Issue」ページの「変更の適用」および「削除」ボタンの両方と関連付けます。この方法では、認可されていないユーザーは、すべての詳細を表示できますが、変更を行っても、その変更を保存することはできません。

追加したセキュリティでは、HT_ISSUESで挿入、更新および削除を行うプロセスと認可スキームを関連付けることもできます。これによって、アプリケーションでは、他のユーザーによる変更の適用プロセスをコールするためのURLの変更を防ぐことができます。変更できない理由をユーザーに知らせるには、認可に失敗した際に説明が表示されるHTMLリージョンを追加できます。このスキームのSQLはP7_ISSUE_IDを参照する必要があるため、「Create/Edit Issue」ページに固有である必要があります。また、評価される時点で、必要なデータはセッション・ステートで使用できないため、データベースからデータを取得する必要があります。使用可能なアイテムは、リンクによって渡される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 Issue」ページの適切なオブジェクトと関連付ける必要があります。

オブジェクトと「Create/Edit Issue」レポートとの関連付け

認可スキームをボタンおよびプロセスと関連付けるには、次のステップを実行します。

  1. 「アプリケーション」ホームページに移動します。

  2. ページ「7 - Create/Edit Issue」を選択します。

  3. 「ボタン」で、「削除」をクリックします。

    1. 「認可」で、認可スキームの「P7_ASSIGNED_OR_PROJECT_LEAD」を選択します。

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

  4. 「ボタン」で、「変更の適用」をクリックします。

    1. 「認可」で、認可スキームの「P7_ASSIGNED_OR_PROJECT_LEAD」を選択します。

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

  5. 「ボタン」で、「作成」をクリックします。

    1. 「認可」で、認可スキームの「P7_ASSIGNED_OR_PROJECT_LEAD」を選択します。

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

  6. 「ボタン」で、「作成後、別のものの作成」をクリックします。

    1. 「認可」で、認可スキームの「P7_ASSIGNED_OR_PROJECT_LEAD」を選択します。

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

  7. 「ページ・プロセス」の「プロセス」で、「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. 「認可スキーム」で、「P7_ASSIGNED_OR_PROJECT_LEADでない」を選択します。これを選択すると、認可スキームが失敗したときにのみ、リージョンが表示されるようになります。

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

図14-18に、認可が失敗したユーザーによって実行される「Create/Edit Issue」ページを示します。新しいリージョンはページの上部に表示され、表示されるボタンは「取消」のみです。

図14-18 認可の失敗を表示する新しいリージョン

図14-18の説明が続きます。
「図14-18 認可の失敗を表示する新しいリージョン」の説明

このセキュリティ要件に対しては、問題の詳細を表示する別のページを作成することがより効果的です。issue_idとカレント・ユーザーを取得し、表示専用または編集用のフラグを渡すプロシージャが必要となります。このプロシージャへのコールに基づいて「ビュー」ページまたは「編集」ページのいずれかをコールする、すべてのレポートのリンクを動的に構築できます。リンクを使用しないで編集ページにアクセスするユーザーを回避するために、挿入、更新および削除処理が行われる前に権限を確認することがあります。

アプリケーションのデプロイ

アプリケーションが完成したら、次のステップで、このアプリケーションをデプロイします。通常、開発者はあるサーバーでアプリケーションを作成し、別のサーバーにデプロイします。この方法は必須ではありませんが、本番のインスタンスに影響を与えずに不具合を解決できます。


注意:

別のサーバーにアプリケーションをデプロイするには、別のOracle Application Expressインスタンスをインストールおよび構成する必要があります。

この項の内容は次のとおりです。

アプリケーション定義の移動

アプリケーション定義は、Oracleデータベースに格納されます。アプリケーション定義には、テンプレートなど、アプリケーションを構成するすべての要素が含まれていますが、データベース・オブジェクト定義や基礎となるデータは含まれていません。アプリケーションを別のOracle Application Expressインスタンスに移動するには、アプリケーション定義を開発サーバーからエクスポートして、本番サーバーにインポートする必要があります。

この項の内容は次のとおりです。

アプリケーション定義のエクスポート

開発サーバーからアプリケーション定義をエクスポートするには、次のステップを実行します。

  1. 「作業領域」ホームページで、「アプリケーション・ビルダー」アイコン上の矢印をクリックして、作成したアプリケーションを選択します。

  2. エクスポート/インポート」アイコンをクリックします。

  3. 「エクスポート/インポート」で、「エクスポート」をクリックして「次へ」をクリックします。

  4. 「アプリケーション」で、この演習で作成したアプリケーションが選択されていることを確認します。

  5. アプリケーションのエクスポート」をクリックします。

  6. 選択を求められたら、ファイルを保存するように選択します。

  7. ローカルのハード・ドライブの場所を指定して「保存」をクリックします。

アプリケーションをサポートする必須オブジェクトの作成

本番インスタンスでは、アプリケーションのサポートに必要なオブジェクトを作成する必要があります。本番インスタンスにログインして、「データベース・オブジェクトの作成」に示すステップを実行します。


注意:

アプリケーション定義をインポートするために、サポートするオブジェクトは必要はありませんが、これらがないと、コードはテストできません。

アプリケーション定義の本番インスタンスへのインポート

「作業領域」ホームページの本番インスタンスにログインして、次のステップを実行します。

  1. 「作業領域」ホームページで、「アプリケーション・ビルダー」アイコン上の矢印をクリックして、作成したアプリケーションを選択します。

  2. 「アプリケーション」ホームページで、「エクスポート/インポート」をクリックします。

  3. 「エクスポート/インポート」ページで、「インポート」をクリックして「次へ」をクリックします。

  4. 「ファイルのインポート」で、次のステップを実行します。

    1. 「インポート・ファイル」で、「参照」ボタンをクリックして、エクスポートしたファイルを検索します。

    2. 「ファイル・タイプ」で、「アプリケーション、ページまたはコンポーネントのエクスポート」を選択します。

    3. 「ファイルのキャラクタ・セット」で、デフォルトを受け入れて「次へ」をクリックします。

    成功メッセージが表示されたら、次のステップで、ファイルをインストールします。

  5. インストール」をクリックします。

  6. 「アプリケーションのインストール」で、次のステップを実行します。

    1. 「解析スキーマ」で、アプリケーション・オブジェクトが含まれる本番サーバー上のスキーマを選択します。

    2. 「ビルド・ステータス」で、「アプリケーションの実行および構築」を選択します。

      このオプションを使用すると、他のユーザーがアプリケーションを実行したり、必要に応じてログインし、コードを変更したりできるようになります。また、「アプリケーションの実行のみ」を選択することもできます。このオプションを選択した場合は、アプリケーションのソース・コードにアクセスできなくなることに注意してください。

    3. 「次のアプリケーションとしてインストール」で、次の項目を選択できます。

      • エクスポート・ファイルからアプリケーションIDを再利用: アプリケーションIDが本番インスタンスで使用されていない場合にのみ選択します。

      • 新しいアプリケーションIDを自動割当て: 新しいアプリケーションIDを割り当てる場合に選択します。

      • アプリケーションIDを変更: 既存のアプリケーションIDを変更する場合に選択します。このオプションを選択すると、新しいアプリケーションIDを入力するように求められます。

        既存のアプリケーションと同じIDを持つアプリケーションを現行の作業領域にインストールすると、既存のアプリケーションが削除されてから、新しいアプリケーションがインストールされます。既存のアプリケーションと同じIDを持つアプリケーションを異なる作業領域にインストールしようとすると、エラー・メッセージが表示されます。

        すべての文が成功すると、インストールはコミットされ、永続的になります。エラーが発生した場合、インストールはロールバックされ、永続的な変更は行われません。

    4. アプリケーションのインストール」をクリックします。

    インストールが成功すると、「アプリケーション・インストール後のユーティリティ・オプション」ページが表示されます。ここでは、次のいずれかを選択できます。

    • アプリケーションの実行: アプリケーションを実行する場合に選択します。

    • アプリケーション属性: アプリケーション・ビルダー内のアプリケーション定義を表示する場合に選択します。

データのロード

アプリケーションをデプロイする次のステップでは、データをロードします。少なくとも、project表およびpeople表は移入する必要があります。

このタスクの実行に使用できるメカニズムは、次のように様々なものがあります。

  • アプリケーション自体を使用して、データを作成します。

  • データ・ローダーを使用して、スプレッドシートからコピーされたデータをロードします。

  • SQLスクリプトを使用して、データを作成するスクリプトを実行します。

  • データがOracleデータベースにすでにある場合は、エクスポート/インポートを使用してマシン間でデータを移動するか、またはSQLを使用して既存データを取得および変換し、アプリケーション表にロードします。


参照:

デモンストレーション・データのロード」および『Oracle Database Application Expressユーザーズ・ガイド』の「データのインポート、エクスポート、ロードおよびアンロード」

考慮すべき認証メカニズムの変更

アプリケーションのログイン・ページで、ユーザー名とパスワードを指定してログインAPIをコールすると、Application Expressエンジンによって、アプリケーションの現行の認証スキームに指定されている資格証明の検証方式がコールされます。ログインAPIから資格証明を検証するには、3つの方法があります。

  • ブールを戻すPL/SQLファンクションとしてユーザー独自の方式を実装し、アプリケーションのスキーマに配置します。

  • 組込み式のLDAP認証方式を使用します。これは、ユーザーが指定したLDAPディレクトリに対してユーザー名とパスワードを確認します。

  • 組込み式のOracle Application Express認証方式を使用します。これは、Oracle Application Express作業領域リポジトリに対してユーザー名とパスワードを確認します。

現在、アプリケーションは組込み式のOracle Application Express認証方式を使用しています。


参照:

『Oracle Database Application Expressユーザーズ・ガイド』の「認証を介したユーザーの本人確認」

ユーザーの作成

アプリケーションにアクセスできるようにするために、ユーザーを作成する必要があります。Oracle Application Express認証を使用している場合、ユーザーを作成する最も簡単な方法は、「ユーザーの管理」ページにアクセスすることです。

新しいユーザーを作成するには、次のステップを実行します。

  1. 「作業領域」ホームページに移動します。

  2. ページの右側の「管理」リストから、「Application Expressユーザーの管理」をクリックします。

  3. ページ右側にある「タスク」リストから、「エンド・ユーザーの作成」をクリックします。

  4. 「ユーザーの指定」に、必要な情報を入力します。

  5. ユーザーの作成」または「作成後、別のものの作成」をクリックします。

URLの公開

アプリケーションのデプロイ、データのロードおよびユーザーの作成が完了したら、本番URLを公開できます。

アプリケーションへのURLは、「アプリケーション」ホームページの「実行」アイコンの上にマウスを合わせると確認できます。ページ下部のステータス・バーにURLが表示されます。

「実行」アイコンの値は、「セキュリティ属性の編集」ページの「ホーム・リンク」属性から取得されます。このリンクを参照するのは、このアイコンと、Oracle Application ExpressログインAPIを使用しないアプリケーションのみです。次に例を示します。

http://apex.oracle.com/pls/otn/f?p=11563:1:3397731373043366363

各要素の意味は次のとおりです。

  • apex.oracle.comは、サーバーのURLです。

  • plsは、mod_plsqlカートリッジを使用するためのインジケータです。

  • otnは、データ・アクセス記述子(DAD)名です。

  • f?p=は、Oracle Application Expressによって使用される接頭辞です。

  • 11563は、コールされるアプリケーションです。

  • 1は、表示されるアプリケーション内のページです。

  • 3397731373043366363は、セッション番号です。

この例のアプリケーションを実行するには、次のURLを使用します。

http://apex.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://apex.oracle.com/pls/otn/f?p=11563:1

使用した例からもわかるように、URLに意味はなく、長くすることができます。ホスト名は、わかりやすいように変更できます。また、短縮した形式で公開したり、ユーザーにとってわかりやすいURLを公開するために、Apacheを構成してURLを書き直すこともできます。詳細は、Apacheのドキュメントを参照してください。