SpringBatch执行流程~监听器篇~SimpleJob
2020-03-04 18:36:55 0 举报
这个主要是作为一个debug spring batch 任务流程的图
作者其他创作
大纲/内容
如果步骤没有执行完,会一致迭代处理 if(stepExecution.getStatus() != BatchStatus.COMPLETED) { break; }
open
taskExecutor.execute(new Runnable())
待分析:Step 控制流程模块;Tasklet模块的执行;ItemStream的open和close
private RepeatOperations stepOperations;//重复操作判断 private CompositeChunkListener chunkListener;//组合块监听器 private StepInterruptionPolicy interruptionPolicy;//步骤中断策略 private CompositeItemStream stream;//组合数据流 private PlatformTransactionManager transactionManager;//事务管理器 private TransactionAttribute transactionAttribute;//事务传播属性设置 private Tasklet tasklet;//小任务对象 public static final String TASKLET_TYPE_KEY = \"batch.taskletType\";
ChunkOrientedTasklet有方向的块状小任务
execute(StepExecution stepExecution)
//根据JobExecution 创建 StepExecution//获取jobInstance,+ 步骤名称(已经配置好的)--》 得到StepExecution : font color=\"#cc0000\
doInTransaction
afterJob(execution)
CompositeItemStream
AbstractJob抽象任务
afterJob()
if(result == null) { result = RepeatStatus.FINISHED; }
this.stream.open(context);
doExecute()Flow\\Step实现
beforeJob
TaskletStep.ChunkTransactionCallback
SimpleStepHandler步骤处理器
步骤一:
TransactionTemplate: 编程方式事务
步骤二:
AbstractStep抽象步骤处理器
CompositeJobExecutionListener组合(多的意思)job上下文监听器
release()
JobExecutionListener(自定义)job上下文监听器
TransactionTemplate事务编程
TaskletStep小任务步骤
JobSynchronizationManager
SimpleJob内部有Step集合
Thread的run()
JobLauncherjob启动器
beforeJob(JobExecution)
定义局部变量: StepExecution 传入外部参数: JobExecution获取配置的Step参数步骤迭代器Iterator var3 = this.steps.iterator();
register(JobEecution)保证执行过程的安全性
this.getJobRepository().update(stepExecution); 更新step执行: 设置时间注册安全的StepExecution (同时有很多个step同时执行时,也是安全的)//临时使用的安全管理器beforeStep() 步骤监听器的前置执行步骤font color=\"#ff0000\
SimpleJobLauncher简单job启动器(实现)
doExecute()
execute(JobExecution)
步骤三:
StepHandler步骤处理器
doExecute
0 条评论
下一页