基于A(yíng)ndroid的自定制CRM軟件設計
摘要:為了縮短CRM軟件的開(kāi)發(fā)進(jìn)程,提高軟件的后臺升級和維護能力,提出了一種基于A(yíng)ndroid系統的自定義界面的設計方法。采用 JavaScript腳本語(yǔ)言控制流程步驟、表單元數據間的數據邏輯,建立自定義表單界面解析引擎,實(shí)現了CRM軟件的自定義功能模版由中心后臺配置管理。分析結果表明,該設計方法能夠有效地縮短軟件的研發(fā)周期,幫助開(kāi)發(fā)者快速地按需定制較為成熟的CRM軟件原型。
本文引用地址:http://dyxdggzs.com/article/201610/307832.htm關(guān)鍵詞:客戶(hù)關(guān)系管理;Andmid平臺;JavaSeript解析;自定制表單
近年來(lái),我國信息技術(shù)的迅猛發(fā)展和信息化水平的不斷提高,給傳統管理方式向信息化、系統化、集成化的轉變創(chuàng )造了良好的條件,CRM(Customer Relationship Manageme nt,客戶(hù)關(guān)系管理)系統應運而生。但僅僅引進(jìn)CRM系統并不意味著(zhù)公司直接步入了制度化、自動(dòng)化的業(yè)務(wù)流程。只有對業(yè)務(wù)流程進(jìn)行持續改進(jìn),才能確保 CRM技術(shù)能融入到變革流程中。由于市場(chǎng)數據異常龐大,定性確定業(yè)務(wù)邏輯也較為復雜,往往需要重復的使用與更改才能確定系統的根本大綱。這直接導致了軟件開(kāi)發(fā)周期的極大延長(cháng)。為了避免多次開(kāi)發(fā)所造成的研發(fā)時(shí)間延長(cháng)和市場(chǎng)響應速度降低,本文建立了業(yè)務(wù)流程處理元模型,提出了一種基于A(yíng)ndroid系統的 CRM軟件自定義界面的設計方法,解決了傳統CRM系統開(kāi)發(fā)過(guò)程周期長(cháng)、成本高、復用率低等問(wèn)題。幫助企業(yè)管理人員通過(guò)該系統快速了解、掌握和傳遞市場(chǎng)信息,確保市場(chǎng)信息的時(shí)效性、實(shí)用性和價(jià)值性。
Android是美國谷歌開(kāi)發(fā)的適用于便攜產(chǎn)品使用的軟件平臺。本文在研究過(guò)程中考慮到CRM系統的實(shí)時(shí)性、高效性、高可拓展性等特點(diǎn),充分利用 Android操作系統擴展性、可移植性、易維護和開(kāi)源等,將兩者結合起來(lái)可使系統具有兼容性強、穩定性高、跨平臺、低成本、易于維護和升級等優(yōu)點(diǎn)。
1 系統總體結構
該系統主要由瀏覽器客戶(hù)端、服務(wù)器端和手持終端(Android操作系統)三部分組成。瀏覽器客戶(hù)端主要對業(yè)務(wù)流程及管理邏輯進(jìn)行定義,將定義模板存入服務(wù)器端數據庫,而手持端向數據庫請求模板并進(jìn)行解析和顯示。系統的總體框架圖如圖1所示。

