JP5006382B2 - 軽量スレッドの並行処理制御のための宣言型モデル - Google Patents

軽量スレッドの並行処理制御のための宣言型モデル Download PDF

Info

Publication number
JP5006382B2
JP5006382B2 JP2009502787A JP2009502787A JP5006382B2 JP 5006382 B2 JP5006382 B2 JP 5006382B2 JP 2009502787 A JP2009502787 A JP 2009502787A JP 2009502787 A JP2009502787 A JP 2009502787A JP 5006382 B2 JP5006382 B2 JP 5006382B2
Authority
JP
Japan
Prior art keywords
work items
synchronization
execution thread
handle
virtual 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.)
Expired - Fee Related
Application number
JP2009502787A
Other languages
English (en)
Other versions
JP2009532756A (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 JP2009532756A publication Critical patent/JP2009532756A/ja
Application granted granted Critical
Publication of JP5006382B2 publication Critical patent/JP5006382B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

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/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • G06F9/526Mutual exclusion algorithms
    • 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/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • 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/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/5038Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/52Indexing scheme relating to G06F9/52
    • G06F2209/522Manager

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Multi Processors (AREA)

Description

プロセス指向プログラムまたはプロセス中心プログラムは進化し、自立エージェント同士の間で現実世界のインタラクションをモデリングしている複雑な命令の処理を可能にした。既存のシステムは、ビジネス上の問題をモデリングすることによりビジネス上の問題を高水準のワークフローにマッピングすることを試みる。しかしながら、現実世界のワークフローは、(a)実行及びモデリングの複雑さ、(b)設計時におけるフロー構造についての知識、(c)静的に定義された、またはアドホック/動的、(d)そのライフサイクルの様々なポイントにおけるフローのオーサリング及び編集の容易さ、(e)ビジネスロジックとコアワークフロープロセスとの弱い関連性または強い関連性、などの様々な次元で変化する。既存のモデルは、これらの要因全てに対応することができない。
さらに、大部分の既存のワークフローモデルは、言語ベースのアプローチ(例えば、BPEL4WS、XLANG/S、及びWSFL)またはアプリケーションベースのアプローチのいずれかに基づいている。言語ベースのアプローチは、事前定義された論理構成の閉集合を有する高水準ワークフロー言語であり、これはユーザ/プログラマがワークフロープロセスをモデル化するのに役立つ。ワークフロー言語は、論理構成の閉集合に対する意味情報の全てを扱い、これによってユーザはワークフローモデルを構築することができる。しかしながら、言語は、開発者が拡張することができず、ワークフローモデルを構成するプリミティブな閉集合であることを意味する。言語は、ワークフローシステムベンダーによって出荷される言語コンパイラに関係している。ワークフローシステム製品のベンダーだけが、製品の将来のバージョンにおいて新規な一組の論理構成を有する言語を拡張することによりモデルを拡張することができる。そのため、言語と関連しているコンパイラをアップグレードすることが必要となる。さらに、言語は、通常、他のプログラムによって容易にかつ効果的に用いられ得る機能または動作を宣言的(declaratively)に明示(expose)または定義しない。
アプリケーションベースのアプローチは、アプリケーションの範囲内で領域特化型の問題を解決するワークフロー機能を有するアプリケーションである。これらのアプリケーションは、真に拡張可能ではないし、プログラム可能なモデルも有していない。
さらに、既存のアプローチでは、複雑さ、先見、動的ワークフロー、オーサリングの容易さ、及び、ビジネスロジックとコアワークフローとの関連の強さという問題が十分に扱われない。ワークフローの異なるクラスをモデル化する視覚的ワークフローデザイナ(visual workflow designers)を構築するのに利用できる、拡張可能で、カスタマイズ可能で、さらに再ホスト可能な(re-hostable)ワークフローデザイナのフレームワークはない。既存のシステムには、ユーザがグラフを用いてワークフロープロセスを設計しさらに開発者の選択したプログラミング言語のビジネスロジックに関連付けることができる、高速アプリケーション開発(RAD)スタイルのワークフローの設計経験が欠けている。
また、ワークフロープロセスは、ワークフロープロセスモデルの複数のステップにわたる分野横断的に直交しかつ錯綜した問題を取り扱う。例えば、ワークフロープロセスの一部は長い実行中のトランザクションに関与するように設計されているが、同じプロセスの他の部分は、同時実行用にまたは共有資源にアクセスするように設計されている。設計上の欠点のために、既存のシステムは、ユーザがアクティビティの同期実行またはインターリーブ実行を設計することを可能にする実行スレッドのインターリービングを提供できない。さらに、同じワークフロープロセスのさらに他の部分は追跡を必要とするが、他の部分はビジネスまたはアプリケーションレベルの例外を処理する。特定の動作をワークフロープロセスの1つまたは複数の部分に適用することが必要である。
いくつかのワークフローモデリングのアプローチは、全ての例外及び人間の介在を含むビジネスプロセス全体の完全なフローベースの記述を必要とするので、実行不可能である。これらのアプローチには例外が生じたときに追加機能を提供するものもあるが、他のアプローチではビジネスプロセスをモデリングするフローベースのアプローチの代わりに制約ベースのアプローチだけ用いる。既存のシステムは、フローベースのアプローチまたは制約ベースのアプローチのいずれかを実装する。かかるシステムは、多くの一般のビジネス状況をモデリングするにはあまりに柔軟性がない。これらのシステムにはまた、例外または中止を非同期に処理する能力がない。
本発明の実施形態では、実行スレッド用の同期ハンドルを用いて共有資源にアクセスする作業項目を同期的に実行する。軽量スレッドの効果的な並行処理制御で、本発明の態様は、同期ハンドルを用いて共有資源を識別し、作業項目に対する実行スレッドが他の作業項目と関連している他のスレッドによるアクセスを妨げることなしに共有資源にアクセスすることを可能にする。
この概要は、詳細な説明においてさらに後述する単純化した形式の概念の選択を導入するために提供されている。この概要は、請求された要件の重要な特徴または本質的な特徴を特定することを意図していないし、請求された要件の範囲を決定する補助として用いられることも意図していない。
他の特徴については、一部は明白であり、一部は以下で指摘される。
全図面にわたって、対応する参照文字は対応する部分を示す。
最初に図1を参照すると、ブロック図は、ワークフローなどの、プロセス中心のアクティビティ用プログラムを設計する既存のプログラミングパラダイムを示している。例えば、この図では、既存のプログラミングパラダイムの3つのレベルの仮想化モデルを示していて、管理された実行環境のレベルは最も高いレベルであり、処理装置は最も低いレベルである。このプログラム設計システムでは、管理された実行環境レベルにおいてさえ、プログラム、特にワークフロープロセスを処理するプロセス中心プログラムは、ワークフローのプロセス同士の間の複雑な相互作用に対応する能力及び効率性を欠いている。
特定の制約がソフトウェアまたはアプリケーションプログラムを設計することに関連しているということは当業者に公知である。この例では、オペレーティングシステムのソフトウェアプログラム104を記述するとき、プログラミングコードまたはプログラミングルーチンは、処理装置102のタイプまたは構成に依存する。処理装置102のタイプまたは構成は、コンピューティングアーキテクチャのタイプ(例えば、IBM(登録商標)互換機、APPLE(登録商標)コンピュータ、もしくは他のシステム)または他の制約に特有である。さらに、オペレーティングシステム104が適切に機能するために、プログラミング言語は概して、スタック、ヒープ、スレッドベースまたは他のハードウェア特有の構造などのデータ構造を正確に識別して利用する必要がある。
複雑なワークフロープロセスを処理する際に、既存のアプリケーションは、管理された実行環境106という概念(例えば、プログラムが機能または共通のオブジェクト指向クラスを共有することができるランタイム環境など)を用いる。そこで、1つのプログラミング言語で書かれたプログラムは、異なるプログラミング言語で書かれた他のプログラムの機能を呼び出してもよい。かかる実行環境では、異なるプログラミング言語によるこれらのプログラムは、中間言語にコンパイルされて、管理された実行環境106がパラメータ、引数、または異なるプログラムに対するスキーマもしくは機能を明示し、それによってプログラムは互いに相互作用することができる。
この実行環境106はプログラム同士の間で共通の通信環境を生成するが、実行環境106は、プロセス中心プログラムの複雑さ及び性能を処理するのに適していない様々な厳しい要求を含む。例えば、実行環境106では、プログラムが固有ファイル形式に一致することを必要とする。実行環境106ではまた、プログラムの機能または動作が実行環境106により定義される一定の機能または機能のクラスを用いることを必要とする。
本発明の実施形態は、図2の拡張可能な基礎またはフレームワーク202の上に構築され、既存のプログラミングモデルの欠点を克服する。いかなるプログラミング言語で書かれたプログラムもいかなるファイル形式から成るプログラムも許容することにより、本発明の態様では、プログラム開発者が、機能性及び仕様で妥協することなく固有の機能を有するプログラムを設計することが可能になる。ワークフローフレームワークにおいて実行されるべきベースクラスとして、ワークフロータスクまたはワークフロープロセスなどのアクティビティを定義することにより、開発者は、既存の実行環境における、固定され、ハードコードされ、柔軟性がない機能クラスまたはアクティビティクラス、及び、一定の機能クラスまたはアクティビティクラスに従うことなく、領域特化型の(例えば、ヘルスケア産業、金融業界等のプログラムなどの固有の実行環境)オペレーションコード(以下、「opコード」と称する)を容易にかつ効果的に構築することができる。さらに、本発明の態様を具体化しているワークフロー基礎は、いずれかの既存のフレームワーク(例えば、管理された実行環境、オペレーティングシステム環境、またはハードウェア処理装置レベルのいずれか)の上に積層される連続ベースのランタイムである。
本発明の態様は、ワークフローのアクティビティがワークフロー設計の表現から構築され得る限りいかなる方法または表現でのワークフロー設計(例えば、フローチャート、図、番号をつけられた説明等)をも可能にすることにより、特定のファイル形式でアクティビティを定義するという制約から解放する。
図3は、本発明の実施形態によるワークフロー300の単純化した図を示す。例えば、ワークフロー300は、購入注文を処理するワークフローであってもよい。この購入注文ワークフロー300は、購入注文を受信し、顧客に確認を送信し、マネージャが購入注文を承認するといった、プロセスまたはアクティビティを含んでいてもよい。さらに、これらのアクティビティは順序付けられて、他のアクティビティと同時に実行され得るものもあれば、他のアクティビティの完了時にだけ実行され得るものがあってもよい。
ワークフロー300は、開始ポイント302から開始し得る。例えば、購入注文ワークフロー用の開始ポイント302は、顧客から注文を受信していてもよい。ワークフロー300はまた、条件文304(例えば「IF文」または「WHILE文」など)を含むことができ、条件文304はさらなる条件文306及び308に再分割され得る。ワークフロー300にはまた、並列構造310を含むことができ、並列構造310には1つ以上のアクティビティ312をさらに含む。例えば、並列構造310では、インベントリーを点検することと入手可能な荷主を点検して更新することなどのアクティビティを同時に処理してもよい、ということを示すことができる。示した実施形態では、例えば「Eメールを送信する」及び「承認を得る」などのアクティビティが同時に処理され得る。「アクティビティをここにドロップする」というボックス316では、ユーザがワークフロー300にさらなるアクティビティを加えるかまたは補うことができることを示す。ワークフロー300を完了するために、プロセスまたはアクティビティは、完了ステップ即ちポイント314で終了する。
一実施形態では、アクティビティは、ツリー構造(図5を参照せよ)500において階層的に配置され得る。例えば、アクティビティメソッドは、2つの子ノード即ちリーフノード504及び506を有するルートノード502にある。子ノード504及び506(例えば、それぞれ、作業項目_1及び作業項目_2)においてアクティビティメソッドは、階層構造に従って実行され得る。さらに、子ノード504及び506も、実行すべきそれぞれの作業項目を有する他の子ノードを含むことができる。
別の実施形態では、アクティビティは以下のタイプのうちの1つ以上を含む。即ち、単純アクティビティ、コンテナアクティビティ、及びルートアクティビティである。本実施形態では、モデルには1つのルートアクティビティがあり、さらにルートアクティビティの中に単純アクティビティまたはコンテナアクティビティが存在しないかまたはいくつかある。コンテナアクティビティは、単純アクティビティまたはコンテナアクティビティを含むことができる。ワークフロープロセス全体は、アクティビティとして用いられて高次ワークフロープロセスを構築することができる。さらに、アクティビティは割り込み可能でもよいし割り込み不可でもよい。割り込み不可の複合アクティビティは、割り込み可能なアクティビティを含まない。割り込み不可のアクティビティは、アクティビティにブロックさせるサービスを欠いている。さらに、アクティビティはプリミティブのアクティビティであってもよいし複合アクティビティに分けられてもよい。プリミティブのアクティビティまたは基本的アクティビティは、サブストラクチャ(例えば、子アクティビティ)を有しておらず、よってツリー構造のリーフノードである。複合アクティビティは、サブストラクチャ(例えば、それは1つ以上の子アクティビティの親である)を含む。
さらに、アクティビティ及びアクティビティに含まれる作業項目を実行する際に、ワークフローフレームワークは、作業項目の各々についての範囲または境界である実行コンテキストまたは実行環境を定義する。この範囲または境界は、例えば作業項目、関連するプロパティ、ハンドラ、制約及び自立エージェント間の相互作用によってアクセスされるべき共有データまたは共有資源などの、(例えば、データ、メタデータ等の形式の)情報を含みかつ明示する。これらの範囲は、階層的に構造化され得る。また、各々のアクティビティは、根底にある管理されたフレームワークをサポートする任意のプログラミング言語でユーザコードを用いて設定され得る。例えば、ユーザコードは、固有の領域または実行環境で書かれたビジネス論理もしくはビジネスルールまたはアプリケーション論理もしくはアプリケーションルールを表すことができる。各々のアクティビティは、ユーザコードでの実行への遮断前フック(pre-interception hooks)及び遮断後フック(post-interception hooks)をサポートすることができる。各々のアクティビティは、関連付けられたランタイム実行意味論及び動作(例えば状態管理、トランザクション、イベント処理、及び例外処理)を有する。アクティビティは、他のアクティビティと状態または資源を共有することができる。
図4は、本発明の一実施形態によるワークフローアクティビティ処理システム400を示す図である。システム400はプロセッサ402を含み、プロセッサ402は処理装置または処理装置群であってもよい。システム400はまた、プロセッサ402がアクセス可能なデータを記憶するメモリ領域404を含む。実施形態において、システム400は、1つ以上のプロセッサまたは処理装置(例えばプロセッサ402)とシステムメモリ(例えばメモリ領域404)とを有していて、さらに、システムメモリを含む様々なシステムコンポーネントをプロセッサ402に結合していて当業者に公知である他のコンポーネントを少なくとも有しているコンピュータであってもよい。
1つの例では、メモリ領域404は、例えばコンピュータ読取り可能命令、データ構造、プログラムモジュール、または他のデータなどの情報を記憶するためのいずれかの方法または技術で実施される、揮発性、不揮発性、着脱自在、固定型の媒体のいずれかのコンピュータ読取り可能媒体を含んでいてもよい。例えば、コンピュータ記憶媒体は、RAM、ROM、EEPROM、フラッシュメモリまたは他のメモリ技術、CD−ROM、デジタル多用途ディスク(DVD)または他の光ディスク記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置またはその他の磁気記憶装置、または所望の情報を記憶するために用いることができかつシステム400がアクセスすることができる他の媒体を含む。メモリ404はまた、搬送波または他の搬送メカニズムのような変調されたデータ信号におけるコンピュータ読取り可能命令、データ構造、プログラムモジュールまたは他のデータを含む通信媒体を含み、さらに任意の情報提供媒体を含むことができる。当業者は、変調データ信号に精通していて、変調されたデータ信号は、信号内の情報をコード化するような方法で設定または変更される特徴のうちの1つ以上を有している。有線ネットワークまたは直接配線接続などの有線媒体、音響、RF、赤外線及びその他の無線媒体などの無線媒体は、通信媒体のいくつかの例である。上記うちのいずれの組合せも、コンピュータ読取り可能媒体の範囲に含まれる。
この例では、メモリ領域404は、ワークフロー(例えば、ワークフロー300)内で処理する複数のアクティビティ406を記憶する。複数のアクティビティ406の各々は、1つ以上の作業項目を含み、作業項目はツリー構造(図5を参照せよ)などの階層構造を有していてもよい。複数のアクティビティ406を処理する際に、プロセッサ402は、スケジューラ408にアクセスするかまたはこれを実行する。スケジューラ408は系統化された一組のアクティビティを準備する。
例えば、プロセッサ408は、スケジューラ408などのコンポーネントまたは一組のコンピュータ実行可能命令を介して複数のアクティビティ406の作業項目にアクセスして、作業項目422をキュー410にエンキューする。プロセッサ402がアクセス可能なディスパッチャ412は、実行する作業項目422をディスパッチする。例えば、作業項目422-1は、「ユーザの入力を要求する」という機能を実行するためのアクティビティメソッド424、ルーチンまたは一群のコードを含んでいてもよい。1つ以上の他のアクティビティメソッド、ルーチンまたはコードは、本発明の範囲から逸脱することなく作業項目422の各々に含まれ得る。
一旦作業項目422がディスパッチャ412によりディスパッチされると、プロセッサ402は、符号414で作業項目422におけるメソッド424の各々を実行する。作業項目422-1の例では、プロセッサ402は、ユーザがユーザインタフェース(UI)を介して要求された情報またはデータを入力することができる。別の実施形態では、プロセッサ402は、入力をユーザに要求するために外部データソースに接続またはアクセスすることができる。アクティビティメソッド424の完了で、プロセッサ402は、符号416で作業項目422の実行を完了する。1つの実施形態では、プロセッサ402は、符号418で作業項目の実行状態をデータストア420にパッシベート(passivate)する。
別の実施形態では、プロセッサ402は、図6に示したオートマトンなどの、状態オートマトンに従って作業項目422を実行する。図6は、本発明の実施形態によるアクティビティに関連する作業項目の処理状態を説明している、例示的な状態オートマトン600を示す図である。1つの例では、状態オートマトン600は、(図4に示すように)初期化された状態、実行中の状態及び完了状態を含み得る。別の実施形態では、状態オートマトン600は、初期化された状態602、実行中の状態604、中止状態606、障害状態608、補償状態610及び完了状態612を含む。
例えば、状態オートマトン600は、ワークフローアクティビティの作業項目(例えば、作業項目422)の実行についてのプロセスフローを記述する。図4に示したように、作業項目422-1は、キュー410にエンキューされると、先ず初期化される。次に作業項目422-1は、実行中の状態(例えば、図6の実行中の状態604)において実行される前に、ディスパッチャ412へ待機解除される(dequeued)。作業項目422-1の実行中にパラメータまたは条件に応じて、作業項目422-1は、中止状態606または障害状態608へ進んでもよい。1つの実施形態では、作業項目422-1は、中止状態606から障害状態608へ進むことができる。代替的実施形態では、障害または例外が発生すると、補償状態610は、実行されるべき一組の動作または機能を記述する。例えば、機能パラメータが見つからないなどといった例外が作業項目(例えば作業項目422-1)の実行中に発生したと仮定する。システム400は、作業項目422-1を障害状態608へ移行する。そうする際に、システム400はまた、作業項目422-1を完了状態612へ移行する前に、補償状態610においてガーベジコレクション(例えば、キャッシュもしくはメモリからの動作、リセットパラメータ値等の以前に実行された部分を除去すること)動作を実行する。
1つの実施形態では、本発明の態様を具体化しているワークフローフレームワークに従って設計されたプログラムを、下位レベル(例えば、共通言語ランタイム(CLR)またはOSレベルなどの管理された実行環境)から任意の数のスレッドがビジットすることができる。別の実施形態では、スケジューラ(例えば、スケジューラ408)は、アクティビティの所定の実施または実行のための専用のCLRスレッドを用いることができる。
さらに、アクティビティに対応しているアクティビティ用の実行ハンドラは、本発明の態様を具体化するワークフローフレームワーク(WF)下で、スレッドと見なされ得る。このように、WFスレッドは、待ちポイントにおいてまたは明白な異常があるスケジューリング状態で、親の複合アクティビティにより非同期でインタリーブする。
ここで図7Aを参照すると、ブロック図は、本発明の実施形態によるワークフローのアクティビティの作業項目の同期実行を示している。1つの実施形態では、作業項目の同期実行は、ワークフローと関連するスレッドのインタリーブ実行を可能にする。1つの実施形態では、ワークフローは、付録Aに示したようなアクティビティのインスタンスの範囲内で共有状態への同期アクセスに対するSynchronizationScopeActivityを定義する。例えば、ワークフローの2つのアクティビティがデータストアのディレクトリにアクセスして2つの異なる動作を実行することを所望すると仮定する。この例では、アクティビティ1は、読取りファイルの情報を更新する前にディレクトリのファイルにアクセスすることを所望することができる。同時に、アクティビティ2はアクティビティ1によりアクセスされた同一の一組のファイルを修正することを所望することができる。このように、アクティビティ1及びアクティビティ2による共有資源へのアクセスを、同期させかつ管理する必要がある。付録Aは、宣言的方法でスレッド全体の共有状態の同期またはインターリービングの例示的な実施を示している一組の動作SynchronizationScopeを示す。
既存のシステムは、通常、オペレーティングシステム(OS)によって提供されるアクセスロックまたは他の方法を利用してかかる同期を実行する。かかるOSのロックは、所望の目的を実現する基本機能を提供するが、ハードコードされ、柔軟性がなく、さらに拡張可能なワークフロー基礎またはフレームワークに不適当である。さらに、OSレベルのスレッドは、OSのロック(例えば、記録または識別されたメモリアドレス、前のメモリアドレス、スタック割当て等)と関連する文脈切り替え(context switch)を共通に含む。さらに、OSのロックは、パッシベーションプロセスを克服しない。なんとなれば、OSのロックと関連するポインタ、スタックなどの全ては、パッシベーションの前に、ロックにおいて前に割り当てられた値を元に戻さないからである。さらに、ワークフローはライフタイムの間異なるマシンで実行するが、OSのロックは、OSのロックが生成されたマシンに対してだけ有効である。
本発明の実施形態は、アクティビティ内の作業項目に同期ハンドル718を割り当てて、実行スレッドが、コンフリクトまたはデッドロックすることなく共有資源に同期アクセスするのを確実にする。本発明の態様は、開発者が物理的実行環境または管理された実行環境のスレッドの上に、仮想で重量のないスレッドを設計することを可能にする。別の実施形態では、実行スレッドは、いかなる物理的リファレンスまたはハードウェアリファレンスに附属していないかまたは関連していないことで軽量である。このように、実行スレッドは、パッシベーションサイクルを克服するかまたはデータストアに記憶された後に存続し得る。
例えば、プログラムがコールバック機能を含んでいて、コールバック機能の実行中に、プログラムがデータストアにパッシベートされる必要があると判断されると仮定する。既存のモデル及びプログラミング言語は、プログラムの実行状態に関係する全てのパラメータがオブジェクトとして保存されることを必要とする。プログラムの状態は、後のポイントでオブジェクトから回復され得る。しかしながら、オブジェクトは通常、プログラムが実行されるハードウェアコンテキストまたは設定とのハードコードされた関連付けを有するスレッドを含む。本発明の実施形態は、この種の依存性を克服する。
図7Aを再び参照すると、この図は、複数のスレッドが共有資源にアクセスを試みる場合のスレッドの同期実行を示している。最初に、アクティビティの作業項目の集合702が処理される予定になっている。1つの実施形態では、アクティビティの作業項目は、図5に示されているアクティビティ502のように、アクティビティにおいてツリー構造を有しても良い。スケジューラ704は、作業項目の集合702にアクセスし、処理すべきスケジューラキュー706に作業項目をエンキューする。1つの実施形態では、同期ハンドル718は、スケジューラキュー906のアクティビティの各々に割り当てられる。それは、特定の共有資源がアクティビティによってアクセスされることになっているということを示している。例えば、作業項目708−2及び作業項目708−Nは、共有資源(例えば、記憶領域)にアクセスする。このように、作業項目708−2及び708−Nの両方は、同期ハンドル718を含む。一方で、他の作業項目との共有資源にアクセスしない作業項目708-3は、同期ハンドル718を含まず、特定の共有資源は作業項目の1つ以上により共有される。
1つの実施形態では、同期ハンドル718は、文字列トークンであり、指定された相互排除オブジェクト(「ミューテックス」)に類似している。1つの実施形態では、同期フィルタ720は、割り当てられた同期ハンドル718を有する作業項目に適用される。
一旦、同期ハンドル718が割り当てられると、割り当てられた同期ハンドル718に基づいて、トークン値が作業項目の各々に対して算出される。作業項目がアクティビティの階層構造(例えば、ツリー構造)の一部である実施形態では、トークン値は、割り当てられた同期ハンドル718及びアクティビティの階層における作業項目の位置に基づいて算出される。1つの実施形態では、(図9に示したような)トークンコンポーネントまたはロックマネージャが、同期ハンドル718及びアクティビティツリーの作業項目の各々に対する共有資源を監視するかまたは管理する。
次に、算出されたトークン値を有する作業項目は、作業項目の各々と関連する算出されたトークン値に基づいて、同期キュー712にソートされる。1つの実施形態では、機能AcquireLockを、ソートするのにかつ共有資源へのアクセスが許されるかどうかを判断するのに用いてもよい。例えば、図7Aに示したように、算出されたトークン値のため、AcquireLock機能は、同期キュー712において作業項目708−Nに先行する位置に作業項目708-2をソートする。
1つの実施形態では、AcquireLock機能は、同じアクティビティに属している全ての同期ハンドル718を最初に集めることにより同期キュー712の作業項目のソートを実行する。このようにして、デッドロックは生じない。図7Bは、本発明の一実施形態によるAcquireLock機能による同期キュー712のソーティングを示す図である。例えば、単純化したアクティビティツリー732は、ルート/親ノード722及び2つの子ノード724及び726を含み、各々は、作業項目1及び作業項目2をそれぞれ含んでいる。
上記のように、アクティビティツリーの作業項目のいくつかは、同期ハンドルを含むことができない。このように、アクティビティツリーの子/リーフノードのいずれの作業項目も同期ハンドルを有していない場合、AcquireLock機能は、アクティビティツリーの階層構造においてそれ以上進まない。1つの実施形態では、ソーティングの間、AcquireLock機能はまた、同期キュー712のいかなるデッドロックも避けるために重複した作業項目を除去する。
アクティビティツリーのノードの移動を続けると、次にAcquireLock機能は、ルートノード722などの、アクティビティツリーのルートノードまたは親ノードを識別することを試みる。ルートノードまたは親ノードに遭遇した後に、AcquireLock機能は、ルートノードまたは親ノード722に対して集められたハンドルのリストまたは辞書がその子全体に対する全ての同期ハンドル718を含むか否かを判断する。
図7Bでは、集められたハンドルリスト728は、例えば「H」(同期ハンドルを示す)及び「GL」(GrantedLocksを示す)などの情報を含む。図示したように、子ノード724に割り当てられた同期ハンドル718は集められて、ルートノード722は子ノード724の作業項目1の同期ハンドル718(即ち、特定の共有資源にアクセスする許可)の保有者である、ということをリスト728は示している。
一方で、リスト728はまた、ルートノード722が子ノード726に対する同期ハンドル718を有するが、ルートノード722は同期ハンドル718の保有者ではない(即ち、ルートノード722は、共有資源にアクセスをしない)ということを示す。このようにして、子ノード726の作業項目2は待ちリスト730に加えられ、AcquireLock機能は、プロセスの別の反復を実行して、ルートノード722が子ノード726の同期ハンドル718を得ることを確実にする。
一旦、AcquireLock機能が上記の説明に従って同期キュー712をソートすると、ディスパッチャ710は、同期キュー712の作業項目(例えば、708-2)をディスパッチし、作業項目のアクティビティメソッドまたは機能が処理される実行状態において実行する。このように、作業項目は同期キューから順番に実行され、特定の共有資源に順番にアクセスして、作業項目と関連するスレッドの同期実行を実施する。
ここで図8を参照すると、本発明の実施形態による特定の共有資源にアクセスするアクティビティの同時実行方法を示すフローチャートである。1つの例では、図8に示した方法は、図9に示したコンピュータ読取り可能媒体900に含まれるコンピュータ実行可能コンポーネントにより実行され得る。例えば、記憶コンポーネント902は、符号802において複数の作業項目をキュー(例えば、スケジューラキュー)に記憶するかまたは実行する複数の作業項目をキューに入れる。複数の作業項目の1つ以上は、ワークフローのアクティビティと関連し、複数の作業項目の1つ以上は、アクティビティにおいて、ツリー構造または他の階層構造を有する。作業項目の各々はスレッドと関連する。
符号804で、同期コンポーネント904は、キューの複数の作業項目の各々に同期ハンドルを割り当てる。同期ハンドルは、複数の作業項目によりアクセスされる特定の共有資源を示す。符号806で、トークンコンポーネント906は、割り当てられた同期ハンドル及びアクティビティのツリー構造の作業項目の位置に基づいて作業項目の各々に対するトークン値を算出する。ソートコンポーネント908は、符号808で、作業項目の各々と関連するトークン値に基づいて、同期キューの作業項目をソートする。符号810で、実行コンポーネント910は、同期キューのソートされた作業項目の各々を実行して特定の共有資源へのアクセスをシリアライズ(serialize)して、ワークフローと関連するスレッドの同期実行を実施する。
1つの実施形態では、コンピュータ読取り可能媒体900には、作業項目の各々に対する同期ハンドルのプロパティを明示して、作業項目の各々に対する割り当てられた同期ハンドルを宣言的に定義する定義コンポーネント912をさらに含む。また別の代替的実施形態では、コンピュータ読取り可能媒体900は、パッシベーションコンポーネント914を含み、作業項目及び関連するトークン値を用いて同期キューをデータストアにパッシベートする。
図4のシステム400などの、例示的なコンピュータシステム環境と関連して説明されたが、本発明の実施形態は、多数の他の一般的な目的または特別な目的のコンピュータシステム環境または構成で動作する。コンピュータシステム環境は、本発明のいかなる態様の使用または機能の範囲に関していかなる限定を提案することも意図していない。さらに、コンピュータシステム環境は、例示的な動作環境において示したコンポーネントのいずれか1つまたは組み合わせに関係するいかなる依存性または要求を有していると解釈されるべきではない。本発明の態様での使用に適した周知のコンピュータシステム、環境及び/または構成の例は、パーソナルコンピュータ、サーバコンピュータ、携帯用デバイスまたはラップトップデバイス、マルチプロセッサシステム、マイクロプロセッサベースのシステム、セットトップボックス、プログラム可能な消費者エレクトロニクス、携帯電話、ネットワークPC、ミニコンピュータ、メインフレームコンピュータ、上記のシステムまたはデバイスのいずれかを含む分散コンピューティング環境、などを含むが、これらに限定されるものではない。
本発明の実施形態は、1つ以上のコンピュータまたは他のデバイスによって実行される、プログラムモジュールなどの、コンピュータ実行可能命令の一般的なコンテキストで記述されることができる。通常、特定のタスクを実行するかまたは特定の抽象データ型を実行するプログラムモジュールは、ルーチン、プログラム、オブジェクト、コンポーネント及びデータ構造を含むが、これらに限定されるものではない。本発明の態様はまた、通信ネットワークを介してリンクされる遠隔処理装置によってタスクが実行される分散コンピューティング環境において、実施され得る。分散コンピューティング環境では、プログラムモジュールは、メモリ記憶装置を含むローカルのコンピュータ記憶媒体及びリモートのコンピュータ記憶媒体に位置してもよい。
動作中、システム400は、本発明の態様を実行するために、図7などの図に示したコンピュータ実行可能命令のようなコンピュータ実行可能命令を実行する。
本明細書において図示されて説明された本発明の実施形態の動作の実行または実施の命令は、特に明記しない限り、本質的な特徴ではない。即ち、特に明記しない限り、動作はいかなる順番で実行されてもよく、本発明の実施形態は、本明細書において開示された動作に比べて追加の動作または少ない動作を含んでいてもよい。例えば、別の動作の前に、同時に、または後に、特定の動作を実施するかまたは実行することは、本発明の態様の範囲内であると考えられる。
本発明の実施形態は、コンピュータ実行可能命令で実行されてもよい。コンピュータ実行可能命令は、1つ以上のコンピュータ実行可能コンポーネントまたはコンピュータ実行可能モジュールとされてもよい。本発明の態様は、かかるコンポーネントまたはモジュールの任意の数及び構成で実行されてもよい。例えば、本発明の態様は、本明細書において図示されて説明された特定のコンピュータ実行可能命令または特定のコンポーネントまたは特定のモジュールに限定されない。本発明の他の実施形態は、本明細書において図示されて説明されているより多くのまたは少ない機能性を有する異なるコンピュータ実行可能命令またはコンピュータ実行可能コンポーネントを含んでいてもよい。
本発明または本発明の実施形態の態様の要素を導入する際に、英文における冠詞「a」、「an」、「the」及び「said」、即ち、和文の「1つの」、「その」、「前記」は、要素が1つ以上あることを意味することを意図している。用語「備える」、「含む」、「有する」は、包含していることを意図していて、リストに記載した要素以外の追加の要素があってもよいということを意味する。
本発明の態様が詳細に説明されたが、変更態様及び変化形は添付の請求の範囲において画定された本発明の態様の範囲内において可能であることは明らかである。様々な変更が、本発明の態様の範囲内において、上記の構造、製品及び方法でなされてもよいように、図示する様に、上記の説明に含まれ、添付の図面に示された全ての事柄は、説明のためであって、制限することを意味しないと解釈されるべきである。
付録A(宣言的方法でスレッド全体の共有状態の同期またはインターリービングの例示的な実施を示す、一組の動作SynchronizationScopeを示す。)
Figure 0005006382
Figure 0005006382
付録B(アクティビティ階層によるスレッド実行の同期についての例示的な一組のステップを示す。)
また別の例では、以下に、本発明の一実施形態による非同期スレッド実行を実行する例示的なシーケンスを示す。
1) 同期フィルタは、[SupportsSynchronization]属性を有する全てのアクティビティに適用される。
2) RootActivity及び同期範囲の全ては、{handle,(GrantedLock)}についての辞書を保持する。各々のGrantedLock構造は、アクティビティ及びWaitListを保持する。GrantedLockはシリアライズすることが可能で、よって辞書であり、両方がパッシベーションを克服することができる。
3) 各々の同期範囲は、その子同期範囲に対するロックマネージャである。ルートアクティビティは、デフォルトのロックマネージャである。ロックマネージャは、子ロック同期範囲に対するロックを許諾して、ロックを得ることができない子同期範囲の待ちリストを保持する責任を負う。
4) 実行(例えば、アクティビティの階層に基づく)についてのWFスレッドの階層及びロックマネージャ/同期範囲についての同様の階層が存在する。
5) その実行方法のSynchronizationFilterは、コールバックで通っているAcquireLocksを呼び出す。
6) AcquireLockが真に戻る場合、アクティビティ実行は進む。そうでなければ、アクティビティ実行はExecuting状態のままである。
7) AcquireLockの範囲内で:
a. アクティビティは、それ自体及び*all*のその子に対する同期ハンドルを集める。いずれかの子が同期ハンドルを有していない場合、さらに階層内でさらに進むのをやめる。次にそれは、重複を除去して、全てのハンドルをソートする。このことは、いかなるデッドロックも避けるためである。
b. ハンドルがない場合、AcquireLockは真に戻る。同期範囲の実行は、それが何にも同期していないので(ノーオペレーション命令)、進むことができる。
c. AcquireLockは、同期範囲である親を探してまたはルートを見つけるまで親階層を進み続ける。各々のステップで同期範囲の親に出会うと、集めたハンドルの各々に対して、親のgrantedlocks辞書がハンドルを有するか否かを調べる。有していない場合には、ロックが与えられた所定のハンドルに対するアクティビティとしてそれ自体を追加する。すでにハンドルを有していて、保有者でない場合、それ自体を待ちリストに加える。それが待ちリストのうちの1つに少なくとも加えられたいずれのポイントでも、AcquireLockは偽に戻る。いずれかの同期範囲親がハンドルの空でないリストを有する場合、親はすでに全てのロックを得たのでブレークして真に戻る。親の同期フィルタは常に子供の前に実行されることを思い出しなさい。
8) 同期フィルタは、アクティビティを完了状態に予約する。一旦完了状態に進むと、フィルタはReleaseLockを呼び出す。
9) ReleaseLockの範囲内で:
a. 各々のステップについて、各々のハンドルに対して親チェーンを進み、所定のハンドルで待っているアクティビティを集める。
b. 全ての待ちアクティビティに対して、再度ロックを得ることを試みる。ロックを得ることができるものに対して、フィルタのコールバックを呼び出す。
既存のプログラミングパラダイムを示すブロック図である。 本発明の一実施形態によるワークフローデザインフレームワークの仮想化を示す例示的なブロック図である。 本発明の一実施形態による例示的なワークフローを示す例示的な図である。 本発明の一実施形態によるワークフローアクティビティを処理するシステムを示す図である。 本発明の一実施形態によるワークフローアクティビティの階層構造を示す図である。 本発明の一実施形態によるアクティビティと関連する作業項目の処理状態を記述する例示的な状態オートマトンを示す図である。 本発明の一実施形態によるワークフローのアクティビティの作業項目の同期実行を示すブロック図である。 本発明の一実施形態による同期キューのソーティングを示す図である。 本発明の一実施形態による特定の共有資源にアクセスするアクティビティを同期実行する方法を示すフローチャートである。 本発明の態様を記憶し得る例示的なコンピュータ読取り可能媒体を示すブロック図である。

