The present patent disclosure generally relates to data manipulation techniques. More particularly, and not by way of any limitation, the present patent disclosure is directed to a system and method for dynamic manipulation of data describing user availability.
In the present electronic age, many individuals and organizations maintain and schedule their appointments, meetings, conferences, other engagements, and the like through a suitable application (e.g., a calendar/scheduling system application) in conjunction with one or more information appliances such as, e.g., computers, servers, and mobile communications devices. Requests are often made in a business environment, for example, by an individual regarding the availability of other individuals with respect to a time-based event or activity, e.g., an appointment or a meeting request. The availability data of users, whether in relation to a calendaring system, a mail application, or a personal information manager (PIM) application, may in some instances be presented as a set of time ranges, which are organized in a collection. Each of the time ranges describes the time slots where a user indicates he or she is, or is not, available. The user availability data supported by the applications potentially contain an extremely large list of time ranges and significant data accompanied with those ranges, such as dates, times, locations, descriptions, status flags, and various other notes or files. The magnitude of information and data involved with an application for many users is therefore significant and requires large amounts of data storage.
As users maintain their individual availability information, time ranges of the users' unavailability or availability are often added to existing collections, with a new data point added for each start and end time. Such newly added time ranges increase the amount of data points that are associated with and stored for the collection. In addition, many users desire to have remote access to the application, which may be embodied in a server-based environment, via a mobile communications device in order to initiate a time-based event. The transmission of availability information for multiple users therefore requires a significant amount of traffic, which can be particularly relevant in a wireless environment. The addition of new time ranges to a collection for a user's availability would place further demands on data storage and transmission capabilities.
A more complete understanding of the embodiments of the present patent disclosure may be had by reference to the following Detailed Description when taken in conjunction with the accompanying drawings wherein:
The present patent disclosure is broadly directed to a scheme that facilitates reduction of the amount of user availability information required for storage, as well as the amount of traffic necessary for transmission of such information to a recipient device such as, e.g., a desktop computer, a mobile communications device, or a network node. Embodiments are described that are designed to manipulate and condense or compress the data which identifies and describes user availability with respect to a suitable application (e.g., a calendaring or scheduling application). When requests are made by an individual regarding the availability of others for effectuating a time-based event (e.g., an appointment or a meeting request), the condensed data may be transmitted from the server.
In one aspect, an embodiment of a computer-implemented method is described for processing availability data of a user, wherein the availability data relates to one or more time slots in a time range associated with the user, each time slot having a start time and an end time. The claimed embodiment comprises one or more of the following features and is not necessarily limited thereto: selecting a subset of time slots for compression; determining an earliest of start times and a latest of end times associated with the subset of time slots; and storing only the earliest of start times and the latest of end times associated with the subset of time slots for the user to condense the availability data. In one implementation, the embodiment may include transmission of the condensed data to another party. In another implementation, the availability data, i.e., the start times and end times, may be stored in a data structure, such as a Standard Template Library (STL) map data structure, as a collection structure to hold time ranges.
In another embodiment, a computer-implemented method is described for processing availability information relating to a user. The claimed embodiment comprises one or more of the following features and is not necessarily limited thereto: receiving a request for user availability information; obtaining time slot data for the user relating to one or more time-based activities of the user, each time slot having a start time and an end time; selecting a subset of the time slots that are contiguous or overlapping; determining an earliest of start times and a latest of end times for the subset of the time slots; and storing only the earliest start time and the latest end time as a single block of time for the user.
In another aspect, an embodiment of a computer-implemented system is described for processing availability data of a user, wherein the availability data relates to one or more time slots in a time range associated with the user, each time slot having a start time and an end time. The claimed embodiment comprises one or more of the following features and is not necessarily limited thereto: a component configured to select a subset of time slots that are contiguous or overlapping; a component configured to identify an earliest of start times and a latest of end times associated with the subset of the time slots; and a component configured to facilitate storage of only the earliest start time and the latest end time of the time slots for the user.
In a still further aspect, an embodiment of a mobile communications device is described. The claimed embodiment comprises one or more of the following features and is not necessarily limited thereto: a component configured to generate a request for availability information towards a server, the availability information relating to one or more users; and a component configured to process condensed availability information received from the server, wherein the condensed availability information comprises only an earliest of start times and a latest of end times associated with time slots corresponding to multiple time-based activities on a user-by-user basis.
In yet another aspect, an embodiment of a method for scheduling a meeting involving a plurality of users is described with respect to a calendaring system on a remote mobile communications device that is disposed in a communication relationship with a server. The claimed embodiment comprises one or more of the following features and is not necessarily limited thereto: identifying the plurality of users as invitees with respect to the meeting; originating an availability lookup request (ALR) to the server, the ALR including address information of the invitees; receiving condensed availability information relating to the invitees, the condensed availability information identifying a start time and an end time for each invitee, wherein the start time is an earliest of start times of one or more time slots of a time range associated with the each invitee and the end time is a latest of end times of the one or more time slots; and responsive to the condensed availability information, choosing an appropriate time slot for scheduling the meeting and transmitting the appropriate time slot to the server.
Accordingly, with respect to some of the embodiments summarized above, the subset of the user availability slots selected for compression may be overlapping or contiguous (i.e., the availability slot boundaries being adjacent to each other) in certain implementations. Further, the boundaries may occur at whole-hour boundaries or at any fractional component thereof.
A system and method of the present patent disclosure will now be described with reference to various examples of how the embodiments can best be made and used. Like reference numerals are used throughout the description and several views of the drawings to indicate like or corresponding parts, wherein the various elements are not necessarily drawn to scale. Referring now to the drawings, and more particularly to
Additionally, a remote services server 106 may be interfaced with the enterprise network 102 for enabling a corporate user to access or effectuate any of the services, e.g., from a remote location, using a suitable mobile communications device (MCD) 116. The MCD 116 is typically served by wireless network 112 and one or more base stations 114 thereof, of which only one is shown. Depending on the wireless network technology used, the base station 114 may for example be a base station of a traditional cellular-type wireless network or a packet or data overlay thereof, a WLAN wireless access point, or another type of radio transmitting and receiving facility. In some implementations, the wireless network 112 may be an element of or integrated with the enterprise network 102. In other implementations, the wireless network 112 may be external to the enterprise network 102, and may be realized as, for example, a carrier-operated cellular-type wireless network or a packet or data overlay thereof, a WLAN access point, or some other wireless network facility. The wireless network 112 may interface with the enterprise network 102 directly, or via one or more shared or non-shared external facilities, which may include IP-based packet networks such as the public Internet 108, a relay network 110, or other networks (not shown). The remote service server 106 may optionally serve as an intermediary between the enterprise network 102 and external networks. Accordingly, the paths between the enterprise network 102 and an external network are illustratively shown in dashed lines, one of which may involve the remote service server 106.
A secure communication link with end-to-end encryption between an element of the enterprise network 102 (for example, but without limitation, remote services server 106) and the MCD 116 may be established. The secure communications link may be mediated through any external networks, such as the public Internet 108, wireless network 112, and any other intermediaries. In one embodiment, a trusted relay network 110 may be disposed between the Internet 108 and the infrastructure of wireless network 112. In another embodiment, the infrastructure of the trusted relay network 110 may be integrated with the wireless packet data service network 112, whereby the functionality of the relay infrastructure may be consolidated as a separate layer within a “one-network” environment. Additionally, by way of example, MCD 116 may be a data-enabled mobile handheld device capable of receiving and sending messages, web browsing, interfacing with corporate application servers, et cetera, regardless of the relationship between the networks 110 and 112. Accordingly, a “network node” may include both relay functionality and wireless network infrastructure functionality in some exemplary implementations.
For purposes of the present patent application, the wireless network 112 may be implemented in any known or heretofore unknown mobile communications technologies and network protocols, as long as a data service is available therein for transmitting information including, for example, user availability data. For instance, the wireless network 112 may be comprised of a General Packet Radio Service (GPRS) network that provides a packet radio access for mobile devices using the cellular infrastructure of a Global System for Mobile Communications (GSM)-based carrier network. In other implementations, the wireless packet data service network 112 may comprise an Enhanced Data Rates for GSM Evolution (EDGE) network, an Integrated Digital Enhanced Network (IDEN), a Code Division Multiple Access (CDMA) network, a Universal Mobile Telecommunications System (UMTS) network, any 2nd-2.5-3rd- or subsequent Generation networks, a WLAN network employing WIFI or WIMAX technologies, or any other suitable wireless network. As will be seen hereinbelow, the embodiments of the present patent application for manipulating and transmitting user availability information (based on, for example, calendar data, appointment data, meeting schedule data, etc.) with respect to providing a condensed set of availability information to MCD 116 will be described regardless of any particular wireless network implementation.
The bottom layer (Layer 1) of the transport stack 206 is operable as an interface to the wireless network's packet layer. Layer 1 handles basic service coordination within the exemplary network environment 100 shown in
In one aspect, the present disclosure includes a mobile communications device 116 which interacts with the network as described above with a focus on an application that requires user availability information, e.g., the calendar/scheduler application 210. The mobile communications device 116 in one embodiment comprises a component configured to effectuate a request of availability information from a server relating to one or more users; and a component configured to process availability information received from the server, wherein, as will be described in detail below, the availability information comprises only an earliest of start times and a latest of end times associated with multiple appointments for the user. The calendaring application 210 for a user therefore allows access to such “compressed” availability information for further processing. In one implementation, at least some of the appointments may be overlapping or contiguous (i.e., the appointments being adjacent to one another), or may involve both conditions.
The description of the overall network in
In order to begin the process, a meeting request may be made by an individual with respect to the availability of another user or multiple users. The availability of the parties involved needs to be determined and the meeting request, therefore calls for the current availability data of the other user or multiple other users (block 302). A server-based application, e.g., a calendaring/scheduling system, locates and receives or otherwise obtains the current availability data of the user (block 304) for compression processing (i.e., condensing of data) (block 306). Depending on how the availability data is organized and/or structured (e.g., sorted or not, in a list structure or in a hierarchical nested structure, and the like), additional actions may optionally be performed as part of the processing of block 306. For instance, as will be seen in further detail below, there may be a sorting of the data (block 307A), a determination if the availability time slots are adjacent/contiguous or overlapping (block 307B), and selecting or grouping of only overlapping or adjacent availability time slots (i.e., a subset) as candidates for condensing (block 307C). Based on the foregoing operations, the process identifies the earliest start time of the user availability time slots (block 308) where the user has indicated he or she is unavailable for a particular collection of time ranges. The process then identifies and determines the latest end time of the user availability slots where the user has indicated he or she is unavailable for a particular collection of time ranges (block 310). From this information, the process of the present application stores only the earliest start time and the latest end time (block 312) so as to condense the amount of availability data within a particular collection for a user. This process can be performed for multiple collections and/or for multiple users. It is only these condensed times which are transmitted as a cumulated time block where the user is unavailable back to the individual that originated the meeting request (block 314). Although the aforementioned discussion mentions time slots as times when the user is unavailable, equivalent steps or acts may be used to process times when the user is available. Further, where the unavailability time slots are related to certain time-based events, e.g., appointments or meetings, such appointment data or meeting data may be indicative of unavailability slots for a particular user.
It should be understood by those skilled in the art that requests for two or more users' availability/unavailability may be made and can be included within the scope of the process described by the flowchart of
Details of an example system and process will be further described with reference to
One skilled in the art will recognize that the system 400 of
When a request is made for the availability/unavailability information relating to one or more users based on the information in the application program 406, the availability data which has been stored for each of the requested users 410-1 through 410-N is appropriately processed and transmitted from the server to mobile communications device 408 or the desktop 402. As alluded to previously, there can be an enormous amount of data for storage and transmission, involving many data points even within a single user's collection of appointments, which is further exacerbated where numerous users are involved, for example in an enterprise calendaring system. As described in more detail below, the embodiments of the present application condense the time availability data of the users into a union of ranges with an earliest start time and latest end time for a given collection. As all other intervening points are not critical to determining a user's availability and/or unavailability, those data points do not need to be stored or transmitted, thereby increasing efficiency.
A suitable compression logic module 418 may be provided for dynamic manipulation of the time range data in order to effectuate condensing of user availability information. In the particular embodiment shown in
As mentioned above, each user ID 410 of the application program 406 has associated availability data saved in a data structure which can be co-located or distributed. For example, the structure may simply be a data storage facility, such as a database management system, which may be implemented by way of example but not limited to using any suitable database management system having an interface such as Structured Query Language (SQL).
In accordance with an embodiment of the present patent application, the database mapping may include a plurality of timestamp values—for example, at the start of a time range or at the end of the time range or both. The value element of the map is the marker which identifies if this timestamp is a start or end of a time range. When the addition of a new time range is required, as will be described below with respect to examples shown in
By way of illustration, this process occurs by insertion of both the start and end timestamps for the time range into the map. The process then commences to adjust the start time of the range as follows. If there is another timestamp marked as the start of a range, which is smaller, that is earlier, and next to the first start time, the new start time is maintained while the first start time is deleted. Similarly the end time of the range is also adjusted. If there is another timestamp marked as the end of a range, which is greater and next to the first end time, the new end point is maintained while the first end time is deleted. In this manner, the earliest start time and latest of end times for a collection of time slots may be determined. The process may accordingly delete all timestamps between what has been determined to be the earliest start time and the latest end time for a collection of appointments or time slots. This “compression” process, therefore, provides only the earliest start of the time range and the latest end time of the time range for data storage and transmission.
In the mapping of the data, several map iterator objects may be used to point to different map elements to minimize the number of searches and traversals over the map. As a result, the map holds a sequence of timestamps, where for example, odd elements may comprise the starts of some time range and even elements may comprise the ends of some time range. The process ensures that the resulting time range in the map will be the union of a newly added time range and one or more existing overlapping or contiguous time ranges in the map. For example, where there is an overlap between two appointment ranges, there can be union of the ranges, which is, in effect, a cumulative range of two adjacent or contiguous appointments.
Referring to
An example of users' appointments is described with reference to
Again with reference to
In accord with an aspect of the present patent application, however, the data points for the collection on Monday 602 are processed and condensed to make storage and transmission of the data more efficient. The result of this is reflected in table 600B of
The analysis and determination of the process to form this union of unavailable user time may be illustrated in the following manner. As the start time of the conference 616 is 9:00 which is later than the 8:00 start time of the meeting 614, this start time of the conference is eliminated from the collection by the process and not stored as a data point. Similarly, the start time of the meeting 618 at 10:00 (reference numeral 612a) is a later start time than the 8:00 start time (reference numeral 608a) for the earlier meeting 614. The process of manipulating and condensing the data eliminates this entry, so that only the earliest start time of 8:00 (reference numeral 608a) is maintained. For storage of the latest end time of the collection, a similar comparative analysis is made by the process to determine the latest end time. The end time of the meeting 614 occurs at 9:00 (reference numeral 608b) and the end time of the conference occurs at 10:00 (reference numeral 610b). Each of these appointments or schedules has an earlier end time compared with the 11:00 end time (reference numeral 612b) for meeting 618. The process deletes the 9:00 and 10:00 end times (reference numerals 608b and 610b) and stores only the 11:00 end time (reference numeral 612b). This forms the new time range of unavailable time for the user from 8:00 (reference numeral 608a) until 11:00 (reference numeral 612b) for Monday 602 for this particular week 601 on the calendar/scheduling application. Prior to manipulating and condensing the data, there were six data points for this time range—three start times 608a, 610a, 612a and three end times 608b, 610b, 612b. After the process condenses the data, there are only two data points—a single start time (reference numeral 608a) and a single end time (reference numeral 612b)—for storage, transmission, or both.
One skilled in the art will understand that in certain implementations, in order to condense the several appointments, it must first be determined that all of the appointments to be condensed are either contiguous or overlapping. If non-overlapping or non-contiguous appointments are condensed, some blocks of time during which the user is actually available will be shown as unavailable. Furthermore, in some example implementations, the determination step may in turn require the availability time slots to be sorted by one of start date/time or end date/time (or referenced by an equivalent tree) to allow the process to operate in order N time as opposed to order N-squared. Additionally, the data structures for storing appointments may employ an array or grid having a small number of fixed time boundaries (as shown
It should be understood by those of skill in the art that the analysis of the time ranges may start with either the start times or the end times of the collection, and possibly in any order of pair-wise comparisons. Basically, appropriate compression logic is operable to process the time range data and determine min{(start times)i; i=1 to N} and max{(end times)i; i=1 to N}, with suitable clock arithmetic being used. Clearly, certain implementations may involve computations with 24-hour military time, AM/PM considerations, country/time zone variations, or having only start times, or where an offset-based timing is used (e.g., an offset from a computer epoch), and the like.
With reference to
In accordance with the teachings of the present application, the start times of the three appointment time ranges 8:00, 8:30 and 10:00 (reference numerals 608a, 608c and 612a, respectively) are compared to identify and determine the earliest start time. The process stores only the earliest start time of 8:00 (reference numeral 608a) and, therefore, deletes the other data points. The three end times of 9:00, 10:15 and 11:00 (reference numerals 608b, 612c, 612b) are likewise compared to determine the latest end time. The process deletes the 9:00 and 10:15 end times (reference numerals 608b and 612c) and stores only the 11:00 end time (reference numeral 612b). This forms the new time range of unavailable time for the user from 8:00 (reference numeral 608a) until 11:00 (reference numeral 612b) for Monday 602 for this particular week 601 on the calendar application.
The process condenses the appointment data in this scenario to repackage and form the user unavailability time range shown as a union of time ranges from 8:00 to 11:00 in the collection 630 represented as the shaded area in
As alluded to previously, those skilled in the art will recognize upon reference hereto that the example data structures shown in
As indicated above, the user availability/unavailability information may be transmitted to a mobile communications device.
Microprocessor 702 also interfaces with further device subsystems such as auxiliary input/output (I/O) 718, serial port 720, display 722, keyboard 724, speaker 726, microphone 728, random access memory (RAM) 730, other communications facilities 732, which may include for example a short-range communications subsystem, and any other device subsystems generally labeled as reference numeral 733. To control access, a Subscriber Identity Module (SIM) or Removable user Identity Module (RUIM) interface 734 is also provided in communication with the microprocessor 702. In one implementation, SIM/RUIM interface 734 is operable with a SIM/RUIM card having a number of key configurations 744 and other information 746 such as identification and subscriber-related data.
Operating system software and transport stack software may be embodied in a persistent storage module 735 (i.e., non-volatile storage) which may be implemented using Flash memory or another appropriate memory. In one implementation, persistent storage module 735 may be segregated into different areas, e.g., storage area for computer programs 736 (which may include operation system software) and transport stack 206, as well as data storage regions such as device state 737, address book 739, other personal information manager (PIM) data 741, and other data storage areas generally labeled as reference numeral 743. Additionally, an application client module 748 (e.g., a calendar/scheduling application client or any other client operable with user availability data) is provided for accessing and/or processing user availability information according to the teachings set forth hereinabove.
Responsive to the query from the server, the data store returns the availability (or, conversely, unavailability) information for the identified invitees in terms of time slots, for example, that may be flagged with appropriate status identifiers, such as “Busy”, “Tentative”, “Available”, and the like (block 812). The server may be configured to place the time slot information into a suitable C++ structure with the following example definition:
The structure with time slot information may be merged with the status information for a particular invitee on a status-by-status basis. Once the availability/unavailability information is received, the server may then apply the service logic to condense the time slot data for each user identified in the ALR as described in detail in the foregoing sections (block 814). Thereafter, the server may truncate the condensed availability information to the boundaries of the DRTR and combine the availability data for all the identified invitees. The condensed user availability information over the applicable time range is then transmitted to the MCD that originated the ALR, whereupon the meeting organizer may undertake a number of operations relative to the meeting request (block 816). For instance, the organizer may select an appropriate time slot based on the received condensed user availability information for scheduling or rescheduling the meeting. The selected time slot may then be transmitted to the server application for facilitating access by others.
In an example implementation, availability information retrieved from the data store may be cached by the server, possibly with a configurable life time (e.g., minutes). Also, the server is operable to determine whether the condensed user availability information fits into one packet for transmission to the requesting MCD. If the data is too large, it may be split into several blocks prior to transmission. As to subsequent requests for user availability, the server may be configured to check whether the availability information over the applicable time range is already available in its cache for a particular invitee. If so, the server may not query the data store for that particular invitee.
It should be recognized that various processes, structures, components and functions set forth above in detail, associated with an application server, remote services server or a mobile communications device, may be embodied in software, firmware, hardware, or in any combination thereof, and may accordingly comprise suitable computer-implemented methods or systems for purposes of the present disclosure. Where the processes are embodied in software, such software may comprise program instructions that form a computer program product, instructions on a computer-accessible media, uploadable service application software, or software downloadable from a remote station, and the like. Further, where the processes, data structures, or both, are stored in computer accessible storage, such storage may include semiconductor memory, internal and external computer storage media and encompasses, but is not limited to, nonvolatile media, volatile media, and transmission media. Nonvolatile media may include CD-ROMs, magnetic tapes, PROMs, Flash memory, or optical media. Volatile media may include dynamic memory, caches, RAMs, etc. Transmission media may include carrier waves or other signal-bearing media. As used herein, the phrase “computer-accessible medium” encompasses “computer-readable medium” as well as “computer executable medium.”
Additionally, it will be further recognized by those skilled in the art upon reference hereto that the arrangements set forth in the Figures of the present application may comprise a number of variations and modifications, in hardware, software, firmware, or in any combination, usually in association with a processing system where needed, as components configured to perform specific functions. Accordingly, the arrangements of the Figures should be taken as illustrative rather than limiting with respect to the embodiments of the present patent application.
It is believed that the operation and construction of the embodiments of the present patent application will be apparent from the Detailed Description set forth above. While the exemplary embodiments shown and described may have been characterized as being preferred, it should be readily understood that various changes and modifications could be made therein without departing from the scope of the present disclosure as set forth in the following claims.
This nonprovisional patent application claims priority based upon the following prior U.S. provisional patent application(s): (i) “SYSTEM AND METHOD FOR DYNAMIC MANIPULATION OF DATA DESCRIBING USER AVAILABILITY,” Application No. 61/141,864, filed Dec. 31, 2008, in the name(s) of Alexandre Rokhlin and Natasha Martsyna; each of which is hereby incorporated by reference.
Number | Date | Country | |
---|---|---|---|
61141864 | Dec 2008 | US |