Solaris WBEM 開発ガイド

イベントフィルタの作成

イベントフィルタでは、送信するイベントの種類と、どのような条件下で送信するかを指定します。CIM_IndicationFilter クラスのインスタンスを作成し、そのプロパティの値を定義することによって、イベントフィルタを作成します。各イベントフィルタは、そのフィルタが属する名前空間に属するイベントに対してのみ有効です。

CIM_IndicationFilter クラスは文字列型のプロパティを持ちます。これらのプロパティの設定により、フィルタを一意に識別したり、照会文字列を指定したり、照会文字列の構文解析を行う照会言語を指定したりできます。現在は、WQL (WBEM Query Language) だけがサポートされます。

表 4–6 CIM_IndicationFilter プロパティ

プロパティ 

説明 

必須/任意 

SystemCreationClassName

このフィルタを作成するクラスがあるシステム名、またはこのクラスが適用されるシステム名 

任意。値は、CIM オブジェクトマネージャにより決定される 

SystemName

このフィルタがあるシステム名、またはこのフィルタが適用されるシステム名 

任意。このキープロパティのデフォルトは、CIM オブジェクトマネージャが動作しているシステム名 

CreationClassName

このフィルタの作成に使用するクラス名またはサブクラス名 

任意。CIM オブジェクトマネージャは、このキープロパティのデフォルトとして CIM_IndicationFilter を割り当てる

Name

フィルタの固有名 

任意。CIM オブジェクトマネージャは一意の名前を割り当てる 

SourceNamespace

CIM インジケーション生成元であるローカル名前空間へのパス 

任意。デフォルトは null 

Query

インジケーションをどのような条件のときに生成するかを定義する照会式。現在は、Level 1 の WQL 式だけがサポートされる。WQL 照会式の詳細は、第 5 章「WBEM 照会の作成」を参照

必須。 

QueryLanguage

照会を表現する言語 

必須。デフォルトは WQL 

Procedureイベントフィルタの作成

手順
  1. CIM_IndicationFilter クラスのインスタンスを作成します。

    CIMClass cimfilter = cc.getClass
            (new CIMObjectPath "CIM_IndicationFilter"),
             true, true, true, null);
    CIMInstance ci = cimfilter.newInstance();
  2. イベントフィルタ名を指定します。

    Name = "filter_all_new_solarisdiskdrive"
  3. WQL 文字列を作成し、返されるイベントインジケーションを指定します。

    String filterString = "SELECT * 
            FROM CIM_InstCreation WHERE sourceInstance 
            ISA Solaris_DiskDrive";
  4. cimfilter インスタンス内にプロパティ値を設定して、次の情報を識別できるようにします。

    • フィルタ名

    • CIM イベントを選択するフィルタ文字列

    • 照会文字列の構文解析を行う照会言語 (WQL)

    ci.setProperty("Name", new 
            CIMValue("filter_all_new_solarisdiskdrives"));
    ci.setProperty("Query", new CIMValue(filterString));
    ci.setProperty("QueryLanguage", new CIMValue("WQL");)
  5. cimfilter インスタンス (filter) を作成します。このインスタンスを CIM オブジェクトマネージャリポジトリに格納します。

    CIMObjectPath filter = 
                             cc.createInstance(new CIMObjectPath(), 
                                                               ci);

例 4–22 イベントフィルタの作成

CIMClass cimfilter = cc.getClass(new CIMObjectPath
                                ("CIM_IndicationFilter"), true);
CIMInstance ci = cimfilter.newInstance();
// 名前空間に test_a クラスが存在するものとする
String filterString = "select * from CIM_InstCreation where 
                       sourceInstance isa test_a"

ci.setProperty("query", new CIMValue(filterString));
CIMObjectPath filter = cc.createInstance(newCIMObjectPath(), ci);