首頁(yè)>>>技術(shù)>>>CRM  CRM產(chǎn)品

J2EE平臺(tái)架構(gòu)上開(kāi)發(fā)CRM的技術(shù)過(guò)程控制

2007/06/22

一、 CRM

  CRM概述

  科學(xué)技術(shù)在不斷的進(jìn)步,市場(chǎng)競(jìng)爭(zhēng)日益激烈,對(duì)于企業(yè)來(lái)說(shuō),越來(lái)越強(qiáng)烈的感覺(jué)到客戶資源是他獲勝的最重要的資源之一:首先企業(yè)競(jìng)爭(zhēng)的優(yōu)勢(shì)不僅僅是產(chǎn)品本身,先進(jìn)的服務(wù)手段已成為關(guān)鍵;現(xiàn)代競(jìng)爭(zhēng)其實(shí)就是客戶的全面爭(zhēng)奪而客戶對(duì)企業(yè)的信任程度往往是從其消費(fèi)過(guò)程中所得到的體驗(yàn),如何做到最大程度的滿足客戶是非常重要的內(nèi)容,因此,客戶關(guān)系管理系統(tǒng)(CRM)應(yīng)運(yùn)而生,并成為近年來(lái)西方市場(chǎng)的熱點(diǎn)和大買點(diǎn)。

  實(shí)際上,CRM就是企業(yè)與客戶的一種一對(duì)一的需求關(guān)系管理。這樣,對(duì)待客戶的視角就從過(guò)去的部門級(jí)別提升到了企業(yè)的層次,各個(gè)部門共享客戶資源,以一個(gè)統(tǒng)一的對(duì)外接口來(lái)與客戶交流,因此,這就要求能夠?qū)⑴c客戶通過(guò)各種方式如傳真、郵件、電話、網(wǎng)頁(yè)等交流所獲得的所有信息有機(jī)的整合。

  在設(shè)計(jì)CRM應(yīng)用系統(tǒng)的過(guò)程中,我們首先要注意數(shù)據(jù)結(jié)構(gòu)的格式:CRM應(yīng)用系統(tǒng)的實(shí)施關(guān)鍵是以客戶為數(shù)據(jù)結(jié)構(gòu)的核心,這其中包括客戶的基本信息、客戶所購(gòu)買的商品列表、客戶抱怨、客戶建議、客戶服務(wù)記錄、客戶潛在需求、客戶對(duì)企業(yè)的忠誠(chéng)度等等。這樣設(shè)計(jì)的原因一是使CRM應(yīng)用系統(tǒng)有一個(gè)對(duì)于企業(yè)易于理解,易于操作的用戶接口,二是對(duì)于CRM應(yīng)用系統(tǒng)的設(shè)計(jì)開(kāi)發(fā)可以比較輕易地拓展,具有良好的開(kāi)發(fā)接口與開(kāi)發(fā)彈性,對(duì)于項(xiàng)目負(fù)責(zé)人、系統(tǒng)分析員能夠更加易于控制整個(gè)的開(kāi)發(fā)過(guò)程,減少項(xiàng)目開(kāi)發(fā)的風(fēng)險(xiǎn)。

  另外,我們仔細(xì)研究過(guò)國(guó)內(nèi)的數(shù)家公司的CRM應(yīng)用系統(tǒng)的產(chǎn)品,從中學(xué)到了很多的東西,但同時(shí)也看到了這些產(chǎn)品的不足,在本文的后面部分我們將提到,我們發(fā)現(xiàn),造成這種不足的原因在很大程度上是因?yàn)榧夹g(shù)的原因,因此,經(jīng)過(guò)反復(fù)的論證,我們最終還是選擇了在我熟悉的J2EE平臺(tái)上進(jìn)行開(kāi)發(fā),這樣就很大程度上克服了那些不足。

  CRM應(yīng)用系統(tǒng)模塊劃分

  CRM應(yīng)用系統(tǒng)主要由市場(chǎng)管理(Marketing)、銷售管理(Sales)、服務(wù)管理(Service)、呼叫中心(Call Center)、電子商務(wù)(E_Business)五部分組成。

  市場(chǎng)管理:提供易于使用的界面與工具,使操作人員能夠徹底的分析市場(chǎng)、客戶,策劃和跟蹤市場(chǎng)策略,分析競(jìng)爭(zhēng)對(duì)手的市場(chǎng)策略等等,以便更加有效的拓展市場(chǎng)。在這個(gè)模塊中,通過(guò)客戶資料中的諸如地域、消費(fèi)層次,消費(fèi)習(xí)慣與方式、潛在需求、忠誠(chéng)度、已購(gòu)買產(chǎn)品列表等等有價(jià)值的信息來(lái)從不同的角度徹底的進(jìn)行市場(chǎng)的策略分析,同時(shí)還可以評(píng)估和跟蹤目前已經(jīng)進(jìn)行或者正在進(jìn)行的營(yíng)銷策略,以及通過(guò)對(duì)自己和競(jìng)爭(zhēng)對(duì)手的數(shù)據(jù)進(jìn)行詳細(xì)的分析,策劃更加有效的銷售策略。

  銷售管理:管理用戶信息、商業(yè)機(jī)會(huì)以及銷售渠道等等各方面的內(nèi)容,從而能夠使銷售人員可以不受地域限制及時(shí)掌握資源以及企業(yè)的最新的價(jià)格信息,并可以向客戶提供最新的和最感興趣的商品列表以及價(jià)格信息。本模塊包括機(jī)會(huì)、賬戶、合同等的管理,銷售隊(duì)伍組成、銷售隊(duì)伍成員以及資源重新調(diào)配的管理,有效跟蹤銷售業(yè)績(jī),同時(shí)提供個(gè)體的銷售方式與過(guò)程參考,靈活進(jìn)行產(chǎn)品配置、報(bào)價(jià)、打折、生成銷售訂單等。另外,本模塊還應(yīng)該和電子商務(wù)模塊整合,以便達(dá)到多方位、多層次的銷售,同時(shí)減少銷售成本。

  服務(wù)管理:本模塊通過(guò)動(dòng)態(tài)建立知識(shí)庫(kù),使客戶服務(wù)代表能夠有效的提高服務(wù)質(zhì)量,增加客戶的滿意程度,并且捕捉和跟蹤服務(wù)中出現(xiàn)的商業(yè)機(jī)會(huì)、產(chǎn)品質(zhì)量信息、客戶需求等等,并能夠適時(shí)的向客戶建議其他的產(chǎn)品和服務(wù)。

  呼叫中心:呼叫中心是實(shí)施CRM應(yīng)用系統(tǒng)的重要的組成部分,他實(shí)際上是將銷售模塊和服務(wù)模塊進(jìn)行了一個(gè)高度的集成,使一般的業(yè)務(wù)代表就可以進(jìn)行實(shí)時(shí)的銷售和服務(wù)。它通過(guò)管理賬戶、合同等等信息,并通過(guò)知識(shí)庫(kù)的支持,就可以最大程度的滿足客戶的多方面的需求。呼叫中心提供當(dāng)今最全面的計(jì)算機(jī)電話集成技術(shù)(CTI),通過(guò)對(duì)已撥號(hào)碼識(shí)別服務(wù)(DNIS),自動(dòng)號(hào)嗎識(shí)別(ANI),交互式語(yǔ)音應(yīng)答系統(tǒng)(IVR)得全面支持,通過(guò)采用系統(tǒng)預(yù)制的計(jì)算機(jī)電話集成技術(shù),可以在用戶撥叫的過(guò)程中業(yè)務(wù)代表已經(jīng)可以獲得客戶的資料,就靈活的進(jìn)行業(yè)務(wù)處理。

  電子商務(wù):電子商務(wù)模塊是以上所有模塊的一個(gè)邏輯集成,它提供了一個(gè)個(gè)性化、人性化、高度集成以及易于使用的用戶界面,在這個(gè)用戶界面上客戶可以進(jìn)行幾乎所有的需求,諸如購(gòu)買、付款、尋求服務(wù)支持、查詢產(chǎn)品與服務(wù)目錄、查詢訂單狀態(tài)等等,甚至可以與呼叫中心聯(lián)系在一起,最大程度的滿足客戶需求。

  由于我們采用J2EE架構(gòu)平臺(tái)的開(kāi)發(fā)方式,所以可以很容易的將我們?cè)谑袌?chǎng)管理、銷售管理、服務(wù)管理以及呼叫中心模塊的內(nèi)容集成到電子商務(wù)模塊中,同時(shí)呼叫中心的大部分功能也可以并且也應(yīng)該使用銷售管理、服務(wù)管理模塊中開(kāi)發(fā)的組件。因此,這就要求我們?cè)陂_(kāi)發(fā)過(guò)程中,要充分利用J2EE平臺(tái)的優(yōu)點(diǎn),組件的高度可重用性,減少開(kāi)發(fā)的成本,加快開(kāi)發(fā)的進(jìn)度,并同時(shí)可以控制開(kāi)發(fā)的質(zhì)量。在實(shí)際的開(kāi)發(fā)中,對(duì)于EJB 、Servlet的質(zhì)量要求非常嚴(yán)格,項(xiàng)目負(fù)責(zé)人、系統(tǒng)分析員必須把握好質(zhì)量。

  CRM應(yīng)用系統(tǒng)模塊內(nèi)在關(guān)系

  在前面已經(jīng)提到,在開(kāi)發(fā)CRM應(yīng)用系統(tǒng)的數(shù)據(jù)結(jié)構(gòu)時(shí)一定要以客戶信息為核心,一方面是為企業(yè)提供一個(gè)良好的易于操作的用戶界面,另一方面是提高開(kāi)發(fā)的可控性,減少開(kāi)發(fā)成本與風(fēng)險(xiǎn)。以客戶信息為核心,所有的模塊的內(nèi)容都是圍繞客戶,這樣也使得應(yīng)用系統(tǒng)的可拓展性大為提高,維護(hù)性加強(qiáng)。對(duì)于開(kāi)發(fā)人員,尤其是系統(tǒng)分析員,所有的功能內(nèi)容對(duì)于他來(lái)說(shuō)都是一種“插件”,各個(gè)模塊功能之間的耦合性大為降低,很顯然會(huì)使整個(gè)的開(kāi)發(fā)過(guò)程更加易于控制。

  在各個(gè)模塊的具體開(kāi)發(fā)實(shí)施中,銷售模塊是基礎(chǔ),他負(fù)責(zé)管理賬戶、機(jī)會(huì)等信息,并且經(jīng)過(guò)銷售人員的銷售活動(dòng)的信息支持,對(duì)于客戶的信息(如需、購(gòu)買行為等)的補(bǔ)充,就可以實(shí)時(shí)的給與市場(chǎng)人員以信息支持,從而隨時(shí)把握銷售策略,便于及時(shí)調(diào)整。從某種意義上講,應(yīng)該說(shuō)銷售管理、服務(wù)管理、呼叫中心以及電子商務(wù)這四個(gè)模塊都是作為市場(chǎng)模塊的信息支持,同時(shí)反過(guò)來(lái),市場(chǎng)管理策略也給與其余企業(yè)活動(dòng)以策略支持。要實(shí)現(xiàn)這一點(diǎn),就必須在數(shù)據(jù)結(jié)構(gòu)地設(shè)計(jì)上以客戶信息為核心數(shù)據(jù)。

  CRM應(yīng)用系統(tǒng)各個(gè)模塊之間的關(guān)系在企業(yè)業(yè)務(wù)上關(guān)系非常緊密,但是作為一個(gè)非常龐大和復(fù)雜的系統(tǒng),我們不能按照一般傳統(tǒng)的軟件工程觀念,在各個(gè)模塊之間通過(guò)接口通信,這樣會(huì)帶來(lái)應(yīng)用系統(tǒng)在開(kāi)發(fā)、擴(kuò)充以及維護(hù)方面等很多的問(wèn)題。正確合理的方案是將客戶視做一個(gè)對(duì)象,將客戶資源作為操作的核心。

  CRM應(yīng)用系統(tǒng)各模塊的技術(shù)要求

  基于客戶對(duì)于CRM應(yīng)用系統(tǒng)的實(shí)際需求以及考慮到系統(tǒng)的未來(lái)拓展性、可維護(hù)性,CRM應(yīng)用系統(tǒng)各個(gè)模塊中除了呼叫中心可以做成客戶/服務(wù)器(C/S)體系模式之外,其他模塊都應(yīng)該做成瘦客戶端(瀏覽器)/服務(wù)器(B/S)模式。經(jīng)過(guò)了反復(fù)的論證并且通過(guò)與別的技術(shù)方式的比較,我們最終確定采用在J2EE平臺(tái)上開(kāi)發(fā)CRM應(yīng)用系統(tǒng)的技術(shù)方案。一方面是因?yàn)樽鳛橐环N比較成熟的技術(shù)規(guī)范,相對(duì)于微軟的.NET來(lái)說(shuō),它的開(kāi)發(fā)要更加安全、成本更低,另一方面,我從很久就一直跟蹤分布式開(kāi)發(fā)的技術(shù),對(duì)于J2EE的開(kāi)發(fā)非常熟悉。(當(dāng)時(shí)還沒(méi)有相關(guān)的中文版書(shū)籍)。因此,比較了幾種開(kāi)發(fā)平臺(tái)之后,我們決定采用J2EE。在這種開(kāi)發(fā)平臺(tái)上,我們將業(yè)務(wù)邏輯抽象出來(lái),寫(xiě)成組件,然后將其發(fā)布到服務(wù)器上,再通過(guò)前臺(tái)程序的開(kāi)發(fā)程序員開(kāi)發(fā)前臺(tái)界面,調(diào)用后臺(tái)的商務(wù)邏輯。

  市場(chǎng)管理、銷售管理、服務(wù)管理之所以采用分布式的開(kāi)發(fā),一方面是滿足業(yè)務(wù)人員的辦公需要,可以不受地域的限制,隨時(shí)隨地地辦公,另一方面也是為了降低開(kāi)發(fā)的成本與維護(hù)成本。因?yàn)槲覀兛吹,在呼叫中心模塊中有銷售管理、服務(wù)管理等內(nèi)容,同時(shí)電子商務(wù)模塊中又有其余模塊的商務(wù)邏輯,我們將其抽象出來(lái),一是組件復(fù)用,二是減少開(kāi)發(fā)工作量同時(shí)減少風(fēng)險(xiǎn)。

