Как определить правило drools для списка строк как метод POST в POSTMAN - PullRequest
0 голосов
/ 17 февраля 2020
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;
    }

}

и файл drools

правило "qurationRule_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"]

}

1 Ответ

0 голосов
/ 20 февраля 2020

Я думаю, что вы пытаетесь спросить, как обновить правило, чтобы проверить, что значение равно в списке, поскольку ваше первоначальное правило пытается создать ==, который никогда не будет совпадать так как вы сравниваете список со строкой.

В этом случае вы захотите использовать оператор Drools contains, который проверяет, что список содержит данный элемент.

rule "qustionRule_3"
when
  questionnaireReq : QuestionnaireReq( questionId=="q2",
                                       answerText contains "Web UI front-end")
  questionnaireRes : QuestionnaireRes()
then
  questionnaireRes.setNextQuestionId("q3");
end

Подробнее об операторе contains можно прочитать в официальной документации Drools, в разделе «Поддерживаемые операторы в ограничениях шаблона DRL» .

...