timerrunner.java
来自「OBPM是一个开源」· Java 代码 · 共 123 行
JAVA
123 行
package cn.myapps.util.timer;
import java.util.Collection;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
import java.util.Timer;
import cn.myapps.base.action.ParamsTable;
import cn.myapps.base.dao.PersistenceUtils;
import cn.myapps.base.dao.SessionSignal;
import cn.myapps.core.dynaform.document.ejb.Document;
import cn.myapps.core.macro.runner.JavaScriptRunner;
import cn.myapps.core.task.ejb.Task;
import cn.myapps.core.task.ejb.TaskConstants;
import cn.myapps.core.task.ejb.TaskProcess;
import cn.myapps.core.user.action.WebUser;
public class TimerRunner {
public static Map runningList = new HashMap();
private static Timer timer = new Timer();
private final static JavaScriptRunner RUNNER = JavaScriptRunner
.getInstance();
// public TimerRunner(TimeRunnerAble aRunnerable) {
//
// }
//
public static void registerTimerTask(TimeRunnerAble runnerAble,
Date firstTime, long period) {
timer.schedule(runnerAble, firstTime, period);
}
public static void registerTimerTask(TimeRunnerAble runnerAble, long delay,
long period) {
timer.schedule(runnerAble, delay, period);
}
public static void unregisterAllTimerTask() {
timer.cancel();
timer = null;
}
// 注册自动服务
public static void registerJSService(String application) {
try {
RUNNER.initBSFManager(null, null, null, null, application);
} catch (Exception e) {
e.printStackTrace();
}
}
public static TimeRunnerAble createTimeRunnerAble(final Task task,
final TaskProcess tp) {
return new TimeRunnerAble() {
int timesCount = 0;
int currTotal = task.getTotalRuntimes();
public void run() {
String terminateScript = task.getTerminateScript(); // 停止条件
int total = currTotal;
// System.out.println("TotalRuntimes->" +
// task.getTotalRuntimes());
// 达到运行次数则停止
if (task.getRuntimes() == timesCount
&& task.getPeriod() == TaskConstants.REAPET_TYPE_NOTREAPET) {
this.cancel(task, tp);
TimerRunner.runningList.remove(task);
}
// 符合停止条件则停止
try {
registerJSService(task.getApplicationid());
Object terminateObj = RUNNER.run(terminateScript);
if (terminateObj instanceof Boolean) {
if (((Boolean) terminateObj).booleanValue()) {
this.cancel(task, tp);
TimerRunner.runningList.remove(task);
System.out.println("terminateScript->"
+ terminateScript);
}
}
if (task.isExpired()) {
timesCount++;
SessionSignal signal = PersistenceUtils
.getSessionSignal();
// signal.sessionSignal++;
try {
task.execute();
total += timesCount;
task.setTotalRuntimes(total);
tp.doUpdate(task);
} catch (Exception e) {
e.printStackTrace();
} finally {
// signal.sessionSignal--;
// if (signal.sessionSignal <= 0) {
try {
PersistenceUtils.closeSession();
JavaScriptRunner.clear();
} catch (Exception e) {
}
// }
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
};
}
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?