SaaS软件服务基于大规模定制的业务逻辑框架研究*

2011-06-27 02:30罗小利吴清烈
电信科学 2011年9期
关键词:业务流程构件个性化

罗小利,吴清烈

(东南大学管理工程研究所 南京211189)

1 引言

“软件即服务”(software as a service,SaaS)是基于互联网的软件服务交付和提供模式,用户不用购买软件,改向软件服务商租赁,以“按需使用,按需费用”方式消费[1]。SaaS的两大亮点是基于Internet的提供和服务形式的托管[2],是未来软件发展的一大趋势。

大规模定制以批量生产成本和交货期限来满足用户个性化需求[3]。随着世界经济一体化,用户需求差异也越来越明显,企业面临的挑战也越来越严峻:满足用户个性化需要的同时也要注重低成本,高效率。大规模定制的对象既可以是产品,又可以是服务[4]。大规模定制为SaaS软件服务提供强有力的支撑。

在全球化的市场环境下,为了优化业务过程,很多企业经常会进行业务流程重组,这就造成业务过程的动态不稳定,对各种软件的需求也会发生变化,这就要求SaaS模式的各种软件能动态适应持续变化的业务过程,具备可定制性和柔韧性。在提供个性化软件服务的前提下,为了降低成本、提高效率,SaaS软件服务大规模定制是SaaS应用的一个重要突破口。为此,本文提出SaaS软件服务基于大规模定制的业务逻辑框架,当面对不同客户的需求或者其需求发生变化时,只需要更改相应的软件构件,通过事先定义好的构件接口,快速组装应用软件,体现SaaS软件服务的柔性以及企业的柔性,对SaaS应用具有重要意义。

本文首先分析SaaS软件服务应用大规模定制的必要性,提出SaaS软件服务基于大规模定制的业务逻辑框架,解决SaaS软件服务批量定制问题;接着对此框架进行分析,详细描述如何寻找个性化定制点集以及应用软件的定制生成算法;最后用案例证明SaaS软件服务大规模定制业务逻辑框架的可行性。

2 SaaS软件服务大规模定制业务逻辑框架的设计思路

不同行业、不同管理模式对同一软件的需求是不一样的,但是相同行业、相同管理模式、相同规模所需要同一应用软件却大体相同,所以软件生产不是面向单个客户的需求,而是面向特定行业市场的需求[5],这为SaaS软件服务采用大规模定制提供了可能性。

大规模定制的重要特点就是规模经济效率,而SaaS软件服务商与客户是一对多的关系。每个企业对应用软件的需求是不同的,即使是同一企业,由于市场的变化,企业的产品或服务结构、生产规模以及业务过程都会发生变化,其对应用软件的需求也会发生变化,这就要求SaaS软件服务商提供的软件服务不仅要满足客户各式各样的需求,而且要动态适应不断变化的业务过程[6,7]。

根据以上两点,本文提出SaaS软件服务大规模定制的业务逻辑框架,确保企业所租赁的软件能紧密匹配企业经常改动的业务流程模型,增加应用软件的柔性。其实现途径为:对企业进行业务流程建模,将企业业务过程抽象成软件业务构件,存储在软件构件库中,当为客户定制软件时,以客户需求为基础,选择适合客户的软件业务构件,通过业务构件的组装或重组,生成满足客户个性化需求的应用软件,实现软件的敏捷生产。这种方式,既降低了软件生产成本,又可以为广大客户提供个性化软件服务。

SaaS软件服务大规模定制的业务逻辑框架可使客户或其管理员以熟悉的方式快速构建动态业务流程模型或对其调整,把企业的业务流程作为输入,在标准的企业参考业务流程模型基础上,迅速地将业务流程映射到所需的软件系统上,该系统就会自动配置,能够按企业的需求来运行,这是一个动态过程,是自动完成的,不需要客户手工维护和安装一系列的驱动。当客户的业务流程发生变化时,基于大规模定制的SaaS软件服务不需要对原有租赁软件的全盘否决,只需更改业务流程模型,就可以自动生成客户所需软件,这有利于提高软件的适应性和柔性,降低成本提高效率,以期在竞争激烈的市场环境中求得生存和发展。

3 SaaS软件服务基于大规模定制的业务逻辑框架设计

SaaS软件服务大规模定制的业务逻辑框架的整体结构如图1所示,包括面向客户需求分析的动态业务流程模型、配置文档、配置引擎、建模资源库、软件构件库、应用系统文档。

