Процесс Смена исполнителя

Script: ru.bgcrm.dyn.ufanet.process.executorChange.ExecutorChangeListener

Цели и назначение

Целью процесса является предоставление возможности ответственным лицам самостоятельно производить замену исполнителей в процессах. Сам процесс реализует возможность смены исполнителя процесса через связанный процесс с возможностью конфигурации на уровне типа процесса.

Quick Start

Шаги перед началом работы:

  1. Необходимо в конфигурацию типа родительского процесса добавить возможность создавать связанный процесс "Смена исполнителя":

    processCreateLink.1.title=Смена исполнителя
    processCreateLink.1.linkType=processMade
    processCreateLink.1.processTypeId=11244
  2. Необходимо добавить конфигурацию для работы с процессом "Смена исполнителя" в родительский процесс.

    executors.management.enabled=true - Обязательно включаем функционал смены исполнителя (по-умолчанию false)
    
    executors.management.roles=0,1 - Выбираем доступные для смены исполнителя роли (по-умолчанию 0)
    
    executors.management.allowOperationGroups=1,2,3 - Выбираем группы пользователей, для которых доступна операция смена исполнителя (Опционально, по-умолчанию без ограничений)
    
    executors.management.allowOperationUsers=1,2,3 - Проставляем Id пользователей, для которых доступна операция смена исполнителя (Опционально, по-умолчанию без ограничений)
    
    executors.management.allowChangeGroups=1,2,3 - Проставляем группы пользователей, исполнители которых могут быть изменены (Опционально, по-умолчанию без ограничений)
    
    executors.management.exchangeableGroups=1,2,3 - Проставляем группы пользователей, на которые могут быть заменены исполнители (Опционально, по-умолчанию без ограничений)
    
    executors.management.allowSelfChange=true - Возможность смены исполнителя самим исполнителем (по-умолчанию false. При значении true пользователь сможет заменить только себя, если является одним из исполнителей процесса)
    
    executors.management.needReason=true - Необходимость указания причины смены исполнителя (по-умолчанию true. Влияет на наличие шага с указанием причины в мастере.)
    
    executors.management.exchangeableGroupsConflictStrategy=first - Стратегия выбора группы для нового исполнителя, при наличии нескольких подходящих (по умолчанию error). В случае с first, будет выбрана первая группа из списка. При error, соответственно, будет выдаваться ошибка о наличии у исполнителя нескольких подходящих групп.

Заполнение процесса

На этом шаге пользователи заполняют все необходимые параметры.

  1. Выбор исполнителя которого требуется заменить. Выбираем исполнителя с учетом роли.

    Выбор исполнителя которого требуется заменить

  2. Выбор исполнителя на которого будем менять.

    Выбор исполнителя на которого будем менять

    P.S. Возможен ручной поиск по списку.

  3. Указание причины замены (Шаг опциональный, зависит от конфигурации типа родительского процесса executors.management.needReason)

    Указание причины замены

По завершению мастера, процесс автоматически перейдет в статус закрыт, и будет произведена смена исполнителей.

Описание некоторых возможных ошибок

  • Ошибка при завершении мастера и попытке автоматической смены статуса на закрыт:
    "Возможно в составе исполнителей процесса на данный момент произошли изменения! Данный исполнитель отсутствует! Просьба заново получить список исполнителей через параметр «Кого заменить»".
    Для корректного закрытия процесса нужно снова выбрать заменяемого исполнителя из обновленного актуального списка исполнителей родительского процесса.

  • Ошибка при попытке создания процесса Смена исполнителя:
    "В конфигурации типа процесса отключен функционал смены исполнителя".
    Текущая ошибка означает что в конфигурации типа родительского процесса отсутствует, или отключена, конфигурация executors.management.enabled, которая отвечает за работу функционала смены исполнителя

  • Ошибка при попытке создания процесса Смена исполнителя:
    "В процессе нет исполнителей для замены".
    Ошибка указывает на отсутствие исполнителей, подходящих под условие фильтрации, заданной конфигурацией родительского процесса.

  • Ошибка при попытке создания процесса Смена исполнителя:
    "У пользователя отсутствуют права для смены исполнителя в процессе"
    Эта ошибка указывает на то, что пользователь не подходит под возможные условия для смены исполнителей в родительском процессе:

    • Не входит в группы пользователей, для которых доступна операция смена исполнителя. [Конфигурация типа родительского процесса executors.management.allowOperationGroups];

    • Не входит в список пользователей, для которых доступна операция смена [конфигурация типа родительского процесса executors.management.allowOperationUsers];

    • Отключена возможность смены исполнителя(себя) самим исполнителем [конфигурация типа родительского процесса executors.management.allowSelfChange].

  • Ошибка при завершении мастера и попытке автоматической смены статуса на закрыт:+ "Ошибка при смене исполнителя по процессу #[id процесса]: у нового исполнителя обнаружено несколько подходящих групп - [id подходящих групп]".
    Это означает, что в конфигурации родительского процесса не задана стратегия выбора подходящей группы executors.management.exchangeableGroupsConflictStrategy (по умолчанию = error). Для кейса с несколькими подходящими группами возможно установить выбор первой подходящей группы из списка, задав значение first.

Конфигурация

