<activationByGroupingKey> 요소에는 <groupingKey> 요소로 정의되는 규칙 인스턴스를 활성화하고 비활성화할 수 있는 이벤트를 지정하는 요소가 포함되어 있습니다. <groupingKey> 요소는 필터 및 타이머 규칙의 경우에는 사용할 수 없으므로 <activationByGroupingKey> 요소는 이러한 규칙에는 적용되지 않습니다.
<activationByGroupingKey> 요소가 제공하는 함수는 그룹화 키를 정의하는 규칙에서 사용하기 위한 것입니다. 이를 사용하면 그룹화 키를 기반으로 규칙 인스턴스의 활성화 및 비활성화를 제어할 수 있습니다. <activationByGroupingKey> 요소를 코딩할 때 각 규칙 인스턴스는 <activationByGroupingKey> 내의 <activateOnEvent> 및 <deactivateOnEvent> 조건에 따라 개별적으로 활성화하고 비활성화할 수 있습니다.
다음 예제는 계산 규칙 내에서 <activationByGroupingKey> 요소의 사용을 보여줍니다.
<computationRule name="StockReporter"> <variable dataType="java.lang.Integer" name="totalSharesTraded"> <varInitializer expressionLanguage="java"> return new Integer(0); </varInitializer> </variable> <activationInterval> <activationTime> <start> <inactiveWhenLoaded/> </start> </activationTime> <activationByGroupingKey> <activateOnEvent> <eventType type="StartReporting"/> </activateOnEvent> </activationByGroupingKey> </activationInterval> <eventSelector> <eventType type="StockSharesTraded"/> </eventSelector> <groupingKey> <attributeName>stockSymbol</attributeName> </groupingKey> <computeFunction assignTo="totalSharesTraded" expressionLanguage="java"> return new Integer(act_lib.getIntVariable("totalSharesTraded") + act_event.getIntAttribute("sharesTraded")); </computeFunction> <timeWindow> <timeInterval unit="ISO-8601" duration="PT10M"/> </timeWindow> <onTimeWindowComplete> <action expressionLanguage="java"> StockReport.createReport(act_eventList.get(0).getStringAttribute("stockSymbol"), act_lib.getIntVariable("totalSharesTraded")); </action> </onTimeWindowComplete> </computationRule>
<activationByGroupingKey>에는 속성이 없습니다.
<activationByGroupingKey>에는 다음 요소가 포함되어 있습니다.
요소는 표시된 순서대로 코딩되어야 합니다. 요소가 선택적이면 코딩할 필요가 없지만 코딩된 모든 요소는 올바른 순서를 따라야 합니다.
요소 | 필수 또는 선택적 여부 |
---|---|
<activateOnEvent> | 선택적. 0 또는 1 발생이 허용됩니다. |
<deactivateOnEvent> | 선택적. 0 또는 1 발생이 허용됩니다. |
규칙 작동은 현재 규칙 활동 및 <activationInterval>과(와) <activationByGroupingKey> 요소 내의 <activateOnEvent>과(와) <deactivateOnEvent> 정의 간의 상호작용에 따라 다를 수 있습니다. 다음 예제는 이러한 정의가 상호작용하는 방법을 보여줍니다.
이 예제에서는 유지보수 모드에 있는 시스템에서는 이벤트를 억제하고, 유지보수 기간 종료 시에 억제된 이벤트 개수의 요약 보고서를 제공하도록 중복 규칙이 정의되어 있습니다.
기본적으로 그룹화 키가 정의되어 있는 규칙을 사용하면 모든 그룹화 키 값을 처리할 수 있습니다. 그러므로 이벤트가 규칙의 이벤트 선택 기준에 부합하면 모든 규칙 인스턴스가 활성이 되고 그룹화 키의 값에 따라 이러한 이벤트를 승인할 준비가 됩니다. 규칙의 활성화 간격은 규칙에 그룹화 키가 없는 것과 마찬가지입니다. 왜냐하면 기본적으로 규칙의 이벤트 선택 기준에 부합하는 모든 이벤트가 처리되기 때문입니다.
<duplicateRule name="Maintenance_Supression"> <activationInterval> <activationTime> <start> <inactiveWhenLoaded/> </start> <stop> <after duration="PT2H" unit="ISO-8601"/> </stop> </activationTime> <activateOnEvent> <eventType type="StartMaintenanceModeAllHosts"/> </activateOnEvent> <deactivateOnEvent> <eventType type="StopMaintenanceModeAllHosts"/> </deactivateOnEvent> </activationInterval> <groupingKey missingAttributeHandling="ignoreEvent"> <attributeName>hostname</attributeName> </groupingKey> <timeWindow> <runUntilDeactivated/> </timeWindow> <onDetection> <action expressionLanguage="java" name="DropEvent"> <![CDATA[act_lib.exitRuleSet();]]> </action> </onDetection> <onTimeWindowComplete> <action expressionLanguage="java" name="CreateSummaryOfSupressedEvents"> <![CDATA[Helper.createSummaryEvent("MaintenanceSummary", act_eventList, act_lib);]]> </action> </onTimeWindowComplete> </duplicateRule>
어떤 경우에는 어떤 규칙 인스턴스를 활성화할지와 이를 활성화하는 시기를 제어하고 싶을 수 있습니다. 이런 경우 <activationByGroupingKey> 요소를 코딩해야 합니다.
<activationByGroupingKey> <activateOnEvent> <eventType type="StartMaintenanceMode"/> <stopAfter duration="PT2H" unit="ISO-8601"/> </activateOnEvent> <deactivateOnEvent> <eventType type="StopMaintenanceMode"/> </deactivateOnEvent> </activationByGroupingKey>
시작 규칙 상태 | 규칙 상태는 잠재적으로 다음에 영향 받음 | 종료 규칙 상태 |
---|---|---|
비활성 | <activationInterval> <activationTime> <start> 내에 정의된 시간 |
|
activate() 메소드 | ||
<activationInterval> <activateOnEvent> 내에 정의된 A 이벤트 | ||
<activationByGroupingKey> <activateOnEvent>(<stopAfter> 없이) 내에 정의된 A[1] 이벤트 |
|
|
<activateOnEvent>(<stopAfter> 와) 내에 정의된 A[2] 이벤트 |
|
|
|
<activationInterval> <activationTime> <start> 내에 정의된 시간 | 규칙 상태가 변경되지 않았습니다. 시작 규칙 상태와 같습니다. |
activate() 메소드 | ||
<activationInterval> <activateOnEvent> 내에 정의된 A 이벤트 | ||
<activationByGroupingKey> <activateOnEvent>(<stopAfter> 없이) 내에 정의된 A[1] 이벤트 | ||
<activateOnEvent>(<stopAfter>와) 내에 정의된 A[2] 이벤트 | ||
|
<activationInterval> <activationTime> <start> 내에 정의된 시간 | 규칙 상태가 변경되지 않았습니다. 시작 규칙 상태와 같습니다. |
activate() 메소드 | ||
<activationInterval> <activateOnEvent> 내에 정의된 A 이벤트 | 모든 그룹화 키 값이 허용됩니다. | |
<activationByGroupingKey> <activateOnEvent>(<stopAfter> 없이 ) 내에 정의된 A[1] 이벤트 |
|
|
<activateOnEvent>(<stopAfter>와) 내에 정의된 A[2] 이벤트 |
|
|
|
<activationInterval> <activationTime> <start> 내에 정의된 시간 | 규칙 상태가 변경되지 않았습니다. 시작 규칙 상태와 같습니다. |
activate() 메소드 | ||
<activationInterval> <activateOnEvent> 내에 정의된 A 이벤트 | 모든 그룹화 키 값이 허용됩니다. | |
<activationByGroupingKey> <activateOnEvent>(<stopAfter> 없이) 내에 정의된 A[1] 이벤트 | 이전에 허용된 그룹화 키 값에 추가로 그룹화 키 값 1이 허용됩니다. | |
<activateOnEvent>(<stopAfter> 와) 내에 정의된 A[2] 이벤트 | 이전에 허용된 그룹화 키 값에 추가로 그룹화 키 값 2가 허용됩니다. |
시작 규칙 상태 | 규칙 상태는 잠재적으로 다음의 영향을 받습니다. | 종료 규칙 상태 |
---|---|---|
비활성 | <activationInterval> <activationTime> <stop> 내에 정의된 시간 | 규칙 상태가 변경되지 않았습니다. 시작 규칙 상태와 같습니다. |
deactivate() 메소드 | ||
<activationInterval> <deactivateOnEvent> 내에 정의된 D 이벤트 | ||
<activationByGroupingKey> <deactivateOnEvent> 내에 정의된 D[1] 이벤트 | ||
<activationByGroupingKey> <activateOnEvent> <stopAfter> 내에 정의된 지속 기간이 A[2] 이벤트로 인해 종료됨 | ||
|
<activationInterval> <activationTime> <stop> 내에 정의된 시간 |
|
deactivate() 메소드 | ||
<activationInterval> <deactivateOnEvent> 내에 정의된 D 이벤트 | ||
<activationByGroupingKey> <deactivateOnEvent> 내에 정의된 D[1] 이벤트 |
|
|
<activationByGroupingKey> <activateOnEvent> <stopAfter> 내에 정의된 지속 기간이 A[2] 이벤트로 인해 종료됨 | 그룹화 키 값 2가 있는 규칙 인스턴스가 비활성화됩니다. | |
|
<activationInterval> <activationTime> <stop> 내에 정의된 시간 |
|
deactivate() 메소드 | ||
<activationInterval> <deactivateOnEvent> 내에 정의된 D 이벤트 | ||
<activationByGroupingKey> <deactivateOnEvent> 내에 정의된 D[1] 이벤트 |
|
|
<activationByGroupingKey> <activateOnEvent> <stopAfter> 내에 정의된 지속 기간이 A[2] 이벤트로 인해 종료됨 |
|
|
|
<activationInterval> <activationTime> <stop> 내에 정의된 시간 |
|
deactivate() 메소드 | ||
<activationInterval> <deactivateOnEvent> 내에 정의된 D 이벤트 | ||
<activationByGroupingKey> <deactivateOnEvent> 내에 정의된 D[1] 이벤트 |
|
|
<activationByGroupingKey> <activateOnEvent> <stopAfter> 내에 정의된 지속 기간이 A[2] 이벤트로 인해 종료됨 | 그룹화 키 값 2가 있는 규칙 인스턴스가 비활성화됩니다. |