Visualization interface for information object system

Disclosed are various embodiments for presenting an interface for visualizing information objects. A user interface is generated on a client computing device. Then a collaboration server may be queried for an information object to be rendered within the user interface on behalf of a user in response to a request to render the information object. Subsequently, form data may be retrieved from the information object received from the collaboration server. Then the information object may be rendered within the user interface based at least in part on the form data of the information object.

BACKGROUND

Information is stored on computers in files and other data formats. Various applications may use the files, or other data formats, to present the information in a manner that is conducive to human understanding. The applications may further show relationships between separate pieces of information in a manner that is conducive to human understanding.

DETAILED DESCRIPTION

Concept maps and mind maps often facilitate better inspection of existing knowledge structures for more rapid identification of misconceptions or relationships that require more in-depth analysis. The use of computer based concept mapping tools can enhance higher-quality analyses through the creation of structural representation of the knowledge domain of complex concepts. In this manner, with concept map and mind map briefings, both the creators and consumers of content are expected to be able to more rapidly assess whether the information and analysis at hand has analytic integrity and value and thus determine whether further refinement of the analysis is required.

In the following discussion, a general description of the system and its components is provided, followed by a discussion of the operation of the same.

With reference toFIG. 1, shown is a networked environment100according to various embodiments. The networked environment100includes a computing environment103and a client computing device106, which are in data communication with each other via a network109. The network109includes, for example, the Internet, intranets, extranets, wide area networks (WANs), local area networks (LANs), wired networks, wireless networks, or other suitable networks, etc., or any combination of two or more such networks.

Various applications and/or other functionality may be executed in the computing environment103according to various embodiments. Also, various data is stored in a data store111that is accessible to the computing environment103. The data store111may be representative of a plurality of data stores111as can be appreciated. The data stored in the data store111, for example, is associated with the operation of the various applications and/or functional entities described below.

The components executed on the computing environment103, for example, include a collaboration server113, and other applications, services, processes, systems, engines, or functionality not discussed in detail herein. The collaboration server113is executed to allow one or more users to create and share one or more information objects116and potentially other data.

The data stored in the data store111includes, for example, one or more information objects116, and potentially other data.

Information objects116are data storage objects structured to model data based on the relationships between individual pieces of information. As such, information objects116may comprise a set of associations with other information objects116to indicate data relationships. For example, a link between two information objects116may indicate a data dependency, a structural hierarchy, or other association of data modeled by two or more information objects116. Information objects116may also be assembled and/or derived from other information objects to represent these relationships. As such most information objects116may be created from or represented by an assembly of other information objects116.

However, some types or classes of information objects116may be reserved for particular types of data which cannot easily be represented as a combination of two or more other information objects116. For example, repeating data blocks, such as images, sound, video, compressed data, and encrypted data, may require a reserved or unique instance of an information object116that functions as a wrapper for the underlying data. Continuous stream data, such as a stream of data from a sensor, may also require a unique or reserved instance of an information object116to represent the stream data because stream data has a beginning but not necessarily an end to the data.

The client computing device106is representative of a plurality of client computing devices that may be coupled to the network109. The client computing device106may comprise, for example, a processor-based system such as a computer system. Such a computer system may be embodied in the form of a desktop computer, a laptop computer, personal digital assistants, cellular telephones, smartphones, set-top boxes, music players, web pads, tablet computer systems, game consoles, electronic book readers, or other devices with like capability. The client computing device106may include a display119. The display119may comprise, for example, one or more devices such as liquid crystal display (LCD) displays, gas plasma-based flat panel displays, organic light emitting diode (OLED) displays, LCD projectors, or other types of display devices, etc.

The client computing device106may be configured to execute various applications such as a client application123and/or other applications. The client application123may be executed in a client computing device106, for example, to access network content served up by the computing environment103and/or other servers, thereby rendering a user interface300on the display119. To this end, the client application123may comprise, for example, a browser, a dedicated application, etc., and the user interface300may comprise a network page, an application screen, etc. The client computing device106may be configured to execute applications beyond the client application123such as, for example, email applications, social networking applications, word processors, spreadsheets, and/or other applications.

In addition, one or more sensors and other data feeds126may be in network communication with the collaboration server113or the client application123. Sensors and other data feeds may comprise any electronic device capable of generating or recording data and transmitting the data to the collaboration server113. Examples of sensors and other data feeds126include accelerometers, temperature sensors or thermostats, video or web cameras, microphones, noise sensors, pressure sensors, scales, timers, flow meters, light sensors, outputs or results of applications or programs, and other such devices or programs.

AlthoughFIG. 1depicts a network-centric configuration representing a client-server model, this does not preclude other configurations. For example, in some embodiments the client computing device106may be a computing device located within the computing environment103. In various embodiments, the client application123may be located in the computing environment103along with the collaboration server113, but the client application123may communicate or render the user interface300on the display119of the client computing device106. In other embodiments, the collaboration server113, the data store111, and the client application123may all be located within a single computing device, such as the client computing device106or a single computer within the computing environment103.

