黑武士的领地
——黑武士是反微软的JAVA阵营的流氓JAVA程序员
posts - 26,comments - 4,trackbacks - 0
 第一章 概述                                                                 
  本文阐述了关于在J2EE
统的理解,利用J2EE平台开
等等。这些都是作者在实际
统分析员的重要性,尤其是
素质对于整个项目的成功与
平台上开发CRM应用系统的各方
发过程中要注意的一些技术深层
的工作中通过经验与教训所得来
对于以组件为主要开发对象的工
否起着非常关键性的作用。
面内容,包括本人对于CRM系
的问题,开发分析中要注意的原则
的。在工作中,我深刻的体会到系
程项目,系统分析员的技术与业务

  需要说明的是,这并非
其中关于一些涉及到具体的
作者工作文档,而仅仅是一篇分
系统设计问题,我仅仅写了标题
享经验与教训的交流文档,因此,
,敬请谅解。
  第二章 CRM                                                                
  2.1 CRM概述                                                            
  科学技术在不断的进步
源是他获胜的最重要的资源
成为关键;现代竞争其实就
所得到的体验,如何做到最
(CRM)应运而生,并成为近
,市场竞争日益激烈,对于企业
之一:首先企业竞争的优势不仅
是客户的全面争夺而客户对企业
大程度的满足客户是非常重要的
年来西方市场的热点和大买点。
来说,越来越强烈的感觉到客户资
仅是产品本身,先进的服务手段已
的信任程度往往是从其消费过程中
内容,因此,客户关系管理系统

  实际上,CRM就是企业与客户的一种
过去的部门级别提升到了企业的层次,各
户交流,因此,这就要求能够将与客户通
的所有信息有机的整合。
一对一的需求关系管理。这样,对待客户的视角就从
个部门共享客户资源,以一个统一的对外接口来与客
过各种方式如传真、邮件、电话、网页等交流所获得

  在设计CRM应用系统的过程中,我们
键是以客户为数据结构的核心,这其中包
怨、客户建议、客户服务记录、客户潜在
是使CRM应用系统有一个对于企业易于理
设计开发可以比较轻易地拓展,具有良好
员能够更加易于控制整个的开发过程,减
首先要注意数据结构的格式:CRM应用系统的实施关
括客户的基本信息、客户所购买的商品列表、客户抱
需求、客户对企业的忠诚度等等。这样设计的原因一
解,易于操作的用户接口,二是对于CRM应用系统的
的开发接口与开发弹性,对于项目负责人、系统分析
少项目开发的风险。
  另外,我们仔细研究过
但同时也看到了这些产品的
原因在很大程度上是因为技
的J2EE平台上进行开发,这
国内的数家公司的CRM应用系统
不足,在本文的后面部分我们将
术的原因,因此,经过反复的论
样就很大程度上克服了那些不足
的产品,从中学到了很多的东西,
提到,我们发现,造成这种不足的
证,我们最终还是选择了在我熟悉

  2.2 CRM应用系统模块划分                                                
  CRM应用系统主要由市场管理(Market
中心(Call Center)、电子商务(E_Busine
ing)、销售管理(Sales)、服务管理(Service)、呼叫
ss)五部分组成。
  市场管理:提供易于使
跟踪市场策略,分析竞争对
过客户资料中的诸如地域、
等等有价值的信息来从不同
经进行或者正在进行的营销
加有效的销售策略。
用的界面与工具,使操作人员能
手的市场策略等等,以便更加有
消费层次,消费习惯与方式、潜
的角度彻底的进行市场的策略分
策略,以及通过对自己和竞争对

够彻底的分析市场、客户,策划和
效的拓展市场。在这个模块中,通
在需求、忠诚度、已购买产品列表
析,同时还可以评估和跟踪目前已
手的数据进行详细的分析,策划更

  销售管理:管理用户信
员可以不受地域限制及时掌
感兴趣的商品列表以及价格
售队伍成员以及资源重新调
考,灵活进行产品配置、报
整合,以便达到多方位、多
息、商业机会以及销售渠道等等
握资源以及企业的最新的价格信
信息。本模块包括机会、账户、
配的管理,有效跟踪销售业绩,
价、打折、生成销售订单等。另
层次的销售,同时减少销售成本
各方面的内容,从而能够使销售人
息,并可以向客户提供最新的和最
合同等的管理,销售队伍组成、销
同时提供个体的销售方式与过程参
外,本模块还应该和电子商务模块

  服务管理:本模块通过
