Deleting cross-application distributed related data

CN116301577BActive Publication Date: 2026-10-09SAP SE
View PDF 2 Cites 0 Cited by

Patent Information

Application Number
CN202211529108.0
Authority / Receiving Office
CN · China
Patent Type
Patents(China)
Current Assignee / Owner
Priority Date
2021-12-20
Filing Date
2022-11-30
Publication Date
2026-10-09
Estimated Expiration
2042-11-30

AI Technical Summary

Technical Problem

例如,特定分类的数据可能需要被保留作为记录管理控制的一部分且最终被删除来限制公司的长期风险和责任

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN116301577B_ABST
    Figure CN116301577B_ABST
Patent Text Reader

Abstract

Some embodiments provide a program that receives a selection of a data object relationship definition. The data object relationship definition specifies a plurality of data objects managed by a plurality of applications and a set of relationships between data objects in the plurality of data objects. The program sends a request to each application in a first subset of the plurality of applications for an instance of a data object in the plurality of data objects managed by the application. The program receives, from each application in the first subset of the plurality of applications, a list of candidate instance sets of the data object. Based on the list of candidate instance sets of the data object, the program further determines a set of instance groups of the data object. The program deletes instances of the data object set in the set of instance groups of the data object.
Need to check novelty before this filing date? Find Prior Art

Description

Background Technology

[0001] Many enterprise software applications are subject to data management policies driven by internal company policies, industry-specific regulations, contractual obligations, and government regulations. Controlled data deletion or erasure is an element of such policies. For example, specific categories of data may need to be retained as part of records management controls and eventually deleted to limit the company's long-term risk and liability. Different categories or classes of data may be subject to retention periods and policies that may be triggered by different business events. Summary of the Invention

[0002] In some embodiments, a non-transitory machine-readable medium stores a program executable by at least one processing unit of the device. The program receives a selection of a data object relationship definition. The data object relationship definition specifies a set of relationships between multiple data objects managed by multiple applications and the data objects within those multiple data objects. The program also sends a first request to each application in a first subset of the multiple applications for instances of data objects among the multiple data objects managed by the application. The program also receives a list of candidate sets of data object instances from each application in the first subset of the multiple applications. Based on the list of candidate sets of data object instances, the program further determines a set of instances of data objects. Each instance group of data objects in the set of instance groups of data objects forms a complete set of instances of data objects that are related to each other according to the data object relationship definition. The program also deletes an instance group of data objects from the set of instance groups of data objects by sending a second request to each application in a second subset of the multiple applications to delete instances of data objects in the instance groups of data objects managed by the application.

[0003] In some embodiments, the relations in the relation set may specify that a first data object managed by a first application in multiple applications is a copy of a second data object managed by a second application in multiple applications. The procedure may also determine instances of the first data object in a list of candidate instances of data objects that are copies of instances of the second data object in the list of candidate instances of data objects, and include the determined instances of the first data object and corresponding copies of the instances of the second data object in the list of candidate instances of data objects. The set of instances of data objects determined may be further based on the list of candidate instances of data objects. Only the determined instances of the first data object and corresponding copies of the instances of the second data object may be included in the list of candidate instances of data objects. The procedure may also exclude instances of the first data object that are not copies of instances of the second data object from the list of candidate instances of data objects, and exclude instances of the second data object that do not have copies of instances of the first data object from the list of candidate instances of data objects.

[0004] In some embodiments, the relationship in the relationship set specifies that a first data object managed by a first application among the multiple applications includes a reference to a second data object managed by a second application among the multiple applications. Sending a first request to each application in a first subset of the multiple applications for an instance of a data object among the multiple data objects managed by the application may include sending a first request to the first application for an instance of the first data object. A list of candidate instances of data objects received from each application among the multiple applications may include a list of first candidate instances of the first data object received from the first application. Sending a first request to each application in a first subset of the multiple applications for an instance of a data object among the multiple data objects managed by the application may further include, for each instance of the first data object in the list of first candidate instances of the first data object, determining a reference to an instance of the second data object, and sending the reference to the instance of the second data object and a request for the instance of the second data object to the second application. A list of candidate instances of data objects received from each application in a first subset of the multiple applications may include a list of second candidate instances of the second data object received from the second application.

[0005] In some embodiments, the set of instance groups of data objects may be a first set of instance groups of data objects. Based on a list of candidate instance sets of data objects, the program may further determine a second set of instance groups of data objects, wherein each instance group of data objects in the second set of instance groups of data objects is missing an instance of at least one of the plurality of data objects specified in the data object relation definition, and the second set of instance groups of data objects is not deleted.

[0006] In some embodiments, a method receives a selection of a data object relationship definition. The data object relationship definition specifies a set of relationships between multiple data objects managed by multiple applications and the data objects within those multiple data objects. The method also sends a first request to each application in a first subset of the multiple applications for instances of data objects among the multiple data objects managed by the application. The method further receives a list of candidate sets of data objects from each application in the first subset of the multiple applications. Based on the list of candidate sets of data objects, the method further determines a set of instance groups of data objects. Each instance group of data objects in the set of instance groups of data objects forms a complete set of instances of data objects that are related to each other according to the data object relationship definition. The method also deletes an instance group of data objects from the set of instance groups of data objects by sending a second request to each application in a second subset of the multiple applications to delete instances of data objects in the instance groups of data objects managed by the application.

[0007] In some embodiments, the relationships in the relationship set may specify that a first data object managed by a first application in multiple applications is a copy of a second data object managed by a second application in multiple applications. The method may also determine instances of the first data object in a list of candidate instances of data objects that are copies of instances of the second data object in the list of candidate instances of data objects, and include the determined instances of the first data object and corresponding copies of the instances of the second data object in the list of candidate instances of data objects. The set of instances of data objects determined may be further based on the list of candidate instances of data objects. Only the determined instances of the first data object and corresponding copies of the instances of the second data object may be included in the list of candidate instances of data objects. The method may also exclude instances of the first data object that are not copies of instances of the second data object from the list of candidate instances of data objects, and exclude instances of the second data object that do not have copies of instances of the first data object from the list of candidate instances of data objects.

[0008] In some embodiments, the relationships in the relationship set may specify that a first data object managed by a first application in the multiple applications includes a reference to a second data object managed by a second application in the multiple applications. Sending a first request to each application in a first subset of the multiple applications for an instance of a data object among the multiple data objects managed by the application may include sending a first request to the first application for an instance of the first data object. Receiving a list of candidate instances of data objects from each application in the multiple applications may include a list of first candidate instances of the first data object received from the first application. Sending a first request to each application in the first subset of the multiple applications for an instance of a data object among the multiple data objects managed by the application further includes, for each instance of the first data object in the list of first candidate instances of the first data object, determining a reference to an instance of the second data object, and sending the reference to the instance of the second data object and a request for the instance of the second data object to the second application. Receiving a list of candidate instances of data objects from each application in the first subset of the multiple applications may include a list of second candidate instances of the second data object received from the second application.

[0009] In some embodiments, a first request is sent in parallel to a first subset of multiple applications so that the first subset of multiple applications determines in parallel a corresponding list of candidate instances of the data object.

