• Модуль: crm
  • Путь к файлу: ~/bitrix/modules/crm/lib/automation/engine/template.php
  • Класс: Bitrix\Crm\Automation\Engine\Template
  • Вызов: Template::unConvertTemplate
protected function unConvertTemplate()
{
	$this->bizprocTemplate = array(
		'ID' => isset($this->template['TEMPLATE_ID']) ? $this->template['TEMPLATE_ID'] : 0,
		'AUTO_EXECUTE' => \CBPDocumentEventType::Automation,
		'TEMPLATE'     => array(array(
			'Type' => 'SequentialWorkflowActivity',
			'Name' => 'Template',
			'Properties' => array('Title' => 'CRM Automation template'),
			'Children' => array()
		)),
		'SYSTEM_CODE'  => 'bitrix_crm_automation'
	);

	if ($this->robots)
	{
		$parallelActivity = $this->createParallelActivity();
		$sequence = $this->createSequenceActivity();

		foreach ($this->robots as $i => $robot)
		{
			if ($i !== 0 && !$robot->isExecuteAfterPrevious())
			{
				$parallelActivity['Children'][] = $sequence;
				$sequence = $this->createSequenceActivity();
			}

			$delayInterval = $robot->getDelayInterval();
			if ($delayInterval && !$delayInterval->isNow())
			{
				$delayName = $robot->getDelayName();
				if (!$delayName)
				{
					$delayName = Robot::generateName();
					$robot->setDelayName($delayName);
				}

				$sequence['Children'][] = $this->createDelayActivity(
					$delayInterval->toActivityProperties(),
					$delayName
				);
			}

			$activity = $robot->getBizprocActivity();
			$condition = $robot->getCondition();

			if ($condition && count($condition->getItems()) > 0)
			{
				$activity = $condition->createBizprocActivity($activity);
			}

			$sequence['Children'][] = $activity;
		}

		$parallelActivity['Children'][] = $sequence;

		if (count($parallelActivity['Children']) < 2)
		{
			$parallelActivity['Children'][] = $this->createSequenceActivity();
		}

		$this->bizprocTemplate['TEMPLATE'][0]['Children'][] = $parallelActivity;
	}
}