S2chronosでスケジュールを画面から操作



S2Chronos勉強しました(・∀・)


環境の設定方法は載ってるんだが、じゃあこれを画面から可変にってできないのかなって色々調べてみました(*´ω`*)



ブログのコメント見て半分鵜呑みにして作ったらうまくいったんだよなw



間違ってたらコメントください(´・ω・`)


TestAction.java 画面アクション
public class TestAction {
 public Scheduler scheduler;
 public TestDto testDto;
 
 public String 停止ボタン() {
  // タスク停止処理
  scheduler.removeTask(TestTask.class);
  return success;
 }
 
 public String 開始ボタン() {
  // タスク停止処理
  scheduler.removeTask(TestTask.class);
  dto.setHour(12);  // 画面からの設定値
  // タスク起動処理
  scheduler.addTask(TestTask.class);
  return success;
 }
}


TestDto.java 画面→タスクに値を受け渡し
@Component(instance = InstanceType.APPLICATION)
public class TestDto {
 
 /** 時 */
 private int hour;
 
 public int getHour() {
  return hour;
 }
 
 public void setHour(int hour) {
  this.hour = hour;
 }
}



TestTask.java タスク(バッチ)
@Task
public class TestTask {
 public TestDto testDto;
 private CCronTrigger trigger = new CCronTrigger();
 
 public TaskTrigger getTrigger() {
  return trigger;
 }
 
 public boolean isForceUnScheduleTask() {
  return trigger.isEndTask();
 }
 
 public void initialize() {
  // DTOから時を取得
  tirigger.setExpression("0 0 " + testDto.getHour() + " * * ?");
  trigger.setTeScheduleTask(true);
 }
 
 public void start() {
  // バッチ処理
  System.out.println("いーじゃん!いーじゃん!スゲーじゃん!?");
  System.out.println("いーじゃん!いーじゃん!スゲーじゃん!?");
  System.out.println("いーじゃん!いーじゃん!スゲーじゃん!?");
 }
}





これを応用したらDBに設定した値から取得も可能です(´・ω・`)

時間があれば作るかな(*´ω`*)







0 件のコメント:

コメントを投稿