如何使用状态图对这个过程建模?

How to model this process using a state diagram?

我正在使用 UML 状态图对流程建模。这是一些确定当前状态的伪代码:

function getAccountState(customer) {

    if (authorizationRequired(customer)) {
        return State.AUTHORIZATION_REQUIRED
    }

    if (updateRequired(customer)) {
        return State.UPDATE_REQUIRED
    }

    return State.DRAFT
}

我得到的最接近的是这张图:

不过,我觉得每个transition包含两次有点奇怪。顺序很重要,这意味着授权检查应该始终排在第一位。

如何模拟这一过程?

编辑:

此过程背后的后台是 REST 服务。该帐户被建模为资源,可以经历各种状态。任何时候请求资源时,服务都会按照上面伪代码描述的顺序执行检查,以生成相应的表示。根据答案,它包括:

上面的代码只是一个例子。该服务还可以利用存储 "state" 的数据库字段,尽管这是一种反模式不是吗?通过对存储的数据应用业务规则而不是(冗余地)将状态存储在单独的字段中,"derive" 当前状态更可行。这就是伪代码应该指示的内容。

根据您的编辑,我想出了以下方法:

您将通过(可选)授权和更新达到 Draft 状态。如果失败,状态机将被重置。

我建议对 "it is somewhat strange that each transition is contained twice" 点发表评论,我知道从一个状态可以有多个由同一事件触发的转换,但在这种情况下,转换有不同的守卫。我记得,符号是 evt[guard]。希望对您有所帮助。