Hello everyone,
 
I'm new to drools & I'm trying my hand at creating a rule-flow in which I can back a couple of steps &
the KnowledgeSession is restored to the same state it was in earlier. I'm using Drools 5.1.0 M1 & Eclipse 3.5.
 
I have a rule-flow with the following nodes:
A->B->C
where A would be a node asking for an input (our fact), B would be a Rule Task that would apply certain rules on our fact &
at C, I may decide that I need to back up to node A. Both A & C are custom work items.
 
I've managed to rollback the transaction (I borrowed a lot of code from the test classes in the source, thanks a ton for them).
But I just can't get my process to start again.
 
I'll paste a couple of lines of code from my test class below:
.....
ProcessInstance pi = ksession.startProcess("sampleflow");
ksession.fireAllRules();
 
ut = (UserTransaction) new InitialContext().lookup( "java:comp/UserTransaction" );
ut.begin();//Is beginning the transaction boundary here correct?
.....
//Now I roll back the transaction depending on the input at node C
ut.rollback();
.....
//And recreate the knowledge session
ksession = JPAKnowledgeService.loadStatefulKnowledgeSession(id, kbase, null, env);
 
I expected the session to restart the process from node A once it was recreated. Am I going in the right direction?
Or is my basic understanding of how session persistence works in Drools Flow flawed?
 
I'd really appreciate a push in the right direction.
 
Thanks in advance,
Mahesh.