2011-10-03 3 views
0

이전 프로젝트에서 스프링 배치와 drools 모두를 별도로 사용했습니다. 내 현재 프로젝트에서 나는 최대 500k xml 개체를 처리하고 jaxB로 변환하고 각 개체에 규칙을 적용해야하는 디자인을 사용합니다 (규칙 자체는 매우 간단합니다 : 속성을 비교하고 '알림' 객체)를 호출하고 마지막으로 이벤트를 전송하여 스프링 웹 플로우 뷰 모델 (리스너가 될 수 있음)이 자체 업데이트됩니다. 그것은 디자인을위한 요구 사항이 아니지만 구현 한 것입니다. 1) ItemReader (JaxB) 2) ItemProcessor : ksession (stateful)에 매핑하고 drl 파일을 기반으로 규칙을 실행합니다. 3) ItemWriter : 필요한 정리 작업을 준비하고 적절한 이벤트를 발생시킵니다.스프링 배치 (500k 개체)와 함께 사용할 수있는 최상의 규칙 프레임 워크는 무엇입니까?

로직 그 자체는 간단하지만, 일괄 처리 작업의 모든 글자 코드를 추가하면 itemReader, Itemprocessor 등 간단한 규칙이 적용되지 않았습니다. 일하지 마라. 또한 여러 포럼을 읽은 후 RETE algo는 일괄 처리 응용 프로그램에서 제대로 확장되지 않습니다.

요약하면, drools은 스프링 뱃치에서 기본 규칙 프레임 워크를 통합하는 가장 좋은 방법이며, 다른 어떤 경량 대안도 있습니까?

답변

1
  • 규칙 자체는 매우 간단하다 : 특성을 비교하고 어떤Rules Framework에 대한 '통보'객체

필요가 없습니다에 두 플래그를 업데이트합니다. 아니

"항목 중심의 처리 시나리오에서 비즈니스 로직의 응용 프로그램을 허용 ..an 확장 점"즉 스프링 배치의 ItemProcessorItemProcessor의 JavaDoc에서

위한 것입니다 Drools 나 다른 규칙 엔진으로 복잡하게 만들 필요가있다. 복잡하지 않은 수십/수백 개의 규칙을 가지고 있으며 이는 코드 작성이 쉽지 않습니다.

+0

웃기지 마세요 -이게 내가하는 일이야. Pojo는 150 라인 클래스이며 대부분 괜찮습니다. 때때로 우리는 단지 옳은 것을 할 필요가 있습니다 :). – pritam

+0

규칙이 단순하면 전용 규칙 엔진으로 복잡하게 만드는 이유는 무엇입니까? – tolitius

+1

당신이 할 수있는 것은 규칙을 자바 클래스로 미리 컴파일하기 위해 규칙을 사용하는 것입니다. 우리가 해냈고 성능이 크게 향상되었습니다. 당신은 당신의 문제를 해결할 수 있습니다. http://stackoverflow.com/questions/7992569/how-to-compile-a-drl-file-through-an-ant-build-script –

0

일반적으로 RETE 알고리즘은 문제가되지 않습니다. 큰 장점입니다. 배치 프로세스가되고 잘 작동 할 것이라는 가정하에 솔루션을 설계해야합니다. 시나리오의 큰 오버 헤드는 XML 코드에서 모든 500k 객체를 생성한다는 점을 고려해야합니다. 비즈니스 규칙을 올바르게 설계하면 오브젝트를 얻고 올바르게 수행 할 수 있습니다.

관련 문제