To jest stara wersja strony!
Opis
Pokrewne projekty
Spotkania
20090402
20090326
20090312
20090225
ACK
Praca poznawcza oparta na Drools 4.0.7. Dokumentacja dostępna na stronie Drools'a (dokumentacja).
Elementy Drools'a:
silnik reguł (rule engine):
algorytm Rete00 - zoptymalizowana implementacja algorytmu
Rete
-
-
pamięć robocza (working memory) - baza wiedzy dla silnika, która to pamięć w Drools'ie posiada dwa rozszerzenia:
kontrola wykonania i aktywacji reguł prowadzona w 'Agenda' z wykorzystaniem rozwiązywania konfliktów (conflict resolution)
Projekt
Sprawozdanie
Prezentacja
Przebieg działań
Działania z Drools'em opisuję dla pracy z Ubuntu 8.10 amd64.
Na innym sprzęcie i innym systemie operacyjnym może to wyglądać inaczej.
Instalacja Drools'a
Silnik reguł
Próba instalacji silnika reguł niestety na razie się jeszcze nie powiodła.
Poniżej znajdują się dotychczasowe próby instalacji i ich opis krok po kroku:
Apache/Tomcat + Drools 4.0.7 BRMS
Czyli wykorzystanie serwera Apache 2.0 z Tomcat6, silnik reguł Drools 4.0.7:
Instalacja serwera Apache 2.0
Instalacja Tomcat6
tak samo jak z apache instalujemy z repozytorium, idziemy do linii komend i wpisujemy
sudo apt-get install tomcat6
teraz musimy jednak poustawiać kilka rzeczy
szukamy gdzie nam się zainstalował tomcat6, powinniśmy móc go znaleźć w '/var/lib/tomcat6/conf/'
teraz jako root edytujemy plik '/var/lib/tomcat6/conf/tomcat-users.xml' i zmieniamy wpis podobny do tego:
<tomcat-users>
<!--
<role rolename="tomcat"/>
<role rolename="role1"/>
<user username="tomcat" password="tomcat" roles="tomcat"/>
<user username="both" password="tomcat" roles="tomcat,role1"/>
<user username="role1" password="tomcat" roles="role1"/>
-->
</tomcat-users>
na
<tomcat-users>
<role rolename="manager"/>
<role rolename="admin"/>
<user username="jakis_uzytkownik" password="jakies_haslo" roles="manager,admin"/>
</tomcat-users>
Ustawienie silnika reguł
-
wypakowujemy z 'drools-4.0.7-brms.zip' do jakiegoś katalogu 'drools-4.0.7-brms.war'
włączamy przeglądarkę internetową i wchodzimy na adres
http://localhost:8080/ - wejdziemy na stronę powitalną tomcat'a
z menu tomcat'a wybieramy 'manager webapp' i logujemy się jako osoba z 'tomcat-users.xml'
zostaniemy przeniesieni na stronę menager'a tomcat'a
na dole strony znajduje się dział 'Deploy', nas interesuje 'WAR file to deploy' (dolny). Podajemy ścieżke do naszego pliku 'drools-4.0.7-brms.war' lub po prostu Browse…'ujemy nasz plik, po czym klikamy na przycisk 'Deploy'
w tym momencie na liście aplikacji powinna zostać dodana aplikacja '/drools-jbrms', która powinna zostać od razu uruchomiona
jeśli nie została automatycznie uruchomiona należy kliknąć w przycisk 'Start' w kolumnie 'Commands' na liście aplikacji 'Applications'
Niestety nie miałem tyle szczęścia i silnik reguł odmawiał współpracy. Próby ingerencji w ustawienia tomcat'a jak i plik archiwalny '.war' w niczym nie pomogły - powód nieznany.
Eclipse
Próba instalacji pluginu do eclipse'a na razie nie wykazała zadowalających rezultatów.
Powiodła się instalacja pluginu drools'a do eclipse (z wykorzystaniem menager'a pluginów). Tutaj bardzo chce podziękować za pomoc Szymonowi Frenkelowi, który mnie pokierował przez to z czym sam miał pewne problemy. Szymek zajmuje się projektem XTT_Drools. Również dziękuje za pomoc Panu Łukaszowi Łysikowi, który też mnie wspierał podczas walki z drools'em.
Zgodnie z dokumentacją potrzebujemy Eclipse, plugin GEF i plugin z Drools'em (udało mi się znaleźć tylko plugin JBoss-tools mamy 2 pluginy jeden mały z samym drools'em i drugi obejmujący cały duży komplet JBoss-tools).
Poniżej znajdują się dotychczasowe próby instalacji i ich opis krok po kroku:
Instalacja Eclipse
Instalacja Eclipse'a jest bardzo łatwa pod ubuntu. W linii komend wpisujemy:
sudo apt-get install eclipse
i powienien zainstalować się ostatni dostępny eclipse z dodanych przez ubuntu do repozytorium.
W moim przypadku jest to wersja 3.2.2.
Instalacja pluginów z wykorzystaniem menagera pluginów
Eclipse posiada wbudowany menager pluginów, który pozwala z poziomu eclipse instalować pluginy. W Eclipse 3.2.2 dotrzeć można do niego poprzez główne menu 'Help→Software Updates→Find and Install…'.
Niestety w moim przypadku Eclipse ma problemy z połączeniem się do witryn z pluginami i niestety nie mogłem skorzystać z tej możliwości.
Powiodła się instalacja za pomocą menagera pluginów.
Zgodnie z dokumentacją wędrujemy krok po kroku:
GEF
Włączamy eclipse.
Otwieramy menager'a pluginów z menu „Help→Software Updates→Find and Install…”.
Wybieramy opcję „Search for new features to install” i klikamy na przycisk „Next >” na dole okienka.
Zaznaczamy na liście „Sites to include in search:” „Callisto Discovery Site”, poniżej zaznaczamy „Automatically select mirrors” i klikamy na przycisk „Finish”.
Jeśli menager'owi powiedzie się połączenie ze stroną, to pojawi nam się okienko z listą zatytułowaną „Select the features to install:” szukamy „Callisto Discovery Site→Graphical Editors and Frameworks→Graphical Editing Framework <wersja>” i klikamy przycisk „Next >”.
Następnie musimy zatwierdzić warunki umowy i klikamy w przycisk „Next >”.
Dostajemy informacje zwrotną, możemy ustawić jeszcze miejsce gdzie zainstalować nasz plugin. Aby zainstalować plugin wystarczy kliknąć na przycisk „Finish”.
Eclipse ściągnie potrzebne pliki i doda je tam gdzie potrzebuje, po czym poprosi o restart eclipse'a, aby zobaczyć zmiany.
Drools
-
Z zip'a powinien wyskoczyć foldery 'features' i 'plugins' oraz 3 pliki tekstowe.
Włączamy eclipse.
Musimy otworzyć menager'a pluginów eclipse'a i znowu wybrać opcję „Search for new features to install”.
Tym razem jednak nie klikamy jak w dokumentacji w „New Remote Site…” lecz w „New Local Site…”.
Szukamy w browserze folderu, do którego wypakowaliśmy zawartość zip'a, zaznaczamy go i klikamy w przycisk „OK”. Możemy jeszcze zmienić nazwe widziana na liscie stron z pluginami, powiedzmy że nazwiemy ją „drools-eclipse-plugin”.
Wybieramy z listy „drools-eclipse-plugin” i klikamy w „Finish”.
Tak jak w przypadku GEF'a czekamy aż się skontaktuje ze stroną, po czym ujrzymy okienko z listą „Select the features to install:”. Wybieramy „drools-eclipse-plugin→Other→JBossRules Feature 4.0.7” i klikamy „Next >”.
Zatwierdzamy warunki umowy i „Next >”.
Ustawiamy miejsce docelowe dla naszego pluginu i klikamy w „Finish”.
Czekamy aż eclipse upora się z instalacją i restartujemy eclipse'a.
Ręczna instalacja pluginów z binariów
-
ściągamy go i rozpakowujemy (powinien wypakować się do folderu 'eclipse/')
odnajdujemy miejsce instalacji eclipse'a, bardzo możliwe że będzie to '/usr/lib/eclipse/'
teraz musimy przekopiować zawartość ściągniętego pluginu do naszej instalacji eclipse'a i tutaj\\z 'eclipse/features/' do '/usr/lib/eclipse/features/'\\oraz\\z 'eclipse/plugins/' do '/usr/lib/eclipse/plugins/'
wystarczy uruchomić ponownie eclipse'a, aby móc korzystać z GEF'a
-
ściągamy go i rozpakowujemy (powinien wypakować się do folderu 'eclipse/')
teraz musimy przekopiować zawartość ściągniętego pluginu do naszej instalacji eclipse'a i tutaj\\z 'eclipse/features/' do '/usr/lib/eclipse/features/'\\oraz\\z 'eclipse/plugins/' do '/usr/lib/eclipse/plugins/'
wystarczy uruchomić ponownie eclipse'a, aby móc korzystać z Drools'a i JBoss-tools'a
Z tego co zauważyłem w ustawieniach eclipse'a wygląda, że oba pluginy się zainstalowały, lecz gdy otwarłem plik z regułami drools'a to eclipse nie kolorował składni. Gdy próbowałem dodać projekt z przykładami drools'a nastąpił błąd podczas przebudowy projektu. Eclipse'owi brakuje jeszcze kilku binariów, lecz nie dotarłem na razie, w którym miejscu mam je umieścić.
Import/eksport, konwersja
Tutaj będę opisywał znalezione możliwości konwersji z jednej reprezentacji na inną.
Clips --> Drools
Znalazłem na blogu Drools'a wpis sprzed roku o prowadzonych pracach nad Drools'ową powłoką interpretującą reguły zapisane w Clips'ie. Można znaleźć wpis tutaj. Odnalazłem nowsze repozytorium źródeł dotyczących tego projektu praktycznie w tym samym katalogu, który jest podany we wpisie. Oto odnalezione przeze mnie źródło.
XML Schema --> Drools, Drools --> XML Schema
W dokumentacji w rozdziale '6.9. XML Rule Language' została opisana możliwość reprezentacji reguł w formacie XML z użyciem standardu XML Schema. Drools sam posiada 2 klasy do obsługi swojego formatu DRL oraz 2 klasy do obsługi formatu XML:
XmlDumper - tworzy pliki XML reguł
XmlPackageReader - czyta pliki XML reguł
DrlDumper - tworzy pliki DRL reguł
DrlParser - czyta pliki DRL reguł
Przykład użycia (konwersja z DRL na XMLSchema):
Reader aDrlSource = new InputStreamReader( DroolsTest.class.getResourceAsStream( "/Sample.drl" ) );
DrlParser aDrlParser = new DrlParser();
PackageDescr aXmlDescr = aDrlParser.parse(aDrlSource);
XmlDumper aXmlDumper = new XmlDumper();
String aXmlString = aXmlDumper.dump(aXmlDescr);
Writer aXmlOutput = new BufferedWriter(new FileWriter("Sample.xml"));
try {
aXmlOutput.write(aXmlString);
}
finally
{
aXmlOutput.close();
}
aDrlSource.close();
Przykład użycia (konwersja z XMLSchema na DRL):
Reader aXmlSource = new InputStreamReader( DroolsTest.class.getResourceAsStream( "/Sample.xml" ) );
XmlPackageReader aXmlParser = new XmlPackageReader();
PackageDescr aDrlDescr = aXmlParser.read(aXmlSource);
DrlDumper aDrlDumper = new DrlDumper();
String aDrlString = aDrlDumper.dump(aDrlDescr);
Writer aDrlOutput = new BufferedWriter(new FileWriter("Sample.drl"));
try {
aDrlOutput.write(aDrlString);
}
finally
{
aDrlOutput.close();
}
aXmlSource.close();
Gramatyki
DRL
Jedynymi informacjami o gramatyce DRL'a jakie udało mi się znaleźć znajdowały się w dokumentacji, lecz jest to opis w większości słowny, więc spróbowałem własnych sił i skomponowałem na podstawie tej dokumentacji gramatykę dla DRL'a w formacie dla ANTLR (na razie jeszcze nie wszystkie elementy zostały ujęte). Na razie umieszczam u siebie na studencie:
Gramatyka DRL w ANTLR
DSL
DSL dla drools'a jest opisany również w dokumentacji, lecz również jest to opis słowny, którego nie zdąrzyłem na razie prześledzić.
Materiały