1

我有一个做两件事的动作,首先它会改变应用程序的状态,其次它会调用一个 web 服务。当 web 服务发送它的响应时,它将影响当前的应用程序状态。示例状态图

可以说我有上述设置。Method1()调用 Web 服务并导致状态从 更改ABMethod1()调用到调用后Finish(),状态可以从Bto CBtoSuccess等变化。

如果B更改为Success,则也可以从更改SuccessC

当状态可以在操作后的任何时候设置时,我将如何绑定Success和状态?FailMethod1()

4

2 回答 2

1

我不确定是否真正理解您的整个问题,但为了设计您的问题,我会使用事件。当事件发生时可以触发转换,因此我将创建一个“ReceiveResponse”事件以及状态 B 和决策节点之间的转换(如下图所示)。这模拟了这样一个事实,即如果您的状态机处于状态 B 并接收到响应,则会触发转换,并将根据响应的值将状态从 B 更改为 Success 或 Fail。

Modelio 状态机

也许你能多描述一下可能的过渡或状态吗?您的对象是否有可能同时处于两种状态?

希望有帮助,

EBR

于 2013-11-06T15:57:21.393 回答
0

我建议使用序列图。

  1. 序列图允许异步调用类/组件方法。(或由表示为方法的事物处理的 http 请求)这确实是您所需要的。您将使序列图专注于它们是多个控制流以实现特定结果。

  2. 状态图的层次非常低,可能很难映射到这个域。但是,如果必须,您的所有方法/交互都必须重新转换为状态更改,而不是调用。状态机在状态之间移动,而不是在方法和类之间移动。因此,您的状态转换必须是“接收值为 A 的 B 消息”。我怀疑不是你想要的。它不会真正帮助我理解你的系统。

  3. 如果您需要这样做是因为您正在执行 MDA/生成 UML,那么请大大扩展您的问题。我假设这是一个基本的 UML 问题,如果不让我知道,我可以添加更多细节。
于 2013-11-07T07:52:56.240 回答