com.netflix.conductor.common.metadata.tasks.Task.getStatus()方法的使用及代码示例

x33g5p2x  于2022-01-30 转载在 其他  
字(12.8k)|赞(0)|评价(0)|浏览(153)

本文整理了Java中com.netflix.conductor.common.metadata.tasks.Task.getStatus()方法的一些代码示例,展示了Task.getStatus()的具体用法。这些代码示例主要来源于Github/Stackoverflow/Maven等平台,是从一些精选项目中提取出来的代码,具有较强的参考意义,能在一定程度帮忙到你。Task.getStatus()方法的具体详情如下:
包路径:com.netflix.conductor.common.metadata.tasks.Task
类名称:Task
方法名:getStatus

Task.getStatus介绍

暂无

代码示例

代码示例来源:origin: Netflix/conductor

@Override
public List<Task> getPendingTasksByWorkflow(String taskName, String workflowId) {
  List<Task> tasks = getTasksForWorkflow(workflowId);
  return tasks.stream()
      .filter(task -> taskName.equals(task.getTaskType()))
      .filter(task -> Task.Status.IN_PROGRESS.equals(task.getStatus()))
      .collect(Collectors.toList());
}

代码示例来源:origin: Netflix/conductor

/**
 * Get all failed and cancelled tasks.
 * for failed tasks - get one for each task reference name(latest failed using seq id)
 *
 * @param workflow
 * @return list of latest failed tasks, one for each task reference reference type.
 */
@VisibleForTesting
List<Task> getFailedTasksToRetry(Workflow workflow) {
  return workflow.getTasks().stream()
      .filter(x -> FAILED.equals(x.getStatus()))
      .collect(groupingBy(Task::getReferenceTaskName, maxBy(comparingInt(Task::getSeq))))
      .values().stream()
      .filter(Optional::isPresent)
      .map(Optional::get)
      .collect(Collectors.toList());
}

代码示例来源:origin: Netflix/conductor

private void updateTask(Connection connection, Task task) {
  task.setUpdateTime(System.currentTimeMillis());
  if (task.getStatus() != null && task.getStatus().isTerminal() && task.getEndTime() == 0) {
    task.setEndTime(System.currentTimeMillis());
  }
  Optional<TaskDef> taskDefinition = task.getTaskDefinition();
  if (taskDefinition.isPresent() && taskDefinition.get().concurrencyLimit() > 0) {
    boolean inProgress = task.getStatus() != null && task.getStatus().equals(Task.Status.IN_PROGRESS);
    updateInProgressStatus(connection, task, inProgress);
  }
  insertOrUpdateTaskData(connection, task);
  if (task.getStatus() != null && task.getStatus().isTerminal()) {
    removeTaskInProgress(connection, task);
  }
  addWorkflowToTaskMapping(connection, task);
}

代码示例来源:origin: Netflix/conductor

public DeciderOutcome decide(Workflow workflow) throws TerminateWorkflowException {
  //In case of a new workflow the list of tasks will be empty
  final List<Task> tasks = workflow.getTasks();
  //In case of a new workflow the list of executedTasks will also be empty
  List<Task> executedTasks = tasks.stream()
      .filter(t -> !t.getStatus().equals(SKIPPED) && !t.getStatus().equals(READY_FOR_RERUN) && !t.isExecuted())
      .collect(Collectors.toList());
  List<Task> tasksToBeScheduled = new LinkedList<>();
  if (executedTasks.isEmpty()) {
    //this is the flow that the new workflow will go through
    tasksToBeScheduled = startWorkflow(workflow);
    if (tasksToBeScheduled == null) {
      tasksToBeScheduled = new LinkedList<>();
    }
  }
  return decide(workflow, tasksToBeScheduled);
}

代码示例来源:origin: Netflix/conductor

private boolean isTaskSkipped(WorkflowTask taskToSchedule, Workflow workflow) {
  try {
    boolean isTaskSkipped = false;
    if (taskToSchedule != null) {
      Task t = workflow.getTaskByRefName(taskToSchedule.getTaskReferenceName());
      if (t == null) {
        isTaskSkipped = false;
      } else if (t.getStatus().equals(SKIPPED)) {
        isTaskSkipped = true;
      }
    }
    return isTaskSkipped;
  } catch (Exception e) {
    throw new TerminateWorkflowException(e.getMessage());
  }
}

