[rules-users] different behavior in Eclipse vs. command line

Charles Binford Charles.Binford at Sun.COM
Tue Oct 7 18:25:00 EDT 2008


Solved.  See my follow up to "trouble dynamically changing packages of a 
rulebase".

cb


Charles Binford wrote:
> This is related to yesterday's post titled "trouble dynamically 
> changing packages of a rulebase".
> I decided to try and reduce the problem down as much as possible so I 
> started with "Hello World" program automatically created with Eclipse 
> when you create a new Drools Project.
>
> I modified the program to do the following additional work:
>
>   1. unload the pkg
>   2. add a second pkg to the same rulebase
>          * (new rule set is same, except is uses the string "So long"
>            instead of "Goodbye")
>   3. - create new session
>   4. - add new facts to the new session
>          *   (this time I use the word "Welcome" instead of "Hello")
>   5. - fireall rules
>
>
> When I run within Eclipse, I get:
>
>    Hello World
>    Goodbye cruel world
>    Goodbye cruel world
>    Welcome World
>    So long cruel world
>
>
> Notice that the Goodbye line comes out twice.  The second time is 
> printed when I single step (in the eclipse debugger) over the line
>    ruleBase.addPackage( pkg );
>
> in step 2 above.
>
> When I run from the command line I don't get the extra line ("javadr" 
> is just a one line shell script that has all of the drools classpath 
> stuff specified).
>
>    javadr com/sample/DroolsTest
>    Hello World
>    Goodbye cruel world
>    Welcome World
>    So long cruel world
>
> I don't know of this is related to my real issue (see yesterday's 
> post) or not.  The similarity is that BOTH BEHAVE DIFFERENTLY when run 
> under Eclipse vs. command line.
>
> Here is the portion of the src that shows what I added/modified....
>
>          // Now try second set of rules
>            readRule2("/Sample2.drl", "com.sample");
>            workingMemory = ruleBase.newStatefulSession();
>                      message.setMessage(  "Welcome World" );
>            message.setStatus( Message.HELLO );
>            workingMemory.insert( message );
>                      workingMemory.fireAllRules();         
> private static RuleBase readRule2(String file, String remPkgName) 
> throws Exception {
>        //read in the source
>        Reader source = new InputStreamReader( 
> DroolsTest.class.getResourceAsStream( file ) );
>        PackageBuilder builder = new PackageBuilder();
>        builder.addPackageFromDrl( source );
>        Package pkg = builder.getPackage();
>
>        if (remPkgName != null) {
>            ruleBase.removePackage(remPkgName);
>        }
>        ruleBase.addPackage( pkg );
>        return ruleBase;
>    }
>  
> _______________________________________________
> rules-users mailing list
> rules-users at lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/rules-users



More information about the rules-users mailing list