Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

PlantUML

ZenUML

@startuml participant User User->A:MethodA activate A A->B:MethodB activate B deactivate B deactivate A @enduml

@Starter(User)
A.methodA() {
B.methodB()
}

Zenuml sequence macro
uuidfd499949-38c2-4a97-bfa5-251d13943cf2
updatedAt2020-06-11T11:19:35.171Z
@Starter(User)
A.methodA() {
  B.methodB()
}

其次,ZenUML可以自动的生成符合UML规范的图。UML规范中什么时候使用实线,什么时候使用虚线,什么时候使用实心箭头,什么时候使用空心箭头都是有规定的。但是同时也受到了很多诟病。ZenUML把这些知识自动化了,这样的好处是每个人画出的图都是一致的。下面是一个示例图,其中包含了同步消息、异步消息、创建消息、回复消息等等。其次,ZenUML可以自动的生成符合UML规范的图。UML规范中什么时候使用实线,什么时候使用虚线,什么时候使用实心箭头,什么时候使用空心箭头都是有规定的。但是同时也受到了很多诟病。ZenUML把这些知识自动化了,这样的好处是每个人画出的图都是一致的。

除此之外,ZenUML还支持在图中嵌入Markdown片段。比如下图中用于描述API Endpoint的 POST /orders和任务列表。你甚至可以在序列图中嵌入表格。

下图由以下文本转化而成:

Code Block
//`POST /orders`
// 
// - [ ] Setup loadbalancer 
// - [x] Config Kong gateway
OrderController.create(payload) {
  // Create an **immutable** `order`
  // 1. Validate `payload`
  // 1. Log with `x-correlationid`
  OrderService.create(payload) {
    // | id | Prod_Name | Price | Inserted_At |
    // |----|-----------|-------|-------------|
    // |123 | book 1    | $10.00| 2020-06-30  |
    OrderRepo.save()
  }
}
Zenuml sequence macro

第三,ZenUML的生成完全在前端实现。这样不仅速度快,而且保证了用户数据的安全。因为用户的数据不需要传回我们的服务器。这一点在我们实现Atlassian Confluence插件的时候尤其重要。

画图快、修改容易还会带来一个额外的好处就是你可以全身心投入在建模上面而不是繁琐的拖拽。我经常开玩笑说“不要爱上你的图”。

此外,ZenUML的Confluence插件还增加了对MermaidJs的支持,让你方便的在文档中嵌入其他类型的图表。

6. 开发者要提升自己的软件工程能力,你有哪些建议?

...