新聞中心

EEPW首頁(yè) > 模擬技術(shù) > 設(shè)計(jì)應(yīng)用 > 基于Android的自定制CRM軟件設(shè)計(jì)

基于Android的自定制CRM軟件設(shè)計(jì)

作者: 時(shí)間:2016-10-16 來(lái)源:網(wǎng)絡(luò) 收藏

摘要:為了縮短CRM軟件的開(kāi)發(fā)進(jìn)程,提高軟件的后臺(tái)升級(jí)和維護(hù)能力,提出了一種基于Android系統(tǒng)的自定義界面的設(shè)計(jì)方法。采用 JavaScript腳本語(yǔ)言控制流程步驟、表單元數(shù)據(jù)間的數(shù)據(jù)邏輯,建立自定義表單界面解析引擎,實(shí)現(xiàn)了CRM軟件的自定義功能模版由中心后臺(tái)配置管理。分析結(jié)果表明,該設(shè)計(jì)方法能夠有效地縮短軟件的研發(fā)周期,幫助開(kāi)發(fā)者快速地按需定制較為成熟的CRM軟件原型。

本文引用地址:http://m.butianyuan.cn/article/201610/307832.htm

關(guān)鍵詞:;;;

近年來(lái),我國(guó)信息技術(shù)的迅猛發(fā)展和信息化水平的不斷提高,給傳統(tǒng)管理方式向信息化、系統(tǒng)化、集成化的轉(zhuǎn)變創(chuàng)造了良好的條件,CRM(Customer Relationship Manageme nt,)系統(tǒng)應(yīng)運(yùn)而生。但僅僅引進(jìn)CRM系統(tǒng)并不意味著公司直接步入了制度化、自動(dòng)化的業(yè)務(wù)流程。只有對(duì)業(yè)務(wù)流程進(jìn)行持續(xù)改進(jìn),才能確保 CRM技術(shù)能融入到變革流程中。由于市場(chǎng)數(shù)據(jù)異常龐大,定性確定業(yè)務(wù)邏輯也較為復(fù)雜,往往需要重復(fù)的使用與更改才能確定系統(tǒng)的根本大綱。這直接導(dǎo)致了軟件開(kāi)發(fā)周期的極大延長(zhǎng)。為了避免多次開(kāi)發(fā)所造成的研發(fā)時(shí)間延長(zhǎng)和市場(chǎng)響應(yīng)速度降低,本文建立了業(yè)務(wù)流程處理元模型,提出了一種基于Android系統(tǒng)的 CRM軟件自定義界面的設(shè)計(jì)方法,解決了傳統(tǒng)CRM系統(tǒng)開(kāi)發(fā)過(guò)程周期長(zhǎng)、成本高、復(fù)用率低等問(wèn)題。幫助企業(yè)管理人員通過(guò)該系統(tǒng)快速了解、掌握和傳遞市場(chǎng)信息,確保市場(chǎng)信息的時(shí)效性、實(shí)用性和價(jià)值性。

Android是美國(guó)谷歌開(kāi)發(fā)的適用于便攜產(chǎn)品使用的軟件平臺(tái)。本文在研究過(guò)程中考慮到CRM系統(tǒng)的實(shí)時(shí)性、高效性、高可拓展性等特點(diǎn),充分利用 Android操作系統(tǒng)擴(kuò)展性、可移植性、易維護(hù)和開(kāi)源等,將兩者結(jié)合起來(lái)可使系統(tǒng)具有兼容性強(qiáng)、穩(wěn)定性高、跨平臺(tái)、低成本、易于維護(hù)和升級(jí)等優(yōu)點(diǎn)。

1 系統(tǒng)總體結(jié)構(gòu)

該系統(tǒng)主要由瀏覽器客戶(hù)端、服務(wù)器端和手持終端(Android操作系統(tǒng))三部分組成。瀏覽器客戶(hù)端主要對(duì)業(yè)務(wù)流程及管理邏輯進(jìn)行定義,將定義模板存入服務(wù)器端數(shù)據(jù)庫(kù),而手持端向數(shù)據(jù)庫(kù)請(qǐng)求模板并進(jìn)行解析和顯示。系統(tǒng)的總體框架圖如圖1所示。

a.jpg

