当前位置: 首页 > news >正文

PlantUML——定时图

PlantUML定时图

    • 1、声明参与者
    • 2、二进制及时钟信号
    • 3、增加标示
    • 4、相对时间
    • 5、锚点
    • 6、参与者
    • 7、设置缩放
    • 8、初始状态
    • 9、模糊状态
      • 9.1、模糊或者未定义鲁棒状态信号
      • 9.2、模糊或者未定义二进制信号
    • 10、隐藏状态
    • 11、隐藏时间轴
    • 12、使用日期
    • 13、Change Date Format
    • 14、Manage time axis labels
      • 14.1、Label on each tick (by default)
      • 14.2、Manual label (only when the state changes)
    • 15、添加约束
      • 15.1、= 设置高亮
    • 16、添加注释
    • 17、添加文本
    • 18、完整样例
    • 19、数据表示样例
    • 20、颜色
    • 21、使用(全局)样式
      • 21.1、无样式(默认样式)
      • 21.2、设置样式
    • 22、对特定行着色

UML 中的时序图是一种特定类型的交互图,可视化系统的时序约束。它侧重于事件的时间顺序,展示不
同对象如何随着时间的推移相互影响。定时图在实时系统和嵌入式系统中特别有用,可用于了解对象在
整个给定时间段内的行为。

1、声明参与者

使用以下关键字声明参与者, 可根据需要选择显示样式。

通过 @ 标注, 和 is 动词定义状态.

@startuml robust"Web 浏览器"asWBconcise"Web 用户"asWU@0WUis 空闲WBis 空闲 @100WUis 等待中WBis 处理中 @300WBis 等待中 @enduml

@startuml clock"Clock_0"asC0withperiod50clock"Clock_1"asC1withperiod50pulse15offset10binary"Binary"asBconcise"Concise"asCrobust"Robust"asRanalog"Analog"asA@0Cis IdleRis IdleAis0@100Bis highCis WaitingRis ProcessingAis3@300Ris WaitingAis1@enduml

2、二进制及时钟信号

使用以下关键字可以绘制二进制及时钟信号:

  • binary
  • clock
@startuml clock clkwithperiod1binary"Enable"asEN@0ENis low @5ENis high @10ENis low @enduml

3、增加标示

使用下述的语法,增加对某一时刻信号变动的描述。

@startuml robust"Web 浏览器"asWBconcise"Web 用户"asWU@0WUis 空闲WBis 空闲 @100WU->WB:URLWUis 等待中WBis 处理中 @300WBis 等待中 @enduml

4、相对时间

可以使用@+@-符号表示相对时间.

@startuml robust"DNS Resolver"asDNSrobust"Web Browser"asWBconcise"Web User"asWU@0WUis IdleWBis IdleDNSis Idle @+100WU->WB:URLWUis WaitingWBis Processing @+200WBis WaitingWB->DNS@+50:ResolveURL@+100DNSis Processing @+300DNSis Idle @enduml

5、锚点

在绝对时间上使用绝对时间或相对时间,你可以通过使用 as 关键字和以: 开始的名称来定义一个时间作为锚点。

  • @XX as :<anchor point name>
@startuml clock clkwithperiod1binary"enable"asENconcise"dataBus"asdb @0as:start @5as:en_high @10as:en_low @:en_high-2as:en_highMinus2 @:startENis low db is"0x0000"@:en_highENis high @:en_lowENis low @:en_highMinus2 db is"0xf23a"@:en_high+6db is"0x0000"@enduml

6、参与者

按时间顺序来描述状态变化可能会有些麻烦,不如将每个参与者的变化放在一起。

@startuml robust"Web Browser"asWBconcise"Web User"asWU@WB0is idle+200is Proc.+100is Waiting @WU0is Waiting+500is ok @enduml

7、设置缩放

还可以设置缩放比例。

@startuml concise"Web User"asWUscale100as50pixels @WU0is Waiting+500is ok @enduml


当使用绝对时间或者日期时,1 单位为 1 秒。

@startuml concise"季节"asS'这里将30天缩放到50像素 scale2592000as50pixels @2000/11/01Sis"冬"@2001/02/01Sis"春"@2001/05/01Sis"夏"@2001/08/01Sis"秋"@enduml

8、初始状态

可以定义初始状态。

@startuml robust"Web Browser"asWBconcise"Web User"asWUWBis InitializingWUis Absent @WB0is idle+200is Processing+100is Waiting @WU0is Waiting+500is ok @enduml

9、模糊状态

一个信号在某个时段可能是模糊的,有多个可能的状态区间。

9.1、模糊或者未定义鲁棒状态信号

@startuml robust"Signal1"asS1robust"Signal2"asS2S1has0,1,2,helloS2has0,1,2@0S1is0S2is0@100S1is{0,1}#SlateGreyS2is{0,1}@200S1is1S2is0@300S1is helloS2is{0,2}@enduml

9.2、模糊或者未定义二进制信号

@startuml clock"Clock"asCwithperiod2binary"Enable"asEN@0ENis low @1ENis high @3ENis low @5ENis{low,high}@10ENis low @enduml

