Check the example here: 
https://github.com/droolsjbpm/drools/tree/master/drools-examples-cdi/cdi-example

Follow that structure


On Sun, May 25, 2014 at 3:29 PM, Natalia Iglesias de Amunategui <natalia.iglesias@casadearriba.net> wrote:

Hello,

I had already tried  something like that by changing  the packages field in the kmodule file into packages=”rules” as this is the directory where the VAP.drl file resides. But I still get a null pointer exception when executing the container verify, although I do not see a warning anymore:

 

 

The error comes from the line 36 (container verify):

 

System.out.println(kContainer.verify().getMessages().toString());

 

 

I am running out of ideas, I also thought that it maybe has something to do with maven as I have read that drools 601 expects a maven structure, so I definitely needs a pom.properties. I have a pom.properties but is has no content, only this:

 

version=${project.version}

groupId=${project.groupId}

artifactId=${project.artifactId}

 

Thanks!

 

De: rules-users-bounces@lists.jboss.org [mailto:rules-users-bounces@lists.jboss.org] En nombre de Mauricio Salatino
Enviado el: domingo, 25 de mayo de 2014 16:18
Para: Rules Users List
Asunto: Re: [rules-users] Drools 601 kmodule problem when running the drools project in eclipse kepler ide

 

Try creating a directory called: InfectionRules inside the src/main/resources/

and then put the rules inside there.

 

On Sun, May 25, 2014 at 3:04 PM, Natalia Iglesias de Amunategui <natalia.iglesias@casadearriba.net> wrote:

Hello,

 

I am currently working on a Drools project using eclipse kepler and the drools plug-in from drools 601.

 

I have a main java class that contains POJO classes representing facts and the initialization of the kie container and session. When executing the command System.out.println(kContainer.verify().getMessages().toString()); I get the following messages:(note the warning “No files found for KieBase InfectionRules, searching folder…”)

 

[main] INFO org.drools.compiler.kie.builder.impl.ClasspathKieProject - Found kmodule: file:/C:/TFM/Infections/Workspace/InfectionRules/VAP/target/META-INF/kmodule.xml

 

[main] INFO org.drools.compiler.kie.builder.impl.KieRepositoryImpl - KieModule was added:FileKieModule[ ReleaseId=${project.groupId}:${project.artifactId}:${project.version}file=\TFM\Infections\Workspace\InfectionRules\VAP\target]

 

[main] INFO org.drools.compiler.kie.builder.impl.ClasspathKieProject - Found kmodule: file:/C:/TFM/Infections/Workspace/InfectionRules/VAP/target/META-INF/kmodule.xml

 

[main] INFO org.drools.compiler.kie.builder.impl.KieRepositoryImpl - KieModule was added:FileKieModule[ ReleaseId=${project.groupId}:${project.artifactId}:${project.version}file=\TFM\Infections\Workspace\InfectionRules\VAP\target]

 

[main] WARN org.drools.compiler.kie.builder.impl.AbstractKieModule - No files found for KieBase InfectionRules, searching folder \TFM\Infections\Workspace\InfectionRules\VAP\target

[]

java.lang.NullPointerException

       at InfectionRules.VAPDroolsTest.main(VAPDroolsTest.java:62)

 

The kie initialization module has the following code:

 

package InfectionRules;

 

import java.util.*;

import java.util.concurrent.TimeUnit;

import java.text.DateFormat;

import java.text.SimpleDateFormat;

 

import org.drools.core.time.*;

import org.kie.internal.*;

 

 

import org.kie.api.conf.EventProcessingOption;

import org.kie.api.runtime.KieRuntime;

import org.kie.api.KieBaseConfiguration;

import org.kie.api.KieServices;

import org.kie.api.runtime.KieContainer;

import org.kie.api.runtime.KieSession;

import org.kie.api.runtime.KieSessionConfiguration;

import org.kie.api.runtime.conf.ClockTypeOption;

import org.kie.api.runtime.rule.EntryPoint;

