JP5297370B2 - プロセス中心型プログラムにおける非同期フォールト処理 - Google Patents

プロセス中心型プログラムにおける非同期フォールト処理 Download PDF

Info

Publication number
JP5297370B2
JP5297370B2 JP2009502791A JP2009502791A JP5297370B2 JP 5297370 B2 JP5297370 B2 JP 5297370B2 JP 2009502791 A JP2009502791 A JP 2009502791A JP 2009502791 A JP2009502791 A JP 2009502791A JP 5297370 B2 JP5297370 B2 JP 5297370B2
Authority
JP
Japan
Prior art keywords
fault
work items
state
activity
identified
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
JP2009502791A
Other languages
English (en)
Other versions
JP2009532760A (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.)
Microsoft Corp
Original Assignee
Microsoft Corp
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 Microsoft Corp filed Critical Microsoft Corp
Publication of JP2009532760A publication Critical patent/JP2009532760A/ja
Application granted granted Critical
Publication of JP5297370B2 publication Critical patent/JP5297370B2/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
    • 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/0633Workflow analysis

Landscapes

  • Business, Economics & Management (AREA)
  • Human Resources & Organizations (AREA)
  • Engineering & Computer Science (AREA)
  • Economics (AREA)
  • Strategic Management (AREA)
  • Entrepreneurship & Innovation (AREA)
  • Operations Research (AREA)
  • Physics & Mathematics (AREA)
  • Educational Administration (AREA)
  • Marketing (AREA)
  • Development Economics (AREA)
  • Quality & Reliability (AREA)
  • Tourism & Hospitality (AREA)
  • Game Theory and Decision Science (AREA)
  • General Business, Economics & Management (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)
  • Stored Programmes (AREA)
  • Debugging And Monitoring (AREA)

Description