#Включение функционала смены исполнителя (по-умолчанию false)
executors.management.enabled=true

#Доступные для смены исполнителя роли (по-умолчанию 0)
executors.management.roles=0,1

#Группы пользователей, для которых доступна операция смена исполнителя
executors.management.allowOperationGroups=1,2,3

#Пользователи, для которых доступна операция смена исполнителя
executors.management.allowOperationUsers=1,2,3

#Группы пользователей, исполнители которых могут быть изменены
executors.management.allowChangeGroups=1,2,3

#Группы пользователей, на которые могут быть заменены исполнители
executors.management.exchangeableGroups=1,2,3

#Возможность смены исполнителя самим исполнителем (по-умолчанию false)
executors.management.allowSelfChange=true

#Необходимость указания причины смены исполнителя (по-умолчанию true)
executors.management.needReason=true

#Стратегия выбора группы для нового исполнителя (при наличии нескольких подходящих)
executors.management.exchangeableGroupsConflictStrategy=first (по умолчанию error)

Алгоритм получения исполнителей участвующих в замене

Получение списка исполнителей, замена которых будет производиться:

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

    Например, при executors.management.roles=1, список будет состоять только из пользователей с ролью «Инициация», исключая другие роли.

    (1) Полный список

    Полный список

    (2) Список с фильтром по роли "Инициация"

    Список с фильтром по роли

  2. Получение списка пользователей, на которых будет производиться замена.

    Список пользователей для замены формируется на основе выбранного исполнителя. Например, при выборе исполнителя в роли "Выполнение, будет производиться фильтрация подходящих групп на основе разрешенных групп в свойствах типа процесса с ролью "Выполнение", и групп пользователей(заданных в конфигурации типа родительского процесса), на которые могут быть заменены исполнители.

    При отсутствии ограничений в конфигурации, для выбора будет возвращаться список всех пользователей.

Пример конфигурации для работы с процессом

(Из процесса "Сделка с оборудованием")

#Для процесса смены исполнителя
executors.management.enabled=true
executors.management.needReason=true
#executors.management.allowSelfChange=true
executors.management.allowOperationGroups=303,490,514,515,517,518,519,520,521,537,567,915,1005,1215,1365,1437
executors.management.roles=1
executors.management.allowOperationUsers=4996,9110,5372
executors.management.allowChangeGroups=4,9,16,17,19,22,25,26,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,61,63,64,65,66,67,68,69,75,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,105,106,108,109,121,124,196,229,296,303,312,313,314,318,325,349,362,363,422,447,449,459,453,472,484,488,491,492,504,512,537,544,613,765,766,767,768,769,776,800,802,811,812,813,814,870,886,887,904,919,935,968,969,971,972,973,974,979,982,984,985,986,987,988,989,990,993,996,1004,1007,1011,1025,1041,1045,1046,1047,1051,1059,1060,1064,1074,1078,1079,1080,1081,1082,1084,1087,1089,1092,1099,1105,1106,1107,1112,1114,1115,1116,1117,1118,1123,1125,1126,1127,1128,1134,1135,1154,1159,1160,1173,1174,1177,1179,1190,1192,1196,1212,1213,1217,1218,1227,1229,1236,1240,1249,1253,1264,1271,1273,1275,1280,1289,1290,1292,1297,1299,1300,1301,1302,1305,1307,1310,1316,1317,1333,1334,1335,1336,1339,1340,1355,1356,1357,1358,1359,1360,1361,1362,1367,1374,1378,1379,1381,1382,1387,1388,1389,1392,1394,1395,1396,1399,1400,1402,1403,1406,1407,1408,1409,1411,1415,1417,1418,1419,1420,1422,1423,1427,1428,1429,1431,1433,1434,1442,1445,1446,1456
executors.management.exchangeableGroups=4,9,16,17,19,22,25,26,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,61,63,64,65,66,67,68,69,75,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,105,106,108,109,121,124,196,229,296,303,312,313,314,318,325,349,362,363,422,447,449,459,453,472,484,488,491,492,504,512,537,544,613,765,766,767,768,769,776,800,802,811,812,813,814,870,886,887,904,919,935,968,969,971,972,973,974,979,982,984,985,986,987,988,989,990,993,996,1004,1007,1011,1025,1041,1045,1046,1047,1051,1059,1060,1064,1074,1078,1079,1080,1081,1082,1084,1087,1089,1092,1099,1105,1106,1107,1112,1114,1115,1116,1117,1118,1123,1125,1126,1127,1128,1134,1135,1154,1159,1160,1173,1174,1177,1179,1190,1192,1196,1212,1213,1217,1218,1227,1229,1236,1240,1249,1253,1264,1271,1273,1275,1280,1289,1290,1292,1297,1299,1300,1301,1302,1305,1307,1310,1316,1317,1333,1334,1335,1336,1339,1340,1355,1356,1357,1358,1359,1360,1361,1362,1367,1374,1378,1379,1381,1382,1387,1388,1389,1392,1394,1395,1396,1399,1400,1402,1403,1406,1407,1408,1409,1411,1415,1417,1418,1419,1420,1422,1423,1427,1428,1429,1431,1433,1434,1442,1445,1446,1456
executors.management.exchangeableGroupsConflictStrategy=first