JP2005085240A - Programming framework for executing commands - Google Patents

Programming framework for executing commands Download PDF

Info

Publication number
JP2005085240A
JP2005085240A JP2003320264A JP2003320264A JP2005085240A JP 2005085240 A JP2005085240 A JP 2005085240A JP 2003320264 A JP2003320264 A JP 2003320264A JP 2003320264 A JP2003320264 A JP 2003320264A JP 2005085240 A JP2005085240 A JP 2005085240A
Authority
JP
Japan
Prior art keywords
command
execution
setting
information processing
processing apparatus
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.)
Withdrawn
Application number
JP2003320264A
Other languages
Japanese (ja)
Inventor
Yutaka Miyouki
裕 妙木
Masanori Saito
正憲 齋藤
Yoichi Kodama
洋一 児玉
Tatsuo Matoba
達夫 的場
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Canon Inc
Original Assignee
Canon Inc
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Canon Inc filed Critical Canon Inc
Priority to JP2003320264A priority Critical patent/JP2005085240A/en
Publication of JP2005085240A publication Critical patent/JP2005085240A/en
Withdrawn legal-status Critical Current

Links

Images

Landscapes

  • Multi Processors (AREA)

Abstract

<P>PROBLEM TO BE SOLVED: To provide a programming framework which switches between local execution and remote execution of commands only by changing an external setting without absolutely changing command module. <P>SOLUTION: The programming framework reads in a setting file 140 of a client 100. In the case where a command is dummy-executed in the determination in S905, the dummyExecute method of a cmd object is executed. In the case where the command is not dummy-executed and local-executed in the determination in S907, the execute method of the cmd object is executed. In the case of remote execution, the transfer method is called out via a network N with respect to an object of a Sever class 122 of a command server 200. The cmd object is designated as an argument of the transfer method, and the transfer method returns an object of a Command derived class as a return value via the network. This object is defined as the cmd object, and the cmd object which finished its execution is returned as the return value. <P>COPYRIGHT: (C)2005,JPO&NCIPI

Description

本発明は、少なくとも第1の情報処理装置と第2の情報処理装置とが接続されるネットワーク環境におけるプログラム上の要求を抽象化した実体であるコマンドを実行するためのプログラミングフレームワークに関する。   The present invention relates to a programming framework for executing a command that is an entity that abstracts a request on a program in a network environment in which at least a first information processing apparatus and a second information processing apparatus are connected.

従来、プログラム上の「要求」をオブジェクトとしてカプセル化する手段は、デザインパターンの「Command」としてよく知られている(例えば、非特許文献1参照)。このCommandパターンの本質的な構成と動作はUML(Unified Modeling Language)のクラス図とシーケンス図とを用いてそれぞれ図11と図12とのように表わすことができる。   Conventionally, means for encapsulating “request” on a program as an object is well known as “Command” of a design pattern (see, for example, Non-Patent Document 1). The essential configuration and operation of the Command pattern can be expressed as shown in FIGS. 11 and 12 using a UML (Unified Modeling Language) class diagram and a sequence diagram, respectively.

図11は、Commandパターンの構成を示すUMLクラス図である。   FIG. 11 is a UML class diagram showing the configuration of the Command pattern.

1101のApplicationクラスはコマンドを使用する任意のクラスである。1102のInvokerクラスはコマンドの起動を担うクラスである。コマンドの起動にはInvokerクラスのstoreCommandメソッドを使用する。storeCommandメソッドはCommand派生クラスのオブジェクトを引数に取り、同じくCommand派生クラスのオブジェクトを戻り値として返す。   An Application class 1101 is an arbitrary class that uses a command. An invoker class 1102 is a class responsible for starting a command. Use the storeCommand method of the Invoker class to start the command. The storeCommand method takes an object of the Command derived class as an argument, and also returns an object of the Command derived class as a return value.

1103のCommandクラスはすべてのコマンドの抽象基底クラスである。Command抽象基底クラスには抽象メソッドexecuteのみ宣言されている。executeメソッドは各Command派生クラスで実行する実動作のプレースホルダとして宣言されており、Invokerクラス1102のstoreCommandメソッドから呼ばれる。このexecuteメソッドは引数・戻り値を持たない。   The Command class 1103 is an abstract base class for all commands. Only the abstract method execute is declared in the Command abstract base class. The execute method is declared as a placeholder for the actual operation executed by each Command derived class, and is called from the storeCommand method of the Invoker class 1102. This execute method has no arguments / return values.

1104のConcreteCommandクラスはCommand派生クラスの例として記したものである。ConcreteCommandクラスではCommand抽象基底クラス1103の抽象メソッドexecuteが実装されている。ここで、setAとsetBはexecuteメソッドに引数を与えるためのメソッドであるセッターであり、getCとgetDはexecuteメソッドの実行後に実行結果(戻り値)を取得するためのメソッドであるゲッターである。   The ConcreteCommand class 1104 is described as an example of a Command derived class. In the ConcreteCommand class, the abstract method execute of the Command abstract base class 1103 is implemented. Here, setA and setB are setters that are methods for giving arguments to the execute method, and getC and getD are getters that are methods for acquiring an execution result (return value) after execution of the execute method.

図12は、Commandパターンの動作を説明するUMLシーケンス図である。   FIG. 12 is a UML sequence diagram for explaining the operation of the Command pattern.

1201は、図11のApplicationクラス1101をインスタンス化したオブジェクトである。1202は、図11のConcreteCommandクラス1104をインスタンス化したオブジェクトであり、cmdという名称が与えられている。1203は、図11のInvokerクラス1102をインスタンス化したオブジェクトである。   Reference numeral 1201 denotes an object obtained by instantiating the Application class 1101 in FIG. Reference numeral 1202 denotes an object obtained by instantiating the ConcreteCommand class 1104 in FIG. 11, and is given the name cmd. 1203 is an object that instantiates the Invoker class 1102 of FIG.

先ず、1204でApplicationオブジェクト1201はConcreteCommandクラスのインスタンスを生成する。以後このオブジェクトをcmdという名称で記す。   First, in 1204, the Application object 1201 generates an instance of the ConcreteCommand class. Hereafter, this object is described with the name cmd.

次に、1205でcmdオブジェクト1202のセッターであるsetAを呼び出し、1206で同様のセッターであるsetBを呼び出すことにより、executeメソッドを呼び出すのための引数をcmdオブジェクト1202に設定する。   Next, a setter that is a setter of the cmd object 1202 is called in 1205, and a setB that is a similar setter is called in 1206, whereby an argument for calling the execute method is set in the cmd object 1202.

次に、1207でApplicationオブジェクト1201は、cmdオブジェクト1202を引数としてInvokerオブジェクト1203のstoreCommandメソッドを呼び出す。   Next, in 1207, the Application object 1201 calls the storeCommand method of the Invoker object 1203 with the cmd object 1202 as an argument.

次に、1208でInvokerオブジェクト1203のstoreCommandメソッドは、引数で与えられたcmdオブジェクト1202に対してexecuteメソッドを呼び出す。executeメソッド呼び出しが終了すると、Invokerオブジェクト1203のstoreCommandメソッドはexecuteメソッド終了後のcmdオブジェクト1202を戻り値として返す(UMLではメソッドの終了を省略可能なため、図12では図示を省略してある)。   Next, in 1208, the storeCommand method of the Invoker object 1203 calls the execute method on the cmd object 1202 given by the argument. When the execute method call ends, the storeCommand method of the Invoker object 1203 returns the cmd object 1202 after the execute method ends as a return value (since the end of the method can be omitted in UML, the illustration is omitted in FIG. 12).

その後、Applicationオブジェクト1201は、返されたcmdオブジェクト1202のゲッターであるgetCを1209で呼び出し、同様のゲッターgetDを1210で呼び出すことにより、executeメソッドの呼び出しの結果を得ることができる。   Thereafter, the Application object 1201 can obtain the result of calling the execute method by calling getC that is the getter of the returned cmd object 1202 with 1209 and calling the similar getter getD with 1210.

