[rules-users] Drools in non-eclipse environment

Abhay B. Chaware Abhay.Chaware at kpitcummins.com
Thu Jun 9 08:59:36 EDT 2011


woo hooo ! I got past that problem :)  But a new one's here now.

Looks like MVEL is not liking something :)



W/dalvikvm(29977): VFY: unable to resolve static method 164: Ljava/beans/Introspector;.decapitalize (Ljava/lang/String;)Ljava/lang
/String;
W/dalvikvm(29977): threadid=1: thread exiting with uncaught exception (group=0x40020ac0)
E/AndroidRuntime(29977): FATAL EXCEPTION: main
E/AndroidRuntime(29977): java.lang.NoClassDefFoundError: java.beans.Introspector
E/AndroidRuntime(29977):        at org.drools.core.util.asm.ClassFieldInspector.calcFieldName(ClassFieldInspector.java:298)
E/AndroidRuntime(29977):        at org.drools.core.util.asm.ClassFieldInspector.addToMapping(ClassFieldInspector.java:216)
E/AndroidRuntime(29977):        at org.drools.core.util.asm.ClassFieldInspector.processClassWithoutByteCode(ClassFieldInspector.ja
va:148)
E/AndroidRuntime(29977):        at org.drools.core.util.asm.ClassFieldInspector.<init>(ClassFieldInspector.java:83)
E/AndroidRuntime(29977):        at org.drools.core.util.asm.ClassFieldInspector.<init>(ClassFieldInspector.java:64)
E/AndroidRuntime(29977):        at org.drools.base.ClassFieldAccessorFactory.getClassFieldReader(ClassFieldAccessorFactory.java:11
8)
E/AndroidRuntime(29977):        at org.drools.base.ClassFieldAccessorCache$CacheEntry.getReadAccessor(ClassFieldAccessorCache.java
:168)
E/AndroidRuntime(29977):        at org.drools.base.ClassFieldAccessorCache.getReadAcessor(ClassFieldAccessorCache.java:101)
E/AndroidRuntime(29977):        at org.drools.base.ClassFieldAccessorStore.wire(ClassFieldAccessorStore.java:404)
E/AndroidRuntime(29977):        at org.drools.base.ClassFieldAccessorStore.wire(ClassFieldAccessorStore.java:374)
E/AndroidRuntime(29977):        at org.drools.common.AbstractRuleBase.readExternal(AbstractRuleBase.java:295)
E/AndroidRuntime(29977):        at org.drools.reteoo.ReteooRuleBase.readExternal(ReteooRuleBase.java:236)
E/AndroidRuntime(29977):        at org.drools.impl.KnowledgeBaseImpl.readExternal(KnowledgeBaseImpl.java:108)
E/AndroidRuntime(29977):        at java.io.ObjectInputStream.readNewObject(ObjectInputStream.java:2127)
E/AndroidRuntime(29977):        at java.io.ObjectInputStream.readNonPrimitiveContent(ObjectInputStream.java:929)
E/AndroidRuntime(29977):        at java.io.ObjectInputStream.readObject(ObjectInputStream.java:2285)
E/AndroidRuntime(29977):        at java.io.ObjectInputStream.readObject(ObjectInputStream.java:2240)
E/AndroidRuntime(29977):        at com.ts.DBconnector.execPackageByPath(DBconnector.java:219)
E/AndroidRuntime(29977):        at com.first.FirstActivity.onCreate(FirstActivity.java:77)
E/AndroidRuntime(29977):        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
E/AndroidRuntime(29977):        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627)
E/AndroidRuntime(29977):        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679)
E/AndroidRuntime(29977):        at android.app.ActivityThread.access$2300(ActivityThread.java:125)
E/AndroidRuntime(29977):        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033)
E/AndroidRuntime(29977):        at android.os.Handler.dispatchMessage(Handler.java:99)
E/AndroidRuntime(29977):        at android.os.Looper.loop(Looper.java:123)
E/AndroidRuntime(29977):        at android.app.ActivityThread.main(ActivityThread.java:4627)
E/AndroidRuntime(29977):        at java.lang.reflect.Method.invokeNative(Native Method)
E/AndroidRuntime(29977):        at java.lang.reflect.Method.invoke(Method.java:521)
E/AndroidRuntime(29977):        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860)
E/AndroidRuntime(29977):        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
E/AndroidRuntime(29977):        at dalvik.system.NativeStart.main(Native Method)



