Beispiel #1
0
 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());
         }
     }
 }
Beispiel #4
0
     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) {
Beispiel #5
0
	/**
	* Метод запускает рабочие потоки, настроенные на автозапуск.
	*
	* @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()."]"
				);
			}
		}
	}
Beispiel #6
0
 /**
  * Метод запускает рабочие потоки, настроенные на автозапуск.
  *
  * @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() . "]");
         }
     }
 }