このようなCommandパターンをネットワーク経由で適用することによってコマンドのリモート実行が可能になる。ここで、サーバ側にEJBを使用した例は「EJB Command」パターンとして知られている(例えば、非特許文献2参照)。EJB Commandパターンの本質的な構成及び動作は、UMLのクラス図とシーケンス図とを用いてそれぞれ図13と図14とのように表わすことができる。ただし、両図にある「ネットワーク境界」についてはUMLの記法ではなく、「本来は2枚である図」を「1枚の図」に表記するために便宜的に用いた記法である。   By applying such a Command pattern via a network, it becomes possible to execute a command remotely. Here, an example in which an EJB is used on the server side is known as an “EJB Command” pattern (see, for example, Non-Patent Document 2). The essential configuration and operation of the EJB Command pattern can be expressed as shown in FIGS. 13 and 14, respectively, using UML class diagrams and sequence diagrams. However, the “network boundary” in both figures is not a UML notation, but a notation used for convenience in describing “an original figure” as “one figure”.

図13は、EJBコマンドパターンの構成を示すUMLクラス図である。   FIG. 13 is a UML class diagram showing the configuration of the EJB command pattern.

1305はネットワーク境界である。図面上、このネットワーク境界1305よりも上がクライアント側の構成であり、下がサーバ側の構成である。図示したように、クライアント側の構成は図11のCommandパターンの構成と同様である。   Reference numeral 1305 denotes a network boundary. In the drawing, the configuration above the network boundary 1305 is the configuration on the client side, and the configuration below is the configuration on the server side. As shown in the figure, the configuration on the client side is the same as the configuration of the Command pattern in FIG.

1306のServerクラスはEJBの実装クラスであり、クライアントからのコマンドの実行要求をネットワーク経由で受けるためのクラスである。Serverクラス1306のtransferメソッドがコマンドの実行要求を受ける。transferメソッドはCommand派生クラスのオブジェクトを引数に取り、同じくCommand派生クラスのオブジェクトを戻り値として返す。   A server class 1306 is an EJB implementation class, and is a class for receiving a command execution request from a client via a network. The transfer method of the Server class 1306 receives a command execution request. The transfer method takes an object of the Command derived class as an argument, and returns an object of the Command derived class as a return value.

1307のCommandクラス及び1308のConcreteCommandクラスは、それぞれ1303のCommandクラス及び1304のConcreteCommandクラスとまったく同じものである。つまり、CommandクラスとConcreteCommandクラスはまったく同じものがクライアント側とサーバ側に存在している。   The Command class 1307 and the ConcreteCommand class 1308 are exactly the same as the Command class 1303 and the ConcreteCommand class 1304, respectively. In other words, the exact same Command class and ConcreteCommand class exist on the client side and the server side.

図14は、EJBコマンドパターンの動作を説明するUMLシーケンス図である。   FIG. 14 is a UML sequence diagram for explaining the operation of the EJB command pattern.

1416はネットワーク境界である。図面上、このネットワーク境界1416よりも左がクライアント側の動作を示し、右がサーバ側の動作を示す。   Reference numeral 1416 denotes a network boundary. In the drawing, the left side of the network boundary 1416 shows the operation on the client side, and the right side shows the operation on the server side.

1401,1402,1403はクライアント側のオブジェクトであり、1401は、図13のApplicationクラス1301をインスタンス化したオブジェクトである。1402は、図13のConcreteCommand1304をインスタンス化したオブジェクトであり、名称はcmdである。1403は、図13のInvokerクラス1302をインスタンス化したオブジェクトである。   Reference numerals 1401, 1402, and 1403 denote client-side objects, and reference numeral 1401 denotes an object obtained by instantiating the Application class 1301 in FIG. Reference numeral 1402 denotes an object obtained by instantiating the ConcreteCommand 1304 in FIG. 13 and its name is cmd. Reference numeral 1403 denotes an object obtained by instantiating the Invoker class 1302 of FIG.

1404,1405はサーバ側のオブジェクトであり、1404は、図13のServerクラス1306をインスタンス化したオブジェクトであり、1405は、図13のConcreteCommandクラス1308をインスタンス化したオブジェクトである。   Reference numerals 1404 and 1405 denote server-side objects, reference numeral 1404 denotes an object that instantiates the Server class 1306 in FIG. 13, and reference numeral 1405 denotes an object that instantiates the ConcreteCommand class 1308 in FIG.

先ず、1406でApplicationオブジェクト1401がConcreteCommandクラスのcmdオブジェクト1402を生成して、1407,1408で引数を設定し、1409でInvokerオブジェクト1403のstoreCommandメソッドを呼び出すまでは図12における1204から1207までと同様である。   First, the application object 1401 generates a cmd object 1402 of the ConcreteCommand class in 1406, sets an argument in 1407 and 1408, and calls the storeCommand method of the invoker object 1403 in 1409, similar to 1204 to 1207 in FIG. is there.

次に、Invokerオブジェクト1403は、オブジェクトをネットワーク経由で引数として渡すために、1410でcmdオブジェクトに対してシリアライズ(直列化)処理を実行する。   Next, the invoker object 1403 executes serialization (serialization) processing on the cmd object in 1410 in order to pass the object as an argument via the network.

次に、Invokerオブジェクト1403は、1411でネットワーク1416を経由してServerオブジェクト1404のtransferメソッドを呼び出す。このときの引数は1410でシリアライズされたcmdオブジェクトである。シリアライズされたcmdオブジェクトを受け取ったServerオブジェクト1404は、1412で先ずデシリアライズ(非直列化)処理を実行してcmdオブジェクトを復元する。ここで復元されたcmdオブジェクトが1405であり、これはcmdオブジェクト1402と論理的に等価な実体である。   Next, the invoker object 1403 calls the transfer method of the server object 1404 via the network 1416 in 1411. The argument at this time is a cmd object serialized in 1410. Upon receiving the serialized cmd object, the Server object 1404 first executes deserialization (deserialization) processing in 1412 to restore the cmd object. The restored cmd object is 1405, which is an entity that is logically equivalent to the cmd object 1402.

最後にServerオブジェクト1404は、1413でcmdオブジェクト1405のexecuteメソッドを呼び出す。以上でネットワーク経由のtransferメソッドの呼び出し1411が終了するが、図12と同様にメソッドの終了は図示していない。   Finally, the Server object 1404 calls the execute method of the cmd object 1405 in 1413. This completes the transfer method call 1411 via the network, but the end of the method is not shown as in FIG.

ここで、transferメソッドは戻り値としてcmdオブジェクト1405をシリアライズして返し、Invokerオブジェクト1403は返されたcmdオブジェクトをデシリアライズして1402のcmdオブジェクトと置き換える。この結果、Applicationオブジェクト1401は、1414,1415でゲッターでgetCやgetDを呼び出して処理結果を得ることができる。
Erich Gamma、 Richard Helm、Ralph Johnson、John Vissides著「オブジェクト指向による再利用のためのデザインパターン」 Floyd Marinescu著「EJBデザインパターン」
Here, the transfer method serializes and returns the cmd object 1405 as a return value, and the invoker object 1403 deserializes the returned cmd object and replaces it with the cmd object 1402. As a result, the Application object 1401 can obtain the processing result by calling getC and getD with the getters 1414 and 1415.
"Design patterns for object-oriented reuse" by Erich Gamma, Richard Helm, Ralph Johnson, and John Vissides "EJB Design Pattern" by Floyd Marinescu

上記のように従来においても、コマンドのローカル実行やリモート実行が可能である。しかしながら、コマンドを用いて汎用ライブラリを作成する場合には、コマンドがローカルで実行されるかリモートで実行されるかを前もって決定できないという問題があった。   As described above, the command can be executed locally or remotely. However, when a general-purpose library is created using a command, there is a problem in that it cannot be determined in advance whether the command is executed locally or remotely.

また、コマンドの実行にあたっては、コマンドの実行者とコマンドの種類とを対応付けた実行権限の設定を行なうことが多くの場合に必要になるが、実行者の数やコマンドの種類が多くなると、この実行権限の設定が複雑になり過ぎるという問題があった。   In addition, when executing a command, it is often necessary to set an execution authority that associates the command executor with the command type, but when the number of executors and the types of commands increase, There was a problem that the setting of the execution authority was too complicated.

さらに、特に開発初期においては、完全なものでなくてもコマンドの実行が可能な環境を早急に用意したいという要求があるが、リモート実行を選択した場合は少なくともクライアント、サーバ、リソース(データベース等)の環境を整備しなければならず、この要求に応えにくいという問題があった。   Furthermore, especially in the early stages of development, there is a request to urgently prepare an environment in which commands can be executed even if they are not complete, but if remote execution is selected, at least the client, server, resource (database, etc.) There was a problem that it was difficult to meet this demand.

