Producer graph oriented programming and execution
First Claim
1. An apparatus for executing object-oriented code, said apparatus comprising:
- a runtime that interprets producer dependency declarations for methods in the object-oriented code, said producer dependency declarations identify at run time a set of zero or more producers, where a producer is a runtime instantiatable construct that includes at least an instance and a method associated with that instance, the runtime including,an automated producer graph generation module to receive a designation of a producer of interest, to add the producer of interest as part of a producer graph, and to automatically generate a remainder of the producer graph through linking, and instantiation as necessary, of other producers based on the producer dependency declarations of the methods of the producers already in the producer graph, anda producer graph execution module to execute the producers in the producer graph in the order indicated by the producer graph, wherein execution of each producer results in the method of the producer being executed on the instance of the producer.
3 Assignments
0 Petitions
Accused Products
Abstract
A method and apparatus for producer graph oriented programming and execution. According to one aspect of the invention, a runtime is provided that interprets producer dependency declarations for methods. The producer dependency declarations identify at run time a set of zero or more producers, where a producer is a runtime instantiatable construct that includes at least an instance and a method associated with that instance. The runtime automatically generates and executes, responsive to receiving a designation of a producer of interest whose method has a producer dependency declaration, a producer graph. The producer graph initially includes the producer of interest and is generated, from the producer of interest to source producers, through instantiation of producers based on the producer dependency declarations of the methods of the producers already in the producer graph. The runtime sequences the execution of the producers in the producer graph as indicated by the producer graph.
228 Citations
199 Claims
-
1. An apparatus for executing object-oriented code, said apparatus comprising:
a runtime that interprets producer dependency declarations for methods in the object-oriented code, said producer dependency declarations identify at run time a set of zero or more producers, where a producer is a runtime instantiatable construct that includes at least an instance and a method associated with that instance, the runtime including, an automated producer graph generation module to receive a designation of a producer of interest, to add the producer of interest as part of a producer graph, and to automatically generate a remainder of the producer graph through linking, and instantiation as necessary, of other producers based on the producer dependency declarations of the methods of the producers already in the producer graph, and a producer graph execution module to execute the producers in the producer graph in the order indicated by the producer graph, wherein execution of each producer results in the method of the producer being executed on the instance of the producer. - View Dependent Claims (36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70)
-
2-35. -35. (canceled)
-
71. An apparatus for executing object-oriented code, said apparatus comprising:
-
a runtime that interprets producer dependency declarations for methods in the object-oriented code, said producer dependency declarations identify at run time a set of zero or more producers, where a producer is a runtime instantiatable construct that includes at least an instance and a method associated with that instance, wherein each producer'"'"'s method is a method of a class of that producer'"'"'s instance, wherein the producer dependency declarations are part of class definitions for classes in the object-oriented code, and wherein at least some of said producer dependency declarations include downwardly declared dependencies, the runtime including, an automated producer graph generation module to receive a designation of a producer of interest, to add the producer of interest as part of a current producer graph, and to automatically generate a remainder of the current producer graph through linking, and instantiation as necessary, of other producers based on the producer dependency declarations of the methods of the producers already in the current producer graph, a producer graph structure, coupled to the automated producer graph generation module, to the current producer graph and a current output of each of the producers in the current producer graph, wherein method keys are used to distinguish the methods, instance keys are used to distinguish the instances, and producer keys are used to distinguish the producers, and wherein the producer key for a given producer is based on at least the instance key and the method key of that producer'"'"'s instance and method; and a producer graph execution module, coupled to the producer graph structure, to execute the producers in the current producer graph in the order indicated by the current producer graph, wherein the current producer graph represents appropriate sequencing of execution as identified by the producer dependency declarations of the methods of the producers in the current producer graph, and wherein execution of each producer results in the method of the producer being executed on the instance of the producer, said producer graph execution module including, a dynamic dependencies module to resolve any dynamic producer dependencies, wherein each producer dependency declaration may include a dynamic producer dependency, wherein dynamic producer dependencies cause the runtime to dynamically select the set of zero or more producers the producer dependency declaration identifies during run time, wherein the dynamic selection can cause the selection of different producers for the set during different executions of the current producer graph, wherein the dynamic producer dependencies include contingent producer dependencies, and wherein contingent producer dependencies are dependencies on dependency determination producers that themselves are dependent on the output of one or more other producers. - View Dependent Claims (72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82)
-
-
83. A method for executing object-oriented code, said method comprising:
-
instantiating a producer with an output that is currently of interest, wherein the object-oriented code includes methods and producer dependency declarations, wherein the producer dependency declaration for a given method identifies a set of zero or more producers, wherein a producer is a runtime instantiatable construct that includes at least an instance and a method associated with that instance; responsive to said instantiating, adding the producer of interest as part of a current producer graph; attempting to automatically generate a remainder of the current producer graph through linking, and instantiation as necessary, of other producers based on the producer dependency declarations of the methods of the producers already in the current producer graph; and executing the producers in the current producer graph to determine the current output for said producer of interest. - View Dependent Claims (84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107)
-
-
108. A method for executing object-oriented code, said method comprising:
-
receiving an indication of a producer of interest, wherein a producer is a runtime instantiatable construct that includes at least an instance and a method associated with that instance; automatically generating and executing a producer graph based on said producer of interest and producer dependency declaration statements for methods, wherein said producer graph includes a target subgraph that includes said producer of interest and a plurality of levels of other producers, said automatically generating and executing including, iteratively performing the following until source producers are reached, discovering, building and executing a decision subgraph of producers based on the producer dependency declaration statement of the method of one of the producers already in the target subgraph, and adding to said target subgraph a set of one or more of the other producers returned by said decision subgraph, and executing the producers in the target subgraph sequenced as indicated by the target subgraph, wherein execution of each producers results in the method of the producer being executed on the instance of the producer. - View Dependent Claims (109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122)
-
-
123. An apparatus for executing object-oriented code, said apparatus comprising:
a runtime to automatically generate and execute a producer graph based on a producer of interest and producer dependency declaration statements for methods, wherein a producer is a runtime instantiatable construct that includes at least an instance and a method associated with that instance, said runtime including the following iteratively related modules, an automated producer graph generation module to receive a designation of said producer of interest, to add said producer of interest to a target subgraph of said producer graph, and to automatically generate a plurality of levels of other producers in said target subgraph through automatically discovering and building decision subgraphs based on the producer dependency declaration statements of the methods of the producers currently in the target subgraph, and a producer graph execution module to execute the producers in the producer graph, wherein execution of each producer results in the method of the producer being executed on the instance of the producer, and wherein execution of each of a plurality of the decision subgraphs adds at least another producer to said target subgraph. - View Dependent Claims (124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137)
-
138. A machine-storage medium that provides object-oriented code including:
-
a plurality of class definitions each including, a set of one or more fields, a set of one or more methods, and a producer dependency declaration for each of said set of methods, wherein the producer dependency declaration for a given one of said methods is used at runtime to identify a set of zero or more producers, wherein a producer is a runtime instantiatable construct that includes at least an instance of one of the plurality of classes at runtime and a method of that class; and wherein a first producer has a contingent producer dependency as follows, a first method of said sets of methods is a property method, a second method of said sets of methods has a producer dependency declaration statement that identifies a property producer based on said property method, and has code to select between a second and third producer based on the output of said property producer, and a third method of said sets of methods has a producer dependency declaration statement that identifies a dependency determination producer based on said second method, wherein said first producer is based on said third method and is to have a producer dependency on whichever of said second and third producer the dependency determination producer is currently returning. - View Dependent Claims (139, 140, 141, 142, 143, 144, 145, 146, 147)
-
-
148. A machine-storage medium that provides object-oriented code including:
-
a program having a plurality of class definitions each including, a set of one or more fields, a set of one or more methods, and a producer dependency declaration for each of said set of methods, wherein the producer dependency declaration for a given one of said methods is used at run time to identify a set of zero or more producers, wherein a producer is a runtime instantiatable construct that includes at least an instance of one of the plurality of classes at run time and a method of that class; and wherein the method of each of the producers is a transformation method and the program does not include manual invocation sequencing code, but instead relies on a runtime to automatically discover sequencing for the transformation methods from the producer dependency declarations. - View Dependent Claims (149, 150, 151, 152, 153, 154, 155, 157, 158)
-
-
156. The machine-storage medium 155, wherein class keys are used to distinguish said plurality of classes, and wherein the producer key for each producer is also based on the class key of the class of that producer'"'"'s instance.
-
159. A machine-storage medium having stored thereon:
-
a set of one or more instances of a set of one or more classes, wherein each class includes methods and producer dependency declarations for the methods, wherein each of the set of instances is associated with all of the methods of its class, and wherein the producer dependency declarations identify at run time a set of one or more dependencies between producers; a producer graph structure having stored therein, a plurality of producers that each is a construct instantiated at run time and that includes only one of said set of instances and only one of the methods associated with that instance, a plurality of links representing a multiple level graph of the plurality of producers, wherein the plurality of links represent the dependencies between the producers in the producer graph identified by the producer dependency declarations for the methods included in the plurality of producers, a producer key for each of said plurality of producers, wherein each producer key is based on at least an instance key and a method key that identify the one of said set of instances and the one of the methods associated with that instance, and a current output of each of the plurality of producers in the producer graph; and an instance tracking structure having stored therein a correspondence between the instance keys and the set of instances. - View Dependent Claims (160, 161, 162, 163, 164, 165, 166, 167, 168)
-
-
169. A machine-storage medium having stored thereon:
an object-oriented source code including client code, said client code including, a producer instantiation command that has a producer key for a producer of interest and that causes a runtime for object-oriented code to automatically discover, build, and optionally resolve a current producer graph starting from the producer of interest and having multiple levels of discovered producers, wherein each of the producers is a runtime instantiatable construct that includes at least an instance and a method associated with that instance, wherein the runtime automatically instantiates any of the producers of the current producer graph that are not yet instantiated, wherein producer keys are used to distinguish the producers, wherein method keys are used to distinguish the methods, wherein instance keys are used to distinguish the instances, and wherein the producer key for each producer is based on at least the instance key and the method key of that producer'"'"'s instance and method; execute commands that each cause the runtime for object-oriented code to execute the current producer graph and to cache a current output for each of the producers executed in the current producer graph; and producer output override commands that each has a producer key and an override value and that each cause the runtime for object-oriented code to override the output of the producer designated by the producer key with the override value. - View Dependent Claims (170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181)
-
182. A method for producer output layout, said method comprising:
-
displaying a list including classes, with their get property methods, of producers in a producer graph and of those producer'"'"'s outputs, wherein said producer graph was automatically generated and executed based on a producer of interest and producer dependency declarations for methods of classes, wherein a producer is a runtime instantiatable construct that includes at least a class, an instance of that class, and a method of that class that is associated with that instance, wherein the producer dependency declarations of the methods of the producers in the producer graph each identified a set of zero or more of the other producers in the producer graph, wherein said producer graph includes said producer of interest and a plurality of levels of other producers; displaying a spreadsheet having cells; receiving mappings of a plurality of the displayed get property methods of a set of one or more of the displayed classes to cells of the spreadsheet; and populating at least the cells of said mappings with the outputs of the corresponding get property methods of a set of one or more instances. - View Dependent Claims (183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199)
-
Specification