규칙 페이지

다음은 샘플 규칙 파일과 해당 파일에 포함된 각 태그에 대한 설명입니다.

<<RULES>
<RULE>
<NAME>클라이언트에 충분한 메모리가 있습니다.</NAME>

<DESCRIPTION>클라이언트에 응용 프로그램을 실행하기에 충분한 메모리가 있는지 확인합니다.</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>응용 프로그램을 100MB 미만에서 실행할 수 없습니다.</TEXT>
</MOREINFO>
</SEVERITY>
<SEVERITY level="WARNING">
<PARAM id='SIZE'>150</PARAM>
<MOREINFO>
<TEXT>최소 메모리 레벨에 도달하고 있습니다.</TEXT>
</MOREINFO>
</SEVERITY>
</RULE>
</RULES>

이 예제는 클라이언트에 응용 프로그램을 실행하기에 충분한 메모리가 있는지 여부를 확인하는 데 사용할 수 있는 규칙을 보여줍니다. <VIOLATION>은 애플릿이 수집한 모든 데이터를 포함하는 XML 파일에 대해 평가할 XPATH 표현식입니다. violation은 XML 파일에 포함된 XPATH 표현식이므로 ‘<', ‘>' 및 ‘&'와 같은 XPATH의 특정 문자는 엔티티로 바꿔야 합니다. XPATH 표현식이 널이 아닌 노드 집합을 반환하면 규칙을 실패한 것입니다. 이 경우 클라이언트의 사용 가능한 메모리가 특정 양 미만이면 규칙을 실패합니다. 위반을 트리거하는 실제 양은 여러 심각도 레벨을 사용하여 구성할 수 있습니다.

이 예제에서 애플릿은 먼저 VIOLATION 표현식의 부분 문자열 "$arg=SIZE$"를 "100"으로 바꾼 다음 표현식을 평가합니다. 클라이언트의 사용 가능한 메모리가 100MB 미만이면 위기 상태와 함께 규칙을 실패합니다. 애플릿은 "응용 프로그램을 100MB 미만의 메모리에서 실행할 수 없습니다."라는 메시지와 함께 상태를 나타냅니다. 규칙을 성공하면 애플릿이 "$arg=SIZE$"를 150으로 바꾸고 다시 시도합니다. 규칙을 실패하면 애플릿이 "최소 메모리 레벨에 도달하고 있습니다."라는 메시지를 표시합니다. 애플릿이 지정된 모든 심각도 레벨을 평가했는데도 위반을 찾을 수 없으면 규칙을 성공한 것입니다.

위의 예제에서 각 위반과 함께 표시되는 추가 정보(<TEXT> 요소에 지정)는 동적 정보가 아닙니다. 하지만 관리자가 위반 감지 시 사용자에게 소유 메모리 양을 알리려고 할 수 있습니다. 이 작업은 <MOREINFO> 태그 아래에서 <ARG> 요소를 사용하여 수행할 수 있습니다. 규칙이 다음과 같이 기록되었다고 가정합니다.

<RULE>
<NAME>클라이언트에 충분한 메모리가 있습니다.</NAME>

<DESCRIPTION>클라이언트에 응용 프로그램을 실행하기에 충분한 메모리가 있는지 확인합니다.</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>응용 프로그램을 100MB 미만에서 실행할 수 없습니다. {0}MB만 사용할 수 있습니다.</TEXT>

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

위기 위반이 감지되면 애플릿이 <ARG> 요소에 있는 XPATH 표현식을 평가하여 "{0}" 문자열 위치에 있는 <MOREINFO> 텍스트에 삽입하므로 "응용 프로그램을 100MB 미만에서 실행할 수 없습니다. 45MB만 사용할 수 있습니다."와 같은 메시지가 표시됩니다. <ARG> 요소의 값은 적합한 XPATH 표현식이어야 합니다. 여러 인수를 지정할 수 있는데, 이 경우 애플릿은 첫번째 표현식을 평가하여 "{0}"를 대체하고 두번째 표현식으로 "{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”>클라이언트에 충분한 메모리가 있습니다.</NAME>

