SpEL Parser возвращает false, хотя он должен возвращать true

Я работаю ниже фрагмента кода в реальном времени и с очень небольшим трафиком [0,025%] ~(500 из 2 миллионов). Парсер SpEL ведет себя странно и возвращает ответ как ложь там, где он должен возвращать истину.

Файл контекстного класса

      @Getter
@Builder
@ToString
public class EvaluationContext {
    private String requestKey;
    private String namespace;
    private ContextAmount totalAmount;
    private double threshold;
    private String processingModel;
    private String channel;
}

Файл правил

      @Getter
@Setter
@JsonInclude(value = JsonInclude.Include.NON_EMPTY)
@JsonIgnoreProperties(ignoreUnknown = true)
public class PolicyEvaluationRule {
    private String namespace;
    private String ruleName = "test1";
    private String expression = "'SAMPLE'.equals(Context?.ProcessingModel)";
    private EvaluationContext context;
}

Оценка правила SPEL, как показано ниже.

      ExpressionParser parser = new SpelExpressionParser();
        StandardEvaluationContext context = new StandardEvaluationContext(rule);
        Boolean result = parser.parseExpression(rule.getExpression()).getValue(context, Boolean.class);

Для всех этих неудачных экземпляров в модели обработки было присвоено значение «SAMPLE». И parseExpression здесь никогда не сталкивался с исключением и не возвращал нулевой результат. Таким образом, становится действительно сложно определить, как отделить эти дела от основного потока.

Я добавил журналы, чтобы определить, что результат анализатора былfalseи не было никаких исключений из парсера. Если в парсере возникла какая-то ошибка, я считаю, что он должен выдать исключение или минимум, результат должен был бытьnull

0 ответов

Другие вопросы по тегам