[rules-users] Very basic running of drools 5, basic setup and quickstart

Berlin Brown berlin.brown at gmail.com
Wed Apr 21 01:54:05 EDT 2010


Is there a more comprehensive quick start for drools 5.  I was attempting to
run the simple Hello World .drl rule but I wanted to do it through an ant
script, possibly with just javac/java:

I get the following error:  Note: I don't am running completely without
Eclipse or any other IDE:

test:
     [java] Exception in thread "main" org.drools.RuntimeDroolsException:
Unable to load d
ialect
'org.drools.rule.builder.dialect.java.JavaDialectConfiguration:java:org.drools.rule
.builder.dialect.java.JavaDialectConfiguration'
     [java]     at
org.drools.compiler.PackageBuilderConfiguration.addDialect(PackageBuild
erConfiguration.java:274)
     [java]     at
org.drools.compiler.PackageBuilderConfiguration.buildDialectConfigurati
onMap(PackageBuilderConfiguration.java:259)
     [java]     at
org.drools.compiler.PackageBuilderConfiguration.init(PackageBuilderConf
iguration.java:176)
     [java]     at
org.drools.compiler.PackageBuilderConfiguration.<init>(PackageBuilderCo
nfiguration.java:153)
     [java]     at
org.drools.compiler.PackageBuilder.<init>(PackageBuilder.java:242)
     [java]     at
org.drools.compiler.PackageBuilder.<init>(PackageBuilder.java:142)
     [java]     at
org.drools.builder.impl.KnowledgeBuilderProviderImpl.newKnowledgeBuilde
r(KnowledgeBuilderProviderImpl.java:29)
     [java]     at
org.drools.builder.KnowledgeBuilderFactory.newKnowledgeBuilder(Knowledg
eBuilderFactory.java:29)
     [java]     at org.berlin.rpg.rules.Rules.rules(Rules.java:33)
     [java]     at org.berlin.rpg.rules.Rules.main(Rules.java:73)
     [java] Caused by: java.lang.RuntimeException: The Eclipse JDT Core jar
is not in the
classpath
     [java]     at
org.drools.rule.builder.dialect.java.JavaDialectConfiguration.setCompil
er(JavaDialectConfiguration.java:94)
     [java]     at
org.drools.rule.builder.dialect.java.JavaDialectConfiguration.init(Java
DialectConfiguration.java:55)
     [java]     at
org.drools.compiler.PackageBuilderConfiguration.addDialect(PackageBuild
erConfiguration.java:270)
     [java]     ... 9 more
     [java] Java Result: 1

...
...

I do include the following libraries with my javac and java target:

 <path id="classpath">
     <pathelement location="${lib.dir}" />
     <pathelement location="${lib.dir}/drools-api-5.0.1.jar" />
     <pathelement location="${lib.dir}/drools-compiler-5.0.1.jar" />
     <pathelement location="${lib.dir}/drools-core-5.0.1.jar" />
     <pathelement location="${lib.dir}/janino-2.5.15.jar" />
 </path>

Here is the Java code that is throwing the error.  I commented out the
java.compiler code, that didn't work either.

    public void rules() {

        /*
        final Properties properties = new Properties();
        properties.setProperty( "drools.dialect.java.compiler", "JANINO" );

        PackageBuilderConfiguration cfg = new PackageBuilderConfiguration(
properties );
        JavaDialectConfiguration javaConf = (JavaDialectConfiguration)
        cfg.getDialectConfiguration( "java" );
        */
        final KnowledgeBuilder kbuilder =
KnowledgeBuilderFactory.newKnowledgeBuilder();

        // this will parse and compile in one step
        kbuilder.add(ResourceFactory.newClassPathResource("HelloWorld.drl",
Rules.class), ResourceType.DRL);

        // Check the builder for errors
        if (kbuilder.hasErrors()) {
            System.out.println(kbuilder.getErrors().toString());
            throw new RuntimeException("Unable to compile
\"HelloWorld.drl\".");
        }

        // Get the compiled packages (which are serializable)
        final Collection<KnowledgePackage> pkgs =
kbuilder.getKnowledgePackages();

        // Add the packages to a knowledgebase (deploy the knowledge
packages).
        final KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
        kbase.addKnowledgePackages(pkgs);

        final StatefulKnowledgeSession ksession =
kbase.newStatefulKnowledgeSession();
        ksession.setGlobal("list", new ArrayList<Object>());

        ksession.addEventListener(new DebugAgendaEventListener());
        ksession.addEventListener(new DebugWorkingMemoryEventListener());

        // Setup the audit logging
        KnowledgeRuntimeLogger logger =
KnowledgeRuntimeLoggerFactory.newFileLogger(ksession, "log/helloworld");

        final Message message = new Message();
        message.setMessage("Hello World");
        message.setStatus(Message.HELLO);
        ksession.insert(message);

        ksession.fireAllRules();
        logger.close();
        ksession.dispose();
    }

...

Here I don't think Ant is relevant because I have fork set to true:

 <target name="test" depends="compile">
     <java classname="org.berlin.rpg.rules.Rules" fork="true">
         <classpath refid="classpath.rt" />
         <classpath>
             <pathelement location="${basedir}" />
             <pathelement location="${build.classes.dir}" />
         </classpath>
     </java>
 </target>



The error is thrown at line 1.

Basically, I haven't done anything except call

final KnowledgeBuilder kbuilder =
KnowledgeBuilderFactory.newKnowledgeBuilder();

I am running with Windows XP, Java6, and within Ant.1.7.





-- 
Berlin Brown (berlin dot brown at gmail.com)
http://botnode.com
http://berlinbrowndev.blogspot.com/
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.jboss.org/pipermail/rules-users/attachments/20100421/eb44c2bb/attachment.html 


More information about the rules-users mailing list