Я думаю, что вам нужно представить список смен, которым нужно присвоить [S1, S2, S3]
, как факт другого типа (ShiftToAssign
):
Shift { // planning entity
String id;
LocalDateTime: time;
Emploee employee;
}
ShiftToAssign { // planning fact
String id;
}
Затем, вместо добавления / удаления элементов в заранее определенный список смен, которые вы можете назначить, вы просто добавляете их в @ProblemFactCollectionProperty
. Они будут автоматически вставлены в рабочую память Drools, и вы сможете соответствовать своему состоянию следующим образом:
$s : ShiftToAssign // equivalent to: for each Si in [S1, S2, S3]
not Shift(id == $s.id) // equivalent to: there is no Shift whose id is member of the list