Methods and systems for associating data objects
By associating derived data objects with their source objects through a method of storing and linking association information, the method addresses the challenge of managing and accessing ephemeral derived data objects, enhancing traceability and reducing redundant processing.
Patent Information
- Application Number
- PCT/NZ2025/050062
- Authority / Receiving Office
- WO · WO
- Patent Type
- Applications
- Current Assignee / Owner
- Priority Date
- 2024-06-25
- Filing Date
- 2025-06-24
- Publication Date
- 2026-01-02
AI Technical Summary
Existing systems face challenges in managing and accessing derived data objects generated during automated workflows due to their ephemeral nature and lack of accessibility, leading to repeated processing and loss of traceability.
A method for associating derived data objects with their source objects by storing them in a first data store, determining association information, and writing it to a second data store, allowing the origin of derived objects to be traced, even after modifications to the source objects.
Enables effective management and accessibility of derived data objects by creating a hierarchy that links them back to their source objects, improving traceability and reducing redundant processing.
Smart Images

Figure NZ2025050062_02012026_PF_FP_ABST
Abstract
Description
[0001] Methods and systems for associating data objects
[0002] Technical Field
[0003] [1] Embodiments generally relate to methods, systems, and computer-readable media for associating data objects, and in some embodiments, for associating data objects with the source data objects from which they were derived.
[0004] Background
[0005] [2] Data objects may be processed automatically through a variety of workflows to extract and / or process information. As a result of these workflows, data objects often generate derived data objects which may be used to determine new information and / or used as an input for further processing workflows. Derived data objects, also called artifacts, which are generated during such automated workflows are often spread among a variety of systems with different functionalities and accessibility, creating complexities in tracking, managing and accessing these data objects.
[0006] [3] In many cases, derived artifacts are consumable and are only stored temporarily while they are being processed through a workflow or used as an input, and are disposed following the next step in the series of choreographed workflows, which makes managing and tracking these data objects and / or their origins, problematic. Additionally, when processing a data object through an automated workflow which interacts with a plurality of different systems, derived artifacts are often completely inaccessible. For example, they may be stored within the internals of a system which is not accessible to any other system, or they may be stored in unknown locations due to their ephemeral nature.
[0007] [4] Given the lack of accessibility, traceability and the premature disposal of such derived artifacts, workflows may have to be repeated by multiple systems in order to extract and access such derived data objects and the information contained within them.
[0008] [5] It is desired to address or ameliorate one or more shortcomings or disadvantages associated with prior systems and methods for data object association, or to at least provide a useful alternative thereto. [6] Any discussion of documents, acts, materials, devices, articles or the like which has been included in the present specification is not to be taken as an admission that any or all of these matters form part of the prior art base or were common general knowledge in the field relevant to the present disclosure as it existed before the priority date of each claim of this application.
[0009] Summary
[0010] [7] Some embodiments relate to a computer-implemented method comprising: applying at least one processing action to at least one source data object; responsive to applying the at least one processing action, generating one or more derived objects from the at least one source data object; for each derived object: storing the derived object in a first data store; determining association information for the derived object and the at least one source data object from which the derived object is generated; and writing the association information in a second data store to associate the derived object with the at least one source data object, such that an origin of the derived object can be determined; responsive to modifying the at least one source object, creating at least one modified object; and for each derived object of the at least one source object: writing new association information between the derived object and the at least one modified object, and removing previous association information between the derived object and the at least one source data object; or generating a new derived object from the at least one modified object and writing new association information to associate the new derived object with the at least one modified object.
[0011] [8] In some embodiments, the at least one modified object may be laterally related to the at least one source object. The at least one modified object may have a hierarchical value which is greater than the at least one source object. [9] In some embodiments, removing the previous association information between the derived object and the at least one source data object may comprise at least one of deleting, invalidating, archiving or truncating the previous association information.
[0012]
[0010] Generating a new derived object from the at least one modified object may comprise updating a derived object associated with the at least one source object based on modification to the source object. Modifying the source object may comprise applying a cascade of modifications to the one or more derived objects of the at least one source object.
[0013]
[0011] In some embodiments, the automated workflow may include a plurality of processing actions. The processing actions may be completed in sequence. The processing actions may be completed in parallel.
[0014]
[0012] The method may further include determining whether there are further processing actions in the automated workflow. In some embodiments, responsive to determining that there are further processing actions in the automated workflow to be applied, the method may include determining at least one new source object from the derived objects in the first data store; and repeating the method. The method may include iteratively repeating the method until no further processing actions are to be applied.
[0015]
[0013] Derived objects may be stored in a temporary data store immediately after being generated from the source object. The method may further include, for each derived object, determining whether the derived object is to be directly associated with the source object. In some embodiments, responsive to determining that the derived object is not to be directly associated with the source object, the method may include determining one or more ancestral objects of the source object; and selecting the source object from the one or more ancestral objects.
[0016]
[0014] In some embodiments, derived objects may be stored in a temporary data store immediately after being generated from the source object or modified object. In some embodiments, the method may further comprise, for each derived object, determining whether the derived object is to be directly associated with the source object or the modified object. Responsive to determining that the derived object is not to be directly associated with the source object or the modified object, the method may further comprise determining one or more ancestral objects of the source object or the modified object, and selecting the source object from the one or more ancestral objects.
[0015] In some embodiments, the association information may be indicative of a parentchild relationship between the source object and the one or more derived objects. The association information may include at least a unique identifier of the derived object and a unique identifier of the source object. The unique identifier of the source object may be a source key. The unique identifier of the derived object may be an artifact key.
[0017]
[0016] The association information may include characteristic data indicative of characteristics of the derived object. The characteristic data may include at least a location of the derived object in the first data store.
[0018]
[0017] In some embodiments, the new association information may be indicative of a parent-child relationship between the modified object and the one or more derived objects, or may be indicative of a parent-child relationship between the modified object and the new derived object.
[0019]
[0018] The new association information may include at least a unique identifier of the derived object and a unique identifier of the modified object. The unique identifier of the source object or the modified object may be a source key.
[0020]
[0019] The association information or the new association information may include characteristic data indicative of characteristics of the derived object.
[0021]
[0020] In some embodiments, writing the association information to the second data store may include writing the association information to a relational database.
[0022]
[0021] The source object may be a primary source object, which has not been derived from any other data object.
[0023]
[0022] In some embodiments, the method may further include providing a user interface configured to access and manage the at least one source data object and the one or more derived objects associated with the source data object. The user interface may be configured to trace through the association information from any of the one or more derived objects back to the source object. The user interface may be configured to display a hierarchy of the derived objects that stem from the at least one source object.
[0024]
[0023] The user interface may be configured to display the hierarchy of the derived objects that stem from the at least one source object in a tree structure. The user interface may be configured to enable modification of the at least one source object and the derived data objects.
[0024] In some embodiments, the method may further include receiving a modification to the source object; and updating the derived data objects associated with the source object based on the modification to the source object.
[0025]
[0025] In some embodiments, the user interface may be configured to display a hierarchy of the derived objects that stem from the at least one source object or the at least one modified object. The user interface may be configured to receive a modification to the at least one source object or the one or more derived objects.
[0026]
[0026] In some embodiments, the one or more derived data objects are accessible for use by one or more systems.
[0027]
[0027] Some embodiments relate to a computer-implemented method comprising: applying at least one processing action to at least one source data object; responsive to applying the at least one processing action, generating one or more derived objects from the at least one source data object; for each derived object: storing the derived object in a first data store; determining association information for the derived object and the at least one source data object from which the derived object is generated; and writing the association information in a second data store to associate the derived object with the at least one source data object, such that the origin of the derived object can be determined.
[0028]
[0028] In some embodiments, the method may further include determining the at least one source data object. The at least one processing action may form part of an automated workflow. The method may further include triggering the automated workflow after determination of the at least one source data object.
[0029]
[0029] Some embodiments relate to a non-transient computer-readable storage medium storing instructions which, when executed by a processing device, cause the processing device to perform any of the methods disclosed herein.
[0030]
[0030] Some embodiments relate to a computing device comprising: the non-transient computer-readable storage medium disclosed herein; and a processor configured to execute the instructions stored in the non-transient computer-readable storage medium.
[0031] Throughout this specification the word "comprise", or variations such as "comprises" or "comprising", will be understood to imply the inclusion of a stated element, integer or step, or group of elements, integers or steps, but not the exclusion of any other element, integer or step, or group of elements, integers or steps.
[0031] Brief Description of Drawings
[0032]
[0032] Various ones of the appended drawings merely illustrate example embodiments of the present disclosure and cannot be considered as limiting its scope.
[0033]
[0033] Figure 1 is a schematic diagram of an example data object and its derived objects, according to some embodiments;
[0034]
[0034] Figure 2A is schematic diagram showing a data object generated as a result of performing a processing action on the source data object, according to some embodiments;
[0035]
[0035] Figure 2B is a schematic diagram showing multiple data objects generated as a result of performing a processing action on a source data object, according to some embodiments;
[0036]
[0036] Figure 3 is a schematic illustration of a hierarchy of derived objects, according to some embodiments;
[0037]
[0037] Figure 4A is a schematic diagram of a modified object created from a source object 401, according to some embodiments;
[0038]
[0038] Figure 4B is a schematic diagram of the modified object of Figure 4A being associated with a previously derived object, according to some embodiments;
[0039]
[0039] Figure 4C is a schematic diagram of the modified object of Figure 4A being associated with newly derived objects, according to some embodiments;
[0040]
[0040] Figure 4D is a process flow diagram of a method for associating one or more derived data objects with at least one source data object, according to some embodiments;
[0041]
[0041] Figure 5A provides an illustrative schematic representation of association information for a derived object, according to some embodiments;
[0042] Figure 5B provides an illustrative schematic representation of association information for a derived object, according to some embodiments;
[0042]
[0043] Figure 5C provides an illustrative schematic representation of association information for two derived objects, according to some embodiments;
[0043]
[0044] Figure 5D provides an illustrative schematic diagram of association information for a hierarchy of associated data objects, according to some embodiments;
[0044]
[0045] Figure 6 is a process flow diagram of a method for associating one or more derived data objects with at least one source data object, according to some embodiments;
[0045]
[0046] Figure 7 is a process flow diagram of a method for associating one or more derived data objects with at least one source data object, according to some embodiments;
[0046]
[0047] Figure 8 is a process flow diagram of a method for associating one or more derived data objects with at least one source data object, according to some embodiments;
[0047]
[0048] Figure 9 is a block diagram showing an example system that may be used for associating and managing data objects according to some embodiments;
[0048]
[0049] Figure 10A is a schematic illustration of applying methods described herein to generate a hierarchy of associated data objects, according to some embodiments;
[0049]
[0050] Figure 10B is a schematic illustration of an example graph data structure representing multiple derived objects, according to some embodiments;
[0050]
[0051] Figure 11 is a block diagram showing an microservice architecture that may be used for associating and managing data objects according to some embodiments;
[0051]
[0052] Figure 12 is a process flow diagram of a method for generating a sequential record, according to some embodiments; and
[0052]
[0053] Figure 13 is a process flow diagram of a method for deleting multiple objects, according to some embodiments. Description of Embodiments
[0053]
[0054] Embodiments generally relate to methods, systems and computer-readable media for associating data objects, and in some embodiments associating one or more derived data objects with at least one source data object as part of an automated workflow. Some embodiments relate to associating derived data objects which have been generated as a result of an automated workflow to the source object from which they were derived. Embodiments of associating derived data objects with source data objects include determining association information between the derived object and the source object and writing the association information to a data store.
[0054]
[0055] Associations between data objects may be required for various reasons, for example, to improve the management, visibility and / or accessibility of data objects, particularly data objects which may be generated as a result of applying one or more processing actions, for example, in the context of a workflow, where data objects may be stored only temporarily or even deleted after being used. Associating the derived object with the source object from which it was generated provides access to the ancestry of the data object. Some embodiments relate to associating a plurality of derived objects, which have been generated as part of an automated workflow, to their corresponding source data object, thereby creating a hierarchy of derived data objects which can be accessed and managed.
[0055]
[0056] The systems and methods described herein are configured to associate a derived data object with a source data object. A data object may be referred to, and should be regarded as encompassing, a unit of data that is identifiable and manipulable within a digital environment. A data object may be any data which is processed, stored, retrieved, or transmitted as a single entity. A data object may include an instance of a data structure that is defined by a particular data type. This could be a simple data type, such as an integer or a string, or a more complex data type, such as an array, a list, or a custom-defined object in an object-oriented programming language. A data object may include code to be interpreted and executed by a computer. A data object may include a file or a packet of data. For example, this may be a text document, an image file, a video file, a spreadsheet, a web page, or any other type of file that can be stored on a computer or transferred over a network. A data object may also include a table, a record, or a field within a record and may be used to organise and manipulate data within a database.
[0057] In some embodiments, a data object may be made up of one or more data objects. Data objects within the data object, which may also be referred to herein as components, may be used to generate new data objects.
[0056]
[0058] Examples of data objects include, but are not limited to, single characters or a number, files (such as text files, image files, audio files, video files, zip files and archive files), documents (including word documents, PDFs, spreadsheets, presentations), code and code files (which may include text written using a programming language including Python, Java, Ruby, C, C++, C#, Perl, HyperText Markup Language (HTML), Cascading Style Sheets (CSS)), text, databases (including SQL databases, NoSQL databases, relational databases, graph databases), images (including PNG, JPEG, GIFF, TIFF, SVG, BMP, RAW, Psd, EPS), audio and video, web pages, emails, posts, and the like.
[0057]
[0059] Figure 1 is a schematic diagram of an example data object 100 split out into multiple components, each representing a distinct derived data object. In the illustrated embodiments, the data object 100 is a PDF of a scanned copy of a receipt. Each of the multiple components may be derived, directly or indirectly, from the data object 100 as a result of applying one or more processing actions. In this illustration, data object 100 is an example of a primary source object. As shown in Figure 1, the PDF data object 100, is made up of multiple data objects, including an image 102 and a text portion 104. Image 102 and text portion 104 are derived data objects, which have data object 100 as their corresponding source object. The text portion 104 can itself be split out into multiple components, including supplier information 106 and line items 108. Supplier information 106 and line items 108 are derived data objects, which have text portion 104 as their corresponding source object. They are associated directly with their source object (text portion 104), and indirectly with data object 100 (which is the source object of their corresponding source object, that is, text portion 104). Line items 108 may be an array of line item objects, and can also be split out individually, where each individual line item 110 represents an individual data object, each of which is derived from line items object 108. Each individual line item may be made up of multiple components (not shown) such as “description” and “amount”. Each of these components may be derived from the data object 100.
[0058]
[0060] A data object may be of fixed size, and have a fixed number of components, for example, where the data object is invariant across its lifetime. In some embodiments, the data object may be of variable size, having a variable number of components. Variable sized data objects may include processing actions or functions which add or delete components from structures. For example, variable data objects may include stacks, lists, sets, tables and / or files. In some embodiments, the data object may be homogenous and / or heterogeneous. For example, a data object may be homogenous where all components that make up the data object are the same type, such as where the data object is an array, set or file. The data object may be heterogeneous where one or more of its components are of different types, such as a record or list.
[0059]
[0061] In some embodiments, the data object may be pre-processed to identify individual components which make up the data object. For example, in some embodiments, a data object may be a zip file which is pre-processed to extract all of its contents to produce multiple data objects including differing file types which make up the zip folder, and which may themselves have multiple components. In some embodiments, a data object may be a piece of code which, when pre-processed to parse text forming the code, produces multiple data objects relating to the parsed code including its functions and variables. In the example provided in Figure 1, the PDF data object 100 may be pre-processed by using OCR on the scanned image of the receipt, in order to identify the text portion 104 and / or categorise components of the text portion 104 such as the supplier information 106 or the line items 108 which make up the text portion 104. In some embodiments, the pre-processing may be performed by a pre-processing system designed to parse data objects, such as documents or files, to identify and / or categorise at least a first level of potential nested data objects to facilitate further processing.
[0060]
[0062] In some embodiments, the pre-processing may be performed by at least part of an automated workflow configured to process the data objects. For example, the first part of an automated workflow may include pre-processing of the data object in order to identify its components. In some embodiments, pre-processing may be triggered by the type of data object. For example, where the data object is determined to be a zip file or an archive file, this may trigger a pre-processing action which identifies at least the first layer of components of the data object. In further embodiments, components of the data object may be identified and determined as part of an automated workflow, without a specific pre-processing action being applied. That is, as a data object is processed through an automated workflow, its components may be identified as part of one or more processing actions that make up the workflow, with processing actions generating distinct components of the data object.
[0063] A source data object is a data object from which another data object may be derived or generated. That is, a source data object may refer to the source of a generated or derived data object. It is a data object from which one or more components, or other data objects, are derived. A source data object may also be referred to herein as a “source object”. In some embodiments, source objects of other source objects may be referred to herein as “ancestral objects”, that is, the chain of preceding source objects which are linked to a source object. A source data object may be a data object which has been derived from another data object. In some embodiments, a data object may be both a source data object and a derived data object, for example, when the data object has been derived from another data object, and has itself been the source of a derived object. A data object may have one or more corresponding source data objects. A source data object may have one or more corresponding derived data objects.
[0061]
[0064] In some embodiments, a source data object may be an input to a processing action, or may be a data object to which a processing action is applied. A source data object may have one or more derived objects associated with it, linked directly or indirectly, in a hierarchical model, for example, a tree structure.
[0062]
[0065] A source data object may be a primary source data object from which all other data objects are derived, where the primary source data object has not been derived or generated from another object. In some embodiments, the primary source data object may be extracted from a location or file. The primary source data object defines the starting point from which all other data objects may be derived. All ancestral objects which relate to a data object may link back to, or be made up of, a primary source data object. The primary source data object may also be referred to as a root data object.
[0063]
[0066] A source data object may be determined by identifying a data object to which a processing action is intended to be, or has been, applied, for example, where the data object is a target object or an input. In some embodiments, determining a source data object may include identifying a particular data object. For example, a source data object may be identified by its location, characteristics, or a unique identifier. In some embodiments, the at least one data object may be determined to be a source data object on the basis of acquisition. For example, determining a data object as a source data object may include extracting the data object from a location, extracting the data object from another data object, or receiving the data object, such as from another system or database. For example, an external system or database may transmit the data object to a document management system or to system configured to perform a processing action or a begin workflow.
[0064]
[0067] In some embodiments, a selection mechanism may be used to identify the data object which should be determined as a source data object. The selection mechanism may be manual or automatic. For example, the selection mechanism may involve selection of a data object by a user, such as by indicating through an interface or by directly uploading the source data object. That is, a manual selection mechanism may include a user uploading a data object, such as a file or document, for processing, or it may involve a user selecting a document or file through an interface belonging to a document management system.
[0065]
[0068] In some embodiments, the source data object may be determined automatically, such as during at least part of an automated workflow, or as a result of a particular action or event. In some embodiments, the automatic selection mechanism may determine a source object after a data object has been derived. For example, the source object may be identified on the basis of being the origin of a derived data object. In another example, on extracting a plurality of data objects contained within a zip file, each of the plurality of data objects may be determined to be source data objects to which a processing action may be applied. In another example, a source data object may be identified when it is used as an input to a processing action.
[0066]
[0069] Processing actions are operations which are applied to a data object. Processing actions may form all or part of a workflow. In some embodiments, processing actions may be manual and / or automated. For example, processing actions may be performed by a user, or may be the result of a user interaction. In some embodiments, processing actions may be triggered as a result of a user action. In some embodiments, workflows may comprise a hybrid of automated processing actions, triggered processing actions, and / or user performed processing actions. In some embodiments, manual and / or automated processing actions may form all or part of a Human in the Loop workflow. For example, a user may be required to perform all or some steps of a workflow. In some embodiments, processing actions may include user input and / or interactions which confirm derived objects before they are created. For example, a processing action may include confirmation from a user before generating a derived object. Performing a processing action on a data object may include any action or operation of modifying, manipulating, or interacting with a data object. A processing action may refer to a single, discrete interaction with a document, or it may refer to a more complex or multi-step process. For example, a processing action may include extracting text from a data object, or it may include saving a new version of a data object. In other embodiments, a processing action may include a plurality of actions that form a workflow, or may refer to a single step in a workflow. For example, a processing action may include extracting metadata from a document to determine that the document is an invoice, or it may include a plurality of steps in a workflow to extract information from the invoice document, process the invoice for payment and create a corresponding ledger entry. That is, a processing action may be a single action, or all or part of a workflow.
[0067]
[0070] The type of processing action will depend upon the nature of the data object and the intended operations to be applied. For example, if the data object is a dataset in a database, a processing action may involve querying the dataset to retrieve specific information, update certain records, or even delete entries. In another example, a processing action may include extracting data objects (extracting additional components from a data object), cleaning data objects (removing or correcting erroneous data), normalising data objects (adjusting values measured on different scales to a common scale), or transforming data objects (converting data from one format or structure into another).
[0068]
[0071] In a further example, processing actions may relate to images, and can include modifying an image (including cropping the image, adjusting its brightness or contrast, applying filters), or performing operations such as edge detection, object recognition or character recognition. In another example, a processing action may include multiple operations to perform an action such as extracting information from a file. For example, if extracting information from an image, text and other data are extracted by parsing, which includes reading the file, interpreting its structure, and extracting the embedded information. Once the information is extracted, further processing actions may be applied. For example, if the image contains text, it might be necessary to perform Optical Character Recognition (OCR) to convert images of text into machine-readable text.
[0069]
[0072] Examples of processing actions include, but are not limited to, extracting the information contained in the data object, reading information from the data object, adding new information to the data object, modifying existing information in the data object, removing information from the data object, rearranging the elements of the data object based on certain criteria, selecting a subset of the data object based on certain conditions, combining multiple data objects into a single data object, checking if the data object conforms to a certain format or set of rules, changing the format or structure of the data object, adjusting the values in the data object to a common scale, combining two or more data objects into one, dividing a data object into two or more smaller data objects, applying a function to each element of the data object, condensing the data object into a single value, creating an index for access to the data object, encrypting the data object, converting the encrypted data object back into its original form, reducing or compressing the size of the data object for storage or transmission, restoring the compressed data object to its original size, and / or serialising by converting the data object into a format that can be stored or transmitted and then reconstructed later.
[0070]
[0073] Further examples may include pivoting the data object to provide a different perspective on the data, combining two data objects based on a common attribute, organizing the data object into groups based on certain criteria, providing a summary of the data object or the components of the data object, changing the structure of the data object without altering the data itself, changing the data type of the data object or its components, tokenizing the data object by breaking down the data object into smaller units, reducing words in the data object to their root form or their base or dictionary form, converting the data object into a vector representation, mapping the data object to vectors of real numbers, converting categorical data in the data object into a binary vector representation, applying a hash function to the data object to map it to a fixed size, dividing the data object into mutually exclusive and collectively exhaustive groups, filling in missing values in the data object with substituted values, adjusting the range of the data object, adjusting the values in the data object to have a mean of 0 and a standard deviation of 1, converting continuous values in the data object into discrete counterparts, and / or removing duplicate records from the data object.
[0071]
[0074] In some embodiments, processing actions may include, but are not limited to, reading, writing, updating, deleting, sorting, filtering, aggregating, validating, transforming, normalising, merging, splitting, mapping, reducing, indexing, encrypting, decrypting, compressing, decompressing, serialising, deserialising, pivotingjoining, grouping, summarising, reshaping, casting, tokenising, stemming, lemmatizing, vectorizing, embedding, one-hot encoding, hashing, bucketing, binning, imputing, scaling, standardising, discretising, duplicating, and / or deduplicating.
[0072]
[0075] The methods and systems described herein include performing a processing action on the data object which is determined to be a source data object. In some embodiments, multiple processing actions may be performed simultaneously, in sequence or in parallel. A processing action may include all or part of a workflow which may be automated, manually controlled or event-based. In some embodiments, the application of a processing action on the source data object may or may not result in the generation of a derived data object from the source object.
[0073]
[0076] Derived objects are data objects which are generated from the source object in response to performing a processing action. Derived objects may also be referred to as “generated objects” or “artifacts”. In response to the processing action, one or more data objects is generated from a source data object. That is, derived objects are the resultant data objects which are output as a result of applying one or more processing actions to the source object. For example, where an extracting processing action is applied to a source object, the derived data object may be the data that is extracted. Derived objects may be generated by extracting and / or transforming all or part of the source data object from its original format and / or structure into a new data object Derived objects may also be the result of a query, such as a read query on a database. Derived objects may be generated from all or part of a data object, or data objects nested within a data object. In some cases, derived objects may be generated from a plurality of source data objects. For example, a processing action may involve joining two distinct data objects, to result in a single derived object. In another example, a processing action may require multiple data objects as inputs to compute an output in the form of a single derived object.
[0074]
[0077] In some embodiments, each derived object is generated from at least one source object. In further embodiments, multiple derived objects may be generated from a single source object. Derived objects may be individual data objects, include one or more data objects, or may be made up of multiple data objects. Derived objects may be generated directly or indirectly from a source object. In some embodiments, a derived data object may be derived from a plurality of source objects. In some embodiments, a derived data object might include a derived object that spans the information in other derived items. For example, with reference to Figure 1, each line item 110 may include information related to quantity. The quantity information of each line item may be used to derive a count of the total number of items purchased from the receipt data object 100. In such embodiments, the total number of items purchased may be a derived object having each line item as an associated source object. In some embodiments, the total number of items purchased may be a derived object having the quantity information of each line item as a source object. Any modification to the quantity information of any of the line items would affect the derived object which represents the total number of items.
[0075]
[0078] Figure 2A is schematic diagram showing a data object generated as a result of performing a processing action on the source data object. In Figure 2A, a source object 200 is used as an input into a processing action 202. As a result of applying the processing action to object 200, the processing action 202 then outputs a new data object which defines a derived object 204. The derived object 204 is a data object derived from the source object 200. As such, the derived object 204 is associated or linked to the source object 200 via association 206. In one example, the source data object 200 may be a word document which has the processing action 202 applied to convert the word document to a PDF document. The resulting PDF document (the derived object 204) is a new data object generated from the word document (the source data object 200).
[0076]
[0079] In some embodiments, the processing action results in the creation of more than one new data objects. Figure 2B is a schematic diagram showing multiple data objects generated as a result of performing a processing action on a source data object. In Figure 2B, a source object 208 is used as an input into a processing action 210. The processing action 210 then outputs two new data objects which are defined as derived objects 212 and 216. Derived objects 212 and 216 are both derived from the source object 208, and as such are linked back to or associated with the source object 208. Derived object 212 is associated with source object 208 via association 214. Derived object 216 is associated with source object 208 via association 218. In one example, a PDF document which is a bank statement may be the source object 208. The processing action 210 may be applied to extract information from the bank statement. The information extraction may result in the generation of a derived object 212 in the form of a text data object which represents the text in the bank statement, and a derived object 216 in the form of a metadata data object which represents the metadata of the bank statement. In this example, the resulting text object and the metadata object are derived data objects associated with the bank statement.
[0077]
[0080] In some embodiments, as derived objects are generated from source objects, a data structure may be generated. As derived objects are generated from source objects, a hierarchical data structure, or hierarchy, of derived objects which stem from a primary source object may be created. The hierarchy of derived objects may be represented in a tree-like structure. For example, the tree structure may have branches representing derived objects belonging to a specific type of processing, a specific type of data object, or a specific line of processing. Each object created as part of an automated workflow may be associated with its source object, resulting in a hierarchy that includes multiple layers of related data objects. The hierarchy provides a structured framework for managing the data objects to trace them back to their source. The hierarchy includes a primary source data object at the top, derived data objects at the bottom, and a mixture of data objects which are source data objects and / or derived data objects in one or more of the middle layers.
[0078]
[0081] In some embodiments, the data structure may be a graph data structure. In some embodiments, the graph data structure may include a plurality of nodes (or vertices) that represent objects, for example, source objects and derived objects. The plurality of nodes may be connected or interconnected with, or to, other nodes by edges. Each edge defines a relationship between two nodes. For example, an edge may represent a relationship “is derived from” or “is the source of’. In some embodiments, the edges may be used to determine the impact that modification, alteration and / or deletion of a node has on associated and / or connected nodes. The graph data structure may be a directed graph or an undirected graph. The graph data structure may be bound by a root ancestor node, the root ancestor node representing the root ancestor object which is the ancestral source from which all objects are directly or indirectly derived. As derived objects are generated from source objects, new nodes representing the derived objects are created and edges representing the associations between the derived objects and source objects are generated. In some embodiments, nodes and / or edges may be written to the graph data structure as a result of deriving new objects. In some embodiments, new edges may be written to the graph data structure as a result of existing nodes which already form part of the graph data structure and / or as a means by which to include additional links to source objects after an object has been initially derived. For example, a new edge may be added between a derived object node and a source object node after the derived object node has been derived from a different source object node.
[0079]
[0082] Figure 3 is a schematic illustration of a hierarchy 300 of derived objects which stem from a primary source object 302. The primary source object 302 is shown at the top of the hierarchy. In this illustration, the primary source object 302 represents an invoice document. The primary source object 302 is itself a data object that has been identified as a source object. A plurality of derived objects including a metadata object 304a, a text object 304b, a supplier mapping result 304c and invoice document data 304d have been generated from the primary source object 302. Derived objects 304a and 304b have been generated directly from the primary source object 302.
[0080]
[0083] As derived objects are generated data objects, a derived object may be determined to be a source object. For example, a derived object, after being generated from a primary source object, may be determined to be a new source object and have a processing action applied such that new derived objects are generated. In some embodiments, derived objects may continue to be generated from other derived objects so as to create a layered hierarchy of derived objects from the primary source object 302. Each derived object which is generated to form the hierarchy is related to a source object in some manner. Derived objects may be hierarchically related, such as in a parent-child relationship, and / or laterally related, such as in a sibling relationship.
[0081]
[0084] Derived metadata object 304a in Figure 3 is determined to be a source object, and as a result of an applied processing action has generated two new data objects 306 and 308 in the form of metadata items which are derived from metadata object 304a. Derived object 304b has also been determined as a source object, and as a result of an applied processing action, has generated two new derived objects 310 and 312 which are derived from text object 304b. Derived object 310 is the parent of a further derived object 314. As can be seen, metadata items 306 and 308 are related to derived metadata object 304a which is related to the primary source object 302. The metadata object 304a may be understood as being directly related to the primary source document 302, and metadata items 306 and 308, may be said to relate indirectly to the primary source object 302. That is, metadata items 306 and 308, which are lower in the hierarchy, are related to the primary source object 302 via their relation to derived metadata object 304a. That is, their corresponding source object is a derived object of another source object.
[0082]
[0085] Derived objects 304c and 304d have both been generated indirectly from the primary source document, but are related directly to the source document. Derived object 304c has been generated as a result of a plurality of processing actions which have been applied to the primary source object and / or its derived objects. For example, derived object 304c may be a data object representing a supplier mapping result 304c generated from the invoice document. The supplier mapping result 304c may have been generated by applying a processing action to the invoice document, to generate extracted text object 304b, applying a processing action to the extracted text object 304b to generate invoice document summary data 310, and then applying a processing action to the invoice document summary data 310 to derive an identified supplier 314. The supplier mapping result 304c may then be derived from the identified supplier 314, for example, by processing the identified supplier object 314 through a supplier mapping system. Even though there were a plurality of processing actions required to generate the identified supplier object 314 which was used to derive the supplier mapping result 304c, the supplier mapping result 304c may be determined to most appropriately relate directly to the primary source object 302, rather than the identified supplier object 314. Accordingly, the relation between the supplier mapping result 304c and primary source object 302 is determined to be a direct relation and is represented as such in the hierarchy 300 by direct connection 316.
[0083]
[0086] In some embodiments, relations between source data objects and derived data objects may be direct or indirect depending on the type or characteristics of the data object. For example, a data object which is determined to represent a significant aspect of the source object may be directly linked to the source object. In other examples, data objects may be hierarchically sorted based on their characteristics or type. For example, where derived objects are generated from a source object which is itself a derived object, a determination may be performed to identify whether the derived objects are most appropriately related to a primary source object, or whether they are most appropriately related to the corresponding source object. In some embodiments, a manual or automatic selection mechanism may be used to indicate whether the derived object should be directly related to its immediate source object, or directly related to an ancestral object of the source object, including a primary source object.
[0084]
[0087] Derived objects may also be laterally related, such as for version control. Figure 3 shows a lateral relationship between the Supplier mapping result 304c and a confirmed mapping result 318 which is a new version of the supplier mapping result. In this case, the laterally derived object 318 has been generated from the source object, supplier mapping result 304c, however, the lateral relation may indicate that the derived object has particular characteristics, similarities or structure to the source object, supplier mapping result 304c. For example, in this case, the confirmed mapping result 318 has been generated by a particular type processing action applied, for example, a confirmation processing action which has created a new version of the supplier mapping result 304c. Laterally derived objects may be generated based on the type of processing action or based on a predefined amount of transformation or modification applied to a data object.
[0085]
[0088] For example, modifying an object may create a new version of the derived object. In some embodiments, the original derived object remains associated with its original source object, and any derived objects of the original object remain associated with the original object. In some embodiments, where a new version is created, changes may be cascaded through the derived objects, and / or new associations may be written between the new version derived object and the derived artifacts of the original derived objects. In some embodiments, new versions of the derived artifacts of the original derived objects may be created based on the new version object and linked to the new version object, effectively creating a new ancestral lineage from the new version.
[0086]
[0089] In some embodiments, modifying an object may result in a new derived object being created which represents a new version of the object. Figures 4 A to 4C are schematic diagrams of connected objects in which the source object is modified, according to some embodiments. Figure 4A is a schematic diagram of a modified object 404 created from a source object 401, according to some embodiments. In Figure 4A, a source object 401 has two derived objects 402 and 403. When source object 401 is modified, a new version of source object 401 is created which defines a modified object 404. The modified object 404 is laterally related to source object 401. In some embodiments, modified object 404 may be considered a derived object of the source object 401. The prior derived objects 402 and 403 remain associated with the source object 401. Figure 4B is a schematic diagram of the modified object 404 being associated with a previously derived object 403, according to some embodiments. In Figure 4B, after creation of the modified object 404 from the source object 401, it is deemed that the prior derived object 403 applies to the new version of the source object. As such, a new association 405 between the derived object 403 and the modified object 404 may be written, and the previous association between the derived object 403 and the original source object 401 may be removed. For example, a processing action may determine that the derived object 403 should have modified object 404 as its source object, rather than source object 401. In some embodiments, this may be when the derived object 403 relates to an unchanged feature between the source object 401 and the modified object 404. In some embodiments, a user may determine that the derived object 403 should be associated with the modified object 404, and the association may be manually changed.
[0090] In some embodiments, responsive to modifying the at least one source object, at least one modified object is created. For each derived object of the at least one source object, new association information is written, for example, to the second data store. The new association information being an association between the derived object and the at least one modified object. In some embodiments, the previous association information between the derived object and the at least one source data object is removed. The previous association information refers to the existing or established association information that has previously been written between the derived object and the source object. Removing the previous association information between the derived object and the at least one source data object may comprise at least one of deleting, invalidating, archiving or truncating the previous association information.
[0087]
[0091] Figure 4C is a schematic diagram of the modified object 404 being associated with newly derived objects 406 and 407, according to some embodiments. In Figure 4C, after creation of the modified object 404 from the source object, new derived objects 406 and 407 are derived from modified object 404. New derived objects 406 and 407 may be new versions of the original derived objects 402 and 403. In some embodiments, 406 and 407 may include some relation to the original derived objects 402 and 403, such that the original and / or previous versions of the derived objects 406 and 407 could be queried.
[0088]
[0092] In some embodiments, responsive to modifying the at least one source object, at least one modified object is created. For each derived object of the at least one source object, a new derived object is created from the at least one modified object. New association information is written, for example, to the second data store, to associate the new derived object with the at least one modified object.
[0089]
[0093] In some embodiments, laterally derived objects may have a hierarchical value which is greater than the source object for some circumstances. For example, where documents are to be shown in a user interface, a laterally derived object may be configured to be shown in preference to its source object, for example, where the laterally derived object represents a more recent version of a primary source object.
[0090]
[0094] Figure 4D is a process flow diagram of a method 400 for associating one or more derived data objects with at least one source data object, according to some embodiments. The method 400 may be used to create a hierarchy of related data objects which stem directly or indirectly from a primary source object. The method 400 may be performed by system 900, as described below. For example, processor 911 may be configured to execute instructions (such as program code 924) stored in memory 912 to cause the system 900 to perform the method 400.
[0091]
[0095] At 410, at least one source object is determined. This may include identifying a source object, for example from a database or a user selected designation. In some embodiments, determining the at least one source data object may include receiving the source object from a system, server or database. The source object may be transmitted from an external location. Associating one or more derived data objects with a source object includes, at 420, applying at least one processing action to the source data object. At 430, responsive to applying the processing action, the one or more derived objects are generated from the source data object.
[0092]
[0096] For each derived object, the method 400 includes storing the derived object in a first data store (at 440), determining association information for the derived object and the at least one source data object from which the derived object is generated (at 450), and writing the association information to a second data store, such that the origin of the one or more derived objects may be determined (at 460).
[0093]
[0097] In some embodiments, derived objects which are generated as a result of applying a processing action to the source object at 440 are captured and stored upon generation. Capturing the derived objects may include transmitting the derived objects or feeding them back into an automated workflow. The derived objects may be stored in one or more locations. In some embodiments, the derived objects may be distributed amongst a plurality of locations, or may be stored in a single location. The derived objects may be stored in a first data store, such that they can be readily accessed. If a derived object is determined to be a source object to which a processing action is to be applied, the derived object may be accessed from the first data store, and used as an input for a subsequent processing action. In some embodiments, a processing action may include retrieving or reading a derived object from the first data store. In some embodiments, the objects may be stored in an object store, the object store having an index and / or relation storage system for structured retrieval and / or efficient searching. In some embodiments, the data store may be a store that supports multiple data storage types. For example, the data store may be a Postgres data store capable of relational and object storage functions within the product.
[0098] The first data store may include any mechanism or repository for storing, managing and / or retrieving data. The first data store may be any type of storage that can hold structured or unstructured data. For example, the first data store may be network-connected storage, distributed cloud storage, physical storage (such as a hard drive) or virtual storage. In some embodiments, the first data store may be a database. The database may be a relational database or a graph database. In some embodiments, the database may include a NoSQL database, an in-memory database, a time-series database, an object-oriented database, a distributed database or a NewSQL database. In some embodiments, the first data store may include, be part of or be connected to, a server. In some embodiments, the first data store may be made up of a plurality of databases.
[0094]
[0099] There are a number of advantages in storing derived objects upon generation. By capturing each of the derived objects as they are generated, derived objects remain available for use by additional processing actions, by other clients such as UI components like a Document Viewer, or other systems. For example, derived objects generated during an automated workflow may be readily accessed and used as input in subsequent automated steps in the workflow process. Additionally, by storing derived objects in a specified location after generation, this mitigates the complexity where derived objects are spread among a variety of systems with wildly different behaviour and accessibility, dependent upon where they are stored. Additional systems are able to access the derived objects for further processing without having to regenerate the derived objects themselves, thereby reducing the amount of processing and computational resources required to execute automated workflows across multiple systems.
[0095]
[0100] Furthermore, capturing the derived objects reduces the likelihood of derived objects, or artifacts, which may be useful to other workflows, or systems from being prematurely disposed or becoming completely inaccessible, particularly to multiple systems which may require the derived objects as inputs in a cross-system workflow. By storing the derived objects in a first data store upon generation, they are able to be accessed to avoid repeat or redundant processing of an original data object, thus reducing the computational resources required to process a data object and generate new derived objects. Additionally, their accessibility is able to be utilised to generate association information between the derived object and its corresponding source object, improving the visibility and enabling efficient management of derived data objects.
[0101] At 450 of Figure 4D, association information between the one or more derived objects and the source data object is determined and / or generated. Generating association information between the derived data object and the source data object may occur upon generation of the derived object and / or after a derived object is stored in the first data store. Association information may be created by extracting data from the source object and / or the derived object, for example, metadata which may indicate the provenance of the derived object.
[0096]
[0102] Association information may include information configured to link or associate a derived object to a source object. In some embodiments, association information may be made up of a plurality of associations, or a single association. For example, association information may include links between a derived object and multiple source objects, or a single source object. In some embodiments, association information may include a relationship between the derived object and the source object, such as a parent-child relationship or a sibling / version relationship. Association information may include one or more association objects. Association information may include a unique identifier from the derived object and a unique identifier from the source object. In some embodiments, association information may include at least a primary key and / or a foreign key. The primary key may include a unique identifier which identifies a source object or a derived object. The foreign key may include a unique identifier which identifies the source object of a derived object.
[0097]
[0103] In some embodiments, association information may include a source key, which is a unique identifier that is assigned to the source object from which the derived object was generated. The source key may be a foreign key. The association information may include an artifact key, which is a unique identifier that is assigned to the derived object. The association information may further include additional characteristic information related to the derived object such as characteristics, data types, values or metadata. In some embodiments, a URI may be used as the unique identifier. In some embodiments, other formats of unique identifiers may be used for the association information, including unique object identifiers, datastore native foreign key formats, GUID / UUID, and / or relative path / reference information. In some embodiments, the association information may define a relationship between two or more objects. The association information may be stored using a relational database. In some embodiments, the association information may be stored using a graph database, for example, where a system had a massive number of relations and queries needed to be performed based on details of related objects.
[0098]
[0104] When association information is created, the source object to which the derived object will be linked may be queried to ascertain whether there exists a source key representing the source object. If there is an existing source key, then the source key may be extracted from the source object, and can be used to create the association information. In such embodiments, the association information includes the existing source key and a new artifact key, related to the derived object, to link the derived object to the source object. If a source key does not exist, then the association information may be created with two new association keys: a new source key representing the source object, and a new artifact key for the derived object. Together, the two association keys link the derived object to the source object.
[0099]
[0105] In some embodiments, source keys may be a pointer to a source object. However, in some embodiments, association information may include only a source key, for example, a primary key. In some embodiments, the association information may represent a primary source object (also referred to herein as a root source object, or root ancestor) which are not themselves derived from any data object (and therefore do not point to any other objects), but which have derived objects associated with or linked to them. For primary source objects, the association information may include a primary key but no foreign key. In some embodiments, primary source objects, or root ancestors, may be relationally linked with other primary source objects, for example, to relate data structures at a single point.
[0100]
[0106] In some cases, association information may be updated or modified. For example, association information may include a primary source key, which is a unique identifier that is assigned to the primary source object from which the derived object was directly or indirectly generated. The association information may obtain the primary source key by tracing back the ancestral data objects of the preceding source objects. In some embodiments, the primary source key may be recorded in the association information for each preceding relation between a derived object and a source object. The association information may be updated to use the primary source key over the source key to associate a derived object directly with a primary source object, even when the derived object has been indirectly generated by the primary source object.
[0107] The source key may be used to link the derived object to the source object in a number of different ways. For example, the association information may include the use of the source key as a manual reference, in which the source key of one data object is saved as a reference in another data object. The association information may include referencing from one data object to another by using the source key and additional object information such as name or location. Such referencing techniques could allow easier referencing of data objects which may be stored in multiple collections or databases, or which are required to be accessed by multiple systems or workflows.
[0101]
[0108] Association information may include an embedded source key within a data object. In some embodiments, an embedded source key may be included in the metadata of a derived object. In some embodiments, association information between the derived object and the source object may include the structure of a data object. For example, related data objects may be stored within a single data object and nested to multiple levels of hierarchy. In some embodiments, a source object in the form of an invoice document might contain multiple derived objects in the form of an array of line item documents, and the association may be the data structure of the invoice document, which is used to indicate the relationship of the line item documents as belonging to or being derived from the invoice document (in this case, a parent-child relationship). In some embodiments, the association may be created by analysing the structure of the source object to identify nested objects. In some embodiments, an association may use the source key to reference multiple data objects, for example, when the derived object could be associated with multiple source objects.
[0102]
[0109] Figure 5A provides an illustrative schematic representation of association information 500 for a derived object, according to some embodiments. In the illustrated embodiments, the association information includes information relating to the derived object which points to a source object. The association information 500 includes an artifact key 502 which identifies the derived object, and a source key 504 which identifies the source object. The source key 504 references another source key which is external to the association information 500, for example, located in another association object, or another data object such as a table. The source key 504 and the artifact key 502 are therefore linked within the association information, effectively providing a pointer 505 to the source object from which the derived object was generated. The association information may contain additional characteristic data 506, relating to the derived object. Characteristic data may include identifying data relating to the derived object and / or the source data object. In some embodiments, characteristic data in the association information may be used in processing actions, for retrieving associations and / or for determining how data objects should be viewed, modified or managed.
[0103]
[0110] Figure 5B provides an illustrative schematic representation of association information 510 for a derived object, according to some embodiments. In the illustrated embodiments, the association information 510 includes association information 512 relating to the derived object which points to a source object and association information 514 relating to the source object. The association information 512 includes an artifact key 516 which identifies the derived object to which is related, and a source key 518 which identifies the source object. The source key 518 references a primary key 520 in association information 514. Association information 514 includes a primary key 520 which corresponds to source key 518. The source key 518 associated with the artifact key 516 therefore points towards the primary key 520, creating the association between the derived object and the source object. Association information 512 and 514 each contain additional characteristic data 522 and 524 respectively, relating to the objects.
[0104]
[0111] Figure 5C provides an illustrative schematic representation of association information 530 for two derived objects which link them to a single source object, according to some embodiments. In this case, association information 530 includes association information 532 related to a first derived object, association information 534 related to a second derived object, and association information 536 related to a source object. The association information 532 for the first derived object includes an artifact key 538 which identifies the derived object to which is related, and a source key 540 which identifies the source object. The source key 540 references a primary key 550 in association information 536. The association information 534 for the second derived object includes an artifact key 544 (which is different from artifact key 538), and source key 540.
[0105]
[0112] Association information 536 relates to a primary source object, which is not derived from any other object, but which is only referenced, or pointed to, by other association information. Association information 536 includes a primary key 550 which corresponds to source key 540. The source key 540 is associated with the artifact keys 538 and 544 for each of the derived objects, and therefore points towards the primary key 550, creating the association between each of the derived objects and the source object.
[0113] Figure 5D provides an illustrative schematic diagram of association information representing a hierarchy of associated data objects, according to some embodiments. The hierarchical association information 560 effectively creates a chain of related associations represented by association information 562, 564 and 568. Association information 562 includes an artifact key 572 and a source key 574. Source key 574 points to artifact key 576 of association information 564. Artifact key 576 acts as a primary key. Association information 564 also has a source key 578, which points to primary key 580 of association information 568. As such, the association information includes a plurality of links, that associate the derived objects with their corresponding source object, to create a hierarchy of data object associations.
[0106]
[0114] Association information between a derived object and a source object may be stored in a second data store. Similar to the first data store, the second data store may include any mechanism or repository for storing, managing and / or retrieving data. The second data store may be any type of storage that can hold structured or unstructured data. For example, the second data store may be network-connected storage, distributed cloud storage, physical storage (such as a hard drive) or virtual storage. In some embodiments, the second data store may be a database. The database may be a relational database, hierarchical database or a graph database. In some embodiments, the database may Include a NoSQL database, an inmemory database, a time-series database, an object-oriented database, a distributed database or a NewSQL database. In some embodiments, the second data store may include, be part of or be connected to, a server. In some embodiments, the second data store may be made up of a plurality of databases. The second data store may be separate to the first data store, or it may be connected to the first data store, for example it may be in communication with the first data store. In some embodiments, the second data store may form part of, or may be contained within, the first data store. In some embodiments, the first data store may form part of, or may be contained within, the second data store. In some embodiments, the second data store may be the same as the first data store.
[0107]
[0115] In some embodiments, association information may be written to the second data store upon creation of the association, or upon completion of one or more processing actions. A plurality of association information entries may be stored temporarily before being written to the second data store. For example, association information may be written to the second data store in batches, in sequence, or in parallel.
[0116] In some embodiments, association information may include all or part of a relational database. Association information may include one or more tables. For example, association information may include a first table and a second table, where the source objects (or references to the source objects) are stored in the first table which has a primary source key, and one or more derived objects (or references to one or more derived objects) are stored in the second table which has an artifact key, and which also stores the source key for each derived object that references the primary source key in the first table. This creates a link between each entry in the second table with one or more entries in the first table that allows the derived objects in the second table to be associated with their corresponding source objects.
[0108]
[0117] In some embodiments, association information may include metadata columns, in which one column includes the source key referencing the source object, and another includes the artifact key referencing the derived object identifier. This can allow data objects to be sorted relationally, for example, grouping by source (parent) and then by child (derived). In some embodiments, association information may include defining lookup columns and / or SharePoint lists.
[0109]
[0118] In some embodiments, association information between a derived object and a source object may include all or part of a hierarchical database. In some embodiments, the association information may include data organised in a tree like structure with a single primary source or root data object at the top and multiple levels of related derived data objects beneath it. In some embodiments, each source data object can have multiple derived data objects, but each derived data object may only have one source data object. In some embodiments, the association information may include a single hierarchical relationship between the derived object and the source object, or it may include multiple levels of relationships which form the hierarchical database.
[0110]
[0119] In some embodiments, association information may include utilising an adjacency list. Each association for a derived object includes a source key, and a recursive query through the records can be used to build a hierarchical overview of the associations. Association information may further include storing the source key of each of the derived object’s ancestors as a string, allowing for efficient querying of a tree structure. Associations may also utilise nested sets and / or NoSQL databases.
[0120] In some embodiments, association information may include an inheritance indicator, in which the derived data object inherits one or more values from the source object. For example, a derived object generated from a source object may include one or more metadata values which are the same as the metadata of the source object. Association information may be defined by using the overlapping metadata. For example, association information may use the inheritance indicator to define the relationship between the derived object and the source object as a parent-child relationship, or as a sibling relationship. In some embodiments, association information may include an origin indicator of a derived object, which identifies that the derived object was created from the source object. The origin indicator may be stored within the derived object, and / or may include a unique identifier of the source object. The inheritance indicator and / or the origin indicator may form part of the characteristic data of the association information.
[0111]
[0121] Figure 6 is a process flow diagram of a method 600 for associating one or more derived data objects with at least one source data object, according to some embodiments. The method 600 may be performed in the context of an automated workflow. The method 600 may be performed by system 900, as described below. For example, processor 911 may be configured to execute instructions (such as program code 924) stored in memory 912 to cause the system 900 to perform the method 600.
[0112]
[0122] At 610, a source object is determined, and a workflow is then triggered to begin at 620. The type of workflow triggered may be determined in response to identifying the type of source object, or it may be determined in response to an operation applied to a source object. For example, where the source object is determined by uploading an archive file, the workflow may be triggered upon receipt of the archive file, or on extraction of the contents of the archive file.
[0113]
[0123] At 630, at least one processing action is applied to the source object after the workflow has started. As a result, at 640 one or more derived objects are generated from the source object. For example, the processing action may include an extraction processing action which results in the generation of a metadata object and a text object from a document. Then, for each derived object which has been generated, a derived object is selected at 650. The derived object selected at 650 may be the first derived object which has been generated, or the largest in size of the derived objects generated at 640. The selected derived object is then stored in a first data store at 660. In the illustrated example, storing the selected derived object in the first data store occurs after selecting the derived object 650. However, it will be appreciated that 660 may be performed after 640 of the method 600, where after generation, the generated derived objects are stored in a first data store, before selecting a derived object at 650.
[0114]
[0124] After storing the selected derived object, association information between the derived object and the source data object is determined at 670. Determination of the association information between the derived object and the source data object may involve, for example, extracting or creating a unique identifier for the derived object and the source object, and / or extracting information from the source object. The association information is then written in a second data store at 675. Writing the association information effectively provides a link between the selected derived object and the source object from which it was generated.
[0115]
[0125] At 680, the method determines whether there are more derived objects which exist for which association information has not yet been written. This may be determined by stepping through each derived object generated at 640 to ensure each derived object is captured and stored in the first data store. In some embodiments, the derived objects may be stored in a temporary data store after being generated at 640, until they are moved to the first data store. In some embodiments, the determination of whether there are more derived objects may include determining if further derived objects exist in the temporary data store. If more derived objects are determined to exist at 680, then the method 600 returns to 650 and selects the next derived object. 660 to 675 are repeated for each derived object generated at 640. If there are no more derived objects to be stored and associated, then the method 600 proceeds to 685 at which it is determined whether there are further processing actions to be applied in the workflow. If further processing actions are to be applied as part of the workflow, then a new source object is determined at 690.
[0116]
[0126] Determining a new source object may include determining one of the derived objects in the first data store as the source object. Alternatively, it may include retrieving or receiving a source object from an external location such as a server of database, or receiving a manual or automated selection which identifies the source object for the next processing action. Determining a new source object may include determining which data objects are required as inputs for the next processing action. Once the new source object is determining, the method 600 reverts back to 630, at which at least one processing action is applied to the source object. The method 600 then proceeds through to 640 to generate one or more derived objects from the new source data object. This effectively creates a second level in the hierarchy of data objects. The association loop which spans from 650 to 680 is repeated for each of the new derived objects. The method 600 repeats, generating derived objects for each new source object until each derived object has been stored and associated with its source object, and there are no further processing actions to be applied in the workflow.
[0117]
[0127] When it is determined that no further processing actions are to be applied in the workflow at 685, then the workflow is ended at 695. The result of the method is that each derived object generated as part of the workflow is associated with a corresponding source object, creating a hierarchy of data objects which can be managed and accessed to determine the origin of each individual data object.
[0118]
[0128] Figure 7 is a process flow diagram of a method 700 for associating one or more derived data objects with at least one source data object, according to some embodiments. The method 700 may be performed in the context of an automated workflow. The method 700 may be performed by system 900, as described below. For example, processor 911 may be configured to execute instructions (such as program code 924) stored in memory 912 to cause the system 900 to perform the method 700.
[0119]
[0129] At 710, a source object is determined, and a workflow is then triggered to begin at 720. Similar to method 600, the type of workflow triggered may be determined in response to identifying the type of source object, or it may be determined in response to an operation applied to a source object. For example, where the source object is determined by uploading an archive file, the workflow may be triggered upon receipt of the archive file, or on extraction of the contents of the archive file.
[0120]
[0130] At 730, at least one processing action is applied to the source object after the workflow has started. As a result, at 740 one or more derived objects are generated from the source object. Then, for each derived object which has been generated, a derived object is selected at 750. At 755, it is determined whether the derived object should be associated directly to the source object, or whether it should be associated with some other data object. The other data object may be, for example, a primary source data object or an ancestral object related to the source object. If, at 755, it is determined that the derived object should not be directly associated with the source object, then at 756 the ancestral objects of the source object are determined. The ancestral objects may be determined by accessing association information related to the source object, for example, to determine whether the source object is a derived object of another data object. The ancestral objects may be determined by tracing back the lineage of the source object to determine each of the preceding source objects in the hierarchy within which the source object exists. The ancestral objects may include at least a primary source object. At 757, a source object is selected from the one or more ancestral objects. The new selected source object is then queried at 755 to determine whether the derived object is to be associated directly with the selected new source object. If it is, then the method 700 proceeds to the association loop for that derived object which includes storing the derived object in a first data store (760), determining association information between the derived object and the selected source data object (765), and writing the association information to a second data store (770).
[0121]
[0131] At 775, the method 700 determines whether there are more derived objects which exist for which association information has not yet been written. If more derived objects are determined to exist at 775, then the method 700 returns to 750 and selects the next derived object. 755 to 770 are repeated for each derived object generated at 740. If there are no more derived objects to be stored and associated, then the method 700 proceeds to 780 at which it is determined whether there are further processing actions to be applied in the workflow. If further processing actions are to be applied as part of the workflow, then a new source object is determined at 785, and the method proceeds back to 730, at which at least one processing action is applied to the newly determined source object. When it is determined that no further processing actions are to be applied in the workflow at 780, then the workflow is ended at 790. The result of the method is that each derived object generated as part of the workflow is associated with a corresponding source object, creating a hierarchy of data objects which can be managed and accessed to determine the origin of each individual data object.
[0122]
[0132] Figure 8 is a process flow diagram of a method 800 for associating one or more derived data objects with at least one source data object, according to some embodiments. The method 800 may be used to create a hierarchy of related data objects which stem directly or indirectly from a primary source object and then update or modify the derived objects based on modifications made to a source object. The method 800 may be performed by system 900, as described below. For example, processor 911 may be configured to execute instructions (such as program code 924) stored in memory 912 to cause the system 900 to perform the method 800.
[0133] At 810, at least one source object is determined. This may include identifying a source object, for example from a database or a user selected designation. In some embodiments, determining the at least one source data object may include receiving the source object from a system, server or database. The source object may be transmitted from an external location. Associating one or more derived data objects with a source object includes, at 820, applying at least one processing action to the source data object. At 830, responsive to applying the processing action, the one or more derived objects are generated from the source data object.
[0123]
[0134] For each derived object, the derived object is stored in a first data store at 840, association information for the derived object and the at least one source data object from which the derived object is generated is determined at 850, and the association information is written to a second data store at 860, such that the origin of the one or more derived objects may be determined. At 870, a user interface is provided to access and manage the source object and the generated derived objects. The user interface may be configured to access and manage a plurality of source data objects and the derived objects associated with those source objects. In some embodiments, the user interface may be configured to trace through the association information from any one of the one or more derived object back to the source object. In some embodiments, the user interface may be configured to display a hierarchy of the derived objects that stem from the at least one source object, and / or that stem from a primary source object. In some embodiments, the user interface may be configured to display the hierarchy of derived objects in a tree structure.
[0124]
[0135] The user interface may be further configured to enable modification of source objects and / or derived objects. At 880, a modification to the source object may be received through the user interface. In some embodiments, a modification to one or more derived objects may also be received through the user interface. At 890, the derived data objects associated with the source object are then updated based on the modification to the source object. For example, a modification to the source data object may result in a cascade of modifications being applied to the associated derived objects. In some embodiments, a modification to a data object may result in a cascade of modifications being applied to any derived objects that flow down the hierarchy, but not to objects that trace up the hierarchy. In some embodiments, a modification may result in updates being made to the association information. For example, association information may be updated to point to a new version of the source object. In some embodiments, updates may create events which can include the ancestry references. For example, events and / or processing actions may trigger based on direct matches or common ancestors as appropriate. Essentially, the workflow, processing actions and / or programs being implemented to modify the objects listen for objects of interest that may require update and / or modification, which can be based on ancestry with or without additional filtering logic.
[0125]
[0136] In some embodiments, there may be a system for associating one or more derived data objects with at least one source data object, comprising: a processing action module configured to apply at least one processing action to the at least one source data object, an object generation module configured to generate one or more derived objects from the at least one source data object in response to applying the at least one processing action, an association module configured to, for each derived object, store the derived object in a first data store, determine association information for the derived object and the at least one source data object from which the derived object is generated, and write the association information in a second data store to associate the derived object with the at least one source data object, such that the origin of the derived object can be determined.
[0126]
[0137] In some embodiments, the system may further include a selection module configured to select one or more derived objects to provide to the association module. In some embodiments, the system may further include a workflow module, configured to determine the at least one source object and / or trigger an automated workflow. In some embodiments, the system may be in communication with one or more user computing devices. In some embodiments, the system may include an interface configured to provide access to and manage the at least one source data object and the one or more derived objects associated with the source data object.
[0127]
[0138] Figure 9 shows an arrangement of system components, including hardware and software of systems that may be used to perform the presently disclosed methods. Figure 9 is one embodiment of a number of potential embodiments that would be suitable for performing the present methods, including methods 400, 600, 700 and 800.
[0128]
[0139] Figure 9 is a block diagram showing an example system 900 that may be used for associating data objects, according to some embodiments. System 900 comprises a user computing device 910 which may be controlled by a user wishing to manage or associate data objects. In the illustrated embodiments, system 900 further comprises a server system 920. User computing device 910 may be in communication with server system 920 via a network 925. However, in some embodiments, user computing device 910 may be configured to perform the described methods independently, without access to a network 925 or server system 920.
[0129]
[0140] User computing device 910 may be a computing device such as a personal computer, laptop computer, desktop computer, tablet, or smart phone. User computing device 910 comprises a processor 911 configured to read and execute program code. Processor 911 may include one or more data processors for executing instructions, and may include one or more of a microprocessor, microcontroller-based platform, a suitable integrated circuit, and one or more application-specific integrated circuits (ASICs).
[0130]
[0141] User computing device 910 further comprises at least one memory 912. Memory 912 may include one or more memory storage locations which may include volatile and nonvolatile memory, and may be in the form of ROM, RAM, flash or other memory types.
[0131] Memory 912 may also comprise system memory, such as a BIOS.
[0132]
[0142] Memory 912 is arranged to be accessible to processor 911, and to store data 913 that can be read and written to by processor 911. Memory 912 may also contain program code 914 that is executable by processor 911, to cause processor 911 to perform various functions. For example, program code 914 may include a client application 915. Processor 911 executing client application 915 may be caused to perform the methods disclosed herein, including methods 400, 600, 700, 800, 1200 and 1300.
[0133]
[0143] In some embodiments, a client application run on the user computing device may include client application 915. According to some embodiments, client application 915 may be a web browser application (such as Chrome, Safari, Internet Explorer, Edge, Opera, or any other alternative web browser application) which may be configured to access web pages that provide functionality via an appropriate uniform resource locator (URL).
[0134]
[0144] Program code 914 may include additional applications that are not illustrated in Figure 9, such as an operating system application, which may be a mobile operating system if user computing device 910 is a mobile device, a desktop operating system if user computing device 910 is a desktop device, or an alternative operating system.
[0145] User computing device 910 may further comprise user input and output (I / O) peripherals 916. These may include one or more of a display screen, touch screen display, mouse, keyboard, speaker, microphone, and camera, for example. User I / O peripherals 916 may be used to receive data and instructions from a user, and to communicate information to a user.
[0135]
[0146] User computing device 910 may further comprise a communications module 927 and a network interface 926, to facilitate communication between user computing device 910 and other remote or external devices. Communications module 927 and / or network interface 926 may allow for wired or wireless communication between user computing device 910 and external devices, and may use Wi-Fi, USB, Bluetooth, or other communications protocols. According to some embodiments, communications module 927 may facilitate communication between user computing device 910 and server system 920 via a network 925, for example. In some embodiments, network interface 926 may facilitate the provision or display of data to user computing device 910, for example, from server system 920 via a network 925. In some embodiments, network interface 926 may form part of communications module 927.
[0136]
[0147] Network 925 may comprise one or more local area networks or wide area networks that facilitate communication between elements of system 900. For example, according to some embodiments, network 925 may be the internet. However, network 925 may comprise at least a portion of any one or more networks having one or more nodes that transmit, receive, forward, generate, buffer, store, route, switch, process, or a combination thereof, etc. one or more messages, packets, signals, some combination thereof, and the like. Network 925 may include, for example, one or more of: a wireless network, a wired network, an internet, an intranet, a public network, a packet-switched network, a circuit-switched network, an ad hoc network, an infrastructure network, a public-switched telephone network (PSTN), a cable network, a cellular network, a satellite network, a fibre-optic network, and the like, or some combination thereof.
[0137]
[0148] Server system 920 may comprise one or more computing devices and / or server devices (not shown), such as one or more servers, databases, and / or processing devices in communication over a network, with the computing devices hosting one or more application programs, libraries, APIs or other software elements. The components of server system 920 may provide server-side functionality to one or more client applications 915, such as data object management application. In the illustrated embodiments, data object management application is a client application 915. However, it will be appreciated that a data object management application may be any type of application for managing data objects, and may include but is not limited to, file management applications, software management applications, financial data and reconciliation management applications and the like. The server-side functionality may include operations such as user account management, login, and data object management functions such as reading, writing, editing, and deleting functions. According to some embodiments, server system 920 may comprise a cloud-based server system. While a single server system 920 is shown, server system 920 may comprise multiple systems of servers, databases, and / or processing devices. Server system 920 may host one or more components of a platform for data object association and management according to some described embodiments.
[0138]
[0149] Server system 920 may comprise at least one processor 921 and a memory 922. Processor 921 may include one or more data processors for executing instructions, and may include one or more of a microprocessor, microcontroller-based platform, a suitable integrated circuit, and one or more application-specific integrated circuits (ASIC's). Memory 922 may include one or more memory storage locations, and may be in the form of ROM, RAM, flash or other memory types.
[0139]
[0150] Memory 922 is arranged to be accessible to processor 921, and to contain data 923 that processor 921 is configured to read and write to. Data 923 may store data in the form of data objects. In the illustrated embodiments, data 923 may store data such as object data, and data relating to managing and / or association data object, such as association information used to associate source objects and derived objects.
[0140]
[0151] In the illustrated embodiments, data 923 comprises association information 930, derived object data 931 and source object data 932. While these are illustrated as residing in memory 922 of server system 920, in some embodiments some or all of this data may alternatively or additionally reside in memory 912 of user computing device 910, or in an alternative local or remote memory location. In some embodiments, the association information 930, derived object data 931 and source object data 932 is retrieved, extracted or received from a first data store 918 and / or a second data store 919 through network 925.
[0141]
[0152] Source object data 932 may store source objects and / or data related to source objects, such as unique identifiers, or pointers to location of the source object(s) in the first data store 918 and / or the second data store 919. Source object data may be received from user computing device 910 executing client application 915 in response to a user selecting, uploading, modifying or moving a data object which is a source object. For example, a user may upload a document, such as a PDF file, through the client application, which is then stored in the source object data 932 of server system 920. Source object data 932 may additionally or alternatively store source object data related to a source object which is in the process of being used in an automated workflow. Source object data may additionally be used to store one or more source objects which are being selected, viewed or modified through the user computing device 910.
[0142]
[0153] Derived object data 931 may store derived data objects and / or data related to derived objects, such as unique identifiers, or pointers to the location of the derived object(s) in the first data store 918 and / or the second data store 919. In some embodiments, derived object data may be received from user computing device 910 executing client application 915. For example, if a user provides an input to save a copy of the PDF file as a new version, the new version may be provided to derived object data 931. Derived object data 931 may additionally or alternatively store derived object data relating to derived objects that are in the process of being used in an automated workflow. For example, derived object data 931, may include the derived objects which are being generated by the methods disclosed herein, or may include derived objects which relate to a source object which is selected through the user computing device 910. In some embodiments, artifacts generated as byproducts of the automated workflow are stored in derived object data 931 upon generation, before being moved to the first data store 918. Derived object data 931 may be used to temporarily store derived objects generated from source objects.
[0143]
[0154] Association data 930 may store association information relating to an association between a derived object and a source object. Association data 930 may temporarily store association information upon determination and / or generation, before writing the association data to the first data store 918 and / or the second data store 919. Association data 930 may extract, receive or store association information from the first data store 918 and / or the second data store 919. Association data 930 may be accessed during the processing of an automated workflow by the system to extract or retrieve association information which is relevant to the source objects or derived objects which are being used within the workflow. In some embodiments, association data 930 may be received through a manual input, for example, where a user selects an input indicating a derived object should be associated with a source object. In some embodiments, association data may be received after an event. For example, a user may save a new version of a word document, and the association data is stored after the save event. The event may be a manual event and / or an automatic event. In some embodiments, the event may trigger the writing, reading, receiving, transmitting or overwriting of association information in association data 930.
[0144]
[0155] Memory 922 further comprises program code 924 that is executable by processor 921, to cause processor 921 to execute workflows. For example, program code 924 comprises a server application 934 executable by processor 921 to cause server system 920 to perform server-side functions. According to some embodiments, such as where client application 915 is a web browser, server application 934 may comprise a web server such as Apache, IIS, NGINX, GWS, or an alternative web server. In some embodiments, the server application 934 may comprise an application server configured specifically to interact with client application 915. Server system 920 may be provided with both web server and application server modules.
[0145]
[0156] Program code 924 may also comprise one or more code modules, such as one or more of a workflow module 935, a processing action module 936, an object generation module 937, an association module 938, and a selection module 939. The processing action module 936 and the object generation module 937 may form part of the workflow module 935.
[0146]
[0157] Executing workflow module 935 may cause processor 921 to perform an automated workflow. In some embodiments, the workflow module may be configured to trigger an automated workflow. For example, a workflow may be triggered on the basis of one or more events occurring, such as the receiving of a data object or the determination of at least one source object. In some embodiments, workflow module 935 may be configured to determine at least one source object to be used in the workflow. The workflow module 935 may be configured to retrieve data from source object data 932 and / or derived object data 931. The workflow module 935 may execute one or more workflows in sequence or in parallel. The workflow module 935 may execute processing actions, which form part of the workflow, on source objects. In some embodiments, this may be carried out through a processing action module 936 located within or outside of the workflow module 936. The workflow module may execute the generation of derived objects. In some embodiments, this may be carried out through an object generation module 937 located within or outside of the workflow module 935.
[0147]
[0158] Executing processing action module 936 may cause processor 921 to perform the application of at least one processing action on the at least one source object and / or derived objects generated from the source object. In some embodiments, the processing action module 936 is configured to perform processing actions which form part of an automated workflow. The processing actions applied to the source object may include any action or operation to modify, manipulate and / or interact with the source data object, in accordance with embodiments disclosed herein. Processing action module 936 may be configured to perform processing actions in sequence and / or in parallel, and may manually or automatically apply one or more processing actions to the source object. The processing action module 936 may be configured to retrieve source objects for processing from source object data 932 or from the workflow module 935. In some embodiments, the processing action module 936 may be configured to apply processing actions to a source object which has been retrieved by the workflow module 935.
[0148]
[0159] Executing object generation module 937 may cause processor 921 to perform the generation of one or more derived objects in response to the application of at least one processing action by the processing action module 936. The object generation module may be configured to generate data objects from the at least one source object by capturing and storing the data objects which result from the processed source object. For example, the object generation module 937 may be configured to capture extracted text, modified versions of documents, clustered data, and the like. The object generation module 937 may be configured to write and / or store derived objects in derived object data 931, temporarily or permanently. The object generation module 937 may be configured to capture data objects and / or artifacts which result from processing the source object. The object generation module 937 may be in communication with the workflow module 935 and / or the processing action module 936 so as to capture the derived data objects. In some embodiments, the object generation module 937 may be in communication with the association module 938 and / or the selection module 939.
[0149]
[0160] Executing selection module 939 may cause processor 921 to perform a selection process to select one or more derived objects from the derived objects generated by the object generation module 937. The selection module may be configured to retrieve data from association data 930, derived object data 931 and / or source object data 932. In some embodiments, the selection module 939 may be configured to select at least one source data object for processing and provide the at least one source data object to the workflow module 935. In some embodiments, the selection module 939 may be configured to select a derived object and provide the selection to association module 938. In some embodiments, the selection module may be configured to select a source object from one or more ancestral objects and provide the selection to the association module 938.
[0150]
[0161] Executing association module 938 may cause processor 921 to perform an association process to associate a derived object with a source object. In some embodiments, the association module is configured to, for each derived object which has been selected and provide by the selection module 939, store the derived object in a first data store, determine the association information between the derived object and the source object, and write the association information in a second data store. The association module may be configured to determine the association information between the derived object and the source object by writing and storing unique identifiers of the derived object and the source object. For example, the association information may contain a pointer from the derived object to the source object. In some embodiments, the association information includes an artifact key which identifies the derived object, and a source object which identifies the source object. The association information and / or the pieces of information which make up the association information (such as unique identifiers, keys, locations, characteristic data, structures and the like) may be written to or captured by association data 930. Association module 938 may be in communication with, and able to read and / or write to, association data 930. Association module may be in communication with one or more data stores through network 925. For example, it may be in communication with first data store 918, second data store 919, or data 913 of user computing device 910.
[0151]
[0162] Workflow module 935, processing action module 936, object generation module 937, association module 938 and selection module 939, may be software modules such as add-ons or plug-ins that operate in conjunction with the client application 915 to expand the functionality thereof. In alternative embodiments, modules 935, 936, 937, 938, and / or 939 may be native to the client application 915. In still further alternative embodiments, modules 935, 936, 937, 938, and / or 939 may be stand-alone applications (running on user computing device 910, server system 920, or an alternative server system (not shown)) which communicate with the client application 915, such as over network 925.
[0163] Modules 935, 936, 937, 938, and / or 939 have been described and illustrated as being part of / installed on the server system 920, and may be configured as an add-on or extension to server application 934, a separate, stand-alone server application that communicates with server application 934, or a native part of server application 934. Inputs, such as source objects and their related data, derived objects and their related data, association information, or events and / or processing actions may be provided and / or received at / by the user computing device 910, and then transferred to server system 920, such that the data object association methods described herein may be performed by the components of the server system 920.
[0152]
[0164] In some alternative embodiments (not shown), the functionality provided by one or more of modules 935, 936, 937, 938, and / or 939 could be provided by user computing device 910, based on locally or remotely stored source object data 932, derived object data 931 or association information 930. One or more of modules 935, 936, 937, 938, and / or 939 may reside as an add-on or extension to client application 915, a separate, stand-alone application that communicates with client application 915, or a native part of client application 915.
[0153]
[0165] In alternate embodiments (not shown), all functions, may be performed by the server system 920. Or, in some embodiments, an application programming interface (API) may be used to interface with the server system 920 for performing the presently disclosed methods of associating data objects.
[0154]
[0166] Server system 920 also comprises a communications module 927, to facilitate communication between server system 920 and other remote or external devices. Communications module 927 may allow for wired or wireless communication between server system 920 and external devices, and may use Wi-Fi, USB, Bluetooth, or other communications protocols. According to some embodiments, communications module 927 may facilitate communication between server system 920 and user computing device 910, for example. Server system 920 may include additional functional components to those illustrated and described, such as one or more firewalls (and / or other network security components), load balancers (for managing access to the server application 934), and / or other components.
[0155]
[0167] Figure 10A is a schematic illustration of applying methods described herein to generate a hierarchy of associated data objects, according to some embodiments. The generation of the associated data objects may be a result of performing method 400, 600, 700 and / or 800. In the illustrated embodiments, the associated data objects are related to a scanned document of a receipt 1000, where the scanned receipt is the primary source object. In some embodiments, scanned receipt may be determined to be the source object by being received from an input, such as being uploaded to a document management system, or being selected as an input for a workflow. In Figure 10, the scanned receipt may have been uploaded to a financial management system, in which a financial workflow which processes expenses is performed on the scanned receipt 1000. After being determined to be the source object, scanned receipt 1000 triggers the expense processing workflow, and an imaging processing action 1002 is applied to scanned receipt 1000. As a result of applying the imaging processing action, an image data object 1004 is generated. The image data object 1004 may be an image file which has been cropped from the scanned receipt 1000. An extraction processing action 1006 is then applied to scanned receipt 1000, which results in the generation of a text data object 1008. The text data object 1008 may be a text file comprising the text that appears on the receipt. In some embodiments, extracting the text from the scanned receipt may include an OCR process. The image file, which is image data object 1004, and the text file, which is text data object 1008, are both derived from the source object, receipt 1000, and so they are then associated directly with the scanned receipt, for example, by carrying out an association process.
[0156]
[0168] Then, the text data object 1008 is determined to be a source object, and a recognition processing action 1010 is applied to the text data object 1008 to identify the distinct text portions of the scanned receipt. As a result, a receipt information data object 1012 is generated, and a line item data object 1014 is generated. Both the receipt information data object 1012 and the line item data object 1014 may be text files. The data objects 1012 and 1014 generated from the text file are then associated directly with the text file.
[0157]
[0169] The receipt information data object 1012 is then determined to be a source object, and a supplier identification processing action 1016 is then applied to generate a supplier mapping result data object 1018. The supplier identification processing action 1016 may use data from the receipt information data object 1012 to identify a supplier name and map this to an entry in a database of suppliers. A supplier mapping result data object 1018 is then generated as a derived object of the receipt information data object 1012. The supplier napping result is associated with the receipt information data object 1012.
[0158]
[0170] A summarising processing action 1020 is then identified as the next processing action. At this stage, receipt information data object 1012, line item data object 1014 and supplier mapping result data object 1018 are all identified as the source objects. The summarising processing action is applied to these source objects 1012, 1014 and 1018 to generate a receipt summary data object 1022. During the association process, however, it is determined that the receipt summary data object is not to be associated directly with any of the source objects 1012, 1014, and 1018. Instead, the ancestral objects of these source objects are identified. The ancestral objects of source objects 1012, 1014, and 1018 are the text data object 1008 and the scanned receipt 1000. The scanned receipt 1000 is selected as the new source object with which the receipt summary data 1022 should be associated and, as such, the receipt summary data 1022 is associated directly with the scanned receipt 1000, rather than the objects 1012, 1014, and 1018 from which it was derived.
[0159]
[0171] A final processing action is then applied to the receipt summary data 1022. An expense processing action 1024 is then applied to the receipt summary data 1022 to generate an expense entry data object 1026. The expense entry data object 1026 is associated with the receipt summary data object 1022. After determining that there are no further processing actions to be applied in the expense processing workflow, the workflow is ended. The hierarchy of associated data objects may be accessed and / or managed to trace up or down the ancestry of any data object in the hierarchy. In some embodiments, the data objects may be transmitted or supplied to one or more external systems. For example, the data objects in the illustrated embodiments may be supplied to various financial systems including a bank reconciliation system, an expense tracking system, an accounting system or the like.
[0160]
[0172] In some embodiments, the derived data objects may have a plurality of source data objects. Some embodiments may relate to a method for deriving data objects based on a plurality of source data objects. For example, derived data objects having one or more source objects may be associated so as to form a graph data structure. In some embodiments, the graph data structure may be bounded within and / or to a root ancestor data object (also referred to as a primary source object).
[0161]
[0173] Figure 10B is a schematic illustration of an example graph data structure representing multiple derived objects, according to some embodiments. Figure 10B shows a graph data structure 1050 which may be the result of an example workflow relating to a user uploading a scanned receipt 1054. The arrows used in Figure 10B relate to the direction of derivation, that is, the arrows point towards the derived objects. The arrows in Figure 10B do not relate to traversal direction of the graph data structure 1050, which may be an undirected graph and may be traversed in any direction. Graph data structure 1050 is bounded by root ancestor business name object 1052 which represents a business name. That is, all derived objects that stem from the business name are linked directly or indirectly to the business name. In some embodiments, the business name 1052 is an object which is representative of the user performing the actions related to the scanned receipt. In some embodiments, all or part of the graph data structure 1050 may be a result of applying the method of Figure 10A to the scanned receipt 1054. The scanned receipt may have an image object 1056 and a text object 1058 derived as a result of a processing action. The image object 1056 may then be linked and / or associated with a data store storing expense receipts. In some embodiments, an expense receipt object 1060 may be derived from image object 1056. Expense receipt object 1060 may then be linked and / or associated with an expense records object 1062, which includes one or more expense records. The expense receipt object 1060 may be treated as a source object of the expense records object 1062 which represents a derived object. That is, the expense records object may be derived from at least the expense receipt object 1060.
[0162]
[0174] Text object 1058 may have one or more derived objects. For example, text object 1058 may include a receipt information object 1064. Receipt information object 1064 may have one or more derived objects, including a date object 1066, card details object 1068 and an entity object 1070. The receipt information object 1064 may derive objects 1066, 1068, and 1070 as a result of a text identification and / or a text parsing method. In some embodiments, derived objects such as the date object 1066 and the card details object 1068 may or may not be linked to additional objects within the graph data structure and / or may or may not be used and / or accessed by additional systems and / or processes. In some embodiments, a derived object may be determined to already exist within a graph structure. For example, card details object 1068, which is derived from receipt information object 1064, may be determined to already exist within the graph data structure 1050, as an object derived from business name object 1052. Accordingly, responsive to a derived object being determined to already exist within the graph data structure 1050, a new association may be written to the graph data structure that links the source object and the existing derived object. For example, an association 1069 may be written to the graph data structure 1050 that relates card details object 1068 as a derived object of the receipt information object 1064. In some embodiments, derived objects such as the entity object 1070 may be used to write and / or generate additional derived objects to the graph data structure 1050. Entity object 1070 may be used to generate a supplier mapping result object 1072. For example, entity object 1070 may be processed to determine whether the entity relates to an existing supplier name that may be stored internal or external to the graph data structure 1050. The supplier mapping result object 1072 may then be associated with a corresponding supplier name object 1074. In some embodiments, the supplier mapping result object 1072 may define a derived object of the supplier name object 1074, which acts as a source object. In this case, the supplier mapping result object 1072 may have two source objects: the entity object 1070 from which the supplier mapping result object 1072 is initially derived, and the supplier name object 1074 to which the supplier mapping result object 1072 is associated, after the supplier mapping result 1072 has itself been derived. In such a case, deletion and / or modification of the supplier name object 1074 and / or entity object 1070 may affect the supplier mapping result object 1072.
[0163]
[0175] Supplier name object 1074 may already be linked within the graph data structure to business name object 1052. In some embodiments, if the supplier mapping result object 1072 links to a supplier name object 1074 that is not associated with the business name object 1052, an association 1071 may be written between the supplier name object 1074 and the business name object 1052. The association may indicate that the objects 1052 and 1074 are related, but may not necessarily indicate that the supplier name object 1074 is a derived object of the business name 1052, or vice versa. That is, whilst the objects 1052 and 1074 may be linked within the graph data structure, modification and / or deletion of either object may not affect the associated object. In some embodiments, this may occur when the supplier name object 1074 is a root ancestor for another graph data structure.
[0164]
[0176] In some embodiments, where two data objects which are both root ancestor objects for their respective graph data structure, a link between two or more graph data structures may be formed by associating the root ancestors bounding each graph data structure. The link may represent a non-hi erar chi cal association. In some embodiments, a link between two or more graph data structures may be formed by associating a derived object within one graph data structure with a root ancestor bounding another graph data structure. The association may represent a hierarchical association, for example, assigning the root ancestor as a source object or related object (such as a sibling object) of the derived data object.
[0165]
[0177] Text object 1058, derived from scanned receipt 1054, may additionally derive a line items object 1076. Line items object 1076 may derive a plurality of derived objects for each line item, resulting in derived item objects 1078, 1079, and 1080. Each item object 1078, 1079, 1080 may include a quantity object 1078a, 1079a, and 1080a and a cost object 1078b, 1079b, 1080b. The quantity and cost objects may be used to derive additional information, such as an average object 1082 representing the average cost per item. In some embodiments, the quantity objects and cost objects are processed to derive the average object 1082. As shown in Figure 10B, the average object 1082 has six source objects. Modification and / or deletion of any one of the six source objects may affect the value and / or data of the average object 1082. Receipt summary object 1084 may be derived from receipt information object 1064 and / or the average object 1082. In some embodiments, receipt summary object 1084 and / or line items object 1076 may be used to derive an expense entry object 1086. The expense entry object 1086 may be associated with line items object 1076 and / or item objects 1078, 1079 and / or 1080. For example, the expense entry object 1086 may be associated as a derived object from the line items object 1076. In this way, modification and / or deletion to item objects 1078, 1079 and 1080 may affect the expense entry object 1086. In some embodiments, the expense entry object 1086 may include one or more data records relating to the scanned receipt 1054.
[0166]
[0178] Expense entry object 1086 and expense receipt object 1060 may by associated with expense records object 1062. In some embodiments, expense records object 1062 may be derived from a plurality of expense entry objects and expense receipt objects. In such a case, the derived expense records object 1062 may be modified each time a new source expense entry object and / or source expense receipt object is associated with the expense records object as a new source object. Where the expense records object 1062 is derived from the source expense entry objects and the expense receipt objects, and does not have any derived objects, modifying the expense record object 1062 by adding additional source objects is able to be performed without affecting further objects. In some embodiments, where expense records object 1062 includes one or more derived objects, updates and / or modifications to the expense records objects (for example, by associating new source objects) may cascade through the expense records object 1062 to any related derived objects. In some embodiments, expense records object 1062 may be additionally associated as a derived object of the root ancestor business name object 1052.
[0167]
[0179] Figure 11 is a block diagram showing a microservice architecture 1100 that may be used for associating and managing data objects according to some embodiments. The architecture includes a user computing device 1110, which is similar to user computing device 910. User computing device 1110 includes one or more processors 1111, memory 1112, data 1113 and program code 1114 which includes one or more client applications including a document management application 1115. User computing device 1110 also include user input / output peripherals 1116, and a communications module 1117. The document management application 1115 is one example of a client application for associating and managing data object which may be provided in user computing device 1110. Whilst the embodiments illustrated in Figure 11 will be described with reference to a document management client application, it will be appreciated that other client applications may be used to manage and associate data objects.
[0168]
[0180] The document management application 1115 is in communication with gateway 1118. Gateway 1118 may be an API gateway. API gateway 1118 may execute on one or more virtual machines and / or servers. Although illustrated as a single element in Figure 11, API gateway 1118 may comprise a cluster of one or more physical and / or virtual computing machines executing on one or more physical processors. Document management application 1115 may interact with API gateway 1118 according to a client-server model. API gateway 1118 may facilitate or communicate a request received from document management application 1115 to invoke a workflow and / or processing action to be carried out by one or more of the microservices 1126.
[0169]
[0181] Microservice architecture may include one or more microservices 1126. In the illustrated embodiments, the exemplified microservices 1126 relate to systems for associating and managing documents in accordance with the document management client application 1115. However, it will be appreciated that the microservices may be any relevant microservices for managing and associating data objects. Microservices 1126 may include a hierarchical display model 1119, configured to display a hierarchy of associated documents, and a hierarchical query module 1120, configured to query or trace back through a document’s hierarchy of source objects to determine its origin, or to trace down through derived documents relating to a source document to determine its children. Microservices
[0170] 1126 may further include a read module 1121 and / or a write module 1122, configured to read from and / or write documents to a document management system. Microservices 1126 may further include a management module 1123 configured to manage documents in a document management system. For example, modifying, manipulating and or interacting with the documents. Microservices 1126 further include an association module 1124 configured to associate derived documents with their source documents. For example, association module 1124 may be configured to perform the methods described herein such as method 400, 600, 700 and / or 800. Microservices 1126 may further include an event-based trigger module 1125, configured to trigger actions through one or more of the microservices modules based on the occurrence of an event, for example, receiving an input to the document management application 1115, such as the upload of a document.
[0171]
[0182] The systems and methods described herein may be further configured to perform methods of erasure (such as managing deletion of data objects and associated data objects), deduplication of data objects, associating hierarchies of data objects to improve database structuring, traceability of data objects (ensuring all data objects can be traced to their source), and accessibility including ensuring all data objects are accessible for use by one or more systems thereby to reduce duplicate processing when data objects are required by one or more systems.
[0172]
[0183] In some embodiments, methods described herein may be further configured to associate derived data objects which result from summarising all or part of a text document. For example, Al Retrieval- Augmented Generation (RAG) approaches may be applied when summarising a text document, and document chunking is used to separate the sections of the text document in order to facilitate summarising. These sections of the text document may be tracked, traced and / or retrieved by treating the sections as derived objects from the original source document, thereby keeping track of the subsections intelligently to update the summary if the text from the original document is changed. In some embodiments, this can greatly improve the speed with which the Al RAG approach updates a summary of the text document as, instead of throwing away or deleting the chunks of text in the sections, it can simply access the sections again since they are associated with the source document as derived objects.
[0173]
[0184] Some embodiments provide a method of generating a sequential record. For example, the sequential record may be an audit trail of transactions related to a user account, or a record of expenses. Figure 12 is a process flow diagram of a method 1200 for generating a sequential record, according to some embodiments. The method 1200 includes, at 1210, determining a source document. The source document may be, for example, a scanned receipt. At 1220, a processing action is applied to the source document to derive one or more data records. The data records may be textual information that includes line items of purchases, or an image of the source document, such as a receipt image. After deriving the one or more data records, at 1230, the data records are stored in a data store. At 1240, association information is written to link the data records with the source document. At 1250, a sequential record having one or more entries is generated from the one or more data records, each data record corresponding to an entry within the sequential record. At 1260, an association between each entry in the sequential record and its corresponding data record is written to the data store. As such, each entry in the sequential record is thereby associated with a specific data record which is derived from the source document. Multiple source documents may be used to derive a plurality of data records that are used to derive the sequential record. Therefore, each entry in the sequential record can be queried to determine their ancestry and origin.
[0174]
[0185] Some embodiments provide a method of identifying an impact of modifying at least one data object. In some embodiments, there is provided a method of identifying an impact of modifying at least one data object, including: accessing at least one data object; receiving a request to apply a modification action to the data object, responsive to receiving the request, determining one or more associated objects for which the at least one data object is a source object; identifying the one or more associated objects as impacted objects which will be impacted based on the modification action; and returning the impacted objects. In some embodiments, the method may further include, after returning the impacted objects, requesting authorisation to proceed with applying a modification action to the at least one data object. In some embodiments, the modification action may include a deletion action to delete the at least one data object. Methods of identifying an impact of modifying at least one data object enable assessment of the impact of change to any data objects. Having visibility over the derived objects can enable better understanding of which data objects may be impacted by an update or deletion of a source object, or any object in the line of ancestry. Additionally, the identification of impact when modifying and / or deleting an object can prevent data objects from being deleted which may impact records and / or audit trails, for example, in financial applications. This can prevent the destruction or breaking of sequential records, such as audit trails, that arise due to accidental deletion of a data object which forms part of the record.
[0175]
[0186] In some embodiments, the methods disclosed herein for associating data objects may be used for mass deletion of multiple associated objects in a single request. Figure 13 is a process flow diagram of a method 1300 for deleting multiple objects, according to some embodiments. In method 1300, at 1310, at least one data object is accessed. At 1320, a request is received to delete the data object. Responsive to receiving the request for deletion, at 1330, the one or more associated objects for which the at least one data object is associated are determined. At 1340, the method includes identifying the one or more associated objects as objects to be deleted. At 1350, modifying the deletion request to include a deletion request for the one or more associated objects; and, at 1360, responsive to receiving authorisation of the modified deletion request, deleting the data object and the one or more associated objects. The ability to delete multiple associated data objects can be useful for complying with information and data privacy regulations, and enables substantially complete destruction of related data.
[0176]
[0187] It will be appreciated by persons skilled in the art that numerous variations and / or modifications may be made to the above-described embodiments, without departing from the broad general scope of the present disclosure. The present embodiments are, therefore, to be considered in all respects as illustrative and not restrictive.
Claims
CLAIMS:
1. A computer-implemented method comprising: applying at least one processing action to at least one source data object; responsive to applying the at least one processing action, generating one or more derived objects from the at least one source data object; for each derived object: storing the derived object in a first data store; determining association information for the derived object and the at least one source data object from which the derived object is generated; and writing the association information in a second data store to associate the derived object with the at least one source data object, such that an origin of the derived object can be determined; responsive to modifying the at least one source object, creating at least one modified object; and for each derived object of the at least one source object: writing new association information between the derived object and the at least one modified object, and removing previous association information between the derived object and the at least one source data object; or generating a new derived object from the at least one modified object and writing new association information to associate the new derived object with the at least one modified object.
2. The method of claim 1, wherein the at least one modified object is laterally related to the at least one source object.
3. The method of claim 2, wherein the at least one modified object has a hierarchical value which is greater than the at least one source object.
4. The method of any one of claims 1 to 3, wherein removing the previous association information between the derived object and the at least one source data object comprises at least one of deleting, invalidating, archiving or truncating the previous association information.
5. The method of any one of claims 1 to 4, generating a new derived object from the at least one modified object comprises updating a derived object associated with the at least one source object based on modification to the source object.
6. The method of claim 5, wherein modifying the source object comprises applying a cascade of modifications to the one or more derived objects of the at least one source object.
7. The method of any one of claims 1 to 6, further including determining the at least one source data object.
8. The method of any one of claims 1 to 7, wherein the at least one processing action forms part of an automated workflow.
9. The method of claim 8, wherein the method further includes triggering the automated workflow after determination of the at least one source data object.
10. The method of claim 8 or claim 9, wherein the automated workflow includes a plurality of processing actions.
11. The method of claim 10, wherein the processing actions are completed in sequence or in parallel.
12. The method of any one of claims 8 to 11, further including, determining whether there are further processing actions in the automated workflow.
13. The method of claim 12, wherein responsive to determining that there are further processing actions in the automated workflow to be applied, determining at least one new source object from the derived objects in the first data store; and repeating the method.
14. The method of claim 12 or claim 13, including iteratively repeating the method until no further processing actions are to be applied.
15. The method of any one of claims 1 to 14, wherein derived objects are stored in a temporary data store immediately after being generated from the source object or modified object.
16. The method of any one of claims 1 to 15, further including, for each derived object, determining whether the derived object is to be directly associated with the source object or the modified object.
17. The method of claim 16, wherein responsive to determining that the derived object is not to be directly associated with the source object or the modified object: determining one or more ancestral objects of the source object or the modified object; and selecting the source object from the one or more ancestral objects.
18. The method of any one of claims 1 to 15, wherein the association information is indicative of a parent-child relationship between the source object and the one or more derived objects.
19. The method of any one of claims 1 to 16, wherein the new association information is indicative of a parent-child relationship between the modified object and the one or more derived objects, or wherein the new association information is indicative of a parent-child relationship between the modified object and the new derived object.
20. The method of any one of claims 1 to 19, wherein the association information includes at least a unique identifier of the derived object and a unique identifier of the source object.
21. The method of claim 20, wherein the new association information includes at least a unique identifier of the derived object and a unique identifier of the modified object.
22. The method of claim 20 or claim 21 wherein the unique identifier of the source object or the modified object is a source key.
23. The method of any one of claims 21 to 22, wherein the unique identifier of the derived object is an artifact key.
24. The method of any one of claims 1 to 23, wherein the association information or the new association information includes characteristic data indicative of characteristics of the derived object.
25. The method of claim 24, wherein the characteristic data includes at least a location of the derived object in the first data store.
26. The method of any one of claims 1 to 25, wherein writing the association information to the second data store includes writing the association information to a relational database.
27. The method of any one of claims 1 to 26, wherein the source object is a primary source object, which has not been derived from any other data object.
28. The method of any one of claims 1 to 27, further including, providing a user interface configured to access and manage the at least one source data object and the one or more derived objects associated with the source data object.
29. The method of claim 28, wherein the user interface is configured to trace through the association information from any of the one or more derived objects back to the source object.
30. The method of claim 28 or claim 29, wherein the user interface is configured to display a hierarchy of the derived objects that stem from the at least one source object or the at least one modified object.
31. The method of claims 30, wherein the user interface is configured to display the hierarchy of the derived objects that stem from the at least one source object in a tree structure.
32. The method of any one of claims 28 to 31, wherein the user interface is configured to receive a modification to the at least one source object or the one or more derived objects.
33. The method of any one of claims 1 to 32, wherein the one or more derived data objects are accessible for use by one or more systems.
34. A non-transient computer-readable storage medium storing instructions which, when executed by a processing device, cause the processing device to perform the method of any one of claims 1 to 33.
35. A computing device comprising: the non-transient computer-readable storage medium of claim 34; and a processor configured to execute the instructions stored in the non-transient computer- readable storage medium.
Citation Information
Patent Citations
Identification and verification of an unknown document according to an eigen image process
US20090154778A1
Object-Relational Based Data Access for Nested Relational and Hierarchical Databases
US20100287208A1
Establishing and enforcing selective object deletion operations on cloud-based shared content
US20170371890A1
Layout-agnostic complex document processing system
US20200160050A1
Data-driven enrichment of database elements
US20220350810A1