The present disclosure relates generally to data presentation. In some embodiments, the disclosure relates to linking annotations to document objects.
A typical enterprise platform provides a centralized location for users to share documents from various sources, such as word processing programs, spreadsheet applications, and presentation programs. Various types of document viewers may be used in the enterprise platform to render or display the shared documents. However, most document viewers only allow users to view the documents, but not to add or modify data. As a result, a user cannot add, for example, annotations regarding some information presented in the document, which the user may want to be displayed with the document to share with other users that view the document.
The present disclosure is illustrated by way of example and not limitation in the figures of the accompanying drawings, in which like references indicate similar elements and in which:
a and 1b depict a diagram of a document, in accordance with an illustrative embodiment, with an added annotation;
a and 9b depict a diagram of another example of a document, in accordance with an embodiment, for illustrating the positioning of an annotation;
The description that follows includes illustrative systems, methods, techniques, instruction sequences, and computing machine program products that embody the present invention. In the following description, for purposes of explanation, numerous specific details are set forth in order to provide an understanding of various embodiments of the inventive subject matter. It will be evident, however, to those skilled in the art that embodiments of the inventive subject matter may be practiced without these specific details. In general, well-known instruction instances, protocols, structures and techniques have not been shown in detail.
The embodiments described herein provide techniques for linking annotations to objects included in a document. In an example, a document is initially converted into a structured document format that defines all the document objects included in the document. As explained in more detail below, for example, an object identifier may be generated to uniquely identify each document object. A user may add an annotation for a particular document object, and the previously generated object identifier is used to link the annotation with the document object. As explained in more detail below, the link is used to position the annotation within the document.
a and 1b depict a diagram of a document 100 with an added annotation 102, in accordance with an illustrative embodiment. As illustrated in
In the example of
As illustrated in
In the example of
The annotation layer 202 is a software layer in addition to the presentation layer 204 that overcomes the limitations of the presentation layer 204 by allowing the user 201 to add annotations to otherwise non-modifiable documents displayed from the presentation layer 204. As depicted in
The annotation module 222 is configured to receive and display annotations provided by the user 201. An example of an annotation module 222 is a multimedia software that creates animation in and provides interactivity to web pages. As explained in more detail below, the synchronization module 220 is configured to link annotations with document objects and to provide positions of the annotations to the annotation module 222.
The server processing system 252 may embody an application layer 206 and a database layer 208. The application layer 206 includes, for example, application servers 210 and message servers 212. Each application server 210 may, for example, provide a set of enterprise services. For example, a Crystal Management Server is a type of application server 210 that manages a Crystal Enterprise Framework and this Crystal Management Server may serve as a central enterprise repository for storing business objects and metadata. The message servers 212 are responsible for communication between the application servers 210.
The database layer 208 includes one or more database management systems (DBMS) 214 and databases 216. The databases 216 are configured to store data managed by the application servers 210. For example, the database 216 may be a Crystal Management Server database that is configured to store annotations added by the user 201. The DBMS 214 may comprise any suitable system for managing a database instance. Generally, the DBMS 214 may receive requests for data (e.g., Structured Query Language (SQL) requests), retrieve the requested data from the database 216, and return the requested data to a requestor. The DBMS 214 may also perform start-up, logging, recovery, management, optimization, monitoring, and other database-related tasks.
It should be appreciated that in other embodiments, the software layers 202, 204, 206, and 208, as embodied in client processing system 250 and/or server processing system 252, may include fewer, more, or different modules apart from those shown in
The structured document format defines document objects and, at 304, an object identifier may be generated for one or more document objects defined in the structured document format. An “object identifier” refers to a value (numeric and/or textual) that uniquely identifies one or more document objects. The object identifier identifying a particular element is comprised of other document objects that are related to the particular element. For example, a particular document object is related to a first document object comprised of text “cup” and a second document object comprised of text “color.” An object identifier may be generated for this particular document object by appending “cup” to “color,” which generates a “cup-color” object identifier.
A document object can be related to another document object based on a variety of different logical or causal connections. For example, a document object that is a neighbor to another document object may be related. In another example, a document object can be related to another document object based on a common set of shared words. In yet another example, document objects may be related based on a hierarchical structure and therefore, the object identifiers can be generated based on the hierarchical structure. In general, a hierarchical structure is a system for ranking various document objects. An example of a hierarchical structure is a tree structure, where links branch out from one or more document objects without forming closed loops. In a document where the document objects are organized following a hierarchical structure, a document object is an ascendant (or parent) of another document object if this document object is one step or more higher in the hierarchy. On the other hand, a document object is a descendant (or child) of another document object if this document object is one step or more lower in the hierarchy. A document object is a sibling of another document object if both document objects are at the same level in the hierarchy. As a result, a document object can be related to another document object that is its ascendant, descendant, or sibling.
The structured document format defines all the document objects and, in an embodiment, also the object identifiers associated with the document objects. As discussed above, the object identifiers are generated within the presentation layer. The object identifier that identifies the selected document object is identified from the structured document format at 406. Identification may be made by, for example, matching a position of the annotation with one of the positions of a document object defined in the structured document format, which is described in more detail below. Once the selected document object is identified from the structured document format, its corresponding object identifier can be accessed.
After the object identifier associated with the selected document object is identified, the object identifier is then associated with the annotation at 408 such that the association links the annotation to the selected document object. In an embodiment, the association of the object identifier with the annotation is stored separately from the document. That is, the association is not stored within the document. Instead, for example, the annotation may be stored with its object identifier in a Crystal Management Server database. Such association allows the annotation to be linked to a selected document object without modifying the document. As explained in more detail below, such links may then be used to later position the annotation with respect to its document object when, for example, the document object is moved.
In this example, a user adds an annotation 502 to the order amount document object “$533.75” conveying a message that the order needs to be increased. An object identifier is generated for this particular “$533.75” document object based on appending or combining related document objects. For example, the object identifier may be generated based on the hierarchal relationship or structure of the document objects. The object identifier “Austria-Salzkammergut-Salzburg-Piccolo-2873-Order Amount” is an example of such a combination where the document objects “Austria,” “Salzkammergut,” “Salzburg,” and “Piccolo” are ascendants of the “$533.75” document object. It should be noted that the “order amount” document object is used in place of the “$533.75” document object because the value “$533.75” may change. By including the “order amount” document object in the object identifier, the annotation 502 will be linked to a cell in the “order amount” column that is associated with the “2,873” document object regardless of the change in value of this particular cell. The order of the ascendant document objects as defined in the object identifier may follow the hierarchal structure.
The generated object identifier is then associated with the annotation 502 and, in an example, the association may be stored in an XML format, which is defined in the following Table A.
In Table A, the nesting of the object identifier (or <objectID> Austria-Salzkammergut-Salzburg-Piccolo-2873-Order Amount </objectID>) and the annotation 502 (or <annotation> Need to Increase Order </annotation>) within the <shape> and </shape> document objects identifies the association of the object identifier with the annotation 502.
In this example, a user adds an annotation 602 in the form of a rectangular border that highlights the “Feb. 14, 1998” ship date and its corresponding “$1565.25” and “$65.70” order amounts. An object identifier can be generated for these document objects based on a combination of other related document objects. For example, this object identifier may be generated based on, in part, the hierarchal structure of the document objects. The object identifier “Austria-Salzkammergut-Salzburg -Piccolo-Feb. 14, 1998-Order Amount,” for example, may be used to identify all the order amount document objects that are associated with the “Feb. 14, 1998” document object. On the other hand, if each cell is to be identified separately, then the numerical order amounts is used or included in object identifiers rather than the column/field header (or “Order Amount”). For example, the object identifier for the “$65.70” order amount can be “Austria-Salzkammergut-Salzburg-Piccolo-Feb. 14, 1998-$65.70.”
The presentation layer 204 accesses a document and converts the document into a structured document format, which defines all the document objects and their respective positions within the document. In an embodiment, from this structured document format, the presentation layer 204 may generate an object identifier for each document object. In an embodiment, the presentation layer 204 generates object identifiers that are requested by the annotation layer 202. In the example of
With receipt of the object identifier, the annotation layer 202 may prompt the user 201 for an annotation at 708. In response to the prompt, the annotation layer 202 receives the annotation at 710 from the user 201 and associates the received object identifier with the annotation in order to link the annotation with the selected document object. At 712, the annotation layer 202 then stores the annotation with its object identifier in, for example, a Crystal Management Server database that is located in the database layer 208. The annotation layer 202 may receive an acknowledgment at 714 from the database layer 208 on whether the storage operation was successful or in error.
In an alternate embodiment, a relative position of the annotation may also be stored with the annotation and the object identifier. A “relative position” (or a position relative to) as used herein, is a position that is related to or made in reference to a position of the document object, which is defined in the structured document format. The relative position is calculated based on a difference between the position of annotation as received from (or designated by) the user 201 and the position of the document object as defined in the structured document format. For example, if a position of the annotation is located along horizontal axis X=8 and a position of the associated document object is located along horizontal axis X=10, then the relative position of the annotation is a difference between the two positions, which is 10−8=2 along the horizontal axis. In an alternate embodiment, this relative position can also be associated with the object identifier and stored with the annotation and the object identifier. As a result of storing the relative position, and if the document object is subsequently placed in a different position within the document, the stored relative position allows the annotation to be positioned at the same place as the user originally designated relative to the position of the document object.
An annotation and an object identifier assigned to the annotation are accessed at 804 from, for example, a Crystal Management Server database. The object identifier is then compared with at least one of the object identifiers defined in the structure document format at 806 to identify a match. If a match is found, the position associated with the matched object identifier is accessed at 808 from the structured document format and the annotation is then positioned based on this accessed position at 810.
a and 9b depict a diagram of another example of a document 900, in accordance with an embodiment, for illustrating the positioning of an annotation 902. As illustrated in
In this example, an annotation 902 and its object identifier are accessed from, for example, a database layer and the accessed object identifier is compared with the object identifiers defined in the structured document format to identify a match. When a match is identified, the position associated with the matched object identifier as defined in the structured document format is accessed and the annotation 902 is positioned based on this accessed position.
b illustrates the same document 900 with the same document objects but, in this example, the bar document object 904 has been moved from the right end of the chart to the left end of the same chart. The position of the bar document object 904 has changed and this change is reflected or updated in the structured document format when the document is refreshed. The document 900 can be refreshed when, for example, an annotation module rereads or reloads the structured document format, which may occur at regular intervals and upon loading of the document 900. Since the position of the bar document object 904 has changed, the position of the annotation 902 is also repositioned such that the annotation 902 is also moved from the right end of the chart to the left end of the same chart. In an embodiment, if the relative position of the annotation 902 is also stored and accessed, the annotation 902 may be repositioned based on a position of the bar document object 904 and the relative position of the annotation 902.
It should be noted that the document 900 may be in the form of a dynamic chart or a multimedia file that cannot be converted into a structured document format. With these types of documents, their document objects may also be associated with annotations, in accordance with an alternate embodiment. Even though these documents cannot be converted into a structured document format, they may include information regarding each document object. In
The sub document object (or <sub object>), as defined in Table B, is a document object that is subordinate to another document object. It should be noted that special “######” characters may be associated with a particular object identifier to identify that the document object associated with this object identifier cannot be converted into a structured document format. As also defined in Table B, a relative position is also stored with the annotation and its object identifier.
The machine is capable of executing a set of instructions (sequential or otherwise) that specify actions to be taken by that machine. Further, while only a single machine is illustrated, the term “machine” shall also be taken to include any collection of machines that individually or jointly execute a set (or multiple sets) of instructions to perform any one or more of the methodologies discussed herein.
The example processing system 1100 includes a processor 1102 (e.g., a central processing unit (CPU), a graphics processing unit (GPU) or both), a main memory 1104, and static memory 1106, which communicate with each other via bus 1108. The processing system 1100 may further include video display unit 1110 (e.g., a plasma display, a liquid crystal display (LCD) or a cathode ray tube (CRT)). The processing system 1100 also includes an alphanumeric input device 1112 (e.g., a keyboard), a user interface (UI) navigation device 1114 (e.g., a mouse), a disk drive unit 1116, signal generation device 1118 (e.g., a speaker), and network interface device 1120.
The disk drive unit 1116 includes machine-readable medium 1122 on which is stored one or more sets of instructions and data structures (e.g., software 1124) embodying or utilized by any one or more of the methodologies or functions described herein. The software 1124 may also reside, completely or at least partially, within main memory 1104 and/or within processor 1102 during execution thereof by processing system 1100, main memory 1104, and processor 1102 also constituting machine-readable, tangible media.
Software 1124 may further be transmitted or received over network 1126 via network interface device 1120 utilizing any one of a number of well-known transfer protocols (e.g., HTTP).
While the invention(s) is (are) described with reference to various implementations and exploitations, it will be understood that these embodiments are illustrative and that the scope of the invention(s) is not limited to them. In general, techniques for liking and positioning annotations may be implemented with facilities consistent with any hardware system or hardware systems defined herein. Many variations, modifications, additions, and improvements are possible.
Plural instances may be provided for components, operations or structures described herein as a single instance. Finally, boundaries between various components, operations, and data stores are somewhat arbitrary, and particular operations are illustrated in the context of specific illustrative configurations. Other allocations of functionality are envisioned and may fall within the scope of the invention(s). In general, structures and functionality presented as separate components in the exemplary configurations may be implemented as a combined structure or component. Similarly, structures and functionality presented as a single component may be implemented as separate-components. These and other variations, modifications, additions, and improvements fall within the scope of the invention(s).