プロセス指向型(process-oriented)またはプロセス中心型(process-centric)のプログラムは、実世界の出来事をモデル化する複雑な命令を処理できるまでに発展した。プロセス中心型のプログラムは、実世界のプロセスをミラーし、実世界のエンティティ間の相互作用をミラーする。既存のシステムは、ビジネス問題をモデル化することによりビジネス問題を高水準のワークフロー(workflows)にマッピングしようとする。しかし、実世界のワークフローは、(a)実行およびモデル化の複雑さ、(b)設計時のフローの構造に関する知識、(c)静的に定義されるのか、またはアドホック/動的なのか、(d)ライフサイクルにおけるさまざまな時点でのフローのオーサリングおよび編集の容易さ、(e)ビジネス・ロジックとコア・ワークフロー・プロセスとの弱いまたは強い関連など、さまざまな特質が異なる。既存のモデルは、これらすべての要因に対応することはできない。
さらに、ほとんどの既存のワークフロー・モデルが、言語ベースのアプローチ(例えば、BPEL4WS、XLANG/S、およびWSFL)またはアプリケーション・ベースのアプローチに基づいている。言語ベースのアプローチは、定義されたコンストラクト(construct:構造体)のクローズド集合を有する高水準のワークフロー言語であり、これにより、ユーザ/プログラマに対するワークフロー・プロセスのモデル化が容易になっている。ワークフロー言語は、言語構文のクローズド集合に対するすべての意味情報を備え、これにより、ユーザはワークフロー・モデルを構築することができる。しかし、言語は、開発者側で拡張することはできず、ワークフロー・モデルを構成するプリミティブのクローズド集合となっている。その言語は、ワークフロー・システムのベンダによって出荷される言語コンパイラに結び付けられている。ワークフロー・システム製品のベンダのみが、将来の製品バージョンにおいて新しい言語構文の集合を加えて言語を拡張することによりモデルを拡張することができる。このため、多くの場合、言語に関連付けられたコンパイラのアップグレードが必要となる。さらに、その言語は、通常、他のプログラムで容易かつ効率よく使用できる機能またはオペレーションを宣言的に公開せず、または定義しない。
アプリケーション・ベースのアプローチは、アプリケーション内に分野固有の問題を解決するためのワークフロー機能を備えるアプリケーションである。これらのアプリケーションは、本当に拡張可能であるとはいえず、またプログラム可能なモデルも存在しない。
さらに、既存のアプローチでは、複雑さ、先見性、動的ワークフロー、オーサリングの容易さ、ならびにビジネス・ロジックおよびコア・ワークフローとの関連度の強さ、についての課題が適切に扱えない。さまざまなクラスのワークフローをモデル化するビジュアル・ワークフロー・デザイナ(visual workflow designer)を構築するのに利用できる、拡張可能、カスタマイズ可能、および再ホスト可能な(re-hostable)ワークフロー・デザイナ・フレームワークが存在しない。既存のシステムでは、ユーザが、グラフィックスを利用してワークフロー・プロセスの設計を行い、且つ、開発者が選択したプログラミング言語によるビジネス・ロジックを関連付けることができるアプリケーション短期開発(RAD)スタイルのワークフロー設計の体験が欠けている。
また、ワークフロー・プロセスでは、ワークフロー・プロセス・モデルの複数のステップにまたがる、分野横断的に直交し、かつ複雑に入り組んだ関係(concerns)を取り扱う。例えば、ワークフロー・プロセスの一部が長い実行トランザクションに関係するように設計され、一方では、同じプロセスの他の部分は、並列実行用に、または共用リソースにアクセスするように、設計される。設計上の欠点に起因して、既存のシステムでは、ユーザが、アクティビティを同期させて実行するように、またはインターリーブして実行するように設計できる実行スレッドのインターリーブを提供することができない。同じワークフロー・プロセスのさらに他の部分では、追跡を必要とし、一方では、他の部分ではビジネスまたはアプリケーション・レベルの例外を扱う。したがって、特定のビヘイビアをワークフロー・プロセスの1つまたは複数の部分に適用するニーズが存在する。
いくつかのワークフロー・モデル化のアプローチは、すべての例外および人間の介入を含めて、ビジネス・プロセス全体の完全なフロー・ベースの記述を必要とするので実用的でない。これらのアプローチのいくつかは、例外が発生したときの追加機能を用意しているが、他のアプローチでは、ビジネス・プロセスをモデル化するフロー・ベースのアプローチの代わりに、制約ベースのアプローチを、排他的に、採用している。既存システムでは、フロー・ベースまたは制約ベースのアプローチのいずれかを実装している。このようなシステムは、ビジネスの数多くの一般的状況をモデル化するのにあまりにも柔軟性がなさ過ぎる。また、これらのシステムには、例外またはキャンセルを非同期で扱う機能を欠いている。
本発明の実施形態では、ワークフロー中のアクティビティ(activity)の実行存続時間を定義する状態オートマトンにフォールト状態(faulting state)を含むことにより、非同期のフォールトまたは例外の処理を可能にしている。このフォールト状態を含むことにより、本発明の態様では、開発者またはプログラムが、例外またはフォールト処理用のプログラムを宣言的に設計でき、この結果、プログラムまたはアクティビティの一部分はフォールト状態のフォールト処理に入ることができる、一方、プログラムまたはアクティビティの他の部分は、その例外またはフォールト・イベントによって影響されないようにすることができる。
本発明の別の実施形態では、フォールト処理の通知を伝搬または送信することができる。さらに別の実施形態では、通知のそのような伝搬または送信は、抑制されたりまたは禁止されたりすることができる。加えて、さらに別の実施形態では、ポスト・フォールト・オペレーションまたはポスト例外オペレーションの対応に関するユーザからの入力に応答することができる。
上述の概要は、以下の「発明を実施するための最良の形態」でさらに説明される概念の一部を簡略な形で紹介するために供されている提供されている。この概要は、特許請求の範囲に記載された主題についての重要な機能または本質的な機能を特定することは意図されておらず、また特許請求の範囲に記載された主題の範囲を決定する際に参考にされることも意図されていない。
他の特徴(features)は、一部は明白であり、また一部は以下で明示される。
付録Aは、本発明の実施形態による、例外を宣言的に発生させる(declaratively raising of an exception)例示的な実施態様を示している。
対応する参照文字は、図面全体にわたって対応する部分を表す。
まず図1を参照すると、ブロック図で、プロセス中心型のアクティビティのためのプログラム、例えば、ワークフロー、を設計するための既存のプログラミング・パラダイムが示されている。例えば、この図は、被管理実行環境(managed execution environment)のレベルが最高位であり、処理装置が最下位である3レベルを有する仮想化モデルの既存プログラム・パラダイムを示している。このプログラミング設計システムでは、被管理実行環境のレベルであっても、プログラム、特にワークフロー・プロセス、を扱うプロセス中心型プログラムは、ワークフロー内のプロセス間の複雑な相互作用に対応する機能および効率性に欠けている。
当業者には、ソフトウェアまたはアプリケーション・プログラムの設計には特定の制約が関連付けられていることが知られている。この例では、オペレーティング・システム・ソフトウェア・プログラム104を書くにあたって、そのプログラミング・コードまたはルーチンは、コンピューティング・アーキテクチャのタイプ(例えば、IBM(登録商標)互換、APPLE(登録商標)コンピュータ、または他のシステム)に固有な、処理装置102のタイプまたは構成、または他の制約に依存する。さらに、プログラム言語は、典型的には、スタック、ヒープ、スレッドベース、またはオペレーティング・システム104が正しく機能するための他のハードウェア固有の構造、などのデータ構造を正確に明示し、利用する必要がある。
複雑なワークフロー・プロセスを扱う場合、既存のアプリケーションは、あるプログラミング言語で書かれたプログラムが別のプログラミング言語で書かれた他のプログラム内の関数を呼び出すことができる被管理実行環境106(例えば、プログラムが関数または共通のオブジェクト指向のクラスを共用できるランタイム環境)の概念を使用する。そのような実行環境では、異なるプログラミング言語の形のプログラムは、中間言語にコンパイルされ、この結果、被管理実行環境106は、パラメータ、引数、またはスキーマもしくは関数を個々のプログラムに公開できるようになっており、それによりプログラムが、相互に対話することができる。
この実行環境106はプログラム間に共通の通信環境を作成するが、実行環境106はさまざまな厳格な要件を有しており、これらは、プロセス中心型プログラムの複雑さおよび機能を扱うのに適さない可能性がある。例えば、実行環境106では、プログラムは特定のファイル・フォーマットに準拠する必要がある。また、実行環境106では、プログラム内の関数またはオペレーションが固定の関数セット、または実行環境106によって定義された関数のクラスを使用する必要がある。
本発明の実施形態は、既存のプログラミングモデルの欠点を克服するために、図2の拡張可能な土台(foundation)またはフレームワーク202の上に構築される。任意のプログラミング言語で書かれ、任意のファイル・フォーマットで作成されたプログラムを許容することによって、本発明の態様は、プログラム開発者が、特定の関数を用いてプログラムを、その機能性および仕様を犠牲にすることなく、設計することを可能にする。ワークフローのタスクまたはプロセスなどのアクティビティを、ワークフローのフレームワークで実行されるベースクラスとして、定義することにより、開発者は、分野固有(例えば、医療産業、金融産業などにおけるプログラムなど、特定の実行環境)のオペレーション・コード(これ以降は「opコード」)を、既存の実行環境における、固定した、ハード・コーディングされた、柔軟性のない、あらかじめ仕組まれた関数セット(fixed set of functions)、またはアクティビティ・クラスに固執することなく、容易かつ効率よく構築できる。さらに、本発明の態様を組み入れたワークフローの土台は、任意の既存のフレームワーク(例えば、被管理実行環境、オペレーティング・システム環境、またはハードウェア処理装置レベル)の最上部に階層化された継続ベースのランタイムである。
本発明の態様では、そのワークフロー内のアクティビティがそのワークフロー設計のその表現から構築できる場合に限り、ワークフローの設計を任意の様式または表現(例えば、フローチャート、図、番号付き説明など)で表記できるようにすることによって、アクティビティを特定のファイル・フォーマットで定義しなければならないという制約を解除する。
さらに、ワークフローのフレームワークまたは土台は、より下位レベル(例えば、OS)から、または他のフォーマット(例えば、中間言語)で書かれた例外発生関数から、生じたフォールトまたは例外を扱うことができる。
図3は、本発明の実施形態によるワークフロー300の簡単な図を示している。例えば、ワークフロー300は、買い注文を処理するためのワークフローと考えることができ、この買い注文ワークフロー300は、買い注文の受信、顧客への確認の送信、管理者による買い注文の承認などのプロセスまたはアクティビティを含むことができる。
ワークフロー300は、開始ポイント302から開始できる。例えば、買い注文ワークフローの開始ポイント302は、顧客から注文を受信することができる。ワークフロー300は、条件ステートメント304(「IFステートメント」、「WHILEステートメント」など)を含むことも可能で、その条件ステートメントは、さらに条件ステートメント306および308に細分割されることができる。ワークフロー300は、並列構造310を含むこともでき、並列構造310は、1つまたは複数のシーケンスまたはアクティビティ312をさらに含む。例えば、並列構造310は、在庫の検査および利用できる運送業者の更新などのアクティビティを含み、これらは、並列に処理される。示された実施例では、「Eメールを送信する」および「承認を取得する」などのアクティビティは、並列に処理されることができる。「アクティビティをここにドロップする」316で、ユーザはワークフロー300にさらにアクティビティを追加または補足することができる。ワークフロー300を完了すると、そのプロセスまたはアクティビティは、完了ステップまたは完了ポイント314で終了する。
一実施形態では、アクティビティは、ツリー構造(図5を参照)500または他の実行シーケンスの中で階層的に配置することができる。例えば、1つのアクティビティが、それに関連付けられた2つ以上のワーク・アイテムを含む複合アクティビティであることができる。別の実施形態では、アクティビティのコレクションが複合アクティビティであることができる。アクティビティのメソッドまたはオペレーションは、2つの子またはリーフ・ノード504および506を有するルート・ノード502にあることができる。子ノード504および506のアクティビティのメソッドまたはオペレーション(例えば、それぞれ、ワーク・アイテム1およびワーク・アイテム2)は、階層構造に従って実行されることができる。さらに、子ノード504および506は、実行すべきそれぞれのワーク・アイテムを有する他の子ノードを含むことができる。
別の実施形態では、アクティビティには、単純アクティビティ、コンテナ・アクティビティ、およびルート・アクティビティのうちの1つまたは複数の種類がある。この実施形態では、そのモデルには、1つのルート・アクティビティがあり、ルート・アクティビティの内側には、ゼロまたは幾つかの単純アクティビティまたはコンテナ・アクティビティがある。コンテナ・アクティビティは、単純またはコンテナ・アクティビティを含むことができる。ワークフロー・プロセス全体は、より高位のワークフロー・プロセスを構築するアクティビティとして使用することができる。さらに、アクティビティは、中断可能または中断不可にできる。中断不可複合アクティビティは、中断可能アクティビティを含まない。中断不可アクティビティには、アクティビティにブロックさせるサービスはない。
さらに、アクティビティおよびそのアクティビティに含まれるワーク・アイテムを実行するとき、ワークフロー・フレームワークまたは実行コンテクストもしくは実行環境は、それぞれのワーク・アイテムの範囲または境界を定義する。この範囲または境界は、例えば、そのワーク・アイテムによってアクセスされる共用データまたは共用リソース、関連した特性、ハンドラ、制約、および自律エージェント(autonomous agent)間の対話、などの情報を(例えば、データ、メタデータなどの形で)含み、公開する。また、各アクティビティは、任意のプログラミング言語で書かれたユーザ・コードによって構成できる。例えば、このユーザ・コードは、特定の分野または実行環境で書かれたビジネス・ロジックもしくはアプリケーション・ロジックまたはルールを表すことができる。それぞれのアクティビティは、ユーザ・コードでの実行へのインターセプト前フック(pre-interception hook)およびインターセプト後フック(post-interception hook)をサポートできる。それぞれのアクティビティは、関連付けられたランタイム実行意味論およびビヘイビア(例えば、状態管理、トランザクション、イベント処理、および例外処理)を有する。アクティビティは、他のアクティビティと状態またはリソースを共有できる。さらにアクティビティは、プリミティブなアクティビティであってもよいし、または複合アクティビティにグループ化することもできる。プリミティブつまり基本アクティビティは、下位構造(例えば、子アクティビティ)を持たず、したがって、ツリー構造内のリーフ・ノードである。複合アクティビティは、下位構造を含む(例えば、複合アクティビティは、1つまたは複数の子アクティビティの親である)。
図4は、本発明の実施形態によるワークフロー・アクティビティを処理するためのシステム400を示した図である。システム400はプロセッサ402を備えており、プロセッサ402は、1つの処理装置または複数の処理装置の集合することができる。システム400は、プロセッサ402によってアクセス可能なデータを保管するためのストレージまたはメモリ・エリア404も備えている。一実施形態では、システム400は、1つまたは複数のプロセッサまたは処理装置を有するコンピュータ(例えば、プロセッサ402)、およびシステム・メモリを含めた各種システム・コンポーネントをプロセッサ402に結合するために他のコンポーネントを有するシステム・メモリ(メモリエリア404)を備えることができる。
一実施例では、メモリ・エリア404はコンピュータ可読媒体を備えることができ、その媒体は、コンピュータ可読命令、データ構造、プログラム・モジュールまたは他のデータなどの情報を格納するための方法または技術で実装された、揮発性、不揮発性、取り外し可能、または取り外し不可の媒体とすることができる。例えば、コンピュータ・ストレージ媒体には、RAM、ROM、EEPROM、フラッシュ・メモリまたは他のメモリ技術、CD−ROM、デジタル多用途ディスク(DVD)または他の光ディスク・ストレージ、磁気カセット、磁気テープ、磁気ディスク・ストレージまたは他の磁気ストレージ・デバイス、または所望の情報を格納するために使用でき、システム400によりアクセスできる他の媒体がある。メモリ404は、コンピュータ可読命令、データ構造、プログラム・モジュール、または搬送波もしくは他のトランスポート・メカニズムなどの変調データ信号の形の他のデータ、を具現する通信媒体および任意の情報配信媒体を備えることもできる。当業者は、信号内の情報を符号化するなどの方法により特性のうちの1つまたは複数が設定または変更される変調データ信号を熟知している。有線ネットワークまたは直接配線接続などの有線媒体、ならびに音響、RF、赤外線、および他の無線媒体などの無線媒体は、通信媒体の例である。上記のいずれの組合せもコンピュータ可読媒体の範囲に含まれる。
例えば、メモリ・エリア404は、ワークフロー(例えば、ワークフロー300)での処理用の複数のアクティビティ406を格納する。複数のアクティビティ406のうちのそれぞれが1つまたは複数のワーク・アイテムを含み、それらのワーク・アイテムは、ツリー構造(図5を参照)などの階層構造内で編成できる。複数のアクティビティ406を処理するとき、プロセッサ402は、アクティビティの編成済みの集合をセットアップするように構成されているスケジューラ408をアクセスまたは実行する。
例えば、プロセッサ402は、コンポーネント、つまりスケジューラ408などのコンピュータ実行可能命令の集合を介して複数のアクティビティ406内のワーク・アイテムにアクセスし、ワーク・アイテム群422をキュー410にエンキューする、つまり保管する。ディスパッチャ412は、プロセッサ402によってアクセス可能であり、ワーク・アイテム群422を実行用にディスパッチする。例えば、ワーク・アイテム422−1は、アクティビティ・メソッドまたはアクティビティ・オペレーション424、ルーチン、または「ユーザからの入力を要求する」機能を実行するためのコードの集合を含んでいる。1つまたは複数の他のアクティビティ・メソッド、アクティビティ・オペレーション、ルーチン、またはコードを、本発明の範囲から逸脱することなく、それぞれのワーク・アイテム422に含むことができる。
ワーク・アイテム群422がディスパッチャ412によってディスパッチされると、プロセッサ402は、414でワーク・アイテム群422に入っているそれぞれのメソッド424を実行する。ワーク・アイテム422−1の例では、プロセッサ402は、要求された情報またはデータを入力するように、ユーザ・インターフェース(UI)を介してユーザに要求することができる。別の実施形態では、プロセッサ402は、ユーザからの入力を要求するために外部データソースに接続、つまりアクセスすることができる。アクティビティ・メソッドまたはアクティビティ・オペレーション424が完了すると、プロセッサ402は、416でワーク・アイテム群422の実行を終了する。一実施形態では、プロセッサ402は、418で、データ記憶装置420へのワーク・アイテム群の実行状態を非活性化する(passivate)。
別の実施形態では、プロセッサ402は、図6で示されたオートマトンなどの状態オートマトンによりワーク・アイテム群422を実行する。図6は、本発明の実施形態によるアクティビティに関連付けられたワーク・アイテム群の処理状態を記載した例示的な状態オートマトン600を示した図である。一実施例では、この状態オートマトン600は、アクティビティの実行持続時間(execution lifetime)を定義する。一実施例では、状態オートマトン600は、(図4に示されているとおり)初期化(initialized)状態、実行(executing)状態、およびクローズド(closed)状態を含むことができる。別の実施形態では、状態オートマトン600は、初期化状態602、実行状態604、キャンセル(canceling)状態606、フォールト(faulting)状態608、補正(compensating)状態610、およびクローズド状態612を含む。
例えば、状態オートマトン600は、ワークフロー・アクティビティ内のワーク・アイテム(例えば、ワーク・アイテム群422)の実行の処理フローを記載する。図4に示されているワーク・アイテム422−1は、キュー410にエンキューされると、まず初期化される。ワーク・アイテム422−1は、実行状態(例えば、図6の実行状態604)で実行される前に、キュー410からディスパッチャ412にデキュー、つまり移動させられる。ワーク・アイテム422−1の実行中のパラメータまたは条件に応じて、ワーク・アイテム422−1はキャンセル状態606(例えば、図4のキャンセル状態426)またはフォールト状態608に進むことができる。一実施形態では、ワーク・アイテム422−1は、キャンセル状態606からフォールト状態608に進むことができる。別の実施形態では、補正状態610が、フォールトまたは例外が発生したときに実行すべきオペレーションまたは関数の集合を記載する。
例えば、ワーク・アイテム(例えば、ワーク・アイテム422−1)の実行中に、関数のパラメータが欠落しているなどの、例外が発生すると仮定する。システム400は、ワーク・アイテム422−1をフォールト状態608に遷移させる。そのようにすると、システム400は、補正状態610でガーベッジ・コレクション(例えば、キャッシュまたはメモリから、前に実行されたオペレーションの一部を除去すること、パラメータ値を初期化(reset)すること、など)オペレーションも実行してから、ワーク・アイテム422−1をクローズド状態612に遷移させる。例えば、補正状態610内のワーク・アイテムは、他のワーク・アイテムを実行するために前に使用されたデータを復元するなどのオペレーションをトリガできる。クローズド状態612は、アクティビティ(例えば、図5のアクティビティ500)の実行が完了したこと表す。
一実施形態では、状態オートマトン600は複合アクティビティ内の複数のワーク・アイテム間の関係(relationship)を確立する。例えば、その関係ルールの1つは、クローズド状態612に遷移する前、アクティビティ・ツリーのルート・ノード内のメソッドもしくはワーク・アイテム、その子ノード内のすべてのワーク・アイテムは、初期化状態602またはクローズド状態612でなければならないということを含むことができる。別のルールは、アクティビティ・ツリーの子ノード内のワーク・アイテムを実行状態604に遷移させるには、ルート・ノードのワーク・アイテムはすでに実行状態604でなければならないことを要求する。
別の実施形態では、本発明の実施形態の範囲から逸脱することなく、状態オートマトン600内で1つまたは複数の追加状態を定義することができる。
次に図7Aから7Eを参照すると、これらのブロック図は、本発明の実施形態によるワークフロー内のフォールト・イベントの非同期処理を示している。単純化のみが目的であって、限定するわけではないが、図7Aは、複合アクティビティ702を示し、これは、ツリー構造に編成された3つの子ワーク・アイテム、すなわちトランザクション_1 704、トランザクション_2 706およびトランザクション_3 708を含んでいる。図に示されているように、ルート・アクティビティ702は、「WRITE TEXT ON DISPLAY(ディスプレイ上にテキストを書く)」メソッドを含んでいる。上記のワーク・アイテムのアクティビティのメソッドまたはオペレーションは、以下も含む。
Figure 0005297370
図7Bにおいて、トランザクション_1 704、トランザクション_2 706およびトランザクション_3 708は、実行状態710に遷移している。図に示されているように、トランザクション_1 704は、ユーザ430に対してディスプレイ(例えば、ユーザ・インターフェース428)上でテキスト(「1 and 2」)を挿入することにより、インクルードされたオペレーション(included operations)を実行する。
実行状態710のときに、フォールト・イベント722または例外が発生した。このフォールト・イベント722は、データの欠落、実行フォールト、データ記憶装置への不正確なアクセス、などに対する警告の通知を含むことができる。この実施例では、トランザクション_1 704は、フォールト・イベント722を処理するためのhandleFault()関数716を含む。一実施形態では、このhandleFault関数716は、オペレーティング・システムまたは被管理実行環境などの他の実行環境でのフォールト処理のための「catch」関数に類似している。この結果、handleFault関数716または「catch」ハンドラへのフォールトの伝搬またはディスパッチは非同期である。
フォールト・イベント722が発生すると、トランザクション_1 704はフォールト状態712に遷移し、次に、トランザクション_1 704は、クローズド状態714に遷移させられる。一実施形態では、フォールト・イベント722に反応して、handleFault()関数716が呼び出され、処理のためにキュー(図示せず)に置かれる。
例外の伝搬および処理用に洗練されたこのプロトコル(well-defined protocol)により、代替実施形態は複数の例外を処理することができ、複数の例外は、例外の伝搬が通常のプログラム実行の間にインターリーブされるようにスケジュールできる。
図7Cにおいて、トランザクション_2 706およびトランザクション708は、実行状態710になっている。トランザクション_1 704の実行と同様に、トランザクション_2 706は、インクルードされたオペレーションを実行する。この実施例では、ディスプレイ上にテキスト(「3 and 4」)が挿入される。さらに、トランザクション_2 706は、フォールト・イベント722を処理するために、トランザクション_1 704のhandleFault()関数716と同様のhandleFault()関数を含む。
代替実施形態では、handleFault()関数716は、実行階層またはアクティビティの実行階層構造内の関数として、実行状態710の残りのワーク・アイテムに通知720を伝搬または送信する。例えば、トランザクション_1 704がフォールト状態712になっているとき、handleFault()関数716は通知720(例えば、「throw」関数)を伝搬することができて、それにより、親アクティビティ_1 702のhandleFault()関数が通知720を、それがフォールト・イベントまたは例外であるかのように、処理できるようになる。一実施形態では、子アクティビティは、throw関数のターゲットをアクティビティ・ツリー内の親に限定することができる。別の実施形態では、例外処理は、アクティビティのツリー状の構造に堅く関連付けられる、あるいは結び付けられることができる。
フォールト・イベントを処理するためにフォールト状態712を確立することにより、本発明の実施形態は非同期のフォールト処理または例外処理を可能にし、実行状態710の残りのワーク・アイテムまたはアクティビティは引き続いて実行される。さらに、別の代替実施形態は、フォールト・イベントの処理のスケジューリングを可能にする。例えば、通知720に応答して、トランザクション_2 706は、フォールト状態712に遷移させられる前にスケジューラ・キュー718に置くことができる。別の実施形態では、実行状態710の他のワーク・アイテムまたはアクティビティが引き続いて実行されるように、通知720は抑止できる。一実施形態では、トランザクション_1 704は、通知720を伝搬または送信した後で、クローズド状態714に遷移する。さらに別の実施形態では、フォールトの伝搬および処理は、非活性化(passivation)サイクルをまたいで持続する。
図7Dにおいて、トランザクション_3 708は、実行状態710で実行中である。例えば、トランザクション_3 708のインクルードされたオペレーションは、テキスト(「5 and 6」)を挿入し、ディスプレイ上にテキスト(「END」)を挿入する前に180秒休止する。しかし、インクルードされたオペレーションは、フォールト処理のための関数を組み込んでいない。その結果、インクルードされたオペレーションが完了すると、図7Eにおいて、トランザクション_3 708は、クローズド状態714に遷移させられる。さらに、トランザクション_2 706も、スケジューラ・キュー718からフォールト状態712にデキューされた後、クローズド状態714に遷移する。
限定ではないが、付録Aは、本発明の実施形態による、例外を宣言的に発生させる例示的な実施態様を示している。一実施形態では、プログラマまたは開発者は、特定のタイプのフォールト・イベントまたは例外を処理するためのフォールト・ハンドラを設計することができる。さらに別の実施形態では、ワークフロー内のワーク・アイテムまたはアクティビティが関数を含まないことがあったり、またはフォールト・イベントを処理できなかったりする。この実施形態では、ワークフロー実行環境はフォールト・イベントを処理する。さらに別の実施形態では、図4のユーザ430へのUI 428を介してユーザに1つまたは複数のフォールト処理後オペレーションが提供できる。
図7Aから7Eは、実行状態のスナップ・ショットまたは状態オートマトンの一部分を順次に示しているが(例えば、トランザクションは順次に実行される)、実行状態のワーク・アイテムは、本発明の範囲から逸脱することなく、同時にまたは実質的に同時に処理できる。
図8は、本発明の実施形態によるワークフローのアクティビティに関するフォールト・イベントを非同期に処理する方法を示したフロー図である。例えば、図8に示された方法は、図9に示されたようなコンピュータ可読媒体に記憶されるコンピュータ実行可能命令として表すことができる。例えば、状態マシン902は、802で、アクティビティに対して状態オートマトン(例えば、状態オートマトン600)を定義し、この状態オートマトンは、少なくとも実行状態、フォールト状態、およびクローズド状態を含んでいる。アクティビティ・コンポーネント904は、804で、複数のワーク・アイテムを含むようにアクティビティを定義する。定義されたアクティビティは、その複数のワーク・アイテムに関して実行階層または実行シーケンス(例えば、ツリー構造)を有する。それぞれのワーク・アイテムは、アクティビティの一部分を実行するためのオペレーションを含む。
スケジューラ・コンポーネント906は、806で、それぞれのワーク・アイテムを実行状態に遷移させる。実行コンポーネント908は、808で、実行状態の遷移済されたワーク・アイテムのインクルードされたオペレーションを実行する。810で、識別コンポーネント910は、フォールト・イベントに応答して、遷移されたワーク・アイテムのうちの1つまたは複数を、実行階層およびインクルードされたオペレーションに基づいて識別する。812で、フォールト・ハンドラ912は、フォールト・イベントに反応して識別コンポーネントによって識別されなかった残りの遷移されたワーク・アイテムのインクルードされたオペレーションを実行しながら、1つまたは複数の識別されたワーク・アイテム内のフォールト処理オペレーション(例えば、handleFault()関数716)を呼び出して、1つまたは複数の識別されたワーク・アイテムをフォールト状態に遷移させることにより、フォールト・イベントを非同期に処理する。一実施形態では、フォールト・ハンドラ912は、1つまたは複数の識別されたワーク・アイテムをフォールト状態に遷移させることにより、フォールト・イベントを非同期に処理する。さらに別の実施形態では、フォールト・ハンドラ912は、1つまたは複数の識別されたワーク・アイテムをスケジューラ・キュー(例えば、スケジューラ・キュー718)にエンキューすることにより、フォールト・イベントを非同期に処理する。
代替実施形態では、コンピュータ可読媒体900は、1つまたは複数の識別されたワーク・アイテムから残りの遷移済みワーク・アイテムに通知を送信するためのフォールト伝搬コンポーネント914を、アクティビティの実行階層の関数としてさらに含む。通知720は、識別された1つまたは複数のワーク・アイテムがフォールト状態であることを示している。さらに別の実施形態では、コンピュータ可読媒体900は、送信された通知に反応して、残りの遷移済みワーク・アイテムを実行状態からフォールト状態へ遷移させるための遷移コンポーネント916をさらに含む。
コンピュータ可読媒体は、対象のアクティビティに関連付けられたデータを復元または補正するための補正コンポーネント918を、さらに別の代替実施形態でフォールト・イベントを非同期に処理する関数としてさらに含む。この通知を残りの遷移されたワーク・アイテムに送信することを抑止するための禁止コンポーネントがコンピュータ可読媒体900の一部であってもよい。
図4で示されたシステム400などの例示的なコンピューティング・システム環境に関連付けて説明されたが、本発明の実施形態は、多くの他の汎用または専用のコンピューティング・システムの環境もしくは構成で稼働可能である。このコンピューティング・システム環境は、本発明の態様の使い方または機能の範囲に関して何らかの限定を示唆することは意図されていない。さらに、このコンピューティング・システム環境は、例示の動作環境で示されたコンポーネントのいずれの1つまたはその組合せに関して何らかの依存関係または要件があると解釈すべきではない。本発明の態様での使用に適する可能性がある、よく知られているコンピューティング・システム、環境、および/または構成は、パーソナル・コンピュータ、サーバ・コンピュータ、ハンドヘルドまたはラップトップ・デバイス、マルチ・プロセッサ・システム、マイクロ・プロセッサ・ベースのシステム、セットトップボックス、プログラム可能消費者電子機器、携帯電話、ネットワークPC、ミニ・コンピュータ、メインフレーム・コンピュータ、上記のシステムまたはデバイスのいずれかを備えた分散コンピューティング環境などを含むが、それらに限定されない。
本発明の実施形態は、1つまたは複数のコンピュータまたは他のデバイスで実行される、プログラム・モジュールなどのコンピュータ実行可能命令という広い意味合いで説明することができる。一般的には、プログラム・モジュールには、ルーチン、プログラム、オブジェクト、コンポーネント、および特定のタスクを実行する、または特定のアブストラクトのデータタイプを実装したデータ構造があるが、それらに限定されない。本発明の態様は、通信ネットワークを介してリンクされたリモート処理デバイスによってタスクが実行される分散コンピューティング環境でも実施できる。分散コンピューティング環境では、プログラム・モジュールは、メモリ・ストレージ・デバイスを含めて、ローカルおよびリモート・コンピュータの記憶媒体に置くことができる。
システム400は、稼働時、本発明の態様を実装する、図8などの図に示されたようなコンピュータ実行可能命令を、実行する。
本明細書で図示および説明された本発明の実施形態でのオペレーションの実行または実施の順序は、特に断りがない限り、必須のものではない。すなわち、オペレーションは、特に断りがない限り、任意の順序で実行することができ、本発明の実施形態は、本明細書で開示されているよりも多いまたは少ないオペレーションを組み込んでよい。例えば、特定のオペレーションを別のオペレーションの前、別のオペレーションと同時、または別のオペレーションの後で実行または実施することは、本発明の態様の範囲内であると考えられる。
本発明の実施形態は、コンピュータ実行可能命令を使って実装できる。コンピュータ実行可能命令は、1つまたは複数のコンピュータ実行可能コンポーネントまたはモジュールに編成できる。本発明の態様は、そのようなコンポーネントまたはモジュールを任意の数だけ使って任意の編成で実装できる。例えば、本発明の態様は、本明細書の図に示され、説明されている特定のコンピュータ実行可能命令、または特定のコンポーネントもしくはモジュールに限定されない。本明細書の他の実施形態は、本明細書の図に示され、説明されているものとは異なるコンピュータ実行可能命令、またはそれより多いまたは少ない機能を有するコンポーネントを含んでよい。
本発明の態様または本発明の実施形態の要素を紹介する際に、英文中の「a」、「an」、「the」、および「said」という冠詞、したがって和文中の「1つの」、「その」、「前記」は、それらの要素が1つまたは複数あることを意味することが意図されている。「備える」、「含む」、および「有する、格納する、含む、備える」という用語は、包含的であることが意図され、リストされた要素以外にさらに要素がありうることを意味する。
本発明の態様を詳しく説明したので、「特許請求の範囲」で定義される本発明の態様の範囲から逸脱することなく、変更および変形が可能であることが明らかであろう。本発明の態様の範囲から逸脱することなく上記の構成、製品、および方法にさまざまな変更を加えることができるので、上記の説明に含まれ、付属の図面に示されているすべての事柄は、例示しているのであって、限定する意味はないと解釈するものとする。
付録A
Figure 0005297370
Figure 0005297370
既存のプログラミング・パラダイムを示したブロック図である。 本発明の実施形態によるワークフロー・デザイン・フレームワークの仮想化を示した例示的なブロック図である。 本発明の実施形態による例示的なワークフローを示した例示的な図である。 本発明の実施形態によるワークフロー・アクティビティを処理するためのシステムの例示的なコンピューティング環境を示した図である。 本発明の実施形態によるワークフロー・アクティビティの階層構造を示した図である。 本発明の実施形態によるアクティビティの実行持続時間を記載した例示的な状態オートマトンを示す図である。 本発明の実施形態によるワークフローのフォールト・イベントの非同期処理を示したブロック図である。 本発明の実施形態によるワークフローのフォールト・イベントの非同期処理を示したブロック図である。 本発明の実施形態によるワークフローのフォールト・イベントの非同期処理を示したブロック図である。 本発明の実施形態によるワークフローのフォールト・イベントの非同期処理を示したブロック図である。 本発明の実施形態によるワークフローのフォールト・イベントの非同期処理を示したブロック図である。 本発明の実施形態によるワークフローのアクティビティに関するフォールト・イベントを非同期に処理する方法を示したフロー図である。 本発明の態様が格納できる例示的なコンピュータ可読媒体を示したブロック図である。

