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