activationByGroupingKey 요소

<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>는 다음 요소 내에 포함되어 있습니다.

포함 요소

<activationByGroupingKey>에는 다음 요소가 포함되어 있습니다.

요소는 표시된 순서대로 코딩되어야 합니다. 요소가 선택적이면 코딩할 필요가 없지만 코딩된 모든 요소는 올바른 순서를 따라야 합니다.

표 1. <activationByGroupingKey> 요소 내에 포함된 요소
요소 필수 또는 선택적 여부
<activateOnEvent> 선택적. 0 또는 1 발생이 허용됩니다.
<deactivateOnEvent> 선택적. 0 또는 1 발생이 허용됩니다.

<activationInterval> 및 <activationByGroupingKey> 요소 간의 관계

<activateOnEvent> 및 <deactivateOnEvent> 요소는 이러한 두 요소 내에 포함되어 있습니다.
  • <activationInterval>
  • <activationInterval>에 포함되어 있는 <activationByGroupingKey>

규칙 작동은 현재 규칙 활동 및 <activationInterval>과(와) <activationByGroupingKey> 요소 내의 <activateOnEvent>과(와) <deactivateOnEvent> 정의 간의 상호작용에 따라 다를 수 있습니다. 다음 예제는 이러한 정의가 상호작용하는 방법을 보여줍니다.

이 예제에서는 유지보수 모드에 있는 시스템에서는 이벤트를 억제하고, 유지보수 기간 종료 시에 억제된 이벤트 개수의 요약 보고서를 제공하도록 중복 규칙이 정의되어 있습니다.

기본적으로 그룹화 키가 정의되어 있는 규칙을 사용하면 모든 그룹화 키 값을 처리할 수 있습니다. 그러므로 이벤트가 규칙의 이벤트 선택 기준에 부합하면 모든 규칙 인스턴스가 활성이 되고 그룹화 키의 값에 따라 이러한 이벤트를 승인할 준비가 됩니다. 규칙의 활성화 간격은 규칙에 그룹화 키가 없는 것과 마찬가지입니다. 왜냐하면 기본적으로 규칙의 이벤트 선택 기준에 부합하는 모든 이벤트가 처리되기 때문입니다.

다음 예제에서 그룹화 키는 hostname이고 <activationInterval> 요소 내의 정의는 다음 조치를 지정합니다.
  1. StartMaintenanceModeAllHosts 이벤트 유형을 받을 때 모든 규칙 인스턴스를 활성화합니다.
  2. 2시간 후나 StopMaintenanceModeAllHosts 이벤트 유형을 받을 때 모든 규칙을 비활성화합니다.
<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> 요소 내의 정의는 다음 조치를 지정할 수 있습니다.
  1. 특정 호스트 이름의 규칙 인스턴스가 이러한 호스트 이름에 대한 StartMaintenanceMode 이벤트 유형을 받을 때 처리할 수 있도록 허용합니다.
  2. 활성화 2시간 후나 개별 호스트 이름에 대한 StopMaintenanceMode 이벤트 유형을 받을 때 이러한 규칙 인스턴스를 비활성화합니다.
    <activationByGroupingKey>
      <activateOnEvent>
        <eventType type="StartMaintenanceMode"/>
        <stopAfter duration="PT2H" unit="ISO-8601"/>
      </activateOnEvent>
      <deactivateOnEvent>
        <eventType type="StopMaintenanceMode"/>
      </deactivateOnEvent>
    		</activationByGroupingKey>
다음 명령문은 <activationByGroupingKey> 요소를 코딩할 때 발생하는 일을 요약합니다.
  • <activateOnEvent> 요소가 <activationByGroupingKey> 요소 내에서 코딩되면 <activationByGroupingKey> <activateOnEvent> 조건에 부합하는 이벤트의 그룹화 키 값을 공유하는 이벤트만을 처리할 수 있습니다.
  • <deactivateOnEvent> 요소가 <activationByGroupingKey> 요소 내에서 코딩되면 <activationByGroupingKey> <deactivateOnEvent> 조건에 부합하는 이벤트의 그룹화 키 값을 공유하는 이벤트는 처리가 허용되지 않습니다.

활성화 및 비활성화 정의가 규칙 상태에 미치는 서로 다른 영향

