Drools:检查列表元素是否是连续的整数范围

Drools: Check if list elements are a continuous range of integers

Optaplanner 新手。

我在计划实体和计划变量之间建立了多对多关系,因此创建了一个中间体 class,这就是计划实体。

现在,我想编写一个规则,将 'n' 个对象分配给一个变量,我需要检查分配的所有 'n' 个对象是否具有连续的 ID。

public class ObjectA {
    private int ID;
}

@PlanningEntity
public class ResourceAssignment {

    private ObjectA myObjectA;
    private ObjectB myObjectB;
}

我获取所有分配对象的规则:

rule "continuous objects assigned to a variable"
when
        $objectb: ObjectB()
        $ObjectaAssignedToObjectb : Object() from accumulate(ResourceAssignment(myObjectB == $objectb, $Assignments: myObjectA.getID),
            collectList($Assignments)
           )        
    then
        //scoreHolder.addHardConstraintMatch(kcontext, -1);
end

以上规则为我提供了分配给 ObjectB 的所有 ObjectA 的列表。我只需要确保分配给 ObjectA 的所有 ID 都是连续的整数范围。开始和结束可以是任何东西,只要是连续的即可。

怎么样:

when
  Assignment($i : index)
  not Assignment(index == $i + 1)
  Assignment(index > $i + 1)
then
  ...