CRM的发展背景.doc_第1页
CRM的发展背景.doc_第2页
CRM的发展背景.doc_第3页
CRM的发展背景.doc_第4页
CRM的发展背景.doc_第5页
已阅读5页,还剩25页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第一章 CRM的发展背景摘要:在论文中我将介绍我们所采用的支撑J2EE的几种核心技术;JDBC, JNDI, EJBs, RMI, JSP, Java servlets, XML, JMS, Java IDL, JTS, JTA, JavaMail和JAF,同时还.关键词:论文类别:论文报告来源:牛档搜索(Niudown.COM)本文系牛档搜索(Niudown.COM)根据用户的指令自动搜索的结果,文中内涉及到的资料均来自互联网,用于学习交流经验,作品其著作权归原作者所有。不代表牛档搜索(Niudown.COM)赞成本文的内容或立场,牛档搜索(Niudown.COM)不对其付相应的法律责任!第1章CRM概述1.1 CRM的发展背景事实上,在国外,对企业的电子化运营解决方案的探索,伴随着企业信息化进程己经有十几年的发展历史。20世纪80年代中期,许多企业为了降低成本、提高效率、增强竞争力,纷纷重新设计业务流程,从这个时期开始,信息技术和IT产业开始进入飞速发展的阶段。MRPM RP等信息系统的实施大大提高了企业内部业务流程的自动化程度,企业效率得到明显改善。而随着日益激烈的市场竞争,企业所处的市场环境从卖方市场过渡到买方市场,赢得客户长久的信任和支持对于企业的重要性空前提高,一些可以帮助企业从各个方面进行客户管理的技术和管理方案相继出现,如自动销售系统和计算机电话集成技术等都被广泛地采用,前者可以帮助企业管理销售定额、计算销售人员的提成、协调销售人员的活动、预测利润;后者则可以为客户提供800等电话服务,通过自助选择和交互式语音反馈,让用户可以与专业服务人员通话来寻求服务和咨询,同时能记录交谈数据等。再后来如市场营销管理、订单管理、电话销售管理、客户支持管理等各种独立的方案和功能模块不断出现,企业开始依托自身的信息管理系统和资源规划,结合Internet平台和电话等手段接受用户订单和服务请求,进行前端销售管理,创建与相关业务的管理接口等。在电子商务全面升温的时代,许多拥有庞大、复杂的客户群体的行业如银行、保险、证券、房地产、电信、家电、民航、运输、医疗保健、IT企业对整体性的电子化运营解决方案的需求越来越迫切。因此,一种包括了企业判断、选择、争取、发展和保持客户所要实施的全部商业过程,整合了“以客户为中心”的各种可有效地提高企业运营效率的功能模块,从理念到技术、从产品设计到应用,都被证明可以提升企业运营质量的全面电子化方案-客户关系管理(Customer Relationship Management, CRM)发展起来了。1.2 CRM的含义从本质上讲,客户关系管理(CRM)在解答企业如何达成全面的自动化、电子化运营,以及如何实现“以客户为中心”的经营模式两大问题上为现代企业提供了解决的方案和目标。客户关系管理,是企业为提高核心竞争力,达到竞争致胜、快速成长的目的,树立以客户为中心的发展战略,并在此基础上开展的包括判断、选择、争取、发展和保持客户所需实施的全部商业过程。客户关系管理,是企业以客户关系为重点,通过开展系统化的客户研究,通过优化企业组织体系和业务流程,提高客户满意度和忠诚度,提高企业效率和利润水平的工作实践。客户关系管理,也是企业不断改进与客户关系相关的全部业务流程,最终实现电子化、自动化运营目标的过程中,所创造并使用的先进的信息技术、软硬件和优化的管理方法、解决方案的总和。对CRM定义分层内涵中的系统架构、应用体系和方法等,本文将在以后的章节中进行深入的研究的探讨。1.3 CRM系统软件的主要用途客户关系管理系统软件的主要用途有三点。第一点是为企业及用户提供多种渠道进行互动式交流,包括电子邮件、聊天室及电话业务。第二点是帮助各家公司收集用户的资料信息。第三点是帮助公司整理那些储存在没有进行连接或是剩余的数据库中的信息。第2章CRM基础2.1 CRM系统模块的划分应用CRM系统的目标是支持和推动优化过的销售、营销和客户服务流程,这意味着软件的选择应该建立在现有的IT技术和业务要求的基础之上。主流的软件一般提供下列功能,市场管理(Marketing)、销售管理(Sales),服务管理(Service),呼叫中心(Call Center)、电子商务(E -Business)五部分组成。2.1.1 市场管理我们所做的CRM的市场管理模块,为客户提供易于使用的界面与工具,使操作人员能够比较彻底的分析市场、客户,策划和跟踪市场策略,分析竞争对手的市场策略等等,以便更加有效的拓展市场。在这个模块中,通过客户资料中的诸如地域、消费层次,消费习惯与方式、潜在需求、忠诚度、已购买产品列表等等有价值的信息来从不同的角度彻底的进行市场的策略分析,同时还可以评估和跟踪目前己经进行或者正在进行的营销策略,以及通过对自己和竞争对手的数据进行详细的分析,策划更加有效的销售策略。2.1.2 销售管理我们所做的销售管理模块,管理用户信息、商业机会以及销售渠道等等各方面的内容,从而能够使销售人员可以不受地域限制及时掌握资源以及企业的最新的价格信息,并可以向客户提供最新的和最感兴趣的商品列表以及价格信息。本模块包括机会、账户、合同等的管理,销售队伍组成、销售队伍成员以及资源重新调配的管理,有效跟踪销售业绩,同时提供个体的销售方式与过程参考,灵活进行产品配置、报价、打折、生成销售订单等。另外,本模块还应该和电子商务模块整合,以便达到多方位、多层次的销售,同时减少销售成本。2.1.3 服务管理本模块通过动态建立知识库,使客户服务代表能够有效的提高服务质量,增加客户的满意程度,并且捕捉和跟踪服务中出现的商业机会、产品质量信息、客户需求等等,并能够适时的向客户建议其他的产品和服务。2.1.4 呼叫中心呼叫中心是实施CRM应用系统的重要的组成部分,他实际上是将销售模块和服务模块进行了一个高度的集成,使一般的业务代表就可以进行实时的销售和服务。它通过管理账户、合同等等信息,并通过知识库的支持,就可以最大程度的满足客户的多方面的需求。呼叫中心提供当今最全面的计算机电话集成技术(CTI),通过对己拨号码识别服务(DMS),自动号吗识别(ANI),交互式语音应答系统(IVR)得全面支持,通过采用系统预制的计算机电话集成技术,可以在用户拨叫的过程中业务代表己经可以获得客户的资料,就灵活的进行业务处理。2.1.5 电子商务电子商务模块是以上所有模块的一个逻辑集成,它提供了一个个性化、人性化、高度集成以及易于使用的用户界面,在这个用户界面上客户可以进行几乎所有的需求,诸如购买、付款、寻求服务支持、查询产品与服务目录、查询订单状态等等,甚至可以与呼叫中心联系在一起,最大程度的满足客户需求。由于我们采用J2EE架构平台的开发方式,所以可以很容易的将我们在市场管理、销售管理、服务管理以及呼叫中心模块的内容集成到电子商务模块中,同时呼叫中心的大部分功能也可以并且也应该使用销售管理、服务管理模块中开发的组件。因此,我们在开发过程中,充分利用了J2EE平台的优点,组件的高度可重用性,减少开发的成本,加快开发的进度,并同时可以控制开发的质量。在实际的开发中,对于EJB、Servlet的质量要求非常严格,所以我们项目负责人、系统分析员都力争把握好质量。2.1.6 CRM应用系统模块的内在关系我们深刻的理解到,在开发CRM应用系统的数据结构时一定要以客户信息为核心,一方面是为企业提供一个良好的易于操作的用户界面,另一方面是提高开发的可控性,减少开发成本与风险。以客户信息为核心,所有的模块的内容都是围绕客户,这样也使得应用系统的可拓展性大为提高,维护性加强。对于开发人员,所有的功能内容对于我们来说都是一种“插件”,各个模块功能之间的祸合性大为降低,这样一来就会使整个的开发过程更加易于控制。在各个模块的具体开发实施中,销售模块是基础,该模块负责管理账户、销售机会等信息,并且经过销售人员的销售活动的信息保持,对于客户的信息(如需求、购买行为等)的补充,就可以实时的给与市场人员以信息支持,从而随时把握销售策略,便于及时调整。从某种意义上讲,应该说销售管理、服务管理、呼叫中心以及电子商务这四个模块都是作为市场模块的信息支持,同时反过来,市场管理策略也给与其余企业活动以策略支持。要实现这一点,就必须在数据结构的设计上以客户信息为核心数据。CRM应用系统各个模块之间的关系在企业业务上关系非常紧密,但是作为一个非常庞大和复杂的系统,我们不能按照一般传统的软件工程观念,在各个模块之间通过接口通信,这样会带来应用系统在开发、扩充以及维护方面等很多的问题。正确合理的方案是将客户视做一个对象,将客户资源作为操作的核心。2.2 CRM类型以及各自的特征2.2.1 流程型CRM流程型CRM 客户关系管理(CRM)在初期是偏重流程的,我们可以称之为流程型CRM。所谓流程型CRM,是指对市场、销售、服务等方面,也是企业的前端管理的业务流程进行重新规划和调整,以最佳的工作方法来获得最好的效果。无论是销售自动化(SFA)也好,还是利用呼叫中心的交互式客户关怀(Interactive Customer Care)也好,都比较注重流程的管理,例如销售过程的管理、代理的管理、员工的管理、服务请求的回复管理等等。在CRM从无到有的过程中,流程型的软件产品对整个产业起到了非常重要的作用。通过系统应用,所主要解决的是围绕客户信息进行的各个部门的协同工作,其中最重要的解决了以下的问题:l 如何收集客户信息?l 谁来收集客户信息?l 收集什么样的客户信息?l 与某个客户相关的所有信息是否是整合的?l 每一个与客户打交道的人员是否都了解公司其他人与客户的联络?l 公司前端管理的每个部门是否都建立起“以客户为中心”的理念?l 对不同的客户是否能够提供不同的服务?2.2.2 分析功能的CRM分析功能的CRM流程对于多数已经和正在考虑应用CRM的企业来说,这是不可或缺的步骤,通过流程型CRM的应用,在企业上下将CRM的概念和基础数据的采集从无到有地建立了起来。但是,随后的问题是,在大量的客户数据积累起来之后,对数据的分析将成为重担。因此分析功能的CRM正在研究并已经在某些行业提供不同于OLAP (online analytical processing,在线分析方法)的专门工具来进行数据分析。 具有强大分析功能的CRM之主要应用方式1)能够统计大量的客户信息并支持对客户进行多维的特征分析在某些行业中,例如:金融、保险、电信、传媒、零售等行业的客户数据量是庞大的。要对这些客户数据进行分析,要求分析工具必须能够处理大量的客户信息。Turbo CRM与亚信最近联手开发的向中国电信某省数据局提供的CRM解决方案中,客户数据量达到百万级。而且,每个客户的属性描述包括地址、年龄、性别、证件号码、收入、职业、教育程度等多个字段。系统必须能够支持对这样多维的组合性的分析,可以快速给出符合分析条件的客户名单和数量。在分析型CRM中,速度成为重要的衡量指标,在对海量的数据进行分析的时候,速度的要求几乎是第一位的。2)能够处理复杂的数据并支持对客户进行行为分析由于在现代社会中的行业通常己经具备业务系统,对于现有客户的最初的信息来源也是现有的业务系统,因此,更有意义的分析是结合客户信息对某一类客户群的消费行为进行分析。这要求CRM中的分析工具可以从多个数据库中抓取并形成复杂的datacube。在此基础上,我们可以分析某类客户的消费行为,例如:电信行业可以分析经常打漫游电话的人群具备什么样的客户特征;年龄在30岁左右,月收入在5000以上的女性是否是长途电话消费主体,她们的通话习惯时段是从几点到几点;是否周末的长途漫游消费有明显不同于周日的特征等等。行为分析是比特征分析更为复杂的分析,因为它涉及到行业知识和分析模型的结合。3)具有自定义的建模方式和参数调整的功能除了特征分析和行为分析,预测正在日益成为强大的分析功能必须提供的应用。在详细了解了消费行为之后,很自然地,我们会想到对数据的参数进行某些调整,例如,价格的变化,如果调整产品的消费费率,对整体收入会带来什么影响?如果企业着力吸引那些能够带来高价值的客户,那么初期的投入应当在什么范围内?客户的消费点临近什么值得时候开始成为“正利润”客户?其生命周期至少要在多长时间以内才具有成为“忠诚客户”的潜力?现有的模型分析很大程度上是为企业的市场研究和分析人员提供,有助于他们能够更理性地制定市场细分策略。4)能够进行融合了人工智能的数据挖掘客户信息的录入和储存方式是数据(data),但是,对于决策者来讲,独立的单个的数据的意义并不大,更重要的是信息(information)和知识(knowledge)。现有的数据挖掘方法已经能够支持进行按照内置逻辑语言进行归纳和演绎。例如,根据模型数据,系统建议以达成最高利润为目标进行的价格优化政策。输入抽样调查到的测试数据,可以根据呼出电话的反馈率、直邮的反馈率、电视广告反馈率、巡展的反馈率等数据确定最佳的市场活动模式,以最低的成本获得最好的市场活动效果。综上所述,对分析的需求可以总结为下表:分析型CRM功能CRM应用和考虑内容多渠道的数据源和整合(Aggregate multi-access of data) 整合现存放在不同数据库中相互关联的原始数据; 能够进行关联性的查询; 对大数据量的查询速度要求较高,因此必须进行移动和联接大量数据和实时处理数据的速度之间的平衡2.对历史数据进行分析(Multi-dimensional analysis of historical data) 从历史数据中选择不同的角度考察消费行为; 评估客户价值,细分客户群; 利用数据验证行业经验; 针对不同的客户群发掘消费特点; 定期地将原始数据抓取到与运营系统分离的数据仓库中并完成分析图表,可以有效地降低等待时间; 平衡分析的灵活自定义和分析结果的反馈速度3.收益/客户消费预测(Predictive revenue/consumer forecast) 建立数据模型,对不同的客户群预测消费量; 调整重要参数,估计对收益或利润的影响; 对市场活动的效果进行预测; 从不同的纬度进行知识发现4.优化方法(Optimization method) 利用数据模型进行优化,适合确立价格策略; 通过设置商业规则,进行复杂的市场划分; 平衡市场活动的费用和效益; 采用AI(人工智能)方法验证行业经验表2-1 分析型CRM总结 分析型CRM的工作过程分析型CRM的应用是在成熟的分析工具的基础上,结合每个行业的特点进行的。1)理解业务最初的阶段,着眼于了解业务特点,并把它还原成为数据分析的条件和参数。例如:在零售行业中,我们的第一个步骤是了解客户购买的频率,购买频率和每次消费金额之间是否有明显的相关关系,什么样的客户喜欢购买什么的产品,调整价格对他们的购买行为有什么样的影响,这些行为对企业的效益的影响是正面的还是相反的。2)分析数据这个阶段着眼于对现有的数据进行规整。我们发现,在不少行业中,可分析的数据和前面提出的分析目标是不匹配的。例如:消费者的月收入水平可能与许多购买行为相关,但是,原始的数据积累中却不一定具备这些数据。对这一问题的解决方法是从其它的相关数据中进行推理,例如,通过抽样调查,我们发现,一次性购买大量卫生纸的客户,其月收入水平集中在1000-3000RMB的档次,如果这一结论基本成立,我们可以从消费习惯中推理出现有客户有多大的百分比是月收入水平在这个档次中的;另外,可以根据抽样调查的方法,在问卷调查的基础上推理整个样本人群的收入水平曲线。3)数据准备这个阶段的着眼点是转换、清理和导入数据,可能从多个数据源抽取并加以组合,以形成datacube。对于缺失的少量数据,是用均值补齐,还是忽略,还是按照现有样本分配,这是在这个阶段需要处理的问题之一。4)建模现在已经有各种各样的模型方法可以利用。让最好的一种应用于我们要着眼的主要问题中,是这个阶段的主要任务。例如,对于利润的预测是否应当采用回归方式预测,预测的基础是什么?这些问题需要行业专家和数据分析专家协商并达成共识。5)评估己经建成的模型是否可以有效地完成工作?很好的一个评估方法是利用不同的时间段,让系统对己经发生的消费情况进行预测,然后比较预测结果和实际状况,这样模型的评估就容易进行了。6)应用完成了上述的步骤之后,多数的分析工具都支持保存并重复应用已经建立起来的模型。更为重要的是,在这个过程中,对数据分析的方法和知识应当已经由客户方的市场分析人员或决策者所了解,我们提供的,不仅仅是最终结果,而且是获得这一结果的方法。软件提供的不仅仅是最终结果,而且是获得这一结果的方法,这就是不同于单纯的软件提供商的区别所在。最后,在软件架构方面,分析数据库与运营数据库应当是分离的,避免影响运营数据库在操作方面的实时响应速度。 数据仓库和数据挖掘我们着力与研究行业的客户关系管理特点。我们的目标不仅仅是跨越收集客户信息的初期阶段,而且致力于理解客户信息,多角度进行市场细分,充分了解客户消费行为,协助企业预测未来收益,并且将我们在数据中发现的知识形象化地展示出来,为企业的决策者们能够理性地、科学地进行战略决策助力。这就用到了新兴的数据仓库和数据挖掘技术。1)数据仓库(Data WareHouse)数据仓库(Data Warehouse)技术正是随着市场竞争的加剧,企业业务人员和管理者对信息的需求日益增多的情况下,提出的一种全新的理念和技术,它的目标是整合企业内部所有分散的原始的业务数据,并通过便捷有效的数据访问手段,支持企业内部不同部门、不同需求、不同层次的用户随时获得自己所需的信息。数据仓库根据数据存储方式的不同可分为两种模式:ROLAP, MOLAP. MOLAP是利用一个专有的多维数据库来存储OLAP分析所需的数据,数据以多维方式存储,并以多维视图方式显示。ROLAP是利用传统的关系型数据库通过星型或雪花型模型映射出数据间的多维关系实现多维的展现方式。目前由于多维数据库的技术还没有完全成熟,因此在大量的企业级数据仓库项目中90%以上的用户和厂商使用ROLAP建立自己的数据仓库系统。根据数据仓库建设的实践经验和国内电信的数据仓库建设刚刚起步的具体情况,采用统一规划、自底向上,分布实施的方法论。即在数据仓库整体框架规划的基础上针对某一个或一类重要的、急迫的业务需求进行构造。开始的实施立足于眼前的需求和目标,在比较短的时间内完成,之后再逐步扩展数据仓库包含的范围和功能,逐渐发展并建设成企业级的数据仓库系统。2)数据挖掘(Data Mining)数据挖掘是一个利用各种分析工具在海量数据中发现模型和数据间关系的过程,这些模型和关系可以用来做出预测。数据挖掘的第一步是描述数据-计算统计变量(比如平均值、均方差等),再用图表或图片直观的表示出来,进而可以看出一些变量之间的相关性(比如有一些数值经常同时出现)。数据挖掘利用了人工智能(AI)和统计分析的进步所带来的好处。这两门学科都致力于模式发现和预测。数据挖掘不是为了替代传统的统计分析技术。相反,他是统计分析方法学的延伸和扩展。大多数的统计分析技术都基于完善的数学理论和高超的技巧,预测的准确度还是令人满意的,但对使用者的要求很高。而随着计算机计算能力的不断增强,我们有可能利用计算机强大的计算能力只通过相对简单和固定的方法完成同样的功能。一些新兴的技术同样在知识发现领域取得了很好的效果,如神经元网络和决策树,在足够多的数据和计算能力下,他们几乎不用人的关照自动就能完成许多有价值的功能。数据挖掘就是利用了统计和人工智能技术的应用程序,他把这些高深复杂的技术封装起来,使人们不用自己掌握这些技术也能完成同样的功能,并且更专注于自己所要解决的问题。3)数据挖掘和数据仓库的关系大部分情况下,数据挖掘都要先把数据从数据仓库中拿到数据挖掘库或数据集市中。从数据仓库中直接得到进行数据挖掘的数据有许多好处。就如我们后面会讲到的,数据仓库的数据清理和数据挖掘的数据清理差不多,如果数据在导入数据仓库时已经清理过,那很可能在做数据挖掘时就没必要在清理一次了,而且所有的数据不一致的问题都已经被你解决了。数据挖掘库可能是你的数据仓库的一个逻辑上的子集,而不一定非得是物理上单独的数据库。但如果数据仓库的计算资源己经很紧张,那最好还是建立一个单独的数据挖掘库。当然为了数据挖掘也不必非得建立一个数据仓库,数据仓库不是必需的。建立一个巨大的数据仓库,把各个不同来源的数据统一在一起,解决所有的数据冲突问题,然后把所有的数据导入到一个数据仓库内,是一项巨大的工程,可能要用几年的时间花上百万的钱才能完成。只是为了数据挖掘,可以把一个或几个事务数据库导入到一个只读的数据库中,就把它当作数据集市,然后在他上面进行数据挖掘。目前,主要的数据挖掘算法有:分类模式、关联规则、决策树、序列模式、聚类模式分析、神经网络算法等等。在选择数据挖掘算法时,应该根据数据的结构和分析的目的采取不同的算法,有些时候可能采取多种算法相结合的方法来实现分析的目的。第3章CRM系统的技术构架3. 1某零售百货企业CRM系统的技术构架3.1.1两层结构的缺点两层结构对于规模较小、复杂程度较低的管理信息系统比较合适,但在开发和配置复杂的更大规模的企业应用中逐渐显现出不足,比如:1)难以集中控制企业逻辑安装在每一个客户机上,使得对系统的维护、修改非常困难。此时集中管理成为企业管理的强烈要求。比如在配送系统中,当企业逻辑因为市场或管理等各方面原因有所改变之后,软件的运作流程就要做相应的调整,而流程牵扯到各个部门,它们之间的数据祸合方式就要改变,程序的修改将不能统一进行,可能会出现修改不同步,如果软件人员较分散的话,不同步还可能造成企业逻辑的混乱。2)客户端负担大企业逻辑放在客户端,要求客户机具有完成这些计算任务的强大功能,客户机的性能成为制约系统性能的因素,当企业逻辑更加复杂时,只有提高客户机的性能才能满足业务要求。3)安全性差在两层结构中,大部分业务逻辑是在每台客户端,这样企业的核心机密就容易被泄露,而且每台客户机都可以对服务器上的数据进行直接操作,势必产生漏洞。系统庞大之后,就很难保证,系统的稳定性了。3.1.2 三层结构的优点三层结构是在分布式技术成熟之后建立起来的,它的基本思想是将用户界面同企业逻辑分离,把信息系统按功能划分为表示、功能和数据三大块,分别放置在相同或不同的硬件平台上。主要有以下几层:表示层表示层是信息系统的用户接口部分,即人机界面,是用户与系统间交互信息的窗口,主要功能是指导操作人员使用界面,输入数据、输出结果。它并不拥有企业逻辑,或只拥有部分不涉及企业核心机密的应用逻辑。功能层功能层是应用的主体,包括了系统中核心的和易变的企业逻辑(规划、运作方法、管理模式等),它的功能是接收输入,处理后返回结果。数据层数据层即数据库管理系统(DBMS),负责管理对数据库的读写和维护,能够迅速执行大量数据的更新和检索。在三层结构中,表示层和功能层之间的数据交换要尽可能简洁,尽量保证一次业务处理在表示层和功能层之间进行的数据交换少。表示层放在客户端,功能层放在应用服务器上,数据层放在数据库服务器上。由于企业逻辑与用户界面相分离,独立出应用服务器,在很大程度上解决了两层结构所面临的问题。具体说三层结构具有如下的优越性:1)增强了系统的灵活性用户界面的改变同企业逻辑的改变互相隔离,互不影响,便于系统的修改和维护,大大增强了系统的灵活性。这对软件开发者以及用户都是好处。2)增强了系统的安全性系统可以把关键性的企业逻辑放在应用服务器上进行集中管理,而不需要放在每台客户机上。对企业敏感数据的访问也可通过应用服务器来进行,而不是由客户机直接进行存取。这就增强了系统的安全性。比如在该配送系统中,各部门根据各自口令进入各自的应用,不会影响其它部门的工作。3)提高了系统的性能和开发效率客户机可共享应用服务器提供的数据和功能等技术资源,有利于提高系统的性能和开发效率。4)向Web应用等方向的拓展性三层结构实际上也是目前Web应用采用的体系结构,它允许把全部的企业逻辑和业务处理放在应用服务器上,支持纯粹的瘦客户机,因此采用三层结构的系统可以较为方便、自然地向Web应用等方向拓展。5)避免重复投资,降低应用成本三层架构不需要客户端有很强的处理能力,原有的低性能的PC在新系统中仍然能够得到很好的利用,避免了重复投资,降低了应用成本。三层结构中的三层,只是逻辑上的概念。具体实现时,物理结构上的差异可能会很大。三层可以在一台计算机上,也可以在两台、三台,甚至更多的计算机上,只要它们在体系上遵循三层C/S结构即可。系统从一台扩展为两台、三台甚至更多计算机时,对应用没有任何修改。3.2 基于J2EE技术的三层构架3.2.1 三层构架的一般介绍,我们为什么要采用J2EE基于客户对于CRM应用系统的实际需求以及考虑到系统的未来拓展性、可维护性,CRM应用系统各个模块中除了呼叫中心可以做成客户/服务器(C/S)体系模式之外,其他模块都应该做成瘦客户端(浏览器)/S服务器(B/S)模式。我们开发小组经过了反复的论证并且通过与别的技术方式比较,最终决定采用在J2EE平台上开发CRM应用系统的技术方案。一方面是因为作为一种比较成熟的技术规范,相对于微软的.NET来说,它的开发要更加安全、成本更低,我们有开发中药通电子商务网站的实践,对于J2 EE的开发有一定的基础。因此,比较了几种开发平台之后,我们决定采用J2EE。在这种开发平台上,我们将业务逻辑抽象出来,写成组件,然后将其发布到服务器上,再通过前台程序的开发程序员开发前台界面,调用后台的商务逻辑。J2EE是一种功能完备、稳定可靠、安全快速的企业级计算平台,它由多种基于JAVA的技术组成:EJB,JSP,SERVLETS,JNDI,JTA,JDBC等。J2EE具有以下优点: 平台无关性。用户不用将自己捆绑在某一种硬件或操作系统上,可以根据自身的情况选择合适的硬件、操作系统、数据库。 J2EE是一种组件技术,已完成的组件能被方便地移植到任何其它地方。 J2EE作为中间件,提供了强大的功能,使开发人员只需要关注商业逻辑,因而能加快开发速度,提高系统的运行效率和稳定性。 保护用户投资。当用户更换平台时,由于基于M E的系统能方便地移植到其它平台上,而无须重新开发,因此能有效地保护用户的投资。 广泛的支持。M E技术规范得到了从国际性大公司到自由软件开发者的广泛支持,SUN, IBM, ORACLE, NETSCAPE, BEA等纷纷推出基于J2EE的软件产品。在网上可购买或免费下载各种标准组件。3.2.2 CRM应用系统各模块的技术要求CRM应用系统主要由市场管理(Marketing),销售管理(Sales)、服务管理(Service)、呼叫中心(Call Center)、电子商务(Business)五部分组成。由于我们采用J2 EE架构平台的开发方式,所以可以很容易的将我们在市场管理、销售管理、服务管理以及呼叫中心模块的内容集成到电子商务模块中,同时呼叫中心的大部分功能也可以并且也应该使用销售管理、服务管理模块中开发的组件。因此,我们在开发过程中,要充分利用J2EE平台的优点,组件的高度可重用性,减少开发的成本,加快开发的进度,并同时可以控制开发的质量。在实际的开发中,对于EJB、Servlet的质量要求非常严格,所以对此必须把握好质量。在开发CRM应用系统的数据结构时一定要以客户信息为核心,一方面是为企业提供一个良好的易于操作的用户界面,另一方面是提高开发的可控性,减少开发成本与风险。以客户信息为核心,所有的模块的内容都是围绕客户,这样也使得应用系统的可拓展性大为提高,维护性加强。对于开发人员,尤其是系统分析员,所有的功能内容对于他来说都是一种“插件”,各个模块功能之间的祸合性大为降低,很显然会使整个的开发过程更加易于控制。市场管理、销售管理、服务管理之所以采用分布式的开发,一方面是满足业务人员的办公需要,可以不受地域的限制,随时随地地办公,另一方面也是为了降低开发的成本与维护成本。因为我们看到,在呼叫中心模块中有销售管理、服务管理等内容,同时电子商务模块中又有其余模块的商务逻辑,我们将其抽象出来,一是组件复用,二是减少开发工作量同时减少风险。3.2.3 J2EE各组成部分在开发CRM应用系统中的脚色开发一个健壮的、可拓展的CRM应用系统中的各个模块,除了呼叫中心外我们都将采用浏览器/服务器模式。因此,下面的模式是除了呼叫中心模块之外的方式;浏览器JSP脚本文件调用Servlet调用EJB访问数据库返回处理结果。其中JSP属于前台开发人员进行的开发内容,也就是提供给客户的用户界面,要求是美观,使用性强,便于操作;Servlet,EJB为后台开发人员开发的具有可以重用性的包含商务逻辑的组件,也就是说,他们主要是进行企业的商务逻辑的处理。要求是开发的程序一定要健壮,充分注意到业务逻辑的独立性与组合性。这就要求在做系统分析时一定要做到将功能完全细化到Servlet,EJB组件所封装的商务逻辑中去,并且要反复论证其合理性与独立性。3.2.4 J2EE平台架构开发CRM过程我们注意到的问题1) 商务逻辑一定要划分的非常合理,原则是一个组件中应该只含有一种商务逻辑,一般的商务逻辑应该是通过几个组件的协同合作来实现的。2) 分工一定要明确,主要角色可考虑为; 系统分析员; 后台组件开发程序员(主要是Servlet与EJB ); 后台服务器实施技术人员(主要负责组件的管理); 后台组件测试人员; 前台用户界面程序员(主要是JSP程序员和美工); 前台测试技术人员;除了上面所列出的脚色充当之外,尽量避免前台程序员与后台程序员的脚色互换,否则很可能造成商务逻辑组件之间的祸合,而这是绝对不允许的,否则随着开发过程的进行,就会发现越来越难以控制应用的开发。所以在开发过程中一定要注意组件的商务逻辑的独立性与唯一性。3.2.5 开发过程中所用到的J2EE的技术Java最初是在浏览器和客户端机器中使用的。当时,很多人质疑它是否适合做服务器端的开发。现在,随着对Java2平台企业版(J2EE)第三方支持的增多,Java被广泛接纳为开发企业级服务器端解决方案的首选平台之一。J2EE平台由一整套服务(Services)、应用程序接口(APIs)和协议构成,它对开发基于Web的多层应用提供了功能支持。在论文中我将介绍我们所采用的支撑J2EE的几种核心技术;JDBC, JNDI, EJBs, RMI, JSP, Java servlets, XML, JMS, Java IDL, JTS, JTA, JavaMail和JAF,同时还将描述在我们开发过程中何时、何处需要使用这些技术。当然,还要介绍这些不同的技术之间是如何交互的。此外,为了便于理解J2EE的真实应用,我在WebLogic应用服务器(来自BEA System公司的一种广为应用的产品)环境下来研究这些技术。这对于WebLogic应用服务器和J2EE的理解会比较容易一些。u 宏观印象:分布式结构和J2EE过去,二层化应用通常被称为client/server应用一是大家谈论的最多的。在很多情况下,服务器提供的唯一服务就是数据库服务。在这种解决方案中,客户端程序负责数据访问、实现业务逻辑、用合适的样式显示结果、弹出预设的用户界面、接受用户输入等。client/server结构通常在第一次部署的时候比较容易,但难于升级或改进,而且经常基于某种专有的协议通常是某种数据库协议。它使得重用业务逻辑和界面逻辑非常困难。更重要的是,在Web时代,二层化应用通常不能体现出很好的伸缩性,因而很难适应Internet的要求。Sun设计J2EE的部分起因就是想解决二层化结构的缺陷。于是,J2EE定义了一套标准来简化N层企业级应用的开发。它定义了一套标准化的组件,并为这些组件提供了完整的服务。J2 EE还自动为应用程序处理了很多实现细节,如安全、多线程等。用J2EE开发N层应用包括将二层化结构中的不同层面切分成许多层。一个N层化应用能够为以下的每种服务提供一个分开的层: 显示:在一个典型的Web应用中,客户端机器上运行的浏览器负责实现用户界面。 动态生成显示:尽管浏览器可以完成某些动态内容显示,但为了兼容不同的浏览器,这些动态生成工作应该放在Web服务器端进行,使用JSP, Servlets,或者XML(可扩展标记语言)和(可扩展样式表语言)。 业务逻辑:业务逻辑适合用Session EJBs(后面将介绍)来实现。 数据访问:数据访问适合用Entity EJBs(后面将介绍)和JDBC来实现。 后台系统集成:同后台系统的集成可能需要用到许多不同的技术,至于何种最佳需要根据后台系统的特征而定。为什么有这么多的层?事实上,多层方式可以使企业级应用具有很强的伸缩性,它允许每层专注于特定的角色。例如,让Web服务器负责提供页面,应用服务器处理应用逻辑,而数据库服务器提供数据库服务。由于J2EE建立在Java2平台标准版( J2SE)的基础上,所以具备了J2SE的所有优点和功能。包括“编写一次,到处可用”的可移植性、通过JDBC访问数据库、同原有企业资源进行交互的CORBA技术,以及一个经过验证的安全模型。在这些基础上,J2EE又增加T对EJB(企业级Java组件)、Java servlets, Java服务器页面(JSPs)和XML技术的支持。u 分布式结构与WebLogic应用服务器J2EE提供了一个框架,一套标准API,用于开发分布式结构的应用,这个框架的实际实现留给了第三方厂商。部分厂商只是专注于整个J2EE架构中的特定组件,例如Apache的Tomcat提供了对JSP和servlets的支持,BEA软件公司则通过其WebLogic应用服务器产品为整个J2EE规范提供了一个较为完整的实现。WebLogic服务器己使建立和部署伸缩性较好的分布式应用的过程大为简化。WebLogic和J2 EE代我们程序开发人员处理了大量常规的编程任务,包括提供事务服务、安全领域、可靠的消息、名字和目录服务、数据库访问和连接池、线程池、负载平衡和容错处理等技术。通过以一种标准、易用的方式提供这些公共服务,象WebLogic服务器这样的产品造就了具有更好伸缩性和可维护性的应用系统,使其为大量的用户提供了增长的可用性。3.2.6 开发所用的J2EE技术在接下来的部分里,我将描述构成J2EE的各种技术,并且了解WebLogic服务器是如何在一个分布式应用中对它们进行支持的。最常用的J2 EE技术应该是JDBC,JNDI,EJB,JSP和servlets,对这些我们将作更仔细的考察。 Java Database Connectivity (JDBC)JDBC API以一种统一的方式来对各种各样的数据库进行存取。和ODBC一样,JDBC为开发人员隐藏了不同数据库的不同特性。另外,由于JDBC建立在Java的基础上,因此还提供了数据库存取的平台独立性。JDBC定义了4种不同的驱动程序,现分述如下:类型1:JDBC-ODBC Bridge在JDBC出现的初期,JDBC-ODBC桥显然是非常有实用意义的,通过JDBC-ODBC桥,开发人员可以使用JDBC来存取ODBC数据源。不足的是,他需要在客户端安装ODBC驱动程序,换句话说,必须安装Microsoft Windows的某个版本。使用这一类型你需要牺牲JDBC的平台独立性。另外,ODBC驱动程序还需要具有客户端的控制权限。类型2:JDBC-native driver bridgeJDBC本地驱动程序桥提供了一种JDBC接口,它建立在本地数据库驱动程序的顶层,而不需要使用ODBC. JDBC驱动程序将对数据库的API从标准的JDBC调用转换为本地调用。使用此类型需要牺牲JDBC的平台独立性,还要求在客户端安装一些本地代码。类型3:JDBC-network bridgeJDBC网络桥驱动程序不再需要客户端数据库驱动程序。它使用网络上的中间服务器来存取数据库。这种应用使得以下技术的实现有了可能,这些技术包括负载均衡、连接缓冲池和数据缓存等。由于第3种类型往往只需要相对更少的下载时间,具有平台独立性,而且不需要在客户端安装并取得控制权,所以很适合于Internet上的应用。类型4:Pure Java driver第4种类型通过使用一个纯Java数据库驱动程序来执行数据库的直接访问。此类型实际上在客户端实现了2层结构。要在N层结构中应用,一个更好的做法是编写一个EJB,让它包含存取代码并提供一个对客户端具有数据库独立性的服务。WebLogic服务器为一些通常的数据库提供了JDBC驱动程序,包括Oracle, Sybase, Microsoft SQL Server以及Informix。它也带有一种JDBC驱动程序用于Cloudscape,这是一种纯Java的DBMS, WebLogic服务器中带有该数据库的评估版本。以下我列出我们系统中一个简单的实例。l JDBC实例在这个例子中我们假定你已经在Cloudscape中建立了一个Client_ Information数据库,并且包含一个表,名为Client_Table,它带有24个字段。开始的时候先装载Cloudscape JDBC driver,并请求driver manager得到一个对Client_ Information数据库的连接。通过这一连接,我们可以构造一个Statement对象并用它来执行一个简单的SQL查询。最后,用循环来遍历结果集的所有数据,并用标准输出将Name和Phone字段的内容进行输出。import java.sql.*;public class JDBC Examplepublic static void main( String args)tryClass.forName(COM.cloudscape.core.JDBCDriver);Connectionconn=DriverManager.getConnection(jdbc;cloudscape;PhoneBook);Statement stmt = conn.createStatement();String sql=SELECT name,phone FROM Client_Table ORDER BY name;ResultSet resultSet = stmt.executeQuery( sql);String Code;String FullName;string Name;String Phone;while(resultSet.next()name = resultSet.getString(1).trim();phone = resultSet.getString(2).trim();System.out.println( name+,+ phone);catch ( Exception e )/Handle exception heree.printStackTrace();接着我们来看一看JDBC是如何在企业应用中的进行使用。 JDBC在企业级应用中的应用以上实例其实是很基本的,可能有些微不足道。它假定了一个2层结构。在一个多层的企业级应用中,更大的可能是在客户端和一个EJB进行通信,该EJB将建立数据库连接。为了实现和改进可伸缩性和系统性能,WebLogic服务器提供了对连接缓冲池connection pool的支持。Connection pool减少了建立和释放数据库连接的消耗。在系统启动以后即可建立这样的缓冲池,此后如果再有对数据库的请求,WebLogic服务器可以很简单地从缓冲池中取出数据。数据缓冲池可以在WebLogic服务器的perties文件中进行定义。(可参考perties文件中的例子,WebLogic服务器的文档中还有更详细的参考信息)在企业级应用的另一个常见的数据库特性是事务处理。事务是一组申明statement,它们必须做为同一个statement来处理以保证数据完整性。缺省情况下JDBC使用auto-comnut事务模式。这可以通过使用Connection类的setAutoCommito方法来实现。下面该介绍一下JNDI了。 Java Naming and Directory Interface (JNDI)JNDI API被用于执行名字和目录服务。它提供了一致的模型来存取和操作企业级的资源如DNS和LDAP(用来发布目录信息到不同资源的协议,通常作为一个集中的地址本使用,其基本形式是连接数据库的一种方式),本地文件系统,后者在应用服务器中的对象。在JNDI中,在目录结构中的每一个结点称为context。每一个JNDI名字都是相对于context的。这里没有绝对名字的概念存在。对一个应用来说,它可以通过使用InitialContext类来得到其第一个context。通过这个初始化的context经有这个目录树来定位它所需要的资源或对象。例如,假设你在Weblogic服务器中展开了一个EJB并将home接C绑定到名字myApp.myEJB,那么该EJB的某个客户在取得一个初始化context以后,可以通过以下语句定位home接口;MyEJBHome home = ctx.lookup(myApp.myEJB);其中,一旦你有了对被请求对象的参考,EJB的home接口就可以在它上面调用方法。以上研究了JNDI的一些内容。如果要更进一步地在context中查找对象,JNDI也提供了一些方法来进行以下操作;将一个对象插入或绑定到context。这

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论