簡體   English   中英

如何生成(不是繪制/渲染)序列圖

[英]How to generate (not draw/render) sequence diagrams

我正在尋找從編程邏輯中生成序列圖的方法。 我並不是說用例如文本渲染它們。 很多帖子都在談論生成,但我認為這是渲染/繪圖。 我在互聯網上搜索過最多的文本工具(如 PlantUML)或直觀的圖形付費工具。 我也不在找。 但是我想對消息流進行編程,讓系統根據可能的選擇來繪制它。 原因之一是如果 else 觸發了完全不同的路徑,則帶有“alt”的條件 if then else 不是很有用(我的觀點)。 它適用於一種不同的回報,但很快就會變得非常丑陋(我再次認為)。 另一個原因是我自己正忙於開發這樣的生成工具,我想知道我是否不嘗試制作沒人在等待的東西。 除了這對我自己來說是一個很好的愛好項目。 對我來說,這樣做是有意義的,因為它以交互方式創建消息圖,這在開發過程中非常有幫助或傳遞知識。 也許它甚至可以驗證死胡同的邏輯。 第三個原因是文本本身變得復雜而難以維護(參見下面的示例)。 第四個原因是我相信自動化可以/應該自動化的過程,因為我們不應該忙於繪制東西,而應該忙於編寫邏輯。 那么有人知道生成(不是繪制/渲染)可用於序列圖的工具嗎?

以下示例是在差異從無效/有效卡開始的情況下創建的,這很難在 if/then/else 中捕獲。 即便如此,在此過程中也會做出其他選擇。

無效卡,選擇:電子->芯片->無效卡->存貨

Merchant             Customer         Terminal  
|                    |                |
+-inform-amount      |                | 
|---choose-method--->|                | 
|<--chooses-terminal-|                | 
+-enters-amount      |                | 
|------------start-payment----------->| 
|                    |<--show-amount--| 
|                    +-inserts-card   | 
|                    |-method-chosen->| 
|                    |<--card-invalid-| 
|                    +-pay-different  | 
|<-----------payment-failed-----------| 
+-goods-left-behind  |                | 
+-customer-leaves    |                | 

有效卡,選擇:電子->芯片->有效卡->驗證有效->足夠余額

Merchant              Customer           Terminal           Secure-Intf       Acc-Srv                 Acc-DB  
|                     |                  |                  |                 |                       |
+-inform-amount       |                  |                  |                 |                       | 
|----choose-method--->|                  |                  |                 |                       | 
|<--chooses-terminal--|                  |                  |                 |                       | 
+-enters-amount       |                  |                  |                 |                       | 
|-------------start-payment------------->|                  |                 |                       | 
|                     |<---show-amount---|                  |                 |                       | 
|                     +-inserts-card     |                  |                 |                       | 
|                     |--method-chosen-->|                  |                 |                       | 
|                     |<----card-valid---|                  |                 |                       | 
|                     +-enter-pin        |                  |                 |                       | 
|                     |---validate-pin-->|                  |                 |                       | 
|                     |                  |--sec:authorize-->|                 |                       | 
|                     |                  |                  |--verify-login-->|                       | 
|                     |                  |                  |                 |---get-login-details-->| 
|                     |                  |                  |                 |<-----login-details----| 
|                     |                  |                  |<-login-response-|                       | 
|                     |                  |<--sec:auth-valid-|                 |                       | 
|                     |                  |---sec:transfer-->|                 |                       | 
|                     |                  |                  |----transfer---->|                       | 
|                     |                  |                  |                 |------get-balance----->| 
|                     |                  |                  |                 |<-----balance-info-----| 
|                     |                  |                  |                 |-upd-checking-balance->| 
|                     |                  |                  |                 |-upd-merchant-balance->| 
|                     |                  |                  |                 |----commit-changes---->| 
|                     |                  |                  |                 |<---changes-committed--| 
|                     |                  |                  |<---transferred--|                       | 
|                     |                  |<-sec:transferred-|                 |                       | 
|<-----------payment-successful----------|                  |                 |                       | 
+-goods-given         |                  |                  |                 |                       | 
|                     |<-------paid------|                  |                 |                       | 
|                     +-customer-leaves  |                  |                 |                       | 

文本代碼適用於多種免費繪圖工具。 如果需要任何更改,那么我認為它變得難以維護。 我寧願生成它們。

title MSG-Flow for 'Merchant-flows'
participant "Merchant" as Merchant
participant "Customer" as Customer
participant "Terminal" as Terminal
participant "Secure Intf" as Secure_Intf
participant "Acc Srv" as Acc_Srv
participant "Acc DB" as Acc_DB
note left of Merchant: inform-amount
Merchant -> Customer: choose-method
Customer -> Merchant: chooses-terminal
note left of Merchant: enters-amount
Merchant -> Terminal: start-payment
Terminal -> Customer: show-amount
note right of Customer: inserts-card
Customer -> Terminal: method-chosen
Terminal -> Customer: card-valid
note right of Customer: enter-pin
Customer -> Terminal: validate-pin
Terminal -> Secure_Intf: sec:authorize
Secure_Intf -> Acc_Srv: verify-login
Acc_Srv -> Acc_DB: get-login-details
Acc_DB -> Acc_Srv: login-details
Acc_Srv -> Secure_Intf: login-response
Secure_Intf -> Terminal: sec:auth-valid
Terminal -> Secure_Intf: sec:transfer
Secure_Intf -> Acc_Srv: transfer
Acc_Srv -> Acc_DB: get-balance
Acc_DB -> Acc_Srv: balance-info
Acc_Srv -> Acc_DB: upd-checking-balance
Acc_Srv -> Acc_DB: upd-merchant-balance
Acc_Srv -> Acc_DB: commit-changes
Acc_DB -> Acc_Srv: changes-committed
Acc_Srv -> Secure_Intf: transferred
Secure_Intf -> Terminal: sec:transferred
Terminal -> Merchant: payment-successful
note left of Merchant: goods-given
Terminal -> Customer: paid
note right of Customer: customer-leaves

那么有人知道生成(不是繪制/渲染)可用於序列圖的工具嗎?

您是否嘗試過 ZenUML( https://zenuml.com )?

在此處輸入圖像描述

它還可以從 Java 代碼(作為 Intellij Idea 插件)生成序列圖。 在此處輸入圖像描述

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM