Linguaggio delle regole CEP

Informazioni sul linguaggio delle regole CEP e sui parametri.

Un esempio di regola CEP
 
"name":"This followed by that",                      // required; unique in tenant
"createdAt": "2020-01-08T21:09:10Z",                 // generated; readonly
"updatedAt": "2020-01-08T21:09:10Z",                 // generated; readonly
"ruleId": "2a3ad91---xxx-xxx-xxxxxx-----xxxx-xxx,    // generated; readonly
"version": 1.0,                                      // generated; readonly
"status": {                                          // generated; readonly
        "code": "live",
        "details": "Version 1.0 of this rule is live and processing."
},
"instructions: {                                     // required
 "dimension": [	                                     // optional
            {
                "fieldPath": "eventDetails.businesssObject.supplierId
                "type": "String"
            }
 ]
 "pattern" : {
   "ifEvent": {                                      // required
	       "condition": {                        // required
	       		//Boolean expression	              
	       }
	       "repeated": {                         // optional
  	           "minOccurences": 3		     // optional
	           "maxOccurences": 5		     // optional
		   "consecutive": true               // optional; default=false
	           "withoutEvent": {                 // optional
		       // Boolean expression
	           }
 	           "allowCombinations": true .       // optional; default=false
	       }
}
"andThenEvents: [                                 // optional
{
"optional": true	                     // optional; default=false
"condition": { 	                     // required
// Boolean expresssion
}
"shouldOccur": false                  // optional; default=true
"consecutive": true                   // optional; default=false
"withoutEvent": {                     // optional
// Boolean expression
}
"allowCombinations": true             // optional; default=false
}
]
"within": {		                             // optional
"timeWindow": 60			     // required
"fieldPath":"timestampEventOccurred"  // optional
}
}
"thenOutput": {				     // required
"resultAlias":""
//allow mapping?
"resultContext": [                   // optional
{
"fieldPath": "eventDetails.businessObject.id
}
{
"fieldPath": "eventDetails.businessObject.orderValue
}
]
}
}

dove:

dimension
Partizionamento facoltativo degli eventi in base a un determinato campo., come l'ID ordine.
 "dimension": [						      
            {
                "fieldPath": "eventDetails.businesssObject.suppliedId
                "type": "String"
            }
 ]
pattern
Sequenza di eventi per rilevare un pattern.
"pattern" : {
ifEvent
Evento iniziale obbligatorio.
"ifEvent": {
condition
Condizione richiesta per l'evento iniziale.
"condition": {// Boolean expression}
repeated
Condizioni facoltative sul numero di volte in cui l'evento deve ripetersi. Non consentito se è specificato andThenEvents .
"repeated": {
minOccurrences
Numero intero facoltativo che indica il numero minimo di volte in cui si verifica l'evento.
Nota: se non c'è un massimo, utilizzare timesNOrMore(n ). Se n=0 , utilizzare oneOrMore( ). Se min==0 utilizzare optional().
"minOccurences": 3
maxOccurrences
Numero intero facoltativo che specifica il numero massimo di volte in cui si verifica l'evento.
Nota: se min == max, utilizzare i tempi (n, m).
"maxOccurences": 3
consecutive
Booleano facoltativo che specifica se l'evento deve seguire immediatamente l'evento precedente o se un altro evento diverso può verificarsi nel mezzo. Il valore predefinito è false.
Nota: se è specificato il valore minimo ma il valore massimo non lo è, per la cancellazione dello stato è richiesta una condizione within window o unlessEvent .
"consecutive": true
withoutEvent
Espressione booleana facoltativa che invalida qualsiasi modello corrispondente in precedenza stateOnly valido quando vengono specificati min/maxOccurences .
"withoutEvent": {//Boolean expression}
allowCombinations
Booleano facoltativo. Il valore predefinito è false. Non valido se consecutivo è true.
"allowCombinations": true
} // end `repeated`
   } // end `ifEvent`
andThenEvents
Elenco facoltativo di eventi che devono seguire l'evento iniziale. Non consentito se repeated viene fornito su ifEvent.
"andThenEvents: [{
optional
Valore booleano facoltativo che indica se questo evento è richiesto nella sequenza di eventi. Il valore predefinito è false.
"optional": true
condition
Espressione booleana obbligatoria che descrive l'evento.
shouldOccur
Valore booleano facoltativo che indica se l'evento deve verificarsi o meno. Il valore predefinito è true. Utilizzare false per richiedere che l'evento non si verifichi.
"shouldOccur": false
consecutive
Booleano facoltativo che specifica se l'evento deve seguire immediatamente l'evento precedente o se un altro evento diverso può verificarsi nel mezzo. Il valore predefinito è false.
"consecutive": true/false
withoutEvent
Espressione booleana facoltativa che invalida qualsiasi stato di pattern precedentemente corrispondente, il che significa che arresta l'attivazione di questo pattern.
"withoutEvent": { //Boolean expression}
allowCombinations
Booleano facoltativo. Il valore predefinito è false. Non valido se consecutive è true.
"allowCombinations": true
} // end sample event in andThenEvents
   ] // end `andThenEvents` array
within
Finestra temporale facoltativa in cui deve verificarsi l'intero modello dall'inizio alla fine.
"within": {
timeWindow
Tempo richiesto in secondi.
"timeWindow": long
fieldPath
Percorso facoltativo del campo nell'evento che contiene l'ora da utilizzare. Il valore predefinito è timestampEventRecieved.
"fieldPath":"timestampEventOccurred"
} // end `within`
} // end `pattern`
thenOutput
Definizione di output richiesta. Include il nome del pattern attivato. Campi contestuali facoltativi da includere nell'output.
 "thenOutput": {					      
                "resultAlias":"<name of the pattern>"
		//allow mapping?
		"resultContext": [
		   {
                	   "fieldPath": "eventDetails.businessObject.id
                   }
		   {
                	   "fieldPath": "eventDetails.businessObject.orderValue
                   }
                ]
  } // end `thenOutput`