[0010] In some embodiments, a system includes a set of processing units and a non-transitory machine-readable medium storing instructions. The instructions cause at least one processing unit to receive a selection of a data object relationship definition. The data object relationship definition specifies a set of relationships between multiple data objects managed by multiple applications and the data objects within those multiple data objects. The instructions also cause at least one processing unit to send a first request to each application in a first subset of the multiple applications for instances of data objects among the multiple data objects managed by the applications. The instructions further cause at least one processing unit to receive a list of candidate instance sets of data objects from each application in the first subset of the multiple applications. Based on the list of candidate instance sets of data objects, further instructions cause at least one processing unit to determine a set of instance groups of data objects. Each instance group of data objects in the set of instance groups of data objects forms a complete set of instances of data objects that are related to each other according to the data object relationship definition. The instructions further cause at least one processing unit to delete an instance group of data objects from the set of instance groups of data objects by sending a second request to each application in a second subset of the multiple applications to delete instances of data objects in the instance groups of data objects managed by the applications.

[0011] In some embodiments, the relations in the relation set may specify that a first data object managed by a first application in multiple applications is a copy of a second data object managed by a second application in multiple applications. The instruction may also cause at least one processing unit to determine instances of the first data object in a list of candidate instances of data objects that are copies of instances of the second data object in the list of candidate instances of data objects, and to include the determined instances of the first data object and corresponding copies of the instances of the second data object in the list of candidate instances of data objects. The set of instances of data objects determined may be further based on the list of candidate instances of data objects. Only the determined instances of the first data object and corresponding copies of the instances of the second data object may be included in the list of candidate instances of data objects. The instruction may also cause at least one processing unit to not include instances of the first data object that are not copies of instances of the second data object in the list of candidate instances of data objects, and not include instances of the second data object that do not have copies of instances of the first data object in the list of candidate instances of data objects.

[0012] In some embodiments, the relationships in the relationship set may specify that a first data object managed by a first application in the multiple applications includes a reference to a second data object managed by a second application in the multiple applications. Sending a first request to each application in a first subset of the multiple applications for an instance of a data object among the multiple data objects managed by the application may include sending a first request to the first application for an instance of the first data object. Receiving a list of candidate instances of data objects from each application in the multiple applications may include a list of first candidate instances of the first data object received from the first application. Sending a first request to each application in the first subset of the multiple applications for an instance of a data object among the multiple data objects managed by the application may further include, for each instance of the first data object in the list of first candidate instances of the first data object, determining a reference to an instance of the second data object, and sending the reference to the instance of the second data object and a request for the instance of the second data object to the second application. Receiving a list of candidate instances of data objects from each application in the first subset of the multiple applications may include a list of second candidate instances of the second data object received from the second application.

[0013] The following detailed description and accompanying drawings provide a better understanding of the nature and advantages of various embodiments of this disclosure. Attached Figure Description

[0014] Figure 1 A system for deleting related data objects across application distributions, according to some embodiments, is shown.

[0015] Figure 2 An example data object relationship definition is shown according to some embodiments.

[0016] Figure 3 Examples of data object metadata according to some embodiments are shown.

[0017] Figure 4 Example relationship definitions are shown according to some embodiments.

[0018] Figure 5 Examples of relationships between data objects defined in data object relationships are shown according to some embodiments.

[0019] Figure 6A and Figure 6B The data flow of a complete group for deleting instances of related data objects across application distributions, according to some embodiments, is shown.

[0020] Figure 7 The process for deleting related data objects across application distributions, according to some embodiments, is illustrated.

[0021] Figure 8An exemplary computer system in which various embodiments can be implemented is shown.

[0022] Figure 9 An exemplary computing device in which various embodiments can be implemented is shown.

[0023] Figure 10 An exemplary system in which various embodiments can be implemented is shown. Detailed Implementation

[0024] In the following description, numerous examples and specific details are set forth for purposes of explanation in order to provide a thorough understanding of this disclosure. However, it will be apparent to those skilled in the art that various embodiments of this disclosure as defined in the claims may include some or all of the features of these examples, or in combination with other features described below, and may also include modifications and equivalents of the features and concepts described herein.

[0025] This document describes a technique for deleting distributed data objects across applications. In some embodiments, a computing system includes several applications. Each application manages its own defined data objects and thus manages instances of those data objects. The computing system may store a collection of data object relationship definitions that define relationships between the data objects managed by the applications. In response to a request received from a client device, the computing system may provide the client device with a list of data object relationship definitions. The computing system may receive a selection of one of the data object relationship definitions from the client device. In response, the computing system determines the application that manages instances of the data objects specified in the data object relationship definition. Next, the computing system sends a request to each determined application for instances of the data objects specified in the data object relationship definition managed by the application. In response to this request, for each data object managed by the determined application, the application sends to the computing system a list of candidate instances of the data objects that the application has determined are eligible for deletion. When the computing system receives such a list of candidate instances of data objects from the determined applications, the computing system determines groups of data object instances, where each group of data object instances is a complete set of instances of the data objects defined by the data object relationship definition and related in the same way as defined by the data object relationship definition. These groups of data object instances can be deleted. To delete a specific group of instances of a data object, the computing system sends a request to each specific application to delete the corresponding instance of the data object managed by the application.

[0026] Figure 1A system 100 for deleting related data objects distributed across applications is illustrated according to some embodiments. As shown, system 100 includes a client device 105 and a computing system 110. The client device 105 can communicate and interact with the computing system 110. For example, a user of the client device 105 can define policy rules for applications 125a-n. The user of the client device 105 can create a set of policy rules for application 125 and send them to the computing system 110 (e.g., policy manager 115). As another example, a user of the client device 105 can define data object relationship definitions and send them to the computing system 110 (e.g., policy manager 115). As yet another example, a user of the client device 105 can send a request for data object relationship definitions to the computing system 110 (e.g., a cleanup manager). Upon receiving a list of data object relationship definitions, the client device 105 can provide the list to the user (e.g., via a display of the client device 105). In some cases, the client device 105 can receive selections from the user of data object relationship definitions in the list. In response to receiving a selection, client device 105 forwards the selection to computing system 110 (e.g., cleanup manager 120). In response to the selection, client device 105 may receive a list of sets of instances of data objects that can be deleted. The user of client device 105 can select one or more sets of instances of data objects from the list of sets of instances of data objects to be deleted. Client device 105 sends the selection(s) to computing system 110 (e.g., cleanup manager 120). As shown in the figure... Figure 1 A client device is depicted. Those skilled in the art will understand that system 100 may include any number of additional client devices configured identically or similarly to client device 105.

[0027] like Figure 1As shown, computing system 110 includes a policy manager 115, a cleanup manager 120, applications 125a-n, a policy data store 130, a data object (DO) relational definition store 135, and data object stores 140a-n. Policy data store 130 is configured to store policy data for each of the applications 125a-n. For example, policy data stored in policy data store 130 may include policy rules specifying how data is managed. Examples of policy rules include: an instance of a data object cannot be deleted if it is active; an instance of a data object cannot be deleted if its last update date is less than a defined time period (e.g., one week, one month, three months, six months, one year, etc.); an instance of a data object cannot be deleted if it is classified as confidential or critical; an instance of a data object cannot be deleted if it was created in a defined geographic location; an instance of a data object cannot be deleted if it is stored in a defined geographic location, and so on.

[0028] Data object relationship definition storage 135 stores data object relationship definitions. In some embodiments, the data object relationship definition specifies a set of relationships between multiple data objects managed by multiple applications 125 and the data objects within those data objects. Each of the data object storage units 140a-n is configured to store the data objects managed by the corresponding application 125 and instances of those data objects. In some embodiments, a data object specifies a set of attributes. In some such embodiments, an instance of a data object includes a set of attributes specified in the data object and a set of values ​​for those attributes.

[0029] In some embodiments, memories 130, 135, and 140a-n are implemented in a single physical memory, while in other embodiments, memories 130, 135, and 140a-n may be implemented across several physical memories. Although Figure 1 Storage units 130, 135, and 140a-n are shown as part of computing system 110, but those skilled in the art will understand that in some embodiments, policy data storage unit 130, data object relationship definition storage unit 135, and / or data object storage unit 140a-n may be external to computing system 110.

