HK1237558A1 - Information object system - Google Patents
Information object system Download PDFInfo
- Publication number
- HK1237558A1 HK1237558A1 HK17111523.4A HK17111523A HK1237558A1 HK 1237558 A1 HK1237558 A1 HK 1237558A1 HK 17111523 A HK17111523 A HK 17111523A HK 1237558 A1 HK1237558 A1 HK 1237558A1
- Authority
- HK
- Hong Kong
- Prior art keywords
- information object
- application
- computing device
- data
- request
- Prior art date
Links
Description
Federally sponsored research
The invention was made with government support under contract number W31P4Q-10-C-0010 awarded by the department of defense advanced research projects ("DARPA"). The government has certain rights in this invention.
RELATED APPLICATIONS
This application is related to U.S. patent application 14/208,346 entitled "Visualization Interface for information Object System" filed 3/13 2014 and is incorporated herein by reference in its entirety.
Background
Many programs store data in a format that is specific to the particular program. In order for a program to process data output by another program, the program must be able to process data in a format specific to the other program.
SUMMARY
Various technologies are disclosed for storing information in a machine and application independent manner. Data is stored as a series of information objects. Applications may generate, store, and access information objects, including information objects generated by other applications or devices.
In an embodiment, a non-transitory computer-readable medium containing (embodying) a program executable in at least one computing device is provided,
the program includes: code that creates an information object in response to receiving a request to store data from an application, wherein the request to store data includes a first file and a first file type or data stream and an identification of a data source for the data stream, and the information object is created based at least in part on the identification of the first file type or data source; code that modifies the information object in response to receiving a request from the application to modify the information object, wherein the information object is locked when the information object is modified; code that provides a copy of the information object to the application in response to receiving a request for the information object from the application; and code that exports the information object to the second file in response to receiving a request to export the information object, wherein the request to export the information object specifies a second file type of the second file. In any one or more embodiments, the information object encapsulates: content data comprising a plurality of attributes relating to an information object and a reference to another information object; form data describing how information objects are presented within a user interface of an application; and a function for manipulating the information object. In any one or more embodiments, the first file and the first file type are associated with a first application and the second file type are associated with a second application.
In an embodiment, there is provided a system comprising: a computing device; and a first application executing in the computing device, the application comprising: logic that creates an information object in response to receiving a request to store data from a second application; logic that modifies the information object in response to receiving a request from the second application to modify the information object; and logic that provides a copy of the information object to the second application in response to receiving a request for the information object from the second application. In any one or more embodiments, the information object includes content data that includes at least one of an attribute related to the information object or a reference to another information object. In any one or more implementations, the information object includes form data that describes how the information object is to be presented within a user interface of a client application executing on another computing device. In any one or more embodiments, the information object includes a function for manipulating the information object, where the function is invokable by an application or a client application executing within the client computing device. In any one or more embodiments, the logic that modifies the information object invokes a function of the information to modify the information object. In any one or more embodiments, the logic that provides a copy of the information object to the second application in response to receiving a request for the information object from the second application further comprises: logic that determines whether an information object is located in memory of a computing device; logic that provides the information object to the second application in response to determining that the information object is located in the memory of the computing device; and logic that, in response to determining that the information object is not located in the memory of the computing device, sends a query to a third application executing in another computing device, wherein the query requests the third application to determine whether the information object is located in the memory of the second computing device. In any one or more embodiments, the logic that provides a copy of the information object to the second application in response to receiving a request for the information object from the second application further comprises: logic that obtains the information object from the other computing device when the third application responds to the query with an indication that the information object is located in the memory of the second computing device; and logic that provides the information object to the second application in response to obtaining the information object from another computing device. In any one or more embodiments, the logic that provides a copy of the information object to the second application in response to receiving a request for the information object from the second application further comprises: logic that provides the second application with a location of the information object when the third application responds to the query with an indication that the information object is located in memory of the second computing device.
In an embodiment, there is provided a method comprising: creating, by the computing device, an information object in response to receiving a request to store data from an application; modifying, by the computing device, the information object in response to receiving a request from the application to modify the information object; and providing, by the computing device, a copy of the information object to the application in response to receiving a request for the information object from the application. In any one or more embodiments, the request to store data includes a file and a file type. In any one or more embodiments, creating, by the computing device, the information object in response to receiving the request to store data from the application further comprises: identifying, by a computing device, a rule for creating an information object, wherein the rule corresponds to a file type; creating, by a computing device, an information object according to a rule; and copying, by the computing device, data from the file into the created information object. In any one or more embodiments, the request to store data includes a data stream. In any one or more embodiments, creating, by the computing device, the information object in response to receiving the request to store data from the application further comprises: identifying, by a computing device, a data source of a data stream; and creating, by the computing device, a plurality of information objects based at least in part on the data source, wherein each of the plurality of information objects encapsulates at least a portion of the data stream. In any one or more embodiments, the information object encapsulates at least one of: content data comprising a plurality of attributes associated with an information object and a reference to another information object; form data describing how information objects are presented within a user interface of an application; or a function for manipulating an information object. In any one or more embodiments, providing, by the computing device, a copy of the information object to the application in response to receiving a request for the information object from the application further comprises: determining, by a computing device, a data store in which information objects are currently stored; and providing, by the computing device, the path to the data store to the application. In any one or more implementations, the method further includes exporting, by the computing device, the information object to the file in response to receiving a request from the application to export the information object to the file. In any one or more embodiments, exporting, by the computing device, the information object to the file in response to receiving the request from the application to export the information object to the file further comprises: identifying, by a computing device, a target file type of a file; identifying, by a computing device, a rule for converting an information object into a target file type; creating, by the computing device, the file; and copying, by the computing device, at least a portion of the content encapsulated within the information object from the information object to the created file.
Brief Description of Drawings
Many aspects of the disclosure can be better understood with reference to the following drawings. The components in the drawings are not necessarily to scale, emphasis instead being placed upon clearly illustrating the principles of the present disclosure. Moreover, in the drawings, like reference numerals designate corresponding parts throughout the several views.
FIG. 1 is a diagram of a networked environment, according to various embodiments of the present disclosure.
FIG. 2 is a diagram of information objects depicted in the networked environment of FIG. 1, according to various embodiments of the present disclosure.
FIG. 3 is a flow diagram illustrating one example of functionality implemented as part of a collaboration server executing in a computing environment in the networked environment of FIG. 1, in accordance with various embodiments of the present disclosure.
FIG. 4 is a flow diagram illustrating one example of functionality implemented as part of a collaboration server executing in a computing environment in the networked environment of FIG. 1, in accordance with various embodiments of the present disclosure.
FIG. 5 is a flow diagram illustrating one example of functionality implemented as part of a collaboration server executing in a computing environment in the networked environment of FIG. 1, in accordance with various embodiments of the present disclosure.
FIG. 6 is a flow diagram illustrating one example of functionality implemented as part of a collaboration server executing in a computing environment in the networked environment of FIG. 1, in accordance with various embodiments of the present disclosure.
FIG. 7 is a flow diagram illustrating one example of functionality implemented as part of a collaboration server executing in a computing environment in the networked environment of FIG. 1 in accordance with various embodiments of the present disclosure.
FIG. 8 is a schematic block diagram providing an example illustration of a computing environment for use in the networked environment of FIG. 1, according to various embodiments of the present disclosure.
Detailed Description
The present disclosure relates to various embodiments for providing a universal data storage format. Data is stored in various information objects, which may include one or more nested information objects, information primitives, attributes, and/or other data. Each information object may also include form information detailing how the information object is best displayed to the user through the user interface, as well as functionality information describing and/or defining a set of behaviors or program functions provided by the information object. In some implementations, data can be imported into the information object from a variety of data and/or file types. In some implementations, data may also be exported from an information object into various data and/or file types. In the following discussion, a general description of the system and its components is provided, followed by a discussion of the operation of the system and its components.
Referring to FIG. 1, a networked environment 100 is shown, in accordance with various embodiments. The networked environment 100 includes a computing environment 103 and a client computing device 106, the computing environment 103 and the client computing device 106 in data communication with each other via a network 109. Network 109 comprises, for example, the internet, an intranet, an extranet, a Wide Area Network (WAN), a Local Area Network (LAN), a wired network, a wireless network, or other suitable network, or the like, or any combination of two or more such networks.
The computing environment 103 may include, for example, a server computer or any other system that provides computing capabilities. Alternatively, the computing environment 103 may use multiple computing devices, which may be used and arranged, for example, in one or more server groups, computer groups, or other arrangements. Such computing devices may be located in a single apparatus or may be distributed among many different geographic locations. For example, the computing environment 103 may include a plurality of computing devices that together may include cloud computing resources, grid computing resources, and/or any other distributed computing arrangement. In some cases, the computing environment 103 may correspond to a resilient computing resource, where the allocated processing power, network, storage, or other computing-related resources may change over time.
Various applications and/or other functions may be performed in the computing environment 103 according to various embodiments. In addition, various data is stored in a data store 111, which data store 111 is accessible to the computing environment 103. As can be appreciated, the data store 111 may represent a plurality of data stores 111. The data stored in the data store 111 is, for example, related to the operation of various applications and/or functional entities described below.
The components executing on the computing environment 103 include, for example, a collaboration server 113 and other applications, services, processes, systems, engines, or functions not discussed in detail herein. The collaboration server 113 is executed to allow one or more users to create and share one or more information objects 116 and possibly other data.
The data stored in data store 111 includes, for example, one or more information objects 116, one or more data filters 117, and possibly other data.
The information object 116 is a data storage object that is structured to model data based on relationships between individual pieces of information. Thus, an information object 116 may include a set of associations with other information objects 116 to indicate data relationships. For example, a link between two information objects 116 may indicate a data dependency, a structural hierarchy, or other association of data modeled by two or more information objects 116. Information objects 116 may also be combined and/or derived from other information objects to represent these relationships. Thus, most information objects 116 may be created from or represented by combinations of other information objects 116.
However, some types or categories of information objects 116 may be reserved for certain types of data that cannot be easily represented as a combination of two or more other information objects 116. For example, duplicate data blocks (e.g., images, sound, video, compressed data, and encrypted data) may require a reserved or unique instance of the information object 116 to serve as a wrapper for the underlying data. Continuous stream data (e.g., a stream of data from a sensor) may also require a unique or reserved instance of the information object 116 to represent the stream data, as the stream data has a beginning portion but not necessarily an end.
In some embodiments of the present disclosure, certain categories or types of information objects 116 may also be reserved for various types of information primitives. An information primitive is a basic representation of information or data that may not be represented or broken down into further sub-components. For example, the information primitives may include unformatted strings, text, numbers, colors, simple shapes, and other such data.
Data filter 117 represents instructions, rules, or other suitable logic used by collaboration server 113 to create information object 116 based at least in part on data provided from one or more sources. For example, data filter 117 may correspond to instructions, rules, or other suitable logic used by collaboration server 113 to transform or import files or data encapsulated in files into information object 116. In some implementations, the data filter 117 may also be used by the collaboration server 113 to export or convert the information object 116 into a file or file type for use by applications that are not configured to work with the collaboration server 113 or the information object 116.
The client computing device 106 represents a plurality of client computing devices that may be coupled to the network 109. The client computing device 106 may 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, laptop computer, personal digital assistant, cellular telephone, smart phone, set-top box, music player, web pad, tablet computer system, game console, e-book reader, or other device with similar capabilities. The client computing device 106 may include a display 119. The display 119 may include, for example, one or more devices such as a Liquid Crystal Display (LCD) display, a gas plasma-based flat panel display, an Organic Light Emitting Diode (OLED) display, an LCD projector, or other type of display device, and the like.
The client computing device 106 may be configured to execute various applications, such as a client application 123 and/or other applications. The client application 123 may be executed in the client computing device 106 to, for example, access network content provided by the computing environment 103 and/or other servers to present a user interface 133 on the display 119. To this end, the client application 123 may include, for example, a browser, a dedicated application, and the like, and the user interface 133 may include a web page, an application screen, and the like. The client computing device 106 may be configured to execute applications beyond the client application 123, such as, for example, an email application, a social networking application, a word processor, a spreadsheet, and/or other applications.
Further, one or more sensors and other data feeds 126 may be in network communication with collaboration server 113 or client application 123. Sensors and other data feeds may include any electronic device capable of generating or recording data and transmitting the data to collaboration server 113. Examples of sensors and other data feeds 126 include accelerometers, temperature sensors or thermostats, video or web cameras, microphones, noise sensors, pressure sensors, meters, timers, flow meters, light sensors, outputs or results of applications or programs, and other such devices or programs.
Finally, one or more other computing environments 129 can be connected to the computing environment 103, the client computing device 106, and/or one or more sensors and other data feeds 126 via the network 109. In various embodiments, the other computing environment 129 may be configured in a manner similar to that of the computing environment 103. In such an embodiment, the other computing environment 129 would include one or more collaboration servers 113, one or more data stores 111, and one or more information objects 116 stored in the other computing environment 129. In some implementations, the client computing device 106 may be configured to work with the collaboration server 113 in the computing environment 103 or other computing environment 129. In various embodiments, the collaboration server 113 may be capable of interacting with information objects 116 stored in other computing environments 129.
Although fig. 1 depicts a network centric configuration that represents a client-server model, this does not exclude other configurations. For example, in some implementations, the client computing device 106 may be a computing device located within the computing environment 103. In various implementations, the client application 123 may be located in the computing environment 103 along with the collaboration server 113, but the client application 123 may pass or present the user interface 133 on the display 119 of the client computing device 106. In other implementations, the collaboration server 113, the data store 111, and the client application 123 may all be located within a single computing device, such as the client computing device 106 or within a single computer within the computing environment 103.
Next, a general description of the operation of the various components of the networked environment 100 is provided. First, the client application 123 makes a request for one or more information objects 116 or copies of the information objects 116. For example, the client application 123 may request the information object 116 for use in a presentation, report, or similar document. As another example, the client application 123 may request one or more information objects 116 for use in data analysis.
In response to a request by the client application 123, the collaboration server 113 determines whether the requested information object 116 is stored within the data store 111. If the requested information object 116 is located within the data store 111, the collaboration server provides the requested information object 116 to the client application 123. If the requested information object 116 is not located within the data store 111, the collaboration server 113 determines whether the requested information object 116 is located in another data store 111 in another computing environment 129. If the requested information object 116 is found to be located in other data stores 111 in other computing environments 129, the collaboration server 113 may request the information object 116 from the other computing environments 129 and relay the requested information object to the client application 123. However, in some implementations, the collaboration server 113 may instead provide the location of the requested information object 116 within other computing environments 129 to the client application 123. In such an implementation, the client application 123 would then request and/or retrieve the information object 116 from the other computing environment 129. If the requested information object 116 cannot be found, the collaboration server 113 returns an error or other message to the client application 123. In some implementations, the collaboration server 113 can also lock the requested information object 116 in the data store 111 to prevent other client applications 123 from manipulating the requested information object 116, thereby preventing the data stored by the information object 116 from being simultaneously modified and becoming irrelevant over time.
Once the client application 123 receives the copy of the requested information object 116, the client application 123 uses or manipulates the requested information object 116. The use and/or manipulation of the information object 116 may be programmatic or may be the result of user intervention.
For example, the client application 123 may be a state monitor or similar application. In such embodiments, the client application 123 may request one or more information objects 116, analyze the requested information objects 116, and create or modify a third information object 116 that represents the results of the analysis performed on the requested information objects 116. In such implementations, the client application 123 may also present the notification within the user interface 133 on the display 119 of the client computing device 106.
As another example, the client application 123 may be a presentation application or similar application. In such an implementation, the client application 123 may allow a user to display one or more information objects 116 as part of a presentation within the user interface 133, manipulate the one or more information objects 116 using the user interface 133, and create a new information object 116 that represents a new relationship or new data between two unrelated information objects 116. Such an embodiment is described in further detail in related U.S. patent application 14/208,346 entitled "Visualization Interface for Information Object System," filed 3/13 2014, and which is incorporated herein by reference in its entirety.
However, in other implementations, the client application 123 may instead request a list of information objects 116 available for use by the client application 123 from the collaboration server 113. The list of information objects 116 may include all identifiers of each information object 116 that may be used or manipulated by the client application 123, as well as the type of data stored in the information object 116 and/or the function provided by the information object 116 to manipulate the information object 116 or to query the information object 116 for data stored within the information object 116 and/or encapsulated by the information object 116.
In response to a request by the client application 123, the collaboration server 113 determines whether the requested information object 116 is stored within the data store 111. If the requested information object 116 is located within the data store 111, the collaboration server 113 provides a list of the requested information object 116 to the client application 123. If the requested information object 116 is not located within the data store 111, the collaboration server 113 determines whether the requested information object 116 is located in another data store 111 in another computing environment 129. If the requested information object 116 is found to be located in other data stores 111 in other computing environments 129, the collaboration server 113 may request the information object 116 from the other computing environments 129 and include them in a list of information objects 116 provided to the client application 123. However, in some implementations, the collaboration server 113 may instead provide the location of the requested information object 116 within other computing environments 129 to the client application 123. In such an embodiment, the client application 123 would then subsequently request another list of information objects 116 from the other computing environment 129. If the requested information object 116 cannot be found, the collaboration server 113 returns an error or other message to the client application 123.
After receiving the list of information objects 116, the client application 123 may then invoke one or more functions provided by the information objects 116. For example, the client application 123 may call a function to update information stored in the information object 116 or encapsulated by the information object 116, obtain a list of information objects 116 related to a particular information object 116, or call other functions provided by the information object 116, as will be described further herein.
In some implementations, the client application 123 can present an implementation of one or more of the information objects 116 within a user interface 133 on the display 119. For example, the client application 123 may present multiple information objects 116 and illustrate relationships between different information objects 116 to provide a mapping of the data represented by the various information objects 116 to the user. The client application 123 may also provide the user with the ability to explore relationships between information objects 116 using the user interface 133. Such an embodiment is described in further detail in related U.S. patent application 14/208,346 entitled "Visualization Interface for Information object System," filed 3/13 2014, and which is incorporated herein by reference in its entirety.
In some implementations, collaboration server 113 can also receive data from sensors and other data feeds 126. Sensors and other data feeds 126 may include any electronic device capable of generating or recording data and transmitting data to collaboration server 113. Examples of sensors and other data feeds 126 include accelerometers, temperature sensors or thermostats, video or web cameras, microphones, noise sensors, pressure sensors, meters, timers, flow meters, light sensors, outputs or results of applications or programs, and other such devices or programs.
The data received from the sensors and other data feeds 126 may include information objects 116 to be verified by the collaboration server 113 and/or information objects 116 to be stored by the collaboration server 113 in the data store 111. The data received from the sensors and other data feeds 126 may also include raw and/or non-packaged data that the collaboration server 113 converts to or includes in the information objects 116 stored in the data store 111. For example, a manufacturing machine connected to the collaboration server 113 may provide one or more information objects 116 that encapsulate and represent the manufacturing machine, status updates related to the manufacturing machine, and the like. In some implementations, collaboration server 113, client application 123, or other application capable of accessing information object 116 can be capable of issuing commands to sensor and other data feeds 126 by manipulating information object 116 in relation to the sensor and other data feeds. For example, the client application 123 may be capable of issuing commands to the manufacturing machine in the above-described examples through a function provided by the information object 116 representing the manufacturing machine.
Referring next to FIG. 2, a depiction of the data structure of the information object 116 is shown. Each information object 116 has at least one unique identifier 203 that uniquely identifies a particular instance of the information object 116 within the data store 111 (fig. 1). Each information object 116 also includes content 206. Included in the content 206 of information object 116 may be one or more information object references, such as information object reference 209a through information object reference 209 n. The content 206 of the information object 116 may also include attributes 213 that describe the information object 116. Further, the information object 116 may include form data 216 and a plurality of functions 219.
The unique identifier 203 may be a unique alphanumeric number, such as the result of a cryptographic hash function, or may be a unique number generated by the collaboration server 113 (FIG. 1) when the information object 116 is created. For example, the collaboration server 113 may apply a cryptographic hash function, such as a version of a secure hash algorithm, to the information object 116 to generate the unique identifier 203. In another example, the collaboration server 113 may increment a counter when the information object 116 is created and then set the unique identifier 203 equal to the value of the counter. In some embodiments, these two methods may be combined to minimize the risk of collisions from cryptographic hash functions or duplicate counter values resulting from integer overflow errors. For example, a counter may be incremented and a value added to or before the result of the cryptographic hash function to create the unique identifier 203.
The content 206 corresponds to data represented by an information object 116, which information object 116 may include one or more information object references 209a.. n and/or one or more attributes 213. Each information object reference 209a.. n points to or links to a related information object 223. The related information object 223 may correspond to information that is a component of the information object 116 or information that is related to the information object 223 in some way. For example, an information object 116 representing the country "russia" may have an information object reference 209, the information object reference 209 linking the information object 116 to a related information object 223 corresponding to the city "moscow". The information object 116 representing "russia" may also include a second information object reference 209 to the related information object 223 representing the list of countries and a third information object reference 209 to the related information object 223 representing "co-production connotation".
The attributes 213 of the information object 116 represent data stored within the information object 116 that may or may not be directly presented to the user as primary content. The attributes 213 of the information object 116 may include, for example, a username of the user that originally created the information object 116, a username of each user that modified the information object 116, a timestamp that records the creation of the information object 116 and/or the modification of the information object 116, a version of an interface standard supported by the information object 116 for use by the collaboration server 113 (FIG. 1) or the client application 123 (FIG. 1), a linguistic and/or cultural identification of the data represented by the information object 116, and other such data. In some instances, the attributes 213 themselves may be represented by other information objects 116. For example, a username of the creator of the information object 116 may be represented by the information object 116 representing a user account.
The form data 216 corresponds to data necessary to represent or display the information object 116 on the display 119 (FIG. 1). For example, the form data 216 may represent the size of the information objects 116 on the display 119, the location of the information objects 116 on the display 119, the transparency values of the information objects 116, whether or not to overlay or underlie the information objects on the display 119 relative to respective ones of the related information objects 223, and similar data or values. In some instances, the form data 216 may also specify a default position of the associated information object 223 relative to the information object 116 on the display 119. More generally, the form data 216 describes how the information objects 116 and user interface options related to the information objects 116, such as menus, menu options, and other user interface elements, are presented on the display 119 of the client computing device 106. For multiple levels of packaging, such as where a first information object 116 is packaged or linked to one or more sub-level or peer information objects 116, multiple sets of formal data 216 may be used on an information object 116 or information objects 116, with each information object 116 having a set of formal data 216 representing a level or similar relationship of information packaging.
The function 219 corresponds to a programmable interface, method, or similar mechanism by which the client application 123 (FIG. 1) or collaboration server 113 can interact with or otherwise manipulate the information object 116. For example, the functions 219 may include functions for setting the information object 116 visible or invisible on the display 119, functions for editing or otherwise modifying the information object 116, functions for creating a new information object reference 209, or otherwise linking the information object 116 to the related information object 223. The functions 219 may also include functions for importing data into the information object 116 or exporting data from the information object 116 into another format, such as an application-specified data file. In some embodiments, the function 219 may also allow data to be added to and/or removed from the information object 116, as well as allow data contained within the information object 116 to be modified. In various embodiments, the function 219 may also be invoked or used by the client application 123 or collaboration server 113 to render the information object 116 on the display 119 of the client computing device 106 according to the form data 216 within the corresponding information object 116.
In some embodiments, one or more functions 219 may be provided by the information object 116 to allow analysis of the data contained within the information object 116. For example, the information object 116 representing the number of attendees of a baseball team at each baseball game during a conventional baseball season may provide an arithmetic function 219 that provides the average and median attendees of the baseball team during the conventional baseball season. Depending on the data stored in the information object 116 and the functions 219 provided by various implementations of the various embodiments described herein, more complex data analysis functions may be provided by a separate information object 116.
The information object 116 or related information object 223 may also have a separate information object reference 209, such as a navigation information object 226, a menu area information object 229, and a client device information object 233, corresponding to the user interface element represented by the information object. For example, the navigation information object 226 may describe or define the relationship or structure of the currently selected information object 116 relative to other information objects 116. In some implementations, the menu area information object 229 may describe or define components of various menus or other user interfaces 133 (FIG. 1) that may be used to interact with the information object 116, such as to edit, copy, or delete the information 116. In some embodiments, the menu area information object 229 may also provide the functionality to create a new information object 116. Further, in some embodiments, client device information object 233 may contain user and system wide settings, such as volume, display brightness, network connection settings, and other settings.
Referring next to FIG. 3, a flowchart of one example of the operation of providing a portion of the collaboration server 113 is shown, in accordance with various embodiments. It should be understood that the flow diagram of fig. 3 provides merely an example of many different types of functional arrangements that may be employed to implement the operation of portions of the collaboration server 113 as described herein. As an alternative, the flowchart of FIG. 3 may be viewed as depicting an example of elements of a method implemented in the computing environment 103 (FIG. 1) in accordance with one or more embodiments.
Beginning in block 303, the collaboration server 113 receives a request to create an information object 116 and data to be stored in the newly created information object 116. The request may be received from a number of sources, such as a client application 123 (FIG. 1) interacting with the collaboration server 113, a sensor or other data feed 126 (FIG. 1) that periodically sends data to the collaboration server 113, or other such sources.
Proceeding next to block 306, the collaboration server 113 determines whether the request to create the information object 116 is valid. For example, the collaboration server 113 may determine whether the requesting entity is authorized or has the right to create the information object 116. The collaboration server 113 may also verify that the transmitted data is valid data for the type of information object 116 that the collaboration server 113 has been requested to create. For example, if the collaboration server 113 has been requested to create an information object 116 for storing video data, the collaboration server 113 may check to determine that the data is indeed video data, and not some other type of data. If the request is invalid, execution proceeds to block 309. Otherwise, execution proceeds to block 313.
Moving to block 309, the collaboration server 113 returns an error message, error code, or information object 116 representing the error to the requestor. Execution then ends.
Referring next to block 313, the collaboration server 113 creates the information object 116. The collaboration server 113 may allocate memory in the computing environment 103 (FIG. 1) to store and/or represent the information objects 116 and their corresponding data structures. In those embodiments where a null or "blank" information object 116 is desired, execution proceeds to block 316. However, in those embodiments where information objects 116 are created in response to a request to store information, such as when collaboration server 113 receives data from client application 123 or sensors and/or other data feeds 126, the information is copied or placed into content 206 (FIG. 2) of information object 116 and form data 216 and functions 219 appropriate for information object 219 are assigned to information object 116. For example, where video data is to be saved within a newly created information object 116, the collaboration server 113 may also assign the information object the appropriate form data 216 and functions 219 for viewing, modifying, and/or otherwise interacting with or manipulating the video data within the information object 116.
Proceeding to block 316, the collaboration server 113 generates a unique identifier 203 (FIG. 2) for the information object 116 and assigns the unique identifier 203 to the information object 116. The unique identifier 203 may be generated using any one or more of a variety of methods. For example, the unique identifier 203 may be a number within a sequence of numbers, such as would be generated using a counter or similar tracking mechanism. In such an embodiment, the unique identifier 203 would be equal to the value of the counter. After assigning the unique identifier 203, the counter will then be incremented for use in creating subsequent information objects 116.
The unique identifier 203 may also be generated using one or more hash functions such as various versions of a message digest algorithm (e.g., md4, md5, and the like), a secure hash algorithm (e.g., SHA-1, SHA-3, and the like), a RACE raw integrity check message digest (ripemmd) algorithm, and other such methods. In such implementations, the content 206 (fig. 2) or other data may be used as an input to a hash function, and the result of the hash function may be used as the unique identifier 203. Other methods may also be used to generate the unique identifier 203.
Moving to block 319, collaboration server 113 saves information object 116 to data store 111 (FIG. 1). Saving the information objects 116 to the data store 111 may involve writing the information objects 116 to memory, a disk, or other such storage media. In some embodiments, the information object 116 may be saved to a database or similar system. In such embodiments, the information object 116 may be written to the database as a binary object, such as when binary data is stored within a relational database or other such database. After saving the information object 116 to the data store 111, execution ends.
Referring next to FIG. 4, a flowchart of one example of the operation of providing a portion of the collaboration server 113 is shown, in accordance with various embodiments. It should be understood that the flow diagram of fig. 3 provides merely an example of many different types of functional arrangements that may be employed to implement the operations of portions of the collaboration server 113 as described herein. As an alternative, the flowchart of FIG. 3 may be viewed as depicting an example of elements of a method implemented in the computing environment 103 (FIG. 1) in accordance with one or more embodiments.
Beginning in block 403, the collaboration server 113 receives a request to modify an information object 116 and data to be added to the information object 116, removed from the information object 116, and/or modified within the information object 116. The request may be received from a number of sources, such as a client application 123 (FIG. 1) interacting with the collaboration server 113, a sensor or other data feed 126 (FIG. 1) that periodically sends data to the collaboration server 113, or other such sources.
Proceeding next to block 406, the collaboration server 113 determines whether the request to modify the information object 116 is valid. For example, the collaboration server 113 may determine whether the requesting entity is authorized or has the right to modify the information object 116. The collaboration server 113 may also verify that the transmitted data is valid data for the type of information object 116 that the collaboration server 113 has been requested to modify. For example, if the collaboration server 113 has requested that the information object 116 used to store video data be modified, the collaboration server 113 may check to determine that the data is indeed video data or appropriate metadata, and not some other type of data. If the request is invalid, execution proceeds to block 409. Otherwise, execution proceeds to block 413.
Moving to block 409, the collaboration server 113 returns an error message, error code, or information object 116 indicating an error to the requestor. Execution then ends.
Referring next to block 413, collaboration server 113 locks information object 116 to be modified. Locking the information object 116 may include using one or more control mechanisms to prevent other processes, applications, machines, and/or users from simultaneously manipulating or modifying the information object 116 through the collaboration server 113. For example, collaboration server 113 may use tokens, mutexes, spin locks, or other such mechanisms to prevent other processes, applications, machines, and/or users from manipulating or modifying information object 116 at the same time. If the information object 116 has been locked for modification, the collaboration server 113 will pause execution until the information object 116 is unlocked. Otherwise, execution continues to block 416.
Proceeding to block 416, the collaboration server 113 obtains the information object 116 to be modified from the data store 111 (FIG. 1), or otherwise accesses the information object 116. For example, the collaboration server 113 may use the unique identifier 203 (FIG. 2) of the information object 116 specified in the request to modify the information object 116 in order to locate, identify, and/or retrieve the information object 116 from the data store 111. Collaboration server 113 then proceeds to modify content 206 (FIG. 2), information object references 209a-n (FIG. 2), attributes 213 (FIG. 2), form data 216 (FIG. 2), and/or functions 219 (FIG. 2) of information object 116 so that information object 116 will reflect the requested changes and/or modifications.
Moving to block 419, the collaboration server 113 unlocks the information object 116 so that other processes, applications, machines, and/or users will be able to modify or otherwise use the information object 116. The unlock information object 116 may include a release token, a mutex, a spin lock, or other such mechanism. Execution then ends.
Referring next to FIG. 5, a flowchart of one example of the operation of providing a portion of the collaboration server 113 is shown, in accordance with various embodiments. It should be understood that the flow diagram of fig. 3 provides merely an example of many different types of functional arrangements that may be employed to implement the operations of portions of the collaboration server 113 as described herein. As an alternative, the flowchart of FIG. 3 may be viewed as depicting an example of elements of a method implemented in the computing environment 103 (FIG. 1) in accordance with one or more embodiments.
Beginning in block 503, the collaboration server 113 determines the type of file to import. The type of file may be determined using one or more of several methods. For example, the type of file may be determined by checking whether the name of the file includes a file extension that matches a known file type. In other embodiments, collaboration server 113 may examine the first few bytes or the first few kilobytes of a file to determine whether the file data includes a file header or identifier value that matches a known file type. In other implementations, the collaboration server 113 can identify the type of file to import based on other data. For example, a user of client application 123 (FIG. 1) may have identified a file type when sending the file to collaboration server 113 for import, or sensor or other data feed 126 may similarly have included an identification of a file type in a request to import a file sent to collaboration server 113. Other methods for identifying file types may be used in addition to or in place of the example methods described above. Some embodiments may use one or more combinations of the above explicit methods to increase the accuracy and/or reliability of identification of file types.
Moving to block 506, the collaboration server 113 determines whether there is an appropriate data filter 117 (FIG. 1) for creating the information object 116 for the type of file received. If a corresponding data filter 117 does not exist, execution proceeds to block 509. If a corresponding data filter 117 is found for the type of file received, execution proceeds instead to block 513.
Proceeding to block 509, the collaboration server 113 creates the base information object 116 and inserts the file into the information object 116. Thus, the base information object 116 serves as a wrapper that allows received files to be stored in the data store 111 and made available in response to future requests to the collaboration server 113 regarding the file or data in the file. The created information object 116 is considered a base information object 116, as long as the information object 116 may not include any attribute 213 (FIG. 2), form data 216 (FIG. 2), or function 219 (FIG. 2), which would be included in the information object 116 for a particular type of file or data. For example, the information object 116 created for a bitmap image file may include attributes 213 related to the size of the picture represented by the bitmap image file, the particular bitmap encoding used in the bitmap image file, and other image-specific attributes 213. Instead, the base information object 116 may have the absolute minimum of attributes 213 necessary to store files within the information object 116. After the file is stored in the base information object 116, execution then ends.
Referring next to block 513, the collaboration server 113 creates the information object 116 according to the requirements and/or rules specified in the identified data filter 117. This includes reserving sufficient space in memory for the content 206 (FIG. 2) of the information object 116 and including within the information object 116 the functions 219 and form data 216 specified by the data filter 117. At this time, a unique identifier 203 (FIG. 2) is also assigned to the newly created information object 116. At this point, any information object references 209 (FIG. 2) to the related information objects 223 (FIG. 2) are also created.
Moving to block 516, collaboration server 113 examines and/or parses the file to extract data from the file specified by data filter 117. The extracted data is then copied and/or inserted into the content 206 of the information object 116 as required by the data filter 117. Execution then ends.
It should also be noted that although the above operations are discussed in the context of creating an information object 116 from a file, similar operations will apply to creating an information object 116 from non-file data. For example, one or more information objects 116 may be created based on a data stream, such as an audio stream or a video stream, using methods similar to those described above.
Referring next to FIG. 6, a flowchart of one example of the operation of providing a portion of the collaboration server 113 is shown, in accordance with various embodiments. It should be understood that the flow diagram of fig. 3 provides merely an example of many different types of functional arrangements that may be employed to implement the operations of portions of the collaboration server 113 as described herein. As an alternative, the flowchart of FIG. 3 may be viewed as depicting an example of elements of a method implemented in the computing environment 103 (FIG. 1) in accordance with one or more embodiments.
Beginning in block 603, the collaboration server 113 receives a request to export an information object 116 to a file. The request may identify the type of file to export, or the information object 116 may specify the type of file to which the information object 116 may be exported. For example, the information object 116 representing audio information may specify that the audio information represented by the information object may be exported to a particular format and/or file type. The request may be received from one or more sources, including client application 123 (FIG. 1), sensor or other data feed 126 (FIG. 1), or some other source.
Moving to block 606, the collaboration server 113 determines whether a data filter 117 exists, the data filter 117 for the corresponding file type of the file to which the information object 116 is to be exported. If a corresponding data filter 117 does not exist, execution proceeds to block 609. If a corresponding data filter 117 is found for the type of file received, execution proceeds instead to block 613.
Referring next to block 609, the collaboration server 113 returns an error message, error code, or information object 116 representing the error to the requestor. Execution then ends.
Continuing to block 613, collaboration server 113 writes the content 206 of the information object to a file according to the specifications of data filter 117. For example, an information object 116 representing an image may have image data stored in the content 206 of the information object 116 written to a bitmap file, but data such as the form data 216 or the function 219 will not be written to the bitmap file. Execution then ends.
Referring next to FIG. 7, a flowchart of one example of the operation of providing a portion of the collaboration server 113 is shown, in accordance with various embodiments. It should be understood that the flow diagram of fig. 3 provides merely an example of many different types of functional arrangements that may be employed to implement the operations of portions of the collaboration server 113 as described herein. As an alternative, the flowchart of FIG. 3 may be viewed as depicting an example of elements of a method implemented in the computing environment 103 (FIG. 1) in accordance with one or more embodiments.
Beginning in block 703, collaboration server 113 validates a request received from client application 123 (FIG. 1) for information object 116 (FIG. 1) representing sensor or other data feed 126 (FIG. 1). To validate the request, the collaboration server 113 can determine whether the client application 123 has permission to access the requested information object 116, determine whether the requested information object 116 is present, determine whether the request is properly formatted, and/or make other such determinations. If the request is determined to be invalid, execution ends. Otherwise, execution proceeds to block 706.
Proceeding to block 706, the collaboration server 113 provides the information object 116 to the client application 123. For example, the collaboration server 113 may provide a copy of the information object 116 to the client application 123 to cause the client application 123 to operate locally on the client computing device 106 (FIG. 1). In such embodiments, the collaboration server 113 may lock the information object 116 such that other client applications 123 cannot manipulate the information object 116 in order to prevent the information object 116 from entering a non-coherent state due to multiple and possibly conflicting modifications of different client applications 123. In other implementations, the collaboration server 113 may expose (expose) one or more functions 219 of the information object 116 (FIG. 2) and/or the content 206 of the information object 116 to the client application 123.
Moving to block 709, collaboration server 113 receives one or more commands from client application 123 to be executed by sensors or other data feeds 126. In those embodiments where the collaboration server 113 has previously provided a copy of the information object 116 to the client application 123, a command may be received when the client application 123 returns an updated version of the information object 116 to the collaboration server 113. Changes to information object 116 will represent commands executed by sensor or other data feed 126. In those embodiments where the collaboration server 113 exposes one or more functions 219 and/or content 206 of the information object 116, the client application 123 may provide a list or series of functions 219 that are called or executed on the information object 116 by the collaboration server 113. For example, the client application 123 may use a Remote Procedure Call (RPC) or similar mechanism to call a particular function 219 or a series of functions 219 of the information object 116.
Referring next to block 713, collaboration server 113 determines whether the command received from client application 123 is valid. For example, collaboration server 113 can determine whether client application 123 has provided appropriate arguments to any functions 219 provided by information object 116, whether client application 123 has the right to call in or invoke the particular functions 219 used, and/or other similar determinations. If the collaboration server 113 determines that one or more of the commands are invalid, execution ends. If the collaboration server 113 determines that all commands received from the client application 123 are valid, execution proceeds to block 716.
Proceeding to block 716, collaboration server 113 executes the commands received from client application 123 and relays any necessary instructions to the sensors or other data feeds 126 represented by information objects 116. For example, collaboration server 113 may execute necessary functions 219 to update the content 206 of information objects 116 stored in data store 111. To the extent that the one or more commands correspond to one or more functions 219 that indicate or otherwise require the sensor or other data feed 126 to perform a particular action, collaboration server 113 relays any required instructions or commands to sensor or other data feed 126.
For example, the client application 123 may have correctly called a "PowerOff" function 219 provided by the information object 116 representing the manufacturing machine. In response, the collaboration server 113 may execute a "power off" function 219 of the information object 116 to set the attribute 213 of the information object 116 to a value or other representation equal to the "off state. Collaboration server 113 may then send a command to the manufacturing machine to begin a power down routine. In some implementations, the commands may correspond to commands accessible to the collaboration server 113, the collaboration server 113 passing through an Application Programming Interface (API) exposed by the sensors or other data feeds 126 (e.g., manufacturing machines). In such embodiments, collaboration server 113 may use Remote Procedure Calls (RPCs) or similar mechanisms to invoke the commands.
Moving to block 719, collaboration server 113 will update information object 116 after sending any commands to sensors or other data feeds 126, if necessary. For example, in response to receiving an RPC from collaboration server 113, sensor or other data feed 126 may respond with a result, error code, or other return value. In such instances, the collaboration server 113 may update the information object 116 to reflect the received results, error codes, or other return values. The collaboration server 113 then sends the result of the operation to the client application 123. For example, collaboration server 113 may provide client application 123 with an updated version of information object 116, provide client application 123 with a return code or result code indicating the result of function 219 or functions 219 invoked by client application 123, or provide other such results to client application 123. Execution then ends.
Referring to FIG. 8, a schematic block diagram of a computing environment 103 is shown, in accordance with embodiments of the present disclosure. The computing environment 103 includes one or more computing devices 800. Each computing device 800 includes at least one processor circuit, e.g., having a processor 803 and a memory 806, both coupled to a local interface 809. To this end, each computing device 800 may include, for example, at least one server computer or similar device. The local interface 809 may include, for example, a data bus with an accompanying address/control bus or other bus structure as may be appreciated.
Stored in the memory 806 are both data and several components that may be executed by the processor 803. In particular, stored in the memory 806 and executable by the processor 803 are the collaboration server 113 and possibly other applications. Further, stored in the memory 806 may be a data store 111 and other data. Further, an operating system 811 can be stored in the memory 806 and executed by the processor 803.
It is understood that there may be other applications stored in the memory 806 and executable by the processor 803, as can be appreciated. Where any of the components discussed herein are implemented in software, any of a number of programming languages may be employed, such as, for example, C, C + +, C #, Objective C, B,Perl、PHP、VisualRuby、Or other programming language.
A number of software components are stored in the memory 806 and executable by the processor 803. In this regard, the term "executable" means a program file in a form that can be ultimately run by the processor 803. An example of an executable program may be, for example, a compiler, which may be converted to machine code in a format that may be loaded into a random access portion of memory 806 and executed by processor 803, source code that may be represented in a proper format, such as object code that can be loaded into a random access portion of memory 806 and executed by processor 803, or source code that may be interpreted by another executable program to generate instructions in a random access portion of memory 806 for execution by processor 803, etc. Executable programs may be stored in any portion or component of memory 806, including for example, Random Access Memory (RAM), Read Only Memory (ROM), hard disk drives, solid state drives, USB flash drives, memory cards, optical disks such as Compact Disks (CDs) or Digital Versatile Disks (DVDs), floppy disks, magnetic tape, or other memory component.
Memory 806 is defined herein to include both volatile and non-volatile memory and data storage components. Volatile components are those components that do not retain data values when power is lost. Non-volatile components are those that retain data when power is lost. Thus, the memory 806 may include, for example, Random Access Memory (RAM), Read Only Memory (ROM), hard disk drives, solid state drives, USB flash drives, memory cards accessed via a memory card reader, floppy disks accessed via an associated floppy disk drive, optical disks accessed via an optical disk drive, magnetic tape accessed via an appropriate tape drive, and/or other memory components or a combination of any two or more of these memory components. Additionally, RAM may include, for example, Static Random Access Memory (SRAM), Dynamic Random Access Memory (DRAM), or Magnetic Random Access Memory (MRAM), among other such devices. The ROM may include, for example, programmable read-only memory (PROM), erasable programmable read-only memory (EPROM), electrically erasable programmable read-only memory (EEPROM), or other similar memory devices.
Further, the processor 803 may represent multiple processors 803 and/or multiple processor cores, and the memory 806 may represent multiple memories 806 operating respectively in parallel processing circuits. In such cases, the local interface 809 can be a suitable network facilitating communication between any two of the processors 803, between any one of the processors 803 and any one of the memories 806, or between any two of the memories 806, among others. Local interface 809 may include additional systems designed to coordinate this communication, including, for example, performing load balancing. The processor 803 may have an electrical or some other applicable structure.
While the collaboration server 113 and the various other systems described herein may be embodied in software or code executed by general purpose hardware as discussed above, they may alternatively be embodied in dedicated hardware or a combination of software/general purpose hardware and dedicated hardware. If embodied in dedicated hardware, each can be implemented as a circuit or state machine using any one or combination of a variety of technologies. These techniques may include, but are not limited to, discrete logic circuitry with logic gates to implement various logic functions upon application of one or more data signals, an Application Specific Integrated Circuit (ASIC) with appropriate logic gates, a Field Programmable Gate Array (FPGA) or other component, and so forth. Such techniques are generally well known to those skilled in the art and are therefore not described in detail herein.
The flowcharts of fig. 3-7 illustrate the functions and operations of an implementation of portions of the collaboration server 113. If embodied in software, each block may represent a module, segment, or portion of code, which comprises program instructions to implement the specified logical function(s). The program instructions may be embodied in the form of source code comprising human-readable statements written in a programming language or machine code comprising digital instructions recognizable by a suitable execution system in a computer system or other system, such as the processor 803. The machine code may be translated from source code or the like. If embodied in hardware, each block may represent a circuit or a plurality of interconnected circuits for implementing the specified logical function.
While the flow diagrams of fig. 3-7 show a particular order of execution, it should be understood that the order of execution may differ from that depicted. For example, the order of execution of two or more blocks may be changed relative to the order shown. Also, two or more blocks shown in succession in fig. 3-7 may be executed concurrently or with partial concurrence. Furthermore, in some embodiments, one or more of the blocks shown in fig. 3-7 may be skipped or omitted. In addition, any number of counters, state variables, warning lights, or messages may be added to the logical flows 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.
Further, any logic or applications described herein (including collaboration server 113) comprising software or code may be embodied in any non-transitory computer readable medium for use by or in connection with an instruction execution system, such as processor 803 in a computer system or other system. To this extent, logic can include, for example, statements containing instructions and statements that can be retrieved from a computer-readable medium and executed by an instruction execution system. In the context of this disclosure, a "computer-readable medium" can be any medium that can contain, store, or maintain the logic or applications described herein for use by or in connection with the instruction execution system.
The computer readable medium may include any of a number of physical media such as, for example, magnetic, optical, or semiconductor media. More specific examples of suitable computer readable media would include, but are not limited to, magnetic tape, magnetic floppy disk, magnetic hard drive, memory card, solid state drive, USB flash drive, or optical disk. Further, the computer-readable medium may be a Random Access Memory (RAM) including, for example, a Static Random Access Memory (SRAM) and a Dynamic Random Access Memory (DRAM) or a Magnetic Random Access Memory (MRAM). Additionally, the computer-readable medium may be read-only memory (ROM), programmable read-only memory (PROM), erasable programmable read-only memory (EPROM), electrically erasable programmable read-only memory (EEPROM), or other types of memory devices.
Further, any logic or application described herein including collaboration server 113 may be implemented and constructed in a variety of ways. For example, one or more of the applications described may be implemented as modules or components of a single application. Further, one or more applications described herein may be executed in a shared or separate computing device, or a combination thereof. For example, multiple applications described herein may execute in the same computing device 800 or in multiple computing devices in the same computing environment 103. Further, it should be understood that terms such as "application," "service," "system," "engine," "module," and the like may be interchangeable and are not intended to be limiting.
Unless expressly stated otherwise, a disjunctive language such as the phrase "X, Y or at least one of Z" is understood in context as being commonly used to present items, terms, etc. can be X, Y or Z or any combination thereof (e.g., X, Y and/or Z). Thus, such disjunctive language is not generally intended to, and should not, imply that certain embodiments require at least one of X, at least one of Y, or at least one of Z to each be present.
It should be emphasized that the above-described embodiments of the present disclosure are merely possible examples of implementations set forth for a clear understanding of the principles of the disclosure. Many variations and modifications may be made to the above-described embodiments without departing substantially from the spirit and principles of the disclosure. All such modifications and variations are intended to be included herein within the scope of this disclosure and protected by the following claims.
Claims (20)
1. A non-transitory computer readable medium containing a program executable in at least one computing device, comprising:
code that creates an information object in response to receiving a request to store data from an application, wherein the request to store data comprises a first file and a first file type or comprises a data stream and an identification of a data source for the data stream, and the information object is created based at least in part on the first file type or the identification of the data source;
code that modifies the information object in response to receiving a request from the application to modify the information object, wherein the information object is locked when the information object is modified;
code that provides a copy of the information object to the application in response to receiving a request for the information object from the application; and
code that exports the information object to a second file in response to receiving a request to export the information object, wherein the request to export the information object specifies a second file type of the second file.
2. The non-transitory computer-readable medium of claim 1, wherein the information object encapsulates:
content data comprising a plurality of attributes relating to the information object and a reference to another information object;
form data describing how to present the information object within a user interface of the application; and
a function for manipulating the information object.
3. The non-transitory computer-readable medium of claim 1, wherein the first file and the first file type are associated with a first application and the second file type are associated with a second application.
4. A system, comprising:
a computing device; and
a first application executing in the computing device, the application comprising:
logic that creates an information object in response to receiving a request to store data from a second application;
logic that modifies the information object in response to receiving a request from the second application to modify the information object; and
logic that provides a copy of the information object to the second application in response to receiving a request for the information object from the second application.
5. The system of claim 4, wherein the information object comprises content data including at least one of an attribute related to the information object or a reference to another information object.
6. The system of claim 4, wherein the information object includes form data that describes how the information object is to be presented within a user interface of a client application executing on another computing device.
7. The system of claim 4, wherein the information object includes a function for manipulating the information object, wherein the function is invokable by the application or a client application executing within a client computing device.
8. The system of claim 7, wherein the logic that modifies the information object invokes a function of the information to modify the information object.
9. The system of claim 4, wherein the logic that provides a copy of the information object to the second application in response to receiving a request for the information object from the second application further comprises:
logic that determines whether the information object is located in memory of the computing device;
logic that provides the information object to the second application in response to determining that the information object is located in memory of the computing device; and
logic that, in response to determining that the information object is not located in the memory of the computing device, sends a query to a third application executing in another computing device, wherein the query requests the third application to determine whether the information object is located in the memory of the second computing device.
10. The system of claim 9, wherein the logic that provides a copy of the information object to the second application in response to receiving a request for the information object from the second application further comprises:
logic that retrieves the information object from the other computing device when the third application responds to the query with an indication that the information object is located in memory of the second computing device; and
logic that provides the information object to the second application in response to obtaining the information object from the other computing device.
11. The system of claim 9, wherein the logic that provides a copy of the information object to the second application in response to receiving a request for the information object from the second application further comprises:
logic that provides the second application with a location of the information object when the third application responds to the query with an indication that the information object is located in memory of the second computing device.
12. A method, comprising:
creating, by a computing device, an information object in response to receiving a request to store data from an application;
modifying, by the computing device, the information object in response to receiving a request from the application to modify the information object; and
providing, by the computing device, a copy of the information object to the application in response to receiving a request for the information object from the application.
13. The method of claim 12, wherein the request to store data comprises a file and a file type.
14. The method of claim 13, wherein creating, by the computing device, the information object in response to receiving the request to store data from the application further comprises:
identifying, by the computing device, a rule for creating the information object, wherein the rule corresponds to the file type;
creating, by the computing device, the information object according to the rule; and
copying, by the computing device, data from the file into the created information object.
15. The method of claim 12, wherein the request to store data comprises a data stream.
16. The method of claim 15, wherein creating, by the computing device, the information object in response to receiving the request to store data from the application further comprises:
identifying, by the computing device, a data source of the data stream; and
creating, by the computing device, a plurality of information objects based at least in part on the data source, wherein each of the plurality of information objects encapsulates at least a portion of the data stream.
17. The method of claim 12, wherein the information object encapsulates at least one of:
content data comprising a plurality of attributes relating to the information object and a reference to another information object;
form data describing how to present the information object within a user interface of an application; or
A function for manipulating the information object.
18. The method of claim 12, wherein providing, by the computing device, a copy of the information object to the application in response to receiving a request for the information object from the application further comprises:
determining, by the computing device, a data store in which the information object is currently stored; and
providing, by the computing device, a path to the data store to the application.
19. The method of claim 12, further comprising exporting, by the computing device, the information object to a file in response to receiving a request from the application to export the information object to the file.
20. The method of claim 19, wherein exporting, by the computing device, the information object to a file in response to receiving a request from the application to export the information object to the file further comprises:
identifying, by the computing device, a target file type for the file;
identifying, by the computing device, a rule for converting the information object to the target file type;
creating, by the computing device, the file; and
copying, by the computing device, at least a portion of the content encapsulated within the information object from the information object to the created file.
Publications (1)
| Publication Number | Publication Date |
|---|---|
| HK1237558A1 true HK1237558A1 (en) | 2018-04-13 |
Family
ID=
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US11640352B2 (en) | Testing software and/or computing hardware design through test fragmentation into one or more discrete computing environments | |
| US12067112B2 (en) | Systems and methods for proactive and reactive data security | |
| JP6111441B2 (en) | Tracking application usage in computing environments | |
| US9374275B2 (en) | Rapid application development using a content management system | |
| CN105339925B (en) | Method and system for passive monitoring of virtual servers | |
| US9513762B1 (en) | Static content updates | |
| CN115562690B (en) | Algorithm service processing method, device and medium based on Docker container | |
| US12321335B2 (en) | Registering additional type systems using a hub data model for data processing | |
| US20170364496A1 (en) | Visualization interface for information object system | |
| US20170286195A1 (en) | Information object system | |
| HK1237558A1 (en) | Information object system | |
| CN118192987A (en) | Source code construction method and device, computer program product and electronic equipment | |
| CN115729822A (en) | Test case processing method and device, computer equipment and storage medium | |
| JP7119448B2 (en) | Information processing device and information processing program | |
| CN113672247A (en) | Method, device, medium and equipment for host to access Ceph cluster through container | |
| CN120371328B (en) | Image generation method, apparatus, device, storage medium, and program product | |
| CN119475446B (en) | Distributed data model tampering risk assessment methods, devices, electronic equipment, media and products | |
| US11468101B2 (en) | Context-rich key framework implementations for global concept management | |
| CN114138415B (en) | Image building method and related devices based on Kubernetes | |
| CN117785837A (en) | Data storage method, device, electronic device and storage medium | |
| CN121326386A (en) | Continuous integration steps, plug-in management methods, electronic devices, and storage media | |
| JP6833442B2 (en) | Client device and control system | |
| CN120872339A (en) | Method, apparatus, computer device, medium and program product for processing dependency package | |
| CN120596465A (en) | Data verification method, device, computer equipment, storage medium and program product | |
| CN118427431A (en) | Data processing method, device, computer equipment, storage medium and program product |