Просмотров: 11738
Дата последнего изменения: 27.10.2016
Среди стандартных действий бизнес-процессов нет специального действия, которое непосредственно запустило бы выполнение другого бизнес-процесса. Поэтому необходимо воспользоваться универсальным действием выполнения PHP кода и API модуля бизнес-процессов. Рассмотрим пример решения данной задачи на основе запуска бизнес-процесса Двухэтапное утверждение из стандартных шаблонов. Для этого необходимо:
- В визуальном конструкторе добавить в шаблон запускающего бизнес-процесса действие PHP код (находится в разделе Прочее). Это действие позволяет выполнить произвольный PHP код.
Внимание! Для использования данного действия вы должны быть наделены правами администратора.
- Откройте диалог настроек параметров действия с помощью иконки
и введите код:
CBPDocument::StartWorkflow(
6,
array("bizproc","CIBlockDocument",{=Document:ID}),
array("Voters"=>array("user_1")),
$arErrors
);
Где:
- Первый параметр - это ID запускаемого шаблона бизнес процесса. В нашем случае это
6
, что соответствует Двухэтапному утверждению.
Примечание: ID одних и тех же бизнес процессов могут отличаться для разных установок продукта. Всегда внимательно проверяйте данный параметр.
- Второй параметр - это код документа, для которого создается бизнес-процесс. Он задается в виде массива, элементами которого являются соответственно название модуля, класс документа и код документа в модуле.
Примечание: шаблон запускаемого бизнес-процесса должен соответствовать типу указываемого документа. В данном примере бизнес-процесс запускается для того же элемента информационных блоков, над которым работает запускающий бизнес-процесс.
- Третий параметр - это массив входных параметров запускаемого бизнес-процесса. Его состав зависит от бизнес-процесса. В нашем случае, это тот пользователь, которого необходимо ознакомить с документом. В примере, это администратор сайта.
Примечание: если передается значение множественного параметра, то оно должно передаваться в виде массива.
- В четвертом параметре по ссылке передается переменная, в которой будут возвращены ошибки запуска бизнес-процесса. Этот параметр можно проигнорировать, если обработка ошибок не важна.
Пример вызова бизнес-процесса для CRM
|
$workflowTemplateId=32;
$wfId = CBPDocument::StartWorkflow(
$workflowTemplateId,
array("crm","CCrmDocumentLead","LEAD_".intval($id)),
array(),
$arErrors
);
|