Claims (16)

  1. ワークフローにおいて、特定の共有資源へのアクセスをシリアライズして、スレッド間の同期を実行するシステムであって、前記システムは、
    複数の作業項目をスケジューラキューに記憶するメモリ領域であって、前記複数の作業項目の1つ以上は、前記ワークフローにおけるアクティビティにおいて階層構造を有しかつ前記アクティビティ関連付けられ、前記複数の作業項目の各々は実行スレッド関連付けられる、メモリ領域と、
    コンピュータ実行可能命令を実行するように設定されているプロセッサであって、前記コンピュータ実行可能命令が前記プロセッサに実行させる方法は、
    前記スケジューラキューにおける複数の作業項目の各々に同期ハンドルを割り当てる第1のステップであって、前記同期ハンドルは前記複数の作業項目によりアクセスされる予定の前記特定の共有資源を示し、前記スケジューラキュー内の2つ以上の作業項目が同一の同期ハンドルを有すると、前記特定の共有資源は前記同一の同期ハンドルを有する作業項目により共有されている、第1のステップと、
    前記割り当てた同期ハンドルを有する作業項目の各々を、仮想実行スレッドにまとめる第2のステップであって、前記仮想実行スレッドは、前記実行スレッドの上に論理的に作成され、前記仮想実行スレッドにおける作業項目は、前記仮想実行スレッドにおける他の作業項目に割り当てた同期ハンドルと同一の同期ハンドルを有する、第2のステップと
    前記仮想実行スレッドにおける作業項目の各々に対して、前記割り当てた同期ハンドルと前記アクティビティの前記階層構造における作業項目の位置とに基づいてトークン値を計算する第3のステップと、
    前記計算したトークン値に基づいて同期キューに前記仮想実行スレッドにおける作業項目をソートして入れる第4のステップと、
    前記同期キューの前記ソートた作業項目の各々を順番に実行して前期特定の共有資源へのアクセスをシリアライズして、前記仮想実行スレッドの同期実行する第5のステップと
    前記同期キューの前記ソートした作業項目の各々を順番に実行している間に、その実行に係る前記仮想実行スレッドが、パッシベーションを要するか否かを判定する第6のステップと、
    前記第6のステップにおいて、パッシベーションを要すると判定した場合、前記パッシベーションを要する仮想実行スレッドにおける作業項目及び関連するトークン値をデータストアに記憶することにより、前記同期キューをパッシベートする第7のステップと
    を含む、プロセッサと
    を備えことを特徴とするシステム。
  2. 前記コンピュータ実行可能命令が前記プロセッサに実行させる方法は、前記仮想実行スレッドにおける作業項目の各々に対する前記割り当てた同期ハンドルのプロパティを明示することによって、前記仮想実行スレッドにおける作業項目の各々に対する前記割り当てた同期ハンドルを宣言的に定義するステップをさらに含むことを特徴とする請求項1に記載のシステム。
  3. 前記第1のステップは、前記複数の作業項目の各々と関連するスレッド範囲を定義するステップを含むことを特徴とする請求項1に記載のシステム。
  4. 前記階層構造はツリー構造であって、前記第4のステップは、前記ツリー構造における作業項目の位置に基づいて前記仮想実行スレッドにおける作業項目をソートするステップを含むことを特徴とする請求項1に記載のシステム。
  5. 前記第5のステップは、前記ワークフローを処理することと関連する状態オートマトンに従って実行する作業項目の処理状態を実行中の状態に移行することにより前記ソートした作業項目を実行するステップを含むことを特徴とする請求項1に記載のシステム。
  6. ワークフローにおいて、特定の共有資源へのアクセスをシリアライズして、スレッド間の同期実行する方法であって、前記方法は、
    実行する複数の作業項目をスケジューラキューに入れる第1のステップであって、前記複数の作業項目の1つ以上は、前記ワークフローにおけるアクティビティに関連付けられ、かつ前記アクティビティにおいて順番に並べられ、前記複数の作業項目の各々は実行スレッドに関連付けられる、第1のステップと、
    前記スケジューラキューにおける複数の作業項目の各々に同期ハンドルを割り当てる第2のステップであって、前記同期ハンドルは前記複数の作業項目によりアクセスされる予定の前記特定の共有資源を示し、前記スケジューラキュー内の2つ以上の作業項目が同一の同期ハンドルを有すると、前記特定の共有資源は前記同一の同期ハンドルを有する作業項目により共有される、第2のステップと、
    前記割り当てた同期ハンドルを有する作業項目の各々を、仮想実行スレッドにまとめる第3のステップであって、前記仮想実行スレッドは、前記実行スレッドの上に論理的に作成され、前記仮想実行スレッドにおける作業項目は、前記仮想実行スレッドにおける他の作業項目に割り当てた同期ハンドルと同一の同期ハンドルを有する、第3のステップと
    前記仮想実行スレッドにおける作業項目の各々に対して、前記割り当てた同期ハンドル及び前記アクティビティの前記順番における作業項目の位置に基づいてトークン値を計算する第4のステップと、
    前記計算たトークン値に基づいて同期キュー前記仮想実行スレッドにおける作業項目をソートして入れる第5のステップと、
    前記同期キューの前記ソートた作業項目の各々を順番に実行して、前記特定の共有資源へのアクセスをシリアライズして、前記仮想実行スレッドの同期実行する第6のステップと
    前記同期キューの前記ソートした作業項目の各々を順番に実行している間に、その実行に係る前記仮想実行スレッドが、パッシベーションを要するか否かを判定する第7のステップと、
    前記第7のステップにおいて、パッシベーションを要すると判定した場合、前記パッシベーションを要する仮想実行スレッドにおける作業項目及び関連するトークン値をデータストアに記憶することにより、前記同期キューをパッシベートする第8のステップと
    を備えことを特徴とする方法。
  7. 前記仮想実行スレッドにおける作業項目の各々に対する前記割り当てた同期ハンドルのプロパティを明示することにより、前記仮想実行スレッドにおける作業項目の各々に対する前記割り当てた同期ハンドルを宣言的に定義するステップをさらに備えことを特徴とする請求項に記載の方法。
  8. 前記第2のステップは、前記スケジューラキューにおける複数の作業項目の各々に文字列トークンを割り当てるステップを含むことを特徴とする請求項に記載の方法。
  9. 前記第2のステップは、前記複数の作業項目の各々と関連するスレッド範囲を定義するステップを含むことを特徴とする請求項に記載の方法。
  10. 前記アクティビティの前記順番は、ツリー構造を横断する順番に対応し、前記第5のステップは、前記ツリー構造における作業項目の位置に基づいて前記仮想実行スレッドにおける作業項目をソートするステップを含むことを特徴とする請求項に記載の方法。
  11. 前記第6のステップは、前記ワークフローを処理すること関連する状態オートマトンに従って実行する作業項目の処理状態を実行中の状態に移行することにより前記ソートした作業項目を実行するステップを含むことを特徴とする請求項に記載の方法。
  12. 請求項6乃至11のうちの1つに記載の方法を実行させるコンピュータ実行可能命令を有することを特徴とするコンピュータ可読記憶媒体
  13. ワークフローにおいて、特定の共有資源へのアクセスをシリアライズして、スレッド間の同期実行するコンピュータ実行可能コンポーネントを有する1つ以上のコンピュータ可読記憶媒体であって、前記コンピュータ実行可能コンポーネントは、
    複数の作業項目をスケジューラキューに記憶する記憶コンポーネントであって、前記複数の作業項目の1つ以上は前記ワークフローにおけるアクティビティ関連付けられかつ前記アクティビティにおいてツリー構造を有し、前記複数の作業項目の各々は実行スレッドと関係付けられる記憶コンポーネントと、
    前記スケジューラキューにおける複数の作業項目の各々に同期ハンドルを割り当てる同期コンポーネントであって、前記同期ハンドルは、前記複数の作業項目によりアクセスされる予定の前記特定の共有資源を示し、前記スケジューラキュー内の2つ以上の作業項目が同一の同期ハンドルを有すると、前記特定の共有資源は、前記同一の同期ハンドルを有する作業項目により共有され、前記割り当てた同期ハンドルを有する前記作業項目の各々を、仮想実行スレッドにまとめ、前記仮想実行スレッドは、前記実行スレッドの上に論理的に作成され、前記仮想実行スレッドにおける作業項目は、前記仮想実行スレッドにおける他の作業項目に割り当てた同期ハンドルと同一の同期ハンドルを有する、同期コンポーネントと、
    前記割り当てた同期ハンドル及び前記アクティビティの前記ツリー構造における作業項目の位置に基づいて、前記仮想実行スレッドにおける作業項目の各々に対するトークン値を計算するトークンコンポーネントと、
    前記作業項目の各々に関連する前記計算したトークン値に基づいて同期キューに前記仮想実行スレッドにおける作業項目をソートして入れるソートコンポーネントと、
    前記同期キューの前記ソートた作業項目の各々を順番に実行して前記特定の共有資源へのアクセスをシリアライズして、前記仮想実行スレッドの同期実行する実行コンポーネントと
    前記同期キューの前記ソートした作業項目の各々を順番に実行している間に、その実行に係る前記仮想実行スレッドが、パッシベーションを要するか否かを判定し、パッシベーションを要すると判定した場合、前記パッシベーションを要する仮想実行スレッドにおける作業項目及び関連するトークン値をデータストアに記憶することにより、前記同期キューをパッシベートするパッシベーションコンポーネントと
    を備えことを特徴とするコンピュータ可読記憶媒体。
  14. 前記仮想実行スレッドにおける作業項目の各々に対する前記割り当てた同期ハンドルのプロパティを明示することにより、前記仮想実行スレッドにおける作業項目の各々に対する前記割り当てた同期ハンドルを宣言的に定義する定義コンポーネントをさらに備えことを特徴とする請求項13に記載のコンピュータ可読記憶媒体。
  15. 前記同期コンポーネントは、前記複数の作業項目の各々と関連するスレッド範囲を定義することさらに含むことを特徴とする請求項13に記載のコンピュータ可読記憶媒体。
  16. 前記実行コンポーネントは、前記ワークフローを処理すること関連する状態オートマトンに従って前記実行する作業項目の処理状態を実行中の状態に移行することにより前記ソートした作業項目を実行することさらに含むことを特徴とする請求項13に記載のコンピュータ可読記憶媒体。
