Можно установить отдельное правило или путь конфигурационного пакета правил.
Можно вызвать одной строкой кода.
Можно создавать пользовательских слушателей.
Можно тестировать правила на достижение.
Можно использовать аннотации для вызова (в сочетании с Spring для включения аспектов).
Можно настраивать пользовательские аннотации и получать значения.
Можно использовать пулы потоков для обработки условий с возвращаемым значением (асинхронные правила).
Можно использовать встроенные инструменты управления правилами для создания сценариев и потоков правил.
Можно использовать встроенные инструменты управления правилами для редактирования последовательности выполнения условий (правила без возвратного значения, условия с возвратным значением (синхронные)).
Управление потоками правил: Создание нового, редактирование, удаление, деактивация, копирование, просмотр шаблонов правил, редактирование шаблонов правил, удаление шаблонов правил, тестирование, сцены, документация интерфейсов
Управление сценариями правил: Создание нового, редактирование, удаление.- Управление правилами: Создание нового, редактирование, удаление.
Инструменты управления правилами: Обнаружение незадействованных правил при создании
// Определение условия без обратного значения @Rule(code = RuleCode.NOTNULL, name = "Заданный ключ не может быть пустым", desc = "Заданный ключ не может быть пустым", type = RuleType.CONDITION) public class NotNullRuleCondition implements IRuleCondition { @Override public void condition(Map<String, Object> param, R rule) throws Exception { String ruleKey = rule.getRuleKey(); String[] keys = null; if (ruleKey.indexOf(",") > 0) { keys = ruleKey.split(","); } else { keys = new String[]{ruleKey}; } for (String key : keys) { Object data = param.get(key); if (data == null) { throw new Exception(key + rule.getRuleErrMsg()); } else { if (" ".equals(data.toString().trim())) { throw new Exception(key + rule.getRuleErrMsg()); } } } } // Дополнительно можно переопределить //@Override //public Map<String, Object> ruleTest(R rule) { // Map<String, Object> result = new HashMap<String, Object>(); // Rule ruleAnnotation = this.getClass().getAnnotation(Rule.class); // if (rule != null && rule.getRuleCode().equals(ruleAnnotation.code())) { // result.put(rule.getRuleCode(), ruleAnnotation.name()); // } // return result; //} }
// Инициализация // Можно указать класс правил VeryRule veryRule = VeryRule.builder().condition(NotNullRuleCondition.class).resultCondition(...).action(...).listener(...);
// Можно указать путь к пакету правил VeryRule veryRule = VeryRule.builder().rulePackage("com.lexinda.veryrule.base").listener(TestRuleListener.class)```markdown // Отдельное использование Map<String, Object> param = new HashMap<>(); param.put("a", "123a"); RuleBo nn = new RuleBo("notNull", "a,c", "", "Не может быть пустым", RuleType.CONDITION); veryRule.fire(param, nn);
// Соответствие Spring
// Соответствие Spring Boot // Путь к пакету veryrule veryrule.rulePackage=com.lexinda.veryrule.base
// Чтение встроенных правил veryrule.loadDefaultRule=true
// Включение аннотаций veryrule.useAspect=true
// Пользовательская аспектная логика (получение значений, валидация и т.д.) veryrule.aspectBean=com.lexinda.veryrule.aspect.VeryRuleAspect // Пользовательский слушатель veryrule.listenerBean=com.lexinda.veryrule.platform.listener.VeryRuleListener // Spring AOP - одиночный правило, тип правила по умолчанию - условие без возвращаемого значения @VeryRuleSingle(ruleCode = RuleCode.NOTNULL, ruleKey = "currentPage,ruleType", ruleErrMsg = "не может быть пустым") // Spring AOP - компоновка потока правил @VeryRuleFlow(ruleFlowCode = "test")
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )