• Модуль: bizproc
  • Путь к файлу: ~/bitrix/modules/bizproc/classes/general/workflowpersister.php
  • Класс: CBPWorkflowPersister
  • Вызов: CBPWorkflowPersister::saveWorkflow
public function saveWorkflow(CBPActivity $rootActivity, $bUnlocked)
{
	$creationData = [];
	if ($rootActivity->workflow->isNew())
	{
		$dt = $rootActivity->GetDocumentId();
		$creationData['MODULE_ID'] = $dt[0];
		$creationData['ENTITY'] = $dt[1];
		$creationData['DOCUMENT_ID'] = $dt[2];
		$creationData['WORKFLOW_TEMPLATE_ID'] = $rootActivity->GetWorkflowTemplateId();
		$creationData['STARTED_EVENT_TYPE'] = $rootActivity->getDocumentEventType();

		$startedBy = $rootActivity->{CBPDocument::PARAM_TAGRET_USER};
		if ($startedBy)
		{
			$creationData['STARTED_BY'] = CBPHelper::StripUserPrefix($startedBy);
		}
		/** @var CBPCompositeActivity $rootActivity */
		$creationData['RO'] = $this->getJsonCompressed($rootActivity->pullReadOnlyData());
	}
	else
	{
		/** @var CBPCompositeActivity $rootActivity */
		$rootActivity->pullReadOnlyData();
	}

	$workflowStatus = $rootActivity->GetWorkflowStatus();

	if ($rootActivity->workflow->isAbandoned())
	{
		$workflowStatus = CBPWorkflowStatus::Completed;
	}

	$buffer = "";
	if (($workflowStatus != CBPWorkflowStatus::Completed) && ($workflowStatus != CBPWorkflowStatus::Terminated))
	{
		$buffer = $this->GetSerializedForm($rootActivity);
	}

	$this->InsertWorkflow($rootActivity->GetWorkflowInstanceId(), $buffer, $workflowStatus, $bUnlocked, $creationData);
}