ルール・ページ

サンプルのルール・ファイルと、ファイルに含まれる各タグの説明を記載します。

<RULES>
<RULE>
<NAME>Client has sufficient memory</NAME>

<DESCRIPTION>Checks to see if the client has enough memory to run the application</DESCRIPTION>

<VIOLATION> //ROWSET[@TABLE='MGMT_ECM_HW']/ROW/AVAIL_MEMORY_SIZE_IN_MB[number() < $arg=SIZE$] </VIOLATION>
<SEVERITY level="CRITICAL">
<PARAM id='SIZE'>100</PARAM>
<MOREINFO>

<TEXT>Application cannot run with less than 100 MB. </TEXT>
</MOREINFO>
</SEVERITY>
<SEVERITY level="WARNING">
<PARAM id='SIZE'>150</PARAM>
<MOREINFO>
<TEXT>Approaching minimum memory level</TEXT>
</MOREINFO>
</SEVERITY>
</RULE>
</RULES>

この例では、クライアントにアプリケーションを実行するための十分なメモリーがあるかどうかの確認に使用されるルールを説明します。<VIOLATION>はXPATH式で、アプレットは収集されたすべてのデータを含むXMLファイルを評価します。VIOLATIONは、XMLファイルに組み込まれたXPATH式であるため、XPATHにある<、>および&などの特定の文字はエンティティに置き換える必要があります。XPATH式でNULL以外のノード・セットが戻された場合、このルールは失敗となります。この例では、クライアントの使用可能なメモリーが特定の量より少ない場合に、このルールは失敗します。違反のトリガーとなる実際の量は、異なる重大度レベルを使用して構成できます。

この例では、アプレットはまずVIOLATION式の部分文字列$arg=SIZE$を100に置き換え、次に式を評価します。クライアントの使用可能なメモリーが100MBより少ない場合、ステータスはcriticalとなりこのルールは失敗します。アプレットは、Application cannot run with less than 100 MB of memoryというメッセージとともにステータスを表示します。ルールがパスした場合、アプレットは$arg=SIZE$を150に置き換えて再度試行します。ルールが失敗した場合、アプレットは、Approaching minimum memory level.というメッセージを表示します。アプレットが指定したすべての重大度レベルを通過して違反を発見しない場合、ルールは成功です。

前述の例では、各違反に表示される追加情報(<TEXT>要素に指定されます)は動的ではありません。しかし、違反が検出された場合、管理者はユーザーにメモリーの容量を通知する場合があります。これは<MOREINFO>タグの下にある<ARG>要素を使用して行うことができます。ルールが次のように記述されていたとします。

<RULE>
<NAME>Client has sufficient memory</NAME>

<DESCRIPTION>Checks to see if the client has enough memory to run the application</DESCRIPTION>

<VIOLATION> //ROWSET[@TABLE='MGMT_ECM_HW']/ROW/AVAIL_MEMORY_SIZE_IN_MB[number() < $arg=SIZE$] </VIOLATION>
<SEVERITY level="CRITICAL">
<PARAM id='SIZE'>100</PARAM>
<MOREINFO>

<TEXT>Application cannot run with less than 100 MB. You only have {0} MB available </TEXT>

<ARG>//ROWSET[@TABLE='MGMT_ECM_HW']/ROW/AVAIL_MEMORY_SIZE_IN_MB/text()</ARG>
</MOREINFO>
</SEVERITY>
</RULE>

criticalの違反が検出された場合、アプレットは<ARG>要素の式を評価し、それを<MOREINFO>テキストの文字列の位置{0}に挿入します。メッセージは、Application cannot run with less than 100 MB. You have only 45 MB available.のようになります。<ARG>要素の値は有効なXPATH式である必要があります。複数の引数を指定できます。たとえば、アプレットは最初の式を評価して{0}と置き換え、2つ目の式は{1}と置き換えます。いずれかのXPATH式により複数のノードが返された場合、アプレットはノードのカンマ区切りリストを構成します。

同様のルールを複数のクライアントのロケールで使用するためには、管理者は<NAME>、<DESCRIPTION>、<TEXT>要素の変換を有効にするためにリソース・バンドルを使用できます。リソース・バンドルは、<BUNDLE>要素を使用して次のとおり指定されています。

<RULES>

<BUNDLE id=”bundle1”>acme.bundles.RuleBundle</BUNDLE>

<BUNDLE id=”bundle2”>ruleBundle.xml</BUNDLE>

<RULE>
<NAME resource=”name@bundle1”>Client has sufficient memory</NAME>

<DESCRIPTION resource=”description@bundle2”>This rule checks to see if the client has enough memory to run the application</DESCRIPTION>

<VIOLATION> //ROWSET[@TABLE='MGMT_ECM_HW']/ROW/AVAIL_MEMORY_SIZE_IN_MB[number() < $arg=SIZE$] </VIOLATION>
<SEVERITY level="CRITICAL">
<PARAM id='SIZE'>100</PARAM>
<MOREINFO>