________________________________
From: rules-users-bounces at lists.jboss.org [mailto:rules-users-bounces at lists.jboss.org] On Behalf Of Michael Anstis
Sent: Thursday, June 09, 2011 4:51 PM
To: Rules Users List
Subject: Re: [rules-users] Drools in non-eclipse environment

Great news :)

Please do feedback... if you get it working I'll make a blog entry on your behalf as you are not the first (or last) to try Drools on Android.

With kind regards,

Mike
2011/6/9 Abhay B. Chaware <Abhay.Chaware at kpitcummins.com<mailto:Abhay.Chaware at kpitcummins.com>>
That's exactly what I am trying out at the moment .. option - b.  Pre-compile, serialize and unserialize ...I'll share the results.
Also rule file's there at the location mentioned. So that's not a problem.
I've gone through the blog you mentioned ... and as you indicated, it's only jbpm .. no rules ...

thanks
abhay
________________________________
From: rules-users-bounces at lists.jboss.org<mailto:rules-users-bounces at lists.jboss.org> [mailto:rules-users-bounces at lists.jboss.org<mailto:rules-users-bounces at lists.jboss.org>] On Behalf Of Michael Anstis
Sent: Thursday, June 09, 2011 4:07 PM

To: Rules Users List
Subject: Re: [rules-users] Drools in non-eclipse environment

Preparing to be shouted down, but isn't it impossible to compile DRL on Android and the suggestion is to load pre-serialised KnowledgeBases?

Also, as another observation, are you sure the DRL was indeed found and the NPE is not caused by "com.ts.DBconnector.readKnowledgeBase(DBconnector.java:143)" perhaps passing a null to KnowledgeBuilder?

Have you looked at http://blog.athico.com/2011/03/jbpm5-lightweight-running-on-android.html, which might give some pointers - although it is only jBPM and not rules themselves.

With kind regards,

Mike
On 9 June 2011 11:11, Abhay B. Chaware <Abhay.Chaware at kpitcummins.com<mailto:Abhay.Chaware at kpitcummins.com>> wrote:
This is what I did.

               Properties properties = new Properties();
               properties.put("drools.dialect.java.compiler", "JANINO");
               KnowledgeBuilderConfiguration kbConfig = KnowledgeBuilderFactory.newKnowledgeBuilderConfiguration( properties, (ClassLoader[]) null );
               KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder(kbConfig);
               kbuilder.add(ResourceFactory.newInputStreamResource(is), ResourceType.DRL);
I am getting same error with KnowledgeBuilderConfiguration ..

W/System.err(27303): java.lang.NullPointerException
W/System.err(27303):    at org.drools.rule.builder.RuleBuilder.build(RuleBuilder.java:47)
W/System.err(27303):    at org.drools.compiler.PackageBuilder.addRule(PackageBuilder.java:1161)
W/System.err(27303):    at org.drools.compiler.PackageBuilder.addPackage(PackageBuilder.java:637)
W/System.err(27303):    at org.drools.compiler.PackageBuilder.addPackageFromDrl(PackageBuilder.java:267)
W/System.err(27303):    at org.drools.compiler.PackageBuilder.addKnowledgeResource(PackageBuilder.java:459)
W/System.err(27303):    at org.drools.builder.impl.KnowledgeBuilderImpl.add(KnowledgeBuilderImpl.java:28)
W/System.err(27303):    at com.ts.DBconnector.readKnowledgeBase(DBconnector.java:143)
W/System.err(27303):    at com.first.FirstActivity.onCreate(FirstActivity.java:64)
W/System.err(27303):    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
W/System.err(27303):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627)
W/System.err(27303):    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679)
W/System.err(27303):    at android.app.ActivityThread.access$2300(ActivityThread.java:125)


