[JBoss JIRA] Created: (JBRULES-2877) Disjunction over a set not working
by Oliver Roess (JIRA)
Disjunction over a set not working
----------------------------------
Key: JBRULES-2877
URL: https://issues.jboss.org/browse/JBRULES-2877
Project: Drools
Issue Type: Bug
Security Level: Public (Everyone can see)
Affects Versions: 5.1.1.FINAL
Reporter: Oliver Roess
Assignee: Mark Proctor
Hello there and a happy new year to everyone reading :)
Why am I here again? Yep, got a problem. Don't know why it doesn't work. I'm using the latest snapshot version.
So here it goes.
A simple rule with conjunction and disjunction but over a set of events.
when
$ldes : Set(size == 2) from collect(LoopDetectorEvent() over window:length(2))
(or LoopDetectorEvent($t1 : transportation == "LKW", $id1 : eventID) from $ldes
LoopDetectorEvent($t2 : transportation == "PKW", $id2 : eventID) from $ldes)
LoopDetectorEvent($t3 : transportation == "BUS", $id3 : eventID) from $ldes
So, what the rule says: fire when there's a BUS event plus either a LKW or PKW event in the set.
But, instead I get a big exception. It's posted at the end.
Interestingly, it works if I don't use the Set, like this...
when
(or $e1 : LoopDetectorEvent($t1 : transportation == "PKW", $id1 : eventID) over window:length(1)
$e2 : LoopDetectorEvent($t2 : transportation == "LKW", $id2 : eventID) over window:length(1))
LoopDetectorEvent($t3 : transportation == "BUS", $id3 : eventID) over window:length(1)
but that rule does not have the same meaning. So it's useless for me.
Besides, it DOES work with the set if I just cut the third event out (the BUS event).
What is wrong here?
Thanks in advance.
Kind regards!
Oliver
Exception in thread "Thread-2" java.lang.ClassCastException: org.drools.reteoo.InitialFactImpl cannot be cast to trafficsys.domain.events.LoopDetectorEvent
at org.drools.base.trafficsys.domain.events.LoopDetectorEvent446196$getTransportation.getValue(Unknown Source)
at org.drools.base.ClassFieldReader.getValue(ClassFieldReader.java:91)
at org.drools.base.evaluators.EqualityEvaluatorsDefinition$StringEqualEvaluator.evaluate(EqualityEvaluatorsDefinition.java:1961)
at org.drools.rule.LiteralRestriction.isAllowed(LiteralRestriction.java:92)
at org.drools.rule.LiteralConstraint.isAllowed(LiteralConstraint.java:109)
at org.drools.reteoo.FromNode.checkConstraintsAndPropagate(FromNode.java:264)
at org.drools.reteoo.FromNode.assertLeftTuple(FromNode.java:138)
at org.drools.reteoo.SingleLeftTupleSinkAdapter.doPropagateAssertLeftTuple(SingleLeftTupleSinkAdapter.java:189)
at org.drools.reteoo.SingleLeftTupleSinkAdapter.propagateAssertLeftTuple(SingleLeftTupleSinkAdapter.java:64)
at org.drools.reteoo.FromNode.checkConstraintsAndPropagate(FromNode.java:279)
at org.drools.reteoo.FromNode.assertLeftTuple(FromNode.java:138)
at org.drools.reteoo.SingleLeftTupleSinkAdapter.doPropagateAssertLeftTuple(SingleLeftTupleSinkAdapter.java:189)
at org.drools.reteoo.SingleLeftTupleSinkAdapter.propagateAssertLeftTuple(SingleLeftTupleSinkAdapter.java:64)
at org.drools.reteoo.AccumulateNode.evaluateResultConstraints(AccumulateNode.java:662)
at org.drools.reteoo.AccumulateNode.assertObject(AccumulateNode.java:270)
at org.drools.reteoo.CompositeObjectSinkAdapter.doPropagateAssertObject(CompositeObjectSinkAdapter.java:450)
at org.drools.reteoo.CompositeObjectSinkAdapter.propagateAssertObject(CompositeObjectSinkAdapter.java:378)
at org.drools.reteoo.ObjectTypeNode.assertObject(ObjectTypeNode.java:190)
at org.drools.reteoo.EntryPointNode.assertObject(EntryPointNode.java:145)
at org.drools.common.AbstractWorkingMemory.insert(AbstractWorkingMemory.java:1187)
at org.drools.common.AbstractWorkingMemory.insert(AbstractWorkingMemory.java:1089)
at org.drools.common.AbstractWorkingMemory.insert(AbstractWorkingMemory.java:893)
at org.drools.impl.StatefulKnowledgeSessionImpl.insert(StatefulKnowledgeSessionImpl.java:238)
at trafficsys.SessionInterface.insertAndFire(SessionInterface.java:133)
--
This message is automatically generated by JIRA.
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
11 years, 6 months
[JBoss JIRA] Created: (JBRULES-2871) KnowledgeAgent: unable to determine operator for symbol [after]
by Oscar de Groot (JIRA)
KnowledgeAgent: unable to determine operator for symbol [after]
---------------------------------------------------------------
Key: JBRULES-2871
URL: https://issues.jboss.org/browse/JBRULES-2871
Project: Drools
Issue Type: Bug
Security Level: Public (Everyone can see)
Components: drools-core
Affects Versions: 5.1.1.FINAL
Reporter: Oscar de Groot
Assignee: Mark Proctor
When loading a ruleset via a KnowledgeAgent, only the operators defined in org.drools.base.evaluators.Operator (== != >= < <= <) are supported. When loading the same rulebase via a KnowledgeBuilder, all operators are supported.
Upon loading a ruleset that contains another operator (e.g. "after", "before"), the following error is printed:
[2011:01:19 14:01:44:exception]
java.lang.RuntimeException: KnowledgeAgent exception while trying to deserialize KnowledgeDefinitionsPackage
at org.drools.agent.impl.KnowledgeAgentImpl.createPackageFromResource(KnowledgeAgentImpl.java:674)
at org.drools.agent.impl.KnowledgeAgentImpl.addResourcesToKnowledgeBase(KnowledgeAgentImpl.java:899)
...
Caused by: org.drools.RuntimeDroolsException: unable to determine operator for symbol [after]
at org.drools.base.evaluators.Operator.determineOperator(Operator.java:87)
at org.drools.base.evaluators.Operator.readResolve(Operator.java:122)
Using Eclipse's debugging feature, I have determined that KnowledgeBuilder loads the rest of the operators through EvaluatorRegistry, while KnowledgeAgent does nothing to load any operators into org.drools.base.evaluators.Operator. I have tried modifying KnowledgeAgent by adding the code below to the constructor of KnowledgeAgentImpl. This resolves the problem: with this addition, the ruleset with "after"-operator works as intended when loaded via a KnowledgeAgent.
// Load all of Drools' default evaluators instead of just the ones defined
// in org.drools.base.evaluators.Operator
new EvaluatorRegistry();
--
This message is automatically generated by JIRA.
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
11 years, 6 months
[JBoss JIRA] Created: (JBRULES-2819) DSL parsing/expansion: '\', '$', empty value, empty condition
by Wolfgang Laun (JIRA)
DSL parsing/expansion: '\', '$', empty value, empty condition
---------------------------------------------------------------
Key: JBRULES-2819
URL: https://jira.jboss.org/browse/JBRULES-2819
Project: Drools
Issue Type: Bug
Security Level: Public (Everyone can see)
Components: drools-compiler-DSL
Affects Versions: 5.1.1.FINAL
Reporter: Wolfgang Laun
Assignee: Mark Proctor
Fix For: 5.2.0.M1
DSL parser does not accept an empty "value" section, e.g.
[when] a man loves a woman=
Expansion of a rule with an empty condition results in "whenthen".
The DSL parser escapes '$', but not '\' in value sections. It should not modify the value section except for "normalizing" variable references. Variable references should be restricted to a "clean" character sequence (e.g. Java identifier). The current expansion using replaceAll is too fragile.
I have emailed three reworked source files AntlrDSLMappingEntry.java DefaultExpander.java DSLTokenizedMappingFile.java to Edson, but I didn't change the parser itself.
--
This message is automatically generated by JIRA.
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
11 years, 6 months
[JBoss JIRA] Created: (JBRULES-2845) threading issues when using MultithreadEvaluationOption.YES with fusion
by Radai Rosenblatt (JIRA)
threading issues when using MultithreadEvaluationOption.YES with fusion
-----------------------------------------------------------------------
Key: JBRULES-2845
URL: https://issues.jboss.org/browse/JBRULES-2845
Project: Drools
Issue Type: Bug
Security Level: Public (Everyone can see)
Components: drools-compiler (fusion), drools-core (expert)
Affects Versions: 5.1.1.FINAL
Environment: dual core processor, jdk 6u21, windows xp
Reporter: Radai Rosenblatt
Assignee: Mark Proctor
Attachments: threadingbug.zip
i have 2 very simple rules and a test case (see attached maven project).
trying to set MultithreadEvaluationOption.YES on the KB causes the test to fail sporadically (~10% of the times?).
the attached project contains a testsuite that runs the same test 8 times (testsuite is defined in RunMe.java). attempting "mvn clean install" runs this suite and usually fails.
commenting out the MultithreadEvaluationOption.YES line in the other testcase (the one referred-to from RunMe) causes the tests to behave as expected (pass).
--
This message is automatically generated by JIRA.
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
11 years, 6 months
[JBoss JIRA] Created: (JBRULES-2898) incorrect eval() results when accessing global
by Wolfgang Laun (JIRA)
incorrect eval() results when accessing global
----------------------------------------------
Key: JBRULES-2898
URL: https://issues.jboss.org/browse/JBRULES-2898
Project: Drools
Issue Type: Bug
Security Level: Public (Everyone can see)
Components: drools-core
Affects Versions: 5.1.1.FINAL
Reporter: Wolfgang Laun
Assignee: Mark Proctor
Fix For: 5.2.0.M1
Combinations of rules containing an eval CE comparing double > double or double > integer may cause the eval result to be in error. In the attached example, there are 4 rules. If all are used, 2 fire when they should not. If rules 1+2 or 3+4 are used, 1 fires when it should not. If rules 1+4 or 2+3 are used, none misfires.
--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira
11 years, 6 months
[JBoss JIRA] Created: (JBRULES-2930) KnowledgeAgentDefinitionParser can get NPEs
by stevearoonie (JIRA)
KnowledgeAgentDefinitionParser can get NPEs
-------------------------------------------
Key: JBRULES-2930
URL: https://issues.jboss.org/browse/JBRULES-2930
Project: Drools
Issue Type: Bug
Security Level: Public (Everyone can see)
Components: drools-spring
Affects Versions: 5.1.1.FINAL
Reporter: stevearoonie
Assignee: Mark Proctor
KnowledgeAgentDefinitionParser assumes that a spring bean definition has a bean class name, however when the bean extends a parent then it may not, as in the following example:
<bean id="messageTemplateService" class="au.com.promedicus.template.freemarker.FreemarkerTemplateService">
<constructor-arg ref="workflowFreemarkerConfiguration"/>
</bean>
<bean id="workflowFreemarkerConfiguration" parent="freemarkerConfiguration">
<property name="templateLoader">
<bean class="au.com.promedicus.core.messaging.freemarker.FreemarkerMessageLayoutTemplateLoader" />
</property>
</bean>
The BeanDefinition for bean "workflowFreemarkerConfiguration" has a null bean class name which causes KnowledgeAgentDefinitionParser.parseInternal to throw an NPE. Specifically this line:
if ( def.getBeanClassName().equals( StatelessKnowledgeSessionBeanFactory.class.getName() ) ) {
--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira
11 years, 6 months
[JBoss JIRA] Created: (JBAS-8824) Cardinality constraints on children are not enforced after parsing
by Brian Stansberry (JIRA)
Cardinality constraints on children are not enforced after parsing
------------------------------------------------------------------
Key: JBAS-8824
URL: https://issues.jboss.org/browse/JBAS-8824
Project: JBoss Application Server
Issue Type: Bug
Security Level: Public (Everyone can see)
Components: Domain Management
Affects Versions: 7.0.0.Alpha1
Reporter: Brian Stansberry
Priority: Critical
Fix For: 7.0.0.Beta1
The parsers enforce cardinality constraints on child elements in the model, but they aren't enforced thereafter. So, for example, a second "profile" or "socket-binding-group" could be added to a standalone server via a management operation.
--
This message is automatically generated by JIRA.
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
11 years, 6 months