JP6223569B2 - ビジネスフローをスケジュールするためのコンピュータ装置、方法及び装置 - Google Patents

ビジネスフローをスケジュールするためのコンピュータ装置、方法及び装置 Download PDF

Info

Publication number
JP6223569B2
JP6223569B2 JP2016530910A JP2016530910A JP6223569B2 JP 6223569 B2 JP6223569 B2 JP 6223569B2 JP 2016530910 A JP2016530910 A JP 2016530910A JP 2016530910 A JP2016530910 A JP 2016530910A JP 6223569 B2 JP6223569 B2 JP 6223569B2
Authority
JP
Japan
Prior art keywords
task
transaction
thread
flow
asynchronous task
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2016530910A
Other languages
English (en)
Other versions
JP2016541056A (ja
JP2016541056A5 (ja
Inventor
俊▲傑▼ 周
俊▲傑▼ 周
摩西・魏▲瑪▼那・娜拉西▲馬▼哈
哈弗里・▲鳥▼▲パ▼▲薩▼娜
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Publication of JP2016541056A publication Critical patent/JP2016541056A/ja
Publication of JP2016541056A5 publication Critical patent/JP2016541056A5/ja
Application granted granted Critical
Publication of JP6223569B2 publication Critical patent/JP6223569B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q10/00Administration; Management
    • G06Q10/06Resources, workflows, human or project management; Enterprise or organisation planning; Enterprise or organisation modelling
    • G06Q10/063Operations research, analysis or management
    • G06Q10/0631Resource planning, allocation, distributing or scheduling for enterprises or organisations
    • G06Q10/06311Scheduling, planning or task assignment for a person or group
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system

Description

本発明は、フロー管理の分野に関し、特に、ビジネスフローをスケジュールするためのコンピュータ装置、方法及び装置に関する。
本出願は、2013年11月14日に中国特許庁に出願され、“COMPUTER DEVICE, METHOD, AND APPARATUS FOR SCHEDULING BUSINESS FLOW”と表題が付けられた中国特許出願第201310567968.8号に対する優先権を主張するとともに、それはその全体における参照によりここに組み込まれている。
ワークフローは、時間系列又は論理関係に従って関連のビジネスアクティビティを相互接続することにより形成されたビジネスフローである。ビジネスオペレーションの間、文書、情報又はタスクは、組織の仕様に従った複数の関係者の間で転送されるか、処理されるか、又は実行される。ワークフロー技術の最も顕著な特徴は、コンピュータアプリケーション環境におけるビジネスプロセスの一部又は全体の自動化であり、そのようなプロセスは、概して、人間及び機械の関与を必要とするアクティビティ、例えば情報技術(IT、Information Technology)アプリケーションプログラム及びツールとの対話プロセスのことを指す。ワークフローは、一群のタスク(又はアクティビティ)と、タスク(又はアクティビティ)の間の順序関係とを含み、そして、フロー及びタスクの開始条件並びに終了条件と、各タスクの説明とを更に含む。
ワークフロー管理システムは、ワークフローを定義して、作成して、そして実行するシステムのことを指す。システムは、主として、次の3つの態様、すなわち、ワークフロープロセス及びそのアクティビティを定義するとともに、モデリングする構築機能、オペレーション環境におけるワークフロープロセスを管理するとともに、ワークフロープロセスにおけるアクティビティをスケジュールするオペレーション制御機能、並びに、ワークフローのオペレーションの間、ユーザ(ビジネスジョブの関係者又は管理者)及び外部のアプリケーションプログラムと対話するオペレーション対話機能における機能サポートを提供する。
現在、ワークフロー技術は、広く適用される。例えば、ワークフローは、ビジネスフロー管理のために、企業のビジネスに導入される。ビジネスプロセス管理(Business Process Management、BPM)に関係したミドルウェアスイートは、概して、モデリングツール(ビジネスフローのモデリングに関与する)、BPMエンジン(ビジネスフローの駆動に関与する)、フロー管理コンソール、そして技術的フレームワークプラットホームを含む。ビジネスがフローの編成、展開、オペレーション及びスケジューリングを達成することを支援し、それにより、企業のために、企業のビジネスの発展に足並みをそろえられる様々なフローを作成するように、ミドルウェアスイートは、プロセスモデリング及びエンジンプロセスインスタンススケジューリングのためのアプリケーションプログラミングインタフェース(Application Programming Interface、API)によって上位層のビジネスを提供するために、ビジネスシステムに埋め込まれることができる。
図1は、BPMを使用することにより編成された典型的なビジネスフローの概略図を例示する。情報の同期化から注文の履行までは、完全な口座の開設フローであり、情報の同期化から料金の同期化を通り注文の履行までの各アクティビティは、タスクである。ビジネスサービスは、各タスクに対して設定されるとともに、それらのサービスは、図1においてあらかじめ編成された順序で実行される。各タスクは、フローのスケジューリング及び実行の間の1つのノードに対応する。口座の開設フローそのものは、本発明の懸案事項ではなく、したがって、ここでは詳細に説明されない。
ビジネスフローに関して、顧客の要求は下記を含む。
1.フローは、最後まで正しい論理構成の前提条件の下でビジネスゴールに従ってビジネスサービスを実行することを開始することができる。
2.フローは、ビジネスの追跡及び照会のために、各ステップにおいて実行情報を記録することができる。
3.ビジネスデータの変化を伴うデータの整合性は、フローの前方フローの間保持される必要がある。
4.フローにおけるノード上で例外が発生した場合に、フローが例外ノードにおいて停止するとともに、完了されたビジネスサービススケジューリングに影響を及ぼさずにフローが実行され続けることができるまで、障害に対する再試行又は人間の介入がサポートされる。
5.エンジンプロセスが例外的に終了する場合に、プロセスの再開と同時に完了されていないタスクから実行が再開されることをサポートする必要がある。
6.フローのスケジューリング性能は高くなければならない。
従来技術の解決法では、ビジネスフローの定義のためのサービス構成及び順序編成を達成するために、ビジュアルフロー編成ツールが最初に使用され、BPMエンジンが、ビジネス入力及び呼び出し要求に従って、前述の編成されたフローの定義に基づいて、完了までフローを前方へ駆動する。BPMエンジンのフローは、データベースにパーシストされるとともに、データの整合性を保証するために、トランザクションメカニズムが、パーシステンスプロセス(persistence process)における制御のために使用される。BPMプラットフォームとビジネスシステムとの間のトランザクションが一様にスケジュールされることを保証するために、ビジネスシステム及びBPMプラットフォームに対して、同じトランザクションフレームワーク、例えば、Spring transaction framework、又は別の同様のトランザクションフレームワークが使用される必要がある。宣言的トランザクションが、同様に、BPMプラットフォームのAPIに対する呼び出しを開始するために、ビジネスに対して設定される必要がある。宣言的トランザクションは、トランザクションが設定ファイルにおける宣言を用いて扱われることを意味する。宣言的トランザクションを使用することの利点は、トランザクションの管理が変化する場合に、再コンパイルのためにコードを変更する必要がなく、設定ファイルにおいて再構成を行うことだけが必要である、ということである。ビジネスがフローをフローの前方へ駆動するためにフロースタートAPIを呼び出すと、トランザクション制御が使用されるので、もし中間ノード上で例外が発生したならば、トランザクションはトランザクション開始点にロールバックされるが、しかし、例外ノードに対するロールバックはサポートされていないとともに、同様に、実行は例外ノードから再開できない。
したがって、ビジネスフロースケジューリングの間、従来技術は、ビジネスシステムとBPMプラットフォームとの間のデータの整合性を保証することも、例外が発生した場合にフローが例外ノードで終了するとともに、実行があとで例外ノードから再開されることを保証することもできない。
本発明の実施例は、ビジネスフローをスケジュールするためのコンピュータ装置、方法及び装置を提供し、それは、ビジネスシステムとBPMプラットフォームとの間のデータの整合性を保証することができるばかりでなく、例外が発生した場合にフローが例外ノードで終了するとともに、復旧と同時に実行が例外ノードから再開されることを保証することができる。
本発明の実施例の技術的解決法は、下記のとおりに実施される。
第1の態様によれば、フロースケジューリングを実行するためのコンピュータ装置が提供され、それは、少なくとも1つのノードを含むフローをスケジュールするとともに実行するように構成されるとともに、メモリ及びプロセッサを含み、前記メモリは、当該コンピュータ装置の命令を記憶するように構成され、前記プロセッサは、下記の、スケジュールされるべきノードに対してトランザクションセーブポイントが設定されることを判定するステップと、前記スケジュールされるべきノード上に存在するとともに前記トランザクションセーブポイントのあとに存在するスケジュールされるべきタスクを含む非同期タスクを、前記トランザクションセーブポイントに従って作成するステップと、前記フローにおける前記非同期タスク以外のタスクを含むトランザクションを実行するために第1のスレッドを使用し、前記第1のスレッドにより実行された前記トランザクションをコミットするステップと、前記非同期タスクを実行するために第2のスレッドを使用するステップとを達成するために、前記メモリ内の前記命令を実行するように構成される。
第1の態様の第1の可能な実施方法において、前記プロセッサは、前記第1のスレッドが属する第1のフローエンジンプロセスのスケジュールされるべきタスクキューに前記非同期タスクを配置するように更に構成される。
第1の態様の第1の可能な実施方法に関連して、第2の可能な実施方法において、前記第1のスレッドが属する第1のフローエンジンプロセスのスケジュールされるべきタスクキューに前記非同期タスクを配置する前記ステップは、登録済みトランザクションコミッションイベントコールバックリスナーに従ってリッスンすることにより、前記第1のスレッドにより実行された前記トランザクションが首尾よくコミットされたことが得られる場合に、前記第1のフローエンジンプロセスの前記スケジュールされるべきタスクキューに前記非同期タスクを配置するステップを含む。
第2の態様によれば、ビジネスフローをスケジューリングするための方法が提供され、当該方法は、スケジュールされるべきノードに対してトランザクションセーブポイントが設定されることを判定するステップと、前記スケジュールされるべきノード上に存在するとともに前記トランザクションセーブポイントのあとに存在するスケジュールされるべきタスクを含む非同期タスクを、前記トランザクションセーブポイントに従って作成するステップと、前記フローにおける前記非同期タスク以外のタスクを含むトランザクションを実行するために第1のスレッドを使用し、前記第1のスレッドにより実行された前記トランザクションをコミットするステップと、前記非同期タスクを実行するために第2のスレッドを使用するステップとを含む。
第2の態様の第1の可能な実施方法において、前記第1のスレッドにより実行された前記トランザクションをコミットする前記ステップのあとに、当該方法は、前記第1のスレッドが属する第1のフローエンジンプロセスのスケジュールされるべきタスクキューに前記非同期タスクを配置するステップを更に含む。
第2の態様の第1の可能な実施方法に関連して、第2の可能な実施方法において、当該方法は、トランザクションコミッションイベントコールバックリスナーを登録するステップを更に含み、前記第1のスレッドが属する第1のフローエンジンプロセスのスケジュールされるべきタスクキューに前記非同期タスクを配置する前記ステップは、リッスンすることにより、前記第1のスレッドにより実行された前記トランザクションが首尾よくコミットされたことが得られる場合に、前記第1のフローエンジンプロセスの前記スケジュールされるべきタスクキューに前記非同期タスクを配置するステップを具体的に含む。
第2の態様の第3の可能な実施方法において、非同期タスクを作成する前記ステップのあとに、当該方法は、前記非同期タスクをパーシストするステップを更に含み、前記第1のスレッドにより実行された前記トランザクションをコミットする前記ステップのあとに、当該方法は、前記のパーシストされた非同期タスクをデータベースに記憶するステップと、前記非同期タスクの実行が完了されるまえに前記第2のスレッドが属する第1のフローエンジンプロセスが例外的に終了する場合に、第2のフローエンジンプロセスにより、前記データベースから前記非同期タスクを獲得し、前記非同期タスクをスケジュールするとともに実行するステップとを更に含む。
第3の態様によれば、フロースケジューリング装置が提供され、それは、少なくとも1つのノードを含むフローを実行するように構成されるとともに、判定ユニット、作成ユニット及び実行ユニットを含み、前記判定ユニットは、スケジュールされるべきノードに対してトランザクションセーブポイントが設定されることを判定するように構成され、前記作成ユニットは、前記スケジュールされるべきノード上に存在するとともに前記トランザクションセーブポイントのあとに存在するスケジュールされるべきタスクを含む非同期タスクを、前記判定ユニットにより判定された前記トランザクションセーブポイントに従って作成するように構成され、前記実行ユニットは、前記フローにおける前記非同期タスク以外のタスクを含むトランザクションを実行するために第1のスレッドを使用し、前記第1のスレッドにより実行された前記トランザクションをコミットするとともに、前記非同期タスクを実行するために第2のスレッドを使用するように構成される。
第4の態様によれば、コンピュータのプロセッサにより実行可能な命令が記憶されるコンピュータ読み取り可能な記憶媒体が提供され、前記命令は、下記の、スケジュールされるべきノードに対してトランザクションセーブポイントが設定されることを判定するステップと、前記スケジュールされるべきノード上に存在するとともに前記トランザクションセーブポイントのあとに存在するスケジュールされるべきタスクを含む非同期タスクを、前記トランザクションセーブポイントに従って作成するステップと、前記フローにおける前記非同期タスク以外のタスクを含むトランザクションを実行するために第1のスレッドを使用し、前記第1のスレッドにより実行された前記トランザクションをコミットするステップと、前記非同期タスクを実行するために第2のスレッドを使用するステップとを実行するために使用される。
本発明の実施例の技術的解決法では、トランザクションセーブポイントが、フローノードに対して設定されるとともに、非同期タスク以外のスケジュールされたタスクを実行するスレッドが、実行を完了したあとでトランザクションをコミットする、ということが確認されることができる。非同期タスク以外のスケジュールされたタスクがトランザクションメカニズムに従ってコミットされるので、データの整合性は保証される。新しいスレッドは、トランザクションセーブポイントのあとの非同期タスクをスケジュールするために使用され、その結果、タスクの間のトランザクション分割が実行される。例外が発生した場合に、フロースケジューリングは、非同期タスクにおいて終了するとともに、復旧と同時に、実行は非同期タスクから再開される。
BPMを使用することにより編成された従来技術の典型的なビジネスフローの概略図である。 トランザクションセーブポイントが使用されるトランザクション処理の概要のフローチャートである。 本発明の一実施例によるBPMビジネスアプリケーションシステムの構造的な図である。 本発明の一実施例によるサーバの構成の構造的な図である。 本発明の一実施例によるフローエンジンのモジュールの概略図である。 本発明の一実施例によるフロースケジューリング方法のフローチャートである。 本発明の別の実施例によるフロースケジューリング方法のフローチャートである。 本発明の一実施例によるフロースケジューリング装置の概略構造図である。
本発明の目的、技術的解決法及び利点を、より明確に及びより分かりやすくするために、下記は、添付図面及び実施例を参照して、さらに本発明を詳細に説明する。
トランザクションの実行が失敗する場合に、トランザクションが、トランザクションの開始ノードの代わりに中間ノードにロールバックされることができることを実装するために、新しいトランザクションセーブポイント(savepoint)をフローにおけるノードに追加するとともに、各ノードを別々にパーシストすることが望ましいかもしれない。BPMエンジンがフローを駆動すると、トランザクションセーブポイントに遭遇する場合に、トランザクションセーブポイントのまえのトランザクションが最初にコミットされ、次に、新しいトランザクションが、BPMフローの次のノードの実行を制御するために作成される。
具体的な実施方法が図2において示されたシナリオを一例として使用することにより説明され、ここで、ビジネスAPI1、BPMスケジューリングAPI、そしてビジネスAPI2が、宣言的トランザクションT1に対して設定されるとともに、T1は最も外側のトランザクションである。ビジネスAPI1及びビジネスAPI2は、ビジネスの実行方法であり、そしてBPMスケジューリングAPIは、プラットフォームのスケジューリング方法である。内側のトランザクションT2は、BPMスケジューリングAPIのために事前設定されるとともに、T2は、自動的にビジネストランザクションT1に加わる。トランザクションセーブポイントは、BPMスケジューリングAPIに事前設定される。トランザクションセーブポイントに従って、内側のトランザクションT2が、先にコミットされ得るとともに、新しい内側のトランザクションT3が、BPMスケジューリングAPIのフローの残りの完了されていない部分のために作成され、ここで、T3は、BPMフローの次のノードのフローを制御する。統一されたトランザクション管理が使用されるので、T3がビジネスAPI2を管理することができない間、T2がコミットされる場合に、T1は先にコミットされ、その結果、トランザクション管理がビジネスAPI2のために存在せず、データの矛盾をもたらす。したがって、この解決法は、トランザクションが例外ノードにロールバックされることができるが、データの整合性を保証することができない。問題を解決するために、本発明の実施例では、ビジネスシステムとBPMプラットフォームとの間のデータの整合性を保証するとともに、例外が発生した場合に、トランザクションセーブポイントが設定される例外ノードでフローが終了するとともに、復旧と同時に実行が例外ノードから再開されることを保証するように、トランザクションセーブポイントのあとのスケジュールされるべきタスク以外のタスクを含むトランザクションが最初にコミットされ、次に、新しいスレッドが、フローにおけるトランザクションセーブポイントのあとのスケジュールされるべきタスクを実行するために使用される。
理解を容易にするために、フロー、トランザクション、タスク、スレッド及びプロセスという用語が説明される。フロー、トランザクション及びタスクは、ビジネスに関しての記述であり、そしてスレッド及びプロセスは、機械の実行に関しての記述である。フローは全体のビジネスに対応しており、そして複数のタスクを含み得る。フローは、プロセスにより管理される。1つのトランザクションは、1つのスレッドにより実行され、そして1つのスレッドは、複数のトランザクションを含み得る。1つのトランザクションは、1つ又は複数のタスクを含み得る。スレッドにより実行される場合に、タスクは、同様にノードと呼ばれる。タスクは、分割され得る。1つのプロセスは、1つのフローエンジンにおいて実行される。1つのプロセスは、複数のスレッドを含み得る。スレッドは、プロセスにより駆動される。
図3は、本発明の一実施例によるBPMビジネスアプリケーションシステムの構造的な図である。ビジネスシステム301は、ビジネスフローの編成、展開、オペレーション及びスケジューリングを達成するように構成される。ビジネスシステムは、クラスタシステムであり得るとともに、ここで、クラスタシステムは、相互接続されたコンピュータを含む並列又は分散処理システムである。実施方法において、ビジネスシステム301は、例えば、サーバa302及びサーバb307を含む、少なくとも1つのサーバを含み得る。サーバ302は、ビジネスモジュール303、及びBPMエンジン304を具体的に含み得る。サーバbは、サーバaの構造と同様の構造を有している。ビジネスモジュール303は、ユーザのビジネス要求を受け取り、BPMエンジン304に対して、ビジネスフロースケジューリング要求を開始するように構成される。BPMエンジン304は、データベース308からフローの定義を読み取るように構成される。データベース308は、フローの定義及び関連するデータを記憶する。
ビジネスシステム301におけるサーバは、ローカルなビジネスフロー306又はサードパーティのビジネスシステム(図には示されていない)と、ローカルなビジネスフロー306又はサードパーティのビジネスシステムにおけるサービスを呼び出すために更に対話し得る。ビジネスフロー306は、少なくとも1つのタスクを含む。図3において示された一例では、ビジネスフロー306は、タスク1〜nを含み、ここで、nは2を超える自然数である。ビジネスシステム301は、フローの定義を生成するとともに、フローの定義をデータベース308に記憶するために、BPMモデリングツール305を使用することにより、ビジネスフロー306を要約する。フロータスクのトランザクションセーブポイントは、フローの定義において設定される。フローの定義は、フローにおけるタスクに対応するノード、ノードの間の関係、入力/出力データ、トランザクションセーブポイントなどを含む。フローの定義は、フローチャート又は静的な設定ファイルを使用することにより表され得るとともに、データベース308又はファイルシステムに記憶される。ビジネススケジューリング要求を受け取る場合に、サーバのBPMエンジンは、フロースケジューリングを実行するためにフローの定義を読み取る。もしスケジュールされたノードがトランザクションセーブポイントを含むならば、トランザクションセーブポイントのあとのスケジュールされるべきタスクのために非同期タスクが作成される。非同期タスクのためのフロースケジューリングは下記を具体的に含み、すなわち、トランザクションが、トランザクションセーブポイントのあとのスケジュールされるべきタスク以外のタスクにより形成され、そしてスレッドにより実行されるとともに、トランザクションを実行するスレッドが終了される場合に、対応するトランザクションが首尾よくコミットされたあとで、非同期タスクである、トランザクションセーブポイントのあとのスケジュールされるべきタスクが、別のスレッドによりスケジュールされて実行される。さらに、非同期タスクはデータベースに書き込まれ、その結果、非同期タスクを実行するプロセスが失敗する場合に、非同期タスクは、別のサーバのBPMエンジンプロセスにより獲得されることができる。
ビジネスシステム301による非同期タスクのためのフロースケジューリングにおいて例外が発生した場合に、BPMエンジン304内に存在するとともに、非同期タスクを実行するスレッドは、スケジューリング及び実行を続ける代りに、例外が発生したノードにおいて停止する。もし非同期タスクを実行しているスレッドが例外であるならば、非同期タスクの実行を再開するように、BPMエンジンは、非同期タスクを実行するために、非同期タスクスケジューリングスレッドプールから、別の待機スレッドを獲得する。もし現在のBPMエンジンプロセスが例外的に終了するならば、別のサーバ、例えばビジネスシステムにおけるサーバbのBPMエンジンプロセスが、サーバ内のBPMエンジンプロセスが例外的に終了したことを示す通知メッセージを監視又は受信することにより、この例外的な終了を確認し、その場合に、引き継ぎ方針に従って、データベースから完了されていない非同期タスクを獲得するとともに、例外的に終了したBPMエンジンプロセスによって実行されているタスクの実行を再開する。
図4は、本発明の一実施例によるビジネスシステムにおけるサーバの概要の構成図である。この実施例では、サーバは、コンピュータ装置であり得るとともに、それはプロセッサベースのコンピュータを具体的に含む。図4において示されたように、サーバ400は、バス410、プロセッサ402、メモリ404、入力/出力インタフェース406及び通信インタフェース408を含み得る。バス410は、情報が全てのコンポーネントの間で転送される経路を含み得る。プロセッサ402は、情報を処理し、そして命令又はオペレーションを実行するように構成されるとともに、具体的には、本発明の解決法のプログラムの実行を制御するように構成される、多目的の中央演算処理装置(CPU)、マイクロプロセッサ、特定用途向け集積回路(Application-Specific Integrated Circuit、ASIC)又は1つ若しくは複数の集積回路であり得る。サーバは、情報及び命令を記憶するように構成される1つ又は複数のメモリ404を更に含み得る。メモリは、静的な情報及び命令を記憶することが可能である読出し専用メモリ(Read-Only Memory、ROM)若しくは別のタイプの静的なメモリ装置、情報及び命令を記憶することが可能であるランダムアクセスメモリ(Random Access Memory、RAM)若しくは別のタイプのダイナミック記憶装置、又は磁気ディスク記憶装置であり得る。これらのメモリは、バス410を使用することにより、プロセッサ402に接続される。
入力/出力インタフェース406は、入力装置又は出力装置を含み得る。入力装置は、ユーザにより入力されたデータ及び情報を受け取るように構成されるとともに、例えば、キーボード、マウス、カメラ、スキャナ、ライトペン、音声入力装置、タッチスクリーン、又は同様のものである。出力装置は、情報がユーザに対して出力又は表示されることを可能にするように構成されるとともに、スクリーン、プリンタ、拡声器などを含む。コンピュータ装置は、ネットワークインタフェース408を更に含む。ネットワークインタフェースは、別の装置、又はイーサネット、無線アクセスネットワーク(RAN)若しくは無線ローカルエリアネットワーク(WLAN)のような通信ネットワークとの通信を容易にするために使用される、あらゆるトランシーバのような装置である。プロセッサ402は、同様に、バス410を使用することにより、入力/出力インタフェース406及びネットワークインタフェース408に接続されることができる。
メモリ404は、ビジネスモジュール410及びBPMエンジン412のプログラムを含む、本発明の解決法を実行する要素のプログラム命令を記憶する。メモリ404は、オペレーティングシステム及び別のアプリケーションプログラムを更に記憶し得る。プロセッサ402は、メモリ404内のプログラム又は命令を読み取って実行するとともに、ネットワークインタフェース408を使用することにより、実行プロセスにおいて別の装置と通信するように構成される。具体的には、プロセッサ402がメモリ404内の命令を実行する場合に、プロセッサ402は、図6において示されたステップ601〜604を実行することができる。
図5は、フローエンジンの概略構造図であり、ここで、フローエンジンは図4におけるBPMエンジン412である。図5において示されたように、フローエンジン510は、フローパーザ511、タスクマネージャ512及びタスクエグゼキュータ513を含む。フローパーザ511は、スケジュールされるべきノードに対してトランザクションセーブポイントが設定されることを判定するように構成される。具体的には、フローパーザ511は、データベース308からフローの定義を読み取り、そしてスケジュールされるべきノードに対してトランザクションセーブポイントが設定されるかどうかを判定するために、フローの定義を構文解析する。スケジューリングの間に、あらかじめ設定されたトランザクションセーブポイントがスケジュールされるべきノード上で発見される場合に、タスクマネージャ512は、現在スケジュールされたフローノードを実行するスレッドにおいて非同期タスクを作成する。非同期タスクは、フローの定義におけるトランザクションセーブポイントのあとの予定外のタスクを含む。非同期タスクは、現在のスレッドにより実行されることになっていないが、しかし、現在のスレッドが終了されたあとで、別のスレッド、すなわち第2のスレッドによりスケジュールされて実行される。タスクマネージャ512は、データベースに書き込むために、作成された非同期タスクを更にパーシストする。
タスクマネージャ512は、宣言的トランザクションのために、トランザクションコミッションイベントコールバックリスナー(callback)を更に登録する。トランザクションコミッションイベントコールバックリスナーは、一度トランザクションコミッションイベントがリッスンすることにより獲得されれば、事前に登録されたコールバック方法が呼び出されることを意味する。トランザクションコミッションイベントコールバックリスナーの目的は、トランザクションセーブポイントのまえのトランザクションがコミットされたあとで、非同期タスクのスケジューリングが行われることを保証することである。
現在スケジュールされたフローノードを実行するスレッドは、現在のスレッドと呼ばれる。1つのスレッドの実行が完了されたあとで、スレッドは、外側の宣言的トランザクションに戻り、スレッドが戻ることは、そのスレッドが終了されるとともに、新しいスレッドが開始されることができる、ということを示す。現在のスレッドが終了される場合に、スレッドに対応する最も外側の宣言的トランザクションが、スレッドが戻ることによってコミットされる。トランザクションコミッションイベントコールバックリスナーがあらかじめ登録されているので、リッスンすることにより、外側のトランザクションがコミットされたことが得られる場合に、タスクマネージャ512は、事前に登録されたコールバック方法を使用することにより、スレッドにより共有されたホームBPMエンジンプロセスのスケジュールされるべきタスクキュー515に作成された非同期タスクを配置する。現在のスレッドが終了される場合に、タスクマネージャ512は、同時に、データベースに非同期タスクを更に書き込む。タスクキュー515におけるタスクデータはデータベースにおけるタスクデータと同じであり、一方、タスクキューにおけるタスクがメモリに一時的に記憶されるとともに、データベースにおけるデータが持続的に記憶されることができるという点で差異がある。非同期タスクスケジューリングスレッドプール内のスレッドは、スケジューリングのためにタスクキューから非同期タスクを獲得し得るとともに、スケジューリングが成功したあとで、データベースから非同期タスクを削除し得る。
タスクエグゼキュータ513は、非同期タスクを実行するために第2のスレッドを使用するように構成される。複数の待機スレッドは、非同期タスクスケジューリングスレッドプールにあらかじめ適用され、開始されるのを待っている。第2のスレッドは、非同期タスクスケジューリングスレッドプールから獲得される。
非同期タスクのスケジューリングの間に、もし非同期タスクを実行する第1のBPMエンジンプロセスにおいて例外が発生したならば、別のサーバの第2のBPMエンジンプロセスは、監視することにより、第1のBPMエンジンプロセスが例外であることを確認するか、又は、第1のBPMエンジンプロセスが例外的に終了したことを示す通知メッセージを受信する。第2のBPMエンジンプロセスは、データベースから、例外的なBPMエンジンプロセスにより完了されていない同期タスクを獲得するとともに、第2のBPMエンジンのタスクエグゼキュータは、非同期タスクを実行し続ける。
この実施例では、トランザクションセーブポイントが、フローノードに対して設定され、その結果、非同期タスク以外のスケジュールされたタスクを実行するスレッドは、実行を完了したあとで外側のトランザクションに自動的に戻る。外側のトランザクションがトランザクションメカニズムに従ってコミットされるので、データの整合性は保証される。新しいスレッドが、トランザクションセーブポイントのあとの非同期タスクをスケジュールするために使用され、その結果、タスクノードの間のトランザクション分割が実行される。例外が発生した場合に、フロースケジューリングは、非同期タスクにおいて終了するとともに、復旧と同時に、実行は非同期タスクから再開される。さらに、高性能のフロー実行解決法が、スケジューリングのための非同期タスクスケジューリングスレッドプールを使用することにより提供される。
図6は、本発明の一実施例によるフロースケジューリング方法のフローチャートである。下記で説明される方法は、図4において示されたサーバ、又は図5において示されたフローエンジンにより実行され得る。
ステップ601:フローエンジンが、スケジュールされるべきノードに対してトランザクションセーブポイントが設定されることを判定する。
BPMモデリングツールがフローチャートを組み立てるために使用される場合に、トランザクションセーブポイントは、フローにおけるノードの間又はノードの中に事前設定される。トランザクションセーブポイントの構成は、フォーマットされた方法で、フローの定義に記憶される。もしフローの定義がビジネスプロセスモデル及び表記法(Business Process Model and Notation、BPMN)に準拠しているならば、トランザクションセーブポイントは、サービスタスク(Service Task)のようなアクティビティ(Activity)の拡張属性を使用することにより記憶される。
例えば、<startEvent id=“startSimple” name=“Start” ufl:asynExecute=“true”/>であり、ここで、“asynExecute=“true””は、非同期スケジューリングがノードにより必要とされるということ、及び、トランザクションセーブポイントが設定されるということを示す。
スケジューリングの間、フローエンジンは、フローの定義に従って、スケジュールされるべきノードに対してトランザクションセーブポイントが設定されることが分かる。トランザクションセーブポイントを定義するためにXML記述が使用される一例において、トランザクションセーブポイントのためのXML記述は、フローノードの定義の記述の先頭又は中程に配置され得る。どちらの方法においても、フローエンジンは、構文解析により、ノードに対してトランザクションセーブポイントが設定されることを判定することができる。
ステップ602:フローエンジンが、フローの定義内にあり、スケジュールされるべきノード上に存在するとともに、トランザクションセーブポイントのあとに存在するスケジュールされるべきタスクを含む非同期タスクを、判定ユニットにより判定されたトランザクションセーブポイントに従って作成する。
非同期タスクが作成されたあとで、非同期タスクは、更にパーシストされることができ、それは、具体的には、データベースに書き込むために、非同期タスクをデータベース記憶インタフェースにバッファすることである。
ステップ603:フローエンジンが、フローにおける非同期タスク以外のタスクを含むトランザクションを実行するために第1のスレッドを使用し、完了すると、トランザクションをコミットする。
第1のスレッドは終了される。第1のスレッドにより実行されるとともに、フローにおける非同期タスク以外のタスクを含むトランザクションは、完了されてコミットされる。コミットされたトランザクションは、トランザクションセーブポイントのまえにスケジュールされて実行されたタスクを含むとともに、外側のトランザクションにおける非同期タスク以外のトランザクションセーブポイントのあとのタスクノードを含み得る。
第1のスレッドにより実行されたトランザクションがコミットされる場合に、非同期タスクは、第1のスレッドが属する第1のフローエンジンプロセスのスケジュールされるべきタスクキューに配置され得る。第1のフローエンジンプロセスは、具体的には、BPMエンジンにより実行されるプロセスであり得る。第1のスレッドにより実行されたトランザクションがコミットされたあとで、非同期タスクは、データベースに更に書き込まれる。
ステップ604:フローエンジンが、非同期タスクを実行するために第2のスレッドを使用する。
フローのスケジューリングを続けるように、新しいスレッド、すなわち第2のスレッドが、非同期タスクを実行するために、第1のフローエンジンプロセスにおいて使用される。非同期タスクが首尾よく処理されたあとで、フローエンジンは、データベースに記憶された非同期タスクを削除する。
もし非同期タスクの実行が完了されるまえに第2のスレッドが例外的に終了するならば、第1のフローエンジンプロセスは、非同期タスクスケジューリングスレッドプールから、別の待機スレッド、すなわち第3のスレッドを獲得するとともに、非同期タスクの実行を再開するように、スケジュールされるべきタスクキューから取り出された非同期タスクをスケジュールするために第3のスレッドを使用する。もし第1のフローエンジンプロセスが例外的に終了するならば、第2のフローエンジンプロセスは、監視することにより、第1のフローエンジンプロセスが例外的に終了することを確認するか、又は、第1のフローエンジンプロセスが例外的に終了したことを示す通知メッセージを受信し、データベースから完了されていない非同期タスクを獲得し、そして非同期タスクをスケジュールするとともに実行するためにスレッドを割り当てる。
本発明のこの実施方法では、トランザクションセーブポイントが、フローノードに対して設定されるとともに、非同期タスクが異なるスレッドを使用することによりスケジュールされ、それは、非同期スレッドスケジューリングであり、その結果、トランザクションセーブポイントが設定されるノードを実行するスレッドは、実行を完了したあとで外側のトランザクションに自動的に戻る。外側のトランザクションがトランザクションメカニズムに従ってコミットされるので、データの整合性は保証される。さらに、第2のスレッドが、トランザクションセーブポイントのあとの次のフローを駆動するために使用され、タスクノードの間のトランザクション分割を実行する。例外が発生した場合に、フロースケジューリングは、非同期タスクにおいて終了するとともに、復旧と同時に、実行は非同期タスクから再開される。さらに、高性能のフロー実行解決法が、スケジューリングのための非同期タスクスケジューリングスレッドプールを使用することにより提供される。
図7は、本発明の一実施例によるフロースケジューリングの具体的な手順のフローチャートである。この実施例におけるステップの実行は、図2において示されたように、ビジネスAPI1、BPMスケジューリングAPI、そしてビジネスAPI2がビジネスフローに含まれる一例を使用することにより説明される。トランザクションセーブポイントは、BPMスケジューリングAPIに設定される。
ステップ701:BPMエンジンのプロセスがフロースケジューリングを起動する。
ステップ702:BPMエンジンが、フローの定義において事前設定されたトランザクションを開始する。この実施例では、BPMエンジンにより開始されたトランザクションT1は、ビジネスAPI1、BPMスケジューリングAPI、そしてビジネスAPI2を含むように構成され、トランザクションT1は、同様に、下記では外側のトランザクションと呼ばれる。トランザクションT1は、スレッドにより実行され、スレッドは、同様に、下記では現在のスレッドと呼ばれる。
概して、トランザクションは、1つ又は複数のタスクを含み、トランザクションは、1つのスレッドにより実行されるとともに、スレッドは、BPMエンジンプロセスにより駆動される。スレッドにより実行される場合に、タスクは、同様にノードと呼ばれる。
ステップ703:BPMエンジンが、スケジュールされるべきノードがトランザクションセーブポイントを含むかどうかを判定し、もし含まないならばステップ704に進み、もし含むならばステップ705に進む。
この実施例では、トランザクションセーブポイントは、BPMスケジューリングAPIにあらかじめ設定される。
ステップ704:スケジュールされるべきノードがトランザクションセーブポイントを含まない場合、BPMエンジンが、現在のスレッドにおける次のノードを実行し続ける。現在のスレッドは、現在スケジュールされたフローノードを実行するスレッド、すなわち図6において示された実施例における第1のスレッドである。
ステップ705:トランザクションセーブポイントをスケジュールされるべきノード上で発見する場合に、BPMエンジンが、現在のスレッドにおいて非同期タスクを作成するとともに、非同期タスクをパーシストする。この実施例では、非同期タスクは、トランザクションセーブポイントのあとの、BPMスケジューリングAPIのスケジュールされるべきタスクを含む。この実施例では、パーシステンス(Persistence)は、具体的には、非同期タスクをデータベース記憶インタフェースにバッファすることである。パーシステンスの目的は、データ、例えばメモリ内の目的物を、リレーショナルデータベース、ディスクファイル又はXMLデータファイルに記憶することである。
非同期タスクの設定は、具体的には、XML記述、例えばbpmn2extn:nextFlowExecutionMode=“ASYNCHRONOUS_CONTINUE”であり得る。
ステップ706:トランザクションコミッションイベントコールバックリスナーを登録する。非同期タスクのためのスレッド開始方法は、コールバックリスナーの登録コードにおいて定義される。トランザクションコミッションイベントコールバックリスナーは、現在のスレッドにおけるトランザクションがコミットされたあとに、非同期タスクのためのスレッドが開始することを保証する。トランザクションコミッションイベントコールバックリスナーは、ステップ705のあとで登録され得るか、又は、フローの定義において事前設定され得る。
ステップ707:現在のスレッドの実行が完了すると、現在のスレッドが戻るように外側のトランザクションT1をコミットする。コミットされたトランザクションT1は、ビジネスAPI1、トランザクションセーブポイントのまえのBPMスケジューリングAPIのためのスケジュールされたタスク、そしてビジネスAPI2を含む。非同期タスクである、トランザクションセーブポイントのあとのBPMスケジューリングAPIのためのスケジュールされるべきタスクは、実行又はコミットされない。
ステップ708:外側のトランザクションT1がコミットされる場合に、登録済みトランザクションコミッションイベントコールバックリスナーのコールバック方法に従って、現在のフローエンジンプロセスのスケジュールされるべきタスクキューに非同期タスクを配置する。タスクキューは、非同期タスクスケジューリングスレッドプール内のスレッドによりスケジュールされ得る。複数の待機スレッドは、非同期タスクスケジューリングスレッドプールにあらかじめ適用され、開始されるのを待っている。
ステップ709:外側のトランザクションT1がコミットされる場合に、非同期タスクをデータベースに更に書き込む。データベースに書き込まれたあとで、非同期タスクは、持続的に記憶されることができる。ステップ709及びステップ708を実行する順序は限定されない。
ステップ710:現在のフローエンジンプロセスが例外的に終了するかどうかを監視するとともに、もしプロセスが例外的に終了するならばステップ711を実行するか、又は、もしプロセスが正常に実行されるならばステップ712を実行する。
ステップ711:第2のフローエンジンプロセスが、データベースから、例外的に終了したフローエンジンプロセスにより完了されていない非同期タスクを獲得するとともに、スケジューリングを続けるためにフローを割り当て、そして完了後、ステップ713に進む。第2のフローエンジンプロセスは、別のフローエンジンプロセスが例外的に終了したかどうかを積極的に監視するか、又は、第2のフローエンジンプロセスは、第1のフローエンジンプロセスが例外的に終了したことを示す通知メッセージを受信する。
ステップ712:現在のBPMエンジンプロセスが、非同期タスクを実行するとともに、スケジューリングを続けるために、新しいスレッド(すなわち、第2のスレッド)を使用する。新しいスレッドは、非同期タスクスケジューリングスレッドプールから獲得される。もし非同期タスクの実行が完了されるまえに非同期タスクを実行するスレッドが例外的に終了するならば、BPMエンジンは、非同期タスクを実行するための非同期タスクスケジューリングスレッドプールから、別の待機スレッド、すなわち第3のスレッドを取り出す。
ステップ713:非同期タスクの実行を完了するとともに、データベースにおける非同期タスクを削除する。
前述のフロースケジューリング方法に基づくと、図8は、本発明の一実施例によるフロースケジューリング装置の構成の概略構造図である。図8において示されたように、フロースケジューリング装置は、判定ユニット801、作成ユニット803及び実行ユニット805を含む。
判定ユニット801は、スケジュールされるべきノードに対してトランザクションセーブポイントが設定されることを判定するように構成される。
作成ユニット803は、スケジュールされるべきノード上に存在するとともにトランザクションセーブポイントのあとに存在するスケジュールされるべきタスクを含む非同期タスクを、判定ユニット801により判定されたトランザクションセーブポイントに従って作成するように構成される。
実行ユニット805は、フローにおける非同期タスク以外のタスクを含むトランザクションを実行するために第1のスレッドを使用し、第1のスレッドにより実行されたトランザクションをコミットするとともに、非同期タスクを実行するために第2のスレッドを使用するように構成される。
実行ユニット805は、第1のスレッドが属する第1のフローエンジンプロセスのスケジュールされるべきタスクキューに、作成ユニットにより作成された非同期タスクを配置するように更に構成される。
実行ユニット805は、登録済みトランザクションコミッションイベントコールバックリスナーに従ってリッスンすることにより、第1のスレッドにより実行されたトランザクションが首尾よくコミットされたことが得られる場合に、第1のフローエンジンプロセスのスケジュールされるべきタスクキューに非同期タスクを配置するように更に構成される。
実行ユニット805は、非同期タスクをパーシストし、第1のスレッドにより実行されたトランザクションがコミットされたあとで、パーシストされた非同期タスクをデータベースに記憶し、その結果、非同期タスクの実行が完了されるまえに第2のスレッドが属する第1のフローエンジンプロセスが例外的に終了する場合に、第2のフローエンジンプロセスがデータベースから非同期タスクを獲得し、非同期タスクをスケジュールするとともに実行する、ように更に構成される。
判定ユニット801は、データベースに記憶されるフローの定義に従ってトランザクションセーブポイントを判定する。
本発明のこの実施例の技術的解決法によれば、フロースケジューリング装置が、フローノードに対してトランザクションセーブポイントが設定されることを発見する場合に、非同期タスクが作成されるとともに、非同期スレッドスケジューリングが非同期タスクのために使用される、ということが確認されることができる。トランザクションセーブポイントが設定されるノードを実行するスレッドは、スレッドの実行が完了されたあとで、トランザクションメカニズムに従ってコミッションを行い、それは、データの整合性を保証する。さらに、新しいスレッドが、トランザクションセーブポイントのあとの次のフローを駆動するために使用され、タスクノードの間のトランザクション分割を実行する。
前述の装置におけるユニットの間の情報交換及び実行プロセスのような内容は、本発明の方法の実施例と同じ発想に基づいている。したがって、詳細な内容については、本発明の方法の実施例における説明に対して参照が行われ得るとともに、詳細は再度ここでは説明されない。
具体的な実施例が、本発明の原理及び実施方法を説明するために、この明細書において使用される。前述の実施例は、単に本発明の方法及び発想を理解するのを助けることを意図している。さらに、実施方法及び応用範囲に関して、変更が本発明の発想に従って当業者により実行され得る。したがって、明細書は、本発明に対する限定と解釈されないものとする。

Claims (19)

  1. 少なくとも1つのノードを含むフローを実行するように構成されるとともに、判定ユニット、作成ユニット及び実行ユニットを備えるフロースケジューリング装置であって、
    前記判定ユニットが、スケジュールされるべきノードに対してトランザクションセーブポイントが設定されることを判定するように構成され、
    前記作成ユニットが、前記スケジュールされるべきノード上に存在するとともに前記トランザクションセーブポイントのあとに存在するスケジュールされるべきタスクを含む非同期タスクを、前記判定ユニットにより判定された前記トランザクションセーブポイントに従って作成するように構成され、
    前記実行ユニットが、前記フローにおける前記非同期タスク以外のタスクを含むトランザクションを実行するために第1のスレッドを使用し、前記第1のスレッドにより実行された前記トランザクションをコミットし、実行された前記トランザクションが前記第1のスレッドによりコミットされた後に、前記非同期タスクを実行するために第2のスレッドを使用するように構成される、フロースケジューリング装置。
  2. 前記実行ユニットが、前記第1のスレッドが属する第1のフローエンジンプロセスのスケジュールされるべきタスクキューに前記非同期タスクを配置するように更に構成される、請求項1に記載のフロースケジューリング装置。
  3. 前記実行ユニットが、前記第1のスレッドが属する第1のフローエンジンプロセスのスケジュールされるべきタスクキューに前記非同期タスクを配置するように構成されることが、前記実行ユニットが、登録済みトランザクションコミッションイベントコールバックリスナーに従ってリッスンすることにより、前記第1のスレッドにより実行された前記トランザクションが首尾よくコミットされたことが得られる場合に、前記第1のフローエンジンプロセスの前記スケジュールされるべきタスクキューに前記非同期タスクを配置するように構成されることを含む、請求項2に記載のフロースケジューリング装置。
  4. 前記実行ユニットが、前記非同期タスクの実行が完了されるまえに前記第2のスレッドが例外的に終了する場合に、前記スケジュールされるべきタスクキューから前記非同期タスクを取り出し、前記非同期タスクを実行するために第3のスレッドを使用するように更に構成される、請求項1から請求項3のいずれか一項に記載のフロースケジューリング装置。
  5. 前記実行ユニットが、前記非同期タスクをパーシストし、前記第1のスレッドにより実行された前記トランザクションがコミットされたあとで、前記のパーシストされた非同期タスクをデータベースに記憶し、前記非同期タスクの実行が完了されるまえに前記第2のスレッドが属する第1のフローエンジンプロセスが例外的に終了する場合に、第2のフローエンジンプロセスが前記データベースから前記非同期タスクを獲得し、前記非同期タスクをスケジュールするとともに実行する、ように更に構成される、請求項1から請求項4のいずれか一項に記載のフロースケジューリング装置。
  6. 前記トランザクションセーブポイントが、データベースに存在するフローの定義に記憶される、請求項1から請求項5のいずれか一項に記載のフロースケジューリング装置。
  7. 前記トランザクションが宣言的トランザクションである、請求項1から請求項6のいずれか一項に記載のフロースケジューリング装置。
  8. 少なくとも1つのノードを含むビジネスフローをスケジューリングするための方法であって、当該方法が、
    スケジュールされるべきノードに対してトランザクションセーブポイントが設定されることを判定するステップと、
    前記スケジュールされるべきノード上に存在するとともに前記トランザクションセーブポイントのあとに存在するスケジュールされるべきタスクを含む非同期タスクを、前記トランザクションセーブポイントに従って作成するステップと、
    前記フローにおける前記非同期タスク以外のタスクを含むトランザクションを実行するために第1のスレッドを使用し、前記第1のスレッドにより実行された前記トランザクションをコミットするステップと、
    実行された前記トランザクションが前記第1のスレッドによりコミットされた後に、前記非同期タスクを実行するために第2のスレッドを使用するステップとを含む、方法。
  9. 前記第1のスレッドにより実行された前記トランザクションをコミットする前記ステップのあとに、前記第1のスレッドが属する第1のフローエンジンプロセスのスケジュールされるべきタスクキューに前記非同期タスクを配置するステップを更に含む、請求項8に記載の方法。
  10. 当該方法が、トランザクションコミッションイベントコールバックリスナーを登録するステップを含み、
    前記第1のスレッドが属する第1のフローエンジンプロセスのスケジュールされるべきタスクキューに前記非同期タスクを配置する前記ステップが、リッスンすることにより、前記第1のスレッドにより実行された前記トランザクションが首尾よくコミットされたことが得られる場合に、前記第1のフローエンジンプロセスの前記スケジュールされるべきタスクキューに前記非同期タスクを配置するステップを含む、請求項9に記載の方法。
  11. 当該方法が、前記非同期タスクの実行が完了されるまえに前記第2のスレッドが例外的に終了する場合に、前記スケジュールされるべきタスクキューから前記非同期タスクを取り出し、前記非同期タスクを実行するために第3のスレッドを使用するステップを更に含む、請求項8から請求項10のいずれか一項に記載の方法。
  12. 非同期タスクを作成する前記ステップのあとに、前記非同期タスクをパーシストするステップを更に含み、
    前記第1のスレッドにより実行された前記トランザクションをコミットする前記ステップのあとに、前記のパーシストされた非同期タスクをデータベースに記憶するステップを更に含む、請求項8から請求項10のいずれか一項に記載の方法。
  13. 当該方法が、前記非同期タスクの実行が完了されるまえに前記第2のスレッドが属する第1のフローエンジンプロセスが例外的に終了する場合に、第2のフローエンジンプロセスにより、前記データベースから前記非同期タスクを獲得し、前記非同期タスクをスケジュールするとともに実行するステップを更に含む、請求項12に記載の方法。
  14. 前記トランザクションセーブポイントが、データベースに存在するフローの定義に記憶される、請求項8から請求項13のいずれか一項に記載の方法。
  15. 少なくとも1つのノードを含むフローを実行するように構成されるとともに、メモリ及びプロセッサを備える、フロースケジューリングを実行するためのコンピュータ装置であって、
    前記メモリが、当該コンピュータ装置の命令を記憶するように構成され、
    前記プロセッサが、下記の、
    スケジュールされるべきノードに対してトランザクションセーブポイントが設定されることを判定するステップと、
    前記スケジュールされるべきノード上に存在するとともに前記トランザクションセーブポイントのあとに存在するスケジュールされるべきタスクを含む非同期タスクを、前記トランザクションセーブポイントに従って作成するステップと、
    前記フローにおける前記非同期タスク以外のタスクを含むトランザクションを実行するために第1のスレッドを使用し、前記第1のスレッドにより実行された前記トランザクションをコミットするステップと、
    実行された前記トランザクションが前記第1のスレッドによりコミットされた後に、前記非同期タスクを実行するために第2のスレッドを使用するステップとを達成するために、前記メモリ内の前記命令を実行するように構成される、コンピュータ装置。
  16. 前記プロセッサが、登録済みトランザクションコミッションイベントコールバックリスナーに従ってリッスンすることにより、前記第1のスレッドにより実行された前記トランザクションが首尾よくコミットされたことが得られる場合に、第1のフローエンジンプロセスのスケジュールされるべきタスクキューに前記非同期タスクを配置するように更に構成される、請求項15に記載のコンピュータ装置。
  17. 前記プロセッサが、前記非同期タスクの実行が完了されるまえに前記第2のスレッドが例外的に終了する場合に、前記スケジュールされるべきタスクキューから前記非同期タスクを取り出し、前記非同期タスクを実行するために第3のスレッドを使用するように更に構成される、請求項15又は請求項16に記載のコンピュータ装置。
  18. 前記プロセッサが、前記非同期タスクをパーシストし、前記第1のスレッドにより実行された前記トランザクションがコミットされたあとで、前記のパーシストされた非同期タスクをデータベースに記憶し、前記非同期タスクの実行が完了されるまえに前記第2のスレッドが属する第1のフローエンジンプロセスが例外的に終了する場合に、第2のフローエンジンプロセスが前記データベースから前記非同期タスクを獲得し、前記非同期タスクをスケジュールするとともに実行する、ように更に構成される、請求項15から請求項17のいずれか一項に記載のコンピュータ装置。
  19. 請求項8から請求項14のいずれか一項に記載の方法をコンピュータに実行させるプログラム。
JP2016530910A 2013-11-14 2014-10-28 ビジネスフローをスケジュールするためのコンピュータ装置、方法及び装置 Active JP6223569B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
CN201310567968.8A CN103593236B (zh) 2013-11-14 2013-11-14 一种业务流程调度的计算机设备、方法和装置
CN201310567968.8 2013-11-14
PCT/CN2014/089703 WO2015070705A1 (zh) 2013-11-14 2014-10-28 一种业务流程调度的计算机设备、方法和装置

Publications (3)

Publication Number Publication Date
JP2016541056A JP2016541056A (ja) 2016-12-28
JP2016541056A5 JP2016541056A5 (ja) 2017-09-14
JP6223569B2 true JP6223569B2 (ja) 2017-11-01

Family

ID=50083391

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016530910A Active JP6223569B2 (ja) 2013-11-14 2014-10-28 ビジネスフローをスケジュールするためのコンピュータ装置、方法及び装置

Country Status (5)

Country Link
US (1) US10453010B2 (ja)
EP (1) EP3051414A4 (ja)
JP (1) JP6223569B2 (ja)
CN (1) CN103593236B (ja)
WO (1) WO2015070705A1 (ja)

Families Citing this family (38)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103593236B (zh) 2013-11-14 2017-02-22 华为技术有限公司 一种业务流程调度的计算机设备、方法和装置
GB2533415B (en) * 2014-12-19 2022-01-19 Advanced Risc Mach Ltd Apparatus with at least one resource having thread mode and transaction mode, and method
CN107688504A (zh) * 2016-08-05 2018-02-13 中兴通讯股份有限公司 数据管理异常的补救方法及系统
CN107967549B (zh) * 2016-10-20 2022-02-01 南京途牛科技有限公司 多流程任务处理装置与方法
CN108255585B (zh) * 2016-12-28 2023-08-18 三六零科技集团有限公司 Sdk异常控制及应用程序运行方法、装置及其设备
CN107273059A (zh) * 2017-07-06 2017-10-20 郑州云海信息技术有限公司 一种存储命令的配置方法及系统
CN109446183B (zh) * 2017-08-31 2022-04-26 北京京东尚科信息技术有限公司 全局防重的方法和装置
CN107992364A (zh) * 2017-10-31 2018-05-04 用友金融信息技术股份有限公司 作业调度方法及作业调度系统
CN108388982B (zh) * 2018-02-07 2020-08-21 阿里巴巴集团控股有限公司 任务的运行方法、装置和电子设备
WO2019134323A1 (zh) * 2018-05-10 2019-07-11 深圳晶泰科技有限公司 科学计算流程管理系统
CN108762900A (zh) * 2018-05-21 2018-11-06 平安科技(深圳)有限公司 高频任务调度方法、系统、计算机设备和存储介质
CN109034603B (zh) * 2018-07-20 2022-07-12 深圳前海微众银行股份有限公司 业务流程执行方法、设备及计算机可读存储介质
CN109062675A (zh) * 2018-08-03 2018-12-21 浪潮通用软件有限公司 一种工作流系统依赖事务的监听器实现方法
CN109324925A (zh) * 2018-08-29 2019-02-12 北京仁科互动网络技术有限公司 分布式框架的事务处理方法及装置
CN109117260B (zh) * 2018-08-30 2021-01-01 百度在线网络技术(北京)有限公司 一种任务调度方法、装置、设备和介质
CN109447568B (zh) * 2018-09-21 2022-12-02 山东中创软件商用中间件股份有限公司 一种流程活动异步运行方法、装置、设备及存储介质
CN109598603B (zh) * 2018-10-26 2023-07-25 创新先进技术有限公司 一种开户任务处理方法及开户服务系统
CN111240812B (zh) * 2018-11-28 2024-03-19 中国移动通信集团广东有限公司 任务执行方法及装置
CN109783210B (zh) * 2018-12-13 2023-10-20 平安科技(深圳)有限公司 多任务处理方法、装置、计算机设备及存储介质
CN109710463A (zh) * 2018-12-27 2019-05-03 亚信科技(中国)有限公司 一种任务调度方法及装置
CN109889883A (zh) * 2019-01-23 2019-06-14 深圳市创梦天地科技有限公司 一种精彩时刻视频录制方法及装置
CN110231995B (zh) * 2019-05-20 2023-08-08 平安科技(深圳)有限公司 一种基于Actor模型的任务调度方法、装置及存储介质
SG10201906587QA (en) * 2019-07-16 2021-02-25 Mastercard International Inc Determination of data consistency in distributed asynchronous architecture
CN110968445A (zh) * 2019-11-13 2020-04-07 泰康保险集团股份有限公司 一种基于流程引擎的节点跳转方法、装置及电子设备
CN112799797B (zh) * 2019-11-14 2024-04-16 北京沃东天骏信息技术有限公司 一种任务管理的方法和装置
CN111290868B (zh) * 2020-03-02 2024-03-15 中国邮政储蓄银行股份有限公司 任务处理方法、装置和系统以及流程引擎
CN111427751B (zh) * 2020-04-15 2023-08-22 赞同科技股份有限公司 基于异步处理机制对业务进行处理的方法及系统
CN111737332A (zh) * 2020-06-24 2020-10-02 四川长虹电器股份有限公司 一种采购比价的嵌入式审计系统及方法
CN113051049A (zh) * 2020-07-10 2021-06-29 北京迈格威科技有限公司 任务调度系统、方法、电子设备及可读存储介质
CN112667371A (zh) * 2020-12-07 2021-04-16 深圳市远行科技股份有限公司 异步任务的处理方法、装置、设备及存储介质
CN112527484A (zh) * 2020-12-17 2021-03-19 平安银行股份有限公司 工作流断点续跑方法、装置、计算机设备及可读存储介质
CN112965805B (zh) * 2021-03-25 2023-12-05 兴业数字金融服务(上海)股份有限公司 基于内存映射文件的跨进程异步任务处理方法及系统
CN113077241A (zh) * 2021-04-21 2021-07-06 北京沃东天骏信息技术有限公司 审批处理方法、装置、设备及存储介质
CN113177056B (zh) * 2021-06-29 2021-09-21 企查查科技有限公司 多数据库的业务数据一致性的检验方法、设备和存储介质
CN113821322A (zh) * 2021-09-10 2021-12-21 浙江数新网络有限公司 一种松耦合的分布式工作流协调系统和方法
CN116089049B (zh) * 2023-04-07 2023-09-12 北京卡普拉科技有限公司 基于异步并行i/o请求的进程同步调度方法、装置以及设备
CN116432997B (zh) * 2023-06-13 2023-10-24 安徽商信政通信息技术股份有限公司 一种对已办结流程收回重办的方法及系统
CN117474312B (zh) * 2023-12-28 2024-04-05 图快数字科技(杭州)有限公司 可视化业务流编排方法、系统、电子设备及存储介质

Family Cites Families (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000010810A (ja) 1998-06-22 2000-01-14 Toshiba Corp トランザクション処理のコミット制御方法および同方法が適用される計算機システム
WO2002059773A1 (en) * 2000-12-04 2002-08-01 Thinkshare Corp. Modular distributed mobile data applications
US7089556B2 (en) * 2001-03-26 2006-08-08 International Business Machines Corporation System and method for dynamic self-determining asynchronous event-driven computation
US6816873B2 (en) * 2001-05-15 2004-11-09 International Business Machines Corporation Method for managing distributed savepoints across multiple DBMS's within a distributed transaction
US6721765B2 (en) * 2002-07-02 2004-04-13 Sybase, Inc. Database system with improved methods for asynchronous logging of transactions
US8032890B2 (en) * 2003-07-22 2011-10-04 Sap Ag Resources managing in isolated plurality of applications context using data slots to access application global data and specification of resources lifetime to access resources
US8423602B2 (en) * 2004-10-13 2013-04-16 International Business Machines Corporation Web service broadcast engine
US7681133B2 (en) * 2005-10-14 2010-03-16 Oracle International Corporation Declarative task-based user interfaces
US7730286B2 (en) 2005-12-30 2010-06-01 Intel Corporation Software assisted nested hardware transactions
US7747726B2 (en) * 2006-09-20 2010-06-29 International Business Machines Corporation Method and apparatus for estimating a local performance index to measure the performance contribution of a single server in a multi-tiered environment
US20080263106A1 (en) * 2007-04-12 2008-10-23 Steven Asherman Database queuing and distributed computing
US8347292B2 (en) * 2007-08-30 2013-01-01 International Business Machines Corporation Transaction aggregation to increase transaction processing throughout
US8219432B1 (en) * 2008-06-10 2012-07-10 Amazon Technologies, Inc. Automatically controlling availability of tasks for performance by human users
US8037122B2 (en) * 2008-09-19 2011-10-11 Oracle International Corporation Processing of service-oriented tasks within a grid computing environment
US8762448B2 (en) * 2009-01-30 2014-06-24 Oracle International Corporation Implementing asynchronous processes on a mobile client
CA2679494C (en) * 2009-09-17 2014-06-10 Ibm Canada Limited - Ibm Canada Limitee Consolidating related task data in process management solutions
CN102238465B (zh) * 2010-04-28 2014-12-03 北京神州泰岳软件股份有限公司 一种移动数据业务端到端质量分析方法及系统
WO2012031112A2 (en) * 2010-09-03 2012-03-08 Time Warner Cable, Inc. Methods and systems for managing a virtual data center with embedded roles based access control
US8656398B2 (en) * 2011-05-03 2014-02-18 Ericsson Television Inc Synchronization of workflows in a video file workflow system
US8595267B2 (en) * 2011-06-27 2013-11-26 Amazon Technologies, Inc. System and method for implementing a scalable data storage service
US8490115B2 (en) * 2011-10-20 2013-07-16 Microsoft Corporation Ambient state for asynchronous methods
US8843609B2 (en) * 2011-11-09 2014-09-23 Microsoft Corporation Managing capacity in a data center by suspending tenants
EP3249546B1 (en) * 2011-12-14 2022-02-09 Level 3 Communications, LLC Content delivery network
US9002813B2 (en) * 2011-12-22 2015-04-07 Sap Se Execution plan preparation in application server
US20140053157A1 (en) * 2012-08-16 2014-02-20 Microsoft Corporation Asynchronous execution flow
US9317322B2 (en) * 2012-10-24 2016-04-19 Google Technology Holdings LLC Simulating synchronous execution of asynchronous operations
WO2014088541A1 (en) * 2012-12-03 2014-06-12 Hewlett-Packard Development Company, L.P. Asynchronous framework for management of iaas
CN103077006B (zh) * 2012-12-27 2015-08-26 浙江工业大学 一种基于多线程的长事务并行执行方法
CN103593236B (zh) * 2013-11-14 2017-02-22 华为技术有限公司 一种业务流程调度的计算机设备、方法和装置
US9378117B2 (en) * 2014-05-30 2016-06-28 Apple Inc. Queue debugging using stored backtrace information

Also Published As

Publication number Publication date
WO2015070705A1 (zh) 2015-05-21
EP3051414A1 (en) 2016-08-03
CN103593236B (zh) 2017-02-22
CN103593236A (zh) 2014-02-19
JP2016541056A (ja) 2016-12-28
EP3051414A4 (en) 2016-11-16
US10453010B2 (en) 2019-10-22
US20160260040A1 (en) 2016-09-08

Similar Documents

Publication Publication Date Title
JP6223569B2 (ja) ビジネスフローをスケジュールするためのコンピュータ装置、方法及び装置
US8332443B2 (en) Masterless distributed batch scheduling engine
US10860905B1 (en) Long running workflows for document processing using robotic process automation
JP2016541056A5 (ja)
US11704224B2 (en) Long running workflows for robotic process automation
US7779298B2 (en) Distributed job manager recovery
US11110601B2 (en) Scheduling robots for robotic process automation
EP3428811A1 (en) Database interface agent for a tenant-based upgrade system
AU2007289177B2 (en) Dynamically configuring, allocating and deploying computing systems
CN100594498C (zh) 海量数据实时处理架构及用于该架构的实时随需处理平台
US20100162245A1 (en) Runtime task with inherited dependencies for batch processing
WO2019047441A1 (zh) 一种通信优化方法及系统
CN110806933A (zh) 一种批量任务处理方法、装置、设备和存储介质
WO2019109854A1 (zh) 分布式数据库数据处理方法、装置、存储介质及电子装置
US9892152B2 (en) Data readiness using initiator region last commit selection
CN114925084B (zh) 分布式事务处理方法、系统、设备及可读存储介质
CN112363913B (zh) 一种并行测试任务调度寻优的方法、装置和计算设备
CN110908793A (zh) 长时任务执行方法、装置、设备及可读存储介质
US7979870B1 (en) Method and system for locating objects in a distributed computing environment
CN108108119B (zh) 一种可扩展的存储集群事物的配置方法及装置
CN109032753A (zh) 一种异构虚拟机硬盘托管方法、系统、存储介质及Nova平台
JP2007265043A (ja) スケジューラプログラム、サーバシステム、スケジューラ装置
CN116028544B (zh) 基于openstack的定时任务动态添加方法
US11210129B2 (en) Extended architecture as a service to integrate resource and transaction managers

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20170419

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20170509

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170804

A524 Written submission of copy of amendment under article 19 pct

Free format text: JAPANESE INTERMEDIATE CODE: A524

Effective date: 20170804

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20170905

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20171003

R150 Certificate of patent or registration of utility model

Ref document number: 6223569

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250