uml精粹——11.活动图(及整个读书笔记分享)

来源:互联网 发布:成都凶宅数据库查询 编辑:程序博客网 时间:2024/05/30 05:42
11.活动图activity diagram
  活动图是描述过程化逻辑procedural logic、业务过程business process和工作流work flow的技术。他和流程图flowchart类似,但不同是他们支持并行行为parallel bahavior。

  见图11.1


  我们从初始节点initial node动作开始,然后做Receive Order的动作。完成后遇到一个fork分叉。一个分叉fork有一个收入流incoming flow和一些外出的并行流outgoing concurrent flow。
  图中fill order、send invoid和后续的动作都并行出现。这意味着他们间的顺序是不相干的。
  活动图很少描述我必须跟随的顺序相关的规则,这对于业务模型businessmodeling很重要,因为这些过程经常并行出现。这在并行算法concurrent algorithm中也很重要。
  当你有并行动作,你需要同步。我们使用join结合。对于一个join结合,输出的流只在所有输入的流都到达reach这个join时才进行。
  你会发现活动图中的节点叫做action动作,不是活动activity。严格讲一个活动值的是一系列动作,所以活动图是由一些动作组成的。
  条件行为是由decisions决策和merge合并描述。一个决策decision叫做分支branch,有一个输入流和一些守卫的输出流。每个输出流有一个守卫:一个放在方括号里的布尔表达式。每次你遇到一个决策时,你只能选择一个输出流,所以这些守卫必须互斥。使用[else]作为守卫表示当该决策的所有其他守卫都是false的时候就使用它。
  一个merge合并有多个输入流和一个输出流,表示条件行为的结束。


【分解一个动作decompose an action】
  动作可被分解为子活动subactivity。

  见图11.2


  见图11.3


  动作可用子活动实现或作为类的方法,你可用rake symbol显示子活动。也可用class-name::method-name表示一个方法的调用。你也可以写一个代码片段到动作符号去,如果引入的行为不只是一个调用的话。


【分开partition】
  见图11.4


【信号signal】
  动作也可以回应信号。一个时间信号time signal出现由于时间的通路passage。一个信号表示这个活动收到一个来自外部进程的事件。这意味着活动连续的监听那些信号,活动图定义了活动如何反应。

  见图11.5


  同样的我们也可以发送信号。当我们需要发送消息并等待一个回答然后再继续 的时候这个很有用。

  见图11.6


  上图展示了超时的一个例子。那两个流在竞争,最先到最终状态的会胜利并终止另外一个流。
  尽管接受信号经常只是等待一个外部事件,我们也可以先说一个流进入他们,这表示我们一开始并不开始侦听,直到这个流触发了这个接受信号until the flow triggers the accept。
  
【记号token】
P96


【流和边缘edge】  
  uml2使用flow和edge来同义的描述两个动作之间的连接。最简单的edge是两个动作间的箭头线,你也可以给edge命名,但一般箭头就够了。

  见图11.7


  如果你画线有困难,可以用连接器connector(尽量避免使用)。


【栓和变换pins and transformations】
  动作可以有参数,如果你希望展示参数则可以用pins。你需要确认输出的参数和另一个输入的参数是否一致,如果不一致则需要转换transformation。

  见图11.8


  
【扩展区域expansion regions】
  经常有这种情况:一个动作输出 触发了另一个动作的多次调用。扩展区域标记一个活动图的区域里所有动作都会出现一次,对于一个集合里的每一项each item in a collection。

  见图11.9


  上图中的行为是并行的,因为用<<concurrent>>关键字标记了。


【流终点flow final】
  一个流终点表示一个特定的流的结束,而不停止整个活动。

  见图11.11


  图中允许文章被拒绝。如果一个文章被拒绝,该记号token会被流终点销毁。跟活动终点不同,其他的活动还可以继续。这让扩展区域可作为过滤器filters,即输出集合会比输入集合小。


【结合说明join specification】

  一个合并说明是附加到一个合并的布尔表达式。每次一个记号token到达一个合并的时候,合并说明会被检测,如果为真,则输出记号被发射emit。

  见图11.12



【uml精粹 读书笔记分享】

http://download.csdn.net/detail/adfansong/8781683

0 0