neithere

Python, Music, Laziness

Workflow

дата
2009-02-20

Глоссарий

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

Состояние

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

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

Действие

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

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

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

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

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

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

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

Удобства

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

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

Проблемы

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

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