企業(yè)管理者通過(guò)統(tǒng)籌本企業(yè)的業(yè)務(wù)方向并結(jié)合具體市場(chǎng)運(yùn)營(yíng)狀況,定制業(yè)務(wù)員的業(yè)務(wù)訪問(wèn)流程和規(guī)范,如:信息管理、門(mén)店拜訪流程。開(kāi)發(fā)人員了解到具體的操作規(guī)范,整理為操作模板,通過(guò)瀏覽器客戶(hù)端進(jìn)行模板配置,模板數(shù)據(jù)以Jason對(duì)象組幀存入到服務(wù)器數(shù)據(jù)庫(kù)中。

業(yè)務(wù)員通過(guò)手持終端的CRM軟件向服務(wù)器數(shù)據(jù)庫(kù)請(qǐng)求具體的操作模板,并由模板解析器將具體模板按照需求解析并顯示,業(yè)務(wù)員即可通過(guò)手持端軟件進(jìn)行客戶(hù)信息管理、門(mén)

店拜訪等相關(guān)操作。

2 系統(tǒng)軟件設(shè)計(jì)

2.1 前端設(shè)計(jì)

系統(tǒng)網(wǎng)站前端采用了當(dāng)前互聯(lián)網(wǎng)上比較流行的富客戶(hù)端MVC設(shè)計(jì)模式,即前端頁(yè)面的功能比較強(qiáng)大,采用目前在企業(yè)ERP Web程序中比較流行的EXT JS框架進(jìn)行開(kāi)發(fā),該框架具有豐富的界面組件與接口,通過(guò)它能開(kāi)發(fā)出接近于桌面應(yīng)用程序用戶(hù)界面的網(wǎng)頁(yè)頁(yè)面,可以給用戶(hù)以良好的用戶(hù)體驗(yàn)。同時(shí)前端頁(yè)面全部通過(guò)AJAX的模式向后臺(tái)服務(wù)器發(fā)送請(qǐng)求,可以不影響用戶(hù)操作的方式異步請(qǐng)求響應(yīng),從而有效地減低了響應(yīng)時(shí)間與服務(wù)的負(fù)擔(dān)。

具體的設(shè)計(jì)上,系統(tǒng)平臺(tái)前端又采用了插件式的模塊加載方式,各個(gè)具體功能模塊對(duì)應(yīng)的JS文件通過(guò)動(dòng)態(tài)創(chuàng)建Script元素的方式加載,采用的是LAZY LOAD的方式,即主頁(yè)面加載時(shí)并不下載各具體模塊的JS文件,只有在點(diǎn)擊具體功能時(shí)才動(dòng)態(tài)加載,這樣可以有效地提高系統(tǒng)啟動(dòng)速度,給用戶(hù)以良好的體驗(yàn)。

2.2 后端設(shè)計(jì)

系統(tǒng)網(wǎng)站后端的控制層設(shè)計(jì)的非常簡(jiǎn)單,它的主要功能就是接受前端發(fā)送來(lái)的AJAX請(qǐng)求,并從中提取出請(qǐng)求的參數(shù)內(nèi)容,并將這些參數(shù)傳入對(duì)應(yīng)的存儲(chǔ)過(guò)程進(jìn)行處理,然后將存儲(chǔ)過(guò)程返回的結(jié)果組成Jason格式的數(shù)據(jù)返回給前端。

后端的功能非常簡(jiǎn)單,幾乎不涉及任何具體的業(yè)務(wù)邏輯,也不負(fù)責(zé)改變前端顯示,它唯一的作用是聯(lián)系顯示層與數(shù)據(jù)庫(kù)持久層。這種設(shè)計(jì)的目的就是減低網(wǎng)站重新部署的工作量(后端代碼改變后需要重新編譯部署,重啟網(wǎng)站服務(wù)器,而前端的JS文件和數(shù)據(jù)庫(kù)的存儲(chǔ)過(guò)程修改后可以立即使用)。

2.3 數(shù)據(jù)庫(kù)

本系統(tǒng)對(duì)業(yè)務(wù)邏輯的處理基本上集中于數(shù)據(jù)庫(kù)的存儲(chǔ)過(guò)程,這樣做的優(yōu)點(diǎn)是:首先大量減少了網(wǎng)站服務(wù)器與數(shù)據(jù)庫(kù)服務(wù)器之間的數(shù)據(jù)通訊量;其次,由于存儲(chǔ)過(guò)程都經(jīng)過(guò)了預(yù)編譯,緩存了執(zhí)行計(jì)劃,所以執(zhí)行起來(lái)速度比直接執(zhí)行SQL語(yǔ)句快得多;最后,可以向網(wǎng)站應(yīng)用服務(wù)器屏蔽底層的數(shù)據(jù)結(jié)構(gòu),底層表變化時(shí)可以減少前端與后端代碼的修改。減少部署的工作量,加快對(duì)客戶(hù)的響應(yīng)速度;存儲(chǔ)過(guò)程修改后應(yīng)用程序服務(wù)器不需要重啟。通過(guò)了解具體的操作規(guī)范,進(jìn)行拜訪模板定義,主要的拜訪模版表定義如下:

