Method and apparatus for implementing a dynamically updated portal page in an enterprise-wide computer system
Claim Score by NHIP
Abstract
A method and apparatus for processing jobs on an enterprise-wide computer system. The computer system uses a portal architecture to allow a user to view a wide variety of content retrieved from a variety of different computer systems. The computer system is configured such that a plurality of users can access the system at the same time through a computer network such as the Internet. Users may access the computer system by using a standardized browser program, thus simplifying the user interface. The computer system may also be connected to one or more back-end databases that correspond to the different computer systems within the enterprise. The computer system is configured to run predefined jobs to process data. These jobs can perform a variety of tasks such as retrieving data from a back-end database, preparing a report based upon retrieved data, processing data already resident within the portal system, or notifying a user when a particular condition occurs within the computer system. The computer system presents data to a user in an object called a portal page. The portal page is an object arranged in a format that is readable by a browser program. The portal page is a highly configurable document that may be comprised of a plurality of modules called portal objects. Each portal object may contain a set of links corresponding to output reports, jobs, or other objects stored within the repository. One feature of the portal page is a dynamically updated portal object. A dynamically updated portal object is an object that is updated on the user's portal page based upon data stored in the portal system.

Term
Term ended
Projected expiry passed 28 April 2023, 3.4 years ago.
- Priority
- Filed
- Published
- Projected expiry
- Today
2 claims: 2 independent, 0 dependent
- 1A computer system configured to present a portal page to at least one user through a network interface, wherein said at least one user communicates with the network interface through a computer network, the computer system comprising:a service broker electrically connected to the network interface, the service broker controlling a level of access to the computer system by a user and adapted to receive a request from a user for a job report;an authentication server electrically connected to the service broker, the authentication server configured to determine a level of access to be granted to a user based upon data stored therein;a repository electrically connected to the service broker, the repository comprising a computer memory encoded with a plurality of objects including at least one output report corresponding to a job and at least one portal page corresponding to a user, wherein the portal page includes a display window and a dynamically updated portal object associated with an output report stored in the repository;wherein the computer memory of the repository is further encoded with instructions for providing said at least one portal page to a corresponding user;and a job server electrically connected to the service broker and to the repository, the job server configured to execute a job stored within the repository and produce an output report, the server also configured to store the output report in the repository.
- 2Broadest claimClaim Score 52, average(NHIP)A method of processing a job in a computer system comprised of a service broker, a repository including computer memory, an authentication server, and a job server, the computer system configured for communication with at least one user through a network interface, the method comprising the steps of:retrieving a personalized portal page corresponding to a user from the repository, wherein the personalized portal page includes a display window and at least one portal object, wherein the portal object includes a link corresponding to a job stored in the repository;transmitting the personalized portal page to the user;receiving a request from the user to execute a job stored in the repository;retrieving the requested job from the repository;dispatching the requested job for processing on a corresponding job server;processing the requested job in the job server so as to produce an output report corresponding to the requested job;converting the output report into a format readable by a browser program;transmitting the portal page to the user with the converted output report displayed in the display window of the portal page.
Independent claims2
102 paragraphs in 5 sections, as filed
RELATED APPLICATIONS
[0001] This application depends from and claims priority to U.S. Provisional Patent Application No. 60/200,090, filed Apr 27, 2000, which is hereby incorporated by reference.
BACKGROUND
[0002] Many businesses and other enterprises use a variety of computer systems that are specially adapted for certain purposes. For example, a manufacturing division of an enterprise may use one kind of computer system specifically designed to handle manufacturing data while the sales division of the same enterprise may use another kind of system for sales information. The engineering division of the enterprise may use an entirely different computer system as well. Using different computer systems for different divisions of an enterprise makes sense because each kind of computer system will provide certain strengths that suit that division.
[0003] Although different divisions within an enterprise may use different computer systems, there are advantages to sharing data across an entire enterprise. For example, an individual in the sales division may need to know the current inventory levels for a product in the manufacturing division to determine what price should be set for the product. One solution to this problem is to provide hard copies of reports from different divisions of an enterprise to certain key individuals in the enterprise. This procedure is disadvantageous because it can overwhelm an individual with much more information than the individual needs and because the data in the hard copies of the report can be out of date by the time that the individual reviews it. Another solution to this problem is to use emulator computers that allow an individual to use a single computer to access more than one computer system. This procedure is also disadvantageous because the individual is required to learn a new interface and a new computer language for each computer system that he is to access. Thus, there is a need for an enterprise-wide computer system that can connect to a variety of computer systems, retrieve data from these systems, and present data to an individual in a standardized, easy-to-learn format.
SUMMARY
[0004] Disclosed herein is an enterprise-wide computer system designed to be connected to a variety of different computers systems within the enterprise. The computer system uses a portal architecture to allow a user to view a wide variety of content retrieved from a variety of different computer systems. The computer system may also be referred to as a portal system. The portal system is configured such that a plurality of users can access the system at the same time through a computer network such as the Internet. The portal system may also be connected to one or more back-end databases that correspond to the different computer systems within the enterprise. The portal system is scalable because many of its components are modular and can be readily duplicated as redundant processors. In this manner, small enterprises and large enterprises may be accommodated by different versions of the same portal system. In one aspect, the portal system acts as a middle-ware program that converts the data and reports from the variety of back-end databases and presents the data to a user in a standardized format. Data is provided to users by the portal system in a format that is readable by a browser program. Thus, by allowing a user to use a standard browser program as a user interface, the user's learning curve for the portal is greatly reduced. In particular, the user will be able to select reports and data for viewing by pointing at an item with his mouse and selecting a hyperlink.
[0005] In addition to converting data from back-end databases into a standardized format for a user, the portal system may be configured to run predefined jobs to process data. These jobs are stored within the portal system in a computer memory device called a repository. These jobs can perform a variety of tasks such as retrieving data from a back-end database, preparing a report based upon retrieved data, processing data already resident within the portal system, or notifying a user when a particular condition occurs within the portal system. These jobs can be executed on a predefined schedule or on an ad-hoc basis at the request of a user. When a job is executed on a predefined schedule, the output report of the job will often be stored in the repository so that it can be retrieved at a later time. When a job is performed on an ad-hoc basis, the output report will generally be provided to the user immediately through his browser interface. If a job is of particular interest to a user, then the portal system allows a user to subscribe to the job. A subscription will send a notification to the user whenever the job is executed by the portal system. The portal system also allows a user to configure one or more exception conditions for a job that indicate when some element of the output report is outside of a predefined range. A user can subscribe to job exceptions and thus be notified when these exceptions occur.
[0006] The portal system presents data to a user in an object called a portal page. The portal page is an object arranged in a format that is readable by a browser program. The portal page is a highly configurable document that may be comprised of a plurality of modules called portal objects. Each portal object may contain a set of links corresponding to output reports, jobs, or other objects stored within the repository. Thus, by clicking on one of the links in a portal object, the portal system will process the object corresponding to that link. If the link is directed to a job stored within the portal system, then clicking on that job will cause the job to be executed. If the link is directed to a browsable object stored within the repository, then that object will be displayed to the user. A portal page may also include a display window that can display browsable objects to a user. Another feature of the portal page is a dynamically updated portal object. A dynamically updated portal object is an object that is updated on the user's portal page based upon data stored in the portal system. If a dynamically updated portal object is included within a user's portal page, the user may receive the latest information corresponding to that object by refreshing his portal page. For example, if the dynamically updated portal object is linked to the output report of a job, then the portal object will display the latest version of the output report to the user when the portal page is refreshed. A dynamically updated portal object may also be hyperlinked to its corresponding object in the portal system such that a user may view, edit, or execute the corresponding object by clicking on the dynamically updated portal object at the user interface.
[0007] Each user's portal page may be customized to suit that user's specific needs. A user may add or remove portal objects from his portal page at his discretion. A user may also edit some portal objects in order to add links to reports or objects that the user is interested in. Another way in which a user can customize his portal page is to add and modify “favorites” on the portal page. A user's favorites is a set of links to objects stored in the repository, on an intranet, or on the Internet. These objects may be jobs, reports, or any other kind of data. By clicking one of these links, the corresponding object is presented in the display window.
[0008] The portal system may also be configured to conduct searches on behalf of a user. The portal system provides the ability to search both structured (databases, XML, formatted text, etc.) and unstructured data (HTML files, web-based content, PDF files, etc.) at locations inside and outside the portal. The portal system <b>120</b> also allows the user to configure the searches so that only certain objects, in certain locations are searched. By using these search parameters, a user can streamline a search to identify only highly relevant data. This increases the efficiency of the search and reduces the likelihood of identifying undesired results. If a user constructs a search that produces particularly relevant results, then the user may save those search parameters as a channel. The user can return to this channel at a later date to conduct the same search to see if any new objects have been identified. A list of channels stored by a user may be included in a user's portal page, allowing him access to search results by simply clicking on the appropriate channel link.
DESCRIPTION OF THE DRAWINGS
[0009]FIG. 1 depicts a high level view of the portal system connected to a plurality of back-end database and to a plurality of users.
[0010]FIG. 2 depicts a lower level view of the portal system including the various service agents.
[0011]FIG. 3 depicts an example of the hierarchy of categories and objects residing in the repository.
[0012]FIG. 4 depicts some of the categories of properties associated with jobs stored in the repository.
[0013]FIG. 5 depicts some of the properties associated with schedules residing in the event server.
[0014]FIG. 6 depicts some of the properties associated with each service agent residing in the portal.
[0015]FIG. 7 depicts some of the properties associated with a repository, an authentication server, and a job server residing in the portal.
[0016]FIG. 8 depicts some of the properties associated with a search server and a channel residing in the portal.
[0017]FIG. 9 depicts some of the categories of properties associated with a crawler residing in the knowledge server of the portal.
[0018]FIG. 10 depicts a representative example of a portal page as seen by a user with a browser program.
[0019]FIG. 11 depicts a representative example of an input form presented to a user during the execution of a job.
DETAILED DESCRIPTION
[0020] Disclosed herein is a method and apparatus for implementing an enterprise-wide portal system. The system is designed to connect a plurality of users to the portal system so that the users can access and process data that is stored therein. The system may also be connected to one or more back-end databases so that a user can view, and process data that is stored therein. In one embodiment of the portal, a variety of back-end databases using different operating systems are connected to the portal system. In this manner, the portal system allows a user to access data from a wide variety of back-end databases with a single computer interface. Another described aspect uses the portal system as a middle-ware program for converting a user's instructions into commands to retrieve and process data from the back-end databases. Another described aspect uses the portal system to display the results of a back-end process to the user in a format that can be read by a standard browser program. Another described aspect uses the portal system to process data that is stored in the portal system and provide output reports to a user. The portal system thus provides a one-stop interface for accessing, processing, and providing a wide variety of data to a plurality of users. In order to simplify the access to the computer system, the user interface may be based upon a standard browser program that is capable of reading Hypertext Markup Language (HTML). The browser may also be capable of reading other web-based programs such as Java, XML, Macromedia Flash, or other languages. By using a standardized browser program as a user interface to the computer system, the user is presented with a familiar format in which a user can point and click on hypertext links to navigate through the portal system and provide instructions to the portal system.
[0021]FIG. 1 depicts a high-level illustration of one embodiment of the portal system <b>120</b>. In FIG. 1, a plurality of users <b>100</b> are connected to a network interface <b>105</b> through a computer network <b>110</b>. The computer network <b>110</b> can take many forms including a direct connection, a local-area network, an enterprise intranet, a wireless network, the Internet, or any combination thereof. The network interface <b>105</b> is connected to a portal system <b>120</b> through a web client <b>115</b>. Within the portal system <b>120</b> are a service broker <b>125</b> that controls access to the computer system and a plurality of service agents <b>130</b> that are configured to perform specific tasks within the portal system <b>120</b>. Also connected to the portal system <b>120</b> are several back-end databases <b>135</b>, <b>140</b>, <b>145</b>, <b>150</b> in which data is stored. It should be noted that FIG. 1 is a block diagram that represents certain functional aspects of the invention as separate blocks. These functional blocks may be implemented on separate computer platforms or on the same computer platform.
[0022] In FIG. 1, each of the back-end databases <b>135</b>, <b>140</b>, <b>145</b>, <b>150</b> may contain different kinds of data and may use different operating system platforms. For example, back-end database <b>135</b> could be a Unix-based system in which statistical process control information about a manufacturing facility is stored. Back-end database <b>140</b> could be a PC-based database in which human resources data (employee payroll, headcount, organizational structure, etc.) is stored. Back-end database <b>145</b> could be an Oracle-based system in which sales and inventory information is stored. Lastly, back-end database <b>150</b> could be a Windows NT server in which benefits and pension information is stored. Different databases and platforms are sometimes used for different groups within an enterprise because each group has specialized needs that are best served by their respective back-end databases. Using different databases and platforms within the same enterprise, however, makes the combination and comparison of data from different groups difficult. The embodiments disclosed herein address this difficulty by using the portal system <b>120</b> as a common interface between the various back-end databases <b>135</b>, <b>140</b>, <b>145</b> & <b>150</b> and a user <b>100</b>. By using the portal system <b>120</b> as a common interface, data can be retrieved from the back-end databases and presented to the user in a standardized format through the web client <b>115</b>. For example, a user <b>100</b> may request that the portal system <b>120</b> produce a graph illustrating the enterprise's manufacturing yield over the past year. Upon receiving the request, the portal system <b>120</b> would retrieve yield data from manufacturing back-end database <b>135</b> and process that data to generate a bar chart corresponding to the user's request. This bar chart would then be presented to the user <b>100</b> through his browser program. That same user <b>100</b> may also request, during the same session, an update of the sales figures for the enterprise for the current month. The portal system <b>120</b> would retrieve sales data from the sales back-end database <b>145</b>, process that data, and generate a figure corresponding to the user's request. This data would then be presented to the user <b>100</b> through his browser program. The portal system <b>120</b> has the ability to simultaneously perform each of these tasks and present this data to the user <b>100</b> with a single interface.
[0023]FIG. 2 discloses another embodiment of the portal system <b>120</b>. In FIG. 2, a plurality of users <b>100</b> are connected to a network interface <b>105</b> through a computer network <b>110</b>. A web client <b>115</b> is resident on the network interface <b>105</b> that interfaces the users to a portal system <b>120</b>. Also illustrated in FIG. 2 are three back-end databases <b>200</b>, <b>205</b> and <b>210</b> that are connected to the portal system <b>120</b>. Within the portal system <b>120</b> are a service broker <b>125</b> and a plurality of service agents: an event server <b>215</b>, an authentication server <b>220</b>, a name server <b>225</b>, a job server <b>230</b>, a repository <b>235</b>, and a knowledge server <b>240</b> that includes a search server <b>245</b> and a crawl server <b>250</b>. It should be noted that FIG. 2 is a block diagram that represents certain functional aspects of the portal system <b>120</b> as separate blocks. These functional blocks may be implemented on separate computer platforms or on the same computer platform. The functions served by the service agents of FIG. 2 are summarized below.
[0024] The service broker <b>125</b> serves two functions in the portal system. It controls access to the portal system <b>120</b> by users <b>100</b> and controls the disposition of jobs to the service agents within the portal system. By controlling the disposition of jobs, the service broker <b>125</b> ensures that jobs are processed in an orderly manner and that none of the service agents become overloaded. The event server <b>215</b> schedules events, such as jobs, for processing in the portal system <b>120</b> on a predefined timetable. The authentication server <b>220</b> is used to determine if a particular user should be granted access to the portal system <b>120</b>. The permissions and group memberships for a particular user are also stored in the authentication server <b>220</b>. The name server <b>225</b> is the storage location for configuration information about all of the other service agents. For example, if the service broker <b>125</b> needs to know the location of a specific job server <b>230</b>, then the name server <b>225</b> will provide that information to the service broker <b>125</b>. The job server <b>230</b> is used to execute jobs in the portal system <b>120</b>. In addition, the job server <b>230</b> can retrieve data from a back-end database <b>200</b>,<b>205</b> or <b>210</b> to be processed for a particular job. Each job server <b>230</b> may be connected to at least one back-end database <b>200</b>, <b>205</b> or <b>210</b> in order to retrieve data therefrom. The job server <b>230</b> may also be a stand-alone unit which process jobs that do not retrieve data from any external sources. The repository <b>235</b> is used as a storage device for all information that is to be stored in the portal system. All computer files that are stored in the repository <b>235</b> are called objects. These objects may include HTML files, job output reports, executable job files (SQL, etc.), image files, etc. Objects that are stored in the repository <b>235</b> are arranged in a hierarchy called categories. Within each category, both objects and subcategories may be stored. Categories are thus organized in a tree system much like the file system on a standard computer. In addition, each object in the repository may include more than one version. Versioning can be used to accomplish a variety of objectives including setting multiple security levels for different versions of an object, and allowing a user to see a modification history of an object. The knowledge server <b>250</b> provides the search and channel functions for the portal system <b>120</b>. The knowledge server <b>250</b> is comprised of two components: a search server <b>245</b> and a crawl server <b>250</b>. The crawl server <b>250</b> uses one or more crawlers to analyze and index specific information that is stored in the repository <b>235</b>, a company intranet, or the Internet. A crawler can be configured to search only in certain locations in the repository <b>235</b>, a company intranet, or the Internet for information to be indexed. The indices produced by the crawl server <b>245</b> are stored in the knowledge server <b>240</b> in files called information sources. Depending upon the settings of the crawl server <b>250</b>, an information source will contain an index of objects found both within the portal system (i.e. in the repository <b>235</b>), or outside the portal system (i.e. on an intranet or the Internet). The crawl server <b>250</b> is capable of indexing structured and unstructured data. The search server <b>245</b> uses the information sources produced by the crawl server <b>250</b> to conduct searches on behalf of a user. Because the information sources will generally correspond to specialized topics, a user may increase the efficiency of a search by selecting only those information sources that are relevant to his search. The portal system <b>120</b> can include redundant service agents for processing user requests. In this manner, the portal system <b>120</b> is scalable to handle both a small enterprise with a small number of users and a large enterprise with many redundant service agents for processing requests from thousands of users.
[0025] One aspect of the portal system <b>120</b> utilizes the various service agents to process jobs for the benefit of users. Many of these jobs can retrieve data from the back-end databases <b>200</b>, <b>205</b> & <b>210</b> and process that data to generate an output report. Jobs may also be used to process data that is resident within the portal system <b>120</b>. For example, jobs could include a weekly report on manufacturing statistics for the enterprise, or a report describing the current status of the enterprises' accounts receivable. Because these jobs utilize data that is retrieved directly from the back-end databases, the output reports generated by these jobs reflect an up-to-the-minute status of the corresponding aspect of the enterprise. Generally, a job is stored in the repository <b>235</b> of the portal system <b>120</b>. When a job is to be executed, it is retrieved from the repository and sent to an appropriate job server <b>230</b> for processing. At the job server <b>230</b>, the job is executed. Sometimes, a job will require that certain data be retrieved from a back-end database <b>200</b>, <b>205</b> or <b>210</b>. In many instances, jobs are written in SQL language so as to facilitate the retrieval of data from the back-end databases. After data is retrieved from a back-end database <b>200</b>, <b>205</b> or <b>210</b> and processed by the job, the job will produce an output report. This output report may be stored in the repository <b>235</b> after the job is complete. An output report may also be provided directly to a user <b>100</b> through the web client <b>115</b>.
[0026] Jobs may be processed by the portal system <b>120</b> on either an ad-hoc basis or on predetermined schedule. Jobs processed on an ad-hoc basis are usually executed at the request of a user <b>100</b> connected to the portal system <b>120</b>. When a job is processed on ad-hoc basis, the job is first retrieved from the repository <b>235</b> and sent to an appropriate job server <b>230</b> for processing. After processing, the output report will be transmitted to the user <b>100</b> via the web client <b>115</b>. The output report may be stored in the repository <b>235</b> even though it was processed on an ad-hoc basis. Jobs may also be configured to run on a predetermined schedule. Information describing these schedules is stored in the event server <b>215</b>. When configuring a job to run on a predetermined schedule, the job must first be associated with a schedule in the event server <b>215</b>. If there is not a pre-existing schedule in the event server <b>215</b> that matches the timetable for the job, then a new schedule can be created in the event server <b>215</b>. When the designated time for a schedule arrives, the event server <b>215</b> generates a list of the jobs that have been associated with that schedule and sends that list of jobs to the service broker <b>125</b> for execution. The service broker <b>125</b> then dispatches the jobs for execution on the appropriate job server <b>230</b>. The output results for each of these jobs are then sent to the repository <b>235</b> for storage.
[0027] Another aspect of the portal system <b>120</b> relates to subscriptions. A user may subscribe to a particular object or category that is stored in the repository <b>235</b>. Thus, if an object or category within the repository <b>235</b> is modified, then all of the subscribing users are notified of the change. Users may also subscribe to a job such that when a job is executed, the user will be notified. If a user subscribes to a job, then he will be notified of its execution regardless of whether the job was run on a pre-determined schedule, or on an ad-hoc basis. Users may receive notification in a variety of ways including e-mail or notification on the user's portal page. The portal system may also be configured to provide a copy of the job's output report as an attachment to the notification e-mail or as an automatic update to a user's portal page.
[0028] Another aspect of the portal system <b>120</b> relates to the use of exceptions. An exception is a condition that is tied to the results of a job. An exception occurs when the output report of a job includes information that is outside of a predetermined range. Any number of exception conditions can be configured for a job. However, if any of them indicate that an exception condition exists, then the entire job will indicate that an exception condition exists. Only certain jobs within the portal system <b>120</b> can be configured to indicate an exception condition. Users can subscribe to exceptions in much the same way that they subscribe to a particular job. Thus, if the execution of a job produces an exception condition, then all of the subscribing users will be notified of the exception condition. Notification of exception conditions may also occur through e-mail or a user's portal page. A user may configure his portal page to provide a dynamically updated portal page which displays the status of an exception condition. This is called an exception dashboard.
[0029] Yet another aspect of the portal system <b>120</b> relates to the use of channels. A channel is an abstract of a search, which was constructed by a user, that has been stored in the repository for processing at a later date. Generally, a channel is a search that produces a set of highly relevant results for a user. A user can update the channel at any time to see if any other highly relevant documents have become available. The parameters for constructing the search are highly configurable by the user, thus allowing him to construct a very efficient search. In particular, the channel can be configured to search limited areas of the repository <b>235</b>; a company's intranet, and the Internet for new information. A user may share his channels with other users such that they can incorporate the channels into their portal pages. A user's channels may be stored in the repository <b>235</b> with the user's other portal page data.
[0030]FIG. 10 depicts a representative example of another aspect of the portal system <b>120</b> called a portal page <b>1000</b>. A portal page presents data to a user when he logs into the portal system <b>120</b>. Because a portal page is presented to a user <b>100</b> through the web client <b>115</b>, the data must be arranged in a format that is readable by a user's browser program. In FIG. 10, a wide variety of data is presented to a user <b>100</b> in the form of portal objects. A portal object is a modularized collection of links, graphics, or other data that may be presented to the user in a portal page <b>1000</b>. The portal objects depicted in FIG. 10 include broadcast messages <b>1005</b>, a company billboard <b>1010</b>, a user's customized bookmarks <b>1015</b>, an exceptions dashboard <b>1020</b>, and a syndicated content object <b>1030</b>. Also present in the portal page <b>1000</b> of FIG. 10 is a display window <b>1025</b>. A display window <b>1025</b> is a window in the portal page <b>1000</b> in which a user <b>100</b> may view browsable objects. The display window <b>1025</b> may display a variety of objects from the repository (output reports, HTML objects, dashboards, etc.) or pages from the Internet. A user can select content to be displayed in the display window <b>1025</b> by selecting an appropriate link in the portal page <b>1000</b>. The portal objects present in a user's portal page are highly configurable so that a user may customize his portal page <b>1000</b> to suit his particular needs. Some portal objects can be configured such that they must appear on every user's portal page <b>1000</b>. These portal object are called mandatory portal objects. Mandatory portal objects may be used to ensure that all users <b>100</b> of the portal system <b>120</b> are presented with certain content whenever they use the portal system <b>120</b>. An example of such a mandatory portal object is the broadcast messages portal object <b>1005</b> in FIG. 10. Portal objects may also be configured such that a user <b>100</b> may remove the portal object from his portal page, but cannot modify the content of the portal object. An example of this kind of portal object is the company billboard portal object <b>1010</b> of FIG. 10. In FIG. 10, it can be seen that a user <b>100</b> may remove the company billboard portal object <b>1010</b> by clicking the “X” icon <b>1008</b> in the upper right-hand corner of the object. It can also be seen that the user does not have the ability to modify the content of the company billboard <b>1010</b> because an “EDIT” icon is not present in the upper right-hand corner of the object. Portal objects may also be configured such that a user can both modify the content of the object, and remove the portal object from his portal page <b>1000</b>. An example of this kind of portal object is the “My Bookmarks” portal object <b>1015</b> of FIG. 10. In FIG. 10, it can be seen that a user <b>100</b> can remove the “My Bookmarks” portal object <b>1015</b> in its entirety by clicking the “X” icon <b>1008</b> in the upper right-hand corner of the object. It can also be seen that the user can modify the content of the “My Bookmarks” portal object <b>1015</b> by clicking either of the “EDIT” icon in the upper right-hand corner of the object or the “New Bookmark” link at the bottom of the object. Thus, a user <b>100</b> can customize the content of his personal portal page <b>1000</b>, by adding or removing certain portal objects or by modifying the content of certain portal objects.
[0031] Another aspect of the portal page <b>1000</b> is an exception dashboard <b>1020</b>. The exception dashboard is fully configurable by a user <b>100</b>, but may only be used to indicate when certain exception conditions have been met. In FIG. 10, the exception dashboard <b>1020</b> is configured to display a traffic light that is green when no exceptions are present and red when exceptions have been found. A user may add more than one indicator to the exception dashboard, such that there is a corresponding indicator for each exception condition that he has subscribed to.
[0032] A user <b>100</b> may also customize his personal portal page <b>1000</b> by using favorites and channels. If a user <b>100</b> identifies a certain object in the repository <b>235</b> that is particularly relevant to him, then that user may add the object to his Favorites. When an object is added to a user's favorites, a link corresponding to that object is added to that user's list of favorites. A user may view a list of his favorite objects by selecting the “Favorite Items” link <b>1075</b> in his personal portal window <b>1001</b>. The user <b>100</b> may then view any of the listed objects in the display window <b>1025</b> by clicking on a corresponding link. A user <b>100</b> may also create a list of favorite categories in the repository by using the favorite categories link <b>1080</b> in his personal portal page <b>1000</b>. In addition, a user may create a list of favorite channels by using the “my channels” link <b>1085</b> in his personal portal page.
[0033]FIG. 11 depicts a representative example of another aspect of the portal system <b>120</b> called a Form. Forms allow a user <b>100</b> to provide input to a job while a job server <b>230</b> is executing the job. Because a form is presented to a user <b>100</b> through the user's browser interface, the form should be in a format that can be read by a standard browser program. Languages, which can be used to create forms, include HTML, Java, Macromedia Flash and XML. In FIG. 11, a user <b>100</b> is presented with four input fields which must be provided to the job before it can be executed: i) a sales region option <b>1100</b>, ii) a quarter option <b>1105</b>, iii) a chart style option <b>1110</b>, and iv) a dimensions option <b>1115</b>. The sales region option <b>1100</b> and the chart style option <b>1110</b> are configured as drop-down menus from which a user may select. The quarter option <b>1105</b> and the dimensions option <b>1115</b> are configured as radio buttons from which a user may select. A form may utilize a wide variety of other mechanisms to provide input to a job such as a blank text field or an image with selectable fields. Many different input mechanisms, which are known in the art of browser language programming, may be utilized here. After a user <b>100</b> has selected values corresponding to each of the input fields, the user <b>100</b> submits these values to the job server <b>230</b>. In FIG. 11, this may be accomplished by pressing the “RUN” button <b>1120</b> at the bottom of the form. A user <b>100</b> may also reset the input values that have been selected to the form's default values by pressing the “RESET” button <b>1125</b> at the bottom of the form. A user <b>100</b> can also save certain input settings as the user's default values by selecting the “SAVE AS MY DEFAULTS” option <b>1130</b> in FIG. 11. When a user <b>100</b> saves certain input values as default values, these default values are stored with the user's profile in the portal system <b>120</b>. Thus, if the form is presented to the same user at a later time, the form will utilize the user's default values instead of the system default values. Each job in the repository <b>235</b> may be associated with one or more forms depending upon how much input is to be provided by the user <b>100</b>. The files corresponding to each form are stored in the repository <b>235</b>.
[0034] The Service Agents
[0035] As stated above, the service broker <b>125</b> controls access to the portal system <b>120</b> by a particular user <b>100</b>. The service broker <b>125</b> also provides session management services for users, and acts as a gateway to the other service agents within the portal system <b>120</b>. The service broker <b>125</b> dispatches user requests to an appropriate service agent with the help of the name server <b>225</b>. For example, when a client requests to see files that are stored on the repository <b>235</b>, the service broker <b>125</b> will first consult name server <b>225</b> to determine the location of the repository <b>235</b>, and then dispatch the request to that location. If the portal system <b>120</b> is configured to include redundant service agents, then the service broker <b>125</b> will distribute requests to those service agents in a round-robin manner. Each portal system <b>120</b> will have only one name server <b>225</b> and one repository <b>235</b>, but may have multiple service brokers <b>125</b>.
[0036] The service broker <b>125</b> provides location transparency so that users <b>100</b> are unaware of the actual location of the back-end servers <b>200</b>, <b>205</b> & <b>210</b> or the service agents within the portal system <b>120</b>. Accordingly, a service agent or back-end database <b>200</b>, <b>205</b> & <b>210</b> may be moved from one machine to another (possibly for performance reasons) without affecting the user's interface. The user only needs to log in to the correct service broker <b>125</b> in order to have access to all of the features of the portal system <b>120</b>. This greatly simplifies the login procedure and the browser interface for a user. The service broker <b>125</b> also distributes work evenly among the service agents that support identical services. For example, if two job servers <b>230</b> provide the same services, then one service broker <b>125</b> will dispatch work in balanced amounts between them. This round-robin load balancing improves performance since two machines can process job server <b>230</b> requests in parallel. Replication of a service agent also helps ensure fault tolerance. If two different job servers <b>230</b> provide identical services and one of them is not available, then the portal system <b>120</b> will continue to operate properly, as the service broker <b>125</b> dispatches requests only to the currently operational job servers <b>230</b>. Of course, if all of the job servers <b>230</b> are non-operational, then job server requests will fail.
[0037] The name server <b>225</b> offers a directory lookup and initialization service for the other service agents installed in the portal system <b>120</b>. The name server <b>225</b> also manages configuration information about the installed service agents. Each portal system <b>120</b> will have only one name server <b>225</b>. Accordingly, it is useful to think of a portal domain <b>120</b> as the entity managed by a single name server <b>225</b>. The name server <b>225</b> stores metadata about the service agents in a Relational Database Management System (RDBMS). As part of the installation process, the portal stores the RDBMS connectivity information for the name server <b>225</b> in a file stored in the repository <b>235</b>. Each service agent in the portal system <b>120</b> must contact the name server <b>225</b> to acquire its configuration information during startup. Accordingly, the name server <b>225</b> should be started before starting any of the other service agents in the portal system <b>120</b>. The name server <b>225</b> also maintains a configuration administrator account, which allows an Administrator to manage configuration data about the service agents.
[0038]FIG. 3 depicts a representative embodiment of the repository <b>235</b> of the portal system <b>120</b>. The repository <b>235</b> is a computer memory storage device within the portal system <b>120</b>. In FIG. 3, a variety of computer files, known as objects <b>300</b>, are stored in the repository <b>235</b>. Each of the objects <b>300</b> is assigned to a specific Category or Subcategory <b>305</b>, <b>310</b>, <b>315</b> within the repository <b>235</b>. Categories and Subcategories <b>305</b>, <b>310</b>, <b>315</b> in the repository <b>235</b> are similar to file system directories or folders. Each category, subcategory, and object is defined with a set of properties. These properties include the name of the user who owns the object or category as well as permissions for the object or category. The permissions define which users can access a category or object. This is especially important if certain objects contain confidential information that only a few users should see. Accordingly, a user or administrator can structure the categories such that users can find information in an intuitive manner. The categories can also be arranged in a manner that efficiently implements security measures for sensitive data.
[0039] An object can be any kind of computer file, including the following: 1) Ordinary Files—such as text documents, spreadsheets, presentation graphics, HTML files and other documents and executables from general office applications; 2) jobs—executable program files from applications such as Brio.Report™, Oracle Reports, SAP Reports, etc.; 3) Categories—user-defined groups of objects similar to file system directories or folders; 4) External links—a file which encapsulates an Internet URL as well as metadata describing the link; and 5 channels —software ‘abstracts’ of searches that can be readily fine-tuned by selecting documents from current search results. Each object is assigned a property called a MIME type. A MIME type is the Multipurpose Internet Mail Extension associated with an object. Essentially, the MIME type describes the format of the data on the object. The MIME type identifies which application or job server <b>230</b> should be used to open an object. Each object placed in the repository for storage will be assigned a single MIME type.
[0040] To provide for system security an authentication server <b>220</b> is provided. The authentication server <b>220</b> is responsible for authenticating users who connect to the various service agents in the portal system <b>120</b>. For example, when a user <b>100</b> logs into the portal system <b>120</b>, the authentication server <b>220</b> checks the user's credentials and either allows or disallows the user to connect. In addition, the authentication server <b>220</b> identifies all of the properties and group memberships assigned to a particular user <b>100</b>. Some of the properties that can be associated with a user <b>100</b> include a username, password, e-mail address, and permissions. The permissions associated with a user <b>100</b> define the ability of the user to read, write and execute objects stored in the repository <b>235</b>. A Group is used to define permissions for a set of users, rather than individual users. Accordingly, all the members of a particular group will be given similar permissions for a set of objects. The authentication server <b>220</b> may be a server integrated into the portal system <b>120</b>, or it may be an external system that is electrically connected to the portal system <b>120</b>. An external authentication server <b>220</b> is useful when an external system already exists that defines a set of users <b>100</b>, passwords, and group memberships. Communication between an external authentication server <b>220</b> and a portal system <b>120</b> may be established by using a LDAP driver.
[0041] By providing a job server <b>230</b>, the portal system <b>120</b> enables a plurality of users to execute common jobs and to access the output reports of those jobs with a browser program interface. The job server <b>230</b> executes external programs, such as SQR programs, in the portal system <b>120</b>. FIG. 2 illustrates that the job server <b>230</b> is electrically connected to the service broker <b>125</b>, the repository <b>235</b> and at least one back-end database <b>200</b>, <b>205</b> or <b>210</b>. When a user <b>100</b> transmits a request to the portal system <b>120</b> to execute a particular job, the job is sent from the repository <b>235</b> to the job server <b>230</b> for execution. The job server executes the job and returns the resulting job output to the user <b>100</b>. In addition, the job server <b>230</b> stores job output in the repository <b>235</b> as an object. The job server <b>230</b> can be configured to execute a variety of enterprise applications such as SQR Server and Oracle Reports. Furthermore, a plurality of job servers <b>230</b> can be installed in a portal system <b>120</b> to allow parallel execution of job requests. By storing the output reports from job servers <b>230</b> as an object in the repository <b>235</b>, multiple users <b>100</b> can utilize dynamic open links to these objects within their personalized portal pages.
[0042] The event server <b>215</b> provides three services in the portal system <b>120</b>: scheduling services, subscription services, and distribution/notification services. The scheduling service dispatches pre-scheduled jobs for execution by one of the job servers <b>230</b>. The subscription service allows a user to subscribe to a particular job and receive job output when a job server <b>230</b> has executed the job. The distribution/notification service notifies a user when relevant events occur such as completion of a job or identification of a particular exception. The event server <b>215</b> provides three kinds of notifications to users: 1) Report Completion—a user is notified when an SQR program or other job is executed, creating a new version of the job output; a user can subscribe to either scheduled or unscheduled jobs; 2) Changed Content in a category—a user is notified when the contents of a category or subcategory changes; and 3) New Versions of an object—a user is notified when a new version of an object is stored in the repository or when an object is updated. Notifications are provided to users in a variety or ways including e-mail, a link on the user's browser interface, or an icon that appears in the user's browser interface.
[0043] Another tool for personalizing a user's portal page is the knowledge server <b>240</b>, which is an optional component that adds ‘search’ features to the portal system <b>120</b>. The knowledge server <b>240</b> provides full text searching and concept matching for documents located on Internet, intranet, and portal sites. The knowledge server <b>240</b> is configured to conduct searches upon both structured data and unstructured data. Structured data is data that is stored in a format that facilitates processing by a computer such as databases or structured filing systems like the repository <b>235</b>. Unstructured data includes information that is arranged in a format designed for review by humans such as news articles, press releases, or any documents posted on the Internet to be read by humans. The knowledge server <b>240</b> can process structured and unstructured data from a variety of locations including the Internet; a company's intranet, and the portal repository <b>235</b>. By using concept ranking algorithms and processes, the knowledge server <b>240</b> can qualitatively analyze structured and unstructured data and present only those items (structured or unstructured) which are most relevant to the user's search request. The documents that can be searched by the knowledge server <b>240</b> include HTML documents, Microsoft documents (such as MS Word), PDF files, text files, Brio.Query™ data files, and many others. The knowledge server <b>240</b> has two components: a search server <b>245</b> and a crawl server <b>250</b>. Each portal system <b>120</b> supports a single search server <b>245</b> and a single crawl server <b>250</b> that communicate with each other. These components are interrelated and cannot function without each other.
[0044] The crawl server <b>250</b> downloads documents from Internet, intranet, and portal sites and indexes them into a database called an information source. Documents must be indexed into information sources before they can be retrieved by a search. Crawlers, which are crawl server agents, can navigate the portal, an intranet, and the Internet, according to certain predefined crawler properties. When a crawler begins executing, it starts at the first URL and downloads the document. The crawler determines whether the document should be indexed based on the crawler properties and if so, it parses the document. If the document is an HTML file, the crawler will follow hyperlinks to other documents and download them. A crawler can be configured to gather documents from multiple URLs. If it is desired to use the same crawler properties for several Web sites, then an administrator can create a single crawler to crawl these Web sites. For example, it might be desirable to use a single crawler to index a number of news sites and update the same information source, News, daily at 6:00 a.m. Conversely, if one wants to use different crawler Properties for different Web sites, then separate crawlers may be created to index the Web sites.
[0045] The crawl server shall be running in order for the crawlers to execute. If the crawl server is shut down, then all crawlers that are in progress will stop and crawlers scheduled in the future will not execute. Crawlers that are run interactively do not interfere with crawlers that are running based on a schedule. Hence, it is possible (though not useful) to run a crawler interactively while it is executing based on its schedule. The crawl server <b>250</b> can index sites that are accessible through proxy server or sites that require authentication. The crawl server <b>250</b> may include more than one crawler. The document references and other metadata identified by a crawler are stored in information sources. Each crawler can be configured with certain parameters to control which documents to index into information sources.
[0046] The search server <b>245</b> manages full text searching of documents that have been indexed into information sources by the crawl server <b>250</b>. In one embodiment, the search server uses a proprietary search engine which is commercially available. The search server <b>245</b> may be configured to perform searches constructed by a user on an ad-hoc basis or to perform searches on a predefined schedule. These search results, particularly those of scheduled predefined searches, may be presented to the user on his or her personalized portal page or though portal objects.
[0047] More than one information source may be configured in the portal. If there is a reasonable partitioning of the data on the repository <b>235</b>, it may be desirable to maintain multiple information sources corresponding to each of these partitions. Indexing documents into separate information sources can help users <b>100</b> narrow searches to a particular information source to get more precise results. When structuring a search, choosing to use only information sources that contain useful information can eliminate extraneous documents. The best number of information sources to be searched will depend on how much precision and flexibility the user wants in constructing his searches. Too many information sources will clutter the interface and may lead a user to simply select all information sources, negating the purpose of having separated them. An administrator can set information sources to remove old documents after a specified amount of time, or move them into a different information source. The portal system <b>120</b> provides channels through which data can be dynamically provided to the user's personal portal pages or dashboards. The portal system <b>120</b> allows a user <b>100</b> to organize content from the search server's information sources and the repository <b>235</b> in channels. A channel is a vehicle for organizing search results. A user can create and maintain channels for private use. For example, a user might search the company intranet and the Internet about the fishing industry in the Pacific Rim, then create a private channel called Fishing: Pacific Rim that will contain the query options specified in the search. Fishing: Pacific Rim will then appear on the left frame of this user's Personal tab and each time the user clicks on Pacific Rim, the web client runs the search and surfaces the results for that channel. Should the user <b>100</b> want to, she can retrain the channel to surface only results about fishing in Vietnam and call the retrained channel Fishing: Vietnam. Users <b>100</b> with write permissions to a category can publish a channel that will reside in that category. Users <b>100</b> must have read permissions to the channels they are publishing. For example, a user <b>100</b> who is a sales manager can publish an HR Forms channel in a sales category to which she has write permission.
[0048] The Properties of the Portal System
[0049] The characteristics and settings of the portal system <b>120</b> are defined by using Properties. Properties describe the characteristics and parameters of the service agents, jobs, schedules, and objects stored in the repository <b>235</b>. The properties associated with each of these items are stored in a Relational Database. The Relational Database is administered by a Relational Database Management System (RDBMS). The properties associated with the different aspects of the portal system <b>120</b> are described below.
[0050] An executable program and its associated files stored in the repository <b>235</b> are known as a job. A typical example of a job is any kind report program, including SQR programs and other report applications. A job includes all of the information needed by a properly configured job server <b>230</b> to execute a specific report or program. There are two kinds of jobs which may be processed by the portal system <b>120</b>: SQR jobs and non-SQR jobs. An SQR job is a report or program that is written in Structured Query Language along with its associated files. A non-SQR job uses an application other than SQR such as Brio.Report™. Such a job comprises the report or program to be executed (for example, an Oracle report or a Crystal report), the script, batch file, or executable used to run the report or program, and any associated files (for example, GIF files, Include files, and so on). An SQR job may be either secure or nonsecure. A SQR program is secure if it uses the SECURITY command.
[0051]FIG. 4 depicts the hierarchical arrangement of the properties associated with a job. The properties associated with each job are stored in a relational database including the following groups: General Properties <b>400</b>, Advanced Properties <b>405</b>, Associated Object <b>410</b>, ASK Properties <b>415</b>, INPUT Properties <b>420</b>, Output Properties <b>425</b>, Format Properties <b>430</b>, Options Properties <b>435</b>, and Associated Forms <b>440</b>. The General Properties <b>400</b> associated with a job include the name of the job, a brief description of what the job does, a user <b>100</b> who is identified as the owner of the job, an expiration date for the job, an auto-delete flag, the group to which the job has been assigned, and the keywords associated with the job. The user <b>100</b> that is identified as the owner of the job will generally have full permissions to edit and delete the job. The expiration date property is used to automatically delete the job after a specified period of time. The group property gives members of the assigned group permissions to access or modify the job. The keywords are used to make the job easier to find by a user <b>100</b> using the search feature of the portal.
[0052] The Advanced Properties <b>405</b> associated with a job include the MIME type, the security mode flag, the rating of the job, a browsable flag, an exception flag, a background mode flag, a prompt-for-database-login flag, and permissions. The MIME type property indicates which program is used to open the job. The security mode flag indicates whether the job has been configured as a secure SQR job. The rating indicates whether the priority of the job output is Normal or High. The browsable flag indicates whether a user <b>100</b> can see the job by using the browser user interface. The exception flag indicates whether the job can report Exceptions. Exceptions are conditions that appear in the output of a job that require some intervention or threshold to monitor. Users <b>100</b> have the option to subscribe to an exception associated with a job. If a user <b>100</b> subscribes to an exception, then he/she will be notified, by e-mail or the exceptions dashboard, when an exception occurs during the processing of the job. The background mode flag indicates that the job is to be executed in the background, thus allowing a user <b>100</b> to perform other tasks while waiting for the job to complete. The prompt-for-database-login flag indicates that the user <b>100</b> will be prompted for a back-end database username and password when the job is executed. Lastly, the permissions indicate the kind of access to be given to the owner, the assigned group, or any other user <b>100</b>.
[0053] The Associated Objects properties <b>410</b> identify a list of objects or files which are needed by the job to be executed correctly. The Associated Objects include files required by the job at compile time, files required by the job at run time, and files required by the job when generating report output formats.
[0054] The ASK Properties <b>415</b> are used only for SQR jobs. These properties are used to prompt a user <b>100</b> to provide input at the time that a job is compiled. The ASK Properties can be provided to the job in several different ways: user input, command-line arguments, or entries in an associated ASK file. An ASK property may include either static parameters or dynamic parameters. With a static parameter, the web client form contains a blank field where the user either types in a value or accepts the default. With a dynamic parameter, the web client form contains a drop-down list of values obtained from the back-end database. The user <b>100</b> chooses one of these values by using the browser program. Each ASK property will have several fields <b>445</b> including a prompt to be provided to the user, the default value of the input parameter, the name of a table to be used for a dynamic parameter, and a column name.
[0055] The INPUT Properties <b>420</b> are used to provide input to a job when it is executed. An INPUT property may include text-field parameters, static-choice parameters or dynamic-choice parameters. For text-field parameters, the web client form presents a text entry field with a default value. The user <b>100</b> may either type in a new value or accept the default entry. For a static-choice parameter, the web client form presents, at the time of job execution, a drop-down list, or a group of radio buttons showing a selection of values that has been assigned by the owner of the job. For a dynamic-choice parameter, the web client form presents, at the time of job execution, a drop-down list, or a group of radio buttons showing a selection of values obtained from the back-end database. The user <b>100</b> chooses one of these values at the time of job execution by using the browser program. Each INPUT property will have several fields <b>450</b> including a prompt to be provided to the user, the type of input to be provided, and the default value of the input parameter.
[0056] The Output Properties <b>425</b> define the parameters which are to be associated with the output files generated by a job. Some of these parameters include an output-file displayable flag, an auto-delete flag, a propagate permissions flag, and permissions. The output-file displayable flag indicates whether the web client can display the content of an HTML output file instead of merely display a link to it. The auto-delete flag indicates whether the output file is to be automatically deleted after a predetermined period of time. The propagate permissions flag indicates whether the same permissions set for the job should be assigned to the output file. The permissions define the ability of certain users to access, edit or delete the output file.
[0057] The Format Properties <b>430</b> define the format for the SQR job output. Format options include Hewlett Packard laser jet printer (.hp), line printer (.lp), postscript (.ps), comma-separated value (.csv), Adobe Acrobat (.pdf), and Brio.Query™ data (.bqd). HTML output is always generated. If the job is a secure SQR job, then only HTML output type is available.
[0058] The Options Properties <b>435</b> define run-time parameters associated with a job. The options properties <b>435</b> include the username and password needed to run the job, the command-line flags for the job, the application needed to run the job, and a compile flag indicating whether the job is to be compiled immediately or at a later time.
[0059] The Form Properties <b>440</b> define the Forms which are used during run-time to collect input for the job. A form can consist of a simple HTML page that contains a form, or it can be a complex HTML page that invokes JavaScript or an applet. The form can also be a customized Web-based parameter collection form that has been developed by the enterprise for use in its jobs. When a form has been associated with a particular job, the form is stored in the repository <b>235</b>. A user <b>100</b> can assign a form from the file system, or one that is already in the repository. Alternatively, a user <b>100</b> can choose to have the web client automatically generate a default Form. The form properties <b>440</b> include an HTML Parameter Collection Form, a list of Files Required by the HTML Form, a Show Parameter List when Running the job flag, and a Save As My Defaults flag. The HTML Parameter Collection Form describes the name of the form to be assigned to a particular job. The list of Files Required by the HTML Form describes the supporting files, such as GIF images, used by the form for data collection. The Show Parameter List when Running the job flag is used to enable a drop-down list of existing parameter lists when the user <b>100</b> is preparing to execute the job. The Save As My Defaults flag is used to indicate that a checkbox should be provided to the user <b>100</b> when the job executes asking him/her if the input settings should be saved as default values.
[0060]FIG. 5 illustrates the properties associated with a schedule stored in the event server. Jobs that are created in the portal system <b>120</b> can be set up to run on a predetermined schedule. To schedule a job, it must be associated with a Time Event <b>505</b>, a Parameter List <b>515</b>, and a Schedule <b>500</b>. Time events <b>505</b> define the timetable for running a job. Because time events are not necessarily associated with a particular job, a user <b>100</b> can utilize each time event <b>505</b> to schedule multiple jobs. Typically, several standard time events <b>505</b> will be present in the portal system <b>120</b>. This allows a user <b>100</b> to select a time event <b>505</b> which best matches his needs. Each time event <b>505</b> will have several properties <b>515</b> associated with it including a brief description, a creation date, an owner, a group, permissions, a start date and time, and a repeat interval. Parameter lists <b>510</b> define the compile-time and run-time values necessary to execute a job. Each Parameter List <b>510</b> will have several properties <b>520</b> associated with it including: a parameter list name, a brief description, a job name, ASK Properties <b>415</b>, INPUT Properties <b>420</b>, an assigned owner and group, and permissions. Many of these properties are interrelated to the job properties illustrated in FIG. 4 and previously discussed.
[0061]FIG. 6 illustrates some of the common properties associated service agents in the portal system <b>120</b>. In FIG. 6, a list of installed service agents <b>600</b> is maintained in the Relational Database in the portal system <b>120</b>. Several properties are associated with each of the installed service agents, including the Name of the service agent <b>605</b>, the Type of the service agent <b>610</b>, the Host where the service agent resides <b>615</b>, the Database Type <b>620</b> associated with service agent, and the Database Server <b>625</b> associated with the service agent. As seen in FIG. 6, a list of the different service agent types <b>630</b> is maintained in the Relational Database in the portal system <b>120</b>. Thus, when a service agent is installed on the portal system <b>120</b>, the administrator must add a new service agent type or select from the list of available service agent Types <b>630</b>. Also depicted in FIG. 6 is a list of the available service agent Hosts <b>635</b> which are resident on the portal system <b>120</b>. Again, when a new service agent is installed on the portal system <b>120</b>, the administrator must add a new service agent Host or select from the list of available service agent Hosts <b>635</b>. More than one service agent type can be installed on a particular service agent host. For example, an authentication server <b>220</b> and a name server <b>225</b> may both be installed the same host computer. FIG. 6 also illustrates that each service agent will be assigned a Database Type <b>620</b> and a Database Server <b>625</b>. A list of the available service agent Types <b>640</b> and Database Server Types <b>645</b> are maintained in the Relational Database in the portal system <b>120</b>. Generally, only one Database Type <b>620</b> will be associated with a Database Server <b>625</b>.
[0062]FIGS. 7 and 8 depict some of the properties associated with the specific service agents of the portal system <b>120</b>. Each repository <b>235</b> is assigned certain properties <b>700</b> including a name, a host, a database type, and a database server. Each authentication server <b>220</b> is also be assigned certain properties <b>705</b> including a name, a host, a database type, a database server, a list of supported capabilities <b>710</b>, and a table of drivers <b>715</b>. The capabilities <b>710</b> define whether the authentication server <b>220</b> may be used to create and modify users and groups for the portal system <b>120</b>. The table of drivers <b>715</b> defines the authentication drivers which may be utilized to authenticate users such as LDAP.
[0063] Each job server <b>230</b> is assigned certain properties which are illustrated in FIG. 7. As with all other service agents, each job server <b>230</b> is assigned a name, host, database type, and database sever. In addition, each job server <b>230</b> is also assigned an Application <b>720</b>, a Program <b>725</b>, a job server Class <b>730</b>, and a SQR Server <b>735</b> if the job server will be used for SQL jobs. The Application <b>720</b> is typically a third-party vendor application designed to run in the background. Application examples include Brio Technologies SQR, Oracle Reports, or public domain application shells such as PERL. A Program <b>725</b> is typically a source used to drive a specific invocation of an application. For example, a user <b>100</b> might submit an SQR program that generates a sales report to an SQR application on a given host through a job server <b>230</b>. The Job Server Class <b>730</b> property identifies what kind of job server is installed and the SQR Server <b>735</b> defines what kind of SQR Server is installed (i.e. SQR V4.3 for Sun/Solaris/ORACLE). Each of the Application <b>720</b>, Program <b>725</b>, job server <b>730</b> and SQR Server <b>735</b> properties will have certain sub-properties assigned as well.
[0064] The search server <b>245</b> is assigned certain properties which are illustrated in FIG. 8. As with all other service agents, the search server <b>245</b> is assigned a name, host, database type, and database server. In addition, each job server <b>230</b> is also assigned Search Engine Properties <b>800</b> and Information Sources <b>805</b>. The Search Engine Properties <b>800</b> describe the operating parameters for the search engine, including a Query Port value, an Index Port value, a Language, an Index Hyphenated Words flag, and Hyphen Character. The Query Port value identifies that port which will handle simultaneous queries form a user. The Index Port value identifies the port which receives indexing requests from the crawl server. The Language specifies the language in which month names and abbreviations of month names appear. The Index Hyphenated Words flag indicates whether the Search Engine indexes a hyphenated word as well as individual words. The Information Sources properties <b>805</b> describe the names and properties of each Information Source that has been indexed by the crawl server. Some of the properties include a Name, a Description, a Number of Documents which may be stored in the Information Source, an Expiration Date, and an Expiration Action for the Information Source.
[0065] Each channel is assigned certain properties which are illustrated in FIG. 8.
[0066] Some of these properties include a set of General Properties <b>810</b>, Advanced Properties <b>815</b>, Query Properties <b>820</b>, and Information Sources <b>825</b>. The General Properties <b>810</b> define the name of the channel, a brief description, the owner and group of the channel, and the expiration date of the channel. The Advanced Properties <b>815</b> for each channel include a Browsable flag and Permissions. The Browsable flag indicates whether the channel is visible to the user <b>100</b> using the Browser interface. The Query Properties <b>820</b> define the query to be provided by the channel to the search server. These properties include the Query Phrase, the minimum relevancy for the search, the document types to be identified, a test to determine if the query had been modified in the past, a test to determine if any exception items are present, a test to determine if any high priority documents are present, and a delete training history flag. Also included are settings determining how search results should be sorted (i.e. by relevancy or last-modified date) and a display document summary flag. The Information Sources <b>825</b> associated with a channel define which information sources which will be searched when a particular channel is executed.
[0067]FIG. 9 depicts certain properties that are assigned to each crawler in the crawl server <b>250</b>. These properties include General Properties <b>900</b>, Schedule Properties <b>905</b>, Limits <b>910</b>, Directory Properties <b>915</b>, Web Pages Properties <b>920</b>, Proxy Properties <b>925</b>, Authentication Properties <b>930</b>, Cookies Properties <b>935</b>, Protocol Properties <b>940</b>, Date Format Properties <b>945</b>, Text File Properties <b>950</b>, and Status Properties <b>955</b>. Each of these sets of properties is described below.
[0068] The General Properties <b>900</b> define the basic parameters to be used by each crawler in conducting its search. Included in these parameters are the name of the crawler the information sources to be searched by the crawler, a list of the URLs to crawl, a flag indicating whether the URLs are case sensitive, and a flag indicating whether the crawler should follow links to other sites.
[0069] The Schedule Properties <b>905</b> are used to define the schedule on which the crawler operates. Included within the Schedule Properties <b>905</b> are a schedule (as disclosed in FIG. 5, a start time, and a repeat interval.
[0070] The Limits <b>910</b> are used to prevent the crawler from infinitely indexing sites which have deep links. Some of the limits which may be defined for a crawler include a maximum depth which specifies how many levels of links a crawler may follow, a site duration which defines the number of hours a crawler should spend on any given site, a page delay which defines the number of seconds the crawler should wait after downloading a page before moving to the next link of set of links, and a page timeout which defines the number of seconds that the crawler will wait to receive data after requesting a page.
[0071] The Directory Properties <b>915</b> provide an Allowed field and a Disallowed field. The allowed field defines a set of strings that must exist in a URL object for that object to be indexed. The disallowed field defines a set of strings that must not be in the URL object in order for the object to be indexed these fields may be used to greatly limit the number of sites which are indexed in an information source.
[0072] Web Pages Properties <b>920</b> are used to exclude HTML and text files from being indexed in an information source based upon the content of the document and/or header. Using these properties, a user can specify those strings that must exist and/or those strings that must not exist. If either of these constraints, the HTML document will not be indexed. For example, if a user does not want any HTML or text files to be indexed that contain the phrase “living abroad,” the term “living abroad” is added as a Cannot Have Text string. Or, if a user desires to index only all the HTML or text files that contain the phrase “electronic filing,” then the term “electronic filing” would be added as a Must Have Text string. HTML or text files must meet both constraints in order to be indexed in an information source. If a document meets both the must have constraint and the can't have constraint, then the can't have constraint takes precedence and the document will not be indexed. Accordingly, the web pages properties will include two fields: a Must Have Text field and a Cannot Have Text field. Other parameters may also be set to look for these strings in the headers or content only.
[0073] Proxy Properties <b>925</b> are used to define the proxy parameters if the portal is connected to the Internet through a proxy server. The Proxy Properties <b>925</b> include the host address of the proxy server, the port on which the proxy server listens, and the user name and password for connecting to the proxy server.
[0074] The Authentication Properties <b>930</b> define how the crawler is to log into websites that require a login. Three different types of login authentication methods are available: HTTP authentication, forms-based authentication, and cookie-based authentication. Sites that display a dialog window requesting a user name and password are generally using http authentication. A user name and password usually have to be provided so that the crawler can log into the website. Sites that have a page containing a login form are usually forms-based authentication. These are fairly difficult to configure because there are many entries that can be defined on the form. Additional login information may need to be specified in the cookie tab. Accordingly, the Authentication Properties <b>930</b> will indicate which authentication protocol should be used for a site as well as user names and passwords necessary for logging in.
[0075] Cookies Properties <b>935</b> are used to specify additional login information as well as cookies that should be sent to a webserver. The additional login information allows the crawler to log into a site in which a form requires more than just a user name and password. For example, if the form has an input field that specifies a users age, then age can be specified as additional login information. Therefore, the field's name and value should be added to the cookie as additional login information. Often a form-based login will result in a cookie being submitted to a user's browser interface. The cookie contains information about the user's login parameters insuring that the user and only that user see the content on that website. The cookies properties <b>935</b> allows cookie-based login, or cookie spoofing. Using this method, a crawler can sometimes leap frog the login process all together and insure that the crawler appears logged in as soon as it arrives at the site. Once the names and values of the cookies have been determined, they may be added to the cookies page of the crawler, thus allowing the crawler to login when it starts. Of course, if the cookie expires then cookie-based authentication will work for only the duration that the cookie is valid.
[0076] The Protocol Properties <b>940</b> allow an administrator to specify the HTTP protocol version as either 1.1 or 1.0. An administrator is also allowed to specify whether secure sockets layer (SSL) is to be used in retrieving “https://” URLs.
[0077] The Date Format Properties <b>945</b> define the specific date format and language to use when displaying search results with the web client. Some of the date formats which may be utilized are listed below in table 1. <tables id="TABLE-US-00001" num="1"><table frame="none" colsep="0" rowsep="0"><tgroup align="left" colsep="0" rowsep="0" cols="2"><colspec colname="OFFSET" colwidth="28PT" align="left" /><colspec colname="1" colwidth="189PT" align="left" /><thead><row><entry /><entry namest="OFFSET" nameend="1" align="center">TABLE 1</entry></row><row><entry /><entry /></row><row><entry /><entry namest="OFFSET" nameend="1" align="center" rowsep="1" /></row></thead><tbody valign="top"><row><entry /><entry>YYYY-Year as 4 digits; 1999, 2000</entry></row><row><entry /><entry>MM-Month as a numeric two digit number; 01, 12</entry></row><row><entry /><entry>SHORTMONTH-Abbreviation for the month; Jan, Sep</entry></row><row><entry /><entry>LONGMONTH-Long month format; January, September</entry></row><row><entry /><entry>DD-Day as a two-digit number; 08, 31</entry></row><row><entry /><entry>D+-Day as either a one or two digit number; 8, 31</entry></row><row><entry /><entry>HH-Hour as a two-digit number; 01, 10</entry></row><row><entry /><entry>H-Hour as either a one- or two-digit number; 1, 10</entry></row><row><entry /><entry>NN-Minute as a two-digit number</entry></row><row><entry /><entry>N+-Minute as either a one- or two-digit number</entry></row><row><entry /><entry>SS-Second as a two-digit number</entry></row><row><entry /><entry>S+-Second as either a one- or two-digit number</entry></row><row><entry /><entry>ZZZ-Time Zone; GMT, EST, PST</entry></row><row><entry /><entry namest="OFFSET" nameend="1" align="center" rowsep="1" /></row></tbody></tgroup></table></tables>
[0078] The Text File Properties <b>950</b> specify what extensions to treat as text files; for example, TXT, CSV, XML, and so on. Entering these extensions in the text file properties screen means that if the crawler finds a file with one of these extensions, it will treat the extension as a text file. MS and PDF files will automatically be treated as text files.
[0079] The Status Properties <b>955</b> displays information on how the crawler is currently performing. Some of the parameters identified as status properties include the number of seconds that the crawler has been running since the start of the current run, the number of pages that the crawler has downloaded since the start of the current run, the number of URLs that return error <b>404</b>, and the number of pages that the crawler does not have authorization to access. The Status Properties <b>955</b> allow an administrator to display the status of the last run, to put the crawler on hold, and to test the crawler. The scheduled crawler state provides the crawler statistics regarding the last time that the crawler executed based on its schedule. If the crawler is currently executing, these statistics will be displayed. It does not provide statistics when the crawler was executed interactively. When a crawler is placed on hold, the crawler will not be allowed to execute based on its schedule. However, the hold will not affect the ability to run the crawler interactively. A crawler should be tested after creating it to verify it behaves as desired. By checking the logging information, and administrator or user <b>100</b> can see what documents are being downloaded and discarded. When testing a crawler, the documents are not indexed into information sources.
[0080] The Portal Page
[0081]FIG. 10 depicts a representative example of a portal page <b>1000</b> as seen from a user's browser program. A portal page <b>1000</b> is a customized web page that presents data from the portal system <b>120</b> that is most relevant to a particular user. A portal page <b>1000</b> is a user's primary interface to the data, reports and jobs that are resident in the portal system <b>120</b>. Each of the sets of data that are presented to a user at the portal page <b>1000</b> is called a portal object. A portal page <b>1000</b> presents portal objects to a user <b>100</b> in a format that is readable by a standard browser program. The user's default portal page <b>1000</b> is the first page he sees after logging into the portal system <b>120</b>. The first time a user logs into the portal system <b>120</b>, a portal page <b>1000</b> is automatically generated. Thereafter, a user <b>100</b> can modify his respective copies of the portal page <b>1000</b>, and can create additional ones. Users can modify the content, layout, and colors of any of their portal pages <b>1000</b>, as well as changing which portal page <b>1000</b> is the default page (the one that displays at the beginning of a portal session). Users to whom permission is granted can publish their own portal pages for others to copy. Users can add additional components to any of their portal pages <b>1000</b>, or remove optional components. In addition to using pre-configured content provided by the administrator, a user can create and include on his portal page <b>1000</b> other content of interest to him, such as bookmarks, channels, and job output files displayed as portal objects.
[0082] In FIG. 10, the portal objects are generally arranged in three columns. The left-most column <b>1001</b> is entitled “Personal” and contains a set of links which may be selected by the user with the browser program. These links allow the user to access certain “favorite” and “my” objects which have been previously defined. The middle column <b>1002</b> includes four tabs at the top entitled “personalize,” “content,” “layout,” and “edit.” These tabs are used to customize the appearance of the user's personal portal page. Below these tabs are four portal objects entitled Broadcast Messages <b>1005</b>, Company Billboard <b>1010</b>, My Bookmarks <b>1015</b>, and the Exceptions Dashboard <b>1020</b>. The right-most column <b>1003</b> includes one display window <b>1025</b>, and another portal object entitled E-commerce Top Stories <b>1030</b>. Each of these portal objects is described below.
[0083] In FIG. 10, the Broadcast Messages portal object <b>1005</b> is configured as a mandatory portal object. Thus, it cannot be modified or removed by a user <b>100</b>. Accordingly, the Broadcast Message portal object in FIG. 10 does not include an “X” icon <b>1008</b> in the upper right hand corner which would allow a user to delete this portal object from their portal page <b>1000</b>. Beneath the Broadcast Message portal object <b>1005</b>, it the Company Billboard portal object <b>1010</b>. The Company Billboard portal object <b>1010</b> is a preconfigured category which includes a list of links which may be accessed, but not edited by the user <b>100</b>. By clicking on one of these links, a corresponding object will be displayed in the display window <b>1025</b> on the right-hand side of the portal page <b>1000</b>. In the example of FIG. 10, the Personal Dashboard link in the Broadcast Messages category <b>1005</b> has been selected by a user; thus causing the Personal Dashboard portal object to be displayed in the display window <b>1025</b> of the portal page <b>1000</b>. Because the Company Billboard <b>1010</b> has been set up as a preconfigured category, a user <b>100</b> cannot edit the links which are listed in this window. A user <b>100</b> does have the option of removing this portal object from his personalized portal page by selecting the “X” icon <b>1008</b> in the upper right hand corner of the Company Billboard portal object.
[0084] Below the Company Billboard <b>1010</b> is the My Bookmarks portal object <b>1015</b>.
[0085] The My Bookmarks portal object <b>1015</b> is set up as a standard component which means that a user <b>100</b> has the ability to modify this portal object to include the content that he desires. Within the My Bookmarks object are links to other objects within the repository <b>235</b> or to other sites on the Internet which the user <b>100</b> deems to be relevant. New bookmarks may be added to this category by the user <b>100</b> by pressing the “New Bookmark” link at the bottom of the My Bookmarks portal object <b>1010</b>. In addition, a user <b>100</b> can edit the bookmarks residing in this portal object by pressing the “Edit” button located at the top right-hand corner of the My Bookmarks portal object <b>1010</b>. Pressing the “Edit” button in the My Bookmarks portal object will cause an interactive form to be displayed in the display window <b>1025</b>, thus allowing the user <b>100</b> to edit the content of the portal object. A user can also delete the My Bookmarks window from the personalized portal page <b>1000</b> by selecting the “X” icon <b>1008</b> in the upper right hand corner of window.
[0086] The last window displayed in the middle column of the portal page <b>1000</b> is the Exceptions Dashboard <b>1020</b>. The exceptions dashboard <b>1020</b> is set up as a standard component which may be edited and configured by a user. The exception dashboard <b>1020</b> is used to indicate when an exception condition has been found in a particular job processed in the portal system <b>120</b>. An exception condition is tied to the results of a job executed within the portal system <b>120</b>. Only certain jobs within the portal system <b>120</b> can be configured to indicate an exception condition. In addition, a user <b>100</b> is required to subscribe to an exception associated with a job before he can be notified of the exception condition via his portal page <b>1000</b>. The exception dashboard window <b>1020</b> can be configured by a user to display an indicator when an exception condition is met by a particular job that was processed by the portal system <b>120</b>. In FIG. 10, the exception dashboard is configured to display a traffic light which is green when no exceptions are present and red when an exception condition was indicated by a job.
[0087] The right-most column of the portal page <b>1000</b> of FIG. 10 includes a display window <b>1025</b> and another portal object entitled E-commerce Top Stories <b>1030</b>. The display window <b>1025</b> is used to display the objects and reports requested by a user <b>100</b> during a session. Generally, the requested objects must be in a format that is capable of being read by a browser program in order to be displayed in a the display window <b>1025</b>. In FIG. 10, the personal dashboard portal object is being displayed in the display window <b>1025</b>.
[0088] The portal object illustrated at the bottom of the right-most column <b>1003</b> of the portal page <b>1000</b> is a syndicated content portal entitled E-commerce Top Stories <b>1030</b>. A syndicated content portal object is used to present dynamically updated content provided by a third party. Third party content could include information such as a news-wire, a stock quote service, or a sports score reporting service. In FIG. 10, the third party content that is provided in this window is a news-wire service related to E-commerce stories.
[0089] The personal dashboard is an object that can be personalized and configured by a user to display a variety of objects from the portal system <b>120</b> as well as content obtained from the Internet. For example, in FIG. 10, the user <b>100</b> has configured his personal dashboard to display two image bookmarks: the “Just-In-Time Sales Report” <b>1035</b> and the “Operations Dashboard” <b>1040</b>, a chart entitled “Sales by Product Analysis” <b>1045</b>, a set of current weather information <b>1050</b>, and a continuously updating banner describing other information <b>1060</b>. The two image bookmarks are links to other objects which may be displayed in the display window <b>1025</b>. Thus, by clicking on either of these icons, a corresponding object would then be displayed in the display window <b>1025</b>. The “Sales by Product Analysis” chart <b>1045</b> is a dynamically updated portal object that displays the results of a job that was recently executed by the portal. Every time that the corresponding job is executed, an output file would be generated which would then be displayed on the user's personal dashboard. Thus, by merely displaying the personal dashboard, a user may view an image of the most recent sales by product analysis, or any other job report. This portal object may also be configured as an image bookmark so that a larger image of the graph will be displayed by clicking through. The set of current weather information <b>1050</b> indicates that the personal dashboard may be configured to display information from the Internet as well as objects from the portal. Lastly, the continuously updating banner describing other information <b>1060</b> illustrates that any data may be configured to be displayed on the personal dashboard as long it is readable by a standard web browser. Thus, the personal dashboard can display a variety of structured and unstructured data in a standardized format.
[0090] The Portal Processes
[0091] The login process for a user can be described by referencing FIG. 2. A user <b>100</b> can be connected to the portal system <b>120</b> by accessing a computer which is connected to the portal's network server <b>105</b>. Initially, the user <b>100</b> sends a request to the network server <b>105</b> for access to the portal system <b>120</b>. The user <b>100</b> is then prompted to provide a username and password for the portal system <b>120</b>. This information is then passed from the web client <b>115</b>, to the service broker <b>125</b> to the authentication server <b>220</b>. At the authentication server, if the user <b>100</b> is identified as a valid user, then a session token is sent to the service broker <b>125</b> which grants the user <b>100</b> access to the portal system <b>120</b> for a period of time. If no activity is detected by the service broker <b>125</b> for a certain period of time, then the user's session is closed and he will be forced to log in again. Information about the user's group affiliation and system permissions are also stored in the authentication server <b>220</b>. Thus, the authentication server <b>220</b> determines what level of access to be given a user <b>100</b> based upon his permissions. For example, a user <b>100</b> may only be given permission to view certain categories or objects in the repository <b>235</b>. All other categories and objects in the repository are off-limits to the user. The service broker <b>215</b> would therefore bar the user from accessing any “off-limits” objects and categories and would only allow him to access permitted areas within the portal system <b>120</b>.
[0092] After a user <b>100</b> logs in to the system, he will first be presented with his personalized portal page <b>1000</b> on his browser software. The process by which this is accomplished is described below. After a session is established at the service broker <b>125</b> of the portal system <b>120</b>, the service broker retrieves a set of metadata corresponding to the user's personal portal page <b>1000</b> from the repository. This metadata indicates which portal objects should also be retrieved from the repository <b>235</b> in order to populate the portal page <b>1000</b>. After all of the portal objects have been retrieved from the repository, they are assembled into a format which can be read by a browser program. After this, the personalized portal page <b>1000</b> is transmitted to the appropriate user <b>100</b> through the network server <b>105</b>. At the user's interface, his browser program will display the personalized portal page <b>1000</b> to the user. The process of assembling a personalized portal page <b>1000</b> is repeated every time a user <b>100</b> refreshes his browser screen. Because each portal page <b>1000</b> is assembled on an ad-hoc basis using the most current versions of the portal objects in the repository <b>235</b>, the data presented on a newly refreshed portal page <b>1000</b> will present the most recent data available in the portal system <b>1000</b>.
[0093] A user <b>100</b> may select jobs to be processed by the portal system <b>120</b> by performing the following steps. First, a user will select a link or object on his personalized portal page <b>1000</b> which corresponds to a job. For example, in FIG. 10, a user <b>100</b> may select the first link in the company billboard portal object <b>1010</b>. Or, a user <b>100</b> may select the “Just-in-Time Sales Report” image bookmark <b>1035</b> in the personal dashboard. Either of these selections will transmit a request to the portal system <b>120</b> to execute a job and return the results to the user <b>100</b>. Referring again to FIG. 2, when the request to execute a job is received by the service broker <b>125</b>, it is first determined if the user has permissions to execute this job. This is done by polling the authentication server <b>220</b> to create a user context for the job. The user context will include the user's username, group information, default category, and default permissions. If the user <b>100</b> is found to have appropriate permissions for the job, then the job will be retrieved from the repository <b>235</b> and sent to the service broker <b>125</b>. The service broker will then dispatch the job (along with the user context) to an appropriate job server <b>230</b> for processing. Generally, the job will be dispatched asynchronously so that the service broker <b>125</b> is freed up to perform other tasks while the job is executing. It should be noted that a job will often include several objects necessary for the execution of the program other than the executable file. These objects may include metadata corresponding to the job, forms objects, and INPUT objects. The job server <b>230</b> uses all of these objects to execute the job request.
[0094] A job may require a fresh set of data to be retrieved from a back-end database <b>200</b>, <b>205</b>, or <b>210</b>. If this is the situation, then the job will be dispatched to a job server <b>230</b> that is connected to an appropriate back-end database. After the data is retrieved from a back-end database, it is processed by the job server <b>230</b> and an output report is prepared. In many instances, the output report will have to be transformed into a format that is appropriate for storage and/or presentation to the user. This process is performed by the job server <b>230</b>. After the output reports have been converted into the appropriate format, then the job server analyzes the job metadata to determine if there are any subscriptions or notifications which need to be fulfilled. The job server <b>230</b> will also test the output report to determine if any exception conditions are present. The job server <b>230</b> will utilize the job metadata to determine if any of the exception conditions have been met. If so, appropriate notifications will be sent to the subscribing users via e-mail or portal object update (such as notification on a dynamic portal object). In addition, the job server <b>230</b> will assign user and group permissions to the output report. These permissions define the users and groups that can access and view the output report. The output report will then be transmitted to the service broker <b>125</b> so that it can be forwarded to the user who requested it. The output report will generally be displayed in the display window <b>1025</b> of the user's personalized portal page. A copy of the output report may also be stored in the repository <b>235</b>.
[0095] Another condition that may be encountered by the job server <b>230</b> during the execution of a job is the requirement of input for the job. In some instances, the input can be provided by an INPUT object associated with the job in the repository (see item <b>420</b> of FIG. 4). In other instances, the input must be provided by the user <b>100</b> as the job executes. In this situation, an ASK form associated with the job will be used to solicit input from the user <b>100</b>. When a job server <b>230</b> requires input, an ASK form will be transmitted to the service broker <b>125</b> by the job server <b>230</b>. The ASK form will then be presented to the user <b>100</b> at the user's browser interface. If a job requires input from a user, and there is no corresponding ASK form, then the portal system <b>120</b> may construct an ad-hoc input form which can be presented to the user. After the user <b>100</b> has made his input selections on the form, the input data is transmitted to the job server <b>230</b> through the service broker <b>125</b>. The input data is then utilized by the job server <b>230</b> to complete the execution of the job.
[0096] Another feature of the portal system is the creation of secure bursted output reports. These output reports contain embedded permission markings which restrict the ability of some users and groups to view some portions of an output report. Thus, when a user with limited permissions views a secure bursted output report, he will see only those sections which he has been given permission to see. The secure bursted output report feature works best when the output report has been bursted into multiple files with each file containing one or more HTML pages. When an output report is created in the job server, each file is tagged with a set of user and group permissions defining the ability of certain users and groups to access all of the HTML pages in the file. A master file containing a plurality of containers is also generated. Each container is used as a reference to one of the bursted files. Thus, by assembling all of the bursted files into the master file, a complete output report may be generated. Accordingly, an output report with multiple containers, each of which having different levels of permissions, yields the most flexibility.
[0097] To retrieve a secure bursted output report from the repository, the user must first have logged into the portal system <b>120</b>. The process of logging into the portal establishes a user context which contains, among other things, the username, user permissions and group information. After a user is logged in, the portal system <b>120</b> uses the following steps to determine which parts of a bursted secure job output to provide to a user. First, when a user requests a secure bursted output report, the normal permission checking is done to determine if the user has the appropriate permissions to read the master output report. If the user does not have appropriate permissions, then an error message is returned to the user and the retrieval process is ended. Second, the repository checks the permissions for each container in the master output report. If the user has appropriate permissions for the container, then the special tags that were assigned to each file when the output was created are checked. If the user name is in the list in the tags or the user is a member of one of the groups listed in the tags, then this container is added to the set of containers to be returned as part of the master output report. If the user does not have appropriate permissions, then the container is not added to the set of containers to return. No errors are returned from this step. The fact that a user cannot see a particular container is not necessarily an error but a function of the way the secure bursted output program operates. After this process is finished and a list of viewable containers in the secure bursted output report is determined, the contents of each approved container are retrieved from the repository and are presented to the user.
[0098] In the event server <b>215</b>, jobs may be associated with certain time events. These time events control when jobs run. Jobs which can be associated with time events include batch jobs that are to be processed in the job servers, searches to be conducted in the knowledge server, or retrieving channels from the repository for processing in the knowledge server. When the event server <b>215</b> starts, it builds an ordered list of time events that are known to the system. The time events are ordered by the next time that they are scheduled to run. Each time event may have one or more jobs scheduled against it. The job information includes data about the job properties and distribution/notification information. The data necessary to build this list is retrieved from the database that contains the event server <b>215</b> metadata. Once the ordered list is generated, the event server <b>215</b> calculates the amount of time until the first time event is scheduled to run and goes to sleep for this amount of time.
[0099] The following steps are performed when the event server <b>215</b> awakens and collects the set of jobs associated with the time event scheduled to run at that time. These actions are performed for each scheduled job. First, the event server <b>215</b> sends a transaction to the repository <b>235</b> to retrieve a job that is to be run. If the job is no longer in the repository <b>235</b>, then the event server <b>235</b> will remove the scheduled job from the event server <b>235</b> metadata and move on to the next scheduled job. Second, the event server <b>235</b> sends a transaction to the authentication server <b>220</b> to get information about the user <b>100</b> that scheduled the job. That information includes the username, group information, default folder and default permissions. This information is used to create a user context. This user context is used when sending the job to the appropriate job server <b>230</b> for execution. The event server <b>235</b> will make it appear that the user <b>100</b> that scheduled the job is the user <b>100</b> that is running the job through the scheduler. Third, the event server <b>235</b> sets the parameter values for the job with the parameter values that were input by the user <b>100</b> when the job was scheduled. This would include both ASK and INPUT values for SQR jobs and input values for generic jobs. Fourth, the event server <b>235</b> sends the job to the service broker <b>125</b>. The service broker <b>125</b> will route the job to an appropriate job server <b>230</b> for execution. The command that is used to send the job to the job server <b>230</b>, via the service broker <b>125</b>, is a command that will cause the job to run asynchronously. The command also contains distribution information that allows the job server <b>230</b> to distribute output reports and send email notifications when the job is completed. When a job runs asynchronously in the job server <b>230</b>, a unique thread is created to run the job and control returns to the event server <b>215</b>. This mechanism allows the event server <b>235</b> to send numerous scheduled jobs to the service broker <b>125</b> for execution without waiting for previous jobs to finish. The event server <b>235</b> supports a user configurable concept called retry processing. If the event server <b>235</b> fails to send the job to the job server <b>230</b>, one of two things happens. If retry processing has been disabled, an error notification will be sent to the email address specified when the job was scheduled. No attempt will be made rerun the job. If retry processing is enabled, then an email will be sent informing the user that the job could not be sent to the job server <b>230</b> and it is being resubmitted. The job is then added to a retry queue so the event server <b>235</b> can try to run it later. Fifth, when control is returned to the event server <b>235</b>, the metadata for the scheduled job is updated to reflect the time it was run and the number of times it has run is incremented.
[0100] Jobs that are placed in the retry queue are retried using the following algorithm. Each job will be retried until they run successfully or until the event server <b>235</b> is stopped. When a job is retried, it follows the five steps outlined above. When a job is first placed in the retry queue it is set to run 10 minutes after the time it is placed in the queue. After each attempt to run the job, if it fails, it is resubmitted to the retry queue with an additional 10-minute wait time added until the next retry. In other words, jobs submitted to the retry queue will be retried first in 10 minutes, then 20 minutes, then 30 minutes, etc. all the wait up to 120 minutes. After the retry period hits 120 minutes it stays there. Thus, if a job that is retried after 120 minutes and fails, it will be retried in another 120 minutes. The 120-minute maximum delay is user configurable.
[0101] When the event server <b>235</b> is first started, a sweeper thread is started that looks through the metadata about time events and scheduled jobs. The sweeper thread looks for scheduled jobs that should have run in the past but didn't. This would include jobs that were queued up or in the retry queue when the event server <b>235</b> was stopped. When such a job is found it is retried using the five steps described above.
[0102] Although the portal system has been described in this specification by way of description, examples and drawings, it should be noted that various changes and modifications may be apparent to those skilled in the art. In particular, many modifications in the structure and operation of the hardware and software may be made in the implementation of the embodiments described above. Any such changes and modifications should be construed as being included within the scope of the inventors' original conception, unless they depart from the scope of the invention as defined by the claims.
Contents5
12 sheets
Sheet 1 Sheet 2 Sheet 3 Sheet 4 Sheet 5 Sheet 6 Sheet 7 Sheet 8 Sheet 9 Sheet 10 Sheet 11 Sheet 12
Every citation, both ways
| Document | Relation | Office | Cited during |
|---|---|---|---|
| US2008282139A1 | Cited by | United States of America | Pre-grant |
| US11017053B2 | Cited by | United States of America | Applicant |
| US2007216698A1 | Cited by | United States of America | Pre-grant |
| US8312054B2 | Cited by | United States of America | Search report |
| US8527540B2 | Cited by | United States of America | Applicant |
| US7770101B2 | Cited by | United States of America | Applicant |
| US2004260817A1 | Cited by | United States of America | Pre-grant |
| US2006174093A1 | Cited by | United States of America | Pre-grant |
| US2009240699A1 | Cited by | United States of America | Pre-grant |
| WO2014134571A1 | Cited by | World Intellectual Property Organization (WIPO) | International search |
| US7206996B2 | Cited by | United States of America | Search report |
| US2012030612A1 | Cited by | United States of America | Pre-grant |
| US2008010249A1 | Cited by | United States of America | Pre-grant |
| US2004243928A1 | Cited by | United States of America | Pre-grant |
| US8046387B2 | Cited by | United States of America | Search report |
| US7636786B2 | Cited by | United States of America | Search report |
| US8751587B2 | Cited by | United States of America | Applicant |
| US2008010341A1 | Cited by | United States of America | Pre-grant |
| US2007130132A1 | Cited by | United States of America | Pre-grant |
| US2007050366A1 | Cited by | United States of America | Pre-grant |
| US2008010615A1 | Cited by | United States of America | Pre-grant |
| US10423708B2 | Cited by | United States of America | Search report |
| US2017126695A1 | Cited by | United States of America | Pre-grant |
| US2008086697A1 | Cited by | United States of America | Pre-grant |
| US8843832B2 | Cited by | United States of America | Search report |
| US2002144009A1 | Cited by | United States of America | Pre-grant |
| US2002194151A1 | Cited by | United States of America | Pre-grant |
| US2005262047A1 | Cited by | United States of America | Pre-grant |
| US2005223081A1 | Cited by | United States of America | Pre-grant |
| US7949937B2 | Cited by | United States of America | Search report |
| US2003126192A1 | Cited by | United States of America | Pre-grant |
| US2004095392A1 | Cited by | United States of America | Pre-grant |
| US8930412B2 | Cited by | United States of America | Search report |
| US2012260316A1 | Cited by | United States of America | Pre-grant |
| US7676542B2 | Cited by | United States of America | Applicant |
| US7401076B2 | Cited by | United States of America | Applicant |
| US7461169B2 | Cited by | United States of America | Search report |
| US2004221259A1 | Cited by | United States of America | Pre-grant |
| US8219900B2 | Cited by | United States of America | Applicant |
| US2006136587A1 | Cited by | United States of America | Pre-grant |
| US2007192414A1 | Cited by | United States of America | Pre-grant |
| US2004205574A1 | Cited by | United States of America | Pre-grant |
| US9053149B2 | Cited by | United States of America | Applicant |
| US2015019526A1 | Cited by | United States of America | Pre-grant |
| US7925979B2 | Cited by | United States of America | Search report |
| US2002184298A1 | Cited by | United States of America | Pre-grant |
| US7660843B1 | Cited by | United States of America | Applicant |
| US7412374B1 | Cited by | United States of America | Applicant |
| US2017185572A1 | Cited by | United States of America | Search report |
| US8490096B2 | Cited by | United States of America | Search report |
| US2009210432A1 | Cited by | United States of America | Pre-grant |
| US9754039B2 | Cited by | United States of America | Search report |
| US2007220035A1 | Cited by | United States of America | Pre-grant |
| US6990498B2 | Cited by | United States of America | Search report |
| US2009077198A1 | Cited by | United States of America | Pre-grant |
| US7814426B2 | Cited by | United States of America | Search report |
| US2015113611A1 | Cited by | United States of America | Pre-grant |
| US2012131683A1 | Cited by | United States of America | Pre-grant |
| US2013151616A1 | Cited by | United States of America | Pre-grant |
| US9060029B2 | Cited by | United States of America | Search report |
| US7788340B2 | Cited by | United States of America | Search report |
| US2012041939A1 | Cited by | United States of America | Pre-grant |
| US2006136588A1 | Cited by | United States of America | Pre-grant |
| US7757235B2 | Cited by | United States of America | Applicant |
| US2005086216A1 | Cited by | United States of America | Pre-grant |
| US2008086716A1 | Cited by | United States of America | Pre-grant |
| US7421648B1 | Cited by | United States of America | Applicant |
| US9760603B2 | Cited by | United States of America | Applicant |
| US7512875B2 | Cited by | United States of America | Applicant |
| US7890639B1 | Cited by | United States of America | Applicant |
| US8839270B2 | Cited by | United States of America | Applicant |
| US7650355B1 | Cited by | United States of America | Applicant |
| US9552431B2 | Cited by | United States of America | Search report |
| US2006005163A1 | Cited by | United States of America | Pre-grant |
| US2003206192A1 | Cited by | United States of America | Pre-grant |
| US2006161672A1 | Cited by | United States of America | Pre-grant |
| US2006212579A1 | Cited by | United States of America | Pre-grant |
| US9060029B2 | Cited by | United States of America | Search report |
| US2008263018A1 | Cited by | United States of America | Pre-grant |
| GB2526996A | Cited by | United Kingdom | Search report |
| US7310677B1 | Cited by | United States of America | Search report |
| US7574712B2 | Cited by | United States of America | Search report |
| US2008294719A1 | Cited by | United States of America | Pre-grant |
| US7921380B2 | Cited by | United States of America | Applicant |
| US8683357B2 | Cited by | United States of America | Applicant |
| US2005022199A1 | Cited by | United States of America | Pre-grant |
| US2008270915A1 | Cited by | United States of America | Pre-grant |
| US2006212580A1 | Cited by | United States of America | Pre-grant |
| WO2005008466A1 | Cited by | World Intellectual Property Organization (WIPO) | International search |
| US2010042709A1 | Cited by | United States of America | Pre-grant |
| EP1934841A4 | Cited by | European Patent Office (EPO) | Search report |
| US2004107404A1 | Cited by | United States of America | Pre-grant |
| US7120928B2 | Cited by | United States of America | Applicant |
| US2006123038A1 | Cited by | United States of America | Pre-grant |
| WO2012071574A2 | Cited by | World Intellectual Property Organization (WIPO) | International search |
| US2011320425A1 | Cited by | United States of America | Pre-grant |
| US2008010609A1 | Cited by | United States of America | Pre-grant |
| US8601492B2 | Cited by | United States of America | Applicant |
| US10650075B2 | Cited by | United States of America | Applicant |
| US2002194502A1 | Cited by | United States of America | Pre-grant |
12 members in 3 offices
Priority claims6
| Document | Office | Kind | Date |
|---|---|---|---|
| 20009000 | United States of America | P | |
| 20009000 | United States of America | P | |
| 84471501 | United States of America | A | |
| 60200090 | – | – | – |
| US20000200090P | – | – | – |
| US20010844715 | – | – | – |
Members12
| Document | Office | Kind | |
|---|---|---|---|
| WO0181829A1 | World Intellectual Property Organization (WIPO) | A1 | |
| AU6108401A | Australia | A | |
| US2002023122A1 | United States of America | A1 | |
| US2002023158A1 | United States of America | A1 | |
| WO0181829A8 | World Intellectual Property Organization (WIPO) | A8 | |
| US2002052954A1 | United States of America | A1 | |
| WO0181829A9 | World Intellectual Property Organization (WIPO) | A9 | |
| US6643661B2 | United States of America | B2 | |
| US6832263B2 | United States of America | B2 | |
| US7266821B2 | United States of America | B2 | |
| US2008034369A1 | United States of America | A1 | |
| US8261271B2 | United States of America | B2 |
56 transactions on the USPTO file
Allowed without a rejection on record.
- Non-final rejections
- 0
- Final rejections
- 0
- RCEs
- 0
- Appeals
- 0
Over time
Point at a mark for the transactionTransactions
| Event | |
|---|---|
| Correspondence Address Change | |
| Change in Power of Attorney (May Include Associate POA) | |
| Correspondence Address Change | |
| Recordation of Patent Grant Mailed | |
| Patent Issue Date Used in PTA CalculationAllowed | |
| Issue Notification MailedAllowed | |
| Receipt into Pubs | |
| Dispatch to FDC | |
| Dispatch to FDC | |
| Application Is Considered Ready for Issue | |
| Issue Fee Payment Verified | |
| Issue Fee Payment Verified | |
| Issue Fee Payment Received | |
| Receipt into Pubs | |
| Receipt into Pubs | |
| Workflow - File Sent to Contractor | |
| Mail Notice of AllowanceAllowed | |
| Mail Examiner's Amendment | |
| Notice of Allowance Data Verification CompletedAllowed | |
| Case Docketed to Examiner in GAU | |
| Examiner's Amendment Communication | |
| Case Docketed to Examiner in GAU | |
| Case Docketed to Examiner in GAU | |
| IFW TSS Processing by Tech Center Complete | |
| Reference capture on IDS | |
| Information Disclosure Statement (IDS) Filed | |
| Information Disclosure Statement (IDS) Filed | |
| Information Disclosure Statement (IDS) Filed | |
| Information Disclosure Statement (IDS) Filed | |
| Case Docketed to Examiner in GAU | |
| Case Docketed to Examiner in GAU | |
| Information Disclosure Statement (IDS) Filed | |
| Information Disclosure Statement (IDS) Filed | |
| Information Disclosure Statement (IDS) Filed | |
| Information Disclosure Statement (IDS) Filed | |
| Information Disclosure Statement (IDS) Filed | |
| Information Disclosure Statement (IDS) Filed | |
| Case Docketed to Examiner in GAU | |
| Application Dispatched from OIPE | |
| Application Is Now Complete | |
| Information Disclosure Statement (IDS) Filed | |
| Information Disclosure Statement (IDS) Filed | |
| Information Disclosure Statement (IDS) Filed | |
| Information Disclosure Statement (IDS) Filed | |
| Preliminary Amendment | |
| Reference capture on IDS | |
| Information Disclosure Statement (IDS) Filed | |
| Information Disclosure Statement (IDS) Filed | |
| Preliminary Amendment | |
| Preliminary Amendment | |
| Information Disclosure Statement (IDS) Filed | |
| Information Disclosure Statement (IDS) Filed | |
| Notice Mailed--Application Incomplete--Filing Date Assigned | |
| Correspondence Address Change | |
| IFW Scan & PACR Auto Security Review | |
| Initial Exam Team nn |
9 legal events, as the office reported them to INPADOC
Over the term
Point at a mark for the eventEvents
| Event | Code | |
|---|---|---|
| Fee paymentFPAY | FPAY | |
| Fee paymentFPAY | FPAY | |
| AssignmentAS | AS | |
| AssignmentAS | AS | |
| Fee paymentFPAY | FPAY | |
| Information on status: patent grantGrantedPATENTED CASESTCF | STCF | |
| AssignmentAS | AS | |
| AssignmentAS | AS | |
| AssignmentAS | AS |
Numbers
- Publication, DOCDB
- 2002052954
- Publication, EPODOC
- US2002052954
- Application
- 9844715
- Application, DOCDB
- 84471501
- Application, EPODOC
- US20010844715
Titles
- English
- Method and apparatus for implementing a dynamically updated portal page in an enterprise-wide computer system
Patent term adjustment
- A delay
- +783 daysthe office missed an examination deadline
- Applicant delay
- −52 days
- Net adjustment
- 731 days
Classification
- CPC, 10
- G06F17/30893
- G06F16/954
- G06F16/958
- G06F17/30873
- G06F16/972
- G06F17/3089
- Y10S707/955
- Y10S707/959
- Y10S707/99942
- Y10S707/99931
- IPC, 1
- G06F17 30
- USPC, 3
- 709225000
- 707E17111
- 709203000