我已经使用服务任务定义了一个进程,除了这种情况之外它工作得很好,当它有一个正在运行的任务时,我重启我的程序然后它会抛出这个异常。这是我的代码:
EntityManagerFactory emf = Persistence.createEntityManagerFactory("org.jbpm.persistence.jpa");
kBuilder = RuntimeEnvironmentBuilder.Factory.get().newDefaultBuilder();
kBuilder.entityManagerFactory(emf);
try {
addAsset(resources);
DBUserGroupCallbackImpl callback = new DBUserGroupCallbackImpl(props);
setUserGroupCallback(callback);
runtimeManager = RuntimeManagerFactory.Factory.get().newSingletonRuntimeManager(kBuilder.get());
runtime = runtimeManager.getRuntimeEngine(EmptyContext.get());
} catch (RuntimeException e) {
logger.warn(e.getMessage());
}
当我调试过程时,我发现:
runtimeManager = RuntimeManagerFactory.Factory.get().newSingletonRuntimeManager(kBuilder.get());
此行抛出异常,我想知道为什么?它是如何发生的?
PS:我使用mysql作为持久性 请参阅错误here。
答案 0 :(得分:0)
最后我发现这是因为我注册了服务任务的工作处理程序,当进程运行时它会稍后注册工作处理程序,但是当系统重新启动时,工作处理程序不会立即注册,所以它将抛出此异常,这是我的代码,当它重新启动时,我立即注册工作处理程序。
ServicesInstance.jbpmService.registerWorkItemHandler(“SendAlarmProcess”,new AutoServiceImpl());