664
Предположим, что у нас в папке с модулем лежит экспортированный файл шаблона бизнес процесса по пути /install/public/bp/bp.bpt
//подключаем модуль бизнес процесса и модуль информационного блока
\Bitrix\Main\Loader::includeModule("bizproc");
\Bitrix\Main\Loader::includeModule("iblock");
//формируем массив данных для создание информационного блока
$arBiz = array(
"IBLOCK_TYPE_ID" => "bitrix_processes",
"CODE" => "CODE_IB",
"XML_ID" => "XML_ID_IB",
"LID" => 's1',
"NAME" => "NAME_IB",
"ACTIVE" => 'Y',
"SORT" => 100,
"INDEX_ELEMENT" => "N",
"WORKFLOW" => 'N',
"BIZPROC" => 'Y',
"DESCRIPTION" => "DESC_IB",
"DESCRIPTION_TYPE" => 'text',
"VERSION" => 1,
"GROUP_ID" => array(2 => "T", 1=>"T"),
);
//создаем информационной блок
$ib = new \CIBlock();
$IBLOCK_ID_BIZ = $ib->Add($arBiz);
// получаем содержимое шаблона БП
$f = fopen($_SERVER["DOCUMENT_ROOT"] . "/local/modules/#MODULE_ID#/install/public/bp/bp.bpt", "rb");
$datum = fread($f, filesize($_SERVER["DOCUMENT_ROOT"] . "/local/modules/#MODULE_ID#/install/public/bp/bp.bpt"));
fclose($f);
//распаковываем и десериализуем содержимое
$datumTmp = @gzuncompress($datum);
$datumTmp = @unserialize($datumTmp);
//формируем массив данных для создания шаблона бизнес процесса
$arFieldsT = array(
"DOCUMENT_TYPE" => array("lists", "BizprocDocument", "iblock_" . $IBLOCK_ID_BIZ),
"AUTO_EXECUTE" => \CBPDocumentEventType::Create,
"NAME" => "BIZPROC_MODULE_NAME",
"DESCRIPTION" => "",
"TEMPLATE" => $datumTmp["TEMPLATE"],
"PARAMETERS" => $datumTmp["PARAMETERS"],
"VARIABLES" => $datumTmp["VARIABLES"],
"CONSTANTS" => $datumTmp["CONSTANTS"],
"MODIFIER_USER" => intval($GLOBALS["USER"]->GetID()),
"USER_ID" => $GLOBALS["USER"]->GetID(),
"ACTIVE" => 'Y',
);
//создаем и привязываем шаблон БП к ИБ
$tmId = \CBPWorkflowTemplateLoader::Add($arFieldsT);