二、J2EE

  J2EE概述

  任何一個(gè)有經(jīng)驗(yàn)的Java平臺(tái)開(kāi)發(fā)人員,都會(huì)知道這個(gè)平臺(tái)具有非常強(qiáng)大的功能和非常高的綜合程度,并且發(fā)展非常迅速。Java平臺(tái)的許多應(yīng)用程序接口(API)為各種應(yīng)用程序設(shè)計(jì)和系統(tǒng)級(jí)別程序設(shè)計(jì)提供了豐富的功能。J2EE是一種技術(shù)規(guī)范,他給開(kāi)發(fā)人員提供了一種工作平臺(tái),它定義了整個(gè)標(biāo)準(zhǔn)的應(yīng)用開(kāi)發(fā)體系結(jié)構(gòu)和一個(gè)部署環(huán)境,在這個(gè)體系結(jié)構(gòu)中,應(yīng)用開(kāi)發(fā)者的注意力集中在封裝商業(yè)邏輯和商業(yè)規(guī)則上,一切與基礎(chǔ)結(jié)構(gòu)服務(wù)相關(guān)的問(wèn)題以及底層分配問(wèn)題都由應(yīng)用程序容器或者服務(wù)器來(lái)處理。甚至,從屬于事務(wù)、持久化、安全等等方面的應(yīng)用組件的運(yùn)行時(shí)屬性都可以使用高度靈活的聲明方法在部署環(huán)境中定制(一般采用XML)。這個(gè)平臺(tái)提供了一個(gè)簡(jiǎn)化的開(kāi)發(fā)模型,它具有工業(yè)強(qiáng)度的可拓展性,支持合理的集成和靈活的部署,與開(kāi)發(fā)商和應(yīng)用服務(wù)器無(wú)關(guān)。

  J2EE組成部分

  對(duì)于開(kāi)發(fā)人員來(lái)說(shuō),J2EE平臺(tái)提供給他們的就是三種,Jsp、Servlet、EJB這三種開(kāi)發(fā)方式。

  Jsp

  Jsp其實(shí)是一種高層的Servlet。他與以往的其他網(wǎng)頁(yè)編寫(xiě)腳本有很大的相似性,但是只是在執(zhí)行時(shí)有一些不同。Jsp引擎將它和它所在的HTML文件一起合成Servlet的代碼,然后它的執(zhí)行就和Servlet的一樣了:先編譯成.class文件,然后由支持java虛擬機(jī)的服務(wù)器來(lái)執(zhí)行,然后輸出結(jié)果。

  我們?cè)谑褂肑sp中可以使用JavaBean來(lái)進(jìn)行更加靈活的處理。

  Servlet

  Servlet可以被看作是服務(wù)器端的applet,它通過(guò)ServletResponse以及ServletRequest這兩個(gè)對(duì)象來(lái)輸出和接收用戶傳遞的參數(shù),然后在內(nèi)部的方法中執(zhí)行操作,如訪問(wèn)數(shù)據(jù)庫(kù)、訪問(wèn)別的Servlet方法、調(diào)用EJB等等,然后將處理結(jié)果返回給客戶端?梢酝ㄟ^(guò)集成化的開(kāi)發(fā)工具來(lái)進(jìn)行開(kāi)發(fā)。在一般的工具中都已經(jīng)構(gòu)建好一個(gè)框架,程序員只需要熟悉html標(biāo)簽以及熟悉一般的java語(yǔ)言就可以進(jìn)行開(kāi)發(fā)了。

  EJB

  EJB如果除去它的語(yǔ)言特點(diǎn)外,我想對(duì)于大多數(shù)有比較豐富編程經(jīng)驗(yàn)的開(kāi)發(fā)人員來(lái)說(shuō)應(yīng)該可以輕松理解,他非常類似于微軟的DCOM。他有一個(gè)自己要存活要活動(dòng)的一個(gè)容器,為了可以讓客戶進(jìn)行透明調(diào)用,而不必關(guān)心位置,他還必須有一個(gè)本地和遠(yuǎn)程接口,同時(shí)還應(yīng)該有一個(gè)相關(guān)的配置文件,以便告訴容器她要怎樣的活法。對(duì)于開(kāi)發(fā)人員來(lái)說(shuō),如果采用一種集成化的開(kāi)發(fā)工具,如JBuilder,就可以大大減少工作量。在JBuilder中通過(guò)配置相關(guān)的服務(wù)器路徑、容器信息,我們可以通過(guò)它的模板來(lái)完成一個(gè)EJB組件的開(kāi)發(fā)以及分發(fā),非常方便也非常簡(jiǎn)單。

  在開(kāi)發(fā)過(guò)程中,建議的開(kāi)發(fā)方式是在會(huì)話bean內(nèi)部調(diào)用實(shí)體bean,因?yàn)閷?shí)體bean沒(méi)有狀態(tài)但是對(duì)數(shù)據(jù)庫(kù)的親和,而會(huì)話bean中有我們?yōu)榱丝刂瞥绦蚨枰纳舷挛男畔,因此,我們可以結(jié)合這兩種bean的所有優(yōu)點(diǎn),來(lái)比較輕松的進(jìn)行開(kāi)發(fā)。比如在會(huì)話bean中用實(shí)體bean進(jìn)行數(shù)據(jù)庫(kù)的訪問(wèn)同時(shí)會(huì)話bean用來(lái)保存客戶的上下文信息。

  J2EE各組成部分在開(kāi)發(fā)CRM應(yīng)用系統(tǒng)中的腳色

  我們已經(jīng)提到過(guò),開(kāi)發(fā)一個(gè)健壯的、可拓展的CRM應(yīng)用系統(tǒng)中的各個(gè)模塊,除了呼叫中心外我們都將采用瀏覽器/服務(wù)器模式。因此,下面的模式是除了呼叫中心模塊之外的方式:

  瀏覽器----〉Jsp腳本文件----調(diào)用----〉Servlet---調(diào)用---〉EJB----訪問(wèn)數(shù)據(jù)庫(kù)----〉處理返回。

  其中Jsp屬于前臺(tái)開(kāi)發(fā)人員進(jìn)行的開(kāi)發(fā)內(nèi)容,也就是提供給客戶的用戶界面,要求是美觀,使用性強(qiáng),便于操作;

  Servlet、EJB為后臺(tái)開(kāi)發(fā)人員開(kāi)發(fā)的具有可以重用性的包含商務(wù)邏輯的組件,也就是說(shuō),他們主要是進(jìn)行企業(yè)的商務(wù)邏輯的處理。要求是開(kāi)發(fā)的程序一定要健壯,充分注意到業(yè)務(wù)邏輯的獨(dú)立性與組合性。

  在開(kāi)發(fā)CRM系統(tǒng)時(shí),前面已經(jīng)說(shuō)過(guò),系統(tǒng)分析員自身對(duì)于J2EE技術(shù)的把握深度,對(duì)于CRM系統(tǒng)業(yè)務(wù)的理解程度將極大的決定了系統(tǒng)的成功與否。就是在做系統(tǒng)分析時(shí)一定要做到將功能完全細(xì)化到Servlet、EJB組件所封裝的商務(wù)邏輯中去,并且要反復(fù)論證其合理性與獨(dú)立性。

  J2EE各技術(shù)實(shí)現(xiàn)CRM應(yīng)用系統(tǒng)的特點(diǎn)

  Jsp相對(duì)來(lái)說(shuō)比較簡(jiǎn)單,但是在開(kāi)發(fā)過(guò)程中系統(tǒng)分析員一定要注意盡可能少地將商務(wù)邏輯放到Jsp文件中,有幾個(gè)原因,一是Jsp文件本身的可維護(hù)性比較差,尤其是如果不采用的方式的開(kāi)發(fā),將會(huì)極大的增加開(kāi)發(fā)與維護(hù)成本。因此,在前臺(tái)的Jsp開(kāi)發(fā)中首先要?jiǎng)澐殖霭婷,然后將版面分割成不同的部分,用不同的被包含文件?lái)最終組成用戶界面。另外要注意的一點(diǎn)是某些與程序邏輯實(shí)現(xiàn)無(wú)關(guān)的動(dòng)態(tài)內(nèi)容最好放在數(shù)據(jù)庫(kù)中,而不要放在文件中。所以在開(kāi)發(fā)前臺(tái)的Jsp文件時(shí)系統(tǒng)分析員要注意下面的幾個(gè)問(wèn)題:

  1)劃分版面的界面邏輯,用包含文件的方式給程序員確定開(kāi)發(fā)代碼;

  2)盡量不將商務(wù)邏輯放在Jsp文件中,所有的業(yè)務(wù)處理都要調(diào)用后臺(tái)的組件;

  3)當(dāng)涉及到的界面邏輯較多的時(shí)候,要給程序員設(shè)計(jì)JavaBean來(lái)進(jìn)行處理,而不是在Jsp文件中直接嵌入java代碼,否則會(huì)造成Jsp文件的可讀性非常差,維護(hù)與調(diào)試異常困難。

  Servlet作為在服務(wù)器后臺(tái)進(jìn)行處理的組件,除了業(yè)務(wù)上商務(wù)邏輯要獨(dú)立、完整、可組合的、準(zhǔn)確等的要求外,還有一個(gè)很重要的要求:就是線程安全性。顯然,我們都知道Servlet相比通用網(wǎng)關(guān)接口CGI有著明顯的優(yōu)點(diǎn)就是可以維護(hù)一個(gè)線程池,不用每一次都要?jiǎng)?chuàng)建一個(gè)新的線程,但是可能很多程序員都會(huì)意識(shí)不到一個(gè)經(jīng)常會(huì)遇到的問(wèn)題:實(shí)例變量在所有的線程之間是共享的,并且如果存在著Servlet鏈互調(diào)時(shí),就會(huì)發(fā)生數(shù)據(jù)錯(cuò)誤。因此系統(tǒng)分析員一定要鼓勵(lì)程序員多注意利用Java提供的方法(如聲明自己的類實(shí)現(xiàn)了Runnable接口或者采用同步synchronized技術(shù)等)解決線程的問(wèn)題,另外還要注意的是數(shù)據(jù)庫(kù)的連接問(wèn)題,因?yàn)槿绻l繁的訪問(wèn)數(shù)據(jù)庫(kù)會(huì)造成數(shù)據(jù)庫(kù)服務(wù)器的負(fù)擔(dān)同時(shí)使客戶端的回饋速度變慢,因此要注意利用預(yù)先分配連接并在釋放以后能夠回收的連接池。所以,在開(kāi)發(fā)Servlet也要注意下面的3個(gè)問(wèn)題:

  1)鼓勵(lì)程序員關(guān)注線程安全問(wèn)題(如采用聲明自己的類實(shí)現(xiàn)了Runnable接口或者采用同步synchronized技術(shù)等解決線程的問(wèn)題);

  2)數(shù)據(jù)庫(kù)的訪問(wèn)要充分利用JDBC技術(shù)的預(yù)先分配連接并在釋放以后能夠回收的連接池;

  3)鼓勵(lì)系統(tǒng)分析員將商務(wù)邏輯劃分成單個(gè)的獨(dú)立的可通用的可重用的商務(wù)邏輯組件,在實(shí)際的程序中通過(guò)Servlet鏈來(lái)完成某項(xiàng)商務(wù)邏輯。

  EJB實(shí)際上單就程序的寫(xiě)作方面要比Servlet簡(jiǎn)單的多,它使程序員只需要關(guān)心要實(shí)現(xiàn)的是甚麼就可以了,而不必關(guān)心事務(wù)的處理,底層的操作等等問(wèn)題。但是也還是有一些編程方面的要求:

  1)最好能夠在程序中將所有的static字段都聲明為final型的,這樣可以保證多個(gè)實(shí)例出現(xiàn)時(shí)語(yǔ)義的不一致問(wèn)題;

  2)注意線程問(wèn)題,同Servlet;

  3)不使用文件系統(tǒng)。EJB組件可以通過(guò)環(huán)境命名上下文用一種標(biāo)準(zhǔn)的方法進(jìn)行環(huán)境實(shí)體查詢,基本上是不用文件系統(tǒng)。

  4)禁用socket來(lái)進(jìn)行監(jiān)聽(tīng)和接收連接,或者用其進(jìn)行多路發(fā)送。

  5)不可能用awt函數(shù)來(lái)完成鍵盤的輸入和輸出,如果有的話,應(yīng)該是向控制臺(tái)輸出控制信息,因?yàn)榻M件是用來(lái)在服務(wù)器端完成某一項(xiàng)商務(wù)邏輯的。

