-2

This core works if i try to call the Rules alone from KIE Workbench.... ITs firing the rules everything is working with-out Process. When i try to call the JBPM Process with newKieSession.StartProcess("***Process Name");* Im getting this error. Somebody please help....

  package com.sample;

    import java.io.IOException;
       import java.io.InputStream;
     import java.net.HttpURLConnection;
       import java.net.URL;
   import java.util.ArrayList;
     import java.util.List;
      import java.util.Scanner;

    import org.drools.compiler.kproject.ReleaseIdImpl;
      import org.drools.core.event.DebugAgendaEventListener;
    import org.drools.core.event.DebugRuleRuntimeEventListener;
      import org.drools.core.io.impl.UrlResource;
        import org.drools.core.marshalling.impl.ProtobufMessages.KnowledgeBase;
import org.kie.api.KieBase;
  import org.kie.api.KieBaseConfiguration;
   import org.kie.api.KieServices;
     import org.kie.api.builder.KieModule;
    import org.kie.api.builder.KieRepository;
 import org.kie.api.builder.KieScanner;
   import org.kie.api.cdi.KSession;
import org.kie.api.conf.EventProcessingOption;
  import org.kie.api.runtime.KieContainer;
  import org.kie.api.runtime.KieRuntime;
   import org.kie.api.runtime.KieSession;
   import org.kie.api.runtime.KieSessionConfiguration;
   import org.kie.api.runtime.StatelessKieSession;
     import org.kie.internal.KnowledgeBaseFactory;
    import org.kie.internal.agent.KnowledgeAgent;
   import org.kie.internal.agent.KnowledgeAgentConfiguration;
  import org.kie.internal.agent.KnowledgeAgentFactory;
   import org.kie.internal.command.CommandFactory;
    import org.kie.internal.io.ResourceFactory;
       import org.kie.internal.runtime.StatefulKnowledgeSession;
    import com.thoughtworks.xstream.core.util.Base64Encoder;

    public class DroolsTest {

    public static void main(String[] args)throws IOException {

// TODO Auto-generated method stub // works even without -SNAPSHOT versions

    ReleaseIdImpl releaseId = new ReleaseIdImpl("Release ID with all the details** Version, Artifact and GroupID ");

    KieServices ks = KieServices.Factory.get();

    ks.getResources().newUrlResource(url);

    KieContainer kieContainer = ks.newKieContainer(releaseId);

    // check every 5 seconds if there is a new version at the URL
    KieScanner kieScanner = ks.newKieScanner(kieContainer);
    kieScanner.start(5000L);
    // alternatively:
    // kieScanner.scanNow();

    Scanner scanner = new Scanner(System.in);
    while (true) {
        runRule(kieContainer);
        System.out.println("Press enter in order to run the test        again....");
        scanner.nextLine();
    }
   }

     private static void runRule(KieContainer kieKontainer) {
    StatelessKieSession kSession =        kieKontainer.newStatelessKieSession("testSession");
    kSession.setGlobal("out", System.out);
    kSession.execute("testRuleAgain");
   }*/

String userpassword = "admin:admin";

 String url = "http://localhost:8989/jbpm-console/maven2/com/****Project in     KIE work bench";


  HttpURLConnection httpURLConnection = (HttpURLConnection)new     URL(url).openConnection();

  String authEnc = new Base64Encoder().encode(userpassword.getBytes());
  httpURLConnection.setRequestProperty("Authorization", "Basic "+ authEnc);
  KieServices ks = KieServices.Factory.get();
 KieRepository kr = ks.getRepository();
  InputStream is = httpURLConnection.getInputStream();
  KieModule kModule =      kr.addKieModule(ks.getResources().newInputStreamResource(is));

   KieSessionConfiguration conf= ks.newKieSessionConfiguration();

//Initiate POJO on which you want to define rule like Employee emp1 = new Employee(2,"A1",5001); //emp1.setId(1); //emp1.setName("Amba"); //emp1.setSalary(1000);

 //ReleaseIdImpl releaseId = new ReleaseIdImpl("com.agileidc.primed",    "Primed_Project", "1.0");
 System.out.println("Test");     


 KieContainer kieContainer = ks.newKieContainer(kModule.getReleaseId());

 //KieContainer kieContainer = ks.getKieClasspathContainer();
 System.out.println("Test");
 KieScanner kScanner = ks.newKieScanner(kieContainer);
 kScanner.start(10000L);  


/* KieContainer kContainer = ks.getKieClasspathContainer();
 KieSession kSession = kContainer.newKieSession();*/ 
 //StatelessKieSession kSession = kieContainer.newStatelessKieSession(    "TestingSession",conf);

    //kSession.setGlobal("out", System.out);
    //kSession.execute("TestRule");
    System.out.println("Before firing");
    KieSession newKieSession = kieContainer.newKieSession();

  //Insert into kieSession
 newKieSession.insert(emp1);
 Employee emp2 = new Employee(1,"A2",5000);
 //emp2.setId(1);
 //emp2.setName("Amba");
 //emp2.setSalary(1000);

 newKieSession.insert(emp2);

  emp2 = new Employee(1,"A3",5001);
 //emp2.setId(1);
 //emp2.setName("Amba");
 //emp2.setSalary(1000);

 newKieSession.insert(emp2);

 int result = newKieSession.fireAllRules();
 newKieSession.startProcess("Process1");

      System.out.println("Result => "+result+"Number of rules      fired="+result+"newKieSession.getFactCount()===>"+newKieSession.getFactCount());

 newKieSession.dispose();
 System.out.println("Finish");


  }

    }

