in schedulerx-demo/schedulerx-example-springboot/src/main/java/com/aliyun/schedulerx/example/processor/ScanSingleTableJob.java [32:58]
public ProcessResult process(JobContext context) throws Exception {
String tableName = context.getJobParameters(); //多个job后端代码可以一致,通过控制台配置job参数表示表名
String taskName = context.getTaskName();
Object task = context.getTask();
if (isRootTask(context)) {
Pair<Long, Long> idPair = queryMinAndMaxId(tableName);
long minId = idPair.getFirst();
long maxId = idPair.getSecond();
List<PageTask> tasks = Lists.newArrayList();
int step = (int) ((maxId - minId) / PAGE_SIZE); //计算分页数量
for (long i = minId; i < maxId; i+=PAGE_SIZE) {
long startId = i;
long endId = (i+PAGE_SIZE > maxId ? maxId : i+PAGE_SIZE);
tasks.add(new PageTask(tableName, startId, endId));
}
return map(tasks, "PageTask");
} else if (taskName.equals("PageTask")) {
PageTask pageTask = (PageTask)task;
long startId = pageTask.getStartId();
long endId = pageTask.getEndId();
List<Record> records = queryRecord(tableName, startId, endId);
//TODO handle records
return new ProcessResult(true);
}
return new ProcessResult(false);
}