アプリケーションは、MOF 言語またはクライアント API のどちらかを使用してクラスを作成できます。MOF の構文に慣れている場合は、テキストエディタを使用して MOF ファイルを作成し、その後 MOF コンパイラを使用してそのファイルを Java クラスにコンパイルすることをお勧めします。この節では、クライアント API を使用して基底クラスを作成する方法を説明します。
CIM クラスを表す Java クラスを作成するには、CIMClass クラスを使用します。ほとんどの基底クラスは、クラス名を指定するだけで宣言できます。ほとんどのクラスには、クラスのデータを表すプロパティが含まれます。プロパティを宣言するには、プロパティのデータ型、名前、およびオプションのデフォルト値を含めます。プロパティのデータ型は、CIMDataType (事前に定義された CIM のデータ型の 1 つ) のインスタンスにします。
プロパティには、キープロパティであることを識別するキー修飾子を指定できます。キープロパティは、クラスのインスタンスを個別に定義します。インスタンスを持てるのは、キーが指定されたクラスだけです。そのため、キープロパティが定義されないクラスは、abstract クラスとしてしか使用できません。
新しいネームスペース内でクラスにキープロパティを定義する場合は、最初にコア MOF ファイルをそのネームスペースにコンパイルする必要があります。コア MOF ファイルには、標準の CIM 修飾子 (キー修飾子など) の宣言が含まれます。MOF ファイルの詳細は、第 3 章「MOF コンパイラ」を参照してください。
クラス定義は、別名、修飾子、修飾子フレーバなどの MOF 機能が含まれることにより複雑化します。
例 6-16 は、ローカルホスト上のデフォルトネームスペース (/root/cimv2) に新しい CIM クラスを作成します。このクラスは 2 つのプロパティを持ち、その 1 つはこのクラスのキープロパティです。続いて、newInstance メソッドを使用して、この新しいクラスのインスタンスを作成します。
{ /* ローカルホストの /root/cimv2 ネームスペースに接続し、 新しいクラス myclass を作成 */ // ローカルホスト上のデフォルトネームスペースに接続 CIMClient cc = new CIMClient(); // 新しい CIMClass オブジェクトを構築 CIMClass cimclass = new CIMClass(); // CIM クラス名を myclass に設定 cimclass.setName("myclass"); // 新しい CIM プロパティオブジェクトを構築 CIMProperty cp = new CIMProperty(); // プロパティ名を設定 cp.setName("keyprop"); // プロパティのデータ型を設定 cp.setType(CIMDatatype.getpredefined(CIMDataType.STRING)); // 新しい CIM 修飾子オブジェクトを構築 CIMQualifier cq = new CIMQualifier(); // 修飾子名を設定 cq.setName("key"); // プロパティに新しいキー修飾子を追加 cp.addQualfiier(cq); /* 10 に初期化された整数プロパティを作成 */ // 新しい CIM プロパティオブジェクトを構築 CIMProperty mp = new CIMProperty(); // プロパティ名を myprop に設定 mp.setName("myprop"); // プロパティのデータ型を設定 mp.setType(CIMDatatype.getpredefined(CIMDataType.INTEGER)); // myprop を 10 に初期化 mp.setValue(CIMValue.setValue(10)); /* myclass にこの新しいプロパティを追加した後、クラスを 作成するために CIM Object Manager を呼び出す。*/ // クラスオブジェクトにキープロパティを追加 cimclass.addProperty(cp); // クラスオブジェクトに整数プロパティを追加 cimclass.addProperty(mp); /* CIM Object Manager に接続し、新しいクラスを渡す。*/ cc.setClass(new CIMObjectPath(),cimclass); // CIM Object Manager に新しいクラスを渡す ci = cc.newInstance(); // myclass に新しい CIM インスタンスを作成 // クライアント接続が開かれている場合、接続を閉じる。 if(cc != null) { cc.close(); } |