Presentation is loading. Please wait.

Presentation is loading. Please wait.

Artezio LLC Address: 3G Gubkina Str., suite 504, Moscow, Russia, 119333 Phone: +7 (495) 981-0531 Fax: +7 (495) 232-2683

Similar presentations


Presentation on theme: "Artezio LLC Address: 3G Gubkina Str., suite 504, Moscow, Russia, 119333 Phone: +7 (495) 981-0531 Fax: +7 (495) 232-2683"— Presentation transcript:

1 Artezio LLC Address: 3G Gubkina Str., suite 504, Moscow, Russia, 119333 Phone: +7 (495) 981-0531 Fax: +7 (495) 232-2683 Email: info@artezio.com www.artezio.com The art of technology Drools and Drools 5 Fusion

2 Artezio LLC Address: 3G Gubkina Str., suite 504, Moscow, Russia, 119333Phone: +7 (495) 981-0531 Fax: +7 (495) 232-2683 Email: info@artezio.com 2 Drools is an open source rules engine, which lets you express business logic rules in a declarative way using non-XML native language

3 Artezio LLC Address: 3G Gubkina Str., suite 504, Moscow, Russia, 119333Phone: +7 (495) 981-0531 Fax: +7 (495) 232-2683 Email: info@artezio.com 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

4 Artezio LLC Address: 3G Gubkina Str., suite 504, Moscow, Russia, 119333Phone: +7 (495) 981-0531 Fax: +7 (495) 232-2683 Email: info@artezio.com 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

5 Artezio LLC Address: 3G Gubkina Str., suite 504, Moscow, Russia, 119333Phone: +7 (495) 981-0531 Fax: +7 (495) 232-2683 Email: info@artezio.com 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.getTwitterI nfluenceRatio(user))); follower.setHasPicture(TwitterUtils.hasSetProfileImage(user)); insert(follower); } end

6 Artezio LLC Address: 3G Gubkina Str., suite 504, Moscow, Russia, 119333Phone: +7 (495) 981-0531 Fax: +7 (495) 232-2683 Email: info@artezio.com 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

7 Artezio LLC Address: 3G Gubkina Str., suite 504, Moscow, Russia, 119333Phone: +7 (495) 981-0531 Fax: +7 (495) 232-2683 Email: info@artezio.com 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();

8 Artezio LLC Address: 3G Gubkina Str., suite 504, Moscow, Russia, 119333 Phone: +7 (495) 981-0531 Fax: +7 (495) 232-2683 Email: info@artezio.com www.artezio.com The art of technology Questions… (to be continued)

9 Artezio LLC Address: 3G Gubkina Str., suite 504, Moscow, Russia, 119333Phone: +7 (495) 981-0531 Fax: +7 (495) 232-2683 Email: info@artezio.com 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…

10 Artezio LLC Address: 3G Gubkina Str., suite 504, Moscow, Russia, 119333Phone: +7 (495) 981-0531 Fax: +7 (495) 232-2683 Email: info@artezio.com 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

11 Artezio LLC Address: 3G Gubkina Str., suite 504, Moscow, Russia, 119333Phone: +7 (495) 981-0531 Fax: +7 (495) 232-2683 Email: info@artezio.com 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

12 Artezio LLC Address: 3G Gubkina Str., suite 504, Moscow, Russia, 119333Phone: +7 (495) 981-0531 Fax: +7 (495) 232-2683 Email: info@artezio.com 12 Conflicts resolution Rules with higher salience will be fired first -preparing objects for future rules execution -filtering some instances from ruling Dynamic salience rule "high value fires first“ salience (person.bonus * item.price) when person : Person() item : Item() then... end

13 Artezio LLC Address: 3G Gubkina Str., suite 504, Moscow, Russia, 119333Phone: +7 (495) 981-0531 Fax: +7 (495) 232-2683 Email: info@artezio.com 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

14 Artezio LLC Address: 3G Gubkina Str., suite 504, Moscow, Russia, 119333Phone: +7 (495) 981-0531 Fax: +7 (495) 232-2683 Email: info@artezio.com 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

15 Artezio LLC Address: 3G Gubkina Str., suite 504, Moscow, Russia, 119333Phone: +7 (495) 981-0531 Fax: +7 (495) 232-2683 Email: info@artezio.com 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…

16 Artezio LLC Address: 3G Gubkina Str., suite 504, Moscow, Russia, 119333 Phone: +7 (495) 981-0531 Fax: +7 (495) 232-2683 Email: info@artezio.com www.artezio.com The art of technology Questions… (to be continued)

17 Artezio LLC Address: 3G Gubkina Str., suite 504, Moscow, Russia, 119333 Phone: +7 (495) 981-0531 Fax: +7 (495) 232-2683 Email: info@artezio.com www.artezio.com The art of technology Drools 5 Fusion

18 Artezio LLC Address: 3G Gubkina Str., suite 504, Moscow, Russia, 119333Phone: +7 (495) 981-0531 Fax: +7 (495) 232-2683 Email: info@artezio.com 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

