码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • PlantUML绘制活动图


    PlantUML系列文章 

    PlantUML 绘制时序图https://blog.csdn.net/zhangwei_david/article/details/125451459 PlantUML绘制类图https://blog.csdn.net/zhangwei_david/article/details/125477021


    目录

    一、什么是活动图

    二、活动图构成

    2.1 活动图示例

     三、如何使用PlantUML 绘制时序图

    3.1 开始/停止/结束/

    3.1.1示例代码

     3.2 普通活动

    3.3 条件选择

    3.3.1 if/else

    3.3.3 switch

    3.4 循环

    3.4.1 while

    3.4.2 repeat

    3.5并行与分割

    3.5.1 并行

    3.5.2 分割

    3.6泳道

    3.7样式与颜色

    3.7.1  改变活动颜色

    3.7.2 改变连接线颜色

    四、综合运用


    一、什么是活动图

            活动图是常用的动态视图,是用来描述在具体场景下如何做特定的事情;通过可视化的工具,描绘现实生活中具体事物运转流程,输出让人更直观理解,便于沟通的内容。

    二、活动图构成

    一般活动图包含一下几个部分

    1. 起点
    2. 活动
    3. 判断
    4. 泳道
    5. 执行顺序
    6. 结束

    2.1 活动图示例

            下面就是一副以在充值APP上进行一次手机充值的活动图

     三、如何使用PlantUML 绘制时序图

    3.1 开始/停止/结束/

    说明语法
    开始start
    结束end
    停止stop
    杀死活动kill
    摆脱活动detach

    3.1.1示例代码

    1. !pragma useVerticalIf on
    2. start
    3. if(条件A) then(yes)
    4. :条件A操作;
    5. detach
    6. elseif(条件B) then(yes)
    7. :条件B操作;
    8. kill
    9. else(default)
    10. : 默认操作;
    11. endif
    12. stop

    效果图:

     3.2 普通活动

       普通活动最简单几本语法就是

    :活动说明;

    3.3 条件选择

            条件选择主要就是ifelse和switch

    3.3.1 if/else

      条件判断的语法格式是 if(...) then(...) elseif(...) else endif.

    上文中的示例图就是基于ifelse条件选择

    3.3.3 switch

     switch的语法格式如下:

    1. start
    2. switch(测试)
    3. case (条件A)
    4. :TextA;
    5. case (条件B)
    6. :TextB;
    7. case (条件C)
    8. :TextC;
    9. endswitch
    10. stop

    3.4 循环

            循环主要就是while和repeat,goto还是属于实验性质,效果不佳

    3.4.1 while

          下面示例就是while的基本语法

    1. start
    2. while(更多数据?) is(not empty)
    3. :读取数据;
    4. :生成图片;
    5. endwhile(empty)
    6. stop

    3.4.2 repeat

    下面示例就是repeat的基本语法

    1. start
    2. repeat
    3. :读取数据;
    4. :生成图片;
    5. repeat while (更多数据?)
    6. stop

    3.5并行与分割

    3.5.1 并行

    可以使用fork,fork again和end fork 或者 end merge 等关键字表示并行处理。

    首先看看简单的并行处理(fork .... fork again.... end fork)

    1. start
    2. fork
    3. :行为 A;
    4. fork again
    5. :行为 B;
    6. end fork {或}
    7. stop

     在看看合并以及结束子行为是如何处理的。

    1. start
    2. fork
    3. :行为 A;
    4. fork again
    5. :行为 B;
    6. end
    7. fork again
    8. :行为 C;
    9. detach
    10. fork again
    11. :行为 D;
    12. stop
    13. fork again
    14. :行为 E;
    15. kill
    16. fork again
    17. :行为 F;
    18. end merge
    19. stop

    3.5.2 分割

    使用 split, split again 和 end split 关键字去表达分割处理,下文通过使用split来处理多输入和多输出。

    1. '多输入'
    2. split
    3. -[hidden]->
    4. :行为 A;
    5. split again
    6. -[hidden]->
    7. :行为 B;
    8. end split
    9. -[#green,dashed]->
    10. :处理分发;
    11. split
    12. -[#blue]->
    13. :行为 A;
    14. kill
    15. split again
    16. #red:行为 B;
    17. detach
    18. split again
    19. end
    20. split again
    21. stop
    22. end split

    3.6泳道

    泳道使用“|泳道名称|”来定义泳道

    3.7样式与颜色

    3.7.1  改变活动颜色

    对于活动的颜色可以 #颜色:行为;来改变行为颜色

     #red:行为 B;

    3.7.2 改变连接线颜色

    可以使用 -[#颜色,线型]-> 来改变连接线类型和颜色

    如:

    语句说明
    -[#red,dashed]->红色虚线
     -[#blue,dotted]->蓝色点状线
    -[#red]->红色实线

    3.7.3 改变泳道颜色

    |#lightYellow|用户|

    四、综合运用

     下一就是文章开头活动图的代码

    1. @startuml
    2. |#lightYellow|用户|
    3. start
    4. :输入手机号;
    5. :选择话费套餐;
    6. |#lightBlue|充值APP|
    7. :生成,提交订单;
    8. |#lightgray|服务商|
    9. :生成订单;
    10. |充值APP|
    11. :展示支付方式;
    12. |用户|
    13. :选择支付方式;
    14. :支付套餐金额;
    15. |服务商|
    16. :支付结果通知;
    17. split
    18. :更新订单状态;
    19. |充值APP|
    20. :展示支付结果;
    21. |用户|
    22. :获取支付结果;
    23. kill
    24. split again
    25. |服务商|
    26. -[dashed]->
    27. if(支付成功) then(成功)
    28. :向运营商发起充值请求;
    29. |#pink|运营商|
    30. :接收到充值请求;
    31. :执行充值;
    32. :通知充值结果;
    33. |服务商|
    34. :更新订单状态;
    35. |充值APP|
    36. :展示充值结果;
    37. |用户|
    38. :获取充值结果;
    39. floating note left #red:充值流程结束
    40. end
    41. else(失败)
    42. |服务商|
    43. :失败处理流程;
    44. kill
    45. @enduml

  • 相关阅读:
    openGauss学习笔记-123 openGauss 数据库管理-设置账本数据库-账本数据库概述
    Jmeter 入门使用
    idea调教-全键盘操作
    HTML+CSS简单的网页制作期末作业——浙江旅游景点介绍网页制作
    NP9 十六进制数字的大小牛客网python答案(已测试通过)
    STM32和ESP32哪个更适合初学者
    盗卖上亿条公民个人信息,“安全刺客”怎么防?
    网络安全--IDS--入侵检测
    类似邮件收发功能的相关数据库设计或逻辑处理记录
    【第20例】华为 IPD 体系 | IPD 的底层思考逻辑(限制版)
  • 原文地址:https://blog.csdn.net/zhangwei_david/article/details/125507374
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号