[0030] Policy manager 115 is responsible for managing policy data for applications 125a-n. For example, policy manager 115 may receive a set of policy rules defined for application 125 from client device 105. Once policy manager 115 receives the set of defined policy rules, it stores them in policy data storage 130. As another example, policy manager 115 may receive data object relationship definitions from client device 105. In response to receiving them, policy manager 115 stores the data object relationship definitions in data object relationship definition storage 135.

[0031] Figure 2 An example data object relationship definition 200 according to some embodiments is shown. As shown, the data object relationship definition 200 includes a data object relationship identifier (ID) 205, data object metadata 210, and a relationship definition 215. The data object relationship ID 205 is a unique identifier used to identify the data object relationship definition 200. The data object metadata 210 includes metadata used to describe a set of data objects. Figure 3 An example of data object metadata 300 according to some embodiments is shown. In some embodiments, data object metadata 300 is used to describe each data object specified in data object metadata 210. Figure 3 As shown, the data object metadata 300 includes a data object ID 305, an application 310, and a data object type 315. The data object ID 305 is a unique identifier used to identify the data object 300. The application 310 specifies the application (e.g., application 125) responsible for managing the data object 300 and instances of the data object 300. The data object type 315 specifies the type of the data object 300. Examples of data object types include primary data objects and secondary data objects. (See also: [link to relevant documentation]) Figure 2 Relationship definition 215 includes a set of definitions, each of which specifies the relationship between a pair of data objects described by data object metadata 210. Figure 4 An example relationship definition 400 according to some embodiments is shown. In some embodiments, relationship definition 400 is used to describe each relationship specified in relationship definition 215. As shown, relationship definition 400 includes a relationship ID 405, a relationship type 410, and a data object ID 415. Relationship ID 405 is a unique identifier used to identify relationship definition 400. Relationship type 410 specifies the type of relationship. Examples of relationship types include a reference relationship indicating that a first data object references a second data object and a copy relationship indicating that a first data object is a copy of a second data object. Data object ID 415 includes a first data object ID used to uniquely identify a first data object in the relationship and a second data object ID used to uniquely identify a second data object in the relationship.

[0032] Back Figure 1 The cleanup manager 120 is configured to manage the cleanup (i.e., deletion) of instances of data objects managed by applications 125a-n. For example, the cleanup manager 120 may receive a request for a list of data object relationship definitions from client device 105. In response, the cleanup manager 120 accesses the data object relationship definition storage 135 to retrieve the data object relationship definition. The cleanup manager 120 then sends the data object relationship definition to client device 105. In some cases, the cleanup manager 120 may receive a selection of data object relationship definitions. In response to this selection, the cleanup manager 120 determines a set of applications 125 that manage the data objects specified in the selected data object relationship definition. Next, the cleanup manager 120 sends a request for instances of the data objects specified in the data object relationship definition managed by the application to each of the determined set of applications 125. In turn, the cleanup manager 120 may receive a list of candidate sets of data object instances from each of the determined set of applications 125.

[0033] The cleanup manager 120 can then perform further processing on the list of candidate instances of data objects received from the determined set of applications 125. For example, the cleanup manager 120 can perform a set of coordination operations to eliminate groups of instances of data objects that are related to each other, based on data relationship definitions, including instances of data objects that cannot be deleted from the cleanup considerations. In some cases, candidate instances of data objects may include references to other instances of data objects managed by another application. In some such cases, the cleanup manager 120 sends a reference to an instance of a data object and a request for that instance to another application responsible for managing that other instance of the data object. In some instances, the cleanup manager 120 can perform another set of coordination operations on candidate instances of previously received data objects and candidate instances of newly received data objects (i.e., instances of data objects referenced by candidate instances of data objects among the candidate instances of previously received data objects). The cleanup manager 120 can repeat these operations continuously until the candidate instances of newly received data objects do not include references to other instances of data objects managed by other applications. Then, based on the remaining candidate instances of the data objects, the cleanup manager 120 determines instance groups of data objects, which are a complete collection of instances of data objects defined by the data object relationship definition and related to each other in the same way as defined by the selected data object relationship definition. In some embodiments, the cleanup manager 120 sends a list of instance groups to the client device 105, allowing the user of the client device 105 to select which groups to delete. In some embodiments, when a selected instance group of data objects is received from the instance group list, the cleanup manager 120 sends a request to each of the applications 125 responsible for managing the instances of data objects in the instance group to delete the corresponding instance of the data object. In other embodiments, the cleanup manager 120 deletes each instance group of data objects by sending a request to the applications 125 responsible for managing them to delete the corresponding instance of the data object.

[0034] Each of applications 125a-n is a software application running on computing system 110, configured to manage data objects and instances of such data objects stored in a corresponding data object store 140. For example, application 125 may receive a request from purge manager 120 for instances of a set of data objects managed by application 125. In response to the request, application 125 accesses its data object store 140 to retrieve a list of requested instances of the data object set. Next, application 125 accesses policy data store 130 to retrieve a set of policy rules defined for application 125. Application 125 then applies this set of rules to a list of candidate instances of each data object in the data object set that is a primary type of data object. The application of this set of rules for each candidate instance of such a data object indicates whether the candidate instance of that data object can be deleted. For candidate instances of data objects that indicate they cannot be deleted, application 125 removes them from the list of candidate instances of the data object set. Application 125 then sends a list of the remaining candidate instances of the data object set to purge manager 120. In some cases, application 115 may receive a request from cleanup manager 120 to delete a set of data object instances. In response, application 125 accesses the corresponding data object store 140 and deletes the requested data object instances from the data object store 140.

[0035] Now refer to Figures 1-5 , Figure 6A and Figure 6B Describe the example operation. Specifically, this example operation shows how to determine candidate instances of the data object specified in the data object relationship definition to be deleted. The data object relationship to be used in this example is defined using data object relationship definition 200, data object metadata 300, and relationship definition 400. Figure 5 An example of a relationship between data objects defined in data object relationship 500 according to some embodiments is shown. Specifically, data object relationship 500 is the data object relationship that will be used for the operation in this example. Figure 5As shown, data object relationships 500 include data objects 505-520 and relationships 525-535. Here, application 125a is configured to manage data object 505 stored in data object storage 140a, application 125b is configured to manage data objects 510 and 515 stored in data object storage 140b, and application 125c is configured to manage data object 520 stored in data object storage 140c. For this example, relationship 525 is a replication relationship where data object 505 is a copy of data object 515. Relationship 530 is a reference relationship where data object 510 includes a reference to data object 515. Furthermore, relationship 535 is a reference relationship where data object 510 includes a reference to data object 520. In some embodiments, if a data object includes a reference to another data object, or if the data object is part of a replication relationship, then the data object is a primary data object, and if the data object is referenced by another data object managed by a different application, then the data object is a secondary data object. Thus, in this example, data objects 505-515 are primary data objects (data objects 505 and 515 are included in the replica relationship, and data object 510 includes a reference to data object 520), while data object 520 is a secondary data object (data object 520 managed by application 125c is referenced by data object 510 managed by application 125b).

[0036] Figure 6A and Figure 6B A data flow 600 of a complete group for deleting instances of related data objects across an application distribution, according to some embodiments, is shown. References Figure 6A This example operation begins (at 605) with client device 105 sending a request to cleanup manager 120 for a list of data object relationship definitions. Upon receiving the request, cleanup manager 120 accesses data object relationship definition storage 135 at 610 and retrieves a set of data object relationship definitions at 615. In some embodiments, the retrieved set of data object relationship definitions is the definition associated with a user of client device 105. At 620, cleanup manager 120 sends the list of data object relationship definition sets to client device 105.

