ヘッダーをスキップ
Oracle® Application Expressアドバンスト・チュートリアル
リリース3.2
B53796-03
  目次へ移動
目次

前
 
次
 

14 問題追跡アプリケーションの設計方法

このチュートリアルでは、問題追跡アプリケーションの例にデータ・オブジェクトを計画、設計および移入する方法を説明します。このチュートリアルを終了すると、第15章「問題追跡アプリケーションの作成およびデプロイ方法」に進み、この章で設計したデータ・オブジェクトにアプリケーションのユーザー・インタフェースを実装およびデプロイすることができます。

Oracle Technology Networkで、完成したIssue Trackerアプリケーションのサンプルおよび補助スクリプトを入手できます。次の場所に移動し、「パッケージ・アプリケーション」にナビゲートしてから「Issue Tracker」を選択します。

http://www.oracle.com/technology/products/database/application_express/index.html


注意:

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

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

このトピックに関するその他の例は、次に示すOracle by Examples (OBE)を参照してください。

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

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

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

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

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

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

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

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

必要なデータの収集

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

  • 問題のサマリー

  • 問題の詳細

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

  • 問題が発見された日付

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

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

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

  • 問題の優先順位

  • 目標とする解決日

  • 実際の解決日

  • 進捗レポート

  • 解決のサマリー

セキュリティ要件の定義

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

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

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

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

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

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

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

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

データ管理機能の選択

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

  • 問題の作成

  • 問題の割当て

  • 問題の編集

  • プロジェクトの作成

  • プロジェクトの管理

  • ユーザーの作成

  • ユーザー情報の管理

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

データ表示機能の選択

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

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

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

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

  • 最近発見された問題

  • 未割当ての問題

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

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

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

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

特別な機能要件の定義

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

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

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

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

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

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

この演習用に設計されたデータ・モデルは、図14-1のようになります。

図14-1 Issue Trackerのデータベース・オブジェクトのデータ・モデル

図14-1の説明が続きます
「図14-1 Issue Trackerのデータベース・オブジェクトのデータ・モデル」の説明

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

Projects表

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

表14-1 Projects表の詳細

列名 サイズ Not Null 制約 説明

project_id

number

該当なし

はい

主キー

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

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

project_name

varchar2

255

はい

一意キー

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

start_date

date

該当なし

はい

なし

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

target_end_date

date

該当なし

はい

なし

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

actual_end_date

date

該当なし

いいえ

なし

実際の終了日です。

created_on

date

該当なし

はい

なし

レコードが作成された日付です。

created_by

varchar2

255

はい

なし

レコードを作成したユーザーです。

modified_on

date

該当なし

はい

なし

レコードが最後に変更された日付です。

modified_by

varchar2

255

はい

なし

レコードを最後に変更したユーザーです。


People表

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

現行のユーザーを割り当てる場合は、People表にユーザー名の列を追加します。これによって、認証メカニズムを決定する際の柔軟性が向上し、また、ログオンしたユーザーを特定して、そのユーザーがアプリケーションにアクセスできるかどうかを決定する認可スキームも使用できるようになります。

基準として、各表にaudit列を追加します。これらの列は、実装の直前に一貫して各表に追加されるため、分析時に指定する必要はありません。

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

表14-2 People表の詳細

列名 サイズ Not Null 制約 説明

person_id

number

該当なし

はい

主キー

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

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

person_name

varchar2

255

はい

一意キー

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

person_email

varchar2

255

はい

なし

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

person_role

varchar2

30

はい

チェック制約

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

username

varchar2

255

はい

一意キー

このユーザーのユーザー名です。ユーザーの詳細にログインをリンクさせるために使用します。

assigned_project

number

該当なし

いいえ

なし

このユーザーが割り当てられているプロジェクトです。

created_on

date

該当なし

はい

なし

レコードが作成された日付です。

created_by

varchar2

255

はい

なし

レコードを作成したユーザーです。

modified_on

date

該当なし

はい

なし

レコードが最後に変更された日付です。

modified_by

varchar2

255

はい

なし

レコードを最後に変更したユーザーです。



注意:

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

Issues表

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

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

表14-3 Issues表の詳細

列名 サイズ Not Null 制約 説明

issue_id

number

該当なし

はい

主キー

問題を識別する一意の数値IDです。

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

issue_summary

varchar2

255

はい

なし

