2009-03-05 3 views
2

XML 파일에 저장된 비즈니스 규칙을 읽어야합니다 (VC++/MFC/MSXML을 사용하고 있습니다). XML은 규칙으로 구성됩니다. 각 규칙에는 일련의 조건과 동작이 있습니다. 그런 시스템을위한 우아한 OOP 디자인은 무엇일까? 그런 시스템의 설계자가 있다면 어떤 디자인 패턴을 사용할 수 있습니까?XML 파일에 저장된 비즈니스 규칙을 읽기위한 우아한 방법

업데이트 :
규칙이 순서대로 적용되고 규칙의 모든 조건이 충족되는 경우 하나를 구매합니다. XML의

예 :


    <rules> 
     <!-- rule no. 1 --> 
     <rule name="rule no. 1"> 
     <conditions> 
      <condition name="condition no. 1" type="ATTR_EMPTY"> 
       <parameters> 
        <parameter name="attribute_name">ttt</parameter> 
        <parameter name="workflow_id">3</parameter> 
        <parameter name="workflow_state_id">5</parameter> 
       </parameters> 
      </condition> 
      <condition name="condition no. 2" type="ATTR_EMPTY"> 
       <parameters> 
        <parameter name="attribute_name">ttt</parameter> 
        <parameter name="enviroment_id">3</parameter> 
       </parameters> 
      </condition> 
     </conditions> 
     <actions> 
      <action name="action no. 1" type="ATTR_CLEAR"> 
       <parameters> 
        <parameter name="attribute_name">ttt</parameter> 
       </parameters> 
      </action> 
     </actions> 
     </rule> 
    </rules> 
+0

와우, XML이 실제로 문제없이 규칙 엔진에로드 될 수 있다고 생각합니다. –

답변

1

간단한 설명에서 알기 힘들지 만 각 규칙을 자체 조건과 동작을 관리하는 개체로 만들 것입니다. 규칙은 XML의 팩토리에 의해 작성되어 일종의 사전에 저장됩니다.

1

XML은 정말 낮은 수준의 전송 층은 당신이 사용하여 그 위에있는 높은 수준의 형식입니다? 그렇게하면 특정 라이브러리에 대한 권장 사항을 얻을 수 있습니다.

편집합니다 downvote 그래서 이것이 당신이 찾고 있던 답하지 않았다

확인을 클릭합니다.

아마도 oo 디자인을 얻을 수 있지만 XML 스 니펫이나 자세한 사양을 게시해야합니다.

+0

투표가 내게 아니었다. 나는 모든 의견에서 똑같이 흥미 롭다. –

1

이러한 규칙을 어떻게 메모리에 모델링 하시겠습니까?

메모리에서 이러한 규칙을 나타내는 한 가지 방법은 상위 수준 프로그래밍 언어 (예 : Python)를 사용하는 것입니다. XML 규칙이 실행될 때 C++ 오브젝트를 호출하는 동등한 제어 흐름을 사용하여 XML 규칙을 파이썬 코드로 변환하십시오. 나는 과거에 규칙 시스템을 구현하기 위해 실제로 해왔다. JS의 규칙을 XML보다 정의하는 것이 훨씬 쉬우 며 훨씬 더 읽기 쉽도록 규칙의 직렬화 형식으로 자바 스크립트를 사용했으며 실제로 실행 된 코드 (SpiderMonkey를 C++ < -> JS로 사용했습니다.)로 JavaScript를 사용했습니다. 그러나 기본적으로 C++ 바인딩이있는 일반적인 스크립트 언어로이 작업을 수행 할 수 있습니다.

1

내가 생각할 수있는 두 가지 디자인이 있습니다.이 경우 애플리케이션을 처리하는 콜백을 사용하여 XML SAX 파서를 사용하면 원 샷 평가자입니다 (애플리케이션이 규칙과 데이터 세트로 한 번 실행 된 다음 종료됩니다). 데이터

다른 하나는 Condition (Check) 클래스와 Action 클래스를 결합한 규칙 클래스를 사용하여 메모리에 규칙을 캐시하는 DOM 구문 분석기입니다.

1

규칙 부분은 약간의 스키마 트론과 같다 : XML 및 ISO 표준에서 작성된 XML 유효성 검사 언어

http://www.schematron.com/elements.html

합니다.

소스 데이터 (유효성이 검증 됨)가 XML에도 있다고 가정 할 때 한 가지 방법은 규칙 집합을 Schematron (XSLT에서는 어렵지 않음)로 변환 한 다음 Schematron "인프라"(즉, , stylesheets)를 사용하여 콘텐츠를 Schematron 파일에 대해 검증합니다.

이렇게하면 결과 XML 파일이 생성되어 어떤 규칙이 만족되었는지, 어떤 규칙이 만족되지 않은지를 보여줍니다. 그런 다음 검증 된 각 규칙과 연관된 "조치"(변형?)를 수행 할 수 있습니다.

0

XML로 비즈니스 규칙을 작성하는 것은 어렵습니다. 게다가 C++은 XML 처리에 좋은 언어가 아닙니다.

응용 프로그램은 Active 스크립팅을 통해 속성을 노출하고 VBScript/JScript에 규칙을 작성할 수 있습니다. 이 방법으로 런타임에 규칙을 평가할 수 있습니다.

규칙을 정의하는 데 XML이 필요한 경우 자바, JavaScript 또는 XSLT와 같은 고급 언어로 프로세서를 별도로 작성합니다. 백그라운드에서 프로세서를 실행하고 C++ 응용 프로그램에서 반환 값을 가져옵니다.

관련 문제