Since no replies as of yet I've done some more testing and have some more
detail.. this seems to be a bug but I could use some eyes on this as I'm a
drools newbie... I now have two rules in a clean project in Guvnor...
First rule like this validates fine:
when
$root : Root()
then
logger.debug("PNRLookupRequest - Start");
Second rule is as follows:
when
/*
$root : Root();
$id : IdentityRequest() from $root;
*/
Root($id:identityRequest != null)
then
logger.debug("PNRLookupRequest - Check Data");
When I attempt to validate it generates a fatal error and logs the following
in the tomcat catalina.log:
ERROR 31-08 13:49:51,656
(RepositoryServiceServlet.java:doUnexpectedFailure:66)
java.lang.reflect.InvocationTargetException
com.google.gwt.user.server.rpc.UnexpectedException: Service method 'public
abstract org.drools.guvnor.client.rpc.BuilderResult[]
org.drools.guvnor.client.rpc.RepositoryService.buildAsset(org.drools.guvnor.client.rpc.RuleAsset)
throws com.google.gwt.user.client.rpc.SerializableException' threw an
unexpected exception: java.lang.reflect.InvocationTargetException
at
com.google.gwt.user.server.rpc.RPC.encodeResponseForFailure(RPC.java:360)
at
com.google.gwt.user.server.rpc.RPC.invokeAndEncodeResponse(RPC.java:546)
at
com.google.gwt.user.server.rpc.RemoteServiceServlet.processCall(RemoteServiceServlet.java:164)
at
com.google.gwt.user.server.rpc.RemoteServiceServlet.doPost(RemoteServiceServlet.java:86)
...
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at
com.google.gwt.user.server.rpc.RPC.invokeAndEncodeResponse(RPC.java:527)
... 21 more
Caused by: java.lang.LinkageError: duplicate class definition:
org/drools/base/com/netid/idia/model/natal/rootIdentityRequest/Root274270528$getIdentityRequest
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:620)
at
org.drools.base.ClassFieldAccessorCache$ByteArrayClassLoader.defineClass(ClassFieldAccessorCache.java:367)
If modify the rule to replace the failing when clause with the commented out
block it then validates fine.. These same rules compile fine through ANT..
any known bugs in Guvnor that would cause this?
Codedrop wrote:
Reposting as last message was unledgible.
Recently upgraded from Drools 4.0.7 to 5.1.0 and have imported our rules
into Guvnor. Unable to determine why the same rules will not correctly
validate in Guvnor which prevents building a package for deployment.
Sample Rule:
salience 50
agenda-group "idia"
when
Root(identityRequest != null)
then
logger.debug("Main - Main Data
Evaluation");
System.out.println("Main - Main Data
Evaluation");
drools.getWorkingMemory().setFocus("mainAnalysis");
Throws the following validation error when you select ‘Validate’:
[Main - Data Evaluation] Unable to create Field Extractor for
'identityRequest' of '[ClassObjectType
class=com.netid.idia.model.natal.rootIdentityRequest.Root]' in rule 'Main
- Data Evaluation'
Unsure why identityRequest is failing. There is a valid getter in the
java file and guvnor displays identityRequest in the list of attributes
for ‘Root’. Oddly, if I change the when clause to be
Root(this.identityRequest != null) it validates fine. Did something
change between 4.0.7 and 5.1.0 that I’m missing or do I have error
somewhere that goes undetected outside the guvnor?
--
View this message in context:
http://www.nabble.com/Guvnor-fails-to-vaildate-rule%2C-though-same-rule-c...
Sent from the drools - user mailing list archive at
Nabble.com.