本発明は以上の事情に鑑みてなされたものであり、本発明の目的は、コマンドモジュールを全く変更することなく、外部の設定を変更するだけで、コマンドのローカル実行とリモート実行とを切り替えることができるプログラミングフレームワークを提供することにある。   The present invention has been made in view of the above circumstances, and an object of the present invention is to switch between local execution and remote execution of a command only by changing external settings without changing the command module at all. It is to provide a programming framework that can.

さらに、コマンドの実行権限の設定がローカル実行の場合でもリモート実行の場合でもサーバ側ではなくクライアント側で行なうことができるプログラミングフレームワークの提供を目的とする。   It is another object of the present invention to provide a programming framework that can be executed not on the server side but on the client side regardless of whether the command execution authority is set for local execution or remote execution.

さらには、コマンドの実行権限の設定は、実行権限を表わすポリシーを切り替えるだけで、複雑な組み合わせを設定できるプログラミングフレームワークの提供を目的とする。   Furthermore, the purpose of setting the command execution authority is to provide a programming framework in which a complicated combination can be set only by switching the policy representing the execution authority.

さらにまた、サーバやリソース(データベース等)にアクセスすることなくクライアントだけでダミーの処理を行なうこと(ダミー実行)ができるプログラミングフレームワークの提供を目的とする。   It is another object of the present invention to provide a programming framework that can perform dummy processing (dummy execution) only by a client without accessing a server or a resource (such as a database).

上記目的を達成するために、請求項1記載のプログラミングフレームワークは、少なくとも第1の情報処理装置と第2の情報処理装置とが接続されるネットワーク環境におけるプログラム上の要求を抽象化した実体であるコマンドを実行するためのプログラミングフレームワークにおいて、前記コマンドの実行を要求する前記第1の情報処理装置に格納されるコマンドモジュールと、前記ネットワークを通じて前記第1の情報処理装置に接続された前記第2の情報処理装置に格納される、前記コマンドモジュールと同一のコマンドモジュールと、前記第1の情報処理装置に設けられた、前記コマンドの実行を制御する設定ファイルとを備え、前記コマンドの実行処理は、前記第1の情報処理装置が前記設定ファイルに設定されたコマンドの実行権限の設定内容を判別する実行権限判別ステップと、前記設定ファイルの設定がコマンドをダミー実行する設定である否かを判別するダミー実行判別ステップと、前記設定ファイルの設定によるコマンドの実行先がローカル実行を行なう前記第1の情報処理装置であるのかリモート実行を行なう前記第2の情報処理装置であるのかを判別する実行先判別ステップとを備え、前記設定ファイルの設定がダミー実行する設定である場合には、前記実行先判別ステップの結果の如何にかかわらず第1の情報処理装置がコマンドをローカル実行することを特徴とする。   To achieve the above object, a programming framework according to claim 1 is an entity that abstracts a request on a program in a network environment in which at least a first information processing apparatus and a second information processing apparatus are connected. In a programming framework for executing a command, a command module stored in the first information processing apparatus that requests execution of the command, and the first module connected to the first information processing apparatus through the network A command module stored in the second information processing apparatus, the same command module as the command module, and a setting file provided in the first information processing apparatus for controlling the execution of the command. The first information processing apparatus executes the command set in the setting file. An execution authority determining step for determining authority setting contents, a dummy execution determining step for determining whether or not the setting of the setting file is a setting for executing a dummy command, and an execution destination of the command by the setting of the setting file is a local An execution destination determining step for determining whether the information processing apparatus is the first information processing apparatus that performs the execution or the second information processing apparatus that performs the remote execution, and the setting of the setting file is a dummy execution setting In this case, the first information processing apparatus executes the command locally regardless of the result of the execution destination determination step.

請求項2記載のプログラミングフレームは、請求項1に記載のプログラミングフレームワークにおいて、前記実行権限判別ステップは、前記設定ファイルの設定を参照し、該設定においてはコマンドの実行者とコマンドの種類との組み合わせに対して実行権限をマトリックス定義したポリシーを複数持つことを特徴とする。   According to a second aspect of the present invention, in the programming framework according to the first aspect, the execution authority determining step refers to the setting of the setting file, and in the setting, a command executor and a command type are determined. It is characterized by having a plurality of policies in which execution rights are matrix-defined for combinations.

請求項3記載のプログラミングフレームは、請求項1または2記載のプログラミングフレームワークにおいて、前記第1の情報処理装置及び前記第2の情報処理装置の実行環境がJava(登録商標)であり、前記第2の情報処理装置による前記リモート実行の実現手段がEJB(Enterprise JavaBeans)であることを特徴とする。   The programming frame according to claim 3 is the programming framework according to claim 1 or 2, wherein an execution environment of the first information processing apparatus and the second information processing apparatus is Java (registered trademark), The means for realizing the remote execution by the information processing apparatus 2 is EJB (Enterprise JavaBeans).

上記目的を達成するために、請求項4記載の記憶媒体は、コンピュータ読み取り可能な記憶媒体において、請求項1、請求項2、または請求項3のいずれか1項に記載のプログラムを格納したことを特徴とする。   To achieve the above object, the storage medium according to claim 4 stores the program according to any one of claims 1, 2, or 3 in a computer-readable storage medium. It is characterized by.

請求項1記載のプログラミングフレームワーク及び請求項4記載の記録媒体によれば、コマンドの実行処理は、第1の情報処理装置が設定ファイルに設定されたコマンドの実行権限の設定内容を判別し、設定ファイルの設定がコマンドをダミー実行する設定である否かを判別し、設定ファイルの設定によるコマンドの実行先がローカル実行を行なう第1の情報処理装置であるのかリモート実行を行なう第2の情報処理装置であるのかを判別し、設定ファイルの設定がダミー実行する設定である場合には、実行先判別の結果の如何にかかわらず第1の情報処理装置がコマンドをローカル実行するので、コマンドモジュールを全く変更することなく、外部の設定を変更するだけで、コマンドのローカル実行とリモート実行とを切り替えることができる。また、コマンドの実行権限の判別はローカル実行の場合でもリモート実行の場合でも第2の情報処理装置側ではなく第1の情報処理装置側で行なうことができる。さらに、第2の情報処理装置やデータベース等にアクセスすることなく第1の情報処理装置だけでダミー実行ができる。   According to the programming framework of claim 1 and the recording medium of claim 4, in the command execution process, the first information processing apparatus determines the setting contents of the command execution authority set in the setting file, It is determined whether or not the setting of the setting file is a setting for executing a dummy command, and second information for performing remote execution to determine whether the execution destination of the command based on the setting file setting is the first information processing apparatus performing local execution Since the first information processing apparatus executes the command locally regardless of the result of the execution destination determination when the setting file is determined to be a dummy execution setting, the command module is determined. It is possible to switch between local execution and remote execution of a command simply by changing the external setting without changing the That. Also, the command execution authority can be determined on the first information processing apparatus side, not on the second information processing apparatus side, in the case of local execution or remote execution. Furthermore, dummy execution can be performed only by the first information processing apparatus without accessing the second information processing apparatus or the database.

請求項2記載のプログラミングフレームワーク及び請求項4記載の記録媒体によれば、実行権限の判別は、設定ファイルの設定を参照し、該設定においてはコマンドの実行者とコマンドの種類との組み合わせに対して実行権限をマトリックス定義したポリシーを複数持つので、これらの実行権限を表わすポリシーを切り替えるだけで、実行権限の設定は複雑な組み合わせに設定できる。   According to the programming framework according to claim 2 and the recording medium according to claim 4, the execution authority is determined by referring to the setting file setting, and in the setting, a combination of a command executor and a command type is used. On the other hand, since there are a plurality of policies in which execution authority is defined in a matrix, execution authority settings can be set to complex combinations by simply switching the policies representing these execution authorities.

以下、本発明の実施の形態について図面を参照して詳細に説明する。   Hereinafter, embodiments of the present invention will be described in detail with reference to the drawings.

