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