2010-05-06 55 views
1

我有一个合同类。合同有效期为2010年1月1日至2010年12月31日。当状态依赖于函数时,模型statemachine如何?

它可以处于Active或Passive状态,具体取决于我询问实例的状态。 ex。如果我问2010年7月4日,它处于Active状态,但如果我问2011年1月1日,它处于Passive状态。

的statemachine图:

从开始的状态,它应该进入下一哪个州? 我正在考虑一个伪状态“default”,其中一个入口函数决定下一个状态,然后是一个具有主动和被动状态的子状态机,然后是移除时的结束状态。

但是,这似乎很复杂,这样一个微不足道的问题。

你会怎么做?

回答

0

嗯,你想要么做你的描述,这将使该合同是无效的(开始/结束)状态时,有人试图使用未经事先日期事件的接触,或者你可以尝试将呼叫添加到该功能在构造函数中,所以你的合约马上就处于适当的状态。可能还有其他解决方案,但您应该考虑合同上会发生的其他事件(消息/方法调用)比日期还要多。有些人可能会影响stae。 BTW。如果不是嵌入状态机,只需将开始和结束连接到主动和被动状态,则解决方案并不复杂。

+0

您的建议将意味着我有一个“创建状态”(黑点),并且从创建状态引出2个箭头,一个指向Active,另一个指向Passive(取决于我在构造器中注入的状态)! – user77115 2010-05-06 21:44:06

+0

@ hjo1620您只能从初始状态转换一次,但您可以使用选择元素。 – 2010-05-06 22:56:48

+0

我假设你只能有一个初始状态,但在Jude/Astah你可以用这个工具来完成。是语言的糟糕的工具支持还是你知道某个地方的UML规范中的规范性参考? – user77115 2010-05-07 08:01:25