我想在两个计划实体之间同步计划值。在这种情况下,我想让两个SubjecTeacherPeriod
选择期间彼此“重合”,即使它们的可能值范围是不相交的。
STP s1: period-N/A periodList->[1,2,3,4,5,6]
STP s2: period-N/A periodList->[106,107,108,109,110,111]
SyncConstraint(leftSTP = s1,rightSTP = s2)
<A rule for SyncConstraint that checks if s1.period and s2.period are compatible>
例如,Period
s 1
和106
是兼容的,因为它们都是“星期一的第一个小时”。同样适用于2
和107
。
我确实设置了计划实体难度,在s2
之后立即指定s1
(我看到了日志)。但是它们被赋予了不兼容的值。并且系统永远不会在解算器操作结束时从这样的错误中恢复。
如何让它们同步?
我提到“兼容”和“重合”的地方,我的意思是Period
s有两个字段(星期几和日期顺序)相等。每个类(以及该类中可能的句点的每个SubjectTeacherPeriod
)都有单独的Period
s。
答案 0 :(得分:0)
在课程Period
上创建一个getter getPeriodType()
(例如,返回“周一的第一个小时”),然后添加一个这样的分数规则:
when
MyEntity($leftType: period.periodType, $leftId : id, ...)
MyEntity(period.periodType != $leftType, id < $leftId, ...)
或者如果Period
可以有多种类型,请不要创建该getter,而是创建关系类PeriodToPeriodTypeLink
:
when
MyEntity($leftP : period, $leftId : id, ...)
MyEntity($rightP : period, id != $leftId, ...)
PeriodToPeriodTypeLink(period == $leftP, $t : type)
not PeriodToPeriodTypeLink(period == $rightP, type == $t)