ヘッダーをスキップ

Oracle Projects API, クライアント拡張およびオープン・インタフェース・リファレンス
リリース12
E05609-01
目次へ
目次
前のページへ
前へ
次のページへ
次へ

クライアント機能拡張の概要

この章には、Oracle Projectsのクライアント機能拡張の設計および記述に必要な情報がすべて記載されています。

この章では、次のトピックを説明します。

クライアント機能拡張

クライアント機能拡張を使用すると、Oracle Projectsの機能を拡張できます。Oracle Projectsでは企業のビジネス・ルールを標準処理フローに定義することで自動化できるため、ソフトウェアをカスタマイズする必要がなくなります。

パッケージの仕様ファイルと本文(テンプレート・プロシージャ)ファイルは、Oracle Projectsのpatch/115/sqlディレクトリに収録されています。機能拡張内のプロシージャを変更する場合には、PL/SQLを使用します。機能拡張内のプロシージャは、標準処理の特定のポイントでOracle Projectsから呼び出されます。

記述するプロシージャは、機能拡張であってカスタマイズではありません。機能拡張の場合には、製品の機能がサポートされており、製品リリースのアップグレードにも容易に対応できますが、カスタマイズの場合には、基本となる製品に変更を加えることになるため、機能がサポートされなくなり、アップグレードにも容易には対応できなくなります。

警告: 機能拡張を使用して、Oracle Applicationsの表に直接レコードを挿入したり、表のレコードを更新したりしないでください。このような操作を行うことは、Oracleではサポートされていません。Oracle Projectsの表にレコードを挿入したり、レコードを更新したりする公開プロシージャがOracle Projectsに事前定義されているので、このプロシージャを使用するようにしてください。また、Oracle Applicationsのリリースの変更に伴い、記述したプロシージャが影響を受ける場合には、そのプロシージャのサポートおよびアップグレードを自身の責任で行うようにしてください。

クライアント機能拡張の実装

クライアント機能拡張を実装するには、ビジネス要件を分析し、クライアント機能拡張ロジックを設計してから、PL/SQLプロシージャを記述する必要があります。この項では、この手順について段階ごとに説明します。

それぞれの段階に応じて専門知識を有する担当者が必要になります。分析および設計段階では、企業のビジネス・ルール、企業でOracle Projectsを設定する方法、クライアント機能拡張の使用方法に関する知識を有する実装チーム・メンバーが必要になります。また、PL/SQLコーディング段階では、PL/SQLおよびOracle Projectsのデータ構造を熟知したチーム・メンバーが必要になります。通常、実装チームの要員数は、必要な知識を交換し合うことができるように2人以上になります。

関連トピック

ビジネス要件の分析

ロジックの設計

PL/SQLプロシージャの記述

ビジネス要件の分析

まず、クライアント機能拡張を使用する必要性があるかどうかを判断します。

  1. 企業のビジネス要件とビジネス・ルールを定義し文書化します。

  2. ビジネス・ルールがOracle Projectsの標準機能で処理可能かどうかを判断します。

  3. 標準機能では処理できないビジネス・ルールがある場合には、その具体的なビジネス・ニーズの対処に適したクライアント機能拡張を選定します。

ビジネス要件の分析の例

企業のポリシーでは、供給品は間接費プロジェクトに賦課されることになっています。

Oracle Projectsの実装を確認したところ、特定のプロジェクトやタスクに賦課する内容を指定するための取引管理が使用可能であることが判明しました。さらに、供給品に関するルールは、間接費プロジェクト以外のどのプロジェクトにも当てはまるため、このルールを実装するために、間接費プロジェクト以外のプロジェクトごとに取引管理を定義することは効率的ではないと判断しました。

そこで、このポリシーの実装に、取引管理機能拡張を使用することに決定しました。

ロジックの設計

設計には十分な検討が必要です。この段階で慎重かつ綿密に設計と仕様を検討しておくことで、PL/SQLプロシージャの記述が効率的になり、クライアント機能拡張の実装に大きな成果が期待できます。設計段階は、次の手順で構成されます。

  1. 使用するクライアント機能拡張について理解します。クライアント機能拡張の用途、処理フロー、クライアント機能拡張がOracle Projectsから呼び出されるタイミング、入力値などについて理解しておく必要があります。

  2. 想定可能な範囲のあらゆる状況における、ビジネス・ルールの要件とロジックを定義し文書化します。さらに、入力、実行する計算、結果の出力を規定します。

  3. ルールの実行に必要なデータ要素と、必要な要素の選択方法または導出方法を決定します。さらに、具体的な実装データを定義し、ビジネス・ルールの要件に基づく具体的なビジネス・プロシージャを文書化します。

  4. 様々なビジネス・シナリオに対応できるように設計しておくことで、それぞれの状況に応じてロジックが意図したとおりに実行されます。また、実際のクライアント機能拡張の定義とプロシージャをテストする際に、これらのシナリオをテスト・ケースとして使用できます。

  5. PL/SQLプロシージャの記述を担当するチーム・メンバーに詳細な仕様を引き継ぎます。

    注意: 企業の部署ごとに専用のロジックを使用する場合には、記述するプロシージャは1つのみにして、条件に応じて分岐するようにしてください。

