문제

우리는 클라이언트를위한 급여 생성 시스템을 설계하고 있습니다.

우리가 타겟팅하는 조직에는 다음과 같이 계층 구조가 있습니다.

직원의 급여는 다양한 급여 구성 요소로 구성됩니다. 각 급여 구성 요소는 IT와 관련된 3 가지 규칙, 계산 규칙 (다른 구성 요소의 % 또는 고정 번호 또는 고정 번호의 %로 구성 요소를 계산), 자격 규칙 (직원/부서가 구성 요소에 적합한 지) 및 구성 요소의 최대 및 최소를 제한하는 제약 규칙.

****이 규칙은 편집 가능하며 사용자 최종 사용자가 편집 할 수 있습니다 **. 또한 이러한 규칙은 하향식을 상속 받지만 하위 레벨에서 정의되면 하위 레벨 규칙이 우선합니다. **

출석, 잎, 보너스 테이블이있는 데이터베이스가 있으며이 규칙은 이러한 테이블과 상호 작용해야합니다.

클라이언트는 별도의 데이터베이스 인스턴스를 호스팅하는 여러 클라이언트에 대한 급여를 생성합니다. 각 구성 요소에 대해 각각 다른 해석을 가질 수 있으며 다른 구성 요소가있을 수 있습니다.

우리는 SQL Server 만 지원하려고하며 급여 생성은 오프라인 활동이 될 것입니다.

우리는이 규칙을 사용하여 개별 세금 구성 요소를 생성하는 논리를 어디에 두어야하는지로 나뉩니다 (세금 공제, 세금 상각, 수당 등).

어떤 사람들은 직원 신분증을 받고 그 달 동안 급여를 생성하는 Magic SP를 옹호하고 있습니다. 다른 사람들은 논리가 별도의 구성 요소로 분할되기를 원하며 응용 프로그램 계층의 직원에 대한 종속 데이터를 얻고 이러한 구성 요소를 계산합니다.

우선 순위의 순서는 다음과 같습니다. 1. 신규 고객에게 변화를 적응시키는 능력을 빠르게 2. 장기 유지 가능성 3. 성능

1과 2는 오프라인 활동이기 때문에 여기서 3보다 큰 요인으로 3을 능가합니다.

유지 관리 가능성과 빠른 사용자 정의 가능성은 매우 중요합니다. 다른 클라이언트를위한 응용 프로그램을 배포 할 것입니다. 클라이언트 A는 급여 구성 요소 규칙 ((0.3 * Basic) + 800) 및 클라이언트 B는 (0.2 * Basic) + (0.1 * Atendance 보너스)를 가질 수 있습니다.

위에서 제안한 규칙이 최종 사용자가 지정하고 웹 UI를 통해 사용자 정의 할 수 있어야하므로 Will SPS는 여기서 혼란을 일으 킵니다. 우리는 SQL에서 공식을 구문 분석해야합니다. 얼마나 어렵거나 쉬운가요? 애플리케이션 계층 (C# .NET)에서 SPS를 사용하여 어떤 이점을 얻을 수 있습니까?

원래 게시물은 여기에 있습니다.디자인 힌트, 급여 시스템 ... 다시 게시... 그러나 질문 중 어느 것도 제대로 대답하지 않았습니다.

기존 시스템 아키텍처에 대한 제안과 포인터는 매우 도움이 될 것입니다. ... 그렇습니다. 우리는 시스템의 다른 곳에서 LINQ에서 SQL을 사용하고 있습니다.

친절한, Ashish Sharma

도움이 되었습니까?

해결책

나는 항상 DB 계층에 비즈니스 논리를 넣는 것을 막으려 고 노력합니다. 글쓰기, 디버그 및 유지 관리가 더 어렵습니다. 또한 DB는 일반적으로 가장 비싼 층입니다. 더 많은 사용자를 지원하기 위해 시스템을 강화 해야하는 경우, 더 많은 사용자를 지원 해야하는 경우 비교적 저렴하고 새로운 웹 서버를 시스템에 추가하기가 쉽지만 각 DB에 라이센스와 추가 지원이 필요하기 때문에 DB 인스턴스를 추가하는 데 비용이 많이 듭니다.

다른 팁

예를 들어 JEP (Java의 경우)와 같이 공식을 저장하면 문제가되지 않습니다. 전체 공식을 문자열로 유지하십시오. 즉 : "pay = ((0.3 * Basic) + 800))를 트리에 구문 분석하십시오.

정보를 위해 JEP 문서 중 일부를보고 아이디어를 가져올 수 있습니다. 여기에 게시 한 공식에 대해 간단한 솔버를 구현하는 데 문제가되지 않아야합니다.

내 sugestion :

  • 데이터베이스에 문자열에 보관하십시오.
  • 평가 및 파서를위한 작은 라이브러리를 만드십시오.
  • 이진 트리에 구문 분석하십시오. ( '+'와 같은 800을 가리키며') 그런 다음'''기본 '을 가리키고'0.3 '
  • 그것을 한 후에는 그것을 해결하기 위해 간단한 재귀 기능이 필요합니다.

이러한 공식의 복잡성이 많지 않으면 어떤 측면 에서도이 작업을 수행 할 수 있습니다.

문자열로 표시되는 공식을 평가할 .NET 솔루션을 찾고 있다면 여기에서는 세부 사항을 사용하는 훌륭한 기사입니다. Antlr 및 C# 계산 엔진을 만듭니다. 문자열을 구문 분석하고 AST를 구축 한 다음 표현식을 평가하는 완전히 기능적인 공식 통역사가 있습니다. 또한 계산 엔진은 방문자 패턴을 사용하여 구현되므로 데이터베이스 조회와 같이 수행하려는 기능이있는 경우 사용자 정의를 솔루션에 쉽게 통합 할 수 있습니다.

담당자 또는 대표에 대해 들어 보셨습니까?

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