В бизнес-процессе есть переменная, в которой указан id пользователя, на которого назначаются определённый задачи. Необходимо сделать так, чтобы при делегировании этим пользователем текущей задачи другому пользователю, все последующие задачи назначались другому пользователю. Самое очевидное решение - изменить значение переменной.
Что я делаю:
- по событию onTaskDelegate я получаю id текущей задачи и id пользователя, которому делегировали задачу
- с помощью CBPTaskService::GetList я получаю worflow id бизнес-процесса
- затем обновляю переменную таким образом
Что я делаю:
- по событию onTaskDelegate я получаю id текущей задачи и id пользователя, которому делегировали задачу
- с помощью CBPTaskService::GetList я получаю worflow id бизнес-процесса
- затем обновляю переменную таким образом
Код |
---|
$persister = CBPWorkflowPersister::GetPersister(); $rootActivity = $persister->LoadWorkflow($task['WORKFLOW_ID'], true); /**@var $rootActivity CBPActivity */ $rootActivity->SetVariable('SCANS_RESPONSIBLE', 'user_' . $userId); |
- если тут же проверить эту переменную $rootActivity->GetVariable('SCANS_RESPONSIBLE'), то выводится изменённое значение, но задачи продолжают назначаться на изначально указанного в переменной пользователя. ,т.е., значение не меняется. Не могу понять, как это работает и что сделать, чтобы изменить значение в текущем БП.
Весь код примерно выглядит так:
Код |
---|
function OnTaskDelegateHandler($taskId, $fromUserId, $toUserId) { $task = CBPTaskService::GetList( [], ['ID' => $taskId], false, [], ['ID', 'WORKFLOW_ID'] )->fetch(); $persister = CBPWorkflowPersister::GetPersister(); $rootActivity = $persister->LoadWorkflow($task['WORKFLOW_ID'], true); \Bitrix\Main\Diag\Debug::writeToFile($rootActivity->GetVariable('SCANS_RESPONSIBLE')); // Выводит изначальное значение $rootActivity->SetVariable('SCANS_RESPONSIBLE', 'user_' . $toUserId); \Bitrix\Main\Diag\Debug::writeToFile($rootActivity->GetVariable('SCANS_RESPONSIBLE')); // Выводит новое значение } |