代码示例来源:origin: Netflix/conductor

@Override
public void updateTask(Task task) {
  try {
    task.setUpdateTime(System.currentTimeMillis());
    if (task.getStatus().isTerminal() && task.getEndTime() == 0) {
      task.setEndTime(System.currentTimeMillis());
    }
    // TODO: calculate the shard number the task belongs to
    String taskPayload = toJson(task);
    recordCassandraDaoRequests("updateTask", task.getTaskType(), task.getWorkflowType());
    recordCassandraDaoPayloadSize("updateTask", taskPayload.length(), task.getTaskType(), task.getWorkflowType());
    session.execute(insertTaskStatement.bind(UUID.fromString(task.getWorkflowInstanceId()), DEFAULT_SHARD_ID, task.getTaskId(), taskPayload));
  } catch (Exception e) {
    Monitors.error(CLASS_NAME, "updateTask");
    String errorMsg = String.format("Error updating task: %s in workflow: %s", task.getTaskId(), task.getWorkflowInstanceId());
    LOGGER.error(errorMsg, e);
    throw new ApplicationException(ApplicationException.Code.BACKEND_ERROR, errorMsg, e);
  }
}

代码示例来源:origin: Netflix/conductor

private void printTaskStatuses(Workflow wf, String message) {
    if (printWFTaskDetails) {
      System.out.println(message + " >>> Workflow status " + wf.getStatus().name());
      wf.getTasks().forEach(t -> {
        System.out.println("Task " + String.format("%-15s", t.getTaskType()) + "\t" + String.format("%-15s", t.getReferenceTaskName()) + "\t" + String.format("%-15s", t.getWorkflowTask().getType()) + "\t" + t.getSeq() + "\t" + t.getStatus() + "\t" + t.getTaskId());
      });
      System.out.println();
    }
  }
}

代码示例来源:origin: Netflix/conductor

public int requeuePendingTasks(String taskType) {
  int count = 0;
  List<Task> tasks = getPendingTasksForTaskType(taskType);
  for (Task pending : tasks) {
    if (SystemTaskType.is(pending.getTaskType())) {
      continue;
    }
    if (pending.getStatus().isTerminal()) {
      continue;
    }
    logger.info("Requeuing Task: workflowId=" + pending.getWorkflowInstanceId() + ", taskType=" + pending.getTaskType() + ", taskId=" + pending.getTaskId());
    boolean pushed = requeue(pending);
    if (pushed) {
      count++;
    }
  }
  return count;
}

代码示例来源:origin: Netflix/conductor

public TaskResult(Task task) {
  this.workflowInstanceId = task.getWorkflowInstanceId();
  this.taskId = task.getTaskId();
  this.reasonForIncompletion = task.getReasonForIncompletion();
  this.callbackAfterSeconds = task.getCallbackAfterSeconds();
  this.status = Status.valueOf(task.getStatus().name());
  this.workerId = task.getWorkerId();
  this.outputData = task.getOutputData();
  this.externalOutputPayloadStoragePath = task.getExternalOutputPayloadStoragePath();
}

代码示例来源:origin: Netflix/conductor

@Test
public void testPostNoContent() {
  Task task = new Task();
  Input input = new Input();
  input.setUri("http://localhost:7009/post2");
  Map<String, Object> body = new HashMap<>();
  body.put("input_key1", "value1");
  body.put("input_key2", 45.3d);
  input.setBody(body);
  input.setMethod("POST");
  task.getInputData().put(HttpTask.REQUEST_PARAMETER_NAME, input);
  httpTask.start(workflow, task, workflowExecutor);
  assertEquals(task.getReasonForIncompletion(), Task.Status.COMPLETED, task.getStatus());
  Map<String, Object> hr = (Map<String, Object>) task.getOutputData().get("response");
  Object response = hr.get("body");
  assertEquals(Task.Status.COMPLETED, task.getStatus());
  assertNull("response is: " + response, response);
}