企業(yè)管理者通過(guò)統籌本企業(yè)的業(yè)務(wù)方向并結合具體市場(chǎng)運營(yíng)狀況,定制業(yè)務(wù)員的業(yè)務(wù)訪(fǎng)問(wèn)流程和規范,如:信息管理、門(mén)店拜訪(fǎng)流程。開(kāi)發(fā)人員了解到具體的操作規范,整理為操作模板,通過(guò)瀏覽器客戶(hù)端進(jìn)行模板配置,模板數據以Jason對象組幀存入到服務(wù)器數據庫中。
業(yè)務(wù)員通過(guò)手持終端的CRM軟件向服務(wù)器數據庫請求具體的操作模板,并由模板解析器將具體模板按照需求解析并顯示,業(yè)務(wù)員即可通過(guò)手持端軟件進(jìn)行客戶(hù)信息管理、門(mén)
店拜訪(fǎng)等相關(guān)操作。
2 系統軟件設計
2.1 前端設計
系統網(wǎng)站前端采用了當前互聯(lián)網(wǎng)上比較流行的富客戶(hù)端MVC設計模式,即前端頁(yè)面的功能比較強大,采用目前在企業(yè)ERP Web程序中比較流行的EXT JS框架進(jìn)行開(kāi)發(fā),該框架具有豐富的界面組件與接口,通過(guò)它能開(kāi)發(fā)出接近于桌面應用程序用戶(hù)界面的網(wǎng)頁(yè)頁(yè)面,可以給用戶(hù)以良好的用戶(hù)體驗。同時(shí)前端頁(yè)面全部通過(guò)AJAX的模式向后臺服務(wù)器發(fā)送請求,可以不影響用戶(hù)操作的方式異步請求響應,從而有效地減低了響應時(shí)間與服務(wù)的負擔。
具體的設計上,系統平臺前端又采用了插件式的模塊加載方式,各個(gè)具體功能模塊對應的JS文件通過(guò)動(dòng)態(tài)創(chuàng )建Script元素的方式加載,采用的是LAZY LOAD的方式,即主頁(yè)面加載時(shí)并不下載各具體模塊的JS文件,只有在點(diǎn)擊具體功能時(shí)才動(dòng)態(tài)加載,這樣可以有效地提高系統啟動(dòng)速度,給用戶(hù)以良好的體驗。
2.2 后端設計
系統網(wǎng)站后端的控制層設計的非常簡(jiǎn)單,它的主要功能就是接受前端發(fā)送來(lái)的AJAX請求,并從中提取出請求的參數內容,并將這些參數傳入對應的存儲過(guò)程進(jìn)行處理,然后將存儲過(guò)程返回的結果組成Jason格式的數據返回給前端。
后端的功能非常簡(jiǎn)單,幾乎不涉及任何具體的業(yè)務(wù)邏輯,也不負責改變前端顯示,它唯一的作用是聯(lián)系顯示層與數據庫持久層。這種設計的目的就是減低網(wǎng)站重新部署的工作量(后端代碼改變后需要重新編譯部署,重啟網(wǎng)站服務(wù)器,而前端的JS文件和數據庫的存儲過(guò)程修改后可以立即使用)。
2.3 數據庫
本系統對業(yè)務(wù)邏輯的處理基本上集中于數據庫的存儲過(guò)程,這樣做的優(yōu)點(diǎn)是:首先大量減少了網(wǎng)站服務(wù)器與數據庫服務(wù)器之間的數據通訊量;其次,由于存儲過(guò)程都經(jīng)過(guò)了預編譯,緩存了執行計劃,所以執行起來(lái)速度比直接執行SQL語(yǔ)句快得多;最后,可以向網(wǎng)站應用服務(wù)器屏蔽底層的數據結構,底層表變化時(shí)可以減少前端與后端代碼的修改。減少部署的工作量,加快對客戶(hù)的響應速度;存儲過(guò)程修改后應用程序服務(wù)器不需要重啟。通過(guò)了解具體的操作規范,進(jìn)行拜訪(fǎng)模板定義,主要的拜訪(fǎng)模版表定義如下:

2.4 終端軟件設計
該軟件客戶(hù)端采用Android平臺。在總體設計上采用軟件分層的方法,分為框架層和應用層。軟件架構如圖2。

