Pursuant to 37 C.F.R. 1.71(e), Applicants note that a portion of this disclosure contains material that is subject to copyright protection (such as, but not limited to, source code listings, screen shots, user interfaces, or user instructions, or any other aspects of this submission for which copyright protection is or may be available in any jurisdiction.). The copyright owner has no objection to the facsimile reproduction by anyone of the patent document or patent disclosure, as it appears in the Patent and Trademark Office patent file or records, but otherwise reserves all copyright rights whatsoever.
The present invention relates to a system and/or method of handling data. More specifically, the invention relates to a data handling method and or system allowing flexible association of data elements and additions and/or definitions of data types.
Data management systems for managing business data are used to store information about assets, tangible resources and/or intangible or conceptual business important entities such as contracts, transactions, etc. For example, a number of commercially available systems enable users to populate databases with information about such things as business assets, resources, transactions, etc., and to query those databases to create reports.
Typically, a data management system's database is defined by a database schema. A database schema is generally understood in the art as the specifications of such things as: what types of values and/or objects can be stored in a database, how database entities are or are allowed to be related, how those values are organized, etc. Generally, a schema is designed by an expert database designer to address storing the details relevant to a specific topic area while maintaining reasonable execution times for typical queries.
Typically, changing a database schema requires an expert database designer. However, changes to a database schema may often be desired as a result of one or more common business events, such as a reorganization or merger, or operational changes, such as hardware or software changes, or transactional changes, such as enabling a different type of business transaction.
It is generally known within the information handling art how to provide a data system infrastructure that users and/or database designers and/or programmers can use to design systems for managing data. Microsoft Access™ for example is one very well-know database design platform that allows users to construct databases from a number of data tables and to perform data functions such as queries, reports, calculations, etc. Microsoft Access™ provides native “wizards” to allow non-programmer end-users to perform certain functions such as table design and/or query and/or report functions.
Object-oriented database development platforms do exist that allow a database developer to design data objects or elements in terms of types, attributes, objects, families, relationships, etc. Furthermore, a number of general purpose object oriented programming languages exist, such as C++, that allow the specification of types for objects.
While there are a multitude of platforms and methods available for constructing database representations of real-world data, existing platforms are not both flexible and powerful enough for many applications.
General Characteristics and Advantages
The present invention in specific embodiments is involved with and enables methods and/or systems for representing and/or managing and/or querying data in an information system. In further embodiments, the invention is involved with and enables methods and/or systems for representing and/or managing and/or querying data in an information system that allows non-programmer users to make additions of and/or modifications to data items while optionally preserving an underlying potentially complex data structure and preserving the ability to perform flexible and powerful queries and relationships in the data. In further embodiments, the invention is involved with and enables methods and/or systems for representing and/or managing and/or querying data in an information system that allows non-programmer users to make additions of and/or modifications to type definitions while optionally preserving an underlying potentially complex data structure and preserving the ability to perform flexible and powerful queries and relationships in the data. In further embodiments, the invention is involved with and enables methods and/or systems for representing and/or managing and/or querying data in an information system that allows non-programmer users to make associations between data items where those associations are not provided for or anticipated by type definitions while optionally preserving and/or further enabling an ability to perform flexible and powerful queries and relationships in the data.
Data Nodes, Data Node Attributes
In further embodiments and in order to provide one or more of the characteristics described above, the invention provides a method and/or system wherein a particular instance of an entity of interest can be represented as a data node, and a data node can have one or more data node attributes. Data node attributes in specific embodiments can include one or more data node rules and/or one or more data node collection rules. According to specific embodiments of the invention, a data node can represent such things as: tangible resources, intangible or conceptual entities, business information, contracts, transactions, responsibilities, people, mixed groupings of any of the preceding, etc. According to specific embodiments of the invention, a data node attribute generally can be understood as a paired entity including an attribute identifier and attribute values and can represent such things as: cost or other financial data values, characteristics of the data node such as last date updated or archived, etc. According to specific embodiments of the present invention, attribute values as discussed herein can also include rules and/or queries.
Types
In further embodiments and in order to provide one or more of the characteristics described above, the invention provides a method and/or system wherein data nodes in a base data environment are generally each of a particular type wherein the type of a data node specifies the attributes available for that data node and can also specify default values or rules related to one or more attributes. In specific embodiments, the type of a data node also specifies the rules and/or types of rules applicable for that data node. Type definitions in specific embodiments may be generally stored in a type data environment or type database. While the invention may be described herein in terms of databases that are strictly typed, indicating that all data nodes are strictly associated with one type, it should be understood that the invention can also be embodied in mixed systems that allow for one or more data nodes that are not typed or that allow for nodes that are of multiple types.
Type Nodes, Type Tree
In further embodiments and in order to provide one or more of the characteristics described above, the invention provides a method and/or system wherein types are each associated with a type node in a hierarchical type tree. A type tree according to specific embodiments of the present invention allows for attributes including rules and default rule values generally to be specified at a more general or most general (or more ancestral or most ancestral) type node in a type tree and to be propagated to some or all descendant type nodes of the node where the rule or attribute is defined. According to specific embodiments of the present invention, defining attributes at more general type nodes in a type tree allows for more powerful and more general querying, grouping, and reporting of a database of data nodes created and/or specified according to type nodes.
Data Trees
In further embodiments and in order to provide one or more of the characteristics described above, the invention provides a method and/or system wherein data nodes may have antecedent and/or decedent relationships with one or more other data nodes in one or more data trees. In specific embodiments, possible and/or required antecedent and/or decedent relationships of a data node are specified by the type of the data node. In further embodiments, antecedent and/or decedent relationships of a data node can be created by a user independently or relatively independently of type definitions; these relationships are at times herein referred to as container relationships.
User Interface
In further embodiments and in order to provide one or more of the characteristics described above, the invention provides a method and/or system involving one or more user interfaces for performing one or more of the following actions: (1) creating a data node using a type; (2) modifying a data node including modifying data node attributes and/or rules; (3) modifying or adding a type in a type environment; (4) creating a container data tree of data nodes; (5) running one or more queries and/or reports.
Other
Thus, in various embodiments of the invention, a type system is used to correctly populate a database with new data nodes using a selected type node's hierarchical characteristics to create new data nodes. Optionally, type characteristics may be used to propagate other information to new data nodes such as default attribute values and/or business rules. Optionally, type characteristics may be used to initiate the establishment of additional relationships.
Optionally, method and/or systems according to specific embodiments of the present invention may be used to manage data representing a variety of physical resources such as hardware and software resources on a network or abstract resources such as organizations and skill sets. According to a preferred embodiment of the current invention, additional integrated tools may be provided to facilitate activities such as applying a user security model, operating on type definitions and viewing or operating on the data stored in the data management system.
Optionally, a data node data environment may be populated by the automatic discovery of resources on a network. In some cases, the data environment may be queried and/or operated on through a programmatic interface.
Optionally, in further embodiments, a method and/or system according to the invention provides an easy interface for users to modify a database schema by adding or modifying type nodes in a well-defined, hierarchical type node tree. Thus, in specific embodiments, the invention allows users to easily and flexibly extend and/or modify a database schema in powerful ways, while maintaining database integrity and usability even for very large databases.
Optionally, in further embodiments, a method and/or system according to the invention allows a user to group data nodes in flexible ways that are not specified by the type structure of the data environment and require no type structure modification. In specific embodiments, the invention thus allows an end user to make flexible groupings of data nodes and use consistent query features to make queries over new groupings.
Thus various methods for data representation, data handling, data querying, data creating, and data reporting can be employed in specific embodiments. The invention can also be embodied as a computer system and/or program able to provide one or more data handling functions as described herein and/or can optionally be integrated with other components for capturing and/or preparing and/or displaying data such as bar code scanning systems, wireless inventory and/or tracking systems, network management systems, etc.
Various embodiments of the present invention provide methods and/or systems that can be implemented on a general purpose or special purpose information handling system using a suitable programming language such as Java, C++, Cobol, C, Pascal, Fortran, PL1, LISP, assembly, SQL, etc., and any suitable data or formatting specifications, such as HTML, XML, DHTML, tab-delimited text, binary, etc. In the interest of clarity, not all features of an actual implementation are described in this specification. It will be understood that in the development of any such actual implementation (as in any software development project), numerous implementation-specific decisions must be made to achieve the developers' specific goals and subgoals, such as compliance with system-related and/or business-related constraints, which will vary from one implementation to another. Moreover, it will be appreciated that such a development effort might be complex and time-consuming, but would nevertheless be a routine undertaking of software engineering for those of ordinary skill having the benefit of this disclosure.
The invention and various specific aspects and embodiments will be better understood with reference to the following drawings and detailed descriptions. For purposes of clarity, this discussion refers to devices, methods, and concepts in terms of specific examples. However, the invention and aspects thereof may have applications to a variety of types of devices and systems.
Furthermore, it is well known in the art that logic systems and methods such as described herein can include a variety of different components and different functions in a modular fashion. Different embodiments of the invention can include different mixtures of elements and functions and may group various functions as parts of various elements. For purposes of clarity, the invention is described in terms of systems that include many different innovative components and innovative combinations of innovative components and known components. No inference should be taken to limit the invention to combinations containing all of the innovative components listed in any illustrative embodiment in this specification.
When used herein, “the invention” should be understood to indicate one or more specific embodiments of the invention. Many variations according to the invention will be understood from the teachings herein to those of skill in the art.
a, 7b, 7c and 7d illustrate examples of a user interface for creating a new user-defined data node and then establishing data node-to-data node relationships according to a preferred embodiment of the current invention.
The present invention provides a method and system for managing data representing resources such as abstract and/or concrete assets or business information.
Data Nodes
According to the current invention 100, resources may be represented as nodes such as data nodes in an initial base data environment stored in a data storage module 150. For the purposes of discussion, nodes used for storing data relating to a particular instance of a resource may be referred to as data nodes. For example, when managing an Information Technology (IT) environment on a subnet 180, resources such as servers, software packages, operating systems, routers, graphics cards and network interface cards (NICs) may be represented as data nodes stored in a data storage module 150. Similarly, resources such as abstract resources, intangible assets and/or business information such as memberships, business alliances, contracts, agreements, orders, and invoices may be represented as data nodes in a data storage module 150.
A preferred embodiment of the current invention may be used to manage resources such as tangible resources and/or intangible or conceptual entities. For example, a preferred embodiment of the current invention may be used to provide an environment for managing intangible resources such as providing a resource scheduling environment for keeping track of employees, their skill sets, their location and their availability. Furthermore, a variety of resource management problems may be addressed using a single instance of the current invention. For example, a single instance of the current invention may be used to manage data related to financial and tax concerns as well as tangible asset management, contract management, and human resources.
Data Node Attributes and Data Node Attribute Values
Information related to resources represented as data nodes may be stored in data node attributes as data node attribute values. Preferably, communications module 140 may provide programmatic access to the current invention. Preferably, the initial base data nodes, data node attributes and optional data node attribute values may be populated manually and/or automatically using external modules interfaced with the current invention through the communications module 140. For example, referring to the example of managing an IT environment, a network discovery module may be used to collect information for identifying and characterizing resources. Subsequently, data nodes representing the discovered resources and related data node attributes as well as relationships between data nodes may be created based on that network discovery. Optionally, some data node attribute values may be populated based on information collected using the discovery technique and/or other techniques. Optionally, the initial base data environment may be partially or fully populated through an interface to the communications module 140 with one or more databases, data sources and/or data warehouses external to the current invention. For example, when using the current invention to manage employee work scheduling, data nodes may be created for each active employee based on information collected through an interface with one or more external Human Resources (HR) data warehouses to identify all active employees. Furthermore, employee data nodes may have associated attributes such as office phone number and the attribute values for the office phone number attributes may be populated based on information collected through an interface with a corporate internal phone book database.
Data Node-to-Data Node Relationships and Containers
Preferably, data node-to-data node relationships may be established in the base data environment, automatically by the current invention and/or through a user interface to represent a variety of concepts. For example, in the base data environment, a relationship may be established between a data node representing a personal computer and another data node representing a video card to represent that the video card is installed in the personal computer. In some cases, data node-to-data node relationships can be understood as trees or other groupings in the base data environment that are in addition to and either partly or entirely independent from the primary tree or other relationship structure of the data nodes. In some specific embodiments, these relationships in the data-node environment are referred to as containment relationships; one or more of the related data nodes may be referred to as containers.
According to a preferred embodiment of the current invention, a user may establish one or more relationships through a user interface. For example, a relationship between a data node representing an employee and a data node representing a newly created department may be established to represent that the employee will be a member of the newly created department. For the purposes of discussion, user defined data node-to-data node relationships may be called containment relationships. In some cases, one of the data nodes in a data node-to-data node relationship may be identified as a container. In cases where data nodes may be organized into a hierarchical structure, the parent data node in a containment relationship may be called a container. A container is a data node; preferably, a container is instantiated based on a type. Containers may be used to collect data nodes into groupings for the convenience of the user and/or to support a particular view of the data. For example, a user may choose to create a new data node (or container) called “Contracts I am responsible for” and establish data node-to-data node (or containment) relationships between the new container and existing data nodes representing contracts in the data environment. Preferably, the container may be maintained over time, adding and deleting containment relationships as desired.
Furthermore, in this example, the present invention further allows for data-nodes to be related at the data-node level and in ways that are not specified by types. Containers may provide natural, convenient subsets for constructing queries based on physical, organizational and/or abstract concepts. For example, physical containers may be used for classifying data nodes by physical location descriptions such as cities, buildings, rooms, physical networks and subnets; organizational containers may be used for classifying data nodes by organizational descriptions such as business units (for example, the “Software Support Business Unit”), business functions (for example Finance, Human Resources, etc.) or project names; abstract containers may be used for collecting data nodes representing abstract resources into classifications such as maintenance agreements, purchase orders and contracts.
Type Nodes
According to a preferred embodiment of the current invention, the data nodes representing resources in the initial base data environment and data nodes representing resources added to the base data environment may be instantiated based on a type. Preferably, type information is maintained in a type database and may be stored in data storage module 150. Preferably, information related to a particular type may be represented as a node such as a type node. For the purposes of discussion, nodes used for storing data relating to type are referred to as type nodes. Typically, type information includes a set of one or more attributes that may be associated with a data node. Optionally, type information may include information relating to default attribute values, rules, default rule values and/or relationships. In some cases, rules, default rule values and/or relationship information stored in a type node may be used to automatically create, delete or change data node-to-data node relationships when that type node is used to instantiate a data node.
A rule may be used to store a rule value for maintaining instructions and/or data such as, but not limited to: instructions for calculating a calculated attribute value, instructions for retrieving an attribute value in another database and trigger information identifying the prerequisite conditions for the execution of an automatic action. Examples of automatic actions may include the automatic creation of a new data node or the automatic creation of a data node to data node association. For example, a “Data Center” type may have associated rules and default rule values such as:
When a data node is instantiated based on the “Data Center” type node, the rules and default rule values associated with the type are instantiated and associated with the data node.
Preferably, a type database describing one or more types may be present in an initial type database. However, according to a preferred embodiment of the current invention, a user may create, delete and/or alter type information in the type database through a user interface.
Preferably, type nodes may be altered or updated. Preferably, the effect of altering or updating a type node may cascade to data nodes instantiated based on the altered or updated type node. For example, when a type node is altered to add a new attribute, data nodes already instantiated based on the altered type node may be updated to include the new attribute.
Preferably, type nodes may be created by a user through a user interface such as UI display 180 and/or programmatically through an interface such as communications module 140. A new type node may be created to support the representation of a new managed resource.
Type Tree
Preferably, the type data environment or type database represents a tree of type nodes wherein attributes, default attribute values, rules, default rule values and/or relationships may be inherited from one or more ancestors in the type tree. For example, a parent type node used for representing software, a Software type node, may have associated attributes used for representing version and manufacturer. Furthermore, the Software type node may have a child type node used for representing operating systems (the Operating Systems type node) and a grandchild for representing the Linux Operating System (the Linux Operating System type node). According to a preferred embodiment of the current invention, when a new data node of type Linux for representing a specific instance of the Linux operating system on a server is added to the initial base data, the new data node may be populated with the attributes associated with the Linux type node as well as the manufacturer attribute and version attribute inherited from the grandparent type node (the Software type node). Preferably, inheritance may cascade down through all descendent generations of the type tree. Typically, when a data node is instantiated based on a type node in the current system, the type node may be used to correctly populate the data environment. Attributes, attribute values, rules and/or relationships may be automatically associated with the newly created data node based on the type used for instantiation. Preferably, attributes are defined at the highest possible level in the type tree and then inherited down the type tree through all generations. This helps support the construction of queries that will produce consistent results with common meaning across various data nodes.
Furthermore, according to specific embodiments of the present invention attributes may not be redefined at a lower level in the type tree. For example, the version attribute may be associated with the Software type instead of defining it independently and possibly inconsistently at a lower level in the type tree. In this case, querying against the version attribute for all data nodes having a type that is Software or a type that is any direct descendent of the Software type node will have the same, consistent meaning.
Data Tree
Preferably, the data nodes may be organized into a hierarchical tree of data nodes, or a data tree.
Circular References
According to a preferred embodiment of the current invention, a type tree and/or a data tree may be organized in a structure known in the art as an acyclical tree. In an acyclical tree, a node may have none, one or more relationships, however circular references and cycles are not allowed. Preferably, the type tree and the data tree are organized in a type of acyclical tree known as a directed acyclical graph (DAG). In a DAG, a node may have none, one or more children or subnodes as well as none, one or more parents. Circular references and cycles are prohibited in a DAG.
Preferably, circular references and cycles are prohibited in the type tree and the data tree to reduce the possibility of inconsistent and/or confusing query results. Preferably, the mechanism for preventing circular references and cycles may be implemented by creating a taxonomy table of rules dictating allowed parent node-child node relationships and disallowed parent node-child node relationships for both the data tree and the type tree. Preferably, a type relationship model identifying allowable and prohibited relationships based on the types of the nodes may be established. For example, a relationship between a parent data node of type Operating System and a child data node of type Software may be prohibited in one rule whereas a relationship between a parent data node of type Software and a child data node of type Operating System may be allowed in another rule. However, the rules may be based on one or more criteria. A variety of alternate implementations for preventing circular references are possible. For example, testing each potential new relationship by examining the data tree and the type tree before the new relationship is established to confirm that no circular references would be created by the addition of the new relationship may prevent circular references.
Attribute Inheritance in the Type Database
Preferably, inheritance of attributes, attribute values, rules, default rule values and/or relationships may cascade down through all generations of the type tree through parent-child relationships. However, alternate embodiments of the current invention may support different or more complex inheritance models. For example, in some cases, inheritance may not be supported. Alternately, complicated models supporting various degrees of inheritance may be implemented. For example, in some cases, inheritance may cascade down through a limited number of generations for some or all of the type tree. Optionally, in this case, the number of generations for cascading may be determined on a node-by-node basis. Alternately, the number of generations for cascading may be based on one or more criteria, such as by type attribute, default attribute value, rule, default rule value and/or relationship. Preferably, a type node may have a single parent. However, according to alternate embodiments of the current invention, a type node may have more than one parent. In this case, a type node with multiple immediate parents may inherit attributes, default attribute values, rules and/or relationships from one or more ancestors of some or all parents.
However, according to various embodiments of the current invention, none, some or all of the data nodes in the base data environment may be typed. According to various embodiments of the current invention, not all data nodes added to the data tree are required to be typed. However, according to a preferred embodiment of the current invention, strong typing helps preserve the ability to rapidly query the data environment based on any combination of attributes from the data nodes in the initial data environment and any added data nodes without requiring schema changes through operations such as adding and deleting data nodes and adding, deleting and changing data node attributes, data node attribute values, and node-to-node relationships.
According to the current invention, a new data node may be added to the initial data environment through a simple user interface requiring only the selection of a type for the new data node.
In
Referring again to
According to an alternate embodiment of the current invention, one or more additional methods for adding a new data node may be incorporated into the system. For example, in some cases, a new data node may be added to the initial base data environment through a programmatic interface. For example, the current invention may be coupled to a network discovery module that may be used to populate the base data with new data nodes as new elements appear on the network. Similarly, a network discovery module may be used to programmatically create, alter and/or delete data node attributes, data node attribute values, node-to-node relationships, rules and/or data nodes according to information gleaned from the network. Automatic discovery is further discussed in above reference patent application Ser. No. 10/125,952, filed 18 Apr. 2002, incorporated herein by reference.
According to a preferred embodiment of the current invention, node-to-node relationships may be created automatically and/or manually. Node-to-node relationships may represent a variety of concepts.
According to a preferred embodiment of the current invention, data node-to-data node relationships (containment relationships) may be established using a simple user interface.
According to a preferred embodiment of the current invention, one or more relationships may be automatically established, altered and/or deleted by the system based on rules maintained inside and/or outside the current invention. For example, a rule for creating and maintaining logical sets representing domains may be established. In this example, a rule may have a rule value providing the following instructions: query the data environment for a list of hostnames, extract domain names from the hostnames, identify a list of unique domain names, locate data nodes corresponding to each unique domain name (or create data nodes corresponding to each unique domain name if required) and establish parent-child relationships between the domain name data nodes and the existing hostname data nodes. Preferably, this rule may be executed due to a user request, other external input and/or initiated by an action such as the addition, deletion or alteration of a hostname data node. According to a preferred embodiment of the current invention, a rule may be scheduled for execution, configured to run at one or more pre-determined intervals and/or triggered by an internal or external action or event such as the addition, change or deletion of a host, hostname or hostname data node.
Adding a New Type
According to a preferred embodiment of the current invention, a collection of type nodes may be gathered together into an organizational structure or abstract type structure. In this case, type node-to-type node relationships may be formed wherein an abstract type node is a parent to one or more type nodes and/or abstract type nodes. For example, an abstract type data environment may be used to simplify queries and/or reflect alternate organizational structures. For example, for the purposes of classifying hardware, a network administrator may create a type tree with the following types: servers, printers, fax machines, copiers and routers. However, for the purpose of managing paper supplies, the following types may be collected together into a new abstract type called “Paper Consuming Hardware” to support a view of the type tree for facilities personnel. For example, the “Paper Consuming Hardware” abstract type may be used to represent a collection of the following types: printers, fax machines and copiers. According to a preferred embodiment of the current invention, the abstract type may be used for creating custom displays of the type tree to support a variety of users and purposes. For example, in
Preferably, data storage system 150 may comprise one or more relational databases. In
According to a preferred embodiment of the current invention, slow, inconsistent or confusing query results may be minimized by organizing database tables and helper tables in a relational database and maintaining the uniqueness of some labels, identification fields or labels. For example, inconsistent or duplicate identification of a type, type attribute or data node could lead to confusing query results.
The foregoing described embodiments of the invention are provided as illustrations and descriptions. They are not intended to limit the invention to precise form described. In particular, the Applicant contemplates that functional implementation of invention described herein may be implemented equivalently in hardware, software, firmware, or other available functional components or building blocks. Furthermore, the specific discussions of data nodes and type nodes is not meant to preclude the possibility that the current invention may use, manage and/or operate on one or more different varieties of nodes. Other variations and embodiments are possible in light of above teachings, and it is thus intended that the scope of invention not be limited by this Detailed Description, but rather by Claims following.
This application claims priority and is a continuation in part of patent application Ser. No. 10/125,952, filed 18 Apr. 2002 and incorporated herein by reference.
Number | Date | Country | |
---|---|---|---|
Parent | 10429270 | May 2003 | US |
Child | 11975146 | Oct 2007 | US |
Number | Date | Country | |
---|---|---|---|
Parent | 10125952 | Apr 2002 | US |
Child | 10429270 | May 2003 | US |