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