1)應用層
該軟件的UI設計嚴格按照交互設計原型進(jìn)行開(kāi)發(fā),并對關(guān)鍵公共部分視圖做抽象處理。完整繼承Activity的生命周期A(yíng)ctivity與Activity之間杜絕采用藕合的接口調用數據
方式,所有數據交互必須采用Intent進(jìn)行傳遞,保證各Activity數據的獨立性。為了使類(lèi)變量不被外部引用,所有Aetivity中的基本類(lèi)型 (int,long,short,byte,boolean,char等)的類(lèi)變量、實(shí)例變量都定義為私有變量,盡量少用或不用類(lèi)變量,非基本類(lèi)型的變量視情況而定。另外這些基本類(lèi)型變量都必須用onSaveInstanceState和onRestore Ins tance State進(jìn)行備份和恢復。當界面被內存回收后能夠重繪界面控件并加載控件值,提升用戶(hù)體驗。其他所有界面都繼承該公共類(lèi),使得軟件界面風(fēng)格一致,便于統一管理與修改。
軟件的邏輯層封裝主要體現在Task與Setvice的設計。在業(yè)務(wù)員使用軟件進(jìn)行相關(guān)業(yè)務(wù)操作時(shí),將會(huì )不時(shí)地請求、查詢(xún)服務(wù)器后臺數據,所以業(yè)務(wù)請求和中心下發(fā)數據的解析處理,是業(yè)務(wù)邏輯的重要一環(huán)。對Task進(jìn)行重新設計和封裝,采用公共的句柄Handle用以處理Task所需要發(fā)送對象,返回類(lèi),回調方法,重傳次數,超時(shí)時(shí)間等關(guān)鍵變量。另外,Android中提供了Service組件可進(jìn)行后臺運行和跨進(jìn)程訪(fǎng)問(wèn)。通過(guò)啟動(dòng)一個(gè)服務(wù),可以在不顯示界面的前提下在后臺運行指定的任務(wù),這樣不會(huì )對當前客戶(hù)操作行為產(chǎn)生影響。抽象出基礎服務(wù)類(lèi)并定義基本的創(chuàng )建、啟動(dòng)、銷(xiāo)毀等事件方法,由各個(gè)指定業(yè)務(wù)的服務(wù)繼承該基礎類(lèi)用以管理特定業(yè)務(wù)對象的數據后臺管理。
數據存儲作為軟件執行流程的必備功能模塊,系統主要采用了Preterene和Android自帶的SQLite輕量級數據庫兩張方式用于數據存儲管理。其中,Preference用以存儲系統公共參數;SQLite數據庫用以存儲用戶(hù)的基礎數據和拜訪(fǎng)數據等。數據層中不包含任何的業(yè)務(wù)邏輯結構和界面顯示特性的需求,僅僅提供各數據庫表中存儲的基本數據信息。即,該層不能調用邏輯層與UI層代碼,充分隔離數據管理與界面和邏輯層。支持上層調用下層,而下層不允許訪(fǎng)問(wèn)上層。有效降低各功能模塊耦合度,細化軟件模塊的劃分,提高可拓展性。
2)框架層
框架層的設計主要是對于與服務(wù)器后臺數據交互的完善。包含有通訊設計、協(xié)議解析設計。通訊設計主要采用了Android中提供的 HttpURLConnection和HttpClient接口。系統在繼承HttpUrIConnection的基礎上,繼續完善通用的接口功能模塊,支持根據業(yè)務(wù)模式自動(dòng)切換網(wǎng)關(guān)等,支持重傳機制和超時(shí)控制,完善網(wǎng)絡(luò )錯誤提示和出錯處理;協(xié)議解析主要采用JSON格式和二進(jìn)制流兩種格式。每條協(xié)議單獨一個(gè)文件,同所在業(yè)務(wù)模塊放在同一個(gè)包下。協(xié)議文件以協(xié)議號進(jìn)行命名,分上行和下行兩種。協(xié)議的組幀和解析必須用對象進(jìn)行處理。所有協(xié)議的設計必須符合協(xié)議要求,盡量設計成一個(gè)對象。支持采用FastJason技術(shù)進(jìn)行自動(dòng)解析,達到減少工作量的目的。并且可以快速響應協(xié)議的修改,而修改工作量不大。
2.5 JavaScript解析引擎
以上的設計方案為實(shí)現自定軟件配置數據、業(yè)務(wù)數據的傳送解析提供了框架基礎,能夠滿(mǎn)足數據傳送的時(shí)效性,保證管理者對終端軟件的實(shí)時(shí)掌控,具有較強的系統變更能力。余下的關(guān)鍵問(wèn)題在于終端軟件如何對接收到的模板數據進(jìn)行視圖展示并建立控件聯(lián)系,因為表單中控件數量繁多,其復雜屬性根本無(wú)法通過(guò)語(yǔ)言描述和類(lèi)型劃分來(lái)實(shí)現,為解決這一難點(diǎn),我們將其復雜的業(yè)務(wù)邏輯控制使用JavaSeript語(yǔ)言實(shí)現。在JayaScript解析引擎的基本框架上構建實(shí)現銷(xiāo)售子系統業(yè)務(wù)流和自定義表單的界面解析引擎和邏輯處理引擎。
1)視圖解析引擎
中心下發(fā)數據通過(guò)。JSON解析后,存儲數據在本地數據庫中,建立與中心相對應的模板表:Table_Scheme、Table_Step、 Table_Ctrl。界面解析引擎采用流式布局的方法,依次對各級組件進(jìn)行解析展示。在獲取組件屬性信息后,根據其相關(guān)類(lèi)別,建立模板、步驟、控件視圖,各組件的繼承關(guān)系通過(guò)主鍵值進(jìn)行關(guān)聯(lián)。為了簡(jiǎn)化其創(chuàng )建流程機制,該視圖解析引擎先剝離了所有的邏輯屬性需要,僅僅實(shí)現組件的頁(yè)面效果展示,而將復雜的邏輯處理讓邏輯處理引擎在后臺執行。這種設計方案能夠功能界面的實(shí)現快速展示,而無(wú)需考慮各種復雜邏輯的交叉影響,大大縮減了視圖展示的啟動(dòng)時(shí)間,具有良好的用戶(hù)體驗效果。
2)邏輯處理引擎
邏輯處理引擎主要解決各組件的內在聯(lián)系。因為在組件的邏輯控制需要在A(yíng)ndroid環(huán)境下對JavaScript語(yǔ)言的動(dòng)態(tài)編譯,在開(kāi)發(fā)和運行基于GUI 的應用程序時(shí)尤其有效。在此基礎上,邏輯處理引擎構建Android平臺下幾乎所有簡(jiǎn)單控件的監聽(tīng)事件ListenerType,根據組件的配置需要來(lái)判斷是否執行相關(guān)腳本,其腳本內容CtrlListener以文本形式存放在屬性字段中,通過(guò)Rhino實(shí)現Android平臺對JavaScript代碼的執行,同樣,在JavaScript執行代碼中往往也存在對Android平臺信息的調用執行,平臺層提供了CallContext提供了視圖控件值獲取、寫(xiě)入,數據庫訪(fǎng)問(wèn)等各項操作接口給JavaScript,同時(shí)也支持其定義的Event事件進(jìn)行操作。
2.6 應用分析
根據元模型定義,可以定制一個(gè)“實(shí)時(shí)匯報”的功能模塊。通過(guò)瀏覽器客戶(hù)端的規范操作和輸入,可生成模板配置數據源存儲于服務(wù)器端,當手持端通過(guò)HTTP發(fā)起模板下發(fā)請求時(shí),服務(wù)器端即可下發(fā)Jason組幀的源數據,用以配置手持段軟件的具體執行規范模板。元模型和數據源示例如下:





