Abstract:
A computer system identifies an information set stored at a data store. The computer system then identifies first metadata that includes first instructions indicating how the information set is to present a plurality of data items, and second pre-existing metadata that includes second instructions indicating how the information set is to present the plurality of data items. The computer system determines that a portion of the first metadata will override a portion of the second metadata, to create combined metadata. The computer system provides the combined metadata to the information set, including combining the second metadata with the first metadata by at least overriding the second instructions of the second metadata with the first instructions of the first metadata. The computer system presents the plurality of data items in accordance with the second metadata, at least as modified by the first instructions of the first metadata.

Description:
CROSS-REFERENCE TO RELATED APPLICATIONS 
       [0001]    This application is a continuation of U.S. patent application Ser. No. 14/018,684, filed Sep. 5, 2013, and entitled “METADATA DRIVEN REPORTING AND EDITING OF DATABASES,” and which issued as U.S. Pat. No. 9,372,876 on Jun. 21, 2016, which is a divisional of U.S. patent application Ser. No. 11/925,739, filed Oct. 26, 2007, and entitled “METADATA DRIVEN REPORTING AND EDITING OF DATABASES,” and which issued as U.S. Pat. No. 8,903,842 on Dec. 2, 2014. The entire contents of each of the foregoing applications are incorporated by reference in their entireties. 
     
    
     BACKGROUND 
       [0002]    Computers have become highly integrated in the workforce, in the home, and in mobile devices. Computers can process massive amounts of information quickly and efficiently. Software applications designed to run on computer systems allow users to perform a wide variety of functions including business applications, schoolwork, entertainment and more. Software applications are often designed to perform specific tasks, such as word processor applications for drafting documents, or email programs for sending, receiving and organizing email. 
         [0003]    In some cases, software applications can be used to generate, edit and display data in the form of models. For example, models may be used by businesses and other entities to describe entities, processes, systems and other information. Some models may be referred to as flow diagrams, process flows, flowcharts, process diagrams and/or control charts. Others may be referred to as lists, tables, pie charts, or other forms of categorizing and displaying data. In some cases, models may be used to illustrate organizational relationships between resources in a system. These models are often referred to as organizational charts. In a broader sense, models may be used to show any type of relationship information between different objects. 
         [0004]    Many times, however, software programs configured to generate, display and edit data are limited by the type of data. For example, software programs are often hard-coded to be able to generate, edit or navigate certain types of data, but not others. Furthermore, data categorization and display may be limited to certain layouts or display types based on the type of data. Thus, computer-run software applications used to generate, view, edit or navigate data sets may be rely on data type to determine which functionality will be available to the end user. 
       BRIEF SUMMARY 
       [0005]    Embodiments described herein are directed to providing enhanced database editing capabilities. In one embodiment, a computer system receives a database query including a request to edit one or more data items in the database. The computer system determines which data items would be affected by the requested data item edit. Based on the determination, the computer system accesses those data items that would be affected by the requested data item edit. The computer system provides metadata for each data item that would be affected by the requested data item edit. The metadata includes instructions at least partly indicating how the edit is to be performed. The computer system also performs the edit to affect the data items according to at least a portion of the provided metadata, regardless of how the edit would otherwise have been performed based on existing knowledge about the affected data items. 
         [0006]    In another embodiment, a computer system performs a method for providing enhanced data item reporting. The computer system receives a data item request that identifies which data items are to be reported. The computer system accesses a relational data store to determine which information sets are to be used for reporting the requested data items. Based on the determination, the computer system accesses those information sets that are to be used in the reporting the requested data items. The computer system then determines that metadata has been provided for at least one of the accessed information sets. The metadata includes instructions at least partially indicating how the data items are to be reported. The computer system also reports the data items according to the instructions in the provided metadata, regardless of how the data items are to be reported using the existing information sets. 
         [0007]    This Summary is provided to introduce a selection of concepts in a simplified form that are further described below in the Detailed Description. This Summary is not intended to identify key features or essential features of the claimed subject matter, nor is it intended to be used as an aid in determining the scope of the claimed subject matter. 
     
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
         [0008]    To further clarify the above and other advantages and features of embodiments of the present invention, a more particular description of embodiments of the present invention will be rendered by reference to the appended drawings. It is appreciated that these drawings depict only typical embodiments of the invention and are therefore not to be considered limiting of its scope. The invention will be described and explained with additional specificity and detail through the use of the accompanying drawings in which: 
           [0009]      FIG. 1  illustrates a computer architecture in which embodiments of the present invention may operate including providing enhanced database editing capabilities. 
           [0010]      FIG. 2  illustrates a flowchart of an example method for providing enhanced database editing capabilities. 
           [0011]      FIG. 3  illustrates a computer architecture in which embodiments of the present invention may operate including providing enhanced data item reporting. 
           [0012]      FIG. 4  illustrates a flowchart of an example method for providing enhanced data item reporting. 
       
    
    
     DETAILED DESCRIPTION 
       [0013]    Embodiments described herein are directed to providing enhanced database editing capabilities. In one embodiment, a computer system receives a database query including a request to edit one or more data items in the database. The computer system determines which data items would be affected by the requested data item edit. Based on the determination, the computer system accesses those data items that would be affected by the requested data item edit. The computer system provides metadata for each data item that would be affected by the requested data item edit. The metadata includes instructions at least partly indicating how the edit is to be performed. The computer system also performs the edit to affect the data items according to at least a portion of the provided metadata, regardless of how the edit would otherwise have been performed based on existing knowledge about the affected data items. 
         [0014]    In another embodiment, a computer system performs a method for providing enhanced data item reporting. The computer system receives a data item request, the request including an indication of which data items to report. The computer system determines which information sets are to be used in the reporting of the requested data items. Based on the determination, the computer system accesses those information sets that are to be used in the reporting of the requested data items. The computer system provides metadata for each accessed information set. The metadata includes instructions at least partly indicating how the reporting is to be performed. The computer system also the data items according to at least a portion of the provided metadata, regardless of how the reporting would otherwise have been performed based on the existing information sets used to report the requested data items. 
         [0015]    Embodiments of the present invention may comprise or utilize a special purpose or general-purpose computer including computer hardware, as discussed in greater detail below. Embodiments within the scope of the present invention also include physical and other computer-readable media for carrying or storing computer-executable instructions and/or data structures. Such computer-readable media can be any available media that can be accessed by a general purpose or special purpose computer system. Computer-readable media that store computer-executable instructions are physical storage media. Computer-readable media that carry computer-executable instructions are transmission media. Thus, by way of example, and not limitation, embodiments of the invention can comprise at least two distinctly different kinds of computer-readable media: physical storage media and transmission media. 
         [0016]    Physical storage media includes RAM, ROM, EEPROM, CD-ROM or other optical disk storage, magnetic disk storage or other magnetic storage devices, or any other medium which can be used to store desired program code means in the form of computer-executable instructions or data structures and which can be accessed by a general purpose or special purpose computer. 
         [0017]    A “network” is defined as one or more data links that enable the transport of electronic data between computer systems and/or modules and/or other electronic devices. When information is transferred or provided over a network or another communications connection (either hardwired, wireless, or a combination of hardwired or wireless) to a computer, the computer properly views the connection as a transmission medium. Transmission media can include a network and/or data links which can be used to carry or transport desired program code means in the form of computer-executable instructions or data structures and which can be accessed by a general purpose or special purpose computer. Combinations of the above should also be included within the scope of computer-readable media. 
         [0018]    However, it should be understood, that upon reaching various computer system components, program code means in the form of computer-executable instructions or data structures can be transferred automatically from transmission media to physical storage media. For example, computer-executable instructions or data structures received over a network or data link can be buffered in RAM within a network interface card, and then eventually transferred to computer system RAM and/or to less volatile physical storage media at a computer system. Thus, it should be understood that physical storage media can be included in computer system components that also (or even primarily) utilize transmission media. 
         [0019]    Computer-executable instructions comprise, for example, instructions and data which cause a general purpose computer, special purpose computer, or special purpose processing device to perform a certain function or group of functions. The computer executable instructions may be, for example, binaries, intermediate format instructions such as assembly language, or even source code. Although the subject matter has been described in language specific to structural features and/or methodological acts, it is to be understood that the subject matter defined in the appended claims is not necessarily limited to the described features or acts described above. Rather, the described features and acts are disclosed as example forms of implementing the claims. 
         [0020]    Those skilled in the art will appreciate that the invention may be practiced in network computing environments with many types of computer system configurations, including, personal computers, desktop computers, laptop computers, message processors, hand-held devices, multi-processor systems, microprocessor-based based or programmable consumer electronics, network PCs, minicomputers, mainframe computers, mobile telephones, PDAs, pagers, routers, switches, and the like. The invention may also be practiced in distributed system environments where local and remote computer systems, which are linked (either by hardwired data links, wireless data links, or by a combination of hardwired and wireless data links) through a network, both perform tasks. In a distributed system environment, program modules may be located in both local and remote memory storage devices. 
         [0021]      FIG. 1  illustrates a computer architecture  100  in which the principles of the present invention may be employed. Computer architecture  100  includes computer system  101 . In some embodiments, computer system  101  may include edit effects determining module  110 . Edit effects determining module  110  may be configured to receive database query  106  with edit request  107  from user  105 . User  105  may be any type of computer user including a software developer, an end-user, or any other type of user. 
         [0022]    Edit effects determining module  110  may be configured to analyze one or more effects of a proposed edit. For example, database  115  may contain data items  116  with existing metadata  117 . Database  115  may be any type of database configured to store information including lightweight directory access protocol (LDAP) directories, universal description, discovery and integration (UDDI) registries, structured query language (SQL) databases, or any other type of information store. Data items  116  may include any type of informational item such as a software file, code portion, script, schema, file link or other item containing data. In some cases, user  105  may desire to edit one or more of the data items in repository  115 . Thus, edit effects determining module  110  may be configured to receive a database query from the user. 
         [0023]    Database query  106  may include any type of data request that is capable of interpretation by edit effects determining module  110 . In some cases, database query  106  may include edit request  107 . Edit request  107  may comprise a representation of those edits that user  105  desires to implement on data items  116 . For example, edit request  107  may state that software files “A.doc,” “B.txt,” and “C.pdf” are to be deleted. Edits may include any type of data manipulation including creating, replacing, updating and/or deleting. Thus, edit request  107  may include the type of edit to perform as well as those entities that are to be affected by the edit. In some cases, edit effects determining module  110  may be configured to access edit request  107  and database  115  to determine which data items would be affected by edit request  107 . 
         [0024]    Edit effects determining module  110  may send effected data items indication  111  indicating which data items  116  would be affected by edit request  107  to metadata providing module  120 . In some embodiments, metadata providing module  120  may be configured to receive effected data items indication  111  and provide metadata for each data item that is to be affected by edit request  107 . In some cases, metadata may comprise information that can be used to designate how a data item is to be edited. In other cases, the metadata may state which edits are allowed to be performed on a certain data item or group of data items. Metadata may also define relationships between data items that are to be preserved throughout the editing process. In some cases, at least some of data items  116  have existing metadata  117 . This metadata may be overwritten, appended or otherwise modified by the metadata provided by metadata providing module  120 . Metadata may be defined by a user (e.g. user  105 ) and inserted automatically by metadata providing module  120 . 
         [0025]    Computer system  101  may also include edit performing module  125 . In some embodiments, edit performing module  125  may be configured to perform edits to data items. As mentioned above, edits may include any of creating, replacing, updating, deleting or any other manipulation of a data item. In some cases, edit performing module  125  may perform the edits indicated in edit request  107 . In other cases, edit performing module  125  may perform the edits according to metadata provided by metadata providing module  120  and/or existing metadata  117 . Modules  120  and  125  may be subcomponents of editor module  130 . Editor module  130  may be configured to communicate with database  115 , sending and receiving, among other things, data items  116 , existing metadata  117 , metadata provided by module  120  and edits  126 . 
         [0026]      FIG. 2  illustrates a flowchart of a method  200  for providing enhanced database editing capabilities. The method  200  will now be described with frequent reference to the components and data of environment  100 . 
         [0027]    Method  200  includes an act of receiving a database query including a request to edit one or more data items in the database (act  210 ). For example, edit effects determining module  110  may receive database query  106  including a request  107  to edit one or more data items  116  in database  115 . As explained above, database query  106  may include edit request  107  which has information indicating edits that are to be performed to one or more data items in database  115 . In some cases, at least one of the data items is a schema. Thus, edit request  107  may include a request to create, replace, update and/or delete a schema stored in database  115 . 
         [0028]    Method  200  includes an act of determining which data items would be affected by the requested data item edit (act  220 ). For example, edit effects determining module  110  may analyze one or more potential effects of edit request  107  to determine which of data items  116  would be affected by the requested data item edit. In some cases, the potential effects of the requested edit include one or more of creating, replacing, updating and deleting another data item. For example, one edit may trigger a chain of edits where one data item has dependencies or other relationships with other data items. For instance, a word processing document may link to a spreadsheet document for some of its information. Thus, if the spreadsheet document is updated, moved, or otherwise edited, the word processing document will likely have a relationship with the spreadsheet document that states that the word processing document is to be updated with any edits made to the spreadsheet document. 
         [0029]    In some cases, effected data items indication  111  may include a list of those data items that would be affected by the requested data item edit. This may be useful in scenarios where a user wants to see all of the data items that would be affected by one or more proposed edits. Using the list, the user may determine that the proposed edit(s) are unadvisable or, alternatively, that the proposed edit(s) only affect a small number data items and is ok to implement. The list may also be used in an automated process where, if a threshold level of data items would be affected by the edit, the edit will not be performed. Other permutations on this theme are also possible. 
         [0030]    Method  200  includes, based on the determination, an act of accessing those data items that would be affected by the requested data item edit (act  230 ). For example, based on indication  111  of which data items would be affected by the requested data item edit, metadata providing module  120  may access those data items  116  that would be affected by requested data item edit  107 . Additionally or alternatively, based on indication  111 , edit performing module  125  may access data items  116 . 
         [0031]    Method  200  includes an act of providing metadata for each data item that would be affected by the requested data item edit, the metadata including instructions at least partly indicating how the edit is to be performed (act  240 ). For example, based on effected data items indication  111 , metadata providing module  120  may provide metadata for each data item  116  that would be affected by edit request  107 , where the metadata includes instructions at least partly indicating how the edit is to be performed. As explained above, metadata provided by metadata providing module  120  may overwrite existing metadata  117  or may be appended to the existing metadata. Thus, the metadata provided by metadata providing module  120  may alter the method in which data items are edited. Furthermore, the metadata may alter the number, type or even specific data items which are to be edited according to edit request  107 . 
         [0032]    In some cases, the metadata provided by metadata providing module  120  may be stored separately in database  115 , apart from the data items  116 . In other cases, the metadata may be appended to existing data items as part of a file header or in other parts of the data item. In some embodiments, metadata is provided for each data item in the database  115 , regardless of whether the data item is to be affected by the requested edit  107 . Additionally or alternatively, the metadata provided by metadata providing module  120  may be linked, symbolically or otherwise, to existing metadata  117  corresponding to the affected data items, instead of or in addition to overwriting/appending existing metadata  117 . 
         [0033]    Method  200  includes an act of performing the edit to affect the data items according to at least a portion of the provided metadata, regardless of how the edit would otherwise have been performed based on existing knowledge about the affected data items (act  250 ). For example, edit performing module  125  may perform the edit(s) indicated in edit request  107  to affect the data items  116  according to at least a portion of the metadata provided by metadata providing module  120 , regardless of how the edit(s) would otherwise have been performed based on the existing metadata  117  of the affected data items. Thus, in cases where an edit would normally have been performed based on the existing metadata  117  corresponding to the affected data items, the edit will be performed according to at least a portion of the metadata provided by metadata providing module  120 . As mentioned above, the requested edit  107  may be performed by edit performing module  125  entirely according to existing metadata  117 , portions of existing metadata and portions of metadata provided by module  120 , or entirely according to metadata provided by module  120 . In some cases, after the edit has been performed, updated information relating to the updated data items (possibly even including the edited data items) may be sent to database  115  via edits  126  where the updated data items may overwrite or supplement data items  116 . 
         [0034]      FIG. 3  illustrates a computer architecture  300  in which the principles of the present invention may be employed. Computer architecture  300  includes computer system  301 . In some embodiments, computer system  301  may include relational store accessing module  310 . Relational store accessing module  310  may be configured to receive data item request  306  with report indication  307  from user  305 . User  305  may be any type of computer user including a software developer and/or an end-user. Reporting, as the term is used herein, may include any type of data presentation, browsing, retrieval or other means of reporting information. Relational store accessing module  310  may access relational store  315  in response to receiving data item request  306 . Data item request  306  may include any type of informational request configured to obtain some type of information from a relational store. Relational store  315  may be any type of directory, registry, database, or other storage system configured to store data. Relational store  315  may include information sets  316  and data items  317 . 
         [0035]    Data items  317  may include any type of informational item such as a software file, code portion, script, schema, file link or other item containing data. Information sets  316  may be queries, read/write messages, code portions, scripts or other means of accessing information. In some embodiments, information sets  316  are used to access and/or report data items  317 . Report indication  307  may indicate which data items  317  are to be reported, as input by user  305  in data item request  306 . Relational store accessing module  310  may determine which information sets are to be used in reporting certain data items (e.g. those data items indicated in data item request  306 ) and send information set use determination  311  to metadata providing module  320 . 
         [0036]    Metadata providing module  320  may be configured to provide metadata to data items  317  in relational store  315 . For example, metadata providing module  320  may provide metadata for those data items that are to be reported as indicated in report indication  307 . Data item reporting module  325  may be configured to report data items to user  305 . In some cases, data item reporting module will report those data items requested in data item request  306  according to metadata provided by metadata providing module  320 . Metadata providing module  320  and data item reporting module  325  may be included in reporter module  330 . Reporter module  330  may be configured to communicate with relational store  315  including sending and receiving informational sets  316 , data items  317 , metadata provided by module  320  and/or reports  326  which may include information on reporting and/or reported data items. 
         [0037]      FIG. 4  illustrates a flowchart of a method  400  for providing enhanced data item reporting. The method  400  will now be described with frequent reference to the components and data of environment  300  of  FIG. 3 . 
         [0038]    Method  400  includes an act of receiving a data item request, the request including an indication of which data items to report (act  410 ). For example, relational store accessing module  310  may receive data item request  306 , where the request includes an indication  307  of which data items  317  to report to user  305 . In some embodiments, at least one of the data items is a schema. Report indication  307  may include a list of data items to report, or alternatively, may include instructions to report certain types or groups of data items, or may include instructions to report certain data items along with any accompanying data items as defined by existing metadata and/or the information sets used to access and report the data. 
         [0039]    Method  400  includes an act of accessing a relational store to determine which information sets are used in the reporting of the requested data items (act  420 ). For example, relational store accessing module may access relational store  315  to determine which information sets  316  are used in the reporting of the data items requested in data item request  306 . In some embodiments, relational store accessing module  310  may provide a list of those information sets used in the reporting of the requested data items. The list may include those scripts, read/write messages, code portions used to access the requested data items. User  305  may use the list to determine how the data items are being reported, and in which ways, if any, the user may want to alter how the data items are being reported. In some cases, user  305  may input metadata to be provided to information sets  316  by metadata providing module  320 . In other cases, metadata providing module may provide the metadata used to alter how data items are reported to the user, as explained below. 
         [0040]    Method  400  includes, based on the determination, an act of accessing those information sets that are to be used in the reporting of the requested data items (act  430 ). For example, metadata providing module  320  may access those information sets indicated as being used in information set use determination  311 . Additionally or alternatively, data item reporting module  325  may access those information sets indicated as being used in information set use determination  311 . 
         [0041]    Method  400  includes an act of providing metadata for each information set, the metadata including instructions at least partly indicating how the reporting is to be performed (act  440 ). For example, based on information set use determination  311 , metadata providing module  320  may provide metadata for each information set  316  used in the reporting of those data items requested in data item request  306 , where the metadata includes instructions at least partly indicating how the reporting is to be performed. In some cases, user  305  may desire to alter how and/or which data items are being reported. Metadata providing module  320  may add metadata or overwrite existing metadata in information sets  316  in order to alter how and/or which data items are reported. 
         [0042]    Similar to metadata providing module  120 , metadata providing module  320  may entirely overwrite any existing metadata in information sets  316 . Or, module  320  may overwrite some portion of existing metadata. Thus, when information sets  316  are used to report data items according to data item request  306 , different data items and/or different information sets may be used in the reporting. In some cases, the metadata provided by module  320  may be linked to any existing metadata corresponding to the reported data items. 
         [0043]    Method  400  includes an act of reporting the data items according to at least a portion of the provided metadata, regardless of how the reporting would otherwise have been performed based on the existing information sets used to report the requested data items (act  440 ). For example, data item reporting module may report the requested data items according to at least a portion of the metadata provided by metadata providing module  320 , regardless of how the reporting would otherwise have been performed based on any existing metadata in the information sets used to report the requested data items  117 . Thus, in cases where requested data items would have been reported according to existing metadata in the information sets used to report the data items, the provided metadata provided by module  320  is used to determine how and which data items to report. This metadata may be specified by the computer system or by user  305 . In some cases, metadata is provided for each information set  316  in relational store  315 . This may be advantageous in cases where each of the data items is interrelated and the information sets used to report one are similar to those used to report the other data items. Thus, each information set may be altered by metadata so that reporting for each data item is performed in a similar manner. 
         [0044]    Thus, enhanced data item editing and reporting capabilities may be provided to a user desiring to edit and/or report certain data items. Such a system may be fully customizable, allowing the user to dictate how data items are edited, viewed and reported and allow the user to input metadata used to define the processes used to do so. 
         [0045]    The present invention may be embodied in other specific forms without departing from its spirit or essential characteristics. The described embodiments are to be considered in all respects only as illustrative and not restrictive. The scope of the invention is, therefore, indicated by the appended claims rather than by the foregoing description. All changes which come within the meaning and range of equivalency of the claims are to be embraced within their scope.