규칙을 실행하기 위해 스프레드 시트 형식으로 drools 결정 테이블을 사용하는 방법?

다음 예제 코드 rules.There를 실행하는 의사 결정 테이블을 사용하는 프로세스를 설명합니다하려면 두 가지 방법이 있습니다

에이) 직접 규칙을 실행 확산 시트 API를 사용.
B) drl 파일로 엑셀 확산 시트를 변환 한 후 규칙을 실행.

나는 두 번째 과정을 설명합니다 (B).







** 주요 자바 클래스는 'DroolExcelDemo.java'이다. 먼저가에 엑셀 시트를 변환합니다 (.drl) 규칙을 제출 한 후 실행.




package DROOLS;

수입 java.io.BufferedWriter;
java.io.FileInputStream를 가져;
수입 java.io.FileNotFoundException;
수입 java.io.FileWriter;
수입 java.io.IOException;
java.io.InputStream를 가져;
수입 java.util.Collection;

수입 org.drools.KnowledgeBase;
수입 org.drools.KnowledgeBaseFactory;
수입 org.drools.builder.KnowledgeBuilder;
수입 org.drools.builder.KnowledgeBuilderFactory;
org.drools.builder.ResourceType를 가져;
수입 org.drools.decisiontable.InputType;
수입 org.drools.decisiontable.SpreadsheetCompiler;
org.drools.definition.KnowledgePackage 가져 오기;
수입 org.drools.event.rule.DebugAgendaEventListener;
수입 org.drools.event.rule.DebugWorkingMemoryEventListener;
수입 org.drools.io.ResourceFactory;
수입 org.drools.runtime.StatefulKnowledgeSession;

/**
* 이 클래스는 엑셀 시트에서 drl 파일을 생성합니다
* 다음 규칙을 실행.
*/
공용 클래스 DroolExcelDemo {
공공 정적 무효 메인 최종(최종 문자열[] 인수) {
// 지식 작성기를 만들기
최종 KnowledgeBuilder kbuilder는 = KnowledgeBuilderFactory.newKnowledgeBuilder();

// 엑셀 시트에서 drl 파일을 만듭니다
InputStream은 = null입니다;
시도 {
= 새로운 FileInputStream입니다(“디:/작업 영역 / DroolsDemo / src에 / DROOLS / DroolExcel.xls”);

} 잡기 (FileNotFoundException 전자) {
e.printStackTrace();
}
// 컴파일러 클래스 인스턴스를 만듭니다
SpreadsheetCompiler SC는 = 새로운 SpreadsheetCompiler();

// 생성하는 Excel을 컴파일 (.drl) 파일
StringBuffer drl는 = 새로운 StringBuffer(sc.compile(이, InputType.XLS));

// drl 파일로 방언 값을 삽입
drl.insert(drl.indexOf(“DROOLS”)+40,”방언 ”mvel ””+”\N”);

// 생성 된 drl 파일을 확인
System.out.println(“생성 DRL 파일은 아래 게재되고 있습니다–: “);
System.out.println(drl);

// drl 파일에 문자열을 작성
시도 {
= 새로운 BufferedWriter에서 BufferedWriter(새로운 FileWriter(“디:/작업 영역 / DroolsDemo / src에 / DROOLS / RuleFile.drl”));
out.write(drl.toString());
out.close();
}
잡기 (IOException 전자){
System.out.println(“예외 “);
}
// 다음 섹션에서 drl 파일을 사용하기 전에 잠깐,.
시도 {
Thread.sleep(10000);
} 잡기 (InterruptedException 전자) {
e.printStackTrace();
}
// 엑셀 시트에서 drl 파일의 최종 생성

// DRL 파일을 사용하여
kbuilder.add(ResourceFactory.newClassPathResource(“RuleFile.drl”, DroolMessage.class ), ResourceType.DRL );

// 오류에 대한 빌더를 확인
면 ( kbuilder.hasErrors() ) {
System.out.println(“kbuilder에 오류가 있습니다”);
System.out.println( kbuilder.getErrors().toString());
}
// 컴파일 된 패키지를 (이는 직렬화 아르)
최종 수집 pkgs는 = kbuilder.getKnowledgePackages();

// 지식에 패키지를 추가 (지식 패키지를 배포).
최종 기술 자료 kbase는 = KnowledgeBaseFactory.newKnowledgeBase();
kbase.addKnowledgePackages(pkgs);

// 상태 저장 세션을 만들기
최종 StatefulKnowledgeSession의 ksession는 = kbase.newStatefulKnowledgeSession();

// 이벤트 리스너를 설정합니다
ksession.addEventListener(새로운 DebugAgendaEventListener());
ksession.addEventListener(새로운 DebugWorkingMemoryEventListener());

// 메시지 텍스트를 만들기
DroolMessage messagetxt는 = 새로운 DroolMessage();
messagetxt.setMessage(“항공편 번호”);

DroolMessage messagetxt1는 = 새로운 DroolMessage();
messagetxt1.setMessage(“FlightCode”);

// 세션과 불 규칙에 삽입
System.out.println(“세션에 삽입”);
ksession.insert(messagetxt);
ksession.insert(messagetxt1);
System.out.println(“규칙을 발사하기 전에”);
ksession.fireAllRules();
System.out.println(“규칙을 발사 한 후”);
ksession.dispose();
System.out.println(“처분 후”);
}
}








