- Модуль: webdav
- Путь к файлу: ~/bitrix/modules/webdav/classes/iblockbizproc.php
- Класс: CIBlockDocumentWebdav
- Вызов: CIBlockDocumentWebdav::StartWorkflowsExecuting
static function StartWorkflowsExecuting($documentId, $arDocumentStates, $arBizProcParametersValues, $arUserGroups, &$arErrors, $wfParams = array())
{
$arErrors = array();
$arBizProcWorkflowId = array();
$arDocumentStates = (is_array($arDocumentStates) ? $arDocumentStates : array());
$arBizProcParametersValues = (is_array($arBizProcParametersValues) ? $arBizProcParametersValues : array());
$arUserGroups = (is_array($arUserGroups) ? $arUserGroups : array());
foreach ($arDocumentStates as $arDocumentState)
{
if ($arDocumentState["ID"] == '')
{
$arErrorsTmp = array();
$arBizProcWorkflowId[$arDocumentState["TEMPLATE_ID"]] = CBPDocument::StartWorkflow(
$arDocumentState["TEMPLATE_ID"],
$documentId,
$arBizProcParametersValues[$arDocumentState["TEMPLATE_ID"]],
$arErrorsTmp);
foreach ($arErrorsTmp as $e)
$arError[] = array(
"id" => "bizproc_start_workflow",
"text" => $e["message"]);
}
}
if (empty($arError) && intval($_REQUEST["bizproc_index"]) > 0)
{
if (empty($arUserGroups))
{
$arUserGroups = call_user_func_array(
array($wfParams['DOCUMENT_TYPE'][1], "GetUserGroups"),
array(null, $documentId, $GLOBALS["USER"]->GetID()));
}
$bizprocIndex = intval($_REQUEST["bizproc_index"]);
for ($i = 1; $i <= $bizprocIndex; $i++)
{
$bpId = trim($_REQUEST["bizproc_id_".$i]);
$bpTemplateId = intval($_REQUEST["bizproc_template_id_".$i]);
$bpEvent = trim($_REQUEST["bizproc_event_".$i]);
if ($bpEvent <> '')
{
if ($bpId <> '')
{
if (!array_key_exists($bpId, $arDocumentStates))
continue;
}
else
{
if (!array_key_exists($bpTemplateId, $arDocumentStates))
continue;
$bpId = $arBizProcWorkflowId[$bpTemplateId];
}
$arErrorTmp = array();
CBPDocument::SendExternalEvent(
$bpId,
$bpEvent,
array("Groups" => $arUserGroups, "User" => $GLOBALS["USER"]->GetID()),
$arErrorTmp);
foreach ($arErrorsTmp as $e)
$arError[] = array(
"id" => "bizproc_send_external_event",
"text" => $e["message"]);
}
}
}
return empty($arError);
}