Создайте свой собственный механизм бизнес-правил

Java

Механизм правил разработан на основе механизма логического вывода и является компонентом, встроенным в приложение, которое реализуетОтделяйте бизнес-решения от кода приложения и пишите бизнес-решения, используя предопределенные семантические модули.. Принимайте вводимые данные, интерпретируйте бизнес-правила и принимайте бизнес-решения на основе правил.

вводить

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

Например, в платформе IoT есть много типов подключенных устройств, и форматы данных и типы данных не являются едиными, но они сталкиваются с необходимостью доступа к новым устройствам.Нельзя сказать, что каждое устройство подключено к набор обработки данных устройства.Затем обновите функцию системы публикации, и логика обработки устройства может быть написана, но она должна минимально влиять на функцию платформы. В настоящее время нам лучше нужен механизм набора правил для гибкой обработки данных различных устройств.

дизайн

идеи

Я уже знаю, зачем нужен движок правил и как с ним бороться, обратитесь к статье инструкции QLExpress:Woohoo.Краткое описание.com/fear/from 1 to 9 from 4 to 0…

QLExpress — это механизм правил Java, который может динамически выполнять сценарии и может связывать некоторые функции Java, которые мы написали, как операции для динамического выполнения сценариев. Затем мы инкапсулируем наиболее распространенный контент при обработке данных в компоненты QLExpress, которые можно использовать непосредственно во время обработки данных. Фактически можно рассматривать только обработку данных, составляющими которой могут быть:

  • Получите компоненты точки данных (свойства), чтобы быстро получить нужную часть данных
  • Компонент обратной связи, который вызывает функцию в системе после завершения выполнения правила, уведомляя о завершении выполнения бизнес-правила
  • Компоненты протокола, могут быть HTTP, TCP, UDP и т. д., инкапсулированные в компоненте, пакете, адресе запроса
  • Компоненты сериализации данных JSON, XML могут генерировать новые данные, и их необходимо обрабатывать повторно.

Я думаю, что вышеуказанные компоненты могут удовлетворить большинство сценариев данных с источниками, обработкой и обратной связью. Конечно, в случае сложного бизнеса новые компоненты могут добавляться непрерывно, но каждый раз, когда вы добавляете, думайте об этом.Этот компонент действительно нужен?

Кроме того, поскольку QLExpress уже поддерживает динамические скрипты, он имеет характеристики определенного языка программирования и достаточно гибок для обработки.Инкапсуляция наших компонентов предназначена только для тех более общих и часто используемых сценариев, а самые общие вещи в общем не много.

image-20191012074002421

обеспечить функциональность

  • Компоненты правил по умолчанию и инструкции по использованию
  • Интерфейс добавления, удаления, изменения и проверки правил
  • Интерфейс выполнения правил
  • Дополнительные не учитываются

Общий процесс

1 Организовать наиболее часто используемые функции в системе, инкапсулировать их и зарегистрировать наиболее часто используемые функции как оператор QLExpress определенным образом (файл конфигурации, динамическая загрузка). следующее

runner.addFunctionOfClassMethod("取绝对值", Math.class.getName(), "abs",
				new String[] { "double" }, null);
runner.addFunctionOfClassMethod("转换为大写", BeanExample.class.getName(),
				"upper", new String[] { "String" }, null);

runner.addFunctionOfServiceMethod("打印", System.out, "println",new String[] { "String" }, null);
runner.addFunctionOfServiceMethod("contains", new BeanExample(), "anyContains",
            new Class[] { String.class, String.class }, null);

2 В различных бизнес-сценариях при написании операторов QLExpress можно использовать функции, зарегистрированные в QLExpressres на предыдущем шаге, чтобы упростить операторы.Хотя это динамический сценарий, он должен быть достаточно простым, и бизнес должен удовлетворить этот спрос без написания нескольких строк кода.Если синтаксиса написать слишком много, то он будет чуть менее дружелюбным.

3. Для каждого написанного правила предоставьте тестовый сценарий выполнения правила, изоляцию данных для предотвращения создания грязных данных и проверьте, может ли сценарий правила выполняться правильно.

4 Интегрируйте функциональность механизма правил в платформу.

Наконец

Механизм сценариев QLExpress широко используется в бизнес-сценариях электронной коммерции Alibaba, поддерживает общий синтаксис программирования и достаточно мощен для создания собственного механизма бизнес-правил на основе QLExpress.

Ссылаться на:QLExpress проект Инструкции по использованию QLExpress