Kuralları yürütmek için tablo formatında drools karar tablosu nasıl kullanılır?

Aşağıdaki kod örneği rules.There yürütmesine karar tablosu kullanarak anlatacağız iki yolu vardır

Bir) Doğrudan kuralları çalıştırmak için tablolama API'leri kullanın.
b) Bir DRL dosyaya excel tablolama dönüştürme ve daha sonra kuralları yürütmek.

Ben ikinci anlatacağız (b).







** Ana java sınıf 'DroolExcelDemo.java' dir. Önce bir içine yaprak excel dönüştürmek (.DRL) kuralları dosyalamak ve ardından yürütün.




package DROOLS;

ithalat java.io.BufferedWriter;
java.io.FileInputStream içe;
ithalat java.io.FileNotFoundException;
ithalat java.io.FileWriter;
ithalat java.io.IOException;
java.io.InputStream içe;
ithalat java.util.Collection;

ithalat org.drools.KnowledgeBase;
ithalat org.drools.KnowledgeBaseFactory;
ithalat org.drools.builder.KnowledgeBuilder;
ithalat org.drools.builder.KnowledgeBuilderFactory;
org.drools.builder.ResourceType içe;
ithalat org.drools.decisiontable.InputType;
ithalat org.drools.decisiontable.SpreadsheetCompiler;
org.drools.definition.KnowledgePackage içe;
ithalat org.drools.event.rule.DebugAgendaEventListener;
ithalat org.drools.event.rule.DebugWorkingMemoryEventListener;
ithalat org.drools.io.ResourceFactory;
ithalat org.drools.runtime.StatefulKnowledgeSession;

/**
* Bu sınıf excel sayfasından bir DRL dosya oluşturacaktır
* ve daha sonra kurallar yürütmek.
*/
public class DroolExcelDemo {
public static final void main(final String[] args) {
// Bilgi oluşturucu Oluştur
Nihai KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();

// Excel sayfasından DRL dosyası oluşturun
InputStream = null;
denemek {
= new FileInputStream olduğunu(“D:/Çalışma Alanı / DroolsDemo / src / Drools / DroolExcel.xls”);

} yakalamak (FileNotFoundException e) {
e.printStackTrace();
}
// Derleyici sınıf örneği oluşturma
SpreadsheetCompiler sc = new SpreadsheetCompiler();

// Oluşturmak için geçmek derlemek (.DRL) dosya
StringBuffer DRL = new StringBuffer(sc.compile(olduğunu, InputType.XLS));

// DRL dosya içine lehçesi değeri ekleme
drl.insert(drl.indexOf(“Drools”)+40,”lehçesi ”mvel ””+”\n”);

// Oluşturulan DRL dosyasını kontrol edin
System.out.println(“Generate DRL dosyası aşağıda gösteriyor–: “);
System.out.println(DRL);

// Bir DRL dosyaya dize yazma
denemek {
= Yeni BufferedWriter üzerinden BufferedWriter(Yeni FileWriter(“D:/Çalışma Alanı / DroolsDemo / src / Drools / RuleFile.drl”));
out.write(drl.toString());
out.close();
}
yakalamak (IOException e){
System.out.println(“Istisna “);
}
// Sonraki bölümde DRL dosyayı kullanmadan önce bekleyin.
denemek {
Thread.sleep(10000);
} yakalamak (InterruptedException e) {
e.printStackTrace();
}
// Excel sayfasından DRL dosya sonu oluşturma

// DRL dosyası kullanma
kbuilder.add(ResourceFactory.newClassPathResource(“RuleFile.drl”, DroolMessage.class ), ResourceType.DRL );

// Hatalar için oluşturucu kontrol
eğer ( kbuilder.hasErrors() ) {
System.out.println(“kbuilder hatalar var”);
System.out.println( kbuilder.getErrors().toString());
}
// derlenmiş paketleri almak (hangi seri hale)
Nihai Koleksiyon pkgs = kbuilder.getKnowledgePackages();

// Bir bilgi bankası için paketleri ekleyin (bilgi paketleri dağıtmak).
Nihai KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
kbase.addKnowledgePackages(pkgs);

// Durumlu oturum oluşturma
Nihai StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();

// Olay dinleyicileri ayarlayın
ksession.addEventListener(Yeni gündem EventListener Debug());
ksession.addEventListener(Yeni DebugWorkingMemoryEventListener());

// Mesaj metni oluşturma
DroolMessage messagetxt = new DroolMessage();
messagetxt.setMessage(“Uçuş numarası”);

DroolMessage messagetxt1 = new DroolMessage();
messagetxt1.setMessage(“FlightCode”);

// Oturumu ve yangın kuralları içine yerleştirin
System.out.println(“oturumu takın”);
ksession.insert(messagetxt);
ksession.insert(messagetxt1);
System.out.println(“kuralları ateşlemeden önce”);
ksession.fireAllRules();
System.out.println(“kuralları atış sonrası”);
ksession.dispose();
System.out.println(“elden sonra”);
}
}








* *İkinci dosya bir 'DroolMessage.java olduğunu’ pojo sınıfı. Bu ana java sınıf tarafından ayarlanan değerleri yukarıda açıklanan tutar.

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;

// Inşaatçı
Kamu DroolMessage() {
System.out.println(“Mesaj başlatılıyor”);
}
// Setter ve alıcı yöntemleri
kamu String getMessage() {
iletisini döndürür;
}
public void setMessage(String mesaj) {
this.message = Mesaj;
}
// kuralı yürütme sınamak için test yöntemi
public void Test(Dize testi) {
System.out.println(“Ayrıştırma başlangıç ​​ve bitiş pozisyonu: “+test);
}
}

** Aşağıda 'DroolExcelDemo.java tarafından oluşturulan bir kural dosyası’ sınıf.

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 at kuralı değerleri, B7 de başlık
kural “DroolExcelRule_13”
zaman
msg:DroolMessage(mesajı == “FlightCode”)
o zaman
msg.test(“7,8”);

** Aşağıdaki giriş 'DroolExcelDemo.java tabanlı kural dosyası excel olduğunu’ Yukarıdaki sınıf.


15 thoughts on “Kuralları yürütmek için tablo formatında drools karar tablosu nasıl kullanılır?

    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 Shaw

    Hello,
    While I am trying to execute, it is raising a file not found error while processing below line.

    // DRL dosyası kullanma
    kbuilder.add(ResourceFactory.newClassPathResource(“RuleFile.drl”, DroolMessage.class ), ResourceType.DRL );

    Could you please suggest what else I need to do.

    Regards,
    Shekhar Shaw

  7. Rahul Pandey

    hi
    it is very good blog i executed. but i want to generate Rule file template automatically without adding any Rule file.

============================================= ============================================== Buy best TechAlpine Books on Amazon
============================================== ---------------------------------------------------------------- electrician ct chestnutelectric
error

Enjoy this blog? Please spread the word :)

Follow by Email
LinkedIn
LinkedIn
Share