146
Oracle Configuration Interface ObjectCIO開発者ガイド リリース 11i 2003 2 部品番号:J06438-02 このマニュアルでは、ランタイム Oracle Configurator の機能を補強する 関数コンパニオンと、Oracle Configurator のアクティブ・モデルにアクセスするために 関数コンパニオンで使用する Oracle Configuration Interface ObjectCIO )について 説明します。

Oracle Configuration Interface Objeഀ挀瓿ࠀ䌀䤀俿ক譶 …Oracle Configuration Interface Object(CIO) 開発者ガイド リリース11i 2003 年2 月 部品番号:J06438-02

  • Upload
    others

  • View
    10

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Oracle Configuration Interface Objeഀ挀瓿ࠀ䌀䤀俿ক譶 …Oracle Configuration Interface Object(CIO) 開発者ガイド リリース11i 2003 年2 月 部品番号:J06438-02

Oracle Configuration Interface Object((((CIO))))

開発者ガイド

リリース 11i

2003 年 2 月

部品番号:J06438-02

このマニュアルでは、ランタイム Oracle Configurator の機能を補強する関数コンパニオンと、Oracle Configurator のアクティブ・モデルにアクセスするために関数コンパニオンで使用する Oracle Configuration Interface Object(CIO )について説明します。

Page 2: Oracle Configuration Interface Objeഀ挀瓿ࠀ䌀䤀俿ক譶 …Oracle Configuration Interface Object(CIO) 開発者ガイド リリース11i 2003 年2 月 部品番号:J06438-02

Oracle Configuration Interface Object(CIO)開発者ガイド , リリース 11i

部品番号:J06438-02

原本名:Oracle Configuration Interface Object (CIO) Developer’s Guide, Release 11i

原本部品番号:A87532-04

原本著者:Mark Sawtelle

原本協力者:Brent Benson, Jim Carlson, Ivan Lazarov, David Lee, Anupam Miharia, Janet Page, Marty Plotkin, Brian Ross

Copyright © 1999, 2002 Oracle Corporation. All rights reserved.

Printed in Japan.

制限付権利の説明

プログラム(ソフトウェアおよびドキュメントを含む)の使用、複製または開示は、オラクル社との契約に記された制約条件に従うものとします。著作権、特許権およびその他の知的財産権に関する法律により保護されています。

当プログラムのリバース・エンジニアリング等は禁止されております。

このドキュメントの情報は、予告なしに変更されることがあります。オラクル社は本ドキュメントの無謬性を保証しません。

* オラクル社とは、Oracle Corporation(米国オラクル)または日本オラクル株式会社(日本オラクル)を指します。

危険な用途への使用について

オラクル社製品は、原子力、航空産業、大量輸送、医療あるいはその他の危険が伴うアプリケーションを用途として開発されておりません。オラクル社製品を上述のようなアプリケーションに使用することについての安全確保は、顧客各位の責任と費用により行ってください。万一かかる用途での使用によりクレームや損害が発生いたしましても、日本オラクル株式会社と開発元である Oracle Corporation(米国オラクル)およびその関連会社は一切責任を負いかねます。 当プログラムを米国国防総省の米国政府機関に提供する際には、『Restricted Rights』と共に提供してください。この場合次の Notice が適用されます。

Restricted Rights Notice

Programs delivered subject to the DOD FAR Supplement are "commercial computer software" and use, duplication, and disclosure of the Programs, including documentation, shall be subject to the licensing restrictions set forth in the applicable Oracle license agreement. Otherwise, Programs delivered subject to the Federal Acquisition Regulations are "restricted computer software" and use, duplication, and disclosure of the Programs shall be subject to the restrictions in FAR 52.227-19, Commercial Computer Software - Restricted Rights (June, 1987). Oracle Corporation, 500 Oracle Parkway, Redwood City, CA 94065.

このドキュメントに記載されているその他の会社名および製品名は、あくまでその製品および会社を識別する目的にのみ使用されており、それぞれの所有者の商標または登録商標です。

Page 3: Oracle Configuration Interface Objeഀ挀瓿ࠀ䌀䤀俿ক譶 …Oracle Configuration Interface Object(CIO) 開発者ガイド リリース11i 2003 年2 月 部品番号:J06438-02

目次目次目次目次

はじめにはじめにはじめにはじめに ........................................................................................................................................................................... xi

対象読者 ..................................................................................................................................................................... xi文書のユーザー補助 ................................................................................................................................................ xiiこのマニュアルの構成 ............................................................................................................................................ xii

関連マニュアル ....................................................................................................................................................... xiii表記規則 ................................................................................................................................................................... xiii製品サポート ........................................................................................................................................................... xiv

1 関数コンパニオンの基礎知識関数コンパニオンの基礎知識関数コンパニオンの基礎知識関数コンパニオンの基礎知識

1.1 関数コンパニオンとは ........................................................................................................................... 1-11.1.1 関数コンパニオンのタイプ ........................................................................................................... 1-2

1.1.2 関数コンパニオンに関する重要事項 ........................................................................................... 1-3

1.1.3 関数コンパニオン開発の前提知識 ............................................................................................... 1-4

1.2 関数コンパニオンと CIO ...................................................................................................................... 1-51.2.1 CIO インタフェースの使用方法 .................................................................................................. 1-5

1.2.2 標準インタフェース・メソッドの実装 ....................................................................................... 1-5

1.3 Java を使用した関数コンパニオンの作成 .......................................................................................... 1-61.3.1 Java を使用した関数コンパニオンの作成手順 .......................................................................... 1-6

1.3.2 Java 関数コンパニオンのインストール要件 .............................................................................. 1-8

1.3.2.1 関数コンパニオンを開発するための要件 ........................................................................... 1-81.3.2.2 関数コンパニオンを実行するための要件 ........................................................................... 1-8

1.3.2.3 関数コンパニオンをテストするための要件 ....................................................................... 1-91.3.3 Java 関数コンパニオンの 低限の例 ........................................................................................ 1-10

i

Page 4: Oracle Configuration Interface Objeഀ挀瓿ࠀ䌀䤀俿ক譶 …Oracle Configuration Interface Object(CIO) 開発者ガイド リリース11i 2003 年2 月 部品番号:J06438-02

1.4 関数コンパニオンの Configurator への取込み ................................................................................ 1-11

1.4.1 関数コンパニオンとモデルの関連付け ..................................................................................... 1-11

1.4.2 ユーザー・インタフェースの更新 ............................................................................................. 1-15

1.4.2.1 ユーザー・インタフェースの生成またはリフレッシュ ................................................. 1-15

1.4.2.2 デフォルト・ユーザー・インタフェースの変更 ............................................................. 1-151.4.3 ランタイム Oracle Configurator を使用した関数コンパニオンのテスト ........................... 1-17

1.4.3.1 Oracle Configurator Developer を使用したテスト ......................................................... 1-171.4.3.2 HTML テスト・ページを使用したテスト ........................................................................ 1-18

1.4.3.3 ランタイム Oracle Configurator のテスト機能 ............................................................... 1-19

2 関数コンパニオンの使用関数コンパニオンの使用関数コンパニオンの使用関数コンパニオンの使用

2.1 ユーザー・インタフェース要素の制御 ............................................................................................... 2-1

2.1.1 CIO とユーザー・インタフェースの対話方法 .......................................................................... 2-2

2.1.2 現在の画面の取得 ........................................................................................................................... 2-4

2.1.3 ノードへのアクセス ....................................................................................................................... 2-4

2.1.4 画面およびコントロールへのアクセス ....................................................................................... 2-5

2.1.5 イメージおよびラベルへのアクセス ........................................................................................... 2-5

2.1.6 ナビゲーションの制御 ................................................................................................................... 2-6

2.1.7 イメージおよびラベルの制御 ....................................................................................................... 2-6

2.1.8 メッセージおよびその他の出力の生成 ....................................................................................... 2-7

2.1.8.1 メッセージ・ボックス ........................................................................................................... 2-72.1.8.2 カスタム HTML 出力 ............................................................................................................. 2-8

2.1.9 インタフェース・イベントの処理 ............................................................................................... 2-8

2.1.9.1 イベントのタイプ ................................................................................................................... 2-82.1.9.2 リスナー登録 ........................................................................................................................... 2-8

2.1.10 ユーザー・インタフェースのテスト ......................................................................................... 2-10

2.2 親ウィンドウと子ウィンドウの制御 ................................................................................................. 2-112.2.1 ウィンドウのロック、ロック解除およびリフレッシュ ......................................................... 2-11

2.2.2 共有構成モデルへのアクセス ..................................................................................................... 2-11

3 Configuration Interface Object((((CIO)の使用)の使用)の使用)の使用

3.1 基礎知識 ................................................................................................................................................... 3-13.1.1 CIO について .................................................................................................................................. 3-1

3.1.2 CIO と関数コンパニオン .............................................................................................................. 3-2

3.2 CIO のランタイム・ノード・インタフェース .................................................................................. 3-2

ii

Page 5: Oracle Configuration Interface Objeഀ挀瓿ࠀ䌀䤀俿ক譶 …Oracle Configuration Interface Object(CIO) 開発者ガイド リリース11i 2003 年2 月 部品番号:J06438-02

3.3 CIO の初期化 .......................................................................................................................................... 3-5

3.4 構成へのアクセス ................................................................................................................................... 3-73.4.1 構成の作成と削除 ........................................................................................................................... 3-7

3.4.2 構成の保存と復元 ........................................................................................................................... 3-8

3.4.3 構成の自動処理 ............................................................................................................................... 3-9

3.4.4 構成パラメータへのアクセス ..................................................................................................... 3-10

3.5 実行時のモデル・ノードへのアクセス ............................................................................................. 3-103.5.1 モデル変更の機会 ......................................................................................................................... 3-10

3.5.2 コンポーネントへのアクセス ..................................................................................................... 3-11

3.5.2.1 コンポーネントの関数コンパニオンの取得 ..................................................................... 3-113.5.2.2 オプション・コンポーネントの追加と削除 ..................................................................... 3-11

3.5.2.3 オプション・コンポーネントの追加と削除における効率の考慮事項 ......................... 3-123.5.3 フィーチャへのアクセス ............................................................................................................. 3-16

3.5.4 論理状態の取得と設定 ................................................................................................................. 3-17

3.5.5 数値の取得と設定 ......................................................................................................................... 3-20

3.5.6 プロパティへのアクセス ............................................................................................................. 3-22

3.5.7 オプションへのアクセス ............................................................................................................. 3-22

3.6 IRuntimeNode によるイントロスペクション ................................................................................. 3-233.7 論理トランザクション ......................................................................................................................... 3-263.8 論理的矛盾の処理 ................................................................................................................................. 3-283.8.1 矛盾によるエラー・メッセージの生成 ..................................................................................... 3-29

3.8.2 矛盾の無効化 ................................................................................................................................. 3-29

3.8.3 例外の呼出し ................................................................................................................................. 3-31

3.9 構成の検証 ............................................................................................................................................. 3-32

3.10 要求の使用 ............................................................................................................................................. 3-333.10.1 要求に関する情報の取得 ............................................................................................................. 3-34

3.10.2 ユーザー要求 ................................................................................................................................. 3-35

3.10.3 初期要求 ......................................................................................................................................... 3-35

3.10.3.1 初期要求の使用方法に関する注意 ..................................................................................... 3-373.10.3.2 初期要求に関する制限事項 ................................................................................................. 3-373.10.4 失敗した要求 ................................................................................................................................. 3-37

3.11 小数数量の処理 ..................................................................................................................................... 3-383.12 関数コンパニオンの標準インタフェース・メソッド ..................................................................... 3-393.12.1 initialize() インタフェース・メソッド ...................................................................................... 3-40

3.12.2 autoConfigure() インタフェース・メソッド ........................................................................... 3-41

3.12.3 validate() インタフェース・メソッド ....................................................................................... 3-42

iii

Page 6: Oracle Configuration Interface Objeഀ挀瓿ࠀ䌀䤀俿ক譶 …Oracle Configuration Interface Object(CIO) 開発者ガイド リリース11i 2003 年2 月 部品番号:J06438-02

3.12.4 generateOutput() インタフェース・メソッド ......................................................................... 3-43

3.12.5 terminate() インタフェース・メソッド .................................................................................... 3-44

4 CIO のリファレンス・マニュアルのリファレンス・マニュアルのリファレンス・マニュアルのリファレンス・マニュアル

5 例例例例5.1 CIO の初期化 ......................................................................................................................................... 5-1

5.2 Thin クライアント用 generateOutput() 関数コンパニオン ............................................................. 5-25.3 構成の保存と終了 ................................................................................................................................... 5-55.4 要求の使用 ............................................................................................................................................... 5-55.4.1 初期要求の設定 ............................................................................................................................... 5-5

5.4.2 失敗した要求のリストの取得 ....................................................................................................... 5-8

5.5 ユーザー・インタフェースとの対話 ................................................................................................... 5-95.5.1 画面へのナビゲート ..................................................................................................................... 5-10

5.5.2 ノードの画面タイトルの変更 ..................................................................................................... 5-12

5.5.3 イメージの変更 ............................................................................................................................. 5-14

5.6 親ウィンドウと子ウィンドウの制御 ................................................................................................. 5-16

5.6.1 ウィンドウのロック、ロック解除およびリフレッシュ ......................................................... 5-16

5.6.2 共有構成モデルへのアクセス ..................................................................................................... 5-18

用語および略語集用語および略語集用語および略語集用語および略語集

索引索引索引索引

iv

Page 7: Oracle Configuration Interface Objeഀ挀瓿ࠀ䌀䤀俿ক譶 …Oracle Configuration Interface Object(CIO) 開発者ガイド リリース11i 2003 年2 月 部品番号:J06438-02

例例例例

1-1 基本的な Java 関数コンパニオン : MyClass.java ............................................................................. 1-102-1 IUserInterface および関連インタフェースの階層 ............................................................................. 2-13-1 CIO の初期化(簡単な例) .................................................................................................................... 3-63-2 新しい構成オブジェクトの作成 ........................................................................................................... 3-83-3 アプローチ A ......................................................................................................................................... 3-133-4 アプローチ B ......................................................................................................................................... 3-143-5 アプローチ A(詳細) ........................................................................................................................... 3-143-6 アプローチ B(詳細) ........................................................................................................................... 3-153-7 フィーチャの設定(低パフォーマンス・コード) ........................................................................... 3-153-8 フィーチャの設定(高パフォーマンス・コード) ........................................................................... 3-163-9 ノードの状態の取得 ............................................................................................................................. 3-193-10 ノードの状態の設定 ............................................................................................................................. 3-193-11 数値の設定 ............................................................................................................................................. 3-213-12 オプションが選択されているか、または満たされているかのテスト ......................................... 3-223-13 ノードが選択されているか、または満たされているかのテスト ................................................. 3-253-14 名前による子ノードの取得 ................................................................................................................. 3-263-15 タイプによるすべての子ノードの取得 ............................................................................................. 3-263-16 UI に表示されるかどうかの確認 ....................................................................................................... 3-263-17 削除での論理トランザクションの使用 ............................................................................................. 3-273-18 論理的例外の処理と無効化 ................................................................................................................. 3-303-19 検証エラーのリストの取得 ................................................................................................................. 3-333-20 初期要求の使用 ..................................................................................................................................... 3-365-1 CIO の初期化(詳細な例) .................................................................................................................... 5-15-2 Thin クライアント用出力関数コンパニオン ..................................................................................... 5-45-3 初期要求の設定(InitialRequestTest.java) ......................................................................................... 5-55-4 失敗した要求のリストの取得(OverrideTest.java) ......................................................................... 5-85-5 画面へのナビゲート(ScreenNav.java) ........................................................................................... 5-105-6 ノードの画面タイトルの変更(CaptionChng.java) ....................................................................... 5-125-7 イメージの変更(ImageChange.java) .............................................................................................. 5-155-8 子ウィンドウの起動(Launch.java) ................................................................................................. 5-175-9 共有構成モデルへのアクセス(Replace.java) ................................................................................. 5-18

v

Page 8: Oracle Configuration Interface Objeഀ挀瓿ࠀ䌀䤀俿ক譶 …Oracle Configuration Interface Object(CIO) 開発者ガイド リリース11i 2003 年2 月 部品番号:J06438-02

vi

Page 9: Oracle Configuration Interface Objeഀ挀瓿ࠀ䌀䤀俿ক譶 …Oracle Configuration Interface Object(CIO) 開発者ガイド リリース11i 2003 年2 月 部品番号:J06438-02

図図図図

1-1 コンポーネントと関数コンパニオンの関連付け ............................................................................. 1-141-2 関数コンパニオン・ボタンのラベルの変更 ..................................................................................... 1-161-3 関数コンパニオン・ボタンのユーザー・インタフェース定義 ..................................................... 1-161-4 ランタイム Oracle Configurator を使用した関数コンパニオンのテスト ................................... 1-201-5 関数コンパニオンのボタンによって生成される出力ウィンドウ ................................................. 1-213-1 コンポーネントの追加のモデル構造 ................................................................................................. 3-15

vii

Page 10: Oracle Configuration Interface Objeഀ挀瓿ࠀ䌀䤀俿ক譶 …Oracle Configuration Interface Object(CIO) 開発者ガイド リリース11i 2003 年2 月 部品番号:J06438-02

viii

Page 11: Oracle Configuration Interface Objeഀ挀瓿ࠀ䌀䤀俿ক譶 …Oracle Configuration Interface Object(CIO) 開発者ガイド リリース11i 2003 年2 月 部品番号:J06438-02

表表表表

1-1 関数コンパニオンのタイプ ................................................................................................................... 1-21-2 関数コンパニオンに必要なソフトウェア ........................................................................................... 1-91-3 関数コンパニオンのタイプおよび対応するメソッド ..................................................................... 1-121-4 関数コンパニオンのテストに関連したマニュアル ......................................................................... 1-181-5 関数コンパニオンのタイプおよびユーザー・インタフェースの機能 ......................................... 1-193-1 CIO のランタイム・ノードのインタフェース .................................................................................. 3-33-2 入力状態 ................................................................................................................................................. 3-173-3 出力状態 ................................................................................................................................................. 3-183-4 状態を取得および設定するためのメソッド ..................................................................................... 3-183-5 インタフェース IOption のメソッド ................................................................................................. 3-223-6 インタフェース IRuntimeNode のメソッド .................................................................................... 3-233-7 Reason コンストラクタの引数 ........................................................................................................... 3-293-8 構成を検証するためのメソッド ......................................................................................................... 3-323-9 要求の実行に使用される一般的なメソッド ..................................................................................... 3-343-10 クラス Request のタイプ・メソッド ................................................................................................. 3-353-11 整数ノードと小数ノードに使用されるメソッド ............................................................................. 3-383-12 IFunctionalCompanion インタフェースの標準メソッド .............................................................. 3-393-13 initialize() メソッドの入力パラメータ .............................................................................................. 3-403-14 入力パラメータを戻すためのメソッド ............................................................................................. 3-41

ix

Page 12: Oracle Configuration Interface Objeഀ挀瓿ࠀ䌀䤀俿ক譶 …Oracle Configuration Interface Object(CIO) 開発者ガイド リリース11i 2003 年2 月 部品番号:J06438-02

x

Page 13: Oracle Configuration Interface Objeഀ挀瓿ࠀ䌀䤀俿ক譶 …Oracle Configuration Interface Object(CIO) 開発者ガイド リリース11i 2003 年2 月 部品番号:J06438-02

はじめにはじめにはじめにはじめに

関数コンパニオンを使用すると、Oracle Configurator Developer に組み込まれている機能範囲を超えてランタイム Oracle Configurator の機能を補強できます。Configuration Interface Object(CIO)を使用して関数コンパニオン・オブジェクトを作成することにより、モデルへのアクセス、論理状態の設定と取得、オプション・コンポーネントの追加など、様々なタスクを実行できます。また、各自のアプリケーションで CIO を使用し、モデルと通信することもできます。

対象読者対象読者対象読者対象読者このマニュアルは、主に関数コンパニオンを記述するソフトウェア開発者を対象としています。関数コンパニオンの開発には、Java を使用することをお薦めします。

このマニュアルは、読者が経験豊富なプログラマであり、Oracle データベース、プログラミング言語としての SQL と Java、および JDBC の動作原理に関する知識を持っていることを前提としています。

また、このマニュアルには CIO に関する基礎知識や参照情報が含まれます。これらの情報は、カスタマイズされたユーザー・インタフェースから Oracle Configurator のアクティブ・モデルにアクセスするようなアプリケーションを開発する際に必要となります。

注意注意注意注意 : 1-4 ページの 1.1.3 項「関数コンパニオン開発の前提知識」を必ず確認してください。この項には、関数コンパニオンの操作に必要な Java開発能力に関する説明があります。

xi

Page 14: Oracle Configuration Interface Objeഀ挀瓿ࠀ䌀䤀俿ক譶 …Oracle Configuration Interface Object(CIO) 開発者ガイド リリース11i 2003 年2 月 部品番号:J06438-02

文書のユーザー補助文書のユーザー補助文書のユーザー補助文書のユーザー補助オラクル社では、ハンディキャップのあるお客様にも Oracle の製品、サービスおよびサポート・マニュアルを簡単にご利用いただけることを目標としています。そのため、Oracleのマニュアルには、ユーザーが障害支援技術を使用して情報を利用できる機能が組み込まれています。このマニュアルには HTML 版も用意されており、ハンディキャップのあるお客様が簡単にアクセスできるマークアップをご利用いただけます。標準規格は改善されつつあります。オラクル社でも、Oracle のマニュアルをすべてのお客様がご利用できるように、市場をリードする他の技術ベンダーと積極的に連携して技術的な問題に対応しています。詳細は、Oracle Accessibility Program の Web サイト

(http://www.oracle.com/accessibility/)を参照してください。

文書のコード例のユーザー補助文書のコード例のユーザー補助文書のコード例のユーザー補助文書のコード例のユーザー補助 Windows スクリーン・リーダーである JAWS では、この文書内のコーディング例を正しく読み上げられない場合があります。コードを記述するときの規則では、閉じ括弧のみを 1 行に記述する必要がありますが、JAWS は通常、大括弧または中括弧のみでなるテキスト行は読み上げません。

文書内の外部文書内の外部文書内の外部文書内の外部 Web サイトへのリンクのユーザー補助サイトへのリンクのユーザー補助サイトへのリンクのユーザー補助サイトへのリンクのユーザー補助 この文書には、オラクル社が所有または管理していない企業や組織の Web サイトへのリンクが含まれています。オラクル社はそれらの Web サイトのユーザー補助に関しては、評価も言及もしません。

このマニュアルの構成このマニュアルの構成このマニュアルの構成このマニュアルの構成このマニュアルは、目次、例と表および図の各リスト、リーダー・コメント・フォーム、

「はじめに」、次にリストした各章、付録、用語集および索引で構成されています。

第第第第 1 章「関数コンパニオンの基礎知識」章「関数コンパニオンの基礎知識」章「関数コンパニオンの基礎知識」章「関数コンパニオンの基礎知識」

関数コンパニオンの実装に関する基本事項が提供されます。関数コンパニオンとはなにか、また使用可能な各種タイプを説明しています。 また、関数コンパニオンおよび CIO の関連を説明しています。 Java による関数コンパニオンの作成の基礎知識を示しており、 導入したOracle Configurator に関数コンパニオンを取り込む方法も説明します。

第第第第 2 章「関数コンパニオンの使用」章「関数コンパニオンの使用」章「関数コンパニオンの使用」章「関数コンパニオンの使用」

ユーザー・インタフェースの要素の管理、ユーザー・インタフェース・イベントの処理およびウィンドウの管理など、特定のタスクにおける関数コンパニオンの使用方法について、手順をまとめています。

第第第第 3 章「章「章「章「Configuration Interface Object((((CIO)の使用」)の使用」)の使用」)の使用」

Oracle Configuration Interface Object(CIO)およびその使用方法を説明しています。 ランタイム構成インスタンスおよびランタイム・モデルのノードの処理方法、論理トランザクションの使用方法、構成の検証と矛盾の処理の方法、要求の使用方法、および小数数量の結果を説明しています。

xii

Page 15: Oracle Configuration Interface Objeഀ挀瓿ࠀ䌀䤀俿ক譶 …Oracle Configuration Interface Object(CIO) 開発者ガイド リリース11i 2003 年2 月 部品番号:J06438-02

第第第第 4 章「章「章「章「CIO のリファレンス・マニュアル」のリファレンス・マニュアル」のリファレンス・マニュアル」のリファレンス・マニュアル」

Javadoc 形式で生成された CIO のリファレンス・マニュアルへのアクセス方法を説明しています。

第第第第 5 章「例」章「例」章「例」章「例」

このマニュアルの他の部分に記載されたトピックに関連するコード例をすべてまとめています。

用語および略語集用語および略語集用語および略語集用語および略語集

Oracle Configurator ドキュメント・セット全体で使用されている専門用語および略語の用語集です。

関連マニュアル関連マニュアル関連マニュアル関連マニュアル詳細は、Oracle Configurator ドキュメント・セットのリリース 11i に含まれる次のマニュアルを参照してください。

� 『Oracle Configurator Developer ユーザーズ・ガイド』

� 『Oracle Configurator Implementation Guide』

� 『Oracle Configurator インストレーション・ガイド』

� 『Oracle Configuration Interface Object(CIO)開発者ガイド』

� 『Oracle Configurator パフォーマンス・ガイド』

� 『Oracle Configurator リリース・ノート』

次のマニュアルも役に立ちます。

� 『Oracle8i JDBC 開発者ガイドおよびリファレンス』

表記規則表記規則表記規則表記規則例では、特に注記されていない限り、各行の 後で暗黙的に改行されています。入力行の後で [Enter] キーを押す必要があります。

次の表では、このマニュアルで使用されているその他の表記規則をリストしています。

規則規則規則規則 意味意味意味意味

. . .

例における垂直省略記号は、その例とは直接関係のない情報が省略されていることを示します。

xiii

Page 16: Oracle Configuration Interface Objeഀ挀瓿ࠀ䌀䤀俿ক譶 …Oracle Configuration Interface Object(CIO) 開発者ガイド リリース11i 2003 年2 月 部品番号:J06438-02

製品サポート製品サポート製品サポート製品サポートオラクル・サポート・サービスでは、Oracle Configurator Developer および Oracle Configurator に関するお客様の問題および質問事項の解決をサポートしています。

緊急でない問題をレポートする場合は、オラクル社のカスタマ・サポート Web サイトであるオラクル・サポート・ホームページ経由で、技術支援要求(Technical Assistance Request: TAR)を送信してください。URL は次のとおりです。

http://support.oracle.co.jp

オラクル・サポート・ホームページを使用して、製品固有のマニュアルやその他の有用な情報を検索することもできます。

ご利用いただけるオラクル・サポート・サービスと電話番号の一覧は、次の URL を参照してください。

http://www.oracle.co.jp/support

. . . 文またはコマンドにおける水平省略記号は、例とは直接関係のない文またはコマンドの部分が省略されていることを示します。

太字太字太字太字 太字のテキストは、新規用語、用語集で定義されている用語、特定のキーおよびユーザー・インタフェース・オブジェクトのラベルを表します。 太字は、特に手順内のメニュー、コマンドまたはオプションも表し

ます。

イタリック テキスト、表またはコード例中のイタリックは、ユーザーが指定するテキストを表します。これらのプレースホルダは、ユーザー固有の値または文字列に置き換えてください。

[ ] 大カッコは任意選択の句を囲みます。選択肢の中から 1 つを選択する

か、または何も選択しなくてもかまいません。

> 左山カッコ単独では MS-DOS プロンプトを表します。

$ ドル記号は、Windows では DIGITAL コマンド言語プロンプトを、また

Digital UNIX では Bourne シェル・プロンプトを表します。

% パーセント記号単独では UNIX プロンプトを表します。

name() マニュアル中、コード例以外のテキスト部分では、プログラミング言語のメソッドおよび関数の名称の後ろにはカッコが付きます。カッコは常に空で示されます。実際の引数またはパラメータのリストについては、リファレンス・マニュアルを参照してください。この表記規則は、コード例では使用されません。

規則規則規則規則 意味意味意味意味

xiv

Page 17: Oracle Configuration Interface Objeഀ挀瓿ࠀ䌀䤀俿ক譶 …Oracle Configuration Interface Object(CIO) 開発者ガイド リリース11i 2003 年2 月 部品番号:J06438-02

関数コンパニオンの基礎

1

関数コンパニオンの基礎知識関数コンパニオンの基礎知識関数コンパニオンの基礎知識関数コンパニオンの基礎知識

関数コンパニオンは、確立されたインタフェースを介してカスタム・コードを追加することにより、ランタイム Oracle Configurator を拡張します。

この章では、すべての関数コンパニオンの作成に必要な、基本的なテクニックについて説明します。

1.1 関数コンパニオンとは関数コンパニオンとは関数コンパニオンとは関数コンパニオンとは関数コンパニオンとはモデルに連結可能なオブジェクトで、Oracle Configurator Developerに組み込まれていない方法でランタイム Oracle Configurator の機能を拡張します。

関数コンパニオン・オブジェクトは Java 言語で記述できます。関数コンパニオンは、Configuration Interface Object(CIO)と呼ばれる API(アプリケーション・プログラミング・インタフェース)を介してモデルと通信します。Oracle Configuration Interface Objectは Java で記述されています。 第 3 章「Configuration Interface Object(CIO)の使用」を参照してください。

関数コンパニオンは、Oracle Configurator Developer を使用して、モデル内の特定のノードに関連付けます。また、エンド・ユーザーが関連するノードを選択したときに特定の関数コンパニオンが実行されるように、必要な処理のタイプを指定します。次に、通常ランタイムOracle Configurator で行うのと同様に、ロジックとユーザー・インタフェースを生成します。 この生成処理によって関数コンパニオンがアプリケーションに関連付けられるため、エンド・ユーザーがモデル内のノードを選択したときに、そのノードに関連した関数コンパニオンが自動的に実行されるようになります。

注意注意注意注意 : 1-4 ページの 1.1.3 項「関数コンパニオン開発の前提知識」を必ず確認してください。この項では、関数コンパニオンの操作に必要な Java開発スキルについて説明しています。

知識 1-1

Page 18: Oracle Configuration Interface Objeഀ挀瓿ࠀ䌀䤀俿ক譶 …Oracle Configuration Interface Object(CIO) 開発者ガイド リリース11i 2003 年2 月 部品番号:J06438-02

関数コンパニオンとは

1.1.1 関数コンパニオンのタイプ関数コンパニオンのタイプ関数コンパニオンのタイプ関数コンパニオンのタイプ関数コンパニオンを割り当てることにより、1-2 ページの表 1-1 にリストされている処理タイプのいずれか、またはすべてを実行できます。

表表表表 1-1 関数コンパニオンのタイプ関数コンパニオンのタイプ関数コンパニオンのタイプ関数コンパニオンのタイプ

タイプタイプタイプタイプ 説明説明説明説明

自動構成 モデルの状態を構成します。このタイプを使用すると、モデルの形式とそのノードの状態を変更できます。たとえば、 初のニーズ評価情報を取得し、それを使用してエンド・ユーザーに提示する選択項目のセットを適切に設定できます。

ランタイム Oracle Configurator では、エンド・ユーザーが自

動構成関数コンパニオンの実行を明示的に選択することになります。

3-41 ページの 3.12.2 項「autoConfigure() インタフェース・メ

ソッド」を参照してください。

検証 エンド・ユーザーが直前に行った論理的な選択を検証します。関数コンパニオンでは、Oracle Configurator Developer で開発

可能な範囲を超える複雑な操作を実行できます。たとえば、高度な数値比較を実行できます。

検証が成功した場合、関数コンパニオンは NULL を戻します。

検証が失敗した場合は、CompanionValidationFailure オブ

ジェクトのリストが戻されます。

ランタイム Oracle Configurator では、エンド・ユーザーがオ

プションを選択するたびにすべての検証関数コンパニオンが実行されます。各処理の後、エンド・ユーザーは、失敗した各関数コンパニオンによって戻された文字列のコレクションを取得します。

検証比較では、妥当性を判断するためにモデルを問い合せますが、モデルの変更は行わないでください。 検証関数コンパニオ

ンでモデルを変更すると、予期しないアプリケーション・エラーが発生する可能性があります。

3-42 ページの 3.12.3 項「validate() インタフェース・メソッド」

を参照してください。

1-2 Oracle Configuration Interface Object(CIO)開発者ガイド

Page 19: Oracle Configuration Interface Objeഀ挀瓿ࠀ䌀䤀俿ক譶 …Oracle Configuration Interface Object(CIO) 開発者ガイド リリース11i 2003 年2 月 部品番号:J06438-02

関数コンパニオンとは

1.1.2 関数コンパニオンに関する重要事項関数コンパニオンに関する重要事項関数コンパニオンに関する重要事項関数コンパニオンに関する重要事項� 関数コンパニオンを作成するには、必要な操作を行う上で も適切と判断した言語を使

用してオブジェクト・クラスを実装します。Oracle は関数コンパニオンの開発に Javaを使用することをお薦めします。Java 関数コンパニオンは、Java をサポートするすべてのプラットフォームで実行できます。

� ランタイム Oracle Configurator を起動すると、CIO のインスタンスが作成され、これによってモデル内にあるすべてのコンポーネントのランタイム・インスタンスが作成されます。 その後、Oracle Configurator では、ユーザーが関数コンパニオンに対して定義し、Oracle Configurator Developer でコンポーネントに対して関連付けたクラスのインスタンスが、そのコンポーネントのインスタンスごとに作成されます。さらに、Oracle Configurator でコンポーネントに対して関数コンパニオンのインスタンスが連結されます。

� 特定のコンポーネントに複数の関数コンパニオンを関連付けることができます。これらのインスタンスはすべて CIO によって作成されます。

� 内部エラーや CLASSPATH が誤っているなどの理由で、新規構成の作成時に関数コンパニオンをロードできない場合は、構成のオープンが失敗します。

� コンポーネントに加えて、関数コンパニオンは製品および BOM モデルに関連付けることもできます。これらは、同等のエンティティと見なされます。

� Java で関数コンパニオンを作成する場合は、oracle.apps.cz.cio.FunctionalCompanionを拡張するクラスを実装します。1-6 ページの 1.3 項「Java を使用した関数コンパニオンの作成」を参照してください。

出力 構成に基づいてなんらかの出力フォームを生成します。生成可能な出力には、構成に関するレポート、パフォーマンス・グラフ、形状レンダリング、グラフィカル・イメージなどがあります。

ランタイム Oracle Configurator では、エンド・ユーザーが出

力関数コンパニオンの実行を明示的に選択することになります。

3-43 ページの 3.12.4 項「generateOutput() インタフェース・メ

ソッド」を参照してください。

イベント・ドリブン 構成が特定の方法で処理(作成、復元または保存)された場合に、指定の処理を自動的に実行します。

3-9 ページの 3.4.3 項「構成の自動処理」を参照してください。

表表表表 1-1 関数コンパニオンのタイプ(続き)関数コンパニオンのタイプ(続き)関数コンパニオンのタイプ(続き)関数コンパニオンのタイプ(続き)

タイプタイプタイプタイプ 説明説明説明説明

関数コンパニオンの基礎知識 1-3

Page 20: Oracle Configuration Interface Objeഀ挀瓿ࠀ䌀䤀俿ক譶 …Oracle Configuration Interface Object(CIO) 開発者ガイド リリース11i 2003 年2 月 部品番号:J06438-02

関数コンパニオンとは

� どの言語を使用する場合でも、oracle.apps.cz.cio.IFunctionalCompanion(3-39 ページの 3.12 項「関数コンパニオンの標準インタフェース・メソッド」を参照)の標準インタフェース・メソッドを 1 つ以上実装します。

� 関数コンパニオンでは、アプリケーションのモデルと通信するために、Oracle の CIO API が使用されます。CIO は、ランタイム Oracle Configurator でモデルにアクセスするためのカスタム・ユーザー・インタフェースを開発する際にも使用できます。1-5ページの 1.2 項「関数コンパニオンと CIO」を参照してください。

1.1.3 関数コンパニオン開発の前提知識関数コンパニオン開発の前提知識関数コンパニオン開発の前提知識関数コンパニオン開発の前提知識関数コンパニオンの開発には、相応のレベルの Java 開発能力が必要です。必要な Java 開発能力のレベルは、対象の関数コンパニオンに必要とされる機能によって異なります。

一般的に、関数コンパニオンの開発者には次の知識が必要です。

� 次の各構造に関する基礎知識。

� モデル、オプション区分および標準品目から構成される Oracle Applications 部品構成表(BOM)

� Oracle Configurator コンポーネント、フィーチャおよびオプションから構成されるモデル

� これらの BOM およびモデル構造と CIO との関係

� Java プログラミングの知識。次の事柄に精通している必要があります。

� Collections クラスとそのサブクラス

� 例外処理

� Java インタフェースの使用

� Java のイベント・モデル(ユーザー・インタフェースと対話する関数コンパニオンの記述に使用)

� HTML および Java の HttpServletResponse クラス(カスタム出力を生成する関数コンパニオンの記述に使用)

注意注意注意注意 : Oracle Configurator Developer とランタイム Oracle Configuratorのデフォルト・ユーザー・インタフェースはどちらもこの方法でモデルと通信します。その際、エンド・ユーザーに関するデータに加えて、構造、ルールおよびユーザー・インタフェースの情報が格納された Oracle Configurator スキーマが使用されます。

1-4 Oracle Configuration Interface Object(CIO)開発者ガイド

Page 21: Oracle Configuration Interface Objeഀ挀瓿ࠀ䌀䤀俿ক譶 …Oracle Configuration Interface Object(CIO) 開発者ガイド リリース11i 2003 年2 月 部品番号:J06438-02

関数コンパニオンと CIO

� Oracle データベースの実践的な知識。次のものが含まれます。

� PL/SQL プログラミング言語

� JDBC の原理

上記の知識は必須です。このほかに、個々のプロジェクトの要件に応じて、関数コンパニオンの開発時に特定の専門知識が必要となる場合があります。

1.2 関数コンパニオンと関数コンパニオンと関数コンパニオンと関数コンパニオンと CIO関数コンパニオンは、アクティブ・モデルへのアクセスについて CIO に依存しています。 基本的な情報は、3-2 ページの 3.1.2 項「CIO と関数コンパニオン」を参照してください。

1.2.1 CIO インタフェースの使用方法インタフェースの使用方法インタフェースの使用方法インタフェースの使用方法関数コンパニオンは CIO のクライアントです。CIO を使用してプログラムを作成するときは、oracle.apps.cz.cioで定義されているパブリック・インタフェース・オブジェクトのセットのインスタンスを作成します。

プログラム・コードはこのパブリック・インタフェース・オブジェクトのみを参照する必要があります。3-2 ページの 3.2 項「CIO のランタイム・ノード・インタフェース」を参照してください。

1.2.2 標準インタフェース・メソッドの実装標準インタフェース・メソッドの実装標準インタフェース・メソッドの実装標準インタフェース・メソッドの実装関数コンパニオンに機能を組み込むには、次のメソッドの本体コードを実装します。

� initialize()

� autoConfigure()

� validate()

� generateOutput()

� terminate()

これらのメソッドは 3-39 ページの 3.12 項「関数コンパニオンの標準インタフェース・メソッド」で解説されています。

現在 CIO でサポートされている言語に適用される詳細およびその例は、1-6 ページの 1.3 項「Java を使用した関数コンパニオンの作成」を参照してください。

関数コンパニオンの基礎知識 1-5

Page 22: Oracle Configuration Interface Objeഀ挀瓿ࠀ䌀䤀俿ক譶 …Oracle Configuration Interface Object(CIO) 開発者ガイド リリース11i 2003 年2 月 部品番号:J06438-02

Java を使用した関数コンパニオンの作成

1.3 Java を使用した関数コンパニオンの作成を使用した関数コンパニオンの作成を使用した関数コンパニオンの作成を使用した関数コンパニオンの作成この項では、関数コンパニオンのオブジェクト・クラスを作成し、アクティブ・モデルに関連付けてランタイム Oracle Configurator で使用可能にする方法を説明します。

1.3.1 Java を使用した関数コンパニオンの作成手順を使用した関数コンパニオンの作成手順を使用した関数コンパニオンの作成手順を使用した関数コンパニオンの作成手順ここでは、Java を使用して関数コンパニオンを作成するタスクの概要について説明します。1-8 ページの 1.3.2 項「Java 関数コンパニオンのインストール要件」も参照してください。

1. Java 開発環境またはテキスト・エディタを使用して、Java のクラスを定義する .javaファイルを作成します。

2. CIO(oracle.apps.cz.cio.*)のクラスをインポートします。

import oracle.apps.cz.cio.*;

3. 関数コンパニオンの動作を規定するクラスを定義します。

1-10 ページの例 1-1 の関連する行を次に示します。

public class MyClass extends FunctionalCompanion // line 6

関数コンパニオンのクラスの定義では、次のいずれかを行うことができます。

� 通常 : 関数コンパニオンのベース・クラスであるoracle.apps.cz.cio.FunctionalCompanionを拡張し、必要な特定のメソッドをオーバーライドします。このケースでは、FunctionalCompanionベース・クラスの機能を利用できます。この機能には、たとえば、関数コンパニオンを関連付けたランタイム・ノードへの参照を保存するFunctionalCompanion.getRuntimeNode()メソッド、関数コンパニオンの名前を戻す FunctionalCompanion.getName()メソッドなどがあります。

� 特殊なケース : 関数コンパニオンのインタフェースであるoracle.apps.cz.cio.IFunctionalCompanionを実装し、そのすべてのメソッドを実装します。oracle.apps.cz.cio.FunctionalCompanionを拡張するのではありません。 このケースでは、FunctionalCompanionベース・クラスの機能を利用できません。

4. 必要であれば、oracle.apps.cz.cio.FunctionalCompanion.initialize()をオーバーライドできます(3-40 ページの 3.12.1 項「initialize() インタフェース・メソッド」を参照)。

通常は、FunctionalCompanion.initialize()を直接コールする必要はありません。CIO がかわりにそれを行います。 ただし、関数コンパニオンのベース・クラスとして FunctionalCompanionをオーバーライドする場合は、作成したクラスのinitialize()メソッドから super.initialize()をコールする必要があります。これにより、スーパークラス(oracle.apps.cz.cio.FunctionalCompanion)に

1-6 Oracle Configuration Interface Object(CIO)開発者ガイド

Page 23: Oracle Configuration Interface Objeഀ挀瓿ࠀ䌀䤀俿ক譶 …Oracle Configuration Interface Object(CIO) 開発者ガイド リリース11i 2003 年2 月 部品番号:J06438-02

Java を使用した関数コンパニオンの作成

必要な変数が渡されて、そのメソッドが使用可能になります。 この方法は次のコード・フラグメントで示されます。

public void initialize(IRuntimeNode comp_node, String name, String description, int id) { this.comp_node = comp_node; super.initialize(comp_node, name, description, id); // line 35 }

5. oracle.apps.cz.cio.IFunctionalCompanionの他のインタフェース・メソッドを 1 つ以上オーバーライドします(3-39 ページの 3.12 項「関数コンパニオンの標準インタフェース・メソッド」を参照)。

initializeautoConfigurevalidategenerateOutputterminate

6. 必要に応じて、CIO の他のインタフェースのメソッドをコールします(3-2 ページの 3.2項「CIO のランタイム・ノード・インタフェース」を参照)。

7. .java ファイルをコンパイルして .class ファイルを生成します。

javac FuncCompTest1.java

使用しているプラットフォームに対して適切なバージョンの Sun JDK を使用してください。1-8 ページの 1.3.2.1 項「関数コンパニオンを開発するための要件」を参照してください。Listなど、コレクション・ライブラリのクラスを使用する場合は、次の構文でインポートする必要があります。

import com.sun.java.util.collections.List;

8. 作成された .class ファイルをクラスパス上に配置するか、またはクラスパス上にあるJAR ファイルに追加します。 次に例を示します。

jar cvf FuncComps.jar FuncCompTest1.class

set CLASSPATH=%CLASSPATH%;D:¥companions¥FuncComps.jar

注意注意注意注意 : 1-7 ページの手順 5 でリストされている標準インタフェース・メソッドのみを使用する基本的な関数コンパニオンでは、CIO のインタフェースを使用する必要はありません。

関数コンパニオンの基礎知識 1-7

Page 24: Oracle Configuration Interface Objeഀ挀瓿ࠀ䌀䤀俿ক譶 …Oracle Configuration Interface Object(CIO) 開発者ガイド リリース11i 2003 年2 月 部品番号:J06438-02

Java を使用した関数コンパニオンの作成

9. このクラスパスを使用して Oracle Configurator Developer を実行します。関数コンパニオンをモデル内のコンポーネントに関連付けます。1-11 ページの 1.4 項「関数コンパニオンの Configurator への取込み」を参照してください。アクティブ・モデルとユーザー・インタフェースを生成します。

10. 関数コンパニオンをテストするには、Oracle Configurator Developer の「Test」ボタンをクリックします。 ランタイム Oracle Configurator を起動する場合は、関数コンパニオンを有効にするために生成した UI 上のボタンをクリックします。1-17 ページの 1.4.3 項

「ランタイム Oracle Configurator を使用した関数コンパニオンのテスト」を参照してください。

1.3.2 Java 関数コンパニオンのインストール要件関数コンパニオンのインストール要件関数コンパニオンのインストール要件関数コンパニオンのインストール要件

1.3.2.1 関数コンパニオンを開発するための要件関数コンパニオンを開発するための要件関数コンパニオンを開発するための要件関数コンパニオンを開発するための要件Java 関数コンパニオンを開発するには、Java クラスをコンパイルできる Java 開発環境をインストールする必要があります。Java 開発環境には次のようなものがあります。

� Oracle JDeveloper

� Microsoft Visual J++

� プラットフォームの JDK 1.3 の 新バージョン

Listなどのコレクション・ライブラリのクラスを使用する場合は、次の構文を使用してインポートする必要があります。

import com.sun.java.util.collections.List;

関数コンパニオンをコンパイルする際に JDBC ドライバまたはデータベースへのアクセスは必要ありません。ただし、それらは実行時に必要となります。

1.3.2.2 関数コンパニオンを実行するための要件関数コンパニオンを実行するための要件関数コンパニオンを実行するための要件関数コンパニオンを実行するための要件関数コンパニオンを使用したランタイム Oracle Configurator では、実行時に次のものが必要です。

� JDBC/ODBC ドライバ

� ODBC データソース

ランタイム Oracle Configurator では、CIO で使用される JDBC データベース接続が自動的に設定されます。ランタイム Oracle Configurator のかわりにカスタム・ユーザー・インタフェースを使用する場合は、このタスクを実行する必要があります。詳細は、3-5 ページの3.3 項「CIO の初期化」を参照してください。

ホスト・アプリケーションで複数言語環境のユーザー・インタフェースを使用する場合は、現在の言語を正しく設定するために ICX セッション・チケットを作成する必要があります。

1-8 Oracle Configuration Interface Object(CIO)開発者ガイド

Page 25: Oracle Configuration Interface Objeഀ挀瓿ࠀ䌀䤀俿ক譶 …Oracle Configuration Interface Object(CIO) 開発者ガイド リリース11i 2003 年2 月 部品番号:J06438-02

Java を使用した関数コンパニオンの作成

カスタム・メッセージを使用する関数コンパニオンを記述した場合、FND_NEW_MESSAGES 表でそれらのメッセージの格納と取出しを行う必要があります。それらのメッセージの変換に関する責任は、開発者が負います。

Java 関数コンパニオンを実行するには、1-9 ページの表 1-2 に記載されたソフトウェアを指定された場所にインストールし、オペレーティング・システム環境で認識する必要があります。

インストールおよび環境に関する詳細は、『Oracle Configurator インストレーション・ガイド』および『Oracle Configurator Implementation Guide』を参照してください。JDBC ドライバに関する基本的な情報は、『Oracle8i JDBC 開発者ガイドおよびリファレンス』を参照してください。

1.3.2.3 関数コンパニオンをテストするための要件関数コンパニオンをテストするための要件関数コンパニオンをテストするための要件関数コンパニオンをテストするための要件関数コンパニオンを実装したクラスは、CLASSPATH 環境変数に含める必要があります。そうしないと、新しく構成を作成しようとしたときに次のようなエラー・メッセージが表示される場合があります。

New Configuration: Cannot create configuration:oracle.apps.cz.cio.FuncCompCreationException:java.lang.ClassNotFoundException: classname

classname には、 初にロードされた関数コンパニオンの名前を入力します。

表表表表 1-2 関数コンパニオンに必要なソフトウェア関数コンパニオンに必要なソフトウェア関数コンパニオンに必要なソフトウェア関数コンパニオンに必要なソフトウェア

ファイル名ファイル名ファイル名ファイル名 場所場所場所場所 用途用途用途用途 ソースソースソースソース

config.jar CLASSPATH CIO の使用 Oracle Configurator (OC)の

インストール

cz3rdpty.jar CLASSPATH Java のコレクション、

XML パーサー、Swing UIおよび各種基底クラスの使用

OC のインストール

cz.dll

czjni.dll

PATH CIO および関数コンパニ

オンからの Oracle Configurator 論理エンジ

ンへのアクセス

OC のインストール

jdbc111.zip CLASSPATH 関数コンパニオンでOracle JDBC Thin ドライ

バを使用する場合

Oracle Technology Network の

ダウンロード・エリア

関数コンパニオンの基礎知識 1-9

Page 26: Oracle Configuration Interface Objeഀ挀瓿ࠀ䌀䤀俿ক譶 …Oracle Configuration Interface Object(CIO) 開発者ガイド リリース11i 2003 年2 月 部品番号:J06438-02

Java を使用した関数コンパニオンの作成

1.3.3 Java 関数コンパニオンの最低限の例関数コンパニオンの最低限の例関数コンパニオンの最低限の例関数コンパニオンの最低限の例例 1-1 は、関数コンパニオンに 低限必要なコーディングを示しています。このコーディングだけでは作業は実行されません。

例例例例 1-1 基本的な基本的な基本的な基本的な Java 関数コンパニオン関数コンパニオン関数コンパニオン関数コンパニオン : MyClass.java

import oracle.apps.cz.cio.*; import com.sun.java.util.collections.List; // line 2import javax.servlet.http.HttpServletResponse;import java.io.IOException;

public class MyClass extends FunctionalCompanion // line 6{ // constructor public MyClass(CIO cio, IRuntimeNode node) { } public void initialize(IRuntimeNode node, String name, String description, int id) { // implement body, if necesary super.initialize(node, name, description, id); } public void autoConfigure() throws LogicalException { // implement body as desired } public List validate() { // implement body as desired return null; } // for thin client public void generateOutput(HttpServletResponse response) throws IOException { // implement body as desired }

// for thick client public String generateOutput() { // implement body as desired return null; } public void terminate() {

1-10 Oracle Configuration Interface Object(CIO)開発者ガイド

Page 27: Oracle Configuration Interface Objeഀ挀瓿ࠀ䌀䤀俿ক譶 …Oracle Configuration Interface Object(CIO) 開発者ガイド リリース11i 2003 年2 月 部品番号:J06438-02

関数コンパニオンの Configurator への取込み

// implement body, if necesary super.terminate(); }}

行行行行 2import com.sun.java.util.collections.List; // line 2

Listなど、コレクション・ライブラリからのクラスをインポートする場合は、この構文を使用する必要があります。

行行行行 6public class MyClass extends FunctionalCompanion // line 6

このクラスは、関数コンパニオンのベース・クラスであるoracle.apps.cz.cio.FunctionalCompanionを拡張します。1-6 ページの手順 3 の説明を参照してください。

1.4 関数コンパニオンの関数コンパニオンの関数コンパニオンの関数コンパニオンの Configurator への取込みへの取込みへの取込みへの取込み関数コンパニオンを Configurator に取り込むには、次の手順に従います。

1. 関数コンパニオンをコンポーネント(または同等のノード)に関連付ける構成ルールを作成します。1-11 ページの 1.4.1 項「関数コンパニオンとモデルの関連付け」を参照してください。

2. 関数コンパニオンが反映されるようにユーザー・インタフェースを更新します。1-15ページの 1.4.2 項「ユーザー・インタフェースの更新」を参照してください。

3. 関数コンパニオンの動作をテストします。1-17 ページの 1.4.3 項「ランタイム Oracle Configurator を使用した関数コンパニオンのテスト」を参照してください。

1.4.1 関数コンパニオンとモデルの関連付け関数コンパニオンとモデルの関連付け関数コンパニオンとモデルの関連付け関数コンパニオンとモデルの関連付け関数コンパニオンをランタイム Oracle Configurator で使用可能にするには、それをモデル内のコンポーネントまたはコネクタ(または同等のノード)に関連付ける必要があります。 この関連付けは、Oracle Configurator Developer で構成ルールのタイプとして作成します。構成ルールでは、実行可能な関数コンパニオンに実装した関数コンパニオンのメソッドと、実行可能な関数コンパニオンを含むファイルの位置を特定するためにランタイム Oracle Configurator で使用されるパスを指定します。

コンポーネントと関数コンパニオンを関連付けるには、次の手順に従います。

1. メイン・ツールバーの「Rules」ボタンをクリックします。

左下ペインに構成ルール・タイプのリストが表示されます。

関数コンパニオンの基礎知識 1-11

Page 28: Oracle Configuration Interface Objeഀ挀瓿ࠀ䌀䤀俿ক譶 …Oracle Configuration Interface Object(CIO) 開発者ガイド リリース11i 2003 年2 月 部品番号:J06438-02

関数コンパニオンの Configurator への取込み

2. 「Create」メニューから「New Functional Companion」を選択します。 または、関数コンパニオンのノードを選択してマウスの右ボタンをクリックし、ポップアップ・メニューから「New Functional Companion」を選択することもできます。

3. 右ペインの「Name」フィールドに、関数コンパニオン・ルールの名前を入力します。

この名前は、ユーザー・インタフェース・オブジェクトを作成する際に関数コンパニオン・ルールを参照するために使用されます。

4. 「Description」セクションに関数コンパニオン・ルールの簡潔な説明を入力します。 必要に応じて、左側にある青い矢印をクリックして「Description」セクションを開きます。

5. 必要に応じて、左側にある青い矢印をクリックして「Definition」セクションを開きます。モデル・ビューで、このルールに含めるコンポーネントまたは同等のノードを選択します。 マウスの左ボタンを押しながら、「Definition」セクションの「Base Component」フィールドにドラッグします。 ルールごとにベース・コンポーネントを 1つのみ指定できます。

6. 関数コンパニオンに対して 1 つ以上のタイプを選択します。 選択肢は 1-12 ページの表1-3 にリストされています。

基本的な情報は、1-2 ページの 1.1.1 項「関数コンパニオンのタイプ」および 3-39 ページの 3.12 項「関数コンパニオンの標準インタフェース・メソッド」を参照してください。

7. 「Implementation」の下のドロップダウン・リストで、関数コンパニオンの実装言語を選択します。

� Java で記述された関数コンパニオンの場合は、「Java」を選択します。

(Java は、現在サポートされている唯一の実装です。)

表表表表 1-3 関数コンパニオンのタイプおよび対応するメソッド関数コンパニオンのタイプおよび対応するメソッド関数コンパニオンのタイプおよび対応するメソッド関数コンパニオンのタイプおよび対応するメソッド

タイプタイプタイプタイプ 対応する関数コンパニオン・メソッド対応する関数コンパニオン・メソッド対応する関数コンパニオン・メソッド対応する関数コンパニオン・メソッド

検証 validate()

自動構成 autoConfigure()

出力 generateOuput()

イベント・ドリブン AutoFunctionalCompanionのすべてのメソッド

注意注意注意注意 : initialize()と terminate()メソッドは関連付ける必要はありません。これらはランタイム Oracle Configurator によって自動的に実行されます。

1-12 Oracle Configuration Interface Object(CIO)開発者ガイド

Page 29: Oracle Configuration Interface Objeഀ挀瓿ࠀ䌀䤀俿ক譶 …Oracle Configuration Interface Object(CIO) 開発者ガイド リリース11i 2003 年2 月 部品番号:J06438-02

関数コンパニオンの Configurator への取込み

8. 「Program String」の下に、実行可能な関数コンパニオンの位置を特定する文字列を入力します。

� Java 実装において、プログラム文字列は関数コンパニオンを実装するクラスの名前になります。次に例を示します。

FuncCompTest1

このプログラム文字列により、Oracle Configurator Developer および OC サーブレットが Java のクラス・パスを使用してクラス・ファイルの位置を特定できるようにする必要があります。 その際、Java のアーカイブ内のクラスを指定するときの標準ルールが適用されます。 たとえば、次のパスを使用して、関数コンパニオンのFuncCompTest1.classファイルを tests.jarという名前の Java アーカイブ

(JAR)ファイルに格納したとします。

com¥java¥tests¥FuncCompTest1.class

この場合、Configurator Developer のプログラム文字列プログラム文字列プログラム文字列プログラム文字列として、関数コンパニオンのクラスを次のように指定します。

com.java.tests.FuncCompTest1

1.3.1 項「Java を使用した関数コンパニオンの作成手順」の 1-7 ページ手順 8 を参照してください。

1-14 ページの図 1-1 は、関数コンパニオンにコンポーネントを関連付けた後の、Oracle Configurator Developer の「ルール」モジュール画面を示しています。

9. モデル構造またはルール(ただし、関数コンパニオン・ルールの作成は除く)を変更した場合は、「Tools」メニューから「Generate Active Model」を選択します。関数コンパニオン・ルールの作成のみを行った場合、この手順は省略できます。

10.「Generate Active Model」コマンドが正常に終了したら、メイン・ツールバーの「UI」ボタンをクリックしてユーザー・インタフェース・モジュールに切り替えます。

関数コンパニオンの基礎知識 1-13

Page 30: Oracle Configuration Interface Objeഀ挀瓿ࠀ䌀䤀俿ক譶 …Oracle Configuration Interface Object(CIO) 開発者ガイド リリース11i 2003 年2 月 部品番号:J06438-02

関数コンパニオンの Configurator への取込み

図図図図 1-1 コンポーネントと関数コンパニオンの関連付けコンポーネントと関数コンパニオンの関連付けコンポーネントと関数コンパニオンの関連付けコンポーネントと関数コンパニオンの関連付け

1-14 Oracle Configuration Interface Object(CIO)開発者ガイド

Page 31: Oracle Configuration Interface Objeഀ挀瓿ࠀ䌀䤀俿ক譶 …Oracle Configuration Interface Object(CIO) 開発者ガイド リリース11i 2003 年2 月 部品番号:J06438-02

関数コンパニオンの Configurator への取込み

1.4.2 ユーザー・インタフェースユーザー・インタフェースユーザー・インタフェースユーザー・インタフェースの更新の更新の更新の更新実行可能な関数コンパニオンにモデル内のコンポーネントまたは同等のノードを関連付ける関数コンパニオン・ルールを作成したら、ユーザー・インタフェースを更新して、定義した自動構成または出力関数コンパニオンのすべてのボタンが含まれるようにする必要があります。

ユーザー・インタフェースの更新では、次の操作を行います。

� 新しい UI を生成するか、または既存の UI をリフレッシュします。1-15 ページの 1.4.2.1項を参照してください。

� 必要に応じて、Oracle Configurator Developer で生成されたデフォルトの UI を変更します。1-15 ページの 1.4.2.2 項を参照してください。

このトピックで説明する内容の詳細、特に UI の変更については、『Oracle Configurator Developer ユーザーズ・ガイド』のユーザー・インタフェースに関する章を参照してください。ここでは 低限の情報のみを示します。

1.4.2.1 ユーザー・インタフェースユーザー・インタフェースユーザー・インタフェースユーザー・インタフェースの生成またはリフレッシュの生成またはリフレッシュの生成またはリフレッシュの生成またはリフレッシュユーザー・インタフェースを生成するには、次の手順に従います。

1. モデルのユーザー・インタフェースを作成済みでない場合は、左下ペインでルート・ノード(「User Interfaces」)を選択し、「Create」メニューから「New User Interface」を選択します。

任意の数の UI を生成でき、その中からアプリケーションに使用する UI を 1 つ選択できます。

2. ユーザー・インタフェースの作成の完了を通知するメッセージが表示されるのを待ちます。

ユーザー・インタフェースをリフレッシュするには、次の手順に従います。

1. モデルのユーザー・インタフェースを作成済みの場合は、その UI の UI ノードを選択し、「Edit」メニューから「Refresh」を選択します。

リフレッシュする UI は、既存の UI の中から任意で選択できます。

2. ユーザー・インタフェースのリフレッシュの完了を通知するメッセージが表示されるのを待ちます。

1.4.2.2 デフォルト・デフォルト・デフォルト・デフォルト・ユーザー・インタフェースユーザー・インタフェースユーザー・インタフェースユーザー・インタフェースの変更の変更の変更の変更 ユーザー・インタフェースの様々な要素を、複数の方法でカスタマイズできます。ここでは、関数コンパニオンに も関連の深いものをいくつか説明します。

� 出力タイプまたは自動構成タイプの関数コンパニオン・ルールの場合、関数コンパニオンを実行するボタンは UI ツリー内のノードとして自動的に作成されます。このボタンのデフォルト・ラベルは、関数コンパニオン・ルールの名前に基づいて作成されます。

関数コンパニオンの基礎知識 1-15

Page 32: Oracle Configuration Interface Objeഀ挀瓿ࠀ䌀䤀俿ক譶 …Oracle Configuration Interface Object(CIO) 開発者ガイド リリース11i 2003 年2 月 部品番号:J06438-02

関数コンパニオンの Configurator への取込み

このラベルを、エンド・ユーザーがボタンの役割を理解しやすいように変更する場合には、1-16 ページの図 1-2 に示すようにボタンの属性の「Label」セクションにある

「Text」フィールドを編集します。

図図図図 1-2 関数コンパニオン・ボタンのラベルの変更関数コンパニオン・ボタンのラベルの変更関数コンパニオン・ボタンのラベルの変更関数コンパニオン・ボタンのラベルの変更

� ボタンの属性の「Definition」セクションで、1-16 ページの図 1-3 に示す 1 つ以上のデフォルトを変更できます。

図図図図 1-3 関数コンパニオン・ボタンのユーザー・インタフェース定義関数コンパニオン・ボタンのユーザー・インタフェース定義関数コンパニオン・ボタンのユーザー・インタフェース定義関数コンパニオン・ボタンのユーザー・インタフェース定義

1-16 Oracle Configuration Interface Object(CIO)開発者ガイド

Page 33: Oracle Configuration Interface Objeഀ挀瓿ࠀ䌀䤀俿ক譶 …Oracle Configuration Interface Object(CIO) 開発者ガイド リリース11i 2003 年2 月 部品番号:J06438-02

関数コンパニオンの Configurator への取込み

� 「Action」フィールドには、関数コンパニオンのタイプが設定されます。 このタイプは出力または自動構成です。検証ではボタンは生成されません。実行可能な関数コンパニオンの実装が変更された場合には、このタイプを変更できます。

� 「Reference」フィールドには、関数コンパニオン・ルールに関連付けたモデル・ノードを設定します。このフィールドを変更して、ボタンを同じ UI 画面に表示したまま、別のモデル・ノードに関連付けることができます。

� 「Companion」フィールドには、ボタンが実行する関数コンパニオン・ルールを設定します。このフィールドを変更して、同じボタンによって別のルールをトリガーにするように設定できます。

これらの手順の詳細は、『Oracle Configurator Developer ユーザーズ・ガイド』を参照してください。

1.4.3 ランタイムランタイムランタイムランタイム Oracle Configurator を使用した関数コンパニオンのテストを使用した関数コンパニオンのテストを使用した関数コンパニオンのテストを使用した関数コンパニオンのテストアクティブ・モデルと UI を生成後、ランタイム Oracle Configurator を使用して関数コンパニオンをテストできます。

1.4.3.1 Oracle Configurator Developer を使用したテストを使用したテストを使用したテストを使用したテストOracle Configurator Developer からランタイム Oracle Configurator を実行して関数コンパニオンをテストするには、次の手順に従います。

1. 作成した関数コンパニオンのクラス・ファイルを含む Oracle Configurator UI サーブレットの Java クラス・パスを使用して、Oracle Configurator Developer を起動または再起動します。

2. 「Tools」>「Options」の順に選択し、「Test」タブを選択し、テスト環境として「Dynamic HTML in a browser」を選択します。

3. 「Servlet URL」フィールドで、次の構文を使用して Oracle Configurator OC サーブレットの URL を入力します。

http://host:port/configurator/oracle.apps.cz.servlet.UiServlet

hostおよび portは、サイトの Oracle Configurator OC サーブレットのインストールによって異なります。

4. 「Options」ダイアログをクローズします。

5. 「Test」ボタンをクリックします。

モデルのユーザー・インタフェースの DHTML レンダリングが表示された、Web ブラウザのウィンドウが開きます。

6. 関数コンパニオン・ルールのユーザー・インタフェースで生成したボタンをクリックします。

関数コンパニオンの基礎知識 1-17

Page 34: Oracle Configuration Interface Objeഀ挀瓿ࠀ䌀䤀俿ক譶 …Oracle Configuration Interface Object(CIO) 開発者ガイド リリース11i 2003 年2 月 部品番号:J06438-02

関数コンパニオンの Configurator への取込み

詳細は、表 1-4 にリストされているマニュアルを参照してください。

1.4.3.2 HTML テスト・ページを使用したテストテスト・ページを使用したテストテスト・ページを使用したテストテスト・ページを使用したテストOracle Configurator Developer およびアプリケーションのいずれも実行せずに、ランタイムOracle Configurator をテストできます。ホスト・アプリケーションのかわりとなる単純なHTML テスト・ページを作成できます。Web ブラウザ内でこの HTML テスト・ページを開くと、事前定義済みのフレーム・セット内で、フレーム内部で指定したモデルおよびユーザー・インタフェースを使用してランタイム Oracle Configurator が起動されます。

このようなテスト・ページを使用するには、次の条件があります。

� テスト・ページ内の初期化メッセージと、そのパラメータを設定する必要があります。『Oracle Configurator インテグレーション・ガイド』を参照してください。

� Oracle Configurator OC サーブレットをインストールして起動済みである必要があります。『Oracle Configurator インストレーション・ガイド』を参照してください。

HTML テスト・ページの例は、『Oracle Configurator インテグレーション・ガイド』および『Oracle Configurator インストレーション・ガイド』を参照してください。

表表表表 1-4 関数コンパニオンのテストに関連したマニュアル関数コンパニオンのテストに関連したマニュアル関数コンパニオンのテストに関連したマニュアル関数コンパニオンのテストに関連したマニュアル

内容内容内容内容 参照箇所参照箇所参照箇所参照箇所 マニュアル名マニュアル名マニュアル名マニュアル名

Oracle Configurator Developer を使用した

テスト

テスト / デバッグ

『Oracle Configurator Developer ユーザー

ズ・ガイド』

ランタイム Oracle Configurator 内の品目の

構成

テスト / デバッグ

ユーザー・インタフェース内のボタンの変更

ユーザー・インタフェース

spx.ini での InitServletURLの設定

[Test] 『Oracle Configurator Implementation Guide』

OC サーブレットの

インストール

OC サーブレット の考慮事項

『Oracle Configurator インストレーション・

ガイド』

HTML テスト・ページの

設定

『Oracle Configurator インテグレーション・

ガイド』

1-18 Oracle Configuration Interface Object(CIO)開発者ガイド

Page 35: Oracle Configuration Interface Objeഀ挀瓿ࠀ䌀䤀俿ক譶 …Oracle Configuration Interface Object(CIO) 開発者ガイド リリース11i 2003 年2 月 部品番号:J06438-02

関数コンパニオンの Configurator への取込み

1.4.3.3 ランタイムランタイムランタイムランタイム Oracle Configurator のテスト機能のテスト機能のテスト機能のテスト機能ランタイム Oracle Configurator のユーザー・インタフェースを使用すると、表 1-5 にリストされている中の適切なメソッドを使用して関数コンパニオンをテストできます。

1-20 ページの図 1-4 に、Oracle Configurator Developer の「Test」ボタンによって生成された、ランタイム Oracle Configurator を使用した関数コンパニオンのテストを示します。 この図の関数コンパニオンは、5-2 ページの 5.2 項「Thin クライアント用 generateOutput() 関数コンパニオン」の例で定義されたものです。

表表表表 1-5 関数コンパニオンのタイプおよびユーザー・インタフェースの機能関数コンパニオンのタイプおよびユーザー・インタフェースの機能関数コンパニオンのタイプおよびユーザー・インタフェースの機能関数コンパニオンのタイプおよびユーザー・インタフェースの機能

タイプタイプタイプタイプ ユーザー・インタフェースの機能ユーザー・インタフェースの機能ユーザー・インタフェースの機能ユーザー・インタフェースの機能

自動構成 ボタンを使用して、関連するコンポーネント・インスタンスのautoConfigure()メソッドを実行できます。

検証 ユーザーが何かを選択すると、validate()メソッドが自動的に

コールされます。

出力 ボタンを使用して、関連するコンポーネント・インスタンスのgenerateOuput()メソッドを実行できます。

イベント・ドリブン AutoFunctionalCompanionのオーバーライドされたメソッド

で指定された処理は、構成が指定の方法で処理(作成、保存または復元)された場合に実行されます。

関数コンパニオンの基礎知識 1-19

Page 36: Oracle Configuration Interface Objeഀ挀瓿ࠀ䌀䤀俿ক譶 …Oracle Configuration Interface Object(CIO) 開発者ガイド リリース11i 2003 年2 月 部品番号:J06438-02

関数コンパニオンの Configurator への取込み

図図図図 1-4 ランタイムランタイムランタイムランタイム Oracle Configurator を使用した関数コンパニオンのテストを使用した関数コンパニオンのテストを使用した関数コンパニオンのテストを使用した関数コンパニオンのテスト

� 出力関数コンパニオンのボタンのラベルは、1-15 ページの 1.4.2.2 項「デフォルト・ユーザー・インタフェースの変更」で説明した方法で「Show Model Structure」に変更されています。

� 関数コンパニオンのボタンをクリックすると、関数コンパニオン・ルールに関連付けられたベース・コンポーネントをはじめとするモデル・ツリーの構造を表示したウィンドウが生成されます。1-21 ページの図 1-5 にこの出力を示します。

1-20 Oracle Configuration Interface Object(CIO)開発者ガイド

Page 37: Oracle Configuration Interface Objeഀ挀瓿ࠀ䌀䤀俿ক譶 …Oracle Configuration Interface Object(CIO) 開発者ガイド リリース11i 2003 年2 月 部品番号:J06438-02

関数コンパニオンの Configurator への取込み

図図図図 1-5 関数コンパニオンのボタンによって生成される出力ウィンドウ関数コンパニオンのボタンによって生成される出力ウィンドウ関数コンパニオンのボタンによって生成される出力ウィンドウ関数コンパニオンのボタンによって生成される出力ウィンドウ

� ユーザー・インタフェースに、検証関数コンパニオンのボタンが含まれることはありません。validate()メソッドは、オプションの値が変更されるたびに実行されます。 値が指定した範囲または構成ルールに違反すると、Oracle Configurator では、『Oracle Configurator Developer ユーザーズ・ガイド』で説明しているメッセージが表示されます。 ここで示した関数コンパニオンの例には、検証は含まれません。

� ユーザー・インタフェースには、イベント・ドリブン関数コンパニオンのボタンは含まれません。 構成が指定の方法で処理(作成、保存または復元)された場合、AutoFunctionalCompanionの適切なメソッドが実行されます。 ここで示した関数コンパニオンの例は、イベント・ドリブンではありません。

� 自動構成関数コンパニオンのユーザー・インタフェースには、構成モデルを指定の方法(数値フィーチャの値を変更するなど)で変更するボタンが含まれます。 ここで示した関数コンパニオンの例には、自動構成は含まれません。

関数コンパニオンの基礎知識 1-21

Page 38: Oracle Configuration Interface Objeഀ挀瓿ࠀ䌀䤀俿ক譶 …Oracle Configuration Interface Object(CIO) 開発者ガイド リリース11i 2003 年2 月 部品番号:J06438-02

関数コンパニオンの Configurator への取込み

1-22 Oracle Configuration Interface Object(CIO)開発者ガイド

Page 39: Oracle Configuration Interface Objeഀ挀瓿ࠀ䌀䤀俿ক譶 …Oracle Configuration Interface Object(CIO) 開発者ガイド リリース11i 2003 年2 月 部品番号:J06438-02

関数コンパニオンの

2

関数コンパニオンの使用関数コンパニオンの使用関数コンパニオンの使用関数コンパニオンの使用

この章では、アプリケーションで関数コンパニオンを有効に使用するための上級テクニックを説明します。

2.1 ユーザー・インタフェース要素の制御ユーザー・インタフェース要素の制御ユーザー・インタフェース要素の制御ユーザー・インタフェース要素の制御

CIO には、ブラウザ内の動的 HTML ユーザー・インタフェースと対話する関数コンパニオンの作成用に Java インタフェースのセットが含まれています。例 2-1 では、これらのインタフェースの階層を示しています。

例例例例 2-1 IUserInterface および関連インタフェースの階層および関連インタフェースの階層および関連インタフェースの階層および関連インタフェースの階層

IUserInterfaceIUserInterfaceNode IUserInterfaceScreen IUserInterfaceControl IUserInterfaceImage IUserInterfaceLabelIUserInterfaceEventIUserInterfaceEventListener

これらのインタフェースにより、次の表にリストされている様々なタイプの対話が提供されます。

注意注意注意注意 : この章を読む際には、5-9 ページの 5.5 項「ユーザー・インタフェースとの対話」の例を参照してください。

使用 2-1

Page 40: Oracle Configuration Interface Objeഀ挀瓿ࠀ䌀䤀俿ক譶 …Oracle Configuration Interface Object(CIO) 開発者ガイド リリース11i 2003 年2 月 部品番号:J06438-02

ユーザー・インタフェース要素の制御

2.1.1 CIO とユーザー・インタフェースの対話方法とユーザー・インタフェースの対話方法とユーザー・インタフェースの対話方法とユーザー・インタフェースの対話方法Oracle Configurator のユーザー・インタフェースの表示は、Oracle Configurator UI サーバーによって処理されます。Oracle Configurator UI サーバーは、Oracle Configurator サーブレットの内部で実行されます。

UI サーバーは、各構成セッションの初期化メッセージの処理の一部として、次の役割を持ちます。

1. 構成の作成または復元(これにより、構成モデルのランタイム・ツリー・ビューが作成されます)。

2. ランタイム・ツリー・ビュー上の UI ノードの作成。

3. UI ノードの、CIO が提供する構成モデルのランタイム・インスタンス内の関連ノードへの関連付け。

また、UI サーバーは、構成の作成または復元の一部として、高レベル UI インタフェース参照を設定する引数を IUserInterface オブジェクトの形で渡す役割も持ちます。次のコード・フラグメントの uiSessionはその例です。

/*** UI SERVER code ***/ Configuration cioConfig; IUserInterface uiSession; ...

対話のタイプ対話のタイプ対話のタイプ対話のタイプ 例例例例

UI セッションのプロパティへのアクセス 現在の画面またはユーザー情報の取得

UI コントロールおよびそのプロパティの

いくつかへのアクセス

イメージ、画面タイトル、コンボボックスなどのコントロール (このようなコントロールの

ラベルおよびイメージは変更または非表示にできますが、コントロール自体はこの方法で非表示にはできません。)

DHTML コントロールからのカスタム UI 機能

のコールバック

保存 / 復元、ナビゲーション

関数コンパニオンのコールバック 標準イベントおよびカスタム・イベントのコールバック

表示される UI 画面のナビゲーションの動的

制御

ナビゲーション

画面内のイメージまたはラベルの動的制御 イメージの変更、画面タイトルの変更

ユーザーとの直接コミュニケーション・チャネル

メッセージ・ボックスの表示、カスタムHTML コンテンツの生成

2-2 Oracle Configuration Interface Object(CIO)開発者ガイド

Page 41: Oracle Configuration Interface Objeഀ挀瓿ࠀ䌀䤀俿ক譶 …Oracle Configuration Interface Object(CIO) 開発者ガイド リリース11i 2003 年2 月 部品番号:J06438-02

ユーザー・インタフェース要素の制御

cioConfig = cio.createConfiguration(rootNodeId, uiSession); ...

すべての関数コンパニオンは、この参照を取得し、他の UI インタフェースへのアクセスに使用したり、UI イベントをリッスンするために関数コンパニオン自体を登録する目的に使用できます。

/*** FUNCTIONAL COMPANION example code ***/ public void initialize(...) { ... uiSession = cioConfig.getUserInterface(); uiSession.addUserInterfaceEventListener(this); ... }

関数コンパニオンでなんらかの UI タスクを実行する必要がある場合は、起動イベントをリッスンするように関数コンパニオン自体を関数コンパニオンの initialize()メソッドに登録する必要があります。

このようなイベントは、UI ツリーが 初に作成されたときやコンポーネント・インスタンスが追加されたときなど、UI ツリーの新しいブランチが作成されるたびにディスパッチされます。

これ以降は、ユーザーとの対話が実行されるたびに UI イベントが生成され、UI イベントは、uiSessionオブジェクトによって関係するすべてのリスナーにディスパッチされます

(詳細は、2-8 ページの 2.1.9 項「インタフェース・イベントの処理」を参照)。

関数コンパニオンのコードによってイメージの変更や別の画面へのナビゲートなどのユーザー・インタフェースの操作が要求されると、UI サーバーでその要求がキャッシュされ、現在要求されている UI の状態が記録されます。

複数の関数コンパニオンから同時にユーザー・インタフェースを操作できるため、UI サーバーでは UI 要求の結果はすぐにはレンダリングされません。CIO では UI と対話している関数コンパニオンのリストが確認され、すべての関数コンパニオンからの UI 要求の処理が完了した時点で、 後の関数コンパニオンの処理結果がクライアント・ブラウザ内でレンダリングされます。

注意注意注意注意 : IUserInterfaceおよび関連インタフェースによるユーザー・インタフェースとの対話は、ユーザー・インタフェースで「Dynamic HTML in a browser」が使用されている場合にのみ使用できます。Java アプレットまたはカスタム・コードのインタフェースが使用されている場合、またはバッチ検証(ユーザー・インタフェースを持たない)が使用されている場合には利用不可能です。

関数コンパニオンの使用 2-3

Page 42: Oracle Configuration Interface Objeഀ挀瓿ࠀ䌀䤀俿ক譶 …Oracle Configuration Interface Object(CIO) 開発者ガイド リリース11i 2003 年2 月 部品番号:J06438-02

ユーザー・インタフェース要素の制御

2.1.2 現在の画面の取得現在の画面の取得現在の画面の取得現在の画面の取得IUserInterfaceへの参照を設定することにより、関数コンパニオンからスタイル、セッション ID およびユーザー・アカウント情報など、uiSessionオブジェクトの様々なプロパティにアクセスできます。

/*** FUNCTIONAL COMPANION example code ***/ ... style = uiSession.getType(); sessionID = uiSession.getUiSessionID(); ...

また、IUserInterfaceへの参照によって、現在表示されている UI 画面と UI ランタイム・ツリー内の UI ノードも取得できます。

/*** FUNCTIONAL COMPANION example code ***/ ... IUserInterfaceScreen uiScreen = uiSession.getCurrentScreen(); List uiCombos = uiSession.getNode("Feature-321",uiScreen);

// Now walk the list of nodes and check the types, to get the target node...IUserInterfaceControl uiCombo321 = uiCombos.get(targetNode); ...

同じ名前の UI ノードが複数存在する可能性もあるため、uiSession.getNode()からはList が戻されます。このようなリスト内のすべてのノードは、同じ名前を持ちます。 リストを調べて目的のタイプのノードを探し、取得する必要があります。

2.1.3 ノードへのアクセスノードへのアクセスノードへのアクセスノードへのアクセスUI ノード固有のプロパティへは、IUserInterfaceNodeインタフェースを介してアクセスできます。

/*** FUNCTIONAL COMPANION example code ***/ ... IUserInterfaceNode myNode; ...int type = myNode.getType(); String name = myNode.getName();

注意注意注意注意 : 複数の関数コンパニオンによって実行される処理の順序は保証されません。したがって、どの UI 対話操作がレンダリングされるかは予測できません。

2-4 Oracle Configuration Interface Object(CIO)開発者ガイド

Page 43: Oracle Configuration Interface Objeഀ挀瓿ࠀ䌀䤀俿ক譶 …Oracle Configuration Interface Object(CIO) 開発者ガイド リリース11i 2003 年2 月 部品番号:J06438-02

ユーザー・インタフェース要素の制御

String caption = myNode.getUiCaption(); ...

IUserInterfaceNodeインタフェースで提供されるタイプを使用すると、ノードのタイプを確認できます。

...if (myNode.getType() == (IUserInterfaceNode.COMBO_BOX))...

ノードのタイプのリストは、IUserInterfaceNodeのドキュメントを参照してください。

また、UI ノードに関連付けられているランタイム・ノードがある場合は、IRuntime.getRuntimeNode()を使用して取得できます。

2.1.4 画面およびコントロールへのアクセス画面およびコントロールへのアクセス画面およびコントロールへのアクセス画面およびコントロールへのアクセスIUserInterfaceScreenや IUserInterfaceControlなどのすべてのサブインタフェースには、UI アクセス可能プロパティがあります。

/*** FUNCTIONAL COMPANION example code ***/ ... IUserInterfaceControl uiCombo321; IUserInterfaceScreen uiScreen = uiCombo.getScreen(); List controls = uiScreen.getControls(); ...

2.1.5 イメージおよびラベルへのアクセスイメージおよびラベルへのアクセスイメージおよびラベルへのアクセスイメージおよびラベルへのアクセスIUserInterfaceImageによる参照を設定すると、表示されるイメージのファイル名にアクセスできます。 IUserInterfaceLabelによる参照を設定すると、ラベルの UI 画面タイトルにアクセスできます(メソッド getUiCaption()はすべての UI ノード上で利用可能です)。

/*** FUNCTIONAL COMPANION example code ***/ ... IUserInterfaceImage image; String filename = image.getFileName(); ... IUserInterfaceLabel label; String caption = label.getUiCaption(); ...

関数コンパニオンの使用 2-5

Page 44: Oracle Configuration Interface Objeഀ挀瓿ࠀ䌀䤀俿ক譶 …Oracle Configuration Interface Object(CIO) 開発者ガイド リリース11i 2003 年2 月 部品番号:J06438-02

ユーザー・インタフェース要素の制御

2.1.6 ナビゲーションの制御ナビゲーションの制御ナビゲーションの制御ナビゲーションの制御CIO を介した UI コントロールの重要な使用方法に、別の画面へのナビゲートがあります。これにより、エンド・ユーザーが処理する画面の順序を、エンド・ユーザーの選択に基づいて制御できます。あらかじめ画面を選択しておき、無関係な選択肢を含む画面をエンド・ユーザーがスキップできるように設定できます。

IUserInterface による参照を設定することにより、指定した画面名を持つ画面に自由にナビゲートできます。そのために uiSessionオブジェクトは指定された名前の画面を検索し、その画面にナビゲートします。

/*** FUNCTIONAL COMPANION example code ***/ ... uiSession.navigateToScreen("Screen322"); ... これによって、「Screen322」の表示がまだレンダリングされていない可能性もありますが、UI サーバーは「Screen322」を現在の画面と見なします。2-2 ページの 2.1.1 項「CIO とユーザー・インタフェースの対話方法」を参照してください。

しかし、画面への参照があると、このナビゲーションはより便利になります。

/*** FUNCTIONAL COMPANION example code ***/ ... IUserInterfaceControl uiCombo321; IUserInterfaceScreen uiScreen = uiCombo.getScreen(); uiScreen.navigate(); ...

2.1.7 イメージおよびラベルの制御イメージおよびラベルの制御イメージおよびラベルの制御イメージおよびラベルの制御イメージまたはラベルの内容を変更できると、構成された製品がエンド・ユーザーに表示される方法を、エンド・ユーザーの選択に基づいて関数コンパニオンで制御できます。たとえば、好みの色を選択できるコンボボックスでエンド・ユーザーが色を選択したときに、イメージの色を変更できます。

イメージの内容を動的に変更できるようにするには、次のように IUserInterfaceImageを使用してイメージの UI ノードへの参照を設定する必要があります。

/*** FUNCTIONAL COMPANION example code ***/ ... IUserInterfaceScreen uiScreen = uiSession.getCurrentScreen(); List uiImages = uiSession.getNode("Image-322",uiScreen); IuserInterfaceImage uiImage322 = uiImages.get(0);... uiImage322.setFileName("Image322-1.jpg");...

2-6 Oracle Configuration Interface Object(CIO)開発者ガイド

Page 45: Oracle Configuration Interface Objeഀ挀瓿ࠀ䌀䤀俿ক譶 …Oracle Configuration Interface Object(CIO) 開発者ガイド リリース11i 2003 年2 月 部品番号:J06438-02

ユーザー・インタフェース要素の制御

環境上の考慮事項を含む詳細な例は、5-14 ページの 5.5.3 項「イメージの変更」を参照してください。

同様に、IUserInterfaceLabelへの参照を使用して、ラベルの内容も動的に変更できます。

/*** FUNCTIONAL COMPANION example code ***/ ... IUserInterfaceScreen uiScreen = uiSession.getCurrentScreen(); List uiLabels = uiSession.getNode("Label-323",uiScreen); IuserInterfaceLabel uiLabel323 = uiLabels.get(0);... uiLabel323.setUiCaption("ABC");...uiLabel323.setUiCaption("DEF"); ...

2.1.8 メッセージおよびその他の出力の生成メッセージおよびその他の出力の生成メッセージおよびその他の出力の生成メッセージおよびその他の出力の生成ユーザーが別のフレーム内をクリックしたときの結果を制御できる便利な機能があります。この機能を利用すると、UI をエンド・ユーザーに役立つと思われる他の情報とともに別々のフレームにカスタマイズでき、Oracle Configurator のルック・アンド・フィールを改良できます。

2.1.8.1 メッセージ・ボックスメッセージ・ボックスメッセージ・ボックスメッセージ・ボックス関数コンパニオンでメッセージ・ボックスを簡単に作成できるようにするには、IUserInterface への参照が必要です。

/*** FUNCTIONAL COMPANION example code ***/ ... IUserInterface uiSession; ...uiSession.addMessageBox(0, "We don't have this in stock.", "Warning");...

関数コンパニオンの使用 2-7

Page 46: Oracle Configuration Interface Objeഀ挀瓿ࠀ䌀䤀俿ক譶 …Oracle Configuration Interface Object(CIO) 開発者ガイド リリース11i 2003 年2 月 部品番号:J06438-02

ユーザー・インタフェース要素の制御

2.1.8.2 カスタムカスタムカスタムカスタム HTML 出力出力出力出力関数コンパニオンで別のフレームの表示を制御する必要がある場合は、IUserInterfaceへの参照を使用してカスタム HTML 出力を直接出力できます。

/*** FUNCTIONAL COMPANION example code ***/ ... IUserInterface uiSession; ... uiSession.outputToFrame("Root:Frame1", "<HTML> ... </HTML>");...

ここで示したコード・フラグメントには、このアプローチに必要となる複雑な HTML 出力が含まれていないことに注意してください。

2.1.9 インタフェース・イベントの処理インタフェース・イベントの処理インタフェース・イベントの処理インタフェース・イベントの処理ユーザー・インタフェース内で発生したイベントに応答して関数コンパニオンがトリガーされるようにすると便利です。

5-9 ページの 5.5 項「ユーザー・インタフェースとの対話」のすべての例では、IUserInterfaceEventListenerの実装によるイベント処理を使用しています。

2.1.9.1 イベントのタイプイベントのタイプイベントのタイプイベントのタイプクライアント・マシン上で実行されたすべての種類のアクションは、記録されて UI イベントにカプセル化されます。UI サーバーはこの UI イベントを受け取り、関係する関数コンパニオンにディスパッチします。

認識されるイベント(POST_SAVE_CONFIGURATION や POST_CLICK など)は、IUserInterfaceEvent のフィールドです。

2.1.9.2 リスナー登録リスナー登録リスナー登録リスナー登録すべての関数コンパニオンオブジェクトは、インタフェースIUserInterfaceEventListenerを実装して、それ自身をイベント・リスナーとして登録すると、UI イベントの発生通知を受信できます。

リスニングは関数コンパニオン全体に対しては使用できますが、個々の UI ノードに対しては使用できません。

2-8 Oracle Configuration Interface Object(CIO)開発者ガイド

Page 47: Oracle Configuration Interface Objeഀ挀瓿ࠀ䌀䤀俿ক譶 …Oracle Configuration Interface Object(CIO) 開発者ガイド リリース11i 2003 年2 月 部品番号:J06438-02

ユーザー・インタフェース要素の制御

次のコード・フラグメントは、UI イベント・リスナーの登録を示しています。

...IUserInterface uiSession;...public void initialize(IRuntimeNode node, String name, String descrip, int id) {... uiSession = this.getRuntimeNode().getConfiguration().getUserInterface(); uiSession.addUserInterfaceEventListener(IUserInterfaceEvent.POST_CLICK, this);}...

前後のコードを含む詳細な例は、5.5 項「ユーザー・インタフェースとの対話」 の中の、5-10ページの例 5-5 などを参照してください。

IUserInterfaceへの参照で登録されたイベント・リスナーは、すべての UI ノード上でのイベントをリッスンできます。

メソッド addUserInterfaceEventListener()は IUserInterfaceインタフェースで使用でき、指定されたディスパッチャにリスナーを追加します。

また、相補関係のメソッド deleteUserInterfaceEventListener()を使用すると、リスナーの登録を解除してイベント処理を停止できます。

イベントがディスパッチされるたびに、各リスナーの handleUserInterfaceEvent()メソッドが引数となるイベント・オブジェクトとともにコールされます。

任意の数のリスナーを、任意の時点で、イベントをリッスンするよう登録できます。

複数のリスナーが登録された場合、イベントのタイプを取得することによってのみ、関数コンパニオンで異なるイベントを識別できます。 使用するメソッドは、イベントのタイプを戻す IUserInterfaceEvent.getName()です。 これを次のコード・フラグメントに示します。

...public void handleUserInterfaceEvent(IUserInterfaceEvent event) {...String eventType = event.getName();...}...

注意注意注意注意 : 複数の関数コンパニオンによって実行される処理の順序は保証されません。したがって、リスナーが起動される順序はあらかじめ予測できません。

関数コンパニオンの使用 2-9

Page 48: Oracle Configuration Interface Objeഀ挀瓿ࠀ䌀䤀俿ক譶 …Oracle Configuration Interface Object(CIO) 開発者ガイド リリース11i 2003 年2 月 部品番号:J06438-02

ユーザー・インタフェース要素の制御

また、特定のタイプのイベントのみを監視するリスナーも登録できます。 リスナーとともにイベント ID も指定します。これにより、POST_CLICK 以外のタイプのイベントは、このリスナーにディスパッチされなくなります。たとえば、関数コンパニオンで POST_CLICK イベントのみをリッスンする必要がある場合は、次に示すコード・フラグメントで関数コンパニオン自体を登録する必要があります。

...uiSession.addUserInterfaceEventListener(IUserInterfaceEvent.POST_CLICK, this);...

認識されるイベントは、、IUserInterfaceEventのフィールドです。2-8 ページの 2.1.9.1項「イベントのタイプ」を参照してください。

2.1.10 ユーザー・インタフェースのテストユーザー・インタフェースのテストユーザー・インタフェースのテストユーザー・インタフェースのテスト関数コンパニオンは、バッチ検証とともに使用できます。バッチ検証では、ランタイムOracle Configurator は UI を使用せずに起動されます。バッチ検証は、Oracle Applicationsの一部のタスクで使用されます。バッチ検証については、『Oracle Configurator インテグレーション・ガイド』を参照してください。

UI を使用してランタイム Oracle Configurator を起動すると、getUserInterface()メソッドによって NULL オブジェクトが戻されます。 NULL オブジェクトが戻されるこの現象は NullPointerExceptionといい、OC サーブレット・ログ内でのoracle.apps.cz.cio.FuncCompCreationExceptionおよび、UI 内での構成検証エラーの発生を通知します。次のコード・フラグメントは、関数コンパニオンのintialize()メソッド内のユーザー・インタフェースの存在を確認する方法を示しています。

...IUserInterface uiSession;...public void initialize(IRuntimeNode node, String name, String descrip, int id) {... uiSession = this.getRuntimeNode().getConfiguration().getUserInterface(); if (uiSession != null) { uiSession.addUserInterfaceEventListener(IUserInterfaceEvent.POST_CLICK, this);... }}...

警告警告警告警告 : IUserInterfaceおよび関連のおよび関連のおよび関連のおよび関連の CIO インタフェースを操作するインタフェースを操作するインタフェースを操作するインタフェースを操作する際は、必ずユーザー・インタフェースの存在を確認する必要があります。際は、必ずユーザー・インタフェースの存在を確認する必要があります。際は、必ずユーザー・インタフェースの存在を確認する必要があります。際は、必ずユーザー・インタフェースの存在を確認する必要があります。 これを行わないと、バッチ検証中などの一定状況下でこれを行わないと、バッチ検証中などの一定状況下でこれを行わないと、バッチ検証中などの一定状況下でこれを行わないと、バッチ検証中などの一定状況下でNullPointerException が発生する可能性があります。が発生する可能性があります。が発生する可能性があります。が発生する可能性があります。

2-10 Oracle Configuration Interface Object(CIO)開発者ガイド

Page 49: Oracle Configuration Interface Objeഀ挀瓿ࠀ䌀䤀俿ক譶 …Oracle Configuration Interface Object(CIO) 開発者ガイド リリース11i 2003 年2 月 部品番号:J06438-02

親ウィンドウと子ウィンドウの制御

2.2 親ウィンドウと子ウィンドウの制御親ウィンドウと子ウィンドウの制御親ウィンドウと子ウィンドウの制御親ウィンドウと子ウィンドウの制御アプリケーションの子カスタム・ユーザー・インタフェースを、Oracle Configurator DHTML ウィンドウから起動することが必要な場合もあります。この子 UI は、ユーザーと対話し、構成モデルの状態の更新を実行する可能性があります。 対話が終了すると、子 UIは Oracle Configurator DHTML インタフェースを含む親ウィンドウに制御を戻します。。。。

このソリューションの実装では、次の項で説明する機能が必要となる場合があります。

� 2.2.1 項「ウィンドウのロック、ロック解除およびリフレッシュ」(2-11 ページ)

� 2.2.2 項「共有構成モデルへのアクセス」(2-11 ページ)

2.2.1 ウィンドウのロック、ロック解除およびリフレッシュウィンドウのロック、ロック解除およびリフレッシュウィンドウのロック、ロック解除およびリフレッシュウィンドウのロック、ロック解除およびリフレッシュ子 UI ウィンドウとユーザーの対話の実行中は、親ウィンドウの使用を禁止する必要があります。これは、親ウィンドウを使用することにより、子ウィンドウが実行しようとしたアプリケーションや構成モデルの状態の変更に支障を及ぼす恐れがあるためです。

Oracle Configurator DHTML ウィンドウのソース・フレームによって提供されるメソッドを使用して、子ウィンドウと親ウィンドウを制御できます。次の表に、これらのメソッドがリストされています。

これらのメソッドの使用例は、5-16 ページの 5.6.1 項「ウィンドウのロック、ロック解除およびリフレッシュ」を参照してください。

2.2.2 共有構成モデルへのアクセス共有構成モデルへのアクセス共有構成モデルへのアクセス共有構成モデルへのアクセスOracle Configurator DHTML ウィンドウでは使用できないモデルとの対話を実行するためにアプリケーションで子ウィンドウを開く場合、同じセッションで使用できる他のサーブレットから構成モデルにアクセス可能であることが必要です。

5-18 ページの 5.6.2 項「共有構成モデルへのアクセス」の例では、Oracle Configurator サーブレットを使用した構成セッションの実行中に、HTTP セッションの新しいキーを使用して構成オブジェクトを保存する方法を示しています。

メソッドメソッドメソッドメソッド 処理処理処理処理

lockEventManagers() 子ウィンドウの使用中に、親ウィンドウをロックします。

unlockEventManagers() 子ウィンドウがクローズされた時点で、親ウィンドウのロックを解除します。

refreshFrames() 子ウィンドウで行われた変更の結果に基づき、親ウィンドウをリフレッシュします。

関数コンパニオンの使用 2-11

Page 50: Oracle Configuration Interface Objeഀ挀瓿ࠀ䌀䤀俿ক譶 …Oracle Configuration Interface Object(CIO) 開発者ガイド リリース11i 2003 年2 月 部品番号:J06438-02

親ウィンドウと子ウィンドウの制御

2-12 Oracle Configuration Interface Object(CIO)開発者ガイド

Page 51: Oracle Configuration Interface Objeഀ挀瓿ࠀ䌀䤀俿ক譶 …Oracle Configuration Interface Object(CIO) 開発者ガイド リリース11i 2003 年2 月 部品番号:J06438-02

Configuration Interface Object(C

3

Configuration Interface Object((((CIO)の)の)の)の

使用使用使用使用

この章では、Oracle Configuration Interface Object(CIO)およびその使用方法を説明しています。

3.1 基礎知識基礎知識基礎知識基礎知識この項では、CIO について、また関数コンパニオンとの関連を説明します。

3.1.1 CIO についてについてについてについてConfiguration Interface Object(CIO)とは、Oracle Configurator Developer を使用して作成したランタイム Oracle Configurator からモデルへのプログラム・アクセスを提供する API

(アプリケーション・プログラミング・インタフェース)です。

CIO は関数コンパニオンでも使用されます。1-5 ページの 1.2 項「関数コンパニオンと CIO」を参照してください。

CIO は 上位の構成サーバーです。CIO は、構成を表すオブジェクトを作成、保存および破棄する役割を持ちます。構成は、それ自体が製品、コンポーネント、フィーチャ、オプション、合計およびリソースを表すオブジェクトを含んでいます。これらのインタフェースを介して、論理値、数値および文字列値を取得および設定するメソッドやオプションのサブコンポーネントを作成するメソッドを使用することにより、ランタイム構成モデルを完全に制御し、操作できます。

内部的には、CIO は、論理ネット・オブジェクト(論理状態を取得および設定する)、ランタイム・モデル・サブスキーマ・オブジェクト(設計時モデルに基づいて適切なランタイム・モデルを作成する)および構成サブスキーマ・オブジェクト(ユーザーが作成した構成を保存および復元する)へのインタフェースを通じてタスクを実行します。

IO)の使用 3-1

Page 52: Oracle Configuration Interface Objeഀ挀瓿ࠀ䌀䤀俿ক譶 …Oracle Configuration Interface Object(CIO) 開発者ガイド リリース11i 2003 年2 月 部品番号:J06438-02

CIO のランタイム・ノード・インタフェース

Oracle Configuration Interface Object は Java で記述されており、Java パッケージのセットとして実装されています。インポートする必要があるパブリック・パッケージは次の 1 つのみです。

oracle.apps.cz.cio

3.1.2 CIO と関数コンパニオンと関数コンパニオンと関数コンパニオンと関数コンパニオン関数コンパニオンは CIO の Java クライアントです。

関数コンパニオンは、ランタイム Oracle Configurator から CIO を介して起動されます。また、関数コンパニオンは CIO をコールして実行中のモデルから情報を取得します。CIO はアクティブ・モデル用のブローカのようなもので、双方向に情報を受け渡します。関数コンパニオンを記述するプログラマは、CIO の使用方法を理解する必要があります。

関数コンパニオンはそれぞれが 1 つのオブジェクト・クラスです。 関数コンパニオンに関連付けられたモデル内のコンポーネント・インスタンスごとに、CIO によってこのクラスのインスタンスが作成されます。

3.2 CIO のランタイム・ノード・インタフェースのランタイム・ノード・インタフェースのランタイム・ノード・インタフェースのランタイム・ノード・インタフェースCIO を使用してプログラムを作成するときは、CIO(3-5 ページの 3.3 項「CIO の初期化」を参照)と Configuration(3-7 ページの 3.4.1 項「構成の作成と削除」を参照)のインスタンスのみを作成します。 次に、3-3 ページの表 3-1 にリストされているパブリック・インタフェースを使用して、CIOと Configurationのインスタンスによって作成されたランタイム・ノード・オブジェクトのフィールドにアクセスします。 CIOと Configurationは別にして、プログラム・コードからこのパブリック・ランタイム・ノードのインタフェース・オブジェクトのみを参照するようにします。 ランタイム・ノードのインタフェースを実装する必要はありません。ランタイム・ノード・オブジェクトへの参照としてのみそれらを使用します。

注意注意注意注意 : このマニュアルに記載されているクラス、メソッドおよびプロパティの参照はすべて、パッケージ oracle.apps.cz.cioに関係しています。また、特に注記されていない限り、すべてのコード例は Java で記述されています。

注意注意注意注意 : Java では、インタフェースとは、プログラマがより柔軟にクラスの内部的な詳細を実装できるようにする特殊な型です。技術的には、インタフェースはメソッド定義の名前付きコレクションであり、実装を持ちません。たとえば CIO では、IRuntimeNodeという名前のインタフェースは、RuntimeNodeという名前のクラスで実際に実装されたメソッドを指定します。

3-2 Oracle Configuration Interface Object(CIO)開発者ガイド

Page 53: Oracle Configuration Interface Objeഀ挀瓿ࠀ䌀䤀俿ক譶 …Oracle Configuration Interface Object(CIO) 開発者ガイド リリース11i 2003 年2 月 部品番号:J06438-02

CIO のランタイム・ノード・インタフェース

これらのインタフェースはすべて、Java パッケージ oracle.apps.cz.cioで定義されています。

表表表表 3-1 CIO のランタイム・ノードのインタフェースのランタイム・ノードのインタフェースのランタイム・ノードのインタフェースのランタイム・ノードのインタフェース

インタフェースインタフェースインタフェースインタフェース 実装しているクラスの役割実装しているクラスの役割実装しているクラスの役割実装しているクラスの役割

コンポーネント コンポーネントのインタフェース。

IAtp ATP 計算が可能なオブジェクトによって実装されます。

IBomItem 選択可能なすべての BOM 品目によって実装されます。

IBasicPrice 価格設定可能なオブジェクトによって実装されます。

IBasicPricingEngine 価格設定のサポートが必要なすべてのユーザーによって実装されます。

IBomItem 選択可能なすべての BOM 品目によって実装されます。

ICompSetEventListener 追加されたコンポーネントの検索を必要とするオブジェクトによって実装されます。

IConfigEventListener 追加されたコンポーネントの検索を必要とするオブジェクトによって実装されます。 このリスナー・メソッド

は、関数コンパニオンが初期化された後、ユーザーの対話操作の結果としてコールされます。 このクラスは副作

用(モデルのその他のノードを変更する機能)を提供しません。

ICount 整数のカウントが関連付けられたオブジェクトによって実装されます。

IDecimal 少数値を取得および設定できるオブジェクトによって実装されます。

IDecimalMinMax 小数の 小値と 大値を持つオブジェクトによって実装されます。

IFunctionalCompanion 構成モデルにプログラム的機能を組み込む目的でコンポーネントに連結された関数コンパニオン・オブジェクトによって実装されます。

IInteger 整数値を持つオブジェクトによって実装されます。

IIntegerMinMax 整数の 小値と 大値を持つオブジェクトによって実装されます。

IOption オプションとして機能するオブジェクトによって実装されます。オプションの定義上の特性は、選択および選択解除できることです。

Configuration Interface Object(CIO)の使用 3-3

Page 54: Oracle Configuration Interface Objeഀ挀瓿ࠀ䌀䤀俿ক譶 …Oracle Configuration Interface Object(CIO) 開発者ガイド リリース11i 2003 年2 月 部品番号:J06438-02

CIO のランタイム・ノード・インタフェース

IOptionFeature 選択可能なオプションを含むオブジェクトによって実装されます。このインタフェースは、オプションを選択または選択解除するメカニズムと現在選択されているオプションを判断するメカニズムを提供します。

IPrice 価格設定可能なオブジェクトによって実装されます。

IPricedConfiguration IPricedConfiguration は、Java 価格設定顧客により実装

された IBasicPricingEngine を初期化します。

IReadOnlyDecimal 小数値を持つオブジェクトによって実装されます。

IRuntimeNode ランタイム構成ツリー内のすべてのオブジェクトによって実装されます。このインタフェースは、ランタイム構成ツリー内のすべてのノード、たとえば、コンポーネント、フィーチャ、オプション、合計およびリソースに共通の動作を実装します。

IState 論理状態を持つオブジェクトによって実装されます。このインタフェースには、入力状態のセット(オブジェクトの新しい状態の指定に使用される)、出力状態のセット(その状態にあるオブジェクトの問合せ時に戻される)およびオブジェクトの状態を取得、設定するメソッドのセットが含まれます。

IText テキスト値を持つオブジェクトによって実装されます。

IUserInterface 関数コンパニオンのユーザー・インタフェースへのアクセスを可能にするアプリケーションによって実装されます。

IUserInterfaceControl Oracle Configurator のエンド・ユーザーに表示されるコ

ントロールを表すユーザー・インタフェース・オブジェクトによって実装されます。

IUserInterfaceEvent ユーザー・インタフェースのイベントを表すユーザー・インタフェース・オブジェクトによって実装されます。

IUserInterfaceEventListener ユーザー・インタフェースのイベントを処理するユーザー・インタフェース・オブジェクトによって実装されます。

IUserInterfaceImage イメージと対話するために関数コンパニオンで必要とされる機能を提供するユーザー・インタフェース・オブジェクトによって実装されます。

IUserInterfaceLabel ラベルと対話するために関数コンパニオンで必要とされる機能を提供するユーザー・インタフェース・オブジェクトによって実装されます。

表表表表 3-1 CIO のランタイム・ノードのインタフェース(続き)のランタイム・ノードのインタフェース(続き)のランタイム・ノードのインタフェース(続き)のランタイム・ノードのインタフェース(続き)

インタフェースインタフェースインタフェースインタフェース 実装しているクラスの役割実装しているクラスの役割実装しているクラスの役割実装しているクラスの役割

3-4 Oracle Configuration Interface Object(CIO)開発者ガイド

Page 55: Oracle Configuration Interface Objeഀ挀瓿ࠀ䌀䤀俿ক譶 …Oracle Configuration Interface Object(CIO) 開発者ガイド リリース11i 2003 年2 月 部品番号:J06438-02

CIO の初期化

CIO インタフェースの基礎となる機能は、oracle.apps.cz.cioに含まれる他のクラスで実装されており、これは Oracle の改訂によって更新されます。このインタフェース / 実装アーキテクチャにより、インタフェースの変更が発生しないため、コードが改訂の影響を受けません。

3.3 CIO の初期化の初期化の初期化の初期化アプリケーションで CIO の機能を使用するには、CIO を初期化し、JDBC ドライバを使用して Oracle Configurator スキーマに接続する必要があります。CIO はこの接続を使用して、モデル構造、構成ルールおよびユーザー・インタフェースに関するデータを取得し、保存します。

カスタム・ユーザー・インタフェースで CIO を使用する場合は、CIO を初期化する必要があります。

1. 必要なパッケージをインポートします。

import java.sql.Connection;import java.sql.DriverManager;import java.sql.SQLException;

import oracle.apps.cz.cio.*;import oracle.apps.cz.common.*;

IUserInterfaceNode 関数コンパニオンとの対話を可能にするユーザー・インタフェース・オブジェクトによって実装されます。

IUserInterfaceScreen 画面と対話するために関数コンパニオンで必要とされ

る機能を提供するユーザー・インタフェース・オブジェクトによって実装されます。

IValidatorChange このインタフェースは、あらゆる種類の DeltaValidator変更を表すために使用されます。

注意注意注意注意 : ランタイム Oracle Configurator から関数コンパニオンを実行する場合(または、Oracle Configurator Developer の「Test」ボタンを使用して関数コンパニオンをテストする場合)、この初期化と接続はアプリケーションによって自動的に処理されます。CIO を初期化するために独自のコードを記述する必要はありません。

表表表表 3-1 CIO のランタイム・ノードのインタフェース(続き)のランタイム・ノードのインタフェース(続き)のランタイム・ノードのインタフェース(続き)のランタイム・ノードのインタフェース(続き)

インタフェースインタフェースインタフェースインタフェース 実装しているクラスの役割実装しているクラスの役割実装しているクラスの役割実装しているクラスの役割

Configuration Interface Object(CIO)の使用 3-5

Page 56: Oracle Configuration Interface Objeഀ挀瓿ࠀ䌀䤀俿ক譶 …Oracle Configuration Interface Object(CIO) 開発者ガイド リリース11i 2003 年2 月 部品番号:J06438-02

CIO の初期化

2. インストール済のデータベース・ドライバをロードします。 たとえば、次のいずれかをロードします。

Class.forName("com.ms.jdbc.odbc.JdbcOdbcDriver");Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");Class.forName("oracle.jdbc.driver.OracleDriver");

3. コンテキスト・オブジェクトを作成し、データベースの URL、現行ユーザーのユーザーID とパスワード、データベースの所有者など、データベースへの接続に必要な情報を渡します。 データベース接続はコンテキスト・オブジェクトによって管理されます。java.sql.DriverManager.getConnectionなどを使用して接続オブジェクトを別に作成する必要はありません。

contextObject = new ("jdbc:subprotocol:datasource", "userID", "password", "schemaOwner");

4. CIO オブジェクトを作成します。

CIO cioObject = new CIO();

例 3-1 は、手順 1 から 4 までをどのように組み合せればよいかを示しています。CIO の初期化の詳細な例は、5-1 ページの 5.1 項「CIO の初期化」を参照してください。

例例例例 3-1 CIO の初期化(簡単な例)の初期化(簡単な例)の初期化(簡単な例)の初期化(簡単な例)

import java.sql.Connection;import java.sql.DriverManager;import java.sql.SQLException;

import oracle.apps.cz.cio.*;import oracle.apps.cz.common.*;

public class InitCIO { private void InitializeCIO() throws SQLException { CIO cio; context; try{Class.forName("com.ms.jdbc.odbc.JdbcOdbcDriver");} catch (ClassNotFoundException c){System.out.println(c);}context = new ("jdbc:oracle:thin:@server01:1521:sid01", "applsyspub", "pub", "apps");cio = new CIO(); }}

3-6 Oracle Configuration Interface Object(CIO)開発者ガイド

Page 57: Oracle Configuration Interface Objeഀ挀瓿ࠀ䌀䤀俿ক譶 …Oracle Configuration Interface Object(CIO) 開発者ガイド リリース11i 2003 年2 月 部品番号:J06438-02

構成へのアクセス

3.4 構成へのアクセス構成へのアクセス構成へのアクセス構成へのアクセス構成オブジェクト oracle.apps.cz.cio.Configurationは完全な構成を表します。CIO を使用して、1 つのセッション内で複数の構成を処理できます。

構成は、構成オブジェクトを介してデータのやりとりを行います。構成オブジェクトは、内部の CIO、ルート・コンポーネント、プロジェクト ID および現在の検証エラーのコレクションへのアクセス、ランタイム ID に基づくランタイム・ノードへのアクセス、および構成が完全に満たされているかを示す指標へのアクセスをサポートします。また、構成レベルの論理トランザクションを開始、終了およびロールバックするメソッドもあります。論理トランザクションとは論理的一貫性を維持するためのトランザクションであり、データベース・トランザクションではありません。3-26 ページの 3.7 項「論理トランザクション」を参照してください。

3.4.1 構成の作成と削除構成の作成と削除構成の作成と削除構成の作成と削除構成オブジェクトを作成するには、CIO.createConfiguration()を使用します。構成オブジェクトは構成への 上位のエントリ・ポイントです。構成の作成方法は要件に応じて異なります。

� Oracle Configurator Developer で指定したプロジェクトの名前を使用して構成を作成する場合は、次の引数セットを使用します。

createConfiguration(java.lang.String projectName, oracle.apps.fnd.common.Context ctx)

� モデルのルート・ノードの ID を使用して構成を作成する場合は、次の引数セットを使用します。

createConfiguration(int rootNodeID, oracle.apps.fnd.common.Context ctx)

3-8 ページの例 3-2「新しい構成オブジェクトの作成」を参照してください。

ルート・ノード ID を確認するには、Oracle Configurator スキーマに対して問合せを実行します。Oracle Configurator スキーマについては、オラクル社のカスタマ・サポートWeb サイトであるオラクル・サポート・ホームページの eTRM を参照してください。

http://support.oracle.co.jp

たとえば、次のような問合せを使用できます。

SELECT PS_NODE_ID FROM CZ_PS_NODES WHERE NAME = 'CN9744';

どちらの方法で構成オブジェクトを作成する場合でも、3-5 ページの 3.3 項「CIO の初期化」の手順 3 で説明されているデータベース・コンテキスト・オブジェクトが必要です。

Configuration Interface Object(CIO)の使用 3-7

Page 58: Oracle Configuration Interface Objeഀ挀瓿ࠀ䌀䤀俿ক譶 …Oracle Configuration Interface Object(CIO) 開発者ガイド リリース11i 2003 年2 月 部品番号:J06438-02

構成へのアクセス

例例例例 3-2 新しい構成オブジェクトの作成新しい構成オブジェクトの作成新しい構成オブジェクトの作成新しい構成オブジェクトの作成

...// create the database context objectctx = new ("jdbc:oracle:thin:@server01:1521:sid01", "applsyspub", "pub", "apps");

// create Configuration using ID of root node of モデル and Contextcfg_id = createConfiguration(1221, ctx); ...

� ランタイム構造と、構成に関連したメモリーをすべて削除するには、CIO.closeConfiguration()を使用します。

� 構成を作成した CIO を取得するには、Configuration.getCIO()を使用します。

3.4.2 構成の保存と復元構成の保存と復元構成の保存と復元構成の保存と復元� 新しい構成オブジェクト全体を Oracle Configurator スキーマに保存するには、

Configuration.saveNew()を使用します。

� saveNew()を使用して構成オブジェクトを作成後、またはCIO.restoreConfiguration()を使用して構成オブジェクトを復元後にそれらのオブジェクトに対して行った変更を保存するには、Configuration.save()を使用します。

� Oracle Configurator スキーマから構成オブジェクトを復元するには、CIO.restoreConfiguration()を使用します。

� 構成を復元する場合、復元されるのはモデルの 終的な(復元前の)状態ではなく、モデルへの構成の入力のみです。構成を復元すると、復元された入力がモデルに再アサーションされ、構成が生成されます。 したがって、通常、構成の復元は構成の作成よりも高速ということはなく、場合によっては構成の作成よりも時間がかかることがあります。

� 復元した構成オブジェクトの新しい改訂を保存するには、Configuration.saveNewRev()を使用します。

� すでにデータベースに保存されている別の構成に現在の構成オブジェクトを上書き保存するには、Configuration.saveAs(configHeaderID, revNumber)を使用します。 configHeaderIDと revNumberを使用して構成ヘッダー・オブジェクトをオープンし、構成を置換します。

注意注意注意注意 : 論理トランザクション中は構成オブジェクトを保存しないでください(3-26 ページの 3.7 項「論理トランザクション」を参照)。トランザクションがコミットされるまで利用できない一部の検証メッセージが失われる場合があります。

3-8 Oracle Configuration Interface Object(CIO)開発者ガイド

Page 59: Oracle Configuration Interface Objeഀ挀瓿ࠀ䌀䤀俿ক譶 …Oracle Configuration Interface Object(CIO) 開発者ガイド リリース11i 2003 年2 月 部品番号:J06438-02

構成へのアクセス

� カスタム・ユーザー・インタフェースで CIO を使用する場合は、Configuration.restartConfiguration()を使用して、構成されるオブジェクトを破棄せずに現行の構成インスタンスを再起動できます。

� 構成はすでに検証されているため、再起動後に構成を再検証する必要はなく、処理時間を大幅に節約できます。

� restartConfigurationメソッドは、Oracle Configurator Developer(DHTML UI など)で生成されたユーザー・インタフェースには使用できません。

3.4.3 構成の自動処理構成の自動処理構成の自動処理構成の自動処理構成が処理されるたびに実行される動作を、次のような方法で定義できます。

� 新規作成の構成の有効化のたびに実行される動作を定義するには、クラスAutoFunctionalCompanionの onNew()メソッドをオーバーライドします。

� 構成の保存前または復元後に実行される動作を定義するには、クラスAutoFunctionalCompanionの onSave()メソッドまたは onRestore()メソッドをオーバーライドします。 onSave()メソッドでは保存される構成の有効性が Oracle Configurator UI サーバーを使用して検証されるため、onSave()メソッドは、Oracle Configurator Developer で生成されたユーザー・インタフェースとのみ使用する必要があります。

� 「Done」ボタン(構成が有効な場合に保存するボタン)で構成を終了した後に実行される動作を定義するには、クラス AutoFunctionalCompanionの afterSave()メソッドをオーバーライドします。

� onNew()メソッドの使用に関する説明は、3-35 ページの 3.10.3 項「初期要求」も参照してください。

Oracle Configurator Developer では、クラス AutoFunctionalCompanionを拡張する関数コンパニオンをモデルのルート・ノードに関連付け、「Type」で「Event-Driven」を選択する必要があります。詳細は、1-11 ページの 1.4.1 項「関数コンパニオンとモデルの関連付け」を参照してください。

ランタイム Oracle Configurator 内で、構成が作成、復元または保存されたとき、あるいは構成が「Done」ボタンにより終了された後、関数コンパニオンが実行されます。 関数コンパニオンが実行されると、起動するメソッドが CIO によって自動的に決定されます。

注意注意注意注意 : クラス AutoFunctionalCompanionを拡張する関数コンパニオンと、FunctionalCompanionを拡張して autoConfigure()をオーバーライドする自動構成関数コンパニオンとを混同しないでください。 3-41 ページの 3.12.2 項を参照してください。

Configuration Interface Object(CIO)の使用 3-9

Page 60: Oracle Configuration Interface Objeഀ挀瓿ࠀ䌀䤀俿ক譶 …Oracle Configuration Interface Object(CIO) 開発者ガイド リリース11i 2003 年2 月 部品番号:J06438-02

実行時のモデル・ノードへのアクセス

3.4.4 構成パラメータへのアクセス構成パラメータへのアクセス構成パラメータへのアクセス構成パラメータへのアクセスOracle Configurator を Web 上で使用している場合は、CIO を使用して、アプリケーションから構成モデルに渡された構成入力(初期化パラメータ)のリストを関数コンパニオンに取り込むことができます。

Configuration.getInitParameters()をコールする関数コンパニオンを作成します。このメソッドは、NameValuePairSetオブジェクトを戻します。 このオブジェクトには、アプリケーションから Oracle Configurator サーブレットに送られた初期化メッセージが処理されたときに、Oracle ConfiguratorUI サーバーによって保存されたパラメータ値がすべて含まれています。

詳細は、『Oracle Configurator インテグレーション・ガイド』を参照してください。

3.5 実行時のモデル・ノードへのアクセス実行時のモデル・ノードへのアクセス実行時のモデル・ノードへのアクセス実行時のモデル・ノードへのアクセスルート・コンポーネントおよび基礎となるランタイム・モデル・ツリー内の他の全ノードには、IRuntimeNodeインタフェースが実装されています。このインタフェースを使用すると、様々な情報を取得できます。たとえば、ノードのタイプ(ノード・タイプ定数のセットに基づく)、ノードの名前、データベース ID、このランタイム・ノードをインスタンスとして持つデータベース・ノード、この特定の CIO で作成されたノード全体の中でこのノードに一意に割り当てられたランタイム ID、親ノード(ルート・コンポーネントの場合はNULL)、子ノードのコレクション(空の場合もある)、ランタイム・ツリーのこの部分が満たされているかを示す情報などを取得できます。3-23 ページの 3.6 項「IRuntimeNode によるイントロスペクション」を参照してください。

ノードが属している構成を取得するには、IRuntimeNode.getConfiguration()を使用します。

3.5.1 モデルモデルモデルモデル変更の機会変更の機会変更の機会変更の機会 モデルをどの時点で変更できるかについて、いくつかの制約があります。

� 通常、このような変更を行うには、自動構成関数コンパニオンを使用します。そのために、IFunctionalCompanion.autoConfigure()メソッドの本体で変更処理を実行します。エンド・ユーザーがユーザー・インタフェースのボタンをクリックすると、自動構成コンパニオンが起動します。3-41 ページの 3.12.2 項「autoConfigure() インタフェース・メソッド」を参照してください。

� 構成インスタンスが作成、復元または保存されたときにモデルを自動的に変更する場合(たとえば、構成セッションが開始または終了したときになんらかの選択を実行する場合など)は、クラス AutoFunctionalCompanionのメソッドを使用する必要があります。

� 構成が作成されたときに論理要求のセットを適用する場合は、初期要求のセットを定義します。3-35 ページの 3.10.3 項「初期要求」を参照してください。

3-10 Oracle Configuration Interface Object(CIO)開発者ガイド

Page 61: Oracle Configuration Interface Objeഀ挀瓿ࠀ䌀䤀俿ক譶 …Oracle Configuration Interface Object(CIO) 開発者ガイド リリース11i 2003 年2 月 部品番号:J06438-02

実行時のモデル・ノードへのアクセス

� 初期化関数コンパニオン(つまり、IFunctionalCompanion.initialize()メソッド内部)では、モデルを変更しないでください。3-40 ページの 3.12.1 項「initialize() インタフェース・メソッド」を参照してください。

� 検証関数コンパニオン(つまり、IFunctionalCompanion.validate()メソッド内部)では、モデルを変更しないでください。3-42 ページの 3.12.3 項「validate() インタフェース・メソッド」を参照してください。

関数コンパニオンによるモデルの変更は、モデルへの副作用副作用副作用副作用とも呼ばれます。

3.5.2 コンポーネントへのアクセスコンポーネントへのアクセスコンポーネントへのアクセスコンポーネントへのアクセスCIO は、コンポーネントを、一緒に使用される 2 つの構造で表します。 コンポーネントの個々のインスタンスは、インタフェース Componentにより表されます。 指定したコンポーネントのこれらのインスタンス・セットは、クラス ComponentSetのインスタンスにより表されます。 どちらの構造も、インタフェース IRuntimeNodeから継承します。

ランタイム Oracle Configurator のユーザー・インタフェースでは、画面は Componentノードと同等です。 このノードの親には、Componentノードのインスタンスを追加するボタンが含まれます。 これは、ComponentSetによるインスタンスの追加と同等です。

Oracle Configurator Developer では、ComponentSetに対応する要素はありませんが、コンポーネントを定義する場合、「Instances」属性を設定して、実行時に追加できるインスタンスの 小数および 大数を決定できます。

3.5.2.1 コンポーネントの関数コンパニオンの取得コンポーネントの関数コンパニオンの取得コンポーネントの関数コンパニオンの取得コンポーネントの関数コンパニオンの取得コンポーネントに関連付けられているすべての関数コンパニオンを含むリストを取得するには、Component.getFunctionalCompanions()を使用します。 インスタンス化された各コンポーネントには、関連付けられた関数コンパニオンごとに独自のインスタンスがあります。1-3 ページの 1.1.2 項「関数コンパニオンに関する重要事項」を参照してください。

3.5.2.2 オプション・コンポーネントの追加と削除オプション・コンポーネントの追加と削除オプション・コンポーネントの追加と削除オプション・コンポーネントの追加と削除多くの場合、自動構成関数コンパニオンでコンポーネントを追加または削除することになります。3-41 ページの 3.12.2 項「autoConfigure() インタフェース・メソッド」を参照してください。

オプション・コンポーネントを追加するには、ComponentSet.add()を使用します。add()メソッドでは、コンポーネントの追加によって論理的矛盾が発生した場合に、LogicalException 例外をスローできます。

オプション・コンポーネントを削除するには、ComponentSet.delete()を使用します。

Configuration Interface Object(CIO)の使用 3-11

Page 62: Oracle Configuration Interface Objeഀ挀瓿ࠀ䌀䤀俿ক譶 …Oracle Configuration Interface Object(CIO) 開発者ガイド リリース11i 2003 年2 月 部品番号:J06438-02

実行時のモデル・ノードへのアクセス

3.5.2.3 オプション・コンポーネントの追加と削除における効率の考慮オプション・コンポーネントの追加と削除における効率の考慮オプション・コンポーネントの追加と削除における効率の考慮オプション・コンポーネントの追加と削除における効率の考慮事項事項事項事項この項では、オプション・コンポーネントの追加と削除の際に発生する可能性のあるパフォーマンス上の問題を説明し、一般的な解決方法を例で示します。

問題問題問題問題

ComponentSetのインスタンスの追加または削除は、パフォーマンスの面で非常に高コストになる場合があります。

� インスタンスを追加するには、以前のすべての要求を取り消し、その後要求を追加および再アサーションする必要があります。

� インスタンスの追加が特に高コストなのは、構成ルールにより設定されたデフォルト値が存在する場合です。 デフォルト・アサーションの取消しは、時間のかかる反復処理です。 Configurator Developer で設定された、フィーチャ、リソースおよび合計の初期値も、デフォルト値と見なされます。

� インスタンスの削除は非常に高コストな操作であり、関数コンパニオンでは同数のコンポーネントをコンポーネント・セットに追加し直す必要があるため、関数コンパニオン・イベント順序の 後では必要のない場合があります。

解決のガイドライン解決のガイドライン解決のガイドライン解決のガイドライン

これらのパフォーマンス上の問題を防ぐため、ComponentSetのインスタンスを追加する場合は、次のガイドラインに従ってください。

� インスタンスをすべて追加し終わるまで、ノードの状態または値の設定を遅延します。 できるだけ設定が少ないときにインスタンスを追加します。

� インスタンスを追加する前に、次のメソッドを使用してデフォルトを使用不可にします。

ConfigTransaction.setDefaults(false)

構成モデルに対する関数コンパニオンの副作用がすべて完了した後、次のメソッドでデフォルトを再度適用します。

ConfigTransaction.setDefaults(true)

� デフォルトの ON と OFF を切り替える構成ルールを定義します。 (たとえば、デフォルト関係を介して、ブール型フィーチャの初期 TRUE 値に依存して別のフィーチャのオプションを設定する論理ルールを定義します。) コンポーネントを追加する前にこのルールを使用してデフォルトを OFF にし、追加した後に再度このルールを使用してデフォルトを ON に戻します。

3-12 Oracle Configuration Interface Object(CIO)開発者ガイド

Page 63: Oracle Configuration Interface Objeഀ挀瓿ࠀ䌀䤀俿ক譶 …Oracle Configuration Interface Object(CIO) 開発者ガイド リリース11i 2003 年2 月 部品番号:J06438-02

実行時のモデル・ノードへのアクセス

� インスタンスを追加する前に、エンド・ユーザーが(「Auto-Configuration」ボタンをクリックするなどの方法で)関数コンパニオンをトリガーする前に実行したすべての要求をロールバックします。 ユーザーの要求を確実に正しく保持するには、要求を取り消す前にノードの状態または値を取得します。 インスタンスを追加した後、要求を再適用します。

� インスタンスの削除中に要求をすべて取り消した場合、ComponentSetにある子の数を計算し、「Feature」の値を設定しているコンポーネントの索引番号を追跡して、インスタンス化されたコンポーネントを再利用できます。 その後、再利用していないコンポーネントがあれば削除できます。

構造化の方法構造化の方法構造化の方法構造化の方法

前述のガイドラインを基にすると、自動構成関数コンパニオンのパフォーマンスを 適化するには、次の順序に従って構造化する方法があります。

1. デフォルトを使用不可にします。

2. 必要な値をすべて格納します。

3. すべての要求を取り消します。

4. コンポーネント・インスタンスを追加または再利用します。

5. 適用可能な要求を再アサーションします。

6. コンポーネント・インスタンスの値を設定します。

7. 余分なコンポーネント・インスタンスを削除します。

8. デフォルトを再適用します。

疑似コードの例疑似コードの例疑似コードの例疑似コードの例

特定数のオプション・コンポーネントのインスタンスを作成し、各インスタンスにフィーチャの値を設定する例を想定します。3-13 ページの例 3-3「アプローチ A」ではコンポーネントが作成され、次のコンポーネントが作成される前にフィーチャが設定されます。3-14ページの例 3-4「アプローチ B」では、コンポーネントがすべて作成された後、すべてのフィーチャが設定されます。

例例例例 3-3 アプローチアプローチアプローチアプローチ A

Add Component1 to ComponentSetSet Feature1 in Component1Set Feature2 in Component1Add Component2 to ComponentSetSet Feature3 in Component2...

Configuration Interface Object(CIO)の使用 3-13

Page 64: Oracle Configuration Interface Objeഀ挀瓿ࠀ䌀䤀俿ক譶 …Oracle Configuration Interface Object(CIO) 開発者ガイド リリース11i 2003 年2 月 部品番号:J06438-02

実行時のモデル・ノードへのアクセス

例例例例 3-4 アプローチアプローチアプローチアプローチ B

Add Component1 to ComponentSetAdd Component2 to ComponentSet

Set Feature1 in Component1Set Feature2 in Component1Set Feature3 in Component2...

アプローチ A では、3-12 ページの「問題」で特定されたパフォーマンス上のマイナスの影響を受けます。アプローチ B では、3-12 ページの「解決のガイドライン」で特定された原則を示します。アプローチ B では、ランタイム・パフォーマンスが大幅に向上します。

アプローチ A のパフォーマンスが低い理由を、3-14 ページの例 3-5「アプローチ A(詳細)」と 3-15 ページの例 3-6「アプローチ B(詳細)」を比較することで示しています。 ComponentSetインスタンスを追加するときに CIO で実行される必要がある操作は、太字太字太字太字で強調表示されています。アプローチ A(詳細)では、インスタンスを追加するごとにすべての操作が繰り返されるため、追加を重ねるたびに前回の追加よりも時間がかかります。合計処理時間は追加されるインスタンスの数に比例します。 追加されるインスタンスが多い場合は、影響が多大なものになります。アプローチ B(詳細)では、実行される操作は 1 度であり、多くのインスタンスを追加するよりも影響がかなり小さくなります。

例例例例 3-5 アプローチアプローチアプローチアプローチ A(詳細)(詳細)(詳細)(詳細)

Retract defaultsRetract requestsAdd Component1 to ComponentSetAssert requestsAssert defaultsSet Feature1 in Component1Set Feature2 in Component1...Retract defaultsRetract requestsAdd Component2 to ComponentSetAssert requestsAssert defaultsSet Feature3 in Component2...

3-14 Oracle Configuration Interface Object(CIO)開発者ガイド

Page 65: Oracle Configuration Interface Objeഀ挀瓿ࠀ䌀䤀俿ক譶 …Oracle Configuration Interface Object(CIO) 開発者ガイド リリース11i 2003 年2 月 部品番号:J06438-02

実行時のモデル・ノードへのアクセス

例例例例 3-6 アプローチアプローチアプローチアプローチ B(詳細)(詳細)(詳細)(詳細)

Retract defaultsRetract requestsAdd Component1 to ComponentSetAdd Component2 to ComponentSet...Assert requestsAssert defaultsSet Feature1 in Component1Set Feature2 in Component1Set Feature3 in Component2...

コード例コード例コード例コード例

3-15 ページの図 3-1 に示した単純なランタイム・モデル構造を見てみます。 実行時、このモデルには ComponentSetオブジェクトおよび複数の BooleanFeatureオブジェクトが含まれています。

図図図図 3-1 コンポーネントの追加のモデル構造コンポーネントの追加のモデル構造コンポーネントの追加のモデル構造コンポーネントの追加のモデル構造

ここでは、ブール型フィーチャの状態を設定する自動構成関数コンパニオンを、3-15 ページの例 3-7「フィーチャの設定(低パフォーマンス・コード)」に示すとおりに記述したと想定しています。

例例例例 3-7 フィーチャの設定(低パフォーマンス・コード)フィーチャの設定(低パフォーマンス・コード)フィーチャの設定(低パフォーマンス・コード)フィーチャの設定(低パフォーマンス・コード)

...

for(int i=0; i<100; i++) { comp = Comp1.add(); ((BooleanFeature)comp.getChildByName("BoolFeat1")).setState(IState.TRUE); ((BooleanFeature)comp.getChildByName("BoolFeat2")).setState(IState.FALSE); ((BooleanFeature)comp.getChildByName("BoolFeat3")).setState(IState.TRUE);}...

Configuration Interface Object(CIO)の使用 3-15

Page 66: Oracle Configuration Interface Objeഀ挀瓿ࠀ䌀䤀俿ক譶 …Oracle Configuration Interface Object(CIO) 開発者ガイド リリース11i 2003 年2 月 部品番号:J06438-02

実行時のモデル・ノードへのアクセス

3-16 ページの例 3-8「フィーチャの設定(高パフォーマンス・コード)」に示すとおりにコードを変更することで、この操作のパフォーマンスを大幅に向上できます。 差異は太字太字太字太字で強調表示されています。

例例例例 3-8 フィーチャの設定(高パフォーマンス・コード)フィーチャの設定(高パフォーマンス・コード)フィーチャの設定(高パフォーマンス・コード)フィーチャの設定(高パフォーマンス・コード)

...for(int i=0; i<100; i++){ comp[i] = Comp1.add(); }for(int i=0; i<100; i++){ ((BooleanFeature)comp[i].getChildByName("BoolFeat1")).setState(IState.TRUE); ((BooleanFeature)comp[i].getChildByName("BoolFeat2")).setState(IState.FALSE); ((BooleanFeature)comp[i].getChildByName("BoolFeat3")).setState(IState.TRUE);}...

例 3-8 では、ComponentSetインスタンスをすべて追加してから、BooleanFeature値をすべて設定することで、パフォーマンスの向上を達成しています。 この例は、3-12 ページの

「解決のガイドライン」で特定された原則、および 3-13 ページの「疑似コードの例」のアプローチ B に示した例に従っています。

3.5.3 フィーチャへのアクセスフィーチャへのアクセスフィーチャへのアクセスフィーチャへのアクセスフィーチャには、いくつかの特化したタイプがあります。フィーチャの各タイプはIRuntimeNodeインタフェースをサポートするので、ランタイム・ノードの処理に一般的なメソッドを使用できます(3-23 ページの 3.6 項「IRuntimeNode によるイントロスペクション」を参照)。また、各タイプは、用途に合せて特化したメソッドを持つ独自のインタフェースをサポートしています。

� TextFeature は文字列値をとります。

� BooleanFeature はブール値(TRUE/FALSE)を取ります。

� OptionFeature は論理値をとり、子としてオプションのセットを持ちます。 フィーチャの選択可能な子オプションの 小数と 大数を確認するには、IOptionFeatureのメソッドである getMinSelected()と getMaxSelected()を使用します。 これらのメソッドを使用する場合は、まず hasMinSelected()または hasMaxSelected()を使用して、オプションが 小数と 大数を持つかどうかを確認します。 areOptionsCounted()を使用して、フィーチャにカウント済オプションがあるかどうかを確認できます。

� DecimalFeature は浮動小数点値をとります。

� IntegerFeature は整数の数値をとります。正、負またはゼロの値をとることができます。

3-16 Oracle Configuration Interface Object(CIO)開発者ガイド

Page 67: Oracle Configuration Interface Objeഀ挀瓿ࠀ䌀䤀俿ক譶 …Oracle Configuration Interface Object(CIO) 開発者ガイド リリース11i 2003 年2 月 部品番号:J06438-02

実行時のモデル・ノードへのアクセス

� CountFeature は、ブール値と、関連付けられた整数値を持つ数値カウントの両方を取ります。カウントの 小値は必ず 0 以上になります。 CountFeatureオブジェクトのブール値は、そのメソッド hasMax()および hasMin()によって戻されます。 CountFeatures は、OptionFeature(値がオプションのリストであるフィーチャ)のカウント済オプションと同様の動作をします。

3.5.4 論理状態の取得と設定論理状態の取得と設定論理状態の取得と設定論理状態の取得と設定論理状態を持つオブジェクトと対話するには、IStateインタフェースを実装します。このインタフェースには次のものが含まれます。

� 表 3-2 にリストされている、入力状態のセット。オブジェクトの新しい状態の指定に使用します。

注意注意注意注意 : Oracle Configurator Developer で整数フィーチャの 小カウントをゼロ以上に設定した場合、実行時に CIO でこのフィーチャがCountFeature オブジェクトとして取り扱われます。 小カウントをゼロより小さいと設定した場合、CIO でこのフィーチャが IntegerFeature オブジェクトとして取り扱われます。 ランタイム・ノードを処理する場合は、この違いを考慮して、必要なオブジェクト・セットを処理していることを確認する必要があります。 たとえば、IRuntimeNode.getChildrenByType()を使用して IntegerFeature オブジェクトを取得する場合、IRuntimeNode.COUNT_FEATURE引数および IRuntimeNode.INTEGER_FEATURE引数にそれぞれ 1 つずつ、合計 2つのコールを実行する必要があります。

表表表表 3-2 入力状態入力状態入力状態入力状態

状態状態状態状態 摘要摘要摘要摘要

FALSE オブジェクトを FALSE に設定するための入力状態。

TRUE オブジェクトを TRUE に設定するための入力状態。

TOGGLE FALSE または不明のオブジェクト状態を TRUE に切り替え、TRUE のオブ

ジェクト状態を不明または FALSE に切り替えるための入力状態。

Configuration Interface Object(CIO)の使用 3-17

Page 68: Oracle Configuration Interface Objeഀ挀瓿ࠀ䌀䤀俿ক譶 …Oracle Configuration Interface Object(CIO) 開発者ガイド リリース11i 2003 年2 月 部品番号:J06438-02

実行時のモデル・ノードへのアクセス

� 表 3-3 にリストされている、出力状態のセット。オブジェクトの状態を問い合せたときに戻されます。

� 表 3-4 にリストされている、オブジェクトの状態を取得および設定するためのメソッドのセット。

表表表表 3-3 出力状態出力状態出力状態出力状態

状態状態状態状態 摘要摘要摘要摘要

LFALSE 論理 FALSE 出力状態。ルールの結果として状態が FALSE であることを示しま

す。

LTRUE 論理 TRUE 出力状態。ルールの結果として状態が TRUE であることを示しま

す。

UFALSE ユーザー FALSE 出力状態。ユーザーがこのオブジェクトを FALSE に設定した

ことを示します。

UNKNOWN 不明の出力状態。状態が未設定であることを示します。

UTRUE ユーザー TRUE 出力状態。ユーザーがこのオブジェクトを TRUE に設定した

ことを示します。

表表表表 3-4 状態を取得および設定するためのメソッド状態を取得および設定するためのメソッド状態を取得および設定するためのメソッド状態を取得および設定するためのメソッド

メソッドメソッドメソッドメソッド 説明説明説明説明

getState() このオブジェクトの現在の論理状態を取得します。

setState() このオブジェクトの現在の論理状態を変更します。

unset() このノードに対するユーザーの選択を取り消します。

isFalse() このフィーチャが FALSE 状態かどうかを示します。

isTrue() このフィーチャが TRUE 状態かどうかを示します。

isUser() このフィーチャがユーザー指定の状態かどうかを示します。

isLogic() このフィーチャが論理的に指定された状態かどうかを示します。

isUnknown() このフィーチャが不明または既知のいずれの状態であるかを示し

ます。

3-18 Oracle Configuration Interface Object(CIO)開発者ガイド

Page 69: Oracle Configuration Interface Objeഀ挀瓿ࠀ䌀䤀俿ক譶 …Oracle Configuration Interface Object(CIO) 開発者ガイド リリース11i 2003 年2 月 部品番号:J06438-02

実行時のモデル・ノードへのアクセス

� 例 3-9 のコード・フラグメントでは、getState()を UTRUEとともに使用しています。ここでは、オプション・ノードの状態がユーザーユーザーユーザーユーザー TRUE かどうか、つまりオプションがエンド・ユーザーによって選択されたかどうかをテストしています。

例例例例 3-9 ノードの状態の取得ノードの状態の取得ノードの状態の取得ノードの状態の取得

//get the necessary components from the configurationbaseComponent = (oracle.apps.cz.cio.Component)comp_node.getChildByName("Component-1"); of = (OptionFeature)baseComponent.getChildByName("Feature-1"); op = (Option)of.getChildByName("Option-1"); intFeat = (IntegerFeature)baseComponent.getChildByName("IF-1"); //check if the option is set to UTRUE. If so, set the Integer value to 5 if( op.getState() == IState.UTRUE ) intFeat.setIntValue(5); }

� isUnknown()の使用は、ノードが IntegerNodeや ReadOnlyDecimalNodeなどのクラスにキャストされる場合に重要です。 ノードの数値がゼロの場合、値ゼロは UNKNOWN

(ユーザーが値を設定していない場合)または KNOWN(ユーザーが値をゼロに設定している場合)のいずれを意味する可能性もあります。

� 例 3-10 のコード・フラグメントでは、setState()を TOGGLEとともに使用しています。ここでは、モデル・ツリー内で選択されている品目の状態を切り替えています。

例例例例 3-10 ノードの状態の設定ノードの状態の設定ノードの状態の設定ノードの状態の設定

private void toggleSelectedItem() { IState node = (IState)tree.getLastSelectedPathComponent(); try { node.setState(IState.TOGGLE); } catch (LogicalException le) {} catch (TransactionException te) {} tree.repaint();

ユーザー・インタフェースを処理する場合を除いては、TOGGLE状態を使用する必要はありません。(2-1 ページの 2.1 項「ユーザー・インタフェース要素の制御」を参照)。バッチ検証を使用する場合など、インタフェースの結果をレンダリングする必要がない場合は、次のように状態を直接設定するほうが効率的です。

node.setState(IState.TRUE);...node.setState(IState.FALSE);

Configuration Interface Object(CIO)の使用 3-19

Page 70: Oracle Configuration Interface Objeഀ挀瓿ࠀ䌀䤀俿ক譶 …Oracle Configuration Interface Object(CIO) 開発者ガイド リリース11i 2003 年2 月 部品番号:J06438-02

実行時のモデル・ノードへのアクセス

TOGGLE を使用する必要がない場合は、デフォルト設定を OFF にしないでください。OFF にすると、TOGGLE の適切な設定状態を判断するために CIO でデフォルト設定をON にする必要があります。 この操作により、パフォーマンスが低下します。

� RuntimeNode の状態を UNKNOWNに設定しようとして矛盾が発生した場合、CIO によって無効化できない LogicalException がスローされます。 たとえば、次のようなモデル構造があるとします。

M |_A (Boolean, UNKNOWN) |_B (Boolean, UNKNOWN)

次のような論理ルールがあるとします。

A Requires B

A を選択すると、この論理ルールにより B が LTRUE となります。 B を UNKNOWN に設定しようとすると、次のように無効化できない論理的矛盾が発生します。

A.setState(IState.UTRUE); ...try { B.setState(IState.UNKNOWN); } catch (LogicalException le) { //le is not overridable

� ノードの状態が TRUE かどうかを確認する場合(かつ、UTRUEと LTRUEの違いは重要でない場合)、StateNode.isTrueState(int state)をコールする方法が適しています。

これに対して、ノードの状態を次のようにテストすると仮定します。

(state == IState.TRUE)

この結果、状態が UTRUE の場合のみ TRUE が戻されますが、状態が LTRUE の場合には TRUE が戻されません。

3.5.5 数値の取得と設定数値の取得と設定数値の取得と設定数値の取得と設定数値を持つオブジェクトの値を取得および設定するには、次のメソッドを使用します。

小数値の場合 :

IDecimal.setDecimalValue()IReadOnlyDecimal.getDecimalValue()

整数値の場合 :

IInteger.setIntValue()IInteger.getIntValue()

3-20 Oracle Configuration Interface Object(CIO)開発者ガイド

Page 71: Oracle Configuration Interface Objeഀ挀瓿ࠀ䌀䤀俿ক譶 …Oracle Configuration Interface Object(CIO) 開発者ガイド リリース11i 2003 年2 月 部品番号:J06438-02

実行時のモデル・ノードへのアクセス

例 3-11 のコード・フラグメントでは、setIntValue()を使用して整数フィーチャの値を変更しています。子ノードを選択するときは柔軟性のために汎用的な IRuntimeNode インタフェースを使用し、次にノード・オブジェクトを特定のインタフェースにキャストして、目的の操作を実行している点に注意してください。

例例例例 3-11 数値の設定数値の設定数値の設定数値の設定

// select a node by nameIRuntimeNode limit = baseComp.getChildByName("Current Limit");

// use an interface cast to set the node's value by the desired type((IInteger)limit).setIntValue(5);

数値が 小範囲または 大範囲に違反しているかどうかを確認するには、IInteger.setIntValue()などで値を設定した後、Configuration.getValidationFailures()によって戻される検証エラーのコレクション内を反復する必要があります。基本的な情報は、3-32 ページの 3.9 項「構成の検証」を参照してください。

注意する必要があるのは、IDecimal.setDecimalValue()では、フィーチャの 小 /大限度を超える小数フィーチャの値を設定したときに LogicalException をスローしないことです。Configuration.getValidationFailures()によって戻される検証エラーのコレクションには、論理トランザクションがクローズされるまで、数値を設定した結果生じるエラーが追加されません。そのため、 小値 / 大値違反が発生したトランザクションをロールバックする方法がありません。この状況に対応する方法は次のとおりです。

1. トランザクションをオープンします。

2. 新しい値を設定します。

3. トランザクションをクローズします。

4. 構成の検証エラーのコレクションを取得します。

5. 後のトランザクションで 小値 / 大値違反が発生している場合は、Configuration.undo()をコールして 後のトランザクションを取り消します。

この状況は、1 つの論理トランザクション内部で設定する値を 1 つにする理由を示す具体的な例です。 結果が条件を満たしていない場合は、いつでもトランザクションを元に戻すことができます。

Configuration Interface Object(CIO)の使用 3-21

Page 72: Oracle Configuration Interface Objeഀ挀瓿ࠀ䌀䤀俿ক譶 …Oracle Configuration Interface Object(CIO) 開発者ガイド リリース11i 2003 年2 月 部品番号:J06438-02

実行時のモデル・ノードへのアクセス

3.5.6 プロパティへのアクセスプロパティへのアクセスプロパティへのアクセスプロパティへのアクセスランタイム・ノードに属するプロパティの種類を確認してから、クラス Propertyのメソッドを使用して、プロパティに関する情報を取得できます。

ノードに関連付けられたプロパティのコレクションを取得するには、IRuntimeNode.getProperties()を使用します。

プロパティの名前に基づいて、ノードの特定のプロパティを取得するには、IRuntimeNode.getPropertyByName()を使用します。

プロパティを設定している場合は、getStringValue()などのクラス Propertyに属するメソッドを使用して、特定の情報を取得します。

3.5.7 オプションへのアクセスオプションへのアクセスオプションへのアクセスオプションへのアクセスオプション・フィーチャには、オプションを選択するメソッド、および選択したオプションについて問い合せるためのメソッドが特別に用意されています。selectOption()メソッドには、 小 / 大 =1/1 のオプション・フィーチャに対する相互排除処理が実装されており、新しいオプションを選択すると、それまで選択されていたオプションの選択が解除されます。getSelectedOption()メソッドは、フィーチャ内で複数のオプションが選択されている場合に TooManySelectedException をスローします。

オプションとは、TRUE/FALSE 論理状態とカウントをサポートするオプション・フィーチャの子です。 オプションには IRuntimeNodeインタフェースが実装されています。

インタフェース IOptionを使用して、オプションを選択または選択解除し、選択状態を確認できます。3-22 ページの表 3-5 にこれらのメソッドを示します。

例 3-12 のコード・フラグメントでは、ランタイム・ノードのオプションが選択されている場合に「check」アイコンが表示され、ノードが論理的に満たされていない場合に

「unsatisfied」アイコンが表示されます。

例例例例 3-12 オプションが選択されているか、または満たされているかのテストオプションが選択されているか、または満たされているかのテストオプションが選択されているか、または満たされているかのテストオプションが選択されているか、または満たされているかのテスト

IRuntimeNode rtNode = (IRuntimeNode)value; if (value instanceof IOption) { IOption optionNode = (IOption)value;

表表表表 3-5 インタフェースインタフェースインタフェースインタフェース IOption のメソッドのメソッドのメソッドのメソッド

メソッドメソッドメソッドメソッド 処理処理処理処理

deselect() このオプションの選択を解除します。

isSelected() このオプションが選択されている場合は TRUE を戻し、選択され

ていない場合は FALSE を戻します。

select() このオプションを選択します。

3-22 Oracle Configuration Interface Object(CIO)開発者ガイド

Page 73: Oracle Configuration Interface Objeഀ挀瓿ࠀ䌀䤀俿ক譶 …Oracle Configuration Interface Object(CIO) 開発者ガイド リリース11i 2003 年2 月 部品番号:J06438-02

IRuntimeNode によるイントロスペクション

if (optionNode.isSelected()) { setIcon(checkIcon); } } else if (rtNode.isUnsatisfied()) { setIcon(unsatIcon); } return this;

ここでは、checkIconと unsatIconアイコン・ファイルをポイントし、setIconがそれらを表示するカスタム・メソッドであると想定しています。

3.6 IRuntimeNode によるイントロスペクションによるイントロスペクションによるイントロスペクションによるイントロスペクションインタフェース IRuntimeNodeのメソッドを使用して、実行時にモデル内のノードに関する情報を取得できます。 これを利用すると汎用的な関数コンパニオンを記述できるので、モデルの構造について事前に知識を持っていなくても、モデル・ツリーと動的に対話できます。3-23 ページの表 3-6 にこれらのメソッドを示します。

表表表表 3-6 インタフェースインタフェースインタフェースインタフェース IRuntimeNode のメソッドのメソッドのメソッドのメソッド

メソッドメソッドメソッドメソッド 処理処理処理処理

getCaption() メッセージに表示されるこのノードの画面タイトルを取得します。

getChildByID() ID で識別される特定の子を取得します。

getChildByName() 名前で識別される特定の子を取得します。

getChildByPersistentID() 永続 ID で識別される特定の子を取得します。

getChildren() このランタイム構成ノードの子を取得します。

getChildrenByType() 特定タイプの子をすべて取得します。

getConfigItemID() このランタイム・ノードに関連付けられた品目 ID がある場

合はこれを戻します。品目 ID がない場合は -1 を戻します。

getConfiguration() このノードが属している構成を取得します。

getDatabaseID() ノードのデータベース ID を取得します。 これは Oracle Configurator スキーマ内のフィールド CZ_PS_NODES.PS_NODE_ID です。Oracle Configurator スキーマについては、

eTRM を参照してください。

getDescription() ランタイム・ノードの設計時の摘要を戻します。

getName() ノードの名前を取得します。

getParent() ノードの親を取得します。

Configuration Interface Object(CIO)の使用 3-23

Page 74: Oracle Configuration Interface Objeഀ挀瓿ࠀ䌀䤀俿ক譶 …Oracle Configuration Interface Object(CIO) 開発者ガイド リリース11i 2003 年2 月 部品番号:J06438-02

IRuntimeNode によるイントロスペクション

getPersistentID() ノードの永続 ID を取得します。

getProperties() このノードに関連付けられたプロパティのコレクションを戻します。このコレクションにはタイプ Property の品目が含

まれます。

getPropertyByName() プロパティの名前に基づいて、ノードの特定のプロパティを取得します。

getRuntimeID() ノードのランタイム ID を取得します。

getSelectionLineID() ノードの選択行 ID(構成出力データベース ID)を戻しま

す。

getType() このノードのタイプを取得します。

hasChildren() このランタイム構成ノードに子があるかどうか検証します。

hasConfigItemID() このノードが品目 ID を持っている場合、つまり、この構成

で以前に保存されている場合に TRUE を戻します。

hasCount() ノードがオブジェクトのカウントを持つ場合に TRUE を戻

します。

hasDecimalValue() ノードが小数値を持つ場合に TRUE を戻します。

hasDescription() ランタイム・ノードの設計時の摘要がある場合に TRUE を

戻します。

hasIntegerValue() ノードが整数値を持つ場合に TRUE を戻します。

hasSelectionLineID() ノードが選択行 ID(構成出力 ID)を持っている場合は

TRUE を、持っていない場合は FALSE を戻します。

hasState() ノードが論理状態を持つ場合に TRUE を戻します。

hasTextValue() ノードがテキスト値を持つ場合に TRUE を戻します。

isDescendantOf() これが指定ノードの子孫である場合に TRUE を戻します。

isEffective() モデルの有効性基準に対してこの特定ノードが有効な場合にTRUE を戻します。

isNative() これがネイティブの BOM ノードである場合に TRUE を戻し

ます。

isRoot() これがランタイム・ツリーのルート・ノードである場合にTRUE を戻します。

表表表表 3-6 インタフェースインタフェースインタフェースインタフェース IRuntimeNode のメソッド(続き)のメソッド(続き)のメソッド(続き)のメソッド(続き)

メソッドメソッドメソッドメソッド 処理処理処理処理

3-24 Oracle Configuration Interface Object(CIO)開発者ガイド

Page 75: Oracle Configuration Interface Objeഀ挀瓿ࠀ䌀䤀俿ক譶 …Oracle Configuration Interface Object(CIO) 開発者ガイド リリース11i 2003 年2 月 部品番号:J06438-02

IRuntimeNode によるイントロスペクション

例 3-13 のコード・フラグメントでは、ランタイム・ノードのオプションが選択されている場合に「check」アイコンが表示され、ノードが論理的に満たされていない場合に

「unsatisfied」アイコンが表示されます。

例例例例 3-13 ノードが選択されているか、または満たされているかのテストノードが選択されているか、または満たされているかのテストノードが選択されているか、または満たされているかのテストノードが選択されているか、または満たされているかのテスト

IRuntimeNode rtNode = (IRuntimeNode)value; if (value instanceof IOption) { IOption optionNode = (IOption)value; if (optionNode.isSelected()) { setIcon(checkIcon); } } else if (rtNode.isUnsatisfied()) { setIcon(unsatIcon); } return this;

ここでは、checkIconと unsatIconがアイコン・ファイルをポイントし、setIconがそれらを表示するカスタム・メソッドであると想定しています。

例 3-14 のコード・フラグメントでは、構成オブジェクト configを作成し、homeTheaterを構成のルート・コンポーネントに設定して、userTypeをユーザーの可視名が「User Type」である子ノードに設定しています。

isUiVisible() このノードが UI に表示される場合、つまり、ノードのコン

トロールが UI に表示され、エンド・ユーザーによって選択

可能な状態である場合に、TRUE を戻します。ノードが

(CZ_PS_NODES.UI_OMIT 値に従って)UI に表示されない

場合は FALSE を戻します。ただし、このメソッドで非表示

とされたノードは、show all nodes オプションで作成される

UI には表示されます。

isUnsatisfied() この特定のノード、またはそのいずれかの子の構成が不完全な場合に TRUE を戻します。

isUnsatisfiedNode() この特定のノードの構成が不完全な場合に TRUE を戻しま

す。

toString() クライアントが摘要(存在する場合)と名前のどちらを要求しているかに基づいて、このノードの文字列表現を戻します。

表表表表 3-6 インタフェースインタフェースインタフェースインタフェース IRuntimeNode のメソッド(続き)のメソッド(続き)のメソッド(続き)のメソッド(続き)

メソッドメソッドメソッドメソッド 処理処理処理処理

Configuration Interface Object(CIO)の使用 3-25

Page 76: Oracle Configuration Interface Objeഀ挀瓿ࠀ䌀䤀俿ক譶 …Oracle Configuration Interface Object(CIO) 開発者ガイド リリース11i 2003 年2 月 部品番号:J06438-02

論理トランザクション

例例例例 3-14 名前による子ノードの取得名前による子ノードの取得名前による子ノードの取得名前による子ノードの取得

Configuration config = m_cio.createConfiguration(m_product);IRuntimeNode homeTheater = config.getRootComponent();

IRuntimeNode userType = homeTheater.getChildByName("User Type");

例 3-15 のコード・フラグメントでは、IRuntimeNode オブジェクト compの TEXT_FEATUREフィールドの値のテストを使用して、TextFeatureオブジェクトであるノードのすべての子ノードのリストを取得しています。 ここでは、traverseTree()がカスタム・メソッドであると想定しています。

例例例例 3-15 タイプによるすべての子ノードの取得タイプによるすべての子ノードの取得タイプによるすべての子ノードの取得タイプによるすべての子ノードの取得

//get all the text features textFeatList = comp.getChildrenByType(comp.TEXT_FEATURE); traverseTree(comp.getChildren(), comp.TEXT_FEATURE, textFeatList); iter = textFeatList.iterator();

例 3-16 のコード・フラグメントでは、isUiVisible()メソッドを使用して、現在のランタイム・ノードがユーザー・インタフェースで表示されるかどうかを確認しています。

例例例例 3-16 UI に表示されるかどうかの確認に表示されるかどうかの確認に表示されるかどうかの確認に表示されるかどうかの確認

Configuration config = node.getConfiguration();... IRuntimeNode root = config.getRootComponent(); boolean isVisbl = root.isUiVisible();

3.7 論理トランザクション論理トランザクション論理トランザクション論理トランザクションOracle Configurator の論理エンジンとの相互作用において一貫性を維持するために、構成レベルの論理トランザクションを使用できます。論理トランザクションは、ユーザーとの対話処理を構成するすべての論理的アサーションから成り立っています。トランザクションの終了時に、CIO はすべての検証エラーを含むリストを戻します。3-32 ページの 3.9 項「構成の検証」を参照してください。

構成オブジェクト oracle.apps.cz.cio.Configurationには、構成レベルの論理トランザクションを開始、終了およびロールバックするメソッドのセットが含まれています。 論理トランザクションはデータベース・トランザクションではありません。

トランザクション内部で通常行われる処理は、ランタイム・ノードの論理状態と数値の設定です(3-17 ページ 3.5.4 項および 3-20 ページ 3.5.5 項を参照)。

3-26 Oracle Configuration Interface Object(CIO)開発者ガイド

Page 77: Oracle Configuration Interface Objeഀ挀瓿ࠀ䌀䤀俿ক譶 …Oracle Configuration Interface Object(CIO) 開発者ガイド リリース11i 2003 年2 月 部品番号:J06438-02

論理トランザクション

� 新しいトランザクションを作成するには、Configuration.beginConfigTransaction()を使用します。このメソッドはConfigTransactionオブジェクトを戻します。 必要な一連の処理(状態や値の設定など)を行った後、トランザクションを終了するために、次に示す相互に排他的なメソッドのいずれかに ConfigTransaction オブジェクトを渡してトランザクションを終了、コミットまたはロールバックする必要があります。

endConfigTransactioncommitConfigTransactionrollbackConfigTransaction

� Configuration.endConfigTransaction()は、beginConfigTransaction()で開始したトランザクションをコミットせずに終了します(したがって、妥当性チェックはスキップされます)。

� Configuration.commitConfigTransaction()は、指定したトランザクションまたはネストされた一連のトランザクションをコミットし、ユーザーによる選択の結果を構成モデル全体に伝播して、妥当性チェックを起動します(3-32 ページの 3.9 項「構成の検証」を参照)。

� Configuration.rollbackConfigTransaction()は、未完了のトランザクションをロールバックし、その内部で実行された操作を元に戻します。

beginConfigTransaction()と endConfigTransactionを使用すると中間のトランザクションをネストできるので、commitConfigTransaction()をコールするまで妥当性チェックを遅延できます。必ず内部のトランザクションを終了またはコミットしてから、それらを含む外部のトランザクションを終了またはコミットする必要があります。 rollbackConfigTransaction()によって未完了のトランザクションをロールバックする場合は、外部のトランザクションをロールバックすると、内部のトランザクションも自動的にロールバックされます。

初期要求を使用する場合にも、トランザクションを使用する必要があります。3-35 ページの3.10.3 項「初期要求」を参照してください。

トランザクションを適切な時点でコミットするように注意しなければならない場合があります。3-27 ページ例 3-17 のコード・フラグメントでは、共通操作の結果をプログラムの他の部分に反映するために、トランザクション内部で共通操作をラップする必要がある場合を示しています。5-5 ページの例 5-3「初期要求の設定(InitialRequestTest.java)」でも、トランザクションの使用について説明しています。

例例例例 3-17 削除での論理トランザクションの使用削除での論理トランザクションの使用削除での論理トランザクションの使用削除での論理トランザクションの使用

...Component comp;ComponentSet compSet;ConfigTransaction tr;Configuration config;

Configuration Interface Object(CIO)の使用 3-27

Page 78: Oracle Configuration Interface Objeഀ挀瓿ࠀ䌀䤀俿ক譶 …Oracle Configuration Interface Object(CIO) 開発者ガイド リリース11i 2003 年2 月 部品番号:J06438-02

論理的矛盾の処理

// ----------------------------------------------------------// This sequence produces unintended results:...// Add a component:comp = compSet.add();...// User selects a child of compSet (interactively)....// Delete the component:compSet.delete(comp);...// User wants to see the list of all selected nodes:collec = config.getSelectedItems();// The returned collection includes children of the deleted component,// because no transaction was commited.

// ----------------------------------------------------------// This sequence produces the intended results:...// Add a component:comp = compSet.add();...// User selects a child of compSet (interactively)....// Delete the component, inside a transaction:tr = config.beginConfigTransaction();compSet.delete(component);config.commitConfigTransaction(tr);...// User wants to see the list of all selected nodes:collec = config.getSelectedItems();// The returned collection does NOT include children of the deleted component,// because the deletion transaction was commited.

3.8 論理的矛盾の処理論理的矛盾の処理論理的矛盾の処理論理的矛盾の処理IState.setState()などを使用して論理ネットワークの状態の変更を要求すると、論理的矛盾のために要求結果がエラーになることがあります。 このようなエラーが発生すると、論理的例外が生成されてスローされます。論理的例外には、LogicalExceptionオブジェクトまたは LogicalOverridableExceptionオブジェクトからアクセスします。 LogicalExceptionは無効にできません。

LogicalOverridableExceptionを使用して矛盾を無効にする方法は、3-29 ページの3.8.2 項「矛盾の無効化」を参照してください。

3-28 Oracle Configuration Interface Object(CIO)開発者ガイド

Page 79: Oracle Configuration Interface Objeഀ挀瓿ࠀ䌀䤀俿ক譶 …Oracle Configuration Interface Object(CIO) 開発者ガイド リリース11i 2003 年2 月 部品番号:J06438-02

論理的矛盾の処理

� 例外が LogicalOverridableExceptionのインスタンスかどうかを確認するには、LogicalException.isOverridable()を使用します。LogicalOverridableException は override()メソッドで無効にできます。

� エラーを引き起こしたランタイム・ノードを取得するには、LogicalException.getCause()を使用します。

� エラーの理由を示す文字列のリストを取得するには、LogicalException.getReasons()を使用します。

� 原因または理由を含むメッセージを取得するには、LogicalException.getMessage()を使用します。

3.8.1 矛盾によるエラー・メッセージの生成矛盾によるエラー・メッセージの生成矛盾によるエラー・メッセージの生成矛盾によるエラー・メッセージの生成内部エラー・メッセージに関する情報を含めるために、Reasonオブジェクトを使用して、矛盾によって戻された情報をラップできます。

� Reasonクラスのコンストラクタに、次の表にリストされた引数をすべて指定する必要があります。

� この理由に関連するメッセージを取得するには、Reason.getMsg()を使用します。

� この理由に関連するノードを取得するには、Reason.getNode()を使用します。

� このオブジェクトで保持されている理由のタイプを取得するには、Reason.getType()を使用します。

� このオブジェクトを文字列に変換するには、Reason.toString()を使用します。

3.8.2 矛盾の無効化矛盾の無効化矛盾の無効化矛盾の無効化ランタイム Oracle Configurator または関数コンパニオンでは、ユーザーにメッセージを提示して、矛盾を無効にしてよいか確認できます。

論理的矛盾を無効にできる場合は、LogicalExceptionではなく、LogicalOverridableExceptionが通知されます。LogicalOverridableException はLogicalExceptionのサブクラスで、override()メソッドが追加されています。矛盾を無効にするには、LogicalOverridableException.override()を使用します。

表表表表 3-7 Reason コンストラクタの引数コンストラクタの引数コンストラクタの引数コンストラクタの引数

引数引数引数引数 意味意味意味意味

type 理由のタイプ

node 問題を引き起こしたノード

msg 戻されたメッセージ

Configuration Interface Object(CIO)の使用 3-29

Page 80: Oracle Configuration Interface Objeഀ挀瓿ࠀ䌀䤀俿ক譶 …Oracle Configuration Interface Object(CIO) 開発者ガイド リリース11i 2003 年2 月 部品番号:J06438-02

論理的矛盾の処理

setState()などの「set」メソッド、またはConfiguration.commitConfigTransaction()によって、両方の例外タイプ

(LogicalExceptionと LogicalOverridableException)がスローされる場合があります。無効化可能な例外を無効にする場合は、その override()メソッドをコールする必要がありますが、このメソッドが LogicalExceptionをスローすることがあります。これは、例外を無効にしてもまだ矛盾が発生し、処理を継続できないことを意味します。 無効化が成功した場合は、commitConfigTransaction()をコールしてトランザクションをクローズする必要があります。 例外を無効にしない場合、または LogicalExceptionを取得する場合は、rollbackConfigTransaction()をコールしてトランザクションをパージする必要があります。3-30 ページ例 3-18 のコード・フラグメントは、この点に関する具体例を示しています。 [ASK "text"]および [SHOW "text"]で表された操作は CIO の役割ではありません。ここでは、独自に作成した関数コンパニオンのどの部分でこの状況を処理すればよいかが示されています。

例例例例 3-18 論理的例外の処理と無効化論理的例外の処理と無効化論理的例外の処理と無効化論理的例外の処理と無効化

try { // begin a transaction ConfigTransaction tr = config.beginConfigTransaction(); // call the "set" method opt1.setState( IState.TRUE); // commit the transaction config.commitConfigTransaction(tr); } catch(LogicalOverridableException loe) { proceed = [ASK "Do you want to override?"]; if (! proceed) { rollbackConfigTransaction(); } else { try { // override the contradiction and ... loe.override(); // ... finish the transaction commitConfigTransaction(); } catch (LogicalException le) { // we cannot do anything [SHOW "Cannot be overriden"] config.rollbackConfigTransaction(tr); } } } catch (LogicalException le) {

3-30 Oracle Configuration Interface Object(CIO)開発者ガイド

Page 81: Oracle Configuration Interface Objeഀ挀瓿ࠀ䌀䤀俿ক譶 …Oracle Configuration Interface Object(CIO) 開発者ガイド リリース11i 2003 年2 月 部品番号:J06438-02

論理的矛盾の処理

// we cannot do anything <SHOW "Cannot be overriden"> config.rollbackConfigTransaction(tr); }

3.8.3 例外の呼出し例外の呼出し例外の呼出し例外の呼出し関数コンパニオンが起動されると、Oracle Configurator の UI サーバーは、この起動を中心にトランザクションをラップします。

矛盾が発生し、その矛盾がコードで処理されず、関数コンパニオンの内部でロールバックされない場合は、致命的な例外が発生する場合があります。 致命的な例外が発生した場合は、UI サーバーによって構成セッションが強制終了(オープンしているトランザクションがすべて削除)され、FunctionalCompanionExceptionがスローされ、エンド・ユーザーにメッセージが表示されます。ユーザーの構成は終了します。

関数コンパニオンによって FuncCompErrorExceptionがスローされ、例外が処理された場合、開発者が指定したメッセージが UI サーバーによってエンド・ユーザーに表示され、トランザクションがロールバックされます。ユーザーは構成セッションを続行できます。

エラーによって LogicalExceptionがスローされた場合、UI サーバーによってエンド・ユーザーにメッセージが表示され、トランザクションがロールバックされます。ユーザーは構成セッションを続行できます。

エラーによって RuntimeExceptionがスローされた場合、UI サーバーによってユーザーの構成セッションが強制終了されます。UI サーバーは処理を続行し、エンド・ユーザーは新しい構成セッションを開始できます。

前のバージョンの CIO では FuncCompMessageExceptionをスローできましたが、現行バージョンでは FuncCompMessageException は推奨されていません。しかし、既存のコードとの下位互換性のために残されています。FuncCompMessageException を使用すると、指定したメッセージと、例外が発生した関数コンパニオンの名前を表示するダイアログ・ボックスが表示できます。エンド・ユーザーがダイアログ・ボックスを閉じると、UI サーバーによってオープンしている CIO トランザクションがコミットされ、エンド・ユーザーは構成セッションを継続できます。モデルは未定の状態のまま残すことが可能です。この状況は、自動構成関数コンパニオンで特定の問題を引き起こす場合があります。

警告警告警告警告 : クラスクラスクラスクラス FuncCompMessageException は現行バージョンでは推は現行バージョンでは推は現行バージョンでは推は現行バージョンでは推奨されていませんが、既存のコードとの下位互換性のために残されていま奨されていませんが、既存のコードとの下位互換性のために残されていま奨されていませんが、既存のコードとの下位互換性のために残されていま奨されていませんが、既存のコードとの下位互換性のために残されています。す。す。す。

Configuration Interface Object(CIO)の使用 3-31

Page 82: Oracle Configuration Interface Objeഀ挀瓿ࠀ䌀䤀俿ক譶 …Oracle Configuration Interface Object(CIO) 開発者ガイド リリース11i 2003 年2 月 部品番号:J06438-02

構成の検証

3.9 構成の検証構成の検証構成の検証構成の検証構成の有効性(つまり、構成が関連付けられたルールに違反していないか)はチェック可能である必要があります。

CIO は、ユーザーとの対話処理を構成するすべての論理的アサーションが実行されてから構成を検証します。これは、論理的トランザクションの長さに正確に一致します。3-26 ページの 3.7 項「論理トランザクション」を参照してください。

妥当性チェックとレポートの作成は、Configuration.commitConfigTransaction()または Configuration.rollbackConfigTransaction()を使用して論理トランザクションを終了するときに実行されます。

CIO は、コミットまたはロールバックの後、モデルのノード全体について検証エラー、選択されている品目および条件を満たさない品目をチェックします。これらの結果は、構成で保守されているコレクションのセット内に保持されます。

この時点で、表 3-8 にリストされている oracle.apps.cz.cio.Configurationのメソッドをコールできます。

ノードが選択されると、STATUS_NEWというステータスが与えられます。 後のトランザクション以降、継続してノードが選択されている場合は、ステータスが STATUS_EXISTINGになります。 ノードの選択が解除されると、次のトランザクションまでステータスがSTATUS_DELETEDになり、次のトランザクションでコレクションから削除されます。

関数コンパニオンを記述する場合は、検証エラーが発生したときに、validate()メソッドで CompanionValidationFailureオブジェクトのリストを戻すようにします。これにより、複数のエラーを戻すことができます。validate()メソッドには複数のテストを記述して、エラーが発生したノードとその理由を追跡できます。 (validate()メソッドに関する情報は、3-42 ページ 3.12.3 項を参照。)

表表表表 3-8 構成を検証するためのメソッド構成を検証するためのメソッド構成を検証するためのメソッド構成を検証するためのメソッド

メソッドメソッドメソッドメソッド 説明説明説明説明

getValidationFailures() ValidationFailure オブジェクトのコレクションを戻します。

検証エラーのリストを検査するために、トランザクションをコミットまたはロールバックした後でこのメソッドをコールします。

getSelectedItems() 構成内の選択された(TRUE)品目のセットを示す

StatusInfo構造体として、選択された品目のコレクション

を戻します。

getUnsatisfiedItems() 構成内の、条件を満たさない品目のセットを示すStatusInfo構造体として、条件を満たさない品目のコレク

ションを戻します。

3-32 Oracle Configuration Interface Object(CIO)開発者ガイド

Page 83: Oracle Configuration Interface Objeഀ挀瓿ࠀ䌀䤀俿ক譶 …Oracle Configuration Interface Object(CIO) 開発者ガイド リリース11i 2003 年2 月 部品番号:J06438-02

要求の使用

検証に失敗した場合は、CIO によってエラーに関する情報が収集され、CompanionValidationFailureオブジェクトの List に格納されます。一般的に、関数コンパニオンが特定のランタイム・ノードに関する違反メッセージを戻す必要がある場合は、CompanionValidationFailure オブジェクトを作成して CompanionValidationFailure オブジェクトにランタイム・ノードとメッセージを渡す必要があります。例 3-19 のコード・フラグメントは、この点に関する具体例を示しています。

例例例例 3-19 検証エラーのリストの取得検証エラーのリストの取得検証エラーのリストの取得検証エラーのリストの取得

public class Test extends FunctionalCompanion implements IFunctionalCompanion{...IRuntimeNode node;ArrayList failures = new ArrayList();...//check to see if the value in the config is not at least the min value if( !(val >= min) ) failures.add( new CompanionValidationFailure("Value less than minimum", node, this) ); if(failures.isEmpty()) return null; else return failures;...}

次回以降のユーザー操作でも違反が発生した場合は、関数コンパニオンで新しいCompanionValidationFailureを作成する必要はありませんが、そのかわりに同じオブジェクトが戻されます。これによって、既知の違反メッセージが新しい違反メッセージとして CIO から戻されるのを防ぐことができます。

3.10 要求の使用要求の使用要求の使用要求の使用論理要求とは、構成モデル内のノード(オプションや BOM 品目など)の論理状態または数値を設定することによって構成を変更しようとする試みです。3-34 ページの表 3-9 に、このタイプのメソッドの一部がリストされています。

Configuration Interface Object(CIO)の使用 3-33

Page 84: Oracle Configuration Interface Objeഀ挀瓿ࠀ䌀䤀俿ক譶 …Oracle Configuration Interface Object(CIO) 開発者ガイド リリース11i 2003 年2 月 部品番号:J06438-02

要求の使用

� 表 3-9 にリストされているような状態または値を設定する要求を、ユーザー要求と呼びます。3-35 ページの 3.10.2 項「ユーザー要求」を参照してください。

� 新しい構成が作成されたときに適用されるユーザー要求のセットを作成できます。 このような要求を初期要求と呼びます。3-35 ページの 3.10.3 項「初期要求」を参照してください。

� 無効化によって要求が失敗すると、失敗した要求のリストが CIO により生成されます。 3-37 ページの 3.10.4 項「失敗した要求」を参照してください。

� Request オブジェクトのインスタンスの問合せを実行すると、要求に関する情報を取得できます。3-34 ページの 3.10.1 項「要求に関する情報の取得」を参照してください。

3.10.1 要求に関する情報の取得要求に関する情報の取得要求に関する情報の取得要求に関する情報の取得クラス oracle.apps.cz.cio.Requestは論理要求を表示します。 Requestオブジェクトを使用して、3-33 ページの 3.10 項「要求の使用」で説明した各種の要求を表現できます。

Requestオブジェクトを作成し、要求が実行されたランタイム・ノードと要求の値である文字列を Requestオブジェクトのコンストラクタに渡します。

Request req = new Request(node, value);

次のように、要求の値を判別するメソッドのセットと要求が実行されたランタイム・ノードが Requestオブジェクトによって提供されます。

� getNumericValue()

� getValue()

� getRuntimeNode()

また、Requestによって要求のタイプを判別するメソッドも提供されます。表 3-10 に、これらのメソッドがリストされています。

表表表表 3-9 要求の実行に使用される一般的なメソッド要求の実行に使用される一般的なメソッド要求の実行に使用される一般的なメソッド要求の実行に使用される一般的なメソッド

メソッドメソッドメソッドメソッド 参照箇所参照箇所参照箇所参照箇所

IState.setState() 「論理状態の取得と設定」3-17 ページ

ICount.setCount() 「数値の取得と設定」3-20 ページ

IOPtion.select() 「オプションへのアクセス」3-22 ページ

3-34 Oracle Configuration Interface Object(CIO)開発者ガイド

Page 85: Oracle Configuration Interface Objeഀ挀瓿ࠀ䌀䤀俿ক譶 …Oracle Configuration Interface Object(CIO) 開発者ガイド リリース11i 2003 年2 月 部品番号:J06438-02

要求の使用

3.10.2 ユーザー要求ユーザー要求ユーザー要求ユーザー要求関数コンパニオンでメソッド Configuration.getUserRequests()を使用して、システム内の現行のすべてのユーザー要求を表す Request オブジェクトのリストを取得できます。

...IRuntimeNode node = getRuntimeNode();Configuration config = node.getConfiguration();List requests = config.getUserRequests();Iterator it = requests.iterator();while (it.hasNext()) { Request req = (Request)it.next(); IRuntimeNode node = req.getRuntimeNode(); String value = req.getValue();}...

3.10.3 初期要求初期要求初期要求初期要求新しい構成が作成されるたびに適用される論理要求のセットを指定できます。このような要求を初期要求と呼びます。

3-36 ページの例 3-20 と次に説明する手順に従うと、構成が作成されるたびに初期要求が自動的に適用されます。

表表表表 3-10 クラスクラスクラスクラス Request のタイプ・メソッドのタイプ・メソッドのタイプ・メソッドのタイプ・メソッド

TRUE となるメソッドとなるメソッドとなるメソッドとなるメソッド ... 要求の目的要求の目的要求の目的要求の目的 要求の値要求の値要求の値要求の値1

1 値のテストでは、大 / 小文字は区別されません。

isNumericRequest() ランタイム・ノードの数値の変更 数値

isStateRequest() ランタイム・ノードの状態の変更 T、TRUE、F、FALSE、TOGGLEまたは UNKNOWN

isTrueStateRequest() ランタイム・ノードの状態の TRUE へ

の変更

T または TRUE

isFalseStateRequest() ランタイム・ノードの状態の FALSEへの変更

F または FALSE

isToggleStateRequest() ランタイム・ノードの状態の切替え TOGGLE

isUnknownStateRequest() ランタイム・ノードの状態の設定解除 UNKNOWN

Configuration Interface Object(CIO)の使用 3-35

Page 86: Oracle Configuration Interface Objeഀ挀瓿ࠀ䌀䤀俿ক譶 …Oracle Configuration Interface Object(CIO) 開発者ガイド リリース11i 2003 年2 月 部品番号:J06438-02

要求の使用

1. クラス AutoFunctionalCompanionを拡張する関数コンパニオンを定義します。

public class compInitReq extends AutoFunctionalCompanion { ... }

2. このクラスで、AutoFunctionalCompanionの onNew()メソッドを起動します。このメソッドは、新しい構成が有効になった直後にコールされます。

public void onNew() throws LogicalException { ... }

3. onNew()メソッドで、Configuration.beginConfigTransaction()を使用して構成トランザクションを開始します。

IRuntimeNode node = getRuntimeNode();ConfigTransaction tr = node.getConfiguration().beginConfigTransaction();

トランザクションの詳細は、3-26 ページの 3.7 項「論理トランザクション」を参照してください。

4. ConfigTransaction.useInitialRequests()を使用して、トランザクションに初期要求が含まれるように指定します。

tr.useInitialRequests();

5. 適切なメソッドを使用して、必要なユーザー要求を指定します。

BooleanFeature feat = (BooleanFeature)node.getChildByName("Feature_1234");feat.setState(IState.TRUE);

論理要求の設定の詳細は、3-33 ページの 3.10 項「要求の使用」を参照してください。

6. 必要な初期要求をすべて設定したら、論理トランザクションをコミットします。

node.getConfiguration().commitConfigTransaction(tr);

例 3-20 に、これらの手順を示します。初期要求を使用した詳細な例は、5-5 ページの例 5-3「初期要求の設定(InitialRequestTest.java)」を参照してください。

例例例例 3-20 初期要求の使用初期要求の使用初期要求の使用初期要求の使用

import oracle.apps.cz.cio.*;

public class compInitReq extends AutoFunctionalCompanion { public void onNew() throws LogicalException { try { IRuntimeNode node = getRuntimeNode(); ConfigTransaction tr = node.getConfiguration().beginConfigTransaction(); tr.useInitialRequests(); BooleanFeature feat = (BooleanFeature)node.getChildByName("Feature_1234"); feat.setState(IState.TRUE);

3-36 Oracle Configuration Interface Object(CIO)開発者ガイド

Page 87: Oracle Configuration Interface Objeഀ挀瓿ࠀ䌀䤀俿ক譶 …Oracle Configuration Interface Object(CIO) 開発者ガイド リリース11i 2003 年2 月 部品番号:J06438-02

要求の使用

node.getConfiguration().commitConfigTransaction(tr); } catch (Exception e) { e.printStackTrace(); } }}

3.10.3.1 初期要求の使用方法に関する注意初期要求の使用方法に関する注意初期要求の使用方法に関する注意初期要求の使用方法に関する注意� 3-36 ページの手順 4 で示したような ConfigTransaction.useInitialRequests()

を含むトランザクションでは、CIO が初期要求モードになります。このトランザクション内には任意の数のサブトランザクションをネストでき、それらのサブトランザクション内の要求はすべてこの初期要求モードを継承します。そのような要求には、通常の要求の場合と同じようにオーバーライドとロールバックを実行できます。手順 6 で示したように初期要求トランザクションをコミットまたはロールバックし、初期要求が終了したことを示す必要があります。その後、関数コンパニオン内の他のユーザー要求を指定できます。

� 初期要求を含む構成を保存すると、初期要求は構成の一部として保存されます。 そのような構成を CIO.restoreConfiguration()を使用して復元すると、初期要求が構成に再適用されます。

3.10.3.2 初期要求に関する制限事項初期要求に関する制限事項初期要求に関する制限事項初期要求に関する制限事項� 初期要求は、新しい構成が有効化されたときに、AutoFunctionalCompanionの

onNew()メソッドを使用することでのみ指定できます。

� 構成に初期要求を適用した後は、ユーザー要求で初期要求をオーバーライドできません。 初期要求をオーバーライドしようとすると、LogicExceptionが発生します。

� 初期要求はすべて、ユーザー要求を指定する前に指定しておく必要があります。 通常のユーザー要求を指定した後で初期要求のトランザクションを開始しようとすると、InitialRequestExceptionが発生します。

� 構成が復元された後にコールされる AutoFunctionalCompanionの onRestore()メソッドを使用する場合は、追加の初期要求を指定できません。 保存されている構成の、既存の初期要求のセットが復元されます。

� コンポーネントの追加または削除に初期要求は使用できません。

3.10.4 失敗した要求失敗した要求失敗した要求失敗した要求LogicalOverridableException.override()を使用して論理的矛盾を無効化にする場合は(3-29 ページの 3.8.2 項「矛盾の無効化」を参照)、override()メソッドによってRequest オブジェクトの List が戻されます。これらの Request オブジェクトは、この無効化によって失敗したアサーション済みのすべてのユーザー要求を表します。

Configuration Interface Object(CIO)の使用 3-37

Page 88: Oracle Configuration Interface Objeഀ挀瓿ࠀ䌀䤀俿ক譶 …Oracle Configuration Interface Object(CIO) 開発者ガイド リリース11i 2003 年2 月 部品番号:J06438-02

小数数量の処理

例は、5-8 ページの 5.4.2 項「失敗した要求のリストの取得」を参照してください。

3.11 小数数量の処理小数数量の処理小数数量の処理小数数量の処理前のバージョンの Oracle Configurator では、インポートされた BOM 標準品目の数量はすべて整数として取り扱われました。 11i Patchset F から、インポートされた BOM 標準品目の数量は整数値と小数値の両方を取れるようになりました。

3-38 ページの表 3-11「整数ノードと小数ノードに使用されるメソッド」に、小数数量に関する CIO のクラスおよびインタフェースのメソッドの一部がリストされています。この表では、整数(割り切れない)値または小数(割り切れる)値を持つ BOM ノードに使用される関連メソッドが示されています。 誤ったタイプのメソッドを使用すると、IncompatibleValueExceptionが発生します。これらのメソッドに関する詳細は、第 4章「CIO のリファレンス・マニュアル」を参照してください。

クラス IRuntimeNodeおよびクラス RuntimeNodeでは、ランタイム・ノードが小数のBOM または整数の BOM に属するかどうかを調べるために、メソッドhasIntegerValue()およびメソッド hasDecimalValue()を使用する必要があります。

StateCountNode.getDecimalCount()は数量を取得するための一般的なメソッドで、整数の BOM と小数の BOM の両方に使用できます。

表表表表 3-11 整数ノードと小数ノードに使用されるメソッド整数ノードと小数ノードに使用されるメソッド整数ノードと小数ノードに使用されるメソッド整数ノードと小数ノードに使用されるメソッド

クラスクラスクラスクラス / インタインタインタインタフェースフェースフェースフェース 整数メソッド整数メソッド整数メソッド整数メソッド 小数メソッド小数メソッド小数メソッド小数メソッド

BomNode getDefaultQuantity() getDecimalDefaultQuantity()

getMaxQuantity() getDecimalMaxQuantity()

getMinQuantity() getDecimalMinQuantity()

IBomItem getMaxQuantity() getDecimalMaxQuantity()

getMinQuantity() getDecimalMinQuantity()

ICount getCount() getDecimalCount()

setCount() setDecimalCount()

StateCountNode getCount() getDecimalCount()

setCount() setDecimalCount()

3-38 Oracle Configuration Interface Object(CIO)開発者ガイド

Page 89: Oracle Configuration Interface Objeഀ挀瓿ࠀ䌀䤀俿ক譶 …Oracle Configuration Interface Object(CIO) 開発者ガイド リリース11i 2003 年2 月 部品番号:J06438-02

関数コンパニオンの標準インタフェース・メソッド

3.12 関数コンパニオンの標準インタフェース・メソッド関数コンパニオンの標準インタフェース・メソッド関数コンパニオンの標準インタフェース・メソッド関数コンパニオンの標準インタフェース・メソッド関数コンパニオンに機能を組み込むには、この項で解説されているメソッドの本体コードを実装します。3-39 ページの表 3-12 に、これらのメソッドがリストされています。

現在 CIO でサポートされている言語に適用される詳細およびその例は、1-6 ページの 1.3 項「Java を使用した関数コンパニオンの作成」を参照してください。

これらのメソッドは、プログラム・イベントまたはエンド・ユーザーの処理への応答として、ランタイム Oracle Configurator から CIO を介して起動されます。Oracle Configurator Developer でコンポーネントと関数コンパニオンを関連付けることにより、コンポーネントごとに起動されるメソッドのタイプが決まります。詳細は、1-11 ページの 1.4 項「関数コンパニオンの Configurator への取込み」を参照してください。

これらのメソッドは、モデル内のコンポーネントに対して作成された関数コンパニオン・オブジェクトごとに CIO によって起動されます。これらのメソッドは、作成したコードから直接起動しないようにします。メソッドの起動は CIO が行います。それに対して、各メソッドの本体は、モデルと通信するために CIO が提供する API を使用して、ユーザーが実装します。

これらのメソッドの一部またはすべての本体を空にできます。 関数コンパニオンには、Oracle Configurator Developer で指定したメソッドのみを実装する必要があります。

これらのメソッドを定義するインタフェースを次に示します。

oracle.apps.cz.cio.IFunctionalCompanion

表表表表 3-12 IFunctionalCompanion インタフェースの標準メソッドインタフェースの標準メソッドインタフェースの標準メソッドインタフェースの標準メソッド

メソッドメソッドメソッドメソッド 用途用途用途用途 詳細詳細詳細詳細

initialize() モデルに関する情報を保存し、関数コンパニオンの初期化に必要な処理を実行します。

3.12.1 項

autoConfigure() プログラム化された構成手順を実行します。 3.12.2 項

validate() 構成の有効性をプログラム的にチェックし、モデルが有効でない場合に LogicalException オブジェクトをス

ローします。

3.12.3 項

generateOutput() Thick クライアントまたは Thin クライアント向けにこ

のコンポーネントの出力を生成します。

3.12.4 項

terminate() この関数コンパニオンを破棄する前に必要なクリーンアップ処理を実行します。

3.12.5 項

Configuration Interface Object(CIO)の使用 3-39

Page 90: Oracle Configuration Interface Objeഀ挀瓿ࠀ䌀䤀俿ক譶 …Oracle Configuration Interface Object(CIO) 開発者ガイド リリース11i 2003 年2 月 部品番号:J06438-02

関数コンパニオンの標準インタフェース・メソッド

3.12.1 initialize() インタフェース・メソッドインタフェース・メソッドインタフェース・メソッドインタフェース・メソッドIFunctionalCompanion.initialize()メソッドは、コンパニオンの作成時にコールされます。 これにより、関数コンパニオン・オブジェクトが構成モデル化環境(ランタイムOracle Configurator の実行中のインスタンスなど)に接続されます。関数コンパニオンの作成と初期化は、現在のコンポーネント・インスタンスのサブコンポーネント・インスタンスがすべて作成されてから行われることに注意してください。

initialize()の実装には、関数コンパニオンが初めて作成されたときに実行するタスクを記述できます。 たとえば、ログ・ファイルへの監査メッセージの書込みを開始して、エンド・ユーザーが行った処理を追跡できます。

ランタイム Oracle Configurator を実行すると、モデル内のすべてのコンポーネントとそれらに関連付けられている関数コンパニオンのランタイム・インスタンスが作成されます。関数コンパニオン・オブジェクトが作成されると、CIO によって initialize()がコールされ、表 3-13 にリストされている入力パラメータが渡されます。

通常は、関数コンパニオンから FunctionalCompanion.initialize()を直接コールする必要はありません。CIO がかわりにそれを自動的に行います。 ただし、関数コンパニオンのベース・クラスとして FunctionalCompanionを拡張し、特化した初期化タスクを実行する場合は、作成したクラスでオーバーライドした initialize()メソッドからsuper.initialize()をコールする必要があります。これにより、スーパークラス

(oracle.apps.cz.cio.FunctionalCompanion)に必要な変数が渡されて、そのメソッドが使用可能になります。

表表表表 3-13 initialize() メソッドの入力パラメータメソッドの入力パラメータメソッドの入力パラメータメソッドの入力パラメータ

名前名前名前名前 タイプタイプタイプタイプ 説明説明説明説明

node IRuntimeNode 作成された関数コンパニオンに関連付けられているノード・インスタンス。Configurator Developer で指定します。 現在、

Configurator Developer の関数コンパニオンに関連付けるこ

とができるのは、コンポーネントおよびコネクタのみです。

name 文字列 関数コンパニオンの名前。Configurator Developer で指定し

ます。

description 文字列 関数コンパニオンの摘要。Configurator Developer で指定し

ます。

id int 関数コンパニオンのデータベース ID。内部的に生成されま

す。

注意注意注意注意 : initialize()に 初の入力パラメータとして渡されるノードは、Oracle Configurator Developer で関数コンパニオンとモデル・ノードを関連付ける関数コンパニオン・ルールを作成するときに指定します。

3-40 Oracle Configuration Interface Object(CIO)開発者ガイド

Page 91: Oracle Configuration Interface Objeഀ挀瓿ࠀ䌀䤀俿ক譶 …Oracle Configuration Interface Object(CIO) 開発者ガイド リリース11i 2003 年2 月 部品番号:J06438-02

関数コンパニオンの標準インタフェース・メソッド

通常は、関数コンパニオンで独自の initialize()メソッドを実装する必要はありません。関数コンパニオンの他の場所で使用するために、FunctionalCompanion.initialize()の入力パラメータ値を取得する場合は、oracle.apps.cz.cio.FunctionalCompanionベース・クラスに含まれている FunctionalCompanionのアクセッサ・メソッドのセットを使用します。3-41 ページの表 3-14 にリストされているこれらのメソッドは、それぞれ対応する入力パラメータの値を戻します。

3.12.2 autoConfigure() インタフェース・メソッドインタフェース・メソッドインタフェース・メソッドインタフェース・メソッドIFunctionalCompanion.autoConfigure()メソッドは、制御されているユーザー・インタフェースの要求によってコールされ、モデル内の状態の設定、オプション・コンポーネントの追加、およびモデルを変更するその他のタスクを実行します。 (関数コンパニオンによるモデルの変更は、モデルへの副作用とも呼ばれます。)

表表表表 3-14 入力パラメータを戻すためのメソッド入力パラメータを戻すためのメソッド入力パラメータを戻すためのメソッド入力パラメータを戻すためのメソッド

メソッドメソッドメソッドメソッド 説明説明説明説明

getRuntimeNode() この関数コンパニオンが関連付けられているランタイム・ノードを戻します。

getName() 関数コンパニオンの名前を戻します。

getDescription() 関数コンパニオンの摘要を戻します。

getID() 関数コンパニオンのデータベース ID を戻します。

注意注意注意注意 : 現在、Configurator Developer で関数コンパニオンを関連付けることができるのはコネクタまたはコンポーネント(initialize()のnodeパラメータに相当)のみです。ただし、Configurator Developer の将来の拡張を考慮して、IFunctionalCompanionインタフェースでは任意のランタイム・ノードを関数コンパニオンに関連付けることが可能です。

警告警告警告警告 : initialize()メソッドでは、モデルを変更しないでください。メソッドでは、モデルを変更しないでください。メソッドでは、モデルを変更しないでください。メソッドでは、モデルを変更しないでください。 これを行うと、予期しないアプリケーション・エラーが発生する場合があこれを行うと、予期しないアプリケーション・エラーが発生する場合があこれを行うと、予期しないアプリケーション・エラーが発生する場合があこれを行うと、予期しないアプリケーション・エラーが発生する場合があります。ります。ります。ります。

注意注意注意注意 : 自動構成関数コンパニオンの使用は、モデル構造を変更するための唯一承認された方法です。

Configuration Interface Object(CIO)の使用 3-41

Page 92: Oracle Configuration Interface Objeഀ挀瓿ࠀ䌀䤀俿ক譶 …Oracle Configuration Interface Object(CIO) 開発者ガイド リリース11i 2003 年2 月 部品番号:J06438-02

関数コンパニオンの標準インタフェース・メソッド

このメソッドはモデルの自動構成を実行します。この処理では、オプションの論理状態を変更したり、モデル・ツリー内で選択されたコンポーネント・インスタンスの下位にノードを追加したりできます。

autoConfigure()の実装には、エンド・ユーザーが構成セッションのある時点に到達する前、またはエンド・ユーザーが行ったある選択の結果として実行する構成処理を記述できます。

3.12.3 validate() インタフェース・メソッドインタフェース・メソッドインタフェース・メソッドインタフェース・メソッドIFunctionalCompanion.validate()メソッドは、論理トランザクションが発生したときに自動的にコールされ、モデルが有効でない場合に CompanionValidationFailureオブジェクトの Listを戻します。

このメソッドは、エンド・ユーザーがモデル内のノードを選択するたびに、選択されているコンポーネント・インスタンスを関数によって検証します。

注意注意注意注意 : FunctionalCompanionを拡張し、autoConfigure()をオーバーライドする自動構成関数コンパニオンと、クラスAutoFunctionalCompanionを拡張する関数コンパニオンを混同しないでください。3-9 ページの 3.4.3 項を参照してください。

注意注意注意注意 : リリース 11i の現行バージョンでは、Oracle Configurator の UIサーバーが中心的なトランザクションをコミットできない、または適切なフィードバックを提供できないため、コード内で処理されていない矛盾、またはロールバックされていない矛盾によって致命的な例外が引き起こされる場合があります。 この状況は、自動構成関数コンパニオンで問題となる場合があります。詳細は、「FuncCompMessageException」を参照してください。

警告警告警告警告 : 通常は、オープンしている構成を非同期に変更するために外部プ通常は、オープンしている構成を非同期に変更するために外部プ通常は、オープンしている構成を非同期に変更するために外部プ通常は、オープンしている構成を非同期に変更するために外部プログラムを使用することはできません。これを行うと、ログラムを使用することはできません。これを行うと、ログラムを使用することはできません。これを行うと、ログラムを使用することはできません。これを行うと、Oracle Configurator のののの UI サーバーが使用されないため、マルチスレッドや、サーバーが使用されないため、マルチスレッドや、サーバーが使用されないため、マルチスレッドや、サーバーが使用されないため、マルチスレッドや、ユーザー・インタフェースにおける表示の更新などの点で問題が起こる可ユーザー・インタフェースにおける表示の更新などの点で問題が起こる可ユーザー・インタフェースにおける表示の更新などの点で問題が起こる可ユーザー・インタフェースにおける表示の更新などの点で問題が起こる可能性があります。この制限に対する主な例外は、能性があります。この制限に対する主な例外は、能性があります。この制限に対する主な例外は、能性があります。この制限に対する主な例外は、autoConfigure() メメメメソッドの本体の実行です。モデルを変更するためにソッドの本体の実行です。モデルを変更するためにソッドの本体の実行です。モデルを変更するためにソッドの本体の実行です。モデルを変更するために autoConfigure()を使用する場合は、このメソッドから戻る前にすべての変更を完了する必を使用する場合は、このメソッドから戻る前にすべての変更を完了する必を使用する場合は、このメソッドから戻る前にすべての変更を完了する必を使用する場合は、このメソッドから戻る前にすべての変更を完了する必要があります。これにより、要があります。これにより、要があります。これにより、要があります。これにより、UI サーバーが表示を更新して変更を反映すサーバーが表示を更新して変更を反映すサーバーが表示を更新して変更を反映すサーバーが表示を更新して変更を反映することが可能になります。ることが可能になります。ることが可能になります。ることが可能になります。

3-42 Oracle Configuration Interface Object(CIO)開発者ガイド

Page 93: Oracle Configuration Interface Objeഀ挀瓿ࠀ䌀䤀俿ক譶 …Oracle Configuration Interface Object(CIO) 開発者ガイド リリース11i 2003 年2 月 部品番号:J06438-02

関数コンパニオンの標準インタフェース・メソッド

validate()の実装には、エンド・ユーザーが何かを選択したときに必ず実行するタスクを記述できます。 たとえば、選択されているコンポーネントのオブジェクト・カウントに基づいて計算を行い、結果が定義範囲から外れていると、エンド・ユーザーに通知を提示できます。

検証に失敗した場合は、CIO によってエラーに関する情報が収集され、CompanionValidationFailureオブジェクトの Listに格納されます。詳細は、3-32ページの 3.9 項「構成の検証」を参照してください。

一般的に、validate()の実装は、次のような構成にします。

1. モデルから入力を取得します。

2. validate()の本体の外側で定義した汎用の検証関数をコールします。

3. 関数の値として戻された結果(NULL または CompanionValidationFailureオブジェクトの List)を伝播します。

適化に関して、次の点に注意が必要です。

� 検証テストおよびデフォルトは、予想よりも多く適用されます。 validate()は、エンド・ユーザーがランタイム Oracle Configurator でノードを選択するたびにコールされる点に注意してください。

� デフォルトは、できれば慎重に使用する必要があります。

� 検証テストは 小限に抑える必要があります。 必要なときのみ validate()がコールされるようにコードを設計します。 検証テストが迅速に実行されるように設計します。

3.12.4 generateOutput() インタフェース・メソッドインタフェース・メソッドインタフェース・メソッドインタフェース・メソッドgenerateOutput()メソッドは、制御されているユーザー・インタフェースの要求によって起動されます。

generateOutput()の実装には、データベースへの書込み、レポートの作成、エンド・ユーザーが選択した構成に関する視覚的表現の生成などのタスクを記述できます。

generateOutput()には次の 2 つのバージョンがあります。

� Thick クライアント・バージョン

public String generateOutput();

Thick クライアント・アーキテクチャとは、構成モデルとそれを操作するユーザー・インタフェースがどちらも同じクライアント・マシン上に存在するアーキテクチャです。

警告警告警告警告 : validate()メソッドでは、モデルを変更しないでください。メソッドでは、モデルを変更しないでください。メソッドでは、モデルを変更しないでください。メソッドでは、モデルを変更しないでください。 ここここれを行うと、予期しないアプリケーション・エラーが発生する場合がありれを行うと、予期しないアプリケーション・エラーが発生する場合がありれを行うと、予期しないアプリケーション・エラーが発生する場合がありれを行うと、予期しないアプリケーション・エラーが発生する場合があります。ます。ます。ます。

Configuration Interface Object(CIO)の使用 3-43

Page 94: Oracle Configuration Interface Objeഀ挀瓿ࠀ䌀䤀俿ক譶 …Oracle Configuration Interface Object(CIO) 開発者ガイド リリース11i 2003 年2 月 部品番号:J06438-02

関数コンパニオンの標準インタフェース・メソッド

Thick クライアント・アーキテクチャでは、関数コンパニオンの出力メソッドによってクライアント・マシン上に出力ウィンドウが直接生成されます。

� Thin クライアント・バージョン

public void generateOutput(HttpServletResponse response) throws IOException

ブラウザ・ベースの Thin クライアント・アーキテクチャとは、構成モデルがサーバーにあり、ユーザー・インタフェースがクライアント・マシンの Web ブラウザ上にあるアーキテクチャです。 Thin クライアント・アーキテクチャでは、関数コンパニオンの出力メソッドによって Web ブラウザ・ウィンドウへの出力が生成されます。

関数コンパニオンが Dynamic HTML in a browser などの Web 環境で動作するときは、このバージョンが起動します。

例は、5-2 ページの 5.2 項「Thin クライアント用 generateOutput() 関数コンパニオン」を参照してください。

現在は、generateOutput()によって生成された出力からユーザー・インタフェースまたはランタイム・モデルにフィードバックを提供するメカニズムはありません。

3.12.5 terminate() インタフェース・メソッドインタフェース・メソッドインタフェース・メソッドインタフェース・メソッドIFunctionalCompanion.terminate()メソッドは、関数コンパニオンが連結されているコンポーネントがランタイム・モデルから削除されたときに、CIO によって自動的にコールされます。

このメソッドの実装には、関数コンパニオンが削除されたときに実行するタスクを記述できます。 たとえば、initialize()でファイルをオープンし、データを読み込んだ場合は、terminate()によってそのファイルをクローズします。

通常は、関数コンパニオンから FunctionalCompanion.terminate()を直接コールする必要はありません。CIO がかわりにそれを自動的に行います。 ただし、関数コンパニオンのベース・クラスとして FunctionalCompanionを拡張し、特化した終了タスクを実行する場合は、作成したクラスでオーバーライドした terminate()メソッドからsuper.terminate()をコールする必要があります。

警告警告警告警告 : generateOutput()メソッドでは、モデルを変更しないでくだメソッドでは、モデルを変更しないでくだメソッドでは、モデルを変更しないでくだメソッドでは、モデルを変更しないでください。さい。さい。さい。 これを行うと、予期しないアプリケーション・エラーが発生する場これを行うと、予期しないアプリケーション・エラーが発生する場これを行うと、予期しないアプリケーション・エラーが発生する場これを行うと、予期しないアプリケーション・エラーが発生する場合があります。合があります。合があります。合があります。

警告警告警告警告 : terminate()メソッドでは、モデルを変更しないでください。メソッドでは、モデルを変更しないでください。メソッドでは、モデルを変更しないでください。メソッドでは、モデルを変更しないでください。 ここここれを行うと、予期しないアプリケーション・エラーが発生する場合がありれを行うと、予期しないアプリケーション・エラーが発生する場合がありれを行うと、予期しないアプリケーション・エラーが発生する場合がありれを行うと、予期しないアプリケーション・エラーが発生する場合があります。ます。ます。ます。

3-44 Oracle Configuration Interface Object(CIO)開発者ガイド

Page 95: Oracle Configuration Interface Objeഀ挀瓿ࠀ䌀䤀俿ক譶 …Oracle Configuration Interface Object(CIO) 開発者ガイド リリース11i 2003 年2 月 部品番号:J06438-02

CIO のリファレンス・マニュ

4

CIO のリファレンス・マニュアルのリファレンス・マニュアルのリファレンス・マニュアルのリファレンス・マニュアル

Oracle Configuration Interface Object のリファレンス・マニュアルは、Javadoc ツールによって CIO のソース・コードから生成されたページの形式で提供されます。これらのページは Oracle Configurator Developer とともにインストールされ、Oracle Configurator のドキュメントの一部として Windows の「スタート」メニューから利用できます。Oracle Configurator Developer のインストールに関する情報は、『Oracle Configurator インストレーション・ガイド』を参照してください。

アル 4-1

Page 96: Oracle Configuration Interface Objeഀ挀瓿ࠀ䌀䤀俿ক譶 …Oracle Configuration Interface Object(CIO) 開発者ガイド リリース11i 2003 年2 月 部品番号:J06438-02

4-2 Oracle Configuration Interface Object(CIO)開発者ガイド

Page 97: Oracle Configuration Interface Objeഀ挀瓿ࠀ䌀䤀俿ক譶 …Oracle Configuration Interface Object(CIO) 開発者ガイド リリース11i 2003 年2 月 部品番号:J06438-02

5

例例例例

この章には、関数コンパニオンと CIO の使用方法を具体的に説明するコード例が掲載されています。この章の例は、このマニュアルの他の章で提供されている断片的な例よりも量が多く、内容が詳細です。 詳細は、併記されている基本情報セクションを参照してください。

5.1 CIO の初期化の初期化の初期化の初期化 基本的な情報は、3-5 ページの 3.3 項「CIO の初期化」を参照してください。 この例は、CIOを使用するカスタム・ユーザー・インタフェース用に書かれたものです。

例例例例 5-1 CIO の初期化(詳細な例)の初期化(詳細な例)の初期化(詳細な例)の初期化(詳細な例)

import java.io.*;import java.sql.*;import oracle.apps.cz.cio.*;import oracle.apps.cz.common.*;

class cioExample

{ private CIO InitializeCIO() { CIO cio = null; CZContext context = null; String jdbcDriver = "oracle.jdbc.driver.OracleDriver"; // Class name of the JDBC driver String dbURL = "jdbc:oracle:thin:@server01:1521:sid01"; String dbOwner = "apps"; String dbUsername = "applsyspub"; String dbPassword = "pub"; try {

例 5-1

Page 98: Oracle Configuration Interface Objeഀ挀瓿ࠀ䌀䤀俿ক譶 …Oracle Configuration Interface Object(CIO) 開発者ガイド リリース11i 2003 年2 月 部品番号:J06438-02

Thin クライアント用 generateOutput() 関数コンパニオン

// Load the JDBC driver Class.forName(jdbcDriver); // Establish a connection to the database context = new CZContext(dbURL, dbUsername, dbPassword, dbOwner); } catch (ClassNotFoundException cnfe) { System.out.println("Error loading class " + jdbcDriver); System.exit(0); } catch (SQLException sqle) { System.out.println("Error in creating Context"); System.exit(0); } try { // Initialize the CIO cio = new CIO(); } catch (Exception e) { System.out.println("Exception in InitializeCIO"); cio = null; } return cio; }}

5.2 Thin クライアント用クライアント用クライアント用クライアント用 generateOutput() 関数コンパニオン関数コンパニオン関数コンパニオン関数コンパニオンこの関数コンパニオンは、generateOutput()の Thin クライアント・バージョンを使用しています(3-43 ページの 3.12.4 項を参照)。Web ブラウザから関数コンパニオンを起動すると、コンパニオンが連結されたノードをルートとするランタイム・モデル・ツリーがHTML 形式で生成されます。

このタイプの関数コンパニオンを使用するには、Oracle Configurator を Web 上に配置する必要があります。このマニュアルに記載されてない詳細は、『Oracle Configurator インテグレーション・ガイド』を参照してください。タスクの概要は次のとおりです。

� Java ソース・コードをクラス・ファイルにコンパイルします。

� Configurator Developer で、次の表でリストされているオプションを使用して関数コンパニオン・ルールを定義します。

5-2 Oracle Configuration Interface Object(CIO)開発者ガイド

Page 99: Oracle Configuration Interface Objeഀ挀瓿ࠀ䌀䤀俿ক譶 …Oracle Configuration Interface Object(CIO) 開発者ガイド リリース11i 2003 年2 月 部品番号:J06438-02

Thin クライアント用 generateOutput() 関数コンパニオン

� Oracle Configurator Developer のユーザー・インタフェース・モジュールで、関数コンパニオンを起動するコンポーネントのボタンを定義します。

� インターネット・サーバーで Oracle ConfiguratorOC サーブレットを作成します。詳細は、『Oracle Configurator インストレーション・ガイド』を参照してください。

� サーブレットの CLASSPATH 環境変数に関数コンパニオンの新しいクラス・ファイルを追加します。

� Configurator Developer から関数コンパニオンをテストできます。このためには、「Tools」>「Options」>「Test」>「Servlet URL」の順に選択してサーブレットの URLを指定し、「Dynamic HTML in a browser」オプションを選択して「Test」ボタンをクリックします。これにより、Web ブラウザが開いて XMLmsg パラメータを含む URL が渡されます。XMLmsg パラメータには必要な OC 初期化メッセージが含まれています。このメッセージにはデータベース接続文字列とログイン文字列が含まれているほか、Configurator Developer で作成したユーザー・インタフェース定義を識別する ui_def_idパラメータが含まれており、これによって表示するモデルが指定されます。

� ホスト・アプリケーションの代替となる HTML テスト・ページを作成すれば、Configurator Developer の外部で関数コンパニオンをテストできます。(『Oracle Configurator インテグレーション・ガイド』に例があります。)このページは、データベース接続情報、ログイン情報およびコンポーネントを含むモデルを指定する OC 初期化メッセージを送信します。 これらのパラメータは、「Test」ボタンで生成されるテンポラリ・ファイル C:¥temp¥dhtmlhtm.htmからコピーできます。HTML テスト・ページを開いて関数コンパニオンをテストします。

この例では、まず HttpServletResponse クラスの response.setContentType()メソッドをコールし、出力タイプとして「text/html」を渡しています。

次の行は、Microsoft Internet Explorer との互換性のために必要です。

response.setHeader ("Expires", "-1");

次に response.getWriter()をコールして、関数コンパニオンが HTML を書き込むための出力ストリームを取得します。

また、HTML 以外の出力を書き込むこともできます。これを行うには、異なるコンテンツ・タイプ(MIME タイプ)を設定し、出力ストリームに適切なデータを書き込みます。

オプションオプションオプションオプション 選択項目選択項目選択項目選択項目

タイプ 出力

ベース・コンポーネント 関数コンパニオンを連結するコンポーネント

実装言語 Java

プログラム文字列 クラス・ファイルの名前

例 5-3

Page 100: Oracle Configuration Interface Objeഀ挀瓿ࠀ䌀䤀俿ক譶 …Oracle Configuration Interface Object(CIO) 開発者ガイド リリース11i 2003 年2 月 部品番号:J06438-02

Thin クライアント用 generateOutput() 関数コンパニオン

例例例例 5-2 Thin クライアント用出力関数コンパニオンクライアント用出力関数コンパニオンクライアント用出力関数コンパニオンクライアント用出力関数コンパニオン

import java.io.IOException;import java.io.PrintWriter;import javax.servlet.http.HttpServletResponse;import com.sun.java.util.collections.Iterator;import oracle.apps.cz.cio.FunctionalCompanion;import oracle.apps.cz.cio.IRuntimeNode;

public class ShowStructure extends FunctionalCompanion {

public void generateOutput(HttpServletResponse response) throws IOException { response.setContentType("text/html"); response.setHeader ("Expires", "-1"); PrintWriter out = response.getWriter(); out.println("<html>"); out.println("<head>"); out.println("<title>Runtime Model Structure</title>"); out.println("</head>"); out.println("<body>"); out.println("<h3>Runtime Model Structure</h3>"); IRuntimeNode rootNode = getRuntimeNode(); generateNode(out, rootNode, 0); out.println("</body>"); out.println("</html>"); }

private static void generateNode(PrintWriter out, IRuntimeNode node, int level) throws IOException { for (int i = 0; i < level; ++i) { out.print("--"); } out.println(node.getName() + " <br> "); for (Iterator i = node.getChildren().iterator(); i.hasNext(); ) { IRuntimeNode childNode = (IRuntimeNode)i.next(); generateNode(out, childNode, (level + 1)); } }}

5-4 Oracle Configuration Interface Object(CIO)開発者ガイド

Page 101: Oracle Configuration Interface Objeഀ挀瓿ࠀ䌀䤀俿ক譶 …Oracle Configuration Interface Object(CIO) 開発者ガイド リリース11i 2003 年2 月 部品番号:J06438-02

要求の使用

5.3 構成の保存と終了構成の保存と終了構成の保存と終了構成の保存と終了この例では、構成の保存および終了に使用できる自動構成関数コンパニオンを定義しています。 この関数コンパニオンでは、メソッド IUserInterface.outputToFrame()を使用して、クライアント・ブラウザのフレームに JavaScript コードが書き込まれます。このメソッドは、JavaScript コードを書き込むフレームのパスと、フレームに書き込む JavaScript コードのテキストをパラメータとして取ります。

import oracle.apps.cz.cio.*;public class Save extends FunctionalCompanion { public void autoConfigure() { IUserInterface ui; ui = getRuntimeNode().getConfiguration().getUserInterface(); String script = " <html><body onload='postEvent()'>"; script += " <script>"; script += " function postEvent() {"; script += " bkr = parent.frames.czSrc.getUiBroker();"; script += " bkr.postClientMessage('<save exit=\"true\"></save>');"; script += "} <\\/script></body></html>"; ui.outputToFrame("parent.frames.rightBorder", script); }}

5.4 要求の使用要求の使用要求の使用要求の使用基本的な情報は、3-33 ページの 3.10 項「要求の使用」を参照してください。

5.4.1 初期要求の設定初期要求の設定初期要求の設定初期要求の設定この例では、 ConfigTransaction.useInitialRequests()を使用して要求のグループを初期要求として指定する方法を示しています。

基本的な情報は、3-35 ページの 3.10.3 項「初期要求」を参照してください。

例例例例 5-3 初期要求の設定(初期要求の設定(初期要求の設定(初期要求の設定(InitialRequestTest.java))))

import oracle.apps.cz.cio.*;import com.sun.java.util.collections.Iterator;

public class InitialRequestTest extends AutoFunctionalCompanion { public void onNew() throws LogicalException { IRuntimeNode comp = getRuntimeNode(); Configuration config = comp.getConfiguration(); ConfigTransaction itr = null; try {

例 5-5

Page 102: Oracle Configuration Interface Objeഀ挀瓿ࠀ䌀䤀俿ক譶 …Oracle Configuration Interface Object(CIO) 開発者ガイド リリース11i 2003 年2 月 部品番号:J06438-02

要求の使用

// Begin transaction that uses initial requests itr = config.beginConfigTransaction(); itr.useInitialRequests(); // Try setting an Option Feature with mutually exclusive Options. IRuntimeNode of1 = comp.getChildByName("option_feature_1"); // Select option_1 ConfigTransaction tr = config.beginConfigTransaction(); ((IOption)of1.getChildByName("option_1")).select(); config.commitConfigTransaction(tr); // Select option_2 tr = config.beginConfigTransaction(); ((IOption)of1.getChildByName("option_2")).select(); config.commitConfigTransaction(tr); // Try setting a value for an Integer Feature. tr = config.beginConfigTransaction(); ((IInteger)comp.getChildByName("integer_feature_1")).setIntValue(33); config.commitConfigTransaction(tr); // Try overriding a Boolean value. // boolean_feature_1 negates boolean_feature_2. This should produce a contradiction. tr = config.beginConfigTransaction(); try { ((BooleanFeature)comp.getChildByName("boolean_feature_1")).setState(IState.TRUE); ((BooleanFeature)comp.getChildByName("boolean_feature_2")).setState(IState.TRUE); } catch (LogicalOverridableException loe) { loe.override(); } config.commitConfigTransaction(tr); // Get next Component in Component set. ComponentSet cset = (ComponentSet)comp.getParent().getChildByName("component_set_1"); Component cset_comp_1 = null; Iterator iter = cset.getChildren().iterator(); if (iter.hasNext()) { cset_comp_1 = ((Component)iter.next()); } // Try deleting a Component from a Component set. // This is not allowed, and should produce a contradiction. try { tr = config.beginConfigTransaction(); cset.delete(cset_comp_1); config.commitConfigTransaction(tr); } catch (Exception e) { config.rollbackConfigTransaction(tr);

5-6 Oracle Configuration Interface Object(CIO)開発者ガイド

Page 103: Oracle Configuration Interface Objeഀ挀瓿ࠀ䌀䤀俿ক譶 …Oracle Configuration Interface Object(CIO) 開発者ガイド リリース11i 2003 年2 月 部品番号:J06438-02

要求の使用

System.out.println("Expected exception in deleting component " + e); } // Try adding a Component to a Component set. // This is not allowed, and should produce a contradiction. try { tr = config.beginConfigTransaction(); cset.add(); config.commitConfigTransaction(tr); } catch (Exception e) { config.rollbackConfigTransaction(tr); System.out.println("Expected exception in adding component " + e); } // Try setting value of a Text Feature of Component in Component set tr = config.beginConfigTransaction(); IRuntimeNode featText = cset_comp_1.getChildByName("text_feature_1"); ((IText)featText).setTextValue("any_text"); config.commitConfigTransaction(tr); // Try overriding default value of an Integer Feature of Component in Component set IRuntimeNode intFeatDef = comp.getParent().getChildByName("integer_feature_default"); tr = config.beginConfigTransaction(); ((IInteger)intFeatDef).setIntValue(50); // Default value was 25 config.commitConfigTransaction(tr); // Commit the transaction that used initial requests config.commitConfigTransaction(itr); // Try setting an initial request after a user request // Make an ordinary user request: tr = config.beginConfigTransaction(); ((IState)comp.getChildByName("boolean_feature_3")).setState(IState.TRUE); config.commitConfigTransaction(tr); try { // Attempt to use initial requests after an ordinary user request: // This is not allowed, and should produce a contradiction. tr = config.beginConfigTransaction(); tr.useInitialRequests(); ((IState)comp.getChildByName("boolean_feature_4")).setState(IState.TRUE); config.commitConfigTransaction(tr); } catch (InitialRequestException ire) { System.out.println("InitialRequestException: " + ire); config.rollbackConfigTransaction(tr); System.out.println("Expected exception in attempting initial requests " + ire); } } catch (Exception e) {

例 5-7

Page 104: Oracle Configuration Interface Objeഀ挀瓿ࠀ䌀䤀俿ক譶 …Oracle Configuration Interface Object(CIO) 開発者ガイド リリース11i 2003 年2 月 部品番号:J06438-02

要求の使用

e.printStackTrace(); } catch (Throwable t) { t.printStackTrace(); } }}

5.4.2 失敗した要求のリストの取得失敗した要求のリストの取得失敗した要求のリストの取得失敗した要求のリストの取得この例では、LogicalOverridableException.override()を使用して、論理的矛盾を無効にし、この無効化によって失敗したアサーション済みのすべてのユーザー要求を表すList of Request オブジェクトを戻す方法を示しています。

基本的な情報は、3-37 ページの 3.10.4 項「失敗した要求」を参照してください。

例例例例 5-4 失敗した要求のリストの取得(失敗した要求のリストの取得(失敗した要求のリストの取得(失敗した要求のリストの取得(OverrideTest.java))))

import oracle.apps.cz.cio.*;import oracle.apps.cz.common.*;import oracle.apps.fnd.common.*;import java.util.*;import com.sun.java.util.collections.List;import com.sun.java.util.collections.Iterator;

public class OverrideTest{ public static void main(String[] args) { ConfigTransaction tr = null; Configuration config = null; try { Class.forName("oracle.jdbc.driver.OracleDriver"); WebAppsContext ctx = new WebAppsContext("server01_sid02"); // Use DBC file for context CIO cio = new CIO(); config = cio.createConfiguration("overrideTest", ctx, null, Calendar.getInstance(), Calendar.getInstance(), null, null); OptionFeature of = (OptionFeature)config.getRootComponent().getChildByName("Feature1"); Option o1 = (Option) of.getChildByName("Option1"); Option o2 = (Option) of.getChildByName("Option2");

try { tr = config.beginConfigTransaction(); o1.select(); o2.deselect(); config.commitConfigTransaction(tr); } catch (LogicalOverridableException loe) { try {

5-8 Oracle Configuration Interface Object(CIO)開発者ガイド

Page 105: Oracle Configuration Interface Objeഀ挀瓿ࠀ䌀䤀俿ক譶 …Oracle Configuration Interface Object(CIO) 開発者ガイド リリース11i 2003 年2 月 部品番号:J06438-02

ユーザー・インタフェースとの対話

// Get list of failed requests, if any List list = loe.override(); System.out.println("Option1: " + o1+ " State: " + o1.getState()); System.out.println("Option2: " + o2+ " State: " + o2.getState()); printList(list); config.commitConfigTransaction(tr); } catch (Exception re) { re.printStackTrace(); config.rollbackConfigTransaction(tr); } } catch (LogicalException le) { le.printStackTrace(); config.rollbackConfigTransaction(tr); } } catch (Exception e) { e.printStackTrace(); } } public static void printList(List list) { Iterator iter = list.iterator(); while (iter.hasNext()) { System.out.println("Node: " + iter.next()); } System.out.println("***************\n"); }}

5.5 ユーザー・インタフェースとの対話ユーザー・インタフェースとの対話ユーザー・インタフェースとの対話ユーザー・インタフェースとの対話ユーザー・インタフェースと対話する関数コンパニオンを使用するには、Oracle Configurator を Web 上に配置する必要があります。このマニュアルに記載されてない詳細は、『Oracle Configurator インテグレーション・ガイド』を参照してください。

Web 上で関数コンパニオンを実装するために必要なタスクの概要は、5-2 ページの 5.2 項「Thin クライアント用 generateOutput() 関数コンパニオン」の説明を参照してください。ただし、次の点が異なります。

� 各関数コンパニオン・ルールを検証ルールとして定義し、ユーザーがルールに関連付けられたノードを選択するたびに検証ルールが実行されるようにします。

� 検証ルールはボタンでは起動されないため、これらの関数コンパニオンのユーザー・インタフェース内にはボタンを作成しないでください。

詳細は、次の各例の説明を参照してください。

例 5-9

Page 106: Oracle Configuration Interface Objeഀ挀瓿ࠀ䌀䤀俿ক譶 …Oracle Configuration Interface Object(CIO) 開発者ガイド リリース11i 2003 年2 月 部品番号:J06438-02

ユーザー・インタフェースとの対話

5.5.1 画面へのナビゲート画面へのナビゲート画面へのナビゲート画面へのナビゲートこの関数コンパニオンは、次のメソッドを使用してモデル・ツリー内のノード間をプログラム的にナビゲートする方法を示しています。

� IUserInterface.navigateToScreen()

� IUserInterface.getCurrentScreen()

� IUserInterface.getOriginalScreen()

この例を使用するには、次の表にリストされている(コード例で強調表示されている)変数を実際のモデル・ツリー内のノードの名前に置換します。

例例例例 5-5 画面へのナビゲート(画面へのナビゲート(画面へのナビゲート(画面へのナビゲート(ScreenNav.java))))

import javax.servlet.http.HttpServletResponse;import java.io.PrintWriter;import java.io.*;import oracle.apps.cz.cio.FunctionalCompanion;import oracle.apps.cz.cio.AutoFunctionalCompanion;import oracle.apps.cz.cio.IUserInterface;import oracle.apps.cz.cio.*;import com.sun.java.util.collections.List;import com.sun.java.util.collections.Iterator;import oracle.apps.cz.utilities.CheckedToUncheckedException ;import java.awt.Toolkit;

public class ScreenNav extends FunctionalCompanion implements IUserInterfaceEventListener {

IUserInterface mUi; Component rootnode; PrintWriter p = null; String optsel = "O4"; String screenname = "C21"; public void initialize(IRuntimeNode node, String name, String description, int id) { try{ p = new PrintWriter(new FileWriter("D:\\servlets\\screennav.txt",true)); }

変数変数変数変数 使用方法使用方法使用方法使用方法

optsel = "O4" 選択されたときに特定の画面へナビゲートするオプションの名前。

screenname = "C21" 「optsel」が選択されたときにナビゲート先となるコンポーネント

画面の名前。

5-10 Oracle Configuration Interface Object(CIO)開発者ガイド

Page 107: Oracle Configuration Interface Objeഀ挀瓿ࠀ䌀䤀俿ক譶 …Oracle Configuration Interface Object(CIO) 開発者ガイド リリース11i 2003 年2 月 部品番号:J06438-02

ユーザー・インタフェースとの対話

catch(Exception e) { e.printStackTrace(); } super.initialize(node, name, description, id); mUi = this.getRuntimeNode().getConfiguration().getUserInterface(); mUi.addUserInterfaceEventListener(IUserInterfaceEvent.POST_CLICK, this); mUi.getCurrentScreen(); rootnode = (Component)this.getRuntimeNode(); } public void handleUserInterfaceEvent(IUserInterfaceEvent event) { try{ IUserInterfaceScreen currscreen = mUi.getCurrentScreen(); if (event.getUiNode() == null) return; if ((event.getUiNode().getType() == IUserInterfaceNode.OPTION) && (event.getUiNode().getName().equalsIgnoreCase(optsel))) { p.println("Screen before navigating is " + mUi.getCurrentScreen().getName()); IOption optf = (IOption)event.getUiNode().getRuntimeNode(); if (optf.isTrue()){ p.println("Navigating to screen " + screenname); mUi.navigateToScreen(screenname); p.println("Current screen is " + mUi.getCurrentScreen().getName()); p.println("Original screen was " + mUi.getOriginalScreen().getName()); } } p.flush(); } catch(Exception e){e.printStackTrace();} }

public IRuntimeNode treetrav (IRuntimeNode rtnode,String nodename){ List children = rtnode.getChildren(); Iterator iter = (Iterator)children.iterator(); while (iter.hasNext()){ IRuntimeNode currchild = (IRuntimeNode)iter.next(); if (currchild.getName().equalsIgnoreCase(nodename)) return currchild; if ((treetrav (currchild,nodename)) != null) return currchild; }

例 5-11

Page 108: Oracle Configuration Interface Objeഀ挀瓿ࠀ䌀䤀俿ক譶 …Oracle Configuration Interface Object(CIO) 開発者ガイド リリース11i 2003 年2 月 部品番号:J06438-02

ユーザー・インタフェースとの対話

return null; }}

5.5.2 ノードの画面タイトルの変更ノードの画面タイトルの変更ノードの画面タイトルの変更ノードの画面タイトルの変更この関数コンパニオンは、次のクラスおよびメソッドを使用して、モデル・ツリー・ビュー

(TREELINK タイプ)内のノードの画面タイトルを変更する方法を示しています。

� IUserInterfaceNode

� IUserInterfaceLabel.setUiCaption()

この例を使用するには、この関数コンパニオンをモデル・ツリーのルート・ノードに連結し、次の表にリストされている(コード例で強調表示されている)変数を実際のモデル・ツリー内のノードの名前に置換します。

例例例例 5-6 ノードの画面タイトルの変更(ノードの画面タイトルの変更(ノードの画面タイトルの変更(ノードの画面タイトルの変更(CaptionChng.java))))

import javax.servlet.http.HttpServletResponse;import java.io.PrintWriter;import java.io.*;import oracle.apps.cz.cio.FunctionalCompanion;import oracle.apps.cz.cio.AutoFunctionalCompanion;import oracle.apps.cz.cio.IUserInterface;import oracle.apps.cz.cio.*;import com.sun.java.util.collections.List;import oracle.apps.cz.uiserver.engine.*;import com.sun.java.util.collections.Iterator;import oracle.apps.cz.utilities.CheckedToUncheckedException ;import oracle.apps.fnd.common.Context;import java.awt.Toolkit;import java.util.*;

public class CaptionChng extends FunctionalCompanion implements IUserInterfaceEventListener,IUserInterfaceNode{ IUserInterface mUi; Component rootnode; String ChangeCapOf="C11"; String ChangeCapTo="Comp11";

変数変数変数変数 使用方法使用方法使用方法使用方法

ChangeCapOf="C11" 変更する TREELINK 画面タイトルの名前。

ChangeCapTo="Comp11" 変更後の TREELINK 画面タイトルの名前。

5-12 Oracle Configuration Interface Object(CIO)開発者ガイド

Page 109: Oracle Configuration Interface Objeഀ挀瓿ࠀ䌀䤀俿ক譶 …Oracle Configuration Interface Object(CIO) 開発者ガイド リリース11i 2003 年2 月 部品番号:J06438-02

ユーザー・インタフェースとの対話

public void initialize(IRuntimeNode node, String name, String description, int id) { super.initialize(node, name, description, id); mUi = this.getRuntimeNode().getConfiguration().getUserInterface(); mUi.addUserInterfaceEventListener(IUserInterfaceEvent.POST_CLICK, this); rootnode = (Component)this.getRuntimeNode(); } public void handleUserInterfaceEvent(IUserInterfaceEvent event) { try{ rootnode = (Component)this.getRuntimeNode(); if (event.getUiNode() == null) return; if (mUi.getCurrentScreen().getName().equals(ChangeCapOf)) { IRuntimeNode nodefound = (IRuntimeNode)treetrav (rootnode,ChangeCapOf); Iterator iternode = mUi.getNode(nodefound).iterator(); while (iternode.hasNext()){ IUserInterfaceNode unode = (IUserInterfaceNode)iternode.next(); if (unode.getType()== (IUserInterfaceNode.TREELINK)) { ((IUserInterfaceLabel)unode).setUiCaption(ChangeCapTo); break; } } } } catch(Exception e){e.printStackTrace();} }

public IRuntimeNode treetrav (IRuntimeNode rootnode,String nodename){ IRuntimeNode retNode = null; List children = rootnode.getChildren(); Iterator iter = (Iterator)children.iterator(); while (iter.hasNext()){ IRuntimeNode currchild = (IRuntimeNode)iter.next(); if (currchild.getName().equalsIgnoreCase(nodename)) return currchild; if (( retNode=treetrav (currchild,nodename)) != null) return retNode; } return null; } public int getType(){return 0;};

例 5-13

Page 110: Oracle Configuration Interface Objeഀ挀瓿ࠀ䌀䤀俿ক譶 …Oracle Configuration Interface Object(CIO) 開発者ガイド リリース11i 2003 年2 月 部品番号:J06438-02

ユーザー・インタフェースとの対話

public String getUiCaption(){return null;}; public IUserInterfaceScreen getScreen(){return null;};}

5.5.3 イメージの変更イメージの変更イメージの変更イメージの変更この関数コンパニオンは、次のクラスを使用して、特定のオプションに関連付けられたイメージを変更する方法を示しています。

� IUserInterfaceImage

� IUserInterfaceScreen

この例を使用するには、Oracle Configurator Developer で次の手順に従います。

1. モデル・モジュールで、コンポーネント C1を作成または使用します。

2. C1で、フィーチャ F1を作成します。

3. F1で、オプション O1、O2および O3を作成します。

ここでは、次の表にリストされた GIF ファイルをインストールしており、すべてのイメージが同じサイズであると仮定します。

4. O1および O3で、それぞれ rightarr.gifという値を持つ img1という名前のプロパティを追加します。

5. O2で、lefttarr.gifという値を持つ img1という名前のプロパティを追加します。

6. ルール・モジュールで、この例に関係する関数コンパニオン・ルールを定義し、それをコンポーネント C1に関連付けます。

7. 「Tools」>「Generate Active Model」を選択します。

8. UI モジュールで、モデルのユーザー・インタフェースを「Refresh」または「Create」します。

9. C1の UI ノードで Picture オブジェクトを追加し、Picture オブジェクトにplaceholderという名前を付けます。 この Picture オブジェクトにイメージ・パス

(D:¥orant¥OC¥Shared¥ActiveMedia¥blank.gifなど)を設定し、Picture オブジェクトを参照します。

ファイル名ファイル名ファイル名ファイル名 説明説明説明説明

rightarr.gif 右矢印のイメージ

lefttarr.gif 左矢印のイメージ

blank.gif 空白のプレースホルダのイメージ

5-14 Oracle Configuration Interface Object(CIO)開発者ガイド

Page 111: Oracle Configuration Interface Objeഀ挀瓿ࠀ䌀䤀俿ক譶 …Oracle Configuration Interface Object(CIO) 開発者ガイド リリース11i 2003 年2 月 部品番号:J06438-02

ユーザー・インタフェースとの対話

10. イメージ・ファイルに合せて、Picture オブジェクトの位置とサイズを調整します。

11. これらの GIF ファイルを、Developer の ActiveMedia フォルダと、Oracle Configuratorサーブレットの OA_MEDIA ディレクトリ内に配置します。

12.「User Interface」を選択し、「Edit」>「Refresh」の順に選択します。

13.「Test」ボタンを使用して Dynamic HTML in a browser を表示し、「C1」をクリックします。

14.(F1の)「O1」または「O3」を選択すると、右矢印が画面上に表示されます。

15.「O2」を選択すると、左矢印が画面上に表示されます。

例例例例 5-7 イメージの変更(イメージの変更(イメージの変更(イメージの変更(ImageChange.java))))

import javax.servlet.http.HttpServletResponse;import java.io.PrintWriter;import java.io.*;import oracle.apps.cz.cio.FunctionalCompanion;import oracle.apps.cz.cio.AutoFunctionalCompanion;import oracle.apps.cz.cio.IUserInterface;import oracle.apps.cz.cio.*;import com.sun.java.util.collections.List;import com.sun.java.util.collections.Iterator;import oracle.apps.cz.utilities.CheckedToUncheckedException ;import java.awt.Toolkit;

public class ImageChange extends FunctionalCompanion implements IUserInterfaceEventListener {

IUserInterface mUi; Component rootnode; PrintWriter p = null; public void initialize(IRuntimeNode node, String name, String description, int id) { super.initialize(node, name, description, id); mUi = this.getRuntimeNode().getConfiguration().getUserInterface(); mUi.addUserInterfaceEventListener(IUserInterfaceEvent.POST_CLICK, this); rootnode = (Component)this.getRuntimeNode(); } public void handleUserInterfaceEvent(IUserInterfaceEvent event) { try{ if (event.getUiNode().getType() == IUserInterfaceNode.OPTION); {

例 5-15

Page 112: Oracle Configuration Interface Objeഀ挀瓿ࠀ䌀䤀俿ক譶 …Oracle Configuration Interface Object(CIO) 開発者ガイド リリース11i 2003 年2 月 部品番号:J06438-02

親ウィンドウと子ウィンドウの制御

Option optsel = (Option)event.getUiNode().getRuntimeNode(); String imagename = optsel.getPropertyByName("img1").getStringValue(); IUserInterfaceScreen currscr = mUi.getCurrentScreen(); List images = currscr.getNode("placeholder"); IUserInterfaceImage placeholder = (IUserInterfaceImage)images.get(0); placeholder.setFileName(imagename); } } catch(Exception e){e.printStackTrace();} }

}

5.6 親ウィンドウと子ウィンドウの制御親ウィンドウと子ウィンドウの制御親ウィンドウと子ウィンドウの制御親ウィンドウと子ウィンドウの制御親ウィンドウと子ウィンドウを制御する関数コンパニオンを使用するには、Oracle Configurator を Web 上に配置する必要があります。このマニュアルに記載されてない詳細は、『Oracle Configurator インテグレーション・ガイド』を参照してください。

Web 上で関数コンパニオンを実装するために必要なタスクの概要は、5-2 ページの 5.2 項「Thin クライアント用 generateOutput() 関数コンパニオン」に記載されている説明を参照してください。

5.6.1 ウィンドウのロック、ロック解除およびリフレッシュウィンドウのロック、ロック解除およびリフレッシュウィンドウのロック、ロック解除およびリフレッシュウィンドウのロック、ロック解除およびリフレッシュこの例に関する基本的な情報は、2-11 ページの 2.2.1 項「ウィンドウのロック、ロック解除およびリフレッシュ」を参照してください。

関数コンパニオン・ルールを定義したら、そのルールを例 5-8 のコンパイル済みコードに関連付けます。

この例に示したホスト名とポート番号の値は、実際のサイトに合せて設定する必要があります。

http://server01:8800/configurator/Replace

ウィンドウをロック、ロック解除およびリフレッシュするメソッドは、強調表示されています。

update 関数を実装するサーブレットのコードは、 5-18 ページの 5.6.2 項「共有構成モデルへのアクセス」の例 5-9 で示します。

5-16 Oracle Configuration Interface Object(CIO)開発者ガイド

Page 113: Oracle Configuration Interface Objeഀ挀瓿ࠀ䌀䤀俿ক譶 …Oracle Configuration Interface Object(CIO) 開発者ガイド リリース11i 2003 年2 月 部品番号:J06438-02

親ウィンドウと子ウィンドウの制御

例例例例 5-8 子ウィンドウの起動(子ウィンドウの起動(子ウィンドウの起動(子ウィンドウの起動(Launch.java))))

import javax.servlet.http.HttpServletResponse;import java.io.PrintWriter;import oracle.apps.cz.cio.FunctionalCompanion;import oracle.apps.cz.cio.AutoFunctionalCompanion;

public class Launch extends AutoFunctionalCompanion{ /** * Constructor: * Can be used for any necessary setup. */ public Launch() { } public void generateOutput(HttpServletResponse response) { try { response.setContentType("text/html"); PrintWriter out = response.getWriter(); out.println("<html>"); out.println("<head>"); out.println("<script language=\"javascript\">"); out.println("var winHandle = opener;"); // The "opener" is the czSource.htm frame. // The methods are made public here. out.println("function lock() { opener.lockEventManagers();}"); out.println("function unlock() { opener.unlockEventManagers();}"); out.println("function refresh() { opener.refreshFrames();}"); out.println("function update() { lock(); document.form1.submit();}"); out.println("</script></head>"); out.println("<body><form name='form1' action='http://server01:8800/configurator/Replace'>"); out.println("<input type='button' value='lock' onClick='lock();'>"); out.println("<input type='button' value='unlock' onClick='unlock();'>"); out.println("<input type='button' value='refresh' onClick='refresh();'>"); out.println("<input type='button' value='update' onClick='update();'>"); out.println("</form></body>"); out.println("</html>"); } catch(Exception e){e.printStackTrace();} }

public void onNew() {

例 5-17

Page 114: Oracle Configuration Interface Objeഀ挀瓿ࠀ䌀䤀俿ক譶 …Oracle Configuration Interface Object(CIO) 開発者ガイド リリース11i 2003 年2 月 部品番号:J06438-02

親ウィンドウと子ウィンドウの制御

}}

5.6.2 共有構成モデルへのアクセス共有構成モデルへのアクセス共有構成モデルへのアクセス共有構成モデルへのアクセスこの例に関する基本的な情報は、2-11 ページの 2.2.2 項「共有構成モデルへのアクセス」を参照してください。

このサーブレット・コードは、5-16 ページの 5.6 項「親ウィンドウと子ウィンドウの制御」の例 5-8 に示した update 関数を実装します。

この例に示したモデル・ノードの名前は、実際のモデルに合せて設定する必要があります。

Component-11820Feature-11821Option-11822Option-11825

例例例例 5-9 共有構成モデルへのアクセス(共有構成モデルへのアクセス(共有構成モデルへのアクセス(共有構成モデルへのアクセス(Replace.java))))

import javax.servlet.*;import javax.servlet.http.*;import java.io.*;import java.util.Iterator;import java.util.ArrayList;import oracle.apps.cz.cio.Configuration;import oracle.apps.cz.cio.Component;import oracle.apps.cz.cio.IRuntimeNode;import oracle.apps.cz.cio.RuntimeNode;import oracle.apps.cz.cio.ComponentNode;import oracle.apps.cz.cio.OptionFeature;import oracle.apps.cz.cio.Option;import oracle.apps.cz.cio.NoSuchChildException;import oracle.apps.cz.cio.LogicalException;import oracle.apps.cz.cio.TransactionException;import oracle.apps.cz.cio.IState;import oracle.apps.cz.cio.ConfigTransaction;

public class Replace extends HttpServlet {

//Initialize global variables public void init(ServletConfig config) throws ServletException { super.init(config); }

//Process the HTTP Get request public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

5-18 Oracle Configuration Interface Object(CIO)開発者ガイド

Page 115: Oracle Configuration Interface Objeഀ挀瓿ࠀ䌀䤀俿ক譶 …Oracle Configuration Interface Object(CIO) 開発者ガイド リリース11i 2003 年2 月 部品番号:J06438-02

親ウィンドウと子ウィンドウの制御

response.setContentType("text/html"); ArrayList list = new ArrayList(); // Here we are updating the Model. try{ HttpSession ses = request.getSession(true); // Here we are getting the configuration Object stored in the http session. Configuration conf = (Configuration)ses.getValue("configurationObject"); Component root = conf.getRootComponent(); IRuntimeNode node = root.getChildByName("Component-11820"); OptionFeature child = (OptionFeature)node.getChildByName("Feature-11821"); Option opt1 = (Option)child.getChildByName("Option-11822"); Option opt2 = (Option)child.getChildByName("Option-11825"); ConfigTransaction ct = conf.beginConfigTransaction(); try{ try{ opt1.setState(IState.UTRUE); opt2.setState(IState.UTRUE); conf.commitConfigTransaction(ct); }catch(LogicalException le){} }catch(TransactionException le){} }catch(NoSuchChildException e){}

PrintWriter out = new PrintWriter (response.getOutputStream()); out.println("<html>"); out.println("<head>"); out.println("<script language=\"javascript\">"); out.println("var winHandle = opener;"); out.println("function init() { winHandle.unlockEventManagers(); winHandle.refreshFrames(); }"); out.println("</script></head>"); out.println("<body onLoad='init();'>We have just updated and refreshed the model.</body>"); out.println("</html>"); out.close(); }

//Process the HTTP Post request public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html"); PrintWriter out = new PrintWriter (response.getOutputStream()); out.println("<html>"); out.println("<head><title>Replace</title></head>"); out.println("<body>"); out.println("</body></html>"); out.close(); }//Get Servlet information

例 5-19

Page 116: Oracle Configuration Interface Objeഀ挀瓿ࠀ䌀䤀俿ক譶 …Oracle Configuration Interface Object(CIO) 開発者ガイド リリース11i 2003 年2 月 部品番号:J06438-02

親ウィンドウと子ウィンドウの制御

public String getServletInfo() { return "Information about Replace"; }}

5-20 Oracle Configuration Interface Object(CIO)開発者ガイド

Page 117: Oracle Configuration Interface Objeഀ挀瓿ࠀ䌀䤀俿ক譶 …Oracle Configuration Interface Object(CIO) 開発者ガイド リリース11i 2003 年2 月 部品番号:J06438-02

用語および略語集用語および略語集用語および略語集用語および略語集

この用語集には、Oracle Configurator を操作する上で必要となる定義が含まれます。

API

Application Programming Interface(アプリケーション・プログラミング・インタフェース)

ATO

Assemble to Order(受注組立)

ATP

Available to Promise(有効在庫数量)

Bill of Material

Bill of Material を定義する Oracle Applications 内のアプリケーション。

BOM

「Bill of Material」を参照。

BOM オプション区分ノードオプション区分ノードオプション区分ノードオプション区分ノード ((((BOM Option Class node))))

Oracle Configurator Developer にインポートされたノードノードノードノード。Oracle Bill of Material で作成された BOM オプション区分に対応する。

BOM 標準品目ノード標準品目ノード標準品目ノード標準品目ノード ((((BOM Standard Item node))))

Oracle Configurator Developer にインポートされたノードノードノードノード。Oracle Bill of Material で作成された BOM 標準品目に対応する。

BOM 品目品目品目品目 ((((BOM item))))

Oracle Configurator Developer にインポートされたノードノードノードノード。Oracle Bill of Material 品目に対応する。 BOM モデルモデルモデルモデル、BOM オプション区分ノードオプション区分ノードオプション区分ノードオプション区分ノードまたは BOM 標準品目ノード標準品目ノード標準品目ノード標準品目ノードがある。

用語および略語集用語および略語集用語および略語集用語および略語集 -1

Page 118: Oracle Configuration Interface Objeഀ挀瓿ࠀ䌀䤀俿ক譶 …Oracle Configuration Interface Object(CIO) 開発者ガイド リリース11i 2003 年2 月 部品番号:J06438-02

BOM モデルモデルモデルモデル ((((BOM Model))))

Oracle Bill of Material から Oracle Configurator Developer にインポートするモデル。 BOMモデルをインポートすると、有効日、ATO ルールおよびその他のデータも Configurator Developer にインポートされる。 Configurator Developer では、BOM モデルの構造を拡張できるが、BOM モデル自体やその属性属性属性属性は変更できない。

BOM モデル・ノードモデル・ノードモデル・ノードモデル・ノード ((((BOM Model node))))

Oracle Configurator Developer にインポートされたノードノードノードノード。Oracle Bill of Material で作成された BOM モデルモデルモデルモデルに対応する。

CIO

「Oracle Configuration Interface Object((((CIO))))」を参照。

Configuration Interface Object

「Oracle Configuration Interface Object((((CIO))))」を参照。

Configurator

カスタム構成機能を提供するアプリケーションの一部。 通常、ホスト・アプリケーションから起動できるウィンドウであり、エンド・ユーザーエンド・ユーザーエンド・ユーザーエンド・ユーザーは構成構成構成構成が有効となる選択ができる。

「Oracle Configurator」と対比。

CRM

「Customer Relationship Management」を参照。

CTO

Configure to Order(受注構成)

Customer Relationship Management (顧客関係管理)(顧客関係管理)(顧客関係管理)(顧客関係管理)

リードの生成からサポート・サービスに及ぶ顧客との接触に必要な企業の視点。

CZ

Oracle Applications での Oracle Configurator に対する製品略称。

DBMS

Database Management System(データベース管理システム)

Developer/ 開発者開発者開発者開発者 ((((Developer))))

構成モデル構成モデル構成モデル構成モデルを作成するために使用するツール(Oracle Configurator Developer)。

DHTML

Dynamic Hypertext Markup Language(ダイナミック・ハイパーテキスト・マークアップ言語)

用語および略語集用語および略語集用語および略語集用語および略語集 -2

Page 119: Oracle Configuration Interface Objeഀ挀瓿ࠀ䌀䤀俿ক譶 …Oracle Configuration Interface Object(CIO) 開発者ガイド リリース11i 2003 年2 月 部品番号:J06438-02

DIO

「データ統合オブジェクトデータ統合オブジェクトデータ統合オブジェクトデータ統合オブジェクト」を参照。

DLL

Dynamically Linked Library(ダイナミック・リンク・ライブラリ)

DSN

「データソースデータソースデータソースデータソース((((data source))))」を参照。

ERP

企業資源計画(Enterprise Resource Planning)。受注処理など、顧客のバックオフィス業務を自動化するソフトウェア・システムとプロセス。

HTML

Hypertext Markup Language(ハイパーテキスト・マークアップ言語)

ICX

Inter-Cartridge Exchange(カートリッジ間交換)

IS

Information Services(情報サービス)

Java

インターネット・アプリケーションで一般的に使用されるオブジェクト指向プログラミング言語であり、Java アプリケーションは Web ブラウザおよびサーバーサーバーサーバーサーバーで実行される。 「アプアプアプアプレットレットレットレット((((applet))))」および「サーブレットサーブレットサーブレットサーブレット((((servlet))))」も参照。

LAN

Local Area Network(ローカル・エリア・ネットワーク)

LCE

Logical Configuration Engine(論理構成エンジン) 。「アクティブ・モデルアクティブ・モデルアクティブ・モデルアクティブ・モデル((((Active Model))))」と対比。

MS

Microsoft 社

OC

「Oracle Configurator」を参照。

用語および略語集用語および略語集用語および略語集用語および略語集 -3

Page 120: Oracle Configuration Interface Objeഀ挀瓿ࠀ䌀䤀俿ক譶 …Oracle Configuration Interface Object(CIO) 開発者ガイド リリース11i 2003 年2 月 部品番号:J06438-02

OCD

「Oracle Configurator Developer」を参照。

ODBC

Open Database Connectivity(オープン・データベース接続性)。 ドライバを使用してアプリケーションからのデータ問合せを DBMS コマンドに翻訳するデータベース・アクセス・メソッド。

Oracle Configuration Interface Object((((CIO))))

クライアントクライアントクライアントクライアント(通常、ユーザー・インタフェースユーザー・インタフェースユーザー・インタフェースユーザー・インタフェース)とアクティブ・モデルアクティブ・モデルアクティブ・モデルアクティブ・モデルにおけるモデル構モデル構モデル構モデル構造造造造とルールの基本表現の間のインタフェースを作成し、管理するランタイムランタイムランタイムランタイム・アプリケーションのサーバーサーバーサーバーサーバー。

CIO は、モデルの作成およびナビゲート、選択状態の照会および変更、構成構成構成構成の保存および復元をサポートする API である。

Oracle Configurator

Oracle Configurator スキーマスキーマスキーマスキーマ、Oracle Configurator Developer およびランタイム Oracle Configurator などの開発ツールやランタイムランタイムランタイムランタイム・アプリケーションから構成される製品。 ネットワーク環境または Web 環境で使用するため様々にパッケージ化されたランタイム Oracle Configurator。

Oracle Configurator Developer

Configurator を作成し、保守するための Oracle Configurator 製品のツールの集合。

Oracle Configurator アーキテクチャアーキテクチャアーキテクチャアーキテクチャ ((((Oracle Configurator architecture))))

3 層ランタイムランタイムランタイムランタイム・アーキテクチャは、ユーザー・インタフェースユーザー・インタフェースユーザー・インタフェースユーザー・インタフェース、アクティブ・モデルアクティブ・モデルアクティブ・モデルアクティブ・モデルおよび Oracle Configurator スキーマスキーマスキーマスキーマで構成される。 アプリケーション開発アーキテクチャは、Oracle Configurator Developer、Oracle Configurator スキーマおよびランタイム Oracle Configurator のテスト・インスタンスから構成される。

Oracle Configurator ウィンドウウィンドウウィンドウウィンドウ ((((Oracle Configurator window))))

構成モデル構成モデル構成モデル構成モデルにアクセスすることで起動され、エンド・ユーザーエンド・ユーザーエンド・ユーザーエンド・ユーザーにより構成構成構成構成を選択する際に使用されるユーザー・インタフェースユーザー・インタフェースユーザー・インタフェースユーザー・インタフェース。

Oracle Configurator エンジンエンジンエンジンエンジン ((((Oracle Configurator engine))))

「LCE」も参照。 「アクティブ・モデルアクティブ・モデルアクティブ・モデルアクティブ・モデル((((Active Model))))」と対比。

Oracle Configurator サーブレットサーブレットサーブレットサーブレット ((((Oracle Configurator Servlet))))

UI サーバーを含む Oracle Configurator 用の伝達手段。

用語および略語集用語および略語集用語および略語集用語および略語集 -4

Page 121: Oracle Configuration Interface Objeഀ挀瓿ࠀ䌀䤀俿ক譶 …Oracle Configuration Interface Object(CIO) 開発者ガイド リリース11i 2003 年2 月 部品番号:J06438-02

Oracle Configurator スキーマスキーマスキーマスキーマ ((((Oracle Configurator Schema))))

構成モデル構成モデル構成モデル構成モデルのデータを管理する実装バージョンの標準ランタイム Oracle Configurator データ・ウェアハウス・スキーマ。 実装スキーマには、ランタイムランタイムランタイムランタイム・システムに必要なすべてのデータと Configurator 作成時に使用する特定の表が含まれる。

Oracle SellingPoint アプリケーションアプリケーションアプリケーションアプリケーション ((((Oracle SellingPoint Application))))

もう使用されていないか、サポートされていない。

PTO

Pick to Order(受注ピック)

QA

Quality Assurance(品質保証)

RAD

Rapid Application Development(高速アプリケーション開発)

RDBMS

Relational Database Management System(リレーショナル・データベース管理システム)

RFQ

Request for Quote(見積依頼)

ROI

Return on Investment(投資収益率)

SCM

Supply Chain Management(サプライ・チェーン管理)

SFA

Sales Force Automation(セールス・フォース・オートメーション)

SQA

Software Quality Assurance(ソフトウェア品質保証)

SQL

Structured Query Language(構造化照会言語)

UI

「ユーザー・インタフェースユーザー・インタフェースユーザー・インタフェースユーザー・インタフェース((((User Interface))))」を参照。

用語および略語集用語および略語集用語および略語集用語および略語集 -5

Page 122: Oracle Configuration Interface Objeഀ挀瓿ࠀ䌀䤀俿ক譶 …Oracle Configuration Interface Object(CIO) 開発者ガイド リリース11i 2003 年2 月 部品番号:J06438-02

VAR

Value-Added Reseller(付加価値再販売業者)

VB

Microsoft Visual Basic。 Oracle Configurator Developer の一部分が記述されているプログラミング言語。

WAN

Wide Area Network(広域ネットワーク)

Web

インターネットの一部分。World Wide Web。

WIP

Work In Progress(作業中)

アーキテクチャアーキテクチャアーキテクチャアーキテクチャ ((((architecture))))

「アプリケーション・アーキテクチャアプリケーション・アーキテクチャアプリケーション・アーキテクチャアプリケーション・アーキテクチャ((((application architecture))))」を参照。

アクティブ・モデルアクティブ・モデルアクティブ・モデルアクティブ・モデル ((((Active Model))))

構成セッション構成セッション構成セッション構成セッションの初期化時に Web サーバーのメモリーにロードされ、Oracle Configuratorエンジンエンジンエンジンエンジンでランタイム選択の検証に使用される、構成モデル構成モデル構成モデル構成モデルのコンパイル済み構造およびルール。 アクティブ・モデルは、ランタイムランタイムランタイムランタイムで構成モデルにアクセスするために、Oracle Configurator Developer で、またはプログラム的に生成される必要がある。

アップグレードアップグレードアップグレードアップグレード ((((upgrade))))

新しいリリースの Oracle Configurator または Oracle Configurator Developer に移行すること。

アプリケーション・アーキテクチャアプリケーション・アーキテクチャアプリケーション・アーキテクチャアプリケーション・アーキテクチャ ((((application architecture))))

ランタイムランタイムランタイムランタイムのアプリケーションのソフトウェア構造。アーキテクチャは、アプリケーションの使用方法、保守方法、拡張方法、および変更方法に影響する。

アプレットアプレットアプレットアプレット ((((applet))))

Web ブラウザ内部で実行される Java アプリケーション。 「Java」および「サーブレットサーブレットサーブレットサーブレット((((servlet))))」も参照。

暗示ルール暗示ルール暗示ルール暗示ルール ((((Implies rule))))

他のフィーチャおよびオプションに対する暗示関係でフィーチャフィーチャフィーチャフィーチャまたはオプションオプションオプションオプションの論理状態を決定する Oracle Configurator Developer 論理ルール。たとえば、A が B を暗示しており、A を選択した場合、B は論理 TRUE となる。 A を選択解除(ユーザー FALSE に設定)

用語および略語集用語および略語集用語および略語集用語および略語集 -6

Page 123: Oracle Configuration Interface Objeഀ挀瓿ࠀ䌀䤀俿ক譶 …Oracle Configuration Interface Object(CIO) 開発者ガイド リリース11i 2003 年2 月 部品番号:J06438-02

した場合、B には影響しない。これは、B がユーザー / 論理 TRUE、ユーザー / 論理 FALSEまたは不明不明不明不明であることを意味する。 「要求ルール要求ルール要求ルール要求ルール((((Requires rule))))」を参照。

インスタンスインスタンスインスタンスインスタンス ((((Instance))))

小値と 大値を指定する、コンポーネントコンポーネントコンポーネントコンポーネントのノードノードノードノードの Oracle Configurator Developer 属性。 「インスタンスインスタンスインスタンスインスタンス((((instance))))」も参照。

インスタンスインスタンスインスタンスインスタンス ((((instance))))

構成におけるコンポーネントコンポーネントコンポーネントコンポーネントのランタイムランタイムランタイムランタイム発生。 「インスタンス化インスタンス化インスタンス化インスタンス化((((instantiate))))」も参照。 「カウントカウントカウントカウント((((count))))」と対比。

また、データベースのメモリーおよびプロセスも指す。

インスタンス化インスタンス化インスタンス化インスタンス化 ((((instantiate))))

インスタンスを作成すること。 通常、構成モデル構成モデル構成モデル構成モデルのランタイム・ユーザー・インタフェースユーザー・インタフェースユーザー・インタフェースユーザー・インタフェースでコンポーネントコンポーネントコンポーネントコンポーネントのインスタンスインスタンスインスタンスインスタンスを作成すること。

インストール・プログラムインストール・プログラムインストール・プログラムインストール・プログラム ((((install program))))

ローカル・マシンをセットアップし、テストおよび使用のためにアプリケーションをインストールするソフトウェア。

インテリジェント・ビューインテリジェント・ビューインテリジェント・ビューインテリジェント・ビュー ((((intelligent views))))

販売する商品の価値を具体的に提示するために役立つ構成出力。 たとえば、レポート、グラフ、図解、ダイアグラムなど。

インポート・サーバーインポート・サーバーインポート・サーバーインポート・サーバー ((((import server))))

Oracle Configurator の Populate、Refresh および Synchronization コンカレント・プロセスのデータのソースとなるデータベース・インスタンスインスタンスインスタンスインスタンス。 インポート・サーバーは「リモート・サーバー」ともいう。

インポート表インポート表インポート表インポート表 ((((import tables))))

整合性制約なしに Oracle Configurator スキーマ品目マスター構造をミラー化する表。 インポート表を使用すると、Oracle Configurator スキーマ品目マスターへバッチでデータを取り込むことができる。 インポート表には Oracle Applications または従来データ従来データ従来データ従来データからの抽出データも格納され、Oracle Configurator スキーマ品目マスター品目マスター品目マスター品目マスター中のレコードが作成、更新または削除される。

営業構成営業構成営業構成営業構成 ((((sales configuration))))

営業の有効性を高め、受注エラーを減少させるために構成テクノロジが適用される営業プロセスの一部。 通常、顧客要件顧客要件顧客要件顧客要件と製品構成を識別する。

用語および略語集用語および略語集用語および略語集用語および略語集 -7

Page 124: Oracle Configuration Interface Objeഀ挀瓿ࠀ䌀䤀俿ক譶 …Oracle Configuration Interface Object(CIO) 開発者ガイド リリース11i 2003 年2 月 部品番号:J06438-02

エンド・ユーザーエンド・ユーザーエンド・ユーザーエンド・ユーザー ((((end user))))

ランタイム Oracle Configurator の 終ユーザー。 エンド・ユーザーのタイプはプロジェクトによって異なるが、一般に営業担当と販売代理店、管理部門のスタッフ、マーケティング担当、受注入力担当、製品技術者、Web ブラウザやキオスクからアプリケーションに直接アクセスする顧客などがエンド・ユーザーになる。 「ユーザーユーザーユーザーユーザー((((user))))」と対比。

オプションオプションオプションオプション ((((Option))))

モデルモデルモデルモデルの要素。 列挙されたフィーチャフィーチャフィーチャフィーチャの値の選択肢。

オプションオプションオプションオプション ((((option))))

コンポーネントコンポーネントコンポーネントコンポーネントを構成するときにエンド・ユーザーエンド・ユーザーエンド・ユーザーエンド・ユーザーによって行われる論理的な選択。

ガイド付き購買または販売ガイド付き購買または販売ガイド付き購買または販売ガイド付き購買または販売 ((((guided buying or selling))))

構成プロセスにガイドを付けて簡単にする、ランタイムランタイムランタイムランタイム UI のニーズ評価質問。 また、これらの質問を定義するモデル構造モデル構造モデル構造モデル構造。 通常、ガイド付き販売質問により構成ルール構成ルール構成ルール構成ルールがトリガーされる。構成ルールでは自動的にいくつかの製品オプションオプションオプションオプションが選択され、エンド・ユーザーエンド・ユーザーエンド・ユーザーエンド・ユーザーの応答に基づいて他のオプションが除外される。

開発者開発者開発者開発者 ((((developer))))

Oracle Configurator Developer を使用して Configurator を作成する要員。 「実装者実装者実装者実装者((((implementer))))」および「ユーザーユーザーユーザーユーザー((((user))))」も参照。

カウントカウントカウントカウント ((((count))))

選択済みオプションオプションオプションオプションなどの数または数量。 「インスタンスインスタンスインスタンスインスタンス((((instance))))」と対比。

拡張機能拡張機能拡張機能拡張機能 ((((extended functionality))))

コア機能を提供した後、顧客中心型ビュー顧客中心型ビュー顧客中心型ビュー顧客中心型ビュー、より複合的な提案の生成、割引、見積およびERP、CRM、サードパーティ製ソフトウェアとの拡張統合などによってコア機能を拡張してリリースすること。

加算加算加算加算 ((((Contributes to))))

合計値を累計する特定タイプの数値ルール数値ルール数値ルール数値ルールの作成に使用される関係。 「合計合計合計合計((((Total))))」も参照。

環境環境環境環境 ((((environment))))

オペレーティング・システム、アプリケーションおよびサーバーサーバーサーバーサーバー・プロセスなどのソフトウェア・ツールを使用する場所。

関数コンパニオン関数コンパニオン関数コンパニオン関数コンパニオン ((((Functional Companion))))

Configurator Developer に実装できる内容以上の構成モデル構成モデル構成モデル構成モデルの拡張機能。

構成構成構成構成の顧客中心型ビュー顧客中心型ビュー顧客中心型ビュー顧客中心型ビューおよび出力の初期化、検証、作成に使用できるメソッドを提供するコンポーネントコンポーネントコンポーネントコンポーネントと関連付けられたオブジェクト。

用語および略語集用語および略語集用語および略語集用語および略語集 -8

Page 125: Oracle Configuration Interface Objeഀ挀瓿ࠀ䌀䤀俿ক譶 …Oracle Configuration Interface Object(CIO) 開発者ガイド リリース11i 2003 年2 月 部品番号:J06438-02

企業企業企業企業 ((((enterprise))))

ビジネスのシステムシステムシステムシステムおよびリソースリソースリソースリソース。

機能仕様機能仕様機能仕様機能仕様 ((((functional specification))))

ユーザーユーザーユーザーユーザー要件に基づいてアプリケーションの機能を説明するドキュメント。

クライアントクライアントクライアントクライアント ((((client))))

サーバーサーバーサーバーサーバーを使用して他のクライアントと共有する機能にアクセスするランタイムランタイムランタイムランタイム・プログラム。

検証検証検証検証 ((((validation))))

構成されたコンポーネントコンポーネントコンポーネントコンポーネントが、企業から設定された特定の基準(コンポーネントが受注または製造可能など)を満たすことを確認するテスト。

検証検証検証検証 ((((Validation))))

構成されたコンポーネントコンポーネントコンポーネントコンポーネントが特定の基準を満たすことを確認するために実現される一種の関関関関数コンパニオン数コンパニオン数コンパニオン数コンパニオン。

検証検証検証検証 ((((verification))))

結果が仕様と一致しているかどうかを確認するテスト。

公開公開公開公開 ((((publication))))

Oracle Order Management または iStore などのホスト・アプリケーションから開発者が可用性を制御できる、構成モデル構成モデル構成モデル構成モデル(および必要に応じてユーザー・インタフェースユーザー・インタフェースユーザー・インタフェースユーザー・インタフェース)の一意の配置。 同じ構成モデルに対して複数の公開が存在可能だが、それぞれの公開は 1 つのモデルモデルモデルモデルおよびユーザー・インタフェースユーザー・インタフェースユーザー・インタフェースユーザー・インタフェースにのみ対応する。

公開公開公開公開 ((((publishing))))

Oracle Configurator Developer で公開公開公開公開レコードを作成するプロセス。これには、ランタイランタイランタイランタイムムムム可用性を制御する適用可能性パラメータの指定、および Oracle Applications コンカレント・プロセスを実行した特定データベースに対するデータのコピーが含まれる。

合計合計合計合計 ((((Total))))

合計価格や総重量などの数値合計を累計するために使用するモデルモデルモデルモデルの変数。

また、Oracle Configurator Developer の特定のノード・タイプを指す。 「ノードノードノードノード((((node))))」も参照。

更新更新更新更新 ((((update))))

ソフトウェア・リリースとは関係なく、一部の機能を新規バージョンに移行すること。 たとえば、本番 Configurator を新しいバージョンの構成モデル構成モデル構成モデル構成モデルに移行したり、モデル更新更新更新更新とは関係なく構成構成構成構成を変更すること。

用語および略語集用語および略語集用語および略語集用語および略語集 -9

Page 126: Oracle Configuration Interface Objeഀ挀瓿ࠀ䌀䤀俿ক譶 …Oracle Configuration Interface Object(CIO) 開発者ガイド リリース11i 2003 年2 月 部品番号:J06438-02

構成構成構成構成 ((((configuration))))

ランタイム Configurator における選択項目によって作成される製品仕様の特定のセット。

構成セッション構成セッション構成セッション構成セッション ((((configuration session))))

起動してから Oracle Configurator を終了するまでの時間。この間に、エンド・ユーザーエンド・ユーザーエンド・ユーザーエンド・ユーザーは受注可能な製品を構成するために選択する。 構成セッションは、セッションの初期化時にロードされる 1 つの構成モデル構成モデル構成モデル構成モデルに制限される。

構成属性構成属性構成属性構成属性 ((((configuration attribute))))

ホスト・アプリケーションホスト・アプリケーションホスト・アプリケーションホスト・アプリケーション(品目の在庫の外部)またはモデルモデルモデルモデルで定義されたか、あるいは構構構構成セッション成セッション成セッション成セッション中に取得された、品目品目品目品目の特性。 構成属性は、構成セッションの初期化および終了時のそれぞれにおける、ホスト・アプリケーションからの入力またはホスト・アプリケーションへの出力である。

構成モデル構成モデル構成モデル構成モデル ((((configuration model))))

使用可能なオプションオプションオプションオプションのすべての構成を表し、モデル構造モデル構造モデル構造モデル構造およびルールルールルールルールで構成される。 通常、ユーザー・インタフェースユーザー・インタフェースユーザー・インタフェースユーザー・インタフェースの定義および関数コンパニオン関数コンパニオン関数コンパニオン関数コンパニオンも含まれる。 構成モデルは、通常はランタイムランタイムランタイムランタイム Oracle Configurator ウィンドウウィンドウウィンドウウィンドウでアクセスされる。 「モデルモデルモデルモデル((((model))))」も参照。

構成ルール構成ルール構成ルール構成ルール ((((configuration rules))))

構成構成構成構成の定義に使用可能な Oracle Configurator Developer 論理ルール論理ルール論理ルール論理ルール、互換性規則互換性規則互換性規則互換性規則、比較規比較規比較規比較規則則則則、数値ルール数値ルール数値ルール数値ルールおよび設計チャート設計チャート設計チャート設計チャート。 「ルールルールルールルール((((rules))))」も参照。

項目タイプ項目タイプ項目タイプ項目タイプ ((((Item Type))))

品目マスターの品目を分類するために使用するデータ。 Oracle Inventory からインポートされた品目カタログは、Oracle Configurator Developer の項目タイプである。

互換性規則互換性規則互換性規則互換性規則 ((((Compatibility rule))))

オプションオプションオプションオプションで使用可能な組合せが指定されているモデルのフィーチャフィーチャフィーチャフィーチャ間の関係を確立するOracle Configurator Developer ルール・タイプ。 「プロパティ・ベースの互換性ルールプロパティ・ベースの互換性ルールプロパティ・ベースの互換性ルールプロパティ・ベースの互換性ルール((((Property-based Compatibility rule))))」も参照。

互換性表互換性表互換性表互換性表 ((((Compatibility Table))))

一種の明示的互換性ルール。 たとえば、オプションオプションオプションオプションで使用可能な組合せが明示的に列挙されている互換性関係の 1 つのタイプ。

顧客顧客顧客顧客 ((((customer))))

Oracle Configurator またはその他の ERP および CRM アプリケーションのエンド・ユーエンド・ユーエンド・ユーエンド・ユーザーザーザーザーが製品を構成する顧客。 また、Web ストアまたはキオスクで Oracle Configurator に直接アクセスするエンド・ユーザー自身。

用語および略語集用語および略語集用語および略語集用語および略語集 -10

Page 127: Oracle Configuration Interface Objeഀ挀瓿ࠀ䌀䤀俿ক譶 …Oracle Configuration Interface Object(CIO) 開発者ガイド リリース11i 2003 年2 月 部品番号:J06438-02

顧客中心型拡張機能顧客中心型拡張機能顧客中心型拡張機能顧客中心型拡張機能 ((((customer-centric extensions))))

「顧客中心型ビュー顧客中心型ビュー顧客中心型ビュー顧客中心型ビュー((((customer-centric views))))」を参照。

顧客中心型ビュー顧客中心型ビュー顧客中心型ビュー顧客中心型ビュー ((((customer-centric views))))

事前選択事前選択事前選択事前選択ルール、検証検証検証検証およびインテリジェント・ビューインテリジェント・ビューインテリジェント・ビューインテリジェント・ビューによって構成アクティビティを補完する、コア機能に対する任意の拡張機能。 ビュー機能には、生成ジオメトリ、図面、スケッチ、図解、チャート、パフォーマンス分析、ROI 計算などがある。

顧客要件顧客要件顧客要件顧客要件 ((((customer requirements))))

製品、システムシステムシステムシステムおよびサービスの構成を決定する基礎となる顧客のニーズ。 ニーズ評価ともいう。 「ガイド付き購買または販売ガイド付き購買または販売ガイド付き購買または販売ガイド付き購買または販売((((guided buying or selling))))」を参照。

コネクタコネクタコネクタコネクタ ((((Connector))))

エンド・ユーザーエンド・ユーザーエンド・ユーザーエンド・ユーザーがランタイムランタイムランタイムランタイムにコネクタ・ノードの親を参照モデルモデルモデルモデルへ接続できる、モデルモデルモデルモデル構造構造構造構造のノードノードノードノード。

コンカレント処理機能コンカレント処理機能コンカレント処理機能コンカレント処理機能 ((((concurrent processing facility))))

時間のかかる非対話型タスクをバックグラウンドで実行する Oracle Applications 機能。

コンカレント・プログラムコンカレント・プログラムコンカレント・プログラムコンカレント・プログラム ((((concurrent program))))

要求されたタスクの機能を実行する実行可能なコード(通常、SQL*Plus または Pro*C で作成される)。 コンカレント・プログラムは、レポートの生成およびデータベースにおけるデータのコピーなどの処理を実行するストアド・プロシージャである。

コンカレント・プロセスコンカレント・プロセスコンカレント・プロセスコンカレント・プロセス ((((concurrent process))))

スケジュール可能なタスクであり、コンカレント・マネージャコンカレント・マネージャコンカレント・マネージャコンカレント・マネージャにより実行される。コンカレント・プロセスは、対話型機能やその他のコンカレント・プロセスと同時に動作する。

コンカレント・マネージャコンカレント・マネージャコンカレント・マネージャコンカレント・マネージャ ((((concurrent manager))))

ユーザーユーザーユーザーユーザーのコンカレント要求コンカレント要求コンカレント要求コンカレント要求により生成されたコンカレント・プロセスコンカレント・プロセスコンカレント・プロセスコンカレント・プロセスを調整するプロセス・マネージャ。Oracle Applications の製品グループには、複数のコンカレント・マネーの製品グループには、複数のコンカレント・マネーの製品グループには、複数のコンカレント・マネーの製品グループには、複数のコンカレント・マネージャが組み込まれている場合がある。ジャが組み込まれている場合がある。ジャが組み込まれている場合がある。ジャが組み込まれている場合がある。

コンカレント要求コンカレント要求コンカレント要求コンカレント要求 ((((concurrent request))))

レポートの実行などの非対話型タスクを送信するためにコンカレント処理機能に発行されるユーザーからの要求。

コンテキストコンテキストコンテキストコンテキスト ((((context))))

周囲のテキストまたは条件。

アプリケーションまたはユーザーユーザーユーザーユーザーで使用できる Oracle Applications データベースのフレックスフィールドのコンテキスト依存セグメントを決定する。 構成属性構成属性構成属性構成属性の定義に使用される。

用語および略語集用語および略語集用語および略語集用語および略語集 -11

Page 128: Oracle Configuration Interface Objeഀ挀瓿ࠀ䌀䤀俿ক譶 …Oracle Configuration Interface Object(CIO) 開発者ガイド リリース11i 2003 年2 月 部品番号:J06438-02

コンポーネントコンポーネントコンポーネントコンポーネント ((((Component))))

モデル構造モデル構造モデル構造モデル構造の要素であり、通常、構成可能でインスタンス可能なフィーチャフィーチャフィーチャフィーチャを含む。 モデルモデルモデルモデルの構成可能な要素を表す Oracle Configurator Developer ノード・タイプ。 ランタイムOracle Configurator における選択項目の 1 つの UI 画面に対応する。

コンポーネントコンポーネントコンポーネントコンポーネント ((((component))))

BOM モデルモデルモデルモデル、モデルモデルモデルモデルまたはコンポーネントコンポーネントコンポーネントコンポーネントなどの、モデルモデルモデルモデル内の一部または構成可能な要素。

コンポーネント・セットコンポーネント・セットコンポーネント・セットコンポーネント・セット ((((Component Set))))

同じタイプのいくつかのインスタンス化コンポーネントコンポーネントコンポーネントコンポーネントを含むモデルモデルモデルモデルの要素であり、セットの各コンポーネントは独立して構成される。

サーバーサーバーサーバーサーバー ((((server))))

中央に位置するソフトウェア・プロセスまたはハードウェアであり、クライアントクライアントクライアントクライアントによって共有される。

サーブレットサーブレットサーブレットサーブレット ((((servlet))))

Web サーバー内部で実行される Java アプリケーション。 「Java」、「アプレットアプレットアプレットアプレット((((applet))))」および「Oracle Configurator サーブレットサーブレットサーブレットサーブレット((((Oracle Configurator Servlet))))」も参照。

再使用可能コンポーネント再使用可能コンポーネント再使用可能コンポーネント再使用可能コンポーネント ((((reusable component))))

「参照参照参照参照((((reference))))」および「モデル構造モデル構造モデル構造モデル構造((((model structure))))」を参照してください。

再利用性再利用性再利用性再利用性 ((((reusability))))

システムシステムシステムシステムの構成要素を他のシステムで使用できる程度および容易さ。

参照参照参照参照 ((((reference))))

既存のモデルモデルモデルモデルまたはコンポーネントコンポーネントコンポーネントコンポーネントを別のモデルの構造内で(半組立品などとして)再利用する機能。

参照参照参照参照 ((((Reference))))

別のモデルモデルモデルモデルへの参照参照参照参照を表す Oracle Configurator Developer ノード・タイプ。

資源資源資源資源 ((((resource))))

企業内で使用可能または必要なスタッフまたは機器。

システムシステムシステムシステム ((((system))))

機能およびパフォーマンスパフォーマンスパフォーマンスパフォーマンス要件を満たすために統合されたハードウェア、ソフトウェア・ココココンポーネントンポーネントンポーネントンポーネントおよびインフラストラクチャ。

用語および略語集用語および略語集用語および略語集用語および略語集 -12

Page 129: Oracle Configuration Interface Objeഀ挀瓿ࠀ䌀䤀俿ক譶 …Oracle Configuration Interface Object(CIO) 開発者ガイド リリース11i 2003 年2 月 部品番号:J06438-02

事前選択事前選択事前選択事前選択 ((((preselection))))

構成のためのコンポーネントコンポーネントコンポーネントコンポーネント、フィーチャフィーチャフィーチャフィーチャおよびオプションオプションオプションオプションの初期選択を定義するConfigurator のデフォルト状態。

構成構成構成構成の初期要素を選択するために実装されるプロセス。

実装実装実装実装 ((((implementation))))

Oracle などの構成テクノロジ・ベンダーの選択による問題の定義から完成した構成アプリケーションの導入までのプロジェクトの段階。 実装段階には、要件の収集、テスト・ケースの定義、アプリケーション設計、アプリケーションの作成とテスト、エンド・ユーザーエンド・ユーザーエンド・ユーザーエンド・ユーザーへの納入が含まれる。 「開発者開発者開発者開発者((((developer))))」および「ユーザーユーザーユーザーユーザー((((user))))」も参照。

実装者実装者実装者実装者 ((((implementer))))

Oracle Configurator Developer を使用してモデル構造モデル構造モデル構造モデル構造、ルールおよびランタイムランタイムランタイムランタイム Oracle Configurator を構成する UI カスタマイズを作成する要員。 また、通常はホスト・アプリホスト・アプリホスト・アプリホスト・アプリケーションケーションケーションケーションの Oracle Configurator の統合を可能にする責任を負う。

従来データ従来データ従来データ従来データ ((((legacy data))))

カスタム抽出プログラムを作成しないとインポートできないデータ。

出力出力出力出力

見積、提案および顧客中心型ビュー顧客中心型ビュー顧客中心型ビュー顧客中心型ビューなどの、Configurator により生成される出力。

商談商談商談商談 ((((opportunity))))

製品、システムシステムシステムシステム、サービスを構成し、見積と提案を作成し、注文を発行する、Oracle Sales Online の作業領域。

消費消費消費消費 ((((Consumes from))))

リソースリソースリソースリソースの使用量の指定など、合計値を減らす特定タイプの数値ルール数値ルール数値ルール数値ルールの作成に使用される関係。

除外ルール除外ルール除外ルール除外ルール ((((Excludes rule))))

他のフィーチャおよびオプションに対する除外関係でフィーチャフィーチャフィーチャフィーチャまたはオプションオプションオプションオプションの論理状態を決定する Oracle Configurator Developer 論理ルール。たとえば、A で B が除外され、A を選択した場合、A が TRUE(ユーザーまたは論理 TRUE)のときは B は許可されていないため、B は論理 FALSE となる。 A を選択解除(ユーザー FALSE に設定)した場合、B には影響しない。これは、B がユーザー / 論理 TRUE、ユーザー / 論理 FALSE または不明不明不明不明であることを意味する。 「否定ルール否定ルール否定ルール否定ルール((((Negates rule))))」を参照。

数値ルール数値ルール数値ルール数値ルール ((((Numeric rule))))

数値関係についてのモデル要素間の制約を表す Oracle Configurator Developer ルール・タイプ。 「加算加算加算加算((((Contributes to))))」および「消費消費消費消費((((Consumes from))))」も参照。

用語および略語集用語および略語集用語および略語集用語および略語集 -13

Page 130: Oracle Configuration Interface Objeഀ挀瓿ࠀ䌀䤀俿ক譶 …Oracle Configuration Interface Object(CIO) 開発者ガイド リリース11i 2003 年2 月 部品番号:J06438-02

スキーマスキーマスキーマスキーマ ((((schema))))

特定の製品またはビジネス・プロセスに役立つ、データ・モデルの表およびオブジェクト。 「Oracle Configurator スキーマスキーマスキーマスキーマ((((Oracle Configurator Schema))))」を参照。

製品製品製品製品 ((((product))))

モデルに基づいた構成の出力など、受注され顧客に搬送されるもの。 製品には、サービスまたは契約などの無形エンティティも含まれる。

設計チャート設計チャート設計チャート設計チャート ((((Design Chart))))

表ビューに対話形式で高度な明示的互換性(Explicit Compatibilities)を定義するためのOracle Configurator Developer ルール・タイプ。

設計レビュー設計レビュー設計レビュー設計レビュー ((((design review))))

アプリケーションまたはシステムシステムシステムシステム設計に焦点を当てた技術的な検討。

接続性接続性接続性接続性 ((((connectivity))))

データ通信を可能にするクライアントクライアントクライアントクライアントとデータベース・サーバーサーバーサーバーサーバーとの接続。

ネットワークおよび資材処理システムなどの製品をモデル化できる、モデルのコンポーネント間の接続。

増分構成増分構成増分構成増分構成 ((((incremental construction))))

アプリケーションの構造をビルドビルドビルドビルドに編成するプロセスで、各ビルドは要件全体の指定した一部分に合致するよう設計され、ユニット・テストユニット・テストユニット・テストユニット・テストが行われる。

属性属性属性属性 ((((attribute))))

定義上の特性。モデルには、有効性セットおよび使用方法などの属性がある。コンポーネント、フィーチャおよびオプションには、名前、摘要および有効性などの属性がある。

ソリューションソリューションソリューションソリューション ((((solution))))

問題に対応するため導入されたシステムシステムシステムシステム。

データ・インポートデータ・インポートデータ・インポートデータ・インポート ((((data import))))

インポート表インポート表インポート表インポート表を介して、ERP または従来のシステムからの企業データを Oracle Configurator スキーマスキーマスキーマスキーマに取り込むこと。

データソースデータソースデータソースデータソース ((((data source))))

データベースに対するプログラムからの参照。 データソース名(DSN)によって参照される。

用語および略語集用語および略語集用語および略語集用語および略語集 -14

Page 131: Oracle Configuration Interface Objeഀ挀瓿ࠀ䌀䤀俿ক譶 …Oracle Configuration Interface Object(CIO) 開発者ガイド リリース11i 2003 年2 月 部品番号:J06438-02

データ統合オブジェクトデータ統合オブジェクトデータ統合オブジェクトデータ統合オブジェクト ((((Data Integration Object))))

クライアントクライアントクライアントクライアント(通常、ユーザー・インタフェースユーザー・インタフェースユーザー・インタフェースユーザー・インタフェース)と Oracle Configurator スキーマスキーマスキーマスキーマの間のインタフェースを作成し、管理するランタイムランタイムランタイムランタイム・アプリケーションのサーバーサーバーサーバーサーバー。DIO ともいう。

データ保守環境データ保守環境データ保守環境データ保守環境 ((((data maintenance environment))))

ランタイム Oracle Configurator データを保守する環境。

提出物提出物提出物提出物 ((((deliverable))))

レビューおよび納品を目的として指定された作業製品。

テスト・ケーステスト・ケーステスト・ケーステスト・ケース ((((test case))))

入力、実行命令および予想される結果の記述であり、特定のソフトウェア機能が正しく動作するか、または特定の要件が満たされているかどうかを判別するために作成される。

デフォルトデフォルトデフォルトデフォルト ((((default))))

事前定義済みの値。 構成構成構成構成では、事前選択事前選択事前選択事前選択ルールまたは他のオプションの選択に基づくオプオプオプオプションションションションの自動選択。

デフォルト・ルールデフォルト・ルールデフォルト・ルールデフォルト・ルール ((((Defaults rule))))

他のフィーチャおよびオプションに対するデフォルト関係でフィーチャフィーチャフィーチャフィーチャまたはオプションオプションオプションオプションの論理状態を決定する Oracle Configurator Developer 論理ルール。たとえば、A のデフォルトが B であり、A を選択した場合、B が使用可能である(論理 FALSE でない)場合は B が論理 TRUE(選択済み)となる。

デモンストレーションデモンストレーションデモンストレーションデモンストレーション ((((demonstration))))

特定の使用例を示すテスト済みアプリケーションを示したもの。

統合統合統合統合 ((((integration))))

複数のソフトウェア・コンポーネントコンポーネントコンポーネントコンポーネントを組み合わせ、ともに動作できるようにするプロセス。

統合テスト統合テスト統合テスト統合テスト ((((integration testing))))

アプリケーションまたはシステムシステムシステムシステムに統合されたソフトウェア・プログラム間の相互作用のテスト。 「ユニット・テストユニット・テストユニット・テストユニット・テスト((((unit test))))」と対比。

ノードノードノードノード ((((node))))

Oracle Configurator Developer のモデルモデルモデルモデル・ツリー内のアイコンまたは場所。コンポーネンコンポーネンコンポーネンコンポーネントトトト、フィーチャフィーチャフィーチャフィーチャ、オプションオプションオプションオプションまたは変数(合計合計合計合計またはリソースリソースリソースリソース)、コネクタコネクタコネクタコネクタ、参照参照参照参照、BOM モモモモデルデルデルデル、BOM オプション区分ノードオプション区分ノードオプション区分ノードオプション区分ノードまたは BOM 標準品目ノード標準品目ノード標準品目ノード標準品目ノードを表す。

用語および略語集用語および略語集用語および略語集用語および略語集 -15

Page 132: Oracle Configuration Interface Objeഀ挀瓿ࠀ䌀䤀俿ক譶 …Oracle Configuration Interface Object(CIO) 開発者ガイド リリース11i 2003 年2 月 部品番号:J06438-02

バグバグバグバグ ((((bug))))

「不具合不具合不具合不具合((((defect))))」を参照。

パフォーマンスパフォーマンスパフォーマンスパフォーマンス ((((performance))))

スループットやその他のデータで計測される製品の動作。

比較規則比較規則比較規則比較規則 ((((Comparison rule))))

2 つの数値(数値フィーチャフィーチャフィーチャフィーチャ、合計合計合計合計、リソースリソースリソースリソース、オプションオプションオプションオプション・カウントまたは数値定数)の比較に基づいて論理品目品目品目品目(オプション、ブール型フィーチャまたはオプション・リスト・フィーチャ)の選択状態を決定する関係を確立する Oracle Configurator Developer ルール・タイプ。比較される数値は、計算結果か、または連続的な数値入力の不連続な間隔にな比較される数値は、計算結果か、または連続的な数値入力の不連続な間隔にな比較される数値は、計算結果か、または連続的な数値入力の不連続な間隔にな比較される数値は、計算結果か、または連続的な数値入力の不連続な間隔になる場合がある。る場合がある。る場合がある。る場合がある。

否定ルール否定ルール否定ルール否定ルール ((((Negates rule))))

他のフィーチャおよびオプションに対する否定関係でフィーチャフィーチャフィーチャフィーチャまたはオプションオプションオプションオプションの論理状態を決定する Oracle Configurator Developer 論理ルールのタイプ。たとえば、この関係の一方のオプションオプションオプションオプションが選択された場合、もう一方のオプションは論理 FALSE(非選択)となる。 同様に、この関係の一方のオプションを選択解除した場合、もう一方のオプションは論理 TRUE(選択済み)となる。 「除外ルール除外ルール除外ルール除外ルール((((Excludes rule))))」を参照。

ビルドビルドビルドビルド ((((build))))

アプリケーション構成時の、アプリケーションの特定インスタンスインスタンスインスタンスインスタンス。 ビルドではプロジェクトの早期にプログラムをインストールする必要があり、それによりアプリケーション実装者実装者実装者実装者は、使用可能なアプリケーション全体での 新成果物のユニット・テストユニット・テストユニット・テストユニット・テストを実行できる。

品目品目品目品目 ((((item))))

在庫に保管され、顧客に搬送できる製品または製品の部品。

品目品目品目品目 ((((Item))))

品目マスター品目マスター品目マスター品目マスターで定義されるモデルまたはモデルの一部。 また、Oracle Inventory で定義されたデータを指す。

品目マスター品目マスター品目マスター品目マスター ((((Item Master))))

モデルを構造化するために格納されたデータ。 品目マスターのデータは、手動で Oracle Configurator Developer に入力するか、Oracle Applications または従来のシステムからインポートされる。

ブール型フィーチャブール型フィーチャブール型フィーチャブール型フィーチャ ((((Boolean Feature))))

モデルモデルモデルモデルのコンポーネントコンポーネントコンポーネントコンポーネントの要素要素要素要素であり、TRUE または FALSE の 2 つのオプションオプションオプションオプションがある。

用語および略語集用語および略語集用語および略語集用語および略語集 -16

Page 133: Oracle Configuration Interface Objeഀ挀瓿ࠀ䌀䤀俿ক譶 …Oracle Configuration Interface Object(CIO) 開発者ガイド リリース11i 2003 年2 月 部品番号:J06438-02

フィーチャフィーチャフィーチャフィーチャ ((((Feature))))

モデル構造モデル構造モデル構造モデル構造の要素。フィーチャには、値(数値またはブール値)または列挙オプションオプションオプションオプションを使用できる。

フィーチャフィーチャフィーチャフィーチャ ((((feature))))

特性、またはランタイムランタイムランタイムランタイムのコンポーネントコンポーネントコンポーネントコンポーネントの構成可能な要素。

不具合不具合不具合不具合 ((((defect))))

ユーザーユーザーユーザーユーザーの要件に合致しない製品の問題。不具合の優先順位は、順にクリティカル、メ不具合の優先順位は、順にクリティカル、メ不具合の優先順位は、順にクリティカル、メ不具合の優先順位は、順にクリティカル、メジャー、マイナーに分かれており、かつ修正の範囲は訂正策または回避策から強化策までにジャー、マイナーに分かれており、かつ修正の範囲は訂正策または回避策から強化策までにジャー、マイナーに分かれており、かつ修正の範囲は訂正策または回避策から強化策までにジャー、マイナーに分かれており、かつ修正の範囲は訂正策または回避策から強化策までに及ぶ。及ぶ。及ぶ。及ぶ。 バグともいう。バグともいう。バグともいう。バグともいう。

不具合追跡不具合追跡不具合追跡不具合追跡 ((((defect tracking))))

追加テストを管理し、テストを行い、ユーザーユーザーユーザーユーザーへの公開を承認するため不具合を検出するシステム。

部品構成表部品構成表部品構成表部品構成表 ((((bill of material))))

アセンブリなどの親品目と関連付けられた品目のリストおよび各品目がどのように親品目と関連付けられているかに関する情報。

不明不明不明不明 ((((Unknown))))

TRUE でも FALSE でもないが、構成セッション構成セッション構成セッション構成セッションの開始時または論理規則の実行時に不明であるという論理状態。 この論理状態も、特にランタイムランタイムランタイムランタイム Oracle Configurator エンド・ユーエンド・ユーエンド・ユーエンド・ユーザーザーザーザーの観点から使用可能であるとみなされる。

プロジェクト計画プロジェクト計画プロジェクト計画プロジェクト計画 ((((project plan))))

計画を始めとして、プロジェクトを実現するためのロジスティクスの概要を示すドキュメント。

プロジェクト・マネージャプロジェクト・マネージャプロジェクト・マネージャプロジェクト・マネージャ ((((project manager))))

実装時にプロジェクトを管理する責任を負うプロジェクト・チームのメンバー。

プロトタイププロトタイププロトタイププロトタイプ ((((prototype))))

ユーザーユーザーユーザーユーザーからのフィードバックを容易にしたり、実現可能性を証明したり、その他の実装上の問題を検討するために暫定バージョンのアプリケーションまたはアプリケーションの一部を作成する開発方法。

プロパティプロパティプロパティプロパティ ((((property))))

モデルモデルモデルモデルのノードノードノードノードまたは品目マスター品目マスター品目マスター品目マスターと関連付けられた名前付き値。 プロパティの集合は、1つの品目タイプと関連付けられる場合もある。 BOM モデルをインポートした後は、Oracle Inventory カタログ付加要素が Oracle Configurator Developer のプロパティとなる。

用語および略語集用語および略語集用語および略語集用語および略語集 -17

Page 134: Oracle Configuration Interface Objeഀ挀瓿ࠀ䌀䤀俿ক譶 …Oracle Configuration Interface Object(CIO) 開発者ガイド リリース11i 2003 年2 月 部品番号:J06438-02

プロパティ・ベースの互換性ルールプロパティ・ベースの互換性ルールプロパティ・ベースの互換性ルールプロパティ・ベースの互換性ルール ((((Property-based Compatibility rule))))

オプションのプロパティ値の関係によりオプションオプションオプションオプションの有効な組合せを黙示的に指定する一種の互換性関係。

分散コンピューティング分散コンピューティング分散コンピューティング分散コンピューティング ((((distributed computing))))

1 つのネットワークの別々のマシン上でシステムシステムシステムシステムの各種コンポーネントコンポーネントコンポーネントコンポーネントを実行すること。たとえば、データベース・サーバーサーバーサーバーサーバー・マシンにデータベースを置き、Web サーバー・マシンにアプリケーション・ソフトウェアを置くことなど。

べータべータべータべータ ((((beta))))

インストール可能なアプリケーションとして配布され、受入れ、検証検証検証検証および統合テスト統合テスト統合テスト統合テストが行われる外部リリース。 事前に特別に選定されたエンド・ユーザーエンド・ユーザーエンド・ユーザーエンド・ユーザーがベータ・テストに参加する場合もある。

変数変数変数変数 ((((variable))))

合計合計合計合計、リソースリソースリソースリソースまたは多数のフィーチャフィーチャフィーチャフィーチャによって表現されるモデルモデルモデルモデルの一部。

ベンチマークベンチマークベンチマークベンチマーク ((((benchmark))))

様々な条件下で予測される製品の使用方法と極端な使用方法をエミュレートする、ランタイランタイランタイランタイムムムム・テストで収集されたパフォーマンス・データを表す。

保守保守保守保守 ((((maintenance))))

システムの導入後、不具合不具合不具合不具合修正、手順変更、インフラストラクチャ調整、データ・レプリケーション計画などを介してシステムシステムシステムシステムの動作を維持すること。

保守性保守性保守性保守性 ((((maintainability))))

保守保守保守保守、変更および拡張を直接行うことができる製品またはプロセスの特性。保守性は、開始時より製品またはプロセスに組み込む必要がある。

ホスト・アプリケーションホスト・アプリケーションホスト・アプリケーションホスト・アプリケーション ((((host application))))

受注管理または iStore など、Oracle Configurator が統合機能として組み込まれるアプリケーション。

ポピュレータポピュレータポピュレータポピュレータ ((((Populator))))

品目マスター品目マスター品目マスター品目マスターの情報に基づいて、コンポーネントコンポーネントコンポーネントコンポーネント、フィーチャフィーチャフィーチャフィーチャおよびオプションオプションオプションオプション・ノードノードノードノードを作成する Oracle Configurator Developer のエンティティ。

モデルモデルモデルモデル ((((Model))))

モデル構造モデル構造モデル構造モデル構造、リソースリソースリソースリソースや合計合計合計合計などの変数および中間ルールをサポートする要素などを含む、構成構成構成構成のために必要なすべてのデータの階層的なツリー・ビュー全体。 インポートされたBOM モデルモデルモデルモデルおよび Configurator Developer で作成されたモデルの両方が含まれる。 BOM オプション区分および BOM 標準品目で構成される。

用語および略語集用語および略語集用語および略語集用語および略語集 -18

Page 135: Oracle Configuration Interface Objeഀ挀瓿ࠀ䌀䤀俿ক譶 …Oracle Configuration Interface Object(CIO) 開発者ガイド リリース11i 2003 年2 月 部品番号:J06438-02

モデルモデルモデルモデル ((((model))))

製品を表すデータの一般的な条件。 モデルには、品目品目品目品目に対応する要素要素要素要素が含まれる。 要素は、製品の定義に使用される他のオブジェクトのコンポーネントコンポーネントコンポーネントコンポーネントである。 構成モデル構成モデル構成モデル構成モデルは、Oracle Configurator ウィンドウウィンドウウィンドウウィンドウにアクセスすることで要素を構成できる特定の種類のモデルを指す。

モデル構造モデル構造モデル構造モデル構造 ((((model structure))))

要素要素要素要素で構成されたデータの階層的なツリー・ビュー(モデルモデルモデルモデル、コンポーネントコンポーネントコンポーネントコンポーネント、フィーフィーフィーフィーチャチャチャチャ、オプションオプションオプションオプション、BOM モデルモデルモデルモデル、BOM オプション区分ノードオプション区分ノードオプション区分ノードオプション区分ノード、BOM 標準品目ノード標準品目ノード標準品目ノード標準品目ノード、リリリリソースソースソースソースおよび合計合計合計合計)。 再利用可能なコンポーネントコンポーネントコンポーネントコンポーネント(参照参照参照参照)を含む場合もある。

モデル主導型モデル主導型モデル主導型モデル主導型 UI ((((model-driven UI))))

構成モデル構成モデル構成モデル構成モデルに基づいて対話形式の製品選択をエンド・ユーザーエンド・ユーザーエンド・ユーザーエンド・ユーザーに提供するため、Oracle Configurator Developer によって生成されたモデル構造モデル構造モデル構造モデル構造とルールのグラフィカル・ビュー。

ユーザーユーザーユーザーユーザー ((((user))))

製品またはシステムを使用する個人。 Oracle Configurator Developer ツールおよびメソッドを使用してランタイムランタイムランタイムランタイム Oracle Configurator を作成している個人を表すために使用する。

「エンド・ユーザーエンド・ユーザーエンド・ユーザーエンド・ユーザー((((end user))))」と対比。

ユーザー・インタフェースユーザー・インタフェースユーザー・インタフェースユーザー・インタフェース ((((User Interface))))

モデル構造モデル構造モデル構造モデル構造から生成され、構成構成構成構成を対話形式で作成するために必要なグラフィカル・ビューを提供する Oracle Configurator アーキテクチャアーキテクチャアーキテクチャアーキテクチャ・ランタイムランタイムランタイムランタイム・アーキテクチャの一部。 アクアクアクアクティブ・モデルティブ・モデルティブ・モデルティブ・モデルおよびデータと対話することによりエンド・ユーザーエンド・ユーザーエンド・ユーザーエンド・ユーザーが顧客要件収集、製品選択、顧客中心型ビュー顧客中心型ビュー顧客中心型ビュー顧客中心型ビューにアクセスできる。

ユーザー・インタフェースユーザー・インタフェースユーザー・インタフェースユーザー・インタフェース ((((user interface))))

メニュー、ダイアログ・ボックス、その他の画面要素を含む、アプリケーションの可視的な部分。 ユーザーユーザーユーザーユーザーがソフトウェアとやり取りを行うシステムシステムシステムシステムの部分。 必ずしも Oracle Configurator Developer で生成されるわけではない。

ユーザーズ・ガイドユーザーズ・ガイドユーザーズ・ガイドユーザーズ・ガイド ((((user's guide))))

問題を解決するためにアプリケーションまたは Configurator の使用方法を説明するドキュメント。

ユーザー要件ユーザー要件ユーザー要件ユーザー要件 ((((user requirements))))

エンド・ユーザーエンド・ユーザーエンド・ユーザーエンド・ユーザーの観点から、Configurator で実行されると予想した動作の記述。

ユニット・テストユニット・テストユニット・テストユニット・テスト ((((unit test))))

アプリケーションで不具合不具合不具合不具合を検出して解決するために、アプリケーション実装者実装者実装者実装者または独立したテスト・コンサルタントが個別ルーチンおよびモジュールを実行すること。 「統合テス統合テス統合テス統合テストトトト((((integration testing))))」と対比。

用語および略語集用語および略語集用語および略語集用語および略語集 -19

Page 136: Oracle Configuration Interface Objeഀ挀瓿ࠀ䌀䤀俿ক譶 …Oracle Configuration Interface Object(CIO) 開発者ガイド リリース11i 2003 年2 月 部品番号:J06438-02

要求ルール要求ルール要求ルール要求ルール ((((Requires rule))))

他のフィーチャおよびオプションに対する要求関係でフィーチャフィーチャフィーチャフィーチャまたはオプションオプションオプションオプションの論理状態を決定する Oracle Configurator Developer 論理ルール。たとえば、A が B を要求しており、A を選択した場合、B は論理 TRUE(選択済み)に設定される。 同様に、A を選択解除した場合、B は論理 FALSE(選択解除済み)に設定される。 「暗示ルール暗示ルール暗示ルール暗示ルール((((Implies rule))))」を参照。

要素要素要素要素 ((((element))))

オプションオプションオプションオプション、合計合計合計合計、リソースリソースリソースリソース、UI コントロールおよびコンポーネントコンポーネントコンポーネントコンポーネントなどの、モデルモデルモデルモデル内のエンティティ。

ランタイムランタイムランタイムランタイム ((((runtime))))

アプリケーションの開発ではなく、アプリケーションを実行し、テストし、使用する環境および状況。

実装者実装者実装者実装者(テスト担当)、エンド・ユーザーエンド・ユーザーエンド・ユーザーエンド・ユーザーまたは顧客顧客顧客顧客が、モデルが Oracle Configurator Developer で開発された製品を構成する環境。 「構成セッション構成セッション構成セッション構成セッション((((configuration session))))」も参照。

リグレッション・テストリグレッション・テストリグレッション・テストリグレッション・テスト ((((regression test))))

新のビルドビルドビルドビルドが以前にテスト済みの要件および機能を満たすことを確認するための自動テスト。 「増分構成増分構成増分構成増分構成((((incremental construction))))」も参照。

リソースリソースリソースリソース ((((Resource))))

コンピュータのメモリー量など、数量または供給の記録に使用するモデルモデルモデルモデルの変数。 リソース値にはゼロ以上を設定でき、初期値を設定できる。 リソース値が負の値になると、消込超過であることを示すエラー・メッセージがランタイムランタイムランタイムランタイムに表示される。 リソースに対して寄与および消込を行うには、数値ルール数値ルール数値ルール数値ルールを使用する。

また、Oracle Configurator Developer の特定のノード・タイプを指す。 「ノードノードノードノード」も参照。

ルールルールルールルール ((((rules))))

ビジネス・ルールまたは構成ルール構成ルール構成ルール構成ルールともいう。定義された関係が構成時に確実に保持されるように製品の要素間に適用される制約。 製品の要素とは、コンポーネントコンポーネントコンポーネントコンポーネント、フィーチャフィーチャフィーチャフィーチャ、オオオオプションプションプションプションである。ルールは、論理、数値パラメータ、黙示的な互換性または明示的な互換性ルールは、論理、数値パラメータ、黙示的な互換性または明示的な互換性ルールは、論理、数値パラメータ、黙示的な互換性または明示的な互換性ルールは、論理、数値パラメータ、黙示的な互換性または明示的な互換性を表現する。を表現する。を表現する。を表現する。 ルールは、ルールは、ルールは、ルールは、Oracle Configurator に事前選択事前選択事前選択事前選択および検証検証検証検証機能を提供する。

「比較規則比較規則比較規則比較規則((((Comparison rule))))」、「互換性規則互換性規則互換性規則互換性規則((((Compatibility rule))))」、「設計チャート設計チャート設計チャート設計チャート((((Design Chart))))」、「論理ルール論理ルール論理ルール論理ルール((((Logic rules))))」および「数値ルール数値ルール数値ルール数値ルール((((Numeric rule))))」も参照。

用語および略語集用語および略語集用語および略語集用語および略語集 -20

Page 137: Oracle Configuration Interface Objeഀ挀瓿ࠀ䌀䤀俿ক譶 …Oracle Configuration Interface Object(CIO) 開発者ガイド リリース11i 2003 年2 月 部品番号:J06438-02

ロードロードロードロード ((((load))))

Web サーバーの Oracle Configurator サーブレットサーブレットサーブレットサーブレットに構成モデル構成モデル構成モデル構成モデル・データを格納すること。 また、構成モデルが事前ロード済みでない場合に初期化および表示するための所要時間を指す。

システムシステムシステムシステム上のトランザクションの負荷。通常、CPU または使用可能なメモリーへのユーユーユーユーザーザーザーザー接続の比率により発生する。

ログ・ファイルログ・ファイルログ・ファイルログ・ファイル ((((log file))))

エラー、警告および実行中のアプリケーションから出力されたその他の情報が記録されるファイル。

論理ルール論理ルール論理ルール論理ルール ((((Logic rules))))

論理ルールは、モデルのフィーチャフィーチャフィーチャフィーチャおよびオプションオプションオプションオプションの論理状態(ユーザー / 論理 TRUE、ユーザー / 論理 FALSE または不明不明不明不明)を直接または間接的に設定する。

基本的な論理ルール関係には、4 つの関係がある。それは、暗示、要求、除外および否定である。 これらの各ルールは、フィーチャまたはオプションのリストをオペランドとして取る。

「暗示ルール暗示ルール暗示ルール暗示ルール((((Implies rule))))」、「要求ルール要求ルール要求ルール要求ルール((((Requires rule))))」、「除外ルール除外ルール除外ルール除外ルール((((Excludes rule))))」および「否定ルール否定ルール否定ルール否定ルール((((Negates rule))))」も参照。

用語および略語集用語および略語集用語および略語集用語および略語集 -21

Page 138: Oracle Configuration Interface Objeഀ挀瓿ࠀ䌀䤀俿ক譶 …Oracle Configuration Interface Object(CIO) 開発者ガイド リリース11i 2003 年2 月 部品番号:J06438-02

用語および略語集用語および略語集用語および略語集用語および略語集 -22

Page 139: Oracle Configuration Interface Objeഀ挀瓿ࠀ䌀䤀俿ক譶 …Oracle Configuration Interface Object(CIO) 開発者ガイド リリース11i 2003 年2 月 部品番号:J06438-02

索引索引索引索引

AafterSave()

使用方法,3-9areOptionsCounted()

使用方法,3-16autoConfigure()

使用方法,3-10,3-41AutoFunctionalCompanion

自動構成との区別,3-9使用方法,3-9,3-10,3-36,3-37

初期要求の,3-37モデルとの関連付け,3-9

B「Base Component」

関数コンパニオンの,1-12beginConfigTransaction()

使用方法,3-27BOM モデル

関数コンパニオンとの関連付け,1-3

CCIO「Configuration Interface Object」を参照

ユーザー・インタフェースとの対話,2-1CLASSPATH,1-9closeConfiguration()

使用方法,3-8commitConfigTransaction(transaction)

使用方法,3-27,3-30,3-32ComponentSet

パフォーマンスへの影響,3-12

ComponentSet.add()使用方法,3-11

ComponentSet.delete(component)使用方法,3-11

configHeaderID使用方法,3-8

config.jar,1-9Configuration Interface Object,1-1

定義,3-1createConfiguration()

使用方法,3-7cz3rdpty.jar,1-9cz.dll,1-9czjni.dll,1-9

Ddeselect()

使用方法,3-22

EendConfigTransaction(transaction)

使用方法,3-27eTRM,3-7,3-23

FFALSE

使用方法,3-17FALSE 状態,3-17FND_NEW_MESSAGES 表,1-9FuncCompErrorException

使用方法,3-31

索引索引索引索引 -1

Page 140: Oracle Configuration Interface Objeഀ挀瓿ࠀ䌀䤀俿ক譶 …Oracle Configuration Interface Object(CIO) 開発者ガイド リリース11i 2003 年2 月 部品番号:J06438-02

FuncCompMessageException推奨されない使用方法,3-31

FunctionalCompanionException例外処理での役割,3-31

GgenerateOutput()

使用方法,3-43getCause()

使用方法,3-29getCIO()

使用方法,3-8getConfiguration()

使用方法,3-10getDecimalValue()

使用方法,3-20getFunctionalCompanions()

使用方法,3-11getInitParameters()

使用方法,3-10getIntValue()

使用方法,3-20getMaxSelected()

使用方法,3-16getMessage()

使用方法,3-29getMinSelected()

使用方法,3-16getMsg()

使用方法,3-29getNode()

使用方法,3-29getProperties()

使用方法,3-22getPropertyByName()

使用方法,3-22getReasons()

使用方法,3-29getSelectedItems()

使用方法,3-32getSelectedOption()

使用方法,3-22getState()

使用方法,3-18getStringValue()

使用方法,3-22

getType()使用方法,3-29

getUnsatisfiedItems()使用方法,3-32

getValidationFailures()使用方法,3-21,3-32

HhasMax()

使用方法,3-17hasMaxSelected()

使用方法,3-16hasMin()

使用方法,3-17hasMinSelected()

使用方法,3-16HTML

ユーザー・インタフェース内のカスタム HTML 出

力の表示,2-8

IICX セッション・チケット,1-8IFunctionalCompanion,3-10,3-11,3-39,3-40,

3-41,3-42,3-44標準インタフェース・メソッド,1-4

Initialization,3-11initialize()

使用方法,3-11,3-40isFalse()

使用方法,3-18isLogic()

使用方法,3-18isOverridable()

使用方法,3-29isSelected()

使用方法,3-22isTrue()

使用方法,3-18isUiVisible()

使用方法,3-26isUnknown()

使用方法,3-18isUser()

使用方法,3-18

索引索引索引索引 -2

Page 141: Oracle Configuration Interface Objeഀ挀瓿ࠀ䌀䤀俿ক譶 …Oracle Configuration Interface Object(CIO) 開発者ガイド リリース11i 2003 年2 月 部品番号:J06438-02

IUserInterface,2-1使用方法,2-2,2-4,2-7,2-8

ナビゲーション,2-6セッション・オブジェクト,2-2

IUserInterfaceControl,2-1使用方法,2-5

IUserInterfaceEvent,2-1使用方法,2-8

IUserInterfaceEventListener,2-1使用方法,2-8

IUserInterfaceImage,2-1使用方法,2-5,2-6

IUserInterfaceLabel,2-1使用方法,2-5,2-7

IUserInterfaceNode,2-1使用方法,2-4

IUserInterfaceScreen,2-1使用方法,2-5

JJava

CIO 用のパッケージ,3-2関数コンパニオンの開発用に推奨,1-3関数コンパニオンのタイプの指定,1-12実装言語,1-12使用した関数コンパニオンの作成,1-3,1-6

JDBCドライバ,1-9

jdbc111.zip,1-9JDK

コンパイル用バージョン,1-7,1-8

LLFALSE

使用方法,3-18LTRUE

使用方法,3-18

N「New Functional Companion」コマンド,1-12「New User Interface」コマンド,1-15

OonNew()

使用方法,3-9,3-36初期要求,3-37

onRestore()使用方法,3-9

初期要求,3-37onSave()

使用方法,3-9OptionFeature,3-16

カウント済オプション,3-16Oracle Configurator,3-10Oracle Configurator サーブレット,2-2Oracle JDBC Thin ドライバ,1-9oracle.apps.cz.cio,3-3

インポートするパッケージ,3-2oracle.apps.cz.cio.IFunctionalCompanion,3-39override()

使用方法,3-29

PPATH,1-9

「Program String」関数コンパニオンの,1-13

R「Refresh」コマンド,1-15restoreConfiguration()

使用方法,3-8,3-37revNumber

使用方法,3-8rollbackConfigTransaction(transaction)

使用方法,3-27,3-30,3-32

Ssave()

使用方法,3-8saveAs(configHeaderID, revNumber)

使用方法,3-8saveNew()

使用方法,3-8saveNewRev()

使用方法,3-8

索引索引索引索引 -3

Page 142: Oracle Configuration Interface Objeഀ挀瓿ࠀ䌀䤀俿ক譶 …Oracle Configuration Interface Object(CIO) 開発者ガイド リリース11i 2003 年2 月 部品番号:J06438-02

select()使用方法,3-22

selectOption()使用方法,3-22

setDecimalValue()使用方法,3-20,3-21

setDefaults()使用方法,3-12

setIntValue()使用方法,3-20

setState()使用方法,3-18,3-19

setState(state)使用方法,3-28

Swing,1-9

Tterminate()

使用方法,3-44Thick クライアント,3-43Thin クライアント,3-44TOGGLE

使用方法,3-17TOGGLE 状態,3-17toString()

使用方法,3-29TRUE

使用方法,3-17TRUE 状態,3-17

UUFALSE

使用方法,3-18UI サーバー,2-2

現在の画面,2-6初期化,2-2ユーザー・インタフェースの作成,2-2例外処理での役割,3-31

undo()使用方法,3-21

UNKNOWN使用方法,3-18

unset()使用方法,3-18

useInitialRequests()使用方法,3-36,3-37

UTRUE使用方法,3-18

Vvalidate()

使用方法,3-11,3-32,3-42

WWeb 配置,3-10,3-44,5-2,5-9,5-16

ああああアサーション

論理,3-26

いいいいイベント

タイプ取得,2-9

ユーザー・インタフェース内の処理,2-8ユーザー・インタフェース内のタイプ,2-8ユーザー・インタフェース内のリスナー,2-8

起動,2-9イベント・タイプの取得,2-9イベント・ドリブン,1-19,3-9イメージ

ユーザー・インタフェース内のアクセス,2-5ユーザー・インタフェース内の変更,2-6

インスタンスコンポーネントの属性,3-11

インタフェースJava

定義,3-2オブジェクト,1-5,3-2メソッド,3-39

おおおおオーバーライド

初期要求,3-37

索引索引索引索引 -4

Page 143: Oracle Configuration Interface Objeഀ挀瓿ࠀ䌀䤀俿ক譶 …Oracle Configuration Interface Object(CIO) 開発者ガイド リリース11i 2003 年2 月 部品番号:J06438-02

かかかか階層

インタフェース

ユーザー・インタフェース・コントロール,2-1カウント済オプション

テスト,3-16可視性

ランタイム・ノードの,3-26カスタム・ユーザー・インタフェース

CIO を使用した開発,1-4画面

ユーザー・インタフェースの現在の画面の取得,

2-4関数コンパニオン

CIO との関係,1-4,3-2インスタンス化,1-3関連付けられたノード,1-3コンポーネントへの関連付け,1-3実行順序,2-4,2-9推奨される開発言語,1-3タイプ,1-2タイプの選択,1-12定義,1-1プロジェクト構造,1-11ロードのエラー,1-3

関数コンパニオン・ルール作成,1-12

関連付け関数コンパニオンおよび構造,1-11,3-40

くくくくクラス・ファイル,1-7,1-17

インストール,1-7

けけけけ検証,1-2,1-12,1-19,3-11

パフォーマンスへの影響,3-9検証エラー,3-7,3-21,3-32

トランザクションによって戻される,3-26リストの取得,3-33

ここここ構成,3-7

改訂の保存,3-8検証,3-32再起動,3-9作成後または復元後の変更の保存,3-8終了,5-5初期要求の作成,3-35新規保存,3-8復元,3-8保存,5-5

構成サブスキーマ・オブジェクト,3-1構成入力

リストの取得,3-10構成の検証,3-32構成の復元

定義,3-8パフォーマンスへの影響,3-8

構成レベルの論理トランザクション,3-26コントロール

ユーザー・インタフェース内のアクセス,2-5コンパイル

関数コンパニオン,1-7,1-8コンパニオン

「関数コンパニオン」を参照コンポーネント

インタフェース

使用方法,3-11

ささささサブスキーマ・オブジェクト

構成,3-1ランタイム・モデル,3-1

しししし実装

サポート言語,1-12失敗した要求

定義,3-34自動構成,1-2,1-12,1-19,3-10,3-11

AutoFunctionalCompanion との区別,3-42ボタン,1-15例外,3-31,3-42

索引索引索引索引 -5

Page 144: Oracle Configuration Interface Objeഀ挀瓿ࠀ䌀䤀俿ক譶 …Oracle Configuration Interface Object(CIO) 開発者ガイド リリース11i 2003 年2 月 部品番号:J06438-02

出力,1-3,1-12,1-19出力状態,3-18状態

設定,3-12論理,3-17,3-18,3-26

取得,3-17設定,3-17

初期化パラメータ

リストの取得,3-10初期化メッセージ,2-2初期要求,3-37

オーバーライドの禁止,3-37指定,3-36,3-37使用方法,3-10

トランザクションとの,3-27制限事項,3-37

コンポーネントの,3-37復元,3-37ユーザー要求,3-37

定義,3-34,3-35保存の結果,3-37

初期要求モード,3-37

せせせせ製品

関数コンパニオンとの関連付け,1-3制約

モデルの変更,3-10

そそそそソース・フレーム,2-11

たたたたタイプ

関数コンパニオン,1-12

ててててデフォルト,3-12

パフォーマンスへの影響,3-12

ととととドライバ

JDBC,1-9トランザクション

開始,3-27コミット,3-27終了,3-27使用方法

初期要求との,3-27内部での状態と値の設定,3-26ネスト,3-27ロールバック,3-27論理,3-26

データベース・トランザクションとの比較,3-26トランザクションのネスト,3-27

ななななナビゲーション

ユーザー・インタフェース内の制御,2-6

にににに入力状態,3-17

ねねねねネイティブ BOM,3-24

ののののノード

ユーザー・インタフェース内のアクセス,2-4

ははははバッチ検証

UI の確認,2-10ユーザー・インタフェースの存在の確認,2-10

パフォーマンスへの影響ComponentSets,3-12ComponentSets の削除,3-12ComponentSets の追加,3-12検証,3-9構成の復元,3-8

索引索引索引索引 -6

Page 145: Oracle Configuration Interface Objeഀ挀瓿ࠀ䌀䤀俿ক譶 …Oracle Configuration Interface Object(CIO) 開発者ガイド リリース11i 2003 年2 月 部品番号:J06438-02

デフォルト,3-12要求,3-12

ひひひひ標準インタフェース・メソッド,1-4

ふふふふ復元

初期要求,3-37副作用,3-3,3-12

自動構成,3-41定義,3-11

不明の状態,3-18

へへへへ変更

モデル構造,3-41

ほほほほ保存

初期要求,3-37

むむむむ矛盾,3-31,3-42

めめめめメッセージ・ボックス

ユーザー・インタフェース内の表示,2-7

ももももモデル構造

変更,3-41モデルの変更

制約,3-10

ゆゆゆゆユーザー FALSE 状態,3-18ユーザー TRUE 状態,3-18

ユーザー・インタフェース,3-26CIO との対話,2-1UI サーバーの役割,2-2イベント

ディスパッチ,2-3登録,2-3

イベント・タイプ,2-8イベントの処理,2-8イベント・リスナー,2-8

起動,2-9イメージの変更,2-6イメージへのアクセス,2-5カスタム HTML 出力の表示,2-8現在の画面の取得,2-4コントロールへのアクセス,2-5対話

DHTML UI でのみ使用可能,2-3制約,2-4

ナビゲーション,2-6ノード,2-4表示の処理,2-2メッセージ・ボックスの表示,2-7ラベルの変更,2-6ラベルへのアクセス,2-5

ユーザー・インタフェース・コントロール

インタフェースの階層,2-1ユーザー要求

定義,3-34

よよよよ要求,3-10,3-13

失敗した要求,3-34初期要求,3-34,3-35定義,3-33パフォーマンスへの影響,3-12矛盾,3-28ユーザー要求,3-34論理,3-28

ららららラベル

ユーザー・インタフェース内のアクセス,2-5ユーザー・インタフェース内の変更,2-6

索引索引索引索引 -7

Page 146: Oracle Configuration Interface Objeഀ挀瓿ࠀ䌀䤀俿ক譶 …Oracle Configuration Interface Object(CIO) 開発者ガイド リリース11i 2003 年2 月 部品番号:J06438-02

ランタイム・ノード

可視性,3-26ランタイム・モデル・サブスキーマ・オブジェクト,

3-1

れれれれ例

CIO の初期化,5-1イメージの変更,5-14ウィンドウのロック、ロック解除およびリフレッ

シュ,5-16親ウィンドウと子ウィンドウ,5-16画面へのナビゲート,5-10共有構成モデルへのアクセス,5-18構成

保存と終了,5-5失敗した要求のリストの取得,5-8出力,5-2ノードの画面タイトルの変更,5-12

例外

致命的,3-31,3-42論理,3-28

ろろろろ論理

状態取得,3-17設定,3-17トランザクション内部,3-26

トランザクション,3-26,3-32ネット・オブジェクト,3-1矛盾,3-28要求

定義,3-33例外,3-28

論理 FALSE 状態,3-18論理 TRUE 状態,3-18論理要求,3-10,3-35

索引索引索引索引 -8