Pagina Regole

Di seguito viene mostrato un file di regola di esempio, seguito da una descrizione di ciascuna tag contenuta nel file.

<RULES>
<RULE>
<NAME>Il client ha memoria sufficiente</NAME>

DESCRIPTION>Verificare se il client ha memoria sufficiente per eseguire l'applicazione</DESCRIPTION

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

<TEXT>Impossibile eseguire l'applicazione con meno di 100 MB. </TEXT>
</MOREINFO>
</SEVERITY>
<SEVERITY level="WARNING">
<PARAM id='SIZE'>150</PARAM>
<MOREINFO>
<TEXT>Sta per essere raggiunto il livello di memoria minimo</TEXT>
</MOREINFO>
</SEVERITY>
</RULE>
</RULES>

Questo esempio è relativo a una regola che può essere utilizzata per verificare se il client dispone di memoria sufficiente per l'esecuzione dell'applicazione. <VIOLATION> è un'espressione XPATH che l'applet valuta rispetto a un file XML che contiene tutti i dati raccolti. Poiché la violazione è un'espressione XPATH incorporata in un file XML, alcuni caratteri nell'XPATH, ad esempio "<", ">" e "&", devono essere sostituiti con entità. Se l'espressione XPATH restituisce un set di nodi non nullo, si è verificato un errore con la regola. In questo caso, si verificherà un errore con la regola se la memoria disponibile del client è inferiore a una determinata quantità. La quantità effettiva che attiva una violazione può essere configurata utilizzando livelli di sicurezza differenti.

In questo esempio, l'applet sostituisce prima la sottostringa "$arg=SIZE$" nell'espressione VIOLATION con "100", quindi valuta l'espressione. Se la memoria disponibile del client è inferiore a 100 MB, si verifica un errore della regola con stato critico. L'applet indica lo stato e il messaggio "Impossibile eseguire l'applicazione con meno di 100 MB di memoria". Se la regola viene soddisfatta, l'applet sostituisce "$arg=SIZE$" con 150 ed effettua un nuovo tentativo; se si verifica un errore della regola, l'applet visualizza il messaggio "Sta per essere raggiunto il livello di memoria minimo". Se l'applet passa attraverso tutti i livelli di severità specificati e non trova una violazione, la regola non presenta errori.

Nell'esempio riportato sopra le informazioni aggiuntive visualizzate con ciascuna violazione (secondo quanto specificato negli elementi <TEXT>) non sono dinamiche. Tuttavia, è possibile che l'amministratore desideri indicare all'utente la quantità di memoria di cui dispone in caso di rilevamento di una violazione. Per effettuare questa operazione occorre utilizzare un elemento <ARG> sotto la tag <MOREINFO>. Si supponga che la regola sia stata scritta nel modo indicato di seguito:

<RULE>
<NAME>Il client ha memoria sufficiente</NAME>

<DESCRIPTION>Vedere se il client ha memoria sufficiente per seguire l'applicazione</DESCRIPTION>

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

<TEXT>Impossibile eseguire l'applicazione con meno di 100 MB. Sono disponibili solo {0} MB </TEXT>

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

Se viene rilevata una violazione critica, l'applet valuta l'espressione XPATH nell'elemento <ARG> e la inserisce nel testo <MOREINFO> nella posizione della stringa "{0}", restituendo il messaggio "Impossibile eseguire l'applicazione con meno di 100 MB. Sono disponibili solo 45 MB". Il valore di un elemento <ARG> deve essere un'espressione XPATH valida. È possibile specificare più argomenti; l'applet valuta la prima espressione e la utilizza in sostituzione di "{0}", utilizza la seconda espressione in sostituzione di "{1}" e così via. Se nessuna delle espressioni XPATH restituisce più nodi, l'applet crea una lista di nodi separati da virgole.

Per utilizzare la stessa regola per più impostazioni nazionali del client, l'amministratore può utilizzare i bundle delle risorse per consentire la conversione degli elementi <NAME>, <DESCRIPTION> e <TEXT>. I bundle delle risorse vengono specificati utilizzando un elemento <BUNDLE>, come mostrato di seguito.

<RULES>

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

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

<RULE>
<NAME resource=”name@bundle1”>Il client ha memoria sufficiente</NAME>