Next, a general description of the operation of the various components of the networked environment100is provided. To begin, the client application123makes a request for one or more information objects116for use in a presentation, report, or similar document.

Upon receiving the requested information objects116, the client application123presents the requested information objects116to the user through the user interface300. The user may interact with the information objects116as desired.

For example, the user may select one or more information objects116for the basis of a presentation. Each information object116may correspond to a slide image or diagram within the presentation.

Alternatively, the user may interact with an information object116to select a child information object116, or otherwise “drill down” to look at the underlying data associated with the information object116. For example, the user may select an information object116labeled “bacteria.” Within the information object116labeled bacteria, a list of bacteria may be provided. Each listing corresponding to a child information object. Should the user select a child information object116, information related to the child information object116may be surfaced to the user, where such information was not previously visible to the user.

In another non-limiting example, the user may choose to create one or more information objects116to represent data or information that is not currently within the system. To continue with the bacteria example, a user may choose to create a new information object116associated with the “bacteria” information object116that represents a newly discovered bacterium. Further, in some embodiments of the present disclosure, a newly created information object116may be uploaded to the collaboration server113in order to be stored within the data store111for future use by the user or other users.

Referring next toFIG. 2, shown is a depiction of the data structure of an information object116. Each information object116has at least one unique identifier203, which uniquely identifies a particular instance of an information object116within the data store111(FIG. 1). Each information object116also includes content206. Included in the content206of the information object116may be one or more information object references, such as information object reference209athrough information object reference209n. The content206of the information object116may also include attributes213describing the information object116. In addition, the information object116may include form data216and multiple functions219.

A unique identifier203may be either a unique alpha-numeric number, such as the result of a cryptographic hash function, or may be a unique number generated by the collaboration server113(FIG. 1) when the information object116is created. For example, the collaboration server113may apply a cryptographic hash function, such as a version of the Secure Hash Algorithm, to an information object116to generate the unique identifier203. In another example, the collaboration server113may increment a counter when the information object116is created and then set the unique identifier203equal to the value of the counter. In some embodiments, both approaches may be combined to minimize the risk of collisions from the cryptographic hash function or duplicate counter values resulting from integer overflow errors. For example, the counter may be incremented and the value prepended or appended to the result of a cryptographic has function to create a unique identifier203.

The content206corresponds to the data represented by an information object116, which may include one or more information object references209a . . . nand/or one or more attributes213. Each information object reference209a . . . npoints or links to a related information object223. A related information object223may correspond to information that is a component of the information object116or is related to the information object223in some manner. For example, an information object116representing the country “Russia” may have an information object reference209linking the information object116to a related information223corresponding to the city “Moscow.” The information object116representing “Russia” may also include a second information object reference209to a related information object223representing a list of countries and a third information object reference209to a related information object223representing “Communism.”

The attributes213of the information object116represent data stored within the Information Object116which may or not be directly presented to the user as main content. Attributes213of an information object116may include, for example, a username of a user who originally created the information object116, a username of each user who has modified the information object116, a timestamp recording the creation of the information object116and/or modification of the information object116, a version of the interface standard supported by the information object116for use with the collaboration server113(FIG. 1) or the client application123(FIG. 1), language and/or cultural identification, and other such data. In some instances, the attributes213themselves may be represented by other information objects116. For example, a username of the creator of an information object116may be represented by an information object116that represents a user account.

The form data216corresponds to the data necessary to represent or display an information object116on a display119(FIG. 1). For example, form data216may represent the size of the information object116on the display119, the location of the information object116on the display119, a transparency value of the information object116, whether to overlay or underlay the information object on the display119with respect to individual ones of the related information objects223, and similar data or values. In some instances, the form data216may further specify the default placement of related information objects223on a display119relative to the information object116.

The functions219correspond to programmatic interfaces, methods, or similar mechanisms through which the client application123(FIG. 1) or the collaboration server113may interact with or otherwise manipulate the information object116. For example, the functions219may include functions for setting an information object116visible or invisible on a display119, functions for editing or otherwise modifying the information object116, functions for creating new information object references209or otherwise linking an information object116to a related information object223.

An information objection116or a related information object223may also have individual information object references209corresponding to user interface elements represented by information objects, such as a navigation information object226, a menu area information object229, and a client device information object233. For example, the navigation information object226may describe or define the structure or relationships of the currently selected information object116in relation to other information objects116. In some embodiments, the menu area information object229may describe or define various menu or other user interface300(FIG. 1) components which may be used to interact with the information object116, such as editing, copying or deleting the information object116. In some embodiments, the menu area information object229may also provide for functionality to create new information objects116. Further, in some embodiments, the client device information object233may contain user and system-wide settings, such as sound volume, display brightness, network connectivity settings, and other settings.

Moving toFIG. 3A, shown is an example user interface300, denoted herein as300a, of the client application123(FIG. 1) executing on the client computing device106. As illustrated, an information object116amay have other, related information objects116b,116c, and116doverlaid on top of the information object116a, permitting a user to visualize the relationships between the information objects116a,116b,116c, and116d. Whichever information object116is currently selected by the user, or otherwise in focus, may have a corresponding navigation information object226, menu area information object229, and client computing device information object233displayed.

