Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 配置knowledgebase对象上的Drools执行_Java_Drools_Rule Engine - Fatal编程技术网

Java 配置knowledgebase对象上的Drools执行

Java 配置knowledgebase对象上的Drools执行,java,drools,rule-engine,Java,Drools,Rule Engine,假设我添加了一些对象 {O1,O2,O3} 规则 {R1,R2,R3} 在我的知识库中 当我启动所有规则时,执行顺序如下: R1 <on> O1 R1 <on> O2 R1 <on> O3 R2 <on> O1 R2 <on> O2 R2 <on> O3 R3 <on> O1 (add to passed object cache) R3 <on> O2 (add to passed object

假设我添加了一些对象

{O1,O2,O3}

规则

{R1,R2,R3}

在我的知识库中

当我启动所有规则时,执行顺序如下:

R1 <on> O1
R1 <on> O2
R1 <on> O3

R2 <on> O1
R2 <on> O2
R2 <on> O3

R3 <on> O1 (add to passed object cache)
R3 <on> O2 (add to passed object cache)
R3 <on> O3 (add to passed object cache)
r1o1
R1氧
R1-O3
r2o1
R2 O2
R2 O3
R3 O1(添加到已传递的对象缓存)
R3 O2(添加到已传递的对象缓存)
R3 O3(添加到已传递的对象缓存)
这意味着直到最后一个循环,我才能将传递的对象放入缓存

如何将执行顺序更改为:

R1 <on> O1
R2 <on> O1
R3 <on> O1 (add to passed object cache)

R1 <on> O2
R2 <on> O2
R3 <on> O2 (add to passed object cache)

R1 <on> O3
R2 <on> O3
R3 <on> O3 (add to passed object cache)
r1o1
r2o1
R3 O1(添加到已传递的对象缓存)
R1氧
R2 O2
R3 O2(添加到已传递的对象缓存)
R1-O3
R2 O3
R3 O3(添加到已传递的对象缓存)
来自:

作为一般规则,最好不要指望规则以任何特定顺序触发,并且编写规则而不必担心“流”


即使是你看到的执行命令也不能保证。这个例子似乎是关于命令式控制的,意思是“先做这个,然后做这个,然后把对象放在某个地方。”规则引擎对于这项工作来说是错误的工具,像Java这样的编程语言更适合于对循环等进行精细控制。

您是否尝试过逐个插入对象并调用fireAllRules()每次插入后?对象Ox类中是否有任何东西(我假设所有对象都属于同一类)决定了O1