Różnice

Różnice między wybraną wersją a wersją aktualną.

Odnośnik do tego porównania

Both sides previous revision Poprzednia wersja
Nowa wersja
Poprzednia wersja
pl:miw:2009:miw09_drools_x [2009/03/30 23:38]
jsi08
pl:miw:2009:miw09_drools_x [2019/06/27 15:50] (aktualna)
Linia 18: Linia 18:
 [[http://​www.jessrules.com/​|Jess]]. [[http://​www.jessrules.com/​|Jess]].
  
-====== Spotkania ====== +===== Pokrewne projekty ​===== 
-===== 20090402 ===== +[[pl:​miw:​2009:​miw09_xtt_drools|XTT_Drools]] - Szymon Frenkel\\ 
-  * drools...+[[pl:​miw:​2009:​miw2009_tematy#​drools_tools|Drools_Tools]] - niestety nikt się nim nie zajmuje
  
-===== 20090326 ​===== +====== Prezentacja ======
-  * zainst. drools +
-  * w razie czego RIF < CLIPS+
  
-===== 20090312 ​===== +====== Sprawozdanie ====== 
-  * tutorialeprzyklady ​[[http://clipsrules.sourceforge.net/|clips]] +Celem projektu było przeszukanie siecii za istniejącymi aplikacjami lub sposobami konwersji pomiędzy: DroolsCLIPS i RIF.\\ 
-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 +[[http://www.jboss.org/drools/|Drools]] to silnik reguł [[http://www.jboss.org/|JBoss]]'​a,​ stworzony przedewszystkim do modelowania systemów biznesowych,​ lecz również może być wykorzystywany w innych celach.\\ 
-  * tutoriale rif/swrl +[[http://clipsrules.sourceforge.net/|CLIPS]] to narzędzie do modelowania systemów eksperckich.\\ 
-  * zainst drools+[[http://www.w3.org/2005/rules/wiki/RIF_Working_Group|RIF]] to specyfikacja zapisu reguł z użyciem XML'a.
  
-===== 20090225 ​==== +===== Import/​eksport,​ konwersja ​====
-ACK+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]]. [[https://​hudson.jboss.org/​hudson/​job/​drools/​lastSuccessfulBuild/​artifact/​trunk/​target/​javadocs/​unstable/​drools-clips/​org/​drools/​clips/​package-summary.html|Tutaj]] natomiast można znaleźć dokumentację do CLIPS'​owej powłoki Drools'​a.\\ 
 +Nie jest to konwerter lecz tylko Drools'​owe środowisko do korzystania z CLIPS'​a. Niestety nie posiada pełni możliwości CLIPS'​a. 
 +==== Drools --> CLIPS ==== 
 +Znalezienie jakiejkolwiek wzmianki o konwersji Drools'​owych reguł do CLIPS'​a zakończyło się niepowodzeniem. Nigdzie temat konwersji z Drools'​a do CLIPS'​a nie został poruszony. 
 +==== Drools --> RIF, RIF --> Drools ==== 
 +Prace nad specyfikacją [[http://​www.w3.org/​|World Wide Web Consortium]] do zapisu reguł: [[http://​www.w3.org/​2005/​rules/​wiki/​RIF_Working_Group|RIF - Rule Interchange Format]] rozpoczęły się pod koniec 2005 roku. W dalszym ciągu jest to nie zamknięty projekt, a kolejne wydania specyfikacji wprowadzają wiele zmian do wcześniejszych i dlatego na razie jest małopopularny. Brak na siecii jakichkolwiek wzmianek dotyczących możliwej konwersji pomiędzy Drools'​em i RIF'​em. 
 +==== XML Schema --> Drools, Drools --> XML Schema ==== 
 +Po za programem projektu jednak natrafiłem na możliwość zapisu reguł Drools'​owych za pomocą [[http://​www.w3.org/​XML/​Schema|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>​
  
-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]]). +====== Spotkania ====== 
- +[[pl:miw:2009:miw09_drools_x:spotkania|Notatki ze spotkań projektowych]]
-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 ====== ====== Projekt ======
-====== Sprawozdanie ====== +[[pl:miw:2009:miw09_drools_instalacja|Instalacja ​Drools'​a]]\\ 
-====== Prezentacja ====== +[[pl:​miw:​2009:​miw09_drools_x:projekt|Poszerzenie projektu ​gramatyki ​Drools'​a]]
-====== 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ł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]]. 
 ====== Materiały ====== ====== Materiały ======
   * [[http://​www.jboss.org/​drools/​|Drools]] <​llysik@gmail.com>​   * [[http://​www.jboss.org/​drools/​|Drools]] <​llysik@gmail.com>​
Linia 155: Linia 104:
   * [[http://​anonsvn.labs.jboss.com/​labs/​jbossrules/​trunk/​drools-clips/​src/​test/​java/​org/​drools/​clips/​|Clips -> Drools - Drools shell supporting Clips]]   * [[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]]   * [[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]]
 +  * [[http://​www.w3.org/​2005/​rules/​wiki/​RIF_Working_Group|RIF Working Group]]
 +  * [[http://​www.w3.org/​2005/​rules/​wg/​draft/​ED-rif-bld-20081218/#​XML_Serialization_Syntax_for_RIF-BLD|RIF syntax example]]
 +
pl/miw/2009/miw09_drools_x.1238449121.txt.gz · ostatnio zmienione: 2019/06/27 15:57 (edycja zewnętrzna)
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0