Referring next toFIG. 3B, shown is an example user interface300, denoted herein as300b, of the client application123(FIG. 1) executing on the client computing device106. Shown to the right is a navigation information object226(FIG. 2), denoted herein as navigation bar226b, comprising a number of information objects116. In this particular user interface300b, an information object116has been selected and is displayed in the middle of the screen.

Turning now toFIG. 3C, shown is an example user interface300, denoted herein as300c, of the client application123(FIG. 1) executing on the client computing device106. Shown to the right is a navigation information object226(FIG. 2), denoted herein as226c, comprising a number of information objects116. In this particular user interface300c, a use has selected another information object116and the user interface300chas changed accordingly.

Moving on toFIG. 3D, shown is an example user interface300, denoted herein as300d, of the client application123(FIG. 1) executing on the client computing device106. This particular user interface300dshows the ability of a user of the client application123to associate one or more information objects116(FIG. 1) together.

Turning now toFIG. 3E, shown is an example user interface300, denoted herein as300e, of the client application123(FIG. 1) executing on the client computing device106(FIG. 1). The user interface300edisplays a number of information objects116, wherein each information object116includes information about one or more topics which are each embodied by a corresponding information object116. Further, relationships between information objects116are depicted in order to properly convey the relationship of information.

Turning now toFIG. 3F, shown is an example user interface300, denoted herein as300f, of the client application123(FIG. 1) executing on the client computing device106(FIG. 1). The user interface300fdepicts the presentation of a child information object116. In this particular example, a user has selected theE. Coliinformation object depicted in user interface300e(FIG. 3E), which has caused the client application123to surface the information object116for E. Coli to the forefront of the user interface300f. Other information objects116have been moved to the background and/or blurred, had any focus removed, or otherwise deemphasized in order to avoid distracting the focus of the user from the surfaced information object116.

Turning now toFIG. 3G, shown is an example user interface300, denoted herein as300g, of the client application123(FIG. 1) executing on the client computing device106. The user interface300gdepicts a user creating one or more information objects116(FIG. 1). Such information objects116may be stored for future reference, or may be used for the purpose of creating a presentation, report, or similar document.

FIG. 4shows a flowchart that provides one example of the operation of a portion of the client application123and the collaboration server113according to various embodiments. It is understood that the flowchart ofFIG. 4provides merely an example of the many different types of functional arrangements that may be employed to implement the operation of the portions of the client application123and the collaboration server113as described herein. As an alternative, the flowchart ofFIG. 4may be viewed as depicting an example of elements of a method implemented in the networked environment100(FIG. 1) according to one or more embodiments.

Beginning with box403, the client application123receives a selection of “Create New” or similar option through a user interface300(FIG. 1) of the client application123indicating that a user wishes to create a new information object116(FIG. 2). In some embodiments, for example, the user may have made a selection to create a new information object116by interacting with a menu area information object229(FIG. 2).

Subsequently at box406, the client application123creates a new information object116locally. In some embodiments, the new information object116may be locally cached for immediate use by the client application123pending an upload of the newly created information object116to the collaboration server113. In some embodiments, the client application123may further assign a unique identifier203(FIG. 2) to the newly created information object116and populate the content206(FIG. 2) and form data216(FIG. 2) with default values. For example, the attributes213(FIG. 2) may be automatically populated with the user account information of the user who created the information object and an information object reference209(FIG. 2) may be automatically created to refer to related information object223corresponding to a parent or sibling information object116.

Proceeding next to box409, the client application123sends the newly created information object116to the collaboration server113. In some embodiments, the newly created information object116may be serialized, for example by calling a function219(FIG. 2) of the information object116to serialize it, and then send the serialized information object116to the collaboration server113. In various embodiments, the client application113may instead send a copy of the unique identifier203, the content206, and the form data216to the collaboration server113.

Referring next to box413, the collaboration server113determines whether or not the information corresponding to the newly created information object116is valid. For example, the collaboration server113might check for errors as part of the deserialization process. The collaboration server113may check to see if the data is formatted correctly. As another example, the collaboration server113may check to determine if the unique identifier203of the newly created information object116is duplicative of a unique identifier203of an information object116already existing in the data store111(FIG. 1), which indicates that either the newly created information object116is a duplicate or that there is a collision between the unique identifiers203of the two information objects116which needs to be resolved. If the information is invalid, then execution proceeds to box446. If the information is valid, however, then execution proceeds to box416.

If execution skips to box446, the collaboration server113generates an error message event and sends an error message to the client application123. The error message may include an error code identifying the type or source of the error, an error description, and a cause of the error. In some embodiments, the error message itself may be an information object116representing the error and including the applicable error information. In various embodiments, the collaboration server113may also log the error and any associated error information to the data store111or a log file for later analysis.

Moving on to box416, the collaboration server113creates an information object116in the data store111using the information received from the client application123. If necessary, the collaboration server113also creates any parent or child information objects required, as well as any references or connections between the newly created information object116and other existing information objects116.

