Procedure execution device and procedure execution method6339783Abstract The objective of this invention is to allow the user to invoke a composite remote procedure by connecting remote procedures that are managed on networks in distribution with each other, or define a new remote procedure. A remote procedure client receives a procedure definition hypertext from a remote procedure server, references procedure specifications of predefined remote procedures if necessary, and defines a new remote procedure by combining the predefined procedures. The procedure definition is sent with a procedure definition request to the remote procedure server and is stored. When the defined new procedure is invoked, a procedure execution unit executes the procedure under the control of a remote procedure manager. When an argument of the procedure is a hyperlink, the procedure execution unit executes at first a procedure pointed by the hypelink, and then restarts the original procedure. When the procedure pointed by the hyperlink is a composite procedure, the procedure is executed after the composite procedure is expanded by referencing procedure definitions. Claims What is claimed is: Description BACKGROUND OF THE INVENTION
(5) (http://host2/if
v1=arg
v2=
v3=1
)
[Substep m] The user inputs "http://host2/times" through a keyboard in order to get the procedure specification of multiplication. [Substep n] The same operations as those executed to get the procedure specification of conditional branch are executed. However, "if", "remote procedure container 211(1), attribute memory 2111(1), and procedure specification export unit 2112(1) in the operation for conditional branch are replaced by "times", "remote procedure container 211(2), attribute memory 2111(2), and procedure specification export unit 2112(2), respectively. Receiver 107 receives a hypertext as a reply. [Substep o] Receiver 107 inputs the hypertext to hypertext analyzer 108. [Substep p] Hypertext analyzer 108 analyzes the input hypertext, sends an output request to hypertext output unit 109, and outputs message creation information to message creator 104. [Substep q] According to the output hypertext, the user specifies "arg" and "factorial" as second and first arguments, respectively. [Substep r] The user inputs "http://host2/dec" in order to get a procedure specification of decrement. [Substep s] The same operations as those executed to get the procedure specification of conditional branch are executed. However, "if", "remote procedure container 211(1), attribute memory 2111(1), and procedure specification export unit 2112(1) in the operation for conditional branch are replaced by "dec", "remote procedure container 211(3), attribute memory 2111(3), and procedure specification export unit 2112(3), respectively. Receiver 107 receives a hypertext as a reply. [Substep t] Hypertext analyzer 108 analyzes the input hypertext, sends an output request to hypertext output unit 109, and outputs message creation information to message creator 104. [Substep u] According to the output hypertext, the user specifies "arg" as a first argument. [Step 12] The procedure definition created by the user is shown in the following. Also, the concept of the procedure definition is shown in FIG. 2.
(6) (http://host2/if
v1=arg
v2=(http://host2/times
v1=(http://host2/factorial
arg=(http://host2/dec
vi=arg
)
)
v2=arg
)
v3=1
)
[Step 13] When the user clicks the "Execute Definition" button on a display by using a mouse, message creator 104 outputs a procedure definition request message that includes the above-described hypertext to transmitter 106. [Step 14] When receiver 202 receives the procedure definition request message, it outputs the procedure definition request message to message analyzer 204. [Step 15] Message analyzer 204 analyzes the input procedure definition request message, extracts an attribute definition expression, a procedure specification expression and a procedure definition expression, and respectively inputs the attribute definition, procedure specification expression and procedure definition expression to attribute creator 206, procedure specification creator 207 and procedure definition creator 208. [Step 16] When attribute creator 206 receives attribute definition expression "name=factorial", it analyzes the attribute definition expression and create attribute memory 2111(a) (not shown in the figure) that stores "factorial" as an attribute value of attribute "name". [Step 17] When procedure specification creator 207 receives the procedure specification definition expression, it creates procedure specification export unit 2112(a) (not shown in the figure) that stores the procedure specification definition expression. [Step 18] When procedure definition creator 208 receives the procedure definition expression, it creates procedure definition unit 2113(a) (not shown in the figure) that stores the received procedure definition expression and outputs a message obtained by transforming the procedure definition expression according to a procedure definition algorithm to transmitter 203. In this embodiment, procedure definition unit 2113(a) is defined as an interpreter. However, it is possible that the procedure definition unit stores object codes obtained by compiling the procedure definition expression. Next, an invocation of the defined remote procedure is explained in detail. Here, an example that calls the remote procedure of factorial defined above in the embodiment, is explained. The user inputs string "http://host2/factorial" and a message creation request into user input unit 102 in order to get the specification of factorial. Message creator 104 receives the string as a message creation information and creates a message therefrom. More in detail, message creator 104 creates a message to remote procedure container 211 corresponding to name attribute "factorial" and requests of transmitter 106 to send the message to receiver 202 corresponding to "http://host2". Transmitter 106 retrieves receiver 202, which corresponds to string "http://host2/". Then, transmitter 106 send message "GET/factorial" to receiver 202. When receiver 202 receives the message, it inputs the message into message analyzer 204. Message analyzer 204 analyzes the message and requests of remote procedure manager 210 to retrieve procedure specification export unit 2112(a) in which the value of attribute "name" is "factorial" and export the specification. Remote procedure manager 210 retrieves remote procedure 211(a) (not shown in the figure) and requests of the retrieved remote procedure 211(a) to export the specification. Remote procedure container 211(a) requests of procedure specification export unit 2112(a) to export the specification. Procedure specification export unit 2112(a) outputs the following hypertext (7) of a procedure specification. (7) <HEAD> <TITLE> Page for factorial </TITLE> </HEAD> <H1> Page for factorial </H1> Receiving an integer or a hyperlink, and returning the factorial thereof <HR> <FORM METHOD="GET" ACTION="/factorial"> Argument: <INPUT NAME="arg" TYPE="entry"><P> <INPUT TYPE="submit" VALUE="Start Functional Up"> </FORM> <HR> Remote procedure manager 210 returns the hypertext of the specification as a reply to receiver 107 via transmitter 203. The receiver 107 that receives the hypertext outputs the hypertext to hypertext analyzer 108. According to the hypertext, hypertext analyzer 108 requests of hypertext output unit 109 to display the specification for the factorial procedure to show it to the user. The specification shows that, for example, the procedure has one hyperlink or decimal integer argument and returns the factorial of the argument as a result, or message creation information used to request a procedure execution is "http://host2/factorial". The user instructs user input unit 102 to assign "2" to the argument. According to the assignment to the argument and the message creation information, message creator 104 requests of transmitter 106 to send message "GET /factorial?arg=2" to the host represented by "http://host2". Transmitter 106 sends message "GET/factorial?arg=2" to receiver 202. Receiver 202 that receives the message inputs the message to message analyzer 204. Message analyzer 204 analyzes the message and requests of remote procedure manager 210 to execute procedure definition of procedure definition unit 2113(a) contained by remote procedure container 211 in which the value of attribute "name" is "factorial" under the environment in which "2" is assigned to variable "arg". In other words, remote procedure manager 210 retrieves remote procedure container 211(a) and requests of remote procedure execution unit 212 to execute the procedure definition contained by procedure definition unit 2113(a) in the retrieved remote procedure container 211(a). Procedure execution unit 212 requests of procedure execution environment manager 213 to bind "2" to variable "arg". Procedure execution unit 212 transforms the following expression (8) into the message (9) according to the list transformation algorithm.
(8) (http://host2/if
v1=arg
v2=(http://host2/times
v1=(http://host2/factorial
arg=(http://host2/dec
v1=arg
)
)
v2=arg
)
v3=1
)
(9) http://host2/ if?v1=2&v2=http%3A%2F%2Fhost2%2Ftimes%3Fv1%3Dhttp%253A%252F%252Fhost2%252F factorial%253Farg%253Dhttp%25253A%25252F%25252Fhost2%25252Fdec%25253Fv1%252 53D2%26v2%3D2&v3=1 Next, according to the message (9), procedure execution unit 212 requests of transmitter 203 to send the following message to the receiver corresponding to "http://hosts". (10) GET / if?v1=2&v2=http%3A%2F%2Fhost2%2Ftimes%3Fv1%3Dhttp%253A%252F%252Fhost2%252F factorial%253Farg%253Dhttp%25253A%25252F%25252Fhost2%25252Fdec%25253Fv1%252 53D2%26v2%3D2&v3=1 Transmitter 203 sends the message to receiver 202, which corresponds to "http://host2". Receiver 202 that receives the message inputs the message to message analyzer 204. Message analyzer 204 analyzes the message and requests of remote procedure manager 210 to extract procedure definition of remote procedure container 211 in which value of attribute "name" is "if". Remote procedure manager 210 retrieves remote procedure container 211(1) and requests of procedure definition unit 2113(1) to output the procedure definition. Procedure definition unit 2113(1) outputs the procedure definition that defines a conditional branch algorithm. Remote procedure manager 210 requests of procedure execution unit 212 to execute the conditional branch algorithm under the environment as follows. (11) v1=2 v2=http://host2/ times?v1=http%3A%2F%2Fhost2%2Ffactorial%3Farg%3Dhttp%253A%252F%252Fhost2%2 52Fdec%253Fv1%253D2&v2=2 v3=1 Procedure execution unit 212 executes the conditional branch algorithm 211-1. Since the assignment to argument "v1" is "2", procedure execution unit 212 analyzes the assignment to argument "v2". Since the assignment to argument "v2" is a hyperlink, procedure execution unit 212 makes a request for sending a message corresponding to the hyperlink. More in detail, procedure execution unit 212 requests of transmitter 203 to send the following message (12) to the receiver identified by "http://host2". (12) GET / times?v1=http%3A%2F%2Fhost2%2Ffactorial%3Farg%3Dhttp%253A%252F%252Fhost2%2 52Fdec%253Fv1%253D2&v2=2 Transmitter 203 sends the message to receiver 202 corresponding to the hyperlink. Receiver 202 that receives the message inputs the message to message analyzer 204. Message analyzer 204 analyzes the message and requests of remote procedure manager 210 to extract the procedure definition of remote procedure container 211 in which the value of attribute "name" is "times". More in detail, remote procedure manager 210 retrieves remote procedure container 211(2) and requests of procedure definition unit 2113(2) to output the procedure definition. Procedure definition unit 2113(2) outputs the procedure definition that defines a multiplication algorithm. Remote procedure manager 210 requests of procedure execution unit 212 to executes the multiplication algorithm under the following environment. (13) v1=http://host2/factorial?arg=http%3A%2F%2Fhost2%2Fdec%3Fv1%3D2 v2=2 Procedure execution unit 212 executes the multiplication algorithm. Procedure execution unit 212 examines the assignment to argument "v1". Since the assignment is a message including a hyperlink, procedure execution unit 212 requests of transmitter 203 to send the message. That is, procedure execution unit 212 requests of transmitter 203 to send the following message (14) to the receiver identified by "http://host2". (14) GET /factorial?arg=http%3A%2F%2Fhost2%2Fdec%3Fv1%3D2 Transmitter 203 sends the message to receiver 202. Receiver 202 that receives the message inputs the message to message analyzer 204. Message analyzer 204 analyzes the message and requests of remote procedure manager 210 to execute the procedure definition of the procedure definition unit contained by remote procedure container 211 in which the value of attribute "name" is "factorial" under the environment in which value "http://host2/dec?v1=2" is assigned to argument "arg". Remote procedure manager 210 retrieves remote procedure container 211(a) and requests of procedure execution unit 212 to execute the procedure definition contained by procedure definition unit 211(a). Procedure execution unit 212 requests of procedure execution environment manager 213 to bind "http://host2/dec?v1=2" to argument "arg". Procedure execution unit 212 transforms the expression (15) into message (16) according to the list transformation algorithm.
(15) (http://host2/if
v1=arg
v2=(http://host2/times
v1=(http://host2/factorial
arg=(http://host2/dec
v1=arg
)
v2=arg
)
v3=1
)
(16) http://host2/ if?v1=http%3A%2F%2Fhost2%2Fdec%3Fv1%3D2&v2=http%3A%2F%2Fhost2%2Ftimes%3Fv1 %3Dhttp%253A%252F%252Fhost2%252Ffactorial%253Farg%253Dhttp%25253A%25252F%25 252Fhost2%25252Fdec%25253Fv1%25253Dhttp%2525253A%2525252F%2525252Fhost2%252 5252Fdec%2525253Fv1%2525253D2%26v2%3Dhttp%253A%252F%252Fhost2%252Fdec%253Fv 1%253D2&v3=1 Next, procedure execution unit 212 requests of transmitter 203 to send the following message (17) to the receiver corresponding to "http://host2" in accordance with the message (16). (17) http://host2/ if?v1=http%3A%2F%2Fhost2%2Fdec%3Fv1%3D2&v2=http%3A%2F%2Fhost2%2Ftimes%3Fv1 %3Dhttp%253A%252F%252Fhost2%252Ffactorial%253Farg%253Dhttp%25253A%25252F%25 252Fhost2%25252Fdec%25253Fv1%25253Dhttp%2525253A%2525252F%2525252Fhost2%252 5252Fdec%2525253Fv1%2525253D2%26v2%3Dhttp%253A%252F%252Fhost2%252Fdec%253Fv 1%253D2&v3=1 Transmitter 203 sends the message (17) to receiver 202, which corresponds to "http://host2". Receiver 202 that receives the message (17) inputs the message to message analyzer 204. Message analyzer 204 analyzes the message and requests of remote procedure manager 210 to extract the procedure definition of remote procedure container 211 in which the value of attribute "name" is "if". Remote procedure manager 210 retrieves remote procedure container 211(1) and requests of procedure definition unit 2113(1) to output its procedure definition. Procedure definition unit 2113(1) outputs the procedure definition that defines a conditional branch algorithm. Remote procedure manager 210 requests of procedure execution unit to execute the conditional branch algorithm under the following environment. (18) v1=http://host2/dec?v1=2 v2=http://host2/ times?v1=http%3A%2F%2Fhost2%2Ffactorial%3Farg%3Dhttp%253A%252F%252Fhost2%2 52Fdec%253Fv1%253Dhttp%25253A%25252F%25252Fhost2%25252Fdec%25253Fv1%25253D2 &v2=http%3A%2F%2Fhost2%2Fdec%3Fv1%3D2 v3=1 Procedure execution unit 212 executes the conditional branch algorithm. Since the assignment to argument "v1" is a hyperlink, procedure execution unit 212 makes a request for sending a message corresponding to the hyperlink. More in detail, Procedure execution unit 212 requests of transmitter 203 to send message "GET /dec?v1=2" to receiver 202, which is identified by "http://host2". Transmitter 203 transmits the message to receiver 202. Receiver 202 that receives the message inputs the message to message analyzer 204. Message analyzer 204 analyzes the message and requests of remote procedure manager 210 to extract the procedure definition of remote procedure container 211 in which the value of attribute "name" is "dec". Remote procedure manager 210 retrieves remote procedure container 211(3) and request of procedure definition unit 2113(3) to output the procedure definition. Procedure definition unit 2113(3) outputs the procedure definition that defines a decrement algorithm. Remote procedure manager 210 requests of procedure execution unit 212 to execute the decrement algorithm under the environment of "v1=2". Procedure execution unit 212 executes the decrement algorithm. Procedure execution unit 212 returns the following hypertext (19) to receiver 202 as a result. This hypertext includes "1", which is the result obtained by subtracting 1 from 2. (19) <H2> Result of subtraction </H2> First argument: 2 <P> Result: 1 <P> Procedure execution unit 212 in the conditional branch algorithm receives hypertext as a reply. The procedure execution unit 212 analyzes the reply according to the conditional branch algorithm and get "1" as a second assignment to "v1". Since the second assignment to "v1" is not "0", procedure execution unit 212 examines the assignment to argument "v2". Since the assignment to "v2" is the hypertext shown as follows, procedure execution unit 212 requests of transmitter 203 to send a message. (20) v2=http://host2/ times?v1=http%3A%2F%2Fhost2%2Ffactorial%3Farg%3Dhttp%253A%252F%252Fhost2%2 52Fdec%253Fv1%253Dhttp%25253A%25252F%25252Fhost2%25252Fdec%25253Fv1%25253D2 &v2=http%3A%2F%2Fhost2%2Fdec%3Fv1%3D2 More in detail, procedure execution unit 212 requests of transmitter 203 that is represented by "http://host2", to send the following message to receiver 202, which is identified by "http://host2". (21) GET / times?v1=http%3A%2F%2Fhost2%2Ffactorial%3Farg%3Dhttp%253A%252F%252Fhost2%2 52Fdec%253Fv1%253Dhttp%25253A%25252F%25252Fhost2%25252Fdec%25253Fv1%25253D2 &v2=http%3A%2F%2Fhost2%2Fdec%3Fv1%3D2 Transmitter 203 sends the message to receiver 202. Message analyzer 204 analyzes the message and requests of remote procedure manager 210 to extract the procedure definition of remote procedure container 211 in which the value of an attribute "name" is "times". Remote procedure manager 210 retrieves remote procedure container 211(2) and requests of procedure definition unit 2113(2) to output the procedure definition. Procedure definition unit 2113(2) outputs a procedure definition that defines an multiplication algorithm. Remote procedure manager 210 requests of procedure execution unit 212 to execute the multiplication algorithm under the following environment. (22) v1=http://host2/ factorial?arg=http%3A%2F%2Fhost2%2Fdec%3Fv1%3Dhttp%253A%252F%252Fhost2%252 Fdec%253Fv1%253D2 v2=http://host2/dec?v1=2 Procedure execution unit 212 examines the assignment to argument "v1". Since the assignment is a message including a hyperlink, procedure execution unit 212 requests of transmitter 203 to send a message. More in detail, procedure execution unit 212 requests of transmitter 203 to send the following message to receiver 202, which is identified by "http://host2". (23) GET / factorial?arg=http%3A%2F%2Fhost2%2Fdec%3Fv1%3Dhttp%253A%252F%252Fhost2%252 Fdec%253Fv1%253D2 Transmitter 203 sends the message to receiver 202. Receiver 202, which receives the message, inputs the message to message analyzer 203. Message analyzer 204 analyzes the message and requests of remote procedure manager 210 to extract the procedure definition of remote procedure container 211 in which the value of an attribute "name" is "factorial". Remote procedure manager 210 retrieves remote procedure container 211(a) and requests of procedure definition unit 2113(a) to output the procedure definition. Procedure definition unit 2113(a) outputs the procedure definition of a factorial algorithm. Remote procedure manager 210 transforms the expression (25) into the message (26) under the environment (24) according to a list transformation algorithm. (24) arg=http://host2/dec?v1=http%3A%2F%2Fhost2%2Fdec%3Fv1%3D2
(25) (http://host2/if
v1=arg
v2=(http://host2/times
v1=(http://host2/factorial
arg=(http://host2/dec
v1=arg
)
)
v2=arg
)
)
(26) http://host2/ if?v1=http%3A%2F%2Fhost2%2Fdec%3Fv1%3Dhttp%253A%252F%252Fhost2%252Fdec%253 Fv1%253D2&v2=http%3A%2F%2Fhost2%2Ftimes%3Fv1%3Dhttp%253A%252F%252Fhost2%252 Ffactorial%253Farg%253Dhttp%25253A%25252F%25252Fhost2%25252Fdec%25253Fv1%25 253Dhttp%2525253A%2525252F%2525252Fhost2%2525252Fdec%2525253Fv1%2525253Dhtt p%252525253A%252525252F%252525252Fhost2%252525252Fdec%252525253Fv1%25252525 3D2%26v2%3Dhttp%253A%252F%252Fhost2%252Fdec%253Fv1%253Dhttp%25253A%25252F%2 5252Fhost2%25252Fdec%25253Fv1%25253D2&v3=1 Next, according to the message (26), procedure execution unit 212 requests of transmitter 203 to send the following message (27) to receiver 202, which corresponds to "http://host2". (27) GET / if?v1=http%3A%2F%2Fhost2%2Fdec%3Fv1%3Dhttp%253A%252F%252Fhost2%252Fdec%253 Fv1%253D2&v2=http%3A%2F%2Fhost2%2Ftimes%3Fv1%3Dhttp%253A%252F%252Fhost2%252 Ffactorial%253Farg%253Dhttp%25253A%25252F%25252Fhost2%25252Fdec%25253Fv1%25 253Dhttp%2525253A%2525252F%2525252Fhost2%2525252Fdec%2525253Fv1%2525253Dhtt p%252525253A%252525252F%252525252Fhost2%252525252Fdec%252525253Fv1%25252525 3D2%26v2%3Dhttp%253A%252F%252Fhost2%252Fdec%253Fv1%253Dhttp%25253A%25252F%2 5252Fhost2%25252Fdec%25253Fv1%25253D2&v3=1 Transmitter 203 sends the message (27) to receiver 202, which corresponds to "http://host2". Receiver 202, which receives the message, inputs the message to message analyzer 204. Message analyzer 204 analyzes the message and requests of remote procedure manager 210 to extract the procedure definition of remote procedure container 211 in which the value of an attribute "name" is "if". Remote procedure manager 210 retrieves remote procedure container 211(1) and requests of procedure definition unit 2113(1) to output the procedure definition that defines a conditional branch algorithm. Remote procedure manager 210 requests of procedure execution unit 212 to execute the conditional branch algorithm under the following environment. (28) v1=http://host2/dec?v1=http%3A%2F%2Fhost2%2Fdec%3Fv1%3D2v2=http://host2/ times?v1=http%3A%2F%2Fhost2%2Ffactorial%3Farg%3Dhttp%253A%252F%252Fhost2%2 52Fdec%253Fv1%253Dhttp%25253A%25252F%25252Fhost2%25252Fdec%25253Fv1%25253Dh ttp%2525253A%2525252F%2525252Fhost2%2525252Fdec%2525253Fv1%2525253D2&v2=htt p%3A%2F%2Fhost2%2Fdec%3Fv1%3Dhttp%253A%252F%252Fhost2%252Fdec%253Fv1%253D2 v3=1 Procedure execution unit 212 executes the conditional branch algorithm. As a result, "0" is obtained as the assignment to "v1". To simplify the explanation, details of the execution is not described here. Procedure execution unit 212 outputs the following hypertext (29) according to the conditional branch algorithm. (29) <H2> Result of condition matching</H2> condition: http://host2/dec?v1=http%3A%2F%2Fhost2%2Fdec%3Fv1%3D2<P> Satisfied: http://host2/ times?v1=http%3A%2F%2Fhost2%2Ffactorial%3Farg%3Dhttp%253A%252F%252Fhost2%2 52Fdec%253Fv1%253Dhttp%25253A%25252F%25252Fhost2%25252Fdec%25253Fv1%25253Dh ttp%2525253A%2525252F%2525252Fhost2%2525252Fdec%2525253Fv1%2525253D2&v2=htt p%3A%2F%2Fhost2%2Fdec%3Fv1%3Dhttp%253A%252F%252Fhost2%252Fdec%253Fv1%253D2 <P> Unsatisfied: 1<P> Result: 1 Procedure execution unit 212 returns the hypertext as a reply to procedure execution unit 212 that is executing the multiplication algorithm via transmitter 203 and receiver 202. Procedure execution unit 212 analyzes the reply and gets "1" as a second assignment to "v1". Next, in order to get the second assignment to "v2", a message is passed to transmitter 203 according to the first assignment to "v2", which is "http://host2/dec?v1=2". To simplify the explanation, details are not described here; however, procedure execution unit 212 gets an integer "1" as the assignment to "v2". Then, according to the multiplication algorithm, procedure execution unit 212 gets integer "1" as a result. Further, procedure execution unit 212 outputs the following hypertext. (30) First argument: http://host2/ factorial?arg=http%3A%2F%2Fhost2%2Fdec%3Fv1%3Dhttp%253A%252F%252Fhost2%252 Fdec%253Fv1%253D2 <P> Second argument: http://host2/dec?v1=2 <P> Result: 1 Procedure execution unit 212 returns the hypertext as a reply to procedure execution unit 212 that is executing the multiplication algorithm via transmitter 203 and receiver 202. Procedure execution unit 212 analyzes the reply and gets "http://host2/factorial?arg=http" as the first assignment to "v1" and "1" as a second assignment to "v1". Procedure execution unit 212 multiplies the assignment to "v1" by the assignment to "v2" and gets integer "2" as a result. Procedure execution unit 212 outputs the following hypertext (31). (31) <H2> Result of multiplication </H2> First argument: http://host2/factorial?arg=http%3A%2F%2Fhost2%2Fdec%3Fv1 %3D2 <P> Second argument: 2 <P> Result: 2 Procedure execution unit 212 returns the hypertext as a reply to procedure execution unit 212 that is executing the conditional branch algorithm via transmitter 203 and receiver 202. Procedure execution unit 212 outputs the following hypertext (32). (32) <H2> Call expression </H2> http://host2/ if?v1=2&v2=http%3A%2F%2Fhost2%2Ftimes%3Fv1%3Dhttp%253A%252F%252Fhost2%252F Factorial%253Farg%253Dhttp%25253A%25252F%25252Fhost2%25252Fdec%25253Fv1%252 53D2%26v2%3D2&v3=1 <H2> Result of multiplication </H2> First argument: http://host2/factorial?arg=http%3A%2F%2Fhost2%2Fdec%3Fv1 %3D2 <P> Second argument: 2 <P> Result: 2 Transmitter 203 sends the hypertext (32) as a reply to receiver 107. Receiver 107 outputs the received hypertext to hypertext analyzer 108. Hypertext analyzer 108 analyzes the hypertext and requests of hypertext output unit 109 to display characters according to the result of analysis. The explanation of the first embodiment is finished here. As described above, according to this configuration, the user can define a procedure easily by using a template of procedure definition and execute the defined procedure on a server. [Second Embodiment] In the second embodiment, same as the first embodiment, interfaces of plural remote procedure are exported by using hypertexts and a remote procedure is defined by combining them as a hypertexts. FIG. 3 is a block diagram showing the configuration of the second embodiment. According to this figure, the second embodiment is different from the first embodiment in that remote procedure client 100 executes procedures, instead of remote procedure server 200. In other words, remote procedure client has procedure execution unit 110 and procedure execution environment manager 111. Procedure execution unit 110 executes a procedure according to a list of arguments inputted by message analyzer 204. During a procedure execution, when another procedure execution by remote procedure container 211 is requested, a message is sent through message analyzer 204. In FIG. 2, since the other configuration of the second embodiment is the same as that of the first embodiment, the same number is given to the corresponding unit and details are not described here. Next, an example that synthesizes a procedure that retrieves a page and a procedure that retrieves a child page. In this example, all procedure definition units 2113 are supposed to have arguments "v1", "v2" and "v3" for convenience of explanation, unless otherwise provided. We use the notation of a message as "http://host2/fname?v1=a1&v2=a2". It means that remote procedure container 211 including attribute memory 2111 in which the attribute value of attribute "name" is "fname" has arguments "v1", "v2", or the like. The message also means that values "a1" and "a2" are assigned to arguments "v1" and "v2", respectively. At the beginning, remote procedure container 211(4), which stores information related to a reference extraction procedure, is explained. Attribute memory 2111(4) of remote procedure container 211(4) stores an attribute in that the value of attribute name "name" is "/children". Procedure specification export unit 2112(4) stores the following specification. (33) <HEAD> <TITLE> Page for extracting references </TITLE> </HEAD> <H1> Page for extracting references </H1> Page for extracting references included in a page as a list <P> <HR> <FORM METHOD="GET" ACTION="http://host2/children"> URL of page: <INPUT NAME="v1" TYPE="entry"> <P> <INPUT TYPE="submit" VALUE="Start Function"> </FORM> Procedure definition unit 2113(4) stores such a procedure definition that procedure execution unit 110 follows the following reference extraction algorithm. [Step 1] "0" is set to variable "count", that stores the number of the found references. [Step 2] The assignment to "v1" is outputted to transmitter 106, and a reply is received from receiver 107. This reply is referred as "reply 1". [Step 3] Header information is outputted. [Step 4] The reply 1 is analyzed and characters are read until a reference start mark appears. When a reference start mark appears, the control goes to the next step. When the reply is analyzed to the end, the control goes to step 7. [Step 5] A delimiter of a list is outputted. [Step 6] Characters from the reference start mark to a reference end mark are outputted. The value of variable "count" is incremented and the control goes to step 4. [Step 7] "0" is outputted, when the value of variable "count" is "0". [Step 8] A footer information is outputted. Next, remote procedure container 211(5), which stores information related to a procedure that examines the title of a page, is explained. Attribute memory 2111(5) of remote procedure container 211(5) stores an attribute in that the value of the attribute name "name" is "/title-is". Procedure specification export unit 2112(5) stores the following hypertext. (34) <HEAD> <TITLE> Page for examining the title of a page </TITLE> </HEAD> <H1> Page for examining the title of a page </H1> Page for examining whether the title of a page is the same as an argument <P> <HR> <FORM METHOD="GET" ACTION="http://host2/title-is"> URL of page: <INPUT NAME="v1" TYPE="entry"><P> Title: <INPUT NAME="v2" TYPE="entry"><P> <INPUT TYPE="submit" VALUE="Start Function"> </FORM> Procedure definition unit 2113(5) stores such a procedure definition that procedure execution unit 110 follows the following title examination algorithm. [Step 1] The assignment to variable "v1" is outputted to transmitter 106, and a reply is received from receiver 107. This reply is referred as "reply 1". [Step 2] Header information is outputted. [Step 3] The reply 1 is analyzed, and characters are read until a title start mark appears. [Step 4] Characters between the end of title start mark and the head of title end mark are outputted as a title. [Step 5] The title is compared with a string, which is the assignment to variable "v2". [Step 6] As a result of the comparing, the title is outputted when they are matched. Meanwhile, "0" is outputted when they are not matched. Next, remote procedure container 211(6), which stores information related to a procedure that loads the first reference included in a page, is explained. Attribute memory 2111(6) of remote procedure container 211(6) stores an attribute in that the value of the attribute name "name" is "first". Procedure specification export unit 2112(6) stores the following hypertext. (35) <HEAD> <TITLE> Page for loading the first reference included in a page </TITLE> </HEAD> <H1> Page for loading the first reference included in a page </H1> Loading the first reference included in the specified page<P> <HR> <FORM METHOD="GET" ACTION="http://host2/first"> URL of page: <INPUT NAME="v1" TYPE="entry"><P> <INPUT TYPE="submit" VALUE="Start Function"> </FORM> Procedure definition unit 2113(6) stores such a procedure definition that procedure execution unit 110 follows the following title examination algorithm. [Step 1] The assignment to "v1" is outputted to transmitter 106 and a reply is received from receiver 107. This reply is referred as "reply 1". [Step 2] The reply 1 is analyzed from the head, and the reference that comes first is set to "reference 1". [Step 3] The reference 1 is outputted to transmitter 106, and a reply is received from receiver 107. This reply is referred as "reply 2". [Step 4] The reply 2 is outputted through transmitter 106. Next, remote procedure container 211(7), which stores information related to a procedure that extracts references on and after the second reference included in a page, is explained. Attribute memory 2111(7) of remote procedure container 211(7) stores an attribute in that the value of the attribute name "name" is "rest". Procedure specification export unit 2112(7) stores the following hypertext. (36) <HEAD> <TITLE> Page for extracting elements on and after the second element in a list </TITLE> </HEAD> <H1> Page for extracting elements on and after the second element in a list </H1> Page for extracting elements on and after the second element in a list, and outputting the extracting elements as a list <P> Outputting "0" when there is no element on and after the second element in a list <HR> <FORM METHOD="GET" ACTION="http://host2/rest"> URL of page: <INPUT NAME="v1" TYPE="entry"><P> <INPUT TYPE="submit" VALUE="Start Function"> </FORM> Procedure definition unit 2113(7) stores such a procedure definition that procedure execution unit 110 follows the following algorithm. [Step 1] "0" is set to variable "count", that stores the number of the found references. [Step 2] The assignment to "v1" is outputted to transmitter 106 and a reply is received from receiver 107. This reply is referred as "reply 1". [Step 3] Header information is outputted. [Step 4] The reply 1 is analyzed, and characters are read until a reference start mark appears. When a reference start mark appears, the control goes to the next step. When the reply is analyzed to the end, the control goes to step 7. [Step 5] When "count" is "0", "count" is incremented and the control goes to step 4. Otherwise, a delimiter of a list is outputted and the control goes to the next step. [Step 6] Characters between the reference start mark and a reference end mark is outputted. The variable "count" is incremented and the control goes to the next step. [Step 7] "0" is outputted, when the value of variable "count" is "0" or "1". [Step 8] Footer information is outputted. Next, an example of operations that defines a new procedure is explained. The following explains user inputs, operations of remote procedure client 100 and operations of remote procedure server 200, when remote procedure that retrieves a page is defined. [Step 1] The user inputs a URL represented by string "http://host2/define" through user input unit 102 in order to request of remote procedure server 200 to define a remote procedure. [Step 2] Message creator 104 requests of transmitter 106 to send message "GET/define" to receiver 202 identified by "host2". [Step 3] Transmitter 106 sends the message to receiver 202. [Step 4] Receiver 202 inputs the received message to message analyzer 204. [Step 5] Message analyzer 204 analyzes the message. Since the message is a definition hypertext output request, message analyzer 204 requests of definition hypertext output unit 209 to output a hypertext. [Step 6] Definition hypertext output unit 209 outputs the following hypertext to transmitter 203. (37) <HEAD> <TITLE> Page for defining remote procedure </TITLE> </HEAD> <H1> Page for defining remote procedure </H1> <HR> <FORM METHOD="POST" ACTION="/define"> Designation of attribute: <INPUT NAME="attribute" TYPE="entry"><P> Designation of procedure specification: <INPUT NAME="spec" TYPE="entry"><P> Designation of procedure definition: <INPUT NAME="definition" TYPE="entry"><P> <INPUT TYPE="submit" VALUE="Execution of definition"> </FORM> <HR> [Step 7] Transmitter 203 outputs the hypertext to receiver 107. [Step 8] Receiver 107 analyzes the received hypertext and requests of hypertext output unit 109 to display the hypertext. [Step 9] Hypertext output unit 109 displays the hypertext to show it to the user. [Step 10] According to the displayed hypertext, the user inputs "name=find" as an attribute, and the following procedure specification. (38) <HEAD> <TITLE> Page for retrieving a page </TITLE> </HEAD> <H1> Page for retrieving a page </H1> Receiving a hyperlink and a title, and tracing links until finding a page having the title <HR> <FORM METHOD="GET" ACTION="/find"> Start page: <INPUT NAME="url" TYPE="entry"><P> Title: <INPUT NAME="title" TYPE="entry"><P> <INPUT TYPE="submit" VALUE="Start Functional Up"> </FORM> <HR> [Step 11] Next, the user inputs a procedure definition according to the following process. [Substep a] The user inputs "http://host2/if" by using a keyboard in order to get the procedure specification of the conditional branch procedure. [Substep b] Message creator 104 requests of transmitter 106 to send message "GET/if" to receiver 202 represented by "http://host2". [Substep c] Transmitter 106 sends the message to receiver 202. [Substep d] Receiver 202 outputs the received message to message analyzer 204. [Substep e] Message analyzer 204 analyzes the message. Since the message is a procedure specification export request, message analyzer 204 requests of remote procedure manager 210 to retrieve remote procedure container 211 whose value of attribute name is "if" and to request of the retrieved remote procedure container 211 to export its procedure specification. [Substep f] Remote procedure manager 210 retrieves remote procedure container 211(1) whose attribute is "if", and requests of the retrieved remote procedure container 211(1) to export its procedure specification. [Substep g] Remote procedure container 211(1) requests of procedure specification export unit 2112(1) to export the specification. [Substep h] Procedure specification export unit 2112(1) outputs the specification related to the procedure definition contained by procedure definition unit 2113(1) in the form of a hypertext in response to the hypertext export request. [Substep i] Remote procedure manager 210 returns the hypertext as a reply to receiver 107 through transmitter 203. [Substep j] Receiver 107 inputs the received hypertext to hypertext analyzer 108. [Substep k] Hypertext analyzer 108 analyzes the input hypertext, requests of hypertext output unit 109 to output the hypertext, and outputs message creation information to message creator 104. [Substep l] According to the output hypertext, the user specifies "url" as an item when the condition satisfies. Then, the user gets the specification of a procedure that examines a title in order to input an expression of condition. At this moment, message memory 105 stores the following message (39).
(39) (http://host2/if
v1=
v2=url
v3=
)
[Substep m] The user inputs "http://host2/titile-is" by using a keyboard in order to get the specification of a procedure that examines a title. [Substep n] A message is sent through message creator 104 and transmitter 106. Then, a hypertext is received as a return from procedure specification export unit 2112(5). [Substep o] Receiver 107 inputs the received hypertext to hypertext analyzer 108. [Substep p] Hypertext analyzer 108 analyzes the input hypertext, sends an output request to hypertext output unit 109, and outputs message creation information to message creator 104. [Substep q] According to the output hypertext, the user specifies "url" and "title" as the first and second arguments, respectively. [Substep r] Then the user specifies the third argument of the procedure "if". At this time, since the user wants to specify undefined procedure "find-sub", the user directly inputs the following call expression through a keyboard. (40) http://host2/find-sub urls=(http://host2/children v1=url) title=title [Step 12] The final procedure definition created by the user is shown in the following. Also, the concept of the procedure definition is shown in the upper part of FIG. 4.
(41) (http://host2/if
v1=(http://host2/title-is
v1=url
v2--title
)
v2=url
v3=(http://host2/find-sub
urls=(http://host2/children
v1=url
)
title=title
)
)
[Step 13] When the user clicks the "Execute Definition" button on the display by using a mouse, message creator 104 outputs a procedure definition request message that includes the above-described hypertext to transmitter 106. [Step 14] When receiver 202 receives the procedure definition request message, it outputs procedure definition request message to message analyzer 204. [Step 15] Message analyzer 204 analyzes the input procedure definition request message, extracts an attribute definition expression, a procedure specification expression and a procedure definition expression, and respectively inputs to attribute creator 206, procedure specification creator 207 and procedure definition creator 208. [Step 16] When attribute creator 206 receives an attribute definition expression "name=find", it analyzes the definition expression and create attribute memory 2111(a) (not shown in the figure) that stores "find" as an attribute value of "name". [Step 17] When procedure specification creator 207 receives the procedure specification definition expression, it creates procedure specification export unit 2112(a) (not shown in the figure) that stores the procedure specification definition expression. [Step 18] When procedure definition creator 208 receives the procedure definition expression, it creates procedure definition unit 2113(a) (not shown in the figure) that stores the received procedure definition expression and outputs a message obtained by transforming the procedure definition expression to transmitter 203. Next, the user creates remote procedure container 211(b) by using the same method as that of procedure "find". Procedure specification export unit 2112(b) of procedure container 211(b) stores the following hypertext. (42) <HEAD> <TITLE> Page for retrieving a child page </TITLE> </HEAD> <H1> Page for retrieving a child page </H1> Receiving a hyperlink and a title, and tracing links until finding a child page having the title <HR> <FORM METHOD="GET" ACTION="/find-sub"> Start Page: <INPUT NAME="urls" TYPE="entry"22 <P> Title: <INPUT NAME="title" TYPE="entry"><P> <INPUT TYPE="submit" VALUE="Start Functional Up"> </FORM> <HR> Procedure definition unit 2113(b) of procedure container 211(b) stores the following expression. Also, the concept of the procedure definition is shown in the lower part of FIG. 4.
(43) (http://host2/if
v1=urls
v2=(http://host2/if
v1=(http://host2/find
url=(http://host2/first
v1=urls
)
title=title)
)
v2=(http://host2/find
url=(http://host2/first
v1=urls
)
title=title)
)
v3=(http://host2/find-sub
urls=(http://host2/rest
v1=urls
)
title=title
)
)
v3=0
)
Next, an operation when the defined remote procedure is called is explained by using an example. Here, an example that calls a remote procedure of a page retrieval, which is defined above in the embodiment, is explained. The user inputs string "http://host2/factorial" and a message creation request into user input unit 102 in order to get the specification of "find". Message creator 104 receives the string as a message creation information and creates a message therefrom. More in detail, message creator 104 creates a message to remote procedure container 211 corresponding to the name attribute "find" and requests of transmitter 106 to send the created message to receiver 202 corresponding to "http://host2". Transmitter 106 retrieves receiver 202, which corresponds to string "http://host2". Then, transmitter 106 sends message "GET/find" to receiver 202. Receiver 202 that receives the message inputs the message into message analyzer 204. Message analyzer 204 analyzes the message and requests of remote procedure manager 210 through transmitter 203 and receiver 107 to retrieve procedure specification export unit 2112(a) in which the value of attribute "name" is "find" and to export the specification. Remote procedure manager 210 retrieves remote procedure container 211(a) (not shown in the figure) and requests of the retrieved remote procedure 211(a) to export the specification. Remote procedure container 211(a) requests of procedure specification export unit 2112(a) to export the specification. Procedure specification export unit 2112(a) outputs a hypertext representing the procedure specification. Remote procedure manager 210 returns the hypertext as a reply to receiver 107 through transmitter 203. Receiver 107 that receives the hypertext outputs the hypertext to hypertext analyzer 108. According to the hypertext, hypertext analyzer 108 requests of hypertext output unit 109 to display that the message creation information that requests procedure execution is "http://host2/find". The user instructs user input unit 102 to assign "http://host3/aaa" and "ccc" to the arguments. According to the assignment to the arguments and the message creation information, message creator 104 requests of transmitter 106 to send message "GET/find?url=(http://host3/aaa)&title=ccc" to the host identified by "http://host2". Transmitter 106 sends the message "GET/find?url=(http://host3/aaa)&title=ccc" to receiver 202. Receiver 202, which receives the message, inputs the message to message analyzer 204. Message analyzer 204 analyzes the message, retrieves the procedure definition stored in procedure definition unit 2113(a) of remote procedure container 211(a) in which the value of attribute "name" is "find", and through transmitter 203 and receiver 107, requests of procedure execution unit 110 to execute the procedure definition of procedure definition unit 2113(a) by giving "http://host3/aaa" as the value of variable "url" and "ccc" as the value of variable "title". Procedure execution unit 110 transforms the following expression (44) into the message (45) in accordance with the list transformation algorithm described above. Here, message (45) is written in the readable form.
(44) (http://host2/if
v1=(http://host2/title-is
v1=url
v2=title
)
v2=url
v3=(http://host2/find-sub
urls=(http://host2/children
v1=url
)
title=title
)
(45) http://host2/if?
v1=(http://host2/title-is?
v1=(http://host3/aaa)&
v2=(ccc)
)&
v2=(http://host3/aaa)&
v3=(http://host2/find-sub?
urls=(http://host2/children?
v1=(http://host3/aaa)
)&
title=(ccc)
)
)
Next, according to the message, procedure execution unit 110 requests of transmitter 106 to send the following message (46) to the receiver corresponding to "http://host2".
(46) GET /if?
v1=(http://host2/title-is?
v1=(http://host3/aaa)&
v2=(ccc)
)&
v2=(http://host3/aaa)&
v3=(http://host2/find-sub?
urls=(http://host2/children
v1=(http://host3/aaa)
)&
title=(ccc)
)
)
Transmitter 106 sends the message to receiver 202, which corresponds to "http://host2". Receiver 202, which receives the message, inputs the message to message analyzer 204. Message analyzer 204 analyzes the message and requests of remote procedure manager 210 to extract the procedure definition of the remote procedure container in which the value of attribute "name" is "if". Remote procedure manager 210 retrieves remote procedure container 211(1) and requests of procedure definition unit 2113(1) to output the procedure definition. Remote procedure manager 210 send a message through transmitter 203 in order to request of procedure execution unit 110 to execute the conditional branch algorithm under the following environment (47).
(47) v1=(http://host2/title-is?
v1=(http://host3/aaa)&
v2=(ccc)
)
v2=(http://host3/aaa)
v3=(http://host2/find-sub?
urls=(http://host2/children?
v1=(http://host3/aaa)
)&
title=(ccc)
)
Procedure execution unit 110 executes the conditional branch algorithm. Since the assignment to argument "v1" is a hyperlink, procedure execution unit 110 requests of the transmitter 106 to send the following message to the receiver identified by "http://host2". (48) GET /title-is? v1=(http://host3/aaa)& v2=(ccc) Transmitter 106 sends the message to receiver 202. Receiver 202, which receives the message, inputs the message to message analyzer 204. Message analyzer 204 analyzes the message and requests of remote procedure manager 210 to extract the procedure definition of the remote procedure container in which the value of attribute "name" is "title-is". Remote procedure manager 210 retrieves remote procedure container 211(5) and requests of procedure definition unit 2113(5) to output the procedure definition. Procedure definition unit 2113(5) outputs the procedure definition that defines a title extraction algorithm. Remote procedure manager 210 requests of procedure execution unit 110 via transmitter 203 and receiver 107 to execute the title extraction algorithm under the following environment (49). Procedure execution unit 110 executes the algorithm. (49) v1=http://host3/aaa v2=ccc Procedure execution unit 110 examines the assignment to argument "v1". Since the assignment to argument "v1" is a message including a hyperlink, procedure execution unit 110 requests of transmitter 106 to send a message. More in detail, procedure execution unit 110 requests of transmitter 106 to send "GET /aaa" to the receiver identified by "http://host3" (not shown in the figure). The receiver identified by "http://host3" analyzes the message and outputs the following hypertext as a reply to receiver 107. (50) <HEAD> <TITLE> aaa </TITLE> </HEAD> <H1>Page of aaa </H1> <HR> <A HREF="http://host3/bbb">Reference1 </A> <A HREF="http://host3/ccc">Reference2 </A> <A HREF="http://host3/ddd">Reference3 </A> Procedure execution unit 110 extracts title "bbb" from the received hypertext in accordance with the title extraction algorithm. Since the extracted title is not equal to "ccc", "0" is returned as a reply. 0195 Procedure execution unit 110, which receives the reply, examines the assignment to variable "v3" according to the conditional branch algorithm. Since the assignment to variable "v3" is the following hyperlink (51), message (52) that corresponds to the hyperlink is sent from transmitter 106.
(51) http://host2/find-sub?
urls=(http://host2/children?
v1=(http://host3/aaa)
title=(ccc)
(52) GET /find-sub?
urls=(http://host2/children?
v1=(http://host3/aaa)
)&
title=(ccc)
Transmitter 106 sends the message (52) to receiver 202. Receiver 202, which receives the message, inputs the message to message analyzer 204. Message analyzer analyzes the message and requests of remote procedure manager 210 to execute the procedure definition stored in the procedure definition unit of remote procedure container in which the value of attribute "name" is "find-sub" under the following environment (53). According to the request, remote procedure manager 210 retrieves remote procedure container 211(b) and requests of procedure execution unit 110 via transmitter 203 and receiver 107 to execute the procedure definition stored in procedure definition unit 2113(b).
(53) urls=(http://host2/children?
v1=(http://host3/aaa)
)
title=(ccc)
Procedure execution unit 110 transforms the following expression (54) into the message (55) in accordance with the list transformation algorithm.
(54) (http://host2/if
v1=urls
v2=(http://host2/if
v1=(http://host2/find
url=(http://host2/first
v1=urls
)
title=title)
)
v2=(http://host2/find
url=(http://host2/first
v1=urls
)
title=title)
)
v3=(http://host2/find-sub
urls=(http://host2/rest
v1=urls
)
title=title
)
)
v3=0
)
(55)
(http://host2/if?
v1=(http://host2/children?
v1=(http://host3/aaa)
)&
v2=(http://host2/if?
v1=(http://host2/find?
url=(http://host2/first
v1=(http://host2/children?
v1=(http://host3/aaa)
)
)&
title=(ccc))
)&
v2=(http://host2/find?
url=(http://host2/first?
v1=(http://host2/children?
v1=(http://host3/aaa)
)
)
title=(ccc))
)&
v3=(http://host2/find-sub?
urls=(http://host2/rest?
v1=(http://host2/children?
v1=(http://host3/aaa)
)
)&
title=(ccc)
)
)&
v3=0
)
Next, according to the message (55), procedure execution unit 110 requests of transmitter 106 to send the following message (56) to the receiver corresponding to "http://host2".
(56)
GET /if?
v1=(http://host2/children?
v1=(http://host3/aaa)
)&
v2=(http://host2/if?
v1=(http://host2/find?
url=(http://host2/first
v1=(http://host2/children?
v1=(http://host3/aaa)
)
)&
title=(ccc))
)&
v2=(http://host2/find?
url=(http://host2/first?
v1=(http://host2/children?
v1=(http://host3/aaa)
)
)
title=(ccc))
)&
v3=(http://host2/find-sub?
urls=(http://host2/rest?
v1=(http://host2/children?
v1=(http://host3/aaa)
)
)&
title=(ccc)
)
)&
v3=0
)
Transmitter 106 sends the message (56) to receiver 202, which corresponds to "http://host2". Receiver 202, which receives the message, inputs the message to message analyzer 204. Message analyzer 204 analyzes the message and requests of the remote procedure manager 210 to extract the procedure definition of the remote procedure container in which the value of attribute "name" is "if". Remote procedure manager 210 retrieves remote procedure container 211(1) and requests of procedure definition unit 2113(1) to output the procedure definition. Remote procedure manager 210 requests of procedure execution unit via transmitter 203 and receiver 107 to execute the conditional branch algorithm under the following environment (57).
(57) v1=(http://host2/children?
v1=(http://host3/aaa)
)
v2=(http://host2/if?
v1=(http://host2/find?
url=(http://host2/first
v1=(http://host2/children?
v1=(http://host3/aaa)
)
)&
title=(ccc))
)&
v2=(http://host2/find?
url=(http://host2/first?
v1=(http://host2/chiidren?
v1=(http://host3/aaa)
)
)
title=(ccc))
)&
v3=(http://host2/find-sub?
urls=(http://host2/rest?
v1=(http://host2/children?
v1=(http://host3/aaa)
)
)&
title=(ccc)
)
)
v3=0
Procedure execution unit 110 executes the conditional branch algorithm. Since the assignment to variable "v1" is a hyperlink, procedure execution unit 110 requests of transmitter 106 to send a message corresponding to the hyperlink. More in detail, procedure execution unit 110 requests of transmitter 106 to send message "GET/children?v1=(http://host3/aaa)" to the receiver identified by "http://host2". Transmitter 106 send the message to receiver 202. Receiver 202, which receives the message, inputs the message to message analyzer 204. Message analyzer 204 analyzes the message and requests of remote procedure manager 210 to extract procedure definition stored in the remote procedure container in which the value of attribute "name" is "children". Remote procedure manager 210 retrieves remote procedure container 211(4) and requests of procedure definition unit 2113(4) to output the procedure definition. Procedure definition unit 2113(4) outputs the procedure definition that defines a reference extraction algorithm. Remote procedure manager 210 requests of procedure execution unit 110 via transmitter 203 and receiver 107 to execute the reference extraction algorithm under environment "v1=(http://host3/aaa)". Procedure execution unit 110 executes the reference extraction algorithm and returns the following hypertext (58) as a reply to receiver 202. (58) <UL> <LI><A HREF="http://host3/bbb">Reference1 </A> <LI><A HREF="http://host3/ccc">Reference2 </A> <LI><A HREF="http://host3/ddd">Reference3 </A> </UL> The reply is received by the procedure execution unit 110 that is executing the conditional branch algorithm. Procedure execution unit 110 analyzes the reply according to the conditional branch algorithm and gets the second assignment to "v1". Since the second assignment to "v1" is not "0", procedure execution unit 110 examines the assignment to "v2". Since the assignment to "v2" is the following expression (59), procedure execution unit 110 requests of transmitter 106 to send a message.
(59) http://host2/if?
v1=(http://host2/find?
url=(http://host2/first
v1=(http://host2/children?
v1=(http://host3/aaa)
)
)&
title=(ccc))
)&
v2=(http://host2/find?
url=(http://host2/first?
v1=(http://host2/children?
v1=(http://host3/aaa)
)
)
title=(ccc))
)&
v3=(http://host2/find-sub?
urls=(http://host2/rest?
v1=(http://host2/children?
v1=(http://host3/aaa)
)
)&
title=(ccc)
)
More in detail, procedure execution unit 110 requests of transmitter 106 to send the following message (60) to the receiver identified by "http://host2".
(60) GET /if?
v1=(http://host2/find?
url=(http://host2/first
v1=(http://host2/children?
v1=(http://hosts/aaa)
)
)&
title=(ccc))
)&
v2=(http://host2/find?
url=(http://host2/first?
v1=(http://host2/children?
v1=(http://host3/aaa)
)
)
title=(ccc))
)&
v3=(http://host2/find-sub?
urls=(http://host2/rest?
v1=(http://host2/ohildren?
v1=(http://host3/aaa)
)
)&
title=(ccc)
)
Transmitter 106 sends the message (60) to receiver 202. Message analyzer 204 analyzes the message and requests of remote procedure manager 210 to extract the procedure definition stored in the remote procedure container in which the value of attribute "name" is "if". Remote procedure manager 210 retrieves remote procedure container 211(1) and requests of procedure definition unit 2113(1) to output the procedure definition. Procedure definition unit 2113(1) outputs the procedure definition that defines the conditional branch algorithm. Remote procedure manager 210 requests of procedure execution unit 110 via transmitter 203 and receiver 107 to execute the conditional branch algorithm under the following environment (61).
(61) v1=(http://host2/find?
url=(http://host2/first?
v1=(http://host2/children?
v1=(http://host3/aaa)
)
)&
title=(ccc))
)&
v2=(http://host2/find?
url=(http://host2/first?
v1=(http://host2/children?
v1=(http://host3/aaa)
)
)
title=(ccc))
)&
v3=(http://host2/find-sub?
urls=(http://host2/rest?
v1=(http://host2/children?
v1=(http://host3/aaa)
)
)&
title=(ccc)
Procedure execution unit 110 examines the assignment to argument "v1". Since the assignment to "v1" is a message including a hyperlink, procedure execution unit 110 requests of transmitter 106 to send a message. More in detail, procedure execution unit 110 requests of transmitter 106 to send the following message (62) to the receiver identified by "http://host2".
(62) GET /find?
url=(http://host2/first?
v1=(http://host2/children?
v1=(http://host3/aaa)
)
)&
title=(ccc))
Transmitter 106 sends the message to receiver 202. Receiver 202, which receives the message, inputs the message to message analyzer 204. Message analyzer 204 analyzes the message and requests of remote procedure manager 210 to extract the procedure definition stored in the remote procedure container in which the value of attribute "name" is "find". Remote procedure manager 210 retrieves remote procedure container 211(a) and requests of procedure definition unit 2113(a) to output the procedure definition. Remote procedure manager 210 gets the following procedure definition (63).
(63)
http://host2/if?
v1=(http://host2/title-is?
v1=(http://host2/first?
v1=(http://host2/children?
v1=(http://host3/aaa)
)
)&
v2=(ccc)
)&
v2=(http://host2/first?
v1=(http://host2/children?
v1=(http://host3/aaa)
)
)&
v3=(http://host2/find-sub?
urls=(http://host2/children?
v1=(http://host2/first?
v1=(http://host2/children?
v1=(http://host3/aaa)
)
)
)&
title=(ccc)
)
Details are not explained here for simplicity; however, procedure execution unit 110 gets a second assignment to "v1" from the first assignment to "v1" according to the conditional branch algorithm. Then, since the title of the page corresponding to the first reference included in the page identified by "http://host3/aaa" is not "ccc", a second assignment to "v3" is obtained from the first assignment to "v3". Details are not explained here again for simplicity; however, procedure execution unit 110 executes the conditional branch algorithm called by the child page retrieval algorithm. Since the page identified by "http://host3/bbb" includes no reference, "0" is set to "v1" as a second assignment and "0" is returned. Procedure execution unit 110 that is executing the conditional branch algorithm receives the reply, and a second assignment to "v3" is obtained from the first assignment to "v3" shown in the following.
(64) http://host2/find-sub?
urls=(http://host2/rest?
v1=(http://host2/children?
v1=(http://host3/aaa)
)
)&
title=(ccc)
Then, the following expression (65) is executed according to the list transformation algorithm.
(65)
http://host2/if?
v1=(http://host2/rest?
v1=(http://host2/children?
v1=(http://host3/aaa)
)
)&
v2=(http://host2/if?
v1=(http://host2/find?
url=(http://host2/first?
v1=(http://host2/rest?
v1=(http://host2/children?
v1=(http://host3/aaa)
)
)
)&
title=(ccc)
)
)&
v2=(http://host2/find?
url=(http://host2/first?
v1=(http://host2/rest?
v1=(http://host2/children?
v1=(http://host3/aaa)
)
)
)&
title=(ccc)
)
)&
v3=(http://host2/find-sub?
urls=(http://host2/rest?
v1=(http://host2/rest?
v1=(http://host2/children?
v1=(http://host3/aaa)
)
)
)&
title=(ccc)
)
)
v3=0
Details are not explained here for simplicity; however, since the second assignment to "v1" is not "0", a message is sent from transmitter 106 to get a second assignment to "v2". Again, details are not explained here for simplicity; however, then the title of the second reference included in the page "http://host3/aaa" is "ccc", contents of the page is sent as a reply from transmitter 106 to receiver 107. As described above, according to this configuration, the user can define a procedure easily by using a template of procedure definition and execute the defined procedure on a client. [Third Embodiment] FIG. 5 is a block diagram that shows a configuration of the third embodiment. In this embodiment, each of remote procedure client 100 and remote procedure server 200 has procedure execution unit 110 and 212. Since the other configuration is the same as that of the first or second embodiment, the same number is given to the corresponding unit and details are not explained here. All explanation of the embodiments of the present invention is finished here. This invention is not limited to the embodiments described above. It is possible to change the embodiments as far as it does not deviate the points. For example, defining of a function (procedure) having parameters is explained in the embodiments described above; however it is possible to define a function (procedure) that does not have parameters, such as a function (procedure) with no argument giving an alias to a composite function. Further, when a function having parameters is defined, it is possible to provide a specialized function that is to execute assignment to the parameters. In this case, the function of assignment can execute the real replacement of variables with values or determine the value by referring to the environment when variables are evaluated. It is also possible to use a syntax of variable declarations which specifies variable names and their scope. Furthermore, it is possible to use a notation indicating variables, which is common notation to all functions. In the above described embodiments, a method that creates a hypertext is used. Plural pages including empty slots are exported as primitive functions, and a desired hypertext is created by connecting the pages as components. The created graph structure (pages connected each other) is the desired program. In this case, a binding which a slot is filled with a value can be stored persistently as an instance created from a page of template. As described above, by using this invention, the user can interactively connect remote procedures that are located on networks in distribution so as to call a composite remote procedure or to define a new remote procedure.
|
Same subclass Same class | ||||||||||
