SlideShare a Scribd company logo
1 of 49
Download to read offline
Language and
System Ergonomics
http://www.slideshare.net/MarkProctor/property-reactive-ruleml-2013
Saturday, 13 July 13
Extending an Object-Oriented RETE
Network with fine-grained
Reactivity to Property Modifications
Mark Proctor, Mario Fusco and David Sottara
Saturday, 13 July 13
Agenda
The Problem
Property Reactive
The technique
Related Work
The Implementation
Benchmarking
Conclusion
Saturday, 13 July 13
The Problem
Loop Control
Saturday, 13 July 13
The problem
Reactive rule based systems are hard to
write
Saturday, 13 July 13
Too Much!!!!
Reactive rule based systems are hard to
write
Saturday, 13 July 13
Reactive Rule
rule <rule_name>
<attribute><value>
when
<conditions>
then
<actions>
end
Saturday, 13 July 13
Patterns
Person(age >= 18)
field name restriction
constraintobject type
pattern
Saturday, 13 July 13
CashFlow Ruleselect * from
AccountPeriod ap,
Account acc,
Cashflow cf
where cf.type == CREDIT and
acc.accountNo == cf.accountNo
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
acc.balance += cf.amount
Saturday, 13 July 13
Loop Problem
rule “Salary award for min 2 years service” when
e : Employee( lengthOfService > 2 )
then
modify( e ) { setSalary( e.getSalary() * 1.05 ) };
end
Saturday, 13 July 13
Loop Problem
rule “Salary award for min 2 years service” no-loop
when
e : Employee( lengthOfService > 2 )
then
modify( e ) { setSalary( e.getSalary() * 1.05 ) };
end
Saturday, 13 July 13
Loop Problem
rule “Salary award for min 2 years service” no-loop when
e : Employee( lengthOfService > 2 )
then
modify( e ) { setSalary( e.getSalary() * 1.05 ) };
end
rule “Salary award for min 8 years service” no-loop when
e : Employee( lengthOfService > 8 )
then
modify( e ) { setSalary( e.getSalary() * 1.05 ) };
end
Saturday, 13 July 13
Loop Problem
rule “Salary award for min 2 years service” when
e : Employee( lengthOfService > 2 )
not SalaryMin2Years( employee == e )
then
modify( e ) { setSalary( e.getSalary() * 1.05 ) };
insert ( new SalaryMin2Years(e) );
end
rule “Salary award for min 8 years service” when
e : Employee( lengthOfService > 8 )
not SalaryMin8Years( employee == e )
then
modify( e ) { setSalary( e.getSalary() * 1.05 ) };
insert ( new SalaryMin8Years(e) );
end
Saturday, 13 July 13
Loop Problem
rule “Year End” when
d : ChangeDate( )
e : Employee( )
then
modify( e ) { lengthOfService(
d.getYear() - e.getStartYear() ) };
end
rule “Salary award for min 8 years service” when
e : Employee( lengthOfService > 8 )
not SalaryMin8Years( employee == e )
then
modify( e ) { setSalary( e.getSalary() * 1.05 ) };
insert ( new SalaryMin8Years(e) );
end
Saturday, 13 July 13
Refraction
This term comes from the neurobiological
observation of a refractory period for a neuron,
which means that the neuron is not able to fire
immediately without first going through a
relaxation process.
In a similar way, OPS5 will not allow the same
instantiation in the conflict set from firing twice
in a row. This prevents the inference engine from
entering into an infinite loop.
Saturday, 13 July 13
W3C RIF Refraction
Refraction
When a rule instance is fired, it is removed
from the conflict set (and thus will not be
created again even its condition part
remains true), unless one of the objects in its
condition part is modified again. In the later
case, the repeatability concept determines
how the rule instance is treated
Saturday, 13 July 13
W3C RIF Refraction
Repeatability
After the execution of a rule instance, the
rule instance is removed from the conflict
set by the refraction. Later on, if one of the
objects in the condition part is modified and
if the rule evaluates to true, the
repeatability controls whether if the rule
instance can be created again.
Saturday, 13 July 13
Loop Problem (Refraction)
rule “Salary award for min 2 years service”
repeatable false when
e : Employee( lengthOfService > 2 )
then
modify( e ) { setSalary( e.getSalary() * 1.05 ) };
end
rule “Salary award for min 8 years service”
repeatable false when
e : Employee( lengthOfService > 8 )
then
modify( e ) { setSalary( e.getSalary() * 1.05 ) };
end
Saturday, 13 July 13
AAAAAAhhhhhhhhhh
Saturday, 13 July 13
Saturday, 13 July 13
Property Reactive
The Technique
Saturday, 13 July 13
Saturday, 13 July 13
Annotate Class
@PropertyReactive
public class Employee {
int salary;
int lengthOfService
// getters and setters below
}
Saturday, 13 July 13
Loop Problem Fixed
rule “Salary award for min 2 years service” when
e : Employee( lengthOfService > 2 )
then
modify( e ) { setSalary( e.getSalary() * 1.05 ) };
end
rule “Salary award for min 8 years service” when
e : Employee( lengthOfService > 8 )
then
modify( e ) { setSalary( e.getSalary() * 1.05 ) };
end
Saturday, 13 July 13
@Watch
rule “Salary award for min 2 years service” when
e : Employee( salary < 1000, lengthOfService > 2 )
@Watch( !salary )
then
modify( e ) { setSalary( e.getSalary() * 1.05 ) };
end
Saturday, 13 July 13
@Watch
rule “Record Salary Changes” when
e : Employee( ) @Watch( salary )
then
insert( new SalaryChange( e, e.getSalary() );
end
Saturday, 13 July 13
@Watch
@Watch( salary, lengthOfService, age )
@Watch( * )
@Watch( !* )
@Watch( *, !salary )
@Watch( !*, salary )
Saturday, 13 July 13
Good Form
Good Function
Saturday, 13 July 13
Property Reactive
Related Work
Saturday, 13 July 13
Related Work
CLIPS COOL
Uses Triples for properties
Property Reactivity is just a useful side effect,
not an intention.
No @Watch like capability
Jess
Slot Specific
no literature on implementation
No @Watch like capability
Saturday, 13 July 13
Related Work
YES/OPS
“New Trigger Conditions”
Simple @Watches with “!” symbol
No literature on implementation
Saturday, 13 July 13
Property Reactive
The Implementation
Saturday, 13 July 13
Class
@PropertyReactive
public class Bar {
int a; // 1
int b; // 2
int c; // 4
int d; // 8
int e; // 16
int f; // 32
// getters and setters below
}
Saturday, 13 July 13
Propagation Masks
@PropertyReactive
public class Bar {
int a; // 1
int b; // 2
int c; // 4
int d; // 8
int e; // 16
int f; // 32
}
modify ( bar ) { a = 1 }
// 000001
modify ( bar ) { a = 1, c = 1 }
// 000101
modify ( bar ) { a = 1, c = 1, f = 1 }
// 100101
Saturday, 13 July 13
Network Masks
rule R1 when
Foo( $v : v )
bar : Bar( c >= 1, a >= 1, e >= $v ) then ... end
Bar
a => 1
c => 1
e => V
b1
a1
a2
Foo
declared : 000100
inferred : 010101
declared : 000001
inferred : 010101
declared : 010000
inferred : 010101
modify ( bar ) { a = 1, c = 1 }
// 000101
modify ( bar ) { b = 1, d = 1 }
// 010010
Saturday, 13 July 13
Network Masks
rule R1 when
Foo( $v : v )
Bar( c >= 1, a >= 1, e >= $v )
rule R2 when
Foo( $v : v )
Bar( c >= 1, d >= 1, b >= $v )
Bar
a => 1
c => 1
d => 1
e => V b => V
a1
a2 a3
Network
Share
Here
declared : 001000
inferred : 011111
declared : 000001
inferred : 010101
declared : 010000
inferred : 010101
declared : 001000
inferred : 001110
declared : 000010
inferred : 001110
b1 b2
Saturday, 13 July 13
Network Masks
rule R1 when
Foo( $v : v )
Bar( c >= 1, a >= 1, e >= $v )
rule R2 when
Foo( $v : v )
Bar( c >= 1, d >= 1, b >= $v )
rule R3 when Dummy( )
Bar( c >= 1 ) @Watch( f, d, !c )
Bar
a => 1
c => 1
d => 1
e => V b => V
@watch(f, d, !c)
b1 b2 b3
a1
a2 a3
Saturday, 13 July 13
Network Masks
Bar
a => 1
c => 1
d => 1
e => V b => V
a1
a2 a3
Network
Share
Here
declared : 001000
inferred : 111111
declared : 000001
inferred : 010101
declared : 010000
inferred : 010101
declared : 001000
inferred : 001110
declared : 000010
inferred : 001110
b1 b2
@watch(f, d, !c)
b3
declared : 101000
inferred : 101000
Saturday, 13 July 13
Network Masks
Bar
a => 1
c => 1
d => 1
e => V b => V
a1
a2 a3
Network
Share
Here
declared : 001000
inferred : 111111
declared : 000001
inferred : 010101
declared : 010000
inferred : 010101
declared : 001000
inferred : 001110
declared : 000010
inferred : 001110
b1 b2
@watch(f, d, !c)
b3
declared : 101000
inferred : 101000
Saturday, 13 July 13
Property Reactive
Benchmark
Saturday, 13 July 13
Hardware
i7-2820QM@2.30GHz Quad core CPU
with HyperThreading
8Gb of RAM,
OpenJDK 1.7
Ubuntu Quetzal 64bit operating system
Saturday, 13 July 13
Classes
A
int a1, int b1
B
int b2, int b2
Saturday, 13 July 13
Benchmark #1
rule R0 when
$a: A( $a1 : a1 < 10 )
then
modify( $a ) { setA2( $a1 + 1 ) };
end
rule R0 no-loop when
$a: A( $a1 : a1 < 10 )
then
modify( $a ) { setA2( $a1 + 1 ) };
end
insert 1mill A
Initial a1, a2 set to 1
No-loop
2.275±0.080s
Property Reactive
2.265 ± 0.047s
Gain
0.44%
Saturday, 13 July 13
Benchmark #4
rule R3 when
a: A( a1 < 10 )
b: B( b1 < a.a1 )
...
x: X( x1 < w.w1, x2 > a.a2 )
then
modify( a ) { setA2( c.getC2() + 1 ) };
end
Saturday, 13 July 13
Benchmark #4 Results
rule R3 when
a: A( a1 < 10 )
b: B( b1 < a.a1 )
...
x: X( x1 < w.w1, x2 > a.a2 )
then
modify( a ) { setA2( c.getC2() + 1 ) };
end
Saturday, 13 July 13
Conclusion
Saturday, 13 July 13
Conclusion - Achieved
Enabled and Disabled at a Class level for flexibility
Complimentary and additional to RIF Refraction and
Repeatable, adding finer grained control.
@Watch provides even further declarative control.
Keeps rules clean.
Not Polluted with control logic.
Not any slower, and can give increased gains, by avoiding wasted
join evaluations.
Cost pushed to compile time, works with dynamic rules addition
and removal.
Good Form, Good Function
Saturday, 13 July 13
Conclusion - Future Work
@Watch
Can we push all or part of the @Watch higher up the alpha
network
Discriminates earlier, better performance
Further flexibility to control propagations based on rising and
falling edges
onMatch, onReMatch, onUnmatch
Saturday, 13 July 13
Zen-like Calmness
Saturday, 13 July 13

More Related Content

Similar to Property Reactive RuleML 2013

Powering code reuse with context and render props
Powering code reuse with context and render propsPowering code reuse with context and render props
Powering code reuse with context and render propsForbes Lindesay
 
2. data types, variables and operators
2. data types, variables and operators2. data types, variables and operators
2. data types, variables and operatorsPhD Research Scholar
 
Chris Mc Glothen Sql Portfolio
Chris Mc Glothen Sql PortfolioChris Mc Glothen Sql Portfolio
Chris Mc Glothen Sql Portfolioclmcglothen
 
Indeed My Jobs: A case study in ReactJS and Redux (Meetup talk March 2016)
Indeed My Jobs: A case study in ReactJS and Redux (Meetup talk March 2016)Indeed My Jobs: A case study in ReactJS and Redux (Meetup talk March 2016)
Indeed My Jobs: A case study in ReactJS and Redux (Meetup talk March 2016)indeedeng
 
Part APurposeThis laboratory provides some experience work.docx
Part APurposeThis laboratory provides some experience work.docxPart APurposeThis laboratory provides some experience work.docx
Part APurposeThis laboratory provides some experience work.docxdewhirstichabod
 
Building Robust jQuery Plugins
Building Robust jQuery PluginsBuilding Robust jQuery Plugins
Building Robust jQuery PluginsJörn Zaefferer
 
Advanced patterns in asynchronous programming
Advanced patterns in asynchronous programmingAdvanced patterns in asynchronous programming
Advanced patterns in asynchronous programmingMichael Arenzon
 
Some Functional Programming in JavaScript and Ramda.js
Some Functional Programming in JavaScript and Ramda.jsSome Functional Programming in JavaScript and Ramda.js
Some Functional Programming in JavaScript and Ramda.jsRobert Pearce
 
React, Redux, ES2015 by Max Petruck
React, Redux, ES2015   by Max PetruckReact, Redux, ES2015   by Max Petruck
React, Redux, ES2015 by Max PetruckMaksym Petruk
 
Modify the bouncing ball example demonstrated/tutorialoutlet
Modify the bouncing ball example demonstrated/tutorialoutletModify the bouncing ball example demonstrated/tutorialoutlet
Modify the bouncing ball example demonstrated/tutorialoutletCleasbyz
 
PPT1 - CA unit I 4 7-20 21-7-20
PPT1 - CA unit I 4 7-20 21-7-20  PPT1 - CA unit I 4 7-20 21-7-20
PPT1 - CA unit I 4 7-20 21-7-20 Thyagharajan K.K.
 
React, Redux, ES2015 by Max Petruck
React, Redux, ES2015 by Max PetruckReact, Redux, ES2015 by Max Petruck
React, Redux, ES2015 by Max PetruckLingvokot
 
Migrating from Struts 1 to Struts 2
Migrating from Struts 1 to Struts 2Migrating from Struts 1 to Struts 2
Migrating from Struts 1 to Struts 2Matt Raible
 

Similar to Property Reactive RuleML 2013 (20)

Powering code reuse with context and render props
Powering code reuse with context and render propsPowering code reuse with context and render props
Powering code reuse with context and render props
 
2. data types, variables and operators
2. data types, variables and operators2. data types, variables and operators
2. data types, variables and operators
 
Chris Mc Glothen Sql Portfolio
Chris Mc Glothen Sql PortfolioChris Mc Glothen Sql Portfolio
Chris Mc Glothen Sql Portfolio
 
Indeed My Jobs: A case study in ReactJS and Redux (Meetup talk March 2016)
Indeed My Jobs: A case study in ReactJS and Redux (Meetup talk March 2016)Indeed My Jobs: A case study in ReactJS and Redux (Meetup talk March 2016)
Indeed My Jobs: A case study in ReactJS and Redux (Meetup talk March 2016)
 
Part APurposeThis laboratory provides some experience work.docx
Part APurposeThis laboratory provides some experience work.docxPart APurposeThis laboratory provides some experience work.docx
Part APurposeThis laboratory provides some experience work.docx
 
Les09
Les09Les09
Les09
 
Dig1108 Lesson 3
Dig1108 Lesson 3Dig1108 Lesson 3
Dig1108 Lesson 3
 
Saving lives with rx java
Saving lives with rx javaSaving lives with rx java
Saving lives with rx java
 
Rxjs vienna
Rxjs viennaRxjs vienna
Rxjs vienna
 
Building Robust jQuery Plugins
Building Robust jQuery PluginsBuilding Robust jQuery Plugins
Building Robust jQuery Plugins
 
Advanced patterns in asynchronous programming
Advanced patterns in asynchronous programmingAdvanced patterns in asynchronous programming
Advanced patterns in asynchronous programming
 
Some Functional Programming in JavaScript and Ramda.js
Some Functional Programming in JavaScript and Ramda.jsSome Functional Programming in JavaScript and Ramda.js
Some Functional Programming in JavaScript and Ramda.js
 
React/Redux
React/ReduxReact/Redux
React/Redux
 
React, Redux, ES2015 by Max Petruck
React, Redux, ES2015   by Max PetruckReact, Redux, ES2015   by Max Petruck
React, Redux, ES2015 by Max Petruck
 
Modify the bouncing ball example demonstrated/tutorialoutlet
Modify the bouncing ball example demonstrated/tutorialoutletModify the bouncing ball example demonstrated/tutorialoutlet
Modify the bouncing ball example demonstrated/tutorialoutlet
 
PPT1 - CA unit I 4 7-20 21-7-20
PPT1 - CA unit I 4 7-20 21-7-20  PPT1 - CA unit I 4 7-20 21-7-20
PPT1 - CA unit I 4 7-20 21-7-20
 
React, Redux, ES2015 by Max Petruck
React, Redux, ES2015 by Max PetruckReact, Redux, ES2015 by Max Petruck
React, Redux, ES2015 by Max Petruck
 
Clojure And Swing
Clojure And SwingClojure And Swing
Clojure And Swing
 
Cyclejs introduction
Cyclejs introductionCyclejs introduction
Cyclejs introduction
 
Migrating from Struts 1 to Struts 2
Migrating from Struts 1 to Struts 2Migrating from Struts 1 to Struts 2
Migrating from Struts 1 to Struts 2
 

More from Mark Proctor

Rule Modularity and Execution Control
Rule Modularity and Execution ControlRule Modularity and Execution Control
Rule Modularity and Execution ControlMark Proctor
 
Drools, jBPM OptaPlanner presentation
Drools, jBPM OptaPlanner presentationDrools, jBPM OptaPlanner presentation
Drools, jBPM OptaPlanner presentationMark Proctor
 
Reducing the Cost of the Linear Growth Effect using Adaptive Rules with Unlin...
Reducing the Cost of the Linear Growth Effect using Adaptive Rules with Unlin...Reducing the Cost of the Linear Growth Effect using Adaptive Rules with Unlin...
Reducing the Cost of the Linear Growth Effect using Adaptive Rules with Unlin...Mark Proctor
 
Drools, jBPM and OptaPlanner (NYC and DC Sept 2017 - Keynote Talk Video)
Drools, jBPM and OptaPlanner (NYC and DC Sept 2017 - Keynote Talk Video)Drools, jBPM and OptaPlanner (NYC and DC Sept 2017 - Keynote Talk Video)
Drools, jBPM and OptaPlanner (NYC and DC Sept 2017 - Keynote Talk Video)Mark Proctor
 
Learning Rule Based Programming using Games @DecisionCamp 2016
Learning Rule Based Programming using Games @DecisionCamp 2016Learning Rule Based Programming using Games @DecisionCamp 2016
Learning Rule Based Programming using Games @DecisionCamp 2016Mark Proctor
 
Drools Happenings 7.0 - Devnation 2016
Drools Happenings 7.0 - Devnation 2016Drools Happenings 7.0 - Devnation 2016
Drools Happenings 7.0 - Devnation 2016Mark Proctor
 
RuleML2015 : Hybrid Relational and Graph Reasoning
RuleML2015 : Hybrid Relational and Graph Reasoning RuleML2015 : Hybrid Relational and Graph Reasoning
RuleML2015 : Hybrid Relational and Graph Reasoning Mark Proctor
 
Red Hat Summit 2015 : Drools, jBPM and UberFire Roadmaps
Red Hat Summit 2015 : Drools, jBPM and UberFire RoadmapsRed Hat Summit 2015 : Drools, jBPM and UberFire Roadmaps
Red Hat Summit 2015 : Drools, jBPM and UberFire RoadmapsMark Proctor
 
Red Hat JBoss BRMS and BPMS Workbench and Rich Client Technology
Red Hat JBoss BRMS and BPMS Workbench and Rich Client TechnologyRed Hat JBoss BRMS and BPMS Workbench and Rich Client Technology
Red Hat JBoss BRMS and BPMS Workbench and Rich Client TechnologyMark Proctor
 
Classic Games Development with Drools
Classic Games Development with DroolsClassic Games Development with Drools
Classic Games Development with DroolsMark Proctor
 
Drools 6.0 (Red Hat Summit)
Drools 6.0 (Red Hat Summit)Drools 6.0 (Red Hat Summit)
Drools 6.0 (Red Hat Summit)Mark Proctor
 
Drools and jBPM 6 Overview
Drools and jBPM 6 OverviewDrools and jBPM 6 Overview
Drools and jBPM 6 OverviewMark Proctor
 
Drools and BRMS 6.0 (Dublin Aug 2013)
Drools and BRMS 6.0 (Dublin Aug 2013)Drools and BRMS 6.0 (Dublin Aug 2013)
Drools and BRMS 6.0 (Dublin Aug 2013)Mark Proctor
 
UberFire Quick Intro and Overview (early beta Aug 2013)
UberFire Quick Intro and Overview (early beta Aug 2013)UberFire Quick Intro and Overview (early beta Aug 2013)
UberFire Quick Intro and Overview (early beta Aug 2013)Mark Proctor
 
What's new in Drools 6 - London JBUG 2013
What's new in Drools 6 - London JBUG 2013What's new in Drools 6 - London JBUG 2013
What's new in Drools 6 - London JBUG 2013Mark Proctor
 
Reactive Transitive Closures with Drools (Backward Chaining)
Reactive Transitive Closures with Drools (Backward Chaining)Reactive Transitive Closures with Drools (Backward Chaining)
Reactive Transitive Closures with Drools (Backward Chaining)Mark Proctor
 
Drools 6.0 (JudCon 2013)
Drools 6.0 (JudCon 2013)Drools 6.0 (JudCon 2013)
Drools 6.0 (JudCon 2013)Mark Proctor
 
Drools 6.0 (CamelOne 2013)
Drools 6.0 (CamelOne 2013)Drools 6.0 (CamelOne 2013)
Drools 6.0 (CamelOne 2013)Mark Proctor
 
UberFire Quick Intro and Overview (early beta Jul 2013)
UberFire Quick Intro and Overview (early beta Jul 2013)UberFire Quick Intro and Overview (early beta Jul 2013)
UberFire Quick Intro and Overview (early beta Jul 2013)Mark Proctor
 
UberFire (JudCon 2013)
UberFire (JudCon 2013)UberFire (JudCon 2013)
UberFire (JudCon 2013)Mark Proctor
 

More from Mark Proctor (20)

Rule Modularity and Execution Control
Rule Modularity and Execution ControlRule Modularity and Execution Control
Rule Modularity and Execution Control
 
Drools, jBPM OptaPlanner presentation
Drools, jBPM OptaPlanner presentationDrools, jBPM OptaPlanner presentation
Drools, jBPM OptaPlanner presentation
 
Reducing the Cost of the Linear Growth Effect using Adaptive Rules with Unlin...
Reducing the Cost of the Linear Growth Effect using Adaptive Rules with Unlin...Reducing the Cost of the Linear Growth Effect using Adaptive Rules with Unlin...
Reducing the Cost of the Linear Growth Effect using Adaptive Rules with Unlin...
 
Drools, jBPM and OptaPlanner (NYC and DC Sept 2017 - Keynote Talk Video)
Drools, jBPM and OptaPlanner (NYC and DC Sept 2017 - Keynote Talk Video)Drools, jBPM and OptaPlanner (NYC and DC Sept 2017 - Keynote Talk Video)
Drools, jBPM and OptaPlanner (NYC and DC Sept 2017 - Keynote Talk Video)
 
Learning Rule Based Programming using Games @DecisionCamp 2016
Learning Rule Based Programming using Games @DecisionCamp 2016Learning Rule Based Programming using Games @DecisionCamp 2016
Learning Rule Based Programming using Games @DecisionCamp 2016
 
Drools Happenings 7.0 - Devnation 2016
Drools Happenings 7.0 - Devnation 2016Drools Happenings 7.0 - Devnation 2016
Drools Happenings 7.0 - Devnation 2016
 
RuleML2015 : Hybrid Relational and Graph Reasoning
RuleML2015 : Hybrid Relational and Graph Reasoning RuleML2015 : Hybrid Relational and Graph Reasoning
RuleML2015 : Hybrid Relational and Graph Reasoning
 
Red Hat Summit 2015 : Drools, jBPM and UberFire Roadmaps
Red Hat Summit 2015 : Drools, jBPM and UberFire RoadmapsRed Hat Summit 2015 : Drools, jBPM and UberFire Roadmaps
Red Hat Summit 2015 : Drools, jBPM and UberFire Roadmaps
 
Red Hat JBoss BRMS and BPMS Workbench and Rich Client Technology
Red Hat JBoss BRMS and BPMS Workbench and Rich Client TechnologyRed Hat JBoss BRMS and BPMS Workbench and Rich Client Technology
Red Hat JBoss BRMS and BPMS Workbench and Rich Client Technology
 
Classic Games Development with Drools
Classic Games Development with DroolsClassic Games Development with Drools
Classic Games Development with Drools
 
Drools 6.0 (Red Hat Summit)
Drools 6.0 (Red Hat Summit)Drools 6.0 (Red Hat Summit)
Drools 6.0 (Red Hat Summit)
 
Drools and jBPM 6 Overview
Drools and jBPM 6 OverviewDrools and jBPM 6 Overview
Drools and jBPM 6 Overview
 
Drools and BRMS 6.0 (Dublin Aug 2013)
Drools and BRMS 6.0 (Dublin Aug 2013)Drools and BRMS 6.0 (Dublin Aug 2013)
Drools and BRMS 6.0 (Dublin Aug 2013)
 
UberFire Quick Intro and Overview (early beta Aug 2013)
UberFire Quick Intro and Overview (early beta Aug 2013)UberFire Quick Intro and Overview (early beta Aug 2013)
UberFire Quick Intro and Overview (early beta Aug 2013)
 
What's new in Drools 6 - London JBUG 2013
What's new in Drools 6 - London JBUG 2013What's new in Drools 6 - London JBUG 2013
What's new in Drools 6 - London JBUG 2013
 
Reactive Transitive Closures with Drools (Backward Chaining)
Reactive Transitive Closures with Drools (Backward Chaining)Reactive Transitive Closures with Drools (Backward Chaining)
Reactive Transitive Closures with Drools (Backward Chaining)
 
Drools 6.0 (JudCon 2013)
Drools 6.0 (JudCon 2013)Drools 6.0 (JudCon 2013)
Drools 6.0 (JudCon 2013)
 
Drools 6.0 (CamelOne 2013)
Drools 6.0 (CamelOne 2013)Drools 6.0 (CamelOne 2013)
Drools 6.0 (CamelOne 2013)
 
UberFire Quick Intro and Overview (early beta Jul 2013)
UberFire Quick Intro and Overview (early beta Jul 2013)UberFire Quick Intro and Overview (early beta Jul 2013)
UberFire Quick Intro and Overview (early beta Jul 2013)
 
UberFire (JudCon 2013)
UberFire (JudCon 2013)UberFire (JudCon 2013)
UberFire (JudCon 2013)
 

Recently uploaded

Best VIP Call Girls Noida Sector 40 Call Me: 8448380779
Best VIP Call Girls Noida Sector 40 Call Me: 8448380779Best VIP Call Girls Noida Sector 40 Call Me: 8448380779
Best VIP Call Girls Noida Sector 40 Call Me: 8448380779Delhi Call girls
 
Mysore Call Girls 8617370543 WhatsApp Number 24x7 Best Services
Mysore Call Girls 8617370543 WhatsApp Number 24x7 Best ServicesMysore Call Girls 8617370543 WhatsApp Number 24x7 Best Services
Mysore Call Girls 8617370543 WhatsApp Number 24x7 Best ServicesDipal Arora
 
9599632723 Top Call Girls in Delhi at your Door Step Available 24x7 Delhi
9599632723 Top Call Girls in Delhi at your Door Step Available 24x7 Delhi9599632723 Top Call Girls in Delhi at your Door Step Available 24x7 Delhi
9599632723 Top Call Girls in Delhi at your Door Step Available 24x7 DelhiCall Girls in Delhi
 
Call Girls In DLf Gurgaon ➥99902@11544 ( Best price)100% Genuine Escort In 24...
Call Girls In DLf Gurgaon ➥99902@11544 ( Best price)100% Genuine Escort In 24...Call Girls In DLf Gurgaon ➥99902@11544 ( Best price)100% Genuine Escort In 24...
Call Girls In DLf Gurgaon ➥99902@11544 ( Best price)100% Genuine Escort In 24...lizamodels9
 
7.pdf This presentation captures many uses and the significance of the number...
7.pdf This presentation captures many uses and the significance of the number...7.pdf This presentation captures many uses and the significance of the number...
7.pdf This presentation captures many uses and the significance of the number...Paul Menig
 
Russian Faridabad Call Girls(Badarpur) : ☎ 8168257667, @4999
Russian Faridabad Call Girls(Badarpur) : ☎ 8168257667, @4999Russian Faridabad Call Girls(Badarpur) : ☎ 8168257667, @4999
Russian Faridabad Call Girls(Badarpur) : ☎ 8168257667, @4999Tina Ji
 
Progress Report - Oracle Database Analyst Summit
Progress  Report - Oracle Database Analyst SummitProgress  Report - Oracle Database Analyst Summit
Progress Report - Oracle Database Analyst SummitHolger Mueller
 
KYC-Verified Accounts: Helping Companies Handle Challenging Regulatory Enviro...
KYC-Verified Accounts: Helping Companies Handle Challenging Regulatory Enviro...KYC-Verified Accounts: Helping Companies Handle Challenging Regulatory Enviro...
KYC-Verified Accounts: Helping Companies Handle Challenging Regulatory Enviro...Any kyc Account
 
Monthly Social Media Update April 2024 pptx.pptx
Monthly Social Media Update April 2024 pptx.pptxMonthly Social Media Update April 2024 pptx.pptx
Monthly Social Media Update April 2024 pptx.pptxAndy Lambert
 
Boost the utilization of your HCL environment by reevaluating use cases and f...
Boost the utilization of your HCL environment by reevaluating use cases and f...Boost the utilization of your HCL environment by reevaluating use cases and f...
Boost the utilization of your HCL environment by reevaluating use cases and f...Roland Driesen
 
It will be International Nurses' Day on 12 May
It will be International Nurses' Day on 12 MayIt will be International Nurses' Day on 12 May
It will be International Nurses' Day on 12 MayNZSG
 
VIP Call Girl Jamshedpur Aashi 8250192130 Independent Escort Service Jamshedpur
VIP Call Girl Jamshedpur Aashi 8250192130 Independent Escort Service JamshedpurVIP Call Girl Jamshedpur Aashi 8250192130 Independent Escort Service Jamshedpur
VIP Call Girl Jamshedpur Aashi 8250192130 Independent Escort Service JamshedpurSuhani Kapoor
 
M.C Lodges -- Guest House in Jhang.
M.C Lodges --  Guest House in Jhang.M.C Lodges --  Guest House in Jhang.
M.C Lodges -- Guest House in Jhang.Aaiza Hassan
 
BEST ✨ Call Girls In Indirapuram Ghaziabad ✔️ 9871031762 ✔️ Escorts Service...
BEST ✨ Call Girls In  Indirapuram Ghaziabad  ✔️ 9871031762 ✔️ Escorts Service...BEST ✨ Call Girls In  Indirapuram Ghaziabad  ✔️ 9871031762 ✔️ Escorts Service...
BEST ✨ Call Girls In Indirapuram Ghaziabad ✔️ 9871031762 ✔️ Escorts Service...noida100girls
 
MONA 98765-12871 CALL GIRLS IN LUDHIANA LUDHIANA CALL GIRL
MONA 98765-12871 CALL GIRLS IN LUDHIANA LUDHIANA CALL GIRLMONA 98765-12871 CALL GIRLS IN LUDHIANA LUDHIANA CALL GIRL
MONA 98765-12871 CALL GIRLS IN LUDHIANA LUDHIANA CALL GIRLSeo
 
Call Girls in Gomti Nagar - 7388211116 - With room Service
Call Girls in Gomti Nagar - 7388211116  - With room ServiceCall Girls in Gomti Nagar - 7388211116  - With room Service
Call Girls in Gomti Nagar - 7388211116 - With room Servicediscovermytutordmt
 
Yaroslav Rozhankivskyy: Три складові і три передумови максимальної продуктивн...
Yaroslav Rozhankivskyy: Три складові і три передумови максимальної продуктивн...Yaroslav Rozhankivskyy: Три складові і три передумови максимальної продуктивн...
Yaroslav Rozhankivskyy: Три складові і три передумови максимальної продуктивн...Lviv Startup Club
 
Pharma Works Profile of Karan Communications
Pharma Works Profile of Karan CommunicationsPharma Works Profile of Karan Communications
Pharma Works Profile of Karan Communicationskarancommunications
 
Cash Payment 9602870969 Escort Service in Udaipur Call Girls
Cash Payment 9602870969 Escort Service in Udaipur Call GirlsCash Payment 9602870969 Escort Service in Udaipur Call Girls
Cash Payment 9602870969 Escort Service in Udaipur Call GirlsApsara Of India
 

Recently uploaded (20)

Best VIP Call Girls Noida Sector 40 Call Me: 8448380779
Best VIP Call Girls Noida Sector 40 Call Me: 8448380779Best VIP Call Girls Noida Sector 40 Call Me: 8448380779
Best VIP Call Girls Noida Sector 40 Call Me: 8448380779
 
Mysore Call Girls 8617370543 WhatsApp Number 24x7 Best Services
Mysore Call Girls 8617370543 WhatsApp Number 24x7 Best ServicesMysore Call Girls 8617370543 WhatsApp Number 24x7 Best Services
Mysore Call Girls 8617370543 WhatsApp Number 24x7 Best Services
 
9599632723 Top Call Girls in Delhi at your Door Step Available 24x7 Delhi
9599632723 Top Call Girls in Delhi at your Door Step Available 24x7 Delhi9599632723 Top Call Girls in Delhi at your Door Step Available 24x7 Delhi
9599632723 Top Call Girls in Delhi at your Door Step Available 24x7 Delhi
 
Call Girls In DLf Gurgaon ➥99902@11544 ( Best price)100% Genuine Escort In 24...
Call Girls In DLf Gurgaon ➥99902@11544 ( Best price)100% Genuine Escort In 24...Call Girls In DLf Gurgaon ➥99902@11544 ( Best price)100% Genuine Escort In 24...
Call Girls In DLf Gurgaon ➥99902@11544 ( Best price)100% Genuine Escort In 24...
 
7.pdf This presentation captures many uses and the significance of the number...
7.pdf This presentation captures many uses and the significance of the number...7.pdf This presentation captures many uses and the significance of the number...
7.pdf This presentation captures many uses and the significance of the number...
 
VVVIP Call Girls In Greater Kailash ➡️ Delhi ➡️ 9999965857 🚀 No Advance 24HRS...
VVVIP Call Girls In Greater Kailash ➡️ Delhi ➡️ 9999965857 🚀 No Advance 24HRS...VVVIP Call Girls In Greater Kailash ➡️ Delhi ➡️ 9999965857 🚀 No Advance 24HRS...
VVVIP Call Girls In Greater Kailash ➡️ Delhi ➡️ 9999965857 🚀 No Advance 24HRS...
 
Russian Faridabad Call Girls(Badarpur) : ☎ 8168257667, @4999
Russian Faridabad Call Girls(Badarpur) : ☎ 8168257667, @4999Russian Faridabad Call Girls(Badarpur) : ☎ 8168257667, @4999
Russian Faridabad Call Girls(Badarpur) : ☎ 8168257667, @4999
 
Progress Report - Oracle Database Analyst Summit
Progress  Report - Oracle Database Analyst SummitProgress  Report - Oracle Database Analyst Summit
Progress Report - Oracle Database Analyst Summit
 
KYC-Verified Accounts: Helping Companies Handle Challenging Regulatory Enviro...
KYC-Verified Accounts: Helping Companies Handle Challenging Regulatory Enviro...KYC-Verified Accounts: Helping Companies Handle Challenging Regulatory Enviro...
KYC-Verified Accounts: Helping Companies Handle Challenging Regulatory Enviro...
 
Monthly Social Media Update April 2024 pptx.pptx
Monthly Social Media Update April 2024 pptx.pptxMonthly Social Media Update April 2024 pptx.pptx
Monthly Social Media Update April 2024 pptx.pptx
 
Boost the utilization of your HCL environment by reevaluating use cases and f...
Boost the utilization of your HCL environment by reevaluating use cases and f...Boost the utilization of your HCL environment by reevaluating use cases and f...
Boost the utilization of your HCL environment by reevaluating use cases and f...
 
It will be International Nurses' Day on 12 May
It will be International Nurses' Day on 12 MayIt will be International Nurses' Day on 12 May
It will be International Nurses' Day on 12 May
 
VIP Call Girl Jamshedpur Aashi 8250192130 Independent Escort Service Jamshedpur
VIP Call Girl Jamshedpur Aashi 8250192130 Independent Escort Service JamshedpurVIP Call Girl Jamshedpur Aashi 8250192130 Independent Escort Service Jamshedpur
VIP Call Girl Jamshedpur Aashi 8250192130 Independent Escort Service Jamshedpur
 
M.C Lodges -- Guest House in Jhang.
M.C Lodges --  Guest House in Jhang.M.C Lodges --  Guest House in Jhang.
M.C Lodges -- Guest House in Jhang.
 
BEST ✨ Call Girls In Indirapuram Ghaziabad ✔️ 9871031762 ✔️ Escorts Service...
BEST ✨ Call Girls In  Indirapuram Ghaziabad  ✔️ 9871031762 ✔️ Escorts Service...BEST ✨ Call Girls In  Indirapuram Ghaziabad  ✔️ 9871031762 ✔️ Escorts Service...
BEST ✨ Call Girls In Indirapuram Ghaziabad ✔️ 9871031762 ✔️ Escorts Service...
 
MONA 98765-12871 CALL GIRLS IN LUDHIANA LUDHIANA CALL GIRL
MONA 98765-12871 CALL GIRLS IN LUDHIANA LUDHIANA CALL GIRLMONA 98765-12871 CALL GIRLS IN LUDHIANA LUDHIANA CALL GIRL
MONA 98765-12871 CALL GIRLS IN LUDHIANA LUDHIANA CALL GIRL
 
Call Girls in Gomti Nagar - 7388211116 - With room Service
Call Girls in Gomti Nagar - 7388211116  - With room ServiceCall Girls in Gomti Nagar - 7388211116  - With room Service
Call Girls in Gomti Nagar - 7388211116 - With room Service
 
Yaroslav Rozhankivskyy: Три складові і три передумови максимальної продуктивн...
Yaroslav Rozhankivskyy: Три складові і три передумови максимальної продуктивн...Yaroslav Rozhankivskyy: Три складові і три передумови максимальної продуктивн...
Yaroslav Rozhankivskyy: Три складові і три передумови максимальної продуктивн...
 
Pharma Works Profile of Karan Communications
Pharma Works Profile of Karan CommunicationsPharma Works Profile of Karan Communications
Pharma Works Profile of Karan Communications
 
Cash Payment 9602870969 Escort Service in Udaipur Call Girls
Cash Payment 9602870969 Escort Service in Udaipur Call GirlsCash Payment 9602870969 Escort Service in Udaipur Call Girls
Cash Payment 9602870969 Escort Service in Udaipur Call Girls
 

Property Reactive RuleML 2013

  • 2. Extending an Object-Oriented RETE Network with fine-grained Reactivity to Property Modifications Mark Proctor, Mario Fusco and David Sottara Saturday, 13 July 13
  • 3. Agenda The Problem Property Reactive The technique Related Work The Implementation Benchmarking Conclusion Saturday, 13 July 13
  • 5. The problem Reactive rule based systems are hard to write Saturday, 13 July 13
  • 6. Too Much!!!! Reactive rule based systems are hard to write Saturday, 13 July 13
  • 8. Patterns Person(age >= 18) field name restriction constraintobject type pattern Saturday, 13 July 13
  • 9. CashFlow Ruleselect * from AccountPeriod ap, Account acc, Cashflow cf where cf.type == CREDIT and acc.accountNo == cf.accountNo 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 acc.balance += cf.amount Saturday, 13 July 13
  • 10. Loop Problem rule “Salary award for min 2 years service” when e : Employee( lengthOfService > 2 ) then modify( e ) { setSalary( e.getSalary() * 1.05 ) }; end Saturday, 13 July 13
  • 11. Loop Problem rule “Salary award for min 2 years service” no-loop when e : Employee( lengthOfService > 2 ) then modify( e ) { setSalary( e.getSalary() * 1.05 ) }; end Saturday, 13 July 13
  • 12. Loop Problem rule “Salary award for min 2 years service” no-loop when e : Employee( lengthOfService > 2 ) then modify( e ) { setSalary( e.getSalary() * 1.05 ) }; end rule “Salary award for min 8 years service” no-loop when e : Employee( lengthOfService > 8 ) then modify( e ) { setSalary( e.getSalary() * 1.05 ) }; end Saturday, 13 July 13
  • 13. Loop Problem rule “Salary award for min 2 years service” when e : Employee( lengthOfService > 2 ) not SalaryMin2Years( employee == e ) then modify( e ) { setSalary( e.getSalary() * 1.05 ) }; insert ( new SalaryMin2Years(e) ); end rule “Salary award for min 8 years service” when e : Employee( lengthOfService > 8 ) not SalaryMin8Years( employee == e ) then modify( e ) { setSalary( e.getSalary() * 1.05 ) }; insert ( new SalaryMin8Years(e) ); end Saturday, 13 July 13
  • 14. Loop Problem rule “Year End” when d : ChangeDate( ) e : Employee( ) then modify( e ) { lengthOfService( d.getYear() - e.getStartYear() ) }; end rule “Salary award for min 8 years service” when e : Employee( lengthOfService > 8 ) not SalaryMin8Years( employee == e ) then modify( e ) { setSalary( e.getSalary() * 1.05 ) }; insert ( new SalaryMin8Years(e) ); end Saturday, 13 July 13
  • 15. Refraction This term comes from the neurobiological observation of a refractory period for a neuron, which means that the neuron is not able to fire immediately without first going through a relaxation process. In a similar way, OPS5 will not allow the same instantiation in the conflict set from firing twice in a row. This prevents the inference engine from entering into an infinite loop. Saturday, 13 July 13
  • 16. W3C RIF Refraction Refraction When a rule instance is fired, it is removed from the conflict set (and thus will not be created again even its condition part remains true), unless one of the objects in its condition part is modified again. In the later case, the repeatability concept determines how the rule instance is treated Saturday, 13 July 13
  • 17. W3C RIF Refraction Repeatability After the execution of a rule instance, the rule instance is removed from the conflict set by the refraction. Later on, if one of the objects in the condition part is modified and if the rule evaluates to true, the repeatability controls whether if the rule instance can be created again. Saturday, 13 July 13
  • 18. Loop Problem (Refraction) rule “Salary award for min 2 years service” repeatable false when e : Employee( lengthOfService > 2 ) then modify( e ) { setSalary( e.getSalary() * 1.05 ) }; end rule “Salary award for min 8 years service” repeatable false when e : Employee( lengthOfService > 8 ) then modify( e ) { setSalary( e.getSalary() * 1.05 ) }; end Saturday, 13 July 13
  • 23. Annotate Class @PropertyReactive public class Employee { int salary; int lengthOfService // getters and setters below } Saturday, 13 July 13
  • 24. Loop Problem Fixed rule “Salary award for min 2 years service” when e : Employee( lengthOfService > 2 ) then modify( e ) { setSalary( e.getSalary() * 1.05 ) }; end rule “Salary award for min 8 years service” when e : Employee( lengthOfService > 8 ) then modify( e ) { setSalary( e.getSalary() * 1.05 ) }; end Saturday, 13 July 13
  • 25. @Watch rule “Salary award for min 2 years service” when e : Employee( salary < 1000, lengthOfService > 2 ) @Watch( !salary ) then modify( e ) { setSalary( e.getSalary() * 1.05 ) }; end Saturday, 13 July 13
  • 26. @Watch rule “Record Salary Changes” when e : Employee( ) @Watch( salary ) then insert( new SalaryChange( e, e.getSalary() ); end Saturday, 13 July 13
  • 27. @Watch @Watch( salary, lengthOfService, age ) @Watch( * ) @Watch( !* ) @Watch( *, !salary ) @Watch( !*, salary ) Saturday, 13 July 13
  • 30. Related Work CLIPS COOL Uses Triples for properties Property Reactivity is just a useful side effect, not an intention. No @Watch like capability Jess Slot Specific no literature on implementation No @Watch like capability Saturday, 13 July 13
  • 31. Related Work YES/OPS “New Trigger Conditions” Simple @Watches with “!” symbol No literature on implementation Saturday, 13 July 13
  • 33. Class @PropertyReactive public class Bar { int a; // 1 int b; // 2 int c; // 4 int d; // 8 int e; // 16 int f; // 32 // getters and setters below } Saturday, 13 July 13
  • 34. Propagation Masks @PropertyReactive public class Bar { int a; // 1 int b; // 2 int c; // 4 int d; // 8 int e; // 16 int f; // 32 } modify ( bar ) { a = 1 } // 000001 modify ( bar ) { a = 1, c = 1 } // 000101 modify ( bar ) { a = 1, c = 1, f = 1 } // 100101 Saturday, 13 July 13
  • 35. Network Masks rule R1 when Foo( $v : v ) bar : Bar( c >= 1, a >= 1, e >= $v ) then ... end Bar a => 1 c => 1 e => V b1 a1 a2 Foo declared : 000100 inferred : 010101 declared : 000001 inferred : 010101 declared : 010000 inferred : 010101 modify ( bar ) { a = 1, c = 1 } // 000101 modify ( bar ) { b = 1, d = 1 } // 010010 Saturday, 13 July 13
  • 36. Network Masks rule R1 when Foo( $v : v ) Bar( c >= 1, a >= 1, e >= $v ) rule R2 when Foo( $v : v ) Bar( c >= 1, d >= 1, b >= $v ) Bar a => 1 c => 1 d => 1 e => V b => V a1 a2 a3 Network Share Here declared : 001000 inferred : 011111 declared : 000001 inferred : 010101 declared : 010000 inferred : 010101 declared : 001000 inferred : 001110 declared : 000010 inferred : 001110 b1 b2 Saturday, 13 July 13
  • 37. Network Masks rule R1 when Foo( $v : v ) Bar( c >= 1, a >= 1, e >= $v ) rule R2 when Foo( $v : v ) Bar( c >= 1, d >= 1, b >= $v ) rule R3 when Dummy( ) Bar( c >= 1 ) @Watch( f, d, !c ) Bar a => 1 c => 1 d => 1 e => V b => V @watch(f, d, !c) b1 b2 b3 a1 a2 a3 Saturday, 13 July 13
  • 38. Network Masks Bar a => 1 c => 1 d => 1 e => V b => V a1 a2 a3 Network Share Here declared : 001000 inferred : 111111 declared : 000001 inferred : 010101 declared : 010000 inferred : 010101 declared : 001000 inferred : 001110 declared : 000010 inferred : 001110 b1 b2 @watch(f, d, !c) b3 declared : 101000 inferred : 101000 Saturday, 13 July 13
  • 39. Network Masks Bar a => 1 c => 1 d => 1 e => V b => V a1 a2 a3 Network Share Here declared : 001000 inferred : 111111 declared : 000001 inferred : 010101 declared : 010000 inferred : 010101 declared : 001000 inferred : 001110 declared : 000010 inferred : 001110 b1 b2 @watch(f, d, !c) b3 declared : 101000 inferred : 101000 Saturday, 13 July 13
  • 41. Hardware i7-2820QM@2.30GHz Quad core CPU with HyperThreading 8Gb of RAM, OpenJDK 1.7 Ubuntu Quetzal 64bit operating system Saturday, 13 July 13
  • 42. Classes A int a1, int b1 B int b2, int b2 Saturday, 13 July 13
  • 43. Benchmark #1 rule R0 when $a: A( $a1 : a1 < 10 ) then modify( $a ) { setA2( $a1 + 1 ) }; end rule R0 no-loop when $a: A( $a1 : a1 < 10 ) then modify( $a ) { setA2( $a1 + 1 ) }; end insert 1mill A Initial a1, a2 set to 1 No-loop 2.275±0.080s Property Reactive 2.265 ± 0.047s Gain 0.44% Saturday, 13 July 13
  • 44. Benchmark #4 rule R3 when a: A( a1 < 10 ) b: B( b1 < a.a1 ) ... x: X( x1 < w.w1, x2 > a.a2 ) then modify( a ) { setA2( c.getC2() + 1 ) }; end Saturday, 13 July 13
  • 45. Benchmark #4 Results rule R3 when a: A( a1 < 10 ) b: B( b1 < a.a1 ) ... x: X( x1 < w.w1, x2 > a.a2 ) then modify( a ) { setA2( c.getC2() + 1 ) }; end Saturday, 13 July 13
  • 47. Conclusion - Achieved Enabled and Disabled at a Class level for flexibility Complimentary and additional to RIF Refraction and Repeatable, adding finer grained control. @Watch provides even further declarative control. Keeps rules clean. Not Polluted with control logic. Not any slower, and can give increased gains, by avoiding wasted join evaluations. Cost pushed to compile time, works with dynamic rules addition and removal. Good Form, Good Function Saturday, 13 July 13
  • 48. Conclusion - Future Work @Watch Can we push all or part of the @Watch higher up the alpha network Discriminates earlier, better performance Further flexibility to control propagations based on rising and falling edges onMatch, onReMatch, onUnmatch Saturday, 13 July 13