オブジェクトがリストの一部でもあるかどうかを Drools Rule Language (DRL) で確認するにはどうすればよいですか?
試験例を見てみましょう。試験に部屋とリストがある状況を想像してください。ここで、Room オブジェクトがリストにあるかどうかを確認したいと思います。roomList.contains(rooms) のような関数はありますか?
DRLにはこれが必要です。
ありがとう
オブジェクトがリストの一部でもあるかどうかを Drools Rule Language (DRL) で確認するにはどうすればよいですか?
試験例を見てみましょう。試験に部屋とリストがある状況を想像してください。ここで、Room オブジェクトがリストにあるかどうかを確認したいと思います。roomList.contains(rooms) のような関数はありますか?
DRLにはこれが必要です。
ありがとう
このようなモデルの場合:
class Exam {
Room room;
...
}
class Room {
List<Room> roomsList;
...
}
次に、ルールは次のようになります。
rule X
when
$exam1 : Exam()
$exam2 : Exam( room.roomsList contains $exam1.room )
then
// do something
end
「memberOf」演算子を使用して要素がリストのメンバーであるかどうかを確認したり、Drools 5.4+ を使用している場合は単純にメソッドを直接呼び出したりすることもできます。
万が一、JavaでList of Collectionフレームワークを使用している場合は、そうです。というメソッドがありfrequency()
ます。
List<String> l = new ArrayList<String>();
Collections.frequency(l, "room1");
次のような状況があります
class Exam {
Room room;
...
}
class Room {
List<Room> roomList
...
}
私の DRL ファイルは次のようになります。
rule "containsRoomOfRoom"
when
$topicConflict : TopicConflict($leftTopic : leftTopic, $rightTopic : rightTopic)
$leftExam : Exam(topic == $leftTopic, $period : period, $leftRoom : room)
$rightExam : Exam(topic == $rightTopic, period == $period, room.roomsList contains $leftRoom)
then
insertLogical(new IntConstraintOccurrence("roomPenalty", ConstraintType.NEGATIVE_HARD,
40,
$leftExam, $rightExam));
終わり
私の問題は、leftExam の部屋が rightExam の部屋の roomList にあるかどうかを確認したいということです。
この質問で申し訳ありませんが、言語リファレンスが見つかりません。