b.jpg

2.4 終端軟件設(shè)計(jì)

該軟件客戶(hù)端采用Android平臺(tái)。在總體設(shè)計(jì)上采用軟件分層的方法,分為框架層和應(yīng)用層。軟件架構(gòu)如圖2。

c.jpg

1)應(yīng)用層

該軟件的UI設(shè)計(jì)嚴(yán)格按照交互設(shè)計(jì)原型進(jìn)行開(kāi)發(fā),并對(duì)關(guān)鍵公共部分視圖做抽象處理。完整繼承Activity的生命周期Activity與Activity之間杜絕采用藕合的接口調(diào)用數(shù)據(jù)

方式,所有數(shù)據(jù)交互必須采用Intent進(jìn)行傳遞,保證各Activity數(shù)據(jù)的獨(dú)立性。為了使類(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)行備份和恢復(fù)。當(dāng)界面被內(nèi)存回收后能夠重繪界面控件并加載控件值,提升用戶(hù)體驗(yàn)。其他所有界面都繼承該公共類(lèi),使得軟件界面風(fēng)格一致,便于統(tǒng)一管理與修改。

軟件的邏輯層封裝主要體現(xiàn)在Task與Setvice的設(shè)計(jì)。在業(yè)務(wù)員使用軟件進(jìn)行相關(guān)業(yè)務(wù)操作時(shí),將會(huì)不時(shí)地請(qǐng)求、查詢(xún)服務(wù)器后臺(tái)數(shù)據(jù),所以業(yè)務(wù)請(qǐng)求和中心下發(fā)數(shù)據(jù)的解析處理,是業(yè)務(wù)邏輯的重要一環(huán)。對(duì)Task進(jìn)行重新設(shè)計(jì)和封裝,采用公共的句柄Handle用以處理Task所需要發(fā)送對(duì)象,返回類(lèi),回調(diào)方法,重傳次數(shù),超時(shí)時(shí)間等關(guān)鍵變量。另外,Android中提供了Service組件可進(jìn)行后臺(tái)運(yùn)行和跨進(jìn)程訪問(wèn)。通過(guò)啟動(dòng)一個(gè)服務(wù),可以在不顯示界面的前提下在后臺(tái)運(yùn)行指定的任務(wù),這樣不會(huì)對(duì)當(dāng)前客戶(hù)操作行為產(chǎn)生影響。抽象出基礎(chǔ)服務(wù)類(lèi)并定義基本的創(chuàng)建、啟動(dòng)、銷(xiāo)毀等事件方法,由各個(gè)指定業(yè)務(wù)的服務(wù)繼承該基礎(chǔ)類(lèi)用以管理特定業(yè)務(wù)對(duì)象的數(shù)據(jù)后臺(tái)管理。

數(shù)據(jù)存儲(chǔ)作為軟件執(zhí)行流程的必備功能模塊,系統(tǒng)主要采用了Preterene和Android自帶的SQLite輕量級(jí)數(shù)據(jù)庫(kù)兩張方式用于數(shù)據(jù)存儲(chǔ)管理。其中,Preference用以存儲(chǔ)系統(tǒng)公共參數(shù);SQLite數(shù)據(jù)庫(kù)用以存儲(chǔ)用戶(hù)的基礎(chǔ)數(shù)據(jù)和拜訪數(shù)據(jù)等。數(shù)據(jù)層中不包含任何的業(yè)務(wù)邏輯結(jié)構(gòu)和界面顯示特性的需求,僅僅提供各數(shù)據(jù)庫(kù)表中存儲(chǔ)的基本數(shù)據(jù)信息。即,該層不能調(diào)用邏輯層與UI層代碼,充分隔離數(shù)據(jù)管理與界面和邏輯層。支持上層調(diào)用下層,而下層不允許訪問(wèn)上層。有效降低各功能模塊耦合度,細(xì)化軟件模塊的劃分,提高可拓展性。

