2013-02-27 2 views
1

기존 ILOG JRules 기반 응용 프로그램을 Drools 기반 프로젝트로 마이그레이션하려고합니다. ILOG에서 규칙 (수식) 내에서 중간 값을 계산하고 저장하는 데 사용할 수있는 local variables (및 변수 세트)이 있습니다.Drools에서 ILOG 변수 집합이 같습니다.

Drools에 해당 지역 변수가 있습니까? 나는 우리가 Globals in Drools 알고 있지만, 문서는 읽기 전용 상수로 전역을 사용하고 규칙을 자바 호출 클래스 사이에 데이터를 전달하는 것이 좋습니다 : 강력하게 설정하거나 규칙 내부에서 글로벌 값을 변경하기 위해 권장하지 않습니다

. 작업 메모리 인터페이스를 사용하여 항상 응용 프로그램의 값을 설정하는 것이 좋습니다.

하나의 접근법은 사용자 정의 Java 클래스 Variable을 작성하고 그 안에 모든 변수를 선언하고 누적 규칙에 사용하는 것입니다. 하지만 새로운 변수를 추가 할 때마다 Java 코드가 변경되어야합니다.

규칙 내에서 정의되고 변경 될 수있는 Drools에서 변수를 정의하고 사용하는 가능한 방법이 있습니까?

답변

1

규칙 사이에 일종의 계산이나 상태를 유지하기 위해 전역을 사용하는 데 문제가없는 것으로 나타났습니다. 나는 Drools의 문서가 (매우 복잡하고 불분명 한 방식으로) 말하려고하는 것은 Drools가 언제 전역의 가치가 변하는 지 알지 못하기 때문에 규칙의 RHS에서 절대 전역을 사용해서는 안된다는 것입니다. 제약 조건에서 전역 변수를 사용하는 경우 절대 값을 변경하지 말아야합니다. saud를 가지고 있다면, 나는 당신의 규칙의 RHS에서 전역을 사용하는 것이 무해하다고 생각합니다. 이 아이디어가 마음에 들지 않으면 "계산"개체를 세션의 사실로 삽입 할 수 있습니다. 규칙은이 사실과 일치 할 수 있으며 변수를 변수에 바인딩 한 다음 RHS에서 변수와 상호 작용할 수 있습니다.

희망 하시겠습니까?