# 后台调度服务

## 继承类

编写调度任务类，继承`kd.bos.schedule.executor.AbstractTask`

```java
public class MySchedule extends AbstractTask{
    //设置调度任务编码
    @Override
    public void setTaskId(String id) {
        super.setTaskId("MyTask_" + id);
    }
	//执行调度
    public void execute(RequestContext context, Map<String, Object> params) throws KDException{
        String arg1 = null == params ? "" : (String)params.get("arg1");
        //do sth
    }
}
```

## 调用微服务接口

调用微服务接口，将任务发布到后台调度服务中，并监听执行情况

（可选）根据接口返回的taskId，查询kd.bos.schedule.api.JobDispatcher.queryTask(String)任务执行情况（包括进度状态）

异步调用参考代码：
```java
JobInfo job = new JobInfo();
job.setAppId("bos")  //这里根据不同应用，传递不同应用的编码
job.setJobType(JobType.BIZ); //JobType.BIZ(业务作业) JobType.REALTIME(马上执行的实时作业)
job.setName("test job");
job.setId("T0001011000001"); //可以不设置，不设置自动生成
job.setRunByUserId(20);
//指定第一步开发的类
job.setTaskClassname("kd.bos.schedule.executor.test.MyTask");
Map<String,Object> params = new HashMap<String,Object>();
params.put("p1", 20);
params.put("orgname", "金蝶集团");
job.setParams(params);
 
//发布到调度服务  
kd.bos.schedule.executor.JobClient.dispatch(JobInfo);
```
## 数据初始化
  
### 数据表

任务执行类定义sch_taskdefine

对应数据库表：`t_sch_taskdefine`  `t_sch_taskdefine_l `  
如果有定义参数 `t_sch_taskdefentry`  `t_sch_taskdefentry_l`

