2009-02-20
Глоссарий
| Процесс | Workflow |
|---|---|
| Сущность | Entity |
| Атрибут | Attribute |
| Состояние | State |
| Условие | Constraint |
| Действие | Action, Activity |
| Актор | Actor |
Состояние
Набор условий, по которым возможны:
- отбор подмножества сущностей
- валидация конкретной сущности
Действие
Динамические компоненты (выполнение действия):
- сущность и набор ее атрибутов
- актор (пользователь)
Статические компоненты (определение действия):
- начальное состояние
- проверяет, соответствует ли ему сущность до трансформации
- конечное состояние
- проверяет, соответствует ли ему сущность после трансформации
- описание трансформаций (если действие автоматическое)
- декларативное (описание соответствий атрибутов между состояниями)
- императивное (набор команд)
- актор (пользователь или группа пользователей, которым доступно данное действие) — не обязательно
Валидация полностью ложится на состояния.
Действие выполняется как транзакция: изменения в объекте не сохраняются, если после выполнения действия конечное состояние не прошло валидацию.
Занятно, что действие не накладывает ограничений на типы сущностей — их обрабатывают состояния.
Удобства
Агрегирующие действия
Содержат не состояния, но цепочки обычных действий.
Проблемы
Вышеописанная простая схема реализует простой WF, когда требуется взять одну сущность и как-то ее обработать. На практике встречается необходимость проверять более одной сущности, т.е. может быть более одного входного состояния, причем они могут сочетаться как AND, так и OR.
См. Notations and Workflow Patterns (PDF) — спасибо xzzr за линк.