Пример #1
0
 @Override
 public void run() {
   // Устанавливаем системные параметры запуска
   startTask();
   // Выполняем задачу
   Map<String, Object> results = null;
   TaskResultStatus resultStatus;
   Throwable cause = null;
   try {
     results = performer.performTask(this, result.getParameters());
     resultStatus = (isCancelled()) ? TaskResultStatus.CANCELED : TaskResultStatus.FINISHED;
   } catch (Throwable th) {
     resultStatus = TaskResultStatus.ERROR;
     cause = th;
     LOG.error(
         String.format(
             "Task '%s[%s]' error: %s",
             descriptor.getId(), performer.retrieveName(), cause.getMessage()),
         cause);
   }
   // Устанавливаем системные параметры завершения
   endTask(results, resultStatus, cause);
 }
Пример #2
0
 /**
  * Устанавливает параметры завершения задачи
  *
  * @param results результат задачи
  * @param resultStatus статус завершения
  * @param exception исключения, которое произошло в процессе выполнения
  */
 private void endTask(
     Map<String, Object> results, TaskResultStatus resultStatus, Throwable exception) {
   writeLock.lock();
   try {
     result.setContent(results);
     result.setStatus(resultStatus);
     if (exception != null) {
       result.setErrorMessage(
           StringUtils.abbreviate(exception.getMessage(), TaskResult.ERROR_MESSAGE_MAX_SIZE - 3));
     }
     result.setEndDate(new Date());
     executionLock.countDown();
     changeState(null, TaskExecutionStatus.READY);
   } finally {
     writeLock.unlock();
   }
 }