JP3738624B2 - 分散アプリケーション制御システム及び制御方法並びにプログラムを記録した記録媒体 - Google Patents

分散アプリケーション制御システム及び制御方法並びにプログラムを記録した記録媒体 Download PDF

Info

Publication number
JP3738624B2
JP3738624B2 JP30468199A JP30468199A JP3738624B2 JP 3738624 B2 JP3738624 B2 JP 3738624B2 JP 30468199 A JP30468199 A JP 30468199A JP 30468199 A JP30468199 A JP 30468199A JP 3738624 B2 JP3738624 B2 JP 3738624B2
Authority
JP
Japan
Prior art keywords
agent
application
shell
computer
execution
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.)
Expired - Fee Related
Application number
JP30468199A
Other languages
English (en)
Other versions
JP2001125872A (ja
Inventor
悟 藤田
和也 小山
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.)
NEC Corp
Original Assignee
NEC Corp
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 NEC Corp filed Critical NEC Corp
Priority to JP30468199A priority Critical patent/JP3738624B2/ja
Priority to US09/695,195 priority patent/US6886024B1/en
Publication of JP2001125872A publication Critical patent/JP2001125872A/ja
Application granted granted Critical
Publication of JP3738624B2 publication Critical patent/JP3738624B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/485Task life-cycle, e.g. stopping, restarting, resuming execution
    • G06F9/4856Task life-cycle, e.g. stopping, restarting, resuming execution resumption being on a different machine, e.g. task migration, virtual machine migration
    • G06F9/4862Task life-cycle, e.g. stopping, restarting, resuming execution resumption being on a different machine, e.g. task migration, virtual machine migration the task being a mobile agent, i.e. specifically designed to migrate

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multi Processors (AREA)
  • Stored Programmes (AREA)

Description

