문제

예를 들어, 저는 비즈니스 프로세스 관리 애플리케이션을 구축하고 있습니다.여기에는 다음 엔터티가 있습니다.여러 작업에 대한 하나의 문제로 서로 관련된 문제와 작업.작업과 문제 모두 고유한 상태를 가지며 한 상태가 다른 상태에 영향을 미칠 수 있습니다.

예를 들어 둘 다 "취소됨" 및 "완료됨" 상태를 갖습니다.이슈 상태를 "취소됨"으로 변경하면 모든 작업이 "취소됨"이 되어야 합니다.모든 작업의 ​​상태를 "완료"로 변경하면 문제가 자동으로 "완료"가 됩니다.

두 엔터티 모두에 대해 꽤 많은 상태가 있고 한 상태에서 다른 상태로의 전환 논리가 있고 상태의 종속성이 변경될 수 있다고 가정하면 해당 상황을 처리할 수 있는 디자인 패턴 및/또는 모범 사례가 있습니까?

도움이 되었습니까?

해결책

떠오르는 디자인 패턴은 "규칙" 입니다 ;-)

또는 원하는 경우 명령 패턴

즉, 이와 같은 상황에서는 상태와 허용 가능한 전환을 나열하는 데이터베이스 테이블을 만들고 각 전환에 작업을 연결합니다(리플렉션 사용).

일치하도록 상태를 업데이트하는 것보다 전환 작업이 더 복잡한 경우를 처리하는 데 이것이 유용하다는 것을 알았습니다.

예를 들어, 한 시스템에는 요청 문서가 여러 위원회 검토 스테이션을 통과해야 하는 워크플로가 있었는데, 각 스테이션에서는 문서를 거부하거나 다음 단계로 전달할 수 있으며 맞춤형 부작용 처리도 수행할 수 있었습니다.위원회 조직, 처리 구조, 처리 조치가 세 번 크게 변경되었습니다. 개발 중, 배포 첫해에는 5번 더 수행됩니다.

다른 팁

나는 이런 종류의 일에 관찰자 패턴을 선호합니다. http://en.wikipedia.org/wiki/Observer_pattern 귀하가 제시한 예에서는 작업이 해당 문제를 관찰하고 문제가 해당 작업을 관찰하도록 했습니다.문제가 취소됨으로 표시되면 작업이 확인되어 취소됨으로 표시됩니다.작업이 완료로 표시되면 이슈는 이를 확인하고 다른 작업이 완료되었는지 등을 확인합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top