In a collaborative environment, typically, where multiple users can access a common set of files on a server, multiple users often wish to edit the same document, at the same time if possible. In such circumstances, many problems can occur, due to the potential conflicts that might arise among the edits of the users. For example, if a first user and a second user concurrently edit a word or move a drawing object, it is difficult to determine which user's change should be applied to the document. As such, in many circumstances “edit” access to a document is limited to a single user at a time, to avoid the possibility for such editing conflicts. From a user's perspective, this is inconvenient, since only a single user can edit the document at once, and all other users are either locked out of the document entirely or given only “read only” access to the document by the server or application software hosting the document.
To overcome the inefficiencies resulting from limiting edit access to a document, some software systems allow two users to have edit access to the same file, but due to the high probability of conflicting edits occurring still provide some level of edit locking. For example, in some cases documents can be segmented to allow a user to edit (and lock other users to prevent them from editing) one particular segment of the document, while a different user would be allowed to edit (and lock other users to prevent them from editing) a different segment of that document. This example of a segment-locking scheme can be seen in Microsoft Word authoring software, from Microsoft Corporation of Redmond, Wash., in which segments can be defined on a paragraph-by-paragraph basis. In that software application, edits are not published to other users as they occur, and involve locking at least that segment (e.g., the slide or paragraph) of the document to prevent other users from concurrently editing that same segment, causing conflicts.
In some cases, solutions have been attempted where any user can edit any portion of a document, and any conflicts are resolved on a host server, based on a “last edit wins” basis. However, particularly in cases where connectivity to the server or specific timestamps are unreliable, it can be difficult to determine exactly when each edit is applied to a document, to resolve which edit to a same object within the document is to be applied (e.g., in an arrangement in which the most recent change takes precedence over earlier changes). Furthermore, even in these circumstances, it may be difficult for those users to avoid conflicts, even if they were careful to avoid editing over the top of one another. This is because it is difficult for one user's software to notify other remote users of the changes that the editing user is applying with sufficient notice that those other users can opt to not edit the same portion of the document.
In the case of a drawing tool, such as the VISIO® design and drawing tool from Microsoft Corporation of Redmond, Wash., these conflict issues remain in place. However, because each drawing element within that software has a relatively large number of independent properties, it may be the case that two users might wish to edit different and unrelated properties of the same drawing object; in this case, no conflict would occur. This only exacerbates the inefficiencies discussed above, because there are a greater number of opportunities for concurrent collaborative editing, or “coauthoring” that are prevented to avoid the possibility of conflicts.
In accordance with the following disclosure, the above and other problems are addressed by the following:
In one aspect, a computer-implemented method includes displaying a first user name of a first user in association with a first shape on a drawing, and receiving an indication that a second user is collaborating on the drawing. The method includes receiving an indication that the second user has modified a second shape on the drawing, and, in response to the indication that the second user has modified the second shape, displaying a second user name of the second user in association with the second shape on the drawing.
In a second aspect, a method executable on a server computing system includes receiving a first request to access a drawing at a server from a first client user, and receiving a second request to access the drawing at the server from a second client user. The method also includes registering the first and second client users as concurrently editing the drawing. The method further includes receiving an indication from the first client user of an edit applied to an object in the drawing by the first client user, and transmitting the indication to the second client user for display at the second client user, the indication defining the object to which the edit was applied without defining the edit that was applied to the object.
In a third aspect, a computing system capable of providing a collaborative drawing environment includes a drawing tool executable on the computing system and configured to allow modifications to a drawing by a first user. The drawing includes a working copy, a base copy, and a download copy. The drawing tool is configured to display a first user name of a first user in association with a first shape on a drawing, and receive an indication that a second user is collaborating on the drawing. The drawing tool is also configured to receive an indication that the second user has modified a second shape on the drawing without receiving the modification of the second shape, and in response to the indication that the second user has modified the second shape, display a second user name of the second user in association with the second shape on the drawing. The drawing tool is configured to periodically update the download copy of the drawing based on modifications received from a server, the modifications including modifications made by the second user.
This Summary is provided to introduce a selection of concepts, in a simplified form, that are further described below in the Detailed Description. This Summary is not intended to identify key or essential features of the claimed subject matter, nor is it intended to be used in any way to limit the scope of the claimed subject matter.
Various embodiments of the present disclosure will be described in detail with reference to the drawings, wherein like reference numerals represent like parts and assemblies throughout the several views. Reference to various embodiments does not limit the scope of the disclosure, which is limited only by the scope of the claims attached hereto. Additionally, any examples set forth in this specification are not intended to be limiting and merely set forth some of the many possible embodiments.
The logical operations of the various embodiments of the disclosure described herein are implemented as: (1) a sequence of computer implemented steps, operations, or procedures running on a programmable circuit within a computer, and/or (2) a sequence of computer implemented steps, operations, or procedures running on a programmable circuit within a directory system, database, or compiler.
Embodiments of the present invention are directed to methods, systems, and user interfaces configured to provide concurrent coauthoring of a drawing in a drawing tool. Generally speaking, coauthoring will allow users of a drawing tool to work concurrently in the same drawing, using a combination of server-hosted files and client synchronization processes. Through use of the features described herein, coauthoring users in a drawing tool will be notified of specific features being edited by other coauthors, such that each user can elect to avoid (or not avoid) editing a same drawing object within a drawing, providing greater flexibility and collaborative functionality than is provided in previous systems, which are locked to a single user at a time on a whole-document or segmented basis. The methods and systems described herein provide information to the coauthors of a drawing relating to possible conflicts, but generally do not prevent coauthoring users from overwriting each other's modifications to a drawing. Edits made by coauthors can be merged, such that any such conflicts can be resolved.
Referring now to
In general the present disclosure is related to a situation in which users of two different client devices 102 intend to access a particular drawing document stored on the server 104. In the embodiment shown, client devices 102a and 102c have accessed a document 108, and stored it as local documents 108′, 108″ on those devices, respectively. As users of those respective client devices 102a, 102c edit the document retrieved from the server 104, the drawing document 108′, 108″ diverge. However, as discussed below in connection with
In some embodiments described herein, the server 104 is configured to manage a list of users of client devices accessing the drawing document 108 for coauthoring purposes. In the example explained above, for example, the server 104 would include a list of users of devices 102a, 102c, but would not include a user of device 102b in the list. As further discussed below in connection with
In general, to achieve the conflict resolution and editing systems relative to a drawing object as described herein, maintenance of an original drawing is required, as well as maintenance of the edited drawings of each coauthoring user to determine when and where such conflicts take place. As illustrated in
In the embodiment shown, the system 200 includes a server storage area 206 in which a copy of a drawing can be stored. The server storage area 206 can be, in such embodiments, a database or server workflow management system, such as SHAREPOINT® server software, also available from Microsoft Corporation. A client 102 can retrieve a download copy 208 of the drawing from the server storage area 206. The download copy 208 corresponds to a latest copy available in the server storage area 206. To preserve the client's knowledge of the current state of the document as maintained in the server storage area 202, a base copy 210 is created from the download copy 208, and represents the copy of the download that occurred after the last successful merge of the client and server copies took place (as further discussed below). A working copy 212 is also created from the download copy 208, and is used for local editing/modification by a user. As a user edits the working copy 212 of the drawing, that user may wish to upload his/her changes back to the server to be saved. That user can select a “save” option within a drawing tool, which will in turn create an upload copy 214 of the drawing, which can be returned to the server storage area 206.
Although in general this process is straightforward when only a single user accesses the drawing from the server storage area 206, complexities arise when a second user concurrently requests the drawing from the server storage area 206, and changes the copy of the drawing in the server storage area between the time when the download copy 208 is created and when the upload copy 214 is returned to the server. To resolve such conflicts, a process for resolving conflicts in a coauthored drawing is performed. One example process 300 is illustrated in connection with
Referring now to
In the embodiment shown, the client computing device receives the save request (step 302), and the drawing tool creates the upload copy 214 of the drawing (step 304). The drawing tool then requests to transmit the upload copy 214 to the server storage area 206 (step 306). A synchronization layer attempts to establish a connection to allow transmission of the drawing to the server (step 308). A determination may be made at step 309 to determine whether there may be an error connecting to the server. For example the client device may be disconnected from the server after the download copy 208 is created, such that the user has made a number of changes while entirely disconnected from the server. If a connection is not reestablished with the server, a failure operation will communicate a failure to save and merge changes into the server version of the drawing (step 310), and the connection can be retried, returning to step 308. If connection to the server storage area 206 is successful, a version number of the base copy 210 is compared to a version number of the copy of the drawing at the server storage area 206 to determine whether the version number of the copy at the server storage area 206 has changed, indicating whether any changes have occurred in the server copy since it was originally downloaded (step 312). If no changes have occurred, the upload copy 214 is saved to the server and copied over the cached server copy (step 314).
If changes have occurred such that the version number of the base copy 210 does not match a version number of the copy of the document stored at the server storage area 208, a merge process must be performed, to resolve any conflicts that may take place. Accordingly, the client device will download an updated version of the server copy of the drawing document (step 316), and again indicate to transmit the upload copy 214 to the server (step 318). The client application will compare the new server copy (i.e., the updated download copy 208 of the drawing document) to the base copy 210 of the drawing document to determine changes applied by other users, and will compare the upload copy 214 to the base copy 210 to determine all changes by the local user, and determine whether any conflicts between those modifications exist (e.g., modifications to the same attribute of the same drawing object, or overlapping placement of different drawing objects, as illustrated in
Referring specifically to step 322 of the process 300, it is recognized that merged working copy 212, which was created based on the download copy 208, base copy 210, and current working copy 212, is created based on a log of changes performed on the drawing document. Specifically, a merge process is performed based on a state of each drawing object in the drawing document; how the shape arrived at that state is immaterial to the merge process. As discussed further in connection with
Generally, and as discussed below in conjunction with the user interface features of
Referring generally to the process 300 illustrated in
Referring now to
In
In the example shown, regardless of the order in which the edits are made, because the first and second users only edited separate objects, the resulting drawing 406 includes a reordered drawing in which the “B” object is moved downward, and the “A” and “C” objects are moved into a vertical orientation. Each of the connections between the objects (i.e., “A” connects to “B”, which in turn connects to “C”) are maintained.
Referring now to
In this example, although users are not attempting to edit the same drawing object, it is unlikely that the users wish to have their edited objects placed directly superimposed over each other. In some embodiments discussed herein, resolution of this conflict may take a variety of forms; in one example, one of the topmost and bottommost objects from the original drawing 500 can be offset from the position to which it is moved, to allow all of the objects to be visible. Alternatively, one or both of the edits made by the first and second user (shown in drawings 520, 540) could be rejected. Other methods of conflict resolution are possible as well.
In some circumstances, user interaction may be required to resolve conflicts. For example, such a conflict may occur when the changes of one author completely eliminates the work of a second coauthor. A common instance of this might be when a first user deletes a shape and saves/updates while a second user continues to make changes to that shape. In order to avoid a change that is perceived as data loss, it is preferably to allow the author whose changes were lost the opportunity to preserve the changes. Accordingly, a merge process performed according to certain embodiments of the present disclosure provides for a modified merge in which deleted items are marked for deletion rather than deleted, allowing editors of those objects to confirm that deletion is desired.
Although in
In some cases collisions among drawing objects cannot easily be merged, while in other cases, collisions can be resolved. Example types of collisions include false collisions, change collisions, catastrophic collisions, deletion conflicts, and un-mergeable conflicts. A false collision relates to changes to a single drawing object by multiple users that will merge without unexpected behavior, for example where a first user changes a position of the shape while a second user changes the color of that same shape. A change collision relates to changes that appear to represent a conflict, but can be resolved on a “last edit wins” basis, such as first and second users moving the same object. In a further type of collision, called a “catastrophic” or deletion collision, data loss would result in an unacceptable and unrecoverable manner; as such, deleted or colliding elements could be saved in a separate file. Other types of conflicts may exist as well. In sum, because it is difficult to determine whether desired actions on a particular drawing object may or may not be a conflict, those decisions are not limited by the drawing software, but are instead managed by the coauthors themselves by communicating coauthoring information between those coauthors.
To facilitate communication among coauthors to minimize conflicts, as illustrated in further detail in connection with
In the embodiment shown, method 600 continues with displaying a first username associated with a first drawing object (step 606). The first username can be, for example, a username of the local user, and can be included in a graphical notification feature that the user has edited the particular drawing object. Details regarding notification features are provided in further detail in
The client computing system can, in the embodiment shown, also receive an indication that a second user is collaborating with the user of the client computing system on the drawing document (step 608). This notification can take many forms. For example, the notification can be associated with the document as a whole, and can be paired with a notification presented to the user of the client computing system when another user either enters or exits the drawing document (e.g., as illustrated in
In various embodiments, the client computing system can receive notifications in a variety of ways. In a particular embodiment, for some notifications the client computing system is configured to periodically poll a server to determine if any changes have occurred to a saved version of the document. For other notifications, those notifications may be proactively sent to the client computing system from the server.
In the embodiment shown, method 600 continues with receiving an indication that a second user, such as a remote coauthor, has modified a second drawing object, different from the drawing object edited by the local user (step 610). In this embodiment, the indication can correspond to secondary metadata generated at the remote coauthor's client device, and routed to the client computing device via the server (e.g., server 102). In accordance with the present disclosure, in typical embodiments the secondary metadata includes information about the drawing object being edited by the second user, as well as the time those edits occurred. The second user's username can then be displayed in association with the second drawing object (i.e., the drawing object edited by that second user) (step 612).
Referring now to
In the embodiment shown, the method 700 includes receiving access requests from two or more users, such that at least two users are accessing a drawing document at the same time (i.e., are coauthors) (step 702). Each access request by a user is registered with the server (step 704), such that the server manages a list of coauthors currently accessing any particular drawing document.
As each of the coauthors, at different client devices, edit or modify objects in the drawing document, metadata is transmitted back to the server (step 706). In the embodiment shown, the metadata indicates the object that was modified and the time at which the modification took place. If the server receives such metadata, it notifies other users (besides the user of the client device that transmitted the metadata), for example by relaying the metadata to those other registered users/client devices (step 708). If no changes occurred, no notification would consequently take place.
In addition, in some embodiments the server manages a timer, to monitor a time elapsed since the last edits are received from a particular user. If a user has not edited a drawing document within a predetermined time or if that user has closed the document on that user's client computing system (step 710), that user can be removed from a list of current users of the drawing document (step 712). Other coauthoring users, besides that user that is removed, can be notified of this even, as indicated in step 708. If no update timing has elapsed, the server can continue to monitor to receive metadata regarding changes to drawing objects from one or more of the coauthor users.
Referring now to
In the embodiment shown, a first client device 802a and a second client device 802b are communicatively connected to a server 804. The first client device 802a and the second client device 802b each have a local drawing document 806a-b, derived from a copy stored at the server 804. In accordance with the present disclosure, each local drawing document 806a-b includes, at the client devices 802a-b, a working copy 808a-b, a base copy 810a-b, and a download copy 812a-b, respectively. The working copy 808a-b, base copy 810a-b, and download copy 812a-b can, in certain embodiments, correspond to analogous elements 808-812 of
Additionally, each of the drawing documents 806a-b are associated with metadata 814a-b, which includes primary metadata 816a-b and secondary metadata 818a-b, respectively (alternatively, primary metadata 816 and secondary metadata 818 in the abstract, or as stored on the server 804). The metadata 814 is used to track changes between the client and server versions of the documents, to properly merge modifications and to drive the user interface (as illustrated in
As shown, an edit or save operation 820 can be elected by a user of the first client device 802a. If a save operation is elected, primary metadata 816a associated with the first local drawing document 806a is propagated to the server 804 and stored as metadata 816, along with changes to the document 808a, which are dictated by a merge operation executed at the first client device 802a (e.g., as explained above in connection with
Additionally, if a save operation is elected, secondary metadata is transmitted to the server, and a merge operation causes modification of the download copy 812a and base copy 810a of the drawing document 806a, with the secondary metadata essentially becoming part of the primary metadata at that point, once changes reflected in the secondary metadata are committed to the server 804. The secondary metadata, representing changes to the drawing document 806, can be used to update a document 822 at a second client device 802b.
Notably, the metadata 816 is maintained separately from the merge process described above in connection with
In the embodiment shown, the drawing panel 902 displays a plurality of drawing objects 910, as are known to be displayed by a drawing tool. Additionally, associated with one or more of the drawing objects 910 is a notification feature 912. The notification feature 912 displays to the user of the drawing tool information regarding changes made by other coauthors. As further discussed below in connection with
In the toolbar 906, a number of additional indicators are available to display a status of sharing of the drawing with other coauthors. In the example shown, a presence indicator 914 presents an icon associated with a number of users currently accessing the drawing document. The presence indicator 914 optionally also includes a list of names of those users (e.g., if user causes the mouse to hover over the icon). Additionally, as changes occur within the list of names, one or more pop-up balloons 916 notifying the user of changes to the list of users can be displayed as well. Examples of pop-up balloons 916 are provided below in connection with
Additionally within the toolbar 906, an updates indicator 918 can be displayed when updates are available in the server version of the drawing document. To view these updates, the user is prompted to click on the updates indicator 918 to save the local changes made by that user, starting a merge process as discussed above in connection with
Referring now to
In various embodiments, the update notification field 1004 and coauthor notification field 1006 are periodically updated, for example based on a polling operation where a drawing tool on a client computing device queries a server to determine the presence of any changes on the server. While the update notification field 1004 is based on metadata received at the server from various coauthors, the coauthor notification field 1006 is based on a difference between a base copy and a downloaded copy of the document. The coauthor notification field is therefore generated based on recent changes committed by remote authors. Generally, when a coauthor edits a drawing object, the update notification field 1004 can be generated based at least in part on detection of that change; when the coauthor saves his/her changes, that update notification field 1004 can disappear and the coauthor notification field 1006 will replace it. This allows other coauthors to continually view who has been editing a document (via the update notification field 1004), but only see those edits that a coauthor has actually committed to saving (via the coauthor notification field 1006).
Referring to
As illustrated in
In
In contrast, in
Referring to
Referring now to
Referring now to
Although the notifications provided in
The embodiments and functionalities described herein may operate via a multitude of computing systems such as the server 104, and the client devices 102 described above with reference to
Computing device 3100 may have additional features or functionality. For example, computing device 3100 may also include additional data storage devices (removable and/or non-removable) such as, for example, magnetic disks, optical disks, or tape. Such additional storage is illustrated in
As stated above, a number of program modules and data files may be stored in system memory 3104, including operating system 3105. While executing on processing unit 3102, programming modules 3106 may perform processes including, for example, one or more of the stages of the external service application discovery process 200. The aforementioned process is an example, and processing unit 3102 may perform other processes. Other programming modules that may be used in accordance with embodiments of the present invention may include electronic mail and contacts applications, word processing applications, spreadsheet applications, database applications, slide presentation applications, drawing or computer-aided application programs, etc.
Generally, consistent with embodiments of the invention, program modules may include routines, programs, components, data structures, and other types of structures that may perform particular tasks or that may implement particular abstract data types. Moreover, embodiments of the invention may be practiced with other computer system configurations, including hand-held devices, multiprocessor systems, microprocessor-based or programmable consumer electronics, minicomputers, mainframe computers, and the like. Embodiments of the invention may also be practiced in distributed computing environments where tasks are performed by remote processing devices that are linked through a communications network. In a distributed computing environment, program modules may be located in both local and remote memory storage devices.
Furthermore, embodiments of the invention may be practiced in an electrical circuit comprising discrete electronic elements, packaged or integrated electronic chips containing logic gates, a circuit utilizing a microprocessor, or on a single chip containing electronic elements or microprocessors. For example, embodiments of the invention may be practiced via a system-on-a-chip (SOC) where each or many of the components illustrated in
Embodiments of the invention, for example, may be implemented as a computer process (method), a computing system, or as an article of manufacture, such as a computer program product or computer readable media. The computer program product may be a computer storage media readable by a computer system and encoding a computer program of instructions for executing a computer process.
The term computer readable media as used herein may include computer storage media. Computer storage media may include volatile and nonvolatile, removable and non-removable media implemented in any method or technology for storage of information, such as computer readable instructions, data structures, program modules, or other data. System memory 3104, removable storage 3109, and non-removable storage 3110 are all computer storage media examples (i.e., memory storage.) Computer storage media may include, but is not limited to, RAM, ROM, electrically erasable read-only memory (EEPROM), flash memory or other memory technology, CD-ROM, digital versatile disks (DVD) or other optical storage, magnetic cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices, or any other medium which can be used to store information and which can be accessed by computing device 3100. Any such computer storage media may be part of device 3100. Computing device 3100 may also have input device(s) 3112 such as a keyboard, a mouse, a pen, a sound input device, a touch input device, etc. Output device(s) 3114 such as a display, speakers, a printer, etc. may also be included. The aforementioned devices are examples and others may be used.
The term computer readable media as used herein may also include communication media. Communication media may be embodied by computer readable instructions, data structures, program modules, or other data in a modulated data signal, such as a carrier wave or other transport mechanism, and includes any information delivery media. The term “modulated data signal” may describe a signal that has one or more characteristics set or changed in such a manner as to encode information in the signal. By way of example, and not limitation, communication media may include wired media such as a wired network or direct-wired connection, and wireless media such as acoustic, radio frequency (RF), infrared, and other wireless media. Computing device 3100 may include communication connections 3116 allowing communications with other computing devices 3118. Examples of suitable communication connections 3116 include, but are not limited to, RF transmitter, receiver, and/or transceiver circuitry; universal serial bus (USB), parallel, or serial ports, and other connections appropriate for use with the applicable computer readable media.
Mobile computing device 3200 incorporates output elements, such as display 3205, which can display a graphical user interface (GUI). Other output elements include speaker 3225 and LED light 3220. Additionally, mobile computing device 3200 may incorporate a vibration module (not shown), which causes mobile computing device 3200 to vibrate to notify the user of an event. In yet another embodiment, mobile computing device 3200 may incorporate a headphone jack (not shown) for providing another means of providing output signals.
Although described herein in combination with mobile computing device 3200, in alternative embodiments the invention is used in combination with any number of computer systems, such as in desktop environments, laptop or notebook computer systems, multiprocessor systems, micro-processor based or programmable consumer electronics, network PCs, mini computers, main frame computers and the like. Embodiments of the invention may also be practiced in distributed computing environments where tasks are performed by remote processing devices that are linked through a communications network in a distributed computing environment; programs may be located in both local and remote memory storage devices. To summarize, any computer system having a plurality of environment sensors, a plurality of output elements to provide notifications to a user and a plurality of notification event types may incorporate embodiments of the present invention.
One or more application programs 3266 may be loaded into memory 3262 and run on or in association with operating system 3264. Examples of application programs include phone dialer programs, e-mail programs, personal information management (PIM) programs, word processing programs, spreadsheet programs, Internet browser programs, messaging programs, and so forth. System 3202 also includes non-volatile storage 3268 within memory 3262. Non-volatile storage 3268 may be used to store persistent information that should not be lost if system 3202 is powered down. Applications 3266 may use and store information in non-volatile storage 3268, such as e-mail or other messages used by an e-mail application, and the like. A synchronization application (not shown) also resides on system 3202 and is programmed to interact with a corresponding synchronization application resident on a host computer to keep the information stored in non-volatile storage 3268 synchronized with corresponding information stored at the host computer. As should be appreciated, other applications may be loaded into memory 3262 and run on the device 3200, including the various client and server applications described herein.
System 3202 has a power supply 3270, which may be implemented as one or more batteries. Power supply 3270 might further include an external power source, such as an AC adapter or a powered docking cradle that supplements or recharges the batteries.
System 3202 may also include a radio 3272 that performs the function of transmitting and receiving radio frequency communications. Radio 3272 facilitates wireless connectivity between system 3202 and the “outside world”, via a communications carrier or service provider. Transmissions to and from radio 3272 are conducted under control of the operating system 3264. In other words, communications received by radio 3272 may be disseminated to application programs 3266 via operating system 3264, and vice versa.
Radio 3272 allows system 3202 to communicate with other computing devices, such as over a network. Radio 3272 is one example of communication media. Communication media may typically be embodied by computer readable instructions, data structures, program modules, or other data in a modulated data signal, such as a carrier wave or other transport mechanism, and includes any information delivery media. The term “modulated data signal” means a signal that has one or more of its characteristics set or changed in such a manner as to encode information in the signal. By way of example, and not limitation, communication media includes wired media such as a wired network or direct-wired connection, and wireless media such as acoustic, RF, infrared and other wireless media. The term computer readable media as used herein includes both storage media and communication media.
This embodiment of system 3202 is shown with two types of notification output devices; light emitting diode (LED) 3220 that can be used to provide visual notifications and an audio interface 3274 that can be used with speaker 3225 to provide audio notifications. These devices may be directly coupled to power supply 3270 so that when activated, they remain on for a duration dictated by the notification mechanism even though processor 3260 and other components might shut down for conserving battery power. LED 3220 may be programmed to remain on indefinitely until the user takes action to indicate the powered-on status of the device. Audio interface 3274 is used to provide audible signals to and receive audible signals from the user. For example, in addition to being coupled to speaker 3225, audio interface 3274 may also be coupled to a microphone to receive audible input, such as to facilitate a telephone conversation. In accordance with embodiments of the present invention, the microphone may also serve as an audio sensor to facilitate control of notifications, as will be described below. System 3202 may further include video interface 3276 that enables an operation of on-board camera 3230 to record still images, video stream, and the like.
A mobile computing device implementing system 3202 may have additional features or functionality. For example, the device may also include additional data storage devices (removable and/or non-removable) such as, magnetic disks, optical disks, or tape. Such additional storage is illustrated in
Data/information generated or captured by the device 3200 and stored via the system 3202 may be stored locally on the device 3200, as described above, or the data may be stored on any number of storage media that may be accessed by the device via the radio 3272 or via a wired connection between the device 3200 and a separate computing device associated with the device 3200, for example, a server computer in a distributed computing network, such as the Internet. As should be appreciated such data/information may be accessed via the device 3200 via the radio 3272 or via a distributed computing network. Similarly, such data/information may be readily transferred between computing devices for storage and use according to well-known data/information transfer and storage means, including electronic mail and collaborative data/information sharing systems.
Embodiments of the present invention, for example, are described above with reference to block diagrams and/or operational illustrations of methods, systems, and computer program products according to embodiments of the invention. The functions/acts noted in the blocks may occur out of the order as shown in any flowchart. For example, two blocks shown in succession may in fact be executed substantially concurrently or the blocks may sometimes be executed in the reverse order, depending upon the functionality/acts involved.
While certain embodiments of the invention have been described, other embodiments may exist. Furthermore, although embodiments of the present invention have been described as being associated with data stored in memory and other storage mediums, data can also be stored on or read from other types of computer-readable media, such as secondary storage devices, like hard disks, floppy disks, or a CD-ROM, a carrier wave from the Internet, or other forms of RAM or ROM. Further, the disclosed methods' stages may be modified in any manner, including by reordering stages and/or inserting or deleting stages, without departing from the invention.
In various embodiments, the types of networks used for communication between the computing devices that make up the present invention include, but are not limited to, an internet, an intranet, wide area networks (WAN), local area networks (LAN), and virtual private networks (VPN). In the present application, the networks include the enterprise network and the network through which the client computing device accesses the enterprise network (i.e., the client network). In one embodiment, the client network is part of the enterprise network. In another embodiment, the client network is a separate network accessing the enterprise network through externally available entry points, such as a gateway, a remote access protocol, or a public or private internet address.
The description and illustration of one or more embodiments provided in this application are not intended to limit or restrict the scope of the invention as claimed in any way. The embodiments, examples, and details provided in this application are considered sufficient to convey possession and enable others to make and use the best mode of claimed invention. The claimed invention should not be construed as being limited to any embodiment, example, or detail provided in this application. Regardless of whether shown and described in combination or separately, the various features (both structural and methodological) are intended to be selectively included or omitted to produce an embodiment with a particular set of features. Having been provided with the description and illustration of the present application, one skilled in the art may envision variations, modifications, and alternate embodiments falling within the spirit of the broader aspects of the claimed invention and the general inventive concept embodied in this application that do not depart from the broader scope.
This application is related to co-pending U.S. patent application Ser. No. ______, Attorney Docket No. 14917.1900USU1/333710.01, titled “Collaborative Commenting in a Drawing Tool,” filed on Nov. 11, 2011, which is hereby incorporated by reference in its entirety.