저는 UML 상태 다이어그램을 사용하여 프로세스를 모델링하고 있습니다.상태 다이어그램을 사용하여이 프로세스를 모델링하는 방법은 무엇입니까?
function getAccountState(customer) {
if (authorizationRequired(customer)) {
return State.AUTHORIZATION_REQUIRED
}
if (updateRequired(customer)) {
return State.UPDATE_REQUIRED
}
return State.DRAFT
}
그러나, 나는 각각의 전환이 두 번 포함되어 있다는 다소 이상한 생각 여기에 현재 상태를 결정하는 일부 의사 코드이다. 순서가 중요하지만 인증 확인이 항상 먼저 이루어져야 함을 의미합니다.
이 프로세스를 어떻게 모델링하나요?
편집 :
이 과정 뒤에 배경이 REST 서비스입니다. 계정은 자원으로 모델링되며 다양한 상태를 거칠 수 있습니다. 리소스가 요청 될 때마다 서비스는 위의 의사 코드에 설명 된 순서대로 검사를 수행하여 일치하는 표현을 생성합니다. 대답에 따라,이 중 하나를 포함 : 계정이 업데이트가 필요한 경우 프로파일을 업데이트 할 권한
- 링크가 계정에 권한을 부여 할 수있는 계정이되면 (이 그러나 단지 일어날 수있다 승인되거나 승인 될 필요가 없음)
- 프로필이 최신 상태 인 경우 계정을 마무리 할 수있는 링크 (클라이언트에서 업데이트하고 업데이트해야했기 때문에 또는 계정에서 업데이트하지 않아도 됨) 1 위)
위의 코드는 단지 예시입니다. 르. 이 서비스는 "상태"를 저장하는 데이터베이스 필드를 활용할 수도 있습니다.하지만이 패턴은 안티 패턴이 아닙니다. 별도의 필드에 상태를 (중복하여) 저장하는 대신 저장된 데이터에 비즈니스 규칙을 적용하여 현재 상태를 "파생"하는 것이 더 적합합니다. 그것이 의사 코드가 나타내는 것입니다.
코드가 실제로 상태 시스템을 나타내지는 않습니다. auth-needed/upd.-req가 어떻게 필요한지는 분명하지 않습니다. 운영은 전체 시스템에 영향을 미칩니다. 또한 처음부터 두 번을 양도 할 수 없습니다. 그것은 결정되지 않은/임의 경로를 취할 것입니다. –
코드는 "활성"상태의 규칙을 나타냅니다. 예 : 계정을 만들 때 메서드가 호출되고 계속하기 전에 계정을 승인해야한다고 반환 할 수 있습니다. 이 작업 (예 : 권한 부여) 후에 메서드가 다시 호출되고 프로필 업데이트가 필요함을 반환 할 수 있습니다. 그렇지 않은 경우 계정은 초안 상태입니다. 이 코드는이 논리를 나타 내기위한 것으로,이 코드는 실제로 일부 시스템에는 존재하지 않습니다. 방금 규칙을 설명하고 싶었습니다. –
예, 알고 있습니다. 그러나 작업에서 반환 된 조건 만 반환합니다. 이것은 상태 머신이 아닙니다.조건부 값을 반환하는 단순한 연산인데 실수로 "상태"라는 이름을 붙입니다. –