您的位置:首页 > 其它

ERP系统中邮件提醒定时器框架的设计与应用

2012-08-03 22:23 323 查看
在目前的ERP系统中存在着大量的定时任务。为了能够自动处理ERP系统中的定时任务,采用基于Quartz的企业任务调度框架,在无锡烨隆ERP系统的8D管理模块中设计邮件提醒定时器框架,减少了人工干涉,提高了管理效率。Quartz框架具有完善的任务调度服务功能,允许开发人员灵活地定义调度规则,并且操作非常简单。0 引言

企业资源计划(Enterprise Resource Planning,ERP)是基于计算机信息技术和管理科学的最新发展,以计算机信息技术为基础平台,结合先进的企业科学管理理念,充分调配和平衡企业各方面的资源,并以最科学的方式整合企业资源,为企业决策层、管理层和操作层提供项目解决方案,快速达到企业目标。ERP中存在着大量的定时任务,如:客户信用额度的变化、产品价格变更通知、库存出入库盘点月底的报表和工作流程的审批等。为改善企业业务流程,提高企业竞争力,无锡烨隆ERP系统设计中计划通过使用定时器框架来实现定时任务,如邮件自动提醒功能,这样既可以减少人工的干涉,又可以提高办公的效率。ERP系统邮件提醒定时器框架正是在这样的背景下被提出的,该框架结合Spring,同时还要考虑提高代码的可充用性、降低代码的维护成本。

1 定时器框架方案的选择

定时任务在现在的信息管理系统中已经大量的使用,在Spring框架中就可以选用3种不同的定时机制。

1.1 基于TimerTask的机制

Java中的TimerTask类可以用来执行定时任务,由Spring框架进行封装调用。其中ScheduledTimerTask类定义任务的执行周期,timerTask属性指定执行的工作类;TimerFactoryBean类负责启动定时任务,scheduledTimerTasks属性显示一个需要启动的定时器任务的列表。TimerTask适用于时间间隔相对较短的简单任务。

1.2 基于Quartz的机制

Quartz是一个开源任务调度框架,提供了一个比TimerTask更强大的企业级任务调度执行功能,Spring继承并简化了它。Quartz具有很大的灵活性而又不失简单性,能够执行复杂的任务调度。它允许开发人员灵活地定义触发器的调度规则,并可以对触发器和任务进行关联映射。Quartz为基于Spring应用程序提供了便利的类,如MethodlnvokingJobDetailFactoryBean,SimpleTriggerBean,CronTriggerBean和SchedulerFactoryBean,以便能够在Spring框架中实现依赖注入,降低了Quartz的使用难度。

1.3 基于Executor的机制

Executor框架通过线程池来处理异步任务,也可以执行任务调度服务。其中ScheduledExecutorTask类来指定调度的规则,ScheduledExecutorFactoryBean类完成任务的调度,并且可以通过它来控制线程池中的线程数量。

基于以上分析,TimerTask可以满足简单的定时企业需求;Quartz提供的任务调度服务最为完善,在企业应用非常广泛;Executor提供的线程池服务最为完善。下面将结合Spring框架,使用Quartz来实现定时器的设计。

2 定时器框架的设计

基于Quartz的定时器框架首先必须导入所需的jar包,然后根据它所提供的一些类来依次实现相应的配置。详细步骤如下所示:

(1)声明工作类,该类必须实现相应的业务逻辑,同时将该类中的dao对象也一并包含在内;

(2)由MethodInvokingJobDetailFactoryBean类创建调度的任务,并在该任务中需要指明工作类和实现业务逻辑的方法;

(3)由Spring提供的2个类来实现任务的调度规则,它们具体是:SimpleTriggerBean类配置简单的触发(调度)规则,指明任务执行的时机和频率;CronTriggerBean类配置定制模式的触发(调度)规则,它的功能比SimpleTriggerBean实现的功能要强大,能够控制任务触发(调度)的精确时间,最后还需指明调度触发器与任务之间的映射关系;

(4)最后由SchedulerFactoryBean来启动触发器。

3 定时器框架的应用

如图1所示,以无锡烨隆ERP系统8D管理模块为例,讲述如何基于Quartz框架开发邮件提醒的定时任务。

点击图片查看大图


图1 8D质量管理流程图

8D管理模块构建使整个团队能够共享信息并努力达成产品质量目标的质量管理体系,能够针对出现的质量问题,及时找出问题产生的根本原因,提出短期、中期和长期对策,并采取相应行动措施。

8D管理模块中由质量部管理系统中的创建8D,8D查询、8D审核、8D跟踪4个子模块以及其他部门管理系统中的8D跟踪子模块共同构成。

首先由质量部的员工填写8D基本信息(发生时间、发生地点、发生事件)、选择责任人并允许上传附件(照片或文档描述),生成一条新的8D信息。创建人(审核人)在完成8D创建(审核)操作后可以给责任人发邮件,提醒责任人及时填写并提交或审核D1-D3/D4-D5/D6-D8信息,相关责任人在规定期限内依据不同的权限在8D跟踪模块中按照步骤解决问题。如果D1-D3信息的提交超期或审核超期时,系统将给出超期提醒,并向责任人自动发送提醒邮件(D1-D3填写限期1天,审核限期为1天),同样D4-D5/D6-D8信息如果提交超期或审核超期,系统都将向责任人自动发送提醒邮件。以便立即做出反应,解决问题,提高用户的满意度,降低成本和提高生产率。

定时器框架的开发步骤可以归结为2点:编写任务类和编写配置文件。

3.1 编写任务类

在com.cssrc.quartz.service路径下新建一个JobService类,通过该类中的方法来实现任务,如voidautoSendEmail(),该方法用来执行发送邮件的计划任务。

方法中首先需要声明发送邮件所使用的dao,如userDAO,roleDAO,infoEightdDAO,infoOneThreedDAO和infoFourFivedDAO等,并生成相应的getter和setter方法。

点击图片查看大图 下面以D1~D3信息审核为例来说明发送邮件的实现,具体描述如下:




autoSendEmail方法中的这段代码首先判断当前系统的时间与8D信息表创建的时间之问是否超过l天,如果超过,则通过MailUtil类中的sendSim—pleMail方法向相关责任人发送普通邮件,该方法需要提供4个参数的数据,它们分别是接收邮箱、发送邮箱、邮件主题和内容。

3.2 编写配置文件

点击图片查看大图 在WEB-INF下新建applicationquartz.xml配置文件,此配置文件必须在项目的web.xml配置文件中声明,application—quartz.xml文件的具体配置代码如下:




该配置文件详细描述了quartz框架在系统启动24 h后触发sendEmail任务,该任务具体由quartz标签中指定的JobService类的autoSendEmail方法实现8D质量管理中邮件发送任务,而且以后每隔24h再触发,这样就可以实现ERP系统中邮件提醒定时器框架的设计。D4~D5和D6~D8的信息提交或审核是否超期的代码封装在autoSendEmail方法中,具体实现同D1~D3相似。D1~D3信息提交超期发送的邮件提醒见图2。

点击图片查看大图


图2 8D质量管理D1~D3信息提交超期

4 结语

Spring是一个开源框架,通过依赖注入,能够有效地组织管理Java应用对象,降低了模块间的耦合的度,因此结合Spring框架,基于Quartz机制实现了邮件提醒定时器框架的设计,并运用到无锡烨隆ERP系统8D管理模块上,减少了人工干预,提高了工作效率。这个框架将应用到该ERP系统的其他模块中,用来实现ERP系统中客户信用额度的变化、产品价格变更通知、库存出入库盘点月底的报表和工作流程的审批等定时任务。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: