/**
  * @see BaseJob::run()
  */
 public function run()
 {
     try {
         $originalUser = Yii::app()->user->userModel;
         Yii::app()->user->userModel = BaseControlUserConfigUtil::getUserToRunAs();
         $processedModelsCount = 0;
         $batchSize = $this->resolveBatchSize();
         if ($batchSize != null) {
             $resolvedBatchSize = $batchSize + 1;
         } else {
             $resolvedBatchSize = null;
         }
         foreach (WorkflowMessageInQueue::getModelsToProcess($resolvedBatchSize) as $workflowMessageInQueue) {
             if ($processedModelsCount < $batchSize || $batchSize == null) {
                 try {
                     $model = $this->resolveModel($workflowMessageInQueue);
                     $this->resolveSavedWorkflowIsValid($workflowMessageInQueue);
                     $this->processWorkflowMessageInQueue($workflowMessageInQueue, $model);
                 } catch (NotFoundException $e) {
                 }
                 $workflowMessageInQueue->delete();
                 $processedModelsCount++;
             } else {
                 Yii::app()->jobQueue->add('WorkflowMessageInQueue', 5);
                 break;
             }
         }
         Yii::app()->user->userModel = $originalUser;
         return true;
     } catch (MissingASuperAdministratorException $e) {
         //skip running workflow, since no super administrators are available.
         $this->errorMessage = Zurmo::t('WorkflowsModule', 'Could not process since no super administrators were found');
         return false;
     }
 }
 /**
  * @see BaseJob::run()
  */
 public function run()
 {
     try {
         $originalUser = Yii::app()->user->userModel;
         Yii::app()->user->userModel = BaseJobControlUserConfigUtil::getUserToRunAs();
         foreach (WorkflowMessageInQueue::getModelsToProcess(self::$pageSize) as $workflowMessageInQueue) {
             try {
                 $model = $this->resolveModel($workflowMessageInQueue);
                 $this->resolveSavedWorkflowIsValid($workflowMessageInQueue);
                 $this->processWorkflowMessageInQueue($workflowMessageInQueue, $model);
             } catch (NotFoundException $e) {
             }
             $workflowMessageInQueue->delete();
         }
         Yii::app()->user->userModel = $originalUser;
         return true;
     } catch (MissingASuperAdministratorException $e) {
         //skip running workflow, since no super administrators are available.
         $this->errorMessage = Zurmo::t('WorkflowsModule', 'Could not process since no super administrators were found');
         return false;
     }
 }
 /**
  * @depends testSetAndGet
  */
 public function testGetModelsToProcess($pageSize)
 {
     $this->assertEquals(1, WorkflowMessageInQueue::getCount());
     $models = WorkflowMessageInQueue::getModelsToProcess(10);
     $this->assertEquals(1, count($models));
     //Now have one that is not ready for processing. It should still only get 1
     $model = new WorkflowModelTestItem();
     $model->lastName = 'Green2';
     $model->string = 'string2';
     $saved = $model->save();
     $this->assertTrue($saved);
     $savedWorkflows = SavedWorkflow::getByName('some workflow');
     $workflowMessageInQueue = new WorkflowMessageInQueue();
     $workflowMessageInQueue->modelClassName = get_class($model);
     $workflowMessageInQueue->modelItem = $model;
     $workflowMessageInQueue->processDateTime = DateTimeUtil::convertTimestampToDbFormatDateTime(time() + 86400);
     $workflowMessageInQueue->savedWorkflow = $savedWorkflows[0];
     $workflowMessageInQueue->serializedData = serialize(array('something'));
     $saved = $workflowMessageInQueue->save();
     $this->assertTrue($saved);
     $models = WorkflowMessageInQueue::getModelsToProcess(10);
     $this->assertEquals(1, count($models));
 }