Исполнение рабочих потоков в Руководителе возможно выполнить путём добавления в документ поля типа Раскрывающийся список. Например, можно добавить поле с именем "Статус", которое содержит следующий набор элементов - "Черновик, На согласовании, Подписан, Отправлен контрагенту ..."
Проблема заключается в том, что пользователь может свободно выбрать из раскрывающегося списка любой статус, в любом порядке. Но концепция рабочего потока подразумевает последовательный переход между статусами таким образом, чтобы пользователь мог только дать команду "Переходим к следующему этапу", а сам статус менялся автоматически. К сожалению, в Руководителе отсутствуют командные элементы типа "Кнопка", и невозможно сделать вот так:
Представляю свой собственный вариант реализации рабочих потоков, при котором статус документа меняется только с помощью команды перехода на следующий этап.
Рабочий поток представляет собой набор этапов, которые исполняются строго последовательно от первого до последнего. На каждом этапе можно выполнить только два действия: либо перейти к следующему этапу, либо полностью прервать исполнение рабочего потока. Прерывание исполнения потока всегда возвращает поток на самый первый этап, независимо от того на каком этапе это прерывание произошло.
Рабочие потоки задаются с помощью Глобальных списков. Элементы глобального списка представляют этапы потока, а их порядок следования можно регулировать с помощью поля Сортировка.
Автоматизация. Рабочий поток
- Евгений
- Сообщения: 454
- Зарегистрирован: 11 июл 2016, 13:21
- Имя: Евгений
- Откуда: Петропавловск-Камчатский
Re: Автоматизация. Рабочий поток
Записям Глобального списка и их элементам я добавил поле CONGIF, для конфигурирования потока. Очень не хотелось лезть в код сервера Руководитель, поэтому всю логику насколько возможно перенёс на сторону БД, но без этого поля обойтись не смог. Используется поле CONFIG только в записях самих Глобальных списков, а для их подчинённых элементов поле пока не задействовано.
Формат поля CONFIG для рабочего потока простой: {"action_id":4, "escape_id":17}
"action_id" - это ИД элемента глобального списка, задающего команду перехода на следующий этап
"escape_id" - это ИД элемента глобального списка, задающего команду отмены исполнения рабочего потока
На картинке есть ключ "auto" - он задаёт вид потока. На данный момент игнорируется, пока в разработке. Можно не использовать.
Команды "Переход на следующий этап" и "Отмена рабочего потока" задаются также с помощью Глобального списка.
Чтобы рабочие потоки начали работать, необходимо на БД в которой установлен Руководитель, запустить скрипт (приложен внизу). К сожалению, как я уже сказал в код Руководителя я лезть не хочу, поэтому некоторые вещи придётся сделать руками. Скрипт делает следующее:
1. в БД таблицам app_global_lists и app_global_lists_choices добавляется поле config
2. создаётся хранимая процедура next_stage()
3. в таблице app_entity_21 (Проекты) создаётся шаблонный триггер app_entity_21_before_update
Простите, но этот триггер придётся копировать и потом добавлять руками в БД к каждой таблице сущности, которую вы захотите автоматизировать. Да ещё и редактировать этот триггер, прописывая в нём имена полей которые отвечают в данной сущности за представление статуса (этап рабочего потока) и "кнопку" перехода на следующий этап. Если бы всё это прописать прямо в ПХП-коде на стороне Руководителя, тогда всё полностью настраивалось бы автоматически, без ручных правок. А пока только так.
Формат поля CONFIG для рабочего потока простой: {"action_id":4, "escape_id":17}
"action_id" - это ИД элемента глобального списка, задающего команду перехода на следующий этап
"escape_id" - это ИД элемента глобального списка, задающего команду отмены исполнения рабочего потока
На картинке есть ключ "auto" - он задаёт вид потока. На данный момент игнорируется, пока в разработке. Можно не использовать.
Команды "Переход на следующий этап" и "Отмена рабочего потока" задаются также с помощью Глобального списка.
Чтобы рабочие потоки начали работать, необходимо на БД в которой установлен Руководитель, запустить скрипт (приложен внизу). К сожалению, как я уже сказал в код Руководителя я лезть не хочу, поэтому некоторые вещи придётся сделать руками. Скрипт делает следующее:
1. в БД таблицам app_global_lists и app_global_lists_choices добавляется поле config
2. создаётся хранимая процедура next_stage()
3. в таблице app_entity_21 (Проекты) создаётся шаблонный триггер app_entity_21_before_update
Простите, но этот триггер придётся копировать и потом добавлять руками в БД к каждой таблице сущности, которую вы захотите автоматизировать. Да ещё и редактировать этот триггер, прописывая в нём имена полей которые отвечают в данной сущности за представление статуса (этап рабочего потока) и "кнопку" перехода на следующий этап. Если бы всё это прописать прямо в ПХП-коде на стороне Руководителя, тогда всё полностью настраивалось бы автоматически, без ручных правок. А пока только так.
- Евгений
- Сообщения: 454
- Зарегистрирован: 11 июл 2016, 13:21
- Имя: Евгений
- Откуда: Петропавловск-Камчатский
Re: Автоматизация. Рабочий поток
Теперь сама автоматизируемая сущность, в моём случае - Документы.
Добавляем два поля - "Статус" и "Действие", оба типа Раскрывающийся список. Для поля Статус используем глобальный список "Поток исполнения документа", который содержит этапы рабочего потока, а для поля "Действие" глобальный список "$$$ Действие". Это поле "Действие" и будет изображать из себя кнопку перехода на следующий этап. Менять поле "Статус" вручную не нужно. Для всех пользователей, кроме Администратора, доступ к полю Статус нужно выставить "Только просмотр", во избежание ненужных попыток ручной смены статуса.
Вот теперь можно заходить в документ и с помощью "кнопки" Действие переводить документ последовательно по всем этапам рабочего потока. На последнем этапе действие перехода игнорируется.
В результате получаем возможность проводить документ последовательно по всем этапам рабочего потока.
Благодарю за внимание, готов к вопросам и критике.
Добавляем два поля - "Статус" и "Действие", оба типа Раскрывающийся список. Для поля Статус используем глобальный список "Поток исполнения документа", который содержит этапы рабочего потока, а для поля "Действие" глобальный список "$$$ Действие". Это поле "Действие" и будет изображать из себя кнопку перехода на следующий этап. Менять поле "Статус" вручную не нужно. Для всех пользователей, кроме Администратора, доступ к полю Статус нужно выставить "Только просмотр", во избежание ненужных попыток ручной смены статуса.
Вот теперь можно заходить в документ и с помощью "кнопки" Действие переводить документ последовательно по всем этапам рабочего потока. На последнем этапе действие перехода игнорируется.
В результате получаем возможность проводить документ последовательно по всем этапам рабочего потока.
Благодарю за внимание, готов к вопросам и критике.
- Евгений
- Сообщения: 454
- Зарегистрирован: 11 июл 2016, 13:21
- Имя: Евгений
- Откуда: Петропавловск-Камчатский
Re: Автоматизация. Рабочий поток
Собственно сам скрипт.
- Вложения
-
- WorkFlow.sql
- (3.86 КБ) 272 скачивания
Re: Автоматизация. Рабочий поток
Самая нужная функция в любой системе управления проектами. Очень не хватает. Надеюсь администрация реализует данную функции на стороне пхп.
Так же в дополнение к этому необходимо, что бы при переходе на определенный статус, уведомление получали только назначенные люди.
Из за нехватки этого функционала, до сих пор не можем слезть с битрикса(((
Так же в дополнение к этому необходимо, что бы при переходе на определенный статус, уведомление получали только назначенные люди.
Из за нехватки этого функционала, до сих пор не можем слезть с битрикса(((
-
- Сообщения: 349
- Зарегистрирован: 01 мар 2019, 08:57
- Имя: Эльдар Имамвердиев
- Откуда: Россия, Санкт-Петербург