基于WF State Machine的UML Communication Diagram动态构建及测试

摘 要:在基于UML的业务流程分析与设计过程中,从静态模型分析到动态模型构建,经过一系列抽象转换和代码实现,往往满足不了业务需求,缺少一种所见即所得的业务过程实现。在探索UML Communication Diagram和WF State Machine业务流程映射关系的基础上,选取UML用户指南中典型案例,研究从Communication Diagram到State Machine编程模型之间的静态映射和动态规则转换,基于WF可视化地实现了动态构建与测试,解决了从分析、设计到构建的无缝转换。
关键词:UML;Communication Diagram;WF;State Machine
中图分类号:TP311.51 文献标识码:A
1 引言(Introduction)
UML(Unified Modeling Language)作为标准建模语言,适用于面向对象的业务流程分析与设计,但在具体的开发构建中,经过层层迭代[1,2],存在语义上的不一致和不精确等缺点,不利于进行形式化的分析和验证。在UML1.x协作图基础上改进而来的UML2.0通信图,强调对象之间结构关系的通信交互,但缺乏对静态语义和动态语义的可视化编程实现[3-5]。WF(Windows Workflow Foundation)是微软推出的可视化的工作流编程引擎,基于业务流程邏辑关系和条件,可以无缝的实现UML模型到业务流程工作流转换。WF提供的State Machine开发模型,由状态机和状态对象组成,在状态变迁的驱动下,可以无缝地实现通信图对象之间的通信协作[6-8]。因此,探索一种从UML Communication Diagram静态建模到可视化的动态测试,实现流程建模语义上的一致性和无缝转换具有实际意义。
本文在探索UML Communication Diagram和WF State Machine业务流程映射关系的基础上,选取UML用户指南中典型案例,研究从Communication Diagram到State Machine编程模型之间的静态映射和动态规则转换,基于WF可视化地实现了动态构建与测试。
2 映射关系及命名规则(Mapping relationship and naming rule )
2.1 从Communication Diagram到State Machine的映射关系
UML Communication Diagram和WF State Machine在可视化静态建模上具有一一的映射关系,同时State Machine在可视化的动态规则构建上又具有无缝的编程实现,从组件元素图形表示和含义上可以自然对应,从而实现无缝的模型转换,如表1所示,Communication Diagram中的Object(对象)、Link & message(链和消息)、Self Communication(自身通信协作)分别同State Machine中的State(状态)、Transition(变迁)、Self Transition(自身变迁转换)相对应。Communication Diagram突出Object之间组织关系的通信和协作,在对象之间通过链表示两个对象之间的存在协作关系,通过带有顺序标号的消息箭头表示对象之间的通信协作转换;State Machine中state之间通过Transition的有向箭头,明确表示两个状态之间的变迁转换关系。由此可以看出,两种模型从符号表示到信息表达,都可以在映射基础上,保证业务流程从分析到实现的可视化建模一致性,各取所长Communication Diagram侧重于业务流程分析与设计,State Machine侧重于可视化的动态实现,在随后的模型构建中我们会详细描述。
2.2 典型Communication Diagram示例
为深入说明基于State Machine的Communication Diagram动态构建及测试,我们选取了UML用户指南中的Communication Diagram的典型示例[1],从模型元素的信息表示到规则转换进行深入的探索。如图1学校里登记一个新生通信图示例所示,显示了四个对象(r、s、sc、c)之间的通信协作关系,图中典型地包括了Communication Diagram的对象、链和消息,以及自身协作的组件元素。通信协作从r登记代理对象创建一个s学生对象开始,把学生加入到sc学校中,然后告诉s去登记,s调用自身的课程计划,获取必须注册的课程对象集合,然后s循环地将自家加入到c课程对象后,完成相关注册登记后提交到sc对象,最后sc学校向s学生发出成功登记通知。
2.3 命名转换规则
通信图表示对象之间的协作关系,通过分析映射关系,状态机之间可有多条状态转换路径,从而解决对象之间协作的方向问题,通信图中的对象元素都可以通过WF State Machine中的编程模型来无缝映射,基于此给出了命名转换的规则。通信图中的对象映射成State Machine中的状态对象,对象之间的协作采用CT(CommunicationTransition)命名,如图1所示的通信图中“r:RegistrarAgent”等四个对象,对应命名为图2所示的映射模型中“r:RegistrarAgent_State”等四个State对象,组成一个NewStudentRegister_CommunicationObject_StateMachine。通信图中的链接关系命名为各个Sate之间的Transition,例如图1中对象r和s之间的协作关系,命名为CT_1表示两者之间的通信关系;通信对象之间的消息序列和变迁序列对应,在此基础上每个State对象之间的变迁由变迁的名称和动作组成,例如图1中对象r和s之间的通信变迁命名为CT_1:create(),UML通信图对象之间的协作往往缺失对象之间的交互响应信息,在图2中对应命名给出,例如CT_1.1_Response(),表示对CT_1协作的第1次响应。这样的命名规则不仅保证了图形转换构建过程中的一致性,也加强了动态的构建和测试,便于分析追溯和扩展。
3 转换构建(Transition and construction)
3.1 静态的顶层映射转换
Communication Diagram描述对象之间的结构关系,依据前面的映射关系和命名规则,首先完成静态的顶层映射转换。如图2所示,基于State Machine的学校登记一个新生顶层映射模型所示,Communication Diagram示例(如图1)中的“r:RegistrarAgent”“sc:School”“s:Student”“c:Course”等对象被映射成对应的状态对象“r:RegistrarAgent_State”“sc:School_State”“s:Student_State”“c:Course_State”。Communication Diagram对象之间的链和消息被转换为State之间的转换,分别以(CT_1、CT_1.1);(CT_2、CT_2.1);(CT_3、CT_3.1 、CT_3.2:、CT_3.2.1;CT_3.3);(CT_3.4、CT_3.4)相互之间的通信协作。状态对象“r:RegistrarAgent”存在三个发出的通信消息,其中“CT_1:create()”“CT_3:regeister()”是r对象向s对象发出的通信信息,“CT_2:addStudent(s)”是r对象向sc对象发出的通信信息。同理“s:Student_State”状态存在五个发出的通信信息,“sc:School_State”和“c:Course_State”分别存在两个和一个通信变迁。可以看出,在基于State Machine的学校登记一个新生顶层映射模型中,Communication Diagram的组织对象和消息链,无缝地转换为State Machine可视化模型,实现了静态模型信息的转换。但是,通信如何触发、协作如何交互,规则如何动态变迁,Communication Diagram中都没有显式的呈现。因此我们需要借助WF中可视化编程优势,进一步的构建业务流程状态变迁。
3.2 动态的规则构建
Communication Diagram中对象之间的通信协作,可以借助WF State Machine可视化的状态变迁来动态实现。为便于动态规则转换,如图3所示,通信协作及控制变量所示,定义了三个变量,分别为ct、register、schedule,其中ct为StateMachine的全局通信转换变量,并给出了初始值“starting”作用于整个NewStudentRegister_CommunicationObject_StateMachine范围,同时定义了两个局部变量,并给出初始值为“true”,作用于“s:Student”对象,用于控制该状态对象的两次动态自身转换的循环控制。
如图4所示,s:Student状态对象动态转换模型所示,“s:Student”对象的通信协作采用Switch多分支判断模式,在分支判断中以全局通信变量“ct”为控制条件,将对象之间的消息触发条件,显式地配置在各个对应的分支中,可以清晰地看出每一个通信转换所对应的变迁和消息,这同通信图中链和消息一致对应,触发对应的分支流程。每个通信变迁中完成协作对象的触发转换,如图5所示,在触发器启动的情况下,当通信协作信息“CT_1:create()”到来后,执行“create_Action”动作,创建一个student对象;经过CT_1通信协作转换,显式地表明源(Source)状态对象“r:RegistrarAgent_State”和目标(Detination)状态对象“s:Student_State”之间的通信协作关系。
4 动态测试(Dynamic testing)
经过基于WF的可视化编程转换,实现Communication Diagram从静态的映射到动态规则构建,进一步地完成了动态测试,如图6所示,基于WF的学校里登记一个新生通信图动态测试所示,图中State Machine工作流活动对象“nsr”,进入WF工作流引擎,有序地完成状态对象之间的通信协作。从测试结果可以清晰的看出组织对象间的交流协作过程,实现了业务流程分析到可视化实现的透明轉换。
5 结论(Conclusion)
在软件系统分析与设计过程中,语义的一致性和准确性一直都是关注点。探索和研究一种从静态模型到动态规则转换的可视化实现方式,具有必要性。将WF State Machine的可视化编程及动态规则转换优势应用于Communication Diagram的对象之间的通信协作实现,显式地将对象之间的交互关系和动态通信协作变迁规则结合,构建基于State Machine的可视化Communication Diagram测试模型,实现了从UML可视化建模到WF可视化映射和测试,解决了从分析、设计到构建的无缝转换,具有实际意义。
参考文献(References)
[1] Grady Booch,James Rumbaugh,Ivar Jacobson[美].UML用户指南[M].北京:人民邮电出版社,2013,1:191-195.
[2] Object Management Group.Unified Modeling Language.Formal[S].OMG,2017.
[3] Alexander Knapp and Till Mossakowski.UML Interactions Meet State Machine—An Institutional Approach[C].7th Conference on Algebra and Coalgebra in Computer Science,2017(15):1-15.
[4] 张姝,戎玫,张广泉.基于时序逻辑的UML2.0通信图语义研究[J].计算机工程与设计,2008,29(21):5601-5604.
[5] 张峻,张广泉,王辉,等.UM L 2.0 通信图的一种测试用例生成方法[J].苏 州 大 学 学 报(自然科学版),2007,23(2):36-42.
[6] Microsoft.the programming model,samples,and tools of the Windows Workflow Foundation(WF)[EB/OL].https://docs.microsoft.com/en-us/dotnet/framework/windows-workflow-foundation/index,2017-03-03.
[7] 钱维平,王坚.基于WF状态机工作流的日常工作管理系统的设计与实现[J].机电产品开发与创新.2015,28(1):81-83.
[8] 冯倩,董丽丽.基WF状态机工作流的研究与应用[J].电脑知识与技术,2008,4(8):2263-2265.
作者简介:
孔令东(1973-),男,博士,讲师.研究领域:软件工程,工作流技术.
相关文章!
  • 融合正向建模与反求计算的车用

    崔庆佳 周兵 吴晓建 李宁 曾凡沂<br />
    摘 要:针对减振器调试过程中工程师凭借经验调试耗时耗力等局限性,引入反求的思想,开展了

  • 浅谈高校多媒体教育技术的应用

    聂森摘要:在科学技术蓬勃发展的今天,我国教育领域改革之中也逐渐引用了先进技术,如多媒体技术、网络技术等,对于提高教育教学水平有很

  • 卫星天线过顶盲区时机分析

    晁宁+罗晓英+杨新龙<br />
    摘 要: 分析直角坐标框架结构平台和极坐标框架平台结构星载天线在各自盲区状态区域附近的发散问题。通过建