Element 'activationByGroupingKey'

Das Element <activationByGroupingKey> enthält Elemente, die die Ereignisse angeben, die eine Regelinstanz aktivieren und inaktivieren können, die durch das Element <groupingKey> definiert wird. Da das Element <groupingKey> für die Filter- und Zeitgeberregeln nicht gültig ist, wird das Element <activationByGroupingKey> für diese Regeln nicht angewendet.

Details

Die Funktion des Elements <activationByGroupingKey> dient zur Verwendung in Regeln, bei denen ein Gruppierungsschlüssel definiert wird. Es ermöglicht Ihnen, die Aktivierung und Inaktivierung von Regelinstanzen auf der Basis des Gruppierungsschlüssels zu steuern. Wenn Sie das Element <activationByGroupingKey> codieren, kann jede Regelinstanz individuell auf der Basis der <activateOnEvent>- und <deactivateOnEvent>-Bedingungen innerhalb von <activationByGroupingKey> aktiviert und inaktiviert werden.

Das folgende Beispiel zeigt die Verwendung des Elements <activationByGroupingKey> innerhalb einer Berechnungsregel.

<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>

Attribute

<activationByGroupingKey> weist keine Attribute auf.

Enthalten in

<activationByGroupingKey> ist im folgenden Element enthalten:

Enthält

<activationByGroupingKey> enthält die folgenden Elemente.

Die Elemente müssen in der angezeigten Reihenfolge codiert werden. Wenn ein Element optional ist, muss es nicht codiert werden. Alle codierten Elemente müssen jedoch die richtige Reihenfolge aufweisen.

Tabelle 1. Im Element <activationByGroupingKey> enthaltene Elemente
Element Erforderlich oder optional?
<activateOnEvent> Optional. 0 oder 1 Vorkommen ist zulässig.
<deactivateOnEvent> Optional. 0 oder 1 Vorkommen ist zulässig.

Beziehung zwischen den Elementen <activationInterval> und <activationByGroupingKey>

Die Elemente <activateOnEvent> und <deactivateOnEvent> sind in den beiden folgenden Elementen enthalten:
  • <activationInterval>
  • <activationByGroupingKey>, das auch in <activationInterval> enthalten ist

Das Regelverhalten kann sich basierend auf der aktuellen Regelaktivität und auf den Interaktionen zwischen den Definitionen für <activateOnEvent> und <deactivateOnEvent> innerhalb der Elemente <activationInterval> und <activationByGroupingKey> unterscheiden. Das folgende Beispiel zeigt, wie diese Definitionen interagieren können.

In diesem Beispiel wird eine Duplikatregel definiert, um Ereignisse von Systemen zu unterdrücken, die sich im Wartungsmodus befinden, und um am Ende der Wartungsperiode einen Ergebnisbericht über die Anzahl der unterdrückten Ereignisse bereitzustellen.

Standardmäßig lässt eine Regel, in der ein Gruppierungsschlüssel definiert ist, zu, dass alle Gruppierungsschlüsselwerte verarbeitet werden. Wenn Ereignisse die Ereignisauswahlkriterien für die Regel erfüllen, sind daher alle Regelinstanzen aktiv und bereit, diese Ereignisse mit beliebigen Werten des Gruppierungsschlüssels zu akzeptieren. Das Aktivierungsintervall für die Regel ist mit dem Intervall identisch, das vorliegen würde, wenn die Regel keinen Gruppierungsschlüssel aufweisen würde, da im Prinzip alle Ereignisse verarbeitet werden, die die Ereignisauswahlkriterien für die Regel erfüllen.

Im folgenden Beispiel lautet der Gruppierungsschlüssel hostname, und die Definitionen im Element <activationInterval> geben die folgenden Aktionen an:
  1. Alle Regelinstanzen aktivieren, wenn ein Ereignis des Typs StartMaintenanceModeAllHosts empfangen wird.
  2. Alle Regelinstanzen nach 2 Stunden inaktivieren, oder wenn ein Ereignis des Typs StopMaintenanceModeAllHosts empfangen wird.
