2012-04-05 2 views
0

내 Java pojo XOM 모델에서 count라는 정적 변수가 있습니다. 규칙을 5 개 실행하고 count 변수를 하나씩 늘립니다. 따라서 실행이 끝나면 count = 5로 값을 갖게됩니다.ilog jrules에서 정적 선언 사용하기 Java xom 모델

이제 정적 변수 수가 아닌 것으로 선언하고 각 규칙 실행에 대한 값을 증가 시키면 변수가 5 회 초기화되고 정적이 아닙니다.

즉, 객체가 정적으로 선언되지 않으면 내 Java XOM 모델 클래스의 인스턴스 5 개가 생성됩니까?

답변

0

귀하의 질문을 이해하지 못했습니다.
나는 다음과 같은 규칙이 있습니다 :
"myObj.count를 myObj.count + 1로 설정하십시오." myObj 객체와 같은 개수의 변수를 갖게됩니다.
따라서 작업 메모리 ONE myObj에 삽입하면 마지막 및 실행 중 myObj가 하나만됩니다.
작업 메모리에서 "일치"할 때마다 각 규칙이 실행됩니다.
엔진에서 5 개의 myObj를 전달하면 최종 값이 '5'인 5 개의 myObj.count가 생깁니다.

정적이라면 똑같을 것입니다.
엔진을 상태 저장 모드로 사용하는 경우를 제외하고는 실제로는 거의 사용하지 않습니다.
BRMS에는 Decision Service가 있으므로 전달 된 매개 변수 (물론 규칙)에 대한 결정을 내릴 수 있습니다.
스테이트 풀 모드에서 사용할 수는 없지만이 사용은 거의 없습니다.
그렇다면 이전 대답이 정확하고 무한히 증가하는 값으로 끝납니다. 매회마다 5 씩 증가합니다.

가 BTW : 등등 해고 규칙의 수 여부 및 시간 실행과를 얻을 수있는 속성의 전체 집합이 있기 때문에 내가 정리해 ...

을이 시도하지, 당신은 당신이 무엇을 가지고 작업 메모리. 즉, 인스턴스의 인스턴스가 하나 인 경우 엔진은 런타임에 인스턴스를 더 생성하지 않습니다. 그것은 RETEPlus 알고리즘으로 인해 광기 (: :)로 이어질 것입니다. (자주 사용하지 않는)
개체의 인스턴스를 더 만드는 유일한 방법은 직접 규칙을 통해 트렁크 타임을 수행하는 것입니다. 예 : 보고서의 메시지에 "hello world"라는 메시지를 추가하십시오.
도움이 되었기를 바랍니다.

0

정적 변수는 클래스 변수 일뿐입니다. 따라서 규칙 호출간에 "지속"됩니다. 즉, 다음에 실행할 때 카운트는 10이됩니다. 정적을 사용하지 않으면 각 규칙에 대해 한 번이 아니라 각 규칙 호출마다 한 번 초기화됩니다. 그래서 요컨대, 아니오.