UML状态机图-并行过程

UML状态机图-并行过程,uml,diagram,state-machine,Uml,Diagram,State Machine,我正试图为以下问题开发一个UML状态机图: 自动售货机有3个按钮:R代表“退货”,a和B代表饮料选择。 当自动售货机收到金额为x的钱时,用户可以在饮料中进行选择。按R键可在不提供饮料的情况下返还款项 如果在插入任何货币之前按下按钮,机器会发出报警信号。 如果按下A或B并插入>=x钱,则将提供饮料 当服务完成时,警报声会通知用户。零钱被退回。取出饮料后,机器进入结束状态 我的问题是,我正在处理并行“进程”,我相信对于这个场景,必须有一个简单的配置。有人能提供/指导我以优雅的方式解决这个问题的正确

我正试图为以下问题开发一个UML状态机图:

自动售货机有3个按钮:R代表“退货”,a和B代表饮料选择。 当自动售货机收到金额为x的钱时,用户可以在饮料中进行选择。按R键可在不提供饮料的情况下返还款项

如果在插入任何货币之前按下按钮,机器会发出报警信号。 如果按下A或B并插入>=x钱,则将提供饮料

当服务完成时,警报声会通知用户。零钱被退回。取出饮料后,机器进入结束状态

我的问题是,我正在处理并行“进程”,我相信对于这个场景,必须有一个简单的配置。有人能提供/指导我以优雅的方式解决这个问题的正确想法吗

编辑:在使用了@Chris Reynolds的建议后,我想到了这个:


实际上,此状态机中没有并行进程*:

取钱
期间以及等待
A
B
时,按下
R
按钮,即可进入
退钱
状态。如果有钱,就会发出警报。如果没有其他报警的信用,或者只是一个新的到self的转换,您可以将行为添加到从
收款的转换中


*:假设插入足够的货币后,进一步的硬币接受被阻止。

因此,如果所有产品的价格相同,状态机就完全不同了。可在下表中获取:

在状态机中,我认为气泡应该只是状态,您的示例感觉非常面向过程。我会有三种状态:不活动、付款进行中、准备服务。然后,对于每个状态,你必须处理4个事件:按钮A、B、R和硬币接收。一个点,在“如果在插入任何货币之前按下按钮-机器产生报警信号”之后应该发生什么?因为你保持在这种状态,我想一些事件应该停止报警否?在你的模式中,还有另一点,是否有事件?似乎你们的大多数转变都是无事件保护的,除了最后两个,在你们的状态机中有什么是平行的?用户逐个执行操作否?granier:是的,我忘记执行关联btw报警信号并结束。我还必须承认,我完全误解了背后的整个想法。我使用了Chris Reynolds的建议,但我的编辑中附带了现在的内容。这是做这件事的方法吗?:)真有趣