Both sides previous revision
Poprzednia wersja
Nowa wersja
|
Poprzednia wersja
|
pl:miw:2009:miw09_xtt_drools:prezentacja [2009/06/30 17:43] jsi08 |
pl:miw:2009:miw09_xtt_drools:prezentacja [2019/06/27 15:50] (aktualna) |
| |
===== Cel projektu ===== | ===== Cel projektu ===== |
Analyze how to design Drools rules with XTT2 | Zamodelowanie systemu regułowego Drools przy pomocy XTT2: |
| * Wyszukanie istniejących systemów Drools |
| * Implementacja i testy |
| * Zamodelowanie diagramów |
| |
===== Wyszukane systemy Drools ===== | ===== Wyszukiwanie przykładowych systemów ===== |
systemy | * 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 |
| |
===== system1 ===== | |
systemy | |
| |
===== system2 ===== | ===== Przykład reguł ===== |
systemy | <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> |
| |
===== system3 ===== | ===== Przykład reguł w XML-u ===== |
systemy | <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 ===== | ===== Testowanie ===== |
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 |
| |
===== test1 ===== | |
test1 | |
| |
===== test2 ===== | ===== Przykładowe błędy ===== |
test2 | * 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 ===== | ===== Modelowanie diagramów ===== |
modelowanie | * wybrano średnio złożony system (9 reguł: 1 jedno-atrybutowa, 6 dwu-atrybutowych, 2 trój-atrybutowe) |
| * użyto program HJed |
===== ARD ===== | |
test1 | |
| |
===== TPH ===== | |
test2 | |
| |
| ===== Diagram ARD ===== |
| {{:pl:miw:2009:miw09_xtt_drools:ard.png?700|}} |
| ===== Diagram TPH ===== |
| {{:pl:miw:2009:miw09_xtt_drools:tph.png?700|}} |