Listing activities in a graphical user interface in a collaborative work tool Architecture6993723Abstract A system, method and program are provided for listing activities in a graphical user interface in a collaborative work tool framework. An activity window having activity description data, activity start data, activity duration data, and an activity status data is displayed. Then, an activity is defined in response to user selection of a defined activity button and the defined activity is displayed in the activity window. Next, status for the defined activity is determined based on the start time and the duration for the defined activity. Finally, background information relevant to the defined activity is automatically acquired, including automatically obtaining the activity description when the start time is within a predetermined period, parsing and pattern matching the activity description to identify searchable components thereof, querying a plurality of sources across a network to obtain the background information, and receiving the background information in response to querying the plurality of sources. Claims What is claimed is: Description FIELD OF THE INVENTION
With this enormous capability of an object to represent just about any logically separable matters, OOP allows the software developer to design and implement a computer program that is a model of some aspects of reality, whether that reality is a physical entity, a process, a system, or a composition of matter. Since the object can represent anything, the software developer can create an object which can be used as a component in a larger software project in the future. If 90% of a new OOP software program consists of proven, existing components made from preexisting reusable objects, then only the remaining 10% of the new software project has to be written and tested from scratch. Since 90% already came from an inventory of extensively tested reusable objects, the potential domain from which an error could originate is 10% of the program. As a result, OOP enables software developers to build objects out of other, previously built objects. This process closely resembles complex machinery being built out of assemblies and sub-assemblies. OOP technology, therefore, makes software engineering more like hardware engineering in that software is built from existing components, which are available to the developer as objects. All this adds up to an improved quality of the software as well as an increased speed of its development. Programming languages are beginning to fully support the OOP principles, such as encapsulation, inheritance, polymorphism, and composition-relationship. With the advent of the C++ language, many commercial software developers have embraced OOP. C++ is an OOP language that offers a fast, machine-executable code. Furthermore, C++ is suitable for both commercial-application and systems-programming projects. For now, C++ appears to be the most popular choice among many OOP programmers, but there is a host of other OOP languages, such as Smalltalk, Common Lisp Object System (CLOS), and Eiffel. Additionally, OOP capabilities are being added to more traditional popular computer programming languages such as Pascal. The benefits of object classes can be summarized, as follows:
Class libraries are very flexible. As programs grow more complex, more programmers are forced to reinvent basic solutions to basic problems over and over again. A relatively new extension of the class library concept is to have a framework of class libraries. This framework is more complex and consists of significant collections of collaborating classes that capture both the small scale patterns and major mechanisms that implement the common requirements and design in a specific application domain. They were first developed to free application programmers from the chores involved in displaying menus, windows, dialog boxes, and other standard user interface elements for personal computers. Frameworks also represent a change in the way programmers think about the interaction between the code they write and code written by others. In the early days of procedural programming, the programmer called libraries provided by the operating system to perform certain tasks, but basically the program executed down the page from start to finish, and the programmer was solely responsible for the flow of control. This was appropriate for printing out paychecks, calculating a mathematical table, or solving other problems with a program that executed in just one way. The development of graphical user interfaces began to turn this procedural programming arrangement inside out. These interfaces allow the user, rather than program logic, to drive the program and decide when certain actions should be performed. Today, most personal computer software accomplishes this by means of an event loop which monitors the mouse, keyboard, and other sources of external events and calls the appropriate parts of the programmer's code according to actions that the user performs. The programmer no longer determines the order in which events occur. Instead, a program is divided into separate pieces that are called at unpredictable times and in an unpredictable order. By relinquishing control in this way to users, the developer creates a program that is much easier to use. Nevertheless, individual pieces of the program written by the developer still call libraries provided by the operating system to accomplish certain tasks, and the programmer must still determine the flow of control within each piece after it's called by the event loop. Application code still "sits on top of" the system. Even event loop programs require programmers to write a lot of code that should not need to be written separately for every application. The concept of an application framework carries the event loop concept further. Instead of dealing with all the nuts and bolts of constructing basic menus, windows, and dialog boxes and then making these things all work together, programmers using application frameworks start with working application code and basic user interface elements in place. Subsequently, they build from there by replacing some of the generic capabilities of the framework with the specific capabilities of the intended application. Application frameworks reduce the total amount of code that a programmer has to write from scratch. However, because the framework is really a generic application that displays windows, supports copy and paste, and so on, the programmer can also relinquish control to a greater degree than event loop programs permit. The framework code takes care of almost all event handling and flow of control, and the programmer's code is called only when the framework needs it (e.g., to create or manipulate a proprietary data structure). A programmer writing a framework program not only relinquishes control to the user (as is also true for event loop programs), but also relinquishes the detailed flow of control within the program to the framework. This approach allows the creation of more complex systems that work together in interesting ways, as opposed to isolated programs, having custom code, being created over and over again for similar problems. Thus, as is explained above, a framework basically is a collection of cooperating classes that make up a reusable design solution for a given problem domain. It typically includes objects that provide default behavior (e.g., for menus and windows), and programmers use it by inheriting some of that default behavior and overriding other behavior so that the framework calls application code at the appropriate times. There are three main differences between frameworks and class libraries:
Thus, through the development of frameworks for solutions to various problems and programming tasks, significant reductions in the design and development effort for software can be achieved. A preferred embodiment of the invention utilizes HyperText Markup Language (HTML) to implement documents on the Internet together with a general-purpose secure communication protocol for a transport medium between the client and ? . HTTP or other protocols could be readily substituted for HTML without undue experimentation. Information on these products is available in T. Bemers-Lee, D. Connoly, "RFC 1866: Hypertext Markup Language—2.0" (Nov. 1995); and R. Fielding, H, Frystyk, T. Bemers-Lee, J. Gettys and J. C. Mogul, "Hypertext Transfer Protocol——HTTP/1.1: HTTP Working Group Internet Draft" (May 2, 1996). HTML is a simple data format used to create hypertext documents that are portable from one platform to another. HTML documents are SGML documents with generic semantics that are appropriate for representing information from a wide range of domains. HTML has been in use by the World-Wide Web global information initiative since 1990. HTML is an application of ISO Standard 8879; 1986 Information Processing Text and Office Systems; Standard Generalized Markup Language (SGML). To date, Web development tools have been limited in their ability to create dynamic Web applications which span from client to server and interoperate with existing computing resources. Until recently, HTML has been the dominant technology used in development of Web-based solutions. However, HTML has proven to be inadequate in the following areas:
Sun Microsystem's Java language solves many of the client-side problems by:
With Java, developers can create robust User Interface (UI) components. Custom "widgets" (e.g., real-time stock tickers, animated icons, etc.) can be created, and client-side performance is improved. Unlike HTML, Java supports the notion of client-side validation, offloading appropriate processing onto the client for improved performance. Dynamic, real-time Web pages can be created. Using the above-mentioned custom UI components, dynamic Web pages can also be created. Sun's Java language has emerged as an industry-recognized language for "programming the Internet." Sun defines Java as: "a simple, object-oriented, distributed, interpreted, robust, secure, architecture-neutral, portable, high-performance, multithreaded, dynamic, buzzword-compliant, general-purpose programming language. Java supports programming for the Internet in the form of platform-independent Java applets." Java applets are small, specialized applications that comply with Sun's Java Application Programming Interface (API) allowing developers to add "interactive content" to Web documents (e.g., simple animations, page adornments, basic games, etc.). Applets execute within a Java-compatible browser (e.g., Netscape Navigator) by copying code from the server to client. From a language standpoint, Java's core feature set is based on C++. Sun's Java literature states that Java is basically, "C++ with extensions from Objective C for more dynamic method resolution." Another technology that provides similar function to JAVA is provided by Microsoft and ActiveX Technologies, to give developers and Web designers wherewithal to build dynamic content for the Internet and personal computers. ActiveX includes tools for developing animation, 3-D virtual reality, video and other multimedia content. The tools use Internet standards, work on multiple platforms, and are being supported by over 100 companies. The group's building blocks are called ActiveX Controls, small, fast components that enable developers to embed parts of software in hypertext markup language (HTML) pages. ActiveX Controls work with a variety of programming languages including Microsoft Visual C++, Borland Delphi, Microsoft Visual Basic programming system and, in the future, Microsoft's development tool for Java, code named "Jakarta." ActiveX Technologies also includes ActiveX Server Framework, allowing developers to create server applications. One of ordinary skill in the art readily recognizes that ActiveX could be substituted for JAVA without undue experimentation to practice the invention. FIG. 3 is a flowchart illustrating a method 300 for affording collaboration planning in a collaborative work tool architecture, in accordance with an embodiment of the present invention. First, in operation 302, a client user interface including an activity data field is provided. Then, in operation 304, activity data is received from a facilitator user, wherein the activity data includes a start time for the activity and a duration of the activity. The received activity data is then stored on a server via a network, as indicated in operation 306. Finally, a plurality of participant users are allowed access to the stored activity data via the network. See operation 308. In one aspect of the present invention the participant users asynchronously access the activity data. In another aspect, the participant users synchronously access the activity data. In one embodiment of the present innovation, the collaborative work tool architecture affords non-distributed work groups. In another embodiment, the collaborative work tool architecture affords distributed work groups. Additionally, the client user interface may enable real-time user discussion utilizing a chat window. When planning a meeting utilizing the present invention, a facilitator user is able to invite participant users to a session using the client user interface, discussed in greater detail subsequently. The facilitator user is then able to generate a list of activities, which is similar to an agenda, to occur during the session. The activities can be defined using at least six different activity tools, which are essentially collaboration techniques. These activity tools include, brainstorming tools, discussion tools, categorization tools, voting tools, action list (summary) tools, and external activity (breaks) tools. FIG. 4 is a flowchart illustrating a method 400 for listing activities in a graphical user interface in a collaborative work tool framework, in accordance with one embodiment of the present invention. In an initial operation 402, an activity window having activity start data, activity duration data, and an activity status data is displayed. Then, an activity is defined in response to user selection of a addactivity button, wherein the defined activity is thereafter displayed in the activity window as shown in operation 404. Finally, in operation 406, a status for the defined activity is determined based on activity start data for the defined activity and activity duration data for the defined activity. In one aspect of the present invention, the activity may be defined as a brainstorming activity. Alternatively, the activity may be defined as a discussion activity. Optionally, the activity may be defined as a categorization activity. Also optionally, the activity may be defined as a voting activity. In addition, the activity may be defined as a summary activity. In one embodiment of the present invention, a message window capable of displaying user messages in real-time may be displayed Additionally, the defined data may be sent to a specific participant user in response to user selection of the specific participant user from a participant user menu. In another embodiment, the defined activity may be sent to a database in response to user selection of a submit button. FIG. 5 is an illustration showing a graphical user interface 500 for listing activities in a collaborative work tool framework, in accordance with one embodiment of the present invention. The graphical user interface 500 includes a list of activities 502, wherein each activity includes an activity start time 504, an activity duration 506, an activity title 508, and an activity status 510. The graphical user interface 500 further includes a list of predefined activity types 512, a real-time message window 514, and a participant menu 516. The user is further able to define the start time for the activity 504, the duration of the activity 506, and the title of the activity 508 using the list of activities 502 area of the graphical user interface 502. In this manner, an activity list for a session may be created. Furthermore, other session participants may view the agenda in preparation for the session. Participants may further interact with one another using the real-time message window 514. The participant menu 516 may be selected using a computer pointing device. Once selected, the participant menu preferable displays a list of session participants to which a user may send messages and other information. Thus, using the participant menu 516, a user may direct communications to specific users, or choose to send communications to a group of users. Optionally, the participants users may use the participant menu ("Online Now") 520 to direct communications to specific users. Finally, during the session, the present invention determines a status 510 for each activity in the list of activities 502 utilizing the activity start time 504 and the activity duration 506. FIG. 6 is a flowchart showing a method 600 for conducting activities in a collaborative work tool architecture, in accordance with an embodiment of the present invention. In an initial operation 602, a client user interface including at least one activity data field is afforded. Then, in operation 604, a selection of a particular activity data field from a user is received. Additional information on the selected activity field is then presented using the client user interface. See operation 606. The user is then allowed to input data concerning the selected activity data field as indicated in operation 608. In operation 610, the received data is stored on a server via a network. Finally, in operation 612, a plurality of participant users are allowed access to the stored data via the network. In one aspect of the present invention, the meeting data may be voting data on a predefined topic. Optionally, the meeting data may be user readable sentences concerning a predefined topic. Alternatively, the data may be user readable assigned tasks as defined by the participant users. In one embodiment of the present invention, the data may be accessed by the participant users asynchronously. In another embodiment, the data may be accessed by the participant users synchronously. In one embodiment of the present innovation, the collaborative work tool architecture affords non-distributed work groups. In another embodiment, the collaborative work tool architecture affords distributed work groups. The present invention allows a user to conduct a session having formal collaboration, using the activity tools, and/or informal communication, using the real-time message window. Moreover, the present invention allows the user to conduct multiple activities within a session simultaneously. Additionally, the user may conduct activities anonymously utilizing the present invention. FIG. 7A is an illustration showing a graphical user interface 700 for conducting sessions in a collaborative work tool architecture, in accordance with an embodiment of the present invention. The graphical user interface 700 includes session selection tabs 702, a list of sessions 704, wherein the list of sessions 704 includes sessions 706. As discussed previously, each session 706 includes an activity start date 708, an activity start time 710, a session duration 712, an activity title 714, and an activity status 716. In addition, a facilitator 718 is listed for each activity. In use, a user may elect to participate in a session 706 by selecting a reply button 720 using a computer selection device, such as a mouse. In this manner, users may participate in multiple sessions simultaneously. Moreover, individual users may selectively indicate which sessions they will participate in and facilitator users may select which users to invite to particular sessions. As discussed in greater detail previously, the present invention determines a status 716 for each activity as the sessions proceed. FIG. 7B is a flowchart showing a method 1 for brainstorming in a collaborative work tool architecture, in accordance with an embodiment of the present invention. In operation 2, a single-tier discussion tree is displayed in response to selection of a brainstorming button by a facilitator user. Then, tree node text providing tree node definitions is received from the user wherein the user is able to contribute to the single-tier discussion tree, as indicated in operation 4. The tree node definitions are then stored in a database using a network. See operation 6. Finally, in operation 8, access to the tree node definitions is provided to a plurality of participant users, wherein the participant users are able to contribute to the single-tier discussion tree, as discussed in greater detail with reference to FIG. 7B next. FIG. 7C is an illustration showing a graphical user interface 721 for performing brainstorming activities in a collaborative work tool framework, in accordance with one embodiment of the present invention. The graphical user interface 721 includes an edit button 722, a view button 724, a list of predefined activity types 726, a real-time message window 728, a participant menu 730, a brainstorming contribution window 732 having idea expressions 734, and a contribution input widow 736. In use, the user is further able to add "brainstorming" ideas to the list of idea expressions 734 utilizing the contribution input window 736. The user enters their contribution into the contribution input window 736 and then submits the entered idea expression utilizing a submit button 738. The entered idea expression is then be listed in the brainstorming contribution window 732. It should be borne in mind that "brainstorming" in the present invention generally allows only posting. This is, generally replies to idea contributions are not allowed in the brainstorming activity. For replies, the discussion activity is utilized, as discussed in greater detail subsequently. FIG. 7D is a flowchart showing a method 740 for providing discussion in a collaborative work tool architecture, in accordance with an embodiment of the present invention. In operation 742, a single-tier discussion tree is displayed in response to selection of a discussion button by a facilitator user. Then, tree node text providing tree node definitions is received from the user wherein the user is able to contribute to the single-tier discussion tree, as indicated in operation 744. The tree node definitions are then stored in a database using a network. See operation 746. Finally, in operation 748, access to the tree node definitions is provided to a plurality of participant users, wherein the participant users are able to contribute to the single-tier discussion tree, as discussed in greater detail subsequently with reference to FIG. 7D. FIG. 7E is an illustration showing a graphical user interface 750 for performing discussion activities in a collaborative work tool framework, in accordance with one embodiment of the present invention. Similar to the graphical user interface of FIG. 7B, the graphical user interface 750 of FIG. 7B includes an edit button 752, a view button 754, a list of predefined activity types 756, a real-time message window 758, and a participant menu 760. The graphical user interface 750 further includes a discussion contribution window 762 having discussion expressions 764 and replies 766, and a contribution input widow 768. In operation, the user is further able to add "discussion" ideas to the list of discussion expressions 764 utilizing the contribution input window 768. The user enters their contribution into the contribution input window 768 and then submits the entered discussion expression utilizing a submit button 770. The entered discussion expression is then listed in the discussion contribution window 762. The user is further able to reply to discussion expressions 764 utilizing the contribution input window 768. The user enters their reply into the contribution input window 768 and then submits the entered reply utilizing a reply button 772. The entered reply 766 is then listed in the discussion contribution window 762 under the corresponding discussion expression 764. FIG. 8 is flowchart illustrating a method 800 for displaying a relational tree architecture in a graphical user interface in a collaborative work tool framework, in accordance with an embodiment of the present invention. First, in response to selection of a categorization button by a facilitator user, a discussion tree is displayed in an initial operation 802. Then, in operation 804, tree node definitions are received from the user, wherein the tree node definitions define relationships between nodes of the discussion tree, and,wherein the tree node definitions are defined by discussion categories. In operation 806, the tree node definitions are then stored in a database via a network. Finally, access to the tree node definitions is provided to a plurality participant users, wherein the participant users are capable of contributing to the discussion tree of the discussion categories. See operation 808. In one aspect of the present invention, the defined relationships between the nodes of the discussion tree are hieratical relationships. Additionally, the tree nodes of the discussion tree may be collapsible. In one embodiment of the present invention, a message window capable of displaying real-time messages from participant users is displayed. In another embodiment, the real-time messages is sent to a specific participant user in response to selection of the specific participant user from a participant user menu. In yet a further embodiment, participant users may add contributions to the discussion categories by selecting a specific tree node from the discussion tree utilizing computer pointing device. FIG. 9 is an illustration showing a graphical user interface 900 for displaying a relational tree architecture in a graphical user interface in a collaborative work tool framework, in accordance with an embodiment of the present invention. The graphical user interface 900 includes a discussion tree 902 having discussion tree nodes 904, a real-time message window 906, and a participant menu 908. The discussion tree 902 provides users with a hierarchal view of the discussion tree nodes 904. In this manner, topics for a session may be organized in an easily definable top down hierarchal tree structure, allowing participants to easily view and participate in the various topics of the session. In use, participants may select discussion nodes to add their contributions to the various categories. In addition, to the formal collaboration using categorization activities, such as the discussion tree set forth above, informal communication may be accomplished utilizing the real-time message window 906. As described previously, users may communicate in real-time using the real-time message window 906 in conjunction with the participant menu 908. Hence, the present invention supports both formal and informal communication among participants of a session. FIG. 10 is a flowchart illustrating a method 1000 for affording voting via a graphical user interface in a collaborative work tool framework, in accordance with an embodiment of the present invention. First, in operation 1002, in response to selection of a voting button by a participant user, a voting window is provided. Then, in operation 1004, voting data is received from the user utilizing the voting window. The voting data is then stored in a database via a network, as indicated in operation 1006. Next, in operation 1008, the received voting data is processed. The processed voting data is thereafter stored in the database. See operation 1010. Finally, in operation 1012 a user is allowed access to the voting data and the processed voting data utilizing the database. In one aspect of the present invention, the voting window displays agreement voting information. Optionally, the voting window may display yes/no voting information. Also optionally, the voting window may display customised scale voting information. In one embodiment of the present invention, the voting window may display voting information on a plurality of issues. In another embodiment, a message window capable of displaying user messages real-time is displayed. FIG. 11 is an illustration showing a graphical user interface 1100 for affording voting via a graphical user interface in a collaborative work tool framework, in accordance with an embodiment of the present invention. Then graphical user interface 1100 includes a list of voting issues 1102, each having an issue description 1104 and voting options 1106. In addition, the graphical user interface 1100 includes voting type display 1108, a clear votes button 1110, and a send vote button 1112. In use, a user selects a voting issue 1102 using the issue description 1104. The user then selects their voting preference using the voting options 1106 of the voting issue 1102. FIG. 11 shows an example of agreement voting, however, preferably the present invention may support yes/no voting and customised scale voting. The voting type display 1108 shows the type of voting activity currently in use. At any point in the voting process, the present invention preferably allows the user to clear the voting field of all voting issues by selecting the clear votes button 1110. Once the user is satisfied with their voting selections, the user submits their votes by selecting the final vote button 1112. FIG. 12 is a flowchart illustrating a method 1200 for reporting in a collaborative work tool architecture, in accordance with an embodiment of the present invention. A client user interface including an activity data field is displayed in an initial operation 1202. Then, in operation 1204, activity data is received from a facilitator user, wherein the activity data includes a title for the activity and a status of the activity. The received activity data is then stored on a server via a network in operation 1206. Next, as shown in operation 1208, the activity data is displayed to a plurality of participant users using the client user interface. Meeting data is then received via the network from the plurality of participant users utilizing the activity data. See operation 1210. Finally, a session report is generated based on the activity data and the meeting data as indicated in operation 1212. In one aspect of the present invention, the session report is generated as an HTML file. In another aspect, the facilitator user is allowed to edit the session report. In yet a further aspect, the session report is sent to the participant users via the network. In one embodiment of the present invention, the network is the Internet. Optionally, the network may be an intranet. Additionally, the activity data may include a start time for the activity and a duration of the activity. The present invention allows a session report to be created at anytime during a session. Moreover, the session report may include a selection or all of the activities listed for the session. Furthermore, the report may be saved as word processing document, such as a Microsoft Word document, and/or an HTML file capable of being further edited in any text editor that supports HTML. FIG. 13 is an illustration showing a graphical user interface 1300 for reporting in a collaborative work tool architecture, in accordance with an embodiment of the present invention. The graphical user interface 1300 includes a report window 1302 which displays a session report having a session title 1304, a session description 1306, a session creator 1308, and a session start and end time 1310. In addition, the report window 1302 further includes a list of the activities 1312 that occurred during the session. To assist in the creation of the session report, the graphical user interface 1300 includes a session creation assistant 1314. The session creation assistant 1314 allows a user to select what will be included in the session report, such as a list of the session activities, a list of the session participants, and a list of the people invited but not participating in the session. Using the session creation assistant 1314, a user may easily create session reports and distribute the reports to desired individuals. FIG. 14A is a flowchart illustrating a method 1400 for affording archiving in a collaborative work tool architecture, in accordance with an embodiment of the present invention. First, in operation 1402, session data is created by a facilitator user. Then in operation 1404 activity data is received via the network. The session data and activity data are then stored in a database located on a server using the network, as indicated in operation 1406. Finally, a user is allowed to search the database for specific data, see operation 1408. In one aspect of the present invention, the database further includes session reports. In another aspect, the user is allowed to search the database for a specific session report. In one embodiment of the present invention, the session report is an HTML file. In another embodiment, the activity data is accessed by users asynchronously. Additionally, the collaborative work tool architecture may be distributed. Thus, the present invention allows archiving of session materials for later reference. Moreover, the present invention allows users to search the archived sessions for material they desire to use. FIG. 14B is a diagram of a software architecture 1420 for a collaborative work tool, in accordance with an embodiment of the present invention. The software architecture 1420 includes a client tier 1422, a business tier 1424, and a backend tier 1426. The client tier 1422 includes swing services 1428, swing workers 1430, a client data model 1432, and message receiver 1434. Typically, the foregoing components execute in an operating system environment, such as Microsoft Windows 95/98 1436. The business tier 1424 includes business services 1438, adapters 1440, a broadcaster 1442, and a business object model 1444. Generally, the adaptors 1440 of the business tier 1424 are utilized by the system to communicate with the swing workers 1430 of the client tier 1422. The backend tier 1426 includes database services 1446, a database system 1448, mail services 1450, and a mail gateway 1452. In operation, the database services component 1446 is utilized by the system for bi-directional communicatation with the business object model 1444 of the business tier 1424. In addition, the mail services component 1450 provides mail services to the business object model of the business tier. Typically, the backend tier executes on a service operating system such as Microsoft Windows NT. To provide secure transactions, BEA weblogic is used for security between the client tier 1422 and the business tier 1424, as discussed in greater detail with reference to FIG. 14C. FIG. 14C is a diagram of a secure software architecture 1460 for a collaborative work tool, in accordance with an embodiment of the present invention. The secure software architecture 1460 includes RMI over TCP:SSL security 1462 having BEA Weblogic client 1464 and BEA Weblogic server 1466. As discussed previously, the client tier 1422 communicates with the business tier 1424 using the swing workers 1430 and the message receiver 1434 components. In this embodiment, the swing workers 1430 and the message receiver 1434 components communicate with the BEA Weblogic client 1464, which authenticates the user, generally via a userID and password. The BEA Weblogic server 1466 is then used for server authentication, generally by SSL using forty bits encryption. FIG. 15 is a schematic diagram of an exemplary system architecture 1500 in accordance with another embodiment of the present invention. In accordance with an embodiment of the present invention, a BackgroundFinder (BF) is implemented as an agent responsible for preparing an individual for an upcoming meeting by helping him/her retrieve relevant information about the meeting from various sources. BF receives input text in character form indicative of the target meeting. The input text is generated in accordance with an embodiment of the present invention by a calendar program that includes the time of the meeting. As the time of the meeting approaches, the calendar program is queried to obtain the text of the target event and that information is utilized as input to the agent. Then, the agent parses the input meeting text to extract its various components such as title, body, participants, location, time etc. The system also performs pattern matching to identify particular meeting fields in a meeting text. This information is utilized to query various sources of information on the web and obtain relevant stories about the current meeting to send back to the calendaring system. For example, if an individual has a meeting with Netscape and Microsoft to talk about their disputes, and would obtain this initial information from the calendaring system. It will then parse out the text to realize that the companies in the meeting are "Netscape" and "Microsoft" and the topic is "disputes." Then, the system queries the web for relevant information concerning the topic. Thus, in accordance with an objective of the invention, the system updates the calendaring system and eventually the user with the best information it can gather to prepare the user for the target meeting. In accordance with an embodiment of the present invention, the information is stored in a file that is obtained via selection from a link imbedded in the calendar system. Program Organization: A computer program in accordance with an embodiment of the present invention is organized in five distinct modules: BF.Main, BF.Parse, Background Finder.Error, BF.PatternMatching and BF.Search. There is also a frmMain which provides a user interface used only for debugging purposes. The executable programs in accordance with an embodiment of the present invention never execute with the user interface and should only return to the calendaring system through Microsoft's Winsock control. An embodiment of the system executes in two different modes which can be specified under the command line sent to it by the calendaring systcm. When the system runs in simple mode, it executes a keyword query to submit to external search engines. When executed in complex mode, the system performs pattern matching before it forms a query to be sent to a search engine. Data Structures: The system in accordance with an embodiment of the present invention utilizes three user defined structures:
The user-defined structure, tMeetingRecord, is used to store all the pertinent information concerning a single meeting. This info includes userID, an original description of the meeting, the extracted list of keywords from the title and body of meeting etc. It is important to note that only one meeting record is created per instance of the system in accordance with an embodiment of the present invention. This is because each time the system is spawned to service an upcoming meeting, it is assigned a task to retrieve information for only one meeting. Therefore, the meeting record created corresponds to the current meeting examined. ParseMeetingText populates this meeting record and it is then passed around to provide information about the meeting to other functions. If GoPattemMatch can bind any values to a particular meeting field, the corresponding entries in the meeting record is also updated. The structure of tMeetingRecord with each field described in parentheses is provided below in accordance with an embodiment of the present invention.
There are two other structures which are created to hold each individual pattern utilized in pattern matching. The record tAPatternRecord is an array containing all the components/elements of a pattern. The type tAPatternElement is an array of strings which represent an element in a pattern. Because there may be many "substitutes" for each element, we need an array of strings to keep track of what all the substitutes are. The structures of tAPatternElement and tAPatternRecord are presented below in accordance with an embodiment of the present invention.
Many constants are defined in each declaration section of the program which may need to be updated periodically as part of the process of maintaining the system in accordance with an embodiment of the present invention. The constants are accessible to allow dynamic configuration of the system to occur as updates for maintaining the code. Included in the following tables are lists of constants from each module which I thought are most likely to be modified from time to time. However, there are also other constants used in the code not included in the following list. It does not mean that these non-included constants will never be changed. It means that they will change much less frequently. For the Main Module (BF.Main):
For the Search Module (BF.Search):
For the Parse Module (BFParse):
For Pattern Matching Module (BFPatternMatch): There are no constants in this module which require frequent updates. General Process Flow: The best way to depict the process flow and the coordination of functions between each other is with the five flowcharts illustrated in FIGS. 16 to 20. FIG. 16 depicts the overall process flow in accordance with an embodiment of the present invention. Processing commences at the top of the chart at function block 1600 which launches when the program starts. Once the application is started, the command line is parsed to remove the appropriate meeting text to initiate the target of the background find operation in accordance with an embodiment of the present invention as shown in function block 1610. A global stop list is generated after the target is determined as shown in function block 1620. Then, all the patterns that are utilized for matching operations are generated as illustrated in function block 1630. Then, by tracing through the chart, function block 1600 invokes GoBF 1640 which is responsible for logical processing associated with wrapping the correct search query information for the particular target search engine (function blocks 1650-1697). For example, function block 1640 flows to function block 1650 and it then calls GoPatternMatch as shown in function block 1660. To see the process flow of GoPatternMatch, we swap to the diagram titled "Process Flow for BF's Pattern Matching Unit." One key thing to notice is that functions depicted at the same level of the chart are called by in sequential order from left to right (or top to bottom) by their common parent function. For example, Main 1600 calls ProcessCommandLine 1610, then CreateStopListist 1620, then CreatePatterns 1630, then GoBackgroundFinder 1640. FIGS. 17 to 20 detail the logic for the entire program, the parsing unit, the pattern matching unit and the search unit respectively. FIG. 20 details the logic determinative of data flow of key information through BackgroundFinder, and shows the functions that are responsible for creating or processing such information. Search Architecture under the basic search/simple query mode Search ALTA VISTA As described in more detail herein, the Alta Vista search engine utilizes the identities and returns general information about topics related to the current meeting as shown in FIG. 20. The system in accordance with an embodiment of the present invention takes all the keywords from the title portion of the original meeting text and constructs an advanced query to send to Alta Vista. The keywords are logically combined together in the query. The results are also ranked based on the same set of keywords. One of ordinary skill in the art will readily comprehend that a date restriction or publisher criteria could be facilitated on the articles we want to retrieve. A set of top ranking stories are returned to the calendaring system in accordance with an embodiment of the present invention. NewsPage (Function Block 1675 of FIG. 16): The NewsPage search system is responsible for giving us the latest news topics related to a target meeting. The system takes all of the keywords from the title portion of the original meeting text and constructs a query to send to the NewsPage search engine. The keywords are logically combined together in the query. Only articles published recently are retrieved. The NewsPage search system provides a date restriction criteria that is settable by a user according to the user's preference. The top ranking stories are returned to the calendaring system. FIG. 17 is a user profile data model in accordance with an embodiment of the present invention. Processing commences at function block 1700 which is responsible for invoking the program from the main module. Then, at function block 1710, a wrapper function is invoked to prepare for the keyword extraction processing in function block 1720. After the keywords are extracted, then processing flows to function block 1730 to determine if the delimiters are properly positioned. Then, at function block 1740, the number of words in a particular string is calculated, at function block 1770 the delimiters for the particular field are checked, and a particular field from the meeting text is retrieved at function block 1750. Then, at function block 1780, the delimiters of the string are again checked to assure they are placed appropriately. Finally, at function block 1760, the extraction of each word from the title and body of the message is performed a word at a time utilizing the logic in function block 1762 which finds the next closest word delimiter in the input phrase, function block 1764 which strips unnecessary materials from a word and function block 1766 which determines if a word is on the stop list and returns an error if the word is on the stop list. Pattern Matching: Limitations associated with a simple searching method include: 1. Because it relies on a stop list of unwanted words in order to extract from the meeting text a set of keywords, it is limited by how comprehensive the stop list is. Instead of trying to figure out what parts of the meeting text we should throw away, we should focus on what parts of the meeting text we want. 2. A simple search method in accordance with an embodiment of the present invention only uses the keywords from a meeting title to form queries to send to Alta Vista and NewsPage. This ignores an alternative source of information for the query, the body of the meeting notice. We cannot include the keywords from the meeting body to form our queries because this often results in queries which are too long and so complex that we often obtain no meaningful results. 3. There is no way for us to tell what each keyword represents. For example, we may extract "Andy" and "Grove" as two keywords. However, a simplistic search has no way knowing that "Andy Grove" is in fact a person's name. Imagine the possibilities if we could somehow intelligently guess that "Andy Grove" is a person's name. We can find out if he is an Andersen person and if so what kind of projects he's been on before etc. etc. 4. In summary, by relying solely on a stop list to parse out unnecessary words, we suffer from "information overload". Pattern Matching Overcomes These Limitations: Here's how the pattern matching system can address each of the corresponding issues above in accordance with an embodiment of the present invention. 1. By doing pattern matching, we match up only parts of the meeting text that we want and extract those parts. 2. By performing pattern matching on the meeting body and extracting only the parts from the meeting body that we want. Our meeting body will not go to complete waste then. 3. Pattern matching is based on a set of templates that we specify, allowing us to identify people names, company names etc from a meeting text. 4. In summary, with pattern matching, we no longer suffer from information overload. Of course, the big problem is how well our pattern matching works. If we rely exclusively on artificial intelligence processing, we do not have a 100% hit rate. We are able to identify about 20% of all company names presented to us. Patterns: A pattern in the context of an embodiment of the present invention is a template specifying the structure of a phrase we are looking for in a meeting text. The patterns supported by an embodiment of the present invention are selected because they are templates of phrases which have a high probability of appearing in someone's meeting text. For example, when entering a meeting in a calendar, many would write something such as "Meet with Bob Dutton from Stanford University next Tuesday." A common pattern would then be something like the word "with" followed by a person's name (in this example it is Bob Dutton) followed by the word "from" and ending with an organization's name (in this case, it is Stanford University). Pattern Matching Terminology: Terminology associated with pattern matching includes:
The following table represents patterns supported by BF. Each pattern belongs to a pattern group. All patterns within a pattern group share a similar format and they only differ from each other in terms of what indicators are used as substitutes. Note that the patterns which are grayed out are also commented in the code. BF has the capability to support these patterns but we decided that matching these patterns is not essential at this point.
FIG. 18 is a detailed flowchart of pattern matching in accordance with an embodiment of the present invention. Processing commences at function block 1800 where the main program invokes the pattern matching application and passes control to function block 1810 to commence the pattern match processing. Then, at function block 1820, the wrapper function loops through to process each pattern which includes determining if a part of the text string can be bound to a pattern as shown in function block 1830. Then, at function block 1840, various placeholders are bound to values if they exist, and in function block 1841, a list of names separated by punctuation are bound, and at function block 1842 a full name is processed by finding two capitalized words as a full name and grabbing the next letter after a space after a word to determine if it is capitalized. Then, at function block 1843, time is parsed out of the string in an appropriate manner and the next word after a blank space in function block 1844. Then, at function block 1845, the continuous phrases of capitalized words such as company, topic or location are bound and in function block 1846, the next word after the blank is obtained for further processing in accordance with an embodiment of the present invention. Following the match meeting field processing, function block 1850 is utilized to locate an indicator which is the head of a pattern, the next word after the blank is obtained as shown in function block 1852 and the word is checked to determine if the word is an indicator as shown in function block 1854. Then, at function block 1860, the string is parsed to locate an indicator which is not at the end of the pattern and the next word after unnecessary white space such as that following a line feed or a carriage return is processed as shown in function block 1862 and the word is analyzed to determine if it is an indicator as shown in function block 1864. Then, in function block 1870, the temporary record is reset to the null set to prepare it for processing the next string and at function block 1880, the meeting record is updated and at function block 1882 a check is performed to determine if an entry is already made to the meeting record before parsing the meeting record again. Using the Identified Meeting Fields: Now that we have identified fields within the meeting text which we consider important, there are quite a few things we can do with it. One of the most important applications of pattern matching is of course to improve the query we construct which eventually gets submitted to Alta Vista and News Page. There are also a lot of other options and enhancements which exploit the results of pattern matching that we can add to BF. These other options will be described in the next section. The goal of this section is to give the reader a good sense of how the results obtained from pattern matching can be used to help us obtain better search results. FIG. 19 shows a flowchart of the detailed processing for preparing a query and obtaining information from the Internet in accordance with an embodiment of the present invention. Processing commences at function block 1900 and immediately flows to function block 1910 to process the wrapper functionality to prepare for an Internet search utilizing a web search engine. If the search s to utilize the Alta Vista search engine, then at function block 1930, the system takes information from the record and forms a query in function blocks 1940 (including blocks 1942-1949), 1950, and 1960 for submittal to the search engine. If the search is to utilize the NewsPage search engine, then at function block 1920, the system takes information from the meeting record and forms a query in function blocks 1921 to 1928. Alta Vista Search Engine: A strength of the Alta Vista search engine is that it provides enhanced flexibility. Using its advance query method, one can construct all sorts of Boolean queries and rank the search however you want. However, one of the biggest drawbacks with Alta Vista is that it is not very good at handling a large query and is likely to give back irrelevant results. If we can identify the topic and the company within a meeting text, we can form a pretty short but comprehensive query which will hopefully yield better results. We also want to focus on the topics found. It may not be of much merit to the user to find out info about a company especially if the user already knows the company well and has had numerous meetings with them. It's the topics they want to research on. News Page Search Engine: A strength of the News Page search engine is that it does a great job searching for the most recent news if you are able to give it a valid company name. Therefore when we submit a query to the news page web site, we send whatever company name we can identify and only if we cannot find one do we use the topics found to form a query. If neither one is found, then no search is performed. The algorithm utilized to form the query to submit to Alta Vista is illustrated in FIG. 21. The algorithm that we will use to form the query to submit to News Page is illustrated in FIG. 22. The following table describes in detail each function in accordance with an embodiment of the present invention. The order in which functions appear mimics the process flow as closely as possible. When there are situations in which a function is called several times, this function will be listed after the first function which calls it and its description is not duplicated after every subsequent function which calls it.
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
