Автоматизация. Рабочий поток

Все вопросы/проблемы по установке и использовании.
Ответить
Аватара пользователя
Евгений
Сообщения: 454
Зарегистрирован: 11 июл 2016, 13:21
Имя: Евгений
Откуда: Петропавловск-Камчатский

Автоматизация. Рабочий поток

Сообщение Евгений »

Исполнение рабочих потоков в Руководителе возможно выполнить путём добавления в документ поля типа Раскрывающийся список. Например, можно добавить поле с именем "Статус", которое содержит следующий набор элементов - "Черновик, На согласовании, Подписан, Отправлен контрагенту ..."

Проблема заключается в том, что пользователь может свободно выбрать из раскрывающегося списка любой статус, в любом порядке. Но концепция рабочего потока подразумевает последовательный переход между статусами таким образом, чтобы пользователь мог только дать команду "Переходим к следующему этапу", а сам статус менялся автоматически. К сожалению, в Руководителе отсутствуют командные элементы типа "Кнопка", и невозможно сделать вот так:
1 Следующий.png
Представляю свой собственный вариант реализации рабочих потоков, при котором статус документа меняется только с помощью команды перехода на следующий этап.

Рабочий поток представляет собой набор этапов, которые исполняются строго последовательно от первого до последнего. На каждом этапе можно выполнить только два действия: либо перейти к следующему этапу, либо полностью прервать исполнение рабочего потока. Прерывание исполнения потока всегда возвращает поток на самый первый этап, независимо от того на каком этапе это прерывание произошло.

Рабочие потоки задаются с помощью Глобальных списков. Элементы глобального списка представляют этапы потока, а их порядок следования можно регулировать с помощью поля Сортировка.
2 Рабочие потоки.png
3 Этапы.png
Аватара пользователя
Евгений
Сообщения: 454
Зарегистрирован: 11 июл 2016, 13:21
Имя: Евгений
Откуда: Петропавловск-Камчатский

Re: Автоматизация. Рабочий поток

Сообщение Евгений »

Записям Глобального списка и их элементам я добавил поле CONGIF, для конфигурирования потока. Очень не хотелось лезть в код сервера Руководитель, поэтому всю логику насколько возможно перенёс на сторону БД, но без этого поля обойтись не смог. Используется поле CONFIG только в записях самих Глобальных списков, а для их подчинённых элементов поле пока не задействовано.

Формат поля CONFIG для рабочего потока простой: {"action_id":4, "escape_id":17}

"action_id" - это ИД элемента глобального списка, задающего команду перехода на следующий этап
"escape_id" - это ИД элемента глобального списка, задающего команду отмены исполнения рабочего потока

На картинке есть ключ "auto" - он задаёт вид потока. На данный момент игнорируется, пока в разработке. Можно не использовать.

Команды "Переход на следующий этап" и "Отмена рабочего потока" задаются также с помощью Глобального списка.
4 Действия.png
Чтобы рабочие потоки начали работать, необходимо на БД в которой установлен Руководитель, запустить скрипт (приложен внизу). К сожалению, как я уже сказал в код Руководителя я лезть не хочу, поэтому некоторые вещи придётся сделать руками. Скрипт делает следующее:

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: Автоматизация. Рабочий поток

Сообщение Евгений »

Теперь сама автоматизируемая сущность, в моём случае - Документы.

Добавляем два поля - "Статус" и "Действие", оба типа Раскрывающийся список. Для поля Статус используем глобальный список "Поток исполнения документа", который содержит этапы рабочего потока, а для поля "Действие" глобальный список "$$$ Действие". Это поле "Действие" и будет изображать из себя кнопку перехода на следующий этап. Менять поле "Статус" вручную не нужно. Для всех пользователей, кроме Администратора, доступ к полю Статус нужно выставить "Только просмотр", во избежание ненужных попыток ручной смены статуса.
5 документ.png
Вот теперь можно заходить в документ и с помощью "кнопки" Действие переводить документ последовательно по всем этапам рабочего потока. На последнем этапе действие перехода игнорируется.
6 действие.png
В результате получаем возможность проводить документ последовательно по всем этапам рабочего потока.
7 договоры.png
Благодарю за внимание, готов к вопросам и критике.
Аватара пользователя
Евгений
Сообщения: 454
Зарегистрирован: 11 июл 2016, 13:21
Имя: Евгений
Откуда: Петропавловск-Камчатский

Re: Автоматизация. Рабочий поток

Сообщение Евгений »

Собственно сам скрипт.
Вложения
WorkFlow.sql
(3.86 КБ) 272 скачивания
Nick
Сообщения: 9
Зарегистрирован: 07 июл 2016, 16:25
Имя: Никита
Откуда: Москва

Re: Автоматизация. Рабочий поток

Сообщение Nick »

Самая нужная функция в любой системе управления проектами. Очень не хватает. Надеюсь администрация реализует данную функции на стороне пхп.
Так же в дополнение к этому необходимо, что бы при переходе на определенный статус, уведомление получали только назначенные люди.
Из за нехватки этого функционала, до сих пор не можем слезть с битрикса(((
imamverdiyeveldar
Сообщения: 349
Зарегистрирован: 01 мар 2019, 08:57
Имя: Эльдар Имамвердиев
Откуда: Россия, Санкт-Петербург

Re: Автоматизация. Рабочий поток

Сообщение imamverdiyeveldar »

Евгений писал(а): 01 авг 2016, 07:23 Собственно сам скрипт.
viewtopic.php?f=2&t=3426

помогите пожалуйста с этим, раз уж вы разбираетесь в этом так хорошо)
Ответить