Groovyになるためのガイドライン
Groovyスクリプト言語は、ルール・テキストを記述するときに使用し、スクリプト内のインタフェースを使用してコンフィギュレータ・モデルからオブジェクトをインポートして、スクリプトがそれらにアクセスできるようにします。
Be Groovy
拡張ルールを記述するときに使用できるいくつかの重要なGroovy機能を次に示します。
- 変数の型を宣言せずに変数を宣言するには、
def
キーワードを使用します。 - クラス外のメソッドおよび変数を定義し、スクリプト内の任意の場所で使用します。 Groovyはこれらを
ScriptClass
クラスに含め、run
メソッドで実行します。クラスでのメソッドの定義 クラスでメソッドを定義しない - コードに継承およびカプセル化を使用することを推奨します。
- 通常はJavaプログラミング言語で行う場合など、より複雑なロジックを構築することをお薦めします。
- 多くのメソッドを定義します。 これらをクラスに追加すると、イベントをバインドするときに、Class属性およびMethod属性から選択しやすくなります。
コードをすばやく記述してテストする必要があります。 単純に、すべてのイベントを ScriptClass
およびrun
にバインドできます。
詳細は、Groovyを参照してください。
コンフィギュレータ・オブジェクトへのアクセス
ランタイム構成時に、様々なインタフェースを使用してオブジェクトにアクセスします。 次に、通常使用するオブジェクトの一部を示します。
コードに必要な操作 | アクセスに使用するインタフェース | オブジェクトの作成に使用するコード | オブジェクトを使用する例 |
---|---|---|---|
メソッドをバインドするときに指定したイベントを取得します。 | ICXEvent |
コードは必要ありません。 ルールを実行すると、スクリプトによってcxEvent オブジェクトが自動的に作成されます。 |
イベントが参照する現在の構成を取得します:
|
ルールのベース・ノードを取得します。 | ICXEvent |
def baseNode = cxEvent.getBaseNode() |
ユーザーがベース・ノードを選択したかどうかをテストします:
|
ランタイム・セッション中にアクティブな構成を取得します。 | IConfiguration |
IConfiguration config = cxEvent.getConfiguration() |
実行時セッション中にアクティブになっている構成のルート・ノードを取得します:
|
ランタイム・セッション中にアクティブなルート・ノードを取得します。 | IBomModelInstance |
IBomModelInstance root = config.getRootBomModel() |
モデルの子ノードを取得します。 品目名を使用して、AS54888品目などのモデルを検索し、ルート・ノードで検索を開始します:
|
Oracle Configuratorは、バインドするイベントに関連する各オブジェクトを自動的に初期化します。 このオブジェクトは、cxEvent
という名前のICXEvent
インタフェースのインスタンスです。
ノード値の管理
各ノードの様々なオブジェクトの値を取得および設定できます。 次に例を示します。
機能のタイプ | Javaインタフェース | 値を取得するコード | 値を設定するコード |
---|---|---|---|
整数 | IIntegerFeature | int getValue() |
void setIntValue(int value) |
小数 | IDecimalFeature | double getValue() |
void setDecimalValue(double value) |
オプション | IOptionFeature | IOption getSelectedOption() |
void select() |
Boolean | IBooleanFeature | boolean isSelected() |
void toggle() |
特定のニーズを満たすために、さらに多くのインタフェースを使用できます。 たとえば:
- ロジック状態の取得および設定
- アクセス・プロパティ
- アクセス・オプション
- 矛盾の上書き
- 論理矛盾の管理
- 例外の管理
oracle.apps.scm.configurator.runtime.core
パッケージには、コンフィギュレータとの対話に使用できるクラスが含まれています。 詳細は、https://docs.oracle.com/にアクセスし、Oracle ConfiguratorのJava APIリファレンスを検索します。
Oracle Configurator Java APIリファレンスには、コンフィギュレータがサポートするオブジェクトのみが拡張ルールに含まれます。 一部のGroovyクラスには、コンフィギュレータがサポートしていないオブジェクトおよびインタフェースが含まれています。 コンフィギュレータがサポートしていないクラスまたはインタフェースがスクリプトで参照されている場合は、コードの検証時にエラーが発生します。 エラーは、正しくない参照を識別します。
Groovyでは、実行時に機能のデータ型を決定できるため、スクリプトで型を宣言する必要はありません。