<DESCRIPTION resource=”description@bundle2”>Questa regola verifica se il client ha memoria sufficiente per eseguire l'applicazione</DESCRIPTION>

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

<TEXT resource=” moreinfo@bundle2 ”>Sono disponibili solo {0} MB di memoria. </TEXT>

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

</RULES>

Un bundle delle risorse può essere un file di classe Java nel file JAR dell'applet, un file di classe Java sul server o un file XML sul server. Tutte le classi dei bundle delle risorse Java devono estendere Java.util.ResourceBundle, mentre tutti i bundle delle risorse XML devono avere il formato mostrato di seguito.

<BUNDLE>

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

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

</BUNDLE>

L'applet per prima cosa trova il codice di due lettere per l'impostazione nazionale corrente, ad esempio "es". Quando l'applet esegue l'analisi della tag BUNDLE, per prima cosa presuppone che il valore della tag sia un nome di classe Java. L'applet modifica il nome della classe con il codice dell'impostazione nazionale, quindi tenta di caricare questa classe dal file JAR dell'applet. Pertanto, per la prima tag BUNDLE nell'esempio precedente, se l'impostazione nazionale è "es", l'applet tenta di caricare acme.bundles.RuleBundle_es. Se questa classe non esiste, l'applet tenta di caricarla dal server, considerando la directory in cui si trova la pagina di distribuzione come la directory radice del classpath. Pertanto, nel caso del primo bundle, se l'utente ottiene l'applet CSA dal sito http://www.company.com/csa/CSA , l'applet tenta di caricare http://www.company.com/csa/acme/bundles/RuleBundle_es.class . Se questa operazione non riesce, l'applet considera il valore della tag BUNDLE come il nome di un file XML sul server; pertanto, nel caso del secondo elemento <BUNDLE>, l'applet tenta di scaricare http://www.company.com/csa/ruleBundle_es.xml .

Se l'applet trova una tag NAME, DESCRIPTION o TEXT in una regola per cui è stato specificato un attributo di risorsa, tenta prima di trovare e visualizzare la risorsa specificata. Se il bundle specificato non è disponibile per l'impostazione nazionale corrente o se l'ID specificato non esiste nel bundle, l'applet visualizza il valore della tag. Ad esempio, si supponga che, con il file di regola specificato sopra, l'impostazione nazionale sia Spagnolo (es) ma non esista alcuna risorsa nel file ruleBundle_es.xml con l'ID "description". Se il client dispone solo di 45 MB di memoria, l'applet visualizza quanto riportato di seguito:

El cliente tiene bastante memoria – Questa regola verifica se il client ha memoria sufficiente per eseguire l'applicazione.

- X Solo tienes 45 MB de memoria

Infine, in alcuni casi una determinata regola non deve essere valutata. Ad esempio, non è necessario valutare una regola progettata per verificare se l'utente ha configurato le impostazioni del browser Netscape corrette se l'utente accede all'applicazione con Internet Explorer. Per questo motivo, l'amministratore può specificare una o più precondizioni per ciascuna regola, come nell'esempio riportato di seguito.

<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() &gt; 4]</PRECONDITION>

<RULE precondition=”a,b”>
<NAME>Il client ha memoria sufficiente</NAME>

DESCRIPTION >Questa regola verifica se il client ha memoria sufficiente per eseguire l'applicazione</DESCRIPTION

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

<TEXT>Impossibile eseguire l'applicazione con meno di 100 MB. Sono disponibili solo {0} MB </TEXT>

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

</RULES>

Per ogni precondizione, l'applet valuta l'espressione XPATH specificata. Se l'espressione restituisce un set di risultati non nullo, la precondizione è soddisfatta (questa semantica è opposta a quella per l'espressione XPATH nell'elemento <VIOLATION>). Una regola che presenta una lista di precondizioni viene valutata solo se vengono soddisfatte tutte le precondizioni elencate.

Di seguito viene mostrato un ultimo esempio, che elenca tutti gli elementi disponibili di un file di regola, oltre a una summary table degli elementi.


<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() &gt; 4]</PRECONDITION>

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

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

<RULE>
<NAME resource=”name@bundle1”>Il client ha memoria sufficiente</NAME>

<DESCRIPTION resource=”description@bundle2”>Questa regola verifica se il client ha memoria sufficiente per eseguire l'applicazione</DESCRIPTION>

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

