有没有快速序列图编辑器的经验?即时显示+文本源代码+ Java实现的组合对我来说非常有吸引力,但是我无法弄清楚如何使语法按我的意愿行事,文档也不是很清楚.这是一个人为的例子:
al:Actor
bill:Actor
atm:ATM[a]
bank:Bank[a]
al:atm.give me $10
atm:al has $3=bank.check al's account balance
al:atm.what time is it
atm:al.it's now
atm:al.stop bugging me
atm:al.you only have $3
atm:bill.and don't you open your mouth
bill:atm.who asked you?
bill:atm.give me $20
al:atm.hey, I'm not finished!
atm:bill has $765=bank.check bill's account balance
atm:yes I'm sure, bill has $765=bank.hmm are you sure?
atm:bill.here's $20, now go away
atm:great, he's a cool dude=bank.I just gave Bill $20
al:atm.what about my $10?
atm:al.read my lips: you only have $3
Run Code Online (Sandbox Code Playgroud)
以下是QSDE在单线程模式下的结果:

并在多线程模式下:

我想我不清楚是什么开始/结束那些竖条.我有一个单线程的情况,但涉及状态,所有消息都是异步的.我想这意味着我应该使用外部对象来表示该状态及其生命周期.我想要的是一个时间轴来表示消息序列
和另一个表示消息序列的时间线
与其他"睿智"代表我现在不关心的其他杂项信息.
有没有办法用QSDE做到这一点?
Hug*_*une 14
当一个新线程启动(并且来自用户的消息总是启动一个新线程)时,它不会停止,直到它被明确停止或者图表结束.例如atm:stop终止atm线程
这是第一次尝试(多线程模式下的所有内容):

al:Actor
bill:Actor
atm:ATM[a]
bank:Bank[a]
al:atm.give me $10
atm:al has $3=bank.check al's account balance
atm:al.you only have $3
atm:stop
bill:atm.give me $20
atm:bill has $765=bank.check bill's account balance
atm:yes I'm sure, bill has $765=bank.hmm are you sure?
atm:bill.here's $20, now go away
atm:great, he's a cool dude=bank.I just gave Bill $20
Run Code Online (Sandbox Code Playgroud)
(可以说消息应该是异步的,因为它们是通过网络传输的.无论如何,现在所有的箭头看起来都一样)
消息开头的">"启动一个新线程(默认情况下,来自用户和进程的所有消息都会启动一个新线程.)
"&"在结尾处表示调用立即返回,并且未显示新线程.您可以使用它来模拟向现有线程发送消息.(默认情况下,所有对用户和进程的消息都会立即返回.)

al:Actor
bill:Actor
atm:ATM[a]
bank:Bank[a]
al:atm.give me $10
atm:>bank.check al's account balance
bank:>atm.al has $3&
bank:stop
atm:al.you only have $3
atm:stop
bill:atm.give me $20
atm:>bank.check bill's account balance
bank:>atm.bill has $765&
bank:stop
atm:>bank.hmm are you sure?
bank:>atm.yes I'm sure, bill has $765&
bank:stop
atm:bill.here's $20, now go away
atm:>bank.I just gave Bill $20
bank:>atm.great, he's a cool dude&
bank:stop
Run Code Online (Sandbox Code Playgroud)
从示例中不清楚ATM中的确切线程应该何时停止.ATM似乎更像是用户或进程,而不是对象.所以这个例子不一定有意义

al:Actor
bill:Actor
atm:ATM[a]
bank:Bank[a]
al:atm[a].give me $10
atm:al has $3=bank.check al's account balance
al:atm.what time is it
atm:al.it's now
atm:stop
atm:al.stop bugging me
atm:al.you only have $3
atm:bill.and don't you open your mouth
bill:atm.who asked you?&
atm:stop
bill:atm.give me $20
al:atm.hey, I'm not finished!&
atm:bill has $765=bank.check bill's account balance
atm:yes I'm sure, bill has $765=bank.hmm are you sure?
atm:bill.here's $20, now go away
atm:great, he's a cool dude=bank.I just gave Bill $20
atm:_
atm:stop
al:atm.what about my $10?
atm:al.read my lips: you only have $3
Run Code Online (Sandbox Code Playgroud)