Drools
A rule engine for Java.
You should instead use this:
The problem is that you cannot have a variable named "object" passed to a function using eval. Not sure why, but this is the case in JBoss Drools 4.0.7.
- Minimum runtime requirements for Drools
- Adding the source rule to elements inserted by Drools
- Tips and Techniques for Improving Drools Performance
- Improving Drools Memory Performance
- Drools Pygments Lexer
Important Hints
If you use the following in a Drools rule:x : ObjectType( ) from other.propertyIt is important to realise that other.property will not be type checked; that is, other.property may be a type other than ObjectType.
You should instead use this:
x : ObjectType( object.property == this )
ClassNotFoundException with a ReturnValue Invoker
I was getting this exception for a fairly normal rule:org.drools.RuntimeDroolsException: java.lang.ClassNotFoundException: org.openiaml.model.drools.Rule_Create_Select_Wire_between_Domain_Object_types_0ReturnValue0Invoker at org.drools.rule.PackageCompilationData.reload(PackageCompilationData.java:224) at org.drools.common.AbstractRuleBase$ReloadPackageCompilationData.execute(AbstractRuleBase.java:830) at org.drools.common.AbstractRuleBase.executeQueuedActions(AbstractRuleBase.java:792) ... Caused by: java.lang.ClassNotFoundException: org.openiaml.model.drools.Rule_Create_Select_Wire_between_Domain_Object_types_0ReturnValue0Invoker at org.drools.rule.PackageCompilationData$PackageClassLoader.findClass(PackageCompilationData.java:374) at org.drools.rule.PackageCompilationData.wire(PackageCompilationData.java:255) at org.drools.rule.PackageCompilationData.reload(PackageCompilationData.java:220) ... 55 moreMy rule was quite innocent:
rule "Create Select Wire between Domain Object types"
when
scope : Session ( )
object: DomainObject ( eval(hasDomainAttribute(object)) )
...
then
...
end
The problem is that you cannot have a variable named "object" passed to a function using eval. Not sure why, but this is the case in JBoss Drools 4.0.7.