code: public function run($resumeLog = null, $action = null)
      {
          register_shutdown_function([$this, 'saveLog']);
          if ($action === null) {
              $action = new NonInteractiveAction();
          }
  
          $action->interface = $this;
          if (!empty($resumeLog)) {
              $action->resumeLog($resumeLog);
          }
  
          $this->_currentInterfaceAction = $action;
          if (!$this->_currentInterfaceAction->start()) {
              $this->error = 'Could not start interface action!';
  
              return false;
          }
          try {
              $this->object->run($this->_currentInterfaceAction);
          } catch (Exception $e) {
              $this->_currentInterfaceAction->status->addError('Exception raised: ' . $e->getMessage());
              $this->_currentInterfaceAction->end(true);
              $this->error = 'Exception raised while running action (' . $e->getMessage() . ').';
  
              return false;
          }
          $this->_currentInterfaceAction->end();
  
          return !$this->_currentInterfaceAction->status->hasError;
      }
docs: [[@doctodo method_description:run]].
  
  @param [[@doctodo param_type:resumeLog]] $resumeLog [[@doctodo param_description:resumeLog]] [optional]
  @param [[@doctodo param_type:action]]    $action    [[@doctodo param_description:action]] [optional]
  
  @return [[@doctodo return_type:run]] [[@doctodo return_description:run]]