%PDF- %PDF-
| Direktori : /home/bitrix/www/bitrix/activities/bitrix/lockdocumentactivity/ |
| Current File : /home/bitrix/www/bitrix/activities/bitrix/lockdocumentactivity/lockdocumentactivity.php |
<?
if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die();
class CBPLockDocumentActivity
extends CBPActivity
implements IBPActivityExternalEventListener
{
public function __construct($name)
{
parent::__construct($name);
$this->arProperties = array("Title" => "");
}
public function Execute()
{
$rootActivity = $this->GetRootActivity();
$documentId = $rootActivity->GetDocumentId();
$documentService = $this->workflow->GetService("DocumentService");
if (!($documentService->LockDocument($documentId, $this->GetWorkflowInstanceId())))
{
$this->WriteToTrackingService(GetMessage('BPLDA_SUBSCRIBE_ON_UNLOCK'));
$this->workflow->AddEventHandler($this->name, $this);
$documentService->SubscribeOnUnlockDocument($documentId, $this->GetWorkflowInstanceId(), $this->name);
return CBPActivityExecutionStatus::Executing;
}
return CBPActivityExecutionStatus::Closed;
}
public function Finalize()
{
$documentService = $this->workflow->GetService("DocumentService");
$documentService->UnlockDocument($this->GetDocumentId(), $this->GetWorkflowInstanceId());
}
public function OnExternalEvent($arEventParameters = array())
{
if ($this->executionStatus != CBPActivityExecutionStatus::Closed)
{
$rootActivity = $this->GetRootActivity();
$documentId = $rootActivity->GetDocumentId();
$documentService = $this->workflow->GetService("DocumentService");
if (!($documentService->LockDocument($documentId, $this->GetWorkflowInstanceId())))
return;
$documentService->UnsubscribeOnUnlockDocument($documentId, $this->GetWorkflowInstanceId(), $this->name);
$this->workflow->RemoveEventHandler($this->name, $this);
$this->workflow->CloseActivity($this);
}
}
public static function GetPropertiesDialog($documentType, $activityName, $arWorkflowTemplate, $arWorkflowParameters, $arWorkflowVariables, $arCurrentValues = null, $formName = "")
{
}
public static function GetPropertiesDialogValues($documentType, $activityName, &$arWorkflowTemplate, &$arWorkflowParameters, &$arWorkflowVariables, $arCurrentValues, &$arErrors)
{
return true;
}
}