jBPM с ошибкой eclipse java.lang.RuntimeException

Я пытаюсь создать процесс с помощью jBPM, я использую сервер Jboss 7.1, я установил плагин jbpm для eclipse Kepler и добавил jar-файлы. Теперь я создаю простой проект hello world, но всегда получаю ошибку:

java.lang.RuntimeException: RuntimeManagerFactory was not initialized, see previous errors
    at org.kie.api.runtime.manager.RuntimeManagerFactory$Factory.get(RuntimeManagerFact     ory.java:112)
 at org.jbpm.test.JbpmJUnitBaseTestCase.<init>   (JbpmJUnitBaseTestCase.java:119)
    at org.jbpm.test.JbpmJUnitBaseTestCase.<init>    (JbpmJUnitBaseTestCase.java:157)
    at com.sample.ProcessTest.<init>(ProcessTest.java:54)
 at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)

Любая помощь, пожалуйста?

это основной код:

import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
 import org.jbpm.test.JBPMHelper;
import org.kie.api.KieBase;
 import org.kie.api.KieServices;
import org.kie.api.runtime.KieContainer;
import org.kie.api.runtime.KieSession; 
import org.kie.api.runtime.manager.RuntimeEngine;
import org.kie.api.runtime.manager.RuntimeEnvironmentBuilder;
import org.kie.api.runtime.manager.RuntimeManager;
import org.kie.api.runtime.manager.RuntimeManagerFactory;
import org.kie.api.task.TaskService;
import org.kie.api.task.model.TaskSummary;

public class ProcessMain {

public static void main(String[] args) {
    KieServices ks = KieServices.Factory.get();
    KieContainer kContainer = ks.getKieClasspathContainer();
    KieBase kbase = kContainer.getKieBase("kbase");

    RuntimeManager manager = createRuntimeManager(kbase);
    RuntimeEngine engine = manager.getRuntimeEngine(null);
    KieSession ksession = engine.getKieSession();
    TaskService taskService = engine.getTaskService();

    ksession.startProcess("com.sample.bpmn.hello");

    // let john execute Task 1
    List<TaskSummary> list = taskService.getTasksAssignedAsPotentialOwner("john", "en-UK");
    TaskSummary task = list.get(0);
    System.out.println("John is executing task " + task.getName());
    taskService.start(task.getId(), "john");
    taskService.complete(task.getId(), "john", null);

    // let mary execute Task 2
    list = taskService.getTasksAssignedAsPotentialOwner("mary", "en-UK");
    task = list.get(0);
    System.out.println("Mary is executing task " + task.getName());
    taskService.start(task.getId(), "mary");
    taskService.complete(task.getId(), "mary", null);

    manager.disposeRuntimeEngine(engine);
    System.exit(0);
}

private static RuntimeManager createRuntimeManager(KieBase kbase) {
    JBPMHelper.startH2Server();
    JBPMHelper.setupDataSource();
    EntityManagerFactory emf = Persistence.createEntityManagerFactory("org.jbpm.persistence.jpa");
    RuntimeEnvironmentBuilder builder = RuntimeEnvironmentBuilder.Factory.get()
        .newDefaultBuilder().entityManagerFactory(emf)
        .knowledgeBase(kbase);
    return RuntimeManagerFactory.Factory.get()
        .newSingletonRuntimeManager(builder.get(), "com.sample:example:1.0");
}

  }

person sad    schedule 29.05.2015    source источник
comment
Можете ли вы показать, как вы получаете RuntimeManager или полный пример, который генерирует ошибку?   -  person Bruno César    schedule 29.05.2015
comment
Я обновляю свой вопрос и показываю основной код   -  person sad    schedule 29.05.2015


Ответы (1)


У меня была такая же проблема, и я ее решил!

Если вы заметили RuntimeEnvironmentBuilder исходный код, вы заметите, что метод Factory.get () выдает ошибку, которую вы получаются, если экземпляр RuntimeEnvironmentBuilderFactory имеет значение null!

Но как создать этот экземпляр? Он использует этот класс org.jbpm.runtime.manager.impl.RuntimeEnvironmentBuilder. Так как у вас нет этого класса в вашем пути к классам, экземпляр не может быть создан и остается пустым.

Вы можете найти этот класс в jbpm-runtime-manager-6.4.0.Final.jar или в любой другой банке по вашему выбору.

Надеюсь это поможет!

person Philippe Simo    schedule 10.05.2016