【摘 要】近年来,单位和个人对业务能力提出更高的要求,培训业得到快速发展,培训业的高速发展对管理手段提出了更高的要求,特别是信息技术。这就需要一套培训综合业务系统,它能够利用现代的信息处理技术和科学手段,使得培训业务更加科学化、规范化、系统化与自动化。本文阐述的培训业务核心系统采用mvc的设计模式,是三层结构的分布式应用。采用面向对象的设计方法,并且利用工作流的概念对所有的业务操作进行控制和记录。
【关键词】培训业务核心系统;j2ee mvc;数据模型层;业务逻辑处理层
培训业务核心系统遵循j2ee(java 2 platform, enterprise edition)标准,实现了mvc(model-view-controller)的设计模式,应用典型的三层结构,每个层次相对独立,并选用相应的开发工具。本系统的三层结构分别为展现层、数据模型层以及业务逻辑处理层。
展现层的设计:本系统界面展现层采用jsp框架技术实现。系统中将公共界面元素控件化,设计了代码选择控件,多行显示输入控件,时间输入控件等。代码选择控件可以通过鼠标或键盘操作选取代码,自动校验代码正确性。多行显示输入控件在网页上实现了控件的功能,使操作起来更加方便。在设计中,尽量考虑界面的深度,使用较短的深度提交应用。大多数应用在一层界面提交,而不是通过一层一层的嵌套提交。
界面展现层分为几个关键的区域,分别为操作区域、数据缓存区域、数据交互区域以及数据提交区域。登录系统后能看到的区域只有“操作区域”,数据缓存主要是用来存储基础数据以便减少与服务器交互的次数,主要存储代码选择控件对应的数据。数据交互区域在查询数据时完成sql语句的封装和查询结果的解析。数据提交区域是将用户操作的表单提交至服务器完成业务逻辑处理和数据存储。操作区域包括导航菜单和对应的交互区域,个性化业务功能主要在这里展现。
数据模型层的设计:数据模型层采用类似于开源框架hibernate的实现方式,对于系统中的每一张表,都有相应的数据模型。这些数据模型可取代通过sql语句的方式来和数据库进行交互。数据模型为实际的java类文件,系统中每张表的数据模型分为三种,分别为xxxxdb.java、xxxxschema.java、xxxxset.java(xxxx对应数据库中的表名)。假设表名为lismsdefine,那么就会相应的存在三个相对应的java类文件,分别为lismsdefinedb.java、lismsdefineschema.java、lismsdefineset.java。其中类lismsdefineschema是真正数据库的表模型,lismsdefine表中的每一个字段都映射为类lismsdefineschema的成员变量,并且每个表字段映射的成员变量都由相应的get和set方法。类lismsdefineset是lismsdefineschema的一个集合,lismsdefineset中包含多个lismsdefineschema。类lismsdefinedb继承lismsdefineschema,是真正与数据库进行交互的类,该类封装了与数据库之间的增、删、改、查操作,并且查询之后可以返回相应的set或者schema对象,以便于程序逻辑处理的应用。图1为lismsdefinedb、lismsdefineschema、lismsdefineset的类框图。
业务逻辑处理层的设计:展现层通过ui和业务逻辑层blf进行交互,blf直接调用bl,bl即为业务逻辑处理,在bl中操作相应的schema、set等,并将操作的结果一并返回给blf,由blf将数据操作通过事务一并提交给数据库。图2为操作的各层组件之间的调用关系。
图2各层组件之间的调用关系
在业务逻辑处理层,bl组件通用的代码如下所示。
功能:处理业务逻辑并将结果返回给blf
代码:
public class testbl{/** 错误处理类,每个需要错误处理的类中都放置该类 */
public cerrors merrors = new cerrors();/** 往后面传输数据的容器 */
private vdata minputdata; /** 业务处理相关变量 */
private string tagentcode = ""; /** * 传输数据的公共方法 */
public boolean submitdata(vdata cinputdata, string coperate)
{//将操作数据拷贝到本类中this.moperate = coperate;
//得到外部传入的数据,将数据备份到本类中
if (!getinputdata(cinputdata)) { return false; } //校验
if (!check()){return false;} if (!dealdata()){ // @@错误处理 cerror terror = new cerror();this.
merrors.addoneerror(terror); return false;}
//准备往后台的数据if (!prepareoutputdata()){return false;}
return true;}}
说明:业务逻辑层blf组件通过调用testbl的submit方法,将要处理的业务数据传输给bl,在getinputdata方法主解析传入的业务数据,check方法校验数据是否正常,dealdata方法处理正常的业务逻辑,并将处理结果打包,prepareoutputdata方法将打包好的数据返回给blf。
【参考文献】
[1]因人设岗,还是因岗设人——工作分析与职务设计[j].中国新通信,2006(20):62-78.
[2]王晓红.新一轮服务业离岸外包的理论分析[j].财贸经济,2007(09):75-80+129.
[3]李占新.基于soa的培训考试管理系统的设计[j].电脑知识与技术,2010(27):7819-7821.
[4]宋萑.论中国教研员作为专业领导者的新角色理论建构[j].教师教育研究,2012(01):18-24.
[5]陈进涛,吴汉才,殷施科.基于计算机仿真的内河船员培训模式的创建[j].武汉船舶职业技术学院学报,2012(03):48-51.
[6]吴喜德,纪龙.欧盟内河水运发展趋势分析[j].生产力研究,2012(10):157-159.
[7]贺东明,徐振洪.基于知识管理的电能计量培训课程开发研究[j].中国电力教育,2013(05):67-69.