当前位置: 首页 > 科技观察

在IDEA中画图,就是把语法弄对了,一点都不难

时间:2023-03-14 09:03:20 科技观察

转载本文,请联系云原生生态公众号。本文将简要介绍PlantUML的使用。最近需要扩展GitLab的自动将文本图表转图片的功能。在GitLab的官方文档中,发现kroki[1]可以解决这个问题。1什么是克罗基?Kroki是一款开源免费工具,可以将基于文本的图表描述自动转换为图片,并支持私有化部署。当然,官方也提供在线服务。kroki支持多种图表API:Kroki提供统一的API,支持BlockDiag(BlockDiag,SeqDiag,ActDiag,NwDiag,PacketDiag,RackDiag),BPMN,Bytefield,C4(withPlantUML),Ditaa,Erd,Excalidraw,GraphViz,Mermaid,Nomnoml,Pikchr,PlantUML,UMLetBob,obVega、Vega-Lite、WaveDrom……还有更多!如何安装通过docker安装dockerrun-d--namekroki-p18080:8000yuzutech/kroki:0.15.1然后通过ip:18080访问即可。安装后默认会支持以下不同图表的API。安装完成后可以测试curlcurlhttps://$ip:$port/graphviz/svg--data-raw'digraphG{Hello->World}'httpapt-getinstallhttpiehttp://$ip:$portdiagram_type='graphviz'output_format='svg'diagram_source='digraphG{Hello->World}'具体可以参考kroki官网提供的众多图表API的案例[2]如何集成到GitLab服务中在顶部栏,选择Menu>管理员。前往“设置”>“通用”。展开Kroki部分。选择启用Kroki复选框。输入Kroki网址。配置完成后,就可以在Gitlab支持markdown的地方使用了。比如issue,README.md等敲黑板!重点来了,环境定下来了,图应该怎么画呢?这里再介绍一个开源的UML画图工具:PlantUML2什么是PlantUML[3]plantuml支持哪些图?PlantUML是一个开源项目,支持快速绘制以下图表:序列图用例图类图对象图活动图(此处为旧语法)组件图部署图状态图时序图还支持以下非UML图:JSON数据YAML数据网络图(nwdiag)线框图形接口架构图规范和描述语言(SDL)Ditaa图甘特图思维导图WBS工作分解图带有AsciiMath或JLaTeXMath符号的数学公式实体关系图可以生成PNG、SVG或LaTeX格式的图像,以及还可以生成ASCII艺术图(仅限序列图),这里您可以通过在线示例服务器[4]自己尝试。例如:@startumltitleOauth2令牌颁发的授权码模式actorUserasuserparticipant"UserAgent"asuserAgentparticipant"Client"asclientparticipant"AuthLogin"asloginparticipant"AuthServer"asserverautonumberuser->userAgent:访问客户端activateuserAgentuserAgent->login:重定向到授权页面+clientId+redirectUrlactivateloginlogin->server:username+password+clientId+redirectUrlactivateserverserver-->login:返回授权码login-->userAgent:重定向到redirectUrl+授权码codedeactivateloginuserAgent->client:使用授权码code换tokenactivateclientclient->server:授权码code+clientId+clientSecretserver-->client:发放访问令牌accessToken+refreshTokendeactivateserverclient-->userAgent:返回访问令牌并刷新deactivateclientuserAgent-->user:令牌发放完成deactivateuserAgent@enduml这里简单介绍一下上面的时序图:标题即可用于指定标题e的UML图;actor可用于声明人形参与者;participant可用于声明常见类型的参与者;参与者可以通过as别名;通过->可以画出参与者之间的关系,可以用虚线箭头-->;在每个参与者关系的背后,你可以使用:为关系添加描述;通过autonumber,我们可以自动为参与者关系添加一个序号;通过activate和deactivate,可以指定参与笔者的生命线图使用了IDEA的PlantUML智能提示插件:PlantUML集成,在插件->应用市场安装即可。通过代码快速绘制时序图和流程图,在日常开发中无疑比一些复杂的需要在Processon中绘制更快更高效。更多绘制其他图的参考和学习文档可以参考PlantUML官网[5]。中文版说的很清楚。3图表编辑工具在线版plantumlserver[6]https://www.planttext.com/[7]plantuml-previewer[8]离线IDEA智能提示插件:PlantUML集成Chrome插件[9]4数据分享微信订阅号回复“uml”获取PlantUML语言参考指南PDF参考[1]kroki:https://kroki.io/[2]kroki实例:https://kroki.io/examples.html[3]PlantUML:https://plantuml.com/zh/[4]plantuml在线示例服务器:http://www.plantuml.com/plantuml[5]plantuml官网:https://plantuml.com/zh/[6]plantuml服务器:http://www.plantuml.com/plantuml/uml/SyfFKj2rKt3CoKnELR1Io4ZDoSa70000[7]planttext:https://www.planttext.com/[8]plantuml-previewer:https://sujoyu.github.io/plantuml-previewer/[9]ChromePlantUML插件:https://chrome.google.com/webstore/detail/uml-diagram-editor/hoepdgfgogmeofkgkpapbdpdjkplcode?hl=en-GB