19 Artezio LLC Address: 3G Gubkina Str., suite 504, Moscow, Russia, 119333Phone: +7 (495) 981-0531 Fax: +7 (495) 232-2683 Email: info@artezio.com 19 What is Complex Event Processing Complex Event Processing is an event processing concept for identifying the meaningful events within an event cloud

20 Artezio LLC Address: 3G Gubkina Str., suite 504, Moscow, Russia, 119333Phone: +7 (495) 981-0531 Fax: +7 (495) 232-2683 Email: info@artezio.com 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

21 Artezio LLC Address: 3G Gubkina Str., suite 504, Moscow, Russia, 119333Phone: +7 (495) 981-0531 Fax: +7 (495) 232-2683 Email: info@artezio.com 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

22 Artezio LLC Address: 3G Gubkina Str., suite 504, Moscow, Russia, 119333Phone: +7 (495) 981-0531 Fax: +7 (495) 232-2683 Email: info@artezio.com 22 Features Events Session Clock Streams support Temporal reasoning Event processing modes Sliding windows KnowledgeBase partinioning Memory management

23 Artezio LLC Address: 3G Gubkina Str., suite 504, Moscow, Russia, 119333Phone: +7 (495) 981-0531 Fax: +7 (495) 232-2683 Email: info@artezio.com 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

24 Artezio LLC Address: 3G Gubkina Str., suite 504, Moscow, Russia, 119333Phone: +7 (495) 981-0531 Fax: +7 (495) 232-2683 Email: info@artezio.com 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

25 Artezio LLC Address: 3G Gubkina Str., suite 504, Moscow, Russia, 119333Phone: +7 (495) 981-0531 Fax: +7 (495) 232-2683 Email: info@artezio.com 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

26 Artezio LLC Address: 3G Gubkina Str., suite 504, Moscow, Russia, 119333Phone: +7 (495) 981-0531 Fax: +7 (495) 232-2683 Email: info@artezio.com 26 Real time clock Features: Session Clock KnowledgeSessionConfiguration config = KnowledgeBaseFactory.newKnowledgeSessionConfiguration(); config.setOption( ClockTypeOption.get("realtime") ); Pseudo clock KnowledgeSessionConfiguration 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 );

27 Artezio LLC Address: 3G Gubkina Str., suite 504, Moscow, Russia, 119333Phone: +7 (495) 981-0531 Fax: +7 (495) 232-2683 Email: info@artezio.com 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

28 Artezio LLC Address: 3G Gubkina Str., suite 504, Moscow, Russia, 119333Phone: +7 (495) 981-0531 Fax: +7 (495) 232-2683 Email: info@artezio.com 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

29 Artezio LLC Address: 3G Gubkina Str., suite 504, Moscow, Russia, 119333Phone: +7 (495) 981-0531 Fax: +7 (495) 232-2683 Email: info@artezio.com 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 )

30 Artezio LLC Address: 3G Gubkina Str., suite 504, Moscow, Russia, 119333Phone: +7 (495) 981-0531 Fax: +7 (495) 232-2683 Email: info@artezio.com 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

31 Artezio LLC Address: 3G Gubkina Str., suite 504, Moscow, Russia, 119333Phone: +7 (495) 981-0531 Fax: +7 (495) 232-2683 Email: info@artezio.com 31 Enabling Stream mode Features: Event Processing modes KnowledgeBaseConfiguration config = KnowledgeBaseFactory.newKnowledgeBaseConfiguration(); config.setOption( EventProcessingOption.STREAM ); drools.eventProcessingMode = stream or Rules delaying using negative pattern rule "Sound the alarm" when $f : FireDetected( ) not( SprinklerActivated( this after[0s,10s] $f ) ) then // sound the alarm end

32 Artezio LLC Address: 3G Gubkina Str., suite 504, Moscow, Russia, 119333Phone: +7 (495) 981-0531 Fax: +7 (495) 232-2683 Email: info@artezio.com 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

33 Artezio LLC Address: 3G Gubkina Str., suite 504, Moscow, Russia, 119333Phone: +7 (495) 981-0531 Fax: +7 (495) 232-2683 Email: info@artezio.com 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 = drools.maxThreads = or

34 Artezio LLC Address: 3G Gubkina Str., suite 504, Moscow, Russia, 119333Phone: +7 (495) 981-0531 Fax: +7 (495) 232-2683 Email: info@artezio.com 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

35 Artezio LLC Address: 3G Gubkina Str., suite 504, Moscow, Russia, 119333Phone: +7 (495) 981-0531 Fax: +7 (495) 232-2683 Email: info@artezio.com 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

36 Artezio LLC Address: 3G Gubkina Str., suite 504, Moscow, Russia, 119333 Phone: +7 (495) 981-0531 Fax: +7 (495) 232-2683 Email: info@artezio.com www.artezio.com The art of technology Questions…


Download ppt "Artezio LLC Address: 3G Gubkina Str., suite 504, Moscow, Russia, 119333 Phone: +7 (495) 981-0531 Fax: +7 (495) 232-2683"

Similar presentations


Ads by Google