GB2433614A - Data tracking system - Google Patents

Data tracking system Download PDF

Info

Publication number
GB2433614A
GB2433614A GB0526293A GB0526293A GB2433614A GB 2433614 A GB2433614 A GB 2433614A GB 0526293 A GB0526293 A GB 0526293A GB 0526293 A GB0526293 A GB 0526293A GB 2433614 A GB2433614 A GB 2433614A
Authority
GB
United Kingdom
Prior art keywords
data
document
objects
cell
values
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Withdrawn
Application number
GB0526293A
Other versions
GB0526293D0 (en
Inventor
Mark Martindale
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Individual
Original Assignee
Individual
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Individual filed Critical Individual
Priority to GB0526293A priority Critical patent/GB2433614A/en
Publication of GB0526293D0 publication Critical patent/GB0526293D0/en
Priority to PCT/GB2006/004910 priority patent/WO2007072051A2/en
Publication of GB2433614A publication Critical patent/GB2433614A/en
Withdrawn legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/197Version control
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2308Concurrency control
    • G06F17/246
    • G06F17/30008
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/166Editing, e.g. inserting or deleting
    • G06F40/177Editing, e.g. inserting or deleting of tables; using ruled lines
    • G06F40/18Editing, e.g. inserting or deleting of tables; using ruled lines of spreadsheets
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/20Natural language analysis
    • G06F40/205Parsing
    • G06F40/226Validation

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Health & Medical Sciences (AREA)
  • Artificial Intelligence (AREA)
  • Audiology, Speech & Language Pathology (AREA)
  • Computational Linguistics (AREA)
  • General Health & Medical Sciences (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Document Processing Apparatus (AREA)
  • Image Analysis (AREA)

Abstract

There is disclosed a method of tracking changes to document data, the document data including a plurality of document objects and a plurality of data values, and the method comprising: ```generating a set of data objects corresponding to respective data values and respective document objects; ```receiving an input indicating that at least one document object has been modified; ```selecting data objects corresponding to at least one modified document object and a number of modified data values; and ```modifying the selected data objects in accordance with the modifications to the corresponding data values or document objects. The document objects may be spreadsheet objects or blocks of text or diagrams or pictures. The data objects may be records in a database.

Description

<p>DATA TRACKING SYSTEM</p>
<p>The present invention relates to a computer, a database, a carrier medium, a signal, and a method of tracking changes to document data.</p>
<p>A first aspect of the invention provides a method of tracking changes to document data, the document data including a plurality of document objects, and the method comprising: generating a set of data objects corresponding to data values associated with the document objects; receiving an input indicating that at least one document object may have been modified; selecting data objects to which the or each modified document object relates; and modifying the selected data objects in accordance with the modifications to the or each document object and/or associated data value.</p>
<p>The document objects may be spreadsheet objects such as cells, ranges, names, pivot tables, charts, chart series, rows, columns, worksheets, and so on, or they may be other objects such as blocks of text in word processing documents, or diagrams and pictures in graphical documents, for example.</p>
<p>The data values associated with the document objects may be numbers, text, Boolean values, formulae and so on (in the case of a spreadsheet). The data objects may be records in a database (such as a document worksheet, relational database, simple table, and so on), which may comprise a plurality of fields, and which may be stored on a storage medium. The input may be an event generated by an application, such as an event sent to an add-in application, and may (or may not) contain a reference to the modified document object(s).</p>
<p>The present invention provides a method of tracking changes to document data, the document data including a plurality of document objects and a plurality of data values, and the method comprising: generating a set of data objects corresponding to respective data values and respective document objects; receiving an input indicating that at least one document object may have been modified; selecting data objects corresponding to at least one modified document object and a number (which may be zero) of modified data values; and modi"ing the selected data objects in accordance with the modifications to the corresponding data values and/or document objects (although it will be appreciated that the method can be adapted in cases where less than a plurality either of document objects or of data values are envisaged, and similarly elsewhere in this specification references to pluralities can, where appropriate, be replaced by reference to single or zero numbers of items).</p>
<p>This can allow changes to the data values to be more efficiently monitored. Additionally, the more intuitive audit data which this method can provide can be used to create improved user interfaces for auditing data.</p>
<p>The method may allow audit data to he saved (in a text or data file, for example), and the normal undo' function of the document application may be overridden to allow the undo function to be performed using this audit data (accordingly the undo function may he used without limitation, allowing every change to be undone). A further undo mode may be provided (a non-linear' undo), allowing the user to select a region of a document, and to undo all or (at the user's selection, for example) part ol the changes made to that region, irrespective of the order in which the relevant changes were made. In this case, the audit data may be used to ensure that relationships are respected by the undo operation (and, if appropriate, corresponding changes are made outside the selected region in order to ensure consistency). The method may also allow analysis of the audit data, and the tracking of which user made what changes, when and how.</p>
<p>The method can also track and record changes in relationships between document objects and data within the document objects. In particular, the method can track hierarchical (parent-child') relationships, precedence-dependence' relationships and association' relationships between data values. This can allow a more complete audit record to be provided, and can again provide an improved user interface for audit operations.</p>
<p>In particular, the invention provides a method of tracking changes to document data, the document data including a plurality of document objects, and the method comprising: receiving an input indicating that at least one of the document objects may have been modified; and recording changes to the relationships of the or each modified data value.</p>
<p>[he method may be embodied in at least one software component which may be executed as an add-in' program or script. For example, the method may be provided by a Visual Basic(RTM) module for execution as an add-in' to Microsoft Excel(RTM). Alternatively the method may be incorporated as an integral feature of such an application.</p>
<p>The invention also provides a validation function, for example in the form of a method comprising determining whether a modification to a document object or data value complies with predetermined criteria and outputting data representing the result of the determination. Changes to the values and relationships of a wide variety of document objects and data values may be validated, rather than merely validating a cell's content, for example. Audit and other data relating to document objects and data values may be processed, for example using appropriate heuristics, automatically to determine new validation criteria. In response to validation failure alerts, the user can override the validation and supply new validation criteria at that point if required. The validation may occur in parallel to built-in' validation routines, allowing more control of many components of a document without overwriting pre-existing validation within a document (although the in-built' validation, where it exists, may be overwritten by the parallel validation criteria if and when appropriate).</p>
<p>Further aspects of the invention are provided in accordance with the attached independent claims, and further optional features are defined by the attached dependent claims. Yet further aspects of the invention may he provided in accordance with the features described below. Apparatus equivalents of the method claims may also be provided.</p>
<p>The present invention can be implemented in any convenient form, for example using dedicated hardware, or a mixture of dedicated hardware and software. The present invention is particularly suited to implementation as computer software implemented by a workstation or laptop computer.</p>
<p>Aspects of the present invention encompass computer software implementable on a programmable device. The computer software can be provided to the programmable device using any conventional carrier medium. The carrier medium can comprise a transient carrier medium such as an electrical, optical, microwave, acoustic or radio frequency signal canying the computer code.</p>
<p>An example of such a transient medium is a TCP/IP signal carrying computer code over an IP network, such as the Internet. The carrier medium can also comprise a storage medium for storing processor readable code such as a floppy disk, hard disk, CD ROM, magnetic tape device or solid state memory device.</p>
<p>Although each aspect and various features of the present invention have been defined independently hereinabove and with regard to the appended claims, it will he appreciated that, where appropriate, each aspect can be used in any combination with any other aspect(s) or features of the invention. It will also be appreciated that further features of the invention may be provided by appropriate combination of features described below, optionally in combination with existing claims.</p>
<p>Embodiments of the present invention will now be described with reference to the accompanying drawings, in which: Figure 1 is the entry for "constant" in Microsoft Excel(RTM) Help, in Microsoft Office Excel(RTM) 2003; Figure 2 is the Microsoft Office Excel(RTM) 2003 Object Model that is contained in Microsoft Excel(RTM) Visual Basic(RTM) Reference; Figure 3 shows the formulae in Worksheet "Sheeti" of Workbook "Book 1", before "dragging and dropping" or "cutting and pasting" cell Bi to cell Cl; Figure 4 shows the values in Worksheet "Sheetl" of Workbook "Booki", before "dragging and dropping" or "cutting and pasting" cell BI to cell Cl; Figure 5 shows the formulae in Worksheet "Sheeti" of Workbook "Booki", after "dragging and dropping" or "cutting and pasting" cell BI to cell Cl; Figure 6 is an extract of a parent-child hierarchy of document objects in a Microsoft Excel(RTM) Workbook; Figure 7 is an extract of the parent-child hierarchy of document objects in Workbook "Book 1"; Figure 8 is an extract of output produced by a hypothetical auditing system, relating to "dragging and dropping" or "cutting and pasting" cell BI to cell Cl in Worksheet "Sheeti" of Workbook "Book I"; Figure 9 is the contents of the "History" sheet thai is produced by the "Track Changes" functionality in Microsoft Excel(RTM), in respect of Workbook "Book I" before "dragging and dropping" or "cutting and pasting" cell B! to cell Cl; Figure 10 is the contents of the "History" sheet that is produced by the "Track Changes" functionality in Microsoft Excel(RTM), in respect of Workbook "Book 1" after "dragging and dropping" or "cutting and pasting" cell BI to cell Cl; Figure 11 shows the precedence-dependence relationships between Range objects in Worksheet "Sheetl" of Workbook "Booki", before "dragging and dropping" or "cutting and pasting" cell Bi to cell Cl; Figure 12 shows the precedence-dependence relationships between Range objects in Worksheet "Sheeti" of Workbook "Book I ", after "dragging and dropping" or "cutting and pasting" cell B I to cell Cl; Figure 13 shows the values in Worksheet "Sheeti" of Workbook "Bookl", after "dragging and dropping" or "cutting and pasting" cell BI to cell Cl; Figure 14 is an extended extract of output produced by a hypothetical auditing system, relating to "dragging and dropping" or "cutting and pasting" cell BI to cell Cl in Worksheet "Sheet 1" of Workbook "Book 1 "; Figure 15 is the contents of the "History" sheet that is produced by the "Track Changes" functionality in Microsoft Excel(RTM), in respect of Workbook "Book 1" after instead defining (constant) worksheet-specific Name "Start"; Figure 16 shows the values in Worksheet "Sheeti" of Workbook "Booki", after instead defining (constant) worksheet-specific Name "Start"; Figure 17 shows an example of' the auditing system's parentchild hierarchy of data object's relating to Workbook "Book 1", before "dragging and dropping" or "cutting and pasting" cell B 1 to Cl, together with examples of data objects' associations with document objects; Figure 18 shows an example of the auditing system's parent-child hierarchy of data object's relating to Workbook "Bookl", after "dragging and dropping" or "cutting and pasting" cell Bi to Cl, together with examples of data objects' associations with document objects; Figure 19 shows an example of the precedence-dependence relationships between the auditing system's data objects relating to Workbook "Book I ", before "dragging and dropping" or "cutting and pasting" cell BI to cell Cl; Figure 20 shows an example of the precedence-dependence relationships between the auditing system's data objects relating to Workbook "Booki", after "dragging and dropping" or "cutting and pasting" cell BI to cell CI; Figure 21 shows an example of the precedence-dependence relationships between the auditing system's data objects relating to Workbook "Book I ", after instead defining (constant) worksheet-specific name "Start"; Figure 22 shows an example of the auditing system's database structure; Figure 23 is an example of the auditing system's "Objects" table relating to Workbook "Book 1", before "dragging and dropping" or "cutting and pasting" cell BI to cell Cl; Figure 24 is an example of the auditing system's "Objects" table relating to Workbook "Book I", after "dragging and dropping" or "cutting and pasting" cell Bi to cell Cl; Figure 25 is an example of the auditing system's "Actions" table relating to Workbook "Book 1", after "dragging and dropping" or "cutting and pasting" cell BI to cell Cl; Figure 26 is an example of the auditing system's "Effects" table relating to Workbook "Book I", after "dragging and dropping" or "cutting and pasting" cell Bi to cell Cl; Figure 27 is an example of the auditing system's "Actions" table relating to Workbook "Book I", before "dragging and dropping" or "cutting and pasting" cell Bi to cell Cl; Figure 28 is an example of the auditing system's "Effects" table relating to Workbook "Book 1 ", before "dragging and dropping" or "cutting and pasting" cell B I to cell Cl; Figure 29 shows an example of "association" relationships between the auditing system's data objects relating to Workbook "Book I ", before "dragging and dropping" or "cutting and pasting" cell B! to cell Cl; Figure 30 shows an example of "association" relationships between the auditing system's data objects relating to Workbook "Booki ", after "dragging and dropping" or "cutting and pasting" cell Bi to cell Cl; Figure 31 shows an overview of the auditing system's process; Figure 32 shows an example of the auditing system's process for identifying and selecting relevant document changes; Figure 33 shows an example of the auditing system's process for amending the "Actions" table and for identifying and selecting data objects that are impacted by a document change; Figure 34 shows an example of the auditing system's process for identifying and selecting changes to data objects impacted by a document change; Figure 35 shows an example of the auditing system's process for amending the "Objects" and "Effects" tables; and Figure 36 shows an example of the structure of the auditing system's components.</p>
<p>A system for tracking and auditing changes to data is described below with reference to the Microsoft Excel(RTM) spreadsheet application. Firstly, by way of background, the way in which the Microsoft Excel(RTM) spreadsheet application manipulates data will he described briefly.</p>
<p>A Microsoft Excel(RTM) user can enter data items, including inputs to calculations and calculations' parameters, via "constants" and "expressions". "Values resulting from expressions" represent further data items that include outputs of calculations. Referring to Figure 1, Microsoft Excel(RTM) FleIp differentiates constants, from expressions and their resulting values, by their behaviour on calculation; on calculation, constants are unchanged whereas values resulting from expressions may change. Hereafter, constants, expressions and values resulting from expressions are referred in their entirety as "data values".</p>
<p>A spreadsheet's structure is defined by its document objects and their relationships with one another, including both parent-child relationships and precedence-dependence relationships.</p>
<p>Referring to Figure 2, Microsoft Excel(RTM) Workbooks' document objects, and collections thereof, are defined by the Microsoft Excel(RTM) Object Model. Constants and expressions can be contained in a variety of Microsoft Excel(RTM) document objects that include, for example: Range objects [2] and Name objects [11.</p>
<p>Auditing systems typically record changes to Microsoft Excel(RTM) document objects and, via records of document objects' formulae, they may further contain data pertaining to changes to document objects' precedence-dependence relationships. In contrast, the present invention records changes to data values. Further, it explicitly records detail of changes to data values' precedence-dependence relationships, separate from detail of expressions and distinct from changes thereto.</p>
<p>In advance of describing the present invention and related benefits, the following will now be described by way of further background: distinction between document objects and the data values contained therein and, further, illustration of the transient nature of associations between data values and document objects; and limitations of output from auditing systems that track changes to document objects (as opposed to data values) including, in particular, limitations that result from implicit data therein pertaining to relationships between document objects.</p>
<p>A Microsoft Excel(RTM) Workbook, "Book 1", will he referred by way of example. Workbook "Book 1" contains Name "Start", which is equal to 1. Referring to Figure 3, Worksheet "Sheeti" of Workbook "Booki" contains cells Al [3], Bi [4], Cl [5], Dl [6], El [7], A2 [8] and B2 [9]. Cells Cl [5] and Dl [61 contain constants with values of 3 [5] and 4 [6] respectively. Cells Al [3], BI [4], El [71, A2 [8] and B2 [9] contain expressions, respectively: "Start" [3], "2+Al" [4], "SUM(Al:Dl)" [7], "=SUM(Al:B I)" [8] and "=B1" [9]. Referring to Figure 4, values resulting from the expressions in cells Al [3], B! [4], El [7], A2 [8] and B2 [9] are, respectively: 1 [3], 3 [4], 11 [7], 4 [8] and 3 [9]. Worksheet "Sheeti" further contains a Chart [10], titled "My Chart", that contains Series "Series 1" [11], with expression "SERIES(,{ 1999,2000,2001,2002},Sheetl!$A$l: $D$l,l)", which plots the values of cells Al [3], Bl [41, Cl [5] and Dl [6].</p>
<p>A change to Worksheet "Sheeti" in Workbook "Bookl", whereby the Microsoft Excel(RTM) user "cuts and pastes" or "drags and drops" cell B I to cell Cl, will be referred by way of example to facilitate comparison of auditing systems' various methods for recording changes. Referring to Figure 5, following the change, cell Bl [13] contains no data value and cell Cl [14] contains the expression "=2+Al ".</p>
<p>Referring now to Figure 6, parent-child relationships between a Workbook's document objects are defined by the respective document objects' "Parent" properties. For example: a Worksheet [20] object's Parent property returns a Workbook [19] object; a Chart object's Parent property returns either a ChartObject [21] object (in the case of an embedded chart [22]) or a Workbook [19] object (in the case of a chart sheet [251); a Range [231 object's Parent property returns a Worksheet [20] object; a Name object's Parent property returns either a Worksheet [20] object (in the case of a worksheet-specific name [24]) or a Workbook [19] object; and so on.</p>
<p>Referring to Figure 7, the Workbook "Booki" [26] initially contains a parent-child hierarchy of document objects that includes: Worksheet "Shectl" [27], Range "Al" [28], Range "Bi" [29], Range "Cl" [30], Range "Dl" [31], Range "El" [32], Range "A2" [35], Range "B2" [36], ChartObject "Chartl" [39], Chart "Sheeti Chartl" [40], (unnamed) ChartOroup [41], Series "Seriesl" [42], (unnamed) Points [43-46] and Name "Start" 147]. Workbook "Bookl" [26] is the parent of both Worksheet "Sheetl" [27] and Name "Start" [47]. Worksheet "Sheetl" [27] is the parent of ChartObject "Chartl" [39] and all Range objects ("Al" [28], "BI" [29], "Cl" [30], "Dl" [31], "El" [32], "Fl" [33] -"I\'l" [34], "A2" [35], "B2" [36] and "C2" [37] -"1V65536" [38]).</p>
<p>ChartObject "Chartl" [39] is the parent of Chart "Sheeti Charti" [40] which is, in turn, the parent of the (unnamed) ChartGroup object [411. The (unnamed) ChartGroup object [41] is the parent of Series "Seriesi" [42] which is, in turn, the parent of all (unnamed) Point objects [43-46].</p>
<p>Referring again to Figure 7, following the change to Workbook "Booki" described above, the parent-child hierarchy of document objects in "Book I" is unchanged, since Ranges "B 1" [29] and "C 1" [30] remain (with parent Worksheet "Sheet 1" [271). Accordingly, referring now to Figure 8, an audit trail created by comparison of the Workbook's document objects, before and after the change respectively, might record that Range "BI" has changed from the expression "=2+A1" to become blank [50] and that Range "Cl" has changed from a constant, with value 3, to contain the expression "=2+A 1" [51].</p>
<p>However the essence of the change includes the movement of the expression "=2+Al" (and its resulting value), from cell Bi to cell Cl, rather than the changes to each of Ranges "BI" and "Cl" referred above. Data values are distinct from document objects because their association with document objects may he transient. For example, whereas the expression "=2+Al" was associated with Range "B I" before the change, it is associated with Range "Cl" after the change.</p>
<p>Such an audit trail delivers a continuous history of changes for each of a spreadsheet's document objects. For example, referring to Figure 8, a history of changes for Range "B I" is provided in the audit trail's records corresponding to Action Numbers 3 [48] and 10 [50] and a history of changes for Range "Cl" is provided in the audit trail's records corresponding to Action Numbers 4 [49] and 11 [51]. However, it does not deliver a continuous history of changes for each of a spreadsheet's data values. For example, it is unclear from the audit trail whether, referring to Figure 5, the expression "2+A1" [14] (and its resulting value) now contained in cell Cl represents the same data item as, referring now to Figure 3, the expression "2+A1" [4] in cell Bi; referring to Figure 8, the same audit trail might result from the user deleting the expression "=2+Al" in cell B1 [50] and entering anew the expression "=2+Al" in cell Cl [51] which, by implication, may represent a different data item.</p>
<p>It is worth noting that auditing systems which do not operate in real-time but instead operate by, for example, comparison of successive file versions (e.g. a daily scan of spreadsheet files to identify changes with reference to corresponding file versions backed up on the previous day) are limited to either similarly tracking changes to document objects or, due to the transient nature of associations between document objects and data values, to uncertain interpretation of changes made to spreadsheets' data values. In either event, the resulting audit trails are not readily readable and find limited applications.</p>
<p>In contrast to the audit trail described above, other (real-time) auditing systems instead either prohibit such changes -limiting changes to static document objects -or record changes in terms of the essence of the change to the spreadsheets' document objects, such as "moved Range B 1 to Range Cl". The former benefits from continuity of associations between a spreadsheet's document objects and its data values, and consequently produces more practicable audit trails. However, it restricts spreadsheets' valued Ilexibility.</p>
<p>Referring to Figures 9 and 10, respectively before and after the change to Workbook "Book 1", the "change tracking" functionality provided by Microsoft Excel(RTM) takes the latter approach [56].</p>
<p>(Whilst "change tracking" is not intended to facilitate functionality described later herein, it is referred for sake of informative comparisons with the present invention.) Hence it is clear from the "change history" in Figure 10 that, referring to Figure 5, the expression "=2+Al" [14] in cell Cl represents the same data item as, referring to Figure 3, the expression "2+Al" [4] formerly in cell B 1. However, further issues arise relating not only to the transience of associations between document objects and data values but also to precedence-dependence relationships between spreadsheets' document objects and data values contained therein.</p>
<p>As referred earlier, a spreadsheet's structure is defined not only by its document objects' parent-child relationships but also by its document objects' precedence-dependence relationships. Range objects' precedence-dependence relationships are defined by their "DirectPrecedents" and "DirectDependents" properties. A Range object's DirectPrecedents property returns a Range object that represents direct precedents of the Range object i.e. other Range objects that are referred in the Range object's formula. Similarly, the DirectDependents property returns a Range object that represents direct dependents of the Range object i.e. other Range objects whose formulae refer to the Range object.</p>
<p>Referring to Figure ii, before the change to Worksheet "Sheeti" in Workbook "Booki", the DirectPrecedents property of Range "Ri" [29] therein returns Range "Al" [28], since the expression in cell BI refers to cell Al. Conversely, the DirectDependents property of Range "Al" [28] returns Range "B1,El,A2" -representing Ranges "Bi" [29], "El" [32] and "A2" [35] -since the expressions in cells Bi, El and A2 all refer to cell Al. The DirectDependents property of Range "B 1" [291 returns Range "El,A2:B2" -representing Ranges "El" [32], "A2" [35] and "B2" [36] -since the expressions in cells El, A2 and B2 all refer to cell B 1.</p>
<p>Referring to Figure 12, Range "Cl" [30] has moved to the location previously occupied, referring to Figure 11, by Range "BI" [29], reflecting the movement of cell BI to cell Cl. Referring again to Figure 12, after the change to Worksheet "Sheet I" in Workbook "Bookl", the DirectPrecedents property of Range "Cl" [30] returns Range "Al" [28] and the DirectDependents property of Range "Cl" [30] returns Range "El,A2:B2". Thus Range "Cl" [30] has assumed the precedence-dependence relationships with Ranges Al" [28], "A2" [35] and "B2" [36] that formerly, referring to Figure 11, had precedence-dependence relationships with Range "BI" [29], whilst maintaining its precedence-dependence relationship with Range "El" [32]. In particular, Range "C 1" [30] not only contains the expression that was formerly in Range "Bl" 129] but has also assumed the corresponding precedence-dependence relationship with Range "Al" [28].</p>
<p>As a result of the movement of cell BI to cell Cl, other expressions and precedence-dependence relationships have also changed. For example, the expression in cell B2 has changed from, referring to Figure 3, "B 1" [9] to, referring now to Figure 5, "=C 1" [1 8] and the former precedence-dependence relationship between Range "B2" and, referring to Figure 11, Range "B 1" [29] has been replaced by a precedence-dependence relationship between Range "B2" and, referring now to Figure 12, Range "CI" [30].</p>
<p>Detail of precedence-dependence relationships is included within expression data in the change history provided by Microsoft Excel(RTM). For example, referring to Figure 9, the expression "=B1" in Action Number 9 [55] denotes that, referring to Figure 11, Range "B2" [36] is dependent upon Range "B 1" [29J. Referring to Figure 12, after "dragging and dropping" or "cutting and pasting" cell 131 to cell Cl, Range "B2" [36] is no longer dependent on Range "Bi" [29] hut is now dependent on Range "Cl" [30]. Change tracking maintains detail of precedence-dependence relationships, throughout document changes, by effectively making retrospective modifications to the change history. For example, detail of this precedence-dependence relationship is maintained in the change history as a result of the modification of the expression in action number 9 from, referring to Figure 9, "B1" [55] to, referring to Figure 10, "=C1" [55].</p>
<p>However, such retrospective modification of audit trail data overwrites data pertaining to prior data values, including the precedence-dependence data implicit therein, and consequently the resulting audit trail does not detail changes in precedence-dependence relationships. A change to a document object can constitute a change to data values or precedent-dependent relationships or both. For example, with regard to Range "B2", "dragging and dropping" or "cutting and pasting" cell B I to cell Cl constituted a change to both its precedence-dependence relationships and the data value in cell 132. This is true not only of moving document objects but also of changes to data values contained in document objects. For example, if the data value in cell B I had initially been entered as "=1+Al" and then changed to "=2+A1", the change would have constituted only a change to the data value, without any change to precedence-dependence relationships, whereas if the data value had insteadbeen changed to "= 1 +A2" then the change would have constituted a change to both the data value and the precedence-dependence relationships of Range "B 1".</p>
<p>Changes to precedence-dependence relationships, as distinct from changes to data values, are relevant to a change-analysis audit trail and applications thereof However, referring to Figure 10, action number 10 [56] refers to only Ranges "B I" and "Cl "; ii omits to record that the movement of cell BI to cell Cl relates also to changes to other document objects' data values and/or precedence-dependence relationships and, further, it is unclear which other document objects' data values and/or precedence-dependence relationships changed. For example, after "dragging and dropping" or "cutting and pasting" cell BI to cell Cl, it is unclear from the change history in Figure 10 whether the data value "SUM(Al:C I)" referred in Action Number 8 [54] (regarding Range "A2") was previously "SUM(Al:Bl)" (in which event its data value and precedence-dependence relationships have changed similar to Range "B2" above) or was instead previously "=SUM(A1:Cl)" (in which event its data value and precedence-dependence relationships did not change) since the same change history, as illustrated in Figure 10, results from both scenarios.</p>
<p>Indeed, referring to Figure 10, viewed in terms of the essence of the change as previously described, namely including moving expression "2+Al" (and its resulting value) from cell BI to cell Cl, the data contained in action number 10 [56] relates to a data value that has changed neither expression (referring to Figure 3, "2+Al" [4] before the change and, referring to Figure 5, again "2+A1" [14] after the change), nor resulting value (referring to Figure 4, 3 [4] before the change and, referring to Figure 13, again 3 [14] after the change) nor related precedence-dependence relationships (referring to Figure 11, Range "B 1" had precedence-dependence relationships with Ranges "Al" [28], "El" [32], "A2" [35] and "B2" [36] before the change and, referring to Figure 12, Range "C 1" has precedence-dependence relationships with Ranges "Al" [28], "El" [32], "A2" [35] and "B2" [36] after the change) whereas detail of changes to data values and precedence-dependence relationships, which provides greater insight to the effects of changes and thus finds more extensive applications, is excluded as a result of retrospective changes to the change history as described above.</p>
<p>Referring to Figure 14, additional entries to the audit trail that was formerly presented in Figure 8 explicitly record the changes to the data values contained in Ranges "A2" and "B2", in Action Numbers 12 [57] and 13 [58] respectively, with reference to which appropriate logic might be employed to interpret the aforementioned related changes to precedence-dependence relationships.</p>
<p>However, changes to precedence-dependence relationships can occur in the absence of any corresponding changes to dependents' expressions and hence without either such additions to dependent document objects' audit trails or any retrospective changes to the change history. For example, if the Microsoft Excel(RTM) user did not move cell BI to cell Cl but instead defined a new (constant) worksheet-specific Name "Start" with value 10 then, referring to Figure 15, the entry [53] in respect of the expression "Start" in Range "Al" is unchanged from, referring to Figure 9, Action Number 2 [531 before the change. But the value resulting from the expression "=Start" in cell Al has changed from, referring to Figure 4, 1 [3] to, referring to Figure 16, 10 [60], reflecting that, referring again to Figure 15, the former relationship between existing Name "Start" referred in Action Number 1 [52] and Range "Al" referred in Action Number 2 [53] has been replaced by a relationship between new worksheet-specific Name "Start" referred in Action Number 10 [59] and Range "Al" referred in Action Number 2 [53].</p>
<p>Returning to the prior example of "dragging and dropping" or "cutting and pasting" cell BI to cell Cl in Worksheet "Sheetl" of Workbook "Booki", referring to Figure 5, the data value "=SIJM(A1:Dl") [16] in cell El is unchanged from, referring to Figure 3, "SUM(Al:D1)" [7] and, referring to Figure 12, precedence-dependence relationships between Range "El" [32] and Ranges "Al" [28], "BI" [29], "Cl" [30] and "Dl" [31] are unchanged from, referring to Figure 11, precedence-dependence relationships between Range "El" [32] arid Ranges "Al" [28], "BI" [29], "Cl" [30] and "Dl" [31]. Consequently, there is no entry relating to Range "El" in the audit trail in Figure 14. However, the value resulting from the expression in cell El has changed from, referring to Figure 4, 11 [7] to, referring to Figure 13, 8 [16]. Referring to Figure 14, the value resulting from the expression in Range "El" has changed as a result of the changes to the data values in Ranges "B I" and "C I", per Action Numbers 10 [501 and 11 [51].</p>
<p>But viewed instead in terms of the changes made to the data values contained in Worksheet "Sheeti" of Workbook "Booki", the value resulting from the expression in Range "El" has changed as a result of its changing precedence-dependence relationships with other data values. In "dragging and dropping" or "cutting and pasting" cell B I to cell Cl, the essence of the change made to Worksheet "Sheeti" in Workbook "Book I" was threefold: firstly, referring to Figure 3, deletion of the constant [5], with value 3, formerly in cell Cl; secondly, referring to Figure 7, association of the expression "2+Al" with Range "Cl" [30], replacing its former association with Range "Bl" [29]; and thirdly, referring to Figure 5, implicit creation of a new (null) data value [13] in cell B!.</p>
<p>Thus, after "dragging and dropping" or "cutting and pasting" cell BI to cell Cl, whilst the precedent document objects for Range "El" are unchanged as described above, its precedent data values no longer include the constant (with value 3) and additionally include the new data value (with null value).</p>
<p>The system for auditing and tracking changes to data will now be described. In contrast to systems described above, the present invention described hereafter: Creates and maintains an audit trail that details changes to data values, rather than changes to document objects; Delivers a continuous audit trail of changes to each data value, throughout any changes of the data value's associated document object; Delivers an audit trail that extends beyond changes to data values, to include changes to constants that are contained within expressions (and thus to all constants in a document); Differentiates between changes to expressions' calculations (e.g. operators, functions) and changes that are limited to expressions' elements (e.g. values of constants contained in expressions); Further differentiates between the above referred changes to data values and changes to relationships between data values; Records data pertaining to relationships, and changes thereto, separate from data relating to expressions; In respect of each action, fully documents all effects on data values, without overwriting existing audit trail data; and Might further record detail of changes to values resulting from expressions.</p>
<p>The auditing system's "data objects" are defined so as to broadly coincide with data values, as defined earlier, including constants and expressions. Their key purposes include enabling: tracking changes of associations between document objects and data values; tracking changes to user data contained within expressions and document objects' names; and separation between detail of data values' relationships, and records of changes thereto, from detail of expressions. The auditing system's data objects in relation to a given Microsoft Excel(RTM) Workbook, and their parent-child and precedence-dependence relationships, differ from the Workbook's document objects and data values, and their parent-child and precedence-dependence relationships, in a number of ways.</p>
<p>Some Microsoft Excel(RTM) document objects cannot be associated with data values (they can contain neither constants nor expressions) and hence these objects are similarly not associated with any data objects. Such document objects act only as "containers" for other document objects (which may, in turn, contain data values) and include ChartObjects and ChartGroups. For example, referring to Figure 6, a ChartObject object [21] cannot contain any data values (it can contain only a Chart object [22] and related formatting data).</p>
<p>The parent-child hierarchy of document objects in a Microsoft Excel(RTM) Workbook may include document objects that, whilst they are capable of containing data values, currently contain no data values (for example, in the case of Range objects, they are blank) and, further, have no precedence-dependence relationships with other document objects (they are not referred in any expression).</p>
<p>Such document objects are not associated with data objects. For example, referring to Figure 7, Worksheet "Sheeti" of Workbook "Book 1" contains single-cell Ranges "Fl" [33], ..., IV1 [34], "C2" [37], ..., "1V65536" [38] that do not contain data values and are not referred in any expressions. (It further contains multi-cell Range objects that similarly contain no data values and include, for example, Ranges "Fl:G1 ", "C2:1V2", "A3:TV65536".) Elements of an expression may represent data items entered in to a Workbook which, referring to Figure 1, may be considered to constitute constants since they are not calculated and do not change.</p>
<p>For example, referring to Figure 3, the expression "2+A1" [4] in cell BI contains a "constant" with value 2; whereas the value resulting from the expression in cell Al may change and hence the value resulting from the expression "2+A1" in cell Bi may also change, the value 2 is not calculated and does not change. Where expressions and constants so coexist in a single document object, the Microsoft Excel(RTM) Object Model terminates with the document object. In contrast, the "constant", with value 2, corresponds to a data object that is distinct from the data object(s) corresponding to the expression and its resulting value.</p>
<p>User data is often entered in to document objects' "Name" etc properties. Their contents may similarly be considered to constitute data values and, accordingly, the auditing system's data objects include data objects corresponding to such data values. For example, referring to Figure 6, a Chart object [22] can be associated with a (constant) data value e.g. the chart's title as returned by the Text" property of the ChartTitle object that is, in turn, returned by the Chart object's "ChartTitle" property.</p>
<p>Referring to Figure 17, prior to "dragging and dropping" or "cutting and pasting" cell BI to cell Cl, the auditing system contains 19 data objects, numbered 1-19, in relation to Workbook "Bookl".</p>
<p>Titles are represented by data objects 1 [61], 2 [62], 14 [73] and 15 [74], which correspond to (text) constants "Booki", "Sheeti", "My Chart" and "Seriesi" respectively. Data objects 16 [751, 17 [76], 18 [77] and 19 [78] correspond to constants that represent years 1999-2002. Data objects 3 [79], 6 [65], 7 [66] and 8 [67] represent inputs to Workbook "Book 1" and correspond to constants with respective numerical values of 1, 2, 3 and 4. Thus each constant in Workbook "Booki" corresponds to an individual data object in the auditing system.</p>
<p>Data objects 4 [63], 5 [64], 9 168], 11 [70] and 1 3 [72] correspond to expressions and the values resulting from the same expressions. For example: referring to Figure 17, data object 5 [64] corresponds to, referring to Figure 3, the expression "=2+Al" [4] in cell Bi and, referring to Figure 4, the resulting value of 3 [4] in the same cell; referring to Figure 1 7, data object 5 [64] is the parent data object of data object 6 [65], which, referring to Figure 3, corresponds to the constant, with value 2, in the expression "=2+A1" [4].</p>
<p>Parent-child relationships between data objects define the parent-child hierarchy of data objects in the audit trail for Workbook "Booki". Data object 1 [611 is the parent data object of data objects 2 [62] and 3 [791. Data object 2 [62] is the parent data object of data objects 4 [63], 5 [64], 7 [66], 8 [67], 9 [68], 10 [69], 11 [70], 12 [71], 13 [72] and 14 [73]. As described above, data objectS [64] is the parent data object of data object 6 [65]. Data object 14 [73] is the parent data object of data object 15 [741 which, in turn, is the parent data object of data objects 16 [75], 17 [76], 18 [77] and 19 [78].</p>
<p>Data objects are a "step" removed from a Workbook's document objects. Their associations with document objects are broadly coincident with the associations between related data values and document objects. For example: data objects 1 [61], 2 [62], 14 [73] and 15 [74] are respectively associated with Workbook "Bookl" [26], Worksheet "Sheetl" [27], Chart "Sheetl Chartl" [40] and Series "Seriesl" [42] respectively; data object 3 [79] is associated with Name "Start" [47]; data objects 4 [63], 5 [641, 7 [66]. 8 [67], 9 [68], Il [70] and 13 [72] and respectively associated with Range objects "Al" [28], "B 1" [29], "Cl" [30], "Dl" [31], "El" [32], "A2" [35] and "B2" [36].</p>
<p>Document objects that cannot contain data values, such as ChartObject "Chartl" [39], the (unnamed) ChartGroup object [41] and Point objects [43-46], are not associated with any data objects and empty document objects, such as Range "Fl" [33], are also not associated with any data objects.</p>
<p>As described earlier, associations between a Microsoft Excel(RTM) Workbook's document objects and its data values are transient. Similarly, associations between the auditing system's data objects and a Workbook's document objects may change, and detail of changes thereto may be recorded to the system's audit trail. however, data objects consistently correspond to the same data values throughout changes to the Workbook, enabling the auditing system to deliver a continuous audit trail of changes to each data value.</p>
<p>Referring to Figure 18, after "dragging and dropping" or "cutting and pasting" cell Bi to cell Cl, data object 5 [64] is no longer associated with Range "B 1" [29] but is now associated with Range "Cl" [30] (reflecting the movement of the expression "=2+A I" from, referring to Figure 3, cell B I [4] to, referring to FigureS, cell Cl [141). Referring again to Figure 18, all data objects persist with the exception of data object 7 166] (that, referring to Figure 3, formerly corresponded to the constant [5], with value 3, in cell Cl) which is now "dead" and no longer associated with any document object. New data object 20 1801 is associated with Range "Bi" [29] and corresponds to the new (null) data value therein. Notably, for example, data object 5 [64] corresponds to the expression "=2+A1" throughout the document change and thus it may serve as a consistent point of reference for recording detail of changes to the same expression and its relationships with other data values.</p>
<p>As referred above, in addition to difièrences between data objects' parent-child relationships and those of a Workbook's document objects, data objects' precedence-dependence relationships also differ from document objects' precedence-dependence relationships. Precedence-dependence relationships between document objects are constrained in ways that include aforementioned limitations of the document object hierarchy. For example, referring to Figure 11, the Range object returned by the DirectPrecedents property of Range "B 1" [29] represents only Range "Al" [28] and does not represent the "constant", with value 2, that is contained within the expression "=2+A1" in Range "Bl" J29], which might equally be considered to constitute a precedent of the same expression.</p>
<p>Further, Range objects' DirectPrecedents and DirectDependents properties do not serve to define precedence-dependence relationships with other (non-Range) document objects that can contain data values. Such document objects include, for example, Names. For example, referring to Figure 11, whilst the expression "Start" in Range "Al" [28] refers to Name "Start", the DirectPrecedents property of Range "Al" [28] does not represent Name "Start" (it represents no precedent document objects). Conversely, Name objects do not have DirectPrecedents or DirectDependents properties.</p>
<p>(Also, in the event that a Range object refers to cells on more than one Worksheet object, its DirectPrecedents property will return a Range object representing only a subset thereof i.e. cells referred on the "active" Worksheet object, since the property can not trace "remote" references.) Referring to Figure 19, prior to "dragging and dropping" or "cutting and pasting" cell Bi to cell Cl, precedence-dependence relationships between the auditing system's data objects include the dependence of data object 5 [64], which corresponds to the expression "=2+A1" in Range "B 1", upon data object 6 [65], which corresponds to the "constant", with value 2, that is contained within the expression "=2+Al" in Range "Bi".</p>
<p>Further, precedence-dependence relationships between the auditing system's data objects reflect precedence-dependence relationships between all data values including, but not restricted to, data values contained in Range objects. For example, referring again to Figure 19: data object 4 [63], which corresponds to the expression "=Start" in Range "Al", is dependent upon data object 3 [79], which corresponds to the constant, with value I, that is contained in Name "Start"; data object 15 [74], which corresponds to Series "Series 1", is dependent upon data objects 4 [63], 5 [64], 7 [66] and 8 [67], which correspond to data values contained in Ranges "Al", "Bl", "Cl" and "Dl" respectively, and is also dependent upon data objects 16-19 [75-78], which correspond to data values representing the years 1999-2002.</p>
<p>Referring to Figure 20, after "dragging and dropping" or "cutting and pasting" cell Bi to cell Cl, data object 9 [68], which corresponds to the expression "SVM(A1:D1)" in Range "El", is no longer dependent upon data object 7, which corresponds to the constant (with value 3) that was formerly contained in Range "Cl", but is now dependent upon data object 20 [80], which corresponds to the new (null) data value in Range "B 1". Precedence-dependence relationships have similarly changed in relation to data object 15 [74]. All other existing precedence-dependence relationships between data objects are unchanged. Notably, for example, data object 9 [68], which corresponds to the expression "SUM(Al:D1)" in Range "El", remains dependent upon data object [641, which corresponds to the expression "2+Al" that was formerly contained in Range "Bi" and is now contained in Range "Cl ". Thus the relevant precedence-dependence relationships for data objects 9 and 15 have been maintained throughout the document change and, where precedence-dependence relationships between data objects have otherwise changed as a result of the document change, the changes are indicative of revisions to the underlying calculations that are programmed in Workbook "Booki".</p>
<p>For example, referring again to Figure 20, whereas data object 11 [70], which corresponds to the expression contained in Range "A2" that changed from "=SUM(Al:B1)" to "=SUM(A1:C1)", remains dependent upon data object 4 [63j, which corresponds to the expression "=Start" in Range "Al", and similarly upon data object 5 164], which corresponds to the expression "=2+Al" that was formerly contained in Range "BI" and is now contained in Range "Cl", hut it is now also dependent upon new data object 20 [80], which corresponds to the (null) data value now in Range</p>
<p>B</p>
<p>Referring to Figure 21, if the aforementioned alternative change were instead made to Workbook "Booki", whereby the Microsoft Excel(RTM) user defines new worksheet-specific Name "Start" with (constant) value 10, then data object 4 [63], which corresponds to the expression "=Start" in Range "Al", ceases to be dependent upon data object 3 [79], which corresponds to the constant (with value 1) that is contained in initial Name "Start", and is instead dependent upon new data object 20 [81], which corresponds to the constant (with value 10) that is contained in worksheet-specific Name "Start". Accordingly, the auditing system that refers changes to data objects and their interrelationships can detail not only the creation of data object 20 [81] but also that of its precedence-dependence relationship with data object 4 [631, in place of the former precedence-dependence relationship between data objects 3 [79] and 4 [631.</p>
<p>Referring to Figure 22, audit data might be stored in a relational database containing, say, three tables which, for the purposes of this description, are titled: (Data) Objects [84], Actions [85] and Effects [86]. In respect o a Microsoft Excel(RTM) Workbook, the Objects table [84] details all data objects which, as described above, broadly correspond to data values [83] and may be associated with document objects [82]. Each data object corresponds to a single record in the Objects table. The Objects table stores detail of associations between data objects and document objects, together with detail of parent-child and precedence-dependence relationships between data objects. The Objects, Actions and Effects tables might be stored in Worksheet objects.</p>
<p>Referring to Figure 23, each populated row therein constitutes a record in the Objects table and relates to a different data object. For example: "Row 1" [951 relates to data object 1, "Row 2" [96] relates to data object 2, and so on. Each populated column therein constitutes a field in the Objects</p>
<p>table, where:</p>
<p>"Column A" [87] contains a reference to each data object's parent data object and serves to define the data objects' parent-child hierarchy. For example, referring to cell A2 [97], data object 1 is the parent of data object 2; Co1umn B" [88] and "Column C', [89] define each data object's associated document object where applicable, as described below; "Column D" [90] contains references to each data object's precedent data objects, where applicable, and thereby serves to define data objects' precedence-dependence relationships. For example, referring to cell D4 [100], data object 4 is dependent upon data object 3; and "Column F" [91] denotes whether a data object is "live" (TRUE) or "dead" (FALSE).</p>
<p>"Column B" [88] identifies the type of associated document object where, for example: 1 denotes a Workbook object, 2 denotes a Worksheet object and 3 denotes a (single-cell) Range object.</p>
<p>"Column C" [89] variously contains the contents of the associated document object's Name property (in the ease of, for example, a Worksheet object), Address property (in the case of a Range object) or other relevant property. With reference to the type of document object associated with a given data object arid the data object's parent data object (and data contained in parent data objects' records), the content of "Column C" [89] enables identification of the associated document object.</p>
<p>For example, referring to cells B5 [103] and C5 [104], data object 5 is associated with Range "Bi" in, referring to cells A5 [1021, B2 [98] and C2 [99], Worksheet "Sheeti".</p>
<p>Referring to Figure 24, after "dragging and dropping" or "cutting and pasting" cell B I to cell Cl in Worksheet "Sheell" of Workbook "Bookl", data object 5 is associated with Range "Cl" [104] whereas, referring to Figure 23, it was previously associated with Range "BI" [104]. Further, referring to cell F7 [106] in Figure 24, data object 7 is now "dead" and, referring to cells D9 [107] and D15 [110] therein, it is no longer a precedent of data objects 9 and 15. Instead, data object 20 [111] has been added and is associated with Range "ill" in Worksheet "Sheetl". Referring to cells D9 [107], DII [108] and D15 [110] in Figure 24, data objects 9, 11 and 15 are all now dependent upon data object 20.</p>
<p>Referring to Figure 22, the Actions table [85] includes a record in respect of each relevant document change. It includes a record, or "action", in respect of each document change that resulted in one or more changes to the auditing system's data pertaining to at least one data object, as described below. Two fields therein contain a date and time corresponding to the document change. For example, referring to Figure 25, "Row 12" [114] corresponds to action 12 which denotes that a relevant document change occurred on 14 November 2005 at 13 minutes and 25 seconds after midday.</p>
<p>Referring again to Figure 22, the Effects table [86] includes relational references to the Objects and Actions tables. Each record therein relates to precisely one record in the Objects table and to precisely one record in the Actions table. Thus each record, or "effect", relates to at least one change to a single object at a specified date and time. For example, referring now to Figure 26, "Column A" 1116] contains a reference to a record in the Actions table, i.e. an action, for each record in the Effects table. Similarly, "Column B" [117] contains a reference to a record in the Objects table, i.e. a data object, for each record in the Effects table. For example, "Row 3" corresponds to effect 3 which, referring to cell A3 [123], relates to action 2 and, referring to cell B3 [124], data object 3.</p>
<p>In addition to a data object's creation or deletion, effects might relate to changes to, for example: the data object's parent data object, its association with a document object, its corresponding data value and its precedence-dependence relationships with other data objects. An effect might relate to a data object that has so changed as a "direct" result of the corresponding document change including, for example, a change to the specified data object's associated document object. For example, referring to Figure 7, "dragging and dropping" or "cutting and pasting" cell BI to cell Cl results in a direct change to the data oblect that corresponds to the expression "=2+Al" i.e. the change in its associated document object from Range "Bl" [29] to Range "Cl" [30]. An effect might also, or instead, detail "indirect" changes to a data object that include, for example, changes to a data object that resulted from the application making changes to its corresponding data value (in response to a document change that was made by the application's user). For example, referring to Figure 5 in comparison with Figure 3, "dragging and dropping" or "cutting and pasting" cell Bi to cell Cl results in an indirect change to the data object that corresponds to the expression in cell A2 i.e. from "=SUM(A1:BJ)" [8] to "=SIJM(A1:Cl)" [17].</p>
<p>Referring to Figure 26, a third field in the Effects table is contained in "Column C" [118] and denotes the type(s) of change(s) to the specified data object where, for example: I denotes (direct) creation of a data object; 2 denotes (direct) movement of a data object in the data objects' parent-child hierarchy or, on creation of a data object, establishment of its initial location in the parent-child hierarchy; 3 denotes (direct) change of a data object's associated document object (in the case of for example, a Range object) or change to, say, the Name property of a data object's associated document object; 4 denotes (direct) change to the data value that corresponds to a data object and, where applicable, change(s) to a data object's relationships with other data objects, including precedence-dependence relationships; denotes (direct) deletion of a data object; 6 denotes (indirect) creation of a data object and establishment of its initial location in the data objects' parent-child hierarchy; 7 denotes (indirect) change of a data object's associated document object (in the case ot for example, a Range object) or change to, say, the Name property of a data object's associated document object; 8 denotes(indirect) change to the expression that corresponds to a data object; 9 denotes change(s) to a data object's relationships with other data objects, including precedence-dependence relationships; and 0 denotes (indirect) deletion of a data object.</p>
<p>Combinations thereof denote multiple corresponding changes to the specified data object.</p>
<p>Referring to Figure 22, the nature of the contents of other fields in the Effects table [86] might vary with the type of change made, as described above, and also, where applicable, with the type of document object associated with the specified data object. Referring to Figure 26, "Column D" 1119], "Column E" [120] and "Column F" [121] constitute three fields that contain data items relating to each effect which, within each field, vary in content (analogous to, say, Visual Basic(RTM) variables of "Variant" data type, which can contain string, date, time, Boolean or numeric values). The content of such a field for a given record in the Effects table might be defined by rules that refer the type of change made to the data object and, as appropriate, the type of document object associated with the specified data object. For each type of change detailed in an effect, at least one subsequent field in the effect's record might, where applicable, contain corresponding data.</p>
<p>For example, referring to Figure 26: the number I in cell C3 [125] denotes creation of data object 3 which, referring to cell D3 [126], is associated with a Name object (as denoted by the number 7); the number 2 in cell C3 [125], together with the number 1 in cell E3 [127], denotes that data object I is the initial parent data object of data object 3 (data object 1 is associated with Workbook "Book I"); the number 3 in cell C3 [125] denotes that the document object initially associated with data object 3 is named, referring to cell F3 [128] "Start"; and the number 4 in cell C4 [129] denotes that the initial data value corresponding to data object 3 is, referring to cell D4 [130], the expression =** Referring again to Figure 26, action 12 and corresponding effects 40-49 [138-142] exclusively relate to data values that have changed constant/expression, relationships and/or associated document object. For example, direct changes include the association of data object 5 with Range "Cl" per effect 41 [139] and indirect changes include the deletion of data object 7 per effect 40 1138] and the creation of data object 20 which is associated with Range "BI" per effect 43 [140].</p>
<p>(Referring to Figure 25, action 13 [115] and, referring now to Figure 26, corresponding effects 50- 51 [143-1441 relate to the user "saving" the Workbook.) Referring to Figures 25 and 26, whilst the audit trail includes actions 12-13 [114-115] and corresponding effects 40-51 [138-144], the auditing system has not made any retrospective changes to either pre-existing actions 1-11 [112-113] or effects 1-39 [122-137], which remain intact as illustrated by comparison with Figures 27 and 28 respectively. Consequently, detail of changes that preceded "dragging and dropping" or "cutting and pasting" cell Bi to cell Cl remains available for review and reference by any associated functionality and reporting. For example, referring to Figure 26, in contrast with other auditing systems described above with reference to Workbook "Book!", the audit trail records that: the expression in cell A2 was not "SUM(A1:Cl)" throughout but was initially "SUM(A1:B1)" per effect 29 [136] (and, as a result of "dragging and dropping" or "cutting and pasting" cell BI to cell CI, was subsequently changed to "=SUM(A1:C1)" per effect 47 [1411, with corresponding changes to its precedent-dependent relationships); and, prior to "dragging and dropping" or "cutting and pasting" cell B 1 to cell Cl, the expression in cell B I was initially entered as "=1+A1" per effect 9 [133] and then changed to "2+A1" per effect 11 [135].</p>
<p>In addition to parent-child and precedence-dependence relationships, other relationships can be inferred in respect of data values contained in a spreadsheet. Such relationships are not explicitly represented by Microsoft Excel(RTM)'s Object Model and might include, for example, "association" relationships between data values that are commonly referred by a range reference in a formula (as distinct from association of data objects with document objects). For example, referring to Figure 3, the expression "SUM(Al:Bl)" [8] in cell A2 contains reference to Range "Al:Bl", and Ranges "Al" and "B I" therein contain data values which are commonly referred by the single Range reference "Al:Bl" (as distinct from separate references in, for example, the expression "=Al+B1"); one might therefore infer that the data values in Ranges "Al" and "Bl" have an association relationship with one another. Accordingly, referring to Figure 29, the auditing system's data object 4 [63] (which is associated with Range "Al") and data object 5 [64] (which is associated with Range "BI") share an association relationship with data object 12 [71] (which is associated with Range "Al:Bl"). Referring to Figure 23, "Column E" contains references denoting the same data objects' association relationships, in cells E4 [101], E5 [105] and E12 [109], and data objects 4, 5 and 12 share a precedence-dependence relationship with data object 11 (which is associated with Range "A2") as denoted by cell Dl 1 [108].</p>
<p>Further, such relationships might include association relationships between such data objects (where the data objects correspond to data values contained in Range objects) and data objects associated with other document objects that include, for example, a Name object that similarly commonly refers the same Range objects. For example, referring again to Figure 29, a new data object, associated with a Name object that contains the formula "Sheet1!$A$1:$B$l", might have association relationships with data objects 4 [63], 5 [64] and 12 [71], and vice versa. Association relationships might also relate to data values that, whilst not commonly referred by a range reference in a formula, were created in a manner that implies association relationships. For example, data objects, corresponding to data values contained in Range objects, might share association relationships in the event that they are created by extending a series e.g. by selecting cells and dragging the "fill handle" or by using the Microsoft Excel(RTM) Series command. Thus association relationships may be independent of any Range references contained in expressions.</p>
<p>Similar to changes to precedent-dependent relationships, distinct records of changes to association relationships are informative to functionality and reporting. For example, referring to Figure 30, as a result of "dragging and dropping" or "cutting and pasting" cell Bi to cell Cl: association relationships for data object 10 F69], which is associated with Range "Al:Dl", have changed (to exclude data object 7 and include data object 20 [80]) and accordingly, whilst the expressions contained in Range "El" and Series "Seriesi" (which both refer Range "A1:D1") are unchanged as described above, precedents of associated data objects 9 and 15 have changed accordingly; and association relationships for data object 12 [71], which is associated with Range "Al:Cl" after the change, have changed (to include data object 20 [80]) and hence, referring to Figure 24, precedents of data object 11 [108] (corresponding to the expression in Range "A2" which refers Range "Al:C1") have changed accordingly.</p>
<p>Referring to Figure 31, the auditing system might realise the audit trails described above by repeatedly executing a process that can be considered in terms of the following sequence of steps: The application's user performs an action relating to the document [145], whether a change to the document or simply navigating the document or employing other functionality available in the application such as "saving" a Microsoft Excel(RTM) Workbook; The system identifies all actions by the user that relate to document changes that have not previously been processed by the system [146], whether the changes coincided or preceded the action referred above; For each relevant action so identified, the system creates a record in the Actions table and records a corresponding date and time therein [147]; Similarly, for each relevant action, the system identifies all document objects that changed as a result of the action [148]; For each relevant action, with reference to corresponding document changes, the system identifies all data objects that require related amendments [149]; and For each data object so identified, the system creates and populates new records in the "Effects" table and, as required, amends the corresponding record(s) in the Objects table [150].</p>
<p>Referring now to Figure 32, if the method is executed as an add-in program or script, the audit process might begin with an event [15 1] that is raised by, for example, the Microsoft Excel(RTM) application. Otherwise, the start of the process is broadly coincident with such an event.</p>
<p>Throughout the process, data is variously soureed from, for example: the event, the Microsoft Excel(RTM) application, the Microsoft Excel(RTM) workbook, the Windows operating system and the add-in. Data is first analysed to identify any changes to the spreadsheet's document objects, where said changes preceded the event and are not reflected in the audit data [152]. Such changes might, for example, include those for which the Microsoft Excel(RTM) application does not raise an event and those made without the auditiiig system in operation. For each document change thus identified, the process in Figure 33 is performed [1531. Data is then analysed with specific regard to any changes, to the spreadsheet's document objects, that relate to the event [154]. If a document change is thereby identified, the process in Figure 33 is performed [1 551.</p>
<p>Referring now to Figure 33, a new record is created in the audit data's Actions table [156] and its fields are populated as described above. Thus the Actions table includes a record for each relevant event raised by the application. Data is analysed to identify all data objects that are impacted as a direct result of the document change [1571. For each object thus identified, the process in Figure 34 is performed [158]. Data is further analysed to identify all data objects that are impacted as an indirect result of the document change [159]. For each object thus identified, the process in Figure 34 is performed [160].</p>
<p>Referring now to Figure 34, the process in Figure 35 is performed in respect of each change to the data object [161].</p>
<p>Referring now to Figure 35, one or more records are created in the audit data's Effects table and fields therein are populated with data relevant to the change to the data object and/or the change to the data object's relationships with other data objects [162]. The contents of the record's fields are as described above. Where the change relates to the same object and action as those of the last record in the Effects table then, lbr sake of efficiency, the data might be appended to existing data in the table's last record. Where the change to the object implies a change to the contents of its record in the Objects table, the Objects table is amended accordingly [163].</p>
<p>On entry of a new or amended formula, the system parses the formula to identify all data values and relational references therein and, with reference to its data objects and audit trail data, identifies and amends related data objects and creates corresponding entries in the audit trail. For example, referring to Figure 26, effects 10 [134] and 11 1.1 35], which relate to action 5 and the expression then contained in cell Bl, respectively reflect that the constant data value contained in the expression has changed (from 1) to 2 and, whilst the expression has consequently changed (from "=l+Al") to 2+Al", it remains dependent upon the data value contained in cell Al (effect 11 [135] includes change type 8" and, specifically, it excludes both change type "9" and associated references to precedent data objects). Where applicable, this includes creating new data objects, which may be associated with blank document objects. For example: on initially entering the expression "=1+A1" in cell Bl, the system creates data objects 5 and 6, per effects 7 [1311 and 8 [1321, which respectively correspond to the expression "=1+Al" and the constant therein with value 1; and on "dragging and dropping" or "cutting and pasting" cell Bl to cell Cl, the system creates data object 20, per effect 43 [140], which corresponds to the resulting (null) data value contained in cell Bl.</p>
<p>On, say, "dragging and dropping" or "cutting and pasting" document object(s), the system creates additional records in its audit trail that include detail of resulting changes of document objects associated with data objects and thereby preserves continuity in respect of records for data objects.</p>
<p>For example, referring again to Figure 26, on dragging and dropping" or "cutting and pasting" cell Bl to cell Cl, the audit trail's corresponding entries include effect 41 [139], which reflects that the document object associated with data object 5 has changed (from Range "B I") to Range "Cl". On inserting or deleting document object(s) -for example, row(s), column(s) or cell(s) in a spreadsheet -the system similarly preserves continuity in respect of records for related document objects. For example, if a row is deleted from a Microsoft Excel(RTM) Workbook then, in addition to other new entries in the Effects table where applicable, the system records changes of document objects associated with all relevant data objects i.e. data objects that correspond to data values contained in Range objects located below the deleted row.</p>
<p>The process described above might be performed by a number of components which might be structured as illustrated in Figure 36, wherein: Components are executed in response to corresponding events raised by the application, which may relate to a document change [164] or may not relate to a document change [165]. For example, in the case of the Microsoft Excel(RTM) application, the "ShcetChange" event relates to a document change (it occurs when the contents of cells in a worksheet are changed by, for example, the user) whereas the "SheetSelectionChange" event does not relate to a document change (it occurs when the selection changes on a worksheet) Where applicable, a component [166] may examine the document to identify any preceding document changes that are unrelated to the event (including, for example, changes that did not correspond to an event and are not yet reflected in the system's audit trail), which may result in the execution of one or more components [167] that make corresponding changes to the system's audit trail data. For example, in the case of the Microsoft Excel(RTM) application, following a SheetSelectionChange event, the system might identify a new Name object and a component might amend the system's audit trail accordingly; and Where the process commenced with a document change-related event [164], corresponding components [168] then record resulting changes to the system's audit trail.</p>
<p>As applicable, all components might read/write data from/to, for example, document objects and the system's audit trail. A variety of subsidiary components might be employed to perform operations required by one or more components that might include, for example, reading data from the system's audit trail. Further, the system might create instances of objects (where each object corresponds to, for example, a data object or document object) and these objects might he referred by components for sake of processing efficiency. For example, in the case of Visual Basic(RTM), the system might define "classes" to act as templates from which instances of objects can be created to represent, say, document objects that contain data values.</p>
<p>The above describes an example of the present invention's methods and outputs. In advance of describing examples of functionality that might consequently be afforded to the application's user, examples of potential variations to the auditing system will now be described.</p>
<p>If the auditing system's definition of data objects does not extend beyond data values to include, for example, constants contained within expressions as described above, then the system can be considered to audit changes to data values as opposed to changes to data objects.</p>
<p>In comparison with the above description, all tables might vary in structure and content, according to efficiency considerations that include, for example, computer memory allocation, file size (whether stored with or separate from the document) and processing time (in respect of both modifying the audit trail and delivering associated functionality). In general, such efficiency considerations may have inverse relationships and efficiency in one respect may thus imply relative inefficiency in another respect. Accordingly, the structure and content of the audit trail may vary according to requirements and applications thereof at any given time.</p>
<p>For example, referring to Figure 23, the integer field that denotes the type of associated document object [88] in the Objects table might further contain another integer field in the range 1-99 by multiplying the value of existing data in the field by 100 and adding new data thereto. Specifically, detail of a data object's precedence-dependence relationships can be employed to infer the corresponding data value's standing in the document. For example, in the case of a Microsoft Excel(RTM) Workbook, a data value's standing might he, say, "input" (no precedents but dependents), ca1culation" (precedents and dependents), output" (precedents only) or "title" (neither precedents nor dependents). Thus, for sake of processing efficiency, the Objects table might include an integer field, as described above, denoting such standing where, say, 1 denotes "input", 2 denotes "calculation", 3 denotes Input & calculation" (e.g. a data object corresponding to an expression that contains one or more constants and has dependents), 4 denotes "output", 5 denotes "input & output" and so on. Further, changes thereto might he recorded in the Effects table.</p>
<p>Data contained in the Effects table is sufficient to recreate the Objects table at the present time.</p>
<p>Similarly, with reference to the Actions table's content, data contained in the Effects table is sufficient to recreate the Objects table at any past date and time in the document's lifetime. Hence, whilst the Objects table might be stored with the audit data for sake of efficiency, the auditing system's output might be considered to include only the Actions and Effects tables and the inclusion of the Objects table [841 in Figure 22 might be considered to be for illustrative purposes only.</p>
<p>Where the Objects table is stored with the system's audit trial, say for sake of processing efficiency, it might further include additional fields. For example, referring to Figure 23, for each record therein, it might include references to child data objects [92], dependent data objects [93] and/or corresponding effects [94]. Tndeed, the Objects table might be further expanded to include constants, expressions and/or values resulting from expressions, in which event a change to the contents of the Objects table might be considered to trigger creation of one or more corresponding records in the Effects table.</p>
<p>In the event that the Objects table is stored with the audit data in practice, it might be stored only in part and omitted fields might be interpreted with reference to audit data, preferably with reference to the Objects and Effects tables alone. For example, referring again to Figure 23: references to data objects' child data objects [92] might be populated by examination of (other) data objects' parent data objects [87]; similarly, references to data objects' dependent data objects [93] might be populated by examination of (other) data objects' precedent data objects [90]; and references to data objects' corresponding effects [941 might he populated by examining (each and every record in) the</p>
<p>Effects table.</p>
<p>Alternatively, say for sake of minimising the size of the audit trail (and, in particular, corresponding computer memory allocation), any fields omitted from the stored Objects table may not he populated but corresponding data may instead be referred, on each relevant occasion, from the Effects table. For example, where detail of constants and expressions are excluded from the Objects table, the auditing system might obtain them from corresponding entries in the Effects table, perhaps, referring to Figure 23, with reference to the specilied data objects' corresponding records in the Effects table [941.</p>
<p>In respect of all tables, data may extend across multiple fields as required due to constraints arising from the specifications and limitations of the audit trail's storage environment. For example: referring to Figure 23, where the audit trail is stored within a Microsoft Excel(R'l'M) Workbook (whether or not the Workbook represents the audited document), references to the effects that correspond to each data object [94] may be contained in more than one field where the length of the corresponding text entry exceeds the number of characters permitted in a cell; and similarly, with consideration to the number of rows and columns permitted in a Worksheet, tables' fields might extend or repeat across a Worksheet and tables' records might further extend across multiple Worksheets.</p>
<p>For sake of processing efficiency, the auditing system might record (in the Effects table) changes to, for example, a data object's child and dependent data objects, in addition to changes to a data object's parent and precedent data objects as described above. Similarly, referring to Figure 23, where the audit trial is stored in a Microsoft Excel(RTM) Workbook, the system might, for example, write each data object's numerical identifier (1 in respect of data object 1 [95], 2 in respect of data object 2 [96] and so on) to cells, as opposed to employing row numbers (and multiples thereof) as described above.</p>
<p>Data objects might be associated with documents other than the audited document and with document objects therein. For example, referring to Figure 22, in respect of a Microsoft Excel(RTM) Workbook with "links" that include "external references", the auditing system's data objects [84] might include data objects associated with other Workbook objects [821 and/or document objects therein.</p>
<p>Referring again to Figure 22, references to precedent and dependent data objects, in the Objects [84] and/or Effects [86] tables, might be negative in order to denote, say, contingent relationships.</p>
<p>For example, in the case of a Microsoft Excel(RTM) Workbook and a document object containing an expression that includes the IF function, precedent data in respect of the data object that corresponds to the expression might include negative references to the data objects that are associated with the document objects referred in the first argument of the IF function and, conversely, the data object that corresponds to the expression might be referred with a negative sign in dependent data in respect of the data objects that are associated with the document objects referred in the first argument of the IF function. Further, formatting available in the application might be employed in place of data fields. For example, referring to Figure 23, where the audit trail is stored in a Workbook, the contents of "Column B" [881 might be replaced by varied formatting of records where, for example, bold denotes a Workbook object, underline denotes a Worksheet object, italic denotes a (single-cell) Range object and SO on.</p>
<p>The contents of the Actions table might instead be stored within the Effects table. Specifically, referring to Figure 26, an action's date and time might be stored in two fields of each corresponding effect, in place of the references to the action that is contained in "Column A" [116] of the Effects table. Irrespective, the contents of the Actions table might be completely excluded from the audit data where it is not required by applications of the audit data.</p>
<p>With regard to records in the Effects table, whilst field's contents have been described as varying with the type of object changed and/or the type of change made, the nature of each individual field might instead be constant, in which case there might be additional fields and, in a given effect, one or more fields might be empty where they are not applicable to the type of object changed and/or the type of change made.</p>
<p>Where contents of the audit trail have been described as containing numeric codes such as, referring to Figure 26, the digits 0-9 contained in "Column C" [118] and denoting the type of change(s) related to an effect, such data fields might take alternative formats such as alphanumeric. For example, referring again to Figure 26, records might be created in the Effects table relating to system-generated reporting that might include, for example, records of system-generated notifications and records of any responses thereto from users, and records of such reporting might include alphabetic codes in "Column C" [1181. Similarly, alternative characters and codes might be employed in effects that relate to "undoing" or "redoing" actions or actions involving, say, selecting cells and dragging the "fill handle" or using the Microsoft Excel(Wl'M) Series command as described above. The audit trail described above, notably including such alphanumeric codes, is a specific example of its presentation and it might be presented differently for purposes such as perusal by users with, for example, text in place of codes.</p>
<p>Records in the Effects table described above include detail of changes to data objects that correspond to constants and expressions. The auditing system might similarly write detail of changes in values resulting from expressions, which may (or may not) correspond to different data objects from those that correspond to the related expressions.</p>
<p>Whilst Figure 33 illustrates that exhaustive analysis of data relating to objects impacted as a direct result of a document change precedes analysis of data relating to objects impacted as an indirect result of the same document change, and thus implies that creation of records in the Effects table relating to the former objects precedes creation of records relating to the latter objects, the analysis may not be performed strictly sequentially (i.e. data relating to some objects impacted as an indirect result of the document change may be analysed prior to data relating to some objects impacted as a direct result of the document change) and, with consideration to applications of the audit data, the order of the Effects table's records may similarly vary from that implied by Figure 33.</p>
<p>The audit trail described above facilitates delivery of a variety of functionality to the application's user and some examples thereof will now be described with reference to the Microsoft Excel(RTM) spreadsheet application.</p>
<p>With reference to the system's audit trail, detail of data therein might be presented in varying forms.</p>
<p>Such detail might be presented in terms of document objects, data values and/or data objects and might further be filtered to highlight or selectively present data pertaining to, for example, specific object(s), user(s), time period(s), type(s) of changes and/or relevant criteria relating to system-generated reporting. Such data might relate to more than one document in the event that the system's audit trail data, in relation to a number of documents, is consolidated.</p>
<p>The system's audit trail data facilitates extension or replacement of an application's "undo" functionality to encompass all past actions. Forexample, changes made prior to most recently "opening" a Microsoft Excel(RTM) Workbook might be "undone". Further, the data similarly facilitates extension or replacement of the application's "undo" functionality to afford "non-linear" reversal of past actions. For example, referring to Figure 26, after "dragging and dropping" or "cutting and pasting" cell BI to cell Cl, the prior change to the expression therein, from "=1+A1" to "=2+A1" per effect 11 [135], might be "undone" (i.e. the expression might be changed from "=2+Al" to "=l+A1") via "undo" functionality, without necessitating moving the same expression from cell Cl to its former location in cell BI. Such additional functionality might selectively be applied to more than one document object where, for example, the user concurrently selects multiple cells in a Worksheet. Any "redo" functionality afforded by the application might similarly be extended or replaced with reference to data contained in the system's audit trail.</p>
<p>I'he system's audit trail data, in particular detail therein relating to precedence-dependence relationships, similarly facilitates extension or replacement of other application functionality. For example, Microsoft Excel(RTM) includes "formula auditing" functionality that displays precedent cells and dependent cells of formulas, similar to Range objects' DirectPrecedents and DirectDependents properties described above. Such functionality might be extended or replaced to present other types of document objects that are precedents or dependents of a formula, where said formula might be located in various types of document objects. For example, referring to Figure 19, Name "Start" (which is associated with data object 3 [79]), might be displayed as a precedent of Range "Al" (which is associated with data object 4 [63]) and, conversely, Range "Al" might be displayed as a dependent of Name "Start". Further, such functionality might present relationship data in terms of data values and/or data objects, rather than in terms of document objects. For example, referring again to Figure 19, "formula auditing" functionality might be extended to display the constant, with value 2, that is contained in expression "2+Al" as a precedent of the same expression, or data object 6 [65] as a precedent of data object 5 [64]. It might additionally enable selectively displaying precedent and dependent data values and/or data objects according to, for example, their standing as described above.</p>
<p>An application's validation functionality might similarly be extended, complemented or replaced in order that it might benefit from data contained in the system's audit trail. For example, Microsoft Excel(RTM) includes "data validation" functionality that enables the user to designate valid cell entries according to a variety of criteria. With reference to data contained in the system's audit trail, this functionality might also, for example: relate to entries in other types of document objects; relate to constants contained in expressions; include criteria relating to when, andlor for what time period, changes are valid; and include relevant criteria relating to relationships. Further, with reference to data contained in the system's audit trail, relevant validation criteria might be automatically interpreted and defined (via or independent of the application's existing validation functionality) and detail of any validation failures might be recorded in the system's audit trail as described above and/or advised to the user by various means.</p>
<p>Whilst the embodiment above was described principally with reference to the Microsoft Excel(RTM) spreadsheet application, it will be appreciated that the invention finds wider application to other spreadsheet applications and also to other document applications having document objects with associated data values.</p>
<p>Further modifications lying within the spirit and scope of the present invention will be apparent to a skilled person in the art.</p>

Claims (1)

  1. <p>Claims 1. A method of tracking changes to document data, the document
    data including a plurality of document objects and a plurality of data values, and the method comprising: generating a set of data objects corresponding to respective data values and respective document objects; receiving an input indicating that at least one document object has been modified; selecting data objects corresponding to at least one modified document object and a number of modified data values; and modifying the selected data objects in accordance with the modifications to the corresponding data values or document objects.</p>
    <p>2. A method according to Claim 1, wherein the step of selecting data objects includes the steps of selecting data objects corresponding to modified document objects, and selecting data objects corresponding to data values which data values (or data objects, alternatively) are related to the modified document objects.</p>
    <p>3. A method according to Claim 2, wherein the step of selecting data objects corresponding to data values includes selecting data objects which are identified by relationship data, the relationship data being associated with data objects corresponding to the modified document objects.</p>
    <p>4. A method according to Claim 1, wherein the step of modifying the selected data objects further comprises storing data values associated with the modified data objects.</p>
    <p>5. A method according to Claim 4, wherein the step of storing data values further comprises storing data identifying the operation which modified the or each document object.</p>
    <p>6. A method according to Claim 4 or 5, wherein the step of modifying the selected data objects further comprises storing relationship data relating to the relationships between the selected data objects and other data objects.</p>
    <p>7. A method according to any one of Claims 4 to 6, further comprising loading data values associated with at least one of the data objects, modifying the or each data object in accordance with the loaded data values, and modifying at least one document object in accordance with the or each modified data objects.</p>
    <p>8. A method according to Claim 7, wherein the step of loading data values further comprises selecting most recently stored data values, and loading the selected data values.</p>
    <p>9. A method according to Claim 7, wherein the step of loading data values further comprises receiving selection data relating to at least one document object, selecting stored data values associated with the or each selected document object, and loading the selected data values.</p>
    <p>10. A method according to any one of Claims 4 to 9, further comprising selecting stored data values in accordance with specified criteria, loading the selected data values, and outputting the selected data values.</p>
    <p>11. A method according to Claim 1 0, wherein the criteria specifies data values associated with at least one of a document object, a data object, a specified time period and a user.</p>
    <p>12. A method according to any preceding claim, wherein at least one data object includes relational data referring to other data objects with which the data object has a relationship.</p>
    <p>13. A method according to Claim 12, wherein the relational data comprises at least one of a parent object identifier and a child object identifier.</p>
    <p>14. A method according to Claim 12 or 13, wherein the relational data comprises at least one of a precedent object identifier and a dependent object identifier.</p>
    <p>15. A method according to any one of Claims 12 to 14, wherein the relational data comprises an associated object identifier.</p>
    <p>16. A method according to any one of Claims 12 to 15, wherein the step of selecting data objects further comprises processing the relational data to select data objects related to a modified document object.</p>
    <p>17. A method according to any one of Claims 12 to 16, wherein at least one data object includes a reference to a document object related to the data object, such as a reference to a cell object in which the data value corresponding to the data object is stored.</p>
    <p>18. A method according to Claim 17, wherein the step of receiving an input further comprises determining that at least one FOW or column or cell in the document has been deleted or inserted, the step of selecting data objects further comprises selecting data objects associated with data values of cells located beyond the or each deleted or inserted row or column or cell, and the step of modifying the selected data objects further comprises updating the document object reference of each data object to refer to the document object associated with the cell to which the relevant data value has been moved.</p>
    <p>19. A method according to Claim 18 or 1 3A, wherein the or each row or column is deleted, and the method further comprises selecting data objects associated with the or each deleted row or column, and modifying the selected data objects to record a deleted state.</p>
    <p>20. A method according to any preceding claim, wherein the step of receiving an input further comprises determining that data has been input into an empty document object, and the method further comprises creating a data object including: a data value corresponding to the data in the object; and relational information referring to a data object associated with the object.</p>
    <p>21. A method according to any one preceding claim, wherein the step of receiving an input further comprises determining that a new formula has been input, and the method further comprises creating new data objects associated with inputs in the formula.</p>
    <p>22. A method according to any preceding claim, wherein the step of receiving an input further comprises determining that a first cell has been moved to a second cell, the step of selecting data objects further comprises selecting data objects associated with the first cell, and the step of modifying the selected data objects further comprises updating document references associated with the selected data objects to refer to a document object corresponding to the second cell, whereby continuity can be preserved in respect of the data objects and data values despite changes to the underlying document objects.</p>
    <p>23. A method according to any preceding claim, wherein the step of receiving an input further comprises determining that a document object has been renamed, the step of selecting data objects further comprises selecting a data object associated with the renamed document object, and the step of modifying the selected data objects further comprises updating name data associated with the selected data object in accordance with the new document object name.</p>
    <p>24. A method according to any preceding claim, wherein the step of receiving an input further comprises determining that a reference to an empty document object has been created, and the step of modifying the selected data objects further comprises creating a new data object associated with the empty document object.</p>
    <p>25. A method according to any one of Claims 18 to 24, further comprising recording changes to, or modifying, further data objects having a dependency on the data objects which have been modified.</p>
    <p>26. A method according to any one of Claims 18 to 24, further comprising recording changes to, or modifying, further data objects having a precedence from the data objects which have been modified.</p>
    <p>27. A method according to Claim 25 or 26, further comprising recording changes to, or modifying, at least one of dependence information and precedence information associated with the further data objects.</p>
    <p>28. A method according to any preceding claim, further comprising receiving a selection of at least one document object, and outputting data representing at least one of precedents and dependents of the or each document object.</p>
    <p>29. A method according to Claim 28, further comprising providing a graphical representation of the precedents and/or dependents, preferably as an overlay on a display of the document.</p>
    <p>30. A method according to Claim 28 or 29, further comprising overriding an existing audit display function.</p>
    <p>31. A method according to any one of Claims 28 to 30, wherein the or each selected document object and the precedent and/or dependent document objects comprise a plurality of object types, such as spreadsheet cells, charts, chart series, and so on.</p>
    <p>32. A method according to any one of Claims 28 to 31, further comprising receiving a selection of a range of document objects.</p>
    <p>33. A method according to any preceding claim, wherein the data objects are associated with a plurality of document object types.</p>
    <p>34. A method according to any preceding claim, wherein the data objects are arranged in a hierarchy of data types.</p>
    <p>35. A method according to any preceding claim, wherein the document is one of a spreadsheet, a wordprocessing document, a graphical document, and an audio/visual document.</p>
    <p>36. A method according to any preceding claim, further comprising tracking changes to axiomatic data units contained within document objects.</p>
    <p>37. A method according to Claim 36, further comprising tracking inputs, outputs and formulae of computations contained in the document.</p>
    <p>38. A method according to any preceding claim, further comprising processing the data objects to determine inverse relationships, preferably to determine at least one of child or parent relationships, and precedent or dependent relationships.</p>
    <p>39. A method according to any preceding claim, further comprising filtering audit data to filter out data relating to the modification of document objects, whereby attention can be focussed on data relating to the modification of data values, which data values are associated with the document objects.</p>
    <p>40. A method according to any preceding claim, further comprising recording all data values in the document which are changed by the modification of at least one document object.</p>
    <p>41. A method according to Claim 40 further comprising recording changed outputs of computations depending on the or each modified data object.</p>
    <p>42. A method of tracking changes to document data, the document data including a plurality of document objects, and the method comprising: receiving an input indicating that at least one of the document objects has been modified; and recording changes to the relationships of the or each modified data value.</p>
    <p>43. A method according to Claim 42, further comprising recording changes to at least one of parent relationships and child relationships of the or each modified data value.</p>
    <p>44. A method according to Claim 42 or 43, further comprising recording changes to at least one of the dependents and precedents of the or each modified data value.</p>
    <p>45. A method according to any one of Claims 42 to 44, further comprising recording changes to associations of the or each modified data value with other modified data value(s).</p>
    <p>46. A method according to any preceding claim, further comprising determining whether a modification to a document object or data value complies with predetermined criteria and outputting data representing the result of the determination.</p>
    <p>47. A method according to Claim 46, further comprising determining whether a change in a relationship between one of more document objects and/or data values complies with predetermined criteria.</p>
    <p>48. A method according to Claim 46 or 47, further comprising outputting an alert signal if the modification to a document object or data value does not comply with predetermined criteria.</p>
    <p>49. A method according to Claim 48, further comprising receiving input from a user requesting a variation of the predetermined criteria, and updating the criteria in accordance with the request.</p>
    <p>50. A method according to any one of Claims 46 to 49, further comprising outputting reporting data summarising at least one modification made to a document which modification did not comply with predetermined criteria.</p>
    <p>51. A method according to any one of Claims 46 to 50, wherein the determination is made in response to the modification of the document object or data value by a user, preferably essentially in realtime.</p>
    <p>52. A method according to any one of Claims 46 to 50, wherein the determination is made during the processing of audit data relating to the document object or data value.</p>
    <p>53. A method according to any one of Claims 46 to 52, further comprising processing data representing previous changes, and generating the criteria in dependence on the processing.</p>
    <p>54. A method of processing data, comprising: processing data representing modifications made to one of a document object or a data value in a document; and generating, in dependence on the processing, validation criteria for applying to the given document object or data value.</p>
    <p>55. A method of auditing a document containing a plurality of document objects, the document objects containing business data, and the method comprising creating a database of ob*jects corresponding to the business data stored in the document objects; determining that at least one document object has been modified; updating the database of business data to reflect the modification of the or each document object.</p>
    <p>56. A method according to Claim 55, further comprising storing updated business data in an audit database.</p>
    <p>57. A method of undoing changes in a document, comprising receiving selection data relating to a portion of the document; selecting at least one document object associated with the selection data; selecting at least one data value, the or each data value corresponding to the or each respective document object; and replacing the current value of the or each document object with the corresponding data value.</p>
    <p>58. A method according to Claim 57, wherein the step of selecting at least one data value further comprises selecting, for a given document object, one data value from a plurality of data values, the plurality of data values corresponding to a plurality of previous values of the document object.</p>
    <p>59. A database, comprising: a plurality of data objects, corresponding to data values associated with document objects; and a plurality of audit objects, corresponding to data values associated with the at least one of the data objects after modification of at least document object to which the or each data object relates.</p>
    <p>60. A database according to Claim 59, further comprising at least one of a reference to a parent or child object, a reference to a precedent or dependent object, and a reference to an associated object.</p>
    <p>61. A method of processing a document, comprising accessing a database as claimed in Claim 59.</p>
    <p>62. A computer comprising: a data memory operable to store data to be processed; an instruction memory storing processor implementable instructions; and a processor operable to read and process the data in accordance with instructions stored in the instruction memory; wherein the instructions stored in the instruction memory comprise instructions for controlling the processor to pcrform a method as claimed in any one of Claims 1 to 58 and 61.</p>
    <p>63. A carrier medium carrying computer readable code for controlling a computer to carry out the method of any one of Claims ito 58 and 61.</p>
    <p>64. At least one signal tangibly embodying data generated by a data provider in accordance with a method as claimed in any one of Claims ito 58 and 61.</p>
GB0526293A 2005-12-23 2005-12-23 Data tracking system Withdrawn GB2433614A (en)

Priority Applications (2)

Application Number Priority Date Filing Date Title
GB0526293A GB2433614A (en) 2005-12-23 2005-12-23 Data tracking system
PCT/GB2006/004910 WO2007072051A2 (en) 2005-12-23 2006-12-27 Data tracking system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
GB0526293A GB2433614A (en) 2005-12-23 2005-12-23 Data tracking system

Publications (2)

Publication Number Publication Date
GB0526293D0 GB0526293D0 (en) 2006-02-01
GB2433614A true GB2433614A (en) 2007-06-27

Family

ID=35841113

Family Applications (1)

Application Number Title Priority Date Filing Date
GB0526293A Withdrawn GB2433614A (en) 2005-12-23 2005-12-23 Data tracking system

Country Status (2)

Country Link
GB (1) GB2433614A (en)
WO (1) WO2007072051A2 (en)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140082470A1 (en) * 2012-09-19 2014-03-20 4Clicks Solutions, LLC Spreadtree hierarchy system for spreadsheets and related methods
US9053117B2 (en) 2012-04-11 2015-06-09 4Clicks Solutions, LLC Storing application data with a unique ID

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA2964489A1 (en) * 2014-10-22 2016-04-28 Cheersounds Music System for generating an output file
US10552529B2 (en) 2017-05-03 2020-02-04 International Business Machines Corporation Data change alerts in a collaborative environment
GB2595586B (en) 2018-11-02 2023-08-02 Cser Ventures Llc System for generating an output file
JP7148715B2 (en) 2020-05-07 2022-10-05 シトリックス・システムズ・インコーポレイテッド Dynamic Region Based Application Manipulation

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5499180A (en) * 1993-03-11 1996-03-12 Borland International, Inc. System and methods for improved scenario management in an electronic spreadsheet
US6948154B1 (en) * 1999-03-22 2005-09-20 Oregon State University Methodology for testing spreadsheets

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06101008B2 (en) * 1988-09-09 1994-12-12 インターナショナル・ビジネス・マシーンズ・コーポレーション Spreadsheet processor
GB0403059D0 (en) * 2004-02-12 2004-03-17 Cluster Seven Ltd Xigence version 1.0

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5499180A (en) * 1993-03-11 1996-03-12 Borland International, Inc. System and methods for improved scenario management in an electronic spreadsheet
US6948154B1 (en) * 1999-03-22 2005-09-20 Oregon State University Methodology for testing spreadsheets

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9053117B2 (en) 2012-04-11 2015-06-09 4Clicks Solutions, LLC Storing application data with a unique ID
US20140082470A1 (en) * 2012-09-19 2014-03-20 4Clicks Solutions, LLC Spreadtree hierarchy system for spreadsheets and related methods

Also Published As

Publication number Publication date
WO2007072051A2 (en) 2007-06-28
GB0526293D0 (en) 2006-02-01
WO2007072051A3 (en) 2008-05-08

Similar Documents

Publication Publication Date Title
US7880749B2 (en) Apparatus and method for data charting with an extensible visualization library
US9075787B2 (en) Defining a reusable spreadsheet-function by extracting the function from a complex calculation in a spreadsheet document
US10657313B2 (en) Method and system for editing virtual documents
CA2618211C (en) Designating, setting and discovering parameters for spreadsheet documents
US9348581B2 (en) Systems, method and computer program products for tracking and viewing changes to information stored in a data structure
US8756567B2 (en) Profile based version comparison
US9292822B2 (en) Supplemental system for business intelligence systems
US7734576B2 (en) Apparatus and method for relating graphical representations of data tables
US7822795B2 (en) Apparatus and methods for displaying and determining dependency relationships among subsystems in a computer software system
EP1672528A2 (en) File Formats, Methods, and Computer Program Products for Representing Workbooks
CA3146536A1 (en) Graphical user interface that simplifies user creation of custom calculations for data visualizations
US9430126B2 (en) Insertion of a business object creation interface into an application window
US20170185612A1 (en) Dynamically designing web pages
US8832645B2 (en) Quick-creating objects in an application
US11030163B2 (en) System for tracking and displaying changes in a set of related electronic documents
US8281234B2 (en) Definable application assistant
GB2433614A (en) Data tracking system
US8091016B2 (en) Visually manipulating instance collections
US20240036890A1 (en) System and method of a modular framework for configuration and reuse of web components
US20090271699A1 (en) Apparatus and method for updating a report through view time interaction
Clegg et al. Release 2.1 of SAS® Add-In for Microsoft Office–Bringing Microsoft® PowerPoint into the Mix
Whiteaker et al. HYDROEXCEL 1.1. 1 SOFTWARE MANUAL
CA2603490A1 (en) Systems, methods and computer program products for tracking and viewing changes to information stored in a data structure

Legal Events

Date Code Title Description
WAP Application withdrawn, taken to be withdrawn or refused ** after publication under section 16(1)