三、技術(shù)層面控制J2EE平臺(tái)架構(gòu)開(kāi)發(fā)CRM的過(guò)程

  在J2EE平臺(tái)上開(kāi)發(fā)CRM應(yīng)用系統(tǒng),是一個(gè)非常優(yōu)秀的方案,一方面J2EE是一項(xiàng)比較成熟的技術(shù)規(guī)范,各大IT服務(wù)器、中間件廠商也都大力推崇并支持,盡管微軟大力推出.NET,但是畢竟.NET是一項(xiàng)新的技術(shù)規(guī)范,如果在其上進(jìn)行開(kāi)發(fā)的話,風(fēng)險(xiǎn)顯然要大得多,而J2EE目前卻正是在走向成熟。

  正像任何事情一樣,在先進(jìn)的J2EE平臺(tái)上開(kāi)發(fā)CRM應(yīng)用系統(tǒng)必須要有一個(gè)良好的實(shí)施過(guò)程,在這個(gè)過(guò)程當(dāng)中,有一個(gè)非常重要的腳色:系統(tǒng)分析員。系統(tǒng)分析員自身對(duì)于J2EE技術(shù)的掌握深度、對(duì)RM應(yīng)用系統(tǒng)的業(yè)務(wù)理解程度很大得影響了開(kāi)發(fā)的過(guò)程,甚至可以毫不夸張的說(shuō),系統(tǒng)分析員自身的素質(zhì)決定了開(kāi)發(fā)的成功與否,這是一個(gè)非常關(guān)鍵的因素。 首先是系統(tǒng)分析員對(duì)于客戶的需求的理解程度,只有深入的理解了客戶的需求,才能夠?qū)⑸虅?wù)邏輯很好的劃分;其次是系統(tǒng)分析員的思維是否嚴(yán)密,是否嚴(yán)謹(jǐn),是否具有很強(qiáng)的邏輯思維能力,因?yàn)檫@涉及到將商務(wù)邏輯進(jìn)一步細(xì)化成獨(dú)立的可重用的業(yè)務(wù)邏輯與使用邏輯。第三是其是否對(duì)于J2EE技術(shù)有著非常深的掌握,這是實(shí)施CRM的另外一個(gè)重要之處,因?yàn)樵谡麄(gè)的開(kāi)發(fā)過(guò)程中,其實(shí)重心就在服務(wù)器端組件的開(kāi)發(fā)上,一個(gè)系統(tǒng)能否穩(wěn)定,高效的運(yùn)行,很大程度上取決于開(kāi)發(fā)技術(shù)上是否規(guī)范與合理,而系統(tǒng)分析員在實(shí)施編碼階段的主要職責(zé)就是負(fù)責(zé)檢查程序員的程序代碼。

  在開(kāi)發(fā)過(guò)程中另外一個(gè)注意的是開(kāi)發(fā)人員的分工。在J2EE平臺(tái)上的開(kāi)發(fā)與一般的軟件開(kāi)發(fā)概念不同,它有著嚴(yán)格的分工:

  1)系統(tǒng)分析員;

  2)后臺(tái)組件開(kāi)發(fā)程序員(主要是Servlet與EJB);

  3)后臺(tái)服務(wù)器實(shí)施技術(shù)人員(主要負(fù)責(zé)組件的管理);

  4)后臺(tái)組件測(cè)試人員;

  5)前臺(tái)用戶界面程序員(主要是jsp程序員+美工);

  6)前臺(tái)測(cè)試技術(shù)人員;

  在實(shí)際的實(shí)施過(guò)程中,后臺(tái)服務(wù)器實(shí)施技術(shù)人員可以充當(dāng)后臺(tái)組件測(cè)試人員的腳色,同樣,前臺(tái)用戶界面程序員可以充當(dāng)前臺(tái)測(cè)試技術(shù)人員,因?yàn)樗捻?yè)面中所包含的邏輯比較少。

  總結(jié)一下,關(guān)鍵的幾點(diǎn):

  1、商務(wù)邏輯一定要?jiǎng)澐值姆浅:侠,原則是一個(gè)組件中應(yīng)該只含有一種商務(wù)邏輯,一般的商務(wù)邏輯應(yīng)該是通過(guò)幾個(gè)組件的協(xié)同合作來(lái)實(shí)現(xiàn)的(如何劃分,如何組合就是看系統(tǒng)分析員的功底了。

  2、分工一定要明確,除了上面所列出的腳色充當(dāng)之外,盡量避免前臺(tái)程序員與后臺(tái)程序員的腳色互換,否則很可能造成商務(wù)邏輯組件之間的耦合,而這是絕對(duì)不允許的,否則隨著開(kāi)發(fā)過(guò)程的進(jìn)行,就會(huì)發(fā)現(xiàn)越來(lái)越難以控制應(yīng)用的開(kāi)發(fā)。所以在開(kāi)發(fā)過(guò)程中一定要注意組件的商務(wù)邏輯的獨(dú)立性與唯一性,系統(tǒng)分析員和項(xiàng)目負(fù)責(zé)人一定要嚴(yán)格把關(guān),這一點(diǎn)非常非常重要。

四、國(guó)內(nèi)CRM系統(tǒng)目前存在的問(wèn)題以及采用J2EE技術(shù)進(jìn)行的解決方案

  我們研究過(guò)國(guó)內(nèi)幾家CRM系統(tǒng),學(xué)習(xí)到很多的東西,但同時(shí)也發(fā)現(xiàn)一些問(wèn)題,現(xiàn)在舉幾個(gè)例子:
  1. 大而全,但是各個(gè)功能做的太過(guò)于簡(jiǎn)單,無(wú)法實(shí)用。


  2. 缺乏集成能力,無(wú)法將網(wǎng)頁(yè)、電郵、電話、傳真等集成。


  3. 沒(méi)有與客戶的互動(dòng)渠道。
  就這三個(gè)原因,是因?yàn)樵谡麄(gè)的設(shè)計(jì)上偏離了以客戶為中心的原則,沒(méi)有將客戶的需求詳細(xì)、完整的劃分成個(gè)體的、獨(dú)立的功能組件,沒(méi)有將各個(gè)功能做成是以客戶為核心的插件,再加上如開(kāi)發(fā)成本的壓力等。而如果是采用J2EE,并且嚴(yán)格的按照合理劃分的組件的方式來(lái)進(jìn)行開(kāi)發(fā),就會(huì)解決或者避免或者減輕這些問(wèn)題。比如,在開(kāi)發(fā)完銷售模塊與服務(wù)模塊的組件之后,電子商務(wù)模塊基本上也就完成,只需要少許的其它組件就可以完成一個(gè)電子商務(wù)模塊。

賽迪網(wǎng)技術(shù)社區(qū)



相關(guān)鏈接:
CIO應(yīng)如何為CRM做好預(yù)算? 2007-06-22
從制度層面看房地產(chǎn)CRM項(xiàng)目的建設(shè) 2007-06-22
SaaS:CRM的新前沿 2007-06-21
SAP CRM 系統(tǒng)中的電子商務(wù)功能面面觀 2007-06-20
CRM系統(tǒng)在電子商務(wù)中的具體應(yīng)用及研究 2007-06-19

分類信息: