[rules-users] persisted StatefulKnowledgeSession failed to maintain the length of Sliding window?

henrychen hengdour at 163.com
Wed Sep 12 04:25:03 EDT 2012


Hi, all:

     I'm a newbie to Drools.

     I'm trying to restore stateful knowledge session using
JPAKnowledgeService after restarting server.

     In my rules I use Drools Fusion's Sliding Length Window to processing
events. Below is a sample:

     package com.sample
     import com.sample.Event;
     import java.util.List;

     declare Event
	@role(event)
     end

      rule "test"
             when
		$list : List() from collect(Event() over window: length(2))
	     then
		System.out.println("list size:" + $list.size());
      end
     
      And I have done what should be done according to the manual reference.
When I running my test 

case below:

       @Test
	public void test_persistedsession() {
		KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
		loadDRL(kbase);
		
		Environment env = KnowledgeBaseFactory.newEnvironment();
		env.set( EnvironmentName.ENTITY_MANAGER_FACTORY,
Persistence.createEntityManagerFactory( "org.drools.persistence.jpa" ) );
		env.set( EnvironmentName.TRANSACTION_MANAGER,
TransactionManagerServices.getTransactionManager());
		
		//create a persisted statefulknowledgesession
		StatefulKnowledgeSession ksession =
JPAKnowledgeService.newStatefulKnowledgeSession(kbase, null, env);
		ksession.insert(new Event());
		ksession.fireAllRules();
		
		ksession.insert(new Event());
		ksession.fireAllRules();
		
		//reload the persisted session
		ksession =
JPAKnowledgeService.loadStatefulKnowledgeSession(ksession.getId(), kbase,
null, env);
		
		ksession.insert(new Event());
		ksession.fireAllRules();
		
		ksession.insert(new Event());
		ksession.fireAllRules();
	}
 

        Then I found that the result is:

Hibernate: insert into SessionInfo (id, lastModificationDate,
rulesByteArray, startDate, OPTLOCK) values (null, ?, ?, ?, ?)
Hibernate: update SessionInfo set lastModificationDate=?, rulesByteArray=?,
startDate=?, OPTLOCK=? where id=? and OPTLOCK=?
*list size:1*
Hibernate: update SessionInfo set lastModificationDate=?, rulesByteArray=?,
startDate=?, OPTLOCK=? where id=? and OPTLOCK=?
Hibernate: update SessionInfo set lastModificationDate=?, rulesByteArray=?,
startDate=?, OPTLOCK=? where id=? and OPTLOCK=?
*list size:2*
Hibernate: update SessionInfo set lastModificationDate=?, rulesByteArray=?,
startDate=?, OPTLOCK=? where id=? and OPTLOCK=?
Hibernate: update SessionInfo set lastModificationDate=?, rulesByteArray=?,
startDate=?, OPTLOCK=? where id=? and OPTLOCK=?
*list size:3*
Hibernate: update SessionInfo set lastModificationDate=?, rulesByteArray=?,
startDate=?, OPTLOCK=? where id=? and OPTLOCK=?
Hibernate: update SessionInfo set lastModificationDate=?, rulesByteArray=?,
startDate=?, OPTLOCK=? where id=? and OPTLOCK=?
*list size:4*
Hibernate: update SessionInfo set lastModificationDate=?, rulesByteArray=?,
startDate=?, OPTLOCK=? where id=? and OPTLOCK=?

As I have declared that the length of window is 2, how can the size of list
increase to 3, 4 and more?  

I am using the 5.2.0 final. May be I have missed something, please help me.
       Any help will be appreciated.



--
View this message in context: http://drools.46999.n3.nabble.com/persisted-StatefulKnowledgeSession-failed-to-maintain-the-length-of-Sliding-window-tp4019696.html
Sent from the Drools: User forum mailing list archive at Nabble.com.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.jboss.org/pipermail/rules-users/attachments/20120912/58b329e9/attachment.html 


More information about the rules-users mailing list