JP2009532754A - 継続ベースのメタランタイムのための抽象実行モデル - Google Patents

継続ベースのメタランタイムのための抽象実行モデル Download PDF

Info

Publication number
JP2009532754A
JP2009532754A JP2009502784A JP2009502784A JP2009532754A JP 2009532754 A JP2009532754 A JP 2009532754A JP 2009502784 A JP2009502784 A JP 2009502784A JP 2009502784 A JP2009502784 A JP 2009502784A JP 2009532754 A JP2009532754 A JP 2009532754A
Authority
JP
Japan
Prior art keywords
activity
automaton
program fragment
continuation
execution
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.)
Withdrawn
Application number
JP2009502784A
Other languages
English (en)
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 JP2009532754A publication Critical patent/JP2009532754A/ja
Withdrawn legal-status Critical Current

Links

Images

Classifications

    • 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
    • G06F9/485Task life-cycle, e.g. stopping, restarting, resuming execution
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/48Indexing scheme relating to G06F9/48
    • G06F2209/482Application

Landscapes

  • Engineering & Computer Science (AREA)
  • Business, Economics & Management (AREA)
  • Human Resources & Organizations (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • Strategic Management (AREA)
  • General Physics & Mathematics (AREA)
  • Entrepreneurship & Innovation (AREA)
  • Economics (AREA)
  • Educational Administration (AREA)
  • Development Economics (AREA)
  • Game Theory and Decision Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Marketing (AREA)
  • Operations Research (AREA)
  • Quality & Reliability (AREA)
  • Tourism & Hospitality (AREA)
  • General Business, Economics & Management (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

管理対象実行環境を仮想化するためのワークフローエンジンを提供すること。ワークフローエンジンは、そこに関連付けられているオートマトンおよびメソッドに基づいてワークフローを実行する。ワークフローエンジンは、実行しているワークフローに関連付けられている継続を取り込み、実世界のプロセスをモデル化できるようにする。

Description

本発明は、ワークフローにおいて実世界のプロセスをモデル化する方法、システム、及びそのコンピュータ可読媒体に関する。
既存のシステムは、高水準ワークフローを介して自律型エージェント間のビジネスプロセスまたはその他の現実世界の対話をモデル化しようと試みる。しかし、ワークフローは、(a)実行およびモデル化の複雑さ、(b)設計時におけるフローの構造の知識、(c)静的に定義されたか、または臨時/動的、(d)ライフサイクルのさまざまな時点におけるフローの作成と編集の容易さ、および(e)コアワークフロープロセスとのビジネス論理の弱いまたは強い関連のように、さまざまな局面で異なる場合もある。既存のワークフローは、これらの要因すべてに対応することはできない。
さらに、ほとんどの既存のワークフローモデルは、言語ベースの手法(たとえば、BPEL4WS、XLANG/S、およびWSFL)あるいはアプリケーションベースの手法に基づいている。言語ベースの手法は、ユーザー/プログラマに対してワークフロープロセスのモデル化に役立つ事前定義の構成体の閉集合を備える高水準ワークフロー言語である。ワークフロー言語は、構成体の閉集合の意味情報すべてを保持して、ユーザーがワークフローモデルを構築することができるようにする。しかし、言語は、開発者により拡張可能ではなく、ワークフローモデルを構成するプリミティブの閉集合を表す。言語は、ワークフローシステムのベンダーによって出荷される言語コンパイラに拘束される。製品の将来のバージョンの新しい構成体の集合で言語を拡張することにより、モデルを拡張することができるのは、ワークフローシステム製品のベンダーだけである。このことは、多くの場合、言語に関連付けられているコンパイラのアップグレードを必要とする。加えて、言語は通常、その他のプログラムにより容易かつ効率的に使用することができる関数または演算を宣言型で公開または定義することはない。
アプリケーションベースの手法は、ドメイン固有の問題を解決するためにアプリケーション内にワークフロー機能を備えるアプリケーションである。これらのアプリケーションは、真に拡張可能ではなく、プログラム化できるモデルを有することもない。
本発明は、管理対象実行環境を仮想化するためのワークフローエンジンを提供することを目的とする。
本発明の実施形態は、ワークフローにおいて実世界のプロセスをモデル化する。実施形態において、本発明は、ワークフローにおいてアクティビティとの関連付けのためのオートマトンを定義する。固定の機能を備える管理対象実行環境を仮想化するメタランタイムエンジンは、定義されたオートマトンに基づいてアクティビティを含むプログラムフラグメントを実行する。実行しているプログラムフラグメントに向けられた中断信号の受け取りに応答して、メタランタイムエンジンは、プログラムフラグメントに関連付けられている継続データを決定し、プログラムフラグメントに関連付けられているリソースを解放する。
この[課題を解決するための手段]は、以下の[発明を実施するための最良の形態]でさらに説明される一連の概念を簡略化した形態で示すために提供される。この[課題を解決するための手段]は、請求項に係る主題の主要特徴または本質的特徴を特定することを意図するものではなく、また請求項に係る主題の範囲を決定する際の補助として使用することを意図するものでもない。
その他の特徴は、部分的に明白であり、これ以降部分的に指摘される。
対応する参照文字は、図面全体を通じて対応する部分を示す。
図1を参照すると、ブロック図は、ワークフローのプロセス中心のアクティビティをモデル化するための標準的なプログラミングのパラダイムを示す。この図において、オペレーティングシステム104を仮想化する、最上位レベルに管理対象実行環境106を備えた3レベルの仮想化モデルを示す。管理対象実行環境106は、コンピューティング装置のプロセッサアーキテクチャからは独立して実施することのできる抽象スタックマシンに関して環境106で実行しているプログラムの実行を仮想化する。オペレーティングシステム104は、最下位レベルにおいて処理装置102を仮想化する。管理対象実行環境106レベルにおけるプログラムには、管理対象実行環境106で使用可能な固定機能が原因で、ワークフロー内のプロセス間の複雑な対話に適合する能力および効率が不足している。管理対象実行環境106はまた、実世界のワークフローをモデル化するワークフローの複雑さと機能を処理するには適していないさまざまな厳密な要件を含む。さらに、オペレーティングシステム104のプログラミングコードまたはルーチンは、数ある制約の中でも特に、処理装置102のタイプまたは構成、およびコンピュータアーキテクチャのタイプ(たとえば、IBM製品のパーソナルコンピュータ、APPLE製品のパーソナルコンピュータ、またはその他のシステムと互換性があるなど)に依存する。加えて、プログラミング言語は通常、適正に機能するため、オペレーティングシステム104のスタック、ヒープ、またはスレッドなど、ハードウェア固有のデータ構造を必要とする。
次に図2を参照すると、本発明の態様は、継続ベースのワークフローエンジン202、メタランタイムエンジン、または管理対象実行環境106を仮想化するその他のフレームワークを含む。ワークフローは、各々のアクティビティが作業単位を表しているアクティビティの階層構成を含む。ワークフローエンジン202は、実世界のプロセスを表すワークフローで命令コード(op−codes)またはアクティビティの実行の非同期の抽象モデルを供給する。ワークフローエンジン202は、プログラムを中断して、実行サイクル中の任意の時点でそれらを再開することができる継続ベースのランタイムである。アクティビティはドメイン固有であるが、ワークフローエンジン202はドメイン固有性を認識しない。さらに、ワークフローエンジン202は、アクティビティに関してパッケージされて入る固有の制御フローパターンに関して全く認識がない。そのように、本発明の態様によって提供される実行モデルは抽象的である。さらに、全ワークフローインスタンスは任意の時間(たとえば、日、月、または年)にわたり論理的に実行することができるが、ワークフローに関連付けられているアクティビティは、協調的なマルチタスキングの方式で短期的な作業を実行して結果をもたらすことができる。本発明の態様の抽象実行モデルにより、ワークフローエンジン202は、実行の途中でインスタンスを中断する、および/またはメモリから除去して、それを将来再開することができる。ワークフローエンジン202は、プログラムの不動態化にわたりそのようなオペレーションを管理する。
1つの実施形態において、ワークフローエンジン202は、管理対象実行環境106の態様であるドメイン固有命令コード、スレッド、同期化プリミティブ、実行マシン、オブジェクト存続時間、ソースフォーマット、例外、障害、障害伝搬、および障害処理のうちの1つまたは複数を仮想化するように動作する。たとえば、本発明の態様は、ユーザーがカスタムアクティビティに関してカスタムの命令コードを作成することができるようにする。一般に、ワークフローエンジン202は、管理対象実行環境106からのスレッド、スタック、および/またはヒープを使用する。任意のプログラミング言語で作成され、任意のファイルフォーマットで構成されたプログラムを実行する機能を備え、ワークフローエンジン202は、プログラム開発者が妥協することなくプログラムを設計することができるようにする。ワークフローエンジン202によって実行されるべき基底クラスとしてワークフロータスクまたはプロセスを表すアクティビティを定義することにより、本発明の態様は、開発者が、管理対象実行環境106において厳格なハードコードされた、柔軟性のない固定の機能またはアクティビティクラスのセットに固執することなく、ドメイン固有の命令コードを容易かつ効率的に構築することができるようにする。命令コードは、保健医療業界、金融業界、またはその他のドメインに固有であってもよい。図2のワークフローエンジン202は、継続およびそのさまざまな態様のモデル化を可能にしてプログラマが複雑で動的な制御フローパターンをモデル化できるようにする、既存の実行フレームワーク(たとえば、図1の管理対象実行環境106、オペレーションシステム104、または処理装置102)の上部に階層化された任意の継続ベースのランタイムであってもよい。本発明の態様は、任意の方法または表現(たとえば、流れ図、図表、番号付きの説明など)でアクティビティを定義できるようにする。
継続は、複雑で動的な制御フローパターンをモデル化するために使用することができる。継続は、実行中にフリーズしたプログラムを表し、計算の状態を含む単一の機能オブジェクトを含むことができる。オブジェクトが評価されるとき、格納されている計算は、中断した時点から再開することができる。特定の種類の問題を解決する際、プログラムの状態を保存して後に再開できることは、非常に役に立つ可能性もある。たとえば、マルチプロセッシングにおいて、継続が、中断されたプロセスを表すことは便利である。非決定性の検索プログラムにおいて、継続は、検索ツリー内のノードを表すことができる。
管理対象実行環境106は、プログラム間の共通であるが固定した通信環境を作成するが、そのような環境において実世界のプロセスをモデル化する能力は十分ではない。たとえば、管理対象実行環境106で実行中のアプリケーションは、機能または共通のオブジェクト指向クラスを共用するために中間言語に制限されている。中間言語は、固定されたパラメータ、引数、スキーマ、または関数を備えている。
再び図2を参照すると、ユーザー204(たとえば、人間、アプリケーションプログラム、オペレーティングシステムなど)は、ワークフローの基礎フレームワークを提供するコンピュータ206と対話する。コンピュータ206およびそこに関連付けられているプロセッサ(図示せず)は、継続データ210と、ワークフロー基礎を実施するためのコンピュータ実行可能命令を備える1つまたは複数のコンピュータ可読コンポーネントまたはモジュールとを格納するメモリ領域208にアクセスすることができる。継続データ210は、アプリケーション状態およびランタイム状態を含む。1つの実施形態において、アプリケーション状態は、アクティビティオブジェクトのリストを含み、(たとえば、アクティビティツリーを参照して)アクティビティのステータスを示すが、ランタイム状態は、次に実行するようスケジュールされている例外ハンドラを識別するプログラムカウンタを含むか、あるいはスケジューラキューのステータス(たとえば、スケジューラに関連付けられているキュー内の項目)を示す。継続データ210によって表される継続は、一般に、所定の時点におけるアクティビティ実行コンテキストまたはプログラムフラグメントのその他の状態を表す。アクティビティ実行コンテキストは、管理対象実行環境106からの物理スレッドに関連付けられているスタックとは関係なく使用可能である。
図2の実施形態において、コンピュータ実行可能コンポーネントまたはモジュールは、オートマトンモジュール212、実行マシンモジュール214、継続モジュール216、および再開モジュール218を含む。オートマトンモジュール212は、コンピュータ206によって実行されるとき、ワークフローにおいてアクティビティとの関連付けのためのオートマトンを定義する。定義されるオートマトンは、それに関連付けられている状態のセット、および各々の状態に対応する1つまたは複数のメソッドを有する。実行マシンモジュール214は、オートマトンモジュール212によって定義されたオートマトンに基づいてアクティビティを含むプログラムフラグメントを実行する。継続モジュール216は、実行マシンモジュール214によって実行されているプログラムフラグメントに向けられた中断信号の受け取りに応答して、プログラムフラグメントの継続データ210を取り込み、プログラムフラグメントに関連付けられているリソースを解放する。継続モジュール216のオペレーションは、プログラムフラグメントのピックル(直列化)、プログラムフラグメントの除去、プログラムフラグメントの脱水、および/またはプログラムフラグメントのアンロードと呼ぶことができる。たとえば、継続データは、制御フローパターン、反復、並列foreach文、状態マシン、ページフローコントローラ、シーケンス発生器、およびもう1つの継続のうちの1つまたは複数をモデル化するために使用される。
コンピュータ206またはその他のコンピューティング装置によって実行されるとき、再開モジュール218は、実行マシンモジュール214によって実行されているプログラムフラグメントに向けられた再開信号の受け取りに応答して、継続モジュール216によって取り込まれたプログラムフラグメントの継続データ210を復元する。実行マシンモジュール214は、復元された継続データ210に基づいてプログラムフラグメントの実行を再開する。
たとえば、継続への参照を使用して、実行ハンドラ(たとえば、アクティビティに関連付けられているメソッド)は、さらに多くの実行ハンドラをスケジュールすることができる(たとえば、複合アクティビティはその子の実行をスケジュールすることができる)。1つの実施形態において、継続への参照は、直接または暗黙の引数としてアクティビティ実行コンテキストを含む。正常に完了したアクティビティの補正は、存続するコンテキストを再呼び出しして、コンテキスト内でアクティビティインスタンスの補正器メソッドを実行することにより、将来実行することができる。
本発明において、図2、その他の図面、および専門用語の要素はいずれも、メタランタイムを提供するための手段、およびプログラムフラグメントに関連付けられている継続を取り込むための手段を構成する。
次に図3を参照すると、例示的なワークフロー300が示される。図3の例において、ワークフロー300は、注文書を処理するためのワークフローである。ワークフロー内のアクティビティは、一部のアクティビティがワークフロー300内の他のアクティビティと並行または同時に実行することができるが、ワークフロー300内の一部のアクティビティがワークフロー300内の他のアクティビティの完了後に実行されるように順序付けることができる。ワークフロー300は、顧客からの注文の受領などの、開始点302から開始する。ワークフロー300は、条件文304の条件の結果に応じて条件文306と308に分岐する条件文304(たとえば、IF文またはWHILE文)を含む。条件文306に続いて、ワークフロー300は、非同期的に実行される2つのシーケンスを有する並列構造310を含む。図3に示される例において、「Send Email」アクティビティおよび「Get Approval」アクティビティは、ワークフローが314において完了する前に並行して処理される。
条件文308の後、「drop activities here」領域316は、ワークフローが314において完了する前にアクティビティ作成者または他のユーザーがアクティビティをワークフロー300に追加できることを示す。
次に図4を参照すると、ブロック図は、ワークフローアクティビティの階層構造402(たとえば、ツリー構造)を示す。アクティビティの実行は、ツリーのルートで開始するアクティビティツリーの実行を含む。アクティビティは、任意のプログラミング言語のソフトウェアコードによって構成されてもよい。たとえば、ソフトウェアコードは、特定のドメインまたは実行環境において作成されたビジネスまたはアプリケーションの論理または規則を表すことができる。アクティビティは、論理または規則を実施する1つまたは複数の作業項目またはその他のアクティビティを含むことができる。図4の実施形態において、アクティビティおよび関連する作業項目は、構造402またはその他の実行シーケンスに従って配列され実行される。
メタランタイムエンジンは、アクティビティに関連付けられている作業項目ごとに有効範囲または境界を定義する。この有効範囲または境界は、作業項目によりアクセスされる共用データまたはリソース、関連するプロパティ、ハンドラ、制約、イベントなどのような(たとえば、データ、メタデータなどの形態の)情報を含み、公開する。
次に、図5を参照すると、例示的な状態オートマトンは、アクティビティが遷移することのできる状態のセットを定義する。一般に、状態オートマトン500は、アクティビティの実行存続時間を定義する。図5の例示的なオートマトンにおいて、アクティビティは、メタランタイムエンジンがアクティビティを実行して遷移条件を評価すると、定義された状態のセットを経て遷移する。メタランタイムエンジンは、抽象オートマトンに従ってアクティビティの実行を実施する。1つの実施形態において、アクティビティの実行は、オートマトン500の状態および各状態の特定の可能な遷移に関して行われる。
1つの例示的なオートマトンは、初期化状態、実行状態、および閉じた状態を含む。図5の例において、状態オートマトン500は、初期化状態502、実行状態504、取り消し状態506、障害状態508、補正状態510、および閉じた状態512を含む。もう1つの実施形態において、1つまたは複数の追加の状態は、本発明の実施形態の範囲を逸脱することなく、状態オートマトン500で定義することができる。
一般に、状態オートマトン500は、状態のセットを経由するアクティビティの遷移を定義する1つまたは複数の遷移条件を備える。1つの実施形態において、第1のオートマトンが第1のアクティビティに関連付けられ、第2のオートマトンが第2のアクティビティに関連付けられている場合、第1のアクティビティの第1のオートマトンの遷移条件は、第2のアクティビティの第2のオートマトンの現在の状態に依存してもよい。
さらに、状態オートマトン500は、複合アクティビティにおいて作業項目またはアクティビティ間の1つまたは複数の関係を確立することができる。たとえば、関係規則の1つは、アクティビティツリーから閉じた状態512へとルートノードのメソッドまたは作業項目が遷移する前に、子ノードのすべての作業項目が初期化状態502または閉じた状態512でなければならないことを含むことができる。もう1つの規則は、アクティビティの子ノードの作業項目が実行状態504に遷移する前に、ルートノードの作業項目が実行状態504でなければならないことを指定することができる。
次に図6を参照すると、図は、本発明の実施形態によるワークフローアクティビティを処理するためのシステム600を示す。システム600は、図1の処理装置102のような処理装置、または処理装置の集合であってもよいプロセッサ602を含む。システム600はまた、プロセッサ602によってアクセス可能なデータを格納するためのストレージまたはメモリ領域604を含む。1つの実施形態において、システム600は、1つまたは複数のプロセッサまたは処理装置(たとえば、プロセッサ602)、システムメモリ(たとえば、メモリ領域604)、およびプロセッサ602を含むさまざまなシステムコンポーネントをメモリ領域604に結合するその他のコンポーネントを有するコンピュータであってもよい。
たとえば、メモリ領域604は、ワークフロー(たとえば、図3のワークフロー300)で処理するための複数のアクティビティ606を格納する。複数のアクティビティ606は各々、1つまたは複数の作業項目を含み、作業項目は、ツリー構造(図4を参照)などの階層構造に編成することができる。複数のアクティビティ606を処理する際、プロセッサ602はスケジューラ608にアクセスするか、またはスケジューラ608を実行する。スケジューラ608は、作業項目(たとえば、作業キュー)のキュー610、および項目をデキューして、キュー610が空になるまでデキューした作業項目に関連付けられた作業を実行する対応する実施態様を呼び出すディスパッチャ612を含む。キュー610内の各作業単位は、アクティビティによって実施されるメソッドに対応する。メソッドは、実行ハンドラと呼ぶことができる。所定のアクティビティの完全な実行は、それ以前の時点においてキュー610にエンキューされた実行ハンドラのセットの呼び出しおよび実行まで及ぶことができる。
図5の状態オートマトン500のような状態オートマトンは、ワークフローアクティビティの作業項目(たとえば、作業項目622)の実行フローを定義する。プロセッサ608は、スケジューラ608などのコンポーネントまたはコンピュータ実行可能命令のセットを介して複数のアクティビティ606の作業項目にアクセスして作業項目622を初期化し、作業項目622をキュー610にエンキューするかまたは格納する。たとえば、図6に示されるように、作業項目622−1は初期化され、キュー610にエンキューされる。次に作業項目622−1は、実行のために実行状態(たとえば、図5の実行状態504)に遷移する前に、ディスパッチャ612によってキュー610からデキューされるかまたは削除される。
1つの例において、作業項目622−1は、「requesting input from a user」の関数を実行するためのアクティビティメソッドまたはアクティビティオペレーション624、ルーチン、またはコードの集合を含む。1つまたは複数のその他のアクティビティメソッド、アクティビティオペレーション、ルーチン、またはコードは、本発明の態様の範囲を逸脱することなく作業項目622の各々に含めることができる。
ディスパッチャ612が作業項目622をディスパッチすると、プロセッサ602は、614において作業項目622の各々でメソッド624を実行する。作業項目622−1の例において、プロセッサ602は、要求された情報またはデータを入力するためのユーザーインターフェイス(UI)をユーザーに供給することができる。もう1つの実施形態において、プロセッサ602は、入力のために外部データソースに接続またはアクセスすることができる。アクティビティメソッドまたはアクティビティオペレーション624が完了すると、プロセッサ602は、616において作業項目622−1の実行を完了する。
代替として、プロセッサ602は、その後の取り出しおよび継続実行のために、618において作業項目(たとえば、作業項目622−1)の実行状態を不動態化するかまたはデータストア620に取り込むことができる。
作業項目622−1の実行中のパラメータまたは条件に応じて、作業項目622−1は、取り消し状態(たとえば、図5の取り消し状態506)または障害状態(たとえば、図5の障害状態508)へと進むことができる。1つの実施形態において、作業項目422−1は、取り消し状態から障害状態に進むことができる。代替実施形態において、補正状態(たとえば、図5の補正状態510)は、障害または例外が発生した場合に実行すべきオペレーションまたは関数のセットを記述する。
次に図7を参照すると、例示的な流れ図は、継続ベースのランタイムの抽象実行モデルの動作を示している。方法は、702において、ワークフローでアクティビティとの関連付けのためのオートマトンを定義するステップを含む。定義されるオートマトンは、それに関連付けられている状態のセット、および状態のセットを経由するアクティビティの遷移を定義する1つまたは複数の遷移条件を有する。アクティビティをある状態から別の状態に遷移する(またはアクティビティが遷移できるようにする)前に、方法は、遷移条件を検査するステップを含む。1つの実施形態において、オートマトンは、ユーザー、アプリケーションプログラム、オペレーティングシステム、またはその他のソースから受け取られる。
方法は、704において、オートマトンの各々の状態に対応する1つまたは複数のメソッドを定義する。たとえば、アクティビティのメソッドは、ユーザーによって定義され、ユーザーからランタイムによって受け取られ、アクティビティに関連付けられているオートマトンの少なくとも1つの状態に関連付けられてもよい。たとえば、定義されたメソッドは、アクティビティを表すデータ構造に関連付けることができる。
固定の機能を備える管理対象実行環境を仮想化するメタランタイムエンジンは、706において、定義されたオートマトンおよび定義されたメソッドに基づいてアクティビティを含むプログラムフラグメントを実行する。方法は、708において、実行しているプログラムフラグメントに向けられた中断信号を受け取るステップと、受け取った中断信号に応答してプログラムフラグメントに関連付けられている継続データを決定するステップと、710において、決定された継続データをメモリ領域に格納するステップとを含む。継続データは、プログラムフラグメントの継続を表す。方法はさらに、712において、プログラムフラグメントに関連付けられている1つまたは複数のリソースを識別して、識別されたリソースを解放するステップを含む。
1つの実施形態において、プログラムフラグメントの実行は、各々の出現が継続として存続する一時的なものである。継続データは、1つの実施形態において、メタランタイムエンジンに関連付けられているランタイム状態およびプログラムフラグメントに関連付けられているアプリケーション状態を含むアクティビティ実行コンテキストを表す。継続のデータ境界は、たとえば、周囲を取り巻くコンテキストの状態に対する変数の存在期間、有効範囲、および結合を決定することにより定義される。
したがって、再開信号は、たとえば、データをプログラムフラグメントが消費できるようになっている場合、プログラムフラグメントに向けることができる。この再開信号に応答して、方法は、メモリ領域に格納されている継続データにアクセスし、アクセスした継続データを実行マシンに関連付けられている実行メモリにロードする。方法は、714において、ロードされた継続データに基づいてプログラムフラグメントの実行を再開する。一般に、方法のこれらの態様は、プログラムフラグメントの再アクティブ化または再開始と呼ばれてもよい。
図2のコンピュータ206および図6のプロセッサ602は、汎用コンピューティング装置の例である。1つの実施形態において、コンピュータは、本明細書に示され説明されている他の図面での使用に適している。コンピュータは、1つまたは複数のプロセッサまたは処理装置、およびシステムメモリを備える。コンピュータは通常、少なくともある種の形態のコンピュータ可読媒体を備える。揮発性および不揮発性媒体の両方、取り外し可能および固定式の媒体を含むコンピュータ可読媒体は、コンピュータがアクセスすることができる任意の使用可能な媒体であってもよい。一例として、コンピュータ可読媒体は、コンピュータ記憶媒体および通信媒体を備えるが、これらに限定されることはない。コンピュータ記憶媒体は、コンピュータ可読命令、データ構造、プログラムモジュールおよびその他のデータなどの情報のストレージのための任意の方法または技術において実施された揮発性および不揮発性の、取り外し可能および固定式の媒体を含む。コンピュータ記憶媒体は、RAM、ROM、EEPROM、フラッシュメモリその他のメモリ技術、CD−ROM、DVD(デジタル多用途ディスク)その他の光ディスクストレージ、磁気カセット、磁気テープ、磁気ディスクストレージその他の磁気記憶装置、あるいは望ましい情報を格納するために使用することができ、コンピュータによってアクセスすることができる他の媒体を含む。通信媒体は通常、コンピュータ可読命令、データ構造、プログラムモジュール、またはその他のデータを、搬送波または他のトランスポート機構のような変調データ信号で具現し、任意の情報伝達媒体を含む。当業者であれば変調データ信号を熟知しているが、これは1つまたは複数の特性セットを備えるか、または信号の情報をエンコードするような方法で変更された信号である。有線ネットワークまたは直接配線接続のような有線媒体、および音響、RF、赤外線などの無線媒体は、通信媒体の例である。上記の任意の組み合わせも、コンピュータ可読媒体の範囲に含まれる。
システムメモリは、取り外し可能および/または固定式、揮発性および/または不揮発性のメモリの形態のコンピュータ記憶媒体を含む。コンピュータはまた、他の取り外し可能/固定式、揮発性/不揮発性のコンピュータ記憶媒体を含むこともできる。
コンピュータは、リモートコンピュータなど、1つまたは複数のリモートコンピュータへの論理接続を使用するネットワーク化された環境において動作することができる。リモートコンピュータは、パーソナルコンピュータ、サーバー、ルーター、ネットワークPC、ピアデバイスまたはその他の共通ネットワークノードなどであってもよく、通常はコンピュータに関連して上記で説明されている要素の多くまたはすべてを含む。
コンピュータを含む例示的なコンピューティングシステム環境に関連して説明してきたが、本発明の実施形態は、数多くの他の汎用または特殊用途のコンピューティングシステム環境または構成で動作することができる。コンピューティングシステム環境は、本発明の態様の使用の範囲または機能にいかなる制限を提案することも意図するものではない。さらに、コンピューティングシステム環境は、例示的なオペレーティング環境に示されるコンポーネントのいずれか1つまたはその組み合わせに関していかなる依存または要件も有するものと解釈されるべきではない。本発明の態様と共に使用するために最適な既知のコンピュータシステム、環境、および/または構成の例は、パーソナルコンピュータ、サーバーコンピュータ、ハンドヘルドまたはラップトップ装置、マルチプロセッサシステム、マイクロプロセッサベースのシステム、セットトップボックス、プログラマブル家庭用電化製品、携帯電話、ネットワークPC、ミニコンピュータ、メインフレームコンピュータ、上記のシステムまたは装置のいずれかを含む分散コンピューティング環境などを含むが、これらに限定されることはない。
本発明の実施形態は、1つまたは複数のコンポーネントまたはプログラムモジュールに編成され、1つまたは複数のコンピュータまたは他の装置によって実行されるコンピュータ実行可能命令の一般的なコンテキストに即して説明することができる。コンピュータのデータプロセッサは、コンピュータのさまざまなコンピュータ可読記憶媒体にそれぞれ別の点で格納されたコンピュータ実行可能命令によりプログラムすることができる。一般に、プログラムモジュールは、特定のタスクを実行するかまたは特定の抽象データタイプを実施するルーチン、プログラム、オブジェクト、コンポーネント、データ構造を含むが、これらに限定されることはない。本発明の態様は、そのようなコンポーネントまたはモジュールの任意の数および編成で実装することができる。たとえば、本発明の態様は、図面に示され、本明細書において説明されている特定のコンピュータ実行可能命令あるいは特定のコンポーネントまたはモジュールに限定されることはない。本発明のその他の実施形態は、本明細書において示され説明されている機能よりも多いかまたは少ない機能を有するさまざまなコンピュータ実行可能命令またはコンポーネントを含むことができる。動作中、コンピュータは、図面に示されているようなコンピュータ実行可能命令を実行して、本発明の態様を実施する。本発明の態様はまた、タスクが通信ネットワークを通じてリンクされたリモート処理装置によって実行される分散コンピューティング環境においても実施することができる。分散コンピューティング環境において、プログラムモジュールは、記憶装置を含むローカルおよびリモートのコンピュータ記憶媒体に配置することができる。
ソフトウェアアーキテクチャのコンテキストにおけるインターフェイスは、ソフトウェアモジュール、コンポーネント、コード部分、またはコンピュータ実行可能命令のその他のシーケンスを含む。インターフェイスは、たとえば、第1のモジュールに代わってコンピューティングタスクを実行するように第2のモジュールにアクセスする第1のモジュールを含む。第1および第2のモジュールは、一例として、オペレーティングシステムによって提供されるようなアプリケーションプログラミングインターフェイス(API)、(たとえば、ピアツーピアアプリケーション通信の)コンポーネントオブジェクトモデル(COM)インターフェイス、および(たとえば、Webサービス間の通信の)拡張マークアップ言語メタデータ交換(XMI)インターフェイスを含む。インターフェイスは、Java(登録商標)2 Platform Enterprise Edition(J2EE)、COM、または分散COM(DCOM)の例におけるような、密結合の同期実施であってもよい。代替として、あるいはこれに加えて、インターフェイスは、(たとえば、simple object access protocolを使用する)Webサービスにおけるような、疎結合の非同期実施であってもよい。一般に、インターフェイスは、密結合、疎結合、同期、および非同期の特性の任意の組み合わせを含む。さらに、インターフェイスは、標準プロトコル、専有プロトコル、または標準および専有プロトコルの任意の組み合わせに準拠することができる。本明細書に説明されているインターフェイスはすべて、単一のインターフェイスの一部であってもよいか、または別個のインターフェイスとして実装されてもよく、それらの組み合わせであってもよい。インターフェイスは、ローカルに、またはリモートに実行して、機能を提供することができる。さらに、インターフェイスは、本明細書において示されるかまたは説明されている機能よりも多いかまたは少ない機能を含むことができる。
以下の例は、本発明の実施形態をさらに説明する。制御フローは、コンパイル時に子アクティビティの数が不明のとき、事実上、動的であると見なされる。たとえば、標準的なドキュメントレビュープロセスをモデル化する複合アクティビティは、基本レビュアーアクティビティのセットを並行して実行することによってメッセージをレビュアーに送信する。しかし、レビュアーの数はプログラムが作成される時点で静的に知られていないために、正確な数量の複合アクティビティの子はその時点において構成することができないこともある。そのような場合、複合アクティビティは、テンプレートとしての役割を果たす単一のレビュアーアクティビティで構成され、実際の使用可能なレビュアーに基づいて実行時点で動的インスタンスのセットを生成する。これらの構成体の制御フローの態様が事実上動的であるだけではなく、局所性および結合を含むランタイム状態も動的である。たとえば、状態マシンをモデル化するアクティビティは、状態を表す子アクティビティのセットで構成される。各状態アクティビティは、メタプログラムの状態、または所定の時点においてフリーズした状態マシンを表す継続である。継続は、本発明の態様により、複数回、任意の順序で実行することができる。
ループ構成体は、動的制御フローの特殊事例と見なすことができる。たとえば、ForEach構成体をモデル化するアクティビティの意味は、各反復がForEachアクティビティ内に含まれる状態の明確な範囲を作成すべきであることを指示する。状態の有効範囲は、状態の局所性、参照整合性の管理または有効範囲にわたる状態の結合、および所定の有効範囲に囲まれた状態の存在期間または存続時間の管理を伴う。本発明の態様により、プログラム状態は、プログラムツリーのアクティビティのフィールドおよび依存属性に関して取り込まれる。このようにして、ループ構成体をモデル化するアクティビティのローカルまたは一時変数の概念は、動的にアクティビティのインスタンスを効果的に生成することによって作成される。これは、ループの本体を表すテンプレートアクティビティに基づいて、反復の局所状態を取り込む。
さらに、非耐久性/非トランザクションのプログラミング環境におけるプログラム構成体とは異なり、アクティビティは、その後のプログラム実行中に補正されるよう要求することができる。たとえば、正常に完了したDoWhileアクティビティの反復は、その親アクティビティが失敗した場合、そのライフサイクルの後の時点で補正することができる。本発明の態様は、継続として各反復に対応するアクティビティの実行状態を取り込んで格納することにより、反復ごとのそのような補正(たとえば、undoセマンティックを実施する)を可能にする。格納された実行状態を表す継続は、アクティビティのいずれかに関連付けられた補正メソッドが実行を試みるとき、実行の元の状態を使用可能にするために、後に呼び出すことができる。
本明細書に示され説明される本発明の実施形態において、特に指定のない限り、実行の順序またはオペレーションのパフォーマンスは必須ではない。つまり、特に指定のない限り、オペレーションは任意の順序で実行することができ、本発明の実施形態に含まれるオペレーションは、本明細書に開示されるオペレーションよりも多いか、または少なくてもよい。たとえば、特定のオペレーションを、別のオペレーションの前、別のオペレーションと同時、または別のオペレーションの後に実行または実施することは、本発明の態様の範囲内に含まれると考えられる。
本発明の態様の要素を提示する場合、「a」、「an」、「the」、および「said」の冠詞は、1つまたは複数の要素があることを意味するよう意図されている。「comprising」、「including」、および「having」は、包括的であるよう意図され、一覧されている要素の他に追加の要素がある可能性もあることを意味する。
本発明の態様を詳細に説明してきたが、添付の特許請求の範囲に定義されている本発明の態様の範囲を逸脱することなく変更および変形が可能であることが明らかとなろう。本発明の態様の範囲を逸脱することなく、上記の構成体、製品、および方法にさまざまな変更を行うことができるため、上記の説明に含まれ添付の図面に示されるすべての事項が、限定的なものではなく、例示的なものとして解釈されるべきであることが意図される。
本発明の態様の例示的なオペレーティング環境を示すブロック図である。 本発明の実施形態による継続ベースのワークフローフレームワークを示す例示的なブロック図である。 本発明の実施形態によるワークフローを示す例示的なブロック図である。 本発明の実施形態によるワークフローアクティビティの階層構造を示す図である。 本発明の実施形態によるアクティビティの例示的な状態オートマトンを示す図である。 本発明の実施形態によるワークフローアクティビティを処理するための例示的なシステムを示すブロック図である。 継続ベースのランタイムの抽象実行モデルの動作を示す例示的な流れ図である。

Claims (20)

  1. ワークフローにおいて実世界のプロセスをモデル化する方法であって、
    ワークフローにおいてアクティビティ606との関連付けのためにオートマトン500を定義するステップであって、前記定義されたオートマトン500はそこに関連付けられている状態のセットを有するステップと、
    前記オートマトン500の各々の前記状態に対応する1つまたは複数のメソッドを定義するステップであって、前記定義されたメソッドは前記アクティビティ606を表すデータ構造に関連付けられているステップと、
    固定の機能を備える管理対象実行環境106を仮想化するメタランタイムエンジン202により、前記定義されたオートマトン500および前記定義されたメソッドに基づいて前記アクティビティ606を含むプログラムフラグメントを実行するステップと、
    前記実行しているプログラムフラグメントに向けられた中断信号を受け取るステップと、
    前記受け取った中断信号に応答して前記プログラムフラグメントに関連付けられている継続データ210を決定するステップであって、前記継続データ210は前記プログラムフラグメントの継続を表すステップと、
    前記決定された継続データ210をメモリ領域208に格納するステップと、
    前記プログラムフラグメントに関連付けられている1つまたは複数のリソースを識別するステップと、
    前記識別されたリソースを解放するステップとを備えることを特徴とする方法。
  2. 前記プログラムフラグメントに向けられた再開信号を受け取るステップと、
    前記メモリ領域に格納された前記継続データにアクセスするステップと、
    前記アクセスした継続データを前記実行マシンに関連付けられている実行メモリにロードするステップと、
    前記ロードされた継続データに基づいて前記プログラムフラグメントの実行を再開するステップとをさらに備えることを特徴とする請求項1に記載の方法。
  3. 前記実行マシンは、前記管理対象実行環境の態様であるドメイン固有命令コード、スレッド、同期化プリミティブ、実行マシン、オブジェクト存続時間、ソースフォーマット、例外、障害、障害伝搬、および障害処理のうちの1つまたは複数を仮想化するように動作することを特徴とする請求項1に記載の方法。
  4. 1つまたは複数のメソッドを定義するステップは、前記アクティビティに関連付けられている前記オートマトンの少なくとも1つの前記状態との関連付けのためのメソッドをユーザーから受け取るステップを備えることを特徴とする請求項1に記載の方法。
  5. 前記オートマトンは、状態の前記セットを経由する前記アクティビティの遷移を定義する1つまたは複数の遷移条件を備え、前記アクティビティが前記状態を経由して遷移できるようにする前に前記遷移条件を検査するステップをさらに備えることを特徴とする請求項1に記載の方法。
  6. 1つまたは複数のコンピュータ可読媒体は、請求項1に記載の方法を実行するためのコンピュータ実行可能命令を有することを特徴とする請求項1に記載の方法。
  7. ワークフローにおいて実世界のプロセスをモデル化するシステムであって、
    プログラムフラグメントの継続を表す継続データ210を格納するためのメモリ領域208であって、前記プログラムフラグメントはワークフローにおいてアクティビティ606に関連付けられ、前記メモリ領域208は固定の機能を有する管理対象実行環境106を仮想化するためのメタランタイムエンジン202をさらに格納し、前記メタランタイムエンジン202はそこに関連付けられている状態のセットを有するオートマトン500を表す実行マシンを有し、1つまたは複数のメソッドは前記状態の各々に対応し、前記メソッドは前記アクティビティ606を表すデータ構造に関連付けられ、前記メタランタイムエンジン202は前記実行マシンに基づいて前記プログラムフラグメントを実行するメモリ領域208と、
    前記実行しているプログラムフラグメントに関連付けられている前記継続データ210を取り込み、
    前記取り込まれた継続データ210を前記メモリ領域208に格納し、
    前記プログラムフラグメントに関連付けられている1つまたは複数のリソースを解放するためのコンピュータ実行可能命令を実行するように構成されたプロセッサ602とを備えることを特徴とするシステム。
  8. 前記取り込むステップおよび前記格納するステップは、前記プログラムフラグメントのピックル(直列化)、前記プログラムフラグメントの除去、前記プログラムフラグメントの脱水、および/または前記プログラムフラグメントのアンロードのうちの1つまたは複数に対応することを特徴とする請求項7に記載のシステム。
  9. 前記メタランタイムエンジンは、前記管理対象実行環境からのスレッド、スタック、およびヒープのうちの1つまたは複数を使用することを特徴とする請求項7に記載のシステム。
  10. 前記継続データはプログラムカウンタを含み、前記プログラムカウンタは次に実行するようスケジュールされた例外ハンドラを識別することを特徴とする請求項7に記載のシステム。
  11. 前記メモリ領域は、アプリケーション状態およびランタイム状態を含む継続データを格納することを特徴とする請求項7に記載のシステム。
  12. 前記アプリケーション状態はアクティビティオブジェクトのリストを含むことを特徴とする請求項11に記載のシステム。
  13. 前記ランタイム状態はプログラムカウンタを含むことを特徴とする請求項11に記載のシステム。
  14. 前記プロセッサは、
    前記メモリ領域に格納された前記継続データにアクセスし、
    前記アクセスした継続データを前記メタランタイムに関連付けられている実行メモリにロードし、
    前記ロードされた継続データに基づいて前記プログラムフラグメントの実行を再開するためのコンピュータ実行可能命令を実行するようにさらに構成されることを特徴とする請求項7に記載のシステム。
  15. 前記ロードするステップおよび前記再開するステップは、再アクティブ化および再開始のうちの1つまたは複数に対応することを特徴とする請求項14に記載のシステム。
  16. 前記メタランタイムを提供するための手段、および前記プログラムフラグメントに関連付けられている継続を取り込むための手段をさらに備えることを特徴とする請求項7に記載のシステム。
  17. ユーザーから受け取られるオートマトンをさらに備え、前記メタランタイムエンジンは前記受け取ったオートマトンに基づいて前記プログラムフラグメントを実行することを特徴とする請求項7に記載のシステム。
  18. 前記オートマトンは、状態の前記セットを経由する前記アクティビティの遷移を定義する1つまたは複数の遷移条件を備え、第1のアクティビティに関連付けられている第1のオートマトンと第2のアクティビティに関連付けられている第2のオートマトンとをさらに備え、前記第1のアクティビティの前記第1のオートマトンの遷移条件は前記第2のアクティビティの前記第2のオートマトンの現在の状態に依存することを特徴とする請求項7に記載のシステム。
  19. ワークフロー不動態化をモデル化するためのコンピュータ実行可能モジュールを有する1つまたは複数のコンピュータ可読媒体であって、前記モジュールは、
    ワークフローにおいてアクティビティ606との関連付けのためのオートマトン500を定義するオートマトンモジュール212であって、前記定義されたオートマトン500はそこに関連付けられている状態のセットを有し、1つまたは複数のメソッドは前記状態の各々に対応するオートマトンモジュール212と、
    前記オートマトンモジュール212によって定義された前記オートマトン500に基づいて前記アクティビティ606を含むプログラムフラグメントを実行するための実行マシンモジュール214と、
    前記実行マシンモジュール214によって実行されている前記プログラムフラグメントに向けられた中断信号の受け取りに応答して、前記プログラムフラグメントの継続データ210を取り込み、前記プログラムフラグメントに関連付けられているリソースを解放する継続モジュール216であって、前記継続データ210は前記プログラムフラグメントの継続を表す継続モジュール216とを備えることを特徴とするコンピュータ可読媒体。
  20. 前記実行マシンモジュールによって実行されている前記プログラムフラグメントに向けられた再開信号の受け取りに応答して、前記継続モジュールによって取り込まれた前記プログラムフラグメントの前記継続データを復元するための再開モジュールをさらに備え、前記実行マシンモジュールは前記復元された継続データに基づいて前記プログラムフラグメントの実行を再開することを特徴とする請求項19に記載のコンピュータ可読媒体。
JP2009502784A 2006-03-30 2007-02-21 継続ベースのメタランタイムのための抽象実行モデル Withdrawn JP2009532754A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/393,345 US20070239505A1 (en) 2006-03-30 2006-03-30 Abstract execution model for a continuation-based meta-runtime
PCT/US2007/004448 WO2007117360A1 (en) 2006-03-30 2007-02-21 Abstract execution model for a continuation-based meta-runtime

Publications (1)

Publication Number Publication Date
JP2009532754A true JP2009532754A (ja) 2009-09-10

Family

ID=38576580

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009502784A Withdrawn JP2009532754A (ja) 2006-03-30 2007-02-21 継続ベースのメタランタイムのための抽象実行モデル

Country Status (11)

Country Link
US (1) US20070239505A1 (ja)
EP (1) EP2013846A1 (ja)
JP (1) JP2009532754A (ja)
KR (1) KR20080106561A (ja)
CN (1) CN101416214A (ja)
AU (1) AU2007235610A1 (ja)
BR (1) BRPI0709242A2 (ja)
CA (1) CA2643329A1 (ja)
MX (1) MX2008011914A (ja)
RU (1) RU2008138698A (ja)
WO (1) WO2007117360A1 (ja)

Families Citing this family (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060288332A1 (en) * 2005-06-21 2006-12-21 Microsoft Corporation Workflow debugger
CA2620566A1 (en) 2005-08-30 2007-03-08 Boehringer Ingelheim International Gmbh Glucopyranosyl-substituted benzyl-benzene derivatives, medicaments containing such compounds, their use and process for their manufacture
US8849691B2 (en) 2005-12-29 2014-09-30 Microsoft Corporation Modeling user input and interaction in workflow based applications
US7739135B2 (en) * 2006-03-30 2010-06-15 Microsoft Corporation Asynchronous fault handling in process-centric programs
US8078555B2 (en) * 2007-12-14 2011-12-13 Microsoft Corporation Decoupling static program data and execution data
US8181155B2 (en) * 2008-02-29 2012-05-15 Microsoft Corporation Unified expression and location framework
US8161492B2 (en) * 2008-04-15 2012-04-17 Microsoft Corporation Continuation based runtimes in transactions
US10417051B2 (en) * 2008-05-23 2019-09-17 International Business Machines Corporation Synchronizing shared resources in an order processing environment using a synchronization component
US8255451B2 (en) * 2008-09-17 2012-08-28 Microsoft Corporation Technologies for detecting erroneous resumptions in a continuation based runtime
US8336035B2 (en) * 2008-12-16 2012-12-18 Microsoft Corporation Customizable dynamic language expression interpreter
US9354847B2 (en) 2008-12-29 2016-05-31 Microsoft Technology Licensing, Llc Interface infrastructure for a continuation based runtime
US8683432B2 (en) * 2009-03-20 2014-03-25 Microsoft Corporation Providing execution context in continuation based runtimes
US20100293538A1 (en) * 2009-05-15 2010-11-18 Microsoft Corporation Dynamic program updating in a continuation based runtime
US8307368B2 (en) * 2009-05-26 2012-11-06 Microsoft Corporation Locality-based scheduling in continuation-based runtimes
US8863001B2 (en) 2010-06-11 2014-10-14 Microsoft Corporation Web application home button
US8793650B2 (en) 2010-06-11 2014-07-29 Microsoft Corporation Dynamic web application notifications including task bar overlays
US9164671B2 (en) * 2010-06-11 2015-10-20 Microsoft Technology Licensing, Llc Web application navigation domains
US8671384B2 (en) 2010-06-11 2014-03-11 Microsoft Corporation Web application pinning including task bar pinning
US9536264B2 (en) 2011-11-14 2017-01-03 Microsoft Technology Licensing, Llc Host agnostic messaging in a continuation based runtime
US8869107B2 (en) * 2012-01-12 2014-10-21 Microsoft Corporation Declarative dynamic control flow in continuation-based runtime
US9292342B2 (en) * 2012-12-26 2016-03-22 Microsoft Technology Licensing, Llc Schedule based execution with extensible continuation based actions
US9317323B2 (en) 2012-12-26 2016-04-19 Microsoft Technology Licensing, Llc Dynamic execution log in a distributed system
US9043773B2 (en) 2013-03-15 2015-05-26 Intel Corporation Identification and management of unsafe optimizations
EP3025280A4 (en) * 2013-05-21 2017-03-15 Citrix Systems Inc. User-defined workflows in app-based collaborative workspace system
US9304888B2 (en) 2013-06-25 2016-04-05 Microsoft Technology Licensing, Llc Consistent modeling and execution of time constructs in business processes
CN106611297A (zh) * 2015-10-21 2017-05-03 中兴通讯股份有限公司 工作流异常处理方法及系统
CN106250227A (zh) * 2016-08-02 2016-12-21 合肥奇也信息科技有限公司 一种寻求计算机程序执行定义目标的方法
US11366681B2 (en) 2019-03-27 2022-06-21 Amazon Technologies, Inc. Chaining virtual machines
WO2020198539A1 (en) * 2019-03-27 2020-10-01 Amazon Technologies, Inc. Continuation workflows
US11467858B2 (en) * 2019-03-27 2022-10-11 Amazon Technologies, Inc. Techniques for performing continuation workflows

Family Cites Families (101)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5301320A (en) * 1991-06-28 1994-04-05 Digital Equipment Corporation Workflow management and control system
US5390282A (en) * 1992-06-16 1995-02-14 John R. Koza Process for problem solving using spontaneously emergent self-replicating and self-improving entities
AU6133594A (en) * 1993-02-08 1994-08-29 Action Technologies, Inc. Method and apparatus for managing business processes
US5734837A (en) * 1994-01-14 1998-03-31 Action Technologies, Inc. Method and apparatus for building business process applications in terms of its workflows
US5485620A (en) * 1994-02-25 1996-01-16 Automation System And Products, Inc. Integrated control system for industrial automation applications
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
US6421700B1 (en) * 1995-12-22 2002-07-16 Xerox Corporation Method and system for work process support using independent system and user states
US5960200A (en) * 1996-05-03 1999-09-28 I-Cube System to transition an enterprise to a distributed infrastructure
US6427063B1 (en) * 1997-05-22 2002-07-30 Finali Corporation Agent based instruction system and method
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
US6028999A (en) * 1996-11-04 2000-02-22 International Business Machines Corporation System and method for non-sequential program statement execution with incomplete runtime information
EP0854431A3 (en) * 1997-01-20 2001-03-07 International Business Machines Corporation Events as activities in process models of workflow management systems
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
US6961954B1 (en) * 1997-10-27 2005-11-01 The Mitre Corporation Automated segmentation, information extraction, summarization, and presentation of broadcast news
US6115646A (en) * 1997-12-18 2000-09-05 Nortel Networks Limited Dynamic and generic process automation system
US6081665A (en) * 1997-12-19 2000-06-27 Newmonics Inc. Method for efficient soft real-time execution of portable byte code computer programs
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
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
US6728947B1 (en) * 1998-06-05 2004-04-27 R. R. Donnelley & Sons Company Workflow distributing apparatus and method
US6587969B1 (en) * 1998-06-22 2003-07-01 Mercury Interactive Corporation Software system and methods for testing the functionality of a transactional server
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
US6519595B1 (en) * 1999-03-02 2003-02-11 Nms Communications, Inc. Admission control, queue management, and shaping/scheduling for flows
US6789054B1 (en) * 1999-04-25 2004-09-07 Mahmoud A. Makhlouf Geometric display tools and methods for the visual specification, design automation, and control of adaptive real systems
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
US6405364B1 (en) * 1999-08-31 2002-06-11 Accenture Llp Building techniques in a development architecture framework
US7020697B1 (en) * 1999-10-01 2006-03-28 Accenture Llp Architectures for netcentric computing systems
US7412462B2 (en) * 2000-02-18 2008-08-12 Burnside Acquisition, Llc Data repository and method for promoting network storage of data
EP1277104A1 (en) * 2000-03-30 2003-01-22 Ideogramic APS Method for gesture based modeling
US6768986B2 (en) * 2000-04-03 2004-07-27 Business Objects, S.A. Mapping of an RDBMS schema onto a multidimensional data model
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
US20020032692A1 (en) * 2000-09-08 2002-03-14 Atsuhito Suzuki Workflow management method and workflow management system of controlling workflow process
WO2002029682A1 (en) * 2000-10-02 2002-04-11 International Projects Consultancy Services, Inc. Object-based workflow 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
US6954747B1 (en) * 2000-11-14 2005-10-11 Microsoft Corporation Methods for comparing versions of a program
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
US20020147606A1 (en) * 2001-03-14 2002-10-10 Norbert Hoffmann Application development method
US20030004746A1 (en) * 2001-04-24 2003-01-02 Ali Kheirolomoom Scenario based creation and device agnostic deployment of discrete and networked business services using process-centric assembly and visual configuration of web service components
CA2347647A1 (en) * 2001-05-15 2002-11-15 Ibm Canada Limited-Ibm Canada Limitee Storing and restoring snapshots of a computer process
US7089561B2 (en) * 2001-06-01 2006-08-08 Microsoft Corporation Methods and systems for creating and communicating with computer processes
US20020188644A1 (en) * 2001-06-08 2002-12-12 Verano Workflow automated task component manager
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
AU2002355575A1 (en) * 2001-08-08 2003-02-24 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
US20030177046A1 (en) * 2001-12-03 2003-09-18 John Socha-Leialoha Method and system for reusing components
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
WO2004002044A2 (en) * 2002-02-01 2003-12-31 John Fairweather A system for exchanging binary data
US7516447B2 (en) * 2002-02-22 2009-04-07 Bea Systems, Inc. Methods and apparatus for building, customizing and using software abstractions of external entities
US7441197B2 (en) * 2002-02-26 2008-10-21 Global Asset Protection Services, Llc Risk management information interface system and associated methods
US20030233374A1 (en) * 2002-03-14 2003-12-18 Ulrich Spinola Dynamic workflow process
US7251689B2 (en) * 2002-03-27 2007-07-31 International Business Machines Corporation Managing storage resources in decentralized networks
US20030195762A1 (en) * 2002-04-12 2003-10-16 David Gleason Automated workflow
US20030217054A1 (en) * 2002-04-15 2003-11-20 Bachman George E. Methods and apparatus for process, factory-floor, environmental, computer aided manufacturing-based or other control system with real-time data distribution
US7117484B2 (en) * 2002-04-16 2006-10-03 International Business Machines Corporation Recursive use of model based test generation for middleware validation
US7197553B2 (en) * 2002-04-19 2007-03-27 Nortel Networks Limited Network system having a virtual-service-module
US6688593B1 (en) * 2002-07-31 2004-02-10 Pitney Bowes Inc. Envelope transport turn module and ramp for an output portion of an inserter 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
US7437703B2 (en) * 2002-10-25 2008-10-14 Sap Ag Enterprise multi-agent software system with services able to call multiple engines and scheduling capability
US7062537B2 (en) * 2002-11-25 2006-06-13 Microsoft Corporation Workflow services architecture
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
CA2420479A1 (en) * 2003-02-13 2004-08-13 Ibm Canada Limited - Ibm Canada Limitee Flow debugging software and method
JP5154798B2 (ja) * 2003-05-07 2013-02-27 エスアーペー アーゲー 構造化ワークフローシステム及びコンピュータプログラム
US20050066002A1 (en) * 2003-07-31 2005-03-24 Arnold Teres Workflow compatible healthcare information message communication system
US8645420B2 (en) * 2003-08-05 2014-02-04 Accenture Global Services Limited Methodology framework and delivery vehicle
CA2442796A1 (en) * 2003-09-26 2005-03-26 Ibm Canada Limited - Ibm Canada Limitee Binding a workflow engine to a data model
CN1867897B (zh) * 2003-10-02 2011-05-18 捷讯研究有限公司 扩展基于脚本的应用程序的能力和执行效率的系统和方法
US7093207B1 (en) * 2003-11-17 2006-08-15 Kla-Tencor Technologies Corporation Data analysis flow engine
US7137033B2 (en) * 2003-11-20 2006-11-14 International Business Machines Corporation Method, system, and program for synchronizing subtasks using sequence numbers
US7308561B2 (en) * 2003-12-12 2007-12-11 Alcatel Lucent Fast, scalable pattern-matching engine
US7519960B2 (en) * 2003-12-19 2009-04-14 International Business Machines Corporation Method and system for debugging business process flow
US7650344B2 (en) * 2004-02-09 2010-01-19 Coremetrics, Inc. System and method of managing software product-line customizations
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
US8166554B2 (en) * 2004-02-26 2012-04-24 Vmware, Inc. Secure enterprise network
US20060064335A1 (en) * 2004-08-17 2006-03-23 International Business Machines Corporation Method, system, and storage medium for performing business process modeling
US20060159077A1 (en) * 2004-08-20 2006-07-20 Vanecek George Jr Service-oriented middleware for managing interoperability of heterogeneous elements of integrated systems
US20060069605A1 (en) * 2004-09-29 2006-03-30 Microsoft Corporation Workflow association in a collaborative application
US7631291B2 (en) * 2004-10-01 2009-12-08 Microsoft Corporation Declarative representation for an extensible workflow model
US20060074735A1 (en) * 2004-10-01 2006-04-06 Microsoft Corporation Ink-enabled workflow authoring
US20060074704A1 (en) * 2004-10-01 2006-04-06 Microsoft Corporation Framework to model cross-cutting behavioral concerns in the workflow domain
US7464366B2 (en) * 2004-10-01 2008-12-09 Microsoft Corporation Programming interface for a componentized and extensible workflow model
US8478616B2 (en) * 2004-10-29 2013-07-02 FrontRange Solutions USA Inc. Business application development and execution environment
US20060112122A1 (en) * 2004-11-23 2006-05-25 International Business Machines Corporation Method, system, and storage medium for implementing business process modules
US7493594B2 (en) * 2005-03-14 2009-02-17 Research In Motion System and method for designing component based applications
WO2006110981A1 (en) * 2005-04-18 2006-10-26 Research In Motion Limited System and method for enabling assisted visual development of workflow for application tasks
US20060241954A1 (en) * 2005-04-22 2006-10-26 International Business Machines Corporation Method and system for adaptive action management for business solutions

Also Published As

Publication number Publication date
WO2007117360A1 (en) 2007-10-18
KR20080106561A (ko) 2008-12-08
CA2643329A1 (en) 2007-10-18
CN101416214A (zh) 2009-04-22
BRPI0709242A2 (pt) 2011-07-12
AU2007235610A1 (en) 2007-10-18
EP2013846A1 (en) 2009-01-14
MX2008011914A (es) 2008-09-29
RU2008138698A (ru) 2010-04-10
US20070239505A1 (en) 2007-10-11

Similar Documents

Publication Publication Date Title
JP5140067B2 (ja) ワークフローにおいて継続をモデル化するフレームワーク
JP2009532754A (ja) 継続ベースのメタランタイムのための抽象実行モデル
JP5297370B2 (ja) プロセス中心型プログラムにおける非同期フォールト処理
US8024405B2 (en) Declarative model for concurrency-control across lightweight threads
JP2009532759A (ja) プロセス中心プログラムの取り消しをモデル化するフレームワーク
US9015533B1 (en) Error handling for asynchronous applications
US9170915B1 (en) Replay to reconstruct program state
US9152533B1 (en) Asynchronous programming system
Cabano et al. Designing a bpel orchestration engine based on respect tuple centres

Legal Events

Date Code Title Description
A300 Application deemed to be withdrawn because no request for examination was validly filed

Free format text: JAPANESE INTERMEDIATE CODE: A300

Effective date: 20100511