JP2009502787A 2006-03-30 2007-02-21 軽量スレッドの並行処理制御のための宣言型モデル Expired - Fee Related JP5006382B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/393,966 US8024405B2 (en) 2006-03-30 2006-03-30 Declarative model for concurrency-control across lightweight threads
US11/393,966 2006-03-30
PCT/US2007/004633 WO2007120390A1 (en) 2006-03-30 2007-02-21 Declarative model for concurrency-control across lightweight threads

Publications (2)

Publication Number Publication Date
JP2009532756A JP2009532756A (ja) 2009-09-10
JP5006382B2 true JP5006382B2 (ja) 2012-08-22

Family

ID=38560811

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009502787A Expired - Fee Related JP5006382B2 (ja) 2006-03-30 2007-02-21 軽量スレッドの並行処理制御のための宣言型モデル

Country Status (9)

Country Link
US (1) US8024405B2 (ja)
EP (1) EP2013847A4 (ja)
JP (1) JP5006382B2 (ja)
KR (1) KR20090008198A (ja)
BR (1) BRPI0710036A2 (ja)
CA (1) CA2644360A1 (ja)
MX (1) MX2008011915A (ja)
RU (1) RU2008138707A (ja)
WO (1) WO2007120390A1 (ja)

Families Citing this family (32)

