# Patent

## Title
Batching notifications of activities that occur in a web-based collaboration environment

## Abstract

Systems and methods of batched notifications of activities that occur in a web-based collaboration environment are disclosed. In one aspect, embodiments of the present disclosure include a method, which may be implemented on a system, for detecting activities occurring in an online collaboration environment, generating a notification event for one or more of the activities, and selecting one or more recipients for each notification event according to criteria determined based on a workspace in which the associated activity was performed in the online collaboration environment. The indications of each notification event are then added to one or more queues associated with the one or more recipients and, upon expiry of a queue timer, the contents of the one or more queues associated with the one or more recipients are sent to the corresponding one or more recipients as batched notifications.

## Background
BACKGROUND
As electronic and digital content use in enterprise settings and/or other organizational settings has become the preferred mechanism for project, task, and work flow management, so has the need for streamlined collaboration and sharing of digital content and documents. In such collaboration environments, multiple users share, access, and otherwise perform actions or tasks on content and files in shared workspaces. This shared access and collaboration requires high availability of the data (e.g., an unfettered ability to download and upload files) as any number of users may have access to a given file or may want to or need to perform an action on a file at any given time.



BRIEF DESCRIPTION OF THE DRAWINGS
FIG. 1 illustrates an example diagram of a system where a host server and a notification server provide batching notifications of activities that occur in an online collaboration environment to users of the online collaboration environment.
FIG. 2 depicts an example diagram of a web-based or online collaboration platform deployed in an enterprise or other organizational setting for organizing work items and workspaces.
FIG. 3 depicts an example diagram of a workspace in an online or web-based collaboration environment accessible by multiple collaborators through various devices.
FIG. 4 depicts a block diagram illustrating an example of components in the host server of a web-based collaboration environment with batched activity notification capabilities.
FIG. 5 depicts a block diagram illustrating an example of components in a notification server for providing real time or near real time notifications of activities that occur in a web-based or online collaboration environment.
FIG. 6 depicts a flow chart illustrating an example process for sending a batched notification including an indication of one or more activities that occurred in an online collaboration environment, according to an embodiment.
FIG. 7A and FIG. 7B depict diagrams illustrating an example of collaboration between users of a workspace, according to one embodiment.
FIG. 8 depicts a diagram illustrating an example of collaboration between users of a workspace with multiple queues for each user, according to one embodiment.
FIG. 9 depicts a diagram illustrating examples of criteria used to select notification recipients and the various pathways through which criteria are set.
FIG. 10 depicts a flow chart illustrating an example process for sending a batched notification of one or more activities that occurred in an online collaboration environment, according to an embodiment.
FIG. 11 depicts a diagram illustrating example processes for and parameters used in determining an ordering with which notifications of activity can be presented to a user.
FIG. 12 shows a diagrammatic representation of a machine in the example form of a computer system within which a set of instructions, for causing the machine to perform any one or more of the methodologies discussed herein, may be executed.



