Жизнь она сопровождается документами. Но и документов есть своя. Жизнь. С ними обычно связаны файлы. Но они тоже связаны друг с другом, с другими объектами. Все это имеет версии, каждая из которых может иметь различные состояния. Состояния переходят друг из друга и далее и далее и далее. Большая и насыщенная жизнь. Вплоть до аннулирования.
Документ описывается атрибутами и их значениями, кроме того, отдельно атрибутами описывается и его версия, а также и листы. Да. Еще можно отдельно описать атрибуты листов. Причем этот набор разный для разных видов документов.
Правами доступа к документу обладают пользователи и рабочие группы, в которые входят пользователи. И не просто так входят, а каждый с определенной ролью. Ну и права разные в зависимости от роли. Одно дело прима балерина, а совсем другое - из массовки артист.
У каждой версии сколько хочешь можно завести состояний и переходить из одного в другое сколь угодно замудренно. Само собой набор подписей на каждый переход. А также действия на сие событие. Всё настраивается.
Не знали, что выпускаем джина. Что же сделал джин ? Собственно первое - началась настройка переходов из состояния в состояние. Первый статус понятно - "Разработка", второй - ну пусть "Согласование". Чтобы перейти из одного в другой, требуется подпись разработчика. Отлично.
Какие действия выполнить? Ну скажем всем заинтересованным положить в соответствующие папки ссылки на версию. А кто может выполнить? Само собой пользователь, имеющий роль "Разработчик". Ну замечательно. Перевели. Что далее?
Получили статус "на согласовании". Что там делаем? Правильно - собираем подписи всех граждан. Ах да. Можно из состояния в состояние переходить не линейно из одного в другое, а выбирать. Т.е. из "разработки" перейти не в "согласование", а сразу в "утверждение". Если конечно роль позволяет.
В общем круть неимоверная. Бери и пользуйся. Радость должна наступить. Но не наступила. Почему-то.