データ要素の決定

クライアント機能拡張ごとに、事前定義済パラメータが存在します。クライアント機能拡張を呼び出し実行するプログラムは、この事前定義済パラメータに値を渡します。

事前定義済パラメータから別のパラメータを導出できます。たとえば、あるクライアント機能拡張に、PROJECT_ID(プロジェクト識別子)という名称の事前定義済パラメータがある場合、PROJECT_IDからプロジェクト・タイプを導出できます。

ルールに対する付加的なデータを入力値として保持する場合には、付加フレックスフィールド・セグメントを使用することもできます。PL/SQLプロシージャを記述するときに、該当する入力値を保持するための付加フレックスフィールド・セグメント列を選択します。

PL/SQLプロシージャに渡された事前定義済の入力値から値を導出できる場合には、ルールに対する入力としてOracleの表のデータを導出できます。

クライアント機能拡張の設計の例

この設計段階の説明に、前述した取引管理機能拡張の例(「ビジネス要件の分析」を参照)を今回も使用します。

  1. 取引管理機能拡張について理解できたので、取引管理機能拡張を使用して、供給品の賦課対象を間接費プロジェクトに限定するようにします。

  2. 取引管理機能拡張のロジックを次のように定義しました。

    IF        charging supplies
                            THEN        IF         charging to overhead projects
                                    THEN         OK
                                    ELSE         error message
                            You can charge supplies only to overhead projects
                            ELSE        OK
  3. 供給品に該当する取引と間接費プロジェクトに該当するプロジェクトを識別するためのデータ要素を決定します。

    賦課のタイプにはSupplies支出タイプ、プロジェクトのタイプにはOverheadプロジェクト・タイプをそれぞれ使用することにしました。

    この機能拡張には、支出タイプ(Supplies)とプロジェクトIDが事前定義されており、プロジェクトIDからプロジェクト・タイプ(Overhead)を導出できます。

    実際のロジックは次のとおりです。

    IF Expenditure Type = Supplies
    THEN        IF Project Type = Overhead
                    THEN         OK
                    ELSE         error message
    You can charge supplies only to overhead projects
    ELSE        OK
  4. 賦課およびプロジェクトの様々なタイプを使用して、複数のシナリオに対応できるようにしておくと、シナリオに合わせてロジックが処理されます。

  5. これで、この仕様を技術リソースに引き継ぐ準備が整いました。

PL/SQLプロシージャの記述

この項では、PL/SQLプロシージャの概要について簡単に説明します。『PL/SQLユーザーズ・ガイドおよびリファレンス・マニュアル』を参照してください。

注意: 『PL/SQLユーザーズ・ガイドおよびリファレンス・マニュアル』を参考資料として使用しながら、プロシージャを定義するようにしてください。また、データベースの表およびビューに関する詳細は、OracleMetaLinkに掲載されているOracle eTechnical Reference Manuals(eTRM)を参照してください。

パッケージ

パッケージは、論理的に関連するPL/SQLタイプ、オブジェクトおよびサブプログラムをグループ化したデータベース・オブジェクトです。パッケージは通常、パッケージ仕様ファイルとパッケージ本体ファイルから構成されます。ファイルの説明を次に示します。

変数 説明
パッケージ仕様
ファイル
仕様ファイルは、アプリケーションとのインタフェースです。このファイルには、パッケージで使用可能なタイプ、変数、定数、例外、カーソルおよびサブプログラムを宣言します。
Oracle Projectsクライアント機能拡張では、このファイルにはパッケージ名、プロシージャおよびファンクションを宣言します。パッケージの事前定義済プロシージャの外側にプロシージャを作成する場合には、このファイルを変更する必要があります。
パッケージ本体
ファイル
パッケージ本体には、ビジネス・ロジックの実装に使用される実際のPL/SQLコードが記述されています。
Oracle Projectsクライアント機能拡張では、このファイルの内容は、プロシージャ、または機能拡張を実装するために変更したプロシージャです。パッケージ、事前定義済プロシージャまたはプロシージャの中に、必要性に応じてプロシージャを定義できます。

警告: 機能拡張プロシージャの名称は変更しないでください。また、パラメータ名、パラメータ・タイプ、プロシージャのパラメータの順番も変更しないでください。

ヒント: プロシージャの記述終了後、必ずコンパイルしてデータベースに保存してください。

プロシージャ

プロシージャは、パッケージに収録されているサブプログラムで、アプリケーションから起動されて、特定の処理を実行します。プロシージャには、プログラムのコンテキストとして渡すパラメータ、入力の処理方法、返す出力を定義します。プロシージャは次の要素から構成されます。

