Calendaring systems attempt to assist users to keep track of resources, including employees, services, and capital equipment. Each resource may have its own calendar, or the resource may be part of a group calendar. Preferably, such a calendaring system allows a scheduler to assign multiple resources optimally, a meeting organizer to find the right attendees and room, a dispatcher to find and assess conflicts, and a manager to fine-tune the system for optimal resource utilization, to name a few. For example, a calendar for a delivery driver work shift may be compared with a calendar for a delivery truck resource to determine dates and times when the driver is available to drive, and the truck is available to be driven. An accurate result preferably includes consideration of any other calendars related to the driver and the delivery truck. Such additional calendars may include recurring break hours for lunch, recurring preventative maintenance schedules for the truck, and a holiday calendar, to name a few. The availability of a particular employee or capital equipment resource may be described by an interaction of a number of calendars. As such, a query to only the driver and truck calendars may not provide schedule information for various nested recurring events or expand such information to a desired scope, particularly when a holiday calendar, shared group calendar, seasonal calendars, or other types of calendars may affect the resources.
A method and apparatus for calendaring is disclosed. The method may include providing at least one primary calendar, providing a plurality of calendar rules, each of the plurality of rules comprising a rank and a rule-scope, providing a representation of the primary calendar and the plurality of calendar rules, and allowing expansion of the representation of the plurality of calendar rules. The plurality of calendar rules may define at least one nested calendar and may also comprise calendar rules. The at least one nested calendar may also contain no calendar rules and return a block of time. Alternatively, the at least one of the plurality of calendar rules may modify the rule-scope of the calendar rules of the at least one nested calendar. The method may also provide a transparency property to the plurality of calendar rules in which a first transparency property indicates a calendar rule that modifies a runtime scope and a second transparency property that indicates a calendar rule that does not modify the runtime scope. Furthermore, the representation of one of the plurality of calendar rules returns a series of time blocks, the expansion of the plurality of calendar rules occurs in order of rank, and expanding the representation of the plurality of calendar rules further includes expansion of the calendar rule within at least one of its entire rule-scope and a user-defined rule-scope. A computer system with a processor to execute instructions and a computer readable medium with computer instructions are disclosed to execute the method.
Although the following text sets forth a detailed description of numerous different embodiments, it should be understood that the legal scope of the description is defined by the words of the claims set forth at the end of this patent. The detailed description is to be construed as exemplary only and does not describe every possible embodiment since describing every possible embodiment would be impractical, if not impossible. Numerous alternative embodiments could be implemented, using either current technology or technology developed after the filing date of this patent, which would still fall within the scope of the claims.
It should also be understood that, unless a term is expressly defined in this patent using the sentence “As used herein, the term ‘______’ is hereby defined to mean . . . ” or a similar sentence, there is no intent to limit the meaning of that term, either expressly or by implication, beyond its plain or ordinary meaning, and such term should not be interpreted to be limited in scope based on any statement made in any section of this patent (other than the language of the claims). To the extent that any term recited in the claims at the end of this patent is referred to in this patent in a manner consistent with a single meaning, that is done for sake of clarity only so as to not confuse the reader, and it is not intended that such claim term by limited, by implication or otherwise, to that single meaning. Finally, unless a claim element is defined by reciting the word “means” and a function without the recital of any structure, it is not intended that the scope of any claim element be interpreted based on the application of 35 U.S.C. § 112, sixth paragraph.
The steps of the claimed method and apparatus are operational with numerous other general purpose or special purpose computing system environments or configurations. Examples of well known computing systems, environments, and/or configurations that may be suitable for use with the methods or apparatus of the claims include, but are not limited to, personal computers, server computers, hand-held or laptop devices, multiprocessor systems, microprocessor-based systems, set top boxes, programmable consumer electronics, network PCs, minicomputers, mainframe computers, distributed computing environments that include any of the above systems or devices, and the like.
The steps of the claimed method and apparatus may be described in the general context of computer-executable instructions, such as program modules, being executed by a computer. Generally, program modules include routines, programs, objects, components, data structures, etc. that perform particular tasks or implement particular abstract data types. The methods and apparatus may also be practiced in distributed computing environments where tasks are performed by remote processing devices that are linked through a communications network. In a distributed computing environment, program modules may be located in both local and remote computer storage media including memory storage devices.
With reference to
Computer 110 typically includes a variety of computer readable media. Computer readable media can be any available media that can be accessed by computer 110 and includes both volatile and nonvolatile media, removable and non-removable media. By way of example, and not limitation, computer readable media may comprise computer storage media and communication media. Computer storage media includes both volatile and nonvolatile, removable and non-removable media implemented in any method or technology for storage of information such as computer readable instructions, data structures, program modules or other data. Computer storage media includes, but is not limited to, RAM, ROM, EEPROM, flash memory or other memory technology, CD-ROM, digital versatile disks (DVD) or other optical disk storage, magnetic cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices, or any other medium which can be used to store the desired information and which can accessed by computer 110. Communication media typically embodies computer readable instructions, data structures, program modules or other data in a modulated data signal such as a carrier wave or other transport mechanism and includes any information delivery media. The term “modulated data signal” means a signal that has one or more of its characteristics set or changed in such a manner as to encode information in the signal. By way of example, and not limitation, communication media includes wired media such as a wired network or direct-wired connection, and wireless media such as acoustic, RF, infrared and other wireless media. Combinations of the any of the above should also be included within the scope of computer readable media.
The system memory 130 includes computer storage media in the form of volatile and/or nonvolatile memory such as read only memory (ROM) 131 and random access memory (RAM) 132. A basic input/output system 133 (BIOS), containing the basic routines that help to transfer information between elements within computer 110, such as during start-up, is typically stored in ROM 131. RAM 132 typically contains data and/or program modules that are immediately accessible to and/or presently being operated on by processing unit 120. By way of example, and not limitation,
The computer 110 may also include other removable/non-removable, volatile/nonvolatile computer storage media. By way of example only,
The drives and their associated computer storage media discussed above and illustrated in
The computer 110 may operate in a networked environment using logical connections to one or more remote computers, such as a remote computer 180. The remote computer 180 may be a personal computer, a server, a router, a network PC, a peer device or other common network node, and typically includes many or all of the elements described above relative to the computer 110, although only a memory storage device 181 has been illustrated in
When used in a LAN networking environment, the computer 110 is connected to the LAN 171 through a network interface or adapter 170. When used in a WAN networking environment, the computer 110 typically includes a modem 172 or other means for establishing communications over the WAN 173, such as the Internet. The modem 172, which may be internal or external, may be connected to the system bus 121 via the user input interface 160, or other appropriate mechanism. In a networked environment, program modules depicted relative to the computer 110, or portions thereof, may be stored in the remote memory storage device. By way of example, and not limitation,
A calendar may be a collection of calendar rules for a particular period of time, that period of time also referred to as a rule-scope. Calendars and calendar rules may be used to represent complex recurring intervals of time likely found in working calendars for employees and capital equipment. A calendar may return one or more time blocks with information about the blocks of time. Furthermore, if the calendar contains calendar rules, the calendar rules may be processed in view of their rule-scope. The processed calendar rule may output a runtime scope which may be passed on to other calendars and calendar rules. The calendar rules may further nest additional calendars such that the nested calendars receive the runtime scope of previous calendars.
Calendar rules may also include a transparency property. If the transparency property for a calendar rule is true, i.e., the calendar rule is transparent, then the rule may be processed and it will modify the runtime scope before passing it on to other calendars and calendar rules. On the other hand, if the calendar rule is not transparent, sometimes referred to as opaque, then the calendar rule may be processed, but it will not modify the runtime scope before passing it on to other calendars. The transparency may affect the runtime scope in at least three ways. First, the calendar rule may process its rule-scope and modify the runtime scope if the rule is transparent. Second, the calendar rule may process its rule-scope, yet not alter the runtime scope. Third, the calendar rule may process a portion of its rule-scope and pass a partially modified runtime scope.
A calendar without calendar rules, on the other hand, may be a leaf and may return a series of time blocks or intervals according to a start time, a duration, and a recurrence pattern. A leaf calendar, therefore, has no nested calendars below it. The series of time blocks may be specified by an industry-standard calendar protocol, such as the iCal Global standard.
Calendar rules include a rank for which the calendar rules may be processed or expanded recursively. That is, higher ranking calendars may be processed or expanded before lower ranking calendar rules are processed or expanded. Calendar rule processing and expansion may continue in rank order until the last nested calendar is reached, or until a leaf calendar is reached. Higher ranking calendar rules may also have a higher priority over lower ranking calendar rules when they are processed or expanded for a similar rule-scope.
Calendar-rules may perform an operation for any rule-scope overlap. If a calendar rule is transparent, then the operation may be performed on it, as well as any rules subsequent to it, regardless of the transparency of those subsequent calendar rules. Operations may include, but are not limited to, intersecting, subtracting, and union. As will be discussed later, an intersecting operation may illustrate resource unavailability when multiple calendars contain overlapping calendar rules. A subtracting operation may illustrate availability when multiple calendars contain overlapping calendar rules, and a union operation may illustrate any events, either available or unavailable, which may occur when multiple calendars contains overlapping calendar rules. A user may also define a specific operation as needed to handle overlapping calendar rules.
The lower-level display section 210 may illustrate, in part, a hierarchy of nested calendars and an associated rank for each of the calendars, represented by a relative horizontal proximity 245. Note that a calendar's rank may be a function of the rank of the calendar rules therein. The highest level calendar in the lower-level display section 210, i.e., the Holiday Calendar 225, may be displayed with a left justification 250 to represent a high rank. Calendars may decrease in rank when positioned further to the right 255, and those calendars having a same horizontal justification may have the same rank. The Holiday Calendar 225, as the highest ranked nested calendar of the Yearly Produce Delivery Calendar 215, may impose its calendar rules upon lower ranking calendars. As such, the exemplary embodiment of
For example, if both the holiday rule and the spring calendar rule are transparent, a subtract operation 325 may illustrate a result of available times for a working resource 330. In this example, both Tuesday and Thursday produce no conflicts for the resource, however Wednesday prevents the resource from being utilized because of the holiday 310. Briefly returning to
Similarly, an intersect operation 335 may illustrate an intersection between the holiday rule and the spring calendar rule. Assuming that the calendar's calendar rules are transparent, then the only intersection between these two rules of similar rule-scope is on Wednesday, thereby illustrating resource unavailability 340.
An addition, or union, operation 345 may illustrate any utilization or conflict between overlapping rules. Again, assuming the rules are transparent, the result of a union may show Tuesday through Thursday as being occupied or utilized 350. Various operations may execute to assist with exception handling, group calendaring, and scheduling. Furthermore, operations may be customized and executed on rules at a later time to perform hybrid permutations of intersecting, subtracting, and union. Calendar rules may also define and modify a rule-scope for lower ranking rules that may be within nested calendars.
On the other hand, if the calendar rules of either or both of these calendars dictate that a calendar is not transparent (e.g., transparency property or flag=FALSE), then the operation between two or more calendars will not occur.
Selection of the Spring Calendar 440, as shown by a selection arrow 460, may illustrate resolving the calendar rules on the low-level display section 410. The calendar rules of the Spring Calendar 440, for example, define a rule-scope of three months out of the year; April, May, and June. Although
In addition to calendar rules, a calendar may contain metadata. For example, Driver A resource 555 may include information to indicate a particular specialty or knowledge of a particular delivery route. Such additional information may further improve a decision when scheduling various resources.
A particular rule-scope 570 may be shown upon selecting Driver B 560, as shown by selection arrow 565. As Driver B 560 contains no calendar rules it, consequently, contains no rule-scope. The rule-scope 570 shown may then be the rule-scope of a higher ranked calendar rule, e.g., a rule-scope of the workweek rule, or the spring calendar rule. For example, the scope 570 shown on the lower-level display 510 may include one particular week from a rule of the Spring Calendar 530. The calendar for Driver B inherits all rules of a higher rank, therefore the Vacation Calendar 535 may be shown to consume vacation days 575 on Wednesday through Friday, the Break Calendar 540 may be a recurring event that consumes every workday between noon and 1:00 p.m. 580, and the Maintenance Calendar 545 may be a recurring event that consumes the first and third Tuesday of each month 585. When the rules are expanded to produce the rule-scope 570 shown in
The resulting rule-scope 570 may be an accumulation of rule-scopes from several calendar rules which illustrate availability or unavailability of Driver B. Monday through Friday may be shaded to illustrate unavailability between the hours of 12:00 p.m. and 1:00 p.m. as a result of an intersect operation between the Workweek Calendar 550 and the Break Calendar 540. Similarly, Tuesday may be shaded to show unavailability as a result of a subtract operation between the Workweek Calendar 550 and the Maintenance Calendar 545. Wednesday through Friday may be shaded to illustrate resource unavailability as a result of a subtract operation between the Workweek Calendar 550 and the Vacation Calendar 535. Although not shown in
Although the forgoing text sets forth a detailed description of numerous different embodiments, it should be understood that the scope of the patent is defined by the words of the claims set forth at the end of this patent. The detailed description is to be construed as exemplary only and does not describe every possible embodiment because describing every possible embodiment would be impractical, if not impossible. Numerous alternative embodiments could be implemented, using either current technology or technology developed after the filing date of this patent, which would still fall within the scope of the claims.
Thus, many modifications and variations may be made in the techniques and structures described and illustrated herein without departing from the spirit and scope of the present claims. Accordingly, it should be understood that the methods and apparatus described herein are illustrative only and are not limiting upon the scope of the claims.