Схема БД для "документооборота"

zerkms

TDD infected
Команда форума
Схема БД для "документооборота"

Добрый день, господа.

Проектируется некое подобие узкоспециализированной системы корпоративного "документооборота" (в кавычках - потому что уровня LN и прочих не требуется).

Забуксовал на этапе проектирования вот какой её части.

Описание бизнес-процессов и терминология:

В рамках системы мы имеем дело с "задачей", "исполнителем" и "постановщиком задачи".
Базовый функционал workflow уже реализован в виде FSM.

В течение жизненного процесса задача перемещается от исполнителя к исполнителю согласно таблице переходов FSM, но возникает проблема, что после некоторых состояний (например, работа закончена - необходимо вернуть к постановщику задачи; или анализ задачи окончен - нужно также вернуть к постановщику, который потом назначит её кому-то на исполнение).

Таким образом задача может быть: распределена с изменением статуса, либо отредирекчена (без изменения статуса). А после выполнения она должна вернуться назад.

Вопрос: какая структура позволит удобно хранить этот самый "путь", по которому легко можно будет найти постановщика/исполнителя, которому после смены статуса задача должна вернуться?

Пример workflow, из обсуждения в аське:

Код:
zerkms, 03.11.2010 9:50:43:
тогда пример

zerkms, 9:50:51:
есть постановщик П

zerkms, 9:51:17:
он формулирует задачу, оформляет её в виде "тикета" и отправляет на исполнение И1, это у нас очень главный начальник

zerkms, 9:51:25:
задача сейчас в статусе "новая"

zerkms, 9:51:45:
И1, по причине своей важности, сам ей заниматься не будет - а тупо редиректит её на И2, начальника подразделения, к примеру

zerkms, 9:51:52:
статус - по-прежнему "новая"

zerkms, 9:52:16:
И2, понимая, что задача непростая и с нахрапу не решится - решает её для начала проанализировать (назначив соответствующий статус)

zerkms, 9:52:22:
и распределяет её на начальника отдела И3

zerkms, 9:52:26:
статус (анализ)

zerkms, 9:52:43:
И3 тоже самому недосук делать это, и он отправляет её мне, И4

zerkms, 9:52:46:
статус - анализ

zerkms, 9:52:50:
я проанализировал

zerkms, 9:52:58:
она вернулась от меня И3, на акцепт

zerkms, 9:53:09:
он или говорит нет и отдаёт её снова мне (кому-то ещё)

zerkms, 9:53:18:
или говорит "ок" и она возвращается И2

zerkms, 9:53:31:
вот как раз момент ок/не ок я и не могу организовать в схеме
 

korchasa

LIMB infected
Таблица изменений исполнителей(статусов). Связь один-ко-многим. Не?
 

zerkms

TDD infected
Команда форума
korchasa
По ней очень сложно обычным SQL-запросом будет найти то, что нужно :)
 

korchasa

LIMB infected
Можно ввести "глубину" и идти потом по ней назад. Текущее значение хранить в самом таске.
 

HEm

Сетевой бобер
id задачи|время очередного ее движения|от кого|кому|состояние

отлавливаешь в каком движении произошла первая нужная смена состояния
 

iceman

говнокодер
"причина важности" - как же бесят эти начальники, помоему руководящий отдел не нужно хранить в таблице движения документа, а выносить отдельно, так для учета - каким руководителем был рассмотрен документ, типа ВИЗЫ.

-~{}~ 03.11.10 13:32:

zerkms
а документ отправленный на анализ к тебе, и документ пришедший к тебе уже с нарядом на работу, это не 2 разных документа?
 

zerkms

TDD infected
Команда форума
Не, господа, я объяснить скорее всего то что я хочу - не смогу. Просто не хватит слов :)

Предлагаю завершить на этом :)
 
Сверху