我正在使用UML状态图对进程建模。这是一些确定当前状态的伪代码:
function getAccountState(customer) {
if (authorizationRequired(customer)) {
return State.AUTHORIZATION_REQUIRED
}
if (updateRequired(customer)) {
return State.UPDATE_REQUIRED
}
return State.DRAFT
}
但是,我认为每次转换都包含两次有点奇怪。订单很重要,但这意味着,授权检查应该始终是第一位的。
如何为这个过程建模?
修改
此过程背后的背景是REST服务。该帐户被建模为资源,可以通过各种状态。无论何时请求资源,服务都按照上面的伪代码描述的顺序执行检查以生成相应的表示。根据答案,它包括:
上面的代码只是一个例子。该服务还可以利用存储“状态”的数据库字段,虽然这是反模式不是?通过在存储的数据上应用业务规则而不是(冗余地)将状态存储在单独的字段中来“导出”当前状态是更可行的。这就是伪代码应该表明的内容。