1-й раз - я не эксперт по правилам (недавно изучал некоторые из этих вещей)
Не думайте, что вам нужен $ lastShift: shift, вы будете использовать правила для связи 2 ShiftAssignment (s)
Я думаю, что вы должны использовать последовательный идентификатор для проверки последовательных смен в настоящее время. Я думаю, что ваше правило будет срабатывать для ВСЕХ смен после $ shiftDate, которые, я думаю, вы не намереваетесь
I не думайте, что вам нужно предложение if в разделе THEN, это должно быть частью проверки вашего состояния в разделе when. Таким образом, раздел Then должен содержать вставку новых знаний в рабочую память правил, изменение / удаление фактов, находящихся в настоящее время в рабочей памяти правил, печать операторы - если они вам нужны (на самом деле не рекомендуется - используйте changeListeners)
if ( shiftType ! = $ shiftType && shift! = null) НЕ понятно, какой из 2 объектов ShiftAssignment вы думаю shiftType от
правило "nightOrOffAfterNightShift" когда sAn: ShiftAssignment ($ idn: I d $ employee_n: Employee, $ employee_n! = null, $ shift: shift, $ shift! = null, $ sTn: ShiftType) sAn_1: ShiftAssignment ($ idn_1: Id $ idn == $ idn_1 + 1, $ employee_n_1: сотрудник, $ employee_n_1! = null, $ employee_n_1 == $ employee_n, $ sTn_1: ShiftType, $ sT! = $ sTn_1) затем ???? Теперь, что вам нужно сделать, здесь end
Можете ли вы поделиться ShiftAssignment класс
Я думаю, что приведенное выше находит смены idn & idn_1, где один и тот же сотрудник с другим shiftType
надеюсь, это близко к тому, что вы после