Sun WBEM SDK 開発ガイド

関連

ここでは、関連という CIM 概念と、関連の情報を取得するときに使用する CIMClient メソッドについて説明します。

関連について

関連とは、コンピュータとそのシステムディスクなど、2 つ以上の管理リソース間の関係を表したものです。この関係は、関連修飾子を持つ特殊なクラス型である関連クラスで表されます。

さらに、関連クラスには、その個々の管理リソースを表す CIM インスタンスへの 2 つ以上の参照が含まれています。参照は REF キーワードで宣言される特殊なプロパティ型であり、これが他のインスタンスへのポインタであることを示します。参照は、個々の管理リソースが関連において担う役割を定義します。

次の図には、TeacherStudent という 2 つのクラスが示されています。これらのクラスは、TeacherStudent という関連によってリンクされています。TeacherStudent には、TeachesTaughtBy という 2 つの参照があります。Teaches は、Teacher クラスのインスタンスを参照するプロパティであり、TaughtByStudent クラスのインスタンスを参照するプロパティです。

図 4–1 Teacher と Student の関連

Graphic

参照の 1 つを削除する場合は、その前に関連を削除する必要があります。2 つまたはそれ以上のオブジェクト間の関連を追加または変更しても、オブジェクト自体には影響を与えません。

関連メソッド

CIMClient クラスの次のメソッドは、クライアントとインスタンス間の関連 (関係) に関する情報を返します。

表 4–7 CIMClient の関連メソッド

メソッド 

説明 

associators

指定された CIM クラスやインスタンスに関連付けられている CIM クラスやインスタンスを取得する。 

associatorNames

指定された CIM クラスやインスタンスに関連付けられている CIM クラスやインスタンスの名前を取得する。 

references

指定された CIM クラスやインスタンスを参照する関連を取得する 

referenceNames

指定された CIM クラスやインスタンスを参照する関連の名前を取得する。 

ソースクラスまたはソースインスタンスの指定

関連メソッドは、唯一の必須引数として CIMObjectPath を受け取ります。この引数は、検索したい関連や、関連付けされたクラスまたはインスタンスを持つソースの CIM クラスまたは CIM インスタンスの名前です。CIM Object Manager は、関連、関連付けされたクラス、またはインスタンスを見つけることができないと、何も返しません。

関連メソッドは、CIMObjectpath がクラスである場合は、関連付けされたクラスとそのクラスのサブクラスを返し、CIMObjectpath がインスタンスである場合は、関連付けされたインスタンスと各インスタンスの派生元クラスを返します。

モデルパスによるインスタンスの指定

インスタンスやクラスの名前を指定するには、そのモデルパスを指定する必要があります。クラスのモデルパスには、ネームスペースとクラスの名前が含まれています。インスタンスのモデルパスは、特定の管理リソースを固有に識別します。インスタンスのモデルパスには、ネームスペース名と、クラス名、キーが含まれています。キーは、管理リソースを固有に識別するために使用されるプロパティまたは一連のプロパティです。キープロパティは、キー修飾子で識別します。

モデルパス \\myserver\\Root\cimv2\Solaris_ComputerSystem.Name=mycomputer: CreationClassName=Solaris_ComputerSystem は、3 つの部分から構成されています。

API によるインスタンスの指定

実際の使用では通常、あるクラスのすべてのインスタンスを enumInstances メソッドを使って列挙し、ループ構造で各インスタンスを処理します。ループでは、各インスタンスを関連メソッドに渡すことができます。次のコード例では、次のことを行なっています。

  1. 現在のクラス (op) とそのクラスのサブクラス内のすべてのインスタンスを列挙する。

  2. while ループを使って、個々のインスタンスを CIMObjectPath (op) にキャストする。

  3. 各インスタンスを、associators メソッドへの最初の引数として渡す。

このコード例では、他のすべてのパラメータの値としては、 null または false を渡します。


