Both sides previous revision
Poprzednia wersja
Nowa wersja
|
Poprzednia wersja
|
pl:miw:2009:miw09_xtt_drools:prezentacja [2009/06/30 17:32] jsi08 |
pl:miw:2009:miw09_xtt_drools:prezentacja [2019/06/27 15:50] (aktualna) |
====== MIW 2009 XTT_DROOLS ====== | ====== MIW 2009 XTT_DROOLS ====== |
* Zrealizował: [[sfrenkel@student.bez-spamu.agh.edu.pl|Szymon Frenkel]] (4RI) \\ \\ | * Zrealizował: [[sfrenkel@student.bez-spamu.agh.edu.pl|Szymon Frenkel]] (4RI) \\ \\ |
Analyze how to design | |
[[http://www.jboss.org/drools/|Drools]] | |
rules with | |
[[hekate:XTT2]]\\ \\ | |
| |
===== Cel projektu ===== | ===== Cel projektu ===== |
| Zamodelowanie systemu regułowego Drools przy pomocy XTT2: |
| * Wyszukanie istniejących systemów Drools |
| * Implementacja i testy |
| * Zamodelowanie diagramów |
| |
Analyze how to design Drools rules with XTT2 | ===== Wyszukiwanie przykładowych systemów ===== |
| * liczba dostępnych systemów Drools nie okazała się bardzo duża |
| * przykładowe systemy w dokumentacji Drools nie były systemami wspomagającymi podejmowanie decyzji |
| * znaleziono kilka odpowiadających wymaganiom systemów Drools |
| |
| |
| ===== Przykład reguł ===== |
| <code ada> |
| rule "Platinum Priority" |
| when |
| c : Customer( subscription == "Platinum" ) |
| t : Ticket( customer == c, status == "New" ) |
| then |
| t.setStatus( "Escalate" ); |
| modify ( t ) {setStatus( "Escalate" )} |
| end |
| </code> |
| |
| ===== Przykład reguł w XML-u ===== |
| <code xml> |
| <?xml version="1.0"?> |
| <rule-set> |
| <rule name="Stock Price Low Enough"> |
| <parameter identifier="stockOffer"> |
| <class>StockOffer</class> |
| </parameter> |
| <java:condition> |
| stockOffer.getRecommendPurchase() == null |
| </java:condition> |
| <java:condition> |
| stockOffer.getStockPrice() < 100 |
| </java:condition> |
| <java:consequence> |
| stockOffer.setRecommendPurchase(YES); |
| </java:consequence> |
| </rule> |
| </rule-set> |
| </code> |
| |
| |
| ===== Testowanie ===== |
| * instalacja pluginu Drools do Eclipse'a |
| * uruchomiono i przetestowano przykładowe systemy w celu sprawdzania poprawności działania |
| * po ewentualnych drobnych modyfikacjach wszystkie testowane systemy działały poprawnie |
| |
| |
| ===== Przykładowe błędy ===== |
| * wcześniejsza wersja Drools - inne nazwy funkcji: |
| <code> |
| < WorkingMemory wm = ruleBase.newWorkingMemory(); |
| < wm.assertObject(la); |
| < wm.assertObject(la.getBorrower()); |
| < wm.assertObject(la.getProperty()); |
| --- |
| > WorkingMemory wm = ruleBase.newStatefulSession(); |
| > wm.insert(la); |
| > wm.insert(la.getBorrower()); |
| > wm.insert(la.getProperty()); |
| </code> |
| |
| ===== Przykładowe błędy - ścieżka do pliku ===== |
| \\ |
| <code> |
| < logger.setFileName( "log/trouble_ticket" ); |
| --- |
| > logger.setFileName( "/tmp/log_trouble_ticket" ); |
| </code> |
| |
| ===== Modelowanie diagramów ===== |
| * wybrano średnio złożony system (9 reguł: 1 jedno-atrybutowa, 6 dwu-atrybutowych, 2 trój-atrybutowe) |
| * użyto program HJed |
| |
| ===== Diagram ARD ===== |
| {{:pl:miw:2009:miw09_xtt_drools:ard.png?700|}} |
| ===== Diagram TPH ===== |
| {{:pl:miw:2009:miw09_xtt_drools:tph.png?700|}} |