ILOG变量集在Drools中的等效值

ILOG变量集在Drools中的等效值,drools,ilog,jrules,Drools,Ilog,Jrules,我正在尝试将现有的基于ILOGJRules的应用程序迁移到基于Drools的项目中。在ILOG中,我们有(和变量集),可用于计算和存储规则(公式)中的中间值 Drools中是否有等价的局部变量?我知道我们有,但文档建议只将全局变量用作只读常量,并在Java调用类与规则之间传递数据: 强烈反对从内部设置或更改全局值 你的规则。我们建议您始终从 使用工作内存接口的应用程序 一种方法是编写一个自定义java类变量,声明其中的所有变量,并在drools规则中使用它。但每次我们想要添加新变量时,都需要对j

我正在尝试将现有的基于ILOGJRules的应用程序迁移到基于Drools的项目中。在ILOG中,我们有(和变量集),可用于计算和存储规则(公式)中的中间值

Drools中是否有等价的局部变量?我知道我们有,但文档建议只将全局变量用作只读常量,并在Java调用类与规则之间传递数据:

强烈反对从内部设置或更改全局值 你的规则。我们建议您始终从 使用工作内存接口的应用程序

一种方法是编写一个自定义java类
变量
,声明其中的所有变量,并在drools规则中使用它。但每次我们想要添加新变量时,都需要对java代码进行更改


是否有任何可行的方法来定义和使用Drools中的变量,这些变量可以在规则中定义和更改

我认为使用globals在规则之间保留某种计算或状态没有任何错误。我认为Drools的文档试图说(以一种非常复杂和不清楚的方式)的是,您不应该在规则的RHS中使用globals,因为Drools不知道全局值何时更改。如果在约束中使用全局变量,请确保从不更改其值。既然如此,我认为在规则的RHS中使用globals是无害的。 如果您对这个想法不满意,那么您也可以将“计算”对象作为事实插入会话中。规则可以与这个事实相匹配,将一个变量绑定到它,然后在RHS中与它交互


希望能有所帮助,

我认为使用globals在规则之间保留某种计算或状态没有任何错误。我认为Drools的文档试图说(以一种非常复杂和不清楚的方式)的是,您不应该在规则的RHS中使用globals,因为Drools不知道全局值何时更改。如果在约束中使用全局变量,请确保从不更改其值。既然如此,我认为在规则的RHS中使用globals是无害的。 如果您对这个想法不满意,那么您也可以将“计算”对象作为事实插入会话中。规则可以与这个事实相匹配,将一个变量绑定到它,然后在RHS中与它交互

希望有帮助