Download - Drools Happenings 7.0 - Devnation 2016
![Page 1: Drools Happenings 7.0 - Devnation 2016](https://reader035.vdocuments.mx/reader035/viewer/2022062502/58a3abd01a28ab9e6a8b5c4b/html5/thumbnails/1.jpg)
![Page 2: Drools Happenings 7.0 - Devnation 2016](https://reader035.vdocuments.mx/reader035/viewer/2022062502/58a3abd01a28ab9e6a8b5c4b/html5/thumbnails/2.jpg)
Mark Proctor
Drools 7.0 Happenings
![Page 3: Drools Happenings 7.0 - Devnation 2016](https://reader035.vdocuments.mx/reader035/viewer/2022062502/58a3abd01a28ab9e6a8b5c4b/html5/thumbnails/3.jpg)
Where we are
![Page 4: Drools Happenings 7.0 - Devnation 2016](https://reader035.vdocuments.mx/reader035/viewer/2022062502/58a3abd01a28ab9e6a8b5c4b/html5/thumbnails/4.jpg)
Where we were mid 2013
![Page 5: Drools Happenings 7.0 - Devnation 2016](https://reader035.vdocuments.mx/reader035/viewer/2022062502/58a3abd01a28ab9e6a8b5c4b/html5/thumbnails/5.jpg)
6.4• 6.0 Nov 2013 • 6.4 2016
• Upgrade to Pattern Fly • Fully redesign the execution server UI • Improved and augmented process runtime views
![Page 6: Drools Happenings 7.0 - Devnation 2016](https://reader035.vdocuments.mx/reader035/viewer/2022062502/58a3abd01a28ab9e6a8b5c4b/html5/thumbnails/6.jpg)
KIE - Knowledge Is Everything• Drools • jBPM • DashBuilder • OptaPlanner • UberFire
![Page 7: Drools Happenings 7.0 - Devnation 2016](https://reader035.vdocuments.mx/reader035/viewer/2022062502/58a3abd01a28ab9e6a8b5c4b/html5/thumbnails/7.jpg)
The Family
Drools
jBPMDashBuilder
OptaPlanner
GWT
Errai
UberFire
Commons
Drools WB
Kie WB
![Page 8: Drools Happenings 7.0 - Devnation 2016](https://reader035.vdocuments.mx/reader035/viewer/2022062502/58a3abd01a28ab9e6a8b5c4b/html5/thumbnails/8.jpg)
Product Maturity Model
![Page 9: Drools Happenings 7.0 - Devnation 2016](https://reader035.vdocuments.mx/reader035/viewer/2022062502/58a3abd01a28ab9e6a8b5c4b/html5/thumbnails/9.jpg)
Remote Java Developer
![Page 10: Drools Happenings 7.0 - Devnation 2016](https://reader035.vdocuments.mx/reader035/viewer/2022062502/58a3abd01a28ab9e6a8b5c4b/html5/thumbnails/10.jpg)
Citizen Developer
![Page 11: Drools Happenings 7.0 - Devnation 2016](https://reader035.vdocuments.mx/reader035/viewer/2022062502/58a3abd01a28ab9e6a8b5c4b/html5/thumbnails/11.jpg)
Associate Process Manager
![Page 12: Drools Happenings 7.0 - Devnation 2016](https://reader035.vdocuments.mx/reader035/viewer/2022062502/58a3abd01a28ab9e6a8b5c4b/html5/thumbnails/12.jpg)
Senior Process Manager
![Page 13: Drools Happenings 7.0 - Devnation 2016](https://reader035.vdocuments.mx/reader035/viewer/2022062502/58a3abd01a28ab9e6a8b5c4b/html5/thumbnails/13.jpg)
Case Management
![Page 14: Drools Happenings 7.0 - Devnation 2016](https://reader035.vdocuments.mx/reader035/viewer/2022062502/58a3abd01a28ab9e6a8b5c4b/html5/thumbnails/14.jpg)
Case Management
![Page 15: Drools Happenings 7.0 - Devnation 2016](https://reader035.vdocuments.mx/reader035/viewer/2022062502/58a3abd01a28ab9e6a8b5c4b/html5/thumbnails/15.jpg)
Usability / Pattern Fly
![Page 16: Drools Happenings 7.0 - Devnation 2016](https://reader035.vdocuments.mx/reader035/viewer/2022062502/58a3abd01a28ab9e6a8b5c4b/html5/thumbnails/16.jpg)
Workbench / Data Modeller
![Page 17: Drools Happenings 7.0 - Devnation 2016](https://reader035.vdocuments.mx/reader035/viewer/2022062502/58a3abd01a28ab9e6a8b5c4b/html5/thumbnails/17.jpg)
Workbench / Data Modeller
![Page 18: Drools Happenings 7.0 - Devnation 2016](https://reader035.vdocuments.mx/reader035/viewer/2022062502/58a3abd01a28ab9e6a8b5c4b/html5/thumbnails/18.jpg)
jBPM Reports
![Page 19: Drools Happenings 7.0 - Devnation 2016](https://reader035.vdocuments.mx/reader035/viewer/2022062502/58a3abd01a28ab9e6a8b5c4b/html5/thumbnails/19.jpg)
jBPM Reports
![Page 20: Drools Happenings 7.0 - Devnation 2016](https://reader035.vdocuments.mx/reader035/viewer/2022062502/58a3abd01a28ab9e6a8b5c4b/html5/thumbnails/20.jpg)
Execution Server
![Page 21: Drools Happenings 7.0 - Devnation 2016](https://reader035.vdocuments.mx/reader035/viewer/2022062502/58a3abd01a28ab9e6a8b5c4b/html5/thumbnails/21.jpg)
Web Stack
![Page 22: Drools Happenings 7.0 - Devnation 2016](https://reader035.vdocuments.mx/reader035/viewer/2022062502/58a3abd01a28ab9e6a8b5c4b/html5/thumbnails/22.jpg)
GWT 2.8 + Errai
• Client-side depending injection (consistent with CDI).
• Client-side templating. • 2-way data-binding with Pojos. • Dynamic runtime modules. • qualifier annotations to determine
which dependencies. • a bean satisfies. • Constructor field and setter injections.
• More CDI and EJB features: • @Alternative, @Specializes,
@Produced scopes, CDI Events, JPA, …
• Injecting native Javascript objects into doc with JSInterop.
• Support for native DOM-based UI • support for GWT 2.8 + Java8.
![Page 23: Drools Happenings 7.0 - Devnation 2016](https://reader035.vdocuments.mx/reader035/viewer/2022062502/58a3abd01a28ab9e6a8b5c4b/html5/thumbnails/23.jpg)
Errai UI
• Bind Java class elements to elements in an HTML template.
• Template files can be HTML fragments or full pages.
• The HTML file is the template. • The Java class is a template bean • Data field can be @Bound to the model
and automatically updated
![Page 24: Drools Happenings 7.0 - Devnation 2016](https://reader035.vdocuments.mx/reader035/viewer/2022062502/58a3abd01a28ab9e6a8b5c4b/html5/thumbnails/24.jpg)
Errai - Data Binding
![Page 25: Drools Happenings 7.0 - Devnation 2016](https://reader035.vdocuments.mx/reader035/viewer/2022062502/58a3abd01a28ab9e6a8b5c4b/html5/thumbnails/25.jpg)
UberFire Rich Client Framework
• Perspective • Screen • Page Composer • Security • Permissions • Preferences (TODO)
![Page 26: Drools Happenings 7.0 - Devnation 2016](https://reader035.vdocuments.mx/reader035/viewer/2022062502/58a3abd01a28ab9e6a8b5c4b/html5/thumbnails/26.jpg)
Form Builder
![Page 27: Drools Happenings 7.0 - Devnation 2016](https://reader035.vdocuments.mx/reader035/viewer/2022062502/58a3abd01a28ab9e6a8b5c4b/html5/thumbnails/27.jpg)
Old Form Builder
![Page 28: Drools Happenings 7.0 - Devnation 2016](https://reader035.vdocuments.mx/reader035/viewer/2022062502/58a3abd01a28ab9e6a8b5c4b/html5/thumbnails/28.jpg)
Bootstrap Grid Views
![Page 29: Drools Happenings 7.0 - Devnation 2016](https://reader035.vdocuments.mx/reader035/viewer/2022062502/58a3abd01a28ab9e6a8b5c4b/html5/thumbnails/29.jpg)
Bootstrap Grid Views
![Page 30: Drools Happenings 7.0 - Devnation 2016](https://reader035.vdocuments.mx/reader035/viewer/2022062502/58a3abd01a28ab9e6a8b5c4b/html5/thumbnails/30.jpg)
Web Forms for Java Developers
• Pojo • JPA • Bean Validator
![Page 31: Drools Happenings 7.0 - Devnation 2016](https://reader035.vdocuments.mx/reader035/viewer/2022062502/58a3abd01a28ab9e6a8b5c4b/html5/thumbnails/31.jpg)
Form Builder Video
![Page 32: Drools Happenings 7.0 - Devnation 2016](https://reader035.vdocuments.mx/reader035/viewer/2022062502/58a3abd01a28ab9e6a8b5c4b/html5/thumbnails/32.jpg)
OpenShift JVM
![Page 33: Drools Happenings 7.0 - Devnation 2016](https://reader035.vdocuments.mx/reader035/viewer/2022062502/58a3abd01a28ab9e6a8b5c4b/html5/thumbnails/33.jpg)
Provisioning the Form app
![Page 34: Drools Happenings 7.0 - Devnation 2016](https://reader035.vdocuments.mx/reader035/viewer/2022062502/58a3abd01a28ab9e6a8b5c4b/html5/thumbnails/34.jpg)
DashBuilder / Page Composer
![Page 35: Drools Happenings 7.0 - Devnation 2016](https://reader035.vdocuments.mx/reader035/viewer/2022062502/58a3abd01a28ab9e6a8b5c4b/html5/thumbnails/35.jpg)
DashBuilder Example
![Page 36: Drools Happenings 7.0 - Devnation 2016](https://reader035.vdocuments.mx/reader035/viewer/2022062502/58a3abd01a28ab9e6a8b5c4b/html5/thumbnails/36.jpg)
DashBuilder Example
![Page 37: Drools Happenings 7.0 - Devnation 2016](https://reader035.vdocuments.mx/reader035/viewer/2022062502/58a3abd01a28ab9e6a8b5c4b/html5/thumbnails/37.jpg)
jBPM Runtime View
![Page 38: Drools Happenings 7.0 - Devnation 2016](https://reader035.vdocuments.mx/reader035/viewer/2022062502/58a3abd01a28ab9e6a8b5c4b/html5/thumbnails/38.jpg)
Data Set Creation
• SQL • Bean (Java Class) • CSV • Elastic Search
![Page 39: Drools Happenings 7.0 - Devnation 2016](https://reader035.vdocuments.mx/reader035/viewer/2022062502/58a3abd01a28ab9e6a8b5c4b/html5/thumbnails/39.jpg)
Data Set Configuration
![Page 40: Drools Happenings 7.0 - Devnation 2016](https://reader035.vdocuments.mx/reader035/viewer/2022062502/58a3abd01a28ab9e6a8b5c4b/html5/thumbnails/40.jpg)
Data Set Preview
![Page 41: Drools Happenings 7.0 - Devnation 2016](https://reader035.vdocuments.mx/reader035/viewer/2022062502/58a3abd01a28ab9e6a8b5c4b/html5/thumbnails/41.jpg)
Advanced Configuration
![Page 42: Drools Happenings 7.0 - Devnation 2016](https://reader035.vdocuments.mx/reader035/viewer/2022062502/58a3abd01a28ab9e6a8b5c4b/html5/thumbnails/42.jpg)
Data Set Explorer
![Page 43: Drools Happenings 7.0 - Devnation 2016](https://reader035.vdocuments.mx/reader035/viewer/2022062502/58a3abd01a28ab9e6a8b5c4b/html5/thumbnails/43.jpg)
Cache
![Page 44: Drools Happenings 7.0 - Devnation 2016](https://reader035.vdocuments.mx/reader035/viewer/2022062502/58a3abd01a28ab9e6a8b5c4b/html5/thumbnails/44.jpg)
DashBuilder Video
![Page 45: Drools Happenings 7.0 - Devnation 2016](https://reader035.vdocuments.mx/reader035/viewer/2022062502/58a3abd01a28ab9e6a8b5c4b/html5/thumbnails/45.jpg)
User Group Admin Video
![Page 46: Drools Happenings 7.0 - Devnation 2016](https://reader035.vdocuments.mx/reader035/viewer/2022062502/58a3abd01a28ab9e6a8b5c4b/html5/thumbnails/46.jpg)
Permissions Video
![Page 47: Drools Happenings 7.0 - Devnation 2016](https://reader035.vdocuments.mx/reader035/viewer/2022062502/58a3abd01a28ab9e6a8b5c4b/html5/thumbnails/47.jpg)
Execution Server
![Page 48: Drools Happenings 7.0 - Devnation 2016](https://reader035.vdocuments.mx/reader035/viewer/2022062502/58a3abd01a28ab9e6a8b5c4b/html5/thumbnails/48.jpg)
Rule Execution Server
![Page 49: Drools Happenings 7.0 - Devnation 2016](https://reader035.vdocuments.mx/reader035/viewer/2022062502/58a3abd01a28ab9e6a8b5c4b/html5/thumbnails/49.jpg)
Rest Call
![Page 50: Drools Happenings 7.0 - Devnation 2016](https://reader035.vdocuments.mx/reader035/viewer/2022062502/58a3abd01a28ab9e6a8b5c4b/html5/thumbnails/50.jpg)
Rest Call
![Page 51: Drools Happenings 7.0 - Devnation 2016](https://reader035.vdocuments.mx/reader035/viewer/2022062502/58a3abd01a28ab9e6a8b5c4b/html5/thumbnails/51.jpg)
Phreak
![Page 52: Drools Happenings 7.0 - Devnation 2016](https://reader035.vdocuments.mx/reader035/viewer/2022062502/58a3abd01a28ab9e6a8b5c4b/html5/thumbnails/52.jpg)
ReteOO• Node Sharing • Alpha Indexing • Beta Indexing • Tree based graphs • Modify-in-place • Property Reactive • Sub-networks • Backward Chaining • Lazy Truth Maintenance • Heap Based Agenda Queue • Dynamic Rules
![Page 53: Drools Happenings 7.0 - Devnation 2016](https://reader035.vdocuments.mx/reader035/viewer/2022062502/58a3abd01a28ab9e6a8b5c4b/html5/thumbnails/53.jpg)
Phreak• Lazy Evaluation • Isolated Rule Evaluation • Incremental Goal Oriented Evaluations • Set Oriented Propagations
• Set Oriented Match (Future) • Stack baed evaluations, with pause and resume
![Page 54: Drools Happenings 7.0 - Devnation 2016](https://reader035.vdocuments.mx/reader035/viewer/2022062502/58a3abd01a28ab9e6a8b5c4b/html5/thumbnails/54.jpg)
Layered Memory
![Page 55: Drools Happenings 7.0 - Devnation 2016](https://reader035.vdocuments.mx/reader035/viewer/2022062502/58a3abd01a28ab9e6a8b5c4b/html5/thumbnails/55.jpg)
Bit Masks and Linking
![Page 56: Drools Happenings 7.0 - Devnation 2016](https://reader035.vdocuments.mx/reader035/viewer/2022062502/58a3abd01a28ab9e6a8b5c4b/html5/thumbnails/56.jpg)
Bit Masks and Linking
![Page 57: Drools Happenings 7.0 - Devnation 2016](https://reader035.vdocuments.mx/reader035/viewer/2022062502/58a3abd01a28ab9e6a8b5c4b/html5/thumbnails/57.jpg)
Bit Masks and Linking
A
D
R1
Not B
Not
C
R2
R1 = A not ( B not ( C ) ) DR2 = A B C
![Page 58: Drools Happenings 7.0 - Devnation 2016](https://reader035.vdocuments.mx/reader035/viewer/2022062502/58a3abd01a28ab9e6a8b5c4b/html5/thumbnails/58.jpg)
Thread Safety / State Machine
![Page 59: Drools Happenings 7.0 - Devnation 2016](https://reader035.vdocuments.mx/reader035/viewer/2022062502/58a3abd01a28ab9e6a8b5c4b/html5/thumbnails/59.jpg)
State Transition
INACTIVE
FIRE_ALL_RULES FIRE_UNTIL_HALT
HALTING
EXECUTE_TASK
fireAllRules fireUntilHalt
at rest
halt halt
executeTask
![Page 60: Drools Happenings 7.0 - Devnation 2016](https://reader035.vdocuments.mx/reader035/viewer/2022062502/58a3abd01a28ab9e6a8b5c4b/html5/thumbnails/60.jpg)
fireAllRules() fireUntilHalt()
sync(engineLock)
isFiring() == trueTrue
False
waitAndEnter(FIRE_ALL_RULES)
fireLoop(RestHandler.FIRE_ALL_RULES)
fireAllRules()
sync(engineLock)
state=FIRE_UNTIL_HALTTrue
False
waitAndEnter(FIRE_UNTIL_HALT)
fireLoop(RestHandler. FIRE_UNTIL_HALT)
fireUntilHalt()
![Page 61: Drools Happenings 7.0 - Devnation 2016](https://reader035.vdocuments.mx/reader035/viewer/2022062502/58a3abd01a28ab9e6a8b5c4b/html5/thumbnails/61.jpg)
fireLoopLoop
fireLoop(restHandler)
head=takeAll()returnedFireCount=0loop=true
flush(head)
head != null
True
head=takeAll()
returnedFireCount = fireNextItem()
False
isFiring() == true
true
false
atRest(head, returnedFireCount
head=handleRest(restHandler)
isFiring() == true
immediateHalt()
true false
flush(head)
![Page 62: Drools Happenings 7.0 - Devnation 2016](https://reader035.vdocuments.mx/reader035/viewer/2022062502/58a3abd01a28ab9e6a8b5c4b/html5/thumbnails/62.jpg)
FIRE_UNTIL_HALT FIRE_ALL_RULES
sync(queueLock)
RestHander.FIRE_UNTIL_HALT
head = takeAll()
queueLock.wait()
head == null &&state == FIRE_UNTIL_HALT
true
return head
false
head = takeAll()
The thread will sleep until the addEntry notifies it to wake up
sync(engineLock)
RestHander.FIRE_ALL_RULES
head = takeAll()
state = INACTIVE
head == null
true
return head
false
![Page 63: Drools Happenings 7.0 - Devnation 2016](https://reader035.vdocuments.mx/reader035/viewer/2022062502/58a3abd01a28ab9e6a8b5c4b/html5/thumbnails/63.jpg)
WaitAndEnter immediateHalt
state!=INACTIVE
True
true
engineLock.wait()
state = newState
waitAndEnter(newState)
The thread will sleep until the immediateHalt is called which calls the engineLock.notify. Note this method must always be called from inside of a sync(engineLock) block.
immedateHalt()
sync(engineLock)
state!=INACTIVE
false
true
state = INACTIVE
engineLock.notify()This will wake any threads currently waiting in the waitAndEnter method.
![Page 64: Drools Happenings 7.0 - Devnation 2016](https://reader035.vdocuments.mx/reader035/viewer/2022062502/58a3abd01a28ab9e6a8b5c4b/html5/thumbnails/64.jpg)
Multicore Scalability
![Page 65: Drools Happenings 7.0 - Devnation 2016](https://reader035.vdocuments.mx/reader035/viewer/2022062502/58a3abd01a28ab9e6a8b5c4b/html5/thumbnails/65.jpg)
Immutable Use Cases
![Page 66: Drools Happenings 7.0 - Devnation 2016](https://reader035.vdocuments.mx/reader035/viewer/2022062502/58a3abd01a28ab9e6a8b5c4b/html5/thumbnails/66.jpg)
OOPath
![Page 67: Drools Happenings 7.0 - Devnation 2016](https://reader035.vdocuments.mx/reader035/viewer/2022062502/58a3abd01a28ab9e6a8b5c4b/html5/thumbnails/67.jpg)
Reactive List Comprehensionrule R when\n" + Adult( $child: /children )then\n" + list.add( $child.getName() );end
![Page 68: Drools Happenings 7.0 - Devnation 2016](https://reader035.vdocuments.mx/reader035/viewer/2022062502/58a3abd01a28ab9e6a8b5c4b/html5/thumbnails/68.jpg)
Nested Reactive List Comprehensionrule R when\n" + Adult( $child: /children )then\n" + list.add( $child.getName() );end
rule R when\n" + Man( $toy: /wife/children/toys )then\n" + list.add( $toy.getName() );end
![Page 69: Drools Happenings 7.0 - Devnation 2016](https://reader035.vdocuments.mx/reader035/viewer/2022062502/58a3abd01a28ab9e6a8b5c4b/html5/thumbnails/69.jpg)
No Comprehension or Reactivity
rule R when\n" + Man( $toy: /wife/children/toys )then\n" + list.add( $toy.getName() );end
rule R when\n" + Man( $toy: /wife/children.toys )then\n" + list.add( $toy.getName() );end
![Page 70: Drools Happenings 7.0 - Devnation 2016](https://reader035.vdocuments.mx/reader035/viewer/2022062502/58a3abd01a28ab9e6a8b5c4b/html5/thumbnails/70.jpg)
Constraints
rule R when\n" + Man( $toy: /wife/children{age > 10}/toys )then\n" + list.add( $toy.getName() );end
rule R when\n" + Man( $toy: /wife/children{age > 10, name.length > 5}.toys )then\n" + list.add( $toy.getName() );end
![Page 71: Drools Happenings 7.0 - Devnation 2016](https://reader035.vdocuments.mx/reader035/viewer/2022062502/58a3abd01a28ab9e6a8b5c4b/html5/thumbnails/71.jpg)
Non Reactivity
rule R when\n" + Man( $toy: ?/wife/children{age > 10}/toys )then\n" + list.add( $toy.getName() );end
rule R when\n" + Man( $toy: /wife/children{age > 10}?/toys )then\n" + list.add( $toy.getName() );end
![Page 72: Drools Happenings 7.0 - Devnation 2016](https://reader035.vdocuments.mx/reader035/viewer/2022062502/58a3abd01a28ab9e6a8b5c4b/html5/thumbnails/72.jpg)
Casting and Type Filtering
rule R when\n" + Man( $name: /wife/children{ #BabyGirl, favoriteDollName.startsWith(\”A\”) }.name )then\n" + list.add( $name );end
![Page 73: Drools Happenings 7.0 - Devnation 2016](https://reader035.vdocuments.mx/reader035/viewer/2022062502/58a3abd01a28ab9e6a8b5c4b/html5/thumbnails/73.jpg)
Back Referencing
rule R when\n" + Man( $toy: /wife/children/toys{ name.length == ../name.length } )then\n" + list.add( $toy.getName() );end
![Page 74: Drools Happenings 7.0 - Devnation 2016](https://reader035.vdocuments.mx/reader035/viewer/2022062502/58a3abd01a28ab9e6a8b5c4b/html5/thumbnails/74.jpg)
Out of Pattern Usage
query isContainedIn( Thing $x, Thing $y ) $y := /$x/childrenor ( $z := /$x/children and isContainedIn( $z, $y; ) )end
![Page 75: Drools Happenings 7.0 - Devnation 2016](https://reader035.vdocuments.mx/reader035/viewer/2022062502/58a3abd01a28ab9e6a8b5c4b/html5/thumbnails/75.jpg)
Pojo Rules
![Page 76: Drools Happenings 7.0 - Devnation 2016](https://reader035.vdocuments.mx/reader035/viewer/2022062502/58a3abd01a28ab9e6a8b5c4b/html5/thumbnails/76.jpg)
DRL Fire Alarm Example
![Page 77: Drools Happenings 7.0 - Devnation 2016](https://reader035.vdocuments.mx/reader035/viewer/2022062502/58a3abd01a28ab9e6a8b5c4b/html5/thumbnails/77.jpg)
Pojo-Rules Fire Alarm Example
![Page 78: Drools Happenings 7.0 - Devnation 2016](https://reader035.vdocuments.mx/reader035/viewer/2022062502/58a3abd01a28ab9e6a8b5c4b/html5/thumbnails/78.jpg)
DRL Fire Alarm Example
![Page 79: Drools Happenings 7.0 - Devnation 2016](https://reader035.vdocuments.mx/reader035/viewer/2022062502/58a3abd01a28ab9e6a8b5c4b/html5/thumbnails/79.jpg)
Pojo-Rules Fire Alarm Example
![Page 80: Drools Happenings 7.0 - Devnation 2016](https://reader035.vdocuments.mx/reader035/viewer/2022062502/58a3abd01a28ab9e6a8b5c4b/html5/thumbnails/80.jpg)
DRLX
![Page 81: Drools Happenings 7.0 - Devnation 2016](https://reader035.vdocuments.mx/reader035/viewer/2022062502/58a3abd01a28ab9e6a8b5c4b/html5/thumbnails/81.jpg)
DRLX
• Java super-set • Java pre-processing using Antlr Java8.g
• Similar approach to pizza language that gave us generics • Will output pojo-rules underneath • But be more succinct and friendly that poco-rules
![Page 82: Drools Happenings 7.0 - Devnation 2016](https://reader035.vdocuments.mx/reader035/viewer/2022062502/58a3abd01a28ab9e6a8b5c4b/html5/thumbnails/82.jpg)