• Модуль: bizproc
  • Путь к файлу: ~/bitrix/modules/bizproc/classes/general/stateservice.php
  • Класс: CBPStateService
  • Вызов: CBPStateService::AddWorkflow
public function	AddWorkflow($workflowId, $workflowTemplateId, $documentId, $starterUserId = 0)
{
	global $DB;

	$arDocumentId = CBPHelper::ParseDocumentId($documentId);

	$workflowId = trim($workflowId);
	if ($workflowId == '')
		throw new Exception("workflowId");

	$workflowTemplateId = intval($workflowTemplateId);
	if ($workflowTemplateId <= 0)
		throw new Exception("workflowTemplateId");

	$starterUserId = intval($starterUserId);
	if ($starterUserId <= 0)
		$starterUserId = "NULL";

	$dbResult = $DB->Query(
		"SELECT ID ".
		"FROM b_bp_workflow_state ".
		"WHERE ID = '".$DB->ForSql($workflowId)."' "
	);

	if ($arResult = $dbResult->Fetch())
		throw new Exception("WorkflowAlreadyExists");

	$DB->Query(
		"INSERT INTO b_bp_workflow_state (ID, MODULE_ID, ENTITY, DOCUMENT_ID, DOCUMENT_ID_INT, WORKFLOW_TEMPLATE_ID, MODIFIED, STARTED, STARTED_BY) ".
		"VALUES ('".$DB->ForSql($workflowId)."', ".(($arDocumentId[0] <> '') ? "'".$DB->ForSql($arDocumentId[0])."'" : "NULL").", '".$DB->ForSql($arDocumentId[1])."', '".$DB->ForSql($arDocumentId[2])."', ".intval($arDocumentId[2]).", ".intval($workflowTemplateId).", ".$DB->CurrentTimeFunction().", ".$DB->CurrentTimeFunction().", ".$starterUserId.")"
	);

	if (is_int($starterUserId))
		self::cleanRunningCountersCache($starterUserId);
}