代码示例来源:origin: Netflix/conductor

@Test
public void test() {
  Task task = new Task();
  task.setStatus(Status.FAILED);
  assertEquals(Status.FAILED, task.getStatus());
  
  Set<String> resultStatues = Arrays.asList(TaskResult.Status.values()).stream()
      .map(status -> status.name())
      .collect(Collectors.toSet());
  for (Status status : Status.values()) {
    if (resultStatues.contains(status.name())) {
      TaskResult.Status trStatus = TaskResult.Status.valueOf(status.name());
      assertEquals(status.name(), trStatus.name());
      task = new Task();
      task.setStatus(status);
      assertEquals(status, task.getStatus());
    }
  }
}

代码示例来源:origin: Netflix/conductor

@Test
public void testCaseStatement() {
  WorkflowDef def = createConditionalWF();
  Workflow wf = new Workflow();
  wf.setWorkflowDefinition(def);
  wf.setCreateTime(0L);
  wf.setWorkflowId("a");
  wf.setCorrelationId("b");
  wf.setStatus(WorkflowStatus.RUNNING);
  DeciderOutcome outcome = deciderService.decide(wf);
  List<Task> scheduledTasks = outcome.tasksToBeScheduled;
  assertNotNull(scheduledTasks);
  assertEquals(2, scheduledTasks.size());
  assertEquals(Status.IN_PROGRESS, scheduledTasks.get(0).getStatus());
  assertEquals(Status.SCHEDULED, scheduledTasks.get(1).getStatus());
}

代码示例来源:origin: Netflix/conductor

@Test
public void testTextGET() {
  Task task = new Task();
  Input input = new Input();
  input.setUri("http://localhost:7009/text");
  input.setMethod("GET");
  task.getInputData().put(HttpTask.REQUEST_PARAMETER_NAME, input);
  httpTask.start(workflow, task, workflowExecutor);
  Map<String, Object> hr = (Map<String, Object>) task.getOutputData().get("response");
  Object response = hr.get("body");
  assertEquals(Task.Status.COMPLETED, task.getStatus());
  assertEquals(TEXT_RESPONSE, response);
}

代码示例来源:origin: Netflix/conductor

@Test
public void testJsonGET() throws JsonProcessingException {
  Task task = new Task();
  Input input = new Input();
  input.setUri("http://localhost:7009/json");
  input.setMethod("GET");
  task.getInputData().put(HttpTask.REQUEST_PARAMETER_NAME, input);
  httpTask.start(workflow, task, workflowExecutor);
  Map<String, Object> hr = (Map<String, Object>) task.getOutputData().get("response");
  Object response = hr.get("body");
  assertEquals(Task.Status.COMPLETED, task.getStatus());
  assertTrue(response instanceof Map);
  Map<String, Object> map = (Map<String, Object>) response;
  assertEquals(JSON_RESPONSE, objectMapper.writeValueAsString(map));
}

代码示例来源:origin: Netflix/conductor

@Test
public void testNumberGET() {
  Task task = new Task();
  Input input = new Input();
  input.setUri("http://localhost:7009/numeric");
  input.setMethod("GET");
  task.getInputData().put(HttpTask.REQUEST_PARAMETER_NAME, input);
  httpTask.start(workflow, task, workflowExecutor);
  Map<String, Object> hr = (Map<String, Object>) task.getOutputData().get("response");
  Object response = hr.get("body");
  assertEquals(Task.Status.COMPLETED, task.getStatus());
  assertEquals(NUM_RESPONSE, response);
  assertTrue(response instanceof Number);
}

代码示例来源:origin: Netflix/conductor

@Test
public void testFailure() {
  Task task = new Task();
  Input input = new Input();
  input.setUri("http://localhost:7009/failure");
  input.setMethod("GET");
  task.getInputData().put(HttpTask.REQUEST_PARAMETER_NAME, input);
  httpTask.start(workflow, task, workflowExecutor);
  assertEquals("Task output: " + task.getOutputData(), Task.Status.FAILED, task.getStatus());
  assertEquals(ERROR_RESPONSE, task.getReasonForIncompletion());
  task.setStatus(Status.SCHEDULED);
  task.getInputData().remove(HttpTask.REQUEST_PARAMETER_NAME);
  httpTask.start(workflow, task, workflowExecutor);
  assertEquals(Task.Status.FAILED, task.getStatus());
  assertEquals(HttpTask.MISSING_REQUEST, task.getReasonForIncompletion());
}

