IP Library Granted Patent US 7,567,975
Granted Patent B2
US 7,567,975 · App. 11/083,159 · Granted Jul 28, 2009

Incremental evaluation of complex event-condition-action rules in a database system

Assignee: Oracle International Corporation
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 7,567,975
App. No.
11/083,159
Granted
Jul 28, 2009
Kind
B2
Abstract

In the scenario in which a rule set is defined for composite events, instances of the associated primitive events are added to a database-centric rules engine one at a time. Rules that rely on these events fire the corresponding actions when instances of all the corresponding primitive events are detected. Intermediate states of the rule evaluations are persistently stored in the database, thereby avoiding repeated evaluation of portions of rules and supporting efficient incremental evaluation of the rules. The rules defined within a rule set could vary significantly, using various rule condition language constructs such as “any” and negation constructs. The state information generated from evaluating the rules belonging to a single rule set is all stored in a single relational table and managed using direct SQL and DML commands.

Claims (55)

1. A computer-implemented method for managing evaluation of a rule based on a composite event that is defined to consist of multiple primitive events, the method comprising the steps of:

determining that a first part of a condition, of the rule, is satisfied by an instance of a first primitive event of the multiple primitive events, wherein the first part of the condition must be satisfied to trigger an action corresponding to the rule;

storing, persistently in a first table of a database and based on a first SQL operation on the first table, first state information associated with the first part of the condition and associated with the rule, wherein the first state information represents that the first part of the condition is satisfied by the instance of the first primitive event of the multiple primitive events;

wherein the first state information includes a reference to a record, in a second table, of the instance of the first primitive event of the multiple primitive events;

determining that a second part of the condition, of the rule, is satisfied by an instance of a second primitive event of the multiple primitive events, wherein the instance of the second primitive event of the multiple primitive events is different than the instance of the first primitive event of the multiple primitive events and wherein the second part of the condition must be satisfied to trigger the action corresponding to the rule;

in response to determining that the second part of the condition is satisfied, reading the first state information stored persistently in the first table of the database; and

determining, based at least in part on the read first state information stored persistently in the first table of the database, that the first part of the condition and the second part of the condition are satisfied,

wherein determining that the first part of the condition and the second part of the condition is satisfied includes identifying, based on a second SQL operation on a third table, the condition in the third table, and

wherein reading the first state information includes identifying, based on a third SQL operation on the first table, the first state information in the first table; and

wherein the steps are performed on one or more computing devices.

2. The method of claim 1 , farther comprising:

determining whether a join condition associated with the first part of the condition and the second part of the condition is satisfied by the instance of the first primitive event of the multiple primitive events and the instance of the second primitive event of the multiple primitive events.

3. The method of claim 2 , wherein reading the first state information includes identifying the first state information based on the join condition.

4. The method of claim 2 , farther comprising:

in response to determining that the condition is satisfied, based at least in part on the join condition and the first part of the condition and the second part of the condition being satisfied, triggering performance of the action corresponding to the rule.

5. The method of claim 2 , wherein the condition includes an “any” construct, the method further comprising:

storing persistently in the database, second state information associated with the second part of the condition and associated with the rule, wherein the second state information represents that the second part of the condition is satisfied by the instance of the second primitive event of the multiple primitive events;

wherein the step of storing the first state information includes storing the first state information in a first record of the first table; and

wherein the step of storing the second state information includes storing the second state information in a second record of the first table.

6. The method of claim 2 , further comprising determining that the condition is satisfied by determining that (a) a first value, from the first table, equals (b) a second value, from the third table for storing the parts of the condition, wherein the first value represents a number of parts of the condition that are satisfied, wherein the second value represents the number of parts of the condition that must be satisfied for the condition to be satisfied.

7. The method of claim 6 , wherein the condition includes a negation construct, and wherein the second value represents the number of parts of the condition that are not associated with the negation construct.

8. The method of claim 7 , further comprising:

storing in the database an identifier of particular parts of the condition that are not associated with the negation construct; and

incrementing the first value only in response to satisfaction of one of the particular parts of the condition that are not associated with the negation construct.

9. The method of claim 6 , wherein the condition includes a negation construct associated with a time of expiration, the method further comprising:

in response to determining that the condition is satisfied, inserting a record into a fourth table for scheduling performance of the action corresponding to the rule.

10. The method of claim 9 , further comprising:

