Java 在1个会话中的DRL文件之间共享变量

Java 在1个会话中的DRL文件之间共享变量,java,drools,rules,Java,Drools,Rules,在1KIE会话中,在2个DRL文件之间共享变量的最佳方法是什么 我理解全局变量不是我的选项,因为一旦分配了全局变量值,它也可以与其他kie会话共享 这一切都取决于你所谓的“变量” 如果变量是用于参数化规则的变量,并且在会话的整个执行过程中保持不变,则可以使用。在所有要使用的DRL文件中声明全局(在所有DRL文件中声明必须相同(即类型和名称)),并在会话中插入事实之前使用ksession.setGlobal(…)设置其值 如果要使用变量在规则之间传递数据,那么最好的方法是使用特定的事实。创建一个类

在1KIE会话中,在2个DRL文件之间共享变量的最佳方法是什么


我理解全局变量不是我的选项,因为一旦分配了全局变量值,它也可以与其他kie会话共享

这一切都取决于你所谓的“变量”


如果变量是用于参数化规则的变量,并且在会话的整个执行过程中保持不变,则可以使用。在所有要使用的DRL文件中声明全局(在所有DRL文件中声明必须相同(即类型和名称)),并在会话中插入事实之前使用
ksession.setGlobal(…)
设置其值

如果要使用变量在规则之间传递数据,那么最好的方法是使用特定的事实。创建一个类来保存要共享的信息,并将其作为事实插入需要的地方


希望有帮助,

使用全局变量是跨drl文件中的所有规则共享变量的最佳方法。如果要在另一个会话中共享同一变量,则必须在另一个会话中
setGlobal
该变量。正如@Prog\G所述,全局变量在会话中的所有规则之间共享。它们不会在多个会话中共享(它们的值)。全局不会在另一个会话中共享,除非我执行setGlobal,但在同一会话中运行另一个DRL文件时,该变量将再次变为null。在多个DRL文件的同一个会话中存储一个变量?Hi@EstebanAliveri实际上我的要求很简单,我只需要一个在一个会话中在多个DRL之间共享的变量。。适合使用哪种变量?嗨@Esteban Aliveri。你介意分享一个如何创建一个类并将其作为事实插入到多个DRL文件使用中的例子吗?我指的是你可以插入到会话中的任何Java类(就像你已经在做的那样),我指的是你可以插入到会话中的任何Java类(就像你已经在做的那样)==>它正在工作!如果变量是用于参数化规则的变量,并且在整个会话执行过程中保持不变,则可以使用全局变量。=>我尝试为正在赋值的全局变量赋值,该值保持不变,或者在有新会话时没有重新初始化??我在不同的浏览器中使用swagger进行了测试