COOX基础培训之二次开发(二)

二次开发

3. 导入外部Jar包

3.1 MyEclipse中编写如下类文件,并打包

(1)HelloWorld类

package com.coox.extend;

public class HelloWorld {
	
	public static void main(String args[])
	{
		//TODO 
	}

	public static String sayHello(String name){
		return "Hello! "+ name;
	}
}

(2)打包成Jar包
在这里插入图片描述
(3)拷贝至Builder安装路径下面的System文件夹(运行模式下,拷贝至Manager安装路径下面的System文件夹)
(4)页面中添加如下Swing控件
在这里插入图片描述
(5)给按钮“Say Hello”添加脚本事件

/**
 * btnSay_mouseReleased(mouseEvent)
 */
function btnSay_mouseReleased(mouseEvent)
{
	var hello = txtHello.getText();
	
	var result = HelloWorld.sayHello(hello);
	
	$UI.messageBox("提示",result);
}

(6)模拟运行测试
在这里插入图片描述

4. 用户服务(User Service)

【摘要】
COOX可以创建用户自定义服务,所有的服务都可以设置启动类型:自动、手动,并可以人为停止服务。包括和三方系统的接口,都可以由用户服务所创建。
下面以数据清除服务为例,进行介绍。

【服务创建目的】
对于系统中自己创建的数据库表,有些是作为数据存储用,考虑数据量的增长和数据查询效率,我们需要定期备份,并清理该数据表格,如只保留3个月内的数据。

(1)新建用户服务PurgeService
在这里插入图片描述
设置服务运行的服务器地址,设置服务启动类型
在这里插入图片描述
Classes类中会自动生成如下两个类文件
在这里插入图片描述

(2)创建数据清除任务类PurgeTask

  • 设置服务运行间隔:一天;
  • 设置数据保留天数:365天。
/*
 * class PurgeTask
 * Copyright (c) 2009 Ordinal Technologies. All Rights Reserved.
 */

import globalscreen.application.persist.DataSet;
import java.util.Date;
import java.util.TimerTask;

public class PurgeTask extends TimerTask
{
	//数据清除周期:24小时
	public static final long PERIOD_24H = 24l * 60l * 60l * 1000l;
	//数据保留天数:365天
	public static final long RETENTION_365D = 365l * 24l * 60l * 60l * 1000l;
	
	public PurgeTask()
	{
	}
	
	@Override
	public void run()
	{
		long retentionFilter = System.currentTimeMillis()-RETENTION_365D;
		
		//删除学生数据
		deleteStudents(retentionFilter);
	}

	/**
	 * 删除学生表中的数据
	 */
	private void deleteStudents(long retentionFilter)
	{
		try
		{
			//这里假设ID为数据创建日期字段,筛选出一年外的数据,进行删除
			String collecttimeFilter = "ID < " + retentionFilter;
			DataSet ds = new DataSet("UDT_Students");
			ds.setFilter(collecttimeFilter);
			ds.deleteAll();
		}
		catch(Exception e)
		{
			e.printStackTrace();
		}
	}
}

(3)修改用户服务实现文件PurgeServiceImpl

  • 设置服务首次运行时间:明天凌晨02:00;
  • 设置服务启动和结束方法入口。
/**
 * class PurgeServiceImpl
 * Copyright (c) 2007 Ordinal Technologies. All Rights Reserved.
 */

import globalscreen.application.*;
import java.util.Timer;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

public class PurgeServiceImpl extends ServiceManagerImpl implements PurgeService
{
	private PurgeTask purgeTask;
	
	private Timer purgeTaskTimer;
	
   /**
	* Constructor
	*/
	public PurgeServiceImpl()
	{
	}

   /**
	* start method
	*/
	public void start()
	{
		purgeTask=new PurgeTask();
		purgeTaskTimer=new Timer("PurgeTaskTimer");
		purgeTaskTimer.schedule(purgeTask,thisMonthNextDay(),PurgeTask.PERIOD_24H);
	}

   /**
	* stop method
	*/
	public void stop()
	{
		purgeTaskTimer.purge();
		purgeTaskTimer.cancel();
	}

   /**
	* init method
	*/
	public void init()
	{
	}
	
	
	/**
	 * 获取明天凌晨02:00,作为起始时间
	 */
	private static Date thisMonthNextDay()
	{
		Calendar calendar = Calendar.getInstance();
		calendar.setTime(new Date());
		calendar.add(Calendar.DATE, 1);
	    calendar.set(Calendar.HOUR_OF_DAY, 2);  
	    calendar.set(Calendar.MINUTE, 0);  
	    calendar.set(Calendar.SECOND, 0);  
	    return calendar.getTime();
	}
}

(4)服务创建完成,后期部署完成后,会每天凌晨02:00自动运行一次。


【结束】

猜你喜欢

转载自blog.csdn.net/lincshao/article/details/83505562