笪建莫启程耀坤汪培芬张毅吕永华
摘 要:作为业务过程中的一个重要组成方面,业务规则驱动业务逻辑的运行,业务规则的变化导致业务逻辑实现功能的变化。基于关注点分离的思想,将业务规则作为一个方面从业务逻辑中分离出来,并从更宏观的层面实现业务规则对业务逻辑的组织及驱动。业务规则不仅可以对单个业务逻辑构件内部的运行流程进行驱动,还可以对涉及多个业务逻辑构件的运行过程进行控制,并允许施加在业务逻辑构件上的规则构件可以同时为多个。同时,考虑到软件系统所处环境的日益复杂化,引入自适应机制,建立了三层的面向方面动态模型体系结构,设计出面向方面动态模型体系结构描述语言,基于Bigraph理论,建立了面向方面动态模型体系结构的语义模型,通过定义Bigraph反应系统来描述模型的动态变化,最后对模型动态变化后的完整性进行了验证。
关键词关键词:业务规则;Bigraph;Bigraph反应系统;面向方面动态模型体系结构
DOIDOI:10.11907/rjdk.161932
中图分类号:TP302
文献标识码:A 文章编号文章编号:16727800(2016)011001805
基金项目基金项目:
作者简介作者简介:笪建(1979-),男,江苏淮安人,硕士,淮安开放大学信息工程系助教,研究方向为软件工程、软件过程。
0 引言
作为业务过程中的一个重要组成方面,从一般意义上讲,业务规则实质上就是一组条件和在这组条件下进行的一组操作;而从软件工程的角度来看,可以将业务规则理解成业务逻辑执行的控制流程,规则组织并驱动业务逻辑的执行,从而实现系统设计目标。因此,本文基于关注点分离的思想,通过将业务规则从业务逻辑中分离出来,并从更宏观的层面实现业务规则对业务逻辑的组织及驱动。建立了三层的面向方面动态模型体系结构(Aspect-Oriented Dynamic Model for Structure of Architecture, AODMSA),基于Bigraph理论最终建立了AODMSA的语义模型,最后对AODMSA模型动态变化后的完整性进行了验证。
1 Bigraph简介及面向方面动态模型体系结构
Bigraph是由图灵奖获得者Robin Milner[1]和他的合作者于2001年提出的一种基于图形的形式化工具,主要用来为普适计算系统以及移动和并发理论建模。本文从静态结构和动态结构两个不同的角度对Bigraph进行阐述。从静态结构来讲,一个Bigraph可以分解为两个子图:位置图和连接图[2]。位置图用来表示各计算节点所在位置,节点之间可以相互嵌套,每一个节点分配一个控制,
控制可以用来描述一个节点拥有多少个端口,每一个端口对应一个连接,端口同时也可以通过名字来表示,名字分为外部名和内部名。首先给出Bigraph的定义。
定义1:Bigraph G=(V,E,Ctrl,GP,GL):I->J,I=
针对传统软件开发中的缺点,人们提出了面向方面的编程,它能很好地解决上述问题,其关键是识别和分离关注点[4]。本文基于关注点分离的思想,将系统中业务规则从业务逻辑中分离出来,通过定义相关的业务规则来决策业务逻辑的运行和调整;同时考虑到软件系统所处环境的日益复杂化,在本文中引入了自适应机制。其体系结构自底向上分为3层:环境层、规则层及行为层。其中,环境层由一些感知构件组成,感知构件用来感知环境的变化,向下输出上下文事件,并通过驱动连接件连接到规则构件上。驱动连接件对获得的上下文事件进行分析,作出相应的决策来建立规则层模型或者对规则层模型进行调整。规则层主要由一些规则构件所组成,规则构件分为原子规则构件和复合规则构件,原子规则构件就是一条规则,而复合规则构件则是由若干条紧密耦合的规则通过某种方式组合而成,这样可以实现对规则的重用。调用连接件用来连接相关的规则构件和行为构件,通过规则构件中定义的规则,就可以通过调用相关的行为构件来实现相应的业务规则,或者是对行为构件模型进行调整从而达到适应变化后的规则模型。面向方面动态模型体系结构如图1和图2所示。
在这种体系结构中,存在3种类型的构件,分别是:感知构件、规则构件及行为构件。感知构件主要用来感知环境的变化,对外输出上下文事件;规则构件封装了一系列规则,用来决策行为构件的运行;行为构件就是封装了相应业务逻辑的可组装的软件单元。同时也存在5种类型的连接件,分别是:上下文连接件,主要用来连接一些相关的感知构件;驱动连接件,主要用来连接感知构件和规则构件,通过感知构件输出的上下文事件来制定相应的业务规则;规则构件,主要用来连接规则构件;调用连接件,用来连接规则构件和行为构件,通过规则调用相应行为构件的运行;行为连接件主要是用来连接相应的行为构件。最后,在这种体系结构中也存在两种类型的配置:初始配置和动态重配置。初始配置主要是用来建立最初的体系结构模型,而动态重配置就是用来根据环境或者是需求的变化对体系结构模型进行调整。
2 面向方面动态模型体系结构
2.1 AODMSA中构件及连接件定义
对环境的显示表示是AODMSA模型实现软件自适应的基础,对环境的建模已经存在多种建模方法[15],本文主要是采用已经被广泛使用且易被管理的键值对模型。
定义2(上下文):上下文用来表示环境的一个维度,其定义来源于相应的上下文本体,它是一个三元组;ctx=(type,name,value)。其中,type用来表示上下文的类型;name是上下文的名字,value为上下文的值,每一种上下文在一个确定的时刻只有一个确定的值。
定义3(上下文事件):上下文事件用来表示上下文在时间上值的变化,它是一个三元组;ctxEvt=(ctx,value1,value2)。其中ctx为上述定义中的上下文,value1为ctx在某一个时间上的值,value2为ctx在下一个时间上的值。通过比较value1和value2的变化,就可以得到相应的上下文事件。
在AODMSA模型中,最重要的一层是规则层,规则层由一些规则构件组成,规则构件又可以分为原子构件和复合构件,而一个原子构件只包含一条规则。所谓规则就是在满足前置条件的情况下所进行的一组操作,而在这一组操作完成之后,又要满足某种规定的后置条件。复合构件则是由一组原子构件通过某种方式复合而成。因此,为了定义规则层的规则构件,首先要对规则进行相应的定义。而为了定义规则,首先需要给出前置条件和后置条件的定义。在本文中,将前置条件和后置条件及后面的条件都理解成一个特定的命题。
定义4(系统命题、规则):一个命题就是定义在一个特定空间S上的一个二元组,PROP=(id,trueSet),其中id为命题的唯一标识,而trueSet是该命题为真的所有常量的集合[6]。规则就是在满足前置条件下所进行的一组操作。因此,规则定义为一个二元组,rule=(pre,ops),其中pre表示为一个前置条件,ops为规则中所进行的一组操作。
定义5(感知构件、规则构件及行为构件):感知构件是封装了感知环境变化手段的可组装的软件单元,对外输出上下文事件,它是一个二元组,ctxComp=(ports,body)。其中,ports为感知构件的端口集合,每一个端口定义为一个二元组(type,control)。其中,type为端口的类型,和上下文的类型相同;control为一个二元组,control=(provid,reques),分别用来表示端口是请求端口还是提供端口;body为感知构件的内部实现。规则构件是封装了一系列规则的可组装软件单元,用来决策行为构件的运行,它是一个二元组,ruleComp=(ports,body)。其中,ports为端口的集合,body为规则构件的内部实现,假如一个规则构件是原子的,那么在body内面只包含一条规则。行为构件同样定义为一个二元组,behComp=(ports,body)。其中,ports为端口的集合,body为行为构件的内部表示。
定义6(上下文连接件、驱动连接件、规则连接件、调用连接件及行为连接件):上下文主要用来连接相关感知构件,对外向相关的感知构件输出上下文事件,它是一个二元组,ctxConn=(ports,ctxComps)。其中,ports为端口的集合,ctxComps为感知构件的集合。驱动连接件接收上下文构件输出的上下文事件并依此作出相应的决策来生成相应的业务规则,它的定义基于ECA(Event-Condition-Action)模式[5]。它是一个五元组,driveConn=(cComps,rComps,ports,conditions,actions),其中cComps为感知构件集合,rComps为规则构件集合,ports为驱动连接件角色集合,conditions为一系列命题集合,表示施加在环境上的一系列条件,actions为对规则模型所施加的一系列操作。规则连接件用来连接规则构件,它是一个二元组,ruleCon=(ports,rComps),其中ports为规则连接件角色集合,rComps为规则构件集合。调用连接件用来连接规则构件和行为构件,它根据规则构件内定义的一些相关规则来生成相应的行为构件模型或者是对已经生成了的行为构件模型进行动态调整,它是一个三元组,callerCon=(ports,rComps,bComps),其中ports为调用连接件角色集合,eComps为规则构件集合,bComps为行为构件集合。行为连接件用来连接行为构件,它是一个二元组,bCon=(ports,bComps),其中ports为行为连接件角色集合,bComps为行为构件集合。
2.2 面向方面动态模型体系结构描述语言
本文已建立了一个三层的面向方面动态模型体系结构模型,因而,需要定义出相应的体系结构语言(ADL),以便对AODMSA模型进行规约和分析。软件体系结构描述语言是对软件系统概念架构的描述,它必须能够支持体系结构中的构件、连接件及配置3个基本模块的显式规约[7]。本文考虑到引入自适应机制并且将环境作为一个显式部分引入AODMSA模型中,因此,定义出一种新的体系结构描述语言,它包括对环境、构件、连接件、配置及系统的描述。部分用EBNF定义的体系结构元素如下:
//单个系统体系结构的描述,它包含类型声明、配置声明及约束声明3个部分
//类型声明,它包含构件类型的声明和连接件类型的声明
//类型名字的定义
behaviorComp
//构件的声明,它分为两类:原子构件和复合构件
原子构建是指不具有内部结构的构件,它可能包含属性声明、约束声明、端口声明、上下文声明、规则声明及行为声明,而复合构件由多个构件和连接件组装而成,在规约的层次上需要表达成员之间的组合。在复合构件的声明中没有行为的定义,复合构件的行为由组成其内部各构件的行为并行组装而成,当一个构件是规则构件时,同样如此,只不过考虑的是规则。
//原子构件定义
//复合构件定义
//上下文声明
//规则声明,包含前置条件、操作声明
//操作行为声明,包含顺序、循环、条件3种规则行为,规则行为中的行为既可以在同一个行为构件中,也可以发布在不同的行为构件中
//规则行为
//规则行为声明,用构件名加行为声明组成
//前置条件声明
//行为声明,它包括发送信息、接收信息、内部行为、哑行为、顺序行为、并行行为、选择行为及循环行为
//连接件定义,包括属性声明、约束声明、端口声明及自适应声明
//自适应操作声明
//体系结构配置声明,包括新建构件和连接件、删除构件和连接件、添加构件和连接件、替换构件和连接件,并将两个构件组装成一个复合构件
2.3 AODMSA结构的 Bigraph模型
在给出AODMSA中的构件及连接的定义并用EBNF对它们的结构和行为进行规约之后,将这些定义好的构件及连接件映射到Bigraph上,就可以建立起AODMSA的语义模型,然后对该语义模型进行一系列的行为模拟,就可以在实施实际的调整之前获知调整后的实际系统是不是保持诸如完整性、一致性等性质,从而减少实际系统运行后期维护所要付出的代价及系统在运行过程中所出现的风险。首先,通过对AODMSA模型进行分析,其包含这样几种核心概念:构件、连接件、端口、角色、连接、内部表示及配置。利用Bigraph理论及定义1,可以很容易地将AODMSA模型中的相关元素映射到Bigraph上。其映射关系如表1所示。
定义9(Bigraph扩展的反应规则):扩展的反应规则是一个三元组,ER=(r,r′,constraints),其中r和r′分别为反应物和生成物,constraints为在实施这一条反应规则的过程中必须满足的约束条件的集合。
定义10(Bigraph扩展反应系统):AODMSA模型的扩展Bigraph反应系统(EBRS)是一个二元组,它一组Bigraph及一组反应规则,Bconstruct =(Kconstruct ,Rconstruct ),其中Kconstruct 为控制的集合,Rconstruct 为一组定义9中的扩展反应规则。
根据定义10中的反应规则,可以对AODMSA结构进行初始配置,配置完成后就建立了AODMSA结构的Bigraph模型。之后,根据环境变化,驱动连接件作出相应决策,对Bigraph模型中的规则层进行动态调整,从而实现虽然业务规则变化快速但是并不需要对系统中业务逻辑进行调整,达到了对行为层的一种无侵入式动态演化的目的。
3 AODMSA结构的Bigraph模型演化完整性验证
通过上述研究,可以建立起AODMSA结构的Bigraph模型,但是,在建立起模型之后,考虑到软件系统运行环境可能发生变化,需要对模型进行动态调整。而首要问题就是需要确定系统实施调整之后,该实际系统是否还能满足用户业务需求及系统的一系列约束条件能否满足等。通过定义10中的扩展Bigraph反应系统,可以很容易地对AODMSA结构进行动态调整,但是在调整过程中,需要确保不能违反系统中的一系列约束条件,即要保证系统的“完整性”。所以,应该在动态调整过程中对所使用的反应规则进行判断,看它们是否违反约束条件,假如在调整过程中有一个反应规则违反了约束条件,那么对于这一次动态调整应该予以终止。假如在每一步中所实施的反应规则都满足约束条件,那么,最后生成的模型也满足约束条件。
定理1:采用定义10中的EBRS来对AODMSA结构的Bigraph模型进行调整,假如每一次的反应规则都满足约束条件,那么最终调整后的Bigraph模型的完整性将得到保持。
4 结语
本文基于关注点分离思想,将业务规则从业务逻辑中分离出,借助于自适应思想,建立了三层的面向方面动态模型的体系结构;设计了面向方面动态模型体系结构描述语言;通过将AODMSA模型映射到Bigraph上,从而建立了AODMSA结构的语义模型,并且定义了相应的Bigraph反应系统,便于对Bigraph结构模型进行动态调整;最后,通过定理1可以对调整后的系统完整性进行验证。但是本文也存在一些不足:本文仅仅对AODMSA的结构建立了相应的语义模型,并未对AODMSA模型中的行为进行建模,当然也不能对系统动态调整后的一致性进行验证,需要在后续研究中加以改进。
参考文献:
[1] MILNER R.Bigraphical reactive systems:basic theory[C].the International Conference of Mathematicians,2001.
[2] JENSEN O H,MILNER R.Bigraphs and mobile processes(revised) [R].UCAMCLTR580.University of Cambridge,2003.
[3] 许可,王跃宣,吴澄.网格服务链模型的验证分析技术及应用[J].中国科学: F辑,2007,37(4):467485.
[4] MCCARTHY D,DAYAL U.The architecture of an active database management system[J].ACM SIGMOD Record,1989,18(2):215224.
[5] MEDVIDOVIC N,TAYLOR RN.A classification and comparison framework for software architecture description languages[J].Software Engineering,2000,26(1):7093.
[6] 陈洪龙,李仁发.基于Bigraph理论的动态演化软件相关特性分析与验证方法[J].小型微型计算机系统,2010(12):23052309.
[7] 汪玲,戎玫,张广泉,等.基于Bigraph的面向方面动态软件体系结构演化研究[J].计算机科学,2010,37(9):137140.
(责任编辑:孙 娟)