4 ジェスチャの追加
独自のジェスチャおよび操作をOIG構成ユーティリティに追加できます。ユーティリティにはGesturesSPIが含まれており、このサービス・プロバイダ・インタフェースを使用すると新規ジェスチャを実装できます。そのためには、AbstractGesture
クラスを拡張して独自のジェスチャを作成します。各ジェスチャで1つ以上の操作を定義できます。操作のサポートを追加するには、各操作のAbstractGestureOperation
を拡張します。MBeans操作を使用すると、WebLogic Serverに変更を加えることができます。コードが完成したら、ジェスチャ・クラスをlib/
ディレクトリにコピーし、oig-utility-config.json
のgesturesConfig
セクションにジェスチャを追加して、isEnabled
の値をtrue
に設定します。ジェスチャが有効であれば、ユーティリティを起動すると、ユーティリティ・ヘルプの「Configured Gestures」セクションにジェスチャが表示されます。
- AbstractGestureの拡張
ジェスチャを作成するには、AbstractGesture
クラスを拡張し、抽象メソッドを実装して、ジェスチャ固有の情報を追加する必要があります。TuningGesture.java
ソース・コードは、AbstractGesture
を拡張してジェスチャを実装する方法の例を示しています。次の各項では、ジェスチャ・クラスの作成について詳しく説明します。 - AbstractGestureOperationの拡張
操作を作成するには、AbstractGestureOperation
クラスを拡張し、抽象メソッドを実装して、操作固有の情報を指定する必要があります。たとえば、tuneジェスチャは、TuneDBOperation.java
で実装される「DBのチューニング」操作を提供します。OIG構成ユーティリティに付属する操作のコードは、AbstractGestureOperation
を拡張して操作を実装する方法を示しています。各ジェスチャで1つ以上の操作を定義できます。次の各項では、OIG構成ユーティリティ・フレームワークで機能する操作の実装に関する追加情報を提供します: - ジェスチャのデプロイ
AbstractGestureの拡張
ジェスチャを作成するには、AbstractGesture
クラスを拡張し、抽象メソッドを実装して、ジェスチャ固有の情報を追加する必要があります。TuningGesture.java
ソース・コードは、AbstractGesture
を拡張してジェスチャを実装する方法の例を示しています。次の各項では、ジェスチャ・クラスの作成について詳しく説明します。
- ジェスチャ・メソッドのオーバーライド
OIG構成ユーティリティでジェスチャを使用できるようにするには、ジェスチャ・クラスの次のメソッドをオーバーライドする必要があります:
親トピック: ジェスチャの追加
ジェスチャ・メソッドのオーバーライド
OIG構成ユーティリティでジェスチャを使用できるようにするには、ジェスチャ・クラスの次のメソッドをオーバーライドする必要があります:
メソッド | 説明 | サンプル戻り値 |
---|---|---|
public String getDescription() |
ジェスチャの説明を含む文字列を返します。 | Tune different components. |
public List<GestureOperation> getOperations() |
このジェスチャによってサポートされる操作のリストを返します。操作は、AbstractGestureOperation クラスを拡張することで作成されます。
|
|
public String getShortName() |
ジェスチャの短縮名を返します。 | tune |
ユーティリティでは、これらのメソッドによって返された値を使用して、有効なジェスチャに関するヘルプを自動的に生成します。oig-utility-config.json
でジェスチャを有効にできます。
親トピック: AbstractGestureの拡張
AbstractGestureOperationの拡張
操作を作成するには、AbstractGestureOperation
クラスを拡張し、抽象メソッドを実装して、操作固有の情報を指定する必要があります。たとえば、tuneジェスチャは、TuneDBOperation.java
で実装される「DBのチューニング」操作を提供します。OIG構成ユーティリティに付属する操作のコードは、AbstractGestureOperation
を拡張して操作を実装する方法を示しています。各ジェスチャで1つ以上の操作を定義できます。次の各項では、OIG構成ユーティリティ・フレームワークで機能する操作の実装に関する追加情報を提供します:
GestureOperationメソッドのオーバーライド
メソッド | 説明 | サンプル戻り値 |
---|---|---|
public int execute() |
このメソッドは、操作の実行ロジックを定義します。フレームワークでは、この操作を実行するリクエストを受信すると、このメソッドをコールします。 | |
public GestureOperationReport generateReport() |
この操作の影響を受ける属性のレポートを生成します。 | |
public String getDescription() |
このメソッドは、操作の説明を返します。 | Tune Database Operation |
public String getLongCliFlag() |
このメソッドは、この操作の実行に使用できるロングCLIフラグを返します。 | -database |
public String getShortCliFlag() |
このメソッドは、この操作の実行に使用できるショートCLIフラグを返します。 | -d |
public Class getOperationAttributeClass() |
このメソッドは、この操作で属性の定義に使用される属性クラスを返します。 | DBTuneAttributes.class |
public List<Option> getOptions() |
このメソッドは、この操作に対してコマンドラインで指定できる、サポートされているオプションのリストを返します。 | |
public List<RequiredParam> getRequiredParams() |
このメソッドは、この操作の実行に必要なパラメータのリストを返します。これらは、inputs.properties で定義するか、CLIで指定できます。
|
|
public List<String> getWarnings() |
このメソッドは、HTMLレポートおよびログに表示する警告のリストを返します。これらは、操作の実行後に必要な手動ステップなどの一般的な警告です。 | |
public void validate() |
このメソッドには、ジェスチャ操作で実行する必要のある検証が含まれています。 |
親トピック: AbstractGestureOperationの拡張
属性の実装
各操作に対して、com.oracle.oig.gesture.spi.Attributes
マーカー・インタフェースを実装するクラスを作成する必要があります。このインタフェースは、GesturesSPI
フレームワークの一部としてAttributes.java
に定義されます。Attributes
を実装する各クラスには、操作によって変更される属性が含まれます。
Attributes
の実装例の1つにDBTuneAttributes.java
があります。これは、データベース・チューニング操作で使用されるすべての属性をモデル化したものです。フレームワークでは、実装を使用して、その一連の属性に関連付けられた操作の実行時に使用するオブジェクトを作成します。
oig-utility-config.jsonの更新
操作の属性モデルを作成した後、操作の属性とその値を含むセクションを追加して、oig-utility-config.json
を更新する必要があります。たとえば、Attributes
マーカー・インタフェースのDBTuneAttributes.java
実装に対応するDBチューニング操作の属性は、次のようにoig-utility-config.json
に含められます:
"Tune Database Operation":
{
"com.oracle.oig.attributes.DBTuneAttributes":
{
"queries":
[
"java.util.ArrayList",
[
{
"com.oracle.oig.attributes.QueryAttributes":
{
"parameter": "DB_KEEP_CACHE_SIZE=200M"
}
},
...
{
"com.oracle.oig.attributes.StoredProcedures":
{
"parameter": "OPEN_CURSORS=600"
}
}
]
]
}
},
OIG構成ユーティリティのユーザーは、操作用に追加する構造の属性の値を変更して、構成に新しい値を設定できます。
親トピック: AbstractGestureOperationの拡張
オプションの定義
操作には一連の関連オプションがあり、各オプションがOption
オブジェクトによって定義されています。
TuneDBOperation
は、配列を次のように定義しています:private static final List<Option> options = new ArrayList<Option>();
Option
は、6つの値で構成されています:
-
description
- ユーティリティ・ヘルプで使用される操作の説明。 -
hasValue
- オプションに関連する値があるかどうかを示すフラグ。trueに設定した場合、フレームワークではこのオプションの値が予測され、操作の実行時に値が指定されたかどうかが検証されます。 -
isOptional
- オプションがオプションかどうかを示すフラグ。オプションの場合はtrue、オプションが必須の場合はfalseに設定します。 -
longCliFlag
- オプションのCLIロング・フラグ。 -
shortCliFlag
- オプションのCLIショート・フラグ。 -
validValues
- このオプションに対して有効な一連の値。
クラス変数では、Option
のlongCliFlag
およびshortCliFlag
メンバーを定義する方法を示します。hasValue
およびisOptional
の値は、Option
の作成時に定義されます。
操作へのオプションの追加
操作にオプションを追加するには、getOptions()
メソッドを実装します。その中で、操作のオプションを作成してoptions
リストに追加します。
Option
を作成する際、使用可能なコンストラクタが2つあります。1つはオプションがデフォルトでオプションになる(isOptional
の値が渡されない)もの、もう1つはオプションがオプションであるかどうかを指定する必要があるものです。たとえば、TuneDBOperation
では、最初のメソッドが次のように使用されています: @Override
public List<Option> getOptions() throws OIGException {
if (options == null || options.isEmpty()) {
final Option dbOption = new Option(LONG_CLI_FLAG, SHORT_CLI_FLAG, "Tune DB params", false);
options.add(dbOption);
}
return options;
}
getOptions()
メソッドでもオプションの有効な値を指定します。たとえば、次のgetOptions()
メソッドでは、ファンクションXYZを有効にするオプションを追加します: @Override
public List<Option> getOptions() throws OIGException {
if (options == null || options.isEmpty()) {
final Option enableOption =
new Option(LONG_CLI_FLAG, SHORT_CLI_FLAG, "Enable XYZ for OIM servers", false);
for (final PostInstallConstants.SupportedComponents s : PostInstallConstants.SupportedComponents
.values()) {
enableOption.addValidValue(s.getSupportedComponent());
}
options.add(enableOption);
}
return options;
}
前述の例は、有効な値をOption
(ここではenableOption
)に追加してから、Option
を操作のoptionsリストに追加する方法を示しています。フレームワークでは、入力をこれらの値に対してチェックし、無効な値が指定された場合はエラーを返します。
親トピック: AbstractGestureOperationの拡張
必須パラメータの定義
操作には特定の入力が必要な場合があります。たとえば、WebLogic Serverのユーザー名とパスワードが操作に必要な場合があります。この種の入力は必須パラメータと呼ばれます。
private static final List<RequiredParam> requiredParams = new LinkedList<RequiredParam>();
必須入力を定義するには、RequiredParam
オブジェクトを作成します。各RequiredParam
には、5つの属性があります。パラメータの名前、対話型モードでユーザーにパラメータ値の入力を求めるときに表示するテキスト、パラメータの説明、入力がセキュアで、対話型モードでマスキングする必要があるかどうか、パラメータがオプションかどうかです。パラメータがセキュアである(trueに設定されている)場合、その値の入力はコマンドラインでマスクされます。RequiredParam
は、オプションかどうかを指定せずに作成すると、必須になります。
操作の必須パラメータを設定するには、AbstractGestureOperation
のgetRequiredParams()
メソッドをオーバーライドします。TuneDBOperation.java
での実装は次のとおりです:
@Override
public List<RequiredParam> getRequiredParams() throws OIGException {
if (requiredParams.isEmpty()) {
final RequiredParam dbSysUrl = new RequiredParam(DBParams.DB_SYS_URL.paramName,
"Enter Database JDBC URL for sys dba: Ex:jdbc:oracle:thin:@dbhostname:5521(:orclsid or /serviceName)",
"Jdbc url is used to connect to the db ", false);
final RequiredParam dbSysDbaUser = new RequiredParam(DBParams.DB_SYS_DBA_USER.getParamName(),
"Enter Database Sys User", "Database Sys User", false);
final RequiredParam dbSysDbaPassword =
new RequiredParam(DBParams.DB_SYS_DBA_PASSWORD.getParamName(),
"Enter Database Sys Password", "Database Sys Password", true);
final RequiredParam dbOimUrl = new RequiredParam(DBParams.DB_OIM_URL.paramName,
"Enter Database JDBC URL for oim user: Ex:jdbc:oracle:thin:@dbhostname:5521(:orclsid or /serviceName)",
"Jdbc url is used to connect to the oim user. (Example: jdbc:oracle:thin:@dbhostname:5521(:orclsid or /serviceName)) ",
false);
final RequiredParam dbOimUser = new RequiredParam(DBParams.DB_OIM_USER.getParamName(),
"Enter Database Oim User", "Database Oim User", false);
final RequiredParam dbOimUserPassword =
new RequiredParam(DBParams.DB_OIM_USER_PASSWORD.getParamName(),
"Enter Database Oim Password", "Database Oim Password", true);
requiredParams.add(dbSysUrl);
requiredParams.add(dbSysDbaUser);
requiredParams.add(dbSysDbaPassword);
requiredParams.add(dbOimUrl);
requiredParams.add(dbOimUser);
requiredParams.add(dbOimUserPassword);
}
return requiredParams;
}
操作を実行すると、操作に指定した入力がフレームワークでチェックされ、いずれかの必須パラメータが指定されていない場合はエラーが返されます。
親トピック: AbstractGestureOperationの拡張
ジェスチャのデプロイ
ジェスチャがサポートする操作ごとにAbstractGesture
クラスとAbstractGestureOperation
クラスを記述してジェスチャを作成した後、いくつかのステップを実行して、ジェスチャをユーティリティに追加する必要があります。
コードが完成したら、ジェスチャのJARを作成してlib/ディレクトリにコピーし、oig-utility-config.json
のgesturesConfigセクションにジェスチャを追加して、isEnabledの値をtrueに設定します。
JARのビルドとコピー
ジェスチャをユーティリティ用に準備するには、Javaコードをビルドし、ジェスチャのJARを生成し、JARをユーティリティのlib/
ディレクトリにコピーして、JARクラス・パス環境変数をまだ設定していない場合は設定します。CLASSPATH=
で始まる行にパスを追加することで、oig-config-utility.shにクラス・パスを設定できます。
ジェスチャの追加と有効化
フレームワークは、lib/
ディレクトリに存在するすべてのジェスチャ・コードにアクセスできます。ただし、OIG構成ユーティリティでユーザーにジェスチャを提供するには、ユーティリティ構成にジェスチャを追加する必要があります。
ユーティリティ構成にジェスチャを追加するには、oig-utility-config.json
を編集して、ジェスチャのエントリをgesturesConfig
配列に追加します。たとえば、サンプルのMyGestureOperation
ジェスチャのエントリは次のようになります:
{
"name": "My Gesture",
"gestureClass": "com.yourcompany.oig.gestures.MyGesture",
"isEnabled": "true"
}
ジェスチャを有効にするには、gesturesConfig
エントリでisEnabled
の値をtrue
に設定します。ジェスチャを無効にするには、isEnabled
の値をfalse
に設定します。
親トピック: ジェスチャの追加