Claims (20)

  1. ワークフローのアクティビティについてフォールト・イベント非同期に処理するコンピュータ実行方法であって、前記ワークフローは、コンピュータ装置によって処理され、前記方法は、
    アクティビティ対して状態オートマトン定義するステップであって、前記状態オートマトンは、少なくとも実行状態フォールト状態およびクローズド状態を含み、前記状態オートマトンは、前記アクティビティ実行持続時間を分類する、ステップと、
    前記アクティビティ複数のワーク・アイテム含むように定義するステップであって、前記定義されるアクティビティは、前記複数のワーク・アイテムについての実行階層を有し、前記複数のワーク・アイテムそれぞれは前記アクティビティ一部分を実行するためのオペレーションをインクルードする、ステップと、
    前記ワーク・アイテムそれぞれを前記実行状態に遷移させるステップと、
    前記実行状態に遷移されたワーク・アイテム前記インクルードされたオペレーションを実行するステップと、
    1つまたは複数のワーク・アイテムに関連付けられる前記フォールト・イベントを受信するステップと、
    受信された前記フォールト・イベントを処理するフォールト処理オペレーションに応答して、前記遷移されたワーク・アイテムのうちの1つまたは複数を前記実行階層関数および前記インクルードされたオペレーションとして識別するステップであって、前記識別された1つまたは複数の前記遷移されたワーク・アイテムのそれぞれは、前記フォールト処理オペレーションを含む、ステップと、
    前記フォールト・イベント応答して、識別されなかった残りの遷移されたワーク・アイテムのインクルードされたオペレーションを実行しながら、受信された前記フォールト・イベントに応答して前記1つまたは複数の識別された前記遷移されたワーク・アイテムのそれぞれに関連付けられる前記フォールト処理オペレーションを実行し、前記1つまたは複数の識別されたワーク・アイテム前記フォールト状態に遷移させることにより前記フォールト・イベント非同期に処理するステップであって、前記フォールト状態にある前記1つまたは複数の識別されたワーク・アイテムは、前記フォールト処理オペレーションの実行が完了した後、前記クローズド状態に遷移される、ステップ
    を備えることを特徴とする方法。
  2. 前記フォールト・イベント非同期に処理するステップは、前記1つまたは複数の識別されたワーク・アイテムでフォールト処理オペレーションを呼び出すことを備えることを特徴とする請求項1に記載の方法。
  3. 前記フォールト処理オペレーションを呼び出すことは、前記1つまたは複数の識別されたワーク・アイテムをスケジューラ・キューエンキューすることを備えることを特徴とする請求項2に記載の方法。
  4. 前記アクティビティ前記実行階層関数として、前記1つまたは複数の識別されたワーク・アイテムから、前記残りの遷移されたワーク・アイテム通知伝搬するステップであって、前記通知、前記識別された1つまたは複数のワーク・アイテム前記フォールト状態であることを示す、ステップをさらに備えることを特徴とする請求項1に記載の方法。
  5. 前記伝搬された通知応答して、前記残りの遷移されたワーク・アイテム前記実行状態から前記フォールト状態へ遷移させることをさらに備えることを特徴とする請求項4に記載の方法。
  6. 前記実行状態の前記残りの遷移されたワーク・アイテムが実行され続けるように、前記アクティビティの実行階層の関数としての、前記1つまたは複数の識別されたワーク・アイテムから前記残りの遷移されたワーク・アイテムへの通知の伝搬を抑止するステップをさらに備えることを特徴とする請求項4に記載の方法。
  7. 前記1つまたは複数の識別されたワーク・アイテム前記フォールト状態に遷移させられたことに応答して、ユーザにポスト・フォールト処理のためのオペレーションを提供するステップをさらに備えることを特徴とする請求項1に記載の方法。
  8. 1つまたは複数のコンピュータ可読記憶媒体が、請求項1に記載の方法を実行するためのコンピュータ実行可能命令を有することを特徴とする請求項1に記載の方法。
  9. ワークフロー内でフォールト・イベント非同期に処理するためのシステムあって、
    前記システムは、
    前記ワークフロー内のアクティビティワーク・アイテムに関連付けられたデータを格納するストレージであって、前記アクティビティは、前記ワーク・アイテム関する実行階層有し、前記ワーク・アイテムそれぞれは前記アクティビティ一部分を実行するためのオペレーションをインクルードするストレージと、
    プロセッサあって、
    前記アクティビティ対して、少なくとも実行状態フォールト状態およびクローズド状態を含み、前記アクティビティ実行持続時間を分類する状態オートマトン定義すること
    前記ワーク・アイテムそれぞれを前記実行状態遷移させること
    前記実行状態遷移されたワーク・アイテム前記インクルードされたオペレーションを実行すること
    1つまたは複数のワーク・アイテムに関連付けられるフォールト・イベントを受信すること、
    受信された前記フォールト・イベントを処理するフォールト処理オペレーションに応答して、前記遷移されたワーク・アイテムうちの1つまたは複数を前記実行階層および前記インクルードされたオペレーションに基づいて識別することであって前記識別された1つまたは複数の前記遷移されたワーク・アイテムのそれぞれは、前記フォールト処理オペレーションを含む、こと、
    前記フォールト・イベント応答して、識別されなかった前記残りの遷移されたワーク・アイテムインクルードされたオペレーションを実行しながら、受信された前記フォールト・イベントに応答して前記1つまたは複数の識別された前記遷移されたワーク・アイテムのそれぞれに関連付けられる前記フォールト処理オペレーションを実行し、前記1つまたは複数の識別されたワーク・アイテム前記フォールト状態に遷移させることにより、前記フォールト・イベント非同期に処理することであって、前記フォールト状態にある前記1つまたは複数の識別されたワーク・アイテムは、前記フォールト処理オペレーションの実行が完了した後、前記クローズド状態に遷移される、こと
    ためのコンピュータ実行可能命令を実行するように構成されたプロセッサ
    を備えることを特徴とするシステム
  10. 前記プロセッサ、前記1つまたは複数の識別されたワーク・アイテムでフォールト処理オペレーションを呼び出すメソッドおよび前記1つまたは複数の識別されたワーク・アイテムスケジューラ・キューエンキューするメソッドのうちの1つまたは複数を用いて、前記フォールト・イベント非同期に処理するように構成されることを特徴とする請求項9に記載のシステム
  11. 前記アクティビティ前記実行階層関数として、前記1つまたは複数の識別されたワーク・アイテムから、前記残りの遷移されたワーク・アイテム通知を伝搬するためのコンポーネントを備えるコンピュータ実行可能命令を前記プロセッサが実行するように構成され、前記通知、前記識別された1つまたは複数のワーク・アイテム前記フォールト状態であることを示すことを特徴とする請求項9に記載のシステム
  12. 前記伝搬された通知応答して、前記残りの遷移されたワーク・アイテムを前記実行状態から前記フォールト状態へ遷移させるためのコンポーネントを備えるコンピュータ実行可能命令を前記プロセッサが実行するように構成されることを特徴とする請求項11に記載のシステム
  13. 前記プロセッサは、前記状態オートマトンにおける補正状態を定義し、
    前記プロセッサは、前記アクティビティを前記フォールト状態から前記補正状態に遷移させ、前記アクティビティに関連付けられる前記残りのワーク・アイテムを実行するために以前使用されたデータを前記ストレージから復元するためコンポーネントを備えるコンピュータ実行可能命令を実行するように構成される、ことを特徴とする請求項9に記載のシステム
  14. 前記プロセッサは、前記通知前記残りの遷移されたワーク・アイテムの伝搬を抑止するためのコンポーネントを備えるコンピュータ実行可能命令を実行するように構成されることを特徴とする請求項9に記載のシステム
  15. ワークフロー内でフォールト・イベント非同期に処理するためのコンピュータ実行可能コンポーネントを有する1つまたは複数のコンピュータ可読記憶媒体であって、前記コンピュータ実行可能コンポーネントは、コンピュータによって実行される時に、コンピュータに、
    アクティビティ対して状態オートマトン定義する状態マシンであって、前記状態オートマトンは、少なくとも実行状態フォールト状態およびクローズド状態を含み、前記状態オートマトンは、前記アクティビティ実行持続時間を分類する、状態マシンと、
    前記アクティビティ、複数のワーク・アイテム含むように定義するためのアクティビティ・コンポーネントあって、前記定義されるアクティビティは、前記複数のワーク・アイテムについての実行階層を有し、前記複数のワーク・アイテムそれぞれは前記アクティビティ一部分を実行するためのオペレーションをインクルードする、アクティビティ・コンポーネントと、
    前記ワーク・アイテムそれぞれを前記実行状態遷移させるためのスケジューラ・コンポーネントと、
    前記実行状態の遷移されたワーク・アイテム前記インクルードされたオペレーションを実行するための実行コンポーネントと、
    前記フォールト・イベントを処理するフォールト処理オペレーションに応答して、前記遷移されたワーク・アイテムのうちの1つまたは複数を前記実行階層および前記インクルードされたオペレーションに基づいて識別するための識別コンポーネントであって、前記識別された1つまたは複数の前記遷移されたワーク・アイテムのそれぞれは、前記フォールト処理オペレーションを含む、識別コンポーネントと、
    前記フォールト・イベント応答して前記識別コンポーネントよって識別されなかった前記残りの遷移されたワーク・アイテム前記インクルードされたオペレーションを実行しながら、前記1つまたは複数の識別されたワーク・アイテムに関連付けられる前記フォールト・イベントを受信することに応答して、前記1つまたは複数の識別されたワーク・アイテムのそれぞれでフォールト処理オペレーションを呼び出して前記1つまたは複数の識別されたワーク・アイテム前記フォールト状態遷移させることにより、前記フォールト・イベント非同期に処理するためのフォールト・ハンドラ
    を実現させることを特徴とするコンピュータ可読記憶媒体
  16. 前記フォールト・ハンドラ、前記1つまたは複数の識別されたワーク・アイテム前記フォールト状態遷移させるために前記1つまたは複数の識別されたワーク・アイテムをスケジューラ・キューエンキューすることを特徴とする請求項15に記載のコンピュータ可読記憶媒体
  17. 前記アクティビティの実行階層の関数として、前記1つまたは複数の識別されたワーク・アイテムから前記残りの遷移されたワーク・アイテムに通知を送信するためのフォールト伝搬コンポーネントさらに実現させ、前記通知、前記識別された1つまたは複数のワーク・アイテム前記フォールト状態であることを示すことを特徴とする請求項15に記載のコンピュータ可読記憶媒体
  18. 前記送信された通知応答して、前記残りの遷移されたワーク・アイテムを前記実行状態から前記フォールト状態へ遷移させるための遷移コンポーネントさらに実現させることを特徴とする請求項17に記載のコンピュータ可読記憶媒体
  19. 前記フォールトイベント非同期に処理する関数として、前記アクティビティ関連付けられたデータを復元するための補正コンポーネントさらに実現させることを特徴とする請求項15に記載のコンピュータ可読記憶媒体
  20. 前記通知前記残りの遷移されたワーク・アイテムへの送信を抑止するための禁止コンポーネントさらに実現させることを特徴とする請求項15に記載のコンピュータ可読記憶媒体
