2012-02-06 3 views
3

Мне нужно автоматизировать некоторые очень сложные бизнес-правила (страхование) в приложении Delphi. На сегодняшний день мы использовали механизм создания сценариев для поддержания этих правил извне (много операторов типа if/then/else), но это стало трудно поддерживать и невозможно проверить, и это сложно проверить с помощью конечного пользователя.Автоматизация логики в Delphi

Большинство механизмов формальных правил, на которые я смотрел, не очень хорошо интегрируются с Delphi (в настоящее время используют D2007, но планируют перейти на 64-разрядный XE2 в этом году).

Кто-нибудь знает о каких-либо продуктах или использовал какие-либо продукты или методы, которые могли бы использовать, которые помогут?

+3

Я думаю, что ваше решение (скриптовый движок) является хорошим. Может быть, вы должны попытаться работать над тестами и способностью. – philnext

+1

Я думаю, что вам нужно реализовать State Patern - http://en.wikipedia.org/wiki/State_pattern –

+1

Я очень рекомендую книгу [Domain-Driven Design] (http://domaindrivendesign.org/books) Эрика Evans – mjn

ответ

1

Взгляните на Общие знания по Object Connections. Однако у меня нет опыта в этом.

+0

Я не видел этого в Google ... Оценивал и очень мощный. Конечно, решает мои проблемы. Просто нужно посмотреть, могу ли я обосновать его добавление в свой набор инструментов ... –

+0

Решили пойти с этим решением. Он делает больше, чем мне нужно, но мне потребовалось около четырех часов, чтобы преобразовать мои правила в таблицы решений, интегрировать их в свое приложение Delphi с помощью SDK и собрать базовый набор тестов. –

+0

Приятно слышать. Пожалуйста, отметьте этот вопрос как ответ, который вы приняли. –

0

Посмотрите на RemObjects SDK (DataAbstract, если вам также нужен прямой доступ к базе данных). Они позволяют серверу и стороне клиента scripting.

Мы использовали Databastract с большим успехом.

+1

Можете ли вы рассказать подробнее о своей бизнес-сфере и о сложности? Спасибо. – menjaraz

2

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

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

Это симптоматично для работы с данными непосредственно вместо работы с объектами. Когда вы манипулируете данными напрямую, вы должны знать все применяемые правила.

Я всегда выступаю за решения, ориентированные на модель. При правильно спроектированной объектной модели обязанности распределяются между классами в модели, таким образом удаляя горячие точки. Это соответствует Single responsibility principle и Don't repeat yourself.

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

+0

+1. Я полностью согласен с пропагандой объектно-ориентированного моделирования. – menjaraz

Смежные вопросы