public class QuestionnaireReq {
private String questionId;
private List<String> answerText;
public String getQuestionId() {
return questionId;
}
public void setQuestionId(String questionId) {
this.questionId = questionId;
}
public List<String> getAnswerText() {
return answerText;
}
public void setAnswerText(List<String> answerText) {
this.answerText = answerText;
}
}
和流口水文件
规则“ qustionRule_3”
when
questionnaireReq : QuestionnaireReq(questionId=="q2" && $answerText=="Web UI front-end");
questionnaireRes : QuestionnaireRes();
then
questionnaireRes.setNextQuestionId("q3");
end
和邮递员的要求在这里
{
"questionId":"q3",
"answerText":["Web UI front-end","Web Back-end"]
}
我认为您要问的是如何更新规则以检查值是否为列表中的[in,因为您的原始规则尝试执行的==
自从您就不会匹配重新比较列表和字符串。
contains
运算符,该运算符将验证列表是否包含给定的元素。rule "qustionRule_3"
when
questionnaireReq : QuestionnaireReq( questionId=="q2",
answerText contains "Web UI front-end")
questionnaireRes : QuestionnaireRes()
then
questionnaireRes.setNextQuestionId("q3");
end
您可以在Drools官方文档的contains
部分中详细了解"Supported operators in DRL pattern constraints"运算符。