US20020078277A1 - Method and apparatus for enabling location-independent and location-transparent interaction between program and user - Google Patents
Method and apparatus for enabling location-independent and location-transparent interaction between program and user Download PDFInfo
- Publication number
- US20020078277A1 US20020078277A1 US10/076,778 US7677802A US2002078277A1 US 20020078277 A1 US20020078277 A1 US 20020078277A1 US 7677802 A US7677802 A US 7677802A US 2002078277 A1 US2002078277 A1 US 2002078277A1
- Authority
- US
- United States
- Prior art keywords
- program
- user
- input
- buffer
- data structure
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Abandoned
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/485—Task life-cycle, e.g. stopping, restarting, resuming execution
- G06F9/4856—Task life-cycle, e.g. stopping, restarting, resuming execution resumption being on a different machine, e.g. task migration, virtual machine migration
- G06F9/4862—Task life-cycle, e.g. stopping, restarting, resuming execution resumption being on a different machine, e.g. task migration, virtual machine migration the task being a mobile agent, i.e. specifically designed to migrate
Definitions
- the present invention relates to input and output functions of computer programs. More specifically, the present invention is related to enabling location independent and location transparent interaction between a program and a user, one or both of which is mobile.
- the conventional systems have three main limitations. First, both the program and the user have to be aware of each others' location at all times. Second, in situations where a program must move to the location of a user, the user's machine must have a program execution environment available to host and execute the program at any time. Third, while mechanisms exist to supply initialization parameters to a program before it begins execution, after the program has started execution, there are no mechanisms in these systems to permit a user to both determine the status of the program and to provide input to the program during program execution and/or before the program asks for them.
- An object of the present invention is to provide a system and method for permitting input and output between a user and a program without the requirement of each entity constantly maintaining knowledge of the other entity's location.
- Another object of the present invention is to provide a system and method for permitting input and output between a user and a program without requiring the user's machine to have an execution environment available in which the program can run.
- Another object of the present invention is to provide for a user to both determine the status of a mobile program during execution and supply input to a program during execution and before input is actually needed.
- the present invention comprising a system and method wherein a mobile user, or a user interacting with a mobile program, can at any time initiate a program status request.
- the program status request initiates the sequence of events whereby the current location of the program is determined and/or the current user location is made available to the program without the necessity of either entity changing location.
- the agent script for the program maintains a composite data structure which includes an input buffer for storing input variables, an output buffer for storing output values to be displayed to the user, a program state data structure, and an optional bag buffer for temporarily storing input values which the program will need in the course of future execution.
- FIG. 1 shows a networked system into which the present invention can be incorporated
- FIG. 2 shows an example of an agent script with input and output statements
- FIG. 3 shows an embodiment of the relevant data structures of a mobile agent script according to an aspect of the present invention
- FIG. 4 shows an embodiment of the logic of the present invention for handling input and output by the Agent Execution Shell of the system of FIG. 1;
- FIG. 5 shows an embodiment of the logic of the present invention for processing a user's request for status
- FIGS. 6 a, 6 b, 6 c and 6 d show an example scenario in which a user launches the script from one geographic location and, while moving, continually monitors the program, views results of the program and supplies input values as needed.
- a host or host machine is a computing system, such as a mainframe, desktop personal computer, portable laptop computer or handheld device on which a program is executing.
- a network is a set of hosts, interconnected by some physical and logical communications infrastructure.
- a user is a human user of the network environment.
- a client is the user's interface to a network and may be a computer, handheld portable device, or other device having communication capabilities.
- a program is a sequence of instructions that execute on a host machine.
- a mobile program is a program, such as a mobile agent, that moves from one host machine to another, executing some of its instructions at each host machine.
- An Agent Server is a host machine having the execution environment for a mobile agent.
- An Agent Execution Shell is a software subsystem at a host's Agent Server in which a mobile agent executes part of its instructions.
- FIG. 1 depicts a system into which the features of the present invention can be incorporated.
- a networked system 100 connects computers that have distinct roles in the system.
- the computers 102 , 104 a, 104 b and 106 which can be running conventional operating systems such as OS/2, UNIX, AIX or Windows NT, are interconnected by way of a communication network 108 in conjunction with a communication protocol.
- the communication protocol can be, for example, Sun Microsystems RPC, which can run on UDP/IP or TCP/IP.
- the network 108 can be a LAN, Internet or intranet.
- the client 102 and Agent Servers 104 a, 104 b can be embodied by conventional personal computers (PCs) such as IBM PCs.
- PCs personal computers
- a conventional communication system 112 such as the TCP/IP stack in the operating system, that is used to communicate over the network 108 .
- clients also can be embodied as handheld portable mobile devices, such as a PalmPilot or a smart cellular telephone. These mobile devices can run proprietary operating systems using cellular telephone technology, infrared communication means, or other equivalent means, to connect to the communication network 108 .
- Agent Server 104 a, 104 b may be logical or physical and that the client need not be able to provide an execution environment for the relevant program.
- Agent Personal Assistant 110 an agent program is launched from a client machine 102 , using a subsystem called the Agent Personal Assistant (APA) 110 .
- this subsystem is capable of debugging, updating and checking agent status.
- APA 110 be embodied as an application with a web interface.
- the APA 110 interacts with a Desktop Server 114 , located within a Web Server 106 , to perform these tasks.
- Each of the Agent Servers 104 a, 104 b supports an execution environment that includes a software subsystem referred to as an Agent Execution Shell (AES) 120 .
- AES 120 acts as the single coordinator for agent execution and maintains an internal table containing the state of all currently active agents.
- Each Agent Server additionaly maintains at least one routing table for recording the locations(s) from and to which mobile agents move.
- FIG. 2 shows a typical example of agent code to be used with the present invention.
- the agent moves to the next host machine Q at step 200 .
- the next host may be specified in the code or may be dynamically determined as discussed in the aforementioned patent application, the disclosure of which is hereby incorporated by reference.
- the agent code may contain the construct PRINT for providing output and the construct READ for reading input values from machine Q.
- the PRINT construct enables the agent to display results to a user
- the READ construct at step 204 a, enables the agent to request input from a user.
- the agent moves to machine R at line 206 .
- the agent code may contain a PRINT construct and a READ construct, which may be executed at 204 a and 204 b, respectively.
- the code completes execution at step 208 .
- FIG. 3 shows a composite data structure associated with an agent script 302 as it moves through the network 108 in accordance with the present invention. While the contents of the components of the composite data structure change as the agent script moves, the data structure components, including bag 304 , STDOUT 306 , STDIN 308 , and program state 310 remain available.
- a “bag” 304 is a buffer that contains a set of variable name/value pairs which have been preset or input dynamically for future program usage.
- the agent script examines the contents of the bag to locate values for variables and then retrieve the values. The value for a particular variable name could be a set of values that would be returned sequentially for successive requests for the same name.
- the bag buffer may be implemented as an array, hash table, tuple space, or other equivalent data structure.
- “STDOUT” buffer 306 contains all the output generated by an agent. The contents of the STDOUT buffer 306 are displayed to the user when requested.
- “STDIN” buffer 308 contains the variable names for which an agent script is awaiting input values from the user. The “STDIN” buffer 308 is used by the AES 120 to communicate values for input variables to the agent script.
- program, stack and variable data structures are included for representing the program state 310 of the agent script.
- FIG. 4 shows the method steps performed by an embodiment of the AES 120 when executing program statements of the agent. Only statements relevant to the present invention are shown in FIG. 4.
- the AES 120 examines the next statement to execute.
- the AES 120 determines if the statement is the END statement. If it is the END statement, the AES terminates execution of the agent at step 406 . If the next statement is not the END statement, the AES 120 determines if the statement is a PRINT statement at step 408 .
- the AES 120 retrieves values for the arguments to the PRINT statement from the program state 310 and appends the values to the STDOUT buffer 306 in a pre-determined format in step 410 .
- a STDOUT buffer 306 is associated with each agent. The AES 120 then continues with the execution of the agent by returning to step 402 .
- step 408 If, in step 408 , it is concluded that the statement is not a PRINT statement, the AES 120 next determines, in step 412 , if the statement is a READ statement. If, in step 412 , it is determined that the statement is a READ statement, then the AES 120 checks whether the needed variable values are available in the bag 304 in step 424 . If the values are available, the values are retrieved and removed from the bag 304 in step 426 . The variables are updated, and the AES 120 continues execution of the program by returning to step 402 . If, in step 424 , it is determined that the values are not available, the AES 120 appends the names of the arguments for the READ statement to the STDIN buffer 308 in step 414 . Optionally, in step 416 , the AES 120 then notifies the user via electronic means such as pager/beeper/electronic mail that input is required. The preference to be notified can be specified by the user when the agent script is launched.
- step 418 the AES 120 suspends execution of the program and waits for notification that the input values are available.
- the logic for notifying the AES 120 about input values is shown in FIG. 5, described hereinbelow.
- the AES 120 updates the program state 310 with new values in step 422 , and continues with execution of the program by returning to step 402 .
- the AES may additionally update the bag contents if the user has provided input which the user knows will be required by the program in succeeding steps. If, in step 412 , it is determined that the statement is not a READ statement, the AES 120 processes other statements as appropriate, in step 422 , and continues execution of the program by returning to step 402 .
- the entire contents of the bag could be consumed at one time (assuming that the bag contains more than just the immediately-required input) and utilizes the consumed input as required without having to re-examine the bag content at each input juncture of program execution.
- FIG. 5 shows the steps through which a user interacts with an agent in an embodiment of the present invention.
- a user initiates a status request for an agent from the APA 110 .
- the request is forwarded by the APA 110 to the Desktop Server 114 at the Web Server.
- the Desktop Server 114 then forwards the request as a STATUS request to the AES 120 at the Agent Server where the agent was initially launched.
- the AES 120 receives the STATUS request forwarded by the Desktop Server 114 .
- the AES 120 next retrieves the agent state from the internal state table, in step 504 .
- the AES 120 determines if the agent is still executing at the present location, in step 506 . If the agent is no longer executing at the present location, the AES 120 checks its routing table and then, in step 508 , forwards the STATUS request to the site where the agent was sent (and the method resumes with step 502 at the next machine).
- step 506 the AES 120 retrieves, in step 510 , the STDOUT buffer 306 and the STDIN buffer 308 , each associated with the agent state. If the STDIN buffer is not empty, such that input is required, the AES additionally notes the current logical address of the agent. In step 512 , the AES 120 sends a message to the Desktop Server 142 containing the STDOUT and STDIN buffers 306 , 308 . If the STDIN buffer 308 is not empty, the AES 120 also sends the current logical address of the agent in the message, so that user input can be properly routed.
- the Desktop Server 114 receives a reply for the STATUS request.
- the Desktop Server 114 extracts the contents of the STDOUT and STDIN buffers from the message.
- the Desktop Server 114 displays the contents of the STDOUT buffer to the user via the APA 110 . If the STDIN buffer was not empty, the Desktop Server 114 also requests input from the user.
- the Desktop Server 114 sends a message to the AES 120 where the agent is currently located, at step 518 .
- the AES 120 receives the message, at step 520 , notifies the agent of the new values, and updates the buffers as necessary. As described in FIG. 4, the agent resumes execution after receiving the notification.
- FIGS. 6 a - d show a representative process flow for the present invention based upon the sample script in FIG. 2.
- a user 602 at Location P launches a mobile script 302 from client machine 102 a onto the communication network 108 which spans Locations P, Q, and R.
- the Agent Server 104 a is disposed at Location Q.
- the Agent Server 104 b and the Web Server 106 are disposed in Location R. After performing some computation, the mobile script 302 moves to location Q.
- the script executes the PRINT statement at location Q.
- the output of the PRINT statement “I am at machine Q”
- the script 302 executes the statement “READ A.” Since the value of A is not available in the bag, the script 302 optionally sends notification to the user 602 and waits for a reply.
- the user notification can be implemented using technology such as a beeper, pager, e-mail, smart phone or handheld portable mobile device.
- the user 602 supplies a value for variable A to the script 302 .
- the user also supplies a value for variable B to the script 302 .
- the script 302 resumes executions immediately consuming the value for variable A. Since the value for variable B is not yet needed by the script 302 , it is placed in the bag associated with the script 302 (see FIG. 6 c ). The script 302 then moves to the Agent Server 104 b at Location R.
- the script 302 generates the output “I am at machine R” as a result of executing the PRINT statement, at location R.
- the output is attached to the STDOUT buffer of script 302 .
- the script 302 executes the statement “READ B”. Since the value for variable B is already available in the bag, the program retrieves the value from the bag and completes execution, without the need for preparing and sending notification to the user. Clearly, more than one additional value can be input by the user and stored in the bag buffer for subsequent use by the program.
- the preferred embodiment is provided as an example and not as a limitation.
- the contents of the STDOUT buffer 306 can be transmitted to the user's device, assuming the device is capable of receiving such data (e.g., pager or smart phone).
- a user using the system of the present invention, can optionally communicate with a particular AES via e-mail.
- the scope of the invention is defined by the appended claims.
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Multi Processors (AREA)
- Mobile Radio Communication Systems (AREA)
- Information Transfer Between Computers (AREA)
- Computer And Data Communications (AREA)
Abstract
A system and method wherein a mobile user or a user interacting with a mobile program, can at any time initiate a program status request. The program status request initiates the sequence of events whereby the current location of the program is determined and/or the current user location is made available to the program without the necessity of either entity changing location. Further, the agent script for the program maintains a composite data structure which includes an input buffer for storing input variables, an output buffer for storing output values to be displayed to the user, a program state data structure, and an optional bag buffer for temporarily storing input variables which the program will need in the course of future execution. By maintaining such a composite data structure, it is assured that all necessary information can be provided at a program location regardless of whether the program or the user has relocated.
Description
- The present invention relates to input and output functions of computer programs. More specifically, the present invention is related to enabling location independent and location transparent interaction between a program and a user, one or both of which is mobile.
- To support interaction between a user and a program, current systems require the program and the user to be constantly aware of each other's location. If a program, such as a mobile agent program, moves to a different host, it must return to the user location or communicate through another program at the user location, to receive input or display output to the user. This is a problem when the user is mobile (e.g., using a laptop or handheld device) and, therefore, usually not in the original location from which the program was launched. Similarly, if a user chooses to move to another location on a network, that user must access the machine at which the program is executing in order to provide input or to receive output from the program.
- In prior art systems, interactions between a program and a user are handled using standard input and output constructs. For example, in C programming language the input construct is the “scarf( )” function and the output construct is the “printf( )” function. In Java language, the input is performed using methods in classes such as “java.io.InputStreamReader” and “Java.io.InputStream,” while output is performed using methods in classes such as “java.io.PrintWriter” and “java.io.PrintStream.” For such programs, both the user and the program must be at the same location.
- In conventional mobile agent systems, such as those described in U.S. Pat. No. 5,603,031, issued Feb. 11, 1997, entitled “System and Method for Distributed Computation Based Upon the Movement, Execution, and Interaction of Processes in a Network,” by White et al. and “IBM Aglets Workbench—Programming Mobile Agents in Java”, Proceedings of 1997 World Wide Computing and Its Applications, Japan, pp. 253-266 by Lange et al., the program executes part of its code at one host location, then moves to another host location where it executes a next portion of code, and so on. Interaction between a mobile agent and a user in such a system is achieved by the agent moving to and executing at the user's machine when display of data to the user and/or receipt of input from the user is required.
- The conventional systems have three main limitations. First, both the program and the user have to be aware of each others' location at all times. Second, in situations where a program must move to the location of a user, the user's machine must have a program execution environment available to host and execute the program at any time. Third, while mechanisms exist to supply initialization parameters to a program before it begins execution, after the program has started execution, there are no mechanisms in these systems to permit a user to both determine the status of the program and to provide input to the program during program execution and/or before the program asks for them.
- An object of the present invention is to provide a system and method for permitting input and output between a user and a program without the requirement of each entity constantly maintaining knowledge of the other entity's location.
- Another object of the present invention is to provide a system and method for permitting input and output between a user and a program without requiring the user's machine to have an execution environment available in which the program can run.
- Another object of the present invention is to provide for a user to both determine the status of a mobile program during execution and supply input to a program during execution and before input is actually needed.
- These and other objects of the invention are realized by the present invention comprising a system and method wherein a mobile user, or a user interacting with a mobile program, can at any time initiate a program status request. The program status request initiates the sequence of events whereby the current location of the program is determined and/or the current user location is made available to the program without the necessity of either entity changing location. Further, the agent script for the program maintains a composite data structure which includes an input buffer for storing input variables, an output buffer for storing output values to be displayed to the user, a program state data structure, and an optional bag buffer for temporarily storing input values which the program will need in the course of future execution. By maintaining such a composite data structure, it is assured that all necessary information can be provided at a program location regardless of whether the program or the user has relocated.
- The present invention will be understood by reference to the drawing, wherein:
- FIG. 1 shows a networked system into which the present invention can be incorporated;
- FIG. 2 shows an example of an agent script with input and output statements;
- FIG. 3 shows an embodiment of the relevant data structures of a mobile agent script according to an aspect of the present invention;
- FIG. 4 shows an embodiment of the logic of the present invention for handling input and output by the Agent Execution Shell of the system of FIG. 1;
- FIG. 5 shows an embodiment of the logic of the present invention for processing a user's request for status; and
- FIGS. 6a, 6 b, 6 c and 6 d show an example scenario in which a user launches the script from one geographic location and, while moving, continually monitors the program, views results of the program and supplies input values as needed.
- The following are definitions of some of the terms used in this specification:
- A host or host machine is a computing system, such as a mainframe, desktop personal computer, portable laptop computer or handheld device on which a program is executing.
- A network is a set of hosts, interconnected by some physical and logical communications infrastructure.
- A user is a human user of the network environment.
- A client is the user's interface to a network and may be a computer, handheld portable device, or other device having communication capabilities.
- A program is a sequence of instructions that execute on a host machine.
- A mobile program is a program, such as a mobile agent, that moves from one host machine to another, executing some of its instructions at each host machine.
- An Agent Server is a host machine having the execution environment for a mobile agent.
- An Agent Execution Shell (AES) is a software subsystem at a host's Agent Server in which a mobile agent executes part of its instructions.
- The preferred embodiment is described in the context of a program that is mobile such as a mobile agent.
- FIG. 1 depicts a system into which the features of the present invention can be incorporated. Here, a networked
system 100 connects computers that have distinct roles in the system. Thecomputers communication network 108 in conjunction with a communication protocol. The communication protocol can be, for example, Sun Microsystems RPC, which can run on UDP/IP or TCP/IP. Thenetwork 108 can be a LAN, Internet or intranet. Theclient 102 andAgent Servers conventional communication system 112, such as the TCP/IP stack in the operating system, that is used to communicate over thenetwork 108. Alternatively, clients also can be embodied as handheld portable mobile devices, such as a PalmPilot or a smart cellular telephone. These mobile devices can run proprietary operating systems using cellular telephone technology, infrared communication means, or other equivalent means, to connect to thecommunication network 108. Note that the distinction between aclient 102 and anAgent Server - Although only one client is shown in FIG. 1, there can be many clients in the
system 100. An agent program is launched from aclient machine 102, using a subsystem called the Agent Personal Assistant (APA) 110. In addition to agent launch, this subsystem is capable of debugging, updating and checking agent status. Such a subsystem is disclosed in U.S. patent application Ser. No. 08/847,079 of Devarakonda et al, entitled, “Dynamic Mobile Agents,” filed May 1, 1997. In the present invention, it is preferable that the APA 110 be embodied as an application with a web interface. The APA 110 interacts with aDesktop Server 114, located within aWeb Server 106, to perform these tasks. - There can be a plurality of Agent Servers in the
system 100. Each of theAgent Servers AES 120 acts as the single coordinator for agent execution and maintains an internal table containing the state of all currently active agents. Each Agent Server additionaly maintains at least one routing table for recording the locations(s) from and to which mobile agents move. - FIG. 2 shows a typical example of agent code to be used with the present invention. After performing some computation on a machine, the agent moves to the next host machine Q at
step 200. The next host may be specified in the code or may be dynamically determined as discussed in the aforementioned patent application, the disclosure of which is hereby incorporated by reference. The agent code may contain the construct PRINT for providing output and the construct READ for reading input values from machine Q. As illustrated, atstep 202 a, the PRINT construct enables the agent to display results to a user, while the READ construct, atstep 204 a, enables the agent to request input from a user. After performing its computation as required, such as executing the READ, PRINT or other instruction, the agent moves to machine R atline 206. Again, the agent code may contain a PRINT construct and a READ construct, which may be executed at 204 a and 204 b, respectively. The code completes execution atstep 208. - FIG. 3 shows a composite data structure associated with an
agent script 302 as it moves through thenetwork 108 in accordance with the present invention. While the contents of the components of the composite data structure change as the agent script moves, the data structure components, includingbag 304,STDOUT 306,STDIN 308, andprogram state 310 remain available. A “bag” 304 is a buffer that contains a set of variable name/value pairs which have been preset or input dynamically for future program usage. When the program requires input, the agent script examines the contents of the bag to locate values for variables and then retrieve the values. The value for a particular variable name could be a set of values that would be returned sequentially for successive requests for the same name. If the bag does not contain a value for the needed variable, the agent script blocks and waits for the user to input the needed data. The bag buffer may be implemented as an array, hash table, tuple space, or other equivalent data structure. “STDOUT”buffer 306 contains all the output generated by an agent. The contents of theSTDOUT buffer 306 are displayed to the user when requested. “STDIN”buffer 308 contains the variable names for which an agent script is awaiting input values from the user. The “STDIN”buffer 308 is used by theAES 120 to communicate values for input variables to the agent script. Finally, program, stack and variable data structures are included for representing theprogram state 310 of the agent script. - FIG. 4 shows the method steps performed by an embodiment of the
AES 120 when executing program statements of the agent. Only statements relevant to the present invention are shown in FIG. 4. Instep 402, theAES 120 examines the next statement to execute. Instep 404, theAES 120 determines if the statement is the END statement. If it is the END statement, the AES terminates execution of the agent atstep 406. If the next statement is not the END statement, theAES 120 determines if the statement is a PRINT statement atstep 408. If the next statement is a PRINT statement, theAES 120 retrieves values for the arguments to the PRINT statement from theprogram state 310 and appends the values to theSTDOUT buffer 306 in a pre-determined format instep 410. ASTDOUT buffer 306 is associated with each agent. TheAES 120 then continues with the execution of the agent by returning to step 402. - If, in
step 408, it is concluded that the statement is not a PRINT statement, theAES 120 next determines, instep 412, if the statement is a READ statement. If, instep 412, it is determined that the statement is a READ statement, then theAES 120 checks whether the needed variable values are available in thebag 304 instep 424. If the values are available, the values are retrieved and removed from thebag 304 instep 426. The variables are updated, and theAES 120 continues execution of the program by returning to step 402. If, instep 424, it is determined that the values are not available, theAES 120 appends the names of the arguments for the READ statement to theSTDIN buffer 308 instep 414. Optionally, instep 416, theAES 120 then notifies the user via electronic means such as pager/beeper/electronic mail that input is required. The preference to be notified can be specified by the user when the agent script is launched. - In
step 418, theAES 120 suspends execution of the program and waits for notification that the input values are available. The logic for notifying theAES 120 about input values is shown in FIG. 5, described hereinbelow. After theAES 120 receives notification instep 420, theAES 120 updates theprogram state 310 with new values instep 422, and continues with execution of the program by returning to step 402. The AES may additionally update the bag contents if the user has provided input which the user knows will be required by the program in succeeding steps. If, instep 412, it is determined that the statement is not a READ statement, theAES 120 processes other statements as appropriate, instep 422, and continues execution of the program by returning to step 402. In one optmized embodiment, the entire contents of the bag could be consumed at one time (assuming that the bag contains more than just the immediately-required input) and utilizes the consumed input as required without having to re-examine the bag content at each input juncture of program execution. - FIG. 5 shows the steps through which a user interacts with an agent in an embodiment of the present invention. A user initiates a status request for an agent from the
APA 110. The request is forwarded by theAPA 110 to theDesktop Server 114 at the Web Server. TheDesktop Server 114 then forwards the request as a STATUS request to theAES 120 at the Agent Server where the agent was initially launched. TheAES 120, instep 502, receives the STATUS request forwarded by theDesktop Server 114. TheAES 120 next retrieves the agent state from the internal state table, instep 504. TheAES 120 then determines if the agent is still executing at the present location, instep 506. If the agent is no longer executing at the present location, theAES 120 checks its routing table and then, instep 508, forwards the STATUS request to the site where the agent was sent (and the method resumes withstep 502 at the next machine). - If it is determined, in
step 506, that the agent is currently executing at the present site, theAES 120 retrieves, instep 510, theSTDOUT buffer 306 and theSTDIN buffer 308, each associated with the agent state. If the STDIN buffer is not empty, such that input is required, the AES additionally notes the current logical address of the agent. Instep 512, theAES 120 sends a message to the Desktop Server 142 containing the STDOUT and STDIN buffers 306, 308. If theSTDIN buffer 308 is not empty, theAES 120 also sends the current logical address of the agent in the message, so that user input can be properly routed. - In
step 514, theDesktop Server 114 receives a reply for the STATUS request. TheDesktop Server 114 extracts the contents of the STDOUT and STDIN buffers from the message. Instep 516, theDesktop Server 114 displays the contents of the STDOUT buffer to the user via theAPA 110. If the STDIN buffer was not empty, theDesktop Server 114 also requests input from the user. Upon receipt of user input, theDesktop Server 114 sends a message to theAES 120 where the agent is currently located, atstep 518. TheAES 120 receives the message, atstep 520, notifies the agent of the new values, and updates the buffers as necessary. As described in FIG. 4, the agent resumes execution after receiving the notification. - FIGS. 6a-d show a representative process flow for the present invention based upon the sample script in FIG. 2. In FIG. 6a, a
user 602 at Location P launches amobile script 302 fromclient machine 102 a onto thecommunication network 108 which spans Locations P, Q, and R. TheAgent Server 104 a is disposed at Location Q.The Agent Server 104 b and theWeb Server 106 are disposed in Location R. After performing some computation, themobile script 302 moves to location Q. - In FIG. 6b, the script executes the PRINT statement at location Q. As a result of execution, the output of the PRINT statement, “I am at machine Q”, is added to the STDOUT buffer. Next, the
script 302 executes the statement “READ A.” Since the value of A is not available in the bag, thescript 302 optionally sends notification to theuser 602 and waits for a reply. The user notification can be implemented using technology such as a beeper, pager, e-mail, smart phone or handheld portable mobile device. After the user checks the status of the script 302 (as explained with reference to FIG. 5.), theuser 602 supplies a value for variable A to thescript 302. Additionally, under one optional optimization, the user also supplies a value for variable B to thescript 302. Upon receiving these values, thescript 302 resumes executions immediately consuming the value for variable A. Since the value for variable B is not yet needed by thescript 302, it is placed in the bag associated with the script 302 (see FIG. 6c). Thescript 302 then moves to theAgent Server 104 b at Location R. - In FIG. 6d, the
script 302 generates the output “I am at machine R” as a result of executing the PRINT statement, at location R. The output is attached to the STDOUT buffer ofscript 302. Next, thescript 302 executes the statement “READ B”. Since the value for variable B is already available in the bag, the program retrieves the value from the bag and completes execution, without the need for preparing and sending notification to the user. Clearly, more than one additional value can be input by the user and stored in the bag buffer for subsequent use by the program. - Now that the invention has been described by way of a preferred embodiment, various modifications and improvements will occur to those of skill in the art. Thus, it should be understood that the preferred embodiment is provided as an example and not as a limitation. For instance, along with the notification, the contents of the
STDOUT buffer 306 can be transmitted to the user's device, assuming the device is capable of receiving such data (e.g., pager or smart phone). In addition, a user, using the system of the present invention, can optionally communicate with a particular AES via e-mail. The scope of the invention is defined by the appended claims.
Claims (24)
1. A method for enabling location independent and location transparent interaction between a program and a user, the program having been launched at a first location and having a program state data structure for storing at least the program state, the method comprising the steps of:
initiating a program status request by the user;
determining the current location of the program;
checking the program state to ascertain program status; and
interacting with said program based upon said program status.
2. The method of claim 1 wherein said interacting with said program comprises:
retrieving, from the program, output contents to display to the user; and
displaying the output contents to said user.
3. The method of claim 1 wherein said interacting with said program comprises:
requesting input variables from said user;
sending any received input values to the current location; and
incorporating the received input values into said program state data structure.
4. The method of claim 1 wherein the program is a mobile agent.
5. The method of claim 1 wherein the program is a mobile script.
6. The method of claim 1 where the user is a mobile user.
7. The method of claim 2 further comprising the step of maintaining an output buffer and wherein said retrieving comprises the step of retrieving the output contents from said output buffer.
8. The method of claim 1 wherein the initiating step comprises the steps of:
initiating the status request at a client machine; and
forwarding the status request to the first location at which said program was launched.
9. The method of claim 8 wherein said program comprises a mobile program which executes a portion of its code at each of a plurality of execution servers and wherein the determining step comprises the steps of:
transmitting the status request to each execution server at which the program has executed a portion of its code; and
determining, at each execution server, whether the program is currently running locally.
10. The method of claim 9 wherein each of said plurality of execution servers maintains routing information for said program and wherein said determining further comprises the step, if said program is not currently running locally, of consulting said routing information to ascertain at least one successive execution server to which the program has been routed.
11. A method for enabling a user to provide input values to a running program before the program needs the input values, comprising the steps of:
maintaining a bag buffer of variable/value pairs in the program;
receiving a communication, including input values, from the user; and
temporarily storing said input values in said bag buffer.
12. The method of claim 11 wherein said program subsequently searches through contents of the bag buffer to locate needed input values before requesting input from said user.
13. The method of claim 2 further comprising the step of maintaining a bag buffer in the program and wherein the retrieving step comprises the steps of:
searching, in the bag buffer, for input values associated with the input variables;
updating, if found, the input variables with the input values;
disposing, in an input buffer, the input variables, if not found; and
optionally notifying the user via electronic means if no suitable values are found in the bag buffer.
14. The method of claim 13 wherein the electronic means is a pager.
15. The method of claim 13 wherein the electronic means is a beeper.
16. The method of claim 13 wherein the electronic means is electronic mail.
17. The method of claim 13 wherein the electronic means is a smart telephone.
18. A computer program data structure comprising;
an output buffer for storing output values to be displayed to a user;
an input buffer for storing values for which user input of variables is required; and
program state buffer for storing at least the present state of said program.
19. The data structure of claim 18 further comprising a bag buffer for storing input variables.
20. The data structure of claim 19 wherein the bag buffer is a array data structure.
21. The data structure of claim 19 wherein the bag buffer is a hash table data structure.
22. The data structure of claim 19 wherein the bag buffer is a tuple space data structure.
23. An execution shell for a mobile program comprising:
a routing component for maintaining routing information regarding said mobile program;
a processor component for processing user status requests related to said program; and
an execution component for executing at least part of said program.
24. The execution shell of claim 23 further comprising a data handling component for receiving user input and storing same in at least one data structure for said program.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/076,778 US20020078277A1 (en) | 1998-08-31 | 2002-02-13 | Method and apparatus for enabling location-independent and location-transparent interaction between program and user |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US09/143,892 US6356964B1 (en) | 1998-08-31 | 1998-08-31 | Method and apparatus for enabling location-independent and location-transparent interaction between a program and a user |
US10/076,778 US20020078277A1 (en) | 1998-08-31 | 2002-02-13 | Method and apparatus for enabling location-independent and location-transparent interaction between program and user |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US09/143,892 Division US6356964B1 (en) | 1998-08-31 | 1998-08-31 | Method and apparatus for enabling location-independent and location-transparent interaction between a program and a user |
Publications (1)
Publication Number | Publication Date |
---|---|
US20020078277A1 true US20020078277A1 (en) | 2002-06-20 |
Family
ID=22506132
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US09/143,892 Expired - Lifetime US6356964B1 (en) | 1998-08-31 | 1998-08-31 | Method and apparatus for enabling location-independent and location-transparent interaction between a program and a user |
US10/076,778 Abandoned US20020078277A1 (en) | 1998-08-31 | 2002-02-13 | Method and apparatus for enabling location-independent and location-transparent interaction between program and user |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US09/143,892 Expired - Lifetime US6356964B1 (en) | 1998-08-31 | 1998-08-31 | Method and apparatus for enabling location-independent and location-transparent interaction between a program and a user |
Country Status (5)
Country | Link |
---|---|
US (2) | US6356964B1 (en) |
JP (2) | JP3965005B2 (en) |
KR (1) | KR20000017510A (en) |
CN (1) | CN1127231C (en) |
GB (1) | GB2343769B (en) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040078800A1 (en) * | 2002-07-29 | 2004-04-22 | Manzano Michael R. | System and method for using a mobile agent object to collect data |
US20140143520A1 (en) * | 2012-11-21 | 2014-05-22 | Coherent Logix, Incorporated | Processing System With Interspersed Processors With Multi-Layer Interconnect |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3738624B2 (en) * | 1999-10-26 | 2006-01-25 | 日本電気株式会社 | Distributed application control system, control method, and recording medium recording program |
US6711619B1 (en) * | 1999-12-15 | 2004-03-23 | Hewlett-Packard Development Company, L.P. | Method, system, and apparatus for distributing and using computer-based applications over a network |
CA2376900A1 (en) | 2001-03-16 | 2002-09-16 | Fuji Photo Film Co., Ltd. | Multicolor image-forming material |
JP2003271396A (en) * | 2002-03-15 | 2003-09-26 | Shuji Yamada | Program for control and its developing tool |
US7930215B2 (en) * | 2002-07-31 | 2011-04-19 | Truecontext Corporation | Contextual computing system |
US8799242B2 (en) | 2004-10-08 | 2014-08-05 | Truecontext Corporation | Distributed scalable policy based content management |
US8090844B2 (en) * | 2004-10-08 | 2012-01-03 | Truecontext Corporation | Content management across shared, mobile file systems |
WO2006077481A1 (en) * | 2005-01-19 | 2006-07-27 | Truecontext Corporation | Policy-driven mobile forms applications |
CN106648817B (en) * | 2016-12-09 | 2020-07-28 | 北京酷我科技有限公司 | Cross-platform data object transmission method |
JP6475880B1 (en) | 2018-03-22 | 2019-02-27 | 株式会社フジクラ | Flame retardant resin composition, insulated wire, cable and optical fiber cable using the same |
Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5603031A (en) * | 1993-07-08 | 1997-02-11 | General Magic, Inc. | System and method for distributed computation based upon the movement, execution, and interaction of processes in a network |
US5749081A (en) * | 1995-04-06 | 1998-05-05 | Firefly Network, Inc. | System and method for recommending items to a user |
US5901287A (en) * | 1996-04-01 | 1999-05-04 | The Sabre Group Inc. | Information aggregation and synthesization system |
US5926798A (en) * | 1996-11-28 | 1999-07-20 | International Business Machines Corporation | Method and apparatus for performing computer-based on-line commerce using an intelligent agent |
US6009456A (en) * | 1997-07-30 | 1999-12-28 | Lockheed Martin Corp. | Information exchange by intelligent mobile agents in a network |
US6055562A (en) * | 1997-05-01 | 2000-04-25 | International Business Machines Corporation | Dynamic mobile agents |
US6065040A (en) * | 1997-07-07 | 2000-05-16 | International Business Machines Corporation | Computer system having agent retracting method and agent returning method |
US6119101A (en) * | 1996-01-17 | 2000-09-12 | Personal Agents, Inc. | Intelligent agents for electronic commerce |
US6134580A (en) * | 1996-09-17 | 2000-10-17 | Kabushiki Kaisha Toshiba | Data-processing apparatus, data-processing method, and storage medium onto which is stored a data-processing program |
US6286002B1 (en) * | 1996-01-17 | 2001-09-04 | @Yourcommand | System and method for storing and searching buy and sell information of a marketplace |
US6427142B1 (en) * | 1998-01-06 | 2002-07-30 | Chi Systems, Inc. | Intelligent agent workbench |
US6442663B1 (en) * | 1998-06-19 | 2002-08-27 | Board Of Supervisors Of Louisiana University And Agricultural And Mechanical College | Data collection and restoration for homogeneous or heterogeneous process migration |
Family Cites Families (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0782473B2 (en) * | 1987-08-28 | 1995-09-06 | 株式会社日立製作所 | User interface management device and method |
JP2824256B2 (en) * | 1988-01-27 | 1998-11-11 | 富士通株式会社 | Character display system |
US5884028A (en) * | 1994-07-29 | 1999-03-16 | International Business Machines Corporation | System for the management of multiple time-critical data streams |
US6029064A (en) * | 1995-01-12 | 2000-02-22 | Bell Atlantic Network Services, Inc. | Mobile audio program selection system using public switched telephone network |
US5752246A (en) * | 1995-06-07 | 1998-05-12 | International Business Machines Corporation | Service agent for fulfilling requests of a web browser |
US5790800A (en) * | 1995-10-13 | 1998-08-04 | Digital Equipment Corporation | Client application program mobilizer |
WO1998013756A1 (en) * | 1996-09-27 | 1998-04-02 | Corporation For National Research Initiatives | A system for distributed task execution |
JP3003596B2 (en) * | 1996-10-18 | 2000-01-31 | 日本電気株式会社 | Client server system |
US6018654A (en) * | 1996-10-29 | 2000-01-25 | Ericsson Inc | Method and apparatus for downloading tones to mobile terminals |
US6125384A (en) * | 1996-12-23 | 2000-09-26 | International Business Machines Corporation | Computer apparatus and method for communicating between software applications and computers on the world-wide web |
US5892905A (en) * | 1996-12-23 | 1999-04-06 | International Business Machines Corporation | Computer apparatus and method for providing a common user interface for software applications accessed via the world-wide web |
US6144990A (en) * | 1996-12-23 | 2000-11-07 | International Business Machines Corporation | Computer apparatus and method for communicating between software applications and computers on the world-wide web using universal variable handling |
US6134673A (en) * | 1997-05-13 | 2000-10-17 | Micron Electronics, Inc. | Method for clustering software applications |
GB2332288A (en) * | 1997-12-10 | 1999-06-16 | Northern Telecom Ltd | agent enabling technology |
-
1998
- 1998-08-31 US US09/143,892 patent/US6356964B1/en not_active Expired - Lifetime
-
1999
- 1999-07-21 CN CN99110511A patent/CN1127231C/en not_active Expired - Fee Related
- 1999-08-18 GB GB9919416A patent/GB2343769B/en not_active Expired - Lifetime
- 1999-08-25 KR KR1019990035326A patent/KR20000017510A/en active IP Right Grant
- 1999-08-31 JP JP24482799A patent/JP3965005B2/en not_active Expired - Fee Related
-
2002
- 2002-02-13 US US10/076,778 patent/US20020078277A1/en not_active Abandoned
-
2003
- 2003-10-20 JP JP2003359543A patent/JP4038167B2/en not_active Expired - Fee Related
Patent Citations (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5603031A (en) * | 1993-07-08 | 1997-02-11 | General Magic, Inc. | System and method for distributed computation based upon the movement, execution, and interaction of processes in a network |
US6016393A (en) * | 1993-07-08 | 2000-01-18 | General Magic, Inc. | System and method for distributed computation based upon the movement, execution, and interaction of processes in a network |
US5749081A (en) * | 1995-04-06 | 1998-05-05 | Firefly Network, Inc. | System and method for recommending items to a user |
US6119101A (en) * | 1996-01-17 | 2000-09-12 | Personal Agents, Inc. | Intelligent agents for electronic commerce |
US6286002B1 (en) * | 1996-01-17 | 2001-09-04 | @Yourcommand | System and method for storing and searching buy and sell information of a marketplace |
US5901287A (en) * | 1996-04-01 | 1999-05-04 | The Sabre Group Inc. | Information aggregation and synthesization system |
US6134580A (en) * | 1996-09-17 | 2000-10-17 | Kabushiki Kaisha Toshiba | Data-processing apparatus, data-processing method, and storage medium onto which is stored a data-processing program |
US5926798A (en) * | 1996-11-28 | 1999-07-20 | International Business Machines Corporation | Method and apparatus for performing computer-based on-line commerce using an intelligent agent |
US6115736A (en) * | 1997-05-01 | 2000-09-05 | International Business Machines Corporation | System and method for automatically localizing access to remote network components using implicit agent relocation |
US6055562A (en) * | 1997-05-01 | 2000-04-25 | International Business Machines Corporation | Dynamic mobile agents |
US6065040A (en) * | 1997-07-07 | 2000-05-16 | International Business Machines Corporation | Computer system having agent retracting method and agent returning method |
US6009456A (en) * | 1997-07-30 | 1999-12-28 | Lockheed Martin Corp. | Information exchange by intelligent mobile agents in a network |
US6427142B1 (en) * | 1998-01-06 | 2002-07-30 | Chi Systems, Inc. | Intelligent agent workbench |
US6442663B1 (en) * | 1998-06-19 | 2002-08-27 | Board Of Supervisors Of Louisiana University And Agricultural And Mechanical College | Data collection and restoration for homogeneous or heterogeneous process migration |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040078800A1 (en) * | 2002-07-29 | 2004-04-22 | Manzano Michael R. | System and method for using a mobile agent object to collect data |
US7437733B2 (en) * | 2002-07-29 | 2008-10-14 | Topia Technology, Inc. | System and method for using a mobile agent object to collect data |
US20140143520A1 (en) * | 2012-11-21 | 2014-05-22 | Coherent Logix, Incorporated | Processing System With Interspersed Processors With Multi-Layer Interconnect |
US9430422B2 (en) * | 2012-11-21 | 2016-08-30 | Coherent Logix, Incorporated | Processing system with interspersed processors with multi-layer interconnect |
US20160335218A1 (en) * | 2012-11-21 | 2016-11-17 | Coherent Logix, Incorporated | Processing System With Interspersed Processors With Multi-Layer Interconnection |
US9720867B2 (en) * | 2012-11-21 | 2017-08-01 | Coherent Logix, Incorporated | Processing system with interspersed processors with multi-layer interconnection |
US9990241B2 (en) | 2012-11-21 | 2018-06-05 | Coherent Logix, Incorporated | Processing system with interspersed processors with multi-layer interconnection |
US10185608B2 (en) | 2012-11-21 | 2019-01-22 | Coherent Logix, Incorporated | Processing system with interspersed processors with multi-layer interconnection |
US10521285B2 (en) | 2012-11-21 | 2019-12-31 | Coherent Logix, Incorporated | Processing system with interspersed processors with multi-layer interconnection |
US10838787B2 (en) | 2012-11-21 | 2020-11-17 | Coherent Logix, Incorporated | Processing system with interspersed processors with multi-layer interconnect |
Also Published As
Publication number | Publication date |
---|---|
JP2004094969A (en) | 2004-03-25 |
CN1127231C (en) | 2003-11-05 |
JP4038167B2 (en) | 2008-01-23 |
GB9919416D0 (en) | 1999-10-20 |
CN1246757A (en) | 2000-03-08 |
JP3965005B2 (en) | 2007-08-22 |
KR20000017510A (en) | 2000-03-25 |
US6356964B1 (en) | 2002-03-12 |
JP2000105752A (en) | 2000-04-11 |
GB2343769A (en) | 2000-05-17 |
GB2343769B (en) | 2003-07-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6845505B1 (en) | Web request broker controlling multiple processes | |
US6584612B1 (en) | Transparent loading of resources from read-only memory for an application program | |
US6115736A (en) | System and method for automatically localizing access to remote network components using implicit agent relocation | |
AU742156B2 (en) | Distributed web application server | |
US7747451B2 (en) | Dynamic grid paths | |
CA2308772C (en) | Method and system for facilitating distributed software development in a distribution unaware manner | |
US6718364B2 (en) | Method and apparatus for expedited file downloads in an applet environment | |
US6453362B1 (en) | Systems, methods and computer program products for invoking server applications using tickets registered in client-side remote object registries | |
US7428752B2 (en) | Secure data accessing system and method | |
US6343316B1 (en) | Cooperative work support system | |
US6237005B1 (en) | Web server mechanism for processing multiple transactions in an interpreted language execution environment | |
US6636900B2 (en) | Method and apparatus for executing distributed objects over a network | |
US6356964B1 (en) | Method and apparatus for enabling location-independent and location-transparent interaction between a program and a user | |
US7451197B2 (en) | Method, system, and article of manufacture for network protocols | |
JPH07141206A (en) | Method and system for performing communication between objects over process boundary | |
JP2002101120A (en) | Communication method and information processing apparatus | |
EP0812090B1 (en) | Method and apparatus for running a client computer without a server software | |
CN1520551A (en) | Agent system for mobile agents, computer network and method for downloading agent system from host computer to client computer of computer network | |
US7103889B2 (en) | Method, system, and article of manufacture for agent processing | |
US20040221021A1 (en) | High performance managed runtime environment application manager equipped to manage natively targeted applications | |
JP4738556B2 (en) | Distributed operation system and recording medium | |
KR100305981B1 (en) | System and method for automatically localozing access to remote network camponents using implicit agent relocation | |
Jun et al. | Centrally managed name resolution schemes for EPICS |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
STCB | Information on status: application discontinuation |
Free format text: ABANDONED -- FAILURE TO RESPOND TO AN OFFICE ACTION |