我正在尝试将一个现有的基于ILOG JRules的应用程序迁移到基于Drools的项目中。在ILOG中,我们有局部变量 (和变量集),它可以用于计算和存储规则(公式)中的中间值。
在Drools中是否存在相当于局部变量的变量?我知道我们有流口水中的全球,但是文档建议只使用Globals作为只读常量,并在Java调用类之间将数据传递给规则:
强烈反对从规则内部设置或更改全局值。我们建议您始终使用工作内存接口从应用程序中设置值。
一种方法是编写一个定制的java类Variable,并声明其中的所有变量,并在drools规则中使用它。但是,每当我们想要添加一个新变量时,都需要修改java代码。
是否有任何可行的方法来定义和使用可在规则中定义和修改的Drools变量?
发布于 2013-03-01 15:22:06
我认为使用全局值来保持规则之间的某种计算或状态没有任何问题。我认为Drools的文档试图(以一种非常复杂和不明确的方式)在规则的RHS中使用全局值,因为Drools不知道全局变化的值。如果您确实在约束中使用全局值,那么请确保从未更改它们的值。有了saud,我认为在RHS中使用全局是无害的。如果您不适应这个想法,那么您也可以插入您的“计算”对象作为一个事实在您的会话。规则可以与这个事实相匹配,将一个变量绑定到它,然后在RHS中与它交互。
希望能帮上忙
https://stackoverflow.com/questions/15115707
复制相似问题