* 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
US9274921B2 (en) * 2006-12-27 2016-03-01 International Business Machines Corporation System and method for managing code displacement
US8108868B2 (en) * 2007-12-18 2012-01-31 Microsoft Corporation Workflow execution plans through completion condition critical path analysis
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
US9354847B2 (en) 2008-12-29 2016-05-31 Microsoft Technology Licensing, Llc Interface infrastructure for a continuation based runtime
US20100169618A1 (en) * 2008-12-30 2010-07-01 Microsoft Corporation Identifying concurrency control from a sequential proof
US9135584B2 (en) * 2009-02-28 2015-09-15 International Business Machines Corporation Method and apparatus to model content state and access control in backend-systems and business processes
US8683432B2 (en) * 2009-03-20 2014-03-25 Microsoft Corporation Providing execution context in continuation based runtimes
US8307368B2 (en) * 2009-05-26 2012-11-06 Microsoft Corporation Locality-based scheduling in continuation-based runtimes
US8769496B2 (en) * 2010-08-13 2014-07-01 Accenture Global Services Limited Systems and methods for handling database deadlocks induced by database-centric applications
US9778915B2 (en) * 2011-02-28 2017-10-03 Microsoft Technology Licensing, Llc Distributed application definition
US9990184B2 (en) 2011-03-25 2018-06-05 Microsoft Technology Licensing, Llc Distributed component model
US9465589B2 (en) 2011-04-05 2016-10-11 Microsoft Technology Licensing, Llc Stateful component authoring and execution
US9536264B2 (en) 2011-11-14 2017-01-03 Microsoft Technology Licensing, Llc Host agnostic messaging in a continuation based runtime
US9396007B2 (en) 2013-03-22 2016-07-19 Facebook, Inc. Cache management in a multi-threaded environment
US10257316B2 (en) * 2014-03-30 2019-04-09 Cisco Technology, Inc. Monitoring of node.js applications
CN104123177B (zh) * 2014-07-18 2019-01-08 无锡梵天信息技术股份有限公司 一种无锁的多线程数据同步方法
US9804883B2 (en) * 2014-11-14 2017-10-31 Advanced Micro Devices, Inc. Remote scoped synchronization for work stealing and sharing
US10083412B2 (en) * 2015-05-14 2018-09-25 Atlassian Pty Ltd Systems and methods for scheduling work items
US10853746B2 (en) 2015-05-14 2020-12-01 Atlassian Pty Ltd. Systems and methods for scheduling work items
US10642896B2 (en) * 2016-02-05 2020-05-05 Sas Institute Inc. Handling of data sets during execution of task routines of multiple languages
US11775341B2 (en) * 2016-02-05 2023-10-03 Sas Institute Inc. Automated job flow generation to provide object views in container-supported many task computing
US11455190B2 (en) 2016-02-05 2022-09-27 Sas Institute Inc. Implicit status in many task computing
US10795935B2 (en) 2016-02-05 2020-10-06 Sas Institute Inc. Automated generation of job flow definitions
US10650046B2 (en) 2016-02-05 2020-05-12 Sas Institute Inc. Many task computing with distributed file system
US11474863B2 (en) 2018-06-22 2022-10-18 Sas Institute Inc. Federated area coherency across multiple devices in many-task computing
USD898059S1 (en) 2017-02-06 2020-10-06 Sas Institute Inc. Display screen or portion thereof with graphical user interface
USD898060S1 (en) 2017-06-05 2020-10-06 Sas Institute Inc. Display screen or portion thereof with graphical user interface
JP2019053355A (ja) 2017-09-12 2019-04-04 セイコーエプソン株式会社 情報処理装置、情報処理方法、及び、プログラム
CN109284193B (zh) * 2018-09-06 2022-12-09 平安科技(深圳)有限公司 一种基于多线程的分布式数据处理方法及服务器
CN113420864B (zh) * 2021-07-05 2022-06-14 广西师范大学 一种包含互斥资源的多智能体***的控制器生成方法

