Доработка процесса указания ответственного по этапу маршрута должностью -------------------------------------------------------------------------- Часто возникает необходимость в этапе маршрута реестра указать в качестве ответственного не конкретного сотрудника, а некоторую должность. Ранее в этом случае руководителю указанной должности необходимо было выбрать ответственного по этому этапу через модуль "Ежедневник": .. figure:: ../_static/image_9.png У такой реализации было несколько проблем: 1. руководителю, несмотря на наличие новой заметки в Ежедневнике, не отображался счетчик новых уведомлений (на иконке модуля); 2. пока руководитель не выбрал ответственного сотрудника, в ходе выполнения документа либо указывался этап без ответственного, либо вовсе не отображался текущий этап - в зависимости от того, содержится ли текущий этап в шаблоне маршрута или напрямую в маршруте реестра. Мы изменили это поведение, реализовав **новый процесс "Выбор исполнителя"** - работа руководителю должности по выбору исполнителя. Эта работа, как и все остальные, отображается в потоке работ руководителя: .. figure:: ../_static/image_10.png Полный алгоритм определения руководителя, который должен выбрать ответственного исполнителя для работы в случае, когда на указанную должность назначено два или более сотрудников: * проверяется наличие у руководителя подразделения, к которому относится должность, заместителей; - если для подразделения должности есть ровно один заместитель, то работа по выбору ответственного ставится ему; - если для подразделения должности есть несколько заместителей, то им всем будут созданы *параллельные* работы по выбору ответственного; как только один из заместителей завершил свою работу, она завершается и у остальных. * если для подразделения должности нет заместителей, то проверяется наличие И.О. руководителя; - если есть И.О., то ему и ставится работа по выбору ответственного; * если у подразделения должности не найдено ни заместителей, ни И.О., то выполняется поиск руководителя подразделения; - если руководитель нашелся - ему ставится работа по выбору ответственного. * в случае, когда в подразделении не найдены ни заместители, ни И.О., ни руководитель, то все проверки повторяются на уровень выше, для родительского подразделения. Альтернативные потоки событий: * если на указанную должность не назначено ни одного пользователя, маршрут прерывается с комментарием: *"Нет ни одного пользователя, назначенного на указанную должность"*; * если на должность назначен ровно один пользователь, то выбор исполнителя не запускается - в качестве исполнителя автоматически указывается этот пользователь, ему и создается работа; * если для должности нет ни одного руководителя, заместителя или И.О. вплоть до корневого подразделения, маршрут прерывается с комментарием: *"Нет ни одного руководителя для указанной должности"*. Метод API ~~~~~~~~~~~~ Для обеспечения интеграции реализован `метод API`_, позволяющий руководителю указать ответственного по этапу работы. .. _`метод API`: http://tdd.lan.arta.kz/docs/synergy/minsky/sdk-doc/swagger/#/workflow/post_api_workflow_work_set_responsibles URL метода: ``rest/api/workflow/work/set_responsibles`` Параметры: * ``workID`` - ``UUID`` работы * ``responsibles`` - массив UUID пользователей должности, которым будет назначена работа Событие создания работы по выбору ответственного ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ При создании работы по выбору ответственного генерируется событие ``event.workflow.choose.user.create``, параметрами которого являются код этапа маршрута реестра и ``UUID`` указанной в качестве ответственного должности. Действия при обновлении ~~~~~~~~~~~~~~~~~~~~~~~~~~ При обновлении Synergy с версии ``hamming`` на версию ``minsky`` все запущенные процессы по выбору ответственного будут перенесены из Ежедневника руководителя в его потоки работ. Пример ~~~~~~~~ В маршруте реестра был добавлен этап "Работа", где в качестве ответственного была выбрана должность “Менеджер по продажам”: .. figure:: ../_static/image_11.png .. figure:: ../_static/image_12.png На эту должность назначено несколько сотрудников. После отправки на активацию записи этого реестра выполняется поиск заместителя, И.О. или руководителя того подразделения, к которому относится эта должность - в нашем случае подразделения "Отдел продаж Астана" - и ему создается работа с формулировкой “Необходимо выбрать пользователя для выполнения работы”: .. figure:: ../_static/image_13.png Для завершения работы нужно нажать на кнопку "Выбрать исполнителя". Откроется диалог выбора пользователей: .. figure:: ../_static/image_14.png Пользователи здесь уже отфильтрованы согласно указанной должности. Руководитель должен выбрать сотрудника для выполнения этапа маршрута и завершить свою работу, нажав на кнопку "Выбрать". Доступен выбор нескольких сотрудников: в этом случае для них будут созданы параллельные работы. Работа по выбору ответственного отображается и в ходе выполнения документа: .. figure:: ../_static/image_15.png