本実施の形態においてはプログラミング言語としてJavaを使用し、サーバ側のリモート呼び出し機構にEJBを使用するものとして説明する。   In the present embodiment, description will be made on the assumption that Java is used as a programming language and EJB is used for a remote call mechanism on the server side.

図1は、本実施の形態に係るプログラミングフレームワークが実施されるネットワークの全体構成図である。   FIG. 1 is an overall configuration diagram of a network in which a programming framework according to the present embodiment is implemented.

100はコマンドの実行を要求するクライアント(第1の情報処理装置)であり、200はコマンドをリモート実行するためのコマンドサーバ(第2の情報処理装置)である。300はDBサーバである。これらクライアント100、コマンドサーバ200、及びDBサーバ300はそれぞれネットワークNを通じて相互に通信可能であり、クライアント100とコマンドサーバ200とはネットワークNを通じてDBサーバ300にアクセスできる。これらクライアント100、コマンドサーバ200、及びサーバ300は情報処理装置である。   Reference numeral 100 denotes a client (first information processing apparatus) that requests execution of a command, and reference numeral 200 denotes a command server (second information processing apparatus) for remotely executing a command. Reference numeral 300 denotes a DB server. The client 100, the command server 200, and the DB server 300 can communicate with each other through the network N, and the client 100 and the command server 200 can access the DB server 300 through the network N. These client 100, command server 200, and server 300 are information processing apparatuses.

なお、DBサーバ300を別個に独立した情報処理装置として図示したが、DBサーバ機能をクライアント100やコマンドサーバ200が備えるようにしてもよい。   Although the DB server 300 is illustrated as a separate and independent information processing apparatus, the DB server function may be provided in the client 100 or the command server 200.

図2は、図1におけるクライアント100、コマンドサーバ200、DBサーバ300として使用される情報処理装置の構成の一例を示すブロック図である。   FIG. 2 is a block diagram illustrating an example of a configuration of an information processing apparatus used as the client 100, the command server 200, and the DB server 300 in FIG.

10は、制御プログラムに従って本装置全体の制御を行なうCPUである。20は、CPU10が実行する処理などの本装置の制御プログラムや文書画像等を格納する内部記憶部のRAMである。30は、CPU10の制御の下にインターネット等のネットワークとの接続を行なってデータ等を送受信するネットワークインタフェース(Net I/F)である。   A CPU 10 controls the entire apparatus according to a control program. Reference numeral 20 denotes a RAM of an internal storage unit that stores a control program of the apparatus such as processing executed by the CPU 10 and a document image. Reference numeral 30 denotes a network interface (Net I / F) that transmits and receives data and the like by connecting to a network such as the Internet under the control of the CPU 10.

40は、ファイルを保存する磁気ディスク等の外部記憶装置である。50はディスプレイ、60はキーボード、70はマウス等のポインティングデバイスである。   Reference numeral 40 denotes an external storage device such as a magnetic disk for storing files. 50 is a display, 60 is a keyboard, and 70 is a pointing device such as a mouse.

RAM20に格納されているプログラムは、同じくRAM20に格納されているOS(Operating System)の機能を必要に応じて使用して、RAM20に一時記憶するデータの内容を読み書きしたり、外部記憶装置40上のファイルの内容を読み書きしたり、ネットワークインタフェース30を通じてデータの送受信を行なったり、キーボード60やポインティングデバイス70からの入力を受け取ったり、ディスプレイ50に画像表示を行なったりする等の所定の動作を行なうためのものである。   The program stored in the RAM 20 uses the function of an OS (Operating System) also stored in the RAM 20 as necessary, reads / writes the contents of data temporarily stored in the RAM 20, and stores data on the external storage device 40. To perform predetermined operations such as reading and writing the contents of the file, transmitting and receiving data through the network interface 30, receiving input from the keyboard 60 and pointing device 70, and displaying an image on the display 50. belongs to.

なお、プログラムはRAM20に格納されるとしたが、これに限るものではなく、プログラムを外部記憶装置40から読み込んで実行するようにしてもよい。また、ネットワークインタフェース30を介してプログラムを受信して実行するようにしてもよい。また、図2には示していないが、ROM等の読み出し専用の内部記憶部から読み込んで実行するようにしてもよい。   Although the program is stored in the RAM 20, the present invention is not limited to this, and the program may be read from the external storage device 40 and executed. Further, the program may be received and executed via the network interface 30. Although not shown in FIG. 2, the program may be read from a read-only internal storage unit such as a ROM and executed.

また、キーボード60やポインティングデバイス70の代わりに、あるいはそれらに加えて、音声入力等の他の入力装置を備えることもできる。また、これらすべての構成要素を必ずしも備える必要はなく、コマンドサーバ200やDBサーバ300においては、多くの場合にディスプレイ50を省略したり、キーボード60やポインティングデバイス70を他の情報処理装置と共有したりしてもよい。   Further, instead of or in addition to the keyboard 60 and the pointing device 70, other input devices such as voice input may be provided. In addition, the command server 200 and the DB server 300 may omit the display 50 in many cases and share the keyboard 60 and the pointing device 70 with other information processing apparatuses. Or you may.

次に、図3乃至図5を参照して本実施の形態で使用する情報処理装置内のブロック構成について説明する。   Next, a block configuration in the information processing apparatus used in the present embodiment will be described with reference to FIGS.

図3は、本実施の形態におけるクライアント、コマンドサーバ、DBサーバの動作に主として関わる論理ブロック(モジュール)の全体構成を示すブロック図である。   FIG. 3 is a block diagram illustrating an overall configuration of logical blocks (modules) mainly related to operations of the client, the command server, and the DB server in the present embodiment.

100Aはクライアント100のブロック境界を表わしており、ここではJavaの実行環境を示す。140は外部記憶装置40上に存在する設定ファイルである。120aはRAM20に格納されているプログラムであり、コマンドの実行を要求するクライアントモジュールである。   Reference numeral 100A denotes a block boundary of the client 100, which indicates a Java execution environment. A setting file 140 exists on the external storage device 40. Reference numeral 120a denotes a program stored in the RAM 20, which is a client module that requests execution of a command.

クライアントモジュール120aは論理的にさらに、Admin権限のモジュールとUser権限のモジュールとの2種類のモジュールに分かれている。Admin権限モジュールとUser権限モジュールとは異なるスレッドで動作しているので、スレッドを調べることによってどちらのモジュールが動作しているのかを判定できる。   The client module 120a is further logically divided into two types of modules: an Admin authority module and a User authority module. Since the Admin authority module and the User authority module operate in different threads, it is possible to determine which module is operating by examining the thread.

120bはRAM20に格納されているプログラムであり、コマンドを実行するためのモジュールと、実行されるコマンド群とから成るコマンドモジュールである。   Reference numeral 120b denotes a program stored in the RAM 20, which is a command module including a module for executing a command and a command group to be executed.

200Aはコマンドサーバ200のブロック境界を表しており、ここではEJBコンテナの機能を含むJavaの実行環境を示す。220はRAM20に格納されているプログラムであり、コマンドを実行するためのモジュールと、実行されるコマンド群とから成るコマンドモジュールである。このコマンドモジュール220はクライアント100のコマンドモジュール120bとまったく同じものであり、クライアント100のRAM20に格納されているか、コマンドサーバ200のRAM20に格納されているかという点のみが異なる。   Reference numeral 200A denotes a block boundary of the command server 200, and here, a Java execution environment including an EJB container function is shown. A program 220 stored in the RAM 20 is a command module including a module for executing a command and a command group to be executed. The command module 220 is exactly the same as the command module 120b of the client 100, and differs only in whether it is stored in the RAM 20 of the client 100 or the RAM 20 of the command server 200.

300AはDBサーバ300のブロック境界を表わしており、ここではRAM20に格納されているDBプログラム(図示せず)の管理範囲を示す。340はDBプログラムが外部記憶装置40上に構築したデータベース(DB)である。クライアント100やコマンドサーバ200のプログラムは、DBプログラムが規定する方法でDBサーバ300にアクセスすることにより、ネットワークNを経由してDB340のデータの読み書きを行なうことができる。   Reference numeral 300A denotes a block boundary of the DB server 300, which indicates a management range of a DB program (not shown) stored in the RAM 20. Reference numeral 340 denotes a database (DB) constructed on the external storage device 40 by the DB program. The programs of the client 100 and the command server 200 can read and write data in the DB 340 via the network N by accessing the DB server 300 by a method defined by the DB program.

