2009-02-20

Глоссарий

ПроцессWorkflow
СущностьEntity
АтрибутAttribute
СостояниеState
УсловиеConstraint
ДействиеAction, Activity
АкторActor

Состояние

Набор условий, по которым возможны:

  • отбор подмножества сущностей
  • валидация конкретной сущности

Действие

Динамические компоненты (выполнение действия):

  • сущность и набор ее атрибутов
  • актор (пользователь)

Статические компоненты (определение действия):

  • начальное состояние
    • проверяет, соответствует ли ему сущность до трансформации
  • конечное состояние
    • проверяет, соответствует ли ему сущность после трансформации
  • описание трансформаций (если действие автоматическое)
    • декларативное (описание соответствий атрибутов между состояниями)
    • императивное (набор команд)
  • актор (пользователь или группа пользователей, которым доступно данное действие) — не обязательно

Валидация полностью ложится на состояния.

Действие выполняется как транзакция: изменения в объекте не сохраняются, если после выполнения действия конечное состояние не прошло валидацию.

Занятно, что действие не накладывает ограничений на типы сущностей — их обрабатывают состояния.

Удобства

Агрегирующие действия

Содержат не состояния, но цепочки обычных действий.

Проблемы

Вышеописанная простая схема реализует простой WF, когда требуется взять одну сущность и как-то ее обработать. На практике встречается необходимость проверять более одной сущности, т.е. может быть более одного входного состояния, причем они могут сочетаться как AND, так и OR.

См. Notations and Workflow Patterns (PDF) — спасибо xzzr за линк.