This disclosure relates generally to managing an on-line meeting, and particularly to an electronic calendar system.
An electronic calendar system, e.g., IBM® Lotus Notes® from International Business Machines Corporation, Armonk, N.Y., Microsoft® Outlook® from Microsoft® Corporation, Redmond, Wash., etc., has become an important tool that people use as a guideline which dictates tasks to do and motivates responsibilities to perform those tasks. An electronic calendar system is typically used to schedule events, for example, an on-line or off-line meeting.
A typical scenario for an electronic calendar event, for example, an on-line meeting can be described as follows:
Those steps (5)-(6) can take, for example, about 2 or 3 minutes. When there is no preceding meeting, the host or the participant(s) perform the steps (5)-(6) before the on-line meeting starts. When there is a preceding meeting, or the host or the participant(s) are otherwise occupied, the host or the participant(s) often consume the meeting time (or another occupied time), e.g., in order to launch the software application(s) or electronic document(s). By considering the number of on-line meetings people have and the number of participants in those on-line meetings, time may be wasted in preparing for on-line meetings and consequently the productivity of those people gets lost.
There are provided a method, a system and a computer program product for managing an on-line meeting. The system determines one or more tasks to prepare for the on-line meeting. The system calculates a time period that takes in order to complete the one or more tasks before the on-line meeting starts. The system runs the one or more tasks the calculated time period ahead before the on-line meeting starts.
Each of the one or more tasks includes at least one property which includes one or more of: a name of the each task, a description of the each task, at least one input parameter of the each task, an estimated run-time of the each task, at least one pre-requisite of the each task, an implementation of the each task.
In order to calculate the time period, the system may monitor resource utilization of a user's computer. The system may compare the monitored resource utilization to a pre-determined standard. The system may determine, based on the comparing, whether the user's computer is a machine whose available resources do not meet the pre-determined standard.
In order to calculate the time period, the system may monitor network bandwidth associated with a user's computer. The system may compare the monitored network bandwidth to a pre-determined standard. The system may determine, based on the comparing, whether the user's computer is connected to a network whose available network bandwidth is less than the pre-determined standard.
These and other objects, features and advantages of the present invention will become apparent from the following detailed description of illustrative embodiments thereof, which is to be read in connection with the accompanying drawings, in which:
There is a need to enhance an electronic calendar system that can integrate a machine learning algorithm, e.g., a supervised learning algorithm or unsupervised learning algorithm, in helping users improve the productivity of the users by using the electronic calendar system.
In one embodiment, there is provided an electronic system (e.g., an electronic system 500 shown in
In another embodiment, the electronic system 500 may be implemented as hardware on a reconfigurable hardware, e.g., FPGA (Field Programmable Gate Array) or CPLD (Complex Programmable Logic Device), using a hardware description language (Verilog, VHDL, Handel-C, or System C). In another embodiment, the electronic system 500 may be implemented on a semiconductor chip, e.g., ASIC (Application-Specific Integrated Circuit), using a semi custom design methodology, i.e., designing a semiconductor chip using standard cells and a hardware description language.
Returning to
In another embodiment, a user determines the one or more tasks to be prepared before the on-line meeting starts. A user includes, but is not limited to: a host of the on-line meeting, or a participant of the on-line meeting. A task includes, but is not limited to: running a software application on a user's computer, running a set of software applications on the user's computer, performing at least one action to learn information associated with the each task, or combinations thereof. In a further embodiment, the user can add one or more tasks manually to the electronic system 500, e.g., by using a keyboard, a mouse, or other input device. A participant of an on-line meeting may request a host of that on-line meeting to add a specific task (e.g., launching a specific software application or a specific electronic document before the on-line meeting starts, etc.) in order to prepare for the on-line meeting.
Returning to
In a further embodiment, the electronic system 500 monitors only one resource utilization, e.g., only available network bandwidth. Based on this only one monitored resource utilization, the electronic system 500 calculates the time period that takes in order to complete the tasks before an on-line meeting starts, e.g., by running method steps in
In another embodiment, the electronic system 500 simultaneously monitors multiple resource utilizations, e.g., CPU usage and available network bandwidth. In this embodiment, the electronic system 500 sets a priority between those monitored multiple resource utilizations. For example, the electronic system 500 may set “CPU usage” has a higher priority than “available network bandwidth.” This priority may be pre-determined by a user. Alternatively, a user may program the electronic system 500, e.g., by using a programming language, to be able to modify the priority when the user wants to modify the priority. For example, the electronic system 500 may provide a graphical user interface (not shown) to the user by which the user can modify the priority.
This priority can be used to resolve a conflict that can occur if the electronic system 500 monitors that a resource utilization of a user's computer meets a pre-determined standard and also monitors that another resource utilization of that user's computer does not meet another pre-determined standard. When this or similar conflict occurs, the electronic system 500 determines, e.g., based on the priority set by the user, which monitored resource utilization has a higher priority, and then disregards a monitored resource utilization which has a lower priority. For example, assume that the electronic system 500 monitors a CPU usage of a user's computer meets a first pre-determined standard but available network bandwidth of that user's computer does not meet a second pre-determined standard. Further assume that CPU usage is a higher priority than the available network bandwidth in calculating the time period. Then, in this example, the electronic system 500 calculates the time period based on that the CPU usage of the user's computer meets the first pre-determined standard. The electronic system 500 disregards that the available network bandwidth associated with the user's computer does not meet the second pre-determined standard.
In order to calculate the time period, other methodologies may be utilized, for example, a weighted method that assigns a weight to each resource utilization. In this weighted method, a user may provide to the electronic system 500 a mathematical formula that computes a resource utilization rate of a user's computer based on the weight(s) and current resource utilization of that user's computer. For example, the resource utilization rate of the user's computer may be computed by: resource utilization rate=(a×current CPU usage)+(b×current available network bandwidth)+(c×current memory usage), where a is a weight assigned to CPU usage, b is a weight assigned to available network bandwidth, and c is a weight assigned to memory usage. If the resource utilization rate computed from the formula is more than a pre-determined standard, the electronic system 500 launches the tasks the first pre-determined time period, e.g., 5 minutes, ahead before the on-line meeting starts. If the resource utilization rate is less than the pre-determined standard, the electronic system 500 launches the tasks the second pre-determined time period, e.g., 1 minute, ahead before the on-line meeting starts. In one embodiment, the user may also modify the formula, e.g., via a graphical user interface (not shown) of the electronic system 500.
Returning to
The task pool 525 may include, but is not limited to: a database system (e.g., IBM® DB2® from International Business Machines Corporation, Armonk, N.Y., etc.) and a storage device (e.g., solid state drive, etc.). The task pool 525 stores the defined tasks in the database or the storage device. In one embodiment, each task includes at least one property which includes one or more of: a name of the task, a description of the task, at least one input parameter of the task, an estimated run-time of the task, at least one pre-requisite of the task, an implementation of the task.
Returning to
For example, the user may specify an order to run tasks. An example order to run example tasks is as follows:
In one embodiment, the extension interface 510 automatically starts to run the tasks right after the configuration component 515 determines or changes the order of the tasks to run. In another embodiment, the user manually initiates the running of the tasks right after the user determines, through the configuration component 515, the order of the tasks to run.
The learning system 535 includes one or more computer monitoring software applications and employs one or more machine learning algorithms. The learning system 535 monitors a user's computer by which the user joins a corresponding on-line meeting. The learning system 535 suggests 530, e.g., by running the machine learning algorithm with data generated from the computer monitoring software application, at least one manual action to be taken prior to the starting of the corresponding on-line meeting. For example, the computer monitoring software application may monitor and record that a particular user always launch a web browser whenever that user joins a web conference at LOAM EST every Tuesday. Based on this record, by running a supervised learning algorithm which predicts a same output when same inputs are given, the learning system 535 may suggest launching a web browser to that user whenever that user is expected to join a web conference at 10AM EST on Tuesday. This manual action can be automated, e.g., by programming the extension interface 510 to perform the action prior to the starting of the on-line meeting.
Returning to
The task sharing component 520 allows a first user to import at least one task that belongs to a second user, e.g., by accessing the shared storage device and retrieving a task from the shared storage device. When importing the task that belongs to the second user, the task sharing component 520 may also import properties of the second user's task, e.g., from the shared storage device. The task sharing component 520 may also allow the first user to customize the imported properties of the second user's task, for example, changing the name of the task.
The task sharing component 520 also enables communication(s) between different users, e.g., via emails, instant messaging, etc. For example, if a first user requests an implementation property (e.g., implementation property 655 shown in
In one embodiment, the task sharing component 520 allows sharing of tasks among with internal meeting participants in an organization that a user works for, e.g., by providing a valid credential to the internal meeting participant which allows an access to the shared storage device that stores sharable tasks. The task sharing component 520 prevents the tasks from being shared with external meeting participants who do not work for the organization, e.g., by not providing any credential to the external meeting participants that is needed to access the shared storage device.
In one embodiment, the electronic system 500 can apply methods shown in
While the invention has been particularly shown and described with respect to illustrative and preformed embodiments thereof, it will be understood by those skilled in the art that the foregoing and other changes in form and details may be made therein without departing from the spirit and scope of the invention which should be limited only by the scope of the appended claims.
Any combination of one or more computer readable medium(s) may be utilized. The computer readable medium may be a computer readable signal medium or a computer readable storage medium. A computer readable storage medium may be, for example, but not limited to, an electronic, magnetic, optical, electromagnetic, infrared, or semiconductor system, apparatus, or device, or any suitable combination of the foregoing. More specific examples (a non-exhaustive list) of the computer readable storage medium would include the following: a portable computer diskette, a hard disk, a random access memory (RAM), a read-only memory (ROM), an erasable programmable read-only memory (EPROM or Flash memory), a portable compact disc read-only memory (CD-ROM), an optical storage device, a magnetic storage device, or any suitable combination of the foregoing. In the context of this document, a computer readable storage medium may be any tangible medium that can contain, or store a program for use by or in connection with a system, apparatus, or device running an instruction.
A computer readable signal medium may include a propagated data signal with computer readable program code embodied therein, for example, in baseband or as part of a carrier wave. Such a propagated signal may take any of a variety of forms, including, but not limited to, electro-magnetic, optical, or any suitable combination thereof. A computer readable signal medium may be any computer readable medium that is not a computer readable storage medium and that can communicate, propagate, or transport a program for use by or in connection with a system, apparatus, or device running an instruction.
Program code embodied on a computer readable medium may be transmitted using any appropriate medium, including but not limited to wireless, wireline, optical fiber cable, RF, etc., or any suitable combination of the foregoing.
Computer program code for carrying out operations for aspects of the present invention may be written in any combination of one or more programming languages, including an object oriented programming language such as Java, Smalltalk, C++ or the like and conventional procedural programming languages, such as the “C” programming language or similar programming languages. The program code may run entirely on the user's computer, partly on the user's computer, as a stand-alone software package, partly on the user's computer and partly on a remote computer or entirely on the remote computer or server. In the latter scenario, the remote computer may be connected to the user's computer through any type of network, including a local area network (LAN) or a wide area network (WAN), or the connection may be made to an external computer (for example, through the Internet using an Internet Service Provider).
Aspects of the present invention are described below with reference to flowchart illustrations and/or block diagrams of methods, apparatus (systems) and computer program products according to embodiments of the invention. It will be understood that each block of the flowchart illustrations and/or block diagrams, and combinations of blocks in the flowchart illustrations and/or block diagrams, can be implemented by computer program instructions. These computer program instructions may be provided to a processor of a general purpose computer, special purpose computer, or other programmable data processing apparatus to produce a machine, such that the instructions, which run via the processor of the computer or other programmable data processing apparatus, create means for implementing the functions/acts specified in the flowchart and/or block diagram block or blocks. These computer program instructions may also be stored in a computer readable medium that can direct a computer, other programmable data processing apparatus, or other devices to function in a particular manner, such that the instructions stored in the computer readable medium produce an article of manufacture including instructions which implement the function/act specified in the flowchart and/or block diagram block or blocks.
The computer program instructions may also be loaded onto a computer, other programmable data processing apparatus, or other devices to cause a series of operational steps to be performed on the computer, other programmable apparatus or other devices to produce a computer implemented process such that the instructions which run on the computer or other programmable apparatus provide processes for implementing the functions/acts specified in the flowchart and/or block diagram block or blocks.
The flowchart and block diagrams in the Figures illustrate the architecture, functionality, and operation of possible implementations of systems, methods and computer program products according to various embodiments of the present invention. In this regard, each block in the flowchart or block diagrams may represent a module, segment, or portion of code, which comprises one or more operable instructions for implementing the specified logical function(s). It should also be noted that, in some alternative implementations, the functions noted in the block may occur out of the order noted in the figures. For example, two blocks shown in succession may, in fact, be run substantially concurrently, or the blocks may sometimes be run in the reverse order, depending upon the functionality involved. It will also be noted that each block of the block diagrams and/or flowchart illustration, and combinations of blocks in the block diagrams and/or flowchart illustration, can be implemented by special purpose hardware-based systems that perform the specified functions or acts, or combinations of special purpose hardware and computer instructions.