Здравствуйте, коллеги!
Пытаюсь решить задачу, нужна подсказка.
Есть определенный БП, который запустил руководитель. В теле БП руководитель выбирает нескольких сотрудников. БП руководителя инициирует каждому из выбранных сотрудников свой отдельный БП.
Возникает трудность: как сделать так, чтоб эти под процессы принадлежащий именно выбранным сотрудникам (и что бы каждый из них мог довести уже свой отдельный процесс), а не инициатору выбора?
Нравится
Можно попробовать так:
В подпроцессах создать параметр диаграммы OwnerID, и в первой задаче подпроцесса привязать параметр диаграммы OwnerID к параметру процесса OwnerID.
Потом возможны такие варианты:
1) если не нужно связывать процесс руководителя с подпроцессами сотрудников, то можно в скрипте к процессу запустить подпроцессы примерно так:
var ParamNames = new Array('OwnerID'); var ParamValues = new Array(null); for (var i = 0; i < OwnerIDs.length; i++) { ParamValues[0] = OwnerIDs[i]; WFStartByID('{ИД сервиса-диаграммы}', ParamNames, ParamValues); }
2) если нужно привязаться к процессу руководителя, то (предполагаем, что количество сотрудников заранее неизвестно, а вычисляется по БП на каком то этапе):
- в родительской диаграмме ставим блок-подпроцесс, параметр которого OwnerID связываем с параметром основного процесса;
- перед этим блоком ставим блок-ромбик (условие), из которого будет два выхода - один на подпроцесс, второй на себя (это чтобы зациклить создание определенного количества подпроцессов). В обработчике условия собственно указываем очередное значение параметра OwnerID, и если еще не для всех запустили подпроцесс - зацикливаемся, иначе идем дальше.
Это так, схематично, отвечу на вопросы если надо :)
Валерий, спасибо за совет. Завтра еще раз проверим, как-то не получалось :(
Валерий, я пробовал Ваш способ, делал немного по другому - без разницы!
Новый БП получает OwnerID, но инициатором и дальше остается тот кто запустил. Соответственно следующий уже шаг обратно возвращается к инициатору БП, а не тому, чей OwnerID мы передали.
Нам, фактически, нужно изменить ответственного по БП.
Суть задачи ясна? Просто возник вопрос возможно ли такое вообще сделать в БП...
Немного поэкспериментировал, прикладываю сервисы для 3.3.2.
Чтобы обойтись без правки базовых сервисов (wa_TaskAction и т.п), можно сделать так (это как раз в примере):
1) в дочернем БП создаем параметр диаграммы ChildOwnerID, и в каждом блоке-задаче процесса параметр OwnerID ставим в соответствие параметру ChildOwnerID диаграммы;
2) в родительском БП
- также делаем параметр ChildOwnerID
- перед запуском подпроцесса устанавливаем параметр в нужный ИД контакта
- ставим параметр ChildOwnerID блока-подпроцесса в соответствие параметру диаграммы ChildOwnerID