java - OptaPlanner 了解规则

标签 java drools rule-engine optaplanner

我们的规则文件中有以下规则,我试图理解规则的 LHS 部分,有两行 RoomAssignment 和 Schedule。有人可以解释它是如何评估的吗? RoomAssignment 和 Schedule 之间使用 AND 或 OR 运算符?

Rule "Test"
when
        RoomAssignment(schedule.isFixed == true, startingTimeGrain != null, room != null, manager != null, $startingTimeGrainIndex : startingTimeGrainIndex, $room: room, $manager: manager, $schedule: schedule)
        Schedule(id == $schedule.id, fixedDateTime == true, startTimeGrainIndex != $startingTimeGrainIndex)
    then
        scoreHolder.addHardConstraintMatch(kcontext, -100000);

        end

最佳答案

逻辑and在模式之间是隐含的。工作内存必须包含(至少)一个 RoomAssignment 和(至少)一个具有合适字段值的 Schedule 对象。对于事实对象的每个匹配组合,规则都会触发一次。

关于java - OptaPlanner 了解规则,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47297514/

相关文章:

java - drools:访问 drools excel 决策表中的对象

biztalk - BizTalk 作为规则引擎的替代品

java - 为什么我们不能用 Java 文件而不是 .drl 文件来编写业务规则?

java - 未从 JUnit 测试加载 'application.yml' 中的 Spring Boot 属性

java - 尝试简化按值排序映射的创建会引发 StackOverflowException

java - flickrj 依赖项

java - ArrayList 为什么要实现 RandomAccess 接口(interface)?

java - 如何将数据库(MySql)与drools项目连接?

drools - 使用 Drools 规则引擎对对象列表进行排序

java - 如何读取 Drools 内存以检测部分匹配的规则