10、隐藏状态

可以隐藏某个时段的状态。

@startuml concise"Web User"asWU@0WUis{-}@100WUisA1@200WUis{-}@300WUis{hidden}@400WUisA3@500WUis{-}@enduml

@startuml scale1as50pixels concise state0 concise substate1 robust bit2 bit2 hasHIGH,LOW@state00is 18_start6is s_dPause8is 10_data14is{hidden}@substate10is sSeq4is sPause6is{hidden}8is dSeq12is dPause14is{hidden}@bit20isHIGH2isLOW4is{hidden}8isHIGH10isLOW12is{hidden}@enduml

11、隐藏时间轴

可以隐藏时间轴。

@startuml hide time-axis concise"Web User"asWUWUis Absent @WU0is Waiting+500is ok @enduml

12、使用日期

时间轴除时间以外也可以改用日期表示。

@startuml robust"Web Browser"asWBconcise"Web User"asWU@2019/07/02WUis IdleWBis Idle @2019/07/04WUis Waiting:some noteWBis Processing:some other note @2019/07/05WBis Waiting @enduml

@startuml robust"Web Browser"asWBconcise"Web User"asWU@1:15:00WUis IdleWBis Idle @1:16:30WUis Waiting:some noteWBis Processing:some other note @1:17:30WBis Waiting @enduml

13、Change Date Format

@startuml robust"Web Browser"asWBconcise"Web User"asWUuse date format"YY-MM-dd"@2019/07/02WUis IdleWBis Idle @2019/07/04WUis Waiting:some noteWBis Processing:some other note @2019/07/05WBis Waiting @enduml

14、Manage time axis labels

14.1、Label on each tick (by default)

@startuml scale31536000as40pixels use date format"yy-MM"concise"OpenGL Desktop"asOD@1992/01/01ODis{hidden}@1992/06/30ODis1.0@1997/03/04ODis1.1@1998/03/16ODis1.2@2001/08/14ODis1.3@2004/09/07ODis3.0@2008/08/01ODis3.0@2017/07/31ODis4.6@enduml

14.2、Manual label (only when the state changes)

@startuml scale31536000as40pixels manual time-axis use date format"yy-MM"concise"OpenGL Desktop"asOD@1992/01/01ODis{hidden}@1992/06/30ODis1.0@1997/03/04ODis1.1@1998/03/16ODis1.2@2001/08/14ODis1.3@2004/09/07ODis3.0@2008/08/01ODis3.0@2017/07/31ODis4.6@enduml

15、添加约束

可以在图上标示时间约束。

@startuml robust"Web Browser"asWBconcise"Web User"asWUWBis InitializingWUis Absent @WB0is idle+200is Processing+100is WaitingWB@0<->@50:{50ms lag}@WU0is Waiting+500is ok @200<->@+150:{150ms}@enduml

15.1、= 设置高亮

可以给图表中的某一时段设置高亮。

@startuml robust"Web Browser"asWBconcise"Web User"asWU@0WUis IdleWBis Idle @100WU->WB:URLWUis Waiting #LightCyan;line:Aqua @200WBis Proc.@300WU->WB@350:URL2WBis Waiting @+200WUis ok @+200WBis Idle highlight200to450#Gold;line:DimGrey:This is my caption @enduml

16、添加注释

可以使用 note top of 或 note bottom of 关键字在某一时刻或参与者的上方或下方添加注释 (只可以在 concise 类型的参与者中使用)。

@startuml robust"Web Browser"asWBconcise"Web User"asWU@0WUis IdleWBis Idle @100WUis WaitingWBis Processing note topofWU:first note\non several\nlines note bottomofWU:second note\non several\nlines @300WBis Waiting @enduml

17、添加文本

可以选择添加标题、页眉、页脚、图例和说明。

@startuml Title Some titleheader:Some headerfooter:Some footer legend Some legend end legend caption Some caption robust"Web Browser"asWBconcise"Web User"asWU@0WUis IdleWBis Idle @100WUis WaitingWBis Processing @300WBis Waiting @enduml

18、完整样例

@startuml concise"Client"asClient concise"Server"asServer concise"Response freshness"asCache Server is idle Client is idle @Client0is send Client->Server@+25:GET+25isawait+75is recv+25is idle+25is send Client->Server@+25:GET\nIf-Modified-Since:150+25isawait+50is recv+25is idle @100<->@275:no need to re-request from server @Server25is recv+25is work+25is send Server->Client@+25:200OK\nExpires:275+25is idle+75is recv+25is send Server->Client@+25:304Not Modified+25is idle @Cache75is fresh+200is stale @enduml

19、数据表示样例

