UML建模风格之顺序图

来源:互联网 发布:手机怎么开通淘宝店 编辑:程序博客网 时间:2024/05/16 11:07
5.2 创建交互视图

 

交互视图描述了实现系统行为角色之间的消息交换序列。分类角色是对交互中充当特殊角色的对象的描述。交互视图提供了系统中行为在全局的描述,显示了多个角色间的控制流程。交互视图用侧重点不同的两种图来显示:顺序图和协作图。

消息指角色间的单向通信,从发送者到接收者的携带信息的控制流。消息可能带有角色间传递值的参数。

顺序图和协作图均显示了交互,但它们强调了不同的方面。顺序图显示了时间顺序,但角色间的关系是隐式的。协作图表现了角色之间的关系,并将消息关联至关系,但时间顺序由于用顺序号表达,并不十分明显。每一种图应根据主要的关注焦点而使用。

a.顺序图

顺序图表示了随时间安排的一系列消息。每个分类角色显示为一条生命线,代表整个交互期间上的角色。消息则显示为生命线之间的箭头。顺序图可以表达场景,即一项事务的特定历史。

顺序图以二维图表来显示交互。纵向是时间轴,时间自上而下。横向显示了代表协作中单个对象的分类角色。每个对象用方框表示,对象的名字在方框内部,并在名字的下方加下划线。每个分类角色表现为垂直列-生命线。在角色存在的时间内,生命线显示为虚线;在角色的过程激活时间内,生命线显示为双线。

消息显示为从一个角色生命线出发至另一个角色生命线的箭头,箭头用从上而下来的时间顺序来安排。顺序图的一个用途是显示用例的行为序列。当行为被实现时,每个顺序图中的消息同对象的操作或状态机中迁移上的事件触发相一致。

图4 表示处理请求用例的顺序图。图中五个方框分别表示五个对象:ProcessMonitor、EngineManager、Engine、EntactmentDB、Logfiles。这个用例是由ProcessMonitor 接收用户操作,再将这些操作转换成固定的请求,发送给引擎执行而产生的。

当ProcessMonitor 接收到用户在界面上所作的操作后,将这些操作转换为固定的命令请求,发送给EngineManager。EngineManager 再根据接收到命令的类别,将命令分发给不同的Engine。Engine 则具体执行相应的命令。Engine 执行完命令后,通知EntactmentDB 修改相应的数据。接下来,Engine 再通知Logfiles 将所作的操作记录下来,以供以后查询。最后,Engine 直接将结果返回给ProcessMonitor,由ProcessMonitor将结果包装,显示给用户。

b.协作图

协作图对交互中存在意义的对象和链建模。对象和链仅在提供的上下文中存在意义。分类角色描述了对象,关联角色描述了协作中的链。协作图通过图形的几何排布显示交互中的角色。消息显示为附属在连接分类角色的关系直线上的箭头。消息的顺序由消息描述前的顺序号来表示。

协作图的一个用途是表现操作的实现。协作显示了操作的参数和局部变量,以及更永久性的关联。当行为被实现时,消息的顺序与程序的嵌套调用结构和信号传递一致。

图5表示对应于处理请求用例的协作图。这个用例是由ProcessMonitor 接收用户操作,再将这些操作转换成固定的请求,发送给引擎执行而产生的。这个协作图表现了处理请求用例所涉及的五个相关对象之间相互协作的关系。

5.3 创建状态机视图

状态机视图通过对一种对象的可能生命历史进行建模,描述了对象在时间序列上的动态行为。每个对象被认为是通过检测事件并对之响应来与外界进行通讯的孤立实体。事件表达了对象可以检测的变动-对象间的调用或显示信号、某个值的改变或时间的推移。任何影响对象的事物可以被描述成事件。真实世界发生的事情被建模成外部世界至系统的信号。

状态指就某个特定类而言,对于发生的事件具有相同性质响应的一系列对象值。换言之,同一状态的所有对象以相同的方式响应某个事件,即对于给定的所有对象在接收到同一事件时执行相同的动作。而不同状态的对象可能对相同事件具有不同的响应,执行不同的动作。

状态机包含由事件连接的状态。每个状态对对象生命期中的一段时间建模,该时间内对象满足一定的条件。当事件发生时,它可能导致迁移的激发,使对象改变至新状态。当迁移激发时,附属于迁移的动作可 能被执行。状态机在UML 中显示为状态图。

在状态机视图中,状态用带圆角的长方形表示,初始状态用实心填充的圆表示,结束状态用实心填充的圆外套一个圆圈表示。

图6 表示过程实例的状态机视图。从图中可以看出,一个工作流定义的过程实例,在运行时可能有五种不同的过程,分别为初始状态、就绪状态、运行状态、挂起状态与结束状态。

 

一个过程实例在初始时,均为初始状态(initial state)。根据需要,某个过程实例被创建(create),成为就绪状态(Ready)。随后,用户可以根据需要,选择就绪状态的过程实例进行启动(start),被启动的过程实例的状态就变为运行状态(Running)。处于就绪状态和运行状态的过程实例都可以通过取消操作(abort)转变为结束状态(end state)。处于运行状态的过程实例,通过挂起操作(hold),可以转变为暂时停止的挂起状态(Holded),同时处于挂起状态的过程实例也可以通过运行操作(run)转变为运行状态。挂起状态与结束状态的区别在于挂起状态并不释放所占用的资源,因而是可以恢复的。最后,一个处于运行状态的过程实例如果运行完毕,通过完成操作(finish)转变为结束状态。

状态机可以用于描述用户界面、设备控制和其它交互式子系统。它们还可用于在生命期中经历了若干特定阶段,每个阶段拥有特殊的行为的对象。

5.4 创建活动视图

活动视图是用于显示执行某个计算过程中的运算活动的状态机的一种特殊形式。活动状态代表了运算执行的状态:流程的步骤或操作的执行。活动图描述了顺序和并发活动分组。活动视图表达为活动图。

活动图包含活动状态。活动状态表现了过程中语句的执行或工作流中活动的运行。与一般等待状态等待事件不同,活动状态等待的是运算的结束。当活动结束时,执行处理到图中的下一个活动。前一个活动结束时,活动图中的结束迁移被激发。活动状态通常没有外部事件的迁移,但它们可以由外围状态的事件而被取消。

在活动图中,用左右两段是圆弧的长方形表示活动,用较粗的横线表示活动的分发,用带有箭头的线表示活动处理的先后顺序。

图7 表示用户的操作活动图。用户在使用系统所提供的功能之前,首先应当登录系统,也就是说,操作的第一步是登录(login)。登录之后,用户可以在三种操作中任选一个执行:选择过程定义(choose process define)、选择过程实例(choose process instance)以及选择工作项(choose workitem)。这三个活动的执行,没有先后顺序,完全由用户进行选择。

 

当用户选择了过程定义后,可以创建一个所选的过程定义的实例,也就是执行创建过程定义活动(create process define);当用户选择了一个过程实例后,根据这个过程实例状态的不同,可以对这个过程实例进行终止(abort)、启动(start)、挂起(hold)与运行(run)等操作,这些操作的执行是没有先后顺序的;当用户选择了一个工作项后,可以执行这个工作项,也就是做这个工作项的内容(do workitem)。

根据以上使用用例视图、交互视图、状态机视图以及活动视图对工作流管理系统所应具有的功能层次进行的分析,对通用工作流管理系统要达到的目标,应当有了一个较为清晰的认识。而这些认识与理解,将为进一步的设计,奠定良好的基础。  

原创粉丝点击