[java] Java Drools를 사용하여 결정 테이블을 관리하는 방법은 어떤 것들이 있나요?

Java Drools에서 결정 테이블을 관리하는 방법 중 일반적인 방법은 다음과 같습니다:

  1. Excel 파일 사용: Drools는 Excel 파일 형식의 결정 테이블을 지원합니다. 엑셀 파일에는 규칙과 결과에 대한 데이터를 작성합니다. 이 파일을 Drools 규칙 엔진에로드하여 규칙 실행을 수행할 수 있습니다.

예제:

KieServices ks = KieServices.Factory.get();
KieContainer kContainer = ks.getKieClasspathContainer();
KieSession kSession = kContainer.newKieSession("rulesSession");

// Excel 파일로부터 Decision Table 로드
DecisionTableConfiguration dtConfig = ks.newDecisionTableConfiguration();
dtConfig.setInputType(DecisionTableInputType.XLS);
Resource dtResource = ks.getResources().newClassPathResource("rules.xlsx");
KieFileSystem kfs = ks.newKieFileSystem().write(dtResource);
KieBuilder kb = ks.newKieBuilder(kfs).buildAll();

if(kb.getResults().hasMessages(Message.Level.ERROR)){
    throw new IllegalArgumentException("Error building decision table:"+ kb.getResults());
}

// Decision Table을 실행하여 결과 획득
kSession.fireAllRules();
kSession.dispose();
  1. DRL 파일 사용: Drools에서는 DRL(Drools Rule Language) 파일을 사용하여 결정 테이블을 정의할 수도 있습니다. DRL 파일에는 규칙을 작성하고, 실행 조건을 설정하고, 결과를 정의할 수 있는 Drools 규칙 언어가 포함되어 있습니다.

예제:

KieServices ks = KieServices.Factory.get();
KieContainer kContainer = ks.getKieClasspathContainer();
KieSession kSession = kContainer.newKieSession("rulesSession");

// DRL 파일로부터 Decision Table 로드
Resource dtResource = ks.getResources().newClassPathResource("rules.drl");
KieFileSystem kfs = ks.newKieFileSystem().write(dtResource);
KieBuilder kb = ks.newKieBuilder(kfs).buildAll();

if(kb.getResults().hasMessages(Message.Level.ERROR)){
    throw new IllegalArgumentException("Error building decision table:"+ kb.getResults());
}

// Decision Table을 실행하여 결과 획득
kSession.fireAllRules();
kSession.dispose();

이처럼, Java Drools를 사용하여 결정 테이블을 관리하는 여러 가지 방법이 있습니다. 선택한 방법에 따라 Excel 파일 또는 DRL 파일을 사용하여 결정 테이블을 정의하고 규칙을 실행할 수 있습니다.