<TEXT resource=” moreinfo@bundle2 ”>You only have {0} MB of memory. </TEXT>

<ARG>//ROWSET[@TABLE='MGMT_ECM_HW']/ROW/AVAIL_MEMORY_SIZE_IN_MB/text()</ARG>
</MOREINFO>
</SEVERITY>
</RULE>

</RULES>

リソース・バンドルは、アプレットJARファイルのJavaクラス・ファイル、サーバー上のJavaクラス・ファイルまたはサーバー上のXMLファイルの場合があります。すべてのXMLリソース・バンドルは次に示す形式である必要があるため、すべてのJavaリソース・バンドル・クラスはJava.util.ResourceBundleを拡張する必要があります。

<BUNDLE>

<STRING id='Hello'>Hola</STRING>

<STRING id='moreinfo'>Solo tienes {0} MB de memoria</STRING>

</BUNDLE>

アプレットはまず、esなどの現在のロケールの2文字コードを検索します。アプレットは、BUNDLEタグを解析するとき、タグの値がJavaクラス名であると想定します。アプレットはロケール・コードを使用してこのクラス名を変更し、その後アプレットJARファイルからこのクラスのロードを試みます。このようにして、前述の例の最初のBUNDLEでは、ロケールがesであった場合、アプレットはacme.bundles.RuleBundle_esのロードを試みます。そのようなクラスが存在しない場合は、アプレットはデプロイ・ページが位置するディレクトリをクラスパスのルート・ディレクトリとし、サーバーからロードを試みます。つまり、最初のBUNDLEでは、ユーザーがhttp://www.company.com/csa/CSAからCSAアプレットを取得した場合、アプレットはhttp://www.company.com/csa/acme/bundles/RuleBundle_es.classのロードを試みます。この手順が失敗した場合、アプレットはBUNDLEタグの値をサーバー上のXMLファイルの名前として扱います。そのため、2つ目の<BUNDLE>要素の場合、アプレットはhttp://www.company.com/csa/ruleBundle_es.xmlのダウンロードを試みます。

アプレットがルール内で指定されたresource属性を持つNAME、DESCRIPTIONまたはTEXTタグを検出した場合、まず指定されたリソースの検索および表示を試みます。指定されたバンドルが現在のロケールで使用可能ではない場合または指定されたIDがバンドルに存在しない場合、アプレットはタグ自体の値を表示します。たとえば、前述のとおり指定されたルール・ファイルを使用し、ロケールがスペイン語(es)で、IDがdescriptionのファイルruleBundle_es.xmlにリソースが存在しないとします。クライアントの使用可能なメモリーが45MBのみである場合、アプレットが表示するのは次のとおりです。

El cliente tiene bastante memoria – This rule checks to see if the client has sufficient memory to run the application.

- X Solo tienes 45 MB de memoria

最後に、特定のルールを評価する必要がない場合があります。たとえば、Netscapeブラウザが正しく設定されているかどうかを確認するために設計されたルールは、ユーザーがInternet Explorerを使用してアプリケーションにアクセスしている場合、評価される必要はありません。この理由のため、管理者は1つ以上の事前条件を、次のとおり各ルールに指定できます。

<RULES>

<PRECONDITION id=”a”>//ROWSET[TABLE='MGMT_ECM_CSA']/ROW/BROWSER_TYPE[text() = ‘Netscape']</PRECONDITION>

<PRECONDITION id=”b”>//ROWSET[TABLE='MGMT_ECM_CSA']/ROW/BROWSER_VERSION[number() > 4]</PRECONDITION>

<RULE precondition=”a,b”>
<NAME>Client has sufficient memory</NAME>

<DESCRIPTION >This rule checks to see if the client has enough memory to run the application</DESCRIPTION>

<VIOLATION> //ROWSET[@TABLE='MGMT_ECM_HW']/ROW/AVAIL_MEMORY_SIZE_IN_MB[number() < $arg=SIZE$] </VIOLATION>
<SEVERITY level="CRITICAL">
<PARAM id='SIZE'>100</PARAM>
<MOREINFO>

<TEXT>Application cannot run with less than 100 MB. You only have {0} MB available </TEXT>

<ARG>//ROWSET[@TABLE='MGMT_ECM_HW']/ROW/AVAIL_MEMORY_SIZE_IN_MB/text()</ARG>
</MOREINFO>
</SEVERITY>
</RULE>

</RULES>

各事前条件に対して、アプレットは指定されたXPATH式を評価します。式がNULL以外の結果セットを戻した場合、事前条件は満たされます(これらのセマンティクは<VIOLATION>要素のXPATH式のものに対して正反対です)。事前条件リストのあるルールは、リストされた事前条件がすべて満たされた場合にのみ評価されます。

次に示す最後の例は、ルール・ファイルのすべての使用可能な要素のリストおよび各要素のサマリーの表です。


<RULES>

<PRECONDITION id=”a”>//ROWSET[TABLE='MGMT_ECM_CSA']/ROW/BROWSER_TYPE[text() = ‘Netscape']</PRECONDITION>

