Artezio LLC Address: 3G Gubkina Str., suite 504, Moscow, Russia, 119333 Phone: +7 (495) 981-0531...
-
Upload
shannon-garrison -
Category
Documents
-
view
217 -
download
1
Transcript of Artezio LLC Address: 3G Gubkina Str., suite 504, Moscow, Russia, 119333 Phone: +7 (495) 981-0531...
Artezio LLC Address: 3G Gubkina Str., suite 504, Moscow, Russia, 119333 Phone: +7 (495) 981-0531 Fax: +7 (495) 232-2683 Email: [email protected]
www.artezio.comThe art of technology
Droolsand
Drools 5 Fusion
Artezio LLC Address: 3G Gubkina Str., suite 504, Moscow, Russia, 119333 Phone: +7 (495) 981-0531 Fax: +7 (495) 232-2683 Email: [email protected]
2
Drools is an open source rules engine, which lets you express business logic rules in a
declarative way using non-XML native language
Artezio LLC Address: 3G Gubkina Str., suite 504, Moscow, Russia, 119333 Phone: +7 (495) 981-0531 Fax: +7 (495) 232-2683 Email: [email protected]
3
Agenda
• Drools Basics- Advantages of Drools- DRL file- Executing rules- Conflicts resolution- Updating knowledge in rules engine
• Drools Fusion (CEP)- What is Complex Event Processing- Drools Fusion vision- Features and examples
Artezio LLC Address: 3G Gubkina Str., suite 504, Moscow, Russia, 119333 Phone: +7 (495) 981-0531 Fax: +7 (495) 232-2683 Email: [email protected]
4
Advantages of Drools
• Separates application from conditions controlling the flow- Rules can be modified by different groups- No need to recompile or redeploy- All rules are in one place
• Readable native non-XML language- Easy to learn- Eclipse plug-in helps to visualize rules
• Native BRMS implementation
• Complex event processing engine
• Rete algorithm
Artezio LLC Address: 3G Gubkina Str., suite 504, Moscow, Russia, 119333 Phone: +7 (495) 981-0531 Fax: +7 (495) 232-2683 Email: [email protected]
5
DRL file
rule "User has no picture“ dialect=“java”when
follower : Follower(hasPicture == false) then
follower.setRanking(follower.getRanking() - 30.0);end
rule "Extract and classify followers“ dialect=“java”when twitter : Twitter() then for (User user : twitter.getFollowers()) {
Follower follower = new Follower(); follower.setUser(user); follower.setFollows(twitter); follower.setClassification(TwitterUserType.getType(TwitterUtils.getTwitterInfluenceRatio(user))); follower.setHasPicture(TwitterUtils.hasSetProfileImage(user)); insert(follower); } end
Artezio LLC Address: 3G Gubkina Str., suite 504, Moscow, Russia, 119333 Phone: +7 (495) 981-0531 Fax: +7 (495) 232-2683 Email: [email protected]
6
Executing rules
KnowledgeBuilder knowledgeBuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
knowledgeBuilder.add(drlFileAsResource, ResourceType.DRL);
Collection pkgs = knowledgeBuilder.getKnowledgePackages(); knowledgeBase = KnowledgeBaseFactory.newKnowledgeBase(); knowledgeBase.addKnowledgePackages(pkgs);
• First, we need to create rules knowledge base
• It parses and compiles DRL files
• It extracts named packages of rules for KnowledgeBaseFactory
Artezio LLC Address: 3G Gubkina Str., suite 504, Moscow, Russia, 119333 Phone: +7 (495) 981-0531 Fax: +7 (495) 232-2683 Email: [email protected]
7
Executing rules
• KnowledgeSession provides the way of exposing objects to be ruled
StatefulKnowledgeSession knowledgeSession = knowledgeBase.newStatefulKnowledgeSession();
Twitter twitter = new Twitter(twitterUser, twitterPassword);knowledgeSession.insert(twitter);
• Fire rules
knowledgeSession.fireAllRules();
Artezio LLC Address: 3G Gubkina Str., suite 504, Moscow, Russia, 119333 Phone: +7 (495) 981-0531 Fax: +7 (495) 232-2683 Email: [email protected]
www.artezio.comThe art of technology
Questions…(to be continued)
Artezio LLC Address: 3G Gubkina Str., suite 504, Moscow, Russia, 119333 Phone: +7 (495) 981-0531 Fax: +7 (495) 232-2683 Email: [email protected]
9
Conflicts resolution
• Often we need non-trivial flow of rules
- Validate data in knowledge base
- Prepare base for future rules flow
- Cover rules from execution
It is solved by using salience parameter…
Artezio LLC Address: 3G Gubkina Str., suite 504, Moscow, Russia, 119333 Phone: +7 (495) 981-0531 Fax: +7 (495) 232-2683 Email: [email protected]
10
Conflicts resolution (example)
package demo;
import demo.Machine; import demo.Test; import demo.TestDAO; import java.util.Calendar; import java.sql.Timestamp;
global TestDAO testDAO;
• DRL file first block
function void setTestsDueTime(Machine machine, int numberOfDays) { setDueTime(machine, Calendar.DATE, numberOfDays);
}function void setDueTime(Machine machine, int field, int amount) {
Calendar calendar = Calendar.getInstance(); …machine.setTestsDueTime(new Timestamp(calendar.getTimeInMillis()));
}
• Defining functions in DRL file
Artezio LLC Address: 3G Gubkina Str., suite 504, Moscow, Russia, 119333 Phone: +7 (495) 981-0531 Fax: +7 (495) 232-2683 Email: [email protected]
11
Conflicts resolution (example)
rule "Tests for type2, DNS server machine" salience 100 when
machine : Machine( type == "Type2", functions contains "DNS Server") then
Test test5 = testDAO.findByKey(Test.TEST5); machine.getTests().add(test5); insert( test5 );
end
rule "Due date for Test 5" salience 50 when
machine : Machine() Test( id == Test.TEST5 )
then setTestsDueTime(machine, 14);
end
Artezio LLC Address: 3G Gubkina Str., suite 504, Moscow, Russia, 119333 Phone: +7 (495) 981-0531 Fax: +7 (495) 232-2683 Email: [email protected]
12
Conflicts resolution
• Rules with higher salience will be fired first- preparing objects for future rules execution- filtering some instances from ruling
• Dynamic saliencerule "high value fires first“salience (person.bonus * item.price)when
person : Person()item : Item()
then...
end
Artezio LLC Address: 3G Gubkina Str., suite 504, Moscow, Russia, 119333 Phone: +7 (495) 981-0531 Fax: +7 (495) 232-2683 Email: [email protected]
13
Updating knowledge in rules engine
• Knowledge base can be updated inside rule’s body- insert()
– Inserted object will be used by rules engines inside current session
- update()– Updates existing in working memory object for the rest of
rules- delete()
– Removed object will not be ruled on current execution
Artezio LLC Address: 3G Gubkina Str., suite 504, Moscow, Russia, 119333 Phone: +7 (495) 981-0531 Fax: +7 (495) 232-2683 Email: [email protected]
14
rule "Tests for type2, DNS server machine" salience 100 when
machine : Machine( type == "Type2", functions contains "DNS Server") then
Test test5 = testDAO.findByKey(Test.TEST5); machine.getTests().add(test5); update( machine );
end
rule "Due date for Test 5" salience 50 when
machine : Machine( tests contains (testDAO.findByKey(Test.TEST5)) ) then
setTestsDueTime(machine, 14); end
Updating knowledge in rules engine
Artezio LLC Address: 3G Gubkina Str., suite 504, Moscow, Russia, 119333 Phone: +7 (495) 981-0531 Fax: +7 (495) 232-2683 Email: [email protected]
15
• Separates application from conditions controlling the flow
• Significantly reduce the complexity of components that implement the business-rules logic
• Rules engine expresses rules using a declarative approach that is maintainable and extensible
• Easy to learn by Java developers
Once again…
Artezio LLC Address: 3G Gubkina Str., suite 504, Moscow, Russia, 119333 Phone: +7 (495) 981-0531 Fax: +7 (495) 232-2683 Email: [email protected]
www.artezio.comThe art of technology
Questions… (to be continued)
Artezio LLC Address: 3G Gubkina Str., suite 504, Moscow, Russia, 119333 Phone: +7 (495) 981-0531 Fax: +7 (495) 232-2683 Email: [email protected]
www.artezio.comThe art of technology
Drools 5 Fusion
Artezio LLC Address: 3G Gubkina Str., suite 504, Moscow, Russia, 119333 Phone: +7 (495) 981-0531 Fax: +7 (495) 232-2683 Email: [email protected]
18
Agenda
• What is Complex Event Processing• Drools Fusion scenario• Features
- Events- Session Clock- Streams support- Temporal reasoning- Event processing modes- Sliding windows- KnowledgeBase partitioning- Memory management
Artezio LLC Address: 3G Gubkina Str., suite 504, Moscow, Russia, 119333 Phone: +7 (495) 981-0531 Fax: +7 (495) 232-2683 Email: [email protected]
19
What is Complex Event Processing
Complex Event Processing is an event processing concept for identifying the meaningful events
within an event cloud
Artezio LLC Address: 3G Gubkina Str., suite 504, Moscow, Russia, 119333 Phone: +7 (495) 981-0531 Fax: +7 (495) 232-2683 Email: [email protected]
20
• CEP employs techniques like …- detection of complex patterns of many events
- event correlation and abstraction
- event hierarchies
- relationships between events (causality, membership, timing)
- event-driven processes
What is Complex Event Processing
Artezio LLC Address: 3G Gubkina Str., suite 504, Moscow, Russia, 119333 Phone: +7 (495) 981-0531 Fax: +7 (495) 232-2683 Email: [email protected]
21
• Understand and handle events as first class citizens of the platform
• Select a set of interesting events in a cloud or stream of events
• Detect the relevant relationships (patterns) among these events
• Take appropriate actions based on the patterns detected
Drools Fusion scenario
Artezio LLC Address: 3G Gubkina Str., suite 504, Moscow, Russia, 119333 Phone: +7 (495) 981-0531 Fax: +7 (495) 232-2683 Email: [email protected]
22
Features
• Events• Session Clock• Streams support• Temporal reasoning• Event processing modes• Sliding windows• KnowledgeBase partinioning• Memory management
Artezio LLC Address: 3G Gubkina Str., suite 504, Moscow, Russia, 119333 Phone: +7 (495) 981-0531 Fax: +7 (495) 232-2683 Email: [email protected]
23
Features: Events
• Events, from a Drools perspective, are just a special type of fact - usually immutable- strong temporal constraints- managed lifecycle- use of sliding windows
Artezio LLC Address: 3G Gubkina Str., suite 504, Moscow, Russia, 119333 Phone: +7 (495) 981-0531 Fax: +7 (495) 232-2683 Email: [email protected]
24
• Event declaration
Features: Events
public class VoiceCall {
private String originNumber; private String destinationNumber; private Date callDateTime; private long callDuration;
// constructors, getters and setters }
declare VoiceCall @role( event ) @timestamp( callDateTime ) @duration( callDuration ) @expires( 1h35m )
end
• DRL file
Artezio LLC Address: 3G Gubkina Str., suite 504, Moscow, Russia, 119333 Phone: +7 (495) 981-0531 Fax: +7 (495) 232-2683 Email: [email protected]
25
• Session clock provide availability of concept “now”
• Implements strategy pattern- Rules testing- Regular execution- Special environments
– clock synchronization– appServer provided clocks
- Rules replay or simulation
• Two default implementations are provided
Features: Session Clock
Artezio LLC Address: 3G Gubkina Str., suite 504, Moscow, Russia, 119333 Phone: +7 (495) 981-0531 Fax: +7 (495) 232-2683 Email: [email protected]
26
• Real time clock
Features: Session Clock
KnowledgeSessionConfiguration config = KnowledgeBaseFactory.newKnowledgeSessionConfiguration();
config.setOption( ClockTypeOption.get("realtime") );
• Pseudo clockKnowledgeSessionConfiguration conf =
KnowledgeBaseFactory.newKnowledgeSessionConfiguration(); conf.setOption( ClockTypeOption.get( "pseudo" ) ); StatefulKnowledgeSession session = kbase.newStatefulKnowledgeSession( conf, null );
SessionPseudoClock clock = session.getSessionClock(); FactHandle handle1 = session.insert( tick1 ); clock.advanceTime( 10, TimeUnit.SECONDS ); FactHandle handle2 = session.insert( tick2 ); clock.advanceTime( 30, TimeUnit.SECONDS ); FactHandle handle3 = session.insert( tick3 );
Artezio LLC Address: 3G Gubkina Str., suite 504, Moscow, Russia, 119333 Phone: +7 (495) 981-0531 Fax: +7 (495) 232-2683 Email: [email protected]
27
• Different forms of streams - JMS queues- database tables- raw sockets- Web Service calls- flat text files- etc.
• Events are orders by timestamp• Meanings are usually extracted from correlation of
events and even streams• Homogeneous and heterogeneous streams
Features: Streams support
Artezio LLC Address: 3G Gubkina Str., suite 504, Moscow, Russia, 119333 Phone: +7 (495) 981-0531 Fax: +7 (495) 232-2683 Email: [email protected]
28
Features: Streams support
StatefulKnowledgeSession session = ...
WorkingMemoryEntryPoint atmStream = session.getWorkingMemoryEntryPoint( "ATM Stream" );
atmStream.insert( aWithdrawRequest );
rule "apply fee on withdraws on branches" when
WithdrawRequest( $ai : accountId, processed == true ) from entry-point "Branch
Stream" CheckingAccount( accountId == $ai )
then // apply a $2 fee on the account
end
Artezio LLC Address: 3G Gubkina Str., suite 504, Moscow, Russia, 119333 Phone: +7 (495) 981-0531 Fax: +7 (495) 232-2683 Email: [email protected]
29
Features: Temporal reasoning
$eventA : EventA( this after[ 3m30s, 4m ] $eventB ) 3m30s <= $eventA.startTimestamp - $eventB.endTimeStamp <= 4m
$eventA : EventA( this before[ 3m30s, 4m ] $eventB )
abs( $eventA.startTimestamp - $eventB.startTimestamp ) <= 15s &&abs( $eventA.endTimestamp - $eventB.endTimestamp ) <= 10s
$eventA : EventA( this coincides[15s, 10s] $eventB )
2s <= $eventA.startTimestamp - $eventB.startTimestamp <= 6s && 4s <= $eventB.endTimestamp - $eventA.endTimestamp <= 10s
$eventA : EventA( this during[ 2s, 6s, 4s, 10s ] $eventB )
$eventB.startTimestamp < $eventA.startTimestamp && abs( $eventA.endTimestamp - $eventB.endTimestamp ) <= 5s
$eventA : EventA( this finishes[ 5s ] $eventB )
abs( $eventB.startTimestamp - $eventA.endTimestamp) <= 5s $eventA : EventA( this meets[ 5s ] $eventB )
Artezio LLC Address: 3G Gubkina Str., suite 504, Moscow, Russia, 119333 Phone: +7 (495) 981-0531 Fax: +7 (495) 232-2683 Email: [email protected]
30
• Cloud mode- no notion of time- no clock synchronization - no events ordering
• Stream mode- time-ordered events- synchronization between stream by session clocks- automatic event lifecycle management- rules delaying- sliding window support
Features: Event Processing modes
Artezio LLC Address: 3G Gubkina Str., suite 504, Moscow, Russia, 119333 Phone: +7 (495) 981-0531 Fax: +7 (495) 232-2683 Email: [email protected]
31
• Enabling Stream mode
Features: Event Processing modes
KnowledgeBaseConfiguration config = KnowledgeBaseFactory.newKnowledgeBaseConfiguration();
config.setOption( EventProcessingOption.STREAM );
drools.eventProcessingMode = stream or
• Rules delaying using negative patternrule "Sound the alarm" when
$f : FireDetected( ) not( SprinklerActivated( this after[0s,10s] $f ) )
then // sound the alarm
end
Artezio LLC Address: 3G Gubkina Str., suite 504, Moscow, Russia, 119333 Phone: +7 (495) 981-0531 Fax: +7 (495) 232-2683 Email: [email protected]
32
• Sliding time windows• Sliding length windows
Features: Sliding windows
rule "Sound the alarm in case temperature rises above threshold" when
TemperatureThreshold( $max : max ) Number( doubleValue > $max ) from accumulate(
SensorReading( $temp : temperature ) over window:length( 100 ),
average( $temp ) ) then
// sound the alarm end
Artezio LLC Address: 3G Gubkina Str., suite 504, Moscow, Russia, 119333 Phone: +7 (495) 981-0531 Fax: +7 (495) 232-2683 Email: [email protected]
33
Features: KnowledgeBase partitioning
• Does your hardware contain multiple processors?• Does your knowledge session process a high volume of facts?• Are the LHS of your rules expensive to evaluate? (ex: use expensive
"from" expressions)• Does your knowledge base contain hundreds or more rules?
KnowledgeBaseConfiguration config = knowledgeBaseFactory.newKnowledgeBaseConfiguration();
config.setOption( MultithreadEvaluationOption.YES ); config.setOption( MaxThreadsOption.get(5) );
drools.multithreadEvaluation = <true|false> drools.maxThreads = <-1|1..n>
or
Artezio LLC Address: 3G Gubkina Str., suite 504, Moscow, Russia, 119333 Phone: +7 (495) 981-0531 Fax: +7 (495) 232-2683 Email: [email protected]
34
Features: Memory management
• explicitly, using the expiration policy
• implicitly, analyzing the temporal constraints on events
declare StockTick @expires( 30m )
end
rule "correlate orders" when
$bo : BuyOrderEvent( $id : id ) $ae : AckEvent( id == $id, this after[0,10s] $bo )
then // do something
end
Artezio LLC Address: 3G Gubkina Str., suite 504, Moscow, Russia, 119333 Phone: +7 (495) 981-0531 Fax: +7 (495) 232-2683 Email: [email protected]
35
Finally…
• Session clocks provide an important concept of “now”
• Events are usually immutable and have strong relationships
• A list of operators allows to detect correlation of events- after- before- includes
• Sliding windows allow to accumulate data during period of time
Artezio LLC Address: 3G Gubkina Str., suite 504, Moscow, Russia, 119333 Phone: +7 (495) 981-0531 Fax: +7 (495) 232-2683 Email: [email protected]
www.artezio.comThe art of technology
Questions…