私の要件はタグを一致させることです。この例では、この特定のはに割り当てられたをHourConstraint
チェックします。TeacherHour
Hour(23)
具体的にはTeacherHour.attributes["tags"]
、値をチェックし、["asst_ct","teacher_john_smith"]
少なくとも1つの一致、この場合は2つ("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"]
質問: 2つのリスト間の共通要素の存在(trueまたはfalse)を検出するにはどうすればよいですか?
Drools ExpertにはとがmemberOf
ありますcontains
が、スカラーとコレクションをチェックします。コレクションとコレクションをチェックすることはありません。
私は2つの潜在的な方法を見ています:
- 関数を導入し、
boolean isIntersecting(list,list)
それを真実のチェックに使用するようにDroolsに指示します TeacherHour.attributes[]
リストの代わりに文字列として、およびHourConstraint.valueslist
そのリストに一致する正規表現として実装します