Family Cites Families (100)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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
US5555388A (en) * 1992-08-20 1996-09-10 Borland International, Inc. Multi-user system and methods providing improved file management by reading
JPH09501517A (ja) * 1993-02-08 1997-02-10 アクション・テクノロジーズ・インコーポレーテッド 業務処理を管理するための方法および装置
US5734837A (en) * 1994-01-14 1998-03-31 Action Technologies, Inc. Method and apparatus for building business process applications in terms of its workflows
US6148325A (en) * 1994-06-30 2000-11-14 Microsoft Corporation Method and system for protecting shared code and data in a multitasking operating system
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
US6182108B1 (en) * 1995-01-31 2001-01-30 Microsoft Corporation Method and system for multi-threaded processing
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
US5790851A (en) * 1997-04-15 1998-08-04 Oracle Corporation Method of sequencing lock call requests to an O/S to avoid spinlock contention within a multi-processor environment
US6158044A (en) * 1997-05-21 2000-12-05 Epropose, Inc. Proposal based architecture system
US6240440B1 (en) * 1997-06-30 2001-05-29 Sun Microsystems Incorporated Method and apparatus for implementing virtual threads
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
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
US6430538B1 (en) 1998-04-30 2002-08-06 Enterworks Workflow management system, method and medium with personal subflows
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
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
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
US7133833B1 (en) * 1998-10-27 2006-11-07 Netscape Communications Corporation Lightweight directory access protocol workflow management system
US6862635B1 (en) * 1998-11-13 2005-03-01 Cray Inc. Synchronization techniques in a multithreaded environment
US6622155B1 (en) * 1998-11-24 2003-09-16 Sun Microsystems, Inc. Distributed monitor concurrency control
AU3875900A (en) 1999-03-11 2000-09-28 Paysys International, Inc. Methods and systems for developing applications and for interfacing with users
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
EP1277104A1 (en) * 2000-03-30 2003-01-22 Ideogramic 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
WO2002003225A2 (en) * 2000-06-15 2002-01-10 Xis Incorporated Method and system for product lifecycle management
US20020032692A1 (en) * 2000-09-08 2002-03-14 Atsuhito Suzuki Workflow management method and workflow management system of controlling workflow process
JP2002157386A (ja) * 2000-09-08 2002-05-31 Hitachi Ltd ワークフロー管理方法および装置並びにその処理プログラム並びにその処理プログラムを格納した記録媒体
US6604104B1 (en) * 2000-10-02 2003-08-05 Sbi Scient Inc. System and process for managing data within an operational data store
WO2002029517A2 (en) * 2000-10-02 2002-04-11 International Projects Consultancy Services, Inc. Automated loan processing system and method
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
US6971084B2 (en) * 2001-03-02 2005-11-29 National Instruments Corporation System and method for synchronizing execution of a batch of threads
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
US7207069B2 (en) * 2001-06-05 2007-04-17 Hewlett-Packard Development Company, L.P. Branch locking of job tickets to control concurrency
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
US7222334B2 (en) * 2001-07-24 2007-05-22 Hewlett-Packard Development Comapny, L.P. Modeling tool for electronic services and associated methods and businesses
US20030055668A1 (en) * 2001-08-08 2003-03-20 Amitabh Saran Workflow engine for automating business processes in scalable multiprocessor computer platforms
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
US20030145035A1 (en) * 2002-01-15 2003-07-31 De Bonet Jeremy S. Method and system of protecting shared resources across multiple threads
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
US7865867B2 (en) * 2002-03-08 2011-01-04 Agile Software Corporation System and method for managing and monitoring multiple workflows
US20030233374A1 (en) * 2002-03-14 2003-12-18 Ulrich Spinola Dynamic workflow process
US20030195762A1 (en) * 2002-04-12 2003-10-16 David Gleason Automated workflow
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
US8374966B1 (en) * 2002-08-01 2013-02-12 Oracle International Corporation In memory streaming with disk backup and recovery of messages captured from a database redo stream
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
US7401334B2 (en) * 2002-12-20 2008-07-15 International Business Machines Corporation Method, apparatus and computer program product for managing message flow in a multithreaded, message flow environment
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
CA2420479A1 (en) * 2003-02-13 2004-08-13 Ibm Canada Limited - Ibm Canada Limitee Flow debugging software and method
CN1826610A (zh) * 2003-05-07 2006-08-30 Sap股份有限公司 包括带协作过程引擎的特设型工作流结构化处理的面向终端用户的工作流方法
JP2007516510A (ja) * 2003-06-12 2007-06-21 ロイター アメリカ ビジネスプロセスの自動化
US8645420B2 (en) * 2003-08-05 2014-02-04 Accenture Global Services Limited Methodology framework and delivery vehicle
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
US7386848B2 (en) * 2003-10-02 2008-06-10 International Business Machines Corporation Method and system to alleviate denial-of-service conditions on a server
US7137033B2 (en) * 2003-11-20 2006-11-14 International Business Machines Corporation Method, system, and program for synchronizing subtasks using sequence numbers
US7519960B2 (en) * 2003-12-19 2009-04-14 International Business Machines Corporation Method and system for debugging business process flow
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
US7610585B2 (en) * 2004-06-03 2009-10-27 Intel Corporation Thread synchronization methods and apparatus for managed run-time environments
US7644409B2 (en) * 2004-06-04 2010-01-05 Sun Microsystems, Inc. Techniques for accessing a shared resource using an improved synchronization mechanism
US7676791B2 (en) * 2004-07-09 2010-03-09 Microsoft Corporation Implementation of concurrent programs in object-oriented languages
US20060064335A1 (en) * 2004-08-17 2006-03-23 International Business Machines Corporation Method, system, and storage medium for performing business process modeling
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
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
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
CA2604490C (en) * 2005-04-18 2012-04-24 Research In Motion Limited System and method for enabling assisted visual development of workflow for application tasks
US7983943B2 (en) * 2005-05-27 2011-07-19 Xerox Corporation Method and system for workflow process node synchronization

