业务规则的jBPM流程
问题描述:
我从Jbpm的过程执行业务规则只执行一次,规则很简单:业务规则的jBPM流程
package com.test.flow;
rule "sample"
ruleflow-group "test"
when
then
System.out.println("Hello World");
end
但是,我不无原因,这一规则只执行一次,实例中,我运行了一个新的进程实例,并在jbpm控制台中打印“Hello World”,但是当我运行该进程的第二个实例时不再打印“Hello World”,有人能帮助我吗?或者说为什么会发生这种情况?
答
对于这种“你好,世界”的规则,使用规则流组是最有可能只是造成混乱。你是否控制这个组被激活?怎么样? - 指示省略此规则属性。
一个空的左边的规则只会在会话中执行一次(正如Esteban指出的那样)。
如果你想为每个插入的事实触发一次规则,请使用
rule "new fact"
when
Object()
then
System.out.println("new fact inserted");
end
+0
Hi @laune,非常感谢你的回复和提示,是的,你和Esteban是对的,我的请求是在一个唯一的会话中运行,因为jbpm项目设置为“SINGLETON”我将其更改为“PER_PROCESS_INSTANCE”,而我解决了我的问题。非常感谢双方的回复。 –
是否使用同一个会话的所有流程实例?如果您为每个实例使用单独的会话会发生什么? –
感谢您的回复,我不舒服,我正在使用Java Remote API,并且每次拨打电话时,我都会创建一个'RuntimeEngine engine = RemoteRuntimeEngineFactory.newRestBuilder()。addUrl(baseUrl)...'以获得一个新的KieSession 'engine.getKieSession()'并启动进程,如果我从jbpm-console web执行该操作,则运行一个新实例会发生相同的情况。 –
@EstebanAliverti非常感谢!我找到了解决方案,你是对的,问题是会话,但不是在我的代码,否则在jbpm项目的配置,我没有配置“项目编辑器”“部署描述符”我改变了值“运行时策略“对于”PER_REQUEST“或”PER_PROCESS_INSTANCE“是”SINGLETON“,我解决了这个问题。 非常感谢! –