CROSS-REFERENCES TO RELATED APPLICATIONSThis application claims priority under 35 U.S.C § 119(e) from co-pending U.S. Provisional Application No. 60/182,839, filed on Feb. 16, 2000 by Rodney Bennett, entitled “A Method For Automating The Assembly Of Business Documents, Application Of Business Rule To Business Processes And The Delivery Of Business Documents,” the subject matter of which is fully incorporated herein by reference.[0001]
BACKGROUND OF THE INVENTION1. Field of the Invention[0002]
The present invention relates to systems and methods for acquiring, extracting, modifying and displaying data. The present invention also relates to systems and methods for modular application of processes to extracted or acquired data, and automated transfer and deliver of data. More specifically, the present invention relates to a new system and method automating the assembly, processing and delivery of documents. Still more particularly, the present invention relates to systems and methods with a modular approach to assembly, processing and delivery of documents.[0003]
2. Description of the Background Art[0004]
Many modern day interactions require the generation of responses to requests and the documentation of both the request and the response. For example, in virtually every business, a customer may send in a request for quotation on an item to be purchased, a service to be rendered or the cost of an insurance policy. A customer service representative, such as a salesperson, looks up information in an appropriate manner, formats a response to the customer and sends the response to the customer. Increasingly, the only source for the information requested by a customer, such as a price quotation, is a computer database. In this case, the computer must be searched, the data located, and delivered to the user. One particular problem with existing systems is that the interactions with the computer database by a human user are typically dictated by a programmer has written, and therefore lack flexibility because the program must be completely re-written to change an interaction or process.[0005]
In addition to the basic steps required to merely respond to a customer request for information, there are often a number of additional processes, approvals or other steps that must be performed in responding to such requests. For example, the process of getting base information from the computer system or database are typically supplemented with additional steps to enforce a company's policies, state or federal regulations, or other business rules the programmer has added to the process. For example, many customers receive special discounts based on volume, account payment status, length of relationship or other factors. Similarly, insurance rates may be based on previous losses suffered in insuring the prospective client, location of the client, size of the client, the type of business of the client, etc. Furthermore, many business allow a person quoting prices to a customer a specified amount of leeway in lowering or raising the price in response to their perception of the competitive situation on a quotation, to vary more than this amount may not be possible or require the approval of a supervisor in the management structure within the organization. The problem is further aggravated by the fact that there are thousands of such rules, and that they are constantly being changed due to changes in laws, company policies or other business conditions. Furthermore, the process is most problematic because the application of the rules to the extracted data is done by a person and is not automated.[0006]
A typical prior art procedure for providing documents or information in response to a request includes the following steps: A request is received from a customer for a quotation. A customer service agent looks up the data and applies the business rules to the quotation. The data is formatted for transmission to the customer; this may be done with a word processing system or another computer program. The quotation is printed for mailing or faxing, saved in a computer file for transmission as an email, or as appropriate for the required delivery. In the prior art, most all of these steps are done manually, and the only automated step is the search or look up for information in the database. This scenario has a number of shortcomings. First, the number of request for information that can be made are limited since customer service person must perform a number of the individual steps manually, and transition from moving from working with different systems. Second the business rules may not be applied or may applied or interpreted incorrectly due to human error or oversight.[0007]
One prior art approach to address these problems is creating database applications programs. These database application programs are special purpose computer programs that allow the easy generation of responses and the uniform application of business policies or rules. The business rules are built into the database applications programs. However, these database applications programs are inadequate because every time a business rules changes the program must be modified. This has caused large companies to employ large numbers of programmers whose sole task is the constant re-writing of database application programs in response to changes in the business rules. Second, if the underlying database containing the information changes the program also must be changed. Finally, if technology for delivering the document or response is changed, the program must be changed. Moreover, each change or modification frequently induces unintended side affects in the programs and therefore requires both expensive and extensive testing and re-testing.[0008]
Therefore, there is a need for a system and method for automating the assembly, processing and delivery of documents, in particular, in the context of receiving and responding to customer requests for information.[0009]
SUMMARY OF THE INVENTIONThe present invention overcomes the deficiencies and limitations of the prior art by providing a system for automating the assembly, processing and delivery of documents. In particular, the present invention provides a novel system for acquiring data, for using the acquired data to extract additional data, for using the acquired data to select one or more processes and applying the process to the additional data, and for creating and delivering a document from the processed additional data.[0010]
In one embodiment, the present invention comprises a plurality of transport clients, a work queue, a scheduler, a plurality of rendering objects, a plurality of transport objects and a routing table. The transport clients are each responsible for acquisition of data necessary to generate the response. Each of the transport clients operates on a respective computing device and presents displays to the users, and collects data input by the user to the computing device. The collected data along with other information is used to create a work item. The work items are then sent the master scheduler. The master scheduler is responsible for processing work items and maintaining the work queue for storage of work items until they have been processed. Once a work item is received from a transport client, it is added to the work queue. The scheduler manages the work queue including sending work items to an identified rendering object and thereafter to a transport client. The present invention preferably includes a plurality of rendering objects. Each of the rendering objects includes knowledge of the database as well as processes for extracting information from a database and applying rules on the extracted data. The present invention preferably provides a plurality of such rending objects such that each information request of a given type may have an associated rendering object for responding to the information requests. This structure provides for use of a rendering object for a number of different types of information requests, and greatly simplifies modification of the system when transport clients, the database, the rules or transmission objects are changed. The scheduler assigns work items to be processed by the rendering objects, and once completed, the work items are returned to the scheduler for further processing by a transport object. The scheduler then sends a work item to one of the plurality of transport objects for the final processing. The transport objects are responsible for processing the work item including data returned by the rendering object. The transport object uses the work items to create a document including how the document will appear, and also handles the routing of the document as specified in the information request created by the transport client. The transport object coordinates the delivery of the created document use the transmission means specified. The transport objects work with the routing table for resource allocation, resource availability, local or remote processing, and time of processing.[0011]
The present invention also includes a number of novel methods including: a method for generating and delivering documents in response to an information request; a method for acquiring data; a method for extracting information; a method for applying one or more rules; a method for display and transmission of a document; and a method for processing work items.[0012]
BRIEF DESCRIPTION OF THE DRAWINGSThe invention is illustrated by way of example and not by way of limitation in the figures of the accompanying drawings in which like reference numerals refer to similar elements.[0013]
FIG. 1 is a block diagram of a preferred embodiment of a system in which the present invention operates.[0014]
FIG. 2 is a block diagram of a preferred embodiment of a computing device including the present invention[0015]
FIG. 3 is a block diagram of a preferred embodiment of the memory unit of the apparatus of FIG. 2.[0016]
FIG. 4 is a flow chart of a preferred method for acquiring data from a client-computing device using the first module.[0017]
FIG. 5 is a flow chart of a preferred method for extracting information using the second module.[0018]
FIG. 6 is a flow chart of a preferred method for applying rules to information extracted using the third module.[0019]
FIG. 7 is a flow chart of a preferred method for delivering content using the fourth module and transport objects.[0020]
FIG. 8 is a functional block diagram of a system according to the present invention showing the interaction between the modules.[0021]
FIG. 9 is a flow chart of a preferred method generating responses to information requests in accordance with the present invention[0022]
FIG. 10 is a flow chart of a preferred method for processing information requests according to the present invention for a system having a work queue and a master scheduler.[0023]
FIGS.[0024]11-15 are graphical representations of a display device showing a user interfaces for modifying the operational aspect of the system of the present invention.
DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTSA system and method for automating the assembly, processing and delivery of documents is described. In the following description, for purposes of explanation, numerous specific details are set forth in order to provide a thorough understanding of the invention. It will be apparent, however, to one skilled in the art that the invention can be practiced without these specific details. In other instances, structures and devices are shown in block diagram form in order to avoid obscuring the invention.[0025]
Reference in the specification to “one embodiment” or “an embodiment” means that a particular feature, structure, or characteristic described in connection with the embodiment is included in at least one embodiment of the invention. The appearances of the phrase “in one embodiment” in various places in the specification are not necessarily all referring to the same embodiment.[0026]
Some portions of the detailed description that follows are presented in terms of algorithms and symbolic representations of operations on data bits within a computer memory. These algorithmic descriptions and representations are the means used by those skilled in the data processing arts to most effectively convey the substance of their work to others skilled in the art. An algorithm is here, and generally, conceived to be a self-consistent sequence of steps leading to a desired result. The steps are those requiring physical manipulations of physical quantities. Usually, though not necessarily, these quantities take the form of electrical or magnetic signals capable of being stored, transferred, combined, compared, and otherwise manipulated. It has proven convenient at times, principally for reasons of common usage, to refer to these signals as bits, values, elements, symbols, characters, terms, numbers, or the like.[0027]
It should be borne in mind, however, that all of these and similar terms are to be associated with the appropriate physical quantities and are merely convenient labels applied to these quantities. Unless specifically stated otherwise as apparent from the following discussion, it is appreciated that throughout the description, discussions utilizing terms such as “processing” or “computing” or “calculating” or “determining” or “displaying” or the like, refer to the action and processes of a computer system, or similar electronic computing device, that manipulates and transforms data represented as physical (electronic) quantities within the computer system's registers and memories into other data similarly represented as physical quantities within the computer system memories or registers or other such information storage, transmission or display devices.[0028]
The present invention also relates to apparatus for performing the operations herein. This apparatus may be specially constructed for the required purposes, or it may comprise a general-purpose computer selectively activated or reconfigured by a computer program stored in the computer. Such a computer program may be stored in a computer readable storage medium, such as, but is not limited to, any type of disk including floppy disks optical disks, CD-ROMs, and magnetic-optical disks, read-only memories (ROMs), random access memories (RAMs), EPROMs, EEPROMs, magnetic or optical cards, or any type of media suitable for storing electronic instructions, and each coupled to a computer system bus.[0029]
The algorithms and displays presented herein are not inherently related to any particular computer or other apparatus. Various general-purpose systems may be used with programs in accordance with the teachings herein, or it may prove convenient to construct more specialized apparatus to perform the required method steps. The required structure for a variety of these systems will appear from the description below. In addition, the present invention is not described with reference to any particular programming language. It will be appreciated that a variety of programming languages may be used to implement the teachings of the invention as described herein.[0030]
Moreover, the present invention is claimed below operating on or working in conjunction with an information system. Such an information system as claimed may be the entire information system as detailed below in the preferred embodiment or only portions of such a system. For example, the present invention can operate with an information system that need only be a browser in the simplest sense to input a data using a transport client. Similarly, the present invention could operate on a server that does not include a display device and an input device (keyboard and mouse type controller). Thus the present invention is capable of operating with any information system from those with minimal functionality to those providing all the functionality disclosed herein.[0031]
A. Overview of the “NetTransport”[0032]
The present invention is directed to a novel system for acquiring data, for using the acquired data to extract additional data and apply business rules to produce result data, and for creating and delivering a document including the result data. The present invention includes a unique three-tier structure of transport clients[0033]812, rendering objects808, and transport objects804 (See also FIG. 8). The transport clients812 are each responsible for acquisition of data necessary to generate the response. The rendering objects808 are for extracting information from a database and applying rules on the extracted data. The transport objects804 are responsible for processing the work item including data returned by the rendering object. The interaction of these objects804,808 and clients812 is coordinated by amaster scheduler806 and uses awork queue810 in a novel manner as will be described below.
The present invention for automating the assembly, processing and delivery of documents will now be described in the context of a specific application for receiving a request for a quote on insurance and generating documents that respond to such a request. However, those skilled in the art will recognize that the present invention may be applied in a variety of other contexts where an information request is submitted and a response is provided. Therefore, the description of the present invention in the context of responding to requests for quotes on insurance is only by way of example.[0034]
Having just described an overview of the present invention, the systems and methods used to present the acquire data and prepare a response are described below. First, the system and its components will be described. Second, the various modules and their interaction will be described. Third, methods of operation of the present invention will be described. Finally, an exemplary user interfaces are described.[0035]
B. System[0036]
Referring now to FIG. 1, the context of a net transport system in accordance with the present invention is shown. The preferred embodiment for operation of the present invention is in conjunction with the transmission and retrieval of documents over a computer network such as the Internet. A[0037]simple system100 is shown in FIG. 1 for simplicity and ease of understanding, although those skilled in the art will recognize that the net transport system is responsive to several clients812. The user interacts and communicates using a client-computing device102,104,106,112,114 that include a web browser. The client-computing device102,104,106,112,114 is preferably a personal computer, but may also be a server, a mobile computing device, cellular telephone or any other computing device. The client-computing device102,104,106,112,114 is coupled by a signal line210 such as a modem and telephone line to the Internet206. An exemplary embodiment of asystem100 including a plurality ofcomputing devices102,104,106,112,114 each including the net transport system is shown. Thecomputing devices102,104,106,112,114 are preferably coupled by a communication network ornetwork segment108 and110. FIG. 1 is merely an example, and networks including the net transport system may be configured any number of ways as will be recognized by those skilled in the art.
The[0038]system100 preferably includes one or more communication networks ornetwork segments108 and110. The communication networks ornetwork segments108 and110 may be of any suitable type and communication rate. Thecommunication network108 and110 is preferably the Internet by way of example, but alternatively and thenetwork108 and110 could be a WAN, a LAN, a VPN, an intranet or an extranet. The segments may be separate physically, or separate logical parts of one physical network. The networks may use any topology appropriate (e.g. ring, bus or star; both logical or physically108 and110).
Attached to the[0039]networks108 and110 are a plurality ofcomputing devices102,104,106,112,114. Thecomputing devices102,104,106,112,114 includeworkstations112,114 andservers102,104,106. For example, theservers102 and106 are coupled tocommunication network108 whileservers102, and104, andworkstations112 and114 are coupled to thesecond communication network110. Theservers102,104,106 may also include various other functionality of a conventional type. For example,server102 also operates as a database server;server104 also operates as an e-mail server; andserver106 also operates as facsimile server. In one embodiment,system100 is implemented as a free threaded (MTA) NT service residing on the IIS4.0 web server that services requests. Workstations include a client portion of the service that is implemented as a COM object that talks to the NT service. Each of thecomputing devices102,104,106,112,114 also includes the net transport system as will be described in more detail below with reference to FIGS. 2 and 3.
With the[0040]exemplary system100 shown in FIG. 1, a customer service person onworkstation112 may be running an application program that is a transport client812 to which is supplied the necessary data to fill a request for a customer. Net Transport running on theworkstation112 receives the request and places it in itswork queue810. Themaster scheduler806 onworkstation112 submits the request to the appropriate rendering object808. The rendering object808 executes an inquiry, if necessary, applies business rules, if any, and returns a response for the inquiry. Themaster scheduler806 then submits the rendered response to the appropriate transport object804 running onworkstation112. If the resources available to fill the transport request are local, the transmission takes place locally. If the destination is via email, the transport object804 will send the request to thee-mail server104 also Net Transport. If the resource required is a fax server the request is routed via theserver102 toserver106 to be filled. The user by any other server or workstation by a process that is part of net transport will be subject to any network security that exists. Therefore, if a request originating onworkstation114 does not have a sufficient level of privilege to access certain information on another server, such as thedatabase server102. The request placed in itswork queue810 and specifies theserver102 as the server on which the rendering object808 is to be executed will be held and not executed.
Today, it is well understood by those skilled in the art that multiple computers can be used in the place of a single computer by applying the appropriate software, hardware, and communication protocols. For instance, data used by a computer often resides on a hard disk or other storage device that is located somewhere on the network to which the computer is connected and not within the computer enclosure itself. That data can be accessed using NFS, FTP, HTTP or one of many other remote file access protocols. Additionally, remote procedure calls (RPC) can execute software on remote processors not part of the local computer. In some cases, this remote data or remote procedure operation is transparent to the user of the computer and even to the application itself because the remote operation is executed through the underlying operating system as if it was a local operation.[0041]
It should be apparent to those skilled in the art that although the embodiment described in this invention refers to a single computer with local storage and processor, the data might be stored remotely in a manner that is transparent to the local computer user or the data might explicitly reside in a remote computer accessible over the network. In either case, the functionality of the invention is the same and both embodiments are recognized and considered as possible embodiments of this invention.[0042]
Referring now to FIG. 2, a first embodiment for a client-[0043]computing device102 or112 including the net transport system is shown. The client-computing device102 comprises acontrol unit250 coupled to adisplay device200, akeyboard222, acursor controller223, anetwork controller224 and an I/O device225 by abus201.
[0044]Control unit250 may comprise an arithmetic logic unit, a microprocessor, a general purpose computer, a personal digital assistant or some other information appliance equipped to provide electronic display signals to displaydevice200. In one embodiment,control unit250 comprises a general purpose computer having a graphical user interface, which may be generated by, for example, a program written in Java running on top of an operating system like WINDOWS® or UNIX-based operating systems. In one embodiment, one or more application programs are executed bycontrol unit250 including, without limitation, word processing applications, electronic mail applications, spreadsheet applications, andweb browser applications306. Thecontrol unit250 also has other conventional connections to other systems such as a network for distribution of files (media objects) using standard network protocols such as TCP/IP, http, and SMTP as will be understood to those skilled in the art and shown in detail in FIG. 2.
As shown in FIG. 2A, the[0045]control unit250 includes aprocessor202,main memory204, anddata storage device207, all of which are communicatively coupled tosystem bus201.
[0046]Processor202 processes data signals and may comprise various computing architectures including a complex instruction set computer (CISC) architecture, a reduced instruction set computer (RISC) architecture, or an architecture implementing a combination of instruction sets. Although only a single processor is shown in FIG. 2, multiple processors may be included.
[0047]Main memory204 may store instructions and/or data that may be executed byprocessor202. The instructions and/or data may comprise code for performing any and/or all of the techniques described herein.Main memory204 may be a dynamic random access memory (DRAM) device, a static random access memory (SRAM) device, or some other memory device known in the art. Thememory204 preferably includes a web browser230 of a conventional type that provides access to the Internet and processes HTML, XML or other mark up language to generated images on thedisplay device200. For example, the web browser230 could be Netscape Navigator or Microsoft Internet Explorer.
[0048]Data storage device207 stores data and instructions forprocessor202 and may comprise one or more devices including a hard disk drive, a floppy disk drive, a CD-ROM device, a DVD-ROM device, a DVD-RAM device, a DVD-RW device, a flash memory device, or some other mass storage device known in the art.
[0049]System bus201 represents a shared bus for communicating information and data throughoutcontrol unit250.System bus201 may represent one or more buses including an industry standard architecture (ISA) bus, a peripheral component interconnect (PCI) bus, a universal serial bus (USB), or some other bus known in the art to provide similar functionality.
Additional components coupled to control[0050]unit250 throughsystem bus201 includedisplay device200,keyboard222,cursor control device223,network controller224 and input/output device225.Display device200 represents any device equipped to display electronic images and data as described herein.Display device200 may be a cathode ray tube (CRT), liquid crystal display (LCD), or any other similarly equipped display device, screen, or monitor.
[0051]Keyboard222 represents an alphanumeric input device coupled to controlunit250 to communicate information and command selections toprocessor202.Cursor control223 represents a user input device equipped to communicate positional data as well as command selections toprocessor202.Cursor control223 may include a mouse, a trackball, a stylus, a pen, a touch screen, cursor direction keys, or other mechanisms to cause movement of a cursor.Network controller224links control unit250 to a network that may include multiple processing systems. The network of processing systems may comprise a local area network (LAN), a wide area network (WAN) (e.g., the Internet), and/or any other interconnected data path across which multiple devices may communicate.
One or more I/[0052]O devices225 are coupled to thesystem bus201. For example, the I/O device225 may be an audio device equipped to receive audio input and transmit audio output. Audio input may be received through various devices including a microphone withinaudio device225 andnetwork controller224. Similarly, audio output may originate from variousdevices including processor202 andnetwork controller224. In one embodiment,audio device225 is a general purpose; audio add-in/expansion card designed for use within a general purpose computer system. Optionally,audio device225 may contain one or more analog-to-digital or digital-to-analog converters, and/or one or more digital signal processors to facilitate audio processing.
It should be apparent to one skilled in the art that control[0053]unit250 may include more or less components than those shown in FIG. 2 without departing from the spirit and scope of the present invention. For example,control unit250 may include additional memory, such as, for example, a first or second level cache, or one or more application specific integrated circuits (ASICs). Similarly, additional components may be coupled to controlunit250 including, for example, image scanning devices, digital still or video cameras, or other devices that may or may not be equipped to capture and/or download electronic data to controlunit250.
Referring now to FIG. 3, the[0054]memory unit204 is shown in more detail. In particular, the portions of thememory204 needed for the processes of the present invention are shown and will now be described more specifically. As shown in FIG. 3, thememory unit204 preferably comprises anoperating system302,other applications304, aweb browser306, at least onenet transport application308, afirst module310 for data acquisition, asecond module312 for data extraction, athird module314 for rule application, and afourth module316 for transmission and presentation of a response. As noted above, thememory unit204 stores instructions and/or data that may be executed by processingunit302. The instructions and/or data may comprise code for performing any and/or all of the techniques described herein. These modules302-318 are coupled by bus301 to theprocessing unit302 for communication and cooperation to provide thesystem100. Those skilled in the art will recognized that while the present invention will now be described as modules or portions of thememory unit204 of a computer system, the modules or portions may also be stored in other media such as permanent data storage and may be distributed across a network having a plurality of different computers such as in a client/server environment. Furthermore, it should be understood that different embodiments of the present invention may include some but not all of the modules302-318 of FIG. 3. For example, a client-computing device112 or workstation may not include thesecond module312 for data extraction and thethird module314 for rule application. Similarly, aserver102 may not include thefirst module310 for data acquisition, but include the other modules. Those skilled in the art will recognize that the fourmodules310,312,314,416 and thenet transport application308 may be used in various combinations according to the needs of a particular situation.
The[0055]operating system302 is preferably one of a conventional type such as, WINDOWS®, SOLARIS® or LINUX® based operating systems.
The[0056]memory unit204 may also include one or moreother application programs304 including, without limitation, word processing applications, electronic mail applications, and spreadsheet applications.
The[0057]web browser306 is one of a conventional type as has been described above.
The[0058]net transport application308 is a procedure or routines that control theprocessor202. Thenet transport application308 may be used one either a workstation or a server. Although only a singlenet transport application408 is shown in thememory204 of FIG. 3 for ease of understanding the present invention, aserver102,104,106 will typically have several suchnet transport application308; each application used for interacting with different groups of transport clients812, rendering objects808 or transport objects804. Anet transport application308 preferably includes routines for invoking the net transport system. These routines operate as ascheduler806 and defined a portion of thememory204 as awork queue810. Thescheduler806 andwork queue810 are used to manage one or more work items that in turn reference afirst module310 including transport clients812, asecond module312 and athird module314 including rendering objects808, and afourth module316 including transport objects804. Each of these components is described in more detail below with reference to themodules310,312,314,316 that process them. Thescheduler806 andwork queue810 are able to support heavy loads and many clients simultaneously and also include management of administrative reporting and client feedback on the status of submitted content. Such complex reporting demands of the transport clients812 can be accomplished using rendering features of supplied by rendering objects808.
The[0059]first module310 includes one or more transport clients812 and the routines for executing the transport clients812. In particular, each of the transport clients812 is an application program that uses thenet transport application308. The transport client812 is responsible for gathering the information necessary to fill the request and generate a work item. More specifically, the transport client812 provides a graphical user interface, including questions in response to which the user must use the computing device to enter the information into thesystem100. For example, the transport clients812 may gather the customer name, items to be sold or quoted, special terms requested etc. The information is application specific but independent of how the information is to be sent or where it is to be obtained. In one embodiment, the transport clients812 presents a graphical display having blank fields in which the user can enter: 1) a rendering object800, 2) the date and time, 3) an identifier as to who the request is from, 4) an identifier as to who the request is to, 5) a method for sending the response to the request, 6) data or cargo for the request, 7) a subject of the request, 8) a responder that is to handle the request, and a 9) priority for the request. In an alternate embodiment, the transport client812 may also gather data including a server on which to execute the request it is not performed locally. The transport clients812 also include routines for asking for an update on the status of to a previously submitted request and may be formatted as a cookie sent over the Internet. The transport clients812 also include routines to determine if the system is accepting requests submissions. Once the user inputs the requested information, the transport clients812 executed to transform the data into a work item and added it to thework queue810 for further processing under the control of thescheduler806.
In the context of a[0060]system100 that generates insurance quotes, exemplary transport clients812 preferably include a transport client that acquire data for an insurance application including the name and address of the applicant, the name of agent selling the policy, the desired coverage (liability, fire, theft, workers compensation, etc.), details for evaluating risk, and desired coverage dates. The operation of the first module will also be described in more detail below with reference to FIG. 4.
The[0061]second module312 includes one or more rendering objects808 and the routines for executing the rendering objects808. Thesecond module312 preferably uses information obtained by themodule310 to access database(s), both local and remote, to obtain information for further processing the information request. For example, public and private records may be accessed to find out about past losses for historical losses within the industry or geographic area where the coverage is to occur. Rendering objects808 allows a submitted request to perform a complex information gathering process without making the transport client812 wait for it to complete. In particular, the rendering objects808 in thesecond module312 are processes responsible for extracting data from a database using the information provided by a transport client812. Each of the rendering objects808 is an application program that uses thenet transport application308. The rendering object808 is a program that makes database inquiries and returns information. For example, a particular rendering object has information about the database such as the schema used for organization, the language used such as SQL, and other information necessary to perform a successful query of the database. The rendering object808 may be very simple to very complex. In one embodiment, the rendering object808 is implemented using a Component Object Model (COM) and created as COM objects. As noted above, specific rendering objects808 provide administrative reporting and reporting back to transport clients812 as well. The rendering object808 objects include routines to generate an instance of a particular rendering object808 in response to a signal from thescheduler806. Once in thework queue810, the scheduler starts execution by calling a rendering object808 and providing reference to a work item in thework queue810. The rendering object808 extracts data, in particular the cargo, necessary for the rendering object808. For example, a rendering object808 first retrieves information to identify the instance of the rendering object including the work item to which the rendering object808 corresponds. A data structure referred to as a “sInformation” parameter is filled with data and holds this information for identification of the rendering object808 for future use. Next, the rendering object808 renders data to file by performing: 1) a no operation—simply passing the data or cargo through a rendering object808 and not materially changing the data or performing processes with it, 2) a query operation—using the data or cargo from the request as the basis for a database query, performing the query on a specified database and returning the result. In addition, in certain embodiments an output parameter for the result of the rendering object808 may be provided to a printer or other output device. This is a form of manual over-ride that can be input by the transport client812, and thereby bypassed the need for a transport object804 to process the output of the rendering object808, rather the rendering object just directly output the result to a specified printer. The operation of thesecond module312 will also be described in more detail below with reference to FIG. 5.
The[0062]third module314 includes one or more rendering objects808 and the routines for executing the rendering objects808. In particular, the rendering objects808 in thethird module314 are processes responsible for applying or enforcing business rules on the data extracted from the database by thesecond module312. Each of the rendering objects808 is an application program that uses thenet transport application308. The rendering object808 is a program that checks business rules particular to that rendering object808 to the data returned by thesecond module312. For example, when thesystem100 is configured provide insurance quotes, typical rules that would be enforced or performed by rendering objects800 include determining if the risk and/or applicant are located in an area in which the insurance carrier is legally entitled to write coverage, determining if the address given is appropriate for the location or the risk, determining if the risk is within the agents territory, determining if the risk is of a type that the carrier is willing to carry. Furthermore, those skilled in the art will recognize that these rendering objects808 may be combined with the rendering objects808 doing the extracting into a single object with performs queries on a database and then applies the business rule to produce a result that is stored in a file and identified in the corresponding work item. The operation of thethird module314 will also be described in more detail below with reference to FIG. 6.
The[0063]fourth module316 preferably comprises routines that format the data as appropriate for the media on which it is to be presented. For example, if the data is to be presented as a fax, margins must be set for pages, justification and pagination must be applied as well as other formatting conversions. Thefourth module316 includes one or more transport objects804 and the routines for executing the transport objects804. In particular, the transport objects804 in thefourth module316 are processes responsible for producing the display format and delivery of information returned by a rendering object808 of thethird module314. Each of the transport objects804 is an application program that uses thenet transport application308. Thetransport object804 a program that receives the data from thescheduler806, formats the data in a presentation format specified by the routines of the transport object, and the delivers the data in a manner dictated in the transport object804. For example, net transport may use either local resources to deliver the document produced by the rending object, or may use a network connection to use other delivery mechanisms provide by other servers. The transport objects804 can use resources that are not on the local computer system but residing on a remote system by using the routing table802. At the appropriate time based on the availability of resources or at a specified predetermined time, the transport objects804 sends the document to the destination specified, using the manner specified. Preferably, there is one transport object804 for each type of delivery such as one for fax, a second for e-mail, a third for pager, etc. Similarly each of the transport objects804 can be to a predetermined recipient or group of recipients. The use of such objects advantageously separates the transport or delivery from the processing of the data. This is advantageous because each transport object804 includes a driver adapted for a particular type of delivery technology. This allows objects to be re-used and also allows new objects to be easily written for new methods of content delivery. For example, new or multiple drivers can be written to be to take advantage of technology that was not in existence when the other objects812,808 were created. Thus, if a different fax server is added to the system, a driver is all that needs to be written, and thesystem100 will be fully operational. The operation of thefourth module316 will also be described in more detail below with reference to FIG. 7.
C. Modules And Their Interaction[0064]
Referring now to FIG. 8, the interaction of objects[0065]804,808,812 and themodules310,312314,316 are described in more detail. FIG. 5 is a schematic diagram illustrating the relationship between themaster scheduler806, thework queue810, a routing table802, and a plurality of transport clients812a-n, rendering objects808a-n, and transport objects804a-nin accordance with the present invention. The present invention is directed to the submission of a request and creation of a response documents and delivery of that response document.
The plurality of transport clients[0066]812a-nare used to interact with various users. The transport clients812a-ngather the information necessary to fill the request. Each request has some predetermined information that must be input by a user at a client-computing device. The transport clients812a-ndisplay user interfaces, run scripts and other routines to ensure the information required by a request is input. As noted above, such information may include the customer name, items to be sold or quoted, special terms requested etc. Once the information has been input, the transport clients812a-ncreate a data structure referred to as a work item and send the work item to themaster scheduler806 for addition to thework queue810. In one exemplary embodiment, work items include: 1) The data to be used in fulfilling the request either as immediate data item or a reference to a file containing the data; 2) a destination for the data e.g. an address, a fax number or an email address; 3) a rendering object; 4) a transport object or mechanism that specifies how that data is to be delivered; 5) a server or computer offering the service on which the rendering request is to be executed—scheduler will confirm the request to be executed on a server having a sufficient level of privilege to honor the request, to run the necessary programs and/or access the necessary data; and6) a priority in servicing the work item.
The[0067]work queue810 is a portion of memory for storing the work items. Thework queue810 is another data structure within the net transport system that stores all the above items for the work item and the status of the work item. Status includes whether the work items are complete or is waiting for resources and whether or not there have been errors in processing.
The[0068]master scheduler806 is the major portion of the net transport application and examines items in thework queue810 and arranges for them to be serviced in the proper order. Each of the items in thework queue810 has one or more status flags to indicated whether the item has been: added to thework queue810 by a transport client812a-n; sent to a rendering object808a-nfor processing, returned as processed by the rendering object808a-n, sent to a transport object804a-nfor processing, or returned by the transport object804a-nas having been delivered.
In practice processing proceeds as follows: a transport client[0069]812a-nformats and submits a request as a work item and adds it to thework queue810. Themaster scheduler806 examines the work items and decides which if any rendering object808a-nis available to process the work item. It is possible that a null rendering object808a-nis supplied that indicates that the data is ready for transmission as supplied. The status of the work item in thework queue810 is changed to reflect that it is currently being processed by the rendering object808a-n. The rendering object808a-nmakes database inquiries and contains and enforces business rules. Once all database inquiries have been done and business rules checked by the rendering object808a-n, the rendering object808a-nreturns information correct and suitable for further processing and associates it with item in thework queue810.
When the rendering object[0070]808a-nis finished extracting data and applying busness rules as defined by that particular rendering object808a-n, the appropriate data is now associated with the work item in thework queue810. Its status is updated to mark it as ready for transmission. At the appropriate time, based on the availability of resources and the priority of the item in thework queue810, the items are submitted to the transport object804a-n. The transport object804a-nforwards the formatted data to the proper mechanisms for transmission. The transport object804a-ncan use resources, which are not on the local computer system but residing on a remote system. The transport object804a-nconsults its routing table802 so that it knows whether there are local resources to handle the work item or whether work item is handled by another computing device or server on the network. Additionally the routing table802 may be modified, under program control, to allow traffic destined for one location to be delivered to another location. For example, email traffic may be sent to an alternate e-mailbox, or by fax or by pager. In the preferred embodiment, there is a transport object804a-nfor each type of delivery mechanism. For example, afirst transport object804ais for transmission by facsimile, asecond transport object804bis for transmission by e-mail, a third transport object804cis for transmission by pager, and a fourth transport object804dis for transmission by printing. Those skilled in the art will recognize that the present invention provide flexibility in this manner since new transmission technologies can be accommodated simply by adding a transport object804 for the new transmission mechanism. For example, if the method for delivery of the “document” were by converting it to speech and then outputting it over a telephone, a new transport object804 could be written to accommodate such a new transmission technology without having to re-write the entire document creation, processing and delivery system.
One example of application of the present invention is in the generation of quotations for insurance rates and terms. A quotation typically includes a cover letter is generated with addresses and names taken from a database. To price the policy rating factors retrieved from a database and incorporated for verification. In as much as the final price to the customer includes a commission for the sales agent, the agent is allowed to supply his commission (within some latitude) for incorporation with the final quote. In a simple case, these documents are printed for mailing. In cases that are more complex the document may be faxed. The faxing processes involves generating the content of the document on one machine; rendering the FAX image (changing it from a text-based document to a bit mapped image) on a second machine; transmission of the image on a third machine and finally the archiving of the image of the document (for legal reasons) on a fourth machine. This process is automated by the present invention in that a transport client[0071]804 is provided for delivery of a printed document, and a second transport client804 is provided to send the document by fax. Rendering objects800 are provided to archive a copy of the fax document, generate the cover letter, price the insurance quote and adjust the commission. Finally, a transport client812 that collects information from the sales agent, and specifies a method of delivery and the rendering objects808 that are to operate on the data provide. An example of documents created by thesystem100 is provided in Appendix A.
Another example of application of the present invention is to providing price quotes for a custom machine shop might work. The shop receives drawings from customers that describe items to be built. The prior art approach would be as follows. The shop will use the “Bill of Materials” (which is part of the drawing set for each part to be built) to discover what materials are required for the part. The material must be priced and the prices aggregated to form a major part of the quote. The parts do not from the entire quote but are a significant part the quotation. This is frequently done manually, literally by looking items up on a parts book, entering the values on a ledger sheet and manually adding the values. Besides looking up the prices for materials, discounts must be applied as materials generally cost more in volume. With the present invention this process would be streamlined to the following. A transport client[0072]812 running on alocal workstation112 would acquire the information comprising the bill of materials through a user entering it into the system. Once the data is entered, it is submitted to thework queue810 for processing. Themaster scheduler806 discovers the work item in thequeue810 There may be more than one item in thework queue810 as there may be more than oneworkstation114 acting as a transport client812a-n. Themaster scheduler806 directs the request to arendering object808aand by use of one of the transport objects804a, which identify to thescheduler806 how the data is to be transported. Therendering object808apreferably includes routines to examine the request, retrieve costs from a database, place these values into the electronic document being generated, apply business rules regarding markups to the costs discovered in the database, and apply business rules regarding discounts. If the values need are not found in the database therendering object808acan either forward the request to anotherrendering object808bfor processing (e.g. another rendering object on a purchasing agent's computer) to obtain the missing object or return the item unprocessed.
D. Methods[0073]
Referring now to FIGS. 9 and 4-[0074]7, the methods and processes of the present invention are described in more detail.
The general method for processing requests will first be described with reference to FIG. 9, and also with reference to FIG. 8. The method begins in[0075]step902 by acquiring data from the user. In particular, a transport client is used to present user interfaces and get the user to input the data necessary to process the request into the system. Next instep904, the method extracts information from a database using the acquired data. This is preferably done by a rendering object that uses the acquired data to generate a query and applies the query to a database. Then instep906, a number of business rules are applied to the data returned by the query instep904. Again, a rendering object performs this application of business rules. Once the rendering object modifies the data according to the business rules, the resulting data is formatted for display and combined with other information from the original request and then transmitted to a recipient using a transport object.
Referring now to FIG. 4, the preferred method for acquiring data from a client-[0076]computing device112 using thefirst module310 is shown. The process begins instep402 by presenting a user interface (UI) or screen on thedisplay device200 of thecomputer112. Next, themodule310 and the transport client812 fill in404 default values in to fields that from part of the user interface. Then instep406, the user inputs data the input data and field are processed. There is minimal verification that is done by the transport client812 to confirm that data is of the proper type or format. Afterstep406, the method tests whether the last filed has been processed instep406, or whether the user has input the submit command. If not, the process returns to step406 to process the next field. If so, the process continues instep410 to format each data element for queuing. The data is preferably formatted such as tab delimited, fixed field with or some other agreed upon format that has been set in the transport client812. Then, the data elements are assembled as a work item for queuing. Assembly of the data elements puts them in an order that is expected by the rendering objects808 that will process the work item. Finally, the transport client812 performs a routine to create the work item including the properly ordered data elements, and the work item is added to thework queue810 and the method is complete.
Referring now to FIG. 5, the preferred method for extracting information using the[0077]second module312 will be described. The method begins instep502 with the rendering object808 receiving and accessing a work item. Typically, thescheduler806 passes a work item to a rendering object808 for further processing. The rendering object808 then retrieves504 the cargo or data corresponding to the work item. This cargo may be stored as part of the work item or the work item may just have a reference to a file that contains the cargo. Next, the cargo is used to generate506 a query according to the language used by the database. Then the generated query is applied508 to a database specified in the work item. This may be done using any existing database management programs such as Microsoft SQL Server, Oracle and DB2 to manage the information, and the rendering object808 may include standard (industry wide) or proprietary methods of accessing the data whether it is stored local or remote. The result of the query is then stored510 to a file and a reference to the file is added to the work item. The work item is then returned to thework queue810 for further processing.
Referring now to FIG. 6, the preferred method for applying rules to information extracted using the[0078]third module314 will be described. The process begins instep602 with a rendering object808 retrieving data form a source. In this case, the source of the data for the operation may be the data returned by another rendering object808, the result of a query, a register on the system, or data from retrieving a file. The process continues by first applying604 business rules represented as part of the rendering object's routines to the data fromstep602. Rules may be applied as program elements (testing a value to be within specified ranges). These ranges may be built into the program (rendering module) as values. Then instep606, the method determines if there was a rule violation resulting from the application of the business rules to the data. If so the method proceeds to step608. Instep608, the method processes the violation. Such processing preferably includes: 1) sending the work item to another rendering object808 to fill in missing data 2) returning the work item o the transport client, or 3) signaling an error condition. If there was not a rule violation found instep606, the method continues instep610 to apply business rules parameterized in the database. This requires a query of the database and application of business rules. The values for the business rules may be parameter stored in the database that must be retrieved before being applied to the data fromstep602. Such parameterized values are advantageous because they may be retrieved from a database thereby facilitating the modification of the values without modifying the rendering object808. Again instep612, the method determines if there was a rule violation resulting fromstep610. If so the method proceeds to step608 before ending. If not the method continues instep614 to apply business rules represented as constraints in the database. The rules may be built as constraints in a relational database such as the ones aforementioned. Rules may specify an arbitrarily complex description such as calculated limits based on other values input from the extraction module, or variables in a database. The relationships may also used set theory to specify the constraints. For example, the zip code of the applicant must be a member of the set of zips codes where the agent is allowed to write business and must be a member of the set of zip codes where the company is allowed to write business. The zip code of the risk for a business policy may not be a zip code where the type of business to be insured is prohibited. The city and state of the address must be appropriate for the zip code. Afterstep614, the method again tests for a rule violation. If one is found the method continues instep608. If one is not found, then the method returns the work item including the result of data retrieval ofstep602 after application of the rules back in thework queue810 for other object to process. Those skilled in the art will recognize that the method of FIG. 6 was described for convenience as a single method, however portions A, B or C could alone form a method withstep602,608 and618. Furthermore, it should be understood that portions A, B or C may occur in any order and may be performed or repeated any number of times.
Referring now to FIG. 7, a preferred method for delivering content using the[0079]fourth module316 and transport objects804 is shown. The method begins instep702 with the transport object804 updating the status of the work item to indicate it is being processed. Then the work item, or its cargo or result is formatted704 as appropriate for the media over which it will be transmitted. Each different media will have a different format. Then the work item is submitted706 for processing by over a media. There are preferably multiple threads serviced by each media, thus, reducing the possibility that resources will not be available. Then instep708, the method monitors whether the work item was successfully transmitted. If the item is still processing, the method loops back tostep708. If there was an error in processing or a time out, then the method proceeds to step710 and modifies the status of work item to indicate an error and the method ends. If transmission is successful, then the method modifies the status of work item to indicate a successful transmission and the method ends.
Referring now to FIG. 10 is a flow chart of a preferred method for processing information requests using a[0080]work queue810 and amaster scheduler806 will be described. The process begins with themaster scheduler806 retrieving1002 the work item at the head of thework queue810. Then the method tests1004 if the rendering object808 has processed the work item. Is so, the results of the rendering object808 can be delivered and the process continues instep1006 where the routing information is retrieve from the routing table802. Instep1008, thescheduler806 formats the results of the work item for transmission over the identified medium and instep1010, thescheduler806 call operating system resources to transmit the work item.
If a work item is identified as unprocessed by the rendering object[0081]808 instep1004, the scheduler determines1012 whether the rendering object808 identified in the work item can accept another work item for processing. If so, thescheduler806 sends1014 the work item to the rending object808 using a transport object804. After eitherstep1012 or1014, thescheduler806 tests if this work item is the last on in thework queue810. If not thescheduler806 retrieves the next work item in thework queue810 and continues processing instep1012. If this work item is the last on in thework queue810 the method returns to step1002 to begin processing from the head of thequeue810.
E. User Interface[0082]
Referring now to FIGS.[0083]11-15, some of the user interfaces provided for operating thesystem100 of the present invention are shown.
FIG. 11 illustrates a user interfaces of a server tab that allows a system administrator to configure basic settings the[0084]system100 will use when delivering client content. Thesystem100 outputs a transportation log describing all submittals and their delivery status at predetermined intervals. At the lower right of this screen displays the current status of thesystem100. Any changes made here will stopsystem100 and apply the changes then restart thesystem100 whenever the “Apply” button is pressed. The “Max Threads” setting option, will allow from 1 to 255 threads to run concurrently.
FIG. 12 illustrates a user interfaces that allows the system administrator to set an e-mail driver (default transport object[0085]804) use to deliver mail, and a default routing (the name of an IIS sever).
FIG. 13 illustrates a user interfaces that allows the system administrator to enter the proper account, billing codes and transport layers to be used for delivering fax content. This is another method for setting a default transport object[0086]804.
FIG. 14 illustrates a user interfaces that allows the system administrator to select the default printer that print submissions will default to when delivering print content[0087]
FIG. 15 illustrates a user interfaces that allows the system administrator to select the default driver to use when delivering pager content.[0088]
While the present invention has been described with reference to certain preferred embodiments, those skilled in the art will recognize that various modifications may be provided. Variations upon and modifications to the preferred embodiments are provided for by the present invention, which is limited only by the following claims.[0089]