通過(guò)配置數據源可以看出“實(shí)時(shí)匯報”功能含有一個(gè)“工作日志”步驟,步驟中的界面展示兩個(gè)控件,其中:“匯報時(shí)間”為文本框,定義了單擊事件用以獲取系統的當前時(shí)間方法:“匯報內容”控件為編輯框并且其最大輸入長(cháng)度為200個(gè)字節。另外,還可以給選擇時(shí)間文本框加上時(shí)間選擇限制,如不能大于當前時(shí)間。只需為其屬性的數據源CTRL _FUN_NAME、CTRL_FUN_BODY分別添加如下定義:

上述是一個(gè)非常簡(jiǎn)單的功能模塊,各企業(yè)根據具體業(yè)務(wù)場(chǎng)景的需要,可以添加諸如:“考勤管理”、“門(mén)店管理”、“門(mén)店拜訪(fǎng)”等各種功能。在添加功能或更改業(yè)務(wù)流程的過(guò)程中,只需從瀏覽器客戶(hù)端進(jìn)行模板定義的修改,服務(wù)器可根據重新配置的元模型更新數據源,通過(guò)無(wú)線(xiàn)網(wǎng)絡(luò )下發(fā)至手持端軟件即可實(shí)現業(yè)務(wù)流程的更新和改善,且各基礎功能的模板定義具有較強的通用性,可以相互借鑒引用。在業(yè)務(wù)邏輯復雜的情況下,企業(yè)管理者可以根據業(yè)務(wù)員使用過(guò)程中反饋的具體情況,不斷調整各模板流程的控制規則和流動(dòng)關(guān)系,通過(guò)服務(wù)器后臺進(jìn)行靈活的維護管理,以達到最佳的使用效果,且在此過(guò)程中完全不涉及軟件的二次開(kāi)發(fā),也無(wú)須支付高昂的二次開(kāi)發(fā)或升級維護費用,其市場(chǎng)響應速度也大大提高。
3 結束語(yǔ)
本文設計的自定制CRM軟件結合了Android操作系統的優(yōu)秀特性,可以在A(yíng)ndroid手機、平板等終端設備上良好地使用。通過(guò)瀏覽器客戶(hù)端的簡(jiǎn)單地配置即可生成一個(gè)相對成熟的CRM軟件原型,該軟件可以滿(mǎn)足絕大部分的業(yè)務(wù)需求的操作流程模板,當有特定控件展示,只需添加具體業(yè)務(wù)邏輯控件及即可迅速客戶(hù)需求的改動(dòng),大大減少了系統營(yíng)運的維護成本與二次開(kāi)發(fā)成本。能夠在短時(shí)間內快速響應市場(chǎng)變化并做出改進(jìn),為企業(yè)實(shí)現高效、精準的客戶(hù)關(guān)系管理。
評論