<DESCRIPTION resource=”description@bundle2”>이 규칙은 클라이언트에 응용 프로그램을 실행하기에 충분한 메모리가 있는지 확인합니다.</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 ”>{0}MB의 메모리만 사용할 수 있습니다. </TEXT>

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

</RULES>

애플릿 JAR 파일의 Java 클래스 파일, 서버의 Java 클래스 파일 또는 서버의 XML 파일이 리소스 번들이 될 수 있습니다. 모든 Java 리소스 번들 클래스는 Java.util.ResourceBundle을 확장하는 반면 모든 XML 리소스 번들은 아래에 표시된 형식을 가져야 합니다.

<BUNDLE>

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

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

</BUNDLE>

애플릿은 먼저 현재 로케일에 대해 "es"와 같이 두 글자로 된 코드를 찾습니다. BUNDLE 태그의 구문을 분석할 때 애플릿은 먼저 태그의 값이 Java 클래스 이름일 것이라고 가정합니다. 애플릿은 로케일 코드로 클래스 이름을 수정한 다음 애플릿 JAR 파일에서 이 클래스를 로드하려고 시도합니다. 따라서 위의 예제에 있는 첫번째 번들의 경우 로케일이 "es"이면 애플릿은 acme.bundles.RuleBundle_es를 로드하려고 시도합니다. 해당 클래스가 존재하지 않으면 애플릿은 서버에서 해당 클래스를 로드하려고 시도하며 배치 페이지가 있는 디렉토리를 클래스 경로의 루트 디렉토리로 처리합니다. 따라서 첫번째 번들의 경우 사용자가 http://www.company.com/csa/CSA에서 CSA 애플릿을 가져온 경우 애플릿은 http://www.company.com/csa/acme/bundles/RuleBundle_es.class를 로드하려고 시도합니다. 이 단계를 실패하면 애플릿은 BUNDLE 태그의 값을 서버의 XML 파일 이름으로 처리합니다. 따라서 두번째 <BUNDLE> 요소의 경우 애플릿은 http://www.company.com/csa/ruleBundle_es.xml을 다운로드하려고 시도합니다 .

지정된 리소스 속성이 있는 규칙에서 NAME, DESCRIPTION 또는 TEXT 태그를 발견한 경우 애플릿은 먼저 지정된 리소스를 찾아서 표시하려고 시도합니다. 지정된 번들을 현재 로케일에 대해 사용할 수 없거나 지정된 ID가 번들에 존재하지 않으면 애플릿은 태그 자체의 값을 표시합니다. 예를 들어, 위에 지정된 규칙 파일을 사용할 경우 로케일이 스페인어(es)이고 ruleBundle_es.xml 파일에 ID가 "description"인 리소스가 존재하지 않았다고 가정합니다. 클라이언트가 45MB만 사용할 수 있는 경우 애플릿은 다음을 표시합니다

El cliente tiene bastante memoria - 이 규칙은 클라이언트에 응용 프로그램을 실행하기에 충분한 메모리가 있는지 확인합니다.

- X Solo tienes 45 MB de memoria

마지막으로 특정 규칙을 평가하지 않아야 하는 경우가 있을 수 있습니다. 예를 들어, 사용자의 Netscape 브라우저 설정이 정확한지 확인하도록 설계된 규칙은 사용자가 Internet Explorer로 응용 프로그램에 액세스할 경우 이 규칙을 평가하지 않아도 됩니다. 따라서 관리자는 아래와 같이 각 규칙에 대해 하나 이상의 사전 조건을 지정할 수 있습니다.

<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>클라이언트에 충분한 메모리가 있습니다.</NAME>

<DESCRIPTION >이 규칙은 클라이언트에 응용 프로그램을 실행하기에 충분한 메모리가 있는지 확인합니다.</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>응용 프로그램을 100MB 미만에서 실행할 수 없습니다. {0}MB만 사용할 수 있습니다.</TEXT>

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

</RULES>

각 사전 조건에 대해 애플릿은 지정된 XPATH 표현식을 평가합니다. 표현식이 널이 아닌 결과 집합을 반환하면 사전 조건이 충족된 것입니다. 이는 <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() &gt; 4]</PRECONDITION>

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

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

<RULE>
<NAME resource=”name@bundle1”>클라이언트에 충분한 메모리가 있습니다.</NAME>

