ETA on Drools Planner 5.5 beta?
by Michiel Vermandel
Hi,
I have a pending issue that should be solved in Drools Planner 5.5 Beta.
(WARN : [2012-09-07 14:56:40,252] Cancelled step index (0), time spend (18375): there is no doable move. Terminating phase early.)
I was informed that Drools Planner 5.5 Beta would be released one of these days.
Any concrete delivery date available?
I have a demo to give next week and would like to test my project on 5.5 to see all is the same or better.
Thanks a lot,
Michiel Vermandel
-----------------
http://www.codessentials.com - Your essential software, for free!
Follow us at http://twitter.com/#!/Codessentials
13 years, 6 months
How does 'from' cache works?
by Esteban Aliverti
Assuming I have the following rule:
global SomeClient client;
rule "Poll Values"
timer (int: 0s 1s)
when
$data: Data() from client.getData();
then
insert($data);
end
and that I'm just creating a session with just that rule, setting the
global and calling fireAllRules(). And let's say that my session is running
for 5 seconds.
My questions are:
1.- How many times is the rule going to be executed?
2.- How many times is client.getData() going to be invoked?
The test I have shows that the rule is executed 5 times,
but client.getData() is only invoked for the first activation. The returned
object is used in the subsequent activations. Is this the expected behavior?
As the rule name states, I'm expecting to get some (different) values from
client every second.
I understand that I'm doing 'strange' things since the rule doesn't use any
real fact but I would like to understand why I'm experiencing the described
behavior.
Best Regards,
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Esteban Aliverti
- Blog @ http://ilesteban.wordpress.com
13 years, 6 months
Drools Memory Log getting over written
by himansu.nayak
Hi,
i am trying to append my memory log generated by drools rule engine. but
each time
i run the code the log just get overwritten. is there any way to avoid
overwritten of my log.
this is the code i am using for my log generation.
type 1
---------
WorkingMemory workingMemory = ruleBase.newStatefulSession();
WorkingMemoryFileLogger wmLogger = new WorkingMemoryFileLogger(
workingMemory);
wmLogger.setFileName("log/xyz");
.
.
.
wmLogger.writeToDisk();
type 2
---------
KnowledgeRuntimeLogger logger = KnowledgeRuntimeLoggerFactory
.newFileLogger(ksession,
log/xyz.log);
ksession.addEventListener(CustomAgendaEventListener.getInstance());
ksession.addEventListener(CustomWorkingMemoryEventListener
.getInstance());
.
.
.
.
logger.close();
--
View this message in context: http://drools.46999.n3.nabble.com/Drools-Memory-Log-getting-over-written-...
Sent from the Drools: User forum mailing list archive at Nabble.com.
13 years, 6 months
Rule Static Analysis/Verification
by dme1
Hi,
Are there any tools/options to perform static analysis in Drools Guvnor.
What I am looking for explicitly is within a Guvnor Package identify all
duplicate rules, overlapping rules, conflicting rules, completeness check
etc.). The "Verify" works within a Guided Decision Table, however it fails
in Guided Editor to to the "Dialect" tag. Even then its within a specific
rule, what I am looking for is the ability to perform this analysis across
all rules in a package (or if possible across packages as well).
Thanks,
dme
--
View this message in context: http://drools.46999.n3.nabble.com/Rule-Static-Analysis-Verification-tp401...
Sent from the Drools: User forum mailing list archive at Nabble.com.
13 years, 6 months
org.drools.osgi.api.Activator.stop() - java.lang.IllegalStateException: The service has been unregistered
by tkleszczynski
Hello,
I noticed problem/bug with stopping bundle org.drools.api (knowledge-api).
Problem occurs when OSGi framework stops this bundle. Method
org.drools.osgi.api.Activator.stop() firstly invokes
this.serviceRegistry.unregister() and then this.registryTracker.close().
Unfortunately DroolsServiceTracker uses reference to service which has been
unregistered.
I think this problem can be fixed by moving
this.serviceRegistry.unregister(); to end of
org.drools.osgi.api.Activator.stop() method, after code which stops service
trackers. Then service will be still registered during service trackers
closing. Maybe would be worth to create JIRA issue and fix it in next
version.
Drools version: 5.4.0.Final
Equinox version: 3.7.0
stacktrace from OSGi console:
unregistering : org.drools.io.impl.ResourceFactoryServiceImpl@1d686c1 :
interface org.drools.io.ResourceFactoryService
org.osgi.framework.BundleException: Exception in
org.drools.osgi.api.Activator.stop() of bundle org.drools.api.
at
org.eclipse.osgi.framework.internal.core.BundleContextImpl.stop(BundleContextImpl.java:791)
at
org.eclipse.osgi.framework.internal.core.BundleHost.stopWorker(BundleHost.java:510)
at
org.eclipse.osgi.framework.internal.core.AbstractBundle.stop(AbstractBundle.java:464)
at
org.eclipse.osgi.framework.internal.core.AbstractBundle.stop(AbstractBundle.java:456)
at
org.eclipse.osgi.framework.internal.core.FrameworkCommandProvider._stop(FrameworkCommandProvider.java:361)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at
org.eclipse.osgi.framework.internal.core.FrameworkCommandInterpreter.execute(FrameworkCommandInterpreter.java:209)
at
org.eclipse.osgi.framework.internal.core.FrameworkConsole.docommand(FrameworkConsole.java:155)
at
org.eclipse.osgi.framework.internal.core.FrameworkConsole.runConsole(FrameworkConsole.java:140)
at
org.eclipse.osgi.framework.internal.core.FrameworkConsole.run(FrameworkConsole.java:104)
at java.lang.Thread.run(Thread.java:662)
Caused by: java.lang.IllegalStateException: The service has been
unregistered
at
org.eclipse.osgi.internal.serviceregistry.ServiceRegistrationImpl.getReferenceImpl(ServiceRegistrationImpl.java:277)
at
org.eclipse.osgi.internal.serviceregistry.ServiceRegistrationImpl.getReference(ServiceRegistrationImpl.java:266)
at
org.drools.osgi.api.Activator$DroolsServiceTracker.removedService(Activator.java:115)
at
org.osgi.util.tracker.ServiceTracker$Tracked.customizerRemoved(ServiceTracker.java:1006)
at
org.osgi.util.tracker.ServiceTracker$Tracked.customizerRemoved(ServiceTracker.java:1)
at org.osgi.util.tracker.AbstractTracked.untrack(AbstractTracked.java:352)
at org.osgi.util.tracker.ServiceTracker.close(ServiceTracker.java:412)
at org.drools.osgi.api.Activator.stop(Activator.java:67)
at
org.eclipse.osgi.framework.internal.core.BundleContextImpl$2.run(BundleContextImpl.java:771)
at java.security.AccessController.doPrivileged(Native Method)
at
org.eclipse.osgi.framework.internal.core.BundleContextImpl.stop(BundleContextImpl.java:764)
... 13 more
Nested Exception:
java.lang.IllegalStateException: The service has been unregistered
at
org.eclipse.osgi.internal.serviceregistry.ServiceRegistrationImpl.getReferenceImpl(ServiceRegistrationImpl.java:277)
at
org.eclipse.osgi.internal.serviceregistry.ServiceRegistrationImpl.getReference(ServiceRegistrationImpl.java:266)
at
org.drools.osgi.api.Activator$DroolsServiceTracker.removedService(Activator.java:115)
at
org.osgi.util.tracker.ServiceTracker$Tracked.customizerRemoved(ServiceTracker.java:1006)
at
org.osgi.util.tracker.ServiceTracker$Tracked.customizerRemoved(ServiceTracker.java:1)
at org.osgi.util.tracker.AbstractTracked.untrack(AbstractTracked.java:352)
at org.osgi.util.tracker.ServiceTracker.close(ServiceTracker.java:412)
at org.drools.osgi.api.Activator.stop(Activator.java:67)
at
org.eclipse.osgi.framework.internal.core.BundleContextImpl$2.run(BundleContextImpl.java:771)
at java.security.AccessController.doPrivileged(Native Method)
at
org.eclipse.osgi.framework.internal.core.BundleContextImpl.stop(BundleContextImpl.java:764)
at
org.eclipse.osgi.framework.internal.core.BundleHost.stopWorker(BundleHost.java:510)
at
org.eclipse.osgi.framework.internal.core.AbstractBundle.stop(AbstractBundle.java:464)
at
org.eclipse.osgi.framework.internal.core.AbstractBundle.stop(AbstractBundle.java:456)
at
org.eclipse.osgi.framework.internal.core.FrameworkCommandProvider._stop(FrameworkCommandProvider.java:361)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at
org.eclipse.osgi.framework.internal.core.FrameworkCommandInterpreter.execute(FrameworkCommandInterpreter.java:209)
at
org.eclipse.osgi.framework.internal.core.FrameworkConsole.docommand(FrameworkConsole.java:155)
at
org.eclipse.osgi.framework.internal.core.FrameworkConsole.runConsole(FrameworkConsole.java:140)
at
org.eclipse.osgi.framework.internal.core.FrameworkConsole.run(FrameworkConsole.java:104)
at java.lang.Thread.run(Thread.java:662)
Nested Exception:
java.lang.IllegalStateException: The service has been unregistered
at
org.eclipse.osgi.internal.serviceregistry.ServiceRegistrationImpl.getReferenceImpl(ServiceRegistrationImpl.java:277)
at
org.eclipse.osgi.internal.serviceregistry.ServiceRegistrationImpl.getReference(ServiceRegistrationImpl.java:266)
at
org.drools.osgi.api.Activator$DroolsServiceTracker.removedService(Activator.java:115)
at
org.osgi.util.tracker.ServiceTracker$Tracked.customizerRemoved(ServiceTracker.java:1006)
at
org.osgi.util.tracker.ServiceTracker$Tracked.customizerRemoved(ServiceTracker.java:1)
at org.osgi.util.tracker.AbstractTracked.untrack(AbstractTracked.java:352)
at org.osgi.util.tracker.ServiceTracker.close(ServiceTracker.java:412)
at org.drools.osgi.api.Activator.stop(Activator.java:67)
at
org.eclipse.osgi.framework.internal.core.BundleContextImpl$2.run(BundleContextImpl.java:771)
at java.security.AccessController.doPrivileged(Native Method)
at
org.eclipse.osgi.framework.internal.core.BundleContextImpl.stop(BundleContextImpl.java:764)
at
org.eclipse.osgi.framework.internal.core.BundleHost.stopWorker(BundleHost.java:510)
at
org.eclipse.osgi.framework.internal.core.AbstractBundle.stop(AbstractBundle.java:464)
at
org.eclipse.osgi.framework.internal.core.AbstractBundle.stop(AbstractBundle.java:456)
at
org.eclipse.osgi.framework.internal.core.FrameworkCommandProvider._stop(FrameworkCommandProvider.java:361)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at
org.eclipse.osgi.framework.internal.core.FrameworkCommandInterpreter.execute(FrameworkCommandInterpreter.java:209)
at
org.eclipse.osgi.framework.internal.core.FrameworkConsole.docommand(FrameworkConsole.java:155)
at
org.eclipse.osgi.framework.internal.core.FrameworkConsole.runConsole(FrameworkConsole.java:140)
at
org.eclipse.osgi.framework.internal.core.FrameworkConsole.run(FrameworkConsole.java:104)
at java.lang.Thread.run(Thread.java:662)
--
View this message in context: http://drools.46999.n3.nabble.com/org-drools-osgi-api-Activator-stop-java...
Sent from the Drools: User forum mailing list archive at Nabble.com.
13 years, 6 months
persisted StatefulKnowledgeSession failed to maintain the length of Sliding window?
by henrychen
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-fail...
Sent from the Drools: User forum mailing list archive at Nabble.com.
13 years, 6 months