<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>

In einigen Situationen möchten Sie möglicherweise steuern, welche Regelinstanzen aktiv werden und wann sie aktiv werden. Für diese Fälle sollten Sie das Element <activationByGroupingKey> codieren.

Das folgende Beispiel erweitert das vorherige Beispiel und zeigt, wie Sie mit dem Gruppierungsschlüsselwert auswählen können, welche Regelinstanzen verarbeitet werden sollen. Die Definitionen im Element <activationByGroupingKey> geben die folgenden Aktionen an:
  1. Die Verarbeitung der Regelinstanzen für bestimmte Hostnamen zulassen, wenn Ereignisse des Typs StartMaintenanceMode für diese Hostnamen empfangen werden.
  2. Diese Regelinstanzen 2 Stunden nach der Aktivierung inaktivieren, oder wenn ein Ereignis des Typs StopMaintenanceMode für den entsprechenden Hostnamen empfangen wird.
    <activationByGroupingKey>
      <activateOnEvent>
        <eventType type="StartMaintenanceMode"/>
        <stopAfter duration="PT2H" unit="ISO-8601"/>
      </activateOnEvent>
      <deactivateOnEvent>
        <eventType type="StopMaintenanceMode"/>
      </deactivateOnEvent>
    		</activationByGroupingKey>
Die folgenden Aussagen fassen zusammen, was geschieht, wenn Sie das Element <activationByGroupingKey> codieren:
  • Wenn das Element <activateOnEvent> im Element <activationByGroupingKey> codiert wird, können nur die Ereignisse verarbeitet werden, die denselben Gruppierungsschlüsselwert wie das Ereignis haben, das die Bedingung für <activateOnEvent> in <activationByGroupingKey> erfüllte.
  • Wenn das Element <deactivateOnEvent> im Element <activationByGroupingKey> codiert wird, können die Ereignisse nicht verarbeitet werden, die denselben Gruppierungsschlüsselwert wie das Ereignis haben, das die Bedingung für <activationByGroupingKey> <deactivateOnEvent> erfüllte.

Auswirkungen verschiedener Aktivierungs- und Inaktivierungsdefinitionen auf den Regelstatus

Tabelle 2 und Tabelle 3 zeigen, wie der Status einer Regel von verschiedenen Aktivierungs- und Inaktivierungdefinitionen betroffen wird. In diesen Tabellen werden die folgenden Konventionen verwendet:
  • A ist ein aktivierendes Ereignis.
  • In der Notation "A[x]" steht x für den Gruppierungsschlüsselwert. Beispiel: A[1] ist ein aktivierendes Ereignis mit dem Gruppierungsschlüsselwert 1.
  • D ist ein inaktivierendes Ereignis.
  • In der Notation "D[x]" steht x für den Gruppierungsschlüsselwert. Beispiel: D[1] ist ein inaktivierendes Ereignis mit dem Gruppierungsschlüsselwert 1.
Tabelle 2. Regelstatusänderungen basierend auf verschiedenen Aktivierungsdefinitionen
Startstatus der Regel Mögliche Auswirkung auf Regelstatus Endstatus der Regel
Inaktiv Definierte Zeit in <activationInterval> <activationTime> <start>
  1. Die Regel wird aktiviert.
  2. Die Aktionen <onActivation> werden ausgeführt.
  3. Alle Gruppierungsschlüsselwerte sind zulässig.
Methode activate()
Ereignis A (definiert in <activationInterval> <activateOnEvent>)
Ereignis A[1] (definiert in <activationByGroupingKey> <activateOnEvent> ohne <stopAfter>)
  1. Die Regel wird aktiviert.
  2. Die Aktionen <onActivation> werden ausgeführt.
  3. Nur der Gruppierungsschlüsselwert 1 ist zulässig. Wenn das Regelmuster für diese Regelinstanz übereinstimmt, ist der Gruppierungsschlüsselwert 1 nicht mehr zulässig.
