0

使用 optapllaner,是否可以在分数计算 drl 文件中调用“Graph.getInstance().mdm()”方法?

我在某处读到我只能调用静态方法,但我不确定。

4

1 回答 1

1

是的,这是可能的。当然,为了在分数计算期间调用方法有意义,它需要有一个接受实体或变量相关属性的参数。

接受一个实体:

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);
     }

     ...
}

注意:如果方法不基于实体或变量相关属性,为什么没有意义?因为你可以预先计算它!因此,在每次得分计算期间计算它的效率会非常低。请参阅文档部分“缓存的问题事实”。

于 2014-06-02T09:08:10.687 回答