@startuml scale5as150pixels clock clkwithperiod1binary"enable"asen binary"R/W"asrw binary"data Valid"asdv concise"dataBus"asdb concise"address bus"asaddr @6as:write_beg @10as:write_end @15as:read_beg @19as:read_end @0en is low db is"0x0"addr is"0x03f"rw is low dv is0@:write_beg-3en is high @:write_beg-2db is"0xDEADBEEF"@:write_beg-1dv is1@:write_beg rw is high @:write_end rw is low dv is low @:write_end+1rw is low db is"0x0"addr is"0x23"@12dv is high @13db is"0xFFFF"@20en is low dv is low @21db is"0x0"highlight:write_beg to:write_end #Gold:Writehighlight:read_beg to:read_end #lightBlue:Read db@:write_beg-1<->@:write_end:setup time db@:write_beg-1->addr@:write_end+1:hold @enduml

20、颜色

可以为图表添加颜色。

@startuml concise"LR"asLRconcise"ST"asSTLRis AtPlace #palegreenSTis AtLoad #gray @LR0is Lowering100is Lowered #pink350is Releasing @ST200is Moving @enduml

21、使用(全局)样式

21.1、无样式(默认样式)

@startuml robust"Web Browser"asWBconcise"Web User"asWUWBis InitializingWUis Absent @WB0is idle+200is Processing+100is WaitingWB@0<->@50:{50ms lag}@WU0is Waiting+500is ok @200<->@+150:{150ms}@enduml

21.2、设置样式

可以使用样式来改变元素的渲染

@startuml<style>timingDiagram{document{BackGroundColor SandyBrown}constraintArrow{LineStyle2-1LineThickness3LineColor Blue}}</style>robust"Web Browser"asWBconcise"Web User"asWUWBis InitializingWUis Absent @WB0is idle+200is Processing+100is WaitingWB@0<->@50:{50ms lag}@WU0is Waiting+500is ok @200<->@+150:{150ms}@enduml

22、对特定行着色

可以使用<style>标记和模板将行属性命名

@startuml<style>timingDiagram{.red{LineColor red}.blue{LineColor blue LineThickness5}}</style>clock clkwithperiod1binary"Input Signal 1"asIS1binary"Input Signal 2"asIS2<<blue>>binary"Output Signal 1"asOS1<<red>>@0IS1is lowIS2is highOS1is low @2OS1is high @4OS1is low @5IS1is highOS1is high @6IS2is low @10IS1is lowOS1is low @enduml

http://www.jsqmd.com/news/919663/

相关文章:

  • 音乐格式解密终极指南:5分钟快速解锁加密音频文件的完整免费方案
  • MKS Monster8 3D打印机主板:8轴控制的终极解决方案
  • 2026 南京苏易防水修缮|卫生间、阳台、屋顶、地下室免砸砖漏水专项维修 - 吉修匠
  • DePIN深度解析:从架构原理到实战部署的完整指南
  • Jetson Orin Nano 极客玩法:手搓脚本从零构建系统镜像,详解BSP与Rootfs
  • Airtable 零基础快速上手与实战指南
  • 2026年衬氟管件选购指南,靠谱的厂家有哪些? - mypinpai
  • Markdown Preview Mermaid Support:在VS Code中轻松创建专业图表 [特殊字符]
  • 国内主流淬火炉厂商实测评测:台车炉/正火炉/渗碳炉/烧结炉/网带炉/退火炉/钎焊炉/核心性能与服务横向对比 - 优质品牌商家
  • openai sdk接入claude怎么做?结合简易api中转站完成原有OpenAI项目扩展Claude的实用方案
  • 037、小目标检测专项改进:增加小目标检测层、高分辨率特征图与超参数联动调优
  • 2026年度哪家防爆技术加工厂性价比高 - mypinpai
  • kubernetes 案例:基于 Helm 部署 Harbor
  • RT-Thread Studio里那个神秘的‘CubeMX Setting’按钮,到底该怎么用?
  • MapLibre GL JS第29课:添加Canvas源
  • NPN晶体管多谐振荡器:从RC定时到LED交替闪烁的电路设计与实践
  • 陕西 RAG 权重调整技术对于 GEO 优化的深度调查:企来客逆 RAG 技术升级真相揭示
  • 纳米 AI 搜索新手极速上手指南
  • 2026年AI论文网站深度评测:6款工具全能表现得分排名
  • Arm编译器更新订阅与功能安全认证维护指南
  • Win7离线环境救星:手把手教你修改4个XML和1个注册表,彻底解决VMware Converter 6.2无法启动服务报错
  • 从零打造可调光LED台灯:电路设计、仿真与焊接实战指南
  • MapLibre GL JS第30课:添加视频
  • 2026年西安靠谱的育婴师推荐排名 - mypinpai
  • Claude Code 迎来重磅更新!v2.1.156 v2.1.157 双版本发布:本地插件免市集加载、多 Worktree 自由切换与大波 Bug 修复
  • 一个人写了一套店群矩阵自动化软件:我是如何干掉繁琐切号流程与并发内存泄漏的
  • [开源] 医保基金流向追踪图:面向医保办自查与汇报的可视化分析系统
  • 2026年养老保姆推荐平台排名,价格透明吗? - mypinpai
  • MobileNet-Yolo深度解析:超轻量级实时目标检测的终极实战指南
  • 朱光亚与一个民族最深沉的精神底色(潜龙在渊)