PlantUML——定时图 PlantUML定时图1、声明参与者2、二进制及时钟信号3、增加标示4、相对时间5、锚点6、参与者7、设置缩放8、初始状态9、模糊状态9.1、模糊或者未定义鲁棒状态信号9.2、模糊或者未定义二进制信号10、隐藏状态11、隐藏时间轴12、使用日期13、Change Date Format14、Manage time axis labels14.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 robustWeb 浏览器asWBconciseWeb 用户asWU0WUis 空闲WBis 空闲 100WUis 等待中WBis 处理中 300WBis 等待中 endumlstartuml clockClock_0asC0withperiod50clockClock_1asC1withperiod50pulse15offset10binaryBinaryasBconciseConciseasCrobustRobustasRanalogAnalogasA0Cis IdleRis IdleAis0100Bis highCis WaitingRis ProcessingAis3300Ris WaitingAis1enduml2、二进制及时钟信号使用以下关键字可以绘制二进制及时钟信号binaryclockstartuml clock clkwithperiod1binaryEnableasEN0ENis low 5ENis high 10ENis low enduml3、增加标示使用下述的语法增加对某一时刻信号变动的描述。startuml robustWeb 浏览器asWBconciseWeb 用户asWU0WUis 空闲WBis 空闲 100WU-WB:URLWUis 等待中WBis 处理中 300WBis 等待中 enduml4、相对时间可以使用和-符号表示相对时间.startuml robustDNS ResolverasDNSrobustWeb BrowserasWBconciseWeb UserasWU0WUis IdleWBis IdleDNSis Idle 100WU-WB:URLWUis WaitingWBis Processing 200WBis WaitingWB-DNS50:ResolveURL100DNSis Processing 300DNSis Idle enduml5、锚点在绝对时间上使用绝对时间或相对时间你可以通过使用 as 关键字和以: 开始的名称来定义一个时间作为锚点。XX as :anchor point namestartuml clock clkwithperiod1binaryenableasENconcisedataBusasdb 0as:start 5as:en_high 10as:en_low :en_high-2as:en_highMinus2 :startENis low db is0x0000:en_highENis high :en_lowENis low :en_highMinus2 db is0xf23a:en_high6db is0x0000enduml6、参与者按时间顺序来描述状态变化可能会有些麻烦不如将每个参与者的变化放在一起。startuml robustWeb BrowserasWBconciseWeb UserasWUWB0is idle200is Proc.100is Waiting WU0is Waiting500is ok enduml7、设置缩放还可以设置缩放比例。startuml conciseWeb UserasWUscale100as50pixels WU0is Waiting500is ok enduml当使用绝对时间或者日期时1 单位为 1 秒。startuml concise季节asS这里将30天缩放到50像素 scale2592000as50pixels 2000/11/01Sis冬2001/02/01Sis春2001/05/01Sis夏2001/08/01Sis秋enduml8、初始状态可以定义初始状态。startuml robustWeb BrowserasWBconciseWeb UserasWUWBis InitializingWUis Absent WB0is idle200is Processing100is Waiting WU0is Waiting500is ok enduml9、模糊状态一个信号在某个时段可能是模糊的有多个可能的状态区间。9.1、模糊或者未定义鲁棒状态信号startuml robustSignal1asS1robustSignal2asS2S1has0,1,2,helloS2has0,1,20S1is0S2is0100S1is{0,1}#SlateGreyS2is{0,1}200S1is1S2is0300S1is helloS2is{0,2}enduml9.2、模糊或者未定义二进制信号startuml clockClockasCwithperiod2binaryEnableasEN0ENis low 1ENis high 3ENis low 5ENis{low,high}10ENis low enduml10、隐藏状态可以隐藏某个时段的状态。startuml conciseWeb UserasWU0WUis{-}100WUisA1200WUis{-}300WUis{hidden}400WUisA3500WUis{-}endumlstartuml scale1as50pixels concise state0 concise substate1 robust bit2 bit2 hasHIGH,LOWstate00is 18_start6is s_dPause8is 10_data14is{hidden}substate10is sSeq4is sPause6is{hidden}8is dSeq12is dPause14is{hidden}bit20isHIGH2isLOW4is{hidden}8isHIGH10isLOW12is{hidden}enduml11、隐藏时间轴可以隐藏时间轴。startuml hide time-axis conciseWeb UserasWUWUis Absent WU0is Waiting500is ok enduml12、使用日期时间轴除时间以外也可以改用日期表示。startuml robustWeb BrowserasWBconciseWeb UserasWU2019/07/02WUis IdleWBis Idle 2019/07/04WUis Waiting:some noteWBis Processing:some other note 2019/07/05WBis Waiting endumlstartuml robustWeb BrowserasWBconciseWeb UserasWU1:15:00WUis IdleWBis Idle 1:16:30WUis Waiting:some noteWBis Processing:some other note 1:17:30WBis Waiting enduml13、Change Date Formatstartuml robustWeb BrowserasWBconciseWeb UserasWUuse date formatYY-MM-dd2019/07/02WUis IdleWBis Idle 2019/07/04WUis Waiting:some noteWBis Processing:some other note 2019/07/05WBis Waiting enduml14、Manage time axis labels14.1、Label on each tick (by default)startuml scale31536000as40pixels use date formatyy-MMconciseOpenGL DesktopasOD1992/01/01ODis{hidden}1992/06/30ODis1.01997/03/04ODis1.11998/03/16ODis1.22001/08/14ODis1.32004/09/07ODis3.02008/08/01ODis3.02017/07/31ODis4.6enduml14.2、Manual label (only when the state changes)startuml scale31536000as40pixels manual time-axis use date formatyy-MMconciseOpenGL DesktopasOD1992/01/01ODis{hidden}1992/06/30ODis1.01997/03/04ODis1.11998/03/16ODis1.22001/08/14ODis1.32004/09/07ODis3.02008/08/01ODis3.02017/07/31ODis4.6enduml15、添加约束可以在图上标示时间约束。startuml robustWeb BrowserasWBconciseWeb UserasWUWBis InitializingWUis Absent WB0is idle200is Processing100is WaitingWB0-50:{50ms lag}WU0is Waiting500is ok 200-150:{150ms}enduml15.1、 设置高亮可以给图表中的某一时段设置高亮。startuml robustWeb BrowserasWBconciseWeb UserasWU0WUis IdleWBis Idle 100WU-WB:URLWUis Waiting #LightCyan;line:Aqua 200WBis Proc.300WU-WB350:URL2WBis Waiting 200WUis ok 200WBis Idle highlight200to450#Gold;line:DimGrey:This is my caption enduml16、添加注释可以使用 note top of 或 note bottom of 关键字在某一时刻或参与者的上方或下方添加注释 只可以在 concise 类型的参与者中使用。startuml robustWeb BrowserasWBconciseWeb UserasWU0WUis IdleWBis Idle 100WUis WaitingWBis Processing note topofWU:first note\non several\nlines note bottomofWU:second note\non several\nlines 300WBis Waiting enduml17、添加文本可以选择添加标题、页眉、页脚、图例和说明。startuml Title Some titleheader:Some headerfooter:Some footer legend Some legend end legend caption Some caption robustWeb BrowserasWBconciseWeb UserasWU0WUis IdleWBis Idle 100WUis WaitingWBis Processing 300WBis Waiting enduml18、完整样例startuml conciseClientasClient conciseServerasServer conciseResponse freshnessasCache Server is idle Client is idle Client0is send Client-Server25:GET25isawait75is recv25is idle25is send Client-Server25:GET\nIf-Modified-Since:15025isawait50is recv25is idle 100-275:no need to re-request from server Server25is recv25is work25is send Server-Client25:200OK\nExpires:27525is idle75is recv25is send Server-Client25:304Not Modified25is idle Cache75is fresh200is stale enduml19、数据表示样例startuml scale5as150pixels clock clkwithperiod1binaryenableasen binaryR/Wasrw binarydata Validasdv concisedataBusasdb conciseaddress busasaddr 6as:write_beg 10as:write_end 15as:read_beg 19as:read_end 0en is low db is0x0addr is0x03frw is low dv is0:write_beg-3en is high :write_beg-2db is0xDEADBEEF:write_beg-1dv is1:write_beg rw is high :write_end rw is low dv is low :write_end1rw is low db is0x0addr is0x2312dv is high 13db is0xFFFF20en is low dv is low 21db is0x0highlight: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_end1:hold enduml20、颜色可以为图表添加颜色。startuml conciseLRasLRconciseSTasSTLRis AtPlace #palegreenSTis AtLoad #gray LR0is Lowering100is Lowered #pink350is Releasing ST200is Moving enduml21、使用全局样式21.1、无样式默认样式startuml robustWeb BrowserasWBconciseWeb UserasWUWBis InitializingWUis Absent WB0is idle200is Processing100is WaitingWB0-50:{50ms lag}WU0is Waiting500is ok 200-150:{150ms}enduml21.2、设置样式可以使用样式来改变元素的渲染startumlstyletimingDiagram{document{BackGroundColor SandyBrown}constraintArrow{LineStyle2-1LineThickness3LineColor Blue}}/stylerobustWeb BrowserasWBconciseWeb UserasWUWBis InitializingWUis Absent WB0is idle200is Processing100is WaitingWB0-50:{50ms lag}WU0is Waiting500is ok 200-150:{150ms}enduml22、对特定行着色可以使用style标记和模板将行属性命名startumlstyletimingDiagram{.red{LineColor red}.blue{LineColor blue LineThickness5}}/styleclock clkwithperiod1binaryInput Signal 1asIS1binaryInput Signal 2asIS2bluebinaryOutput Signal 1asOS1red0IS1is lowIS2is highOS1is low 2OS1is high 4OS1is low 5IS1is highOS1is high 6IS2is low 10IS1is lowOS1is low enduml