Plantuml序列图生命线,用于异步执行

问题描述

这是我的样品,也显示在下面的图片

max_ind = max([inner for item in col_inds for inner in item])
# initialize an empty string array 
placeholder = np.empty((max_ind+1,len(col_names)),dtype='S10')
placeholder[:,:] = ''

for ind,item in enumerate(col_inds):
    
    if ind < len(col_inds) - 1:
        df_col = test_df.groupby(col_names[:ind+1],as_index=False).agg({col_names[ind+1]:'count'}).iloc[:,ind]
    else:
        df_col = test_df.iloc[:,ind]
        
    for val_ind,val_pos in enumerate(item):
        placeholder[val_pos,ind] = df_col[val_ind]

# create new dataframe
new_df = pd.DataFrame({name:val for name,val in zip(col_names,placeholder.T)})
for col in col_names:
    new_df[col] = new_df[col].str.decode('utf-8') 

plantuml image

是否可以在PlantUml序列图中以某种方式定义异步操作的生命线,使其终止于生命线的起始位置?因此,在这种情况下,我想从@startuml participant "Client" as C participant "Server" as S participant "Third Party" as 3PT C -> S++: request money S -> S: do I kNow you? S -> 3PT++: give me money for client return here you have money S ->> S++ #005500: compute usage S ->> 3PT: notify about computation details deactivate S return money @enduml 生命线返回后在绿色生命线中完成compute usage。因此,我想说request money是异步操作,可以随时结束。从UML的角度来看,这还不知道。

解决方法

据我所知,像S ->> S++:...S ->> S:...这样的自反消息无法从 OccurrenceSpecification 开始,再到另一个(还有很多工具,包括mine),因此唯一的方法似乎是两次表示 Server 。为了清楚表明它是同一台服务器,您可以指定实例名称,例如(命名所有实例):

@startuml
participant "c:Client" as C
participant "s:Server" as S
participant "tp:Third Party" as 3PT
participant "s:Server" as Sagain

C -> S++: request money
S -> S: do I know you?
S -> 3PT++: give me money for client
return here you have money
S ->> Sagain++: compute usage
C <-- S: money
deactivate S
Sagain ->> 3PT: notify about computation details
deactivate Sagain
@enduml

enter image description here

norm说,§17.12.17.1生命线仅代表一个相互作用的实体,但是一个实体可以由多个生命线表示:

代表:ConnectableElement [0..1](与A_represents_lifeline :: lifeline相反) 在包含封闭交互的分类器中引用ConnectableElement

lifeline:生命线[0 .. *](与Lifeline :: represents相反)

(请注意多样性0..*


出于您的问题,很奇怪,仅看到消息do I know you?而没有结果而定,取决于结果,PlantUML管理组合片段alt 来指示替代项

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...