Управляемое данными приложение конечного автомата - PullRequest
3 голосов
/ 20 марта 2009

В настоящее время мы работаем над приложением конечного автомата с управлением данными. Прямо сейчас все потоки состояний сконфигурированы в базе данных, но ни одна из решений / бизнес-логики не конфигурируется в БД с нашим текущим дизайном. Из-за этого код должен в основном «знать» поток состояний, поэтому на самом деле нет смысла настраивать поток в базе данных.

Я имею в виду проект, который позволил бы нам связать воедино паттерн состояния с помощью внедрения зависимостей (Spring.NET), но я не уверен в лучшем способе сделать это управляемым данными. Я не большой поклонник конфигурирования подобных баз данных (например, имен классов или методов) в базе данных, но проект, который я имею в виду, потребует от нас подключения приложения в БД (аналогично подключению в Spring XML файл), так что, кажется, плохо.

Мы исследовали использование Windows WF, но я думаю, что мы немного обеспокоены будущим WF и подходящим ли временем для его принятия. Я никогда не имел дело с механизмами правил, поэтому мне интересно, может ли это быть здесь полезным? У кого-нибудь есть предложения как это реализовать?

Ответы [ 2 ]

2 голосов
/ 20 марта 2009

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

Способ сделать это - DSL (предметно-ориентированный язык). Придумайте формат, который может представлять бизнес-логику в абстрактном виде (например, микроязык), сохраните строки этого в ваших таблицах и реализуйте интерпретатор для нее в коде. Таким образом, если ваша базовая технология изменится, вам просто придется переопределить переводчика.

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

1 голос
/ 20 марта 2009

Информацию о доменной поддержке языка смотрите здесь, в MSDN . Вы также можете взглянуть на Irony , но это, вероятно, еще не решение для продуктивного кода.

...