【问题标题】:jBPM with eclipse error java.lang.RuntimeExceptionjBPM 与 Eclipse 错误 java.lang.RuntimeException
【发布时间】:2015-05-29 10:58:58
【问题描述】:

我正在尝试使用 jBPM 创建一个进程,我正在使用 Jboss 7.1 服务器,我为 eclipse Kepler 安装了 jbpm 插件,并添加了 jars。现在我创建了一个简单的 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");
}

  }

【问题讨论】:

  • 您能否说明您是如何获得RuntimeManager 或生成错误的完整示例?
  • 我更新我的问题并显示主要代码

标签: eclipse jboss jbpm


【解决方案1】:

我遇到了同样的问题,我解决了!

如果您关注 RuntimeEnvironmentBuilder source code ,您会注意到如果 RuntimeEnvironmentBuilderFactory的实例,方法 Factory.get() 会抛出您遇到的错误> 为空!

但是它是如何构造那个实例的呢? 它使用这个类 org.jbpm.runtime.manager.impl.RuntimeEnvironmentBuilder 因此,由于您的类路径中没有此类,因此无法构造实例并保持为空。

您可以在 jbpm-runtime-manager-6.4.0.Final.jar 或您选择的任何其他 jar 中找到此类。

希望这会有所帮助!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-12-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-25
    • 1970-01-01
    • 1970-01-01
    • 2015-06-25
    相关资源
    最近更新 更多