(57)【特許請求の範囲】
【請求項１】
最上位の階層にありソフトウェアの送付元マシンとなる管理マシンと、上位階層からのソフトウェアの配布を受ける時に配布先マシンとなり下位階層のマシンにソフトウェアを配布する時に送付元マシンとなる中間階層マシンと、上位階層からソフトウェアの配布を受ける配送先マシンとなる最下位階層マシンとを含み、階層別に振り分けた複数のマシンに対してソフトウェアを配布する階層型ソフトウェア自動配布システムにおいて、
管理マシンは、それぞれ自己の下位のマシンであって配布先マシンとなるマシンについての配布先経路情報と、配布が失敗したときに代わりに配布することができるマシンついての代替マシン情報を含む代替マシンリストを有しており、
中間階層マシンは、それぞれ自己の下位のマシンであって配布先マシンとなるマシンについての配布先経路情報と、配布が失敗したときに代わりに配布することができるマシンついての代替マシン情報を含む代替マシンリストを、上層のマシンから受け取ることにより有しており、
管理マシンおよび中間階層マシンは、
配布先マシンへのソフトウェア配布が失敗した時に、
その配布が失敗した配布先マシンが最終配布先マシンかを判定し、最終配布先マシンであった場合には、当該マシンを前記管理マシンの再配布先マシンリストに追加し、
この追加を行った場合および配布が失敗したマシンが最終配布先であった場合に、その配布が失敗した配布先マシンが他の最終配布先マシンの経路かを判定し、他の最終配布先の経路であった場合には代替マシンリストから代替マシンを取り出し、取り出された代替マシンを配布先マシンとして、ソフトウェアの配布を行い、
前記管理マシンは、
配布先マシンへのソフトウェア配布が失敗した時に、
再配布先リストに記載されている最終配布先であるマシンに対し、一定時間たった後にソフトウェアを再送することを特徴とするソフトウェア自動配布システム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
この発明は、階層別に振り分けた複数のマシンに対してソフトウェアを配布する階層型ソフトウェア自動配布システム、特に何らかの原因で中間階層のマシンへのソフトウェア配布が失敗した場合でも、その階層以下のマシンへのソフトウェア配布を継続できるシステムに関する。
【０００２】
【従来の技術】
従来より、複数のマシンを何段階かの階層に振り分けて、ソフトウェアを１台のマシンから配布する階層型ソフトウェア自動配布システムがある。このソフトウェア自動配布システムにおいて、何らかの原因で中間階層のマシンへのソフトウェアの配布に失敗する場合がある。この場合、障害が発生した中間階層のマシンについて人手作業により回復させてから再度ソフトウェア配布を実施するか、あるいは障害が発生したマシンをさけるように人手作業により配布経路を変更してから再度ソフトウェア配布を実施していた。
【０００３】
【発明が解決しようとする課題】
しかし、上記従来のシステムでは、人手による作業や監視が必要であり、ソフトウェアの配布を効率よく行うことができなかった。
【０００４】
すなわち、いくつかのマシンを仲介する階層型ソフトウェア自動配布システムにおいて、何らかの原因で中間階層のマシンへのソフトウェア配布が失敗した場合において、配布経路を自動的に変更し、配布処理を自動的に継続することが望まれている。
【０００５】
そこで、本出願には、特願平１０−１２８６４３号において、中間マシンに対してソフトウェアの配布が失敗した場合に、障害が発生したマシンの代わりとなる「代替マシン」によって配布経路を自動的に変更し、配布処理を自動的に継続することについて提案した。
【０００６】
しかし、この先に提案の方法では、以下のような問題点があった。
【０００７】
（ｉ） すべての「代替マシン」に対してソフトウェア配布が失敗し、「代替マシン」の選択において無限ループが発生することがある。
【０００８】
（ｉｉ） 障害が発生したマシンが最終配布先であった場合、それに対する再送手段がない。
【０００９】
本発明は、このような課題を解決するためになされたもので、「代替マシン」の選択において無限ループの発生に対応し、また「障害マシン」が最終配布先であった場合、再送することができるソフトウェア自動配布システムを提供することを目的とする。
【００１０】
【課題を解決するための手段】
この発明に係るソフトウェア自動配布システムは、次のような特徴を有するものである。
【００１３】
本発明は、ソフトウェアの配布が失敗した「障害マシン」が最終配布先であった場合にはその最終配布先のマシンに対して再送する。従って、配布先へのソフトウェアの配布を完了することができる。
【００１５】
【発明の実施の形態】
以下、本発明の実施の形態を図面を参照して説明する。
【００１６】
実施の形態１．
まず最初に、本発明の実施の形態を説明するために関連する用語について定義する。
【００１７】
（イ）階層配布
図１に、本発明に係る階層別に振り分けた複数のマシンに対してソフトウェアを配布する階層型ソフトウェア自動配布システムの例を示す。この図１に示すようなシステムにおけるソフトウェアの配布が階層配布である。この例では、階層０にマシン１があり、以下階層１にマシン２，３、階層２にマシン４，５，６，７，８、階層３にマシン９，１０が割り付けられている。そして、マシン１は、マシン２，３にソフトウェアを配布し、マシン２は、マシン４，５，６にソフトウェアを配布し、マシン３はマシン７，８にソフトウェアを配布し、マシン５はマシン９，１０にソフトウェアを配布する。
【００１８】
階層配布は、ソフトウェアを複数のマシンに配布する場合に、１台のマシンからすべてのマシンに直接ソフトウェアを配布するのではなく、図に示すように何段階かマシンを経由してソフトウェアを配布する方法をいう。階層配布は、何段階か階層別に振り分けた複数のマシンに対しソフトウェアを配布する方法であるが、末端の階層のマシンのみにソフトウェアを配布してもよいし、配布経路上のマシンすべてにソフトウェアを配布してもよい。要は、配布経路上のいずれかのマシンにソフトウェアを配布する構成であればよい。また、階層配布は、何段階か階層別に振り分けた１つのマシンに対してソフトウェアを配布するように構成してもよい。
【００１９】
（ロ）管理マシン
管理マシンは、階層配布を管理する最上階層のマシンをいう。図１の例ではマシン１が管理マシンである。
【００２０】
（ハ）経路情報マスタ
図２に、経路情報マスタを示す。経路情報マスタは、管理マシンのみで定義されている配布システム全体の経路情報を記憶したマスタである。図１の例では管理マシンであるマシン１の経路情報マスタである。
【００２１】
例えば、図２の場合、ソフトウェアの配布先がマシン１０の場合、配布経路は、マシン１→マシン２→マシン５→マシン１０となり、マシン１からマシン２、マシン５を経由してマシン１０にソフトウェアが配布される。
【００２２】
（ニ）配布先経路情報
配布先経路情報は、あるマシンに着目した際、当該マシンを最上階層とした階層配布の経路情報をいう。ただし、当該マシン及び配布対象外のマシンのレコードは含まない。この情報は管理マシンで定義され、ソフトウェアと同時に配布される。また、配布後に配布先のマシンで不必要なレコードが削除される。
【００２３】
さらに、ソフトウェアが正常に配布できない障害が発生した場合は、後述する代替マシンリストに従って情報が修正される。
【００２４】
例えば、図１のような階層の場合であって、ソフトウェアをマシン４、マシン５、マシン９に配布する場合、マシン１での配布先経路情報は、図３（Ａ）に示すようになる。例えば、配布先をマシン９とし、最上階層をマシン１としたときの配布先経路は、マシン１→マシン２→マシン５→マシン９となる。
【００２５】
また、ソフトウェアをマシン４、マシン５、マシン９に配布する場合、マシン２を最上階層としたときの配布先経路情報は、図３（Ｂ）に示すようになり、例えば配布先をマシン９とし、最上階層をマシン２としたときの配布先経路情報は、マシン２→マシン５→マシン９となる。また、ソフトウェアをマシン４、マシン５、マシン９に配布する場合、マシン５を最上階層としたときの配布先経路情報は、図３（Ｃ）に示すように、マシン５→マシン９となる。なお、このとき、最上階層としたマシン１、マシン２、マシン５以外のマシンでは、配布先経路情報は作成されない。
【００２６】
（ホ）最終配布先
最終配布先は、ソフトウェア配布のターゲットとなるソフトウェアが最終的に配布されるマシンをいう。
【００２７】
（ヘ）配布先リスト
配布先リストは、ソフトウェアを配布する最終配布先のリストをいう。このリストは、管理マシン（マシン１）のみで使用される。すなわち、マシン１上で経路情報マスタから配布先経路情報を作成する場合にのみ使用される。一般的には、「マシン１，マシン２，・・・，マシンＮ」というように、ソフトウェアが配布される配布先のマシン名が順次記述される。例えば、ソフトウェアをマシン４、マシン５、マシン９に配布する場合、配布先リストは、「マシン４，マシン５，マシン９」がマシン名として記述される。
【００２８】
（ト）中間配布先リスト
中間配布先リストは、あるマシンに着目した際、最終配布先にソフトウェアを配布するために、当該マシンから直接ソフトウェアを配布するマシンのリストをいう。この中間配布先リストは、着目したマシンにおいて、配布先経路情報の階層１のマシンを取り出して作成される。一般的には、「マシン１，マシン２，・・・，マシンＮ」というように、注目したマシンから直接ソフトウェア配布するマシン名が記述される。
【００２９】
例えば、ソフトウェアをマシン４、マシン５、マシン９に配布する場合、マシン１での中間配布先リストには、マシン２が記載される。また、マシン２での中間配布先リストには、「マシン４，マシン５」がマシン名として記述される。さらに、マシン５での中間配布先リストには、「マシン９」がマシン名として記述される。それ以外のマシンでは中間配布先リストは作成されない。管理マシンは、経路情報マスタを元にソフトウェアを配布するが、ソフトウェアが配布されたマシンは、この中間配布先リストを基に次の階層のマシンへソフトウェアを配布する。
【００３０】
（チ）代替マシンリスト
代替マシンリストは、中間配布先のマシンあるいはネットワークに何らかの障害が発生し、ソフトウェアが配布できない場合、その階層以下にソフトウェアを配布するための代替マシンを指定するための情報を記憶するリストをいう。管理マシン以外すべてのマシンに代替マシンが定義されていることを前提とする。例えば、各マシンについて代替マシンが記述される。
【００３１】
（リ）完了配布先リスト
完了配布先リストは、ソフトウェアを正常に配布できた最終配布先のリストである。この完了配布先リストは、管理マシンのみで使用される。一般的には、「マシン１，マシン２，・・・，マシンＮ」というように、配布が完了したマシン名を記述した構造になっている。
【００３２】
（ヌ）再送配布先リスト
再送配布先リストは、障害のため、ソフトウェアを正常に配布できなかった最終配布先についてのリストをいう。この再送配布先リストは、管理マシンのみで使用される。一般的には、「マシン１，マシン２，・・・，マシンＮ」というように、配布できなかったマシン名を記述した構造になっている。
【００３３】
ここで、以下に、図１の構成におけるソフトウェア配布動作の一例を説明する。この例では、管理マシンであるマシン１がソフトウェアをマシン４，マシン５，マシン９に配布しようとする。ソフトウェアをマシン２に配布しようとしたが、マシン２へのソフトウェア配布に失敗したため、代替マシンリストから代替マシンとしてマシン３を選択した。次に、マシン３への配布も失敗し、マシン３の代替マシンとして、マシン２を選択した。しかし、マシン２はすでにソフトウェア配布に失敗しているため、マシン２の代替マシンとして最終的に当該マシン「マシン１」を選択し、処理を継続した。
【００３４】
ここで、経路情報マスタは、図２に示した通りの配布経路が記述されている。配布先リストには、「マシン４，マシン５，マシン９」が記述されている。代替マシンリストには、代替マシンが記述されている。
【００３５】
図３，４は、本発明の関連技術のソフトウェア自動配布システムの処理を示すフローチャートである。
【００３６】
まず、当該マシンが、管理マシンか否かを判定する（Ｓ１）。この例の場合、まずマシン１からソフトウェアを送信し、この「マシン１」は管理マシンであるのでソフトウェア本体、配布先リスト、代替マシンリストを管理マシン（マシン１）上で定義する（Ｓ２）。次に、配布先リストから配布先経路情報を作成する（Ｓ３）。配布先経路情報は、図３（Ａ）に示したように、マシン４については、マシン１→マシン２→マシン４、マシン５については、マシン１→マシン２→マシン５、マシン９については、マシン１→マシン２→マシン５→マシン９となる。
【００３７】
なお、当該マシンが、管理マシンでなかった場合には、ソフトウェア本体、配布先リスト、代替マシンリストを管理マシン（マシン１）から受け取り（Ｓ４）、当該マシンを最上層として配布先経路情報を修正する（Ｓ５）。
【００３８】
次に、配布先経路情報の階層１のマシンから中間配布先リストを作成する（Ｓ６）。この中間配布先リストには、マシン２が記述される。
【００３９】
また、中間配布先リストの先頭、すなわち「マシン２」の位置にポインタを位置づける（Ｓ７）。次に、初期配布先マシン名にポインタの位置のマシン名を入力する（Ｓ８）。これにより、「初期配布先マシン名←マシン２」となる。さらに、配布先マシン名にもポインタの位置のマシン名を入力する（Ｓ９）。これにより、「配布先マシン名←マシン２」となる。
【００４０】
次に、配布先マシン名がＮＵＬＬ（マシン名の入力がない）を判定する（Ｓ１０）。配布先マシン名がＮＵＬＬであれば、ソフトウェアの配布は行われないので、処理を終了する。
【００４１】
今回の場合、「配布先マシン名はＮＵＬＬ」ではないので、配布先マシンにソフトウェア本体、配布先経路情報、代替マシンリストを配布する（Ｓ１１）。この場合、「マシン２」にソフトウェア本体、配布先経路情報、代替マシンリストを配布する。
【００４２】
そして、正常に送れたかを判定する（Ｓ１２）。正常に送れた場合には、ポインタを１つ進めて（Ｓ１３）、Ｓ８に戻る。しかし、この例では、マシン２への配布は失敗するので、配布先マシンに代わる代替マシンを代替マシンリストから取り出す（Ｓ１４）。この場合、代替マシンリストから「マシン２」の代替マシンは「マシン３」であることを得る。そして、代替マシンが、当該マシンまたは初期配布先マシンかを判定する（Ｓ１５，１６）。この判定で当該マシンであった場合はそのまま、代替マシンが初期配布マシンであった場合には、代替マシン名を当該マシン名として（Ｓ１７）、中間配布先リストのポインタ位置のマシン名を配布先マシンでの中間配布先リストに置き換える（Ｓ１８）。
【００４３】
一方代替マシンが、当該マシン及び初期配布マシンでなかった場合には、中間配布先リストのポインタ位置のマシン名を代替マシン名に置き換える（Ｓ１９）。なお、この変更で中間配布先リストのマシン名が重複した場合には、変更したマシン名を削除する。
【００４４】
今回の場合、代替マシン「マシン３」は、当該マシン「マシン１」ではなく、また初期配布先マシン「マシン２」でもないので、Ｓ１８の処理で、中間配布先リストの「マシン２」を「マシン３」とする。
【００４５】
次に、Ｓ１８またはＳ１９により中間配布先リストのポインタ位置を変更した場合には、配布先経路情報中の配布先マシン名を変更する（Ｓ２０）。この場合も、１つの配布先レコードに対してマシン名が重複した場合には下位の階層のマシン名を削除する。今回の場合に、経路情報中の「マシン２」を「マシン３」と書き換え、Ｓ９に戻る。
【００４６】
この時点で中間配布先リストはマシン３、配布先経路情報は配布先マシン４についてマシン１→マシン３→マシン４、配布先マシン５についてマシン１→マシン３→マシン５、配布先マシン９についてマシン１→マシン３→マシン５→マシン９となっている。
【００４７】
次にＳ９の処理で「配布先マシン名←マシン３」となる。「配布先マシン名はＮＵＬＬ」ではないので、Ｓ１１の処理で「マシン３」にソフトウェア本体、配布先経路情報、代替マシンリストを配布する。ここで、Ｓ１１におけるマシン３への配布も失敗するので、Ｓ１４の処理で代替マシンリストから「マシン３」の代替マシンは「マシン２」であることを得る。次に、代替マシン「マシン２」は当該マシン「マシン１」ではないが、初期配布先マシン「マシン２」であるので、Ｓ１７の処理で、「代替マシン←マシン１」となる。次に、Ｓ１８の処理で、中間配布先リストのポインタ位置のマシン名「マシン３」を配布先マシンでの中間配布先リスト「マシン４、マシン５」に置き換える。次に、Ｓ２０の処理で、配布先経路情報中の配布先マシン名「マシン３」を代替マシン名「マシン１」に変更する。
【００４８】
最終的に中間配布先リストは、マシン４、マシン５となり（ポインタ位置は「マシン４」）、配布先経路情報は配布先マシン４についてマシン１→マシン４、配布先マシン５についてマシン１→マシン５、配布先マシン９についてマシン１→マシン５→マシン９となる。
【００４９】
このようにして、代替マシンが当該マシンまたは初期配布先マシンであった場合には、中間配布先リストのポインタ位置のマシン名を配布先マシンでの中間配布先リストに置き換える。そこで、配布ができなかった場合において、すでに選択済みの「代替マシン」を選択した場合、「代替マシン」を経由せずに送付元マシンから直接代替マシンの下層のマシンに配布する。これによって、中間階層マシンについての代替マシンの選択における無限ループの発生を抑制し、その中間階層以下のマシンへのソフトウェア配布が継続できる。
【００５０】
次に、他の関連技術のシステムについて、説明する。システム構成は、上記関連技術と同様に、図１の構成である。この例においては、例えば次のような処理を行う。この例は、上述の例と同様に、ソフトウェアをマシン４、マシン５、マシン９に配布しようとした場合の例である。まず、マシン２に対しソフトウェアを配布しようとするが、このマシン２へのソフトウェア配布に失敗した。このため、代替マシンリストから代替マシンとしてマシン３を選択した。次に、マシン３への配布も失敗し、マシン３の代替マシンとして、マシン２を選択した。しかし、マシン２はすでにソフトウェア配布に失敗している。
【００５１】
この場合に、この関連技術では、障害の回復を待つため、一定時間（例えば数時間程度）待つ。そして、代替マシンとして、再度マシン２を選択し、処理を継続する。
【００５２】
このように、この関連技術においては、すでに選択済みの「代替マシン」を選択した場合、「代替マシン」の回復を所定時間待つ。従って、所定時間内において障害回復が行われた時に、代替マシンへのソフトウェアの配布が完了し、中間階層以下のマシンへのソフトウェア配布が継続できる。
【００５３】
図６、７は、本発明に係る実施の形態２のソフトウェア自動配布システムの処理を示すフローチャートである。
【００５４】
まず、当該マシンが、管理マシンか否かを判定する（Ｓ３１）。この例の場合、まずマシン１からソフトウェアを送信し、この「マシン１」は管理マシンであるのでソフトウェア本体、配布先リスト、代替マシンリストを管理マシン（マシン１）上で定義する（Ｓ３２）。次に、配布先リストから配布先経路情報を作成する（Ｓ３３）。配布先経路情報は、図３（Ａ）に示したように、マシン４については、マシン１→マシン２→マシン４、マシン５については、マシン１→マシン２→マシン５、マシン９については、マシン１→マシン２→マシン５→マシン９となる。
【００５５】
なお、当該マシンが、管理マシンでなかった場合には、ソフトウェア本体、配布先リスト、代替マシンリストを管理マシン（マシン１）から受け取り（Ｓ３４）、当該マシンを最上層として配布先経路情報を修正する（Ｓ３５）。
【００５６】
次に、配布先経路情報の階層１のマシンから中間配布先リストを作成する（Ｓ３６）。この中間配布先リストには、マシン２が記述される。
【００５７】
また、中間配布先リストの先頭、すなわち「マシン２」の位置にポインタを位置づける（Ｓ３７）。次に、初期配布先マシン名にポインタの位置のマシン名を入力する（Ｓ３８）。これにより、「初期配布先マシン名←マシン２」となる。さらに、配布先マシン名にもポインタの位置のマシン名を入力する（Ｓ３９）。これにより、「配布先マシン名←マシン２」となる。
【００５８】
次に、配布先マシン名がＮＵＬＬ（マシン名の入力がない）を判定する（Ｓ４０）。配布先マシン名がＮＵＬＬであれば、ソフトウェアの配布は行われないので、処理を終了する。
【００５９】
今回の場合、「配布先マシン名はＮＵＬＬ」ではないので、配布先マシンにソフトウェア本体、配布先経路情報、代替マシンリストを配布する（Ｓ４１）。この場合、「マシン２」にソフトウェア本体、配布先経路情報、代替マシンリストを配布する。
【００６０】
そして、正常に送れたかを判定する（Ｓ４２）。正常に送れた場合には、ポインタを１つ進めて（Ｓ４３）、Ｓ３８に戻る。しかし、この例では、マシン２への配布は失敗するので、配布先マシンに代わる代替マシンを代替マシンリストから取り出す（Ｓ４４）。この場合、代替マシンリストから「マシン２」の代替マシンは「マシン３」であることを得る。そして、代替マシンが、当該マシンであるかを判定する（Ｓ４５）。この判定で、代替マシンが当該マシンであった場合には、中間配布先リストのポインタ位置のマシン名を配布先マシンでの中間配布先リストに置き換える（Ｓ４６）。これによって、すでに選択されたマシンを選択した場合には、その下位の層のマシンが直接選択される。
【００６１】
一方、代替マシンが当該マシンでなかった場合には、代替マシンが初期配布先マシンかを判定する（Ｓ４７）。この判定で当該マシンであった場合はそのまま、代替マシンが初期配布マシンであった場合には、代替マシン名を当該マシン名として一定時間待つ（Ｓ４８）。すなわち、配布が失敗した中間階層のマシンを飛ばして、配布を行っても未配布のまま残った初期配布先マシンについては、一定時間を待つ。そして、一定時間経過後中間配布先リストのポインタ位置のマシン名を代替マシン名に置き換える（Ｓ４９）。これによって、代替マシンに対し、もう一度ソフトウェアの配布が行われる。なお、この変更で中間配布先リストのマシン名が重複した場合には、変更したマシン名を削除する。
【００６２】
今回の場合、代替マシン「マシン３」は、当該マシン「マシン１」ではなく、また初期配布先マシン「マシン２」でもないので、Ｓ４９の処理で、中間配布先リストの「マシン２」を「マシン３」とする。
【００６３】
次に、Ｓ４６またはＳ４９により中間配布先リストのポインタ位置を変更した場合には、配布先経路情報中の配布先マシン名を変更する（Ｓ５０）。この場合も、１つの配布先レコードに対してマシン名が重複した場合には下位の階層のマシン名を削除する。今回の場合に、経路情報中の「マシン２」を「マシン３」と書き換え、Ｓ３９に戻る。
【００６４】
この時点で中間配布先リストはマシン３、配布先経路情報は配布先マシン４についてマシン１→マシン３→マシン４、配布先マシン５についてマシン１→マシン３→マシン５、配布先マシン９についてマシン１→マシン３→マシン５→マシン９となっている。
【００６５】
次にＳ３９の処理で「配布先マシン名←マシン３」となる。「配布先マシン名はＮＵＬＬ」ではないので、Ｓ４１の処理で「マシン３」にソフトウェア本体、配布先経路情報、代替マシンリストを配布する。ここで、Ｓ４２におけるマシン３への配布も失敗するので、Ｓ４４の処理で代替マシンリストから「マシン３」の代替マシンは「マシン２」であることを得る。
【００６６】
次に、代替マシン「マシン２」は当該マシン「マシン１」ではないが、初期配布先マシン「マシン２」であるので、Ｓ４８の処理で、一定時間待つ。そして、Ｓ４９の処理で、中間配布先リストのポインタ位置のマシン名「マシン３」を代替マシンである「マシン２」に置き換える。また、Ｓ５０の処理で、配布先経路情報中の配布先マシン名「マシン３」を代替マシン名「マシン２」に再び変更し、処理を継続する。
【００６７】
このようにして、代替マシンが初期配布先マシンであった場合には、一定時間待って、再度その代替マシンへの配布を繰り返す。。従って、所定時間内において障害回復が行われた時に、代替マシンへのソフトウェアの配布が完了し、中間階層以下のマシンへのソフトウェア配布が継続できる。
【００６８】
実施の形態．
次に、実施の形態のシステムについて、説明する。システム構成は、上記関連技術と同様に、図１の構成である。この実施形態においては、例えば次のような処理を行う。この例は、ソフトウェアをマシン２、マシン３に配布しようとしたが、マシン３へのソフトウェア配布に失敗した。マシン３は最終配布先であるため、障害の回復を待つため、一定時間（例えば数時間程度）待ち、再度、マシン３に配布する。従って、配布先へのソフトウェアの配布を完了することができる。
【００６９】
図８、９は、本発明に係る実施の形態３のソフトウェア自動配布システムの処理を示すフローチャートである。まず、当該マシンが、管理マシンか否かを判定する（Ｓ６１）。この例の場合、まずマシン１からソフトウェアを送信し、この「マシン１」は管理マシンであるのでソフトウェア本体、配布先リスト、代替マシンリストを管理マシン（マシン１）上で定義する（Ｓ６２）。次に、配布先リストから配布先経路情報を作成する（Ｓ６３）。この例の場合、ソフトウェアの配布先は、マシン２、マシン３であるため、配布先経路情報は、マシン２については、マシン１→マシン２、マシン３については、マシン１→マシン３となる。
【００７０】
なお、当該マシンが、管理マシンでなかった場合には、ソフトウェア本体、配布先リスト、代替マシンリストを管理マシン（マシン１）から受け取り（Ｓ６４）、当該マシンを最上層として配布先経路情報を修正する（Ｓ６５）。
【００７１】
次に、配布先経路情報の階層１のマシンから中間配布先リストを作成する（Ｓ６６）。この中間配布先リストには、マシン２が記述される。
【００７２】
また、中間配布先リストの先頭、すなわち「マシン２」の位置にポインタを位置づける（Ｓ６７）。次に、配布先マシン名にポインタの位置のマシン名を入力する（Ｓ６８）。これにより、「配布先マシン名←マシン２」となる。
【００７３】
次に、配布先マシン名がＮＵＬＬ（マシン名の入力がない）を判定する（Ｓ６９）。配布先マシン名がＮＵＬＬであれば、ソフトウェアの配布は行われないので、処理を終了する。
【００７４】
今回の場合、「配布先マシン名はＮＵＬＬ」ではないので、配布先マシンにソフトウェア本体、配布先経路情報、代替マシンリストを配布する（Ｓ７０）。この場合、「マシン２」にソフトウェア本体、配布先経路情報、代替マシンリストを配布する。
【００７５】
そして、正常に送れたかを判定する（Ｓ７１）。正常に送れた場合には、配布先マシンは、最終配布先かを判定する（Ｓ７２）。最終配布先であった場合には、配布先マシン名を管理マシンの完了配布先リストに追加する（Ｓ７３）。Ｓ７２においてＮＯの場合及びＳ７３における完了配布先リストへの追加の処理を終了した場合には、ポインタを１つ進め（Ｓ７４）、Ｓ６８に戻る。
【００７６】
今回の例の場合、マシン２への配布は成功し、マシン２は最終配布先であるため、完了配布先リストに「マシン２」が記録されるとともに、ポインタが１つ進められ、Ｓ６８に戻る。この場合、ポインタは、「マシン３」に位置しており、Ｓ７０において、マシン３にソフトウェア本体、配布先経路情報、代替マシンリストを配布し、正常に送れたかを判定する（Ｓ７１）。
【００７７】
今回の例では、マシン３への配布は失敗するので、Ｓ７１の判定においてＮＯとなる。この正常に送れなかった場合にも、正常に送れた場合と同様に、配布先マシンは、最終配布先かを判定する（Ｓ７５）。そして、最終配布先であった場合には、配布先マシン名を管理マシンの再送配布先リストに追加する（Ｓ７６）。次に、配布先マシンは他の最終配布先の経路かを判定する（Ｓ７７）。今回の例では、「マシン３」は、他の最終配布先の経路となっていない。
【００７８】
しかし、他の最終配布先の経路になっていた場合には、次に配布先マシンに代わる代替マシンを代替マシンリストから取り出す（Ｓ７８）。例えば、最終配布先として他に「マシン７」、「マシン８」が定義されている場合は「マシン３」は他の最終配布先の経路となっており、Ｓ７８に進み、代替マシンである「マシン２」が代替マシンとして取り出される。そして、代替マシンが、当該マシンかを判定する（Ｓ７９）。この判定で当該マシンであった場合は、中間配布先リストのポインタ位置のマシン名を配布先マシンでの中間配布先リストに置き換える（Ｓ８０）。
【００７９】
一方代替マシンが、当該マシンでなかった場合には、中間配布先リストのポインタ位置のマシン名を代替マシン名に置き換える（Ｓ８１）。なお、この変更で中間配布先リストのマシン名が重複した場合には、変更したマシン名を削除する。
【００８０】
他の最終配布先が「マシン７」であった場合には、代替マシン「マシン２」は、当該マシン「マシン１」ではないので、Ｓ８１の処理で、中間配布先リストの「マシン３」を「マシン２」とする。これによって、マシン２を介し、マシン７への配布を行う。
【００８１】
次に、Ｓ８０またはＳ８１により中間配布先リストのポインタ位置を変更した場合には、配布先経路情報中の配布先マシン名を変更する（Ｓ８２）。この場合も、１つの配布先レコードに対してマシン名が重複した場合には下位の階層のマシン名を削除する。これによって、配布を失敗した配布先が、他の最終配布先の経路であった場合には、代替マシンを選択して、その代替マシンを介し、他の最終配布先へのソフトウェアの配布を試みる。また、代替マシンが当該マシンであった場合には、当該マシンからその下位の階層のマシンに直接ソフトウェアの配布を行う。
【００８２】
今回の例の場合、「マシン３」は、他の最終配布先の経路ではないため、上述のようにＳ７７の判定においてＮＯとなりＳ７４に進み、このＳ７４においてポインタを１つ進めてＳ６８に戻る。配布先は、「マシン２」「マシン３」の２つだけであり、ポインタを進めることによって、配布先はＮＵＬＬになる。従って、Ｓ６９の判定において、ＹＥＳとなり、図９の処理は終了する。
【００８３】
一方、図１０に示す管理マシンで動作している別のプロセスでは、まず完了配布先リストと再送配布先リストが初期化される（Ｓ９１）。次に、完了配布先リストあるいは再送配布先リストへの登録を待つ（Ｓ９２）。前述したプロセスでは、最初に完了配布先リストとして「マシン２」が登録される。次に、配布先リスト＝完了配布先リスト＋再配布先リストか否かを判定する（Ｓ９３）。再配布先リストにマシン３が登録されるまでは、この判定はＮＯであり、Ｓ９２に戻り、判定を繰り返す。
【００８４】
前述したプロセスでは、再送配布先リストとして、「マシン３」が登録される。これによって、Ｓ９３の判定において、配布先リスト「マシン２、マシン３」＝ 完了配布先リスト「マシン２」＋ 再送配布先リスト「マシン３」となる。
【００８５】
この場合には、再送配布先リスト「マシン３」＝ＮＵＬＬか否かを判定する（Ｓ９４）。配布がすべて完了していれば、この判定でＹＥＳとなり、処理を終了する。
【００８６】
今回の場合、再送配布リストに「マシン３」が記載されており、Ｓ９４の判定において、ＮＯとなる。そこで、配布先リストに再送配布先リストの内容をを入力し（Ｓ９５）、一定時間（例えば、数秒程度）待つ（Ｓ９６）。この場合は、配布先リストにマシン３が入力される。
【００８７】
そして、一定時間を経過したときに、変更された配布先リストを使用して、管理マシンにてソフトウェア配布を開始する（Ｓ９７）。この場合には、マシン３に再度ソフトウェアの配布がなされる。
【００８８】
このように、実施形態においては、ソフトウェアの配布に失敗した「障害マシン」が最終配布先であった場合にはその最終配布先のマシンに対して再送する。従って、配布先へのソフトウェアの配布を完了することができる。
【００８９】
特に、すべての配布先への配布が完了（障害も含む）したかを判断するために「完了マシンリスト」と、障害のため再送すべきマシンを記述した「再送マシンリスト」を持ち、階層型ソフトウェア自動配布システムにおいて、「障害マシン」が配布先であった場合、ソフトウェアを再送することができる。
【００９０】
【発明の効果】
この発明は、以上説明したように構成されているので、以下に示すような効果を奏する。
【００９１】
（ｉ）本発明は、階層別に振り分けた複数のマシンに対してソフトウェアを配布する階層型ソフトウェア自動配布システムにおいて、すでに選択済みの「代替マシン」を選択した場合、「代替マシン」を経由せずに送付元マシンから直接代替マシンの下層のマシンに配布する機能を有する。これによって、中間階層マシンについての代替マシンの選択における無限ループの発生を抑制し、その中間階層以下のマシンへのソフトウェア配布が継続できる。
【００９２】
（ｉｉ）また、本発明は、すでに選択済みの「代替マシン」を選択した場合、「代替マシン」の回復を所定時間待つ機能を有する。従って、所定時間内において障害回復が行われた時に、代替マシンへのソフトウェアの配布が完了し、中間階層以下のマシンへのソフトウェア配布が継続できる。
【００９３】
（ｉｉｉ）また、本発明は、ソフトウェアの配布が失敗した「障害マシン」が最終配布先であった場合にはその最終配布先のマシンに対して再送する。従って、配布先へのソフトウェアの配布を完了することができる。
【図面の簡単な説明】
【図１】  システムの階層構成を示す図である。
【図２】  経路情報マスタを示す図である。
【図３】  配布先経路情報を示す図である。
【図４】    本発明に係る実施形態１のソフトウェア自動配布システムの処理を示すフローチャートである。
【図５】  本発明に係る実施形態１のソフトウェア自動配布システムの処理を示すフローチャートである。
【図６】  本発明に係る実施形態２のソフトウェア自動配布システムの処理を示すフローチャートである。
【図７】  本発明に係る実施形態２のソフトウェア自動配布システムの処理を示すフローチャートである。
【図８】  本発明に係る実施形態３のソフトウェア自動配布システムの処理を示すフローチャートである。
【図９】  本発明に係る実施形態３のソフトウェア自動配布システムの処理を示すフローチャートである。
【図１０】  本発明に係る実施形態３のソフトウェア自動配布システムの処理を示すフローチャートである。
【符号の説明】
１〜１０  マシン。
【図１】
0004390307.tif 000002
【図２】
0004390307.tif 000003
【図３】
0004390307.tif 000004
【図４】
0004390307.tif 000005
【図５】
0004390307.tif 000006
【図６】
0004390307.tif 000007
【図７】
0004390307.tif 000008
【図８】
0004390307.tif 000009
【図９】
0004390307.tif 000010
【図１０】
0004390307.tif 000011