客户的满意程度,并且捕捉
能够适时的向客户建议其他
动态建立知识库,使客户服务代
和跟踪服务中出现的商业机会、
的产品和服务。
表能够有效的提高服务质量,增加
产品质量信息、客户需求等等,并

  呼叫中心:呼叫中心是实施CRM应用
务模块进行了一个高度的集成,使一般的
账户、合同等等信息,并通过知识库的支
叫中心提供当今最全面的计算机电话集成
号吗识别(ANI),交互式语音应答系统(IV
技术,可以在用户拨叫的过程中业务代表
系统的重要的组成部分,他实际上是将销售模块和服
业务代表就可以进行实时的销售和服务。它通过管理
持,就可以最大程度的满足客户的多方面的需求。呼
技术(CTI),通过对已拨号码识别服务(DNIS),自动
R)得全面支持,通过采用系统预制的计算机电话集成
已经可以获得客户的资料,就灵活的进行业务处理。
  电子商务:电子商务模块是以上所有
、高度集成以及易于使用的用户界面,在
购买、付款、寻求服务支持、查询产品与
联系在一起,最大程度的满足客户需求。
模块的一个逻辑集成,它提供了一个个性化、人性化
这个用户界面上客户可以进行几乎所有的需求,诸如
服务目录、查询订单状态等等,甚至可以与呼叫中心

  由于我们采用J2EE架构
、服务管理以及呼叫中心模
以并且也应该使用销售管理
,要充分利用J2EE平台的优
同时可以控制开发的质量。
负责人、系统分析员必须把
平台的开发方式,所以可以很容
块的内容集成到电子商务模块中
、服务管理模块中开发的组件。
点,组件的高度可重用性,减少
在实际的开发中,对于EJB 、Se
握好质量。
易的将我们在市场管理、销售管理
,同时呼叫中心的大部分功能也可
因此,这就要求我们在开发过程中
开发的成本,加快开发的进度,并
rvlet的质量要求非常严格,项目

  2.3 CRM应用系统模块内在关系                                            
  在前面已经提到,在开
为企业提供一个良好的易于
风险。以客户信息为核心,
大为提高,维护性加强。对
一种“插件”,各个模块功
制。
发CRM应用系统的数据结构时一
操作的用户界面,另一方面是提
所有的模块的内容都是围绕客户
于开发人员,尤其是系统分析员
能之间的耦合性大为降低,很显

定要以客户信息为核心,一方面是
高开发的可控性,减少开发成本与
,这样也使得应用系统的可拓展性
,所有的功能内容对于他来说都是
然会使整个的开发过程更加易于控

  在各个模块的具体开发实施中,销售
过销售人员的销售活动的信息支持,对于
实时的给与市场人员以信息支持,从而随
应该说销售管理、服务管理、呼叫中心以
,同时反过来,市场管理策略也给与其余
结构地设计上以客户信息为核心数据。
模块是基础,他负责管理账户、机会等信息,并且经
客户的信息(如需求、购买行为等)的补充,就可以
时把握销售策略,便于及时调整。从某种意义上讲,
及电子商务这四个模块都是作为市场模块的信息支持
企业活动以策略支持。要实现这一点,就必须在数据

  CRM应用系统各个模块
复杂的系统,我们不能按照
带来应用系统在开发、扩充
象,将客户资源作为操作的
之间的关系在企业业务上关系非
一般传统的软件工程观念,在各
以及维护方面等很多的问题。正
核心。
常紧密,但是作为一个非常庞大和
个模块之间通过接口通信,这样会
确合理的方案是将客户视做一个对

  2.4 CRM应用系统各模块的技术要求                                        
  基于客户对于CRM应用
