1 package com.github.dexecutor.executor;
2 /**
3 * A Task Provider provides Tasks to be executed, when it comes to execution
4 * @author Nadeem Mohammad
5 *
6 * @param <T>
7 */
8 public interface TaskProvider <T extends Comparable<T>> {
9 /**
10 * Given the node id, returns the task to be executed, while building graph only the node ids are required, when it comes to execution Task objects would be constructed
11 *
12 * @param id
13 * @return @Task
14 */
15 public Task provid(final T id);
16
17 /**
18 * Represent a unit of execution in Dexecutor framework
19 *
20 * @author Nadeem Mohammad
21 *
22 */
23 public abstract class Task {
24 /**
25 * Framework would call this method, when it comes for tasks to be executed.
26 */
27 public abstract void execute();
28 /**
29 * When using retry behavior, execution error should not be considered until the last retry, this would define when execution error should be considered
30 */
31 private boolean considerExecutionError = true;
32 /**
33 *
34 * @return whether execution error should be considered or not
35 */
36 public final boolean shouldConsiderExecutionError() {
37 return this.considerExecutionError;
38 }
39 /**
40 *
41 * @param considerExecutionError
42 */
43 void setConsiderExecutionError(boolean considerExecutionError) {
44 this.considerExecutionError = considerExecutionError;
45 }
46 }
47 }