Mobile group data distribution

A mobile collaborative community system provides distribution of shared data (e.g., media, preference, calendar, contacts, tasks, etc.) for a group of individuals (e.g., families, business organization, team, project, etc.) to the mobile devices of the group members. The system maintains a central repository or database of shared data for groups, as well as information defining the groups, user membership in the groups, and the mobile devices associated with the users. The system distributes the shared data for a group to the mobile devices of the user who are members of the group. The users can make changes to shared group data on their mobile devices, which changes are returned to the central repository and re-distributed to update the shared data on the mobile devices of all group members.

BACKGROUND

Description of Related Art

In current times, peoples generally rely on mobile communication systems to facilitate collaboration among a group of people (such as, families, business associates, team or project members, etc.). They interact with others via electronic mail, instant messaging, text messaging, calendaring, voice mail, telephone/mobile phone calling, and so on. Even when the primary interaction is to be an in person meeting, the communication systems are often relied upon to arrange time, place and participants of the meeting or appointment.

For effective group collaboration, it is often also helpful for members of the group to collectively share information. Examples of commonly shared group data include calendar information, contact information, to-do and project planning information, media (e.g., documents, audio and video, photos, etc.), software applications, and other information. Moreover, the group members preferably have access to the shared information available to them wherever they are located at any time. Further, various members of the group may need to make changes to the data, which updates also need to be accessible by other members of the group. New members may be added to the group, who will also require access to the current group information.

In the past, group data has often been shared by posting the data in a central location accessible to all group members. For example, the information can be posted to a bulletin board, wall calendar, chalkboard or whiteboard. Any changes to the data are made at the central location, and individual members are responsible for regularly checking the central location for any updates. As group work has moved to collaborating via electronic communication systems, a similar approach has been taken. Groups post shared data to a central site, such as a web-based calendar, bulletin board, or message posting forums. Any changes or new information is posted on the central site, and members again remain responsible to check that site regularly for updates.

SUMMARY

The following Detailed Description presents techniques and tools for mobile group data distribution that manages distribution of shared information for a group to mobile devices of the group members. The mobile group data distribution techniques can be embodied in a mobile collaborative community system and mobile devices, along with methods of operation and use of such systems and devices, and products.

The mobile group data distribution techniques described herein maintain a central repository of the shared group data for a group or groups, along with a central database of information that defines groups, users, users' memberships in the groups, and mobile devices associated with the users. The group data distribution techniques distribute the shared group data of a group to the mobile devices of the respective group's members. Members of the group can make changes to the group data from their mobile devices, and have the changes returned to the central repository. These changes are then re-distributed to the mobile devices of the group members to update the shared group data on those mobile devices.

This Summary is provided to introduce a selection of concepts in a simplified form that is further described below in the Detailed Description. This summary is not intended to identify key features or essential features of the claimed subject matter, nor is it intended to be used as an aid in determining the scope of the claimed subject matter. Additional features and advantages of the invention will be made apparent from the following detailed description of embodiments that proceeds with reference to the accompanying drawings.

DETAILED DESCRIPTION

The following description relates to techniques for mobile group data distribution. The following description describes an example implementation of the techniques in the context of a mobile collaborative community system. For purposes of illustration, this exemplary mobile collaborative community system incorporating this technique is a communication network, incorporating mobile communication devices, such as mobile communications devices with telephone, voice mail, email, and text messaging. The technique does not require that the mobile collaborative community system uses any particular communication technology, but rather can be applied to communications, technologies in general that provide communication or interaction between a user and his or her contacts.

1. Example Mobile Collaborative Community System Architecture

In one example implementation, the techniques described herein are implemented in a communication system designed to provide collaboration among a community of people via mobile devices (e.g., mobile phone, laptop, pagers, and etc.), which is herein termed a mobile collaborative community system100and illustrated inFIG. 1. The system can be designed for general purpose use by any group or community of people, or have features specific to use by a particular community (e.g., sales force or other type business organization; a sports team, youth group, on-line multi-player gamers or other activities group; a religious, cultural, charity or non-profit; family; among other communities or groups of people).