用系统各个模块中除了呼叫
成瘦客户端(浏览器)/服
较,我们最终确定采用在J2
较成熟的技术规范,相对于
从很久就一直跟踪分布式开
书籍)。因此,比较了几种
务逻辑抽象出来,写成组件
台界面,调用后台的商务逻
系统的实际需求以及考虑到系统
中心可以做成客户/服务器(C/S)
务器(B/S)模式。经过了反复的
EE平台上开发CRM应用系统的技
微软的.NET来说,它的开发要更
发的技术,对于J2EE的开发非常
开发平台之后,我们决定采用J2
,然后将其发布到服务器上,再
辑。
的未来拓展性、可维护性,CRM应
体系模式之外,其他模块都应该做
论证并且通过与别的技术方式的比
术方案。一方面是因为作为一种比
加安全、成本更低,另一方面,我
熟悉。(当时还没有相关的中文版
EE。在这种开发平台上,我们将业
通过前台程序的开发程序员开发前

  市场管理、销售管理、服务管理之所
需要,可以不受地域的限制,随时随地地
。因为我们看到,在呼叫中心模块中有销
其余模块的商务逻辑,我们将其抽象出来

以采用分布式的开发,一方面是满足业务人员的办公
办公,另一方面也是为了降低开发的成本与维护成本
售管理、服务管理等内容,同时电子商务模块中又有
,一是组件复用,二是减少开发工作量同时减少风险

  第三章:J2EE                                                              
  3.1 J2EE概述                                                          
  任何一个有经验的Java
综合程度,并且发展非常迅
统级别程序设计提供了丰富
,它定义了整个标准的应用
注意力集中在封装商业逻辑
都由应用程序容器或者服务
的运行时属性都可以使用高
供了一个简化的开发模型,
发商和应用服务器无关。
平台开发人员,都会知道这个平
速。Java平台的许多应用程序接
的功能。J2EE是一种技术规范,
开发体系结构和一个部署环境,
和商业规则上,一切与基础结构
器来处理。甚至,从属于事务、
度灵活的声明方法在部署环境中
它具有工业强度的可拓展性,支

台具有非常强大的功能和非常高的
口(API)为各种应用程序设计和系
他给开发人员提供了一种工作平台
在这个体系结构中,应用开发者的
服务相关的问题以及底层分配问题
持久化、安全等等方面的应用组件
定制(一般采用XML)。这个平台提
持合理的集成和灵活的部署,与开

  3.2 J2EE组成部分                                                      
  对于开发人员来说,J2EE平台提供给
式。
他们的就是三种,Jsp、Servlet、EJB这三种开发方

  Jsp                                                                       
  Jsp其实是一种高层的S
在执行时有一些不同。Jsp
执行就和Servlet的一样了
然后输出结果。
ervlet。他与以往的其他网页编
引擎将它和它所在的HTML文件一
:先编译成.class文件,然后由

写脚本有很大的相似性,但是只是
起合成Servlet的代码,然后它的
支持java虚拟机的服务器来执行,

  我们在使用Jsp中可以使用JavaBean来进行更加灵活的处理。              
  Servlet                                                                
  Servlet可以被看作是
这两个对象来输出和接收用
问别的Servlet方法、调用E
具来进行开发。在一般的工
一般的java语言就可以进行
服务器端的applet,它通过Serv
户传递的参数,然后在内部的方
JB等等,然后将处理结果返回给
具中都已经构建好一个框架,程
开发了。
letResponse以及ServletRequest
法中执行操作,如访问数据库、访
客户端。可以通过集成化的开发工
序员只需要熟悉html标签以及熟悉

  EJB                                                                        
  EJB如果除去它的语言特点外,我想
可以轻松理解,他非常类似于微软的DCOM
让客户进行透明调用,而不必关心位置,
相关的配置文件,以便告诉容器她要怎样
开发工具,如JBuilder,就可以大大减少
容器信息,我们可以通过它的模板来完成

对于大多数有比较丰富编程经验的开发人员来说应该
。他有一个自己要存活要活动的一个容器,为了可以
他还必须有一个本地和远程接口,同时还应该有一个
的活法。对于开发人员来说,如果采用一种集成化的
工作量。在JBuilder中通过配置相关的服务器路径、
一个EJB组件的开发以及分发,非常方便也非常简单

  在开发过程中,建议的
但是对数据库的亲和,而会
以结合这两种bean的所有优
据库的访问同时会话bean用
开发方式是在会话bean内部调用
话bean中有我们为了控制程序而
点,来比较轻松的进行开发。比
来保存客户的上下文信息。
实体bean,因为实体bean没有状态
需要的上下文信息,因此,我们可
如在会话bean中用实体bean进行数

  3.3 J2EE各组成部分在开发CRM应用系统中的脚色                        
  我们已经提到过,开发一个健壮的、
外我们都将采用浏览器/服务器模式。因
可拓展的CRM应用系统中的各个模块,除了呼叫中心
此,下面的模式是除了呼叫中心模块之外的方式:
  浏览器--------〉Jsp脚本文件-----
EJB------访问数据库---------〉处理返
---调用---------〉Servlet------调用--------〉
回。
  其中Jsp属于前台开发
,使用性强,便于操作;
人员进行的开发内容,也就是提

供给客户的用户界面,要求是美观

  Servlet、EJB为后台开
他们主要是进行企业的商务
的独立性与组合性。
发人员开发的具有可以重用性的
逻辑的处理。要求是开发的程序

包含商务逻辑的组件,也就是说,
一定要健壮,充分注意到业务逻辑

  在开发CRM系统时,前面已经说过,
系统业务的理解程度将极大的决定了系统
完全细化到Servlet、EJB组件所封装的商
系统分析员自身对于J2EE技术的把握深度,对于CRM
的成功与否。就是在做系统分析时一定要做到将功能
务逻辑中去,并且要反复论证其合理性与独立性。
  3.4 J2EE各技术实现CRM应用系统的特点                                
  Jsp相对来说比较简单,但是在开发
放到Jsp文件中,有几个原因,一是Jsp文
的开发,将会极大的增加开发与维护成本
后将版面分割成不同的部分,用不同的被
某些与程序逻辑实现无关的动态内容最好
的Jsp文件时系统分析员要注意下面的几
过程中系统分析员一定要注意尽可能少地将商务逻辑
件本身的可维护性比较差,尤其是如果不采用的方式
。因此,在前台的Jsp开发中首先要划分出版面,然
包含文件来最终组成用户界面。另外要注意的一点是
放在数据库中,而不要放在文件中。所以在开发前台
个问题:
  1、划分版面的界面逻辑,用包含文件的方式给程序员确定开发代码;                
  2、尽量不将商务逻辑放在Jsp文件中,所有的业务处理都要调用后台的组件;      
  3、当涉及到的界面逻
Jsp文件中直接嵌入java代
辑较多的时候,要给程序员设计
码,否则会造成Jsp文件的可读
JavaBean来进行处理,而不是在
性非常差,维护与调试异常困难。
  Servlet作为在服务器
的、准确等的要求外,还有
相比通用网关接口CGI有着
的线程,但是可能很多程序
间是共享的,并且如果存在
鼓励程序员多注意利用Java
synchronized技术等)解决
的访问数据库会造成数据库
分配连接并在释放以后能够
后台进行处理的组件,除了业务
一个很重要的要求:就是线程安
明显的优点就是可以维护一个线
员都会意识不到一个经常会遇到
着Servlet链互调时,就会发生
提供的方法(如声明自己的类实
线程的问题,另外还要注意的是
服务器的负担同时使客户端的回
回收的连接池。所以,在开发Se
上商务逻辑要独立、完整、可组合
全性。显然,我们都知道Servlet
程池,不用每一次都要创建一个新
的问题:实例变量在所有的线程之
数据错误。因此系统分析员一定要
现了Runnable接口或者采用同步
数据库的连接问题,因为如果频繁
馈速度变慢,因此要注意利用预先
rvlet也要注意下面的3个问题:
  1、鼓励程序员关注线
步synchronized技术等解决
程安全问题(如采用声明自己的
线程的问题);
类实现了Runnable接口或者采用同

  2、数据库的访问要充
分利用JDBC技术的预先分配连接
并在释放以后能够回收的连接池;
  3、鼓励系统分析员将
实际的程序中通过Servlet
商务逻辑划分成单个的独立的可
链来完成某项商务逻辑。
通用的可重用的商务逻辑组件,在

  EJB实际上单就程序的写作方面要比S
甚麽就可以了,而不必关心事务的处理,
要求:
ervlet简单的多,它使程序员只需要关心要实现的是
底层的操作等等问题。但是也还是有一些编程方面的

  1、最好能够在程序中
出现时语义的不一致问题;
将所有的static字段都声明为fi

nal型的,这样可以保证多个实例

  2、注意线程问题,同Servlet;                                          
  3、不使用文件系统。E
询,基本上是不用文件系统
JB组件可以通过环境命名上下文

用一种标准的方法进行环境实体查

  4、禁用socket来进行监听和接收连接,或者用其进行多路发送。              
  5、不可能用awt函数来完成键盘的输
息,因为组件是用来在服务器端完成某一
入和输出,如果有的话,应该是向控制台输出控制信
项商务逻辑的。
  第四章:J2EE平台架构开发CRM的内容                                      
  本章的内容是一个非常
,运行图等等。因为某种原
大的部分,他所涵盖的就是具体
因,这儿就不写了,请谅解。
的开发方案,其中包括使用案例图

  第五章:技术层面控制J2EE平台架构开发CRM的过程                          
  在J2EE平台上开发CRM应用系统,是
技术规范,各大IT服务器、中间件厂商也
竟.NET是一项新的技术规范,如果在其上
是在走向成熟。
一个非常优秀的方案,一方面J2EE是一项比较成熟的
都大力推崇并支持,尽管微软大力推出.NET,但是毕
进行开发的话,风险显然要大得多,而J2EE目前却正

  正像任何事情一样,在
,在这个过程当中,有一个
握深度、对CRM应用系统的
系统分析员自身的素质决定
员对于客户的需求的理解程
;其次是系统分析员的思维
到将商务逻辑进一步细化成
有着非常深的掌握,这是实
就在服务器端组件的开发上
是否规范与合理,而系统分
先进的J2EE平台上开发CRM应用
非常重要的脚色:系统分析员。
业务理解程度很大得影响了开发
了开发的成功与否,这是一个非
度,只有深入的理解了客户的需
是否严密,是否严谨,是否具有
独立的可重用的业务逻辑与使用
施CRM的另外一个重要之处,因
,一个系统能否稳定,高效的运
析员在实施编码阶段的主要职责
系统必须要有一个良好的实施过程
系统分析员自身对于J2EE技术的掌
的过程,甚至可以毫不夸张的说,
常关键的因素。 首先是系统分析
求,才能够将商务逻辑很好的划分
很强的逻辑思维能力,因为这涉及
逻辑。第三是其是否对于J2EE技术
为在整个的开发过程中,其实重心
行,很大程度上取决于开发技术上
就是负责检查程序员的程序代码
  在开发过程中另外一个
概念不同,它有着严格的分
注意的是开发人员的分工。在J2
工:
EE平台上的开发与一般的软件开发

  1、系统分析员;                                                              
  2、后台组件开发程序员(主要是Servlet与EJB);                      
  3、后台服务器实施技术人员(主要负责组件的管理);                            
  4、后台组件测试人员;                                                        
  5、前台用户界面程序员(主要是jsp程序员+美工);                          
  6、前台测试技术人员;                                                        
  在实际的实施过程中,后台服务器实
,前台用户界面程序员可以充当前台测试
施技术人员可以充当后台组件测试人员的脚色,同样
技术人员,因为他的页面中所包含的逻辑比较少。
  总结一下,关键的几点
含有一种商务逻辑,一般的
何组合就是看系统分析员的
,尽量避免前台程序员与后
而这是绝对不允许的,否则
在开发过程中一定要注意组
严格把关,这一点非常非常
:1、商务逻辑一定要划分的非
商务逻辑应该是通过几个组件的
功底了!)2、分工一定要明确
台程序员的脚色互换,否则很可
随着开发过程的进行,就会发现
件的商务逻辑的独立性与唯一性
重要。
常合理,原则是一个组件中应该只
协同合作来实现的(如何划分,如
,除了上面所列出的脚色充当之外
能造成商务逻辑组件之间的耦合,
越来越难以控制应用的开发。所以
,系统分析员和项目负责人一定要

  第六章:CRM应用系统各个模块的具体技术实现                                  
  应用系统都是开发商基于对某项业务
,即便是同一行业也有不同,因此,要根
都有一个共同的框架,就是上面所提到的
架+具体商务逻辑。而框架部分则就是上
象出来做成组件,以备复用。
的深刻理解而产生的,不同的行业有不同的商务逻辑
据客户的实际需求来做。但是,作为一个CRM系统她
,因为,一套完整和实用的CRM系统可以看作是: 框
面要求系统分析员所做的工作:将通用的商务逻辑抽

  本章应该是一个详细的模块设计,其
。出于和第四章同样的原因,请谅解。
中包括组件组合使用图,流程图以及其他的文档等等

  第七章:国内CRM系统目前存在的问题以及采用J2EE技术进行的解决方案        
  我们研究过国内几家CR
例子:
M系统,学习到很多的东西,但

同时也发现一些问题,现在举几个

  1、 大而全,但是各个功能做的太过于简单,无法实用。                          
  2、 缺乏集成能力,无法将网页、电邮、电话、传真等集成。                      
  3、 没有与客户的互动渠道。                                                  
  就这三个原因,是因为在整个的设计
细、完整的划分成个体的、独立的功能组
加上如开发成本的压力等。而如果是采用
开发,就会解决或者避免或者减轻这些问
,电子商务模块基本上也就完成,只需要
上偏离了以客户为中心的原则,没有将客户的需求详
件,没有将各个功能做成是以客户为核心的插件,再
J2EE,并且严格的按照合理划分的组件的方式来进行
题。比如,在开发完销售模块与服务模块的组件之后
少许的其它组件就可以完成一个电子商务模块。


posted on 2005-08-01 13:17 黑武士 阅读(138) 评论(0)  编辑  收藏 所属分类: JAVA技术

只有注册用户登录后才能发表评论。


网站导航: