1 package org.drools.bsh; 2 3 import junit.framework.TestCase; 4 import org.drools.RuleBase; 5 import org.drools.WorkingMemory; 6 import org.drools.io.RuleSetLoader; 7 import org.drools.jsr94.rules.RuleServiceProviderImpl; 8 import org.drools.rule.RuleSet; 9 10 import javax.rules.RuleRuntime; 11 import javax.rules.RuleServiceProvider; 12 import javax.rules.RuleServiceProviderManager; 13 import javax.rules.StatelessRuleSession; 14 import javax.rules.admin.RuleAdministrator; 15 import javax.rules.admin.RuleExecutionSet; 16 import javax.rules.admin.RuleExecutionSetProvider; 17 import java.util.ArrayList; 18 import java.util.HashMap; 19 import java.util.Iterator; 20 import java.util.List; 21 22 public class BeanShellTest extends TestCase 23 { 24 private static String BEAN_SHELL_TEST_RULES = "BeanShellTest.drl"; 25 26 public BeanShellTest( String name ) 27 { 28 super( name ); 29 } 30 31 public void testBshCommands() throws Exception 32 { 33 RuleBase ruleBase = new RuleBase(); 34 RuleSetLoader loader = new RuleSetLoader(); 35 36 List ruleSets = loader.load( getClass().getResource( BEAN_SHELL_TEST_RULES ) ); 37 38 assertNotNull( ruleSets ); 39 assertEquals( 1, ruleSets.size() ); 40 41 Iterator ruleSetIter = ruleSets.iterator(); 42 RuleSet eachRuleSet = null; 43 44 while ( ruleSetIter.hasNext() ) 45 { 46 eachRuleSet = (RuleSet) ruleSetIter.next(); 47 ruleBase.addRuleSet( eachRuleSet ); 48 } 49 50 List list = new ArrayList(); 51 HashMap appData = new HashMap(); 52 appData.put( "rules.fired", list ); 53 54 WorkingMemory workingMemory = ruleBase.createWorkingMemory(); 55 workingMemory.setApplicationData( appData ); 56 57 workingMemory.assertObject( "testAssert" ); 58 59 assertEquals( 3, list.size() ); 60 assertEquals( "testAssert", list.get( 0 ) ); 61 assertEquals( "testModify", list.get( 1 ) ); 62 assertEquals( "testRetract", list.get( 2 ) ); 63 } 64 65 public void testBshCommandsThroughJSR94() throws Exception 66 { 67 // First, setup the RuleServiceProvider and RuleAdministrator 68 RuleServiceProviderManager.registerRuleServiceProvider( "http://drools.org/rules", RuleServiceProviderImpl.class ); 69 RuleServiceProvider ruleServiceProvider = RuleServiceProviderManager.getRuleServiceProvider( "http://drools.org/rules" ); 70 RuleAdministrator ruleAdministrator = ruleServiceProvider.getRuleAdministrator(); 71 72 // Load the rules 73 RuleExecutionSetProvider ruleSetProvider = ruleAdministrator.getRuleExecutionSetProvider( null ); 74 String uri = getClass().getResource( BEAN_SHELL_TEST_RULES ).toExternalForm(); 75 RuleExecutionSet ruleSet = ruleSetProvider.createRuleExecutionSet( uri, null ); 76 77 // register the rule set 78 ruleAdministrator.registerRuleExecutionSet( BEAN_SHELL_TEST_RULES, ruleSet, null ); 79 80 List list = new ArrayList(); 81 HashMap appData = new HashMap(); 82 appData.put( "rules.fired", list ); 83 84 // obtain the stateless rule session 85 RuleRuntime ruleRuntime = ruleServiceProvider.getRuleRuntime(); 86 StatelessRuleSession session = (StatelessRuleSession) ruleRuntime.createRuleSession( BEAN_SHELL_TEST_RULES, appData, RuleRuntime.STATELESS_SESSION_TYPE ); 87 88 List inObjects = new ArrayList(); 89 inObjects.add( "testAssert" ); 90 91 // execute the rules 92 List outList = session.executeRules( inObjects ); 93 94 session.release(); 95 96 assertEquals( 3, list.size() ); 97 assertEquals( "testAssert", list.get( 0 ) ); 98 assertEquals( "testModify", list.get( 1 ) ); 99 assertEquals( "testRetract", list.get( 2 ) ); 100 101 assertEquals( 1, outList.size() ); 102 assertEquals( "testAssert", outList.get( 0 ) ); 103 } 104 }

This page was automatically generated by Maven