Hi folks,

Can anyone explain how stateless session execution results should work? Working 
through the docs and tracing the code, it’s getting a bit confusing.

Firstly, according to the user manual, one should be able to insert a list of 
facts as a Command, and get an instance of ExecutionResults back, which can 
then be queried. Here’s the example code:
StatelessKnowledgeSession ksession = kbase.newStatelessKnowledgeSession();

Command cmd = CommandFactory.newInsertElements( Arrays.asList( Object[] { 

                  new Cheese( "stilton" ),

                  new Cheese( "brie" ),

                  new Cheese( "cheddar" ),

              });

ExecutionResults bresults = ksession.execute( cmd );

That doesn’t compile, so I fixed it as follows:

        Command cmd = CommandFactory.newInsertElements( Arrays.asList( 
                new Cheese( "stilton" ),
                new Cheese( "brie" ),
                new Cheese( "cheddar" )
         ));
        ExecutionResults bresults = ksession.execute( cmd );

This does now compile, but running it throws a ClassCastException:
        java.lang.ClassCastException: java.util.ArrayList cannot be cast to 
org.drools.runtime.ExecutionResults

Taking a look through the Drools code, it would appear that Command has a 
generic type, which in the case of an InsertElementsCommand is: 
GenericCommand<Collection<FactHandle>>

In turn, the execute command in StatelessKnowledgeSessionImpl casts its result 
to that generic type:
        public <T> T execute(Command<T> command) {
                Object o = ((GenericCommand) command).execute( context );
                ...
                return (T) o;

So the ClassCastException is because the execute method returns an ArrayList of 
FactHandle instead of an ExecutionResults.

I’m assuming that I must have got the wrong end of the stick somewhere, so what 
should I be doing to get an ExecutionResults from a stateless session, which I 
can then query?

Cheers,

Steve
_______________________________________________
rules-users mailing list
rules-users@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users

Reply via email to