Ereignis A[2] (definiert in <activateOnEvent> mit <stopAfter>)
  1. Die Regel wird aktiviert.
  2. Die Aktionen <onActivation> werden ausgeführt.
  3. Nur der Gruppierungsschlüsselwert 2 ist zulässig. Er ist allerdings nur für die Dauer zulässig, die durch das Element <stopAfter> angegeben wird. Während dieser Zeitdauer kann das Regelmuster für diese Regelinstanz mehrfach übereinstimmen.
  • Aktiv
  • Alle Gruppierungsschlüsselwerte sind zulässig
Definierte Zeit in <activationInterval> <activationTime> <start> Der Regelstatus wurde nicht geändert. Er ist mit dem Startstatus der Regel identisch.
Methode activate()
Ereignis A (definiert in <activationInterval> <activateOnEvent>)
Ereignis A[1] (definiert in <activationByGroupingKey> <activateOnEvent> ohne <stopAfter>)
Ereignis A[2] (definiert in <activateOnEvent> mit <stopAfter>)
  • Aktiv
  • Es sind nur Gruppierungsschlüsselwerte zulässig, die basierend auf den Definitionen <activationByGroupingKey> <activateOnEvent> Regelinstanzen ausgelöst haben
Definierte Zeit in <activationInterval> <activationTime> <start> Der Regelstatus wurde nicht geändert. Er ist mit dem Startstatus der Regel identisch.
Methode activate()
Ereignis A (definiert in <activationInterval> <activateOnEvent>) Alle Gruppierungsschlüsselwerte sind zulässig.
Ereignis A[1] (definiert in <activationByGroupingKey> <activateOnEvent> ohne <stopAfter>)
  • Der Gruppierungsschlüsselwert 1 ist jetzt zusätzlich zu den bereits gültigen Gruppierungsschlüsselwerten zulässig.
  • Wenn das Regelmuster für diese Regelinstanz übereinstimmt, ist der Gruppierungsschlüsselwert 1 nicht mehr zulässig.
Ereignis A[2] (definiert in <activateOnEvent> mit <stopAfter>)
  • Der Gruppierungsschlüsselwert 2 ist jetzt zusätzlich zu den bereits gültigen Gruppierungsschlüsselwerten zulässig.
  • Dieser Wert ist nur für die Dauer zulässig, die durch das Element <stopAfter> angegeben wird.
  • Während dieser Zeitdauer kann das Regelmuster für diese Regelinstanz mehrfach übereinstimmen.
  • Aktiv
  • Alle Gruppierungsschlüsselwerte sind zulässig, mit Ausnahme der Werte, die basierend auf den Definitionen <activationByGroupingKey> <deactivateOnEvent> nicht zulässig sind
Definierte Zeit in <activationInterval> <activationTime> <start> Der Regelstatus wurde nicht geändert. Er ist mit dem Startstatus der Regel identisch.
Methode activate()
Ereignis A (definiert in <activationInterval> <activateOnEvent>) Alle Gruppierungsschlüsselwerte sind zulässig.
Ereignis A[1] (definiert in <activationByGroupingKey> <activateOnEvent> ohne <stopAfter>) Der Gruppierungsschlüsselwert 1 ist jetzt zusätzlich zu den bereits gültigen Gruppierungsschlüsselwerten zulässig.
Ereignis A[2] (definiert in <activateOnEvent> mit <stopAfter>) Der Gruppierungsschlüsselwert 2 ist jetzt zusätzlich zu den bereits gültigen Gruppierungsschlüsselwerten zulässig.
Tabelle 3. Regelstatusänderungen basierend auf verschiedenen Inaktivierungsdefinitionen
Startstatus der Regel Mögliche Auswirkung auf Regelstatus Endstatus der Regel
Inaktiv Definierte Zeit in <activationInterval> <activationTime> <stop> Der Regelstatus wurde nicht geändert. Er ist mit dem Startstatus der Regel identisch.
Methode deactivate()
Ereignis D (definiert in <activationInterval> <deactivateOnEvent>)
Ereignis D[1] (definiert in <activationByGroupingKey> <deactivateOnEvent>)
Definierte Dauer in <activationByGroupingKey> <activateOnEvent> <stopAfter> endet für Ereignis A[2]
  • Aktiv
  • Alle Gruppierungsschlüsselwerte sind zulässig