[0037] At 625, the user of client device 105 sends a selection of data object relationships from a list of data object relationship definitions to the cleanup manager 120. Here, the user of client device 105 selects data object relationship 500. In response to receiving this selection, the cleanup manager 120 determines the data object in data object relationship 500 as the primary data object. Therefore, the cleanup manager 120 determines that data objects 505-515 are primary data objects. Next, the cleanup manager 120 sends a request for an instance of data object 505-515 to each of the applications 125 configured to manage data objects 505-515. Figure 6A As shown, at 630, the cleanup manager 120 sends a request to the application 125a for an instance of data object 505. When the application 125a receives the request, it accesses the data object storage 140a to retrieve a list of candidate instances of data object 505. Then, the application 125a accesses the policy data storage 130 to retrieve a set of policy rules defined for the application 125a and applies these rules to the list of candidate instances of data object 505. The application of these rules indicates whether a candidate instance of data object 505 can be deleted for each instance of data object 505. The application 125a removes the candidate instances of data object 505 that cannot be deleted from the list of candidate instances of data object 505. Next, at 635, the application 125a sends a list of the remaining candidate instances of data object 505 to the cleanup manager 120.

[0038] Continuing the example operation, at 640, the cleanup manager 120 sends a request to the application 125b for instances of data objects 510 and 515. In response to this request, the application 125b accesses the data object storage 140b to retrieve a list of candidate instances of data objects 510 and 515. Next, the application 125b accesses the policy data storage 130 to retrieve a set of policy rules defined for the application 125b and applies them to the list of candidate instances of data objects 510 and 515. The application of this set of rules indicates to each instance of data objects 510 and 515 whether the instance of data objects 510 and 515 can be deleted. The application 125b then removes the instances of data objects 510 and 515 that cannot be deleted from the list of candidate instances of data objects 510 and 515. Then, at 645, the application 125b sends a list of the remaining candidate instances of data objects 510 and 515 to the cleanup manager 120. In this example, the cleanup manager 120 sends requests 630 and 640 to applications 125a and 125b in parallel, respectively, so that applications 125a and 125b can process these requests in parallel (e.g., determine candidate instances of the data objects they correspond to).

[0039] Now for reference Figure 6B The cleanup manager 120 coordinates (650) a list of candidate instances of data objects 505-515 received from applications 125a and 125b. In some embodiments, the cleanup manager 120 performs different coordination operations on candidate instances of data objects in different types of relationships. For this example, data objects 505 and 515 are in a replica relationship. In this example, the cleanup manager 120 performs a set of coordination operations on the list of candidate instances of data objects 505 and 515 by determining candidate instances of data object 505 that are replicas of candidate instances of data object 515 from the list of candidate instances of data objects 505 and 515. Then, the cleanup manager 120 removes any candidate instances of data objects 505 and 515 that do not have a replica of the other from the list of candidate instances of data objects 505-515. Additionally, data objects 510 and 515 are in a reference relationship. In this example, the cleanup manager 120 performs a set of coordination operations on the list of candidate instances of data objects 510 and 515 by identifying candidate instances of data object 510 that reference candidate instances of data object 515 from the list of candidate instances of data objects 510 and 515. Then, the cleanup manager 120 removes any candidate instances of data object 515 that do not have a reference to it from the list of candidate instances of data objects 510 and 515. Based on the remaining list of candidate instances of data objects 505-515, the cleanup manager 120 determines candidate instances of data objects 505-515 that include references to instances of another data object managed by another application. In this example, candidate instances of data object 510 include references to candidate instances of data object 520. Therefore, at 655, the cleanup manager 120 sends a request for an instance of data object 520 and a reference to the instance of data object 520 included in the instance of data object 515 to application 125c. After receiving the request and reference, application 125c accesses data object storage 140c and uses the reference to retrieve a list of candidate instances of data object 520 referenced by the reference. Next, application 125c accesses policy data storage 130 to retrieve a set of policy rules defined for application 125c and applies these rules to the list of candidate instances of data object 520. The application of these rules indicates whether a candidate instance of data object 520 can be deleted for each instance of data object 520. Then, application 125c removes the candidate instances of data object 520 that cannot be deleted from the list of candidate instances of data object 520. At 660, application 125c sends the remaining list of candidate instances of data object 520 to cleanup manager 120.

[0040] Once the cleanup manager 120 receives the list of candidate instances of data object 520, it coordinates the list of candidate instances of data objects 505-520 at step 665. As described above, the cleanup manager 120 performs different coordination operations on instances of data objects in different types of relationships. Here, data objects 510 and 520 are in a reference relationship. Thus, the cleanup manager 120 performs a set of coordination operations on the list of candidate instances of data objects 510 and 520 by determining the candidate instances of data object 510 that reference the candidate instances of data object 520 from the list of candidate instances of data objects 510 and 520. Next, the cleanup manager 120 removes any candidate instances of data object 520 that do not have a candidate instance of data object 510 referencing it from the list of candidate instances of data object 520. Since there are no longer any data objects referenced by different applications to process, the clearing manager 120 determines a group of instances of data objects 505-520 based on a list of remaining candidate instances of data objects 505-520, each being a complete set of instances of data objects that are related to each other according to data object relationships 500. For this example, such a group of instances of data objects 505-520 includes an instance of data object 505, an instance of data object 510, an instance of data object 515, and an instance of data object 520. An instance of data object 510 will include references to instances of data object 515 and references to instances of data object 520. Furthermore, an instance of data object 505 will be a copy of an instance of data object 515. Therefore, for a specific group of instances of data objects that are related to each other according to the data relationship 500, if the list of candidate instances of data objects 505-520 is missing one instance of a data object in the specific group of instances of data objects (e.g., missing an instance of data object 505, an instance of data object 510, an instance of data object 515, and / or an instance of data object 520), the clearing manager 120 is unsure whether the specific group of instances of data objects is a group that is a complete set of instances of data objects that are related to each other according to the data object relationship 500. This prevents the specific group of instances of data objects from being deleted.

[0041] After the cleanup manager 120 determines the instance groups of data objects 505-520, the cleanup manager 120 deletes each group of instances of data objects 505-520. In this example, the cleanup manager 120 achieves this by sending a request to application 125a at 675 to delete the instance of data object 505 included in the instance group of data objects 505-520, sending a request to application 125b at 680 to delete the instances of data objects 510 and 515 included in the instance group of data objects 505-520, and sending a request to application 125c at 685 to delete the instance of data object 520 included in the instance group of data object 500.

[0042] While this example illustrates the cleanup manager 120 deleting all instance groups of data objects 505-520, in some embodiments, individual instance groups of data objects 505-520 may be deleted. For example, in some such embodiments, the cleanup manager 120 provides a list of instance groups of data objects 505-520 to the client device 105. The user of the client device 105 can select instances of the data object set 505-520 to delete. In response to receiving this selection, the cleanup manager 120 sends a request to each of the applications 125a-c to delete the corresponding instances of data objects 505-520 included in the selected instance groups of data objects 505-520. Furthermore, the example above describes how to determine which instances of data objects specified in the selected data object relationship definition should be deleted. In some cases, data objects include time attributes (e.g., specified in data object metadata 300). In some such cases, the user of the client device 105 also sends a specified time period along with a selection of the data object relationship definition. Instances of data objects with time attribute values ​​falling within that time period can be deleted. Therefore, during the process of determining instances of data objects to be deleted, this time period is used as a filter (e.g., a request sent to application 125a-c includes a time period as a constraint). Those skilled in the art will understand that data objects may include additional and / or different attributes, and therefore, additional and / or different filters for those attributes may be received from the user of client device 105.

