[
https://jira.jboss.org/jira/browse/JBRULES-1982?page=com.atlassian.jira.p...
]
Hrvoje Habjanic commented on JBRULES-1982:
------------------------------------------
Hi again!
In the meantime, drools 5.0.1 got out. So i did try to use it, and to my supprise, it
seems that java dialect is also working (in springsource DM 1.0.2). I'm not shure what
did make java dialect to work, but here it is (detailed) steps what i did.
1. Make drools bundle
- extract core, api & compile in one directory
- put following jars inside: antlr-runtime-3.1.1.jar core-3.4.2.v_883_R34x.jar
jaxb-impl-2.0.3.jar jaxb-xjc-2.0.3-v2only.jar
- create new jar from direcotry, with jars (no need to preserve manifest)
- create bundle using BND tool and following script:
Bundle-SymbolicName: org.drools
Bundle-Version: 5.0.1
Export-Package: org.drools*;version="5.0.1";-noimport:=true
-classpath=/work/hhabjan/springsource-dm-server-1.0.2.RELEASE/lib,/usr/java/default/jre/lib,c/antlr-runtime-3.1.1.jar,c/core-3.4.2.v_883_R34x.jar,a/jaxb-impl-2.0.3.jar,a/jaxb-xjc-2.0.3-v2only.jar,a/jaxb-impl-2.0.3.jar
Import-Package:
org.mvel2*;version="[2.0.10,3.0.0)",com.thoughtworks.xstream*;version="[1.3.1,2.0.0)",org.codehaus.janino.*;version="[2.5.15,3.0.0)";resolution:="optional",jxl*;version="[2.4.2,3.0.0)";resolution:="optional",net.sf.jxls.reader*;version="[0.9.6,2.0.0)";resolution:="optional",org.milyn*;version="[1.1.0,2.0.0)",javax*,org.w3c.dom*,org.xml.sax*,org.antlr.stringtemplate*;version="[3.1.1,4.0.0)";resolution:="optional",org.eclipse.core.resources*;version="[3.3.0,4.0.0)";resolution:="optional",org.eclipse.core.runtime*;version="[3.3.0,4.0.0)";resolution:="optional",org.eclipse.core.filesystem*;version="[1.0.0,2.0.0)";resolution:="optional",org.eclipse.text*;version="[3.1.0,4.0.0)";resolution:="optional",!org.eclipse*,com.sun.xml.fastinfoset*;version="[1.2.0,3.0.0)",org.jvnet.staxex*;version="[1.0.0,2.0.0)",*;resolution:="optional"
Bundle-ClassPath:
.,antlr-runtime-3.1.1.jar,core-3.4.2.v_883_R34x.jar,jaxb-xjc-2.0.3-v2only.jar,jaxb-impl-2.0.3.jar
This will produce somewhat big bundle, but - it works. :-)
2. Dependecies
Bundle have quite a lot of dependecies. I did try to put tem "optional" as much
as i can, but ... To be on the safe side, try to satisfy all. Fot that purpouse, i created
bundles from few other projects: jxls-reader, mvel2 and xstream (mybe others, i do not
recall). Here iks list of bundles in my "repository":
atomikos-config-1.0.4.jar
castor-config-0.1.0.jar
com.atomikos.transactions-essentials-3.5.3.jar
com.springsource.com.sun.msv.datatype-0.0.0.20060615.jar
com.springsource.com.sun.xml.bind-2.1.7.jar
com.springsource.com.sun.xml.fastinfoset-1.2.2.jar
com.springsource.javax.activation-1.1.1.jar
com.springsource.javax.mail-1.4.1.jar
com.springsource.javax.management.j2ee-1.0.1.jar
com.springsource.javax.resource-1.5.0.jar
com.springsource.javax.transaction-1.1.0.jar
com.springsource.javax.xml.bind-2.1.7.jar
com.springsource.jxl-2.4.2.jar
com.springsource.net.sf.cglib-2.1.3.jar
com.springsource.net.sf.ehcache-1.6.2.jar
com.springsource.net.sf.ezmorph-1.0.5.jar
com.springsource.net.sf.json-2.2.2.jar
com.springsource.oracle.jdbc-10.2.0.2.jar
com.springsource.org.apache.commons.beanutils-1.8.0.jar
com.springsource.org.apache.commons.codec-1.3.0.jar
com.springsource.org.apache.commons.collections-3.2.1.jar
com.springsource.org.apache.commons.configuration-1.5.0.jar
com.springsource.org.apache.commons.digester-1.8.1.jar
com.springsource.org.apache.commons.jxpath-1.2.0.jar
com.springsource.org.apache.commons.lang-2.4.0.jar
com.springsource.org.apache.commons.logging-1.1.1.jar
com.springsource.org.apache.log4j-1.2.15.jar
com.springsource.org.apache.oro-2.0.8.jar
com.springsource.org.apache.velocity-1.6.2.jar
com.springsource.org.apache.ws.commons.schema-1.3.2.jar
com.springsource.org.apache.xerces-2.8.1.jar
com.springsource.org.apache.xmlcommons-1.3.3.jar
com.springsource.org.apache.xml.resolver-1.2.0.jar
com.springsource.org.castor-1.1.2.jar
com.springsource.org.codehaus.jettison-1.0.1.jar
com.springsource.org.dom4j-1.6.1.jar
com.springsource.org.eclipse.jdt.core.compiler.batch-3.3.0.jar
com.springsource.org.eclipse.persistence-1.0.1.jar
com.springsource.org.jdom-1.0.0.jar
com.springsource.org.joda.time-1.6.0.jar
com.springsource.org.jvnet.staxex-1.0.0.jar
com.springsource.org.ognl-2.6.9.jar
com.springsource.org.postgresql.jdbc4-8.3.604.jar
com.springsource.org.relaxng.datatype-1.0.0.jar
com.springsource.org.xmlpull-1.1.3.4-O.jar
com.springsource.org.xmlpull-1.1.4.jar
com.thoughtworks.xstream-1.3.1.jar
freemarker-2.3.9.jar
jxls-reader-0.9.6.jar
org.drools-5.0.1.jar
org.eclipse.osgi-3.4.2.R34x_v20080826-1230.jar
org.milyn-1.1.2.jar
org.mvel-1.3.12.jar
org.mvel2-2.0.10.jar
org.springframework.instrument.classloading-2.5.6.A.jar
org.springframework.ldap-1.2.1.A.jar
org.springframework.oxm-1.5.5.A.jar
org.springframework.oxm.java5-1.5.5.A.jar
org.springframework.security-2.0.4.A.jar
org.springframework.ws-1.5.5.A.jar
org.springframework.ws.java5-1.5.5.A.jar
org.springframework.ws.transport-1.5.5.A.jar
org.springframework.xml-1.5.5.A.jar
saxon-9.2.jar
simmetrics_v1_6_2.jar
spring-persistence.jar
With this, test succeddes, but i did not test other stuff ... :-)
H.
NullPointerException when executing rule sample
-----------------------------------------------
Key: JBRULES-1982
URL:
https://jira.jboss.org/jira/browse/JBRULES-1982
Project: Drools
Issue Type: Bug
Security Level: Public(Everyone can see)
Affects Versions: 5.0.0.M5
Environment: Springsource DM Server v.1.0.1, all jar-s bundled together in single
jar file, then converted to bundle using bnd utility
Reporter: Hrvoje Habjanic
Assignee: Mark Proctor
Priority: Minor
Hi!
I have somewhat non-standard running environment - springsource sever. Because spring
requires everything to be provided as bundle, i created drools bundle. I unpacked
(extract) all drools jar-s except drools-clips, drools-jsr94 and drools-process-enterprise
into single directory, and then created one big jar. Then i converted this jar using bnd
utility to bundle. Because springsource uses older antlr, i did copy antlr-runtime-3.1.1
into bundle, to classes inside use this version.
In eclipse i created new project, and created helloworld sample. I did manage
successfully to execute RuleFlowTest! But, DroolsTest fails with:
[2009-02-26 17:18:35.245] server-dm-8
System.err E org.drools.runtime.rule.ConsequenceException:
java.lang.NullPointerException
[2009-02-26 17:18:35.245] server-dm-8
System.err E at
org.drools.runtime.rule.impl.DefaultConsequenceExceptionHandler.handleException(DefaultConsequenceExceptionHandler.java:23)
[2009-02-26 17:18:35.245] server-dm-8
System.err E at
org.drools.common.DefaultAgenda.fireActivation(DefaultAgenda.java:935)
[2009-02-26 17:18:35.245] server-dm-8
System.err E at
org.drools.common.DefaultAgenda.fireNextItem(DefaultAgenda.java:882)
[2009-02-26 17:18:35.246] server-dm-8
System.err E at
org.drools.common.DefaultAgenda.fireAllRules(DefaultAgenda.java:1072)
[2009-02-26 17:18:35.246] server-dm-8
System.err E at
org.drools.common.AbstractWorkingMemory.fireAllRules(AbstractWorkingMemory.java:616)
[2009-02-26 17:18:35.246] server-dm-8
System.err E at
org.drools.common.AbstractWorkingMemory.fireAllRules(AbstractWorkingMemory.java:583)
[2009-02-26 17:18:35.246] server-dm-8
System.err E at
org.drools.impl.StatefulKnowledgeSessionImpl.fireAllRules(StatefulKnowledgeSessionImpl.java:151)
[2009-02-26 17:18:35.246] server-dm-8
System.err E at com.sample.DroolsTest.main(DroolsTest.java:33)
[2009-02-26 17:18:35.246] server-dm-8
System.err E at com.sample.Runner.init(Runner.java:16)
[2009-02-26 17:18:35.247] server-dm-8
System.err E at sun.reflect.NativeMethodAccessorImpl.invoke0(Native
Method)
[2009-02-26 17:18:35.247] server-dm-8
System.err E at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
[2009-02-26 17:18:35.247] server-dm-8
System.err E at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
[2009-02-26 17:18:35.247] server-dm-8
System.err E at java.lang.reflect.Method.invoke(Method.java:597)
[2009-02-26 17:18:35.248] server-dm-8
System.err E at
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeCustomInitMethod(AbstractAutowireCapableBeanFactory.java:1414)
[2009-02-26 17:18:35.248] server-dm-8
System.err E at
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1375)
[2009-02-26 17:18:35.248] server-dm-8
System.err E at
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1335)
[2009-02-26 17:18:35.248] server-dm-8
System.err E at
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:473)
[2009-02-26 17:18:35.248] server-dm-8
System.err E at
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory$1.run(AbstractAutowireCapableBeanFactory.java:409)
[2009-02-26 17:18:35.248] server-dm-8
System.err E at java.security.AccessController.doPrivileged(Native
Method)
[2009-02-26 17:18:35.249] server-dm-8
System.err E at
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:380)
[2009-02-26 17:18:35.249] server-dm-8
System.err E at
org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:264)
[2009-02-26 17:18:35.249] server-dm-8
System.err E at
org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)
[2009-02-26 17:18:35.249] server-dm-8
System.err E at
org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:261)
[2009-02-26 17:18:35.250] server-dm-8
System.err E at
org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:185)
[2009-02-26 17:18:35.250] server-dm-8
System.err E at
org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:164)
[2009-02-26 17:18:35.250] server-dm-8
System.err E at
org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:429)
[2009-02-26 17:18:35.250] server-dm-8
System.err E at
org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:728)
[2009-02-26 17:18:35.251] server-dm-8
System.err E at
org.springframework.osgi.context.support.AbstractDelegatedExecutionApplicationContext.completeRefresh(AbstractDelegatedExecutionApplicationContext.java:288)
[2009-02-26 17:18:35.251] server-dm-8
System.err E at
org.springframework.osgi.extender.internal.dependencies.startup.DependencyWaiterApplicationContextExecutor$CompleteRefreshTask.run(DependencyWaiterApplicationContextExecutor.java:145)
[2009-02-26 17:18:35.252] server-dm-8
System.err E at
com.springsource.server.kernel.dm.ContextPropagatingTaskExecutor$2.run(ContextPropagatingTaskExecutor.java:82)
[2009-02-26 17:18:35.252] server-dm-8
System.err E at
java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
[2009-02-26 17:18:35.252] server-dm-8
System.err E at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
[2009-02-26 17:18:35.253] server-dm-8
System.err E at java.lang.Thread.run(Thread.java:619)
[2009-02-26 17:18:35.253] server-dm-8
System.err E Caused by: java.lang.NullPointerException
[2009-02-26 17:18:35.254] server-dm-8
System.err E at
org.drools.common.DefaultAgenda.fireActivation(DefaultAgenda.java:926)
[2009-02-26 17:18:35.254] server-dm-8
System.err E ... 31 more
Drools file which is executed is:
package com.sample
import com.sample.DroolsTest.Message;
rule "Hello World"
when
m : Message( status == Message.HELLO, message : message )
then
System.out.println( "Ssssss" );
m.setMessage( "Goodbye cruel world" );
m.setStatus( Message.GOODBYE );
update( m );
end
rule "GoodBye"
when
Message( status == Message.GOODBYE, message : message )
then
System.out.println( message );
end
And DroolsTest java is also unmodified:
package com.sample;
import org.drools.KnowledgeBase;
import org.drools.KnowledgeBaseFactory;
import org.drools.builder.KnowledgeBuilder;
import org.drools.builder.KnowledgeBuilderError;
import org.drools.builder.KnowledgeBuilderErrors;
import org.drools.builder.KnowledgeBuilderFactory;
import org.drools.builder.ResourceType;
import org.drools.io.ResourceFactory;
import org.drools.logger.KnowledgeRuntimeLogger;
import org.drools.logger.KnowledgeRuntimeLoggerFactory;
import org.drools.runtime.StatefulKnowledgeSession;
/**
* This is a sample class to launch a rule.
*/
public class DroolsTest {
public static final void main(String[] args) {
try {
// load up the knowledge base
KnowledgeBase kbase = readKnowledgeBase();
StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
KnowledgeRuntimeLogger logger = KnowledgeRuntimeLoggerFactory.newFileLogger(ksession,
"test");
// go !
Message message = new Message();
message.setMessage("Hello World");
message.setStatus(Message.HELLO);
ksession.insert(message);
ksession.fireAllRules();
logger.close();
} catch (Throwable t) {
t.printStackTrace();
}
}
private static KnowledgeBase readKnowledgeBase() throws Exception {
KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
kbuilder.add(ResourceFactory.newClassPathResource("Sample.drl"),
ResourceType.DRL);
KnowledgeBuilderErrors errors = kbuilder.getErrors();
if (errors.size() > 0) {
for (KnowledgeBuilderError error: errors) {
System.err.println(error);
}
throw new IllegalArgumentException("Could not parse knowledge.");
}
KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
kbase.addKnowledgePackages(kbuilder.getKnowledgePackages());
return kbase;
}
public static class Message {
public static final int HELLO = 0;
public static final int GOODBYE = 1;
private String message;
private int status;
public String getMessage() {
return this.message;
}
public void setMessage(String message) {
this.message = message;
}
public int getStatus() {
return this.status;
}
public void setStatus(int status) {
this.status = status;
}
}
}
I did try to browse trough source and try to find out what the problem could be, but at
no avail.
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
https://jira.jboss.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
http://www.atlassian.com/software/jira