Поддержка серверов

CBPWorkflow::RunQueuedItem: метод Битрикс

Постоянная ссылка: http://bxapi.ru/src/?id=169770

<?php 
//    /bitrix/modules/bizproc/classes/general/workflow.phpCBPWorkflow::RunQueuedItem()
//    445:

    
private function RunQueuedItem(CBPActivity $activity$activityOperationException $exception null)
    {
        
/** @var $trackingService CBPTrackingService */
        
if ($activityOperation == CBPActivityExecutorOperationType::Execute)
        {
            if (
$activity->executionStatus == CBPActivityExecutionStatus::Executing)
            {
                try
                {
                    
$trackingService $this->GetService("TrackingService");
                    
$trackingService->Write($this->GetInstanceId(), CBPTrackingType::ExecuteActivity$activity->GetName(), $activity->executionStatus$activity->executionResult, ($activity->IsPropertyExists("Title") ? $activity->Title ""), "");
                    
$newStatus $activity->Execute();

                    
//analyse robots - Temporary, it is prototype
                    
if ($trackingService->isForcedMode($this->GetInstanceId()))
                    {
                        
$activityType substr(get_class($activity), 3);
                        if (!
in_array($activityType, [
                            
'SequentialWorkflowActivity',
                            
'ParallelActivity',
                            
'SequenceActivity',
                            
'DelayActivity',
                            
'IfElseActivity',
                            
'IfElseBranchActivity'
                        
]))
                        {
                            
/** @var \Bitrix\Bizproc\Service\Analytics $analyticsService */
                            
$analyticsService $this->GetService("AnalyticsService");
                            if (
$analyticsService->isEnabled())
                            {
                                
$analyticsService->write($activity->GetDocumentId(), 'robot_run'$activityType);
                            }
                        }
                    }

                    if (
$newStatus == CBPActivityExecutionStatus::Closed)
                        
$this->CloseActivity($activity);
                    elseif (
$newStatus != CBPActivityExecutionStatus::Executing)
                        throw new 
Exception("InvalidExecutionStatus");
                }
                catch (
Exception $e)
                {
                    throw 
$e;
                }
            }
        }
        elseif (
$activityOperation == CBPActivityExecutorOperationType::Cancel)
        {
            if (
$activity->executionStatus == CBPActivityExecutionStatus::Canceling)
            {
                try
                {
                    
$trackingService $this->GetService("TrackingService");
                    
$trackingService->Write($this->GetInstanceId(), CBPTrackingType::CancelActivity$activity->GetName(), $activity->executionStatus$activity->executionResult, ($activity->IsPropertyExists("Title") ? $activity->Title ""), "");

                    
$newStatus $activity->Cancel();

                    if (
$newStatus == CBPActivityExecutionStatus::Closed)
                        
$this->CloseActivity($activity);
                    elseif (
$newStatus != CBPActivityExecutionStatus::Canceling)
                        throw new 
Exception("InvalidExecutionStatus");
                }
                catch (
Exception $e)
                {
                    throw 
$e;
                }
            }
        }
        elseif (
$activityOperation == CBPActivityExecutorOperationType::HandleFault)
        {
            if (
$activity->executionStatus == CBPActivityExecutionStatus::Faulting)
            {
                try
                {
                    
$trackingService $this->GetService("TrackingService");
                    
$trackingService->Write($this->GetInstanceId(), CBPTrackingType::FaultActivity$activity->GetName(), $activity->executionStatus$activity->executionResult, ($activity->IsPropertyExists("Title") ? $activity->Title ""), ($exception != null ? ($exception->getCode()? "[".$exception->getCode()."] " '').$exception->getMessage() : ""));

                    
$newStatus $activity->HandleFault($exception);

                    if (
$newStatus == CBPActivityExecutionStatus::Closed)
                        
$this->CloseActivity($activity);
                    elseif (
$newStatus != CBPActivityExecutionStatus::Faulting)
                        throw new 
Exception("InvalidExecutionStatus");
                }
                catch (
Exception $e)
                {
                    throw 
$e;
                }
            }
        }
    }

Блог разработчика

9 Августа 2016 ResizeImageGet и простой водяной знак налету

Сегодня поговорим о том как проще всего воткнуть водяной знак на картинки в Битрикс. Например, на все изображения каталога.

21 Июля 2016 Добавление вкладки в CRM коробки Битрикс24

В этом посте я покажу, как легко и просто добавить вкладку в сущность CRM. И не просто добавить, а вывести там свой контент.

21 Июля 2016 Как просто обращаться из коробки Битрикс24 на сайт на базе Битрикс

К примеру вам хочется внутренним скриптом дернуть с сайта-магазина информацию, которая там, в свою очередь, закрыта некоторыми правами. Например, админскими. Можно конечно мутить свой REST, или иной формат общения, но проще всего воспользоваться штатным инструментом:

Текст сообщения*
Загрузить изображение