JP2009502791A 2006-03-30 2007-02-21 プロセス中心型プログラムにおける非同期フォールト処理 Active JP5297370B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/393,093 2006-03-30
US11/393,093 US7739135B2 (en) 2006-03-30 2006-03-30 Asynchronous fault handling in process-centric programs
PCT/US2007/004642 WO2007120391A1 (en) 2006-03-30 2007-02-21 Asynchronous fault handling in process-centric programs

Publications (2)

Publication Number Publication Date
JP2009532760A JP2009532760A (ja) 2009-09-10
JP5297370B2 true JP5297370B2 (ja) 2013-09-25

Family

ID=38560925

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009502791A Active JP5297370B2 (ja) 2006-03-30 2007-02-21 プロセス中心型プログラムにおける非同期フォールト処理

Country Status (10)

Country Link
US (1) US7739135B2 (ja)
EP (1) EP2013716A4 (ja)
JP (1) JP5297370B2 (ja)
KR (1) KR20080106567A (ja)
CN (1) CN101416156B (ja)
BR (1) BRPI0708917A2 (ja)
CA (1) CA2644370A1 (ja)
MX (1) MX2008011910A (ja)
RU (1) RU2008138701A (ja)
WO (1) WO2007120391A1 (ja)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8849691B2 (en) * 2005-12-29 2014-09-30 Microsoft Corporation Modeling user input and interaction in workflow based applications
US20080082960A1 (en) * 2006-09-29 2008-04-03 Mcdougal Monty D Method and System For Controlling The Release of Data For Multiple-Level Security Systems
US8145335B2 (en) * 2006-12-19 2012-03-27 Palo Alto Research Center Incorporated Exception handling
US9442620B2 (en) * 2007-08-21 2016-09-13 Oracle International Corporation Navigation systems with event notification
US7827127B2 (en) * 2007-10-26 2010-11-02 Microsoft Corporation Data scoping and data flow in a continuation based runtime
US9354847B2 (en) 2008-12-29 2016-05-31 Microsoft Technology Licensing, Llc Interface infrastructure for a continuation based runtime
US8307368B2 (en) * 2009-05-26 2012-11-06 Microsoft Corporation Locality-based scheduling in continuation-based runtimes
US9536264B2 (en) 2011-11-14 2017-01-03 Microsoft Technology Licensing, Llc Host agnostic messaging in a continuation based runtime
US9152533B1 (en) 2011-12-06 2015-10-06 Amazon Technologies, Inc. Asynchronous programming system
US9170915B1 (en) 2011-12-06 2015-10-27 Amazon Technologies, Inc. Replay to reconstruct program state
US9015533B1 (en) * 2011-12-06 2015-04-21 Amazon Technologies, Inc. Error handling for asynchronous applications
US8996937B2 (en) * 2011-12-28 2015-03-31 Stmicroelectronics International N.V. Apparatus for monitoring operating conditions of a logic circuit
US10235209B2 (en) * 2015-08-28 2019-03-19 Vmware, Inc. Hybrid task framework
US10324783B1 (en) * 2016-09-01 2019-06-18 Servicenow, Inc. System and method for workflow error handling

