tasktest.java

来自「OBPM是一个开源」· Java 代码 · 共 91 行

JAVA
91
字号
package cn.myapps.core.task.ejb;

import java.util.Calendar;

import junit.framework.TestCase;
import cn.myapps.base.dao.PersistenceUtils;
import cn.myapps.base.dao.SessionSignal;
import cn.myapps.core.macro.runner.JavaScriptRunner;
import cn.myapps.util.sequence.Sequence;

public class TaskTest extends TestCase{

	public void testTaskRunning() throws Exception {
		Calendar c = Calendar.getInstance();
		for (int i = 0; i < 100; i++) {
			Task task = new Task();
			task.setId(Sequence.getSequence());
			task.setPeriod(TaskConstants.REPEAT_TYPE_DAILY);
			
			c.roll(Calendar.SECOND, 50);
			task.setRunningTime(c.getTime());
//			task.setRunningTime(new Date());
			task.setType(TaskConstants.TASK_TYPE_SCRIPT);
			task.setName(i+"");
			task
					.setTaskScript("var v="
							+ i
							+ ";java.lang.System.out.print('v='+v);" 
							+
									"for(var n=0;n<10000;n++);java.lang.System.out.println('-->'+v);");

			Thread t = new TestThread(task) ;
			t.setName("ThreadName:"+i);
			t.start();
		}
		
	}

	/**
	 * @param args
	 * @throws Exception
	 */
	public static void main(String[] args) throws Exception {
		TaskTest test = new TaskTest();test.
		testTaskRunning();
	}		

}


class TestThread extends Thread {
	Task task;
	TestThread(Task task) {
		this.task = task;
	}
	
	public void run() {
		while(true) {
			// 符合停止条件则停止
			try {
				if (task.isExpired()) {

					SessionSignal signal = PersistenceUtils
							.getSessionSignal();
//					signal.sessionSignal++;
					try {
						task.execute();

					} catch (Exception e) {
						e.printStackTrace();
					} finally {

//						signal.sessionSignal--;
//						if (signal.sessionSignal <= 0) {
							try {
								PersistenceUtils.closeSession();
								JavaScriptRunner.clear();
							} catch (Exception e) {
							}
//						}
					}
				}
				
				sleep(1000);
			} catch (Exception e) {
				e.printStackTrace();
			}
		}
	}
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?