Мое требование - соответствовать тегам. В данном примере этот конкретный HourConstraint
проверяет TeacherHour
, присвоенный Hour(23)
.
В частности, он проверяет TeacherHour.attributes["tags"]
на значения ["asst_ct","teacher_john_smith"]
и обнаруживает, по крайней мере, одно совпадение , два в этом случае (оба "asst_ct"
и "teacher_john_smith"
).
TeacherHour:
id: 47
assigned_hour: Null
attributes:Map<List<String>>
"tags":["asst_ct","no_strenuous_duties","kinda_boring","teacher_john_smith"]
"another_attribute":[...]
HourConstraint:
hour: Hour(23)
attribute: "tags"
values_list: ["asst_ct","teacher_john_smith"]
Вопрос: Как определить наличие (истина или ложь) общих элементов между двумя списками?
У Drools Expert есть memberOf
и contains
, но они проверяют скаляр против коллекции, а не коллекцию против коллекции.
Я вижу два возможных пути:
- представьте функцию
boolean isIntersecting(list,list)
и попросите Drools использовать ее для проверки правды
- Реализация
TeacherHour.attributes[]
в виде строки вместо списка и HourConstraint.valueslist
в качестве регулярного выражения, которое может соответствовать этому списку