(57)【特許請求の範囲】
【請求項１】
コンピュータシステム上で、グラフとして表されたプログラムの操作を実行する方法であって、前記グラフが、前記操作の第１処理を表す第１点と、前記操作の第２処理を表す第２点と、前記第１点を前記第２点と接続し、前記第１点と前記第２点間のデータフローを表すリンクとを備え、
前記第１点と前記第２点の各々がそれに関連した状態を有し、前記第１点と前記リンク間の接続がそれに関連した第１アクセス方法を有し、前記第２点と前記リンク間の接続がそれに関連した第２アクセス方法を有し、前記方法が、
（ａ）コンピュータシステム上で、グラフ変形ステップを実行するための条件が満たされていることを確認し、前記第１点と前記第２点の少なくとも一方が実行可能状態でなく、前記第１アクセス方法と前記第２アクセス方法の少なくとも一方が互換性を持つ通信方法と関連していないとき、少なくとも前記第１点と前記第２点の各々が実行可能状態になり、且つ、前記第１アクセス方法と前記第２アクセス方法が各々互換性を持つ通信方法と関連するまで、前記第１点と前記第２点と前記リンクの特徴を調べ、前記特徴に基づいて、（１）前記第１点と前記第２点の一方又は両方の状態を或る値に設定し、且つ、（２ａ）前記リンクを、他のリンクに接続された点に接続されたリンクを含むアダプタによって置き換えることと、（２ｂ）前記リンクをアダプタに置き換えると共に該置き換えられたアダプタが最初に通信方法に結合していないとき、前記第１アクセス方法と前記第２アクセス方法と互換性を持つ通信方法を前記アダプタに結合させること、の一方又は両方を行うことによって、グラフ変形ステップを実行することによって行う実行に備えたグラフの準備と、
（ｂ）前記コンピュータシステムを使って、前記結合した通信方法と互換性を持つ通信チャンネルおよび／またはデータ記憶の組合せの作成と、
（ｃ）前記コンピュータシステム上で前記第１処理と前記第２処理の実行を呼出すことによって行う前記第１処理および前記第２処理の開始と、
を有することを特徴とする、コンピュータシステム上で、グラフとして表されたプログラムの操作を実行する方法。
【請求項２】
コンピュータシステム上で、グラフとして表されたプログラムの操作を実行する方法であって、前記グラフが、前記操作の第１処理を表す第１点と、前記操作の第２処理を表す第２点と、前記第１点を前記第２点と接続し、前記第１点と前記第２点間のデータフローを表すリンクとを備え、
前記第１点と前記第２点の各々がそれに関連した状態を有し、前記第１点と前記リンク間の接続がそれに関連した第１アクセス方法を有し、前記第２点と前記リンク間の接続がそれに関連した第２アクセス方法を有し、前記方法が、
（ａ）コンピュータシステム上で、グラフ変形ステップを実行するための条件が満たされていることを確認し、前記第１点と前記第２点の少なくとも一方が実行可能状態でなく、前記第１アクセス方法と前記第２アクセス方法の少なくとも一方が互換性を持つ通信方法と関連していないとき、少なくとも前記第１点と前記第２点の各々が実行可能状態になり、且つ、前記第１アクセス方法と前記第２アクセス方法が互換性を持つ通信方法と関連するまで、前記第１点と前記第２点と前記リンクの特徴を調べ、前記特徴に基づいて、グラフ変形ステップを選択的に実行することによって行うグラフの準備であって、
前記グラフ変形ステップは、（１ａ）ファイルを表す点の状態を処理が終了したことを示す完全状態に設定することと、（１ｂ）処理を表す点の状態を実行可能状態に設定することと、（１ｃ）処理を表す点の状態を実行不可能状態に設定すること、のうちの少なくとも１つを実行し、且つ、（２ａ）挿入点に隣接した少なくとも１つのグラフの点の特徴を調べることによって決定されたグラフの点の前又は後に、前記リンクを表わすデータ構造を修正、拡張又は置換するファイルを表す点を挿入することと、（２ｂ）挿入点に隣接した少なくとも１つのグラフの点の特徴を調べることによって決定されたグラフの点の前又は後に、データを入力から出力へコピーするコピー処理を表す点を挿入することと、（２ｃ）挿入点が最初に通信方法に結合していないとき、前記第１アクセス方法と前記第２アクセス方法と互換性を持つ通信方法を前記挿入点に結合させること、のうちの少なくとも１つを実行することにより行うグラフの準備と、
（ｂ）前記コンピュータシステムを使って、前記結合した通信方法と互換性を持つ通信チャンネルおよび／またはデータ記憶の組合せの作成と、
（ｃ）前記コンピュータシステム上で前記第１処理と前記第２処理の実行を呼出すことによって行う前記第１処理および前記第２処理の開始と、
を有することを特徴とする、コンピュータシステム上で、グラフとして表されたプログラムの操作を実行する方法。
【請求項３】
前記グラフがさらに、操作の処理によって使用されるファイルを表す第３点を有することを特徴とする請求項２に記載の方法。
【請求項４】
前記第３点がファイル点であることを特徴とする請求項３に記載の方法。
【請求項５】
前記第１点が処理点であることを特徴とする請求項２に記載の方法。
【請求項６】
前記リンクがデータリンクであることを特徴とする請求項２に記載の方法。
【請求項７】
（ａ）前記第１処理と前記第２処理が、コンピュータシステムの異なるノード上で実行し、
（ｂ）前記結合した通信方法がプロセッサ間の通信方法であることを特徴とする請求項２に記載の方法。
【請求項８】
前記プロセッサ間の通信方法がTCP/lPであることを特徴とする請求項７に記載の方法。
【請求項９】
コンピュータシステム上で、グラフとして表されたプログラムの操作を実行する方法であって、前記グラフが、前記操作の第１処理を表す第１点と、前記操作の第１処理によって読まれたファイルを表す第２点と、前記第２点を前記第１点と接続し、前記ファイルから前記第１処理までのデータフローを表すリンクとを備え、
前記第１点と前記第２点の各々がそれに関連した状態を有し、前記第１点と前記リンク間の接続がそれに関連した第１アクセス方法を有し、前記第２点と前記リンク間の接続がそれに関連した第２アクセス方法を有し、前記方法が、
（ａ）コンピュータシステム上で、グラフ変形ステップを実行するための条件が満たされていることを確認し、前記第１点と前記第２点の少なくとも一方が実行可能状態でなく、前記第１アクセス方法と前記第２アクセス方法の少なくとも一方が互換性を持つ通信方法と関連しないとき、少なくとも前記第１点と前記第２点の各々が実行可能状態になり、且つ、前記第１アクセス方法と前記第２アクセス方法が互換性を持つ通信方法と関連するまで、前記第１点と前記第２点と前記リンクの特徴を調べ、前記特徴に基づいて、グラフ変形ステップを選択的に実行することによって行う実行に備えたグラフの準備であって、
前記グラフ変形ステップは、（１ａ）ファイルを表す点の状態を処理が終了したことを示す完全状態に設定することと、（１ｂ）処理を表す点の状態を実行可能状態に設定することと、及び、（１ｃ）処理を表す点の状態を実行不可能状態に設定することと、のうちの少なくとも１つを実行し、且つ、（２ａ）挿入点に隣接した少なくとも１つのグラフの点の特徴を調べることによって決定されたグラフの点の前又は後に、前記リンクを表わすデータ構造を修正、拡張又は置換するファイルを表す点を挿入することと、（２ｂ）挿入点に隣接した少なくとも１つのグラフの点の特徴を調べることによって決定されたグラフの点の前又は後に、データを入力から出力へコピーするコピー処理を表す点を挿入することと、及び、（２ｃ）挿入点が最初に通信方法に結合していないとき、前記第１アクセス方法と前記第２アクセス方法と互換性を持つ通信方法を前記挿入点に結合させることと、のうちの少なくとも１つを実行するグラフの準備と、
（ｂ）前記コンピュータシステムを使って、前記結合した通信方法と互換性を持つ通信チャンネルおよび／またはデータ記憶の組合せの作成と、
（ｃ）前記第１処理の実行を呼出すことによって行う前記第１処理の開始と、
を有することを特徴とする、コンピュータシステム上で、グラフとして表されたプログラムの操作を実行する方法。
【請求項１０】
前記グラフがさらに、操作の処理によって使用される、ファイルを表す第３点を有することを特徴とする請求項９に記載の方法。
【請求項１１】
前記第３点がファイル点であることを特徴とする請求項１０に記載の方法。
【請求項１２】
前記第１点が処理点であることを特徴とする請求項９に記載の方法。
【請求項１３】
前記リンクがデータリンクであることを特徴とする請求項９に記載の方法。
【請求項１４】
（ａ）前記第１処理と前記第２処理が、コンピュータシステムの異なるノード上で実行し、
（ｂ）前記結合した通信方法がプロセッサ間の通信方法であることを特徴とする請求項９に記載の方法。
【請求項１５】
前記プロセッサ間の通信方法がTCP/lPであることを特徴とする請求項１４に記載の方法。
【請求項１６】
コンピュータシステム上で、グラフとして表されたプログラムの操作を実行する方法であって、前記グラフが、操作処理を表す複数の点を有し、各点が関連するアクセス方法を有し、また、複数のリンクを有し、各リンクが少なくとも２つの点を互いに接続し、接続した点間のデータフローを表し、さらに、
（ａ）グラフをユーザ入力としてコンピュータ内に受付け、
（ｂ）コンピュータシステム上で、グラフ変形ステップを実行するための条件が満たされていることを確認し、幾つかの点が実行可能状態でなく、リンクによって接続された実行可能状態の点のアクセス方法が互換性を持つ通信方法と関連しないとき、少なくとも幾つかの点が実行可能状態になり、且つ、リンクによって接続された実行可能状態の点のアクセス方法が互換性を持つ通信方法と関連するまで、各点及びリンクの特徴を調べ、前記特徴に基づいて、（１）少なくとも幾つかの点の状態を或る値に設定し、且つ、（２ａ）リンクを、他のリンクに接続された点に接続されたリンクを含むアダプタによって置き換えること、及び、（２ｂ）前記リンクをアダプタに置き換えると共に該置き換えられたアダプタが最初に通信方法に結合していないとき、隣接した複数の点のアクセス方法と互換性を持つ通信方法を前記アダプタに結合させること、の一方又は両方のグラフ変形ステップを選択的に行うことによって、グラフ変形ステップを実行することによって行う実行に備えたグラフを準備し、
（ｃ）コンピュータシステムを使って、前記結合した通信方法と互換性を持つ通信チャンネルおよび／またはデータ記憶の組合せを作成し、
（ｄ）コンピュータシステム上で前記処理の実行を呼出すことにより実行可能状態処理の各々を開始し、
（ｅ）グラフとして表されたプログラムの操作全体がコンピュータシステム上で実行されるまで、ステップ（ｂ）〜（ｄ）を繰返す、
ステップを有することを特徴とするコンピュータシステム上で、グラフとして表されたプログラムの操作を実行する方法。
【請求項１７】
コンピュータシステムのハードウエア資源を有し、該ハードウエア資源を使用して、グラフとして表されたプログラムの操作を実行するシステムであって、前記グラフが、点を接続するリンクを有し、各々処理を表す複数の処理点と各々ファイルを表す複数のファイル点とを有し、
（ａ）幾つかの点が実行可能状態でなく、リンクによって接続された実行可能状態の点のアクセス方法が互換性を持つ通信方法と関連しないとき、少なくとも幾つかの点が実行可能状態になり、且つ、リンクによって接続された実行可能状態の点のアクセス方法が互換性を持つ通信方法と関連するまで、前記各点と前記各リンクの特徴に基づいて、（１）少なくとも幾つかの点の状態を或る値に設定し、且つ、（２ａ）リンクを、他のリンクに接続された点に接続されたリンクを含むアダプタによって置き換えること、及び、（２ｂ）前記リンクをアダプタに置き換えると共に該置き換えられたアダプタが最初に通信方法に結合していないとき、隣接した複数の点のアクセス方法と互換性を持つ通信方法を前記アダプタに結合させること、の一方又は両方を行うことによって、グラフ変形ステップを実行することによって行う実行に備えたグラフの準備をするための準備手段と、
（ｂ）前記結合した通信方法と互換性を持つ通信チャンネルおよび／またはデータ記憶の組合せを作成する作成手段と、
（ｃ）前記グラフの点によって表される処理を開始する開始手段と、
を有することを特徴とする、コンピュータシステムのハードウエア資源を使用して、グラフとして表されたプログラムの操作を実行するシステム。
【請求項１８】
前記実行に備えたグラフを準備するための準備手段が、
（ａ）挿入点に隣接した少なくとも１つのグラフの点の特徴を調べることによって決定されたグラフの点の前又は後に、前記リンクを表わすデータ構造を修正、拡張又は置換するファイルを表す点を最低１つ挿入するための第１の挿入手段と、
（ｂ）挿入点に隣接した少なくとも１つのグラフの点の特徴を調べることによって決定されたグラフの点の前又は後に、データを入力から出力へコピーするコピー処理を表す点を最低１つ挿入するための第２の挿入手段と、
（ｃ）ファイルを表す点の最低１つを処理が終了したことを示す完全状態に設定するための第１の設定手段と、
（ｄ）処理を表す点の最低１つを実行可能状態に設定するための第２の設定手段と
（ｅ）処理を表す点の最低１つを実行不可能状態に設定するための第３の設定手段と
を有することを特徴とする請求項１７に記載のシステム。
【発明の詳細な説明】
1．発明の範囲
本発明はデータ処理システムにおける操作の制御に関するものであり、さらに詳細には、並列または分散環境でグラフとして表されたプログラムの実行に関するものである。
2．発明の背景
複合のビジネスシステムは通常、1つのステップで生じた結果が次のステップへと供給されることで、複数のステップでデータ処理が行われる。このようなシステムを介した全体の情報のフローは、点がデータファイルまたはデータ処理を示すグラフによって表され、リンクまたはグラフ内の「辺」が、1つの処理ステップで生じたデータが他のステップで使用されることを示している。
並列処理システムにも同じタイプのグラフ表現が使用される。この説明の目的として、並列処理システムは、複数の中央処理ユニット（CPUs）を使用したコンピュータシステムのあらゆる構成を含み、これにはローカル（例えば、SMPコンピュータのようなマイクロプロセッサシステム）、または構内分散（例えば、クラスタまたはMPPsとして連結した複数プロセッサ）、あるいは遠隔的、または遠隔的分散（例えば、LANやWANネットワークを介して連結した複数のプロセッサ）、またあるいはこれらを組み合わせたものが含まれる。さらに、グラフはデータ、処理、辺またはリンクによって構成される。この場合、表示は処理ステップ間のデータフローのみでなく、1つの処理ノードから他の処理ノードへのデータフローをもキャプチャする。さらに、グラフの要素（ファイル、処理、辺）を反復することにより、システム中に並列性を呈することが可能である。
しかしながら、このようなグラフは複雑なプログラムの理解には役立っても、操作を呼出すために直接使用することができない。これは以下に示す理由のためである。
(1)個々の処理の内外で情報を得る方法を示さない。
(2)処理間での情報の移動方法を示さない。
(3)どの命令で処理を実行するかを示さない。
従って、グラフとして表された操作を実行するシステムおよび方法があれば便利である。本発明はこのようなシステムと方法を提供するものである。
発明の概要
本発明によれば操作を呼出すために直接グラフを使用できる方法および装置が得られる。また本発明によれば、グラフ上に表された個々の処理へ、また個々の処理から、処理間の方法移動のため、また、処理へ下す実行命令を画定するための情報を見る方法が得られる。これによりアプリケーションライタは、処理がどのようにして必要なデータにアクセスすべきかを、本発明を採用したシステムに伝えることができる。これには内部処理通信方法を選択するアルゴリズムと、処理実行をスケジュールするアルゴリズムとが含まれる。本発明では、処理内へまた処理外から情報を得る補助をするために、「アダプタ処理」を必要に応じて追加できる。本発明はまた、グラフの実行のモニタリングも備えている。
一般に、1局面において本発明は、コンピュータシステム上で、点を接続するリンクを有する関連したグラフとして表された操作を実行するためのシステムであり、前記グラフが、各々が処理を表す処理点と、各々がファイルを表すファイル点とを有し、前記システムが、
(1)グラフをユーザ入力としてコンピュータシステムに受入れるステップと、
(2)グラフが実行可能な形になるまで、また、各リンクが、リンクによって接続された点のアクセス方法と互換性を持つ通信方法の少なくとも1つと関連するまで、グラフ変形ステップをコンピュータシステム上で実行することにより実行に備えてグラフを準備するステップと、
(3)コンピュータシステムを使用して、リンクの通信方法に適切な、通信チャンネルおよび/またはデータ記憶を作成することにより各リンクを開始するステップと、
(4)コンピュータシステム上に処理の実行を呼出すことにより各処理を開始するステップとを備えている。
本発明は数々の利点を備えている。例えば本発明により、目的のマシンで転送可能なデータの独立した方法でアプリケーションを表すことが可能である。また、本発明により、コンポーネントプログラムが必要とするデータアクセス方法の独立した方法でアプリケーションを表すことも可能である。さらに、アプリケーションライタは、本発明により、様々な操作ステップを呼出す命令を計画する必要性から解放される。アプリケーションライタはまた、本発明により、通信チャンネルと一時ファイルを作成および破棄するためのコード書込みの必要性からも解放される。
この他の利点および特徴は、後述の説明と請求の範囲から明白になるであろう。
【図面の簡単な説明】
本明細書に採用され、また本明細書の一部を構成する添付の図面は、本発明の特定の実施例を図式的に示すものであり、また、上述した一般の説明および後述する実施例の詳細な説明と共に本発明の趣旨を説明するものである。
第1a図は、従来技術の給与システムの例を示す単純化したサンプルを介したデータフローを表すグラフである。
第1b図は、本発明による、第1a図に関連したグラフである。
第2図は本発明によるドライバプログラムのブロック図である。
第3図は本発明によるグラフを実行する方法の系統線図である。
第4図は第3図に示した方法の1つのステップを示す系統線図である。
第5a図、第5b図、第5c図、第5d図、第5e図、第5f図、第5g図、そして第5h図は、第3図に示した方法の複数のステップを示す系統線図である。
第6図は、第3図に示した方法の複数のステップを示す系統線図である。
第7図は、第3図に示した方法の複数のステップを示す系統線図である。
第8図は、本発明によるソース（送信元）アダプタの挿入の複数のステップを示す系統線図である。
第9a図は実例的グラフのブロック図である。
第9b図は本発明によるソース（送信元）アダプタの挿入を示すものである。
第10図は本発明を適用した例証グラフの第1ステップである。
第11図は本発明を適用した例証グラフの第2ステップである。
第12図は本発明を適用した例証グラフの第2ステップである。
第13図は本発明を適用した例証グラフの第3ステップである。
第14図は本発明を適用した例証グラフの第4ステップである。
第15図は本発明を適用した例証グラフの第5ステップである。
第16図は本発明を適用した例証グラフの第6ステップである。
図面中で、同一の参照番号および符号は同一の要素を示す。
発明の詳細な説明
操作基構の概観
本発明による、グラフとして表された操作を実行するためのグラフ実行システムとグラフ実行方法は、通信チャンネル、データ記憶、処理制御そしてデータアクセス方法といった市販の機能を有する操作環境または基構に多く取り入れられる。この理由のため、このような参照基構を参照してグラフ実行システムとグラフ実行方法について説明するが、システムと方法はこのような基構に限定されるものではない。
通信チャンネルに関する限り、参照基構は通信チャンネルを作成および破棄する機能を提供し、また、分散環境でこのシステムあるいは方法を使用する場合には、遠隔プロセッサで同様の動作をする機能を提供する。このような通信チャンネルは、同じプロセッサ上の2処理間、あるいは、異なるプロセッサ上の2処理間におけるデータ転送を行うことができる。数種の通信チャンネルの提供も可能である。データ記憶に関する限り、参照基構は、データ記憶を作成する機能を提供し、また、分散環境でシステムあるいは方法を使用する場合には、遠隔プロセッサ上で同様の動作をする機能を提供する。データ記憶は、ジョブ間、あるいは処理のステップ間のデータを保存するメモリである。基構はまた、データ記憶のコンテンツへの読取り／書込み処理が可能な機構を提供する。場合によっては、基構は、1つの処理が遠隔ノードに配設されたデータ記憶のコンテンツから読取り/書込みを行う機構を提供するが、このような機能は本発明で必要ではない。処理制御に関する限り、基構は、処理を開始し、いつ実行が終わったかを決定し、処理が正常に終了したかどうかを決定する機能を提供する。分散環境でシステムまたは方法を使用する場合には、基構は遠隔プロセッサ上で処理を開始する機能を提供する。処理開始の動作は、実行するプログラムの名前、アクセスするファイルまたは通信チャンネル用の識別子を含むパラメータを通過させなければならない。データアクセス方法に関する限り、基構は、基構上で実行される処理を使った、データアクセス方法のための機能を提供する。
有用な基構は、様々なバージョンのあらゆるUNIXオペレーティングシステムによって提供される基構の拡張として開発される。UNIXオペレーティングシステムは、名前付きパイプ、TCP/IPストリームといった2つのタイプの通信チャンネルを提供する。名前付きパイプはPoint-to-Point通信チャンネルであり、同一ノード上の処理間のデータ転送に使用される。（「ノード」という用語は、おそらく複数のプロセッサと記憶装置またはデータ記憶を備えているが、共用メモリの単一プールを有するコンピュータのことを指す。）名前付きパイプはファイルシステム内のパスによって識別される。TCP/IPストリームは、TCP/IPネットワーク（例えばインターネット）上のあらゆる場所の2処理間でのデータ転送に使用するPoint-to-Point通信チャンネルである。TCP/IPストリームの確立には、2つの処理が接続を確立するプロトコルを使用することが必須となる。このようなプロトコルの多くは一般に使用されているが、そのほとんどがこのシステムで必要とするPeer-to-Peer接続ではなくクライアント/サーバ型接続の確立を目的としている。
拡張された基構は共用メモリと呼ばれるチャンネルのある追加タイプを提供する。共用メモリは、複数の処理からのアクセスが可能で、既知の方法でデータを転送するために使用されるメモリのプールである。共用メモリチャンネルは、同期アクセスのための機構を含む。共用メモリは同一ノード上の処理間でのデータ転送にも適用でき、また名前付きパイプ用の効率的な代用品である。
本発明と共に使用するために、拡張した基構のTCP/IP接続プロトコルはPeer-to-Peerリンクに適したものでなくてはならない。このようなプロトコルにおいて、主体は、「ストリーム識別子」を作成し、このストリーム識別子を受容する所望のストリームの両端ポイント用にアレンジする。2つの端ポイントが基構へのストリーム識別子を与え、これに応じて、TCP/IPストリームへの接続を受容する。これと類似した機構が、共用メモリ通信チャンネルの確立にも使用される。このようなプロトコルの作成は従来技術として非常によく知られている。
UNIXオペレーティングシステムは、ファイルインタフェース、ストリームインタフェース、そしてファイル記述子インタフェースの3つのデータアクセス方法を提供する。ファイルインタフェースでは、プログラムにはファイル名が付けられ、次にこれをオープンし、読取り、書込み、そのファイル内で検索を行う。ストリームインタフェースでは、プログラムはファイル名または名前付きパイプが提供され、次にオープンされ、読取り、書込みが行われる。ストリームインタフェースでは検索動作または他の動作は行えない。ファイル記述子インタフェースでは、ファイル記述子（例えば番号によって識別された）を、プログラムを呼出す前にファイル、名前付きパイプ、あるいはTCP/IPストリームに結合することができる。次にプログラムはファイル記述子からの読取り、あるいはファイル記述子への書込みを行う。ストリームインタフェースでは、プログラムが呼出される前にストリームがプログラムの外でオープンされることを除けば、これはストリームインタフェースと類似している。
本発明での使用として、拡張された基構は1つの追加アクセス方法、ストリームオブジェクト接続（SOC）を提供する。「ストリームオブジェクト」を作成するには、拡張基構に「ストリームオブジェクト識別子」（ユニーク列）、「通信方法名」、「チャンネル/ファイル識別子」を与えるが、これらはファイルまたは名前付きパイプ、あるいはTCP/IPストリームまたは共用メモリチャンネルを作成するために使用する識別子であってよい。またCallerは、ソース（送信元）と宛先がある場所でノードを一致させなければならない。
UNIXオペレーティングシステムは1タイプのデータ記憶を提供する。それはファイルである。ファイルは、通常ディスクに記憶されたバイトの連続（シーケンス）である。ファイルは、ファイルシステム内のパスによって識別され、また、識別子がそのホスト、すなわちそれが存在するノード、を識別する。
UNIXオペレーティングシステムは処理制御を提供する。処理を開始するには、実行するプログラム名、あらゆるコマンド回線引数、ファイル記述子のためのあらゆるバインディングといった情報を提供する。コマンド回線引数は、プログラムがアクセスするファイル名、名前付きパイプを備えていてもよい。ファイル記述子のための各バインディングは、ファイル記述子番号と、ファイルあるいは名前付きパイプを識別するパスまたはTCP/IPストリームを識別する補助チャンネルのいずれかから成る。さらに、コマンド回線引数は、ある資源がどこにあるかを記述するため、または実行オプションを構成するために、通常UNIXプログラムによって要求される環境変数の値を含んでいてもよい。
グラフの概観
本発明のシステムは、これから説明する1組の処理点、1組のファイル点、1組のデータリンクの状態変数における操作の状態を追跡する。これらの構成を利用したシステムの動作については後に説明する。
本発明の概念をいくつか図示するために、従来技術の例証を使用する。第1a図は、従来技術の給与システムの例を示す単純化したサンプルを介したデータフローを表すグラフである。この例証への入力は、全従業員の永久レコードを含む旧マスタファイル110と、1週間分のタイムシートとを含むアップデートファイル112である。旧マスタファイル110は従業員IDによって記憶されている。グラフは以下のデータフローを示す。
(1)アップデートファイル112がステップ114においてソートされる。
(2)ステップ116においてアップデートがチェックされ、不良レコードは不良レコードファイル118に入れられる。
(3)新規マスタファイル122と1組のペイチェック124とを作成するために、ステップ120において、ステップ116からのアップデートと旧マスタファイル110が処理される。
処理点
処理点は次の情報を含んでいる。
・処理点識別子
・プログラムテンプレート
・作業ディレクトリ（すなわちスクラッチファイルが作成されるディレクトリ）を識別する作業ディレクトリ識別子
・作業ノード（すなわち処理が実行されるノード）を識別する作業ノード識別子
・Disabled、Enabled、Runnable、Unrunnable、Done（最初はDisabled）のいずれかの値を持つ状態変数。
・点がアダプタ点（後に説明する）であるかどうかを示すフラグ
次に示す表は、第1a図に示したソース、チェック、プロセス処理（プログラム）のための3処理点のコンテンツを表すものである。
0003717188.tif 000002
ファイル点
ファイル点はファイルに関連し、次の情報を含む。
・ファイル点識別子
・データノード識別子
・データファイル識別子
・作業ノードを識別する作業ノード識別子であり、ファイル（これは通常データノードと一致する）へのアクセスを望むプログラムによって使用されることができる
・ファイルへのアクセスを望むプログラムが、どこでスクラッチファイル（これは通常データファイルが入っているのと同じファイルシステム内にある）を作成できるかを識別する作業ディレクトリ識別子
・Complete、Incomplete（最初はIncomplete）のいずれか1つを持つ状態変数
操作基構がファイル以外のデータ記憶を備えている場合、ファイル点内の情報は、データ記憶のタイプと、それを識別および使用するために必要とされる情報を表示するインジケータを含むように拡張される。
次の表は、第1a図のグラフで示したファイルに対する5つのファイル点である。
0003717188.tif 000003
データリンク
データリンク（または短く単に「リンク」）は以下の情報を含む。
・送信元点-ファイル点または処理点のいずれか
・送信元ポート識別子-送信元がファイル点の場合、Outputのみが許容される
・宛先点-ファイル点または処理点のいずれか
・宛先ポート識別子-宛先がファイル点の場合、Inputのみが許容される
・Unboundであるか、またはFile、NamedPipe、TCP/IPまたはShared Memory（最初はUnbound）といったタイプの通信チャンネル名であってよい通信方法識別子
・Unlaunched（非開始）またはLaunched（開始）（最初はUnlaunched）のいずれかであってよい状態変数
与えられたファイル点または処理点の与えられたポートに、1つ以上のデータリンクを取付けることができる。
第1a図において、接続矢印は処理点とファイル点間のリンケージを図形的に示すものである。本発明において、リンクの概念はより具体的な形になっている。
次に第1b図を参照する。グラフ130は、本発明に従って第1a図に示されたグラフ100から引出した処理点、ファイル点、データリンクを示す。
次の表は、グラフ130に示した7つのデータリンク132、134、136、138、140、142、144である。
0003717188.tif 000004
プログラムテンプレート
処理点はプログラムテンプレートを含む。プログラムテンプレートは次の2つの、プログラムに関するベーシックタイプの情報を含む。(1)プログラムを呼出すために必要な情報、例えばプログラム名、コマンド回線引数、環境変数。そして(2)プログラムがデータにアクセスするための手段を記述するポート記述子の列。呼出し情報の正確な形は操作基構に依る。既述のUNIXベースの基構用に、プログラム名は実行可能ファイル名と、スペースによって離間した列から成るコマンド回線引数である。これらの列のいくつかは"$portname"の形であってよく、ここで"portname"はテンプレート内の1ポートの名前であり、またここで、そのポートはファイルインタフェースあるいはストリームインタフェースデータアクセス方法を使用しなければならない。この場合、文字列"$portname"は呼出しの際に、ファイル名またはポートと接続した名前付きパイプで置換えられる。
次の表は、第1b図のグラフ130に示した3つのプログラム（処理）のための図形的プログラムテンプレートのコンテンツを示すものである。
0003717188.tif 000005
プログラムの呼出しに必要な情報は2つの形で供給されてもよい。情報はまず、上の表に示したプログラムテンプレートに正確に記憶されなければならない。次に、この情報は動的に生成されてもよく、この場合、情報を生成するルーチンのアドレスがプログラムテンプレートに記憶される。
プログラムテンプレート内のポート記述子は、上の表の最右端に3つの要素として示した次の情報を含む。
・ポートのポート識別子
・ポートが入力に使用されているか出力に使用されているかの表示
・どの通信方法がポートに受理可能かを示す、ReqsSFile、ReqsNamedPipe、ReqsFDまたはReqsSOC（"Reqs"は"Requires"の略）といった受理可能方法コード
これらの受理可能方法コードは、操作基構により支持されるデータアクセス方法を参照する。
ドライバプログラム
次に第2図を参照する。ドライバプログラム200（または短く単に「ドライバ」）は、ユーザインタフェース204を介して受信されたユーザ202からの入力に基づいてグラフを描く手段を提供する。特定のグラフ（例えば、第1b図に示したグラフ）を表す1つまたはそれ以上のグラフデータ構造206がドライバ200によって生成される。ドライバ200のグラフ実行制御機能208は次に、外部処理212と相互作用するために、任意の命令で、要求された回数だけ、ドライバ200が下記の外部制御210機能を実行することを許容する。
・処理点を作成する
・ファイル点を作成する
・点（あらゆる種類）のあらゆる対間にデータリンクを作成する
・処理の最新状態をDisabledからEnabledへ変更する
・グラフを実行させる
最終的にドライバ200は、ユーザ202による要求に応じて、また、ユーザインタフェース204を介してユーザ202により供給された情報を使ってこれらの動作を実行する。ユーザ202は、グラフィカルユーザインタフェースを介してドライバ200に直接入力を提供する人物であってよい。また、ユーザ202は、例えばオブジェクト指向または手続インタフェースを介してドライバ200を制御する個別のプログラムであってもよい。この方法では、ユーザ202は、グラフの実行を構築するためにドライバ200を使用する。
ドライバ200は、ユーザ202が識別子、プログラムテンプレート、作業ノード、作業ディレクトリを提供した際に、グラフ用の処理点を作成する。作業ディレクトリには作業ノードに基づいたデフォルト値を与えてもよい。
ドライバ200は、ユーザ202が識別子、データノード、データファイル名、作業ノード、作業ファイル名を提供した際に、グラフ用のファイル点を作成してもよい。好ましい実施例において、作業ノードは省略値としてデータノードをとる。作業ファイル名には作業ノードおよび/またはデータファイル名に基づいたデフォルト値を与えてもよい。
ユーザ202がソース点、宛先点、ソースポート識別子、宛先ポート識別子を提供した際に、ドライバ200はグラフ点のあらゆる対間にデータリンクを作成することができる。好ましい実施例において、ソースポート識別子は省略値としてOutputをとり、宛先ポート識別子は省略値としてInputをとる。
ユーザ202に処理点のEnabled/Disabled状態の制御を可能にさせることにより、ドライバ200は、処理点のサブセットを選択的に可能にすることで、後述する処理の実行命令の制御をユーザ202が行使できるようにする。
グラフの実行
次に第3図を参照する。最初のグラフが生成された後、ドライバ200はグラフの実行を制御し、このため、グラフによって処理が描かれる。ドライバ200がグラフを実行すると、次の基本ステップA-Iを実行することによってグラフの実行が行われる。
A.処理点のいずれか1つがEnabled状態にある限り、ドライバ200は下記のステップB-Iを繰り返す。ドライバ200は場合によってステップC、D、Iを省略し、また、ステップB、C、E、Hにおいて実行された動作を混合してもよい。
B.ドライバ200は実行のためにグラフを準備する。このステップにおいて、ドライバ200はRunnable処理点を識別子、リンクの通信方法を選択し、また、後述するアダプタノードの生成を行ってもよい。
C.後にさらに詳細に説明するように、ドライバ200はデータリンクを開始する。このステップにおいて、ドライバ200は、後述する通信方法を実現するために要求される、ある操作構造を作成する。
D.ドライバ200は、操作基構によって要求されたその他のあらゆるデータ構造またはファイルを作成する。上述した拡張基構用として、ドライバ200は後述するリンクファイルを作成する。これにより、実行持にプログラムがグラフコネクティビティ情報にアクセスできるようになる。
E.ドライバ200は後述するように処理を開始する。
F.ドライバ200は処理が終了するのを待つ。このステップは全処理が正常に完了した際、あるいは異常な状態で終了した処理があった際に完了する。
G.異常状態で終了した処理があった場合、グラフの実行は放棄される。
H.そうでなければ、Runnable状態にある全ての処理点がDone状態に移行する。Runnable状態の処理点がない場合、クリーンアップステップIが実行され、制御がcaller（例えば、ドライバ200のユーザ202）へと戻り、実行が立往生していることを示す表示が出る。
I.ドライバ200は、後述するとおりにデータリンクとリンクファイルをクリーンアップする。これはステップC、Dで作成されたデータ構造のいくつかをクリーンアップする。
次に、特定のステップをさらに詳細に説明する。
ステップB：実行に備えてグラフを準備する
次に第4a図を参照する。ドライバ200は、ユーザ202によって最初に描かれたグラフにアクセスし、グラフ変形（ステップ400）を適用することにより、そのグラフを実行に備えて準備する。これらの変形の実行において、各点とあらゆる関連リンクを取出すために、最初のグラフを画定するグラフデータ構造が従来の方法でトラバースされる。好ましい実施例では、取出したデータ構造に5つのグラフ変形を使用して、グラフを実行に備えて準備している。
グラフがまだ実行可能な形でない（ステップ402）間、後述する5つのグラフ変形が選択され、任意の命令において適応され（ステップ404）、実行可能なグラフが得られるまで何度でも（全く要求されない場合も含む）要求される（ステップ416）。5つのグラフ変形は、(1)ファイルアダプタの挿入（ステップ406）、(2)通信アダプタの挿入（ステップ408）、(3)ファイル点の状態をCompleteに設定（ステップ410）、(4)処理点の状態をRunnableまたはUnrunnableに設定（ステップ412）、(5)データリンクの通信方法を設定（ステップ414）である。次に、これらの変形の各々と、その各々が実行される状態について説明する。
ファイルアダプタの挿入
この変形において、ドライバ200はリンクをファイルアダプタ（すなわち、リンク、ファイル点、その他のリンク）に置換える。これはすなわち、グラフデータ構造206（第2図）のトラバースの間にリンクを表す各グラフデータ構造が取出されるか、またはアクセスされると、オリジナルのデータ構造を変形、拡張する、またはオリジナルのデータ構造に代わる新しいデータ構造が作成される。
ソース（宛先）ファイルアダプタの場合、ファイル点のホストはソース（宛先）点のホストと同一であり、ファイル点のファイルは、ソース（宛先）点の作業ディレクトリ内に配置された新規ファイルである。この変形は下記の場合のみに実行される。
(1)ソースが、Done状態にないファイル点か処理点である。
(2)宛先が、Incomplete状態にあるファイル点か、Done状態にない処理点である。
通信アダプタの挿入
この変形において、ドライバ200はリンクを通信アダプタ（すなわちリンク、処理点、その他のリンク）と置換える。処理点は、データをその入力から出力へとコピーし、あらゆる通信チャンネルへの、または下にある基構によって支持されるデータ記憶への読み書きが可能なコピープログラムを実行する。ソース（宛先）通信アダプタの場合、処理点のホストはソース（宛先）点のホストと同一であり、また、作業ディレクトリはソース（宛先）点の作業ディレクトリと同一である。処理点はEnabled状態で作成される。この変形は下記の場合のみに実行される。
(1)ソースがDone状態以外の状態にある処理点であるか、あるいはファイル点である。
(2)宛先がDone状態以外の状態にある処理点であるか、あるいはIncomplete状態にあるファイル点である。
ファイル点状態をCompleteに設定
この変形において、ファイル点の状態はCompleteに設定される。この変形は、ファイル点状態がIncompleteであり、そして、ファイル点への全ての入力がDone状態にある処理点の場合にのみ実行される。
処理点の状態をRunnableまたはUnrunnableに設定
この変形において処理点の状態はRunnableまたはUnrunnableのいずれかに設定される。この変形は、処理点状態がEnabledである場合にのみ実行される。
データリンクの通信方法の設定
この変形において、通信方法はデータリンクに設定される。この変形は、データリンクの通信方法がUnboundである場合にのみ実行される。
以下の3特性を備えたグラフは実行可能である。
(1)全ての処理点がDone、Runnable、Unrunnable、Disabledの状態のうちの1つである。
(2)全てのデータリンクが以下の基準を満たす。
1)データリンクのソースか宛先のいずれかがRunnable処理点である場合、データリンクの通信方法は特定の通信方法に結合していなければならない。
2)データリンクの通信方法がFile以外のものである場合、そのソースと宛先の両方が処理点でなければならず、一方の処理点がRunnableである場合、良処理点がRunnableでなければならない。
3)データリンクの通信方法がFileである場合、そのソースか宛先はファイル点でなければならない。宛先がRunnable処理点である場合には、ソースはCompleteファイル点でなければならない。ソースがRunnableファイル点である場合には、宛先はIncompleteファイル点でなければならない。
(3)通信方法と結合した全てのリンクが、通信方法固有の制約を満たす。
1)通信方法は、そのソースと宛先ポート（これはプログラムテンプレートに打診することで決定される）のアクセス方法と互換性を持っていなければならない。既に説明した拡張基構の場合には、全ての通信方法がSOCアクセスと互換性を持ち、Shared Memory以外の全てはFile Descriptorアクセスと互換性を持ち、NamedPipeとFileはNamedPipeアクセスと互換性を持ち、そしてファイルのみがFileアクセスと互換性を有する。
2)ソースと宛先点のノードの一致を必要とする通信方法もある。説明した拡張基構については、これはTCP/IPを除いた全ての通信方法において正しい。
実行可能なグラフが得られるまで、グラフ変形をあらゆる命令（例えば、全ての変形が完了するまでグラフデータ構造が繰り返しトラバースされる）に適用することができる。次に第4b図を参照する。以下の順番を踏む下記のステップにおいて、グラフ変形が1実施例に適用される。(1)ファイルアダプタの挿入（ステップ450）、(2)file-to-fileリンクの置換（ステップ452）、(3)Completeファイル点の識別（ステップ454）、(4)Unrunnable処理点の識別（ステップ456）、(5)Runnable処理点の識別（ステップ458）、(6)残りのEnabled点をUnrunnableに設定（ステップ460）、(7)状態が合った場所にさらにファイルアダプタを挿入（ステップ462）、(8)通信方法の選択（ステップ464）、(9)通信アダプタの挿入（ステップ466）。次にこの実施例のステップについてさらに詳細に説明する。
(1)ファイルアダプタの挿入
第5a図を参照する。ファイルアダプタを挿入するには、グラフ内の全リンクに対して下記のステップを実行する（ステップ500）。リンクのソースポートが、ファイルの使用を要求し（ステップ502）、宛先が同一ノード上のファイルでないデータアクセス方法を有する場合には、ソースファイルアダプタを挿入する（ステップ506）。リンクの宛先ポートが、ファイルの使用を要求し（ステップ508）、ソースが同一ノード上のファイルでないデータアクセス方法を有する場合には、宛先ファイルアダプタを挿入する（ステップ512）。
リンクの宛先がDisabled状態の処理点であり（ステップ514）、ソースがEnabled状態の処理点である（ステップ516）場合、宛先ファイルアダプタを挿入する（ステップ512）。
(2)File-to-Fileリンクの置換
次に第5b図を参照する。file-to-fileリンクを置換する場合には、グラフ内の全てのリンクに対して下記のステップを実行する（ステップ520）。ソースと宛先の両方がファイル点である（ステップ522）場合には、ソース通信アダプタを挿入する（ステップ524）。（さらに、ソースと宛先が異なるノード上にある場合にも、宛先通信アダプタを挿入する。図示せず）
(3)Completeファイル点の識別
第5c図を参照する。Completeファイル点を識別するためには、グラフ内の全てのファイル点に対して下記のステップを実行する（ステップ530）。全てのアップストリーム点がDone状態の処理点である場合（ステップ532）、その状態をCompleteに設定する（ステップ534）。
(4)Unrunnable処理点の識別
次に第5d図を参照する。Unrunnable処理点を識別するには、グラフ内の全リンクに対して下記のステップを実行する（ステップ540）。"Unrunnability"テストを下記のとおり実行する（ステップ542）。リンクのソースがIncompleteファイル点であり、その宛先がEnabled状態の処理点である場合には、処理点の状態をUnrunnableに設定し（ステップ544）、ソースがEnabled以外の状態にある処理点であり、宛先がEnabled状態の処理点である場合には、宛先処理点をUnrunnableとマークする（ステップ544）。"Unrunnable"とマークされる点がなくなるまでこのテストを繰り返す。
(5)Runnable処理点の識別
次に第5e図を参照する。Runnableファイル点を識別するには、グラフ内の全処理点に対して下記のステップを実行する。"Runnability"テストは以下のように実行される（ステップ552）。点がEnabled状態にあり、全てのアップストリーム点がCompleteファイル点かRunnable処理点のいずれかである場合には、点の状態をRunnableに設定する（ステップ554）。Runnableとマークされる点がなくなるまでこのテストを繰り返す。
(6)残りのEnabled点をUnrunnableに設定する
次に第5f図を参照する。残りのEnabled点をUnrunnableに設定するには、グラフ内の全処理点に対して下記のステップを実行する。点がEnabled状態にある場合（ステップ562）、その状態をUnrunnableに設定する（ステップ564）。
(7)ファイルアダプタをさらに挿入
第5g図を参照する。ファイルアダプタをさらに挿入するには、グラフ内の全リンクに対して下記のステップを実行する。リンクのソースがRunnable処理点であり（ステップ572）、宛先がUnrunnable処理点である（ステップ574）場合には、ソースファイルアダプタを挿入する（ステップ576）。
(8)通信方法の選択
次に第5h図を参照する。通信方法を選択するには、グラフ内の全リンクに対して下記のステップを実行する（ステップ580）。このステップは、いずれかの側に実行可能処理が付いており、通信方法と結合していないリンクのみに適応する。リンクのソース（宛先）がファイル点であり（ステップ581）、またそのソース（宛先）が同一ノード上の処理点である場合には、リンクの通信方法をFile（ステップ582）に設定する。もしくは、使用可能な通信方法の1つを選び、その方法の全ての制約が満たされるようにする（ステップ583-585）。速度については、通信方法は命令Shared Memory、NamedPipe、TCP/IPの中に考慮されてもよい。上述した制約を満たす第1の方法が選択される（ステップ586）。参照基構内には、下記の規則を使用してもよい。まずリンクがSOC接続を受入れるポートと接続している場合、ソースと宛先が同一ノード上にあればそのリンクはShared Memoryを使用し、ソースと宛先が異なるノード上にあればTCP/IPを使用する。そうでなければ、ソースと宛先が同一ノード上にある場合にはNamedPipe方法を使用する。他の全ての場合において、どの単一通信方法も十分でなく、システムは通信アダプタ（下記）へと戻る。
(9)通信アダプタの挿入
前述の通信方法の選択ステップで単一通信方法が選択されておらず、全て試されている場合には（ステップ583）、ソース通信アダプタを挿入することにより、また、アダプタの2リンクに対する通信方法を選ぶ試みをする（ステップ587）ことにより続行する。これが失敗した場合は（ステップ588）、新しく挿入したソース通信アダプタを宛先通信アダプタ（ステップ589）と置換えて試してみること。もしこれも失敗した場合には（ステップ590）、ソースと宛先両方の通信アダプタを挿入し、この2つのアダプタ内で（ステップ591）3リンクに対する通信方法を選択する。参照基構において、ソースと宛先が異なるノード上にあり、リンクがファイル点またはＳＯＣ接続方法を受付けない処理点のいずれかに接続されている場合にのみ通信アダプタが要求される。この場合、アダプタは下記のとおり選択される。
・ソースがファイル点である場合、ソース通信アダプタを挿入する。ソース通信アダプタ内の2リンクは、FileとTCP/IP通信方法を交互に使用する。
・ソースが、SOC通信方法を受付けないポートである場合には、ソース通信アダプタを使用する。ソース通信アダプタ内の2リンクは、TCP/IPとFile通信方法を交互に使用する。
・宛先がファイル点である場合には、宛先通信アダプタを挿入する。アダプタ内の2リンクはTCP/IPとFile通信方法を交互に使用する。
・宛先がSOC通信方法を受付けないポートである場合には、宛先通信アダプタを挿入する。アダプタ内の2リンクは、TCP/IPとNamedPipe通信方法を交互に使用する。
ステップC：データリンクの開始
次に第6図を参照する。Unlaunched状態でデータリンクが作成され、開始されなければならない。リンクを開始するには、Unlaunched（ステップ602）であるリンクを見つけるためにリンクをスキャンし（ステップ600）、通信方法（ステップ604）と結合し、Runnableソースまたは宛先を持たせる。全てのこのようなリンクについて、様々な通信方法（ステップ608）で使用できる識別子が生成される。上述した拡張基構については、下記のとおり識別子が生成される。全リンクに、ストリームオブジェクト識別子と通信チャンネル/ファイル識別子の2つの識別子を持たせる。ストリームオブジェクト識別子はSOC機構によって使用され、またこれはリンク名と一致する。チャンネル/ファイル識別子は、リンクに採用されたファイル、名前付きパイプ、共用メモリ範囲、TCP/IP接続を識別するために使用される。さらに、処理点がNamedPipeまたはFile通信方法を要求する場合、チャンネル/ファイル識別子が使用可能になり、これによって処理点が、開始された際に、UNIXファイルシステムを使用してチャンネル/ファイルに接続可能になる。
識別子が生成された後、チャンネルまたはストリームオブジェクトを作成するために基構が呼出される。通信方法がNamedPipeである場合も、名前付きパイプを作成するために基構が呼出される。
ステップD：リンクファイルの作成
拡張基構は、各ノードに、そのノードにソースまたは宛先を有するリンクを列挙する「リンクファイル」を保持している。プログラムは実行時間において、どのリンクにアクセスするべきかをこのリンクファイルに打診する。これは、SOCインタフェースを使用するプログラムで一般に行われている。従って、拡張基構の場合には、システムはリンクファイルを作成しなければならない。これは下記のとおり行われる。操作に関係する全てのノードについて、ドライバ200は、そのノードに割当てられたRunnable処理点を識別し、このような点に接続した全てのリンクについては、リンクファイルに下記の情報を蓄積および記憶させる。
・点用の識別子
・リンクが接続しているポートの名前
・通信チャンネル用の識別子
・適用可能であれば、データ転送に使用するファイルまたは名前付きパイプ用識別子
ステップE：処理の開始
次に第7図を参照する。Runnable状態（ステップ700）にある全ての処理点に下記のステップを実行することで処理を開始する。まず、点用のプログラムテンプレートを使用して呼出し情報を生成する（ステップ702）。この情報は下記を含む。
・呼出すプログラムの名前
・コマンド回線引数（コマンド回線引数は、通信チャンネル用の識別子と、点に接続したリンクに関連するファイルとを備えてもよい）
・オプションとして、様々な環境変数値
・オプションとして、プログラムの期待「出口コード」
呼出し情報は最低2つの方法のいずれか1つにおいて生成される。ドライバ200がこういった情報をプログラムテンプレート内に事前記憶するか、または、ドライバ200がこのような情報を動的に操作するためのルーチンを含み、これらルーチンのアドレスをプログラムテンプレートに記憶できる。
次に、点の識別子と、点のノード用のリンクファイルの識別子が環境変数の設定に追加される（ステップ704）。次いで、示されたノード上で実行されているエージェントが「プログラム呼出し処理」（ステップ706）を生成する。プログラムのテンプレートが、UNIXファイル記述子と接続した入力、出力ポートを要求する場合には、プログラム呼出し処理が、入力、出力ポートに関連するファイル名、名前付きパイプまたはTCP/IPストリーム識別子と共に提供される。プルグラム呼出し処理は要求された環境変数を設定し、指示されたコマンド回線引数（ステップ708）を使用して、指示されたプログラムを実行する。
ステップF：待つ
全ての処理が開始されたら、システムが、好ましくは開始に使ったものと同じエージェントを使用して、それらの実行を監視する。システム（エージェント）は処理がエクシットしたことを定期的に注意する。これが起こると、システム（エージェント）はプロセスが「正常に」あるいは「異常に」エクシットしたかどうかを決定する。UNIXの場合、これは終了コードを介して行われる。終了コードは、プログラムエラー、演算例外、無効メモリ等のためにプログラムが打切られたことを表示することができる。このような場合は常に「異常終了」と表示される。また、「出口コード」を復帰させて、プログラムを制御形式で終了することもできる。慣例によれば、0の出口コードはプログラムが正常に終了したことを示し、その他のコードは全て異常終了を示す。上述したように、プログラムテンプレートはこの翻訳を変更してもよく、例えば、全ての出口コードを「正常」終了と翻訳してもよい。
処理が正常に終了したことをシステムが決定するとすぐに、システムはオプションで「デバッギング」ルーチンを入力し、ユーザが異常終了の理由を診断できるようにすることもできる。デバッギングが完了すると（またはスキップすると）、システムが打切り手続を開始する。これは例えば、まだ実行している全処理を停止し、部分的に書込まれたファイルを削除する等である。次にドライバプログラムが終了する。
システムは、処理が正常に終了したと決定すると、この事実を記述し、さらに処理が終了することを待つ。全ての処理が正常に終了すると、システムはクリーンアップステップIへと進む。
ステップI：クリーンアップ
全てのRunnble処理の実行が終わったら、ドライバ200は下記のステップを実行する。まず、各ノードのリンクファイルが削除される。次に、Launched状態にある全てのリンクがスキャンされる。リンクと接続した全ての処理点がDone状態にある場合には、リンクと関連するあらゆる通信チャンネルを破棄するために基構が使用される。拡張基構の場合は、リンクのストリームオブジェクト識別子を得て、基構に指定されたストリームオブジェクトを破棄するように命令することによって行われる。通信方法がNamedPipeである場合も、やはりNamedPipeを破棄する。さらに、ファイルアダプタ点がCompleteであり、そこから流れる全ての処理がDoneである場合は、そのファイルが削除される。
アダプタの挿入
リンクの代わりにアダプタを挿入する状況についていくつか説明した。アダプタはデータリンク、またはファイル、あるいは処理点（アダプタ点）であり、または、一連の通信方法を使って通信リンクを合成するために挿入された他のデータリンクである。アダプタ点が処理であるアダプタは、「通信アダプタ」と参照される。アダプタ点がファイルであるアダプタは、「ファイルアダプタ」と参照される。一般に、リンクのソースと宛先が強要する制約を満たすために通信方法組合せ（例えば、名前付きパイプとTCP/IP接続）が要求される場合に、通信アダプタが追加される。
ファイルアダプタはまた、リンクのソースと宛先が同時に実行されない場合（例えば、ソースが実行可能であるが宛先が実行不可能あるいは使用禁止である場合）、またはリンクのソースか宛先のどちらかがファイルに接続できる場合に追加される。通信アダプタの場合は、アダプタ点がその入力から出力へとコピーする、また、あらゆる種類の通信チャンネルと接続するプログラムを指定する。アダプタリンクは次に、ステップ583-585で説明した制約「通信方法の選択」に当てはまる任意の通信方法と接続され、。アダプタ点はデータを、単純にその入力から出力へコピーする。アダプタリンクは、ソースと宛先の制約に従属するあらゆる便利な通信方法を備えることができる。
次に第8図を参照する。ソースアダプタを挿入するためには、新規のアダプタ点（ステップ802）と新規のアダプタリンクを作成する（ステップ804）。ソース通信アダプタの場合には、アダプタ点は下記の特性を持つ処理点である。
・プログラムテンプレートはコピープログラム、すなわち全ての入力データをその出力へとコピーするプログラムを指定する。
・プログラムテンプレートは、あらゆる通信方法への接続が可能な入力、出力ポート記述子を指定する。
・新しい点はアダプタ点としてフラグされる。
・オリジナルのソース点の作業ディレクトリと作業ノードとが、アダプタ点の作業ディレクトリとノードとして使用される。
ソースファイルアダプタの場合には、下記の特性を持つアダプタ点はファイル点である。
・ファイルはソースプログラムによって使用されるノード上に配設されている。
・ファイルはソースプログラムの作業ディレクトリ内に配設されている。
ファイルは「アダプタ」になっているとマークされるため、宛先処理によって消費されると、このファイルは削除される。
新規のアダプタリンク（ステップ804）は下記の特性を備えている。
・アダプタリンクのソース点はオリジナルリンクのソース点と同じであり、アダプタリンクのソースポート名はオリジナルリンクのソースポート名と同じである。
・アダプタリンクの宛先点はアダプタ点であり、アダプタの宛先ポート名はオリジナルリンクである。
・アダプタリンクの通信方法は、ソースアダプタを挿入する手続が指定した値（これはしばしばUnboundである）に設定される。
最後に、オリジナルデータリンクのソースが新規アダプタ点（ステップ806）に設定され、ソースポート名がOutputに設定される。
宛先アダプタ点を挿入する手続は、「ソース」と「宛先」、「入力」と「出力」といった具合に相互に対照的であり、交換される。
第9a図、第9b図は、リンクLの代わりに、点V1のポートP1と点V2のポートP2との間に通信アダプタ900を挿入する図を示す。第9b図において、リンクLは、第1リンク902、点904、第2リンク906を含むソースアダプタ900によって置換えられている。アダプタ900がファイルアダプタの場合は、点904は、点V1のディレクトリおよびホストである、ホストH1上のディレクトリD1内のファイルのファイル点である。アダプタ900が通信アダプタである場合、点904はコピープログラムを実行する処理点である。第2リンク902は、ソース点がアダプタ点904に設定され、ソースポート名がOutputに設定されたオリジナルリンクLである。第1リンク902のソースポート名はオリジナルリンクLのオリジナルソースポート名P1への設定であり、その宛先点は新しく追加した点904のInputポートである。
新規アダプタ900が宛先アダプタである場合、点904は、ソース点V1のホストH1とディレクトリD1よりも、宛先点V2のホストH2とディレクトリD2を使用する。
グラフの入力と実行の例証
次に、本発明を、第1図に示したペイロールプログラムに適用していると考慮する。まず、アプリケーションを作成する前に、ユーザは既に、要求された全プログラム、具体的にはソートプログラムに対するテンプレート、チェッカープログラム、ペイロールプログラムをシステムに提供している。次にユーザは、上述したようにアプリケーションをグラフとして表す。そのグラフは第10図に示されており、図にあるように、ノード0、1、2で実行するステップ1000-1070を有する（様々なリンクが接続したポートの名前は省略しているが、第1b図と比較すれば明白である）。
このグラフの処理の第1ステップは、実行に備えてグラフを準備することである。まず、実行ステップ450の間、テンプレートにSortプログラム1010について打診し、入力としてファイルが必要であると見る。その結果、ステップ450が宛先ファイルアダプタ1002を挿入する（第11図）。
次に、ステップ452を実行する。我々が、ノード2上のUpdateファイル1000からノード1上のTemporaryファイル1002へのリンクを有することに注意すること。従って、ソースと宛先通信アプリケーション（コピー1004、コピー1006）の両方がこのリンクに挿入される（第12図）。
次に、ステップ454において、我々は完全ファイル点（Update 1000とOld Master 1050）を識別する。これが終わると、ステップ456において、アップストリームに不完全ファイルが存在するために実行不可能な処理点を探す。Sortプログラム1010が見つかり、この基準が満たされる。ステップ458において、我々は、アップストリームに実行可能処理点および/または完全ファイルのみを有するために実行可能な処理点を識別する。2つのコピープログラム1004、1006（すなわち、ステップ452において挿入された通信アダプタ）はこの基準を満たし、実行可能とマークされる。残りの全てのノードは実行不可能とマークされる。最後に、実行可能処理点に接続したこれらのリンクに対して通信方法を選択する。これらのファイルに対してFile方法が選択され、また、2つのコピープログラム1004、1006（それぞれ異なるノード上にある）の間のリンクに対してTCP/IPが選択される。
これにより、第13図に示した状況になる（実行可能/完全とマークされていない点は、実行不可能/不完全であり、通信方法とマークされていないリンクは接続されていない）。
現在、グラフは実行可能である。リンクファイルが作成され（図示せず）、指定されたリンクが開始され、実行可能な処理点が開始される。全ての処理が終了すると、システムは、指定されたリンクを非開始とし、処理点の状態を「実行可能」から「終了」に変更することにより「クリーンアップ」を行う。この場合の結果を第14図に示す。
次にシステムは全処理が終了していないと決定し、新たに実行を繰返す。まず、システムは前と同様にグラフを準備する。Temp File 1002が完全であることを記述することから始まる。次に、システムは実行不可能な処理点がないと決定する。最後に、実際に全ての処理点が実行可能であることを決定する。この場合の結果を第15図に示す。
次は通信方法の選択（ステップ464）である。まず、Temp File 1002、Bad 1030、Paychecks 1060がFileに設定される。これは、Temp File 1002、Bad 1030、Paychecks 1060がファイルと実行可能処理点を接続し、ノード境界を横切らないためである。次に、Check 1020に接続した残りのリンクがNamedPipeに設定される。これはCheck 1020が名前付きパイプを要求し、これらのリンクがノード境界を横切らないためである。
これにより、OldMaster 1050とNewMaster 1070とProcess 1040が接続され、ファイルと、異なるノード上で実行中の処理とが接続される。どちらの場合も、Copy 1042とCopy 1044と示したステップ466への通信アダプタの挿入が必要である。両アダプタはNode 1で実行する。ある通信方法が選択され（ファイルに接続しているリンクにはFile、ノード境界を横切るリンクにはTCP/IP）、第16図に示すグラフが得られる。
グラフは再び実行に備えて準備される。システムはリンクファイルを作成し、リンクと処理を開始し、待ち、クリーンアップする。この時点で全ての処理点は「終了」であるため、グラフの実行が終了する。
プログラム実行
本発明はハードウェアやソフトウェア、または両方の組合せにおいて実行される。しかしながら、本発明はコンピュータプログラム、データ記憶システム（揮発性および不揮発性メモリおよび/または記憶要素）、最低1つの入力装置、最低1つの出力装置で実行されることが好ましい。本明細書中で説明した機能を実行するためにプログラムコードが入力データに適用され、出力情報を生成する。出力情報は1つ以上の出力装置に従来の方法で適用される。
各プログラムは、コンピュータシステムと通信するために、高レベルの手続またはオブジェクト指向プログラミング言語において実行されることが好ましい。しかしながら、所望であれば、プログラムはアセンブリまたは機械言語において実行されてもよい。いずれの場合も、言語はコンパイルされた、または翻訳された言語であってよい。
このようなコンピュータプログラムの各々は、一般または特殊目的プログラム可能コンピュータによって読取りが可能な記憶媒体あるいは装置（例えば、ROMや磁気ディスケット）に記憶されることが好ましい。これは、本明細書中で説明した手続を実行するために記憶媒体あるいは装置がコンピュータによって読取られる際に、コンピュータを構成、操作するためである。本発明のシステムはまた、コンピュータプログラムと共に構成された、コンピュータ読取り可能記憶媒体として実行されると考慮されてもよい。ここで記憶媒体は、コンピュータを、ここで説明した機能を特定の、予め画定された方法で実行するように動作させるように構成されている。
本発明の多くの実施例を説明した。しかし、本発明の精神と範囲を逸脱しない限り様々な改良が可能であることが理解されるであろう。従って、本発明は特定の例証的実施例によってではなく、添付の請求の範囲によってのみ限定されるものであることが理解されるであろう。
【図１ａ】
0003717188.tif 000006
【図１ｂ】
0003717188.tif 000007
【図２】
0003717188.tif 000008
【図３】
0003717188.tif 000009
【図４ａ】
0003717188.tif 000010
【図４ｂ】
0003717188.tif 000011
【図５ａ】
0003717188.tif 000012
【図５ｂ】
0003717188.tif 000013
【図５ｃ】
0003717188.tif 000014
【図５ｄ】
0003717188.tif 000015
【図５ｅ】
0003717188.tif 000016
【図５ｆ】
0003717188.tif 000017
【図５ｇ】
0003717188.tif 000018
【図５ｈ】
0003717188.tif 000019
【図６】
0003717188.tif 000020
【図７】
0003717188.tif 000021
【図８】
0003717188.tif 000022
【図９ａ】
0003717188.tif 000023
【図９ｂ】
0003717188.tif 000024
【図１０】
0003717188.tif 000025
【図１１】
0003717188.tif 000026
【図１２】
0003717188.tif 000027
【図１３】
0003717188.tif 000028
【図１４】
0003717188.tif 000029
【図１５】
0003717188.tif 000030
【図１６】
0003717188.tif 000031