Application Express アドバンスト・チュートリアル

リリース3.2

B53796-03(原本部品番号:E11945-02)

目次

タイトルおよび著作権情報

はじめに

- 対象読者

- ドキュメントのアクセシビリティについて

- 関連ドキュメント

- 表記規則

1 このチュートリアルの概要

- 関連する項目

- チュートリアルのトピック

- サンプル・オブジェクトのロード方法の概要

- OEHR Sample Objectsのダウンロード

- OEHR Sample Objectsのインポートとインストール

- データベース・オブジェクトの表示

- アプリケーション認証の概要

2 表形式フォームの作成方法

- アプリケーションの作成

- ウィザードを使用した表形式フォームの作成

- 更新可能な列の選択リストへの変更

- 名前付きLOVの作成

- 選択リストとして表示するための列の編集

3 パラメータ付きレポートの作成方法

- Application Expressのレポートの概要

- レポート・タイプの概要

- 適切なレポート・タイプの選択

- 対話モード・レポートを使用したアプリケーションの作成

- データベース・オブジェクトの作成および移入

- アプリケーションの作成

- アプリケーションのプレビュー

- 他の表からのデータ列の追加

- 対話モード・レポートの使用

- 対話モード・レポート・コンポーネントの概要

- レポートへのフィルタの追加

- レポート設定の保存および列の選択

- デフォルトのレポート設定へのリセット

- 関連ドキュメント

4 拡張レポートの手法の使用

- 基本アプリケーションの作成

- データベース・オブジェクトの作成および移入

- アプリケーションの作成

- アプリケーションの実行

- ユーザー名およびプロジェクト名の表示

- 他の表から値を取得する目的での問合せの変更

- 表示する名前値列の追加

- 「Dashboard」ページの追加

- 「Dashboard」ページの作成

- 「Home」ページにおける「Dashboard」へのリンクの追加

- 「Dashboard」への「Overdue Issues」レポート・リージョンの追加

- 「Open Issues by Project」円グラフの追加

- 関連ドキュメント

5 フォーム・レイアウトの制御方法

- 表およびデータの入力フォームの作成

- HT_EMP表の作成

- 新しいアプリケーションの作成

- 入力フォームを含む新しいページの作成

- ページの実行

- リージョン属性の変更によるページの外観の変更

- リージョン・タイトルの編集

- 表示ポイントとテンプレートの変更

- 元の選択内容へのリージョン属性の変更

- アイテム属性がページ・レイアウトに与える影響の理解

- アイテム属性の編集

- アイテムの位置修正

- 表示専用リージョンへの変更

- リージョンのヘッダーおよびフッターの追加

- リージョンの条件付け

- ヒント・テキストを含むリージョンの追加

- アイテム・タイプの変更

- ラジオ・グループへのアイテムの変更

- 選択リストへのアイテムの変更

- チェック・ボックスへのアイテムの変更

- ラベル・テンプレート

- ボタンの変更

- 更新のためのページの実行

- データの太字強調

6 チェック・ボックスの使用方法

- アプリケーションの作成

- アプリケーションの実行

- 更新フォームの編集

- 「Warranty Period」フィールドの非表示化

- 新しいチェック・ボックスの追加

- レポートの表示の変更

- コンテンツをフィルタ処理するための複数値チェック・ボックスの作成

- 検索フィールドの複数値チェック・ボックスへの変更

- レポートのリージョン定義の編集

- デフォルトのチェック・ボックスの動作の変更

- チェック・ボックスの太字表示への変更

- レポートの各行へのチェック・ボックスの追加

- APEX_ITEM.CHECKBOXのコール

- チェック・ボックス配列値を送信するボタンの追加

- プロセスの追加

7 Webサービスの実装方法

- Webサービス参照の作成

- 新しいアプリケーションの作成

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

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

- フォームとレポートの作成

- 手動によるWebサービス参照の作成

- 手動によるWebサービス参照の作成

- Webサービスのテスト

- 手動Webサービスをコールするためのページの作成

- 「送信」ボタンの作成

- 「ZIP Code」および「Radius」用のアイテムの作成

- 手動作成されたWeb参照をコールするためのプロセスの作成

- Webサービスの結果のレポートの作成

8 積上げ棒グラフの作成方法

- チャートの問合せを作成するための構文

- アプリケーションの作成

- 新しいページの作成

- シリーズの追加

- サンプル・データの更新

- チャートの表示

- チャート属性の編集

9 アプリケーション内のファイルのアップロードおよびダウンロード方法

- アプリケーションの作成

- アップロード・フォームの作成

- HTMLリージョンの作成

- アップロード・アイテムの作成

- ボタンの作成

- ダウンロード・リンクを持つレポートの作成

- APEX_APPLICATION_FILESのレポートの作成

- ドキュメントをダウンロードするリンクの追加

- ドキュメントに関する追加属性の格納

- ドキュメント属性を格納する表の作成

- ドキュメントの件名を取得するアイテムの作成

- 情報を挿入するプロセスの作成

- レポート・リージョン内の追加属性の表示

- カスタム表へのドキュメントの格納

- カスタム表からのドキュメントのダウンロード

- ドキュメントをダウンロードするためのプロシージャの作成

- 「Uploaded Files」リージョンの編集

- 新規プロシージャを使用するためのダウンロード・リンクの変更

- 埋込みPL/SQLゲートウェイ用の「ダウンロード」ページの作成

- 考慮する必要があるセキュリティ上の問題

10 アプリケーションへのJavaScriptの組込み方法

- JavaScriptファンクションの組込み方法の理解

- 「HTMLヘッダー」属性へのJavaScriptの統合

- ページ・テンプレートによって参照される.jsファイルへのJavaScriptの挿入

- JavaScriptを使用したアイテムの参照

- ボタンからのJavaScriptのコール

- フォーム要素の値の変更

- クライアント側のJavaScript検証の作成

- OEHR_EMPLOYEES表でのアプリケーションの作成

- 「HTMLヘッダー」属性へのファンクションの追加

- ファンクションをコールするためのアイテムの編集

- ページの実行による検証テスト

- フォーム要素の有効化および無効化

- 「HTMLヘッダー」属性へのファンクションの追加

- ファンクションをコールするためのアイテムの編集

- 選択リストへのアイテムの変更

- disFormItemsファンクションへのコールの作成

11 アクセス制御ページの作成方法

- アクセス制御管理の仕組み

- アプリケーションの作成

- スプレッドシート・データのダウンロード

- スプレッドシート・データに基づくアプリケーションの作成

- アプリケーションの実行

- アクセス制御管理ページの作成

- アクセス制御ページの作成

- ページの表示

- アクセス制御リストへのユーザーの追加

- 認証ファンクションの作成

- 現行の認証スキームの更新

- コンポーネントへの認可スキームの適用

- 認可スキームとアプリケーションの関連付け

- ID列と編集権限との関連付け

- 「作成」ボタンと編集権限との関連付け

- ページ2と編集権限との関連付け

- ページ8へのアクセスの制限

- アプリケーションのテスト

- 表示権限によるログイン

- 編集権限によるログイン

- 管理者権限によるログイン

12 パッケージ・アプリケーションの確認方法

- パッケージ・アプリケーションの概要

- サポート・オブジェクト・ユーティリティ

- 「サポートするオブジェクト」ページへのアクセス

- サポート・オブジェクトのインストール

- ようこそメッセージ

- 前提条件

- 使用許諾

- アプリケーション置換文字列

- ビルド・オプション

- インストール前の検証

- インストール前の確認メッセージ

- インストール・スクリプト

- 成功メッセージ

- サポート・オブジェクトの削除

- 削除の確認メッセージの表示

- 削除スクリプトの確認

- 削除の成功メッセージの表示

- サポート・オブジェクトのエクスポート

- サポート・オブジェクトのエクスポート設定の確認

- エクスポート時にエクスポートのデフォルトが表示される場所

- アップグレード・スクリプトの作成

- アップグレード・メッセージの使用

- インストール・スクリプトの調整

- パブリック・パッケージ・アプリケーションおよびサンプル・コードのダウンロード

13 マスター・ディテールPDFレポートの作成方法

- Oracle BI Publisherのライセンス要件

- アプリケーションのホスティングされたバージョンの表示

- 必須オブジェクトのロード

- パッケージ・アプリケーションのダウンロード

- パッケージ・アプリケーションのインポートおよびインストール

- マスター・ディテール・フォームの作成

- レポートの表示

- レポート問合せの作成

- RTFテンプレートの作成

- Oracle BI Publisher Desktopのダウンロード

- XML Detailsのロード

- フィールドの挿入

- ライン・アイテムの挿入

- レポート・レイアウトの作成

- レポート・レイアウトの作成

- レポート・レイアウトとレポート問合せの関連付け

- アプリケーションへのPDFレポートのリンク

- ボタンの作成

- ページの実行

- すべての注文を含む1つのPDFの作成

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

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

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

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

- Projects表

- People表

- Issues表

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

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

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

- データベース・オブジェクトを作成するためのスクリプトの作成および実行

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

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

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

- Issue Trackerアプリケーションの概要

- Issue Trackerのユーザー・インタフェース

- Issue Trackerのアーキテクチャ

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

- 基本アプリケーションの作成

- ホームページへのナビゲーション・イメージ・リストの追加

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

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

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

- サマリー・レポートのためのページの追加

- 「Dashboard」ページの追加

- 拡張機能の追加

- 電子メール通知のサポートの追加

- アプリケーション・セキュリティの追加

- アプリケーションのデプロイ

- アプリケーション定義の移動

- 考慮すべき認証メカニズムの変更

- ユーザーの作成

- URLの公開

A DDLおよびスクリプト

- アプリケーション・データベース・オブジェクトのDDLの作成

- 問題スクリプトの作成

Oracle® Application Express

アドバンスト・チュートリアル

リリース3.2

B53796-03(原本部品番号:E11945-02)

2012年2月

Oracle Application Expressアドバンスト・チュートリアル, リリース3.2

B53796-03

Copyright © 2003, 2012, Oracle and/or its affiliates.All rights reserved.

原本著者: Drue Swadener, Anne Romano, Terri Jennings

協力者: Carl Backstrom, Amitabh Chhibber, Sharon Kennedy, Jason Straub, Rekha Vallam

このソフトウェアおよび関連ドキュメントの使用と開示は、ライセンス契約の制約条件に従うものとし、知的財産に関する法律により保護されています。ライセンス契約で明示的に許諾されている場合もしくは法律によって認められている場合を除き、形式、手段に関係なく、いかなる部分も使用、複写、複製、翻訳、放送、修正、ライセンス供与、送信、配布、発表、実行、公開または表示することはできません。このソフトウェアのリバース・エンジニアリング、逆アセンブル、逆コンパイルは互換性のために法律によって規定されている場合を除き、禁止されています。

ここに記載された情報は予告なしに変更される場合があります。また、誤りが無いことの保証はいたしかねます。誤りを見つけた場合は、オラクル社までご連絡ください。

このソフトウェアまたは関連ドキュメントが、米国政府機関もしくは米国政府機関に代わってこのソフトウェアまたは関連ドキュメントをライセンスされた者に提供される場合は、次のNoticeが適用されます。

U.S. GOVERNMENT RIGHTS Programs, software, databases, and related documentation and technical data delivered to U.S. Government customers are "commercial computer software" or "commercial technical data" pursuant to the applicable Federal Acquisition Regulation and agency-specific supplemental regulations.As such, the use, duplication, disclosure, modification, and adaptation shall be subject to the restrictions and license terms set forth in the applicable Government contract, and, to the extent applicable by the terms of the Government contract, the additional rights set forth in FAR 52.227-19, Commercial Computer Software License (December 2007).Oracle America, Inc., 500 Oracle Parkway, Redwood City, CA 94065.

このソフトウェアまたはハードウェアは様々な情報管理アプリケーションでの一般的な使用のために開発されたものです。このソフトウェアまたはハードウェアは、危険が伴うアプリケーション(人的傷害を発生させる可能性があるアプリケーションを含む)への用途を目的として開発されていません。このソフトウェアまたはハードウェアを危険が伴うアプリケーションで使用する際、このソフトウェアまたはハードウェアを安全に使用するために、適切な安全装置、バックアップ、冗長性(redundancy)、その他の対策を講じることは使用者の責任となります。このソフトウェアまたはハードウェアを危険が伴うアプリケーションで使用したことに起因して損害が発生しても、オラクル社およびその関連会社は一切の責任を負いかねます。

OracleおよびJavaはOracle およびその関連企業の登録商標です。その他の名称は、それぞれの所有者の商標または登録商標です。

Intel、Intel Xeonは、Intel Corporationの商標または登録商標です。すべてのSPARCの商標はライセンスをもとに使用し、SPARC International, Inc.の商標または登録商標です。AMD、Opteron、AMDロゴ、AMD Opteronロゴは、Advanced Micro Devices, Inc.の商標または登録商標です。UNIXはThe Open Groupの登録商標です。

このソフトウェアまたはハードウェアおよびドキュメントは、第三者のコンテンツ、製品、サービスへのアクセス、あるいはそれらに関する情報を提供することがあります。オラクル社およびその関連会社は、第三者のコンテンツ、製品、サービスに関して一切の責任を負わず、いかなる保証もいたしません。オラクル社およびその関連会社は、第三者のコンテンツ、製品、サービスへのアクセスまたは使用によって損失、費用、あるいは損害が発生しても、一切の責任を負いかねます。

はじめに

Oracle Database Application Expressアドバンスト・チュートリアルでは、Oracle Application Express開発環境を使用して様々なアプリケーション・コンポーネントおよびアプリケーション全体を作成する方法について、チュートリアル形式で説明します。

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

- 対象読者

- ドキュメントのアクセシビリティについて

- 関連ドキュメント

- 表記規則

対象読者

Oracle Database Application Expressアドバンスト・チュートリアルは、Oracle Application Expressを使用してデータベース集中型のWebアプリケーションを構築する方法を学習する必要があるアプリケーション開発者を対象としています。このガイドを使用するには、リレーショナル・データベースの概念、Oracle Application Expressを実行するオペレーティング・システム環境およびアプリケーション・ビルダーについて理解しておく必要があります。

アプリケーション・ビルダーの概要アプリケーション・ビルダーはOracle Application Expressのコンポーネントの1つであり、表やプロシージャなどのデータベース・オブジェクトの外観としてHTMLインタフェース(またはアプリケーション)を簡単に構築できる強力なツールです。これらのチュートリアルを完了する前に、『Oracle Database Application Express 2日で開発者ガイド』を確認してください。

関連項目:
「このチュートリアルの概要」

ドキュメントのアクセシビリティについて

オラクル社のアクセシビリティへの取組みの詳細は、Oracle Accessibility ProgramのWebサイトhttp://www.oracle.com/pls/topic/lookup?ctx=acc&id=docaccを参照してください。

Oracleサポートへのアクセス

Oracleのお客様は、My Oracle Supportにアクセスして電子サポートを受けることができます。詳細は、http://www.oracle.com/pls/topic/lookup?ctx=acc&id=infoまたはhttp://www.oracle.com/pls/topic/lookup?ctx=acc&id=trs (聴覚障害者向け)を参照してください。

ドキュメント内のサンプル・コードのアクセシビリティについて

スクリーン・リーダーは、ドキュメント内のサンプル・コードを正確に読めない場合があります。コード表記規則では閉じ括弧のみを行に記述する必要があります。しかし、一部のスクリーン・リーダーは括弧のみの行を読まない場合があります。

外部Webサイトのドキュメントのアクセシビリティについて

このドキュメントにはオラクル社およびその関連会社が所有または管理しないWebサイトへのリンクが含まれている場合があります。オラクル社およびその関連会社は、それらのWebサイトのアクセシビリティに関しての評価や言及は行っておりません。

関連ドキュメント

詳細は、次のOracleドキュメントを参照してください。

- Oracle Database Application Expressインストレーション・ガイド

- Oracle Database Application Expressリリース・ノート

- Oracle Database Application Express 2日で開発者ガイド

- Oracle Database Application Expressユーザーズ・ガイド

- Oracle Database概要

- Oracle Databaseアプリケーション開発者ガイド - 基礎編

- Oracle Database管理者ガイド

- Oracle Database SQLリファレンス

- SQL*Plusユーザーズ・ガイドおよびリファレンス

Oracle Technology Networkで入手できる追加のドキュメントについては、次のOracle Application ExpressのWebサイトにアクセスしてください。

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

その他のアプリケーションの例については、Learning Libraryを参照してください。Oracle by Example(OBE)、デモ、チュートリアルなどの無料オンライン・トレーニング・コンテンツを検索します。Oracle Learning Libraryには、次のURLでアクセスできます。

http://www.oracle.com/technetwork/tutorials/index.html

Oracleエラー・メッセージについては、Oracle Databaseエラー・メッセージを参照してください。Oracleエラー・メッセージのドキュメントはHTMLのみで提供されています。Oracle Databaseドキュメント・ライブラリにアクセスできる場合は、エラー・メッセージを範囲で検索できます。特定の範囲を検索したら、ブラウザのページ内検索機能を使用して特定のメッセージを検索します。インターネットに接続している場合、オラクル社のオンライン・ドキュメントのエラー・メッセージ検索機能を使用して特定のエラー・メッセージを検索できます。

ドキュメント・セットにある多数のマニュアルでは、Oracleをインストールするときにデフォルトでインストールされるシード・データベースのサンプル・スキーマを使用しています。スキーマの作成方法および使用方法の詳細は、Oracle Databaseサンプル・スキーマを参照してください。

印刷されたマニュアルは次のURLのOracle Storeで入手できます。

http://oraclestore.oracle.com/

リリース・ノート、インストール関連ドキュメント、ホワイト・ペーパーまたはその他の関連ドキュメントは、OTN(Oracle Technology Network)から、無償でダウンロードできます。OTNを使用するには、オンラインでの登録が必要です。登録は、次のWebサイトから無償で行えます。

http://www.oracle.com/technology/membership/

すでにOTNのユーザー名およびパスワードを取得している場合は、次のURLでOTN Webサイトのドキュメントのセクションに直接接続できます。

http://www.oracle.com/technology/documentation/

表記規則

このマニュアルでは次の表記規則を使用します。

規則

意味

太字

太字は、操作に関連するGraphical User Interface要素、または本文中で定義されている用語および用語集に記載されている用語を示します。

イタリック体

イタリックは、ユーザーが特定の値を指定するプレースホルダ変数を示します。

固定幅フォント

固定幅フォントは、段落内のコマンド、URL、サンプル内のコード、画面に表示されるテキスト、または入力するテキストを示します。

1 このチュートリアルの概要

Oracle Database Application Expressアドバンスト・チュートリアルには、Oracle Application Expressを使用してアプリケーションおよびアプリケーション・コンポーネントを作成する方法を説明する、一連のチュートリアルが含まれています。このマニュアルは、実践を通してOracle Application Expressの使用方法を理解することを目的としています。

この項には、次の項目が含まれます。

- 関連する項目

- チュートリアルのトピック

- サンプル・オブジェクトのロード方法の概要

- アプリケーション認証の概要

関連する項目

Oracle Database Application Expressアドバンスト・チュートリアルには、一連のチュートリアルが含まれています。これらのチュートリアルの目的は、Oracle Application Express開発環境を使用して、特定のタイプのアプリケーションまたはアプリケーション・コンポーネントの構築方法を説明することです。

このマニュアルでは、必要に応じて、タスクの理解または完了に関連する概念を説明します。ただし、Oracle Application Expressの概念の詳細な説明は行っていません。このような情報については、Oracle Application Expressオンライン・ヘルプまたは『Oracle Database Application Expressユーザーズ・ガイド』を参照してください。

Oracle Application Expressを初めて使用する場合は、Oracle Database Application Express 2日で開発者ガイドを確認してください。このマニュアルでは、Oracle Application Expressを使用したアプリケーション開発について紹介します。開発環境の設定プロセスを説明した後、初期アプリケーションの構築方法を説明します。

チュートリアルのトピック

このマニュアルには、次のチュートリアルが含まれています。

タイトル

説明

表形式フォームの作成方法

新しいアプリケーションで表形式フォームを作成する方法、および更新可能ないずれかの列をテキスト・フィールドから選択リストに変更する方法を説明します。

パラメータ付きレポートの作成方法

対話モード・レポートの作成方法およびユーザーによるレポートのカスタマイズ方法を説明します。

拡張レポートの手法の使用

1つの対話モード・レポートから別の対話モード・レポートへのリンク付けやURL内での宣言フィルタの作成など、より高度なレポート作成の手法のいくつかに焦点を当てます。

フォーム・レイアウトの制御方法

データ入力フォームを作成する方法、およびリージョン属性およびアイテム属性を編集してフォーム・レイアウトを変更する方法を説明します。

チェック・ボックスの使用方法

アプリケーションでチェック・ボックスを作成および処理できる様々な方法を説明します。

Webサービスの実装方法

アプリケーションからWebサービスをコールする方法を説明します。

積上げ棒グラフの作成方法

アプリケーションに積上げ棒グラフを作成する方法を説明します。

アプリケーション内のファイルのアップロードおよびダウンロード方法

ファイルのアップロードおよびダウンロード用のリンクを含むフォームおよびレポートを作成する方法を説明します。

アプリケーションへのJavaScriptの組込み方法

JavaScriptの使用例と、アプリケーションにそれらを実装する方法の詳細を説明します。

アクセス制御ページの作成方法

アプリケーションへのアクセスを制限するためのアクセス制御管理を作成する方法を説明します。

パッケージ・アプリケーションの確認方法

OEHR Sample Objectsパッケージ・アプリケーションについて説明します。このアプリケーションの前提となるサポート・オブジェクトを確認することで、独自のパッケージ・アプリケーションを作成できるようにサポート・オブジェクト・ユーティリティがどのように動作するかを学習します。

マスター・ディテールPDFレポートの作成方法

マスター・ディテール・フォームの作成方法、レポート問合せおよびRTFテンプレートの定義方法および新しいレポートを公開するためのボタンの作成方法を説明します。

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

このチュートリアルでは、問題追跡アプリケーションの例にデータ・オブジェクトを計画、設計および移入する方法を説明します。

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

プロジェクトに関連する問題の割当て、ステータスおよび進捗を追跡するアプリケーションを作成およびデプロイする方法を説明します。

サンプル・オブジェクトのロード方法の概要

Oracle Application Expressでは、ユーザーはワークスペースにログインします。各ワークスペースは、ユーザーのオブジェクト、データおよびアプリケーションを仮想プライベート・データベースとして区別する共有ワークスペースと考えてください。

これらの演習を始める前に、該当するサンプル・オブジェクトをワークスペース内に作成する必要があります。これらのサンプル・オブジェクトは、通常、次の2つのスキーマにインストールされているオブジェクトのコピーです。

- 人事管理(HR)
HRスキーマには、従業員と従業員が働く施設に関する情報が含まれています。各従業員には、識別番号、電子メール・アドレス、ジョブ識別コード、給与およびマネージャが存在します。従業員は部門に割り当てられ、各部門は、通りの名前、郵便番号、市、州および国コードを含む完全な住所を持つ1つの場所と関連付けられています。

- 受注(OE)
OEスキーマでは、企業の製品の在庫および売上げを追跡します。他に、製品識別番号、製品名、関連付けられる製品カテゴリ、製品説明、重量グループ(出荷用)、保証期間、サプライヤ、出荷状況および最低価格などを追跡します。

ワークスペースでローカルでオブジェクトを作成するには、OEHRサンプル・オブジェクトのアプリケーションをインポートする必要があります。

この項には、次の項目が含まれます。

- OEHR Sample Objectsのダウンロード

- OEHR Sample Objectsのインポートとインストール

- データベース・オブジェクトの表示

ヒント:
OEHRサンプル・オブジェクトのアプリケーションに関連付けられたオブジェクトを正常にインポートするには、OracleデータベースにOracle Spatialが含まれている必要があります。データベース・インスタンスにOracle Spatialが含まれていない場合、Database Configuration Assistantを使用してインストールできます。詳細は、ご使用のオペレーティング環境向けの『Oracle Databaseインストレーション・ガイド』を参照してください。

OEHR Sample Objectsのダウンロード

OEHRサンプル・オブジェクトのアプリケーションをインポートするには、次の手順で、Oracle Technology Network (OTN)からダウンロードする必要があります。

1. Webブラウザで次のURLに移動します。

http://www.oracle.com/technology/products/database/application_express/packaged_apps/oehr_sample_objects.zip

2. OEHR Sample Objectsアプリケーションを検索します。

3. ご使用のコンピュータにoehr_sample_objects.zipファイルをダウンロードします。

4. 解凍してoehr_sample_objects_installer.sqlファイルを抽出します。

- Microsoft Windowsの場合、oehr_sample_objects.zipファイルをダブルクリックします。

- UNIXまたはLinuxの場合、次のコマンドを入力します。

$ unzip oehr_sample_objects.zip

OEHR Sample Objectsのインポートとインストール

OEHR Sample Objectsのアプリケーションをダウンロードしたら、これをOracle Application Expressにインポートする必要があります。インポート処理中に、アプリケーションおよびサポートするオブジェクトを両方ともインストールすることを指定します。アプリケーションをインストールすると、『Oracle Application Expressアドバンスト・チュートリアル』の演習を完成するために必要なオブジェクトおよびサンプル・データが作成されます。

次の手順で、OEHRサンプル・オブジェクトのアプリケーションをインポートし、インストールします。

1. Oracle Application Expressにログインします。『Oracle Database Application Expressユーザーズ・ガイド』の「Oracle Application Expressへのログイン」を参照してください。

2. 「ワークスペース」ホームページで、「アプリケーション・ビルダー」をクリックします。
「アプリケーション・ビルダー」ホームページが表示されます。

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

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

1. 「インポート・ファイル」で、「参照」をクリックし、oehr_sample_objects_installer.sqlファイルに移動します。

2. 「ファイル・タイプ」で、「アプリケーション、ページまたはコンポーネントのエクスポート」を選択します。

3. 「ファイルのキャラクタ・セット」が正しいことを確認します。

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

ファイルのインポートが完了したら、これをインストールします。

5. インポート・ファイルをインストールするには、「次へ」をクリックします。
「アプリケーションのインストール」ウィザードが表示されます。

6. 「アプリケーションのインストール」ウィザードで、次の各項目を指定します。

1. 「解析対象スキーマ」で、スキーマを選択します。

2. 「ビルド・ステータス」で、「アプリケーションの実行および構築」を選択します。

3. 「次のアプリケーションとしてインストール」で、「新しいアプリケーションIDを自動割当て」を選択します。

4. 「インストール」をクリックします。

7. 「サポートするオブジェクト」で、「はい」を選択して「次へ」をクリックします。

8. 「インストール」をクリックして、選択内容を確定します。

9. ページ上部の「ホーム」ブレッドクラム・リンクをクリックします。
「アプリケーション・ビルダー」ホームページが表示されます。

関連項目:
「データベース・オブジェクトの表示」

ワークスペースの空き領域の確認

OEHRサンプル・オブジェクトのアプリケーションのインストールで問題が発生した場合は、ワークスペース内の使用可能な領域を確認します。追加の記憶領域をリクエストすることが必要な場合があります。

ワークスペース管理者は、次のことを実行できます。

1. 記憶領域を追加する必要があるかどうかを判断します。『Oracle Database Application Expressユーザーズ・ガイド』の「ワークスペースの概要レポートの表示」を参照してください。

2. 追加の記憶領域をリクエストします。『Oracle Database Application Expressユーザーズ・ガイド』の「追加の記憶域のリクエスト」を参照してください。

OEHR Sample Objectsアプリケーションの削除

OEHRサンプル・オブジェクトのアプリケーションの削除、およびサポートするオブジェクトを完全に削除することを選択することにより、関連付けられたすべてのオブジェクトおよびデータは削除されます。

次の手順で、OEHRサンプル・オブジェクトのアプリケーションを削除します。

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

2. 「ワークスペース」ホームページで、「アプリケーション・ビルダー」をクリックします。
「アプリケーション・ビルダー」ホームページが表示されます。

3. OEHR Sample Objectsアプリケーションを選択します。
「アプリケーション」ホームページが表示されます。

4. 「タスク」リストで、「このアプリケーションの削除」をクリックします。
「削除」ページが表示されます。

5. 関連するオブジェクトおよびサンプル・データをすべて削除するには、「アプリケーション定義の削除」および「サポートされているオブジェクトの削除」を選択します。

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

データベース・オブジェクトの表示

「オブジェクト・ブラウザ」に移動して、作成したオブジェクトを確認します。「オブジェクト・ブラウザ」を使用して、データベース内のオブジェクトを参照、作成および編集できます。

オブジェクトを表示するには、次のステップを実行します。

1. 「ワークスペース」ホームページで、「SQLワークショップ」をクリックします。

2. 「オブジェクト・ブラウザ」をクリックします。
図1-1に示すとおり、「オブジェクト・ブラウザ」ホームページが表示されます。

図1-1 オブジェクト・ブラウザ

「図1-1 オブジェクト・ブラウザ」の説明

「オブジェクト・ブラウザ」は、2つのセクションに分かれています。

- 「オブジェクト選択」ペイン: 「オブジェクト・ブラウザ」ページの左側に表示され、カレント・スキーマ内で選択されているデータベース・オブジェクトのタイプが表示されます。
表示されるオブジェクトのリストは、カレント・スキーマ内の使用可能なオブジェクトによって異なります。横に赤いバーが表示されているオブジェクトは無効であることに注意してください。

- 「詳細」ペイン: ページの右側に表示され、選択したオブジェクトについての詳細情報を表示します。

3. 「オブジェクト選択」リストから、「表」を選択します。

4. 「オブジェクト選択」ペインで、リスト内の「OEHR_EMPLOYEES」をクリックします。
「詳細」ペインに表の詳細が表示されます。

5. 「詳細」ペインの上部にある行の「データ」タブをクリックします。
OEHR_EMPLOYEES表内のデータが表示されます。他のタブでは、選択したオブジェクトに関する詳細な情報が表示されます。

6. オブジェクト名を検索するには、「検索」フィールドに大/小文字を区別しないで用語を入力します。

7. すべてのオブジェクトを表示するには、「検索」フィールドを空白のままにします。

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

アプリケーション認証の概要

新しいページを作成したら、ページを個別に実行するかアプリケーション全体を実行して、ページを表示できます。ページまたはアプリケーションは実行時に、Application Expressエンジンによって、データベースに格納されたデータに応じて表示可能なHTMLに動的にレンダリングされます。

デフォルトでは、このチュートリアルで作成するすべてのアプリケーションにApplication Express認証が使用されます。Application Express認証は組込み認証スキームであり、ユーザーがワークスペースににログインするときに使用するのと同じ内部ユーザー・アカウントが使用されます。

アプリケーション内のページを初めて実行する場合は、ユーザー名およびパスワードの入力を要求されます。続行するには、ワークスペースのユーザー名およびパスワードを入力してから、「ログイン」をクリックします。

独自のアプリケーションを作成する場合は、多くの事前構成済の認証スキームから選択するか、独自の認証スキームを作成できます。

関連項目:
『Oracle Database Application Expressユーザーズ・ガイド』の「認証を介したユーザーの本人確認」

2 表形式フォームの作成方法

表形式フォームでは、単一ページから表の複数の行を一度に更新できます。「表形式フォーム」ウィザードを使用すると、複数行更新プロセスが組み込まれた表形式フォームを作成できます。この組込みプロセスによって、バックグラウンドでオプティミスティック・ロックが実行され、データの整合性が保持されます。

このチュートリアルでは、新しいアプリケーション内から表形式フォームを作成する方法について説明した後、更新可能ないずれかの列をテキスト・フィールドから選択リストに変更する方法について説明します。チュートリアルを始める前に、必要なサンプル・データベース・オブジェクトにアクセスできるように、OEHR Sample Objectsアプリケーションをインポートしてインストールする必要があります。詳細は、「サンプル・オブジェクトのロード方法の概要」を参照してください。

この項には、次の項目が含まれます。

- アプリケーションの作成

- ウィザードを使用した表形式フォームの作成

- 更新可能な列の選択リストへの変更

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

- Oracle Application Express 3.0: 機能的なアプリケーションの作成
http://www.oracle.com/technology/obe/apex/obe30/apexdev30.htm

- Oracle Application Express 3.1での追加の新機能の使用
http://www.oracle.com/technology/obe/apex/apex31nf/apex31misc.htm

- 既存のアプリケーションへのコンポーネントの追加
http://www.oracle.com/technology/obe/hol08/apexintro/apex3.1.1_c/apex3.1.1_c_otn.htm

アプリケーションの作成

最初に、「アプリケーションの作成」ウィザードを使用してアプリケーションを作成する必要があります。

「アプリケーションの作成」ウィザードでアプリケーションを作成するには、次のステップを実行します。

1. 「ワークスペース」ホームページで、「アプリケーション・ビルダー」アイコンをクリックします。
「アプリケーション・ビルダー」ホームページが表示されます。

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

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

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

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

2. 「アプリケーション」で、デフォルトを受け入れます。

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

4. 「スキーマ」で、OEHR Sample Objectsをインストールしたスキーマを選択します。

5. 「次へ」をクリックします。
次に、ページを追加する必要があります。ここでは、空白ページ、レポート、フォーム、表形式フォームまたはレポートおよびフォームを追加できます。次の演習では、空白ページを含むアプリケーションを作成します。続いて、表形式フォームを作成します。

5. 次のステップで空白ページを追加します。

1. 「ページ・タイプの選択」で「空白」を選択し、「ページの追加」をクリックします。
ページ上部のリストに、新しいページが表示されます。

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

6. 「タブ」で、デフォルトの「1レベルのタブ」を受け入れて「次へ」をクリックします。

7. 「別のアプリケーションから共有コンポーネントのコピー」で、デフォルトの「いいえ」を受け入れて「次へ」をクリックします。

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

9. 「ユーザー・インタフェース」で、「テーマ2」を選択して「次へ」をクリックします。
テーマは、アプリケーションのレイアウトおよびスタイルの定義に使用できるテンプレート集です。テーマは随時変更できます。

10. 選択内容を確認して、「作成」をクリックします。
「アプリケーション」ホームページが表示されます。

関連項目:
『Oracle Database Application Expressユーザーズ・ガイド』の「テーマの管理」

ウィザードを使用した表形式フォームの作成

「表形式フォーム」ウィザードでは、データベース表の複数の行に対して更新、挿入および削除を行うフォームを作成します。また、更新が失われないように、更新を行う前にMD5チェックサム値を確認する複数行更新プロセスも作成します。次の演習では、OEHR_EMPLOYEES表に表形式フォームを作成します。

「表形式フォーム」ウィザードを使用して表形式フォームを作成するには、次のステップを実行します。

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

2. そのページ・タイプに応じて「フォーム」を選択し、「次へ」をクリックします。

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

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

1. 「表/ビューの所有者」で、デフォルトを受け入れます。

2. 「実行可能な操作」で、デフォルトの「更新」、「挿入」、「削除」を受け入れます。

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

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

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

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

FIRST_NAME, LAST_NAME, HIRE_DATE, SALARY, DEPARTMENT_ID

注意:
この演習では、列数を制限して最適な表示画面にしています。実際のフォームでは、列を追加する必要がある場合があります。

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

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

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

9. 「更新可能な列」で、すべての列を選択して「次へ」をクリックします。

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

1. 「ページ」で、デフォルトを受け入れます。

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

3. 「リージョン・タイトル」で、デフォルトの「Tabular Form」を受け入れます。

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

5. 「ブレッドクラム」で、デフォルトを受け入れます。

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

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

12. 「ボタン・ラベル」で、次の各項目を指定します。

1. 「送信」ボタンに、変更の適用と入力します。

2. 「取消」、「削除」および「行の追加」ボタンの、デフォルトのラベル・テキストを受け入れます。

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

13. 「ブランチ」でデフォルト値を受け入れ、「次へ」をクリックします。
「ブランチ」には、カレント・ページを処理するために送信したとき、Webブラウザに表示するページを指定します。この演習では、カレント・ページが表示されたままにします。

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

次に、新しいフォームを表示するページを実行します。

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

1. 図2-1に示すように、「ページの実行」アイコンをクリックします。

図2-1 「ページの実行」アイコン

「図2-1 「ページの実行」アイコン」の説明

2. ユーザー名およびパスワードを入力するように要求されたら、ワークスペースのユーザー名およびパスワードを入力して、「ログイン」をクリックします。詳細は、「アプリケーション認証の概要」を参照してください。
図2-2に示すように、表形式フォームが表示されます。

図2-2 表形式フォーム

「図2-2 表形式フォーム」の説明

図2-2に示すとおり、表形式フォームには4つのボタンがあります。「取消」、「削除」および「変更の適用」が右上に、「行の追加」が右下に表示されます。また、カレント行を選択できるように、各行の左側にチェック・ボックスが表示されます。列ヘッダーの左側にあるチェック・ボックスを選択することによって、一度にすべての行を選択することもできます。削除する行を指定するには、同じチェック・ボックスを「削除」ボタンと組み合せて使用します。

全体のフォーム・レイアウト(カラー・スキーム、ボタンの配置、リージョン・ヘッダーの配置など)は、現在選択しているテーマに含まれているテンプレートによって制御されることに注意してください。

関連項目:
『Oracle Database Application Expressユーザーズ・ガイド』の「テーマの管理」

更新可能な列の選択リストへの変更

「表形式フォーム」ウィザードで表形式フォームを作成すると、デフォルトでは、更新可能な列がテキスト・フィールドとして表示されます。次の演習では、「Department Id」列のデフォルト表示を選択リストに変更します。これを行うには、名前付きLOVを作成し、列属性を編集します。

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

- 名前付きLOVの作成

- 選択リストとして表示するための列の編集

関連項目:
『Oracle Database Application Expressユーザーズ・ガイド』の「LOVの作成」

名前付きLOVの作成

「Department Id」の名前付きLOVを作成するには、次のステップを実行します。

1. 図2-3に示す「開発者」ツールバーで、「ページの編集2」をクリックします。

図2-3 「開発者」ツールバー

「図2-3 「開発者」ツールバー」の説明

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

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

図2-4 「作成」アイコン

「図2-4 「作成」アイコン」の説明

「LOVの作成」ウィザードが表示されます。

3. 「ソース」で「最初から」を選択し、「次へ」をクリックします。

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

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

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

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

5. 「問合せまたは静的値」で、既存のテキストを次の内容に置き換えます。

SELECT DISTINCT department_id a, department_id b FROM oehr_employees

6. 「LOVの作成」をクリックします。
ページ2のページ定義が表示されます。LOVは、まだページ定義に表示されません。

選択リストとして表示するための列の編集

列を編集して選択リストとして表示するには、次のステップを実行します。

1. 「リージョン」で、「レポート」リンクをクリックします。
図2-5に示すとおり、「レポート属性」ページが表示されます。

図2-5 「レポート属性」ページの「列属性」

「図2-5 「レポート属性」ページの「列属性」」の説明

2. 「列属性」で、図2-5に示すように、DEPARTMENT_ID列の横にある「編集」アイコンをクリックします。「編集」アイコンは、鉛筆が付いた小さいページに似ています。
「列属性」ページが表示されます。

次に、この列のデフォルト表示を選択リストに変更します。

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

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

5. ページ上部までスクロールして「変更の適用」をクリックします。

6. ページの右上にある「ページの実行」アイコンをクリックします。
図2-6に示すとおり、Department Id列が選択リストとして表示されます。

図2-6 選択リストに変更されたDepartment Id列がある表形式フォーム

「図2-6 選択リストに変更されたDepartment Id列がある表形式フォーム」の説明

注意:
表形式フォームのSQL文のSELECT構文のリストは、生成後、変更しないでください。変更すると、フォームのデータを変更し、更新を適用したときにチェックサム・エラーが発生します。
次に例を示します。

SELECT first_name FROM oehr_employees;

これは、次のようには変更しないでください。

SELECT lower(first_name) FROM oehr_employees

3 パラメータ付きレポートの作成方法

このチュートリアルでは、Application Expressのレポート・タイプの概要、パラメータ付きレポートの作成方法およびユーザーが対話モード・レポートの書式を動的に操作する方法について説明します。

このチュートリアルの内容は次のとおりです。

- Application Expressのレポートの概要

- 対話モード・レポートを使用したアプリケーションの作成

- 他の表からのデータ列の追加

- 対話モード・レポートの使用

- 関連ドキュメント

Oracle Application Expressアプリケーションでは、レポートとは、SQL問合せの結果を書式化したものです。パラメータ付きレポートは、アプリケーション・ユーザーによる入力や、アプリケーションの別のコンポーネントに基づく動的レポートです。アプリケーション・ユーザーは、レポートの生成に使用する検索基準を入力します。たとえば、特定の人物に割り当てられたすべての問題を表示するとします。ユーザーは、「検索バー」に対象となる人物の名前を入力して、レポートをリクエストします。ユーザーが指定した名前に基づいて、レポートが生成されます。

このチュートリアルでは、問題の表に対するSQL問合せに基づいて、対話モード・レポート・ページを作成します。また、フォーム・ページも作成し、問題の変更、削除または作成に使用します。対話モード・レポート機能を使用すると、レポートのフォーカスおよび書式をカスタマイズできます。

Application Expressのレポートの概要

この項では、Application Expressの基本的なレポート・タイプについて説明し、ご使用のアプリケーションに最適なタイプを確認する方法を示します。

この項の項目は次のとおりです。

- レポート・タイプの概要

- 適切なレポート・タイプの選択

レポート・タイプの概要

基本的なレポートには、対話モード・レポートとクラシック・レポートの2つのタイプがあります。

対話モード・レポートは、アプリケーションの作成、書式の変換およびページの作成に使用するデフォルトのレポート・タイプです。対話モード・レポートを使用すると、レポートを様々な方法でカスタマイズできます。対話モード・レポートには、開発者が無効にしないかぎり、検索、フィルタ処理、ソート、列の選択、強調表示などのデータ操作機能が含まれます。機能の完全なリストおよび使用方法については、「対話モード・レポートの使用」を参照してください。図3-1は、対話モード・レポートの例を示しており、このレポートは「ページの作成」ウィザードを使用して作成され、IT_PEOPLE表を問い合せています。

図3-1 対話モード・レポート

「図3-1 対話モード・レポート」の説明

「検索バー」と「列ヘッダー・メニュー」リンク、さらに各行の最初の列には「リンク列」アイコンが自動的に組み込まれていることに注意してください。各コンポーネントの詳細は、「対話モード・レポートのコンポーネントの概要」を参照してください。

クラシック・レポートの場合、デフォルトでは、対話モード・レポートにあるカスタマイズ機能は含まれません。図3-2は、クラシック・レポートの例を示しており、このレポートは「ページの作成」ウィザードを使用して作成され、図3-1で対話モード・レポートが問い合せたのと同じIT_PEOPLE表の列を問い合せています。

図3-2 クラシック・レポート

「図3-2 クラシック・レポート」の説明

検索バー、列ヘッダー・リンクおよびドリルダウン機能がないことに注意してください。

適切なレポート・タイプの選択

検索、フィルタ処理、ソート制御などのユーザー・カスタマイズ機能を使用するには、対話モード・レポートを選択します。各カスタマイズ・オプションを個別に有効または無効にして、ユーザーが使用可能なオプションを調整できます。レポートにこのような制御が不要な場合は、クラシック・レポートの使用をお薦めします。クラシック・レポートにも、宣言的にグリッド更新を実行できる統合された表形式フォーム機能が備わっています。

対話モード・レポートを使用したアプリケーションの作成

この項では、「アプリケーションの作成」ウィザードを使用してアプリケーションを作成した後、そのアプリケーションを実行します。この項を完了すると、アプリケーションには、図3-3「「Home」ページ」、図3-4「「Issues」レポート」および図3-5「「Issue Details」フォーム」にそれぞれ類似した「Home」ページ、「Issues」レポート・ページおよび「Issues Details」フォーム・ページが作成されます。

図3-3 「Home」ページ

「図3-3 「Home」ページ」の説明

図3-4 「Issues」レポート

「図3-4 「Issues」レポート」の説明

図3-5 「Issue Details」フォーム

「図3-5 「Issue Details」フォーム」の説明

この項には、次の項目が含まれます。

- データベース・オブジェクトの作成および移入

- アプリケーションの作成

- アプリケーションのプレビュー

- 対話モード・レポート・コンポーネントの概要

データベース・オブジェクトの作成および移入

アプリケーションの作成を開始する前に、該当するサンプル・オブジェクトをワークスペース内に作成し、作成したオブジェクトにデモンストレーション・データをロードする必要があります。

Issue Trackerサンプル・オブジェクトをインストールするには、次のステップを実行します。

1. Issue Trackerデータ・オブジェクトを作成します。「データベース・オブジェクトを作成するためのスクリプトの作成および実行」の手順に従ってください。

2. オブジェクトにデモンストレーション・データをロードします。「デモンストレーション・データのロード」の手順に従ってください。
これらのサンプル・オブジェクトは、Issue Trackerアプリケーション・オブジェクトのコピーです。Issue Trackerアプリケーションの詳細は、第14章「問題追跡アプリケーションの設計方法」および第15章「問題追跡アプリケーションの作成およびデプロイ方法」を参照してください。

アプリケーションの作成

「アプリケーションの作成」ウィザードによって、「Home」ページ、「Issues」レポート・ページおよび「Issue Details」ページが作成されます。ここで作成しているのは対話モード・レポートであるため、ウィザードによって、「検索バー」、「アクション・メニュー」、「列ヘッダー・メニュー」、および「Issues」レポート・ページから「Issue Details」フォームへのリンクが自動的に作成されます。

関連項目:
対話モード・レポートのコンポーネントの使用方法については、「対話モード・レポートの使用」を参照してください。これらのコンポーネントの構成方法については、『Oracle Database Application Expressユーザーズ・ガイド』の対話モード・レポートの編集に関する説明および『Oracle Database Application Express 2日で開発者ガイド』の「アプリケーションの構築」を参照してください。

「アプリケーションの作成」ウィザードでアプリケーションを作成するには、次のステップを実行します。

1. 「ワークスペース」ホームページで、「アプリケーション・ビルダー」アイコンをクリックします。
「アプリケーション・ビルダー」ホームページが表示されます。

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

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

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

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

2. 「アプリケーション」で、デフォルトを受け入れます。

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

4. 「スキーマ」で、OEHR Sample Objectsをインストールしたスキーマを選択します。

5. 「次へ」をクリックします。
次に、空白ページを追加します。

5. 「追加」ページで、次の各項目を指定します。

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

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

3. 「ページの追加」をクリックします。
ページ上部のリストに、新しいページが表示されます。

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

1. 「ページ・タイプの選択」で、「レポートとフォーム」を選択します。

2. 「ページに従属」で、「ホーム (1)」を選択します。

3. 「表名」で、「IT_ISSUES」を選択します。

4. 「実装」で、「対話モード」のデフォルトを受け入れます。

5. 「ページの追加」をクリックします。
「アプリケーションの作成」リージョンに、「It_Issues Report」リンクおよび「It_Issues Form」リンクが表示されます。

次に、レポートおよびフォームの名前をデフォルト名から変更します。

7. ページの上部にある「レポート」の横の「It_Issues」リンクをクリックします。

8. 「ページ定義」で、「ページ名」にIssuesと入力します。

9. 「レポート列」の下で、次の列の「表示」について、「いいえ」を選択します。

1. ISSUE_DESCRIPTION

2. RESOLUTION_SUMMARY

3. CREATED_ON

4. CREATED_BY

5. MODIFIED_ON

6. MODIFIED_BY

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

11. 「フォーム」の横にある「It_Issues」リンクをクリックします。

12. 「ページ定義」で、「ページ名」にIssue Detailsと入力します。

13. 「変更の適用」をクリックします。
「アプリケーションの作成」リージョンに、「Issues」レポート・リンクおよび「Issue Details」フォーム・リンクが表示されます。

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

15. 「タブ」で、デフォルトの「1レベルのタブ」を受け入れて「次へ」をクリックします。

16. 「別のアプリケーションから共有コンポーネントのコピー」で、デフォルトの「いいえ」を受け入れて「次へ」をクリックします。

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

18. 「ユーザー・インタフェース」で、「テーマ18」を選択して「次へ」をクリックします。
テーマは、アプリケーションのレイアウトおよびスタイルの定義に使用できるテンプレート集です。テーマは随時変更できます。

関連項目:
『Oracle Database Application Expressユーザーズ・ガイド』の「テーマの管理」

19. 選択内容を確認して、「作成」をクリックします。
「アプリケーション」ホームページが表示されます。

図3-6 「アプリケーション」ホームページ

「図3-6 「アプリケーション」ホームページ」の説明"

アプリケーションのプレビュー

次に、アプリケーションを実行して、「Home」ページ→「Issues」レポート→「Issue Details」フォームの順にナビゲートします。

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

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

2. ワークスペースのログイン情報を入力します。
「ホーム」ページが表示されます。

3. 「Issues」リンクをクリックします。
「Issues」レポートが表示されます。

図3-7 「Issues」レポート

「図3-7 「Issues」レポート」の説明

4. 最初の行で、「編集」アイコンをクリックします。
図3-8に示すとおり、「Issue Details」フォームが表示されます。

図3-8 「Issue Details」フォーム

「図3-8 「Issue Details」フォーム」の説明

「アプリケーションの作成」ウィザードによって、「Issue Details」フォームをターゲットとする「Issues」対話モード・レポートの「リンク列」が構成されました。これは、ウィザードで「レポートとフォーム」ページ・タイプを作成する場合のデフォルトです。

ヒント:
「リンク列」は、「レポート属性」ページに移動して「リンク列」設定を変更すると再構成されます。「対話モード・レポート・コンポーネントの概要」を参照してください。

5. 「取消」をクリックして「Issue」レポートに戻ります。

6. 「作成」ボタンをクリックします。
空の「Issue Details」フォームが表示されます。このフォームを使用すると、IT_ISSUES表に問題を追加できます。ここでは、新しい問題を作成しないでください。

7. ページ下部にある「開発者」ツールバーで、「アプリケーションID」リンクをクリックします。

他の表からのデータ列の追加

次に、IT_PEOPLE表およびIT_PROJECTS表からデータ列を追加します。「アプリケーションの作成」ウィザードを使用して「Issues」レポート・ページを作成した場合、SQL問合せにはIT_ISSUES表のデータのみが含まれます。このレポートに他の表からデータを追加するには、「Issues」レポートのSQL問合せを変更した後、「アクション」メニューを使用して、追加された列をレポートに含めます。

SQL問合せを変更するには、次のステップを実行します。

1. 「2 - Issues」ページをクリックします。

2. 「リージョン」で、「Issues」をクリックします。

3. 「ソース」で、次のSQLに置き換えます。

SELECT     "IT_ISSUES"."ISSUE_ID" as "ISSUE_ID",
"IT_ISSUES"."ISSUE_SUMMARY" as "ISSUE_SUMMARY",
"IT_PEOPLE"."PERSON_NAME" as "IDENTIFIED_BY",
"IT_ISSUES"."IDENTIFIED_DATE" as "IDENTIFIED_DATE",
"IT_PROJECTS"."PROJECT_NAME" as "PROJECT_NAME",
decode("IT_PEOPLE_1"."PERSON_NAME",NULL,'Unassigned',
"IT_PEOPLE_1"."PERSON_NAME") as "ASSIGNED_TO",
"IT_ISSUES"."STATUS" as "STATUS",
"IT_ISSUES"."PRIORITY" as "PRIORITY",
"IT_ISSUES"."TARGET_RESOLUTION_DATE" as "TARGET_RESOLUTION_DATE",
"IT_ISSUES"."PROGRESS" as "PROGRESS",
"IT_ISSUES"."ACTUAL_RESOLUTION_DATE" as "ACTUAL_RESOLUTION_DATE"
FROM "IT_PEOPLE" "IT_PEOPLE_1",
"IT_PROJECTS" "IT_PROJECTS",
"IT_PEOPLE" "IT_PEOPLE",
"IT_ISSUES" "IT_ISSUES"
WHERE "IT_ISSUES"."IDENTIFIED_BY_PERSON_ID"="IT_PEOPLE"."PERSON_ID"
AND "IT_ISSUES"."ASSIGNED_TO_PERSON_ID"="IT_PEOPLE_1"."PERSON_ID"(+)
AND      "IT_ISSUES"."RELATED_PROJECT_ID"="IT_PROJECTS"."PROJECT_ID"

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

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

新しい列を表示するには、次のステップを実行します。

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

2. 「アクション」メニューをクリックします(図3-9を参照)。

図3-9 「アクション・メニュー」アイコン

「図3-9 「アクション・メニュー」アイコン」の説明

3. 「列の選択」オプションを選択します。
「列の選択」オプションが表示され、「表示しない」ボックスに「Identified By」、「Project Name」および「Assigned To」列が表示されます。問合せの変更によって追加された列は、レポートに自動的に表示されないため、ここで追加する必要があります。

図3-10 「列の選択」オプション

「図3-10 「列の選択」オプション」の説明

4. 「すべて移動」矢印 (>>) を使用して、「表示しない」ボックスから「レポートに表示」ボックスにすべての列を移動させます。

5. 「レポートに表示」ボックスで「Issue Id」列を選択し、「削除」矢印(<)をクリックして「表示しない」ボックスに移動させます。

6. 「レポートに表示」ボックスの右の上下矢印を使用して、次のように列を順序付けします。

1. Issue Summary

2. Identified By

3. Identified Date

4. Project Name

5. Assigned To

6. Status

7. Priority

8. Target Resolution Date

9. Progress

10. Actual Resolution Date

7. 「適用」をクリックします。
新しい列を含む「Issue」レポートが表示されます。

図3-11 列が追加された「Issues」レポート

「図3-11 列が追加された「Issues」レポート」の説明

対話モード・レポートの使用

この項では、対話モード・レポートの基本的なコンポーネントについて説明した後、それらのコンポーネントを操作して対話モード・レポートをカスタマイズする方法について説明します。この項には、最も一般的なカスタマイズのいくつかのみを示します。各機能の使用方法の詳細は、『Oracle Database Application Expressユーザーズ・ガイド』の対話モード・レポートの編集に関する説明を参照してください。

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

- 対話モード・レポート・コンポーネントの概要

- レポートへのフィルタの追加

- レポート設定の保存および列の選択

- デフォルトのレポート設定へのリセット

対話モード・レポート・コンポーネントの概要

この項では、対話モード・レポートのコンポーネントおよび用語について、その概要を示します。

図3-12は、対話モード・レポートの基本的なコンポーネントを赤色で示しています。

図3-12 対話モード・レポートのコンポーネント

「図3-12 対話モード・レポートのコンポーネント」の説明

対話モード・レポート・ページには、開発者が無効にしないかぎり、デフォルトで次のコンポーネントが含まれます。

- 検索バー: 対話モード・レポートの各ページの上部に表示されます。次の機能があります。

- 「列の選択」アイコンは虫眼鏡のように表示され、検索対象の列(またはすべての列)を指定できます。

- テキスト領域には、大/小文字を区別しない検索基準を入力できます(暗黙的にワイルドカード文字が使用されます)。

- 「行」には、各ページに表示するレコードの数を選択します。

- 「実行」ボタンは、検索を実行します。

- 「アクション・メニュー」アイコンは、アクション・メニューを表示します。

- アクション・メニュー: 対話モード・レポートの表示をカスタマイズするために使用します。次のオプションを提供します。

- 「列の選択」は、表示する列と順序を指定します。

- 「フィルタ」は、問合せでWHERE句を追加または編集することで、レポートの焦点を絞ります。

- 「ソート」は、ソート対象の列およびソート順(昇順/降順)を指定します。

- 「コントロール・ブレーク」は、1つ以上の列にブレーク・グループを作成します。

- 「ハイライト」を使用すると、フィルタを定義して、そのフィルタ基準を満たす行を強調表示できます。

- 「計算」を使用すると、計算した列をレポートに追加できます。

- 「集計」を使用すると、列に対して算術計算を実行できます。

- 「チャート」は、対話モード・レポートにチャートを追加します。

- 「フラッシュバック」を使用すると、フラッシュバック問合せを実行して、データを過去のある時点の状態で表示することができます。

- 「レポートの保存」は、カスタマイズされた現行のレポート設定を、後で使用できるように保存します。

- 「リセット」を使用すると、レポートをデフォルトの設定にリセットできます。

- 「ヘルプ」は、対話モード・レポートのコンポーネントを使用してレポートをカスタマイズする方法の詳細を示します。

- 「ダウンロード」を使用すると、現行の結果セットをダウンロードできます。

- 列ヘッダー・メニュー: 任意の列ヘッダーをクリックすると列ヘッダー・メニューが展開され、ソート順の変更、列の非表示、列のブレーク・グループの作成、列に関するヘルプ・テキストの表示およびフィルタの作成を行うことができます。

- レポート設定: 対話モード・レポートをカスタマイズすると、「検索バー」とレポートの間にレポート設定が表示されます。カスタマイズしたレポートを保存すると、レポートがタブとして表示されます。

- リンク列: この列は、「単一行ビュー」または「カスタム・ターゲット」にリンクします。図3-12「対話モード・レポートのコンポーネント」に示すように、この対話モード・レポートの場合、リンク列は「カスタム・ターゲット」であり、「編集」アイコンで表示されますが、このアイコンは「Issue Details」フォームにリンクしており、ユーザーは選択した問題の情報を表示および変更できます。
「リンク列」は、「レポート属性」ページにおける対話モード・レポートの「リンク列」設定によって指定されます。この設定には、次の3つのいずれかを選択できます。

- 単一行ビューへのリンク: このオプションを使用すると、単一行の詳細を表示できます。「単一行ビュー」を使用すると、ユーザーはデータを表示できますが、変更することはできません。「単一行ビューへのリンク」は、「レポート」ページ・タイプの対話モード・レポートを作成する場合のデフォルト設定です。例については、第4章「拡張レポートの手法の使用」で作成される「Issues」対話モード・レポート・ページを参照してください。

- カスタム・ターゲットへのリンク: このオプションを使用すると、開発者によって指定されたターゲットに基づいて、アプリケーションの他のページやURLに移動できます。「カスタム・ターゲットへのリンク」は、「レポートとフォーム」ページ・タイプの対話モード・レポートを作成する場合のデフォルト設定です。デフォルトで、ターゲットは、ユーザーが行データを変更可能なフォーム・ページに設定されています。このアプリケーションの「Issues」対話モード・レポートは、このタイプのリンクの例です。

- リンク列の除外: このオプションを使用すると、対話モード・レポートから「リンク列」が削除されます。

次に、前述のいくつかの機能を使用して、レポートの外観をカスタマイズし、レポートに含めるデータを指定します。

レポートへのフィルタの追加

この項では、「検索バー」を使用してレポートにフィルタを追加します。フィルタによって、Carlaに割り当てられたすべての問題が表示されます。ただし、他の方法でレポートにフィルタを追加することもできます。フィルタを追加するには、次のいずれかを使用します。

- 検索バー

- 列ヘッダー・メニュー

- アクション・メニュー

「検索バー」を使用してレポートにフィルタを追加するには、次のステップを実行します。

1. ページ2を実行中であることを確認して、「検索バー」で「列の選択」アイコン(虫眼鏡のようなアイコン)をクリックします。
レポート列のリストが表示されます。

図3-13 検索対象の列のリスト

「図3-13 検索対象の列のリスト」の説明

2. 「Assigned To」を選択します。
「検索バー」に「Assigned To」列が表示されます。

図3-14 「検索バー」の「Assigned To」

図3-14 「検索バー」の「Assigned To」」の説明

3. テキスト領域にcarlaと入力して、「実行」をクリックします。
表示される「Issues」レポートには、姓名のいずれかに「carla」を含む人物に割り当てられた問題が示されます。検索基準では、大/小文字が区別されません。

図3-15 Carlaに割り当てられた問題に対するフィルタ処理

「図3-15 Carlaに割り当てられた問題に対するフィルタ処理」の説明

レポート上部の「レポート設定」領域に、フィルタ「Assigned To contains 'carla'」が追加されていることに注意してください。このフィルタは、編集、無効化または削除できます。

次に、フィルタを無効にした後、有効にします。

4. 「Assigned To contains 'carla'」の横にある「有効/無効」チェック・ボックスをクリックして、フィルタを無効にします(チェック・ボックスは選択解除された状態になります)。
すべての問題を示すレポートが表示されます。

5. 「Assigned To contains 'carla'」の横にある「有効/無効」チェック・ボックスをクリックして、再びフィルタを有効にします(チェック・ボックスは選択された状態になります)。
Carlaに割り当てられた問題を示すレポートが表示されます。

6. 「Assigned To contains 'carla'」リンクをクリックします。
「フィルタ」編集オプションが表示されます。

図3-16 「フィルタ」編集オプション

「図3-16 「フィルタ」編集オプション」の説明

7. 「演算子」で、「が次を含まない」を選択します。

8. 「適用」をクリックします。
フィルタの名前が変更され、レポートには、Carlaを除くすべてのユーザーに割り当てられた問題が示されます。

9. 次に、フィルタを削除します。「有効/無効」チェック・ボックスの右にあるフィルタの削除アイコン(フィルタ上にXが表示されたアイコン)をクリックします。
レポートの設定領域からフィルタが削除され、レポートにすべての問題が表示されます。

レポート設定の保存および列の選択

この演習では、現行のレポート設定をデフォルトとして保存し、一部の行のみを表示するようレポートをカスタマイズします。カスタマイズしたレポート設定は、後で使用できるように保存します。

デフォルトとしてレポート設定を保存するには、次のステップを実行します。

1. 「アクション」メニューをクリックし、「レポートの保存」を選択します。
「レポートの保存」オプション・リージョンが表示されます。

2. 「保存」で、「デフォルトのレポート設定として保存」を選択します。

3. 「適用」をクリックします。
現行のレポート・フォーマットがデフォルトになりました。ユーザーがレポートをリセットすると、前述の設定が適用されます。リセット手順については、「デフォルトのレポート設定へのリセット」を参照してください。

一部の行のみを表示するようレポートをカスタマイズするには、次のステップを実行します。

1. 「アクション」メニューをクリックし、「列の選択」を選択します。
「列の選択」オプション・リージョンが表示されます。

2. 「レポートに表示」ボックスで、[Ctrl]キーを押しながら「Issue Summary」、「Status」、「Priority」、「Target Resolution Date」および「Actual Resolution Date」を選択します。

3. 「削除」矢印(<)をクリックして、選択した列を「表示しない」ボックスに追加します。

4. 「適用」をクリックします。
レポートには、5つの列のみが表示されます。

図3-17 カスタマイズしたレポート

「図3-17 カスタマイズしたレポート」の説明

カスタマイズしたレポート設定を保存するには、次のステップを実行します。

1. 「アクション」メニューをクリックし、「レポートの保存」を選択します。
「レポートの保存」オプション・リージョンが表示されます。

2. 「レポートの保存」オプションで、次の変更を行います。

1. 「保存」で、「名前付きレポートとして保存」を選択します。

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

3. 「説明」に、Only show 5 columnsと入力します。

3. 「適用」をクリックします。
上部にレポート・タブ、「レポート設定」領域に「保存されたレポート = "Report 1"」を含むレポートが表示されます。

図3-18 カスタマイズした設定をReport 1として保存

「図3-18 カスタマイズした設定をReport 1として保存」の説明

「作業レポート」および「Report 1」という2つのタブがあることに注意してください。オレンジ色で強調表示された「Report 1」タブは、現在表示されているレポートであることを示しています。前述の手順に従ってこのレポートをさらにカスタマイズして変更を保存するか、「作業レポート」タブを選択してそのタブ内で変更を行うことができます。「作業レポート」に対して行った変更は、保存済のレポートには影響しません。

保存済のレポート・タブを編集するには、レポート設定領域で「保存されたレポート = "Report 1"」リンクをクリックして、「レポートの保存」オプションに対して変更を行います。

注意:
名前付きレポートはログインしている現行ユーザー専用のレポートとなるため、名前付きレポートの作成機能は、アプリケーションまたはページがパブリックでなく、なんらかの認証を必要とする場合にのみ使用できます。詳細は、『Oracle Database Application Expressユーザーズ・ガイド』の対話モード・レポートの編集に関する説明を参照してください。

保存済のレポートを削除することもできます。保存済のレポートを削除するには、次のステップを実行します。

1. レポート設定領域で、「保存されたレポート = "Report 1"」リンクの横にある「レポートの削除」アイコン(レポート上にXが表示されたアイコン)をクリックします。

2. 「適用」をクリックします。
5つの列を含むカスタマイズされたレポートが、レポート・タブを削除された状態で表示されます。

デフォルトのレポート設定へのリセット

この項では、「レポート設定の保存および列の選択」で最初に保存したデフォルト設定にレポートをリセットします。

レポートをリセットするには、次のステップを実行します。

1. 「アクション」メニューをクリックし、「リセット」を選択します。

2. 「適用」をクリックします。
デフォルトのレポート設定を適用したレポートが表示されます。

図3-19 レポートのリセット

「図3-19 レポートのリセット」の説明

これで、Application Expressのレポート作成の基本を理解しましたので、次は、第4章「拡張レポートの手法の使用」に進みます。

関連ドキュメント

このトピックおよび関連トピックに関するその他の情報は、次を参照してください。

- 対話モード・レポートのオンライン・ヘルプ

- Oracle Database Application Expressの詳細なチュートリアル
「拡張レポートの手法の使用」

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

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

- 『Oracle Database Application Express 2日で開発者ガイド』
「アプリケーションの構築」

- Oracle Database Application Expressユーザーズ・ガイド
対話モード・レポートの編集に関する説明

その他のアプリケーションの例については、Learning Libraryを参照してください。Oracle by Example(OBE)、デモ、チュートリアルなどの無料オンライン・トレーニング・コンテンツを検索します。Oracle Learning Libraryには、次のURLでアクセスできます。

http://www.oracle.com/technetwork/tutorials/index.html

4 拡張レポートの手法の使用

このチュートリアルでは、対話モード・レポートの高度な手法を特に活用したアプリケーションを作成します。

この項で説明する手順は次のとおりです。

- 他の表のデータを含める目的でのレポートの拡張

- ホームページから対話モード・レポートへのナビゲーション・リンクの追加

- 対話モード・レポートから他のレポートへの列リンクの作成

- 対話モード・レポートから他のレポートへの列値の受渡し

- 対話モード・レポートに対する列値の問合せ

このチュートリアルの内容は次のとおりです。

- 基本アプリケーションの作成

- ユーザー名およびプロジェクト名の表示

- 「Dashboard」ページの追加

- 関連ドキュメント

基本アプリケーションの作成

この項では、データベース・オブジェクトの作成、オブジェクトへのサンプル・データのロードおよび基本アプリケーションの作成を行います。「アプリケーションの作成」ウィザードを使用して、「Home」ページおよび「Issues」レポート・ページを含むアプリケーションを構築します。「Issues」レポート・ページを使用すると、IT_ISSUES表に格納されている問題を表示できます。

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

- データベース・オブジェクトの作成および移入

- アプリケーションの作成

- アプリケーションの実行

データベース・オブジェクトの作成および移入

アプリケーションの作成を開始する前に、該当するサンプル・オブジェクトをワークスペース内に作成し、作成したオブジェクトにデモンストレーション・データをロードする必要があります。

Issue Trackerサンプル・オブジェクトをインストールするには、次のステップを実行します。

1. Issue Trackerデータ・オブジェクトを作成します。「データベース・オブジェクトを作成するためのスクリプトの作成および実行」の手順に従ってください。

2. オブジェクトにデモンストレーション・データをロードします。「デモンストレーション・データのロード」の手順に従ってください。
これらのサンプル・オブジェクトは、Issue Trackerアプリケーション・オブジェクトのコピーです。Issue Trackerアプリケーションの詳細は、第14章「問題追跡アプリケーションの設計方法」および第15章「問題追跡アプリケーションの作成およびデプロイ方法」を参照してください。

アプリケーションの作成

ここで、「アプリケーションの作成」ウィザードを使用してアプリケーションを作成します。

「Home」ページおよび「Issues」レポート・ページを含むアプリケーションを作成するには、次のステップを実行します。

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

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

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

4. 「名前」で、次の変更を行います。

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

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

3. 「スキーマ」で、ロードしたITデータ・オブジェクトが含まれているスキーマを選択します。

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

5. 「ページの追加」で、次の変更を行います。

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

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

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

6. 「ページの追加」で、次の変更を行います。

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

2. 「ページに従属」で、「ホーム (1)」を選択します。

3. 「ページ・ソース」で、「表」を選択します。

4. 「表名」で、「IT_ISSUES」を選択します。

5. 「実装」で、「対話モード」を選択します。

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

7. 「アプリケーションの作成」で、「It_Issues」リンクをクリックします。
「新しいページ定義」ウィンドウが表示されます。

8. 「ページ定義」で、「ページ名」にIssuesと入力します。

9. 「レポート列」の下で、次の各列の「表示」について「いいえ」を選択し、「変更の適用」をクリックします。

- ISSUE_DESCRIPTION

- TARGET_RESOLUTION_DATE

- PROGRESS

- ACTUAL_RESOLUTION_DATE

- RESOLUTION_SUMMARY

- CRETATED_ON

- CREATED_BY

- MODIFIED_ON

- MODIFIED_BY

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

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

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

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

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

15. アプリケーションの属性を確認して、「作成」をクリックします。

アプリケーションの実行

ここで、Advanced Reportsアプリケーションを実行して、「Home」ページ、「Issues」レポート・ページおよび「単一行ビュー」を表示します。

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

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

2. プロンプトが表示されたら、ワークスペースのユーザー名およびパスワードを入力して、「ログイン」をクリックします。
この認証は、新しく作成したアプリケーションのデフォルトのセキュリティの一部です。詳細は、「アプリケーション認証の概要」を参照してください。

図4-1に示すように、「Home」ページが表示されます。

図4-1 初期「Home」ページ

「図4-1 初期「Home」ページ」の説明

3. 「Issues」リンクをクリックします。
図4-2「初期「Issues」レポート」に示すように、「Issues」レポート・ページが表示されます。

図4-2 初期「Issues」レポート

「図4-2 初期「Issues」レポート」の説明

4. 図4-3「「単一行ビュー」アイコン」に示すように、Issue Id 1の「リンク列」アイコンを特定します。

図4-3 「単一行ビュー」アイコン

「図4-3 「単一行ビュー」アイコン」の説明

5. Issue Id 1の「リンク列」アイコンをクリックします。
図4-4「1つ目の問題の「単一行ビュー」」に示すように、1つ目の問題の「単一行ビュー」が表示されます。

図4-4 1つ目の問題の「単一行ビュー」

「1つ目の問題の「単一行ビュー」」の説明

「アプリケーションの作成」ウィザードによって、「単一行ビュー」を表示する「Issues」対話モード・レポートの「リンク列」が構成されました。これは、ウィザードで「レポート」ページ・タイプを作成する場合のデフォルトです。

ヒント:
「リンク列」は、「レポート属性」ページに移動して「リンク列」設定を変更すると再構成されます。「対話モード・レポート・コンポーネントの概要」を参照してください。

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

ユーザー名およびプロジェクト名の表示

この項では、ユーザーIDおよびプロジェクトIDを含む列を、実際の名前値を含む列で置き換えます。IT_ISSUES表にはユーザー名またはプロジェクト名が含まれないため、その情報を含む表に結合されるよう問合せが変更されます。問合せを変更したら、ページを実行し、「列の選択」アクションを使用して表示する名前値列を追加します。

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

- 他の表から値を取得する目的での問合せの変更

- 表示する名前値列の追加

他の表から値を取得する目的での問合せの変更

「Issues」レポートでは、4つの列で、ユーザー名およびプロジェクト名ではなくIDが表示されています。この項では、「Issues Id」列を除く3つの列を、実際のユーザー名およびプロジェクト名を含む列に置き換えます。

これを実行するには、IT_PEOPLE表とIT_PROJECTS表の結合を含むよう問合せを編集します。IDの列は、次に示す名前値列で置き換えます。

- Identified By Person Idは、Identified Byで置き換えます。

- Related Project Idは、Project Nameで置き換えます。

- Assigned to Person Idは、Assigned Toで置き換えます。

SQL問合せを変更するには、次のステップを実行します。

1. 「2 - Issues」ページを選択します。

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

3. 「ソース」までスクロールして、「リージョン・ソース」を次のSQLで置き換えます。

SELECT "IT_ISSUES"."ISSUE_SUMMARY" as "ISSUE_SUMMARY",
"IT_PEOPLE"."PERSON_NAME" as "IDENTIFIED_BY",
"IT_ISSUES"."IDENTIFIED_DATE" as "IDENTIFIED_DATE",
"IT_PROJECTS"."PROJECT_NAME" as "PROJECT_NAME",
decode("IT_PEOPLE_1"."PERSON_NAME",NULL,'Unassigned',
"IT_PEOPLE_1"."PERSON_NAME")
as "ASSIGNED_TO",
"IT_ISSUES"."STATUS" as "STATUS",
"IT_ISSUES"."PRIORITY" as "PRIORITY",
"IT_ISSUES"."TARGET_RESOLUTION_DATE" as "TARGET_RESOLUTION_DATE",
"IT_ISSUES"."PROGRESS" as "PROGRESS",
"IT_ISSUES"."ACTUAL_RESOLUTION_DATE" as "ACTUAL_RESOLUTION_DATE",
"IT_ISSUES"."ISSUE_ID" as "ISSUE_ID",
"IT_ISSUES"."RELATED_PROJECT_ID" as "PROJECT_ID"
FROM "IT_PEOPLE" "IT_PEOPLE_1",
"IT_PROJECTS" "IT_PROJECTS",
"IT_PEOPLE" "IT_PEOPLE",
"IT_ISSUES" "IT_ISSUES"
WHERE "IT_ISSUES"."IDENTIFIED_BY_PERSON_ID"="IT_PEOPLE"."PERSON_ID"
AND "IT_ISSUES"."ASSIGNED_TO_PERSON_ID"="IT_PEOPLE_1"."PERSON_ID"(+)
AND "IT_ISSUES"."RELATED_PROJECT_ID"="IT_PROJECTS"."PROJECT_ID"

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

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

表示する名前値列の追加

次に、「Issues」対話モード・レポート・ページを実行し、「列の選択」アクションを使用して表示する3つの名前値列を追加します。

表示する列を追加するには、次のステップを実行します。

1. ページの右上の角にあるページの実行2アイコンをクリックします。

2. 図4-5に示すように、「実行」ボタンの右にある「アクション」メニューをクリックします。

図4-5 「アクション」アイコン

「図4-5 「アクション」アイコン」の説明

3. 「列の選択」アクションを選択します。
図4-6のようにページが表示されます。

図4-6 「列の選択」アクションのオプション・ページ

「図4-6 「列の選択」アクションのオプション・ページ」の説明

4. 「表示しない」ボックスで「Identified By」を強調表示して、「移動」アイコン(>)をクリックします。

5. 「Project Name」および「Assigned To」に対して、前述のステップを繰り返します。
「表示しない」ボックスには、「Project Id」列のみが残ります。他のすべての列は、「レポートに表示」リストに表示されます。

6. 「列の選択」領域の右下にある「適用」をクリックします。
「Issues」ページが図4-7のように表示されます。

図4-7 ユーザー名およびプロジェクト名を含む「Issues」レポート

「図4-7 ユーザー名およびプロジェクト名を含む「Issues」レポート」の説明

「Dashboard」ページの追加

「Dashboard」では、重要な問題追跡の統計の簡単なスナップショットが提供されます。「Dashboard」に表示されるリージョンは、次のとおりです。

- 「Overdue Issues」レポート

- 「Open Issues by Project」円グラフ

この項のステップを完了すると、図4-8「Dashboard」のような「Dashboard」ページがアプリケーションに含まれます。

図4-8 Dashboard

「図4-8 Dashboard」の説明

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

- 「Dashboard」ページの作成

- 「Dashboard」への「Overdue Issues」レポート・リージョンの追加

- 「Open Issues by Project」円グラフの追加

「Dashboard」ページの作成

最初に、アプリケーションに空白ページを追加して、「Dashboard」という名前を付けます。

「Dashboard」ページを追加するには、次のステップを実行します。

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

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

3. 「空白ページ」を選択して「次へ」をクリックします。

4. 「ページ番号」に3と入力して、「次へ」をクリックします。

5. 「ページの作成」で、次の変更を行います。

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

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

3. 「ブレッドクラム」で、「ブレッドクラム」を選択します。

4. 「エントリ名」に、Dashboardと入力します。

5. 「親エントリ」で、「Home」リンクを選択します。

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

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

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

「Home」ページにおける「Dashboard」へのリンクの追加

次に、「Home」ページで、「Dashboard」に移動するためのリンクを追加します。このリンクは、「ホーム」ページの左側の「ナビゲーション」リージョンに表示されます。

「Home」ページに「Dashboard」へのリンクを追加するには、次のステップを実行します。

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

1. 「アプリケーション」ホーム・ブレッドクラムをクリックします。

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

2. 「リージョン」で、「ナビゲーション」の横にある「リスト」リンクをクリックします。

3. 「リスト・エントリ」ページで、ページの右側の「リスト・エントリの作成」ボタンをクリックします。

4. 「リスト・エントリの作成/編集」ページで、次の項目を編集します。

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

2. 「リスト・エントリ・ラベル」に、Dashboardと入力します。

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

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

6. 「アプリケーション」ブレッドクラムをクリックします。

7. 「アプリケーションの実行」をクリックします。

図4-9 ナビゲーション・リンク

「図4-9 ナビゲーション・リンク」の説明

「Home」ページに「Dashboard」へのリンクが作成されたことに注意してください。

8. 「Dashboard」をクリックしてリンクをテストします。
空の「Dashboard」ページが表示されます。

「Dashboard」への「Overdue Issues」レポート・リージョンの追加

次に、期限切れの問題を表示するレポート・リージョンを「Dashboard」ページに追加して、そのレポートから「Issues」対話モード・レポートへのリンクを追加します。

「Overdue Issues」レポート・リージョンの作成

このレポートの問合せによって、未解決のすべての問題と、過ぎてしまった解決目標日が取得されます。

レポート・リージョンを追加するには、次のステップを実行します。

1. 「開発者」ツールバーで、「ページの編集3」をクリックします。

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

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

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

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

- 「タイトル」に、Overdue Issuesと入力します。

- 「リージョン・テンプレート」で、「レポート・リージョン、代替1」を選択します。

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

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

6. 「ソース」で、「SQL問合せの入力」に、次の文を入力します。

SELECT i.issue_id, i.priority, i.issue_summary,
p.person_name assignee, i.target_resolution_date, r.project_name
FROM it_issues i, it_people p, it_projects r
WHERE i.assigned_to_person_id = p.person_id (+)
AND i.related_project_id = r.project_id
AND i.target_resolution_date < sysdate
AND i.status != 'Closed'

割当てはオプションであるため、外部結合が必要です。

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

対話モード・レポートでのリンク列の追加および宣言フィルタの作成

次のステップは、「Overdue Issues」レポートから「Issues」対話モード・レポートへのリンク列の作成方法およびURL項目値を使用したフィルタ基準の受渡しによる宣言フィルタの定義方法を示しています。

「Project Name」列から「Issues」対話モード・レポートにリンクを追加するには、次のステップを実行します。

1. 「リージョン」で、「レポート」リンクをクリックします。

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

3. 「列リンク」までスクロールして、次のステップを実行します。

1. 「リンク・テキスト」で、[PROJECT_NAME]を選択します。

2. 「リンク属性」に、次のように入力します。
title="Click to see all issues for this project."

この設定は、リンク列の項目のヘルプ・テキストを定義します。

3. 「ページ」で、「2」を選択します。

4. 「キャッシュのクリア」で、次を入力します。

CIR,2

このリンク列には、任意のフィルタの「Issues」対話モード・レポートを消去するCIR (Clear Interactive Report)コマンド、コントロール・ブレーク、強調表示、集計、計算した列、チャート設定およびフラッシュバック設定が含まれます。2によって、「Issues」レポート(ページ2)のキャッシュが消去されます。

注意:
対話モード・レポートをリセットするには、CIRをRIR (Reset Interactive Report)で置き換えます。RIRコマンドを使用すると、デフォルトとして保存された最新の設定にレポートがリセットされます。

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

IR_PROJECT_NAME

6. 「アイテム1」に、次の値を入力します。

#PROJECT_NAME#

「名前」および「値」の設定では、「Issues」対話モード・レポートの宣言フィルタが作成されます。プロジェクト名のリンクを使用すると、「Project Name」列の値が「Issues」レポートに渡されます。リンクをクリックすると、そのプロジェクトのすべての問題が、期限切れかどうかにかかわらず「Issues」レポートに表示されます。

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

アプリケーションの実行

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

1. 「アプリケーション」ホームページにナビゲートして、「アプリケーションの実行」アイコンをクリックします。
「アプリケーション」ホームページが表示されます。

2. 「Dashboard」リンクをクリックします。
「Overdue Issues」リージョンが追加された「Dashboard」ページが、図4-10 「「Overdue Issues」リージョンが追加された「Dashboard」」のように表示されます。プロジェクト名がリンクとして表示されていることに注意してください。

図4-10 「Overdue Issues」リージョンが追加された「Dashboard」

「図4-10 「Overdue Issues」リージョンが追加された「Dashboard」」の説明

3. 「New Payroll Rollout」プロジェクト名をクリックします。
「New Payroll Rollout」プロジェクト名の下にすべての問題が分類された「Issues」対話モード・レポートが表示されます。

図4-11 「New Payroll Rollout」の「Issues」

「図4-11 「New Payroll Rollout」の「Issues」」の説明

レポートの上部に「New Payroll Rollout」フィルタが作成されたことに注意してください。このフィルタは、プロジェクト名リンク列をクリックした際に作成されました。

「Open Issues by Project」円グラフの追加

次に、「Open Issues by Project」を表示する円グラフを追加し、「Issues」レポートへのリンクを作成します。円グラフの問合せでは、「Issues」対話モード・レポートから各プロジェクト名の未解決の問題数が取得されます。円グラフに表示されるプロジェクト名は、選択したプロジェクトのすべての問題を表示する「Issues」レポートにリンクします。

「Issues」レポートにリンクする円グラフ・リージョンの作成

円グラフを含むリージョンを作成するには、次のステップを実行します。

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

2. 「3 - Dashboard」をクリックします。

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

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

5. 「Flashチャート」を選択し、「次へ」をクリックします。

6. 「表示属性」で、次の変更を行います。

- 「タイトル」に、Open Issues by Projectと入力します。

- 「リージョン・テンプレート」で、「チャート・リージョン」を選択します。

- 「順序」に、10と入力します。

- 「列」で、「2」を選択します。

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

7. 「チャート・プレビュー」で、次の編集を行います。

- 「チャート・タイプ」で、「3D円」を選択します。

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

8. 「ソース」で、「SQL」に次の文を入力します。

SELECT
'f?p=&APP_ID.:2:&SESSION.:::CIR:IREQ_STATUS,IREQ_PROJECT_ID:Open,'||r.project_id LINK,
NVL(r.project_name,'No Project') label,
COUNT(r.project_name) value
FROM it_issues i, it_projects r
WHERE i.status = 'Open' AND i.related_project_id = r.project_id
GROUP BY NULL, r.project_name, r.project_id
ORDER BY r.project_name, r.project_id

SELECT文は、「Issues」対話モード・レポート(ページ2)にリクエストを送信し、特定のプロジェクト名に属する問題のうち、ステータスがOpenのものを問い合せていることに注意してください。CIRコマンドは対話モード・レポートの消去に使用され、リクエストされたすべての値が問合せに含まれ、除外されたり表示対象外の列に設定されないようにします。

9. 「データが見つからなかった場合のメッセージ」に、No open issuesと入力します。

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

「Dashboard」の実行および「Issues」レポートへのリンク

次に、「Dashboard」ページを実行して追加された円グラフ・リージョンを表示し、「Issues」レポートにリンクするプロジェクト名を1つ選択します。

更新された「Dashboard」ページを表示するには、次のステップを実行します。

1. 「ページ3の実行」アイコンをクリックします。
円グラフ・リージョンが追加された「Dashboard」が表示されます。

図4-12 両方のリージョンが追加された最終的な「Dashboard」

「図4-12 両方のリージョンが追加された最終的な「Dashboard」」の説明

2. 図4-13に示すように、円グラフで「Employee Satisfaction Survey」プロジェクト・リンクを特定します。

図4-13 「Dashboard」の「Open Issues by Project」円グラフ

「図4-13 「Dashboard」の「Open Issues by Project」円グラフ」の説明

3. 「Employee Satisfaction Survey」プロジェクト・リンクをクリックします。
図4-14に示すように、ステータスがOpenであるすべての「Employee Satisfaction Survey」問題を含む「Issues」レポートが表示されます。

図4-14 Openステータスの「Employee Satisfaction Survey」問題の「Issues」レポート

「図4-14 Openステータスの「Employee Satisfaction Survey」問題の「Issues」レポート」の説明

レポート設定セクションのフィルタに注意してください。「Issues」レポートは、プロジェクトおよびステータスによってフィルタ処理されています。

関連ドキュメント

このトピックおよび関連トピックに関するその他の情報は、次を参照してください。

- 対話モード・レポートのオンライン・ヘルプ

- Oracle Database Application Expressの詳細なチュートリアル
「拡張レポートの手法の使用」

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

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

- 『Oracle Database Application Express 2日で開発者ガイド』
「アプリケーションの構築」

- Oracle Database Application Expressユーザーズ・ガイド
対話モード・レポートの編集に関する説明

その他のアプリケーションの例については、Learning Libraryを参照してください。Oracle by Example(OBE)、デモ、チュートリアルなどの無料オンライン・トレーニング・コンテンツを検索します。Oracle Learning Libraryには、次のURLでアクセスできます。

http://www.oracle.com/technetwork/tutorials/index.html

5 フォーム・レイアウトの制御方法

Oracle Application Expressアプリケーションのデータおよびフォーム要素は、リージョンと呼ばれるコンテナを使用してページに配置されます。ページには、リージョンの配置および位置指定を制御する属性があります。リージョン内部のフォーム要素(アイテム)の配置およびスタイルは、アイテム属性を使用して制御します。

このチュートリアルでは、スクリプトを実行してデータ入力フォームの基礎となるデータ・オブジェクトを作成します。その後、データ入力フォームを作成し、リージョン属性とアイテム属性を変更してフォーム・レイアウトを変更する方法を学習します。

この項には、次の項目が含まれます。

- 表およびデータの入力フォームの作成

- リージョン属性の変更によるページの外観の変更

- アイテム属性がページ・レイアウトに与える影響の理解

- リージョンのヘッダーおよびフッターの追加

- リージョンの条件付け

- ヒント・テキストを含むリージョンの追加

- アイテム・タイプの変更

- ラベル・テンプレート

- ボタンの変更

- 更新のためのページの実行

- データの太字強調

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

- アプリケーションの作成および実行
http://www.oracle.com/technology/obe/hol08/apexintro/apex3.1.1_b/apex3.1.1_b_otn.htm

- Oracle Application Express 3.1での追加の新機能の使用
http://www.oracle.com/technology/obe/apex/apex31nf/apex31misc.htm

- 既存のアプリケーションへのコンポーネントの追加
http://www.oracle.com/technology/obe/hol08/apexintro/apex3.1.1_c/apex3.1.1_c_otn.htm

表およびデータの入力フォームの作成

データ入力フォーム作成の最初のステップは、基礎となるデータ・オブジェクトを作成することです。次の演習では、HT_EMPという表を作成した後、ウィザードを使用して新しいページを作成します。

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

- HT_EMP表の作成

- 新しいアプリケーションの作成

- 入力フォームを含む新しいページの作成

- ページの実行

HT_EMP表の作成

まず、SQLスクリプトでスクリプトを実行して、新しい表を作成します。

HT_EMP表および適切な関連オブジェクトを作成するには、次のステップを実行します。

1. 「ワークスペース」ホームページで「SQLワークショップ」をクリックして、「SQLスクリプト」をクリックします。
SQLスクリプトのホームページが表示されます。

2. 「作成」をクリックします。
スクリプト・エディタが表示されます。

3. 「スクリプト名」に、HT_EMPと入力します。

4. 「スクリプト・エディタ」に、次のデータ定義言語(DDL)を入力します。

CREATE TABLE ht_emp (
emp_id                 NUMBER       primary key,
emp_first_name         VARCHAR2(30) not null,
emp_middle_initial     VARCHAR2(1),
emp_last_name          VARCHAR2(45) not null,
emp_part_or_full_time  VARCHAR2(1)  not null check (emp_part_or_full_time in ('P','F')),
emp_salary             NUMBER,
emp_dept               VARCHAR2(20) check (emp_dept in ('SALES','ACCOUNTING',

'MANUFACTURING','HR')),
emp_hiredate           DATE,
emp_manager            NUMBER       references ht_emp,
emp_special_info       VARCHAR2(2000),
emp_telecommute        VARCHAR2(1) check (emp_telecommute in ('Y')),
rec_create_date        DATE         not null,
rec_update_date        date)
/

INSERT INTO ht_emp
(emp_id, emp_first_name, emp_middle_initial, emp_last_name, emp_part_or_full_time, emp_salary, emp_dept, emp_hiredate, emp_manager, emp_special_info, emp_telecommute, rec_create_date)
VALUES
(1,'Scott','R','Tiger','F',
100000,'SALES',sysdate,null,'cell phone number is xxx.xxx.xxxx
home phone is yyy.yyy.yyyy','Y',
SYSDATE)
/

CREATE SEQUENCE ht_emp_seq
start with 2
/

CREATE OR REPLACE TRIGGER bi_ht_emp
BEFORE INSERT ON ht_emp
FOR EACH ROW
BEGIN
SELECT ht_emp_seq.nextval
INTO :new.emp_id
FROM DUAL;
:new.rec_create_date := SYSDATE;
END;
/

CREATE OR REPLACE TRIGGER bu_ht_emp
BEFORE UPDATE ON ht_emp
FOR EACH ROW
BEGIN
:new.rec_update_date := SYSDATE;
END;
/

5. 「保存」をクリックします。
SQLの「スクリプト・リポジトリ」にスクリプトが表示されます。

6. HT_EMPスクリプトを実行します。

1. HT_EMPスクリプトをクリックします。

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

3. 「スクリプトの実行」で、再度「実行」をクリックします。

7. 「ビュー」リストから「詳細」を選択し、「実行」をクリックします。

図5-1 「スクリプト結果の管理」ページの詳細表示

「図5-1 「スクリプト結果の管理」ページの詳細表示」の説明

8. 「結果」ページにアクセスするには、「結果の表示」アイコンをクリックします。
赤字は、ファイルの実行中にエラーが発生したことを示します。

関連項目:
『Oracle Database Application Expressユーザーズ・ガイド』の「SQLスクリプトの使用」

新しいアプリケーションの作成

次に、新しいアプリケーションを作成します。

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

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

2. 「ワークスペース」ホームページで、「アプリケーション・ビルダー」アイコンをクリックします。
「アプリケーション・ビルダー」ホームページが表示されます。

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

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

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

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

2. 「アプリケーション」で、デフォルトを受け入れます。

3. 「アプリケーションの作成」で、デフォルトの「最初から」を受け入れます。

4. 「スキーマ」で、OEHR Sample Objectsをインストールしたスキーマを選択します。

5. 「次へ」をクリックします。
次に、ページを追加する必要があります。ここでは、空白ページ、レポート、フォーム、表形式フォームまたはレポートおよびフォームを追加できます。この演習では、2枚の空白ページを追加します。

6. 次のステップで空白ページを追加します。

1. 「ページ・タイプの選択」で、デフォルトの「空白」を受け入れます。

2. 「ページの追加」をクリックします。
ページ上部に空白ページが表示されます。

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

8. 「タブ」で、デフォルトの「1レベルのタブ」を受け入れて「次へ」をクリックします。

9. 「別のアプリケーションから共有コンポーネントのコピー」で、デフォルトの「いいえ」を受け入れて「次へ」をクリックします。

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

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

12. 選択内容を確認して、「作成」をクリックします。
「アプリケーション」ホームページが表示されます。新しいアプリケーションには、2つのページが含まれています。

入力フォームを含む新しいページの作成

次に、「表またはビューのフォーム」ウィザードを使用して新しいフォームを作成します。

データ入力フォームを作成するには、次のステップを実行します。

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

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

3. 「ページの作成」で、「表またはビューのフォーム」を選択して「次へ」をクリックします。

4. 「表/ビューの所有者」で、デフォルトを受け入れて「次へ」をクリックします。

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

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

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

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

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

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

5. 「ブレッドクラム」で、デフォルトを受け入れます。

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

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

8. 「主キー」で、デフォルトを受け入れて「次へ」をクリックします。
ウィザードでは、主キーはデータベース定義から読み取られることに注意してください。

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

10. 「列の選択」で、すべての列を選択します。[SHIFT]キーを押しながら、最初の列と最後の列を選択します。続いて、「次へ」をクリックします。

11. 「プロセス・オプション」で、デフォルト値を受け入れて「次へ」をクリックします。

12. 「ブランチ」で、両方のフィールドに2(作成対象のページ)と入力して「次へ」をクリックします。
このページはデモンストレーション専用のため、ブランチは使用しません。

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

14. 「ページの編集」アイコンをクリックします。
ページ2のページ定義が表示されます。

15. 次の検証を削除します。

- 「ページ・プロセス」の「検証」で、「P2_REC_CREATE_DATEがNULLでない」を選択します。

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

この列の値はトリガーを使用して設定するため、この検証は削除します。新規レコード場合、フォーム内のアイテムには値がありません。基礎となるデータベースの列がNOT NULLであるため、この検証は自動的に作成されます。

ページの実行

新しい入力フォームを作成した後、ページを実行します。

ページ定義からページを実行するには、次のステップを実行します。

1. 図5-2に示すように、ページの右上にある「ページの実行」アイコンをクリックします。

図5-2 「ページの実行」アイコン

「図5-2「ページの実行」アイコン」の説明

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

図5-3に示すとおり、新しいフォームが表示されます。フォームには、選択リスト、テキスト領域、表示専用アイテムなどで構成される従業員基本情報の詳細が表示されます。

図5-3 従業員情報フォーム

「図5-3 従業員情報フォーム」の説明

主キー列はシステムで生成されることが前提であるため、デフォルトでは、主キーは表示されません。実際、主キーはページに含まれていますが、非表示アイテムとして処理されます。

ページには、行ごとに1つのアイテムがデフォルトで設定され、それらのアイテムの左にラベルが表示されます。アイテム・ラベルは、先頭が大文字で、アンダースコア(_)が空白に置き換えられた列名にデフォルトで設定されます。このデフォルトの動作は、表のユーザー・インタフェースのデフォルト値を構成して変更できます。

関連項目:
『Oracle Database Application Expressユーザーズ・ガイド』の「ユーザー・インタフェースのデフォルト値の管理」

また、日付列に基づくアイテムは、日付ピッカーが含まれるようにデフォルトで設定されます。さらに、「Emp Special Info」アイテムは、ベース列のサイズのため、テキスト領域として作成されます。このアイテム・タイプは、入力テキストの折返しを行うことができるため、大きいテキスト・アイテム用に選択することをお薦めします。

リージョン属性の変更によるページの外観の変更

リージョンはページ上の領域で、コンテンツのコンテナとして機能します。リージョン属性を変更することで、ページの外観を変更できます。

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

- リージョン・タイトルの編集

- 表示ポイントとテンプレートの変更

- 元の選択内容へのリージョン属性の変更

リージョン・タイトルの編集

リージョン・タイトルおよびその他のリージョン・レベル属性を編集するには、次のステップを実行します。

1. 「開発者」ツールバーで「ページの編集2」をクリックします。

2. 「リージョン」で、「Form Layout」をクリックします。
リージョン定義が表示されます。

3. タイトルをEmployee Infoに変更します。

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

5. ページ定義で、右上の「ページの実行」アイコンをクリックします。
新しいリージョン・タイトルを確認します。

表示ポイントとテンプレートの変更

他のリージョン属性を変更するには、次のステップを実行します。

1. ページ定義に戻ります。「開発者」ツールバーで「ページの編集2」をクリックします。

2. 「リージョン」で、「Employee Info」を選択します。
リージョン定義が表示されます。

3. 「ユーザー・インタフェース」までスクロールします。
ページ・テンプレート内のリージョンの位置は、ページ・テンプレートを変更して制御できます。

4. 「表示ポイント」で、「ページ・テンプレートのリージョン位置3」を選択します。
ここでは、選択によって、リージョンがページの右側に移動します。リージョン表示ポイントは、ページ・レベル・テンプレートによって決定されます。ページ・レベル・テンプレートを選択しなかった場合、Oracle Application Expressでは、現行のテーマに定義されているデフォルトのページ・レベル・テンプレートが使用されます。「表示ポイント」リストの右にある懐中電灯アイコンを選択すると、特定の位置を表示できます。

次に、リージョン・テンプレートを一時的に変更します。

5. 「テンプレート」で、「枠線なしリージョン」を選択します。

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

7. ページ定義で、右上の「ページの実行」アイコンをクリックします。
図5-4に示すとおり、フォームが表示されます。

図5-4 新しい表示ポイントおよびテンプレートでの従業員情報フォーム

「図5-4 新しい表示ポイントおよびテンプレートでの従業員情報フォーム」の説明

フォームの外観が変わりました。フォーム・タイトルは白地に黒字で表示され、タイトルの下には罫線があります。また、フォームの周囲の境界線がなくなりました。

元の選択内容へのリージョン属性の変更

リージョン・テンプレートおよび表示ポイントを元の選択内容に戻すには、次のステップを実行します。

1. 「開発者」ツールバーで「ページの編集2」をクリックします。

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

3. 「ユーザー・インタフェース」までスクロールします。

4. 「テンプレート」リストから、「フォーム・リージョン」を選択します。

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

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

アイテム属性がページ・レイアウトに与える影響の理解

アイテムは、HTMLフォームの一部です。アイテムは、テキスト・フィールド、テキスト領域、パスワード、選択リスト、チェック・ボックスなどを示します。ページ上のアイテムの表示は、アイテム属性で制御されます。アイテム属性によって、ラベルの表示位置、アイテムのサイズ、アイテムの表示位置(左右、上下)が決定されます。「ページ・アイテム」サマリー・ページでは、複数のアイテム・ラベルを一度に変更できます。

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

- アイテム属性の編集

- アイテムの位置修正

- 表示専用リージョンへの変更

関連項目:
『Oracle Database Application Expressユーザーズ・ガイド』のアイテムの作成に関する説明

アイテム属性の編集

すべてのアイテム属性を編集するには、次のステップを実行します。

1. ページ2のページ定義の「アイテム」セクションに移動します。

2. 「アイテム」で、「すべて編集」アイコンをクリックします。
図5-5に示すとおり、「すべて編集」アイコンは、鉛筆が付いた小さいグリッドに似ています。

図5-5 「すべて編集」アイコン

「図5-5 「すべて編集」アイコン」の説明

「ページ・アイテム」サマリー・ページが表示されます。

アイテム属性を編集して、ページの外観を変更します。アイテム属性の一般的な変更は次のとおりです。

- 「プロンプト」フィールドを編集してアイテム・ラベルを変更します。

- 類似アイテムをグループ化するために特定の行に複数のアイテムを配置します。たとえば、従業員名を構成するすべてのアイテムをグループ化できます。

- アイテムの幅を変更します。多くのアイテムは、最大値より小さい幅にすると外観が向上します。アイテムの幅を変更するには、「幅」フィールドに新しい値を入力します。

- アイテムを並べ替えます。アイテムの最初の順序は、リージョンの基礎となる表内の列の順序に基づいています。アイテムを並べ替えるには、「順序」フィールドに新しい値を入力します。

3. アイテム属性がページ・レイアウトに与える影響を確認するには、次の変更を行います。

1. 表5-1に従って、「プロンプト」、「新しい行」および「幅」フィールドの値を変更します。

表5-1 「プロンプト」、「新しい行」および「幅」フィールドの新しい値

「プロンプト」フィールド

新しい行

幅

Emp ID

はい

30

First Name

はい

15

Middle Initial

いいえ

2

Last Name

いいえ

15

Part or Full Time

はい

2

Salary

はい

10

Department

はい

15

Hire Date

はい

10

Manager

いいえ

15

Special Information

はい

60

Telecommute

はい

2

Record Create Date

はい

10

Record Update Date

はい

10

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

3. ページの右上にある「ページの実行」アイコンをクリックします。

図5-6 「プロンプト」、「新しい行」および「幅」属性を編集した後の従業員情報フォーム

「図5-6 「プロンプト」、「新しい行」および「幅」属性を編集した後の従業員情報フォーム」の説明

図5-6に示すとおり、「Special Information」アイテムの幅のために、一部のアイテムが右側に移動していることに注意してください。Oracle Application Expressでは、リージョンが表としてレイアウトされ、各列の幅はその列のアイテムの最大表示幅によって決定されます。

アイテムの位置修正

アイテムの位置を修正するには、いくつかの方法があります。

- 「Middle Initial」、「Last Name」および「Manager」アイテムでは、「新規フィールド」フィールドを「いいえ」に設定します。
これによって、これらのアイテムは前のアイテムのすぐ後に同じ列で配置されます。この方法は、アイテムの横に埋込みボタンを配置する場合に便利です。この設定によって、テキスト・アイテムがつぶれたように見える可能性があることに注意してください。

- 「Special Information」アイテムの「列スパン」フィールドを変更します。
たとえば、「Special Information」アイテムの「列スパン」を5に設定すると、このアイテムの上下に複数のアイテムを表示できます。この変更によって、「Special Information」の上に5つのアイテム(「First Name」、「Middle Initial」および「Last Name」)が表示されます。

ただし、「列スパン」を使用して名前の表示を修正すると、一貫性のあるレイアウトにならないことに注意してください。「Manager」アイテムは、「Middle Initial」と同じ列に位置したままです。「Manager」アイテムが「Middle Initial」より大きいため、「Last Name」は右端に位置したままです。これを修正するには、「Manager」アイテムの「列スパン」を3に変更して、このアイテムが「Special Information」の上に表示されるように変更します。

- HTML表の停止および開始タイプのアイテムを追加して、リージョンの中央部分の列幅を再設定します。これによって、</table>タグを使用してHTML表が閉じられ、新しいHTML表が開始されます。「Last Name」アイテムの直後にHTML表の停止および開始アイテムを挿入すると、均等なレイアウトになります。HTML表の停止および開始アイテムには、ラベルのみが表示されることに注意してください。このラベルを非表示にするには、NULLに設定します。これを行うには、デフォルト設定されているラベルを削除します。

「HTML表の停止および開始」アイテムの追加

「ドラッグ・アンド・ドロップ・レイアウト」ページを使用して、対話形式で、特定の領域内でのアイテムの順序変更、選択するアイテム属性の変更、新しいアイテムの作成または既存のアイテムの削除を実行できます。この演習では、2つのアイテムを並べ替えます。

「HTML表の停止および開始」アイテムを追加するには、次のステップを実行します。

1. 「開発者」ツールバーで「ページの編集2」をクリックします。

2. 「アイテム」で、図5-7に示すとおり、「ドラッグ・アンド・ドロップ」アイコンをクリックします。

図5-7 「ドラッグ・アンド・ドロップ」アイコン

「図5-7 「ドラッグ・アンド・ドロップ」アイコン」の説明

「ドラッグ・アンド・ドロップ・レイアウト」ページが表示されます。このページは、左側の「アイテム」パレットおよび右側の「レイアウト」リージョンに分かれています。

図5-8 「ドラッグ・アンド・ドロップ・レイアウト」ページ

「図5-8 「ドラッグ・アンド・ドロップ・レイアウト」ページ」の説明

3. 「アイテム」パレットで、「表の停止および開始」アイコンを選択して、P2_EMP_IDアイテムを含む行の後ろにドロップします。

1. 「アイテム」パレットのアイコンにマウスを移動し、「表の停止および開始」を検索します。アイテム・タイプにカーソルを移動すると、ツールチップが表示されます。

図5-9 「表の停止および開始」アイテム・タイプ

「図5-9 「表の停止および開始」アイテム・タイプ」の説明

2. 「表の停止および開始」アイコンをクリックして、P2_EMP_IDの下にドラッグします。

3. 「次へ」をクリックします。
レポートが表示されます。P2_EMP_IDの下に新しい「HTML表の停止および開始」が表示されることに注意してください。

図5-10 更新された「ドラッグ・アンド・ドロップ・レイアウト」ページ

「図5-10 更新された「ドラッグ・アンド・ドロップ・レイアウト」ページ」の説明

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

「Special Information」アイテムの編集

アイテムがHTML表に配置されます。次に、「Special Information」アイテムの「列スパン」属性を編集する必要があります。「列スパン」属性は、表のセルのCOLSPAN属性に使用する値を定義します。

「Special Information」アイテムを編集するには、次のステップを実行します。

1. 「アイテム」で、「リージョン・アイテムの順序変更」アイコンをクリックします。
図5-11に示すとおり、「リージョン・アイテムの順序変更」アイコンは、薄緑色の下/上矢印に似ています。

図5-11 「リージョン・アイテムの順序変更」アイコン

「図5-11 「リージョン・アイテムの順序変更」アイコン」の説明

「リージョン・アイテムの順序変更」ページは、別のウィンドウに表示されます。

ページ上のアイテムは表の中に配置されます。アイテムの位置は、「新しい行」、「新規フィールド」、「列スパン」および「ラベルの位置合せ」の各属性の値を選択することにより編集できます。アイテムを表示する順序を変更するには、右端の列にある上/下矢印をクリックします。また、各アイテムがグラフィカルにどのように表示されるのかは、ページ下部に表示されます。

2. 「Special Information」で、「列スパン」を3に変更して「変更の適用」をクリックします。

3. 右上にある「ページの実行」アイコンをクリックします。図5-12に示すとおり、フォームが表示されます。

図5-12 アイテムの位置が修正された従業員情報フォーム

「図5-12 アイテムの位置が修正された従業員情報フォーム」の説明

表示専用リージョンへの変更

HT_EMP表には、監査用に「Record Create Date」および「Record Update Date」の2つの列があります。これらの列の値はトリガーによって設定されるため、ユーザーからは更新できないようにする必要があります。次の演習では、アイテムを表示専用にする方法およびそれらに専用のリージョンを追加する方法について説明します。

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

- 表示専用アイテムへの変更

- 新しいリージョンの作成

- 新しいリージョンへの監査アイテムの移動

- 「リージョンを表示/非表示」へのリージョン・テンプレートの変更

表示専用アイテムへの変更

アイテムP2_REC_CREATE_DATEを表示専用にするには、次のステップを実行します。

1. ページ2のページ定義に移動します。「開発者」ツールバーで「ページの編集2」をクリックします。

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

3. 「名前」セクションの「表示形式」リストから、「テキスト・フィールド(無効、状態を保存する)」を選択します。

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

アイテムP2_REC_UPDATE_DATEを表示専用にするには、次のステップを実行します。

1. ページ2のページ定義に移動します。

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

3. 「名前」セクションの「表示形式」リストから、「テキスト・フィールド(無効、状態を保存する)」を選択します。

4. 「変更の適用」をクリックします。
次に、新しいリージョンを作成し、表示専用アイテムを新しいリージョンに移動します。

新しいリージョンの作成

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

1. ページ2のページ定義に移動します。

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

3. 「リージョン」で、次のステップを実行します。

1. 「このページに追加するリージョン・タイプを指定」で、デフォルトの「HTML」を受け入れ、「次へ」をクリックします。

2. 「作成するHTMLリージョン・コンテナのタイプの選択」で、デフォルトの「HTML」を受け入れ、「次へ」をクリックします。

4. 「表示属性」で、「タイトル」フィールドに監査情報と入力して、残りのデフォルト値を受け入れて「次へ」をクリックします。

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

新しいリージョンへの監査アイテムの移動

アイテムを新しいリージョンに移動するには、次のステップを実行します。

1. ページ2のページ定義に移動します。

2. 「アイテム」で、「すべて編集」アイコンをクリックします。「すべて編集」アイコンは、鉛筆が付いた小さいグリッドに似ています。
「ページ・アイテム」サマリー・ページが表示されます。

3. P2_REC_CREATE_DATEおよびP2_REC_UPDATE_DATEに対して、次のステップを実行します。

1. 「プロンプト」列で、ラベル名の末尾にコロンを追加します。

2. 「リージョン」列で、「監査情報」を選択します。

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

4. 右上にある「ページの実行」アイコンをクリックします。
図5-13に、実行中のページでこれらのアイテムがどのように表示されるかを示します。

図5-13 「監査情報」リージョン

「図5-13 「監査情報」リージョン」の説明

「リージョンを表示/非表示」へのリージョン・テンプレートの変更

「リージョンを表示/非表示」テンプレートによって、ユーザーは、プラス記号(+)をクリックしてリージョンのコンテンツを表示したり、マイナス記号(-)をクリックしてコンテンツを非表示にすることができます。ユーザーは、リージョン・テンプレートを「リージョンを表示/非表示」に変更して、「監査情報」リージョンを表示するかどうかを決定できます。

リージョン・テンプレートを「リージョンを表示/非表示」に変更するには、次のステップを実行します。

1. ページ2のページ定義に移動します。

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

3. 「ユーザー・インタフェース」で、「テンプレート」リストから「リージョンを非表示と表示」を選択します。

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

5. 右上にある「ページの実行」アイコンをクリックします。
図5-14に、表示/非表示リージョンとしての「監査情報」の表示方法を示します。リージョン・タイトルの右にあるアイコンをクリックすると、リージョンを非表示にできます。

図5-14 表示/非表示リージョンとしての「監査情報」

「図5-14 表示/非表示リージョンとしての「監査情報」リージョン」の説明

リージョンのヘッダーおよびフッターの追加

リージョンには、ヘッダーおよびフッターを含めることができます。通常、ヘッダーおよびフッターには、リージョンの上部または下部のいずれかに表示されるテキストまたはHTMLが含まれます。

リージョン・フッターを追加するには、次のステップを実行します。

1. ページ2のページ定義に移動します。「開発者」ツールバーで「ページの編集2」をクリックします。

2. 「リージョン」で、「監査情報」を選択します。

3. 「ヘッダーおよびフッター」までスクロールします。

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

<i>The Record Create Date is the date that the record was initially entered in
to the system. <br/>The Record Update Date is the date that the
record was last updated.</i>

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

6. 右上にある「ページの実行」アイコンをクリックします。

7. 図5-15に示すように、2つの日付フィールドと新しいフッター・テキストを表示するには、「監査情報」の横にある矢印をクリックします。

図5-15 フッター付き「監査情報」リージョン

「図5-15 フッター付き「監査情報」リージョン」の説明

図5-15に示すとおり、フッターのテキストはイタリック体のHTMLタグで囲まれ、埋込み改行を1つ含んでいます。手動で改行を行わない場合、(リージョン・テンプレートの定義に従って)リージョンの幅全体がテキストによって使用されます。

リージョンの条件付け

リージョンの条件付けを行うには、「Employee ID」がNULLでない場合にのみ表示されるように「監査情報」リージョンの表示条件を作成します。「Employee ID」は、トリガーによって設定されるため、データベースから取得されたレコードにのみ存在します。「監査情報」リージョンの表示は、「Employee ID」を含むアイテムの値(P2_EMP_ID)が存在するかどうかを確認する組込み条件を使用して制御できます。

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

1. ページ2のページ定義に移動します。

2. 「リージョン」で、「監査情報」を選択します。
リージョン定義が表示されます。

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

4. 「条件付き表示」で、次のステップを実行します。

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

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

P2_EMP_ID

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

ヒント・テキストを含むリージョンの追加

列および行にリージョンを表示するオプションがあります。次の演習では、別のリージョンを作成して、ユーザーに説明テキスト(ヒント)を表示する方法について説明します。

ヒント・テキストを表示するリージョンを作成するには、次のステップを実行します。

1. ページ2のページ定義に移動します。

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

3. 「リージョン」で、次のステップを実行します。

1. 「このページに追加するリージョン・タイプを指定」で、デフォルトの「HTML」を受け入れ、「次へ」をクリックします。

2. 「作成するHTMLリージョン・コンテナのタイプの選択」で、デフォルトの「HTML」を受け入れ、「次へ」をクリックします。

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

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

2. 「リージョン・テンプレート」で、「サイドバー・リージョン」を選択します。

3. 「表示ポイント」で、「ページ・テンプレートのリージョン位置3」を選択します。

4. 「順序」で、デフォルトを受け入れます。

5. 「列」で、「3」を選択します。

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

5. 「HTMLテキスト・リージョン・ソースを入力」で、次のように入力します。

Use this page to enter and<br/>
maintain employee information.

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

7. 「ページの実行」アイコンをクリックします。図5-16は、新しくページに作成した「Hint」リージョンを示します。

図5-16 「Hint」リージョン

「図5-16 「Hint」リージョン」の説明

アイテム・タイプの変更

次の演習では、ユーザーがデータ・エントリを簡単に行うことができるようにアイテム・タイプを変更する方法について説明します。アイテム・タイプを変更するには、「アイテム属性」ページに移動して、別の「表示形式」オプションを選択します。

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

- ラジオ・グループへのアイテムの変更

- 選択リストへのアイテムの変更

- チェック・ボックスへのアイテムの変更

ヒント:
簡単にするため、このチュートリアルではアイテム属性を編集してアイテムを変更します。ただし、名前付きLOVを作成して参照させることをお薦めします。

関連項目:
『Oracle Database Application Expressユーザーズ・ガイド』の「LOVの作成」

ラジオ・グループへのアイテムの変更

「Full-time」および「Part-time」アイテムの有効な選択肢は2つのみのため、このアイテムは、チェック・ボックスまたはラジオ・グループのいずれかに変更することをお薦めします。

「Full-time」および「Part-time」アイテムをラジオ・グループに変更するには、次のステップを実行します。

1. ページ2のページ定義に移動します。「開発者」ツールバーで「ページの編集2」をクリックします。

2. 「アイテム」で、「P2_EMP_PART_OR_FULL_TIME」を選択します。
「ページ・アイテムの編集」ページが表示されます。

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

4. 「ラベル」セクションに移動します。次のように指定します。

1. 「ラベル」で、「ラベル」フィールドのテキストを削除します。

2. 「テンプレート」で、「ラベルなし」を選択します。

5. 「LOV」で、静的LOVを作成します。次のように指定します。

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

2. 「LOV定義」に、次のように入力します。

STATIC:Full-time;F,Part-time;P

この定義は「Full-time」および「Part-time」というラベル付きの2つのラジオ・ボタンとして表示されますが、データベースに挿入される値はFまたはPのいずれかです。

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

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

図5-17 ラジオ・グループに変更された「Full-time」および「Part-time」アイテム

「図5-17 ラジオ・グループに変更された「Full-time」および「Part-time」アイテム」の説明

「Full-time」および「Part-time」が、1つの列に縦に並ぶラジオ・グループとして表示されていることに注意してください。これらのボタンは、横に並べて表示することができます。

「Full-time」および「Part-time」ラジオ・ボタンを横に並べて表示するには、次のステップを実行します。

1. ページ2のページ定義に移動します。

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

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

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

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

6. 「ページの実行」アイコンをクリックします。
有効な値(「Full-time」および「Part-time」)の数と一致するようにこの設定を変更すると、図5-18に示すように、これらの値が横に並んで表示されます。

図5-18 横に並べて表示された「Full-time」および「Part-time」アイテム

「図5-18 横に並べて表示された「Full-time」および「Part-time」アイテム」の説明

選択リストへのアイテムの変更

HT_EMP表の作成に使用したDDLでは、「Department」がチェック制約で検証されます。「Department」は、ラジオ・グループ、選択リストまたはポップアップLOVとして実装できます。

「Department」を選択リストに変更するには、次のステップを実行します。

1. ページ2のページ定義に移動します。「開発者」ツールバーで「ページの編集2」をクリックします。

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

3. 「名前」セクションの「表示形式」リストから、「選択リスト」を選択します。
選択リストの他の選択肢は、ユーザーを別のページまたは選択した内容に基づくURLにリダイレクトするため、あるいは選択リストで選択した内容に基づいて他の情報を取得する必要がある場合に使用するカレント・ページを送信するためのいずれかの目的で使用されます。

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

5. 「LOV」で、静的LOVを作成します。次のように指定します。

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

2. 「LOV定義」に、次のように入力します。

STATIC:SALES,ACCOUNTING,MANUFACTURING,HR

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

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

- No Assignment -

最後の2つのステップによって、EMP_DEPT列にNULLを含めることができるようになります。選択リストを実装し、NULLを指定できる列を含める場合は、常に、「NULLを表示」を「はい」に設定することをお薦めします。これを行わなかった場合、アイテムは、選択リストの最初のアイテムにデフォルトで設定されます。

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

7. 「ページの実行」アイコンをクリックします。
図5-19に示すとおり、更新されたフォームが表示されます。

図5-19 選択リストに変更された「Department」

「図5-19 選択リストに変更された「Department」」の説明

チェック・ボックスへのアイテムの変更

「Telecommute」アイテムには、チェック・ボックスを使用することをお薦めします。「表示タイプ」を変更する場合に、ページ上部の「Full-time」および「Part-time」ラジオ・グループの横に移動することもできます。

「Telecommute」をチェック・ボックスに変更するには、次のステップを実行します。

1. ページ2のページ定義に移動します。「開発者」ツールバーで「ページの編集2」をクリックします。

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

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

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

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

2. 「新しい行で開始」で、「はい」を選択します。

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

6. ラベルの位置をチェック・ボックスの前にするには、次のように指定します。

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

2. 「LOV定義」に、次のように入力します。

STATIC:;Y

このLOV定義では、チェック・ボックスはラベルの後に表示されますが、チェック・ボックスに関連付けられている値は表示されなくなります。チェック・ボックスを選択すると、データベースに渡される値はYになります。

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

8. 「ページの実行」アイコンをクリックします。
図5-20に示すとおり、「Telecommute」のチェック・ボックスが表示されます。

図5-20 チェック・ボックスに変更された「Telecommute」フィールド

「図5-20 チェック・ボックスに変更された「Telecommute」フィールド」の説明

ラベル・テンプレート

ラベル・テンプレートを使用して、アイテム・ラベルの外観を制御できます。現行のテーマと関連付けられているテンプレートをページ定義に表示できます。

現行のテーマと関連付けられているテンプレートを表示するには、次のステップを実行します。

1. ページ2のページ定義に移動します。「開発者」ツールバーで「ページの編集2」をクリックします。

2. 「共有コンポーネント」領域に移動すると、図5-21に示すように「テーマ」セクションが表示されます。

図5-21 テンプレートとテーマ

「図5-21 テンプレートとテーマ」の説明

現行のテーマは「ブルー」です。「テンプレート」セクションで、このテーマには「ヘルプ付きのオプションのラベル」と「ヘルプ付きの必須ラベル」の2つのラベル・テンプレートが含まれています。

ヘルプ付きの必須ラベル・テンプレートでは、アイテム・ラベルの左側に黄色いアスタリスクが追加されます。別のテンプレートを選択すると、アイテムの外観を変更できます。

別のラベル・テンプレートを作成するには、次のステップを実行します。

1. ページ2のページ定義に移動します。

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

3. 「ラベル」までスクロールして、「テンプレート」リストからテンプレートを選択します。

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

5. ページを実行します。

ボタンの変更

このチュートリアルでフォームを作成したウィザードによって、ボタンも作成されました。これらのボタンは、ページが新しいレコードの作成に使用されている(P2_EMP_IDがNULL)か、既存のレコードの更新に使用されているかに基づいて条件付きで表示されます。これらのボタンは、HTMLボタンとして作成され、リージョンの上部に配置されます。

これらのボタンは、リージョンの下部、ページ・タイトルの左または右、リージョンの上、リージョンの下またはリージョン・テンプレートに定義されている任意のボタン位置に配置することもできます。

ボタンの位置を変更するには、次のステップを実行します。

1. ページ2のページ定義に移動します。

2. 「ボタン」で、「ボタン」セクションの「すべて編集」アイコンをクリックします。「すべて編集」アイコンは、鉛筆が付いた小さいグリッドに似ています。

3. 「位置」列から新しい位置を選択します。

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

5. ページを実行します。

ボタンには、外観を調整するためにテンプレートを関連付けることもできます。

更新のためのページの実行

ページを実行して、取得する従業員IDを指定することができます。通常、これは、レポート・ページからのリンクを使用して実行しますが、この例では、ページを実行し、次の例に示すように、URLの末尾にP2_EMP_ID:1を追加します。

http://apex.oracle.com/pls/otn/f?p=9659:2:1284393467360777225::::P2_EMP_ID:1

これによって、アイテムP2_EMP_IDに値1が渡されます。ページを実行すると、図5-22に示すように、「削除」および「変更の適用」ボタンが表示されます。以前は、このページで新しいページを作成することが想定されていたため、「作成」ボタンが表示されていました。現在は、「Record Create Date」フィールドに値も表示されます。

図5-22 更新された更新フォーム

「図5-22 更新された更新フォーム」の説明

関連項目:
『Oracle Database Application Expressユーザーズ・ガイド』の「URL構文の理解」

データの太字強調

リージョン内の情報を読みやすくする方法の1つとして、ラベル(またはデータ)を強調する方法があります。これは、色の変更、別のフォントの使用または太字の使用によって行うことができます。ラベルを太字にするには、データを手動で太字にするか、または新しいラベル・テンプレートを作成することができます。後者の方法では、ラベルの前後を太字用のHTMLタグで囲む新しいラベル・テンプレートを作成し、そのテンプレートを「監査情報」リージョン内のアイテムに関連付けます。

データを手動で太字にするには、次のステップを実行します。

1. ページ2のページ定義に移動します。

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

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

4. 「HTMLフォームの要素属性」で、次のように入力します。

class="fielddatabold"

この例では、このアプリケーションに関連付けられたカスケード・スタイル・シート内のクラスを参照します。

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

6. ページを実行します。

6 チェック・ボックスの使用方法

Oracle Application Expressでは、チェック・ボックスをアイテムとして作成するか、またはレポート内に作成できます。フォームのチェック・ボックスは、LOVと同様に動作します。アイテムをチェック・ボックスとして定義する場合は、「アイテム属性」ページの「LOV」セクションにチェック・ボックス値を指定する必要があります。既存のファンクションAPEX_ITEM.CHECKBOXを使用して、レポートにチェック・ボックスを定義します。

このチュートリアルでは、チェック・ボックスを作成する様々な方法を説明し、チェック・ボックスの値を参照して処理する方法について説明します。チュートリアルを始める前に、必要なサンプル・データベース・オブジェクトにアクセスできるように、OEHR Sample Objectsアプリケーションをインポートしてインストールする必要があります。詳細は、「サンプル・オブジェクトのロード方法の概要」を参照してください。

この項には、次の項目が含まれます。

- アプリケーションの作成

- 更新フォームの編集

- レポートの表示の変更

- コンテンツをフィルタ処理するための複数値チェック・ボックスの作成

- レポートの各行へのチェック・ボックスの追加

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

- アプリケーションの作成および実行
http://www.oracle.com/technology/obe/hol08/apexintro/apex3.1.1_b/apex3.1.1_b_otn.htm

- Oracle Application Express 3.1での追加の新機能の使用
http://www.oracle.com/technology/obe/apex/apex31nf/apex31misc.htm

- 既存のアプリケーションへのコンポーネントの追加
http://www.oracle.com/technology/obe/hol08/apexintro/apex3.1.1_c/apex3.1.1_c_otn.htm

アプリケーションの作成

最初に、「アプリケーションの作成」ウィザードを使用してアプリケーションを作成する必要があります。

「アプリケーションの作成」ウィザードでアプリケーションを作成するには、次のステップを実行します。

1. 「ワークスペース」ホームページで、「アプリケーション・ビルダー」アイコンをクリックします。
「アプリケーション・ビルダー」ホームページが表示されます。

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

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

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

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

2. 「アプリケーション」で、デフォルトを受け入れます。

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

4. 「スキーマ」で、OEHR Sample Objectsをインストールしたスキーマを選択します。

5. 「次へ」をクリックします。
次に、ページを追加する必要があります。この演習では、レポートとフォームを追加します。

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

1. 「ページ・タイプの選択」で、「レポートとフォーム」を選択します。

2. 「表名」で、「OEHR_PRODUCT_INFORMATION」を選択します。

3. 「ページの追加」をクリックします。
ページ上部のリストに、新しい2つのページが表示されます。各ページに同じページ名が付いていることに注意してください。次に、ページ名をわかりやすい名前に編集します。

6. ページ1の名前を編集するには、次のステップを実行します。

1. 図6-1に示すように、ページ上部にあるページ1の横の「OEHR_PRODUCT_INFORMATION」をクリックします。

図6-1 「アプリケーションの作成」ウィザードの「ページ名」

「図6-1 「アプリケーションの作成」ウィザードの「ページ名」」の説明

2. 「ページ名」で、既存のテキストをProduct Reportに置き換えます。

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

7. ページ2の名前を編集するには、次のステップを実行します。

1. 図6-1に示すページの上部にあるページ2の横の「OEHR_PRODUCT_INFORMATION」をクリックします。

2. 「ページ名」で、既存のテキストを更新フォームに置き換えます。

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

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

9. 「タブ」で、デフォルトの「1レベルのタブ」を受け入れて「次へ」をクリックします。

10. 「別のアプリケーションから共有コンポーネントのコピー」で、デフォルトの「いいえ」を受け入れて「次へ」をクリックします。

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

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

13. 選択内容を確認して、「作成」をクリックします。
「アプリケーション」ホームページが表示されます。

アプリケーションの実行

次に、アプリケーションを実行して確認を行います。

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

1. 図6-2に示す「アプリケーションの実行」アイコンをクリックします。

図6-2 「アプリケーションの実行」アイコン

「図6-2「アプリケーションの実行」アイコン」の説明

2. ユーザー名およびパスワードを入力するように要求されたら、ワークスペースのユーザー名およびパスワードを入力して、「ログイン」をクリックします。詳細は、「アプリケーション認証の概要」を参照してください。
アプリケーションが表示されます。レポートには、製品情報を表示する11の列が含まれています。左端の列にある「編集」アイコンをクリックすると、更新フォームにリンクできます。

3. 特定の製品の横にある「編集」アイコンをクリックします。図6-3に示すとおり、更新フォームが表示されます。

図6-3 更新フォーム

「図6-3 更新フォーム」の説明

更新フォームの編集

作成中のアプリケーションのページ2は、更新フォームです。この演習では、フォームを変更して「Warranty Period」フィールドを非表示にし、新しくチェック・ボックスを作成します。

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

- 「Warranty Period」フィールドの非表示化

- 新しいチェック・ボックスの追加

「Warranty Period」フィールドの非表示化

最初に、「表示形式」属性を変更し、「Warranty Period」フィールドを非表示にします。

「Warranty Period」フィールドを非表示にするには、次のステップを実行します。

1. 「開発者」ツールバーで「ページの編集2」をクリックします。
ページ2のページ定義が表示されます。

2. 「アイテム」セクションまでスクロールします。

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

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

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

新しいチェック・ボックスの追加

この演習では、製品の最低価格を定価の75%に自動設定するチェック・ボックスを作成します。

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

- 新しいアイテムの追加

- プロセスの作成

- チェック・ボックスとして表示するためのアイテムの編集

ヒント:
簡単にするため、このチュートリアルではアイテム属性を編集してチェック・ボックスを作成します。ただし、名前付きLOVを作成して参照させることをお薦めします。

関連項目:
『Oracle Database Application Expressユーザーズ・ガイド』の「LOVの作成」

新しいアイテムの追加

はじめに、新しいアイテムを追加します。最初はこのアイテムをラジオ・グループとして表示されるように作成し、後からチェック・ボックスに変更します。

ラジオ・グループとして表示されるアイテムを追加するには、次のステップを実行します。

1. ページ2のページ定義の「アイテム」までスクロールします。

2. 「アイテム」で、図6-4に示す「作成」アイコンをクリックします。

図6-4 「作成」アイコン

「図6-4 「作成」アイコン」の説明

3. 「アイテム・タイプ」で、「ラジオ」を選択して「次へ」をクリックします。

4. 「ラジオ・グループ制御タイプ」で、「ラジオ・グループ」を選択して「次へ」をクリックします。

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

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

2. 「順序」に、9.5と入力します。
この順序により、アイテムの位置がP2_MIN_PRICEアイテム(「Minimum Price」フィールド)の下に指定されます。

3. 「リージョン」で、「更新フォーム」を選択します。

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

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

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

2. 「NULLオプションの表示」で、「いいえ」を選択します。

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

STATIC:Yes;Y,No;N

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

7. 「アイテム属性」で、次のステップを実行します。

1. 「ラベル」で、既存のテキストをSet Minimum Priceに置き換えます。

2. 残りのデフォルトを受け入れます。

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

8. 「ソース」で、次のステップを実行します。

1. 「アイテム・ソース」で、「SQL問合せ」を選択します。

2. 「アイテム・ソース値」に、次のように入力します。

SELECT 'Y' FROM DUAL WHERE :P2_LIST_PRICE*0.75=:P2_MIN_PRICE

3. 残りのデフォルトを受け入れて「アイテムの作成」をクリックします。

プロセスの作成

次に、最低価格を定価の25%引きに設定するページ・プロセスを作成します。

ページ・プロセスを作成するには、次のステップを実行します。

1. ページ2のページ定義で、「ページ・プロセス」領域に移動します。

2. 「プロセス」で、「作成」アイコンをクリックします。

3. 「プロセス・タイプ」で、「PL/SQL」を選択して「次へ」をクリックします。

4. 「プロセス属性」で、次のステップを実行します。

1. 「名前」に、Update Min Priceと入力します。

2. 「順序」で、デフォルトを受け入れます。

3. 「ポイント」で、「送信時 - 計算および検証の後」を選択します。

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

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

1. 次の内容を入力します。

UPDATE oehr_product_information
SET MIN_PRICE=(:P2_LIST_PRICE*0.75)
WHERE PRODUCT_ID=:P2_PRODUCT_ID;

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

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

1. 「成功メッセージ」に、次のように入力します。

Product successfully updated.

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

Unable to update this product. Contact your system administrator.

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

7. 「プロセス条件」で、次のステップを実行します。

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

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

P2_SET_MIN_PRICE

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

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

ページの実行

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

1. 右上にある「ページの実行」アイコンをクリックします。

2. ユーザー名およびパスワードを入力するように要求されたら、ワークスペースのユーザー名およびパスワードを入力して、「ログイン」をクリックします。詳細は、「アプリケーション認証の概要」を参照してください。
図6-5に示すとおり、更新されたフォームが表示されます。「Warranty Period」フィールドは表示されなくなり、新しく「Set Minimum Price」ラジオ・グループが表示されています。

図6-5 「Set Minimum Price」ラジオ・グループ付きの更新フォーム

「図6-5 「Set Minimum Price」ラジオ・グループ付きの更新フォーム」の説明

チェック・ボックスとして表示するためのアイテムの編集

次に、「Set Minimum Price」ラジオ・グループ(P2_SET_MIN_PRICE)をチェック・ボックスとして表示するように変更します。

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

1. 「開発者」ツールバーで「ページの編集2」をクリックします。
ページ2のページ定義が表示されます。

2. 「アイテム」で、「P2_SET_MIN_PRICE」をクリックします。

3. 「表示形式」から、「チェックボックス」を選択します。

4. 「ラベル」までスクロールします。「ラベル」で、既存のテキスト(Set Minimum Price)を削除します。

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

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

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

2. 「LOV定義」に、次のように入力します。

STATIC: <b> Set Minimum Price</b><br/> (25% Discount on List Price);Y

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

ページの実行

ページを実行するには、右上にある「ページの実行」アイコンをクリックします。図6-6に示すとおり、更新されたフォームが表示されます。新しく追加された「Set Minimum Price」チェック・ボックスを確認してください。

図6-6 「Set Minimum Price」チェック・ボックス付きの更新フォーム

「図6-6 「Set Minimum Price」チェック・ボックス付きの更新フォーム」の説明

レポートの表示の変更

レポート属性を編集して、レポートの表示方法を変更できます。この演習では、ページ1に表示される列の数を変更してから、2つの列の書式を通貨記号が含まれるように変更します。

ページ1のレポート属性を編集するには、次のステップを実行します。

1. 「開発者」ツールバーで「アプリケーション」をクリックします。
「アプリケーション」ホームページが表示されます。

2. 「1 - Product Report」をクリックします。
ページ1のページ定義が表示されます。

3. 図6-7に示すように、「リージョン」で、「レポート」リンクをクリックします。

図6-7 「レポート」リンク

「図6-7 「レポート」リンク」の説明

「レポート属性」ページが表示されます。このページを使用して、レポート・レイアウトを詳細に制御することができます。最初に、表示する列の数を変更します。

4. 次の列の「表示」チェック・ボックスの選択を解除します。

- Weight Class

- Warranty Period

- Supplier ID

次に、List Price列およびMin Price列を編集して、通貨記号が含まれるようにします。

5. List Price列を編集するには、次のステップを実行します。

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

2. 「数値/日付書式」から、「$5,234.10」を選択します。

3. ページ上部にある「次へ」(>)アイコンをクリックします。
「次へ」アイコンをクリックすると変更が送信され、次の列「Min Price」の属性が表示されます。

6. 「Min Price」列を編集するには、次のステップを実行します。

1. 「数値/日付書式」から、「$5,234.10」を選択します。
例を選択すると書式が選択されるようになっています。ただし、実際にフィールドに表示される値はOracle数値書式です。

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

7. 右上にある「ページの実行」アイコンをクリックします。
更新されたレポートが表示されます。「Weight Class」、「Warranty Period」および「Supplier ID」列は表示されなくなり、「List Price」と「Min Price」列には通貨記号が含まれています。

コンテンツをフィルタ処理するための複数値チェック・ボックスの作成

次の演習では、「Product Report」ページの検索フィールド(P1_REPORT_SEARCH)を、複数値チェック・ボックスに変更します。このチェック・ボックスに変更することで、ユーザーは製品カテゴリ(obsolete、orderable、planned、under development)を使用してレポートをフィルタ処理できるようになります。

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

- 検索フィールドの複数値チェック・ボックスへの変更

- レポートのリージョン定義の編集

- デフォルトのチェック・ボックスの動作の変更

- チェック・ボックスの太字表示への変更

検索フィールドの複数値チェック・ボックスへの変更

検索フィールドをチェック・ボックスに変更するには、次のステップを実行します。

1. 「開発者」ツールバーで「ページの編集1」をクリックします。
ページ1のページ定義が表示されます。

2. 「アイテム」で、「P1_REPORT_SEARCH」をクリックします。

3. 「表示形式」から、「チェックボックス」を選択します。

4. 「ラベル」までスクロールします。「ラベル」で、既存のテキストを削除してProduct Statusに置き換えます。

5. 「ソース」までスクロールします。「ソース値または式」に、次のように入力します。

obsolete:orderable:planned:under development

6. 「LOV」までスクロールします。次のように指定します。

1. 「名前付きLOV」で、デフォルトを受け入れます。

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

3. 「LOV定義」に、次のように入力します。

SELECT DISTINCT product_status display_value, product_status return_value
FROM oehr_product_information
ORDER BY 1

注意:
複数値チェック・ボックスを作成するには、LOB問合せで複数の行が戻される必要があることに注意してください。

7. ページの上部の「変更の適用」をクリックします。
ページ1のページ定義が表示されます。

レポートのリージョン定義の編集

レポートのリージョン定義を編集するには、次のステップを実行します。

1. 「リージョン」で、「Product Report」をクリックします。
リージョン定義が表示されます。

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

3. 「ソース」で、WHERE句を次のように変更します。

...
WHERE  instr(':'||:P1_REPORT_SEARCH||':',product_status)> 0

4. ページの上部の「変更の適用」をクリックします。
ページ1のページ定義が表示されます。

5. ページの上部の「変更の適用」をクリックします。
ページ1のページ定義が表示されます。

デフォルトのチェック・ボックスの動作の変更

ページ1のコンテンツは、「Product Status」チェック・ボックスによって正しくフィルタ処理されますが、すべてのチェック・ボックスを選択解除すると、すべての製品がレポートに表示されることに注意してください。チェック・ボックスをNULL値にする(選択解除する)と、デフォルト値Yが設定されるため、この動作が発生します。デフォルト値Yによって、チェック・ボックスが有効になります。この動作は、チェック・ボックスの状態を追跡する計算を追加して変更できます。チェック・ボックスの状態を追跡する計算を追加するには、次のステップを実行します。

1. 「ページ・プロセス」の「計算」で、「作成」アイコンをクリックします。
「ページ計算の作成」ウィザードが表示されます。

2. 「アイテムの位置」で、「このページのアイテム」を選択して「次へ」をクリックします。

3. 「アイテム」で、次の各項目を指定します。

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

2. 「順序」で、デフォルトを受け入れます。

3. 「計算ポイント」で、「送信後」を選択します。

4. 「計算タイプ」で、「静的割当て」を選択します。

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

4. 「計算」に、次のように入力します。

1. 次のように入力します。

none(bogus_value)

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

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

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

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

P1_REPORT_SEARCH

6. 「作成」をクリックします。
ページ1のページ定義が表示されます。

7. 右上にある「ページの実行」アイコンをクリックします。「Product Status」チェック・ボックスはページ上部に表示されています。

チェック・ボックスの太字表示への変更

次に、チェック・ボックスの表示値(ラベル)が太字で表示されるように編集します。

チェック・ボックスの表示値(ラベル)が太字で表示されるように編集するには、次のステップを実行します。

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

2. 「アイテム」で、「P1_REPORT_SEARCH」をクリックします。

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

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

class="fielddatabold"

「フォーム要素オプション属性」は、チェック・ボックスおよびラジオ・ボタン専用で、Application Engineエンジンによる個のオプションのレンダリング方法を制御します。

5. 「変更の適用」をクリックします。
ページ1のページ定義が表示されます。

レポートの各行へのチェック・ボックスの追加

次の演習では、「Product Report」の各行に削除チェック・ボックスを追加します。これを行うには、レポート問合せを編集してAPEX_ITEMパッケージをコールする必要があります。

APEX_ITEMは、特定のアイテムを動的に生成するために提供されているパッケージです。ここでは、APEX_ITEM.CHECKBOXを使用して「Product Report」にチェック・ボックスを生成します。ページを送信すると、チェック・ボックスの値がグローバル・パッケージ配列に格納されます。これらの値は、渡されたp_idxパラメータ値に基づいてPL/SQL変数APEX_APPLICATION.G_F01からAPEX_APPLICATION.G_F50を使用して参照できます。

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

- APEX_ITEM.CHECKBOXのコール

- チェック・ボックス配列値を送信するボタンの追加

- プロセスの追加

関連項目:
『Oracle Database Application Expressユーザーズ・ガイド』の「APEX_ITEM」

APEX_ITEM.CHECKBOXのコール

APEX_ITEM.CHECKBOXをコールするように問合せを編集するには、次のステップを実行します。

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

2. 「リージョン」で、「Product Report」をクリックします。

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

4. 「リージョン・ソース」で、太字で示されている新しい行を問合せに追加します。

SELECT
"product_id",
apex_item.checkbox(1,product_id) del,
"product_name",
"product_description",
"category_id",
"weight_class",
"warranty_period",
"supplier_id",
"product_status",
"list_price",
"min_price",
"catalog_url"
FROM   "oehr_product_information"
WHERE  instr(':'||:p1_report_search||':',product_status)> 0

APEX_ITEMは、特定のアイテムを動的に生成する場合に使用可能なOracle Application Expressで提供されるパッケージです。前述の例で、p_idxに渡される値は1であることに注意してください。後で、チェック・ボックスの値を参照するには、グローバル変数APEX_APPLICATION.G_F01を使用します。

Oracle Application Expressによって、列リストの最後に自動的に新しい行が追加されます。次に、DEL列を移動する必要があります。

5. ページ上部までスクロールして「レポート属性」タブを選択します。

6. 「列属性」で、DEL列を検索します。

7. DEL列がPRODUCT_IDのすぐ下になるまで、右側の上矢印をクリックします。(図6-8を参照。)

図6-8 「レポート列属性」ページ

「図6-8 「レポート列属性」ページ」の説明

8. 「変更の適用」をクリックします。
ページ1のページ定義が表示されます。

チェック・ボックス配列値を送信するボタンの追加

チェック・ボックス配列値を送信するボタンを追加するには、次のステップを実行します。

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

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

3. 「ボタン・リージョン」で、「Product Report (1)」を選択して「次へ」をクリックします。

4. 「位置」で、「リージョン位置にボタンの作成」を選択して「次へ」をクリックします。

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

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

2. 「ラベル」に、Delete Productsと入力します。

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

6. 「ボタン・テンプレート」で、デフォルトの選択内容を受け入れて「次へ」をクリックします。

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

1. 「位置」で、「リージョンの上部」を選択します。

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

8. 「ブランチ」で、「1 Product Report」を選択して「ボタンの作成」をクリックします。

プロセスの追加

「Delete Products」ボタンをクリックすると実行されるプロセスを追加するには、次のステップを実行します。

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

2. 「プロセス・タイプ」で、「PL/SQL」を選択して「次へ」をクリックします。

3. 「プロセス属性」で、次のステップを実行します。

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

2. 「順序」で、デフォルトを受け入れます。

3. 「ポイント」で、「送信時 - 計算および検証の後」を選択します。

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

4. 次のPL/SQLプロセスを入力して「次へ」をクリックします。

FOR i in 1..APEX_APPLICATION.G_F01.count
LOOP
DELETE FROM oehr_product_information
WHERE product_id = APEX_APPLICATION.G_F01(i);
END LOOP;

APEX_ITEMは、特定のアイテムを動的に生成する場合に使用可能なOracle Application Expressで提供されるパッケージです。ページを送信すると、各列の値がグローバル・パッケージ配列に格納され、これらの値はPL/SQL変数APEX_APPLICATION.G_F01からAPEX_APPLICATION.G_F50を使用して参照できます。この演習では、product_idに渡される値は1であるため、グローバル変数APEX_APPLICATION.G_F01を使用してこの列の値を参照することになります。

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

1. 「成功メッセージ」に、次のように入力します。

Product(s) deleted.

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

Unable to delete product(s).

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

7. ページを実行します。
図6-9に示されるように、「Delete Products」ボタンはレポートの上部に表示されることに注意してください。レポートから製品を削除するには、「Del」チェック・ボックスを選択して「Delete Products」をクリックします。

図6-9 「Delete Products」チェック・ボックス付きの「Product Report」

「図6-9 「Delete Products」チェック・ボックス付きの「Product Report」」の説明

7 Webサービスの実装方法

Webサービスを使用すると、プラットフォームおよび言語に依存しない環境で、Webを介したアプリケーション間の通信が可能になります。典型的なWebサービスの使用例には、ビジネス・アプリケーションでHTTPプロトコルを使用して、指定したURLのサービスにリクエストを送信することがあります。サービスは、リクエストを受信すると、これを処理し、レスポンスを返します。外部Webサービスとのコールは、Oracle Application Expressで開発したアプリケーション内に組み込むことができます。

Oracle Application ExpressのWebサービスは、SOAP(Simple Object Access Protocol)に基づいています。SOAPは、World Wide Web Consortium(W3C)が策定した、インターネットを介したリクエストとレスポンスの送受信用の標準プロトコルです。SOAPメッセージは、サービス・プロバイダとサービス・ユーザー間でSOAPエンベロープに入れて送受信できます。

Webサービスは、次の方法でOracle Application Expressアプリケーション内からコールします。

- Universal Description, Discovery, and Integration(UDDI)レジストリを使用する方法

- WSDL URLを手動で指定する方法

このチュートリアルでは、2つ目の方法について説明します。

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

- Webサービス参照の作成

- 新しいアプリケーションの作成

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

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

- 手動によるWebサービス参照の作成

注意:
SOAP 1.1仕様はW3C覚書です。(SOAPより優先される標準を作成するために、W3C XML Protocol Working Groupが結成されています。)
Simple Object Access Protocol(SOAP)1.1については、次のWebサイトを参照してください。

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

関連項目:
『Oracle Database Application Expressユーザーズ・ガイド』の「Webサービスの実装」

Webサービス参照の作成

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

- WSDLドキュメントへのURLを指定します。続いてウィザードによってWSDLを分析し、有効なSOAPメッセージの作成に必要なすべての情報を収集します。
このウィザードでは、Universal Description, Discovery, and Integration(UDDI)レジストリを使用してWSDLを検索できるステップが提供されます。UDDIレジストリは、企業のWebサービスを登録するディレクトリです。ユーザーは、サービス名または企業名を入力してWSDLを検索します。

- SOAPリクエスト・エンベロープなどのWeb参照との通信方法に関連する情報を指定して、手動でWeb参照を作成します。

このチュートリアルでは、2つ目の方法(手動によるWebサービス参照の作成)について説明します。

新しいアプリケーションの作成

最初に、新しいアプリケーションを作成します。

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

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

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

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

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

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

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

5. 次のステップで空白ページを追加します。

1. 「ページ・タイプの選択」で、デフォルトの「空白」を受け入れます。

2. 「ページ名」に、Web Servicesと入力して「ページの追加」をクリックします。
ページ上部のリストに、新しいページが表示されます。

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

6. 「タブ」で、デフォルトの「1レベルのタブ」を受け入れて「次へ」をクリックします。

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

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

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

10. 選択内容を確認して、「作成」をクリックします。

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

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

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

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

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

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

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

4. 「変更の適用」をクリックします。
「アプリケーション」ホームページが表示されます。

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

この演習では、WebサービスにWSDLドキュメントの位置を指定して、Webサービスを作成します。その後で、映画館と場所を表示するためのフォームとレポートを作成します。

注意:
次の演習は、最終的に起動される指定したWebサービスの可用性によって異なります。Webサービスを使用できない場合、この演習を行う際に問題が発生する可能性があります。

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

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

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

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

4. WSDLを検出するためにUDDIレジストリを検索するかどうかを尋ねるプロンプトが表示されたら、「いいえ」を選択して「次へ」をクリックします。

1. 「WSDLの位置」フィールドに、次のように入力します。
http://www.ignyte.com/webservices/ignyte.whatsshowing.webservice/moviefunctions.asmx?wsdl

2. 「次へ」をクリックします。
選択したWebサービスについて説明するサマリー・ページが表示されます。

5. 「参照の作成」をクリックします。
「Webサービス参照の作成」ページが表示されます。MovieInformationに対するWebサービス参照がWebサービス参照リポジトリに追加されます。

フォームとレポートの作成

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

8. ログインするように要求されたら、ワークスペースのユーザー名およびパスワードを入力して「ログイン」をクリックします。
図7-1に示すようなフォームとレポートが表示されます。ページの上部にある「Theater Information」フォームには、データ・エントリ・フィールドおよび「送信」ボタンがありますが、「Results」レポートにはデータがありません。

図7-1 「Theater Information」フォームとデータのないレポート

「図7-1 「Theater Information」フォームとデータのないレポート」の説明

9. フォームをテストするには、「ZIP Code」フィールドに43221、「Radius」フィールドに5と入力します。続いて、「送信」をクリックします。
ページの下部にあるレポートは、図7-2のようになります。レポートには、「ZIP code」および「radius」の値が、入力された値と一致する映画館の名前と住所が表示されます。

図7-2 結果データが表示された「Theater Information」レポート

「図7-2 結果データが表示された「Theater Information」レポート」の説明

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

この演習では、Webサービスに関する情報を指定し、手動のファシリティを使用してWeb参照を作成します。手動によるWeb参照は、WSDLドキュメントを目視で確認し、Webサービス・リクエスト用のSOAPエンベロープを特定するツールを使用して作成します。

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

- 手動によるWebサービス参照の作成

- Webサービスのテスト

- 手動Webサービスをコールするためのページの作成

- 「送信」ボタンの作成

- 「ZIP Code」および「Radius」用のアイテムの作成

- 手動作成されたWeb参照をコールするためのプロセスの作成

- Webサービスの結果のレポートの作成

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

Web参照を手動で作成するには、MovieInformationというサービス用のWSDLからコードをコピーします。

次のステップで説明する設定例は、このドキュメントがリリースされた時点でのMovieInformationサービスに基づいていることに注意してください。

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

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

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

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

4. 「UDDIの検索」で、「いいえ」を選択して「次へ」をクリックします。

5. 右側にある「タスク」リストから、「Webサービス参照の手動作成」リンクをクリックします。
「Webサービスの作成/編集」ページが表示されます。

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

7. 次のステップを実行して、MovieInformationサービスのエンドポイントを検出します。

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

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

2. WSDLで、soap:addressエレメントのlocation属性を見つけます(これはportエレメントの子です)。コード内でsoap:address locationという語を検索できます。
このリリースの時点では、属性の値は次のようになっていました。

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

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

9. GetTheatersAndMovies操作に対するSOAPアクションを検索するには、次のステップを実行します。

1. 必要に応じて、再度、WSDLを開きます。ステップ7aを参照してください。

2. WSDLで、soap:operationエレメントのsoapAction属性を見つけます(これはGetTheatersAndMoviesの名前属性を持つ操作エレメントの子です)。コード内でsoap:operation soapActionという語を検索できます。
このリリースの時点では、属性の値は次のようになっていました。

http://www.ignyte.com/whatsshowing/GetTheatersAndMovies

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

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

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

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

12. 「コレクションにレスポンスを格納」フィールドに、MOVIE_RESULTSと入力します。これは、Webサービスからのレスポンスが格納される場所です。
「Webサービスの作成/編集」ページは、図7-3のようになります。

図7-3 「Webサービスの作成/編集」ページ

「図7-3 「Webサービスの作成/編集」ページ」の説明

13. 「作成」をクリックします。
「Webサービス参照」ページが表示され、リストには「Movie Info」が表示されます。

Webサービスのテスト

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

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

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

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

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

4. 「結果」フィールドで、レスポンスについて次の各項目を確認します。

- リターン・エンベロープのベース・ノードに次のような名前が付いている。

GetTheatersAndMoviesResponse

- メッセージの名前空間が次のようになっている。

http://www.ignyte.com/whatsshowing

- 結果要素に表示されたレスポンスの該当部分へのXPathが次のようになっている。

/GetTheatersAndMoviesResponse/GetTheatersAndMoviesResult/Theater/Movies/Movie

- 結果内の該当する要素に、次のような名前が付いている。

Name
Rating
RunningTime
ShowTimes

手動Webサービスをコールするためのページの作成

次に、手動Webサービスをコールするためのページを作成します。

手動Webサービスをコールするためのページを作成するには、次のステップを実行します。

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

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

3. 「ページ」で、「空白ページ」を選択して「次へ」をクリックします。

4. 「ページ番号」のデフォルト値を受け入れて、「次へ」をクリックします。

5. 「名前」にFind Moviesと入力して、「次へ」をクリックします。

6. 「タブ」で、デフォルトの「いいえ」を受け入れて「次へ」をクリックします。

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

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

9. ページ定義で、「リージョン」セクションに移動します。

10. 「作成」アイコンをクリックします。

11. 「リージョン」で、「HTML」を選択して「次へ」をクリックします。

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

13. 「タイトル」フィールドに、Movie Informationと入力して「次へ」をクリックします。

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

「送信」ボタンの作成

次に、このページから検索を開始するための「送信」ボタンをリージョンに追加します。

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

1. ページ定義で、「ボタン」セクションにある「作成」アイコンをクリックします。

2. 「ボタン・リージョン」でデフォルトの「Movie Information」を受け入れて、「次へ」をクリックします。

3. 「ボタン位置」で、デフォルトの「リージョン位置にボタンを作成」を受け入れて「次へ」をクリックします。

4. 「ボタン属性」の「ボタン名」に送信と入力して、「次へ」をクリックします。

5. 「ボタン・テンプレート」で、デフォルトの「ボタン」を受け入れて、「次へ」をクリックします。

6. 「表示プロパティ」で、「位置」リストから「リージョン・テンプレートの位置の#CREATE#」を選択して「次へ」をクリックします。

7. 「ページにブランチ」フィールドで、リストから「Find Movies」を選択します。フィールドにページ番号が表示されます。

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

「ZIP Code」および「Radius」用のアイテムの作成

次に、ユーザーが検索したい用語を入力できるアイテムを2つ作成します。

「ZIP Code」アイテムを作成するには、次のステップを実行します。

1. 「Find Movies」のページ定義で、「アイテム」セクションにある「作成」アイコンをクリックします。

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

3. 「テキスト制御の表示タイプ」で、デフォルトの「テキスト・フィールド」を受け入れて「次へ」をクリックします。

4. 「表示位置および名前」で、次のように指定します。

1. 「アイテム名」に、ZIPと入力します。
Movie Info Webサービス参照では、SOAPリクエストで送信される郵便番号を#ZIP#と定義しています。このため、「アイテム名」には、Webサービスに送信されるSOAPリクエストにその値が代入されるように、ZIPと指定する必要があります。

2. 「リージョン」で、デフォルトのMovie Informationを受け入れます。

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

5. 「ラベル」フィールドの既存のテキストをZIP Codeに置き換え、「次へ」をクリックします。

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

「Radius」アイテムを作成するには、次のステップを実行します。

1. 「Find Movies」のページ定義で、「アイテム」セクションにある「作成」アイコンをクリックします。

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

3. 「テキスト制御の表示タイプ」で、デフォルトの「テキスト・フィールド」を受け入れて「次へ」をクリックします。

4. 「表示位置および名前」で、次のように指定します。

1. 「アイテム名」に、RADIUSと入力します。
Movie Info Webサービス参照では、SOAPリクエストで送信される区域を#RADIUS#と定義しています。このため、「アイテム名」には、Webサービスに送信されるSOAPリクエストにその値が代入されるように、RADIUSと指定する必要があります。

2. 「リージョン」で、デフォルトのMovie Informationを受け入れます。

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

5. 「ラベル」フィールドに、Radiusと入力して「次へ」をクリックします。

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

手動作成されたWeb参照をコールするためのプロセスの作成

次に、手動で作成したWeb参照をコールするプロセスを作成します。

手動で作成したWeb参照をコールするプロセスを作成するには、次のステップを実行します。

1. 「Find Movies」のページ定義で、「プロセス」セクションにある「作成」アイコンをクリックします。

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

3. 「名前」フィールドに、Call Movie Infoと入力して「次へ」をクリックします。

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

5. 「成功メッセージ」領域に、Called Movie Infoと入力します。

6. 「失敗メッセージ」領域にError calling Movie Infoと入力して、「次へ」をクリックします。

7. 「対象ボタン」リストから「送信」を選択して、「プロセスの作成」をクリックします。

Webサービスの結果のレポートの作成

次に、コールされたWebサービスの結果を表示するレポートを追加します。

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

1. 「Find Movies」のページ定義で、「リージョン」セクションにある「作成」アイコンをクリックします。

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

3. 「リージョン」で、「Webサービスの結果を含むコレクションのレポート」を選択して、「次へ」をクリックします。

4. 「タイトル」フィールドに、Search Resultsと入力して「次へ」をクリックします。

5. 「Web参照タイプ」で、「手動で作成済」を選択して、「次へ」をクリックします。

6. 「Web参照情報」で、次の各項目を指定します。

1. 「Webサービス参照」で、リストから「Movie Info」を選択します。

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

3. 「メッセージの書式」で、「リテラル」を選択します。
これらの2つの属性は、サービスのWSDLドキュメントを手動で確認することにより特定できます。

4. 「結果ノード・パス」に、次のように入力します。

/GetTheatersAndMoviesResponse/GetTheatersAndMoviesResult/Theater/Movies/Movie

5. 「メッセージの名前空間」に、次のように入力します。

http://www.ignyte.com/whatsshowing

「結果ノード・パス」および「メッセージの名前空間」は、両方とも、サービスをテストしたときに確認が完了しています。

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

7. 「パラメータ名」の最初の4箇所に、Name、Rating、RunningTimeおよびShowTimesと入力して、「SQLレポートの作成」をクリックします。

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

1. 「ページの実行」をクリックします。ログインするように要求されたら、ワークスペースのユーザー名およびパスワードを入力します。図7-4に示すような、「Movie Information」フォームが表示されます。

図7-4 データのない「Movie Information」フォーム

「図7-4 データのない「Movie Information」フォーム」の説明

2. 「ZIP Code」および「Radius」フィールドに情報を入力して、「送信」をクリックします。
「Search Results」領域に結果が表示されます。

8 積上げ棒グラフの作成方法

積上げ棒グラフには、複数の問合せの結果が重なって(縦または横のいずれかに)積み上げられて表示されます。積上げ棒グラフは、各棒のセグメントで表されるデータ・ポイントの絶対値、および棒に積み上げられた各シリーズのデータ・ポイントで表される合計値を示す場合に使用すると有効です。

アプリケーション・ビルダーには、HTML、Scalable Vector Graphics(SVG)およびFlashチャートを生成するための組込みウィザードが含まれますが、積上げ棒グラフがサポートされているのはSVGおよびFlashチャートのみです。

このチュートリアルでは、Flash積上げ棒グラフの作成方法を説明します。チュートリアルを始める前に、必要なサンプル・データベース・オブジェクトにアクセスできるように、OEHR Sample Objectsアプリケーションをインポートしてインストールする必要があります。詳細は、「サンプル・オブジェクトのロード方法の概要」を参照してください。

この項には、次の項目が含まれます。

- チャートの問合せを作成するための構文

- アプリケーションの作成

- 新しいページの作成

- シリーズの追加

- サンプル・データの更新

- チャートの表示

- チャート属性の編集

関連項目:
『Oracle Database Application Expressユーザーズ・ガイド』の「チャートの作成」

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

- Oracle Application Express 3.1での追加の新機能の使用
http://www.oracle.com/technology/obe/apex/apex31nf/apex31misc.htm

- 既存のアプリケーションへのコンポーネントの追加
http://www.oracle.com/technology/obe/hol08/apexintro/apex3.1.1_c/apex3.1.1_c_otn.htm

チャートの問合せを作成するための構文

チャートのSELECT構文は次のとおりです。

SELECT link, label, value
FROM   ...

各要素の意味は次のとおりです。

- linkはURLです。結果として生成されたチャートでユーザーがここをクリックすると、このURLがコールされます。

- labelはバー内に表示されるテキストです。

- valueはバーのサイズを定義する数値列です。

SELECT構文には、3つすべてのアイテムを指定する必要があります。次の例では、該当するリンク先ページがないため、リンクはNULLと定義されます。

次に例を示します。

SELECT null link,
last_name label,
salary value
FROM   employees
WHERE  DEPARTMENT_ID = :P101_DEPARTMENT_ID

関連項目:
『Oracle Database Application Expressユーザーズ・ガイド』の「チャートの作成」

アプリケーションの作成

最初に、「アプリケーションの作成」ウィザードを使用してアプリケーションを作成します。

「アプリケーションの作成」ウィザードでアプリケーションを作成するには、次のステップを実行します。

1. 「ワークスペース」ホームページで、「アプリケーション・ビルダー」アイコンをクリックします。
「アプリケーション・ビルダー」ホームページが表示されます。

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

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

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

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

2. 「アプリケーション」で、デフォルトを受け入れます。

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

4. 「スキーマ」で、OEHR Sample Objectsをインストールしたスキーマを選択します。

5. 「次へ」をクリックします。
次に、ページを追加する必要があります。ここでは、空白ページ、レポート、フォーム、表形式フォームまたはレポートおよびフォームを追加できます。この演習では、空白ページを1枚追加します。

5. 次のステップで空白ページを追加します。

1. 「ページ・タイプの選択」で「空白」を選択し、「ページの追加」をクリックします。
ページ上部のリストに、新しいページが表示されます。

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

6. 「タブ」で、デフォルトの「1レベルのタブ」を受け入れて「次へ」をクリックします。

7. 「別のアプリケーションから共有コンポーネントのコピー」で、デフォルトの「いいえ」を受け入れて「次へ」をクリックします。

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

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

10. 選択内容を確認して、「作成」をクリックします。
「アプリケーション」ホームページが表示されます。

新しいページの作成

チャートを作成する場合は、リージョンを既存のページに追加して積上げ棒グラフとして定義するか、または新しいページを作成することができます。この演習では、作成した「Bar Chart」アプリケーション内に新しいページを作成します。

このチャートには、売上に対する製品カテゴリの合計が表示されます。先月以前の過去12か月の売上が含まれます。次の演習では、ウィザードを使用してチャートおよび1つ目の問合せを作成します。その後、他の製品カテゴリへの問合せ(またはシリーズ)を追加して積み上げます。

関連項目:
「チャートの問合せを作成するための構文」

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

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

2. 「ページ」で、「チャート」を選択して「次へ」をクリックします。

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

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

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

2. 「ページ名」に、Revenue by Categoryと入力します。

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

4. 「リージョン名」に、Revenue by Categoryと入力します。

5. 「ブレッドクラム」で、デフォルトを受け入れます。

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

5. 「タブ・オプション」で、デフォルトの「タブを使用しない」を受け入れて「次へ」をクリックします。
「チャート・プレビュー」が表示されます。「チャート・プレビュー」を使用して、チャート属性を構成します。「更新」をクリックすると、プレビューのイメージがリフレッシュされます。

6. 「チャート・プレビュー」で、次の項目を指定します。

1. 「チャート・タイプ」で、「Stacked 3D Column」を選択します。

2. 「凡例の表示」で、「右」を選択します。

3. 「更新」をクリックします。
プレビューが変更されます。

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

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

1. 次の問合せを入力します。

SELECT NULL link,
sales_month value,
revenue "Hardware"
FROM (
SELECT TO_CHAR(o.order_date,'Mon YY') sales_month,
SUM(oi.quantity * oi.unit_price) revenue,
TO_DATE(to_char(o.order_date,'Mon YY'),'Mon YY') sales_month_order
FROM OEHR_PRODUCT_INFORMATION p,
OEHR_ORDER_ITEMS oi,
OEHR_ORDERS o,
OEHR_CATEGORIES_TAB ct
WHERE o.order_date <= (trunc(sysdate,'MON')-1)
AND o.order_date > (trunc(sysdate-365,'MON'))
AND o.order_id = oi.order_id
AND oi.product_id = p.product_id
AND p.category_id = ct.category_id
AND ct.category_name like '%hardware%'
GROUP BY TO_CHAR(o.order_date,'Mon YY')
ORDER BY sales_month_order
)

値のラベル(この例では、Hardware)が積上げグラフの凡例に表示されます。

ヒント:
「問合せの作成」をクリックすると、対話形式でチャート問合せを作成できます。

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

No orders found in the past 12 months.

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

8. 選択内容を確認して、「終了」をクリックします。
「成功」ページが表示されます。

シリーズの追加

問合せを定義するリージョンが指定されたページを作成したので、次はシリーズを追加する必要があります。次の演習では、ソフトウェアおよび事務用品のカテゴリにシリーズを追加します。

シリーズを追加するには、次のステップを実行します。

1. 「成功」ページで、「ページの編集」をクリックします。
ページ2のページ定義が表示されます。

2. 「リージョン」で、「Revenue by Category」の横にある「Flashチャート」をクリックします。
「チャート属性」タブが選択された状態で「Flashチャート」ページが表示されます。「チャート・シリーズ」までスクロールします。1つのシリーズのみが表示されていることを確認します。

3. 既存のシリーズの名前を変更するには、次のステップを実行します。

1. 「編集」アイコンをクリックします。

2. 「シリーズ名」に、Hardwareと入力します。

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

4. ソフトウェアのチャート・シリーズを追加します。

1. 「チャート・シリーズ」にスクロールして、「シリーズの追加」をクリックします。

2. 「シリーズ名」に、Softwareと入力します。

3. 「シリーズ問合せ」までスクロールします。

4. SQLで、次のように入力します。

SELECT NULL link,
sales_month value,
revenue "Software"
FROM (
SELECT TO_CHAR(o.order_date,'Mon YY') sales_month,
SUM(oi.quantity * oi.unit_price) revenue,
TO_DATE(to_char(o.order_date,'Mon YY'),'Mon YY') sales_month_order
FROM OEHR_PRODUCT_INFORMATION p,
OEHR_ORDER_ITEMS oi,
OEHR_ORDERS o,
OEHR_CATEGORIES_TAB ct
WHERE o.order_date <= (trunc(sysdate,'MON')-1)
AND o.order_date > (trunc(sysdate-365,'MON'))
AND o.order_id = oi.order_id
AND oi.product_id = p.product_id
AND p.category_id = ct.category_id
AND ct.category_name like '%software%'
GROUP BY TO_CHAR(o.order_date,'Mon YY')
ORDER BY sales_month_order
)

値のラベル(この例では、Software)が積上げグラフの凡例に表示されます。このSQLが以前のシリーズと一致するようにしてください。唯一の違いは、WHERE句内のカテゴリです。

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

No orders found in the past 12 months.

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

5. 事務用品のチャート・シリーズを追加します。

1. 「チャート・シリーズ」で、「シリーズの追加」をクリックします。

2. 「シリーズ名」に、Office Equipmentと入力します。

3. 「シリーズ問合せ」までスクロールします。

4. SQLで、次のように入力します。

SELECT NULL link,
sales_month value,
revenue "Office Equipment"
FROM (
SELECT TO_CHAR(o.order_date,'Mon YY') sales_month,
SUM(oi.quantity * oi.unit_price) revenue,
TO_DATE(to_char(o.order_date,'Mon YY'),'Mon YY') sales_month_order
FROM OEHR_PRODUCT_INFORMATION p,
OEHR_ORDER_ITEMS oi,
OEHR_ORDERS o,
OEHR_CATEGORIES_TAB ct
WHERE o.order_date <= (trunc(sysdate,'MON')-1)
AND o.order_date > (trunc(sysdate-365,'MON'))
AND o.order_id = oi.order_id
AND oi.product_id = p.product_id
AND p.category_id = ct.category_id
AND ct.category_name like '%office%'
GROUP BY TO_CHAR(o.order_date,'Mon YY')
ORDER BY sales_month_order
)

値のラベル(この例では、Office Equipment)が積上げグラフの凡例に表示されます。

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

No orders found in the past 12 months.

6. ページ上部までスクロールして「変更の適用」をクリックします。

サンプル・データの更新

OEHR Sample Objectsアプリケーションとともにインストールされたサンプル・データは、最新ではありません。データを最新にするには、サンプル・データの日付を更新する必要があります。これは、SQLコマンドで更新文を実行して行います。

関連項目:
『Oracle Database Application Expressユーザーズ・ガイド』の「SQLコマンドの使用」

シード・データの日付を更新するには、次のステップを実行します。

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

2. 「ワークスペース」ホームページで「SQLワークショップ」をクリックして、「SQLコマンド」をクリックします。
「SQLコマンド」ページが表示されます。

3. 「SQLエディタ」ペインに、次のように入力します。

DECLARE
l_date_offset  number;
BEGIN

FOR c1 IN (SELECT TRUNC(max(order_date)) max_date
FROM oehr_orders)
LOOP
l_date_offset := round(sysdate - c1.max_date);
END LOOP;
UPDATE oehr_orders
set order_date = order_date + l_date_offset;
COMMIT;
END;
/

4. 「実行」(Ctrl+Enter)をクリックしてコマンドを実行します。

チャートの表示

完成したチャートは、表示できます。

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

1. 次の手順を実行して、ページ2「Revenue by Category」に戻ります。

1. ページ上部の「ホーム」ブレッドクラム・リンクをクリックします。

2. 「アプリケーション・ビルダー」をクリックし、演習で作成した「Bar Chart」アプリケーションをクリックします。

3. 「2 - Revenue by Category」をクリックします。

2. ページの右上にある「ページの実行」アイコンをクリックします。

3. ユーザー名およびパスワードを入力するように要求されたら、ワークスペースのユーザー名およびパスワードを入力して、「ログイン」をクリックします。詳細は、「アプリケーション認証の概要」を参照してください。
図8-1のような棒グラフが表示されます。

図8-1 「Revenue by Category」積上げ棒グラフ

「図8-1「Revenue by Category」積上げ棒グラフ」の説明

このチャートには、各製品カテゴリの月ごとの収益が表示されています。ページ上部に、各製品と対応する色を定義する説明が表示されています。X軸のテキストの間隔が狭いことに注意してください。次の項では、チャート属性を編集してこの問題を修正します。

チャート属性の編集

この演習では、チャート属性を編集して、チャートの外観を変更します。

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

1. 「開発者」ツールバーで「ページの編集2」をクリックします。

2. 「リージョン」で、「Flashチャート」をクリックします。
「チャート属性」ページが表示されます。

3. 「チャート設定」で、チャート幅を編集します。「チャート幅」に、800と入力します。

4. 「表示設定」までスクロールします。「アニメーション」で、「ディゾルブ」を選択します。

5. 「軸の設定」までスクロールします。「グループ・セパレータの表示」で、「はい」を選択します。

6. 「フォント設定」までスクロールします。「X軸のタイトル」で、「フォント・サイズ」に「10」を選択します。

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

8. ページの右上にある「ページの実行」アイコンをクリックします。
図8-2のようなチャートが表示されます。

図8-2 更新された積上げ棒グラフ

「図8-2 更新された積上げ棒グラフ」の説明

画面上にディゾルブを使用したチャートが次々に表示されます。X軸が適切に表示されていることを確認します。

9 アプリケーション内のファイルのアップロードおよびダウンロード方法

Oracle Application Expressアプリケーションには、データベースに格納されているファイルをアップロードおよびダウンロードする機能があります。このチュートリアルでは、ファイルのアップロードおよびダウンロード用のリンクを持つフォームおよびレポートの作成方法、ドキュメントに関する追加属性を格納する表の作成および移入方法、カスタム表にドキュメントをダウンロードするメカニズムの作成方法について説明します。

この項には、次の項目が含まれます。

- アプリケーションの作成

- アップロード・フォームの作成

- ダウンロード・リンクを持つレポートの作成

- ドキュメントに関する追加属性の格納

- カスタム表へのドキュメントの格納

- カスタム表からのドキュメントのダウンロード

- 考慮する必要があるセキュリティ上の問題

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

- Oracle Application Express 3.1でのBLOBデータの定義および表示
http://www.oracle.com/technology/obe/apex/apex31nf/apex31blob.htm

アプリケーションの作成

最初に、ページ1にアップロード・フォームを含めると想定して、「アプリケーションの作成」ウィザードを使用して新しいアプリケーションを作成します。

「アプリケーションの作成」ウィザードでアプリケーションを作成するには、次のステップを実行します。

1. 「ワークスペース」ホームページで、「アプリケーション・ビルダー」アイコンをクリックします。
「アプリケーション・ビルダー」ホームページが表示されます。

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

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

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

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

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

5. 次のステップで空白ページを追加します。

1. 「ページ・タイプの選択」で「空白」を選択し、「ページの追加」をクリックします。
ページ上部の「アプリケーションの作成」リストに、新しいページが表示されます。

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

6. 「タブ」で、デフォルトの「1レベルのタブ」を受け入れて「次へ」をクリックします。

7. 「別のアプリケーションから共有コンポーネントのコピー」で、デフォルトの「いいえ」を受け入れて「次へ」をクリックします。

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

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

10. 選択内容を確認して、「作成」をクリックします。
「アプリケーション」ホームページが表示されます。

アップロード・フォームの作成

アプリケーションを作成した後、次のステップでは、ドキュメントをアップロードするフォームを作成します。次の演習では、HTMLリージョンに、ファイルのアップロード・アイテムとボタンが含まれるフォームを作成します。ボタンによって、ページが送信され、ユーザーが同じページに戻されます。

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

- HTMLリージョンの作成

- アップロード・アイテムの作成

- ボタンの作成

HTMLリージョンの作成

最初に、フォームを保持するコンテナを作成する必要があります。アプリケーション・ビルダーでは、このコンテナはリージョンと呼ばれます。

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

1. 「ページ1」アイコンをクリックします。
ページ定義が表示されます。

2. 図9-1に示すように、「リージョン」で、「作成」アイコンをクリックします。

図9-1 「作成」アイコン

「図9-1 「作成」アイコン」の説明

3. 「リージョン」で、次のステップを実行します。

1. 「このページに追加するリージョン・タイプを指定」で、デフォルトの「HTML」を受け入れ、「次へ」をクリックします。

2. 「作成するHTMLリージョン・コンテナのタイプの選択」で、デフォルトの「HTML」を受け入れ、「次へ」をクリックします。

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

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

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

5. 残りのデフォルトを受け入れて「リージョンを作成」をクリックします。
ページ定義が表示されます。

アップロード・アイテムの作成

次に、テキスト・フィールドまたはアイテムを作成する必要があります。アプリケーション・ビルダーでは、アイテムは、HTMLフォームの一部です。アイテムは、テキスト・フィールド、テキスト領域、パスワード、選択リスト、チェック・ボックスなどを示します。次の演習では、ファイル参照アイテムを作成します。ファイル参照アイテムを作成すると、アップロードしたファイルはwwv_flow_file_objects$と呼ばれる表に格納されます。

ファイルのアップロード・アイテムを作成するには、次のステップを実行します。

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

2. 「アイテム・タイプ」で、「ファイル参照」を選択して「次へ」をクリックします。

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

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

2. 「順序」で、デフォルトを受け入れます。

3. 「リージョン」で、「Submit File」を選択します。

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

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

5. 「アイテムの作成」をクリックします。
ページ定義が表示されます。

ボタンの作成

次に、ファイルを送信するボタンを作成する必要があります。

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

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

2. 「ボタン・リージョン」で、「ファイルの送信 (1) 1」を選択して「次へ」をクリックします。

3. 「ボタン位置」で、「リージョン位置にボタンを作成」を選択して「次へ」をクリックします。

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

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

2. 残りのデフォルトを受け入れます。

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

5. 「ボタン・テンプレート」で、デフォルトを受け入れて「次へ」をクリックします。

6. 「表示プロパティ」で、デフォルトを受け入れて「次へ」をクリックします。

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

1. 「ページにブランチ」で、「ページ1」を選択します。
このように選択すると、送信によって別のページにナビゲートされるのではなく、このページ自体がコールされます。

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

8. 図9-2に示すように、「ページの実行」アイコンをクリックしてページを実行します。

図9-2 「ページの実行」アイコン

「図9-2「ページの実行」アイコン」の説明

9. ユーザー名およびパスワードを入力するように要求されたら、ワークスペースのユーザー名およびパスワードを入力して、「ログイン」をクリックします。詳細は、「アプリケーション認証の概要」を参照してください。

ページを実行すると、図9-3のように表示されます。

図9-3 ファイルの送信フォーム

「図9-3 ファイルの送信フォーム」の説明

ダウンロード・リンクを持つレポートの作成

ドキュメントをアップロードするフォームを作成したら、次のステップでは、アップロードされたドキュメントへのリンクを含むドキュメント表のレポートを作成します。ファイル参照アイテムを使用すると、アップロードしたファイルはwwv_flow_file_objects$と呼ばれる表に格納されます。すべてのワークスペースは、APEX_APPLICATION_FILESと呼ばれるビューを介した、この表へのアクセス権を所有しています。

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

- APEX_APPLICATION_FILESのレポートの作成

- ドキュメントをダウンロードするリンクの追加

APEX_APPLICATION_FILESのレポートの作成

APEX_APPLICATION_FILESのレポートを作成するには、次のステップを実行します。

1. ページ下部の「開発者」ツールバーの「ページの編集1」をクリックします。
ページ定義が表示されます。

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

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

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

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

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

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

6. 「ソース」で、次のSQL問合せを入力します。

SELECT id,name FROM APEX_APPLICATION_FILES

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

8. ページを実行します。

図9-4のようなレポートが表示されます。どのファイルをアップロードしたかによって、表示される内容が多少異なる場合があります。

図9-4 「Uploaded Files」レポート

「図9-4 「Uploaded Files」レポート」の説明

ドキュメントをダウンロードするリンクの追加

次に、各ドキュメントをダウンロードするリンクを設定する必要があります。

ドキュメントをダウンロードするリンクをレポートに設定するには、次のステップを実行します。

1. 「開発者」ツールバーで「ページの編集1」をクリックします。

2. 図9-5に示すように、「リージョン」で、「Uploaded Files」の横にある「レポート」をクリックします。

図9-5 「レポート」リンク

「図9-5 「レポート」リンク」の説明

「レポート属性」ページが表示されます。「列属性」を編集してID列にリンクを追加できます。

3. 「列属性」で、ID行内の「編集」アイコンをクリックします。

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

5. 「列リンク」で、次のステップを実行します。

1. 「リンク・テキスト」で、「#ID#」を選択します。

2. 「ターゲット」で、「URL」を選択します。

3. 「URL」フィールドに、次のように入力します。

p?n=#ID#

#ID#は、列のエイリアスがIDである列に含まれる値を渡します。

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

7. ページを実行します。
ページを実行すると、図9-6のように表示されます。

図9-6 ダウンロード・リンク付きの「Uploaded Files」レポート

「図9-6 ダウンロード・リンク付きの「Uploaded Files」レポート」の説明

8. リンクをテストするには、IDをクリックします。
「ファイルのダウンロード」ダイアログ・ボックスが表示されます。

9. 「開発者」ツールバーの「ページの編集1」をクリックして、ページ定義に戻ります。

ドキュメントに関する追加属性の格納

次に、アップロードするドキュメントに関する追加情報を格納する別の表を作成します。この例では、次のステップを実行します。

- 情報を取得するためのアイテムをアップロード・フォームに追加します。

- ファイル名とともに、この情報を挿入するプロセスを追加します。

- アップロード済ファイルのSQLレポートを変更して、追加情報を含む表に結合します。

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

- ドキュメント属性を格納する表の作成

- ドキュメントの件名を取得するアイテムの作成

- 情報を挿入するプロセスの作成

- レポート・リージョン内の追加属性の表示

ドキュメント属性を格納する表の作成

最初に、「SQLコマンド」に表を作成します。

関連項目:
『Oracle Database Application Expressユーザーズ・ガイド』の「SQLコマンドの使用」

アップロード済ファイルに関する追加情報を格納する表を作成するには、次のステップを実行します。

1. 「SQLコマンド」に移動します。

1. 図9-7に示すように、ページ上部の「ホーム」ブレッドクラム・リンクをクリックします。

図9-7 ブレッドクラム・メニュー

「図9-7 ブレッドクラム・メニュー」の説明

「ワークスペース」ホームページが表示されます。

2. 「ワークスペース」ホームページで「SQLワークショップ」をクリックして、「SQLコマンド」をクリックします。
「SQLコマンド」ページが表示されます。

2. 上部のセクションに、次のように入力します。

CREATE TABLE oehr_file_subject
(name     VARCHAR2(4000) primary key,
subject  VARCHAR2(4000));

3. 「実行」をクリックします。
「Table created」というメッセージが「結果」セクションに表示されます。

4. 「ホーム」ブレッドクラム・リンクをクリックします。
「ワークスペース」ホームページが表示されます。

ドキュメントの件名を取得するアイテムの作成

ドキュメントの件名を取得するアイテムを作成するには、次のステップを実行します。

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

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

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

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

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

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

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

4. 「テキスト制御の表示タイプ」で、「テキスト・フィールド」を選択して「次へ」をクリックします。

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

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

2. 「順序」で、デフォルトを受け入れます。

3. 「リージョン」で、「Uploaded Files」を選択します。

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

6. 「アイテム属性」で、次のステップを実行します。

1. 「ラベル」フィールドに、Subjectと入力します。

2. 残りのデフォルトを受け入れます。

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

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

情報を挿入するプロセスの作成

次に、件名情報を新しい表に挿入するプロセスを作成する必要があります。

プロセスを作成するには、次のステップを実行します。

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

2. 「プロセス・タイプ」で、「PL/SQL」を選択して「次へ」をクリックします。

3. 「プロセス属性」で、次のステップを実行します。

1. 「名前」に、Insert file descriptionと入力します。

2. 「順序」で、デフォルトを受け入れます。

3. 「ポイント」で、「送信時 - 計算および検証の後」を選択します。

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

4. 「PL/SQLページ・プロセスの入力」に、次のように入力します。

INSERT INTO oehr_file_subject(name, subject) VALUES(:P1_FILE_NAME,:P1_SUBJECT);

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

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

1. 「成功メッセージ」に、次のように入力します。

Subject inserted

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

Error inserting subject

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

7. 「プロセス条件」で、次のステップを実行します。

1. 「対象ボタン」で、「送信」を選択します。

2. 残りのデフォルトを受け入れて「プロセスの作成」をクリックします。

レポート・リージョン内の追加属性の表示

最後に、SQLレポート・リージョンを変更して追加属性表に結合する必要があります。これを行うには、「リージョン定義」ページで「リージョン・ソース」属性を編集します。

「リージョン・ソース」を編集するには、次のステップを実行します。

1. 「リージョン」で、「Uploaded Files」をクリックします。
リージョン定義が表示されます。

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

3. リージョン・ソースを次と置き換えます。

SELECT w.id,w.name,s.subject
FROM APEX_APPLICATION_FILES w,oehr_file_subject s
WHERE w.name = s.name

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

5. ページを実行します。

6. 「参照」をクリックしてアップロードするファイルを検索し、「送信」をクリックします。
図9-8に示すように、「Uploaded Files」レポートには、Subject列が表示されるようになります。

図9-8 Subject列が表示されている「Uploaded Files」レポート

「図9-8 Subject列が表示されている「Uploaded Files」レポート」の説明

7. 「開発者」ツールバーの「ページの編集1」をクリックして、ページ定義に戻ります。

カスタム表へのドキュメントの格納

アップロード済ドキュメントを自分のスキーマが所有する表に格納する場合があります。たとえば、アップロード済ドキュメントにOracle Text索引を作成する場合、ドキュメントはカスタム表に格納する必要があります。

カスタム表にドキュメントを格納するには、次のステップを実行します。

- ドキュメントを格納するBLOB型の列を追加します。

- プロセスを変更して、カスタム表にドキュメントを挿入します。

BLOB列をoehr_file_subject表に追加するには、次のステップを実行します。

1. 「SQLコマンド」に移動します。

1. ページ上部の「ホーム」ブレッドクラム・リンクをクリックします。
「ワークスペース」ホームページが表示されます。

2. 「ワークスペース」ホームページで「SQLワークショップ」をクリックして、「SQLコマンド」をクリックします。
「SQLコマンド」ページが表示されます。

2. 上部のセクションに、次のSQL文を入力します。

ALTER TABLE oehr_file_subject ADD(id number,blob_content BLOB,mime_type varchar2(4000) );

3. 「実行」をクリックします。
「Table Altered」というメッセージが表示されます。

4. ページ上部の「ホーム」ブレッドクラム・リンクをクリックします。

oehr_file_subject表にドキュメントが挿入されるようにプロセスを変更するには、次のステップを実行します。

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

2. 「Download App」をクリックします。

3. 「ページ1」をクリックします。

4. 「プロセス」で、「Insert file description」リンクをクリックします。

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

6. 「ソース」で、プロセスを次のコードと置き換えます。

IF ( :P1_FILE_NAME is not null ) THEN
INSERT INTO oehr_file_subject(id,NAME, SUBJECT, BLOB_CONTENT, MIME_TYPE)
SELECT ID,:P1_FILE_NAME,:P1_SUBJECT,blob_content,mime_type
FROM APEX_APPLICATION_FILES
WHERE name = :P1_FILE_NAME;
DELETE from APEX_APPLICATION_FILES WHERE name = :P1_FILE_NAME;
END IF;

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

カスタム表からのドキュメントのダウンロード

ドキュメントがカスタム表に格納されるようになると、ドキュメントをダウンロードする方法を指定する必要があります。これを行うには、プロシージャを作成して、そのプロシージャに対する実行権限を擬似ユーザーAPEX_PUBLIC_USERに付与します。

これを実行するには、次の内容を変更する必要があります。

- APEX_APPLICATION_FILESビューに結合されなくなったSQLレポート・リージョン

- SQLレポートのID列に指定されたURL(以前のプロシージャを実行するかわりに、新しいプロシージャを実行するため)

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

- ドキュメントをダウンロードするためのプロシージャの作成

- 「Uploaded Files」リージョンの編集

- 新規プロシージャを使用するためのダウンロード・リンクの変更

ドキュメントをダウンロードするためのプロシージャの作成

oehr_file_subject表からのドキュメントのダウンロード、およびpublicへの実行権限の付与を行うプロシージャを作成するには、次のステップを実行します。

1. 「SQLコマンド」に移動します。

1. ページ上部の「ホーム」ブレッドクラム・リンクをクリックします。
「ワークスペース」ホームページが表示されます。

2. 「ワークスペース」ホームページで「SQLワークショップ」をクリックして、「SQLコマンド」をクリックします。
「SQLコマンド」ページが表示されます。

2. 次のSQL文を入力します。

CREATE OR REPLACE PROCEDURE download_my_file(p_file in number) AS
v_mime  VARCHAR2(48);
v_length  NUMBER;
v_file_name VARCHAR2(2000);
Lob_loc  BLOB;
BEGIN
SELECT MIME_TYPE, BLOB_CONTENT, name,DBMS_LOB.GETLENGTH(blob_content)
INTO v_mime,lob_loc,v_file_name,v_length
FROM oehr_file_subject
WHERE id = p_file;
--
-- set up HTTP header
--
-- use an NVL around the mime type and
-- if it is a null set it to application/octect
-- application/octect may launch a download window from windows
owa_util.mime_header( nvl(v_mime,'application/octet'), FALSE );

-- set the size so the browser knows how much to download
htp.p('Content-length: ' || v_length);
-- the filename will be used by the browser if the users does a save as
htp.p('Content-Disposition:  attachment; filename="'||replace(replace(substr(v_file_name,instr(v_file_name,'/')+1),chr(10),null),chr(13),null)|| '"');
-- close the headers
owa_util.http_header_close;
-- download the BLOB
wpg_docload.download_file( Lob_loc );
end download_my_file;
/

3. 「実行」をクリックします。
「Procedure Created」というメッセージが表示されます。

次に、別のSQL文を実行します。

4. 「SQLワークショップ」ブレッドクラム・リンクをクリックして、「SQLコマンド」をクリックします。
「SQLコマンド」ページが表示されます。

5. 上部のセクションで、既存のSQL文を次のように置き換えます。

GRANT EXECUTE ON download_my_file TO PUBLIC/

6. 「実行」をクリックします。
「Statement processed」というメッセージが表示されます。

7. ページ上部の「ホーム」ブレッドクラム・リンクをクリックして、「ワークスペース」ホームページに戻ります。

「Uploaded Files」リージョンの編集

SQLレポート・リージョンを変更して、APEX_APPLICATION_FILESビューと結合しないようにするには、次のステップを実行します。

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

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

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

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

2. 「リージョン」で、「Uploaded Files」をクリックします。

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

4. リージョン・ソースを次と置き換えます。

SELECT s.id,s.name,s.subject FROM oehr_file_subject s

5. 「変更の適用」をクリックします。
ページ定義が表示されます。

新規プロシージャを使用するためのダウンロード・リンクの変更

次に、PL/SQL download_my_fileプロシージャをコールするためのダウンロード・リンクを変更する必要があります。

注意:
Application ExpressをDatabase 11gで使用している場合は、この項の説明に従ってPL/SQLプロシージャをコールするのではなく、「埋込みPL/SQLゲートウェイ用の「ダウンロード」ページの作成」で説明されているステップを実行してください。

ダウンロード・リンクを変更して、新しいダウンロード・プロシージャを使用するには、次のステップを実行します。

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

2. ID行で、「編集」アイコンをクリックします。

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

4. 「URL」フィールドで、既存のURLを次のように置き換えます。

#OWNER#.download_my_file?p_file=#ID#

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

- #OWNER#は、カレント・アプリケーションを解析しているスキーマです。

- download_my_fileは、作成した新しいプロシージャです。

- 列IDの値をパラメータp_fileに渡します。

5. 「変更の適用」をクリックします。
ページ定義が表示されます。

埋込みPL/SQLゲートウェイ用の「ダウンロード」ページの作成

通常、Oracle Database 11gのApplication Expressに対しては、埋込みPL/SQLゲートウェイが含まれているOracle XML DB HTTP Serverが使用されます。「新規プロシージャを使用するためのダウンロード・リンクの変更」で説明されているように、実行可能なプロシージャのリストに示されていないPL/SQLプロシージャをURLから直接コールすると、エラー・メッセージが表示されます。

この状況を回避するために使用可能な方法は2つあります。1つ目の方法は、PL/SQL download_my_fileプロシージャが含まれるようにPL/SQLファンクションWWV_FLOW_EPG_INCLUDE_MOD_LOCALを変更してから再コンパイルする方法です。2つ目の方法は、次に示すように、PL/SQL download_my_fileプロシージャへのヘッダー前ブランチが含まれているページをアプリケーションに作成する方法です。その後、このページに、ダウンロードするドキュメントのドキュメントIDに対する非表示アイテムを作成します。

2つ目の方法を行うには、次の操作を実行する必要があります。

- PL/SQLプロシージャdownload_my_fileへのヘッダー前ブランチが含まれているページの作成

- 新しいページを使用してファイルを表示するためのダウンロード・リンクの変更

PL/SQLプロシージャdownload_my_fileへのヘッダー前ブランチが含まれているページを作成するには、次のステップを実行します。

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

2. 「空白ページ」を選択して「次へ」をクリックします。

3. 「ページ番号」に2と入力して、「次へ」をクリックします。

4. 「名前」にDownload Fileと入力して、「次へ」をクリックします。

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

6. 「終了」をクリックします。
「成功」ページが表示されます。

7. 「ページの編集」アイコンをクリックします。
ページ2のページ定義が表示されます。

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

9. 「リージョン」で、次のステップを実行します。

1. 「このページに追加するリージョン・タイプを指定」で、デフォルトの「HTML」を受け入れ、「次へ」をクリックします。

2. 「作成するHTMLリージョン・コンテナのタイプの選択」で、デフォルトの「HTML」を受け入れ、「次へ」をクリックします。

10. 「表示属性」で、次の各項目を指定します。

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

2. 残りのデフォルト値を受け入れます。

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

11. 「リージョンの作成」をクリックします。
ページ2のページ定義が表示されます。ページ上部に「リージョンが作成されました。」という確認メッセージが表示されます。

12. ページ2のページ定義の「アイテム」で、「作成」アイコンをクリックします。

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

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

15. 「アイテム名」で、P2_DOC_IDと入力して「次へ」をクリックします。

16. 「ソース」で、すべてのデフォルトを受け入れて「アイテムの作成」をクリックします。
ページ2のページ定義が表示されます。

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

18. 「ブランチ・ポイント」リストで、「ロード時: ヘッダーの前」を選択します。

19. 「ブランチ・タイプ」で、「PL/SQLプロシージャにブランチ」を選択して「次へ」をクリックします。

20. コールするPL/SQLプロシージャを指定するテキスト・ボックスに、download_my_file(:P2_DOC_ID)と入力します。

21. 「ブランチ条件」で、デフォルト値を受け入れて「ブランチの作成」をクリックします。
ページ2のページ定義が表示されます。

「ダウンロード表示」ページに表示するためのダウンロード・リンクの変更

1. 「ページ1」アイコンをクリックします。
ページ1のページ定義が表示されます。

2. 「リージョン」で、「Uploaded Files」の横にある「レポート」をクリックします。
「レポート属性」ページが表示されます。

3. 「列属性」で、ID行内の「編集」アイコンをクリックします。

4. 「列リンク」までスクロールして、次のステップを実行します。

5. 「列リンク」で、次のステップを実行します。

1. 「ターゲット」で、「このアプリケーションのページ」を選択します。

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

3. 「アイテム1の名前」に、P2_DOC_IDと入力します。

4. 「アイテム1の値」に、#ID#と入力します。

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

7. アプリケーションを実行します。

考慮する必要があるセキュリティ上の問題

このチュートリアルで構築するアプリケーションでは、プロシージャdownload_my_fileを起動するダウンロード・リンクが提供されます。この方法には、注意の必要があるセキュリティ上の問題があります。

自分のプロシージャを、他のユーザーが、提供されているリンクをクリックするか、またはWebブラウザの「アドレス」(または「ロケーション」)フィールドに同様のURLを入力して起動することができます。好奇心旺盛なユーザーまたは悪意のあるユーザーは、任意のファイルIDをp_file引数として渡してdownload_my_fileプロシージャを試行する可能性があることに注意してください。ハッカーは、合法または非合法の手段を用いて表に存在するファイルIDを特定できます。さらに、ハッカーは、IDが表内のファイルに一致してファイルがプロシージャによってダウンロードされるまで、機械化された攻撃で連続してIDを送信できます。

不正アクセスからデータを保護するための対策は、次の要因によって異なります。

- ハッカーがファイルをダウンロードした場合の損害の程度。

- 攻撃と、その攻撃に対する制御のコストおよび問題とのバランス。

アプリケーションを保護するために使用可能な方法の1つとして、プロシージャ内からOracle Application ExpressのいずれかのセキュリティAPIをコールしてユーザーがすでに認証されていることを確認する方法があります。たとえば、コードのブロックを、最初に実行されるようにプロシージャに含めることができます。次に例を示します。

-- Assuming your application's numeric ID is 100, set g_flow_id to
--     that value, otherwise change the value as required.
--
APEX_APPLICATION.G_FLOW_ID := 100;

IF NOT wwv_flow_custom_auth_std.is_session_valid then
--
--
-- display this message or a custom message.
--
htp.p('Unauthorized access - file will not be retrieved.');
--
-- You can do whatever else you need to here to log the
--     unauthorized access attempt, get the requestor's
--     IP address, send email, etc.
--
RETURN;
END IF;

10 アプリケーションへのJavaScriptの組込み方法

Webデプロイメントのすべてのメリットを失わずに、クライアント/サーバー・アプリケーションと同等の機能を追加する最も有効な方法は、JavaScriptをWebアプリケーションに追加する方法です。Oracle Application Expressには、JavaScript追加専用に設計された複数の組込みインタフェースが含まれています。

ただし、JavaScriptは、データ集中型の検証には適していないことに注意してください。たとえば、名前が大規模データベース表内に含まれていることを検証するには、大容量のHTMLドキュメントを作成して、すべてのレコードをクライアントにプルダウンする必要があります。通常、複雑な操作には、JavaScriptではなくサーバー・サイドOracle Application Express検証の方がより適しています。

このチュートリアルでは、JavaScriptの使用例と、アプリケーションにそれらを実装する方法の詳細を説明します。

この項には、次の項目が含まれます。

- JavaScriptファンクションの組込み方法の理解

- JavaScriptを使用したアイテムの参照

- ボタンからのJavaScriptのコール

- フォーム要素の値の変更

- クライアント側のJavaScript検証の作成

- フォーム要素の有効化および無効化

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

- アプリケーションへのJavaScriptの組込み
http://www.oracle.com/technology/obe/hol08/apexweb20/javascript_otn.htm

- アプリケーションでのAJAXの使用
http://www.oracle.com/technology/obe/hol08/apexweb20/ajax_otn.htm

JavaScriptファンクションの組込み方法の理解

JavaScriptファンクションを組み込む場所は、主に2つあります。

- ページの「HTMLヘッダー」属性内

- ページ・テンプレートで参照される.jsファイル内

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

- 「HTMLヘッダー」属性へのJavaScriptの統合

- ページ・テンプレートによって参照される.jsファイルへのJavaScriptの挿入

「HTMLヘッダー」属性へのJavaScriptの統合

JavaScriptをアプリケーションに含める方法の1つとして、JavaScriptをページのHTMLヘッダー属性に追加する方法があります。これは、ページに固有のファンクションに有効な方法で、ファンクションを.jsファイルに組み込む前にテストを行う有効な方法でもあります。

「ページ属性」ページの「HTMLヘッダー」属性にコードを入力すると、JavaScriptファンクションをページに追加できます。

HTMLヘッダー属性にJavaScriptコードを追加するには、次のステップを実行します。

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

2. アプリケーションを選択します。
「アプリケーション」ホームページが表示されます。このページには、一連の関連ページが表示されます。

3. ページをクリックします。
そのページのページ定義が表示されます。

4. 「ページ」セクションで、「ページ属性の編集」アイコンをクリックします。
「ページの編集」が表示されます。

5. 「HTMLヘッダー」セクションまでスクロールします。

6. 「HTMLヘッダー」に、コードを入力して「変更の適用」をクリックします。

たとえば、次のコードを追加すると、カレント・ページのすべての場所からアクセス可能なファンクションがテストされます。

<script type="text/javascript">
function test(){
window.alert('This is a test.');
}
</script>

ページ・テンプレートによって参照される.jsファイルへのJavaScriptの挿入

Oracle Application Expressでは、ページ・テンプレート内の.jsファイルを参照できます。この方法を使用すると、このファイル内のすべてのJavaScriptがアプリケーションにアクセスできるようになります。.jsファイルは、アプリケーションの最初のページ・ビューにロードされた後、ブラウザでキャッシュされるため、これが最も有効な方法となります。

次のコードは、ページ・テンプレートのヘッダー・セクションに.jsファイルを組み込む方法を示しています。太字で示されている行script src=に注意してください。

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>#TITLE#</title>
#HEAD#
<script src="http://myserver.myport/my_images/custom.js" type="text/javascript"></script>
</head>
<body #ONLOAD#>#FORM_OPEN#

関連項目:
『Oracle Database Application Expressユーザーズ・ガイド』の「テンプレートのカスタマイズ」

JavaScriptを使用したアイテムの参照

アイテムを参照する場合、ページ内に定義されたアイテム名を参照するのが最もよい方法です。アイテム名はアイテム・ラベルとは異なることに注意してください。アイテム名はページ定義に表示されるもので、ラベルは実行中のページに表示されるものです。たとえば、P1_FIRST_NAMEという名前で、First Nameというラベルを持つアイテムを作成した場合、このアイテムを参照するにはP1_FIRST_NAMEを使用します。

アイテム名でアイテムを参照すると、JavaScriptメソッドgetElementById()を使用してアイテムの属性および値を取得および設定できます。次に、IDでアイテムを参照する方法およびアラート・ボックスにその値を表示する方法の例を示します。

<script type="text/javascript">
function firstName(){
window.alert('First Name is ' + document.getElementById('P1_FIRST_NAME').value );
}
// or a more generic version would be
function displayValue(id){
alert('The Value is ' + document.getElementById(id).value );
}
</script>

// Then add the following to the "Form Element Attributes" Attribute of the item:
onchange="displayValue('P1_FIRST_NAME');"

ボタンからのJavaScriptのコール

リクエストを確認する最も有効な方法は、ボタンからJavaScriptをコールする方法です。Oracle Application Expressでは、ほぼすべてのオブジェクトの削除操作にこの方法を使用します。たとえば、ボタンを削除する場合は、リクエストの確認を求めるJavaScriptメッセージが表示されます。次に例を示します。

<script type="text/javascript">
function deleteConfirm(msg)
{
var confDel = msg;
if(confDel ==null)
confDel= confirm("Would you like to perform this delete action?");
else
confDel= confirm(msg);

if (confDel== true)
doSubmit('Delete');
}
</script>

この例では、削除操作を確認するファンクションを作成した後、ボタンからそのファンクションをコールします。このファンクションは、オプションでページを送信し、内部変数:REQUESTの値をDeleteに設定するため、リクエストの値に基づいて条件付きで実行されるプロセスを使用して削除を実行します。

ボタンの作成時に、「ページを送信せずにURLにリダイレクト」アクションを選択する必要があります。その後、URLターゲットを次のように指定します。

confirmDelete('Would you like to perform this delete action?');

フォーム要素の値の変更

次の例では、リージョンに4つのテキスト・ボックスがあります。4つ目のテキスト・ボックスには、他の3つの合計が含まれます。この合計を計算するには、JavaScriptファンクションを「HTMLヘッダー」属性に追加して、最初の3つのアイテムからこのファンクションをコールします。

「HTMLヘッダー」属性にファンクションを追加するには、次のステップを実行します。

1. 該当するページ定義に移動します。

2. 「ページ」セクションで、「ページ属性の編集」アイコンをクリックします。
「ページの編集」が表示されます。

3. 「HTMLヘッダー」セクションで、次のように入力します。

<script type="text/javascript">
function sumItems(){
function getVal(item){
if(document.getElementById(item).value != "")
return parseFloat(document.getElementById(item).value);
else
return 0;
}
document.getElementById('P1_TOTAL').value =
getVal('P1_ONE') + getVal('P1_TWO') + getVal('P1_THREE');
}
</script>

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

3つすべてのアイテムからファンクションをコールするには、次のステップを実行します。

1. 該当するページ定義に移動します。

2. 各アイテムに対して、次のステップを実行します。

1. アイテム名をクリックして選択します。

2. 「要素」までスクロールします。

3. 「HTMLフォームの要素属性」で、次のように入力します。

onchange="sumItems();"

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

クライアント側のJavaScript検証の作成

クライアント側の検証では、フォームを使用するユーザーに即時フィードバックが提供されます。よく行われるJavaScript検証の1つに、フィールドがNULLではないことを検証するものがあります。この種の検証は非常にページに特化しているため、.js内で使用するよりもページ・ヘッダー内で使用するほうが有効に機能します。

チュートリアルを始める前に、必要なサンプル・データベース・オブジェクトにアクセスできるように、OEHR Sample Objectsアプリケーションをインポートしてインストールする必要があります。詳細は、「サンプル・オブジェクトのロード方法の概要」を参照してください。

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

- OEHR_EMPLOYEES表でのアプリケーションの作成

- 「HTMLヘッダー」属性へのファンクションの追加

- ファンクションをコールするためのアイテムの編集

- ページの実行による検証テスト

OEHR_EMPLOYEES表でのアプリケーションの作成

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

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

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

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

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

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

2. 「アプリケーション」で、デフォルトを受け入れます。

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

4. 「スキーマ」で、OEHR Sample Objectsをインストールしたスキーマを選択します。

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

5. 「ページの追加」セクションで次のように指定して、レポートを含むページを追加します。

1. 「ページ・タイプの選択」で、「レポートとフォーム」を選択します。

2. 「表名」で、「OEHR_EMPLOYEES」を選択します。

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

ページ上部のリストに、新しいページが表示されます。次に、ページ2の名前をUpdate Formに変更します。

6. ページ2の名前を変更するには、次のステップを実行します。

1. 図10-1に示すように、ページ上部の「アプリケーションの作成」で、ページ2のページ名「OEHR_EMPLOYEES」をクリックします。

図10-1 新しく作成されたページ

「図10-1 新しく作成されたページ」の説明

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

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

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

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

7. 「タブ」で、デフォルトの「1レベルのタブ」を受け入れて「次へ」をクリックします。

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

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

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

11. 「作成」をクリックします。
「アプリケーション」ホームページが表示されます。新しいアプリケーションに次の3つのページが含まれていることに注意してください。

- 1 - OEHR_EMPLOYEES

- 2 - Update Form

- 101 - ログイン

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

1. 図10-2に示すように、「アプリケーションの実行」アイコンをクリックします。

図10-2 「アプリケーションの実行」アイコン

「図10-2「アプリケーションの実行」アイコン」の説明

2. ユーザー名およびパスワードを入力するように要求されたら、ワークスペースのユーザー名およびパスワードを入力して、「ログイン」をクリックします。詳細は、「アプリケーション認証の概要」を参照してください。
標準レポートが表示されます。更新フォームを表示するには、「作成」ボタンまたは「編集」アイコンのいずれかをクリックします。

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

「HTMLヘッダー」属性へのファンクションの追加

次に、「Last Name」フィールドに値が含まれていない場合にメッセージを表示するファンクションをページ2の「HTMLヘッダー」属性に追加する必要があります。

ページ2の「HTMLヘッダー」属性にファンクションを追加するには、次のステップを実行します。

1. 「アプリケーション」ホームページで、「2 - Update Form」をクリックします。
ページ2のページ定義が表示されます。

2. 図10-3に示すように、「ページ」で「ページ属性の編集」アイコンをクリックします。

図10-3 「ページ属性の編集」アイコン

「図10-3「ページ属性の編集」アイコン」の説明

「ページの編集」が表示されます。

3. 「HTMLヘッダー」までスクロールします。
「HTMLヘッダー」にすでにスクリプトが含まれていることに注意してください。ユーザーが「削除」ボタンをクリックすると、このスクリプトによって次のメッセージが表示されます。

Would you like to perform this delete action?

4. 「HTMLヘッダー」で、スクロールして最後の</script>タグの後にカーソルを置きます。

5. 最後の</script>タグの後に、次のスクリプトを入力します。

<script type="text/javascript">
function notNull(object){
if(object.value=="")
alert('This field must contain a value.');
}
</script>

6. ページ上部の「変更の適用」をクリックします。
ページ2(Update Form)のページ定義が表示されます。

ファンクションをコールするためのアイテムの編集

次に、ファンクションをコールするようにP2_LAST_NAMEアイテムを編集する必要があります。

ファンクションをコールするようにP2_LAST_NAMEアイテムを編集するには、次のステップを実行します。

1. 「アイテム」で、「P2_LAST_NAME」をクリックします。

2. 「要素」までスクロールします。

3. 「HTMLフォームの要素属性」で、次のように入力します。

onblur="notNull(this);"

4. ページ上部の「変更の適用」をクリックします。
ページ定義が表示されます。次に、ページを実行します。

ページの実行による検証テスト

次に、ページ1にナビゲートしてページを実行します。

検証テストを行うには、次のステップを実行します。

1. ページ定義の「ページ」フィールドに1と入力して、「実行」をクリックします。
ページ1のページ定義が表示されます。

2. 右上にある「ページの実行」アイコンをクリックします。

3. アプリケーションが表示されたら、「作成」をクリックします。
「Update Form」が表示されます。

4. 「Last Name」フィールド内にカーソルを置き、「作成」をクリックします。図10-4に示すように、「This field must contain a value.」というメッセージが表示されます。

図10-4 Update Form

「図10-4 Update Form」の説明

フォーム要素の有効化および無効化

Oracle Application Expressを使用すると、条件に応じてページ・アイテムを表示できますが、ページに対して変更を行った場合は、評価のためにページを送信する必要があります。次の例では、フォーム要素の無効化を別のフォーム要素の値に基づいて行うJavaScriptの使用方法について説明します。

最初に、ファンクションを記述し、更新フォームが含まれるページの「HTMLヘッダー」属性に配置します。次に、そのページのアイテムからファンクションをコールします。次の例では、ユーザーが、販売部門(P2_DEPARTMENT_ID = 80)に属さない従業員に手数料を追加しないようにするJavaScriptファンクションの追加方法について説明します。

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

- 「HTMLヘッダー」属性へのファンクションの追加

- ファンクションをコールするためのアイテムの編集

- 選択リストへのアイテムの変更

- disFormItemsファンクションへのコールの作成

「HTMLヘッダー」属性へのファンクションの追加

ページ2の「HTMLヘッダー」属性にファンクションを追加するには、次のステップを実行します。

1. ページ2のページ定義に移動します。

2. 「ページ」で、「ページ属性の編集」アイコンをクリックします。
「ページの編集」が表示されます。

3. 「HTMLヘッダー」までスクロールします。

4. 「HTMLヘッダー」で、スクロールして最後の</script>タグの後にカーソルを置きます。

5. 最後の</script>タグの後に、次のスクリプトを入力します。

<script language="JavaScript1.1" type="text/javascript">
function html_disableItem(nd,a){
var lEl = document.getElementById(nd);
if (lEl && lEl != false){
if(a){
lEl.disabled = false;
lEl.style.background = '#ffffff';
}else{
lEl.disabled = true;
lEl.style.background = '#cccccc';
}}
return true;}

function disFormItems(){
var lOptions = document.getElementById('P2_DEPARTMENT_ID').options
var lReturn;
for(var i=0;i<lOptions.length;i++){
if(lOptions[i].selected==true){lReturn = lOptions[i].value;}
}
var lTest = lReturn == '80';
html_disableItem('P2_COMMISSION_PCT',lTest); }

</script>

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

ファンクションをコールするためのアイテムの編集

次のステップでは、ファンクションをコールするようにP2_DEPARTMENT_IDアイテムを編集し、「HTMLフォームの要素属性」属性にコードを追加します。

ファンクションをコールするようにP2_DEPARTMENT_IDアイテムを編集するには、次のステップを実行します。

1. 「アイテム」で、「P2_DEPARTMENT_ID」をクリックします。

2. 「要素」までスクロールします。

3. 「HTMLフォームの要素属性」で、次のように入力します。

onchange="disFormItems()"

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

選択リストへのアイテムの変更

P2_DEPARTMENT_IDを変更して、選択リストとして表示するには、次のステップを実行します。

1. 「アイテム」で、「P2_DEPARTMENT_ID」をクリックします。

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

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

4. 「LOV」で、次のように指定します。

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

2. 「LOV定義」で、次のように入力します。

SELECT department_name, department_id FROM oehr_departments

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

ヒント:
簡単にするため、このチュートリアルではアイテム・レベルのLOVを作成します。ただし、名前付きLOVを作成して参照させることをお薦めします。

関連項目:
『Oracle Database Application Expressユーザーズ・ガイド』の「LOVの作成」

disFormItemsファンクションへのコールの作成

最後に、選択された従業員が販売担当者でない場合にP2_COMMISSION_PCTを無効にするために、ページのレンダリング後、disFormItemsファンクションへのコールを作成する必要があります。このコールは、「ページのHTMLボディ属性」から実行することをお薦めします。

disFormItemsファンクションへのコールを作成するには、次のステップを実行します。

1. ページ2のページ定義に移動します。

2. 「ページ」で、「ページ属性の編集」アイコンをクリックします。
「ページの編集」が表示されます。

3. 「表示属性」セクションに移動します。

4. 「カーソル・フォーカス」で、「フォーカスなし」を選択します。
「フォーカスなし」を選択すると、生成されたJavaScriptとカスタムJavaScriptの競合を回避できます。

5. 「HTMLボディ属性」セクションまでスクロールします。

6. 「ページのHTMLボディ属性」に、次のように入力します。

onload="disFormItems(); first_field();"

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

8. ページを実行します。

図10-5に、完成したフォームを示します。「Department ID」が選択リストとして表示されていることに注意してください。また、「Department ID」が「Administration」であるため、「Commission Pct」フィールドは使用できないことにも注意してください。

図10-5 更新されたUpdate Form

「図10-5 更新されたUpdate Form」の説明

11 アクセス制御ページの構築方法

「アクセス制御管理ページ」を作成すると、アプリケーション、個々のページまたはページ・コンポーネントへのアクセスを制御できます。ページには、アプリケーション・モードのリストと「アクセス制御リスト」が含まれます。

このチュートリアルでは、「アクセス制御管理ページ」を作成し、権限を付与されたユーザーのみが特定の機能を実行できるようにアプリケーションへのアクセスを制限する方法を説明します。

この項には、次の項目が含まれます。

- アクセス制御管理の仕組み

- アプリケーションの作成

- アクセス制御管理ページの作成

- 認証ファンクションの作成

- 現行の認証スキームの更新

- コンポーネントへの認可スキームの適用

- アプリケーションのテスト

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

- アプリケーションへのセキュリティの追加
http://www.oracle.com/technology/obe/hol08/apexintro/apex3.1.1_d/apex3.1.1_d_otn.htm

アクセス制御管理の仕組み

「アクセス制御」ウィザードを実行してアクセス制御リストを作成し、「アクセス制御管理ページ」を作成します。このページには、アプリケーション・モードのリストと「アクセス制御リスト」が含まれます。「アクセス制御管理ページ」を作成したら、次のステップを実行します。

1. 「アクセス制御管理ページ」を実行します。

2. 次のアプリケーション・モードから1つ選択します。

- すべての対象への完全なアクセス権。アクセス制御リストは使用されません。

- 制限付きアクセス権。アクセス制御リストに定義されたユーザーのみが許可されます。

- パブリック読取り専用。アクセス制御リストによって制御される編集および管理の権限です。

- 管理アクセス専用。

3. 「アクセス制御リスト」にユーザーを追加します。

「アクセス制御管理ページ」の他に、「アクセス制御」ウィザードでは次のものが作成されます。

- アクセス制御を管理するための2つ表(アプリケーションのデフォルト・スキーマ内に作成)

- アプリケーション・モード・リストのオプションに対応した認可スキーム

- 「アクセス制御リスト」内で使用可能な権限

特定のページまたはコンポーネント属性ページで、これらの認可スキームのいずれかを選択することにより、そのページまたはページ・コンポーネントへのアクセスを制御できます。「アクセス制御」を作成したら、アプリケーション固有の要件に合うように、ページ、表および値をカスタマイズできます。

アプリケーションの作成

最初に、スプレッドシート内の従業員データに基づいてアプリケーションを作成する必要があります。

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

- スプレッドシート・データのダウンロード

- スプレッドシート・データに基づくアプリケーションの作成

- アプリケーションの実行

スプレッドシート・データのダウンロード

次の*.csvファイルをローカル・マシンにダウンロードします。

1. Webブラウザで次のURLに移動します。

http://www.oracle.com/technology/products/database/application_express/packaged_apps/acl_employees.zip

2. ご使用のコンピュータにacl_employees.zipファイルをダウンロードします。

3. 解凍してacl_employees.csvファイルを抽出します。

- Microsoft Windowsの場合、acl_employees.zipファイルをダブルクリックします。

- UNIXまたはLinuxの場合、次のコマンドを入力します。

$ unzip acl_employees.zip

スプレッドシート・データに基づくアプリケーションの作成

スプレッドシート・データに基づいて新しいアプリケーションを作成するには、次のステップを実行します。

1. 「ワークスペース」ホームページで、「アプリケーション・ビルダー」アイコンをクリックします。
「アプリケーション・ビルダー」ホームページが表示されます。

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

3. 「スプレッドシートから作成」を選択して「次へ」をクリックします。

4. 「ファイルをアップロード(カンマ区切り(*.csv)またはタブ区切り)」を選択して「次へ」をクリックします。

5. 「ロード方法」で、次のステップを実行します。

1. 「ファイルをアップロード(カンマ区切り(*.csv)またはタブ区切り)」を選択します。

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

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

1. 「テキスト・ファイル」で、「参照」をクリックしてacl_employees.csvファイルにナビゲートします。

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

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

1. 「スキーマ」で、適切なスキーマを選択します。

2. 「表名」に、ACL_EMPLOYEESと入力します。

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

8. 「ユーザー・インタフェースのデフォルト値」で、次のステップを実行します。

1. 「単数形の名前」に、Employeeと入力します。

2. 「複数形の名前」に、Employeesと入力します。

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

9. 「サマリー・ページ」で、次のステップを実行します。

1. 「列ごとのサマリー」で、「DEPARTMENT_ID」を選択して「次へ」をクリックします。

2. 「列ごとの集計」で、何も選択せずに「次へ」をクリックします。

10. 「アプリケーション・オプション」で、デフォルト値を受け入れて「次へ」をクリックします。

11. 「ユーザー・インタフェース」で、「テーマ2」を選択して「次へ」をクリックします。
テーマは、アプリケーションのレイアウトおよびスタイルの定義に使用できるテンプレート集です。テーマは随時変更できます。

12. 「作成」をクリックします。
「アプリケーション」ホームページが表示されます。

アプリケーションの実行

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

1. 図11-1に示すように、「アプリケーションの実行」アイコンをクリックします。

図11-1 「アプリケーションの実行」アイコン

「図11-1 「アプリケーションの実行」アイコン」の説明

2. ユーザー名およびパスワードを入力するように要求されたら、ワークスペースのユーザー名およびパスワードを入力して、「ログイン」をクリックします。詳細は、「アプリケーション認証の概要」を参照してください。
図11-2に示すとおり、レポートが表示されます。

図11-2 ACL_EMPLOYEESアプリケーション

「図11-2 ACL_EMPLOYEESアプリケーション」の説明

ACL_EMPLOYEESアプリケーションを使用して、従業員データの表示および更新ができます。特定のレコードを更新するには、左端の列にある「編集」アイコンをクリックします。「解析」タブをクリックすると、各部門の従業員の数を視覚的な表形式に分類できます。

「アクセス制御管理ページ」の作成

次に、権限を付与されたユーザーのみが特定の操作を実行できるように、アプリケーションを保護する必要があります。Oracle Application Expressアプリケーションにアクセス制御を実装する場合、アプリケーション・レベルで定義された認可スキームを使用することをお薦めします。最初のステップでは、「アクセス制御管理ページ」ウィザードを実行して、アクセス制御ページを作成します。

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

- アクセス制御ページの作成

- ページの表示

- アクセス制御リストへのユーザーの追加

アクセス制御ページの作成

アクセス制御ページを作成するには、次のステップを実行します。

1. 「開発者」ツールバーで「作成」をクリックします。

2. 「新しいページ」を選択して「次へ」をクリックします。

3. 「ページ」で、「アクセス制御」を選択して「次へ」をクリックします。
「アクセス制御」ウィザードが表示されます。

4. 「管理ページ番号」に8と入力して、「次へ」をクリックします。

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

1. 「タブ・オプション」で、「既存のタブ・セットを使用して、そのタブ・セット内に新しいタブの作成」を選択します。

2. 「タブ・セット」で、「TS1 (Employees, Analyze)」を選択します。

3. 「タブ・セット・ラベル」に、Administrationと入力します。

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

6. 確認ページを確認して、「終了」をクリックします。
「成功」ページが表示されます。

ページの表示

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

1. 「ページの実行」をクリックします。
図11-3に示すとおり、新しいページが表示されます。

図11-3 「アクセス制御管理ページ」

「図11-3 「アクセス制御管理ページ」」の説明

このページは、「アプリケーション管理」および「アクセス制御リスト」という2つのリージョンに分かれています。また、デフォルトでは、「アプリケーション・モード」は完全なアクセス権です。

2. 「アプリケーション・モード」で、「制限付きアクセス権。アクセス制御リストに定義されたユーザーのみが許可されます。」を選択します。

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

アクセス制御リストへのユーザーの追加

次に、「アクセス制御リスト」にユーザーを3名追加します。

- Luis Popp(LPOPP)は、表示権限を所有します。

- Adam Fripp(AFRIPP)は、編集権限を所有します。

- John Chen(JCHEN)は、管理者権限を所有します。

「アクセス制御リスト」にユーザーを追加するには、次のステップを実行します。

1. 「アクセス制御リスト」で、「ユーザーの追加」をクリックします。
新しい行が表示されます。

2. 次のステップを実行して、最初のユーザーを追加します。

1. 「ユーザー名」にLPOPPと入力します。

2. 「権限」で、「表示」を選択します。

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

4. 「ユーザーの追加」をクリックして、最初のユーザーを入力するための空白行を追加します。

3. 次のユーザーを追加します。

1. 「ユーザー名」にAFRIPPと入力します。

2. 「権限」で、「編集」を選択します。

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

4. 「ユーザーの追加」をクリックして、次のユーザーを入力するための空白行を追加します。

4. 次のユーザーを追加します。

1. 「ユーザー名」にJCHENと入力します。

2. 「権限」で、「管理者」を選択します。

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

5. 「開発者」ツールバーで「アプリケーション」をクリックします。
「アプリケーション」ホームページが表示されます。

認証ファンクションの作成

次に、ACL_EMPLOYEES表内の従業員をアプリケーションのユーザーにする必要があります。これを実行するには、現行の認証スキーム内に簡単な認証ファンクションを作成します。このファンクションは、ユーザーIDとパスワード(ユーザーIDに関連付けられた姓)を確認します。

認証ファンクションを作成するには、次のステップを実行します。

1. 「アプリケーション・ビルダー」ホームページで、「ホーム」ブレッドクラム・リンクをクリックします。
「ワークスペース」ホームページが表示されます。

2. 「SQLワークショップ」をクリックして、「SQLコマンド」をクリックします。

3. 「SQLエディタ」ペインで、次のステップを実行します。

1. 次のコードを入力します。

CREATE OR REPLACE FUNCTION acl_custom_auth (
p_username IN VARCHAR2,
p_password IN VARCHAR2)
RETURN BOOLEAN IS
BEGIN
FOR c1 IN (SELECT 1
FROM acl_employees
WHERE upper(userid) = upper(p_username)
AND upper(last_name) = upper(p_password))
LOOP
RETURN TRUE;
END LOOP;
RETURN FALSE;
END;
/

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

4. 「ホーム」ブレッドクラム・リンクをクリックします。
「ワークスペース」ホームページが表示されます。

現行の認証スキームの更新

次に、新しいファンクションを使用できるように現行の認証スキームを更新する必要があります。

現行の認証スキームを更新するには、次のステップを実行します。

1. 「アプリケーション・ビルダー」をクリックし、「ACL Employees」をクリックします。
「アプリケーション」ホームページが表示されます。

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

3. 「セキュリティ」で、「認証スキーム」をクリックします。
「認証スキーム」ページが表示されます。

4. 「Application Express - カレント」アイコンをクリックします。

5. 「ログイン・プロセス」までスクロールします。

6. 「認証ファンクション」で、-BUILTIN-を次と置き換えます。

return acl_custom_auth

7. ページ上部までスクロールして「変更の適用」をクリックします。

コンポーネントへの認可スキームの適用

次に、認可スキームを適切なアプリケーション・コンポーネントと関連付ける必要があります。ここまで、事前に次の3名のユーザーを「アクセス制御リスト」に追加しました。

- LPOPPは表示権限を付与されました。

- AFRIPPは編集権限を付与されました。

- JCHENは管理者権限を付与されました。

この演習では、表示、編集および管理者権限を特定のアプリケーション・コンポーネントと関連付け、ユーザーが実行できるアクションを制御します。

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

- 認可スキームとアプリケーションの関連付け

- ID列と編集権限との関連付け

- 「作成」ボタンと編集権限との関連付け

- ページ2と編集権限との関連付け

- ページ8へのアクセスの制限

認可スキームとアプリケーションの関連付け

まず、ユーザーに表示権限が付与されている場合のみ、アプリケーションにアクセスできるように指定する必要があります。これを実行するには、「アクセス制御 - 表示」認可スキームとアプリケーションを関連付けます。

認可スキームをアプリケーションと関連付けるには、次のステップを実行します。

1. 「アプリケーションID」ブレッドクラム・リンクをクリックします。
「アプリケーション」ホームページが表示されます。

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

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

4. 「セキュリティ」タブをクリックします。

5. 「認可」までスクロールします。

6. 「認可スキーム」で、「アクセス制御 - 表示」を選択します。

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

ID列と編集権限との関連付け

この演習では、データの編集または削除は、編集権限以上の権限を持つユーザーのみができるようにする必要があります。これを実行するには、「アクセス制御 - 編集」認可スキームとID列を関連付けます。この結果、ページ1上の「編集」アイコンは、表示権限を持つユーザーに対して非表示になりますが、編集権限または管理者権限を持つユーザーに対しては表示されます。

編集権限をID列と関連付けるには、次のステップを実行します。

1. 「アプリケーションID」ブレッドクラム・リンクをクリックします。
「アプリケーション」ホームページが表示されます。

2. 「1 - Report Page」をクリックします。
ページ1のページ定義が表示されます。

3. 「リージョン」で、「レポート」リンクをクリックします。
「レポート属性」ページが表示されます。

4. IDの「編集」アイコンをクリックします。「編集」アイコンは、鉛筆が付いた小さいページに似ています。
「列属性」ページが表示されます。

5. 「認可」までスクロールします。

6. 「認可スキーム」で、「アクセス制御 - 編集」を選択します。

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

「作成」ボタンと編集権限との関連付け

次に、「アクセス制御 - 編集」認可スキームと「作成」ボタンを関連付けます。この結果、権限のないユーザーに対しては「編集」アイコンが非表示になります。

編集権限を「作成」ボタンと関連付けるには、次のステップを実行します。

1. ページ1のページ定義に移動します。「1ページ」ブレッドクラム・リンクをクリックします。
ページ1のページ定義が表示されます。

2. 「ボタン」で、「作成」リンク(アイコンでない)をクリックします。

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

4. 「認可スキーム」で、「アクセス制御 - 編集」を選択します。

5. ページの上部の「変更の適用」をクリックします。
ページ1のページ定義が表示されます。

ページ2と編集権限との関連付け

次に、「アクセス制御 - 編集」認可スキームとページ2を関連付けます。

ページ2に認可スキームを指定するには、次のステップを実行します。

1. ページ2に移動します。「ページ」フィールドに2と入力して、「実行」をクリックします。
ページ2のページ定義が表示されます。

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

3. 「セキュリティ」までスクロールします。

4. 「認可スキーム」で、「アクセス制御 - 編集」を選択します。

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

ページ8へのアクセスの制限

最後に、ページ8(アクセス制御管理)へのアクセスを制限する必要があります。これを実行するには、ページ8のすべてと「管理」タブに、「アクセス制御 - 管理者」認可スキームを指定します。

ページ8への認可スキームの指定

ページ8に認可スキームを指定するには、次のステップを実行します。

1. ページ8に移動します。「ページ」フィールドに8と入力して、「実行」をクリックします。
ページ8のページ定義が表示されます。

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

3. 「セキュリティ」までスクロールします。

4. 「認可スキーム」で、「アクセス制御 - 管理者」を選択します。

5. ページの上部の「変更の適用」をクリックします。
ページ8のページ定義が表示されます。

「管理」タブへの認可スキームの指定

ページ8に認可スキームを指定するには、次のステップを実行します。

1. 「タブ」で、「管理」リンクをクリックします。

2. 「認可」までスクロールします。

3. 「認可スキーム」で、「アクセス制御 - 管理者」を選択します。

4. ページの上部の「変更の適用」をクリックします。
ページ8のページ定義が表示されます。

アプリケーションのテスト

このチュートリアルの初めの部分で、次の3名のユーザーを「アクセス制御リスト」に追加しました。

- Luis Popp(LPOPP): 表示権限を所有します。

- Adam Fripp(AFRIPP): 編集権限を所有します。

- John Chen(JCHEN): 管理者権限を所有します。

次に、これらのユーザーそれぞれがログインして、アプリケーションをテストします。

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

- 表示権限によるログイン

- 編集権限によるログイン

- 管理者権限によるログイン

表示権限によるログイン

Luis Popp(LPOPP)は表示権限を所有します。

Luis Poppとしてログインする場合は、次のステップを実行します。

1. 右上にある「ページの実行」アイコンをクリックします。

2. 入力が要求されたら、次の各項目を指定します。

1. 「ユーザー名」にLPOPPと入力します。

2. パスワードにPoppと入力します。

3. 「ログイン」をクリックします。

図11-4に示すとおり、「Employees」レポート・ページが表示されます。

図11-4 表示権限による「Employees」レポート

「図11-4 表示権限による「Employees」レポート」の説明

「編集」アイコンおよび「管理」タブは表示されません。

3. 右上にある「ログアウト」をクリックします。

編集権限によるログイン

Adam Fripp(AFRIPP)は編集権限を所有します。

Adam Frippとしてログインするには、次のステップを実行します。

1. 入力が要求されたら、次の各項目を指定します。

1. 「ユーザー名」にAFRIPPと入力します。

2. パスワードにFrippと入力します。

3. 「ログイン」をクリックします。

図11-5に示すとおり、「Employees」レポート・ページが表示されます。

図11-5 編集権限による「Employees」レポート

「図11-5 編集権限による「Employees」レポート」の説明

今回は、「Employee Id」列の左側に「編集」アイコンが表示されましたが、「管理」タブは引き続き表示されません。

2. 右上にある「ログアウト」をクリックします。

管理者権限によるログイン

John Chen(JCHEN)は管理者権限を所有します。

John Chenとしてログインするには、次のステップを実行します。

1. 入力が要求されたら、次の各項目を指定します。

1. 「ユーザー名」にJCHENと入力します。

2. パスワードにChenと入力します。

3. 「ログイン」をクリックします。

図11-6に示すとおり、「Employees」レポート・ページが表示されます。

図11-6 管理者権限による「Employees」レポート

「図11-6 管理者権限による「Employees」レポート」の説明

2. 「管理者」タブをクリックします。

12 パッケージ・アプリケーションの確認方法

パッケージ・アプリケーションは、参照、使用およびカスタマイズが可能なフル機能を備えたアプリケーションです。各パッケージ・アプリケーションには、アプリケーションのサポート・オブジェクト(データベース・オブジェクト、イメージおよびシード・データを含む)を定義するインストール・スクリプトと、インストール前の検証が含まれます。また、パッケージ・アプリケーションには、アプリケーションのすべてのサポート・オブジェクトの削除に使用する削除スクリプトも含まれます。

このチュートリアルでは、OEHR Sample Objectsというパッケージ・アプリケーションを使用します。このアプリケーションの前提となるサポート・オブジェクトを確認することで、ご使用のアプリケーションでのサポート・オブジェクトの定義方法を学習できます。

まず、OEHR Sample Objectsアプリケーションをインポートしてインストールする必要があります。詳細は、「サンプル・オブジェクトのロード方法の概要」を参照してください。

この項には、次の項目が含まれます。

- パッケージ・アプリケーションの概要

- サポート・オブジェクト・ユーティリティ

- サポート・オブジェクトのインストール

- サポート・オブジェクトの削除

- サポート・オブジェクトのエクスポート

- アップグレード・スクリプトの作成

- インストール・スクリプトの調整

- パブリック・パッケージ・アプリケーションおよびサンプル・コードのダウンロード

パッケージ・アプリケーションの概要

アプリケーションのインポートおよびインストールは複雑なプロセスです。まず、ターゲットとなるデータベース・オブジェクトおよびシード・データを作成します。次に、アプリケーション定義および関連するすべてのファイル(イメージ、テーマ、その他の必要な静的ファイルを含む)をインポートしてインストールします。

パッケージ・アプリケーションを作成すると、このプロセスが簡略化されます。多数のステップを実行してデータベース・オブジェクトを作成し、アプリケーションおよびすべてのサポート・ファイルをインポートしてインストールしなくても、サポート・オブジェクトを定義することで、1つの単純なウィザードでアプリケーションおよびサポート・ファイルをインストールできます。

ユーザーがアプリケーション定義をインポートしてインストールすると、ウィザードによっていくつかの単純な構成ステップがガイドされます。ここで、ウィザードによって、アプリケーションのサポート・オブジェクトをインストールするかどうかが尋ねられます。アプリケーションのサポート・オブジェクトをすぐにインストールするか、後でインストールするかを選択できます。

関連項目:
『Oracle Database Application Expressユーザーズ・ガイド』の「パッケージ・アプリケーションの作成」

サポート・オブジェクト・ユーティリティ

「サンプル・オブジェクトのロード方法の概要」では、OEHR Sample Objectsというアプリケーションをインポートしてインストールしました。このアプリケーションのインストールによって、データベース・オブジェクトが作成され、このマニュアルのチュートリアルを完了するために必要なサンプル・データがロードされます。

サポート・オブジェクト・ユーティリティを使用して、OEHR Sample Objectsのようなパッケージ・アプリケーションを作成します。パッケージ・アプリケーションを作成すると、アプリケーションだけでなく、基礎となるデータベース・オブジェクト、ファイル、その他のサポート・オブジェクトをインストールおよび削除できるようになります。サポート・オブジェクトは、アプリケーション定義、イメージ、テーマ、その他の必要な静的ファイルなど、アプリケーションが正常に動作するために必要なすべての要素で構成されます。

また、パッケージ・アプリケーションは、アプリケーションを別のOracle Application Expressインスタンスに移動したり、アプリケーションを共有する場合に作成すると有効です。サポート・オブジェクト・ユーティリティは、ご使用のアプリケーションで使用するすべてのオブジェクトが効率的に移行されるための最も簡単な方法を提供します。

「サポートするオブジェクト」ページへのアクセス

「サポートするオブジェクト」ページでサポート・オブジェクト・ユーティリティを起動します。

「サポートするオブジェクト」ページに移動するには、次のステップを実行します。

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

2. 「OEHR Sample Objects」をクリックします。

3. 「アプリケーション」ホームページで、「サポートするオブジェクト」をクリックします。
「サポートするオブジェクト」ページが表示されます。

pck_supobj.gifの説明

「サポートするオブジェクト」ページの上部には、現在選択されているアプリケーションの詳細レポート(スクリプト数および必要な空き領域を含む)が表示されています。その下は次のセクションに分かれています。

- インストール

- アップグレード

- 削除

- メッセージ

サポート・オブジェクトのインストール

サポート・オブジェクトのインストールでは、一連のスクリプトおよび検証が実行されます。検証に失敗すると、インストール・プロセスは停止します。処理途中で、ユーザーが確認するためのメッセージも表示されます。

pck_instl_mes.gifの説明

この項では、「サポートするオブジェクト」ページの「インストール」および「メッセージ」セクションについて説明します。ご使用のアプリケーションの要件に応じて、使用する機能を選択できます。

この項では、サポート・オブジェクトについて、インストールを実行するユーザーに対して表示される順に説明します。

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

- ようこそメッセージ

- 前提条件

- 使用許諾

- アプリケーション置換文字列

- ビルド・オプション

- インストール前の検証

- インストール前の確認メッセージ

- インストール・スクリプト

- 成功メッセージ

ようこそメッセージ

「ようこそメッセージ」には、ユーザーがサポート・オブジェクトをインストールすることを指定した直後に表示されるテキストが含まれます。このメッセージでは、アプリケーションについて紹介し、残りのインストール・プロセスで必要となるすべての情報について説明します。

「ようこそメッセージ」のテキストを確認するには、次のステップを実行します。

1. 「「サポートするオブジェクト」ページへのアクセス」に示す「サポートするオブジェクト」ページに移動します。

2. 「メッセージ」セクションで、「ようこそメッセージ」をクリックします。
「サポートするオブジェクト・メッセージ」ページが表示されます。最初のセクションに、「ようこそメッセージ」が表示されます。

前提条件

「前提条件」には、インストール・プロセスを続行するために有効である必要のある要素が含まれます。

前提条件を確認するには、次のステップを実行します。

1. 「サポートするオブジェクト・メッセージ」ページで、「前提条件」タブをクリックします。
「前提条件」ページに次のセクションが表示されます。

- 必要な空き領域

- 必須のシステム権限

- インストールするオブジェクト

pck_prerq.gifの説明

必要な空き領域

インストール時に表を作成してデータをロードする場合は、必要な空き領域を指定する必要があります。十分な空き領域がない場合は、この前提条件を指定することによって、サポート・オブジェクトのインストール時にエラーが発生するのを防ぐことができます。OEHR Sample Objectsアプリケーションには、4800KBの空き領域が必要です。

ご使用のオブジェクトに必要な領域を確認するには、次のステップを実行します。

1. 手動でまたは削除スクリプトを実行してサポート・オブジェクトを削除します。

1. 「「サポートするオブジェクト」ページへのアクセス」に示す「サポートするオブジェクト」ページに移動します。

2. ページ右側にある「タスク」リストで、「サポートされているオブジェクトの削除」をクリックします。

3. 「削除」ページで、「サポートされているオブジェクトの削除」を選択して、「削除」をクリックします。

2. 使用済領域を確認します。

1. 「ワークスペース」ホームページに移動します。

2. 右側の「管理」リストで、「サービスの管理」をクリックします。

3. 「ワークスペース」セクションで、「ワークスペースの概要」をクリックします。

4. 「表領域使用率の詳細レポート(数秒かかります)」リンクをクリックします。
「表領域使用率の詳細レポート」が表示されます。

5. 「使用済容量」列に表示される数値をメモします。
これは、スキーマが配置されている表領域の使用済領域を示します。

3. 手動で再作成するか、またはインストール・スクリプトを実行してサポート・オブジェクトをインストールします。

1. 「「サポートするオブジェクト」ページへのアクセス」に示す「サポートするオブジェクト」ページに移動します。

2. ページ右側にある「タスク」リストで、「サポートするオブジェクトのインストール」をクリックします。

3. 「サポートするオブジェクトのインストール」で、「はい」を選択して「次へ」をクリックします。

4. 「インストール」をクリックします。

4. もう一度使用済領域を確認します。

1. 「ワークスペース」ホームページに移動します。

2. 右側の「管理」リストで、「サービスの管理」をクリックします。

3. 「ワークスペース」セクションで、「ワークスペースの概要」をクリックします。

4. 「表領域使用率の詳細レポート(数秒かかります)」リンクをクリックします。
「表領域使用率の詳細レポート」が表示されます。

5. 「使用済容量」列に表示される数値をメモします。

5. ここでメモした使用済領域の数値から最初の使用済領域の数値を引き、必要な空き領域を算出します。

ヒント:
「使用済容量」列の値はMB単位で表示されます。KBで容量を計算するには、最後の数字に1,024(1MB=1,024KB)を掛けます。

必須のシステム権限

「必須のシステム権限」セクションには、システム権限のリストが含まれます。インストール・スクリプトを使用してオブジェクトを作成する場合は、適切なシステム権限を選択する必要があります。これらの権限を選択すると、ユーザーが適切な権限を持っているかどうかを確認するインストール前の検証が行われます。これによって、ユーザーが権限不足によってオブジェクトを作成できないということがなくなります。

OEHR Sample Objectsアプリケーションの場合、必要なシステム権限は、CREATE SEQUENCE、CREATE TRIGGER、CREATE TYPE、CREATE PROCEDURE、CREATE TABLEおよびCREATE VIEWです。

インストールするオブジェクト

「インストールするオブジェクト」セクションには、インストール・スクリプトによって作成されるすべてのオブジェクトがリストされます。ターゲット・スキーマに同じ名前のオブジェクトが含まれる場合は、エラーが表示されます。この前提条件によって、同じ名前のオブジェクトが存在することが原因でいくつかのオブジェクトを作成できなくなるというエラーがインストール中に発生することを回避できます。

削除に関連することから、この前提条件は重要です。ユーザーがインストールするオブジェクトと同じ名前のオブジェクトがすでに存在する場合、削除スクリプトによって既存のオブジェクトが削除される可能性があります。

たとえば、PROJECTSという表が存在し、インストール・スクリプトで同じ名前の表を作成した場合、インストール・プロセスを開始する前にアラートが表示されるようにする必要があります。この警告によって、表の名前を変更するか、サポート・オブジェクトのインストールをやめるかを選択できます。

使用許諾

ご使用のアプリケーションに特定のライセンスが必要な場合は、この領域に条件を指定します。必要なライセンスに対して、ユーザーは条件を受け入れるように要求されます。受け入れない場合、インストールは続行されません。

ライセンス領域を確認するには、次のステップを実行します。

1. 「サポートするオブジェクト・メッセージ」ページで、「メッセージ」タブをクリックします。

2. 「ライセンス」セクションに移動します。

OEHR Sample Objectsアプリケーションにはライセンスが不要なため、「ライセンス」セクションにテキストは表示されません。

アプリケーション置換文字列

各アプリケーションには、「アプリケーション定義」内で定義された置換文字列を含めることができます。置換文字列を使用して、アプリケーションの多数の場所で表示される語句やラベルを含めることができます(これらの語句やラベルは、インストールによっては変更する必要があります)。

ご使用のアプリケーションに置換文字列を定義すると、それらの置換文字列はサポート・オブジェクト・ユーティリティに表示されます。そこで、インストール・プロセス中に表示する置換文字列を決定できます。

インストール・プロセス中に表示される置換文字列に対して、適切な値を決定する際に役立つ、各文字列の使用目的を説明するカスタム・プロンプトを指定できます。また、置換文字列を含めると、カスタム・ヘッダー・メッセージを定義できます。

OEHR Sample Objectsアプリケーションには置換文字列が含まれないため、次の項で2つの置換文字列を追加してサポート・オブジェクト・ユーティリティで表示させます。

置換文字列の追加

OEHR Sample Objectsアプリケーションに置換文字列を追加するには、次のステップを実行します。

1. 「共有コンポーネント」ページに移動します。

1. 「アプリケーション」ブレッドクラムをクリックします。

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

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

3. 「置換」リージョンまでスクロールします。

4. 「置換文字列」および「置換値」に次の値を入力します。

置換文字列

置換値

APP_DATE_FORMAT

DD-MON-YYYY

APP_DATETIME_FORMAT

DD-MON-YYYY HH24:MI

5. 上部までスクロールして「変更の適用」をクリックします。

置換文字列の確認

サポート・オブジェクト・ユーティリティに置換文字列を表示するには、次のステップを実行します。

1. 「サポートするオブジェクト」ページに移動します。

1. 「アプリケーション」ブレッドクラムをクリックします。

2. 「サポートするオブジェクト」をクリックします。

2. 「インストール」セクションで、「アプリケーション置換文字列」をクリックします。
「置換の編集」ページに、定義済の2つの置換文字列が表示されます。インストール時にプロンプトを表示するには、プロンプトを選択して「プロンプト・テキスト」フィールドにテキストを入力します。

pck_subst.gifの説明

ビルド・オプション

ビルド・オプションは、条件付きでオブジェクトを表示するための共有コンポーネントです。各ビルド・オプションのステータスには、「含む」または「除外」があります。無効なビルド・オプションに関連付けられているオブジェクトは表示されません。

ビルド・オプションを使用して、まだ使用できていないアプリケーションまたはすべてのインストールにアクセスできないアプリケーションに機能を含めることができます。アプリケーションに含まれるコードは、エンド・ユーザーに公開されません。後で、機能にアクセスできるようにビルド・オプションを有効にできます。各ビルド・オプションに対して、ユーザーに表示するカスタム・ヘッダー・メッセージを定義できます。

ビルド・オプションは、置換文字列と同様に表示されます。ユーザーに表示するビルド・オプションを指定できます。ユーザーはビルド・オプションを選択して、そのステータスを決定できます。

OEHR Sample Objectsアプリケーションには、ビルド・オプションは含まれません。

関連項目:
『Oracle Database Application Expressユーザーズ・ガイド』の「ビルド・オプションを使用した構成の制御」

「ビルド・オプション」ページの確認

「ビルド・オプション」ページを確認するには、次のステップを実行します。

1. 「置換の編集」ページで、「ビルド・オプション」タブをクリックします。

2. 次ステップを実行して、「ビルド・オプション」メッセージを表示します。

1. 「メッセージ」タブをクリックします。

2. 「ビルド・オプション」セクションまでスクロールします。

インストール前の検証

検証によって、ターゲット・データベースおよびターゲット・スキーマがインストールを実行できることが確認されます。組込み検証タイプには、「現在の言語」、「存在」などが含まれます。SQLまたはPL/SQL式も使用できます。また、検証は条件付きで実行できます。

これらの検証を使用して、前提条件に含まれない条件を確認できます。たとえば、データベースの最小リリースやOracle Textのインストールを確認できます。その他のサポート・オブジェクトと同様に、検証のメッセージがあります。

OEHR Sample Objectsアプリケーションに検証は含まれません。

関連項目:
『Oracle Database Application Expressユーザーズ・ガイド』の「検証の理解」

「検証」ページの確認

「検証」ページを確認するには、次のステップを実行します。

1. 「検証」タブをクリックします。

2. 「作成」をクリックします。
「検証」ページが表示されます。

pck_prinstval.gifの説明

3. この演習では、「取消」をクリックします。

4. 次のステップを実行して、「検証のメッセージ」を表示します。

1. 「メッセージ」タブをクリックします。

2. 「検証」セクションまでスクロールします。

インストール前の確認メッセージ

インストール・プロセスの終了が遅いときは、インストール・スクリプトの前に確認メッセージが表示されます。

確認メッセージを確認するには、次のステップを実行します。

1. 「メッセージ」タブをクリックします。

2. 「サポートするオブジェクト・メッセージ」ページで、「確認」セクションまでスクロールします。

インストール・スクリプト

インストール・スクリプトは、サポート・オブジェクトのインストールのコアです。各アプリケーションには、複数のインストール・スクリプトを含めることができます。

OEHR Sample Objectsアプリケーションには、9つのインストール・スクリプトが含まれます。スクリプトによって、オブジェクトが作成されてデータがロードされます。

ヒント:
ファイルをロードするカスタム・インストール・スクリプトを作成することもできます。「ファイルをインストールするためのスクリプトの作成」を参照してください。

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

- インストール・スクリプトの表示

- 既存のインストール・スクリプトの確認

- ファイルを使用したインストール・スクリプトの作成

- ファイルをインストールするためのスクリプトの作成

インストール・スクリプトの表示

OEHR Sample Objectsアプリケーションのインストール・スクリプトを確認するには、次のステップを実行します。

- 「サポートするオブジェクト・メッセージ」ページで、「インストール」タブをクリックします。
「インストール・スクリプト」ページに、スクリプトのリストが表示されます。

pck_instscrpts.gifの説明

各スクリプトに名前および順序が付いていることに注意してください。依存オブジェクトを適切に作成またはコンパイルするためには、インストール・スクリプトの順序が非常に重要です。

既存のインストール・スクリプトの確認

既存のスクリプトを確認または更新するには、次のステップを実行します。

1. スクリプト名の横にある「編集」アイコンをクリックします。
「スクリプト・エディタ」ページに、編集または確認するスクリプトが表示されます。

図12-1 サポート・オブジェクトのスクリプト・エディタ

「図12-1 サポート・オブジェクトのスクリプト・エディタ」の説明

ヒント:
「テキスト領域を使用して編集」ボタンをクリックすると、このページとテキスト・ページを切り替えることができ、テキスト・ページではスクリプトを編集できます。

2. スクリプトのプロパティを表示して編集するには、「スクリプトのプロパティ」タブをクリックします。
「スクリプトのプロパティ」ページを使用して、スクリプトの名前または順序を変更します。条件付きで実行するかどうかも指定できます。

pck_scrprop.gifの説明

3. この演習では、「取消」をクリックします。

ファイルを使用したインストール・スクリプトの作成

最初から作成したファイルまたはアップロードしたファイルを使用して、オブジェクトを作成し、シード・データをインストールします。

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

- 最初からの新しいスクリプトの作成

- ファイルのアップロード

- アクセス制御表に使用するスクリプトの作成

最初からの新しいスクリプトの作成

最初から新しいスクリプトを作成するには、次のステップを実行します。

1. 「インストール・スクリプト」ページに移動します。

1. 「サポートするオブジェクト」ブレッドクラムをクリックします。

2. 「インストール」で、「インストール・スクリプト」をクリックします。

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

3. デフォルトの「最初から作成」を受け入れて「次へ」をクリックします。
「スクリプトの作成」ウィザードが表示されます。

4. 「スクリプト属性」で、次の各項目を入力します。

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

2. 「順序」で、デフォルトの100を受け入れます。

3. 「エディタの使用」オプションを選択します。
「エディタの使用」を選択すると、組込みエディタを使用してスクリプトを定義できます。これを選択しない場合は、標準のテキスト領域が表示されます。

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

「スクリプト・エディタ」が開きます。ここで、スクリプトの内容を入力または貼り付けます。

5. この演習では、「取消」をクリックします。

ファイルのアップロード

多くの場合、インストール・スクリプトの基になるファイルがあります。

ファイルをアップロードするには、次のステップを実行します。

1. 「インストール・スクリプト」ページで、「作成」をクリックします。

2. 「ファイルから作成」を選択して「次へ」をクリックします。

3. 「スクリプト属性」で、次の各項目を入力します。

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

2. 「順序」で、デフォルトの100を受け入れます。

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

4. 「スクリプトの定義」で、アップロードするファイルを選択します。

5. この演習では、「取消」をクリックします。

アクセス制御表に使用するスクリプトの作成

ご使用のアプリケーションにアクセス制御リストが含まれる場合は、スクリプトを作成して基礎となるアクセス制御表を作成できます。

関連項目:
『Oracle Database Application Expressユーザーズ・ガイド』の「アプリケーション、ページおよびページ・コンポーネントへのアクセス制御」

アクセス制御表に使用するスクリプトを作成するには、次のステップを実行します。

1. 「インストール・スクリプト」ページで、「作成」をクリックします。

2. 「アクセス制御表のスクリプトの作成」リンクをクリックします。

3. アクセス制御表のインストール・スクリプトを作成する場合は、「スクリプトの作成」をクリックします。

4. この演習では、「取消」をクリックします。

ファイルをインストールするためのスクリプトの作成

ご使用のアプリケーションが参照するカスケード・スタイル・シート、イメージ、静的ファイルなど、その他のタイプのオブジェクトを含めるには、ファイルをインストールするためのスクリプトを作成するとともに、サポート・オブジェクトとしてファイルをバンドルする必要があります。

まず、含めるファイルが共有コンポーネントとして追加されていることを確認します。

関連項目:
『Oracle Database Application Expressユーザーズ・ガイド』の「カスタム・カスケード・スタイルシートの使用」、「イメージの管理」および「静的ファイルの管理」

ファイルをインストールするスクリプトを作成するには、次のステップを実行します。

1. 「インストール・スクリプト」ページで、「作成」をクリックします。

2. 「ファイルをインストールするスクリプトの作成」リンクをクリックします。
ファイル・タイプのリストが表示されます。各オブジェクトは独自のスクリプトによって作成されますが、一度に複数のオブジェクトを作成することもできます。

OEHR Sample Objectsアプリケーションには、インストールするファイルは含まれません。

スクリプトを含める場合は、適切なスクリプトを選択して、「スクリプトの作成」をクリックします。スクリプトの名前および順序は、デフォルトで、作成されるオブジェクトの名前および順序になっています。これらの属性は、作成後に変更できます。

また、インストールする各ファイル用に、削除スクリプトに適切な削除文が記述されます。

3. この演習では、「取消」をクリックします。

成功メッセージ

サポート・オブジェクトのインストールが完了すると、成功または失敗のメッセージが表示されます。これらのメッセージを使用して、続行するために必要な情報をユーザーに提供します。

たとえば、インストールに成功した場合は、組込みユーザー名やパスワードなど、アプリケーションの実行に関する指示を表示します。インストールに失敗した場合は、ユーザーに連絡先やアプリケーションの削除の指示を表示します。

成功メッセージまたは失敗メッセージを確認するには、次のステップを実行します。

1. 「インストール・スクリプト」ページで、「メッセージ」タブをクリックします。

2. 「インストール後」セクションまでスクロールし、メッセージを確認します。

サポート・オブジェクトの削除

サポート・オブジェクト・ユーティリティの最後に、削除プロセスがあります。削除によって、アプリケーションをインストールしたユーザーは、インストール・プロセス中に作成されたすべてのオブジェクトを削除できます。

「サポートするオブジェクト」ページの「削除」セクションには、「削除スクリプト」リンクが含まれています。

pck_deinstall.gifの説明

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

- 削除の確認メッセージの表示

- 削除スクリプトの確認

- 削除の成功メッセージの表示

削除の確認メッセージの表示

ユーザーが削除プロセスを開始すると、削除メッセージが表示されます。

削除の確認メッセージ・セクションを参照するには、次のステップを実行します。

1. 「サポートするオブジェクト・メッセージ」ページで、「削除」までスクロールします。

2. 「削除」セクションまでスクロールします。
OEHR Sample Objectsアプリケーションに削除メッセージは定義されていません。

削除スクリプトの確認

ユーザーがサポート・オブジェクトの削除を選択すると、削除スクリプトが実行されます。インストールとは異なり、削除用のスクリプトは1つのみです。このスクリプトによって、データベース・オブジェクト、ロード済ファイル、カスケード・スタイル・シート、イメージなど、インストール中に作成されたすべてのオブジェクトが削除されます。

OEHR Sample Objectsの削除スクリプトを確認するには、次のステップを実行します。

1. 「サポートするオブジェクト・メッセージ」ページで、「削除」タブをクリックします。
「削除スクリプト」ページが表示されます。

2. スクリプトの左側にある「編集」アイコンをクリックします。
表の削除文にCASCADE CONSTRAINTS句が含まれることに注意してください。これらの句を使用すると、表を削除する際に外部キー間の競合を最も簡単に回避できます。ファイルのインストール・スクリプトを作成した場合は、ファイルの削除に使用するコードが削除スクリプトに含まれます。

3. この演習では、「取消」をクリックします。

削除の成功メッセージの表示

削除プロセスの最後に、削除の成功メッセージが表示されます。このメッセージは、すべての削除スクリプトが実行された後で表示されます。

削除の成功メッセージを確認するには、次のステップを実行します。

1. 「削除スクリプト」ページで、「メッセージ」タブをクリックします。

2. 「削除」セクションまでスクロールします。
OEHR Sample Objectsでは、削除後のメッセージに注意してください。

サポート・オブジェクトのエクスポート

定義済のサポート・オブジェクトは、アプリケーションをエクスポートする際に含めるかどうかを決定できます。「エクスポート」タブで、このエクスポートの設定のデフォルト値を設定します。

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

- サポート・オブジェクトのエクスポート設定の確認

- エクスポート時にエクスポートのデフォルトが表示される場所

サポート・オブジェクトのエクスポート設定の確認

エクスポートの設定を確認するには、次のステップを実行します。

1. 「サポートするオブジェクト・メッセージ」ページで、「エクスポート」タブをクリックします。
「エクスポート・ステータス」ページを使用して、エクスポートにサポート・オブジェクトを含めるかどうかを指定します。OEHR Sample Objectsでは、「サポートするオブジェクトの定義をエクスポートに含める」が「はい」に設定されています。

2. この演習では、「取消」をクリックします。

エクスポート時にエクスポートのデフォルトが表示される場所

エクスポートのデフォルトが設定されている場所を確認した後は、エクスポートのステップでこの設定が表示される場所を調べます。

エクスポートのステップでエクスポートのデフォルトの設定が表示される場所を確認するには、次のステップを実行します。

1. 「サポートするオブジェクト」ブレッドクラムをクリックして、「サポートするオブジェクト」ページに移動します。

2. 右側の「タスク」リストで、「アプリケーションのエクスポート」をクリックします。
「アプリケーションのエクスポート」セクションで、「サポートするオブジェクトの定義をエクスポート」が「はい」に設定されていることに注意してください。このオプションが「いいえ」に設定されていると、エクスポートにはアプリケーション定義のみが含まれます。

3. 「サポートするオブジェクトのインストール」ページに戻るには、右側の「タスク」リストで「サポートするオブジェクトの管理」をクリックします。

アップグレード・スクリプトの作成

アップグレード・スクリプトを作成すると、分散アプリケーションを変更できますが、既存のオブジェクトを保持することもできます。アップグレード・スクリプトを使用すると、データベース・オブジェクトの追加、既存のデータベース・オブジェクトの変更(列の追加、列定義の変更など)または新しいファイルの作成ができます。

アップグレード・スクリプトを含めるときは、インストール・スクリプトおよび削除スクリプトも変更してください。これによって、新しいユーザーがアプリケーションをインストールしたときに、このユーザーにサポート・オブジェクトの完全なセットが提供され、アップグレードされたアプリケーションが削除されたときに、すべてのオブジェクトが削除されます。

サポート・オブジェクトをインストールするウィザードでは、インストール・スクリプトを実行するか、アップグレード・スクリプトを実行するかを決定できる必要があります。この決定ポイントは、「既存のサポートするオブジェクトの検出」問合せによって決まります。問合せによって1つ以上の行が戻されると、アップグレード・スクリプトが実行されます。問合せによって行が戻されないと、インストール・スクリプトが実行されます。通常は、次の例に示すように、問合せによって、アプリケーションが依存している表の有無をOracleデータ・ディクショナリで確認します。

SELECT 1
FROM user_tables
WHERE table_name in ('OEHR_ORDERS','OEHR_ORDER_ITEMS')

アップグレードがアプリケーション・レベルの変更のみの場合(サポート・オブジェクトの変更がない場合)は、アップグレード・スクリプトを作成する必要はありません。新しいアプリケーションはインストールするが、サポート・オブジェクトはインストールしないようにユーザーに指示できます。

アップグレード・メッセージの使用

アップグレードを作成する際には、4つのメッセージ(「ようこそメッセージ」、「確認メッセージ」、「成功メッセージ」および「失敗メッセージ」)が使用できます。これらのメッセージを使用して、サポート・オブジェクトのインストールではなく、アップグレードを実行していることをユーザーに通知します。

アップグレードとして使用されるアプリケーションを分散する場合は、ユーザーが新しいアプリケーションIDを使用してアプリケーションをインストールするように推奨する必要があります。これによって、初期アプリケーションと関連付けられたサポート・オブジェクト定義は保持されます。アップグレードされたアプリケーションをユーザーが実行して確認した後は、以前のバージョンを削除できます。また、サポート・オブジェクトを削除してはいけないことをユーザーが理解している必要があります。

インストール・スクリプトの調整

サポート・オブジェクトは、作成後にテストする必要があります。通常は、次のステップを実行することをお薦めします。

1. テストは、別のワークスペースで実行するか、または別のスキーマを使用して同じワークスペースで実行します。

2. アプリケーションをエクスポートして、サポート・オブジェクト定義を含めます。

3. 次に、別のワークスペースにアプリケーションをインポートして、インストール・プロセスを実行します。
これによって、ご使用のアプリケーションに応じたメッセージを編集できます。

4. サポート・オブジェクトが正常に作成された後、アプリケーションを実行してテストします。

5. アプリケーションが予測どおりに表示および実行された場合は、アプリケーションを削除した後、サポート・オブジェクトを削除します。

6. 最後に、「オブジェクト・ブラウザ」を使用して、すべてのサポート・オブジェクトが削除されたことを確認します。
インストール・スクリプトが最初から正しいことはほとんどないため、通常、このプロセスは繰り返し実行します。

パブリック・パッケージ・アプリケーションおよびサンプル・コードのダウンロード

Oracle Application Express 2.2以上をご使用の場合は、Oracle Application ExpressのWebサイトからパッケージ・アプリケーションおよびサンプル・コードをダウンロードできます。パッケージ・アプリケーションは、参照、使用およびカスタマイズが可能なフル機能を備えたアプリケーションです。サンプル・コードは、対処方法を説明するためのコード例を含むパッケージ・アプリケーションとして提供されます。

パブリック・パッケージ・アプリケーションおよびサンプル・コードをダウンロードするには、次のステップを実行します。

1. Webブラウザで、次のWebサイトに移動します。
http://www.oracle.com/technology/products/database/application_express/packaged_apps/packaged_apps.html

2. スクロールして、使用可能なアプリケーションまたはコードを確認します。

3. ダウンロードするzipファイルへのリンクをクリックして、ファイルを保存します。

4. ファイルを解凍します。

5. Readmeファイルを確認します。
各アプリケーションには、アプリケーションの機能、インストール手順、サンプル・データの削除方法(必要な場合)、デフォルトのユーザー名およびパスワード(必要な場合)の詳細を含むReadmeファイルが含まれます。

6. Oracle Application Expressでパッケージ・アプリケーションまたはコードを使用するワークスペースにログインします。

7. アプリケーションをインポートしてインストールします。
このマニュアルに示す、サンプル・オブジェクトをインストールしたときの手順を実行します。詳細は、「サンプル・オブジェクトのロード方法の概要」を参照してください。

13 マスター・ディテールPDFレポートの作成方法

Oracle Application Expressでは、レポート・リージョンをPDFにエクスポートしてレポートを印刷する機能がサポートされています。宣言を使用して定義することで、レポートの印刷によって、ページ・ヘッダーが含まれ、特定のページ・サイズに正確に一致するレポートを参照および印刷できます。ユーザーがレポートを印刷すると、レポート・データは外部的に定義されたレポート・サーバーを使用してPDF形式に変換されます。

レポート・リージョンの印刷に加えて、アプリケーションにリンクされているレポート問合せおよびレポート・レイアウトを使用して出力を定義することもできます。

このチュートリアルでは、マスター・ディテール・フォームの作成方法、レポート問合せとRTFテンプレートの定義方法および新しいレポートを公開するためのボタンの作成方法を説明します。

この項には、次の項目が含まれます。

- Oracle BI Publisherのライセンス要件

- 必須オブジェクトのロード

- マスター・ディテール・フォームの作成

- レポート問合せの作成

- RTFテンプレートの作成

- レポート・レイアウトの作成

- アプリケーションへのPDFレポートのリンク

- すべての注文を含む1つのPDFの作成

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

- Oracle Application Express 3.1でのPDFレポートの作成
http://www.oracle.com/technology/obe/apex/apex31nf/apex31rpt.htm

- Oracle Application Express 3.1での拡張印刷の使用
http://www.oracle.com/technology/obe/11gr1_db/appdev/apexpdf/apexpdf.htm

- 複数の問合せでのPDFレポートの作成
http://www.oracle.com/technology/obe/hol08/apexprnt/apexprnt_otn.htm

- レポートへの動的イメージの挿入
http://www.oracle.com/technology/obe/hol08/apexprnt/apexprnt2_otn.htm

- データベースへのレポートの格納およびアクセス
http://www.oracle.com/technology/obe/hol08/apexprnt/apexprnt3_otn.htm

- 動的レイアウト選択を使用したレポートの作成
http://www.oracle.com/technology/obe/hol08/apexprnt/apexprnt4_otn.htm

関連項目:
「PDF Printing in Application Express 3.0」および『Oracle Database Application Expressユーザーズ・ガイド』のレポート出力の構成に関する説明

Oracle BI Publisherのライセンス要件

拡張PDF印刷には、Oracle Application Expressリリース3.0以上およびOracle BI Publisherの有効なライセンスが必要です。現在、Oracle Application ExpressインスタンスがBI Publisherを使用するように構成されていない場合は、「PDF Printing in Application Express 3.0」で、PDF印刷のインストールおよび構成の詳細を学習できます。

アプリケーションのホスティングされたバージョンの表示

Oracle BI Publisherの有効なライセンスを持たない場合、あるいはOracle BI Publisherをインストールまたは構成していない場合は、このチュートリアルの演習に従って、完成したアプリケーションのバージョンをapex.oracle.comで参照できます。

アプリケーションのホスティングされたバージョンを表示するには、次のステップを実行します。

1. Webブラウザで次のURLに移動します。

http://apex.oracle.com/pls/otn/f?p=15610

ホスティングされたアプリケーションが表示されます。

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

3. 「Order Details」ページで、「Print PDF of Order」をクリックします。

4. PDFを参照できるようにハード・ドライブに保存します。

必須オブジェクトのロード

このチュートリアルを完了するには、OTN (Oracle Technology Network)からパッケージ・アプリケーションHow To Create a Master-Detail PDF Reportをダウンロードしてインストールする必要があります。このパッケージ・アプリケーションをインポートおよびインストールすると、このチュートリアルの完了に必要なオブジェクトが作成されます。また、構築するアプリケーションの最終バージョンが含まれています。これを使用すると、コードが参照できます。

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

- パッケージ・アプリケーションのダウンロード

- パッケージ・アプリケーションのインポートおよびインストール

パッケージ・アプリケーションのダウンロード

OTNからパッケージ・アプリケーションをダウンロードするには、次のステップを実行します。

1. ご使用のコンピュータにmd_pdf_howto.zipファイルをダウンロードします。Webブラウザで次のURLに移動します。

http://www.oracle.com/technology/products/database/application_express/packaged_apps/md_pdf_howto.zip

2. 解答してmd_pdf_howto.zipファイルを抽出します。

- Microsoft Windowsの場合、md_pdf_howto.zipファイルをダブルクリックします。

- UNIXまたはLinuxの場合、次のコマンドを入力します。

$ unzip md_pdf_howto.zip

3. md_pdf_howto_readme.txtファイルを確認します。

パッケージ・アプリケーションのインポートおよびインストール

アプリケーションHow To Create a Master-Detail PDF Reportをインポートおよびインストールするには、次のステップを実行します。

1. Oracle Application Expressにログインします。『Oracle Database Application Expressユーザーズ・ガイド』の「Oracle Application Expressへのログイン」を参照してください。

2. 「ワークスペース」ホームページで、「アプリケーション・ビルダー」をクリックします。
「アプリケーション・ビルダー」ホームページが表示されます。

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

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

1. 「インポート」ファイルで、「参照」をクリックし、md_pdf_howto_installer.sqlファイルに移動します。

2. 「ファイル・タイプ」で、「アプリケーション、ページまたはコンポーネントのエクスポート」を選択します。

3. 「ファイルのキャラクタ・セット」が正しいことを確認します。

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

5. 「ファイルのインポートの確認」で、「次へ」をクリックしてインポートしたファイルをインストールします。
「アプリケーションのインストール」ウィザードが表示されます。

6. 「アプリケーションのインストール」ウィザードで、次の各項目を指定します。

1. 「解析対象スキーマ」で、適切なスキーマを選択します。

2. 「ビルド・ステータス」で、「アプリケーションの実行および構築」を選択します。

3. 「次のアプリケーションとしてインストール」で、「新しいアプリケーションIDを自動割当て」を選択します。

4. 「インストール」をクリックします。

7. 「サポートするオブジェクト」で、「はい」を選択して「次へ」をクリックします。

8. 「インストール」をクリックして、選択内容を確定します。

9. ページ上部の「ホーム」ブレッドクラム・リンクをクリックします。
「アプリケーション・ビルダー」ホームページが表示されます。

ワークスペースの空き領域の確認

How To Create a Master-Detail PDF Reportアプリケーションのインストールで問題が発生した場合は、ワークスペースの空き領域を確認します。追加の記憶領域をリクエストすることが必要な場合があります。

ワークスペース管理者は、次のことを実行できます。

1. 記憶領域を追加する必要があるかどうかを判断します。『Oracle Database Application Expressユーザーズ・ガイド』の「ワークスペースの概要レポートの表示」を参照してください。

2. 追加の記憶領域をリクエストします。『Oracle Database Application Expressユーザーズ・ガイド』の「追加の記憶域のリクエスト」を参照してください。

パッケージ・アプリケーションの削除

How To Create a Master-Detail PDF Reportアプリケーションを削除し、サポートするオブジェクトを完全に削除するように選択すると、関連するオブジェクトおよびサンプル・データすべてが削除されます。

How To Create a Master-Detail PDF Reportアプリケーションを削除するには、次のステップを実行します。

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

2. 「ワークスペース」ホームページで、「アプリケーション・ビルダー」をクリックします。
「アプリケーション・ビルダー」ホームページが表示されます。

3. How To Create a Master-Detail PDF Reportアプリケーションを選択します。
「アプリケーション」ホームページが表示されます。

4. 「タスク」リストで、「このアプリケーションの削除」をクリックします。
「削除」ページが表示されます。

5. 関連するオブジェクトおよびサンプル・データをすべて削除するには、「アプリケーション定義の削除」および「サポートされているオブジェクトの削除」を選択します。

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

マスター・ディテール・フォームの作成

マスター・ディテール・フォームを作成するには、次のステップを実行します。

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

2. How To Create a Master-Detail PDF Reportアプリケーションを選択します。

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

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

5. 「マスター・ディテール・フォーム」を選択して「次へ」をクリックします。
「マスター・ディテール」ウィザードが表示されます。

6. 「マスター表」で、次の各項目を選択します。

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

2. 「表/ビューの名前」で、MD_PDF_ORDERSを選択します。
このオブジェクトの列は、「選択可能な列」の下に表示されます。

3. [Shift]キーを押してすべての列を選択した後、「追加」ボタンをクリックして「表示列」へ移動させます。

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

7. 「ディテール表」で、次の各項目を指定します。

1. 「関連する表のみの表示」で、デフォルトの「はい」を受け入れます。

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

3. 「表/ビューの名前」で、MD_PDF_ORDER_ITEMSを選択します。
このオブジェクトの列は、「選択可能な列」の下に表示されます。

4. [Shift]キーを押してすべての列を選択した後、「追加」ボタンをクリックして「表示列」へ移動させます。

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

8. 「主キーのソース」で、次のステップを実行します。

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

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

9. 残りのデフォルトを受け入れるには、「終了」をクリックします。

10. 「作成」をクリックします。
「成功」ページが表示されます。

レポートの表示

新しいページを表示するには、次のステップを実行します。

1. 「ページの実行」アイコンをクリックします。
図13-1に示すとおり、PDF Ordersレポートが表示されます。

図13-1 Md Pdf Ordersレポート

「図13-1 Md Pdf Ordersレポート」の説明

ウィザードによってアプリケーションに、マスター表のレポートおよび表を参照するマスター・ディテール・フォームの2つのページが追加されたことを確認します。

2. 注文を編集してマスター・ディテール・フォームを表示するには、「編集」アイコンをクリックします。
図13-2に示すとおり、「マスター・ディテール」ページが表示されます。

図13-2 「マスター・ディテール」ページ

「図13-2 「マスター・ディテール」ページ」の説明

レポート問合せの作成

作成したフォームには、5つの注文の注文アイテムが表示されます。標準のPDF印刷を使用すると、表形式フォームでリージョン印刷ができます。これによって、出力には、選択したマスターのみの注文アイテムのレコードのみが表示されます。「Order Items」とともにすべての注文情報を組み込むレポートを作成するには、レポート問合せを作成します。注文情報は、各注文アイテムのセッション・ステートから取得されます。

レポート問合せを作成するには、次のステップを実行します。

1. 「レポート問合せ」ページに移動します。

1. 「アプリケーション」ホームページに戻るには、「開発者」ツールバーで「アプリケーション」リンクをクリックします。

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

3. レポートの下の「レポート問合せ」をクリックします。
「レポート問合せ」ページが表示されます。

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

3. 「レポート問合せの定義」で、次の各項目を入力します。

1. 「レポート問合せ名」に、order_detailsと入力します。

2. 「セッション・ステート」で、「アプリケーションとセッションの情報を含める」を選択します。
「アイテムの選択」フィールドが表示されます。

3. 「アイテムの選択」で、「P3_CUSTOMER_NAME」を選択して「追加」をクリックします。
この手順を次のアイテムに対して繰り返します。

P3_ORDER_DATE

P3_ORDER_ID

P3_ORDER_MODE

P3_ORDER_STATUS

P3_ORDER_TOTAL

P3_SALES_REP

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

4. 「ソース問合せ」で、次の各項目を入力します。

1. 「SQL問合せ」に、次のコードを入力します。

SELECT LINE_ITEM_ID,
QUANTITY,
ORDER_ITEM_ID,
PRODUCT_NAME,
to_char(UNIT_PRICE,'$9,999.99') unit_price
FROM MD_PDF_ORDER_ITEMS
WHERE ORDER_ID = :P3_ORDER_ID

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

5. 「レポート・レイアウトのデータ・ソース」で、「XMLデータ」を選択して「ダウンロード」ボタンをクリックします。
このステップでは、レポート問合せの名前を持つXMLファイルorder_details.xmlがダウンロードされます。

6. 結果ファイルをハード・ドライブに保存します。
このXMLファイルを使用してRTFテンプレートを作成した後、アップロードします。ただし、はじめに汎用レポート・レイアウトを使用して、レポート問合せの作成プロセスを完了する必要があります。その後、レポート問合せを作成およびアップロードし、これを編集して新しいレポート・レイアウトを参照します。

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

8. 「レポート・レイアウト・ファイル」で、保存済のorder_details.xmlファイルを参照して選択します。

9. 「次へ」をクリックします。
表示されるURLを確認します。このURLは、アプリケーションからこのレポートをコールする際に使用します。

10. 「終了」をクリックします。
次に、このXMLファイルを使用してRTFテンプレートを作成する必要があります。

RTFテンプレートの作成

レポート問合せから作成されたXMLを編集するには、Oracle BI Publisher Desktopが必要です。正常にロードされると、Oracle BI Publisher Desktopによって、Microsoft Wordに新しいメニュー・オプションが追加されます。

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

- Oracle BI Publisher Desktopのダウンロード

- XML Detailsのロード

- フィールドの挿入

- ライン・アイテムの挿入

関連項目:
Oracle BI Publisher Desktopのホワイトペーパーおよびデモンストレーション

Oracle BI Publisher Desktopのダウンロード

デスクトップをロードしていない場合は、ここでダウンロードできます。

http://www.oracle.com/technology/software/htdocs/devlic.html?url=/technology/software/products/ias/htdocs/101320bi.html

関連項目:
「Oracle BI Publisherのライセンス要件」

XML Detailsのロード

レポート問合せによって生成されたXMLをロードするには、次のステップを実行します。

1. Microsoft Wordを起動します。

2. 「Oracle BI Publisher」メニューから、「データ」、「サンプルXMLデータのロード」を順に選択します。

3. レポート問合せの作成時に生成したファイルorder_details.xmlを選択します。
次のメッセージが表示されます。

Data loaded successfully

4. 「OK」をクリックします。
ページに何も表示されないことを確認します。

フィールドの挿入

注文列を挿入するには、次のステップを実行します。

1. 「Oracle BI Publisher」メニューから、「挿入」、「フィールド」を順に選択します。

2. P3 Customer Nameを選択して、「挿入」をクリックします。

3. 各注文列の挿入を続けます。

4. 「フィールド」ダイアログ・ボックスを終了するには、「閉じる」をクリックします。
各注文アイテムは、ページ上に1つの長い文字列として表示されます。

5. ページを編集して、アイテムが1行に1つずつ表示され、先頭に説明ら別が付くようにします。次に例を示します。

Customer: P3_CUSTOMER_NAME
Order Date: P3_ORDER_DATE
Order ID: P3_ORDER_ID
Order Mode: P3_ORDER_MODE
Order Status: P3_ORDER_STATUS
Order Total: P3_ORDER_TOTAL
Sales Rep: P3_SALES_REP

ライン・アイテムの挿入

ライン・アイテムを挿入するには、次のステップを実行します。

1. 注文の詳細の下に、いくつかの空白行を挿入します。

2. 「Oracle BI Publisher」メニューから、「挿入」、「表ウィザード」を順に選択します。

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

4. 「グループ化フィールド」で「DOCUMENT/REGION/ROWSET/ROW」を選択し、「次へ」をクリックします。

5. 各フィールドを選択して、右側の列に移動します。「次へ」をクリックします。
レポートによって1つの注文のみが選択されるため、選択項目のグループ化を行う必要はありません。

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

7. 「ソート基準」で、「ライン・アイテムId」を選択して「次へ」をクリックします。

8. 「ラベル」で、次の各項目を編集します。

1. 「ライン・アイテムId」をLine Itemに変更します。

2. 「オーダー・アイテムId」をOrder Itemに変更します。

9. 「終了」をクリックします。
図13-3に示すような、基本的なフレームワークが作成されます。

図13-3 レポート・レイアウト・テンプレート

「図13-3 レポート・レイアウト・テンプレート」の説明

10. ヘッダーおよびフッターを定義するには、「ビュー」メニューで「ヘッダーおよびフッター」を選択します。
たとえば、ヘッダーにはレポート名(My Order Reportなど)を、フッターにはページ番号やレポートを実行した日時を含めることができます。また、フォント・ファミリやフォント・サイズをカスタマイズすることもできます。

11. 変更を保存します。

1. 「ファイル」メニューで、「別名保存」を選択します。

2. 「名前を付けて保存」で「リッチ テキスト形式(*.rtf)」を選択します。

3. 「ファイル名」にorder_details.rtfと入力します。

4. Microsoft Wordを終了します。

RTFへの変数の挿入

RTFのヘッダーおよびフッターには変数を挿入できます。たとえば、How To Create a Master-Detail PDF Reportアプリケーションのサンプル・ページに使用されているRTFファイルには、レポートが実行された日時およびレポートを実行したユーザーが含まれます。

このRTFをダウンロードして表示するには、次のステップを実行します。

1. 「レポート・レイアウト」ページに移動します。

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

2. 「レポート」の下の「レポート・レイアウト」をクリックします。
「レポート問合せ」ページが表示されます。

2. order_details2をクリックします。

3. 「ダウンロード」をクリックして、ハード・ドライブにorder_details2.rtfを保存します。

4. Microsoft Wordでorder_details2.rtfを開き、フッターに含まれる変数を確認します。

レポート・レイアウトの作成

レポート・レイアウト・テンプレートが完成すると、アプリケーション・ビルダーにアップロードして、レポート問合せに関連付ける必要があります。

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

- レポート・レイアウトの作成

- レポート・レイアウトとレポート問合せの関連付け

レポート・レイアウトの作成

レポート・レイアウトを作成するには、次のステップを実行します。

1. 「共有コンポーネント」ページに移動します。

1. 「共有コンポーネント」ブレッドクラムをクリックします。

2. 「レポート」の下の「レポート・レイアウト」をクリックします。
「レポート・レイアウト」ページが表示されます。

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

3. 「レイアウト・タイプ」に「名前付き列」を選択して「次へ」をクリックします。

4. 「レイアウト・タイプ」で、次の各項目を指定します。

1. 「レイアウト名」に、order detailsと入力します。

2. 「レポート・レイアウト・ファイル」で、「参照」をクリックして、order_details.rtfを選択します。

5. 「レイアウトの作成」をクリックします。

レポート・レイアウトとレポート問合せの関連付け

レポート・レイアウトとレポート問合せを関連付けるには、次のステップを実行します。

1. 「共有コンポーネント」ページに移動します。「共有コンポーネント」ブレッドクラムをクリックします。

2. レポートの下の「レポート問合せ」をクリックします。

3. order_detailsをクリックして問合せを編集します。

4. 「レポート問合せ」属性の「レポート・レイアウト」で、order detailsを選択します。

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

アプリケーションへのPDFレポートのリンク

この演習では、ボタンを作成してPDFレポートをアプリケーションにリンクさせます。

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

- ボタンの作成

- ページの実行

ボタンの作成

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

1. 「マスター・ディテール」ページの「ページ定義」に移動します。

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

2. 「マスター・ディテール」を選択します。

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

図13-4 「作成」アイコン

「図13-4 「作成」アイコン」の説明

3. 「ボタン・リージョン」で、Md Pdf Ordersを選択して「次へ」をクリックします。
これによって、ボタンが上部の(マスター・)リージョンに配置されます。

4. 「ボタン位置」で、デフォルトの「リージョン位置にボタンを作成」を受け入れて「次へ」をクリックします。

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

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

2. 「ラベル」に、Print PDF of Orderと入力します。

3. 「ボタン・タイプ」で、デフォルトの「テンプレートによる作成」を受け入れます。

4. 「アクション」で、「出力可能なレポート問合せのダウンロード」を選択します。

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

6. 「ボタン・テンプレート」で、デフォルトを受け入れて「次へ」をクリックします。

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

1. 「位置」で、「リージョン・テンプレートの位置#CREATE#」を選択します。
これによって、ボタンは「変更の適用」ボタンの右側に配置されます。

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

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

1. 「レポート問合せ」で、order_detailsを選択します。

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

9. 「条件付き表示」で、次のステップを実行します。

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

2. 「式1」に、P3_ORDER_IDと入力します。
この条件を作成すると、新しい注文の作成時に印刷ボタンは表示されません。

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

ページの実行

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

1. 図13-5に示すように、ページの右上にある「ページの実行」アイコンをクリックします。

図13-5 「ページの実行」アイコン

「図13-5 「ページの実行」アイコン」の説明

2. レポートが表示されたら、「取消」をクリックして「Md Pdf Order」ページに戻ります。

3. 「編集」アイコンをクリックして、別の注文を選択します。
図13-6のようなマスター・ディテール・ページが表示されます。新しい「Print PDF of Order」ボタンを確認します。

図13-6 更新された「マスター・ディテール」ページ

「図13-6 更新された「マスター・ディテール」ページ」の説明

4. Oracle BI Publisherのライセンスを持たない場合、あるいはOracle BI Publisherをインストールまたは構成していない場合は、PDFとしてレポートを保存できません。
このアプリケーションの完全に機能するバージョンを表示するには、次のようにします。

- apex.oracle.comでホスティングされたバージョンを参照します。「アプリケーションのホスティングされたバージョンの表示」を参照してください。

- デモンストレーション・アプリケーションに含まれるサンプル・ページを参照します。「アプリケーション」ホームページに戻って「Orders」ページを実行し、「編集」をクリックして注文を編集した後、「Print PDF Order」をクリックします。

すべての注文を含む1つのPDFの作成

このチュートリアルでは、1つの注文に固有のレポートを作成しました。同じレポートを、Order IDを渡さないで作成することもできます。これによって、すべての注文を含むPDFが作成されます。これを行うには、次のステップを実行します。

1. 必要な列をすべて戻す1つのレポート問合せを作成します。セッション・ステート変数を含める必要はありません。

2. このチュートリアルで行った方法と同じ方法で、結果のXMLをMicrosoft Wordにロードし、表ウィザードを使用します。

3. グループ化の指定が求められたら、マスターとして使用する列を選択します。
結果の表示には、詳細レコードを含む表の上にグループ化された列が含められます。その後、ラベルを追加して表示をカスタマイズできます。レポートを実行すると、新しいページに各マスター値が表示されます。

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)を参照してください。

- データベース・オブジェクトの操作
http://www.oracle.com/technology/obe/hol08/apexintro/apex3.1.1_a/apex3.1.1_a_otn.htm

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

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

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

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

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

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

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

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

- 必要なデータの収集

- セキュリティ要件の定義

- データ管理機能の選択

- データ表示機能の選択

- 特別な機能要件の定義

必要なデータの収集

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

- 問題のサマリー

- 問題の詳細

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

- 問題が発見された日付

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

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

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

- 問題の優先順位

- 目標とする解決日

- 実際の解決日

- 進捗レポート

- 解決のサマリー

セキュリティ要件の定義

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

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

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

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

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

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

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

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

データ管理機能の選択

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

- 問題の作成

- 問題の割当て

- 問題の編集

- プロジェクトの作成

- プロジェクトの管理

- ユーザーの作成

- ユーザー情報の管理

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

データ表示機能の選択

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

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

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

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

- 最近発見された問題

- 未割当ての問題

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

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

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

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

特別な機能要件の定義

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

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

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

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

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

- Projects: すべての現行のプロジェクトを追跡します。

- People: 問題を処理するために割り当てることが可能なユーザーに関する情報が含まれています。

- Issues: 問題に関するすべての情報(関連するプロジェクト、問題に割り当てられたユーザーなど)を追跡します。

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

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

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

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

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

- Projects表

- People表

- Issues表

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-2 IT_ISSUES表

「図14-2 IT_ISSUES表」の説明

図14-3 IT_PEOPLE表

「図14-3 IT_PEOPLE表」の説明

図14-4 IT_PROJECTS表

「図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章「問題追跡アプリケーションの作成およびデプロイ方法」を完了してください。

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

このチュートリアルでは、プロジェクトに関連する問題の割当て、ステータスおよび進捗を追跡するアプリケーションを作成およびデプロイする方法を説明します。このチュートリアルでは、堅牢な問題追跡アプリケーションの作成に必要なすべてのステップを実際に行います。この章で説明されているステップを実行する前に、第14章「問題追跡アプリケーションの設計方法」で説明されているプロジェクトの計画、基礎となるデータベース・オブジェクトの作成およびデモンストレーション・データのロードを完了しておく必要があります。

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

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

注意:
Issue Trackerアプリケーションを作成する前に、第14章「問題追跡アプリケーションの設計方法」を完了しておく必要があります。このチュートリアルを完了するには、2、3時間かかります。特定の演習を試す前に、資料に慣れるため、最初にドキュメント全体を通して読むことをお薦めします。

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

- Issue Trackerアプリケーションの概要

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

- 拡張機能の追加

- アプリケーションのデプロイ

Issue Trackerアプリケーションの概要

この項では、このチュートリアルで設計して実装するIssue Trackerアプリケーションの概要を示します。このアプリケーションを作成する前に、次のことを理解しておくと役に立ちます。

- Issue Trackerのユーザー・インタフェース

- Issue Trackerのアーキテクチャ

Issue Trackerのユーザー・インタフェース

Issue Trackerのユーザー・インタフェースは、問題、プロジェクトおよびユーザーの追跡と管理をサポートできるように設計されています。アプリケーションのページは、図15-1「Issue Trackerのユーザー・インタフェース」に示すように構成されます。

図15-1 Issue Trackerのユーザー・インタフェース

「図15-1 Issue Trackerのユーザー・インタフェース」の説明

Issue Trackerのアーキテクチャ

このアプリケーションを作成すると、ページが15作成されます。Issue Trackerアプリケーションの「アプリケーション・ビルダー」ホームページは、図15-2「Issue Trackerのページ」のように表示されます。

図15-2 Issue Trackerのページ

「図15-2 Issue Trackerのページ」の説明

ページごとに、表15-1「Issue Trackerの各ページの概要」に示されている特定の追跡機能があります。

表15-1 Issue Trackerの各ページの概要

名前および番号

親ブレッドクラム・エントリ

用途

このページの作成方法を示す項

1 - Home

最上位のページ(「Projects」、「Users」、「Issues」、「Reports」および「Dashboard」)にリンクするアプリケーションの「Home」ページ。

基本アプリケーションの作成

2 - Projects

Home

プロジェクトの表示および検索に使用するプロジェクト・レポート・ページ。「Project Details」ページにリンクされています。

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

3 - Project Details

Projects

特定のプロジェクトの詳細の表示、プロジェクトの追加、削除および編集に使用するプロジェクトの詳細フォーム。

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

4 - Users

Home

ユーザーの表示および検索に使用するユーザー・レポート・ページ。「User Information」ページにリンクされています。

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

5 - User Information

Users

特定のユーザーの情報の表示、ユーザーの追加、編集および削除に使用するユーザー情報フォーム。

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

6 - Issues

Home

問題の表示および検索に使用する問題レポート・ページ。「Issue Details」ページにリンクされています。

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

7 - Issue Details

Issues

特定の問題の情報の表示、問題の追加、編集および削除に使用する問題の詳細フォーム。

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

8 - Assign Open Issues

Reports

すべての未割当ての問題を表示し、ユーザーへの割当て、関連プロジェクトの特定、ステータスの変更および優先順位の変更を行うことができます。

サマリー・レポートのためのページの追加

9 - Issue Summary by Project

Reports

プロジェクトごとに様々な問題パラメータのレポートが提供されます。

サマリー・レポートのためのページの追加

10 - Resolved by Month Identified

Reports

月ごとの解決された問題の数が図示されます。

サマリー・レポートのためのページの追加

11 - Target Resolution Dates

Reports

各解決目標日にエントリが示されているカレンダが表示されます。

サマリー・レポートのためのページの追加

12 - Average Days to Resolve

Reports

各ユーザーが問題の解決に要した平均日数が棒グラフで示されます。

サマリー・レポートのためのページの追加

14 - Reports

Home

このページが、すべてのサマリー・レポート(「Assign Open Issues」、「Issue Summary by Project」、「Resolved by Month Identified」、「Target Resolution Dates」および「Average Days to Resolve」)の開始ページとなります。

サマリー・レポートのためのページの追加

18 - Dashboard

Home

「Overdue Issue」、「Unassigned Issues」、「Recently Opened Issues」および「Open Issues by Project」のスナップショットが表示されます。

「Dashboard」ページの追加

101 - ログイン

アプリケーションのログイン・ページ。

基本アプリケーションの作成

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

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

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

- 基本アプリケーションの作成

- ホームページへのナビゲーション・イメージ・リストの追加

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

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

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

- サマリー・レポートのためのページの追加

- 「Dashboard」ページの追加

基本アプリケーションの作成

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

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

- アプリケーションの作成

- アプリケーションへのロゴの追加

- アプリケーションの実行

アプリケーションの作成

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

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

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

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

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

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

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

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

3. 「スキーマ」で、ロードしたITデータ・オブジェクトが含まれているスキーマを選択します。

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

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

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

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

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

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

7. 「タブ」で、デフォルトの「1レベルのタブ」を選択して「次へ」をクリックします。

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

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

1. 「日付書式」で、DD-MON-YYYYと入力するか、または選択リストから「12-JAN-2004」を選択します。

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

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

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

アプリケーションへのロゴの追加

アプリケーションにIssue Trackerのロゴを追加するには、次のステップを実行します。

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

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

3. 「定義」ページで、上部にある「ロゴ」タブをクリックします。

4. 「ロゴ・タイプ」で、「テキスト (Application Express 2.2以上が必要です)」を選択します。

5. 「ロゴ」に、Issue Tracker 1.0と入力します。

6. 「ロゴ属性」で、ドロップ・ダウン・リストから「白色のテキスト」を選択します。

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

アプリケーションの実行

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

1. 「アプリケーション」ホーム・ブレッドクラム・リンクをクリックします。

2. 「アプリケーションの実行」アイコンをクリックします。

3. プロンプトが表示されたら、ワークスペースのユーザー名およびパスワードを入力して、「ログイン」をクリックします。詳細は、「アプリケーション認証の概要」を参照してください。
この認証は、新しく作成したアプリケーションのデフォルトのセキュリティの一部です。図15-3に示すとおり、ホームページが表示されます。

図15-3 初期ホームページ

「図15-3 初期ホームページ」の説明

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

- ロゴ: 左上にIssue Tracker 1.0のロゴが表示されます。

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

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

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

基本的なアプリケーション構造を作成した後、「Home」ページにコンテンツを追加します。

ホームページへのナビゲーション・イメージ・リストの追加

次に、アプリケーションの最上位のページに、ユーザーがナビゲートする場合に役立つ、横のイメージ・リストを追加する必要があります。

この項を完了すると、「Home」ページは図15-4のようになります。

図15-4 ナビゲーション・イメージ・リストが表示されたホームページ

「図15-4 ナビゲーション・イメージ・リストが表示されたホームページ」の説明

注意:
各イメージの下のナビゲーション・リンクは、対応する最上位の各ページを作成するまでは機能しません。たとえば、「プロジェクトを管理するためのページの追加」の項のステップを完了すると、「Projects」リンクに「Projects」ページが表示されます。

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

- イメージ・リストの作成

- イメージ・リストを含めるリージョンの作成

イメージ・リストの作成

ナビゲートに使用する横のイメージ・リストを作成するには、次のステップを実行します。

1. 「アプリケーション」ホーム・ブレッドクラムをクリックします。

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

3. 「ナビゲーション」で、「リスト」をクリックします。

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

5. 「リスト」で、次の変更を行います。

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

2. 「リスト・テンプレート」で、「ラベル・リスト付きの横のイメージ」を選択します。

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

リストに、「Dashboard」、「Projects」、「Issues」、「Reports」および「Users」のイメージを追加するには、次のステップを実行します。

1. 「リスト・エントリを作成 」をクリックします。

2. 「エントリ」の下に「Dashboard」イメージを追加するには、次の変更を行います。

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

2. 「イメージ」に、menu/dashboard_bx_128x128.pngと入力します。

3. 「リスト・エントリ・ラベル」に、Dashboardと入力します。

3. 「ターゲット」で、「ページ」に18と入力します。

4. 「作成後、別のものを作成」をクリックします。

5. 「エントリ」の下に「Projects」イメージを追加するには、次の変更を行います。

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

2. 「イメージ」に、menu/globe_bx_128x128.pngと入力します。

3. 「リスト・エントリ・ラベル」にProjectsと入力します。

6. 「ターゲット」で、「ページ」に2と入力します。

7. 「作成後、別のものを作成」をクリックします。

8. 「エントリ」の下に「Issues」イメージを追加するには、次の変更を行います。

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

2. 「イメージ」に、menu/shapes_bx_128x128.pngと入力します。

3. 「リスト・エントリ・ラベル」に、Issuesと入力します。

9. 「ターゲット」で、「ページ」に6と入力します。

10. 「作成後、別のものを作成」をクリックします。

11. 「エントリ」の下に「Reports」イメージを追加するには、次の変更を行います。

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

2. 「イメージ」に、menu/folder_bx_128x128.pngと入力します。

3. 「リスト・エントリ・ラベル」に、Reportsと入力します。

12. 「ターゲット」で、「ページ」に14と入力します。

13. 「作成後、別のものを作成」をクリックします。

14. 「エントリ」の下に「Users」イメージを追加するには、次の変更を行います。

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

2. 「イメージ」に、menu/addresses_bx_128x128.pngと入力します。

3. 「リスト・エントリ・ラベル」に、Usersと入力します。

15. 「ターゲット」で、「ページ」に4と入力します。

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

イメージ・リストを含めるリージョンの作成

イメージ・リストを表示するためのリージョンを「Home」ページに作成します。デフォルトの「Home」リージョンを削除し、イメージの「Main Menu」リストを含む別のタイプのリストを作成する必要があります。

イメージ・リストを含めるリージョンの作成

1. 「アプリケーション」ホーム・ブレッドクラムをクリックします。

2. 「Home」ページのアイコン「1 - Home」をクリックします。

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

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

5. 確定するには、「リージョンの削除」をクリックします。

6. 「リージョン」で、「作成」アイコンを選択します。

7. リージョン・タイプで、「リスト」を選択して「次へ」をクリックします。

8. 「表示属性」で、次の変更を行います。

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

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

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

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

9. 「ソース」で、「リスト」に「Main Menu」を選択します。

10. 「リスト・リージョンの作成」をクリックします。

11. 「リージョン」で、「Home」リージョンをクリックします。

12. 「ヘッダーおよびフッター」までスクロールします。「リージョン・ヘッダー」に、次のように入力します。
<p>Use this application to track issues as they arise for projects within your organization.<p>

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

14. 「Home」ページにイメージ・リストを表示するには、アプリケーションのホームページの「アプリケーションの実行」アイコンをクリックします。「Home」ページが図15-5「ナビゲーション・イメージ・リストが表示された「Home」ページ」のようになります。

図15-5 ナビゲーション・イメージ・リストが表示されたホームページ

「図15-5 ナビゲーション・イメージ・リストが表示されたホームページ」の説明

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

次に、ユーザーがプロジェクト・データを表示したり、表に追加できるページを作成する必要があります。これを行うには、「レポート付きの表のフォーム」ウィザードを使用します。このウィザードでは、IT_PROJECTS表にレポート・ページおよびフォーム・ページを作成します。

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

- プロジェクト・ページの概要

- このアプリケーション用のタブ・セットの作成

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

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

- 「Project Details」ページの調整

- 「Projects」ページおよび「Project Details」ページの実行

注意:
このアプリケーションについてすでに理解している場合は、「プロジェクト・ページの概要」をスキップして「このアプリケーション用のタブ・セットの作成」に進んでください。

プロジェクト・ページの概要

作成されるレポート・ページは「Projects」ページで、フォーム・ページは「Project Details」ページです。この項を完了すると、プロジェクト・ページは、図15-6「「Projects」ページ」に示されている「Projects」ページおよび図15-7「プロジェクト追加時の「Project Details」ページ」と図15-8「プロジェクト編集時の「Project Details」ページ」に示されている「Project Details」ページのようになります。

図15-6 「Projects」ページ

「図15-6 「Projects」ページ」の説明

図15-7 プロジェクト追加時の「Project Details」ページ

「図15-7 プロジェクト追加時の「Project Details」ページ」の説明

図15-8 プロジェクト編集時の「Project Details」ページ

「図15-8 プロジェクト編集時の「Project Details」ページ」の説明

「Projects」ページ(2 - Projects)

このページは、データベースのすべてのプロジェクトのレポートです。このページには、次のコンポーネントが含まれています。

- Project Name: プロジェクトの名前。

- Start Date: プロジェクトの開始日。

- Target End Date: プロジェクトの終了予定日。

- Actual End Date: プロジェクトの実際の終了日。

- 検索リージョン: 検索条件を選択して「実行」ボタンをクリックすると、フィルタ処理されたレポートを取得できます。

- 編集アイコン: プロジェクト情報を編集するには、プロジェクト名の左にある編集アイコンをクリックします。「Project Details」ページに、選択したプロジェクトの情報が表示されます。

- 「Add Project」ボタン: データベースに新しいプロジェクトを追加するには、このボタンをクリックします。特定のプロジェクト情報を入力するための空の「Project Details」ページが表示されます。

「Project Details」ページ(3 - Project Details)

このフォームで、プロジェクトの詳細の編集およびデータベースへの新しいプロジェクトの追加を行うことができます。「Projects」ページの「Add Project」ボタンまたは編集アイコンをクリックすると、この詳細ページが表示されます。すべてのフィールドが空で、新しいプロジェクトの追加時には「Audit Information」は含まれていません。このページには、次のコンポーネントが含まれています。

- 取消: 未適用の変更を送信せずに「Projects」ページに戻ります。

- 削除: 削除確認メッセージからOKのレスポンスを受信した後で、データベースからプロジェクトを削除します。このボタンは、プロジェクトの編集時に表示され、プロジェクトの追加時には表示されません。

- 変更の適用: データベースにプロジェクトの変更をコミットします。このボタンは、プロジェクトの編集時に表示され、プロジェクトの追加時には表示されません。

- 作成: データベースにプロジェクトを追加します。このボタンは、プロジェクトの追加時に表示され、プロジェクトの編集時には表示されません。

- Project Details: このリージョンで、プロジェクトの詳細を入力できます。

- Audit Information: このリージョンを展開すると、プロジェクトの監査情報が表示されます。監査情報は編集できません。プロジェクトを作成または変更すると、監査情報はこのプロジェクトに対して自動的に更新されます。このリージョンは、プロジェクトの編集時にのみ表示されます。

このアプリケーション用のタブ・セットの作成

アプリケーションの作成時に、デフォルトのタブ・セットTS1が作成されています。次に、それぞれの新しいページを作成する場合に使用されるように、このタブ・セットの名前を変更します。

タブ・セットの名前を変更するには、次のステップを実行します。

1. 「アプリケーション」ホーム・ブレッドクラムをクリックします。

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

3. 「ナビゲーション」で、「タブ」を選択します。

4. 右パネルの「標準タブ・セット名の変更」リンクをクリックします。

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

6. 「新しいタブ・セット名」にIssue Trackerと入力して、「次へ」をクリックします。

7. 確定するには、「タブ・セット名の変更」をクリックします。

これで、「ページの作成」ウィザードで新しいページを追加するたびに「Issue Tracker」タブ・セットにタブが追加されます。

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

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

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

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

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

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

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

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

1. 「実装」で、「対話モード」を選択します。

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

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

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

5. 「リージョン・テンプレート」で、「テンプレートなし」を選択します。

6. 「ブレッドクラム」で、「ブレッドクラム」を選択します。
「ブレッドクラム・エントリの作成」セクションが表示されます。

7. 「エントリ名」に、Projectsと入力します。

8. 「親エントリの選択」で、「Home」リンクを選択します。

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

7. 「タブ・オプション」で、「既存のタブ・セットを使用して、そのタブ・セット内に新しいタブの作成」を選択します。
「新しいタブ・ラベル」フィールドが表示されます。

8. 「タブ・セット」で、「Issue Tracker(Home)」を選択します。

9. 「新しいタブ・ラベル」にProjectsと入力して、「次へ」をクリックします。

10. 「列の選択」で、「PROJECT_ID」、「PROJECT_NAME」、「START_DATE」、「TARGET_END_DATE」および「ACTUAL_END_DATE」を選択して、「次へ」をクリックします。
プロジェクト名は一意で、プロジェクトを識別します。外部キーを簡略化し、カスケード更新を有効にするためにIDが追加されています。

11. 「リンク・イメージの編集」で、最初のオプションを選択して「次へ」をクリックします。

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

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

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

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

4. 「リージョン・テンプレート」で、「フォーム・リージョン」を選択します。

13. 「ブレッドクラム・エントリの作成」の「フォーム・ページの定義」で、次のステップを実行します。

1. 「エントリ名」に、Project Detailsと入力します。

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

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

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

16. 「列の選択」で、「PROJECT_NAME」、「START_DATE」、「TARGET_END_DATE」および「ACTUAL_END_DATE」を選択して、「次へ」をクリックします。

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

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

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

「Projects」ページのフィールドを編集し、「作成」ボタンを「Add Project」に変更する必要があります。

PROJECT_ID列の非表示およびエラー・メッセージの追加

フィールドを編集するには、次のステップを実行します。

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

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

3. 「リージョン」で、「Projects」の横にある「対話モード・レポート」をクリックします。

4. PROJECT_IDの「表示テキスト」で、「非表示」を選択します。

5. 「ページ区切り」までスクロールして、「データが見つからなかった場合のメッセージ」にNo projects foundと入力します。

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

「Add Project >」ボタンへの「作成」ボタンの変更

ボタンを変更するには、次のステップを実行します。

1. ページ2の編集ページの「ボタン」で、「作成」ボタンを選択します。

2. 「テキスト・ラベル/代替」を「作成」から「Add Project >」に変更し、「変更の適用」を選択します。

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

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

図15-9 調整された「Projects」ページ

「図15-9 調整された「Projects」ページ」の説明

「Project Details」ページの調整

次に、「Project Name」フィールドを拡大し、日付のフィールドを縮小するには、「プロジェクトの詳細」ページをカスタマイズする必要があります。プロジェクトの編集時にのみ表示する「Audit Information」リージョンおよび終了予定日と実際の終了日が開始日後であるかどうかを確認する検証を追加する必要があります。

フィールドの編集

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

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

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

2. 「3 - Project Details」をクリックします。

2. 「アイテム」で、「すべて編集」アイコンをクリックします。
「すべて編集」アイコンは、鉛筆が付いた小さいグリッドに似ています。

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

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

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

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

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

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

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

表示対象が存在する場合にのみ表示する「Audit Report」リージョンの追加

「Project Details」ページの下部に「Audit Report」リージョンを追加するには、次のステップを実行します。

1. ページ3の編集ページの「リージョン」で、「作成」ボタンを選択します。

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

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

4. 「タイトル」に、Audit Informationと入力します。

5. 「リージョン・テンプレート」で、「非表示と表示のリージョン」を選択して「次へ」をクリックします。

6. 「SQL問合せ、またはSQL問合せを戻すPL/SQLファンクションを入力」に、次のように入力します。

SELECT
CREATED_ON, CREATED_BY, MODIFIED_ON, MODIFIED_BY
FROM #OWNER#.IT_PROJECTS
WHERE PROJECT_ID = :P3_PROJECT_ID

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

8. ページ3の編集ページの「リージョン」で、「Audit Information」をクリックします。

9. 「条件付き表示」までスクロールして、「式1のアイテムの値がNOT NULL」を選択します。

10. 「式1」に、P3_PROJECT_IDと入力します。

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

12. 「レイアウトおよびページ区切り」で、次の変更を行います。

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

2. 「ページ区切りスキーム」で、「- ページ区切りが選択されていない -」を選択します。

3. 「部分ページ・リフレッシュの有効化」で、「いいえ」を選択します。

13. 他のすべてのデフォルト値を受け入れ、「変更の適用」をクリックします。

検証の作成

「レポート付きの表のフォーム」ウィザードによって、「Name」、「Start Date」および「End Date」のNOT NULL検証が作成されました。「Actual End Date」が「Start Date」以降であることを確認する別の検証を手動で作成する必要があります。

「Actual End Date」の検証を追加するには、次のステップを実行します。

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

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

3. 「アイテム」で、「Project Details: 50.P3_ACTUAL_END_DATE (Actual End Date)」を選択して「次へ」をクリックします。

4. 「検証方法」で、次のステップを実行します。

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

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

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

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

2. 「検証名」に、P3_END_AFTER_STARTと入力します。

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

6. 「検証」で、次のステップを実行します。

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

to_date(:P3_ACTUAL_END_DATE,:APP_DATE_FORMAT) >= to_date
(:P3_START_DATE,:APP_DATE_FORMAT)

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

Actual End Date must be same or after Start Date.

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

7. 「条件」で、次のステップを実行します。

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

2. 「式1」に、P3_ACTUAL_END_DATEと入力します。

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

「Projects」ページおよび「Project Details」ページの実行

新しい「Projects」ページおよび「Project Details」ページを表示するには、ページの右上にある「ページの実行」アイコンをクリックします。

1. 「アプリケーション」ホーム・ブレッドクラムをクリックします。

2. 「アプリケーションの実行」アイコンをクリックします。図15-10に示すように、Issue Trackerホームページがイメージ・リンクのリストともに表示されます。

図15-10 Issue Trackerホームページ

「図15-10 Issue Trackerホームページ」の説明

3. 2番目のイメージの下の「Projects」リンクをクリックします。「Projects」ページが図15-11のようになります。

図15-11 「Projects」ページ

「図15-11 「Projects」ページ」の説明

4. 詳細を表示するには、「Email Integration」プロジェクトの横の編集アイコンをクリックし、「Audit Information」の横の+記号をクリックします。表示される「Project Details」ページは、図15-12のようになります。

図15-12 「Email Integration」プロジェクトの「Project Details」ページ

「図15-12 「Email Integration」プロジェクトの「Project Details」ページ」の説明

注意:
図15-12「「Email Integration」プロジェクトの「Project Details」ページ」では、「Project Name」フィールドが空のために「Audit」リージョンが表示されています。「Audit Information」リージョンは展開されています。

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

最初の「Projects」ページが完了した後で、ユーザーを管理するためのページを作成します。これを行うには、「レポート付きの表のフォーム」ウィザードを使用します。このウィザードでは、IT_PEOPLE表にレポート・ページおよびフォーム・ページを作成します。

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

- ユーザー・ページの概要

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

- 「Users」ページの外観の変更

- 「User Information」ページの外観の調整

- 「Users」ページおよび「User Information」ページの実行

注意:
このアプリケーションについてすでに理解している場合は、「ユーザー・ページの概要」をスキップして「ユーザーを管理するためのページの作成」に進んでください。

ユーザー・ページの概要

この項のを完了すると、図15-13「「Users」ページ」および図15-14「George Hurstの「User Information」ページ」に示されているように「Users」ページおよび「User Information」ページが表示されます。

「Home」ページの「Users」リンクをクリックすると、「Users」ページにナビゲートすることができます。「Users」ページで、編集アイコンまたは「Add User」ボタンをクリックして「User Information」ページを表示します。

図15-13 「Users」ページ

「図15-13 「Users」ページ」の説明

図15-14 George Hurstの「User Information」ページ

「図15-14 George Hurstの「User Information」ページ」の説明

「Users」ページ(4 - Users)

このページは、アプリケーションへのアクセス権を持つすべてのユーザーのレポートです。このページには、次のコンポーネントが含まれています。

- Person Name: ユーザーの名前。

- Person Email: ユーザーの電子メール・アドレス。

- Person Role: このユーザーのロール。後続の項で、各ロールに対して、アプリケーションへの異なるレベルのアクセス権を付与します。

- Username: このアプリケーションにアクセスできるユーザーの名前。

- Assigned Project: このユーザーに割り当てられているプロジェクト。

- 検索リージョン: 検索条件を選択して「実行」ボタンをクリックすると、フィルタ処理されたレポートを取得できます。

- 編集アイコン: ユーザー情報を編集するには、ユーザー名の左にある編集アイコンをクリックします。「User Information」ページに、選択したユーザーの情報が表示されます。

- 「Add User」ボタン: このボタンをクリックすると、このアプリケーションに対して新しいユーザーをプロビジョニングできます。特定のユーザーの詳細を入力するための空の「User Information」ページが表示されます。

「User Information」ページ(5 - User Information)

このフォームで、既存のユーザー情報の編集および新しいユーザーの追加を行うことができます。「Users」ページの「Add User」ボタンまたは編集アイコンをクリックすると、この情報ページが表示されます。このページには、次のコンポーネントが含まれています。

- 取消: 未適用の変更を送信せずに「Users」ページに戻ります。

- 削除: 削除確認メッセージからOKのレスポンスを受信した後で、データベースからユーザーを削除します。このボタンは、ユーザーの編集時に表示され、ユーザーの追加時には表示されません。

- 変更の適用: ユーザーの変更をデータベースにコミットします。このボタンは、ユーザーの編集時に表示され、ユーザーの追加時には表示されません。

- 作成: データベースにユーザーを追加します。このボタンは、ユーザーの追加時に表示され、ユーザーの編集時には表示されません。

- User Information: このリージョンで、ユーザーの詳細を入力できます。

- Audit Report: このリージョンを展開すると、ユーザーの監査情報が表示されます。監査情報は編集できません。ユーザーを追加するかまたはユーザー情報を編集すると、このユーザーに対して自動的に更新されます。

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

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

1. 「アプリケーション」ブレッドクラムをクリックします。

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

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

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

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

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

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

1. 「実装」で、「対話モード」を選択します。

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

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

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

5. 「リージョン・テンプレート」で、「テンプレートなし」を選択します。

6. 「ブレッドクラム」で、「ブレッドクラム」を選択します。
「ブレッドクラム・エントリの作成」セクションが表示されます。

7. 「エントリ名」に、Usersと入力します。

8. 「親エントリ」で、「Home」リンクを選択します。

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

8. 「タブ・オプション」で、「既存のタブ・セットを使用して、そのタブ・セット内に新しいタブの作成」を選択します。

9. 「タブ・セット」で、「Issue Tracker」を選択します。

10. 「新しいタブ・ラベル」にUsersと入力して、「次へ」をクリックします。

11. 「列の選択」で、「PERSON_ID」、「PERSON_NAME」、「PERSON_EMAIL」、「PERSON_ROLE」、「USERNAME」および「ASSIGNED_PROJECT」を選択して、「次へ」をクリックします。

12. 「リンク・イメージの編集」で、最初のオプションを選択して「次へ」をクリックします。

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

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

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

3. 「エントリ名」に、User Informationと入力します。

14. 「ブレッドクラム・エントリの作成」の「フォーム・ページの定義」で、次のステップを実行します。

1. 「エントリ名」に、User Informationと入力します。

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

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

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

17. 「列の選択」で、「PERSON_NAME」、「PERSON_EMAIL」、「PERSON_ROLE」、「USERNAME」および「ASSIGNED_PROJECT」を選択して、「次へ」をクリックします。

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

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

ページの実行

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

図15-15 「Users」ページ

「図15-15 「Users」ページ」の説明

ユーザーを追加または編集するためのページをプレビューするには、左端の列の「編集」アイコンをクリックします。「User Information」ページが図15-16「「User Information」ページ」のように表示されます。

図15-16 「User Information」ページ

「図15-16 「User Information」ページ」の説明

「Users」ページの外観の変更

次に、次のステップを実行して「Users Information」を変更します。

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

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

2. 「アプリケーション」ホームページで、「4 - Users」をクリックします。

2. 「リージョン」で、「Users」の横にある「対話モード・レポート」をクリックします。

3. PERSON_IDの「表示テキスト」で、「非表示」を選択します。

4. ページ上部の「変更の適用」をクリックします。

「作成」ボタンの名前の変更

「作成」ボタンを「Add User>」ボタンに変更するには、次のステップを実行します。

1. ページ4の編集ページの「ボタン」で、「作成」ボタンを選択します。

2. 「テキスト・ラベル/代替」を「作成」から「Add User >」に変更し、「変更の適用」を選択します。

3. 「ページの実行」アイコンをクリックします。
「Users」ページの列の順序を変更するには、次のステップを実行します。

4. 図15-17に示すように、実行中の「Users」ページで、「アクション」アイコンをクリックします。

図15-17 「アクション」アイコン

「図15-17 「アクション」アイコン」の説明

5. 「列の選択」を選択します。

6. 「レポートに表示」ボックスの横の上下矢印を使用して、列の順序付けを行います。

7. 「適用」をクリックします。変更に応じて列が並べ替えられた「Users」ページが表示されます。

IT_PROJECTSからのプロジェクト名を含めるための問合せの変更

Projects表への結合が含まれるように問合せを変更するには、次のステップを実行します。

1. ページ4 (「Users」)のページ定義に移動します。

1. 実行中のフォームを表示している場合は、「開発者」ツールバーの「アプリケーション」をクリックします。

2. 「アプリケーション」ホームページで、「4 - Users」をクリックします。

2. 「リージョン」で、「Users」をクリックします。

3. 「ソース」までスクロールします。

4. 「リージョン・ソース」で、既存の問合せを次と置き換えます。

SELECT "IT_PEOPLE"."PERSON_ID" as "PERSON_ID",
"IT_PEOPLE"."PERSON_NAME" as "PERSON_NAME",
"IT_PEOPLE"."PERSON_EMAIL" as "PERSON_EMAIL",
"IT_PEOPLE"."PERSON_ROLE" as "PERSON_ROLE",
"IT_PEOPLE"."USERNAME" as "USERNAME",
"IT_PROJECTS"."PROJECT_NAME" as "ASSIGNED_PROJECT"
FROM "#OWNER#"."IT_PEOPLE" "IT_PEOPLE",
"#OWNER#"."IT_PROJECTS" "IT_PROJECTS"
WHERE "IT_PEOPLE"."ASSIGNED_PROJECT"="IT_PROJECTS"."PROJECT_ID" (+)

プロジェクトの割当てはオプションであるため、外部結合が必要であることに注意してください。

5. 「変更の適用」をクリックします。

6. 「対話モード・レポートのリージョン変更の確認」で、「変更の適用」をクリックします。

ページの実行

行った変更を表示するには、ページの右上にある「ページの実行」アイコンをクリックします。開発者としてアプリケーションを実行して一部の列を表示し、図15-18に示すように並べ替える必要がある場合があります。

図15-18 更新された「Users」ページ

「図15-18 更新された「Users」ページ」の説明

「User Information」ページの外観の調整

次に、LOVを追加して「User Information」ページをカスタマイズし、ユーザーが「Role」または「Assigned Project」を簡単に選択できるようにします。

「Projects」のLOVの追加

「Projects」のLOVを追加するには、次のステップを実行します。

1. ページ5 (「User Information」)のページ定義に移動します。

1. フォームを表示している場合は、「開発者」ツールバーの「アプリケーション」をクリックします。

2. 「アプリケーション」ホームページで、「5 - User Information」をクリックします。

2. 「共有コンポーネント」で、「LOV」を検索して「作成」アイコンをクリックします。

3. 「ソース」で、デフォルトの「最初から」を受け入れて「次へ」をクリックします。

4. 「名前およびタイプ」で、次のステップを実行します。

1. 「名前」に、PROJECTSと入力します。

2. 「タイプ」で、「動的」を選択します。

3. 「次へ」をクリックします。

5. 「問合せ」で、既存の文を次と置き換えます。

SELECT project_name d, project_id r
FROM it_projects
ORDER BY d

6. 「LOVの作成」をクリックします。

「Roles」のLOVの追加

「Roles」のLOVを追加するには、次のステップを実行します。

1. 「共有コンポーネント」で、「LOV」を検索して「作成」アイコンをクリックします。

2. 「ソース」で、デフォルトの「最初から」を受け入れて「次へ」をクリックします。

3. 「名前およびタイプ」で、次のステップを実行します。

1. 「名前」に、ROLESと入力します。

2. 「タイプ」で、「静的」を選択します。

3. 「次へ」をクリックします。

4. 表15-2に示す表示値と戻り値の組合せを入力します。

表15-2 表示値と戻り値の組合せ

表示値

戻り値

CEO

CEO

Manager

Manager

Lead

Lead

Member

Member

5. 「LOVの作成」をクリックします。

表示属性の編集

P5_PERSON_ROLEの表示属性を編集するには、次のステップを実行します。

1. ページ5の「ページの編集」アイコンをクリックします。

2. 「アイテム」で、「P5_PERSON_ROLE」をクリックします。

3. 「名前」セクションの「表示形式」リストから、「ラジオ・グループ」を選択します。

4. 「ラベル」までスクロールします。

5. 「ラベル」をRoleに変更します。

6. 「要素」で、「フォーム要素オプション属性」に次のように入力します。

class="instructiontext"

これによって、各ラジオ・グループ・オプションに関連付けられたテキストがページの他のアイテムと同じサイズになるように指定されます。

7. 「LOV」までスクロールします。

8. 「名前付きLOV」リストから「ROLES」を選択します。

9. 「変更の適用」をクリックします。

P5_ASSIGNED_PROJECTの表示属性を編集するには、次のステップを実行します。

1. 「アイテム」で、「P5_ASSIGNED_PROJECT」をクリックします。

2. 「名前」セクションの「表示形式」リストから、「選択リスト」を選択します。

3. 「LOV」までスクロールします。

4. 「LOV」で、次のステップを実行します。

1. 「名前付きLOV」リストから「PROJECTS」を選択します。

2. 「NULLを表示」で、「はい」を選択します。

3. 「NULL表示値」に、次のように入力します。

- None -

5. 「変更の適用」をクリックします。

フィールドおよびフィールド・ラベルの表示を変更するには、次のステップを実行します。

1. 「アイテム」で、「すべて編集」アイコンをクリックします。

2. P5_PERSON_NAMEに対して、次のステップを実行します。

1. 「プロンプト」に、Nameと入力します。

2. 「幅」に、60と入力します。

3. P5_PERSON_EMAILに対して、次のステップを実行します。

1. 「プロンプト」に、Email Addressと入力します。

2. 「幅」に、60と入力します。

4. P5_USERNAMEに対して、次のステップを実行します。

1. 「順序」に、35と入力します。

2. 「幅」に、60と入力します。

5. P5_PERSON_ROLEに対して、次のステップを実行します。

1. 「幅」に、7と入力します。

6. 「P5_ASSIGNED_PROJECT」の「順序」に、50と入力します。

7. 「変更の適用」をクリックします。

8. 右上にある「ページの編集」アイコンをクリックして、ページ5のページ定義に戻ります。

「Audit Report」の追加

「User Information」の下部に「Audit Report」リージョンを追加するには、次のステップを実行します。

1. ページ5の編集ページの「リージョン」で、「作成」アイコンを選択します。

2. 「レポート」を選択し、「次へ」をクリックします。

3. 「SQLレポート」を選択して「次へ」をクリックします。

4. 「リージョンの作成」で、次の変更を行います。

- 「タイトル」に、Audit Reportと入力します。

- 「リージョン・テンプレート」で、「非表示と表示のリージョン」を選択します。

- 「次へ」をクリックします。

5. 「SQL問合せ、またはSQL問合せを戻すPL/SQLファンクションを入力」に、次のように入力します。

SELECT  CREATED_ON, CREATED_BY,
MODIFIED_ON, MODIFIED_BY
FROM  IT_PEOPLE
WHERE PERSON_ID = :P5_PERSON_ID

6. 「リージョンの作成」をクリックします。

7. 「リージョン」で、「Audit Report」の横にある「レポート」をクリックします。

8. 「レイアウトおよびページ区切り」で、次の変更を行います。

- 「レポート・テンプレート」で、デフォルトの「デフォルト: 縦のレポート、look 1(NULL列を含む)」を受け入れます。

- 「ページ区切りスキーム」で、「- ページ区切りが選択されていない -」を選択します。

- 「部分ページ・リフレッシュの有効化」で、「いいえ」を選択します。

- 「行数」に、15と入力します。

- 「行カウント最大値」に、500と入力します。

9. 「変更の適用」をクリックします。

検証の作成

「レポート付きの表のフォーム」ウィザードによって、「Name」、「Email」、「Role」および「Username」のNOT NULL検証が作成されました。リーダーおよびメンバーにプロジェクトが割り当てられ、CEOおよびマネージャには割り当てられないようにするには、別の検証を手動で作成する必要があります。通常は、高速の組込み検証タイプを使用することをお薦めします。ただし、この複合タイプの検証では、PL/SQL検証を作成します。

適切なユーザーがプロジェクトに割り当てられていることを確認する検証を追加するには、次のステップを実行します。

1. 「ページ・プロセス」の「検証」で、「作成」アイコンをクリックします。

2. 「レベル」で、デフォルトの「アイテム・レベルの検証」を受け入れて「次へ」をクリックします。

3. 「アイテム」で、「User Information: 50.P5_ASSIGNED_PROJECT(Assigned Project)」を選択して「次へ」をクリックします。

4. 「検証方法」で、次のステップを実行します。

1. 「PL/SQL」を選択して「次へ」をクリックします。

2. デフォルトの「PL/SQL式」を受け入れて、「次へ」をクリックします。

5. 「順序と名前」で、次のステップを実行します。

1. 「順序」に、60と入力します。

2. 「検証名」に、PROJECT_MAND_FOR_LEADER_AND_MEMBERと入力します。

3. 残りのデフォルトを受け入れて「次へ」をクリックします。

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と置換されます。このため、検証に含めるには、文字列が認識および置換されないように分割する必要があります。

2. 「エラー・メッセージ」に、次のように入力します。

Leads and Members must have an Assigned Project. CEO and Managers cannot have an Assigned Project.

3. 「次へ」をクリックします。

7. 「作成」をクリックします。

「Users」ページおよび「User Information」ページの実行

新しい「Users」ページおよび「User Information」ページを表示するには、ページの右上にある「ページの実行」アイコンをクリックします。

1. 「アプリケーション」ホーム・ブレッドクラムをクリックします。このチュートリアルでこれまで作成したページ(「Users」、「User Information」ページなど)が表示されます。

2. 「アプリケーションの実行」アイコンをクリックします。図15-19に示すように、「Home」ページにイメージ・リンクのリストが表示されます。

図15-19

「図15-19」の説明

3. 右端にある「Users」リンクをクリックします。「Users」ページが図15-20「「Users」ページ」のように表示されます。

図15-20 「Users」ページ

「図15-20 「Users」ページ」の説明

4. Carla Downingの左にある「編集」アイコンをクリックします。「Users Information」ページが図15-21のように表示されます。

図15-21 Carla Downingの「User Information」

「図15-21 Carla Downingの「User Information」」の説明

「Lead」ロールまたは「Member」ロールを持つユーザーにプロジェクトが割り当てられていることを確認する検証プロセスをテストします。

5. 「Assigned Project」で、「- なし -」を選択して「変更の適用」をクリックします。「User Information」ページにエラー・メッセージが表示されます。
次に、Issue Trackerアプリケーションに新しいユーザーを追加します。

6. 「Users」ブレッドクラムをクリックして「Users」ページに戻ります。

7. 「Add User>」ボタンをクリックします。図15-22「「Add User」ページ」に示すように、「User Information」フォームが表示されます。

図15-22 「Add User」ページ

「図15-22 「Add User」ページ」の説明

8. 新しいユーザーの名前、電子メール・アドレスおよびユーザー名を入力してロールを選択します。ロールが「Lead」または「Member」でないかぎり、プロジェクトを割り当てないでください。

注意:
検証プロセスでは、CEOまたはManagerにはプロジェクトが割り当てられていないこと、およびLeadまたはMemberにはプロジェクトが割り当てられていることが確認されます。検証プロセスをテストするために、これらの条件のいずれかに違反して「作成」をクリックします。エラー・メッセージが表示されます。

9. 「作成」をクリックします。「Users」ページに新しく追加されたユーザーが表示されます。

問題を追跡するためのページの追加

次に、IT_ISSUESから問題の情報を取得するためのページを作成する必要があります。

この項の内容は次のとおりです。

- 問題のページの概要

- 問題のレポートの作成

- 「Issue Details」の調整

- 問題のレポートの追加

- 「Issues」ページおよび「Issue Details」ページの実行

注意:
このアプリケーションについてすでに理解している場合は、「問題のページの概要」をスキップして「問題のレポートの作成」に進んでください。

問題のページの概要

このアプリケーションには、「Issues」の複数のビューが必要です。これらのビューは、1つのレポートとして作成するか、または別々のレポートとして作成することができます。この演習では、「Issues」メンテナンス・フォームを含む複雑なレポートを作成します。このメンテナンス・フォームを複数の場所にリンク付けします。最終的に、問題を発見したユーザー、プロジェクト、割り当てられたユーザー、ステータスまたは優先順位ごとの問題が「Issues」レポートに表示されます。

この項を完了すると、図15-23「「Issues」ページ」および図15-24「Issue Details」に示す「Issues」ページと「Issue Details」ページがアプリケーションに含まれます。

図15-23 「Issues」ページ

「図15-23 「Issues」ページ」の説明

図15-24 「Issue Details」

図15-24 「Issue Details」の説明

「Issues」ページ(6 - Issues)

このページには、システムに入力された問題が一般的な問題情報とともにレポートされます。このページには、次のコンポーネントが含まれています。

- Issue Summary: 問題についての簡単な説明。

- Identified Date: 問題の発生日。

- Status: 問題のステータス(「Open」、「Closed」または「On-hold」)。

- Priority: 問題の優先度(「High」、「Medium」または「Low」)。

- Target Resolution Date: この問題を終結する必要がある日。

- Progress: この問題の進捗の簡単な説明。

- Actual Resolution Date: この問題を終結した日。

- Identified By: この問題を発見したユーザー。

- Project Name: この問題が発生したプロジェクト。このプロジェクトは、システムにすでに指定されているLOVです。

- Assigned To: この問題の解決を割り当てられたユーザー。このユーザーは、システムにすでに入力されているユーザーである必要があります。

- 検索リージョン: 検索条件を選択して「実行」ボタンをクリックすると、フィルタ処理されたレポートを取得できます。

- 編集アイコン: ユーザー情報を編集するには、ユーザー名の左にある編集アイコンをクリックします。「User Information」ページに、選択したユーザーの情報が表示されます。

- 「Add Issue」ボタン: このボタンをクリックすると、新しい問題を追加できます。特定の問題の詳細を入力するための空の「Issue Details」ページが表示されます。

「Issue Details」ページ(7 - Issue Details)

このフォームで、既存の問題情報の編集および新しい問題の追加を行うことができます。「Issues」ページの「Add Issue」ボタンまたは編集アイコンをクリックすると、この詳細ページが表示されます。このページには、次のコンポーネントが含まれています。

- 取消: 未適用の変更を送信せずに「Issues」ページに戻ります。

- 削除: 削除確認メッセージからOKのレスポンスを受信した後で、データベースから問題を削除します。このボタンは、問題の編集時に表示され、問題の追加時には表示されません。

- 変更の適用: 問題の変更をデータベースにコミットします。このボタンは、問題の編集時に表示され、問題の追加時には表示されません。

- 作成: データベースに問題を追加します。このボタンは、問題の編集時には表示されず、問題の追加時に表示されます。

- Issue Details: このリージョンで、特定の問題情報を入力できます。

- Audit Report: このリージョンを展開すると、問題の監査情報が表示されます。監査情報は編集できません。問題を追加するか、または問題の詳細を編集すると、この問題に対する監査情報が自動的に更新されます。

問題のレポートの作成

IT_ISSUESを管理するためのレポートを作成するには、次のステップを実行します。

1. 「開発者」ツールバーで「アプリケーション」をクリックします。

2. 「ページの作成」をクリックします。

3. 「フォーム」を選択して「次へ」をクリックします。

4. 「レポート付きの表のフォーム」を選択して「次へ」をクリックします。

5. 「表/ビューの所有者」で、適切なスキーマを選択して「次へ」をクリックします。

6. 「表/ビューの名前」で、「IT_ISSUES」を選択して「次へ」をクリックします。

7. 「レポート・ページの定義」で、次のステップを実行します。

1. 「実装」で、「対話モード」を選択します。

2. 「ページ番号」に、6と入力します。

3. 「ページ名」に、Issuesと入力します。

4. 「リージョン・タイトル」に、Issuesと入力します。

5. 「リージョン・テンプレート」で、「テンプレートなし」を選択します。

6. 「ブレッドクラム」で、「ブレッドクラム」を選択します。
「ブレッドクラム・エントリの作成」セクションが表示されます。

7. 「エントリ名」に、Issuesと入力します。

8. 「親エントリの選択」で、「Home」リンクを選択します。

9. 残りのデフォルトを受け入れて「次へ」をクリックします。

8. 「レポート・ページの定義」タブ設定で、次の変更を行います。

1. 「タブ・オプション」で、「既存のタブ・セットを使用して、そのタブ・セット内に新しいタブの作成」を選択します。

2. 「タブ・セット」で、「Issue Tracker」を選択します。

3. 「新しいタブ・ラベル」に、Issuesと入力します。

4. 「次へ」をクリックします。

9. 「タブ・セット」で、「Issue Tracker」を選択して「次へ」をクリックします。

10. 「新しいタブ・ラベル」にIssuesと入力し、「次へ」をクリックします。

11. 「列の選択」で、[Ctrl]キーを押しながら次の列を選択します。

- ISSUE_ID

- ISSUE_SUMMARY

- IDENTIFIED_BY_PERSON_ID

- IDENTIFIED_DATE

- RELATED_PROJECT_ID

- ASSIGNED_TO_PERSON_ID

- STATUS

- PRIORITY

- TARGET_RESOLUTION_DATE

- PROGRESS

- ACTUAL_RESOLUTION_DATE

12. 「次へ」をクリックします。

13. 「リンク・イメージの編集」で、最初のオプションを選択して「次へ」をクリックします。

14. 「フォーム・ページの定義」で、次のステップを実行します。

1. 「ページ番号」に、7と入力します。

2. 「ページ名」に、Issue Detailsと入力します。

3. 「リージョン・タイトル」に、Issue Detailsと入力します。

4. 「リージョン・テンプレート」で、「フォーム・リージョン」を選択します。

5. 「ブレッドクラムの作成」エントリの「エントリ名」に、Issue Detailsと入力します。

6. 「次へ」をクリックします。

15. 「主キー」で、デフォルトの「ISSUE_ID」を受け入れて「次へ」をクリックします。

16. 「主キー列のソースの定義」で、デフォルトの「既存のトリガー」を受け入れて「次へ」をクリックします。

17. 「列の選択」で、「CREATED_ON」、「CREATED_BY」、「MODIFIED_ON」および「MODIFIED_BY」以外のすべての列を選択して「次へ」をクリックします。
後続のステップの「監査」リージョンの作成時に、CREATED_ON、CREATED_BY、MODIFIED_ONおよびMODIFIED_BY列がページ7 (「Issue Details」)に追加されます。

18. 「挿入」、「更新」および「削除」で、デフォルト値「はい」を受け入れて「次へ」をクリックします。

19. 選択内容を確認して、「終了」をクリックします。

20. 「ページの編集」をクリックします。

「Issue Details」の調整

このページの外観を、図15-24「Issue Details」のように変更する必要があります。列およびフィールドの表示方法の変更、同様の情報のリージョンへのページの再構成および新しい問題を順次作成するためのボタンの作成を行う必要があります。

- LOVの追加

- 特定のアイテムの編集

- アイテムをグループ化するためのリージョンの作成

- 適切なリージョンへのアイテムの移動

- 「監査」列の表示の変更

- コール元ページへのユーザーの移動

- 複数の問題を順次追加する機能の追加

- ページの実行

LOVの追加

次に、「Status」、「Priorities」および「People」のLOVを追加する必要があります。「Status」のLOVを追加するには、次のステップを実行します。

1. ページ7 (「Issue Details」)のページ定義に移動します。

2. 「共有コンポーネント」の「LOV」で、「作成」アイコンをクリックします。

3. 「LOVの作成」で、デフォルトの「最初から」を受け入れて「次へ」をクリックします。

4. 「LOVの作成」で、次の変更を行います。

- 「名前」に、STATUSと入力します。

- 「タイプ」で、「静的」を選択します。

- 「次へ」をクリックします。

5. 表15-3に示す表示値と戻り値の組合せを入力します。

表15-3 表示値と戻り値の組合せ

表示値

戻り値

Open

Open

On-Hold

On-Hold

Closed

Closed

6. 「LOVの作成」をクリックします。

「Priorities」のLOVを追加するには、次のステップを実行します。

1. 「LOV」ページで、「作成」をクリックします。

2. 「LOVの作成」で、デフォルトの「最初から」を受け入れて「次へ」をクリックします。

3. 「LOVの作成」で、次の変更を行います。

1. 「名前」に、PRIORITIESと入力します。

2. 「タイプ」で、「静的」を選択します。

3. 「次へ」をクリックします。

4. 表15-4に示す表示値と戻り値の組合せを入力します。

表15-4 表示値と戻り値の組合せ

表示値

戻り値

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 r
FROM it_people
ORDER BY 1

5. 「LOVの作成」をクリックします。

6. ページ7のページ定義に移動します。

特定のアイテムの編集

次に、個々のアイテムを編集します。P7_IDENTIFIED_BY_PERSON_IDを編集するには、次のステップを実行します。

1. ページ7の「ページ定義」の「アイテム」で、「P7_IDENTIFIED_BY_PERSON_ID」をクリックします。

2. 「名前」に、P7_IDENTIFIED_BYと入力します。

3. 「名前」セクションの「表示形式」リストから、「選択リスト」を選択します。

4. 「ラベル」の「ラベル」に、Identified Byと入力します。

5. 「LOV」で、次の変更を行います。

1. 「名前付きLOV」で、「PEOPLE」を選択します。

2. 「NULLを表示」で、「はい」を選択します。ベース列は必須ですが、リストの最初の名前がデフォルトの値にならないようにする必要があります。

3. 「NULL表示値」に、次のように入力します。

- Select Person -

6. ページの上部にある「次へ」ボタン(>)をクリックして、次のアイテムP7_IDENTIFIED_DATEに移動します。
「ページ・アイテムの編集」ページが表示されます。

P7_IDENTIFIED_DATEを編集するには、次のステップを実行します。

1. 「デフォルト」までスクロールして、次のステップを実行します。

1. 「デフォルト値」に、次のように入力します。

to_char(sysdate,:APP_DATE_FORMAT);

2. 「デフォルト値のタイプ」で、「PL/SQL式」を選択します。

2. ページの上部にある「次へ」ボタン(>)をクリックして、次のアイテムP7_RELATED_PROJECT_IDに移動します。
「ページ・アイテムの編集」ページが表示されます。

P7_RELATED_PROJECT_IDを編集するには、次のステップを実行します。

1. 「名前」に、P7_RELATED_PROJECTと入力します。

2. 「名前」セクションの「表示形式」リストから、「選択リスト」を選択します。

3. 「ラベル」に、Related Projectと入力します。

4. 「LOV」までスクロールします。「LOV」で、次のステップを実行します。

1. 「名前付きLOV」で、「PROJECTS」を選択します。

2. 「NULLを表示」で、「はい」を選択します。

3. 「NULL表示値」に、次のように入力します。

- Select Project -

5. ページの上部にある「次へ」ボタン(>)をクリックして、P7_ASSIGNED_TO_PERSON_IDに移動します。

P7_ASSIGNED_TO_PERSON_IDを編集するには、次のステップを実行します。

1. 「名前」に、P7_ASSIGNED_TOと入力します。

2. 「名前」セクションの「表示形式」リストから、「選択リスト」を選択します。

3. 「ラベル」に、Assigned Toと入力します。

4. 「LOV」までスクロールします。「LOV」で、次のステップを実行します。

1. 「名前付きLOV」で、「PEOPLE」を選択します。

2. 「NULLを表示」で、「はい」を選択します。

3. 「NULL表示値」に、次のように入力します。

- Select -

5. ページの上部にある「次へ」ボタン(>)をクリックして、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. 「デフォルト」で、「デフォルト値」にLowと入力します。

5. 「LOV」で、次のステップを実行します。

1. 「名前付きLOV」で、「PRIORITIES」を選択します。

2. 「列の数」に、3と入力します。
この選択は、3つの有効な値が存在しているということを反映しています。

6. 「変更の適用」をクリックします。

アイテム名の変更を一致させるための検証の変更

検証を編集するには、次のステップを実行します。

1. ページ7の編集ページの「検証」で、「P7_IDENTIFIED_BY_PERSON_ID not null」を選択します。

2. 「名前」に、P7_IDENTIFIED_BY not nullと入力します。

3. 「検証式1」に、P7_IDENTIFIED_BYと入力します。

4. 「エラー・メッセージ」までスクロールします。

5. 「エラー・メッセージ」に、次のように入力します。

Identified By must have some value.

6. 「P7_RELATED_PROJECT_ID not null」の編集ページが表示されるまで、ページの上部にある「次へ」アイコン(>)をクリックします。

7. 「名前」に、P7_RELATED_PROJECT not nullと入力します。

8. 「検証式1」に、P7_RELATED_PROJECTと入力します。

9. 「エラー・メッセージ」までスクロールします。

10. 「エラー・メッセージ」に、次のように入力します。

Related Project must have some value.

11. 「変更の適用」をクリックします。

12. ページ7の「実行」アイコンをクリックします。「Issue Details」ページが図15-25のように表示されます。

図15-25 アイテムをグループ化する前の「Issue Details」

「図15-25 アイテムをグループ化する前の「Issue Details」」の説明

アイテムをグループ化するためのリージョンの作成

現在、すべてのアイテムが1つの大きいリージョンにグループ化されています。論理グループにアイテムを表示すると、ユーザーはデータ・エントリを簡単に行うことができます。このため、次に、「Buttons」、「Progress」、「Resolution」および「Audit Information」という4つの新しいリージョンを作成します。また、既存のリージョンの名前を変更します。

新しいリージョンを作成してアイテムをグループ化するには、次のステップを実行します。

1. ページ下部の「ページの編集7」リンクをクリックします。

2. 「リージョン」で、「作成」アイコンをクリックします。

3. 「複数のHTML」を選択して、「次へ」をクリックします。

4. 最初の行では、次の操作を行います。

1. 「順序」に、15と入力します。

2. 「タイトル」に、Progressと入力します。

3. 「テンプレート」で、「フォーム・リージョン」を選択します。

5. 2番目の行では、次の操作を行います。

1. 「順序」に、20と入力します。

2. 「タイトル」に、Resolutionと入力します。

3. 「テンプレート」で、「フォーム・リージョン」を選択します。

6. 「リージョンの作成」をクリックします。

7. 「リージョン」で、「作成」アイコンをクリックします。

8. 「レポート」を選択し、「次へ」をクリックします。

9. 「SQLレポート」を選択して「次へ」をクリックします。

10. 「タイトル」に、Audit Informationと入力します。

1. 「タイトル」に、Audit Informationと入力します。

2. 「リージョン・テンプレート」で、「非表示と表示のリージョン」を選択します。

3. 「順序」に、40と入力します。

4. 「次へ」をクリックします。

11. 「SQL問合せ、またはSQL問合せを戻すPL/SQLファンクションを入力」に、次のように入力します。

select     "IT_ISSUES"."CREATED_ON" as "CREATED_ON",
"IT_ISSUES"."CREATED_BY" as "CREATED_BY",
"IT_ISSUES"."MODIFIED_ON" as "MODIFIED_ON",
"IT_ISSUES"."MODIFIED_BY" as "MODIFIED_BY"
from    "IT_ISSUES" "IT_ISSUES"
where   ISSUE_ID = :P7_ISSUE_ID

12. 「リージョンの作成」をクリックします。

13. 「Audit Information」リージョンの横にある「レポート」をクリックします。

14. 「レイアウトおよびページ区切り」で、次の変更を行います。

1. 「レポート・テンプレート」で、デフォルトの「デフォルト: 縦のレポート、look 1(NULL列を含む)」を受け入れます。

2. 「ページ区切りスキーム」で、「- ページ区切りが選択されていない -」を選択します。

3. 「部分ページ・リフレッシュの有効化」で、「いいえ」を選択します。

4. 「行数」に、15と入力します。

5. 「行カウント最大値」に、500と入力します。

6. 「変更の適用」をクリックします。

適切なリージョンへのアイテムの移動

次に、各アイテムを適切なリージョンに移動します。一部のアイテムの幅を変更する必要もあります。

アイテムを適切なリージョンに移動するには、次のステップを実行します。

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_ISSUE_SUMMARYに、80と入力します。

- P7_ISSUE_DESCRIPTIONに、80と入力します。

- P7_IDENTIFIED_DATEに、12と入力します。

- P7_TARGET_RESOLUTION_DATEに、12と入力します。

- P7_PROGRESSに、80と入力します。

- P7_ACTUAL_RESOLUTION_DATEに、12と入力します。

- P7_RESOLUTION_SUMMARYに、80と入力します。

5. 「順序」で、次のように編集します。

- P7_ISSUE_IDに、168と入力します。

- P7_ISSUE_SUMMARYに、169と入力します。

- P7_ISSUE_DESCRIPTIONに、170と入力します。

- P7_IDENTIFIED_BYに、173と入力します。

- P7_IDENTIFIED_DATEに、174と入力します。

- P7_RELATED_PROJECTに、172と入力します。

- P7_ASSIGNED_TOに、159と入力します。

- P7_STATUSに、160と入力します。

- P7_PRIORITYに、161と入力します。

- P7_TARGET_RESOLUTION_DATEに、162と入力します。

- P7_PROGRESSに、164と入力します。

- P7_ACTUAL_RESOLTUTION_DATEに、165と入力します。

- P7_RESOLUTION_SUMMARYに、167と入力します。

6. 「変更の適用」をクリックします。

7. ページ7の「実行」アイコンをクリックします。「Issue Details」ページが図15-26のように表示されます。

図15-26 アイテムをグループ化した後の「Issue Details」

「図15-26 アイテムをグループ化した後の「Issue Details」」の説明

「Issues Details」、「Progress」および「Resolution」リージョンの表示の変更

これらの列の表示方法を変更するには、次のステップを実行します。

1. ページ下部の「ページの編集7」リンクをクリックします。

2. 「アイテム」で、「P7_ISSUE_SUMMARY」をクリックします。

3. 「表示形式」で、「テキスト領域」を選択します。

4. 「ラベル」の「横/縦の位置合せ」で、「上部」を選択します。

5. 「要素」で、次の変更を行います。

1. 「最大幅」に、200と入力します。

2. 「高さ」に、2と入力します。

6. ページ上部の「次へ」アイコンを選択して、P7_ISSUE_DESCRIPTIONのページ・アイテムの編集を表示します。

7. 「ラベル」の「横/縦の位置合せ」で、「上部」を選択します。

8. 「要素」で、次の変更を行います。

1. 「最大幅」に、2000と入力します。

2. 「高さ」に、4と入力します。

9. 「変更の適用」をクリックします。

10. 「アイテム」で、「P7_PROGRESS」をクリックします。

11. 「ラベル」の「横/縦の位置合せ」で、「上部」を選択します。

12. 「要素」で、「最大幅」に2000と入力します。

13. 「変更の適用」をクリックします。

14. 「アイテム」で、「P7_RESOLUTION_SUMMARY」をクリックします。

15. 「ラベル」の「横/縦の位置合せ」で、「上部」を選択します。

16. 「要素」で、「最大幅」に2000と入力します。

17. 「変更の適用」をクリックします。

18. ページの上部の「ページの実行7」アイコンをクリックします。図15-27に示すように、「Issue Details」ページのテキスト領域の上に「Issue Summary」、「Issue Description」および「Progress」ラベルが表示されます。

図15-27 テキスト領域の上にラベルが表示された「Issue Details」

「図15-27 テキスト領域の上にラベルが表示された「Issue Details」」の説明

次に、各リージョンに「HTML表の停止および開始」アイテムを追加します。これによって、リージョン内のすべてのアイテムが左揃えになります。

19. 「開発者」ツールバーで、「ページの編集7」リンクをクリックします。

20. 「アイテム」で、「作成」アイコンをクリックします。

21. 「表の停止および開始」を選択して「次へ」をクリックします。

22. 「Related Project」、「Identified By」および「Identified Date」の位置を変更するには、「表示および位置名」で次の変更を行います。

1. 「アイテム名」に、P7_3_0と入力します。

2. 「順序」に、171と入力します。

3. 「リージョン」で、「Issues Identification (1) 10」を選択します。

4. 「アイテムの作成」をクリックします。

23. 「アイテム」で、「作成」アイコンをクリックします。

24. 「表の停止および開始」を選択して「次へ」をクリックします。

25. 「Assigned To」、「Status」、「Priority」および「Target Resolution Date」の位置を変更するには、「表示および位置名」で次の変更を行います。

1. 「アイテム名」に、P7_4_0と入力します。

2. 「順序」に、163と入力します。

3. 「リージョン」で、「Progress (1) 15」を選択します。

4. 「アイテムの作成」をクリックします。

26. 「アイテム」で、「作成」アイコンをクリックします。

27. 「表の停止および開始」を選択して「次へ」をクリックします。

28. 「Actual Resolution Date」の位置を変更するには、「表示および位置名」で次の変更を行います。

1. 「アイテム名」に、P7_1_0と入力します。

2. 「順序」に、166と入力します。

3. 「リージョン」で、「Resolution (1) 20」を選択します。

4. 「アイテムの作成」をクリックします。

29. 「ページの実行7」アイコンをクリックします。これで、次に示すように「Issue Details」ページのすべてのアイテムが適切な位置に表示されます。

図15-28 位置変更後の「Issue Details」

「図15-28 位置変更後の「Issue Details」」の説明

「監査」列の表示の変更

「監査」列は、表示可能かつ編集不可にする必要があるため、表示専用にします。次の演習では、「監査情報」リージョンの条件を作成します。結果として、「監査情報」リージョンは、ユーザーが既存の問題を編集する場合は表示されますが、新しい問題を作成する場合は表示されなくなります。

「監査情報」リージョンの条件を作成するには、次のステップを実行します。

1. ページ下部の「ページの編集7」リンクをクリックします。

2. 「リージョン」で、「監査情報」をクリックします。

3. 「条件付き表示」までスクロールします。

4. 「条件タイプ」で、「式1のアイテムの値がNULL」を選択します。

5. 「式1」に、次のように入力します。

P7_ISSUE_ID

6. 「変更の適用」をクリックします。

コール元ページへのユーザーの移動

この「Issue Details」ページは複数の場所からコールされるため、ユーザーは、表示を終了すると、コール元ページに戻る必要があります。これを行うには、「Issue Details」ページにアイテムを作成してブランチを変更します。「Issue Details」ページがコールされるたびに、コール元ページの番号を指定してアイテムを設定する必要があります。

非表示アイテムを作成するには、次のステップを実行します。

1. 「アイテム」で、「作成」アイコンをクリックします。

2. 「アイテム・タイプの選択」で、「非表示」を選択して「次へ」をクリックします。

3. 「非表示のアイテム・タイプ」で、「非表示」を選択して「次へ」をクリックします。

4. 「表示位置および名前」で、次のステップを実行します。

1. 「アイテム名」に、次のように入力します。

P7_PREV_PAGE

2. 「順序」に、175と入力します。

3. 「リージョン」で、「Issue Details」を選択します。

4. 「次へ」をクリックします。

5. 「デフォルト」に、1と入力します。

6. 「アイテムの作成」をクリックします。
ページ7のページ定義が表示されます。

次に、P7_PREV_PAGEに格納されているページ番号に戻るように「取消」ボタンを編集します。

「取消」ボタンを編集するには、次のステップを実行します。

1. 「ボタン」で、「取消」をクリックします。

2. 「オプションのURLリダイレクト」までスクロールします。

3. 「ページ」に、次のように入力します。

&P7_PREV_PAGE.

末尾のピリオドに注意してください。

4. 「このページのページ区切りをリセット」を選択します。

5. 「変更の適用」をクリックします。

ブランチを編集するには、次のステップを実行します。

1. 「ブランチ」で、「プロセスの後」ブランチ、「ページに移動」、「6」および「条件なし」を選択します。

2. 「アクション」で、次の変更を行います。

1. 「このページのページ区切りをリセット」を選択します。

2. 「プロセスの成功メッセージを含める」を選択解除します。

3. 「キャッシュのクリア」に、7と入力します。

4. 「次のアイテムを設定」に、「P7_PREV_PAGE」と入力します。

3. 「変更の適用」をクリックします。

複数の問題を順次追加する機能の追加

次に、ユーザーが一度に複数の問題を追加できる機能を追加します。これを行うには、まず新しいボタンを追加し、次に新しいブランチを作成します。

新しいボタンを追加するには、次のステップを実行します。

1. 「ボタン」で、「ボタン」セクションの右上にある「すべて編集」アイコンと「作成」アイコンの間の「「コピー」ボタン」アイコンをクリックします。「コピー」アイコンは、図15-29のようになります。

図15-29 「コピー」ボタン・アイコン

「図15-29 「コピー」ボタン・アイコン」の説明

2. コピーする「ボタン」に、CREATEと入力します。

3. 「ターゲット・ページ」で、デフォルトの「7」を受け入れて「次へ」をクリックします。

4. 「新しいボタン」で、次のステップを実行します。

1. 「ボタン名」で、CREATE_AGAINと入力します。

2. 「ラベル」に、作成後、別のものの作成と入力します。

3. 残りのデフォルトを受け入れて「「コピー」ボタン」をクリックします。

次に、「作成」ページでユーザーを保持するブランチを作成します。

ページのキャッシュが消去されるとそのアイテムの値が失われるため、このブランチによって、P7_PREV_PAGEの再設定も行われることに注意してください。この新しいブランチの順序は0になります。順序を0に設定すると、「作成後、さらに作成」ボタンが使用されている場合のみ、このブランチはデフォルトのブランチの前に起動されます。

「作成」ページでユーザーを保持するブランチを作成するには、次のステップを実行します。

1. 「ページ・プロセス」の「ブランチ」で、「作成」アイコンをクリックします。

2. 「ポイントおよびタイプ」で、デフォルトを受け入れて「次へ」をクリックします。

3. 「ターゲット」で、次の変更を行います。

1. 「ページ」に、7と入力します。

2. 「このページのページ区切りをリセット」を選択します。

3. 「キャッシュのクリア」に、7と入力します。

4. 「次のアイテムを設定」に、次のように入力します。

P7_PREV_PAGE

5. 「次の値を使用」に、次のように入力します(ピリオドを含めます)。

&P7_PREV_PAGE.

6. 「次へ」をクリックします。

4. 「ブランチ条件」で、次の変更を行います。

1. 「順序」に、0と入力します。

2. 「対象ボタン」で、「CREATE_AGAIN」(作成後、さらに作成)を選択します。

5. 「ブランチの作成」をクリックします。

ページの実行

変更を表示するには、「ページの実行」アイコンをクリックします。新しいフォームが、図15-30「Issue Detailsの調整」のように表示されます。

図15-30 「Issue Details」の調整

「図15-30 「Issue Details」の調整」の説明

作成したブランチによって、P7_PREV_PAGEの値が検索されます。このページは別のページからコールされなかったため、値は設定されていません。次に、これを修正する必要があります。

問題のレポートの追加

次に、問合せの動的変更がサポートされるように「Issues」レポート・ページを調整します。これを行うには、次の操作を実行する必要があります。

- 「Add Issue」ボタンの変更

- 問合せの変更および表示

- タブの順序変更

「Add Issue」ボタンの変更

「Add Issue」ボタンから「Issue Details」ページをコールするには、次のステップを実行します。

1. ページ6(「Issues」)のページ定義に移動します。

2. 「ボタン」で、「作成」ボタンをクリックします。

3. 「テキスト・ラベル/代替」に、Add Issue>と入力します。

4. 「オプションのURLリダイレクト」で、次の変更を行います。

1. 「次のアイテムを設定」に、P7_PREV_PAGEと入力します。

2. 「次の値を使用」に、6を入力します。

5. 「変更の適用」をクリックします。

問合せの変更および表示

次に、IDではなく、ユーザーおよびプロジェクトの実際の値が表示されるように問合せを変更した後、レポートの表示をクリーンアップします。

SQL問合せを変更するには、次のステップを実行します。

1. 「リージョン」で、「Issues」を選択します。

2. 「ソース」までスクロールします。

3. SQLを次のように置き換えます。

SELECT "IT_ISSUES"."ISSUE_SUMMARY" as "ISSUE_SUMMARY",
"IT_PEOPLE"."PERSON_NAME" as "IDENTIFIED_BY",
"IT_ISSUES"."IDENTIFIED_DATE" as "IDENTIFIED_DATE",
"IT_PROJECTS"."PROJECT_NAME" as "PROJECT_NAME",
decode("IT_PEOPLE_1"."PERSON_NAME",NULL,'Unassigned',
"IT_PEOPLE_1"."PERSON_NAME")
as "ASSIGNED_TO",
"IT_ISSUES"."STATUS" as "STATUS",
"IT_ISSUES"."PRIORITY" as "PRIORITY",
"IT_ISSUES"."TARGET_RESOLUTION_DATE" as "TARGET_RESOLUTION_DATE",
"IT_ISSUES"."PROGRESS" as "PROGRESS",
"IT_ISSUES"."ACTUAL_RESOLUTION_DATE" as "ACTUAL_RESOLUTION_DATE",
"IT_ISSUES"."ISSUE_ID" as "ISSUE_ID",
"IT_ISSUES"."RELATED_PROJECT_ID" as "PROJECT_ID"
FROM "IT_PEOPLE" "IT_PEOPLE_1",
"IT_PROJECTS" "IT_PROJECTS",
"IT_PEOPLE" "IT_PEOPLE",
"IT_ISSUES" "IT_ISSUES"
WHERE "IT_ISSUES"."IDENTIFIED_BY_PERSON_ID"="IT_PEOPLE"."PERSON_ID"
AND "IT_ISSUES"."ASSIGNED_TO_PERSON_ID"="IT_PEOPLE_1"."PERSON_ID"(+)
AND "IT_ISSUES"."RELATED_PROJECT_ID"="IT_PROJECTS"."PROJECT_ID"

4. 「変更の適用」をクリックします。

5. 確定するために、「変更の適用」をクリックします。

列属性を編集するには、次のステップを実行します。

1. 「リージョン」で、「対話モード・レポート」を選択します。

2. ISSUE_IDの「表示テキスト」で、「非表示」を選択します。

3. ISSUE_SUMMARYの左にある「編集」アイコンをクリックします。

4. 「ヘッダーの位置合せ」で、「左」を選択します。

5. ページの上部に戻って「次へ」アイコン(>)をクリックします。IDENTIFIED_DATEの「レポート属性」ページが表示されます。

6. 「ヘッダーの位置合せ」で、「左」を選択します。

7. ページの上部に戻って、IDENTIFIED_BYの「レポート属性」ページが表示されるまで「次へ」(>)アイコンをクリックします。

8. 「ヘッダーの位置合せ」で、「左」を選択します。

9. ページの上部に戻って「次へ」アイコン(>)をクリックします。PROJECT_NAMEの「レポート属性」ページが表示されます。

10. 「ヘッダーの位置合せ」で、「左」を選択します。

11. ページの上部に戻って「次へ」アイコン(>)をクリックします。ASSIGNED_TOの「列属性」ページが表示されます。

12. 「ヘッダーの位置合せ」で、「左」を選択します。

13. ページの上部に戻って「次へ」アイコン(>)をクリックします。PROJECT_IDの「列属性」ページが表示されます。

14. 「表示テキスト」で、「非表示」を選択します。

15. 「変更の適用」をクリックします。

データが見つからなかった場合のメッセージおよびリンク列の詳細を追加するには、次のステップを実行します。

1. 「ページ区切り」までスクロールします。

2. 「データが見つからなかった場合のメッセージ」に、次のように入力します。

No issues found.

3. 「リンク列」までスクロールし、「アイテム2」の「名前」に、P7_PREV_PAGEと入力します。

4. 「アイテム2」の「値」に、6と入力します。

5. 「変更の適用」をクリックします。

タブの順序変更

「Issues」タブを「Projects」タブと「Users」タブの間に移動します。

タブの順序を変更するには、次のステップを実行します。

1. 「アプリケーション」ホーム・ブレッドクラムをクリックします。

2. 「共有コンポーネント」をクリックします。

3. 「ナビゲーション」で、「タブ」を選択します。

4. 「標準タブのタスク」の下の右パネルにある「表示順序の変更」リンクをクリックします。

5. 「順序」列で、次の変更を行います。

1. 「Projects」の「順序」に、15と入力します。

2. 「Users」の「順序」に、30と入力します。

3. 「Issues」の「順序」に、20と入力します。

6. 「変更の適用」をクリックします。

「Issues」ページおよび「Issue Details」ページの実行

新しい「Issues」ページおよび「Issue Details」ページを表示するには、ページの右上にある「ページの実行」アイコンをクリックします。

1. 「アプリケーション」ホーム・ブレッドクラムをクリックします。このチュートリアルでこれまで作成したページ(新しく追加した「Issues」、「Issue Details」ページなど)が表示されます。

2. 「アプリケーションの実行」アイコンをクリックします。図15-31に示すように、「Home」ページにイメージ・リンクのリストが含まれています。

図15-31 「Home」ページ

「図15-31 「Home」ページ」の説明

3. 「Issues」リンクをクリックします。「Issues」ページが表示されます。一部の列の名前を変更したため、このページを初めて実行した場合、「Identify By」、「Project Name」および「Assigned To」列が表示されない場合があります。この場合、このページを実行して表示する列を指定することで、レポートの表示をさらにカスタマイズできます。
表示する列を指定するには、次のステップを実行します。

4. 実行中の「Issues」ページで、「実行」ボタンの右にある「アクション」メニュー・ドロップ・ダウン(図15-32に示す)をクリックします。

図15-32 「アクション」アイコン

「図15-32 「アクション」アイコン」の説明

5. 「列の選択」を選択します。ページは、図15-33のようになります。

図15-33 対話モード・レポートへの列の追加

「図15-33 対話モード・レポートへの列の追加」の説明

6. 「表示しない」リストと「レポートに表示」リストの間の「すべて移動」アイコン(>>)をクリックします。欠落している3つの列が「レポートに表示」リストに移動されます。

7. 「列の選択」領域の右下にある「適用」をクリックします。「Issues」ページが図15-34のようになります。

図15-34 すべての列が表示された「Issues」レポート

「図15-34 すべての列が表示された「Issues」レポート」の説明

次に、いずれかの問題の「Issue Details」を表示します。

8. 問題の左にある「編集」アイコンをクリックします。「Issue Details」ページが図15-35のように表示されます。

図15-35 「Issue Details」

図15-35 「Issue Details」の説明

9. 「Issues」ブレッドクラムをクリックして「Issues」ページに戻ります。

10. 「Add Issue>」ボタンをクリックします。空の「Issue Details」が表示されます。

サマリー・レポートへのページの追加

次に示す個々のレポートにリンクするサマリー・レポート・ページを追加します。

- 「Assign Open Issues」レポート

- 「Issue Summary by Project」レポート

- 「Resolved by Month Identified」レポート

- 「Target Resolution Dates」レポート

- 「Average Days to Resolve」レポート

この項の内容は次のとおりです。

- サマリー・レポート・ページの概要

- サマリー・レポート・ページの追加

- 「Assign Open Issues」レポート・ページの追加

- 「Issue Summary by Project」レポート・ページの追加

- 「Resolved by Month Identified」レポート・ページの追加

- 解決目標日を表示するカレンダの追加

- 解決に要した平均日数を表示する棒グラフの追加

注意:
このアプリケーションについてすでに理解している場合は、「問題のページの概要」をスキップして「問題のレポートの作成」に進んでください。

サマリー・レポート・ページの概要

この演習を完了すると、図15-36「サマリー・レポート・ページ」のようなサマリー・レポート・ページおよび個々のサマリー・レポート用の個別のレポート・ページを使用できます。サマリー・レポート・ページの各イメージは、図15-37「「Issue Summary By Report」および「Assign Open Issues」」および図15-38「「Target Resolution Dates」および「Average Days to Resolve」」に示す個別のサマリー・レポートにリンクされています。

図15-36 サマリー・レポート・ページ

「図15-36 サマリー・レポート・ページ」の説明

図15-37 「Issue Summary By Report」および「Assign Open Issues」

「図15-37 「Issue Summary By Report」および「Assign Open Issues」」の説明

図15-38 「Target Resolution Dates」および「Average Days to Resolve」

「図15-38 「Target Resolution Dates」および「Average Days to Resolve」」の説明

図15-39 Resolved by Month Identified

「図15-39 Resolved by Month Identified」の説明

サマリー・レポート・ページの追加

サマリー・レポート・ページを作成する前に、サマリー・レポート・ページとリンクする各レポートのイメージ・エントリを指定したイメージ・リストを作成する必要があります。

イメージ・リストの作成

イメージ・リストを作成するには、次のステップを実行します。

1. 「アプリケーション」ホーム・ブレッドクラム・リンクをクリックします。

2. 「共有コンポーネント」をクリックします。

3. 「ナビゲーション」で、「リスト」をクリックします。

4. 「作成」をクリックします。

5. 「名前」に、Reportsと入力します。

6. 「リスト・テンプレート」で、「ラベル・リスト付きの横のイメージ」を選択します。

7. 「作成」をクリックします。
次に、イメージ・リストを作成します。

8. 「リスト・エントリを作成 」をクリックします。

9. 「エントリ」で、次の変更を行います。

1. 「順序」に、10と入力します。

2. 「イメージ」に、次のように入力します。

menu/address_book_bx_128x128.png

3. 「リスト・エントリ・ラベル」に、次のように入力します。

Issue Summary<br/>
by Project

10. 「ターゲット」で、「ページ」に9と入力します。このページが、この項の後半で作成する「Issue Summary」レポート・ページになります。

11. 「作成後、別のものを作成」をクリックします。

12. 「エントリ」で、次の変更を行います。

1. 「順序」に、15と入力します。

2. 「イメージ」に、次のように入力します。

menu/eba_checklist_bx_128x128.png

3. 「リスト・エントリ・ラベル」に、次のように入力します。

Assign Open<br/>Issues

13. 「ターゲット」で、「ページ」に8と入力します。このページが、この項の後半で作成する「Assign Open Issues」ページになります。

14. 「作成後、別のものを作成」をクリックします。

15. 「エントリ」で、次の変更を行います。

1. 「順序」に、20と入力します。

2. 「イメージ」に、次のように入力します。

menu/calendar_bx_128x128.png

3. 「リスト・エントリ・ラベル」に、次のように入力します。

Target Resolution<br/>Dates

16. 「ターゲット」で、「ページ」に11と入力します。このページが、この項の後半で作成する「Target Resolution Dates」ページになります。

17. 「作成後、別のものを作成」をクリックします。

18. 「エントリ」で、次の変更を行います。

1. 「順序」に、30と入力します。

2. 「イメージ」に、次のように入力します。

menu/piechart_bx_128x128.png

3. 「リスト・エントリ・ラベル」に、次のように入力します。

Average Days<br/>to Resolve

19. 「ターゲット」で、「ページ」に12と入力します。このページが、この項の後半で作成する「Average Days to Resolve」ページになります。

20. 「作成後、別のものを作成」をクリックします。

21. 「エントリ」で、次の変更を行います。

1. 「順序」に、40と入力します。

2. 「イメージ」に、次のように入力します。

menu/generate_bx_128x128.png

3. 「リスト・エントリ・ラベル」に、次のように入力します。

Issues Resolved<br/>by Month

22. 「ターゲット」で、「ページ」に10と入力します。このページが、この項の後半で作成する「Issues Resolved By Month」ページになります。

23. 「作成」をクリックします。

「Reports」ページの作成

イメージ・リストを参照する「Reports」ページを追加するには、次のステップを実行します。

1. 「アプリケーション」ホーム・ブレッドクラムをクリックします。

2. 「ページの作成」をクリックします。

3. 「空白ページ」を選択して「次へ」をクリックします。

4. 「ページ番号」に14と入力して、「次へ」をクリックします。

5. 「名前」に、Reportsと入力します。

6. 「ブレッドクラム」で、「ブレッドクラム」を選択します。

7. 「親エントリ」で、「Home」を選択します。

8. 「次へ」をクリックします。

9. 「タブ」で、「はい - 既存のタブ・セットを使用して、そのタブ・セット内に新しいタブを作成する。」を選択して、「次へ」をクリックします。

10. 「既存のタブ・セット」で、「Issue Tracker (Home, Projects, Issues...)」を選択して「次へ」をクリックします。

11. 「タブ・ラベル」にReportsと入力し、「次へ」をクリックします。

12. 「終了」をクリックします。

13. 「アプリケーション」ホーム・ブレッドクラムをクリックします。

14. 「共有コンポーネント」をクリックします。

15. 「ナビゲーション」で、「タブ」をクリックします。

16. 「レポート」タブをクリックします。

17. 「編集」アイコンをクリックします。

18. 「順序」に25と入力して、「変更の適用」をクリックします。

19. 「アプリケーション」ホーム・ブレッドクラムをクリックします。

20. 「Reports」ページをクリックします。

21. 「リージョン」で、「作成」ボタンをクリックします。

22. 「リスト」を選択して「次へ」をクリックします。

23. 「タイトル」に、Reportsと入力します。

24. 「リージョン・テンプレート」で、「テンプレートなし」を選択して、「次へ」をクリックします。

25. 「リスト」で、「レポート」を選択します。

26. 「リスト・リージョンの作成」をクリックします。

「Reports」ページの実行

編集ページの上部にある「実行」アイコンをクリックして、「Reports」のページ14を実行します。図15-40に示すとおり、「Reports」ページにイメージ・リストが表示されます。

図15-40 イメージ・リスト追加後の「Reports」ページ

「図15-40 イメージ・リスト追加後の「Reports」ページ」の説明

注意:
この時点では、チュートリアルのすべてのレポートが作成されているわけではないため、各イメージの下のレポート・リンクは機能しません。各レポートが作成されると、これらのリンクは適切なレポートにナビゲートされます。

「Assign Open Issues」レポート・ページの追加

現時点で、「Issues Details」ページで問題を編集して割り当てることができます。次に、「Assign Open Issues」という新しいページを追加して、ユーザーによる複数の問題の一括割当ておよび「Related Project」、「Status」および「Priority」の変更を可能にします。

表形式フォームの作成

複数の問題の割当てをサポートする新しいページを追加するには、次のステップを実行します。

1. 「アプリケーション」ホームページに移動します。

2. 「ページの作成」をクリックします。

3. 「フォーム」を選択して「次へ」をクリックします。

4. 「表形式フォーム」を選択して、「次へ」をクリックします。

5. 「表/ビューの所有者」で、次のステップを実行します。

1. 「表/ビューの所有者」で、適切なスキーマを選択します。

2. 「実行可能な操作」で、「更新のみ」を選択します。
この演習では、ユーザーが問題を作成または削除できるようにすることではなく、問題を割り当てたり既存のレコードを更新できるようにすることをこのフォームの目的としています。

3. 「次へ」をクリックします。

6. 「表/ビューの名前」で、「IT_ISSUES」を選択して「次へ」をクリックします。

7. 「表示列」で、次のステップを実行します。

1. [Ctrl]キーを押しながら、次の列を選択します。

- ISSUE_SUMMARY

- IDENTIFIED_BY_PERSON_ID

- IDENTIFIED_DATE

- RELATED_PROJECT_ID

- ASSIGNED_TO_PERSON_ID

- STATUS

- PRIORITY

2. 「次へ」をクリックします。

8. 「主キー」で、デフォルトの「ISSUE_ID」を受け入れて「次へ」をクリックします。

9. 「主キーのソース」で、デフォルトの「既存のトリガー」を受け入れて「次へ」をクリックします。

10. 「更新可能な列」で、次のステップを実行します。

1. [Ctrl]キーを押しながら、次の列を選択します。

- RELATED_PROJECT_ID

- ASSIGNED_TO_PERSON_ID

- STATUS

- PRIORITY

2. 「次へ」をクリックします。

11. 「ページおよびリージョン属性」で、次のステップを実行します。

1. 「ページ」に、8と入力します。

2. 「ページ名」に、Assign Open Issuesと入力します。

3. 「リージョン・タイトル」に、Assign Issuesと入力します。

4. 「リージョン・テンプレート」で、「テンプレートなし」を選択します。

5. 「ブレッドクラム」で、「ブレッドクラム」を選択します。

6. 「エントリ名」に、Assign Open Issuesと入力します。

7. 「親エントリ」で、「Reports」を選択します。

8. 「次へ」をクリックします。

12. 「タブ・オプション」で、「既存のタブ・セットを使用して、そのタブ・セット内の既存のタブを再利用」を選択します。

13. 「タブ・セット」で、「Issue Tracker (Home, Dashboard, Projects...)」を選択します。

14. 「次へ」をクリックします。

15. 「タブを使用」で、「T_REPORTS」を選択して「次へ」をクリックします。

16. 「ボタン・ラベル」で、次のステップを実行します。

1. 「「取消」ボタン・ラベル」で、デフォルトを受け入れます。

2. 「「送信」ボタン・ラベル」に、変更の適用と入力します。

3. 「次へ」をクリックします。

17. 「ブランチ」で、「「取消」ボタンがクリックされたらこのページにブランチ」に14と入力して「次へ」をクリックします。

18. 選択内容を確認して、「終了」をクリックします。

LOVの追加

初期表形式フォームを作成した後、問題を簡単に選択するためにLOVを追加する必要があります。また、未割当ての問題のみが表示されるように問合せを制限する必要があります。

LOVを追加するには、次のステップを実行します。

1. 「成功」ページで、「ページの編集」をクリックします。
ページ8(「Assign Open Issues」)のページ定義が表示されます。

2. 「リージョン」で、「Assign Issues」をクリックします。

3. 「ソース」の「リージョン・ソース」で、既存の文を次と置き換えます。

SELECT
"ISSUE_ID",
"ISSUE_SUMMARY",
"IDENTIFIED_BY_PERSON_ID",
"IDENTIFIED_DATE",
"RELATED_PROJECT_ID",
"ASSIGNED_TO_PERSON_ID",
"STATUS",
"PRIORITY"
FROM "#OWNER#"."IT_ISSUES"
WHERE assigned_to_person_id IS NULL

レポート属性を編集するには、次のステップを実行します。

1. ページ上部の「レポート属性」タブを選択します。

2. ISSUE_SUMMARYの「ヘッダー」フィールドに次のように入力します。

Summary

3. ISSUE_IDでソートするには、次のステップを実行します。

1. ISSUE_ID以外のすべての列で、「ソート」を選択します。

2. IDENTIFIED_DATEの「ソート順序」で、「1」を選択します。これによって、問題が古い順に表示されます。

4. IDENTIFIED_BY_PERSON_IDの次の属性を編集します。

1. IDENTIFIED_BY_PERSON_IDの左にある「編集」アイコンをクリックします。

2. 「列の定義」で、「列ヘッダー」にIdentified Byと入力します。

3. 「表形式フォームの要素」の「表示形式」で、「テキストとして表示(LOVに基づき、状態は保存しない)」を選択します。

4. 「LOV」までスクロールします。

5. 「名前付きLOV」で、「PEOPLE」を選択します。

6. ページの上部にある「次へ」ボタン(>)をクリックして、IDENTIFIED_DATEに移動します。

5. IDENTIFIED_DATEの次の属性を編集します。

1. 「列の書式」で、「数値/日付書式」にDD-MON-YYYYと入力します。

2. ページの上部にある「次へ」ボタン(>)をクリックして、RELATED_PROJECT_ID列に移動します。

6. RELATED_PROJECT_IDの次の属性を編集します。

1. 「列の定義」で、「列ヘッダー」にRelated Projectと入力します。

2. 「表形式フォームの要素」の「表示形式」で、「選択リスト(名前付きLOV)」を選択します。

3. 「LOV」の「名前付きLOV」で、「PROJECTS」を選択します。

4. ページの上部にある「次へ」ボタン(>)をクリックして、ASSIGNED_TO_PERSON_ID列に移動します。

7. ASSIGNED_TO_PERSON_IDの次の属性を編集するには、次のステップを実行します。

1. 「列の定義」で、「列ヘッダー」にAssigned Toと入力します。

2. 「表形式フォームの要素」の「表示形式」で、「選択リスト(名前付きLOV)」を選択します。

3. 「LOV」で、次のステップを実行します。

- 「名前付きLOV」で、「PEOPLE」を選択します。

- 「NULLを表示」で、「はい」を選択します。

- 「NULL表示値」に、ハイフン(-)を入力します。

4. ページの上部にある「次へ」ボタン(>)をクリックして、STATUS列に移動します。

8. STATUSの次の属性を編集するには、次のステップを実行します。

1. 「表形式フォームの要素」の「表示形式」で、「選択リスト(名前付きLOV)」を選択します。

2. 「LOV」の「名前付きLOV」で、「STATUS」を選択します。

3. ページの上部にある「次へ」ボタン(>)をクリックして、PRIORITY列に移動します。

9. PRIORITYの次の属性を編集するには、次のステップを実行します。

1. 「表形式フォームの要素」の「表示形式」で、「選択リスト(名前付きLOV)」を選択します。

2. 「LOV」で、次のステップを実行します。

- 「名前付きLOV」で、「PRIORITIES」を選択します。

- 「NULLを表示」で、「はい」を選択します。

- 「NULL表示値」に、ハイフン(-)を入力します。

3. 「変更の適用」をクリックします。

「レポート属性」ページが表示されます。

10. 「メッセージ」で、「データが見つからなかった場合のメッセージ」に次のように入力します。

No Unassigned Issues.

11. 「変更の適用」をクリックします。

不要な「取消」ボタンの削除

ウィザードによって、不要な「取消」ボタンが作成されています。

この「取消」ボタンを削除するには、次のステップを実行します。

1. ページ8のページ定義で、「ボタン」セクションにある「取消」をクリックします。

2. 「削除」をクリックします。

3. 「OK」をクリックして選択を確認します。

ページの実行

これで、表形式フォームの作成は完了です。新しいフォームを表示するには、「ページの実行」アイコンをクリックします。「Assign Open Issues」フォームが図15-41のように表示されます。

図15-41 Assign Open Issues

「図15-41 Assign Open Issues」の説明

問題を割り当てるには、「Assigned To」リストから選択して「変更の適用」をクリックします。問題が割り当てられると、その問題は表示されなくなることに注意してください。

「Issue Summary by Project」レポート・ページの追加

問題のサマリーを示すレポートを使用すると、プロジェクトを選択し、そのプロジェクトに関連する問題のサマリーを表示できます。このレポートには、次のサマリー情報が含まれています。

- 最初に問題が発見された日付

- 最後に問題が終結した日付

- 問題の合計数

- ステータス別の問題数

- 優先順位の未解決の問題数

- ステータス別の割当て

レポート・ページの作成

このレポートを作成するには、情報を2つのSQL文でコーディングします。1つ目の文は単一の結果を持つ情報を収集し、2つ目の文は複数の結果を持つ情報を収集します。

プロジェクト別の問題サマリーのレポートを追加するには、次のステップを実行します。

1. 「アプリケーション」ホームページに移動します。

2. 「ページの作成」をクリックします。

3. 「レポート」を選択し、「次へ」をクリックします。

4. 「SQLレポート」を選択して「次へ」をクリックします。

5. 「ページ属性」で、次のステップを実行します。

1. 「ページ」に、9と入力します。

2. 「ページ名」に、Issue Summary by Projectと入力します。

3. 「ブレッドクラム」で、「ブレッドクラム」を選択します。

4. 「親エントリ」で、「Reports」リンクを選択します。

5. 「次へ」をクリックします。

6. 「タブ・オプション」で、「既存のタブ・セットを使用して、そのタブ・セット内の既存のタブを再利用」を選択します。

7. 「タブ・セット」で、「Issue Tracker (Home, Dashboard, Projects...)」を選択して「次へ」をクリックします。

8. 「タブを使用」で、「T_REPORTS: label="Reports"」を選択して「次へ」をクリックします。

9. 「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 it_issues
WHERE related_project_id = :P9_PROJECT

2. 「次へ」をクリックします。

10. 「レポート属性」で、次のステップを実行します。

1. 「リージョン・テンプレート」で、「アイコン付きのリスト・リージョン(チャート)」を選択します。

2. 「レポート・テンプレート」で、「デフォルト: 縦のレポート、look 1(NULL列を含む)」を選択します。

3. 「リージョン名」に、Summary.と入力します。

4. 残りのデフォルトを受け入れて「次へ」をクリックします。

11. 選択内容を確認して、「終了」をクリックします。

1つ目の問合せを作成したら、ヘッダーを編集し、関連するプロジェクトを制御するアイテムを作成する必要があります。最初に、レポートの上に表示されるリージョン(プロジェクト・パラメータが含まれる)を作成します。

検索リージョンの作成

レポートの上に表される新しいリージョンを作成するには、次のステップを実行します。

1. 「成功」ページで、「ページの編集9」をクリックします。
ページ9(「Issue Summary by Project」)のページ定義が表示されます。

2. 「リージョン」で、「作成」アイコンをクリックします。

3. 「HTML」を選択して「次へ」をクリックします。

4. リージョン・コンテナとして「HTML」を選択し、「次へ」をクリックします。

5. 「表示属性」で、次のステップを実行します。

1. 「タイトル」に、Issue Summary Report Parametersと入力します。

2. 「リージョン・テンプレート」で、「レポート・フィルタ - 単一行」を選択します。

3. 「表示ポイント」で、「ページ・テンプレート・ボディ (2. リージョン・コンテンツより下のアイテム)」を選択します。

4. 「順序」に、5と入力します。

5. 残りのデフォルトを受け入れて「次へ」をクリックします。

6. 「リージョンの作成」をクリックします。

プロジェクト・アイテムの作成

プロジェクト・アイテムを作成するには、次のステップを実行します。

1. 「アイテム」で、「作成」アイコンをクリックします。

2. 「アイテム・タイプの選択」で、「選択リスト」を選択して「次へ」をクリックします。

3. 「リスト制御タイプの選択」で、デフォルトの「選択リスト」を受け入れて「次へ」をクリックします。

4. 「表示位置および名前」で、次のステップを実行します。

1. 「アイテム名」に、P9_PROJECTと入力します。

2. 「順序」に、31と入力します。

3. 「リージョン」で、「Issue Summary Report Parameters (1) 5」を選択します。

4. 「次へ」をクリックします。

5. 「LOV」で、次のステップを実行します。

1. 「名前付きLOV」で、「PROJECTS」を選択します。

2. 「NULLテキスト」に、次のように入力します。

- Select -

3. 「NULL値」に、次のように入力します。

-1

4. 「次へ」をクリックします。

6. 「アイテム属性」で、デフォルト値を受け入れ、「次へ」をクリックします。

7. 「デフォルト」に、-1と入力します。

8. 「アイテムの作成」をクリックします。

「実行」ボタンの作成

問合せを実行する「Go」ボタンを作成するには、次のステップを実行します。

1. 「ボタン」で、「作成」アイコンをクリックします。

2. 「ボタン・リージョン」で、「Issue Summary Report Parameters」を選択して「次へ」をクリックします。

3. 「ボタン位置」で、「このリージョン・アイテムで表示されるボタンの作成」を選択して「次へ」をクリックします。

4. 「ボタン属性」で、次のステップを実行します。

1. 「ボタン名」に、P9_GOと入力します。

2. 「順序」に、33と入力します。

3. 「ラベル」に、Goと入力します。

4. 「リクエスト」に、Goと入力します。

5. 「ボタン・スタイル」で、「テンプレート・ベースのボタン」を選択します。

6. 「テンプレート」で、「ボタン」を選択します。

5. 「ボタンの作成」をクリックします。

「Reset」ボタンの作成

次に、デフォルトの「Issue Summary by Report」ページを再表示するための「Reset」ボタンおよび「Reset」ブランチを作成します。

問合せを消去する「Reset」ボタンを作成するには、次のステップを実行します。

1. 「ボタン」で、「作成」アイコンをクリックします。

2. 「ボタン・リージョン」で、「Issue Summary Report Parameters」を選択して「次へ」をクリックします。

3. 「ボタン位置」で、「このリージョン・アイテムで表示されるボタンの作成」を選択して「次へ」をクリックします。

4. 「ボタン属性」で、次のステップを実行します。

1. 「ボタン名」に、P9_RESETと入力します。

2. 「順序」に、32と入力します。

3. 「ラベル」に、Resetと入力します。

4. 「リクエスト」に、Resetと入力します。

5. 「ボタン・スタイル」で、「テンプレート・ベースのボタン」を選択します。

6. 「テンプレート」で、「ボタン」を選択します。

5. 「ボタンの作成」をクリックします。

「Reset」ブランチを作成するには、次のステップを実行します。

1. 「ブランチ」で、「作成」アイコンを選択します。

2. デフォルトを受け入れて「次へ」をクリックします。

3. 「ターゲット」で、次の変更を行います。

1. 「ページ」に、9と入力します。

2. 「このページのページ区切りをリセット」で、チェック・ボックスを選択します。

3. 「キャッシュのクリア」に、9と入力します。

4. 「次へ」をクリックします。

4. 「対象ボタン」で、「*P9_RESET」を選択します。

5. 「ブランチの作成」をクリックします。

「Assignment by Status」リージョンの作成

レポートの下に表示される新しいリージョンを作成するには、次のステップを実行します。

1. 「リージョン」で、「作成」アイコンをクリックします。

2. 「レポート」を選択し、「次へ」をクリックします。

3. リージョン・コンテナとして「SQLレポート」を選択し、「次へ」をクリックします。

4. 「表示属性」で、次のステップを実行します。

1. 「タイトル」に、Assignments by Statusと入力します。

2. 「リージョン・テンプレート」で、「テンプレートなし」を選択します。

3. 「順序」に、20と入力します。

4. 残りのデフォルトを受け入れて「次へ」をクリックします。

5. 「SQL問合せ、またはSQL問合せを戻すPL/SQLファンクションを入力」に、次のように入力します。

SELECT p.person_name,i.status,
COUNT(i.issue_id) issues
FROM it_issues i, it_people p
WHERE i.related_project_id = :P9_PROJECT
AND i.assigned_to_person_id = p.person_id
GROUP BY person_name, status

6. 「次へ」をクリックします。

7. 「ページごとの行数」に20と入力して、「次へ」をクリックします。

8. 「条件付き表示」で、次のステップを実行します。

1. 「条件タイプ」で、「式1のアイテムの値!=式2」を選択します。

2. 「式1」に、P9_PROJECTと入力します。

3. 「式2」に、-1と入力します。

9. 「リージョンの作成」をクリックします。

リージョンの外観の調整

ヘッダーおよびレポート設定を編集するには、次のステップを実行します。

1. 「リージョン」で、「Assignments by Status」の横にある「レポート」をクリックします。

2. 「ヘッダー・タイプ」で、「カスタム」を選択します。

3. PERSON_NAMEのヘッダーをAssigned Toに変更します。

4. ISSUESのヘッダーをNumber of Issuesに変更します。

5. ISSUESの末尾の上矢印をクリックして、STATUSの上に移動します。

6. ISSUESの「列の位置合せ」を「右」に変更します。

7. PERSON_NAME、ISSUESおよびSTATUSの「ヘッダーの位置合せ」で、「中央」を選択します。

8. PERSON_NAME、ISSUESおよびSTATUSの「ソート」チェック・ボックスを選択解除します。

9. PERSON_NAME、ISSUESおよびSTATUSの「ソート順序」で、「-」を選択します。

10. 「レイアウトおよびページ区切り」までスクロールします。「ページ区切りスキーム」で、「選択リストの1から15 16から30の範囲の行(ページ区切りあり)」を選択します。

11. 「メッセージ」までスクロールします。「データが見つからなかった場合のメッセージ」に、次のように入力します。

No issues found.

12. 「変更の適用」をクリックします。

サマリー・レポートのヘッダーおよびレポート設定の編集

次に、レポート・リージョンのヘッダーおよびレポート設定を編集する必要があります。また、ユーザーがプロジェクトを選択している場合に、条件に合わせて表示するレポート・リージョンを設定する必要もあります。

ヘッダーおよびレポート設定を編集するには、次のステップを実行します。

1. 「リージョン」で、「Summary」の横にある「レポート」をクリックします。

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. ページ上部の「リージョン定義」タブを選択します。

6. 「条件付き表示」までスクロールします。「条件タイプ」で、次の変更を行います。

1. 「条件タイプ」で、「式1のアイテムの値!=式2」を選択します。

2. 「式1」に、P9_PROJECTと入力します。

3. 「式2」に、-1と入力します。

7. 「変更の適用」をクリックします。

ページの実行

新しく作成したレポートを表示するには、「ページの実行」アイコンをクリックします。最初は、プロジェクトが選択されていないため、データは表示されません。プロジェクトを選択して「実行」をクリックします。図15-42のようなレポートが表示されます。

図15-42 Issue Summary By Project

「図15-42 Issue Summary By Project」の説明

「Resolved by Month Identified」レポート・ページの追加

「Resolved by Month Identified」レポートは、折れ線グラフです。このレポートは、最初に、終結した各問題の解決にかかった日数を計算し、その問題が発見された月ごとに平均値を計算して、最後に、月別に表示します。

「Resolved by Month Identified」レポート・ページの追加

このレポート・ページを追加するには、次のステップを実行します。

1. 「アプリケーション」ホームページに移動します。

2. 「ページの作成」をクリックします。

3. 「チャート」を選択して、「次へ」をクリックします。

4. 「Flashチャート」を選択して「次へ」をクリックします。

5. 「ページ属性」で、次のステップを実行します。

1. 「ページ番号」に、10と入力します。

2. 「ページ名」に、Resolved by Month Identifiedと入力します。

3. 「リージョン・テンプレート」で、「テンプレートなし」を選択します。

4. 「リージョン名」に、Resolved by Month Identifiedと入力します。

5. 「ブレッドクラム」で、「ブレッドクラム」を選択します。

6. 「エントリ名」に、Resolved by Month Identifiedと入力します。

7. 「親エントリ」で、「Reports」リンクをクリックします。

8. 「次へ」をクリックします。

6. 「タブ・オプション」で、「既存のタブ・セットを使用して、そのタブ・セット内の既存のタブを再利用」を選択します。

7. 「タブ・セット」で、「Issue Tracker (Home, Dashboard, Projects...)」を選択して「次へ」をクリックします。

8. 「タブを使用」で、「T_REPORTS」を選択して「次へ」をクリックします。

9. 「チャート・タイプ」で、「3D列」を選択します。

10. 「チャート・アニメーション」で、「スケール」を選択します。

11. 「バックグラウンド・タイプ」で、「グラデーション」を選択します。

12. 「バックグラウンド・カラー1」に、#FFFFCCと入力します。

13. 「バックグラウンド・カラー2」に、#FFCC66と入力します。

14. 「グラデーションの角度」に、45と入力します。

15. 「カラー・スキーム」で、「Look 5」を選択します。

16. 「X軸のタイトル」に、Month Identifiedと入力します。

17. 「Y軸のタイトル」に、Days to Resolveと入力します。

18. 他のすべてのデフォルト値を受け入れ、「次へ」をクリックします。

19. 「問合せ」で、次のステップを実行します。

1. 「SQL」に次の内容を入力します。

SELECT NULL l,
TO_CHAR(identified_date,'Mon RR') month,
AVG(actual_resolution_date-identified_date) days
FROM it_issues
WHERE status = 'Closed'
GROUP BY TO_CHAR(identified_date,'Mon RR')

この問合せにはリンクはありません(つまり、l列です)。発見された日付から月が抽出されるため、データを月別にグループ化できます。最後に、その月に発見された問題を終結するためにかかった平均日数が計算されます。

2. 「データが見つからなかった場合のメッセージ」に、次のように入力します。

No Closed Issues found.

3. 「次へ」をクリックします。

20. 選択内容を確認して、「終了」をクリックします。

チャートの編集

次に、45度の角度で表示されるようにX軸の月ラベルを変更します。

チャートを編集するには、次のステップを実行します。

1. 「成功」で、「ページの編集」を選択します。
ページ10(「Resolved by Month Identified」)のページ定義が表示されます。

2. 「リージョン」で、「Resolved by Month Identified」の横にある「Flashチャート」を選択します。

3. 「表示設定」で、「ラベルの回転」に45と入力します。

4. 「変更の適用」をクリックします。

ページの実行

新しく作成したFlsahチャートを表示するには、「ページの実行」アイコンをクリックします。Flashチャートが図15-43のように表示されます。

図15-43 Resolved by Month Identified

「図15-43 Resolved by Month Identified」の説明

解決目標日を表示するカレンダの追加

「Target Resolution Dates」レポートは、終結していない問題と、問題の解決目標日となっている日に割り当てられたユーザーが表示されるカレンダです。

カレンダの作成

解決目標日のカレンダを作成するには、次のステップを実行します。

1. 「アプリケーション」ホームページに移動します。

2. 「ページの作成」をクリックします。

3. 「カレンダ」を選択して、「次へ」をクリックします。

4. 「SQLカレンダ」を選択して「次へ」をクリックします。

5. 「ページ属性」で、次のステップを実行します。

1. 「ページ番号」に、11と入力します。

2. 「ページ名」に、Target Resolution Datesと入力します。

3. 「リージョン・テンプレート」で、「テンプレートなし」を選択します。

4. 「リージョン名」に、Target Resolution Datesと入力します。

5. 「ブレッドクラム」で、「ブレッドクラム」を選択します。

6. 「親エントリ」で、「Reports」リンクを選択します。

7. 「次へ」をクリックします。

6. 「タブ・オプション」で、「既存のタブ・セットを使用して、そのタブ・セット内の既存のタブを再利用」を選択します。

7. 「タブ・セット」で、「Issue Tracker (Home, Dashboard, Projects...)」を選択して「次へ」をクリックします。

8. 「タブを使用」で、「T_REPORTS」を選択して「次へ」をクリックします。

9. 「表/ビューの所有者」で、次のステップを実行します。

1. 「SQL問合せを入力」に、次のように入力します。

SELECT I.TARGET_RESOLUTION_DATE,
I.ISSUE_SUMMARY ||' ('||nvl(P.PERSON_NAME,'Unassigned') ||') ' disp,
I.ISSUE_ID
FROM IT_ISSUES I, IT_PEOPLE P
WHERE I.ASSIGNED_TO_PERSON_ID = P.PERSON_ID (+)
AND (I.RELATED_PROJECT_ID = :P11_PROJECT OR :P11_PROJECT = '-1')
AND I.STATUS != 'Closed'

2. 「次へ」をクリックします。

次のことに注意してください。

- target_resolution_dateは、問題が表示される日です。

- issue_summaryは、割り当てられたユーザーと連結しています。

- issue_idは、表示されませんが、ユーザーが問題を表示して編集できるようにするリンクの作成に使用されます。

10. 「日付列」および「表示列」で、次のステップを実行します。

1. 「日付列」で、「TARGET_RESOLUTION_DATE」を選択します。

2. 「表示列」で、「DISP」を選択します。

3. 「次へ」をクリックします。

11. 選択内容を確認して、「終了」をクリックします。

検索リージョンの作成

カレンダの上に表示される新しいリージョンを作成するには、次のステップを実行します。

1. 「成功」ページで、「ページの編集」をクリックします。
ページ11(「Issue Summary by Project」)のページ定義が表示されます。

2. 「リージョン」で、「作成」アイコンをクリックします。

3. 「HTML」を選択して「次へ」をクリックします。

4. リージョン・コンテナとして「HTML」を選択し、「次へ」をクリックします。

5. 「表示属性」で、次のステップを実行します。

1. 「タイトル」に、Target Resolution Parametersと入力します。

2. 「リージョン・テンプレート」で、「レポート・フィルタ - 単一行」を選択します。

3. 「表示ポイント」で、「ページ・テンプレート・ボディ (2. リージョン・コンテンツより下のアイテム)」を選択します。

4. 「順序」に、5と入力します。

5. 残りのデフォルトを受け入れて「作成」をクリックします。

プロジェクトの検索をサポートするアイテムの追加

ユーザーが1つのプロジェクトまたはすべてのプロジェクトを検索できるようにするには、アイテムを追加する必要があります。

プロジェクトの検索をサポートするアイテムを追加するには、次のステップを実行します。

1. 「アイテム」で、「作成」アイコンをクリックします。

2. 「アイテム・タイプ」で、「選択リスト」を選択して「次へ」をクリックします。

3. 「リスト制御タイプの選択」で、「選択リスト」を選択して「次へ」をクリックします。

4. 「表示位置および名前」で、次のステップを実行します。

1. 「アイテム名」に、P11_PROJECTと入力します。

2. 「順序」に、30と入力します。

3. 「リージョン」で、「Target Resolution Parameters (1) 5」を選択します。

4. 「次へ」をクリックします。

5. 「LOV」で、次のステップを実行します。

1. 「名前付きLOV」で、「PROJECTS」を選択します。

2. 「NULLオプションの表示」で、「はい」を選択します。

3. 「NULLテキスト」に、次のように入力します。

- All -

4. 「NULL値」に、次のように入力します。

-1

5. 「次へ」をクリックします。

6. 「アイテム属性」で、デフォルト値を受け入れ、「次へ」をクリックします。

7. 「ソース」で、「デフォルト」に、次のように入力します。

-1

8. 「アイテムの作成」をクリックします。

「実行」ボタンの作成

問合せを実行する「実行」ボタンを作成するには、次のステップを実行します。

1. 「ボタン」で、「作成」アイコンをクリックします。

2. 「ボタン・リージョン」で、「Target Resolution Parameters (1) 5」を選択して「次へ」をクリックします。

3. 「ボタン位置」で、「このリージョン・アイテムで表示されるボタンの作成」を選択して「次へ」をクリックします。

4. 「ボタン属性」で、次のステップを実行します。

1. 「ボタン名」に、P11_GOと入力します。

2. 「順序」に、40と入力します。

3. 「表示」で、「新しいフィールドで開始」を選択します。

4. 「ラベル」に、Goと入力します。

5. 「リクエスト」に、Goと入力します。

6. 「ボタン・スタイル」で、「テンプレート・ベースのボタン」を選択します。

7. 「テンプレート」で、「ボタン」を選択します。

5. 「ボタンの作成」をクリックします。

「Reset」ボタンの作成

次に、デフォルトの「Target Resolution Dates」ページを再表示するための「Reset」ボタンおよび「Reset」ブランチを作成します。

問合せを消去する「Reset」ボタンを作成するには、次のステップを実行します。

1. 「ボタン」で、「作成」アイコンをクリックします。

2. 「ボタン・リージョン」で、「Target Resolution Parameters (1) 5」を選択して「次へ」をクリックします。

3. 「ボタン位置」で、「このリージョン・アイテムで表示されるボタンの作成」を選択して「次へ」をクリックします。

4. 「ボタン属性」で、次のステップを実行します。

1. 「ボタン名」に、P11_RESETと入力します。

2. 「順序」に、30と入力します。

3. 「表示」で、「新しいフィールドで開始」を選択します。

4. 「ラベル」に、Resetと入力します。

5. 「リクエスト」に、Resetと入力します。

6. 「ボタン・スタイル」で、「テンプレート・ベースのボタン」を選択します。

7. 「テンプレート」で、「ボタン」を選択します。

5. 「ボタンの作成」をクリックします。

「Reset」ブランチを作成するには、次のステップを実行します。

1. 「ブランチ」で、「作成」アイコンを選択します。

2. デフォルトを受け入れて「次へ」をクリックします。

3. 「ターゲット」で、次の変更を行います。

1. 「ページ」に、11と入力します。

2. 「このページのページ区切りをリセット」で、チェック・ボックスを選択します。

3. 「キャッシュのクリア」に、11と入力します。

4. 「次へ」をクリックします。

4. 「対象ボタン」で、「*P11_RESET」を選択します。

5. 「ブランチの作成」をクリックします。

カレンダ・ボタンの変更

カレンダ・ボタンを検索リージョンに移動して変更するには、次のステップを実行します。

1. 「ボタン」で、「すべて編集」アイコンをクリックします。

2. 各ボタンに対して次の変更を行います。

- 「リージョン」で、「Target Resolution Parameters」を選択します。

- 「位置合せ」で、「右」を選択します。

- 「位置」で、「リージョン・テンプレートの位置#CREATE#」を選択します。

3. 「変更の適用」をクリックします。

カレンダ属性の変更

最後に、カレンダ属性を変更して、問題を表示し、その問題を編集するためのリンク・サポートを追加する必要があります。これを実行するには、ページ7(「Issue Details」)をコールし、そのページからすべてのデータを消去し、コール元のページはページ11であるということを指定して、現行の問題のIDに渡す必要があります。その後で、問合せが終結した問題を除外する際に表示するコメントを追加する必要があります。

カレンダ属性を変更するには、次のステップを実行します。

1. 「ページ11」ブレッドクラムをクリックします。

2. 「リージョン」で、「Target Resolution Dates」の右にある「カレンダ」をクリックします。

3. 「列リンク」までスクロールし、次のように入力します。

1. 「ターゲットは」で、「URL」を選択します。

2. 「URLターゲット」に、次のように入力します。

f?p=&APP_ID.:7:&SESSION.::&DEBUG.:7:P7_ISSUE_ID,P7_PREV_PAGE:#ISSUE_ID#,11

4. ページ上部の「リージョン定義」タブを選択します。

5. 「ヘッダーおよびフッター」までスクロールします。

6. 「リージョン・フッター」に、次のように入力します。

This excludes Closed issues.

7. 「変更の適用」をクリックします。

ページの実行

新しく作成したカレンダを表示するには、「ページの実行」アイコンをクリックします。「週」または「日」をクリックすると、対応するカレンダ表示で見ることができます。「Issues」ページを実行して「Target Resolution Dates」を検索することができます。その後、この「Target Resolution Dates」ページを実行し、「< 戻る」および「次 >」ボタンを使用して解決目標日の月にナビゲートします。図15-44の2008年1月13日(日)に示されているような問題が表示されます。

また、問題について表示されたテキストをクリックすると、「Edit Issue」ページも表示できます。カレンダに戻るには、「取消」をクリックします。

注意:
データの挿入スクリプトは、ハード・コードされているわけではなく、システムの日付に関連して設定されるため、表示される日付は異なります。日付は、スクリプトが挿入されるたびに異なります。

図15-44 Target Resolution Dates

「図15-44 Target Resolution Dates」の説明

解決に要した平均日数を表示する棒グラフの追加

「Average Days to Resolve」レポートは、終結した各問題を解決するために要した日数を計算し、その数の平均値を担当者別に計算して棒グラフに表示します。

棒グラフの追加

「Average Days to Resolve」レポートを追加するには、次のステップを実行します。

1. 「アプリケーション」ホームページに移動します。

2. 「ページの作成」をクリックします。

3. 「チャート」を選択して、「次へ」をクリックします。

4. 「Flashチャート」を選択し、「次へ」をクリックします。

5. 「ページ属性」で、次のステップを実行します。

1. 「ページ」に、12と入力します。

2. 「ページ名」に、Average Days to Resolveと入力します。

3. 「リージョン・テンプレート」で、「テンプレートなし」を選択します。

4. 「リージョン名」に、Average Days to Resolveと入力します。

5. 「ブレッドクラム」で、「ブレッドクラム」を選択します。

6. 「エントリ名」に、Average Days to Resolveと入力します。

7. 「親エントリ」で、「Reports」リンクを選択します。

8. 残りのデフォルトを受け入れて「次へ」をクリックします。

6. 「タブ・オプション」で、「既存のタブ・セットを使用して、そのタブ・セット内の既存のタブを再利用」を選択します。

7. 「タブ・セット」で、「Issue Tracker (Home, Dashboard, Projects...)」を選択して「次へ」をクリックします。

8. 「タブを使用」で、「T_REPORTS」を選択して「次へ」をクリックします。

9. 「チャート・プレビュー」で、次のステップを実行します。

1. 「チャート・タイプ」で、「水平2D列」を選択します。

2. 「X軸」に、Daysと入力します。

3. 「次へ」をクリックします。

10. 「問合せ」で、次のステップを実行します。

1. 「SQL問合せ、またはSQL問合せを戻すPL/SQLファンクションを入力」に、次のように入力します。

SELECT NULL l,
NVL(p.person_name,'None Assigned') person,
AVG(i.actual_resolution_date-i.identified_date) days
FROM it_issues i, it_people p
WHERE i.assigned_to_person_id = p.person_id (+)
AND i.status = 'Closed'
GROUP BY p.person_name

前述のSELECT文の内容は、次のとおりです。

- 1番目に選択されるアイテムはリンクです。このレポートは他のページにリンクしないため、NULLが選択されています。

- 2番目のアイテムはユーザーの名前です(assigned_toがNULLの場合はNone Assigned)。

- 3番目に選択されるアイテムは、そのユーザーがすべての問題の解決にかかった平均日数です。問題のステータスは、終結を示しています。

2. 「データが見つからなかった場合のメッセージ」に、No issues with status 'Closed'と入力します。

3. 残りのデフォルトを受け入れて「次へ」をクリックします。

11. 選択内容を確認して、「終了」をクリックします。

ページの実行

新しく作成した棒グラフを表示するには、「ページの実行」をクリックします。図15-45のようなレポートが表示されます。

図15-45 Average Days to Resolve

「図15-45 Average Days to Resolve」の説明

「Dashboard」ページの追加

詳細ページがすべて完成したら、「Dashboard」を作成し、「Dashboard」にコンテンツを追加してすべてのページを結び付ける必要があります。この項では、図15-46「Dashboard」に示す「Dashboard」を作成して次の情報を表示します。

この項の内容は次のとおりです。

- 「Dashboard」ページの概要

- 「Dashboard」ページの作成

- 期限切れ問題のレポートの追加

- 未割当ての問題のレポートの追加

- 最近発見された問題のレポートの追加

- 「Open Issues by Project」円グラフの追加

「Dashboard」ページの概要

「Dashboard」では、重要な問題追跡の統計の簡単なスナップショットが提供されます。このページはレポート専用なので、変更または新しいエントリを追加することはできません。「Dashboard」に表示される情報は、次のとおりです。

- 期限切れの問題

- 未割当ての問題

- 最近発見された問題

- プロジェクト別の未解決の問題のチャート

この項のステップを完了すると、アプリケーションに図15-46「Dashboard」のような「Dashboard」ページが含まれます。

図15-46 Dashboard

「図15-46 Dashboard」の説明

「Dashboard」ページの作成

「Dashboard」ページを追加するには、次のステップを実行します。

1. 「アプリケーション」ホームページに移動します。

2. 「ページの作成」をクリックします。

3. 「空白ページ」を選択して「次へ」をクリックします。

4. 「ページ番号」に18と入力して、「次へ」をクリックします。

5. 「ページの作成」で、次の変更を行います。

1. 「名前」に、Dashboardと入力します。

2. 「タイトル」に、Dashboardと入力します。

3. 「ブレッドクラム」で、「ブレッドクラム」を選択します。

4. 「エントリ名」に、Dashboardと入力します。

5. 「親エントリ」で、「Home」リンクを選択します。

6. 「次へ」をクリックします。

6. 「はい - 既存のタブ・セットを使用して、そのタブ・セット内の既存のタブを再利用する。」を選択して、「次へ」をクリックします。

7. 「既存のタブ・セット」で、「Issue Tracker (Home, Dashboard, Projects...)」を選択して「次へ」をクリックします。

8. 「このページのカレント・タブとして指定するタブを選択」で、「T_HOME: label="Home"」を選択して「次へ」をクリックします。

9. 選択内容を確認して、「終了」をクリックします。

10. 「アプリケーション」ホームページ・ブレッドクラムを選択します。

11. 「共有コンポーネント」を選択します。

12. 「ナビゲーション」で、「タブ」を選択します。

13. 「Home」タブの左にある「編集」アイコンをクリックします。

14. 「タブ名」に、T_DASHBOARDと入力します。

15. 「タブ・ラベル」に、Dashboardと入力します。

16. 「他にカレントになっているページの番号」で、「タブ・ページ」に18と入力します。

17. 「変更の適用」をクリックします。

期限切れ問題のレポートの追加

次に、「Dashboard」にコンテンツを追加します。この演習では、期限切れの問題を表示するレポートを追加します。このレポートの問合せによって、未解決のすべての問題と、過ぎてしまった解決目標日が取得されます。

期限切れ問題のレポートの追加

期限切れの問題を表示するレポートを追加するには、次のステップを実行します。

1. 「アプリケーション」ホームページ・ブレッドクラムをクリックします。

2. 「18 - Dashboard」をクリックします。

3. 「リージョン」で、「作成」アイコンをクリックします。

4. 「レポート」を選択し、「次へ」をクリックします。

5. 「レポート実装」で、「SQLレポート」を選択して「次へ」をクリックします。

6. 「表示属性」で、次のステップを実行します。

- 「タイトル」に、Overdue Issuesと入力します。

- 「リージョン・テンプレート」で、「レポート・リージョン、代替1」を選択します。

- 「順序」に、5と入力します。

- 「次へ」をクリックします。

7. 「ソース」で、「SQL問合せの入力」に、次の文を入力します。

SELECT i.issue_id, i.priority, i.issue_summary,
p.person_name assignee, i.target_resolution_date, r.project_name
FROM it_issues i, it_people p, it_projects r
WHERE i.assigned_to_person_id = p.person_id (+)
AND i.related_project_id = r.project_id
AND i.target_resolution_date < sysdate
AND i.status != 'Closed'

割当てはオプションであるため、外部結合が必要です。

8. 「次へ」をクリックします。

9. 「レポート・テンプレート」で、「template: 20. Standard」を選択します。

10. 「リージョンの作成」をクリックします。

期限切れ問題のレポートの編集

リージョンを作成したら、ヘッダーを編集し、サマリーに問題の詳細を表示するリンクを作成する必要があります。

列ヘッダーを編集するには、次のステップを実行します。

1. 「リージョン」で、「Overdue Issues」の横にある「レポート」をクリックします。

2. 「ヘッダー・タイプ」で、「カスタム」を選択します。

3. ISSUE_SUMMARYの「ヘッダー」に次のように入力します。

Summary

4. ASSIGNEEで、ヘッダーを次のように変更します。

Assigned To

5. TARGET_RESOLUTION_DATEに対して、次のステップを実行します。

Target

6. 各列の右端にある上下の矢印を使用して、列をISSUE_ID、ASSIGNEE、TARGET_RESOLUTION_DATE、PROJECT_NAME、PRIORITY、ISSUE_SUMMARYの順序に並べ替えます。

7. ISSUE_IDで、「表示」を選択解除します。
これによって、問合せはリンクに渡されますが、表示はされなくなります。

8. ASSIGNEE、TARGET_RESOLUTION_DATEおよびPROJECT_NAMEに対してのみ「ソート」を選択します。その他に対しては「ソート」を選択解除します。

9. TARGET_RESOLUTION_DATEの「ヘッダーの位置合せ」で、「左」を選択します。

10. TARGET_RESOLUTION_DATE以外のすべての列の「ヘッダーの位置合せ」で、「中央」を選択します。

11. TARGET_RESOLUTION_DATEの「ソート順序」で、「1」を選択します。

12. ISSUE_IDの「ソート順序」で、「-」を選択します。

ISSUE_SUMMARYの列属性を編集するには、次のステップを実行します。

1. ISSUE_SUMMARYの左にある「編集」アイコンをクリックします。

2. 「列リンク」までスクロールして、次のステップを実行します。

1. 「リンク・テキスト」に、次のように入力します。
<table width="200" style=size:9><tr><td>#ISSUE_SUMMARY#</td></tr></table>

2. 「リンク属性」に、次のように入力します。
title="Click to edit"

3. 「ページ」で、「7」を選択します。

4. 「キャッシュのクリア」で、「7」を選択します。

5. 「アイテム1」に、次の名前を入力します。

P7_ISSUE_ID

6. 「アイテム1」に、次の値を入力します。

#ISSUE_ID#

7. 「アイテム2」に、次の名前を入力します。

P7_PREV_PAGE

8. 「アイテム2」に、次の値を入力します。

18

3. 「変更の適用」をクリックします。

4. 「メッセージ」で、「データが見つからなかった場合のメッセージ」に次のように入力します。
No Overdue Issues.

5. 「変更の適用」をクリックします。

アプリケーションの実行

「ページの実行」アイコンをクリックして、アプリケーションを実行します。「Overdue Issues」リージョンが追加された「Dashboard」ページが図15-47のように表示されます。

図15-47 「Overdue Issues」リージョンが追加された「Dashboard」

「図15-47 「Overdue Issues」リージョンが追加された「Dashboard」」の説明

未割当ての問題のレポートの追加

次に追加するレポートは、未割当て(未解決)の問題を表示します。このレポートは、「Overdue Issues」と非常に似ています。これは手動で作成せずに、「Overdue Issues」レポートをコピーしてから変更できます。

既存のレポートをコピーして新しいレポートを作成するには、次のステップを実行します。

1. ページ下部にある「開発者」ツールバーの「ページの編集18」リンクをクリックします。

2. 「リージョン」で、「コピー」アイコンをクリックします。

3. Name列で、「Overdue Issues」をクリックします。

4. 「コピー先ページ」でデフォルトの「18」を受け入れ、他のすべてのデフォルトも受け入れて「次へ」をクリックします。

5. 「リージョン名」に、Unassigned Issuesと入力します。

6. 「順序」に10と入力して、「リージョンのコピー」をクリックします。

問合せを変更し、レポート・リージョンを編集するには、次のステップを実行します。

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 it_issues i,
it_people p,
it_projects r
WHERE i.assigned_to_person_id IS NULL
AND i.status != 'Closed'
AND i.related_project_id = r.project_id
AND i.identified_by_person_id = p.person_id

3. ページ上部の「レポート属性」タブを選択します。
以前に定義した列には、変更された属性が保持されていることに注意してください。

4. IDENTIFIEEの「列属性」に、次のヘッダーを入力します。

Identified By

5. 「メッセージ」で、「データが見つからなかった場合のメッセージ」に次のように入力します。

No Unassigned Issues.

6. 右端にある上下矢印を使用して、列をISSUES_ID、IDENTIFIEE、TARGET_RESOLUTION_DATE、PROJECT_NAME、PRIORITY、ISSUE_SUMMARYの順序に並べ替えます。

7. 「変更の適用」をクリックします。

アプリケーションの実行

「ページの実行」アイコンをクリックして、アプリケーションを実行します。「Dashboard」が表示されます。ページの下部までスクロールします。「Unassigned Issues」リージョンが図15-48のように表示されます。

図15-48 「Unassigned Issues」リージョン

「図15-48 「Unassigned Issues」リージョン」の説明

最近発見された問題のレポートの追加

次に、最近発見された問題のレポートを追加します。基礎となる問合せによって、過去1週間以内に発見された問題が5つ表示されます。

既存のレポートをコピーして、最近発見された問題のレポートを作成するには、次のステップを実行します。

1. ページ下部の「開発者」ツールバーのページの編集18リンクをクリックします。

2. 「リージョン」で、「コピー」アイコンをクリックします。

3. 「名前」で、「Unassigned Issues」を選択します。

4. 「コピー先ページ」でデフォルトの「18」を受け入れ、残りのデフォルトも受け入れて「次へ」をクリックします。

5. 「リージョン名」に、Recently Opened Issuesと入力します。

6. 「順序」に、5と入力します。

7. 「列」で、「2」を選択します。

8. 「リージョンをコピー」をクリックします。

問合せを変更し、レポート・リージョンを編集するには、次のステップを実行します。

1. 「リージョン」セクションで、「Recently Opened Issues」をクリックします。

2. 「リージョン・ソース」で、既存の文を次と置き換えます。

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 it_issues i,
it_people p,
it_people p2,
it_projects r
WHERE i.assigned_to_person_id = p.person_id (+)
AND i.related_project_id = r.project_id
AND i.identified_by_person_id = p2.person_id
AND i.created_on > (sysdate - 7)
ORDER BY i.created_on desc)
WHERE rownum < 6

3. ページ上部の「レポート属性」タブを選択します。

4. すべての列に対して、次のステップを実行します。

1. 「ソート」を選択解除して、ソートを無効にします。

2. 「ソート順序」を-に設定します。

5. ASSIGNEEで、ASSIGNEEがISSUE_SUMMARYの前に表示されるまで「ソート順序」列の右にある上矢印をクリックします。

6. ASSIGNEEで、ヘッダーを次のように変更します。

Assigned To

7. 「レイアウトおよびページ区切り」セクションまでスクロールします。「ページ区切りスキーム」で、「- ページ区切りが選択されていない -」を選択します。

8. 「メッセージ」で、「データが見つからなかった場合のメッセージ」に次のように入力します。

No Recently Opened Issues.

9. 「変更の適用」をクリックします。

アプリケーションの実行

アプリケーションを実行し、「Issues Details」ページを使用して問題をデータベースに追加します。新しい問題の追加後、「Dashboard」タブをクリックします。ページの右上に、新しく追加された問題が示された「Recently Opened Issues」リージョンが図15-49のように表示されます。

図15-49 「Recently Assigned Issues」リージョン

「図15-49 「Recently Assigned Issues」リージョン」の説明

「Open Issues by Project」円グラフの追加

次に、「Open Issues by Project」を表示する円グラフを追加します。

円グラフを追加するには、次のステップを実行します。

1. ページ下部の「開発者」ツールバーのページの編集18リンクをクリックします。

2. 「リージョン」で、「作成」アイコンをクリックします。

3. 「チャート」を選択して、「次へ」をクリックします。

4. 「Flashチャート」を選択し、「次へ」をクリックします。

5. 「表示属性」で、次の変更を行います。

- 「タイトル」に、Open Issues by Projectと入力します。

- 「リージョン・テンプレート」で、「チャート・リージョン」を選択します。

- 「順序」に、10と入力します。

- 「列」で、「2」を選択します。

- 「次へ」をクリックします。

6. 「チャート・プレビュー」で、次の編集を行います。

- 「チャート・タイプ」で、「3D円」を選択します。

- 「次へ」をクリックします。

7. 「ソース」で、「SQL」に次の文を入力します。

SELECT 'f?p=&APP_ID.:6:&SESSION.:::CIR:IREQ_STATUS,
IREQ_PROJECT_ID:Open,'||r.project_id LINK,
NVL(r.project_name,'No Project') label,
COUNT(r.project_name) value
FROM it_issues i, it_projects r
WHERE i.status = 'Open' AND i.related_project_id = r.project_id
GROUP BY NULL, r.project_name, r.project_id
ORDER BY r.project_name, r.project_id

8. 「データが見つからなかった場合のメッセージ」に、No open issuesと入力します。

9. 「リージョンの作成」をクリックします。

チャートを編集するには、次のステップを実行します。

1. 「リージョン」で、「Open Issues by Project」の横にある「Flashチャート」を選択します。

2. 「チャート設定」で、「チャート幅」に550と入力します。

1. 「チャート高さ」に、325と入力します。

2. 「チャートのマージン: 下」に、25.と入力します。

3. 「チャートのマージン: 右」に、50.と入力します。

3. 「表示設定」で、「値の表示」を選択解除します。

4. 「変更の適用」をクリックします。

ページの実行

更新されたページを表示するには、「ページの実行」アイコンをクリックします。図15-50「すべてのリージョンが追加された最終的な「Dashboard」」では、3つの期限切れの問題が「Dashboard」に移動される前に終結されています。

図15-50 すべてのリージョンが追加された最終的な「Dashboard」

「図15-50 すべてのリージョンが追加された最終的な「Dashboard」」の説明

拡張機能の追加

アプリケーションが完全に機能するようになったら、計画およびプロジェクト分析段階で示した拡張機能を追加することができます。

この項の内容は次のとおりです。

- 電子メール通知のサポートの追加

- アプリケーション・セキュリティの追加

電子メール通知のサポートの追加

計画およびプロジェクト分析フェーズでは、2つの電子メール要件が作成されました。

- 問題がユーザーに割り当てられた際に、ユーザーに通知します。

- 問題が期限切れになった際に、プロジェクト・リーダーに通知します。

この項の内容は次のとおりです。

- 電子メール通知の動作方法

- 新しい割当ての通知の追加

- 期限切れの問題の通知の追加

このトピックに関するその他の例は、次に示すOracle by Examples (OBE)を参照してください。

- Oracle Application Express 3.1での電子メール添付ファイルの送信
http://www.oracle.com/technology/obe/apex/apex31nf/apex31email.htm

電子メール通知の動作方法

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 or CLOB        IN
P_BODY_HTML                    VARCHAR2 or CLOB        IN     DEFAULT
P_SUBJ                         VARCHAR2                IN     DEFAULT
P_CC                           VARCHAR2                IN     DEFAULT
P_BCC                          VARCHAR2                IN     DEFAULT
P_REPLYTO                                      VARCHAR2                IN

新しい割当ての通知の追加

最初に、ユーザーが新しく割り当てられた際のそのユーザーへの通知を追加します。割当ての作成または変更は、2つの異なるページ(「Issue Details」および「Assign Open Issues」)から実行できます。

「Issue Details」ページでは、初期値を格納し、すべての変更に対してその初期値を確認して、割当てが作成または変更されたかどうかを確認できます。「Assign Open Issues」は表形式フォームであるため、古い値と新しい値を確認する方法はありません。このため、通知を実装する最適な方法は、IT_ISSUESでBEFORE INSERTおよびBEFORE UPDATEトリガーを使用することです。SQLワークショップを使用すると、このトリガーをプログラムによって作成できます。

IT_ISSUESへのトリガーの作成

IT_ISSUESにBEFORE INSERTおよびBEFORE UPDATEトリガーを作成するには、次のステップを実行します。

1. 「ワークスペース」ホームページで、「SQLワークショップ」をクリックして、「オブジェクト・ブラウザ」をクリックします。

2. 「作成」をクリックします。

3. 「作成するデータベース・オブジェクトのタイプの選択」で、「トリガー」をクリックします。

4. 「表名」で、「IT_ISSUES」を選択して「次へ」をクリックします。

5. 「定義」で、次のステップを実行します。

1. 「トリガー名」に、IT_ISSUES_AIU_EMAILと入力します。

2. 「実行ポイント」で、「後」を選択します。

3. 「オプション」で、「挿入」と「更新」を選択します。

4. 「トリガー本体」に、次のように入力します。

IF (INSERTING AND :new.assigned_to_person_id IS NOT NULL)
OR
(UPDATING AND (:old.assigned_to_person_id IS NULL OR :new.assigned_to_person_id != :old.assigned_to_person_id) AND :new.assigned_to_person_id IS NOT NULL) THEN
FOR c1 IN
(SELECT person_name, person_email
FROM it_people
WHERE person_id = :new.assigned_to_person_id)
LOOP
IF c1.person_email IS NOT NULL THEN
FOR c2 IN
(SELECT project_name
FROM it_projects
WHERE project_id = :new.related_project_id)
LOOP

APEX_MAIL.SEND(
p_to => c1.person_email,
p_from => c1.person_email,
p_body =>
'You have been assigned a new issue.  ' ||chr(10)||
'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. p_toおよびp_fromを、独自の有効な電子メール・アドレスと置き換えます。

6. 「次へ」をクリックします。

6. コードを確認するには、「SQL」の矢印を展開します。

7. 「終了」をクリックします。

電子メール通知のテスト

このトリガーは、次の方法でテストできます。

- 有効な電子メール・アドレスを持ついずれかのユーザーを変更する方法

- 未割当ての問題をこのユーザーに割り当てる方法

- 有効な電子メール受信ボックスで通知電子メールを確認する方法

新しいトリガーをテストするには、次のステップを実行します

1. Issue Trackerアプリケーションを実行します。

2. 「ユーザー」タブをクリックします。

3. Carla Downingの横にある「編集」アイコンをクリックします。

4. 「Email Address」に、有効な電子メール・アドレスを入力します。

5. 「変更の適用」をクリックします。

6. 「レポート」タブをクリックします。

7. 「Assign Open Issues」リンクをクリックします。

8. 「Assigned To」で、「Carla Downing」を選択します。

9. 「変更の適用」をクリックします。

10. 数分待機してから、送信先の電子メール受信ボックスを確認します。図15-51「電子メール通知の本文」に類似した本文が含まれている、件名が「New Issue Assignment」の電子メールが表示されます。

図15-51 電子メール通知の本文

「図15-51 電子メール通知の本文」の説明

期限切れの問題の通知の追加

2つ目の電子メール通知では、問題が期限切れになるとプロジェクト・リーダーに通知されます。解決目標日が過ぎると、問題は期限切れになりますが、終結はしていません。問題の期限が切れたかどうかの判別にユーザーは介入しないため、ページ上で、またはトリガーで期限切れを確認することはできません。

期限切れの問題を確認する最適な方法は、IT_ISSUES表を問い合せるパッケージを記述することです。パッケージは、期限切れの問題を検出すると、プロジェクト・リーダーに電子メールを送信します。このプロシージャは、プロジェクト別に問題を確認するため、プロジェクト・リーダーが受信する電子メールは、各問題で1つではなく、すべての期限切れの問題で1つのみです。パッケージは、dbms_jobによって1日に1回コールされます。

オブジェクトの作成機能は、次のいずれかの方法で使用できます。

- SQLワークショップ内からパッケージおよびパッケージ本体を作成する。

- SQLコマンド・プロセッサを使用して、createコマンドを実行する。

パッケージを作成するには、次のステップを実行します。

1. 「ワークスペース」ホームページで「SQLワークショップ」をクリックして、「SQLコマンド」をクリックします。
SQLコマンドが表示されます。

2. 表示されるフィールドに次の文を入力します。

CREATE OR REPLACE package it_check_overdue_issues
AS
PROCEDURE email_overdue;
END;
/

3. 「実行」をクリックします。

パッケージ本体を作成するには、次のステップを実行します。

1. 「ワークスペース」ホームページで「SQLワークショップ」をクリックして、「SQLコマンド」をクリックします。
SQLコマンドが表示されます。

2. 表示されるフィールドに次の文を入力します。

CREATE OR REPLACE PACKAGE BODY it_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 it_projects pr,
it_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 it_issues i,
it_people p
WHERE i.assigned_to_person_id = p.person_id (+)
AND i.related_project_id = 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 it_check_overdue_issues;
/

このトリガーをご使用の環境で機能させるには、APEX_MAIL.SENDのコメントをはずし、p_toおよびp_fromを、独自の有効な電子メール・アドレスと置き換えます。

3. 「実行」をクリックします。
次に、従業員の有効な電子メール・アドレスを含むデモンストレーション・データを更新します。

有効な電子メール・アドレスを含むデモンストレーション・データを更新するには、次のステップを実行します。

1. 「ワークスペース」ホームページで、「SQLワークショップ」をクリックして、「オブジェクト・ブラウザ」をクリックします。

2. ページの左側にある「オブジェクト」リストから、「表」を選択します。

3. IT_PEOPLE表を選択します。

4. 「データ」タブを選択します。

5. 各ユーザーの電子メール・アドレスを編集します。

1. 「編集」アイコンをクリックします。

2. 「Person Email」を有効な電子メール・アドレスに変更します。

3. 「変更の適用」をクリックします。

6. IT_PEOPLE表内のすべてのユーザーについて、ステップ5を繰り返します。

7. 「ホーム」ブレッドクラム・リンクをクリックして、「ワークスペース」ホームページに戻ります。
次に、新しく作成されたパッケージを、指定した時間間隔で実行するDBMS_JOBを作成します。

DBMS_JOBを作成するには、次のステップを実行します。

次に、新しく作成されたパッケージを実行するDBMS_JOBの例を示します。ただし、これを有効なDBMS_JOBにするには、適切に間隔を設定してSQLワークショップ内でSQLコマンドを使用して実行する必要があります。

DECLARE
jobno number;
BEGIN
DBMS_JOB.SUBMIT(
job => jobno,
what => 'BEGIN it_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回検証するかを定義します。

この項の内容は次のとおりです。

- プロジェクトおよびユーザー定義の制限

- 問題の変更の制限

このトピックに関するその他の例は、次に示すOracle by Examples (OBE)を参照してください。

- アプリケーションへのセキュリティの追加
http://www.oracle.com/technology/obe/hol08/apexintro/apex3.1.1_d/apex3.1.1_d_otn.htm

関連項目:
『Oracle Database Application Expressユーザーズ・ガイド』のセッション・ステートの保護に関する説明

プロジェクトおよびユーザー定義の制限

1つ目の要件は、CEOおよびマネージャのみが、プロジェクトおよびユーザーを定義および管理できることです。この要件に対処するには、次のステップを実行します。

- 認可スキームを作成して、カレント・ユーザーのロールを確認します。

- 認可スキームを、「Project Details」ページおよび「User Information」ページにナビゲートする「Projects」および「Users」レポートのアイテムと関連付けます。

- 認可スキームを「Project Details」ページおよび「User Information」ページそのものと関連付けて、ユーザーがターゲット・ページへのURLを手動で編集し、セキュリティを回避しないようにします。

カレント・ユーザーを参照するには、セッション変数:APP_USERを使用します。このセッション変数は、ユーザーの電子メール・アドレス(ワークスペースまたはワークスペース名と同じ)と比較されます。このタイプのセキュリティをコーディングする場合は、常に、すべてのセキュリティを通過できるユーザーでコーディングする必要があります。このユーザーは、開発およびテストで非常に役に立ちます。この方法を実行できない場合は、自分をCEOまたはマネージャとして定義しないかぎり、制限付きページにアクセスすることはできません。

認可スキームの作成

次のステップで作成する認可スキームを適用する前に、ユーザー名がHOWTOのユーザーを作成します。HOWTOユーザーは、「Projects」および「Issues」ページの編集リンクを表示する認可を受けています。その後で、HOWTO2という別のユーザーを作成します。このユーザーは、リンクを表示不可能である必要があります。

関連項目:
「ユーザーの作成」

認可スキームを作成するには、次のステップを実行します。

1. 「ワークスペース」ホームページで、「アプリケーション・ビルダー」をクリックします。

2. Issue Trackerアプリケーションを選択します。

3. 「共有コンポーネント」をクリックします。

4. 「セキュリティ」で、「認可スキーム」をクリックします。

5. 「作成」をクリックします。

6. 「認可スキームを作成」で、デフォルトの「最初から」を受け入れて「次へ」をクリックします。

7. 「認可スキーム」の「名前」に、次のように入力します。

USER_CEO_OR_MANAGER

8. 「認可スキーム」で、次のステップを実行します。

1. 「スキーム・タイプ」で、「EXISTS SQL問合せ」を選択します。

2. 「式1」に、次のように入力します。

SELECT '1'
FROM it_people
WHERE (upper(username) = 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. 「リンク列」までスクロールし、「認可スキーム」で「USER_CEO_OR_MANAGER」を選択します。

5. 「変更の適用」をクリックします。

認可スキームを「Projects」レポートの「作成」ボタンと関連付けるには、次のステップを実行します。

1. ページ2のページ定義の「ボタン」で、「Add Project>」リンクをクリックします。
ページ・ボタンの編集ページが表示されます。

2. 「認可」で、認可スキームの「USER_CEO_OR_MANAGER」を選択します。

3. 「変更の適用」をクリックします。

オブジェクトと「Project Details」フォームの関連付け

認可スキームを「Project Details」ページと関連付けるには、次のステップを実行します。

1. 「次のページ」(>)ボタンをクリックして、ページ3に移動します。
ページ3 (「Project Details」)のページ定義が表示されます。

2. 「ページ」で、「ページ属性の編集」アイコンをクリックします。
「ページ属性」ページが表示されます。

3. 「セキュリティ」で、認可スキームの「USER_CEO_OR_MANAGER」を選択します。

4. 「変更の適用」をクリックします。

オブジェクトと「Users」レポートの関連付け

認可スキームを「Users」レポートと関連付けるには、次のステップを実行します。

1. 「次のページ」(>)ボタンをクリックして、ページ4に移動します。
ページ4 (「Users」)のページ定義が表示されます。

2. 「リージョン」で、「Users」の横にある「対話モード・レポート」をクリックします。

3. 「リンク列」までスクロールし、「認可スキーム」で「USER_CEO_OR_MANAGER」を選択します。

4. 「変更の適用」をクリックします。

認可スキームを「Users」レポートの「Add User」ボタンと関連付けるには、次のステップを実行します。

1. 「次のページ」(>)ボタンをクリックして、ページ5に移動します。
ページ5のページ定義が表示されます。

2. 「ボタン」で、「作成」リンク(アイコンでない)をクリックします。
ページ・ボタンの編集ページが表示されます。

3. 「認可」で、認可スキームの「USER_CEO_OR_MANAGER」を選択します。

4. 「変更の適用」をクリックします。

オブジェクトと「User Information」フォームの関連付け

認可スキームを「User Information」ページと関連付けるには、次のステップを実行します。

1. 「ページ」で、「ページ属性の編集」アイコンをクリックします。
「ページ属性」ページが表示されます。

2. 「セキュリティ」で、認可スキームの「USER_CEO_OR_MANAGER」を選択します。

3. 「変更の適用」をクリックします。

問題の変更の制限

2つ目の要件は、問題が割り当てられた後で、割り当てられたユーザー(またはプロジェクト・リーダー)のみが問題に関するデータを変更できることです。この要件は、すべての問題に対して変更を行うため、多少複雑です。

現在、ユーザーが問題を変更できるページは、「Issue Details」ページと「Assign Open Issues」ページの2つです。「Assign Open Issues」ページで表示される問題は、未割当ての問題のみです。問題が未割当てのため、セキュリティは必要ありません。

他のユーザーはデータを変更することはできませんが、進捗および解決を表示できるように、問題に関するすべての詳細データをユーザーが表示できるようにする場合があります。この要件の場合、最適な方法は、ページ・ビューごとに1回評価される認可スキームを作成することです。

認可スキームを、「Issue Details」ページの「変更の適用」および「削除」ボタンの両方と関連付けます。この方法では、認可されていないユーザーは、すべての詳細を表示できますが、変更を行っても、その変更を保存することはできません。

追加したセキュリティでは、IT_ISSUESで挿入、更新および削除を行うプロセスと認可スキームを関連付けることもできます。これによって、アプリケーションでは、他のユーザーによる変更の適用プロセスをコールするためのURLの変更を防ぐことができます。変更できない理由をユーザーに知らせるには、認可に失敗した際に説明が表示されるHTMLリージョンを追加できます。このスキームのSQLはP7_ISSUE_IDを参照する必要があるため、「Issues Details」ページに固有である必要があります。また、評価される時点で、必要なデータはセッション・ステートで使用できないため、データベースからデータを取得する必要があります。使用可能なアイテムは、リンクによって渡される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_person_id
FROM it_issues
WHERE issue_id = :P7_ISSUE_ID)
LOOP
l_related_project := c1.related_project;
l_assigned_to     := c1.assigned_to_person_id;
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 it_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
ELSEIF 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. 「作成」をクリックします。

次に、認可スキームを「Issue Details」ページの適切なオブジェクトと関連付ける必要があります。

オブジェクトと「Create/Edit Issue」レポートとの関連付け

認可スキームをボタンおよびプロセスと関連付けるには、次のステップを実行します。

1. 「アプリケーション」ホームページに移動します。

2. ページ「7 - Issue Details」を選択します。

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. 「ページ・プロセス」の「プロセス」で、「IT_ISSUESの行を処理」を選択します。

1. 「認可」で、認可スキームの「P7_ASSIGNED_OR_PROJECT_LEAD」を選択します。

2. 「変更の適用」をクリックします。

HTMLリージョンの作成

最後に、認可に失敗した際に説明を表示する新しいリージョンを作成します。

新しいリージョンを作成するには、次のステップを実行します。

1. 「リージョン」の下の「ページ7」で、「作成」アイコンをクリックします。

2. 「リージョン」で、デフォルトの「HTML」を受け入れて「次へ」をクリックします。

3. リージョン・コンテナとして「HTML」を選択し、「次へ」をクリックします。

4. 「表示属性」で、次のステップを実行します。

1. 「タイトル」に、Not Authorizedと入力します。

2. 「表示ポイント」で、「ページ・テンプレート・ボディ (2. リージョン・コンテンツより下のアイテム)」を選択します。

3. 「順序」に、30と入力します。

4. 「次へ」をクリックします。

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. 「リージョンの作成」をクリックします。

図15-52「認証の失敗を表示する新しいリージョン」に、認証に失敗したユーザーが実行している「Issue Details」ページを示します。新しいリージョンはページの上部に表示され、表示されるボタンは「取消」のみです。

図15-52 認可の失敗を表示する新しいリージョン

「図15-52 認可の失敗を表示する新しいリージョン」の説明

このセキュリティ要件に対しては、問題の詳細を表示する別のページを作成することがより効果的です。issue_idとカレント・ユーザーを取得し、表示専用または編集用のフラグを渡すプロシージャが必要となります。このプロシージャへのコールに基づいて「ビュー」ページまたは「編集」ページのいずれかをコールする、すべてのレポートのリンクを動的に構築できます。リンクを使用しないで編集ページにアクセスするユーザーを回避するために、挿入、更新および削除処理が行われる前に権限を確認することがあります。

アプリケーションのデプロイ

アプリケーションが完成したら、次のステップで、このアプリケーションをデプロイします。通常、開発者はあるサーバーでアプリケーションを作成し、別のサーバーにデプロイします。この方法は必須ではありませんが、本番のインスタンスに影響を与えずに不具合を解決できます。

注意:
別のサーバーにアプリケーションをデプロイするには、別のOracle Application Expressインスタンスをインストールおよび構成する必要があります。

この項の内容は次のとおりです。

- アプリケーション定義の移動

- 考慮すべき認証メカニズムの変更

- ユーザーの作成

- URLの公開

アプリケーション定義の移動

アプリケーション定義は、Oracle Databaseに格納されます。アプリケーション定義には、テンプレートなど、アプリケーションを構成するすべての要素が含まれていますが、データベース・オブジェクト定義や基礎となるデータは含まれていません。アプリケーションを別の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 Databaseにすでにある場合は、エクスポート/インポートを使用してマシン間でデータを移動するか、またはSQLを使用して既存データを取得および変換し、アプリケーション表にロードします。

関連項目:
「デモンストレーション・データのロード」および『Oracle Database Express Edition 2 Day DBA』のデータのインポート、エクスポート、ロードおよびアンロードに関する説明

考慮すべき認証メカニズムの変更

アプリケーションのログイン・ページで、ユーザー名とパスワードを指定してログインAPIをコールすると、Application Expressエンジンによって、アプリケーションの現行の認証スキームに指定されている資格証明の検証方式がコールされます。ログインAPIから資格証明を検証するには、3つの方法があります。

- ブールを戻すPL/SQLファンクションとしてユーザー独自の方式を実装し、アプリケーションのスキーマに配置します。

- 組込み式のLDAP認証方式を使用します。これは、ユーザーが指定したLDAPディレクトリに対してユーザー名とパスワードを確認します。

- 組込み式のOracle Application Express認証方式を使用します。これは、Oracle Application Expressワークスペース・リポジトリに対してユーザー名とパスワードを確認します。

現在、アプリケーションは組込み式のOracle Application Express認証方式を使用しています。

関連項目:
『Oracle Database Application Expressユーザーズ・ガイド』の「認証を介したユーザーの本人確認」

関連項目:
OTNのセキュリティHow Toドキュメント

http://www.oracle.com/technology/products/database/application_express/howtos/howtos.html

ユーザーの作成

アプリケーションにアクセスできるようにするために、ユーザーを作成する必要があります。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は、コールされるアプリケーションです。
このIDをここで示すようにハード・コードするかわりに、置換文字列APP_ALIASを使用できます。

- 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

使用した例からもわかるように、URLに意味はなく、長くすることができます。ホスト名は、わかりやすいように変更できます。また、短縮した形式で公開したり、ユーザーにとってわかりやすいURLを公開するために、Apacheを構成してURLを書き直すこともできます。詳細は、Apacheのドキュメントを参照してください。

A DDLおよびスクリプト

この付録では、『Oracle Application Expressアドバンスト・チュートリアル』の多数のチュートリアルを完了するために必要なDDL (データ定義言語)およびスクリプトについて説明します。

この項の内容は次のとおりです。

- アプリケーション・データベース・オブジェクトのDDLの作成

- 問題スクリプトの作成

アプリケーション・データベース・オブジェクトのDDLの作成

次に、問題追跡アプリケーションによって使用される必要なすべてのデータベース・オブジェクトを作成する場合のDDLを示します。問題追跡アプリケーションについては、第14章「問題追跡アプリケーションの設計方法」および第15章「問題追跡アプリケーションの作成およびデプロイ方法」で説明されています。

--
-- IT_API package spec
--
create or replace package it_api
as
function gen_pk
return number;
end it_api;
/
--
-- IT_PROJECTS
--
-- The IT_PROJECTS DDL:
-- + creates the projects table with the necessary columns,
-- including a new column for a system generated primary key
-- + declares the new primary key
-- + implements the real primary key, project name, as a unique key
-- + populates the project id whenever a new record is created
-- + sets the auditing columns
-- + declares table and column comments
--
create table it_projects (
project_id number not null,
project_name varchar2(255) not null,
start_date date not null,
target_end_date date not null,
actual_end_date date,
created_on date not null,
created_by varchar2(255) not null,
modified_on date,
modified_by varchar2(255)
)
/
alter table it_projects
add constraint it_projects_pk
primary key (project_id)
/
alter table it_projects
add constraint it_projects_uk
unique (project_name)
/
create or replace trigger it_projects_biu
before insert or update on it_projects
for each row
begin
if inserting then
if :NEW.PROJECT_ID is null then
:NEW.PROJECT_ID := it_api.gen_pk;
end if;
:NEW.CREATED_ON := sysdate;
:NEW.CREATED_BY := nvl(v('APP_USER'),USER);
end if;
if updating then
:NEW.MODIFIED_ON := sysdate;
:NEW.MODIFIED_BY := nvl(v('APP_USER'),USER);
end if;
end;
/
comment on table it_projects is
'All projects currently underway.'
/
comment on column it_projects.project_id is
'The system generated unique identifier for the project.'
/
comment on column it_projects.project_name is
'The unique name of the project.'
/
comment on column it_projects.start_date is
'The start date of the project.'
/
comment on column it_projects.target_end_date is
'The targeted end date of the project.'
/
comment on column it_projects.actual_end_date is
'The actual end date of the project.'
/
comment on column it_projects.created_on is
'Audit Column: Date the record was created.'
/
comment on column it_projects.created_by is
'Audit Column: The user who created the record.'
/
comment on column it_projects.modified_on is
'Audit Column: Date the record was last modified.'
/
comment on column it_projects.modified_by is
'Audit Column: The user who last modified the record.'
/
--
-- IT_PEOPLE
--
-- The IT_PEOPLE DDL:
-- + creates the people table with the necessary columns,
-- including a new column for a system generated primary key
-- + declares the new primary key
-- + implements the real primary key, person name, as a unique key
-- + implements a check constraint to validate the roles that people
-- can be assigned
-- + implements a foreign key to validate that people are assigned to
-- valid projects
-- + implements a check constraint to enforce that all project leads
-- and team members are assigned to projects
-- + populates the person id whenever a new record is created
-- + sets the auditing columns
-- + declares table and column comments
--
create table it_people (
person_id number not null,
person_name varchar2(255) not null,
person_email varchar2(255) not null,
person_role varchar2(30) not null,
username varchar2(255) not null,
assigned_project number,
created_on date not null,
created_by varchar2(255) not null,
modified_on date,
modified_by varchar2(255)
)
/
alter table it_people
add constraint it_people_pk
primary key (person_id)
/
alter table it_people
add constraint it_people_name_uk
unique (person_name)
/
alter table it_people
add constraint it_people_username_uk
unique (username)
/
alter table it_people
add constraint it_people_role_cc
check (person_role in ('CEO','Manager','Lead','Member'))
/
alter table it_people
add constraint it_people_project_fk
foreign key (assigned_project)
references it_projects
/
alter table it_people
add constraint it_people_assignment_cc
check ( (person_role in ('Lead','Member') and assigned_project is not null) or
(person_role in ('CEO','Manager') and assigned_project is null) )
/
create or replace trigger it_people_biu
before insert or update on it_people
for each row
begin
if inserting then
if :NEW.PERSON_ID is null then
:NEW.PERSON_ID := it_api.gen_pk;
end if;
:NEW.CREATED_ON := sysdate;
:NEW.CREATED_BY := nvl(v('APP_USER'),USER);
end if;
if updating then
:NEW.MODIFIED_ON := sysdate;
:NEW.MODIFIED_BY := nvl(v('APP_USER'),USER);
end if;
end;
/
comment on table it_people is
'All people within the company.'
/
comment on column it_people.person_id is
'The system generated unique identifier for the person.'
/
comment on column it_people.person_name is
'The unique name of the person.'
/
comment on column it_people.person_role is
'The role the person plays within the company.'
/
comment on column it_people.username is
'The username of this person. Used to link login to person details.'
/
comment on column it_people.assigned_project is
'The project that the person is currently assigned to.'
/
comment on column it_people.created_on is
'Audit Column: Date the record was created.'
/
comment on column it_people.created_by is
'Audit Column: The user who created the record.'
/
comment on column it_people.modified_on is
'Audit Column: Date the record was last modified.'
/
comment on column it_people.modified_by is
'Audit Column: The user who last modified the record.'
/
--
-- IT_ISSUES
--
-- The IT_ISSUES DDL:
-- + creates the table with the necessary columns, including a new column
-- for a system generated primary key
-- + declares the new primary key
-- + implements a foreign key to validate that the issue is identified by a
-- valid person
-- + implements a foreign key to validate that the issue is assigned to a
-- valid person
-- + implements a foreign key to validate that the issue is associated with
-- a valid project
-- + implements a check constraint to validate the status that is assigned
-- to the issue
-- + implements a check constraint to validate the priority that is assigned
-- to the issue
-- + populates the issue id whenever a new record is created
-- + sets the auditing columns
-- + assigns the status of 'Open' if no status is provided
-- + sets the status to 'Closed' if an ACTUAL_RESOLUTION_DATE is provided
-- + declares table and column comments
--
create table it_issues (
issue_id number not null,
issue_summary varchar2(255) not null,
issue_description varchar2(4000),
identified_by_person_id number not null,
identified_date date not null,
related_project_id number not null,
assigned_to_person_id number,
status varchar2(30) not null,
priority varchar2(30) not null,
target_resolution_date date,
progress varchar2(4000),
actual_resolution_date date,
resolution_summary varchar2(4000),
created_on date not null,
created_by varchar2(255) not null,
modified_on date,
modified_by varchar2(255)
)
/
alter table it_issues
add constraint it_issues_pk
primary key (issue_id)
/
alter table it_issues
add constraint it_issues_identified_by_fk
foreign key (identified_by_person_id)
references it_people
/
alter table it_issues
add constraint it_issues_assigned_to_fk
foreign key (assigned_to_person_id)
references it_people
/
alter table it_issues
add constraint it_issues_project_fk
foreign key (related_project_id)
references it_projects
/
alter table it_issues
add constraint it_issues_status_cc
check (status in ('Open','On-Hold','Closed'))
/
alter table it_issues
add constraint it_issues_priority_cc
check (priority in ('High','Medium','Low'))
/
create or replace trigger it_issues_biu
before insert or update on it_issues
for each row
begin
if inserting then
if :NEW.ISSUE_ID is null then
:NEW.ISSUE_ID := it_api.gen_pk;
end if;
:NEW.CREATED_ON := sysdate;
:NEW.CREATED_BY := nvl(v('APP_USER'),USER);
if :new.status is null
then :new.status := 'Open';
end if;
end if;
if updating then
:NEW.MODIFIED_ON := sysdate;
:NEW.MODIFIED_BY := nvl(v('APP_USER'),USER);
if :new.actual_resolution_date is not null
then :new.status := 'Closed';
end if;
end if;
end;
/
comment on table it_issues is
'All issues related to the projects being undertaken by the company.'
/
comment on column it_issues.issue_id is
'The system generated unique identifier for the issue.'
/
comment on column it_issues.issue_summary is
'A brief summary of the issue.'
/
comment on column it_issues.issue_description is
'A full description of the issue.'
/
comment on column it_issues.identified_by_person_id is
'The person who identified the issue.'
/
comment on column it_issues.identified_date is
'The date the issue was identified.'
/
comment on column it_issues.related_project_id is
'The project that the issue is related to.'
/
comment on column it_issues.assigned_to_person_id is
'The person that the issue is assigned to.'
/
comment on column it_issues.status is
'The current status of the issue.'
/
comment on column it_issues.priority is
'The priority of the issue. How important it is to get resolved.'
/
comment on column it_issues.target_resolution_date is
'The date on which the issue is planned to be resolved.'
/
comment on column it_issues.actual_resolution_date is
'The date the issue was actually resolved.'
/
comment on column it_issues.progress is
'Any progress notes on the issue resolution.'
/
comment on column it_issues.resolution_summary is
'The description of the resolution of the issue.'
/
comment on column it_issues.created_on is
'Audit Column: Date the record was created.'
/
comment on column it_issues.created_by is
'Audit Column: The user who created the record.'
/
comment on column it_issues.modified_on is
'Audit Column: Date the record was last modified.'
/
comment on column it_issues.modified_by is
'Audit Column: The user who last modified the record.'
/
--
-- IT_API package body
--
create or replace package body it_api
as
-- generates and returns unique number used for primary key values
function gen_pk
return number
is
l_pk number := 0;
begin
for c1 in (
select to_number(sys_guid(),'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX') pk
from dual )
loop
l_pk := c1.pk;
exit;
end loop;
return l_pk;
end gen_pk;
end it_api;
/

問題スクリプトの作成

次に、第14章「問題追跡アプリケーションの作成およびデプロイ方法」に記述されている問題追跡アプリケーションのIssues表に移入する場合のスクリプトを示します。

create or replace package it_sample_data
as
procedure create_sample_projects;
procedure create_sample_people;
procedure create_sample_issues;
procedure remove_sample_data;
end it_sample_data;
/
create or replace package body it_sample_data
as
procedure create_sample_projects
is
begin
insert into it_projects (project_id, project_name, start_date, target_end_date)
values (1, 'Internal Infrastructure', sysdate-150, sysdate-30);
insert into it_projects (project_id, project_name, start_date, target_end_date)
values (2, 'New Payroll Rollout', sysdate-150, sysdate+15);
insert into it_projects (project_id, project_name, start_date, target_end_date)
values (3, 'Email Integration', sysdate-120, sysdate-60);
insert into it_projects (project_id, project_name, start_date, target_end_date)
values (4, 'Public Website Operational', sysdate-60, sysdate+30);
insert into it_projects (project_id, project_name, start_date, target_end_date)
values (5, 'Employee Satisfaction Survey', sysdate-30, sysdate+60);
commit;
end create_sample_projects;
procedure create_sample_people
is
begin
insert into it_people (person_id, person_name, person_email, person_role, username, assigned_project)
values (1, 'Joe Cerno', 'joe.cerno@mrvl-bademail.com', 'CEO', 'jcerno', null);
insert into it_people (person_id, person_name, person_email, person_role, username, assigned_project)
values (2, 'Kim Roberts', 'kim.roberts@mrvl-bademail.com', 'Manager', 'kroberts', null);
insert into it_people (person_id, person_name, person_email, person_role, username, assigned_project)
values (3, 'Tom Suess', 'tom.suess@mrvl-bademail.com', 'Manager', 'tsuess', null);
insert into it_people (person_id, person_name, person_email, person_role, username, assigned_project)
values (4, 'Al Bines', 'al.bines@mrvl-bademail.com', 'Lead', 'abines', 1);
insert into it_people (person_id, person_name, person_email, person_role, username, assigned_project)
values (5, 'Carla Downing', 'carla.downing@mrvl-bademail.com', 'Lead', 'cdowning', 2);
insert into it_people (person_id, person_name, person_email, person_role, username, assigned_project)
values (6, 'Evan Fanner', 'evan.fanner@mrvl-bademail.com', 'Lead', 'efanner', 3);
insert into it_people (person_id, person_name, person_email, person_role, username, assigned_project)
values (7, 'George Hurst', 'george.hurst@mrvl-bademail.com', 'Lead', 'ghurst', 4);
insert into it_people (person_id, person_name, person_email, person_role, username, assigned_project)
values (8, 'Irene Jones', 'irene.jones@mrvl-bademail.com', 'Lead', 'ijones', 5);
insert into it_people (person_id, person_name, person_email, person_role, username, assigned_project)
values (9, 'Karen London', 'karen.london@mrvl-bademail.com', 'Member', 'klondon', 1);
insert into it_people (person_id, person_name, person_email, person_role, username, assigned_project)
values (10, 'Mark Nile', 'mark.nile@mrvl-bademail.com', 'Member', 'mnile', 1);
insert into it_people (person_id, person_name, person_email, person_role, username, assigned_project)
values (11, 'Jane Kerry', 'jane.kerry@mrvl-bademail.com', 'Member', 'jkerry', 5);
insert into it_people (person_id, person_name, person_email, person_role, username, assigned_project)
values (12, 'Olive Pope', 'olive.pope@mrvl-bademail.com', 'Member','opope', 2);
insert into it_people (person_id, person_name, person_email, person_role, username, assigned_project)
values (13, 'Russ Sanders', 'russ.sanders@mrvl-bademail.com', 'Member', 'rsanders', 3);
insert into it_people (person_id, person_name, person_email, person_role, username, assigned_project)
values (14, 'Tucker Uberton', 'tucker.uberton@mrvl-bademail.com', 'Member', 'ruberton', 3);
insert into it_people (person_id, person_name, person_email, person_role, username, assigned_project)
values (15, 'Vicky Williams', 'vicky.willaims@mrvl-bademail.com', 'Member', 'vwilliams', 4);
insert into it_people (person_id, person_name, person_email, person_role, username, assigned_project)
values (16, 'Scott Tiger', 'scott.tiger@mrvl-bademail.com', 'Member', 'stiger', 4);
insert into it_people (person_id, person_name, person_email, person_role, username, assigned_project)
values (17, 'Yvonne Zeiring', 'yvonee.zeiring@mrvl-bademail.com', 'Member', 'yzeirling', 4);
commit;
end create_sample_people;
procedure create_sample_issues
is
begin
insert into it_issues
(issue_id, issue_summary, issue_description,
identified_by_person_id, identified_date,
related_project_id, assigned_to_person_id, status, priority,
target_resolution_date, progress,
actual_resolution_date, resolution_summary)
values
(1, 'Midwest call center servers have no failover due to Conn Creek plant fire','',
6, sysdate-80,
3, 6, 'Closed', 'Medium', sysdate-73,
'Making steady progress.', sysdate-73, '');
insert into it_issues
(issue_id, issue_summary, issue_description,
identified_by_person_id, identified_date,
related_project_id, assigned_to_person_id, status, priority,
target_resolution_date, progress,
actual_resolution_date, resolution_summary)
values
(2, 'Timezone ambiguity in some EMEA regions is delaying bulk forwarding to mirror sites','',
6, sysdate-100,
3, 14, 'Open', 'Low', sysdate-80,
'','','');
insert into it_issues
(issue_id, issue_summary, issue_description,
identified_by_person_id, identified_date,
related_project_id, assigned_to_person_id, status, priority,
target_resolution_date, progress,
actual_resolution_date, resolution_summary)
values
(3, 'Some vendor proposals lack selective archiving and region-keyed retrieval sections','',
6, sysdate-110,
3, 13, 'Closed', 'Medium', sysdate-90,
'', sysdate-95, '');
insert into it_issues
(issue_id, issue_summary, issue_description,
identified_by_person_id, identified_date,
related_project_id, assigned_to_person_id, status, priority,
target_resolution_date, progress,
actual_resolution_date, resolution_summary)
values
(4, 'Client software licenses expire for Bangalore call center before cutover','',
1, sysdate-70,
3, 6, 'Closed', 'High', sysdate-60,
'',sysdate-66,'Worked with HW, applied patch set.');
insert into it_issues
(issue_id, issue_summary, issue_description,
identified_by_person_id, identified_date,
related_project_id, assigned_to_person_id, status, priority,
target_resolution_date, progress,
actual_resolution_date, resolution_summary)
values
(5, 'Holiday coverage for DC1 and DC3 not allowed under union contract, per acting steward at branch 745','',
1, sysdate-100,
3, 13, 'Closed', 'High', sysdate-90,
'',sysdate-95, 'Worked with HW, applied patch set.');
insert into it_issues
(issue_id, issue_summary, issue_description,
identified_by_person_id, identified_date,
related_project_id, assigned_to_person_id, status, priority,
target_resolution_date, progress,
actual_resolution_date, resolution_summary)
values
(6, 'Review rollout schedule with HR VPs/Directors','',
8, sysdate-30,
5, null, 'Closed', 'Medium', sysdate-15,
'',sysdate-20,'');
insert into it_issues
(issue_id, issue_summary, issue_description,
identified_by_person_id, identified_date,
related_project_id, assigned_to_person_id, status, priority,
target_resolution_date, progress,
actual_resolution_date, resolution_summary)
values
(7, 'Distribute translated categories and questions for non-English regions to regional team leads','',
8, sysdate-2,
5, 8, 'Open', 'Medium', sysdate+10,
'currently beta testing new look and feel','','');
insert into it_issues
(issue_id, issue_summary, issue_description,
identified_by_person_id, identified_date,
related_project_id, assigned_to_person_id, status, priority,
target_resolution_date, progress,
actual_resolution_date, resolution_summary)
values
(8, 'Provide survey FAQs to online newsletter group','',
1, sysdate-10,
5, 11, 'Open', 'Medium', sysdate+20,
'','','');
insert into it_issues
(issue_id, issue_summary, issue_description,
identified_by_person_id, identified_date,
related_project_id, assigned_to_person_id, status, priority,
target_resolution_date, progress,
actual_resolution_date, resolution_summary)
values
(9, 'Need better definition of terms like work group, department, and organization for categories F, H, and M-W','',
1, sysdate-8,
5, null, 'Open', 'Low', sysdate+15,
'','','');
insert into it_issues
(issue_id, issue_summary, issue_description,
identified_by_person_id, identified_date,
related_project_id, assigned_to_person_id, status, priority,
target_resolution_date, progress,
actual_resolution_date, resolution_summary)
values
(10, 'Legal has asked for better definitions on healthcare categories for Canadian provincial regs compliance','',
1, sysdate-10,
5, 11, 'Closed', 'Medium', sysdate+20,
'',sysdate-1,'');
insert into it_issues
(issue_id, issue_summary, issue_description,
identified_by_person_id, identified_date,
related_project_id, assigned_to_person_id, status, priority,
target_resolution_date, progress,
actual_resolution_date, resolution_summary)
values
(11, 'Action plan review dates conflict with effectivity of organizational consolidations for Great Lakes region','',
1, sysdate-9,
5, 11, 'Open', 'Medium', sysdate+45,
'','','');
insert into it_issues
(issue_id, issue_summary, issue_description,
identified_by_person_id, identified_date,
related_project_id, assigned_to_person_id, status, priority,
target_resolution_date, progress,
actual_resolution_date, resolution_summary)
values
(12, 'Survey administration consulting firm requires indemnification release letter from HR SVP','',
1, sysdate-30,
5, 11, 'Closed', 'Low', sysdate-15,
'', sysdate-17, '');
insert into it_issues
(issue_id, issue_summary, issue_description,
identified_by_person_id, identified_date,
related_project_id, assigned_to_person_id, status, priority,
target_resolution_date, progress,
actual_resolution_date, resolution_summary)
values
(13, 'Facilities, Safety health-check reports must be signed off before capital asset justification can be approved','',
4, sysdate-145,
1, 4, 'Closed', 'Medium', sysdate-100,
'',sysdate-110,'');
insert into it_issues
(issue_id, issue_summary, issue_description,
identified_by_person_id, identified_date,
related_project_id, assigned_to_person_id, status, priority,
target_resolution_date, progress,
actual_resolution_date, resolution_summary)
values
(14, 'Cooling and Power requirements exceed 90% headroom limit -- variance from Corporate requested','',
4, sysdate-45,
1, 9, 'Closed', 'High', sysdate-30,
'',sysdate-35,'');
insert into it_issues
(issue_id, issue_summary, issue_description,
identified_by_person_id, identified_date,
related_project_id, assigned_to_person_id, status, priority,
target_resolution_date, progress,
actual_resolution_date, resolution_summary)
values
(15, 'Local regulations prevent Federal contracts compliance on section 3567.106B','',
4, sysdate-90,
1, 10, 'Closed', 'High', sysdate-82,
'',sysdate-85,'');
insert into it_issues
(issue_id, issue_summary, issue_description,
identified_by_person_id, identified_date,
related_project_id, assigned_to_person_id, status, priority,
target_resolution_date, progress,
actual_resolution_date, resolution_summary)
values
(16, 'Emergency Response plan failed county inspector''s review at buildings 2 and 5','',
4, sysdate-35,
1, null, 'Open', 'High', sysdate-5,
'','','');
insert into it_issues
(issue_id, issue_summary, issue_description,
identified_by_person_id, identified_date,
related_project_id, assigned_to_person_id, status, priority,
target_resolution_date, progress,
actual_resolution_date, resolution_summary)
values
(17, 'Training for call center 1st and 2nd lines must be staggered across shifts','',
5, sysdate-8,
2, 5, 'Closed', 'Medium', sysdate+10,
'',sysdate-1,'');
insert into it_issues
(issue_id, issue_summary, issue_description,
identified_by_person_id, identified_date,
related_project_id, assigned_to_person_id, status, priority,
target_resolution_date, progress,
actual_resolution_date, resolution_summary)
values
(18, 'Semi-monthly ISIS feed exceeds bandwidth of Mississauga backup site','',
5, sysdate-100,
2, 12, 'On-Hold', 'Medium', sysdate-30,
'pending info from supplier','','');
insert into it_issues
(issue_id, issue_summary, issue_description,
identified_by_person_id, identified_date,
related_project_id, assigned_to_person_id, status, priority,
target_resolution_date, progress,
actual_resolution_date, resolution_summary)
values
(19, 'Expat exception reports must be hand-reconciled until auto-post phaseout complete','',
5, sysdate-17,
2, 12, 'Closed', 'High', sysdate+4,
'',sysdate-4,'');
insert into it_issues
(issue_id, issue_summary, issue_description,
identified_by_person_id, identified_date,
related_project_id, assigned_to_person_id, status, priority,
target_resolution_date, progress,
actual_resolution_date, resolution_summary)
values
(20, 'Multi-region batch trial run schedule and staffing plan due to directors by end of phase review','',
5, sysdate,
2, null, 'Open', 'High', sysdate+15,
'','','');
insert into it_issues
(issue_id, issue_summary, issue_description,
identified_by_person_id, identified_date,
related_project_id, assigned_to_person_id, status, priority,
target_resolution_date, progress,
actual_resolution_date, resolution_summary)
values
(21, 'Auditors'' signoff requires full CSB compliance report','',
5, sysdate-21,
2, 5, 'Open', 'High', sysdate-7,
'','','');
insert into it_issues
(issue_id, issue_summary, issue_description,
identified_by_person_id, identified_date,
related_project_id, assigned_to_person_id, status, priority,
target_resolution_date, progress,
actual_resolution_date, resolution_summary)
values
(22, 'Review security architecture plan with consultant','',
1, sysdate-60,
4, 7, 'Closed', 'High', sysdate-45,
'',sysdate-40,'');
insert into it_issues
(issue_id, issue_summary, issue_description,
identified_by_person_id, identified_date,
related_project_id, assigned_to_person_id, status, priority,
target_resolution_date, progress,
actual_resolution_date, resolution_summary)
values
(23, 'Evaluate vendor load balancing proposals against capital budget','',
7, sysdate-50,
4, 7, 'Closed', 'High', sysdate-45,
'',sysdate-43,'');
insert into it_issues
(issue_id, issue_summary, issue_description,
identified_by_person_id, identified_date,
related_project_id, assigned_to_person_id, status, priority,
target_resolution_date, progress,
actual_resolution_date, resolution_summary)
values
(24, 'Some preferred domain names are unavailable in registry','',
7, sysdate-55,
4, 15, 'Closed', 'Medium', sysdate-45,
'',sysdate-50,'');
insert into it_issues
(issue_id, issue_summary, issue_description,
identified_by_person_id, identified_date,
related_project_id, assigned_to_person_id, status, priority,
target_resolution_date, progress,
actual_resolution_date, resolution_summary)
values
(25, 'Establish grid management capacity-expansion policies with ASP','',
7, sysdate-20,
4, 16, 'Open', 'Medium', sysdate-5,
'','','');
insert into it_issues
(issue_id, issue_summary, issue_description,
identified_by_person_id, identified_date,
related_project_id, assigned_to_person_id, status, priority,
target_resolution_date, progress,
actual_resolution_date, resolution_summary)
values
(26, 'Access through proxy servers blocks some usage tracking tools','',
7, sysdate-10,
4, 15, 'Closed', 'High', sysdate-5,
'',sysdate-1,'');
insert into it_issues
(issue_id, issue_summary, issue_description,
identified_by_person_id, identified_date,
related_project_id, assigned_to_person_id, status, priority,
target_resolution_date, progress,
actual_resolution_date, resolution_summary)
values
(27, 'Phase I stress testing cannot use production network','',
7, sysdate-11,
4, 17, 'Open', 'High', sysdate,
'','','');
insert into it_issues
(issue_id, issue_summary, issue_description,
identified_by_person_id, identified_date,
related_project_id, assigned_to_person_id, status, priority,
target_resolution_date, progress,
actual_resolution_date, resolution_summary)
values
(28, 'DoD clients must have secure port and must be blocked from others','',
7, sysdate-20,
4, 17, 'On-Hold', 'High', sysdate,
'Waiting on Security Consultant, this may drag on.','','');
commit;
end create_sample_issues;
procedure remove_sample_data
is
begin
delete from it_issues where issue_id < 29;
delete from it_people where person_id < 18;
delete from it_projects where project_id < 6;
commit;
end remove_sample_data;
end it_sample_data;
/

Copyright © 2003, 2012, Oracle and/or its affiliates. All rights reserved.