%PDF- %PDF-
| Direktori : /home/bitrix/www/bitrix/modules/bizproc/lib/automation/engine/ |
| Current File : //home/bitrix/www/bitrix/modules/bizproc/lib/automation/engine/robot.php |
<?php
namespace Bitrix\Bizproc\Automation\Engine;
class Robot
{
/** @var array */
protected $bizprocActivity;
/** @var DelayInterval */
protected $delayInterval;
protected $delayName;
/** @var ConditionGroup $condition */
protected $condition;
protected $executeAfterPrevious = false;
public function __construct(array $bizprocActivity)
{
if (isset($bizprocActivity['Delay']))
{
$this->setDelayInterval(new DelayInterval($bizprocActivity['Delay']));
unset($bizprocActivity['Delay']);
}
if (isset($bizprocActivity['DelayName']))
{
$this->setDelayName($bizprocActivity['DelayName']);
unset($bizprocActivity['DelayName']);
}
if (isset($bizprocActivity['Condition']))
{
$this->setCondition(new ConditionGroup($bizprocActivity['Condition']));
unset($bizprocActivity['Condition']);
}
if (isset($bizprocActivity['ExecuteAfterPrevious']) && (int)$bizprocActivity['ExecuteAfterPrevious'] === 1)
{
$this->setExecuteAfterPrevious();
}
unset($bizprocActivity['ExecuteAfterPrevious']);
$this->bizprocActivity = $bizprocActivity;
}
/**
* @param DelayInterval $delayInterval Robot delay interval.
*/
public function setDelayInterval(DelayInterval $delayInterval)
{
$this->delayInterval = $delayInterval;
}
/**
* @return DelayInterval Robot delay interval.
*/
public function getDelayInterval()
{
return $this->delayInterval;
}
/**
* @param ConditionGroup $condition Robot condition.
*/
public function setCondition(ConditionGroup $condition)
{
$this->condition = $condition;
}
/**
* @return ConditionGroup Robot condition.
*/
public function getCondition()
{
return $this->condition;
}
/**
* @param string $delayName Robot delay name.
*/
public function setDelayName($delayName)
{
$this->delayName = (string)$delayName;
}
/**
* @return string Robot delay name.
*/
public function getDelayName()
{
return $this->delayName;
}
public function setExecuteAfterPrevious()
{
$this->executeAfterPrevious = true;
}
public function isExecuteAfterPrevious()
{
return $this->executeAfterPrevious;
}
public function getProperties()
{
return isset($this->bizprocActivity['Properties']) && is_array($this->bizprocActivity['Properties'])
? $this->bizprocActivity['Properties'] : array();
}
public function getProperty($name)
{
$name = (string)$name;
$properties = $this->getProperties();
return array_key_exists($name, $properties) ? $properties[$name] : null;
}
public function getTitle()
{
return $this->getProperty('Title');
}
public function getName()
{
return $this->bizprocActivity['Name'];
}
public function getType()
{
return $this->bizprocActivity['Type'];
}
public function toArray()
{
$activity = $this->bizprocActivity;
unset($activity['Children']); //Robot activities has no Children
$delayInterval = $this->getDelayInterval();
if ($delayInterval)
{
$activity['Delay'] = $delayInterval->toArray();
$activity['DelayName'] = $this->getDelayName();
}
if ($this->isExecuteAfterPrevious())
$activity['ExecuteAfterPrevious'] = 1;
$condition = $this->getCondition();
if ($condition)
{
$activity['Condition'] = $condition->toArray();
}
return $activity;
}
public function getBizprocActivity()
{
$activity = $this->bizprocActivity;
$activity['Children'] = array();
return $activity;
}
public static function generateName()
{
return 'A'.mt_rand(10000, 99999)
.'_'.mt_rand(10000, 99999)
.'_'.mt_rand(10000, 99999)
.'_'.mt_rand(10000, 99999);
}
}