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

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

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

Task.getTaskType介绍

暂无

代码示例

代码示例来源: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

@Override
public List<Task> getTasks(List<String> taskIds) {
  return taskIds.stream()
      .map(taskId -> nsKey(TASK, taskId))
      .map(dynoClient::get)
      .filter(Objects::nonNull)
      .map(jsonString -> {
        Task task = readValue(jsonString, Task.class);
        recordRedisDaoRequests("getTask", task.getTaskType(), task.getWorkflowType());
        recordRedisDaoPayloadSize("getTask", jsonString.length(), task.getTaskType(), task.getWorkflowType());
        return task;
      })
      .collect(Collectors.toList());
}

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

private void setTaskDomains(List<Task> tasks, Workflow wf) {
  Map<String, String> taskToDomain = wf.getTaskToDomain();
  if (taskToDomain != null) {
    // Check if all tasks have the same domain "*"
    String domainstr = taskToDomain.get("*");
    if (domainstr != null) {
      String[] domains = domainstr.split(",");
      tasks.forEach(task -> {
        // Filter out SystemTask
        if (!TaskType.isSystemTask(task.getTaskType())) {
          // Check which domain worker is polling
          // Set the task domain
          task.setDomain(getActiveDomain(task.getTaskType(), domains));
        }
      });
    } else {
      tasks.forEach(task -> {
        if (!TaskType.isSystemTask(task.getTaskType())) {
          String taskDomainstr = taskToDomain.get(task.getTaskType());
          if (taskDomainstr != null) {
            task.setDomain(getActiveDomain(task.getTaskType(), taskDomainstr.split(",")));
          }
        }
      });
    }
  }
}

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

public static String getQueueName(Task task) {
  return getQueueName(task.getTaskType(), task.getDomain());
}

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

@Override
public Task getTask(String taskId) {
  Preconditions.checkNotNull(taskId, "taskId cannot be null");
  return Optional.ofNullable(dynoClient.get(nsKey(TASK, taskId)))
      .map(json -> {
        Task task = readValue(json, Task.class);
        recordRedisDaoRequests("getTask", task.getTaskType(), task.getWorkflowType());
        recordRedisDaoPayloadSize("getTask", toJson(task).length(), task.getTaskType(), task.getWorkflowType());
        return task;
      })
      .orElse(null);
}

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

private void removeTaskLookup(Task task) {
  try {
    recordCassandraDaoRequests("removeTaskLookup", task.getTaskType(), task.getWorkflowType());
    session.execute(deleteTaskLookupStatement.bind(UUID.fromString(task.getTaskId())));
  } catch (Exception e) {
    Monitors.error(CLASS_NAME, "removeTaskLookup");
    String errorMsg = String.format("Failed to remove task lookup: %s", task.getTaskId());
    LOGGER.error(errorMsg, e);
    throw new ApplicationException(ApplicationException.Code.BACKEND_ERROR, errorMsg);
  }
}

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

@VisibleForTesting
List<Task> getNextTask(Workflow workflow, Task task) {
  final WorkflowDef workflowDef = workflow.getWorkflowDefinition();
  // Get the following task after the last completed task
  if (SystemTaskType.is(task.getTaskType()) && SystemTaskType.DECISION.name().equals(task.getTaskType())) {
    if (task.getInputData().get("hasChildren") != null) {
      return Collections.emptyList();
    }
  }
  String taskReferenceName = task.getReferenceTaskName();
  WorkflowTask taskToSchedule = workflowDef.getNextTask(taskReferenceName);
  while (isTaskSkipped(taskToSchedule, workflow)) {
    taskToSchedule = workflowDef.getNextTask(taskToSchedule.getTaskReferenceName());
  }
  if (taskToSchedule != null) {
    return getTasksToBeScheduled(workflow, taskToSchedule, 0);
  }
  return Collections.emptyList();
}

代码示例来源: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

@Override
public Task getTask(String taskId) {
  try {
    String workflowId = lookupWorkflowIdFromTaskId(taskId);
    if (workflowId == null) {
      return null;
    }
    // TODO: implement for query against multiple shards
    ResultSet resultSet = session.execute(selectTaskStatement.bind(UUID.fromString(workflowId), DEFAULT_SHARD_ID, taskId));
    return Optional.ofNullable(resultSet.one())
        .map(row -> {
          Task task = readValue(row.getString(PAYLOAD_KEY), Task.class);
          recordCassandraDaoRequests("getTask", task.getTaskType(), task.getWorkflowType());
          recordCassandraDaoPayloadSize("getTask", toJson(task).length(), task.getTaskType(), task.getWorkflowType());
          return task;
        })
        .orElse(null);
  } catch (Exception e) {
    Monitors.error(CLASS_NAME, "getTask");
    String errorMsg = String.format("Error getting task by id: %s", taskId);
    LOGGER.error(errorMsg, e);
    throw new ApplicationException(ApplicationException.Code.BACKEND_ERROR, errorMsg);
  }
}

