2009-02-20 4 views
16

소매 환경의 가격 결정 엔진에 대한 클라이언트의 요구 사항을 해결하려고합니다. 우리는 가격 결정 엔진을 이미 장바구니에있는 기존 품목을 기반으로 구입 한 품목에 대해 새로운 가격을 설정하는 일련의 가격 규칙에 따라 운영한다고 정의했습니다.사실에 규칙을 적용하기위한 디자인 패턴 및 알고리즘

간단한 가격 규칙은 수 있습니다. 40 % OFF입니다. 좀 더 복잡한 규칙은 일 수 있습니다. 2 개를 구입하고 최소 $ 30을 사용할 때 무료 셔츠를 이용하십시오.

이러한 규칙을 적용하기위한 일반적인 업계 관행은 최종 최적의 가격 인 것처럼 보이지만 순위 지정 옵션과 스태킹 옵션이 필요할 수도 있습니다.

랭킹은 달리 승리하지 못하게하는 규칙을 허용합니다. 스태킹을하면 여러 규칙을 얻을 수 있습니다.

저는 규칙 엔진과 관련하여 여기에서 많은 게시물을 검토했으며 디자인의 일부로 이러한 도구 중 하나를보아야하는지 또는 디자인 패턴과 알고리즘이 적용되지 않을지 판단하는 데 도움이 필요합니다. 디자인.

이것은 잠재적으로 NP 문제이며, 처리 할 항목 수 (사실)가 새 항목을 추가 할 때마다 다시 요구되는 트랜잭션 당 100 개를 초과 할 수 있음이 분명합니다.

+1

궁금한 점은 어떤 방법으로 끝났습니까? 올바른 선택 이었나요? –

+0

우리는 문제를 해결하기 위해 다양한 기법을 사용하여 결국 자체 규칙 엔진을 만들었습니다. 이것이 7 년 전에 해결되고 구현 되었기 때문에 여기에 커프스를 공유 할 정보가 없습니다. 우리는 일종의 지역화 접근법을 사용하고 지역화에 가중치를 적용하는 것으로 끝 맺었습니다. 그런 다음 최소 비용 라우팅 유형의 알고리즘을 사용하여 최상의 가격 조합을 결정했습니다. 완성 된 작업은 제가 가장 좋아하는 프로젝트 중 하나였습니다. 다른 장소에서도 사용할 수있는 독립 모듈로 작성했습니다. 규칙 + 입력 세트 -> 가격 출력 세트. – Bill

답변

2

규칙 엔진이 매우 적합합니다. 룰 엔진이 안정적이라면 나머지 아키텍처/애플리케이션에 적합하며 애플리케이션의 핵심 기능에 필요하다.

규칙 엔진이 사용자의 응용 프로그램 중 일부에 불과하거나 악화 된 경우 : 나머지 코드와 동일한 프로그래밍 언어가 아닌 코드가 있습니다. 그런 다음 다시 고려해야합니다. 핵심 응용 프로그램의 외부에있는 모든 응용 프로그램 부분 (데이터베이스가 Java 응용 프로그램 외부에 있더라도)은 위험합니다.

다음 두 가지 가능성이 있습니다. 간단한 규칙 엔진을 직접 프로그래밍하거나 전략 또는 상태 패턴을 사용하십시오.

5

규칙 엔진에 대한 Martin Fowler의 멋진 기사가 있으며 사용 위치는 어디입니까? 도움이되는지

http://www.martinfowler.com/bliki/RulesEngine.html

+0

나는 이것을 조사하고있다. 나는 그의 작품을 읽었지만 최근에 그의 온라인 자료를 건너 뛰지 않았다. – Bill