【0001】
【発明の属する技術分野】
本発明は、情報処理システムに関し、特に、エージェントを用いた分散アプリケーション制御システム、制御方法、及びプログラムを記録した記録媒体に関する。
【0002】
本発明は、後の説明でも明らかとされるように、複数の計算機に分散して存在するファイルを統一的なディレクトリに管理し、各ファイルの提供するサービスを実施するアプリケーションを管理するアプリケーションエージェントを、移動可能な制御用エージェントシステムが、そのファイルの存在する計算機に移動あるいは通信してスクリプトを実行することで、アプリケーション制御を行う分散アプリケーション制御システムに適用して好適とされる技術に関する。
【0003】
【従来の技術】
例えば、サンマイクロシステムズ社(Sun MicroSystems)のNFS(Network File System)は、よく知られているように、ネットワーク接続された複数の計算機において、リモート計算機のファイルシステムを、計算機のローカルなファイルシステムであるかのように見せてディレクトリ管理し、当該計算機ではローカルなファイルシステムと同じように、リモート計算機のファイルにアクセスすることを可能としている。しかしながら、ファイルに対する処理は、ローカルな計算機によって行われ、リモート計算機上でファイルに対する処理を実行することはできない。
【0004】
また、例えば文献1(「UNIXネットワークプログラミング、W.リチャード・スティーヴンス著、プレンティスホール、1990」)等に記載されているように、UNIXシステムに実装されているリモートシェルは、リモート計算機上でコマンドを実行するためのスクリプト言語である。このスクリプト言語では、実行する計算機を指定し、該指定された計算機上で、スクリプトで指定されたコマンドを実行する。ただし、一つのスクリプトは、一つの計算機上でだけで解釈される。
【0005】
複数の計算機上でコマンドを実行するには、それぞれが実行対象計算機を指定した複数のスクリプトを用意し、複数のスクリプトを逐次的に、複数の計算機のそれぞれに対して、リモートシェルとして呼び出すことで実現するしか、手だてがない。
【0006】
ところで、複数の計算機にまたがって、実行を継続する技術として、移動エージェントシステムが知られている。
【0007】
例えば文献2(特開平7−182174号公報)に記載されているように、米国ジェネラルマジック社のテレスクリプトの技術では、エージェントが「go」命令によって、他の計算機を移動する。エージェントが、他のエージェントと通信を行うためには、事前に相手のエージェントが存在する「プレース」という特殊な場所に移動する必要があり、逆に言えば、同じプレースに存在するエージェント間だけで通信を行うことができる。複数の計算機上を巡回してサービスを受けることができることが特徴的であるが、プレース管理と、サービス管理が別々であったこと、複数の計算機に対して、一つのエージェントが並列にアクセスすることができないことなどの制限があった。
【0008】
また文献3(「William Cockayne, Michael Zyda 著,Mobile Agent,Manning Publications Co., 1997」)に記載されている「Agent Tcl」、あるいは、別名「D'Agent」は、米国ダートマス大学で開発された移動エージェントである。この移動エージェントは、「Tcl」と呼ばれるシェルスクリプト言語を基にしており、これに、「agent_jump」(エージェントジャンプ)命令による移動機能等が付加されている。「Tcl」は簡易シェルとして利用できるものであり、テレスクリプトのようなプログラム言語と比べて、利用者に簡単に利用できるシェルスクリプト言語である。
【0009】
しかしながら、「Agent Tcl」においても、エージェントの計算機の移動は、移動命令により行われており、計算機内の資源とは、別途ディレクトリで管理されており、計算機と、計算機内の資源とは、それぞれ、別のディレクトリで管理されており、移動命令と計算機資源の管理は独立に行われている。
【0010】
また、一つのエージェントは、同時に一つの計算機にしか存在することができないため、複数の計算機の資源を並列的に扱うことはできない。
【0011】
さらに、例えば文献4(特開平10−149287号公報)には、「goto」命令によりエージェントを移動できるスクリプト言語のアクションを述語として記述できる述語論理型の移動エージェントシステムが開示されている。
【0012】
上記文献4に記載されるシステムにおいて、スクリプト言語は、エージェントの移動を行う記述を書くことができるが、計算機が提供する資源と合わせてディレクトリ管理することはできない。また、複数の計算機の資源に並列にアクセスできない点も、他の移動エージェント言語と同様である。
【0013】
そして、例えば文献5(特願平11−047015号:本願出願時未公開)には、エージェントの移動命令を持ち、実行中のプログラムを他の計算機上に移動させることができるだけでなく、一つのエージェントが複数の計算機上に分散して、並列的に実行を行う機能を備え、一つのプログラムが、複数の計算機に分散して存在するサービスを統合して分散かつ同期的に管理し、ネットワークにまたがる一つのサービスとして提供することを可能とするシステムが記載されている。しかしながら、移動命令と計算機資源の管理が互いに独立に行われており、ネットワークに分散した計算機資源を、利用者に簡単に見せることはできない。
【0014】
【発明が解決しようとする課題】
上記したように、上記文献等に記載されている技術は、下記記載の問題点を有している。
【0015】
第1の問題点は、複数のリモート計算機とその計算機の提供する資源を、簡易なディレクトリ構造で管理して、ディレクトリを移動することで、資源のある場所にその資源を管理するエージェントを生成し、資源の制御を対話的に行うことができる制御環境を提供していない、ということである。
【0016】
その理由は、移動エージェントを用いていないシステムでは、計算機間を簡易に移動する機能を持ち合わせず、リモート計算機上に資源管理用のエージェントを作成することができないためである。
【0017】
また移動エージェントを用いるシステムであっても、リモート計算機との通信は制限されていたり、あるいは、計算機間の移動と、計算機内資源のディレクトリ管理は、別個に管理されている、ためである。
【0018】
第2の問題点は、従来の移動エージェントシステムにおいて、複数のリモート計算機の提供するサービスを、一つの制御用エージェントから、逐次的に制御する手段と、分散かつ同期して制御する手段の両者を具備することができない、ということである。
【0019】
その理由は、上記文献等に記載されている移動エージェントシステムは、移動手段によって、逐次的に複数の計算機を巡回する機能を具備しているものの、一つのエージェントが複数の計算機に分散して存在し、複数のサービスを制御するという機能は具備していないためである。
【0020】
また、移動機能と分散機能を持つエージェントシステムにおいても、その目的は、エージェントシステムの開発用プログラム言語の構築であって、逐次制御と分散制御を利用者が容易に組み合わせることを主眼においたスクリプト言語の開発という観点を持った開発が存在していないためである。
【0021】
したがって、本発明は、上記問題点に鑑みてなされたものであって、その目的は、利用者との対話的な環境によって、複数の計算機上の資源を管理するエージェントの生成、移動、終了を、スクリプト言語を用いて、簡単に制御できるシステム及び方法並びに記録媒体を提供することにある。
【0022】
本発明の他の目的は、リモート計算機上のエージェントの制御を行うシステムに、移動機能と分散機能を持たせ、利用者には、計算機移動と資源管理を一つのディレクトリ構造に見せることで、計算機ネットワークに関して知識を持たない利用者でも、移動機能と分散機能の必要な統合サービスを実現するエージェントを、スクリプト言語によって簡易に記述できるシステム及び方法並びに記録媒体を提供することにある。これ以外の本発明の目的、特徴、利点等は以下の説明から、当業者には、直ちに明らかとされるであろう。
【0023】
【課題を解決するための手段】
前記目的を達成する本発明に係るシステムは、分散アプリケーションを制御するためのスクリプト言語の入力を受けて前記スクリプト言語を解釈して実行するシェルエージェントと、計算機にローカルなファイルシステムの情報を提供するローカルサービスエージェントと、アプリケーションを直接制御するためのアプリケーションエージェントと、前記シェルエージェントと前記ローカルサービスエージェントと前記アプリケーションエージェントに実行の場を提供するエージェントベースと、エージェントを他の計算機上のエージェントベースに移動させるエージェント移動手段と、エージェントが自計算機又は他の計算機中の他のエージェントと通信を行うリモートコール手段と、アプリケーションエージェントを生成するエージェント生成手段と、前記エージェントベース、前記エージェント移動手段、前記リモートコール手段、前記エージェント生成手段を備えるエージェントプラットフォームと、を備えて構成され、前記スクリプト言語の入力に対して各計算機に分散したアプリケーションの実行を制御する。
【0024】
本発明に係る分散アプリケーション制御方法は、シェルエージェントが、分散アプリケーションを制御するために入力されたスクリプト言語を解釈して実行し、ローカルサービスエージェントが、計算機にローカルなファイルシステムに関する情報を提供し、アプリケーションエージェントがアプリケーションを直接制御し、前記シェルエージェントと、前記ローカルサービスエージェントと、前記アプリケーションエージェントとに対してそれぞれエージェントベースが実行の場を提供し、エージェントが別の計算機の別のエージェントベースに移動自在とされ、エージェントが自計算機又は他の計算機中の他のエージェントと通信を行い、前記シェルエージェントは入力されたスクリプト言語を解釈してアプリケーションエージェントの生成を制御し、エージェントプラットフォームが前記エージェント生成手段を管理し、スクリプト言語の入力に対して、前記各計算機に分散したアプリケーションの実行を制御する。
【0025】
【発明の実施の形態】
本発明の実施の形態について以下に説明する。本発明の分散アプリケーション制御システムは、一実施の形態において、スクリプト言語を解釈するシェルエージェントが自らを移動させるか、あるいは、リモート計算機のエージェントプラットフォームと通信することによって複数の計算機に分散したアプリケーションを、一つのスクリプトによって制御可能としたものである。
【0026】
より詳細には、各計算機(1)は、図2を参照すると、そのエージェントプラットフォーム(2)が、分散アプリケーションを制御するためのスクリプト言語の入力を受けて前記スクリプト言語を解釈して実行するシェルエージェント(10)と、計算機にローカルなファイルシステムの情報を提供するローカルサービスエージェント(11)と、アプリケーションを直接制御するためのアプリケーションエージェント(12)を持つことのできるエージェントベース(9)と、エージェントを他の計算機上のエージェントベースに移動させるエージェント移動手段(13)と、スレッド生成手段(14)と、エージェントが自計算機又は他の計算機中の他のエージェントと通信を行うリモートコール手段(15)と、アプリケーションエージェントを生成するエージェント生成手段(16)とを備え、入力手段(7)を通して入力されたスクリプト言語を、シェルエージェント(10)が解釈してアプリケーションエージェント(12)を起動し、アプリケーションエージェント(12)が実際のアプリケーション(18)を管理し、シェルエージェント、アプリケーションエージェントは、エージェント移動手段(13)を用いて別の計算機に移動自在とされ、リモートコール手段(15)を用いて別の計算機中のエージェントと通信できる。
【0027】
シェルエージェントは、シェルインタプリタ(図3の20)と、現在ディレクトリ(図3の24)を備えている。
【0028】
シェルエージェントは、エージェントのリポジトリパステーブル(図3の31)を備え、アプリケーションエージェントを、リポジトリパス上から検索して実行する。
【0029】
シェルエージェントのアプリケーションエージェント生成のために、各計算機にローカルな資源へのアクセスを補助するローカルサービスエージェント(図4の11)を呼び出す手段(図4の30)を備え、アプリケーションエージェントを生成する時に、シェルエージェントが、直接、エージェント生成手段(16)を呼び出すのではなく、ローカルサービスエージェント(11)を介して、アプリケーションエージェントを生成する。
【0030】
シェルエージェントは、エージェントの状態を管理する状態テーブル(図3の23)を備え、状態テーブルは、エージェントの並列実行カウントと、端末実行フラグと、を備え、前記現在ディレクトリの現在ベースが、リモート計算機である時に、エージェントの状態が並列実行状態でなく、端末実行モードでもないときに、シェルエージェントを、前記リモート計算機に移動させる。
【0031】
本発明は、別の実施の形態において、シェルインタプリタが、「parallel」(パラレル)というキーワードを解釈し、複数のコマンドを並列に実行するために、スレッドの生成、リモート計算機中へのサブシェルエージェント生成を行う。
【0032】
より詳細には、シェルインタプリタ(図3の20)が、構文解析手段(図3の21)を備え、スレッド生成手段(図3の14)と、リモートコール手段(図3の13)とを用いて、リモート計算機に、サブシェルエージェント(図18の51)を生成する。
【0033】
入力されたスクリプト言語中に、並列実行を指定する構文(「parallel文」)が存在する場合、前記スクリプト言語を実行するのに必要な分のスレッドを生成して、アプリケーションの並列実行を制御する。
【0034】
エージェントプラットフォームが、生成されたスレッドによるリモート計算機中のアプリケーションエージェントを生成する時に、前記リモート計算機中のエージェントベース中に、サブシェルエージェントを有し、前記サブシェルエージェントが、アプリケーションエージェント生成を代行する。
【0035】
本発明は、さらに別の実施の形態において、起動されるアプリケーションエージェントが、計算機に依存した特定アプリケーションプログラムを実行すしたり、あるいは汎用のアプリケーションエージェントを用いることで、ファイルに依存してアプリケーションを選択的に実行する。
【0036】
より詳細には、アプリケーションエージェント(図24の12)は、特定のアプリケーション(図24の18)に関係付けられるか、あるいは、汎用アプリケーションエージェント(図25の97)として、拡張子アプリケーション対応テーブル(図25の98)を用いて、アプリケーション(図25の18)を決定する。
【0037】
シェルエージェントのシェルインタプリタ(図3の20)は、現在ディレクトリ(図3の24)の情報を参照しながら、スクリプト言語の解釈と実行を行い、必要に応じて、エージェント移動手段(図3の13)によるシェルエージェント自身の移動、リモート計算機との通信を行うためにリモートコール手段(図3の15)、アプリケーションを直接制御するアプリケーションエージェントを生成するためのエージェント生成手段(図3の16)を呼び出す。
【0038】
シェルインタプリタの構文解析手段(21)は、入力されたスクリプト言語のparallel文を実行するためにスレッド生成を、スレッド生成手段(14)に依頼し、さらにリモートコール手段(15)を用いて、リモート計算機にサブシェルエージェントを生成し、そのサブシェルエージェントが実際のアプリケーションエージェントをリモート計算機で実行する。
【0039】
アプリケーションエージェントは、ファイルを、特定のアプリケーションを用いて実行するか、あるいは、汎用のアプリケーションエージェントが、計算機ごとに管理された拡張子アプリケーション対応テーブルを用いて、ファイルの名前に依存して、アプリケーションを決定して、実行する。
【0040】
なお、シェルエージェント、ローカルサービス、エージェント、アプリケーションエージェント、エージェント移動手段、スレッド生成手段、リモートコール生成手段、エージェント生成手段、シェルエージェントの構文解析手段、コマンド解析・実行手段等は、計算機上で該当プログラムを実行することによってその機能が実現される。これらのプログラムは、公知の静的又は動的な媒体、例えば記録媒体もしくは通信媒体等から所定のインタフェース手段を介して計算機にロードされ、インストトールして実行イメージを実行することで、本発明を実施することができる。
【0041】
【実施例】
上記した本発明の実施の形態についてさらに詳細に説明すべく、本発明の実施例について図面を参照して詳細に説明する。
【0042】
図1は、本発明の一実施例のシステム構成を示す図であり、ネットワークスクリプト言語を実行する、ネットワーク接続された複数の計算機よりなる分散処理システムの構成を示す図である。なお、図1には、3台の計算機よりなるシステムが例示されているが、図1をはじめ各図は、本発明を説明するためのものであり、本発明を限定するためのものではなく、例えば本発明において、計算機が3台の構成に限定されるものでないことは勿論である。
【0043】
図1を参照すると、計算機1A、1B、1Cは、それぞれエージェントプラットフォーム2A、2B、2Cを備え、エージェントプラットフォームは、それぞれエージェントベース9A、9B、9Cを備え、エージェントベース9A、9B、9Cに、それぞれ、エージェント3A、3B、3Cが構築される。
【0044】
計算機1A、1B、1Cは、ネットワーク4で相互に接続されており、ネットワーク4を用いて、エージェントプラットフォーム間、あるいは、エージェント間の通信、エージェントの移動等が行われる。
【0045】
図2は、本発明の一実施例における、ネットワークスクリプト言語を実行する計算機の構成の一例を示す図である。
【0046】
図2を参照すると、計算機1は、入力5を受け、出力6を行い、エージェントプラットフォーム2と、ローカルファイルシステム17と、アプリケーション18と、エージェントリポジトリ19とを備えている。
【0047】
エージェントプラットフォーム2は、計算機1への入力5を受ける入力手段7と、出力6を行う出力手段8とを備え、シェルエージェント10と、ローカルサービスエージェント11と、アプリケーションエージェント12等の各種実行中エージェントプログラムを格納する領域として、エージェントベース9を備える。
【0048】
さらに、エージェント移動手段13と、スレッド生成手段14と、リモートコール手段15と、エージェント生成手段16とを備え、これら各手段はエージェントの実行を補助する機能を具備する。
【0049】
エージェント移動手段13は、エージェントベース9中のエージェントが、他のエージェントプラットフォームに移動する機能を提供する。
【0050】
スレッド生成手段14は、エージェントベース9中のエージェントが、マルチスレッドで動作する時に、新しいスレッドを生成するための機能を提供する。
【0051】
リモートコール手段15は、エージェントベース9中のエージェントが、同じエージェントプラットフォーム中の別のエージェント、あるいは、他のエージェントプラットフォームのエージェントにメソッド呼び出しをする機能を提供する。
【0052】
エージェント生成手段16は、新しいエージェントをエージェントベース9の中に生成し、実行する時に呼び出される手段であり、エージェントリポジトリ19中に、エージェントプログラムを検索し、検索結果に基づいて、エージェントベース9の中に、エージェントを生成する。
【0053】
シェルエージェント10は、ネットワークスクリプト言語を解釈し、実行するエージェントであり、ローカルサービスエージェント11との通信、及び、アプリケーションエージェント12の生成と通信を行う。
【0054】
ローカルサービスエージェント11は、計算機1に固有の情報や機能を提供するエージェントであり、ローカルファイルシステム17を管理してシェルエージェント10に対して情報の提供を行う。
【0055】
アプリケーションエージェント12には2つの互いに異なる型が存在する。
【0056】
このうち第1の型のアプリケーションエージェントは、外部のアプリケーション18をラップする形で存在し、外部のアプリケーション18がエージェントベース9内のエージェントと通信や交渉する時の仲介を行う。
【0057】
第2の型のアプリケーションエージェントは、エージェントベース9内のエージェントとして、外部のアプリケーションプログラム18を持たずに、独立に存在して、特定アプリケーションを実行する。
【0058】
いずれの場合も、アプリケーションエージェント12は、シェルエージェント10からの要求で、ある特定のタスクを実行する。
【0059】
シェルエージェント10、ローカルサービスエージェント11、アプリケーションエージェント12、及びエージェントベース9、エージェント移動手段13と、スレッド生成手段14と、リモートコール手段15と、エージェント生成手段16は、計算機1上で実行されるプログラムによりその処理・機能が実現される。本発明の一実施例において、これらのプログラムを記録した記録媒体(CD−ROM、FD、DVD、磁気テープ、リムーバブルHDD等)から、該記録媒体の読み出し装置、読み出し装置のインタフェースを介して、あるいは、サーバ等から有線もしくは無線の通信伝送媒体を介して伝送されたプログラムを通信装置およびそのインタフェースを介して、計算機に読み出し、該プログラムの実行イメージを主記憶にロードしCPUで実行することで、本発明を実施することができる。
【0060】
図3は、本発明の一実施例における、シェルエージェント10の構成の一例を示す図である。図3を参照すると、シェルエージェント10は、その中心となる構成要素として、シェルインタプリタ20を備えており、シェルインタプリタ20は、入力手段7からスクリプト言語の入力を受け、入力されたスクリプト言語を構文解析する構文解析手段21と、コマンドの解析及び実行を行うコマンド解析・実行手段22と、を備えている。
【0061】
構文解析手段21は、スクリプト言語の構文解析にあたり、構文要素のキーワード文字列である「parallel」等のキーワードを管理登録しているキーワードテーブル27を参照する。
【0062】
構文解析手段21は、「parallel」で始まる構文を持つ入力を受理した場合には、スレッド生成手段14に対して、新しいスレッドの生成を依頼する。
【0063】
コマンド解析・実行手段22は、内部コマンドテーブル28を参照して、入力されたコマンドが、シェルエージェント10内部で処理可能であるか否かを判定する。
【0064】
判定の結果、内部コマンドの場合、内部コマンド定義29からコマンドの定義をロードして実行する。
【0065】
コマンド解析・実行手段22は、内部コマンド定義29からロードされた内部コマンドのうち、ディレクトリ移動のコマンドを実行するにあたり、シェルエージェント10自身の移動を必要とする場合、エージェント移動手段13を呼び出す。
【0066】
また、コマンド解析・実行手段22は、他のエージェントのメソッドを実行する場合には、リモートコール手段15を利用する。
【0067】
コマンド解析・実行手段22によるコマンド実行の結果は、出力手段8に渡されて、計算機1から出力される。
【0068】
一方、外部コマンドの実行は、外部コマンド実行手段30によって行われる。外部コマンド実行手段30は、エージェントリポジトリ19より、外部コマンドを実行するエージェントプログラムを検索する。その際、エージェントリポジトリ19内のどのパスを検索するか否かを決定するために、リポジトリパステーブル31を参照し、リポジトリパステーブル31に格納されたパスについて、順次エージェントリポジトリ19を検索する。
【0069】
外部コマンド実行手段30は、エージェントリポジトリ19を検索した結果、必要なエージェントが検索された場合、エージェント生成手段16に対して、エージェントの生成を依頼し、この依頼を受けたエージェント生成手段16が、アプリケーションエージェント12を生成する。
【0070】
また、外部コマンド実行手段30は、シェルエージェント10以外のエージェントにメソッドコールを行う場合、リモートコール手段15を呼び出す。
【0071】
シェルエージェント10は、シェルエージェント10の実行状態を管理する状態テーブル23と、シェルエージェント10の現在ディレクトリ24と、シェル変数を管理するシェル変数管理テーブル25と、外部のエージェントを指し示す変数を管理するエージェント参照テーブル26と、を備え、これらのテーブルはシェルインタプリタ20の実行を補助する。
【0072】
シェル変数管理テーブル25は、シェル変数によってスクリプト言語を記述し易くするための管理テーブルである。なお、シェル変数管理テーブル25を具備しない構成で、図3のシェルエージェント10を構成するようにしてもよい。
【0073】
図4は、本発明の一実施例の変形として、シェルエージェント10を構成する要素について、図3に示したものとは別の構成を示す図である。図3に示した構成では、外部コマンド実行手段30は、直接エージェント生成手段16を呼び出しているが、この機能を、ローカルサービスエージェント11に依頼するようにしてもよい。
【0074】
この場合、このローカルサービスエージェント11が、外部コマンド実行手段30から、外部コマンド名と、リポジトリパステーブル31に格納されたパス情報とを受け取り、エージェントリポジトリ19の検索と、実際のエージェント生成手段16の呼び出しを行うことで、アプリケーションエージェント12を生成する。
【0075】
シェルエージェント0のシェルインタプリタ21の構文解析手段21、コマンド解析・実行手段22、外部コマンド実行手段30は、計算機1上で実行されるプログラムによりその処理・機能が実現される。
【0076】
図5は、本発明の一実施例において、現在ディレクトリ24を含めたディレクトリ管理を行う情報の格納テーブルの構成の一例を示す図である。
【0077】
図5を参照すると、ディレクトリは、属性名32と値33との対で管理されており、属性として、シェルエージェント10が起動されたエージェントベース9を表すルートベース34と、このディレクトリが存在する現在ベース35と、ベース内のローカルなディレクトリを示すベース内ディレクトリ36と、からなる。
【0078】
例えば、ベースAで立ち上がったシェルが、ベースBの「/home」というディレクトリを指し示す場合には、ルートベースは、ベースAのベース、現在ベースは、ベースBのベース、ベース内ディレクトリには、「/home」が格納される。
【0079】
利用者によるディレクトリの指定方法は、絶対パスの指定の仕方として、
(1)「//ベース名A/ベース内ディレクトリA」、あるいは、
(2)「///ベース内ディレクトリB」
となる。
【0080】
(1)の場合、現在ベースは「ベース名A」、ベース内ディレクトリは、「ベース内ディレクトリA」である。(2)の場合、現在ベースは「ルートベース」、ベース内ディレクトリは、「ベース内ディレクトリB」となる。
【0081】
この他に、相対的なディレクトリを表現するものとして、現在ディレクトリから相対的に一つ上のディレクトリを指し示す「../」、現在ディレクトリの下の 「dirA 」というディレクトリの下の「dirB」というディレクトリを示す「dirA/dirB」などの表現方法を用いてもよい。
【0082】
図6は、本発明の一実施例における状態テーブル23の構成の一例を示す図である。図6を参照すると、状態は、属性名37と値38との対で管理されており、属性として、シェルエージェント10が並列実行中であるかどうかを示す並列実行カウンタ39と、シェルエージェント10が端末入力モードで実行されているのか、バッチモードで実行されているかを示す端末モードフラグ40と、からなる。
【0083】
図7は、本発明の一実施例におけるシェル変数管理テーブル25の構成の一例を示す図である。図7を参照すると、シェル変数管理テーブル25は、シェル変数名41と値42の対でシェル変数を管理しており、シェル変数の数だけ変数管理単位43を持つ。
【0084】
図8は、本発明の一実施例において、シェルエージェント10の中で、エージェントを指し示す変数であるエージェント変数の管理を行うエージェント参照テーブル26の構成の一例を示す図である。図8を参照すると、エージェント参照テーブル26は、エージェント変数名44と外部エージェント45の対でエージェント変数を管理しており、エージェント変数の数だけ変数管理単位46を持つ。
【0085】
図9は、本発明の一実施例において、シェルエージェント10のシェルインタプリタ20の動作を説明するための流れ図である。
【0086】
まず、シェルインタプリタ20は、入力手段7からコマンド入力を受け取る(ステップ52)。
【0087】
次に、このコマンドが終了コマンドかどうかを判断し(ステップ53)、終了コマンドであれば、終了処理を実行し(ステップ57)、シェルエージェント10を終了する。
【0088】
終了コマンドでなければ、キーワードテーブル27を用いて構文解析手段21で構文解析し、parallel文であるか否か判断する(ステップ54)。
【0089】
parallel文である場合には、シェルエージェント10は並列でコマンド実行を行うことになるので、ステップ58の並列実行処理へ進む。
【0090】
parallel文でない場合には、コマンド解析・実行手段22により、内部コマンドテーブル28を用いて内部コマンドとして処理できるか否かを判断する(ステップ55)。
【0091】
内部コマンドの場合には、ステップ59の内部コマンド処理に進み、内部コマンド定義29を用いて、内部コマンドの実行を行う。
【0092】
内部コマンドでない場合には、外部コマンド処理を行う(ステップ56)。
【0093】
並列実行処理(ステップ58)、内部コマンド処理(ステップ59)、外部コマンド処理(ステップ56)をそれぞれ終了した場合、ステップ52のコマンド入力処理に戻り、処理が継続される。
【0094】
図9の終了コマンドであるか否かの判断(ステップ53)と、構文解析してparallel文かどうかを判断する処理(ステップ54)の順序は、逆であっても良い。
【0095】
図10は、本発明の一実施例において、シェルエージェント10のシェルインタプリタ20のコマンド解析・実行手段22における内部コマンド処理(図9のステップ59)の処理手順を示す流れ図である。
【0096】
まず、内部コマンドがディレクトリ移動を表すコマンド「cd」(cdコマンド)であるかどうかを判断する(ステップ67)。
【0097】
「cd」でないコマンドは、内部コマンド定義29に格納された内部コマンド定義に従って実行する(ステップ73)。
【0098】
内部コマンドが「cd」である場合、図11に示すように、まず、移動先ディレクトリ47を、cdコマンドから抽出する。cdコマンドは、移動先ディレクトリが指定される。
【0099】
この実施例では、利用者は、ディレクトリを「//ベース名/ベース内のディレクトリ」の形で指定するため、これを、図5に示したディレクトリ構成要素に展開し、ベース名を現在ベース35に、ベース内のディレクトリをベース内ディレクトリ36にそれぞれ格納する。
【0100】
次に、状態テーブル23に設けられた並列実行カウンタ39の値が「0」であるか否かを検査する(ステップ68)。
【0101】
この並列実行カウンタには、現在シェルエージェントがマルチスレッドで動作しているかどうかを表す情報として、並列実行の深さ情報が格納されている。
【0102】
並列実行されていなければ、並列実行カウンタの値は、「0」であり、一重のparallel構文の中であれば「1」であり、parallel構文の中のparallel構文の中であれば「2」となる。
【0103】
並列実行カウンタの値が「0」以外の時は、シェルエージェントが並列実行していることを表しており、シェルエージェント全体が別の計算機に移動する価値が低いので、現在ディレクトリ24の値を、cdコマンドで示された移動先ディレクトリの値に更新する処理(ステップ72)だけを行い、シェルエージェント自身を計算機間で移動させない。
【0104】
並列実行カウンタの値が「0」である場合には、シェルエージェントは単一スレッドで実行しているので、次の端末モードの検査を行う(ステップ69)。
【0105】
状態テーブル23に設けられた端末モードフラグ40は、シェルエージェントが端末から入力を待つシェルとして実行されている時は「1」、バッチコマンドとして特定の端末に接続されないで実行されている時は「0」に、その値が設定される。
【0106】
端末モードフラグ40の値が「1」であるということは、端末入力を待っているシェルエージェントであることから、シェルエージェントが別の計算機に移動してしまうと入力応答速度が遅くなるため、cdコマンドによるシェルエージェントの計算機間移動は行わず、ステップ72に分岐して、現在ディレクトリの値の更新だけを行う。
【0107】
端末モードフラグ40の値が「0」の時は、バッチモードの実行のため、シェルエージェントは、作業ディレクトリのある計算機に移動して実行する方が有利である。そこで、現在ディレクトリ24と、移動先ディレクトリ47の値の比較を行う(ステップ70)。
【0108】
現在ディレクトリ24と移動先ディレクトリ47が同じ計算機上にある場合(現在ベース35の値が同じ場合)には、シェルエージェントの計算機間移動は不要のため、ステップ72へ分岐して、そのまま現在ディレクトリの値の更新だけを行う。
【0109】
現在ディレクトリ24と移動先ディレクトリ47が同じ計算機にない場合(現在ベース35の値が異なる場合)には、シェルエージェントを移動先ディレクトリの現在ベースが存在する計算機のエージェントベースに移動する(ステップ71)。
【0110】
このように、利用者の発行する「cd」という内部コマンドは、計算機内のディレクトリ移動についての処理を行うと同時に、シェルエージェント内部では、シェルエージェントを実行する計算機の選択にも利用される。
【0111】
かかる構成によって、リモート計算機上のアプリケーションの実行であっても、利用者には、ディレクトリの移動とエージェントの実行として見せることができることで、ネットワークに分散したサービスを実行するために複数のリモートアプリケーションを連携させる場合に、簡単なスクリプト言語で、記述することができる。
【0112】
図12及び図13は、本発明の一実施例において、シェルエージェントを移動する時の構成の変化を説明するための図である。
【0113】
まず、図12を参照すると、エージェントプラットフォームA 2A上にいるシェルエージェント10は、エージェント移動手段13Aに対して、自身の移動を依頼する。
【0114】
エージェント移動手段13Aは、エージェントプラットフォームB 2Bのエージェント移動手段13Bに、シェルエージェント10の状態を転送する。
【0115】
そして、図13を参照すると、エージェント移動手段13Bは、エージェントプラットフォームB 2B上にシェルエージェント10を再構築して実行を再開する。
【0116】
図14は、本発明の一実施例において、コマンド解析・実行手段22において内部コマンドを実行するにあたり、内部コマンドが、外部のアプリケーションエージェント12へのメソッド実行や、移動要求を出す場合を説明するための図である。
【0117】
まず、コマンド解析・実行手段22は、エージェント変数の指し示す外部のアプリケーションエージェントを同定するために、エージェント参照テーブル26を用いて、エージェント変数名から外部のアプリケーションエージェントへのポインタを獲得する。
【0118】
そして、コマンド解析・実行手段22は、リモートコール手段15に対して、外部アプリケーションエージェント12へのメソッド実行や移動を要求する。
【0119】
アプリケーションエージェント12は、リモートコールの受け入れ手段として、移動受入手段48と命令受入手段49とを有する。
【0120】
移動受入手段48は、移動要求の権限について確認をした後に、エージェント移動手段13に対して、アプリケーションエージェント12自身の移動を要求する。
【0121】
命令受入手段49は、命令実行の権限について確認した後に、命令実行手段50を実行する。
【0122】
図15及び図16は、本発明の一実施例において、シェルエージェント10からの同じ計算機中のアプリケーションエージェント12を、別の計算機へ移動する時の構成の変化を説明するための図である。
【0123】
まず、図15を参照すると、シェルエージェント10は、リモートコール手段15を用いて、アプリケーションエージェント12に移動の命令を伝える。
【0124】
アプリケーションエージェント12は、エージェント移動手段13Aに対して自身の移動を依頼し、このエージェント移動手段13Aは、エージェントプラットフォームB 2Bのエージェント移動手段13Bに、アプリケーションエージェントの状態を転送する。
【0125】
そして、図16を参照すると、エージェント移動手段13Bは、エージェントプラットフォームB 2B上にアプリケーションエージェント12を再構成し、実行を再開する。
【0126】
図15及び図16では、シェルエージェント10と同じ第1のエージェントプラットフォームのアプリケーションエージェント12を移動したが、アプリケーションエージェントは、シェルエージェントとは異なる第2のエージェントプラットフォーム中に存在して、これを第3のエージェントプラットフォーム、あるいはシェルエージェントの存在する第1のエージェントプラットフォームに移動することもできる。
【0127】
図17は、本発明の一実施例において、構文解析手段21において、parallel文が検出され、図9の並列実行処理(ステップ58)を実行する処理手順を示す流れ図である。
【0128】
まず、状態テーブル23の並列実行カウンタ39に1を加える(ステップ60)。これにより、シェルエージェントが現在並列実行中であることが記録される。
【0129】
次に、parallel文中のコマンド数分だけのスレッドを生成する(ステップ66)。スレッドの生成は、スレッド生成手段14によって行われる。
【0130】
続いて、変数「threads」(スレッド)に、生成したスレッド数を設定する(ステップ62)。
【0131】
そして、実際に、parallel文の中のコマンドを各スレッドで並列に実行する(ステップ63)。
【0132】
各スレッドは、各自の実行が終了すると、threads変数の値を「1」だけ減少させる(ステップ64)。この処理は、スレッド間で排他制御されていなければならない。
【0133】
そして、threads変数が「0」になったか否かを判断し(ステップ65)、0でない場合には、次のスレッドが終了するのを待つ。
【0134】
全てのスレッドが終了すると、threads変数の値は「0」になり、並列実行は終了する。
【0135】
そして、並列実行カウンタ39の値を1デクリメント(減算)する処理を行い(ステップ66)、並列実行処理全体の実行を終了する。
【0136】
図18は、本発明の一実施例において、parallel文の中で、特に、生成されたスレッドが別のエージェントプラットフォームに対してコマンドを実行する時の構成を示す図である。
【0137】
図18を参照すると、シェルエージェント10は、スレッド生成手段14に、新しいスレッド生成を依頼した後、parallel文の内部コマンド実行のために、リモートコール手段15A、15Bを用いて、サブシェルエージェント51を、エージェントプラットフォーム2Bのエージェントベース9B上に作成する。
【0138】
以後、このサブシェルエージェント51が、アプリケーションエージェント12や、ローカルサービスエージェントB 11Bに対して、メソッド実行や移動命令を実行することができる。
【0139】
図19は、本発明の一実施例において、parallel文の中で複数のエージェントプラットフォームに対して、並列にコマンド実行を行う場合を説明するための図である。
【0140】
図19を参照すると、シェルエージェント10からのリモートコールによって、サブシェルエージェント51B、サブシェルエージェント51Cが生成され、2つのエージェントプラットフォーム2B、2Cの上で並列にサブシェルエージェントが実行を行うことができる。
【0141】
図20は、本発明の一実施例において、図9の外部コマンド処理(ステップ56)を実行するための処理手順を示す流れ図である。
【0142】
図20を参照すると、外部のアプリケーションエージェントを起動する方法として、図3に示したように、直接、外部コマンド実行手段30がエージェント生成手段16を呼び出す方法を用いる。
【0143】
まず、現在ディレクトリ24に格納されている現在ベースが、実際に、シェルエージェントを実行している実行中ベースと一致しているかを判断する(ステップ74)。
【0144】
一致している場合には、実行中ベースに外部のアプリケーションエージェントを生成するため、まず、実行中ベースのエージェントリポジトリ19のエージェントリポジトリパス中に対象のアプリケーションエージェントのプログラムが存在するか否かを判断する(ステップ75)。
【0145】
アプリケーションエージェントのプログラムが存在すれば、エージェントリポジトリ19からアプリケーションエージェントのプログラムをロードしてアプリケーションエージェント12を実行する(ステップ76)ように、エージェント生成手段16に対して依頼する。
【0146】
エージェントリポジトリ19に見つからない場合には、実行に失敗する(ステップ80)。
【0147】
現在ディレクトリ24に格納されている現在ベースと、実際にシェルエージェントを実行している実行中ベースと一致しているかを判定するステップ74において、一致していない場合には、リモートコール手段15を用いて、現在ベース中にサブシェルエージェント51を作成する(ステップ77)。
【0148】
図21は、この場合の構成要素の関係を示す図である。
【0149】
サブシェルエージェント51中で現在ベースのエージェントリポジトリ19のエージェントリポジトリパス中に対象のアプリケーションエージェントのプログラムが存在するかを判断する(ステップ78)。
【0150】
アプリケーションエージェントのプログラムがあれば、エージェントリポジトリ19からアプリケーションエージェントのプログラムをロードしてアプリケーションエージェント12を実行する(ステップ79)ようにエージェント生成手段16に依頼する。
【0151】
エージェントリポジトリに見つからない場合は、実行に失敗する(ステップ80)。
【0152】
図22は、本発明の一実施例において、図9の外部コマンド処理(ステップ56)を実行するための処理手順を示す流れ図である。
【0153】
図22を参照すると、外部のアプリケーションエージェントを起動する方法として、図4に示したようにローカルサービスエージェント11にエージェント生成に関するタスクを委任してこのローカルサービスエージェント11がエージェント生成手段16を呼び出す方法を用いる。
【0154】
まず、現在ディレクトリ24に格納されている現在ベースが、実際にシェルエージェントを実行している実行中ベースと一致しているか否かを判断する(ステップ81)。
【0155】
一致している場合には、実行中ベースに外部のアプリケーションエージェントを生成するため、まず、実行中ベースのローカルサービスエージェント11に外部エージェントの実行依頼を行う(ステップ82)。
【0156】
次に、このローカルサービスエージェント11は、実行中ベースのエージェントリポジトリ19のエージェントリポジトリパス中に対象のアプリケーションエージェントのプログラムが存在するか否かを判断する(ステップ83)。
【0157】
アプリケーションエージェントのプログラムが存在すれば、エージェントリポジトリ19からアプリケーションエージェントのプログラムをロードしてアプリケーションエージェント12を実行するように(ステップ84)、エージェント生成手段16に対して依頼する。
【0158】
エージェントリポジトリに見つからない場合は、実行に失敗する(ステップ89)。
【0159】
現在ディレクトリ24に格納されている現在ベースと、実際にシェルエージェントを実行している実行中ベースと一致しているか否かを判断するステップ81で、一致していない場合には、リモートコール手段15を用いて、現在ベース中のローカルサービスエージェント11に外部エージェントの実行依頼を行う(ステップ86)。
【0160】
図23は、この場合の各構成要素の関係を示す図である。
【0161】
図23を参照すると、このローカルサービスエージェント11Bは、現在ベースのエージェントリポジトリ19のエージェントリポジトリパス中に対象のアプリケーションエージェントのプログラムが存在するか否かを判断する(図2のステップ87)。
【0162】
アプリケーションエージェントのプログラムが存在すれば、エージェントリポジトリ19からアプリケーションエージェントのプログラムをロードしてアプリケーションエージェント12を実行するように(図22のステップ88)、エージェント生成手段16に依頼する。
【0163】
エージェントリポジトリに見つからない場合は、実行に失敗する(図22のステップ89)。
【0164】
図24は、本発明の一実施例において、アプリケーションエージェント12と指定されたファイル96、アプリケーションエージェントが起動する外部アプリケーション18の関係を示す図である。
【0165】
アプリケーションエージェント12は、特定の外部アプリケーション18と密接に関連づけられてファイル96を解釈実行することができる。
【0166】
図25は、本発明の一実施例において、汎用アプリケーションエージェント97を利用して、計算機に依存したアプリケーション12を起動するための構成を示す図である。
【0167】
図25を参照すると、汎用アプリケーションエージェント97は、指定されたファイル96の拡張子を見て、拡張子アプリケーション対応テーブル98を参照することで、実行すべきアプリケーションを決定する。この拡張子アプリケーション対応テーブル98は、拡張子99とアプリケーション100とを対として格納したテーブルであり、拡張子単位の情報101が格納されている。
【0168】
汎用アプリケーションエージェント97は、ファイル96の拡張子と一致した拡張子99を持つ項目を、拡張子アプリケーション対応テーブル98から検索し、該項目のアプリケーション欄100のアプリケーションを起動する。
【0169】
拡張子アプリケーション対応テーブル98は、各計算機ごとに具備することができる。このため、例えば、同じ拡張子を持つ画像ファイルであっても、別の計算機では別のアプリケーションを用いて表示させることができる。
【0170】
次に、上記した実施例をさらに具体的に説明するため、本発明を適用した具体例についていくつか説明する。
【0171】
図26は、本発明を適用したシステム構成の一例を示す図であり、2つの計算機上で、2つのプレゼンテーションツールを順次制御するシステムの構成を示す図である。
【0172】
まず、計算機A 1Aのエージェントプラットフォーム2Aのエージェントベース9Aにシェルエージェント10Aがあり、そこに実行スクリプトファイル92を入力する。
【0173】
この場合、実行は、バッチモードで行われるため、状態テーブル23の端末モードフラグ40は0になる。並列実行を示すparallel文も用いられていないので、スクリプト中のcdコマンドによって、シェルエージェントは、計算機中を移動することになる。
【0174】
スクリプトファイル92の1行目の「cd」によって、シェルエージェント10Aは、計算機B 1Bのエージェントプラットフォーム2Bのエージェントベース9Bのローカルディレクトリ「/home」に移動する。
【0175】
そこで、スクリプトファイル92の2行目の「ppt」コマンドが実行されるが、ここで、pptコマンドは、外部のプレゼンテーションツール90を起動するアプリケーションエージェントB 12Bの名前であるとする。
【0176】
従って、シェルエージェント10Bは、アプリケーションエージェントB 12Bを起動し、これがプレゼンテーションツールB 90を起動してプレゼンテーションを開始する。
【0177】
続いて、スクリプトファイル3行目のcdコマンドで、シェルエージェント10Bは、計算機C 1Cのエージェントプラットフォーム2Cのエージェントベース9Cのローカルディレクトリ「/home」に移動する。
【0178】
そして、4行目で、アプリケーションエージェントC 12Cを起動し、プレゼンテーションツールC91の実行を開始する。
【0179】
再びスクリプトファイル92の5行目の「cd」で、シェルエージェントは、計算機Bに移動し、プレゼンテーションツールBに、「次頁」を表示するためのコマンド「next」を送信する。
【0180】
7行目と8行目では、さらに、計算機Cに移動して、プレゼンテーションツールCも次頁を表示する。
【0181】
このように、複数計算機のプレゼンテーションツールを、順次ページめくりする動作をひとつのシェルスクリプト中に記述できる。
【0182】
図27は、本発明を適用したシステムの別の例を示す図であり、2つの計算機上で、2つのプレゼンテーションツールを並列制御するシステムの構成を示す図である。
【0183】
図27に示したシステムが、図26に示したシステムと相違する点は、スクリプトファイル93中に、parallelの構文が利用されていることである。
【0184】
parallel文の中では、サブシェルエージェントが計算機B、計算機Cに作成され、それぞれで並列にアプリケーションエージェントB 12BとプレゼンテーションツールB 90、あるいはアプリケーションエージェントC 12Cとプレゼンテーションツール91を制御する。
【0185】
図26に示したシステムとは相違して、アプリケーションの操作が並列に行われ、またparallel文の文末の「end」の行では、「parallel」とされたサブエージェントの同期が行われる。
【0186】
図28は、本発明を適用したシステムのさらに別の例を示す図であり、2つの計算機上で、プレゼンテーションツール90と、WWW(World Wide Web)ブラウザ95を並列制御するシステムの構成を示す図である。図27との違いは、制御対象が、異なるアプリケーションとされていることである。
【0187】
この例を用いれば、プレゼンテーションツールと、関連したWWWページの情報を並列に、同期機能を持って複数の計算機に表示するシステムを容易に構成することができる。
【0188】
【発明の効果】
以上説明したように、本発明によれば下記記載の効果を奏する。
【0189】
本発明の第1の効果は、一つのスクリプトプログラムを用いて、複数の計算機に分散されたアプリケーションの実行を制御することができる、ということである。この結果、複数のアプリケーションを連携させることによる上位の分散アプリケーションを容易に構築できる。
【0190】
その理由は、本発明においては、スクリプト言語の解釈を、移動可能で、かつリモート計算機と通信を行えるシェルエージェントで構築し、アプリケーションの実行を制御するアプリケーションエージェントを、どの計算機上にも自在に生成して実行可能としたためである。
【0191】
本発明の第2の効果は、逐次的なスクリプトの実行だけでなく、並列的な実行が可能であり、さらに、複数の計算機に分散したアプリケーションの並列実行や、同期的な実行を、スクリプト言語を用いて記述することを容易化している、ということである。
【0192】
その理由は、本発明においては、スクリプト言語の構文要素にparallelというブロックを設け、このブロックの中のコマンドを並列に実行するために、複数のスレッド生成と、生成されたスレッドをリモート計算機中のサブシェルエージェントの中で実行させる機能を具備している、ためである。
【0193】
本発明の第3の効果は、計算機間の移動も、計算機内のディレクトリ移動も一つのディレクトリ移動コマンドで行うことができ、特別なエージェント移動というコマンドを用いることなしに、シェルエージェント移動を可能としている、ということである。
【0194】
その理由は、本発明においては、シェルエージェントの中で、現在のディレクトリや、実際にいる計算機、シェルエージェントの状態などを管理し、必要な場合を判断して、シェルエージェントの計算機間の移動を行う機能を装備したためである。
【0195】
本発明の第4の効果は、計算機ごとに用意されたアプリケーションが異なる場合であっても、ファイルの内容に応じて、アプリケーションを実行することができる、ということである。
【0196】
その理由は、本発明においては、アプリケーションエージェントが計算機に応じたアプリケーションを特定して実行できる機能を具備し、汎用のアプリケーションエージェントを作成して、実行するファイルの拡張子に合わせて計算機に依存したアプリケーションを選択的に実行可能としたためである。
【図面の簡単な説明】
【図1】本発明の一実施例のシステム構成を示す図である。
【図2】本発明の一実施例においてエージェントプラットフォームの構成を示す図である。
【図3】本発明の一実施例におけるシェルエージェントの構成の一例を示す図である。
【図4】本発明の一実施例におけるシェルエージェントの構成の別の例を示す図である。
【図5】本発明の一実施例におけるディレクトリ管理テーブルの構成の一例を示す図である。
【図6】本発明の一実施例における状態テーブルの構成の一例を示す図である。
【図7】本発明の一実施例におけるシェル変数管理テーブルの構成の一例を示す図である。
【図8】本発明の一実施例におけるエージェント参照テーブルの構成の一例を示す図である。
【図9】本発明の一実施例においてスクリプト言語を解釈する処理手順を示す流れ図である。
【図10】本発明の一実施例において内部コマンドを解釈する処理手順を示す流れ図である。
【図11】本発明の一実施例におけるディレクトリ移動を説明するための図である。
【図12】本発明の一実施例におけるディレクトリ移動の一例を説明するための図(その1)である。
【図13】本発明の一実施例におけるディレクトリ移動の一例を説明するための図(その2)である。
【図14】本発明の一実施例におけるリモート命令実行を説明するための図である。
【図15】本発明の一実施例におけるリモート命令実行の一例を説明するための図(その1)である。
【図16】本発明の一実施例におけるリモート命令実行の一例を説明するための図(その2)である。
【図17】本発明の一実施例における並列実行を解釈する処理手順を示す流れ図である。
【図18】本発明の一実施例における並列実行の一例を説明するための図(その1)である。
【図19】本発明の一実施例における並列実行の一例を説明するための図(その2)である。
【図20】本発明の一実施例においてアプリケーションエージェントの実行を解釈する処理手順を示す流れ図である。
【図21】本発明の一実施例においてアプリケーションエージェントの実行の一例を説明するための図(その1)である。
【図22】本発明の一実施例においてアプリケーションエージェントの実行を解釈する処理手順を示す流れ図である。
【図23】本発明の一実施例においてアプリケーションエージェントの実行の一例を説明するための図(その2)である。
【図24】本発明の一実施例におけるアプリケーションエージェントとアプリケーションの関係の一例を示す図である。
【図25】本発明の一実施例における汎用アプリケーションエージェントとアプリケーションの関係の一例を示す図である。
【図26】本発明を適用したシステムの第1の実施例を説明する図である。
【図27】本発明を適用したシステムの第2の実施例を説明する図である。
【図28】本発明を適用したシステムの第3の実施例を説明する図である。
【符号の説明】
1 計算機
2 エージェントプラットフォーム
3 エージェント
4 ネットワーク
5 入力
6 出力
7 入力手段
8 出力手段
9 エージェントベース
10 シェルエージェント
11 ローカルサービスエージェント
12 アプリケーションエージェント
13 エージェント移動手段
14 スレッド生成手段
15 リモートコール手段
16 エージェント生成手段
17 ローカルファイルシステム
18 アプリケーション
19 エージェントリポジトリ
20 シェルインタプリタ
21 構文解析手段
22 コマンド解析・実行手段
23 状態テーブル
24 現在ディレクトリ
25 シェル変数管理テーブル
26 エージェント参照テーブル
27 キーワードテーブル
28 内部コマンドテーブル
29 内部コマンド定義
30 外部コマンド実行手段
31 リポジトリパステーブル
32 属性名欄
33 値欄
34 ルートベース
35 現在ベース
36 ベース内ディレクトリ
37 属性名欄
38 値欄
39 並列実行カウンタ
40 端末モードフラグ
41 シェル変数名欄
42 値欄
43 シェル変数管理単位
44 エージェント変数名
45 外部エージェント
46 エージェント変数管理単位
47 移動先ディレクトリ
48 移動受入手段
49 命令受入手段
50 命令実行手段
51 サブシェルエージェント
52 コマンド入力
53 終了判断
54 parallel 文判断
55 内部コマンド判断
56 外部コマンド処理
57 終了処理
58 並列実行処理
59 内部コマンド処理
60 並列カウンタのカウントアップ
61 スレッド生成
62 スレッド数の設定
63 並列実行
64 スレッド終了処理
65 全スレッドの終了判断
66 並列カウンタのカウントダウン
67 cd であるか判断
68 並列実行中かを判断
69 端末モードか判断
70 現在ディレクトリと移動先ディレクトリの比較
71 シェルエージェント移動
72 現在ディレクトリの更新
73 cd 以外の内部コマンドの実行
74 ベースの一致判断
75 エージェントプログラムの検索
76 エージェント実行
77 サブシェルエージェント作成
78 エージェントプログラムの検索
79 エージェント実行
80 サブシェルエージェント作成
81 ベースの一致判断
82 ローカルエージェントへのコマンド依頼
83 エージェントプログラムの検索
84 エージェント実行
86 ローカルエージェントへのコマンド依頼
87 エージェントプログラムの検索
88 エージェント実行
89 サブシェルエージェント作成
90 プレゼンテーションツール
91 プレゼンテーションツール
92 スクリプトプログラム
93 スクリプトプログラム
94 スクリプトプログラム
95 WWWブラウザ
96 ファイル
97 汎用アプリケーションエージェント
98 拡張子アプリケーション対応テーブル
99 拡張子欄
100 アプリケーション欄
101 対応テーブルの要素

Claims (27)

  1. 複数の計算機がネットワークを介して相互に接続されてなるシステムにおいて、
    前記各計算機が具備するエージェントプラットフォームが、
    分散アプリケーションを制御するためのスクリプト言語の入力を受け、前記スクリプト言語を解釈して実行するシェルエージェントと、
    前記計算機にローカルなファイルシステムの情報を提供するローカルサービスエージェントと、
    アプリケーションを制御するアプリケーションエージェントと、
    を有し、前記シェルエージェント、ローカルサービスエージェント、及び、前記アプリケーションエージェントにそれぞれ実行の場を提供するエージェントベースと、
    エージェントを他の計算機上のエージェントベースに移動する機能を提供するエージェント移動手段と、
    エージェントが自計算機又は他の計算機の他のエージェントと通信を行うための機能を提供するリモートコール手段と、
    アプリケーションエージェントを生成するエージェント生成手段と、
    を備え、
    前記スクリプト言語の入力に対して、前記各計算機に分散したアプリケーションの実行を制御し、
    前記シェルエージェントが、スクリプト言語を実行する上での現在のディレクトリを管理する現在ディレクトリと、
    前記スクリプト言語を構文解析する構文解析手段と、コマンドを解析して実行するコマンド解析・実行手段とを備えたシェルインタプリタと、
    を含み、
    前記現在ディレクトリが、リモート計算機上のエージェントベースを指し示す時に、前記シェルエージェント自身を、前記エージェント移動手段によって、前記リモート計算機に移動して、アプリケーションエージェントを実行する、
    ことを特徴とする分散アプリケーション制御システム。
  2. 前記シェルエージェントが、エージェントのリポジトリパステーブルをさらに備え、
    アプリケーションエージェントを、リポジトリパス上から検索して実行する、
    ことを特徴とする請求項記載の分散アプリケーション制御システム。
  3. 前記シェルエージェントが、エージェントの状態を管理する状態テーブルをさらに備え、
    前記状態テーブルが、エージェントの並列実行カウントと、端末実行フラグと、を備え、
    前記現在ディレクトリに格納されている現在ベースが、リモート計算機である時に、エージェントの状態が並列実行状態ではなく、且つ、端末実行モードでもない場合に、シェルエージェントを、前記リモート計算機に移動させる、
    ことを特徴とする請求項又は記載の分散アプリケーション制御システム。
  4. 前記シェルエージェントによるアプリケーションエージェント生成のために、前記各計算機にローカルな資源へのアクセスを補助するローカルサービスエージェントを呼び出す手段を備え、
    アプリケーションエージェントを生成する時に、前記シェルエージェントが直接、前記エージェント生成手段を呼び出すのではなく、前記ローカルサービスエージェントを介してアプリケーションエージェントを生成する、
    ことを特徴とする請求項乃至のいずれか一に記載の分散アプリケーション制御システム。
  5. 前記シェルエージェントが、エージェント参照テーブルをさらに備え、
    前記エージェント参照テーブル中に格納された外部に起動中のアプリケーションエージェントに対して、移動や命令実行の依頼を行う、
    ことを特徴とする請求項乃至のいずれか一に記載の分散アプリケーション制御システム。
  6. 前記アプリケーションエージェントが、前記計算機に依存したアプリケーションの起動手段を備え、
    前記シェルエージェントの指示で、前記アプリケーションを生成して管理する、ことを特徴とする請求項1、2、のいずれか一に記載の分散アプリケーション制御システム。
  7. 前記アプリケーションエージェントが、前記計算機に備えられた拡張子アプリケーション対応テーブルを参照して、ファイルの拡張子の種類によって起動するアプリケーションを選択する手段を備え、
    前記シェルエージェントの指示で、前記選択されたアプリケーションを生成して管理する、ことを特徴とする請求項1、2、4、5、6のいずれか一に記載の分散アプリケーション制御システム。
  8. 前記エージェントプラットフォームが、スレッド生成手段をさらに備え、
    入力されたスクリプト言語に、並列実行が指定されている場合、前記スクリプト言語を実行するのに必要な分のスレッドを生成して、アプリケーションの並列実行を制御する、ことを特徴とする請求項1記載の分散アプリケーション制御システム。
  9. 前記エージェントプラットフォームが、生成されたスレッドによるリモート計算機中のアプリケーションエージェントを生成する時に、前記リモート計算機中のエージェントベース中にサブシェルエージェントを有し、
    前記サブシェルエージェントが、アプリケーションエージェント生成を代行する、ことを特徴とする請求項記載の分散アプリケーション制御システム。
  10. 複数の計算機がネットワークを介して相互に接続されるシステムにおける分散アプリケーション制御方法であって、
    前記各計算機が、それぞれのエージェントプラットフォームにおいて、シェルエージェントが、分散アプリケーションを制御するために入力されたスクリプト言語を解釈して実行し、
    ローカルサービスエージェントが、計算機にローカルなファイルシステムに関する情報を提供し、
    アプリケーションエージェントがアプリケーションを制御し、
    前記シェルエージェントと、前記ローカルサービスエージェントと、前記アプリケーションエージェントとに対して、エージェントベースがそれぞれの実行の場を提供し、
    エージェントが他の計算機の他のエージェントベースに、エージェント移動機能を介して移動自在とされ、
    エージェントが自計算機又は他の計算機中の他のエージェントとリモートコール機能を介して通信を行い、
    前記シェルエージェントは、入力されたスクリプト言語を解釈して、エージェント生成機能を介してアプリケーションエージェントの生成を制御し、
    スクリプト言語の入力に対して、前記各計算機に分散したアプリケーションの実行を制御し、
    前記シェルエージェントが、スクリプト言語を実行する上での現在のディレクトリを管理するとともに、入力されたスクリプト言語の構文解析と、コマンドの解析と実行を行い
    現在のディレクトリがリモート計算機上のエージェントベースを指し示す時にシェルエージェント自身を、前記リモート計算機に移動してアプリケーションエージェントを実行する、ことを特徴とする分散アプリケーションの制御方法。
  11. 前記シェルエージェントが、さらに、エージェントのリポジトリパステーブルを参照して、アプリケーションエージェントを、リポジトリパス上から検索して実行する、ことを特徴とする請求項10記載の分散アプリケーションの制御方法。
  12. 前記シェルエージェントが、エージェントの状態を管理する状態テーブルのエージェントの並列実行カウントと端末実行フラグの情報を用い、現在ディレクトリに格納されている現在ベースが、リモート計算機である時に、エージェントの状態が並列実行状態でなく、端末実行モードでもないときに、シェルエージェントをリモート計算機に移動させる、ことを特徴とする請求項10又は11に記載の分散アプリケーションの制御方法。
  13. 前記シェルエージェントが、アプリケーションエージェントの生成にあたり、前記シェルエージェントが直接に前記エージェント生成機能を呼び出すのではなく、各計算機上のローカルな資源に対してアクセスを補助するローカルサービスエージェントを介して、前記アプリケーションエージェントを生成する、ことを特徴とする請求項10記載の分散アプリケーションの制御方法。
  14. 前記シェルエージェントが、エージェント参照テーブルを有し、前記エージェント参照テーブル中に格納されている、外部に起動中のアプリケーションエージェントに対して、移動や命令実行の依頼を行う、ことを特徴とする請求項10乃至13のいずれか一に記載の分散アプリケーションの制御方法。
  15. 前記アプリケーションエージェントが、計算機に依存したアプリケーションの起動を行う機能を備え、前記シェルエージェントの指示で前記アプリケーションを生成して管理する、ことを特徴とする請求項1011、14のいずれか一に記載の分散アプリケーションの制御方法。
  16. 前記アプリケーションエージェントが、前記各計算機に備えられた拡張子アプリケーション対応テーブルを用いて、ファイルの拡張子の種類によって起動するアプリケーションを選択し、前記シェルエージェントの指示で前記で選択されたアプリケーションを生成して管理する、ことを特徴とする請求項10、11、13、14、15のいずれか一に記載の分散アプリケーションの制御方法。
  17. 前記エージェントプラットフォームが、スレッド生成機能を有し、入力されたスクリプト言語に並列実行の記述がある時に、並列実行に必要な分のスレッドを生成して、アプリケーションの並列実行を制御する、ことを特徴とする請求項10記載の分散アプリケーションの制御方法。
  18. 前記エージェントプラットフォームが、生成されたスレッドによるリモート計算機中のアプリケーションエージェントを生成する時に、リモート計算機中のエージェントベース中にサブシェルエージェントを生成し、前記サブシェルエージェントがアプリケーションエージェント生成を代行する、ことを特徴とする請求項10記載の分散アプリケーションの制御方法。
  19. 複数の計算機がネットワークを介して相互に接続され、
    前記各計算機のエージェントプラットフォームが、分散アプリケーションを制御するためのスクリプト言語の入力を受けて、それを解釈し、実行するシェルエージェントと、
    前記計算機にローカルなファイルシステム等の情報を提供するローカルサービスエージェントと、
    アプリケーションを制御するためのアプリケーションエージェントと、
    前記シェルエージェントと前記ローカルサービスエージェントと前記アプリケーションエージェントに実行の場を提供するエージェントベースと、
    エージェントが他の計算機の他のエージェントベースに移動する機能を提供するエージェント移動手段と、
    エージェントが、自計算機又は他の計算機の他のエージェントと通信を行うための機能を提供するリモートコール手段と、
    アプリケーションエージェントを生成するための機能を提供するエージェント生成手段と、を備え、スクリプト言語の入力に対して前記各計算機に分散したアプリケーションの実行を制御し、
    前記シェルエージェントが、スクリプト言語を実行する上での現在のディレクトリを管理する現在ディレクトリと、
    前記スクリプト言語を構文解析する構文解析手段と、コマンドを解析して実行するコマンド解析・実行手段とを備えたシェルインタプリタと、
    を含み、
    前記現在ディレクトリが、リモート計算機上のエージェントベースを指し示す時に、前記シェルエージェント自身を、前記エージェント移動手段によって、前記リモート計算機に移動して、アプリケーションエージェントを実行する分散アプリケーション制御システムにおいて、
    前記シェルエージェント、前記ローカルサービスエージェント、前記アプリケーションエージェント、前記エージェントベース、前記エージェント移動手段、前記リモートコール手段、及び前記エージェント生成手段を、前記計算機で実行させるためのプログラムを記録した記録媒体。
  20. 複数の計算機がネットワークを介して相互に接続され、
    前記各計算機のエージェントプラットフォームが、分散アプリケーションを制御するためのスクリプト言語の入力を受けて、それを解釈し、実行するシェルエージェントと、
    前記計算機にローカルなファイルシステム等の情報を提供するローカルサービスエージェントと、
    アプリケーションを制御するためのアプリケーションエージェントと、
    前記シェルエージェントと前記ローカルサービスエージェントと前記アプリケーションエージェントに実行の場を提供するエージェントベースと、
    エージェントが他の計算機の他のエージェントベースに移動する機能を提供するエージェント移動手段と、
    エージェントが、自計算機又は他の計算機の他のエージェントと通信を行うための機能を提供するリモートコール手段と、
    アプリケーションエージェントを生成するための機能を提供するエージェント生成手段と、を備え、スクリプト言語の入力に対して、前記計算機に分散したアプリケーションの実行を制御し、
    前記シェルエージェントが、スクリプト言語を実行する上での現在のディレクトリを管理する現在ディレクトリと、
    前記スクリプト言語を構文解析する構文解析手段と、コマンドを解析して実行するコマンド解析・実行手段とを備えたシェルインタプリタと、
    を含み、
    前記現在ディレクトリが、リモート計算機上のエージェントベースを指し示す時に、前記シェルエージェント自身を、前記エージェント移動手段によって、前記リモート計算機に移動して、アプリケーションエージェントを実行する分散アプリケーション制御システムにおいて、
    前記シェルエージェント、前記ローカルサービスエージェント、前記アプリケーションエージェント、前記エージェントベース、前記エージェント移動手段、前記リモートコール手段、及び、前記エージェント生成手段を、前記計算機で実行させるためのプログラムを担持する媒体。
  21. 1又は複数の他の計算機とネットワークを介して接続される計算機が、
    エージェントプラットフォームと、前記計算機にローカルなファイルシステムと、アプリケーションと、エージェントリポジトリとを備え、
    前記エージェントプラットフォームは、
    前記計算機への入力を受け取る入力部と、
    前記計算機からの出力を行う出力部と、
    入力されたスクリプト言語を解釈して実行し、アプリケーションエージェントの生成と通信を行うシェルエージェントと、
    前記計算機に固有の情報や機能を提供するエージェントであり前記ローカルファイルシステムを管理してシェルエージェントに対して情報の提供を行うローカルサービスエージェントと、
    前記シェルエージェントからの要求で所定のタスクを実行するアプリケーションエージェントと、
    前記各エージェントに対して実行中のエージェントプログラムを格納する領域を提供するエージェントベースと、
    前記エージェントベース中のエージェントが、他のエージェントプラットフォームに移動する機能を提供するエージェント移動部と、
    エージェントベース中のエージェントが、マルチスレッドで動作する時に、新しいスレッドを生成するための機能を提供するスレッド生成部と、
    前記エージェントベース中のエージェントが、同じエージェントプラットフォーム中の別のエージェント、あるいは、他のエージェントプラットフォームのエージェントに対して、メソッド呼び出しを行う機能を提供するリモートコール部と、
    新しくエージェントを前記エージェントベースの中に生成して実行する時に呼び出され、前記エージェントリポジトリを参照して、エージェントプログラムを検索し、検索結果に基づいて、前記エージェントベースの中に新しくエージェントを生成するエージェント生成部と、
    を備え、
    前記入力部を通して入力されたスクリプト言語を、前記シェルエージェントが解釈して、前記アプリケーションエージェントを起動し、前記アプリケーションエージェントが実際のアプリケーションを管理し、
    前記シェルエージェント、及び、前記アプリケーションエージェントは、前記エージェント移動部を用いて、前記ネットワークを介して、他の計算機に移動自在とされるとともに、前記リモートコール部を介して、前記ネットワークを介して他の計算機中のエージェントと、通信可能とされており、
    前記シェルエージェントが、
    前記入力部からスクリプト言語の入力を受け、入力されたスクリプト言語を解釈する構文解析部と、コマンドを実行するコマンド解析・実行部と、を具備するシェルインタプリタと、
    前記シェルエージェントの実行状態を管理するための状態テーブルと、
    前記シェルエージェントの現在ディレクトリを記憶する現在ディレクトリ記憶部と、
    を備え、
    前記構文解析部は、キーワードを登録したキーワードテーブルを参照し、並列実行文のキーワードで始まる構文を持つ入力を受理した場合には、前記スレッド生成部に対して新しいスレッドの生成を依頼して、並列実行を行い、
    前記コマンド解析・実行部は、入力されたコマンドが、前記シェルエージェント内部で処理可能な内部コマンドであるか否かを判定し、判定の結果、内部コマンドの場合、内部コマンド定義を記憶した内部コマンド定義記憶部からコマンドの定義をロードして実行し、その際、前記内部コマンド定義記憶部からロードされた内部コマンドのうち、ディレクトリ移動のコマンドを実行するにあたり、前記シェルエージェント自身の移動を必要とする場合、前記エージェント移動部を呼び出し、
    他のエージェントのメソッドを実行する場合には、前記リモートコール部を利用し、
    前記コマンド解析・実行部によるコマンド実行の結果は、前記出力部に渡されて、前記計算機から出力され、
    一方、外部コマンドの実行の場合、前記シェルエージェントに設けられた外部コマンド実行部にて、エージェントリポジトリより、外部コマンドを実行するエージェントプログラムを検索し、その際、前記エージェントリポジトリ内のどのパスを検索するか否かを決定するために、リポジトリパステーブルを参照し、前記リポジトリパステーブルに格納されたパスについて、順次、前記エージェントリポジトリを検索し、
    前記外部コマンド実行部は、前記エージェントリポジトリを検索した結果、必要なエージェントが検索された場合、前記エージェント生成部に対して、エージェントの生成を依頼し、この依頼を受けた前記エージェント生成部が、アプリケーションエージェントを生成し、
    さらに、前記外部コマンド実行部は、前記シェルエージェント以外のエージェントにメソッドコールを行う場合、前記リモートコール部を呼び出す、ことを特徴とする計算機。
  22. 前記ローカルサービスエージェントが、前記外部コマンド実行部から、外部コマンド名と、前記リポジトリパステーブルに格納されたパス情報とを受け取り、前記エージェントリポジトリの検索と、実際のエージェント生成部の呼び出しを行うことで、前記アプリケーションエージェントを生成する、ことを特徴とする請求項21記載の計算機。
  23. 前記内部コマンドがディレクトリ移動を表すコマンドである場合、移動先ディレクトリを前記内部コマンドから抽出してディレクトリ構成要素に展開し、ベース名をディレクトリ格納テーブルの現在ベースに、ベース内のディレクトリを、ベース内ディレクトリにそれぞれ格納し、
    前記状態テーブルに設けられている、並列実行の深さ情報を格納する並列実行カウンタの値が0であるか否かを検査し、前記並列実行カウンタが0以外の時は、シェルエージェントが並列実行していることを表しており、前記現在ディレクトリ記憶部の値を、前記ディレクトリ移動を表すコマンドで指定された移動先ディレクトリの値に更新し、シェルエージェントは計算機間で移動させず、
    前記並列実行カウンタが0である場合には、シェルエージェントは単一スレッドで実行していることから、前記状態テーブルに設けられ、シェルエージェントが端末から入力を待つシェルとして実行されている時は第1の値、バッチコマンドとして特定の端末に接続されないで実行されている時は第2の値に設定される端末モードフラグを参照し、前記端末モードフラグが第1の値のとき、前記ディレクトリ移動を表すコマンドによるシェルエージェントの計算機間移動は行わず、前記現在ディレクトリ記憶部の値の更新だけを行い、
    前記端末モードフラグが第2の値の時は、バッチモードの実行であるため、前記現在ディレクトリ記憶部の値と、移動先ディレクトリとを比較し、前記現在ディレクトリ記憶部と移動先ディレクトリとが同一の計算機上にある場合には、前記現在ディレクトリ記憶部の値の更新だけを行い、前記現在ディレクトリ記憶部と移動先ディレクトリとが互いに同一の計算機にない場合には、前記シェルエージェントを、前記移動先ディレクトリの現在ベースが存在する計算機のエージェントベースに移動するように、制御する、ことを特徴とする請求項21記載の計算機。
  24. 前記シェルインタプリタの構文解析部において、並列実行文が検出され、並列実行処理を実行するにあたり、
    前記状態テーブルの並列実行カウンタに1を加えてシェルエージェントが現在並列実行中であることを記録し、
    前記並列実行文中のコマンド数分だけのスレッドを前記スレッド生成部によって生成し、
    スレッド変数に生成したスレッド数を記録設定し、
    前記並列実行文の中のコマンドを各スレッドで並列に実行し、各スレッドの実行が終了すると、記録されたスレッド変数の値を1だけ減少させ、全てのスレッドが終了した時点で前記スレッド数が0となることで並列実行を終了し、
    前記並列実行カウンタの値を1デクリメントして、並列実行処理全体の実行を終了する、ことを特徴とする請求項21記載の計算機。
  25. 前記外部コマンド実行部が、前記現在ディレクトリ記憶部に格納されている現在ベースが、実際に、シェルエージェントを実行している実行中ベースと一致しているかを判断し、一致している場合には、実行中ベースに外部のアプリケーションエージェントを生成するため、まず、実行中ベースのエージェントリポジトリのエージェントリポジトリパス中に対象のアプリケーションエージェントのプログラムが存在するか否かを判断し、アプリケーションエージェントのプログラムが存在すれば、エージェントリポジトリからアプリケーションエージェントのプログラムをロードしてアプリケーションエージェントを実行するように、前記エージェント生成部に対して依頼し、
    前記現在ディレクトリ記憶部に格納されている現在ベースとシェルエージェントを実行している実行中ベースとが一致していない場合には、前記リモートコール部を用いて、現在ベース中にサブシェルエージェントを作成し、
    前記サブシェルエージェント中で現在ベースのエージェントリポジトリのエージェントリポジトリパス中に対象のアプリケーションエージェントのプログラムが存在するかを判断し、前記アプリケーションエージェントのプログラムがあれば、前記エージェントリポジトリからアプリケーションエージェントのプログラムをロードしてアプリケーションエージェントを実行するようにエージェント生成部に依頼する、ことを特徴とする請求項21記載の計算機。
  26. 前記現在ディレクトリ記憶部に格納されている現在ベースが、実際にシェルエージェントを実行している実行中ベースと一致しているか否かを判断し、一致している場合には、実行中ベースに外部のアプリケーションエージェントを生成するため、まず、実行中ベースの前記ローカルサービスエージェントに外部エージェントの実行依頼を行い、
    前記ローカルサービスエージェントは、実行中ベースのエージェントリポジトリのエージェントリポジトリパス中に対象のアプリケーションエージェントのプログラムが存在するか否かを判断し、前記アプリケーションエージェントのプログラムが存在すれば、エージェントリポジトリからアプリケーションエージェントのプログラムをロードしてアプリケーションエージェントを実行するように、前記エージェント生成部に対して依頼し、
    前記現在ディレクトリ記憶部に格納されている現在ベースと、実際にシェルエージェントを実行している実行中ベースとが一致していない場合には、前記リモートコール部を用いて現在ベース中の前記ローカルサービスエージェントに外部エージェントの実行依頼を行い、
    前記ローカルサービスエージェントは、現在ベースのエージェントリポジトリのエージェントリポジトリパス中に対象のアプリケーションエージェントのプログラムが存在するか否かを判断し、アプリケーションエージェントのプログラムが存在すれば、エージェントリポジトリからアプリケーションエージェントのプログラムをロードしてアプリケーションエージェントを実行するように、エージェント生成部に依頼する、ことを特徴とする請求項21記載の計算機。
  27. 前記アプリケーションエージェントとして、汎用アプリケーションエージェントを備え、指定されたファイルの拡張子から、拡張子と該拡張子に対応するアプリケーションとの関係を記憶保持する拡張子アプリケーション対応テーブルを参照して検索し、前記ファイルの拡張子と一致した拡張子を持つアプリケーションを起動する、ことを特徴とする請求項21記載の計算機。
JP30468199A 1999-10-26 1999-10-26 分散アプリケーション制御システム及び制御方法並びにプログラムを記録した記録媒体 Expired - Fee Related JP3738624B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP30468199A JP3738624B2 (ja) 1999-10-26 1999-10-26 分散アプリケーション制御システム及び制御方法並びにプログラムを記録した記録媒体
US09/695,195 US6886024B1 (en) 1999-10-26 2000-10-25 Distributed application control system, control method and a program

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP30468199A JP3738624B2 (ja) 1999-10-26 1999-10-26 分散アプリケーション制御システム及び制御方法並びにプログラムを記録した記録媒体

Publications (2)

Publication Number Publication Date
JP2001125872A JP2001125872A (ja) 2001-05-11
JP3738624B2 true JP3738624B2 (ja) 2006-01-25

Family

ID=17935952

Family Applications (1)

Application Number Title Priority Date Filing Date
JP30468199A Expired - Fee Related JP3738624B2 (ja) 1999-10-26 1999-10-26 分散アプリケーション制御システム及び制御方法並びにプログラムを記録した記録媒体

Country Status (2)

Country Link
US (1) US6886024B1 (ja)
JP (1) JP3738624B2 (ja)

Families Citing this family (37)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2002033547A1 (en) * 2000-10-17 2002-04-25 British Telecommunications Public Limited Company Mobile programs
JP2002140194A (ja) * 2000-10-31 2002-05-17 Toshiba Corp 情報処理方法および情報処理装置およびエージェントシステム
US7814198B2 (en) 2007-10-26 2010-10-12 Microsoft Corporation Model-driven, repository-based application monitoring system
US8103715B1 (en) * 2002-06-11 2012-01-24 Cisco Technology, Inc. Approach for managing mobile agents in networks
US8024783B2 (en) * 2004-01-22 2011-09-20 Ryan Riley Modular agent architecture
US7302611B2 (en) * 2004-09-13 2007-11-27 Avaya Technology Corp. Distributed expert system for automated problem resolution in a communication system
US20060294210A1 (en) * 2005-06-27 2006-12-28 Falchuk Benjamin W Ad-hoc multimedia information exploitation via web services and mobile agents
US7933986B2 (en) 2006-02-16 2011-04-26 Microsoft Corporation Transferring command-lines as a message
US7933964B2 (en) * 2006-02-16 2011-04-26 Microsoft Corporation Shell sessions
ES2311379B1 (es) * 2006-11-06 2009-11-30 Vodafone España S.A. Metodo, sistema y dispositivo terminal para la transmision y recepcionde mensajes.
ES2322979B1 (es) * 2006-11-06 2010-04-21 Vodafone España, S.A. Metodo, sistema y terminal de comunicacion y migracion de agentes moviles mediante mensajeria multimedia.
DE102007006614A1 (de) * 2007-02-06 2008-08-07 Daimler Ag Anwendung einer verteilten Diagnosearchitektur in AUTOSAR
GB2446608B (en) * 2007-02-17 2011-03-02 Paul Tapper Multi-machine shell
US8024396B2 (en) * 2007-04-26 2011-09-20 Microsoft Corporation Distributed behavior controlled execution of modeled applications
US7861222B2 (en) 2007-06-13 2010-12-28 Microsoft Corporation Discoscript: a simplified distributed computing scripting language
US7970892B2 (en) * 2007-06-29 2011-06-28 Microsoft Corporation Tuning and optimizing distributed systems with declarative models
US8239505B2 (en) 2007-06-29 2012-08-07 Microsoft Corporation Progressively implementing declarative models in distributed systems
US8230386B2 (en) 2007-08-23 2012-07-24 Microsoft Corporation Monitoring distributed applications
EP2224338A3 (en) 2007-09-12 2011-03-16 Citrix Systems, Inc. Methods and systems for generating desktop environments providing integrated access to remote and local resources
US8225308B2 (en) * 2007-10-26 2012-07-17 Microsoft Corporation Managing software lifecycle
US8099720B2 (en) 2007-10-26 2012-01-17 Microsoft Corporation Translating declarative models
US7926070B2 (en) 2007-10-26 2011-04-12 Microsoft Corporation Performing requested commands for model-based applications
US7974939B2 (en) * 2007-10-26 2011-07-05 Microsoft Corporation Processing model-based commands for distributed applications
US8181151B2 (en) 2007-10-26 2012-05-15 Microsoft Corporation Modeling and managing heterogeneous applications
US20090113292A1 (en) * 2007-10-26 2009-04-30 Microsoft Corporation Flexibly editing heterogeneous documents
US8769491B1 (en) * 2007-11-08 2014-07-01 The Mathworks, Inc. Annotations for dynamic dispatch of threads from scripting language code
US8627342B2 (en) * 2008-01-31 2014-01-07 Paul Michael Tapper Multi-machine shell
KR101572879B1 (ko) 2009-04-29 2015-12-01 삼성전자주식회사 병렬 응용 프로그램을 동적으로 병렬처리 하는 시스템 및 방법
JP5472296B2 (ja) * 2009-05-22 2014-04-16 日本電気株式会社 スクリプト記述分離再構築装置、スクリプト記述分離再構築方法及びスクリプト記述分離再構築プログラム
US20110010690A1 (en) * 2009-07-07 2011-01-13 Howard Robert S System and Method of Automatically Transforming Serial Streaming Programs Into Parallel Streaming Programs
US8200626B1 (en) * 2009-09-18 2012-06-12 Sprint Communications Company L.P. Mobile device file management
WO2011159209A1 (en) 2010-06-17 2011-12-22 Saab Ab Distributed avionics
CA2836219C (en) 2011-05-17 2018-05-15 Saab Ab Distributed avionics system and method for backup handling in an avionics system
CN108228165B (zh) * 2018-01-05 2021-02-02 武汉斗鱼网络科技有限公司 一种记录程序接口间调用信息的方法及电子设备
CN109254838B (zh) * 2018-08-21 2021-11-23 中邮科通信技术股份有限公司 一种基于JAVA BeanShell的自动化任务
US20210191821A1 (en) 2019-12-20 2021-06-24 EMC IP Holding Company LLC Method and system for generating conversation specific user data backups of limited-access user data
US11438295B1 (en) * 2021-10-13 2022-09-06 EMC IP Holding Company LLC Efficient backup and recovery of electronic mail objects

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5603031A (en) * 1993-07-08 1997-02-11 General Magic, Inc. System and method for distributed computation based upon the movement, execution, and interaction of processes in a network
US5953514A (en) * 1995-10-23 1999-09-14 Apple Computer, Inc. Method and apparatus for transparent remote execution of commands
US6148327A (en) * 1996-11-05 2000-11-14 Lockheed Martin Corp. Mobile agent docking arrangement for enhancing agent capabilities
US6055562A (en) * 1997-05-01 2000-04-25 International Business Machines Corporation Dynamic mobile agents
JP3996236B2 (ja) * 1997-05-27 2007-10-24 インターナショナル・ビジネス・マシーンズ・コーポレーション 情報処理方法、サーバ、システム及び情報処理プログラムを格納した記録媒体
JP3529588B2 (ja) * 1997-05-30 2004-05-24 インターナショナル・ビジネス・マシーンズ・コーポレーション 計算機ネットワーク・システム、計算機、一時保管用計算機及びこれらにおける方法
JPH1155324A (ja) * 1997-07-31 1999-02-26 Fujitsu Ltd コンピュータネットワークの通信システム
JP3206644B2 (ja) * 1997-08-11 2001-09-10 日本電気株式会社 ネットワーク管理方式
JPH11126209A (ja) * 1997-10-23 1999-05-11 Toshiba Corp 情報処理装置及び方法並びに情報処理プログラムを記録した記録媒体
GB2332288A (en) * 1997-12-10 1999-06-16 Northern Telecom Ltd agent enabling technology
JP4187814B2 (ja) * 1997-12-19 2008-11-26 株式会社東芝 移動型エージェントのデータ管理方法ならびにデータ管理システム、及び同方法がプログラムされ記録される記録媒体
US6496871B1 (en) 1998-06-30 2002-12-17 Nec Research Institute, Inc. Distributed agent software system and method having enhanced process mobility and communication in a computer network
US6356964B1 (en) * 1998-08-31 2002-03-12 International Business Machines Corporation Method and apparatus for enabling location-independent and location-transparent interaction between a program and a user
US6163794A (en) * 1998-10-23 2000-12-19 General Magic Network system extensible by users
US6681243B1 (en) * 1999-07-27 2004-01-20 Intel Corporation Network environment supporting mobile agents with permissioned access to resources

