[
https://issues.jboss.org/browse/DROOLS-422?page=com.atlassian.jira.plugin...
]
Davide Sottara edited comment on DROOLS-422 at 9/13/14 9:59 PM:
----------------------------------------------------------------
Gentlemen, it seems that there are multiple discussions with multiple problems here, which
makes it very hard to determine whether a problem has been solved.
@Roger, please create a separate ticket, in case they can be relinked later.
@Nedo, @Dushman, would you be able to submit a test case that reproduces the error? There
are examples in the module drools-persistence-jpa that you could probably adapt.
Thank you all!
Davide
was (Author: dsotty):
Gentlemen, it seems that there are multiple discussions with multiple problems here, which
makes it very hard to determine whether a problem has been solved.
@Roger, please create a separate ticket, in case they can be relinked later.
@Nedo, @Dushma, would you be able to submit a test case that reproduces the error? There
are examples in the module drools-persistence-jpa that you could probably adapt.
Thank you all!
Davide
Timer based rules don't fire and facts can't expire after
session restore
-------------------------------------------------------------------------
Key: DROOLS-422
URL:
https://issues.jboss.org/browse/DROOLS-422
Project: Drools
Issue Type: Bug
Affects Versions: 5.5.0.Final
Environment: Linux Mint 15
JBoss AS 5.1
Reporter: Nedo Nedic
Assignee: Mark Proctor
Attachments: drools-mongodb-persistence.zip
I have implemented a custom persistence engine for Drools sessions in MongoDB. When
session is built for first time, everything works like a charm. I am having some problems
when Drools sessions are restored from MongoDB collection. Firstly, interval based rules
(for example timer(int: 10s 10s)) don't fire. Some facts that should expire, they just
don't expire and remain forever in WM. I attached the source code. When session is
built for first time, I use code like this:
KnowledgeBase kbase = createKBase(getKnowledgeBuilder(rulePackagePath),
config);
if (hasKnowledgeAgent) {
createKnowledgeAgent(kbase, correlatorId);
wm = (ReteooStatefulSession) ((KnowledgeBaseImpl) kagent
.getKnowledgeBase()).ruleBase.newStatefulSession(
(SessionConfiguration) ksconf, env);
ksession = new StatefulKnowledgeSessionImpl(wm, kagent
.getKnowledgeBase());
stateOutputMarshaller = StateMarshallerFactory.newOutputMarshaller(this, ksession,
ksconf);
stateOutputMarshaller.init();
((InternalKnowledgeRuntime) ksession).setEndOperationListener(this);
}
Then, after every action I update the session in MongoDB collection.
public void endOperation(InternalKnowledgeRuntime ikr) {
stateOutputMarshaller.marshall();
}
For session restoring, after AS restart I use this code:
KnowledgeBase kbase = createKBase( getKnowledgeBuilder(rulePackagePath), getKBaseConfig()
);
stateInputMarshaller = StateMarshallerFactory.newInputMarshaller( this, kbase,
getSessionConf() );
ksession = stateInputMarshaller.unmarshall(correlatorId);
stateOutputMarshaller = StateMarshallerFactory.newOutputMarshaller( this, ksession,
getSessionConf() );
((InternalKnowledgeRuntime)ksession).setEndOperationListener(this);
protected static KnowledgeBaseConfiguration getKBaseConfig() {
KnowledgeBaseConfiguration config = KnowledgeBaseFactory
.newKnowledgeBaseConfiguration();
config.setOption(EventProcessingOption.STREAM);
return config;
}
protected static KnowledgeSessionConfiguration getSessionConf() {
KnowledgeSessionConfiguration ksconf =
KnowledgeBaseFactory.newKnowledgeSessionConfiguration();
ksconf.setOption(ClockTypeOption.get("realtime"));
return ksconf;
}
Any help is appreciated.
Thanks
--
This message was sent by Atlassian JIRA
(v6.3.1#6329)