列挙 API は、クラスまたはクラス階層のすべてのインスタンスを返します。この場合、ユーザーは、インスタンス名またはインスタンスの詳細を返すように指定することができます。照会によって、照会文字列を指定することによって、検索範囲を狭めることができます。ユーザーは、特定のクラスまたは特定のネームスペース内のすべてのクラスにおいて、指定の照会と一致するインスタンスを検索できます。たとえば、Storage_Capacity プロパティに特定の値を持つ Solaris_DiskDrive クラスを検索できます。
execQuery メソッドは、照会文字列と一致する CIM インスタンスの列挙を検索します。照会文字列の形式は、WQL (WBEM Query Language) に準拠していなければなりません。
execQuery メソッドの構文は、次のとおりです。
Enumeration execQuery(CIMObjectPath relNS, java.lang.String query, int ql)
execQuery メソッドは、次のパラメータを受け取り、CIM インスタンスの列挙を返します。
パラメータ |
データ型 |
説明 |
---|---|---|
relNS |
CIMObjectPath |
接続されているネームスペースとの相対的なネームスペース。たとえば、root ネームスペースに接続されている場合に root\cimv2 ネームスペース内のクラスを照会するには、新たに new CIMObjectPath("", "cimv2"); を渡す必要がある。 |
query |
String |
WQL (WBEM Query Language) に準拠した照会テキスト |
ql |
Integer constant |
照会言語を指定する。現在サポートされている照会言語は WQL level 1 のみ |
次の execQuery 呼び出しは、現在のネームスペースにある CIM_device クラスのすべてのインスタンスの列挙を返します。
cc.execQuery(new CIMObjectPath(), SELECT * FROM CIM_device, cc.WQL)
WQL (WBEM Query Language) は、ANSI SQL (ANSI 構造化照会言語、ANSI Structured Query Language) のサブセットです。WQL には、Solaris で WBEM をサポートするためにセマンティクスの変更が加えられています。SQL とは異なり、このリリースの WQL は検索だけが可能な言語です。つまり、WQL では、情報の変更、挿入、削除を行うことはできません。
SQL はデータベースの照会を行うために作成された言語です。SQL では、データは、行列構造からなるテーブル (表) に格納されています。WQL は、CIM データモデルを使って格納されたデータを照会できるようになっています。CIM モデルでは、オブジェクトの情報は CIM クラスや CIM インスタンスに格納されています。CIM インスタンスには、名前、データ型、値からなるプロパティを持つことができます。WQL は CIM オブジェクトモデルを SQL テーブルにマップします。
表 4–2 SQL データと WQL データの対応
SQL |
WQL での表現 |
---|---|
テーブル |
CIM クラス |
行 |
CIM インスタンス |
列 |
CIM プロパティ |
Sun WBEM SDK では、Level 1 WBEM SQL がサポートされます。Level 1 WBEM SQL では、join のない簡単な select 操作を行うことができます。次の表に、Sun WBEM SDK でサポートされる WQL キーワードを示します。
表 4–3 サポートされる WQL キーワード
キーワード |
説明 |
---|---|
AND |
2 つのブール式を結合し、両方の式が TRUE なら TRUE を返す。 |
FROM |
SELECT 文にリストされているプロパティを持つクラスを指定する。 |
NOT |
NULL と共に使用される比較演算子。 |
OR |
2 つの条件を結合する。1 つの文に複数の論理演算子が使用されていると、OR 演算子 (論理和演算子) は AND 演算子 (論理積演算子) より後に評価される。 |
SELECT |
照会で使用されるプロパティを指定する。 |
WHERE |
照会のスコープを狭める。 |
次の表に、SELECT 文の WHERE 節で使用できる標準の WQL 演算子を示します。
表 4–4 WQL 演算子
演算子 |
説明 |
---|---|
= |
等しい |
< |
より小さい |
> |
より大きい |
<= |
以下 |
>= |
以上 |
<> |
等しくない |
データ照会とは、クラスのインスタンスを要求する文です。データ照会を発行するには、execQuery メソッドを使って WQL 文字列を CIM Object Manager に渡します。
情報を検索する SQL 文は SELECT 文です。これには、WQL 固有の制約と拡張がいくつかあります。SQL SELECT 文は通常データベース環境でテーブルから特定の列を取り出すために使用されますが、WQL SELECT 文は単一クラスのインスタンスを取り出すために使用されます。WQL では、複数のクラスに渡る照会はサポートされません。
SELECT 文では、FROM 節に指定されたオブジェクトで検索するプロパティを指定します。
SELECT 文の基本的な構文は、次のとおりです。
SELECT instance FROM class
次の表に、SELECT 節の引数の使用例を示します。
表 4–5 SELECT 文
照会例 |
説明 |
---|---|
SELECT * FROM class |
指定されたクラスとそのすべてのサブクラスのすべてのインスタンスを選択する。 |
SELECT PropertyA FROM class |
指定されたクラスとそのすべてのサブクラスのうち、PropertyA を持つクラスまたはサブクラスのインスタンスだけを選択する。 |
SELECT PropertyA, PropertyB FROM class |
指定されたクラスとそのすべてのサブクラスのうち、PropertyA か PropertyB を持つクラスまたはサブクラスのインスタンスだけを選択する。 |
WHERE 節を使うと、照会のスコープを狭めることができます。WHERE 節には、プロパティまたはキーワード、演算子、定数を指定します。WHERE 節には、あらかじめ定義された WQL 演算子の 1 つを必ず指定する必要があります。
WHERE 節を SELECT 文の後に追加する基本的な構文は、次のとおりです。
SELECT instance FROM class WHERE expression |
expression には、プロパティまたはキーワード、演算子、定数を指定します。WHERE 節を SELECT 文の後に追加するには、次のどちらかの形式を使用します。
SELECT instance FROM class [[WHERE property operator constant]] |
SELECT instance FROM class [[WHERE constant operator property]] |
定数の値は、プロパティに対して適切なデータ型のものである。
演算子は、表 4–4 に示す WQL 演算子のいずれかでなければならない。
演算子のどちらかの側は、プロパティ名または定数でなければならない。
任意の算術式を指定することはできない。たとえば、次の照会では、ready 状態のプリンタを持つ Solaris_Printer クラスのインスタンスだけが返されます。
SELECT * FROM Solaris_Printer WHERE Status = “ready” |
次の照会は無効です。
SELECT * FROM PhysicalDisk WHERE Partitions < (8 + 2 - 2) |
WHERE 節中には、論理演算子やかっこ式を使って、プロパティ、演算子、定数からなる複数のグループを結合することができます。次の表に示すように、個々のグループは、AND、OR、NOT 演算子で結合されている必要があります。
表 4–6 論理演算子を使った照会
照会例 |
説明 |
---|---|
SELECT * FROM Solaris_FileSystem WHERE Name= "home" OR Name= "files" |
Name プロパティに home か files が設定されている Solaris_FileSystem クラスのすべてのインスタンスを検索する。 |
SELECT * FROM Solaris_FileSystem WHERE (Name = “home” OR Name = “files”) AND AvailableSpace > 2000000 AND FileSystem = “Solaris” |
名前が home か files のディスクのうち、一定の使用可能な容量が残っており、かつ Solaris ファイルシステムを持つディスクを検索する。 |