2)框架層

框架層的設(shè)計(jì)主要是對(duì)于與服務(wù)器后臺(tái)數(shù)據(jù)交互的完善。包含有通訊設(shè)計(jì)、協(xié)議解析設(shè)計(jì)。通訊設(shè)計(jì)主要采用了Android中提供的 HttpURLConnection和HttpClient接口。系統(tǒng)在繼承HttpUrIConnection的基礎(chǔ)上,繼續(xù)完善通用的接口功能模塊,支持根據(jù)業(yè)務(wù)模式自動(dòng)切換網(wǎng)關(guān)等,支持重傳機(jī)制和超時(shí)控制,完善網(wǎng)絡(luò)錯(cuò)誤提示和出錯(cuò)處理;協(xié)議解析主要采用JSON格式和二進(jìn)制流兩種格式。每條協(xié)議單獨(dú)一個(gè)文件,同所在業(yè)務(wù)模塊放在同一個(gè)包下。協(xié)議文件以協(xié)議號(hào)進(jìn)行命名,分上行和下行兩種。協(xié)議的組幀和解析必須用對(duì)象進(jìn)行處理。所有協(xié)議的設(shè)計(jì)必須符合協(xié)議要求,盡量設(shè)計(jì)成一個(gè)對(duì)象。支持采用FastJason技術(shù)進(jìn)行自動(dòng)解析,達(dá)到減少工作量的目的。并且可以快速響應(yīng)協(xié)議的修改,而修改工作量不大。

2.5 JavaScript解析引擎

以上的設(shè)計(jì)方案為實(shí)現(xiàn)自定軟件配置數(shù)據(jù)、業(yè)務(wù)數(shù)據(jù)的傳送解析提供了框架基礎(chǔ),能夠滿(mǎn)足數(shù)據(jù)傳送的時(shí)效性,保證管理者對(duì)終端軟件的實(shí)時(shí)掌控,具有較強(qiáng)的系統(tǒng)變更能力。余下的關(guān)鍵問(wèn)題在于終端軟件如何對(duì)接收到的模板數(shù)據(jù)進(jìn)行視圖展示并建立控件聯(lián)系,因?yàn)楸韱沃锌丶?shù)量繁多,其復(fù)雜屬性根本無(wú)法通過(guò)語(yǔ)言描述和類(lèi)型劃分來(lái)實(shí)現(xiàn),為解決這一難點(diǎn),我們將其復(fù)雜的業(yè)務(wù)邏輯控制使用JavaSeript語(yǔ)言實(shí)現(xiàn)。在JayaScript解析引擎的基本框架上構(gòu)建實(shí)現(xiàn)銷(xiāo)售子系統(tǒng)業(yè)務(wù)流和自定義表單的界面解析引擎和邏輯處理引擎。

1)視圖解析引擎

中心下發(fā)數(shù)據(jù)通過(guò)。JSON解析后,存儲(chǔ)數(shù)據(jù)在本地?cái)?shù)據(jù)庫(kù)中,建立與中心相對(duì)應(yīng)的模板表:Table_Scheme、Table_Step、 Table_Ctrl。界面解析引擎采用流式布局的方法,依次對(duì)各級(jí)組件進(jìn)行解析展示。在獲取組件屬性信息后,根據(jù)其相關(guān)類(lèi)別,建立模板、步驟、控件視圖,各組件的繼承關(guān)系通過(guò)主鍵值進(jìn)行關(guān)聯(lián)。為了簡(jiǎn)化其創(chuàng)建流程機(jī)制,該視圖解析引擎先剝離了所有的邏輯屬性需要,僅僅實(shí)現(xiàn)組件的頁(yè)面效果展示,而將復(fù)雜的邏輯處理讓邏輯處理引擎在后臺(tái)執(zhí)行。這種設(shè)計(jì)方案能夠功能界面的實(shí)現(xiàn)快速展示,而無(wú)需考慮各種復(fù)雜邏輯的交叉影響,大大縮減了視圖展示的啟動(dòng)時(shí)間,具有良好的用戶(hù)體驗(yàn)效果。

2)邏輯處理引擎