変数 説明
入力 各プロシージャには事前定義済の入力パラメータが存在し、このパラメータはあらかじめ定義された順番に従って渡されます。パラメータが渡されることで、処理対象の取引および呼出し先のプログラムが特定されます。事前定義済の入力パラメータに基づいて、Oracleの表から付加的な入力を導出できます。
ロジック プロシージャは、入力をもとに論理的な処理と計算を実行します。プログラムには、固定番号を返すだけの単純なものから、複数の機能を実行するような複雑なものまであります。
出力 プロシージャからは、定義したとおりに値がすべて返されます。たとえば、取引からすべての検証ルールが渡された場合には、取引管理機能拡張のプロシージャからNULL値を返し、検証に失敗した場合には、エラー・メッセージを返すように定義できます。

構文

プロシージャは、仕様と本体の2つの部分から構成されます。

プロシージャの仕様は、PROCEDUREキーワードから、プロシージャ名またはパラメータ・リストまでの部分です。

プロシージャの本体は、ISキーワードから、ENDキーワードまでの部分ですが、その後にプロシージャ名が続く場合もあります。プロシージャの本体は、宣言部、実行可能部分、オプションのエラー処理部から構成されます。

プロシージャを記述する際の構文は次のとおりです。

PROCEDURE name [  (parameter [, parameter,...])  ] IS
                [local declarations]
BEGIN
                executable statements
[EXCEPTION
exception handlers]
END [name];

前述のパラメータ部分の構文は次のとおりです。

var_name [IN | OUT NOCOPY | IN OUT NOCOPY] datatype [{:= | DEFAULT} value]

詳細は、『PL/SQLユーザーズ・ガイドおよびリファレンス・マニュアル』を参照してください。

テンプレート・プロシージャの使用方法

Oracle Projectsにはクライアント機能拡張ごとにテンプレート・プロシージャが用意されており、独自のプロシージャを記述する際に使用できます。各テンプレート・プロシージャには、プロシージャの呼出し元プログラムから渡されるパラメータが事前定義されています。この事前定義済の入力パラメータは変更できません。

テンプレート・プロシージャ・ファイルは、Oracle Projectsのpatch/115/sqlディレクトリに収録されています。

クライアント機能拡張の設計と実装を行う際に、これらのファイルの中から用途に合うものを探すようにしてください。ファイル内には役に立つ情報が豊富に揃っており、事前定義済の入力パラメータ・リストやケース・スタディの例などが格納されています。

記述するコードの保存用ディレクトリにテンプレート・ファイルをコピーしてから、コピー先のファイルを変更してください。テンプレート・ファイルは、ソフトウェアのリリースのアップグレードに伴い更新されます。この場合には、Oracle Projectsを新リリースにアップグレードしてから、変更したファイルを使用してプロシージャを再インストールします。

PL/SQLプロシージャにロジックを記述する方法

設計段階で作成した機能仕様に基づいて、PL/SQLプロシージャのロジックを記述します。クライアント機能拡張のPL/SQLプロシージャを記述するには、入出力、エラー処理、機能拡張ごとに用意されているプロシージャのサンプルなど、クライアント機能拡張プロシージャについて十分に理解している必要があります。詳細は、クライアント機能拡張に関する参考資料やテンプレート・プロシージャを参照してください。

注意: PL/SQLプロシージャのデータをコミットしないでください。プロシージャを呼び出すOracle Projectsプロセスは、コミット・ロジックを処理します。

プロシージャのコンパイルおよび保存

プロシージャの記述終了後、定義したプロシージャを仕様ファイルに正しく記述したことを確認し、プロシージャをコンパイルし、Oracle Applicationsのユーザー名でデータベースに保存してください。まずパッケージ仕様をインストールし、次にパッケージ本体をインストールします。

テンプレート・プロシージャ・ファイルには、PL/SQLプロシージャのコンパイルと保存を実行する際の構文が記載されています。テンプレート・プロシージャ・ファイルのコピーをもとにプロシージャを記述している場合には、オペレーティング・システムの該当コマンドを実行して、ディレクトリをファイルの保存先に変更してください。

$ sqlplus <apps user name>/<apps password>
SQL> @<spec_filename>.pls
SQL> @<body_filename>.pls

たとえば、Oracle ApplicationsのOracleユーザー名とパスワードがともにappsの場合には、次のコマンドを使用して取引管理機能拡張をインストールできます。

$ sqlplus apps/apps
SQL> @PAXTTXCS.pls
SQL> @PAXTTXCB.pls

パッケージおよびそのプロシージャの作成時にエラーが発生する場合は、エラーの発生箇所を訂正してからパッケージを再作成します。作成したパッケージおよびそのプロシージャをコンパイルし、データベースに保存するまで、Oracle Projectsでクライアント機能拡張を使用できません。

プロシージャのテスト

クライアント機能拡張プロシージャの作成を完了した後、そのクライアント機能拡張の定義をOracle Projectsの処理フローでテストして、意図したとおりの結果が出力されるかどうかを確認します。