Я большой поклонник Business Rules Engines, так как они могут значительно облегчить вам жизнь программиста. Одним из первых опытов, которые я испытал во время работы над проектом хранилища данных, было обнаружение хранимых процедур, содержащих сложные структуры CASE, занимающие целые страницы. Отладка была кошмаром, так как было очень трудно понять логику, применяемую в таких длинных структурах CASE, и определить, есть ли у вас перекрытие между правилом на странице 1 кода и другим правилом со страницы 5. В целом, у нас получилось в код встроено более 300 таких правил.
Когда мы получили новое требование к разработке для чего-то под названием «Назначение учета», которое предполагало обработку более 3000 правил, я знал, что что-то нужно изменить. Тогда я работал над прототипом, который позже стал родителем того, что сейчас является механизмом Custom Business Rule, способным обрабатывать все стандартные операторы SQL. Первоначально мы использовали Excel в качестве инструмента для разработки, а позже мы создали приложение ASP.net, которое позволит бизнес-пользователям определять свои собственные бизнес-правила без необходимости написания кода. Теперь система работает нормально, с очень небольшим количеством ошибок и содержит более 7000 правил для расчета этого места назначения учета. Я не думаю, что такой сценарий был бы возможен при жестком кодировании.
Тем не менее, у такого подхода есть пределы:
- У вас должны быть способные бизнес-пользователи, прекрасно разбирающиеся в бизнесе компании.
- Существует значительная рабочая нагрузка по поиску всей системы (в нашем случае хранилища данных), чтобы определить все жестко заданные условия, которые имеет смысл преобразовать в правила, которые будут обрабатываться механизмом бизнес-правил. Мы также должны были позаботиться о том, чтобы эти исходные шаблоны были полностью понятны бизнес-пользователям.
- Вам необходимо иметь приложение для разработки правил, в котором реализованы алгоритмы обнаружения перекрывающихся бизнес-правил. В противном случае вы получите большой беспорядок, когда никто больше не понимает получаемых результатов. Когда у вас есть ошибка в общем компоненте, таком как Custom Business Rule Engine, может быть очень сложно отладить и задействовать обширные тесты, чтобы убедиться, что вещи, которые работали раньше, также работают сейчас.
Более подробную информацию по этой теме можно найти в моем сообщении: http://dwhbp.com/post/2011/10/30/Implementing-a-Business-Rule-Engine.aspx
В целом, самым большим преимуществом использования Business Rule Engine является то, что он позволяет пользователям вернуть контроль над определениями и созданием бизнес-правил без необходимости обращаться в ИТ-отдел каждый раз, когда им нужно что-то изменить. Это также снижает нагрузку на команды ИТ-разработчиков, которые теперь могут сосредоточиться на создании вещей с большей добавленной стоимостью.
Ура,
Nicolae