首页 > 解决方案 > optaplanner 中的全局变量

问题描述

在 drools 规则文件中,如何为 optaplanner 设置(或初始化)全局变量的值。我的用例如下:

我想声明一个全局 Java 映射,它是常量并且在执行期间不会改变。每个规则都将访问映射以检查值,如果值在映射中,则规则将评估为 false。通过访问文件/数据库中的数据,在执行开始之前生成地图。

此链接https://issues.jboss.org/browse/PLANNER-94也请求访问全局变量,但此功能现在被拒绝。

如何使用此链接中定义的 hack:在 Drools 规划器中设置工作内存中的全局变量,我应该从哪个对象获取 CustomSolverPhaseCommand?[我还不能对这篇文章发表评论,因为我没有足够的声誉,如果这似乎是重复的问题,对不起]。

我正在从 xml 资源创建 SolverFactory,并且 xml 文件包含 .drl 文件的路径。就像在 .drl 中我们可以访问对象 HardSoftScoreHolder scoreHolder 一样,我想在规则的“then”部分以相同的方式访问地图。

有人可以帮忙吗?

标签: global-variablesdroolsoptaplannerdrools-planner

解决方案


查看具有以Parameterization代替结尾的类的示例,例如ConferenceParametrization,这可能是比全局更好的选择。


推荐阅读