使用 optapllaner,是否可以在分数计算 drl 文件中调用“Graph.getInstance().mdm()”方法?
我在某处读到我只能调用静态方法,但我不确定。
使用 optapllaner,是否可以在分数计算 drl 文件中调用“Graph.getInstance().mdm()”方法?
我在某处读到我只能调用静态方法,但我不确定。
是的,这是可能的。当然,为了在分数计算期间调用方法有意义,它需要有一个接受实体或变量相关属性的参数。
接受一个实体:
when
$p : Process()
eval(Graph.getInstance().mdmForProcess($p) == true)
then
接受一个依赖变量的属性:
when
Process($c : computer)
eval(Graph.getInstance().mdmForComputer($c) == true)
then
总的来说,我不喜欢这种设计,我更喜欢这样的设计:
when
Process(mdmIsGood() == true)
then
@PlanningEntity class Process {
public boolean mdmIsGood() {
return Graph.getInstance().mdmForProcess($p);
}
...
}
注意:如果方法不基于实体或变量相关属性,为什么没有意义?因为你可以预先计算它!因此,在每次得分计算期间计算它的效率会非常低。请参阅文档部分“缓存的问题事实”。