例 4–16 インスタンスを associators メソッドに渡す

 {
    ...
    Enumeration e = cc.enumInstances(op, true);
    while (e.hasMoreElements()) {
        op = (CIMObjectPath)e.nextElement();
        Enumeration e1 = cc.associators(op, null, null, 
                null, null, false, false, null);
    ...
    }           

返されるクラスおよびインスタンスのフィルタリング (オプションの引数を使用)

関連メソッドは、返されるクラスやインスタンスをフィルタリングする次のオプション引数も受け取ります。すべての引数が処理されるまで、オプションの各パラメータ値は、その結果をフィルタリング処理のために次に続くパラメータに渡します。

1 つのオプション引数の値、またはオプション引数を組み合わせたものの値を渡すことができます。各パラメータには値を指定する必要があります。返されるクラスやインスタンスをフィルタリングする引数には、assocClassresultClassroleresultRole があります。これらの引数を使用すると、これらのパラメータに指定された値と一致するクラスやインスタンスだけが返されます。返されるクラスやインスタンスに含まれている情報をフィルタリングする引数には、includeQualifiersincludeClassOriginpropertyList があります。

次の表に、関連メソッドへのオプション引数を示します。

表 4–8 関連メソッドへのオプション引数

引数 

型 

説明 

値 

assocClass

String 

ソースの CIM クラスまたはインスタンスとこのタイプで関連付けられているターゲットオブジェクトを返す。Null の場合は、返すオブジェクトを関連でフィルタリングしない。 

有効な CIM 関連クラス名または Null 

resultClass

String 

resultClass またはそのいずれかのサブクラスのインスタンスであるターゲットオブジェクト、または resultClass かそのいずれかのサブクラスと一致するオブジェクトを返す。

CIM クラスの有効な名前または Null 

role

String 

この関連でソースの CIM クラスまたはインスタンスが担っている役割を指定する。ソースオブジェクトがこの役割を担っている関連のターゲットオブジェクトを返す。 

有効なプロパティ名または Null 

resultRole

String 

指定された役割をこの関連で担っているターゲットオブジェクトを返す。 

有効なプロパティ名または Null 

includeQualifiers

Boolean 

true の場合、各ターゲットオブジェクトのすべての修飾子 (このオブジェクトと返されるプロパティのすべての修飾子) を返す。false の場合、修飾子を返さない。 

True または False 

includeClassOrigin

Boolean 

true の場合、返される各オブジェクトのすべての適切な要素に CLASSORIGIN 属性を含める。false の場合、CLASSORIGIN 属性を含めない。 

True または False 

propertyList

String array 

このリストに指定されたプロパティの要素だけを含むオブジェクトを返す。空配列の場合は、返される各オブジェクトにプロパティは含まれない。NULL の場合は、返す各オブジェクトにすべてのプロパティが含まれる。無効なプロパティ名は無視する。 

プロパティリストを指定する場合は、resultClass に Null 以外の値を指定する必要がある。

有効なプロパティ名の配列、空の配列、または Null 

例 — associators メソッドと associatorNames メソッド

このセクションの各例は、associators メソッドや associatorNames メソッドを使って、次の図に示す Teacher クラスや Student クラスに関連付けられているクラスの情報を取得する方法を示したものです。associatorNames メソッドでは、引数 includeQualifiersincludeClassOriginpropertyList は使用されません。インスタンスまたはクラスの名前だけ (内容全体ではなく) を返すメソッドには、これらの引数は関係ないからです。

図 4–2 Teacher と Student の関連の例

Graphic

表 4–9 associators メソッドと associatorNames メソッド

例 

出力 

説明 

associators(Teacher, null, null, null, null, false, false, null)

Student クラス

関連付けられているクラスとそれらのサブクラスを返す。Student は、TeacherStudent 関連によって Teacher とリンクされている。

associators(Student, null, null, null, null,false, false, null)

Teacher クラス、 MathTeacher クラス、 ArtTeacher クラス

関連付けられているクラスとそれらのサブクラスを返す。Teacher は、TeacherStudent 関連によって Student とリンクされている。MathTeacherArtTeacher は、Teacher から TeacherStudent 関連を継承する。

associatorNames(Teacher, null, null, null, null)

Student クラスの名前

関連付けられているクラスとそれらのサブクラスの名前を返す。Student は、TeacherStudent 関連によって Teacher とリンクされている。

associatorNames(Student, null, null, null, null)

TeacherMatchTeacherArtTeacher のクラス名

関連付けられているクラスとそれらのサブクラスの名前を返す。Teacher は、TeacherStudent 関連によって Student とリンクされている。MathTeacherArtTeacherr は、Teacher から TeacherStudent 関連を継承する。

例 — references メソッドと referenceNames メソッド

このセクションの各例は、references メソッドや referenceNames メソッドを使って、図 4–2 に示す Teacher クラスと Student クラスの関連の情報を取得する方法を示したものです。 referenceNames メソッドでは、引数 includeQualifiersincludeClassOriginpropertyList は使用されません。インスタンスまたはクラスの名前だけ (内容全体ではなく) を返すメソッドには、これらの引数は関係ないからです。

表 4–10 references メソッドと referenceNames メソッド

例 

出力 

説明 

references(Student, null, null. false, false, null)

TeacherStudent

Student が関与している関連を返す。

references(Teacher, null, null. false, false, null)

TeacherStudent

Teacher が関与している関連を返す。

referenceNames(Teacher, null, null)

TeacherStudent クラスの名前

Teacher が関与している関連の名前を返す。