(57)【要約】  本発明は、フロー管理の分野に関し、ビジネスフロースケジューリングのためのコンピュータ装置、方法及び装置を開示する。ビジネスフロースケジューリングのための方法は、スケジュールされるべきノードに対してトランザクションセーブポイントが設定されることを判定するステップと、スケジュールされるべきノード上に存在するとともにトランザクションセーブポイントのあとに存在するスケジュールされるべきタスクを含む非同期タスクを、トランザクションセーブポイントに従って作成するステップと、フローにおける非同期タスク以外のタスクを含むトランザクションを実行するために第１のスレッドを使用し、データの整合性を保証するように、第１のスレッドにより実行されたトランザクションをサブミットするステップと、タスクノードの間でトランザクション分割を実行するように、非同期タスクを実行するために第２のスレッドを使用するステップとを含む。
2016541056.tif 000002
【特許請求の範囲】
【請求項１】
少なくとも１つのノードを含むフローを実行するように構成されるとともに、判定ユニット、作成ユニット及び実行ユニットを備えるフロースケジューリング装置であって、
前記判定ユニットが、スケジュールされるべきノードに対してトランザクションセーブポイントが設定されることを判定するように構成され、
前記作成ユニットが、前記スケジュールされるべきノード上に存在するとともに前記トランザクションセーブポイントのあとに存在するスケジュールされるべきタスクを含む非同期タスクを、前記判定ユニットにより判定された前記トランザクションセーブポイントに従って作成するように構成され、
前記実行ユニットが、前記フローにおける前記非同期タスク以外のタスクを含むトランザクションを実行するために第１のスレッドを使用し、前記第１のスレッドにより実行された前記トランザクションをサブミットするとともに、前記非同期タスクを実行するために第２のスレッドを使用するように構成される、フロースケジューリング装置。
【請求項２】
前記実行ユニットが、前記第１のスレッドが属する第１のフローエンジンプロセスのスケジュールされるべきタスクキューに前記非同期タスクを配置するように更に構成される、請求項１に記載のフロースケジューリング装置。
【請求項３】
前記実行ユニットが、前記第１のスレッドが属する第１のフローエンジンプロセスのスケジュールされるべきタスクキューに前記非同期タスクを配置するように構成されることが、前記実行ユニットが、登録済みトランザクションサブミッションイベントコールバックリスナーに従ってリッスンすることにより、前記第１のスレッドにより実行された前記トランザクションが首尾よくサブミットされたことが得られる場合に、前記第１のフローエンジンプロセスの前記スケジュールされるべきタスクキューに前記非同期タスクを配置するように構成されることを含む、請求項２に記載のフロースケジューリング装置。
【請求項４】
前記実行ユニットが、前記非同期タスクの実行が完了されるまえに前記第２のスレッドが例外的に終了する場合に、前記スケジュールされるべきタスクキューから前記非同期タスクを取り出し、前記非同期タスクを実行するために第３のスレッドを使用するように更に構成される、請求項２又は請求項３に記載のフロースケジューリング装置。
【請求項５】
前記実行ユニットが、前記非同期タスクをパーシストし、前記第１のスレッドにより実行された前記トランザクションがサブミットされたあとで、前記のパーシストされた非同期タスクをデータベースに記憶し、その結果、前記非同期タスクの実行が完了されるまえに前記第２のスレッドが属する第１のフローエンジンプロセスが例外的に終了する場合に、第２のフローエンジンプロセスが前記データベースから前記非同期タスクを獲得し、前記非同期タスクをスケジュールするとともに実行する、ように更に構成される、請求項１に記載のフロースケジューリング装置。
【請求項６】
前記トランザクションセーブポイントが、前記データベースに存在するフローの定義に記憶される、請求項１から請求項５のいずれか一項に記載のフロースケジューリング装置。
【請求項７】
前記トランザクションが宣言的トランザクションである、請求項１から請求項６のいずれか一項に記載のフロースケジューリング装置。
【請求項８】
少なくとも１つのノードを含むビジネスフローをスケジューリングするための方法であって、当該方法が、
スケジュールされるべきノードに対してトランザクションセーブポイントが設定されることを判定するステップと、
前記スケジュールされるべきノード上に存在するとともに前記トランザクションセーブポイントのあとに存在するスケジュールされるべきタスクを含む非同期タスクを、前記トランザクションセーブポイントに従って作成するステップと、
前記フローにおける前記非同期タスク以外のタスクを含むトランザクションを実行するために第１のスレッドを使用し、前記第１のスレッドにより実行された前記トランザクションをサブミットするステップと、
前記非同期タスクを実行するために第２のスレッドを使用するステップとを含む、方法。
【請求項９】
前記第１のスレッドにより実行された前記トランザクションをサブミットする前記ステップのあとに、前記第１のスレッドが属する第１のフローエンジンプロセスのスケジュールされるべきタスクキューに前記非同期タスクを配置するステップを更に含む、請求項８に記載の方法。
【請求項１０】
当該方法が、トランザクションサブミッションイベントコールバックリスナーを登録するステップを更に含み、
前記第１のスレッドが属する第１のフローエンジンプロセスのスケジュールされるべきタスクキューに前記非同期タスクを配置する前記ステップが、リッスンすることにより、前記第１のスレッドにより実行された前記トランザクションが首尾よくサブミットされたことが得られる場合に、前記第１のフローエンジンプロセスの前記スケジュールされるべきタスクキューに前記非同期タスクを配置するステップを具体的に含む、請求項９に記載の方法。
【請求項１１】
当該方法が、前記非同期タスクの実行が完了されるまえに前記第２のスレッドが例外的に終了する場合に、前記スケジュールされるべきタスクキューから前記非同期タスクを取り出し、前記非同期タスクを実行するために第３のスレッドを使用するステップを更に含む、請求項９又は請求項１０に記載の方法。
【請求項１２】
非同期タスクを作成する前記ステップのあとに、前記非同期タスクをパーシストするステップを更に含み、
前記第１のスレッドにより実行された前記トランザクションをサブミットする前記ステップのあとに、前記のパーシストされた非同期タスクをデータベースに記憶するステップを更に含む、請求項８に記載の方法。
【請求項１３】
当該方法が、前記非同期タスクの実行が完了されるまえに前記第２のスレッドが属する第１のフローエンジンプロセスが例外的に終了する場合に、第２のフローエンジンプロセスにより、前記データベースから前記非同期タスクを獲得し、前記非同期タスクをスケジュールするとともに実行するステップを更に含む、請求項１２に記載の方法。
【請求項１４】
前記トランザクションセーブポイントが、前記データベースに存在するフローの定義に記憶される、請求項８から請求項１３のいずれか一項に記載の方法。
【請求項１５】
少なくとも１つのノードを含むフローを実行するように構成されるとともに、メモリ及びプロセッサを備える、フロースケジューリングを実行するためのコンピュータ装置であって、
前記メモリが、当該コンピュータ装置の命令を記憶するように構成され、
前記プロセッサが、下記の、
スケジュールされるべきノードに対してトランザクションセーブポイントが設定されることを判定するステップと、
前記スケジュールされるべきノード上に存在するとともに前記トランザクションセーブポイントのあとに存在するスケジュールされるべきタスクを含む非同期タスクを、前記トランザクションセーブポイントに従って作成するステップと、
前記フローにおける前記非同期タスク以外のタスクを含むトランザクションを実行するために第１のスレッドを使用し、前記第１のスレッドにより実行された前記トランザクションをサブミットするステップと、
前記非同期タスクを実行するために第２のスレッドを使用するステップとを達成するために、前記メモリ内の前記命令を実行するように構成される、コンピュータ装置。
【請求項１６】
前記プロセッサが、登録済みトランザクションサブミッションイベントコールバックリスナーに従ってリッスンすることにより、前記第１のスレッドにより実行された前記トランザクションが首尾よくサブミットされたことが得られる場合に、第１のフローエンジンプロセスのスケジュールされるべきタスクキューに前記非同期タスクを配置するように更に構成される、請求項１５に記載のコンピュータ装置。
【請求項１７】
前記プロセッサが、前記非同期タスクの実行が完了されるまえに前記第２のスレッドが例外的に終了する場合に、前記スケジュールされるべきタスクキューから前記非同期タスクを取り出し、前記非同期タスクを実行するために第３のスレッドを使用するように更に構成される、請求項１６に記載のコンピュータ装置。
【請求項１８】
前記プロセッサが、前記非同期タスクをパーシストし、前記第１のスレッドにより実行された前記トランザクションがサブミットされたあとで、前記のパーシストされた非同期タスクをデータベースに記憶し、その結果、前記非同期タスクの実行が完了されるまえに前記第２のスレッドが属する第１のフローエンジンプロセスが例外的に終了する場合に、第２のフローエンジンプロセスが前記データベースから前記非同期タスクを獲得し、前記非同期タスクをスケジュールするとともに実行する、ように更に構成される、請求項１５に記載のコンピュータ装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、フロー管理の分野に関し、特に、ビジネスフローをスケジュールするためのコンピュータ装置、方法及び装置に関する。
【０００２】
本出願は、２０１３年１１月１４日に中国特許庁に出願され、“COMPUTER  DEVICE,  METHOD,  AND  APPARATUS  FOR  SCHEDULING  BUSINESS  FLOW”と表題が付けられた中国特許出願第201310567968.8号に対する優先権を主張するとともに、それはその全体における参照によりここに組み込まれている。
【背景技術】
【０００３】
ワークフローは、時間系列又は論理関係に従って関連のビジネスアクティビティを相互接続することにより形成されたビジネスフローである。ビジネスオペレーションの間、文書、情報又はタスクは、組織の仕様に従った複数の関係者の間で転送されるか、処理されるか、又は実行される。ワークフロー技術の最も顕著な特徴は、コンピュータアプリケーション環境におけるビジネスプロセスの一部又は全体の自動化であり、そのようなプロセスは、概して、人間及び機械の関与を必要とするアクティビティ、例えば情報技術（ＩＴ、Information  Technology）アプリケーションプログラム及びツールとの対話プロセスのことを指す。ワークフローは、一群のタスク（又はアクティビティ）と、タスク（又はアクティビティ）の間の順序関係とを含み、そして、フロー及びタスクの開始条件並びに終了条件と、各タスクの説明とを更に含む。
【０００４】
ワークフロー管理システムは、ワークフローを定義して、作成して、そして実行するシステムのことを指す。システムは、主として、次の３つの態様、すなわち、ワークフロープロセス及びそのアクティビティを定義するとともに、モデリングする構築機能、オペレーション環境におけるワークフロープロセスを管理するとともに、ワークフロープロセスにおけるアクティビティをスケジュールするオペレーション制御機能、並びに、ワークフローのオペレーションの間、ユーザ（ビジネスジョブの関係者又は管理者）及び外部のアプリケーションプログラムと対話するオペレーション対話機能における機能サポートを提供する。
【０００５】
現在、ワークフロー技術は、広く適用される。例えば、ワークフローは、ビジネスフロー管理のために、企業のビジネスに導入される。ビジネスプロセス管理（Business  Process  Management、ＢＰＭ）に関係したミドルウェアスイートは、概して、モデリングツール（ビジネスフローのモデリングに関与する）、ＢＰＭエンジン（ビジネスフローの駆動に関与する）、フロー管理コンソール、そして技術的フレームワークプラットホームを含む。ビジネスがフローの編成、展開、オペレーション及びスケジューリングを達成することを支援し、それにより、企業のために、企業のビジネスの発展に足並みをそろえられる様々なフローを作成するように、ミドルウェアスイートは、プロセスモデリング及びエンジンプロセスインスタンススケジューリングのためのアプリケーションプログラミングインタフェース（Application  Programming  Interface、ＡＰＩ）によって上位層のビジネスを提供するために、ビジネスシステムに埋め込まれることができる。
【０００６】
図１は、ＢＰＭを使用することにより編成された典型的なビジネスフローの概略図を例示する。情報の同期化から注文の履行までは、完全な口座の開設フローであり、情報の同期化から料金の同期化を通り注文の履行までの各アクティビティは、タスクである。ビジネスサービスは、各タスクに対して設定されるとともに、それらのサービスは、図１においてあらかじめ編成された順序で実行される。各タスクは、フローのスケジューリング及び実行の間の１つのノードに対応する。口座の開設フローそのものは、本発明の懸案事項ではなく、したがって、ここでは詳細に説明されない。
【０００７】
ビジネスフローに関して、顧客の要求は下記を含む。
１．フローは、最後まで正しい論理構成の前提条件の下でビジネスゴールに従ってビジネスサービスを実行することを開始することができる。
２．フローは、ビジネスの追跡及び照会のために、各ステップにおいて実行情報を記録することができる。
３．ビジネスデータの変化を伴うデータの整合性は、フローの前方フローの間保持される必要がある。
４．フローにおけるノード上で例外が発生した場合に、フローが例外ノードにおいて停止するとともに、完了されたビジネスサービススケジューリングに影響を及ぼさずにフローが実行され続けることができるまで、障害に対する再試行又は人間の介入がサポートされる。
５．エンジンプロセスが例外的に終了する場合に、プロセスの再開と同時に完了されていないタスクから実行が再開されることをサポートする必要がある。
６．フローのスケジューリング性能は高くなければならない。
【０００８】
従来技術の解決法では、ビジネスフローの定義のためのサービス構成及び順序編成を達成するために、ビジュアルフロー編成ツールが最初に使用され、ＢＰＭエンジンが、ビジネス入力及び呼び出し要求に従って、前述の編成されたフローの定義に基づいて、完了までフローを前方へ駆動する。ＢＰＭエンジンのフローは、データベースにパーシストされるとともに、データの整合性を保証するために、トランザクションメカニズムが、パーシステンスプロセス（persistence  process）における制御のために使用される。ＢＰＭプラットフォームとビジネスシステムとの間のトランザクションが一様にスケジュールされることを保証するために、ビジネスシステム及びＢＰＭプラットフォームに対して、同じトランザクションフレームワーク、例えば、Spring  transaction  framework、又は別の同様のトランザクションフレームワークが使用される必要がある。宣言的トランザクションが、同様に、ＢＰＭプラットフォームのＡＰＩに対する呼び出しを開始するために、ビジネスに対して設定される必要がある。宣言的トランザクションは、トランザクションが設定ファイルにおける宣言を用いて扱われることを意味する。宣言的トランザクションを使用することの利点は、トランザクションの管理が変化する場合に、再コンパイルのためにコードを変更する必要がなく、設定ファイルにおいて再構成を行うことだけが必要である、ということである。ビジネスがフローをフローの前方へ駆動するためにフロースタートＡＰＩを呼び出すと、トランザクション制御が使用されるので、もし中間ノード上で例外が発生したならば、トランザクションはトランザクション開始点にロールバックされるが、しかし、例外ノードに対するロールバックはサポートされていないとともに、同様に、実行は例外ノードから再開できない。
【０００９】
したがって、ビジネスフロースケジューリングの間、従来技術は、ビジネスシステムとＢＰＭプラットフォームとの間のデータの整合性を保証することも、例外が発生した場合にフローが例外ノードで終了するとともに、実行があとで例外ノードから再開されることを保証することもできない。
【発明の概要】
【００１０】
本発明の実施例は、ビジネスフローをスケジュールするためのコンピュータ装置、方法及び装置を提供し、それは、ビジネスシステムとＢＰＭプラットフォームとの間のデータの整合性を保証することができるばかりでなく、例外が発生した場合にフローが例外ノードで終了するとともに、復旧と同時に実行が例外ノードから再開されることを保証することができる。
【００１１】
本発明の実施例の技術的解決法は、下記のとおりに実施される。
【００１２】
第１の態様によれば、フロースケジューリングを実行するためのコンピュータ装置が提供され、それは、少なくとも１つのノードを含むフローをスケジュールするとともに実行するように構成されるとともに、メモリ及びプロセッサを含み、前記メモリは、当該コンピュータ装置の命令を記憶するように構成され、前記プロセッサは、下記の、スケジュールされるべきノードに対してトランザクションセーブポイントが設定されることを判定するステップと、前記スケジュールされるべきノード上に存在するとともに前記トランザクションセーブポイントのあとに存在するスケジュールされるべきタスクを含む非同期タスクを、前記トランザクションセーブポイントに従って作成するステップと、前記フローにおける前記非同期タスク以外のタスクを含むトランザクションを実行するために第１のスレッドを使用し、前記第１のスレッドにより実行された前記トランザクションをサブミットするステップと、前記非同期タスクを実行するために第２のスレッドを使用するステップとを達成するために、前記メモリ内の前記命令を実行するように構成される。
【００１３】
第１の態様の第１の可能な実施方法において、前記プロセッサは、前記第１のスレッドが属する第１のフローエンジンプロセスのスケジュールされるべきタスクキューに前記非同期タスクを配置するように更に構成される。
【００１４】
第１の態様の第１の可能な実施方法に関連して、第２の可能な実施方法において、前記第１のスレッドが属する第１のフローエンジンプロセスのスケジュールされるべきタスクキューに前記非同期タスクを配置する前記ステップは、登録済みトランザクションサブミッションイベントコールバックリスナーに従ってリッスンすることにより、前記第１のスレッドにより実行された前記トランザクションが首尾よくサブミットされたことが得られる場合に、前記第１のフローエンジンプロセスの前記スケジュールされるべきタスクキューに前記非同期タスクを配置するステップを含む。
【００１５】
第２の態様によれば、ビジネスフローをスケジューリングするための方法が提供され、当該方法は、スケジュールされるべきノードに対してトランザクションセーブポイントが設定されることを判定するステップと、前記スケジュールされるべきノード上に存在するとともに前記トランザクションセーブポイントのあとに存在するスケジュールされるべきタスクを含む非同期タスクを、前記トランザクションセーブポイントに従って作成するステップと、前記フローにおける前記非同期タスク以外のタスクを含むトランザクションを実行するために第１のスレッドを使用し、前記第１のスレッドにより実行された前記トランザクションをサブミットするステップと、前記非同期タスクを実行するために第２のスレッドを使用するステップとを含む。
【００１６】
第２の態様の第１の可能な実施方法において、前記第１のスレッドにより実行された前記トランザクションをサブミットする前記ステップのあとに、当該方法は、前記第１のスレッドが属する第１のフローエンジンプロセスのスケジュールされるべきタスクキューに前記非同期タスクを配置するステップを更に含む。
【００１７】
第２の態様の第１の可能な実施方法に関連して、第２の可能な実施方法において、当該方法は、トランザクションサブミッションイベントコールバックリスナーを登録するステップを更に含み、前記第１のスレッドが属する第１のフローエンジンプロセスのスケジュールされるべきタスクキューに前記非同期タスクを配置する前記ステップは、リッスンすることにより、前記第１のスレッドにより実行された前記トランザクションが首尾よくサブミットされたことが得られる場合に、前記第１のフローエンジンプロセスの前記スケジュールされるべきタスクキューに前記非同期タスクを配置するステップを具体的に含む。
【００１８】
第２の態様の第３の可能な実施方法において、非同期タスクを作成する前記ステップのあとに、当該方法は、前記非同期タスクをパーシストするステップを更に含み、前記第１のスレッドにより実行された前記トランザクションをサブミットする前記ステップのあとに、当該方法は、前記のパーシストされた非同期タスクをデータベースに記憶するステップと、前記非同期タスクの実行が完了されるまえに前記第２のスレッドが属する第１のフローエンジンプロセスが例外的に終了する場合に、第２のフローエンジンプロセスにより、前記データベースから前記非同期タスクを獲得し、前記非同期タスクをスケジュールするとともに実行するステップとを更に含む。
【００１９】
第３の態様によれば、フロースケジューリング装置が提供され、それは、少なくとも１つのノードを含むフローを実行するように構成されるとともに、判定ユニット、作成ユニット及び実行ユニットを含み、前記判定ユニットは、スケジュールされるべきノードに対してトランザクションセーブポイントが設定されることを判定するように構成され、前記作成ユニットは、前記スケジュールされるべきノード上に存在するとともに前記トランザクションセーブポイントのあとに存在するスケジュールされるべきタスクを含む非同期タスクを、前記判定ユニットにより判定された前記トランザクションセーブポイントに従って作成するように構成され、前記実行ユニットは、前記フローにおける前記非同期タスク以外のタスクを含むトランザクションを実行するために第１のスレッドを使用し、前記第１のスレッドにより実行された前記トランザクションをサブミットするとともに、前記非同期タスクを実行するために第２のスレッドを使用するように構成される。
【００２０】
第４の態様によれば、コンピュータのプロセッサにより実行可能な命令が記憶されるコンピュータ読み取り可能な記憶媒体が提供され、前記命令は、下記の、スケジュールされるべきノードに対してトランザクションセーブポイントが設定されることを判定するステップと、前記スケジュールされるべきノード上に存在するとともに前記トランザクションセーブポイントのあとに存在するスケジュールされるべきタスクを含む非同期タスクを、前記トランザクションセーブポイントに従って作成するステップと、前記フローにおける前記非同期タスク以外のタスクを含むトランザクションを実行するために第１のスレッドを使用し、前記第１のスレッドにより実行された前記トランザクションをサブミットするステップと、前記非同期タスクを実行するために第２のスレッドを使用するステップとを実行するために使用される。
【００２１】
本発明の実施例の技術的解決法では、トランザクションセーブポイントが、フローノードに対して設定されるとともに、非同期タスク以外のスケジュールされたタスクを実行するスレッドが、実行を完了したあとでトランザクションをサブミットする、ということが確認されることができる。非同期タスク以外のスケジュールされたタスクがトランザクションメカニズムに従ってサブミットされるので、データの整合性は保証される。新しいスレッドは、トランザクションセーブポイントのあとの非同期タスクをスケジュールするために使用され、その結果、タスクの間のトランザクション分割が実行される。例外が発生した場合に、フロースケジューリングは、非同期タスクにおいて終了するとともに、復旧と同時に、実行は非同期タスクから再開される。
【図面の簡単な説明】
【００２２】
【図１】ＢＰＭを使用することにより編成された従来技術の典型的なビジネスフローの概略図である。
【図２】トランザクションセーブポイントが使用されるトランザクション処理の概要のフローチャートである。
【図３】本発明の一実施例によるＢＰＭビジネスアプリケーションシステムの構造的な図である。
【図４】本発明の一実施例によるサーバの構成の構造的な図である。
【図５】本発明の一実施例によるフローエンジンのモジュールの概略図である。
【図６】本発明の一実施例によるフロースケジューリング方法のフローチャートである。
【図７】本発明の別の実施例によるフロースケジューリング方法のフローチャートである。
【図８】本発明の一実施例によるフロースケジューリング装置の概略構造図である。
【発明を実施するための形態】
【００２３】
本発明の目的、技術的解決法及び利点を、より明確に及びより分かりやすくするために、下記は、添付図面及び実施例を参照して、さらに本発明を詳細に説明する。
【００２４】
トランザクションの実行が失敗する場合に、トランザクションが、トランザクションの開始ノードの代わりに中間ノードにロールバックされることができることを実装するために、新しいトランザクションセーブポイント（savepoint）をフローにおけるノードに追加するとともに、各ノードを別々にパーシストすることが望ましいかもしれない。ＢＰＭエンジンがフローを駆動すると、トランザクションセーブポイントに遭遇する場合に、トランザクションセーブポイントのまえのトランザクションが最初にサブミットされ、次に、新しいトランザクションが、ＢＰＭフローの次のノードの実行を制御するために作成される。
【００２５】
具体的な実施方法が図２において示されたシナリオを一例として使用することにより説明され、ここで、ビジネスＡＰＩ１、ＢＰＭスケジューリングＡＰＩ、そしてビジネスＡＰＩ２が、宣言的トランザクションＴ１に対して設定されるとともに、Ｔ１は最も外側のトランザクションである。ビジネスＡＰＩ１及びビジネスＡＰＩ２は、ビジネスの実行方法であり、そしてＢＰＭスケジューリングＡＰＩは、プラットフォームのスケジューリング方法である。内側のトランザクションＴ２は、ＢＰＭスケジューリングＡＰＩのために事前設定されるとともに、Ｔ２は、自動的にビジネストランザクションＴ１に加わる。トランザクションセーブポイントは、ＢＰＭスケジューリングＡＰＩに事前設定される。トランザクションセーブポイントに従って、内側のトランザクションＴ２が、先にサブミットされ得るとともに、新しい内側のトランザクションＴ３が、ＢＰＭスケジューリングＡＰＩのフローの残りの完了されていない部分のために作成され、ここで、Ｔ３は、ＢＰＭフローの次のノードのフローを制御する。統一されたトランザクション管理が使用されるので、Ｔ３がビジネスＡＰＩ２を管理することができない間、Ｔ２がサブミットされる場合に、Ｔ１は先にサブミットされ、その結果、トランザクション管理がビジネスＡＰＩ２のために存在せず、データの矛盾をもたらす。したがって、この解決法は、トランザクションが例外ノードにロールバックされることができるが、データの整合性を保証することができない。問題を解決するために、本発明の実施例では、ビジネスシステムとＢＰＭプラットフォームとの間のデータの整合性を保証するとともに、例外が発生した場合に、トランザクションセーブポイントが設定される例外ノードでフローが終了するとともに、復旧と同時に実行が例外ノードから再開されることを保証するように、トランザクションセーブポイントのあとのスケジュールされるべきタスク以外のタスクを含むトランザクションが最初にサブミットされ、次に、新しいスレッドが、フローにおけるトランザクションセーブポイントのあとのスケジュールされるべきタスクを実行するために使用される。
【００２６】
理解を容易にするために、フロー、トランザクション、タスク、スレッド及びプロセスという用語が説明される。フロー、トランザクション及びタスクは、ビジネスに関しての記述であり、そしてスレッド及びプロセスは、機械の実行に関しての記述である。フローは全体のビジネスに対応しており、そして複数のタスクを含み得る。フローは、プロセスにより管理される。１つのトランザクションは、１つのスレッドにより実行され、そして１つのスレッドは、複数のトランザクションを含み得る。１つのトランザクションは、１つ又は複数のタスクを含み得る。スレッドにより実行される場合に、タスクは、同様にノードと呼ばれる。タスクは、分割され得る。１つのプロセスは、１つのフローエンジンにおいて実行される。１つのプロセスは、複数のスレッドを含み得る。スレッドは、プロセスにより駆動される。
【００２７】
図３は、本発明の一実施例によるＢＰＭビジネスアプリケーションシステムの構造的な図である。ビジネスシステム３０１は、ビジネスフローの編成、展開、オペレーション及びスケジューリングを達成するように構成される。ビジネスシステムは、クラスタシステムであり得るとともに、ここで、クラスタシステムは、相互接続されたコンピュータを含む並列又は分散処理システムである。実施方法において、ビジネスシステム３０１は、例えば、サーバａ３０２及びサーバｂ３０７を含む、少なくとも１つのサーバを含み得る。サーバ３０２は、ビジネスモジュール３０３、及びＢＰＭエンジン３０４を具体的に含み得る。サーバｂは、サーバａの構造と同様の構造を有している。ビジネスモジュール３０３は、ユーザのビジネス要求を受け取り、ＢＰＭエンジン３０４に対して、ビジネスフロースケジューリング要求を開始するように構成される。ＢＰＭエンジン３０４は、データベース３０８からフローの定義を読み取るように構成される。データベース３０８は、フローの定義及び関連するデータを記憶する。
【００２８】
ビジネスシステム３０１におけるサーバは、ローカルなビジネスフロー３０６又はサードパーティのビジネスシステム（図には示されていない）と、ローカルなビジネスフロー３０６又はサードパーティのビジネスシステムにおけるサービスを呼び出すために更に対話し得る。ビジネスフロー３０６は、少なくとも１つのタスクを含む。図３において示された一例では、ビジネスフロー３０６は、タスク１〜ｎを含み、ここで、ｎは２を超える自然数である。ビジネスシステム３０１は、フローの定義を生成するとともに、フローの定義をデータベース３０８に記憶するために、ＢＰＭモデリングツール３０５を使用することにより、ビジネスフロー３０６を要約する。フロータスクのトランザクションセーブポイントは、フローの定義において設定される。フローの定義は、フローにおけるタスクに対応するノード、ノードの間の関係、入力／出力データ、トランザクションセーブポイントなどを含む。フローの定義は、フローチャート又は静的な設定ファイルを使用することにより表され得るとともに、データベース３０８又はファイルシステムに記憶される。ビジネススケジューリング要求を受け取る場合に、サーバのＢＰＭエンジンは、フロースケジューリングを実行するためにフローの定義を読み取る。もしスケジュールされたノードがトランザクションセーブポイントを含むならば、トランザクションセーブポイントのあとのスケジュールされるべきタスクのために非同期タスクが作成される。非同期タスクのためのフロースケジューリングは下記を具体的に含み、すなわち、トランザクションが、トランザクションセーブポイントのあとのスケジュールされるべきタスク以外のタスクにより形成され、そしてスレッドにより実行されるとともに、トランザクションを実行するスレッドが終了される場合に、対応するトランザクションが首尾よくサブミットされたあとで、非同期タスクである、トランザクションセーブポイントのあとのスケジュールされるべきタスクが、別のスレッドによりスケジュールされて実行される。さらに、非同期タスクはデータベースに書き込まれ、その結果、非同期タスクを実行するプロセスが失敗する場合に、非同期タスクは、別のサーバのＢＰＭエンジンプロセスにより獲得されることができる。
【００２９】
ビジネスシステム３０１による非同期タスクのためのフロースケジューリングにおいて例外が発生した場合に、ＢＰＭエンジン３０４内に存在するとともに、非同期タスクを実行するスレッドは、スケジューリング及び実行を続ける代りに、例外が発生したノードにおいて停止する。もし非同期タスクを実行しているスレッドが例外であるならば、非同期タスクの実行を再開するように、ＢＰＭエンジンは、非同期タスクを実行するために、非同期タスクスケジューリングスレッドプールから、別の待機スレッドを獲得する。もし現在のＢＰＭエンジンプロセスが例外的に終了するならば、別のサーバ、例えばビジネスシステムにおけるサーバｂのＢＰＭエンジンプロセスが、サーバ内のＢＰＭエンジンプロセスが例外的に終了したことを示す通知メッセージを監視又は受信することにより、この例外的な終了を確認し、その場合に、引き継ぎ方針に従って、データベースから完了されていない非同期タスクを獲得するとともに、例外的に終了したＢＰＭエンジンプロセスによって実行されているタスクの実行を再開する。
【００３０】
図４は、本発明の一実施例によるビジネスシステムにおけるサーバの概要の構成図である。この実施例では、サーバは、コンピュータ装置であり得るとともに、それはプロセッサベースのコンピュータを具体的に含む。図４において示されたように、サーバ４００は、バス４１０、プロセッサ４０２、メモリ４０４、入力／出力インタフェース４０６及び通信インタフェース４０８を含み得る。バス４１０は、情報が全てのコンポーネントの間で転送される経路を含み得る。プロセッサ４０２は、情報を処理し、そして命令又はオペレーションを実行するように構成されるとともに、具体的には、本発明の解決法のプログラムの実行を制御するように構成される、多目的の中央演算処理装置（ＣＰＵ）、マイクロプロセッサ、特定用途向け集積回路（ＡＳＩＣ）又は１つ若しくは複数の集積回路であり得る。サーバは、情報及び命令を記憶するように構成される１つ又は複数のメモリ４０４を更に含み得る。メモリは、静的な情報及び命令を記憶することが可能である読出し専用メモリread-only  memory（ＲＯＭ）若しくは別のタイプの静的なメモリ装置、情報及び命令を記憶することが可能であるランダムアクセスメモリ（ＲＡＭ）若しくは別のタイプのダイナミック記憶装置、又は磁気ディスク記憶装置であり得る。これらのメモリは、バス４１０を使用することにより、プロセッサ４０２に接続される。
【００３１】
入力／出力インタフェース４０６は、入力装置又は出力装置を含み得る。入力装置は、ユーザにより入力されたデータ及び情報を受け取るように構成されるとともに、例えば、キーボード、マウス、カメラ、スキャナ、ライトペン、音声入力装置、タッチスクリーン、又は同様のものである。出力装置は、情報がユーザに対して出力又は表示されることを可能にするように構成されるとともに、スクリーン、プリンタ、拡声器などを含む。コンピュータ装置は、ネットワークインタフェース４０８を更に含む。ネットワークインタフェースは、別の装置、又はイーサネット、無線アクセスネットワーク（ＲＡＮ）若しくは無線ローカルエリアネットワーク（ＷＬＡＮ）のような通信ネットワークとの通信を容易にするために使用される、あらゆるトランシーバのような装置である。プロセッサ４０２は、同様に、バス４１０を使用することにより、入力／出力インタフェース４０６及びネットワークインタフェース４０８に接続されることができる。
【００３２】
メモリ４０４は、ビジネスモジュール４１０及びＢＰＭエンジン４１２のプログラムを含む、本発明の解決法を実行する要素のプログラム命令を記憶する。メモリ４０４は、オペレーティングシステム及び別のアプリケーションプログラムを更に記憶し得る。プロセッサ４０２は、メモリ４０４内のプログラム又は命令を読み取って実行するとともに、ネットワークインタフェース４０８を使用することにより、実行プロセスにおいて別の装置と通信するように構成される。具体的には、プロセッサ４０２がメモリ４０４内の命令を実行する場合に、プロセッサ４０２は、図６において示されたステップ６０１〜６０４を実行することができる。
【００３３】
図５は、フローエンジンの概略構造図であり、ここで、フローエンジンは図４におけるＢＰＭエンジン４１２である。図５において示されたように、フローエンジン５１０は、フローパーザ５１１、タスクマネージャ５１２及びタスクエグゼキュータ５１３を含む。フローパーザ５１１は、スケジュールされるべきノードに対してトランザクションセーブポイントが設定されることを判定するように構成される。具体的には、フローパーザ５１１は、データベース３０８からフローの定義を読み取り、そしてスケジュールされるべきノードに対してトランザクションセーブポイントが設定されるかどうかを判定するために、フローの定義を構文解析する。スケジューリングの間に、あらかじめ設定されたトランザクションセーブポイントがスケジュールされるべきノード上で発見される場合に、タスクマネージャ５１２は、現在スケジュールされたフローノードを実行するスレッドにおいて非同期タスクを作成する。非同期タスクは、フローの定義におけるトランザクションセーブポイントのあとの予定外のタスクを含む。非同期タスクは、現在のスレッドにより実行されることになっていないが、しかし、現在のスレッドが終了されたあとで、別のスレッド、すなわち第２のスレッドによりスケジュールされて実行される。タスクマネージャ５１２は、データベースに書き込むために、作成された非同期タスクを更にパーシストする。
【００３４】
タスクマネージャ５１２は、宣言的トランザクションのために、トランザクションサブミッションイベントコールバックリスナー（callback）を更に登録する。トランザクションサブミッションイベントコールバックリスナーは、一度トランザクションサブミッションイベントがリッスンすることにより獲得されれば、事前に登録されたコールバック方法が呼び出されることを意味する。トランザクションサブミッションイベントコールバックリスナーの目的は、トランザクションセーブポイントのまえのトランザクションがサブミットされたあとで、非同期タスクのスケジューリングが行われることを保証することである。
【００３５】
現在スケジュールされたフローノードを実行するスレッドは、現在のスレッドと呼ばれる。１つのスレッドの実行が完了されたあとで、スレッドは、外側の宣言的トランザクションに戻り、スレッドが戻ることは、そのスレッドが終了されるとともに、新しいスレッドが開始されることができる、ということを示す。現在のスレッドが終了される場合に、スレッドに対応する最も外側の宣言的トランザクションが、スレッドが戻ることによってサブミットされる。トランザクションサブミッションイベントコールバックリスナーがあらかじめ登録されているので、リッスンすることにより、外側のトランザクションがサブミットされたことが得られる場合に、タスクマネージャ５１２は、事前に登録されたコールバック方法を使用することにより、スレッドにより共有されたホームＢＰＭエンジンプロセスのスケジュールされるべきタスクキュー５１５に作成された非同期タスクを配置する。現在のスレッドが終了される場合に、タスクマネージャ５１２は、同時に、データベースに非同期タスクを更に書き込む。タスクキュー５１５におけるタスクデータはデータベースにおけるタスクデータと同じであり、一方、タスクキューにおけるタスクがメモリに一時的に記憶されるとともに、データベースにおけるデータが持続的に記憶されることができるという点で差異がある。非同期タスクスケジューリングスレッドプール内のスレッドは、スケジューリングのためにタスクキューから非同期タスクを獲得し得るとともに、スケジューリングが成功したあとで、データベースから非同期タスクを削除し得る。
【００３６】
タスクエグゼキュータ５１３は、非同期タスクを実行するために第２のスレッドを使用するように構成される。複数の待機スレッドは、非同期タスクスケジューリングスレッドプールにあらかじめ適用され、開始されるのを待っている。第２のスレッドは、非同期タスクスケジューリングスレッドプールから獲得される。
【００３７】
非同期タスクのスケジューリングの間に、もし非同期タスクを実行する第１のＢＰＭエンジンプロセスにおいて例外が発生したならば、別のサーバの第２のＢＰＭエンジンプロセスは、監視することにより、第１のＢＰＭエンジンプロセスが例外であることを確認するか、又は、第１のＢＰＭエンジンプロセスが例外的に終了したことを示す通知メッセージを受信する。第２のＢＰＭエンジンプロセスは、データベースから、例外的なＢＰＭエンジンプロセスにより完了されていない同期タスクを獲得するとともに、第２のＢＰＭエンジンのタスクエグゼキュータは、非同期タスクを実行し続ける。
【００３８】
この実施例では、トランザクションセーブポイントが、フローノードに対して設定され、その結果、非同期タスク以外のスケジュールされたタスクを実行するスレッドは、実行を完了したあとで外側のトランザクションに自動的に戻る。外側のトランザクションがトランザクションメカニズムに従ってサブミットされるので、データの整合性は保証される。新しいスレッドが、トランザクションセーブポイントのあとの非同期タスクをスケジュールするために使用され、その結果、タスクノードの間のトランザクション分割が実行される。例外が発生した場合に、フロースケジューリングは、非同期タスクにおいて終了するとともに、復旧と同時に、実行は非同期タスクから再開される。さらに、高性能のフロー実行解決法が、スケジューリングのための非同期タスクスケジューリングスレッドプールを使用することにより提供される。
【００３９】
図６は、本発明の一実施例によるフロースケジューリング方法のフローチャートである。下記で説明される方法は、図４において示されたサーバ、又は図５において示されたフローエンジンにより実行され得る。
【００４０】
ステップ６０１：フローエンジンが、スケジュールされるべきノードに対してトランザクションセーブポイントが設定されることを判定する。
【００４１】
ＢＰＭモデリングツールがフローチャートを組み立てるために使用される場合に、トランザクションセーブポイントは、フローにおけるノードの間又はノードの中に事前設定される。トランザクションセーブポイントの構成は、フォーマットされた方法で、フローの定義に記憶される。もしフローの定義がビジネスプロセスモデル及び表記法（Business  Process  Model  and  Notation、ＢＰＭＮ）に準拠しているならば、トランザクションセーブポイントは、サービスタスク（Service  Task）のようなアクティビティ（Activity）の拡張属性を使用することにより記憶される。
【００４２】
例えば、＜ｓｔａｒｔＥｖｅｎｔ  ｉｄ＝“ｓｔａｒｔＳｉｍｐｌｅ”  ｎａｍｅ＝“Ｓｔａｒｔ”  ｕｆｌ：ａｓｙｎＥｘｅｃｕｔｅ＝“ｔｒｕｅ”／＞であり、ここで、“ａｓｙｎＥｘｅｃｕｔｅ＝“ｔｒｕｅ””は、非同期スケジューリングがノードにより必要とされるということ、及び、トランザクションセーブポイントが設定されるということを示す。
【００４３】
スケジューリングの間、フローエンジンは、フローの定義に従って、スケジュールされるべきノードに対してトランザクションセーブポイントが設定されることが分かる。トランザクションセーブポイントを定義するためにＸＭＬ記述が使用される一例において、トランザクションセーブポイントのためのＸＭＬ記述は、フローノードの定義の記述の先頭又は中程に配置され得る。どちらの方法においても、フローエンジンは、構文解析により、ノードに対してトランザクションセーブポイントが設定されることを判定することができる。
【００４４】
ステップ６０２：フローエンジンが、フローの定義内にあり、スケジュールされるべきノード上に存在するとともに、トランザクションセーブポイントのあとに存在するスケジュールされるべきタスクを含む非同期タスクを、判定ユニットにより判定されたトランザクションセーブポイントに従って作成する。
【００４５】
非同期タスクが作成されたあとで、非同期タスクは、更にパーシストされることができ、それは、具体的には、データベースに書き込むために、非同期タスクをデータベース記憶インタフェースにバッファすることである。
【００４６】
ステップ６０３：フローエンジンが、フローにおける非同期タスク以外のタスクを含むトランザクションを実行するために第１のスレッドを使用し、完了すると、トランザクションをサブミットする。
【００４７】
第１のスレッドは終了される。第１のスレッドにより実行されるとともに、フローにおける非同期タスク以外のタスクを含むトランザクションは、完了されてサブミットされる。サブミットされたトランザクションは、トランザクションセーブポイントのまえにスケジュールされて実行されたタスクを含むとともに、外側のトランザクションにおける非同期タスク以外のトランザクションセーブポイントのあとのタスクノードを含み得る。
【００４８】
第１のスレッドにより実行されたトランザクションがサブミットされる場合に、非同期タスクは、第１のスレッドが属する第１のフローエンジンプロセスのスケジュールされるべきタスクキューに配置され得る。第１のフローエンジンプロセスは、具体的には、ＢＰＭエンジンにより実行されるプロセスであり得る。第１のスレッドにより実行されたトランザクションがサブミットされたあとで、非同期タスクは、データベースに更に書き込まれる。
【００４９】
ステップ６０４：フローエンジンが、非同期タスクを実行するために第２のスレッドを使用する。
【００５０】
フローのスケジューリングを続けるように、新しいスレッド、すなわち第２のスレッドが、非同期タスクを実行するために、第１のフローエンジンプロセスにおいて使用される。非同期タスクが首尾よく処理されたあとで、フローエンジンは、データベースに記憶された非同期タスクを削除する。
【００５１】
もし非同期タスクの実行が完了されるまえに第２のスレッドが例外的に終了するならば、第１のフローエンジンプロセスは、非同期タスクスケジューリングスレッドプールから、別の待機スレッド、すなわち第３のスレッドを獲得するとともに、非同期タスクの実行を再開するように、スケジュールされるべきタスクキューから取り出された非同期タスクをスケジュールするために第３のスレッドを使用する。もし第１のフローエンジンプロセスが例外的に終了するならば、第２のフローエンジンプロセスは、監視することにより、第１のフローエンジンプロセスが例外的に終了することを確認するか、又は、第１のフローエンジンプロセスが例外的に終了したことを示す通知メッセージを受信し、データベースから完了されていない非同期タスクを獲得し、そして非同期タスクをスケジュールするとともに実行するためにスレッドを割り当てる。
【００５２】
本発明のこの実施方法では、トランザクションセーブポイントが、フローノードに対して設定されるとともに、非同期タスクが異なるスレッドを使用することによりスケジュールされ、それは、非同期スレッドスケジューリングであり、その結果、トランザクションセーブポイントが設定されるノードを実行するスレッドは、実行を完了したあとで外側のトランザクションに自動的に戻る。外側のトランザクションがトランザクションメカニズムに従ってサブミットされるので、データの整合性は保証される。さらに、第２のスレッドが、トランザクションセーブポイントのあとの次のフローを駆動するために使用され、タスクノードの間のトランザクション分割を実行する。例外が発生した場合に、フロースケジューリングは、非同期タスクにおいて終了するとともに、復旧と同時に、実行は非同期タスクから再開される。さらに、高性能のフロー実行解決法が、スケジューリングのための非同期タスクスケジューリングスレッドプールを使用することにより提供される。
【００５３】
図７は、本発明の一実施例によるフロースケジューリングの具体的な手順のフローチャートである。この実施例におけるステップの実行は、図２において示されたように、ビジネスＡＰＩ１、ＢＰＭスケジューリングＡＰＩ、そしてビジネスＡＰＩ２がビジネスフローに含まれる一例を使用することにより説明される。トランザクションセーブポイントは、ＢＰＭスケジューリングＡＰＩに設定される。
【００５４】
ステップ７０１：ＢＰＭエンジンのプロセスがフロースケジューリングを起動する。
【００５５】
ステップ７０２：ＢＰＭエンジンが、フローの定義において事前設定されたトランザクションを開始する。この実施例では、ＢＰＭエンジンにより開始されたトランザクションＴ１は、ビジネスＡＰＩ１、ＢＰＭスケジューリングＡＰＩ、そしてビジネスＡＰＩ２を含むように構成され、トランザクションＴ１は、同様に、下記では外側のトランザクションと呼ばれる。トランザクションＴ１は、スレッドにより実行され、スレッドは、同様に、下記では現在のスレッドと呼ばれる。
【００５６】
概して、トランザクションは、１つ又は複数のタスクを含み、トランザクションは、１つのスレッドにより実行されるとともに、スレッドは、ＢＰＭエンジンプロセスにより駆動される。スレッドにより実行される場合に、タスクは、同様にノードと呼ばれる。
【００５７】
ステップ７０３：ＢＰＭエンジンが、スケジュールされるべきノードがトランザクションセーブポイントを含むかどうかを判定し、もし含まないならばステップ７０４に進み、もし含むならばステップ７０５に進む。
【００５８】
この実施例では、トランザクションセーブポイントは、ＢＰＭスケジューリングＡＰＩにあらかじめ設定される。
【００５９】
ステップ７０４：スケジュールされるべきノードがトランザクションセーブポイントを含まない場合、ＢＰＭエンジンが、現在のスレッドにおける次のノードを実行し続ける。現在のスレッドは、現在スケジュールされたフローノードを実行するスレッド、すなわち図６において示された実施例における第１のスレッドである。
【００６０】
ステップ７０５：トランザクションセーブポイントをスケジュールされるべきノード上で発見する場合に、ＢＰＭエンジンが、現在のスレッドにおいて非同期タスクを作成するとともに、非同期タスクをパーシストする。この実施例では、非同期タスクは、トランザクションセーブポイントのあとの、ＢＰＭスケジューリングＡＰＩのスケジュールされるべきタスクを含む。この実施例では、パーシステンス（Persistence）は、具体的には、非同期タスクをデータベース記憶インタフェースにバッファすることである。パーシステンスの目的は、データ、例えばメモリ内の目的物を、リレーショナルデータベース、ディスクファイル又はＸＭＬデータファイルに記憶することである。
【００６１】
非同期タスクの設定は、具体的には、ＸＭＬ記述、例えばｂｐｍｎ２ｅｘｔｎ：ｎｅｘｔＦｌｏｗＥｘｅｃｕｔｉｏｎＭｏｄｅ＝“ＡＳＹＮＣＨＲＯＮＯＵＳ＿ＣＯＮＴＩＮＵＥ”であり得る。
【００６２】
ステップ７０６：トランザクションサブミッションイベントコールバックリスナーを登録する。非同期タスクのためのスレッド開始方法は、コールバックリスナーの登録コードにおいて定義される。トランザクションサブミッションイベントコールバックリスナーは、現在のスレッドにおけるトランザクションがサブミットされたあとに、非同期タスクのためのスレッドが開始することを保証する。トランザクションサブミッションイベントコールバックリスナーは、ステップ７０５のあとで登録され得るか、又は、フローの定義において事前設定され得る。
【００６３】
ステップ７０７：現在のスレッドの実行が完了すると、現在のスレッドが戻るように外側のトランザクションＴ１をサブミットする。サブミットされたトランザクションＴ１は、ビジネスＡＰＩ１、トランザクションセーブポイントのまえのＢＰＭスケジューリングＡＰＩのためのスケジュールされたタスク、そしてビジネスＡＰＩ２を含む。非同期タスクである、トランザクションセーブポイントのあとのＢＰＭスケジューリングＡＰＩのためのスケジュールされるべきタスクは、実行又はサブミットされない。
【００６４】
ステップ７０８：外側のトランザクションＴ１がサブミットされる場合に、登録済みトランザクションサブミッションイベントコールバックリスナーのコールバック方法に従って、現在のフローエンジンプロセスのスケジュールされるべきタスクキューに非同期タスクを配置する。タスクキューは、非同期タスクスケジューリングスレッドプール内のスレッドによりスケジュールされ得る。複数の待機スレッドは、非同期タスクスケジューリングスレッドプールにあらかじめ適用され、開始されるのを待っている。
【００６５】
ステップ７０９：外側のトランザクションＴ１がサブミットされる場合に、非同期タスクをデータベースに更に書き込む。データベースに書き込まれたあとで、非同期タスクは、持続的に記憶されることができる。ステップ７０９及びステップ７０８を実行する順序は限定されない。
【００６６】
ステップ７１０：現在のフローエンジンプロセスが例外的に終了するかどうかを監視するとともに、もしプロセスが例外的に終了するならばステップ７１１を実行するか、又は、もしプロセスが正常に実行されるならばステップ７１２を実行する。
【００６７】
ステップ７１１：第２のフローエンジンプロセスが、データベースから、例外的に終了したフローエンジンプロセスにより完了されていない非同期タスクを獲得するとともに、スケジューリングを続けるためにフローを割り当て、そして完了後、ステップ７１３に進む。第２のフローエンジンプロセスは、別のフローエンジンプロセスが例外的に終了したかどうかを積極的に監視するか、又は、第２のフローエンジンプロセスは、第１のフローエンジンプロセスが例外的に終了したことを示す通知メッセージを受信する。
【００６８】
ステップ７１２：現在のＢＰＭエンジンプロセスが、非同期タスクを実行するとともに、スケジューリングを続けるために、新しいスレッド（すなわち、第２のスレッド）を使用する。新しいスレッドは、非同期タスクスケジューリングスレッドプールから獲得される。もし非同期タスクの実行が完了されるまえに非同期タスクを実行するスレッドが例外的に終了するならば、ＢＰＭエンジンは、非同期タスクを実行するための非同期タスクスケジューリングスレッドプールから、別の待機スレッド、すなわち第３のスレッドを取り出す。
【００６９】
ステップ７１３：非同期タスクの実行を完了するとともに、データベースにおける非同期タスクを削除する。
【００７０】
前述のフロースケジューリング方法に基づくと、図８は、本発明の一実施例によるフロースケジューリング装置の構成の概略構造図である。図８において示されたように、フロースケジューリング装置は、判定ユニット８０１、作成ユニット８０３及び実行ユニット８０５を含む。
【００７１】
判定ユニット８０１は、スケジュールされるべきノードに対してトランザクションセーブポイントが設定されることを判定するように構成される。
【００７２】
作成ユニット８０３は、スケジュールされるべきノード上に存在するとともにトランザクションセーブポイントのあとに存在するスケジュールされるべきタスクを含む非同期タスクを、判定ユニット８０１により判定されたトランザクションセーブポイントに従って作成するように構成される。
【００７３】
実行ユニット８０５は、フローにおける非同期タスク以外のタスクを含むトランザクションを実行するために第１のスレッドを使用し、第１のスレッドにより実行されたトランザクションをサブミットするとともに、非同期タスクを実行するために第２のスレッドを使用するように構成される。
【００７４】
実行ユニット８０５は、第１のスレッドが属する第１のフローエンジンプロセスのスケジュールされるべきタスクキューに、作成ユニットにより作成された非同期タスクを配置するように更に構成される。
【００７５】
実行ユニット８０５は、登録済みトランザクションサブミッションイベントコールバックリスナーに従ってリッスンすることにより、第１のスレッドにより実行されたトランザクションが首尾よくサブミットされたことが得られる場合に、第１のフローエンジンプロセスのスケジュールされるべきタスクキューに非同期タスクを配置するように更に構成される。
【００７６】
実行ユニット８０５は、非同期タスクをパーシストし、第１のスレッドにより実行されたトランザクションがサブミットされたあとで、パーシストされた非同期タスクをデータベースに記憶し、その結果、非同期タスクの実行が完了されるまえに第２のスレッドが属する第１のフローエンジンプロセスが例外的に終了する場合に、第２のフローエンジンプロセスがデータベースから非同期タスクを獲得し、非同期タスクをスケジュールするとともに実行する、ように更に構成される。
【００７７】
判定ユニット８０１は、データベースに記憶されるフローの定義に従ってトランザクションセーブポイントを判定する。
【００７８】
本発明のこの実施例の技術的解決法によれば、フロースケジューリング装置が、フローノードに対してトランザクションセーブポイントが設定されることを発見する場合に、非同期タスクが作成されるとともに、非同期スレッドスケジューリングが非同期タスクのために使用される、ということが確認されることができる。トランザクションセーブポイントが設定されるノードを実行するスレッドは、スレッドの実行が完了されたあとで、トランザクションメカニズムに従ってサブミッションを行い、それは、データの整合性を保証する。さらに、新しいスレッドが、トランザクションセーブポイントのあとの次のフローを駆動するために使用され、タスクノードの間のトランザクション分割を実行する。
【００７９】
前述の装置におけるユニットの間の情報交換及び実行プロセスのような内容は、本発明の方法の実施例と同じ発想に基づいている。したがって、詳細な内容については、本発明の方法の実施例における説明に対して参照が行われ得るとともに、詳細は再度ここでは説明されない。
【００８０】
具体的な実施例が、本発明の原理及び実施方法を説明するために、この明細書において使用される。前述の実施例は、単に本発明の方法及び発想を理解するのを助けることを意図している。さらに、実施方法及び応用範囲に関して、変更が本発明の発想に従って当業者により実行され得る。したがって、明細書は、本発明に対する限定と解釈されないものとする。
【図１】
2016541056.tif 000003
【図２】
2016541056.tif 000004
【図３】
2016541056.tif 000005
【図４】
2016541056.tif 000006
【図５】
2016541056.tif 000007
【図６】
2016541056.tif 000008
【図７】
2016541056.tif 000009
【図８】
2016541056.tif 000010
【手続補正書】
【提出日】平成28年6月23日(2016.6.23)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
少なくとも１つのノードを含むフローを実行するように構成されるとともに、判定ユニット、作成ユニット及び実行ユニットを備えるフロースケジューリング装置であって、
前記判定ユニットが、スケジュールされるべきノードに対してトランザクションセーブポイントが設定されることを判定するように構成され、
前記作成ユニットが、前記スケジュールされるべきノード上に存在するとともに前記トランザクションセーブポイントのあとに存在するスケジュールされるべきタスクを含む非同期タスクを、前記判定ユニットにより判定された前記トランザクションセーブポイントに従って作成するように構成され、
前記実行ユニットが、前記フローにおける前記非同期タスク以外のタスクを含むトランザクションを実行するために第１のスレッドを使用し、前記第１のスレッドにより実行された前記トランザクションをサブミットするとともに、前記非同期タスクを実行するために第２のスレッドを使用するように構成される、フロースケジューリング装置。
【請求項２】
前記実行ユニットが、前記第１のスレッドが属する第１のフローエンジンプロセスのスケジュールされるべきタスクキューに前記非同期タスクを配置するように更に構成される、請求項１に記載のフロースケジューリング装置。
【請求項３】
前記実行ユニットが、前記第１のスレッドが属する第１のフローエンジンプロセスのスケジュールされるべきタスクキューに前記非同期タスクを配置するように構成されることが、前記実行ユニットが、登録済みトランザクションサブミッションイベントコールバックリスナーに従ってリッスンすることにより、前記第１のスレッドにより実行された前記トランザクションが首尾よくサブミットされたことが得られる場合に、前記第１のフローエンジンプロセスの前記スケジュールされるべきタスクキューに前記非同期タスクを配置するように構成されることを含む、請求項２に記載のフロースケジューリング装置。
【請求項４】
前記実行ユニットが、前記非同期タスクの実行が完了されるまえに前記第２のスレッドが例外的に終了する場合に、前記スケジュールされるべきタスクキューから前記非同期タスクを取り出し、前記非同期タスクを実行するために第３のスレッドを使用するように更に構成される、請求項１から請求項３のいずれか一項に記載のフロースケジューリング装置。
【請求項５】
前記実行ユニットが、前記非同期タスクをパーシストし、前記第１のスレッドにより実行された前記トランザクションがサブミットされたあとで、前記のパーシストされた非同期タスクをデータベースに記憶し、その結果、前記非同期タスクの実行が完了されるまえに前記第２のスレッドが属する第１のフローエンジンプロセスが例外的に終了する場合に、第２のフローエンジンプロセスが前記データベースから前記非同期タスクを獲得し、前記非同期タスクをスケジュールするとともに実行する、ように更に構成される、請求項１から請求項４のいずれか一項に記載のフロースケジューリング装置。
【請求項６】
前記トランザクションセーブポイントが、データベースに存在するフローの定義に記憶される、請求項１から請求項５のいずれか一項に記載のフロースケジューリング装置。
【請求項７】
前記トランザクションが宣言的トランザクションである、請求項１から請求項６のいずれか一項に記載のフロースケジューリング装置。
【請求項８】
少なくとも１つのノードを含むビジネスフローをスケジューリングするための方法であって、当該方法が、
スケジュールされるべきノードに対してトランザクションセーブポイントが設定されることを判定するステップと、
前記スケジュールされるべきノード上に存在するとともに前記トランザクションセーブポイントのあとに存在するスケジュールされるべきタスクを含む非同期タスクを、前記トランザクションセーブポイントに従って作成するステップと、
前記フローにおける前記非同期タスク以外のタスクを含むトランザクションを実行するために第１のスレッドを使用し、前記第１のスレッドにより実行された前記トランザクションをサブミットするステップと、
前記非同期タスクを実行するために第２のスレッドを使用するステップとを含む、方法。
【請求項９】
前記第１のスレッドにより実行された前記トランザクションをサブミットする前記ステップのあとに、前記第１のスレッドが属する第１のフローエンジンプロセスのスケジュールされるべきタスクキューに前記非同期タスクを配置するステップを更に含む、請求項８に記載の方法。
【請求項１０】
当該方法が、トランザクションサブミッションイベントコールバックリスナーを登録するステップを含み、
前記第１のスレッドが属する第１のフローエンジンプロセスのスケジュールされるべきタスクキューに前記非同期タスクを配置する前記ステップが、リッスンすることにより、前記第１のスレッドにより実行された前記トランザクションが首尾よくサブミットされたことが得られる場合に、前記第１のフローエンジンプロセスの前記スケジュールされるべきタスクキューに前記非同期タスクを配置するステップを含む、請求項９に記載の方法。
【請求項１１】
当該方法が、前記非同期タスクの実行が完了されるまえに前記第２のスレッドが例外的に終了する場合に、前記スケジュールされるべきタスクキューから前記非同期タスクを取り出し、前記非同期タスクを実行するために第３のスレッドを使用するステップを更に含む、請求項８から請求項１０のいずれか一項に記載の方法。
【請求項１２】
非同期タスクを作成する前記ステップのあとに、前記非同期タスクをパーシストするステップを更に含み、
前記第１のスレッドにより実行された前記トランザクションをサブミットする前記ステップのあとに、前記のパーシストされた非同期タスクをデータベースに記憶するステップを更に含む、請求項８から請求項１０のいずれか一項に記載の方法。
【請求項１３】
当該方法が、前記非同期タスクの実行が完了されるまえに前記第２のスレッドが属する第１のフローエンジンプロセスが例外的に終了する場合に、第２のフローエンジンプロセスにより、前記データベースから前記非同期タスクを獲得し、前記非同期タスクをスケジュールするとともに実行するステップを更に含む、請求項１２に記載の方法。
【請求項１４】
前記トランザクションセーブポイントが、データベースに存在するフローの定義に記憶される、請求項８から請求項１３のいずれか一項に記載の方法。
【請求項１５】
少なくとも１つのノードを含むフローを実行するように構成されるとともに、メモリ及びプロセッサを備える、フロースケジューリングを実行するためのコンピュータ装置であって、
前記メモリが、当該コンピュータ装置の命令を記憶するように構成され、
前記プロセッサが、下記の、
スケジュールされるべきノードに対してトランザクションセーブポイントが設定されることを判定するステップと、
前記スケジュールされるべきノード上に存在するとともに前記トランザクションセーブポイントのあとに存在するスケジュールされるべきタスクを含む非同期タスクを、前記トランザクションセーブポイントに従って作成するステップと、
前記フローにおける前記非同期タスク以外のタスクを含むトランザクションを実行するために第１のスレッドを使用し、前記第１のスレッドにより実行された前記トランザクションをサブミットするステップと、
前記非同期タスクを実行するために第２のスレッドを使用するステップとを達成するために、前記メモリ内の前記命令を実行するように構成される、コンピュータ装置。
【請求項１６】
前記プロセッサが、登録済みトランザクションサブミッションイベントコールバックリスナーに従ってリッスンすることにより、前記第１のスレッドにより実行された前記トランザクションが首尾よくサブミットされたことが得られる場合に、第１のフローエンジンプロセスのスケジュールされるべきタスクキューに前記非同期タスクを配置するように更に構成される、請求項１５に記載のコンピュータ装置。
【請求項１７】
前記プロセッサが、前記非同期タスクの実行が完了されるまえに前記第２のスレッドが例外的に終了する場合に、前記スケジュールされるべきタスクキューから前記非同期タスクを取り出し、前記非同期タスクを実行するために第３のスレッドを使用するように更に構成される、請求項１５又は請求項１６に記載のコンピュータ装置。
【請求項１８】
前記プロセッサが、前記非同期タスクをパーシストし、前記第１のスレッドにより実行された前記トランザクションがサブミットされたあとで、前記のパーシストされた非同期タスクをデータベースに記憶し、その結果、前記非同期タスクの実行が完了されるまえに前記第２のスレッドが属する第１のフローエンジンプロセスが例外的に終了する場合に、第２のフローエンジンプロセスが前記データベースから前記非同期タスクを獲得し、前記非同期タスクをスケジュールするとともに実行する、ように更に構成される、請求項１５から請求項１７のいずれか一項に記載のコンピュータ装置。
【請求項１９】
請求項８から請求項１４のいずれか一項に記載の方法をコンピュータに実行させるプログラム。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】００３０
【補正方法】変更
【補正の内容】
【００３０】
図４は、本発明の一実施例によるビジネスシステムにおけるサーバの概要の構成図である。この実施例では、サーバは、コンピュータ装置であり得るとともに、それはプロセッサベースのコンピュータを具体的に含む。図４において示されたように、サーバ４００は、バス４１０、プロセッサ４０２、メモリ４０４、入力／出力インタフェース４０６及び通信インタフェース４０８を含み得る。バス４１０は、情報が全てのコンポーネントの間で転送される経路を含み得る。プロセッサ４０２は、情報を処理し、そして命令又はオペレーションを実行するように構成されるとともに、具体的には、本発明の解決法のプログラムの実行を制御するように構成される、多目的の中央演算処理装置（ＣＰＵ）、マイクロプロセッサ、特定用途向け集積回路（Application-Specific  Integrated  Circuit、ＡＳＩＣ）又は１つ若しくは複数の集積回路であり得る。サーバは、情報及び命令を記憶するように構成される１つ又は複数のメモリ４０４を更に含み得る。メモリは、静的な情報及び命令を記憶することが可能である読出し専用メモリ（Read-Only  Memory、ＲＯＭ）若しくは別のタイプの静的なメモリ装置、情報及び命令を記憶することが可能であるランダムアクセスメモリ（Random  Access  Memory、ＲＡＭ）若しくは別のタイプのダイナミック記憶装置、又は磁気ディスク記憶装置であり得る。これらのメモリは、バス４１０を使用することにより、プロセッサ４０２に接続される。
【国際調査報告】
2016541056.tif 000011
2016541056.tif 000012
2016541056.tif 000013
2016541056.tif 000014