<DESCRIPTION resource=”description@bundle2”>이 규칙은 클라이언트에 응용 프로그램을 실행하기에 충분한 메모리가 있는지 확인합니다.</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 ”>{0}MB의 메모리만 사용할 수 있습니다. </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 표현식을 지정하는 데 사용됩니다. "id" 속성은 사전 조건의 ID를 지정합니다. 규칙이 해당 ID를 나열하여 평가해야 할 사전 조건 목록을 지정할 수 있습니다.
RULE 이 태그는 평가할 개별 노드를 나타냅니다. 규칙의 심각도는 <SEVERITY> 태그를 사용하여 지정됩니다(아래 내용 참조). 규칙에 대해 적어도 하나의 심각도 태그를 지정해야 합니다. 태그에는 콤마로 구분된 사전 조건 ID 목록을 지정하는 데 사용되는 선택적 "precondition" 속성이 있습니다. 규칙이 평가되기 전에 모든 사전 조건을 충족해야 합니다. 사전 조건이 충족되지 않으면 규칙은 "적용할 수 없음" 상태가 되고 클라이언트 UI에 표시되지 않습니다. RULE 태그의 하위 요소는 NAME, DESCRIPTION, VIOLATION, SEVERITY 및 MOREINFO입니다.
NAME

이 태그는 규칙 이름을 지정하고 저장소의 태그를 식별합니다.

주: 이 태그는 값을 포함해야 하므로 비워 둘 수 없습니다.

DESCRIPTION 규칙에 대한 설명
VIOLATION

이 태그는 제공된 규칙에 대해 확인할 위반을 나열합니다. 위반은 CSA 조건 언어로 지정됩니다.

SEVERITY 규칙의 심각도 레벨에는 INFO, WARNING 및 CRITICAL의 세 가지가 있습니다. SEVERITY 노드는 VIOLATION 노드의 표현식에서 받아들일 수 있는 인수의 수와 동일한 ARG 하위 요소를 포함해야 합니다. 규칙을 평가할 때 규칙 엔진은 CRITICAL로 시작해서 심각도 순으로 아래로 이동하면서 심각도 레벨에 지정된 각 인수 집합에 대해 VIOLATION에 있는 조건을 평가합니다. 규칙 엔진이 실패한 조건을 만나는 즉시 실패의 원인이 된 인수와 동일한 심각도 레벨로 규칙이 실패로 선언됩니다. 지정한 모든 레벨에 대한 조건이 충족되면 규칙이 성공합니다. SEVERITY 노드의 하위 요소는 PARAM 및 MOREINFO입니다.
PARAM 이 태그는 표현식으로 대체되는 인수의 값을 지정합니다. 태그의 'id' 속성은 표현식의 인수 이름 중 하나와 일치해야 합니다.
MOREINFO

이 태그는 사용자가 실패한 규칙 옆에 표시된 "추가 정보" 단추를 누른 경우에 표시되는 정보를 지정합니다. MOREINFO의 하위 요소는 TEXT 및 ARG입니다.

주: MOREINFO 노드는 심각도 노드의 하위 요소(여러 심각도가 지정된 경우) 또는 규칙 자체의 하위 요소가 될 수 있습니다.

TEXT 이 태그는 "추가 정보" 단추를 누를 때 표시되는 텍스트를 지정합니다. "resource" 속성은 리소스 번들의 문자열을 지정합니다. 이 문자열이 없으면 노드 값이 대신 표시됩니다. 텍스트(리소스 번들이나 노드 자체의 텍스트)는 "{0}", "{1}" 등을 사용하여 삽입할 인수에 대한 위치를 지정할 수 있습니다. 이 경우 ARG 노드에 있는 표현식은 지정된 순서로 평가되어 텍스트에 삽입됩니다. 문자열에 있는 슬롯보다 많은 ARG 노드를 지정하면 추가 노드가 무시됩니다.
ARG

이 태그는 평가하여 MOREINFO 텍스트에 삽입할 수 있는 표현식을 CSA 조건 언어로 지정합니다.

관련 항목

Enterprise Manager 정보 로드맵

복제 정보

Enterprise Manager 정보 로드맵