功能
- 允许自定义任务(继承任务基类),比如实时任务,延时任务,周期任务等,实时任务和延时任务都是执行一次,周期任务会反复执行。
- 允许定义任务链,依次顺序执行,上游任务失败了下游任务不会执行。但是不提供下游任务失败了上游任务回滚的能力。
- 允许提交,暂停(非必须),继续,重做和取消任务。
- 允许根据多种方式查询任务,比如查询根据任务Id查询,根据条件查询等,获取任务状态,进度等信息。
- 允许自定义任务的回调函数(成功、取消,超时,失败的响应)。
- 支持任务的持久化(非必须)。
关键点
1、什么时候保存任务的信息?
- 任务第一次提交给任务管理器后,保存。
- 任务成功或失败后,保存。
2、查询任务信息是每次都从后端查吗?
任务创建后即加入到内存的容器中,在任务完成前都是从内存中查询,任务成功或者失败后(保存到数据库),
从内存中删除任务的信息,而后的查询是从数据库查的。
3、当TaskManager退出时,应该扫描全部的任务,将内存中所有的任务(状态应该都是未完成)的快照都保存到数据库。
以便于下次继续执行任务。
类结构设计
1、Task
保存任务的静态信息,包括执行体(Callable),名称,类型,描述,参数,超时时间(可不设置)。
2、TaskTracker
保存任务的动态信息,包括进度,状态,运行时间等。