문제

데이터 해석을위한 규칙 기반 시스템을 구성하려고합니다. 그러나 규칙을 저장하고 해석하기위한 논리를 구성하는 방법을 결정하는 데 문제가 있습니다.

현재는 매우 복잡한 데이터베이스 구조가 있지만 규칙 데이터 저장의 모든 측면을 처리 할 것입니다. 아이디어는 시스템이 MS Outlook을 통해 사용자가 규칙을 추가 할 수있는 방식을 모방 할 수 있다는 것입니다.

내 문제는 다음과 같습니다.

  1. 이 규칙을 개체 내에 저장하려면 어떤 패턴을 사용해야합니까?
  2. 규칙을 실행하기 위해 Eval () 또는 적절한 개체 방향을 사용해야합니까?

그리고 예제 규칙은 다음과 같습니다.

있어야합니다 지역의 칼라 공원

각 요소 (개, 개가 있어야하는 경우, 고리, 공원)는 해석 할 별도의 논리입니다.

위의 질문에 대한 일반적인 조언은 대단히 감사합니다!

도움이 되었습니까?

해결책

나는 당신이 "실제 세계"맥락에서 설명하는 것과 같은 시스템을 구현 한 적이 없지만, 취미 프로젝트로 상당한 양을 연주했습니다. 내가 선호하는 접근법은 프롤로그 주장을하고 확인합니다. 당신은 공원의 위치, 무언가가있는 것이 무엇을 의미하는지, 개가 무엇인지, 그리고 당신은 당신의 게시물 맨 아래의 괄호 안에서 당신의 모범과 거의 똑같은 규칙을 만들 것입니다. 내 프롤로그가 너무 녹슬어 유용한 예를 제공해서 죄송합니다 ... 집에서 재배 한 언어를 너무 오래 연주 해 왔습니다.

PHP5에 대해서는 잘 모르겠지만 대부분의 언어에 포함시킬 수있는 프롤로그 통역사가 있습니다. 당신은 단순한 일을 함께 던질 수 있습니다 순방향 사슬 추론 프롤로그 통역사를 찾을 수없는 경우 자신의 생성의 규칙 데이터 구조에 대해 상당히 짧은 순서로. 당신은 이것에 관심이있을 수 있습니다 메모 자동 추론.

다른 팁

아마도이 대답은 당신에게 너무 사소하고 명백하지만, 나는 현재 기존 프로젝트에서 Zend 프레임 워크 응용 프로그램 인 이와 같은 것을 어떻게 해결할 것인지에 대해 생각했습니다. 필터 및 Validatorchains ZF가 사용하는 것을 생각했습니다. 나는 당신이 가능한 수의 입력 객체, 미세한 조건/제약 조건 및 미미한 동작을 가지고 있다고 가정합니다. 이 경우 먼저 객체를 인스턴스화하고 일련의 조건 (유효성 검사기)에 대해 실행합니다. 모든 조건이 만족되면 액션 체인에 대해 객체를 실행합니다. 여기서는 일부 조치가 다른 행동보다 먼저 수행되어야하므로 어떤 종류의 작업 우선 순위 시스템을 구현해야 할 것입니다. '알림 보내기'와 같은 개체를 '삭제'합니다. 따라서 ZF에서는 모든 조건/제약 조건에 대한 사용자 정의 유효성 검사기를 구축합니다. 나는 Outlook 시스템이 매우 똑똑한 의미라고 생각하지 않습니다. 유효성 검사기가 매우 일반적이라고 생각하지 않습니다.

DB에는 실제 규칙에 대한 테이블이있을 수 있으며, 하나는 조건과 행동을위한 테이블이있을 수 있습니다. 그런 다음 규칙을 모든 필요한 조건 및 행동과 연결하는 두 개의 다중 테이블이있을 수 있습니다.

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