図4は、コマンドがリモート実行で動作している場合に使用されるモジュールを表わす活性ブロック図である。   FIG. 4 is an active block diagram representing modules used when a command is operating in remote execution.

図4において、使用されているモジュールや通信経路が太線で示されている。図示したように、クライアント100とDBサーバ300との通信経路のみが使用されていない。   In FIG. 4, the modules and communication paths used are indicated by bold lines. As illustrated, only the communication path between the client 100 and the DB server 300 is not used.

図5は、コマンドがローカル実行で動作している場合に使用されるモジュールを表わす活性ブロック図である。図4と同様に、使用されているモジュールや通信経路は太線で示されている。図示のように、モジュールはコマンドサーバ200のコマンドモジュール220が使用されていない。また、クライアント100とコマンドサーバ200との間の通信経路、およびコマンドサーバ200とDBサーバ300との間の通信経路も使用されていない。   FIG. 5 is an active block diagram representing modules used when a command is operating in local execution. As in FIG. 4, the modules and communication paths used are indicated by bold lines. As illustrated, the command module 220 of the command server 200 is not used as the module. Further, the communication path between the client 100 and the command server 200 and the communication path between the command server 200 and the DB server 300 are not used.

図6は、コマンドモジュールに含まれるクラスのUMLクラス図である。   FIG. 6 is a UML class diagram of classes included in the command module.

図示したように、大別してコマンドを実行するためのモジュール121,122とコマンド群123〜127とから成る。   As shown in the figure, it is roughly divided into modules 121 and 122 for executing commands and command groups 123 to 127.

Invokerクラス121は、従来の技術として例示した図11のInvokerクラス1102及び図13のInvokerクラス1302と同じ役割を担う。上記のようにクライアント100のコマンドモジュール120bとコマンドサーバ200のコマンドモジュール220とはまったく同じものであり、Invokerクラス121はクライアント100及びコマンドサーバ200の何れにも格納されているが、コマンドサーバ200ではInvokerクラス121は使用されない。   The Invoker class 121 plays the same role as the Invoker class 1102 of FIG. 11 and the Invoker class 1302 of FIG. As described above, the command module 120b of the client 100 and the command module 220 of the command server 200 are exactly the same, and the invoker class 121 is stored in both the client 100 and the command server 200. The Invoker class 121 is not used.

Serverクラス122は、従来の技術として例示した図13のServerクラス1306と同じ役割を担う。Serverクラス122はクライアント100及びコマンドサーバ200の何れにも格納されているが、クライアント100ではServerクラス121は使用されない。   The Server class 122 plays the same role as the Server class 1306 of FIG. The Server class 122 is stored in both the client 100 and the command server 200, but the Server class 121 is not used in the client 100.

Commandクラス123は、すべてのコマンドの抽象基底クラスである。抽象メソッドとしてexecuteとdummyExecuteが宣言されている。ここで、executeは通常実行のためのメソッド、dummyExecuteはダミー実行のためのメソッドとして派生クラスで定義されることを想定している。   The Command class 123 is an abstract base class for all commands. Execute and dummyExecute are declared as abstract methods. Here, it is assumed that execute is defined in the derived class as a method for normal execution, and dummyExecute is a method for dummy execution.

UserCommandクラス124は、User権限で実行されるコマンドを表わす抽象基底クラスであり、Commandクラス123から継承して宣言されている。同じくAdminCommandクラス125は、Admin権限で実行されるコマンドを表わす抽象基底クラスであり、Commandクラス123から継承して宣言されている。   The UserCommand class 124 is an abstract base class representing a command executed with the User authority, and is declared inheriting from the Command class 123. Similarly, the AdminCommand class 125 is an abstract base class representing a command executed with the Admin authority, and is declared inheriting from the Command class 123.

126はUser権限コマンドの例であるRegistCommandである。RegistCommand126はユーザ名を登録するためのコマンドである。セッターとしてsetNameメソッドでユーザ名を受け取る。コマンド実行後、ユーザIDをゲッターのgetIdメソッドで返す。executeメソッドではセッターで受け取ったユーザ名をDB340に登録し、一意なユーザIDを新規に発番する。dummyExecuteメソッドでは実際にDB340に登録することはせず、ユーザIDを乱数で生成する。   Reference numeral 126 denotes a RegistCommand which is an example of a User authority command. RegistCommand 126 is a command for registering a user name. User name is received by setName method as setter. After executing the command, the user ID is returned by the getId method of the getter. In the execute method, the user name received by the setter is registered in the DB 340, and a unique user ID is newly issued. The dummyExecute method does not actually register in the DB 340 but generates a user ID with a random number.

127はAdmin権限コマンドの例であるDeleteCommandである。DeleteCommand127はユーザ名を削除するためのコマンドである。セッターとしてsetIdメソッドでユーザIDを受け取る。ゲッターはない。executeメソッドではセッターで受け取ったユーザIDをDB340から検索して、存在すれば削除する。dummyExecuteメソッドでは実際にDB340にアクセスせずに、何もしないで処理を終了する。   Reference numeral 127 denotes a DeleteCommand which is an example of an Admin authority command. DeleteCommand 127 is a command for deleting the user name. User ID is received by setId method as setter. There is no getter. In the execute method, the user ID received by the setter is searched from the DB 340 and deleted if it exists. The dummyExecute method does not actually access the DB 340 and ends the process without doing anything.

上記123〜127のコマンド群はクライアント100及びコマンドサーバ200の何れにも格納されているが、ローカル実行の場合には、コマンドサーバ200では使用されない。   The command groups 123 to 127 are stored in both the client 100 and the command server 200, but are not used in the command server 200 in the case of local execution.

なお、図6のクラス図には必要最小限のメソッドしか定義されていないが、これらのクラスでは他のフィールドやメソッドを自由に定義して使用しながら本実施の形態を実現することができる。   Although only the minimum necessary methods are defined in the class diagram of FIG. 6, the present embodiment can be realized while freely defining and using other fields and methods in these classes.

図7は設定ファイルの内容を示す図である。   FIG. 7 shows the contents of the setting file.

この設定ファイルはJavaのプロパティファイルとして記述されている。Javaのプロパティファイルはテキストファイルであり、1行につき1項目を定義する。#で始まる行は単なるコメント行として無視される。ここでは141〜143の3種類の項目の定義を行なっている。   This configuration file is described as a Java property file. The Java property file is a text file and defines one item per line. Lines starting with # are simply ignored as comment lines. Here, three types of items 141 to 143 are defined.

141は、コメントにも記されているようにコマンドの実行先の設定であり、target=remoteの行かtarget=localの行かのいずれかを設定(他の行はコメントアウト=コメント行として無効化)して使用する。図7ではtarget=remoteの行が設定されている。target=remoteが設定されている場合は、リモート実行が指定されているので、コマンドはコマンドサーバ200で実行される。一方、target=localが設定されている場合は、ローカル実行の指定であり、コマンドはクライアント100で実行される。   141 is the command execution destination setting as described in the comment, and either target = remote line or target = local line is set (other lines are commented out = comment line is invalidated) To use. In FIG. 7, the line of target = remote is set. If target = remote is set, remote execution is designated, so the command is executed by the command server 200. On the other hand, when target = local is set, the local execution is designated, and the command is executed by the client 100.

142は、コメントにも記されているようにコマンドの実行権限の設定であり、policy=strictの行、policy=normalの行、及びpolicy=tolerateの行のうちのいずれか1つを設定(他の行はコメントアウト)して使用する。図7ではpolicy=strictの行が設定されている。コマンドの実行権限の設定による動作の違いについては図8を用いて後述する。   142 is a command execution right setting as described in the comment, and any one of a policy = strict line, a policy = normal line, and a policy = tolerate line is set (others). Comment out the line and use it. In FIG. 7, a line of policy = strict is set. The difference in operation depending on the command execution authority setting will be described later with reference to FIG.

