1 概述
軟件即服務(Software as a Service,SaaS)是在21世紀初發(fā)展起來的一種創(chuàng)新的軟件應用模式.。隨著SaaS的不斷發(fā)展,其應用場景不同,業(yè)務流程也越來越多樣化。業(yè)務流程管理系統(tǒng)(Business Process Management System,BPMS)是一個可以設計和優(yōu)化流程的軟件。傳統(tǒng)的BPM 套件是在企業(yè)內(nèi)部獨立部署的,對于大型企業(yè)來說, 過長的應用開發(fā)周期和復雜的升級流程難以適應市場需求的快速變更;對于中小型企業(yè)來說,通常難以負擔BPM 套件昂貴的費用和相關IT支持。
SaaS模型可以解決BPM 在以上應用的窘境。兩者的結合產(chǎn)生了一種新的概念:業(yè)務流程管理即服務(BusinessProcess Management as a Service,BPMaaS)。BPMaaS是SaaS的一種應用,它將軟件限定在業(yè)務流程的范圍內(nèi)。SaaS中的關鍵技術是多租戶技術 J。為此,本文針對BPMaaS中多租戶問題進行研究,在分析國內(nèi)外發(fā)展的基礎上,提出一種資源獨占和共享解決多租戶問題的方法,并通過實例對該方法進行驗證。
2 關鍵問題
一個多租戶的SaaS應用首先需要解決的是數(shù)據(jù)隔離問題 ,軟件即服務的關鍵問題之一也是數(shù)據(jù)隔離問題Hj。這需要即保證租戶之間最大化資源的共享,又能夠區(qū)分屬于各自的數(shù)據(jù)0 。
相關的數(shù)據(jù)庫即服務提供了一些數(shù)據(jù)隔離的方法,目前有3種數(shù)據(jù)的共享和隔離模式可保證數(shù)據(jù)的安全隔離,分別為:獨立數(shù)據(jù)庫,共享的數(shù)據(jù)庫不同的schema,共享的數(shù)據(jù)庫相同的schema 。
獨立數(shù)據(jù)庫的模式開發(fā)成本很低,編程模型不需要很大的改變,但隨著共享模式的引進,此時還要兼顧到共享模式下的數(shù)據(jù)隔離,因此,開發(fā)成本升高。但這幾種模式的選擇需要各個因素的平衡。針對單個應用,多租戶的引入會增加應用程序開發(fā)部署和管理的復雜性,但也有其優(yōu)勢。隔離級別的降低也增加了擴展能力,可滿足不同租戶對服務質(zhì)量的要求目前有2種多租戶的模式:(I)N用多個應用程序支持多租戶;(2)利用一個應用程序支持多租戶。一個應用程序?qū)嵗亩嘧鈶魡栴}較為廣泛。筆者認為,如果利用每個應用實例分派給一個租戶的做法,只能支持很少的租戶數(shù)量,但在通常情況下,租戶的規(guī)模都不大,筆者期望的是單個應用能夠支持較大數(shù)量的租戶使用,從而提高計算資源的利用率 。
3 基于中間件的資源獨占和共享方法
業(yè)務流程中間件種類繁多,它不同于數(shù)據(jù)庫具有固定的引擎標準,因此,需要選取一個流程中間件作為流程引擎進行研究。對不同的流程引擎的研究方法不同。本文選取IBMFileNet架構,它是一個企業(yè)級業(yè)務流程管理套件,擁有全面、整合的產(chǎn)品,可以加速企業(yè)內(nèi)部以內(nèi)容為中心的流程應用的部署。
圖1是一個FileNet架構完整的應用實例,包含數(shù)據(jù)庫實例、LDAP實例、Content Engine實例、Process Engine實例和Application Engine實例。
圖1 FiIeNet應用實例
本文要解決的問題是:在FileNet架構的基礎上,從資源利用的角度出發(fā),剖析該架構中資源共享和獨占模式,使FileNet的實例資源能夠最大限度地被利用,并滿足不同租戶的服務質(zhì)量要求。在一個規(guī)模很小,用戶數(shù)不多的企業(yè)應用中,讓其獨占一個FileNet的實例是一種對資源的浪費,如果多個小型企業(yè)能夠共享一個FileNet實例,無論從成本還是模型架構上來看,都是最優(yōu)的。
3.1 共享和獨占模式設計本節(jié)將分析FileNet體系架構下可以共享的關鍵環(huán)節(jié),其中每一個環(huán)節(jié)都直接和數(shù)據(jù)相關。
(1)數(shù)據(jù)庫與數(shù)據(jù)庫緊密關聯(lián)的是Content Engine中的ObjecStore,多個Object Store可以同時指向相同的數(shù)據(jù)庫,因此,數(shù)據(jù)庫可以被Object Store獨占或者共享。
(2)Region多個租戶可以共享Region。對于獨占Region而言,F(xiàn)ileNet本身的體系結構設計即可支持數(shù)據(jù)的隔離,無需增加編程復雜度和額外的配置,如果Region過多,嚴重影響性能,因此,為了支持更多的租戶使用Region,必須引入同一個Region共享數(shù)據(jù)的方式;對于共享的Region,必須引入FileNet本身的安全模型,對Region中內(nèi)容的權限加以控制,另外對編程的要求也相應增加,Region中的內(nèi)容必須通過BPMAAS 封裝的多租戶應用程序接口(ApplicationProgramming Interface,API)獲取,否則會訪問到自己企業(yè)外部的數(shù)據(jù),API將在下文討論。
(3)Object StoreObject Store包含的對象很多,其復雜度遠超Region,因此,不能采用共享Object Store的方式,但Object Store可以共享數(shù)據(jù)庫,而Object Store僅是數(shù)據(jù)庫上層的一個邏輯劃分,因此,不共享Object Store的設計可以省略。
(4)LDApLDAP是FileNet架構中不可或缺的用戶認證和授權中間件,基于FileNet的應用程序必須使用LDAP,因此,共享LDAP的解決方案也集成在BPMaaS核心中。
(5)Content Engine和Process Engine在這個粒度上,獨立和共享都是可行的,依照目標客戶的規(guī)模來決定。
各種情況下的資源共享和獨占模式如表1所示。不同規(guī)模的租戶對服務質(zhì)量的要求和資源的利用是不同的。系統(tǒng)設計了4種模式來滿足不同租戶的需求。B、C、D是重點實現(xiàn)的3個模式,而A是傳統(tǒng)的應用程序離線部署的做法,本文不予討論。
表l FileNet的資源共享和獨占模式
3.2 多租戶應用程序接口本文在FileNet的基礎架構上設計了數(shù)據(jù)共享模式,這是FileNet本身特性之外的內(nèi)容,如果在沒有經(jīng)過二次封裝的API基礎上進行開發(fā),可能會訪問到錯誤的數(shù)據(jù)。為滿足共享和獨占模式的需求,筆者在一些系統(tǒng)關鍵點設計了使用多租戶API開發(fā)應用程序,以保證多租戶應用程序的正確性!
多租戶API為開發(fā)支持多租戶的BPM 應用程序提供了基本透明的、標準的數(shù)據(jù)訪問和編程接口。多租戶API類圖如圖2所示。
圖2 多租戶API類圖
API結構包含了3個主要的接口類(IContentEngine、IProcessEngine、ILDAP)和2個實體對象類(ContentEngineEntity、LDAPEntity)。IContentEngine主要封裝了FileNetContentEngine中的關鍵數(shù)據(jù)訪問接I:1;IProcess Engine主要封裝了Process Engine中的關鍵數(shù)據(jù)訪問接I:1;ILDAP主要封裝了LDAP的主要數(shù)據(jù)訪問接I:1;contentEngineEnticy和LDAPEntity主要是2個對象復雜結構的實體類。
4 實例與驗證
樣例應用程序是從一個利用BPMaaS技術實現(xiàn)的企業(yè)資源計劃(EntERPrise Resource Planning,ERP)項目中,抽取出的人力資源系統(tǒng)的一個業(yè)務 流程的實現(xiàn)實例。應用程序的核心思想未使用傳統(tǒng)的基于數(shù)據(jù)庫應用程序開發(fā)方式,而是基于業(yè)務流程和內(nèi)容管理進行開發(fā),對于“簡歷”,這正是非結構化的數(shù)據(jù)。
樣例業(yè)務流程的UML活動圖如圖3所示,該圖描述了樣例應用程序的業(yè)務流程。流程中首先由應聘者在門戶界面上搜索查詢招聘信息,并提交自己的簡歷,由人事部門和面試人員分別面試審批之后,最終進行錄用和作廢處理。
圖4 樣例業(yè)務流程的UML活動圖
該應用程序由5家企業(yè)同時使用,這5家企業(yè)的規(guī)模都較小,數(shù)據(jù)量不大,因此,本文采用表1中模式D的資源分配方式,即ObjectStore共享數(shù)據(jù)庫、共享Region的方式。
數(shù)據(jù)暴露點主要為以下環(huán)節(jié):
(1)ObjectStore每一個企業(yè)都獨立分配了ObjectStore,雖然ObjectStore共享了數(shù)據(jù)庫,但基于FileNet的安全模型,ObjectStore只能訪問到數(shù)據(jù)自己的數(shù)據(jù)庫表,不存在安全問題。
(2)RegionRegion中的內(nèi)容已經(jīng)被訪問控制列表(Access ControlI ist,ACL)的嚴格控制;贔ileNet的ACL安全模型,不屬于自己權限的內(nèi)容是無法訪問的,不僅是在界面這個級別,在API級別也是被嚴格控制,Region的內(nèi)容雖然被共享,但ACL的設定已經(jīng)在應用程序被訂閱時完成,因此,也不會存在安全問題。
與以往企業(yè)內(nèi)部的應用程序不同,在該程序中,用戶登錄時不但需要錄入登錄的用戶名和密碼,還要輸入有效的企業(yè)ID,即租戶ID來隔離不同企業(yè)的數(shù)據(jù),只有三者同時匹配,才能成功登錄。
JUnit是一個編寫和運行自動化測試的框架。本文將使用JUnit對測試用例進行測試,并給出測試結果,說明整個應用程序的部署和使用達到了安全隔離的要求。
(1)測試l測試用例:測試ObjectStore的隔離性,獲取列表用戶的ObjectStore列表,按應用程序的邏輯設定,每個租戶只可能有一個ObjectStore,并且原始名稱為HRStore,經(jīng)過平臺應用程序部署加上前綴后,應該變成類似Txxxxx—HRStore的形式。如果測試失敗,用戶應該訪問到不止一個ObjectStore,或ObjectStore的名稱不正確。
輸入數(shù)據(jù):租戶的企業(yè)ID eFuture,登錄的用戶名herry和密碼123。
預期結果:獲取到ObjectStore的數(shù)量是1,名字是T2ep1 95r—HRStore。
實際結果:獲取到ObjectStore的數(shù)量是1,名字是T2ep1 95r— HRStore。
結論:經(jīng)過多組數(shù)據(jù)測試,測試結果都是正確的。因此,證明了ObjectStore的安全隔離性。
(2)測試2測試用例:測試共享Region中對WorkQueue的訪問。
WorkQueue可以理解為FileNet工作流的任務節(jié)點上的執(zhí)行角色,應用程序中有名為ResumeDistribution的WorkQueue,用于定義簡歷分發(fā)這一步驟的執(zhí)行角色。由于是多家企業(yè)共享Region,因此WorkQueue的名字在部署時變?yōu)轭愃芓xxxxx— ResumeDistribution的形式。如果測試失敗,用戶可能會訪問到多個同名的WorkQueue或者是錯誤的名字。
輸入數(shù)據(jù):租戶的企業(yè)ID eFuture,登錄的用戶名herry和密碼123。
預期結果:獲取到以ResumeDistribution為結尾名稱的WorkQueue的數(shù)量是1,名字是T2epI95r ResumeDistribution。
實際結果:取到以ResumeDistribution為結尾名稱的WorkQueue的數(shù)量是1,名字是T2ep195r_ResumeDistribution。
結論:分幾組數(shù)據(jù)測試后,測試結果都是正確的。因此,證明了共享Region的安全隔離性。
(3)測試3測試用例:可強行訪問不屬于企業(yè)自己的Object Store,科技行政管理中建立公眾代表聽證制度按ACL的設定,應該返回空,如果不是空,則說明隔離數(shù)據(jù)失敗,用戶仍然可以通過非法的數(shù)據(jù)訪問訪問到不屬于自己的ObjectStore。
輸入數(shù)據(jù):租戶的企業(yè)ID:eFuture,登錄的用戶名herry和密碼123,強行訪問的不屬于自己的ObjectStore名字T 1 0cdsco— HRStore。
預期結果:獲取到的ObjectStore為null。
實際結果:獲取到的ObjectStore為null。
結論:分幾組數(shù)據(jù)測試后,測試結果都是正確的。因此,證明了用戶無法從非法途徑訪問數(shù)據(jù)。
5 結束語
本文研究FileNet的核心架構,提出一種基于中間件的資源獨占金融危機后人力資源管理的策略探究和共享方法,以解決多租戶技術中資源隔離問題,并通過設計提供多租戶API接口來簡化多租戶BPM應用程序的開發(fā)。本文研究了多租戶技術中的安全隔離問題,下一步工作將研究性能隔離問題,例如當一個租戶的應用程序發(fā)生故障時,不能影響到其他租戶的可用性,或者當服務器故障時,如何應對服務器當中所有租戶的故障轉移等。
轉載請注明出處:拓步ERP資訊網(wǎng)http://www.ezxoed.cn/
本文標題:業(yè)務流程管理(BPM)即服務中的多租戶問題研究
本文網(wǎng)址:http://www.ezxoed.cn/html/consultation/1081965103.html