Ситуация: есть блок утверждения с несколькими согласующими. Необходимо обновлять статус по каждому из них, кто проголосовал и когда.
Кто сталкивался?
Кто сталкивался?
08.06.2017 19:18:48
Ситуация: есть блок утверждения с несколькими согласующими. Необходимо обновлять статус по каждому из них, кто проголосовал и когда.
Кто сталкивался? |
|
|
|
09.06.2017 10:09:10
Роман Косинцев,
Делали что-то подобное (фиксирование голосва - за/против с новым возвращаемым значением - кто не успел проголосовать). Сказу скажу - нормальных хендлеров мы не нашли, поэтому - копируем код активити и в нем уже дописываем кастомный код. 1) Необходимо продумать как вы будете фиксировать в каком блоке какого бп будет происходить логгирование и как вы будете доставать результаты. Это нужно сделать в методе Subscribe. Но опираться нужно на $this->GetWorkflowInstanceId() - потому что многие другие переменные будут утеряны, при голосовании (потеря контекста). 2) Далее фиксировать голоса нужно одновременно в 2х функциях: - OnExternalEvent - туда попадает все, но при отправки от агента сразу же уходит на другую функцию. Соответственно тут можно и нужно фиксировать голоса за и против. - ExecuteOnNonApprove - сюда попадает интепретатор в двух случаях - когда кто-то сказал нет и работа блока окончена и когда от агента пришло сообщение об окончании времени голосования. 3) Сами голоса в рамках всего контекта вы можете получить в $this->arApproveResults - ассоциативный массив Пользователь-Голос(true/false) [для всех проголосовавших пользователей] и в OnExternalEvent - $arEventParameters["APPROVE"] или $approve [при голосовании сотрудника]
Голосуй за идеи по развитию API Bitrix:
|
||||
|
|
|||