[0043] In some embodiments, each instance of a data object may include a due date attribute, indicating that the instance of the data object can only be deleted after the due date has been reached. For a group of instances of data objects that are related to each other based on data relationships, instances of different data objects in the group of instances of the data object may have different due dates. If a particular instance of a data object in the group of instances of the data object has a due date that has not yet been reached, the purge technique described herein is used to prevent the group of instances of the data object from being allowed to be deleted. This effectively extends the due date of that particular instance of the data object to an instance of another data object in the group of instances of the data object.

[0044] Figure 7 A process 700 for deleting related data objects distributed across applications is illustrated according to some embodiments. In some embodiments, computing system 110 executes process 700. Process 700 begins (at 710) by receiving a selection of a data object relationship definition. The data object relationship definition specifies a set of relationships between multiple data objects managed by multiple applications and the data objects within those multiple data objects. References Figure 1 , Figure 5 and Figure 6AAs an example, in 625, the clear manager 120 can receive selections of data object relationships 500 from the client device 105.

[0045] Next, at 720, process 700 sends a first request to each application in the first subset of multiple applications for an instance of a data object among the multiple data objects managed by that application. (See reference) Figure 1 , Figure 5 and Figure 6A As an example, the cleanup manager 120 can send requests for instances of data objects 505 to application 125a at 630 and 640, and requests for instances of data objects 510 and 515 to application 125b. Then, process 700 receives a list of candidate instances of data objects from each application in a first subset of the multiple applications at 730. (See reference) Figure 1 , Figure 5 and Figure 6A As an example, the clearing manager 120 can receive a list of candidate instances of data object 505 from application 125a at 635 and 645, and a list of candidate instances of data objects 510 and 515 from application 125b.

[0046] Based on the list of candidate instance sets of data objects, process 700 determines a set of instance groups of data objects at 740. According to the data object relation definition, each instance group of data objects in the set of instance groups is related to each other. (Reference) Figure 1 , Figure 5 and Figure 6B As an example, the clearing manager 120 can determine the instance group of data objects 505-520 at 670 based on the list of candidate instances of data objects 505-520 reconciled at 665.

[0047] Finally, at 750, process 700 deletes the set of data object instance groups by sending a second request to each application in the second subset of multiple applications to delete instances of data objects in the data object instance group managed by that application. (See reference) Figure 1 and Figure 5 As described above, in some such embodiments, the cleanup manager 120 may provide the client device 105 with a list of instance groups of data objects 505-520. A user of the client device 105 may select an instance of the data object set 505-520 to delete. In response to receiving this selection, the cleanup manager 120 sends a request to each of the applications 125a-c to delete the corresponding instance of data object 505-520 included in the selected instance group of data objects 505-520.

[0048] Figure 8An exemplary computer system 800 for implementing the various embodiments described above is illustrated. For example, computer system 800 can be used to implement client device 105 and computing system 110. Computer system 800 can be a desktop computer, laptop computer, server computer, or any other type of computer system or combination thereof. Some or all of the elements of policy manager 115, cleanup manager 120, applications 125a-n, or combinations thereof may be included or implemented in computer system 800. Furthermore, computer system 800 can implement many of the operations, methods, and / or processes described above (e.g., process 700). Figure 8 As shown, the computer system 800 includes a processing subsystem 802, which communicates with an input / output (I / O) subsystem 808, a storage subsystem 810, and a communication subsystem 824 via a bus subsystem 826.

[0049] The bus subsystem 826 is configured to facilitate communication between various components and subsystems of the computer system 800. Although the bus subsystem 826 is... Figure 8 While shown as a single bus, those skilled in the art will understand that bus subsystem 826 can be implemented as multiple buses. Bus subsystem 826 can be any of several types of bus structures using any of a variety of bus architectures (e.g., memory bus or memory controller, peripheral bus, local bus, etc.). Examples of bus architectures may include Industry Standard Architecture (ISA) bus, Micro Channel Architecture (MCA) bus, Enhanced ISA (EISA) bus, Video Electronics Standards Association (VESA) local bus, Peripheral Component Interconnect (PCI) bus, Universal Serial Bus (USB), etc.

[0050] A processing subsystem 802, which may be implemented as one or more integrated circuits (e.g., conventional microprocessors or microcontrollers), controls the operation of a computer system 800. The processing subsystem 802 may include one or more processors 804. Each processor 804 may include one processing unit 806 (e.g., a single-core processor such as processor 804-1) or several processing units 806 (e.g., a multi-core processor such as processor 804-2). In some embodiments, the processor 804 of the processing subsystem 802 may be implemented as a standalone processor, while in other embodiments, the processor 804 of the processing subsystem 802 may be implemented as multiple processors integrated into a single chip or multiple chips. However, in some embodiments, the processor 804 of the processing subsystem 802 may be implemented as a combination of a standalone processor integrated into a single chip or multiple chips.

[0051] In some embodiments, the processing subsystem 802 can execute various programs or processes in response to program code, and can maintain multiple concurrently running programs or processes. At any given time, some or all of the program code to be executed can reside in the processing subsystem 802 and / or the storage subsystem 810. With appropriate programming, the processing subsystem 802 can provide various functions, such as those described above with reference to process 700.

[0052] The I / O subsystem 808 may include any number of user interface input devices and / or user interface output devices. User interface input devices may include keyboards, pointing devices (e.g., mice, trackballs, etc.), touchpads, touchscreens integrated into the display, scroll wheels, click wheels, dial pads, buttons, switches, keypads, audio input devices with voice recognition systems, microphones, image / video capture devices (e.g., webcams, image scanners, barcode readers, etc.), motion sensing devices, gesture recognition devices, eye gesture (e.g., blinking) recognition devices, biometric input devices, and / or any other type of input device.

[0053] User interface output devices may include visual output devices (e.g., display subsystems, indicator lights, etc.), audio output devices (e.g., speakers, headphones, etc.), and so on. Examples of display subsystems may include cathode ray tubes (CRTs), flat panel devices (e.g., liquid crystal displays (LCDs), plasma displays, etc.), projection devices, touch screens, and / or any other type of device and mechanism for outputting information from computer system 800 to a user or another device (e.g., a printer).

[0054] like Figure 8As shown, the storage subsystem 810 includes a system memory 812, a computer-readable storage medium 820, and a computer-readable storage medium reader 822. The system memory 812 may be configured to store software in the form of program instructions that can be loaded and executed by the processing subsystem 802, as well as data generated during the execution of the program instructions. In some embodiments, the system memory 812 may include volatile memory (e.g., random access memory (RAM)) and / or non-volatile memory (e.g., read-only memory (ROM), programmable read-only memory (PROM), erasable programmable read-only memory (EPROM), electrically erasable programmable read-only memory (EEPROM), flash memory, etc.). The system memory 812 may include different types of memory, such as static random access memory (SRAM) and / or dynamic random access memory (DRAM). In some embodiments, the system memory 812 may include a basic input / output system (BIOS) configured to store basic routines to facilitate the transfer of information between elements within the computer system 800 (e.g., during startup). This BIOS can be stored in a ROM (e.g., a ROM chip), flash memory, or any other type of memory that can be configured to store the BIOS.

