MIW 2009 XTT_DROOLS
Cel projektu
Zamodelowanie systemu regułowego Drools przy pomocy 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ł
rule "Platinum Priority"
when
c : Customer( subscription == "Platinum" )
t : Ticket( customer == c, status == "New" )
then
t.setStatus( "Escalate" );
modify ( t ) {setStatus( "Escalate" )}
end
Przykład reguł w XML-u
<?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>
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
< 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());
Przykładowe błędy - ścieżka do pliku
< logger.setFileName( "log/trouble_ticket" );
---
> logger.setFileName( "/tmp/log_trouble_ticket" );
Modelowanie diagramów
Diagram ARD
Diagram TPH