To jest stara wersja strony!
Opis
Pokrewne projekty
Spotkania
Projekt
Sprawozdanie
Celem projektu było przeszukanie siecii za istniejącymi aplikacjami lub sposobami konwersji pomiędzy: Drools, CLIPS i RIF.
Drools to silnik reguł JBoss'a, stworzony przedewszystkim do modelowania systemów biznesowych, lecz również może być wykorzystywany w innych celach.
CLIPS to narzędzie to modelowania systemów eksperckich.
RIF to specyfikacja zapisu reguł z użyciem XML'a.
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. 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 jakielkolwiek 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ą World Wide Web Consortium do zapisu reguł: 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ą 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
W ramach rozbudowy projektu rozpocząłem poszukiwania gramatyk do Drools'owego DRL'a i DSL'a. Poszukiwania na siecii gotowych gramatyk okazało się płonne. Poniżej znajduje się dalsza walka z gramatykami Drools'a:
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ć.
Prezentacja
Materiały