常用UML图及PlantUML代码画图:流程图

2023-05-0112:21:01软件工程与架构Comments4,659 views字数 2348阅读模式

流程图(Flow Chart),就是用来直观地描述一个工作过程的具体步骤图,它使用图形表示流程思路,也可以称之为输入-输出图。它通常用一些图框来表示各种类型的操作,在框内写出各个步骤,然后用带箭头的线把它们连接起来,以表示执行的先后顺序,用图形表示执行步骤,十分直观形象,易于理解。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/arc/38088.html

主要作用   文章源自菜鸟学院-https://www.cainiaoxueyuan.com/arc/38088.html

帮助我们把一个复杂的过程简单而直观地展示出来。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/arc/38088.html

方便我们将实际操作的步骤和我们想象的过程进行比较、对照,更加方便我们寻求改进的机会。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/arc/38088.html

帮助我们将工作过程中复杂的、有问题的、重复的部分、多余的环节以及可以简化和标准化的地方都显示出来,有利于我们把复杂流程简单化。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/arc/38088.html

活动图

活动图是UML用于对系统的动态行为建模的另一种常用工具,它描述活动的顺序,展现从一个活动到另一个活动的控制流。活动图在本质上是一种流程图。活动图着重表现从一个活动到另一个活动的控制流,是内部处理驱动的流程。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/arc/38088.html

优点
1、使用活动图来描述用例场景,可以帮助我们认识问题领域,从问题领域中发现关键对象。
2、活动图能够表示并发活动的情形,非常适合支持并行行为,是支持多线程编程的很好的工具。
缺点
1、活动图实际上描述的是业务流程,可能会导致OO的类职责的混乱。
2、如果从活动图的观点来描述业务,实际上是不能直接看到对象是如何发挥作用的,这样在观念上很容易导致对象独立性被破坏。
3、不能显示对象之间的合作,以及对象在其生命周期内的运转情况。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/arc/38088.html

简单来说,流程图可以帮助我们将复杂的工作流程可视化出来,便于传播和理解以及优化。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/arc/38088.html

流程图范围很大,根据符号复杂度(活动图)和呈现方式(泳道图)又可以进一步细分,只是名字不同,但都属于流程图的范畴。如业务流程图就是带泳道的流程图,是表述业务流程的。任务流程图是无泳道的流程图,是表述任务的。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/arc/38088.html

常用UML图及PlantUML代码画图:流程图文章源自菜鸟学院-https://www.cainiaoxueyuan.com/arc/38088.html

常用UML图及PlantUML代码画图:流程图文章源自菜鸟学院-https://www.cainiaoxueyuan.com/arc/38088.html

基础概念

常用UML图及PlantUML代码画图:流程图

常用符号

常用UML图及PlantUML代码画图:流程图文章源自菜鸟学院-https://www.cainiaoxueyuan.com/arc/38088.html

三大结构

常用UML图及PlantUML代码画图:流程图文章源自菜鸟学院-https://www.cainiaoxueyuan.com/arc/38088.html

进阶概念 - 活动图

常用UML图及PlantUML代码画图:流程图文章源自菜鸟学院-https://www.cainiaoxueyuan.com/arc/38088.html

活动(Activity):是履行操作必须发生的主要任务。

状态(State):定义事件或活动的当前条件。

用户(Actor):即系统角色,可以是人、其他系统或者子系统。

控制流(Control Flow)

是指执行或评估命令式或声明式程序的各个语句,指令或函数调用的顺序。(实线)文章源自菜鸟学院-https://www.cainiaoxueyuan.com/arc/38088.html

常用UML图及PlantUML代码画图:流程图文章源自菜鸟学院-https://www.cainiaoxueyuan.com/arc/38088.html

```plantuml@startumlstart    :action1;    ' 在流上写文字    -> 控制流;    :action2;    -> 控制流;    :action3;stop@enduml```

对象流(Object Flow)

是动作状态或者活动状态与对象之间的依赖关系,表示动作使用对象或者动作对对象的影响。(虚线)文章源自菜鸟学院-https://www.cainiaoxueyuan.com/arc/38088.html

常用UML图及PlantUML代码画图:流程图文章源自菜鸟学院-https://www.cainiaoxueyuan.com/arc/38088.html

代码示例文章源自菜鸟学院-https://www.cainiaoxueyuan.com/arc/38088.html