Referring next to box419, the collaboration server113sends a notice to the client application123that the information object116has been created. The notice may be in the form of a message, event notifier, or other data format. Additionally, the collaboration server113may, in some embodiments, mark the newly created information object116as being currently modified or that modifications to the newly created information object116are in progress. This may lock the information object116or otherwise prevent the information object116from being modified by other users, applications, or processes while the information object116is being modified.

Proceeding to box423, the client application123receives a notification from the collaboration server113that the information object116has been created. In some embodiments, the notification may also include an indication that the newly created information object116is marked for editing or modifications. If the newly created information object is marked for editing, the client application123may enable modifications to be made to the client or local copy of the information object116. For example, the client application123may mark fields of the newly created information object116as editable, enable various menu functions for the information object116, or take similar actions.

Moving on to box426, the client application123obtains one or more user modifications to the newly created information object116. In some embodiments, the client application123may automatically save the user modifications. For example, the client application123may automatically send each change to the collaboration server113, or the client application123may send changes to the collaboration server113in batches on a periodic basis, such as every few minutes, every hour, or some other period of time. The client application123may also locally save changes or modifications to the newly created information object116on the client computing device106(FIG. 1). When the user has finished modifying the newly created information object116, the final set of changes is sent to the collaboration server113. In some embodiments, the changes sent may be sent in a file format that records the changes between the copy of the information object116stored in the data store111and the copy of the information object116stored on the client computing device106. In various embodiments, the changes may instead be sent as copy of the information object116locally stored on the client computing device106to be used to replace the copy of the corresponding information object116stored in the data store111. In such embodiments, the copy of the information object116may be serialized and transmitted to the collaboration server113.

Referring next to box429, the collaboration server113determines whether or not the information corresponding to the modified information object116is valid. For example, the collaboration server113might check for errors as part of the deserialization process. The collaboration server113may check to see if the data is formatted correctly. If the information is invalid, then execution proceeds to box446, previously described. If the information is valid, however, then execution proceeds to box433.

Proceeding next to box433, the collaboration server113stores the modifications to the information object116in the data store111. In some embodiments, this may be accomplished by overwriting or replacing a previous copy of information object116stored in the data store111. In other embodiments, the content of the information object116may be edited or updated instead of overwriting the information object116with a newer copy or version.

Moving on to box436, the collaboration server113sends a notice to the client application123that the updates to the information object116are completed. The notice may be in the form of a message, event notifier, or other data format. Additionally, the collaboration server113may mark the newly created information object116as being as editable, such that other users or processes waiting to make changes to the information object116may do so.

Referring next to box439, the client application123receives the notice that the updates or changes to the newly created information object116are complete. In some embodiments, the client application123may lock or otherwise prevent users from modifying the newly created information object116upon receiving the notice. Execution then proceeds to box443, where the client application123renders the newly created information object116.

FIG. 5shows a flowchart that provides one example of the operation of a portion of the client application123and the collaboration server113according to various embodiments. It is understood that the flowchart ofFIG. 5provides merely an example of the many different types of functional arrangements that may be employed to implement the operation of the portions of the client application123and the collaboration server113as described herein. As an alternative, the flowchart ofFIG. 5may be viewed as depicting an example of elements of a method implemented in the networked environment100(FIG. 1) according to one or more embodiments.

Beginning with box503, the client application123marks an information object116as editable. For example, an information object116(FIG. 1) may be locked by another process or user for editing by the collaboration server113. Accordingly, until the collaboration server113unlocks the information object116and communicates to the client application123that the information object116is free for editing, the information object116may not be editable by a user of the client application123.

Subsequent to marking the information object116as editable, execution on the client application moves to box506, where the client application123obtains a user selection of the information object116for editing. The user may, for example use a mouse click, touch gesture, or other interaction to indicate to the client application123that the information object116is to be edited.

Proceeding to box509, the client application123retrieves the unique identifier203(FIG. 2) of the information object116. Upon retrieval, the client application123sends the unique identifier203to the collaboration server113.

Referring next to box513, the collaboration server113determines whether or not the unique identifier203(FIG. 2) is valid. For example, the collaboration server113may determine whether an information object116in the data store111(FIG. 1) with the unique identifier203exists. If not, the collaboration server113may generate an error. As another example, the collaboration server113may further determine whether the information object116in the data store111is an editable information object116. If not, the collaboration server113may generate an error. If the collaboration server113determines that the unique identifier203is invalid, then execution proceeds to box543. If the information is valid, however, then execution proceeds to box516.

If execution skips to box543, the collaboration server113generates an error message event and sends an error message to the client application123. The error message may include an error code identifying the type or source of the error, an error description, and a cause of the error. In some embodiments, the error message itself may be an information object116representing the error and including the applicable error information. In various embodiments, the collaboration server113may also log the error and any associated error information to the data store111or a log file for later analysis.

Moving on to box516, the collaboration server113may mark the selected information object116as being currently modified or that modifications to the selected information object116are in progress. This may lock the information object116or otherwise prevent the information object116from being modified by other users, applications, or processes while the information object116is being modified. After locking the information object116, the collaboration server113then sends a message to the client application123that the information object116may be edited.

