任务管理示例
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.TimeZone;
import com.runqianapp.schedule.TaskManager;
import com.runqianapp.schedule.interfaces.IDBAccess;
import com.runqianapp.schedule.model.ArgumentInfo;
import com.runqianapp.schedule.model.TaskInfo;
import com.runqianapp.schedule.task.ReportTask;
import com.runqianapp.schedule.utils.PKGenerator;
import com.runqianapp.schedule.utils.ScheduleConfig;
public class DemoTaskManager {
/**
* 添加示例1:每月最后一天17点将工资核算表以邮件的正文的方式推送给董事长并抄送HR经理
*/
public void addDemo1() {
//初始化任务信息类对象,对任务信息类参数赋值
TimeZone tz = TimeZone.getTimeZone("ETC/GMT-8");
TimeZone.setDefault(tz); //设置时区,避免任务执行时间因系统时区出现问题
TaskInfo ti = new TaskInfo();// 任务信息类
ti.setGroupId(0); //所属任务组id
ti.setPreTaskId(0);//前置任务Id
ti.setTaskClass("com.runqianapp.schedule.task.ReportTask");//任务类,用户可以通过实现BaseTask类定义调度任务的动作
ti.setTaskCreateUser("root");//任务创建人
ti.setTaskCycleclass("com.runqianapp.schedule.example.cycle.MonthEndCycle");//任务循环周期,用户可以通过实现ICycle定义任务循环周期
ti.setTaskLasModifyUser("root");//任务修改人
ti.setTaskListenerClass("");//任务监听类,可以为空
ti.setTaskRetrytimes(3);//出错后重试次数
ti.setTaskStarttime("2013-08-14 14:25:00");//任务执行时间
ti.setTaskStatus(1);//任务状态
ti.setTaskTestclass("com.runqianapp.schedule.test.TureTest");//执行测试类,用户可以通过实现ITest类进行任务是否执行的判断
ti.setTaskTestparam("");//执行测试类参数
ti.setTaskTimeout(10);//超时时间(秒)
//添加任务
int taskId = 0;
int[] args_ids = null;
IDBAccess idba = null;
try {
idba = ScheduleConfig.getInitDBAccess();//获取数据库连接
taskId = PKGenerator.getInstance().getId("t_task.task_id", idba);// 得到任务主键值
ti.setTaskId(taskId);//设置任务id
ti.setTaskName("调度器示例1" + taskId);//设置任务名称
TaskManager.addTask(ti.toJSON());//添加任务(对应数据库t_task表)
args_ids = PKGenerator.getInstance().getIds("t_taskargument.arg_id", 8, idba);// 得到任务参数主键值,这里创建8个参数
} catch (Exception e) {
e.printStackTrace();
} finally {
if (idba != null) {
idba.close();
idba = null;
}
}
//添加任务参数
//设置报表的推送资源
ArgumentInfo info1 = new ArgumentInfo();// 任务参数类
info1.setArgId(args_ids[0]);//参数id
info1.setTaskId(taskId);//参数所属的任务id
info1.setArgName("reportFile");//参数名称 此参数代表调度的资源
info1.setArgTitle("报表导出名字");//别名
info1.setArgType(ArgumentInfo.TYPE_VALUE);//参数类型:TYPE_VALUE:字符串;TYPE_EXP:润乾表达式
info1.setArgValue("00,工资单.raq");//参数值 00:相对路径(相对reportHome)10:绝对路径 20:平台的订阅调度,值是res_id
//设置调度任务推送资源的方式
ArgumentInfo info2 = new ArgumentInfo();// 任务参数类
info2.setArgId(args_ids[1]);
info2.setTaskId(taskId);
info2.setArgName("proc_push_type");
info2.setArgTitle("报表推送类型");
info2.setArgType(ArgumentInfo.TYPE_VALUE);
info2.setArgValue("email");
//设置邮件推送的资源类型
ArgumentInfo info3 = new ArgumentInfo();// 任务参数类
info3.setArgId(args_ids[2]);
info3.setTaskId(taskId);
info3.setArgName("schedule_push_email_type");
info3.setArgTitle("邮箱推送类型");
info3.setArgType(ArgumentInfo.TYPE_VALUE);
info3.setArgValue("4");
//设置推送邮件的收件人地址
ArgumentInfo info4 = new ArgumentInfo();// 任务参数类
info4.setArgId(args_ids[3]);
info4.setTaskId(taskId);
info4.setArgName("schedule_push_email_address");
info4.setArgTitle("邮件推送收件人地址");
info4.setArgType(ArgumentInfo.TYPE_EXP);
info4.setArgValue("zhouhongxia@runqian.com.cn");
//设置邮件推送的抄送人地址
ArgumentInfo info5 = new ArgumentInfo();// 任务参数类
info5.setArgId(args_ids[4]);
info5.setTaskId(taskId);
info5.setArgName("schedule_push_email_cc_address");
info5.setArgTitle("邮件推送抄送人地址");
info5.setArgType(ArgumentInfo.TYPE_EXP);
info5.setArgValue("zhouhx08@163.com");
//设置邮件的推送的邮件标题
ArgumentInfo info6 = new ArgumentInfo();// 任务参数类
info6.setArgId(args_ids[5]);
info6.setTaskId(taskId);
info6.setArgName("schedule_push_email_title");
info6.setArgTitle("邮箱推送标题");
info6.setArgType(ArgumentInfo.TYPE_EXP);
info6.setArgValue("工资核算表");
//设置邮件推送的邮件正文
ArgumentInfo info7 = new ArgumentInfo();// 任务参数类
info7.setArgId(args_ids[6]);
info7.setTaskId(taskId);
info7.setArgName("schedule_push_email_content");
info7.setArgTitle("邮箱推送正文");
info7.setArgType(ArgumentInfo.TYPE_EXP);
info7.setArgValue("工资核算结果");
//设置文档导出的命名规则
ArgumentInfo info8 = new ArgumentInfo();// 任务参数类
info8.setArgId(args_ids[7]);
info8.setTaskId(taskId);
info8.setArgName("report_export_names");
info8.setArgTitle("文档导出名称");
info8.setArgType(ArgumentInfo.TYPE_EXP);
info8.setArgValue("00,\"备份示例\"+now()");
//添加上述参数到任务中
try {
TaskManager.addTaskArgs(info1.toJSON());
TaskManager.addTaskArgs(info2.toJSON());
TaskManager.addTaskArgs(info3.toJSON());
TaskManager.addTaskArgs(info4.toJSON());
TaskManager.addTaskArgs(info5.toJSON());
TaskManager.addTaskArgs(info6.toJSON());
TaskManager.addTaskArgs(info7.toJSON());
TaskManager.addTaskArgs(info8.toJSON());
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 添加示例2:每月1号,要将每位员工的工资条以excel的方式推送至对应员工邮箱,并将每位员工工资条推送至FTP服务器上每位员工的目录下,文档命名规则为员工名称+日期
*/
public void addDemo2() {
TimeZone tz = TimeZone.getTimeZone("ETC/GMT-8");
TimeZone.setDefault(tz); //设置时区,避免任务执行时间因系统时区出现问题
TaskInfo ti = new TaskInfo();// 任务信息类
ti.setGroupId(0); //所属任务组id
ti.setPreTaskId(0);//前置任务Id
ti.setTaskClass("com.runqianapp.schedule.task.ReportTask");//任务类,用户可以通过实现BaseTask类定义调度任务的动作
ti.setTaskCreateUser("root");//任务创建人
ti.setTaskCycleclass("com.runqianapp.schedule.example.cycle.MonthBeginCycle");//任务循环周期,用户可以通过实现ICycle定义任务循环周期
ti.setTaskLasModifyUser("root");//任务修改人
ti.setTaskListenerClass("");//任务监听类
ti.setTaskRetrytimes(3);//出错后重试次数
ti.setTaskStarttime("2013-08-14 15:55:00");//任务首次执行时间
ti.setTaskStatus(1);//任务状态
ti.setTaskTestclass("com.runqianapp.schedule.test.TureTest");//执行测试类,用户可以通过实现ITest类进行任务是否执行的判断
ti.setTaskTestparam("");//执行测试类参数
ti.setTaskTimeout(10);//超时时间(秒)
int taskId = 0;
int[] args_ids = null;
IDBAccess idba = null;
try {
idba = ScheduleConfig.getInitDBAccess();//获取数据库连接
taskId = PKGenerator.getInstance().getId("t_task.task_id", idba);// 得到任务主键值
ti.setTaskId(taskId);//设置任务id
ti.setTaskName("调度器示例2" + taskId);//设置任务名称
TaskManager.addTask(ti.toJSON());//添加任务(对应数据库t_task表)
args_ids = PKGenerator.getInstance().getIds("t_taskargument.arg_id", 10, idba);// 得到任务参数主键值,这里创建8个参数
} catch (Exception e) {
e.printStackTrace();
} finally {
if (idba != null) {
idba.close();
idba = null;
}
}
//添加任务参数
//设置任务的报表资源
ArgumentInfo info1 = new ArgumentInfo();// 任务参数类
info1.setArgId(args_ids[0]);//参数id
info1.setTaskId(taskId);//参数所属的任务id
info1.setArgName("reportFile");//参数名称
info1.setArgTitle("报表导出名字");//别名
info1.setArgType(ArgumentInfo.TYPE_VALUE);//参数类型:0:字符串;1:润乾表达式
info1.setArgValue("00,工资表.raq");//参数值,00:相对路径(相对reportHome)10:绝对路径 20:平台的订阅调度,值是res_id
//设置调度任务的推送类型
ArgumentInfo info2 = new ArgumentInfo();// 任务参数类
info2.setArgId(args_ids[1]);
info2.setTaskId(taskId);
info2.setArgName("proc_push_type");
info2.setArgTitle("报表推送类型");
info2.setArgType(ArgumentInfo.TYPE_VALUE);
info2.setArgValue("email,ftp");//多种推送方式用逗号隔开
//设置邮箱推送的资源类型
ArgumentInfo info3 = new ArgumentInfo();// 任务参数类
info3.setArgId(args_ids[2]);
info3.setTaskId(taskId);
info3.setArgName("schedule_push_email_type");
info3.setArgTitle("邮箱推送类型");
info3.setArgType(ArgumentInfo.TYPE_VALUE);
info3.setArgValue("0");
//设置邮箱推送的收件人
ArgumentInfo info4 = new ArgumentInfo();// 任务参数类
info4.setArgId(args_ids[3]);
info4.setTaskId(taskId);
info4.setArgName("schedule_push_email_address");
info4.setArgTitle("邮件推送收件人地址");
info4.setArgType(ArgumentInfo.TYPE_EXP);
info4.setArgValue("@emalie");
//设置邮箱推送的标题
ArgumentInfo info5 = new ArgumentInfo();// 任务参数类
info5.setArgId(args_ids[4]);
info5.setTaskId(taskId);
info5.setArgName("schedule_push_email_title");
info5.setArgTitle("邮箱推送标题");
info5.setArgType(ArgumentInfo.TYPE_EXP);
info5.setArgValue("工资单");
//设置邮箱推送的正文
ArgumentInfo info6 = new ArgumentInfo();// 任务参数类
info6.setArgId(args_ids[5]);
info6.setTaskId(taskId);
info6.setArgName("schedule_push_email_content");
info6.setArgTitle("邮箱推送正文");
info6.setArgType(ArgumentInfo.TYPE_EXP);
info6.setArgValue("本月工资单");
//设置文档的导出名称,此例中中是使用员工名称+时间的命名方式,员工名称通过sql参数获取
ArgumentInfo info7 = new ArgumentInfo();// 任务参数类
info7.setArgId(args_ids[6]);
info7.setTaskId(taskId);
info7.setArgName("report_export_names");
info7.setArgTitle("文档导出名称");
info7.setArgType(ArgumentInfo.TYPE_EXP);
info7.setArgValue("00,\"@name\"+now()");
//设置FTP推送的路径,此例中是将推送文件推送的以员工名称命名的文件夹中,此例中,员工名称有sql参数中获得
ArgumentInfo info8 = new ArgumentInfo();// 任务参数类
info8.setArgId(args_ids[7]);
info8.setTaskId(taskId);
info8.setArgName("schedule_push_ftp_path");
info8.setArgTitle("ftp推送路径");
info8.setArgType(ArgumentInfo.TYPE_EXP);
info8.setArgValue("/@name");
//设置FTP推送文件的类型
ArgumentInfo info9 = new ArgumentInfo();// 任务参数类
info9.setArgId(args_ids[8]);
info9.setTaskId(taskId);
info9.setArgName("schedule_push_ftp_type");
info9.setArgTitle("ftp推送类型");
info9.setArgType(ArgumentInfo.TYPE_VALUE);
info9.setArgValue("0");
//设置sql参数,获取员工的姓名和邮箱
ArgumentInfo info10 = new ArgumentInfo();// 任务参数类
info10.setArgId(args_ids[9]);
info10.setTaskId(taskId);
info10.setArgName("empId,empEmail");
info10.setArgTitle("员工id,员工email");
info10.setArgType(ArgumentInfo.TYPE_SQL);//ArgumentInfo.TYPE_SQL:sql参数类型参数
info10.setArgValue("demo([select name,emalie from scheduletest],[name,emalie])");
//将任务参数添加到任务中
try {
TaskManager.addTaskArgs(info1.toJSON());
TaskManager.addTaskArgs(info2.toJSON());
TaskManager.addTaskArgs(info3.toJSON());
TaskManager.addTaskArgs(info4.toJSON());
TaskManager.addTaskArgs(info5.toJSON());
TaskManager.addTaskArgs(info6.toJSON());
TaskManager.addTaskArgs(info7.toJSON());
TaskManager.addTaskArgs(info8.toJSON());
TaskManager.addTaskArgs(info9.toJSON());
TaskManager.addTaskArgs(info10.toJSON());
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 用例3:每月最后一天根据地区和销售代表生成销售月报,并以RAT格式推送平台下的销售月报目录。(资源中心)
*/
public void addDemo3(){
TimeZone tz = TimeZone.getTimeZone("ETC/GMT-8");
TimeZone.setDefault(tz); //设置时区,避免任务执行时间因系统时区出现问题
TaskInfo ti = new TaskInfo();// 任务信息类
ti.setGroupId(0); //所属任务组id
ti.setPreTaskId(0);//前置任务Id
ti.setTaskClass("com.runqianapp.schedule.task.ReportTask");//使用报表任务类,会自动执行往平台目录推送任务
ti.setTaskCreateUser("root");//任务创建人
ti.setTaskCycleclass("com.runqianapp.schedule.example.cycle.MonthEndCycle");//任务循环周期,用户可以通过实现ICycle定义任务循环周期
ti.setTaskLasModifyUser("root");//任务修改人
ti.setTaskListenerClass("");//任务监听类
ti.setTaskRetrytimes(3);//出错后重试次数
ti.setTaskStarttime("2013-08-14 16:15:00");//任务执行时间
ti.setTaskStatus(1);//任务状态
ti.setTaskTestclass("com.runqianapp.schedule.test.TureTest");//执行测试类,用户可以通过实现ITest类进行任务是否执行的判断
ti.setTaskTestparam("");//执行测试类参数,若需要对执行测试类提供参数,则可通过此方法进行设置
ti.setTaskTimeout(10);//超时时间(秒)
int taskId = 0;
int[] args_ids = null;
IDBAccess idba = null;
try {
idba = ScheduleConfig.getInitDBAccess();//获取数据库连接
taskId = PKGenerator.getInstance().getId("t_task.task_id", idba);// 得到任务主键值
ti.setTaskId(taskId);//设置任务id
ti.setTaskName("调度器示例3" + taskId);//设置任务名称
TaskManager.addTask(ti.toJSON());//添加任务(对应数据库t_task表)
args_ids = PKGenerator.getInstance().getIds("t_taskargument.arg_id", 4, idba);// 得到任务参数主键值,这里创建4个参数
} catch (Exception e) {
e.printStackTrace();
} finally {
if (idba != null) {
idba.close();
idba = null;
}
}
//添加任务参数
//设置任务推送资源
ArgumentInfo info1 = new ArgumentInfo();// 任务参数类
info1.setArgId(args_ids[0]);//参数id
info1.setTaskId(taskId);//参数所属的任务id
info1.setArgName("reportFile");//参数名称
info1.setArgTitle("报表导出名字");//别名
info1.setArgType(ArgumentInfo.TYPE_VALUE);//参数类型:ArgumentInfo.TYPE_VALUE:字符串;ArgumentInfo.TYPE_EXP:润乾表达式
info1.setArgValue("20,12173");//任务调度资源,00:相对路径(相对reportHome)10:绝对路径 20:平台的订阅调度,值是res_id
//设置推送到平台的资源类型,此例中为RAT资源
ArgumentInfo info2 = new ArgumentInfo();// 任务参数类
info2.setArgId(args_ids[1]);
info2.setTaskId(taskId);
info2.setArgName("schedule_push_resource_type");
info2.setArgTitle("资源推送类型");
info2.setArgType(ArgumentInfo.TYPE_VALUE);
info2.setArgValue(ReportTask.RAT+"");
//设置推送的资源目录,本例中推送到了资源中心下
ArgumentInfo info3 = new ArgumentInfo();// 任务参数类
info3.setArgId(args_ids[2]);
info3.setTaskId(taskId);
info3.setArgName("schedule_push_resource_dir"); //推送到平台的哪个目录下,填res_id
info3.setArgTitle("资源推送目录");
info3.setArgType(ArgumentInfo.TYPE_EXP);
info3.setArgValue("10000");//推送的目录的资源ID
//设置文档的命名规则
ArgumentInfo info4 = new ArgumentInfo();// 任务参数类
info4.setArgId(args_ids[3]);
info4.setTaskId(taskId);
info4.setArgName("report_export_names");
info4.setArgTitle("文档导出名称");
info4.setArgType(ArgumentInfo.TYPE_EXP);
info4.setArgValue("20,\"备份示例\"+now()");
//将任务参数添加到任务中
try {
TaskManager.addTaskArgs(info1.toJSON());
TaskManager.addTaskArgs(info2.toJSON());
TaskManager.addTaskArgs(info3.toJSON());
TaskManager.addTaskArgs(info4.toJSON());
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 添加示例4:如果某文件存在,则执行ETL动作进行数据导入
*/
public void addDemo4() {
TimeZone tz = TimeZone.getTimeZone("ETC/GMT-8");
TimeZone.setDefault(tz); //设置时区,避免任务执行时间因系统时区出现问题
TaskInfo ti = new TaskInfo();// 任务信息类
ti.setGroupId(0);
ti.setPreTaskId(0);
ti.setTaskClass("com.runqianapp.schedule.example.task.EtlDemoTask");//任务类,用户可以通过实现BaseTask类定义调度任务的动作,此实现类模拟了ETL动作
ti.setTaskCreateUser("root");
ti.setTaskCycleclass("com.runqianapp.schedule.cycle.OnceCycle");//任务循环周期,用户可以通过实现ICycle定义任务循环周期,此实现类为单次任务
ti.setTaskLasModifyUser("root");
ti.setTaskListenerClass("");
ti.setTaskRetrytimes(3);
ti.setTaskStarttime("2013-08-14 13:35:00");
ti.setTaskStatus(1);
ti.setTaskTestclass("com.runqianapp.schedule.example.test.FileJudgeTest");//执行测试类,用户可以通过实现ITest类进行任务是否执行的判断,实现类判断文件是否存在
ti.setTaskTestparam("c://test.doc");//执行测试类参数,此例中为文件所在路径
ti.setTaskTimeout(10);
int taskId = 0;
IDBAccess idba = null;
int[] args_ids = null;
try {
idba = ScheduleConfig.getInitDBAccess();
taskId = PKGenerator.getInstance().getId("t_task.task_id", idba);// 得到任务主键值
ti.setTaskId(taskId);
ti.setTaskName("调度器示例4" + taskId);
TaskManager.addTask(ti.toJSON());
args_ids = PKGenerator.getInstance().getIds("t_taskargument.arg_id", 1, idba);// 得到任务参数主键值,这里创建8个参数
} catch (Exception e) {
e.printStackTrace();
} finally {
if (idba != null) {
idba.close();
idba = null;
}
}
//添加任务参数(由于现在调度引擎根据调度任务的参数去进行实例化,所以需要在任务中至少需要添加一个任务参数)
ArgumentInfo info1 = new ArgumentInfo();// 任务参数类
info1.setArgId(args_ids[0]);//参数id
info1.setTaskId(taskId);//参数所属的任务id
info1.setArgName("arg1");//参数名称
info1.setArgTitle("参数1");//别名
info1.setArgType(ArgumentInfo.TYPE_VALUE);//参数类型:ArgumentInfo.TYPE_VALUE:字符串;ArgumentInfo.TYPE_EXP:润乾表达式
info1.setArgValue("");//调度任务使用res_Id
try {
TaskManager.addTaskArgs(info1.toJSON());
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 添加示例5:每周二、五晚上11点生成一张备份数据填报表,实现将A表中的数据备份到B表中
*/
public void addDemo5() {
TimeZone tz = TimeZone.getTimeZone("ETC/GMT-8");
TimeZone.setDefault(tz); //设置时区,避免任务执行时间因系统时区出现问题
TaskInfo ti = new TaskInfo();// 任务信息类
ti.setGroupId(0);
ti.setPreTaskId(0);
ti.setTaskClass("com.runqianapp.schedule.example.task.BackUpTask");//任务类,用户可以通过实现BaseTask类定义调度任务的动作,此例中进行了数据备份的操作
ti.setTaskCreateUser("root");
ti.setTaskCycleclass("com.runqianapp.schedule.example.cycle.TuesAndFriCycle");//任务循环周期,用户可以通过实现ICycle定义任务循环周期,此例中为周二周五执行任务
ti.setTaskLasModifyUser("root");
ti.setTaskListenerClass("");
ti.setTaskRetrytimes(3);
ti.setTaskStarttime("2013-08-14 18:33:00");
ti.setTaskStatus(1);
ti.setTaskTestclass("com.runqianapp.schedule.test.TureTest");//执行测试类,用户可以通过实现ITest类进行任务是否执行的判断,此例设置为永真
ti.setTaskTestparam("");
ti.setTaskTimeout(10);
int taskId = 0;
int[] args_ids = null;
IDBAccess idba = null;
try {
idba = ScheduleConfig.getInitDBAccess();
taskId = PKGenerator.getInstance().getId("t_task.task_id", idba);// 得到任务主键值
ti.setTaskId(taskId);
ti.setTaskName("调度器示例5" + taskId);
TaskManager.addTask(ti.toJSON());
args_ids = PKGenerator.getInstance().getIds("t_taskargument.arg_id", 1, idba);// 得到任务参数主键值,这里创建1个参数
} catch (Exception e) {
e.printStackTrace();
} finally {
if (idba != null) {
idba.close();
idba = null;
}
}
//添加任务参数
//设置调度任务的调度资源
ArgumentInfo info1 = new ArgumentInfo();// 任务参数类
info1.setArgId(args_ids[0]);
info1.setTaskId(taskId);
info1.setArgName("reportFile");
info1.setArgTitle("报表导出名字");
info1.setArgType(ArgumentInfo.TYPE_EXP);//参数类型:ArgumentInfo.TYPE_VALUE:字符串;ArgumentInfo.TYPE_EXP:润乾表达式
info1.setArgValue("00,数据备份.raq");//任务调度资源,00:相对路径(相对reportHome)10:绝对路径 20:平台的订阅调度,值是res_id
try {
TaskManager.addTaskArgs(info1.toJSON());
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 添加示例6:每5分钟运行网站监控程序
*/
public void addDemo6() {
TimeZone tz = TimeZone.getTimeZone("ETC/GMT-8");
TimeZone.setDefault(tz); //设置时区,避免任务执行时间因系统时区出现问题
TaskInfo ti = new TaskInfo();// 任务信息类
ti.setGroupId(0);
ti.setPreTaskId(0);
ti.setTaskClass("com.runqianapp.schedule.example.task.NetMonitorTask");//任务类,用户可以通过实现BaseTask类定义调度任务的动作,此例模拟网站监控程序
ti.setTaskCreateUser("root");
ti.setTaskCycleclass("com.runqianapp.schedule.example.cycle.FiveMinutesCycle");//任务循环周期,用户可以通过实现ICycle定义任务循环周期,此例为5分钟任务
ti.setTaskLasModifyUser("root");
ti.setTaskListenerClass("");
ti.setTaskRetrytimes(3);
ti.setTaskStarttime("2013-08-14 18:45:00");
ti.setTaskStatus(1);
ti.setTaskTestclass("com.runqianapp.schedule.test.TureTest");//执行测试类,用户可以通过实现ITest类进行任务是否执行的判断
ti.setTaskTestparam("");
ti.setTaskTimeout(10);
int taskId = 0;
int[] args_ids = null;
IDBAccess idba = null;
try {
idba = ScheduleConfig.getInitDBAccess();
taskId = PKGenerator.getInstance().getId("t_task.task_id", idba);// 得到任务主键值
ti.setTaskId(taskId);
ti.setTaskName("调度器示例6" + taskId);
TaskManager.addTask(ti.toJSON());
args_ids = PKGenerator.getInstance().getIds("t_taskargument.arg_id", 1, idba);// 得到任务参数主键值,这里创建1个参数
} catch (Exception e) {
e.printStackTrace();
} finally {
if (idba != null) {
idba.close();
idba = null;
}
}
//添加任务参数(由于现在调度引擎根据调度任务的参数去进行实例化,所以需要在任务中至少需要添加一个任务参数)
ArgumentInfo info1 = new ArgumentInfo();// 任务参数类
info1.setArgId(args_ids[0]);//参数id
info1.setTaskId(taskId);//参数所属的任务id
info1.setArgName("arg1");//参数名称
info1.setArgTitle("参数1");//别名
info1.setArgType(ArgumentInfo.TYPE_VALUE);//参数类型:ArgumentInfo.TYPE_VALUE:字符串;ArgumentInfo.TYPE_EXP:润乾表达式
info1.setArgValue("");//调度任务使用res_Id
try {
TaskManager.addTaskArgs(info1.toJSON());
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 添加示例7:对仓库库存进行监控,当某一商品的库存量少于1000t的话,将商品名称以短信方式发送至仓库管理员。
*/
public void addDemo7() {
TimeZone tz = TimeZone.getTimeZone("ETC/GMT-8");
TimeZone.setDefault(tz); //设置时区,避免任务执行时间因系统时区出现问题
TaskInfo ti = new TaskInfo();// 任务信息类
ti.setGroupId(0);
ti.setPreTaskId(0);
ti.setTaskClass("com.runqianapp.schedule.example.task.StockMonitorTask");//任务类,用户可以通过实现BaseTask类定义调度任务的动作,此例中以模拟短信推送的方式进行商品数量监控
ti.setTaskCreateUser("root");
ti.setTaskCycleclass("com.runqianapp.schedule.example.cycle.FiveMinutesCycle");//任务循环周期,用户可以通过实现ICycle定义任务循环周期,此例为5分钟任务
ti.setTaskLasModifyUser("root");
ti.setTaskListenerClass("");
ti.setTaskRetrytimes(3);
ti.setTaskStarttime("2013-08-16 15:30:00");
ti.setTaskStatus(1);
ti.setTaskTestclass("com.runqianapp.schedule.example.test.StockJudgeTest");//执行测试类,用户可以通过实现ITest类进行任务是否执行的判断
ti.setTaskTestparam("");
ti.setTaskTimeout(10);
int taskId = 0;
int[] args_ids = null;
IDBAccess idba = null;
try {
idba = ScheduleConfig.getInitDBAccess();
taskId = PKGenerator.getInstance().getId("t_task.task_id", idba);// 得到任务主键值
ti.setTaskId(taskId);
ti.setTaskName("调度器示例7" + taskId);
TaskManager.addTask(ti.toJSON());
args_ids = PKGenerator.getInstance().getIds("t_taskargument.arg_id", 1, idba);// 得到任务参数主键值,这里创建8个参数
} catch (Exception e) {
e.printStackTrace();
} finally {
if (idba != null) {
idba.close();
idba = null;
}
}
//添加任务参数
//设置短信推送号码
ArgumentInfo info1 = new ArgumentInfo();// 任务参数类
info1.setArgId(args_ids[0]);
info1.setTaskId(taskId);
info1.setArgName("schedule_push_sms_number");
info1.setArgTitle("短信推送号码");
info1.setArgType(ArgumentInfo.TYPE_EXP);
info1.setArgValue("15891666603");
try {
TaskManager.addTaskArgs(info1.toJSON());
} catch (Exception e) {
e.printStackTrace();
}
}
}