根据上述框架,业务逻辑的定制过程可以分为如下几步。

3.1 建立面向客户需求的动态业务流程模型

面向客户需求分析的动态业务流程模型包括客户初始订单、客户需求分析、动态业务流程模型。需求分析输入的是企业的初始订单(即客户需要租赁的软件类型)。需求分析主要输出的是动态业务流程模型。

(1)客户需求分析

客户需求分析主要包括以下步骤:①软件运营环境分析;②用户需求和业务状况调查;③业务状况分析、强化用户需求;④确定软件的总体目标和评价标准。

(2)动态业务流程模型

动态业务流程模型是对企业基本过程进行可视化描述,是在企业参考业务流程模型基础上建立的。企业参考业务流程模型代表某个领域的业务流程模型,存放在建模资源库中,为建立动态业务流程模型提供强有力的支持。同时根据客户自身的需求特点,动态业务流程模型也包括可定制的业务元及其之间的约束和依赖关系。其中业务元是由一系列活动及活动之间的连接符组成,是具有一定意义的相对独立的最基本成分;依赖是业务元之间存在的值与规则互为条件不可分离的关系;约束是业务元对输入值、输入规则的域值要求。当添加或删除业务元时须定义或删除与这个业务元相关联的约束和依赖关系。

3.2 生成配置文档

根据建立的动态业务流程模型,运用动态个性化定制算法寻找个性化定制点集以及它们之间的时序关系[8],并把它翻译成配置引擎能够识别的格式,生成配置文档。个性化定制点集是客户根据自身的特点需要向软件服务商进行定制的元素集合。

3.3 选择合适的软件构件组装或重组成应用系统

以软件构件库为基础,将动态业务流程模型映射到软件构件库中,根据配置文档在软件构件库中选择合适的软件构件,如果没有合适的软件构件,则定义新构件并把它加入构件库中,把检索到的构件进行集成组装或重组生成客户所需要的租赁软件。

软件构件既可独立运行,也可与其他构件重构成一个新的软件系统[3]。软件构件分为领域共性构件和个性构件。领域共性构件是对特定行业、特定领域进行分析,剥离出一些个性的需要做大量更新的软件成分,产生出在一定领域应用系统共同具有的架构。个性构件是客户的需求以及应用系统的个性、变化成分。

3.4 生成应用系统文档

对客户定制的租赁软件进行描述,生成应用系统文档,以便以后查询、优化,保存在数据库中。

此框架把大规模定制的管理理念应用到SaaS模式,在满足客户个性化需求的前提下,降低成本,实现应用软件的敏捷成产,有如下优势。

(1)应用系统具有柔性和灵活性,能适应企业的不断发展变化

动态业务流程模型抽象描述了客户的业务处理过程,反映了客户对租赁软件的特殊需求,通过个性构件实现。动态业务流程模型能随着市场环境的变化而变化,从而使其映射的应用系统动态满足客户新需求。

(2)充分利用资源,实现应用软件的敏捷生产

在建模资源库中抽取客户所在领域的企业参考业务流程模型,确定其所对应的构件,在软件构件库中检索,对于领域共性构件可以直接复用或者修改后复用。这样可以大大降低成本,提高应用软件的生产效率。

(3)定制操作简单

客户或者客户的管理员不需要具备代码编程能力,只需要确定企业的业务流程模型,就会自动映射客户所需求的应用系统。

(4)应用系统易于维护和升级

动态业务流程模型与软件构件相互隔离,领域共性构件升级不会影响客户的个性化定制,客户的个性化定制也不会影响到其他客户的正常使用,更有利于应用系统的维护和升级。

4 SaaS软件服务基于大规模定制的业务逻辑框架的实现

基于大规模定制的SaaS软件服务首先需要找到个性化定制点集,然后在软件构件库中检索相应的构件,对这些构件进行组装生成客户所需要的应用系统。

4.1 动态个性化定制算法

动态个性化定制算法就是找到个性化定制点集以及它们之间的时序关系。本文以业务元为单位研究业务元及其约束依赖关系的改变对应用系统造成的影响。

企业的业务流程可以抽象为一个有向图,业务元是有向图的顶点,业务元之间的约束依赖关系是有向图的弧,记为D=(V,A)。在介绍动态个性化定制算法前,先定义如下定理作为此算法的依据。

