0
私は、関連する部門のリストを持つ学生クラスを持っています。カスタムオブジェクトのリスト内の状態でのドル記号のルール
public class Student {
private String name;
private String desc;
private List<Department> department = new ArrayList<Department>();
}
public class Department {
private String name;
private String desc;
}
私はDroolsで書き込みルールを試しています。ルールは次のようなものです - 学生が特定の部署に所属している場合、行動を起こします。私はそれを行う正しい方法を理解することができません。私が下に書いたものはうまくいきません。私はそれが弦のリストの場合にはうまくいくと思います。カスタムオブジェクトのcontainsを実行する方法はありますか?ルール
Student student = new Student();
student.setName("John");
Department a1 = new Department();
a1.setName("English");
student.addDepartment(a1);
Department a2 = new Department();
a2.setName("French");
student.addDepartment(a2);
System.out.println("Student :" + student);
ksession.insert(student);
ksession.fireAllRules();
を呼び出すため
rule "Language"
when
$student : Student(department contains "English" && department contains "French")
then
System.out.println("Belongs to Language");
エンド
コードIは、Droolsの6.2バージョンを使用しています。
感謝のラウンを使用しています。私はこのルールを実行しようとしましたが、アクション部分にsysoutを表示しません。問題が何であるか分かりません。また、私の条件は、学生は英語とフランス語の両方に属していなければなりませんでした。彼は言語部門に所属しています。彼が英語と数学に属していれば、このルールは解雇されるべきではありません。問題のコードを更新しました。 – Arul
追加したコードは、Departmentオブジェクトをファクトとして挿入していないことを示しています。答えを編集しました。 – laune