我无法从jbpm业务规则任务中触发规则。似乎找不到进程规则文件。试着解释一下。
进程Test.java简单的设置Message和启动进程:
package com.sample;
import org.kie.api.KieServices;
import org.kie.api.runtime.KieContainer;
import org.kie.api.runtime.KieSession;
import com.sample.DroolsTest.Message;
/**
* This is a sample file to launch a process.
*/
public class ProcessTest {
public static final void main(String[] args) {
try {
// load up the knowledge base
KieServices ks = KieServices.Factory.get();
KieContainer kContainer = ks.getKieClasspathContainer();
KieSession kSession = kContainer.newKieSession("ksession-process");
// go !
Message message = new Message();
message.setMessage("Hello Giorgio");
message.setStatus(Message.HELLO);
kSession.insert(message);
// start a new process instance
kSession.startProcess("com.sample.bpmn.hello");
} catch (Throwable t) {
t.printStackTrace();
}
}
}
然后,我运行并正确触发脚本任务(“Hello world”),但在RuleGroup1中找不到规则。drl:
//created on: 21-gen-2019
package com.sample
//list any import classes here.
import com.sample.DroolsTest.Message;
//declare any global variables here
rule "First Giorgio rule"
ruleflow-group "Group1"
when
m : Message( status == Message.HELLO, myMessage : message )
then
System.out.println( "rule0 Group1" );
end
rule "Your First Rule"
ruleflow-group "Group1"
when
//conditions
then
System.out.println( "rule1 Group1" );
end
rule "Your Second Rule"
ruleflow-group "Group1"
//include attributes such as "salience" here...
when
//conditions
then
System.out.println( "rule2 Group1" );
end
跟踪项目文件夹:
谢谢你的帮助。
我决定添加一个会话。fireAllRules()并将流程和规则文件存储在同一个包中。
>
修改kmodule.xml以添加ktext名称"进程规则":
<?xml version="1.0" encoding="UTF-8"?>
<kmodule xmlns="http://jboss.org/kie/6.0.0/kmodule">
<kbase name="rules" packages="rules">
<ksession name="ksession-rules"/>
</kbase>
<kbase name="dtables" packages="dtables">
<ksession name="ksession-dtables"/>
</kbase>
<kbase name="process" packages="process">
<ksession name="ksession-process"/>
</kbase>
<kbase name="processrules" packages="processrules">
<ksession name="ksession-processrules"/>
</kbase>
</kmodule>
确保规则文件和流程文件位于同一文件夹中。最重要的是,确保规则文件中声明的包与包含它的目录名以及kmodule中的包声明一致。xml。如果它们不同步,您最终将无法取消规则。检查此示例项目。在jBPM中使用Drools规则
我刚开始流口水,遇到了一个问题。 我简化了规则以显示问题: 基本上,我想计算特定路段上发生的事件(路段是道路的一部分)。当同一链接上发生3个事件时,我希望触发规则。 上面的规则几乎起作用了,但是当它发射时,它发射了3次,每个事件发射一次。我只希望它发射一次。 我错过了什么? 非常感谢。
我不太会流口水和咕噜。 我有一个关于规则流的基本问题。 我在guvnor插件上使用引导编辑器创建了3条规则。现在我想根据第一条规则的结果调用第二条或第三条规则。 e、 g.如果患者年龄小于18岁,则进行第二条规则的小检查,否则请调用第三条规则由高级医生进行检查。 那么,这可以通过使用规则流来实现吗?如果是,如何?是否有任何示例链接和文档来演示它?非常感谢您的帮助。 谢啦
我有一个drl文件,它在两个规则流组中包含规则:“第一个规则流组”和“第二个规则流组”。这些组的激活取决于“规则A”和“规则B”。是否有任何方法可以停用规则B,以便在规则A条件匹配时触发,从而仅将焦点设置为“第一个规则流组”?
我的要求是,触发第二条规则,然后停止进程而不触发第三条规则
我正在进行drools fusion 6.2决赛,希望在流模式下发生新事件时触发规则。但规则本身并没有遭到抨击。 我的规则文件内容如下: 代码如下: 故意调用规则时会触发规则,但如果流中出现新事件,则无法触发规则。
我有flink stream,我在某个时间窗口上计算一些事情,比如说30秒。 这里发生的事情是,它给我的结果,我以前的窗口聚合以及。 假设前30秒我得到结果10。 接下来的三十秒我想要新的结果,而不是我得到最后一个窗口的结果新的等等。 因此,我的问题是如何为每个窗口获得新的结果。