Jboss 计时器(cron:*10-18**?)规则结果输出重复

Jboss 计时器(cron:*10-18**?)规则结果输出重复,jboss,drools,rule-engine,Jboss,Drools,Rule Engine,我想限制规则在特定时间范围内运行,我编写的规则如下 rule "Event3" timer ( cron:* * 10-18 * * ? ) no-loop when $m : EventTest( originNumber == "123", originNumber : originNumber ) from entry-point "ATM Stream" or $m : EventTest( originNumbe

我想限制规则在特定时间范围内运行,我编写的规则如下

rule "Event3"
    timer ( cron:* * 10-18 * * ? )
    no-loop
    when
        $m : EventTest( originNumber == "123", originNumber : originNumber )  from entry-point "ATM Stream"
        or
        $m : EventTest( originNumber == "456",originNumber : originNumber )  from entry-point "ATM Stream"
    then
        System.out.println( $m.getOriginNumber() );
end
当我在引擎中插入一个新的事实时,之前插入的每个事实都会重复触发规则,如何禁止已经存在的事实触发规则

下面是输出日志

==>[ObjectInsertedEventImpl: getFactHandle()=5:1:1210939243:1210939243:1:ATM Stream:NON_TRAIT:com.neo.drools.entity.EventTest, getObject()=com.neo.drools.entity.EventTest@482d776b, getKnowledgeRuntime()=KieSession[0], getPropagationContext()=PhreakPropagationContext [entryPoint=EntryPoint::ATM Stream, factHandle=5:1:1210939243:1210939243:1:ATM Stream:NON_TRAIT:com.neo.drools.entity.EventTest, originOffset=-1, propagationNumber=2, rule=null, type=INSERTION]]
==>[ObjectInsertedEventImpl: getFactHandle()=5:2:703555670:703555670:2:ATM Stream:NON_TRAIT:com.neo.drools.entity.EventTest, getObject()=com.neo.drools.entity.EventTest@29ef6856, getKnowledgeRuntime()=KieSession[0], getPropagationContext()=PhreakPropagationContext [entryPoint=EntryPoint::ATM Stream, factHandle=5:2:703555670:703555670:2:ATM Stream:NON_TRAIT:com.neo.drools.entity.EventTest, originOffset=-1, propagationNumber=3, rule=null, type=INSERTION]]
456
123
==>[ObjectInsertedEventImpl: getFactHandle()=5:3:179808568:179808568:3:ATM Stream:NON_TRAIT:com.neo.drools.entity.EventTest, getObject()=com.neo.drools.entity.EventTest@ab7a938, getKnowledgeRuntime()=KieSession[0], getPropagationContext()=PhreakPropagationContext [entryPoint=EntryPoint::ATM Stream, factHandle=5:3:179808568:179808568:3:ATM Stream:NON_TRAIT:com.neo.drools.entity.EventTest, originOffset=-1, propagationNumber=4, rule=null, type=INSERTION]]
123
456
456
==>[ObjectInsertedEventImpl: getFactHandle()=5:4:1068445309:1068445309:4:ATM Stream:NON_TRAIT:com.neo.drools.entity.EventTest, getObject()=com.neo.drools.entity.EventTest@3faf2e7d, getKnowledgeRuntime()=KieSession[0], getPropagationContext()=PhreakPropagationContext [entryPoint=EntryPoint::ATM Stream, factHandle=5:4:1068445309:1068445309:4:ATM Stream:NON_TRAIT:com.neo.drools.entity.EventTest, originOffset=-1, propagationNumber=5, rule=null, type=INSERTION]]
456
123
456
456
==>[ObjectInsertedEventImpl: getFactHandle()=5:5:73698537:73698537:5:ATM Stream:NON_TRAIT:com.neo.drools.entity.EventTest, getObject()=com.neo.drools.entity.EventTest@4648ce9, getKnowledgeRuntime()=KieSession[0], getPropagationContext()=PhreakPropagationContext [entryPoint=EntryPoint::ATM Stream, factHandle=5:5:73698537:73698537:5:ATM Stream:NON_TRAIT:com.neo.drools.entity.EventTest, originOffset=-1, propagationNumber=6, rule=null, type=INSERTION]]
456
123
456
456
456
==>[ObjectInsertedEventImpl: getFactHandle()=5:6:1453062635:1453062635:6:ATM Stream:NON_TRAIT:com.neo.drools.entity.EventTest, getObject()=com.neo.drools.entity.EventTest@569bf9eb, getKnowledgeRuntime()=KieSession[0], getPropagationContext()=PhreakPropagationContext [entryPoint=EntryPoint::ATM Stream, factHandle=5:6:1453062635:1453062635:6:ATM Stream:NON_TRAIT:com.neo.drools.entity.EventTest, originOffset=-1, propagationNumber=7, rule=null, type=INSERTION]]
456
456
456
456
456
123
==>[ObjectInsertedEventImpl: getFactHandle()=[fact 0:7:1632789609:-866637727:7:ATM Stream:NON_TRAIT:java.lang.String:test string aaaa], getObject()=test string aaaa, getKnowledgeRuntime()=KieSession[0], getPropagationContext()=PhreakPropagationContext [entryPoint=EntryPoint::ATM Stream, factHandle=[fact 0:7:1632789609:-866637727:7:ATM Stream:NON_TRAIT:java.lang.String:test string aaaa], originOffset=-1, propagationNumber=8, rule=null, type=INSERTION]]

我想日志是

123
==========
456
==========
456
==========
456
==========
456

您能试一下窗长(1)


您能试一下窗长(1)


originNumber==“123”?类型为stringoriginNumber==“123”?类型为string
rule "Event3"
    timer ( cron:* * 10-18 * * ? )
    no-loop
    when
        $m : EventTest( originNumber == "123", originNumber : originNumber ) over window:length(1) from entry-point "ATM Stream"
        or
        $m : EventTest( originNumber == "456",originNumber : originNumber ) over window:length(1) from entry-point "ATM Stream"
    then
        System.out.println( $m.getOriginNumber() );
end