Создание бизнес процесса, установка шаблона и привязка к информационному блоку средствами API

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);


Яндекс.Метрика