Schema di sequenza

Una regola di sequenza viene definita da uno schema di sequenza. Essa rileva se una certa sequenza di eventi arriva all'interno di un intervallo di tempo. La sequenza può essere ordinata o casuale. Essa è una regola stateful.

Panoramica

Lo schema di sequenza ricerca una sequenza di eventi in un certo periodo di tempo e rileva se la sequenza è completa o incompleta. Una sequenza incompleta include uno o più eventi nell'ordine specificato ma non tutti.

Il periodo è indicato da una finestra definita dall'elemento <timeWindow> nella lingua della regola. Ogni evento nella sequenza è definito da un elemento <eventSelector> separato all'interno della regola. La sequenza di eventi può essere rilevata in uno dei seguenti ordini:
  • Nell'ordine in cui gli elementi <eventSelector> sono codificati per la regola. In questo caso, quando la regola rileva l'evento che è definito dal primo elemento <eventSelector>, viene avviato il rilevamento della sequenza. La regola attende poi l'evento che viene definito dal secondo elemento <eventSelector>.
  • In ordine casuale. In questo caso, quando la regola rileva l'evento che è definito dagli elementi <eventSelector>, viene avviato il rilevamento della sequenza. La regola attende poi un altro degli eventi che sono definiti dagli elementi <eventSelector>.
Lo schema di sequenza è differente da altri schemi di regola nei seguenti modi principali:
  • Esso ha più elementi <eventSelector> per definire quali eventi sono accettati dalla regola. Esso richiede anche un minimo di due elementi <eventSelector>.
  • Quando un evento risponde ai criteri definiti da uno degli elementi <eventSelector>, quell'elemento <eventSelector> viene escluso da una ulteriore elaborazione di evento all'interno di quell'istanza della regola.
  • L'attributo alias sull'elemento <eventSelector> è valido solo in una regola di sequenza e definisce in modo univoco un evento selezionato in base ad un certo programma di selezione eventi in una regola di sequenza. In un'espressione all'interno di un predicato o di un'azione di filtro, è possibile utilizzare la variabile act_eventList con questo nome per accedere a un evento.

Condizioni in cui viene eseguita la risposta della regola

Con lo schema di sequenza, la risposta di regola viene eseguita nei seguenti momenti:
  • Quando viene rilevata la sequenza completa di eventi nella finestra di tempo, come definito dall'elemento <onDetection>.
  • Quando vengono accettati uno o più eventi ma la sequenza completa non arriva nella finestra di tempo, come definito dall'elemento <onTimeOut>.

    Lo schema di sequenza può risultare utile per rilevare che una certa sequenza è incompleta. Ad esempio, se si verifica un evento di "sistema guasto" senza un evento di "sistema funzionante" susseguente, il programma di scrittura di regola può codificare un'azione <onTimeOut> per gestire questo tipo di evento mancante.

Esempio d'uso di questo schema di regola

Scenario che illustra il rilevamento di sequenza completa:
In un ambiente IT, un amministratore desidera sapere se il valore della dimensione del pacchetto DB2 sta condizionando WebSphere Application Server e, in questo caso, desidera correggere il problema. Di conseguenza, se gli eventi successivi si verificano nel seguente ordine durante un periodo di tempo specificato, l'amministratore desidera incrementare il valore della dimensione del pacchetto DB2 e riavviare il gestore del database:
  1. Eccezione di assegnazione risorsa di WebSphere Application Server. Evento di tipo WASResourceAllocationException.
  2. Messaggio di errore DB2 che indica: "Pacchetto insufficiente per elaborare l'istruzione". Evento del tipo DB2NotEnoughHeap.
Due elementi <eventSelector> sono definiti in una regola di sequenza e gli eventi devono arrivare nell'ordine in cui gli elementi <eventSelector> vengono codificati per la regola (piuttosto che in ordine casuale). Il primo elemento <eventSelector> ricerca l'evento WASResourceAllocationException e il secondo elemento <eventSelector> ricerca l'evento DB2NotEnoughHeap. I seguenti eventi vengono presentati al sistema nella finestra di tempo specificata:
  1. WASResourceAllocationException
  2. DB2BackupStarted
  3. WASResourceAllocationException
  4. WASResourceAllocationException
  5. DB2NotEnoughHeap
Il comportamento della regola è il seguente:
  1. Il primo evento, WASResourceAllocationException, viene accettato. Poiché i criteri per il primo elemento <eventSelector> sono soddisfatti, il primo elemento <eventSelector> viene escluso da una ulteriore elaborazione all'interno della regola.
  2. Il secondo evento, DB2BackupStarted, viene ignorato.
  3. Il terzo evento, WASResourceAllocationException, viene ignorato.
  4. Il quarto evento, WASResourceAllocationException, viene ignorato.
  5. Il quinto evento, DB2NotEnoughHeap, viene accettato e completa la sequenza. Viene eseguita l'azione di risposta alla regola <onDetection>. Questa azione viene definita per incrementare il valore della dimensione del pacchetto DB2 e riavviare il gestore database. La regola ritorna allo stato iniziale.

    Il primo elemento <eventSelector> viene poi incluso nell'elaborazione eventi successiva con questa regola.

Scenario che illustra il rilevamento di sequenza incompleta:
L'azienda intende avere gli ordini di tutti i clienti pronti per la spedizione in un'ora dalla ricezione dell'ordine e desidera conoscere quando ciò non si verifica.
Due elementi <eventSelector> sono definiti in una regola di sequenza e gli eventi devono arrivare nell'ordine in cui gli elementi <eventSelector> vengono codificati (piuttosto che in ordine casuale). Il primo elemento <eventSelector> ricerca l'evento Netsales con operationType=Order e il secondo elemento <eventSelector> ricerca l'evento Netsales con operationType=Delivery. I seguenti eventi vengono presentati al sistema nella finestra di tempo specificata di 1 ora:
  1. Un evento Netsales con operationType=Order
  2. Un evento Netsales con operationType=Order
Il comportamento della regola è il seguente:
  1. Il primo evento viene accettato. Poiché i criteri per il primo elemento <eventSelector> sono soddisfatti, il primo elemento <eventSelector> viene escluso da una ulteriore elaborazione all'interno della regola.
  2. Il secondo evento viene ignorato.
  3. Poiché un evento Netsales con operationType=Delivery non viene ricevuto nell'intervallo di tempo specificato, viene eseguita la risposta di regola <onTimeOut>. Questa azione viene definita per notificare a un responsabile aziendale che l'ordine del cliente non è pronto per la spedizione in 1 ora dalla richiesta dell'ordine. La regola ritorna allo stato iniziale.

    Il primo elemento <eventSelector> viene poi incluso nell'elaborazione eventi successiva con questa regola.

Concetti correlati
Accesso alle informazioni correlate all'evento
Riferimenti correlati
Riepilogo della regola di sequenza