任务管理示例- 调度功能客户化-客户化文档
目录

任务管理示例

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();
  }
  
 }
 
}