The present invention relates generally to videoconferencing. More particularly, the present invention relates to modeling, managing, and scheduling videoconference meetings.
In general, in one aspect, the invention features a data structure comprising a plurality of videoconference meeting entities each representing a videoconference meeting; and a plurality of attributes for each of the videoconference meeting entities, the attributes comprising one or more schedule attributes each having a value selected from the group consisting of a scheduled start time of the respective videoconference meeting, a scheduled end time of the respective videoconference meeting, and a scheduled duration of the respective videoconference meeting, and an interval type attribute having a value selected from the group consisting of once only, indicating that the respective videoconference meeting comprises only one occurrence, repeating, indicating that the respective videoconference meeting comprises a repeating series of occurrences, and branched, indicating that the respective videoconference meeting comprises only one occurrence, and that the attributes of the respective videoconference meeting entity have the same values as the attributes of another one of the videoconference meeting entities having an interval type attribute value of repeating except for one or more of the schedule attributes.
In some embodiments, each of the videoconference meeting entities has a different meeting identifier, and each occurrence of the videoconference meetings has a different index. In such embodiments, the data structure further comprises a branch entity representing a relationship between a first one of the videoconference meeting entities having an interval type attribute value of repeating and a second one of the videoconference meeting entities having an interval type attribute value of branched; and a plurality of attributes for the branch entity, the attributes comprising a series identifier having a value representing a meeting identifier of the first one of the videoconference meeting entities, a branch identifier having a value representing a meeting identifier of the second one of the videoconference meeting entities, and an index of a videoconference meeting represented by the second one of the videoconference meeting entities.
In general, in one aspect, the invention features a method for displaying a schedule of the videoconference meetings, the method comprising: selecting a coverage period for the schedule of meetings, the coverage period comprising a plurality of intervals; and for each of the intervals in the coverage period, and each of the videoconference meeting entities having an interval type attribute value of repeating, displaying an indicator of the occurrence of the respective videoconference meeting when the occurrence of the respective videoconference meeting intersects temporally with the interval, and none of the series identifiers of the branch entities has a value representing the meeting identifier of the videoconference meeting entity representing the respective videoconference meeting. Some embodiments comprise determining whether the occurrence of the respective videoconference meeting intersects temporally with the interval, comprising at least one step selected from the group comprising determining whether the scheduled start time of the respective videoconference meeting follows an end time of the interval, and determining whether the scheduled end time of the respective videoconference meeting precedes a start time of the interval. Some embodiments comprise a medium or waveform containing a program of instructions, e.g., a computer program, for performing the method. Some embodiments comprise an apparatus to perform the method.
Some embodiments comprise a plurality of media entities each representing a link between a media file and one of the videoconference meeting entities. Some embodiments comprise a method for managing the media entities, comprising: storing one of the media files; generating a first one of the media entities representing a link between the one of the media files and a selected one of the videoconference meeting entities; and generating one or more second ones of the media entities each representing a link between the one of the media files and one of the branch entities having series identifier values representing the meeting identifier of the selected one of the videoconference meeting entities. Some embodiments comprise deleting the one of the media files when the first one of the media entities is deleted. Some embodiments comprise retaining the one of the media files when any of the second ones of the media entities are deleted. Some embodiments comprise a medium or waveform containing a program of instructions, e.g., a computer program, for performing the method. Some embodiments comprise an apparatus to perform the method.
Some embodiments comprise a plurality of invited videoconference participant entities each representing a videoconference participant invited to one of the videoconference meetings. Some embodiments comprise a method for calculating a videoconference participant load for an interval in a videoconference schedule comprising a plurality of the videoconference meetings, the method comprising: generating an array comprising, for each of the videoconference meetings having an occurrence that temporally intersects the interval, generating a first data pair comprising a first participant value representing the number of the participant entities associated with the videoconference meeting and a first difference between a reference time and the start time of the videoconference meeting, and generating a second data pair comprising a second participant value representing the negative of the number of the participant entities associated with the videoconference meeting and a second difference between the reference time and the end time of the videoconference meeting; and traversing the array in order according to the first and second differences, comprising adding the first and second participant values to a participant total. Some embodiments comprise indicating a videoconference load violation when the videoconference participant total exceeds a predetermined maximum participant total.
In general, in one aspect, the invention features a method for calculating a videoconference participant load for an interval in a videoconference schedule comprising a plurality of the videoconference meetings, the method comprising: generating an array comprising, for each of the videoconference meetings having an occurrence that temporally intersects the interval, generating a first data pair comprising a participant value representing the number of videoconference participants associated with the videoconference meeting and a first difference between a reference time and the start time of the videoconference meeting, and generating a second data pair comprising a participant value representing the negative of the number of the videoconference participants associated with the videoconference meeting and a second difference between the reference time and the end time of the videoconference meeting; and traversing the array in order according to the first and second differences, comprising adding the first and second participant values to a participant total.
Some embodiments comprise indicating a videoconference load violation when the videoconference participant total exceeds a predetermined maximum participant total. Some embodiments comprise a medium or waveform containing a program of instructions, e.g., a computer program, for performing the method. Some embodiments comprise an apparatus to perform the method.
The details of one or more implementations are set forth in the accompanying drawings and the description below. Other features will be apparent from the description and drawings, and from the claims.
The leading digit(s) of each reference numeral used in this specification indicates the number of the drawing in which the reference numeral first appears.
Embodiments of the present invention provide data structures for modeling videoconference meetings, including videoconference meetings having only a single occurrence and videoconference meetings that repeat regularly, such as on a weekly or monthly basis. Some embodiments additionally model videoconference meetings that are part of a repeating series, but that have been canceled or moved to a different time, day, or the like, than the other videoconference meetings in the series. For example, a repeating Monday videoconference meeting may occasionally be moved to the following Tuesday to accommodate a Monday holiday. Embodiments of the present invention also provide methods for managing videoconference meetings, scheduling videoconference meetings, displaying the schedules, and monitoring videoconference participant load for videoconference meetings. Some embodiments additionally model videoconference media files, for example representing charts, video clips, and the like, to be shared with videoconference meeting participants. Embodiments of the present invention also provide methods for managing the media files.
Schedule attributes 204E preferably comprise a scheduled start time (Sched. Start Time) 204EA that identifies a scheduled start time of the videoconference meeting represented by the respective videoconference meeting entity 202, a scheduled end time (Sched. End Time) 204EB that identifies a scheduled end time of the videoconference meeting represented by the respective videoconference meeting entity 202, and an optional scheduled duration (Sched. Duration) 204EC that identifies a scheduled duration of the videoconference meeting represented by the respective videoconference meeting entity 202.
Interval type attribute 204F preferably has a value selected from the group consisting of “once only,” indicating that videoconference meeting represented by the respective videoconference meeting entity 202 comprises only one occurrence, “repeating,” indicating that videoconference meeting represented by the respective videoconference meeting entity 202 comprises a repeating series of occurrences, and “branched,” indicating that videoconference meeting represented by the respective videoconference meeting entity 202 comprises only one occurrence, and that the attributes 204 of the respective videoconference meeting entity 202 have the same values as the attributes of another one of the videoconference meeting entities 202 having an interval type attribute value of “repeating” except for one or more of schedule attributes 204E. In some embodiments, the value of interval type attribute 204F comprises the duration of the repetition interval when it has a value of “repeating.” In other embodiments, the value of “repeating” is replaced with values representing the repetition interval, such as “daily,” “weekly,” and the like.
Occasionally it is desirable to reschedule an occurrence of a repeating videoconference meeting. Data structure 200 optionally further comprises branch entities 206 to represent the rescheduled occurrence, which is referred to herein as a “branched” videoconference meeting, and the relationship between the branched videoconference meeting and the associated repeating videoconference meeting. Referring again to
Each occurrence of the videoconference meetings represented by a videoconference entity 202 has a different index representing the order of occurrence. Tables 1 and 2 illustrate the use of the index according to a preferred embodiment of the present invention.
This example represents a repeating meeting having one branch. Table 1 shows the attribute values of the videoconference meeting entities 202 for the repeating videoconference meeting and the branched videoconference meeting. Referring to Table 1, the repeating meeting has a meeting identifier of 9, and the branched meeting has a meeting identifier of 11. The repeating videoconference meeting occurs every Friday from 1:00 p.m.-2:00 p.m., beginning on Jan. 28, 2005. The branched videoconference meeting attributes show that the third occurrence of the repeating videoconference meeting has been moved to the preceding Thursday.
Table 2 shows the attribute values for the branch entity 206 representing the relationship between the repeating videoconference meeting and the branched videoconference meeting. Referring to Table 2, the branch entity 208 has a series meeting identifier of 9 that identifies the repeating meeting in Table 1, a branched meeting identifier of 11 that represents the branched meeting in Table 1, and an index of two, which shows that the branched meeting is the third occurrence (because the first index value is zero) of the repeating meeting.
Occasionally it is desirable to cancel an occurrence of a repeating videoconference meeting. Preferably a branched videoconference meeting entity 202 having an interval type attribute value of “branched_removed” is used to represent canceled occurrences of a repeating videoconference meeting.
Occasionally videoconference participants find it is desirable to share media files such as charts, video clips, and the like. Data structure 200 optionally further comprises media entities 210 each representing a link between a media file and a videoconference meeting entity 202. Referring again to
Data structure 200 also optionally includes participant entities 212 each representing a participant of one or more of the videoconference meetings represented by videoconference meeting entities 202.
Embodiments of the present invention provide a method for displaying a schedule of videoconference meetings for a coverage period comprising one or more intervals. In general, for each of the intervals in the coverage period, and each of the videoconference meeting entities 202 having an interval type attribute value of repeating, the method displays an indicator of the occurrence of the respective videoconference meeting when the occurrence intersects temporally with the interval, and is not a branch of the repeating videoconference meeting (that is, none of the series identifiers of the branch entities 206 has a value representing the meeting identifier of the videoconference meeting entity 202 representing the respective videoconference meeting). The pseudo-code that follows presents one implementation of the method.
Process 300 then selects the first interval of the coverage period and a first one of the videoconference meeting entities 202 (step 304). If the selected videoconference meeting entity 202 does not have an interval attribute type value of “repeating” (step 306), but instead has an interval attribute type value of “branched-removed” (step 308), then if the selected videoconference meeting entity 202 is not the last videoconference meeting entity 202 (step 310), then process 300 selects the next videoconference meeting entity 202 (step 312) and resumes at step 306. But if at step 310 the selected videoconference meeting entity 202 is the last videoconference meeting entity 202, and the selected interval is not the last interval in the coverage period (step 314), then process 300 selects the next interval (step 316) and resumes at step 306. But if at step 314 the selected interval is the last interval in the coverage period, then process 300 is done (step 318).
But if at step 308 the selected videoconference meeting entity 202 does not have an interval attribute type value of “branched-removed” (indicating the value is either “once only” or “branched”) and intersects temporally (that is, overlaps in time) with the selected interval (step 320), then process 300 displays the videoconference meeting (step 322), for example on a meeting schedule such as that shown in
In general, to determine whether an occurrence of a videoconference meeting intersects temporally with the interval, process 300 determines whether the scheduled start time of the videoconference meeting follows the end time of the interval, and determines whether the scheduled end time of the videoconference meeting precedes the start time of the interval. If either condition is true, there is no intersection. The pseudo-code that follows presents one implementation of the method.
Referring again to
If the videoconference meeting entity 202 identified by the index obtained at step 324 has an interval type attribute value of “branched” (step 326), then process 300 continues at step 310. Otherwise, process 300 continues at step 320.
Embodiments of the present invention provide a method for managing media files for videoconference meetings according to a preferred embodiment of the present invention.
Process 700 selects only those videoconference meetings that temporally intersect the interval (step 702). Therefore videoconference meetings D and E are discarded from the load calculation.
Process 700 then generates an array comprising two data pairs for each of the selected videoconference meetings (step 704). The first data pair comprises a first participant value representing the number of the participant entities 212 associated with the videoconference meeting and the start time of the videoconference meeting, which is preferably represented as the difference between a reference time and the start time of the videoconference meeting, for example as a number of milliseconds based on a selected time in the past. The second data pair comprises a second participant value representing the negative of the number of the participant entities 212 associated with the videoconference meeting and the end time of the videoconference meeting, which is preferably represented as the difference between the reference time and the end time of the videoconference meeting. The resulting array for the example of
Process 700 then traverses the array in time order according to the start and end times, preferably by first sorting the array (step 706), then traversing the array in order from the earliest time to the latest. The sorted array is shown below as Table 4.
Process 700, as it traverses the array, adds the participant values, one at a time, to a participant total. If at any time the participant total exceeds a predetermined maximum participant total, process 700 indicates a videoconference load violation.
In particular, process 700 selects the first data pair in the array (step 708) and adds the participant value in the data pair to the participant total (step 710), which is preferably set to zero at the beginning of process 700. If the participant total then exceeds the predetermined maximum participant total (step 712), process 700 indicates a videoconference load violation (step 714).
But if at step 712 the participant total does not exceed the predetermined maximum participant total, and the last data pair in the array has not been processed (step 716), process 700 selects the next data pair in the array (step 718) and resumes at step 710. But if at step 716 the last data pair in the array has been processed, process 700 is done (step 720). The pseudo-code that follows presents one implementation of the method.
Where a LoadCount stores a pair of attributes long_time and int-partCount
Of course, some of the videoconference meetings may be repeating meetings, as described above. For each repeating meeting, process 700 determines whether any of the occurrences of the repeating meeting intersects temporally with the interval, and selects those that intersect for inclusion in the load calculation. The pseudo-code that follows presents one implementation of the method.
The invention can be implemented in digital electronic circuitry, or in computer hardware, firmware, software, or in combinations of them. An apparatus of the invention can be implemented in a computer program product embodied in a machine-readable storage medium or device for execution by a programmable processor; and method steps of the invention can be performed by a programmable processor executing a program of instructions to perform functions of the invention by operating on input data and generating output. The invention can be implemented advantageously in one or more computer programs that are executable on a programmable system including at least one programmable processor coupled to receive data and instructions from, and to transmit data and instructions to, a data storage system, at least one input device, and at least one output device. Each computer program can be implemented in a high-level procedural or object-oriented programming language, or in assembly or machine language if desired; and in any case, the language can be a compiled or interpreted language. Suitable processors include, by way of example, both general and special purpose microprocessors. Generally, a processor will receive instructions and data from a read-only memory and/or a random access memory. Generally, a computer will include one or more mass storage mediums or devices for storing data files; such devices include magnetic disks, such as internal hard disks and removable disks; magneto-optical disks; and optical disks. Storage devices suitable for embodying computer program instructions and data include all forms of non-volatile memory, including by way of example semiconductor memory devices, such as EPROM, EEPROM, and flash memory devices; magnetic disks such as internal hard disks and removable disks; magneto-optical disks; and CD-ROM disks. A waveform, e.g., a carrier wave may also serve as a storage medium for containing program instructions. Program instructions may also be supplemented by, or incorporated in, ASICs (application-specific integrated circuits).
A number of implementations of the invention have been described. Nevertheless, it will be understood that various modifications may be made without departing from the spirit and scope of the invention. Accordingly, other implementations are within the scope of the following claims.