Class DuringEvaluatorDefinition

  • All Implemented Interfaces:
    Externalizable, Serializable, org.drools.compiler.rule.builder.EvaluatorDefinition, org.kie.api.runtime.rule.EvaluatorDefinition

    public class DuringEvaluatorDefinition
    extends Object
    implements org.drools.compiler.rule.builder.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:
    Serialized Form
    • Field Detail

      • duringOp

        public static final String duringOp
      • DURING

        public static final org.drools.drl.parser.impl.Operator DURING
      • NOT_DURING

        public static final org.drools.drl.parser.impl.Operator NOT_DURING
    • Constructor Detail

      • DuringEvaluatorDefinition

        public DuringEvaluatorDefinition()
    • Method Detail

      • getEvaluator

        public org.drools.core.rule.accessor.Evaluator getEvaluator​(org.drools.core.base.ValueType type,
                                                                    org.drools.drl.parser.impl.Operator operator)
        Specified by:
        getEvaluator in interface org.drools.compiler.rule.builder.EvaluatorDefinition
      • getEvaluator

        public org.drools.core.rule.accessor.Evaluator getEvaluator​(org.drools.core.base.ValueType type,
                                                                    org.drools.drl.parser.impl.Operator operator,
                                                                    String parameterText)
        Specified by:
        getEvaluator in interface org.drools.compiler.rule.builder.EvaluatorDefinition
      • getEvaluator

        public org.drools.core.rule.accessor.Evaluator getEvaluator​(org.drools.core.base.ValueType type,
                                                                    String operatorId,
                                                                    boolean isNegated,
                                                                    String parameterText)
        Specified by:
        getEvaluator in interface org.drools.compiler.rule.builder.EvaluatorDefinition
      • getEvaluator

        public org.drools.core.rule.accessor.Evaluator getEvaluator​(org.drools.core.base.ValueType type,
                                                                    String operatorId,
                                                                    boolean isNegated,
                                                                    String parameterText,
                                                                    org.drools.compiler.rule.builder.EvaluatorDefinition.Target left,
                                                                    org.drools.compiler.rule.builder.EvaluatorDefinition.Target right)
        Specified by:
        getEvaluator in interface org.drools.compiler.rule.builder.EvaluatorDefinition
      • getEvaluatorIds

        public String[] getEvaluatorIds()
        Specified by:
        getEvaluatorIds in interface org.drools.compiler.rule.builder.EvaluatorDefinition
      • isNegatable

        public boolean isNegatable()
        Specified by:
        isNegatable in interface org.drools.compiler.rule.builder.EvaluatorDefinition
      • getTarget

        public org.drools.compiler.rule.builder.EvaluatorDefinition.Target getTarget()
        Specified by:
        getTarget in interface org.drools.compiler.rule.builder.EvaluatorDefinition
      • supportsType

        public boolean supportsType​(org.drools.core.base.ValueType type)
        Specified by:
        supportsType in interface org.drools.compiler.rule.builder.EvaluatorDefinition