Переменные нельзя использовать внутри привязок - PullRequest
0 голосов
/ 06 октября 2019

У меня есть функция проверки, которая возвращает, какая часть неисправна. Например -

public class DateValidator{
    public String validateDate(startDate, endDate){
        try{
            LocalDate.parse(startDate, formatter);
            LocalDate.parse(endDate, formatter);
        } catch(DateTimeParseException e) {
            return "INVALID_DATE_FORMAT";
        }
        if (startDate.isAfter(endDate)) {
            return "INVALID_START_AND_END_DATES";
        }
    ..... so on
    }
}

Я хочу использовать это в Drools for Validation как

rule
    "ValidateDate"
when
    $error: Error();
    $request: Request();
    DateValidator( $dateValidation: validateDate($request.getStartDate(), $request.getEndDate()) != null);
then
    $error.getBadRequest($dateValidation);
end;

Я хочу использовать тип возвращаемой переменной, так как не NULL означает, что проверка не прошлапрошло. Но я получаю ниже исключения для файла DRL -

text=Variables can not be used inside bindings.
Variable [$request] is being used in binding 
'validateDate($request.getStartDate(), $request.getEndDate())']

1 Ответ

1 голос
/ 07 октября 2019

Попробуйте выполнить вызов функции как часть from Условного элемента:

rule
    "ValidateDate"
when
    $error: Error();
    $request: Request(
      $startDate: startDate,
      $endDate: endDate
    );
    $dv: DateValidator()
    $msg: String() from $dv.validateDate($startDate, $endDate)
then
    $error.getBadRequest($msg);
end

Надеюсь, это поможет,

...