Bookmark holding service
By using rule sets to compare document attributes in the document system, the problem of bookmark loss during document modification is solved, bookmarks are automatically retained, and the user experience is improved.
Patent Information
- Application Number
- CN202210059392.3
- Authority / Receiving Office
- CN · China
- Patent Type
- Patents(China)
- Current Assignee / Owner
- Priority Date
- 2021-03-19
- Filing Date
- 2022-01-19
- Publication Date
- 2025-10-24
- Estimated Expiration
- 2042-01-19
AI Technical Summary
In document platforms, existing bookmarks may be lost when users modify documents, requiring users to recreate bookmarks and affecting the efficiency of multi-user collaboration.
Bookmark preservation technology uses a set of rules to compare document attributes and determine whether to retain bookmark identifiers, ensuring that modified documents still contain the original bookmarks.
Bookmarks are automatically saved during document copying and modification, avoiding the need for users to recreate bookmarks and improving the efficiency and continuity of multi-user collaboration.
Smart Images

Figure CN115114889B_ABST
Abstract
Description
TECHNICAL FIELD
[0001] The present disclosure relates to the storage of documents, and in particular, to storing documents associated with bookmarks. BACKGROUND
[0002] Software applications can be used to visualize and analyze large data sets. Such applications can present data, including visualizations of data (e.g., tables, graphs, and charts), in documents such as spreadsheets or graphical documents. The data presented in such documents can be obtained by querying one or more real-time data sources. The documents can be hosted by a “cloud” or “on-premise” computer system platform, such that such documents can be accessed by multiple users.
[0003] Documents can be associated with bookmarks that define particular queries, such that a user can switch between different views or different filters for the data to be visualized. In some cases, multiple users of a document can have access to these bookmarks. In some cases, a user can desire to change an existing document to present new data or modify the presentation of existing data. To avoid interrupting access to the document by other users, the user can create a copy of the existing document (e.g., using a “save as” function). After modifying the copy of the document, the user can save the modified document as the existing document (e.g., using the name or file path of the original document). However, if the document platform uses a unique bookmark identifier to associate a document with its particular set of bookmarks, the existing bookmarks of the original document can be lost (e.g., no longer accessible) when the modified document is saved using the name of the original document. This situation is problematic because the user can need to recreate their bookmarks.
[0004] There is a need for improved systems and methods for storing documents associated with bookmarks. As described further below, the present disclosure addresses these and other problems. SUMMARY
[0005] One embodiment provides a computer system comprising one or more processors and one or more machine-readable media. The one or more machine-readable media are coupled to the one or more processors. The one or more machine-readable media store computer program code comprising a set of instructions executable by the one or more processors. The instructions are executable by the one or more processors to store a first document data object using a first name. The first document data object includes a first bookmark identifier associated with a first set of bookmark data objects. Each bookmark data object of the first set of bookmark data objects includes a set of properties and respective property values. The instructions are also executable by the one or more processors to obtain a request from a first client computer to store a second document data object using a requested name. The requested name is the same as the first name of the first document data object. The instructions are also executable by the one or more processors to determine, in response to the request, whether a stored document data object is stored using the requested name. The first document is stored using the requested name. The instructions are also executable by the one or more processors to determine, in response to determining that the first document is stored using the requested name, whether to include the first bookmark identifier associated with the first set of bookmark data objects in the second document data object based on a set of rules that identify one or more properties of a document data object. The instructions are also executable by the one or more processors to store a modified second document data object that includes the first bookmark identifier based on the set of properties and respective property values of the first set of bookmark data objects and a second set of properties and respective second property values of the second document data object satisfying the set of rules.
[0006] Another embodiment provides one or more non-transitory computer-readable media storing computer program code comprising a set of instructions. The computer program code includes instructions to store a first document data object using a first name. The first document data object includes a first bookmark identifier associated with a first set of bookmark data objects. Each bookmark data object of the first set of bookmark data objects includes a set of properties and respective property values. The computer program code also includes instructions to obtain, from a first client computer, a request to store a second document data object using a requested name, the requested name being the same as the first name of the first document data object. The computer program code also includes instructions to determine, in response to the request, whether a stored document data object is stored using the requested name, the first document being stored using the requested name. The computer program code also includes instructions to determine, in response to determining that the first document is stored using the requested name, whether to include the first bookmark identifier associated with the first set of bookmark data objects in the second document data object based on a set of rules identifying one or more properties of a document data object. The computer program code also includes instructions to store a modified second document data object including the first bookmark identifier based on the set of properties and respective property values of the first set of bookmark data objects and a second set of properties and respective second property values of the second document data object satisfying the set of rules.
[0007] Another embodiment provides a computer-implemented method. The computer-implemented method includes storing a first document data object using a first name. The first document data object includes a first bookmark identifier associated with a first set of bookmark data objects. Each bookmark data object of the first set of bookmark data objects includes a set of properties and respective property values. The method also includes obtaining, from a first client computer, a request to store a second document data object using a requested name, the requested name being the same as the first name of the first document data object. The method also includes determining, in response to the request, whether a stored document data object is stored using the requested name, the first document being stored using the requested name. The method also includes determining, in response to determining that the first document is stored using the requested name, whether to include the first bookmark identifier associated with the first set of bookmark data objects in the second document data object based on a set of rules identifying one or more properties of a document data object. The method also includes storing a modified second document data object including the first bookmark identifier based on the set of properties and respective property values of the first set of bookmark data objects and a second set of properties and respective second property values of the second document data object satisfying the set of rules.
[0008] The following detailed description and accompanying drawings provide a better understanding of the nature and advantages of the present disclosure. BRIEF DESCRIPTION OF DRAWINGS
[0009] Figure 1A diagram showing a client computer system in communication with a document system, according to an embodiment.
[0010] Figure 2 A user interface of a client accessing a document implementing a bookmark, according to an embodiment.
[0011] Figure 3 A user interface of a client after selecting a bookmark, according to an embodiment of the present invention. Figure 2 A user interface of a client after selecting a bookmark, according to an embodiment of the present invention.
[0012] Figure 4 A flow diagram of a computer-implemented method, according to an embodiment.
[0013] Figure 5 A flow diagram of an example workflow implementing bookmark conservation techniques, according to an embodiment.
[0014] Figure 6 A class diagram of an example bookmark conservation service, according to an embodiment.
[0015] Figure 7 A sequence diagram of an example bookmark conservation service, according to an embodiment.
[0016] Figure 8 A diagram showing a document object associated with a bookmark object, according to an embodiment.
[0017] Figure 9 A hardware diagram of a special-purpose computing machine for implementing the systems and methods described herein. DETAILED DESCRIPTION
[0018] In the following description, for the purposes of explanation, numerous examples and specific details are set forth in order to provide a thorough understanding of the present disclosure. These examples and details, however, are not intended to be construed as overly limiting the elements or the overall scope of the claims or the subject matter claimed. It will be apparent that the claimed subject matter can include some or all of the features in these examples alone or in combination, and can also include modifications and equivalents of the features and techniques described herein, based on the language of the claims as they are interpreted by persons skilled in the art.
[0019] In the drawings and their corresponding descriptions, certain elements can be depicted as separate components when in fact they can be combined as a single device or system in some cases. Likewise, certain functions can be described as being performed by one or more elements or components within a system when in fact those functions can be performed by multiple components or elements working in coordination with one another in some cases. Furthermore, hard-wired circuitry can be used in combination with software instructions to implement the techniques described in this disclosure. The described functions can be performed by a custom hardware component containing hard-wired logic for performing the operations, or by any combination of computer hardware and programmed computer components. The embodiments described in this disclosure are not limited to any particular combination of hardware circuitry or software. The embodiments can also be practiced in distributed computing environments where operations are performed by remote data processing devices or systems that are linked through a one or more wired or wireless networks. Furthermore, the terms "first," "second," "third," "fourth," and the like as used herein are not necessarily indicative of an order or sequence. These terms can be used merely to distinguish different objects or elements from one another without specifying any order or sequence.
[0020] As described above, a document (e.g., provided by a cloud or on-premise platform) can include bookmarks associated with a particular query such that a user can switch between different views of data or different filters. These bookmarks can be accessible to all users of the document. In some cases, for example, a user can desire to change an existing document to present a new data source, thereby modifying the presentation of an existing data source. To avoid interrupting access to the document by other users, the user can create a copy of the existing document. After modifying the copy of the document, the user can save the modified document as the existing document. However, if the document platform uses a unique bookmark identifier to store documents, the existing bookmarks of the original document can be lost when the modified document is saved using the name of the existing document. This situation is problematic because the user can need to recreate their bookmarks. This problem can also arise in other similar situations.
[0021] The present disclosure provides systems and methods that retain bookmarks of a first document when a second document (e.g., using the name or file path of the first document) is saved as the first document. Upon receiving a request to save a second document using a first name, it is determined whether another document is saved using that particular name. If such a document exists, a set of rules is used to compare attributes of bookmarks associated with the first document to attributes of the second document. If the set of rules is satisfied, indicating that the bookmarks are still available, the second document is stored using the first name while retaining the bookmarks of the first document.
[0022] This bookmark preservation technique is used so that if a bookmark of a first document is still available for a second document (e.g., a modified document), the bookmark of the first document is preserved, while if the bookmark is not available for the second document, the bookmark is not preserved. This allows a user to copy an original document, modify the copy of the document, and then save the modified document as the original document (e.g., using the name of the original document) without interrupting other users' access to the document or their use of bookmarks in the document, and while still preserving the bookmarks used by the user. The problem of saving a document with a pre-existing name resulting in loss of bookmarks and the solution provided by the bookmark preservation service are described further below.
[0023] Before further describing the bookmark preservation technique, reference is made below to Figure 1 A document system that provides documents including bookmarks is described, and reference is made below to Figure 2 and Figure 3 An example user interface for interacting with documents and their associated bookmarks is described. The bookmark preservation technique can be implemented in a document system as described further below.
[0024] Figure 1 A diagram 100 showing client computer systems 110, 120 in communication with a document system 190 according to an embodiment is shown. The first client computer 110 and the second client computer 120 can be in communication with the document system 190 over a network (e.g., an intranet or the Internet). The client computers 110, 120 can be, for example, desktop computers, laptop computers, or mobile devices. The document system 190 can include one or more server computers that operate together as a system. The document system 190 can be a cloud-based platform that hosts documents for access by the first client computer 110 and the second client computer 120, as well as other client computers, or an on-premises platform. The document system 190 can include a document repository 191 that stores documents that can be provided to users. Documents stored in the document repository 191 can use associated bookmarks stored in a bookmark repository 192. A document can include a unique bookmark identifier that is associated with a particular set of bookmarks in the bookmark repository. An end user can use a client computer 110, 120 to open a document based on a query to a database (such as a data warehouse) of the document system 190. An end user can use bookmarks to configure a document to use certain queries or to set the format or presentation of the document.
[0025] The document system 190 may provide a document that includes a unique bookmark identifier associated with a particular bookmark set. For example, a bookmark technology component may be embedded in a document, and the bookmark technology component may include a unique bookmark identifier. The unique bookmark identifier may identify the bookmark set associated with the document. That is, the bookmark identifier may establish a relationship between the document and the list of bookmarks supported by the document (e.g., the bookmark list discussed below). Figure 2 and Figure 3 During viewing or opening of a document, the bookmark identifier can be used to pull the bookmark associated with the bookmark identifier from the bookmark repository 192.
[0026] Figure 2 A user interface 200 is shown for a client accessing a document implementing bookmarks according to an embodiment. The user interface 200 includes a first visualization 201 showing a bar chart of customer satisfaction by city and comment. The first visualization shows data for two cities (Alexandria and Amsterdam). The user interface 200 also includes a second visualization 202 showing a bar chart of customer satisfaction by comment for the same two cities (Alexandria and Amsterdam). These visualizations are generated by querying one or more data sources (e.g., data sources provided by a database of the document system or a database accessible by the document system). The document can specify query parameters for obtaining data for the visualization, as well as configuration and settings information for presenting the visualization. The document can also be configured to use other types of visualizations (not described in Figure 2 ) to show various other data.
[0027] The user interface also includes a menu bar 203 with tools for navigating the user interface. The menu bar 203 includes a bookmark menu 204 that can be used to access different bookmarks associated with the document. The bookmark menu 204 can also enable the user to view all bookmarks, create a new bookmark, or return to the original document (e.g., a default bookmark).
[0028] In this example, the user of user interface 200 is currently viewing a bookmark named "2 Cities". As shown in the user interface, the "2 Cities" bookmark includes query parameters and configuration information required to render a first visualization 201 and a second visualization 202. The user can select the "4 Cities" bookmark from bookmark menu 204. The result of selecting the "4 Cities" bookmark is shown in FIG. Figure 3 shown.
[0029] Figure 2 The visualization shown in is an example used to illustrate the utility of the bookmark function. In other embodiments, different queries of different data sources can be used, and the data can be visualized in different ways.
[0030] Figure 3 A user interface 300 of a client after selecting a bookmark is shown in accordance with an embodiment of the application. The user interface 300 shows a visualization of data associated with a bookmark named "4 Cities." For example, the user interface 300 can be presented in response to a user selecting the "4 Cities" bookmark from the bookmark menu 204. Figure 2 The user interface 300 includes a first visualization 301 showing a bar chart of customer satisfaction by city and review. The first visualization shows data for four cities, Alexandria, Amsterdam, Austin, and Bangkok. The user interface 300 also includes a second visualization 302 showing a bar chart of customer satisfaction by review for the same four cities, Alexandria, Amsterdam, Austin, and Bangkok.
[0031] Using bookmarks is beneficial because using bookmarks enables a user to easily switch between different views of data without having to manually configure data queries and filters used to obtain the underlying data, and without having to set up the type and configuration of the visualizations.
[0032] Figure 3 The visualizations shown in FIGS. 3A-3B are examples used to illustrate the utility of the bookmarking functionality. In other embodiments, different queries of different data sources can be used, and the data can be visualized in different ways.
[0033] As described above, if the platform provided by the document system uses unique bookmark identifiers to store documents, existing bookmarks of an existing document can be lost when a modified document is saved using the name of the existing document. For example, saving a document using the same name as a previously existing document can overwrite the previously existing document using a different (e.g., new and unique) bookmark identifier, such that the bookmarks of the previously existing document are lost. In this case, the new document having the same name as the previously existing document can not have the bookmarks that the previously existing document had because the new document has a different unique bookmark identifier. For example, the existing bookmarks are associated with the bookmark identifier of the existing document and can not be associated with the new bookmark identifier of the modified document.
[0034] One example situation in which this problem can arise is where several colleagues are using the same document and they decide to modify the document to improve or change the visualization of the data in the document (or for any other reason). To avoid interrupting the use of the document by the other colleagues, the first colleague can use the "save as" functionality to save the existing (first) document as a new (second) document with a different (second) name. The first colleague can then modify the second document without the risk of destroying the first document. For example, the second document can be modified to visualize the data as a pie chart instead of a bar chart. The first colleague can then use the "save as" functionality to save the second document using the name of the existing first document. However, this can be problematic in implementations of document systems that use a unique bookmark identifier for a document, because when the second document is saved using the name of the first document, the second document can include a new unique bookmark identifier. This new unique bookmark identifier can not be associated with any bookmark because it is new.
[0035] An example workflow in which this problem arises is given below:
[0036] 1. Create a first document and save it as "DocA". The first document includes a first unique bookmark identifier "Bidl" (e.g., generated when the document is created).
[0037] 2. Create a first set of bookmarks (Bidl with first bookmark set Al, A2,... An) for the first document. n associated with "DocA".
[0038] 3. Save the first document as a second document "DocB" using the "save as" functionality. The second document includes a second unique bookmark identifier "Bid2" (e.g., generated when the document is created).
[0039] 4. Perform modifications to the second document "DocB".
[0040] 5. Save the second document (DocB) as a third document named the name of the first document "DocA" (overwriting the first document created in step 1) using the "save as" functionality. The third document includes a third unique bookmark identifier "Bid3".
[0041] In this example workflow, none of the bookmarks created in step 2 are associated with "DocA" (even though they can exist in the repository). That is, the third bookmark identifier "Bid3" is not associated with the first bookmark set Al, A2,... An n associated with "DocA".
[0042] This bookmark loss problem can be solved by using the following bookmark preservation technique. When a document is requested to be saved (e.g., using the "Save As" function) using a particular name (or file path), it is determined whether a document already exists with that name (or file path). If such a document exists, a bookmark preservation service (e.g., a process or algorithm) is executed. The bookmark preservation service can use a ruleset to determine, based on the ruleset, whether the bookmarks associated with the existing document are available for the document being requested to be saved. If the bookmarks are available, the bookmark identifiers of the existing document can be included in the document being saved, such that the bookmark identifiers will be associated with the bookmarks of the existing document (which are overwritten). If no existing document with the same name exists, or if the existing document has no associated bookmarks, the bookmark preservation service can not be executed.
[0043] For example, a bookmark (i.e., a bookmark data object) can be associated with a bookmark technology component of the document that created it. The bookmark technology component includes a unique bookmark identifier. The bookmark technology component can be embedded in the document data object. For example, a document "Doc1" can be created with a bookmark component having a unique bookmark identifier "Bidl" for a document named "DocA". In this case, the bookmark identifier for all bookmarks created for "DocA" can be "Bidl". When the document "Doc1" is saved as "DocB", the bookmark identifier can be changed to "Bid2", i.e., a different unique identifier. If the document "Doc1" named "DocB" is saved back as "DocA", the bookmark identifier can be changed to "Bid3", i.e., a different unique identifier. Each time a document is saved under a different name, the bookmark identifier can change to a different unique identifier, as the document platform can be configured (as a software design decision) to use a unique bookmark identifier for each document.
[0044] Since the bookmarks for "Doc1" were originally created with "Bidl", a query to retrieve "Doc1" and "Bid3" bookmarks can return an empty result set. Thus, all bookmarks associated with "DocA" have been lost (i.e., these bookmarks are not associated with the bookmark identifier of the document). To prevent these bookmarks from being lost, a bookmark prevention service (algorithm) is run based on a ruleset before the "Save As" operation is performed. The result of the algorithm using the rules gives a decision of whether to preserve the old "Doc1" bookmark identifier "Bidl" or create a new bookmark identifier "Bid3". If the bookmarks are compatible (e.g., available) with the document being saved based on the rules, the old bookmark identifier can be included in the new "Save As" document. If the bookmarks are not compatible, they need not be preserved and a different bookmark identifier (e.g., "Bid3") can be included in the document. The following references the ruleset used in the bookmark prevention service. Figure 8Further describes the association between document objects and bookmark objects.
[0045] In some embodiments, the bookmark keeping service can use two separate rule files, which can be included when the document platform is installed. In some embodiments, these rule files are XML documents. For example, defaultComponents.xml and customComponents-sample.xml. The defaultComponents.xml rule file contains rules for the default document platform, while customComponents.xml contains rules for customized components that have been created on the document platform for use by client computers. For example, a specific organization using the document platform may have created certain components specifically for their own specific use cases. If a cluster environment is a user of the document platform (rather than a single server), then each server node in the cluster can have these two rule files with the same directory structure.
[0046] The defaultComponents.xml rules file can contain a list of default components (e.g., those provided with the installer) and can be bookmarked along with their various properties that need to be compared between the source and target documents. A simplified example of a default rules file is shown in Listing 1 below:
[0047]
[0048]
[0049] Listing 1
[0050] A custom rules file (customComponents-sample.xml) for an extension deployed by a specific organization can contain a list of installed extension components and can be bookmarked along with various properties that need to be compared between source and target documents. This sample rules file can be edited by an organization based on the configuration of its extension. A simplified example of a custom rules file is shown in Listing 2 below:
[0051]
[0052] Listing 2
[0053] These rules files can be used to determine whether the bookmarks of the target document being overwritten are compatible with the source document being saved, as described below. If the bookmarks are compatible, they may be preserved for use with the source document. This bookmark preservation service is beneficial because users of the document may not have to recreate their bookmarks if they were lost during a "save as" operation.
[0054] Figure 4 A flowchart 400 of a computer-implemented method according to an embodiment is shown. The method applies the bookmark preservation techniques described herein. The method can be implemented by a document server such as a document system (e.g., document system 190). The document system can include one or more server computers that operate together as a system. The document system can be a cloud-based platform that hosts documents for access by multiple client computers or an on-premises platform.
[0055] At 401, the method stores a first document data object using a first name. The document can present data formatted as a spreadsheet or a graphical document that includes visualizations (e.g., tables, graphs, and charts). The document can include data obtained from one or more real-time data sources. The data of the document can be obtained by querying the data sources. The documents can be hosted by a cloud platform or an on-premises platform such that they can be accessed by multiple users.
[0056] The first document data object includes a first bookmark identifier associated with a first set of bookmark data objects. Each bookmark data object of the first set of bookmark data objects includes a set of properties and respective property values. The set of properties and respective property values can indicate a particular set of data to be visualized in the first document and a configuration for visualizing the particular set of data. For example, a property can indicate one or more queries for retrieving data to be visualized.
[0057] At 402, the method obtains a request from a first client computer to store a second document data object using a requested name. The first client computer can make the request over a network. For example, the request can be a request to publish a document to a document server such that other client computers can access the document. For example, the client computer can be a desktop computer, a laptop computer, or a mobile device.
[0058] At 403, the method determines whether a stored document data object is stored using the requested name. Each document can include a unique bookmark identifier that is different from the bookmark identifiers of other documents. However, when one document is saved using the same name as an existing document, a user can expect bookmarks to be preserved. Accordingly, the method determines whether there is such an existing document. In some embodiments, the requested name is the same as the first name of the first document data object, and the first document is stored using the requested name.
[0059] At 404, the method determines whether to include a first bookmark identifier associated with the first bookmark data object set in the second document data object based on a ruleset. The ruleset can indicate whether bookmarks are available for the second document. The determination can be made in response to determining that the first document was stored using the requested name. In some embodiments, determining whether to include the first bookmark identifier is based on a comparison of the attribute set and respective attribute values of the first bookmark data object set to second attributes and respective second attribute values of the second document data object. In some embodiments, the ruleset is further based on attributes of a custom component created for the first client computer.
[0060] At 405, the method stores the modified second document data object including the first bookmark identifier. The second document data object can include the first bookmark identifier based on the attribute set and respective attribute values of the first bookmark data object set and the second attributes and respective second attribute values of the second document data object satisfying the ruleset.
[0061] In some embodiments, the method can provide the modified second document data object including the first bookmark identifier to the second client computer. The modified second document data object includes parameters for one or more queries to obtain data for one or more visualizations. The first bookmark data object set can be used by the second client computer to change the visualizations of the modified second document data object.
[0062] In some embodiments, the method can also obtain a second request from the second client computer to store a third document data object using a second requested name. The second requested name is the same as a fourth name of a fourth document data object stored using the fourth name. The fourth document data object includes a fourth bookmark identifier. In this embodiment, the method can store the third document data object including a third bookmark identifier based on a fourth attribute set and respective fourth attribute values of a fourth bookmark data object set associated with the fourth bookmark identifier and third attributes and respective third attribute values of the third document data object not satisfying a second ruleset.
[0063] Features and advantages of the method include, in cases where bookmarks are available for the second document according to the ruleset, preserving the first bookmark data object set of the document when the document is overwritten by the second document using the “save as” functionality.
[0064] Figure 5 A flowchart 500 illustrating an example workflow to implement a bookmark preservation technique according to an embodiment is shown. The workflow can be implemented by a document server such as a document system (e.g., document system 190). The document system can include one or more server computers operating together as a system. The document system can be a cloud-based platform or an “on-premise” platform that hosts documents for access by multiple client computers.
[0065] The workflow begins at 501 with the creation of a first document named "Doc A" at 502. Then, at 503, the workflow creates a second document named "Doc B". Then, at 504, the second document "Doc B" is saved as "Doc A". In one example, "Doc B" can be a copy of "Doc A" that has been modified and is now overwriting the original "Doc A".
[0066] At 505, the workflow determines whether "Doc A" exists. If "Doc A" does not exist (decision: no), the workflow continues at 508 with the creation of a new bookmark identifier in "Doc A" such that bookmarks associated with the old bookmark identifier in the original "Doc A" are lost. If the document "Doc A" does exist at 505 (decision: yes), the workflow continues to run a bookmark preservation service 506. An example class diagram of the bookmark preservation service is shown in Figure 6 and an example sequence diagram of the bookmark preservation service operating is shown in Figure 6 .
[0067] By running the bookmark preservation service, a determination can be made at 507 whether the bookmark identifier of "Doc A" should be preserved. The determination can be based on a set of rules that indicate whether the bookmark identifier of "Doc A" is associated with bookmarks that can be used for the second document. If the decision at 507 is "no", the workflow continues at 508 with the creation of a new bookmark identifier in "Doc A" such that bookmarks associated with the old bookmark identifier in the original "Doc A" are lost, and the workflow stops at 501.
[0068] If the decision at 507 is "yes", the workflow will preserve the bookmark identifier of "Doc A" at 509 such that bookmarks associated with the bookmark identifier can be used for the second document. The workflow then stops at 510.
[0069] The bookmark preservation service can be implemented by software executed by a document system. Figure 6 A class diagram 600 of an example bookmark preservation service according to an embodiment is shown. The bookmark preservation service includes a "BookmarkRuleEngineBase" class 601, a "BookmarkXmlRuleEngine" class 602, a "BookmarkRuleEngineFactory" class 603, an "IBookmarkRuleEngine" class 604, and an "IBookMarkRule" class 605, a "BookmarkRuleImpl" class 606, an "AppModelImpl" class 607, and an "IAppModel" class 608.
[0070] BookmarkRuleEngineFactory class 603 includes a getEngine() operation that returns a rule engine, and it depends on the BookmarkXmlRuleEngine class 602.
[0071] The BookmarkXmlRuleEngine class 602 inherits the BookmarkRuleEngineBase class 601 and the BookmarkRuleEngineFactory class 603. The BookmarkXmlRuleEngine class 602 includes validate(), buildRules(), getRuleByComponentType(), and isCommonBookmarkEntriesExist() operations.
[0072] The BookmarkRuleEngineBase class 601 includes a list of rules, and includes buildRules(), getRuleByComponentType(), getRules(), setRules(), setSourceAppModel(), and setTargetAppModel() operations.
[0073] The BookmarkRuleImpl class 606 is part of (i.e., an aggregation relationship) the BookmarkRuleEngineBase class 601, and it inherits from the IBookMarkRule class 605. The BookmarkRuleImpl class 606 includes a type, a list of properties, and getProperties(), setProperties(), getType(), and setType() operations.
[0074] The AppModelImpl class 607 is part of (i.e., an aggregation relationship) the BookmarkRuleEngineBase class 601, and it depends on the AppModelImpl class 607. The AppModelImpl class 607 includes a type, a list of properties, a name, and getBookmarkEntries(), getProperties(), setProperties(), getPropertyValue(), getType(), setType(), getName(), and setName() operations.
[0075] Reference is now made to the following figures: Figure 7 These classes are further described. These classes are further described.
[0076] Figure 7 A sequence diagram 700 of an exemplary bookmark keeping service according to an embodiment is shown. As described above, the bookmark keeping service can be run when a document is saved as another document. The document being saved can be referred to as the "source" and the document to be overwritten can be referred to as the "target". The word "app" or "application" refers to a document because a document can include one or more "apps" or "applications".
[0077] The sequence diagram depicts the above Figure 6 The saved operation 701, BookmarkRuleEngineFactory class 702, BookmarkXmlRuleEngine class 703, Dictionary <bookmarkruleimpl>Class 704 and Dictionary <appmodelimpl>The functions of class 705.
[0078] The bookmark persistence technique includes building a rules engine and obtaining the rules. For example, the saveAs operation 701 calls the getEngine() operation of the BookmarkRuleEngineFactory 702. The BookmarkRuleEngineFactory 702 creates a RuleEngine object and executes the buildRules() operation to build the rules, which are a list of BookmarkRule objects. The rule objects are returned to the BookmarkRuleEngineFactory 702, which then returns them to the saveAs operation 701. Listing 1 above shows an example of the rules.
[0079] The bookmark persistence technique also includes obtaining model objects for the source and target documents. For example, the saveAs operation 701 then sends a request to the Dictionary <appmodelimpl>705, the Dictionary <appmodelimpl>705 The source document model object is returned. The SaveAs operation 701 then calls the BookmarkXmlRuleEngine 703 SetSourceAppModel() operation to set the source document. The SaveAs operation 701 then sends a request to the Dictionary <appmodelimpl>705, the Dictionary <appmodelimpl>705 Return the target document model object. The SaveAs operation 701 then calls the setTargetAppModel() operation of the BookmarkXmlRuleEngine 703. Further description and examples of the information in the source and target objects are given in Listing 3, Listing 4, Table 2, and Table 3 below.
[0080] The bookmark preservation technique also includes a validate component and attributes to determine if common bookmarks exist and if the common bookmarks have been changed. For example, the SaveAs operation 701 calls the Validate() operation of the BookmarkXmlRuleEngine 703. The BookmarkXmlRuleEngine 703 executes the isCommonBookmarkEntriesExist() operation, which calls the Dictionary <bookmarkruleimpl>getName() of class 704, get Dictionary <appmodelimpl>src() of class 705, and get Dictionary <appmodelimpl>target() of class 705. Then, BookmarkXmlRuleEngine 703 executes getRuleByComponentType(), and the rule list is obtained from Dictionary <bookmarkruleimpl>Class 704 returns.
[0081] When the public bookmark exists, the BookmarkXmlRuleEngine 703 performs a getProperties() operation on each rule in the rule list. The getProperties() operation calls the Dictionary <appmodelimpl>The getPropertyValue() of class 705 is called to obtain the source value ("srcvalue") of the property, and getPropertyValue() is called to obtain the target value ("targetvalue") of the property. Thus, for each property, the value of the property for the source (e.g., the saved document) and the value of the property for the target (e.g., the document to be overwritten) are obtained. The ruleProperties() operation then determines whether the source value is equal to the target value ("srcValue == targetValue"). If the values are equal, the operation returns "true" to the save as operation 701. If the values are not equal ("srcValue!= targetValue"), the operation returns "false" to the save as operation 701. If there are no properties to compare, "true" is returned to the save as operation 701.
[0082] Thus, the property values of the source and target documents are compared to each other according to the rules to determine whether certain property values are changed. If the property values are not changed (i.e., they are equal), "true" is returned. Since the properties are not changed, the source document can use the bookmarks associated with the target document. Thus, the bookmarks can be preserved by including the bookmark identifiers of the target document in the source document. This is beneficial because the users of the document do not need to recreate their bookmarks as described above.
[0083] As described above, a document (e.g., a document data object) can be associated with a bookmark (e.g., a bookmark data object). Figure 8 A diagram 800 of a document object 801 associated with a bookmark object 801 according to an embodiment is shown. The "document ID" identifies the primary key (PK) of the document object 801, which can be associated with multiple (n) bookmark objects 802 using the "bookmark ID" primary key.
[0084] The document object 801 includes a document name, a bookmark identifier, a bookmark ID, a creation date, an update date, and other attributes. The bookmark object 802 includes a bookmark name, a bookmark identifier, a creation date, an update date, and other attributes.
[0085] Figure 9 A hardware diagram of a special purpose computing machine for implementing the document preservation techniques described herein is shown. The following hardware description is merely one example. It should be understood that various computer topologies can be used to implement the above-described techniques. Figure 9 The illustrated hardware is specifically configured to implement the personnel recruitment system described herein.
[0086] In Figure 9 A computer system 910 is shown in FIG. 9. The computer system 910 includes a bus 905 or other communication mechanism for communicating information, and a processor 901 coupled with the bus 905 for processing information. The computer system 910 also includes a memory 902, coupled to the bus 905, for storing information and instructions to be executed by the processor 901, including, for example, information and instructions for implementing some of the above-described techniques. The memory can also be for storing temporary variables or other intermediate information during execution of information and instructions. A possible implementation of the memory is with a random access memory (RAM), read only memory (ROM), or both, although other implementations can also be used. A storage device 903 is provided and can be used for storing information and instructions. Common forms of storage devices include, for example, a floppy disk, a flexible disk, hard disk, solid state drive, magnetic tape, or other magnetic medium, an optical medium, a CD-ROM, DVD, any other physical medium with patterns of holes, a RAM, a PROM, and EPROM, a FLASH- EPROM, any other flash memory, carrier wave signal, a USB storage card, or any other medium from which a computer can read. The storage device 903 can include source code, binary code, or software files for implementing the above-described techniques, such as the processes described above. Both the storage device 903 and the memory 902 are examples of non-transitory computer readable storage media.
[0087] The computer system 910 can be coupled via the bus 905 to a display 912, for displaying information to a computer user. Input devices 911, such as a keyboard, touchscreen, and / or a mouse, are coupled to the bus 905 for communicating information and command selections to the processor 901. The combination of these components allows a user to communicate with the system. In some systems, for example, the bus 905 represents multiple busses, such as a bus for transmitting information and a separate bus for transmitting instructions.
[0088] The computer system also includes a network interface 904 coupled to the bus 905. The network interface 904 can provide two-way data communication between the computer system 910 and a network 920. For example, the network interface 904 can be a wireless or wired connection, for example, through which the computer system 910 can send and receive information over a network, such as a local area network, an intranet, a cellular network, or the Internet. In the Internet example, for example, a browser can access data and features that can reside on a back-end system that can reside on multiple different hardware servers 931-934 across a network. For example, the servers 931-934 can be part of a cloud computing environment.
[0089] Example
[0090] An example bookmarking technique using a sequence of Figure 7 is provided below. The example involves three documents, "Doc A", "Doc B", and "Doc C", with bookmark identifiers and bookmark content, as shown in Table 1 below.
[0091]
[0092] Table 1
[0093] In one example, a document named Doc A has previously been saved as Doc B, and now Doc B is being saved as Doc A. In this example, the bookmark preservation techniques described above can be used to determine whether to preserve the bookmark identifiers.
[0094] The document object for Doc A can include metadata that is persistent in the file. The metadata for Doc A is shown in Listing 3 below. This metadata has been simplified for purposes of illustrating the bookmark preservation techniques discussed herein.
[0095]
[0096]
[0097]
[0098] Listing 3
[0099] The metadata for Doc A in Listing 3 shows the components of the document, including a text component named "SAMPLE TEXT BOOKMARKED" (of type "TEXT COMPONENT"), a cross-tab component named "CROSSTAB 1" (of type "CROSSTAB COMPONENT"), another text component named "SAMPLE TEXT" (of type "TEXT COMPONENT"), and a button component named "CREATEBOOKMARK" (of type "BUTTON COMPONENT"). Each of these components can have certain properties specified by name and value, as shown in Listing 3. For example, the component "SAMPLE TEXT BOOKMARKED" has a "TEXT" property with a value of "Sample text", a "LEFT_MARGIN" property with a value of "129", and a "TOP_MARGIN" property with a value of "67". The metadata for Doc A also includes a bookmark component named "BOOKMARKS 1". The bookmark component for Doc A has a bookmark identifier of "bd6aec5a-466b-404e-9235-6b3b22a17d3b". The bookmark component includes bookmarks for "DS 1", "SAMPLE TEXT BOOKMARKED", and "CROSSTAB 1". As shown in Listing 3, not all of the components in the metadata are bookmarked.
[0100] As described above, in the present example, Doc A is saved as Doc B, and now Doc B is saved as Doc B. However, some of the properties in Doc B can have been changed, so as to be different from the properties in Doc A. Listing 4 below shows the "SAMPLE_TEXT_BOOKMARKED" component of Doc B.
[0101]
[0102] Listing 4
[0103] Comparing the properties in Doc A (Details 3) and Doc B (Details 4) shows that the "TEXT" property of the "SAMPLE_TEXT_BOOKMARKED" component has changed from "Sample text" in Doc A to "Sample text_New" in Doc B, and the "WIDTH" property, which was not present in Doc A, has been added to the "SAMPLE_TEXT_BOOKMARKED" component in Doc B. In the present example, when the document is "saved as" a different document, other than the bookmark identifier has changed, other properties of other components can not change, as described above. In the present example, the bookmark component of Doc A has the identifier "bd6aec5a-466b-404e-9235-6b3b22a17d3b", while the bookmark component of Doc B has a different identifier "5e4d4e9c-16cb-412e-b60b-d027df9f5b31".
[0104] In the present example, the rules are the rules listed in Listing 1 above. As shown in Listing 1, the components included in the rules are "QUERY_DATA_SOURCE", "CROSSTAB_COMPONENT", "com_ip_bi_VizFrame", and "com_ip_bi_Shape". However, these components have not changed in Doc B as compared to Doc A. The component that has changed in Doc B is the "SAMPLE_TEXT_BOOKMARKED" component of type "TEXT_COMPONENT", which is not listed in the rules. Since the "TEXT_COMPONENT" type is not listed in the rules, changes to this component can be made while still being able to preserve the bookmark. Thus, when Doc B is saved back to Doc A with these modifications, the bookmark identifier "bd6aec5a-466b-404e-9235-6b3b22a17d3b" of Doc A can be preserved.
[0105] Reference Figure 7 When Doc B is saved as Doc A, determining whether to preserve the bookmark identifier may involve the following operations:
[0106] 1.SetSourceAppModel(<content of DocB.txt> )
[0107] 2.SetTargetAppModel(<content of DocA.txt> )
[0108] 3.IsCommonBookmarksExists()→True
[0109] 4. Perform the operations in Table 2 on DS1, CROSSTAB_1, and SAMLE_TEXT_BOOKMARKED
[0110]
[0111]
[0112]
[0113] Table 2
[0114] In another example, a different document, Doc C, is saved as Doc A. In this example, the properties of the components listed in the rule in Detail 1 are changed in Doc C compared to Doc A. In this case, the bookmark identifier of Doc A may not be preserved, and a new bookmark identifier may be generated and used for Doc C when Doc C is saved as Doc A. Figure 7 When Doc C is saved as Doc A, determining whether to preserve the bookmark identifier may involve the following operations:
[0115] 1.SetSourceAppModel(<content of DocC.txt> )
[0116] 2.SetTargetAppModel(<content of DocA.txt> )
[0117] 3.IsCommonBookmarksExists()→True
[0118] 4. Perform the operations in Table 3 on DS1 and CROSSTAB_1
[0119]
[0120]
[0121]
[0122] Table 3
[0123] As shown in Table 3 above, the QUERY_DATA_SOURCE component in Doc C is different from the QUERY_DATA_SOURCE component in Doc A. For example, the "DATA_SOURCE_NAME" attribute is "Z_COUNTRY" in Doc C, while the attribute is "OD_NW_C01" in Doc A. As shown in the rule in Listing 1, the "DATA_SOURCE_NAME" attribute is included in the rule. Since the attribute is listed in the rule and its value has changed, the bookmark preservation service can determine that the bookmark identifier for Doc A should not be preserved and can generate a new bookmark identifier.
[0124] Additional Embodiments
[0125] Additional embodiments of the present disclosure are further described below.
[0126] One embodiment provides a computer system comprising one or more processors and one or more machine-readable media. The one or more machine-readable media are coupled to the one or more processors. The one or more machine-readable media store computer program code comprising a set of instructions executable by the one or more processors. The instructions are executable by the one or more processors to store a first document data object using a first name. The first document data object includes a first bookmark identifier associated with a first set of bookmark data objects. Each bookmark data object of the first set of bookmark data objects includes a set of attributes and respective attribute values. The instructions are also executable by the one or more processors to obtain a request from a first client computer to store a second document data object using a requested name. The requested name is the same as the first name of the first document data object. The instructions are also executable by the one or more processors to determine whether a stored document data object is stored using the requested name in response to the request. The first document is stored using the requested name. The instructions are also executable by the one or more processors to determine whether to include the first bookmark identifier associated with the first set of bookmark data objects in the second document data object based on a set of rules that identify one or more attributes of a document data object in response to determining that the first document is stored using the requested name. The instructions are also executable by the one or more processors to store a modified second document data object that includes the first bookmark identifier based on the set of attributes and respective attribute values of the first set of bookmark data objects and a second set of attributes and respective second attribute values of the second document data object satisfying the set of rules.
[0127] In some embodiments of the computer system, the computer program code further includes a set of instructions for providing, to the second client computer, a modified second document data object that includes the first bookmark identifier, wherein the first bookmark data object set is usable by the second client computer to alter a visualization of the modified second document data object.
[0128] In some embodiments of the computer system, determining whether to include the first bookmark identifier is based on a comparison of a set of properties and corresponding property values of the first bookmark data object set to a second property of the second document data object and a corresponding second property value.
[0129] In some embodiments of the computer system, the set of properties and corresponding property values indicate a particular set of data to be visualized in the first document and a configuration for visualizing the particular set of data.
[0130] In some embodiments of the computer system, the modified second document data object includes parameters for one or more queries to obtain data for one or more visualizations of the data.
[0131] In some embodiments of the computer system, the computer program code further includes a set of instructions for obtaining, from the second client computer, a second request to store a third document data object using a second request name, wherein the second request name is the same as a fourth name of a fourth document data object stored using the fourth name, wherein the fourth document data object includes a fourth bookmark identifier. In such embodiments, the computer program code can further include instructions to store the third document data object including a third bookmark identifier based on a fourth set of properties and corresponding fourth property values of a fourth bookmark data object set associated with the fourth bookmark identifier and a third property of the third document data object and a corresponding third property value not satisfying a second set of rules.
[0132] In some embodiments of the computer system, the set of rules is further based on a property of a custom component created for the first client computer.
[0133] Another embodiment provides one or more non-transitory computer-readable media storing computer program code comprising a set of instructions. The computer program code includes instructions to store a first document data object using a first name. The first document data object includes a first bookmark identifier associated with a first set of bookmark data objects. Each bookmark data object of the first set of bookmark data objects includes a set of properties and respective property values. The computer program code further includes instructions to obtain, from a first client computer, a request to store a second document data object using a requested name, the requested name being the same as the first name of the first document data object. The computer program code further includes instructions to determine, in response to the request, whether a stored document data object is stored using the requested name, the first document being stored using the requested name. The computer program code further includes instructions to determine, in response to determining that the first document is stored using the requested name, whether to include the first bookmark identifier associated with the first set of bookmark data objects in the second document data object based on a set of rules that identify one or more properties of a document data object. The computer program code further includes instructions to store a modified second document data object including the first bookmark identifier based on the set of properties and respective property values of the first set of bookmark data objects and a second set of properties and respective second property values of the second document data object satisfying the set of rules.
[0134] In some embodiments of the computer-readable medium, the computer program code further includes a set of instructions to provide the modified second document data object including the first bookmark identifier to a second client computer, wherein the first set of bookmark data objects are usable by the second client computer to alter a visualization of the modified second document data object.
[0135] In some embodiments of the computer-readable medium, determining whether to include the first bookmark identifier is based on a comparison of the set of properties and respective property values of the first set of bookmark data objects and a second set of properties and respective second property values of the second document data object.
[0136] In some embodiments of the computer-readable medium, the set of properties and respective property values indicate a particular set of data to be visualized in the first document and a configuration for visualizing the particular set of data.
[0137] In some embodiments of the computer-readable medium, the modified second document data object includes parameters for one or more queries to obtain data for one or more visualizations of the data.
[0138] In some embodiments of the computer-readable medium, the computer program code further includes a set of instructions to obtain, from the second client computer, a second request to store a third document data object using a second request name, wherein the second request name is the same as a fourth name of a fourth document data object stored using the fourth name, and wherein the fourth document data object includes a fourth bookmark identifier. In such embodiments, the computer program code can further include a set of instructions to store the third document data object including the third bookmark identifier based on the fourth set of properties and corresponding fourth property values of the fourth set of bookmark data objects associated with the fourth bookmark identifier and the third properties and corresponding third property values of the third document data object not satisfying the second set of rules.
[0139] In some embodiments of the computer-readable medium, the set of rules is further based on properties of a custom component created for the first client computer.
[0140] Another embodiment provides a computer-implemented method. The computer-implemented method includes storing a first document data object using a first name. The first document data object includes a first bookmark identifier associated with a first set of bookmark data objects. The first set of bookmark data objects includes a set of properties and corresponding property values. The method further includes obtaining, from a first client computer, a request to store a second document data object using a requested name, the requested name being the same as the first name of the first document data object. The method further includes, in response to the request, determining whether a stored document data object is stored using the requested name, the first document being stored using the requested name. The method further includes, in response to determining that the first document is stored using the requested name, determining whether to include the first bookmark identifier associated with the first set of bookmark data objects in the second document data object based on a set of rules that identify one or more properties of a document data object. The method further includes storing a modified second document data object including the first bookmark identifier based on the set of properties and corresponding property values of the first set of bookmark data objects and a second set of properties and corresponding second property values of the second document data object satisfying the set of rules.
[0141] In some embodiments of the computer-implemented method, the method further includes providing the modified second document data object including the first bookmark identifier to a second client computer, wherein the first set of bookmark data objects is usable by the second client computer to alter a visualization of the modified second document data object.
[0142] In some embodiments of the computer-implemented method, determining whether to include the first bookmark identifier is based on a comparison of the set of properties and corresponding property values of the first set of bookmark data objects and the second set of properties and corresponding second property values of the second document data object.
[0143] In some embodiments of the computer-implemented method, the set of properties and corresponding property values indicate a particular data set to be visualized in the first document and a configuration for visualizing the particular data set.
[0144] In some embodiments of the computer-implemented method, the modified second document data object includes parameters for one or more queries to obtain data for one or more visualizations of the data.
[0145] In some embodiments of the computer-implemented method, the method further includes obtaining, from the second client computer, a second request to store a third document data object using a second request name, wherein the second request name is the same as a fourth name of a fourth document data object stored using the fourth name, and wherein the fourth document data object includes a fourth bookmark identifier. In such embodiments, the method can further include storing the third document data object including the third bookmark identifier based on a fourth set of properties and corresponding fourth property values of a fourth bookmark data object associated with the fourth bookmark identifier and the third set of properties and corresponding third property values of the third document data object not satisfying the second set of rules.
[0146] The above description illustrates various embodiments of the present disclosure and examples of how aspects of a particular embodiment can be implemented. The above examples should not be considered to be exclusive embodiments and are presented to illustrate the flexibility and advantages of certain embodiments defined by the claims that follow. Based on the above disclosure and the following claims, other arrangements, embodiments, implementations, and equivalents can be employed without departing from the scope of the disclosure as defined by the claims.< / appmodelimpl> < / bookmarkruleimpl> < / appmodelimpl> < / appmodelimpl> < / bookmarkruleimpl> < / appmodelimpl> < / appmodelimpl> < / appmodelimpl> < / appmodelimpl> < / appmodelimpl> < / bookmarkruleimpl>
Claims
1. A computer system comprising: one or more processors; and one or more machine-readable media coupled to the one or more processors and storing computer program code comprising sets of instructions executable by the one or more processors to: store a first document data object using a first name, the first document data object comprising a first bookmark identifier associated with a first set of bookmark data objects, each bookmark data object of the first set of bookmark data objects comprising a first set of properties and respective property values; store a second document data object using a second name, the second document data object derived from the first document data object and comprising a second bookmark identifier associated with a second set of bookmark data objects, each bookmark data object of the second set of bookmark data objects comprising a second set of properties and respective property values; obtain, from a first client computer, a request to store a third document data object having third document data using a requested name, the requested name being the same as the first name of the first document data object, wherein the third document data object is derived from the second document data object and comprises a third bookmark identifier associated with a third set of bookmark data objects, each bookmark data object of the third set of bookmark data objects comprising a third set of properties and respective property values; in response to the request, determine whether a stored document data object is stored using the requested name, the first document being stored using the requested name; in response to determining that the first document data object is stored using the requested name, determine, based on a set of rules, whether to include the first bookmark identifier associated with the first set of bookmark data objects in the third document data object, the set of rules identifying one or more properties of a document data object that prevent the first bookmark identifier from returning a blank result set when associated with the third document data object, wherein determining whether to include the first bookmark identifier is based on a comparison of the first set of properties and respective property values of the first set of bookmark data objects to the third properties and respective third property values of the third document data object to identify one or more third properties that changed compared to the first properties; and in response to determining, based on the set of rules, that the third properties and respective third property values of the third document data object did not change compared to the first set of properties and respective property values of the first set of bookmark data objects, store a modified third document data object that includes the first bookmark identifier. the computer program code further comprises sets of instructions executable by the one or more processors to:
2. The computer system of claim 1, wherein, provide, to a second client computer, the modified third document data object that includes the first bookmark identifier, the first set of bookmark data objects usable by the second client computer to change a visualization of the modified third document data object. the set of properties and respective property values indicate a particular set of data to be visualized in the first document and a configuration for visualizing the particular set of data.
3. The computer system of claim 1, wherein, the modified third document data object includes parameters for one or more queries to obtain data for one or more visualizations of the data.
4. The computer system of claim 1, wherein, 5. The computer system of claim 1, wherein, The computer program code further includes a set of instructions executable by one or more processors to: obtain, from a second client computer, a second request to store a fourth document data object using a second request name, the second request name being the same as a fifth name of a fifth document data object stored using a fifth name, the fifth document data object including a fifth bookmark identifier; and store the fourth document data object including the fourth bookmark identifier based on the fifth set of properties and corresponding fifth property values of the fifth set of bookmark data objects associated with the fifth bookmark identifier and the fourth properties and corresponding fourth property values of the fourth document data object not satisfying a second set of rules.
6. The computer system of claim 1, wherein, The set of rules is further based on properties of a custom component created for the first client computer.
7. One or more non-transitory computer-readable media storing computer program code comprising a set of instructions for: storing a first document data object using a first name, the first document data object including a first bookmark identifier associated with a first set of bookmark data objects, each bookmark data object of the first set of bookmark data objects including a first set of properties and corresponding property values; storing a second document data object using a second name, the second document data object derived from the first document data object and including a second bookmark identifier associated with a second set of bookmark data objects, each bookmark data object of the second set of bookmark data objects including a second set of properties and corresponding property values; obtaining, from a first client computer, a request to store a third document data object having third document data using a requested name, the requested name being the same as the first name of the first document data object, wherein the third document data object is derived from the second document data object and includes a third bookmark identifier associated with a third set of bookmark data objects, each bookmark data object of the third set of bookmark data objects including a third set of properties and corresponding property values; responsive to the request, determining whether a stored document data object is stored using the requested name, the first document being stored using the requested name; responsive to determining that the first document data object is stored using the requested name, determining, based on a set of rules, whether to include the first bookmark identifier associated with the first set of bookmark data objects in the third document data object, the set of rules identifying one or more properties of a document data object that prevent the first bookmark identifier from returning a blank result set when associated with the third document data object, wherein determining whether to include the first bookmark identifier is based on a comparison of the first set of properties and corresponding property values of the first set of bookmark data objects to the third properties and corresponding third property values of the third document data object to identify one or more third properties that are changed compared to the first properties; and responsive to determining, based on the set of rules, that the third properties and corresponding third property values of the third document data object are not changed compared to the first set of properties and corresponding property values of the first set of bookmark data objects, storing the modified third document data object including the first bookmark identifier.
8. The non-transitory computer-readable medium of claim 7, wherein, The computer program code further includes a set of instructions for: providing the second client computer with the modified third document data object including the first bookmark identifier, the first bookmark data object set usable by the second client computer to alter a visualization of the modified third document data object.
9. The non-transitory computer-readable medium of claim 7, wherein, The set of properties and corresponding property values indicate a particular set of data to be visualized in the first document and a configuration for visualizing the particular set of data.
10. The non-transitory computer-readable medium of claim 7, wherein, The modified third document data object includes parameters for one or more queries to obtain data for one or more visualizations of the data.
11. The non-transitory computer-readable medium of claim 7, wherein, The computer program code further includes a set of instructions for: obtaining from the second client computer a second request to store a fourth document data object using a second request name, the second request name being the same as a fifth name of a fifth document data object stored using the fifth name, the fifth document data object including a fifth bookmark identifier; and based on a fifth set of properties and corresponding fifth property values of a fifth bookmark data object set associated with the fifth bookmark identifier and a fourth set of properties and corresponding fourth property values of the fourth document data object not satisfying a second set of rules, storing the fourth document data object including the fourth bookmark identifier.
12. The non-transitory computer-readable medium of claim 7, wherein, The set of rules is further based on properties of a custom component created for the first client computer.
13. A computer-implemented method comprising: storing a first document data object using a first name, the first document data object including a first bookmark identifier associated with a first bookmark data object set, each bookmark data object of the first bookmark data object set including a first set of properties and corresponding property values; storing a second document data object using a second name, the second document data object derived from the first document data object and including a second bookmark identifier associated with a second bookmark data object set, each bookmark data object of the second bookmark data object set including a second set of properties and corresponding property values; obtaining from a first client computer a request to store a third document data object having third document data using a requested name, the requested name being the same as the first name of the first document data object, wherein the third document data object is derived from the second document data object and includes a third bookmark identifier associated with a third bookmark data object set, each bookmark data object of the third bookmark data object set including a third set of properties and corresponding property values; in response to the request, determining whether a stored document data object is stored using the requested name, the first document being stored using the requested name; responsive to determining that the first document data object is stored using the requested name, determining whether to include the first bookmark identifier associated with the first bookmark data object set in the third document data object based on a ruleset that identifies one or more properties of document data objects that prevent the first bookmark identifier from returning a blank result set when associated with the third document data object, wherein determining whether to include the first bookmark identifier is based on a comparison of a first set of properties and corresponding property values of the first bookmark data object set to third properties and corresponding third property values of the third document data object to identify one or more third properties that have changed compared to the first properties; and responsive to determining based on the ruleset that the third properties and corresponding third property values of the third document data object have not changed compared to the first set of properties and corresponding property values of the first bookmark data object set, storing the modified third document data object that includes the first bookmark identifier.
14. The computer-implemented method of claim 13, further comprising: providing the modified third document data object that includes the first bookmark identifier to a second client computer, the first bookmark data object set usable by the second client computer to change a visualization of the modified third document data object.
15. The computer-implemented method of claim 13, wherein, the set of properties and corresponding property values indicate a particular set of data to be visualized in the first document and a configuration for visualizing the particular set of data.
16. The computer-implemented method of claim 13, wherein, the modified third document data object includes parameters for one or more queries to obtain data for one or more visualizations of the data.
17. The computer-implemented method of claim 13, further comprising: obtaining a second request from a second client computer to store a fourth document data object using a second requested name that is the same as a fifth name of a fifth document data object stored using the fifth name, the fifth document data object including a fifth bookmark identifier; based on a fifth set of properties and corresponding fifth property values of a fifth bookmark data object set associated with the fifth bookmark identifier and fourth properties and corresponding fourth property values of the fourth document data object not satisfying a second ruleset, storing the fourth document data object that includes the fourth bookmark identifier.
Citation Information
Patent Citations
Metadata Merging In Agent Configuration Files
US20130145349A1
Systems and methods for automatic report generation and retaining of annotations in reporting documents after regeneration
US20200097535A1