2015-01-22 1 views
0

jess에 설정된 규칙을 정의한 경우 규칙의 LHS에 정의 된 패턴을 기반으로 충돌이 발생할 수있는 규칙 집합을 찾을 수 있습니까? JESS에서 충돌 할 수있는 규칙을 찾는 방법은 무엇입니까?

은 (defrule가 (패턴을 규칙 1? X)
=> (인쇄물 t "규칙 1 소성"))

은 (defrule가 (패턴? X)
=> (인쇄물 t을 규칙 2 " 규칙 2 해고 "))

어쨌든 위에 정의 된 두 규칙을 찾으면 나중에 충돌하게됩니다. 활성화 된 모든 규칙의 사실 목록을 주장 할 때가 아니라면?

답변

0

나는 "충돌"이 무슨 뜻인지 몰라. 동일하거나 거의 동일한 상황에서 실행되는 두 가지 규칙이있는 경우 프로그래머가 원했던 것이고 작동하는 것입니다. 그것은 단어의 상식에서 "갈등"이 아닙니다. 결과가 스펙에 따르지 않으면 단순히 버그 일뿐입니다.

두 개의 중요하지 않은 ID (예 : )는 사실 개체 인스턴스 집합이 두 가지 규칙을 트리거하는지 여부에 대한 질문에 답해야하는 작업입니다. 이것은 규칙 A가 규칙 B가 정의하는 하위 집합 인 집합을 정의하는지 (또는 그 반대)에 대한 질문에 대답하는 것과 같습니다.

제약 조건이 단순하면 contraining 값을 영리하게 분석하면 대답을 얻을 수 있지만 일반적으로 단순하지는 않습니다. 제약 조건은 임의의 복잡한 기능을 사용할 수 있습니다.

+0

JESS에는 drool 검증기와 비슷한 것이 있습니까? – Naresh

+0

아니요, Jess 배포판이 아닙니다. 그리고 내 대답에 설명 된 복잡성을 감안할 때, 나는 그것이 합리적인 노력으로 작성 될 수 있는지 의심 스럽다. – laune

관련 문제