143は、コメントにも記されているようにダミー実行の設定であり、dummy=trueの行及びdummy=falseの行のいずれか一方を設定(他の行はコメントアウト)して使用する。図7ではdummy=trueの行が設定されている。dummy=trueが設定されている場合は、コマンドはダミー実行モードとなり、各コマンドのdummyExecuteメソッド(図6参照)が実行される。dummy=falseが設定されている場合は、コマンドは通常実行モードとなり、各コマンドのexecuteメソッド(図6参照)が実行される。   Reference numeral 143 denotes a dummy execution setting as described in the comment. Either dummy = true or dummy = false is set (other lines are commented out). In FIG. 7, a line of dummy = true is set. If dummy = true is set, the command is in the dummy execution mode, and the dummyExecute method (see FIG. 6) of each command is executed. If dummy = false is set, the command is in the normal execution mode, and the execute method (see FIG. 6) of each command is executed.

なお、設定ファイルをJavaプロパティファイルとして説明したが、これに限るものではなく、解析可能なフォーマットであればテキストファイルでもバイナリファイルでも構わない。また、設定内容をDBに格納する形式としてもよい。   The configuration file has been described as a Java property file. However, the configuration file is not limited to this, and may be a text file or a binary file as long as it can be analyzed. Moreover, it is good also as a format which stores setting content in DB.

図8は、クライアントモジュールの種類、コマンドの種類、及びコマンドの実行権限の設定に応じたコマンドの実行の可否を示す図であり、(a)はコマンドの実行権限の設定142がstrictの場合を示し、(b)はコマンドの実行権限の設定142がnormalの場合を示し、(c)はコマンドの実行権限の設定142がtolerateの場合を示す。   FIG. 8 is a diagram showing whether or not a command can be executed according to the setting of the client module type, the command type, and the command execution authority. FIG. 8A shows a case where the command execution authority setting 142 is strict. (B) shows the case where the command execution authority setting 142 is normal, and (c) shows the case where the command execution authority setting 142 is tolerate.

図中、○が実行可能であることを表し、×が実行不可能であることを表わす。図7の142に示したように、実行権限の設定にはstrict、normal、及びtolerateの3種類がある。   In the figure, ◯ represents that execution is possible, and x represents that execution is not possible. As indicated by 142 in FIG. 7, there are three types of setting of execution authority: strict, normal, and tolerate.

(a)の場合には、コマンドの実行権限は厳格(strict)にチェックされる。図示したように、Admin権限のコマンド125は、クライアントモジュール120aのうちAdmin権限のクライアントモジュールからのみ実行可能である。User権限のコマンド124は、クライアントモジュール120aのうちUser権限のクライアントモジュールからのみ実行可能である。   In the case of (a), the command execution authority is checked strictly. As shown in the figure, the Admin authority command 125 can be executed only from a client module of the Admin authority in the client module 120a. The user authority command 124 can be executed only from the client module of the user module 120a.

(b)の場合には、コマンドの実行権限はstrictでもtolerateでもないポリシーでチェックされる。図示のように、Admin権限のコマンド125は、クライアントモジュール120aのうちAdmin権限のクライアントモジュールからのみ実行可能である。一方、User権限のコマンド124は、クライアントモジュール120aのうちUser権限のクライアントモジュール及びAdmin権限のクライアントモジュール双方から実行可能である。   In the case of (b), the command execution authority is checked by a policy that is neither strict nor tolerate. As shown in the figure, the Admin authority command 125 can be executed only from the Admin authority client module of the client modules 120a. On the other hand, the command 124 with the User authority can be executed from both the client module with the User authority and the client module with the Admin authority in the client module 120a.

(c)の場合には、コマンドの実行権限は寛容(tolerate)にチェックされる。図示のように、Admin権限のコマンド125及びUser権限のコマンド124の何れもが、クライアントモジュール120aのAdmin権限のクライアントモジュール及びUser権限のクライアントモジュール703の何れからも実行可能である。   In the case of (c), the command execution authority is checked for tolerance. As shown in the figure, both the Admin privilege command 125 and the User privilege command 124 can be executed from either the Admin privilege client module or the User privilege client module 703 of the client module 120a.

なお、実行権限の設定例を3種類示したが、これに限るものではなく、必要なポリシーをいくつでも決めることができる。   Although three types of execution authority setting examples are shown, the present invention is not limited to this, and any number of necessary policies can be determined.

図9及び図10のフローチャートを参照して、コマンド実行時の動作について説明する。   The operation at the time of command execution will be described with reference to the flowcharts of FIGS.

図9は、コマンドの実行処理を示すフローチャートである。   FIG. 9 is a flowchart showing command execution processing.

具体的にはクライアント100のクライアントモジュール120aからコマンドモジュール120b内のInvokerクラス121をインスタンス化したオブジェクトに対してstoreCommandメソッドを呼び出した場合の動作である。このときの引数はコマンドモジュール120bに存在する任意のCommand123の派生クラスをインスタンス化したオブジェクトである。   Specifically, this is an operation when the storeCommand method is called from the client module 120a of the client 100 to an object that instantiates the invoker class 121 in the command module 120b. The argument at this time is an object obtained by instantiating an arbitrary derived class of Command 123 existing in the command module 120b.

先ず、ステップS901で処理を開始する。ここで、引数で渡されたコマンドオブジェクトをcmdという名称で記す。   First, processing is started in step S901. Here, the command object passed as an argument is described with the name cmd.

ステップS902でクライアント100の設定ファイル140を読み込む。ここで、コマンドの実行先の設定141の内容をtgtという変数名で記す。また、ダミー実行の設定143の内容をdmyという変数名で記す。tgtは実行先の設定141に示すように‘remote’または‘local’という値を取る。dmyはダミー実行の設定143に示すように‘true’または‘false’という値を取る。   In step S902, the setting file 140 of the client 100 is read. Here, the contents of the command execution destination setting 141 are described with a variable name tgt. The contents of the dummy execution setting 143 are described with a variable name dmy. tgt takes a value of 'remote' or 'local' as shown in execution destination setting 141. dmy takes a value of ‘true’ or ‘false’ as shown in the dummy execution setting 143.

次に、ステップS903でコマンドの実行権限のチェック処理を行なう。このチェック処理の詳細は、図10のフローチャートを参照して後述する。このチェック処理は、チェック結果が「成功」か「失敗」かを返す。   In step S903, a command execution authority check process is performed. Details of this check processing will be described later with reference to the flowchart of FIG. This check process returns whether the check result is “success” or “failure”.

ステップS904でチェック結果が成功であるか否かを判定し、チェックが成功でない(失敗)場合には、コマンドの実行を失敗として終了する(ステップS911)。   In step S904, it is determined whether the check result is successful. If the check is not successful (failure), the execution of the command is terminated as failure (step S911).

ステップS904の判定の結果、コマンドの実行権限のチェックが成功である場合には、ステップS905でコマンドをダミー実行するか否かを判定する。この判定は、変数dmyの値が‘false’か否かで行なう。dmyの値が‘false’でない場合(dmyの値が‘true’の場合)には、ダミー実行が指定されているものと判断して、ステップS906に進んでcmdオブジェクトのdummyExecuteメソッド(図6参照)を実行し、続いてステップS910で戻り値として実行を終了したcmdオブジェクトを返して本処理を終了する。   If the result of determination in step S904 is that the command execution authority check is successful, it is determined in step S905 whether or not the command is to be executed in dummy. This determination is made based on whether or not the value of the variable dmy is 'false'. When the value of dmy is not “false” (when the value of dmy is “true”), it is determined that dummy execution is designated, and the process proceeds to step S906, where the dummyExecute method of the cmd object (see FIG. 6). ) Is then executed, and the cmd object whose execution has been completed is returned as a return value in step S910, and this process ends.

ステップS905の判別の結果、ダミー実行しない場合(dmyの値が‘false’の場合)には、ステップS907でコマンドの実行先を判定する。この判定は、変数tgtの値が‘remote’か否かで行なう。tgtの値が‘remote’でない場合(tgtの値が‘local’の場合)には、ローカル実行が指定されているものと判断して、ステップS908に進んでcmdオブジェクトのexecuteメソッド(図6参照)を実行し、続いてステップS910で戻り値として実行の終了したcmdオブジェクトを返して本処理を終了する。   If the result of determination in step S905 is that dummy execution is not performed (dmy value is 'false'), the command execution destination is determined in step S907. This determination is made based on whether or not the value of the variable tgt is “remote”. When the value of tgt is not “remote” (when the value of tgt is “local”), it is determined that local execution is designated, and the process proceeds to step S908 to execute the execute method of the cmd object (see FIG. 6). Then, in step S910, the cmd object that has been executed is returned as a return value, and this process ends.