Referring next to box519, the client application123may enable modifications to be made to the client or local copy of the information object116in response to receiving the message from the collaboration server113. For example, the client application123may mark fields of the selected information object116as editable, enable various menu functions for the information object116, or take similar actions.

Proceeding to box523, the client application123obtains one or more user modifications to the selected information object116. In some embodiments, the client application123may automatically save the user modifications. For example, the client application123may automatically send each change to the collaboration server113, or the client application123may send changes to the collaboration server113in batches on a periodic basis, such as every few minutes, every hour, or some other period of time. The client application123may also locally save changes or modifications to the selected information object116on the client computing device106(FIG. 1). When the user has finished modifying the selected information object116, the final set of changes is sent to the collaboration server113. In some embodiments, the changes sent may be sent in a file format that records the changes between the copy of the information object116stored in the data store111and the copy of the information object116stored on the client computing device106. In various embodiments, the changes may instead be sent as a copy of the information object116locally stored on the client computing device106to be used to replace the copy of the corresponding information object116stored in the data store111. In such embodiments, the copy of the information object116may be serialized and transmitted to the collaboration server113.

Referring next to box526, the collaboration server113determines whether or not the information corresponding to the modified information object116is valid. For example, the collaboration server113might check for errors as part of the deserialization process. The collaboration server113may check to see if the data is formatted correctly. If the information is invalid, then execution proceeds to box543, previously described. If the information is valid, however, then execution proceeds to box529.

Moving on to box529, the collaboration server113stores the modifications to the information object116in the data store111. In some embodiments, this may be accomplished by overwriting or replacing a previous copy of information object116stored in the data store111. In other embodiments, the content of the information object116may edited or updated instead of overwriting the information object116with a newer copy or version.

Referring next to box533, the collaboration server113sends a notice to the client application123that the updates to the information object116are completed. The notice may be in the form of a message, event notifier, or other data format. Additionally, the collaboration server113may mark the selected information object116as being as editable, such that other users or processes waiting to make changes to the information object116may do so.

Moving on to box536, the client application123receives the notice that the updates or changes to the selected information object116are complete. In some embodiments, the client application123may lock or otherwise prevent users from modifying the selected information object116upon receiving the notice. Execution then proceeds to box539, where the client application123renders the modified information object116.

FIG. 6shows a flowchart that provides one example of the operation of a portion of the client application123and the collaboration server113according to various embodiments. It is understood that the flowchart ofFIG. 6provides merely an example of the many different types of functional arrangements that may be employed to implement the operation of the portions of the client application123and the collaboration server113as described herein. As an alternative, the flowchart ofFIG. 6may be viewed as depicting an example of elements of a method implemented in the networked environment100(FIG. 1) according to one or more embodiments.

Beginning with box603, the client application123receives information or data that is to be imported into the system. For example, the client application123may receive a video file, an image file, a portable document format (PDF) document, a text document, an audio file, or some other type of file.

Subsequently at box606, the client application123analyzes the file and creates a new information object116locally based on the file. In some embodiments, the new information object116may be locally cached for immediate use by the client application123pending an upload of the newly created information object116to the collaboration server113. In some embodiments, the client application123may further assign a unique identifier203(FIG. 2) to the newly created information object116and populate the content206(FIG. 2) and form data216(FIG. 2) with default values. For example, the attributes213(FIG. 2) may be automatically populated with the user account information of the user who created the information object and an information object reference209(FIG. 2) may be automatically created to refer to related information object223corresponding to a parent or sibling information object116. Further, in some embodiments, the client application123may set values for certain attributes209based on the file and may populate the content206and form data216with values based at least in part on the imported file.

Proceeding next to box609, the client application123sends the newly created information object116to the collaboration server113. In some embodiments, the newly created information object116may be serialized, for example by calling a function219(FIG. 2) of the information object116to serialize it, and then send the serialized information object116to the collaboration server113. In various embodiments, the client application113may instead send a copy of the unique identifier203, the content206, and the form data216to the collaboration server113.

Referring next to box613, the collaboration server113determines whether or not the information corresponding to the newly created information object116is valid. For example, the collaboration server113might check for errors as part of the deserialization process. The collaboration server113may check to see if the data is formatted correctly. As another example, the collaboration server113may check to determine if the unique identifier203of the newly created information object116is duplicative of a unique identifier203of an information object116already existing in the data store111(FIG. 1), which indicate that either the newly created information object116is a duplicate or that there is a collision between the unique identifiers203of the two information objects116which needs to be resolved. If the information is invalid, then execution proceeds to box646. If the information is valid, however, then execution proceeds to box616.

If execution skips to box646, the collaboration server113generates an error message event and sends an error message to the client application123. The error message may include an error code identifying the type or source of the error, an error description, and a cause of the error. In some embodiments, the error message itself may be an information object116representing the error and including the applicable error information. In various embodiments, the collaboration server113may also log the error and any associated error information to the data store111or a log file for later analysis.

