A search engine is provided for searching, evaluating and/or optimizing an emergent model on a computer network. The emergent model is created by independently generating, publishing references to, and subscribing to data objects and/or function objects in a manner free of a globally predefined data object and/or function object definition. Messages are sent to referencing data objects and/or function objects when referenced data objects and/or function objects change. functions within the function objects are solved when the messages are received. The data objects and/or the function objects are stored in a distributed manner across multiple computing devices on a computer network. At least one of the data objects is defined as an input data object and at least one of the data objects is defined as an output data object to a search engine, the search engine generating changes to the input data object until the output data object satisfies a predefined criteria.
|
0. 32. A non-transitory computer readable medium having instructions stored thereon that, when executed by a computing device, result in:
generating objects at least one of which comprises a function object configured to define interdependencies within a model by providing solvable expressions that relate objects;
publishing identifiers for the objects;
subscribing to the objects responsive to the published identifiers by referencing one object within a function object to link the one object with the function object in a network of objects;
solving the solvable expressions responsive to receiving a message that the one object referenced within the function object has changed;
invoking methods responsive to objects requiring information; and
defining an input object and an output object of a search engine, the search engine being configured to generate changes to the input object until the output object satisfies a predefined criteria;
where the network of objects interoperates with other networks of objects in a manner free of a globally predefined network of objects to generate an emergent model; and
where the emergent model includes one or more models having corresponding computer instructions that describe a system.
0. 52. An apparatus for generating an emergent model on a computer network, comprising:
means for generating objects at least one of which comprises a function object configured to define interdependencies within a model by providing solvable expressions that relate interdependencies between objects;
means for publishing identifiers for the objects;
means for subscribing to the objects responsive to the published identifiers by referencing one object within another object to link the one object with the another object in a network of objects;
means for solving the solvable expressions responsive to receiving a message that the one object referenced within the another object has changed;
means for invoking methods responsive to objects requiring information; and
means for defining an input object and an output object of a search engine, the search engine being configured to generate changes to the input object until the output object satisfies a predefined criteria;
where the network of objects interoperates with other networks of objects in a manner free of a globally predefined network of objects to generate the emergent model; and
where the emergent model comprises at least one model having computer instructions that describe a system.
0. 42. An apparatus for generating an emergent model on a computer network, the emergent model including at least one model having computer instructions that describe a system, comprising:
a plurality of objects at least one of which comprises a function object configured to define interdependencies within the model by providing solvable expressions that relate objects;
a plurality of identifiers, each identifier configured to identify a corresponding object;
a publisher configured to publish the plurality of identifiers;
a subscriber configured to create relationships between the plurality of objects responsive to the published plurality of identifiers by referencing one object within a function object to create a network of objects that interrelate free of a globally predefined network of objects;
a solver configured to solve the solvable expressions responsive to a message that the one object referenced in the function object has changed;
an invoker configured to invoke methods on the least one object responsive to the at least one object requiring information;
an input object;
an output object configured to generate changes to the input object until the output object satisfies a predefined criteria provided to a search engine; and
a storage device configured to store the plurality of objects.
0. 22. An apparatus for generating an emergent model including one or more models that describe a system, comprising:
at least one storage device; and
a processor configured to execute instructions stored in the at least one storage device that result in:
generating data and/or function objects, at least one of the function objects configured to define interdependencies within the emergent model by providing solvable expressions that relate the data and/or function objects;
publishing identifiers for the data and/or function objects;
subscribing to the data and/or function objects in response to the published identifiers by referencing one data and/or function object within at least another function object to link the one data and/or function object with the at least another function object in a network of data and/or function objects;
invoking methods in response to data and/or function objects requiring information;
solving the solvable expressions responsive to receiving a message that the one data and/or function object referenced within the at least another function object has changed; and
defining an input object and an output object of a search engine configured to generate changes to the input object until the output object satisfies a predefined criteria;
where the network of data and/or function objects interoperates with other networks of data and/or function objects in a manner free of a globally predefined network of objects to generate the emergent model.
11. A method of providing an engine for optimizing a decentralized model on a computer network, the decentralized model including one or more models having computer instructions and data that describe behavior of a system and/or evaluate the system, comprising the steps of:
generating data objects and/or function objects, at least same of the data objects and/or function objects being model inputs and/or model outputs, at least some of the function objects defining interdependencies within a model by providing solvable expressions that relate data objects and/or function objects;
publishing identifiers for the data objects and/or the function objects;
subscribing to the data objects and/or the function objects by creating relationships between the data objects and/or the function objects by referencing the data objects and/or the function objects within the function objects, thereby linking the data objects and/or the function objects, wherein networks of linked data objects and/or function objects emerge;
sending messages to referencing data objects and/or function objects when referenced data objects and/or referenced function objects change;
invoking methods on data objects and/or function objects when data objects and/or function objects require information;
solving the expressions within the function objects when the messages are received;
storing the data objects and/or the function objects in a central location on a single computing device or in a distributed manner across multiple computing devices on a computer network;
defining at least one of the data objects as an input data object and defining at least one of data objects as an output data object to a search engine, the search engine generating changes to the input data object until the output data object satisfies a predefined criteria; and
wherein the relationships between the data objects and/or function objects are created without using a single coordinating computing device, or are created using multiple coordinating computing devices on the computer network.
1. A method of providing an engine for searching and/or optimizing an emergent model on a computer network, the emergent model including one or more models having computer instructions and data that describe behavior of a system and/or evaluate the system, comprising the steps of:
generating data objects and/or function objects, at least some of the data objects and/or function objects being model inputs and/or model outputs, at least some of the function objects defining interdependencies within a model by providing solvable expressions that relate data objects and/or function objects;
publishing identifiers for the data objects and/or the function objects;
subscribing to the data objects and/or the function objects by creating relationships between the data objects and/or the function objects by referencing the data objects and/or the function objects within the function objects, thereby linking the data objects and/or the function objects, wherein networks of linked data objects and/or function objects emerge;
sending messages to referencing data objects and/or function objects when referenced data objects and/or referenced function objects change;
invoking methods on data objects and/or function objects when data objects and/or function objects require information;
solving the expressions within the function objects when the messages are received;
storing the data objects and/or the function objects in a central location on a single computing device or in a distributed manner across multiple computing devices on a computer network; and
defining at least one of the data objects and/or function objects as an input object and defining at least one of the data objects and/or function objects as an output object to a search engine, the search engine generating changes to the input object until the output object satisfies a predefined criteria; and
wherein the emergent networks of linked data objects and/or function objects are independently published to, and subscribed to, in a manner free of a globally predefined network of data objects and/or function objects, thereby generating the emergent model.
2. The method of
3. The method of
4. The method of
5. The method of
6. The method of
7. The method of
8. The method of
9. The method of
10. The method of
12. The method of
13. The method of
14. The method of
15. The method of
16. The method of
17. The method of
18. The method of
19. The method of
20. The method of
21. The method of
0. 23. The apparatus of claim 22 where the processor is further configured to execute instructions that result in enabling or disabling of the message responsive to at least one of a message source, message destination, or message contents.
0. 24. The apparatus of claim 22 where the processor is further configured to execute instructions that result in storing the data and/or function objects in a central location on a single computing device or in a distributed manner across multiple computing devices.
0. 25. The apparatus of claim 24 where the processor is further configured to execute instructions that result in configuring at least part of the network of data and/or function objects to identify at least one of a plurality of computing devices on a network to generate a corresponding data and/or function object within the network of data and/or function objects.
0. 26. The apparatus of claim 22 where the processor is further configured to execute instructions that result in defining a user interface to display the data and/or function objects on at least one computing device using a client or server process.
0. 27. The apparatus of claim 26 where the processor is further configured to execute instructions that result in viewing the data and/or function objects of the network of data and/or function objects or the data and/or function objects of other networks on any computing device coupled to a network.
0. 28. The apparatus of claim 22 where the processor is further configured to execute instructions that result in storing the data and/or function objects in the storage device in logical groups.
0. 29. The apparatus of claim 22 where the processor is further configured to execute instructions that result in publishing the identifiers for the data and/or function objects using at least one of electronic media, print media, human conversation, or human interaction.
0. 30. The apparatus of claim 22 where the processor is further configured to execute instructions that result in mapping the data and/or function objects stored in at least one of an application program, database, or computer code library.
0. 31. The apparatus of claim 22 where the processor is further configured to execute instructions that result in implementing function objects using computer code that is compiled, dynamically linked, interpreted, or evaluated at run time, or combinations thereof.
0. 33. The computer readable medium ot claim 32 further comprising enabling or disabling of the message responsive to at least one of a message source, message destination, or message contents.
0. 34. The computer readable medium of claim 32 further comprising storing the objects in a central location on a single computing device or in a distributed manner across multiple computing devices.
0. 35. The computer readable medium of claim 32 further comprising configuring at least part of the network of objects to identify at least one of a plurality of computing devices on a network to generate a corresponding object within the network of objects.
0. 36. The computer readable medium of claim 32 further comprising defining a user interface to display the objects on at least one computing device using a client or server process.
0. 37. The computer readable medium of claim 32 further comprising viewing the objects of the network of objects or the objects of other networks on any computing device coupled to a network.
0. 38. The computer readable medium of claim 32 further comprising storing the objects in a storage device in logical groups.
0. 39. The computer readable medium of claim 32 further comprising publishing the identifiers for the objects using at least one of electronic media, print media, human conversation, or human interaction.
0. 40. The computer readable medium of claim 32 further where generating the objects comprises mapping the objects stored in at least one of an application program, database, or computer code library.
0. 41. The computer readable medium of claim 32 further comprising implementing function objects using computer code that is compiled, dynamically linked, interpreted, or evaluated at run time, or combinations thereof.
0. 43. The apparatus of claim 42 where the message is configured to be enabled responsive to at least one of a message source, message destination, or message contents.
0. 44. The apparatus of claim 42 where the storage device is further configured to store the plurality of objects in a central location on a single computing device or in a distributed manner across multiple computing devices.
0. 45. The apparatus of claim 42 where the subscriber is further configured to identify at least one computing device on a network of computing devices to generate a corresponding object within the network of objects.
0. 46. The apparatus of claim 42 further comprising a user interface configured to display the plurality of objects on at least one client or server in the computer network.
0. 47. The apparatus of claim 42 further comprising a display configured to display the plurality of objects of the network of objects or the plurality of objects in other networks of objects.
0. 48. The apparatus of claim 42 where the storage device is configured to store the plurality of objects in logical groups.
0. 49. The apparatus of claim 42 where the publisher is configured to publish the plurality of identifiers in at least one of electronic media, print media, human conversation, or human interaction.
0. 50. The apparatus of claim 42 where the storage device is further configured to map the plurality of objects stored in at least one of an application program, database, or computer code library.
0. 51. The apparatus of claim 42 further comprising a run time compiler configured to compile, dynamically link, interpret, or evaluate, at run time, computer code implementing the plurality of objects.
0. 53. The apparatus of claim 52 further comprising means for enabling the message responsive to at least one of a message source, message destination, or message contents.
0. 54. The apparatus of claim 52 further comprising means for storing the objects in a central location on a single computing device or in a distributed manner across multiple computing devices.
0. 55. The apparatus of claim 52 further comprising means for configuring at least part of the network of objects to identify at least one of a plurality of computing devices on a network to generate a corresponding object within the network of objects.
0. 56. The apparatus of claim 52 further comprising means for defining a user interface to display the objects on at least one computing device using a client or server process.
0. 57. The apparatus of claim 52 further comprising means for viewing the objects of the network of objects or the objects of other networks on any computing device coupled to a network.
0. 58. The apparatus of claim 52 further comprising means for storing the objects in a storage device in logical groups.
0. 59. The apparatus of claim 52 further comprising means for publishing the identifiers for the objects using at least one of electronic media, print media, human conversation, or human interaction.
0. 60. The apparatus of claim 52 where means for generating the objects comprises mapping the objects stored in at least one of an application program, database, or computer code library.
0. 61. The apparatus of claim 52 further comprising means for implementing function objects using computer code that is compiled, dynamically linked, interpreted, or evaluated at run time, or combinations thereof.
|
This application claims the benefit of U.S. Provisional Application No. 60/215,917 and U.S. Provisional Application No. 60/215,903, both filed on Jul. 3, 2000. The entire teachings of the above provisional application(s) are incorporated herein by reference. This application is related to United States Patent Applications titled: METHOD AND APPARATUS FOR GENERATING AN EMERGENT MODEL ON A COMPUTER NETWORK by Matthew B. Wall and Timothy R. Wall (application Ser. No. 09/898/507, now U.S. Pat. No. 7,043,736); METHOD AND APPARATUS FOR GENERATING A DECENTRALIZED MODEL ON A COMPUTER NETWORK by Matthew B. Wall and Timothy R. Wall (application Ser. No. 09/898,501, now U.S. Pat. No. 7,062,771); and METHOD FOR MAPPING BUSINESS PROCESSES USING AN EMERGENT MODEL ON A COMPUTER NETWORK by Matthew B. Wall and Timothy R. Wall (application Ser. No. 09/898,527, now U.S. Pat. No. 7,131,107), these related applications filed on even date herewith and commonly owned by the owner of this application. This application is also related to United States Patent Application titled: METHOD AND APPARATUS FOR PROVIDING ACCESS CONTROL FOR A DECENTRALIZED OR EMERGENT MODEL ON A COMPUTER NETWORK by Matthew B. Wall and Timothy R. Wall (application Ser. No. 10/040,161, now U.S. Pat. No. 7,080,384) filed on Oct. 22, 2001, which claims foreign priority benefits under 35 U.S.C. 119(a)-(d) to International Application PCT/US01/21171 filed on even date herewith and commonly owned by the owner of this application.
This invention relates generally to computer based methods of modeling processes, and more specifically to a method and apparatus for providing a search engine for optimizing a decentralized or emergent model on a computer network.
Modeling is a process of describing the behavior of a system, possibly through the use of computers, such that the system's behavior can be predicted based upon varying inputs. Models can describe objects (entities) and their inter-relationships using mathematical equations. For example, a spreadsheet tool can be used to build a financial model of a particular business (system) to predict financial behavior, thus allowing a user to evaluate and choose among various solutions (designs).
Certain models are constructed from a set of modules (objects) that present an input and output interface. The inputs and outputs form connections and dependencies to use in integrating the objects to construct the model. Individual objects, although integrated, may be stored in a distributed fashion over a computer network. Objects themselves may be comprised of multiple objects.
Different types of objects are used to relate information concerning different aspects of the system being modeled. Physical/mechanical modeling can produce solid models, surface models, three-dimensional models, two-dimensional models, and wire-frame models, and can be used to convey the physical aspects of a system within a defined space. Design modeling can be built to predict a system's behavior for a given set of design variables. Design models allow for the modification of their input variables to achieve a desired performance characteristic. Evaluation models can compare performance characteristics of a design model against specific value structures to access design alternatives.
The product design process is an example of a process that can include physical modeling, design modeling and evaluation modeling. Some people refer to these models in product design as Simulation Based Design. Product design is a complex and collaborative process that is often multi-disciplinary and multi-objective. These aspects of the product design process require a robust modeling framework.
An example of Simulation Based Design (“SBD”) is a program sponsored by the Defense Advanced Research Project Agency (“DARPA”) in cooperation with Lockheed Martin Missiles & Space company. The goal of SBD software is to enable an enterprise to perform “faster, better, cheaper” by establishing flexible, efficient communications channels among human participants and software tools across heterogenous resources. This work is directed to developing a collaborative distributed computing infrastructure. Their work can be used as a framework for providing interoperability for a range of software (e.g., design/modeling) tools based on a Common Object Request Broker Architecture (“CORBA”) backplane. The NetBuilder application from Lockheed Martin Missiles & Space company is a framework for integrating and linking design and modeling components. An object-oriented repository for storing model components and a dynamic object server for maintaining various aspects of product development and interactions between multiple development disciplines. Legacy components within the NetBuilder framework are “wrapped” to encapsulate their capabilities, allowing legacy components to be linked with non-legacy components within the framework. Agents are also used within the NetBuilder framework to encapsulate information management paradigms, publish/subscribe information and manage automation of distributed workflow processes. NetBuilder acts as middleware to coordinate the development process.
MIT-DOME (Distrilbuted Object-based Modeling and Evaluation) is a distributed modeling environment for integrated modeling that is used at the MIT CADLab (Senin, 1997; Pahng, 1998). In this environment, designers can easily build object-oriented models visualized as entity-relationship graphs. Both discrete and continuous variable types are allowed in the models. Models can be arranged into sub-models, these sub-models can be referenced in so called “catalogs” that allow for the selection of different sub-models when constructing a model. In MIT-DOME, model inputs with uncertain values can be defined as probability density functions, and these uncertainties are automatically propagated through the model using Monte Carlo simulation and other methods. MIT-DOME users also set goals or specifications and are provided with a design alternative which can be calculated. A built-in optimization tool, using a genetic algorithm as a solver, manipulates independent parameters and catalog choices to find an optimal tradeoff between model goals.
Existing modeling frameworks (e.g., MIT's DOME) do provide some physical modeling, design modeling and evaluation modeling within a distributed and integrated framework, but these frameworks lack the ability to create emergent models.
An emergent model is a model that is created without a predefined or global definition, such that the emergent model arises from a dynamic, integrated model built on a distributed, multi-computing device network. An emergent model is comprised of data objects (modules) and/or function objects (modules) that are linked and distributed across multiple computing devices on a computer network. A search engine is disclosed for optimizing an emergent model on a computer network
The present invention provides the capability to publish model data and integrate that data to predict system performance. The emergent model is then evaluated and optimized. The present invention can be viewed as a Web Server for engineering, product and business data. No other company currently provides customers a means to create live data links across the Internet in a software neutral environment for the purpose of creating an emergent model. The Web-enabled, realtime business-to-business interfaces of the present invention reduce the time/cost to market for product development, as well as increase abilities to manage the product supply chain.
Accordingly, the present invention provides access control for a model on a computer network. In one embodiment of the present invention a method for providing access control for an emergent model comprises generating data objects and/or function objects, publishing references to the data objects and/or the function objects and subscribing to the data objects and/or the functions by creating relationships between the data objects and/or the function objects through referencing data objects within the function objects, thereby linking the data objects and/or the function objects, wherein networks of linked data objects and/or function objects emerge. The emergent linked data objects and/or function objects are make available for further linking with other data objects and/or function objects and messages are sent to referencing data objects and/or function objects when referenced data objects and/or referenced function objects change. The functions are solved when the messages are received, thereby causing at least one of the referenced data to be changed. The data objects and/or the function objects are stored in a distributed manner across multiple computing devices on a computer network. The emergent linked data objects and/or function objects are independently published to, and subscribed to, in a manner free of a globally predefined data object and/or function object definition, thereby generating the emergent model. Access control is provided by identifying users of the emergent model and assigning appropriate read, write, execute and administrative permissions on a per data objects and/or function objects basis such that the permissions are used to limit access to the data objects and/or function objects. At least one of the data objects is defined as an input data object and defining at least one of data objects is defined as an output data object to a search engine, the search engine generating changes to the input data object until the output data object satisfies a predefined criteria.
The foregoing and other objects, features and advantages of the invention will be apparent from the following more particular description of preferred embodiments of the invention, as illustrated in the accompanying drawings in which like reference characters refer to the same parts throughout the different views. The drawings are not necessarily to scale, emphasis instead being placed upon illustrating the principles of the invention.
A description of preferred embodiments of the invention follows. Various subsets of the above described distributed combinations exist in the prior art. Many systems provide non-distributed storage, execution and access (fully-centralized). MIT-DOME provides distributed storage with non-distributed execution and access. Other systems (e.g., ModelCenter™ by Phoenix Integration of Blacksburg, Va.) provide various combinations of distributed execution, storage or access, but only the present invention combines fully-distributed execution, storage and access to generate emergent models.
In a system generating an emergent model it is often desirable to represent aspects of the system using an object-oriented paradigm, in which a system is viewed as a collection of discrete objects that are self-contained collections of data structures and routines having the ability to interact with other objects in the system. Object-oriented systems provide for the definition of classes that are used to create (instantiate) objects of that class. The objects allow for the encapsulation of data and provide well defined interfaces for other objects to use when sending data to, or receiving data from, an object. One class definition can inherit the capabilities of another, allowing more complex classes to be built from simpler, underlying classes. These classes can also specify certain behaviors that are only fully defined at run-time. The combination of features provided in object-oriented systems help create a platform for hosting an embodiment of the present invention used to generate emergent models.
In the present invention, models are collections of computer instructions and data that present an interface for describing the behavior of part of a system being modeled, such that the interface is understood by other parts of the system. The present invention provides for generating an emergent model consisting of one or more models where a model consists of one or more objects, therefore a model can contain a complex hierarchy of submodels. Objects can be model inputs and outputs that are made available to relate various models to one another. These objects are implemented using standard distributed object management techniques (e.g., CORBA, DCOM). As such, each object has a corresponding object reference.
CORBA stands for Common Object Request Broker Architecture. A specification developed by the Object Management Group in 1992 in which pieces of programs (objects) communicate with other objects in other programs, even if the two programs are written in different programming languages and are running on different computing platforms. A program makes its request for objects through an object request broker (ORB), and thus does not need to know the structure of the program from where the object comes. DCOM is an acronym for Distributed Component Object Model, the version of Microsoft's Component Object Model (COM) specification that stipulates how components, communicate over Windows-based networks. DCOM permits the distribution of different components for a single application across two or more networked computers, running an application distributed across a network so that the distribution of components is not apparent to the user, and remotely displaying an application.
In the present invention, the object reference can consist of a relative Uniform Resource Identifier (URL) component and/or a unique Uniform Resource Identifier (URI) component. Distributed object management techniques provide for the resolution of an object reference into a proxy object suitable for making method invocations on the corresponding remote object. Techniques for sending messages between objects in a distributed object system are common. The present invention sends and receives change messages that contain the object reference of the source of the message as well as information indicating how the source object changed. Common to message sending techniques is the option of having the sending object block or not block while the receiving object processes the message. In the present invention, blocking message processing is used.
In the present invention, objects have two primary types, that of data objects and function objects. Objects can have objects and/or object references as attributes allowing objects to be used to organize other objects. Objects can have attributes that are of numeric (e.g., floating point, integer and imaginary), string, boolean, vector, matrix, table and file type. Numeric attributes can be deterministic or probabilistic. Interdependencies or relationships within a model can be defined using function objects. Interfaces to existing information or systems can be defined using a combination of data objects and function objects.
In the present invention, objects can have constraints that are used to define the behavior of an object. Constraints are attributes of each object, are associated with methods of the object and corresponding constraints are checked when method invocations are made on the object. If a check indicates that a corresponding constraint is violated the method invocation is not completed, which can result in an error message/code being returned to the invoker of the method. Constraints can be placed on an object such that it will be unavailable as an input and/or an output of a model. Types of constraints include but are not limited to dependency constraints, permissions/access control constraints, data type constraints, units constraints and message propagation constraints.
A dependency constraint can be added to a data object when the data object's value is set by a function object. While the constraint is in place, only that function object corresponding to the constraint can set the value of the data object. Objects that are dependent on other objects can only be outputs (read-only) because their values are constrained by that dependency. Once an object has a dependency constraint additional dependency relationships can not be created with other function objects. Dependency constraints prevent loops from being formed in the relationships between objects.
Access/permission settings are another way in which to create constraints on an object. Information specifying which users or objects can view, edit, execute (solve) or administrate an object are placed in an access policy constraint. Invocations of methods on objects that have access constraints are only permitted if the invoker is listed in the constraint as having permission to invoke the method. For example, a getValue( ) method can only be invoked by an invoker with view permissions in the corresponding access constraint. Objects are only outputs for users with read-only permissions for those objects (e.g., a read-only object can not be written by another function object). Objects are only inputs for users with write-only permissions for those objects. Objects are inputs and outputs for users with read-write permissions for those objects.
Message propagation constraints are checked when a message is sent and/or received, which can prevent messages from being sent or received. Message propagation constraints can reference message routing information such as source and destination object references and message content information such as the new or old value associated with a value change of a data object. Access constraints are also used as message constraints to prevent users from obtaining data in messages for objects for which they do not have permissions to view data. A “trigger” message constraint on a function object determines when a function object is “triggered” to solve its expression. Trigger constraint modes include: “any”, “all”, “none” and “custom”. The “any” trigger allows a function object to solve when any object referenced by function sends a message that it changed, whereas “none” prevents automatic re-evaluation when objects referenced by the function object change. The “all” trigger requires that all objects referenced by the function send change messages in order for a re-evaluation to occur. The “custom” trigger is a hook provided for another object to determine if a function should be solved.
Data objects contain data as attributes and provide methods for getting and setting the attributes. A data object sends a change message to objects registered to listen for change messages when the data object changes. A number data object is an example of a data object implemented by the present invention. A number object has a name, value and units attributes, as well as an access policy constraint associated with the methods of the object. When values of data objects are set, coercion is performed using common techniques and rules. Data objects that are coercible without data loss are coerced. Coercion that could result in data loss is detected and can be flagged for approval by a user.
A unit is a particular physical quantity, defined and adopted by convention, with which other particular quantities of the same kind are compared to express their value. The International System of Units (SI) defines seven base units:
length
meter,
mass
kilogram,
time
second,
electric current
ampere,
thermodynamic
temperature,
amount of substance
mole,
luminous intensity
candela.
Function objects provide behavior by providing expressions that can relate data objects and function objects thereby creating networks of linked function objects and data objects. Function objects have a name, an expression, an object reference table and a solver attribute as well as access policy and trigger message propagation constraints. The expression can be thought of as a function with a plurality of inputs and output objects, which is evaluated by the solver. The expression text can be defined using various programming languages including Basic, C, C++ and Java, among others. The object reference table can contain references to data objects and function objects. The expression text can contain portions that specify method calls on the objects referenced in the object reference table. The solver evaluates the expression text, which may result in changes to objects referenced by the function object. Solvers can be implemented using compilers, interpreters or entire legacy applications. The function object solves the expression when a change message is received from one of the objects referenced by the function object. Function objects can also be solved manually by a user. Dependency constraints are optionally placed on data objects that have their values set by the expression of a function object.
An equivalence function object is an example of a function object implemented with the present invention. The following simplified example illustrates an equivalence function object that keeps several data objects equivalent (i.e., if one of the data object values changes, then the other data object values are changed such that their values match). In this example, the equivalence function is used in combination with a number data object, further providing an example of a message propagation constraint being applied.
function object: equivalence {
referenced objects table
receive message {
if (constraints are met) {
solve the function expression using solver( )
}
}
function expression {
get the changed object value
for (each referenced table entry) {
if (reference does not correspond to changed object) {
set referenced object value to the obtained object value
}
}
}
solver {
solve the function expression...
}
access policy constraints {
check invoker permissions...
}
add object reference {
add an entry in the referenced objects table
register with the object to enable message receiving
}
remove object reference {
remove an entry in the referenced objects table
de-register with the object to disable message receiving
}
}
data object: number {
table of object references of registered message receivers
name
value
set value method {
set number value to new value
for (each reference table entry) {
if (message propagation and access constraints are met)
send a message to referenced object indicating
value has changed
}
}
}
get value method {
provide number value to requester;
}
message propagation constraint {
if (reference corresponds to the object value changer) {
disallow the message to be sent
} else {
allow message to be sent
}
}
access policy constraint {
all users and/or objects can get and set the name and value
}
add object reference {
add an entry in the table of object
references of registered message receivers
}
remove object reference {
remove an entry in the table of object
references of registered message receivers
}
}
A model is generated by creating instances of data objects and/or function objects. In the process of generating, the contents of an object can be obtained from and coordinated with the data and or functions of a legacy application using the known application programming interfaces (APIs) of the application. For example, a data module can have its value match that of a cell in a spreadsheet.
An object is made available by publishing it. Publishing is done using standard distributed object management techniques whereby objects are made available in a standard way to be activated and used by a subscriber to the object. When published, each data object and function object has an object reference that can be used to access and control that object. Once an object is published, the object's object reference, usually a URL, is communicated to prospective users via conventional techniques (e-mail, posting a message), or a prospective user initiates a search that reveals the object reference of the published object.
A object is subscribed to by adding the object reference to the referenced objects table of a function object. This also results in have a reference to the function object placed in the table of message recieves of the referenced object, which is a standard part of enabling messages to be sent from referenced objects to referencing objects.
When a referenced object changes a message will be sent to any referencing objects which will solve their expressions subject to constraints. Solving the expressions may result in data objects being changed.
At any time additional objects can be generated, published and subscribed to by different users or objects representing users. As these steps are carried out a network of linked data objects and function objects emerges which is an emergent model. These steps can also be guided by a definition of a network of objects that is desired.
The values of the data objects of an emergent model can be optimized. Standard optimization packages are available that can be interfaced in known ways to an object environment such as the one described in the present invention. For example, known optimization algorithms can be accessed by the expression of a function object so that the optimization algorithm will be run when the function object is solved. Objects are identified as inputs and outputs for the optimization algorithm to use. The optimization algorithm is given a set of typical criteria for stopping the algorithm to prevent too many resources from being consumed. When the optimization algorithm is run it changes the input objects according to the algorithm design and the resulting changes to the output objects. The output objects change because they are linked to the input objects in a network of function objects and data objects. The optimization stops when the stopping conditions are reached, after which the optimal values of the data objects can be viewed or accessed by other data objects.
Models (302-322) are collections of computer instructions and data that present an interface for describing the behavior of part of a system being modeled, such that the interface is understood by other parts of the system. This interface is one means by which models communicate the outputs that they produce and the inputs that they require. The models (302-322) may store data using their own storage subsystem or they may use a common data repository. The objects themselves can be stored within a file system, a database or a product data management system.
Legacy applications (352-374) are collections of computer instructions that present an interface existed prior to the use of a newer system. Legacy applications (352-374) require a change in process or technique, such as translating data files formats in order to interface with the new system being modeled. Often this translation is accomplished through the use of “wrappers” provided by the new system. These wrappers allow legacy applications (352-374) to interface with models (302-322) to generate an emergent model 300. Additionally, objects of the present system can interface with legacy applications through code libraries loaded by these applications, using the legacy application's API. Although the existence of legacy applications (352-374) is not required for the creation of an emergent model 300, their use often reduces the time required to generate an emergent model. Legacy applications (352-374) may also include enterprise-wide tools, such Enterprise Resource Planning (“ERP”) systems (e.g., SAP R/3 from SAP America Inc. in Newtown Square, Pa.).
An example of an emergent model 300 that includes models (302-322) and legacy applications (352-374) is an emergent model 300 for modeling the product design of a power tool. Aspects of the power tool product design, including its shell and motor as well as its performance, environmental impact and cost are modeled. A model for the shell of the power tool may already exist in a conventional mechanical design tool (e.g., Pro/ENGINEER from PTC Corporation in Waltham, Mass.) and a model relating to its environmental impact may already exist in a spreadsheet tool (e.g., Microsoft® Excel from Microsoft Corporation in Redmond, Wash.). These legacy applications (352-374) are associated with native models (302-322) for the power tool motor, performance and cost to generate an emergent model 300.
The inputs of a model are made available by publishing the model in such a way that another model requiring inputs subscribes to them. Traditionally, providers of components might publish their availability in paper catalogs, designers would then look for a component that match their criteria in the catalog. If a conforming component was found, its parameters could then be used to model an aspect of the system of interest being modeled. In an integrated and distributed model implemented on a computer network this publish and subscribe mechanism can be emulated by connecting the various inputs and outputs of the models in such a way that an emergent model is created when underlying models are run.
Length object 530 and width object 540 are unconstrained either by dependencies or by access/permissions (both have public access). Area object 550 is constrained as read-only due to the fact that its value is determined by solver 510 of area function object 520. Additionally, area object 550 is defined as private for access/permissions indicating that some users have restricted access to its value.
This example shows the area object 520 defined as Object_Y, where Object_Y, along with Object_X, is contained in Model_A. Model_A is stored on CO_Server—2, along with Model_B and a Directory of Models. This hierarchy represents only one arrangement for defining area object 520, other model organizations could be generated to define an equivalent model.
While this invention has been particularly shown and described with references to preferred embodiments thereof, it will be understood by those skilled in the art that various changes in form and details may be made therein without departing from the scope of the invention encompassed by the appended claims. Specifically, combinations of data objects and/or function objects form a model according to the present invention.
Patent | Priority | Assignee | Title |
Patent | Priority | Assignee | Title |
5317729, | Oct 24 1990 | INTERNATIONAL BUSINESS MACHINES CORPORATION, A CORP OF NY | Method for the storage of multi-versioned data with retrieval based on searched query |
5517655, | Apr 26 1991 | HEWLETT-PACKARD DEVELOPMENT COMPANY, L P | Method for monitoring transactions in an object-oriented environment |
5550976, | Dec 08 1992 | NMETRIC, LLC | Decentralized distributed asynchronous object oriented system and method for electronic data management, storage, and communication |
5724575, | Feb 25 1994 | WebMD Corporation | Method and system for object-based relational distributed databases |
5787080, | Jun 03 1996 | Philips Electronics North America Corporation | Method and apparatus for reservation-based wireless-ATM local area network |
5796986, | May 19 1995 | HEWLETT-PACKARD DEVELOPMENT COMPANY, L P | Method and apparatus for linking computer aided design databases with numerical control machine database |
5838973, | May 03 1996 | Accenture Global Services Limited | System and method for interactively transforming a system or process into a visual representation |
5881268, | Mar 14 1996 | International Business Machines Corporation | Comparative performance modeling for distributed object oriented applications |
5930512, | Oct 18 1996 | International Business Machines Corporation | Method and apparatus for building and running workflow process models using a hypertext markup language |
6195625, | Feb 26 1999 | ENGINEERING DYNAMICS COORPORATION | Method for simulating collisions |
6349342, | Mar 22 1995 | Sun Microsystems, Inc. | Methods and apparatus for managing computer processes |
6526455, | Feb 05 1996 | Object management method, apparatus and data structure | |
6629128, | Nov 30 1999 | MEC MANAGEMENT, LLC | System and method for distributed processing in a computer network |
6633922, | Dec 15 1997 | International Business Machines Corporation | Object access mechanism that dynamically switches between multiple distributed access models |
6898791, | Apr 21 1998 | California Institute of Technology | Infospheres distributed object system |
7039920, | Jul 03 2000 | Oculus Technologies Corporation; Ocls Applications, LLC | Method and apparatus for providing a search engine for optimizing a decentralized or emergent model on a computer network |
7043736, | Jul 03 2000 | S AQUA SEMICONDUCTOR, LLC | Method and apparatus for generating an emergent model on a computer network |
7062771, | Jul 03 2000 | S AQUA SEMICONDUCTOR, LLC | Method and apparatus for generating a decentralized model on a computer network |
7478405, | Feb 23 1999 | Microsoft Technology Licensing, LLC | Object connectivity through loosely coupled publish and subscribe events |
7661109, | Dec 31 1998 | Microsoft Technology Licensing, LLC | Transporting objects between a client and a server |
20020062463, | |||
20030046047, | |||
WO2003198, | |||
WO9815908, | |||
WO9815908, |
Executed on | Assignor | Assignee | Conveyance | Frame | Reel | Doc |
Jan 08 2002 | WALL, MATTHEW B | Oculus Technologies Corporation | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 027208 | /0265 | |
Jan 08 2002 | WALL, TIMOTHY R | Oculus Technologies Corporation | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 027208 | /0265 | |
Jan 17 2007 | Oculus Technologies Corporation | Ocls Applications, LLC | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 020894 | /0243 | |
Jan 17 2007 | WALL, MATTHEW B | Oculus Technologies Corporation | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 027208 | /0556 | |
Jan 17 2007 | WALL, TIMOTHY R | Oculus Technologies Corporation | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 027208 | /0556 | |
May 01 2008 | Ocls Applications, LLC | (assignment on the face of the patent) | / |
Date | Maintenance Fee Events |
Dec 13 2013 | REM: Maintenance Fee Reminder Mailed. |
May 02 2014 | EXP: Patent Expired for Failure to Pay Maintenance Fees. |
Date | Maintenance Schedule |
Jan 24 2015 | 4 years fee payment window open |
Jul 24 2015 | 6 months grace period start (w surcharge) |
Jan 24 2016 | patent expiry (for year 4) |
Jan 24 2018 | 2 years to revive unintentionally abandoned end. (for year 4) |
Jan 24 2019 | 8 years fee payment window open |
Jul 24 2019 | 6 months grace period start (w surcharge) |
Jan 24 2020 | patent expiry (for year 8) |
Jan 24 2022 | 2 years to revive unintentionally abandoned end. (for year 8) |
Jan 24 2023 | 12 years fee payment window open |
Jul 24 2023 | 6 months grace period start (w surcharge) |
Jan 24 2024 | patent expiry (for year 12) |
Jan 24 2026 | 2 years to revive unintentionally abandoned end. (for year 12) |