高度なカスタマイズ > サービスおよびインフラストラクチャのカスタマイズ > システム設定コレクターのプラグイン > システム設定コレクターのプラグインの作成 > ソリューション
  
ソリューション
システム設定コレクター UI または JMX コンソールでカスタムプラグインを設計、開発、展開、および実行します。
前提となる知識
このソリューションを適用するには、次のことを理解している必要があります。
Java を使用した基本的な開発 - プラグインを開発するために必要です。
Java Management Beans の知識 - 複雑なプラグインを開発するために役立ちます。
Java Jar Service Provider の知識 - プラグインの展開を理解するためために役立ちます。
ソリューションエレメント
要素
タイプ
説明
PluginMBean
Java クラス - インタフェース
前述のとおり、各プラグインは MBean であり、PluginMBean インタフェースを実装する必要があります。このインタフェースは、プラグインが MBean として使用されることを確保すると同時に、プラグインを実装するために必要な契約を指定します。このクラスは、追加の機能を提供するために、新しいインタフェース階層に拡張できます。
このクラスの実装により、プラグインは JMX コンソールから実行できる属性とオペレーションを公開できます。
このクラスには、MBean の属性とオペレーションを実装するためのプライマリ API が含まれています。
AbstractPlugin
Java クラス - 抽象
プラグインの PluginMBean インタフェースを実装する際の複雑さのほとんどをラップする抽象クラス。このクラスは、このクラスを拡張するクラスからの継承を介して使用できるメソッドの具象実装を提供します。
これは、すべてのプラグインのベースとなる親クラスであり、カスタムプラグインを作成するときは、このクラスを直接または階層的に拡張する必要があります。
SelfAwareMBean
Java クラス - 抽象
プラグインは、SelfAwareMBean です。つまり、プラグインは、その固有の MBean ObjectName を認識している標準の MBean であり (前述のとおり)、MBean レジストリに重複して登録されることはありません。
すべてのカスタムプラグインが、プラグインを SelfAwareMBean として登録するために、プラグインコンストラクタ (サンプルコード) で super() の呼び出しを実装します。基本クラス AbstractPlugin は、プラグインを SelfAwareMBean として登録するためのメソッド呼び出しを実装します。
各プラグインは最終的には SelfAwareMBean を拡張する基本クラス AbstractPlugin から継承されるため、プラグインはすべて SelfAwareMBean であると言えます。
com.ptc.customersupport.plugins
Java パッケージ
この Java パッケージには、PTC が提供するすべてのプラグイン実装が含まれています。このパッケージには、多くの必須メソッドのデフォルト機能を提供することによって多くのプラグインの実装を容易にする抽象ソースファイルが含まれています。
具体的には、このパッケージには以下の Java 抽象クラスが含まれています。
AbstractMultipleFilePlugin
AbstractQMLPlugin
AbstractReportingPlugin
AbstractSQLPlugin
AbstactWinDUPlugin
AbstractXconfPlugin
GatherFilePlugin
GatherFolderPlugin
GatherLogsPlugin
GatherEveryLogPlugin
これらのプラグインの機能は、Java 継承を介して直接使用できます。これにより、共通のタイプのプラグイン機能のプラグイン実装がより簡単になります。
AbstractMultipleFilePlugin
Java クラス - 抽象
このクラスは、プラグインに必要な共通の機能をまとめて、ファイルのリストを収集します。
AbstractQMLPlugin
Java クラス - 抽象
このクラスは、プラグインに必要な共通の機能をまとめて、QML (Query Markup Language) ファイル/スクリプトを実行します。通常、これらのスクリプトのファイル拡張子は .qml です。
AbstractReportingPlugin
Java クラス - 抽象
このクラスは、プラグインに必要な共通の機能をまとめて、Windchill Business Reporting に対してプラグインを実行します。
AbstractSQLPlugin
Java クラス - 抽象
このクラスは、プラグインに必要な共通の機能をまとめて、SQL (Structured Query Language) ファイル/スクリプトを実行します。
AbstractWinDUPlugin
Java クラス – 抽象
このクラスは、プラグインに必要な共通の機能をまとめて、WinDU (Windchill Diagnostic Utilitiy) タスクを実行します。
AbstractXconfPlugin
Java クラス – 抽象
このクラスは、プラグインに必要な共通の機能をまとめて、親 xconf ファイルから参照されている xconf ファイルを再帰的に識別します。
GatherFilePlugin
Java クラス - 抽象
このクラスは、プラグインに必要な共通の機能をまとめて、単一のファイルを収集します。
GatherFolderPlugin
Java クラス – 抽象
このクラスは、プラグインに必要な共通の機能をまとめて、親とすべての子ディレクトリを収集します。
GatherLogsPlugin
Java クラス - 抽象
このクラスは、プラグインに必要な共通の機能をまとめて、ログファイルのディレクトリを収集します。このクラスは、GatherFolderPlugin と似ていますが、ファイルの所定の日付範囲、具体的にはファイル修正時間に適用されます。
GatherEveryLogPlugin
Java クラス - 抽象
このクラスは、プラグインに必要な共通の機能をまとめて、ログファイルのディレクトリを収集します。このクラスは、GatherFolderPlugin と似ていますが、ファイルの所定の日付範囲、具体的にはファイル修正時間を無視します。したがって、これはすべてのログファイルに適用されます。
CollectorMBean
Java クラス - インタフェース
プラグインが対象とするデータを収集する方法に関する契約を指定する Java MBean インタフェース。AbstractPlugin が実装の詳細を処理するため、この MBean がプラグインによって直接実装される必要はありません。
Collector
Java クラス
CollectorMBean インタフェースの具象実装クラス。これは、すべてのプラグインがファイル収集を行うために実質的に依存するクラスです。
collect(…)
Java メソッド
2 つの collect(…) メソッドは、PluginMBean インタフェースの一部であり、すべてのプラグインによって実装される必要があります (すべてのプラグインが PluginMBean インタフェースを実装するため)。
これらのメソッドは、Collector クラスと対話するために必要な API を指定し、最終的にはプラグインの機能を実行します。
一般的に、AbstractPlugin とプラグイン階層内のその他の抽象クラス (上記を参照) は、依存できる collect(…) メソッドのデフォルト実装を提供します。具体的には、多くの場合、AbstractPlugin.java の collectData(…) メソッドは、単純に collect(…) メソッドによって呼び出すことができます。ただし、特異なニーズを処理する高度なプラグインの場合は、これらのメソッドを直接オーバーライドし、実装する必要があります。このようなケースはまれであり、プラグインが単にファイルの収集だけを行うのではなく、いくつかの Java プロセスを実行したり、ファイルの収集が必要となる処理を行うオペレーションを個別に呼び出したりする必要がある場合にのみ発生します。
com.ptc.customer
support.plugin.* パッケージに、これを行うプラグインがあります。これらのプラグインは、具体的には MBeanDumpPlugin.java、WDSPlugin.java、および AbstractWinduPlugin.java で例として参照できます。
PluginMBean インタフェースはユーザーがデータを収集できることを 2 つの方法で指定するため、実装する必要がある collect(…) は 2 つあることに注意してください。1 つの API には callNumber パラメータが必要で、もう 1 つの API には topicIdentifier が必要です。これらのパラメータはそれぞれ、収集された情報が保存される場所を示します。
このメソッドには特定のマップの戻り値が必要です。戻り値とこのメソッドの詳細については、カスタマイズポイントの「プラグインについて」を参照してください。
collectData(…)
Java メソッド
AbstractPlugin.java の collectData(…) メソッドは、PluginMBean インタフェースの collect(…) メソッドを実装する際の複雑さのほとんどをラップします。このメソッドは、プラグインが指定する方法で公表メッセージが各サーバーに整列されるように設定します。これはまた、必要とされる戻り Map 値を正しく構築します。このメソッドは、コレクションフレームワークを直接使用する際の複雑さをラップするため、しばしば collect(…) メソッドが依存することがあります。ほとんどのプラグインにおいて、このメソッドは単純に適切なパラメータ値で呼び出すことができます。
このメソッドには特定のマップの戻り値が必要です。戻り値とこのメソッドの詳細については、カスタマイズポイントの「プラグインについて」を参照してください。
PluginType
Java クラス
これは、Java 列挙タイプクラスです。プラグインは初期化時に PluginType の列挙タイプのいずれか 1 つを指定するので、Collector クラスはどのような処理を実行し、収集した情報をファイルシステムのどこに配置する必要があるかを認識しています。
PluginUtilities
Java クラス
これは、collect(…) メソッドのデフォルトの動作に依存しない高度なプラグインを作成するために役立つユーティリティメソッドを提供する Java クラスです。特に重要なのは、collect(…) メソッドが必要とするマップの戻り値を構築する getReturnMap(boolean, String, String) メソッドです。これは、特定の動作をする collect(…) メソッドを実装する高度なプラグインの実装を簡素化するために役立ちます。
PluginPropertyUtils
Java クラス
これは、高度なプラグインを作成するために役立つプロパティ情報用のユーティリティメソッドを提供する Java クラスです。このクラスは、xconf が管理するプロパティ値情報を取得するためのメソッドと、トークン化された xconf パスを完全修飾基準パスに解決するための手段を提供します。
*Resource
Java クラス
プラグインの文字列は、さまざまなロケールで表示できるようにローカライズされる必要があります。com.ptc.customersupport.mbeans.plugin* パッケージには、リソースクラスが含まれています。これらの Java リソースクラスは、ローカライズでき、Java ソースコードで使用できる文字列を維持します。
プラグインは、これらのリソースファイルまたは新しいリソースファイルを利用して、ローカライズされた文字列を提供できます。
<ファイル名>.jar
Java JAR ファイル
これは、標準の Java .jar ファイルであり、任意の名前を付けることができます。.jar ファイルは、システム設定コレクターで使用されるためにカスタムプラグインを展開する一般的な方法です。
.jar ファイルには、プラグインおよび Java ヘルパークラス用のコンパイルされた .class ファイルと PluginMBean サービスファイル (下記を参照) が含まれています。.jar ファイルでは、.class ファイルとサービスファイルに対して、パッケージのディレクトリ構造が維持されている必要があります。
Java JAR ファイルの仕様の詳細については、その他のリソースを参照してください。
com.ptc.customersupport.mbeans.PluginMBean
Java JAR サービスファイル
これは、Java .jar ファイルに含まれているサービスファイルであり、これにより、システム設定コレクターの Java クラスローダーは新しいプラグインが展開されたかどうかを確認できます。ファイル構造は厳格で、維持される必要があります。維持されなければ、Java クラスローダーの問題が発生し、プラグインはロードされないか、使用できません。.jar ファイルには、META-INF\services に com.ptc.customersupport.mbeans.PluginMBean ファイルが含まれている必要があります。このファイルの内容は、次のタイプである必要があります。
<java ソースパッケージ><プラグインクラス名> (括弧なし)
Java Jar Service Provider インタフェースの詳細については、その他のリソースを参照してください。
前述のように、プラグインパッケージには、プラグイン開発者がプラグインを作成するために依存できる Java 継承の階層が含まれています。下の UML 図は、抽象クラスと MBean インタフェース API の階層関係を示しています。
上記のように、すべてのプラグインが PluginMBean インタフェースを実装し、最終的には AbstractPlugin クラスを拡張します。カスタムプラグインは、プラグイン階層と、いずれかの抽象クラスによって提供される機能を利用できます。