<TEXT resource=” moreinfo@bundle2 ”>Sono disponibili solo {0} MB di memoria. </TEXT>

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

</RULES>

Nome tag Descrizione
RULES Questa è la tag di livello superiore per il file XML.
BUNDLE

Questa tag specifica i bundle delle risorse utilizzati per la conversione. Il valore della tag è il nome di un file o di una classe Java. Il rule engine legge questa stringa e tenta prima di trovare un file nell'applet JAR che presenta questo nome. Tale file deve contenere un mapping di ID di risorse e stringhe in varie lingue. Se un file di questo tipo non esiste, la stringa viene considerata come il nome di una classe di bundle delle risorse Java. Alle stringhe in un bundle delle risorse viene fatto riferimento utilizzando la sintassi <id risorsa>@<id bundle>.

PRECONDITION Questa tag è utilizzata per specificare un'espressione XPATH che deve restituire un set di nodi non nullo affinché una regola possa essere valutata. L'attributo "id" specifica l'ID della precondizione. Una regola può specificare una lista di precondizioni da valutare elencando i relativi ID.
RULE Questa tag rappresenta un singolo nodo da valutare. La severità della regola viene specificata utilizzando una tag <SEVERITY> (vedere di seguito). È necessario specificare almeno una tag di severità per una regola. La tag ha un attributo "precondition" facoltativo, utilizzato per specificare una lista di ID di precondizione separati da virgole. Prima che la regola venga valutata devono essere soddisfatte tutte le precondizioni. Se le precondizioni non vengono soddisfatte, la regola presenta lo stato "Non applicabile" e non viene visualizzata nell'interfaccia utente del client. Gli elementi figlio di una tag RULE sono NAME, DESCRIPTION, VIOLATION, SEVERITY e MOREINFO.
NAME

Questa tag specifica il nome della regola e identifica la tag nel repository.

Nota: è necessario specificare un valore per questa tag.

DESCRIPTION Questa è la descrizione della regola.
VIOLATION

Questa tag elenca le violazioni da controllare per una determinata regola. La violazione è specificata nella lingua delle condizioni CSA.

SEVERITY Una regola può avere tre livelli di severità: INFO, WARNING e CRITICAL. Il nodo SEVERITY deve contenere un numero di elementi figlio ARG uguale al numero di argomenti che possono essere accettati dall'espressione nel nodo VIOLATION. Quando il rule engine valuta una regola, valuta la condizione in VIOLATION per ognuno dei set di argomenti specificati nei livelli di severità, partendo da CRITICAL e proseguendo in ordine di severità. Appena il rule engine rileva una condizione con esito negativo, la regola viene dichiarata come un errore, con un livello di severità uguale a quello dell'argomento che ha causato l'errore. Se vengono soddisfatte le condizioni per tutti i livelli specificati, la regola ha esito positivo. Gli elementi figlio del nodo SEVERITY sono PARAM e MOREINFO.
PARAM Questa tag specifica il valore di un argomento da sostituire in un'espressione. L'attributo "id" della tag deve corrispondere al nome di uno degli argomenti nell'espressione.
MOREINFO

Questa tag specifica le informazioni visualizzate quando l'utente fa clic sul pulsante "Altre informazioni" mostrato accanto a una regola non riuscita. Gli elementi figlio di MOREINFO sono TEXT e ARG.

Nota: il nodo MOREINFO può essere un elemento figlio del nodo della severità (nel caso in cui vengano specificate più severità) o della regola.

TEXT Questa tag specifica il testo da visualizzare quando si fa clic sul pulsante "Ulteriori informazioni". L'attributo "resource" specifica una stringa in un bundle delle risorse (se tale stringa non è presente, viene visualizzato il valore del nodo). Il testo (nel bundle delle risorse o nel nodo) può specificare una posizione per gli argomenti da inserire utilizzando "{0}", "{1}" e così via. In questo caso, le espressioni nei nodi ARG vengono valutate e inserite nel testo nell'ordine in cui sono state specificate. Se il numero di nodi ARG specificati supera quello delle unità nella stringa, i nodi aggiuntivi vengono ignorati.
ARG

Questa tag specifica un'espressione nella lingua delle condizioni CSA che può essere valutata e inserita nel testo MOREINFO.

Argomenti correlati

Enterprise Manager Information Roadmap

Informazioni sulla copia

Enterprise Manager Information Roadmap