воскресенье, 4 января 2009 г.

Что такое Listma

Listma – (Linking State Machine) небольшой workflow фреймворк на основе модели конечных автоматов, предназначенный для организации бизнес логики связанной с изменением состояния объектов. Основное предназначение этого движка, организация бизнес логики контроллера при применении шаблона Model – View – Controller.

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

Диаграммы состояний классов могут быть описаны как с использованием языка на основе Xml, так и непосредственно в коде, в стиле fluent interface. Диаграммы состояний включают в себя описание возможных состояний и переходов между ними. Для состояний может быть указан код который должен быть выполнен при входе в состояние или при выходе из него, а для переходов - код который выполняется при совершении перехода. Код может быть задан как в виде класса реализующего интерфейс, так и в виде делегата
или лямбды.
Также для переходов могут быть указаны роли пользователей, которым доступен данный переход. Причем роли можно определять для каждой конкретной диаграммы состояний. Также можно указать шаблоны и адресаты для оповещения при выполнении перехода.
Listma представляет собой открытый движок, он не привязан ни к библиотекам обеспечивающим персистентность объектов, ни к UI библиотекам, ни к MVC движкам, ни к библиотекам role-based security. В тоже время он может быть использован практически с любыми из них, при условии затраты некоторых усилий на сопряжение.

Listma не накладывает практически никаких ограничений на используемые классы (принцип POCO). В общем случае, класс должен иметь состояние и необходимо указать атрибут класса (поле и свойство) используемое для хранения этого состояния. Класс не должен реализовывать какие либо специфические интерфейсы или наследоваться от определенного базового класса.

Другой важной чертой Listma является то, что всегда можно использовать только необходимые вам возможности. Например, если вам не нужна role-based security, вы просто ее не используете, при этом не надо ничего отключать или подключать.

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

Комментариев нет:

Отправить комментарий