定理1业务元和其约束依赖关系组成的图D为简单有向连通图。

证明 假设业务元和其约束依赖关系组成的图不是简单有向连通图。则可以分如下几种情况来讨论。

(1)D不是有向连通图

如果D不是有向连通图,即存在两顶点u、v,它们之间不存在一条链,即业务元u和v之间没有约束与依赖关系。这与企业的业务流程图相悖,任两个业务元之间都可以通过中间业务元以及它们的约束依赖关系相连接。所以有向图D是连通图。

(2)D存在回路或者多重弧

如果D存在回路,即至少存在一条回路,(u1,a1,u2,a2,…,ai,ui),a1∈A。如果 D 存在多重弧,即埚a1,a2,a1∈A,a2∈A,且a1,a2的起点和终点相同。这与客观现实不符,因为任何高效企业都不存在着循环或者重复操作。所以有向图D是简单图。

综上所知,有向图D是一个简单有向连通图。证毕。

根据定理1,动态个性化定制算法如下:

S表示个性化定制点集,P标号表示此顶点属于S,T标号表示此顶点不属于 S,d(vi)表示顶点 vi的入度,d′(vi)表示顶点vi的出度,λ(vi)=m表示顶点vi的前一个顶点是vm。

(i=0)令 Si={vs},P(vs)=0,λ(vs)=0,对每一个 v≠vs,令T(v)=∞,λ(v)=M,k=s。

(1)如果 d′(vi)=0,vi∈Si,算法终止,这时对每个 vi∈Si,d(vi)=0;否则转入(2)。

(2)考查每个使(vk,vj)∈A,且 vi埸Si的点。如果 d(vj)>0,则把 d(vj)=d(vj)-1,T(vj)=d(vj),λ(vj)=k;否则转入(3)。

(3)令 T(vji)=min(T(vj)),vi埸Si。如果 T(vji)=0,则把 vji的T标号变成 P 标号,P(vji)=T(vji)。令 Si+1=Si∪{vji},k=j,i=i+1,转入(1);否则终止,有向图D存在回路或多重弧。

根据此算法可以找到所有的个性化定制点及其之间的时序关系。

4.2 配置引擎实现算法

根据动态个性化定制算法的输出结果,配置引擎主要负责解析配置文档、调用构件库和添加新构件的工作。解析及调用构件过程涉及到的主要算法包括模糊查找、最优匹配等。配置引擎根据配置文档,将对其每一个命令进行解析,并查找构件库,根据关键字匹配情况,即优先级以及该构件以往的调用情况,选出最优解。当最优解与命令完全匹配时直接输出该构件;当匹配程度较小,则对最优构件进行修改、继承、补充等生成满足命令要求的新构件,将其输出;当在软件构件库中找不到匹配程度相符的构件,则根据命令的要求开发新构件,并将其标准化添入构件库中,输出该构件。具体算法如下:

void main()

{read file1;

componentlist list1;

foreach command command1 in file1//根据配置文档命令检索构件库,把最优匹配的构件加入链表list1

{component component1=function_add(command1);

list1.add(component1);

}

}

componentfunction_add (command command1) //function_add()即对命令行解析查找构件,并输出最优结果

{component component1;

componentlist list2;

foreach component component2 in componentlib//遍历构件库中的所有构件

{ //若构件component2的关键字与命令的关键字相同,则设置该构件的优先级为2,并加入链表list2

if component2.keyword equals command1.keyword

{component2.priority=2;

list2.add(component2);

}

//若构件component2的关键字与命令并非完全匹配,则设置该构件的优先级为1,并加入list2

else if component2.keyword incomplete_matching command1.keyword

{ component2.priority=1;

list2.add(component2);

}

}

foreach component component3 in list2//遍 历 list2 的所有备选构件。找到最匹配的构件并输出

{ if component1 equals null//component1若为空,则把list2中的第一个构件赋值给component1

{ component1=component3; }

//如果component3的优先级高于component1,则把component3赋值给component1

else if component3.priority>component1.priority

{ component1=component3; }

else if component3.priority equals componet1.priority

{ //若二者优先级一样,且component3的以往调用次数高于component1,将其赋值给component1

if component3.invokingcount>component1.invokingcount

{ component1=component3; }

}

}

//如果要输出的构件的优先级为1,说明该构件与命令只是部分匹配,则需要对该构件进行相应的修改或添加新构件,同时将修改后的构件标准化作为新构件添加到构件库

if component1.priority equals 1

{ Modify (component1,command); //修改构件component1,使其满足command对构件的要求

Addtolib(component1); //将修改后的构件作为新构件添加到构件库里

}

return component1;

}

