Динамическая настройка правил в механизме правил

Я разрабатываю простой движок правил. Позвольте мне начать с обзора.

Движок инициализируется с помощью файла конфигурации, в котором указаны правила, которые должны быть запущены, а также параметры, предназначенные для использования этими правилами.

Пример:

У меня есть объект входящего заказа, и я хотел бы проверить его работоспособность, например:
количество заказа не может быть больше некоторого количества X (x передается в качестве параметра двигателю.) Это простой пример передаваемого параметра.

Сложный пример:

Некоторый заказ Тип. Некоторые региона. Некоторые столы. Количество заказов = X

Некоторый заказ Тип. Некоторые регионы. Некоторые столы. Некоторые трейдеры. Количество = у.

Некоторый заказ Тип. Некоторый регион. Некоторый продукт. Ежедневный объем = A

Некоторый заказ Тип. Некоторые регионы. Некоторые столы. Ежедневный объем = B

Многие параметры, подобные этим, используются для инициализации движка, который должен использоваться правилами.

Вопрос:

Как передать эти параметры инициализации в API? — JSON, XML ???

Какова наилучшая практика проектирования программного обеспечения для представления, обработки и хранения этих параметров, чтобы правила могли использовать эту информацию (например, какое количество разрешено для группы трейдеров? Для проверки работоспособности объекта входящего ордера)

Я планирую реализовать это в C ++

заранее спасибо

-1

Решение

Перед тем, как приступить к созданию нового механизма правил, вы должны знать о сложности, например, Алгоритм повторов Это имеет смысл, если вы планируете поддерживать более тысячи правил, потому что начиная с этих цифр и далее, если вы оцениваете правила последовательно, это становится непомерным с точки зрения производительности, а производительность особенно важна в торговой системе. Я бы на самом деле исследовал и исследовал повторное использование существующего механизма правил, например КЛИПЫ, Drools, JRules и т. Д.

Другая многообещающая возможность заключается в том, чтобы внедрить в ваш процесс какой-то язык сценариев (обычно это возможно, например, в Java), который может получить доступ к модели вашего домена в памяти, например. вставлять Python интерпретатор и использовать его в качестве «двигателя правил». Если вам абсолютно необходимо реализовать свой собственный, то вы можете использовать yacc и lex, но в прошлый раз, когда я использовал его, я помню, что это было не очень весело, и вы должны знать о сложностях, то есть масштабируемость может стать проблемой, если вы планируете иметь тысячи или больше правил.

Для управления правилами, т. Е. Ведения бухгалтерского учета, редактирования, аннотирования, управления версиями и т. Д., Вы захотите XML и поместите фактическое правило под CDATA элемент.

3

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]