代码示例来源: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

this.taskType = task.getTaskType();
this.workflowId = task.getWorkflowInstanceId();
this.workflowType = task.getWorkflowType();

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

private void updateWithRetry(int count, Task task, TaskResult result, Worker worker) {
  try {
    String description = String.format("Retry updating task result: %s for task: %s in worker: %s", result.toString(), task.getTaskDefName(), worker.getIdentity());
    String methodName = "updateWithRetry";
    new RetryUtil<>().retryOnException(() ->
    {
      taskClient.updateTask(result, task.getTaskType());
      return null;
    }, null, null, count, description, methodName);
  } catch (Exception e) {
    worker.onErrorUpdate(task);
    WorkflowTaskMetrics.incrementTaskUpdateErrorCount(worker.getTaskDefName(), e);
    logger.error(String.format("Failed to update result: %s for task: %s in worker: %s", result.toString(), task.getTaskDefName(), worker.getIdentity()), e);
  }
}

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

@Override
public List<Task> createTasks(List<Task> tasks) {
  List<Task> tasksCreated = new LinkedList<>();
  for (Task task : tasks) {
    validate(task);
    recordRedisDaoRequests("createTask", task.getTaskType(), task.getWorkflowType());
    String taskKey = task.getReferenceTaskName() + "" + task.getRetryCount();
    Long added = dynoClient.hset(nsKey(SCHEDULED_TASKS, task.getWorkflowInstanceId()), taskKey, task.getTaskId());
    if (added < 1) {
      logger.debug("Task already scheduled, skipping the run " + task.getTaskId() + ", ref=" + task.getReferenceTaskName() + ", key=" + taskKey);
      continue;
    }
    task.setScheduledTime(System.currentTimeMillis());
    correlateTaskToWorkflowInDS(task.getTaskId(), task.getWorkflowInstanceId());
    logger.debug("Scheduled task added to WORKFLOW_TO_TASKS workflowId: {}, taskId: {}, taskType: {} during createTasks",
        task.getWorkflowInstanceId(), task.getTaskId(), task.getTaskType());
    String inProgressTaskKey = nsKey(IN_PROGRESS_TASKS, task.getTaskDefName());
    dynoClient.sadd(inProgressTaskKey, task.getTaskId());
    logger.debug("Scheduled task added to IN_PROGRESS_TASKS with inProgressTaskKey: {}, workflowId: {}, taskId: {}, taskType: {} during createTasks",
        inProgressTaskKey, task.getWorkflowInstanceId(), task.getTaskId(), task.getTaskType());
    updateTask(task);
    tasksCreated.add(task);
  }
  return tasksCreated;
}

代码示例来源: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

private int requeuePendingTasks(Workflow workflow, long threshold) {
  int count = 0;
  List<Task> tasks = workflow.getTasks();
  for (Task pending : tasks) {
    if (SystemTaskType.is(pending.getTaskType())) {
      continue;
    }
    if (pending.getStatus().isTerminal()) {
      continue;
    }
    if (pending.getUpdateTime() < threshold) {
      logger.info("Requeuing Task: workflowId=" + workflow.getWorkflowId() + ", taskType=" + pending.getTaskType() + ", taskId="
          + pending.getTaskId());
      long callback = pending.getCallbackAfterSeconds();
      if (callback < 0) {
        callback = 0;
      }
      boolean pushed = queueDAO.pushIfNotExists(QueueUtils.getQueueName(pending), pending.getTaskId(), callback);
      if (pushed) {
        count++;
      }
    }
  }
  return count;
}

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