DETAILED DESCRIPTION
The following description and drawings are illustrative and are not to be construed as limiting. Numerous specific details are described to provide a thorough understanding of the disclosure. However, in certain instances, well-known or conventional details are not described in order to avoid obscuring the description. References to one or an embodiment in the present disclosure can be, but not necessarily are, references to the same embodiment; and, such references mean at least one of the embodiments.
Reference in this specification to “one embodiment” or “an embodiment” means that a particular feature, structure, or characteristic described in connection with the embodiment is included in at least one embodiment of the disclosure. The appearances of the phrase “in one embodiment” in various places in the specification are not necessarily all referring to the same embodiment, nor are separate or alternative embodiments mutually exclusive of other embodiments. Moreover, various features are described which may be exhibited by some embodiments and not by others. Similarly, various requirements are described which may be requirements for some embodiments but not other embodiments.
The terms used in this specification generally have their ordinary meanings in the art, within the context of the disclosure, and in the specific context where each term is used. Certain terms that are used to describe the disclosure are discussed below, or elsewhere in the specification, to provide additional guidance to the practitioner regarding the description of the disclosure. For convenience, certain terms may be highlighted, for example using italics and/or quotation marks. The use of highlighting has no influence on the scope and meaning of a term; the scope and meaning of a term is the same, in the same context, whether or not it is highlighted. It will be appreciated that same thing can be said in more than one way.
Consequently, alternative language and synonyms may be used for any one or more of the terms discussed herein, nor is any special significance to be placed upon whether or not a term is elaborated or discussed herein. Synonyms for certain terms are provided. A recital of one or more synonyms does not exclude the use of other synonyms. The use of examples anywhere in this specification including examples of any terms discussed herein is illustrative only, and is not intended to further limit the scope and meaning of the disclosure or of any exemplified term. Likewise, the disclosure is not limited to various embodiments given in this specification.
Without intent to limit the scope of the disclosure, examples of instruments, apparatus, methods and their related results according to the embodiments of the present disclosure are given below. Note that titles or subtitles may be used in the examples for convenience of a reader, which in no way should limit the scope of the disclosure. Unless otherwise defined, all technical and scientific terms used herein have the same meaning as commonly understood by one of ordinary skill in the art to which this disclosure pertains. In the case of conflict, the present document, including definitions will control.
Embodiments of the present disclosure include systems and methods for batching notifications of activities that occur in a web-based collaboration environment. More specifically, the present disclosure includes systems and methods that provide collaborators or users of a web-based collaboration environment with the ability to be kept apprised of relevant changes in the system in a configurable and convenient manner. For example, a collaborator in the web-based collaboration environment may be associated with several types of folders (e.g., those folders the collaborator owns in the workspace, those folders the collaborator simply collaborates in, etc.). As described herein, the collaborator can provide a different set of defaults notification settings for each of the folders based on the type of folder. The default notification settings can specify, among other things, whether notifications are on or off for a folder or work item, the frequency of notifications for a folder or work item, etc.
FIG. 1 illustrates an example diagram of a system where a host server 100 and a notification server 150 provide real-time and/or batching notifications of activities that occur in an online collaboration environment to users (or collaborators) 108.
The client devices 102 can be any system and/or device, and/or any combination of devices/systems that is able to establish a connection, including wired, wireless, cellular connections with another device, a server and/or other systems such as host server 100 and/or notification server 150. Client devices 102 will typically include a display and/or other output functionalities to present information and data exchanged between among the devices 102 and/or the host server 100 and/or notification server 150.
For example, the client devices 102 can include mobile, hand held or portable devices or non-portable devices and can be any of, but not limited to, a server desktop, a desktop computer, a computer cluster, or portable devices including, a notebook, a laptop computer, a handheld computer, a palmtop computer, a mobile phone, a cell phone, a smart phone, a PDA, a Blackberry device, a Treo, a handheld tablet (e.g. an iPad, a Galaxy, Xoom Tablet, etc.), a tablet PC, a thin-client, a hand held console, a hand held gaming device or console, an iPhone, and/or any other portable, mobile, hand held devices, etc. In one embodiment, the client devices 102, host server 100, and notification server 150 are coupled via a network 106. In some embodiments, the devices 102 and host server 100 may be directly connected to one another.
The input mechanism on client devices 102 can include touch screen keypad (including single touch, multi-touch, gesture sensing in 2D or 3D, etc.), a physical keypad, a mouse, a pointer, a track pad, motion detector (e.g., including 1-axis, 2-axis, 3-axis accelerometer, etc.), a light sensor, capacitance sensor, resistance sensor, temperature sensor, proximity sensor, a piezoelectric device, device orientation detector (e.g., electronic compass, tilt sensor, rotation sensor, gyroscope, accelerometer), or a combination or variation thereof.
Signals received or detected indicating user activity at client devices 102 through one or more of the above input mechanism, or others, can be used in the disclosed technology by various users or collaborators (e.g., collaborators 108) for accessing, through network 106, a web-based collaboration environment or online collaboration platform (e.g., hosted by the host server 100).
The collaboration platform or environment hosts workspaces with work items that one or more users can access (e.g., view, edit, update, revise, comment, download, preview, tag, or otherwise manipulate, etc.). A work item can generally include any type of digital or electronic content that can be viewed or accessed via an electronic device (e.g., device 102). The digital content can include .pdf files, .doc, slides (e.g., Powerpoint slides), images, audio files, multimedia content, web pages, blogs, etc. The digital content may reside within one or more storage containers (e.g., folders). A workspace can generally refer to any grouping of a set of digital content (digital content and/or folders) in the collaboration platform. The grouping can be created, identified, or specified by a user or through other means. This user may be a creator, user, or administrative user, for example.
In general, a workspace can be associated with a set of users or collaborators (e.g., collaborators 108) which have access to the content included therein. The levels of access (e.g., based on permissions or rules) of each user or collaborator to access the content in a given workspace may be the same or may vary among the users. Additionally, each user may have their own set of access rights to every piece of content in the workspace, or each user may have different access rights to different pieces of content. Access rights may be specified by a user associated with a workspace and/or a user who created/uploaded a particular piece of content to the workspace, or any other designated user or collaborator.
In general, a workspace can be arranged in a hierarchical tree structure including any number of storage containers (e.g., folders) each including any number work items (e.g., files within each folder). The storage containers can each have one or more associated predetermined settings (for each use or for multiple users) which can be associated with the storage container within which the associated activity was performed in the online collaboration environment. The predetermined settings can indicate whether, for example, notifications are enabled or disabled for that storage container and/or the types of activities or notifications that the user wants to receive with respect to that storage container. For example, each user may set different default notification settings for each folder or storage container that they have access to in the workspace. The predetermined settings can be set by a user or collaborator associated with the storage container.
In general, the collaboration platform allows multiple users or collaborators to access or collaborate efforts on work items such that each user can see, remotely, edits, revisions, comments, or annotations being made to specific work items through their own user devices. For example, a user can upload a document to a workspace for other users to access (e.g., for viewing, editing, commenting, signing-off, or otherwise manipulating). The user can login to the online platform and upload the document (or any other type of work item) to an existing workspace or to a new workspace. The document can be shared with existing users or collaborators in a workspace.
A diagrammatic illustration of the online collaboration environment and the relationships between workspaces and users/collaborators are illustrated with further reference to the example of FIG. 2. A diagrammatic illustration of a workspace having multiple work items with which collaborators can access through multiple devices is illustrated with further reference to the example of FIG. 3.
In one embodiment, actions performed on work items or other activities that occur in a workspace can be detected in real time or in near real time. The host server can generate notifications or notification events for one or more of the plurality of activities and select one or more recipients for each notification event according to criteria determined based on a workspace in which the associated activity was performed in the online collaboration environment. An indication of each notification event can be subsequently added to one or more queues associated with the one or more recipients, and upon expiry of a queue timer, the contents of the one or more queues associated with the one or more recipients to the corresponding one or more recipients are sent as batched notifications. Various mechanisms can be used to notify users or collaborators, including through the web interface to access the collaboration platform, via email, and/or SMS, for example.
Functions and techniques disclosed for batched notification of activities that occur in the online platform on a work item or in a workspace can be performed by a push-enabled server (e.g., the notification server 150 coupled to the host server 100 of the collaboration platform). Functions and techniques performed by the host server 100, the notification server 150, and the related components therein are described, respectively, in detail with further reference to the examples of FIG. 4-5.
In one embodiment, client devices 102 communicate with the host server 100 and/or notification server 150 over network 106. In general, network 106, over which the client devices 102, the host server 100, and/or notification server 150 communicate, may be a cellular network, a telephonic network, an open network, such as the Internet, or a private network, such as an intranet and/or the extranet, or any combination thereof. For example, the Internet can provide file transfer, remote log in, email, news, RSS, cloud-based services, instant messaging, visual voicemail, push mail, VoIP, and other services through any known or convenient protocol, such as, but is not limited to the TCP/IP protocol, Open System Interconnections (OSI), FTP, UPnP, iSCSI, NSF, ISDN, PDH, RS-232, SDH, SONET, etc.
The network 106 can be any collection of distinct networks operating wholly or partially in conjunction to provide connectivity to the client devices 102 and the host server 100 and may appear as one or more networks to the serviced systems and devices. In one embodiment, communications to and from the client devices 102 can be achieved by, an open network, such as the Internet, or a private network, such as an intranet and/or the extranet. In one embodiment, communications can be achieved by a secure communications protocol, such as secure sockets layer (SSL), or transport layer security (TLS).
In addition, communications can be achieved via one or more networks, such as, but are not limited to, one or more of WiMax, a Local Area Network (LAN), Wireless Local Area Network (WLAN), a Personal area network (PAN), a Campus area network (CAN), a Metropolitan area network (MAN), a Wide area network (WAN), a Wireless wide area network (WWAN), enabled with technologies such as, by way of example, Global System for Mobile Communications (GSM), Personal Communications Service (PCS), Digital Advanced Mobile Phone Service (D-Amps), Bluetooth, Wi-Fi, Fixed Wireless Data, 2G, 2.5G, 3G, 4G, IMT-Advanced, pre-4G, 3G LTE, 3GPP LTE, LTE Advanced, mobile WiMax, WiMax 2, WirelessMAN-Advanced networks, enhanced data rates for GSM evolution (EDGE), General packet radio service (GPRS), enhanced GPRS, iBurst, UMTS, HSPDA, HSUPA, HSPA, UMTS-TDD, 1×RTT, EV-DO, messaging protocols such as, TCP/IP, SMS, MMS, extensible messaging and presence protocol (XMPP), real time messaging protocol (RTMP), instant messaging and presence protocol (IMPP), instant messaging, USSD, IRC, or any other wireless data networks or messaging protocols.
FIG. 2 depicts an example diagram of a web-based or online collaboration platform deployed in an enterprise or other organizational setting 250 for organizing work items 215, 235, 255 and workspaces 205, 225, 245.
The web-based platform for collaborating on projects or jointly working on documents can be used by individual users and shared among collaborators. In addition, the collaboration platform can be deployed in an organized setting including but not limited to, a company (e.g., an enterprise setting), a department in a company, an academic institution, a department in an academic institution, a class or course setting, or any other types of organizations or organized setting.
When deployed in an organizational setting, multiple workspaces (e.g., workspace A, B, C) can be created to support different projects or a variety of work flows. Each workspace can have its own associated work items. For example, workspace A 205 may be associated with work items 215, workspace B 225 can be associated with work items 235, and workspace N can be associated with work items 255. The work items 215, 235, and 255 may be unique to each workspace but need not be. For example, a particular word document can be associated with only one workspace (e.g., workspace A 205) or it may be associated with multiple workspaces (e.g., Workspace A 205 and workspace B 225, etc.).
In general, each workspace has a set of users or collaborators associated with it. For example, workspace A 205 is associated with multiple users or collaborators 206. In some instances, workspaces deployed in an enterprise may be department specific. For example, workspace B may be associated with department 210 and some users shown as example user A 208 and workspace N 245 can be associated with departments 212 and 216 and users shown as example user B 214.
Each user associated with a workspace can generally access the work items associated with the workspace. The level of access will depend on permissions associated with the specific workspace, and/or with a specific work item. Permissions can be set for the workspace or set individually on a per work item basis. For example, the creator of a workspace (e.g., one of user A 208 who creates workspace B) can set one permission setting applicable to all work items 235 for other associated users and/or users associated with the affiliate department 210, for example. Creator user A 208 may also set different permission settings for each work item, which may be the same for different users, or varying for different users.
In each workspace A, B . . . N, when an action is performed on a work item by a given user or any other activity is detected in the workspace, other users in the same workspace may be notified. The notifications can be sent in real time or in near real time. Alternatively or additionally, the notifications can be batched and sent upon expiry of a timer which can be, in some instances, configurable by each of the associated users or collaborators in the workspace. Additionally, predetermined settings can be associated with each workspace and/or each storage container and/or each work item. In some cases, the predetermined settings can indicate whether or not the user wants notification of specific activities and/or the frequency with which the user would like those notifications. Activities which trigger notifications can include, by way of example but not limitation, adding, deleting, or modifying collaborators in the workspace, adding, deleting, viewing, or modifying a work item in the workspace, and/or creating, responding, or viewing a discussion topic in the workspace.
The activity can be performed in relation to a discussion topic in the workspace, for example, adding a response to a discussion topic, deleting a response, or editing a response in the workspace. In addition, the activity is performed on a work item in the workspace by the user, including, by way of example but not limitation, download or upload of a work item, deletion of editing of the work item, selecting, adding, deleting, and modifying a tag in the work item, preview of the work item or comment of the work item, setting or changing permissions of the work item, sharing a work item, emailing a link to the work item, and/or embedding a link to the work item on another website.
FIG. 3 depicts an example diagram of a workspace 302 in an online or web-based collaboration environment accessible by multiple collaborators 322 through various devices.
Each of users 316, 318, and 320 can individually use multiple different devices to access and/or manipulate work items 324 in the workspace 302 with which they are associated with. For example users 316, 318, 320 can be collaborators on a project to which work items 324 are relevant. Since the work items 324 are hosted by the collaboration environment (e.g., a cloud-based environment), each user can access the work items 324 anytime, and from any physical location using any device (e.g., including devices they own or any shared/public/loaner device).
Each user can be notified of actions performed on work items 324 by other users or any other types of activities detected in the workspace 302. For example, if user 316 modifies a document, one or both of the other collaborators 318 and 320 can be notified of the modification in real time, or near real-time, and/or via a batched notification after a specified and/or configurable period of time. The notifications can be sent through any or all of the devices associated with a given user, in various formats including, one or more of, email, SMS, or via a pop-up window in a user interface in which the user uses to access the collaboration platform. In the event of multiple real-time or batched notifications, each notification can be depicted preferentially (e.g., ordering in the user interface) based on user preferences and/or relevance to the user (e.g., implicit or explicit). Examples of sending and/or presenting notifications to users is discussed in greater detail with respect to U.S. patent application Ser. No. 13/152,982 entitled “Real Time Notification of Activities that occur in a Web-based Collaboration Environment,” which was filed on Jun. 3, 2011, the contents of which are expressly incorporated by reference herein.
FIG. 4 depicts a block diagram illustrating an example of components in the host server 400 of a web-based collaboration environment with real-time (or near real-time) and/or batched activity notification capabilities.
The host server 400 of the web-based or online collaboration environment can generally be a cloud-based service. The host server 400 can include, for example, a network interface 402, an activity detector 405, a notification engine 415, a permissions manager 435 and/or a notification prioritizer 455. The notification engine 415 can include a notification server manager 416, a recipient selection module 417, a notification generation module 418, a queue manager module 419, and a configuration manager module 420. The permission manager 435 can include a workspace manager 436, a collaboration manager 438, an organization tracker 440 having an enterprise tracker 441, and a work item manager 442. The notification prioritizer 455 can include a rules module 456, a chronological ordering engine 458, and a relevance assessor 460 which can further include a contextual characteristics module 461 and a temporal characteristics module 462. Additional or fewer components/modules/engines can be included in the host server 400 and each illustrated component.
The network interface 402 can be a networking module that enables the host server 400 to mediate data in a network with an entity that is external to the host server 400, through any known and/or convenient communications protocol supported by the host and the external entity. The network interface 402 can include one or more of a network adaptor card, a wireless network interface card (e.g., SMS interface, WiFi interface, interfaces for various generations of mobile communication standards including but not limited to 1G, 2G, 3G, 3.5G, 4G, LTE, etc.), Bluetooth, a router, an access point, a wireless router, a switch, a multilayer switch, a protocol converter, a gateway, a bridge, bridge router, a hub, a digital media receiver, and/or a repeater.
As used herein, a “module,” “a manager,” a “handler,” a “detector,” an “interface,” or an “engine” includes a general purpose, dedicated or shared processor and, typically, firmware or software modules that are executed by the processor. Depending upon implementation-specific or other considerations, the module, manager, hander, or engine can be centralized or its functionality distributed. The module, manager, handler, or engine can include general or special purpose hardware, firmware, or software embodied in a computer-readable (storage) medium for execution by the processor. As used herein, a computer-readable medium or computer-readable storage medium is intended to include all mediums that are statutory (e.g., in the United States, under 35 U.S.C. 101), and to specifically exclude all mediums that are non-statutory in nature to the extent that the exclusion is necessary for a claim that includes the computer-readable (storage) medium to be valid. Known statutory computer-readable mediums include hardware (e.g., registers, random access memory (RAM), non-volatile (NV) storage, to name a few), but may or may not be limited to hardware.
One embodiment of the host server 400 includes the activity detector 405 which can detect an activity in the web-based collaboration environment. The activity can be a triggering activity which causes a notification to be generated and/or added to one or more queues associated with selected or relevant users so that those selected or relevant users are notified of the occurrence of the activity in real-time or near real time and/or in a batched notification at a later time.
The detected activity can be performed by a user or collaborator in a workspace and can be performed on a work item or relating to a work item, for example, download or upload of the work item, previewing, commenting of a work item, deletion or editing of the work item, commenting on a work item, identifying, selecting, adding, deleting, saving, editing, and modifying a tag in the work item, setting or changing permissions of the work item, sharing the work item including, for example, emailing a link to the work item, embedding a link to the work item on another website.
The types of activities that can be detected can also relate to changes to a workspace, such as adding, deleting, or modifying collaborators in the workspace; changes to work items such as adding, deleting a work item in the workspace; creating a discussion topic in the workspace, adding a response to a discussion topic, deleting a response, or editing a response in the workspace.
Detected activity in a workspace that is performed by a user or otherwise occurring can trigger notifications to be generated and sent out in real-time or near real-time and/or subsequently sent out via a batched notifications at later times via, for example, the notification engine 415. The notification engine 415 can notify users, which can be collaborators with the user who performed the activity in the workspace, via one or more of many mechanisms, including but not limited to, email, SMS, voice-message, text-based message, RSS, feed, etc. The mechanisms can be configurable by each user or collaborator based on the type of activity that occurred and/or where the activity occurred in the workspace (e.g., which storage container or folder in the workspace).
In one embodiment, the notification is depicted through a web-browser to another user in the web-based collaboration environment. In some embodiments, the notification can be depicted in real-time or near real-time to the time in which the activity was performed by the user and/or at some later time in a batched notification with other notifications that are to be depicted to the user. When notifying a user in real-time or through the use of a batched notification using a web-browser, the notification engine 415 can utilize a push-enabled service. In one embodiment, the real-time or batched notifications are sent by a component or another server which implements push technology (e.g., the notification server 500 shown in the example of FIG. 5). The push-enabled service can be implemented via long poll or HTTP streaming, for example, by the notification server 500 or another component, device which may be internal to or external to the host server 400. In addition, the host server 400 could utilize other push servers including third party push servers to implement push technology including but not limited to mobile platform push systems and services (e.g., via smart phones or tablets or other portable devices such as iPhone, Android phones, Blackberry, iPad, Galaxy or other tablets, etc.).
The host server 400 can send a notification server an identification of the recipient to be notified and an indicator of the one or more activities to notify the recipient of (e.g., via a batched notification). The indicator of the one or more activities to notify the recipient of can be in the form of a batched notification which comprises one or more notifications that are stored in a queue associated with the recipient. Alternatively or additionally, the host server 400 can send the notification server the address or location or multiple locations of the queue(s) from which to read and send the notifications as a batched notification to the user. Use of an external push server, such as the notification server 550 is described with further reference to the example of FIG. 5.
The notification server 550 can be managed by the notification server manager 416 in the notification engine 415 which can communicate events to notify users in real-time via their browser interfaces or queue up notifications to send users batched notifications. In one embodiment, the host server sends a notification server an identification of the recipient to be notified and/or an indicator of the one or more activities to notify the recipient of (e.g., via a real-time and/or batched notification).
The recipient selection module 417 can select one or more users for each notification event. For example, the selection module 417 can select one or more recipients for each notification or notification event that is generated by the notification generation module 418. The recipients can be selected, for example, according to criteria determined based on a workspace in which the associated activity was performed in the online collaboration environment. The criteria may be determined in a variety of ways. For example, the criteria can be determined based on an affiliation with a workspace or storage container in which the activity was performed in the online collaboration platform, or based on an affiliation with the work item on which the activity was performed. Alternatively or additionally, the criteria can be determined based on permissions configured for the workspace, storage container, or work item. Alternatively or additionally, the criteria can be configured based on predetermined settings configured for the workspace, storage container or folder, and/or individual work items. Examples of combinations and/or variations of the criteria is discussed in greater detail with reference to FIG. 9.
The queue manager module 419 can manage the one or more queues associated with each of the users of the online collaboration environment. For example, the queue manager module 419 can manage notifications to the one or more queues, queue timers, etc. Additionally, the queue manager module 419 may manage allocation/deallocation of memory for the queues in the host system or an external memory system.
The configuration manager module 420 can manage the root level of each of the users or collaborators associated with the workspace and/or the predetermined settings associated with the workspace, the storage containers, and/or the individual work items. Each user or collaborator associated with a workspace has a root level in that workspace. The root level indicates the highest level in the hierarchical tree structure that the collaborator or user can see or utilize. For example, the root level may be the level that a user is invited to collaborate in a workspace. The configuration manager module 420 also manages the predetermined settings for each of the users. For example, each user associated with each workspace can have difference notification settings associated with the workspace, with each folder or storage container with the workspace, and/or for each work item within the workspace.
The criteria that are determined by workspace permissions can be managed by the workspace manager 436 in the permissions manager 435. The recipient selection module 418 can also determine the recipient selection criteria based on user affiliation with the workspace, including, one or more of, member, invited collaborator and collaborator in the workspace. Such user affiliation can be tracked and managed by, for example, the collaboration manger 438 or the permissions manager 435.
In one embodiment, the criteria are determined, at least in part, based on permissions associated with a work item on which the activity was performed in relation to in the workspace. Permissions associated with work items can be managed, tracked, updated, revised, or implemented, in one embodiment, by the work item manager 442. For example, the permissions associated with the work item can be set by, a creator of the work item or an administrative user of the workspace. Each workspace can include multiple work items where each of multiple work items has individually configurable permissions. The individually configured permissions can be determined by user roles and rights (e.g., as managed by the collaborations manager 438). The work item manager 442 can communicate with the collaboration manager 438 in setting, configuring, or re-configuring permissions associated with work items.
The notification of a triggering activity can cause one or more notifications to be presented to a selected user in the web-based or online collaboration environment such that the notifications are accessible by the user in real time or near real time to when the triggering activity occurred. The triggering activity can be the activity occurring in the web-based or online collaboration environment or the expiry of a queue timer in the case of batched notification events. In one embodiment, the notification(s) are presented via a user interface to the online collaboration platform, for example, when the recipient (e.g., selected recipient) is accessing the workspace (e.g., the same workspace in which activity is detected) or when the recipient is accessing a different workspace. Specifically, the real time or near real time notification can be presented to the user via the user interface if the user is online (e.g., online or otherwise logged into the web-based or online collaboration environment). Alternatively or additionally, batched notifications can be presented to the user via the user interface and/or a notification sent to the user in another manner (e.g., through email). In the case of batched notification, in some embodiments, the batched notification may provide a summary of multiple notifications and/or each or the notifications in detail.
Additionally, a workspace can be associated with an enterprise and the criteria can specify that the recipient that is selected is an employee of the enterprise. Enterprise associations and affiliations can be managed by the organization tracker 440, for example; in some embodiments, enterprises and/or enterprise accounts can specifically be managed, tracked, monitored by the enterprise tracker 441. Permissions for the workspace can be configured by a creator or administrative user of the workspace. The collaboration manager 438 can determine, track, and implement relationships, roles, and/or access levels of multiple users/collaborators. For example, users may be a general user, a creator of the workspace, a creator of a work item, or an administrative user. The permissions for a workspace can be configured by a user, creator, or the administrative user and is generally managed by the collaborations manager 438.
The notification engine 415 can determine the channel through which to notify selected users or recipients of activity. The channels can be configurable by the user per workspace, per storage container or folder, and/or per work item using the configuration manager module 420. The channels that are used can include, indicators via a user interface to the online collaboration environment, SMS, audio message, text-based messages, email, desktop application, RSS, etc. The indicators presented via the user interface can include visual indicators (e.g., pop-up form including text and/or graphics), audio indicators, or any other types detectable by a user.
In one embodiment, the notification is presented in the user interface among other notifications in an order based on a rule, which may be configurable by the recipient or another user. Such prioritization in presentation can be determined, managed, tracked, implemented, revised, or updated by the notification prioritizer 455, for example. The notification prioritizer 455 can present the notification in the user interface among other notifications in an order based on a rule as determined by the rules module 456, for example.
The rule can indicate user preferences for notifications of activities based on one or more of, a type of activity that occurred and a user related to the activity. For example, a given user may explicitly or implicitly indicate preferences for activities or actions performed by specific other users or collaborators. A user may also indicate explicitly or implicitly preferences for types of activities that they wish to be notified of or not notified of. Users may also indicate that notifications for certain types of activities are to be prioritized other others. For example, a user may indicate that a notification for a ‘comment on’ activity is of a higher priority compared to a ‘edit’ activity.
In one embodiment, the notification is presented in the user interface among other notifications based on chronological order, for example as tracked or determined by the chronological ordering engine 458. For example, each notification can be depicted in the user interface based the time ordering when each associated triggering activity occurred. Notification of the most recently occurred activity can be depicted above or below other notifications, or in a location where most easily accessed by the recipient user.
In one embodiment, the notification is presented in the user interface among other notifications based on relevance to the recipient, for example, as determined, tracked, monitored, or implemented by the relevance assessor 460. The relevance to the recipient can be represented by, for example, contextual and temporal parameters. For example, contextual parameters provide metrics indicating the recipient's current activity in the online collaboration platform. Current activity can be any activity of the user that occurred within a certain time frame (e.g., within the last minute, within the last 5 minutes, within the last 10 minutes, for example). Activity of the user can include: a document that the user edited, viewed, downloaded, commented on, tagged, or otherwise accessed. Activity of the user can also include activities surrounding a workspace, including creation/modification of a workspace or attributes of a workspace, such as modification of collaborators, permissions, etc.
Temporal parameters can, for example, provide metrics indicating the recipient's activities in the online collaboration platform over a period of time, a frequency with which the recipient has accessed a work item with which the activity relates to, and/or a frequency with which the recipient has accessed the workspace in which the activity was performed.
In one embodiment, notification messages can be assigned a priority rating on a scale (e.g., from 0, not important, to 100, very important) calculated depending on how much the recipient user is impacted by the notification. The impact on a user that a notification has can be indicated by, for example: 1) whether user needs to or has the option to respond to the notification? 2) whether the user (or owner) of the content that has been updated? 3) is the user active on the content that has been updated?
For notifications of user settings, assignment of priority can be based on, for example, any one or any combination of the following: 1) what are the type of events that the user wants to see more? 2) which collaborators that the user wants, likes, needs, or prefers to get the most notification from? Based on these priority ratings, notifications with a priority lower than a threshold (e.g., user-defined minimum threshold and/or system defined threshold) may not be not displayed, or displayed under select circumstances. In some instances, if too many notifications arrive at the same time, those with the highest priority are displayed. In one embodiment, similar notifications can be grouped together and assigned a priority as a group.
FIG. 5 depicts a block diagram illustrating an example of components in a notification server 550 for providing real time (or near real time) and/or batched notification of activities that occur in a web-based or online collaboration environment.
The notification server 550 generally includes, for example, a push server 505, an SMS notifier 515, and/or a priority module 525. In one embodiment, the push server 505 includes a long poll engine 506 and/or an HTTP streaming engine 508. Additional or less components/modules/engines can be included in the notification server 550 and each illustrated component.
As used herein, a “module,” “a manager,” a “handler,” a “detector,” an “interface,” a “controller,” or an “engine” includes a general purpose, dedicated or shared processor and, typically, firmware or software modules that are executed by the processor. Depending upon implementation-specific or other considerations, the module, manager, handler, or engine can be centralized or its functionality distributed. The module, manager, handler, or engine can include general or special purpose hardware, firmware, or software embodied in a computer-readable (storage) medium for execution by the processor. As used herein, a computer-readable medium or computer-readable storage medium is intended to include all mediums that are statutory (e.g., in the United States, under 35 U.S.C. 101), and to specifically exclude all mediums that are non-statutory in nature to the extent that the exclusion is necessary for a claim that includes the computer-readable (storage) medium to be valid. Known statutory computer-readable mediums include hardware (e.g., registers, random access memory (RAM), non-volatile (NV) storage, to name a few), but may or may not be limited to hardware.
The notification server 550 can support the services of a collaboration platform or environment to provide real time (or near real time) and/or batched notifications of activities. In one embodiment, the notification server 550 is integrated within a host server of a collaboration platform (e.g., the host server 100 shown in the example of FIG. 1 or the host server 400 shown in the example of FIG. 4, for example). The notification server 550 may also be externally coupled to the host server (e.g., the host server 100 or 400. In some instances, a portion of the functions implemented and performed by the notification server 550 can be implemented in part or in whole in the host server 100 or 400. For example, some of the components shown to be in the notification server 500 and associated functionalities can in part or in whole reside in the host server 100 or 400.
In one embodiment, the notification server 550 sends a notification of one or more activities that occur within a collaboration platform to a recipient. In some embodiments, the notification is sent by the server 550 such that the recipient is notified in real time (or near real time) to when the activity occurred or when the activity was performed. Alternatively or additionally, the notification can be sent as a batched notification upon expiry of a timer or upon another triggering event. Notification, including real-time notification, can be performed via push technology, for example by the push server 505 through long polls (e.g., via the long poll engine 506) and/or through the HTTP streaming (e.g., via the HTTP streaming engine 508). The notification server 550 can communicate with the host server to determine a recipient or recipients with whom to notify. The notification server 550 can also determine the activity or activities to notify the recipient of, for example through communication with the host server.
In one embodiment, the notification is presented in a feed stream among other notifications through a user interface on the user device according to relevancy to the user determined based on current or recent activity of the user in the web-based collaboration environment. The presentation priority in a user interface in a feed stream can be managed, in whole, or in part, for example, by the priority module 525 using information determined by the notification prioritizer (e.g., notification prioritizer 455 of host server 400 shown in the example of FIG. 4).
In one embodiment, the notification server 550 can send notifications to users via SMS (e.g., through the SMS notifier 515). In this instance, the notification server 500 can be coupled to an SMS center which forwards the SMS text message to a mobile device over a cellular network. The notification can be sent via SMS in real time or near real time, or with a delay.
FIG. 6 depicts a flow chart illustrating an example process for sending a batched notification including an indication of one or more activities that occurred in an online collaboration environment, according to an embodiment. The example process of FIG. 6 can be performed by, for example, the host server 100 and/or the notification server 150 of FIG. 1.
In process 602, a plurality of activities occurring in an online collaboration environment are detected. In process 604, a notification for one or more of the plurality of activities is generated.
In process 606, one or more recipients for each notification are selected according to criteria determined based on a workspace in which the associated activity was performed in the online collaboration environment. The one or more recipients can be selected, for example, automatically by a web server which hosts the online collaboration environment/platform. Some examples of criterion used to select recipients are illustrated with further reference to the example of FIG. 9.
In one embodiment, the criteria are based on pre-determined settings associated with a storage container within which the associated activity was performed in the online collaboration environment. The predetermined settings can be configured based on an affiliation with the storage container within which the associated activity was performed in the online collaboration environment. The affiliation with the storage container can include one or more of a storage container owned by the recipient or a storage container in which the recipient collaborates.
In one embodiment, the predetermined settings indicate whether notifications are enabled or disabled for the storage container within which the associated activity was performed in the online collaboration environment. In one embodiment, the predetermined settings are configured by the recipient prior to the performance of the activity in the online collaboration environment.
In one embodiment, the workspace includes multiple storage containers and each of the multiple storage containers has individually configurable predetermined settings.
In one embodiment, the criteria can be based on pre-determined settings associated with a work item upon which the associated activity was performed in the online collaboration environment. In this case, the predetermined settings can be configured based on an affiliation with the work item upon which the associated activity was performed in the online collaboration environment. The affiliation with the work item can include one or more of a work item owned by the recipient or a work item in which the recipient collaborates. The predetermined settings can be configured based on a type of activity performed on the work item, including, one or more of, upload, download, preview, or delete.
In process 610, upon expiry of a queue timer, the contents of the one or more queues associated with the one or more recipients are sent to the corresponding one or more recipients as batched notifications. In one embodiment, the notification is sent by a server implementing push technology. The server may be a portion of the same web server or another server. The push technology can be implemented using, for example, long polls or HTTP streaming.
FIG. 7A and FIG. 7B depict diagrams illustrating an example of collaboration between user A and user B within a workspace 700, according to one embodiment. User A and user B may collaborate through the use of one or more of various devices, such as client devices 102 of FIG. 1, although other devices are possible. The devices are not shown for simplicity.
Referring first to FIG. 7A which illustrates a workspace 700 according to an embodiment. More specifically, workspace 700 is shown as it appears to user A (i.e., workspace 700A) and to user B (i.e., workspace 700B). In this example, user A is the owner of workspace 700 and user B is invited into workspace 700 (e.g., by user A, and administrator, etc.) as a collaborator at folder F130. Accordingly, folder F100 is user A's root level and folder F130 is user B's root level. In some embodiments, the host server maintains a root level for each user of the system for each workspace in which the user is a member, owner, and/or collaborates in.
As discussed above, the collaboration platform or environment hosts workspaces with work items that one or more users can access (e.g., view, edit, update, revise, comment, download, preview, tag, or otherwise manipulate, etc.). A work item can generally include any type of digital or electronic content that can be viewed or accessed via an electronic device. In this example, the digital content resides within one or more storage containers (e.g., folders) in a hierarchical tree structure within workspace 700. More specifically, workspace 700 includes top-level folder F100 having a second level folders F110, F120, and F130. Folder F110 further includes third level folders F111 and F112. Similarly, folder F130 includes third level folders F131-F135, and folder F135 includes fourth level folder F136.
Notifications of activities that occur in an online or web-based collaboration environment are added to one or more selected queues for sending batched notifications to one or more selected users upon expiry of timer(s) associated with the queue(s). Each queue can be associated with a user and each user can have multiple queues set up with predetermined (or notification) settings based on any number of factors. Accordingly, a user can setup up different default notification settings for different types of folders and/or work items so that the user receives notifications for activities occurring only in those items that he/she is interested in. Additionally, the multiple queues and batching notifications described herein allow a user to set the predetermined settings so that certain activities occurring in a workspace (e.g., activities occurring under one or more specified folders) have a higher priority notification setting than other activities occurring under other folders. The notifications associated with activities occurring within the specified higher priority folders are added to a queue that sends batched notifications to a user at a faster interval (e.g., every 15 minutes) or in real-time (or near real-time). The use of multiple queues associated with single users is discussed in greater detail with respect to FIG. 8.
The storage containers can each have one or more associated predetermined (or notification) settings which can be associated with the storage container within which the associated activity was performed in the online collaboration environment. The predetermined settings can indicate whether, for example, notifications are enabled or disabled for that storage container and/or the types of activities or notifications that the user wants to receive notifications for and at what frequency. For example, each user may set different default notification settings for each folder or storage container that they have access to in the workspace. The predetermined settings can be set by a user or collaborator associated with the storage container.
Referring next to FIG. 7B which illustrates an example of detecting and/or otherwise capturing activities in workspace 700 and selecting appropriate user(s) and/or queue(s) associated with those user(s) for notification of those activities. In this example, two activities occur. First, user B creates a new folder F137 in folder F135 and user A subsequently creates a new work item under the folder F135. Notifications for each of these activities are added to one or more queues associated with user A and/or user B.
User A may have predetermined settings for the entire workspace 700. Alternatively or additionally, default settings may be applied to all folders in the workspace based on type. These default settings can be overridden on a per folder basis. For example, user A may want notifications every thirty minutes for new folders created in the workspace. However, user A may override this default setting by changing the predetermined settings on one or more individual folders (e.g., folder F135). Likewise, user B may configure predetermined settings such that activities occurring under folder F137 (of which user B is the creator and/or owner) appear in batched notifications at a higher frequency than other folders in workspace 700B. Further, user B may set up predetermined settings so that notifications are received only for those activities that occur within folder F137 and no notification is received for activities occurring in other folders in the workspace 700B.
FIG. 8 depicts a diagram illustrating an example of a system that includes multiple queues for each user. In particular, user A includes three queues that send one or more notifications at thirty minute intervals, fifteen minute intervals, and in real time (or near real-time). The predetermined settings for each folder determine to which queue notifications for activities occurring within that folder are added and/or whether a notification is added to a queue at all. In some embodiments, if predetermined settings are not configured for a folder, then the predetermined settings for the folder one level up are used until the root folder is reached at which point default settings for the workspace may be used. Additionally, as discussed above, the predetermined settings may determine which activities, if any, trigger notifications (e.g., notify on create and/or edit, but no notification on deletion).
FIG. 9 depicts a diagram illustrating examples of criteria used to select notification recipients and the various pathways through which criteria are set.
In general, criteria can be determined within a workspace (e.g., a workspace in which a notification-triggering activity or action was performed or detected by the system). Criteria can be determined, for example, based on a user's affiliations 910, and/or the user's permissions 910, and/or user's predetermined settings 930. The user's affiliations 910 can include the user's affiliation with a workspace 912, the user's affiliation with a folder (or storage container) 914, and/or the user's affiliation with an individual work item 916. Types of user affiliations with any of the affiliations 912-916 can include, for example, a member, a user, a collaborator, or an invited collaborator. Other types of affiliations can include creator, administrator, manager, etc.
Criteria can also be determined based on the user's permissions 920. The user's permissions 920 can include the user's permissions with respect to a workspace 922, the user's permissions with respect to a folder (or storage container) 924, and/or the user's permissions with respect to an individual work item 926. Types of user permissions can include, for example, creator, administer, or owner. Other types of permissions are also possible.
Criteria can also be determined based on the user's predetermined settings 930 (or notification settings). A user may set the predetermined settings or default settings per workspace 932, and/or per folder 934 (or storage container), and/or per work item 936. Predetermined settings are typically set by the user or collaborator; however, the predetermined settings 930 can be set by creators, administrators, editors, etc.
Each criterion can be used alone or in combination with any number of others in the process of selecting recipients to notify. Additionally, in some instances, a workspace is associated with an organization such as an enterprise. In this instance the criteria used can include a requirement that the recipient that is selected is an employee of the enterprise, or other organization.
FIG. 10 depicts a flow chart illustrating an example process for sending a batched notification of one or more activities that occurred in an online collaboration environment, according to an embodiment. The example process of FIG. 10 can be performed by, for example, the host server 100 and/or the notification server 150 of FIG. 1.
In process 1002, a plurality of activities occurring in an online collaboration environment are received or detected by the host server. In process 1004, a notification for one or more of the plurality of activities is generated.
In process 1006, one or more recipients and one or more queues for each notification event are selected according to permissions determined based on a workspace and/or predetermined settings associated with a storage container in the workspace within which the associated activity was performed.
In process 1008, an indication of each notification is added to one or more queues associated with the one or more selected recipients.
In process 1010, upon expiry of a queue timer, the contents of the one or more queues associated with the one or more recipients are sent to the corresponding one or more recipients as batched notifications. In one embodiment, the notification is sent by a server implementing push technology. The server may be a portion of the same web server or another server. The push technology can be implemented using, for example, long polls or HTTP streaming.
In process 1012, the batched notification is displayed or otherwise presented to the user. For example, the notification can be presented via a user interface in the online collaboration platform and/or depicted through a web-browser to the selected user(s). The notification can also be sent to the selected user(s) via email, SMS, or in an RSS feed, for example. In another embodiment, the batched notification can be displayed in a feed stream among other notifications according to relevancy. In general relevance to the recipient can be characterized using one or more of, contextual and temporal parameters.
FIG. 11 depicts a diagram illustrating example processes for and parameters used in determining an ordering with which notifications of activity can be presented to a user in batched notifications.
A rule which specifies preferences for notifications of activities based on a type of activity and/or a user related to the activity can be used to determine ordering with which to present a notification in a user interface. Chronological ordering can be used to determine ordering with which to present a notification in a user interface.
Contextual parameters can be used to characterize relevance to the recipient in determining the ordering. Contextual parameters can include, for example, the recipient's current activity and/or collaborator's current activities. Temporal parameters can include, for example, recipient's activities over a period of time, frequency with which the recipient has accessed a work item, and/or frequency with which the recipient has accessed the workspace. Each process can be used alone or in conjunction with any number of other processes for determining the ordering of placement in the user interface of a notification in feeds.
FIG. 12 shows a diagrammatic representation of a machine in the example form of a computer system within which a set of instructions, for causing the machine to perform any one or more of the methodologies discussed herein, may be executed
In alternative embodiments, the machine operates as a standalone device or may be connected (e.g., networked) to other machines. In a networked deployment, the machine may operate in the capacity of a server or a client machine in a client-server network environment, or as a peer machine in a peer-to-peer (or distributed) network environment.
The machine may be a server computer, a client computer, a personal computer (PC), a user device, a tablet PC, a laptop computer, a set-top box (STB), a personal digital assistant (PDA), a cellular telephone, an iPhone, an iPad, a Blackberry, a processor, a telephone, a web appliance, a network router, switch or bridge, a console, a hand-held console, a (hand-held) gaming device, a music player, any portable, mobile, hand-held device, or any machine capable of executing a set of instructions (sequential or otherwise) that specify actions to be taken by that machine.
While the machine-readable medium or machine-readable storage medium is shown in an exemplary embodiment to be a single medium, the term “machine-readable medium” and “machine-readable storage medium” should be taken to 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 sets of instructions. The term “machine-readable medium” and “machine-readable storage medium” shall also be taken to include any medium that is capable of storing, encoding or carrying a set of instructions for execution by the machine and that cause the machine to perform any one or more of the methodologies of the presently disclosed technique and innovation.
In general, the routines executed to implement the embodiments of the disclosure, may be implemented as part of an operating system or a specific application, component, program, object, module or sequence of instructions referred to as “computer programs.” The computer programs typically comprise one or more instructions set at various times in various memory and storage devices in a computer, and that, when read and executed by one or more processing units or processors in a computer, cause the computer to perform operations to execute elements involving the various aspects of the disclosure.
Moreover, while embodiments have been described in the context of fully functioning computers and computer systems, those skilled in the art will appreciate that the various embodiments are capable of being distributed as a program product in a variety of forms, and that the disclosure applies equally regardless of the particular type of machine or computer-readable media used to actually effect the distribution.
Further examples of machine-readable storage media, machine-readable media, or computer-readable (storage) media include, but are not limited to, recordable type media such as volatile and non-volatile memory devices, floppy and other removable disks, hard disk drives, optical disks (e.g., Compact Disk Read-Only Memory (CD ROMS), Digital Versatile Disks, (DVDs), etc.), among others, and transmission type media such as digital and analog communication links.
The network interface device enables the machine 1100 to mediate data in a network with an entity that is external to the host server, through any known and/or convenient communications protocol supported by the host and the external entity. The network interface device can include one or more of a network adaptor card, a wireless network interface card, a router, an access point, a wireless router, a switch, a multilayer switch, a protocol converter, a gateway, a bridge, bridge router, a hub, a digital media receiver, and/or a repeater.
The network interface device can include a firewall which can, in some embodiments, govern and/or manage permission to access/proxy data in a computer network, and track varying levels of trust between different machines and/or applications. The firewall can be any number of modules having any combination of hardware and/or software components able to enforce a predetermined set of access rights between a particular set of machines and applications, machines and machines, and/or applications and applications, for example, to regulate the flow of traffic and resource sharing between these varying entities. The firewall may additionally manage and/or have access to an access control list which details permissions including for example, the access and operation rights of an object by an individual, a machine, and/or an application, and the circumstances under which the permission rights stand.
Other network security functions can be performed or included in the functions of the firewall, can be, for example, but are not limited to, intrusion-prevention, intrusion detection, next-generation firewall, personal firewall, etc., without deviating from the novel art of this disclosure.
Unless the context clearly requires otherwise, throughout the description and the claims, the words “comprise,” “comprising,” and the like are to be construed in an inclusive sense, as opposed to an exclusive or exhaustive sense; that is to say, in the sense of “including, but not limited to.” As used herein, the terms “connected,” “coupled,” or any variant thereof, means any connection or coupling, either direct or indirect, between two or more elements; the coupling of connection between the elements can be physical, logical, or a combination thereof. Additionally, the words “herein,” “above,” “below,” and words of similar import, when used in this application, shall refer to this application as a whole and not to any particular portions of this application. Where the context permits, words in the above Detailed Description using the singular or plural number may also include the plural or singular number respectively. The word “or,” in reference to a list of two or more items, covers all of the following interpretations of the word: any of the items in the list, all of the items in the list, and any combination of the items in the list.
The above detailed description of embodiments of the disclosure is not intended to be exhaustive or to limit the teachings to the precise form disclosed above. While specific embodiments of, and examples for, the disclosure are described above for illustrative purposes, various equivalent modifications are possible within the scope of the disclosure, as those skilled in the relevant art will recognize. For example, while processes or blocks are presented in a given order, alternative embodiments may perform routines having steps, or employ systems having blocks, in a different order, and some processes or blocks may be deleted, moved, added, subdivided, combined, and/or modified to provide alternative or subcombinations. Each of these processes or blocks may be implemented in a variety of different ways. Also, while processes or blocks are at times shown as being performed in series, these processes or blocks may instead be performed in parallel, or may be performed at different times. Further, any specific numbers noted herein are only examples: alternative implementations may employ differing values or ranges.
The teachings of the disclosure provided herein can be applied to other systems, not necessarily the system described above. The elements and acts of the various embodiments described above can be combined to provide further embodiments.
Any patents and applications and other references noted above, including any that may be listed in accompanying filing papers, are incorporated herein by reference. Aspects of the disclosure can be modified, if necessary, to employ the systems, functions, and concepts of the various references described above to provide yet further embodiments of the disclosure.
These and other changes can be made to the disclosure in light of the above Detailed Description. While the above description describes certain embodiments of the disclosure, and describes the best mode contemplated, no matter how detailed the above appears in text, the teachings can be practiced in many ways. Details of the system may vary considerably in its implementation details, while still being encompassed by the subject matter disclosed herein. As noted above, particular terminology used when describing certain features or aspects of the disclosure should not be taken to imply that the terminology is being redefined herein to be restricted to any specific characteristics, features, or aspects of the disclosure with which that terminology is associated. In general, the terms used in the following claims should not be construed to limit the disclosure to the specific embodiments disclosed in the specification, unless the above Detailed Description section explicitly defines such terms. Accordingly, the actual scope of the disclosure encompasses not only the disclosed embodiments, but also all equivalent ways of practicing or implementing the disclosure under the claims.
While certain aspects of the disclosure are presented below in certain claim forms, the inventors contemplate the various aspects of the disclosure in any number of claim forms. For example, while only one aspect of the disclosure is recited as a means-plus-function claim under 35 U.S.C. §112, ¶6, other aspects may likewise be embodied as a means-plus-function claim, or in other forms, such as being embodied in a computer-readable medium. (Any claims intended to be treated under 35 U.S.C. §112, ¶6 will begin with the words “means for”.) Accordingly, the applicant reserves the right to add additional claims after filing the application to pursue such additional claim forms for other aspects of the disclosure.

## Claims

1. A method comprising:
detecting, at a host server, activities occurring in an cloud-based collaboration environment;
generating, at the host server, a notification for each of a plurality of activities of

the activities occurring in the cloud-based collaboration environment;
determining a criteria for selection of one or more recipients based on a type of activity performed in a workspace of the cloud-based collaboration environment, wherein the type of activity includes a preview action that shows a visual preview of a file in the workspace of the cloud-based collaboration environment;
selecting, at the host server, the one or more recipients for the notification based on the criteria;
adding an indication of the notification for each of the plurality of activities to one or more corresponding queues associated with the one or more selected recipients, wherein each of the one or more queues is associated with a queue event trigger that is selectively configurable by the corresponding one or more selected recipients to trigger as a result of any of multiple different types of events; and
upon triggering of the queue event trigger, sending the contents of the one or more queues associated with the one or more selected recipients for delivery to the corresponding one or more selected recipients as batched notifications.

2. The method of claim 1, wherein the criteria is based on predetermined settings associated with a storage container within which the type of activity was performed in the cloud-based collaboration environment.

3. The method of claim 2, wherein the predetermined settings are configured based on an affiliation with the storage container within which the type of activity was performed in the cloud-based collaboration environment.

4. The method of claim 3, wherein the affiliation with the storage container comprises one or more of a storage container owned by the one or more selected recipients or a storage container in which the one or more selected recipients collaborate.

5. The method of claim 2, wherein the workspace includes multiple storage containers and each of the multiple storage containers has individually configurable predetermined settings.

6. The method of claim 2, wherein the predetermined settings indicate whether notifications are enabled or disabled for the storage container within which the type of activity was performed in the cloud-based collaboration environment.

7. The method of claim 2, wherein the predetermined settings are configured by the one or more selected recipients prior to the performance of the type of activity in the cloud-based collaboration environment.

8. The method of claim 1, wherein the criteria is based on predetermined settings associated with a work item upon which the type of activity was performed in the cloud-based collaboration environment.

9. The method of claim 8, wherein the predetermined settings are configured based on an affiliation with the work item upon which the type of activity was performed in the cloud-based collaboration environment.

10. The method of claim 9, wherein the affiliation with the work item comprises one or more of a work item owned by the one or more selected recipients or a work item in which the one or more selected recipients collaborate.

11. The method of claim 1, wherein the criteria is further based on types of activities, including, one or more of, upload, download, or delete.

12. The method of claim 1, wherein the host server comprises a first server and a second server, and wherein said selecting the one or more recipients is performed by the first server and said sending the contents of the one or more queues associated with the one or more selected recipients to the corresponding one or more selected recipients is performed by the second server.

13. The method of claim 12, wherein the second server includes push technology implemented using one or more of long polls or HTTP streaming.

14. The method of claim 1, further comprising electronically displaying the batched notifications to the corresponding one or more selected recipients via an electronic user interface.

15. The method of claim 1, wherein at least one of the one or more selected recipients is associated with a plurality of queues and the indication of the notification is added to one of the plurality of queues based on the criteria.

16. A system comprising:
a processing unit;
an interface configured to receive activities occurring in an online cloud-based collaboration environment;
a memory unit having instructions stored thereon,
wherein the instructions, when executed by the processing unit, cause the processing unit to generate a notification for each of a plurality of activities of the activities occurring in the cloud-based collaboration environment, determine a criteria for selection of one or more recipients based on a type of activity performed in a workspace of the cloud-based collaboration environment, select the one or more recipients for the notification based on the criteria, add an indication of the notification for each of the plurality of activities to one or more corresponding queues associated with the one or more selected recipients, and upon triggering of a queue event trigger, send the contents of the one or more queues associated with the one or more selected recipients for delivery to the corresponding one or more selected recipients as batched notifications, wherein the queue event trigger is selectively configurable by the corresponding one or more selected recipients to trigger as a result of any of multiple different types of events, and wherein the type of activity includes a preview action that shows a visual preview of a file in the workspace of a the cloud-based collaboration environment.

17. The system of claim 16, wherein the criteria is based on predetermined settings associated with a storage container within which the type of activity was performed in the cloud-based collaboration environment.

18. The system of claim 17, wherein the predetermined settings are configured based on an affiliation with the storage container within which the type of activity was performed in the cloud-based collaboration environment.

19. The system of claim 18, wherein the affiliation with the storage container comprises one or more of a storage container owned by the one or more selected recipients or a storage container in which the one or more selected recipients collaborate.

20. The system of claim 17, wherein the workspace includes multiple storage containers and each of the multiple storage containers has individually configurable predetermined settings.

21. The system of claim 17, wherein the predetermined settings indicate whether notifications are enabled or disabled for the storage container within which the type of activity was performed in the cloud-based collaboration environment.

22. The system of claim 17, wherein the predetermined settings are configured by the one or more selected recipients prior to the performance of the type of activity in the cloud-based collaboration environment.

23. A method comprising:
generating, at a host server, a notification event for each of a plurality of activities of activities occurring in a cloud-based collaboration platform;
selecting, at the host server, one or more recipients for the notification event based on permissions associated with a workspace and predetermined settings of the workspace within which the plurality of activities is performed in the cloud-based collaboration platform;
adding an indication of the notification event for each of the plurality of activities to one or more corresponding queues associated with the one or more selected recipients; and
upon triggering of a queue event trigger, sending the contents of the one or more queues associated with the one or more selected recipients for delivery to the corresponding one or more selected recipients as batched notifications, wherein the queue event trigger is selectively configurable by the corresponding one or more selected recipients to trigger as a result of any of multiple different types of events, wherein the multiple different types of events include modifying collaborators in the workspace of the cloud-based collaboration environment.

24. The method of claim 23, further comprising:
selecting, at the host server, the one or more queues associated with the one or more selected recipients based on the workspace and the predetermined settings associated the workspace within which the plurality of activities is performed in the online collaboration environment.

25. The method of claim 23 further comprising:
determining, at the host server, a root level for one or more of the plurality of users of the online collaboration environment.

26. The method of claim 25, wherein the root level is the level at which a user of the plurality of users is invited into the workspace in which the plurality of activities is performed in the cloud-based collaboration environment.

27. The method of claim 23, wherein the workspace includes multiple storage containers, and wherein each of the multiple storage containers has individually configurable permissions.

28. A system for batching notifications of activities that occur in a cloud-based collaboration environment, the system comprising:
means for detecting activities occurring in an cloud-based collaboration platform;
means for generating a notification for each of a plurality of activities of the activities occurring in the cloud-based collaboration environment;
means for determining a criteria for selection of one or more recipients based on a type of activity performed in a workspace of the cloud-based collaboration environment, wherein the type of activity includes a preview action that shows a visual preview of a file in the workspace of the cloud-based collaboration environment;
means for selecting the one or more recipients for the notification based on the criteria;
means for adding an indication of the notification for each of the plurality of activities to one or more corresponding queues associated with the one or more selected recipients; and
means for sending the contents of the one or more queues associated with the one or more selected recipients for delivery to the corresponding one or more selected recipients as batched notifications upon triggering of a queue event trigger, wherein the queue event trigger is selectively configurable by the corresponding one or more selected recipients to trigger as a result of any of multiple different types of events.

29. A non-transitory machine readable storage medium encoded with instructions for performing a method, the instructions comprising:
instructions to detect, at a host server activities occurring in an cloud-based collaboration environment;
instructions to generate, at the host server, a notification for each of a plurality of activities of the activities occurring in the cloud-based collaboration environment;
instructions to determine a criteria for selection of one or more recipients based on a type of activity performed in a workspace of the cloud-based collaboration environment, wherein the type of activity includes a preview action that shows a visual preview of a file in the workspace of the cloud-based collaboration environment;
instructions to select, at the host server, the one or more recipients for the notification based on the criteria;
instructions to add an indication of the notification for each of the plurality of activities to one or more corresponding queues associated with the one or more selected recipients, wherein each of the one or more queues is associated with a queue event trigger that is selectively configurable by the corresponding one or more selected recipients to trigger as a result of any of multiple different types of events; and
instructions to, upon triggering of the queue event trigger, sending the contents of the one or more queues associated with the one or more selected recipients for delivery to the corresponding one or more selected recipients as batched notifications.

30. The method of claim 1, wherein the multiple different types of events include modifying collaborators in the workspace of the cloud-based collaboration environment.