Definierte Zeit in <activationInterval> <activationTime> <stop>
  1. Alle Regelinstanzen werden inaktiviert.
  2. Die Aktionen <onDeactivation> werden ausgeführt.
  3. Die Regel wird inaktiviert.
Methode deactivate()
Ereignis D (definiert in <activationInterval> <deactivateOnEvent>)
Ereignis D[1] (definiert in <activationByGroupingKey> <deactivateOnEvent>)
  • Der Gruppierungsschlüsselwert 1 ist nicht mehr zulässig.
  • Wenn eine Regelinstanz mit dem Gruppierungsschlüsselwert 1 aktiv ist, wird sie inaktiviert.
Definierte Dauer in <activationByGroupingKey> <activateOnEvent> <stopAfter> endet für Ereignis A[2] Eine Regelinstanz mit dem Gruppierungsschlüsselwert 2 wird inaktiviert.
  • Aktiv
  • Es sind nur Gruppierungsschlüsselwerte zulässig, die basierend auf den Definitionen <activationByGroupingKey> <activateOnEvent> Regelinstanzen ausgelöst haben
Definierte Zeit in <activationInterval> <activationTime> <stop>
  1. Alle Regelinstanzen werden inaktiviert.
  2. Die Aktionen <onDeactivation> werden ausgeführt.
  3. Die Regel wird inaktiviert.
Methode deactivate()
Ereignis D (definiert in <activationInterval> <deactivateOnEvent>)
Ereignis D[1] (definiert in <activationByGroupingKey> <deactivateOnEvent>)
  • Der Gruppierungsschlüsselwert 1 ist nicht mehr zulässig.
  • Wenn eine Regelinstanz mit dem Gruppierungsschlüsselwert 1 aktiv ist, wird sie inaktiviert.
Definierte Dauer in <activationByGroupingKey> <activateOnEvent> <stopAfter> endet für Ereignis A[2]
  • Der Gruppierungsschlüsselwert 2 ist nicht mehr zulässig.
  • Eine Regelinstanz mit dem Gruppierungsschlüsselwert 2 wird inaktiviert.
  • Aktiv
  • Alle Gruppierungsschlüsselwerte sind zulässig, mit Ausnahme der Werte, die basierend auf den Definitionen <activationByGroupingKey> <deactivateOnEvent> nicht zulässig sind
Definierte Zeit in <activationInterval> <activationTime> <stop>
  1. Alle Regelinstanzen werden inaktiviert.
  2. Die Aktionen <onDeactivation> werden ausgeführt.
  3. Die Regel wird inaktiviert.
Methode deactivate()
Ereignis D (definiert in <activationInterval> <deactivateOnEvent>)
Ereignis D[1] (definiert in <activationByGroupingKey> <deactivateOnEvent>)
  • Der Gruppierungsschlüsselwert 1 ist nicht mehr zulässig.
  • Wenn eine Regelinstanz mit dem Gruppierungsschlüsselwert 1 aktiv ist, wird sie inaktiviert.
Definierte Dauer in <activationByGroupingKey> <activateOnEvent> <stopAfter> endet für Ereignis A[2] Eine Regelinstanz mit dem Gruppierungsschlüsselwert 2 wird inaktiviert.