1 概述
软件即服务(Software as a Service,SaaS)是在21世纪初发展起来的一种创新的软件应用模式.。随着SaaS的不断发展,其应用场景不同,业务流程也越来越多样化。业务流程管理系统(Business Process Management System,BPMS)是一个可以设计和优化流程的软件。传统的BPM 套件是在企业内部独立部署的,对于大型企业来说, 过长的应用开发周期和复杂的升级流程难以适应市场需求的快速变更;对于中小型企业来说,通常难以负担BPM 套件昂贵的费用和相关IT支持。
SaaS模型可以解决BPM 在以上应用的窘境。两者的结合产生了一种新的概念:业务流程管理即服务(BusinessProcess Management as a Service,BPMaaS)。BPMaaS是SaaS的一种应用,它将软件限定在业务流程的范围内。SaaS中的关键技术是多租户技术 J。为此,本文针对BPMaaS中多租户问题进行研究,在分析国内外发展的基础上,提出一种资源独占和共享解决多租户问题的方法,并通过实例对该方法进行验证。
2 关键问题
一个多租户的SaaS应用首先需要解决的是数据隔离问题 ,软件即服务的关键问题之一也是数据隔离问题Hj。这需要即保证租户之间最大化资源的共享,又能够区分属于各自的数据0 。
相关的数据库即服务提供了一些数据隔离的方法,目前有3种数据的共享和隔离模式可保证数据的安全隔离,分别为:独立数据库,共享的数据库不同的schema,共享的数据库相同的schema 。
独立数据库的模式开发成本很低,编程模型不需要很大的改变,但随着共享模式的引进,此时还要兼顾到共享模式下的数据隔离,因此,开发成本升高。但这几种模式的选择需要各个因素的平衡。针对单个应用,多租户的引入会增加应用程序开发部署和管理的复杂性,但也有其优势。隔离级别的降低也增加了扩展能力,可满足不同租户对服务质量的要求目前有2种多租户的模式:(I)N用多个应用程序支持多租户;(2)利用一个应用程序支持多租户。一个应用程序实例的多租户问题较为广泛。笔者认为,如果利用每个应用实例分派给一个租户的做法,只能支持很少的租户数量,但在通常情况下,租户的规模都不大,笔者期望的是单个应用能够支持较大数量的租户使用,从而提高计算资源的利用率 。
3 基于中间件的资源独占和共享方法
业务流程中间件种类繁多,它不同于数据库具有固定的引擎标准,因此,需要选取一个流程中间件作为流程引擎进行研究。对不同的流程引擎的研究方法不同。本文选取IBMFileNet架构,它是一个企业级业务流程管理套件,拥有全面、整合的产品,可以加速企业内部以内容为中心的流程应用的部署。
图1是一个FileNet架构完整的应用实例,包含数据库实例、LDAP实例、Content Engine实例、Process Engine实例和Application Engine实例。
图1 FiIeNet应用实例
本文要解决的问题是:在FileNet架构的基础上,从资源利用的角度出发,剖析该架构中资源共享和独占模式,使FileNet的实例资源能够最大限度地被利用,并满足不同租户的服务质量要求。在一个规模很小,用户数不多的企业应用中,让其独占一个FileNet的实例是一种对资源的浪费,如果多个小型企业能够共享一个FileNet实例,无论从成本还是模型架构上来看,都是最优的。
3.1 共享和独占模式设计本节将分析FileNet体系架构下可以共享的关键环节,其中每一个环节都直接和数据相关。
(1)数据库与数据库紧密关联的是Content Engine中的ObjecStore,多个Object Store可以同时指向相同的数据库,因此,数据库可以被Object Store独占或者共享。
(2)Region多个租户可以共享Region。对于独占Region而言,FileNet本身的体系结构设计即可支持数据的隔离,无需增加编程复杂度和额外的配置,如果Region过多,严重影响性能,因此,为了支持更多的租户使用Region,必须引入同一个Region共享数据的方式;对于共享的Region,必须引入FileNet本身的安全模型,对Region中内容的权限加以控制,另外对编程的要求也相应增加,Region中的内容必须通过BPMAAS 封装的多租户应用程序接口(ApplicationProgramming Interface,API)获取,否则会访问到自己企业外部的数据,API将在下文讨论。
(3)Object StoreObject Store包含的对象很多,其复杂度远超Region,因此,不能采用共享Object Store的方式,但Object Store可以共享数据库,而Object Store仅是数据库上层的一个逻辑划分,因此,不共享Object Store的设计可以省略。
(4)LDApLDAP是FileNet架构中不可或缺的用户认证和授权中间件,基于FileNet的应用程序必须使用LDAP,因此,共享LDAP的解决方案也集成在BPMaaS核心中。
(5)Content Engine和Process Engine在这个粒度上,独立和共享都是可行的,依照目标客户的规模来决定。
各种情况下的资源共享和独占模式如表1所示。不同规模的租户对服务质量的要求和资源的利用是不同的。系统设计了4种模式来满足不同租户的需求。B、C、D是重点实现的3个模式,而A是传统的应用程序离线部署的做法,本文不予讨论。
表l FileNet的资源共享和独占模式
3.2 多租户应用程序接口本文在FileNet的基础架构上设计了数据共享模式,这是FileNet本身特性之外的内容,如果在没有经过二次封装的API基础上进行开发,可能会访问到错误的数据。为满足共享和独占模式的需求,笔者在一些系统关键点设计了使用多租户API开发应用程序,以保证多租户应用程序的正确性。
多租户API为开发支持多租户的BPM 应用程序提供了基本透明的、标准的数据访问和编程接口。多租户API类图如图2所示。
图2 多租户API类图
API结构包含了3个主要的接口类(IContentEngine、IProcessEngine、ILDAP)和2个实体对象类(ContentEngineEntity、LDAPEntity)。IContentEngine主要封装了FileNetContentEngine中的关键数据访问接I:1;IProcess Engine主要封装了Process Engine中的关键数据访问接I:1;ILDAP主要封装了LDAP的主要数据访问接I:1;contentEngineEnticy和LDAPEntity主要是2个对象复杂结构的实体类。
4 实例与验证
样例应用程序是从一个利用BPMaaS技术实现的企业资源计划(EntERPrise Resource Planning,ERP)项目中,抽取出的人力资源系统的一个业务 流程的实现实例。应用程序的核心思想未使用传统的基于数据库应用程序开发方式,而是基于业务流程和内容管理进行开发,对于“简历”,这正是非结构化的数据。
样例业务流程的UML活动图如图3所示,该图描述了样例应用程序的业务流程。流程中首先由应聘者在门户界面上搜索查询招聘信息,并提交自己的简历,由人事部门和面试人员分别面试审批之后,最终进行录用和作废处理。
图4 样例业务流程的UML活动图
该应用程序由5家企业同时使用,这5家企业的规模都较小,数据量不大,因此,本文采用表1中模式D的资源分配方式,即ObjectStore共享数据库、共享Region的方式。
数据暴露点主要为以下环节:
(1)ObjectStore每一个企业都独立分配了ObjectStore,虽然ObjectStore共享了数据库,但基于FileNet的安全模型,ObjectStore只能访问到数据自己的数据库表,不存在安全问题。
(2)RegionRegion中的内容已经被访问控制列表(Access ControlI ist,ACL)的严格控制。基于FileNet的ACL安全模型,不属于自己权限的内容是无法访问的,不仅是在界面这个级别,在API级别也是被严格控制,Region的内容虽然被共享,但ACL的设定已经在应用程序被订阅时完成,因此,也不会存在安全问题。
与以往企业内部的应用程序不同,在该程序中,用户登录时不但需要录入登录的用户名和密码,还要输入有效的企业ID,即租户ID来隔离不同企业的数据,只有三者同时匹配,才能成功登录。
JUnit是一个编写和运行自动化测试的框架。本文将使用JUnit对测试用例进行测试,并给出测试结果,说明整个应用程序的部署和使用达到了安全隔离的要求。
(1)测试l测试用例:测试ObjectStore的隔离性,获取列表用户的ObjectStore列表,按应用程序的逻辑设定,每个租户只可能有一个ObjectStore,并且原始名称为HRStore,经过平台应用程序部署加上前缀后,应该变成类似Txxxxx—HRStore的形式。如果测试失败,用户应该访问到不止一个ObjectStore,或ObjectStore的名称不正确。
输入数据:租户的企业ID eFuture,登录的用户名herry和密码123。
预期结果:获取到ObjectStore的数量是1,名字是T2ep1 95r—HRStore。
实际结果:获取到ObjectStore的数量是1,名字是T2ep1 95r— HRStore。
结论:经过多组数据测试,测试结果都是正确的。因此,证明了ObjectStore的安全隔离性。
(2)测试2测试用例:测试共享Region中对WorkQueue的访问。
WorkQueue可以理解为FileNet工作流的任务节点上的执行角色,应用程序中有名为ResumeDistribution的WorkQueue,用于定义简历分发这一步骤的执行角色。由于是多家企业共享Region,因此WorkQueue的名字在部署时变为类似Txxxxx— ResumeDistribution的形式。如果测试失败,用户可能会访问到多个同名的WorkQueue或者是错误的名字。
输入数据:租户的企业ID eFuture,登录的用户名herry和密码123。
预期结果:获取到以ResumeDistribution为结尾名称的WorkQueue的数量是1,名字是T2epI95r ResumeDistribution。
实际结果:取到以ResumeDistribution为结尾名称的WorkQueue的数量是1,名字是T2ep195r_ResumeDistribution。
结论:分几组数据测试后,测试结果都是正确的。因此,证明了共享Region的安全隔离性。
(3)测试3测试用例:可强行访问不属于企业自己的Object Store,科技行政管理中建立公众代表听证制度按ACL的设定,应该返回空,如果不是空,则说明隔离数据失败,用户仍然可以通过非法的数据访问访问到不属于自己的ObjectStore。
输入数据:租户的企业ID:eFuture,登录的用户名herry和密码123,强行访问的不属于自己的ObjectStore名字T 1 0cdsco— HRStore。
预期结果:获取到的ObjectStore为null。
实际结果:获取到的ObjectStore为null。
结论:分几组数据测试后,测试结果都是正确的。因此,证明了用户无法从非法途径访问数据。
5 结束语
本文研究FileNet的核心架构,提出一种基于中间件的资源独占金融危机后人力资源管理的策略探究和共享方法,以解决多租户技术中资源隔离问题,并通过设计提供多租户API接口来简化多租户BPM应用程序的开发。本文研究了多租户技术中的安全隔离问题,下一步工作将研究性能隔离问题,例如当一个租户的应用程序发生故障时,不能影响到其他租户的可用性,或者当服务器故障时,如何应对服务器当中所有租户的故障转移等。
转载请注明出处:拓步ERP资讯网http://www.toberp.com/
本文网址:http://www.toberp.com/html/consultation/1081965103.html