All Drools examples 6.x fail on Mvel dependency error
by mattmadhavan
Hello,
I have downloaded the new Drools 6.x distribution. All the example tests
fail (out of the box) with the following stacktrace.
*java.lang.NoClassDefFoundError: org/mvel2/ConversionHandler*
at
org.drools.compiler.rule.builder.DefaultConstraintBuilderFactory.<clinit>(DefaultConstraintBuilderFactory.java:6)
at
org.drools.compiler.rule.builder.DroolsCompilerComponentFactory.<init>(DroolsCompilerComponentFactory.java:11)
at
org.drools.compiler.builder.impl.KnowledgeBuilderConfigurationImpl.init(KnowledgeBuilderConfigurationImpl.java:238)
at
org.drools.compiler.builder.impl.KnowledgeBuilderConfigurationImpl.init(KnowledgeBuilderConfigurationImpl.java:188)
at
org.drools.compiler.builder.impl.KnowledgeBuilderConfigurationImpl.<init>(KnowledgeBuilderConfigurationImpl.java:153)
at
org.drools.compiler.kie.builder.impl.AbstractKieModule.buildKnowledgePackages(AbstractKieModule.java:178)
at
org.drools.compiler.kie.builder.impl.KieContainerImpl.createKieBase(KieContainerImpl.java:386)
at
org.drools.compiler.kie.builder.impl.KieContainerImpl.getKieBase(KieContainerImpl.java:346)
at
org.drools.compiler.kie.builder.impl.KieContainerImpl.newKieSession(KieContainerImpl.java:498)
at
org.drools.compiler.kie.builder.impl.KieContainerImpl.newKieSession(KieContainerImpl.java:469)
at
org.drools.example.api.namedkiesession.NamedKieSessionExample.go(NamedKieSessionExample.java:15)
at
org.drools.example.api.namedkiesession.NamedKieSessionExampleTest.testGo(NamedKieSessionExampleTest.java:17)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at
org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:47)
at
org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
at
org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:44)
at
org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:271)
at
org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:70)
at
org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50)
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:238)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:63)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:236)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:53)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:229)
at org.junit.runners.ParentRunner.run(ParentRunner.java:309)
at
org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50)
at
org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
at
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)
at
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
at
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
at
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)
Caused by: java.lang.ClassNotFoundException: org.mvel2.ConversionHandler
at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
... 35 more
--
View this message in context: http://drools.46999.n3.nabble.com/All-Drools-examples-6-x-fail-on-Mvel-de...
Sent from the Drools: User forum mailing list archive at Nabble.com.
10 years, 3 months
RightTupleList NPE with 6.1.0.Final
by Matteo Mortari
Ciao,
I'm using 6.1.0.Final - btw, thank you for this release!
I have an issue as sometimes I'm getting an NPE from the RightTupleList, as
documented in the snippet of stacktrace below. Unfortunately, I'm not able
to provide as I did in the past a reproducer, because this error occurs
only occasionally after the application has been running for quite some
time - this error does not happen with the rule unit tests suite.
Therefore I would like to ask you the following questions, please.
1. would the stacktrace below be enough for you to possibly identify the
kind of error which is happening in this case?
2. shall I go ahead and raise a JIRA just with this information? I've
checked on JIRA but couldn't find any "similar" issue for this case
Finally, if the answers are both "no", does it mean that the only way I
could provide an helpful feedback, is to log all the session incoming facts
indefinitely, so to later "craft" an log-replay reproducer; or would you
suggest another way I can do this more efficiently?
Thank you very much in advance for your feedback
Ciao
Caused by: java.lang.NullPointerException
at
org.drools.core.util.index.RightTupleList.matches(RightTupleList.java:264)
[drools-core-6.1.0.Final.jar:6.1.0.Final]
at
org.drools.core.util.index.RightTupleIndexHashTable.get(RightTupleIndexHashTable.java:433)
[drools-core-6.1.0.Final.jar:6.1.0.Final]
at
org.drools.core.util.index.RightTupleIndexHashTable.getFirst(RightTupleIndexHashTable.java:114)
[drools-core-6.1.0.Final.jar:6.1.0.Final]
at
org.drools.core.reteoo.BetaNode.getFirstRightTuple(BetaNode.java:430)
[drools-core-6.1.0.Final.jar:6.1.0.Final]
at
org.drools.core.phreak.PhreakJoinNode.doLeftInserts(PhreakJoinNode.java:94)
[drools-core-6.1.0.Final.jar:6.1.0.Final]
at
org.drools.core.phreak.PhreakJoinNode.doNode(PhreakJoinNode.java:60)
[drools-core-6.1.0.Final.jar:6.1.0.Final]
at
org.drools.core.phreak.RuleNetworkEvaluator.switchOnDoBetaNode(RuleNetworkEvaluator.java:548)
[drools-core-6.1.0.Final.jar:6.1.0.Final]
at
org.drools.core.phreak.RuleNetworkEvaluator.evalBetaNode(RuleNetworkEvaluator.java:534)
[drools-core-6.1.0.Final.jar:6.1.0.Final]
at
org.drools.core.phreak.RuleNetworkEvaluator.innerEval(RuleNetworkEvaluator.java:334)
[drools-core-6.1.0.Final.jar:6.1.0.Final]
at
org.drools.core.phreak.RuleNetworkEvaluator.outerEval(RuleNetworkEvaluator.java:161)
[drools-core-6.1.0.Final.jar:6.1.0.Final]
at
org.drools.core.phreak.RuleNetworkEvaluator.evaluateNetwork(RuleNetworkEvaluator.java:116)
[drools-core-6.1.0.Final.jar:6.1.0.Final]
at
org.drools.core.phreak.RuleExecutor.evaluateNetwork(RuleExecutor.java:77)
[drools-core-6.1.0.Final.jar:6.1.0.Final]
at
org.drools.core.common.DefaultAgenda.evaluateEagerList(DefaultAgenda.java:990)
[drools-core-6.1.0.Final.jar:6.1.0.Final]
at
org.drools.core.common.DefaultAgenda.fireNextItem(DefaultAgenda.java:945)
[drools-core-6.1.0.Final.jar:6.1.0.Final]
at
org.drools.core.common.DefaultAgenda.fireAllRules(DefaultAgenda.java:1234)
[drools-core-6.1.0.Final.jar:6.1.0.Final]
at
org.drools.core.impl.StatefulKnowledgeSessionImpl.fireAllRules(StatefulKnowledgeSessionImpl.java:1239)
[drools-core-6.1.0.Final.jar:6.1.0.Final]
at
org.drools.core.impl.StatefulKnowledgeSessionImpl.fireAllRules(StatefulKnowledgeSessionImpl.java:1212)
[drools-core-6.1.0.Final.jar:6.1.0.Final]
at
(...).ChronologicalEngine.insertPolicyAdvanceInsertFire(ChronologicalEngine.java:381)
[classes:]
at (...).ChronologicalEngine.inject(ChronologicalEngine.java:284)
[classes:]
10 years, 3 months
Getting "401 This user has no permissions setup" after migrating to 5.3.3.Final from guvnor 5.1.1
by LaKhI ReDdY!!!!!!!!!!!
Hi All,
Recently i have upgraded to drools guvnor 5.3.3.Final from Gurvnor 5.1.1. I
have exported the data and imported in 5.3.3.Final.
I am able to login to the application using default login using but not
able to login using SSO and getting "401 This user has no permissions
setup".
Can anybody suggest what needs to be done to avoid this error?
Regards,
Lakshmi Reddy
10 years, 3 months
Conflict resolution strategy - before vs after Phreak impl
by mikerod
In version 5.x of Drools I see that it offered configurable conflict resolver
strategies. I also read a few different Drools documentation sources that
discussed varieties of "complex" conflict resolution strategies. One source
discussed a tiered implementation by the name of CompositeConflictResolver -
which was @ http://legacy.drools.codehaus.org/Conflict+Resolution.
We have been experimenting with uplifting from Drools v5.6.0.Final to a v6.x
version and we noted a fairly significant performance degradation /(a)/.
When digging into some rule logging,
we found that the issue was that our rule load order was not behaving well
in terms of conflict resolution. The "wrong" rule activations were chosen
to go first on the agenda, and this
was causing a lot of unnecessary/redundant "movement" within the Rete
network.
After reading through the documentation on conflict resolution strategies
and noting that it was configurable in Drools v5.x, I started thinking more
about the importance a conflict resolution strategy on performance. Digging
deeper, I believe Drools v5.6.0.Final uses
`org.drools.core.conflict.DepthConflictResolver` as the default resolver
(which is not the CompositeConflictResolver mentioned above interestingly).
In Drools v6.x (around v6.2.x I believe) with Phreak enabled, there is a
`org.drools.core.conflict.PhreakConflictResolver` that is used as the
default resolver.
This raises a few questions:
/1)/ With Phreak enabled, it looks like the conflict resolver is *not*
configurable anymore. I believe this is the case due to these lines
<https://github.com/droolsjbpm/drools/blob/master/drools-core/src/main/jav...>
. Why was this configuration options removed?
/2)/ The PhreakConflictResolver does not seem to be doing anything very
sophisticated now. I gather that it respects salience first, then falls
back to rule load order. I found this around these lines
<https://github.com/droolsjbpm/drools/blob/master/drools-core/src/main/jav...>
. Why was this implementation chosen? Is it discussed or documented
anywhere? Was it determined that this performs better than anything else or
that there is no significant difference either way? There are about 4
conflict resolver impls in the org.drools.core.conflict package. In Drools
v5.6.x I saw there were 10-11 of them in the similarly purposed
org.drools.conflict package.
/3)/ (related to /(2)/) Why was the default conflict resolution strategy
changed to PhreakConflictResolver from the DepthConflictResolver used in
v5.6.x? I do not think they are the same based on the source code, however,
I cannot say I fully understand all of the semantics of the
`Activation#getActivationNumber` used in the DepthConflictResolver.
I know that my perf issue /(a)/ noted above could be solved by using
salience, etc. I was wanting to avoid using salience where possible as it
leads to more fragile, less declarative systems. We were able to fix the
perf issue, by simply changing the rule load order anyways. My question is
not specifically asking how to deal with this perf issue. Instead I'm
asking about Drools choice of conflict resolution strategy in v6, as I have
listed in points /1-3/ above.
In the blog post @
http://blog.athico.com/2013/11/rip-rete-time-to-get-phreaky.html,
I think the sentence,
/"A simple heuristic, based on the rule most likely to result in firings, is
used to select the next rule for evaluation; this delays the evaluation and
firing of the other rules."/
is the only thing I see on the topic of conflict resolution (at least I
think it is). I understand the parts about unlinked and linked rules,
however, when the agenda is populated by multiple activations of the same
salience, that's when things get interesting from the point of view of the
topic discussed here.
I appreciate any feedback with regards to this.
--
View this message in context: http://drools.46999.n3.nabble.com/Conflict-resolution-strategy-before-vs-...
Sent from the Drools: User forum mailing list archive at Nabble.com.
10 years, 3 months
Slf4j Log4j logger not working with Drools drl while using as a global variable.
by Soumya.plavaga
I am using global slf4j log4j logger as a global variable within our drl and
inserting that global logger value at runtime into kiesession. While we are
trying to do logger.info with multiple arguments then it's giving the
following exception stack trace -
Exception executing consequence for rule "Test Logger 2" in
test.rules.system: java.lang.RuntimeException: cannot invoke method: info
at
org.drools.core.runtime.rule.impl.DefaultConsequenceExceptionHandler.handleException(DefaultConsequenceExceptionHandler.java:39)
at
org.drools.core.common.DefaultAgenda.fireActivation(DefaultAgenda.java:1027)
at org.drools.core.phreak.RuleExecutor.fire(RuleExecutor.java:129)
at
org.drools.core.phreak.RuleExecutor.evaluateNetworkAndFire(RuleExecutor.java:71)
at
org.drools.core.common.DefaultAgenda.fireNextItem(DefaultAgenda.java:935)
at
org.drools.core.common.DefaultAgenda.fireAllRules(DefaultAgenda.java:1200)
at
org.drools.core.common.AbstractWorkingMemory.fireAllRules(AbstractWorkingMemory.java:952)
at
org.drools.core.common.AbstractWorkingMemory.fireAllRules(AbstractWorkingMemory.java:926)
at
org.drools.core.impl.StatefulKnowledgeSessionImpl.fireAllRules(StatefulKnowledgeSessionImpl.java:232)
at
test.platform.rules.executor.service.impl.RuleExecutorServiceImplTest.testExecuteRule(RuleExecutorServiceImplTest.java:230)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at
org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:47)
at
org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
at
org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:44)
at
org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
at
org.springframework.test.context.junit4.statements.RunBeforeTestMethodCallbacks.evaluate(RunBeforeTestMethodCallbacks.java:74)
at
org.springframework.test.context.junit4.statements.RunAfterTestMethodCallbacks.evaluate(RunAfterTestMethodCallbacks.java:83)
at
org.springframework.test.context.junit4.statements.SpringRepeat.evaluate(SpringRepeat.java:72)
at
org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:232)
at
org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:89)
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:238)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:63)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:236)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:53)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:229)
at
org.springframework.test.context.junit4.statements.RunBeforeTestClassCallbacks.evaluate(RunBeforeTestClassCallbacks.java:61)
at
org.springframework.test.context.junit4.statements.RunAfterTestClassCallbacks.evaluate(RunAfterTestClassCallbacks.java:71)
at org.junit.runners.ParentRunner.run(ParentRunner.java:309)
at
org.springframework.test.context.junit4.SpringJUnit4ClassRunner.run(SpringJUnit4ClassRunner.java:175)
at
org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50)
at
org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
at
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)
at
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
at
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
at
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)
Caused by: java.lang.RuntimeException: cannot invoke method: info
at
org.mvel2.optimizers.impl.refl.nodes.MethodAccessor.getValue(MethodAccessor.java:63)
at
org.mvel2.optimizers.impl.refl.nodes.VariableAccessor.getValue(VariableAccessor.java:37)
at org.mvel2.ast.ASTNode.getReducedValueAccelerated(ASTNode.java:108)
at org.mvel2.MVELRuntime.execute(MVELRuntime.java:86)
at
org.mvel2.compiler.CompiledExpression.getDirectValue(CompiledExpression.java:123)
at
org.mvel2.compiler.CompiledExpression.getValue(CompiledExpression.java:119)
at org.mvel2.MVEL.executeExpression(MVEL.java:930)
at
org.drools.core.base.mvel.MVELConsequence.evaluate(MVELConsequence.java:107)
at
org.drools.core.common.DefaultAgenda.fireActivation(DefaultAgenda.java:1016)
... 36 more
Caused by: java.lang.ArrayIndexOutOfBoundsException: 1
at
org.mvel2.optimizers.impl.refl.nodes.MethodAccessor.executeAll(MethodAccessor.java:140)
at
org.mvel2.optimizers.impl.refl.nodes.MethodAccessor.getValue(MethodAccessor.java:48)
... 44 more
Example: My drl file looks like this -
package test.system.rule;
import test.platform.model.*;
import org.slf4j.Logger;
global Logger logger;
rule "Test Logger 1"
when
then
logger.info("within test logger 1");
end
rule "Test Logger 2"
when
then
logger.info("within test logger 2. Rule fired {}",
drools.getRule().getName());
end
While rules are firing then the first logger is getting printed into console
but second one is not getting printed and giving the above exception to me.
--
View this message in context: http://drools.46999.n3.nabble.com/Slf4j-Log4j-logger-not-working-with-Dro...
Sent from the Drools: User forum mailing list archive at Nabble.com.
10 years, 3 months
Error while login in Guvnor 5.3.3.Final, Any thoughts/Suggestion on this?
by LaKhI ReDdY!!!!!!!!!!!
Hi All,
I have migrated from Guvnor 5.1.1 to Guvnor 5.3.3.Final. I am logging using
SSO.
I am getting the bellow error message on the UI when i try to login.
java.lang.NullPointerException at
org.drools.guvnor.server.util.LoggingHelper.error(LoggingHelper.java:76) at
org.drools.guvnor.server.SecurityServiceServlet.doUnexpectedFailure(SecurityServiceServlet.java:55)
at
com.google.gwt.user.server.rpc.AbstractRemoteServiceServlet.doPost(AbstractRemoteServiceServlet.java:67)
at
javax.servlet.http.HttpServlet.service(HttpServlet.java:727) at
javax.servlet.http.HttpServlet.service(HttpServlet.java:820) at
weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:227)
at
weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurityHelper.java:125)
at
weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:300)
at weblogic.servlet.internal.TailFilter.doFilter(TailFilter.java:26) at
weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
at org.jboss.seam.web.ContextFilter$1.process(ContextFilter.java:42) at
org.jboss.seam.servlet.ContextualHttpServletRequest.run(ContextualHttpServletRequest.java:65)
at
org.jboss.seam.web.ContextFilter.doFilter(ContextFilter.java:37) at
weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
at
weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.wrapRun(WebAppServletContext.java:3715)
at
weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:3681)
at
weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
at
weblogic.security.service.SecurityManager.runAs(SecurityManager.java:120) at
weblogic.servlet.internal.WebAppServletContext.securedExecute(WebAppServletContext.java:2277)
at
weblogic.servlet.internal.WebAppServletContext.execute(WebAppServletContext.java:2183)
at
weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.java:1454)
at weblogic.work.ExecuteThread.execute(ExecuteThread.java:209) at
weblogic.work.ExecuteThread.run(ExecuteThread.java:178)
In Application Server, i can see the below error.
ERROR 05-08 07:07:30,903 (LoggingHelper.java:error:74) Type
'[Lorg.drools.guvnor.client.configurations.Capability;' was not assignable
to
'com.google.gwt.user.client.rpc.IsSerializable' and did not have a custom
field serializer.For security purposes, this type will not be serialized.:
instance = [Lorg.drools.guvnor.client.configurations.Capability;@256c0579
<Aug 5, 2014 7:07:30 AM PDT> <Error> <HTTP> <BEA-101017>
<[ServletContext@626550860[app:drools-guvnor module:drools-guvnor.war
path:/drools-guvnor spec-version:2.5], request:
weblogic.servlet.internal.ServletRequestImpl@20c579cd[
Any thought/suggestion on this?
Regards,
Lakshmi Reddy
10 years, 3 months
Drools Fusion (CEP) & clustering
by Ephemeris Lappis
Hello.
I'm looking for some reference architecture for Drools CEP clustering.
If I'm not wrong, the Drools 6.x documentation doesn't explain how to set a
clustered environment to handle events processing. For example, how can we
ensure load distribution, time windows control, state integrity, etc.,
running several engines ?
Any information about that ?
Thanks in advance.
Regards.
--
View this message in context: http://drools.46999.n3.nabble.com/Drools-Fusion-CEP-clustering-tp4030560....
Sent from the Drools: User forum mailing list archive at Nabble.com.
10 years, 3 months
Need help in drools-guvnor5.3.3.Final SSO(Single Sign on) authentication enabling
by LaKhI ReDdY!!!!!!!!!!!
Hi,
What are the files need be changed to have SSO(single sign on) br
drools-guvnor 5.3.3.Final version?
I have un commented the below line in components.xml, still its not working?
<security:identity authenticate-method="#{ssoAuthenticator.authenticate}"/>
Is there any other changes required?
Regards,
Lakshmi
10 years, 3 months
Build&Deploy - Drools Document
by Ricardo
15.7.4.1. Build & Deploy
Build & Depoy builds the current project and deploys the KJAR into the
workbench internal Maven repository.
the above statement from the drools document says deploys into internal
document but you can deploy to remote maven repo modifying pom.xml. The
above statement restriction the extended functionality of Build and Deploy.
-----
with kind regards,
--
View this message in context: http://drools.46999.n3.nabble.com/Build-Deploy-Drools-Document-tp4030554....
Sent from the Drools: User forum mailing list archive at Nabble.com.
10 years, 3 months