本發(fā)明涉及數據存儲,特別涉及一種企業(yè)CRM系統(tǒng)數據存儲方法。
背景技術:
在應用架構的客戶關系管理CRM企業(yè)系統(tǒng)中,多個應用常復用同一個服務。同時也需要集成多個服務以實現(xiàn)復雜的事務流程。而以數據為核心的企業(yè)服務更加關注企業(yè)事務相關的事務本體,服務的核心是對事務本體的操作。然而應用現(xiàn)有的服務系統(tǒng)在構建數據服務時面臨為不同需求構建不同服務或將數據返回讓用戶自行處理兩種方式選擇問題。而且這會帶來服務數量劇增,服務發(fā)現(xiàn)困難,關鍵數據難以獲得等問題,故難以良好的實現(xiàn)服務個性化。
技術實現(xiàn)要素:
為解決上述現(xiàn)有技術所存在的問題,本發(fā)明提出了一種企業(yè)CRM系統(tǒng)數據存儲方法,包括:
在CRM系統(tǒng)中將本體模型和行為模型進行實例化,通過統(tǒng)一的映射機制將實例化后的模型映射成相應的數據服務;企業(yè)用戶通過定制模型實現(xiàn)服務個性化。
優(yōu)選地,所述CRM系統(tǒng)在配置階段提取企業(yè)內部多個子系統(tǒng)共同使用的服務,形成一個核心服務庫,不同應用系統(tǒng)從中獲取相應服務;使用這些服務構建事務流程;在需求分析階段,根據企業(yè)事務需求抽象出事務本體、行為和事務流程,組成三種信息模型;在資源配置階段構建本體、行為和內部空間并將它們永久存儲至服務器,根據創(chuàng)建的配置文件初始化系統(tǒng);當用戶請求到達系統(tǒng)時,系統(tǒng)自動實例化,映射到相應服務,并執(zhí)行狀態(tài)轉移,最后將數據返回給用戶;服務提供企業(yè)通過系統(tǒng)提供的工具構建原始的模型和內部空間,從而將其映射為服務;而服務租戶獲取服務提供企業(yè)設計的模型并按照自己的需求修改產生新的本體、改變行為的邏輯順序或原子操作,并將定制后的模型永久存儲到自己的租戶空間中;
在運行階段,CRM系統(tǒng)實現(xiàn)請求解析、請求分發(fā)、內部空間解析、狀態(tài)轉移、模型加載、實例化、服務返回;CRM系統(tǒng)的用戶接口層解析用戶請求,獲取請求的資源的種類、對應的租戶;對服務調用進行分發(fā),判斷該請求是服務請求還是資源配置請求,從而分發(fā)到合適的位置進行處理;運行調用層解析內部空間,并結合當前系統(tǒng)資源狀態(tài)進行跳轉,觸發(fā)對應的行為,即進行相應的行為的調用;解析和實例化層根據運行調用層的請求找到對應的模型并對其解析和實例化;若資源的狀態(tài)發(fā)生改變,則回到狀態(tài)管理層進行對應的邏輯調用,直到停止狀態(tài)改變,最終返回到用戶接口層,由其為用戶返回服務;數據層負責實際事務數據和多種配置模型的操作,并完成數據的永久存儲和多租戶分離。
本發(fā)明相比現(xiàn)有技術,具有以下優(yōu)點:
本發(fā)明提出了一種企業(yè)CRM系統(tǒng)數據存儲方法,符合企業(yè)關注事務相關本體的核心需求,有效控制了服務數量,提高服務發(fā)現(xiàn)效率。有利于實現(xiàn)企業(yè)服務個性化。
附圖說明
圖1是根據本發(fā)明實施例的企業(yè)CRM系統(tǒng)數據存儲方法的流程圖。
具體實施方式
下文與圖示本發(fā)明原理的附圖一起提供對本發(fā)明一個或者多個實施例的詳細描述。結合這樣的實施例描述本發(fā)明,但是本發(fā)明不限于任何實施例。本發(fā)明的范圍僅由權利要求書限定,并且本發(fā)明涵蓋諸多替代、修改和等同物。在下文描述中闡述諸多具體細節(jié)以便提供對本發(fā)明的透徹理解。出于示例的目的而提供這些細節(jié),并且無這些具體細節(jié)中的一些或者所有細節(jié)也可以根據權利要求書實現(xiàn)本發(fā)明。
本發(fā)明的一方面提供了一種企業(yè)CRM系統(tǒng)數據存儲方法。圖1是根據本發(fā)明實施例的企業(yè)CRM系統(tǒng)數據存儲方法流程圖。
本發(fā)明的CRM系統(tǒng)包括用戶接口層、資源配置層、狀態(tài)管理層、解析和實例化層以及數據層,實現(xiàn)服務個性化、服務集成和多租戶分離。用本體模型表示事務本體;行為模型表示對多個本體的連續(xù)操作。通過統(tǒng)一的映射機制將兩種模型映射成相應的數據服務。利用模型實例化過程將模型實例化成實例。用戶通過定制模型實現(xiàn)服務個性化。利用內部空間集成服務。通過本發(fā)明的租戶分離過程以滿足云存儲的需求,第一層用于分離不同企業(yè)的項目,第二層用于分離注冊在該系統(tǒng)中的不同應用。基于租戶空間將模型、內部空間和事務數據分離。采用文件系統(tǒng)分離模型和內部空間,采用基于數據庫實例的分離和共享數據庫和表結合的方式分離事務數據。
在系統(tǒng)配置階段,提取企業(yè)內部多個子系統(tǒng)共同使用的服務,形成一個核心服務庫。不同應用系統(tǒng)可以從中獲取相應服務。同樣的可以使用這些服務構建事務流程。需求分析階段,根據事務需求抽象出事務本體、行為和事務流程,組成三種信息模型。在資源配置階段,構建本體、行為和內部空間并將它們永久存儲至服務器,最后根據創(chuàng)建的配置文件初始化系統(tǒng)。當用戶請求到達系統(tǒng)時,系統(tǒng)自動將實例化,映射到相應服務,并執(zhí)行狀態(tài)轉移,最后將數據返回給用戶。本發(fā)明將服務提供企業(yè)稱為初級租戶,服務提供企業(yè)的租戶稱為次級租戶。當次級租戶需要個性化初級租戶的服務時,同樣需要經歷需求分析和資源設計。
在配置階段,服務提供企業(yè)通過系統(tǒng)提供的工具構建原始的模型和內部空間,從而可以將其映射為服務。而服務租戶獲取服務提供企業(yè)設計的模型并按照自己的需求修改產生新的本體、改變行為的邏輯順序或原子操作。并將定制后的模型永久存儲到自己的租戶空間中。
在運行階段,CRM系統(tǒng)實現(xiàn)請求解析、請求分發(fā)、內部空間解析、狀態(tài)轉移、模型加載、實例化、服務返回。用戶接口層負責解析用戶請求,獲取請求的資源的種類、對應的租戶;對服務調用進行分發(fā),判斷該請求是服務請求還是資源配置請求,從而分發(fā)到合適的位置進行處理。運行調用層負責解析內部空間,并結合當前系統(tǒng)資源狀態(tài)進行跳轉,觸發(fā)對應的行為,即進行相應的行為的調用。解析和實例化層負責根據運行調用層的請求找到對應的模型并對其解析和實例化。行為的實例化可能會改變資源的狀態(tài)。若發(fā)生改變,則又會回到狀態(tài)管理層進行對應的邏輯調用,直到停止狀態(tài)改變。最終返回到用戶接口層,由其為用戶返回服務。數據層負責實際事務數據和多種配置模型的操作,并負責數據的永久存儲和多租戶分離。
具體地,資源配置層處理配置過程和初始化兩個步驟。在配置階段,資源配置層和運行階段復用了用戶接口層。配置層中擁有系統(tǒng)空間和租戶空間。系統(tǒng)空間中提供了租戶配置模型所需的工具,包括系統(tǒng)自帶的本體模型和固有的原子操作。租戶根據系統(tǒng)空間中的工具配置自己所需的模型。當租戶配置完成后,系統(tǒng)會根據多租戶分離的規(guī)則將模型存儲到系統(tǒng)空間中。系統(tǒng)空間是一個兩級結構,其中包括初級租戶空間和次級租戶空間。服務提供企業(yè)在初級租戶空間將創(chuàng)建原始的模型和內部空間。而在初級租戶空間中會有若干個次級租戶空間。如果次級租戶需要個性化該服務提供企業(yè)的服務,則在初級租戶空間中開辟自己的次級租戶空間,并將定制后的模型存儲在其中。在初始化階段,采用本體關系映射的方式,將數據庫表映射為類,數據訪問映射為類的操作,當個性化模型之后,需要手動加載新的類。
用戶接口層與用戶直接交互,解析用戶請求,獲取請求的資源的種類、對應的租戶信息;對服務調用進行分發(fā),判斷該請求時服務請求還是資源配置請求,從而分發(fā)到合適的位置進行處理。該層被配置階段和運行階段各個層次復用。請求解析包括從用戶的請求中獲得資源的歸屬者、具體的資源和請求的方法。通過URL的解析進行服務分發(fā),以判斷該請求是服務請求還是資源配置請求。如果是服務請求,按照解析獲得的內容進行更加細粒度的分發(fā)。系統(tǒng)需要將按照租戶id、資源、項目等將其分發(fā)到正確的位置。
狀態(tài)管理層負責解析內部空間,并結合當前的系統(tǒng)環(huán)境,即各資源當前的狀態(tài)進行狀態(tài)跳轉,觸發(fā)對應的行為,判斷何時應該解析并實例化行為,行為下一步走向。每個資源有自己的內部空間,它表明每個資源的狀態(tài)處于一個有限的狀態(tài)集中而多個資源的狀態(tài)可以組成一個復合內部空間,它是由多個資源的狀態(tài)集的笛卡爾積組成。所以一個內部空間可以由多種復合狀態(tài)組成。通過確定在某個復合狀態(tài)下,系統(tǒng)應該調用哪個行為,從而使系統(tǒng)能夠按照設計的流程運行下去。
為了實現(xiàn)基于狀態(tài)的系統(tǒng)運轉,租戶在設計時構建自己的內部空間。內部空間包括了每個資源自己的內部空間的一張一維表和多個資源組成的一張復合狀態(tài)的二維表。在請求發(fā)送到運行調用層的時候,先將請求引導至解析和實例化層,由解析和實例化層對請求的資源進行處理。等到解析和實例化層處理結束時,返回運行調用層,此時解析內部空間,查看此時是否觸發(fā)了資源的狀態(tài)變化,并查看此時整個系統(tǒng)相關資源的復合狀態(tài),從而決定是繼續(xù)執(zhí)行下一步的資源請求還是直接返回。
解析和實例化層負責模型的加載和實例化,包括本體的實例化和行為的實例化。在本體的實例化的過程中,分為模型解析和數據載入兩個步驟。在配置階段,本體模型的屬性部分被初始化為資源類。但是狀態(tài)和約束部分仍舊需要被解析并應用于數據載入階段。所以在解析階段,本發(fā)明將本體的狀態(tài)和約束進行解析。在數據載入階段,根據解析得到的狀態(tài)和約束結合定位到的資源類交給數據層。最后由數據層服務數據載入。需要解析模型,動態(tài)的映射到具體的資源類。對于行為的實例化,包括本體的實例化及其與原子操作的組合,完成更復雜的數據服務。行為的實例化還包括行為模型的解析和規(guī)則的執(zhí)行。在行為模型的解析的過程中,初始化系統(tǒng)的通用數據集,并將用戶請求的數據映射至模型屬性中的資源。
數據層為整個系統(tǒng)提供了統(tǒng)一的數據訪問接口,并在物理數據上提供了多租戶分離的功能。屏蔽了數據庫操作的細節(jié),為上層的資源訪問提供一種面向對象的抽象方法。同時,根據租戶的需求改變模型,通過底層數據庫表結構的改變而實現(xiàn)服務的個性化。
本發(fā)明定義了本體模型和行為模型。通過模型的實例化過程將模型實例化,再通過服務映射將實例化后的模型映射為相應的服務。而用戶能夠通過個性化模型實現(xiàn)服務個性化。
本體是對事務本體的信息模型的抽象。比如訂單、商品、客戶等本體對象。它是一般事務本體的信息載體。按照元素的功能分類,本體資源定義中的元素可以被分為三類:模型描述型元素、信息定義型元素和拓展定制型元素。行為是由原子操作、本體和邏輯關聯(lián)詞組合而成。
在行為的配置中,資源有兩種屬性:實例屬性和模型屬性。其中實例屬性表示該資源是一個已經被實例化之后的資源。這類資源不需要在運行時執(zhí)行模型的解析,可以直接對其進行操作。而模型屬性表示的資源是一個模型,在行為的解析過程中需要首先對其實例化之后才能使用。在本系統(tǒng)中,為了在運行時統(tǒng)一兩者,提供一個通用數據集。在運行時,實例統(tǒng)一存儲于通用數據集中。存在于通用數據集中的每一個資源都有一個全局唯一的鍵對其標識。當需要使用資源的情況時,系統(tǒng)可以通過這個鍵獲取該實例。每個原子操作內部從通用數據集中通過URL找到對應的實例進行操作。
模型實例化的過程進一步包括,經過用戶接口層的解析后,系統(tǒng)已經識別出需要訪問的資源并定位到具體模型。然后可以根據該模型進行實例化。根據模型種類的不同分為本體的實例化和行為的實例化。如果是本體,則解析該模型,根據模型的名稱找到它所映射的數據庫實例和數據庫表。然后根據請求的方法、請求的參數以及本體的定義從數據庫中獲取數據,接著將數據組裝成服務直接返回給客戶端。如果是行為,首先解析行為,并將用戶請求中的請求參數載入行為屬性中,然后解析行為的邏輯規(guī)則,根據序列逐步解析。在實例化一個行為之后不能直接為用戶返回服務,而是判斷該行為是否使資源的狀態(tài)發(fā)生了改變。如果沒有改變,將該行為實例化的結果封裝成數據服務直接返回給用戶;如果發(fā)生了改變,則進入內部空間。再由判斷下一步的執(zhí)行步驟。
本發(fā)明使用本體的一維內部空間表示本體的狀態(tài)集,通過多維內部空間將資源的一維狀態(tài)與服務關聯(lián)在一起。所以每個本體都有一個默認的狀態(tài)屬性。在配置階段限定每個本體狀態(tài)的變化范圍。比如一個商品只能有上架、預訂、售出、售后等狀態(tài)。通過限定每個資源狀態(tài)的變化范圍,每個本體就形成了自己的一維內部空間。
一個事務流程涉及許多本體。每個時刻各個本體擁有自己的狀態(tài)。多個本體的內部空間的笛卡爾積可以組成一個復雜的狀態(tài)矩陣。本發(fā)明將某一時刻不同本體狀態(tài)的組合稱為復合狀態(tài)。只有當一個復合狀態(tài)發(fā)生改變的時才主動觸發(fā)新的流程。因此在每一個復合狀態(tài)下關聯(lián)一個行為。在邊緣觸發(fā)的時刻,系統(tǒng)檢查復合狀態(tài)并找到與其關聯(lián)的行為,最后觸發(fā)新的行為。
用戶接口層對請求預處理后,可以找到對應的模型。如果是行為,會先對其實例化。如果在行為中改變了資源的狀態(tài),則進入運行調用層,執(zhí)行內部空間的解析與跳轉。在用戶請求中攜帶當前該請求的流程資源。在運行調用層中,會解析該流程資源和內部空間。根據內部空間的定義,本發(fā)明可以通過流程資源的狀態(tài)找到與其對應的子空間。然后根據該子空間所涉及的本體,并分別找到其狀態(tài),組成復合狀態(tài)。最后再根據該復合狀態(tài)找到與其對應的行為。根據該行為重新進入解析和實例化層進行行為的實例化。
本發(fā)明采用文件系統(tǒng)分離模型和內部空間;采用不同的數據庫設計分離事務數據。服務提供企業(yè)將作為初級租戶,注冊自己的租戶空間,創(chuàng)建相關資源,并通過系統(tǒng)機制對外提供服務。當用戶需要定制該服務提供企業(yè)的服務時,從服務提供企業(yè)的資源庫中獲得該模型,然后通過相應的方式對模型進行定制。最后存儲在自己的租戶空間中,即在每個服務提供企業(yè)的租戶空間下,需要為個性化該服務的租戶開辟次級空間。服務提供企業(yè)有權限創(chuàng)建多個項目,在每個項目中可以存在多個租戶創(chuàng)建自己的項目,所以本發(fā)明采用樹狀結構存儲模型。本發(fā)明將模型存儲在服務器的文件系統(tǒng)中。
在數據分離上,采用以下三種等級。(1)數據庫級分離,即每個租戶擁有自己的數據庫實例,應用為每個租戶設置獨立的數據庫;(2)數據表共享,即通過添加租戶標識的方式區(qū)別在同一張表里面的不同租戶的數據。從而完成共享;(3)數據表級分離和數據庫共享,即所有租戶的數據存儲于一個數據庫實例當中,但是每個租戶將自己的數據存儲在自己的表中,通過在每個表的名字前增加租戶標簽,從而讓每個租戶在同一個數據庫實例內擁有自己的表空間。
基于云的CRM系統(tǒng)中用戶對數據節(jié)點的可靠性有一定的置信度要求。因此有必要對集群中的節(jié)點建立一種置信度考察機制,對數據節(jié)點的可靠性和存儲性能做出評價,以便云存儲系統(tǒng)對數據節(jié)點進行篩選。本發(fā)明以下方面從節(jié)點的置信度以及負載平衡兩個方面改進數據存儲策略。
系統(tǒng)數據節(jié)點未發(fā)送心跳信息過程記為一次異常事件。在一次異常事件過程中,參數Ta表示數據節(jié)點的存活時間,參數Td表示數據節(jié)點死亡時間,參數表示事件ts的發(fā)生時間,參數tn表示系統(tǒng)當前時間。根據各節(jié)點心跳信息的歷史數據,計算出各數據節(jié)點i的置信度值。
其中,n表示數據節(jié)點i到當前時間為止發(fā)生的異常次數。
在給定的云存儲數據節(jié)點集合S中,求得數據節(jié)點i,置信度C(i)滿足C(i)>x,得到數據節(jié)點集合N(x),運算函數為F,則可得:
N(x)=F(C(i),S,x)
云存儲系統(tǒng)中數據節(jié)點在該集群中拓撲距離是數據存儲傳輸選擇節(jié)點的重要參考參數,節(jié)點拓撲距離用Sij表示。
對于負載平衡,本發(fā)明采用加權方法來處理負載均衡問題。數據節(jié)點的存儲性能用P(i)表示為:
P(i)=η1F(i)+η2M(i)+η3S(i)+η4V(i)
其中,F(xiàn)(i)為處理資源性能,M(i)為內存容量,S(i)為存儲集群容量;V(i)為磁盤讀寫速度;η1-η4是各個參數的權重系數,且η1-η4的和為1。
將云存儲系統(tǒng)中數據節(jié)點存儲數據塊的數量N(i)與數據節(jié)點性能P(i)的比值來表示一個數據節(jié)點的負載狀況,用L(i)表示數據節(jié)點i的負載:
L(i)=N(i)/P(i)
將計算得到的負載值作為數據節(jié)點的選擇代價,選擇數據塊的存儲節(jié)點時優(yōu)先選擇數據節(jié)點負載值最小的進行數據的存儲。
C(i)=min(L(i))
為控制整個云存儲系統(tǒng)的集群負載狀況,計算出整個集群的平均負載狀況,即:
其中:L(t)表示為t時刻云存儲系統(tǒng)中所有數據節(jié)點的平均負載值,SUM為云存儲系統(tǒng)中數據節(jié)點的總數。
當一個節(jié)點滿足L(i)-L(t)>預設常量LC時,確定數據節(jié)點負載過重;當一個節(jié)點滿足L(t)-L(i)>LC時,確定數據節(jié)點負載過輕。
當有數據塊上傳到云存儲系統(tǒng)時,判斷把數據塊存儲到當前數據節(jié)點上,整個存儲系統(tǒng)的平衡條件是否滿足,如果是,則就把該數據塊存儲到該數據節(jié)點上,否則在更遠的距離內選擇數據節(jié)點再做條件判斷存儲,直到找到合適的數據節(jié)點存儲為止。
在給定的云存儲數據節(jié)點集合S中,求得云存儲系統(tǒng)中數據節(jié)點i的負載以L(i),滿足L(t)-L(i)>z,其中z是給定的負載閾值,得到集合B(z),運算函數為G,則可得:
B(z)=G(L(i),L(i),S,z)
根據影響數據節(jié)點性能的以上因素建立了數據節(jié)點的性能評價函數。在云存儲系統(tǒng)中設定可存儲數據節(jié)點的置信度必須大于x,將數據存儲到該數據節(jié)點上之后滿足負載閾值y的要求,存儲函數為P,則由此求得滿足要求的數據節(jié)點j:
Wj(x,y)=P(C(x),L(y))
(1)在云存儲系統(tǒng)中選擇數據節(jié)點集合S,計算出整個集群的平均負載L(t);
(2)在選擇的數據節(jié)點集合S中,計算該集合中的數據節(jié)點的置信度C(i),根據設定的置信度值x,選擇滿足要求的數據節(jié)點結合N(x);
(3)在選擇的數據節(jié)點集合N(x)中,計算該集合中的數據節(jié)點的負載B(i),根據系統(tǒng)設定的負載要求的負載閾值y,選擇滿足要求的節(jié)點集合B(y);
(4)選擇節(jié)點集合B(y),如果得出滿足要求的數據節(jié)點集合B(y);
(5)對于選擇的數據節(jié)點集合B(z),將數據塊存儲在置信度值最高的一個數據節(jié)點上。
循環(huán)上述步驟(1)-(5),將一個數據對象的所有編碼數據塊選擇合適的數據節(jié)點進行存儲。
綜上所述,本發(fā)明提出了一種企業(yè)CRM系統(tǒng)數據存儲方法,符合企業(yè)關注事務相關本體的核心需求,有效控制了服務數量,提高服務發(fā)現(xiàn)效率。有利于實現(xiàn)企業(yè)服務個性化。
顯然,本領域的技術人員應該理解,上述的本發(fā)明的各模塊或各步驟可以用通用的計算系統(tǒng)來實現(xiàn),它們可以集中在單個的計算系統(tǒng)上,或者分布在多個計算系統(tǒng)所組成的網絡上,可選地,它們可以用計算系統(tǒng)可執(zhí)行的程序代碼來實現(xiàn),從而,可以將它們存儲在存儲系統(tǒng)中由計算系統(tǒng)來執(zhí)行。這樣,本發(fā)明不限制于任何特定的硬件和軟件結合。
應當理解的是,本發(fā)明的上述具體實施方式僅僅用于示例性說明或解釋本發(fā)明的原理,而不構成對本發(fā)明的限制。因此,在不偏離本發(fā)明的精神和范圍的情況下所做的任何修改、等同替換、改進等,均應包含在本發(fā)明的保護范圍之內。此外,本發(fā)明所附權利要求旨在涵蓋落入所附權利要求范圍和邊界、或者這種范圍和邊界的等同形式內的全部變化和修改例。