Class DuringEvaluatorDefinition

java.lang.Object
org.drools.mvel.evaluators.DuringEvaluatorDefinition
All Implemented Interfaces:
Externalizable, Serializable, EvaluatorDefinition, EvaluatorDefinition

public class DuringEvaluatorDefinition extends Object implements EvaluatorDefinition

The implementation of the during evaluator definition.

The during evaluator correlates two events and matches when the current event happens during the occurrence of the event being correlated.

Lets look at an example:

$eventA : EventA( this during $eventB )

The previous pattern will match if and only if the $eventA starts after $eventB starts and finishes before $eventB finishes. In other words:

 $eventB.startTimestamp < $eventA.startTimestamp <= $eventA.endTimestamp < $eventB.endTimestamp 

The during operator accepts 1, 2 or 4 optional parameters as follow:

  • If one value is defined, this will be the maximum distance between the start timestamp of both event and the maximum distance between the end timestamp of both events in order to operator match. Example:
  • $eventA : EventA( this during[ 5s ] $eventB )
    Will match if and only if:
     
     0 < $eventA.startTimestamp - $eventB.startTimestamp <= 5s &&
     0 < $eventB.endTimestamp - $eventA.endTimestamp <= 5s
     
    • If two values are defined, the first value will be the minimum distance between the timestamps of both events, while the second value will be the maximum distance between the timestamps of both events. Example:
    • $eventA : EventA( this during[ 5s, 10s ] $eventB )
      Will match if and only if:
       
       5s <= $eventA.startTimestamp - $eventB.startTimestamp <= 10s &&
       5s <= $eventB.endTimestamp - $eventA.endTimestamp <= 10s
       
      • If four values are defined, the first two values will be the minimum and maximum distances between the start timestamp of both events, while the last two values will be the minimum and maximum distances between the end timestamp of both events. Example:
      • $eventA : EventA( this during[ 2s, 6s, 4s, 10s ] $eventB )
        Will match if and only if:
         
         2s <= $eventA.startTimestamp - $eventB.startTimestamp <= 6s &&
         4s <= $eventB.endTimestamp - $eventA.endTimestamp <= 10s
         
See Also: