다음 예제 코드 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에 기반 규칙 파일을 뛰어난 것입니다’ 위의 클래스.
Hi, could you send me DroolExcel.xls file?
thank you!
Hi Daniel,
Thanks for your interest. Please let me know your exact requirement. I will send you the excel sheet.
Cheers
/KP
Hi, could you send me DroolExcel.xls file? I just want to run this code and want to get result
my email
dahalram20@gmail.com
Hi Aakash,
Please send me your exact requirement. I will try my best to help you out.
Thanks,
Techalpine
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
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
Hi,
Do you know how to use the spread sheet APIs directly to execute the rules?
Thanks,
Nithya
can you please send the excel file ,i want to run and get the result..??
Could you please provide a DRL example where I could get the data from Database and update the fact .
Hi Sunil,
You can use the same program with a little modification.
Please contact me @ techalpineit@gmail.com for further help.
Thanks
/KP
Hi,
Could you please share the excel ? I want to match a string of numbers or rather search string in another string
Thanks
Hi Ananya,
You can use the same data as shown in the sample file and make one for yourself.
Please mail me @ techalpineit@gmail.com for further help.
Thanks
/KP
안녕하세요,
나는 실행하기 위해 노력하고 있지만, 라인 아래 처리하는 동안 그것을 찾을 수 없습니다 오류 파일을 모금.
// DRL 파일을 사용하여
kbuilder.add(ResourceFactory.newClassPathResource("RuleFile.drl", DroolMessage.class ), ResourceType.DRL );
당신은 내가해야 할 다른 무엇을 제안 해주십시오 수.
문안 인사,
Shekhar 쇼
안녕하세요 Shekhar,
당신은 .drl 및 class 파일을 모두 사용할 수 있는지 확인해야합니다. 확인하고 당신이 어떤 문제에 직면하는 경우 알려 주시기 바랍니다.
Please mail me @ techalpineit@gmail.com
Thanks
Kaushik
안녕
그것은 내가 실행 아주 좋은 블로그. 하지만 난 어떤 규칙 파일을 추가하지 않고 자동으로 규칙 파일 템플릿을 생성 할.