活动图
活动图(activity diagram,动态图)是阐明了业务用例实现的工作流程。
业务用例模型中的活动图
业务用例工作流程说明了业务为向所服务的业务主角提供其所需的价值而必须完成的工作。业务用例由一系列活动组成,它们共同为业务主角生成某些工件。工作流程通常包括一个基本工作流程和一个或多个备选工作流程。工作流程的结构使用活动图来进行说明。
工作流程活动图用于研究实现业务目标时所要执行的各项任务或活动的顺序安排。活动既可以是手动执行的任务,也可以是自动执行的任务。它可完成一个工作单元。
活动图是状态图的一种特殊形式。其中所有或多数状态都是活动状态,而且所有或多数转移都在源状态中的活动完成时立即触发。
1、基本活动图
一个活动图可能包括以下元素:
活动状态表示在工作流程中执行某个活动或步骤。
转移表示各种活动状态的先后顺序。这种转移可称为完成转移。它不同于一般的转移,因为它不需要明显的触发器事件,而是通过完成活动(用活动状态表示)来触发。
决策,为其定义了一组警戒条件。这些警戒条件决定在活动完成后将执行一组备选转移中的哪一个转移。您也可以使用判定图标来表示线程重新合并的位置。决策和警戒条件使您能够显示业务用例的工作流程中的备选线程。
同步示意条用于显示平行分支流。同步示意条使您能够显示业务用例的工作流程中的并行线程。
“机场登记”业务用例模型中“个人登记”业务用例的活动图
2、条件线程
警戒条件用于说明一组并行线程中的某个线程是有条件的。例如,在上面的“个人登记”示例中,进行登记的乘客可能是频繁乘机旅行的顾客。在此情况下,您需要给他奖励一些飞行哩程数。
“机场登记”业务用例模型中“个人登记”业务用例的活动图
3、嵌套活动图
一个活动状态可能要引用另一个活动图,因为后者显示了前者的内部结构。换言之,您可以嵌套活动图。您可以显示活动状态中的子图或是让活动状态引用另一个图。
活动状态中嵌套的活动图
如果您希望在一幅图中展示所有的工作流程细节,那么可显示活动状态中的子图,这不失为一种方便的办法。但是,如果所展示的工作流程较为复杂,这就会使活动图难以理解。
或者,也可将子图单独放在一个图中,然后让活动状态引用它。
为简化工作流程图,您可能要将子图单独放在一个图中,然后让子图所详细说明的活动状态来引用它。
4、使用泳道
可以使用垂直实线将活动图划分为泳道。每条泳道代表整个工作流程的某个部分的职责,该职责由组织的某个部门来执行。泳道最终可以由组织单元或者业务对象模型中的一组类来实施。
泳道之间的排序并不会影响语义。每个活动状态都指派了一条泳道,而转移则可能跨越数条泳道。
以上活动图说明了代表一般销售流程的业务用例工作流程。在此示例中,泳道代表组织中的各个部门。
5、使用示例
就工作流程的活动图和文本说明来说,首先使用哪一个?这多少取决于您的工作习惯,以及您是否以图表的方式进行思考。有些人倾向于先在一个图中勾画出结构的轮廓,然后再用文本进行详细说明。其他人则可能愿意先制定活动状态的大纲;对此达成一致之后,再使用图来定义结构。
另一个适当的问题是,您是否的确既需要文本文档又需要图。活动图技术确实允许您为每个活动状态撰写简要说明,这将使工作流程的文本规约变得毫无用处。在这种情况下,您需要对涉众及其预期的规约格式保持高度的敏感性。
我们提供了一个示例活动图,用于描述在指南:业务用例中定义的业务用例“提议流程”的工作流程。我们通过它来说明活动图是如何帮助加深对工作流程的理解的。该示例来自于一个销售电信网络解决方案的组织,其中每个解决方案都是为客户量身定制的。
业务用例“提议流程”的活动图
名为“初步机会工作”的活动状态包含了三个可平行执行的子步骤。这在此活动状态的一个子图中加以说明。
活动状态“初步机会工作”的子图。可以选择制定销售计划,这通过即将进行的转移中的警戒条件来说明。
活动状态可以代表相当大的过程(带有子结构),也可以代表某些相对较小的过程。如果您正使用活动图来定义工作流程的结构,则不要表示活动图中从顶层到最底层的所有结构层次。这很可能会使得活动图非常难以理解(如果使用多个单独的子图,则会使多幅图非常难以理解)。应该尽量在一个图中概述整个工作流程,其中的少数几个活动状态可以有子图。
业务对象模型中的活动图
业务用例模型中的活动图中对活动图使用的符号作出了进一步的说明。本页举例说明如何应用符号来描述业务用例实现。
业务用例实现的活动图用于研究完成业务目标的任务或活动的安排顺序,并且这些任务或活动还可实现外部业务主角和内部业务角色之间的约定。活动是执行某个工作单元的任务,它既可手工执行,也可自动执行。
活动图帮助:
提供在业务中引入信息系统的理由以及对此举措的理解。
为系统开发项目实施业务转换机制确定目标。
证明基于详细的业务流程指标而进行有关自动化方面的投资是正确的。
与序列图(可认为它和活动图具有类似的目的)相比,包含泳道和对象流的活动图侧重于如何将职责拆分为类,而序列图则帮助您理解各对象是如何并且以何种顺序进行交互的。活动图侧重于工作流程,而序列图则侧重于对业务实体的处理。活动图和序列图可作为互补性的技巧使用,其中序列图用来表示活动状态中发生的事情。
1、使用泳道
如果使用泳道,而且泳道与业务对象模型中的类(主要是业务角色)耦合,那么您就使用活动图来记录业务用例实现,而不是业务用例。
作为示例,我们给出了有关实现业务用例“提议流程”的活动图。有关该业务用例的说明,请参见指南:业务用例。
“提议流程”的业务用例实现
通过检查担任特定角色(业务角色)的人员及其执行的活动,该活动图向您详细展示了业务中所发生的一切。如果是应用程序开发项目,这些图将帮助您详细了解该新应用程序将支持或影响的业务领域。它们帮助建立到所提议的新系统之间的连接点,而且这些连接点还产生了系统用例。
2、使用对象流
在本部分中,对象流用于显示如何在工作流程中创建并使用业务实体。对象流允许您在活动图中显示活动状态的输入和输出。这个符号有两个元素:
对象流状态代表一个类的对象,该对象参与了活动图所表示的工作流程。该对象可以是某个活动的输出,也可以是众多其他活动的输入。
对象流是一种控制流,其中有一个对象流状态用作输入或输出。
对象流符号不仅仅表示对象本身的存在,而且还表明它所处的特定状态。同一个对象可被大量的、改变该对象状态的连续活动所控制。此后,该对象就可在活动图中多次出现,而且每次出现时都表示其生命期中的不同状态。该对象在每一点所处的状态都可置于括号内,并附加到其类名称之后。
借助于对象流表示的普通销售流程,用来说明订单状态在执行工作流程的过程中是如何改变的。请参见指南:业务用例模型中的活动图
一个对象流状态可能表现为一个对象流(转移)的目标和多个对象流(转移)的来源。
“提议流程”的活动图,该图使用对象流来说明所涉及的核心业务实体
对象流可与业务用例的工作流程中的数据流作比较。与传统的数据流不同,对象流存在于活动图中的某个特定点。