With reference toFIG. 1, the mobile collaborative community system100provides a set of data services115for users of mobile communication devices130, such as mobile phones, smart phones, handheld computers (also known as personal digital assistants or PDAs), tablet and laptop computers, among other mobile communication devices. The mobile collaborative community data services115are run on one or more server computers110of a data center, which are networked to communicate with the mobile communication devices130via a mobile carrier network120. The mobile collaborative community data services include data services to support collaborative applications such as calendaring, meeting, contact management, data and document sharing, and other applications.

The server computers110and mobile communication devices130generally include at least one processing unit, a memory and storage for holding data and program instructions, communication connections with other computers and devices, and input/output capabilities. Various features and capabilities can be realized in the server computers and mobile communications devices via software programming thereof, including by program instructions and procedures carried on a computer-readable storage medium or media which are accessed by and executed on the processing unit.

FIG. 2illustrates in more detail a possible system architecture200for the mobile collaborative community system that provides the collaborative community services115(FIG. 1) to user mobile devices130(FIG. 1). The illustrated system architecture200includes a set of servers (such as may be housed in a data center) that provide data distribution and group management210, over-the-air (OTA) protocols214, device side application programming interfaces (APIs)220, system backend APIs224(typically web-based), customer service capabilities230(including billing, password reset, connectivity and set up) and infrastructure240(such as, data and connection security, billing, logging, monitoring and failover capability). The architecture also includes firewalls250at the data center's connections with external networks, systems and devices (e.g., carrier networks, the Internet, and users' mobile communication devices), and with the customer service capabilities230. The system defines a community model via the group management capabilities that encompasses users, groups of users, and potentially groups of groups. Groups can be “self” managed by users with an invitation model or can be externally managed by an enterprise or other organization. Membership in a group can be “read-only” or “read-write”. Users can control what personal information is shared with each group.

Various applications260can be layered on top of the group management and distribution capabilities of the mobile collaborative community system. Examples of applications include calendar, sales force-automation, online gaming portal, meeting and document sharing, sports team management, and so on.

2. Mobile Group Data Distribution

The mobile collaborative community system100(FIG. 1) implements tools and techniques for mobile group data distribution, which shares data among a group of individuals by associating the data with the group and distributing that data via wireless or wired data networks to the individuals' mobile devices.

FIG. 3presents a simplified model of the mobile group data distribution. A distribution server310serves as a central repository for shared group data. The distribution server310maintains a group membership database320, which contains information defining the groups for which the distribution server handles mobile group data distribution. The group membership database320further contains information defining users, the users' memberships in the groups, and the users' mobile devices. Accordingly, the group membership database can be queried to identify the mobile devices associated with the users that are members of a particular group. The distribution server310can be implemented as a relational database.

The distribution server310also stores a central copy of the shared data330-332associated with each group. The shared data can be stored in the form of a file or data stream in a storage system (e.g., hard disk array or other persistent data storage devices) associated with the distribution server. The contents of the shared data for a group can include a data set of various data that is to be shared among the group members, such as media (e.g., audio, video, photographs, documents), information databases, contact information, to-do lists, software applications (e.g., productivity applications, games, etc.), and so on.

The distribution server310operates to distribute each group's shared data and changes to the shared data out to all the mobile devices360-362of the members of each group via a data network350. In this way, each member's mobile device360-362will have a copy of the shared data for the groups to which the mobile device's user belongs. For example, a first user (e.g., user0) who belongs only to one group (e.g., group1) will, have the group data340of that group distributed to his or her mobile device360. Another user (e.g., user1) who belongs to two groups (e.g., group3and group6) will have the shared data341,342for those groups on his or her mobile device361.

In this mobile group data distribution model300, the users also have the capability to make changes to the shared group data on their mobile device. Such changes are returned to the distribution server310, where the changes are applied to the version330-332of the respective group shared data that is centrally stored at the distribution server. The distribution server310then also distributes the changes to mobile devices of other users that are members of the group, so that the shared group data is updated with the changes on each group member's mobile device.

