【问题标题】:How model statemachine, when state is dependent on a function?当状态依赖于函数时,如何建模状态机?
【发布时间】:2010-05-06 18:40:09
【问题描述】:

我有一个合同课程。合同有效期为 2010 年 1 月 1 日 - 2010 年 12 月 31 日。

它可以处于主动或被动状态,具体取决于我向实例询问其状态的日期。 前任。如果我问 2010 年 7 月 4 日,它处于 Active 状态,但如果我问 2011 年 1 月 1 日,它处于 Passive 状态。

状态机图:

从开始状态,接下来应该进入哪个状态? 我在想一个伪状态“默认”,它有一个入口函数来决定接下来要进入哪个状态,然后是一个具有主动和被动的子状态机,然后是移除时的结束状态。

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

你会怎么做?

【问题讨论】:

    标签: uml


    【解决方案1】:

    嗯,您要么按照您的描述进行操作,当有人尝试在没有事先日期事件的情况下使用联系人时,这将允许合同处于无效(开始/结束)状态,或者您可以尝试将呼叫添加到该在构造函数中运行,因此您的合约立即处于正确状态。可能还有其他解决方案,但您应该考虑合约上除了日期之外还可能发生哪些其他事件(消息/方法调用)。有些可能也会影响状态。顺便提一句。当您不嵌入状态机而只将开始和结束连接到主动和被动状态时,您的解决方案并不复杂。

    【讨论】:

    • 您的建议意味着我有一个“创建状态”(黑点),以及从该创建状态引出的 2 个箭头,一个指向主动,一个指向被动(取决于我注入的状态建造者)!?
    • @hjo1620 您只能从初始状态进行一次转换,但您可以使用选择元素。
    • 我假设您只能有一个初始状态,但在 Jude/Astah 中,您可以使用该工具来完成。是对语言的不良工具支持还是您知道 UML 规范中某处的规范性参考?
    • @hjo1620 一个区域只能有一个初始状态:UML 上层结构、p549、ch15.3.10 区域、段落约束、项目 [1]...我会选择。
    • 感谢您回答我的问题。
    猜你喜欢
    • 1970-01-01
    • 2021-08-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多