Also Published As

Publication number Publication date
WO2007120390A1 (en) 2007-10-25
JP2009532756A (ja) 2009-09-10
KR20090008198A (ko) 2009-01-21
CA2644360A1 (en) 2007-10-25
BRPI0710036A2 (pt) 2011-08-02
RU2008138707A (ru) 2010-04-10
US20070233969A1 (en) 2007-10-04
EP2013847A1 (en) 2009-01-14
US8024405B2 (en) 2011-09-20
MX2008011915A (es) 2008-09-29
EP2013847A4 (en) 2010-05-12

Similar Documents

Publication Publication Date Title
JP5006382B2 (ja) 軽量スレッドの並行処理制御のための宣言型モデル
JP5140067B2 (ja) ワークフローにおいて継続をモデル化するフレームワーク
JP4806240B2 (ja) コンポーネント化された拡張可能なワークフローモデル
JP5297370B2 (ja) プロセス中心型プログラムにおける非同期フォールト処理
JP5173128B2 (ja) フローベースおよび制約ベースのワークフローをオーサリングし、実行するための統一モデル
US20070239505A1 (en) Abstract execution model for a continuation-based meta-runtime
AU2007235542A1 (en) Framework for modeling cancellation for process-centric programs
US9513874B2 (en) Enterprise computing platform with support for editing documents via logical views
KR20080080349A (ko) 복수의 워크플로 동시 지속 기법
KR20060087997A (ko) 작업 흐름을 작성하고 편집하기 위한 컴퓨터 구현 방법
Schmutz et al. Service-oriented architecture: an integration blueprint: a real-world SOA strategy for the integration of heterogeneous enterprise systems: successfully implement your own enterprise integration architecture using the trivadis integration architecture blueprint
Bianchi et al. An ASM-based model for grid job management

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20100112

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20120113

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120117

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120417

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

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20120524

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20150601

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

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

LAPS Cancellation because of no payment of annual fees