Moving on to box616, the collaboration server113creates an information object116in the data store111using the information received from the client application123. If necessary, the collaboration server113also creates any parent or child information objects required, as well as any references or connections between the newly created information object116and other existing information objects116.

Referring next to box619, the collaboration server113sends a notice to the client application123that the information object116has been created. The notice may be in the form of a message, event notifier, or other data format. Additionally, the collaboration server113may, in some embodiments, mark the newly created information object116as being currently modified or that modifications to the newly created information object116are in progress. This may lock the information object116or otherwise prevent the information object116from being modified by other users, applications, or processes while the information object116is being modified.

Proceeding to box623, the client application123receives a notification from the collaboration server113that the information object116has been created. In some embodiments, the notification may also include an indication that the newly created information object116is marked for editing or modifications. If the newly created information object is marked for editing, the client application123may enable modifications to be made to the client or local copy of the information object116. For example, the client application123may mark fields of the newly created information object116as editable, enable various menu functions for the information object116, or take similar actions.

Moving on to box626, the client application123obtains one or more user modifications to the newly created information object116. In some embodiments, the client application123may automatically save the user modifications. For example, the client application123may automatically send each change to the collaboration server113, or the client application123may send changes to the collaboration server113in batches on a periodic basis, such as every few minutes, every hour, or some other period of time. The client application123may also locally save changes or modifications to the newly created information object116on the client computing device106(FIG. 1). When the user has finished modifying the newly created information object116, the final set of changes is sent to the collaboration server113. In some embodiments, the changes sent may be sent in a file format that records the changes between the copy of the information object116stored in the data store111and the copy of the information object116stored on the client computing device106. In various embodiments, the changes may instead be sent as copy of the information object116locally stored on the client computing device106to be used to replace the copy of the corresponding information object116stored in the data store111. In such embodiments, the copy of the information object116may be serialized and transmitted to the collaboration server113.

Referring next to box629, the collaboration server113determines whether or not the information corresponding to the modified information object116is valid. For example, the collaboration server113might check for errors as part of the deserialization process. The collaboration server113may check to see if the data is formatted correctly. If the information is invalid, then execution proceeds to box646, previously described. If the information is valid, however, then execution proceeds to box633.

Proceeding next to box633, the collaboration server113stores the modifications to the information object116in the data store111. In some embodiments, this may be accomplished by overwriting or replacing a previous copy of information object116stored in the data store111. In other embodiments, the content of the information object116may edited or updated instead of overwriting the information object116with a newer copy or version.

Moving on to box636, the collaboration server113sends a notice to the client application123that the updates to the information object116are completed. The notice may be in the form of a message, event notifier, or other data format. Additionally, the collaboration server113may mark the newly created information object116as being as editable, such that other users or processes waiting to make changes to the information object116may do so.

Referring next to box639, the client application123receives the notice that the updates or changes to the newly created information object116are complete. In some embodiments, the client application123may lock or otherwise prevent users from modifying the newly created information object116upon receiving the notice. Execution then proceeds to box643, where the client application123renders the newly created information object116.

FIG. 7shows a flowchart that provides one example of the operation of a portion of the client application123and the collaboration server113according to various embodiments. It is understood that the flowchart ofFIG. 7provides merely an example of the many different types of functional arrangements that may be employed to implement the operation of the portions of the client application123and the collaboration server113as described herein. As an alternative, the flowchart ofFIG. 7may be viewed as depicting an example of elements of a method implemented in the networked environment100(FIG. 1) according to one or more embodiments.

Beginning with box703, the client application123receives a trigger event. The trigger event includes any event which indicates that the information object116associated with the trigger event should be modified. A trigger event may include, for example, a command received by the user interface300(FIG. 1) to automatically arrange or layout the displayed information objects116according to one or more predefined rules. The user interface may then send a trigger to the corresponding information objects116to modify their form data216according to the one or more predefined rules. For example, the trigger event may instruct the information objects116may alter their position, size or shape values stored in the form data216.

Proceeding to box706, the client application123retrieves the unique identifier203(FIG. 2) of the information object116that corresponds to the trigger event. Upon retrieval, the client application123sends the unique identifier203to the collaboration server113.

Referring next to box709, the collaboration server113determines whether or not the unique identifier203(FIG. 2) is valid. For example, the collaboration server113may determine whether an information object116in the data store111(FIG. 1) with the unique identifier203exists. If not, the collaboration server113may generate an error. As another example, the collaboration server113may further determine whether the information object116in the data store111is an editable information object116. If not, the collaboration server113may generate an error. If the collaboration server113determines that the unique identifier203is invalid, then execution proceeds to box739. If the information is valid, however, then execution proceeds to box713.

If execution skips to box739, the collaboration server113generates an error message event and sends an error message to the client application123. The error message may include an error code identifying the type or source of the error, an error description, and a cause of the error. In some embodiments, the error message itself may be an information object116representing the error and including the applicable error information. In various embodiments, the collaboration server113may also log the error and any associated error information to the data store111or a log file for later analysis.