邏輯處理引擎主要解決各組件的內(nèi)在聯(lián)系。因?yàn)樵诮M件的邏輯控制需要在Android環(huán)境下對(duì)JavaScript語(yǔ)言的動(dòng)態(tài)編譯,在開(kāi)發(fā)和運(yùn)行基于GUI 的應(yīng)用程序時(shí)尤其有效。在此基礎(chǔ)上,邏輯處理引擎構(gòu)建Android平臺(tái)下幾乎所有簡(jiǎn)單控件的監(jiān)聽(tīng)事件ListenerType,根據(jù)組件的配置需要來(lái)判斷是否執(zhí)行相關(guān)腳本,其腳本內(nèi)容CtrlListener以文本形式存放在屬性字段中,通過(guò)Rhino實(shí)現(xiàn)Android平臺(tái)對(duì)JavaScript代碼的執(zhí)行,同樣,在JavaScript執(zhí)行代碼中往往也存在對(duì)Android平臺(tái)信息的調(diào)用執(zhí)行,平臺(tái)層提供了CallContext提供了視圖控件值獲取、寫(xiě)入,數(shù)據(jù)庫(kù)訪問(wèn)等各項(xiàng)操作接口給JavaScript,同時(shí)也支持其定義的Event事件進(jìn)行操作。

2.6 應(yīng)用分析

根據(jù)元模型定義,可以定制一個(gè)“實(shí)時(shí)匯報(bào)”的功能模塊。通過(guò)瀏覽器客戶(hù)端的規(guī)范操作和輸入,可生成模板配置數(shù)據(jù)源存儲(chǔ)于服務(wù)器端,當(dāng)手持端通過(guò)HTTP發(fā)起模板下發(fā)請(qǐng)求時(shí),服務(wù)器端即可下發(fā)Jason組幀的源數(shù)據(jù),用以配置手持段軟件的具體執(zhí)行規(guī)范模板。元模型和數(shù)據(jù)源示例如下:

d.jpg
e.jpg

f.jpg

g.jpg

h.jpg

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

i.jpg

上述是一個(gè)非常簡(jiǎn)單的功能模塊,各企業(yè)根據(jù)具體業(yè)務(wù)場(chǎng)景的需要,可以添加諸如:“考勤管理”、“門(mén)店管理”、“門(mén)店拜訪”等各種功能。在添加功能或更改業(yè)務(wù)流程的過(guò)程中,只需從瀏覽器客戶(hù)端進(jìn)行模板定義的修改,服務(wù)器可根據(jù)重新配置的元模型更新數(shù)據(jù)源,通過(guò)無(wú)線網(wǎng)絡(luò)下發(fā)至手持端軟件即可實(shí)現(xiàn)業(yè)務(wù)流程的更新和改善,且各基礎(chǔ)功能的模板定義具有較強(qiáng)的通用性,可以相互借鑒引用。在業(yè)務(wù)邏輯復(fù)雜的情況下,企業(yè)管理者可以根據(jù)業(yè)務(wù)員使用過(guò)程中反饋的具體情況,不斷調(diào)整各模板流程的控制規(guī)則和流動(dòng)關(guān)系,通過(guò)服務(wù)器后臺(tái)進(jìn)行靈活的維護(hù)管理,以達(dá)到最佳的使用效果,且在此過(guò)程中完全不涉及軟件的二次開(kāi)發(fā),也無(wú)須支付高昂的二次開(kāi)發(fā)或升級(jí)維護(hù)費(fèi)用,其市場(chǎng)響應(yīng)速度也大大提高。

3 結(jié)束語(yǔ)

本文設(shè)計(jì)的自定制CRM軟件結(jié)合了Android操作系統(tǒng)的優(yōu)秀特性,可以在Android手機(jī)、平板等終端設(shè)備上良好地使用。通過(guò)瀏覽器客戶(hù)端的簡(jiǎn)單地配置即可生成一個(gè)相對(duì)成熟的CRM軟件原型,該軟件可以滿(mǎn)足絕大部分的業(yè)務(wù)需求的操作流程模板,當(dāng)有特定控件展示,只需添加具體業(yè)務(wù)邏輯控件及即可迅速客戶(hù)需求的改動(dòng),大大減少了系統(tǒng)營(yíng)運(yùn)的維護(hù)成本與二次開(kāi)發(fā)成本。能夠在短時(shí)間內(nèi)快速響應(yīng)市場(chǎng)變化并做出改進(jìn),為企業(yè)實(shí)現(xiàn)高效、精準(zhǔn)的。



評(píng)論


技術(shù)專(zhuān)區(qū)

關(guān)閉