《工业控制计算机》2008年21卷第11
期1系统模块划分
客户关系管理系统按功能划分主要有四大模块:基本信息
管理、工作流管理、数据统计与分析、系统设置。
系统的模块结构如图1所示。
图1
系统的功能模块
2系统设计
从技术架构上说,本系统是基于J2EE平台的三层分布式
系统结构,分别是客户层、Web层和数据层,属于B/S结构的网络应用系统,如图2所示。
图2
多层分布模式
2.1Web层的设计
其中Web层又按MVC(Model-View-Controller)划分为三个部分:表示层(JSP、HTML)、控制层(struts的servlet与FormAction等)、逻辑层。这三部分由Struts统一起来。
MVC是一种成熟的分层的设计思想,本系统采纳了MVC
的设计思想来进行整体设计。
MVC即把业务逻辑、页面流程控制和用户界面分开,便于
开发人员进行角分工,实现分层及并行开发,有利于软件复用和重构,以及系统的维护和扩展。MVC是Model-View-Con-
troller的简写。“Model”代表的是应用的业务逻辑(通过JavaBean,EJB组件实现),“View”是应用的表示面(一般是JSP或JSF页面),“Controller”是提供应用的处理过程控制(一般是一个Servlet),这种设计模型把应用逻辑,处理过程和显示逻辑分
成不同的组件实现,降低了业务逻辑接口和数据接口之间的耦合,同时提高了代码的重用性。其工作过程如图所示。
图3
MVC模型的工作过程
在MVC的应用方面,本系统采用Struts来帮助管理。
Struts是ApacheSoftwareFoundation的一个开放源代码项目,它提供了一个基于模型-视图-控制器(MVC)体系结构的Web应用程序框架。Struts由一组相互协作的组件Servlet、JSP以及Taglib组成。Struts的核心组件有ActionServlet、Action、ActionForm、ActionMapping、ActionForward以及Taglib
和相关配置文件等。
Struts是一个Web框架,主要由视图组件、模型组件和控制器组件构成。视图组件:Struts框架的视图主要由JSP网页构成,此外,Struts框架还提供了Struts客户化标签和ActionFormBean,这些组件提供对国际化、接收用户输入的表单数据、表单
验证和错误处理等的支持,使开发者可以把更多的精力放在实现业务需求上。模型组件:Struts框架并没有为设计和创建模型
CustomerRelationshipManagementSystemBasedonJ2EE
李思聪
陈尚松
俞欢军(浙江大学材料与化学工程学院,浙江杭州310027)
针对客户关系管理系统以“服务客户为中心”的设计思想,提出了基于J2EE的客户关系管理系统的设计方案。重点对
J2EE技术进行了较深入的研究,特别是对一些Web2.0时代新的互联网交互技术和显示架构,如ajax、extjs、struts、hiber-nate等,进行了深入的探讨和应用实践,提出了客户关系管理系统设计原型和技术实现方法。
关键词:客户关系管理系统,J2EE,ajax,extjs,struts,hibernate
Abstract
AccordingtothethoughtofCustomerRelationshipManagement,whichis″tobecustomers-centered″,thedesignoftheCustomerRelationshipManagementbasedonJ2EEispresented.ByfocusingonJ2EEtechnologyforamorein-depthstudy,particularlyonseveralnewInternettechnologiesanddisplayingstructuresinWeb2.0suchas,ajax,extjs,struts,hiber-nate,thispapermakeain-depthstudyandapplicationofpractice,andfinallyaprototypeofCustomerRelationshipManage-mentsystemhasbeengiven.
Keywords:customerrelationshipmanagement,
J2EE,ajax,extjs,struts,hibernate
基于J2EE的客户关系管理系统的设计与实现
63
基于J2EE的客户关系管理系统的设计与实现
组件提供现成的框架。不过,Struts允许使用其他模型框架来处理应用的业务领域,如EJB(EnterpriseJavaBean)和JDO(JavaDataObject),以及常规的JavaBean和ORM。控制器组件:Struts控制器组件负责接收用户请求、更新模型,以及选择合适的视图组件返回给用户。控制器组件有助于将模型层和视图层分离,有了这种分离,就可以在同一个模型的基础上得心应手地开发多种类型的视图。
2.2数据层的设计
系统与数据库之间的交互,使用hibernate来实现。
Hibernate是ORM(ObjectRelationalMapping,面向对像数据管理)中的先驱和实际领导者。它是在业务层和数据库层之间增加一层,使业务层与具体数据库分开,业务层只要针对hi-bernate进行开发,由hibernate完成相应的事务管理、数据库连接等操作,完成数据和对象的持久化。它还能针对不同的数据库形成不同的实际sql语句,
降低系统在数据库之间迁移的成本。
应用hibernate所要做的工作有:配置hibernate数据源和采用的方言(即具体的数据库种类),生成表——
—对象的映射,有两种方法:①先设计好数据库表,根据表结构生成相应的映射文件和数据类。这是系统设计最通常的做法。②先完成数据类文件,再根据数据类生成相应的映射文件和数据库表。
2.3客户端的设计
客户端要求IE6.0以上,采用extjs+DWR技术,客户端表现比较丰富,有大量的javascript代码,其中很多是extjs控件和DWR自动生成的代码,底层采用了ajax技术和reversea-jax技术维持浏览器与服务器的动态实时交互。
3系统实现
3.1StrutsMVC在本系统中的实现
以下以登陆页面为例说明strutsMVC的实现。
应用Struts,首先在web.xml中配置servlet,命名为ac-tion,并配置servlet-mapping令.do结尾的请求都转向actionservlet。Servlet的类为org.apache.struts.action.ActionServlet,本配置下的css.myServlet继承了这个类,目的是覆盖其pro-cess方法实现对汉字的支持。加入struts支持后的web.xml文件如下所示。
<servlet>
<servlet-name>action</servlet-name>
<servlet-class>css.myServlet</servlet-class>
<init-param>
<param-name>config</param-name>
<param-value>/WEB-INF/struts-config.xml</param-val-ue>
</init-param>
<init-param>
<param-name>debug</param-name>
<param-value>3</param-value>
</init-param>
<init-param>
<param-name>detail</param-name>
<param-value>3</param-value>
</init-param>
<load-on-startup>0</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>action</servlet-name>
<url-pattern>觹.do</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
然后是创建struts-config.xml配置文件,其中包含了ac-tionServlet用来处理对应用请求的详细信息,即页面流转的控制流程。MyEclipse的插件支持可视化的设计,这使jsp页面的结构和流程变得非常清晰,使我们可以创建和改变actionMap-ping和路径的关联而不用重新编译Java类。
下一步是根据以上配置分别创建Action类、Form类和相关的jsp页面。
Form类是一个JavaBean,它继承于org.apache.struts.Actio
nForm类。浏览器提交表单的时候,StrutsServlet将把这个表单的各个字段封装到这个form中,作为参数传递给action类。Form还包含一个validate方法,用于验证用户输入的合法性。Form类的每个被封装的属性都要实现其setter和getter方法。
上文提到ActionServlet将form作为参数传递给action。Action类继承于org.apache.struts.Action,并覆盖其execute方法,方法体是我们的控制代码。Execute方法的定义和主要逻辑如下所示。
publicActionForwardexecute(ActionMappingmapping,Ac-tionFormform,
HttpServletRequestrequest,HttpServletRe-sponseresponse)邀
try邀
if(form==null)returnmapping.findForward(″failed″);
LoginFormloginForm=(LoginForm)form;
LoginDAOloginDAO=(LoginDAO)DAOFactory.getInstance().getDAO(newLoginDAO());
LoginHeadlh=newLoginHead();
if(loginDAO.Login(loginForm,lh))returnmapping.findForward(loginForm.getUsertype());
elsereturnmapping.findForward(″failed″);
妖catch(Exceptione)邀
e.printStackTrace();returnmapping.findForward(″failed″);
最后是创建相关的5个jsp页面。与普通jsp页面不同的是,struts为我们提供了很多方便的标签,它们与html标签一样使用但功能更为强大。
以上比较完整地描述了本系统在struts框架下的运行流程。其它模块都是基于这样的框架运行。
3.2Hibernate的应用
Hibernate相对独立,其配置主要有两类:hibernate.cfg.xml和Client.hbm.xml。这里只介绍Client.hbm.xml,具体如下:<hibernate-mapping>
<classname=″com.zdzn.crm.db.tables.Client″table=″CLIENT″schema=″CRM″>
<idname=″clientId″type=″java.lang.String″>
<columnname=″CLIENT_ID″length=″50″/>
<generatorclass=″uuid″></generator>
</id>
<many-to-onename=″addressbook″class=″com.zdzn.crm.db.tables.Addressbook″fetch=″select″>
<columnname=″CLIENT_CONTACT″length=″10″not-null=″true″/>
</many-to-one>
<propertyname=″clientName″type=″java.lang.String″>
64
《工业控制计算机》2008年21卷第11期
(上接第62页)
1)创建用户表BM_YONGHU;该表中包含用户名、用户口令、用户权限以及用户信息等数据项;
2)创建查询用户信息的存储过程;
3)创建修改用户口令的存储过程。
具体源程序如下所示:
CREATEPROCEDURERPT_CHANGE_PASSWORD(@UserNameVARCHAR(8),@PasswordVARCHAR(10),@intResultintoutput)
AS
BEGINTRANSACTIONUpdatePassword
BEGIN
UPDATEBM_YONGHU
SETyonghukouling=@Password
WHEREdengluming=@UserName
END
IF@@ROWCOUNT<>1
BEGIN
SELECT@intResult=-1
ROLLBACKTRANSACTIONUpdatePassword
RETURN-1
END
ELSE
BEGIN
SELECT@intResult=0
COMMITTRANSACTIONUpdatePassword
END
GO
SETQUOTED_IDENTIFIEROFF
GO
SETANSI_NULLSON
GO
4结束语
本文论述的电力报表系统充分考虑了用户的实际需求,采用先进的.NET框架技术,使用了先进的开发工具,系统具有容错性强、用户操作便捷、执行速度快、安全性高等优点。系统的应用提高了企事业整体的办公效率、节省了办公经费、加强了部门员工间的协作。
参考文献
[1]陈黎卿,郑泉.基于ASP.NET的汽车维修OA系统的开发研究[J].工业控制计算机,2007,20(8):59-60
[2]于晓波,江志俊,巩慧涛.基于工作流技术的电力系统MIS设计[J].电力系统通信,2007,28(176):56-60
[3]叶核亚,陈瑞.电力调度管理信息系统的设计与实现[J].南京工程学院学报(自然科学版),2004(1):14-21
[4]钟建伟,李清政.电力调度管理信息系统的安全机制研究[J].武汉科技学院学报,2005,18(11):96-99
[收稿日期:2008.7.7]
<columnname=″CLIENT_NAME″length=″10″not-null=″true″/>
</property>
<setname=″sales″inverse=″true″>
<key>
<columnname=″CLIENT_ID″length=″10″not-null=″true″/>
</key>
<one-to-manyclass=″com.zdzn.crm.db.tables.Sale″/>
</set>
</class>
</hibernate-mapping>
其中指明了表、字段与Java类名、变量的对应关系,包括数据库的一对多(one-to-many)、多对一(many-to-one)、主键(id)、外键等关系都有所反映。
这里值得注意的是“<generatorclass=″uuid″></genera-
tor>”这一行,指定了ID的生成方式为uuid。Uuid是根据时间和一个随机数生成的32位字符串,具有唯一性,用它作为表的唯一主键,可以确保产生的ID在系统内所有表中不重复。3.3系统页面实现
系统页面采用DWR将Java代码取得的数据转变成JavaScript格式,再用extjs把它显示出来。DWR和Javascript的结合点在于同一个JSP页面中同时包含DWR和JavaScript的js库,再用一段js代码进行变量的传递,即完成两者的结合(代码略)。Extjs默认提供了功能丰富的客户端控件,使得系统页面美观又易用。用户成功登录后的主页面如图4所示。asp文件管理系统
4结束语
J2EE为企业级信息系统提供了全面的强大的开发框架和标准,基于Java实现。因为J2EE是开源的,及Java本身的跨平台特性,许多新的技术和框架层出不穷。因为B/S结构的优越性,很多新的信息管理系统都是基于B/S结构发展,而随着Web2.0时代的到来,hibernate、struts、ajax等各方面的应用如雨后春笋般涌现。本文通过深入探讨这些技术的工作原理,成功把它们应用到客户关系管理系统上,使该系统达到了“以客户为中心,增强客户体验,
方便与其它系统交互与集成”的目标,并具有数据统计与分析、为企业提供决策支持的功能。
参考文献
[1]AlexBerson,StephenSmith,KurtThearling.构建面向CRM的数据挖掘应用[M].贺奇,郑岩,魏藜等,译.北京:人民邮电出版社,2001
[2]陈华军.J2EE构建企业级应用解决方案[M].人民邮电出版社,2002[3]王霓虹,金兴.Ajax技术及其DWR框架实现[J].自动化技术与应用,2007,26(12)
[4]王开雷,耿玉水,王新刚.Hibernate在Struts中的研究与应用[J].山东轻工业学院学报,2007,21(4)
[收稿日期:2008.8.6
图4基本信息管理页面
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
65

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。