Moving on to box713, the collaboration server113may mark the information object116as being currently modified or that modifications to the information object116are in progress. This may lock the information object116or otherwise prevent the information object116from being modified by other users, applications, or processes while the information object116is being modified. After locking the information object116, the collaboration server113then sends a message to the client application123that the information object116may be edited.

Proceeding to box719, the client application123modifies the information object116in response to the trigger according to the conditions associated with the trigger. In some embodiments, the changes may be automatically saved locally on the client computing device106(FIG. 1) pending the changes being sent to the collaboration server113.

Referring next to box723, the collaboration server113determines whether or not the information corresponding to the modified information object116is valid. For example, the collaboration server113might check for errors as part of the deserialization process. The collaboration server113may check to see if the data is formatted correctly. If the information is invalid, then execution proceeds to box739, previously described. If the information is valid, however, then execution proceeds to box526.

Moving on to box726, the collaboration server113stores the modifications to the information object116in the data store111. In some embodiments, this may be accomplished by overwriting or replacing a previous copy of information object116stored in the data store111. In other embodiments, the content of the information object116may edited or updated instead of overwriting the information object116with a newer copy or version.

Referring next to box729, the collaboration server113sends a notice to the client application123that the updates to the information object116are completed. The notice may be in the form of a message, event notifier, or other data format. Additionally, the collaboration server113may mark the newly created information object116as being as editable, such that other users or processes waiting to make changes to the information object116may do so.

Moving on to box733, the client application123receives the notice that the updates or changes to the information object116are complete. In some embodiments, the client application123may lock or otherwise prevent users from modifying the information object116upon receiving the notice. Execution then proceeds to box736, where the client application123renders the modified information object116.

FIG. 8shows a flowchart that provides one example of the operation of a portion of the client application123and the collaboration server113according to various embodiments. It is understood that the flowchart ofFIG. 8provides merely an example of the many different types of functional arrangements that may be employed to implement the operation of the portions of the client application123and the collaboration server113as described herein. As an alternative, the flowchart ofFIG. 8may be viewed as depicting an example of elements of a method implemented in the networked environment100(FIG. 1) according to one or more embodiments.

Beginning with box803, the client application123receives data from a data source to be added to an existing information object116(FIG. 1). The data source, for example, may include one or more sensors and/or other data feeds126(FIG. 1). Data may be received as an information object116or a series of information objects116. For example, a temperature sensor may record a series of temperatures and supply them to the client application123as a series of information objects116or as a single information object116representing the stream or series of temperature readings. In some embodiments, the sensors and/or other data feeds may supply the data as a raw data that has not yet been processed into one or more information objects116. It is also noted that in some embodiments, the sensors and/or other data feeds126may supply information directly to the collaboration server113.

Referring next to box806, the client application123validates the information supplied by the one or more sensors and/or other data feeds126. Validation may depend on the type of information supplied by the one or more sensors and/or other data feeds126. If the data is received in the form of an information object116, the client application123may determine whether or not the information object is validly formatted and constructed. If the data is received as raw data, the client application123may perform validation checks on the data received. If the data received is invalid, execution skips to box843. If the data received is valid, then execution proceeds to box809.

If execution skips to box843, the client application sends an error message to the sensor and/or other data feed126indicating that the data or information object116received is invalided. In some embodiments, the client application123may also generate an error message to be rendered within the user interface300(FIG. 1) and/or write the error or error message to a log. The process then terminates.

If execution proceeds to box809, however, then the client application123invokes one or more functions219(FIG. 2) of the existing information object116. As part of the invocation process, the client application123may query or send a request to the collaboration server113for a copy of the latest or most current version of the function219to be invoked. For example, if the data supplied by the one or more sensors and/or other data feeds126were temperature data or a series of temperature readings, then the client application123may invoke an “AddNewTemperatureReading” function219of the existing information object116to add the data received by adding an information object reference209(FIG. 2) to the existing information object116that creates an association between the existing information object116. In some embodiments, a generic “AddNewData” function219may be invoked to create an information object reference209between the data received and existing information object116.

Proceeding next to box813, the collaboration server113determines whether the information provided is valid. For example, the collaboration server may determine whether the arguments supplied by the client application123with respect with the function219to be called are correct. To use the illustrative example of a temperature sensor, the collaboration server may determine whether the client application123is passing temperature readings to an “AddNewTemperatureReading” function219or whether the client application123is attempting to pass arguments that are unrelated to temperature data. As another example, the collaboration server113may determine whether the request for the most current version of the function219is valid. As an example, the requested function might not exist or might have been deprecated or removed from the current implementation of the system, and therefore the function may no longer be available to be called. In some embodiments, a subset of functions219may require elevated or special permissions to execute, and therefore the collaboration server113must determine whether the client application213has the appropriate permissions to execute the function219. If the collaboration server113determines that the request is for the most recent version of the function219is invalid, execution skips to box846. However, if the collaboration server113determines that the request is valid, then execution proceeds to box816.

Skipping ahead to box846, the collaboration server113generates an error message event and sends an error message to the client application123. The error message may include an error code identifying the type or source of the error, an error description, and a cause of the error. In some embodiments, the error message itself may be an information object116representing the error and including the applicable error information. In various embodiments, the collaboration server113may also log the error and any associated error information to the data store111(FIG. 1) or a log file for later analysis.

