• 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 并行

    可以使用forkfork againend 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 分割

    使用 splitsplit 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

  • 相关阅读:
    数据恢复软件 –最好的Android数据恢复软件分享
    20年架构师带你彻底搞懂查询分离的实现思路
    LVS负载均衡群集
    0068 IO流
    【Playwright+Python】手把手带你写一个自动化测试脚本
    这应该是关于回归模型最全的总结了(附原理+代码)
    计组笔记1-计算机系统概论
    Spring全家桶相关注解总结
    c++入门必学算法 快速幂
    图论第9天
  • 原文地址:https://blog.csdn.net/zhangwei_david/article/details/125507374