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

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

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

//    CBPWorkflow::RunQueuedItem()
//    /bitrix/modules/bizproc/classes/general/workflow.php:455

    private function RunQueuedItem(CBPActivity $activity, $activityOperation, Exception $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, или иной формат общения, но проще всего воспользоваться штатным инструментом:

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