[[
✎ pl:miw:2009:miw09_drools_x
]]
aiWiki
Pokaż stronę
Ostatnie zmiany
Indeks
Zaloguj
Ta strona jest tylko do odczytu. Możesz wyświetlić źródła tej strony ale nie możesz ich zmienić.
====== Opis ====== Grzegorz Stopa, <gregor@student.agh.edu.pl>\\ Opis projektu [[pl:miw:2009:miw2009_tematy#drools_x|Drools_X]] ze strony [[pl:miw:2009:miw2009_tematy]]:\\ :!: How we can use [[http://www.jboss.org/drools/|Drools]] to model rules for the SemWeb in [[http://www.w3.org/2005/rules/wiki/RIF_Working_Group|RIF]], [[http://www.w3.org/Submission/SWRL/|SWRL]] (import/export). How we can use [[http://www.jboss.org/drools/|Drools]] to import/export/model rules for/from [[http://clipsrules.sourceforge.net/|CLIPS]] and [[http://www.jessrules.com/|Jess]]. ===== Pokrewne projekty ===== [[pl:miw:2009:miw09_xtt_drools|XTT_Drools]] - Szymon Frenkel\\ [[pl:miw:2009:miw2009_tematy#drools_tools|Drools_Tools]] - niestety nikt się nim nie zajmuje ====== Spotkania ====== ===== 20090402 ===== * drools... ===== 20090326 ===== * zainst. drools * w razie czego RIF < CLIPS ===== 20090312 ===== * tutoriale, przyklady [[http://clipsrules.sourceforge.net/|clips]] http://www.comp.rgu.ac.uk/staff/smc/teaching/clips/tutorial/node2.html http://cobweb.ecn.purdue.edu/~engelb/abe565/week9.htm http://iweb.tntech.edu/bhuguenard/ds6530/ClipsTutorial/tableOfContents.htm * tutoriale rif/swrl * zainst drools ===== 20090225 ==== ACK Praca poznawcza oparta na [[http://www.jboss.org/drools/|Drools]] 4.0.7. Dokumentacja dostępna na stronie Drools'a ([[http://downloads.jboss.com/drools/docs/4.0.7.19894.GA/html_single/index.html|dokumentacja]]). Elementy Drools'a: - silnik reguł (rule engine): * algorytm Rete00 - zoptymalizowana implementacja algorytmu [[http://en.wikipedia.org/wiki/Rete_algorithm|Rete]] * wnioskowanie w przód ([[http://en.wikipedia.org/wiki/Forward_chaining|forward chaining]]) * logika pierwszego rzędu ([[http://en.wikipedia.org/wiki/First_order_logic|first order logic]]) * pamięć robocza (working memory) - baza wiedzy dla silnika, która to pamięć w Drools'ie posiada dwa rozszerzenia: * 'stateful' * 'stateless' * 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 * na ubuntu najprostszy sposób to skorzystanie z repozytorium, w linii komend wpisujemy <code>sudo apt-get install apache2</code> i apache sam się instaluje * apache'a nie musiałem instalować, ponieważ moje ubuntu już miało domyślnie zainstalowany serwer plików - Instalacja Tomcat6 * tak samo jak z apache instalujemy z repozytorium, idziemy do linii komend i wpisujemy <code>sudo apt-get install tomcat6</code> * 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: <code><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></code> na <code><tomcat-users> <role rolename="manager"/> <role rolename="admin"/> <user username="jakis_uzytkownik" password="jakies_haslo" roles="manager,admin"/> </tomcat-users></code> - Ustawienie silnika reguł * ściągamy [[http://download.jboss.org/drools/release/4.0.7.19894.GA/drools-4.0.7-brms.zip|Drools 4.0.7 BRMS]] ze strony [[http://www.jboss.org/drools/downloads.html|Drools - download]] * 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 ==== <del>Próba instalacji pluginu do eclipse'a na razie nie wykazała zadowalających rezultatów.</del>\\ 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 [[pl:miw:2009:miw09_xtt_drools|XTT_Drools]]. Również dziękuje za pomoc Panu Łukaszowi Łysikowi, który też mnie wspierał podczas walki z drools'em.\\ Zgodnie z [[http://downloads.jboss.com/drools/docs/4.0.7.19894.GA/html_single/index.html#d0e1334|dokumentacją]] potrzebujemy Eclipse, plugin GEF i plugin z Drools'em (<del>udało mi się znaleźć tylko plugin JBoss-tools</del> mamy 2 pluginy jeden mały z samym [[http://download.jboss.org/drools/release/4.0.7.19894.GA/drools-4.0.7-eclipse3.2.zip|drools'em]] i drugi obejmujący cały duży komplet [[http://sourceforge.net/project/downloading.php?groupname=jboss&filename=JBossTools-2.1.2.GA-ALL-linux-gtk-x86_64.zip&use_mirror=switch|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: <code>sudo apt-get install eclipse</code> 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...'.\\ <del>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.</del> Powiodła się instalacja za pomocą menagera pluginów.\\ Zgodnie z [[http://downloads.jboss.com/drools/docs/4.0.7.19894.GA/html_single/index.html|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 - Teraz, aby zainstalować plugin drools'a, najpierw ściągamy ze [[http://www.jboss.org/drools/downloads.html|strony drools'a]] [[http://download.jboss.org/drools/release/4.0.7.19894.GA/drools-4.0.7-eclipse3.2.zip|Drools 4.0.7 Eclipse 3.2 Workbench]] i rozpakowujemy ściągniętego zip'a. - 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 === - Na początek musimy zainstalować [[http://www.eclipse.org/downloads/download.php?file=/tools/gef/downloads/drops/3.4.2/R200902171642/GEF-ALL-3.4.2.zip&url=http://ftp.man.poznan.pl/eclipse/tools/gef/downloads/drops/3.4.2/R200902171642/GEF-ALL-3.4.2.zip&mirror_id=488|plugin GEF]] ze strony [[http://www.eclipse.org/gef/downloads/|GEF - download]] * ś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 - Drugi krok to instalacja [[http://sourceforge.net/project/downloading.php?groupname=jboss&filename=JBossTools-2.1.2.GA-ALL-linux-gtk-x86_64.zip&use_mirror=switch|plugin jboss-tools]] ze strony [[http://www.jboss.org/tools/download.html|jboss-tools - download]] * ś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 [[http://blog.athico.com/|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 [[http://blog.athico.com/2008/02/drools-clips.html|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 [[http://anonsvn.labs.jboss.com/labs/jbossrules/trunk/drools-clips/src/test/java/org/drools/clips/|źródło]]. ==== XML Schema --> Drools, Drools --> XML Schema ==== W [[http://downloads.jboss.com/drools/docs/4.0.7.19894.GA/html_single/index.html#d0e4611|dokumentacji w rozdziale '6.9. XML Rule Language']] została opisana możliwość reprezentacji reguł w formacie XML z użyciem standardu [[http://www.w3.org/XML/Schema|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): <code java> 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(); </code> Przykład użycia (konwersja z XMLSchema na DRL): <code java> 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(); </code> ====== Materiały ====== * [[http://www.jboss.org/drools/|Drools]] <llysik@gmail.com> * [[http://downloads.jboss.com/drools/docs/4.0.7.19894.GA/html_single/index.html|Drools 4.0.7 dokumentacja]] * [[http://en.wikipedia.org/wiki/Rete_algorithm|Algorytm Rete]] * [[http://en.wikipedia.org/wiki/Forward_chaining|Forward chaining]] * [[http://www.comp.rgu.ac.uk/staff/smc/teaching/clips/tutorial/node2.html|Wprowadzenie do CLIPS]] * [[http://iweb.tntech.edu/bhuguenard/ds6530/ClipsTutorial/tableOfContents.htm|Tutoriale do CLIPS]] * [[http://www.csie.ntu.edu.tw/~sylee/courses/clips/design.htm|Przykłady do CLIPS]] * [[http://sourceforge.net/project/showfiles.php?group_id=215471&package_id=260062|download CLIPS (również przykłady)]] * [[http://www.jboss.org/drools/downloads.html|Drools - download]] * [[http://www.jboss.org/tools/download.html|JBoss-tools - download (plugin do eclipse)]] * [[http://www.eclipse.org/gef/downloads/|GEF - download (plugin do eclipse - potrzebny do JBoss-tools)]] * [[http://blog.athico.com/|Drools - blog]] * [[http://blog.athico.com/2008/02/drools-clips.html|Drools - blog - import kodu z Clips'a]] * [[http://anonsvn.labs.jboss.com/labs/jbossrules/trunk/drools-clips/src/test/java/org/drools/clips/|Clips -> Drools - Drools shell supporting Clips]] * [[http://download.jboss.org/drools/release/4.0.7.19894.GA/drools-4.0.7-eclipse3.2.zip|Drools 4.0.7 Eclipse 3.2 Workbench - plugin drools'a do eclipse'a]] * [[pl:miw:miw08_xtt_rif]] * [[https://developer.opencloud.com/devportal/display/FSMDv083/Appendix+B.+VFSM+DSL+Grammar|Gramatyka DSL w formacie EBNF ANTLR]]
pl/miw/2009/miw09_drools_x.1243435364.txt.gz
· ostatnio zmienione: 2019/06/27 15:57 (edycja zewnętrzna)
Pokaż stronę
Poprzednie wersje
Menadżer multimediów
Do góry