Я пытаюсь обнаружить противоречивые периоды в расписании: если учитель преподает за Period (timeStart=1400,timeEnd=1500,dayOfWeek="Monday",class="c1")
, он не может преподавать Period(1305,1405,dayOfWeek="Monday",class="c2")
, потому что ему придется посещать два класса одновременно в течение определенного промежутка времени (да, этоconstrived).
Пример одного периода и наличия конфликтов между другими периодами:
--------- left_period (timeStart=1400,timeEnd=1500)
--------- right_period (1300,1400) NO conflict
--------- right_period (1305,1405) conflict
--------- right_period (1500,1600) NO conflict
--------- right_period (1555,1555) NO conflict
Поэтому я попытался обнаружить такие периоды на основе значений timeStart
и timeEnd
и установить такие конфликты какPeriodTimeConflict(left_period,right_period)
.
rule "insertPeriodTimeConflict"
when
$day_of_week : DayOfWeek()
$left_period : Period( $lp_id : id,
dayOfWeek==$day_of_week,
$lp_time_start : timeStart,
$lp_time_end : timeEnd
)
$right_period : Period( id > $lp_id,
dayOfWeek==$day_of_week,
( (timeStart>=$lp_time_start && timeStart<$lp_time_end)||
(timeEnd>$lp_time_start && timeEnd<=$lp_time_end)
)
)
then
insertLogical(new PeriodTimeConflict($left_period,$right_period));
end
Однако, ни один конфликт никогда не обнаруживается, и Drools об этом молчит.Что не так с моим правилом?