問題の簡潔なサマリーです。

issue_description

varchar2

4000

いいえ

なし

問題の詳細です。

identified_by_person_id

number

該当なし

はい

「People」への外部キー

問題を発見したユーザーです。

identified_date

date

該当なし

はい

なし

問題が発見された日付です。

related_project

number

該当なし

はい

「Projects」への外部キー

問題に関連するプロジェクトです。

assigned_to

integer

該当なし

いいえ

foreign key to eba_it_people

この問題を所有しているユーザーです。

status

varchar2

30

はい

チェック制約

問題のステータスです。新しい場合はOpenに、実際の解決日が入力された場合はClosedに自動的に設定されます。

priority

varchar2

30

いいえ

チェック制約

問題の優先順位です。

target_resolution_date

date

該当なし

いいえ

なし

目標とする解決日です。

progress

varchar2

4000

いいえ

なし

問題の進捗です。

actual_resolution_date

date

該当なし

いいえ

なし

問題の実際の解決日です。

resolution_summary

varchar2

4000

いいえ

なし

解決のサマリーです。

created_on

date

該当なし

はい

なし

レコードが作成された日付です。

created_by

varchar2

255

はい

なし

レコードを作成したユーザーです。

modified_on

date

該当なし

はい

なし

レコードが最後に変更された日付です。

modified_by

varchar2

255

はい

なし

レコードを最後に変更したユーザーです。



注意:

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

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

アプリケーション作成の最初のステップとして、データベース・オブジェクトを作成します。

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

追加で必要なデータベース・オブジェクト

このアプリケーションに必要な表の主キー値を移入する場合は、順序を使用できます。他の方法として、一意の値を提供するファンクションを作成することもできます。このアプリケーションでは、後者の方法を使用します。ファンクションは、アプリケーションに対して指定されたパッケージの一部として作成されます。ユーザー・インタフェースの実装時に、追加のファンクションおよびプロシージャが必要になった場合は、これらを追加できます。

パッケージの仕様部および本体のDDLを次に示します。最初にパッケージ仕様部が作成され、次にパッケージ本体が作成されます。パッケージ本体が最後に作成されるのは、本体が通常、指定済の表を参照するためです。ただし、この例では、本体は表を参照しません。

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

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 Tracker Applicationと入力します。

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

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

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

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

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

    確認のリクエストとともにサマリー・ページが表示されます。

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

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

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

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

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

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

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

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

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

    • IT_ISSUES

    • IT_PEOPLE

    • IT_PROJECTS

    表14-2表14-3および表14-4のような表が表示されます。

    図14-4 IT_PROJECTS表

    図14-4の説明が続きます
    「図14-4 IT_PROJECTS表」の説明


関連項目:

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

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

すべての必要なデータベース・オブジェクトを作成した後、表にデータをロードします。手動でデータをロードするか、SQLスクリプトで使用可能なインポート機能によってスクリプトを記述および実行できます。ただし、次の演習では、SQLスクリプトを使用してデモンストレーション・データをロードします。デモンストレーション・データを作成、削除および再作成できるように、パッケージに作成スクリプトが含まれています。最初に、パッケージ仕様部およびパッケージ本体を作成するスクリプトをロードして実行します。次に、コマンド・プロセッサを使用して、新しいパッケージ内からプロシージャを実行します。

デモンストレーション・データをロードするには、次のステップを実行します。

  1. SQLワークショップ」ブレッドクラム・リンクをクリックします。

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

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

  4. 「スクリプト・エディタ」に、次のように指定します。

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

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

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

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

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

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

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

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

    確認のリクエストとともに「スクリプトの実行」ページが表示されます。

  8. 実行」をクリックして確認します。

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

  9. SQLワークショップ」ブレッドクラム・リンクをクリックします。

  10. SQLコマンド」をクリックします。

  11. 各表にデータをロードするプロシージャを実行するには、次を入力します。

    begin
        it_sample_data.create_sample_projects;
        it_sample_data.create_sample_people;
        it_sample_data.create_sample_issues;
    end;
    
  12. 実行」をクリックします。

すべてのIssue Trackerアプリケーション・オブジェクトの設計、作成およびデータの移入を行いました。次に、これらのオブジェクトにユーザー・インタフェースを作成するには、引き続き第15章「問題追跡アプリケーションの作成およびデプロイ方法」を完了してください。