FIG. 4illustrates data flow for a more detailed example implementation of the mobile group data distribution model300(FIG. 3) within the mobile collaborative community system200(FIG. 2). In this example implementation, the mobile group data distribution is coordinated with data transfers or message exchanges between three segments: the distribution server210, the application server260, and the user mobile devices130. Although the data flow is shown for ease of illustration with a single distribution server, application server and user mobile device, it should be understood that each of these segments can include any number of servers or devices, which may be in a cluster configuration, to provide scaling of the group data distribution service to a desired number of mobile devices130.

The application server260has an application database421, a Web graphical user interface (GUI)422, application logic423, and a distribution queue424that holds changes to the shared group data for distribution by the distribution server210. The web GUI422provides a user-facing user interface based on Web (Internet) standards (e.g., interactive web pages or forms) that allows users to interact with the collaborative community application(s) via an Internet connection (e.g., from a web browser or other web-enable application on a computer connected to the Internet, which accesses the collaborative community system through the Internet). Alternatively, in the case of some applications, the user-facing GUI for the application server260need not be web-enabled, or may be omitted.

The application logic423is the software that provides the programming logic or functionality of the collaborative community application(s)260(FIG. 2). The application logic processes the content of the shared group data for the application, and processes any changes made to the shared group data of that application made by a user either via the web GUI422or from the users' mobile devices130. All data changes, whether user initiated or device initiated, go through the application logic423on the application server. This provides a convenient, single point in the data flow to add or modify related data and to massage data (for example, to do voice recognition) before the shared data is distributed to user mobile devices130.

The application logic423and web GUI422store information needed for their operation in the application database421. The application database421of the application server260in this section is structured to make application functionality easier. More particularly, unlike the distribution server, the data is not structured as an opaque stream or blob (binary large object). Instead, the data can be structured as a database containing tables having records with the fields broken out and indexed appropriately to the application.

Finally, the application server260interfaces with the distribution server210via the distribution queue424. After changes are made to the shared group data of the application, the distribution logic424queues up the shared group data changes in the distribution queue424for the distribution server210to distribute out to the mobile devices130. The distribution queue424can be implemented using the Java Messaging Services (JMS) or Microsoft Message Queuing (MSMQ) messaging infrastructure platforms.

The distribution server210is responsible for moving the shared data for each group between the application server260and the mobile devices130associated with that group's users. The distribution server contains a distribution database411, and programming for group/application/user/device management412, a mobile protocol413and a pusher414. Additionally, the distribution server contains a pending queue415to hold changes made to the shared group data at the user mobile devices130for processing by the application server260. The pending change queue415also can be implemented using the Java Messaging Services (JMS) or Microsoft Message Queuing (MSMQ) messaging infrastructure platforms.

The distribution server210manages the shared group data as opaque streams or blobs. In other words, the distribution server210simply moves and stores the shared group data in the distribution database411as a unitary block, and does not perform processing based on its contents. Accordingly, the shared group data when stored in the distribution database411of the distribution server need not be broken out in a database structure with separate fields or indexing.

The distribution server210contains management tools412for administering the information in the group membership database320(FIG. 3) that defines the groups, users, user membership in groups and mobile devices associated with the users. In addition, the distribution server210also can manage and record information as to which application(s) are stored on the individual user mobile devices. This allows the distribution server210to further limit distribution of group data on an application basis. In other words, the distribution server distributes the shared group data for a particular application to only those mobile devices of group members that support the respective application.

The mobile protocol413of the distribution server210implements one side of the protocol for data transfer to the user mobile devices. In this example implementation, the distribution server performs data transfers of the group data to mobile devices using a “tickle and pull” protocol. More particularly, when the application server260queues changed group data for distribution, the pusher414generates a tickle message to be sent to the user mobile devices130associated with the users in the group. The tickle message notifies the user mobile devices that a change to the group data is available. The user mobile devices130thereafter initiate a data transfer via the mobile protocol413to pull the group data change to the mobile device.

The user mobile device130contains the user-facing mobile user interface432, and also the mobile device portion of the application logic433. The user mobiles device130also contains a mobile database431that stores the group data for the group's to which the user of the mobile device belongs. Unlike that distribution server, the mobile database is structured to make application functionality easier. Accordingly, the data is not simply stored as opaque blobs, but as a database table with records with the fields broken out and indexed appropriately (or other format appropriate to the application).