[0055] like Figure 8 As shown, system memory 812 includes application programs 814 (e.g., application 115), program data 816, and operating system (OS) 818. OS 818 can be various versions of Microsoft Windows, Apple Mac OS, Apple OS X, Apple macOS, and / or Linux operating systems, various commercially available UNIX or UNIX-like operating systems (including but not limited to various GNU / Linux operating systems, Google...). (etc.) and / or mobile operating systems, such as Apple iOS, Windows Phone, Windows Mobile, Android, BlackBerry OS, BlackBerry 10 and Palm OS, WebOS operating system.

[0056] Computer-readable storage medium 820 may be a non-transitory computer-readable medium configured to store software (e.g., programs, code modules, data structures, instructions, etc.). Many of the aforementioned components (e.g., policy manager 115, cleanup manager 120, and applications 125a-n) and / or processes (e.g., process 700) may be implemented as software that performs the operations of these components and / or processes when run by a processor or processing unit (e.g., the processor or processing unit of processing subsystem 802). Storage subsystem 810 may also store data used for software execution or generated during software execution.

[0057] The storage subsystem 810 may also include a computer-readable storage medium reader 822 configured to communicate with the computer-readable storage medium 820. The computer-readable storage medium 820 may be combined with, and optionally with, the system memory 812 to comprehensively represent remote, local, fixed and / or removable storage devices and storage media for temporarily and / or more permanently containing, storing, transmitting and retrieving computer-readable information.

[0058] Computer-readable storage medium 820 can be any suitable medium known or used in the art, including storage media implemented with any method or technology for storing and / or transmitting information, such as volatile, non-volatile, removable, or non-removable media. Examples of such storage media include RAM, ROM, EEPROM, flash memory or other storage technologies, optical disc read-only memory (CD-ROM), digital versatile disc (DVD), Blu-ray disc (BD), cassette tape, magnetic tape, disk storage (e.g., hard disk drive), Zip drive, solid-state drive (SSD), flash memory card (e.g., Secure Digital (SD) card, compressed flash memory card, etc.), USB flash drive, or any other type of computer-readable storage medium or device.

[0059] The communication subsystem 824 serves as an interface for receiving and sending data to other devices, computer systems, and networks. For example, the communication subsystem 824 may allow computer system 800 to connect to one or more devices via a network (e.g., a Personal Area Network (PAN), Local Area Network (LAN), Storage Area Network (SAN), Campus Network (CAN), Metropolitan Area Network (MAN), Wide Area Network (WAN), Global Network (GAN), Intranet, Internet, any number of different types of networks, etc.). The communication subsystem 824 may include any number of different communication components. Examples of such components may include radio frequency (RF) transceiver components for accessing wireless voice and / or data networks (e.g., using cellular technologies such as 2G, 3G, 4G, 5G, etc., wireless data technologies such as Wi-Fi, Bluetooth, ZigBee, etc., or any combination thereof), Global Positioning System (GPS) receiver components, and / or other components. In some embodiments, in addition to or instead of components configured for wireless communication, the communication subsystem 824 may provide components configured for wired communication (e.g., Ethernet).

[0060] Those skilled in the art will recognize that, Figure 8 The architecture shown is merely an example architecture of computer system 800, and computer system 800 may have additional or fewer components than shown, or different component configurations. Figure 8 The various components shown can be implemented using hardware, software, firmware, or any combination thereof, including one or more signal processing and / or application-specific integrated circuits.

[0061] Figure 9 An exemplary computing device 900 for implementing the various embodiments described above is shown. For example, the computing device 900 can be used to implement client device 105. The computing device 900 can be a mobile phone, smartphone, wearable device, activity tracker or manager, tablet computer, personal digital assistant (PDA), media player, or any other type of mobile computing device or combination thereof. Figure 9 As shown, the computing device 900 includes a processing system 902, an input / output (I / O) system 908, a communication system 918, and a storage system 920. These components can be coupled via one or more communication buses or signal lines.

[0062] A processing system 902, which can be implemented as one or more integrated circuits (e.g., a conventional microprocessor or microcontroller), controls the operation of a computing device 900. As shown, the processing system 902 includes one or more processors 904 and a memory 906. The processor 904 is configured to run or execute various software and / or instruction sets stored in the memory 906 to perform various functions of the computing device 900 and process data.

[0063] Each processor of processor 904 may include one processing unit (e.g., a single-core processor) or several processing units (e.g., a multi-core processor). In some embodiments, processor 904 of processing system 902 may be implemented as a standalone processor, while in other embodiments, processor 904 of processing system 902 may be implemented as multiple processors integrated into a single chip. However, in some embodiments, processor 904 of processing system 902 may be implemented as a combination of a standalone processor and multiple processors integrated into a single chip.

[0064] Memory 906 may be configured to receive and store software in the form of program instructions that can be loaded and executed by processor 904 (e.g., operating system 922, application 924, I / O module 926, communication module 928, etc. from storage system 920), as well as data generated during the execution of program instructions. In some embodiments, memory 906 may include volatile memory (e.g., random access memory (RAM)), non-volatile memory (e.g., read-only memory (ROM), programmable read-only memory (PROM), erasable programmable read-only memory (EPROM), electrically erasable programmable read-only memory (EEPROM), flash memory, etc.), or combinations thereof.

[0065] I / O system 908 is responsible for receiving input through various components and providing output through various components. As shown in this example, I / O system 908 includes a display 910, one or more sensors 912, a speaker 914, and a microphone 916. Display 910 is configured to output visual information (e.g., a graphical user interface (GUI) generated and / or presented by processor 904). In some embodiments, display 910 is a touchscreen, which is configured to also receive touch-based input. Display 910 can be implemented using liquid crystal display (LCD) technology, light-emitting diode (LED) technology, organic LED (organic light-emitting diode) technology, organic electroluminescent (OEL) technology, or any other type of display technology. Sensor 912 can include any number of different types of sensors for measuring physical quantities (e.g., temperature, force, pressure, acceleration, direction, light, radiation, etc.). Speaker 914 is configured to output audio information, and microphone 916 is configured to receive audio input. Those skilled in the art will understand that I / O system 908 can include any number of additional, fewer, and / or different components. For example, the I / O system 908 may include a keypad or keyboard for receiving input, a port for sending and receiving data and / or power and / or communicating with another device or component, an image capture component for capturing photos and / or videos, etc.

[0066] Communication system 918 serves as an interface for receiving and sending data to other devices, computer systems, and networks. For example, communication system 918 may allow computing device 900 to connect to one or more devices via a network (e.g., Personal Area Network (PAN), Local Area Network (LAN), Storage Area Network (SAN), Campus Network (CAN), Metropolitan Area Network (MAN), Wide Area Network (WAN), Global Network (GAN), Intranet, Internet, any number of different types of networks, etc.). Communication system 918 may include any number of different communication components. Examples of such components may include radio frequency (RF) transceiver components for accessing wireless voice and / or data networks (e.g., using cellular technologies such as 2G, 3G, 4G, 5G, etc., wireless data technologies such as Wi-Fi, Bluetooth, ZigBee, etc., or any combination thereof), Global Positioning System (GPS) receiver components, and / or other components. In some embodiments, in addition to or instead of components configured for wireless communication, communication system 918 may provide components configured for wired communication (e.g., Ethernet).

[0067] Storage system 920 handles the storage and management of data for computing device 900. Storage system 920 may be implemented by one or more non-transitory machine-readable media configured to store software (e.g., programs, code modules, data structures, instructions, etc.) and store data used for or generated during software operation.