private boolean removeTask(Task task) {
  // TODO: calculate shard number based on seq and maxTasksPerShard
  try {
    // get total tasks for this workflow
    WorkflowMetadata workflowMetadata = getWorkflowMetadata(task.getWorkflowInstanceId());
    int totalTasks = workflowMetadata.getTotalTasks();
    // remove from task_lookup table
    removeTaskLookup(task);
    recordCassandraDaoRequests("removeTask", task.getTaskType(), task.getWorkflowType());
    // delete task from workflows table and decrement total tasks by 1
    BatchStatement batchStatement = new BatchStatement();
    batchStatement.add(deleteTaskStatement.bind(UUID.fromString(task.getWorkflowInstanceId()), DEFAULT_SHARD_ID, task.getTaskId()));
    batchStatement.add(updateTotalTasksStatement.bind(totalTasks - 1, UUID.fromString(task.getWorkflowInstanceId()), DEFAULT_SHARD_ID));
    ResultSet resultSet = session.execute(batchStatement);
    return resultSet.wasApplied();
  } catch (Exception e) {
    Monitors.error(CLASS_NAME, "removeTask");
    String errorMsg = String.format("Failed to remove task: %s", task.getTaskId());
    LOGGER.error(errorMsg, e);
    throw new ApplicationException(ApplicationException.Code.BACKEND_ERROR, errorMsg);
  }
}

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

@Override
public boolean removeTask(String taskId) {
  Task task = getTask(taskId);
  if(task == null) {
    logger.warn("No such task found by id {}", taskId);
    return false;
  }
  String taskKey = task.getReferenceTaskName() + "" + task.getRetryCount();
  dynoClient.hdel(nsKey(SCHEDULED_TASKS, task.getWorkflowInstanceId()), taskKey);
  dynoClient.srem(nsKey(IN_PROGRESS_TASKS, task.getTaskDefName()), task.getTaskId());
  dynoClient.srem(nsKey(WORKFLOW_TO_TASKS, task.getWorkflowInstanceId()), task.getTaskId());
  dynoClient.srem(nsKey(TASKS_IN_PROGRESS_STATUS, task.getTaskDefName()), task.getTaskId());
  dynoClient.del(nsKey(TASK, task.getTaskId()));
  dynoClient.zrem(nsKey(TASK_LIMIT_BUCKET, task.getTaskDefName()), task.getTaskId());
  recordRedisDaoRequests("removeTask", task.getTaskType(), task.getWorkflowType());
  return true;
}

代码示例来源: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 getMappedTasks() throws Exception {
  WorkflowTask taskToSchedule = new WorkflowTask();
  taskToSchedule.setType(TaskType.JOIN.name());
  taskToSchedule.setJoinOn(Arrays.asList("task1, task2"));
  String taskId = IDGenerator.generate();
  WorkflowDef  wd = new WorkflowDef();
  Workflow w = new Workflow();
  w.setWorkflowDefinition(wd);
  TaskMapperContext taskMapperContext = TaskMapperContext.newBuilder()
      .withWorkflowDefinition(wd)
      .withWorkflowInstance(w)
      .withTaskDefinition(new TaskDef())
      .withTaskToSchedule(taskToSchedule)
      .withRetryCount(0)
      .withTaskId(taskId)
      .build();
  List<Task> mappedTasks = new JoinTaskMapper().getMappedTasks(taskMapperContext);
  assertNotNull(mappedTasks);
  assertEquals(SystemTaskType.JOIN.name(), mappedTasks.get(0).getTaskType());
}

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

@Test
public void getMappedTasks() {
  //Given
  WorkflowTask taskToSchedule = new WorkflowTask();
  taskToSchedule.setName("http_task");
  taskToSchedule.setType(TaskType.HTTP.name());
  taskToSchedule.setTaskDefinition(new TaskDef("http_task"));
  String taskId = IDGenerator.generate();
  String retriedTaskId = IDGenerator.generate();
  Workflow workflow = new Workflow();
  WorkflowDef workflowDef = new WorkflowDef();
  workflow.setWorkflowDefinition(workflowDef);
  TaskMapperContext taskMapperContext = TaskMapperContext.newBuilder()
      .withWorkflowDefinition(workflowDef)
      .withWorkflowInstance(workflow)
      .withTaskDefinition(new TaskDef())
      .withTaskToSchedule(taskToSchedule)
      .withTaskInput(new HashMap<>())
      .withRetryCount(0)
      .withRetryTaskId(retriedTaskId)
      .withTaskId(taskId)
      .build();
  //when
  List<Task> mappedTasks = httpTaskMapper.getMappedTasks(taskMapperContext);
  //Then
  assertEquals(1, mappedTasks.size());
  assertEquals(TaskType.HTTP.name(), mappedTasks.get(0).getTaskType());
}

相关文章

Task类方法