代码示例来源:origin: Netflix/conductor

@Test
  public void testTaskDefinitionIfAvailable() {
    Task task = new Task();
    task.setStatus(Status.FAILED);
    assertEquals(Status.FAILED, task.getStatus());

    assertNull(task.getWorkflowTask());
    assertFalse(task.getTaskDefinition().isPresent());

    WorkflowTask workflowTask = new WorkflowTask();
    TaskDef taskDefinition = new TaskDef();
    workflowTask.setTaskDefinition(taskDefinition);
    task.setWorkflowTask(workflowTask);

    assertTrue(task.getTaskDefinition().isPresent());
    assertEquals(taskDefinition, task.getTaskDefinition().get());
  }
}

代码示例来源:origin: Netflix/conductor

/**
 * @param workflowId the id of the workflow for which callbacks are to be reset
 * @throws ApplicationException if the workflow is in terminal state
 */
public void resetCallbacksForInProgressTasks(String workflowId) {
  Workflow workflow = executionDAOFacade.getWorkflowById(workflowId, true);
  if (workflow.getStatus().isTerminal()) {
    throw new ApplicationException(CONFLICT, "Workflow is in terminal state. Status =" + workflow.getStatus());
  }
  // Get tasks that are in progress and have callbackAfterSeconds > 0
  // and set the callbackAfterSeconds to 0;
  for (Task task : workflow.getTasks()) {
    if (task.getStatus().equals(IN_PROGRESS) &&
        task.getCallbackAfterSeconds() > 0) {
      if (queueDAO.setOffsetTime(QueueUtils.getQueueName(task), task.getTaskId(), 0)) {
        task.setCallbackAfterSeconds(0);
        executionDAOFacade.updateTask(task);
      }
    }
  }
}

代码示例来源:origin: Netflix/conductor

@Override
  public int hashCode() {
    return Objects.hash(getTaskType(), getStatus(), getInputData(), getReferenceTaskName(), getRetryCount(), getSeq(), getCorrelationId(), getPollCount(), getTaskDefName(), getScheduledTime(), getStartTime(), getEndTime(), getUpdateTime(), getStartDelayInSeconds(), getRetriedTaskId(), isRetried(), isExecuted(), isCallbackFromWorker(), getResponseTimeoutSeconds(), getWorkflowInstanceId(), getWorkflowType(), getTaskId(), getReasonForIncompletion(), getCallbackAfterSeconds(), getWorkerId(), getOutputData(), getWorkflowTask(), getDomain(), getInputMessage(), getOutputMessage(), getRateLimitPerFrequency(), getRateLimitFrequencyInSeconds(), getExternalInputPayloadStoragePath(), getExternalOutputPayloadStoragePath());
  }
}

代码示例来源:origin: Netflix/conductor

@Test
public void testGetTaskByRef() {
  Workflow workflow = new Workflow();
  Task t1 = new Task();
  t1.setReferenceTaskName("ref");
  t1.setSeq(0);
  t1.setStatus(Status.TIMED_OUT);
  Task t2 = new Task();
  t2.setReferenceTaskName("ref");
  t2.setSeq(1);
  t2.setStatus(Status.FAILED);
  Task t3 = new Task();
  t3.setReferenceTaskName("ref");
  t3.setSeq(2);
  t3.setStatus(Status.COMPLETED);
  workflow.getTasks().add(t1);
  workflow.getTasks().add(t2);
  workflow.getTasks().add(t3);
  Task task = workflow.getTaskByRefName("ref");
  assertNotNull(task);
  assertEquals(Status.COMPLETED, task.getStatus());
  assertEquals(t3.getSeq(), task.getSeq());
}

相关文章

Task类方法