Abstract:
An embodiment of a method of building and assembling programs across computer networks that is dictated by the user to perform logical work without a compiler. Users are able to assemble programs without a compiler, using components by defining or re-defining which logical components are bound into the overall program at run time. Logical components are called and bound into the program at run time, allowing dynamic programming which may be modified at any time without re-compiling the entire program. Each logical component can act independently of other logical components or work in concert with each other. This allows assembly of a program, even though some components may be created using totally different methodologies and/or are constructed by different programmers.

Description:
REFERENCE TO RELATED APPLICATIONS 
     This application is a continuation of Ser. No. 09/071,751 filed on May 1, 1998 now U.S. Pat. No. 6,401,114 and claims priority to U.S. Provisional Appl. No. 60/045,261 filed May 1, 1997. 
    
    
     FIELD 
     The invention relates to a method and apparatus for dynamic programming across a computer network. Specifically, the invention provides for a user on a client computer to select from available logical components on a server computer and to have the selected components assembled into a user program. In this manner, the server computer provides each user on each client computer with customized and dynamic information or tasks. 
     The invention can be used to execute user-defined remote actions between the server and client across the network. For example, the invention can execute user programs such as publishing pages from several databases, delivering media over the network or managing and controlling a manufacturing site. 
     BACKGROUND 
     A computer network (e.g. the world wide web) is used to provide a wide variety of information from server computers to client computers across the globe. The information currently supplied is stored as static pages or is created at the time of request from a merge program that constructs the web page. Conventionally, little if any action is performed by the web servers other than data delivery (e.g. hypertext markup language (HTML) web page publication). This conventional method of supplying static or mail merged pages is very labor intensive since each page is managed as a single unit and published to the requesting client computer as it was originally designed by the programmer. This system does not provide capabilities to re-program the web server to perform different tasks or to provide different information to the client without installing new code or HTML pages on the web server. If a user has specific requirements for the server, the server program must be re-written. If the user&#39;s requirements are complex, the task of re-programming the server increases dramatically. Moreover, if other users have different requirements, there is no conventional technique of satisfying the other users. One of the reasons for this is that conventionally the user cannot request a web server across the computer network to be re-assembled as a program to fit his or her specific requirements. What is needed is a system that can address and satisfy the requirements of many users and provide a flexible and customizable server-client relationship. 
     SUMMARY 
     The invention provides a method and apparatus for building and assembling programs across a computer network in order to perform required functions for each client. The invention is accomplished by providing an environment that permits the user to assemble programs from components over a computer network (e.g. world wide web) by defining or re-defining the necessary logical program components. Thus, the program can then be executed to perform tasks programmed by the user. This is accomplished by constructing logical components that are then called and bound into the program at run time, which alleviates the need to compile the program as a single unit. This action of “binding” logical program components together was not practical until the availability of programming languages like Java that allows this type of “late binding”. The foundation that permits this method of page construction or programming is the management of the components for the assembly, requesting, calling and appending of the components to create the user program. Hence, the invention employs several intermediary steps that are executed in the correct sequence by a server program to obtain the desired result. 
     An embodiment of the invention includes a memory configured to store data for different internal functions, an interface to receive the request of the action to be taken, a processor coupled to the interface and the memory. The system is configured to manipulate the memory based on a set of instructions that are also stored/loaded into memory when a request for that action is executed. 
     Advantages of the invention includes the ability to produce custom pages or perform complex functions for a requesting client that are significantly different for each client, and can be re-programmed without a compiler across the computer network by the user. 
    
    
     BRIEF DESCRIPTION OF THE FIGURES 
     The invention will become more readily apparent from the detailed descriptions and the pending claims when taken in conjunction with the drawings, in which: 
     FIG. 1 depicts a network of a server and clients according to the prior art; 
     FIGS. 2A-C depict basic server-client functions of delivering information through a web server from a static HTML page or a program that acts as a merger of static HTML and a user profile according to the prior art; 
     FIG. 3 depicts basic sections of an HTML document according to the prior art; 
     FIG. 4 depicts a computer having data storage, procedure storage, CPU, memory, web server and client (user) interface according to an embodiment of the invention; 
     FIG. 5 depicts logical components assembled into a program according to an embodiment of the invention; 
     FIG. 6 depicts available logical components, components specified by the user and an assembled user program according to an embodiment of the invention; and 
     FIG. 7 is a flowchart of the server program according to an embodiment of the invention. 
    
    
     DETAILED DESCRIPTION 
     The invention relates to a method and apparatus for dynamic programming across a computer network. The invention includes a method of programming a server computer from a client computer using logical components to build the program. Each logical component has the capability to perform a function that is delivered to the client computer, and which performs tasks that adds value to the overall system. 
     A. World Wide Web Architecture 
     FIG. 1 depicts a network of a server and clients such as is known on the world wide web and includes a large set of web servers and web clients. The servers are used to store and deliver information over a wide area network (WAN) to clients. FIG. 1 depicts a very small network  10  that contains five clients  12 ,  14 ,  16 ,  18  and  20  and one server  22 . The clients normally make requests for information from the server over the network. As shown in FIG. 2B, the server  22  can publish a static HTML page to the client  12 . Alternately, as shown in FIG. 2C, the server  22  can utilize a user profile to publish a customized page to the client  12 . If a user profile is employed, the user profile is identified by the user logging onto the server or by the server retrieving client identification by a technique such as cookies (information stored on the client). This process normally uses a template similar to that shown in FIG. 3, and replaces the “tag” with information provided in the user profile. The template shown in FIG. 3 is coded in HTML and displays the open/close HTML tags. The program using this template is requested by the client  12  and the server  22  for the information to be merged and published to the client  12 . The server program that performs these tasks including the user interface must be pre-compiled prior to the client making the request. This pre-compilation is a conventional technique that does not allow program steps to be rearranged in order to perform a different task or process. 
     B. The Server Structure 
     The invention employs a computer structure  50  shown in FIG.  4 . This structure includes a conventional CPU  52  such as an Intel Pentium running an operating system such as Windows NT or Unix. A memory  54  is connected to the CPU and includes a program portion  56 , a data portion  58  and a general portion  60 . The program portion  56  includes a server program  56   a  for program execution and for retrieving logical components  56   b  to assemble into the user program. The data portion  58  includes an available component portion  58   a,  a user profile portion  58   b  and a user specified component portion  58   c.  By assembling the user specified logical components as described below and sequentially storing pointers in data portion  58   c,  the server program  56   a  can execute each user program according to each user&#39;s specification, without the need for the user to have a compiler. 
     The computer structure  50  also includes a web interface  62  for communicating with clients. This interface is configured to receive calls from the clients and to transmit responses to the clients. The server  50  is also a fully functional computer and can become a client to other servers on the network when desired by a user via user interface  64 . 
     C. Logical Components 
     FIG. 5 depicts logical components assembled into a user program  70 . This assembly of logical components comprises a user program. The exemplary program includes seven components that are assembled to perform a complex process. These components are stored within memory portion  58   a  and are available to the CPU  52 . A reference to each logical component is stored in the user profile memory portion  58   b  in sequence of the specific user program specified by the user. An exemplary user profile is shown in Table 1. The user profile is typically retrieved when the user requests execution of their user program. 
     
       
         
               
               
               
               
               
             
           
               
                   
                 TABLE 1 
               
               
                   
                   
               
               
                   
                 User ID 
                 Program Ref 
                 Logical Component 
                 Sequence 
               
               
                   
                   
               
             
             
               
                   
                 1 
                 P1 
                 A 
                 0 
               
               
                   
                   
                   
                 C 
                 1 
               
               
                   
                   
                   
                 F 
                 2 
               
               
                   
                   
                   
                 S 
                 3 
               
               
                   
                 2 
                 P2 
                 B 
                 0 
               
               
                   
                   
                   
                 C 
                 1 
               
               
                   
                   
                   
                 D 
                 2 
               
               
                   
                   
               
             
          
         
       
     
     Each defined logical component has a contents that define it&#39;s identity, features and interface. A typical logical component is depicted in Table 2. 
     
       
         
               
               
             
           
               
                 TABLE 2 
               
               
                   
               
             
             
               
                 Unique Identifier 
                   
               
               
                 Interface Definition 
               
               
                 Task - Summarized data for 
                 Action 1 - retrieve input arguments 
               
               
                 the current month manufac- 
                 Action 2 - query database based on argu- 
               
               
                 turing workload and out- 
                 ments 
               
               
                 put to an HTML format 
                 Action 3 - sum the results from query 
               
               
                   
                 Action 4 - format and output summed re- 
               
               
                   
                 sults in HTML 
               
               
                 Exception Handling 
               
               
                 Memory Management 
               
               
                   
               
             
          
         
       
     
     With regard to the actions, each defined logical component performs a predetermined task. In a manufacturing plant example, the logical components  72  through  84  perform the following tasks shown in Table 3. 
     
       
         
               
               
             
           
               
                 TABLE 3 
               
               
                   
               
               
                 Logical 
                   
               
               
                 Component 
                 Task 
               
               
                   
               
             
             
               
                 A 
                 Extract data from Database 1 and insert the information in 
               
               
                   
                 Database 2, new orders for a manufacturing plant 
               
               
                 B 
                 Query Database 2, for issuance of new work orders to the 
               
               
                   
                 manufacturing plant 
               
               
                 C 
                 Summarized data for the current month manufacturing 
               
               
                   
                 workload and output to an HTML format 
               
               
                 D 
                 Query Database 2, query for a detailed list for the 
               
               
                   
                 last 12 months of production, construct a graph of the 
               
               
                   
                 data and store the graphic file in graphic files 92 
               
               
                 E 
                 Output graphic information, in this example, retrieve the 
               
               
                   
                 latest 12 months production graphic file from 92, output 
               
               
                   
                 a graphic file 
               
               
                 F 
                 Query Database 2, output current plant workload and 
               
               
                   
                 build a detailed list as an HTML table 
               
               
                 S 
                 Log System Use, log access by this user and store in 
               
               
                   
                 Database 96 for accounting review and charges for 
               
               
                   
                 system use 
               
               
                   
               
             
          
         
       
     
     D. User Selection and User Program Assembly 
     FIG. 6 depicts available logical components as stored in memory portion  58   a.  These components are available for selection by the user in order to build a user program. When the user specifies the desired components, the components are arranged in sequence in the memory portion  58   b.  Once the specified component are arranged, the server program stored in memory portion  60  assembles the specified components and generates the user program  70 . 
     Each example task above represents a logical component. The user program  70  is assembled on the server over the computer network by the user specifying pre-programmed components and then initiating the assembly. These components can also be re-assembled across the network to perform a significantly different task for a different user without having to re-compile the server program  56   a.  The invention is used to perform complex processes defined by the user or the requesting client on the server or a system connected to the server. The invention has the capability of performing actions programmed remotely across a computer network. These actions can be a variety of processes, such as producing pages from several databases or delivering any media that can be transmitted over a computer network or any set of program steps such as managing and controlling a manufacturing site. 
     Examples of other tasks and sub-tasks are: evaluating values from a chemical analysis; identifying out of range values; formatting the out of range values and valid ranges into a textural message for an user; interrogating a database for a set of e-mail addresses for interested parties regarding test results; and sending an email formatted message to each interested party. 
     E. Server Program 
     The server program execution is performed as described below. By constructing logical components and storing their pointers in sequence in data portion based on the user&#39;s profile  58   b,  the server program can execute each user program without the need to re-compile the server program. 
     Execution of the logical components requires the base programming language to have the ability to dynamically load, bind and execute pre-built logical component of programming code. FIG. 7 is a flowchart of the server program depicting process steps under an execution of the logical components that are assembled into the user program according to an embodiment of the invention. This flowchart provides details of the actions required to load and execute an user program. 
     In step  102 , the server program identifies the user and retrieves the user profile for that identified user. Step  104  retrieves the specified logical components based on the user profile. Step  106  retrieves the list of logical components that are to be executed in sequence and stored in memory. Step  108  retrieves logical component defaults for the requested program and store in memory. Step  110  allocates a memory work space of required details to execute each logical component. Step  112  packages required parameters and arguments for each logical component. Step  114  determines if the logical component is loaded into memory. Step  116  checks if the logical component is not loaded then it loads the logical component into memory. Step  118  binds the call to the newly loaded logical component and pass the required parameters. Step  120  retrieves the output from the logical component if an output was produced. Step  122  appends the results to any previously constructed results. Step  124  determines if all the logical components have been called. If more logical components need to be called, step  126  queues the next logical component and restarts the execution process at step  114 . If all the logical components have been called and executed then step  128  outputs the results of all logical components to the web interface  62  or the user interface  64 . 
     This process describes the server program as it retrieves and binds logical components stored in memory portion  56   b  to create the user program. Within FIG. 7, steps  106  and  118  are important to insure that the correct program is executed by calling and late-binding the call to the correct logical component. 
     F. Component Intercommunication 
     Each logical component must have a defined interface so that the server program can identify and call it to perform the required task. The logical component can perform any variety of logical task by accessing a data source(s), formatting information, requesting data that the user has entered and acting on that data, such as storing the information into a database. Each logical component can act independently of other requested logical components or act in concert with each other. The independent action of each logical component is important because it allows the assembly of logical components that have been constructed by different programmers and possibly by independent methodologies. This enables the workload for an entire system to be divided among a group of programmers, provided that they follow predetermined interface rules of the server program. The server program and these logical components work in concert to perform the tasks. Because each logical component is called independently, they can access information across a system without concern of interference from other logical components. The following exemplary steps for logical components depicted in Table 4 are generalized from a specific method. 
     
       
         
               
               
             
           
               
                 TABLE 4 
               
               
                   
               
               
                 Step 
                 Task 
               
               
                   
               
             
             
               
                 1 
                 Obtain the parameters that have been passed in from the memory 
               
               
                   
                 work space 
               
               
                 2 
                 React to the parameters provided by the server program 
               
               
                 3 
                 Access a data source and format the information in HTML 
               
               
                 4 
                 Create a work space within memory for the sub-method output 
               
               
                 5 
                 Store results within the work space 
               
               
                 6 
                 Return to the server program 
               
               
                   
               
             
          
         
       
     
     Conclusion 
     Advantages of the invention include the ability for a network client or web-browser to program or re-program a remote server&#39;s actions, tasks and methods without a compiler. This allows a variety of tasks to be combined to produce work output that is easily modifiable by the user over a wide area network. 
     Having disclosed exemplary embodiments and the best mode, modifications and variations may be made to the exemplary embodiments while remaining within the scope of the invention as defined by the following claims.