Also Published As

Publication number Publication date
JP2001125872A (ja) 2001-05-11
US6886024B1 (en) 2005-04-26

Similar Documents

Publication Publication Date Title
JP3738624B2 (ja) 分散アプリケーション制御システム及び制御方法並びにプログラムを記録した記録媒体
US5339435A (en) Heterogenous software configuration management apparatus
US20020062359A1 (en) HTTP transaction monitor with capacity to replay in debuggings session
US6356920B1 (en) Dynamic, hierarchical data exchange system
KR100900743B1 (ko) 데이터 공유 시스템, 방법 및 소프트웨어 툴
US7917888B2 (en) System and method for building multi-modal and multi-channel applications
US7099939B2 (en) HTTP transaction monitor with sequence replay capacity
US20030093420A1 (en) Method and system for retrieving sharable information using a hierarchically dependent directory structure
US6622149B1 (en) Method of searching a database for an item of an assembly drawing
US20080288536A1 (en) Method and System for Integrating Browsing Histories with Media Playlists
JPH10105410A (ja) インターネット−イネーブル型ポートフォリオ・マネージャ・システム及び方法
JPH1091447A (ja) 分散オブジェクトシステムにおいて分散オブジェクトの再利用を促進するカタログ装置
KR20060101221A (ko) 풍부한 데이터 바인딩된 애플리케이션
JPH1069376A (ja) ワールド・ワイド・ウェブ文書に対する組込型リンクを有しているツールバー・アイコン及び統合型ウェブ・ブラウザを有するインターネット−イネーブル型図的ユーザ・インターフェイス
WO1999027445A1 (en) Mechanism for automatically establishing connections between executable components of a hypertext-based application
JPH09269909A (ja) データ・レポジトリにおけるエディティング及びバージョニングを統合するシステム及び方法
EP0612014B1 (en) Menu inquiry system
JP3384745B2 (ja) インターネット・ウェブ・ページの階層においてネットワーク・ページに迅速に戻る装置および方法
JPH05197536A (ja) 単一のパネル定義ファイルから複数のパネル・バージョンを生成する方法及びシステム
JP2008542918A (ja) データ言語中の複数の言語の管理
US20030117417A1 (en) Generic application flow management system and method
Troelsen et al. Introducing ASP. NET MVC
JPH113217A (ja) 通信サービス開発支援装置及び方法並びに通信サービス開発支援プログラムを記録した記録媒体
Bai Developing Java Web Applications to Access Databases
Notodikromo et al. Places and Queues

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20040803

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20041004

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20051011

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20051024

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20081111

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20091111

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20091111

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20101111

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20111111

Year of fee payment: 6

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20111111

Year of fee payment: 6

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20121111

Year of fee payment: 7

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20121111

Year of fee payment: 7

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20131111

Year of fee payment: 8

LAPS Cancellation because of no payment of annual fees