⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 eventtest.java

📁 rule engine drools-2.0-beta-18
💻 JAVA
字号:
package org.drools.reteoo;import java.util.Iterator;import java.util.Set;import org.drools.DroolsTestCase;import org.drools.FactHandle;import org.drools.RuleBase;import org.drools.TestWorkingMemoryEventListener;import org.drools.WorkingMemory;import org.drools.event.ActivationCancelledEvent;import org.drools.event.ActivationCreatedEvent;import org.drools.rule.Declaration;import org.drools.rule.Rule;import org.drools.rule.RuleSet;import org.drools.spi.InstrumentedCondition;import org.drools.spi.MockObjectType;/** *  * @author mproctor *  * @todo remove schedule items * @todo add/remove schedule items *  */public class EventTest extends DroolsTestCase{    public void testAddToAgenda() throws Exception    {        RuleSet ruleSet = new RuleSet( "test rule-set" );        Rule rule = new Rule( "test-rule" );        // rule.addParameterDeclaration( intDecl );        Declaration stringDecl1 = rule.addParameterDeclaration( "stringVar1",                                                                new MockObjectType( String.class ) );        Declaration stringDecl2 = rule.addParameterDeclaration( "stringVar2",                                                                new MockObjectType( String.class ) );        Declaration intDecl = rule.addParameterDeclaration( "intVar",                                                            new MockObjectType( Integer.class ) );        // add consequence        rule.setConsequence( new org.drools.spi.Consequence( )        {            public void invoke(org.drools.spi.Tuple tuple,                               WorkingMemory workingMemory)            {                // Agenda agenda =                // ((WorkingMemoryImpl)workingMemory).getAgenda();                // agenda.addToAgenda( ( ReteTuple ) tuple, tuple.getRule( ) );                // System.err.println("fire");            }        } );        // add condition        InstrumentedCondition c1 = new InstrumentedCondition( );        c1.addDeclaration( stringDecl1 );        c1.isAllowed( true );        InstrumentedCondition c2 = new InstrumentedCondition( );        c2.addDeclaration( stringDecl2 );        c2.isAllowed( true );        InstrumentedCondition c3 = new InstrumentedCondition( );        c3.addDeclaration( intDecl );        c3.isAllowed( true );        rule.addCondition( c1 );        rule.addCondition( c2 );        rule.addCondition( c3 );        // rule.addCondition( new org.drools.spi.InstrumentedCondition( ) );        ruleSet.addRule( rule );        Builder builder = new Builder( );        builder.addRuleSet( ruleSet );        RuleBase ruleBase = builder.buildRuleBase( );        WorkingMemoryImpl workingMemory = (WorkingMemoryImpl) ruleBase.newWorkingMemory( );        TestWorkingMemoryEventListener listener = new TestWorkingMemoryEventListener( );        workingMemory.addEventListener( listener );        /*         * This is not recursive so a rule should not be able to activate itself         */        assertEquals( 0,                      listener.asserted );        assertEquals( 0,                      listener.tested );        FactHandle stringFact1 = workingMemory.assertObject( "cheddar" );        FactHandle stringFact2 = workingMemory.assertObject( "brie" );        FactHandle intFact = workingMemory.assertObject( new Integer( 5 ) );        assertEquals( 3,                      listener.asserted );        assertEquals( 5,                      listener.tested );        assertEquals( 4,                      listener.created );        assertEquals( 4,                      ((WorkingMemoryImpl) workingMemory).getAgenda( ).size( ) );        assertEquals( 0,                      listener.fired );        workingMemory.fireAllRules( );        assertEquals( 4,                      listener.fired );        assertEquals( 0,                      ((WorkingMemoryImpl) workingMemory).getAgenda( ).size( ) );        assertEquals( 0,                      listener.modified );        assertEquals( 0,                      listener.cancelled );        workingMemory.modifyObject( stringFact1,                                    "gouda" );        assertEquals( 3,                      ((WorkingMemoryImpl) workingMemory).getAgenda( ).size( ) );        assertEquals( 0,                      listener.cancelled );        assertEquals( 1,                      listener.modified );        assertEquals( 7,                      listener.tested );        assertEquals( 7,                      listener.created );        assertEquals( 0,                      listener.cancelled );        workingMemory.clearAgenda( );        assertEquals( 3,                      listener.cancelled );        assertEquals( 0,                      listener.retracted );        workingMemory.retractObject( stringFact2 );        assertEquals( 1,                      listener.retracted );    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -