【PlantUML系列】流程图(四)

目录

目录

一、基础用法

[1.1 开始和结束](#1.1 开始和结束)

[1.2 操作步骤](#1.2 操作步骤)

[1.3 条件判断](#1.3 条件判断)

[1.4 并行处理](#1.4 并行处理)

[1.5 循环](#1.5 循环)

[1.6 分区](#1.6 分区)

[1.7 泳道](#1.7 泳道)

一、基础用法

1.1 开始和结束

开始一般使用**++start++关键字;结束一般使用++stop/end++** 关键字。基础用法包括:

  • start ... stop

  • start ... end

    @startuml
    start
    :执行操作A;
    stop
    @enduml

1.2 操作步骤

语法为++:operation++ ,其中 operation 是你为该步骤定义的名称。例如:

复制代码
@startuml
:开始;
:执行操作A;
:执行操作B;
:结束;
@enduml

1.3 条件判断

使用PlantUML语法通常使用++if-else++关键字。通常由三种语法:

  • if (...) then (...) ... [else (...) ...] endif
  • if (...) is (...) then ... [else (...) ...] endif
  • if (...) equals (...) then ... [else (...) ...] endif

例如:

复制代码
@startuml
:开始;
:执行操作A;
:判断是否满足条件;
if (满足条件) then (是)
  :执行操作B;
else (否)
  :执行操作C;
endif

if (条件) is (是) then
   :执行操作D;
else
   :执行操作E;
endif

if (条件) equals (是) then
   :执行操作F;
else
   :执行操作G;
endif
:结束;
@enduml

多分支判断使用++elseif++关键字,其中包含水平模式、垂直模式;

  • 水平模式

    @startuml
    start
    if (condition A) then (yes)
    :Text 1;
    elseif (condition B) then (yes)
    :Text 2;
    stop
    (no) elseif (condition C) then (yes)
    :Text 3;
    (no) elseif (condition D) then (yes)
    :Text 4;
    else (nothing)
    :Text else;
    endif
    stop
    @enduml

  • 垂直模式 :使用**!pragma useVerticalIf on**进入垂直模式。

    ​@startuml
    start
    !pragma useVerticalIf on
    if (condition A) then (yes)
    :Text 1;
    elseif (condition B) then (yes)
    :Text 2;
    stop
    (no) elseif (condition C) then (yes)
    :Text 3;
    (no) elseif (condition D) then (yes)
    :Text 4;
    else (nothing)
    :Text else;
    endif
    stop
    @enduml

1.4 并行处理

并行处理可以用 forkjoin 来表示,fork 表示分支开始,merge 表示分支合并。

  • fork ... fork again ... end fork

  • fork ... fork again ... end merge

    @startuml
    start
    fork
    :action 1;
    fork again
    :action 2;
    end fork

    fork
    :action 3;
    fork again
    :action 4;
    end merge
    stop
    @enduml

1.5 循环

循环包括无条件循环(Repeat loop)、有条件循环(While loop),典型的写法包括:

  • repeat ... repeat while (...) is (...) not (...)
  • repeat ... backward ... repeat while (...) is (...) -> (...)
  • while (...) end while

repeat案例:

复制代码
@startuml
start

repeat
  :read data;
  :generate diagrams;
repeat while (more data?) is (yes) not (no)

repeat
  :read data;
  :generate diagrams;
backward :write data;
repeat while (more data?) is (yes)
-> no;
  :next action;

while (check filesize ?) is (not empty)
  :read file;
  backward:log;
endwhile (empty)
:close file;

stop
@enduml

1.6 分区

在PlantUML中,Partition 是用来定义分区的关键字,它允许你将多个活动组合在一起。

复制代码
@startuml
start
partition Initialization {
    :read config file;
    :init internal variable;
}
partition Running {
    :wait for user interaction;
    :print information;
}

stop
@enduml

1.7 泳道

在PlantUML中,使用++|Swimlane1|++来表示泳道,例如:

复制代码
@startuml
|Swimlane1|
start
:foo1;
|#AntiqueWhite|Swimlane2|
:foo2;
:foo3;
|Swimlane1|
:foo4;
|Swimlane2|
:foo5;
stop
@enduml

参考资料:New Activity Diagram Beta syntax and features

相关推荐
ui小新2 天前
什么是流程图:流程六要素、三大结构及绘制规范总结
流程图·设计工具·流程图设计
小道士写程序2 天前
如何简单理解状态机、流程图和时序图
java·开发语言·流程图
zzywxc7872 天前
深入探讨AI三大领域的核心技术、实践方法以及未来发展趋势,结合具体代码示例、流程图和Prompt工程实践,全面展示AI编程的强大能力。
人工智能·spring·机器学习·ios·prompt·流程图·ai编程
皆过客,揽星河3 天前
c语言程序之魂——算法(练习题,流程图,程序源码)
c语言·算法·流程图·源码·辗转相除法·c语言程序设计
晓风残月淡3 天前
Mermaid流程图更改样式的方法
css·流程图·css3
disgare3 天前
如何画时序图、流程图
流程图
低代码布道师9 天前
UX 设计入门终章:让洞察落地!用用户流程图、IA 和旅程图,设计用户与产品的互动故事
大数据·流程图·ux
奥特曼狂扁小怪兽9 天前
基于 Qt 实现的动态流程图画板框架设计与实现
qt·microsoft·流程图
今天不要写bug9 天前
antv x6实现封装拖拽流程图配置(适用于工单流程、审批流程应用场景)
前端·typescript·vue·流程图
云端设计台10 天前
2025流程图模板和工具深度评测:AI如何提升绘图效率80%?
人工智能·信息可视化·流程图·图表制作·图表工具