基于Android的自定制CRM軟件設(shè)計
摘要:為了縮短CRM軟件的開發(fā)進程,提高軟件的后臺升級和維護能力,提出了一種基于Android系統(tǒng)的自定義界面的設(shè)計方法。采用 JavaScript腳本語言控制流程步驟、表單元數(shù)據(jù)間的數(shù)據(jù)邏輯,建立自定義表單界面解析引擎,實現(xiàn)了CRM軟件的自定義功能模版由中心后臺配置管理。分析結(jié)果表明,該設(shè)計方法能夠有效地縮短軟件的研發(fā)周期,幫助開發(fā)者快速地按需定制較為成熟的CRM軟件原型。
本文引用地址:http://m.butianyuan.cn/article/201610/307832.htm關(guān)鍵詞:客戶關(guān)系管理;Andmid平臺;JavaSeript解析;自定制表單
近年來,我國信息技術(shù)的迅猛發(fā)展和信息化水平的不斷提高,給傳統(tǒng)管理方式向信息化、系統(tǒng)化、集成化的轉(zhuǎn)變創(chuàng)造了良好的條件,CRM(Customer Relationship Manageme nt,客戶關(guān)系管理)系統(tǒng)應(yīng)運而生。但僅僅引進CRM系統(tǒng)并不意味著公司直接步入了制度化、自動化的業(yè)務(wù)流程。只有對業(yè)務(wù)流程進行持續(xù)改進,才能確保 CRM技術(shù)能融入到變革流程中。由于市場數(shù)據(jù)異常龐大,定性確定業(yè)務(wù)邏輯也較為復(fù)雜,往往需要重復(fù)的使用與更改才能確定系統(tǒng)的根本大綱。這直接導(dǎo)致了軟件開發(fā)周期的極大延長。為了避免多次開發(fā)所造成的研發(fā)時間延長和市場響應(yīng)速度降低,本文建立了業(yè)務(wù)流程處理元模型,提出了一種基于Android系統(tǒng)的 CRM軟件自定義界面的設(shè)計方法,解決了傳統(tǒng)CRM系統(tǒng)開發(fā)過程周期長、成本高、復(fù)用率低等問題。幫助企業(yè)管理人員通過該系統(tǒng)快速了解、掌握和傳遞市場信息,確保市場信息的時效性、實用性和價值性。
Android是美國谷歌開發(fā)的適用于便攜產(chǎn)品使用的軟件平臺。本文在研究過程中考慮到CRM系統(tǒng)的實時性、高效性、高可拓展性等特點,充分利用 Android操作系統(tǒng)擴展性、可移植性、易維護和開源等,將兩者結(jié)合起來可使系統(tǒng)具有兼容性強、穩(wěn)定性高、跨平臺、低成本、易于維護和升級等優(yōu)點。
1 系統(tǒng)總體結(jié)構(gòu)
該系統(tǒng)主要由瀏覽器客戶端、服務(wù)器端和手持終端(Android操作系統(tǒng))三部分組成。瀏覽器客戶端主要對業(yè)務(wù)流程及管理邏輯進行定義,將定義模板存入服務(wù)器端數(shù)據(jù)庫,而手持端向數(shù)據(jù)庫請求模板并進行解析和顯示。系統(tǒng)的總體框架圖如圖1所示。
企業(yè)管理者通過統(tǒng)籌本企業(yè)的業(yè)務(wù)方向并結(jié)合具體市場運營狀況,定制業(yè)務(wù)員的業(yè)務(wù)訪問流程和規(guī)范,如:信息管理、門店拜訪流程。開發(fā)人員了解到具體的操作規(guī)范,整理為操作模板,通過瀏覽器客戶端進行模板配置,模板數(shù)據(jù)以Jason對象組幀存入到服務(wù)器數(shù)據(jù)庫中。
業(yè)務(wù)員通過手持終端的CRM軟件向服務(wù)器數(shù)據(jù)庫請求具體的操作模板,并由模板解析器將具體模板按照需求解析并顯示,業(yè)務(wù)員即可通過手持端軟件進行客戶信息管理、門
店拜訪等相關(guān)操作。
2 系統(tǒng)軟件設(shè)計
2.1 前端設(shè)計
系統(tǒng)網(wǎng)站前端采用了當(dāng)前互聯(lián)網(wǎng)上比較流行的富客戶端MVC設(shè)計模式,即前端頁面的功能比較強大,采用目前在企業(yè)ERP Web程序中比較流行的EXT JS框架進行開發(fā),該框架具有豐富的界面組件與接口,通過它能開發(fā)出接近于桌面應(yīng)用程序用戶界面的網(wǎng)頁頁面,可以給用戶以良好的用戶體驗。同時前端頁面全部通過AJAX的模式向后臺服務(wù)器發(fā)送請求,可以不影響用戶操作的方式異步請求響應(yīng),從而有效地減低了響應(yīng)時間與服務(wù)的負擔(dān)。
具體的設(shè)計上,系統(tǒng)平臺前端又采用了插件式的模塊加載方式,各個具體功能模塊對應(yīng)的JS文件通過動態(tài)創(chuàng)建Script元素的方式加載,采用的是LAZY LOAD的方式,即主頁面加載時并不下載各具體模塊的JS文件,只有在點擊具體功能時才動態(tài)加載,這樣可以有效地提高系統(tǒng)啟動速度,給用戶以良好的體驗。
2.2 后端設(shè)計
系統(tǒng)網(wǎng)站后端的控制層設(shè)計的非常簡單,它的主要功能就是接受前端發(fā)送來的AJAX請求,并從中提取出請求的參數(shù)內(nèi)容,并將這些參數(shù)傳入對應(yīng)的存儲過程進行處理,然后將存儲過程返回的結(jié)果組成Jason格式的數(shù)據(jù)返回給前端。
后端的功能非常簡單,幾乎不涉及任何具體的業(yè)務(wù)邏輯,也不負責(zé)改變前端顯示,它唯一的作用是聯(lián)系顯示層與數(shù)據(jù)庫持久層。這種設(shè)計的目的就是減低網(wǎng)站重新部署的工作量(后端代碼改變后需要重新編譯部署,重啟網(wǎng)站服務(wù)器,而前端的JS文件和數(shù)據(jù)庫的存儲過程修改后可以立即使用)。
2.3 數(shù)據(jù)庫
本系統(tǒng)對業(yè)務(wù)邏輯的處理基本上集中于數(shù)據(jù)庫的存儲過程,這樣做的優(yōu)點是:首先大量減少了網(wǎng)站服務(wù)器與數(shù)據(jù)庫服務(wù)器之間的數(shù)據(jù)通訊量;其次,由于存儲過程都經(jīng)過了預(yù)編譯,緩存了執(zhí)行計劃,所以執(zhí)行起來速度比直接執(zhí)行SQL語句快得多;最后,可以向網(wǎng)站應(yīng)用服務(wù)器屏蔽底層的數(shù)據(jù)結(jié)構(gòu),底層表變化時可以減少前端與后端代碼的修改。減少部署的工作量,加快對客戶的響應(yīng)速度;存儲過程修改后應(yīng)用程序服務(wù)器不需要重啟。通過了解具體的操作規(guī)范,進行拜訪模板定義,主要的拜訪模版表定義如下:
2.4 終端軟件設(shè)計
該軟件客戶端采用Android平臺。在總體設(shè)計上采用軟件分層的方法,分為框架層和應(yīng)用層。軟件架構(gòu)如圖2。
1)應(yīng)用層
該軟件的UI設(shè)計嚴格按照交互設(shè)計原型進行開發(fā),并對關(guān)鍵公共部分視圖做抽象處理。完整繼承Activity的生命周期Activity與Activity之間杜絕采用藕合的接口調(diào)用數(shù)據(jù)
方式,所有數(shù)據(jù)交互必須采用Intent進行傳遞,保證各Activity數(shù)據(jù)的獨立性。為了使類變量不被外部引用,所有Aetivity中的基本類型 (int,long,short,byte,boolean,char等)的類變量、實例變量都定義為私有變量,盡量少用或不用類變量,非基本類型的變量視情況而定。另外這些基本類型變量都必須用onSaveInstanceState和onRestore Ins tance State進行備份和恢復(fù)。當(dāng)界面被內(nèi)存回收后能夠重繪界面控件并加載控件值,提升用戶體驗。其他所有界面都繼承該公共類,使得軟件界面風(fēng)格一致,便于統(tǒng)一管理與修改。
軟件的邏輯層封裝主要體現(xiàn)在Task與Setvice的設(shè)計。在業(yè)務(wù)員使用軟件進行相關(guān)業(yè)務(wù)操作時,將會不時地請求、查詢服務(wù)器后臺數(shù)據(jù),所以業(yè)務(wù)請求和中心下發(fā)數(shù)據(jù)的解析處理,是業(yè)務(wù)邏輯的重要一環(huán)。對Task進行重新設(shè)計和封裝,采用公共的句柄Handle用以處理Task所需要發(fā)送對象,返回類,回調(diào)方法,重傳次數(shù),超時時間等關(guān)鍵變量。另外,Android中提供了Service組件可進行后臺運行和跨進程訪問。通過啟動一個服務(wù),可以在不顯示界面的前提下在后臺運行指定的任務(wù),這樣不會對當(dāng)前客戶操作行為產(chǎn)生影響。抽象出基礎(chǔ)服務(wù)類并定義基本的創(chuàng)建、啟動、銷毀等事件方法,由各個指定業(yè)務(wù)的服務(wù)繼承該基礎(chǔ)類用以管理特定業(yè)務(wù)對象的數(shù)據(jù)后臺管理。
數(shù)據(jù)存儲作為軟件執(zhí)行流程的必備功能模塊,系統(tǒng)主要采用了Preterene和Android自帶的SQLite輕量級數(shù)據(jù)庫兩張方式用于數(shù)據(jù)存儲管理。其中,Preference用以存儲系統(tǒng)公共參數(shù);SQLite數(shù)據(jù)庫用以存儲用戶的基礎(chǔ)數(shù)據(jù)和拜訪數(shù)據(jù)等。數(shù)據(jù)層中不包含任何的業(yè)務(wù)邏輯結(jié)構(gòu)和界面顯示特性的需求,僅僅提供各數(shù)據(jù)庫表中存儲的基本數(shù)據(jù)信息。即,該層不能調(diào)用邏輯層與UI層代碼,充分隔離數(shù)據(jù)管理與界面和邏輯層。支持上層調(diào)用下層,而下層不允許訪問上層。有效降低各功能模塊耦合度,細化軟件模塊的劃分,提高可拓展性。
2)框架層
框架層的設(shè)計主要是對于與服務(wù)器后臺數(shù)據(jù)交互的完善。包含有通訊設(shè)計、協(xié)議解析設(shè)計。通訊設(shè)計主要采用了Android中提供的 HttpURLConnection和HttpClient接口。系統(tǒng)在繼承HttpUrIConnection的基礎(chǔ)上,繼續(xù)完善通用的接口功能模塊,支持根據(jù)業(yè)務(wù)模式自動切換網(wǎng)關(guān)等,支持重傳機制和超時控制,完善網(wǎng)絡(luò)錯誤提示和出錯處理;協(xié)議解析主要采用JSON格式和二進制流兩種格式。每條協(xié)議單獨一個文件,同所在業(yè)務(wù)模塊放在同一個包下。協(xié)議文件以協(xié)議號進行命名,分上行和下行兩種。協(xié)議的組幀和解析必須用對象進行處理。所有協(xié)議的設(shè)計必須符合協(xié)議要求,盡量設(shè)計成一個對象。支持采用FastJason技術(shù)進行自動解析,達到減少工作量的目的。并且可以快速響應(yīng)協(xié)議的修改,而修改工作量不大。
2.5 JavaScript解析引擎
以上的設(shè)計方案為實現(xiàn)自定軟件配置數(shù)據(jù)、業(yè)務(wù)數(shù)據(jù)的傳送解析提供了框架基礎(chǔ),能夠滿足數(shù)據(jù)傳送的時效性,保證管理者對終端軟件的實時掌控,具有較強的系統(tǒng)變更能力。余下的關(guān)鍵問題在于終端軟件如何對接收到的模板數(shù)據(jù)進行視圖展示并建立控件聯(lián)系,因為表單中控件數(shù)量繁多,其復(fù)雜屬性根本無法通過語言描述和類型劃分來實現(xiàn),為解決這一難點,我們將其復(fù)雜的業(yè)務(wù)邏輯控制使用JavaSeript語言實現(xiàn)。在JayaScript解析引擎的基本框架上構(gòu)建實現(xiàn)銷售子系統(tǒng)業(yè)務(wù)流和自定義表單的界面解析引擎和邏輯處理引擎。
1)視圖解析引擎
中心下發(fā)數(shù)據(jù)通過。JSON解析后,存儲數(shù)據(jù)在本地數(shù)據(jù)庫中,建立與中心相對應(yīng)的模板表:Table_Scheme、Table_Step、 Table_Ctrl。界面解析引擎采用流式布局的方法,依次對各級組件進行解析展示。在獲取組件屬性信息后,根據(jù)其相關(guān)類別,建立模板、步驟、控件視圖,各組件的繼承關(guān)系通過主鍵值進行關(guān)聯(lián)。為了簡化其創(chuàng)建流程機制,該視圖解析引擎先剝離了所有的邏輯屬性需要,僅僅實現(xiàn)組件的頁面效果展示,而將復(fù)雜的邏輯處理讓邏輯處理引擎在后臺執(zhí)行。這種設(shè)計方案能夠功能界面的實現(xiàn)快速展示,而無需考慮各種復(fù)雜邏輯的交叉影響,大大縮減了視圖展示的啟動時間,具有良好的用戶體驗效果。
2)邏輯處理引擎
邏輯處理引擎主要解決各組件的內(nèi)在聯(lián)系。因為在組件的邏輯控制需要在Android環(huán)境下對JavaScript語言的動態(tài)編譯,在開發(fā)和運行基于GUI 的應(yīng)用程序時尤其有效。在此基礎(chǔ)上,邏輯處理引擎構(gòu)建Android平臺下幾乎所有簡單控件的監(jiān)聽事件ListenerType,根據(jù)組件的配置需要來判斷是否執(zhí)行相關(guān)腳本,其腳本內(nèi)容CtrlListener以文本形式存放在屬性字段中,通過Rhino實現(xiàn)Android平臺對JavaScript代碼的執(zhí)行,同樣,在JavaScript執(zhí)行代碼中往往也存在對Android平臺信息的調(diào)用執(zhí)行,平臺層提供了CallContext提供了視圖控件值獲取、寫入,數(shù)據(jù)庫訪問等各項操作接口給JavaScript,同時也支持其定義的Event事件進行操作。
2.6 應(yīng)用分析
根據(jù)元模型定義,可以定制一個“實時匯報”的功能模塊。通過瀏覽器客戶端的規(guī)范操作和輸入,可生成模板配置數(shù)據(jù)源存儲于服務(wù)器端,當(dāng)手持端通過HTTP發(fā)起模板下發(fā)請求時,服務(wù)器端即可下發(fā)Jason組幀的源數(shù)據(jù),用以配置手持段軟件的具體執(zhí)行規(guī)范模板。元模型和數(shù)據(jù)源示例如下:
通過配置數(shù)據(jù)源可以看出“實時匯報”功能含有一個“工作日志”步驟,步驟中的界面展示兩個控件,其中:“匯報時間”為文本框,定義了單擊事件用以獲取系統(tǒng)的當(dāng)前時間方法:“匯報內(nèi)容”控件為編輯框并且其最大輸入長度為200個字節(jié)。另外,還可以給選擇時間文本框加上時間選擇限制,如不能大于當(dāng)前時間。只需為其屬性的數(shù)據(jù)源CTRL _FUN_NAME、CTRL_FUN_BODY分別添加如下定義:
上述是一個非常簡單的功能模塊,各企業(yè)根據(jù)具體業(yè)務(wù)場景的需要,可以添加諸如:“考勤管理”、“門店管理”、“門店拜訪”等各種功能。在添加功能或更改業(yè)務(wù)流程的過程中,只需從瀏覽器客戶端進行模板定義的修改,服務(wù)器可根據(jù)重新配置的元模型更新數(shù)據(jù)源,通過無線網(wǎng)絡(luò)下發(fā)至手持端軟件即可實現(xiàn)業(yè)務(wù)流程的更新和改善,且各基礎(chǔ)功能的模板定義具有較強的通用性,可以相互借鑒引用。在業(yè)務(wù)邏輯復(fù)雜的情況下,企業(yè)管理者可以根據(jù)業(yè)務(wù)員使用過程中反饋的具體情況,不斷調(diào)整各模板流程的控制規(guī)則和流動關(guān)系,通過服務(wù)器后臺進行靈活的維護管理,以達到最佳的使用效果,且在此過程中完全不涉及軟件的二次開發(fā),也無須支付高昂的二次開發(fā)或升級維護費用,其市場響應(yīng)速度也大大提高。
3 結(jié)束語
本文設(shè)計的自定制CRM軟件結(jié)合了Android操作系統(tǒng)的優(yōu)秀特性,可以在Android手機、平板等終端設(shè)備上良好地使用。通過瀏覽器客戶端的簡單地配置即可生成一個相對成熟的CRM軟件原型,該軟件可以滿足絕大部分的業(yè)務(wù)需求的操作流程模板,當(dāng)有特定控件展示,只需添加具體業(yè)務(wù)邏輯控件及即可迅速客戶需求的改動,大大減少了系統(tǒng)營運的維護成本與二次開發(fā)成本。能夠在短時間內(nèi)快速響應(yīng)市場變化并做出改進,為企業(yè)實現(xiàn)高效、精準的客戶關(guān)系管理。
評論