CER에는 동적으로 정의된 규칙 세트를 실행할 수 있는 해석기가 포함되어 있습니다.
다음은 CER 규칙 세트 해석기를 사용하여 HelloWorldRuleSet의 규칙을 실행하는 샘플 코드입니다.
package curam.creole.example; import junit.framework.TestCase; import curam.creole.execution.RuleObject; import curam.creole.execution.session.InterpretedRuleObjectFactory; import curam.creole.execution.session.RecalculationsProhibited; import curam.creole.execution.session.Session; import curam.creole.execution.session.Session_Factory; import curam.creole.parser.RuleSetXmlReader; import curam.creole.ruleitem.RuleSet; import curam.creole.storage.inmemory.InMemoryDataStorage; public class TestHelloWorldInterpreted extends TestCase { /** * 독립형 Java 애플리케이션으로 클래스를 실행합니다. */ public static void main(final String[] args) { final TestHelloWorldInterpreted testHelloWorld = new TestHelloWorldInterpreted(); testHelloWorld.testUsingInterpreter(); } /** * XML 소스 파일에서 HelloWorldRuleSet를 읽습니다. */ private RuleSet getRuleSet() { /* 규칙 세트 소스 파일의 상대 경로 */ final String ruleSetRelativePath = "./rules/HelloWorld.xml"; /* 규칙 세트 소스에서 읽기 */ final RuleSetXmlReader ruleSetXmlReader = new RuleSetXmlReader(ruleSetRelativePath); /* 문제점 덤프 */ ruleSetXmlReader.validationProblemCollection().printProblems( System.err); /* 규칙 세트에 오류가 있는 경우 실패 */ assertTrue(!ruleSetXmlReader.validationProblemCollection() .containsErrors()); /* 리더에서 규칙 세트 리턴 */ return ruleSetXmlReader.ruleSet(); } /** * 완전히 동적인 CER 규칙 세트 해석기를 사용하는 * 간단한 테스트 케이스입니다. */ public void testUsingInterpreter() { /* 규칙 세트에서 읽기 */ final RuleSet ruleSet = getRuleSet(); /* 해석된 규칙 오브젝트를 작성하는 세션 시작 */ final Session session = Session_Factory.getFactory().newInstance( new RecalculationsProhibited(), new InMemoryDataStorage( new InterpretedRuleObjectFactory())); /* 필수 규칙 클래스의 규칙 오브젝트 인스턴스 작성 */ final RuleObject helloWorld = session.createRuleObject(ruleSet.findClass("HelloWorld")); /* * 규칙 오브젝트의 "greeting" 규칙 속성에 액세스 - * 결과는 예상 유형(String)으로 캐스트해야 함 */ final String greeting = (String) helloWorld.getAttributeValue("greeting") .getValue(); System.out.println(greeting); assertEquals("Hello, world!", greeting); } }
이 샘플 클래스를 독립형 Java 애플리케이션(즉, main 메소드를 통해) 또는 JUnit 테스트로 실행할 수 있습니다. 이 클래스를 실행하는 두 가지 방법은 단순히 편의를 위해 제공되므로, 사용자가 직접 규칙 세트를 실행하는 코드를 작성할 때 사용자에게 보다 적합한 아무 방법이나 선택하십시오.
이제 이 코드의 세부사항을 자세히 살펴봅니다. 테스트 메소드 testUsingInterpreter가 다음과 같은 주요 기능을 수행합니다.