Это ядро работает, если я пытаюсь вызывать только правила из KIE Workbench .... ИТ, уволяющие правила, с которыми все работает, процесс. Когда я пытаюсь вызвать JBPM-процесс с помощью newKieSession.StartProcess («*** Process Name»); * Im получает эту ошибку. Кто-то пожалуйста, помогите ....Получение ошибки при вызове JBPM процесса с KIE workbech в локальном хосте .. Но правила, вызывающие и срабатывающие, работают нормально
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-генерироваться метод заглушки // даже без версий -snapshot
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");
}*/
Строка UserPassword = "админ: админ";
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();
// Инициирование POJO, на котором вы хотите определить правила, как Сотрудника emp1 = новый сотрудник (2, "А1", 5001); //emp1.setId(1); //emp1.setName("Amba "); //emp1.setSalary (1 000);
//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");
}
}
* Ошибка *
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
**** **** Фактическая ошибка Исключение в потоке "основного" java.lang.NullPointerException на org.drools.core. impl.StatefulKnowledgeSessionImpl.startProcess (StatefulKnowledge SessionImpl.java:1896) в com.sample.DroolsTest.main (DroolsTest.java:152)
попробуйте [** отладить его **] (http://docs.oracle.com/middleware/1212/jdev/jdev-testdebug.htm) – xmojmr