Sun WBEM SDK 開発ガイド

照会

列挙 API は、クラスまたはクラス階層のすべてのインスタンスを返します。この場合、ユーザーは、インスタンス名またはインスタンスの詳細を返すように指定することができます。照会によって、照会文字列を指定することによって、検索範囲を狭めることができます。ユーザーは、特定のクラスまたは特定のネームスペース内のすべてのクラスにおいて、指定の照会と一致するインスタンスを検索できます。たとえば、Storage_Capacity プロパティに特定の値を持つ Solaris_DiskDrive クラスを検索できます。

execQuery メソッド

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 の使用

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 プロパティ 

サポートされる WQL キーワード

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 

照会のスコープを狭める。 

WQL の演算子

次の表に、SELECT 文の WHERE 節で使用できる標準の WQL 演算子を示します。

表 4–4 WQL 演算子

演算子 

説明 

等しい 

より小さい 

より大きい 

<= 

以下 

>= 

以上 

<> 

等しくない 

データ照会の実行

データ照会とは、クラスのインスタンスを要求する文です。データ照会を発行するには、execQuery メソッドを使って WQL 文字列を CIM Object Manager に渡します。

SELECT 文

情報を検索する 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

指定されたクラスとそのすべてのサブクラスのうち、PropertyAPropertyB を持つクラスまたはサブクラスのインスタンスだけを選択する。

WHERE 節

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]]

WHERE 節は次の規則に従っている必要があります。

WHERE 節中には、論理演算子やかっこ式を使って、プロパティ、演算子、定数からなる複数のグループを結合することができます。次の表に示すように、個々のグループは、AND、OR、NOT 演算子で結合されている必要があります。

表 4–6 論理演算子を使った照会

照会例 

説明 

SELECT * FROM Solaris_FileSystem WHERE Name= "home" OR Name= "files" 

Name プロパティに homefiles が設定されている Solaris_FileSystem クラスのすべてのインスタンスを検索する。

SELECT * FROM Solaris_FileSystem WHERE (Name = “home” OR Name = “files”) AND AvailableSpace > 2000000 AND FileSystem = “Solaris” 

名前が homefiles のディスクのうち、一定の使用可能な容量が残っており、かつ Solaris ファイルシステムを持つディスクを検索する。