* *두 번째 파일은 'DroolMessage.java입니다’ POJO 클래스. 이 메인 자바 클래스가 설정 한 값은 위에서 설명한 보유.

package DROOLS;
/**
* This is a POJO for messages.It will be used by the drl file.
* The message values will be set from the DroolExcelDemo class
*/
public class DroolMessage {
// Create variable
private String message;

// 건축업자
공공 DroolMessage() {
System.out.println(“메시지를 초기화”);
}
// 세터와 게터 방법
공공 문자열 getMessage() {
메시지를 반환;
}
공공 무효 setMessage(문자열 메시지) {
this.message = 메시지;
}
// 규칙 실행을 테스트하는 시험 방법
공공 무효 시험(문자열 검사) {
System.out.println(“구문의 시작과 끝 위치: “+테스트);
}
}

** 다음은 'DroolExcelDemo.java에 의해 생성 된 규칙 파일입니다’ 클래스.

package DROOLS;
//generated from Decision Table
dialect "mvel"
import DroolMessage;
// rule values at B12, header at B7
rule "DroolExcelRule_12"
when
msg:DroolMessage(message == "FlightNumber")
then
msg.test("1,6");
end

// B13의 규칙 값, B7의 헤더
지배 “DroolExcelRule_13”
언제
메시지:DroolMessage(메시지 == “FlightCode”)
그때
msg.test(“7,8”);

** 다음은 입력 'DroolExcelDemo.java에 기반 규칙 파일을 뛰어난 것입니다’ 위의 클래스.


15 thoughts on “규칙을 실행하기 위해 스프레드 시트 형식으로 drools 결정 테이블을 사용하는 방법?

    1. kaushik Post author

      Hi Daniel,

      Thanks for your interest. Please let me know your exact requirement. I will send you the excel sheet.

      Cheers
      /KP

    1. kaushik Post author

      Hi Aakash,

      Please send me your exact requirement. I will try my best to help you out.

      Thanks,
      Techalpine

  1. Manideepa

    Hi,
    Can you please share the DroolExcel.xls file?
    I wanted to execute this program. I am new to Drools and wanted to understand how it works.
    My email address: b4umani2003@gmail.com

    Thanks,
    Mani

  2. kaushik Post author

    Hi Manideepa,

    The excel sample is already shown in the post. You can use it as it is. If you have some other requirement, do let me know. I would love to help you sort the issues.

    Thanks
    /KP

  3. Nithya Kathiresan

    Hi,
    Do you know how to use the spread sheet APIs directly to execute the rules?

    Thanks,
    Nithya

  4. sunil

    Could you please provide a DRL example where I could get the data from Database and update the fact .

  5. Ananya

    Hi,

    Could you please share the excel ? I want to match a string of numbers or rather search string in another string

    Thanks

  6. Shekhar 쇼

    안녕하세요,
    나는 실행하기 위해 노력하고 있지만, 라인 아래 처리하는 동안 그것을 찾을 수 없습니다 오류 파일을 모금.

    // DRL 파일을 사용하여
    kbuilder.add(ResourceFactory.newClassPathResource("RuleFile.drl", DroolMessage.class ), ResourceType.DRL );

    당신은 내가해야 할 다른 무엇을 제안 해주십시오 수.

    문안 인사,
    Shekhar 쇼

    1. kaushik Post author

      안녕하세요 Shekhar,

      당신은 .drl 및 class 파일을 모두 사용할 수 있는지 확인해야합니다. 확인하고 당신이 어떤 문제에 직면하는 경우 알려 주시기 바랍니다.

      Please mail me @ techalpineit@gmail.com

      Thanks
      Kaushik

  7. 라훌 펜디 교수

    안녕
    그것은 내가 실행 아주 좋은 블로그. 하지만 난 어떤 규칙 파일을 추가하지 않고 자동으로 규칙 파일 템플릿을 생성 할.

============================================= ============================================== 아마존에서 최고의 Techalpine 책을 구입하십시오,en,전기 기술자 CT 밤나무 전기,en
============================================== ---------------------------------------------------------------- electrician ct chestnutelectric
error

Enjoy this blog? Please spread the word :)

Follow by Email
LinkedIn
LinkedIn
Share