(57)【要約】  アプリケーション（ＡＰ）を定義するためのＯＰＧ３およびＯＰＧ３を解釈するＤＧＩ２を含むソフトウエアシステムが提供されている。ＯＰＧ３はすべてのＡＰの操作ならびに処理ステップおよびすべてのＡＰのデータを定義する。ＯＰＧ３は動的でありＡＰのデータエントリの任意の態様の変更、処理、または情報の表示を随時可能にする。ＯＰＧ３が解釈されるとき、データを受け入れ、そのデータを処理し、情報出力を生成するべくそれが機能する。ＯＰＧ３に対してなされた、それが解釈されている間の変更は、直ちに効果を生じ、また保存することができる。ＯＰＧ３およびＤＧＩは単一ユーザワークステーションコンピュータ上もしくは分散処理環境において展開可能であり、後者においては中央サーバがＯＰＧ３およびＤＧＩ２を保持し、ワークステーションコンピュータがイントラネットまたはローカルイントラネットを経由してサーバにアクセスする。【選択図】図１
2008506162.tif 000002
【特許請求の範囲】
【請求項１】
アプリケーションを定義するためのグラフ構造であって、動的、有向、かつ循環的なグラフ構造であり、少なくとも１つのデータ・ノード、少なくとも１つのプロセス・ノード、および少なくとも１つのアプリケーション状態ノードを含むグラフ構造；および、
前記アプリケーションを処理するべく前記グラフ構造を解釈するためのインタープリタ；
を包含し、前記グラフ構造が前記インタープリタによって解釈されている間に前記グラフ構造が変更されることが可能なオブジェクト・プロセス・グラフ・システム。
【請求項２】
前記グラフ構造は、前記グラフ構造内の少なくとも２つのノード間における関係を定義するための少なくとも１つのリレーショナル・エッジを含む、請求項１に記載のシステム。
【請求項３】
前記グラフ構造は、前記グラフ構造内の少なくとも２つのノード間における変換関係を定義するための少なくとも１つの変換エッジを含む、請求項１に記載のシステム。
【請求項４】
前記グラフ構造は、前記グラフ構造内の少なくとも２つのノード間における関係を定義するための少なくとも１つのエッジを含む、請求項１に記載のシステム。
【請求項５】
前記グラフ構造は、前記グラフ構造が前記インタープリタによって解釈されている間に、外部入力に応答して変更されることが可能である、請求項１に記載のシステム。
【請求項６】
前記グラフ構造は、前記アプリケーションのためのデータを含む、請求項１に記載のシステム。
【請求項７】
前記データは、持続性および一過性データを含む、請求項６に記載のシステム。
【請求項８】
前記データは、次のデータ構造：すなわち、リレーショナル・テーブル、階層テーブル、ｎ次元データ配列、スプレッドシート、グラフ・モデル、および３−ｄ物理モデルから選択されたデータ構造を含む、請求項６に記載のシステム。
【請求項９】
前記グラフ構造は、前記データのための妥当性検査を含む、請求項６に記載のシステム。
【請求項１０】
前記グラフ構造は、前記アプリケーションのための処理ロジックおよびデータ・フローを含む、請求項１に記載のシステム。
【請求項１１】
さらに：
前記グラフ構造の少なくとも部分を表示するためのユーザ・インターフェース；
を包含し、それにおいて前記グラフ構造は、前記部分についての表示特性を定義する、請求項１に記載のシステム。
【請求項１２】
前記ユーザ・インターフェースは、さらに前記グラフ構造の作成および編集のために使用される、請求項１１に記載のシステム。
【請求項１３】
さらに：
前記グラフ構造および前記インタープリタをストアするための持続性メディアを包含する、請求項１に記載のシステム。
【請求項１４】
前記グラフ構造は、データの妥当性検査、変換、および表示の順序ならびにタイミングに関してコントロールするための処理およびコントロール要素を含む、請求項１に記載のシステム。
【請求項１５】
前記インタープリタは、前記グラフ構造に、前記グラフ構造内に保持されているアプリケーション状態情報を変更することによって作用し、前記アプリケーション状態情報は、１ないしは複数の一過性データ・オブジェクトおよび持続性データ・オブジェクトを含む、請求項１に記載のシステム。
【請求項１６】
前記インタープリタは、同時に複数のアプリケーション状態に作用する、請求項１に記載のシステム。
【請求項１７】
前記インタープリタは、アプリケーション状態オブジェクトの組み合わせの間においてアプリケーション状態情報の併合または分割を行うことによって作用する、請求項１に記載のシステム。
【請求項１８】
さらに：
トランザクション内において行われる変更を定義する監査情報；
を包含し、前記変更は、部分的もしくは完全にロールバックが可能である、請求項１に記載のシステム。
【請求項１９】
アプリケーションを定義するためのグラフ構造であって、複合レイヤ化グラフであり、複数のノードならびにエッジを含むグラフ構造；
前記アプリケーションを処理するべく前記グラフ構造を解釈するためのインタープリタ；および、
ユーザ・インターフェースを提供するための表示メディアであって、前記ユーザ・インターフェースが前記グラフ構造に対する変更を受領することができる表示メディア；
を包含し、前記グラフ構造が前記インタープリタによって解釈されている間に前記グラフ構造が変更されることが可能なオブジェクト・プロセス・グラフ・システム。
【請求項２０】
各ノードは、コンポジットもしくはプリミティブのいずれかのノード型を有する、請求項１９に記載のシステム。
【請求項２１】
各ノードは、有向グラフおよびツリーの両方に属し、前記有向グラフは前記グラフ構造内のほかのノードに対する関係を定義し、前記ツリーは階層の構成を定義する、請求項１９に記載のシステム。
【請求項２２】
前記ノードは、オブジェクトのインスタンスである、請求項１９に記載のシステム。
【請求項２３】
各オブジェクトは、プロセス型もしくはデータ型のオブジェクト型を有し、前記プロセス型は、オペレーション、レポート、またはアプリケーションであり、前記データ型はプリミティブ・データ、コンポジット・データ、配列、グラフ、または参照である、請求項２２に記載のシステム。
【請求項２４】
各ノードは、定義もしくはインスタンスのいずれかのテンプレート・データベース型を有する、請求項１９に記載のシステム。
【請求項２５】
データ型のオブジェクト型を有するオブジェクトのインスタンスである各ノードは、持続期間プロパティを有し、前記持続期間プロパティは前記ノードの寿命を定義する、請求項２３に記載のシステム。
【請求項２６】
プロセス型のオブジェクト型を有するオブジェクトのインスタンスである各ノードは、前記アプリケーションを通るノードのフローをコントロールすること、前記表示メディアを介してノードを作成し、修正し、表示することができる、請求項２３に記載のシステム。
【請求項２７】
オペレーションのオブジェクト型を有するオブジェクトのインスタンスである各ノードは、前記アプリケーションを通るノードのフロー内の少なくとも１つのステップを表す、請求項２３に記載のシステム。
【請求項２８】
アプリケーションのオブジェクト型を有するオブジェクトのインスタンスである各ノードは、オペレーション・ノードを通じて作成され、修正され、あるいは表示される、請求項２３に記載のシステム。
【請求項２９】
前記グラフ構造は、ノード間における関係を定義する少なくとも１つのエッジを含む、請求項１９に記載のシステム。
【請求項３０】
各エッジは：プロセス対プロセス、プロセス対データ、またはデータ対データのエッジ型を有する、請求項２９に記載のシステム。
【請求項３１】
前記プロセス対プロセスのエッジ型はそれぞれ、表示、キュー、またはバッチのサブタイプを有する、請求項３０に記載のシステム。
【請求項３２】
前記データ対データのエッジ型はそれぞれ、コピー、計算、分割、併合、または結合のサブタイプを有する、請求項３０に記載のシステム。
【請求項３３】
前記プロセス対データのエッジ型はそれぞれ、作成、検索、または実行のサブタイプを有する、請求項３０に記載のシステム。
【請求項３４】
さらに、前記アプリケーションの機能ならびにデータに対するアクセスをコントロールするための少なくとも１つのユーザ・オブジェクトを包含する、請求項１９に記載のシステム。
【請求項３５】
前記ユーザ・オブジェクトは、複数のオブジェクトを含み、それぞれのオブジェクトが関連するアクセス権を有する、請求項３４に記載のシステム。
【請求項３６】
前記アクセス権はロールバック、読み出し、および書き込みを含む、請求項３５に記載のシステム。
【請求項３７】
前記オブジェクトの１つは、型を監査とする、請求項３５に記載のシステム。
【請求項３８】
前記インタープリタは、前記アプリケーションのビジュアル側面を動的に表示することができる、請求項１９に記載のシステム。
【請求項３９】
前記インタープリタは、前記グラフ構造を解釈して：
前記グラフ構造内の状態ノード、プロセス・ノード、およびデータ・ノードのアクセス；
前記グラフ構造内における第１のアプリケーション状態から第２のアプリケーション状態への遷移；
前記表示メディア上における状態情報の表示；
ユーザ入力の受領；および、
前記ユーザ入力を基礎とする前記グラフ構造の態様の変更；
のメソッドを実行することによって前記アプリケーションを処理する、請求項１９に記載のシステム。
【請求項４０】
前記第１のアプリケーション状態から前記第２のアプリケーション状態への遷移は：
前記第１のアプリケーション状態内のアクティブなオペレーション・ノードを決定すること；
前記アクティブなオペレーション・ノードから出ている第１のエッジを見つけ出し、前記第１のエッジに関連付けされる第１の変換を実行すること；
前記第１のアプリケーション状態内のデータ・インスタンスに対応するデータ定義ノードを決定すること；
前記データ定義ノードから出ている第２のエッジを見つけ出すこと；および、
前記第２のエッジに関連付けされる第２の変換を実行すること；
によって実行される、請求項３９に記載のシステム。
【請求項４１】
アプリケーションを定義するためのグラフ構造であって、動的、有向、かつ循環的なグラフ構造であり：
少なくとも１つのデータ・ノード；
少なくとも１つのプロセス・ノード；
少なくとも１つのアプリケーション状態ノード；
前記グラフ構造内の少なくとも２つのノード間における関係を定義するための少なくとも１つのリレーショナル・エッジ；および、
前記グラフ構造内の少なくとも２つのノード間における変換関係を定義するための少なくとも１つの変換エッジ；を含むグラフ構造；および、
前記アプリケーションを処理するべく前記グラフ構造を解釈するためのインタープリタ；
を包含し、前記グラフ構造が前記インタープリタによって解釈されている間に前記グラフ構造が変更されることが可能なオブジェクト・プロセス・グラフ・システム。
【請求項４２】
前記グラフ構造は、前記グラフ構造が前記インタープリタによって解釈されている間に外部入力に応答して変更されることが可能である、請求項４１に記載のシステム。
【請求項４３】
前記グラフ構造は、前記アプリケーションのためのデータを含む、請求項４１に記載のシステム。
【請求項４４】
前記データは、持続性および一過性データを含む、請求項４３に記載のシステム。
【請求項４５】
前記データは、次のデータ構造：すなわち、リレーショナル・テーブル、階層テーブル、ｎ次元データ配列、スプレッドシート、グラフ・モデル、および３−ｄ物理モデルから選択されたデータ構造を含む、請求項４３に記載のシステム。
【請求項４６】
前記グラフ構造は、前記データのための妥当性検査を含む、請求項４３に記載のシステム。
【請求項４７】
前記グラフ構造は、前記アプリケーションのための処理ロジックおよびデータ・フローを含む、請求項４１に記載のシステム。
【請求項４８】
さらに：
前記グラフ構造の少なくとも部分を表示するためのユーザ・インターフェース；
を包含し、それにおいて前記グラフ構造は、前記部分についての表示特性を定義する、請求項４１に記載のシステム。
【請求項４９】
前記ユーザ・インターフェースは、さらに前記グラフ構造の作成および編集のために使用される、請求項４８に記載のシステム。
【請求項５０】
さらに：
前記グラフ構造および前記インタープリタをストアするための持続性メディアを包含する、請求項４１に記載のシステム。
【請求項５１】
前記グラフ構造は、データの妥当性検査、変換、および表示の順序ならびにタイミングに関してコントロールするための処理およびコントロール要素を含む、請求項４１に記載のシステム。
【請求項５２】
前記インタープリタは、前記グラフ構造に、前記グラフ構造内に保持されているアプリケーション状態情報を変更することによって作用し、前記アプリケーション状態情報は、１ないしは複数の一過性データ・オブジェクトおよび持続性データ・オブジェクトを含む、請求項４１に記載のシステム。
【請求項５３】
前記インタープリタは、同時に複数のアプリケーション状態に作用する、請求項４１に記載のシステム。
【請求項５４】
前記インタープリタは、アプリケーション状態オブジェクトの組み合わせの間においてアプリケーション状態情報の併合または分割を行うことによって作用する、請求項４１に記載のシステム。
【請求項５５】
さらに：
トランザクション内において行われる変更を定義する監査情報；
を包含し、前記変更は、部分的もしくは完全にロールバックが可能である、請求項４１に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
関連出願に対するクロスリファレンス
本出願は、２００４年６月５日に出願された特許仮出願第６０／５７７，５０１号および２００５年５月２０日に出願された特許仮出願第１０／９０８，６５４号の恩典を主張するものであり、これらの出願の内容は、参照によりそのすべてがこれに援用される。
【０００２】
本発明は、プログラミング言語を含むソフトウエア開発ツール、ケース（ＣＡＳＥ）ツール、データベース・システム、およびインターフェースならびに表示言語および関連ツールに関する。
【背景技術】
【０００３】
１９５０年代におけるアッセンブリ言語の開発以来、コンピュータ産業は、ソフトウエア開発における一連の漸増的進歩を立証してきた。これらの進歩は、手作業をより少なく抑えつつソフトウエアのより迅速な開発を可能にし、より複雑なソフトウエア・システムの作成を可能にし、ソフトウエア・システムの信頼性を包括的に向上させた。これらの進歩には、コボル（ＣＯＢＯＬ）およびフォートラン（Ｆｏｒｔｒａｎ）等の第３世代のプログラミング言語；フォーカス（ＦＯＣＵＳ）等の第４世代のプログラミング言語；スモールトーク（Ｓｍａｌｌｔａｌｋ）、Ｃ＋＋、およびジャバ（Ｊａｖａ（登録商標））等のオブジェクト指向プログラミング言語；ラショナル・ローズ（Ｒａｔｉｏｎａｌ  Ｒｏｓｅ）等のケース（ＣＡＳＥ）ツール；ビジュアル・ベーシック（Ｖｉｓｕａｌ  Ｂａｓｉｃ）およびウェブスフィア（ＷｅｂＳｐｈｅｒｅ）等のビジュアル・プログラミング環境；オラクル（Ｏｒａｃｌｅ）およびＤＢ２等のリレーショナル・データベースシステムおよびジェムストーン（ＧｅｍＳｔｏｎｅ）およびバーサント（Ｖｅｒｓａｎｔ）等のオブジェクト指向データベース・システムの開発が含まれる。しかしながらそれらの進歩にもかかわらず、大規模システムの開発は、未だ高価かつリスクの高い冒険であり、多くの高度に熟練したプログラマを必要とし、常に最終システムの品質ならびに適用可能性に関係する有意の不確実性が存在する。
【０００４】
現在の方法に伴うソフトウエア・システムの実装に係る主要な制約は、開発サイクルに先行して割り付けられる詳細かつ不動の要件を必要とすることである。オン−ザ−フライで容易かつ信頼性をもって修正され、変更の必要が生じたときにそれに適合可能となる複雑なシステムを実装する手段は、コンピュータ・アプリケーションの範囲、適用可能性、および有用性を大きく広げることになろう。
【０００５】
【特許文献１】米国特許第５，２９５，２５６号明細書
【特許文献２】米国特許第６，１６３，７７６号明細書
【特許文献３】米国特許第６，２９２，８０３号明細書
【発明の開示】
【発明が解決しようとする課題】
【０００６】
本発明は、オブジェクト・プロセス・グラフ・システムを定義し、具体化する。
【課題を解決するための手段】
【０００７】
１つの態様は、グラフ構造ならびにグラフ・インタープリタを含むオブジェクト・プロセス・グラフ・システムである。グラフ構造は動的、有向、かつ循環的であり、アプリケーションを定義する。グラフ構造は、少なくとも１つのデータ・ノード、少なくとも１つのプロセス・ノード、および少なくとも１つのアプリケーション状態ノードを含む。グラフ・インタプリタは、グラフ構造を解釈してアプリケーションを処理する。グラフ構造は、グラフ構造がグラフインタープリタによって解釈されている間に変更されることが許される。
【０００８】
別の態様は、グラフ構造、グラフ・インタプリタ、およびグラフ・ユーザ・インターフェースを含むオブジェクト・プロセス・グラフ・システムである。グラフ構造はアプリケーションを定義する。グラフ構造は、複合レイヤ化グラフであり、複数のノードを含む。インタプリタは、グラフ構造を解釈してアプリケーションを処理する。グラフ・ユーザ・インターフェースは、グラフ構造を表示メディア上に表示し、入力デバイスによって入力されたグラフに対するユーザ定義の変更を処理する。グラフ構造は、グラフ構造がインタープリタによって解釈されている間に変更されることが許される。
【０００９】
本発明の例示的な実施態様は、多くの利点を含み、それには大規模で複雑なソフトウエア・システムの構築に伴うコストならびにリスクの縮小が含まれる。アプリケーション・ユーザならびにアプリケーション界の専門家は、最小限のコンピュータ・トレーニングを伴ってカスタム化された複雑なソフトウエア・システムを開発し、維持することが可能になる。ソフトウエア・アプリケーション・システムの範囲、柔軟性、および有用性を大きく広げるためにランタイムで修正できるアプリケーションを作成することが可能である。
【００１０】
本発明のこれらの、およびそのほかの特徴、態様、および利点については、以下の説明、付随する特許請求の範囲、および添付図面に関連してより良好な理解が得られるであろう。
【発明を実施するための最良の形態】
【００１１】
本発明の態様は、オブジェクト・プロセス・グラフ（Ｏｂｊｅｃｔ  Ｐｒｏｃｅｓｓ  Ｇｒａｐｈ）（ＯＰＧ）およびダイナミック・グラフ・インタプリタ（Ｄｙｎａｍｉｃ  Ｇｒａｐｈ  Ｉｎｔｅｒｐｒｅｔｅｒ）（ＤＧＩ）を含む。ＯＰＧは、コンピュータ・アプリケーションの持続性ならびに一過性のデータ、その処理ロジックならびにデータ・フロー、および各アプリケーション・データ・アイテムの表示ならびに妥当性検査特性を定義する。グラフィカル・ユーザ・インターフェース・ベースの編集システムをＯＰＧの作成ならびに修正に使用することが可能である。ＤＧＩは、アプリケーションのダイナミックＯＰＧにアクセスし、解釈し、修正し、作用するオブジェクト指向システムである。ＯＰＧの解釈は、伝統的なコンピュータ環境内におけるアプリケーションの実行に類似している。
【００１２】
ＯＰＧの実施態様は、プログラムが実行されるときに解釈されるコンピュータ言語（チューリング的完全）と考えることができる。ＯＰＧは、一過性ならびに持続性のコンピュータ・メモリ内にストアされる。ＯＰＧは、任意のデータ構造の保持が可能であり、それには限定の意図ではないが：リレーショナル・テーブル、階層テーブル、ｎ次元データ配列、スプレッドシート、グラフィック・モデル、および３−Ｄ物理モデルが含まれる。これらのデータ構造は、リレーショナル・データベース・システムに一般的なブロブとしてストアされず、それらのオリジナルの構造ならびに内部関係を反映する特殊なＯＰＧ構造にストアされる。ＯＰＧプロセスおよびコントロール構造は、アプリケーション内における持続性ならびに一過性データの妥当性検査の順序ならびにタイミング、変換、および表示にわたってコントロールを提供する。またＯＰＧ構造は、数学的公式、正規表現（テキスト・データまたは量的データおよびテキスト・データの混合の場合）および完全なアルゴリズムを定義することができる。
【００１３】
アプリケーションのＯＰＧは、コンピュータ端末もしくは静的出力メディア、たとえば紙の上にレンダリングが可能である。インタラクティブ・メディア上に表示されるＯＰＧデータ、プロセス、およびコントロール構造は編集することができる。伝統的なソフトウエア開発システムとは異なり、アプリケーションのＯＰＧの編集は、コンパイルおよびインストールが必須となるコードを生成しない。それに代えて、変更が行われると直ちに効果を生ずる。変更は、ＤＧＩの解釈中（アプリケーションの実行中）でさえも行うことが可能である。随時アプリケーションを安全に変更できる能力は、大規模で複雑なエンタープライズ規模のアプリケーション・システムの迅速な開発ならびに長期メンテナンスにとって望ましい。
【００１４】
ＯＰＧ内のすべてのアプリケーションの実行状態情報は、アプリケーション状態（Ａｐｐｌｉｃａｔｉｏｎ  Ｓｔａｔｅ）オブジェクト内に保持される。ＤＧＩは、それが保持するアプリケーション状態情報を変更することによってＯＰＧに作用する。アプリケーション状態情報は、任意の持続性データ・オブジェクトを含むことができる。ＤＧＩは、複数のアプリケーション状態を同時に操作してアプリケーション状態オブジェクトの組み合わせの間において状態情報の併合または分割を行うことができる。
【００１５】
ＯＰＧは、アプリケーション内におけるすべての持続性および一過性のデータの変更について−−プライベート・データ・レベルにおいて−−監査証跡情報を維持する。監査証跡情報は、ユーザ・インターフェース上の表示のためにディスプレイ・コントロールを介して、あるいはアプリケーションの処理ならびにデータ・フロー内のその先の更新ならびに操作のために容易に利用することができる。
【００１６】
長期ならびに短期のトランザクションにおいて行われた変更を定義する監査情報は、アプリケーションの持続性データに対するすべての変更について維持ならびに追跡が行われる。長期のトランザクションは、システムによるすべての持続性データに対する変更の編成、コントロール、および追跡を可能にする。その種の変更は、多くの作業セッションにわたりかつ長期間（数日または数週間）にわたって生じ得る。これに対して短期のトランザクションは、単一ユーザのセッションまたはシステムとのインタラクションの間に行われる。長期ならびに短期のトランザクション情報は、システムのグラフィカル・ユーザ・インターフェースを介してアプリケーション内における操作ならびに表示のために直ちに利用可能になる。長期トランザクションの追跡もまた、トランザクション内の任意ポイントへのロールバックを容易にし、トランザクションの削除は（監査証跡とともに）アプリケーション・インターフェースを介して自動的に利用することができる。ユーザによるアプリケーション内におけるすべての機能ならびにデータに対するアクセスのコントロールは、システムのインターフェースを介して利用することができる。これには、各ユーザのためにアプリケーションの一部として定義された各プリミティブ・データについての独立したアクセス権（読み出し、書き込み、ロールバック）が含まれる。
【００１７】
ユーザ・インターフェースを介して入力され、あるいは変更されるデータに加えて、システムの実施態様は、アプリケーションの処理に対するほかのシステムからの任意のディジタル・フォーマットの入力データも受け入れる。
【００１８】
いくつかの実施態様は、グラフィカル・ユーザ・インターフェースを含む。グラフィカル・ユーザ・インターフェースは、ユーザがすべての入力のフォーマットを指定することを可能にでき、その後それが自動的にパーズされ、アプリケーションの処理内の任意ポイントにおけるアプリケーションの更新−−データベース内の持続性データまたはアプリケーションもしくはディスプレイ・インターフェース内の一過性データの追加もしくはその修正−−に使用される。
【００１９】
種々の実施態様において、上記のプロセスの逆を使用し、出力データも同様に任意のフォーマットでアプリケーション内の任意ポイントから（持続性または一過性データについて）作成できる。いくつかの実施態様においては、リレーショナル・データベース等の外部データベースをアプリケーションに登録し、そのアプリケーション内のすべての持続性データをその種のデータベース内にストアし、あるいはそれから検索することができる。
【００２０】
本発明のオブジェクト・プロセス・グラフ（Ｏｂｊｅｃｔ  Ｐｒｏｃｅｓｓ  Ｇｒａｐｈ）コンポーネントの実施態様は、伝統的なグラフ・オブジェクト指向データベースの基本機能を拡張する。本発明の実施態様は、動的プロセス・エレメントおよびグラフ・オブジェクト指向データベースの機能を単一の統合されたシステムに合成し、それが、伝統的なプログラミング言語を伴うことなく完全で複雑なエンタープライズ規模のアプリケーションを迅速に作成することを可能にする。ＯＰＧは、直接的かつ動的に解釈され、したがってコードの生成がまったく必要とされない。ＯＰＧの変更の容易性ならびに変更の結果としてもたらされる迅速なフィードバックは、ＯＰＧベースのアプリケーションの維持ならびに変更を簡単にする。
【００２１】
本発明の実施態様は、２つのコンポーネントを含む（図１）：すなわち、動的な複合レイヤ化オブジェクト・プロセス・グラフ（Ｏｂｊｅｃｔ  Ｐｒｏｃｅｓｓ  Ｇｒａｐｈ）（ＯＰＧ）３およびダイナミック・グラフ・インタプリタ（Ｄｙｎａｍｉｃ  Ｇｒａｐｈ  Ｉｎｔｅｒｐｒｅｔｅｒ）（ＤＧＩ）２である。ＯＰＧ３は、アプリケーションを完全に定義し、かつ表現する。ＤＧＩ２は、アプリケーションの実行時にアプリケーションのＯＰＧ３を翻訳し、解釈する。アプリケーションのインターフェース１は、ＤＧＩ２とインタラクションし、ＯＰＧ３内にストアされた持続性データもしくはアプリケーションの実行時にＯＰＧ３によってコントロールされる一過性データを更新する。
【００２２】
オブジェクト・プロセス・グラフ
本発明の例示的な実施態様においては、ＯＰＧ３が、複合レイヤ化グラフ（図２）として構造化され、２つのノード型−−コンポジット（合成）およびプリミティブ（基本）−−を伴う。図２内の中黒のノード−−８、９、１０、および１２−−は、ほかのノードから構成されてなく、したがってノード型はプリミティブである。図中の白抜きのノードは、ノード型がコンポジットである。ＯＰＧ複合レイヤ化グラフは、有向グラフのセットおよびツリーのセットを含む。グラフ内の各ノードは、有向グラフおよびツリーの両方に属する。各ノードが属する有向グラフは、それとそのグラフ内のほかのノードの関係を定義する。そのノードの属するツリーは、それが属する構成階層を定義する。ノードは、複数の有向グラフをはじめ、複数の構成階層に属することができる。たとえば、図２のノード９、１０、１１、および１２は、有向グラフ７に属する。またノード９、１０、１１、および１２は、有向グラフ５に属するノード６と同じ構成階層ツリーに属する。ノード６は、複合階層ツリー内におけるノード９、１０、１１、および１２の親であり、ノード型はコンポジットである。ここで注意を要するが、この中で述べている複合レイヤ化グラフは、単なる有向グラフの特殊ケースに過ぎず、ＯＰＧ３の別の実施態様は、構成を示す親のエッジを含む有向グラフを使用することができる。図２内の中黒のノード−−８、９、１０、および１２−−は、ほかのノードから構成されてなく、したがってノード型はプリミティブである。
【００２３】
ＯＰＧ３は、少なくとも２つのノード・オブジェクト型を含む：すなわちプロセスおよびデータである。（いくつかの追加の特化されたノード・オブジェクト型が存在し、それらについては後述する。）前述したとおり、各ノード・オブジェクト型内において、ノード型は、それが構成要素となる複合階層ツリー内に子を持たないプリミティブ、もしくはコンポジットとすることができる。以下のプロセスおよびデータ型の説明は、本発明の１つの例示的な実施態様である（図３）。プロセス型１３は、オペレーション（Ｏｐｅｒａｔｉｏｎ）、レポート（Ｒｅｐｏｒｔ）、またはアプリケーション（Ａｐｐｌｉｃａｔｉｏｎ）とすることができる−−そのすべては、ノード型をコンポジットとすることができる。オペレーションおよびレポート型は、ノード型をプリミティブとすることも可能である。データ型１４は、プリミティブデータ（ｐｒｉｍｉｔｉｖｅＤａｔａ）１５、コンポジットデータ（ｃｏｍｐｏｓｉｔｅＤａｔａ）１６、配列、グラフ、または参照とすることができる。この例示的な実施態様において、データ型プリミティブデータ（ｐｒｉｍｉｔｉｖｅＤａｔａ）のノードは、ノード型プリミティブだけが可能であり、ほかのすべてのデータ型のノードは、ノード型コンポジットだけが可能である。
【００２４】
この例示の実施態様において、プリミティブデータ（ｐｒｉｍｉｔｉｖｅＤａｔａ）のノード１５は、プリミティブデータ（ｐｒｉｍｉｔｉｖｅＤａｔａ）型のいずれか１つとすることができる。各プリミティブデータ（ｐｒｉｍｉｔｉｖｅＤａｔａ）のノードのプロパティは、その型に固有である。（ここで注意を要するが、このことはすべてのノードについて当てはまる−−ノードのプロパティは、その型の階層に依存するが、ノードは、グラフ定義および／またはランタイム固有となることもある。）多数のあらかじめ定義済みのプリミティブデータ（ｐｒｉｍｉｔｉｖｅＤａｔａ）型は、ＯＰＧシステムの種々の実施態様：文字列、倍精度、整数、日付、ファイル、イメージ、マッピング、ＸＭＬファイル、計算、計算付き文字列、カスタム・クラス、電子メール・アドレス、ウェブ・アドレス、ディレクトリ、スプレッドシートのセル、ファイル変換、倍長整数、大十進数、二進数、およびリレーショナル・テーブル等において利用可能である。各プリミティブデータ（ｐｒｉｍｉｔｉｖｅＤａｔａ）型定義は、そのデータの処理ならびに表示のために特化された関数を含む。たとえば、ファイル変換データ型は、複数のフォーマット：テキスト、ＣＶＳ、ＸＭＬ、スプレッドシート（エクセル（Ｅｘｃｅｌ−−商業的ライセンス依存））、ワード・プロセッシング書類（ワード（Ｗｏｒｄ−−商業的ライセンス依存））によるファイル内の基本情報の表示を可能にする。
【００２５】
プリミティブデータ（ｐｒｉｍｉｔｉｖｅＤａｔａ）型の定義の追加は比較的まれに発生し得るが、新しいプリミティブデータ（ｐｒｉｍｉｔｉｖｅＤａｔａ）型のための新しいコードを、ＯＰＧ３の再生成もしくは再編成を伴うことなく既存のＯＰＧ３内に組み込むことができる。ライフ・サイエンス応用においては、たとえば：配列、複数配列アライメント、ゲル・イメージ、およびタンパク質構造を含むドメイン固有のプリミティブデータ（ｐｒｉｍｉｔｉｖｅＤａｔａ）型を追加することもできる。またここで注意を要するが、プリミティブデータ（ｐｒｉｍｉｔｉｖｅＤａｔａ）型がアプリケーション内において実行可能なアルゴリズムもしくはカスタム・クラス（プログラム・モジュール）を含むことも可能である。
【００２６】
コンポジットデータ（ｃｏｍｐｏｓｉｔｅＤａｔａ）のノード１６は、任意データ型のノード、すなわちプリミティブデータ（ｐｒｉｍｉｔｉｖｅＤａｔａ）、配列、グラフ、参照、およびコンポジットデータ（ｃｏｍｐｏｓｉｔｅＤａｔａ）の複合レイヤ化グラフである。配列ノードは、任意データ型のノードからなる同質のｎ次元配列である。グラフ・ノードは、任意データ型のノードからなる有向グラフである。参照ノードは、任意データ型のノードのインスタンスに対するポインタである。
【００２７】
各データ・ノードは、定義（Ｄｅｆｉｎｉｔｉｏｎ）１７もしくはインスタンス（Ｉｎｓｔａｎｃｅ）１８のうちのいずれかのテンプレートデータベース（ｔｅｍｐｌａｔｅＤａｔａｂａｓｅ）型を有する。定義ノードは、その定義ノード１９に対応するすべてのインスタンス・ノード２０に共通のプロパティのセットを含む。これらのプロパティは、インスタンス・ノードの値、すなわちそのノードのプロパティのサブセットがどのように処理され、表示されるかをコントロールする。たとえば、表示および編集は、データ値プロパティをその表示メディア上においてどのように表示できるか、あるいはその表示メディア上においてどのように編集できるかを示す２つのプロパティである。表示座標プロパティは、値が表示できるコンピュータ・モニタ上の位置を示す；ほかのプロパティは、フォント、色等を示す。プロパティは、入力を検査する正規表現の使用を含めた妥当性検査基準も含むことができる。プロパティは、プロセス・ノード固有とすることが可能であり、言い換えると各定義ノードはプロパティ２１のデフォルトのセットを有するが、任意のプロセス・ノード２２について、プロパティは、そのプロセス・ノードだけのために再定義２３が可能である。アクティブなプロセス・ノードのアプリケーション状態内に存在する任意の対応するインスタンス・ノードは、それのノードプロパティを、そのプロセス・ノードのために使用することになる。インスタンス・ノードのためのプロセス・ノード固有のプロパティが存在しない場合には、対応する定義ノードのデフォルトのプロパティが使用される。さらに、プロパティは、アプリケーション状態ノード固有とすることが可能であり、言い換えるとプロパティ２３ａは、アプリケーション状態Ｘ２２ａのためにだけ定義される。（アプリケーション状態については、ＤＧＩ  ２の説明の中で詳細を後述する。）データ定義ノードのプロパティをプロセス固有またはアプリケーション状態固有にできるだけでなく、データ定義ノード自体をプロセス固有またはアプリケーション状態固有にできる。この態様で指定されるデータ定義ノードは、与えられたプロセスもしくはアプリケーション状態（またはプロセスおよび／またはアプリケーション状態の組み合わせ）に対してのみ適用されることになり、そのほかすべてのプロセス・ステップもしくはアプリケーション状態において、この例示の実施態様では無視されることになる。
【００２８】
インスタンス・データ・ノードは、データ定義ノードの特定のインスタンス化である。プロパティもまた、データ・インスタンス・レベルにおいて設定することができる。固有のデータ型は、それら自体の組になったプロパティを有することもある。たとえばファイルのデータタイプ（ｄａｔａＴｙｐｅ）は、ファイル名およびパスのプロパティを有することになり、それらはインスタンス固有である。すべてのデータ型は、少なくとも１つの値プロパティを有し、それはインスタンス固有である。インスタンス固有のプロパティについて、定義ノードは、各プロパティのためのデフォルトの値を保持することができる。
【００２９】
すべてのデータ・ノードは、定義ノード内において、その定義ノードのすべてのインスタンスについて設定される持続時間プロパティを有する（定義ノード自体の寿命に影響する定義持続時間プロパティも存在することができる）。このプロパティを使用して、一過性および持続性のインスタンス・ノードを作成することが可能である。持続性インスタンス・ノードは、長い時間期間にわたってＯＰＧ３内にストアされるが、一過性ノードは現在のセッション（またはそのいずれかのサブセット／スーパーセット−−長期または短期トランザクション依存および／またはプロセス・ノード依存とすることができる）の寿命にわたってのみ存在する。このメカニズムを用いると、一時的な作業ストレージの作成および操作を、その種のデータをＯＰＧ３内に永続的にストアすることなくＯＰＧ３によって（一過性の瞬時データとして）コントロールすることができるが、アプリケーションのユーザ／設計者によってそのように希望された場合に可能となる。
【００３０】
プロセス・ノード２４（図５）は、アプリケーションを介してインスタンス・ノードのフローをコントロールし、そのアプリケーションによって使用される表示メディアを介してインスタンス・ノードの作成、修正、および表示をコントロールする。オペレーション・ノード２５は、プロセス・ノードの１つの型であるが、アプリケーションの表示メディアに対する変更も含め、アプリケーションを通るデータならびにプロセスのフロー内の離散的なステップを定義する。
【００３１】
アプリケーション状態ノード２６は、ノード型がコンポジットである。それらは、論理的に接続されたインスタンス・ノード２７のセットを含み、それらはオペレーション・ノードのサブセットを介して作成され、修正され、あるいは表示される。レポート・ノード２８は、特化されたオペレーション・ノードであり、ＯＰＧ３内の持続性データの修正を許可しない（データ・ノードに関連するいくつかの特化されたレポートを除く）。アプリケーション・ノード２９は、ノード型がコンポジットである。それらは、論理的に接続されたプロセスおよびデータのノード３０のセットを含む。
【００３２】
ＯＰＧ３内のすべてのノードは、ノード間の関係を定義するエッジによって接続される。この関係は、限定する意図ではないが：変換、受動、コントロール通過、およびリレーショナルを含むことができる。エッジはプロパティを有するが、ノードとは異なりほかのノードもしくはエッジを含まない（ただし、プロパティの値はノードとなり得る）。本発明の１つの実施態様においては、３つのエッジ型が定義される：すなわち、プロセストゥプロセス（ｐｒｏｃｅｓｓＴｏＰｒｏｃｅｓｓ）、プロセストゥデータ（ｐｒｏｃｅｓｓＴｏＤａｔａ）、およびデータトゥデータ（ｄａｔａＴｏＤａｔａ）である（図６）。プロセストゥプロセス（ｐｒｏｃｅｓｓＴｏＰｒｏｃｅｓｓ）エッジ３１はプロセス・ノード間の関係を定義し、プロセストゥデータ（ｐｒｏｃｅｓｓＴｏＤａｔａ）エッジ３２はプロセス・ノードとデータ・ノードの間の関係を定義し、データトゥデータ（ｄａｔａＴｏＤａｔａ）エッジ３３はデータ・ノード間の関係を定義する。この実施態様の範囲内において、以下のパラグラフはこれら３つのエッジ型の具体的なインスタンスを定義する。
【００３３】
プロセストゥプロセス（ｐｒｏｃｅｓｓＴｏＰｒｏｃｅｓｓ）エッジには３つのサブタイプが存在する：すなわち表示、キュー、およびバッチである（図７）。オペレーション・ノードまたはレポート・ノード間の表示エッジ３４は、アプリケーション内のプロセス・コントロールがこれらのノード間で−−エッジによって指定される方向に−−移動することを示す。オペレーションＡにおけるアプリケーション内のアプリケーション状態は、オペレーションＡにおける実行の後に、オペレーションＢにおいて表示メディア上に表示される。この例は、アプリケーション内の１つのスクリーンから別のスクリーンへの移動を定義している。
【００３４】
オペレーション・ノードまたはレポート・ノード間のキュー・エッジ３５は、プロセス・コントロールがノードＡからノードＢに移動するとき、アプリケーション状態がノードＢのキュー内に入れられるが、ユーザがアプリケーション・インターフェースを介して追加の動作（表示メディア上のノードＢの表現内に表示されたリスト上のそのアプリケーション状態を表すリンクをクリックすること等）を行うまで表示されない。この例は、アプリケーション内のワークフロー操作を記述している。
【００３５】
レポート・ノードとオペレーション・ノードの間のバッチ・エッジ３６は、アプリケーション状態がそのアプリケーション内においてオペレーションＡからオペレーションＢへ移動するとき、オペレーションＢによって定義され、バックグラウンド・プロセスとして起動される処理をもたらす。バッチ・エッジは、エッジ内のスケジュールタイム（ｓｃｈｅｄｕｌｅＴｉｍｅ）プロパティを基礎としてバックグラウンドで実行する同時プロセス・ノードのスケジュールに使用される。ここで注意を要するが、これらすべてのエッジは、データ・ノードをプロパティとして保持することが可能であり、それをエッジの条件付き実行の起動に使用することができる。したがって、与えられたスクリーンが２つのデータ・ノードの間の比較の結果を基礎としてアプリケーション内で表示されるように、あるいは表示されないようにすることができる。
【００３６】
データトゥデータ（ｄａｔａＴｏＤａｔａ）エッジには、５つのサブタイプが存在する：すなわち、コピー、計算、分割、併合、および結合である（図８）。すべてのデータトゥデータ（ｄａｔａＴｏＤａｔａ）エッジは、データ型およびプリミティブデータ（ｐｒｉｍｉｔｉｖｅＤａｔａ）型アウェアである。２つの配列の間のコピー・エッジ３７は１つの配列から別の配列へ、そのエッジが定義できるマッピング・プロパティを条件としてデータ要素をコピーすることになる。プリミティブデータ（ｐｒｉｍｉｔｉｖｅＤａｔａ）から配列へのコピーは、プリミティブデータ（ｐｒｉｍｉｔｉｖｅＤａｔａ）ノードの値およびいくつかのプロパティのコピーおよび反復を、その配列のすべての要素に対して行うことになる。適切な値変換が、必要時に、異なるプリミティブデータ（ｐｒｉｍｉｔｉｖｅＤａｔａ）型（文字列と整数等）のノード間において、そのエッジのプロパティに応じて：すなわちストロングタイプ（ｓｔｒｏｎｇＴｙｐｅ）であるか、あるいはウィークタイプ（ｗｅａｋＴｙｐｅ）であるかに応じて生じる。ウィークタイプ（ｗｅａｋＴｙｐｅ）のエッジは、その種のデータ変換が生じることを許容するが、ストロングタイプ（ｓｔｒｏｎｇＴｙｐｅ）のエッジはそれを禁止する。
【００３７】
計算エッジ３８は、複雑な数学的公式および／または正規表現を提供して任意数のデータ・ノードに作用し、別のデータ・ノードに計算する。分割エッジ３９および併合エッジ４０は、アプリケーション状態オブジェクトがアプリケーション内の１つのオペレーションから別のオペレーションへ移動するときに、それらの分割または併合を可能にする。これらは、１つのアプリケーション状態オブジェクト内のインスタンス・ノードを複数のアプリケーション状態オブジェクトに分割することを、それらが１つのオペレーションから別のオペレーションへ流れるときに可能にするか、あるいは多くのアプリケーション状態オブジェクト内のインスタンス・ノードを１つのアプリケーション状態オブジェクトに併合することを可能にする。
【００３８】
結合エッジ４１は、異なる定義ノードを基礎とするコンポジットデータ（ｃｏｍｐｏｓｉｔｅＤａｔａ）インスタンス・ノードが結合され、まとまってＯＰＧ３から検索されることを可能にする。参照ノードは、これらの場合に結合エッジに関連して使用することができる。
【００３９】
プロセストゥデータ（ｐｒｏｃｅｓｓＴｏＤａｔａ）型は３つ存在する：すなわち、作成、検索、および実行である（図９）。作成エッジ４２は、プロセス・ノードにおけるアプリケーション状態内に定義ノードの新しいインスタンスを作成する。検索エッジ４３は、データ・インスタンスを検索し、それらをプロセス・ノードのアプリケーション状態オブジェクト内に置く。実行エッジ４４は、そのプロセスにおけるアプリケーションの論理およびコントロール・フローの間に、データ・ノード内に含めることのできるプログラム・コードまたはコントロール構造（アルゴリズムを含む）を実行することになる。
【００４０】
ここで、本発明の異なる実施態様が、上記のすべてのエッジ型およびサブタイプの性質を追加し、あるいは修正し得ることに注意する必要がある。
【００４１】
本発明の１つの実施態様においては、ユーザが、アプリケーション内の機能ならびにデータに対するアクセスをコントロールする特化されたオブジェクト型によって表される（図１０）。ユーザ・オブジェクト４５は、ＯＰＧ３内において、ＯＰＧアプリケーションのいずれかの部分に対するアクセスを有する個別のユーザごとに作成される。追加のユーザ・オブジェクトを作成して、所望の任意の態様で機能もしくはデータ・アクセスのセットをグループ化してもよい。各ユーザ・オブジェクトは、そのアプリケーション内においてアクセスが許可されているすべてのプロセス４６およびデータ４７のオブジェクトを含む。アクセス権が、ユーザ・オブジェクト内の各オブジェクトに割り当てられ、次の２つのリストのいずれかに含まれる１つとすることができる：（リスト１−−データ・インスタンス用）ブロックＩ、読み出しＩ、書き込みＩ、ロールバック、（リスト２−−データ定義および処理用）ブロックＭ、読み出しＭ、書き込みＭ。ユーザ・オブジェクトがコンポジット・オブジェクト４８のためのアクセス権を包含する場合に、ダイナミック・グラフ・インタプリタ（Ｄｙｎａｍｉｃ  Ｇｒａｐｈ  Ｉｎｔｅｒｐｒｅｔｅｒ）２が、そのコンポジット・オブジェクトのすべての子ノード４９に対して同一のアクセス権を、その構成ツリーを使用して自動的に割り当てる。しかしながらユーザ・オブジェクトが、さらにその子ノード５０の１つを含んでいる場合には、それに代えて、その特定の子のためにそのアクセス権が使用される（図１０においては、データＤがその親の書き込みアクセスに代えて読み出しアクセスのみを有する）。ここで注意を要するが、これらの権利は各リスト内において順序づけられて下位を包含し、したがってロールバック権は、読み出しＩならびに書き込みＩアクセスを含む。
【００４２】
ブロック権は、すべてのアクセス権を取り去るために使用され、デフォルトのアクセス権がブロックされることから親の権利を無効にするとき−−すなわちオブジェクトもしくはその親がユーザ・オブジェクト内に存在しないとき−−にのみ必要になる。またユーザ・オブジェクトは、別のユーザ・オブジェクトからすべての権利を継承することができる。これは、任意数のグループ権または役割−−その種のグループもしくは役割の階層構造を含む−−の設定を可能にし、それを使用して多くのユーザに対し、同時に権利を更新することができる。
【００４３】
監査は、もう１つの特化されたオブジェクト型である。これは、アプリケーション内のデータに対するすべてのアクセスおよび修正の追跡に使用される（図１１）。アプリケーション状態５１およびコンポジットデータ（ｃｏｍｐｏｓｉｔｅＤａｔａ）５２両方のオブジェクト内に常駐し、アプリケーション状態５３およびデータ・インスタンス５４両方のレベルにおいて、ユーザによるデータに対するすべてのアクセスおよび修正、時刻、およびオペレーション・ステップを追跡する。監査プロパティがアプリケーション状態内で使用されているすべての定義データについて「オン」であれば、そのトランザクション内の任意のオペレーション・ステップまでアプリケーション状態のロールバックを実行することができる。キューに入れられているオペレーション（ワークフロー内等）の場合には、これが、多くのユーザ・セッションにわたって生じることのある長い実行トランザクションのロールバックを可能にする。ＤＧＩ２は、すべてのデータに対するトランザクション後の変更をチェックし、その場合のロールバックを防止する（あるいは、適切なプロパティが設定されていれば、置き換えを許可する）。
【００４４】
インデクス・オブジェクトを、オブジェクト・プロセス・グラフ（Ｏｂｊｅｃｔ  Ｐｒｏｃｅｓｓ  Ｇｒａｐｈ）３内において指定し、サーチ・パスを短縮してパフォーマンスを向上することができる。
【００４５】
ダイナミック・グラフ・インタプリタ
ダイナミック・グラフ・インタプリタ（Ｄｙｎａｍｉｃ  Ｇｒａｐｈ  Ｉｎｔｅｒｐｒｅｔｅｒ）（ＤＧＩ）２（図１２）は、ダイナミックＯＰＧ３を解釈し、表示メディア５７を使用してアプリケーションのビジュアル側面を動的に表示する。ＤＧＩ２は、アプリケーション状態ノード５８およびそのプロセスおよびデータ・ノード５９に調和してアクセスし、アプリケーションの個別のインスタンスを実行する。
【００４６】
ＯＰＧ３内のアプリケーション状態ノードおよびプロセスおよびデータ・ノードは、全体として、アプリケーション情報の表示ならびに１つの状態から別の状態へのアプリケーション・インスタンスの遷移両方に必要なすべての情報を含む。アプリケーション状態ノード（図１３）６０は、アプリケーション・インスタンスのアクティブな現在のオペレーション・ノード（１ないしは複数）をはじめ、特定の状態におけるインスタンスに関連するすべてのデータ・インスタンス・ノードを含む。
【００４７】
ＤＧＩ２は、１つのアプリケーション状態から別のそれへの遷移６１を行うこと、およびアプリケーション状態情報を表示メディア５７上に表示することによって、アプリケーションのインスタンス（図１４）を実行する（伝統的な意味における解釈、実行、実施、あるいは動作と等価）。表示メディア上にアプリケーション状態情報を表示することによって、ユーザがアプリケーションと動的にインタラクションし、アプリケーション状態に変更をもたらすことが可能になる。また、ユーザがアプリケーションのＯＰＧ３のほかの要素−−プロセス・ノード、データ定義ノード、およびそれらのノード間の任意のエッジ情報６２等−−を変更することも可能になる。これらのＯＰＧ３の要素に対する変更は、直ちに、ＤＧＩ２によるＯＰＧ３の解釈をもたらし、結果としてアプリケーションが、それが解釈されている間、すなわち実行間に動的に変化することを可能にする。
【００４８】
ＤＧＩ２は、表示プロパティに従ってアプリケーション・インスタンスの状態情報を表示メディア５７上にレンダリングする（図１５）。状態情報は、データ・インスタンス・ノード内に保持されている。表示プロパティは、オペレーション固有のデータ・インスタンス表示プロパティもしくはデータ定義ノード内に保持されているデフォルトの表示プロパティのいずれかになる。オペレーション固有のデータ・インスタンス表示プロパティは、デフォルトの表示プロパティに優先される。ＤＧＩ２は、アプリケーション状態ノード６３内のすべてのデータ・インスタンス・ノード６４を調べてＯＰＧ３内の対応するデータ定義ノード６５、およびアクティブなオペレーション内のそれらに対応する表示プロパティを見つけ出す。データ定義ノードおよびアクティブなオペレーションのための特定の表示プロパティが存在しないときには、そのデータ定義ノードのためのデフォルトの表示プロパティが使用される。その後すべてのデータ・インスタンス−−それらのインスタンス固有のプロパティ値を伴う−−が、それらのオペレーション固有の表示プロパティに従って表示メディア５７上にレンダリングされる。そのほかの、アクティブなオペレーションに固有の表示プロパティもまた、表示メディア上においてレンダリングすることができる。
【００４９】
ＤＧＩ２は、最初にアプリケーション状態内のアクティブなオペレーションのノード（１ないしは複数）を調べることによってアプリケーションの状態を変更する（図１６）。続いてそれは、ＯＰＧ３内のオペレーション・ノードを調べ、オペレーション・ノードから出ているエッジを見つけ出し、それらのエッジによって示される変換を実行する。それに加えてアプリケーションの状態ノード内のデータ・インスタンスに対応するデータ定義ノードを調べ、それらのデータ定義ノードから出ているエッジを見つけ出し、それらのエッジによって示される変換を実行する。したがってたとえば、図１６においては、アプリケーション状態Ｘ６６がアプリケーション状態Ｘ’６７に変換される。アクティブなオペレーションは、オペレーションＡからオペレーションＢに変更され、２つの新しいデータ・インスタンス−−データ・インスタンスＣおよびデータ・インスタンスＤ−−がそのアプリケーション状態に追加されている。ＸからＸ’への変更に必要な変換は、対応するオペレーションならびにデータ定義ノードおよびそれらを相互接続しているエッジ６８によって決定される。
【００５０】
図１７〜２０は、アプリケーション・インスタンスの１つのステップの実行（１つのアクティブなオペレーションから次のアクティブなオペレーションへの移動に等価）の例をさらに詳細に記述している。図１７は、ステップの実行間にＤＧＩ２によってアクセスされることになるオペレーション・ノード、データ定義ノード、およびエッジ変換を列挙したＯＰＧ３の一部を記述している。また図１７は、エッジ変換が実行されるシーケンス：作成６６、作成６７、コピー６８、表示６９、作成７０、作成７１、およびコピー７２も列挙している。
【００５１】
この例（図１８）は、表示メディア５７上に表示されているアプリケーション状態Ｘ７３を伴って開始する。図１８が、アプリケーション状態Ｘ７３を伴って開始する段階においては、列挙したとおり、図１７のエッジ変換の作成６６および作成６７をすでに実行しているが、図１７に示されているそのほかのエッジ変換は実行していない。図１５に記述されているとおり、表示メディア５７上に表示されるものは、このアプリケーション状態内のデータ・インスタンスに対応するデータ定義７５内に収められている表示プロパティによってコントロールされる。ＤＧＩ２は、ユーザによるこの表示メディア５７とのユーザ７７のインタラクションを管理し、表示メディア５７上におけるユーザ７７のインタラクションに従ってアプリケーション状態内のデータ・インスタンスを更新する。ここで注意を要するが、ユーザ７７はＤＧＩ２を介してアプリケーション状態７３内のデータ・インスタンス内のプロパティを更新することが可能であり、さらにそのユーザ７７は同時に、ＤＧＩ２を介してアプリケーション状態７３内のそれらのデータ・インスタンスに対応するデータ定義７５のプロパティを更新することができる。ユーザ７７が、表示メディア５７を介してアプリケーション状態Ｘ７３とのインタラクションを完了すると、ＤＧＩ２がコピー６８（図１７）のエッジ変換を実行し、その結果として、表示メディア５７を介してユーザ７７によってなされた更新とともに、更新ならびに変換後のアプリケーション状態Ｘ’７８がＯＰＧ３内にもたらされる。ＤＧＩ２は、この時点においてＯＰＧ３内のオペレーション・ノード、データ定義ノード、およびエッジ変換８０を調査し、表示６９、作成７０、および作成７１（図１７）エッジ変換を実行し、その結果として更新ならびに変換後のアプリケーション状態Ｘ”８１がもたらされる。この更新後のアプリケーション状態Ｘ”８１もまた、図１５の中で述べた態様でＤＧＩ２を介して解釈されて表示メディア５７上に表示される。
【００５２】
前述したとおり、また図１８に含意されているとおり（ＤＧＩ２とデータ定義ノード７５の間の双方向矢印参照）ユーザは、データ・インスタンス・ノードの更新の間に同時にデータ定義ノードを更新することができる。しかしながら、アプリケーション定義を、その実行間に同時に更新できることは、既存のデータ定義ノードの更新に限定されず、アプリケーションのすべての態様を完全に詳述するＯＰＧ３の任意部分の更新に拡張することができる。したがって図１９においてユーザ８８は、アプリケーション状態Ｘ８３を更新しつつ、同時に表示メディア５７を介し、ＤＧＩ２を媒介して新しいデータ定義ノードＥ  ８６を作成エッジ８５とともにＯＰＧ３に追加している。
【００５３】
新しい更新ならびに変換済みのアプリケーション状態Ｘ’８９が、ＤＧＩ２によって作成される。この新しいアプリケーション状態Ｘ’８９は、その後同様に、変換ならびに更新をコントロールするＯＰＧ３内のプロセス、データ定義ノード、およびエッジ９１を使用してＤＧＩ２によって更新ならびに変換が行われる。これらのデータ定義ノードおよびエッジは、新しく定義された８５および８６等のノードおよびエッジを含むことがある。したがってこの例においては、その後に続くアプリケーション状態Ｘ”９２が、このアプリケーション・ステップにおいて作成された新しいデータ・インスタンスＥを含むことになる。その後アプリケーション状態Ｘ”９２が、前述同様にＤＧＩ２を介して表示メディア５７上に表示される。
【００５４】
図２０は、図１９で述べたアプリケーション・ステップの実行から結果としてもたらされるデータ定義ノードおよびエッジに対する変化を略述している。図２０と図１７を比較されたい。図２０は、新しいデータ定義ノードＥ９５および新しい作成エッジ９６を含んでいる。ここで注意を要するが、図４の中ですでに論じたとおり、特定のデータ定義ノードもしくはデータ定義ノードのプロパティのセットは、すべてのプロセス（デフォルト）、個別のプロセスもしくはプロセスのセット、あるいは特定のアプリケーション状態について定義することができる。したがってこの例においては、データ定義ＣおよびＤが、すべてのプロセス９９のためのデフォルト定義であり、データ定義Ｅ９５および作成エッジ９６は、アプリケーション状態Ｘ１００だけのために定義されている（これはまた、この例において、Ｘ’およびＸ”等のすべてのＸの変換に対しても適用される）。このことはその後に続くそのアプリケーションの実行が、アプリケーション状態Ｘにおいてなされていたアクセスとまったく同様にデータ定義Ｃ９７およびＤ９８にアクセスすることを意味するが、データ定義Ｅは、アプリケーション状態Ｘに対してだけ適用されることになる。図１９の例においては、それが、アプリケーション状態Ｘだけに代えて、すべてのプロセスに対する新しいデータ定義Ｅに、同程度の容易さで適用可能であった。
【００５５】
図１７〜２０に略説したＤＧＩ２により、アプリケーションが実行している間に、同時に開発および修正を行うことが可能になる。それに加えてその種の開発および修正を、そのアプリケーションのその後に続く実行、その後に続く実行のサブセット、もしくは実行中のそのアプリケーションの現在のインスタンスそのものに適用することが可能になる。
【００５６】
ＯＰＧおよびＤＧＩの方法および実施態様
以下は、ＯＰＧ３のシステムならびにＤＧＩ２のシステムの作成の本発明に従った例示的な方法の説明であり、その種のシステムは上に定義され、述べられている。ここには、この方法の１つの実施態様が含められている。
【００５７】
（１）ハードウエア／オペレーティング・システム・プラットフォーム、プログラミング・フレームワーク、データベース、および／またはファイル・システム、およびＯＰＧ３およびＤＧＩ２のシステムを構築し、実行させる表示メディアの初期セットを選択する。１つの実施態様においては、マイクロソフト・ウインドウズＸＰ（Ｍｉｃｒｏｓｏｆｔ  Ｗｉｎｄｏｗｓ  ＸＰ）ソフトウエアおよびマイクロソフト・インターネット・エクスプローラ（Ｍｉｃｒｏｓｏｆｔ  Ｉｎｔｅｒｎｅｔ  Ｅｘｐｌｏｒｅｒ）（ＩＥ）ブラウザを実行しているインテル（Ｉｎｔｅｌ）ベースのＰＣに接続された、イントラネット上のインテル（Ｉｎｔｅｌ）ベースのサーバハードウェア上で実行されるリナックス（Ｌｉｎｕｘ）オペレーティング・システムを使用する。ＰＣ端末上で実行されるＩＥブラウザは、表示メディアとして作用する。ここでは、オブジェクト指向プログラミング言語−−サンマイクロシステムズ（Ｓｕｎ  Ｍｉｃｒｏｓｙｓｔｅｍｓ）からのジャバ（Ｊａｖａ（登録商標））−−を使用し、ＯＰＧ３およびＤＧＩ２のシステムをプログラムする。また、ジャバ・データ・オブジェクト（Ｊａｖａ  Ｄａｔａ  Ｏｂｊｅｃｔ）適合オブジェクト指向データベース・システム−−イスラエルのオブジェクトＤＢソフトウエア（ＯｂｊｅｃｔＤＢ  Ｓｏｆｔｗａｒｅ）からのオブジェクトＤＢ（ＯｂｊｅｃｔＤＢ）−−を使用し、その中にわれわれのＯＰＧ３のシステムの持続性データをストアする。われわれの表示メディア５７上へのＤＧＩ２からの情報のレンダリングには、ジャカルタ・ストラッツ（Ｊａｋａｒｔａ  Ｓｔｒｕｔｓ）フレームワークおよびジャバ・サーバ・ページズ（Ｊａｖａ  Ｓｅｒｖｅｒ  Ｐａｇｅｓ）を使用する。（ダイナミック・グラフ・インタプリタ・レンダリング・システム（Ｄｙｎａｍｉｃ  Ｇｒａｐｈ  Ｉｎｔｅｒｐｒｅｔｅｒ  Ｒｅｎｄｅｒｉｎｇ  Ｓｙｓｔｅｍ）は将来の特許の内容となろう）。われわれは、リナックス（Ｌｉｎｕｘ）の下に実行されるジャカルタ・トムキャット（Ｊａｋａｒｔａ  Ｔｏｍｃａｔ）アプリケーション・サーバを使用する。ＯＰＧ３およびＤＧＩ２のシステムは、トムキャット（Ｔｏｍｃａｔ）アプリケーション・サーバ上で実行されることになる。この実施態様はまた、プログラミングの変更をまったく伴わずにウインドウズＸＰ（Ｗｉｎｄｏｗｓ  ＸＰ）オペレーティング・システムの下にローカルに実行されるトムキャット（Ｔｏｍｃａｔ）アプリケーション・サーバ上でも実行できる。同様にオブジェクトＤＢ（ＯｂｊｅｃｔＤＢ）データベースのバージョンは、リナックス（Ｌｉｎｕｘ）の下のサーバ上で実行すること、もしくはウインドウズＸＰ（Ｗｉｎｄｏｗｓ  ＸＰ）の下のＰＣ上でローカルに実行することのいずれもが可能である。さらにわれわれは、エクリプス・ファウンデーション（Ｅｃｌｉｐｓｅ  Ｆｏｕｎｄａｔｉｏｎ）のエクリプス（Ｅｃｌｉｐｓｅ）開発プラットフォームをジェニュイテック（Ｇｅｎｕｉｔｅｃ）からのマイエクリプス（ＭｙＥｃｌｉｐｓｅ）プラグ−インとともに使用し、その上でジャバ（Ｊａｖａ）ベースのソフトウエア開発を行う。ここで注意を要するが、上記のオペレーティング・システム、アプリ���ーション・プラットフォーム、およびプログラミング言語ツールは、本発明の１つの可能実施態様を表しているに過ぎない。
【００５８】
（２）添付図面１〜２０とともに前述した本発明の種々の実施態様の要約および説明を使用し、必要な機能を包含することになるクラスおよび適切なクラス階層のセットを定義する。ガンマ（Ｇａｍｍａ）ほかによる『デザイン・パターンズ（Ｄｅｓｉｇｎ  Ｐａｔｔｅｒｎｓ）』（アディソン・ウェスリー（Ａｄｄｉｓｏｎ  Ｗｅｓｌｅｙ）１９９５年）およびグランド（Ｇｒａｎｄ）による『パターンズ・イン・ジャバ（Ｐａｔｔｅｒｎｓ  ｉｎ  Ｊａｖａ）』（ワイリー・コンピュータ・パブリッシング（Ｗｉｌｅｙ  Ｃｏｍｐｕｔｅｒ  Ｐｕｂｌｉｓｈｉｎｇ）１９９８年）の中で述べられているデザイン・パターンは、必要な機能を伴うクラスのセットを作る上で有用と見られる。これらのクラスの定義のためのハイ・レベルのケース（ＣＡＳＥ）ツールもまた使用することができる。定義可能ないくつかのクラスを次に示す。
ａ．  複合レイヤ化グラフ（図２）の作成、修正、更新、およびナビゲートのために必要な機能を扱うためのクラスのセット。その種のクラスは、イテレータ（Ｉｔｅｒａｔｏｒ）構造パターン（上記引用のテキスト参照）を部分的に基礎とすることができる。
ｂ．  データおよびプロセス・ノード両方のための種々の型の階層（図３〜５）の作成、修正、更新、およびナビゲートのために必要な機能を扱うためのクラスのセット。その種のクラスは、コンポジット（Ｃｏｍｐｏｓｉｔｅ）パーティショニング・パターンを部分的に基礎とすることができる。ファクトリ・メソッドおよびアブストラクト・ファクトリ生成パターンもまた、ここおよびこれに続くほかのクラス（上記引用のテキスト参照）のセット中で有用となろう。
ｃ．  種々のエッジ型を扱うクラスのセット（図６〜９）。
ｄ．  ユーザ・オブジェクトを扱うクラスのセット（図１０）。
ｅ．  監査オブジェクトを扱うクラスのセット（図１１）。
ｆ．  ＤＧＩ２の最上位レベルのフレームワークを扱うクラスのセット（図１２、１４）。この種のクラスは、イベント処理を扱う機能を含む必要があり、オブザーバを振る舞うパターン（上記引用のテキスト参照）を部分的に基礎とすることができる。
ｇ．  アプリケーション状態の作成、修正、更新、およびナビゲートのために必要な機能を扱うためのクラスのセット（図１３）。
ｈ．  アプリケーション状態を表示するクラスのセット（図１５）。このクラスのセットは、ＤＧＩ３およびＯＰＧ２のシステムから表示メディア上にデータをレンダリングするために使用されるシステムと広範囲にわたってインターフェースしなければならない。このダイナミック・グラフ・インタプリタ・レンダリング・システム（Ｄｙｎａｍｉｃ  Ｇｒａｐｈ  Ｉｎｔｅｒｐｒｅｔｅｒ  Ｒｅｎｄｅｒｉｎｇ  Ｓｙｓｔｅｍ）は、１つの実施態様において、ジャバ・サーバ・ページズ（Ｊａｖａ  Ｓｅｒｖｅｒ  Ｐａｇｅｓ）を使用し、ジャカルタ・ストラッツ（Ｊａｋａｒｔａ  Ｓｔｒｕｔｓ）フレームワーク上に構築される。
ｉ．  アプリケーション状態を変更するためのクラスのセット（図１６〜２０）。この種のクラスは、イベント処理を扱う機能を含む必要があり、オブザーバを振る舞うパターン（上記引用のテキスト参照）を部分的に基礎とすることができる。
ｊ．  ＤＧＩ２内においてプロセス、データ定義ノード、およびエッジを変更するためのクラスのセット（図１６〜２０）。
【００５９】
上記のクラスのほとんどは、持続性として定義される必要があり、それによってそれらの中で定義される関連の属性をストレージ・メディア等の長期持続性メディアに保存することが可能になる。オブジェクトＤＢ（ＯｂｊｅｃｔＤＢ）等のＪＤＯ適合データベースが使用される場合には、最小限の追加プログラミングを伴ってこれを行うことができる−−必要となるものはＸＭＬファイル詳述だけであり、そのクラスは持続性である。ＤＧＩおよび表示メディアとインタラクションするダイナミック・グラフ・インタプリタ・レンダリング・システム（Ｄｙｎａｍｉｃ  Ｇｒａｐｈ  Ｉｎｔｅｒｐｒｅｔｅｒ  Ｒｅｎｄｅｒｉｎｇ  Ｓｙｓｔｅｍ）内のクラスは、概して持続性とはならない。
【００６０】
特定の実施態様を参照して本発明を相当に詳細に説明してきたが、ほかの実施態様も可能である。たとえば、異なるオペレーティング・システム、プログラミング言語、およびソフトウエア・アーキテクチャを使用して本発明の実施態様を実施してもよい。したがって付随する特許請求の精神と範囲は、ここに含まれている実施態様の記述に限定されるべきでない。
【００６１】
前述したとおり、本発明の実施態様はハードウエア、ソフトウエア、ファームウエア、もしくは任意のプロセスおよび／またはそれらの実施態様を実施するための装置において具体化できる。本発明の実施態様はまた、フロッピー（登録商標）・ディスケット、ＣＤ−ＲＯＭ、ハード・ドライブ、あるいはそのほかのコンピュータ可読ストレージ・メディア等の有体メディア内において具体化されるインストラクションを含むコンピュータ・プログラム・コードの形式で具体化することもでき、それにおいてコンピュータ・プログラム・コードがコンピュータによってロードされ、実行されるとコンピュータが本発明を実施するための装置となる。本発明は、コンピュータ・プログラム・コードの形式で具体化されることも可能であり、たとえば、ストレージ・メディア内にストアされ、コンピュータによってロードされ、かつ／または実行されるか、あるいは電線またはケーブルを介し、光ファイバを通り、もしくは電磁放射線を経由するといった何らかの伝送メディアにわたって送信されるかによらず、それにおいてそのコンピュータ・プログラム・コードがコンピュータによってロードされて実行されたときに、そのコンピュータが本発明を実施するための装置となる。汎用マイクロプロセッサ上において実装されるときには、コンピュータ・プログラム・コード・セグメントによってそのマイクロプロセッサが、特定の論理回路を作り出すべく構成される。
【００６２】
本発明について、例示の実施態様を参照して説明してきたが、当業者によって理解されるとおり本発明の範囲から逸脱することなく種々の変更および等価物を用いたその要素の置換が考えられる。それに加えて、本発明の本質的な範囲から逸脱することなく、特定の状況もしくは材料をその教示に適合させるべく多くの修正を行うこともできる。したがって、本発明が本発明の実施のために企図された最良の形態として開示されているこの特定の実施態様に限定されることなく、付随する特許請求の範囲内に含まれるすべての実施態様を本発明が含むことが意図されている。さらに、第１、第２といった用語の使用は、順序または重要度の表示ではなく、むしろこれらの第１、第２といった用語は、１つの要素をほかと区別するために使用されている。
【図面の簡単な説明】
【００６３】
【図１】本発明の実施態様に従ったオブジェクト・プロセス・グラフ・ベースのコンピュータ・アプリケーションを示した説明図である。
【図２】本発明の実施態様に従った複合レイヤ化グラフを示した説明図である。
【図３】本発明の実施態様に従ったオブジェクト・プロセス・グラフの型階層を示した説明図である。
【図４】本発明の実施態様に従ったオブジェクト・プロセス・グラフのテンプレートデータベース（ＴｅｍｐｌａｔｅＤａｔａｂａｓｅ）型／プロパティを示した説明図である。
【図５】本発明の実施態様に従ったオブジェクト・プロセス・グラフのプロセス・ノードを示した説明図である。
【図６】本発明の実施態様に従ったオブジェクト・プロセス・グラフのエッジ型を示した説明図である。
【図７】本発明の実施態様に従ったオブジェクト・プロセス・グラフのプロセストゥプロセス（ＰｒｏｃｅｓｓＴｏＰｒｏｃｅｓｓ）型を示した説明図である。
【図８】本発明の実施態様に従ったＧＯＰデータベースのデータトゥデータ（ＤａｔａＴｏＤａｔａ）型を示した説明図である。
【図９】本発明の実施態様に従ったオブジェクト・プロセス・グラフのプロセストゥプロセス（ｐｒｏｃｅｓｓＴｏＤａｔａ）型を示した説明図である。
【図１０】本発明の実施態様に従ったオブジェクト・プロセス・グラフのユーザ・オブジェクトを示した説明図である。
【図１１】本発明の実施態様に従ったオブジェクト・プロセス・グラフの監査オブジェクトを示した説明図である。
【図１２】本発明の実施態様に従ったダイナミック・グラフ・インタプリタを示した説明図である。
【図１３】本発明の実施態様に従ったアプリケーション状態ノードを示した説明図である。
【図１４】本発明の実施態様に従ったダイナミック・グラフ・インタプリタのアプリケーション・インスタンスの実行を示した説明図である。
【図１５】本発明の実施態様に従ったアプリケーション状態の表示を示した説明図である。
【図１６】本発明の実施態様に従ったアプリケーション状態の変更を示した説明図である。
【図１７】本発明の実施態様に従ったアプリケーション状態のプロセスおよびデータ定義の変更を示した説明図である。
【図１８】本発明の実施態様に従ったアプリケーション状態の変更を示した説明図である。
【図１９】本発明の実施態様に従ったアプリケーション状態の変更およびデータ定義ノードの追加を示した説明図である。
【図２０】本発明の実施態様に従ったアプリケーション状態のプロセスおよびデータ定義の変更を示した説明図である。
【符号の説明】
【００６４】
１  インターフェース、２  ダイナミック・グラフ・インタプリタ（Ｄｙｎａｍｉｃ  Ｇｒａｐｈ  Ｉｎｔｅｒｐｒｅｔｅｒ）（ＤＧＩ）、３  オブジェクト・プロセス・グラフ（Ｏｂｊｅｃｔ  Ｐｒｏｃｅｓｓ  Ｇｒａｐｈ）（ＯＰＧ）、５  有向グラフ、７  有向グラフ、１３  プロセス・タイプ、１４  データ・タイプ、１５  プリミティブデータ（ｐｒｉｍｉｔｉｖｅＤａｔａ）、１６  コンポジットデータ（ｃｏｍｐｏｓｉｔｅＤａｔａ）、１７  定義（Ｄｅｆｉｎｉｔｉｏｎ）、１８  インスタンス（Ｉｎｓｔａｎｃｅ）、２０  インスタンス・ノード、２１  プロパティ、２２ａ  アプリケーション状態Ｘ、２３  再定義、２３ａ  プロパティ、４５  ユーザ・オブジェクト、４６  プロセス、４７  データ、４８  コンポジット・オブジェクト、４９  子ノード、５０  子ノード、５１  アプリケーション状態、５２  コンポジットデータ（ｃｏｍｐｏｓｉｔｅＤａｔａ）、５３  アプリケーション状態、５４  データ・インスタンス、５７  表示メディア、６１  遷移、６６  アプリケーション状態Ｘ、６７  アプリケーション状態Ｘ’、７３  アプリケーション状態Ｘ、７５  データ定義、７７  ユーザ、７８  アプリケーション状態Ｘ’、８０  エッジ変換、８１  アプリケーション状態Ｘ”、８３  アプリケーション状態Ｘ、８６  新しいデータＥ、８８  ユーザ、８９  アプリケーション状態Ｘ’、９２  アプリケーション状態Ｘ”、９７  データ定義Ｃ、９８  データ定義Ｄ、９９  プロセス、６，８，９，１０，１１，１２，１５，１６，１９，２０，２２，２４，２５，２６，２７，２８，２９，３０，５８，５９，６０，６３，６４，６５，８６，９５  ノード、３１，３２，３３，３４，３５，３６，３７，３８，３９，４０，４１，４２，４３，６２，６６，６７，６８，６９，７０，７１，７２，８５，９１，９６  エッジ。
【図１】
2008506162.tif 000003
【図２】
2008506162.tif 000004
【図３】
2008506162.tif 000005
【図４】
2008506162.tif 000006
【図５】
2008506162.tif 000007
【図６】
2008506162.tif 000008
【図７】
2008506162.tif 000009
【図８】
2008506162.tif 000010
【図９】
2008506162.tif 000011
【図１０】
2008506162.tif 000012
【図１１】
2008506162.tif 000013
【図１２】
2008506162.tif 000014
【図１３】
2008506162.tif 000015
【図１４】
2008506162.tif 000016
【図１５】
2008506162.tif 000017
【図１６】
2008506162.tif 000018
【図１７】
2008506162.tif 000019
【図１８】
2008506162.tif 000020
【図１９】
2008506162.tif 000021
【図２０】
2008506162.tif 000022
【国際調査報告】
2008506162.tif 000023
2008506162.tif 000024