Family Cites Families (113)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4697266A (en) 1983-03-14 1987-09-29 Unisys Corp. Asynchronous checkpointing system for error recovery
US4920483A (en) 1985-11-15 1990-04-24 Data General Corporation A computer memory for accessing any word-sized group of contiguous bits
US5287537A (en) 1985-11-15 1994-02-15 Data General Corporation Distributed processing system having plural computers each using identical retaining information to identify another computer for executing a received command
US5301320A (en) 1991-06-28 1994-04-05 Digital Equipment Corporation Workflow management and control system
EP0686282A4 (en) 1993-02-08 1997-07-02 Action Tech Inc BUSINESS PROCESS MANAGEMENT PROCESS AND APPARATUS
US5734837A (en) 1994-01-14 1998-03-31 Action Technologies, Inc. Method and apparatus for building business process applications in terms of its workflows
US5627981A (en) 1994-07-01 1997-05-06 Digital Equipment Corporation Software mechanism for accurately handling exceptions generated by instructions scheduled speculatively due to branch elimination
EP0697652A1 (en) 1994-08-16 1996-02-21 International Business Machines Corporation Method for re-executing a process on a computer system for fault correction
US5634127A (en) 1994-11-30 1997-05-27 International Business Machines Corporation Methods and apparatus for implementing a message driven processor in a client-server environment
JP3547215B2 (ja) * 1995-01-20 2004-07-28 富士通株式会社 伝送障害処理装置
US5774661A (en) 1995-04-18 1998-06-30 Network Imaging Corporation Rule engine interface for a visual workflow builder
DE19712946A1 (de) 1996-05-30 1997-12-04 Ibm Methode zum Generieren einer Implementierung wiederverwendbarer Teile von Containern eines Workflow-Prozessmodells
US5930512A (en) 1996-10-18 1999-07-27 International Business Machines Corporation Method and apparatus for building and running workflow process models using a hypertext markup language
US6158044A (en) 1997-05-21 2000-12-05 Epropose, Inc. Proposal based architecture system
US6016394A (en) 1997-09-17 2000-01-18 Tenfold Corporation Method and system for database application software creation requiring minimal programming
US6807583B2 (en) 1997-09-24 2004-10-19 Carleton University Method of determining causal connections between events recorded during process execution
US6621505B1 (en) 1997-09-30 2003-09-16 Journee Software Corp. Dynamic process-based enterprise computing system and method
US6225998B1 (en) 1997-12-02 2001-05-01 Aspect Communications Visual design of workflows for transaction processing
US6115646A (en) 1997-12-18 2000-09-05 Nortel Networks Limited Dynamic and generic process automation system
US6078982A (en) 1998-03-24 2000-06-20 Hewlett-Packard Company Pre-locking scheme for allowing consistent and concurrent workflow process execution in a workflow management system
US6560626B1 (en) 1998-04-02 2003-05-06 Microsoft Corporation Thread interruption with minimal resource usage using an asynchronous procedure call
US6430538B1 (en) 1998-04-30 2002-08-06 Enterworks Workflow management system, method and medium with personal subflows
US6567783B1 (en) 1998-06-05 2003-05-20 I2 Technologies Us, Inc. Communication across one or more enterprise boundaries regarding the occurrence of a workflow event
US6397192B1 (en) 1998-06-05 2002-05-28 I2 Technologies Us, Inc. Synchronizing one or more workflows using one or more synchronization-join activities that include synchronization logic
JP2003528358A (ja) 1998-08-24 2003-09-24 富士通株式会社 ワークフローシステムおよび方法
US6606740B1 (en) * 1998-10-05 2003-08-12 American Management Systems, Inc. Development framework for case and workflow systems
US6308318B2 (en) 1998-10-07 2001-10-23 Hewlett-Packard Company Method and apparatus for handling asynchronous exceptions in a dynamic translation system
US7133833B1 (en) 1998-10-27 2006-11-07 Netscape Communications Corporation Lightweight directory access protocol workflow management system
US7233952B1 (en) 1999-01-15 2007-06-19 Hon Hai Precision Industry, Ltd. Apparatus for visualizing information in a data warehousing environment
US6411961B1 (en) 1999-01-15 2002-06-25 Metaedge Corporation Apparatus for providing a reverse star schema data model
US6412109B1 (en) 1999-01-29 2002-06-25 Sun Microsystems, Inc. Method for optimizing java bytecodes in the presence of try-catch blocks
US6678882B1 (en) 1999-06-30 2004-01-13 Qwest Communications International Inc. Collaborative model for software systems with synchronization submodel with merge feature, automatic conflict resolution and isolation of potential changes for reuse
US6609128B1 (en) 1999-07-30 2003-08-19 Accenture Llp Codes table framework design in an E-commerce architecture
US6633878B1 (en) 1999-07-30 2003-10-14 Accenture Llp Initializing an ecommerce database framework
US7100195B1 (en) 1999-07-30 2006-08-29 Accenture Llp Managing user information on an e-commerce system
US6405364B1 (en) 1999-08-31 2002-06-11 Accenture Llp Building techniques in a development architecture framework
CA2281331A1 (en) 1999-09-03 2001-03-03 Cognos Incorporated Database management system
US7020697B1 (en) 1999-10-01 2006-03-28 Accenture Llp Architectures for netcentric computing systems
JP3825597B2 (ja) * 1999-11-18 2006-09-27 日本電信電話株式会社 コンテンツ表示回数制御方法,装置およびそのプログラム記録媒体
US6898790B1 (en) 1999-12-06 2005-05-24 International Business Machines Corporation Mapping actions to tasks within customer service processing systems
CA2401634A1 (en) * 2000-02-25 2001-08-30 Ravi Ramanathan Method for workflow processing through computer network
US7096454B2 (en) 2000-03-30 2006-08-22 Tyrsted Management Aps Method for gesture based modeling
US6964034B1 (en) 2000-04-20 2005-11-08 International Business Machines Corporation Application development server and a mechanism for providing different views into the same constructs within a strongly encapsulated environment
US6918053B1 (en) 2000-04-28 2005-07-12 Microsoft Corporation Compensation framework for long running transactions
US6845507B2 (en) 2000-05-18 2005-01-18 Ss & C Technologies, Inc. Method and system for straight through processing
US6971096B1 (en) 2000-05-19 2005-11-29 Sun Microsystems, Inc. Transaction data structure for process communications among network-distributed applications
US20030033191A1 (en) 2000-06-15 2003-02-13 Xis Incorporated Method and apparatus for a product lifecycle management process
US6708186B1 (en) 2000-08-14 2004-03-16 Oracle International Corporation Aggregating and manipulating dictionary metadata in a database system
WO2002017652A2 (en) 2000-08-22 2002-02-28 Symbian Limited Database for use with a wireless information device
US20020032692A1 (en) 2000-09-08 2002-03-14 Atsuhito Suzuki Workflow management method and workflow management system of controlling workflow process
US6886094B1 (en) 2000-09-28 2005-04-26 International Business Machines Corporation Apparatus and method for detecting and handling exceptions
US7555459B2 (en) 2000-10-02 2009-06-30 International Projects Consultancy Services, Inc. Automated loan processing system and method
US6604104B1 (en) 2000-10-02 2003-08-05 Sbi Scient Inc. System and process for managing data within an operational data store
US7653566B2 (en) 2000-11-30 2010-01-26 Handysoft Global Corporation Systems and methods for automating a process of business decision making and workflow
US7917888B2 (en) 2001-01-22 2011-03-29 Symbol Technologies, Inc. System and method for building multi-modal and multi-channel applications
US7240324B2 (en) 2001-02-28 2007-07-03 Hewlett-Packard Development Company, L.P. Event-based scheduling method and system for workflow activities
US20020128068A1 (en) 2001-03-09 2002-09-12 Randall Whitten Jon Marcus Method and apparatus for managing data in a gaming system
US20020147606A1 (en) 2001-03-14 2002-10-10 Norbert Hoffmann Application development method
US7120896B2 (en) 2001-10-31 2006-10-10 Vitria Technology, Inc. Integrated business process modeling environment and models created thereby
US20020188644A1 (en) 2001-06-08 2002-12-12 Verano Workflow automated task component manager
US20030018643A1 (en) 2001-06-19 2003-01-23 Peiwei Mi VIGIP006 - collaborative resolution and tracking of detected events
US7069536B2 (en) 2001-06-28 2006-06-27 International Business Machines Corporation Method, system, and program for executing a workflow
US6898604B1 (en) 2001-06-29 2005-05-24 Microsoft Corporation XML serialization and deserialization
US20030018508A1 (en) * 2001-07-19 2003-01-23 Schwanke Robert W. Data-triggered workflow processes
US7222334B2 (en) 2001-07-24 2007-05-22 Hewlett-Packard Development Comapny, L.P. Modeling tool for electronic services and associated methods and businesses
WO2003014927A2 (en) 2001-08-08 2003-02-20 Trivium Systems Inc. Scalable messaging platform for the integration of business software components
US6985939B2 (en) 2001-09-19 2006-01-10 International Business Machines Corporation Building distributed software services as aggregations of other services
US6895573B2 (en) 2001-10-26 2005-05-17 Resultmaker A/S Method for generating a workflow on a computer, and a computer system adapted for performing the method
US20030177046A1 (en) 2001-12-03 2003-09-18 John Socha-Leialoha Method and system for reusing components
US6928582B2 (en) 2002-01-04 2005-08-09 Intel Corporation Method for fast exception handling
US7089287B2 (en) 2002-01-16 2006-08-08 Xerox Corporation Message-based system having embedded information management capabilities
US20030144891A1 (en) * 2002-01-26 2003-07-31 International Business Machines Corporation Supervising the processing status of activities within workflow management systems
US20030233374A1 (en) 2002-03-14 2003-12-18 Ulrich Spinola Dynamic workflow process
AU2003234106A1 (en) * 2002-04-15 2003-11-03 Invensys Systems, Inc. Methods and apparatus for process, factory-floor, environmental, computer aided manufacturing-based or other control system with real-time data distribution
US7519976B2 (en) 2002-05-01 2009-04-14 Bea Systems, Inc. Collaborative business plug-in framework
US7272816B2 (en) 2002-07-31 2007-09-18 Sap Aktiengesellschaft Transformations between private and shared workflows
US6889231B1 (en) 2002-08-01 2005-05-03 Oracle International Corporation Asynchronous information sharing system
US20040078105A1 (en) 2002-09-03 2004-04-22 Charles Moon System and method for workflow process management
US7398525B2 (en) 2002-10-21 2008-07-08 International Business Machines Corporation Resource scheduling in workflow management systems
US8056046B2 (en) 2002-10-22 2011-11-08 The Boeing Company Integrated system-of-systems modeling environment and related methods
US7062537B2 (en) 2002-11-25 2006-06-13 Microsoft Corporation Workflow services architecture
US20040148213A1 (en) 2002-11-25 2004-07-29 Microsoft Corporation Automated workflow constraints
US7272820B2 (en) 2002-12-12 2007-09-18 Extrapoles Pty Limited Graphical development of fully executable transactional workflow applications with adaptive high-performance capacity
US7168077B2 (en) 2003-01-31 2007-01-23 Handysoft Corporation System and method of executing and controlling workflow processes
US20040162741A1 (en) 2003-02-07 2004-08-19 David Flaxer Method and apparatus for product lifecycle management in a distributed environment enabled by dynamic business process composition and execution by rule inference
US7114146B2 (en) 2003-05-02 2006-09-26 International Business Machines Corporation System and method of dynamic service composition for business process outsourcing
CN1826610A (zh) 2003-05-07 2006-08-30 Sap股份有限公司 包括带协作过程引擎的特设型工作流结构化处理的面向终端用户的工作流方法
CA2528996C (en) 2003-06-12 2016-10-11 Reuters America Inc. Business process automation
US8645420B2 (en) 2003-08-05 2014-02-04 Accenture Global Services Limited Methodology framework and delivery vehicle
US7693973B2 (en) 2003-08-28 2010-04-06 International Business Machines Corporation Pluggable state meta-data processors based on meta information modeling in a service oriented architecture
WO2005033933A1 (en) 2003-09-02 2005-04-14 Infoglide Software Corporation System and method for workflow process management
CA2442796A1 (en) 2003-09-26 2005-03-26 Ibm Canada Limited - Ibm Canada Limitee Binding a workflow engine to a data model
CA2443447A1 (en) 2003-09-30 2005-03-30 Ibm Canada Limited-Ibm Canada Limitee System and method for conversion between graph-based representations and structural text-based representations of business processes
US7278065B2 (en) 2003-11-17 2007-10-02 Electronic Data Systems Corporation Enterprise directory service domain controller replication alert and repair
US7137033B2 (en) 2003-11-20 2006-11-14 International Business Machines Corporation Method, system, and program for synchronizing subtasks using sequence numbers
US7197502B2 (en) 2004-02-18 2007-03-27 Friendly Polynomials, Inc. Machine-implemented activity management system using asynchronously shared activity data objects and journal data items
US7359909B2 (en) 2004-03-23 2008-04-15 International Business Machines Corporation Generating an information catalog for a business model
US20050246692A1 (en) 2004-04-28 2005-11-03 Convey Development, Inc. Asynchronous compilation
US20060064335A1 (en) 2004-08-17 2006-03-23 International Business Machines Corporation Method, system, and storage medium for performing business process modeling
US20060053120A1 (en) 2004-09-07 2006-03-09 Hong Kong Applied Science And Technology Research Institute Co., Ltd. Web service registry and method of operation
US20060074735A1 (en) 2004-10-01 2006-04-06 Microsoft Corporation Ink-enabled workflow authoring
US7631291B2 (en) 2004-10-01 2009-12-08 Microsoft Corporation Declarative representation for an extensible workflow model
US7464366B2 (en) 2004-10-01 2008-12-09 Microsoft Corporation Programming interface for a componentized and extensible workflow model
US20060112122A1 (en) 2004-11-23 2006-05-25 International Business Machines Corporation Method, system, and storage medium for implementing business process modules
US7900201B1 (en) 2004-12-21 2011-03-01 Zenprise, Inc. Automated remedying of problems in software application deployments
US7433887B2 (en) 2004-12-29 2008-10-07 Microsoft Corporation Method and apparatus for metadata driven business logic processing
JP2006215713A (ja) 2005-02-02 2006-08-17 Canon Inc ワークフローシステムの先行業務指示及び廃止方法
US7493594B2 (en) 2005-03-14 2009-02-17 Research In Motion System and method for designing component based applications
US7983943B2 (en) 2005-05-27 2011-07-19 Xerox Corporation Method and system for workflow process node synchronization
AU2007207417A1 (en) 2006-01-20 2007-07-26 Paxfire, Inc. Systems and methods for discerning and controlling communication traffic
US8069439B2 (en) * 2006-03-30 2011-11-29 Microsoft Corporation Framework for modeling continuations in workflows
US20070239498A1 (en) * 2006-03-30 2007-10-11 Microsoft Corporation Framework for modeling cancellation for process-centric programs
US20070239505A1 (en) * 2006-03-30 2007-10-11 Microsoft Corporation Abstract execution model for a continuation-based meta-runtime

Also Published As

Publication number Publication date
US20070234129A1 (en) 2007-10-04
KR20080106567A (ko) 2008-12-08
CA2644370A1 (en) 2007-10-25
EP2013716A1 (en) 2009-01-14
WO2007120391A1 (en) 2007-10-25
JP2009532760A (ja) 2009-09-10
MX2008011910A (es) 2008-09-29
US7739135B2 (en) 2010-06-15
CN101416156B (zh) 2013-03-06
RU2008138701A (ru) 2010-04-10
EP2013716A4 (en) 2009-06-24
CN101416156A (zh) 2009-04-22
BRPI0708917A2 (pt) 2011-06-14

Similar Documents

Publication Publication Date Title
JP5297370B2 (ja) プロセス中心型プログラムにおける非同期フォールト処理
JP5140067B2 (ja) ワークフローにおいて継続をモデル化するフレームワーク
US8024405B2 (en) Declarative model for concurrency-control across lightweight threads
US20070239505A1 (en) Abstract execution model for a continuation-based meta-runtime
US20070239498A1 (en) Framework for modeling cancellation for process-centric programs

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20100112

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120727

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20121026

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: 20130517

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130614

R150 Certificate of patent or registration of utility model

Ref document number: 5297370

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

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

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