基于轻量级SSH架构的煤炭行业CRM系统开发
2015-01-25刘建芳何伟娜
刘建芳,何伟娜
(平顶山学院 河南 平顶山 467000)
我国煤炭行业的信息化程度普遍偏低,大多数煤矿仍处于人工统计汇总的阶段,加上机构不断地调整,职能不断地变换、工作人员不能相对稳定,企业的统计不全或断档,致使统计汇总口径不一、数据不全、信息滞后、信息收集效率不高、统计过程中人为失误较多等弊病[1-2]。这些现状已不能适应信息化的发展趋势,已经制约了煤炭企业乃至整个煤炭行业的生存与发展,加强煤炭行业信息化建设已经成为了我国煤炭行业提升管理水平的迫切需要。
CRM(Customer Relationship Management)系统是以客户为中心,基于客户生命周期的全过程,采用协同技术和理念,帮助企业更好的获取客户、保留客户及提升客户价值、提高客户满意度和忠诚度,从而全面提升企业竞争能力和盈利能力[3-4]。CRM是选择和管理有价值客户及其关系的一种商业策略,CRM要求以客户为中心的企业文化来支持有效的市场营销、销售与服务流程[5]。
1 轻量级SSH框架
轻量级SSH框架系统从职责上分为四层:表示层、业务逻辑层、数据持久层和域模块层,以帮助开发人员在短期内搭建结构清晰、可复用性好、维护方便的Web应用程序[6]。其中使用Struts作为系统的整体基础架构,负责MVC的分离,在Struts框架的模型部分,控制业务跳转,利用Hibernate框架对持久层提供支持,Spring做管理,管理struts和hibernate[7-8]。具体做法是:用面向对象的分析方法根据需求提出一些模型,将这些模型实现为基本的Java对象,然后编写基本的DAO(Data Access Objects)接口,并给出Hibernate的DAO实现,采用Hibernate架构实现的DAO类来实现Java类与数据库之间的转换和访问,最后由Spring做管理,管理struts和hibernate。
系统的基本业务流程是:在表示层中,首先通过JSP页面实现交互界面,负责接收请求 (Request)和传送响应(Response), 然后 Struts根据配置文件 (struts-config.xml)将ActionServlet接收到的Request委派给相应的Action处理。在业务层中,管理服务组件的Spring IoC容器负责向Action提供业务模型 (Model)组件和该组件的协作对象数据处理(DAO)组件完成业务逻辑,并提供事务处理、缓冲池等容器组件以提升系统性能和保证数据的完整性。而在持久层中,则依赖于Hibernate的对象化映射和数据库交互,处理DAO组件请求的数据,并返回处理结果[9]。
采用SSH开发模型,不仅实现了视图、控制器与模型的彻底分离,而且还实现了业务逻辑层与持久层的分离[10]。这样无论前端如何变化,模型层只需很少的改动,并且数据库的变化也不会对前端有所影响,大大提高了系统的可复用性。而且由于不同层之间耦合度小,有利于团队成员并行工作,大大提高了开发效率。
2 功能需求分析
功能需求即是完成系统所需要实现的功能,指定系统必须提供的服务。通过需求分析应该划分出系统必须完成的所有功能。
数据流程图(DFD,Data Flow Diagram)是一种图形化的系统模型,它在一张图中展示系统的主要需求,即:输入、输出、过程和数据存储。它描述了数据流动、存储、处理的逻辑关系。DFD与程序流程图不同,DFD不表示程序的控制结构,只描述数据的流动。DFD分成多层表示,从而逐步展开数据流和功能细节。
通过对客户关系管理系统的分析,CRM的用户分为4个外部实体,它们分别是系统管理员、销售主管、客户经理和高管。由于他们在系统中扮演的角色不同,对本系统的操作权限也各不相同。比如,客户经理可以操作与客户信息有关的功能,销售主管和销售人员可以操作与销售有关的功能,系统管理员可以操作数据字典和权限设置,而高管可以查看销售统计分析数据。对“客户关系管理系统处理”进一步分解,可以得到五个子过程,分别为营销管理、客户管理、服务管理、统计管理和基础数据管理 。
由于煤炭行业CRM系统的5个过程仍然可以分解,但由于基本过程太过复杂,所以可以将每个过程进行单独的分解,下面以客户管理为例展开分析。
经过和用户的交谈,了解到涉及到客户管理过程的外部实体有两个,分别是客户经理和销售主管。客户经理录入客户基本信息,存储到数据库中的客户基本信息表中。在访问客户后,将客户交往记录保存到数据库中的客户交往记录表中,客户经理可以随时查看客户交往记录,客户历史订单和订单明细,其中历史订单保存在数据库中的订单表中,订单详情保存在订单详情表中。客户经理查看流失预警记录,该记录保存在数据库中的客户流失记录表中,当发现某个客户有六个月的时间没有下订单,就要对该预警作出处理,暂缓客户流失,如果客户仍不下订单,则将该客户移到客户流失记录表中。具体客户管理流程如图1所示。
图1 客户管理数据流图Fig.1 Customer management DFD
3 总体设计
根据对基于煤炭行业的客户关系管理系统(CRM)的理解与功能的分析,设计出其功能大概如下:
销售机会的编辑,指派,删除,查询;制定开发计划,执行计划,确定该销售机会是开发成功还是开发失败;订单信息的查询,增加,删除;客户信息的编辑,删除,查询;客户流失信息的新建,暂缓流失,确认流失;服务的新建,服务的分配,服务的处理,服务的反馈和服务的归档;数据字典中基本信息的增加,删除,查询,修改;煤炭行业产品信息和库存信息的查询;用户信息的添加、修改、删除。角色的添加、编辑和权限分配;客户贡献、客户构成、客户服务和客户流失情况的分析。
由以上信息可以画出系统的功能结构图,如图所示2所示。
图2 系统功能结构图Fig.2 System function structure chart
4 系统详细设计与实现
下面以总体设计为指导,利用系统的整体设计思想对系统进行详细的设计,并应用相关技术实现系统,主要以客户管理模块和统计分析模块为例展开。
煤炭行业CRM系统是采用SSH框架来实现的。其中Struts作为系统的整体框架,负责MVC的分离。负责用户提交数据的处理以及数据处理完成之后在页面之间的跳转,Hibernate框架对持久层提供支持。Spring整合Struts和Hibernate来实现对象的动态注入和事务操作,降低系统组件之间的耦合度。另外本系统还采用Spring来实现记录系统运行的日志信息。在前台页面采用了jQuery脚本库和dwr控件,使客户端的显示更加丰富,与服务器的交互更加灵活,实现数据查询与显示的自动化。
4.1 客户管理模块
通过客户管理数据流程图对客户管理模块工作流程的分析,以客户经理处理客户流失预警为例,客户经理查看客户流失预警信息,系统会将客户中在六个月时间没有下订单的列入到客户流失预警列表中,这时候,客户经理就得针对这些客户进行处理,尽最大可能将客户从流失预警状态转变为正常客户状态。当客户经理采取一系列措施进行挽救,仍没法让客户下订单,那么就表示公司已经失去这个客户。这时候,就将该客户移动到客户流失表中。
在具体实现时客户管理包括客户信息管理和客户流失管理。客户信息管理包括客户基本信息的增删改查,客户联系人、客户历史交往记录和历史订单查看等;客户流失管理包括暂缓客户流失和客户流失处理等功能。以客户流失管理为例。点击主页面上客户关系管理的子项客户流失管理,系统会调用 CustomerAction中的 toLostList()方法,跳转到 lost.jsp页面,如图3所示。
图3 客户流失管理界面Fig.3 Customer churn management interface
点击图4中的暂缓流失按钮,系统会跳转到relay.jsp页面,在该页面中需要填写暂缓流失措施,填写完毕后点击保存,系统会调用 CustomerAction中的 doLostList()方法,在该方法中会对客户状态进行相应设置并调用接口ICommonBiz中的Update()方法,对客户基本信息表进行更新。当点击“确定流失按钮”时,系统会跳转到confirm.jsp页面,在该页面中需要填写确定客户流失原因,填写完毕后点击保存,系统会调用CustomerAction中的doLostList()方法,在该方法中会对客户状态进行相应设置并调用接口ICommonBiz中的Update()方法,对客户基本信息表和客户流失表进行更新。
4.2 统计分析模块
可视化的统计与分析,将对公司高层领导作出正确决策作出巨大奉献和支持。该模块通过客户的贡献、构成、服务和流失对该公司进行整体测评,通过图形的方式直观的反映出公司在过去一段时间的得失,并为下一阶段公司的走向作出正确决断。通过统计分析数据流程图对客户管理模块工作流程的分析,统计分析是对以前的销售产品数据、客户构成、服务满意度以及客户流失进行图表展示,使结果看起来更直观、更生动。当用户查看某一个分析图时,系统会自动在后台进行统计、分析和计算,最终画出图表展示给用户。
下面以客户构成分析为例,进行具体实现步骤讲解:点击主页面上统计报表的子项——客户构成分析,系统会调用CustomerAction 中的 toComponentList()方法,在该方法中,会调用IcustomBiz接口中的customerComponent()方法,该方法从数据库中的Customer表中按照客户构成类型进行查询。查询完毕后,前台控制器会将请求发送到component.jsp页面,由component.jsp进行结果显示。显示结果如图4所示。
图4 客户构成统计Fig.4 Customer composition statistics
5 结束语
系统设计在技术上使用SSH框架,降低了系统功能模块的耦合性,增强了系统的健壮性,使后期系统的扩展和维护更加容易。在前台页面大量使用DWR和jQuery技术,降低了浏览器和服务器之间交互的信息量,改善了用户体验。
[1]刘伟.神华集团煤炭运销管理系统的设计与实现[D].山东:山东大学,2013.
[2]王立平,刘艳玲,赵文玲.数据挖掘技术在煤炭企业CRM构建中的应用研究[J].煤炭技术,2013(11):250-251.WANG Li-ping,LIU Yan-ling,ZHAO Wen-ling.Application of data mining technology in CRM to build coal enterprises study[J].Journal of Coal Technology,2013(11):250-251.
[3]杨永恒,王永贵,钟旭东.客户关系管理的内涵、驱动因素及成长维度[J].南开管理评论,2002(2):48-52.YANG Yong-heng,WANG Yong-gui,ZHONG Xu-dong.The connotation of customer relationship management (CRM),driving factors and growth dimension[J].Nankai Management Review,2002(2):48-52.
[4]齐佳音,李怀祖.客户关系管理(CRM)的体系框架分析[J].工业工程,2002(1):44-47.QI Jia-yin,LI Huai-zu.Customer relationship management(CRM)system framework analysis[J].Journal of Industrial Engineering,2002(1):44-47.
[5]陈旭.CRM综述[J].计算机应用研究,2001(8):11-13.CHEN Xu.CRM review[J].Computer Application Research,2001(8):11-13.
[6]李建迎.基于Struts的工矿企业客户关系管理系统设计[J].工矿自动化,2013(10):13-16.LI Jian-ying.Industrial and mining enterprises customer relationship management system based on Struts design[J].Industrial Automation,2013(10):13-16.
[7]刘军.基于SSH框架的煤炭运销管理系统的设计与实现[D].北京:中国地质大学,2013.
[8]李刚.轻量级Java EE企业应用实战:Struts+Spring3+HIbernate整合开发[M].北京:电子工业出版社,2011.
[9]王海涛,贾宗璞.基于Struts和Hibernate的Web应用开发[J].计算机工程,2011(9):118-120.WANG Hai-tao,JIA Zong-pu.Based on struts and hibernate web application development[J].Computer Engineering,2011(9):118-120.
[10]胡凌云.基于SSH框架的销售管理系统的设计与实现[D].大连:大连理工大学,2013.