ステップS907の判定でtgtの値が‘remote’である場合には、リモート実行が指定されているものと判断して、ステップS909に進む。ステップS909ではコマンドサーバ200に格納されているコマンドモジュール220のServerクラス122のオブジェクトに対してtransferメソッドをネットワークNを経由して呼び出す。ここで、transferメソッドへの引数にはcmdオブジェクトを指定する。transferメソッドはCommand123の派生クラスのオブジェクトをネットワーク経由で戻り値として返すので、返されたオブジェクトを新たにcmdオブジェクトとする。   If it is determined in step S907 that the value of tgt is “remote”, it is determined that remote execution is designated, and the process proceeds to step S909. In step S909, the transfer method is called via the network N for the object of the Server class 122 of the command module 220 stored in the command server 200. Here, a cmd object is specified as an argument to the transfer method. Since the transfer method returns an object of a class derived from Command 123 as a return value via the network, the returned object is newly set as a cmd object.

JavaではEJBサーバへのリモート呼び出しの際、引数・戻り値のオブジェクトのシリアライズ・デシリアライズ処理はプログラムが直接に行なうのではなくJava実行環境において行なわれるので、それぞれの処理はフローチャートに図示していない。続いてステップS910で戻り値として実行を終了したcmdオブジェクトを返して処理を終了する。   In Java, when a remote call is made to an EJB server, serialization / deserialization processing of arguments and return value objects is not performed directly by the program but in the Java execution environment, so each processing is not shown in the flowchart. . Subsequently, in step S910, the cmd object that has been executed is returned as a return value, and the process is terminated.

図10は、図9のステップS902で実行される実行権限のチェック処理を示すフローチャートである。ステップS902からはチェック対象のコマンドオブジェクトが引数で渡される。   FIG. 10 is a flowchart showing the execution authority check process executed in step S902 of FIG. From step S902, a command object to be checked is passed as an argument.

ステップS1001で処理を開始する。ここで、引数で渡されたコマンドオブジェクトをcmdという名称で記す。   Processing starts in step S1001. Here, the command object passed as an argument is described with the name cmd.

ステップS1002で設定ファイル140を読み込む。ここで、実行権限の設定142の内容をpcyという変数名で記す。pcyは実行権限の設定142に示すように‘strict’または‘normal’または‘tolerate’という値を取る。   In step S1002, the setting file 140 is read. Here, the contents of the execution authority setting 142 are described with a variable name pcy. pcy takes a value of ‘strict’, ‘normal’ or ‘tolerate’ as shown in the execution authority setting 142.

次に、ステップS1003では、呼び出し側のモジュールがUser権限モジュールか否かを判定する。すなわち、User権限モジュールかAdmin権限モジュールかを判定する。User権限モジュールでない場合、すなわちAdmin権限モジュールである場合には、ステップS1004に進む。User権限モジュールである場合には、ステップS1006に進む。   In step S1003, it is determined whether the calling module is a User authority module. That is, it is determined whether the user authority module or the Admin authority module. If it is not the User authority module, that is, if it is the Admin authority module, the process proceeds to step S1004. If it is a User authority module, the process advances to step S1006.

ステップS1004はAdmin権限モジュールから呼び出された場合の処理起点であり、コマンドがAdmin権限コマンドか否か、すなわち、Admin権限コマンド125の派生クラスか否かを判定する。Javaにおいてこの判定はcmd instanceof AdminCommandという式を評価することにより行なえる。cmdがAdmin権限コマンドである、すなわち、Admin権限コマンド125の派生クラスである場合には、実行権限の設定内容142に関わらず実行が可能なので、ステップS1009に進んでチェック成功として本処理を終了する。   Step S1004 is a process starting point when called from the Admin authority module, and determines whether the command is an Admin authority command, that is, whether it is a derived class of the Admin authority command 125 or not. In Java, this can be done by evaluating the expression cmd instanceof AdminCommand. If cmd is an Admin authority command, that is, a class derived from the Admin authority command 125, the execution is possible regardless of the execution authority setting content 142, and thus the process proceeds to step S1009 and the process ends as a successful check. .

ステップS1004の判定の結果、cmdがAdmin権限コマンドでない、すなわち、Admin権限コマンド125の派生クラスでない場合(cmdがUser権限コマンド124の派生クラスである場合)には、ステップS1005に進んで実行権限の設定がtolerateか否か、すなわち、tolerateかそれ以外のstrictまたはnormalかを判定する。この時点でモジュールはAdmin権限モジュール、コマンドはUser権限コマンドであることが判定されている。図8を参照して、実行権限の設定がstrictまたはnormalならば実行不可、tolerateならば実行可であることが分かる。   As a result of the determination in step S1004, if cmd is not the Admin authority command, that is, if it is not a derived class of the Admin authority command 125 (when cmd is a derived class of the User authority command 124), the process proceeds to step S1005. It is determined whether the setting is tolerate, that is, tolerate or other strict or normal. At this point, it is determined that the module is an Admin authority module and the command is a User authority command. Referring to FIG. 8, it can be seen that if the execution authority is set to strict or normal, execution is impossible, and if it is tolerate, execution is possible.

したがって、ステップS1005ではpcyの値を‘tolerate’と比較し、pcy=‘tolerate’か否かを判定し、pcy=‘tolerate’である場合には、ステップS1009に進んでチェック成功として処理を終了する。pcy=‘tolerate’でない場合(つまりpcyの値が‘strict’または‘normal’である場合)には、ステップS1008に進んでチェック失敗として本処理を終了する。   Therefore, in step S1005, the value of pcy is compared with 'tolerate' to determine whether pcy = 'tolerate'. If pcy = 'tolerate', the process proceeds to step S1009 and the process is terminated as a successful check. To do. If pcy = “tolerate” is not satisfied (that is, if the value of pcy is “strict” or “normal”), the process proceeds to step S1008 and the process ends as a check failure.

ステップS1006〜S1007もステップS1204〜S1205と同様であるので説明を省略する。   Steps S1006 to S1007 are also the same as steps S1204 to S1205, and a description thereof will be omitted.

本実施の形態ではプログラミング言語にJavaを使用したが、これに限るものではなく、いかなるプログラミング言語も使用可能である。また、リモート呼び出し機構にEJBを使用したが、これもEJBに限定するものではなく、プログラミング言語から利用可能であれば、いかなるリモート呼び出し機構も使用可能である。   In the present embodiment, Java is used as a programming language, but the present invention is not limited to this, and any programming language can be used. Moreover, although EJB was used for the remote call mechanism, this is not limited to EJB, and any remote call mechanism can be used as long as it is available from the programming language.

また、本実施の形態を実行するプログラムは記憶媒体に記憶させて提供することができる。上記プログラムを供給する記憶媒体としては、例えば、フロッピー(登録商標)ディスク、ハードディスク、光ディスク、光磁気ディスク、CD−ROM、CD−R、磁気テープ、不揮発性のメモリカードなどがある。   The program for executing this embodiment can be provided by being stored in a storage medium. Examples of the storage medium for supplying the program include a floppy (registered trademark) disk, hard disk, optical disk, magneto-optical disk, CD-ROM, CD-R, magnetic tape, and nonvolatile memory card.