________________________________________
From: rules-users-bounces at lists.jboss.org<mailto:rules-users-bounces at lists.jboss.org> [rules-users-bounces at lists.jboss.org<mailto:rules-users-bounces at lists.jboss.org>] On Behalf Of Wolfgang Laun [wolfgang.laun at gmail.com<mailto:wolfgang.laun at gmail.com>]
Sent: Thursday, June 09, 2011 2:46 PM
To: Rules Users List
Subject: Re: [rules-users] Drools in non-eclipse environment
You might try this:

    Properties props = new Properties();
    props.put( "drools.dialect.java.compiler", "JANINO" );

   KnowledgeBuilderConfiguration kbConfig =
       KnowledgeBuilderFactory.newKnowledgeBuilderConfiguration( props, (ClassLoader[]) null );

Requires the janino jar in your classpath, which I have as
  ~/.m2/repository/janino/janino/2.5.15/janino-2.5.15.jar

-W
On 9 June 2011 10:29, Abhay B. Chaware <Abhay.Chaware at kpitcummins.com<mailto:Abhay.Chaware at kpitcummins.com><mailto:Abhay.Chaware at kpitcummins.com<mailto:Abhay.Chaware at kpitcummins.com>>> wrote:
I am using drools 5.1.0

Let me explain what I am trying to do.  I am trying to write a drools app on to android platform.  In my app, I have added following jars in the application classpath -

antlr-runtime.jar
drools-api.jar
drools-compiler.jar
drools-core.jar
mvel2.jar

Do I need any other jar files ?

upon drilling down into the Null Pointer Exception, it appears that it is throwing NPE at following line inside RuleBuilder.java


  RuleConditionBuilder builder = (RuleConditionBuilder)context.getDialect().getBuilder(ruleDescr.getLhs().getClass());

and on further drilling, I found that "context.getDialect()" is retuning NULL.

Then I put some debug inside PackageBuilder.java

upon drilling down for the error, found out that it is not able to set the context's dialect.
ctr.getDialect(pkgRegistry.getDialect()) gives "null" ...

DialectCompiletimeRegistry ctr = pkgRegistry.getDialectCompiletimeRegistry();
RuleBuildContext context = new RuleBuildContext(this, ruleDescr, ctr, pkg, ctr.getDialect(pkgRegistry.getDialect()));

Is there any default setting /configuration that I am obviously missing ?

what could be the problem ?

-abhay


________________________________________
From: rules-users-bounces at lists.jboss.org<mailto:rules-users-bounces at lists.jboss.org><mailto:rules-users-bounces at lists.jboss.org<mailto:rules-users-bounces at lists.jboss.org>> [rules-users-bounces at lists.jboss.org<mailto:rules-users-bounces at lists.jboss.org><mailto:rules-users-bounces at lists.jboss.org<mailto:rules-users-bounces at lists.jboss.org>>] On Behalf Of Swindells, Thomas [TSwindells at nds.com<mailto:TSwindells at nds.com><mailto:TSwindells at nds.com<mailto:TSwindells at nds.com>>]
Sent: Thursday, June 09, 2011 1:40 PM
To: Rules Users List
Subject: Re: [rules-users] Drools in non-eclipse environment

Which version of drools is this?
For drools 5.0.1 we just use maven to resolve the dependencies for us and it works fine. I can't obviously see any eclipse compiler in the jars that we distribute with our application.

Thomas