in response to the time of expiration passing, triggering performance of the action corresponding to the rule; and

deleting the record from the fourth table.

11. The method of claim 9 , further comprising:

in response to determining that a negative condition of the negation construct is satisfied by a new instance of the first primitive event or a new instance of the second primitive event, deleting the record from the fourth table to retract the scheduled performance of the action corresponding to the rule.

12. The method of claim 10 , wherein the fourth table is an index-only table.

13. The method of claim 1 , wherein the instance of the first primitive event of the multiple primitive events is received in a first session with the database, and wherein the instance of the second primitive event of the multiple primitive events is received in a second session with the database that is a different session than the first session.

14. The method of claim 1 , wherein the instance of the first primitive event of the multiple primitive events is received from a first application, and wherein the instance of the second primitive event of the multiple primitive events is received from a second application that is a different application than the first application.

15. The method of claim 1 , wherein the rule is a first rule from a group of rules in which all rules in the group of rules are based on a same composite event structure, and wherein the first rule from the group of rules is a different rule than a second rule from the group of rules.

16. The method of claim 15 , farther comprising:

wherein the first primitive event of the multiple primitive events is associated with a first part of a condition, of the second rule from the group of rules, that must be satisfied to trigger an action corresponding to the second rule;

determining whether the first part of the condition, of the second rule from the group of rules, is satisfied by the instance of the first primitive event of the multiple primitive events; and

if the first part of the condition, of the second rule from the group of rules, is satisfied by the instance of the first primitive event of the multiple primitive events, then storing persistently in the database second state information associated with the first part of the condition, of the second rule from the group of rules, and associated with the second rule from the group of rules, wherein the second state information represents that the first part of the condition, of the second rule from the group of rules, is satisfied by the instance of the first primitive event of the multiple primitive events.

17. A machine-readable storage medium storing one or more sequences of instructions which, when executed by one or more processors, causes the one or more processors to perform the method recited in claim 1 .

18. A machine-readable storage medium storing one or more sequences of instructions which, when executed by one or more processors, causes the one or more processors to perform the method recited in claim 2 .

19. A machine-readable storage medium storing one or more sequences of instructions which, when executed by one or more processors, causes the one or more processors to perform the method recited in claim 3 .

20. A machine-readable storage medium storing one or more sequences of instructions which when executed by one or more processors, causes the one or more processors to perform the method recited in claim 4 .

21. A machine-readable storage medium storing one or more sequences of instructions which when executed by one or more processors, causes the one or more processors to perform the method recited in claim 5 .

22. A machine-readable storage medium storing one or more sequences of instructions which when executed by one or more processors, causes the one or more processors to perform the method recited in claim 6 .

23. A machine-readable storage medium storing one or more sequences of instructions which when executed by one or more processors, causes the one or more processors to perform the method recited in claim 7 .

24. A machine-readable storage medium storing one or more sequences of instructions which when executed by one or more processors, causes the one or more processors to perform the method recited in claim 8 .

25. A machine-readable storage medium storing one or more sequences of instructions which when executed by one or more processors, causes the one or more processors to perform the method recited in claim 9 .

26. A machine-readable storage medium storing one or more sequences of instructions which, when executed by one or more processors, causes the one or more processors to perform the method recited in claim 10 .

27. A machine-readable storage medium storing one or more sequences of instructions which, when executed by one or more processors, causes the one or more processors to perform the method recited in claim 11 .

28. A machine-readable storage medium storing one or more sequences of instructions which, when executed by one or more processors, causes the one or more processors to perform the method recited in claim 12 .

29. A machine-readable storage medium storing one or more sequences of instructions which, when executed by one or more processors, causes the one or more processors to perform the method recited in claim 13 .

30. A machine-readable storage medium storing one or more sequences of instructions which, when executed by one or more processors, causes the one or more processors to perform the method recited in claim 14 .

31. A machine-readable storage medium storing one or more sequences of instructions which, when executed by one or more processors, causes the one or more processors to perform the method recited in claim 15 .

32. A machine-readable storage medium storing one or more sequences of instructions which, when executed by one or more processors, causes the one or more processors to perform the method recited in claim 16 .

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 16, 2005
From: YALAMANCHI, ARAVIND
To: ORACLE INTERNATIONAL CORPORATION
Reel/Frame 016395/0808 →
Continuity (1)
Related Publication 20060224542A1 · Oct 5, 2006