Solaris WBEM SDK 開発ガイド

イベントフィルタの作成

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

CIM_IndicationFilter クラスは、一意のフィルタ識別、照会文字列の指定、照会文字列を構文解析する照会言語の指定が可能な文字列プロパティを保持します。現在は、WQL (WBEM Query Language) だけがサポートされます。

表 3-6 CIM_IndicationFilter プロパティ

プロパティ 

説明 

必須/任意 

SystemCreationClassName

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

任意。値は、CIM Object Manager により決定される 

SystemName

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

任意。このキープロパティのデフォルトは、CIM Object Manager が動作しているシステム名 

CreationClassName

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

任意。CIM Object Manager は、このキープロパティのデフォルトとして CIM_IndicationFilter を割り当てる

Name

フィルタの固有名 

任意。CIM Object Manager は一意の名前を割り当てる 

SourceNamespace

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

任意。デフォルトは null 

Query

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

必須 

QueryLanguage

照会を表現する言語 

必須。デフォルトは WQL  

イベントフィルタの作成
  1. CIM_IndicationFilter クラスのインスタンスを作成します。

    CIMClass cimfilter = cc.getClass
            (new CIMObjectPath(“CIM_IndicationFilter”),
             true, true, true, null);
    CIMInstance ci = cimfilter.newInstance();

  2. イベントフィルタ名を指定します。

    Name = “filter_all_new_solarisdiskdrives”

  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 Object Manager Repository 内に格納します。

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


例 3-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);