Claims
- 1. In a computerized system with a plurality of software objects, including one or more software component objects, each comprising one or more functions, wherein an interface for accessing the one or more software component objects and corresponding one or more functions is based on parameters and return values, a method of dynamically accessing the one or more software component objects in accomplishing a task or goal, wherein the method comprises acts of:
creating at least one node, wherein the at least one node includes (i) one or more software component objects each comprising one or more functions implementing a particular functionality, and (ii) a controller object that manages interaction with the one or more software component objects; requesting the particular functionality of at least one of the one or more functions of the one or more software component objects; dynamically identifying a first software component object that is capable of satisfying the request for the particular functionality, wherein the identification of the first software component object may persist only for the request, independent of any particular requester, allowing another software component object to be dynamically identified for a subsequent request, even where the subsequent request is from a prior requester; and calling the first software component object.
- 2. A method as recited in claim 1, wherein multiple software component objects are capable of satisfying the request for the particular functionality, the method further comprising acts of:
subsequently requesting the particular functionality; dynamically identifying a second software component object that is capable of satisfying the request for the particular functionality; and calling the second software component object.
- 3. A method as recited in claim 1, wherein the at least one node includes a plurality of software component objects, and wherein the plurality of software component objects themselves are completely independent and unaware of each other.
- 4. A method as recited in claim 3, further comprising an act of designing platform independent logic that defines a relationship between at least two of the plurality of software component objects, the logic including at least one of processing flow and one or more branching conditions.
- 5. A method as recited in claim 1, wherein multiple software component objects are capable of satisfying the request for the particular functionality, the method further comprising an act of load balancing multiple requests for the particular functionality across the multiple software component objects.
- 6. A method as recited in claim 1, wherein the at least one node further comprises a database object that provides access to at least one of (i) platform independent logic, (ii) state information for one or more software component objects, and (iii) platform independent data, the method further comprising an act of accessing either the platform independent logic, the state information, or the platform independent data through the database object.
- 7. A method as recited in claim 6, wherein the database object of the at least one node accesses platform independent logic, the method further comprising the controller performing acts of:
executing the platform independent logic; and creating a request for the particular functionality.
- 8. A method as recited in claim 1, wherein the at least one node further comprises a trace object capable of tracking the processing that occurs in the at least one node, the method further comprising an act of logging an operation of at least one function of the first software component object.
- 9. A method as recited in claim 1, wherein the at least one node includes multiple nodes.
- 10. A method as recited in claim 9, wherein at least two of the multiple nodes are remote from each other, one of the at least two multiple nodes being a local node and the other being a remote node.
- 11. A method as recited in claim 10, wherein one or more nodes include an agent object that tracks which software component objects are available at each of several nodes for which the agent is responsible, and wherein a given node is unable to identify a local software component object that is capable of satisfying the request for the particular functionality, and wherein the agent dynamically identifies the first software component.
- 12. A method as recited in claim 9, wherein the multiple nodes are located on a single hardware node.
- 13. A method as recited in claim 9, further comprising an act of the multiple nodes communicating with each other through platform independent messages.
- 14. A method as recited in claim 13, wherein a message includes at least one of (i) a parameter, (ii) a return value, (iii) an instruction, and (iv) other data.
- 15. A method as recited in claim 9, further comprising an act of one or more nodes initializing one or more other nodes.
- 16. A method as recited in claim 1, wherein the at least one node is distributed across multiple hardware nodes.
- 17. A method as recited in claim 1, wherein no software component object is available initially, the method further comprising an act of scheduling the request of the particular functionality until the first software component object becomes available.
- 18. A method as recited in claim 1, wherein the first software component object is identified prior to requesting the particular functionality, the method further comprising an act of reserving the first software component object.
- 19. A method as recited in claim 1, further comprising acts of:
executing the first software component to perform the requested functionality; and returning a result.
- 20. In a computerized system with a plurality of software objects, including one or more software component objects, each comprising one or more functions, wherein an interface for accessing the one or more software component objects and corresponding one or more functions is based on parameters and return values, a method of dynamically accessing the one or more software component objects in accomplishing a task or goal, wherein the method comprises acts of:
creating a plurality of nodes, wherein each node includes (i) one or more software component objects each comprising one or more functions implementing a particular functionality, wherein each of the software component objects is independent and unaware of any other software component object, and (ii) a controller object that manages interaction with the one or more software component objects; requesting the particular functionality of at least one of the one or more functions of the one or more software component objects; dynamically identifying a first software component object that is capable of satisfying the request for the particular functionality, wherein the identification of the first software component object may persist only for the request, independent of any particular requester, allowing another software component object to be dynamically identified for a subsequent request, even where the subsequent request is from a prior requester; and calling the first software component object.
- 21. A method as recited in claim 20, wherein multiple software component objects are capable of satisfying the request for the particular functionality, the method further comprising an act of load balancing multiple requests for the particular functionality across the multiple software component objects.
- 22. A method as recited in claim 20, wherein at least one node further comprises a database object that provides access to at least one of (i) platform independent logic that defines a relationship between at least two software components, the logic including at least one of processing flow and one or more branching conditions, (ii) state information for one or more software component objects, and (iii) platform independent data, the method further comprising an act of accessing either the platform independent logic, the state information, or the platform independent data through the database object.
- 23. A method as recited in claim 22, wherein the database object of the at least one node accesses platform independent logic, the method further comprising the controller performing acts of:
executing the platform independent logic; and creating a request for the particular functionality.
- 24. A method as recited in claim 20, wherein at least one node further comprises a trace object capable of tracking the processing that occurs in the at least one node, the method further comprising an act of logging an operation of at least one function of the first software component object.
- 25. A method as recited in claim 20, wherein at least two of the plurality of nodes are remote from each other, one of the at least two nodes being a local node and the other being a remote node, and wherein at least one node includes an agent object that tracks which software component objects are available at each of several nodes for which the agent is responsible, wherein a given node is unable to identify a local software component object that is capable of satisfying the request for the particular functionality, and wherein the agent dynamically identifies the first software component.
- 26. A method as recited in claim 20, further comprising an act of at least two of the plurality of nodes communicating with each other through platform independent messages.
- 27. A method as recited in claim 20, further comprising an act of one or more nodes initializing at one or more other nodes.
- 28. A method as recited in claim 20, wherein no software component object is available initially, the method further comprising an act of scheduling the request of the particular functionality until the first software component object becomes available.
- 29. A method as recited in claim 20, wherein the first software component object is identified prior to requesting the particular functionality, the method further comprising an act of reserving the first software component object.
- 30. In a computerized system with a plurality of software objects, including one or more software component objects, each comprising one or more functions, wherein an interface for accessing the one or more software component objects and corresponding one or more functions is based on parameters and return values, a method of dynamically accessing the one or more software component objects in accomplishing a task or goal, wherein the method comprises steps for:
providing an environment that includes at least one node, wherein the at least one node includes (i) one or more software component objects each comprising one or more functions implementing a particular functionality, and (ii) a controller object that manages interaction with the one or more software component objects; generating a request for the particular functionality of at least one of the one or more functions of the one or more software component objects; dynamically locating a first software component object that is capable of satisfying the request for the particular functionality, wherein the dynamically locating permits another software component object to be dynamically located for a subsequent request, even where the subsequent request is from a prior requester; and running the first software component object.
- 31. A method as recited in claim 30, wherein multiple software component objects are capable of satisfying the request for the particular functionality, the method further comprising steps for:
generating a subsequent request for the particular functionality; dynamically locating a second software component object that is capable of satisfying the request for the particular functionality; and running the second software component object.
- 32. A method as recited in claim 30, wherein multiple software component objects are capable of satisfying the request for the particular functionality, and wherein the step for dynamically locating comprises acts of:
identifying the first software component; and load balancing multiple requests for the particular functionality across the multiple software component objects.
- 33. A method as recited in claim 30, wherein no software component object is available initially, and wherein the step for dynamically locating comprises an act of scheduling the request of the particular functionality until the first software component object becomes available.
- 34. A method as recited in claim 30, wherein the first software component object is located prior to generating a request for the particular functionality, and wherein the step for running the first software component object comprises acts of:
reserving the first software component object; calling the first software component object; executing the first software component object to perform the requested functionality; and returning a result.
- 35. A method as recited in claim 30, wherein the environment includes a plurality of software component objects, and wherein the plurality of software component objects themselves are completely independent and unaware of each other, and wherein the step for generating a request comprises acts of:
designing platform independent logic that defines a relationship between at least two of the plurality of software component objects, the logic including at least one of processing flow and one or more branching conditions; executing the platform independent logic; creating a request for the particular functionality; and requesting the particular functionality.
- 36. A method as recited in claim 30, wherein the step for providing an environment that includes at least one node comprises acts of:
creating the one or more software component objects for the at least one node; and creating the controller object for the at least one node.
- 37. A method as recited in claim 36, wherein the environment includes multiple nodes, and wherein at least two of the multiple nodes are remote from each other, one of the at least two multiple nodes being a local node and the other being a remote node.
- 38. A method as recited in claim 37, wherein the step for providing an environment further comprises an act of creating an agent object for one or more nodes, the agent object tracking which software component objects are available at each of several nodes for which the agent is responsible, wherein a given node is unable to identify a local software component object that is capable of satisfying the request for the particular functionality, and wherein the agent dynamically identifies the first software component.
- 39. A method as recited in claim 37, wherein the step for providing an environment further comprises an act of one or more nodes initializing one or more other nodes.
- 40. A method as recited in claim 37, further comprising the act of the multiple nodes communicating with each other through platform independent messages.
- 41. A method as recited in claim 36, wherein the step for providing an environment further comprises acts of:
creating a database object for the at least one node, the database object providing access to at least one of (i) platform independent logic, (ii) state information for the one or more software component objects; and (iii) platform independent data; accessing either the platform independent logic, the state information, or the platform independent data through the database object; creating a trace object that is capable of tracking the processing that occurs in the at least one node; and logging an operation of at least one function of the first software component object.
- 42. In a computerized system that allows for a plurality of software objects and may include one or more software component objects, each with one or more functions, and may include a controller object that manages interaction with the one or more software component objects, a method of dynamically accessing the one or more software component objects comprising acts of:
defining an interface for at least two software component objects, the interface specifying (i) each function of the one or more software objects, (ii) any parameters relevant to each function, and (iii) any return values relevant to each function; defining one or more relationships between the at least two software components, wherein the relationships or associations are separate and independent from any implementation of the at least two software component objects, and wherein the relationships or associations are stored as platform independent logic to be processed by a controller object; and defining an environment that specifies the location of the at least two software component objects, wherein the at least two software component objects may be distributed across one or more processing nodes.
- 43. A method as recited in claim 42, further comprising the act of dynamically identifying a first software component object that is capable of satisfying a request for particular functionality, wherein another software component may be dynamically identified for a subsequent request for the particular functionality.
- 44. A method as recited in claim 42, wherein the one or more processing nodes comprises at least one of (i) an agent object that tracks which software components are available at each of several nodes for which the agent is responsible, wherein the agent dynamically identifies a first software component, (ii) a database object that provides access to at least one of platform independent logic, state information, and platform independent data, and (iii) a trace object capable of tracking the processing that occurs in at least one processing node.
- 45. A method as recited in claim 42, wherein multiple software component objects are capable of satisfying a request for particular functionality, the method further comprising the act of load balancing multiple requests for the particular functionality across the multiple software components.
- 46. A method as recited in claim 42, the method further comprising at least one of the acts of (i) scheduling a request for particular functionality until a software component object capable of satisfying the request becomes available, and (ii) reserving a software component object prior to requesting particular functionality of the software component object.
- 47. A computer program product for implementing, in a computerized system with a plurality of software objects, including one or more software component objects, each comprising one or more functions, wherein an interface for accessing the one or more software component objects and corresponding one or more functions is based on parameters and return values, a method of dynamically accessing the one or more software component objects in accomplishing a task or goal, wherein the computer program product comprises:
a computer readable medium for carrying machine-executable instructions for implementing the method, wherein the method comprises the acts of:
creating at least one node, wherein the at least one node includes (i) one or more software component objects each comprising one or more functions implementing a particular functionality, and (ii) a controller object that manages interaction with the one or more software component objects; requesting the particular functionality of at least one of the one or more functions of the one or more software component objects; dynamically identifying a first software component object that is capable of satisfying the request for the particular functionality, wherein the identification of the first software component object may persist only for the request, independent of any particular requester, allowing another software component object to be dynamically identified for a subsequent request, even where the subsequent request is from a prior requester; and calling the first software component object.
- 48. A computer program product as recited in claim 47, wherein multiple software component objects are capable of satisfying the request for the particular functionality, the method further comprising acts of:
subsequently requesting the particular functionality; dynamically identifying a second software component object that is capable of satisfying the request for the particular functionality; and calling the second software component object.
- 49. A computer program product as recited in claim 47, wherein the at least one node includes a plurality of software component objects, and wherein the plurality of software component objects themselves are completely independent and unaware of each other, the method further comprising an act of designing platform independent logic that defines a relationship between at least two of the plurality of software component objects, the logic including at least one of processing flow and one or more branching conditions.
- 50. A computer program product as recited in claim 47, wherein multiple software component objects are capable of satisfying the request for the particular functionality, the method further comprising an act of load balancing multiple requests for the particular functionality across the multiple software component objects.
- 51. A computer program product as recited in claim 47, wherein the at least one node further comprises a database object that provides access to at least one of (i) platform independent logic, (ii) state information for one or more software component objects, and (iii) platform independent data, the method further comprising an act of accessing either the platform independent logic, the state information, or the platform independent data through the database object.
- 52. A computer program product as recited in claim 51, wherein the database object of the at least one node accesses platform independent logic, the method further comprising acts of:
executing the platform independent logic; and creating a request for the particular functionality.
- 53. A computer program product as recited in claim 47, wherein the at least one node further comprises a trace object capable of tracking the processing that occurs in the at least one node, the method further comprising an act of logging an operation of at least one function of the first software component object.
- 54. A computer program product as recited in claim 47, wherein the at least one node includes multiple nodes.
- 55. A computer program product as recited in claim 54, wherein at least two of the multiple nodes are remote from each other, one of the at least two nodes being a local node and the other being a remote node, and wherein one or more nodes include an agent object that tracks which software component objects are available at each of several nodes for which the agent is responsible, wherein a given node is unable to identify a local software component object that is capable of satisfying the request for the particular functionality, and wherein the agent dynamically identifies the first software component.
- 56. A computer program product as recited in claim 54, wherein the multiple nodes are located on a single hardware node.
- 57. A computer program product as recited in claim 54, the method further comprising an act of the multiple nodes communicating with each other through platform independent messages.
- 58. A computer program product as recited in claim 54, the method further comprising an act of one or more nodes initializing one or more other nodes.
- 59. A computer program product as recited in claim 47, wherein the at least one node is distributed across multiple hardware nodes.
- 60. A computer program product as recited in claim 47, wherein no software component object is available initially, the method further comprising an act of scheduling the request of the particular functionality until the first software component object becomes available.
- 61. A computer program product as recited in claim 47, wherein the first software component object is identified prior to requesting the particular functionality, the method further comprising an act of reserving the first software component object.
- 62. A computer program product as recited in claim 47, the method further comprising acts of:
executing the first software component to perform the requested functionality; and returning a result.
RELATED APPLICATIONS
[0001] This application is a continuation-in-part of U.S. application Ser. No. 09/265,287, entitled “VIRTUAL PROCESSING NETWORK ENABLER,” and filed on Mar. 9, 1999; this application also claims the benefit of U.S. Provisional Application No. 60/263,462, entitled “METHODS, SYSTEMS, AND COMPUTER PROGRAM PRODUCTS FOR DEVELOPING AND ACCESSING SOFTWARE COMPONENTS,” and filed on Jan. 22, 2001. Each of the foregoing applications is hereby incorporated by reference.
Provisional Applications (1)
|
Number |
Date |
Country |
|
60263462 |
Jan 2001 |
US |
Continuation in Parts (1)
|
Number |
Date |
Country |
Parent |
09265287 |
Mar 1999 |
US |
Child |
09829673 |
Apr 2001 |
US |