В основном бизнес-правила выглядят
forall rules:
if <condition> then doAction();
Как насчет классификации всех правонарушений по выраженности с использованием баллов, возможно, дополнительный бонус для частых «злодей», некоторые преступления могут стать запрещенными временем и все необходимое.
Тогда грубый проект алгоритма может быть:
, это было бы прямым с использованием структур данных вместо многих (возможно, глубоко вложенных ) если ...
Могу предложить вам инструмент, который мы использовали для решения подобной проблемы.
Взгляните на JBoss Drools: http://www.jboss.org/drools/
Это BRMS: Система управления бизнес-правилами
Вот вводное видео: http://www.jboss.com/products/platforms/brms/
Я думаю, вы пытаетесь разработать экспертную систему. Вы можете проверить этот термин, а затем проверить соответствующие языки программирования в качестве пролога и т.д.
Я не уверен, что какой-либо из приведенных выше ответов был настолько полезным.
Я написал аналогичные компоненты, используя деревья выражений . Вы можете создавать лямбда-выражения, представляющие предикаты, компилировать и выполнять их динамически, а затем запускать какое-либо действие в ответ. Этот подход является мощным, гибким и устраняет весь ужас if / else (который определенно не подходит).
Однако на самом деле вы говорите о логическом программировании. Существует множество реализаций Prolog поверх .NET. Prolog - это язык, основанный на логике, который часто используется в приложениях ИИ, который начинает становиться очень мощным, когда вы понимаете его парадигму.
Взгляните на некоторые из них ..
Вы можете попробовать что-то похожее на этот "основанный на событиях" механизм правил
Я думаю, что в вашем случае подойдет любой механизм правил, основанный на алгоритме RETE. Можете попробовать пускать слюни.