import org.kie.api.runtime.rule.FactHandle;

import org.kie.api.time.SessionClock;

 

 

public static void main(final String[] args) {

        try {

           

              

            // load up the knowledge base

              KieServices ks = KieServices.Factory.get();

              KieContainer kContainer = ks.getKieClasspathContainer();

              System.out.println(kContainer.verify().getMessages().toString());

             KieSession kSession = kContainer.newKieSession("VAPSession");

            

             // set clock to pseudo clock to be able to advance it manually

             KieSessionConfiguration ksconf = KieServices.Factory.get().newKieSessionConfiguration();

             ksconf.setOption(ClockTypeOption.get("pseudo"));

            

             SessionPseudoClock clock = kSession.getSessionClock();

            

             // set stream mode as opposite to cloud mode

             KieBaseConfiguration config = KieServices.Factory.get().newKieBaseConfiguration();

             config.setOption(EventProcessingOption.STREAM );

   

             // Insert test patients and related classes

             // mr Jones has no VAP, so the cpi score is less than 6

             final Patient p1 = new Patient( "MrJones", 45, 1, false,false,true,37.0,

             5000,"None","No Infiltrate","None","No Growth","S.Aureus",235,true, false, 0,

             true,new SimpleDateFormat("yyyy-MM-dd").parse("2014-05-17"),"",

             new SimpleDateFormat("yyyy-MM-dd").parse("2014-05-17"),false,false,false,false);

       

              kSession.insert( p1 );

                          

             // get a reference to the entry point and insert events

             EntryPoint nursingStream = kSession.getEntryPoint( "NursingStream" );

             

             final CPIScore cpiScore1 = new CPIScore( p1,"initial",7);

             nursingStream.insert( cpiScore1 );

           

             clock..advanceTime( 75, TimeUnit.HOURS );

             final CPIScore cpiScore2 = new CPIScore( p1,"3days",7 );

             nursingStream...insert( cpiScore2 );

 

I am running this class directly from the Eclipse Run menu option. I have installed maven but I’m not using it (yet)

 

The kmodule.xml file has the following format:

 

<?xml version="1.0" encoding="UTF-8"?>

<kmodule xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

              xmlns="http://jboss.org/kie/6.0.0/kmodule">

    <kbase name="InfectionRules" eventProcessingMode="stream"  packages="InfectionRules">

        <ksession name="VAPSession" type="stateful" clockType="pseudo" />

    </kbase>

</kmodule>

 

(I have tried to change the packages field of kmodule to *, but it does not work either.)

 

And the directory structure where both the java and drl code reside is:

 

C:\TFM\Infections\Workspace\InfectionRules\VAP\src\main

Subdirectory java contains the java classes and resources the drl file.

The target directory is located under ..\VAP\target\ with the following structure:

 

 

From Eclipse IDE this is the project structure

 

 

Any idea as to what I’m doing wrong? I don´t know why the kmodule does not locate the kbase in the directory \TFM\Infections\Workspace\InfectionRules\VAP\target as this directory contains the drl file vap.drl in the rules subdirectory. Although I get later a null pointer exception, I guess that it has to do with this warning, as if there is no kbase located no session can be used.

 

Thanks in advance!

 

Best regards

Natalia

 

 

 

 


Este mensaje no contiene virus ni malware porque la protección de avast! Antivirus está activa.

 


_______________________________________________
rules-users mailing list
rules-users@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users



 

--

 - MyJourney @ http://salaboy.com

 - Co-Founder @ http://www.jugargentina.org
 - Co-Founder @ http://www.jbug.com.ar
 
 - Salatino "Salaboy" Mauricio -




Este mensaje no contiene virus ni malware porque la protección de avast! Antivirus está activa.



_______________________________________________
rules-users mailing list
rules-users@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users



--
 - MyJourney @ http://salaboy.com
 - Co-Founder @ http://www.jugargentina.org
 - Co-Founder @ http://www.jbug.com.ar
 
 - Salatino "Salaboy" Mauricio -