(57)【特許請求の範囲】
【請求項１】
複数のクライアントが識別性を有する複数のオブジェクトデータをアクセスして任意の処理を実行するためのデータ処理装置において、
上記任意の処理にて対象となるオブジェクトデータの集合であって、クライアントの要求に基づいて生成され、クライアントが上記複数のオブジェクトデータを用いた上記任意の処理を実行するために必要なコンテキストを、クライアント毎に管理する第１の管理手段と、
上記コンテキスト毎に、該オブジェクトデータ各々に対応するエンティティを管理する第２の管理手段と、
上記クライアント毎のコンテキストの、親子関係を管理する第３の管理手段と、
アクセス要求のあったクライアントに対し、上記第１の管理手段による管理情報から該クライアントが現在使用しているコンテキストを識別し、該コンテキストと上記第２の管理手段による管理情報から該クライアントがアクセス対象としたオブジェクトデータに対応するエンティティを取得し、該取得したエンティティの内容に対してアクセスする処理を含むアクセス処理を行うアクセス手段とを備え、
上記アクセス手段は、上記第２の管理手段による管理情報において上記対象オブジェクトデータに対応するエンティティが空である場合、上記第３の管理手段によるコンテキストの親子関係に基づいて、上記クライアントが現在使用しているコンテキストの親の関係にあるコンテキストを取得し、上記第２の管理手段による管理情報から該親の関係にあるコンテキストでのエンティティを取得して、該エンティティの内容に対してアクセス処理を行うことを特徴とするデータ処理装置。
【請求項２】
上記アクセス手段は、上記第２の管理手段による管理情報において上記対象オブジェクトデータに対応するエンティティが空であり、アクセス要求の内容が参照である場合、上記第３の管理手段によるコンテキストの親子関係に基づいて、上記クライアントが現在使用しているコンテキストの親の関係にあるコンテキストを取得し、上記第２の管理手段による管理情報から該親の関係にあるコンテキストでのエンティティの内容を読み出して、これをアクセス要求のあったクライアントへ供給することを特徴とする請求項１記載のデータ処理装置。
【請求項３】
上記アクセス手段は、上記第２の管理手段による管理情報において上記対象オブジェクトデータに対応するエンティティが空であり、アクセス要求の内容が更新である場合、上記第３の管理手段によるコンテキストの親子関係に基づいて、上記クライアントが現在使用しているコンテキストの親の関係にあるコンテキストを取得し、上記第２の管理手段による管理情報から該親の関係にあるコンテキストでのエンティティの内容を、上記アクセス処理の対象のエンティティにコピーすることを特徴とする請求項１記載のデータ処理装置。
【請求項４】
クライアントからの要求に基づいて、上記コンテキスト間で、上記コンテキストに含まれるオブジェクトデータに対応するエンティティのコピー処理を行うコピー手段を備えることを特徴とする請求項１記載のデータ処理装置。
【請求項５】
クライアントからの要求に基づいて、上記コンテキストの切り換えを行う切換手段を備えることを特徴とする請求項１記載のデータ処理装置。
【請求項６】
複数のクライアントと、複数のオブジェクトデータが格納されたメモリとが、上記複数のクライアントが上記メモリ内のデータを用いて任意の処理を実行するためのデータ処理装置を介して接続可能になされたデータ処理システムであって、上記データ処理装置は、請求項１〜５の何れかに記載のデータ処理装置の機能を有することを特徴とするデータ処理システム。
【請求項７】
複数のクライアントが識別性を有する複数のオブジェクトデータをアクセスして任意の処理を実行するためのコンピュータプログラムを記録したコンピュータ読み取り可能な記録媒体において、
上記任意の処理にて対象となるオブジェクトデータの集合であって、クライアントの要求に基づいて生成され、クライアントが上記複数のオブジェクトデータを用いた上記任意の処理を実行するために必要なコンテキストを、クライアント毎に管理する第１の管理手段と、
上記コンテキスト毎に、該オブジェクトデータ各々に対応するエンティティを管理する第２の管理手段と、
上記クライアント毎のコンテキストの、親子関係を管理する第３の管理手段と、
アクセス要求のあったクライアントに対し、上記第１の管理手段による管理情報から該クライアントが現在使用しているコンテキストを識別し、該コンテキストと上記第２の管理手段による管理情報から該クライアントがアクセス対象としたオブジェクトデータに対応するエンティティを取得し、該取得したエンティティの内容に対してアクセスする処理を含むアクセス処理を行うアクセス手段としてコンピュータを機能させるコンピュータプログラムを記録し、
上記アクセス手段は、上記第２の管理手段による管理情報において上記対象オブジェクトデータに対応するエンティティが空である場合、上記第３の管理手段によるコンテキストの親子関係に基づいて、上記クライアントが現在使用しているコンテキストの親の関係にあるコンテキストを取得し、上記第２の管理手段による管理情報から該親の関係にあるコンテキストでのエンティティを取得して、該エンティティの内容に対してアクセス処理を行うことを特徴とするコンピュータ読み取り可能な記録媒体。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、試行錯誤的な計算や、データ更新がなされている中でのシミュレーション的な計算等に用いられるデータ処理装置、データ処理システム、及びコンピュータ読み取り可能な記録媒体に関するものである。
【０００２】
【従来の技術】
従来より、試行錯誤的な計算や、データ更新がなされている中でのシミュレーション的な計算等は、ビジネス関係では、金融や、マーケットのリスク評価処理等、産業関係では、物流や流通、プロセス制御のシミュレーション、計画等において多く行われている。
【０００３】
しかしながら、例えば、データ更新が頻繁に行われるようなデータベース（ＤＢ）内のデータを用いて、多くのクライアント（ユーザ）が、上述したような計算やシミュレーション等を行う場合（ここでは説明の簡単のために、プロセス制御等のシミュレーションを行う場合を一例として挙げて説明する）、ＤＢ内のデータの一致性を確保するためには、１人のクライアントが該データを利用している間、他のクライアントは該データを利用することができない。
【０００４】
そこで、上記の問題を解決するために、例えば、図１５に示すようなデータ処理システム５００が提案されている。
このデータ処理システム５００は、上記図１５に示すように、ＤＢ５１０内のデータのコピー（ＤＢコピー）５１０'（Ｃ１），５１０'（Ｃ２），５１０'（Ｃ３），・・・を、シミュレーションを行うクライアントＣ１，Ｃ２，Ｃ３，・・・に対して個々に設けると共に、シミュレーションを行うための処理プログラム（シミュレーションプログラム）５２０（Ｃ１），５２０（Ｃ２），５２０（Ｃ３），・・・についても、ＤＢコピー５１０'（Ｃ１），５１０'（Ｃ２），５１０'（Ｃ３），・・・に対応して個々に設けた構成としている。
このような構成により、それぞれのクライアントＣ１，Ｃ２，Ｃ３，・・・は、他のクライアントが現在シミュレーションを行っているか否かにかかわらず、自専用のＤＢコピーを用いて自由にシミュレーションを行うことができる。また、並行して様々なシミュレーションを行うこともできる。
【０００５】
【発明が解決しようとする課題】
しかしながら、上記図１５のデータ処理システム５００では、ＤＢ５１０のＤＢコピー５１０'（Ｃ１），５１０'（Ｃ２），５１０'（Ｃ３），・・・と共に、処理プログラム５２０（Ｃ１），５２０（Ｃ２），５２０（Ｃ３），・・・を、シミュレーションを行うクライアントＣ１，Ｃ２，Ｃ３，・・・毎にそれぞれ設ける構成としているため、その分の多くのメモリが必要であり、システム構成が複雑になり、さらにその管理や保守も困難になる、という問題があった。
【０００６】
また、それぞれのクライアントＣ１，Ｃ２，Ｃ３，・・・は、自専用のＤＢコピーを用いてシミュレーションを行う構成としているため、それぞれが異なるデータ内容でシミュレーションが行われてしまう場合もあった。
例えば、クライアントＣ１にてシミュレーションが終了し、その結果を他のクライアントに伝えるために、そのシミュレーション結果によって、基のＤＢ５１０の内容を更新したとする。このとき、他のクライアントＣ２，Ｃ３，・・・では、それぞれ自専用のＤＢコピー５１０'（Ｃ２），５１０'（Ｃ３），・・・を用いて、すなわち更新前のＤＢ５１０の内容を用いて、シミュレーションが行われることになってしまう。
【０００７】
そこで、上記図１５のデータ処理システム５００での問題を解決するために、例えば、図１６に示すようなデータ処理システム６００が提案されている。
このデータ処理システム６００は、上記図１５に示すように、ＤＢ６１０内のデータの１つのコピー（ＤＢコピー）６１０と、シミュレーションを行うための１つの処理プログラム（シミュレーションプログラム）６２０とを設けた構成としており、それぞれのＣ１，Ｃ２，Ｃ３，・・・は、ＤＢコピー６１０を共有して、それぞれシミュレーションを行えるようになされている。
このような構成により、メモリを多く必要とすることなく、それぞれのＣ１，Ｃ２，Ｃ３，・・・は、同じデータ内容でシミュレーションを行うことができる。
【０００８】
しかしながら、シミュレーションを行うクライアントの中には、更新前のデータ内容でシミュレーションを行いたいクライアントが存在することも考えられる。
このような場合、例えば、上記図１５のデータ処理システム５００では、クライアントＣ１のシミュレーション結果によって基のＤＢ５１０の内容が更新されても、他のクライアントＣ２，Ｃ３，・・・のＤＢコピー５１０'（Ｃ２），５１０'（Ｃ３），・・・の内容は更新されないため、更新前のデータ内容でシミュレーションを行いたいクライアントにとっては都合がよい。
これに対して、上記図１６のデータ処理システム６００では、クライアントＣ１のシミュレーション結果によってコピーＤＢ６１０'の内容が更新されると、他のクライアントＣ２，Ｃ３，・・・の全ては、その変更後のコピーＤＢ６１０'を用いてのシミュレーションしか行うことができない。これは、更新前のデータ内容でシミュレーションを行いたいクライアントにとっては問題である。
【０００９】
すなわち、シミュレーションを行うクライアントの中には、変更前のデータ内容（他のクライアントのシミュレーション結果を反映させないデータ内容）でシミュレーションを行いたいクライアント、変更後のデータ内容（他のクライアントのシミュレーション結果を反映させたデータ内容）でシミュレーションを行いたいクライアント、それらのシミュレーションを状況に応じて切り替えて行いたいクライアント、というような様々なクライアントが存在するが、従来では、全てのクライアントの要望を満足させるシミュレーションを、簡単な構成で実現することができなかった。
【００１０】
そこで、本発明は、上記の欠点を除去するための成されたもので、全てのクライアントの要望を満足させる、試行錯誤的な計算や、データ更新がなされている中でのシミュレーション的な計算等を、簡単な構成で且つ効率的に実現できるようにすることを目的とする。
【００１１】
【課題を解決するための手段】
斯かる目的下において、本発明のデータ処理装置は、複数のクライアントが識別性を有する複数のオブジェクトデータをアクセスして任意の処理を実行するためのデータ処理装置において、上記任意の処理にて対象となるオブジェクトデータの集合であって、クライアントの要求に基づいて生成され、クライアントが上記複数のオブジェクトデータを用いた上記任意の処理を実行するために必要なコンテキストを、クライアント毎に管理する第１の管理手段と、上記コンテキスト毎に、該オブジェクトデータ各々に対応するエンティティを管理する第２の管理手段と、上記クライアント毎のコンテキストの、親子関係を管理する第３の管理手段と、アクセス要求のあったクライアントに対し、上記第１の管理手段による管理情報から該クライアントが現在使用しているコンテキストを識別し、該コンテキストと上記第２の管理手段による管理情報から該クライアントがアクセス対象としたオブジェクトデータに対応するエンティティを取得し、該取得したエンティティの内容に対してアクセスする処理を含むアクセス処理を行うアクセス手段とを備え、上記アクセス手段は、上記第２の管理手段による管理情報において上記対象オブジェクトデータに対応するエンティティが空である場合、上記第３の管理手段によるコンテキストの親子関係に基づいて、上記クライアントが現在使用しているコンテキストの親の関係にあるコンテキストを取得し、上記第２の管理手段による管理情報から該親の関係にあるコンテキストでのエンティティを取得して、該エンティティの内容に対してアクセス処理を行うことを特徴とする。
本発明のデータ処理システムは、複数のクライアントと、複数のオブジェクトデータが格納されたメモリとが、上記複数のクライアントが上記メモリ内のデータを用いて任意の処理を実行するためのデータ処理装置を介して接続可能になされたデータ処理システムであって、上記データ処理装置は、本発明のデータ処理装置の機能を有することを特徴とする。
本発明のコンピュータ読み取り可能な記録媒体は、複数のクライアントが識別性を有する複数のオブジェクトデータをアクセスして任意の処理を実行するためのコンピュータプログラムを記録したコンピュータ読み取り可能な記録媒体において、上記任意の処理にて対象となるオブジェクトデータの集合であって、クライアントの要求に基づいて生成され、クライアントが上記複数のオブジェクトデータを用いた上記任意の処理を実行するために必要なコンテキストを、クライアント毎に管理する第１の管理手段と、上記コンテキスト毎に、該オブジェクトデータ各々に対応するエンティティを管理する第２の管理手段と、上記クライアント毎のコンテキストの、親子関係を管理する第３の管理手段と、アクセス要求のあったクライアントに対し、上記第１の管理手段による管理情報から該クライアントが現在使用しているコンテキストを識別し、該コンテキストと上記第２の管理手段による管理情報から該クライアントがアクセス対象としたオブジェクトデータに対応するエンティティを取得し、該取得したエンティティの内容に対してアクセスする処理を含むアクセス処理を行うアクセス手段としてコンピュータを機能させるコンピュータプログラムを記録し、上記アクセス手段は、上記第２の管理手段による管理情報において上記対象オブジェクトデータに対応するエンティティが空である場合、上記第３の管理手段によるコンテキストの親子関係に基づいて、上記クライアントが現在使用しているコンテキストの親の関係にあるコンテキストを取得し、上記第２の管理手段による管理情報から該親の関係にあるコンテキストでのエンティティを取得して、該エンティティの内容に対してアクセス処理を行うことを特徴とする。
【００２７】
【発明の実施の形態】
以下、本発明の実施の形態について図面を用いて説明する。
【００２８】
本発明は、例えば、図１に示すようなデータ処理システム１００に適用される。
このデータ処理システム１００は、上記図１に示すように、複数のクライアントＣ１，Ｃ２，Ｃ３，・・・が、データベース（ＤＢ）１２０内のデータを用いて、試行錯誤的な計算や、データ更新がなされている中でのシミュレーション的な計算等を行えるようになされている（ここでは説明の簡単のために、シミュレーションを行う場合を一例として挙げて説明する）。
そして、このときのクライアントＣ１，Ｃ２，Ｃ３，・・・のＤＢ１２０へのアクセス管理は、データ処理装置１１０によって行われるようになされている。すなわち、クライアントＣ１，Ｃ２，Ｃ３，・・・のＤＢ１２０へのアクセスは、データ処理装置１１０を介して行われる。
【００２９】
データ処理装置１１０は、エンティティ管理部１１１、接続管理部１１２、及び処理プログラム（ここでは、シミュレーションプログラム）１１３を含んでおり、ＤＢ１２０内のデータ（オブジェクトデータ）から、データアクセス要求のあったクライアントに基づいた後述するコンテキストを構成し、これを管理するようになされている。
以下、このようなデータ処理装置１１０について具体的に説明する。
【００３０】
まず、ここでのクライアントＣ１，Ｃ２，Ｃ３，・・・はそれぞれ、ＤＢ１２０をアクセスするもの、すなわちデータ処理装置１１０によるＤＢ１２０内のオブジェクトデータの読み書きのサービスを受けるもの全てを含む。ここでは、例えば、パーソナルコンピュータ等の端末装置からなるものとする。
ＤＢ１２０には、例えば、図２に示すように、種々のオブジェクトデータＡ，Ｂ，Ｃ，・・・が存在するものとする。これらのオブジェクトデータＡ，Ｂ，Ｃ，・・・から、アクセス要求のあったクライアントに基づいたコンテキストが構成される。
【００３１】
ここでの”コンテキスト”とは、ある条件に従ったデータの集合を意味する。例えば、クライアントＣ１が、あるシミュレーションを実行する際、そのシミュレーションにて対象となるオブジェクトデータの集合（クライアントＣ１にとってのオブジェクトデータの集合の”世界”）が、コンテキストである。
このため、接続管理部１１２は、シミュレーションするために接続要求がなされたクライアントのコンテキストをクライアント毎に管理し、エンティティ管理部１１１は、上記図２の”Ｔｂ”に示すようなテーブルにより、コンテキスト、後述するオブジェクト、及びエンティティの関係をクライアント毎に管理するようになされている。
【００３２】
そこで、詳細は後述するが、上記図２に示すＴｂの状態でのクライアント毎のコンテキストの管理、及びこれによるクライアントでのシミュレーションの実行についての概要を説明すると、先ず最初に、ＤＢ１２０のオブジェクトデータＡ，Ｂ，Ｃ，・・・のコピーであるイニシャルエンティティａ０，ｂ０，ｃ０，・・・が、コンテキスト＃０（イニシャルコンテキスト）として定義される。
【００３３】
次に、クライアントＣ１からの要求により、コンテキスト＃１が生成される。したがって、クライアントＣ１は、コンテキスト＃１にてシミュレーションを行うことになる。このシミュレーションでは、例えば、オブジェクトデータＡの更新については、イニシャルエンティティａ０のコピーであるエンティティａ１に対して行われ、オブジェクトデータＢ，Ｃ，・・・の参照は、親の関係にあるイニシャルエンティティｂ０，ｃ０，・・・に対して行われる。
尚、コンテキストを生成するとき、どのコンテキストを親とするか、指定して生成する。ここでは、コンテキスト＃１は、コンテキスト＃０を親として生成される。
【００３４】
また、クライアントＣ１が、コンテキスト＃１とは異なる環境での新たなシミュレーションを行いたい等の要求により、コンテキスト＃２が生成される。これにより、クライアントＣ１は、コンテキスト＃２でのシミュレーションをも行うことができる。
このシミュレーションでは、コンテキスト＃２が、コンテキスト＃１を親として生成されたならば、オブジェクトデータＡ，Ｃ，・・・の参照は、エンティティａ１，ｃ０，・・・となり、オブジェクトデータＢの参照や更新については、イニシャルエンティティのコピーであるエンティティｂ２に対して行われる。また、コンテキスト＃２が、コンテキスト＃０を親として生成されたならば、オブジェクトデータＡ，Ｃ，・・・の参照は、イニシャルエンティティａ０，ｃ０，・・・となり、オブジェクトデータＢの参照や更新については、エンティティｂ２に対して行われる。
【００３５】
また、クライアントＣ２からの要求により、コンテキスト＃０を親としてコンテキスト＃３が生成される。したがって、クライアントＣ２は、コンテキスト＃３にてシミュレーションを行うことになる。このシミュレーションでは、例えば、オブジェクトデータＡ及びＢの参照や更新は、イニシャルエンティティａ０及びｂ０のコピーであるエンティティａ４及びｂ４に対して行われ、オブジェクトデータＣ，・・・の参照は、親の関係にあるイニシャルエンティティｃ０，・・・に対して行われる。このとき、エンティティａ１（コンテキスト＃１でのシミュレーションにて更新がなされたデータ）や、エンティティｂ２（コンテキスト＃２でのシミュレーションにて更新がなされたデータ）の参照も可能なようになされている。
このように、各クライアントには、ある時点で参照しているコンテキストが必ず１つ存在する。また、コンテキストの中には、どのクライアントからも参照されていないものもあり得る。さらに、複数のクライアントが同じコンテキストを参照する場合もある。
【００３６】
上述のような、それぞれのクライアントＣ１，Ｃ２，Ｃ３，・・・に対するコンテキストの生成や管理等のための処理は、例えば、図３及び図４のフローチャートにて示される。すなわち、データ管理装置１１０は、上記図３及び図４の処理を繰り返し実行することで、次のようにして、それぞれのクライアントＣ１，Ｃ２，Ｃ３，・・・に対するコンテキストの生成や管理等を実施する。
尚、ここでは説明の簡単のために、ＤＢ１２０内には、３つのオブジェクトデータＡ，Ｂ，Ｃが存在するものとする。また、３つのクライアントＣ１，Ｃ２，Ｃ３が、ＤＢ１２０内のオブジェクトデータＡ，Ｂ，Ｃをアクセスするものとする。
【００３７】
（１）メイン処理：上記図３参照
【００３８】
ステップＳ２０１，Ｓ２０２：
先ず、初期状態において、クライアントからの接続要求であるか否かを判別する（ステップＳ２０１）。この判別の結果、接続要求である場合、図５に示すように、基のオブジェクトデータＡ，Ｂ，Ｃのコピーであるエンティティａ０，ｂ０，ｃ０の集合をコンテキストとするイニシャルコンテキスト＃０を生成する（ステップＳ２０２）。その後、本処理終了となる。
一方、接続要求でない場合、次のステップＳ２０３へと進む。
尚、説明の簡単のために、上記図５から後述の説明にて用いる図１３までの各図において、”親コンテキスト”の欄は省略する。
【００３９】
ステップＳ２０３，Ｓ２０４：
クライアントからのコンテキストの生成要求であるか否かを判別する（ステップＳ２０３）。この判別の結果、コンテキスト生成要求である場合、例えば、クライアントＣ１から、新たなシミュレーションを実行したいこと等による新たなコンテキストの生成要求である場合、図６に示すように、イニシャルコンテキスト＃０を親とするコンテキスト＃１を生成する（ステップＳ２０４）。このとき、どのコンテキストを親とするか指定する。これにより、クライアントＣ１は、エンティティａ０，ｂ０，ｃ０を参照しながらのシミュレーションが実行可能となる。その後、本処理終了となる。
一方、コンテキスト生成要求でない場合、次のステップＳ２０５へと進む。
【００４０】
ステップＳ２０５，Ｓ２０６：
クライアントからのコンテキストの切換要求であるか否かを判別する（ステップＳ２０５）。この判別の結果、コンテキスト切換要求である場合、その要求元のクライアントの現在のコンテキストを、その要求により示されるコンテキストに切り換える（ステップＳ２０６）。
例えば、図７に示すように、コンテキスト＃２にてシミュレーションを実行しているクライアントＣ２から、コンテキスト＃１にてシミュレーションを実行しているクライアントＣ１の該コンテキスト＃１に切り換える要求がなされた場合、コンテキスト＃２をコンテキスト＃１に切り換える。これにより、クライアントＣ２は、クライアントＣ１と同じ環境でのシミュレーションを実行することができる。このようなコンテキストの切り換え終了後、本処理終了となる。
一方、コンテキスト切換要求でない場合、次のステップＳ２０７へと進む。
【００４１】
ステップＳ２０７，Ｓ２０８：
クライアントからのコンテキストのコピー要求であるか否かを判別する（ステップＳ２０７）。この判別の結果、コンテキストコピー要求である場合、その要求元のクライアントの現在のコンテキストの内容に対して、その要求により示されたコンテキストの内容をコピーする（ステップＳ２０８）。
例えば、図８（実線矢印参照）に示すように、コンテキスト＃５にてシミュレーションを実行しようとしているクライアントＣ２から、コンテキスト＃４の内容のコピー要求がなされた場合、エンティティａ４のコピーであるエンティティａ５、エンティティｂ４のコピーであるエンティティａ５、及びイニシャルエンティティｃ０のコピーであるエンティティｃ５の集合をコンテキスト＃５とする。これにより、例えば、コンテキスト＃４でのシミュレーションにより、エンティティａ４やエンティティｂ４が更新されても、コンテキスト＃５では、更新前のデータ内容が保持されることになるため、コンテキスト＃４でのシミュレーションの結果に影響されることなく、コンテキスト＃５でのシミュレーションを実行することができる。また、コンテキスト＃４でのシミュレーションでのある瞬間の状態からのシミュレーションを、コンテキスト＃４でのシミュレーションと、コンテキスト＃５でのシミュレーションとの異なるシミュレーション形態で実行することができる。このようなコンテキストの内容のコピー終了後、本処理終了となる。
一方、コンテキストコピー要求でない場合、次のステップＳ２０９へと進む。
【００４２】
尚、ステップＳ２０８でのコンテキストコピー要求による処理では、例えば、上記図８（点線矢印参照）に示すように、コンテキスト＃５の内容を、親の関係にあるコンテキスト＃４の内容へコピーすること等も可能となっている。この場合、エンティティａ５及びｂ５をエンティティａ４及びｂ４へコピーすると共に、エンティティｃ５については、該エンティティｃ５のコピーをエンティティｃ４とする。
【００４３】
ステップＳ２０９，Ｓ２１０：
クライアントからのコンテキストの廃棄要求であるか否かを判別する（ステップＳ２０９）。この判別の結果、コンテキスト廃棄要求である場合、その要求により指定されたコンテキストの内容を廃棄する（ステップＳ２１０）。
例えば、図９に示すように、クライアントＣ２から、現在のコンテキスト＃５の廃棄要求がなされた場合、エンティティａ５，ｂ５，ｃ５を破棄する。その後、コンテキスト＃５を参照しているクライントがデータＡをアクセスすると、コンテキスト＃５の親がコンテキスト＃１であれば、その親コンテキスト＃１のエンティティａ１を参照する。
また、上記の処理の他の処理として、コンテキスト自身を破棄することが可能であり、この場合には、コンテキスト＃５自体は破棄されることになる。
このようなコンテキストの廃棄終了後、本処理終了となる。
一方、コンテキスト廃棄要求でない場合、次のステップＳ２１１へと進む。
【００４４】
ステップＳ２１１，Ｓ２１２：
クライアントからのデータアクセス要求であるか否かを判別する（ステップＳ２１１）。この判別の結果、データアクセス要求である場合、詳細は後述する、その要求元のクライアントにて実行されているシミュレーションでのデータの読み書き（参照及び更新）のための処理を行う（ステップＳ２１２）。その後、本処理終了となる。
一方、データアクセス要求でない場合、本処理終了となる。
【００４５】
（２）データアクセス処理（ステップＳ２１２）：上記図４参照
【００４６】
ステップＳ３０１：
先ず、データアクセス要求を発行したクライアントを認識する。
ステップＳ３０２：
次に、ステップＳ３０１にて認識したクライアントのコンテキスト（現在使用しているコンテキスト）を接続管理部１１２において、クライアント毎に管理されているコンテキストから認識する。
ステップＳ３０３：
次に、ステップＳ３０２にて認識したコンテキストにおいて、どのデータを対象としているか（オブジェクトデータＡ，Ｂ，Ｃの何れのデータを参照又は更新の対象としているか）を認識する。
ステップＳ３０４：
次に、ステップＳ３０３にて認識した対象オブジェクトデータに対応するエンティティを取得する。エンティティ管理部１１１において、コンテキスト、オブジェクト、及びエンティティの関係が管理されており（例えば図２の”Ｔｂ”）、ステップＳ３０２にて認識したコンテキストとステップＳ３０３で認識した対象としているオブジェクトデータからエンティティを取得することができる。ここでの”エンティティ”とは、例えば、図１０に示すように、クライアントＣ１が、コンテキスト＃２でのシミュレーションにおいて、オブジェクトデータＣを参照（ｒｅａｄ）又は更新（ｗｒｉｔｅ）の対象としている場合、図中斜線部分（＃２，Ｃ）を意味する。以下、このようなエンティティを、「エンティティ（コンテキスト番号＃ｘ，対象オブジェクト）」で表す。
ステップＳ３０５：
そして、ステップＳ３０４にて取得したエンティティが空であるか否かを判別する。この判別の結果、空である場合にはステップＳ３０６からの処理を実行し、空でない場合にはステップＳ３１２からの処理を実行する。
【００４７】
ステップＳ３０６：
例えば、ステップＳ３０４にて対象となったエンティティが、上記図１０の斜線部に示すエンティティ（＃２，Ｃ）であった場合、エンティティ（＃２，Ｃ）は空であるため、先ず、その親の関係にあるエンティティ（＃１，Ｃ）を参照する。
ステップＳ３０７：
次に、ステップＳ３０６にて参照の対象となったエンティティ（＃１，Ｃ）が空であるか否かを判別する。上記図１０では、エンティティ（＃１，Ｃ）は空であるため、再びステップＳ３０６へ戻り、その親の関係にあるエンティティ（＃０，Ｃ）を参照することになる。このエンティティ（＃０，Ｃ）は、空でないため（エンティティｃ０が存在）、本ステップＳ３０７の判別によって、次のステップＳ３０８へと進む。
【００４８】
ステップＳ３０８：
ステップＳ３０７での判別の結果、参照対象のエンティティが空でない場合（ここでは、エンティティ（＃０，Ｃ）とする）、データアクセス要求の内容が「参照（ｒｅａｄ）」であるか「更新（ｗｒｉｔｅ）」であるかを判別する。
【００４９】
ステップＳ３０９：
ステップＳ３０８での判別の結果、ｒｅａｄアクセス要求であった場合、ステップＳ３０６にて参照の対象となったエンティティ（＃０，Ｃ）の内容（＝エンティティｃ０）を読み出して、これを要求元のクライアントＣ１へと供給する。その後、本処理終了となる。
【００５０】
ステップＳ３１０：
ステップＳ３０８での判別の結果、ｗｒｉｔｅアクセス要求であった場合、図１１に示すように、ステップＳ３０６にて参照の対象となった（＃０，Ｃ）の内容（＝エンティティｃ０）を、ステップＳ３０４にて取得したエンティティ（＃２，Ｃ）へとコピーする。
ステップＳ３１１：
したがって、ステップＳ３１０にて生成されたコピーデータを、コンテキスト＃２でのエンティティｃ２として、更新の対象とする。その後、本処理終了となる。
【００５１】
ここで、ステップＳ３１０及びＳ３１１において、例えば、図１２に示すように、クライアントＣ２にてコンテキスト＃４によるシミュレーションが実行されており、オブジェクトデータＡのｗｒｉｔｅ要求がなされた場合（このときエンティティ（＃４，Ａ）は空とする）、その親の関係にあるエンティティ（＃１，Ａ）の内容が、エンティティａ４として、エンティティ（＃４，Ａ）へとコピーされることになる。このとき、コンテキスト＃１のエンティティ（＃１，Ａ）に対しても、クライアントＣ１からｗｒｉｔｅ要求がなされていた場合、予め設定されている条件（クライアントＣ１でのシミュレーションの結果を他のクライアントに反映させるか否か等の条件）に従って、エンティティ（＃１，Ａ）の内容更新後、それをエンティティ（＃４，Ａ）へコピーする、或いは、エンティティ（＃１，Ａ）をエンティティ（＃４，Ａ）へコピーした後に、エンティティ（＃１，Ａ）の内容を更新する。
すなわち、ここでは、あるエンティティ（エンティティ（＃１，Ａ）等）の内容を更新する際、該エンティティを親とする子のエンティティ（エンティティ（＃４，Ａ）等）が存在するか否かを認識し、その子エンティティが、親エンティティの内容更新の影響を受けるモード（透過モード）であるか、親エンティティの内容更新の影響を受けないモード（非透過モード）であるのかを認識する。そして、子エンティティが透過モードである場合には、そのまま親エンティティの内容更新を行い、子エンティティが非透過モードである場合には、子エンティティに対して更新前の親エンティティ内容をコピーした後に、該親エンティティの内容更新を行う。その後、子エンティティの内容更新は、親エンティティの内容に影響しない。
これにより、それぞれのクライアントは、他のクライアントでのシミュレーションの影響を受けながらのシミュレーションの実行と、他のクライアントでのシミュレーションの影響を受けないシミュレーションの実行との、何れの形態でのシミュレーションをも実行可能となる。
【００５２】
ステップＳ３１２：
一方、ステップＳ３０４にて取得したエンティティが空でない場合、上述したステップＳ３０８と同様に、ｒｅａｄアクセス要求であるかｗｒｉｔｅアクセス要求であるかを判別する。
【００５３】
ステップＳ３１３：
ステップＳ３１２での判別の結果、ｒｅａｄアクセス要求であった場合、ステップＳ３０４にて取得した空でないエンティティの内容を読み出して、これを要求元のクライアントＣ１へと供給する。
例えば、ステップＳ３０４にて対象となったエンティティが、図１３に示すようなエンティティ（＃４，Ｂ）であった場合、エンティティ（＃４，Ｂ）は空でないため、この内容（＝エンティティｂ４）を読み出す（参照）ことになる。
このような処理後、本処理終了となる。
【００５４】
ステップＳ３１４：
ステップＳ３１２での判別の結果、ｗｒｉｔｅアクセス要求であった場合、ステップＳ３にて取得した空でないエンティティの内容を、更新の対象とする。
例えば、上記図１３に示したように、ステップＳ３０４にて対象となったエンティティがエンティティ（＃４，Ｂ）であった場合、この内容（＝エンティティｂ４）を更新する。このとき、上述したステップＳ３１１と同様に、エンティティ（＃４，Ｂ）を親とする子のエンティティが存在するか否かを認識し、その子エンティティが透過モードであるか、非透過モードであるのかを認識し、そして、子エンティティが透過モードである場合には、そのままエンティティ（＃４，Ｂ）の内容更新を行い、子エンティティが非透過モードである場合には、子エンティティに対して更新前のエンティティ（＃４，Ｂ）の内容（＝エンティティｂ４）をコピーした後に、エンティティ（＃４，Ｂ）の内容更新を行う。
このような処理後、本処理終了となる。
【００５５】
上述のように、本実施の形態では、シミュレーションに使用されているコンテキスト、オブジェクトデータ、エンティティ、及びコンテキストの関係、コンテキストのツリー関係（親子関係）を、それぞれクライアント毎に管理するように構成したので、他のクライアントのシミュレーション結果を反映させないデータ内容でシミュレーションを行いたいクライアント、他のクライアントのシミュレーション結果を反映させたデータ内容でシミュレーションを行いたいクライアント、それらのシミュレーションを状況に応じて切り替えて行いたいクライアント、というような様々なクライアントの要望を同時に満足させたシミュレーションが実行可能となる。すなわち、それぞれのクライアントが、自分専用のデータベースにアクセスしているかのように、並行してシミュレーションを実行することができ、また、コンテキスト切換要求を発行することで、他のクライアントでのシミュレーションと協調したシミュレーションも実行すること等ができる。
また、クライアント毎に、現在使用されているコンテキストを認識するように構成したので、例えば、あるクライアントがシミュレーション結果を出力（プリント出力や表示出力等）したい場合、該クライアントは、現在使用しているコンテキストを意識することなく、シミュレーション結果の出力を指示するのみで（出力コマンドの入力等）、シミュレーション結果を出力させることができる。
また、シミュレーションの基となるＤＢ１２０のコピーや、シミュレーションプログラム１１３は、それぞれ１つの構成としているため、メモリを節約することができると共に、システム構成を簡略化することができる。
【００５６】
尚、上述した実施の形態において、上記図２では、クライアント毎のコンテキストの管理を説明するための一例として１つのテーブルを示したが、これに限られることはなく、例えば、図１４に示すような、クライアントが現在どのコンテキストを使用しているかを示すクライアント・コンテキスト対応テーブルと、コンテキストとそれに対応するオブジェクトのエンティティを示すコンテキスト・エンティティ対応テーブルとの２つのテーブルに分けて設ける構成としてもよい。
【００５７】
また、本発明の目的は、上述した実施の形態のホスト及び端末の機能を実現するソフトウェアのプログラムコードを記憶した記録媒体を、システム或いは装置に供給し、そのシステム或いは装置のコンピュータ（又はＣＰＵやＭＰＵ）が記録媒体に格納されたプログラムコードを読みだして実行することによっても、達成されることは言うまでもない。
この場合、記録媒体から読み出されたプログラムコード自体が本実施の形態の機能を実現することとなり、そのプログラムコードを記憶した記録媒体は本発明を構成することとなる。
プログラムコードを供給するための記録媒体としては、ＲＯＭ、フレキシブルディスク、ハードディスク、光ディスク、光磁気ディスク、ＣＤ−ＲＯＭ、ＣＤ−Ｒ、磁気テープ、不揮発性のメモリカード等を用いることができる。
また、コンピュータが読みだしたプログラムコードを実行することにより、本実施の形態の機能が実現されるだけでなく、そのプログラムコードの指示に基づき、コンピュータ上で稼動しているＯＳ等が実際の処理の一部又は全部を行い、その処理によって本実施の形態の機能が実現される場合も含まれることは言うまでもない。
さらに、記録媒体から読み出されたプログラムコードが、コンピュータに挿入された拡張機能ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれた後、そのプログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるＣＰＵなどが実際の処理の一部又は全部を行い、その処理によって本実施の形態の機能が実現される場合も含まれることは言うまでもない。
【００５８】
【発明の効果】
以上説明したように本発明では、それぞれのクライアント（オブジェクトデータへアクセスするもの等）にて実行される任意の処理（試行錯誤的な計算や、データ更新がなされている中でのシミュレーション的な計算等）の対象となるオブジェクトデータの集合（クライアントにとってのオブジェクトデータの集合の”世界”であるコンテキスト）を、クライアント毎に管理する。また、コンテキスト毎に、それを構成するオブジェクトデータ、及びそのオブジェクトデータに対応するエンティティの関係を管理する。さらに、クライアント毎に管理されたコンテキストの親子関係（コンテキストツリー）を管理する。そして、これらの管理情報から、アクセス要求のあったクライアントに対応するエンティティを取得して、そのエンティティに対してアクセス処理を行う。
【００５９】
このような構成により、それぞれのクライアントは、自分専用のオブジェクトデータにアクセスしているかのように、並行して任意の処理を実行することができる。また、例えば、あるクライアントがシミュレーション結果を出力（プリント出力や表示出力等）したい場合、該クライアントは、現在使用しているコンテキストを意識することなく、シミュレーション結果の出力を指示するのみで（出力コマンドの入力等）、シミュレーション結果を出力させることができる。さらに、クライアント毎に、オブジェクトデータや任意の処理を実行するためのプログラム等を設ける必要がないため、メモリを有効に利用することができると共に、装置或いはシステム構成を簡略化することができる。
【００６０】
また、クライアントからの要求に基づいて、コンテキストを生成するように構成すれば、クライアントは、様々な形態での任意の処理を実行することができる。
また、アクセス対象のエンティティが存在しない場合（空である場合）、その親の関係にあるエンティティに対してアクセス処理を行うように構成すれば、エンティティを効率良く管理することができる。
また、コンテキスト間で、エンティティのコピーを可能とするように構成すれば、他のコンテキストでの任意の処理の結果に影響されることのない処理を実行することができる。また、他のコンテキストでの任意の処理でのある瞬間の状態からの処理を、異なる形態で実行することができる。
また、コンテキストの切換を可能とするように構成すれば、他のクライアントでの任意の処理と協調した処理を実行することができる。
【００６１】
よって、本発明によれば、それぞれのクライアントの要望を満足させる、試行錯誤的な計算や、データ更新がなされている中でのシミュレーション的な計算等を、簡単な構成で且つ効率的に実現することができる。
【図面の簡単な説明】
【図１】本発明を適用したデータ処理システムの構成を示すブロック図である。
【図２】上記データ処理システムでのクライアント毎のコンテキストの管理を説明するための図である。
【図３】上記データ処理システムのメイン処理を説明するためのフローチャートである。
【図４】上記メイン処理のデータアクセス処理を説明するためのフローチャートである。
【図５】上記メイン処理において、接続要求時の処理を説明するための図である。
【図６】上記メイン処理において、コンテキスト生成要求時の処理を説明するための図である。
【図７】上記メイン処理において、コンテキスト切換要求時の処理を説明するための図である。
【図８】上記メイン処理において、コンテキストコピー要求時の処理を説明するための図である。
【図９】上記メイン処理において、コンテキスト廃棄要求時の処理を説明するための図である。
【図１０】上記データアクセス処理において、空のエンティティに対する参照（ｒｅａｄ）処理を説明するための図である。
【図１１】上記データアクセス処理において、空のエンティティに対する更新（ｗｒｉｔｅ）処理を説明するための図である。
【図１２】上記更新（ｗｒｉｔｅ）処理の詳細を説明するための図である。
【図１３】上記データアクセス処理において、空でないエンティティに対する参照（ｒｅａｄ）処理及び更新（ｗｒｉｔｅ）処理を説明するための図である。
【図１４】上記コンテキストの管理の他の構成例を説明するための図である。
【図１５】従来のデータ処理システムの例１の構成を示すブロック図である。
【図１６】従来のデータ処理システムの例２の構成を示すブロック図である。
【符号の説明】
１００  データ処理システム
１１０  データ処理装置
１１１  エンティティ管理部
１１２  接続管理部１１２
１１３  処理プログラム
１２０  データベース
Ｃ１，Ｃ２，Ｃ３，・・・  クライアント
【図１】
0003984553.tif 000002
【図２】
0003984553.tif 000003
【図３】
0003984553.tif 000004
【図４】
0003984553.tif 000005
【図５】
0003984553.tif 000006
【図６】
0003984553.tif 000007
【図７】
0003984553.tif 000008
【図８】
0003984553.tif 000009
【図９】
0003984553.tif 000010
【図１０】
0003984553.tif 000011
【図１１】
0003984553.tif 000012
【図１２】
0003984553.tif 000013
【図１３】
0003984553.tif 000014
【図１４】
0003984553.tif 000015
【図１５】
0003984553.tif 000016
【図１６】
0003984553.tif 000017