Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.sample
- import com.sample.DroolsTest.Plec;
- import com.sample.DroolsTest.Osoba;
- import com.sample.DroolsTest.Relacja;
- rule "Init"
- when
- then
- Osoba maria = new Osoba("Maria");
- Osoba ewa = new Osoba("Ewa");
- Osoba agata = new Osoba("Agata");
- Osoba anna = new Osoba("Anna");
- Osoba agnieszka = new Osoba("Agnieszka");
- Osoba beata = new Osoba("Beata");
- Osoba iwona = new Osoba("Iwona");
- Osoba joanna = new Osoba("Joanna");
- Osoba piotr = new Osoba("Piotr");
- Osoba adam = new Osoba("Adam");
- Osoba marek = new Osoba("Marek");
- Osoba robert = new Osoba("Robert");
- Osoba jan = new Osoba("Jan");
- Osoba krzysztof = new Osoba("Krzysztof");
- Osoba radek = new Osoba("Radek");
- Osoba darek = new Osoba("Darek");
- Osoba tomek = new Osoba("Tomek");
- Osoba jacek = new Osoba("Jacek");
- insert(new Relacja(maria,marek,"rodzic"));
- insert(new Relacja(maria,agata,"rodzic"));
- insert(new Relacja(maria,jan,"rodzic"));
- insert(new Relacja(piotr,marek,"rodzic"));
- insert(new Relacja(piotr,agata,"rodzic"));
- insert(new Relacja(piotr,jan,"rodzic"));
- insert(new Relacja(ewa,anna,"rodzic"));
- insert(new Relacja(ewa,joanna,"rodzic"));
- insert(new Relacja(ewa,krzysztof,"rodzic"));
- insert(new Relacja(adam,anna,"rodzic"));
- insert(new Relacja(adam,joanna,"rodzic"));
- insert(new Relacja(adam,krzysztof,"rodzic"));
- insert(new Relacja(agata,radek,"rodzic"));
- insert(new Relacja(agata,beata,"rodzic"));
- insert(new Relacja(robert,radek,"rodzic"));
- insert(new Relacja(robert,beata,"rodzic"));
- insert(new Relacja(anna,darek,"rodzic"));
- insert(new Relacja(anna,tomek,"rodzic"));
- insert(new Relacja(jan,darek,"rodzic"));
- insert(new Relacja(jan,tomek,"rodzic"));
- insert(new Relacja(agnieszka,jacek,"rodzic"));
- insert(new Relacja(agnieszka,iwona,"rodzic"));
- insert(new Relacja(krzysztof,jacek,"rodzic"));
- insert(new Relacja(krzysztof,iwona,"rodzic"));
- end
- rule "NadajKobiete"
- when
- o: Osoba(nieznanaPlec() && imie.charAt(imie.length()-1)=='a')
- then
- o.setPlec(Plec.KOBIETA);
- //System.out.println(o.toString());
- update(o);
- end
- rule "NadajMezczyzne"
- when
- o: Osoba(nieznanaPlec() && imie.charAt(imie.length()-1)!='a')
- then
- o.setPlec(Plec.MEZCZYZNA);
- //System.out.println(o.toString());
- update(o);
- end
- rule "RelacjaNadajacaPlec"
- when
- r: Relacja(r.o1().getPlec()==Plec.NIEZNANA || r.o2().getPlec()==Plec.NIEZNANA)
- then
- insert(r.o1());
- insert(r.o2());
- update(r);
- end
- rule "Madka"
- when
- r: Relacja(r.o1().getPlec()==Plec.KOBIETA, relacja=="rodzic")
- then
- System.out.println(r.o1()+" jest MADKOM "+r.o2());
- end
- rule "Ojdziedz"
- when
- r: Relacja(r.o1().getPlec()==Plec.MEZCZYZNA, relacja=="rodzic")
- then
- System.out.println(r.o1()+" jest OJDŹCEM "+r.o2());
- end
- ////////////////////////////////
- package com.sample;
- import org.kie.api.KieServices;
- import org.kie.api.runtime.KieContainer;
- import org.kie.api.runtime.KieSession;
- /**
- * This is a sample class to launch a rule.
- */
- import org.drools.KnowledgeBase;
- import org.drools.KnowledgeBaseFactory;
- import org.drools.builder.KnowledgeBuilder;
- import org.drools.builder.KnowledgeBuilderError;
- import org.drools.builder.KnowledgeBuilderErrors;
- import org.drools.builder.KnowledgeBuilderFactory;
- import org.drools.builder.ResourceType;
- import org.drools.io.ResourceFactory;
- import org.kie.api.logger.KieRuntimeLogger;
- public class DroolsTest {
- static KieSession kSession;
- static KieServices ks;
- static KieContainer kContainer;
- static KieRuntimeLogger kLogger;
- public static boolean initt = true;
- private static void init(){
- try{
- ks = KieServices.Factory.get();
- kContainer = ks.getKieClasspathContainer();
- kSession = kContainer.newKieSession("ksession-rules");
- kLogger = ks.getLoggers().newFileLogger(kSession, "test");
- }catch(Throwable t){
- t.printStackTrace();
- }
- }
- private static void insert(Object o){ kSession.insert(o);
- }
- private static void fireAllRules(){ kSession.fireAllRules();
- }
- private static void cleanUp(){ kLogger.close();
- }
- public static final void main(String[] args) {
- init();
- fireAllRules();
- //fireAllRules();
- cleanUp();
- }
- private static KnowledgeBase readKnowledgeBase() throws Exception {
- // Utwórz obiekt KnowledgeBuilder, który potrafi wczytywać reguły z różnych źródeł
- KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
- // Dodaj reguły zawarte w Sample.drl w zasobach programu, zapisane w formacie DRL
- kbuilder.add(ResourceFactory.newClassPathResource("Sample.drl"), ResourceType.DRL);
- // Wyszukaj błędy
- KnowledgeBuilderErrors errors = kbuilder.getErrors();
- // Jeżeli są błędy wyświetl je i rzuć wyjątek
- if (errors.size() > 0) {
- for (KnowledgeBuilderError error: errors) {
- System.err.println(error);
- }
- throw new IllegalArgumentException("Could not parse knowledge.");
- }
- // Stwórz pustą bazę wiedzy
- KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
- // Dodaj do niej wczytane reguły
- kbase.addKnowledgePackages(kbuilder.getKnowledgePackages());
- return kbase;
- }
- public static enum Plec {NIEZNANA,MEZCZYZNA,KOBIETA};
- public static class Osoba {
- public String imie;
- public Plec plec;
- private Osoba matka,ojciec;
- public void setPlec(Plec plec){
- this.plec = plec;
- }
- public Osoba(String imie) {
- this.imie=imie;
- this.plec = Plec.NIEZNANA;
- //this.plec = (imie.charAt(imie.length()-1)=='a')?Plec.KOBIETA:Plec.MEZCZYZNA;
- }
- public String toString() {
- return imie;
- }
- public Plec getPlec(){
- return this.plec;
- }
- }
- public static class Relacja {
- public boolean o1Matka(){
- return osoby[0].getPlec() ==Plec.KOBIETA;
- }
- public Osoba[] osoby=new Osoba[2];
- public String relacja;
- public Relacja(Osoba o1, Osoba o2, String relacja) {
- this.osoby[0]=o1;
- this.osoby[1]=o2;
- this.relacja=relacja;
- }
- public Osoba o1(){
- return osoby[0];
- }
- public Osoba o2(){
- return osoby[1];
- }
- }
- public static class Message {
- public static final int HELLO = 0;
- public static final int GOODBYE = 1;
- public static final int SI = 2;
- private String message;
- private int status;
- public String getMessage() {
- return this.message;
- }
- public void setMessage(String message) {
- this.message = message;
- }
- public int getStatus() {
- return this.status;
- }
- public void setStatus(int status) {
- this.status = status;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement