(57)【特許請求の範囲】
【請求項１】
要求された処理と同等の結果が得られ、かつその処理を打ち消すことが可能なように、１つまたは２つ以上の操作を組み合わせて構成した、前記処理に相当する実際の操作と、
前記処理と同等の結果を得るために、前記実際の操作を確定する確定操作と、
前記処理を打ち消すために、前記実際の操作を打ち消す補償操作と、を定義したモジュール操作表を作成する入力解析部と、
前記モジュール操作表に基づいて、対象となるモジュールに対し前記実際の操作を実行すると共に、前記確定操作及び前記補償操作に必要なモジュール補償データを記憶装置に記憶する実行部と、
前記実行部による操作が成功した場合には、前記モジュール補償データを用いて前記確定操作を実行する確定部と、
前記実行部による操作が失敗した場合には、前記モジュール補償データを用いて前記補償操作を実行する補償実行部と、を備えたデータ処理装置。
【請求項２】
要求された処理と同等の結果が得られ、かつその処理を打ち消すことが可能なように、１つまたは２つ以上の操作を組み合わせて構成した、前記処理に相当する実際の操作と、
前記処理と同等の結果を得るために、前記実際の操作を確定する確定操作と、
前記処理を打ち消すために、前記実際の操作を打ち消す補償操作と、を定義したモジュール操作表を作成し、
前記モジュール操作表に基づいて、対象となるモジュールに対し前記実際の操作を実行すると共に、前記確定操作及び前記補償操作に必要なモジュール補償データを記憶装置に記憶し、
前記実際の操作が成功した場合には、前記モジュール補償データを用いて前記確定操作を実行し、
前記実際の操作が失敗した場合には、前記モジュール補償データを用いて前記補償操作を実行する、データ処理方法。
【請求項３】
コンピュータを、
要求された処理と同等の結果が得られ、かつその処理を打ち消すことが可能なように、１つまたは２つ以上の操作を組み合わせて構成した、前記処理に相当する実際の操作と、
前記処理と同等の結果を得るために、前記実際の操作を確定する確定操作と、
前記処理を打ち消すために、前記実際の操作を打ち消す補償操作と、を定義したモジュール操作表を作成する入力解析部と、
前記モジュール操作表に基づいて、対象となるモジュールに対し前記実際の操作を実行すると共に、前記確定操作及び前記補償操作に必要なモジュール補償データを記憶装置に記憶する実行部と、
前記実行部による操作が成功した場合には、前記モジュール補償データを用いて前記確定操作を実行する確定部と、
前記実行部による操作が失敗した場合には、前記モジュール補償データを用いて前記補償操作を実行する補償実行部と、して機能させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ処理装置、データ処理方法、及びプログラムに関するものである。
【背景技術】
【０００２】
アプリケーションサーバのような巨大なソフトウェアでは、そのソフトウェアを構成する複数のモジュールの整合性を保つ必要がある。トランザクションに対応したモジュールは、モジュール内部に整合性を保つ仕組みが組み込まれている。しかし、トランザクションに対応していないモジュールは、モジュールの外部から不整合を起こさないように管理する必要がある。
【０００３】
ソフトウェアが提供する機能を実行したが処理が途中で失敗した場合などに、データを実行以前の整合性のある状態に戻す処理をロールバックという。ロールバックは、ソフトウェアが管理するデータの整合性を保つために必要であり、ソフトウェアの機能の実行に原子性を与える。
【０００４】
ソフトウェアを開発する際、すべてを自前で開発するのではなく、ＯＳ(Operating System)が提供するＡＰＩ(Application Programming Interface)や、第三者が開発した再利用可能なモジュールを利用する事が一般的である。すなわち、あるソフトウェアが提供する機能は、一つあるいは複数のモジュールの機能を実行することによって実現される。多くの場合、モジュールはデータを管理しており、ソフトウェアはモジュールが提供する機能を実行することによってデータを操作する。モジュールが管理するデータは、そのモジュールを介さずに直接操作する事が不可能、あるいは可能であってもそのモジュールの仕様によって許可されていないのが一般的である。
【０００５】
このような状況において、ソフトウェアが機能の実行に対してロールバックを実現するためには、そのソフトウェアが利用しているモジュールがロールバックを行う必要がある。ロールバックが行えないモジュールを利用しているソフトウェアは、そのソフトウェアが提供する機能の実行に対してロールバックを行うことが出来ない。
【０００６】
特許文献１には、ファイルの編集動作を可逆操作可能な動作単位に分割し、各々の動作単位を規定する編集情報を作成し、編集後のファイルを復元する際には、編集情報を逆動作を行う編集情報に置換してファイルの編集処理を行う方法が記載されている。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開昭６４−７６３３９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
しかし、特許文献１に記載された方法では、ファイルを復元するためには、編集情報を逆動作を行う編集情報に置換する必要があった。
【０００９】
そこで、本発明の目的は、ソフトウェアが利用しているモジュールがロールバック機能を実現していなくても、汎用的で簡易な手順で、そのモジュールの実行結果を打ち消す操作を実行することである。
【課題を解決するための手段】
【００１０】
本発明に係るデータ処理装置は、要求された処理と同等の結果が得られ、かつその処理を打ち消すことが可能なように、１つまたは２つ以上の操作を組み合わせて構成した、前記処理に相当する実際の操作と、前記処理と同等の結果を得るために、前記実際の操作を確定する確定操作と、前記処理を打ち消すために、前記実際の操作を打ち消す補償操作と、を定義したモジュール操作表を作成する入力解析部と、前記モジュール操作表に基づいて、対象となるモジュールに対し前記実際の操作を実行すると共に、前記確定操作及び前記補償操作に必要なモジュール補償データを記憶装置に記憶する実行部と、前記実行部による操作が成功した場合には、前記モジュール補償データを用いて前記確定操作を実行する確定部と、前記実行部による操作が失敗した場合には、前記モジュール補償データを用いて前記補償操作を実行する補償実行部と、を備える。
【発明の効果】
【００１１】
本発明によれば、ソフトウェアが利用するモジュールがロールバックの機能を有していなくても、そのモジュールの実行結果を打ち消す操作を実行することができる。
【図面の簡単な説明】
【００１２】
【図１】本発明の実施の形態による、データ処理装置の構成を示す図である。
【図２】入力解析部から制御部に通知されるモジュール及び操作内容を実行順にリストにした表の例を示す図である。
【図３】モジュール操作表の例を示す図である。
【図４】本発明の実施例の構成を示す図である。
【図５】本発明の実施の形態の動作を説明するフローチャートである。
【発明を実施するための形態】
【００１３】
次に、本発明を実施するための最良の形態について、図面を参照して詳細に説明する。
図１は、本実施形態によるデータ処理装置の構成を示す図である。
入力装置１１０は、キーボードやソフトウェア等であり、機能実行部１２０に対して機能を実行するのに必要な情報を提供する。
【００１４】
機能実行部１２０は、入力装置１１０からの入力情報を解析した後、記憶装置１３０からモジュールの操作に必要な情報を取得して、その情報に基づいてモジュール群１４０を操作する。モジュール群１４０を操作する際には、ロールバックに必要な情報を記憶装置１３０に書き込む。モジュール群１４０の操作に失敗した場合、機能実行部１２０は、記憶装置１３０に記録されているロールバックに必要な情報を参照して、モジュール群１４０が保持しているデータを操作以前のものに戻す。
【００１５】
機能実行部１２０は、入力解析部１２１、制御部１２２、実行部１２３、確定部１２４、及び補償実行部１２５を備えている。
【００１６】
入力解析部１２１は、入力装置１１０からの入力を受け、操作対象のモジュールと、モジュールの操作内容と、各々のモジュールの実行順序とを決定し、決定結果を制御部１２２に通知する。図２は、入力解析部１２１から制御部１２２に通知されるモジュール及び操作内容を実行順にリストにした決定結果の例を示す図である。
【００１７】
制御部１２２は、入力解析部１２１から通知されたモジュールに対する操作の実行を、決定された順序で逐次的に、実行部１２３に依頼する。全てのモジュールの操作が成功した場合、入力解析部１２１から通知されたモジュールに対する操作に対する確定処理を、決定された順序で逐次的に、確定部１２４に依頼する。
【００１８】
また、制御部１２２は、実行部１２３における実行結果が失敗となった時点で、補償実行部１２５に対してロールバックの実行を依頼する。ロールバックの実行は、入力解析部１２１で決定した操作対象のモジュールに対する、入力解析部１２１で決定した操作を打ち消す操作を、実行部１２３の実行結果が最初に失敗した操作から、入力解析部１２１で決定した順序とは逆順で、補償実行部１２５に逐次的に依頼する。
【００１９】
実行部１２３は、制御部１２２から依頼を受けてモジュールを操作する。実際には、実行部１２３の内部では、ロールバックを可能にするために、制御部１２２から依頼された操作とは別の操作や複数の操作を組み合わせて実行する。制御部１２２から依頼された操作と、実際に行う操作の対応関係は、モジュール操作表１３１で定義されている。実行部１２３は、モジュール操作表１３１を参照し、これに従いモジュールを操作する。実行部１２３は、ロールバックに必要な補償操作や補償データを、モジュール操作表１３１に従って、モジュール補償データ１３２に保存する。モジュールの操作に失敗した場合は、制御部１２２に失敗という結果を返す。
【００２０】
確定部１２４は、制御部１２２から依頼を受けて、実行部１２３で実行した操作を確定する。ここで操作の確定とは、ロールバックに必要な情報を削除するために、モジュール補償データ１３２に保存されている操作データを用いて、モジュール操作表１３１で定義している確定操作を実行することである。
【００２１】
補償実行部１２５は、制御部１２２から依頼を受けて、実行部１２３で実行した単一の操作についてのロールバックを実行する。ここでロールバックとは、実行部１２３で実行した操作を打ち消す操作をモジュールに対して実行することであり、モジュール補償データ１３２に保存されている操作データを用いて、モジュール操作表１３１で定義している補償操作を実行することである。
【００２２】
記憶装置１３０は、機能実行部１２０がモジュールの操作を行う際に必要な情報を格納する。また、記憶装置１３０は、機能実行部１２０から提供されるロールバックに必要な情報を記憶する。記憶装置１３０は、モジュール操作表１３１とモジュール補償データ１３２を格納している。
【００２３】
モジュール操作表１３１は、実行部１２３、確定部１２４、及び補償実行部１２５が参照する。モジュール操作表１３１の形式を、図３に示す。モジュール操作表１３１は、モジュールに対してある操作を行う場合、ロールバックが可能になるような、その操作と同等の効果を得られる実際の操作と、実際の操作の確定操作と、実際の操作を打ち消す補償操作と、確定操作と補償操作の実行に必要な操作データを定義している。
【００２４】
例えば、ＯＳが提供するファイルシステムというモジュールにおいて、ファイルを削除するのと同等の効果を得て、なおかつロールバックを可能にするためには、ファイルを削除する代わりに実際の操作としてファイル名のリネームを実行する。確定処理は、リネーム後のファイル名で示されるファイルを削除することである。補償操作は、元のファイル名で示されるファイルを削除した後、リネーム後のファイル名で示されるファイルを元のファイル名に再度リネームすることである。この場合、操作データは元のファイル名とリネーム後のファイル名となる。
【００２５】
モジュール補償データ１３２は、実行部１２３が更新し、確定部１２４と補償実行部１２５が読み込む。モジュール補償データ１３２には、確定操作および補償操作で必要となるデータが記録される。例えば、実行部１２３において図２に示す操作表に従ってファイル/home/me/aを削除する場合、元のファイル名/home/me/aとリネーム後のファイル名/home/me/a.bakを保存しておく。
【００２６】
モジュール群１４０には、自作のモジュール、第三者が作成したモジュール、ＯＳ、主記憶装置等が含まれる。モジュール群１４０を構成するモジュール１４ｍ−１（１≦ｍ≦ｎ）は、それぞれ独自のモジュールデータ１４ｍ−２（１≦ｍ≦ｎ）を保持しており、各モジュールの操作によりそれぞれに対応するモジュールデータが変更される。モジュール１４ｍ−１は、実行部１２３、確定部１２４、及び補償実行部１２５によって操作される。
【００２７】
次に、図４を用いて本発明の実施例の構成を説明する。図４はJava（登録商標） EEアプリケーションサーバの配備機能と、運用管理のクライアントを示している。
【００２８】
クライアント５１０は、Java（登録商標）EEアプリケーションサーバにアプリケーションを配備するためのソフトウェアであり、ネットワーク経由でJava（登録商標） EEアプリケーションサーバの受信装置５５０にアプリケーションの配備の要求を送信する。
【００２９】
受信装置５５０は、クライアント５１０からネットワーク経由で送信されてくる配備の要求を受信し、配備機能実行部５２０に要求を転送する。受信装置５５０では、要求の直列化を行う。
【００３０】
配備機能実行部５２０は、受信装置５５０から受信した配備の要求を解析し、記憶装置５３０からモジュールの操作に必要な情報を取得して、その情報を元にモジュール群５４０を操作する。モジュール群５４０を操作する際には、ロールバックに必要な情報を記憶装置５３０に書き込む。モジュール群５４０の操作に失敗した場合、配備機能実行部５２０は、記憶装置５３０に記録されているロールバックに必要な情報を参照して、モジュール群５４０が保持しているデータを操作以前のものに戻す。
【００３１】
配備機能実行部５２０は、入力解析部５２１、制御部５２２、実行部５２３、確定部５２４、及び補償実行部５２５を備えている。
入力解析部５２１は、受信装置５５０から配備の要求を受信し、図２で示すような、操作対象のモジュールと、モジュールの操作内容と、各々のモジュールの実行順序とを決定し、決定結果を制御部５２２に通知する。
【００３２】
制御部５２２は、入力解析部５２１で決定した操作対象のモジュールに対する、入力解析部５２１で決定した操作を、入力解析部５２１で決定した順序で、実行部５２３に対して逐次的に実行を依頼する。全てのモジュールの操作が成功した場合、入力解析部５２１で決定した操作対象のモジュールに対する、入力解析部５２１で決定した操作の確定処理を、入力解析部５２１で決定した順序で、確定部５２４に逐次的に依頼する。また、実行部５２３の実行結果が失敗となった時点で、補償実行部５２５に対してロールバックの実行を依頼する。
【００３３】
ロールバックの実行は、入力解析部５２１で決定した操作対象のモジュールに対する、入力解析部５２１で決定した操作を打ち消す操作を、実行部５２３の実行結果が最初に失敗した操作から、入力解析部５２１で決定した順序とは逆順で、補償実行部５２５に逐次的に依頼する。
【００３４】
実行部５２３は、制御部５２２から依頼を受けてモジュールを操作する。実際には、実行部５２３の内部では、ロールバックを可能にするために、制御部５２２から依頼された操作とは別の操作や複数の操作を組み合わせて実行する。制御部５２２から依頼された操作と、実際に行う操作の対応関係は、モジュール操作表５３１で定義する。実行部５２３は、モジュール操作表５３１を参照し、これに従いモジュールを操作する。実行部５２３は、ロールバックに必要な補償操作や補償データを、モジュール操作表５３１に従って、モジュール補償データ５３２に保存する。モジュールの操作に失敗した場合は、制御部５２２に失敗という結果を返す。
【００３５】
確定部５２４は、制御部５２２から依頼を受けて、実行部５２３で実行した操作を確定する。ここで操作を確定するとは、ロールバックに必要な情報を削除するために、モジュール補償データ５３２に保存されている操作データを用いて、モジュール操作表５３１で定義している確定操作を実行することである。
【００３６】
補償実行部５２５は、制御部５２２から依頼を受けて、実行部５２３で実行した単一の操作についてのロールバックを実行する。ここでロールバックとは、実行部５２３で実行した操作を打ち消す操作をモジュールに対して実行することであり、モジュール補償データ５３２に保存されている操作データを用いて、モジュール操作表５３１で定義している補償操作を実行することである。
【００３７】
記憶装置５３０は、配備機能実行部５２０に対してモジュールの操作に必要な情報を提供する。また記憶装置５３０は、配備機能実行部５２０から提供されるロールバックに必要な情報を記憶する。記憶装置５３０は、モジュール操作表５３１とモジュール補償データ５３２を格納している。
【００３８】
モジュール操作表５３１は、実行部５２３、確定部５２４、及び補償実行部５２５が参照する。図３は、モジュール操作表５３１の例を示している。モジュール操作表５３１は、モジュールに対してある操作を行う場合、ロールバックが可能になるような、その操作と同等の効果を得られる実際の操作と、実際の操作の確定操作と、実際の操作を打ち消す補償操作と、確定操作と補償操作の実行に必要な操作データを定義している。
【００３９】
モジュール補償データ５３２は、実行部５２３が更新し、確定部５２４と補償実行部５２５が読み込む。モジュール補償データ５３２には、確定操作および補償操作で必要となるデータが記録される。
【００４０】
モジュール群５４０は、ファイルシステム５４１−１とＥＪＢ（Enterprise Java（登録商標）Beans）コンテナ５４２−１を備えている。ファイルシステム５４１−１は、データファイルとしてアプリケーションアーカイブ５４１−２を持ち、ファイルの作成とファイルの削除を行う。また、ＥＪＢコンテナ５４２−１はそのデータとしてアプリケーション５４２−２を持ち、アプリケーションのロードとアプリケーションのアンロードの２つの操作を行う。ファイルシステム５４１−１とＥＪＢコンテナ５４２−１は、実行部５２３、確定部５２４、及び補償実行部５２５によって操作が実行される。
【００４１】
モジュール群１４０には、自作のモジュール、第三者が作成したモジュール、ＯＳ、主記憶装置等が含まれる。モジュール群１４０を構成するモジュール１４ｍ−１（１≦ｍ≦ｎ）は、それぞれ独自のモジュールデータ１４ｍ−２（１≦ｍ≦ｎ）を保持しており、各モジュールの操作によりそれぞれに対応するモジュールデータが変更される。モジュール１４ｍ−１は、実行部１２３、確定部１２４、及び補償実行部１２５によって操作される。
【００４２】
次に、図５のフローチャートを用いて本実施形態の動作について説明する。
まず、入力解析部５２１で受信装置５５０からの入力内容を解析し、モジュールと操作のリストを作成する（ステップ６０１）。
【００４３】
次に、制御部５２２は、ステップ６０１で作成されたリストを元に、実行部５２３に逐次モジュールの操作を依頼する（ステップ６０２）。
【００４４】
実行部５２３は、指定されたモジュールに対し、リストにおいて指定された操作を実行する（ステップ６０４）。ステップ６０４において実行した操作が成功と判定された場合（ステップ６０５：成功）、実行部５２３は、ロールバックに必要な情報を、モジュール補償データ５３２として保存する（ステップ６０６）。
【００４５】
リストで指定された全てのモジュールの操作が完了するまで、ステップ６０４〜６０６を繰り返す（ステップ６０３）。リストで指定された全ての操作が完了したら、制御部５２２はリストに基づいて確定部５２４に確定処理を逐次依頼する（ステップ６０７）。
【００４６】
確定部５２４は、指定されたモジュールに対して指定された操作を実行する（ステップ６０９）。リストで指定された全てのモジュールの操作について確定操作が完了するまで、ステップ６０９を繰り返す（ステップ６０８）。
【００４７】
一方、ステップ６０５で操作失敗と判定された場合は、制御部５２２はリストを元に補償実行部５２５にロールバック処理を逐次依頼する（ステップ６１１）。補償実行部５２５は、モジュール補償データ５３２からロールバック用の情報を読み込み、それに従いモジュールを操作する（ステップ６１３）。リストに含まれる操作の中で既に実行済みの操作のロールバック処理が全て完了するまで、ステップ６１３を繰り返す（ステップ６１２）。
【００４８】
以上のように、本実施形態によれば、モジュール操作表とモジュール補償データを利用することにより、モジュール対して実行した操作を打ち消す操作を実行することができるため、ソフトウェアが利用するモジュールがロールバックの機能を有していなくても、そのモジュールの実行結果を打ち消す操作を実行することができる。
【００４９】
また、モジュールに対する操作を表形式でデータ化しているため、表を更新することで追加のモジュールに対応できるので、追加のモジュールを容易にソフトウェアに追加することができる。
【００５０】
また、複数のモジュールで構成されるソフトウェアがある機能を実行したものの、機能の実行が途中で失敗した場合、そのソフトウェアは実行の失敗を検知して状態を機能実行前の状態に戻すため、そのソフトウェアが不整合な状態になる事を防ぐことができる。
【００５１】
本発明は、アプリケーションの配備処理において、設定ファイルやメモリ上の情報やデータベース上の情報等、様々なモジュールを矛盾なく更新する必要があるアプリケーションサーバに適用できる。また、ACIDの特性の内、I(Isolation:隔離性)の制約が緩いロングランニングトランザクションを実現する際に適用できる。
【００５２】
上記の実施の形態の一部または全部は、以下の付記のようにも記載されうるが、以下には限られない。
（付記１）要求された処理と同等の結果が得られ、かつその処理を打ち消すことが可能なように、１つまたは２つ以上の操作を組み合わせて構成した、前記処理に相当する実際の操作と、
前記処理と同等の結果を得るために、前記実際の操作を確定する確定操作と、
前記処理を打ち消すために、前記実際の操作を打ち消す補償操作と、を定義したモジュール操作表を作成する入力解析部と、
前記モジュール操作表に基づいて、対象となるモジュールに対し前記実際の操作を実行すると共に、前記確定操作及び前記補償操作に必要なモジュール補償データを記憶装置に記憶する実行部と、
前記実行部による操作が成功した場合には、前記モジュール補償データを用いて前記確定操作を実行する確定部と、
前記実行部による操作が失敗した場合には、前記モジュール補償データを用いて前記補償操作を実行する補償実行部と、を備えたデータ処理装置。
【００５３】
（付記２）要求された処理と同等の結果が得られ、かつその処理を打ち消すことが可能なように、１つまたは２つ以上の操作を組み合わせて構成した、前記処理に相当する実際の操作と、
前記処理と同等の結果を得るために、前記実際の操作を確定する確定操作と、
前記処理を打ち消すために、前記実際の操作を打ち消す補償操作と、を定義したモジュール操作表を作成し、
前記モジュール操作表に基づいて、対象となるモジュールに対し前記実際の操作を実行すると共に、前記確定操作及び前記補償操作に必要なモジュール補償データを記憶装置に記憶し、
前記実際の操作が成功した場合には、前記モジュール補償データを用いて前記確定操作を実行し、
前記実際の操作が失敗した場合には、前記モジュール補償データを用いて前記補償操作を実行する、データ処理方法。
【００５４】
（付記３）コンピュータを、
要求された処理と同等の結果が得られ、かつその処理を打ち消すことが可能なように、１つまたは２つ以上の操作を組み合わせて構成した、前記処理に相当する実際の操作と、
前記処理と同等の結果を得るために、前記実際の操作を確定する確定操作と、
前記処理を打ち消すために、前記実際の操作を打ち消す補償操作と、を定義したモジュール操作表を作成する入力解析部と、
前記モジュール操作表に基づいて、対象となるモジュールに対し前記実際の操作を実行すると共に、前記確定操作及び前記補償操作に必要なモジュール補償データを記憶装置に記憶する実行部と、
前記実行部による操作が成功した場合には、前記モジュール補償データを用いて前記確定操作を実行する確定部と、
前記実行部による操作が失敗した場合には、前記モジュール補償データを用いて前記補償操作を実行する補償実行部と、して機能させるプログラム。
【符号の説明】
【００５５】
１１０，５１０  入力装置、１２０，５２０  機能実行部、１３０，５３０  記憶装置、１４０，５４０  モジュール群、１２１，５２１  入力解析部、１２２，５２２  制御部、１２３，５２３  実行部、１２４，５２４  確定部、１２５，５２５  補償実行部、１３１，５３１  モジュール操作表、１３２，５３２  モジュール補償データ、１４ｍ−１（１≦ｍ≦ｎ）  モジュール、１４ｍ−２（１≦ｍ≦ｎ）  モジュールデータ、５１０  クライアント、５２０  配備機能実行部、５４１−１  ファイルシステム、５４１−２  アプリケーションアーカイブ、５４２−１  ＥＪＢコンテナ、５４２−２  アプリケーション、５５０  受信装置
【図１】
0005574274.tif 000002
【図２】
0005574274.tif 000003
【図３】
0005574274.tif 000004
【図４】
0005574274.tif 000005
【図５】
0005574274.tif 000006