本実施の形態に係るプログラミングフレームワークが実施されるネットワークの全体構成図である。It is the whole network block diagram with which the programming framework concerning this Embodiment is implemented. 図1におけるクライアント、コマンドサーバ、DBサーバとして使用される情報処理装置の構成の一例を示すブロック図である。It is a block diagram which shows an example of a structure of the information processing apparatus used as a client in FIG. 1, a command server, and DB server. 本実施の形態におけるクライアント、コマンドサーバ、DBサーバの動作に主として関わる論理ブロック(モジュール)の全体構成を示すブロック図である。It is a block diagram which shows the whole structure of the logical block (module) mainly concerned with operation | movement of the client in this Embodiment, a command server, and DB server. コマンドがリモート実行で動作している場合に使用されるモジュールを表わす活性ブロック図である。It is an active block diagram showing a module used when a command is operating by remote execution. コマンドがローカル実行で動作している場合に使用されるモジュールを表わす活性ブロック図である。It is an active block diagram showing a module used when a command is operating in local execution. コマンドモジュールに含まれるクラスのUMLクラス図である。It is a UML class diagram of a class included in a command module. 設定ファイルの内容を示す図である。It is a figure which shows the content of the setting file. クライアントモジュールの種類、コマンドの種類、及びコマンドの実行権限の設定に応じたコマンドの実行の可否を示す図であり、(a)はコマンドの実行権限の設定がstrictの場合を示し、(b)はコマンドの実行権限の設定がnormalの場合を示し、(c)はコマンドの実行権限の設定がtolerateの場合を示す。It is a figure which shows the propriety of the execution of the command according to the setting of the client module type, the command type, and the command execution authority, (a) shows the case where the setting of the command execution authority is strict, (b) Indicates a case where the command execution authority is set to normal, and (c) indicates a case where the command execution authority is set to tolerate. コマンドの実行処理を示すフローチャートである。It is a flowchart which shows the execution process of a command. 図9のステップS902で実行される実行権限のチェック処理を示すフローチャートである。10 is a flowchart showing execution authority check processing executed in step S902 of FIG. Commandパターンの構成を示すUMLクラス図である。It is a UML class diagram which shows the structure of Command pattern. Commandパターンの動作を説明するUMLシーケンス図である。It is a UML sequence diagram explaining operation | movement of a Command pattern. EJBコマンドパターンの構成を示すUMLクラス図である。It is a UML class diagram which shows the structure of an EJB command pattern. EJBコマンドパターンの動作を説明するUMLシーケンス図である。It is a UML sequence diagram explaining operation | movement of an EJB command pattern.

符号の説明Explanation of symbols

100 クライアント
120a クライアントモジュール
120b コマンドモジュール
140 設定ファイル
141 コマンドの実行先の設定
142 コマンドの実行権限の設定
143 ダミー実行の設定
200 コマンドサーバ
220 コマンドモジュール
300 DBサーバ
N ネットワーク
S903 コマンドの実行権限のチェック処理
S905 コマンドをダミー実行するか否かの判別
S907 コマンドの実行先の判別
100 Client 120a Client module 120b Command module 140 Setting file 141 Command execution destination setting 142 Command execution authority setting 143 Dummy execution setting 200 Command server 220 Command module 300 DB server N Network S903 Command execution authority check processing S905 Determination of whether to execute the command dummy S907 Determination of the execution destination of the command

Claims (4)

少なくとも第1の情報処理装置と第2の情報処理装置とが接続されるネットワーク環境におけるプログラム上の要求を抽象化した実体であるコマンドを実行するためのプログラミングフレームワークにおいて、
前記コマンドの実行を要求する前記第1の情報処理装置に格納されるコマンドモジュールと、
前記ネットワークを通じて前記第1の情報処理装置に接続された前記第2の情報処理装置に格納される、前記コマンドモジュールと同一のコマンドモジュールと、
前記第1の情報処理装置に設けられた、前記コマンドの実行を制御する設定ファイルとを備え、
前記コマンドの実行処理は、
前記第1の情報処理装置が前記設定ファイルに設定されたコマンドの実行権限の設定内容を判別する実行権限判別ステップと、
前記設定ファイルの設定がコマンドをダミー実行する設定である否かを判別するダミー実行判別ステップと、
前記設定ファイルの設定によるコマンドの実行先がローカル実行を行なう前記第1の情報処理装置であるのかリモート実行を行なう前記第2の情報処理装置であるのかを判別する実行先判別ステップとを備え、
前記設定ファイルの設定がダミー実行する設定である場合には、前記実行先判別ステップの結果の如何にかかわらず第1の情報処理装置がコマンドをローカル実行することを特徴とするプログラミングフレームワーク。
In a programming framework for executing a command that is an entity that abstracts a request on a program in a network environment in which at least a first information processing apparatus and a second information processing apparatus are connected,
A command module stored in the first information processing apparatus that requests execution of the command;
A command module identical to the command module stored in the second information processing apparatus connected to the first information processing apparatus via the network;
A setting file provided in the first information processing apparatus for controlling execution of the command;
The execution process of the command is as follows:
An execution authority determining step in which the first information processing apparatus determines a setting content of an execution authority of a command set in the setting file;
A dummy execution determination step of determining whether or not the setting of the setting file is a setting for dummy execution of a command;
An execution destination determining step of determining whether the execution destination of the command based on the setting file setting is the first information processing apparatus performing local execution or the second information processing apparatus performing remote execution;
When the setting of the setting file is a setting for dummy execution, the first information processing apparatus executes the command locally regardless of the result of the execution destination determination step.
前記実行権限判別ステップは、前記設定ファイルの設定を参照し、該設定においてはコマンドの実行者とコマンドの種類との組み合わせに対して実行権限をマトリックス定義したポリシーを複数持つことを特徴とする請求項1記載のプログラミングフレームワーク。   The execution authority determining step refers to the setting of the setting file, and the setting includes a plurality of policies in which execution authority is matrix-defined for combinations of a command executor and a command type. Item 1. A programming framework according to item 1. 前記第1の情報処理装置及び前記第2の情報処理装置の実行環境がJavaであり、前記第2の情報処理装置による前記リモート実行の実現手段がEJB(Enterprise JavaBeans)であることを特徴とする請求項1または2記載のプログラミングフレームワーク。   The execution environment of the first information processing apparatus and the second information processing apparatus is Java, and the means for realizing the remote execution by the second information processing apparatus is EJB (Enterprise JavaBeans) The programming framework according to claim 1 or 2. 請求項1、請求項2、または請求項3のいずれか1項に記載のプログラムを格納したことを特徴とするコンピュータ読み取り可能な記憶媒体。   A computer-readable storage medium storing the program according to any one of claims 1, 2, and 3.
JP2003320264A 2003-09-11 2003-09-11 Programming framework for executing commands Withdrawn JP2005085240A (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2003320264A JP2005085240A (en) 2003-09-11 2003-09-11 Programming framework for executing commands

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2003320264A JP2005085240A (en) 2003-09-11 2003-09-11 Programming framework for executing commands

Publications (1)

Publication Number Publication Date
JP2005085240A true JP2005085240A (en) 2005-03-31

Family

ID=34418956

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2003320264A Withdrawn JP2005085240A (en) 2003-09-11 2003-09-11 Programming framework for executing commands

Country Status (1)

Country Link
JP (1) JP2005085240A (en)

Similar Documents

Publication Publication Date Title
US9189263B1 (en) Object synchronization in shared object space
US8799857B2 (en) XML application framework
US8793649B2 (en) XML application framework
US8775677B2 (en) Transportable web application
JP4436036B2 (en) Information processing apparatus, trace processing method, program, and recording medium
CN101421711B (en) Virtual execution system for resource-constrained devices
US7543301B2 (en) Shared queues in shared object space
US20090165078A1 (en) Managing policy rules and associated policy components
JPH09146821A (en) Method and apparatus for provision of continuous data support with transparency with reference to heterogeneous data type
JPH1040087A (en) Method for handling data model to be used for software engineering
US11948005B2 (en) Managed integration of constituent services of multi-service applications
US20210406039A1 (en) Managed control plane service
JPWO2017033441A1 (en) System construction support system, method, and storage medium
AU2021411481B2 (en) System and method for real-time, dynamic creation, delivery, and use of customizable web applications
CN110457385A (en) In multi-tenant environment can hypostazation database object
CN107391539A (en) Transaction methods, server and storage medium
JP5867540B2 (en) PROGRAM GENERATION DEVICE, PROGRAM GENERATION DEVICE CONTROL METHOD, AND PROGRAM
CN109254764A (en) The method of software architecture when the acquisition operation of curstomer-oriented end application program
JP4686117B2 (en) Source code conversion apparatus, source code conversion method, and program
US8291377B2 (en) External configuration of processing content for script
CN111459547B (en) Method and device for displaying function call link
JP2005085240A (en) Programming framework for executing commands
JP2007265030A (en) Job management apparatus and job management method
CN112363700A (en) Cooperative creation method and device of intelligent contract, computer equipment and storage medium
US20010013040A1 (en) General purpose resource manager for hierarchical file systome

Legal Events

Date Code Title Description
RD03 Notification of appointment of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7423

Effective date: 20060417

A300 Withdrawal of application because of no request for examination

Free format text: JAPANESE INTERMEDIATE CODE: A300

Effective date: 20061205