내가은/
Parameter -> Condition -> Rule
하자 아래와 같은 구조를 가지고 매개 변수 내가 만들 필요가 말하는 Business rule
, Customer Age > 18
나는 두 개의 매개 변수, Customer Age (P1) and 18(P2)
, P1 is Field Parameter (Ognl)
및 P2 is constant Parameter
와이 value 18
.
내 Condition
이 이제 Customer Age > 18
이고 내 Rule
입니다.
문제점 설명 : 사용자가 중복 매개 변수/조건 및 규칙을 작성하지 않도록하십시오.
해결책 : Constant Parameters, Field Parameters etc
나는 DB를 체크인하고 이미 존재하는지 비교할 수 있습니다. 나를 위해
지금 상태
Customer Age > 18
및 18 < Customer Age
비즈니스 측면에서 동일합니다.
위의 경우는 더 복잡 할 수 있습니다.
(a + b) * (c + d) is same as (b + a) * (d + c)
위의 표현식의 유효성을 검사해야합니다.
첫 번째 접근 - DB (10000 일 수 있음)에서 모든 표현식을로드하고 using Stack/Tree Structure
을 비교하면 내 목표를 실제로 죽일 것입니다.
두 번째 방법 - 나는 전체 전력을 구축 생각하고 있었는데, hashcode generator
을 가정 해 봅시다 또는 우리는 (또한 운영자/브라켓을 고려하여) 모든 표현에 대해 하나의 int value
을 말할 수 있습니다. 이 값은 위의 표현식을 검증하는 방식으로 생성되어야합니다.
수단 a + b
와 b + a
다른 생성한다 같은 int value
및 a - b
및 b - a
를 생성한다.
올바른지, 나는 출력/반복을 줄일 수 있지만 여전히 내 응용 프로그램은 100의 조건, 규칙에서 동일한 매개 변수를 사용합니다. –
커스텀 해시 함수를 사용하는 방식이 정말 마음에 듭니다. 문제는 해시 된 값 (예 : 문자열 '고객 연령')이 사용되었을 때 (고객 연령대 등이 아닌) 정확히 일치하는지 확인해야한다는 것입니다. –
값이 18 인 매개 변수가 18 또는 18 또는 18 등으로 명명 될 수있는 것처럼 이름에 대해 걱정할 필요가 있습니다. 사용자가 매개 변수 아래에있는 콘텐츠, 조건을 해시 코드 계산에 사용하려고합니다. –