The user interface432and application logic433permit the user to interact with the group data for the application, or in other words provide the functionality of the application to the user on the mobile device. This application functionality can cause the group data to change. For example, the user of a collaborative sales force automation application can enter or modify data for the group's sales activities on the user's mobile device. As a further example, the user could modify appointment data of a group calendar application, or task data in a team project management application.

The mobile protocol434in the user mobile device implements the mobile device side of the data transfer to and from the user mobile device. Upon being notified by the tickle message from the distribution server of an update to the group data being available, the device-side mobile protocol434initiates the data transfer of the group data changes. The mobile protocol434interfaces with the mobile application logic to apply the changes to the group data stored in the mobile database431. When changes are made to the group data of the application on the user mobile device, the mobile protocol434queues the group data change until a next time that the user mobile device connects with the distribution server.

The mobile protocol434has information as to which applications are installed on the user mobile device and which groups its user is a member of. The mobile protocol uses this information to initiate data distribution for such groups and applications. In this example implementation, the application registration is managed locally on the user mobile device130, while group membership is managed remotely at the distribution server (by the management tools412) and distributed as a group configuration stream to the mobile protocol434on the user mobile device.

In the illustrated data flow shown inFIG. 4, the distribution of group data for an application is based on a group identifier and the application in question. As previously described, the distribution server210distributes the group data to those of the user mobile devices130that are associated with users who are members of the respective group, and have the application on the mobile device. On the other hand, change data is returned from all user mobile devices to the application server for the application, regardless of the user mobile device's association with groups. In addition, the distribution server210and user mobile device130assigns consecutive sequence numbers to keep track of a sequence of changes made to the group data. The sequence numbers can be assigned to the group data as a whole, or more preferably to individual records or segments of the group data. The sequence numbers are used by the mobile protocol413,434to determine which of a sequence of changes have been distributed and applied by any particular one of the user mobile devices130. The sequence number of the last change distributed to a particular device is remembered (either at the device end or distribution server side). When that device next connects to the distribution server, this sequence number of the last distributed change is used as a starting point for distributing subsequent changes to the device. The distribution server then distributes changes with sequence numbers after that of the last distributed change.

More particularly, the data flow for distribution of the group data when a change is made from a user mobile device is as follows:

1. The user makes a change to the group data using the mobile GUI432on the user mobile device130.

2. The mobile GUI432submits the change to the mobile logic433for the application on the user mobile device130.

3. The mobile logic433makes local changes to the group data in the mobile database431. The mobile logic433also packages up and queues the change data for distribution with the mobile protocol434. The mobile protocol assigns local sequence number to the changed records of the group data.

4. At a later time (depending, for example, on connectivity with the distribution server, connection preference, and etc.), the user mobile device130connects with the distribution server210and transfer the change data to the distribution server.

5. The distribution server210queues the change data for processing by the application logic423on the application server260in the pending change queue415.

6. The application logic423processes the changes, potentially adding new records that correlate with the changes, deleting old records that no longer apply or even modifying the changed record, in accordance with the functionality of the application as defined in the application logic. The application logic applies these changes to the application database421on the application server260. The application logic also packages up and queues the resulting change data in the distribution queue424for distribution to the user mobile devices. The application logic assigns a global sequence number to the changed records of the group data.

7. The pusher414on the distribution server210retrieves the change data from the distribution queue, and makes decisions based on group membership and installed application about which of the user mobile devices is to have the data distributed to them. The pusher414adds the changed group data along with its assigned global sequence number to the distribution database411, and issues tickle messages to the user mobile devices to which the group data is distributed.

8. Sometime later (e.g., in response to the tickle message, or based on connection preferences), the user mobile devices130connect with the distribution server210and have the mobile protocol413transfer the changed group data to the appropriate user mobile devices.

9. As each change is transferred in sequence to a user mobile device, the mobile protocol413,434records metadata concerning the changed group data and passes the packaged changes to the mobile logic433. The mobile logic433, in turn, unpackages the changes and saves those changes to the group data in the mobile database431. In addition, the mobile logic433updates any running mobile GUI432on the user mobile device130, and resets any timers that relate to the changes data.