문제

프로세스 관리 앱인 웹 애플리케이션을 구축합니다. 몇 가지 다른 직원 유형에해야 할 작업 목록이 표시되며 각 직원이 작업을 완료하면 다음 직원에게 작업을 수행합니다.

작업 계층은 배치>로드> 어셈블리> 부품> 작업입니다. 현재 각 직원 유형에 대해 먼저 작업 해야하는 작업을 결정하기위한 8 가지 규칙이 있습니다. 이 규칙은 부품 크기에 적용되며, 또한 부품 완료가 계층에 영향을 미치는 방법 (예 : 파트 A가 완료되면 BATCH가 완료 될 배치에 남아있는 다른 부분이 여전히 남아 있지 않은 전체 배치를 완료합니다.

어쨌든 그것은 시스템의 작동 방식의 엘리베이터 피치입니다. 내가 알아 내려고하는 것은 규칙이 변경 될 수 있고 더 많은 규칙이 추가 될 수있는 효율적이고 빠르며 유지 관리 가능한 방법입니다.

처음에는 DB (SQL 2005)가 모든 무거운 리프팅을하도록하려했지만 DB로 더 복잡한 규칙을 구현하기가 어렵다는 걱정이 있습니다. 따라서 대안은 작업 목록을 중간 계층으로 가져 와서 개체 모음을 만들고 각 규칙을 컬렉션에 적용하는 것입니다. 의심 할 여지없이 각 규칙이 T-SQL로 번역 될 수 있지만 작업 유형에 따라 최대 8 개의 기준으로 주문하는 것은 많은 번거 로움처럼 느껴집니다.

중간 계층 접근법에서 볼 수있는 한 가지 이점은 작업 흐름이 변경 될 수있는 더 느슨하게 제한된 시스템을 만들 수 있다는 것입니다.

그래서 너희들은 무엇을 추천 하시겠습니까? 내가 생각하지 않은 세 번째 대안이 있습니까?

1] 편집 [1]은 이것을 조금 더 자격을 갖기 위해 DB가 처음 개발 한 내용에서 변경 될 것으로 예상되지 않습니다.

도움이 되었습니까?

해결책

질문의 세부 사항에서 결정하기는 어렵습니다. 그러나 논리를 비즈니스 로직 (중간) 계층에 넣으면 백엔드 데이터베이스가 무엇이든 상관없이 비즈니스 규칙이 동일한 코드를 계속 사용할 수 있음을 의미합니다. 현재 T-SQL을 지정하지만 미래에 비 SQL 서버 환경으로 이동할 가능성이 있습니까?

다른 팁

어떤 플랫폼? .NET 3.5는 LinqToSQL을 소개하여 이것을 마우스 포인트로 만들 수 있습니다. 전략 패턴을 사용하여 작업 유형을 기반으로 적절한 쿼리를 선택/빌드 한 다음 LINQ가 SQL로 변환하도록하십시오. 이렇게하면 코드에서 쿼리를 빌드 할 수 있지만 실제로 DB에서 실제로 실행됩니다.

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