配置引擎实现算法可以生成客户所需求的应用系统。

5 SaaS软件服务大规模定制业务逻辑框架举例

以某学校向软件服务商租赁能满足其要求的考试系统为例,验证SaaS软件服务基于大规模定制的业务逻辑框架的可行性。

5.1 建立面向学校需求的动态业务流程模型

在领域分析方法确定的考试系统参考业务流程模型基础上,根据此学校的需求,快速建立的动态业务流程模型如图2所示:

在图2中,每个业务元都由一系列的活动及连接符组成,例如登录包括注册、用户名验证、密码验证等活动及其之间的连接符。每个业务元也有依赖与约束关系,像在线测试,它必须在规定的时间范围内答题,依赖于随机组卷。增加或删除业务元时,必须增加或删除与其相关的一系列因素。当删除某个业务元及其依赖关系后,若存在着没有依赖关系的业务元,则必须定义新的依赖关系,例如删除阅读注意事项这个业务元及其依赖关系后,必须定义登录与随机组卷之间新的依赖关系。通过建立动态业务流程模型来生成考试系统,客户管理员或客户不需要具备编程知识,只需详细了解该学校的业务流程,非常的简单方便。

5.2 寻找个性化定制点集,生成配置文档

在动态业务流程模型的基础上,根据动态个性化定制算法,可以找出所有的个性化定制点以及它们之间的时序关系,结果为:登录、阅读注意事项、随机组卷、在线测试、提交答卷、评分与分析、成绩查询、退出。把这些业务元按照顺序翻译成计算机能够识别的语言,生成配置文档。

5.3 生成考试系统

配置引擎实现算法根据配置文档,在软件构件库中检索相应的构件,有些领域共性构件可以直接复用,像退出构件;有些构件必须进行修改才能输出,像登录构件;有的则需要重新开发,像评分与分析。把这些输出构件进行集成组装,即可生成满足学校要求的考试系统。

5.4 存储考试系统的信息

对生成的考试系统进行描述,包括考试系统属性、该学校名字、升级时间、启用日期等,以便以后查询,保存在数据库中。

6 结束语

本文提出了SaaS软件服务基于大规模定制的业务逻辑框架。将企业的业务过程抽象成软件业务构件,存储在软件构件库中,通过对客户进行需求分析建立动态业务流程模型,运用动态个性化定制算法找出所有个性化定制点及其之间的时序关系,并把它翻译成计算机能够识别的语言,形成配置文档,配置引擎实现算法根据配置文档,在软件构件库中检索相应的构件,并将其组装或重组生成满足客户个性化需求的应用软件。这种方式既降低了生产成本又能快速地满足客户的个性化需求。

1 Jacobs,Dean.Enterprise software as service:online services are changing the nature of software.ACM Queue,2005,3(6):36~42

2 Papazoglou M P,Traverso P,Dustdar S,et al.Service-oriented computing:state of the art and research challenges.IEEE Computer,2007,40(11):38~45

3 黄作明.ERP产品的批量定制研究.北京:中国时代经济出版,2007

4 关增产.面向大规模定制的服务模块化研究.价值工程,2009(11):99~103

5 彭荣.SaaS模式下多租户系统架构及关键技术研究.大连:大连海事大学,2010

6 陈伟,沈备军,戚正伟.面向SaaS应用的业务逻辑定制框架的研究与实现.计算机应用研究,2011,28(1):155~158

7 史玉良,栾帅,李庆忠等.基于TLA的SaaS业务流程定制及验证机制研究.计算机学报,2010,33(11):2055~2067

8 管永明.多租户软件中动态个性化配置与定制技术研究.山东:山东大学,2009

猜你喜欢
业务流程构件个性化
RPA机器人助业务流程智能化
坚持个性化的写作
企业财务管理、业务流程管理中整合ERP之探索
新闻的个性化写作
互联网+背景下物流公司的业务流程再造
基于财务业务流程再造的ERP信息系统构建探析
建筑构件
上汽大通:C2B个性化定制未来
建筑构件
建筑构件