*Error is *

  Before firing
       18:47:42.009 [main] WARN  o.d.c.k.b.impl.AbstractKieModule - No files found for KieBase defaultKieBase
         18:47:42.118 [main] DEBUG o.drools.core.impl.KnowledgeBaseImpl -  Starting Engine in PHREAK mode

****Actual Error**** Exception in thread "main" java.lang.NullPointerException at org.drools.core.impl.StatefulKnowledgeSessionImpl.startProcess(StatefulKnowledge SessionImpl.java:1896) at com.sample.DroolsTest.main(DroolsTest.java:152)

pnuts
  • 58,317
  • 11
  • 87
  • 139
JustCode
  • 41
  • 1
  • 12

1 Answers1

0

It seems your session doesn't have a process runtime, do you have all the necessary jbpm libraries on your classpath?

Kris Verlaenen
  • 2,918
  • 1
  • 15
  • 5
  • Yes, I have all the jbpm Libraries... aether-transport-http-1.0.0.v20140518.jar aether-transport-wagon-1.0.0.v20140518.jar aether-util-1.0.0.v20140518.jar ant-1.8.2.jar ant-launcher-1.8.2.jar antlr-runtime-3.5.jar aopalliance-1.0.jar cdi-api-1.0.jar commons-codec-1.4.jar commons-io-2.4.jar drools-templates-6.2.0.Final.jar ecj-4.3.1.jar guava-10.0.1.jar httpclient-4.2.6.jar httpcore-4.3.3.jar javax.inject-1.jar jcl-over-slf4j-1.6.2.jar jsoup-1.6.1.jar jsr250-api-1.0.jar jsr305-1.3.9.jar kie-api-6.2.0.Final.jar kie-ci-6.2.0.Final.jar kie-internal-6.2.0.Final.jar – JustCode Mar 25 '15 at 07:26
  • kie-internal-6.2.0.Final.jar logback-classic-1.1.2.jar logback-core-1.1.2.jar maven-aether-provider-3.2.2.jar maven-artifact-3.2.2.jar maven-compat-3.2.2.jar maven-core-3.2.2.jar maven-model-3.2.2.jar maven-model-builder-3.2.2.jar maven-plugin-api-3.2.2.jar maven-repository-metadata-3.2.2.jar maven-settings-3.2.2.jar maven-settings-builder-3.2.2.jar mvel2-2.2.4.Final.jar org.eclipse.sisu.inject-0.0.0.M5.jar org.eclipse.sisu.plexus-0.0.0.M5.jar plexus-cipher-1.4.jar plexus-classworlds-2.5.1.jar plexus-component-annotations-1.5.5.jar plexus-interpolation-1.19.jar plexus-sec-dispatcher-1.3.jar – JustCode Mar 25 '15 at 07:31
  • plexus-utils-3.0.17.jar poi-3.10.1.jar poi-ooxml-3.10.1.jar poi-ooxml-schemas-3.10.1.jar protobuf-java-2.5.0.jar sisu-guice-3.1.0-no_aop.jar slf4j-api-1.7.10.jar stax-api-1.0.1.jar wagon-http-2.0.jar wagon-http-shared4-2.0.jar wagon-provider-api-1.0.jar xml-apis-1.0.b2.jar xmlbeans-2.6.0.jar xmlpull-1.1.3.1.jar xpp3_min-1.1.4c.jar xstream-1.4.8.jar – JustCode Mar 25 '15 at 07:32