<PRECONDITION id=”b”>//ROWSET[TABLE='MGMT_ECM_CSA']/ROW/BROWSER_VERSION[number() > 4]</PRECONDITION>

<BUNDLE id=”bundle1”>acme.bundles.RuleBundle</BUNDLE>

<BUNDLE id=”bundle2”>ruleBundle.xml</BUNDLE>

<RULE>
<NAME resource=”name@bundle1”>Client has sufficient memory</NAME>

<DESCRIPTION resource=”description@bundle2”>This rule checks to see if the client has enough memory to run the application</DESCRIPTION>

<VIOLATION> //ROWSET[@TABLE='MGMT_ECM_HW']/ROW/AVAIL_MEMORY_SIZE_IN_MB[number() < $arg=SIZE$] </VIOLATION>
<SEVERITY level="CRITICAL">
<PARAM id='SIZE'>100</PARAM>
<MOREINFO>

<TEXT resource=” moreinfo@bundle2 ”>You only have {0} MB of memory. </TEXT>

<ARG>//ROWSET[@TABLE='MGMT_ECM_HW']/ROW/AVAIL_MEMORY_SIZE_IN_MB/text()</ARG>
</MOREINFO>
</SEVERITY>
</RULE>

</RULES>

タグ名 説明
RULES XMLファイルの最上位タグです。
BUNDLE

このタグは、変換に使用されるリソース・バンドルを指定します。タグの値はファイルの名前またはJavaクラス名のどちらかです。ルール・エンジンは指定された文字列を読み取り、最初に同じ名前を持つファイルをアプレットJAR内で検索します。ファイルには、リソースIDから各種言語の文字列へのマッピングが含まれています。該当するファイルが存在しない場合、文字列はJavaのリソース・バンドル・クラスとして扱われます。リソース・バンドル内の文字列は、<resource id>@<bundle id>という構文を使用して参照されます。

PRECONDITION このタグは、XPATH式の指定に使用します。ルールが評価されるためには、この式がNULL以外のノード・セットを戻す必要があります。id属性は事前条件のIDを指定します。ルールには、評価する事前条件をIDのリストとして指定できます。
RULE このタグは、評価される個々のノードを表します。ルールの重大度は<SEVERITY>タグを使用して指定します(次を参照)。ルールには少なくとも1つのSEVERITYタグを指定する必要があります。このタグにはオプションでprecondition属性を指定できます。この属性には、事前条件IDをカンマで区切って指定します。ルールが評価されるためには、事前条件がすべて満たされる必要があります。事前条件が満たされない場合、ルールのステータスは「Not Applicable」となり、クライアントUIには表示されません。RULEタグの子はNAME、DESCRIPTION、VIOLATION、SEVERITYおよびMOREINFOです。
NAME

このタグはルールの名前を指定し、リポジトリ内でタグを識別します。

注意: このタグには必ず値を指定してください。空白にはできません。

DESCRIPTION ルールの説明です。
VIOLATION

このタグは、該当するルールでチェックする違反をリストで指定します。違反はCSA条件言語で指定します。

SEVERITY ルールには、INFO、WARNINGおよびCRITICALの3種類の重大度レベルを設定できます。SEVERITYノードには、VIOLATIONノードの式に受け入れられる引数と同じ数のARGノードを子ノードとして指定する必要があります。ルール・エンジンがルールを評価する際には、CRITICALから順に低い重大度へ、各レベルに指定された引数のセットに対してVIOLATIONの条件が評価されます。エンジンが条件の評価に1つでも失敗した時点で、失敗を引き起こした引数と同じ重大度レベルで失敗が宣言されます。指定されたすべてのレベルで条件が満たされた場合、ルールはパスします。SEVERITYノードの子ノードは、PARAMおよびMOREINFOです。
PARAM このタグは、式に代入する引数の値を指定します。このタグのid属性は、式の引数の1つと同じ名前である必要があります。
MOREINFO

このタグは、失敗したルールの横の「詳細」ボタンをユーザーがクリックしたときに表示される情報を指定します。MOREINFOの子ノードは、TEXTおよびARGです。

注意: MOREINFOノードは、SEVERITYノード(複数の重大度を指定する場合)またはRULEノード自体のどちらの子にも指定できます。

TEXT このタグは、「詳細」ボタンがクリックされたときに表示するテキストを指定します。resource属性はリソース・バンドル内の文字列を指定します。この文字列がない場合、ノードの値がかわりに表示されます。テキスト(リソース・バンドルまたはノード自体のどちらか)には、0、1などを使用して引数の挿入位置を指定できます。その場合、ARGノードの式が評価され、指定された順番でテキストに挿入されます。文字列内の挿入位置よりも多くのARGノードが指定されている場合、余分なノードは無視されます。
ARG

このタグは、評価後にMOREINFOのテキストに挿入可能な式をCSA条件言語で指定します。

関連トピック

Enterprise Managerの情報ロードマップ

クローニング

Enterprise Managerの情報ロードマップ