在Drools规则中,如何使用两个不同的ArrayList对象,obj1用于规则1,obj2用于规则2?

在Drools规则中,如何使用两个不同的ArrayList对象,obj1用于规则1,obj2用于规则2?,list,object,rules,drools,List,Object,Rules,Drools,我正在执行ksession.insert(list),然后我必须在drl文件中激活规则1,然后在drl中激活ksession.insert(list)和规则2 有人能告诉我如何做到这一点吗。我读过关于议程过滤器和FactHandle的文章,但不知道如何让它工作 下面是一些代码: ArrayList=新建ArrayList(); 列表。添加(产品1); 添加(产品2); 列表。添加(产品3) K段插入(列表) KSSession.fireAllRules(“drl中的消防规则1”) //删除列表

我正在执行ksession.insert(list),然后我必须在drl文件中激活规则1,然后在drl中激活ksession.insert(list)和规则2

有人能告诉我如何做到这一点吗。我读过关于议程过滤器和FactHandle的文章,但不知道如何让它工作

下面是一些代码:

ArrayList=新建ArrayList(); 列表。添加(产品1); 添加(产品2); 列表。添加(产品3)

K段插入(列表)
KSSession.fireAllRules(“drl中的消防规则1”)

//删除列表

ArrayList list2=新的ArrayList(); 清单2.添加(str1); 列表2.添加(str2); 清单2.添加(str3)

K段插入(列表2);
KSSession.fireAllRules(“drl中的消防规则2”)

您不能直接控制触发哪些规则-规则上的约束决定了这一点。过滤器只能在您停止触发规则时起作用

我认为有一个更好的解决方法…您可以控制模式匹配

这里有一个简单快捷的方法

arrayList1.add("Rule 1");//if you can afford this without generics
arrayList1.add(...);//everything else you want to add
arrayList2.add("Rule 2");
arrayList2.add(..);//rest...

..
ksession.insert(..) ;//insert everything one by one
。。 在您的drl和内部规则1中 …当您希望规则1与arraylist1一起使用时,请先在lhs中进行此匹配
$al:ArrayList(包含“规则1”)

就这些