Referring next to box816, the collaboration server113queries the data store111to determine the most current version of the function219which the client application123has requested to execute. The collaboration server113then sends the code or logic for the most current or recent version of the function219to the client application123. In some embodiments, the function219may be sent as human readable source code. In other embodiments, the function219may be serialized and sent to the client application123.

Moving on to box819, the client application123receives the most recent version of the function219from the collaboration server113. If the function219is provided as human readable source code, the client application123may compile or interpret the human readable source code into a machine readable binary. If the function219has been sent in a serialized form, the function219may be deserialized by the client application123. The client application123then executes the function219.

Proceeding next to box823, the results of the function219executed in box819are sent to the collaboration server113. In some embodiments, the results may be sent as a newly created information object116or set of information objects116.

Referring next to box826, the collaboration server113determines whether the results of the function invoked in box819are valid. For example, the collaboration server113may determine whether the resulting information objects116are formatted correctly. As another example, the collaboration server113may determine whether a collision exists between the resulting information object116or objects116and any preexisting information objects116in the data store111. If the results are invalid, then execution skips to box846, as previously described. If the results are valid, then execution instead proceeds to box829.

Moving on to box829, the collaboration server113marks the initial information object116as being modified. This locks or otherwise prevents the initial information object116from being modified by other client applications123or processes. The collaboration server then saves the data or information objects116resulting from the function219executed in box819to the data store111and also saves any modifications necessary to link the initial information object116to the newly created information objects116.

Proceeding next to box833, the collaboration server113marks the respective information objects116as having been modified, unlocking the information objects116such that other client applications123or other processes may read or modify them. The collaboration server113then sends a message to the client application123indicating that all changes to the respective information objects116are complete. Referring next to box836, the client application123receives notification from the collaboration server113that the updates to the information objects116in the data store111have been completed. Moving on to box839, the function219invoked in box809and executed in box819completes, and the function219ends.

With reference toFIG. 9, shown is a schematic block diagram of the computing environment103according to an embodiment of the present disclosure. The computing environment103includes one or more computing devices900. Each computing device900includes at least one processor circuit, for example, having a processor903and a memory906, both of which are coupled to a local interface909. To this end, each computing device900may comprise, for example, at least one server computer or like device. The local interface909may comprise, for example, a data bus with an accompanying address/control bus or other bus structure as can be appreciated.

Stored in the memory906are both data and several components that are executable by the processor903. In particular, stored in the memory906and executable by the processor903are collaboration server113, and potentially other applications. Also stored in the memory906may be a data store111and other data. In addition, an operating system911may be stored in the memory906and executable by the processor903.

A number of software components are stored in the memory906and are executable by the processor903. In this respect, the term “executable” means a program file that is in a form that can ultimately be run by the processor903. Examples of executable programs may be, for example, a compiled program that can be translated into machine code in a format that can be loaded into a random access portion of the memory906and run by the processor903, source code that may be expressed in proper format such as object code that is capable of being loaded into a random access portion of the memory906and executed by the processor903, or source code that may be interpreted by another executable program to generate instructions in a random access portion of the memory906to be executed by the processor903, etc. An executable program may be stored in any portion or component of the memory1006including, for example, random access memory (RAM), read-only memory (ROM), hard drive, solid-state drive, USB flash drive, memory card, optical disc such as compact disc (CD) or digital versatile disc (DVD), floppy disk, magnetic tape, or other memory components.

Also, the processor903may represent multiple processors903and/or multiple processor cores and the memory906may represent multiple memories906that operate in parallel processing circuits, respectively. In such a case, the local interface909may be an appropriate network that facilitates communication between any two of the multiple processors903, between any processor903and any of the memories906, or between any two of the memories906, etc. The local interface909may comprise additional systems designed to coordinate this communication, including, for example, performing load balancing. The processor903may be of electrical or of some other available construction.

The functionality and operation of an implementation of portions of the collaboration server113or the client application123may be described in the present disclosure. If embodied in software, the functionality described may represent a module, segment, or portion of code that comprises program instructions to implement the specified logical functions. The program instructions may be embodied in the form of source code that comprises human-readable statements written in a programming language or machine code that comprises numerical instructions recognizable by a suitable execution system such as a processor903in a computer system or other system. The machine code may be converted from the source code, etc. If embodied in hardware, each block may represent a circuit or a number of interconnected circuits to implement the specified logical function(s).

Although a specific order of execution for the application may be described, it is understood that the order of execution may differ from that which is depicted. Functionality described may be implemented concurrently or in parallel with other described functionality. Moreover, functionality described may occur in an order other than that described or depicted in the present disclosure. Further, in some embodiments, functionality described herein may be skipped or omitted. In addition, any number of counters, state variables, warning semaphores, or messages might be added to the logical flow described herein, for purposes of enhanced utility, accounting, performance measurement, or providing troubleshooting aids, etc. It is understood that all such variations are within the scope of the present disclosure.