IP Library Granted Patent US 8,959,480
Granted Patent B2
US 8,959,480 · App. 13/907,287 · Granted Feb 17, 2015

Methods and apparatus for integration of declarative rule-based processing with procedural programming in a digital data-processing environment

Inventors: Alan Trefler (Cambridge, MA); Andreas G. Hofmann (Boston, MA)
Assignee: Pegasystems Inc.
G06N5/025G06F8/311
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 8,959,480
App. No.
13/907,287
Granted
Feb 17, 2015
Kind
B2
Abstract

The present invention provides methods and systems for integrating a procedural computational model with a declarative computational model. For example, in one aspect, the present invention provides a method for integrating a plurality of procedural instructions in a procedural computational system with a plurality of declarative rules in a declarative computational system. In such a method, for each of the procedural instructions operating on one or more variables, a hash table indexed by variable names is utilized to determine whether any of these variables participate in at least one of the declarative rules. Upon execution of a procedural instruction that changes a variable participating in a declarative rule, other variables associated with the rule are updated so as to maintain a relationship imposed by the rule among the variables. The updating of the other variables is performed prior to execution of other procedural instructions.

Claims (27)

1. A method of integrating a plurality of procedural instructions in a procedural computational system with a plurality of declarative rules in a declarative computational system, the method comprising:

for each of said procedural instructions operating on one or more variables, determining whether any of said variables participate in at least one of said declarative rules by employing a hash table indexed by variable names, and

upon execution, within said procedural computational system, of a procedural instruction changing a variable participating in a declarative rule, detecting said changing variable and notifying said declarative computational system using a change tracking system that is in communicative coupling with said procedural computational system and said declarative computational system, and updating, within said declarative computational system, other variables associated with said rule so as to maintain a relationship imposed by said rule among said variables,

wherein said notifying said declarative computational system and said updating of other variables is performed prior to execution, within said procedural computational system, of other procedural instructions, and

wherein said updating of said other variables includes identifying, within said declarative computational system, one or more other declarative rules in which said other variables participate, and propagating, within said declarative computational system, said updating of said other variables to said one or more other declarative rules so as to maintain relationships imposed by said one or more other declarative rules among said variables.

2. The method of claim 1 , further comprising characterizing said declarative rules by a dependency network according to said hash table.

3. The method of claim 2 , wherein said determining said other declarative rules in which said other variables participate comprises determining a sub-network within said dependency network based on said hash table.

4. The method of claim 3 , wherein said propagating said updates of said other variables to said other declarative rules renders data values of objects participating in said other declarative rules consistent with said relationship imposed by said rule among said variables.

5. The method of claim 1 , wherein said declarative rules are provided as textual expressions.

6. The method of claim 1 , wherein said declarative rules specify patterns of objects related by said declarative rules.

7. The method of claim 1 , wherein said declarative rules are expressed as procedures having defined inputs and outputs, and wherein said inputs and outputs are properties of related objects.

8. The method of claim 1 , wherein said declarative rules form at least one of a simple formula declarative system, a multi-source directional declarative system, and a constrained declarative system.

9. The method of claim 1 , wherein said one or more declarative rules specify patterns of objects related by said rules.

10. The method of claim 9 , further comprising using variable designations to specify said patterns of objects related by said rules.

11. A method of unifying one or more declarative rules and a plurality of procedural instructions in a procedural computational system, the method comprising:

upon execution, within said procedural computational system, of a procedural instruction that changes one or more variables, detecting said changes to said one or more variables and notifying a declarative computational system that is in communicative coupling with said procedural computational system using a change tracking system that is in communicative coupling with said procedural computational system and said declarative computational system, and updating, within said change tracking system, one or more other variables participating in one or more declarative rules so as to maintain relationships imposed by said one or more rules among said variables,

wherein said updating of said one or more other variables is performed prior to execution of other procedural instructions, and

wherein said updating of said one or more other variables includes identifying, within said declarative computational system, one or more other declarative rules in which said one or more other variables participate, and propagating, within said declarative computational system, said updating of said one or more other variables to said one or more other declarative rules so as to maintain relationships imposed by said one or more other declarative rules among said variables.

12. The method of claim 11 , further comprising characterizing said declarative rules by a dependency network.

13. The method of claim 12 , wherein said determining said other declarative rules in which said other variables participate comprises determining a sub-network within said dependency network.

14. The method of claim 13 , wherein said propagating said updates of said other variables to said other declarative rules renders data values of objects participating in said other declarative rules consistent with said relationship imposed by said rule among said variables.

15. The method of claim 11 , wherein said declarative rules are provided as textual expressions.

16. The method of claim 11 , wherein said declarative rules specify patterns of objects related by said declarative rules.

17. The method of claim 11 , wherein said declarative rules are expressed as procedures having defined inputs and outputs, and wherein said inputs and outputs are properties of related objects.

18. The method of claim 11 , wherein said declarative rules form at least one of a simple formula declarative system, a multi-source directional declarative system, and a constrained declarative system.

19. The method of claim 11 , wherein said one or more declarative rules specify patterns of objects related by said rules.

20. The method of claim 19 , further comprising using variable designations to specify said patterns of objects related by said rules.

Assignments (2)
SECURITY INTEREST Recorded Nov 14, 2019
From: PEGASYSTEMS INC.
To: PNC BANK, NATIONAL ASSOCIATION
Reel/Frame 051016/0631 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 11, 2013
From: TREFLER, ALAN; HOFMANN, ANDREAS G.
To: PEGASYSTEMS INC.
Reel/Frame 031186/0396 →
Continuity (3)
Continuation 12649095 · Dec 29, 2009
Continuation 10854017 · May 26, 2004
Related Publication 20140019400A1 · Jan 16, 2014