protected function getTemplatesIdList() { if (!Loader::includeModule('bizproc') || empty($this->iblockTypeId) || empty($this->iblockId)) { return array(); } $documentType = BizprocDocument::generateDocumentComplexType($this->iblockTypeId, $this->iblockId); $templates = array_merge(\CBPWorkflowTemplateLoader::SearchTemplatesByDocumentType($documentType, CBPDocumentEventType::Create), \CBPWorkflowTemplateLoader::SearchTemplatesByDocumentType($documentType, CBPDocumentEventType::Edit)); $templateData = array(); foreach ($templates as $template) { $templateData[$template['ID']]['ID'] = $template['ID']; $templateData[$template['ID']]['NAME'] = $template['NAME']; } return $templateData; }
public static function HasAutoWorkflows($ownerTypeID, $eventType) { if (!(IsModuleInstalled('bizproc') && CModule::IncludeModule('bizproc'))) { return false; } $ownerTypeID = (int) $ownerTypeID; $eventType = (int) $eventType; $docName = self::ResolveDocumentName($ownerTypeID); if ($docName === '') { return false; } $ownerTypeName = CCrmOwnerType::ResolveName($ownerTypeID); if ($ownerTypeName === '') { return false; } $ary = CBPWorkflowTemplateLoader::SearchTemplatesByDocumentType(array('crm', $docName, $ownerTypeName), $eventType); return !empty($ary); }
private function SaveOrderDataCompanyBP($companyId, $isNewCompany, $arParameters = array()) { $companyId = intval($companyId); if ($companyId <= 0) { return; } static $isBPIncluded = null; if ($isBPIncluded === null) { $isBPIncluded = CModule::IncludeModule("bizproc"); } if (!$isBPIncluded) { return; } static $arBPTemplates = null; if ($arBPTemplates === null) { $arBPTemplates = CBPWorkflowTemplateLoader::SearchTemplatesByDocumentType(array('crm', 'CCrmDocumentCompany', 'COMPANY'), $isNewCompany ? CBPDocumentEventType::Create : CBPDocumentEventType::Edit); } if (!is_array($arBPTemplates)) { return; } if (!is_array($arParameters)) { $arParameters = array($arParameters); } if (!array_key_exists("TargetUser", $arParameters)) { $assignedById = intval(COption::GetOptionString("crm", "sale_deal_assigned_by_id", "0")); if ($assignedById > 0) { $arParameters["TargetUser"] = "******" . $assignedById; } } $runtime = CBPRuntime::GetRuntime(); foreach ($arBPTemplates as $wt) { try { $wi = $runtime->CreateWorkflow($wt["ID"], array('crm', 'CCrmDocumentCompany', 'COMPANY_' . $companyId), $arParameters); $wi->Start(); } catch (Exception $e) { $this->AddError($e->getCode(), $e->getMessage()); } } }
if (!$canWrite) { $strError = GetMessage("CC_BLEE_ACCESS_DENIED_STATUS"); } if (!$strError) { $arBizProcParametersValues = array(); foreach ($arDocumentStates as $arDocumentState) { if (strlen($arDocumentState["ID"]) <= 0) { $templatesOnStartup = true; $arErrorsTmp = array(); $arBizProcParametersValues[$arDocumentState["TEMPLATE_ID"]] = CBPDocument::StartWorkflowParametersValidate($arDocumentState["TEMPLATE_ID"], $arDocumentState["TEMPLATE_PARAMETERS"], $documentType, $arErrorsTmp); foreach ($arErrorsTmp as $e) { $strError .= $e["message"] . "<br />"; } } } $templates = array_merge(\CBPWorkflowTemplateLoader::SearchTemplatesByDocumentType($documentType, CBPDocumentEventType::Create), \CBPWorkflowTemplateLoader::SearchTemplatesByDocumentType($documentType, CBPDocumentEventType::Edit)); $error = false; foreach ($templates as $template) { if (!CBPWorkflowTemplateLoader::isConstantsTuned($template["ID"]) && !$error) { $error = true; $strError .= GetMessage('CC_BLEE_IS_CONSTANTS_TUNED') . "<br />"; $arResult["isConstantsTuned"] = true; } } } } if (!$strError) { $obElement = new CIBlockElement(); if ($arResult["ELEMENT_ID"]) { $res = $obElement->Update($arResult["ELEMENT_ID"], $arElement, false, true, true); if (!$res) {
/** * Метод запускает рабочие потоки, настроенные на автозапуск. * * @param array $documentType - код типа документа в виде массива array(модуль, сущность, код_типа_документа_в_модуле). * @param int $autoExecute - флаг CBPDocumentEventType типа автозапуска (1 = CBPDocumentEventType::Create, 2 = CBPDocumentEventType::Edit). * @param array $documentId - код документа в виде массива array(модуль, сущность, код_документа_в_модуле). * @param array $arParameters - массив параметров запуска рабочего потока. * @param array $arErrors - массив ошибок, которые произошли при запуске рабочего потока в виде array(array("code" => код_ошибки, "message" => сообщение, "file" => путь_к_файлу), ...). */ public static function AutoStartWorkflows($documentType, $autoExecute, $documentId, $arParameters, &$arErrors) { $arErrors = array(); $runtime = CBPRuntime::GetRuntime(); if (!is_array($arParameters)) $arParameters = array($arParameters); if (!array_key_exists("TargetUser", $arParameters)) $arParameters["TargetUser"] = "******".intval($GLOBALS["USER"]->GetID()); $arWT = CBPWorkflowTemplateLoader::SearchTemplatesByDocumentType($documentType, $autoExecute); foreach ($arWT as $wt) { try { $wi = $runtime->CreateWorkflow($wt["ID"], $documentId, $arParameters); $wi->Start(); } catch (Exception $e) { $arErrors[] = array( "code" => $e->getCode(), "message" => $e->getMessage(), "file" => $e->getFile()." [".$e->getLine()."]" ); } } }
/** * Метод запускает рабочие потоки, настроенные на автозапуск. * * @param array $documentType - код типа документа в виде массива array(модуль, сущность, код_типа_документа_в_модуле). * @param int $autoExecute - флаг CBPDocumentEventType типа автозапуска (1 = CBPDocumentEventType::Create, 2 = CBPDocumentEventType::Edit). * @param array $documentId - код документа в виде массива array(модуль, сущность, код_документа_в_модуле). * @param array $arParameters - массив параметров запуска рабочего потока. * @param array $arErrors - массив ошибок, которые произошли при запуске рабочего потока в виде array(array("code" => код_ошибки, "message" => сообщение, "file" => путь_к_файлу), ...). */ public static function AutoStartWorkflows($documentType, $autoExecute, $documentId, $arParameters, &$arErrors) { $arErrors = array(); $runtime = CBPRuntime::GetRuntime(); if (!is_array($arParameters)) { $arParameters = array($arParameters); } if (!isset($arParameters[static::PARAM_TAGRET_USER])) { $arParameters[static::PARAM_TAGRET_USER] = is_object($GLOBALS["USER"]) ? "user_" . intval($GLOBALS["USER"]->GetID()) : null; } if (!isset($arParameters[static::PARAM_MODIFIED_DOCUMENT_FIELDS])) { $arParameters[static::PARAM_MODIFIED_DOCUMENT_FIELDS] = false; } $arWT = CBPWorkflowTemplateLoader::SearchTemplatesByDocumentType($documentType, $autoExecute); foreach ($arWT as $wt) { try { $wi = $runtime->CreateWorkflow($wt["ID"], $documentId, $arParameters); $wi->Start(); } catch (Exception $e) { $arErrors[] = array("code" => $e->getCode(), "message" => $e->getMessage(), "file" => $e->getFile() . " [" . $e->getLine() . "]"); } } }