[0068] In this example, the storage system 920 includes an operating system 922, one or more applications 924, an I / O module 926, and a communication module 928. The operating system 922 includes various programs, instruction sets, software components, and / or drivers for controlling and managing general system tasks (e.g., memory management, storage device control, power management, etc.) and facilitating communication between various hardware and software components. The operating system 922 can be various versions of Microsoft Windows, Apple Mac OS, Apple OS X, Apple macOS, and / or Linux operating systems, various commercially available UNIX or UNIX-like operating systems (including but not limited to various GNU / Linux operating systems, Google...). (etc.) and / or mobile operating systems, such as Apple iOS, Windows Phone, Windows Mobile, Android, BlackBerry OS, BlackBerry 10 and Palm OS, WebOS operating system.

[0069] Application 924 may include any number of different applications installed on computing device 900. Examples of such applications may include browser applications, address book applications, contact list applications, email applications, instant messaging applications, word processing applications, Java-enabled applications, encryption applications, digital access control applications, voice identification applications, location services, map applications, music player applications, etc.

[0070] I / O module 926 manages information received via input components (e.g., display 910, sensor 912, and microphone 916) and information output via output components (e.g., display 910 and speaker 914). Communication module 928 facilitates communication with other devices via communication system 918 and includes various software components for processing data received from communication system 918.

[0071] Those skilled in the art will recognize that, Figure 9 The architecture shown is merely an example architecture of computing device 900, and computing device 900 may have additional or fewer components than shown, or different component configurations. Figure 9 The various components shown can be implemented using hardware, software, firmware, or any combination thereof, including one or more signal processing and / or application-specific integrated circuits.

[0072] Figure 10An exemplary system 1000 for implementing the various embodiments described above is illustrated. For example, one of client devices 1002-1008 may be used to implement client device 105, and a cloud computing system may be used to implement computing system 110. As shown, system 1000 includes client devices 1002-1008, one or more networks 1010, and a cloud computing system 1012. Cloud computing system 1012 is configured to provide resources and data to client devices 1002-1008 via network 1010. In some embodiments, cloud computing system 1000 provides resources to any number of different users (e.g., customers, tenants, organizations, etc.). Cloud computing system 1012 may be implemented by one or more computer systems (e.g., servers), virtual machines running on computer systems, or a combination thereof.

[0073] As shown in the figure, cloud computing system 1012 includes one or more applications 1014, one or more services 1016, and one or more databases 1018. Cloud computing system 1000 can provide applications 1014, services 1016, and databases 1018 to any number of different customers in a self-service, subscription-based, elastically scalable, reliable, highly available, and secure manner.

[0074] In some embodiments, the cloud computing system 1000 may be adapted to automatically provision, manage, and track customer subscriptions to services provided by the cloud computing system 1000. The cloud computing system 1000 may provide cloud services via different deployment models. For example, cloud services may be provided under a public cloud model, in which the cloud computing system 1000 is owned by an organization selling cloud services, and the cloud services are made available to the general public or businesses in different industries. As another example, cloud services may be provided under a private cloud model, in which the cloud computing system 1000 operates solely for a single organization and may provide cloud services to one or more entities within that organization. Cloud services may also be provided under a community cloud model, in which the cloud computing system 1000 and the cloud services provided by the cloud computing system 1000 are shared by several organizations in a relevant community. Cloud services may also be provided under a hybrid cloud model, which is a combination of two or more of the different models described above.

[0075] In some cases, any of the applications 1014, services 1016, and databases 1018 available from the cloud computing system 1012 to client devices 1002-1008 via network 1010 is referred to as a "cloud service." Typically, the servers and systems that make up the cloud computing system 1012 are different from the client's internal servers and systems. For example, the cloud computing system 1012 can host applications, and a user of one of the client devices 1002-1008 can subscribe to and use the application via network 1010.

[0076] Application 1014 may include software applications configured to run on cloud computing system 1012 (e.g., a computer system or a virtual machine running on a computer system) and be accessed, controlled, managed, etc., via client devices 1002-1008. In some embodiments, application 1014 may include server applications and / or middleware applications (e.g., HTTP (Hypertext Transfer Protocol) server applications, FTP (File Transfer Protocol) server applications, CGI (Common Gateway Interface) server applications, JAVA server applications, etc.). Service 1016 is a software component, module, application, etc., configured to run on cloud computing system 1012 and provide functionality to client devices 1002-1008 via network 1010. Service 1016 may be a web-based service or an on-demand cloud service.

[0077] Database 1018 is configured to store and / or manage data accessed by application 1014, service 1016, and / or client devices 1002-1008. For example, storage devices 130-140 may be stored in database 1018. Database 1018 may reside on (and / or be located in) a non-transitory storage medium local to cloud computing system 1012, in a storage area network (SAN), or on a non-transitory storage medium located remotely from cloud computing system 1012. In some embodiments, database 1018 may include a relational database managed by a relational database management system (RDBMS). Database 1018 may be a column-oriented database, a row-oriented database, or a combination thereof. In some embodiments, some or all of the data in database 1018 is an in-memory database. That is, in some such embodiments, the data in database 1018 is stored and managed in memory (e.g., random access memory (RAM)).

[0078] Client devices 1002-1008 are configured to run and operate client applications (e.g., web browsers, proprietary client applications, etc.) that communicate with application 1014, service 1016, and / or database 1018 via network 1010. Thus, when application 1014, service 1016, and database 1018 operate on cloud computing system 1000 (e.g., hosted), client devices 1002-1008 can access various functions provided by application 1014, service 1016, and database 1018. Client devices 1002-1008 can be computer system 800 or computing device 900, as described above. Figure 8 and 9 As described. Although System 1000 is shown as having four client devices, it can support any number of client devices.

[0079] Network 1010 can be any type of network configured to use any of a variety of network protocols to facilitate data communication between client devices 1002-1008 and cloud computing system 1012. Network 1010 can be a Personal Area Network (PAN), Local Area Network (LAN), Storage Area Network (SAN), Campus Network (CAN), Metropolitan Area Network (MAN), Wide Area Network (WAN), Global Network (GAN), Intranet, Internet, or any number of networks of different types.

[0080] The foregoing description illustrates various embodiments of the present disclosure and examples of how aspects of the present disclosure can be implemented. The foregoing examples and embodiments should not be considered as limited embodiments, and are presented to illustrate the flexibility and advantages of the various embodiments of the present disclosure as defined by the appended claims. Other arrangements, embodiments, implementations, and equivalents will be apparent to those skilled in the art based on the foregoing disclosure and the following claims, and may be employed without departing from the spirit and scope of the present disclosure as defined by the claims.

Claims

1. A non-transitory machine-readable medium storing a program executable by at least one processing unit of a device, the program comprising a set of instructions for: Receive a selection of a data object relationship definition, wherein the data object relationship definition specifies a set of relationships between multiple data objects managed by multiple applications and the data objects within the multiple data objects; Send a first request for an instance of a data object among the plurality of data objects managed by that application to each application in a first subset of the plurality of applications; Receive a list of candidate instances of data objects from each of the first subsets of the plurality of applications; Based on the list of candidate instance sets of data objects, a set of instance groups of data objects is determined. Each instance group of data objects in the set of instance groups of data objects forms a complete set of instances of related data objects according to the data object relationship definition. as well as The set of data object instance groups is deleted by sending a second request to each application in the second subset of the plurality of applications to delete instances of data objects in the instance group of data objects managed by that application.

2. The non-transitory machine-readable medium of claim 1, wherein the relation in the relation set specifies that a first data object managed by a first application in the plurality of applications is a copy of a second data object managed by a second application in the plurality of applications, wherein the program further includes a set of instructions for: Determine an instance of the first data object in the list of candidate instances of the data object, which is a copy of an instance of the second data object in the list of candidate instances of the data object; and The corresponding copies of the identified first and second data object instances are included in the list of candidate data object instances. The set of instances that determines the data object group is also based on a list of candidate instances of the data object.

