Document management systems allow users to create, edit, and share electronic documents. Some document management systems may contain different versions of a particular document, presenting challenges to users seeking to understand the significance of a particular document version or find a document version associated with a particular event or action. Embodiments of the present disclosure address these and other issues.
In the drawings, which are not necessarily drawn to scale, like numerals may describe similar components in different views. Like numerals having different letter suffixes may represent different instances of similar components. Some embodiments are illustrated by way of example, and not limitation, in the figures of the accompanying drawings in which:
The description that follows includes systems, methods, techniques, instruction sequences, and computing machine program products that embody illustrative embodiments of the disclosure. In the following description, for the purposes of explanation, numerous specific details are set forth in order to provide an understanding of various embodiments of the inventive subject matter. It will be evident, however, to those skilled in the art, that embodiments of the inventive subject matter may be practiced without these specific details. In general, well-known instruction instances, protocols, structures, and techniques are not necessarily shown in detail.
Among other things, embodiments of the present disclosure help improve the functionality of electronic document management software and systems by generating customized descriptive version labels for electronic documents based on actions and events involving the document. In various embodiments, the system may determine and apply version labeling based on a file being shared, opened, presented, copied, or based on other actions and events. This version labeling may result from explicit versioning (e.g., versioning resulting from a user interaction and user application of a label), or implicit versioning (e.g., versioning resulting as a result of activities, such as sharing, access, viewing, or editing among multiple users).
Embodiments of the present disclosure described herein may be implemented using any combination of hardware, firmware, and software. Embodiments may also be implemented as instructions stored on a machine-readable storage device, which may be read and executed by at least one processor to perform the operations described herein. A machine-readable storage device may include any non-transitory mechanism for storing information in a form readable by a machine (e.g., a computer). For example, a machine-readable storage device may include read-only memory (ROM), random-access memory (RAM), magnetic disk storage media, optical storage media, flash-memory devices, and other storage devices and media.
Embodiments of the present disclosure may include, or may operate in conjunction with, various logic, components, modules, and mechanisms. Such components may include any combination of hardware, software, or firmware communicatively coupled to one or more processors in order to carry out the operations described herein. Components may be hardware components, and as such components may be considered tangible entities capable of performing specified operations and may be configured or arranged in a certain manner. For example, circuits may be arranged (e.g., internally or with respect to external entities such as other circuits) in a specified manner as a component. The whole or part of one or more computer systems (e.g., a standalone, client or server computer system) or one or more hardware processors may be configured by firmware or software (e.g., instructions, an application portion, or an application) as a component that operates to perform specified operations. In an example, the software may reside on a machine-readable medium.
In some embodiments, software, when executed by the underlying hardware of the component, causes the hardware to perform the specified operations. Accordingly, the term hardware component is understood to encompass a tangible entity, be that an entity that is physically constructed, specifically configured (e.g., hardwired), or temporarily (e.g., transitorily) configured (e.g., programmed) to operate in a specified manner or to perform part or all of any operation described herein. Considering examples in which components are temporarily configured, each of the modules need not be instantiated at any one moment in time. For example, where the components comprise a general-purpose hardware processor configured using software; the general-purpose hardware processor may be configured as respective different components at different times. Software may accordingly configure a hardware processor, for example, to constitute a particular component at one instance of time and to constitute a different component at a different instance of time. Components may also be software or firmware components, which operate to perform the methodologies described herein.
While only a single computer system is illustrated in
The computer system 100 in
The storage device 116 includes a machine-readable medium 122 on which is stored one or more sets of data structures and instructions 124 (e.g., software) embodying or utilized by any one or more of the methodologies or functions described herein. The instructions 124 may also reside, completely or at least partially, within the main memory 104, static memory 106, and/or within the processor 102 during execution thereof by the computer system 100, with the main memory 104, static memory 106, and the processor 102 also constituting machine-readable media.
While the machine-readable medium 122 is illustrated to be a single medium, the term “machine-readable medium” may include a single medium or multiple media (e.g., a centralized or distributed database, and/or associated caches and servers) that store the one or more instructions 124. The term “machine-readable medium” may include any tangible medium that is capable of storing, encoding or carrying instructions for execution by the machine and that cause the machine to perform any one or more of the methodologies of the present disclosure or that is capable of storing, encoding or carrying data structures utilized by or associated with such instructions. The term “machine-readable medium” may include, for example, solid-state memories, and optical and magnetic media. Specific examples of machine-readable media include non-volatile memory, including but not limited to, by way of example, semiconductor memory devices (e.g., electrically programmable read-only memory (EPROM), electrically erasable programmable read-only memory (EEPROM)) and flash memory devices; magnetic disks such as internal hard disks and removable disks; magneto-optical disks; and CD-ROM and DVD-ROM disks.
The instructions 124 may be transmitted or received over a communications network 126 using a transmission medium via the network interface device 120 utilizing any one of a number of well-known transfer protocols (e.g., HTTP). Examples of communication networks include a local area network (LAN), a wide area network (WAN), the Internet, mobile telephone networks, plain old telephone (POTS) networks, and wireless data networks (e.g., Wi-Fi, 3G, and 4G LTE/LTE-A or WiMAX networks). The term “transmission medium” shall be taken to include any intangible medium that is capable of storing, encoding, or carrying instructions for execution by the machine, and includes digital or analog communications signals or other intangible medium to facilitate communication of such software.
In various embodiments of the present disclosure, techniques are disclosed for labeling particular versions of files, content items, or other forms of data, based on the corresponding lifecycle events involved with such data items. For instance, the techniques discussed herein allow direct lifecycle events to be recorded and performed on particular versions of files, through forms of explicit or implicit labeling. In contrast, the use of labels in existing content management systems and file systems is a manual process that often involves creating and tracking distinct copies of the file.
Embodiments of the present disclosure may receive (205) a variety of inputs associated with documents in a document management system. The document management system (e.g., Sharepoint by Microsoft Corporation, or OneDrive by Microsoft Corporation) may be implemented by the system (in whole or in part) by the system(s) performing the functionality of method 200, as well as by any combination of other systems and devices (e.g., in communication with each other via a network such as the Internet). Embodiments of the present disclosure may also operate in conjunction with content published by other types of software applications and systems, such as content management systems, social media platform systems, and the like.
In the example depicted in
For example, in a conventional system a user may work on a file in preparation for an executive review with his or her team, and access a file with version number 0.234 at the time of the executive review. The user presents the file at the review, and later incorporates changes to the file based on feedback from the review. Because incorporating those changes involves multiple file saves, the file advances to version 0.245. However, the user has no way of remembering that 0.234 was the version of the file that the user presented at the meeting, even though that history and context is meaningful.
In some embodiments, the input associated with an event involving an electronic document may include an explicit input from the user to define a version label. Referring again to
Embodiments of the present disclosure may also generate and apply (210) a version label to an instance of the document based on the input from the user and/or the event involving the electronic document. In
Embodiments of the present disclosure may automatically generate and apply (210) version labels based on some or all of the actions/events that involve a file. For example, a new label may be created any time a file is shared, opened, edited, moved, copied, deleted, or presented. In some embodiments, users (such as an administrator for a project or the system) may provide the system with criteria for generating and applying (210) labels, such as restricting labels to actions that change the content of a file (e.g., writes or edits) but not creating a new version label every time someone simply opens the file. In this manner, the system can allow users to define the actions that are important and thus require labeling, while excluding extraneous and distracting labeling from events that are trivial.
The system may apply any number of version labels to instances of a document. In this context, different “instances” of a document refers to there being different distinct copies (and possibly chains of edits) between one version of a document and another version of a document. For example, the first version label in the document version history 300 in
In some cases, the system may infer an “important” action or event that warrants a version label based on a number of users viewing or accessing a file. For example, the system may identify a plurality of users viewing a particular instance of the document at the same time, and depending on the types of events in the application suite that are logged (e.g., selected by an administrator) the system may also determine (e.g., based on accessing the calendars of the users) that at least a portion of the plurality of users were in a meeting together (e.g., an online teleconference session). Accordingly, even though no user explicitly told the system the file was shared during the meeting, the system may determine that the file was presented and generate and apply (210) a version label descriptive of the event, such as: “Presented on Friday March 24th.” Additionally or alternative to the date when the document was presented, the system may include identification information for an entity (e.g., a name of a user or names of a group of users) to whom the document was presented.
The system may allow users to revert a file to a previous version, based on a version label. For example, in many projects (such as software development), users frequently need to go back and reference a previous version of a file, or restore that version and make it the current working version. In conventional versioning systems, users must navigate version numbers and timestamps to find the one they need, which can take considerable time and effort. Users have to frequently open up multiple historical versions until they finally find the one they need, because a timestamp and a version number don't really describe what's in the file. In embodiments of the present disclosure, by contrast, the descriptive and semantically meaningful version labels generated by the system makes the task of finding a particular file version much easier.
In the case of a user performing a copy action on a file, a user may select a file (e.g., the “Proposal Deck” file in
A user may also perform a sharing action associated with an instance of a document. Similar to copying a file, the system may, in response to a share event, generate and apply an implicit version label. This form of an implicit version label may be a contextually simple label such as “Shared with Alice, Bob, and Charlie”. In
In various embodiments, the application of an implicit version label may automatically result from actions on and around files that happen to that file at a particular point in time, on a particular version of a file. For example, such implicit version labels may be evaluated every time that a file is shared, opened, or even presented in a meeting, which occurs on the most recent version of a file. In particular, certain versions that are “important” are likely have a natural cluster of activities that happen to those files at the corresponding point in time. In various embodiments, the system may receive a selection (220) of a particular version label from the history 300 and provide options associated with the version label (e.g., menus 315, 410, and 510 discussed above) as well as displaying content (225) of the document instance associated with the selected version label. In various embodiments, the system may compare different versions of a document and display the differences. For example, selection of the option “Compare with latest” in menu 315 of
As noted above, users of the system may manually enter their own version labeling (e.g., at the time the new version is created). Additionally or alternatively, the system may receive and apply a modification (230) to a version label. For instance, a user may select the “Label this version” option from menu 315 in
Changes and modifications may be made to the disclosed embodiments without departing from the scope of the present disclosure. These and other changes or modifications are intended to be included within the scope of the present disclosure, as expressed in the following claims.