문제

지금 작업중인 애플리케이션에서 일종의 서비스에 대해 수만 개의 개체에 대한 적격성을 주기적으로 확인해야합니다. 의사 결정 다이어그램 자체는 훨씬 더 큰 다음과 같은 형식입니다. 결정 다이어그램

각 끝 노드 (원)에서 작업을 실행해야합니다 (개체의 필드, 로그 정보 등 변경). Drool Expert 프레임 워크를 사용해 보았지만이 경우 다이어그램의 모든 경로에 대해 끝 노드로 이어지는 긴 규칙을 작성해야합니다. Drools Flow는 그러한 사용 사례를 위해 구축 된 것 같지 않습니다. 객체를 취하고 그 과정에서 결정에 따라 최종 노드 중 하나에 도달합니다. 그리고 또 다른 개체에 대해. 아니면? 이러한 솔루션에 대한 몇 가지 예 / 링크를 제공해 주시겠습니까?

업데이트 :

Drools Flow 호출은 다음과 같습니다. 라코 디스

즉 : Application 개체를 가져 와서 새 프로세스를 시작하고 프로세스가 완료되면 (최종 액션 노드가 애플리케이션을 어떻게 든 수정 함) 작업 메모리에서 개체를 제거하고 반복합니다. 새 App 개체에 대한 프로세스입니다. 이 솔루션에 대해 어떻게 생각하십니까?

해결 방법 :
나는 Drools Flow를 사용하게되었고 꽤 잘 작동했습니다. 내 의사 결정 프로세스는 Drools Expert가 요청한 것만 큼 간단하지 않으며 의사 결정 트리의 어디에 있는지에 따라 프로세스가 데이터베이스에서 개체 목록을로드하고, 변환하고, 결정을 내리고, 모든 것을 기록해야합니다. 저는 Process 개체를 사용합니다. 이는 프로세스에 매개 변수로 전달되고 모든 전역 변수 (프로세스를위한)와 트리의 다른 지점에서 반복되는 일부 편의 메소드를 저장합니다 (Script Task 노드에 Java 코드를 작성하는 것은 그 자체로 매우 편리하지 않기 때문입니다). 또한 결정을 내리기 위해 Java를 사용하게되었습니다 (mvel 또는 규칙이 아님). 더 빠르고 제어하기 더 쉽습니다. 내가 작업하는 모든 객체는 매개 변수로 전달되고 코드에서 일반 Java 변수로 사용됩니다.

도움이 되었습니까?

해결책

Drools 전문가 가 바로 그 길입니다.

상위 노드에 대해 자신을 반복하지 않으려면 속임수는 insertLogical (또는 stateless 세션에있는 경우 insert)를 사용하고 규칙이 규칙을 트리거 할 수 있음을 이해하는 것입니다 (아버지의 SQL 쿼리가 아닙니다.).예 : 라코 디스

의사 결정 다이어그램이 자주 변경되고 프로그래머가 아닌 사람이 편집하기를 원하는 경우 의사 결정 테이블 (및 DSL )에 대한 문서를 살펴보세요.이 경우 각 규칙에 대해 전체 경로를 반복 할 수 있지만 실제로는 대부분의 경우 괜찮습니다.

다른 팁

비슷한 문제가 있었고 Neo4J 노드 데이터베이스를 간단하고 매우 유연한 규칙 엔진으로 사용했습니다. REST 서비스 인터페이스와 함께 사용할 수 있으므로 메인 애플리케이션과 독립적입니다. 또한 최종 사용자도 별도의 애플리케이션을 사용하여 규칙을 구성 할 수 있습니다.

iLog 프레임 워크 겸 규칙 엔진을 사용해 볼 수 있습니다.

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