JP2005085240A - Programming framework for executing commands - Google Patents
Programming framework for executing commands Download PDFInfo
- 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
Links
Images
Landscapes
- Multi Processors (AREA)
Abstract
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
1103のCommandクラスはすべてのコマンドの抽象基底クラスである。Command抽象基底クラスには抽象メソッドexecuteのみ宣言されている。executeメソッドは各Command派生クラスで実行する実動作のプレースホルダとして宣言されており、Invokerクラス1102のstoreCommandメソッドから呼ばれる。このexecuteメソッドは引数・戻り値を持たない。
The
1104のConcreteCommandクラスはCommand派生クラスの例として記したものである。ConcreteCommandクラスではCommand抽象基底クラス1103の抽象メソッドexecuteが実装されている。ここで、setAとsetBはexecuteメソッドに引数を与えるためのメソッドであるセッターであり、getCとgetDはexecuteメソッドの実行後に実行結果(戻り値)を取得するためのメソッドであるゲッターである。
The ConcreteCommand
図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をインスタンス化したオブジェクトである。
先ず、1204でApplicationオブジェクト1201はConcreteCommandクラスのインスタンスを生成する。以後このオブジェクトをcmdという名称で記す。
First, in 1204, the
次に、1205でcmdオブジェクト1202のセッターであるsetAを呼び出し、1206で同様のセッターであるsetBを呼び出すことにより、executeメソッドを呼び出すのための引数をcmdオブジェクト1202に設定する。
Next, a setter that is a setter of the
次に、1207でApplicationオブジェクト1201は、cmdオブジェクト1202を引数としてInvokerオブジェクト1203のstoreCommandメソッドを呼び出す。
Next, in 1207, the
次に、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
その後、Applicationオブジェクト1201は、返されたcmdオブジェクト1202のゲッターであるgetCを1209で呼び出し、同様のゲッターgetDを1210で呼び出すことにより、executeメソッドの呼び出しの結果を得ることができる。
Thereafter, the
このような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パターンの構成と同様である。
1306のServerクラスはEJBの実装クラスであり、クライアントからのコマンドの実行要求をネットワーク経由で受けるためのクラスである。Serverクラス1306のtransferメソッドがコマンドの実行要求を受ける。transferメソッドはCommand派生クラスのオブジェクトを引数に取り、同じくCommand派生クラスのオブジェクトを戻り値として返す。
A
1307のCommandクラス及び1308のConcreteCommandクラスは、それぞれ1303のCommandクラス及び1304のConcreteCommandクラスとまったく同じものである。つまり、CommandクラスとConcreteCommandクラスはまったく同じものがクライアント側とサーバ側に存在している。
The
図14は、EJBコマンドパターンの動作を説明するUMLシーケンス図である。 FIG. 14 is a UML sequence diagram for explaining the operation of the EJB command pattern.
1416はネットワーク境界である。図面上、このネットワーク境界1416よりも左がクライアント側の動作を示し、右がサーバ側の動作を示す。
1401,1402,1403はクライアント側のオブジェクトであり、1401は、図13のApplicationクラス1301をインスタンス化したオブジェクトである。1402は、図13のConcreteCommand1304をインスタンス化したオブジェクトであり、名称はcmdである。1403は、図13のInvokerクラス1302をインスタンス化したオブジェクトである。
1404,1405はサーバ側のオブジェクトであり、1404は、図13のServerクラス1306をインスタンス化したオブジェクトであり、1405は、図13のConcreteCommandクラス1308をインスタンス化したオブジェクトである。
先ず、1406でApplicationオブジェクト1401がConcreteCommandクラスのcmdオブジェクト1402を生成して、1407,1408で引数を設定し、1409でInvokerオブジェクト1403のstoreCommandメソッドを呼び出すまでは図12における1204から1207までと同様である。
First, the
次に、Invokerオブジェクト1403は、オブジェクトをネットワーク経由で引数として渡すために、1410でcmdオブジェクトに対してシリアライズ(直列化)処理を実行する。
Next, the
次に、Invokerオブジェクト1403は、1411でネットワーク1416を経由してServerオブジェクト1404のtransferメソッドを呼び出す。このときの引数は1410でシリアライズされたcmdオブジェクトである。シリアライズされたcmdオブジェクトを受け取ったServerオブジェクト1404は、1412で先ずデシリアライズ(非直列化)処理を実行してcmdオブジェクトを復元する。ここで復元されたcmdオブジェクトが1405であり、これはcmdオブジェクト1402と論理的に等価な実体である。
Next, the
最後にServerオブジェクト1404は、1413でcmdオブジェクト1405のexecuteメソッドを呼び出す。以上でネットワーク経由のtransferメソッドの呼び出し1411が終了するが、図12と同様にメソッドの終了は図示していない。
Finally, the
ここで、transferメソッドは戻り値としてcmdオブジェクト1405をシリアライズして返し、Invokerオブジェクト1403は返されたcmdオブジェクトをデシリアライズして1402のcmdオブジェクトと置き換える。この結果、Applicationオブジェクト1401は、1414,1415でゲッターでgetCやgetDを呼び出して処理結果を得ることができる。
上記のように従来においても、コマンドのローカル実行やリモート実行が可能である。しかしながら、コマンドを用いて汎用ライブラリを作成する場合には、コマンドがローカルで実行されるかリモートで実行されるかを前もって決定できないという問題があった。 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は情報処理装置である。
なお、DBサーバ300を別個に独立した情報処理装置として図示したが、DBサーバ機能をクライアント100やコマンドサーバ200が備えるようにしてもよい。
Although the
図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
10は、制御プログラムに従って本装置全体の制御を行なうCPUである。20は、CPU10が実行する処理などの本装置の制御プログラムや文書画像等を格納する内部記憶部のRAMである。30は、CPU10の制御の下にインターネット等のネットワークとの接続を行なってデータ等を送受信するネットワークインタフェース(Net I/F)である。
A
40は、ファイルを保存する磁気ディスク等の外部記憶装置である。50はディスプレイ、60はキーボード、70はマウス等のポインティングデバイスである。
RAM20に格納されているプログラムは、同じくRAM20に格納されているOS(Operating System)の機能を必要に応じて使用して、RAM20に一時記憶するデータの内容を読み書きしたり、外部記憶装置40上のファイルの内容を読み書きしたり、ネットワークインタフェース30を通じてデータの送受信を行なったり、キーボード60やポインティングデバイス70からの入力を受け取ったり、ディスプレイ50に画像表示を行なったりする等の所定の動作を行なうためのものである。
The program stored in the
なお、プログラムはRAM20に格納されるとしたが、これに限るものではなく、プログラムを外部記憶装置40から読み込んで実行するようにしてもよい。また、ネットワークインタフェース30を介してプログラムを受信して実行するようにしてもよい。また、図2には示していないが、ROM等の読み出し専用の内部記憶部から読み込んで実行するようにしてもよい。
Although the program is stored in the
また、キーボード60やポインティングデバイス70の代わりに、あるいはそれらに加えて、音声入力等の他の入力装置を備えることもできる。また、これらすべての構成要素を必ずしも備える必要はなく、コマンドサーバ200やDBサーバ300においては、多くの場合にディスプレイ50を省略したり、キーボード60やポインティングデバイス70を他の情報処理装置と共有したりしてもよい。
Further, instead of or in addition to the
次に、図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に格納されているプログラムであり、コマンドの実行を要求するクライアントモジュールである。
クライアントモジュール120aは論理的にさらに、Admin権限のモジュールとUser権限のモジュールとの2種類のモジュールに分かれている。Admin権限モジュールとUser権限モジュールとは異なるスレッドで動作しているので、スレッドを調べることによってどちらのモジュールが動作しているのかを判定できる。
The
120bはRAM20に格納されているプログラムであり、コマンドを実行するためのモジュールと、実行されるコマンド群とから成るコマンドモジュールである。
200Aはコマンドサーバ200のブロック境界を表しており、ここではEJBコンテナの機能を含むJavaの実行環境を示す。220はRAM20に格納されているプログラムであり、コマンドを実行するためのモジュールと、実行されるコマンド群とから成るコマンドモジュールである。このコマンドモジュール220はクライアント100のコマンドモジュール120bとまったく同じものであり、クライアント100のRAM20に格納されているか、コマンドサーバ200のRAM20に格納されているかという点のみが異なる。
300AはDBサーバ300のブロック境界を表わしており、ここではRAM20に格納されているDBプログラム(図示せず)の管理範囲を示す。340はDBプログラムが外部記憶装置40上に構築したデータベース(DB)である。クライアント100やコマンドサーバ200のプログラムは、DBプログラムが規定する方法でDBサーバ300にアクセスすることにより、ネットワークNを経由してDB340のデータの読み書きを行なうことができる。
図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
図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
図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
Invokerクラス121は、従来の技術として例示した図11のInvokerクラス1102及び図13のInvokerクラス1302と同じ役割を担う。上記のようにクライアント100のコマンドモジュール120bとコマンドサーバ200のコマンドモジュール220とはまったく同じものであり、Invokerクラス121はクライアント100及びコマンドサーバ200の何れにも格納されているが、コマンドサーバ200ではInvokerクラス121は使用されない。
The
Serverクラス122は、従来の技術として例示した図13のServerクラス1306と同じ役割を担う。Serverクラス122はクライアント100及びコマンドサーバ200の何れにも格納されているが、クライアント100ではServerクラス121は使用されない。
The
Commandクラス123は、すべてのコマンドの抽象基底クラスである。抽象メソッドとしてexecuteとdummyExecuteが宣言されている。ここで、executeは通常実行のためのメソッド、dummyExecuteはダミー実行のためのメソッドとして派生クラスで定義されることを想定している。
The
UserCommandクラス124は、User権限で実行されるコマンドを表わす抽象基底クラスであり、Commandクラス123から継承して宣言されている。同じくAdminCommandクラス125は、Admin権限で実行されるコマンドを表わす抽象基底クラスであり、Commandクラス123から継承して宣言されている。
The
126はUser権限コマンドの例であるRegistCommandである。RegistCommand126はユーザ名を登録するためのコマンドである。セッターとしてsetNameメソッドでユーザ名を受け取る。コマンド実行後、ユーザIDをゲッターのgetIdメソッドで返す。executeメソッドではセッターで受け取ったユーザ名をDB340に登録し、一意なユーザIDを新規に発番する。dummyExecuteメソッドでは実際にDB340に登録することはせず、ユーザIDを乱数で生成する。
127はAdmin権限コマンドの例であるDeleteCommandである。DeleteCommand127はユーザ名を削除するためのコマンドである。セッターとしてsetIdメソッドでユーザIDを受け取る。ゲッターはない。executeメソッドではセッターで受け取ったユーザIDをDB340から検索して、存在すれば削除する。dummyExecuteメソッドでは実際にDB340にアクセスせずに、何もしないで処理を終了する。
上記123〜127のコマンド群はクライアント100及びコマンドサーバ200の何れにも格納されているが、ローカル実行の場合には、コマンドサーバ200では使用されない。
The
なお、図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
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
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参照)が実行される。
なお、設定ファイルを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
(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
(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
なお、実行権限の設定例を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
先ず、ステップ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
次に、ステップ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
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
次に、ステップ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
ステップ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.
100 クライアント
120a クライアントモジュール
120b コマンドモジュール
140 設定ファイル
141 コマンドの実行先の設定
142 コマンドの実行権限の設定
143 ダミー実行の設定
200 コマンドサーバ
220 コマンドモジュール
300 DBサーバ
N ネットワーク
S903 コマンドの実行権限のチェック処理
S905 コマンドをダミー実行するか否かの判別
S907 コマンドの実行先の判別
100
Claims (4)
前記コマンドの実行を要求する前記第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.
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) |
-
2003
- 2003-09-11 JP JP2003320264A patent/JP2005085240A/en not_active Withdrawn
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 |