표 2표 3에서는 서로 다른 활성화 및 비활성화 정의에 의해 규칙 상태가 영향을 어떤 받는지를 보여줍니다. 이러한 테이블에서는 다음과 같은 규칙이 사용됩니다.
  • A는 활성화 이벤트입니다.
  • "A[x] 표기에서, " x는 그룹화 키 값을 표시합니다. 예를 들어, A[1]는 그룹화 키 값 1을 사용하는 활성화 이벤트입니다.
  • D는 비활성화 이벤트입니다.
  • "D[x] 표기에서, " x는 그룹화 키 값을 표시합니다. 예를 들어, D[1]는 그룹화 키 값 1을 사용하는 비활성화 이벤트입니다.
표 2. 규칙 상태는 서로 다른 활성화 정의에 따라 변경됨
시작 규칙 상태 규칙 상태는 잠재적으로 다음에 영향 받음 종료 규칙 상태
비활성 <activationInterval> <activationTime> <start> 내에 정의된 시간
  1. 규칙이 활성화됩니다.
  2. <onActivation> 조치가 실행됩니다.
  3. 모든 그룹화 키 값이 허용됩니다.
activate() 메소드
<activationInterval> <activateOnEvent> 내에 정의된 A 이벤트
<activationByGroupingKey> <activateOnEvent>(<stopAfter> 없이) 내에 정의된 A[1] 이벤트
  1. 규칙이 활성화됩니다.
  2. <onActivation> 조치가 실행됩니다.
  3. 그룹화 키 값 1만이 허용됩니다. 규칙 패턴이 이 규칙 인스턴스와 일치하면 그룹화 키 값 1은 더 이상 허용되지 않습니다.
<activateOnEvent>(<stopAfter> ) 내에 정의된 A[2] 이벤트
  1. 규칙이 활성화됩니다.
  2. <onActivation> 조치가 실행됩니다.
  3. 그룹화 키 값 2만이 허용되며 <stopAfter> 요소로 지정된 기간 동안에만 허용됩니다. 이 규칙 인스턴스의 규칙 패턴은 이 기간 동안에 여러 번 일치할 수 있습니다.
  • 활성
  • 모든 그룹화 키 값 허용
<activationInterval> <activationTime> <start> 내에 정의된 시간 규칙 상태가 변경되지 않았습니다. 시작 규칙 상태와 같습니다.
activate() 메소드
<activationInterval> <activateOnEvent> 내에 정의된 A 이벤트
<activationByGroupingKey> <activateOnEvent>(<stopAfter> 없이) 내에 정의된 A[1] 이벤트
<activateOnEvent>(<stopAfter>) 내에 정의된 A[2] 이벤트
  • 활성
  • <activationByGroupingKey> <activateOnEvent> 정의를 기반으로 규칙 인스턴스를 트리거한 그룹화 키 값만 허용
<activationInterval> <activationTime> <start> 내에 정의된 시간 규칙 상태가 변경되지 않았습니다. 시작 규칙 상태와 같습니다.
activate() 메소드
<activationInterval> <activateOnEvent> 내에 정의된 A 이벤트 모든 그룹화 키 값이 허용됩니다.
<activationByGroupingKey> <activateOnEvent>(<stopAfter> 없이 ) 내에 정의된 A[1] 이벤트
  • 이전에 허용된 그룹화 키 값에 추가로 그룹화 키 값 1이 허용됩니다.
  • 규칙 패턴이 이 규칙 인스턴스와 일치하면 그룹화 키 값 1은 더 이상 허용되지 않습니다.
<activateOnEvent>(<stopAfter>) 내에 정의된 A[2] 이벤트
  • 이전에 허용된 그룹화 키 값에 추가로 그룹화 키 값 2가 허용됩니다.
  • 이 값은 <stopAfter> 요소로 지정된 기간 동안에만 허용됩니다.
  • 이 규칙 인스턴스의 규칙 패턴은 이 기간 동안에 여러 번 일치할 수 있습니다.
  • 활성
  • <activationByGroupingKey> <deactivateOnEvent> 정의에 따라 허용되지 않은 값을 제외한 모든 그룹화 키 값 허용
