我有一个动作可以完成两件事,首先它会改变应用程序状态,第二部分会调用web服务。当webservice发送响应时,它将影响当前的应用程序状态。
假设我有上述设置。 Method1()
调用网络服务并导致状态从A
更改为B
。在Method1()
调用Finish()
来电之后,状态可以从B
更改为C
,B
更改为Success
等。
如果B
更改为Success
,它也可能会从Success
更改为C
。
如果可以在Success
行动后的任何时间点设置状态,我将如何处理Fail
和Method1()
状态?
答案 0 :(得分:1)
我不确定真正理解你的整个问题但是为了设计你的问题,我会使用事件。 当事件发生时可以触发转换,因此我将创建“ReceiveResponse”事件以及状态B和决策节点之间的转换(如下所示)。 这模拟了这样一个事实,即如果状态机处于状态B并且接收到响应,则触发转换,并且根据响应的值,将更改从B到成功或失败的状态。
也许你能描述一下可能的过渡或状态吗?你的对象可能同时处于两种状态吗?
希望它有所帮助,
EBR
答案 1 :(得分:0)
我建议使用序列图。
序列图允许类/组件方法的异步调用。 (或由表示为方法的事物处理的http请求)这正是您所需要的。您可以将序列图的重点放在多个控制流上,以达到一定的效果。
状态图确实很低级,可能很难映射到这个域。但是,如果必须,您的所有方法/交互必须重新设置为状态更改,NOT,调用。状态机在状态之间移动,而不是方法和类。所以你的状态转换必须是"接收值为A"的B的消息。不是我怀疑你想要的。它无助于我理解你的系统。