> -----Original Message-----
> From: rules-users-bounces at lists.jboss.org<mailto:rules-users-bounces at lists.jboss.org><mailto:rules-users-bounces at lists.jboss.org<mailto:rules-users-bounces at lists.jboss.org>> [mailto:rules-users-<mailto:rules-users-><mailto:rules-users-<mailto:rules-users->>
> bounces at lists.jboss.org<mailto:bounces at lists.jboss.org><mailto:bounces at lists.jboss.org<mailto:bounces at lists.jboss.org>>] On Behalf Of Abhay B. Chaware
> Sent: 09 June 2011 08:06
> To: rules-users at lists.jboss.org<mailto:rules-users at lists.jboss.org><mailto:rules-users at lists.jboss.org<mailto:rules-users at lists.jboss.org>>
> Subject: [rules-users] Drools in non-eclipse environment
>
> Has anyone tried using drools in non-eclipse env ? meaning that
> org.eclipse.jdt.core_3.5.1.v_972_R35x.jar is not in the classpath ?
>
> Documentation says this :
>
> (http://docs.huihoo.com/drools/4.0.7/ch02s05.html)
>
> if you do not have Eclipse JDT Core in your classpath you must override the
> compiler setting before you instantiate this PackageBuilder, you can either
> do that with a packagebuilder properties file the ChainedProperties class will
> find, or you can do it programmatically as shown below; note this time I use
> properties to inject the value for startup.
>
> They also provide an example, but I am not able to figure out exactly how to
> use this example/info.
>
> Here is my code :
>
>               KnowledgeBuilder kbuilder =
> KnowledgeBuilderFactory.newKnowledgeBuilder();
>               kbuilder.add(ResourceFactory.newInputStreamResource(is),
> ResourceType.DRL);
>
> where "is" is input stream containing the rule file ( .drl)
>
> How do I override the compiler setting ?
>
> I am getting a null pointer exception ( see below ) and I suspect that
> overriding the packagebuilderconfiguration will fix it ?
>
> W/System.err(25511): java.lang.NullPointerException
> W/System.err(25511):    at
> org.drools.rule.builder.RuleBuilder.build(RuleBuilder.java:47)
> W/System.err(25511):    at
> org.drools.compiler.PackageBuilder.addRule(PackageBuilder.java:1161)
> W/System.err(25511):    at
> org.drools.compiler.PackageBuilder.addPackage(PackageBuilder.java:637)
> W/System.err(25511):    at
> org.drools.compiler.PackageBuilder.addPackageFromDrl(PackageBuilder.java
> :267)
> W/System.err(25511):    at
> org.drools.compiler.PackageBuilder.addKnowledgeResource(PackageBuilder
> .java:459)
> W/System.err(25511):    at
> org.drools.builder.impl.KnowledgeBuilderImpl.add(KnowledgeBuilderImpl.ja
> va:28)
> W/System.err(25511):    at
> com.ts.DBconnector.readKnowledgeBase(DBconnector.java:146)
>
>
>
> _______________________________________________
> rules-users mailing list
> rules-users at lists.jboss.org<mailto:rules-users at lists.jboss.org><mailto:rules-users at lists.jboss.org<mailto:rules-users at lists.jboss.org>>
> https://lists.jboss.org/mailman/listinfo/rules-users


**************************************************************************************
This message is confidential and intended only for the addressee. If you have received this message in error, please immediately notify the postmaster at nds.com<mailto:postmaster at nds.com><mailto:postmaster at nds.com<mailto:postmaster at nds.com>> and delete it from your system as well as any copies. The content of e-mails as well as traffic data may be monitored by NDS for employment and security purposes. To protect the environment please do not print this e-mail unless necessary.

NDS Limited. Registered Office: One London Road, Staines, Middlesex, TW18 4EX, United Kingdom. A company registered in England and Wales. Registered no. 3080780. VAT no. GB 603 8808 40-00
**************************************************************************************

_______________________________________________
rules-users mailing list
rules-users at lists.jboss.org<mailto:rules-users at lists.jboss.org><mailto:rules-users at lists.jboss.org<mailto:rules-users at lists.jboss.org>>
https://lists.jboss.org/mailman/listinfo/rules-users



_______________________________________________
rules-users mailing list
rules-users at lists.jboss.org<mailto:rules-users at lists.jboss.org><mailto:rules-users at lists.jboss.org<mailto:rules-users at lists.jboss.org>>
https://lists.jboss.org/mailman/listinfo/rules-users



_______________________________________________
rules-users mailing list
rules-users at lists.jboss.org<mailto:rules-users at lists.jboss.org>
https://lists.jboss.org/mailman/listinfo/rules-users


This message contains information that may be privileged or confidential and is the property of the KPIT Cummins Infosystems Ltd. It is intended only for the person to whom it is addressed. If you are not the intended recipient, you are not authorized to read, print, retain copy, disseminate, distribute, or use this message or any part thereof. If you receive this message in error, please notify the sender immediately and delete all copies of this message. KPIT Cummins Infosystems Ltd. does not accept any liability for virus infected mails.

_______________________________________________
rules-users mailing list
rules-users at lists.jboss.org<mailto:rules-users at lists.jboss.org>
https://lists.jboss.org/mailman/listinfo/rules-users

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.jboss.org/pipermail/rules-users/attachments/20110609/8f418436/attachment.html 


More information about the rules-users mailing list