Drools and BRMS 6.0 (Dublin Aug 2013)
-
Upload
mark-proctor -
Category
Technology
-
view
1.444 -
download
1
description
Transcript of Drools and BRMS 6.0 (Dublin Aug 2013)
![Page 1: Drools and BRMS 6.0 (Dublin Aug 2013)](https://reader034.fdocuments.in/reader034/viewer/2022051412/54899cd9b47959d30c8b59d6/html5/thumbnails/1.jpg)
Not Quite There Yet•The SkyNet funding bill is passed.
•The system goes online on August 4th, 1997.
•Human decisions are removed from strategic defense.
•SkyNet begins to learn at a geometric rate.
•It becomes self-aware at 2:14am Eastern time, August 29th
•In a panic, they try to pull the plug.
•And, Skynet fights back
Monday, 2 September 13
![Page 2: Drools and BRMS 6.0 (Dublin Aug 2013)](https://reader034.fdocuments.in/reader034/viewer/2022051412/54899cd9b47959d30c8b59d6/html5/thumbnails/2.jpg)
Who am I?
• Drools co-founder
• JBoss (2005)
• Red Hat (2006)
• Polymita Acquisition 2012
• Red Hat Platform Architect
Monday, 2 September 13
![Page 3: Drools and BRMS 6.0 (Dublin Aug 2013)](https://reader034.fdocuments.in/reader034/viewer/2022051412/54899cd9b47959d30c8b59d6/html5/thumbnails/3.jpg)
KIE - Knowledge Is EverythingKIE
Drools jBPMOptaPlanner UberFire
Guvnor
Drools-WB jBPM-WB
KIE-WB
Monday, 2 September 13
![Page 4: Drools and BRMS 6.0 (Dublin Aug 2013)](https://reader034.fdocuments.in/reader034/viewer/2022051412/54899cd9b47959d30c8b59d6/html5/thumbnails/4.jpg)
KIE - Knowledge Is Everything
Monday, 2 September 13
![Page 5: Drools and BRMS 6.0 (Dublin Aug 2013)](https://reader034.fdocuments.in/reader034/viewer/2022051412/54899cd9b47959d30c8b59d6/html5/thumbnails/5.jpg)
KIE - Knowledge Is Everything
Monday, 2 September 13
![Page 6: Drools and BRMS 6.0 (Dublin Aug 2013)](https://reader034.fdocuments.in/reader034/viewer/2022051412/54899cd9b47959d30c8b59d6/html5/thumbnails/6.jpg)
GitHub• URL:• https://github.com/droolsjbpm/
• Bootstrap project:• https://github.com/droolsjbpm/droolsjbpm-
build-bootstrap
Monday, 2 September 13
![Page 7: Drools and BRMS 6.0 (Dublin Aug 2013)](https://reader034.fdocuments.in/reader034/viewer/2022051412/54899cd9b47959d30c8b59d6/html5/thumbnails/7.jpg)
Serious Bits :)
http://www.youtube.com/watch?v=Omj4PR3v-nI
http://www.youtube.com/watch?v=4CvjKqUOEzM
Monday, 2 September 13
![Page 8: Drools and BRMS 6.0 (Dublin Aug 2013)](https://reader034.fdocuments.in/reader034/viewer/2022051412/54899cd9b47959d30c8b59d6/html5/thumbnails/8.jpg)
What’s a Rule
Monday, 2 September 13
![Page 9: Drools and BRMS 6.0 (Dublin Aug 2013)](https://reader034.fdocuments.in/reader034/viewer/2022051412/54899cd9b47959d30c8b59d6/html5/thumbnails/9.jpg)
This is a Rule
Monday, 2 September 13
![Page 10: Drools and BRMS 6.0 (Dublin Aug 2013)](https://reader034.fdocuments.in/reader034/viewer/2022051412/54899cd9b47959d30c8b59d6/html5/thumbnails/10.jpg)
This is another Rule
function checkemail(email){ var filter=/^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i if ( filter.test(email) ) { return true } else{ return false }}
Monday, 2 September 13
![Page 11: Drools and BRMS 6.0 (Dublin Aug 2013)](https://reader034.fdocuments.in/reader034/viewer/2022051412/54899cd9b47959d30c8b59d6/html5/thumbnails/11.jpg)
This is a Rule Enginevar validator = new FormValidator('example_form', [{ name: 'req', display: 'required', rules: 'required'}, { name: 'alphanumeric', rules: 'alpha_numeric'}, { name: 'password', rules: 'required'}, { name: 'password_confirm', display: 'password confirmation', rules: 'required|matches[password]'},
Monday, 2 September 13
![Page 12: Drools and BRMS 6.0 (Dublin Aug 2013)](https://reader034.fdocuments.in/reader034/viewer/2022051412/54899cd9b47959d30c8b59d6/html5/thumbnails/12.jpg)
These are Rules too
Monday, 2 September 13
![Page 13: Drools and BRMS 6.0 (Dublin Aug 2013)](https://reader034.fdocuments.in/reader034/viewer/2022051412/54899cd9b47959d30c8b59d6/html5/thumbnails/13.jpg)
What is a Rule
rule <rule_name> <attribute><value> when <conditions> then <actions>end
Monday, 2 September 13
![Page 14: Drools and BRMS 6.0 (Dublin Aug 2013)](https://reader034.fdocuments.in/reader034/viewer/2022051412/54899cd9b47959d30c8b59d6/html5/thumbnails/14.jpg)
Pattern Matching
Person(age >= 18)field name restriction
constraintobject type
pattern
Monday, 2 September 13
![Page 15: Drools and BRMS 6.0 (Dublin Aug 2013)](https://reader034.fdocuments.in/reader034/viewer/2022051412/54899cd9b47959d30c8b59d6/html5/thumbnails/15.jpg)
Pattern Matching ?
case class Grade( letter : String, passed : Boolean ) def check( grade : Grade ) = { grade match { case Grade(letter,true) => printf( "You have passed with grade: %s", letter ) case Grade(letter,false) => printf( "You have failed with grade: %s", letter ) }}
Monday, 2 September 13
![Page 16: Drools and BRMS 6.0 (Dublin Aug 2013)](https://reader034.fdocuments.in/reader034/viewer/2022051412/54899cd9b47959d30c8b59d6/html5/thumbnails/16.jpg)
Hybrid Reasoning
Monday, 2 September 13
![Page 17: Drools and BRMS 6.0 (Dublin Aug 2013)](https://reader034.fdocuments.in/reader034/viewer/2022051412/54899cd9b47959d30c8b59d6/html5/thumbnails/17.jpg)
Types of Reasoning
•Production Rule Systems PRD (forward chaining)•Reactive
•when Alarm( status == “alert” ) •then send( “warning” )
•Logic Programming LP (backward chaining)•Query
•descendant( “mary”, “jane”)
•Functional Programming FP•Map,Fold, Filter•avg([12, 16, 4, 6])
•Returns single value 9.5
•round([10.3, 4.7, 7.8] )•Returns List [10, 5, 8]
17
Monday, 2 September 13
![Page 18: Drools and BRMS 6.0 (Dublin Aug 2013)](https://reader034.fdocuments.in/reader034/viewer/2022051412/54899cd9b47959d30c8b59d6/html5/thumbnails/18.jpg)
Quick IntroWhat are Rule Based Systems
Monday, 2 September 13
![Page 19: Drools and BRMS 6.0 (Dublin Aug 2013)](https://reader034.fdocuments.in/reader034/viewer/2022051412/54899cd9b47959d30c8b59d6/html5/thumbnails/19.jpg)
19
VisionRobotics
Speech
Neural Nets Rule Base Systems/Expert System Tools
Understanding
NaturalLanguageSome Areas of
Artificial Intelligence
Some Areas of Artificial Intelligence
Monday, 2 September 13
![Page 20: Drools and BRMS 6.0 (Dublin Aug 2013)](https://reader034.fdocuments.in/reader034/viewer/2022051412/54899cd9b47959d30c8b59d6/html5/thumbnails/20.jpg)
20
Knowledge Representation and Reasoning
The study of Knowledge is Epistemology● Nature Structure and Origins of Knowledge● Core or AI
Rule based systems● Expert System tools● Knowledge Representation and Reasoning● Facilitate the codification of knowledge into a knowledge
base which can be used for reasoning
Monday, 2 September 13
![Page 21: Drools and BRMS 6.0 (Dublin Aug 2013)](https://reader034.fdocuments.in/reader034/viewer/2022051412/54899cd9b47959d30c8b59d6/html5/thumbnails/21.jpg)
21
It All Started Here Birth of CDSS
Dendral
Mycin
Baobab
Guidon
Neomycin
Teiresias Emycin WM
Puff
Sacon
Centaur
Gravida
Wheeze Clot
Onccocin
1970s
1980s
Monday, 2 September 13
![Page 22: Drools and BRMS 6.0 (Dublin Aug 2013)](https://reader034.fdocuments.in/reader034/viewer/2022051412/54899cd9b47959d30c8b59d6/html5/thumbnails/22.jpg)
22
Because Not Everyone Is As Smart As He Is
Monday, 2 September 13
![Page 23: Drools and BRMS 6.0 (Dublin Aug 2013)](https://reader034.fdocuments.in/reader034/viewer/2022051412/54899cd9b47959d30c8b59d6/html5/thumbnails/23.jpg)
1979 Rete Algorithm by Charles Forgy 23
Monday, 2 September 13
![Page 24: Drools and BRMS 6.0 (Dublin Aug 2013)](https://reader034.fdocuments.in/reader034/viewer/2022051412/54899cd9b47959d30c8b59d6/html5/thumbnails/24.jpg)
Clips and Jess
Clips 1986
24
Clips 1995
Monday, 2 September 13
![Page 25: Drools and BRMS 6.0 (Dublin Aug 2013)](https://reader034.fdocuments.in/reader034/viewer/2022051412/54899cd9b47959d30c8b59d6/html5/thumbnails/25.jpg)
Technical Language
Monday, 2 September 13
![Page 26: Drools and BRMS 6.0 (Dublin Aug 2013)](https://reader034.fdocuments.in/reader034/viewer/2022051412/54899cd9b47959d30c8b59d6/html5/thumbnails/26.jpg)
26
Classes
AccountAccount
long accountNo
int balance
CashFlowCashFlow
Date date
int amount
AccountPeriodAccountPeriod
Date start
Date end
CashFlow Example
Monday, 2 September 13
![Page 27: Drools and BRMS 6.0 (Dublin Aug 2013)](https://reader034.fdocuments.in/reader034/viewer/2022051412/54899cd9b47959d30c8b59d6/html5/thumbnails/27.jpg)
select * from Account acc, Cashflow cf, AccountPeriod apwhere acc.accountNo == cf.accountNo and cf.type == CREDIT cf.date >= ap.start and cf.date <= ap.end
rule “increase balance for AccountPeriod Credits” when ap : AccountPeriod() acc : Account() cf : CashFlow( type == CREDIT, accountNo == acc.accountNo, date >= ap.start && <= ap.end ) then acc.balance += cf.amount; end
27
acc.balance += cf.amount
CashFlow Rule
Monday, 2 September 13
![Page 28: Drools and BRMS 6.0 (Dublin Aug 2013)](https://reader034.fdocuments.in/reader034/viewer/2022051412/54899cd9b47959d30c8b59d6/html5/thumbnails/28.jpg)
select * from Account acc, Cashflow cf, AccountPeriod apwhere acc.accountNo == cf.accountNo and cf.type == CREDIT cf.date >= ap.start and cf.date <= ap.end
rule “increase balance for AccountPeriod Credits” when ap : AccountPeriod() acc : Account() cf : CashFlow( type == CREDIT, accountNo == acc.accountNo, date >= ap.start && <= ap.end ) then acc.balance += cf.amount; end
28
acc.balance += cf.amount
CashFlow Rule
Monday, 2 September 13
![Page 29: Drools and BRMS 6.0 (Dublin Aug 2013)](https://reader034.fdocuments.in/reader034/viewer/2022051412/54899cd9b47959d30c8b59d6/html5/thumbnails/29.jpg)
select * from Account acc, Cashflow cf, AccountPeriod apwhere acc.accountNo == cf.accountNo and cf.type == CREDIT cf.date >= ap.start and cf.date <= ap.end
rule “increase balance for AccountPeriod Credits” when ap : AccountPeriod() acc : Account() cf : CashFlow( type == CREDIT, accountNo == acc.accountNo, date >= ap.start && <= ap.end ) then acc.balance += cf.amount; end
29
acc.balance += cf.amount
CashFlow Rule
Monday, 2 September 13
![Page 30: Drools and BRMS 6.0 (Dublin Aug 2013)](https://reader034.fdocuments.in/reader034/viewer/2022051412/54899cd9b47959d30c8b59d6/html5/thumbnails/30.jpg)
select * from Account acc, Cashflow cf, AccountPeriod apwhere acc.accountNo == cf.accountNo and cf.type == CREDIT cf.date >= ap.start and cf.date <= ap.end
rule “increase balance for AccountPeriod Credits” when ap : AccountPeriod() acc : Account() cf : CashFlow( type == CREDIT, accountNo == acc.accountNo, date >= ap.start && <= ap.end ) then acc.balance += cf.amount; end
30
acc.balance += cf.amount
CashFlow Rule
Monday, 2 September 13
![Page 31: Drools and BRMS 6.0 (Dublin Aug 2013)](https://reader034.fdocuments.in/reader034/viewer/2022051412/54899cd9b47959d30c8b59d6/html5/thumbnails/31.jpg)
select * from Account acc, Cashflow cf, AccountPeriod apwhere acc.accountNo == cf.accountNo and cf.type == CREDIT cf.date >= ap.start and cf.date <= ap.end
rule “increase balance for AccountPeriod Credits” when ap : AccountPeriod() acc : Account() cf : CashFlow( type == CREDIT, accountNo == acc.accountNo, date >= ap.start && <= ap.end ) then acc.balance += cf.amount; end
31
acc.balance += cf.amount
CashFlow Rule
Monday, 2 September 13
![Page 32: Drools and BRMS 6.0 (Dublin Aug 2013)](https://reader034.fdocuments.in/reader034/viewer/2022051412/54899cd9b47959d30c8b59d6/html5/thumbnails/32.jpg)
32
rule "Increase balance for AccountPeriod Credits"when ap : AccountPeriod( ) acc : Account( ) cf : CashFlow( type == CashFlowType.CREDIT, accountNo == acc.accountNo, date >= ap.start && <= ap.end )then acc.balance = acc.balance + cf.amount;end
rule "Decrease balance for AccountPeriod Debits"when ap : AccountPeriod( ) acc : Account( ) cf : CashFlow( type == CashFlowType.DEBIT, accountNo == acc.accountNo, date >= ap.start && <= ap.end )then acc.balance = acc.balance - cf.amount;end
CashFlowCashFlowCashFlowCashFlow
date amount type accountNo
12-Jan-12 100 CREDIT 1
2-Feb-12 200 DEBIT 1
18-May-12 50 CREDIT 1
9-Mar-12 75 CREDIT 1
AccountingPeriodAccountingPeriod
start end
01-JAN-2012 31-MAR-2012
AccountAccount
accountNo balance
1 0
CashFlowCashFlowCashFlowCashFlow
date amount type accountNo
12-Jan-12 100 CREDIT 1
9-Mar-12 75 CREDIT 1
CashFlowCashFlowCashFlowCashFlow
date amount type accountNo
2-Feb-12 200 DEBIT 1
AccountAccount
accountNo balance
1 -25
CashFlow Example
Monday, 2 September 13
![Page 33: Drools and BRMS 6.0 (Dublin Aug 2013)](https://reader034.fdocuments.in/reader034/viewer/2022051412/54899cd9b47959d30c8b59d6/html5/thumbnails/33.jpg)
33
rule "Print blance for AccountPeriod" salience -50when ap : AccountPeriod() acc : Account( )then System.out.println( "Account Number " + acc.accountNo + " balance " + acc.balance );end
AgendaAgendaAgenda
1 increase balance
arbitrary2 decrease balance arbitrary
3 increase balance
arbitrary
4 print balance
CashFlow Example
Monday, 2 September 13
![Page 34: Drools and BRMS 6.0 (Dublin Aug 2013)](https://reader034.fdocuments.in/reader034/viewer/2022051412/54899cd9b47959d30c8b59d6/html5/thumbnails/34.jpg)
Timers
Monday, 2 September 13
![Page 35: Drools and BRMS 6.0 (Dublin Aug 2013)](https://reader034.fdocuments.in/reader034/viewer/2022051412/54899cd9b47959d30c8b59d6/html5/thumbnails/35.jpg)
Timers
Monday, 2 September 13
![Page 36: Drools and BRMS 6.0 (Dublin Aug 2013)](https://reader034.fdocuments.in/reader034/viewer/2022051412/54899cd9b47959d30c8b59d6/html5/thumbnails/36.jpg)
CEP
Monday, 2 September 13
![Page 37: Drools and BRMS 6.0 (Dublin Aug 2013)](https://reader034.fdocuments.in/reader034/viewer/2022051412/54899cd9b47959d30c8b59d6/html5/thumbnails/37.jpg)
Graphical Metaphores
Monday, 2 September 13
![Page 38: Drools and BRMS 6.0 (Dublin Aug 2013)](https://reader034.fdocuments.in/reader034/viewer/2022051412/54899cd9b47959d30c8b59d6/html5/thumbnails/38.jpg)
Graphical Metaphores• Decision Tables• Guided Editors• Rule Templates
• Guided Editor + Decision Table• Score Cards• Decision Trees
• We don’t do these yet
Monday, 2 September 13
![Page 39: Drools and BRMS 6.0 (Dublin Aug 2013)](https://reader034.fdocuments.in/reader034/viewer/2022051412/54899cd9b47959d30c8b59d6/html5/thumbnails/39.jpg)
Decision Table
Monday, 2 September 13
![Page 40: Drools and BRMS 6.0 (Dublin Aug 2013)](https://reader034.fdocuments.in/reader034/viewer/2022051412/54899cd9b47959d30c8b59d6/html5/thumbnails/40.jpg)
Decision Table
Monday, 2 September 13
![Page 41: Drools and BRMS 6.0 (Dublin Aug 2013)](https://reader034.fdocuments.in/reader034/viewer/2022051412/54899cd9b47959d30c8b59d6/html5/thumbnails/41.jpg)
Guided Editors
Monday, 2 September 13
![Page 42: Drools and BRMS 6.0 (Dublin Aug 2013)](https://reader034.fdocuments.in/reader034/viewer/2022051412/54899cd9b47959d30c8b59d6/html5/thumbnails/42.jpg)
Rule Templates
Monday, 2 September 13
![Page 43: Drools and BRMS 6.0 (Dublin Aug 2013)](https://reader034.fdocuments.in/reader034/viewer/2022051412/54899cd9b47959d30c8b59d6/html5/thumbnails/43.jpg)
Rule Templates
Monday, 2 September 13
![Page 44: Drools and BRMS 6.0 (Dublin Aug 2013)](https://reader034.fdocuments.in/reader034/viewer/2022051412/54899cd9b47959d30c8b59d6/html5/thumbnails/44.jpg)
Decision Table Wizards
Monday, 2 September 13
![Page 45: Drools and BRMS 6.0 (Dublin Aug 2013)](https://reader034.fdocuments.in/reader034/viewer/2022051412/54899cd9b47959d30c8b59d6/html5/thumbnails/45.jpg)
Score Cards• a) Setup Parameters• b) Characteristic Section
Monday, 2 September 13
![Page 46: Drools and BRMS 6.0 (Dublin Aug 2013)](https://reader034.fdocuments.in/reader034/viewer/2022051412/54899cd9b47959d30c8b59d6/html5/thumbnails/46.jpg)
Score Cards• UI Generates PMML• DRL Generated from PMML • DRL results in
• Calculated Score• Ranked Reason Codes
• Can import PMML 4.1• but not exposed yet
• Calculated Scores• Currently Summations• Weight coming
• Not in PMML standard
Monday, 2 September 13
![Page 47: Drools and BRMS 6.0 (Dublin Aug 2013)](https://reader034.fdocuments.in/reader034/viewer/2022051412/54899cd9b47959d30c8b59d6/html5/thumbnails/47.jpg)
Scenarios
Monday, 2 September 13
![Page 48: Drools and BRMS 6.0 (Dublin Aug 2013)](https://reader034.fdocuments.in/reader034/viewer/2022051412/54899cd9b47959d30c8b59d6/html5/thumbnails/48.jpg)
Decision Trees
Monday, 2 September 13
![Page 49: Drools and BRMS 6.0 (Dublin Aug 2013)](https://reader034.fdocuments.in/reader034/viewer/2022051412/54899cd9b47959d30c8b59d6/html5/thumbnails/49.jpg)
Decision Tables
Monday, 2 September 13
![Page 50: Drools and BRMS 6.0 (Dublin Aug 2013)](https://reader034.fdocuments.in/reader034/viewer/2022051412/54899cd9b47959d30c8b59d6/html5/thumbnails/50.jpg)
Decision Table
Monday, 2 September 13
![Page 51: Drools and BRMS 6.0 (Dublin Aug 2013)](https://reader034.fdocuments.in/reader034/viewer/2022051412/54899cd9b47959d30c8b59d6/html5/thumbnails/51.jpg)
Decision Table
Monday, 2 September 13
![Page 52: Drools and BRMS 6.0 (Dublin Aug 2013)](https://reader034.fdocuments.in/reader034/viewer/2022051412/54899cd9b47959d30c8b59d6/html5/thumbnails/52.jpg)
Decision Table
Monday, 2 September 13
![Page 53: Drools and BRMS 6.0 (Dublin Aug 2013)](https://reader034.fdocuments.in/reader034/viewer/2022051412/54899cd9b47959d30c8b59d6/html5/thumbnails/53.jpg)
Decision Table
Monday, 2 September 13
![Page 54: Drools and BRMS 6.0 (Dublin Aug 2013)](https://reader034.fdocuments.in/reader034/viewer/2022051412/54899cd9b47959d30c8b59d6/html5/thumbnails/54.jpg)
Decision Table
Monday, 2 September 13
![Page 55: Drools and BRMS 6.0 (Dublin Aug 2013)](https://reader034.fdocuments.in/reader034/viewer/2022051412/54899cd9b47959d30c8b59d6/html5/thumbnails/55.jpg)
Decision Table
Monday, 2 September 13
![Page 56: Drools and BRMS 6.0 (Dublin Aug 2013)](https://reader034.fdocuments.in/reader034/viewer/2022051412/54899cd9b47959d30c8b59d6/html5/thumbnails/56.jpg)
Decision Table
Monday, 2 September 13
![Page 57: Drools and BRMS 6.0 (Dublin Aug 2013)](https://reader034.fdocuments.in/reader034/viewer/2022051412/54899cd9b47959d30c8b59d6/html5/thumbnails/57.jpg)
Decision Table
Monday, 2 September 13
![Page 58: Drools and BRMS 6.0 (Dublin Aug 2013)](https://reader034.fdocuments.in/reader034/viewer/2022051412/54899cd9b47959d30c8b59d6/html5/thumbnails/58.jpg)
Decision Table
Monday, 2 September 13
![Page 59: Drools and BRMS 6.0 (Dublin Aug 2013)](https://reader034.fdocuments.in/reader034/viewer/2022051412/54899cd9b47959d30c8b59d6/html5/thumbnails/59.jpg)
Decision Table
Monday, 2 September 13
![Page 60: Drools and BRMS 6.0 (Dublin Aug 2013)](https://reader034.fdocuments.in/reader034/viewer/2022051412/54899cd9b47959d30c8b59d6/html5/thumbnails/60.jpg)
WorkbenchOpenShift Ready
Monday, 2 September 13
![Page 61: Drools and BRMS 6.0 (Dublin Aug 2013)](https://reader034.fdocuments.in/reader034/viewer/2022051412/54899cd9b47959d30c8b59d6/html5/thumbnails/61.jpg)
5.x Critique
Monday, 2 September 13
![Page 62: Drools and BRMS 6.0 (Dublin Aug 2013)](https://reader034.fdocuments.in/reader034/viewer/2022051412/54899cd9b47959d30c8b59d6/html5/thumbnails/62.jpg)
5.x CritiqueUI
• GWT• but not easily extended• fixed layouts• no perspectives
Monday, 2 September 13
![Page 63: Drools and BRMS 6.0 (Dublin Aug 2013)](https://reader034.fdocuments.in/reader034/viewer/2022051412/54899cd9b47959d30c8b59d6/html5/thumbnails/63.jpg)
5.x CritiqueUI
• GWT• but not easily extended• fixed layouts• no perspectives
JCR• Performance Issues• Everything stored as blob• No tagging, branching etc.• Webdav• Limited team providers
Monday, 2 September 13
![Page 64: Drools and BRMS 6.0 (Dublin Aug 2013)](https://reader034.fdocuments.in/reader034/viewer/2022051412/54899cd9b47959d30c8b59d6/html5/thumbnails/64.jpg)
5.x CritiqueUI
• GWT• but not easily extended• fixed layouts• no perspectives
JCR• Performance Issues• Everything stored as blob• No tagging, branching etc.• Webdav• Limited team providers
Deployment• Binary blobs, on url
Monday, 2 September 13
![Page 65: Drools and BRMS 6.0 (Dublin Aug 2013)](https://reader034.fdocuments.in/reader034/viewer/2022051412/54899cd9b47959d30c8b59d6/html5/thumbnails/65.jpg)
5.x CritiqueContent• Single tree structure (packages)• Packages created project deployment units
• no real alignment with industry stadard• No easy rule use (only a single global area)• Loading “model” jars into packages
• Poor hack, for dependency management
Monday, 2 September 13
![Page 66: Drools and BRMS 6.0 (Dublin Aug 2013)](https://reader034.fdocuments.in/reader034/viewer/2022051412/54899cd9b47959d30c8b59d6/html5/thumbnails/66.jpg)
5.x CritiqueDeployment
•Simple Snapshot system
•No real methodology
•Doesn’t align with any industry standards
Monday, 2 September 13
![Page 67: Drools and BRMS 6.0 (Dublin Aug 2013)](https://reader034.fdocuments.in/reader034/viewer/2022051412/54899cd9b47959d30c8b59d6/html5/thumbnails/67.jpg)
UF UberFire
Monday, 2 September 13
![Page 68: Drools and BRMS 6.0 (Dublin Aug 2013)](https://reader034.fdocuments.in/reader034/viewer/2022051412/54899cd9b47959d30c8b59d6/html5/thumbnails/68.jpg)
Requirements• Modular design
• Plugins• Common Life cycles• Compile time composition of plugins, via maven
• Menus• contextual to perspective and focus panel• Visibility Security
• Toolbars• contextual to perspective and focus panel• Visibility Security
• Twitter Bootstrap UI• Flexible layouts• Perspectives
Monday, 2 September 13
![Page 69: Drools and BRMS 6.0 (Dublin Aug 2013)](https://reader034.fdocuments.in/reader034/viewer/2022051412/54899cd9b47959d30c8b59d6/html5/thumbnails/69.jpg)
Requirements• Security
• Authorization, Authentication• Seamless API for client and server
• MetaData• Everything is a file, DB just for fast searching
• GIT Backend• High Availability
• GIT Cluster• Apache Helix
• Maven integration for “projects”
Monday, 2 September 13
![Page 70: Drools and BRMS 6.0 (Dublin Aug 2013)](https://reader034.fdocuments.in/reader034/viewer/2022051412/54899cd9b47959d30c8b59d6/html5/thumbnails/70.jpg)
UberFire Architecture Overview
Monday, 2 September 13
![Page 71: Drools and BRMS 6.0 (Dublin Aug 2013)](https://reader034.fdocuments.in/reader034/viewer/2022051412/54899cd9b47959d30c8b59d6/html5/thumbnails/71.jpg)
KIE - Knowledge Is Everything
Monday, 2 September 13
![Page 72: Drools and BRMS 6.0 (Dublin Aug 2013)](https://reader034.fdocuments.in/reader034/viewer/2022051412/54899cd9b47959d30c8b59d6/html5/thumbnails/72.jpg)
KIE - Knowledge Is Everything
Monday, 2 September 13
![Page 73: Drools and BRMS 6.0 (Dublin Aug 2013)](https://reader034.fdocuments.in/reader034/viewer/2022051412/54899cd9b47959d30c8b59d6/html5/thumbnails/73.jpg)
KIE - Knowledge Is Everything
Monday, 2 September 13
![Page 74: Drools and BRMS 6.0 (Dublin Aug 2013)](https://reader034.fdocuments.in/reader034/viewer/2022051412/54899cd9b47959d30c8b59d6/html5/thumbnails/74.jpg)
Workbench Screens
Monday, 2 September 13
![Page 75: Drools and BRMS 6.0 (Dublin Aug 2013)](https://reader034.fdocuments.in/reader034/viewer/2022051412/54899cd9b47959d30c8b59d6/html5/thumbnails/75.jpg)
Workbench Screens• Workbench Screen
• DIV• Lifecycle events
• OnStartUp, OnShutDown• OnOpen, OnMayClose, OnClose• OnFocus, OnLostFocus
Monday, 2 September 13
![Page 76: Drools and BRMS 6.0 (Dublin Aug 2013)](https://reader034.fdocuments.in/reader034/viewer/2022051412/54899cd9b47959d30c8b59d6/html5/thumbnails/76.jpg)
Workbench Screens
@WorkbenchScreen(identifier = "MyFirstPanel")public class MyFirstPanel extends SimplePanel {
public MyFirstPanel() { setWidget( new Label("Hello World 1") ); }
@WorkbenchPartTitle public String myTitle() { return "My First Panel!"; }
}
Monday, 2 September 13
![Page 77: Drools and BRMS 6.0 (Dublin Aug 2013)](https://reader034.fdocuments.in/reader034/viewer/2022051412/54899cd9b47959d30c8b59d6/html5/thumbnails/77.jpg)
Workbench Editor
Monday, 2 September 13
![Page 78: Drools and BRMS 6.0 (Dublin Aug 2013)](https://reader034.fdocuments.in/reader034/viewer/2022051412/54899cd9b47959d30c8b59d6/html5/thumbnails/78.jpg)
Workbench Editor• Workbench Screen
• DIV• Lifecycle events
• OnStartUp, OnShutDown• OnOpen, OnMayClose, OnClose• OnFocus, OnLostFocus• IsDirty, OnSave
Monday, 2 September 13
![Page 79: Drools and BRMS 6.0 (Dublin Aug 2013)](https://reader034.fdocuments.in/reader034/viewer/2022051412/54899cd9b47959d30c8b59d6/html5/thumbnails/79.jpg)
Life Cycle Annotation@WorkbenchEditor(identifier = "TextEditor", supportedTypes = { TextResourceType.class, DotResourceType.class })public class TextEditorPresenter { (...)
@OnStart public void onStart( final Path path ) { this.path = path; }
@OnSave public void onSave() { }
@IsDirty public boolean isDirty() { return view.isDirty(); }}
Monday, 2 September 13
![Page 80: Drools and BRMS 6.0 (Dublin Aug 2013)](https://reader034.fdocuments.in/reader034/viewer/2022051412/54899cd9b47959d30c8b59d6/html5/thumbnails/80.jpg)
Life Cycle Annotation@WorkbenchEditor(identifier = "TextEditor", supportedTypes = { TextResourceType.class, DotResourceType.class })public class TextEditorPresenter { (...)
@OnStart public void onStart( final Path path ) { this.path = path; }
@OnSave public void onSave() { }
@IsDirty public boolean isDirty() { return view.isDirty(); }}
Monday, 2 September 13
![Page 81: Drools and BRMS 6.0 (Dublin Aug 2013)](https://reader034.fdocuments.in/reader034/viewer/2022051412/54899cd9b47959d30c8b59d6/html5/thumbnails/81.jpg)
Workbench Perspective
Monday, 2 September 13
![Page 82: Drools and BRMS 6.0 (Dublin Aug 2013)](https://reader034.fdocuments.in/reader034/viewer/2022051412/54899cd9b47959d30c8b59d6/html5/thumbnails/82.jpg)
Workbench Perspective$registerPerspective({ "id": "Markdown Editor", "view": { "parts": [ { "place": "MarkdownLiveViewer", "parameters": {} } ], "panels": [ { "width": 600, "min_width": 300, "position": "west", "parts": [ { "place": "MarkdownLiveEditor", "parameters": {} } ] } ] }, on_close: function () { }});
Monday, 2 September 13
![Page 83: Drools and BRMS 6.0 (Dublin Aug 2013)](https://reader034.fdocuments.in/reader034/viewer/2022051412/54899cd9b47959d30c8b59d6/html5/thumbnails/83.jpg)
Simple POM Editor
Monday, 2 September 13
![Page 84: Drools and BRMS 6.0 (Dublin Aug 2013)](https://reader034.fdocuments.in/reader034/viewer/2022051412/54899cd9b47959d30c8b59d6/html5/thumbnails/84.jpg)
Build and Deploy
Monday, 2 September 13
![Page 85: Drools and BRMS 6.0 (Dublin Aug 2013)](https://reader034.fdocuments.in/reader034/viewer/2022051412/54899cd9b47959d30c8b59d6/html5/thumbnails/85.jpg)
Local Maven Repository and Manager
Monday, 2 September 13
![Page 86: Drools and BRMS 6.0 (Dublin Aug 2013)](https://reader034.fdocuments.in/reader034/viewer/2022051412/54899cd9b47959d30c8b59d6/html5/thumbnails/86.jpg)
Create or Clone Git Repos
Monday, 2 September 13
![Page 87: Drools and BRMS 6.0 (Dublin Aug 2013)](https://reader034.fdocuments.in/reader034/viewer/2022051412/54899cd9b47959d30c8b59d6/html5/thumbnails/87.jpg)
Legacy Systems and Migration• Legacy API Adapter JAR• Most API’s should work with legacy adapter• KnowledegAgents have not been ported,
PKG’s are not longer the unit of deployment
• JCR Migration Tool• Command Line Java code• Each Package maps to a GIT project
Monday, 2 September 13
![Page 88: Drools and BRMS 6.0 (Dublin Aug 2013)](https://reader034.fdocuments.in/reader034/viewer/2022051412/54899cd9b47959d30c8b59d6/html5/thumbnails/88.jpg)
BPM Integration
Monday, 2 September 13
![Page 89: Drools and BRMS 6.0 (Dublin Aug 2013)](https://reader034.fdocuments.in/reader034/viewer/2022051412/54899cd9b47959d30c8b59d6/html5/thumbnails/89.jpg)
Work - Task Lists
Monday, 2 September 13
![Page 90: Drools and BRMS 6.0 (Dublin Aug 2013)](https://reader034.fdocuments.in/reader034/viewer/2022051412/54899cd9b47959d30c8b59d6/html5/thumbnails/90.jpg)
Work - Task Lists
Monday, 2 September 13
![Page 91: Drools and BRMS 6.0 (Dublin Aug 2013)](https://reader034.fdocuments.in/reader034/viewer/2022051412/54899cd9b47959d30c8b59d6/html5/thumbnails/91.jpg)
Work - Task Lists
Monday, 2 September 13
![Page 92: Drools and BRMS 6.0 (Dublin Aug 2013)](https://reader034.fdocuments.in/reader034/viewer/2022051412/54899cd9b47959d30c8b59d6/html5/thumbnails/92.jpg)
Work - Task Lists
Monday, 2 September 13
![Page 93: Drools and BRMS 6.0 (Dublin Aug 2013)](https://reader034.fdocuments.in/reader034/viewer/2022051412/54899cd9b47959d30c8b59d6/html5/thumbnails/93.jpg)
Work - Task Lists
Monday, 2 September 13
![Page 94: Drools and BRMS 6.0 (Dublin Aug 2013)](https://reader034.fdocuments.in/reader034/viewer/2022051412/54899cd9b47959d30c8b59d6/html5/thumbnails/94.jpg)
Work - Task Lists
Monday, 2 September 13
![Page 95: Drools and BRMS 6.0 (Dublin Aug 2013)](https://reader034.fdocuments.in/reader034/viewer/2022051412/54899cd9b47959d30c8b59d6/html5/thumbnails/95.jpg)
BPMN Designer (JS)
Monday, 2 September 13
![Page 96: Drools and BRMS 6.0 (Dublin Aug 2013)](https://reader034.fdocuments.in/reader034/viewer/2022051412/54899cd9b47959d30c8b59d6/html5/thumbnails/96.jpg)
BRMS 6.0Simplified Utilization
Monday, 2 September 13
![Page 97: Drools and BRMS 6.0 (Dublin Aug 2013)](https://reader034.fdocuments.in/reader034/viewer/2022051412/54899cd9b47959d30c8b59d6/html5/thumbnails/97.jpg)
BRMS 5.0 Programmatic APIKnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
kbuilder.batch().add( newClassPathResource( "Model.drl", getClass() ), DRL ) .add( newClassPathResource( "Queries.drl", getClass() ), DRL ) .add( newClassPathResource( "General.drl", getClass() ), DRL ) .add( newClassPathResource( "Response.drl", getClass() ), DRL ) .add( newClassPathResource( "Events.drl", getClass() ), DRL ) .add( newClassPathResource( "UiView.drl", getClass() ), DRL ) .add( newClassPathResource( "Commands.drl", getClass() ), DRL ).build();
if ( kbuilder.hasErrors() ) { System.out.println( kbuilder.getErrors().toString() ); System.exit( 1 );}
KieBaseConfiguration kbaseConf = KnowledgeBaseFactory.newKnowledgeBaseConfiguration();kbaseConf.setOption( EqualityBehaviorOption.EQUALITY );
KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase( kbaseConf );kbase.addKnowledgePackages( kbuilder.getKnowledgePackages() );
Counter c = new Counter();ksession = kbase.newStatefulKnowledgeSession();
Monday, 2 September 13
![Page 98: Drools and BRMS 6.0 (Dublin Aug 2013)](https://reader034.fdocuments.in/reader034/viewer/2022051412/54899cd9b47959d30c8b59d6/html5/thumbnails/98.jpg)
Changes• Conventions:• droolsjbpm -> kie• knowlege -> kie
• Examples• KnowledgeBase -> Kie• StatefulKnowledgeSession -> KieSession• StatelessKnowledgeSession - StatelesKieSession
• Legacy API Adapter JAR• Most API’s should work with legacy adapter• KnowledegAgents have not been ported, PKG’s are not
longer the unit of deployment
Monday, 2 September 13
![Page 99: Drools and BRMS 6.0 (Dublin Aug 2013)](https://reader034.fdocuments.in/reader034/viewer/2022051412/54899cd9b47959d30c8b59d6/html5/thumbnails/99.jpg)
KieModules• Discovery• META-INF/kmodule.xml
• Convention based• No programmatic api for building• Multiple Named entities• Inheritence of Resources• Defaults for lazy people• Version built in a standard
Monday, 2 September 13
![Page 100: Drools and BRMS 6.0 (Dublin Aug 2013)](https://reader034.fdocuments.in/reader034/viewer/2022051412/54899cd9b47959d30c8b59d6/html5/thumbnails/100.jpg)
Git Hub Examples• https://github.com/droolsjbpm/drools/tree/master/drools-
examples-api
Monday, 2 September 13
![Page 101: Drools and BRMS 6.0 (Dublin Aug 2013)](https://reader034.fdocuments.in/reader034/viewer/2022051412/54899cd9b47959d30c8b59d6/html5/thumbnails/101.jpg)
KieModules
<kmodule xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://jboss.org/kie/6.0.0/kmodule"> </kmodule>
KieServices ks = KieServices.Factory.get();KieContainer kContainer = ks.getKieClasspathContainer();
KieSession kSession = kContainer.newKieSession();kSession.setGlobal("out", out);kSession.insert(new Message("Dave", "Hello, HAL. Do you read me, HAL?"));kSession.fireAllRules();
Monday, 2 September 13
![Page 102: Drools and BRMS 6.0 (Dublin Aug 2013)](https://reader034.fdocuments.in/reader034/viewer/2022051412/54899cd9b47959d30c8b59d6/html5/thumbnails/102.jpg)
102
Monday, 2 September 13
![Page 103: Drools and BRMS 6.0 (Dublin Aug 2013)](https://reader034.fdocuments.in/reader034/viewer/2022051412/54899cd9b47959d30c8b59d6/html5/thumbnails/103.jpg)
KieModules• Named Entities and JAR on Classpath• Creates one KieBase• Includes resources from package matching
kbase name
<kmodule xmlns="http://jboss.org/kie/6.0.0/kmodule">
<kbase name="kbase1"> <ksession name="ksession1"/> </kbase>
</kmodule>
KieServices ks = KieServices.Factory.get();KieContainer kContainer = ks.getKieClasspathContainer();
KieSession kSession = kContainer.newKieSession("ksession1");kSession.setGlobal("out", out);kSession.insert(new Message("Dave", "Hello, HAL. Do you read me, HAL?"));kSession.fireAllRules();
Monday, 2 September 13
![Page 104: Drools and BRMS 6.0 (Dublin Aug 2013)](https://reader034.fdocuments.in/reader034/viewer/2022051412/54899cd9b47959d30c8b59d6/html5/thumbnails/104.jpg)
104
Monday, 2 September 13
![Page 105: Drools and BRMS 6.0 (Dublin Aug 2013)](https://reader034.fdocuments.in/reader034/viewer/2022051412/54899cd9b47959d30c8b59d6/html5/thumbnails/105.jpg)
KieModules• Named Entities, with inheritence and JAR on
Classpath• Two projects, one “includes” from the other<dependency> <groupId>org.drools</groupId> <artifactId>named-kiesession</artifactId> <version>6.0.0-SNAPSHOT</version></dependency>
<kbase name="kbase2" includes="kbase1"> <ksession name="ksession2"/></kbase>
KieServices ks = KieServices.Factory.get();KieContainer kContainer = ks.getKieClasspathContainer();KieSession kSession = kContainer.newKieSession("ksession2");kSession.setGlobal("out", out);
kSession.insert(new Message("Dave", "Hello, HAL. Do you read me, HAL?"));kSession.fireAllRules();
kSession.insert(new Message("Dave", "Open the pod bay doors, HAL."));kSession.fireAllRules();
Monday, 2 September 13
![Page 106: Drools and BRMS 6.0 (Dublin Aug 2013)](https://reader034.fdocuments.in/reader034/viewer/2022051412/54899cd9b47959d30c8b59d6/html5/thumbnails/106.jpg)
KieModules• Package location can over-ride kbase name defaults
<kbase name="WumpusMainKB" packages="org.drools.games.wumpus.server, org.drools.games.wumpus.server.view"> <ksession name="WumpusMainKS" /></kbase>
<kbase name="WumpusClientKB" packages="org.drools.games.wumpus.client"> <ksession name="WumpusClientKS"/></kbase>
KieContainer kc = KieServices.Factory.get().getKieClasspathContainer();final KieSession serverKsession = kc.newKieSession( "WumpusMainKS");final KieSession clientKsession = kc.newKieSession("WumpusClientKS");
Monday, 2 September 13
![Page 107: Drools and BRMS 6.0 (Dublin Aug 2013)](https://reader034.fdocuments.in/reader034/viewer/2022051412/54899cd9b47959d30c8b59d6/html5/thumbnails/107.jpg)
Dynamic KieModules• JARs can be loaded from URLs into KieRepository• Once loaded they can be resolved via ReleaseId
KieServices ks = KieServices.Factory.get();KieRepository kr = ks.getRepository();
KieModule kModule = kr.addKieModule(ks.getResources().newFileSystemResource( getFile("default-kiesession")));
KieContainer kContainer = ks.newKieContainer(kModule.getReleaseId());
KieSession kSession = kContainer.newKieSession();kSession.setGlobal("out", out);
Object msg1 = createMessage(kContainer, "Dave", "Hello, HAL. Do you read me, HAL?");kSession.insert(msg1);kSession.fireAllRules();
Monday, 2 September 13
![Page 108: Drools and BRMS 6.0 (Dublin Aug 2013)](https://reader034.fdocuments.in/reader034/viewer/2022051412/54899cd9b47959d30c8b59d6/html5/thumbnails/108.jpg)
Dynamic KieModules• kie-ci use embedded maven for remote
discovery<dependency> <groupId>org.kie</groupId> <artifactId>kie-ci</artifactId></dependency>
KieServices ks = KieServices.Factory.get();
// Install example1 in the local maven repo before to do thisKieContainer kContainer = ks.newKieContainer( ks.newReleaseId("org.drools", "named-kiesession", "6.0.0-SNAPSHOT"));
KieSession kSession = kContainer.newKieSession("ksession1");kSession.setGlobal("out", out);
Object msg1 = createMessage(kContainer, "Dave", "Hello, HAL. Do you read me, HAL?");kSession.insert(msg1);kSession.fireAllRules();
Monday, 2 September 13
![Page 109: Drools and BRMS 6.0 (Dublin Aug 2013)](https://reader034.fdocuments.in/reader034/viewer/2022051412/54899cd9b47959d30c8b59d6/html5/thumbnails/109.jpg)
Dynamic KieModules
// create a new kjarInternalKieModule kJar2 = createKieJar(ks, releaseId, "rule2", "rule3");
// deploy it on mavenrepository.deployArtifact(releaseId, kJar2, kPom);
// since I am not calling start() on the scanner it means it won't have automatic scheduled scanningKieScanner scanner = ks.newKieScanner(kieContainer);
// scan the maven repo to get the new kjar version and deploy it on the kcontainerscanner.scanNow();
// create a ksesion and check it works as expectedKieSession ksession2 = kieContainer.newKieSession("KSession1");checkKSession(ksession2, "rule2", "rule3");
Monday, 2 September 13
![Page 110: Drools and BRMS 6.0 (Dublin Aug 2013)](https://reader034.fdocuments.in/reader034/viewer/2022051412/54899cd9b47959d30c8b59d6/html5/thumbnails/110.jpg)
kmodule.xml Editor
Monday, 2 September 13
![Page 111: Drools and BRMS 6.0 (Dublin Aug 2013)](https://reader034.fdocuments.in/reader034/viewer/2022051412/54899cd9b47959d30c8b59d6/html5/thumbnails/111.jpg)
Programmatic API• Builder API, for tooling integration• Incremental compilation, and problem
reportingKieServices ks = KieServices.Factory.get();KieRepository kr = ks.getRepository();KieFileSystem kfs = ks.newKieFileSystem();
kfs.write("src/main/resources/org/kie/example5/HAL5.drl", getRule());
KieBuilder kb = ks.newKieBuilder(kfs);
kb.buildAll(); // kieModule is automatically deployed to KieRepository if successfully built.if (kb.getResults().hasMessages(Level.ERROR)) { throw new RuntimeException("Build Errors:\n" + kb.getResults().toString());}
KieContainer kContainer = ks.newKieContainer(kr.getDefaultReleaseId());
KieSession kSession = kContainer.newKieSession();kSession.setGlobal("out", out);
kSession.insert(new Message("Dave", "Hello, HAL. Do you read me, HAL?"));kSession.fireAllRules();
Monday, 2 September 13
![Page 112: Drools and BRMS 6.0 (Dublin Aug 2013)](https://reader034.fdocuments.in/reader034/viewer/2022051412/54899cd9b47959d30c8b59d6/html5/thumbnails/112.jpg)
BRMS 6.0 CDI
Monday, 2 September 13
![Page 113: Drools and BRMS 6.0 (Dublin Aug 2013)](https://reader034.fdocuments.in/reader034/viewer/2022051412/54899cd9b47959d30c8b59d6/html5/thumbnails/113.jpg)
CDI Context and Dependency • CDI injects named entities from the
kmodule.xml
• Injectable types• KieServices• KieContainer• KieBase• KieSession• StatelessKieSession
Monday, 2 September 13
![Page 114: Drools and BRMS 6.0 (Dublin Aug 2013)](https://reader034.fdocuments.in/reader034/viewer/2022051412/54899cd9b47959d30c8b59d6/html5/thumbnails/114.jpg)
KBase
@Inject @KBase(value="jar1.KBase1", name="kb2") @KReleaseId( groupId = "jar1", artifactId = "art1", version = "1.0")private KieBase jar1KBase1kb2;
@Inject@KBase(value="jar1.KBase1", name="kb2") @KReleaseId( groupId = "jar1", artifactId = "art1", version = "1.0")private KieBase jar1KBase1kb22;
@Injectprivate KieBase defaultClassPathKBase;
@Inject@KReleaseId( groupId = "jar1", artifactId = "art1", version = "1.0") private KieBase defaultDynamicKBase;
@Inject@KBase("jar1.KBase1") @KReleaseId( groupId = "jar1", artifactId = "art1", version = "1.0")private KieBase jar1KBase1v10;
@Inject@KBase("jar1.KBase1") @KReleaseId(groupId = "jar1", artifactId = "art1", version = "1.1")private KieBase jar1KBase1v11;
@Inject@KBase(value="jar1.KBase1", name="kb1")@KReleaseId( groupId = "jar1", artifactId = "art1", version = "1.0")private KieBase jar1KBase1kb1;
Monday, 2 September 13
![Page 115: Drools and BRMS 6.0 (Dublin Aug 2013)](https://reader034.fdocuments.in/reader034/viewer/2022051412/54899cd9b47959d30c8b59d6/html5/thumbnails/115.jpg)
KSession@Inject@KSession("jar1.KSession2") @KReleaseId( groupId = "jar1", artifactId = "art1", version = "1.0" )private KieSession kbase1ksession2v10;
@Inject@KSession("jar1.KSession2") @KReleaseId( groupId = "jar1", artifactId = "art1", version = "1.1" )private KieSession kbase1ksession2v11;
@Inject@KSession(value="jar1.KSession2", name="ks1") @KReleaseId( groupId = "jar1", artifactId = "art1", version = "1.0" )private KieSession kbase1ksession2ks1;
@Inject@KSession(value="jar1.KSession2", name="ks2") @KReleaseId( groupId = "jar1", artifactId = "art1", version = "1.0" )private KieSession kbase1ksession2ks2 ;
@Inject@KSession(value="jar1.KSession2", name="ks2") @KReleaseId( groupId = "jar1", artifactId = "art1", version = "1.0" )private KieSession kbase1ksession2ks22;
Monday, 2 September 13
![Page 116: Drools and BRMS 6.0 (Dublin Aug 2013)](https://reader034.fdocuments.in/reader034/viewer/2022051412/54899cd9b47959d30c8b59d6/html5/thumbnails/116.jpg)
BRMS 6.0 Spring and Camel
Monday, 2 September 13
![Page 117: Drools and BRMS 6.0 (Dublin Aug 2013)](https://reader034.fdocuments.in/reader034/viewer/2022051412/54899cd9b47959d30c8b59d6/html5/thumbnails/117.jpg)
Spring and Camel<kie:kmodule id="CxfRsSpring"> <kie:kbase name="test1" packages="test1"> <kie:ksession name="ksession1"> <kie:batch> <kie:set-global identifier="list" > <bean class="java.util.ArrayList" /> </kie:set-global> </kie:batch> </kie:ksession> <kie:ksession name="ksession2"/> </kie:kbase></kie:kmodule>
Monday, 2 September 13
![Page 118: Drools and BRMS 6.0 (Dublin Aug 2013)](https://reader034.fdocuments.in/reader034/viewer/2022051412/54899cd9b47959d30c8b59d6/html5/thumbnails/118.jpg)
Spring and Camel<bean id="kiePolicy" class="org.kie.camel.component.KiePolicy" /> <camelContext id="camel" xmlns="http://camel.apache.org/schema/spring"> <route> <from uri="cxfrs://bean://rsServer"/> <policy ref="kiePolicy"> <unmarshal ref="xstream" /> <to uri="kie:ksession1" /> <marshal ref="xstream" /> </policy> </route> <route id="x1"> <from uri="direct://http"/> <policy ref="kiePolicy"> <to uri="cxfrs://http://localhost:58001/rest"/> </policy> </route> </camelContext>
Monday, 2 September 13
![Page 119: Drools and BRMS 6.0 (Dublin Aug 2013)](https://reader034.fdocuments.in/reader034/viewer/2022051412/54899cd9b47959d30c8b59d6/html5/thumbnails/119.jpg)
BRMS 6.0R.I.P Rete
Monday, 2 September 13
![Page 120: Drools and BRMS 6.0 (Dublin Aug 2013)](https://reader034.fdocuments.in/reader034/viewer/2022051412/54899cd9b47959d30c8b59d6/html5/thumbnails/120.jpg)
R.I.P RETEinspirations:• Leaps, Collection Oriented Match, L/R Unlinking
New Innovations• Full Rule, and Rule Segment Unlinking• Lazy Evaluation, with Rule scoping• Set propagations
Previous Innovations• Modify In Place• Property Reactive• Tree Based Graphs• Subnetwork support
Monday, 2 September 13
![Page 121: Drools and BRMS 6.0 (Dublin Aug 2013)](https://reader034.fdocuments.in/reader034/viewer/2022051412/54899cd9b47959d30c8b59d6/html5/thumbnails/121.jpg)
Backward ChainingReactive Transitive
Closures
Monday, 2 September 13
![Page 122: Drools and BRMS 6.0 (Dublin Aug 2013)](https://reader034.fdocuments.in/reader034/viewer/2022051412/54899cd9b47959d30c8b59d6/html5/thumbnails/122.jpg)
Reasoning with GraphsHouse
Location("Office", "House ")
Location("Kitchen", "House")
Location("Desk", "Office")
Location("Chair", "Office")
Location("Computer", "Desk")
Location("Draw", "Desk")
Location("Knife", "Kitchen")
Location("Cheese", "Kitchen")
Location("Key", "Draw")
Monday, 2 September 13
![Page 123: Drools and BRMS 6.0 (Dublin Aug 2013)](https://reader034.fdocuments.in/reader034/viewer/2022051412/54899cd9b47959d30c8b59d6/html5/thumbnails/123.jpg)
123
Backward Chainingquery isContainedIn( String x, String y ) Location( x, y; ) or ( Location( z, y; ) and isContainedIn( x, z; ) )end
House
Location("Office", "House ")
Location("Kitchen", "House")
Location("Desk", "Office")
Location("Chair", "Office")
Location("Computer", "Desk")
Location("Draw", "Desk")
Location("Knife", "Kitchen")
Location("Cheese", "Kitchen")
Location("Key", "Draw")
Monday, 2 September 13
![Page 124: Drools and BRMS 6.0 (Dublin Aug 2013)](https://reader034.fdocuments.in/reader034/viewer/2022051412/54899cd9b47959d30c8b59d6/html5/thumbnails/124.jpg)
Backward Chainingksession.insert( new Location("Office", "House") );ksession.insert( new Location("Kitchen", "House") );ksession.insert( new Location("Knife", "Kitchen") );ksession.insert( new Location("Cheese", "Kitchen") );ksession.insert( new Location("Desk", "Office") );ksession.insert( new Location("Chair", "Office") );ksession.insert( new Location("Computer", "Desk") );ksession.insert( new Location("Draw", "Desk") );
House
Location("Office", "House ")
Location("Kitchen", "House")
Location("Desk", "Office")
Location("Chair", "Office")
Location("Computer", "Desk")
Location("Draw", "Desk")
Location("Knife", "Kitchen")
Location("Cheese", "Kitchen")
Location("Key", "Draw")
Monday, 2 September 13
![Page 125: Drools and BRMS 6.0 (Dublin Aug 2013)](https://reader034.fdocuments.in/reader034/viewer/2022051412/54899cd9b47959d30c8b59d6/html5/thumbnails/125.jpg)
Backward Chainingrule "go" salience 10when $s : String( )then System.out.println( $s );end
House
Location("Office", "House ")
Location("Kitchen", "House")
Location("Desk", "Office")
Location("Chair", "Office")
Location("Computer", "Desk")
Location("Draw", "Desk")
Location("Knife", "Kitchen")
Location("Cheese", "Kitchen")
Location("Key", "Draw")
Monday, 2 September 13
![Page 126: Drools and BRMS 6.0 (Dublin Aug 2013)](https://reader034.fdocuments.in/reader034/viewer/2022051412/54899cd9b47959d30c8b59d6/html5/thumbnails/126.jpg)
Backward Chainingrule "go1"when String( this == "go1" ) isContainedIn("Office", "House"; )then System.out.println( "office is in the house" );end
rule "go" salience 10when $s : String( )then System.out.println( $s );end
House
Location("Office", "House ")
Location("Kitchen", "House")
Location("Desk", "Office")
Location("Chair", "Office")
Location("Computer", "Desk")
Location("Draw", "Desk")
Location("Knife", "Kitchen")
Location("Cheese", "Kitchen")
Location("Key", "Draw")
Monday, 2 September 13
![Page 127: Drools and BRMS 6.0 (Dublin Aug 2013)](https://reader034.fdocuments.in/reader034/viewer/2022051412/54899cd9b47959d30c8b59d6/html5/thumbnails/127.jpg)
Backward Chainingrule "go1"when String( this == "go1" ) isContainedIn("Office", "House"; )then System.out.println( "office is in the house" );end
rule "go" salience 10when $s : String( )then System.out.println( $s );end
query isContainedIn( String x, String y ) Location( x, y; ) or ( Location( z, y; ) and isContainedIn( x, z; ) )end
House
Location("Office", "House ")
Location("Kitchen", "House")
Location("Desk", "Office")
Location("Chair", "Office")
Location("Computer", "Desk")
Location("Draw", "Desk")
Location("Knife", "Kitchen")
Location("Cheese", "Kitchen")
Location("Key", "Draw")
Monday, 2 September 13
![Page 128: Drools and BRMS 6.0 (Dublin Aug 2013)](https://reader034.fdocuments.in/reader034/viewer/2022051412/54899cd9b47959d30c8b59d6/html5/thumbnails/128.jpg)
Backward Chainingrule "go1"when String( this == "go1" ) isContainedIn("Office", "House"; )then System.out.println( "office is in the house" );end
rule "go" salience 10when $s : String( )then System.out.println( $s );end
ksession.insert( "go1" );ksession.fireAllRules();---go1office is in the house
query isContainedIn( String x, String y ) Location( x, y; ) or ( Location( z, y; ) and isContainedIn( x, z; ) )end
House
Location("Office", "House ")
Location("Kitchen", "House")
Location("Desk", "Office")
Location("Chair", "Office")
Location("Computer", "Desk")
Location("Draw", "Desk")
Location("Knife", "Kitchen")
Location("Cheese", "Kitchen")
Location("Key", "Draw")
Monday, 2 September 13
![Page 129: Drools and BRMS 6.0 (Dublin Aug 2013)](https://reader034.fdocuments.in/reader034/viewer/2022051412/54899cd9b47959d30c8b59d6/html5/thumbnails/129.jpg)
Backward Chainingrule "go1"when String( this == "go1" ) isContainedIn("Office", "House"; )then System.out.println( "office is in the house" );end
rule "go" salience 10when $s : String( )then System.out.println( $s );end
ksession.insert( "go1" );ksession.fireAllRules();---go1office is in the house
query isContainedIn( String x, String y ) Location( x, y; ) or ( Location( z, y; ) and isContainedIn( x, z; ) )end
isContainedIn(x==Office, y==House)
House
Location("Office", "House ")
Location("Kitchen", "House")
Location("Desk", "Office")
Location("Chair", "Office")
Location("Computer", "Desk")
Location("Draw", "Desk")
Location("Knife", "Kitchen")
Location("Cheese", "Kitchen")
Location("Key", "Draw")
Monday, 2 September 13
![Page 130: Drools and BRMS 6.0 (Dublin Aug 2013)](https://reader034.fdocuments.in/reader034/viewer/2022051412/54899cd9b47959d30c8b59d6/html5/thumbnails/130.jpg)
Backward Chainingrule "go1"when String( this == "go1" ) isContainedIn("Office", "House"; )then System.out.println( "office is in the house" );end
rule "go" salience 10when $s : String( )then System.out.println( $s );end
ksession.insert( "go1" );ksession.fireAllRules();---go1office is in the house
query isContainedIn( String x, String y ) Location( x, y; ) or ( Location( z, y; ) and isContainedIn( x, z; ) )end
Location(x==Office, y==House)
House
Location("Office", "House ")
Location("Kitchen", "House")
Location("Desk", "Office")
Location("Chair", "Office")
Location("Computer", "Desk")
Location("Draw", "Desk")
Location("Knife", "Kitchen")
Location("Cheese", "Kitchen")
Location("Key", "Draw")
isContainedIn(x==Office, y==House)
Monday, 2 September 13
![Page 131: Drools and BRMS 6.0 (Dublin Aug 2013)](https://reader034.fdocuments.in/reader034/viewer/2022051412/54899cd9b47959d30c8b59d6/html5/thumbnails/131.jpg)
Backward Chainingrule "go2"when String( this == "go2" ) isContainedIn("Draw", "House"; )then System.out.println( "Draw in the House" );end
House
Location("Office", "House ")
Location("Kitchen", "House")
Location("Desk", "Office")
Location("Chair", "Office")
Location("Computer", "Desk")
Location("Draw", "Desk")
Location("Knife", "Kitchen")
Location("Cheese", "Kitchen")
Location("Key", "Draw")
Monday, 2 September 13
![Page 132: Drools and BRMS 6.0 (Dublin Aug 2013)](https://reader034.fdocuments.in/reader034/viewer/2022051412/54899cd9b47959d30c8b59d6/html5/thumbnails/132.jpg)
Backward Chainingrule "go2"when String( this == "go2" ) isContainedIn("Draw", "House"; )then System.out.println( "Draw in the House" );end
query isContainedIn( String x, String y ) Location( x, y; ) or ( Location( z, y; ) and isContainedIn( x, z; ) )end
House
Location("Office", "House ")
Location("Kitchen", "House")
Location("Desk", "Office")
Location("Chair", "Office")
Location("Computer", "Desk")
Location("Draw", "Desk")
Location("Knife", "Kitchen")
Location("Cheese", "Kitchen")
Location("Key", "Draw")
Monday, 2 September 13
![Page 133: Drools and BRMS 6.0 (Dublin Aug 2013)](https://reader034.fdocuments.in/reader034/viewer/2022051412/54899cd9b47959d30c8b59d6/html5/thumbnails/133.jpg)
Backward Chainingrule "go2"when String( this == "go2" ) isContainedIn("Draw", "House"; )then System.out.println( "Draw in the House" );end
query isContainedIn( String x, String y ) Location( x, y; ) or ( Location( z, y; ) and isContainedIn( x, z; ) )end
ksession.insert( "go2" );ksession.fireAllRules();---go2Draw in the House
House
Location("Office", "House ")
Location("Kitchen", "House")
Location("Desk", "Office")
Location("Chair", "Office")
Location("Computer", "Desk")
Location("Draw", "Desk")
Location("Knife", "Kitchen")
Location("Cheese", "Kitchen")
Location("Key", "Draw")
Monday, 2 September 13
![Page 134: Drools and BRMS 6.0 (Dublin Aug 2013)](https://reader034.fdocuments.in/reader034/viewer/2022051412/54899cd9b47959d30c8b59d6/html5/thumbnails/134.jpg)
Backward Chainingrule "go2"when String( this == "go2" ) isContainedIn("Draw", "House"; )then System.out.println( "Draw in the House" );end
query isContainedIn( String x, String y ) Location( x, y; ) or ( Location( z, y; ) and isContainedIn( x, z; ) )end
isContainedIn(x==Draw, y==House)
ksession.insert( "go2" );ksession.fireAllRules();---go2Draw in the House
House
Location("Office", "House ")
Location("Kitchen", "House")
Location("Desk", "Office")
Location("Chair", "Office")
Location("Computer", "Desk")
Location("Draw", "Desk")
Location("Knife", "Kitchen")
Location("Cheese", "Kitchen")
Location("Key", "Draw")
Monday, 2 September 13
![Page 135: Drools and BRMS 6.0 (Dublin Aug 2013)](https://reader034.fdocuments.in/reader034/viewer/2022051412/54899cd9b47959d30c8b59d6/html5/thumbnails/135.jpg)
Backward Chainingrule "go2"when String( this == "go2" ) isContainedIn("Draw", "House"; )then System.out.println( "Draw in the House" );end
query isContainedIn( String x, String y ) Location( x, y; ) or ( Location( z, y; ) and isContainedIn( x, z; ) )end
Location(z==Office, y==House)isContainedIn(x==Draw, y==House)
ksession.insert( "go2" );ksession.fireAllRules();---go2Draw in the House
House
Location("Office", "House ")
Location("Kitchen", "House")
Location("Desk", "Office")
Location("Chair", "Office")
Location("Computer", "Desk")
Location("Draw", "Desk")
Location("Knife", "Kitchen")
Location("Cheese", "Kitchen")
Location("Key", "Draw")
Monday, 2 September 13
![Page 136: Drools and BRMS 6.0 (Dublin Aug 2013)](https://reader034.fdocuments.in/reader034/viewer/2022051412/54899cd9b47959d30c8b59d6/html5/thumbnails/136.jpg)
Backward Chainingrule "go2"when String( this == "go2" ) isContainedIn("Draw", "House"; )then System.out.println( "Draw in the House" );end
query isContainedIn( String x, String y ) Location( x, y; ) or ( Location( z, y; ) and isContainedIn( x, z; ) )end
Location(z==Office, y==House)isContainedIn(x==Draw, z==Office)
isContainedIn(x==Draw, y==House)
ksession.insert( "go2" );ksession.fireAllRules();---go2Draw in the House
House
Location("Office", "House ")
Location("Kitchen", "House")
Location("Desk", "Office")
Location("Chair", "Office")
Location("Computer", "Desk")
Location("Draw", "Desk")
Location("Knife", "Kitchen")
Location("Cheese", "Kitchen")
Location("Key", "Draw")
Monday, 2 September 13
![Page 137: Drools and BRMS 6.0 (Dublin Aug 2013)](https://reader034.fdocuments.in/reader034/viewer/2022051412/54899cd9b47959d30c8b59d6/html5/thumbnails/137.jpg)
Backward Chainingrule "go2"when String( this == "go2" ) isContainedIn("Draw", "House"; )then System.out.println( "Draw in the House" );end
query isContainedIn( String x, String y ) Location( x, y; ) or ( Location( z, y; ) and isContainedIn( x, z; ) )end
Location(z==Office, y==House)isContainedIn(x==Draw, z==Office)
Location(z==Kitchen, y==House)isContainedIn(x==Draw, z==Kitchen)
isContainedIn(x==Draw, y==House)
ksession.insert( "go2" );ksession.fireAllRules();---go2Draw in the House
House
Location("Office", "House ")
Location("Kitchen", "House")
Location("Desk", "Office")
Location("Chair", "Office")
Location("Computer", "Desk")
Location("Draw", "Desk")
Location("Knife", "Kitchen")
Location("Cheese", "Kitchen")
Location("Key", "Draw")
Monday, 2 September 13
![Page 138: Drools and BRMS 6.0 (Dublin Aug 2013)](https://reader034.fdocuments.in/reader034/viewer/2022051412/54899cd9b47959d30c8b59d6/html5/thumbnails/138.jpg)
Backward Chainingrule "go2"when String( this == "go2" ) isContainedIn("Draw", "House"; )then System.out.println( "Draw in the House" );end
query isContainedIn( String x, String y ) Location( x, y; ) or ( Location( z, y; ) and isContainedIn( x, z; ) )end
isContainedIn(x==Draw, y==Office)
ksession.insert( "go2" );ksession.fireAllRules();---go2Draw in the House
House
Location("Office", "House ")
Location("Kitchen", "House")
Location("Desk", "Office")
Location("Chair", "Office")
Location("Computer", "Desk")
Location("Draw", "Desk")
Location("Knife", "Kitchen")
Location("Cheese", "Kitchen")
Location("Key", "Draw")
Monday, 2 September 13
![Page 139: Drools and BRMS 6.0 (Dublin Aug 2013)](https://reader034.fdocuments.in/reader034/viewer/2022051412/54899cd9b47959d30c8b59d6/html5/thumbnails/139.jpg)
Backward Chainingrule "go2"when String( this == "go2" ) isContainedIn("Draw", "House"; )then System.out.println( "Draw in the House" );end
query isContainedIn( String x, String y ) Location( x, y; ) or ( Location( z, y; ) and isContainedIn( x, z; ) )end
Location(z==Desk, y==Office)isContainedIn(x==Draw, y==Office)
ksession.insert( "go2" );ksession.fireAllRules();---go2Draw in the House
House
Location("Office", "House ")
Location("Kitchen", "House")
Location("Desk", "Office")
Location("Chair", "Office")
Location("Computer", "Desk")
Location("Draw", "Desk")
Location("Knife", "Kitchen")
Location("Cheese", "Kitchen")
Location("Key", "Draw")
Monday, 2 September 13
![Page 140: Drools and BRMS 6.0 (Dublin Aug 2013)](https://reader034.fdocuments.in/reader034/viewer/2022051412/54899cd9b47959d30c8b59d6/html5/thumbnails/140.jpg)
Backward Chainingrule "go2"when String( this == "go2" ) isContainedIn("Draw", "House"; )then System.out.println( "Draw in the House" );end
query isContainedIn( String x, String y ) Location( x, y; ) or ( Location( z, y; ) and isContainedIn( x, z; ) )end
Location(z==Desk, y==Office)isContainedIn(x==Draw, z==Desk)
isContainedIn(x==Draw, y==Office)
ksession.insert( "go2" );ksession.fireAllRules();---go2Draw in the House
House
Location("Office", "House ")
Location("Kitchen", "House")
Location("Desk", "Office")
Location("Chair", "Office")
Location("Computer", "Desk")
Location("Draw", "Desk")
Location("Knife", "Kitchen")
Location("Cheese", "Kitchen")
Location("Key", "Draw")
Monday, 2 September 13
![Page 141: Drools and BRMS 6.0 (Dublin Aug 2013)](https://reader034.fdocuments.in/reader034/viewer/2022051412/54899cd9b47959d30c8b59d6/html5/thumbnails/141.jpg)
Backward Chainingrule "go2"when String( this == "go2" ) isContainedIn("Draw", "House"; )then System.out.println( "Draw in the House" );end
query isContainedIn( String x, String y ) Location( x, y; ) or ( Location( z, y; ) and isContainedIn( x, z; ) )end
isContainedIn(x==Draw, y==Desk)
ksession.insert( "go2" );ksession.fireAllRules();---go2Draw in the House
House
Location("Office", "House ")
Location("Kitchen", "House")
Location("Desk", "Office")
Location("Chair", "Office")
Location("Computer", "Desk")
Location("Draw", "Desk")
Location("Knife", "Kitchen")
Location("Cheese", "Kitchen")
Location("Key", "Draw")
Monday, 2 September 13
![Page 142: Drools and BRMS 6.0 (Dublin Aug 2013)](https://reader034.fdocuments.in/reader034/viewer/2022051412/54899cd9b47959d30c8b59d6/html5/thumbnails/142.jpg)
Backward Chainingrule "go2"when String( this == "go2" ) isContainedIn("Draw", "House"; )then System.out.println( "Draw in the House" );end
query isContainedIn( String x, String y ) Location( x, y; ) or ( Location( z, y; ) and isContainedIn( x, z; ) )end
Location(x==Draw, y==Desk)isContainedIn(x==Draw, y==Desk)
ksession.insert( "go2" );ksession.fireAllRules();---go2Draw in the House
House
Location("Office", "House ")
Location("Kitchen", "House")
Location("Desk", "Office")
Location("Chair", "Office")
Location("Computer", "Desk")
Location("Draw", "Desk")
Location("Knife", "Kitchen")
Location("Cheese", "Kitchen")
Location("Key", "Draw")
Monday, 2 September 13
![Page 143: Drools and BRMS 6.0 (Dublin Aug 2013)](https://reader034.fdocuments.in/reader034/viewer/2022051412/54899cd9b47959d30c8b59d6/html5/thumbnails/143.jpg)
Backward Chainingrule "go3"when String( this == "go3" ) isContainedIn("Key", "Office"; )then System.out.println( "Key in the Office" );end
House
Location("Office", "House ")
Location("Kitchen", "House")
Location("Desk", "Office")
Location("Chair", "Office")
Location("Computer", "Desk")
Location("Draw", "Desk")
Location("Knife", "Kitchen")
Location("Cheese", "Kitchen")
Location("Key", "Draw")
Monday, 2 September 13
![Page 144: Drools and BRMS 6.0 (Dublin Aug 2013)](https://reader034.fdocuments.in/reader034/viewer/2022051412/54899cd9b47959d30c8b59d6/html5/thumbnails/144.jpg)
Backward Chainingrule "go3"when String( this == "go3" ) isContainedIn("Key", "Office"; )then System.out.println( "Key in the Office" );end
ksession.insert( "go3" );ksession.fireAllRules();---go3
House
Location("Office", "House ")
Location("Kitchen", "House")
Location("Desk", "Office")
Location("Chair", "Office")
Location("Computer", "Desk")
Location("Draw", "Desk")
Location("Knife", "Kitchen")
Location("Cheese", "Kitchen")
Location("Key", "Draw")
Monday, 2 September 13
![Page 145: Drools and BRMS 6.0 (Dublin Aug 2013)](https://reader034.fdocuments.in/reader034/viewer/2022051412/54899cd9b47959d30c8b59d6/html5/thumbnails/145.jpg)
Backward Chainingrule "go3"when String( this == "go3" ) isContainedIn("Key", "Office"; )then System.out.println( "Key in the Office" );end
ksession.insert( "go3" );ksession.fireAllRules();---go3
ksession.insert( new Location("Key", "Draw") );ksession.fireAllRules();
---Key in the Office
House
Location("Office", "House ")
Location("Kitchen", "House")
Location("Desk", "Office")
Location("Chair", "Office")
Location("Computer", "Desk")
Location("Draw", "Desk")
Location("Knife", "Kitchen")
Location("Cheese", "Kitchen")
Location("Key", "Draw")
Monday, 2 September 13
![Page 146: Drools and BRMS 6.0 (Dublin Aug 2013)](https://reader034.fdocuments.in/reader034/viewer/2022051412/54899cd9b47959d30c8b59d6/html5/thumbnails/146.jpg)
6.0 JTMS(exp)
Monday, 2 September 13
![Page 147: Drools and BRMS 6.0 (Dublin Aug 2013)](https://reader034.fdocuments.in/reader034/viewer/2022051412/54899cd9b47959d30c8b59d6/html5/thumbnails/147.jpg)
Justification-based Truth • Drools 5.x• Simple logical insertion TMS, like Clips, Jess and
others.
• Drools 6.0• Contradiction handling with JTMS
• Clean separation of exception logic• TMS now has pluggable Belief System
• Simple TMS support• JTMS now possible (exp)• Defeasible Logic (exp)
• See drools-compiler• JTMSTest for lots of example tests
Monday, 2 September 13
![Page 148: Drools and BRMS 6.0 (Dublin Aug 2013)](https://reader034.fdocuments.in/reader034/viewer/2022051412/54899cd9b47959d30c8b59d6/html5/thumbnails/148.jpg)
148
JTMSCouples the logic
What happens when the Child stops being 16?
rule "Issue Child Bus Pass"when $p : Person( age < 16 )then insert(new ChildBusPass( $p ) );endrule "Issue Adult Bus Pass"when $p : Person( age >= 16 )then insert(new AdultBusPass( $p ) );end
Monday, 2 September 13
![Page 149: Drools and BRMS 6.0 (Dublin Aug 2013)](https://reader034.fdocuments.in/reader034/viewer/2022051412/54899cd9b47959d30c8b59d6/html5/thumbnails/149.jpg)
JTMS• Bad• Monolithic• Leaky• Brittle integrity - manual maintenance
Monday, 2 September 13
![Page 150: Drools and BRMS 6.0 (Dublin Aug 2013)](https://reader034.fdocuments.in/reader034/viewer/2022051412/54899cd9b47959d30c8b59d6/html5/thumbnails/150.jpg)
150
JTMS
de-couples the logic
Maintains the truth by automatically retracting
•A rule “logically” inserts an object
•When the rule is no longer true, the object is retracted.rule "IsChild"when $p : Person( age < 16 )then logicalInsert( new IsChild( $p ) )endrule "IsAdult"when $p : Person( age >= 16 )then logicalInsert( new IsAdult( $p ) )end
Monday, 2 September 13
![Page 151: Drools and BRMS 6.0 (Dublin Aug 2013)](https://reader034.fdocuments.in/reader034/viewer/2022051412/54899cd9b47959d30c8b59d6/html5/thumbnails/151.jpg)
151
JTMS
The truth maintenance cascades
rule "Issue Child Bus Pass"when $p : Person( ) IsChild( person =$p )then logicalInsert(new ChildBusPass( $p ) );endrule "Issue Adult Bus Pass"when $p : Person() IsAdult( person =$p )then logicalInsert(new AdultBusPass( $p ) );end
Monday, 2 September 13
![Page 152: Drools and BRMS 6.0 (Dublin Aug 2013)](https://reader034.fdocuments.in/reader034/viewer/2022051412/54899cd9b47959d30c8b59d6/html5/thumbnails/152.jpg)
152
JTMSrule "Issue Child Bus Pass"when $p : Person( ) not( ChildBusPass( person == $p ) )then requestChildBusPass( $p );end The truth maintenance cascades
Monday, 2 September 13
![Page 153: Drools and BRMS 6.0 (Dublin Aug 2013)](https://reader034.fdocuments.in/reader034/viewer/2022051412/54899cd9b47959d30c8b59d6/html5/thumbnails/153.jpg)
153
JTMS• Good• De-couple knowledge responsibilities• Encapsulate knowledge• Provide semantic abstractions for those encapsulation• Integrity robustness – truth maintenance
Monday, 2 September 13
![Page 154: Drools and BRMS 6.0 (Dublin Aug 2013)](https://reader034.fdocuments.in/reader034/viewer/2022051412/54899cd9b47959d30c8b59d6/html5/thumbnails/154.jpg)
JTMS
IsChild
ChildBusPas
Rule : isChildRule
Rule : IssueBusPas
+
+
Monday, 2 September 13
![Page 155: Drools and BRMS 6.0 (Dublin Aug 2013)](https://reader034.fdocuments.in/reader034/viewer/2022051412/54899cd9b47959d30c8b59d6/html5/thumbnails/155.jpg)
JTMSrule "Do not issue to banned people"when $p : Person( ) Banned( person =$p )then logicalInsert(new ChildBusPass( $p ) , “neg” );end
Monday, 2 September 13
![Page 156: Drools and BRMS 6.0 (Dublin Aug 2013)](https://reader034.fdocuments.in/reader034/viewer/2022051412/54899cd9b47959d30c8b59d6/html5/thumbnails/156.jpg)
JTMS
IsChild
ChildBusPas
Rule : isChildRule
Rule : IssueBusPas
+
+
Rule : Do Not Issue to Banned People
-
Monday, 2 September 13
![Page 157: Drools and BRMS 6.0 (Dublin Aug 2013)](https://reader034.fdocuments.in/reader034/viewer/2022051412/54899cd9b47959d30c8b59d6/html5/thumbnails/157.jpg)
6.0 Defeasible(exp)
Monday, 2 September 13
![Page 158: Drools and BRMS 6.0 (Dublin Aug 2013)](https://reader034.fdocuments.in/reader034/viewer/2022051412/54899cd9b47959d30c8b59d6/html5/thumbnails/158.jpg)
Defeasiblerule "All Birds Fly"when $b : Bird( )then logicalInsert(new Fly( $b ) );endrule "Brocken wing"when $b : Bird( ) BrockenWing($b;)then logicalInsert(new Fly( $b ), “neg” );end
Monday, 2 September 13
![Page 159: Drools and BRMS 6.0 (Dublin Aug 2013)](https://reader034.fdocuments.in/reader034/viewer/2022051412/54899cd9b47959d30c8b59d6/html5/thumbnails/159.jpg)
Defeasiblerule "All Birds Fly" @Defeasible
when
$b : Bird( )then
logicalInsert(new Fly( $b ) );
end
rule "Brocken wing" @Defeasible
@Defeaterwhen
$b : Bird( )
BrockenWing($b;)
then
logicalInsert(new Fly( $b ), “neg” );end
rule "Birds With Rockets Fly"@Defeasible
@Defeats(“Brocken Wing”)
when $b : Bird( )
Rocket($b;)
then
logicalInsert(new Fly( $b ) );
end
Monday, 2 September 13
![Page 160: Drools and BRMS 6.0 (Dublin Aug 2013)](https://reader034.fdocuments.in/reader034/viewer/2022051412/54899cd9b47959d30c8b59d6/html5/thumbnails/160.jpg)
160
Questions?
• Dave Bowman: All right, HAL; I'll go in through the emergency airlock.
• HAL: Without your space helmet, Dave, you're going to find that rather difficult.
• Dave Bowman: HAL, I won't argue with you anymore! Open the doors!
• HAL: Dave, this conversation can serve no purpose anymore. Goodbye.
Joshya: Greetings, Professor Falken.Falken: Hello, Joshua.Joshya: A strange game. The only winning move is not to play. How about a nice game of chess?
Monday, 2 September 13