(57)【要約】【課題】複数のプログラムが複数のノードの間で連携して動作する情報通信システムにおいて、各ノードの状態を考慮した適正なシステム動作を実現できるようにする。【解決手段】各ノードには、当該ノードで動作する各プログラムにおける起動／終了の順序および起動パラメータを決定し、当該各プログラムにおける起動／終了および起動状態の管理を行うプログラム起動・管理手段が備えられ、マスターノード１００は、各ノードに備えられているプログラム起動・管理手段と通信を行って、当該各ノードの状態を管理するノード状態管理手段１２３と、ノード状態管理手段１２３による管理の状況に応じて、接続要求を行ったスレーブノード２００との間の、複数のプログラムの連携に係る通信路４０２の接続を制御する通信ミドルウェア１２４４を備える。【選択図】図２
2011018223.tif 000002
【特許請求の範囲】
【請求項１】
マスターノードとスレーブノードからなる複数のノードの各ノードに複数のプログラムが備えられ、当該複数のプログラムが前記複数のノードの間で連携して動作する情報通信システムであって、
前記各ノードは、
当該ノードに備えられた前記複数のプログラムにおける各プログラムの起動および終了の順序を定義するプログラム起動／終了定義テーブルと、
前記プログラム起動／終了定義テーブルに従って、当該ノードで動作する前記複数のプログラムにおける起動／終了の順序および起動パラメータを決定し、当該複数のプログラムにおける起動／終了および起動状態の管理を行うプログラム起動・管理手段と
を備え、
前記マスターノードは、
前記各ノードに備えられている前記プログラム起動・管理手段と通信を行って、当該各ノードの状態を管理するノード状態管理手段と、
前記ノード状態管理手段による管理の状況に応じて、接続要求を行った前記スレーブノードとの間の、前記複数のプログラムの連携に係る通信路の接続を制御する通信ミドルウェアと
を備えることを特徴とする情報通信システム。
【請求項２】
前記各ノードは、当該ノードに備えられた前記複数のプログラムの各プログラムと前記プログラム起動・管理手段との間で当該各プログラムの状態変更に係る通信を行うための通信手段を更に備えることを特徴とする請求項１に記載の情報通信システム。
【請求項３】
前記ノード状態管理手段は、更に、前記各ノードの状態に基づいて当該情報通信システムにおけるシステム状態を決定するとともに、前記接続要求を行ったスレーブノードが一連のシステム動作における初回の起動であるか、２回目以降の再起動であるかを当該スレーブノードの前記プログラム起動・管理手段に通知するものであり、
当該スレーブノードの前記プログラム起動・管理手段は、前記ノード状態管理手段から前記２回目以降の再起動である旨の通知を受けた場合に、前記システム状態に応じて、使用する前記プログラム起動／終了定義テーブルの情報を切り替えることを特徴とする請求項１又は２に記載の情報通信システム。
【請求項４】
前記ノード状態管理手段は、更に、前記各ノードで動作している前記各プログラムの状態履歴を管理するものであり、
前記接続要求を行ったスレーブノードは、再起動である場合、当該再起動の直前の起動の終了時点における当該スレーブノードに備えられた前記各プログラムの状態履歴を、前記ノード状態管理手段から取得して、前記各プログラムの再起動時に反映させることを特徴とする請求項１乃至３のいずれか１項に記載の情報通信システム。
【請求項５】
前記ノード状態管理手段は、更に、前記各ノードの再起動回数を管理するものであり、
前記各ノードの前記プログラム起動・管理手段は、前記再起動回数に応じて当該ノードで起動するプログラムの起動順序もしくは起動パラメータを変更することを特徴とする請求項１乃至４のいずれか１項に記載の情報通信システム。
【請求項６】
マスターノードとスレーブノードからなる複数のノードの各ノードに複数のプログラムが備えられ、当該複数のプログラムが前記複数のノードの間で連携して動作する情報通信システムによる情報通信方法であって、
前記各ノードでは、
当該ノードに備えられた前記複数のプログラムにおける各プログラムの起動および終了の順序をプログラム起動／終了定義テーブルに定義し、
前記プログラム起動／終了定義テーブルに従って、プログラム起動・管理手段において、当該ノードで動作する前記複数のプログラムにおける起動／終了の順序および起動パラメータを決定し、当該複数のプログラムにおける起動／終了および起動状態を管理し、
前記マスターノードでは、
ノード状態管理手段において、前記各ノードに備えられている前記プログラム起動・管理手段と通信を行って当該各ノードの状態を管理し、
前記ノード状態管理手段による管理の状況に応じて、通信ミドルウェアにおいて、接続要求を行った前記スレーブノードとの間の、前記複数のプログラムの連携に係る通信路の接続を制御することを特徴とする情報通信方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のプログラムが複数のノードの間で連携（強調）して動作する情報通信システム及びその情報通信方法に関するものである。
【背景技術】
【０００２】
大規模な情報通信システムにおいては、近年、当該システムに求められる機能がますます高度化・大規模化する傾向にある。この大規模な情報通信システムの場合、複数の計算機（以降、「情報通信装置」又は「ノード」と呼ぶことがある）上で複数のアプリケーション・プログラム（以降、「プログラム」又は「アプリケーション」と略すことがある）が強調動作するケースが多々ある。
【０００３】
また、分散オブジェクト技術は、複数のプロセスやネットワーク上に分散されているソフトウェアコンポーネント（オブジェクト）を他のロケーションから利用可能とする技術である。この分散オブジェクト技術では、同一の装置上の異なるプロセス上で動作するコンポーネントや、ネットワークを介して異なる装置上で動作するコンポーネントに対して相互にメッセージ通信が行われる。
【０００４】
このような分散オブジェクト技術に係るシステムの代表的なものとしては、ＲＰＣ（Ｒｅｍｏｔｅ  Ｐｒｏｃｅｄｕｒｅ  Ｃａｌｌ）や、ＣＯＲＢＡ（Ｃｏｍｍｏｎ  Ｏｂｊｅｃｔ  Ｒｅｑｕｅｓｔ  Ｂｒｏｋｅｒ  Ａｒｃｈｉｔｅｃｔｕｒｅ）、Ｊａｖａ（登録商標）ＲＭＩ（Ｊａｖａ  Ｒｅｍｏｔｅ  Ｍｅｔｈｏｄ  Ｉｎｖｏｃａｔｉｏｎ）などがある。
【０００５】
これらの分散オブジェクト技術は、トランザクション処理システムやデータ収集システム、Ｗｅｂサービスシステムといった比較的大規模な情報通信システムでの実績が多い。また、近年では、組込み領域においても、複数のＣＰＵやマルチプロセッサＯＳを搭載しマルチプロセスＯＳを利用する製品が増え、ＲＰＣやＣＯＲＢＡと同等の機能を有する通信ミドルウェアを採用する機会が増えてきている。
【０００６】
ＣＯＲＢＡなどの分散オブジェクトに係るシステムでは、クライアントからの要求に応じてサーバ側のオブジェクトを起動するといった仕組みが提供されている。
一方、ＵＮＩＸ（登録商標）などのマルチプロセスＯＳ上では、複数のプログラム（プロセス）を起動・管理し、プログラム間で連携を取りながら動作を行う。即ち、連携するプログラム間で依存関係がある場合には、それらの起動順番に制約が生じる。例えば、システムのログを収集するプログラムは、そのログにメッセージを出力する他のプログラムの実行に先立って起動しなければならない。さらに複数のノードから構成される情報通信システムにおいては、それぞれのノード上で動作するプログラムの状態管理や起動順序などを考慮する必要がある。
【０００７】
この複数のノードから構成される情報通信システムにおいては、ノード間の接続は、装置構成によりイーサネット（登録商標）等のネットワークを用いたものや、共有メモリを介した結合など、さまざまな物理層が採用されている。この様な構成で複数あるＣＰＵが各々独立したオペレーティング・システムを実行し、その上でアプリケーション・プログラムを動作させるシステムにおいては、それぞれのノードの状態（実行中、停止中など）に応じたシステム状態を管理する必要がある。また、通信相手（プログラム）が存在するノードのダウン（停止）検出には、定期的にメッセージを交換するハートビートやキープアライブといった仕組みが採用される場合が多い。このダウンしたノードは、その他の正常状態のノードやハードウェアによって再起動される場合があるが、再起動後のシステム復旧は容易ではない。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開平４−１２４７３５号公報
【特許文献２】特開平９−２６９４０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
大規模化、多機能化する情報通信システム（或いは情報通信装置）においては、１つのシステム内に独立した機能が複数含まれている場合がある。また、ハードウェア・ユニットの追加や、故障した場合に新しいものに取り替えるといった作業を、システムを停止すること無く実行することが求められてきている。
【００１０】
例えば、半導体製造装置などの大規模なシステムにおいて、アプリケーション・プログラムの不具合等でシステムが異常状態になった場合や、ハードウェア・ユニットの交換等で、システム全体の再起動を行わなければならない場合がある。この場合、再起動にかかるダウンタイムが当該装置の生産性の観点で重要視されている。特に、ハードウェア制御を担当するノードの再起動においては、比較的時間のかかるハードウェアの初期化や調整を最初からやり直す必要があり、ダウンタイムの縮小が課題となっている。
【００１１】
また、ノードが不具合等で異常状態になり、復帰操作が不能になった場合は、当該ノードのＣＰＵのみリセットを実行する必要がある。この際、正常なシャットダウン手順を取らずに当該リセットを行った場合、それまで通信を行っていたＴＣＰ／ＩＰのコネクションなどは、所定の切断処理を行えずに不正な状態のまま残ってしまうことがある。このような状況において、リセットを行わなかったノードで動作するプログラムにおいては、その不正状態になった通信路を次に使う時に始めて不正状態を検出できることになる。このように、複数のノードから構成される情報通信システムにおいて、その一部のノードを再起動した場合に当該システムの振る舞いを元に戻すのは容易ではない。
【００１２】
例えば、特許文献１には、通常時とシステムダウン時のシステム起動に必要な２種類のＩＰＬ情報を切り替えることにより、ＭＰＵの起動方法を変更する旨が開示されている。しかしながら、特許文献１では、各ＭＰＵの起動方法が２種類に限定されており、ダウン時のプログラムの状態に応じた起動方法の変更や通信路の再構築などは解決できない。
【００１３】
また、特許文献２には、複数のノードを備えたシステムにおいて、プロセスの起動順序の制御とプロセスの稼動状況を把握し、システム障害の発生状況に応じて残存プロセスを停止し、更に再起動することで分散システムを正しい順序で回復するようにしている。しかしながら、特許文献２では、ノード単位での再起動時における起動順序制御や再起動を高速に行うための仕組みがないことや、障害発生時のリソース開放や通信路の再構築などは解決できないという不具合がある。
【００１４】
本発明は、このような問題点に鑑みてなされたものであり、複数のプログラムが複数のノードの間で連携して動作する情報通信システムにおいて、各ノードの状態を考慮した適正なシステム動作を実現できるようにすることを目的とする。
【課題を解決するための手段】
【００１５】
本発明の情報通信システムは、マスターノードとスレーブノードからなる複数のノードの各ノードに複数のプログラムが備えられ、当該複数のプログラムが前記複数のノードの間で連携して動作する情報通信システムであって、前記各ノードは、当該ノードに備えられた前記複数のプログラムにおける各プログラムの起動および終了の順序を定義するプログラム起動／終了定義テーブルと、前記プログラム起動／終了定義テーブルに従って、当該ノードで動作する前記複数のプログラムにおける起動／終了の順序および起動パラメータを決定し、当該複数のプログラムにおける起動／終了および起動状態の管理を行うプログラム起動・管理手段とを備え、前記マスターノードは、前記各ノードに備えられている前記プログラム起動・管理手段と通信を行って、当該各ノードの状態を管理するノード状態管理手段と、前記ノード状態管理手段による管理の状況に応じて、接続要求を行った前記スレーブノードとの間の、前記複数のプログラムの連携に係る通信路の接続を制御する通信ミドルウェアとを備える。
また、本発明は、上述した情報通信システムによる情報通信方法を含む。
【発明の効果】
【００１６】
本発明によれば、複数のプログラムが複数のノードの間で連携して動作する情報通信システムにおいて、各ノードの状態を考慮した適正なシステム動作を実現することができる。
【図面の簡単な説明】
【００１７】
【図１】本発明の第１の実施形態に係る情報通信システムのシステム構成の一例を示す模式図である。
【図２】本発明の第１の実施形態に係る情報通信システムの機能構成の一例を示す模式図である。
【図３】図１及び図２に示すプログラム起動／終了定義テーブルの一例を示す模式図である。
【図４】図１及び図２に示すプログラム状態管理テーブルの一例を示す模式図である。
【図５】図４に示すプログラム状態管理テーブルのプログラムの固有状態の一例を示す模式図である。
【図６】本発明の第１の実施形態に係る情報通信システムのマスターノードにおけるシステム起動処理の処理手順の一例を示すフローチャートである。
【図７】図６のステップＳ６０６におけるスレーブノード接続処理の詳細な処理手順の一例を示すフローチャートである。
【図８】本発明の第１の実施形態に係る情報通信システムのスレーブノードにおけるノード起動処理の処理手順の一例を示すフローチャートである。
【図９】本発明の第２の実施形態を示し、図２に示すプログラム起動・管理手段によって起動されるプログラムの動作処理の一例を示すフローチャートである。
【図１０】本発明の第２の実施形態に係る情報通信システムのスレーブノードにおけるノード起動処理の処理手順の一例を示すフローチャートである。
【発明を実施するための形態】
【００１８】
以下に、図面を参照しながら、本発明を実施するための形態（実施形態）について説明する。
【００１９】
（第１の実施形態）
まず、本発明の第１の実施形態について説明する。
【００２０】
図１は、本発明の第１の実施形態に係る情報通信システム１０のシステム構成の一例を示す模式図である。
図１に示すように、情報通信システム１０は、ノードＡ１００と、ノードＢ２００と、制御対象ハードウェア３００を有して構成されている。
【００２１】
ノードＡ１００及びノードＢ２００は、情報通信装置であり、制御対象ハードウェア３００は、情報通信システム１０が制御するハードウェアである。この制御対象ハードウェア３００としては、例えば、制御アームやステージ、チャンバーなどが該当する。また、本実施形態では、ノードＢ２００が制御対象ハードウェア３００を制御するように構成されている。
【００２２】
ノードＡ１００は、ＣＰＵ１０１、ＲＯＭ１０２、ＲＡＭ１０３、入力インターフェース１０４、出力インターフェース１０５、外部記憶インターフェース１０６、ネットワークインターフェース１０７、バス１０８を有して構成されている。さらに、ノードＡ１００は、入力装置１０９、表示装置１１０、外部記憶装置１１１を有して構成されている。また、ＲＯＭ１０２には、処理プログラム１０２１及びパラメータ１０２２が含まれている。また、ＲＡＭ１０３には、プログラム状態管理テーブル１０３１及びノード状態管理テーブル１０３２が含まれている。また、表示装置１１０には、ＣＲＴやＬＣＤ等の表示媒体１１０１が含まれている。また、外部記憶装置１１１には、プログラム起動／終了定義テーブル１１１１が含まれている。
【００２３】
ＣＰＵ１０１は、ノードＡ１００内の各デバイス（１０２〜１０７）に対してバス１０８を介してアクセスして制御を行う。ＲＯＭ１０２は、バス１０８を介してＣＰＵ１０１からアクセス可能な読み出し専用のメモリであり、ＣＰＵ１０１が制御を行うための処理プログラム１０２１、及び、処理プログラム１０２１を用いた処理で使用されるパラメータ１０２２が格納されている。ＲＡＭ１０３は、読み書き可能なメモリであり、このＲＡＭ１０３には、処理プログラム１０２１による処理により作成／変更される、プログラム状態管理テーブル１０３１及びノード状態管理テーブル１０３２等を格納するための領域が確保されている。プログラム状態管理テーブル１０３１は、複数のプログラムの状態を管理するテーブルである。
【００２４】
入力インターフェース１０４は、入力装置１０９から入力された入力情報をノードＡ１００の内部（ＣＰＵ１０１等）に入力する処理を行うものである。ここで、入力装置１０９は、例えば、スイッチ、キー、ボタン、タッチパネル等で構成されている。
【００２５】
出力インターフェース１０５は、ＣＰＵ１０１の制御に基づいて、各種のデータや各種の情報を表示装置１１０に表示し、出力を行うものである。ここで、表示装置１１０は、ＣＲＴやＬＣＤ等の表示媒体１１０１を含み構成されている。
【００２６】
外部記憶インターフェース１０６は、ＣＰＵ１０１の制御に基づいて、外部記憶装置１１１に対する各種のデータや各種の情報の入出力を行うものである。ここで、外部記憶装置１１１は、ＨＤＤや不揮発性メモリ等で構成されており、また、その内部には、プログラム起動／終了定義テーブル１１１１等を格納するための領域が確保されている。
【００２７】
ネットワークインターフェース１０７は、ＣＰＵ１０１の制御に基づいて、外部装置と通信を行う処理を行うものである。具体的に、ネットワークインターフェース１０７は、イーサネット、無線ＬＡＮ、シリアルバス等の通信媒体を介して他のノード（ＣＰＵ２０１）との通信を行うものである。
【００２８】
ここで、他のノード（ノードＢ２００）との通信接続形態のバリエーションとして、ハードウェアのバスやＤｕａｌ  ＰｏｒｔのＲＡＭを介して、当該ノードＡ１００のＣＰＵ１０１と他のノードＢ２００のＣＰＵ２０１とが接続される形態もある。この場合は、バス間通信を行うドライバを経由し、ネットワークインターフェースと同様にデータの交換が可能である。本実施形態に係る情報通信システム１０では、これらの物理的な通信方式を隠蔽するミドルウェアを介して、異なるＣＰＵ上のアプリケーション・プログラム（プロセス）同士がメッセージ交換を行うことができるように構成されている。
【００２９】
バス１０８は、ＣＰＵ１０１、ＲＯＭ１０２、ＲＡＭ１０３、入力インターフェース１０４、出力インターフェース１０５、外部記憶インターフェース１０６及びネットワークインターフェース１０７を通信可能に接続するものである。
【００３０】
本実施形態では、ＣＰＵ１０１の制御に係る処理プログラム１０２１やパラメータ１０２２がＲＯＭ１０２にあり、また、処理対象となる各テーブルの格納領域（１０３１及び１０３２）がＲＡＭ１０３にある例で説明を行うが、これに限定されるものではない。
例えば、これらの全てのデータを外部記憶装置１１１に格納することも可能であり、更に、必要に応じて、これらのデータを外部記憶装置１１１からＲＡＭ１０３上にロードして、使用することもできる。さらには、これらのデータをＣＰＵ１０１のキャッシュメモリ上に記憶することも同様に可能である。
【００３１】
ノードＢ２００は、ＣＰＵ２０１、ＲＯＭ２０２、ＲＡＭ２０３、入力インターフェース２０４、出力インターフェース２０５、外部記憶インターフェース２０６、ネットワークインターフェース２０７、バス２０８を有して構成されている。さらに、ノードＢ２００は、入力装置２０９、表示装置２１０、外部記憶装置２１１を有して構成されている。また、ＲＯＭ２０２には、処理プログラム２０２１及びパラメータ２０２２が含まれている。また、ＲＡＭ２０３には、プログラム状態管理テーブル２０３１が含まれている。また、表示装置２１０には、ＣＲＴやＬＣＤ等の表示媒体２１０１が含まれている。また、外部記憶装置２１１には、プログラム起動／終了定義テーブル２１１１が含まれている。
【００３２】
このように、ノードＢ２００も、基本的にはノードＡ１００と同様の構成を有して構成されており、その各構成の機能については、上述したノードＡ１００の対応する構成と同じであるため、その説明は省略する。また、図１に示すノードＢ２００では、ＲＡＭ２０３にノード状態管理テーブル１０３２が構成されない点でノードＡ１００と異なっている。
【００３３】
図２は、本発明の第１の実施形態に係る情報通信システム１０の機能構成の一例を示す模式図である。ここで、図１に示す構成と同様の構成については同じ符号を付している。
【００３４】
ノードＡ１００及びノードＢ２００は、情報通信システム１０を動作させる情報通信装置（コンピュータ）であり、不図示のオペレーティング・システムが動作しているものとする。ここで、本実施形態では、ノードＡ１００を、情報通信システム１０の状態を一元管理する１つのマスターノードとし、その他のノードＢ２００を、その従属ノード（以降、「スレーブノード」と呼ぶ）としている。なお、本実施形態では、２つのノード（１つのマスターノード（１００）と１つのスレーブノード（２００））から構成される情報通信システム１０を例示しているが、これに限定されるものではない。例えば、３つ以上の複数のノード（例えば１つのマスターノードと２つ以上のスレーブノード）から構成される情報通信システム１０であっても本発明に適用可能である。制御対象ハードウェア３００は、上述したように、情報通信システム１０が制御するハードウェアであり、例えば、制御アーム３２１やステージ３２２、チャンバー３２３などが該当する。
【００３５】
ノードＡ１００は、プログラム起動／終了定義テーブル１１１１、プログラム起動・管理手段１２１、各ノードの状態履歴テーブル１２２、ノード状態管理手段１２３、通信制御手段１２４、通信手段１２５の各機能構成を有して構成されている。また、プログラム起動・管理手段１２１には、プログラム状態管理テーブル１０３１が格納される。また、ノード状態管理手段１２３には、システム状態テーブル１２３１が格納される。また、通信制御手段１２４は、プログラムＡ１（１２４１）、プログラムＡ２（１２４２）、プログラムＡ３（１２４３）、及び、通信ミドルウェア１２４４を有して構成されている。
【００３６】
ここで、例えば、図１のＣＰＵ１０１、ＲＯＭ１０２に記憶された処理プログラム１０２１及びパラメータ１０２２、ＲＡＭ１０３並びに外部記憶インターフェース１０６から、図２のプログラム起動・管理手段１２１が構成される。また、例えば、図１に示すノード状態管理テーブル１０３２は、図２に示す各ノードの状態履歴テーブル１２２及びシステム状態テーブル１２３１に相当する。また、例えば、図１のＣＰＵ１０１、ＲＯＭ１０２に記憶された処理プログラム１０２１及びパラメータ１０２２、ＲＡＭ１０３、外部記憶インターフェース１０６並びにネットワークインターフェース１０７から、図２のノード状態管理手段１２３が構成される。また、例えば、図１のＣＰＵ１０１、ＲＯＭ１０２に記憶された処理プログラム１０２１及びパラメータ１０２２並びにネットワークインターフェース１０７から、図２の通信制御手段１２４が構成される。また、例えば、図１のバス１０８から、図２の通信手段１２５が構成される。
【００３７】
プログラム起動／終了定義テーブル１１１１は、プログラムの起動順序や終了順序、起動パラメータなどを定義したテーブルである。このプログラム起動／終了定義テーブル１１１１について、図３を用いて説明する。
【００３８】
図３は、図１及び図２に示すプログラム起動／終了定義テーブルの一例を示す模式図である。
図３に示すように、プログラム起動／終了定義テーブルには、各プログラムごとに、プログラム名、プログラムのパス、起動レベル、終了レベル、パラメータ、起動時タイムアウト及び終了時タイムアウト等が定義されている。
【００３９】
図２のプログラム起動・管理手段１２１は、プログラム起動／終了定義テーブル１１１１を読み込み、アプリケーション・プログラムを起動、終了、管理する処理を行うものである。具体的に、プログラム起動・管理手段１２１は、プログラム起動／終了定義テーブル１１１１に従って、当該ノードＡ１００で動作する各プログラムの起動／終了の順序及び起動パラメータを決定し、当該各プログラムの起動／終了及び起動状態の管理を行う。このプログラム起動・管理手段１２１には、プログラム状態管理テーブル１０３１が格納されており、これについて、図４を用いて説明する。
【００４０】
図４は、図１及び図２に示すプログラム状態管理テーブルの一例を示す模式図である。
図４に示すように、プログラム状態管理テーブルは、各プログラムごとに、プログラム名、起動パラメータ、プロセスＩＤ、ノード名（ホスト名）、各プログラムの固有状態等を管理するものである。
【００４１】
ここで、図４に示すプログラム状態管理テーブルのプログラムの固有状態とは、オペレーティング・システムが定義するプロセスの状態とは独立した、アプリケーション・プログラムの状態によって定義されるものである。
【００４２】
図５は、図４に示すプログラム状態管理テーブルのプログラムの固有状態の一例を示す模式図である。
図４に示すプログラムの固有状態としては、例えば、図５に例示するように、サービスの初期化を行っている「初期化中状態（Ｉｎｉｔｉａｌｉｚｉｎｇ）５０１」や、サービスの提供準備が整った「準備完了状態（Ｒｅａｄｙ）５０２」がある。さらに、なんらかのエラーが発生してサービス提供が不可能な「エラー状態（Ｅｒｒｏｒ）５０３」、終了処理を行っている「終了中状態（Ｔｅｒｍｉｎａｔｉｎｇ）５０４」、及び、起動していない状態「未起動状態（Ｄｏｒｍａｎｔ）５０５」等がある。
【００４３】
なお、装置制御を行うプログラムでは、具体的な装置の状態、例えばアーム３２１の位置やチャンバー３２３の余熱状態など、プログラムが認識する具体的な固有状態を持つことも考えられる。また、上記以外にもそのシステムで使用する状態を定義することが可能であり、例示した状態に限定されるものではない。
【００４４】
図２の各ノードの状態履歴テーブル１２２は、各ノードの状態の履歴を保持するストアであり、ノード状態管理手段１２３により読み出し／保存される。
【００４５】
図２のノード状態管理手段１２３は、情報通信システム１０に所属する全てのノードの状態を管理するものである。この際、ノード状態管理手段１２３は、各ノードに備えられているプログラム起動・管理手段と通信を行って当該各ノードの状態を管理する。ここで、ノードの状態には、ノード単体で評価される状態（ノード停止中状態、起動中状態、エラー状態、正常運転中状態など）のみならず、そのノードで動作する個々のプログラムの実行状態などを含む場合もある。また、ノード状態管理手段１２３は、ノードの状態の組合せから当該情報通信システム１０のシステム状態を決定し、これをシステム状態テーブル１２３１として保持する仕組みを持つ。
【００４６】
システム状態テーブル１２３１は、システム状態として情報通信システム１０全体で評価される状態（システム停止中状態、起動中状態、エラー状態、正常運転中状態、初期化完了状態など）を保存するストアである。
【００４７】
図２の通信制御手段１２４は、プログラムＡ１（１２４１）、プログラムＡ２（１２４２）及びプログラムＡ３（１２４３）からなるアプリケーション・プログラム群と、通信ミドルウェア１２４４を有して構成されている。
【００４８】
アプリケーション・プログラム群（１２４１〜１２４３）は、プログラム起動・管理手段１２１によって起動、管理されるものである。このアプリケーション・プログラム群（１２４１〜１２４３）は、それぞれ、通信手段１２５を介して、プログラム起動・管理手段１２１とプログラムの状態変更通知やプログラムへの状態変更指示を行うものとする。
【００４９】
通信ミドルウェア１２４４は、プログラム間でメッセージやデータの通信を行うための通信路を生成・削除・管理するものである。具体的に、通信ミドルウェア１２４４は、ノード状態管理手段１２３による管理の状況に応じて、接続要求を行ったスレーブノード２００との間の、複数のプログラムの連携に係る通信路４０２の接続を制御する。また、この通信ミドルウェア１２４４は、通信相手を特定するためのネーミングサービス等を提供すると共に、例えばＴＣＰ／ＩＰによるネットワークがサポートされたシステムにおいては、ノードを跨ったＴＣＰ／ＩＰのソケットコネクションを管理する。また、通信ミドルウェア１２４４は、ノード同士がバスを介して接続されていたり、共有メモリなどを介した通信が可能なハード構成になっていたりした場合には、そのハードウェアを制御するドライバを介したコネクションを管理する。
【００５０】
通信手段１２５は、ノードＡ１００に備えられた複数のプログラム（１２４１〜１２４３）の各プログラムとプログラム起動・管理手段１２１との間で当該各プログラムの状態変更等のプログラム状態に係る通信を行うためのものである。
【００５１】
図２のノードＢ２００は、プログラム起動／終了定義テーブル２１１１、プログラム起動・管理手段２２１、通信制御手段２２２、通信手段２２３の各機能構成を有して構成されている。
【００５２】
例えば、図１のＣＰＵ２０１、ＲＯＭ２０２に記憶された処理プログラム２０２１及びパラメータ２０２２、ＲＡＭ２０３、外部記憶インターフェース２０６並びにネットワークインターフェース２０７から、図２のプログラム起動・管理手段２２１が構成される。また、例えば、図１のＣＰＵ２０１、ＲＯＭ２０２に記憶された処理プログラム２０２１及びパラメータ２０２２並びにネットワークインターフェース２０７から、図２の通信制御手段２２２が構成される。また、例えば、図１のバス２０８から、図２の通信手段２２３が構成される。
【００５３】
図２のノードＢ２００の内部の各構成（２１１１、２２１〜２２３）は、対応するノードＡ１００の内部の各構成（１１１１、１２１、１２４、１２５）と同等の働きを行うものであるため、各構成の詳細な説明は省略する。
【００５４】
プログラム起動・管理手段２２１は、ノードＢ２００内のプログラム（２２２１〜２２２３）の管理を行うが、その管理情報は、通信手段４０１を介して、ノードＡ１００のノード状態管理手段１２３に伝えられ、各ノードの状態履歴テーブル１２２に格納される。ここで、管理情報としては、プログラム名、起動パラメータ、プロセスＩＤ、プロセスの固有状態など、図４に示すプログラム状態管理テーブルの内容を含む。同様に、ノードＡ１００に存在するプログラム起動・管理手段１２１も、通信手段４０１を介して、ノード状態管理手段１２３に管理情報を伝える。
【００５５】
このように、情報通信システム１０は、マスターノード１００とスレーブノード２００からなる複数のノードの各ノードに複数のプログラムが備えられ、当該複数のプログラムが当該複数のノードの間で連携して動作するシステムである。
【００５６】
また、本実施形態では、上述したように、ノードＢ２００が制御対象ハードウェア３００を制御するように構成されている。そして、ノードＢ２００は、ノードＢ２００上で動作するアプリケーション・プログラム（Ｂ１、Ｂ２及びＢ３）が、不図示のＩ／Ｏを通じて、アーム３２１やステージ３２２、チャンバー３２３などの制御対象ハードウェア３００を制御する。
【００５７】
図６は、本発明の第１の実施形態に係る情報通信システム１０のマスターノードにおけるシステム起動処理の処理手順の一例を示すフローチャートである。即ち、この図６のフローチャートの処理は、ノード状態管理手段１２３を有するノードＡ１００（マスターノード）における処理手順の一例を示したものである。そして、マスターノードであるノードＡ１００を除く他ノードのノードＢ２００は、上述したように、スレーブノードである。なお、情報通信システム１０の起動手順として、オペレーティング・システムやデバイスドライバ、デーモンプログラム等は予め起動が完了しているものとする。
【００５８】
まず、図６のステップＳ６０１において、プログラム起動・管理手段１２１は、プログラム起動／終了定義テーブル１１１１の情報を読み込む。
【００５９】
続いて、ステップＳ６０２において、例えばプログラム起動・管理手段１２１は、プログラム起動／終了定義テーブル１１１１に定義された全てのプログラムを起動したか否かの判断を行う。
ステップＳ６０２の判断の結果、全てのプログラムについては未だ起動していない場合には、ステップＳ６０３に進む。
【００６０】
ステップＳ６０３に進むと、プログラム起動・管理手段１２１は、プログラム起動／終了定義テーブル１１１１に記された順序、起動パラメータに従って、未起動のプログラムを順次起動する処理を行う。その後、ステップＳ６０２に戻る。なお、プログラム起動・管理手段１２１は、プログラム間の起動待ち合わせなどの手段を含む場合もあるが、本発明には直接的な関連が無いため、説明を省略する。
【００６１】
一方、ステップＳ６０２の判断の結果、プログラム起動／終了定義テーブル１１１１に定義された全てのプログラムを起動した場合には、ステップＳ６０４に進む。
【００６２】
ステップＳ６０４に進むと、例えばノード状態管理手段１２３は、マスターノードであるノードＡ１００のノード状態を「起動完了」とする。なお、ノード状態は、各ノードが持つ固有な状態であり、当該ノード上で起動されるプログラムの動作状態によって定義される。また、システム状態は、情報通信システム１０に所属する複数ノードの各ノードにおけるノード状態により決定される。
【００６３】
続いて、ステップＳ６０５において、マスターノードであるノードＡ１００（例えばノード状態管理手段１２３）は、他のスレーブノード（ノードＢ２００等）から接続要求があったか否かを判断する。
ステップＳ６０５の判断の結果、他のスレーブノードから接続要求がなかった場合には、当該接続要求があるまで、ステップＳ６０５で待機する。
【００６４】
一方、ステップＳ６０５の判断の結果、他のスレーブノードから接続要求があった場合には、ステップＳ６０６に進む。
【００６５】
ステップＳ６０６に進むと、マスターノードであるノードＡ１００（例えばノード状態管理手段１２３）は、接続要求があったスレーブノードとの接続処理を行う。このステップＳ６０６におけるスレーブノード接続処理の詳細については、図７を用いて後述する。
【００６６】
続いて、ステップＳ６０７において、マスターノードであるノードＡ１００（例えばノード状態管理手段１２３）は、情報通信システム１０で予め決められた全てのノードが接続し起動したか否かの判断を行う。
ステップＳ６０７の判断の結果、全てのノードについては未だ接続し起動していない場合（未だ接続し起動していないノードがある場合）には、ステップＳ６０５に戻る。
【００６７】
一方、ステップＳ６０７の判断の結果、全てのノードについて接続し起動している場合には、ステップＳ６０８に進む。
ステップＳ６０８に進むと、ノード状態管理手段１２３は、ノードの状態の組合せから、システム状態を「起動完了」とし、これをシステム状態テーブル１２３１に設定する。その後、図６に示すフローチャートの処理を終了する。
【００６８】
図７は、図６のステップＳ６０６におけるスレーブノード接続処理の詳細な処理手順の一例を示すフローチャートである。
【００６９】
まず、図７のステップＳ７０１において、例えばノード状態管理手段１２３は、接続要求のあったノード（図７では「ＮｅｗＮｏｄｅ」として表記）のノード名を取得する処理を行う。なお、図７では、接続要求のあったノード（ＮｅｗＮｏｄｅ）からの通信手段を介したノード名の送信手順は省略している。
【００７０】
続いて、ステップＳ７０２において、ノード状態管理手段１２３は、ステップＳ７０１で取得したノード名（ＮｅｗＮｏｄｅ）が接続済みリストに既に存在するかの検索を行う。
【００７１】
続いて、ステップＳ７０３において、ノード状態管理手段１２３は、接続要求のあったノード（ＮｅｗＮｏｄｅ）のノード情報が接続済みリストに存在するか否かを判断する。
このステップＳ７０３の判断の結果、接続要求のあったノード（ＮｅｗＮｏｄｅ）のノード情報が接続済みリストに存在しない場合には、ステップＳ７０４に進む。
【００７２】
ステップＳ７０４に進むと、マスターノードであるノードＡ１００（例えばノード状態管理手段１２３）は、初めての接続（一連のシステム動作における初回起動）であると判断する。そして、マスターノードであるノードＡ１００（例えばノード状態管理手段１２３）は、接続要求のあったノード（ＮｅｗＮｏｄｅ）に対して、「初回接続」を示すメッセージを返却する。この際、例えばノード状態管理手段１２３は、通信ミドルウェア１２４４に、スレーブノードであるＮｅｗＮｏｄｅ（図２の示す例ではノードＢ２００）との通信路４０２の生成を行わせる。
【００７３】
続いて、ステップＳ７０５において、マスターノードであるノードＡ１００（例えばノード状態管理手段１２３）は、ＮｅｗＮｏｄｅの「ノード状態」を取得する処理を行う。このステップＳ７０５の処理には、ＮｅｗＮｏｄｅに対するノード状態取得コマンドの送信やそのノード状態の結果の受信等の処理が含まれる。
【００７４】
続いて、ステップＳ７０６において、ノード状態管理手段１２３は、ステップＳ７０５で取得したＮｅｗＮｏｄｅのノード状態の情報を各ノードの状態履歴テーブル１２２に格納して各ノード状態を更新する処理を行う。
【００７５】
続いて、ステップＳ７０７において、ノード状態管理手段１２３は、更新されたノード状態に基づいて、システム状態を再計算して設定し、これをシステム状態テーブル１２３１に格納してシステム状態を更新する処理を行う。その後、図７のフローチャートの処理が終了する。
【００７６】
また、ステップＳ７０３の判断の結果、接続要求のあったノード（ＮｅｗＮｏｄｅ）の情報が接続済みリストに存在した場合には、当該ＮｅｗＮｏｄｅが以前接続状態にあり、かつ正常な終了手順を踏まなかった（＝不正終了）と認識して、ステップＳ７０８に進む。
【００７７】
ステップＳ７０８に進むと、マスターノードであるノードＡ１００（例えばノード状態管理手段１２３）は、接続要求のあったノード（ＮｅｗＮｏｄｅ）に対して、「再接続」を示すメッセージを返却する。
【００７８】
続いて、ステップＳ７０９において、例えばノード状態管理手段１２３は、未だに残されているＮｅｗＮｏｄｅへの通信路が無効であると判断し、それらの通信路を削除する指示を各アプリケーション・プログラム（１２４１〜１２４３）に通知する処理を行う。その後、通信制御手段１２４の各アプリケーション・プログラム（１２４１〜１２４３）は、通信制御手段１２４の通信ミドルウェア１２４４に対して通信路４０２の削除（ｃｌｏｓｅ）を指示する。そして、通信制御手段１２４の通信ミドルウェア１２４４は、スレーブノードであるＮｅｗＮｏｄｅ（図２の示す例ではノードＢ２００）との通信路４０２の削除（ｃｌｏｓｅ）を行う。
【００７９】
続いて、ステップＳ７１０において、マスターノードであるノードＡ１００（例えばノード状態管理手段１２３）は、再接続されたＮｅｗＮｏｄｅ（例えばプログラム起動・管理手段２２１）に対して、前回接続していた時のノード状態を送信する。
【００８０】
続いて、ステップＳ７１１において、マスターノードであるノードＡ１００（例えばノード状態管理手段１２３）は、当該ＮｅｗＮｏｄｅに関する前回接続時の古い管理情報を各ノードの状態履歴テーブル１２２から破棄して、各ノード状態を更新する処理を行う。その後、上述したステップＳ７０５へと進み、ステップＳ７０５以降の処理が行われる。
【００８１】
図８は、本発明の第１の実施形態に係る情報通信システム１０のスレーブノードにおけるノード起動処理の処理手順の一例を示すフローチャートである。即ち、この図８のフローチャートの処理は、ノードＢ２００（スレーブノード）における処理手順の一例を示したものである。
【００８２】
まず、ステップＳ８０１において、スレーブノードであるノードＢ２００は、マスターノードであるノードＡ１００に対して最初の接続要求メッセージを送信し、その返信を待つ。
【００８３】
その後、マスターノードであるノードＡ１００から接続要求メッセージに対する返信を受信すると、ステップＳ８０２において、スレーブノードであるノードＢ２００は、当該返信が「初回起動」であったか否かを判断する。
ステップＳ８０２の判断の結果、接続要求メッセージに対する返信が「初回起動」であった場合には、ステップＳ８０３に進む。
【００８４】
ステップＳ８０３に進むと、例えばプログラム起動・管理手段２２１は、通常起動用（デフォルト）のプログラム起動・終了定義テーブル２１１１の情報を読み込む。
【００８５】
そして、ステップＳ８０３の処理が終了すると、ステップＳ８０８に進む。
ステップＳ８０８に進むと、プログラム起動・管理手段２２１は、プログラム起動／終了定義テーブル２１１１に定義された全てのプログラムを起動したか否かの判断を行う。
【００８６】
ステップＳ８０８の判断の結果、全てのプログラムについては未だ起動していない場合には、ステップＳ８０９に進む。
【００８７】
ステップＳ８０９に進むと、プログラム起動・管理手段２２１は、プログラム起動／終了定義テーブル２１１１に記された順序、起動パラメータに従って、未起動のプログラムを順次起動する処理を行う。その後、ステップＳ８０８に戻る。なお、プログラム起動・管理手段２２１は、プログラム間の起動待ち合わせなどの手段を含む場合もあるが、本発明には直接的な関連が無いため、説明を省略する。
【００８８】
一方、ステップＳ８０８の判断の結果、プログラム起動／終了定義テーブル２１１１に定義された全てのプログラムを起動した場合には、ステップＳ８１０に進む。
ステップＳ８１０に進むと、例えばプログラム起動・管理手段２２１は、スレーブノードであるノードＢ２００のノード状態を「起動完了」とする。
【００８９】
その後、マスターノードであるノードＡ１００からノード状態の問合せを受けると、ステップＳ８１１において、例えばプログラム起動・管理手段２２１は、現在のノード状態をノードＡ１００（ノード状態管理手段１２３）に通知する。その後、図８のフローチャートの処理が終了する。
【００９０】
また、ステップＳ８０２の判断の結果、接続要求メッセージに対する返信が「初回起動」でなかった場合には、ステップＳ８０４に進む。
【００９１】
ステップＳ８０４に進むと、スレーブノードであるノードＢ２００は、接続要求メッセージに対する返信が「再接続（２回目以降の再起動）」であったか否かを判断する。
ステップＳ８０４の判断の結果、接続要求メッセージに対する返信が「再接続」でなかった場合には、エラーであると判断して、図８のフローチャートの処理を終了する。
【００９２】
ステップＳ８０４の判断の結果、接続要求メッセージに対する返信が「再接続」であった場合には、ステップＳ８０５に進む。
ステップＳ８０５に進むと、スレーブノードであるノードＢ２００（例えばプログラム起動・管理手段２２１）は、マスターノードであるノードＡ（例えばノード状態管理手段１２３）から現在のシステム状態を取得する処理を行う。
【００９３】
続いて、ステップＳ８０６において、例えばプログラム起動・管理手段２２１は、ステップＳ８０５で取得したシステム状態から、予め用意された、そのシステム状態に対応した再起動用のプログラム起動／終了定義に係る情報を選択する。
【００９４】
続いて、ステップＳ８０７において、プログラム起動・管理手段２２１は、ステップＳ８０６で選択された情報に基づいて、再起動用のプログラム起動／終了定義テーブル２１１１の情報を読み込む。その後、上述したステップＳ８０８へと進み、ステップＳ８０８以降の処理が行われる。
【００９５】
なお、本実施形態においては、上述した例に加えて以下の処理を追加する態様を含めることができる。
【００９６】
具体的には、マスターノードであるノードＡ１００のノード状態管理手段１２３において各ノードごとに再起動の回数を記録し、図７のステップＳ７１０におけるシステム状態（ノード状態）の送信の際に、付加情報として当該再起動回数を送信する。そして、図８のステップＳ８０５において、スレーブノードでは、マスターノードから、再起動回数の情報が付加されたシステム状態を受信し、続くステップＳ８０６において、システム状態に基づき使用するプログラム起動／終了定義に係る情報を選択する。この際、スレーブノードでは、システム状態に付加された再起動回数を加味して、選択するプログラム起動／終了定義に係る情報を切り替えることができる。
【００９７】
例えば、何らかの不具合により、スレーブノードが再起動を繰り返すような状況において既に所定回数の再起動が行なわれた場合には、それ以降の再起動では、通常のプログラムを起動せず、保守用のプログラムを起動するように切り替えることが可能となる。なお、上述した方法では再起動回数のみを加味するものを示しているが、この場合は、異常状態での再起動か、或いは、正常状態で意図した再起動が繰り返されているのかの判断がつかない。このような場合には、例えば、当該スレーブノードのノード状態が「起動完了」となった時点で起動回数をリセットするなどの処理を追加することにより、判断が可能となる。
【００９８】
（第２の実施形態）
次に、本発明の第２の実施形態について説明する。
【００９９】
ここで、第２の実施形態に係る情報通信システムのシステム構成については、図１に示す第１の実施形態に係る情報通信システム１０のシステム構成と同様の構成を採ることができる。また、第１の実施形態に係る情報通信システムの機能構成については、図２に示す第１の実施形態に係る情報通信システム１０の機能構成と同様の構成を採ることができる。
【０１００】
図９は、本発明の第２の実施形態を示し、図２に示すプログラム起動・管理手段によって起動されるプログラムの動作処理の一例を示すフローチャートである。特に、図９の処理は、プログラムが自ら定義する状態が変化したことを、マスターノード（ノードＡ１００）のノード状態管理手段１２３に通知する処理手順及びプログラム起動・管理手段から状態の変更依頼が来た場合の処理手順を抜き出したものである。
【０１０１】
ここで、プログラムの状態とは、初期化中、準備完了、待ち、停止処理中などの状態のみならず、例えば、ロボットアーム初期駆動完了、チャンバー温調完了など、プログラムが制御する機能の実行状態によって、プログラム自身で定義可能な様々な状態を含む。なお、プログラム本来の処理は、本実施形態の説明と直接関連ないため、ここでは省略する。
【０１０２】
ステップＳ９０１において、図９の処理を行うノードは、プログラムが自らもしくはプログラム起動・管理手段からの依頼により、プログラムを終了するか否かを判断する。
【０１０３】
ステップＳ９０１の判断の結果、プログラムを終了する場合には、図９に示すフローチャートの処理を終了する。
【０１０４】
一方、ステップＳ９０１の判断の結果、プログラムを終了しない場合には、ステップＳ９０２に進む。
ステップＳ９０２に進むと、図９の処理を行うノードは、プログラムが定義する固有の状態を調べて、その状態が変化したか否かを判断する。
【０１０５】
ステップＳ９０２の判断の結果、プログラムの状態が変化した場合には、ステップＳ９０３に進む。
ステップＳ９０３に進むと、図９の処理を行うノードは、ノード状態管理手段１２３に変化後のプログラムの状態を通知する処理を行う。その後、ステップＳ９０１に戻り、ステップＳ９０１以降の処理を行う。
【０１０６】
一方、ステップＳ９０２の判断の結果、プログラムの状態が変化していない場合には、ステップＳ９０４に進む。
ステップＳ９０４に進むと、例えばノード状態管理手段１２３は、プログラム起動・管理手段から状態変更依頼が来たか否かを判断する。
【０１０７】
ステップＳ９０４の判断の結果、状態変更依頼が来ていない場合には、ステップＳ９０１に戻り、ステップＳ９０１以降の処理を行う。
【０１０８】
一方、ステップＳ９０４の判断の結果、状態変更依頼が来た場合には、ステップＳ９０５に進む。
ステップＳ９０５に進むと、例えばノード状態管理手段１２３は、ステップＳ９０４における状態変更依頼の内容が通信路無効化要求であるか否かを判断する。
【０１０９】
ステップＳ９０５の判断の結果、ステップＳ９０４における状態変更依頼の内容が通信路無効化要求である場合には、ステップＳ９０６に進む。
ステップＳ９０６に進むと、例えばノード状態管理手段１２３は、通信ミドルウェアに対して、指定された（無効とする）ノードに関する全ての通信路４０２の削除及び関連するリソースの開放を指示する。
【０１１０】
ステップＳ９０６の処理が終了した場合、或いは、ステップＳ９０５において状態変更依頼の内容が通信路無効化要求でないと判断された場合には、ステップＳ９０７に進む。
ステップＳ９０７に進むと、図９の処理を行うノードは、アプリケーションの固有状態を変更するとともに、変更に伴って行うべき処理を実行する。その後、ステップＳ９０１に戻り、ステップＳ９０１以降の処理を行う。
【０１１１】
この図９に示すように、各ノード上で動作する各プログラムは、その状態が変更するごとにその旨の通知を行うことにより、ノード状態管理手段１２３は、情報通信システム１０に存在するプログラムの個々の状態を常に監視することができる。例えば、あるノードが異常状態となり、シャットダウン処理を経ずにＣＰＵがリセットされた場合には、リセット直前にそのノードで動作していた各プログラムの状態の履歴がマスターノードであるノードＡにおいて保存されていることになる。
【０１１２】
図１０は、本発明の第２の実施形態に係る情報通信システム１０のスレーブノードにおけるノード起動処理の処理手順の一例を示すフローチャートである。即ち、この図１０のフローチャートの処理は、ノードＢ２００（スレーブノード）における処理手順の一例を示したものである。
【０１１３】
この図１０に示すスレーブノードのノード起動処理は、図８に示す処理と類似するものであるが、各プログラムの起動時に、当該ノードの再起動の直前の状態を、当該プログラムの起動パラメータ（例えば起動時の引数）に反映する点が異なる。
【０１１４】
まず、ステップＳ１００１において、スレーブノードであるノードＢ２００は、マスターノードであるノードＡ１００に対して最初の接続要求メッセージを送信し、その返信を待つ。
【０１１５】
その後、マスターノードであるノードＡ１００から接続要求メッセージに対する返信を受信すると、ステップＳ１００２において、スレーブノードであるノードＢ２００は、当該返信が「初回起動」であったか否かを判断する。
ステップＳ１００２の判断の結果、接続要求メッセージに対する返信が「初回起動」であった場合には、ステップＳ１００３に進む。
【０１１６】
ステップＳ１００３に進むと、例えばプログラム起動・管理手段２２１は、通常起動用（デフォルト）のプログラム起動・終了定義テーブル２１１１の情報を読み込む。
【０１１７】
そして、ステップＳ１００３の処理が終了すると、ステップＳ１００８に進む。
ステップＳ１００８に進むと、プログラム起動・管理手段２２１は、プログラム起動／終了定義テーブル２１１１に定義された全てのプログラムを起動したか否かの判断を行う。
【０１１８】
ステップＳ１００８の判断の結果、全てのプログラムについては未だ起動していない場合には、ステップＳ１００９に進む。
【０１１９】
ステップＳ１００９に進むと、プログラム起動・管理手段２２１は、プログラム起動／終了定義テーブル２１１１に記された順序、起動パラメータに従って、未起動のプログラムを順次起動する処理を行う。その後、ステップＳ１００８に戻る。
【０１２０】
一方、ステップＳ１００８の判断の結果、プログラム起動／終了定義テーブル２１１１に定義された全てのプログラムを起動した場合には、ステップＳ１０１０に進む。
ステップＳ１０１０に進むと、例えばプログラム起動・管理手段２２１は、スレーブノードであるノードＢ２００のノード状態を「起動完了」とする。
【０１２１】
その後、マスターノードであるノードＡ１００からノード状態の問合せを受けると、ステップＳ１０１１において、例えばプログラム起動・管理手段２２１は、現在のノード状態をノードＡ１００（ノード状態管理手段１２３）に通知する。その後、図１０のフローチャートの処理が終了する。
【０１２２】
また、ステップＳ１００２の判断の結果、接続要求メッセージに対する返信が「初回起動」でなかった場合には、ステップＳ１００４に進む。
【０１２３】
ステップＳ１００４に進むと、スレーブノードであるノードＢ２００は、接続要求メッセージに対する返信が「再接続」であったか否かを判断する。
ステップＳ１００４の判断の結果、接続要求メッセージに対する返信が「再接続」でなかった場合には、エラーであると判断して、図１０のフローチャートの処理を終了する。
【０１２４】
ステップＳ１００４の判断の結果、接続要求メッセージに対する返信が「再接続」であった場合には、ステップＳ１００５に進む。
ステップＳ１００５に進むと、スレーブノードであるノードＢ２００（例えばプログラム起動・管理手段２２１）は、当該ノードの再起動用のプログラム起動／終了定義テーブル２１１１の情報を読み込む。
【０１２５】
続いて、ステップＳ１００６において、スレーブノードであるノードＢ２００（例えばプログラム起動・管理手段２２１）は、マスターノードであるノードＡ１００（例えばノード状態管理手段１２３）に対して、ステップＳ１００５で読み込んだプログラム起動／終了定義テーブル２１１１の情報に記載されている各プログラムの、再起動直前の状態を問い合わせる。ここでは、例えば、ノードＢ２００における再起動直前の起動の終了時点（不正もしくは正常に終了した時点）における当該各プログラムの状態履歴を問い合わせる。そして、ノードＢ２００は、ノードＡ１００から、当該問合せに係る各プログラムの状態履歴情報を取得する。
【０１２６】
続いて、ステップＳ１００７において、ノードＢ２００（例えばプログラム起動・管理手段２２１）は、ステップＳ１００５で読み込んだ情報と、ステップＳ１００６で取得したプログラムの状態履歴情報から、当該プログラムの起動パラメータを決定する。そして、スレーブノードであるノードＢ２００（例えばプログラム起動・管理手段２２１）は、当該決定した起動パラメータに、ステップＳ１００６で取得したプログラムの状態履歴情報を反映する処理を行う。ここでは、例えば、プログラムの引数に、当該プログラムの状態を表す値を付加するなどの方法が考えられる。なお、起動パラメータの与え方（反映の仕方）は、この方法に限らず、ファイルや共有メモリを参照する方法などが考えられる。
【０１２７】
その後、上述したステップＳ１００８へと進み、ステップＳ１００８以降の処理が行われる。
【０１２８】
本実施形態では、図９に示すプログラムの状態を常にマスターノードに反映させる方法と、図１０に示す再起動の直前の各プログラムの状態をそれぞれ起動時に与えることにより、以下の作用・効果を奏する。
即ち、各プログラムでは、自身が制御を行う対象の初期化の省略やリカバリー処理など、再起動時の振る舞いを適切に決定することが可能となる。
【０１２９】
なお、第１及び第２の実施形態において、マスターノードとスレーブノードが常に固定的である必要は無く、例えばそれぞれのノードにノード状態管理手段を配置して、互いに情報を伝達・共有し、どのノードの再起動にも対応できる形態も適用可能である。
【０１３０】
以上、第１及び第２の実施形態の情報通信システム１０によれば、複数のプログラムが複数のノードの間で連携して動作する情報通信システムにおいて、各ノードの状態を考慮した適正なシステム動作を実現することができる。
【０１３１】
また、プログラム起動・管理手段において、当該ノード（スレーブノード）が再起動である場合に、システム状態に応じて、使用するプログラム起動／終了定義テーブルの情報を切り替えるようにしたので、高速な起動を実現することが可能となる。
【０１３２】
また、スレーブノードでは、再起動の直前の起動の終了時点における各プログラムの状態履歴を、ノード状態管理手段１２３から取得して当該各プログラムの再起動時に反映させるようにしたので、プログラムごとに再起動手順をカスタマイズすることができる。
【０１３３】
また、各ノードのプログラム起動・管理手段では、再起動回数に応じて当該ノードで起動するプログラムの起動順序もしくは起動パラメータを変更するようにしたので、不正な再起動を繰り返す不具合を回避することができる。
【０１３４】
また、障害発生後のスレーブノードの再起動時において、通信路の再構築や、古いデータの掃除等を行うことができるため、システム復旧が可能となる。また、プログラムの起動順序や起動パラメータ等を変更することにより、再起動時に省略することができるハードウェアの初期化や待ち合わせ等のシーケンスを変更することができ、再起動を最適化することが可能となる。また、再起動によってもシステムの状態が改善せず、再び不正終了し、再起動を繰り返すような障害を回避することも可能となる。
【０１３５】
（その他の実施形態）
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア（プログラム）を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ（またはＣＰＵやＭＰＵ等）がプログラムを読み出して実行する処理である。
【符号の説明】
【０１３６】
１０：情報通信システム、１００：ノードＡ（マスターノード）、１２１：プログラム起動・管理手段、１２２：各ノードの状態履歴テーブル、１２３：ノード状態管理手段、１２４：通信制御手段、１２５：通信手段、１１１１：プログラム起動／終了定義テーブル、１２４１〜１２４３：プログラム、１２４４：通信ミドルウェア、２００：ノードＢ（スレーブノード）、２２１：プログラム起動・管理手段、２２２：通信制御手段、２２３：通信手段、２１１１：プログラム起動／終了定義テーブル、３００：制御対象ハードウェア
【図１】
2011018223.tif 000003
【図２】
2011018223.tif 000004
【図３】
2011018223.tif 000005
【図４】
2011018223.tif 000006
【図５】
2011018223.tif 000007
【図６】
2011018223.tif 000008
【図７】
2011018223.tif 000009
【図８】
2011018223.tif 000010
【図９】
2011018223.tif 000011
【図１０】
2011018223.tif 000012