第11章 活动图
活动图是一种表述过程机理、业务过程以及工作流的技术。在很多方面,它们所起的作用域流程图类似,但是,与流程图表示法的主要区别是,活动图支持并行行为。
下图表示活动图的一个简例。我们在初始节点动作初开始,随后做订单动作,完成后,便遇上一个分岔。分岔(fork)有一个人流和几个并发的出流。
上图说的是,按订单供货、开发票以及它们的后继动作都是并行发生的。本质上这意味着它们之间的顺序无关紧要。我可以按订单供货,开发票,交付,然后再收款;或者也可以开发票,收款,按订单供货,然后再交付。
活动图允许进行这一过程的任何人来选择做事的顺序。换言之,图仅仅说明应遵循的主要定序规则。这一点对业务建模来说是重要的,这是因为业务过程往往是并行出现的。对于并发算法,它也有用。在并发算法中各个独立的线程可以并行工作。
当你有了并行性,就需要进行同步。在货物交付及付款以前,不能关闭订单。在关闭订单动作前用一个汇合(join)来指明这一点。对一个汇合,仅当其所有的入流均已到达,才能处理出流。因此,仅当收款及交付做完后,才能关闭订单。
活动图上的节点称为动作,而不称为活动。严格说,一项活动指的是一系列动作,因此,图中表明的一项活动是有若干动作构成的。
1、动作的分解
可以把动作分解成子活动。我可以取上图中的交付机理,将它定义为它自己的活动(如下图)。这时就可以将它称为一个动作。
修改后的实施图如下:
2、分划
活动图告诉你发生什么,但未告诉谁做什么。在编程中,这指的是,图并未表达每一个活动由什么类来负责。在业务过程建模中,这并未表达机构的哪一个部门施行什么动作。这并不一定是一个问题;往往,有意义的是,要把注意力集中在做了什么,而不在谁做行为的哪一个部分。
如果要表明谁做什么,就要把一个活动图分成几分划。分划表明一个类或一个机构单位施行那些动作。上图就一个简例,指明订单处理中所含的各个动作如何划分成不同的功能。这种方式常常成为泳道。
3、何时使用活动图
活动图最大的优点是,它们支持并鼓励并行行为。这使得它们称为工作流建模和过程建模的一项重要工具。