<activationInterval> <activationTime> <start> 내에 정의된 시간 규칙 상태가 변경되지 않았습니다. 시작 규칙 상태와 같습니다.
activate() 메소드
<activationInterval> <activateOnEvent> 내에 정의된 A 이벤트 모든 그룹화 키 값이 허용됩니다.
<activationByGroupingKey> <activateOnEvent>(<stopAfter> 없이) 내에 정의된 A[1] 이벤트 이전에 허용된 그룹화 키 값에 추가로 그룹화 키 값 1이 허용됩니다.
<activateOnEvent>(<stopAfter> ) 내에 정의된 A[2] 이벤트 이전에 허용된 그룹화 키 값에 추가로 그룹화 키 값 2가 허용됩니다.
표 3. 규칙 상태는 서로 다른 비활성화 정의에 따라 변경됨
시작 규칙 상태 규칙 상태는 잠재적으로 다음의 영향을 받습니다. 종료 규칙 상태
비활성 <activationInterval> <activationTime> <stop> 내에 정의된 시간 규칙 상태가 변경되지 않았습니다. 시작 규칙 상태와 같습니다.
deactivate() 메소드
<activationInterval> <deactivateOnEvent> 내에 정의된 D 이벤트
<activationByGroupingKey> <deactivateOnEvent> 내에 정의된 D[1] 이벤트
<activationByGroupingKey> <activateOnEvent> <stopAfter> 내에 정의된 지속 기간이 A[2] 이벤트로 인해 종료됨
  • 활성
  • 모든 그룹화 키 값 허용
<activationInterval> <activationTime> <stop> 내에 정의된 시간
  1. 모든 규칙 인스턴스가 비활성화됩니다.
  2. <onDeactivation> 조치가 실행됩니다.
  3. 규칙이 비활성화됩니다.
deactivate() 메소드
<activationInterval> <deactivateOnEvent> 내에 정의된 D 이벤트
<activationByGroupingKey> <deactivateOnEvent> 내에 정의된 D[1] 이벤트
  • 그룹화 키 값 1이 더 이상 허용되지 않습니다.
  • 그룹화 키 값 1이 있는 규칙 인스턴스가 활성이면 이는 비활성화됩니다.
<activationByGroupingKey> <activateOnEvent> <stopAfter> 내에 정의된 지속 기간이 A[2] 이벤트로 인해 종료됨 그룹화 키 값 2가 있는 규칙 인스턴스가 비활성화됩니다.
  • 활성
  • <activationByGroupingKey> <activateOnEvent> 정의를 기반으로 규칙 인스턴스를 트리거한 그룹화 키 값만 허용
<activationInterval> <activationTime> <stop> 내에 정의된 시간
  1. 모든 규칙 인스턴스가 비활성화됩니다.
  2. <onDeactivation> 조치가 실행됩니다.
  3. 규칙이 비활성화됩니다.
deactivate() 메소드
<activationInterval> <deactivateOnEvent> 내에 정의된 D 이벤트
<activationByGroupingKey> <deactivateOnEvent> 내에 정의된 D[1] 이벤트
  • 그룹화 키 값 1이 더 이상 허용되지 않습니다.
  • 그룹화 키 값 1이 있는 규칙 인스턴스가 활성이면 이는 비활성화됩니다.
<activationByGroupingKey> <activateOnEvent> <stopAfter> 내에 정의된 지속 기간이 A[2] 이벤트로 인해 종료됨
  • 그룹화 키 값 2는 더 이상 허용되지 않습니다.
  • 그룹화 키 값 2가 있는 규칙 인스턴스가 비활성화됩니다.
  • 활성
  • <activationByGroupingKey> <deactivateOnEvent> 정의에 따라 허용되지 않은 값을 제외한 모든 그룹화 키 값 허용
<activationInterval> <activationTime> <stop> 내에 정의된 시간
  1. 모든 규칙 인스턴스가 비활성화됩니다.
  2. <onDeactivation> 조치가 실행됩니다.
  3. 규칙이 비활성화됩니다.
deactivate() 메소드
<activationInterval> <deactivateOnEvent> 내에 정의된 D 이벤트
<activationByGroupingKey> <deactivateOnEvent> 내에 정의된 D[1] 이벤트
  • 그룹화 키 값 1이 더 이상 허용되지 않습니다.
  • 그룹화 키 값 1이 있는 규칙 인스턴스가 활성이면 이는 비활성화됩니다.
<activationByGroupingKey> <activateOnEvent> <stopAfter> 내에 정의된 지속 기간이 A[2] 이벤트로 인해 종료됨 그룹화 키 값 2가 있는 규칙 인스턴스가 비활성화됩니다.