Drools5 Community Training HandsOn 1 Drools DRL Syntax
-
Upload
salaboy-salaboy -
Category
Technology
-
view
5.356 -
download
0
description
Transcript of Drools5 Community Training HandsOn 1 Drools DRL Syntax
![Page 1: Drools5 Community Training HandsOn 1 Drools DRL Syntax](https://reader035.fdocuments.in/reader035/viewer/2022080209/54557153b1af9f40378b48a8/html5/thumbnails/1.jpg)
Drools5 Community TrainingHands On Playing with Rules
Sponsored by Plugtree
![Page 2: Drools5 Community Training HandsOn 1 Drools DRL Syntax](https://reader035.fdocuments.in/reader035/viewer/2022080209/54557153b1af9f40378b48a8/html5/thumbnails/2.jpg)
Hands On 1: Drools ExpertPlaying with Rules
Drools5 Community Trainingversion: 1.0-SNAPSHOT
Release Date: 09/05/2011Under The Creative Common License
![Page 3: Drools5 Community Training HandsOn 1 Drools DRL Syntax](https://reader035.fdocuments.in/reader035/viewer/2022080209/54557153b1af9f40378b48a8/html5/thumbnails/3.jpg)
Hands On 1: Drools Expert Playing with Rules
Drools5 Community Training Course by Mauricio "Salaboy" Salatino and Esteban Aliverti is licensed under a Creative Commons Attribution 3.0
Unported License.Based on a work at salaboy.wordpress.
com.Permissions beyond the scope of this
license may be available at http://salaboy.wordpress.com/.
![Page 4: Drools5 Community Training HandsOn 1 Drools DRL Syntax](https://reader035.fdocuments.in/reader035/viewer/2022080209/54557153b1af9f40378b48a8/html5/thumbnails/4.jpg)
Overview
● Drools Expert Examples○ Introduction examples○ Conditional elements examples○ Rules Attributes examples
![Page 5: Drools5 Community Training HandsOn 1 Drools DRL Syntax](https://reader035.fdocuments.in/reader035/viewer/2022080209/54557153b1af9f40378b48a8/html5/thumbnails/5.jpg)
Introduction Examples
● Project: drools5/01-DroolsExpert-Introduction● Test: SimpleRulesExampleTest.java● Rules: src/main/resources/rules/rules.drl● Kbuilder, Kbase and Ksession (createKSession() method)
○ Take a look at the addEventListener() method● DRL syntax in the rule file:
○ Take a look at the LHS○ Take a look at the RHS
● Rules activation and execution (you can activate the logger)
![Page 6: Drools5 Community Training HandsOn 1 Drools DRL Syntax](https://reader035.fdocuments.in/reader035/viewer/2022080209/54557153b1af9f40378b48a8/html5/thumbnails/6.jpg)
Introduction Examples
● Exercise○ Find a way to get "Warn when we have a POP songs and
Playlist" Rule activated but not fired.○ Find a way to get "Warn when we have a POP songs and
Playlist" Rule activated and fired.
![Page 7: Drools5 Community Training HandsOn 1 Drools DRL Syntax](https://reader035.fdocuments.in/reader035/viewer/2022080209/54557153b1af9f40378b48a8/html5/thumbnails/7.jpg)
Conditional Elements examples
● Project: drools5/02-DroolsExpert-ConditionalElements ● Simple Rules Example:
○ Test Class: SimpleRulesExampleTest.java
○ Rules: SimpleRules.drl
○ Conditional Elements on LHS○ from Conditional Element
● Advanced from Examples:○ Test Class: AdvancedFromRulesExampleTest.java
○ Rules: AdvancedFromRules.drl○ collect, accumulate, accumulate custom function, Using
Hibernate session in from CE
![Page 8: Drools5 Community Training HandsOn 1 Drools DRL Syntax](https://reader035.fdocuments.in/reader035/viewer/2022080209/54557153b1af9f40378b48a8/html5/thumbnails/8.jpg)
Conditional Elements Examples
● Exercise 1 ○ Replace "Add Playlists that contains songs with letter 'a'
in their titles to the list using the accumulate conditional elements defining init, action, reverse and result functions. i.e:
from accumulate( $s: Song() from $songs, init(), action(), reverse(), result() )
![Page 9: Drools5 Community Training HandsOn 1 Drools DRL Syntax](https://reader035.fdocuments.in/reader035/viewer/2022080209/54557153b1af9f40378b48a8/html5/thumbnails/9.jpg)
Conditional Elements examples
Solution: rule "Playlists that contains songs with letter 'a' in their titles."when $playlist: Playlist($songs: songs) $match: java.util.List(empty == false) from accumulate( $s: Song() from $songs, init( java.util.List result = new java.util.ArrayList();), action( if ($s.getTitle().contains("a")) result.add($s); ), result( result ) )then System.out.println("Playlist found: "+$playlist); for (int i=0; i<$match.size(); i++){ System.out.println("\t--"+$match.get(i)); }end
![Page 10: Drools5 Community Training HandsOn 1 Drools DRL Syntax](https://reader035.fdocuments.in/reader035/viewer/2022080209/54557153b1af9f40378b48a8/html5/thumbnails/10.jpg)
Conditional Elements examples
● Exercise 2○ Create a custom accumulate function to collect random
songs from a playlist.○ Copy the SongsWithALetterOnTheirTitlesFunction.java implementation
![Page 11: Drools5 Community Training HandsOn 1 Drools DRL Syntax](https://reader035.fdocuments.in/reader035/viewer/2022080209/54557153b1af9f40378b48a8/html5/thumbnails/11.jpg)
Conditional Elements Examples
● eval Example:○ Test Class: EvalRulesExampleTest.java
○ Rules: /rules/EvalRules.drl
○ use of eval in LHS
● exists Example:○ Test Class: ExistsRulesExampleTest.java
○ Rules: ExistsRules.drl
○ use of exists and not in the LHS
![Page 12: Drools5 Community Training HandsOn 1 Drools DRL Syntax](https://reader035.fdocuments.in/reader035/viewer/2022080209/54557153b1af9f40378b48a8/html5/thumbnails/12.jpg)
Conditional Elements Examples
● Exercise○ Replace "Warn when we have a Playlist longer than 9000
seconds" with an equivalent Rule without using eval
![Page 13: Drools5 Community Training HandsOn 1 Drools DRL Syntax](https://reader035.fdocuments.in/reader035/viewer/2022080209/54557153b1af9f40378b48a8/html5/thumbnails/13.jpg)
Conditional Elements Examples
Solution
rule "Playlist longer than 9000 seconds without eval"when$playlist: Playlist($songs: songs) AND $n : Number(intValue > 9000) from accumulate( $s : Song() from $songs, sum($s.getDuration()))thenSystem.out.println("We have found a Playlist longer than 9000 seconds");end
![Page 14: Drools5 Community Training HandsOn 1 Drools DRL Syntax](https://reader035.fdocuments.in/reader035/viewer/2022080209/54557153b1af9f40378b48a8/html5/thumbnails/14.jpg)
Rule Attributes examples
● Project: drools/03-DroolsExpert-RulesAttributes● Test Class: RuleAttributesExampleTest.java● Attributes:
○ salience○ no-loop:
■ Test: noLoop() Rules: /rules/NoLoopRules.drl
○ lock-on-active: ■ Test: lockOnActive() Rules: /rules/LockOnActiveRules.drl
○ agenda-group: ■ Test: agendaGroup() Rules: /rules/AgendaGroupRules.drl
![Page 15: Drools5 Community Training HandsOn 1 Drools DRL Syntax](https://reader035.fdocuments.in/reader035/viewer/2022080209/54557153b1af9f40378b48a8/html5/thumbnails/15.jpg)
Questions?
![Page 16: Drools5 Community Training HandsOn 1 Drools DRL Syntax](https://reader035.fdocuments.in/reader035/viewer/2022080209/54557153b1af9f40378b48a8/html5/thumbnails/16.jpg)
Enjoy! Questions and Feedback are always appreciated!
![Page 17: Drools5 Community Training HandsOn 1 Drools DRL Syntax](https://reader035.fdocuments.in/reader035/viewer/2022080209/54557153b1af9f40378b48a8/html5/thumbnails/17.jpg)
Contact us atwww.plugtree.com