本文整理了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
暂无
代码示例来源: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());
}
内容来源于网络,如有侵权,请联系作者删除!