0
votes

I'm trying to create a process using jBPM, I'm using Jboss 7.1 server and I installed jbpm plugin for eclipse Kepler and I added jars. Now I create a simple hello world project but I got allways an error :

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)

Any help please ?

this is the main code :

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");
}

  }
1
Can you show how you're get RuntimeManager or the complete example that generates the error? - Bruno Ribeiro
I update my question and I show the main code - sad

1 Answers

1
votes

I had the same issue and i solved it!

If you get an eye on the RuntimeEnvironmentBuilder source code , you will notice that the method Factory.get() throws the error you are getting if an instance of RuntimeEnvironmentBuilderFactory is null!

But how does it construct that instance? It uses this class org.jbpm.runtime.manager.impl.RuntimeEnvironmentBuilder So because you do not have have this class in you classpath, the instance can't be constructed and remains null.

You can find this class in jbpm-runtime-manager-6.4.0.Final.jar or in any other jar of your choice.

Hope this helps!