常用UML图及PlantUML代码画图:流程图
流程图(Flow Chart),就是用来直观地描述一个工作过程的具体步骤图,它使用图形表示流程思路,也可以称之为输入-输出图。它通常用一些图框来表示各种类型的操作,在框内写出各个步骤,然后用带箭头的线把它们连接起来,以表示执行的先后顺序,用图形表示执行步骤,十分直观形象,易于理解。
主要作用
帮助我们把一个复杂的过程简单而直观地展示出来。
方便我们将实际操作的步骤和我们想象的过程进行比较、对照,更加方便我们寻求改进的机会。
帮助我们将工作过程中复杂的、有问题的、重复的部分、多余的环节以及可以简化和标准化的地方都显示出来,有利于我们把复杂流程简单化。
活动图
活动图是UML用于对系统的动态行为建模的另一种常用工具,它描述活动的顺序,展现从一个活动到另一个活动的控制流。活动图在本质上是一种流程图。活动图着重表现从一个活动到另一个活动的控制流,是内部处理驱动的流程。
优点
1、使用活动图来描述用例场景,可以帮助我们认识问题领域,从问题领域中发现关键对象。
2、活动图能够表示并发活动的情形,非常适合支持并行行为,是支持多线程编程的很好的工具。
缺点
1、活动图实际上描述的是业务流程,可能会导致OO的类职责的混乱。
2、如果从活动图的观点来描述业务,实际上是不能直接看到对象是如何发挥作用的,这样在观念上很容易导致对象独立性被破坏。
3、不能显示对象之间的合作,以及对象在其生命周期内的运转情况。
简单来说,流程图可以帮助我们将复杂的工作流程可视化出来,便于传播和理解以及优化。
流程图范围很大,根据符号复杂度(活动图)和呈现方式(泳道图)又可以进一步细分,只是名字不同,但都属于流程图的范畴。如业务流程图就是带泳道的流程图,是表述业务流程的。任务流程图是无泳道的流程图,是表述任务的。


基础概念
常用符号

三大结构

进阶概念 - 活动图

活动(Activity):是履行操作必须发生的主要任务。
状态(State):定义事件或活动的当前条件。
用户(Actor):即系统角色,可以是人、其他系统或者子系统。
控制流(Control Flow)
是指执行或评估命令式或声明式程序的各个语句,指令或函数调用的顺序。(实线)

```plantuml@startumlstart:action1;' 在流上写文字-> 控制流;:action2;-> 控制流;:action3;stop@enduml```
对象流(Object Flow)
是动作状态或者活动状态与对象之间的依赖关系,表示动作使用对象或者动作对对象的影响。(虚线)

代码示例
```plantuml@startumlstart:action1;' 修改线条样式-[dashed]-> 对象流;' 下划线__xxx__:__Object__]-[dashed]-> 对象流;:action2;stop@enduml```
分支与合并(Decision and Merge Nodes)
分支与合并用菱形表示

代码示例
```plantumlstart:归还图书;if (是否超期) then (超期):支付罚金;else (未超期)endifstop```
分叉与汇合(Fork and Join Nodes)
对象在运行时可能会存在两个或多个并发运行的控制流,为了对并发的控制流建模,UML中引入了分叉与汇合的概念。分叉用于将动作流分为两个或多个并发运行的分支,而汇合则用于同步这些并发分支,以达到共同完成一项事务的目的。

代码示例
```plantuml@startuml' 上图startfork:行为 1;fork again:行为 2;fork again:行为 3;fork again:行为 4;end mergestop' 下图startfork:行为 1;fork again:行为 2;fork again:行为 3;fork again:行为 4;end forkstop@enduml```
泳道(SwimLane)
泳道将活动图中的活动划分为若干组,并把每一组指定给负责这组活动的业务组织,即对象。在活动图中,泳道区分了负责活动的对象,它明确地表示了哪些活动是由哪些对象进行的。在包含泳道的活动图中,每个活动只能明确地属于一个泳道。
泳道是用垂直实线绘出,垂直线分隔的区域就是泳道。在泳道的上方可以给出泳道的名字或对象的名字,该对象负责泳道内的全部活动。泳道没有顺序,不同泳道中的活动既可以顺序进行也可以并发进行,动作流和对象流允许穿越分隔线。

代码示例
```plantuml@startuml|泳道1|start:foo1;' 设置泳道颜色|#AntiqueWhite|泳道2|:foo2;:foo3;|泳道1|:foo4;|泳道2|:foo5;stop@enduml```
实例解析

代码示例
```plantuml@startuml|会员|start:选择商品加入购物车;' 设置泳道颜色|系统|:产生订单;fork:核对信用卡;if (余额) then (充足):付款;else (不足)(A)note right: 连接器endiffork again:核对库存数量;if (库存) then (充足):发送商品;else (不足)(A)detach(A):取消订单;:其他流程;stopendifend forkstop@enduml```
泳道分为:会员泳道和系统泳道。会员选择商品并加入购物车,系统完成订单生成及其支付完毕。
开始节点:会员添加商品到购物车,点击【订单确认】,开始交于系统处理订单流程
结束节点:商品发送完毕和付款成功,订单处理流程结束
活动状态:产生订单、核对信用卡、核对库存量、发送商品、付款
分叉与汇合:【产生订单】份叉为检查库存量和会员支付金额是否足够,如果不足,取消订单,如过库存量和支付金额足够,发送商品和付款,最后汇合为订单完成。