```plantuml@startumlstart    :action1;    ' 修改线条样式    -[dashed]-> 对象流;    ' 下划线__xxx__    :__Object__]    -[dashed]-> 对象流;    :action2;stop@enduml```

分支与合并(Decision and Merge Nodes)

分支与合并用菱形表示文章源自菜鸟学院-https://www.cainiaoxueyuan.com/arc/38088.html

常用UML图及PlantUML代码画图:流程图文章源自菜鸟学院-https://www.cainiaoxueyuan.com/arc/38088.html

代码示例文章源自菜鸟学院-https://www.cainiaoxueyuan.com/arc/38088.html

```plantuml@startumlstart    :归还图书;    if (是否超期) then (超期)        :支付罚金;    else (未超期)    endifstop@enduml```

分叉与汇合(Fork and Join Nodes)

对象在运行时可能会存在两个或多个并发运行的控制流,为了对并发的控制流建模,UML中引入了分叉与汇合的概念。分叉用于将动作流分为两个或多个并发运行的分支,而汇合则用于同步这些并发分支,以达到共同完成一项事务的目的。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/arc/38088.html

常用UML图及PlantUML代码画图:流程图文章源自菜鸟学院-https://www.cainiaoxueyuan.com/arc/38088.html

代码示例文章源自菜鸟学院-https://www.cainiaoxueyuan.com/arc/38088.html

```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)

泳道将活动图中的活动划分为若干组,并把每一组指定给负责这组活动的业务组织,即对象。在活动图中,泳道区分了负责活动的对象,它明确地表示了哪些活动是由哪些对象进行的。在包含泳道的活动图中,每个活动只能明确地属于一个泳道。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/arc/38088.html

泳道是用垂直实线绘出,垂直线分隔的区域就是泳道。在泳道的上方可以给出泳道的名字或对象的名字,该对象负责泳道内的全部活动。泳道没有顺序,不同泳道中的活动既可以顺序进行也可以并发进行,动作流和对象流允许穿越分隔线。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/arc/38088.html

常用UML图及PlantUML代码画图:流程图文章源自菜鸟学院-https://www.cainiaoxueyuan.com/arc/38088.html

代码示例文章源自菜鸟学院-https://www.cainiaoxueyuan.com/arc/38088.html

```plantuml@startuml|泳道1|start:foo1;' 设置泳道颜色|#AntiqueWhite|泳道2|:foo2;:foo3;|泳道1|:foo4;|泳道2|:foo5;stop@enduml```

实例解析

常用UML图及PlantUML代码画图:流程图文章源自菜鸟学院-https://www.cainiaoxueyuan.com/arc/38088.html

代码示例文章源自菜鸟学院-https://www.cainiaoxueyuan.com/arc/38088.html

```plantuml@startuml|会员|start:选择商品加入购物车;' 设置泳道颜色|系统|:产生订单;fork    :核对信用卡;    if (余额) then (充足)        :付款;    else (不足)        (A)        note right: 连接器    endiffork again    :核对库存数量;    if (库存) then (充足)        :发送商品;    else (不足)        (A)        detach        (A)        :取消订单;        :其他流程;        stop    endifend forkstop@enduml```

泳道分为:会员泳道和系统泳道。会员选择商品并加入购物车,系统完成订单生成及其支付完毕。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/arc/38088.html

开始节点:会员添加商品到购物车,点击【订单确认】,开始交于系统处理订单流程文章源自菜鸟学院-https://www.cainiaoxueyuan.com/arc/38088.html

结束节点:商品发送完毕和付款成功,订单处理流程结束文章源自菜鸟学院-https://www.cainiaoxueyuan.com/arc/38088.html

活动状态:产生订单、核对信用卡、核对库存量、发送商品、付款文章源自菜鸟学院-https://www.cainiaoxueyuan.com/arc/38088.html

分叉与汇合:【产生订单】份叉为检查库存量和会员支付金额是否足够,如果不足,取消订单,如过库存量和支付金额足够,发送商品和付款,最后汇合为订单完成。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/arc/38088.html

  • 本站内容整理自互联网,仅提供信息存储空间服务,以方便学习之用。如对文章、图片、字体等版权有疑问,请在下方留言,管理员看到后,将第一时间进行处理。
  • 转载请务必保留本文链接:https://www.cainiaoxueyuan.com/arc/38088.html

Comment

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定