1. Technical Field
The technical field generally relates to resource planning, and more particularly, to systems and methods for scheduling of events.
2. Background Discussion
Most people are familiar with the task of scheduling meetings, appointments and other events using a virtual calendar. Businesses catering to health and fitness related services use virtual calendars to schedule various resources such as professional staff, equipment, and rooms. Businesses will often provide clients with a web-based portal or other interface that enables clients to view available classes, make a reservation, and alter their previous reservations using these virtual calendars. In addition, front-desk employees and administrative staff may perform scheduling operations through similar interfaces.
Software that is designed to aid in the scheduling of events exists. The popularity of digital calendars such as Microsoft® Office Outlook® available from Microsoft Corp. of Redmond Wash. and Google Calendar available online from Google Inc. of Mountain View Calif. has largely homogenized the look-and-feel, function, and usability of existing systems. The traditional task of scheduling an event consists of selecting a time slot within a calendar, and entering various characteristics for the event. A user generally enters specific characteristics for the event using one or more windows and/or views and then submits the event to be published to the calendar. Once the event has been published, the event appears relative to the time slot in which the event coincides.
Aspects and embodiments disclosed herein present scheduling systems and methods that direct the creation of calendar entries in a manner that is simpler and more efficient than conventional scheduling systems. For instance, some embodiments disclosed herein manifest an appreciation that the creation of a calendar entry, such as a reservation for a service (e.g., a class, session, consultation, or the like), is largely duplicative and time consuming for users. To make matters worse, the task of creating calendar entries, or modifying existing calendar entries, is often complicated by large amounts of required fields, confusing and flawed interfaces (i.e., bugs). Therefore, many of these embodiments disclosed herein include a scheduling system and a user interface that ease the administrative burden associated with conventional scheduling systems. In some embodiments, the scheduling system maintains user profiles that are associated with characteristics of previously created calendar entries. The user interface provides an interface to the scheduling system which enables displaying of schedules, creating calendar entries, and modifying existing calendar entries. As explained further below, the user interface and scheduling system enable an unconventional level of simplicity in scheduling by leveraging user profiles to eliminate the necessity of entering redundant characteristics for calendar entries.
The scheduling systems and methods disclosed herein target a wide variety of industries which schedule based on resource availability. A non-limiting list of services that may perform scheduling using these systems and methods include fitness, personal training, physical therapy, salon services, spa services, massage therapy, yoga, Pilates, and martial arts. Other categories of resource scheduling may be addressed according to various embodiments. Thus, embodiments are not limited to services belonging to particular categories or possessing particular characteristics.
According to various aspects and embodiments, a system for scheduling at least one time slot of a plurality of time slots is provided. The system includes a memory, at least one processor coupled to the memory, and a scheduling component executable by the at least one processor and configured to receive a first request to generate a suggested calendar entry, the first request including an identifier of a first profile associated with scheduling preference information, identify, based on the first profile, a plurality of characteristics of the suggested calendar entry, the plurality of characteristics including at least one characteristic specified by the scheduling preference information; determine, based on the plurality of characteristics, that a plurality of resources are available during the at least one time slot; and generate the suggested calendar entry for the at least one time slot, the suggested calendar entry having the plurality of characteristics and requesting the plurality of resources during the at least one time slot.
In the system, the first profile may be a user profile that includes biographical information. In the system, scheduling preference information may be manually created. In the system, the scheduling component may be configured to generate the scheduling preference information based on at least one previous calendar entry.
In the system the scheduling preference information may include one or more characteristics from at least one previous calendar entry, and the scheduling component is configured to determine whether at least one characteristic of the plurality of characteristics of the suggested calendar entry matches the one or more characteristics of the at least one previous calendar entry, and apply, in response to determining the at least one characteristic matches the one or more characteristics, at least one other characteristic of the at least one previous calendar entry to the suggested calendar entry.
The system may be further configured to receive a second request to schedule the at least one time slot of the plurality of time slots, the second request including an identifier of a second profile, update the suggested calendar entry based on the second profile, and display the suggested calendar entry within a view, the view including a representation of the first profile and the second profile.
In the system, the plurality of resources may include at least one of an identified space (e.g., a physical space, such as a room, or logical space, such as slot within a service session or class slot), equipment, and a service provider (e.g., an instructor). Further, the plurality of characteristics of the suggested calendar entry may change based on a number of profiles associated with the suggested calendar entry.
In the system, at least one characteristic of the plurality of characteristics of the suggested calendar entry may be a default service type, and wherein the default service type is selected based on a characteristic of at least one of the scheduling preference information and the at least one time slot.
In the system, the at least one time slot may be configured by one or more characteristics, the one or more characteristics including a time period comprising at least one of a start time and an end time. In addition, the at least one time slot may be selected based on the first profile. Likewise, the at least one time slot may be configured with predefined characteristics.
In the system, the first request may be generated via a drag-and-drop operation. In addition, the first request may be generated via a natural language command.
According to another embodiment, a method of scheduling at least one time slot of a plurality of time slots is provided. The method includes acts of receiving a first request to generate a suggested calendar entry, the first request identifying a first profile associated with scheduling preference information, identifying, based on the first profile, a plurality of characteristics of the suggested calendar entry, the plurality of characteristics including at least one characteristic specified by the scheduling preference information, determining, based on the plurality of characteristics, that a plurality of resources are available during the at least one time slot, and generating the suggested calendar entry for the at least one time slot, the suggested calendar entry having the plurality of characteristics and requesting the plurality of resources during the at least one time slot.
The method may further include the act of identifying the plurality of characteristics of the suggested calendar entry to also including identifying the plurality of characteristics based on a first user profile, the first user profile including biographical information.
The method may further comprise the act of generating the schedule preference information manually. In addition, the method may further comprise the acts of generating the schedule preference information based on at least one previous calendar entry, the at least one previous calendar entry having a plurality characteristics.
In the method, the plurality of characteristics of the suggested calendar entry may include at least one resource and generating the suggested calendar entry includes the acts of determining that the at least one resource is unavailable for the at least one time slot, and suggesting, responsive to determining that the at least one resource unavailable, another resource which is available for the at least one time slot.
The method may further include the acts of receiving a second request to update the suggested calendar entry for the at least one time slot of the plurality of time slots, the second request identifying a second profile, updating the suggested calendar entry based on the second profile, and displaying the suggested calendar entry within a view, the view including a representation of the first profile and the second profile.
In the method, the act of determining at least one characteristic of the plurality of characteristics may be based on at least one scheduling pattern. In the method, the act of determining at least one characteristic of the plurality of characteristics based on at least one scheduling pattern may further include the act of determining the scheduling pattern based on at least one previous calendar entry associated with the scheduling preference information.
In yet another embodiment, a non-transitory computer readable medium storing instructions for scheduling at least one time slot of a plurality of time slots is provided. The instructions being executable by at least one processor of a computer system, and the instructions configured to instruct the computer system to receive a first request to generate a suggested calendar entry, the first request including an identifier of a first profile associated with scheduling preference information, identify, based on the first profile, a plurality of characteristics of the suggested calendar entry, the plurality of characteristics including at least one characteristic specified by the scheduling preference information, determine, based on the plurality of characteristics, that a plurality of resources are available during the at least one time slot, and generate the suggested calendar entry for the at least one time slot, the suggested calendar entry having the plurality of characteristics and requesting the plurality of resources during the at least one time slot.
In the non-transitory computer readable medium the first profile may be a user profile that includes biographical information.
In the non-transitory computer readable medium the instructions may be further configured to instruct the computer system to generate the schedule preference information based on at least one previous calendar entry.
In the non-transitory computer readable medium the plurality of resources includes at least one of an identified space (e.g., a physical space, such as a room, or logical space, such as slot within a service session or class slot), equipment, and a service provider (an instructor).
In the non-transitory computer readable medium the plurality of characteristics may be determined based on at least one scheduling pattern. In addition, the at least one scheduling pattern is determined by at least one previous calendar entry associated with the scheduling preference information.
In the non-transitory computer readable medium the at least one time slot includes at least one calendar entry indicating availability of the resource. In the non-transitory computer readable medium the at least one time slot includes at least one scheduling preference indicator, the scheduling preference indicator indicating at least one predefined characteristic of the at least one time slot.
Still other aspects, embodiments, and advantages of these exemplary aspects and embodiments, are discussed in detail below. Moreover, it is to be understood that both the foregoing information and the following detailed description are merely illustrative examples of various aspects and embodiments, and are intended to provide an overview or framework for understanding the nature and character of the claimed subject matter. Particular references to examples and embodiments, such as “an embodiment,” “an example,” “another embodiment,” “another example,” “some embodiments,” “some examples,” “other embodiments,” “an alternate embodiment,” “various embodiments,” “one embodiment,” “at least one embodiments,” “this and other embodiments” or the like, are not necessarily mutually exclusive and are intended to indicate that a particular feature, structure, or characteristic described in connection with the embodiment or example and may be included in that embodiment or example and other embodiments or examples. The appearances of such terms herein are not necessarily all referring to the same embodiment or example.
Furthermore, in the event of inconsistent usages of terms between this document and documents incorporated herein by reference, the term usage in the incorporated references is supplementary to that of this document; for irreconcilable inconsistencies, the term usage in this document controls. In addition, the accompanying drawings are included to provide illustration and a further understanding of the various aspects and embodiments, and are incorporated in and constitute a part of this specification. The drawings, together with the remainder of the specification, serve to explain principles and operations of the described and claimed aspects and embodiments.
Various aspects of at least one embodiment are discussed below with reference to the accompanying figures, which are not intended to be drawn to scale. The figures are included to provide an illustration and a further understanding of the various aspects and embodiments, and are incorporated in and constitute a part of this specification, but are not intended as a definition of the limits of any particular embodiment. The drawings, together with the remainder of the specification, serve to explain principles and operations of the described and claimed aspects and embodiments. In the figures, each identical or nearly identical component that is illustrated in various figures is represented by a like numeral. For purposes of clarity, not every component may be labeled in every figure. In the figures:
Some embodiments disclosed herein include systems and methods for processing scheduling requests. For example, according to one embodiment a scheduling system executes a process that receives a request to generate a suggested calendar entry. The request includes at least one identifier of a profile (e.g., a user profile, a resource profile, or profiles for other entities involved in scheduled events). In response to receiving the request, the system generates a suggested calendar entry based in part on characteristics of previously created calendar entries within the system. For instance, systems and methods in accord with some examples identify one or more preferences of users associated with a profile. Scheduling preferences may include any characteristic of previously created calendar entries and automatic entry of these scheduling preferences enable the generation of suggested calendar entries with minimal user input. In some examples disclosed herein, the suggested calendar entries may automatically become calendar entries with minimal or no further user input. It should be understood that a suggested calendar entry, in some embodiments, includes all of the characteristics necessary to generate a calendar entry within the system. In still other examples, a user may confirm that a suggested calendar entry includes the characteristics the user desires for an event. During the confirmation of a suggested calendar entry, a user may alter one or more characteristics of the event.
In some embodiments discussed further below, if a previously created calendar entry includes characteristics pertinent to, and associated with, a new scheduling request, than the characteristics of the previously calendar entry will substantially comprise the suggested calendar entry and be used in lieu of additional user input. A suggested calendar entry is any calendar entry which has been determined, at least in part, by examination of scheduling preferences and patterns of a particular profile (e.g., a user profile, a resource profile such as a profile for a service provide (e.g., an instructor) or an identified space, etc). A calendar entry, as used herein, denotes any schedulable/scheduled event which may be visualized within a calendar, stored within a data store, and utilized in subsequent scheduling processes. Examples of calendar entries include representations of schedulable services such as classes (e.g., spinning, Pilates, etc) and sessions (e.g., acupuncture, facials, etc).
Additionally, in some examples, a user profile may include one or more sub-profiles. In these examples, the sub-profiles may be used to organize and delineate previous scheduling requests depending on a characteristic or preference, such as a class type. For example, scheduling requests pertaining to fitness services may be contained within a particular sub-profile. Likewise, scheduling requests pertaining to other services such as spa services may be contained in one or more other sub-profiles. As will be described further below with regards to
Examples of the methods and systems discussed herein are not limited in application to the details of construction and the arrangement of components set forth in the following description or illustrated in the accompanying drawings. The methods and systems are capable of implementation in other embodiments and of being practiced or of being carried out in various ways. Examples of specific implementations are provided herein for illustrative purposes only and are not intended to be limiting. In particular, acts, components, elements and features discussed in connection with any one or more examples are not intended to be excluded from a similar role in any other examples.
Also, the phraseology and terminology used herein is for the purpose of description and should not be regarded as limiting. Any references to examples, embodiments, components, elements or acts of the systems and methods herein referred to in the singular may also embrace embodiments including a plurality, and any references in plural to any embodiment, component, element or act herein may also embrace embodiments including only a singularity. References in the singular or plural form are not intended to limit the presently disclosed systems or methods, their components, acts, or elements. The use herein of “including,” “comprising,” “having,” “containing,” “involving,” and variations thereof is meant to encompass the items listed thereafter and equivalents thereof as well as additional items. References to “or” may be construed as inclusive so that any terms described using “or” may indicate any of a single, more than one, and all of the described terms. In addition, in the event of inconsistent usages of terms between this document and documents incorporated herein by reference, the term usage in the incorporated references is supplementary to that of this document; for irreconcilable inconsistencies, the term usage in this document controls.
Various examples disclosed herein relate to scheduling and displaying calendar entries based on profiles. As explained further below, examples of profiles demonstrate a range of the information that may be obtained, interpreted, and associated with a profile, and how such information may be organized and delineated in a manner that aids in the creation of future calendar entries. In these examples, a profile-driven scheduling system utilizes the profiles as one source of underlying data for a calendar-centric user interface, such as those discussed further below with reference to
Still referring to
In addition, information may flow between the elements, components and subsystems described herein using a variety of techniques. Such techniques include, for example, passing the information over the network 112 using standard protocols, such as TCP/IP, passing the information between modules in memory and passing the information by writing to a file, database, or some other non-volatile storage device. In addition, pointers, identifiers, or other references to information may be transmitted and received in place of, or in addition to, copies of the information. Conversely, the information may be exchanged in place of, or in addition to, pointers, identifiers, or other references to the information. Other techniques and protocols for communicating information may be used without departing from the scope of the examples disclosed herein.
In the illustrated example, the scheduling system 100 includes one or more profiles indicated at 102, a data store 104, and UI interface library 114. The one or more profiles 102 include biographical information 106, and scheduling preference information 108. As discussed further below, the data store 104 may be configured to store the one or more profiles 102 and associated data, calendar entries, and resource information. As referred to herein, a resource may identify any schedulable resource such as people (including service providers such as staff, instructors, practitioners, beauticians, therapists, etc), equipment, identified physical spaces (e.g., rooms), identified logical spaces (e.g. a slot within a service to be provided, such as a class slot) and the like. Resources may be associated with each other, such as an identified space may be associated with equipment. The scheduling system 100 receives scheduling requests and generates suggested calendar entries based on the biographical information 106, and the scheduling preferences 108 of an identified profile. The identified profile may belong to the user 110, a user associated with the user 110, or a resource (e.g., an identified physical space). Upon receiving a scheduling request, the scheduling system 100 generates a suggested calendar entry by identifying one or more characteristics for the calendar entry which may be satisfied using information contained within the biographical information 106 and the scheduling preferences 108 associated with the identified profile. Although examples disclosed herein are directed to user profiles, it should be understood that any given schedulable resource or other entity may also have a profile. For example, an identified physical space (e.g., a room) may have a profile which allows staff/professionals of a business to establish available timeslots for the identified physical space, available equipment, etc.
In the example shown, the scheduling system includes a UI interface library 114. The UI interface library 114 includes a plurality of user interface components that are specially configured for display in conjunction with a calendar control. As with other components of the system, these specialized user interface components may include data structures and executable instructions. In addition, the user interface library 114 provides a system interface through which other system components, such as the user interface 200 discussed further below with reference to
According to the example illustrated in
The data store 104 depicted in
The data included in the data store 104 may be gathered and interpreted from a wide variety of sources. For instance, in an example directed to fitness centers, data may be imported from existing scheduling systems. In this example, the imported data may include clients and/or staff's biographical information such as full name, address, phone number and status (e.g., membership status, employee status). In addition, the data may include previously created calendar entries and associated characteristics. For instance, data from previously created calendar entries may be stored verbatim, may be summarized, or may be partitioned with only particular elements being imported. Subsequent scheduling requests by the user 110 may be streamlined by such preferences so that a minimal amount of user input is required to generate a suggested calendar entry. Other examples of data importation include the gathering of information from social media websites such as Facebook available online from Facebook of Menlo Park, Calif. For example, in one embodiment the biographical information for a user profile may be comprised of a reference to a Facebook profile which may be queried for additional biographical information. In another example, a user profile may be shared by one or more businesses who subscribe to the cloud-based scheduling system 100 described above. In this example, the scheduling preferences 108 and/or scheduling patterns (discussed further below) may be shared and utilized between subscribing business.
In at least one embodiment, data within the data store 104 may also be generated and/or modified manually. For example, user profiles may be generated via a user interface using one or more windows and/or views. Likewise, conventional scheduling requests may be utilized to generate and/or modify the scheduling preferences 108. In one embodiment, a template user profile may be created and used to create the user profiles 102. In this embodiment, the template user data may include information descriptive of an existing user that is duplicated (i.e., copied) to create a new user with the same scheduling preferences 108.
According to various embodiments, data within the data store 104 may be interpreted to identify scheduling patterns of a users and resources. These scheduling patterns may be the basis for one or more preferences included within the scheduling preferences 108. Statistical analysis of scheduling preferences may inform the generation of suggested calendar entries. For example, if data within a user profile suggests that a user statistically prefers morning classes related to Pilates (e.g. registers for morning Pilates classes more than a threshold percentage of the time) and evening classes related to Spinning, these preferences may be represented and associated with the scheduling preferences 108. In another example, scheduling patterns with the greatest frequency are more likely to form the basis of a suggested calendar entry. For example, if a user most frequently schedules Pilates activities, then the scheduling system 100 will be more likely to suggest a calendar entry including characteristics pertinent to Pilates. The characteristics themselves may be further narrowed based on statistical analysis of the scheduling preferences 108. In the previous example, the characteristics pertinent to Pilates may include resources most frequently selected such as a particular Pilates instructor, most frequently selected equipment for Pilates, etc.
In other examples, the most recent scheduling patterns of a user may be given priority (e.g., more weight) during the generation of suggested calendar entries. Still further examples may include the scheduling system 100 determining one or more underlying associations between previous calendar entries. As discussed above, temporal relationships between calendar entries may provide an indication of a preferred time of day to include in a suggested calendar entry. Other underlying factors may include any relatable characteristic of previous calendar entries such as time of day, day of week, service provider gender preferences (e.g., always selecting female service providers), average timeslot duration (e.g., length of sessions), etc.
Likewise, the scheduling patterns of a staff/professional users and/or resources (e.g., an identified physical space) may be interpreted to determine one or more preferences associated with the scheduling preferences 108. As discussed further below, these preferences may be organized into sub-profiles. In addition, data from all user profiles may be interpreted globally and used advantageously by front-desk staff and managers. For example, identifying patterns of usage based on the time of year and impact of promotional offers on enrollment and class attendance may aid in the allocation (i.e., scheduling) of resources. In this example, the scheduling system 100 may determine that additional classes or service providers should be available to accommodate seasonal demands. Such determinations may be provided to the user 110 via components of the UI interface library 114.
One skilled in the art, having the benefit of reading this disclosure, would recognize that any data within the data store 104 may be analyzed and interpreted to determine one or more scheduling patterns to generate scheduling preferences therefrom. In addition, the data within the data store 104 may pertain to one or more subscribing businesses and be used to analyze and determine scheduling patterns.
Data, including scheduling requests, previously created calendar entries, biographical data, and scheduling preferences, may be stored in the data store 104 in any logical construction capable of storing information on a computer readable medium including, among other structures, flat files, indexed files, hierarchical databases, relational databases or object oriented databases. The data may be modeled using unique and foreign key relationships and indexes. The unique and foreign key relationships and indexes may be established between the various fields and tables to ensure both data integrity and data interchange performance.
In one embodiment, the user profiles 102 may be based on flexible associations between data within the data store 104. To this end, the user profiles 102 may simply be a linking table which associates the biographical information 106 and the scheduling preferences 108. In another embodiment, the user profiles 102 may be stored with both the biographical information 106 and the scheduling preferences 108 within the same data structure.
In one embodiment, each time a user submits a suggested calendar entry to the scheduling system 100, characteristics of the calendar entry are recorded, categorized and used to further define the scheduling preferences 108 for a profile. For example, when a user 110 schedules a private Pilates session with an instructor, various characteristics of the calendar entry such as date and time, instructor name, and special instructions (i.e., notes from the user to the instructor indicating personal preferences of the user) are stored within the schedule preferences 108. In this example, a profile associated with the user 110 may include a sub-profile referenced as “Pilates.”
As discussed above with reference to
According to the embodiment shown in
In the embodiment illustrated in
In addition, the scheduling preferences 108 (
In one embodiment, the profile selection element 238 may be used to open one or more views for configuring a profile. In one embodiment, the profile selection element 238 may be a profile drop-down button. In this embodiment, configuration views, wizards, and other conventional methods of modifying a user profile may be utilized. In addition, the profile selection element 238 may allow a user to switch the user profile frame 202 to display a different profile. In this example, a user may view and manage their own profile and also associate (schedule) the profile of others with calendar entries.
Still referring to
In some embodiments, the time range representation 236 may be altered by mouse and keyboard operations. For example, scrolling a mouse wheel over the calendar frame 204 may adjust the displayed time range representation 236 by zooming in and out (i.e., narrowing the displayed time range and broadening the displayed time range). In at least one embodiment, scrolling out may cause the calendar frame 204 to transition to displaying one or more other schedule representations. For example, scrolling out may change the schedule frame 204 to display the calendar frame 404 in
In the embodiment shown, various calendar entries (224, 226 and 228) are displayed in columns beneath the schedulable resources headers 218-220. The various calendar entries are visualized against the time range representation 236 based on characteristics of the calendar entries (e.g., start time, end time, etc). In addition, the various calendar entries may be visualized according to various characteristics pertaining to the calendar entry. For example, group classes 224 may be represented in an “open class” manner and will exclude any restriction visualization. In contrast, private calendar entries (e.g., calendar entry 226-230) may indicate a “private” status indicator in the form of a title or icon indicating the calendar entry is restricted to a certain user or users. Calendar entry 230 illustrates one example of a private calendar entry with an associated status indicator 240 which is visualized in a plain English syntax. Other embodiments may illustrate status indicators using icons such as a lock or exclamation point. It should be understood that any characteristic of a calendar entry may be used when visualizing calendar entries such as calendar entry 240. This includes, but is not limited to, displaying images associated with one or more associated users (e.g., a Facebook profile picture, an avatar, etc), setting a background color of the displayed calendar entry, and providing highlighting in the form bolding or other accentuations.
In addition, it should be understood that scheduling operations may be enabled by visualized controls within a displayed calendar entry. For example, calendar entry 230 includes a scheduling function button 242. In the embodiment shown in
A given resource may not be available to schedule over an entire time range. In one embodiment, time slot availability may be indicated by one or more visual representations such as the available time slot indicators 220 and 222. In this embodiment, a user may determine a time slot is available based on the coloration of the timeslot indicators 220 and 222. In addition, a user may determine a particular preference/restriction the available timeslot has. For example, the available time slot indicators may include a preference indicator such as preference indicators 244 and 246. The preference indicators 244 and 246 may visualize one or more preferences for a given time slot. For example, preference indicator 244 indicates that private and/or group sessions (classes) may be scheduled within the available slot. In contrast, preference indicator 246 indicates that only private sessions may be scheduled. Using the preference indicators 244-246 users may be able to quickly determine which available time slots are open to the type of calendar entry they wish to schedule. Further examples illustrating the use of preference indicators and available time slot indicators are discussed below with reference to
In other embodiments additional, visualizations may indicate a preference of a given available time slot. For example, in one embodiment karate may be a preferred class for the available time slot 222. In this embodiment, a karate icon or other visualization indicating karate may be used as the preference indicator 246. In another example, the preference indicator may visualize a resource availability identifier such as an equipment availability identifier. In this example, a user may easily identify a timeslot which includes the desired number of available equipment based on the equipment availability identifier. After identifying the time slot with the desired equipment available, the user may execute an operation (e.g., drag-and-drop as discussed below with reference to
As discussed with regards to
In various embodiments, the act of selecting a profile representation to drag may cause one or more calendar entries and the available time slot indicator 318 to change visual state. For example, the selection of the sub-profile representation 308 may cause all of the non-Pilates classes to be hidden from view. In an alternate example, the selection of the sub-profile representation may cause all of the Pilates calendar entries (e.g., calendar entry 330) to become highlighted. The highlighting of calendar entries based on profile selection may aid a user in identifying calendar entries pertaining to a particular profile or sub-profile which they are most interested in scheduling. In another example, selection of a profile representation may cause the available time slot indicator 318 to change visual state. In this example, selection of the primary profile representation 306 may cause the time slot indicator 318 to be visualized while deselecting may cause the time slot indicator 318 to be hidden from view. In still another example, selection of a profile representation may cause the available time slot indicator 318 to display a preference indicator, such as a resource availability indicator as discussed above with reference to
In one embodiment, the drag-and-drop operation may be performed utilizing the scheduling preference indicator 320. In this embodiment, a user may release the dragged profile 316 over the preference indicator 320. For example, if the dragged profile 316 is released over the private preference indicator 326, a suggested calendar entry will be generated with one characteristic set as a private session. Conversely, if the dragged profile 316 is released over the private group preference indicator 328, a suggested calendar entry will be generated with the characteristic of being a private group calendar entry. In another example, the dragged profile 316 may be dropped over the private group calendar entry 330. In this example, the scheduling system 100 (
In one embodiment, the confirmation may be a change in the calendar entry status 332. In this embodiment, the calendar entry status 332 may be changed from the status of “Duet” to that of “Trio” to indicate that three user profiles are associated with the private group calendar entry 330. In another embodiment, the calendar entry status 332 may be changed to include an indication that the user's profile has been associated with the calendar entry in addition to an indication of other profiles already associated with the calendar entry, such as the example calendar entry status at 334. As will be discussed below with regard to
In other embodiments, the scheduling system 100 (
In some embodiments, the user 110 (
It is to be appreciated that natural language commands may involve several parameters and require the scheduling system 100 to execute one or more complex processes. For example, a voice command such as “schedule me for a private Gyrotonic session with Matt” may cause the scheduling system 100 (
In another embodiment, the characteristics may not be fully satisfied by the natural language command and the available data. In this embodiment, the scheduling system 100 (
One skilled in the art, having the benefit of reading this disclosure, would understand that the scheduling functions described above may be combined with conventional scheduling operations. For example, a user may double-click the available time slot indicator 318 to perform conventional scheduling activities. However, one should recognize that even conventional scheduling activities are enhanced by the scheduling system 100, which may identify one or more characteristics that may be satisfied by preferences within the scheduling preferences 108 (
In another embodiment, the calendar frame 404 may suggest calendar entries for a user to create based on the scheduling preferences 108 (
In another example, a user's scheduling preferences may determine the most feasible times of day to make scheduling suggestions. In this example, a user who schedules classes primarily (e.g., more than a threshold percentage of the time) during weekday mornings may be recognized as someone who works full time. Such recognition may allow the scheduling system 100 to not suggest calendar entries which take place during hours in which the scheduling system 100 considers the user to be unavailable. Further, such recognition may also determine that weekends are fully available based on the scheduling preferences 108 (
An example of the method implemented by the scheduling system 100 is illustrated in
In act 502, a request to create a calendar entry is received by the scheduling system 100 (
In some embodiments, requests may be automatically generated in conjunction with, or in response to, other system functions. For example, according to one embodiment, the scheduling system 100 (
In act 504, the scheduling system 100 (
As discussed above with reference to
In one embodiment, the one or more received profiles are sub-profiles as described above with reference to
In at least one embodiment, information within the data store 104 (
In another embodiment, the request to generate a suggested calendar entry is received in act 502 includes an identifier of an existing calendar entry to update. In this embodiment, the scheduling system 100 (
In act 506, a calendar entry reserving one or more resources during the time slot is generated whole or in part based on the suggested calendar entry. The new calendar entry includes a reference to the one or more user profiles, the one or more resources, and a reference to the one or more time slots. In one example, the UI interface library 114 (
In act 508 the scheduling system 100 (
Process 500 ends at 508. Scheduling requests received by the scheduling system 100 (
Process 500 depicts one sequence of acts in a particular example. The acts included in process 500 may be performed by, or using, one or more computer systems, such as the computer system 602 of
As discussed above with regard to
For example, various aspects and functions may be distributed among one or more computer systems configured to provide a service to one or more client computers, or to perform an overall task as part of a distributed system. Additionally, aspects may be performed on a client-server or multi-tier system that includes components distributed among one or more server systems that perform various functions. Consequently, examples are not limited to executing on any particular system or group of systems. Further, aspects and functions may be implemented in software, hardware or firmware, or any combination thereof. Thus, aspects and functions may be implemented within methods, acts, systems, system elements and components using a variety of hardware and software configurations, and examples are not limited to any particular distributed architecture, network, or communication protocol.
Referring to
As illustrated in
The memory 612 stores programs and data during operation of the computer system 602. Thus, the memory 612 may be a relatively high performance, volatile, random access memory such as a dynamic random access memory (“DRAM”) or static memory (“SRAM”). However, the memory 612 may include any device for storing data, such as a disk drive or other nonvolatile storage device. Various examples may organize the memory 612 into particularized and, in some cases, unique structures to perform the functions disclosed herein. These data structures may be sized and organized to store values for particular data and types of data.
Components of the computer system 602 are coupled by an interconnection element such as the interconnection element 614. The interconnection element 614 may include one or more physical busses, for example, busses between components that are integrated within a same machine, but may include any communication coupling between system elements including specialized or standard computing bus technologies such as IDE, SCSI, PCI and InfiniBand. The interconnection element 614 enables communications, such as data and instructions, to be exchanged between system components of the computer system 602.
The computer system 602 also includes one or more interface devices 616 such as input devices, output devices and combination input/output devices. Interface devices may receive input or provide output. More particularly, output devices may render information for external presentation. Input devices may accept information from external sources. Examples of interface devices include keyboards, mouse devices, trackballs, microphones, touch screens, printing devices, display screens, speakers, network interface cards, etc. Interface devices allow the computer system 602 to exchange information and to communicate with external entities, such as users and other systems.
The data storage element 618 includes a computer readable and writeable nonvolatile, or non-transitory, data storage medium in which instructions are stored that define a program or other object that is executed by the processor 610. The data storage element 618 also may include information that is recorded, on or in, the medium, and that is processed by the processor 610 during execution of the program. More specifically, the information may be stored in one or more data structures specifically configured to conserve storage space or increase data exchange performance. The instructions may be persistently stored as encoded signals, and the instructions may cause the processor 610 to perform any of the functions described herein. The medium may, for example, be optical disk, magnetic disk or flash memory, among others. In operation, the processor 610 or some other controller causes data to be read from the nonvolatile recording medium into another memory, such as the memory 612, that allows for faster access to the information by the processor 610 than does the storage medium included in the data storage element 618. The memory may be located in the data storage element 618 or in the memory 612, however, the processor 610 manipulates the data within the memory, and then copies the data to the storage medium associated with the data storage element 618 after processing is completed. A variety of components may manage data movement between the storage medium and other memory elements and examples are not limited to particular data management components. Further, examples are not limited to a particular memory system or data storage system.
Although the computer system 602 is shown by way of example as one type of computer system upon which various aspects and functions may be practiced, aspects and functions are not limited to being implemented on the computer system 602 as shown in
The computer system 602 may be a computer system including an operating system that manages at least a portion of the hardware elements included in the computer system 602. In some examples, a processor or controller, such as the processor 610, executes an operating system. Examples of a particular operating system that may be executed include a Windows-based operating system, such as, Windows NT, Windows 2000 (Windows ME), Windows XP, Windows Vista or Windows 7 operating systems, available from the Microsoft Corporation, a MAC OS System X operating system or an iOS operating system available from Apple Computer, one of many Linux-based operating system distributions, for example, the Enterprise Linux operating system available from Red Hat Inc., a Solaris operating system available from Sun Microsystems, or a UNIX operating systems available from various sources. Many other operating systems may be used, and examples are not limited to any particular operating system.
The processor 610 and operating system together define a computer platform for which application programs in high-level programming languages are written. These component applications may be executable, intermediate, bytecode or interpreted code which communicates over a communication network, for example, the Internet, using a communication protocol, for example, TCP/IP. Similarly, aspects may be implemented using an object-oriented programming language, such as .Net, SmallTalk, Java, C++, Ada, C# (C-Sharp), Python, or JavaScript. Other object-oriented programming languages may also be used. Alternatively, functional, scripting, or logical programming languages may be used.
Additionally, various aspects and functions may be implemented in a non-programmed environment, for example, documents created in HTML, XML or other format that, when viewed in a window of a browser program, can render aspects of a graphical-user interface or perform other functions. Further, various examples may be implemented as programmed or non-programmed elements, or any combination thereof. For example, a web page may be implemented using HTML while a data object called from within the web page may be written in C++. Thus, the examples are not limited to a specific programming language and any suitable programming language could be used. Accordingly, the functional components disclosed herein may include a wide variety of elements, e.g. specialized hardware, executable code, data structures or objects, which are configured to perform the functions described herein.
In some examples, the components disclosed herein may read parameters that affect the functions performed by the components. These parameters may be physically stored in any form of suitable memory including volatile memory (such as RAM) or nonvolatile memory (such as a magnetic hard drive). In addition, the parameters may be logically stored in a propriety data structure (such as a database or file defined by a user mode application) or in a commonly shared data structure (such as an application registry that is defined by an operating system). In addition, some examples provide for both system and user interfaces that allow external entities to modify the parameters and thereby configure the behavior of the components.
Having thus described several aspects of at least one example, it is to be appreciated that various alterations, modifications, and improvements will readily occur to those skilled in the art. For instance, examples disclosed herein may also be used in other contexts. Such alterations, modifications, and improvements are intended to be part of this disclosure, and are intended to be within the scope of the examples discussed herein. Accordingly, the foregoing description and drawings are by way of example only.