(57)【要約】【課題】  業務の状態と流れを管理する業務プロセス管理システムにおいて、業務的なエラーが発生した場合、エラーに対処するための例外処理を実行し、自動的に業務プロセス上の以前に実行された業務状態から再開する又は業務プロセスを取り消すことを可能とすることを目的とする。【解決手段】  業務プロセス管理システム１００は、ＢＰＭ実行部１０とアダプタ３０とその他の各記憶部から構成される。業務アプリケーション実行部４０は業務アプリケーションを実行する。補償処理スケジュール管理部１７は、業務アプリケーション実行部４０からアダプタ３０を介して送られるイベントとして又は業務実行部１４が業務アクションを実行した際の例外として、業務エラーを検知すると、補償処理スケジューリングを行い、補償処理内容格納部１８に書き込まれた補償処理内容に基づき、補償処理実行部１６が補償処理を実行する。【選択図】        図２
2006072450.tif 000002
【特許請求の範囲】
【請求項１】
一連の処理（以下、トランザクションという）を実行する情報処理システムにおいて、
トランザクションを実行するトランザクション実行部と、
前記トランザクション実行部のトランザクションの実行を履歴情報として記録する実行ログ管理部と、
前記実行ログ管理部が記録した履歴情報を記憶する実行ログ記憶部と、
トランザクションを取り消す補償処理の定義情報をトランザクションごとに記憶する補償処理記憶部と、
前記実行ログ記憶部が記憶した履歴情報と前記補償処理記憶部が記憶した定義情報とを基に、前記トランザクション実行部が実行したトランザクションを取り消す補償処理を実行する補償処理実行部とを備えることを特徴とする情報処理システム。
【請求項２】
前記情報処理システムは、さらに、
前記トランザクション実行部が実行したトランザクションにおけるエラーを検知するエラー検知部と、
前記エラー検知部が検知したエラーと前記実行ログ記憶部が記憶した履歴情報と前記補償処理記憶部が記憶した定義情報とを基に、前記補償処理実行部が取り消すトランザクションと取り消す順序とを決定し、決定したトランザクションを取り消す補償処理と当該補償処理を実行する順序とを示す補償処理内容を記録する補償処理スケジュール管理部と、
前記補償処理スケジュール管理部が記録した補償処理内容を格納する補償処理内容格納部とを備え、
前記補償処理実行部は、
前記補償処理内容格納部が格納した補償処理内容に従って補償処理を実行することを特徴とする請求項１に記載の情報処理システム。
【請求項３】
前記情報処理システムは、さらに、
入力情報を入力する入力部と、
前記入力部が入力した入力情報に対応するトランザクションの定義情報を記憶する定義記憶部と、
前記トランザクション実行部がトランザクションを実行した結果を出力する出力部とを備え、
前記トランザクション実行部は、
前記入力部が入力した入力情報に対応するトランザクションの定義情報を前記定義記憶部が記憶した定義情報から検索し、検索した定義情報に従ってトランザクションを実行することを特徴とする請求項１又は２に記載の情報処理システム。
【請求項４】
前記情報処理システムは、さらに、
前記情報処理システムの状態を管理する状態管理部を備え、
前記定義記憶部は、
前記状態管理部が管理する状態の定義情報と、前記入力部が入力した入力情報に対応し当該状態を遷移させるトランザクションの定義情報とを記憶することを特徴とする請求項３に記載の情報処理システム。
【請求項５】
前記情報処理システムは、さらに、
トランザクションを１つ以上組み合わせた業務を処理することを特徴とする請求項１から４いずれかに記載の情報処理システム。
【請求項６】
一連の処理（以下、トランザクションという）を実行する情報処理装置を用いた情報処理方法において、
トランザクションを実行するトランザクション実行工程と、
前記トランザクション実行工程のトランザクションの実行を履歴情報として記録する実行ログ管理工程と、
前記実行ログ管理工程で記録した履歴情報を記憶する実行ログ記憶工程と、
トランザクションを取り消す補償処理の定義情報をトランザクションごとに記憶する補償処理記憶工程と、
前記実行ログ記憶工程で記憶した履歴情報と前記補償処理記憶工程で記憶した定義情報とを基に、前記トランザクション実行工程で実行したトランザクションを取り消す補償処理を実行する補償処理実行工程とを備えることを特徴とする情報処理方法。
【請求項７】
前記情報処理方法は、さらに、
前記トランザクション実行工程で実行したトランザクションにおけるエラーを検知するエラー検知工程と、
前記エラー検知工程で検知したエラーと前記実行ログ記憶工程で記憶した履歴情報と前記補償処理記憶工程で記憶した定義情報とを基に、前記補償処理実行工程で取り消すトランザクションと取り消す順序とを決定し、決定したトランザクションを取り消す補償処理と当該補償処理を実行する順序とを示す補償処理内容を記録する補償処理スケジュール管理工程と、
前記補償処理スケジュール管理工程で記録した補償処理内容を格納する補償処理内容格納工程とを備え、
前記補償処理実行工程は、
前記補償処理内容格納工程で格納した補償処理内容に従って補償処理を実行することを特徴とする請求項６に記載の情報処理方法。
【請求項８】
前記情報処理方法は、さらに、
入力情報を入力する入力工程と、
前記入力工程で入力した入力情報に対応するトランザクションの定義情報を記憶する定義記憶工程と、
前記トランザクション実行工程でトランザクションを実行した結果を出力する出力工程とを備え、
前記トランザクション実行工程は、
前記入力工程で入力した入力情報に対応するトランザクションの定義情報を前記定義記憶工程で記憶した定義情報から検索し、検索した定義情報に従ってトランザクションを実行することを特徴とする請求項６又は８に記載の情報処理方法。
【請求項９】
前記情報処理方法は、さらに、
トランザクションを１つ以上組み合わせた業務を処理することを特徴とする請求項６から８いずれかに記載の情報処理方法。
【請求項１０】
一連の処理（以下、トランザクションという）を実行する情報処理プログラムにおいて、
トランザクションを実行するトランザクション実行処理と、
前記トランザクション実行処理のトランザクションの実行を履歴情報として記録する実行ログ管理処理と、
前記実行ログ管理処理が記録した履歴情報を記憶する実行ログ記憶処理と、
トランザクションを取り消す補償処理の定義情報をトランザクションごとに記憶する補償処理記憶処理と、
前記実行ログ記憶処理が記憶した履歴情報と前記補償処理記憶処理が記憶した定義情報とを基に、前記トランザクション実行処理が実行したトランザクションを取り消す補償処理を実行する補償処理実行処理とをコンピュータに実行させることを特徴とする情報処理プログラム。
【請求項１１】
前記情報処理プログラムは、さらに、
前記トランザクション実行処理が実行したトランザクションにおけるエラーを検知するエラー検知処理と、
前記エラー検知処理が検知したエラーと前記実行ログ記憶処理が記憶した履歴情報と前記補償処理記憶処理が記憶した定義情報とを基に、前記補償処理実行処理が取り消すトランザクションと取り消す順序とを決定し、決定したトランザクションを取り消す補償処理と当該補償処理を実行する順序とを示す補償処理内容を記録する補償処理スケジュール管理処理と、
前記補償処理スケジュール管理処理が記録した補償処理内容を格納する補償処理内容格納処理とをコンピュータに実行させ、
前記補償処理実行処理は、
前記補償処理内容格納処理が格納した補償処理内容に従って補償処理を実行することを特徴とする請求項１０に記載の情報処理プログラム。
【請求項１２】
前記情報処理プログラムは、さらに、
入力情報を入力する入力処理と、
前記入力処理が入力した入力情報に対応するトランザクションの定義情報を記憶する定義記憶処理と、
前記トランザクション実行処理がトランザクションを実行した結果を出力する出力処理とをコンピュータに実行させ、
前記トランザクション実行処理は、
前記入力処理が入力した入力情報に対応するトランザクションの定義情報を前記定義記憶処理が記憶した定義情報から検索し、検索した定義情報に従ってトランザクションを実行することを特徴とする請求項１０又は１１に記載の情報処理プログラム。
【請求項１３】
前記情報処理プログラムは、さらに、
トランザクションを１つ以上組み合わせた業務を処理することを特徴とする請求項１０から１２いずれかに記載の情報処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理システム及び情報処理方法及び情報処理プログラムに関するものである。
【背景技術】
【０００２】
非特許文献１で示される従来のアトミックトランザクションシステムでは、アトミックトランザクションの実行中、即ちそのトランザクションがコミットされる前に、エラー又は障害が発生した場合、自動的に例外処理を行い、そのトランザクションが実行されなかった場合と同じ状態を保持することができる。
【非特許文献１】ジム・グレイ、アンドレアス・ロイター著、「トランザクション処理〈上〉〈下〉―概念と技法」、日経ＢＰ社、２００１年１０月
【発明の開示】
【発明が解決しようとする課題】
【０００３】
業務の状態と流れを管理する業務プロセス管理システムにおいて、業務的なエラーが発生した場合、エラーに対処するための例外処理を実行し、業務プロセス上の以前に実行された業務状態から再開する、あるいは、業務プロセスを取り消す必要がある。
【０００４】
業務プロセスは、データベース処理、人間とのインタラクション、通信など、複数の一連のアトミックな処理で構成され、アトミックな各処理においてデータがコミットされる。業務プロセスにおける例外処理では、このような、すでにコミットされた処置結果を業務的に取り消したとみなせる状態にする必要があり、データベース（ＤＢ）の状態を回復後に望ましい状態に更新する（例えば、取り消すフラグをつけてＤＢを更新する。あるいは、支払った金額の払い戻し処理を行うなど）、外部通信先に業務例外を知らせる、人間に対して業務例外が発生したことを知らせるなどといった処理を行う必要がある。
【０００５】
業務プロセス処理における業務エラー処理では、このようにすでにコミットされた処理を戻す必要があるため、従来のアトミックトランザクションシステムと同じ方式で自動的に処理することはできない。業務的に発生しうる各業務エラーに対処するための例外処理を、業務アプリケーション開発者が開発する必要がある。
【０００６】
業務アプリケーション開発者がエラー処理を記述する際、エラーが発生した直接の原因だけでなく、エラーが発生するまでにどのような処理が実行されたか考慮する必要がある。エラーが発生した業務と、処理を戻す業務の間には、複数のパスが存在する可能性があり、これらを考慮して、エラー処理を記述しなければならず、例外処理の記述量が大きく、また、難しくなる可能性がある。
【０００７】
例えば、図１は状態遷移図により業務プロセスを示した例で、“ＳＡ１”〜“ＳＡ６”が業務状態、“ＴＡ１２”〜“ＴＡ５６”が遷移（トランジッション）である。業務状態“ＳＡ５”の時に業務エラーが発生して、業務状態“ＳＡ２”に戻すには、補償処理“ｅｒｒｏｒ１”において、“ＳＡ２”から“ＳＡ５”にいたるまでに実行される可能性のある処理（“ＴＡ２４”、“ＳＡ４”、“ＴＡ４４”、“ＴＡ４５”、“ＴＡ２３”、“ＳＡ３”、“ＴＡ３５”、“ＴＡ５３”）を全て考慮して開発する必要がある。
【０００８】
また、業務プロセス管理システムでは、業務改善に伴って業務プロセスを変更する。例えば、業務の順番変更や追加・削除などが行われる。この時、各業務の正常処理は変更の必要はない。しかし、例外処理は、変更された業務プロセスに合わせて修正する必要がある。このため、業務プロセスの変更に対する柔軟性が損なわれる。
【０００９】
例えば、図１において、“ＳＡ２”と“ＳＡ３”の間に新しい業務状態“ＳＢ２３”が追加されると、補償処理“ｅｒｒｏｒ１”の内容も追加された内容に応じて変更する必要がある。このように、業務プロセスが変更されるたびに“ｅｒｒｏｒ１”の処理を変更しなければいけない。
【００１０】
本発明は、業務（又はその他の情報処理。以下同様）の状態と流れを管理する業務プロセス管理システムにおいて、業務的なエラーが発生した場合、エラーに対処するための例外処理を実行し、自動的に業務プロセス上の以前に実行された業務状態から再開する、あるいは、業務プロセスを取り消すことを可能とすることを目的とする。また、その例外処理を記述する粒度を調整し、例外処理に関する記述量を減らし、業務プロセス変更に対する例外処理の柔軟性を向上させることを目的とする。
【課題を解決するための手段】
【００１１】
本発明の情報処理システムは、
一連の処理（以下、トランザクションという）を実行する情報処理システムにおいて、
トランザクションを実行するトランザクション実行部と、
前記トランザクション実行部のトランザクションの実行を履歴情報として記録する実行ログ管理部と、
前記実行ログ管理部が記録した履歴情報を記憶する実行ログ記憶部と、
トランザクションを取り消す補償処理の定義情報をトランザクションごとに記憶する補償処理記憶部と、
前記実行ログ記憶部が記憶した履歴情報と前記補償処理記憶部が記憶した定義情報とを基に、前記トランザクション実行部が実行したトランザクションを取り消す補償処理を実行する補償処理実行部とを備えることを特徴とする。
【発明の効果】
【００１２】
本発明により、業務の状態と流れを管理する業務プロセス管理システムにおいて、業務的なエラーが発生した場合、自動的に業務プロセス上の以前に実行された業務状態から再開する、あるいは、業務プロセスを取り消すことが可能となる。
【発明を実施するための最良の形態】
【００１３】
以下、本発明の実施の形態について図面を参照して説明する。下記実施の形態では、本発明に係る情報処理システムの例として、業務プロセス管理システムを用いる。
【００１４】
実施の形態１．
図２は本実施の形態に係る業務プロセス管理システムの一例である。
【００１５】
本実施の形態の業務プロセス管理システム１００は、図２に示すように、ＢＰＭ（Ｂｕｓｉｎｅｓｓ  Ｐｒｏｃｅｓｓ  Ｍａｎａｇｅｍｅｎｔ）実行部１０と、アダプタ３０と、その他の各記憶部から構成される。ＢＰＭ実行部１０は業務プロセス管理システムの本体であり、アダプタ３０は、業務アプリケーション実行部４０とＢＰＭ実行部１０を接続するインタフェースである。業務アプリケーション実行部４０は、業務プロセス管理システム１００と同じ装置又は他の装置に実装され、業務記憶部４１に記憶された業務アプリケーションを実行する。
【００１６】
アダプタ３０は、各業務アプリケーションに合わせてカスタマイズされる。アダプタ３０には、入力アダプタ（入力部の一例）と出力アダプタ（出力部の一例）の２種類ある。入力アダプタは業務アプリケーションからのデータ（業務データ）を受信してイベントに変換しＢＰＭ実行部１０に入力する。出力アダプタはＢＰＭ実行部１０の実行結果を、業務アプリケーションで受信できる形式に変換して、業務アプリケーションに渡す。また、アダプタの入出力に関する履歴はアダプタログとしてアダプタログ記憶部３１に記録される。
【００１７】
ＢＰＭ実行部１０には、イベント受信部１１、状態遷移制御部１２、ＢＰＯ（Ｂｕｓｉｎｅｓｓ  Ｐｒｏｃｅｓｓ  Ｏｂｊｅｃｔ）管理部１３（状態管理部の一例）、業務実行部１４（トランザクション実行部の一例）、実行ログ管理部１５、補償処理実行部１６、補償処理スケジュール管理部１７（エラー検知部を含む）、補償処理内容格納部１８が含まれる。補償処理内容格納部１８は揮発性メモリ又は不揮発性メモリに実装される。その他の各部はプログラムであり、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）、メモリなどに実装される。ＢＰＯ管理部１３はＢＰＯ（Ｂｕｓｉｎｅｓｓ  Ｐｒｏｃｅｓｓ  Ｏｂｊｅｃｔ）記憶部２０に業務プロセスオブジェクト（ＢＰＯ）のインスタンスを書き込む。実行ログ管理部１５は実行ログを実行ログ記憶部２２のＤＢに記録する。その他の各部の機能については後述する。
【００１８】
プロセス定義記憶部１９（補償処理記憶部と定義記憶部との組み合わせの一例）、ＢＰＯ記憶部２０、業務アクション記憶部２１、実行ログ記憶部２２、補償処理アクション記憶部２３は、不揮発性メモリに実装される。プロセス定義記憶部１９は状態遷移制御部１２、ＢＰＯ記憶部２０はＢＰＯ管理部１３、業務アクション記憶部２１は業務実行部１４、実行ログ記憶部２２は実行ログ管理部１５、補償処理アクション記憶部２３は補償処理実行部１６と接続する。
【００１９】
業務記憶部４１に記憶される業務アプリケーション、プロセス定義記憶部１９に記憶されるプロセス定義ファイル、業務アクション記憶部２１に記憶される業務アクション、補償処理アクション記憶部２３に記憶される補償処理アクションは、業務開発担当者が、各業務に合わせて開発する業務ロジックを実装する。プロセス定義ファイルは、例えばＵＭＬ（Ｕｎｉｆｉｅｄ  Ｍｏｄｅｌｉｎｇ  Ｌａｎｇｕａｇｅ）状態遷移モデルにより表現した業務プロセスの定義である。
【００２０】
業務アクション記憶部２１に記憶される業務アクションは、業務的に正常な場合に、業務実行部１４において実行される業務ロジックである。業務アクションには、イベントを送信したり、業務ＤＢを更新したり、他の業務プロセスを起動したり、他システムと通信したり、ＢＰＯにデータを格納するロジックなどを記述する。補償処理アクション記憶部２３に記憶される補償処理アクションには、業務エラーが発生した場合の例外処理を記述する。
【００２１】
プロセス定義の例を図３に示す。ＢＰＭ実行部１０は複数のプロセス定義を持つことができる。プロセス定義は、状態遷移モデルにより定義する。“ＳＡ１”〜“ＳＡ６”は状態、“ＴＡ１２”〜“ＴＡ５６”は遷移（トランジッション）を示す。図４（ａ）のように、各状態には、状態アクション及び状態の補償処理などを定義することができる。また図４（ｂ）のように、各トランジッションには、前状態、後状態、イベント名、ガード条件、遷移アクション、遷移の補償処理などが定義される。状態とは、業務プロセスが、業務アプリケーションや業務プロセスからイベントが入力されるのを待っている状態である。各トランジッションは入力されたイベントとガード条件により選択され、トランジッションにリンクしている業務アクションが実行された後で、遷移先の状態に遷移する。また、業務エラーに対処するための補償処理には、“ＳＡ１”〜“ＳＡ６”のそれぞれに対応する“ＣＳＡ１”〜“ＣＳＡ６”の状態の補償処理と、“ＴＡ１２”〜“ＴＡ５６”のそれぞれに対応する“ＣＴＡ１２”〜“ＣＴＡ５６”のトランジッションの補償処理とがある。図３の例では状態“ＳＡ５”で業務エラー“ＥＲＲ５”が発生して、状態“ＳＡ２”に戻る。
【００２２】
次に、このように構成された業務プロセス管理システム１００の動作について説明する。
【００２３】
まず、図５を用いて、正常時の実行ログ記録の動作について説明する。図５は、本実施の形態における業務プロセスの正常処理を示すフローチャートである。
【００２４】
初めに、図３の例において、業務プロセス開始時（状態“ＳＡ１”から状態“ＳＡ２”に至るまで）に、図２の各部がどのように動作するか示す。
【００２５】
まず、業務アプリケーション実行部４０が、入力アダプタに業務データ（例えば、見積もりプロセスの見積もり依頼データ）を渡す（ＳＴ１０１）。入力アダプタは、アダプタログに業務データを書き込み（ＳＴ１０２）、業務データを図６に示す構造のイベントデータに変換する（ＳＴ１０３）。図６のイベントデータにおいて、イベント名は図４（ｂ）のイベント名、プロセスグループＩＤ、プロセスＩＤは対応するＢＰＯを識別するためのＩＤ、プロセス定義名は業務プロセスに対応する業務プロセス定義の名前（プロセス定義ファイルの名前としてもよい）、イベントデータは業務データからイベントとして扱いたいデータを切り出したデータ、ＢＰＯ保存データは業務データからＢＰＯに保存したいデータを切り出したデータである。イベントデータは、１回のイベント処理が終わると捨てられるが、ＢＰＯ保存データはイベント処理後にＢＰＯに保存されるため、同じＢＰＯに対する別のイベント処理から参照することができる。入力アダプタでは、２回目以降のイベント入力の際に、同じＢＰＯのインスタンスを参照できるように、業務データにおけるキーとなるデータ（例えば、見積もり依頼データを識別する見積もりＩＤ）と、プロセスＩＤ、プロセスグループＩＤをリンクさせる。
【００２６】
そして、入力アダプタは、イベント受信部１１にイベント（例では“ｅＴＡ１２”）を渡す（ＳＴ１０４）。
【００２７】
イベント受信部１１はＢＰＯ管理部１３に、イベントデータのプロセスＩＤ、プロセスグループＩＤに対応するＢＰＯのインスタンス生成を依頼する（ＳＴ１０５）。
【００２８】
ＢＰＯ管理部１３は指定されたプロセスＩＤ、プロセスグループＩＤに対応するＢＰＯのインスタンスをＢＰＯ記憶部２０のＤＢ上に生成する（ＳＴ１０６）。この時、ＢＰＯの状態は、イベントデータに含まれるプロセス定義の情報を見て、対応するプロセス定義の開始状態、即ち、例においては“ＳＡ１”に初期化される。次に、ＢＰＯ管理部１３は、実行ログ管理部１５に実行ログの記録を依頼する。実行ログ管理部１５は、実行ログ記憶部２２に図７のようにタイムスタンプ“ｔ１”の情報を記録する（ＳＴ１０７）。
【００２９】
次に、イベント受信部１１は、状態遷移制御部１２に、イベントデータを渡す（ＳＴ１０８）。状態遷移制御部１２は、プロセス定義記憶部１９を参照してイベントデータのイベント名“ｅＴＡ１２”が一致し、ガード条件が真となるトランジッションを選択する（ＳＴ１０９）。この例の場合、“ＴＡ１２”が選択され、遷移先は“ＳＡ２”となる。
【００３０】
状態が遷移する場合、業務実行部１４はトランザクションを実行する。トランザクションは、ＥｎｔｒｙとＥｘｉｔの状態アクションと、遷移アクションとの３種類の業務アクションから成る。Ｅｎｔｒｙアクションは状態遷移において遷移先の状態に入る時に実行されるアクション、Ｅｘｉｔアクションは状態遷移において遷移前の状態から抜けるときに実行されるアクション、遷移アクションは状態遷移自体に対応付けされたアクションである。遷移アクションは、その遷移に対応するイベントが入力されて、ガード条件（遷移に対応付けられた条件）が満たされている場合に実行される。これらの３種類のアクションは、遷移前の状態のＥｘｉｔアクション、遷移アクション、遷移先の状態のＥｎｔｒｙアクションという順で実行される。
【００３１】
この例では、状態遷移制御部１２は、業務実行部１４に、“ＳＡ１”のＥｘｉｔアクション“ｓａ１ｘａｃｔ”、“ＴＡ１２”の遷移アクション“ａｃｔ１２”、“ＳＡ２”のＥｎｔｒｙアクション“ｓａ２ａｃｔ”を実行させる（ＳＴ１１０）。そして、状態遷移制御部１２は、実行ログ管理部１５に実行ログの記録を依頼する。実行ログ管理部１５は、実行ログ記憶部２２に図７のようにタイムスタンプ“ｔ２”の情報を記録する（ＳＴ１１１）。そして、状態遷移制御部１２は、ＢＰＯの状態を“ＳＡ２”となるように、ＢＰＯ管理部１３に依頼する。ＢＰＯ管理部１３は、ＢＰＯの状態を“ＳＡ２”にした後で（ＳＴ１１２）、実行ログ管理部１５に実行ログの記録を依頼する。実行ログ管理部１５は、実行ログ記憶部２２に、図７のようにタイムスタンプ“ｔ３”の情報を記録する（ＳＴ１１３）。
【００３２】
このように、業務プロセス開始時には、３つの実行ログが記録される。
【００３３】
次に、図３の例において、すでに開始されている業務プロセスの実行時（状態“ＳＡ２”から状態“ＳＡ４”に至るまで）に、図２の各部がどのように動作するか示す。
【００３４】
まず、業務アプリケーション実行部４０が、入力アダプタに業務データを渡す（ＳＴ１０１）。入力アダプタは、アダプタログに業務データを書き込み（ＳＴ１０２）、業務データを図６に示す構造のイベントデータに変換する（ＳＴ１０３）。この際、入力アダプタは、業務データに含まれるキーとなるデータを元に、業務プロセス開始時のイベントデータと同じプロセスＩＤとプロセスグループＩＤとを設定したイベントデータを作成する。
【００３５】
そして、入力アダプタは、イベント受信部１１にイベント（例では“ｅＴＡ２４”）を渡す（ＳＴ１０４）。
【００３６】
イベント受信部１１はＢＰＯ管理部１３に、イベントデータのプロセスＩＤ、プロセスグループＩＤを渡し、現在のＢＰＯの状態（例の場合“ＳＡ２”）を得る（ＳＴ１０５）。
【００３７】
次に、イベント受信部１１は、状態遷移制御部１２に、イベントデータを渡す（ＳＴ１０８）。状態遷移制御部１２は、プロセス定義記憶部１９を参照してイベントデータのイベント名“ｅＴＡ２４”が一致し、ガード条件が真となるトランジッションを選択する（ＳＴ１０９）。この例の場合、“ＴＡ２４”が選択され、遷移先は“ＳＡ４”となる。
【００３８】
状態遷移制御部１２は、業務実行部１４に、“ＳＡ２”のＥｘｉｔアクション“ｓａ２ｘａｃｔ”、“ＴＡ２４”の遷移アクション“ａｃｔ２４”、“ＳＡ４”のＥｎｔｒｙアクション“ｓａ４ａｃｔ”を実行させる（ＳＴ１１０）。そして、状態遷移制御部１２は、実行ログ管理部１５に実行ログの記録を依頼する。実行ログ管理部１５は、実行ログ記憶部２２に図７のようにタイムスタンプ“ｔ４”の情報を記録する（ＳＴ１１１）。そして、状態遷移制御部１２は、ＢＰＯの状態を“ＳＡ４”となるように、ＢＰＯ管理部１３に依頼する。ＢＰＯ管理部１３は、ＢＰＯの状態を“ＳＡ４”にした後で（ＳＴ１１２）、実行ログ管理部１５に実行ログの記録を依頼する。実行ログ管理部１５は、実行ログ記憶部２２に、図７のようにタイムスタンプ“ｔ５”の情報を記録する（ＳＴ１１３）。
【００３９】
このように、業務アプリケーションから図３の業務プロセスに、イベント“ｅＴＡ１２”、“ｅＴＡ２４”が入力されると、業務プロセスが状態“ＳＡ４”まで進み、図７のように実行ログにタイムスタンプ“ｔ１”〜“ｔ５”の情報が記録される。同様に、続けてイベント“ｅＴＡ４４”、“ｅＴＡ４４”、“ｅＴＡ４５”が入力されると、業務プロセスが状態“ＳＡ５”まで進み、図７のように実行ログにタイムスタンプ“ｔ６”〜“ｔ１１”の情報が記録される。
【００４０】
次に、図８を用いて、補償処理スケジューリングの動作について説明する。図８は、本実施の形態における業務プロセスの補償処理を示すフローチャートである。
【００４１】
ここでは、図３の例において、業務エラー発生時（状態“ＳＡ５”から状態“ＳＡ２”に戻るまで）に、図２の補償処理スケジュール管理部１７がどのように動作するか示す。補償処理スケジュール管理部１７は、業務アプリケーション実行部４０からアダプタ３０を介して送られるイベントとして、あるいは、業務実行部１４が業務アクションを実行した際の例外として、業務障害（エラー）を検知すると、補償処理スケジューリングを開始する。
【００４２】
補償処理スケジュール管理部１７は、まず、ＢＰＯ管理部１３を介して、ＢＰＯ記憶部２０に記憶されたＢＰＯから現在の状態を得る（ＳＴ２０１）。そして、状態遷移制御部１２を介して、プロセス定義記憶部１９に記憶されたプロセス定義の中から、現在の状態に対応する業務エラーを得る（ＳＴ２０２）。また同様に、現在の状態に対応する業務エラー対処方法を得る（ＳＴ２０３）。
【００４３】
この業務エラー対処方法が、「終了」の場合、補償処理をスケジュールせず、処理を終了する。「固定状態に戻る」の場合、戻り先の状態を指定された固定の状態として処理する（ＳＴ２０５）。「業務エラーアクションの結果が示す状態に戻る」の場合、業務実行部１４にて業務エラーアクションを実行させ（ＳＴ２０４）、戻る状態を業務エラーアクションの結果にする（ＳＴ２０５）。
【００４４】
次に、実行ログ管理部１５を介して、実行ログにプロセスＩＤ、プロセスグループＩＤを指定し、実行ログ記憶部２２を検索して一覧を得る（ＳＴ２０６）。さらにその結果をタイムスタンプでソートして、現在の状態と戻り先の状態との間の実行ログに絞り込む（ＳＴ２０７）。絞り込んだ実行ログの各行に対して、以下のようにタイムスタンプが新しい方から古い方に向かって順番にループ処理する（ＳＴ２０８）。
【００４５】
実行ログの行のログ種別が「状態」の場合、実行ログの行の示す状態に対応する補償処理を図４（ａ）のプロセス定義から得て、これを補償処理内容として補償処理内容格納部１８に書き込む（ＳＴ２０９）。また、実行ログの行の示す状態、状態種別、Ｅｎｔｒｙアクション、ＢＰＯのデータを入力パラメータとして指定して、補償処理内容格納部１８の補償処理内容に書き込む（ＳＴ２１１）。
【００４６】
実行ログの行のログ種別が「遷移」の場合、実行ログの行の示すトランジッションに対応する補償処理を図４（ｂ）のプロセス定義から得て、これを補償処理内容として補償処理内容格納部１８に書き込む（ＳＴ２１０）。また、実行ログの行の示す遷移前の状態、Ｅｘｉｔアクション、遷移、遷移後の状態、イベント名、イベントデータ、アクション、及びアダプタログのイベントに対応する業務データを入力パラメータとして指定して、補償処理内容格納部１８の補償処理内容に書き込む（ＳＴ２１１）。ここで、アダプタログのデータは、例えば、アダプタ３０を介して取得するか、又はアダプタログ記憶部３１と補償処理スケジュール管理部１７を接続して直接アダプタログ記憶部３１から取得する。
【００４７】
絞り込んだ実行ログの全行を補償処理内容に反映させると、処理を終了する。この例では、図３の“ＳＡ５”で障害が発生して、その時図７の実行ログが記録されているため、以下の補償処理が補償処理内容に書き込まれる。
“ＣＳＡ５”、“ＣＴＡ４５”、“ＣＳＡ４”、“ＣＴＡ４４”、“ＣＳＡ４”、“ＣＴＡ４４”、“ＣＳＡ４”、“ＣＴＡ４４”、“ＣＳＡ４”、“ＣＴＡ２４”、“ＣＳＡ２”。
【００４８】
このように補償処理スケジューリングが行われると、補償処理内容格納部１８に書き込まれた補償処理内容に基づき、補償処理実行部１６が補償処理を実行する。
【００４９】
以上のように、本実施の形態では、業務の状態と流れを管理する業務プロセス管理システムにおいて、業務的なエラーが発生した場合、自動的に業務プロセス上の以前に実行された業務状態から再開する、あるいは、業務プロセスを取り消すことが可能となる。これにより、すでにアトミックトランザクションがコミットしてデータが確定したトランザクションで行われた処理を、業務的に処理が行われていなかったのと同じ状態にすることができる。さらに、本実施の形態では、複数のトランザクションがコミットされて、途中で人間が行う業務が入るような長いスパンのトランザクション（ロングタイムトランザクション）を扱うことができる。
【００５０】
前述した実施の形態で、業務プロセス管理システム１００は、コンピュータで実現できるものである。
図示していないが、業務プロセス管理システム１００は、プログラムを実行するＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）を備えている。
【００５１】
例えば、ＣＰＵは、バスを介して、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、通信ボード、表示装置、Ｋ／Ｂ（キーボード）、マウス、ＦＤＤ（Ｆｌｅｘｉｂｌｅ  Ｄｉｓｋ  Ｄｒｉｖｅ）、ＣＤＤ（コンパクトディスクドライブ）、磁気ディスク装置、光ディスク装置、プリンタ装置、スキャナ装置等と接続されている。
ＲＡＭは、揮発性メモリの一例である。ＲＯＭ、ＦＤＤ、ＣＤＤ、磁気ディスク装置、光ディスク装置は、不揮発性メモリの一例である。これらは、記憶装置あるいは記憶部の一例である。
前述した各実施の形態の業務プロセス管理システム１００が扱うデータや情報は、記憶装置あるいは記憶部に保存され、業務プロセス管理システム１００の各部により、記録され読み出されるものである。
【００５２】
また、通信ボードは、例えば、ＬＡＮ、インターネット、或いはＩＳＤＮ等のＷＡＮ（ワイドエリアネットワーク）に接続されている。
【００５３】
磁気ディスク装置には、オペレーティングシステム（ＯＳ）、ウィンドウシステム、プログラム群、ファイル群（データベース）が記憶されている。
プログラム群は、ＣＰＵ、ＯＳ、ウィンドウシステムにより実行される。
【００５４】
上記業務プロセス管理システム１００の各部は、一部或いはすべてコンピュータで動作可能なプログラムにより構成しても構わない。或いは、ＲＯＭに記憶されたファームウェアで実現されていても構わない。或いは、ソフトウェア或いは、ハードウェア或いは、ソフトウェアとハードウェアとファームウェアとの組み合わせで実施されても構わない。
【００５５】
上記プログラム群には、実施の形態の説明において「〜部」として説明した処理をＣＰＵに実行させるプログラムが記憶される。これらのプログラムは、例えば、Ｃ言語やＨＴＭＬやＳＧＭＬやＸＭＬなどのコンピュータ言語により作成される。
【００５６】
また、上記プログラムは、磁気ディスク装置、ＦＤ（Ｆｌｅｘｉｂｌｅ  Ｄｉｓｋ）、光ディスク、ＣＤ（コンパクトディスク）、ＭＤ（ミニディスク）、ＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｋ）等のその他の記録媒体に記憶され、ＣＰＵにより読み出され実行される。
【００５７】
以上のように、上記実施の形態で説明した業務プロセス管理システムは、ロングタイムトランザクション（業務プロセスのように、複数のアトミックトランザクションを組み合わせたもの）の補償処理を自動的に構成する機能を持つ。
【００５８】
また、上記業務プロセス管理システムは、
状態遷移モデルで記述された業務プロセスの実行過程のログ、すなわち、状態、トランジッション、イベント、イベントデータ、アクション、各業務状態における業務プロセスオブジェクト、アクション実行の情報をＤＢ上に記録する実行ログ記録部、及び、記録された実行ログの情報を元に、各トランジッションごとに記述された補償処理アクションの実行順序をスケジューリングすることにより全体の補償処理を構成し、ログに記録されたデータから各補償処理アクションに適切なデータを渡しながら実行することにより、適切なエラー処理を行い、すでに実行された処理を取り消すことができることを特徴とする補償処理実行部を持つ。
【００５９】
また、上記業務プロセス管理システムは、
状態遷移モデルを拡張して分岐・結合により並列に動作する業務プロセスに対応できることを特徴とする。
【００６０】
また、上記業務プロセス管理システムは、
複数の業務プロセスが連鎖する業務に対応できることを特徴とする。
【図面の簡単な説明】
【００６１】
【図１】業務プロセス管理システムの課題を示す状態遷移図。
【図２】実施の形態１に係る業務プロセス管理システムの構成を示すブロック図。
【図３】実施の形態１における業務プロセスの一例を示す状態遷移図。
【図４】実施の形態１における業務プロセスの一例を表すプロセス定義。
【図５】実施の形態１における業務プロセスの正常処理を示すフローチャート。
【図６】実施の形態１におけるイベントの構造を示す概念図。
【図７】実施の形態１における実行ログの形式と例。
【図８】実施の形態１における業務プロセスの補償処理を示すフローチャート。
【符号の説明】
【００６２】
１０  ＢＰＭ実行部、１１  イベント受信部、１２  状態遷移制御部、１３  ＢＰＯ管理部、１４  業務実行部、１５  実行ログ管理部、１６  補償処理実行部、１７  補償処理スケジュール管理部、１８  補償処理内容格納部、１９  プロセス定義記憶部、２０  ＢＰＯ記憶部、２１  業務アクション記憶部、２２  実行ログ記憶部、２３  補償処理アクション記憶部、３０  アダプタ、３１  アダプタログ記憶部、４０  業務アプリケーション実行部、４１  業務記憶部、１００  業務プロセス管理システム。
【図１】
2006072450.tif 000003
【図２】
2006072450.tif 000004
【図３】
2006072450.tif 000005
【図４】
2006072450.tif 000006
【図５】
2006072450.tif 000007
【図６】
2006072450.tif 000008
【図７】
2006072450.tif 000009
【図８】
2006072450.tif 000010