3. The non-transitory machine-readable medium according to claim 2, wherein, Only the corresponding copies of the identified first and second data object instances are included in the list of candidate data object instances.

4. The non-transitory machine-readable medium of claim 2, wherein the program further comprises an instruction set for: The list of candidate instances of a data object does not include instances of the first data object that are not copies of instances of the second data object; and The list of candidate instances of the data object does not include instances of the second data object that do not have a copy of the first data object instance.

5. The non-transitory machine-readable medium of claim 1, wherein the relation in the relation set specifies a first data object managed by a first application among the plurality of applications, including a reference to a second data object managed by a second application among the plurality of applications, wherein sending a first request to each application in a first subset of the plurality of applications for an instance of a data object among the plurality of data objects managed by that application includes sending a first request to the first application for an instance of the first data object, wherein receiving a list of candidate instances of a data object from each application in the first subset of the plurality of applications includes receiving a list of first candidate instances of the first data object from the first application.

6. The non-transitory machine-readable medium of claim 5, wherein sending a first request to each application in a first subset of the plurality of applications for an instance of a data object among the plurality of data objects managed by that application further comprises: For each instance of the first data object in the list of the first candidate instance set of the first data object, determine the reference to the instance of the second data object; as well as Send a reference to an instance of the second data object and a request for an instance of the second data object to the second application. The list of candidate instances of receiving data objects from each of the first subsets of the plurality of applications includes a list of second candidate instances of receiving second data objects from the second application.

7. The non-transitory machine-readable medium according to claim 1, wherein, The set of instances of the data objects is a first set of instances of the data objects, wherein the program further includes an instruction set for: Based on a list of candidate instance sets of data objects, a second set of instance groups of data objects is determined, wherein each instance group of data objects in the second set of instance groups of data objects is missing an instance of at least one of the plurality of data objects specified in the data object relation definition; and The second set of instances of the data object is not deleted.

8. A method for deleting related data distributed across applications, comprising: Receive a selection of a data object relationship definition, wherein the data object relationship definition specifies a set of relationships between multiple data objects managed by multiple applications and the data objects within the multiple data objects; Send a first request for an instance of a data object among the plurality of data objects managed by that application to each application in a first subset of the plurality of applications; Receive a list of candidate instances of data objects from each of the first subsets of the plurality of applications; Based on the list of candidate instance sets of data objects, a set of instance groups of data objects is determined. Each instance group of data objects in the set of instance groups of data objects forms a complete set of instances of related data objects according to the data object relationship definition. as well as The set of data object instance groups is deleted by sending a second request to each application in the second subset of the plurality of applications to delete instances of data objects in the data object instance group managed by that application.

9. The method of claim 8, wherein the relation in the relation set specifies that a first data object managed by a first application in the plurality of applications is a copy of a second data object managed by a second application in the plurality of applications, the method further comprising: Determine an instance of the first data object in the set of instances of data objects, which is a copy of an instance of the second data object in the set of instances of data objects; as well as The corresponding copies of the identified instances of the first and second data objects are included in the candidate instance set of the data objects. The set of instances that determines the data object group is also based on the candidate instance set of the data object.

10. The method according to claim 9, wherein, Only the corresponding copies of the identified first and second data object instances are included in the list of candidate data object instances.

11. The method of claim 9, further comprising: The list of candidate instances of a data object does not include instances of the first data object that are not copies of instances of the second data object; as well as The list of candidate instances of the data object does not include instances of the second data object that do not have a copy of the first data object instance.

12. The method of claim 8, wherein the relation in the relation set specifies a first data object managed by a first application among the plurality of applications, including a reference to a second data object managed by a second application among the plurality of applications, wherein sending a first request to each application in a first subset of the plurality of applications for an instance of a data object among the plurality of data objects managed by that application includes sending a first request to the first application for an instance of the first data object, wherein receiving a list of candidate instances of the data object from each application in the first subset of the plurality of applications includes receiving a list of first candidate instances of the first data object from the first application.

13. The method of claim 12, wherein sending a first request for an instance of a data object among the plurality of data objects managed by each application in a first subset of the plurality of applications further comprises: For each instance of the first data object in the list of the first candidate instance set of the first data object, determine the reference to the instance of the second data object; as well as Send a reference to an instance of the second data object and a request for an instance of the second data object to the second application. The list of candidate instances of receiving data objects from each of the first subsets of the plurality of applications includes a list of second candidate instances of receiving second data objects from the second application.

14. The method of claim 8, wherein the first request is sent in parallel to a first subset of the plurality of applications so that the first subset of the plurality of applications determines in parallel a corresponding list of candidate instances of the data object.

15. A system for deleting related data distributed across applications, comprising: A set of processing units; as well as A non-transitory machine-readable medium storing instructions that, when executed by at least one of the group of processing units, cause the at least one processing unit to: Receive a selection of a data object relationship definition, wherein the data object relationship definition specifies a set of relationships between multiple data objects managed by multiple applications and the data objects within the multiple data objects; Send a first request for an instance of a data object among the plurality of data objects managed by that application to each application in a first subset of the plurality of applications; Receive a list of candidate instances of data objects from each of the first subsets of the plurality of applications; Based on the list of candidate instance sets of data objects, a set of instance groups of data objects is determined. Each instance group of data objects in the set of instance groups of data objects forms a complete set of instances of related data objects according to the data object relationship definition. as well as The set of data object instance groups is deleted by sending a second request to each application in the second subset of the plurality of applications to delete instances of data objects in the data object instance group managed by that application.

16. The system of claim 15, wherein the relation in the relation set specifies that a first data object managed by a first application in the plurality of applications is a copy of a second data object managed by a second application in the plurality of applications, wherein the instruction further causes the at least one processing unit to: Determine an instance of the first data object in the list of candidate instances of the data object, which is a copy of an instance of the second data object in the list of candidate instances of the data object; and The corresponding copies of the identified first and second data object instances are included in the list of candidate data object instances. The set of instances that determines the data object group is also based on a list of candidate instances of the data object.

17. The system according to claim 16, wherein, Only the corresponding copies of the identified first and second data object instances are included in the list of candidate data object instances.

18. The system of claim 16, wherein the instructions further cause the at least one processing unit to: The list of candidate instances of a data object does not include instances of the first data object that are not copies of instances of the second data object; and The list of candidate instances of the data object does not include instances of the second data object that do not have a copy of the first data object instance.

19. The system of claim 15, wherein the relation in the relation set specifies a first data object managed by a first application among the plurality of applications, including a reference to a second data object managed by a second application among the plurality of applications, wherein sending a first request to each application in a first subset of the plurality of applications for an instance of a data object among the plurality of data objects managed by that application includes sending a first request to the first application for an instance of the first data object, wherein receiving a list of candidate instances of the data object from each application in the first subset of the plurality of applications includes receiving a list of first candidate instances of the first data object from the first application.

20. The system of claim 15, wherein sending a first request for an instance of a data object among the plurality of data objects managed by each application in a first subset of the plurality of applications further comprises: For each instance of the first data object in the list of the first candidate instance set of the first data object, determine the reference to the instance of the second data object; as well as Send a reference to an instance of the second data object and a request for an instance of the second data object to the second application. The list of candidate instances of receiving data objects from each of the first subsets of the plurality of applications includes a list of second candidate instances of receiving second data objects from the second application.

Citation Information

Patent Citations

  • Method and apparatus for synchronizing of databases connected by wireless interface

    EP1887480A1

  • Configuration-driven applications

    US20210286616A1