[go: up one dir, main page]

JP2006178935A - ワークフロートランザクションのバッチ処理によるランタイムおよびアプリケーションの状態の同期化 - Google Patents

ワークフロートランザクションのバッチ処理によるランタイムおよびアプリケーションの状態の同期化 Download PDF

Info

Publication number
JP2006178935A
JP2006178935A JP2005332675A JP2005332675A JP2006178935A JP 2006178935 A JP2006178935 A JP 2006178935A JP 2005332675 A JP2005332675 A JP 2005332675A JP 2005332675 A JP2005332675 A JP 2005332675A JP 2006178935 A JP2006178935 A JP 2006178935A
Authority
JP
Japan
Prior art keywords
work items
service provider
workflow
work
component
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.)
Pending
Application number
JP2005332675A
Other languages
English (en)
Other versions
JP2006178935A5 (ja
Inventor
Anandhi Somasekaran
ソマセカラン アナンディ
Paul E Maybee
イー.メイビー ポール
Satish R Thatte
アール.タッテ サティシュ
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 JP2006178935A publication Critical patent/JP2006178935A/ja
Publication of JP2006178935A5 publication Critical patent/JP2006178935A5/ja
Pending 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
    • 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/10Office automation; Time management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q10/00Administration; Management
    • G06Q10/06Resources, workflows, human or project management; Enterprise or organisation planning; Enterprise or organisation modelling
    • G06Q10/063Operations research, analysis or management
    • G06Q10/0631Resource planning, allocation, distributing or scheduling for enterprises or organisations
    • G06Q10/06316Sequencing of tasks or work
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q10/00Administration; Management
    • G06Q10/06Resources, workflows, human or project management; Enterprise or organisation planning; Enterprise or organisation modelling
    • G06Q10/063Operations research, analysis or management
    • G06Q10/0633Workflow analysis

Landscapes

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

Abstract

【課題】コミットされていない作業をバッチ処理することにより、通信コンポーネントを介して持続された状態の一貫性を維持するワークフロー管理を提供する。
【解決手段】ワークフローコンポーネントは、サービスプロバイダコンポーネントによって実施される作業項目を含むワークフローを定義する。ワークフローコンポーネントは、作業項目をサービスプロバイダコンポーネントに割り当て、サービスプロバイダコンポーネントは、その作業項目を認識する。ワークフローコンポーネントは、割り当てられた作業項目を作業バッチに付加する。ワークフローコンポーネントは、バッチ処理された作業項目を含むトランザクションを生成し、サービスプロバイダコンポーネントに作業項目を実施するよう要求することによってワークフローにコミットする。ワークフローコンポーネントは、作業項目の実行の状態を調べて、その状態を永続記憶装置に格納する。
【選択図】図1

Description

本発明は一般に、ワークフローモデリングの分野に関し、より具体的には、コミットされていない作業のバッチ処理によって、通信コンポーネント間での持続状態の一貫性を維持することに関する。
現在のソフトウェアシステムは、ビジネスの問題をモデル化することによって、ビジネスの問題を高いレベルのワークフローにマップしようと試みる。一般に、ワークフロープロセスは、一連のタスクもしくはアクション、それらを実施すべき順序、誰がそれらを実施できるのかを規定する権限、および各アクションで実行されるスクリプトを含む。ワークフローはまた、状態とイベントの観点から記述することもできる。ワークフローエンジンは、例えばソフトウェアシステムのコンポーネントであり、ワークフローを使用可能にし、ワークフロー定義を実施し、ワークフローアクションを実行する。
ワークフローエンジンは3つの主要な機能を有する。第1に、現在のワークフローの状態に対する変更が有効かどうかを検証する。第2に、現在のユーザがワークフローイベントを実行する権限を有しているかどうかを調査する。第3に、そのイベントが有効で、かつユーザがそのイベントを実行する権限を有している場合は、ワークフローエンジンは実行を許可する。例えば、ニュース記事の発行に関するタスクなどの、一連のタスク管理においては、一連の作業項目を実施しなければならない。この例では、タスクには、記事を書くこと、書かれた記事を編集すること、編集された記事を見直すこと、および編集された記事を公表することなどが含まれる。代表的なワークフローエンジンは、様々なサービスプロバイダコンポーネント(例えば、書込みコンポーネント、編集コンポーネント、見直しコンポーネント、公表コンポーネントなど)に、これらの作業項目またはタスクを実施するように要求することができる。
ソフトウェアシステムのワークフローエンジン/コンポーネントは、他のコンポーネント(例えば、書込みコンポーネント、編集コンポーネントなど)と定期的に通信して様々な作業項目の状態を監視する。同時に、これらのコンポーネントもまた、これらの作業項目の状態を監視すること、またはその状態のチェックポイントをとることができる。残念ながら、これらのコンポーネントは、その持続された状態の一貫性を保つための機構を有していない。
例えば、ワークフローエンジンは、ワークフローの実行中に様々なコンポーネントを呼び出し、いくつかの作業項目を実行することができる。ワークフローエンジンは、これらのコンポーネントにいくつかのメッセージを送信して各作業項目の状態を決定することもできる。送信される各メッセージは、メッセージングサービスプロバイダコンポーネントを呼び出す。メッセージングコンポーネントは、ワークフローに関して一貫性があり永続的な状態を維持する必要があるので、ワークフローの状態をうまく持続することができない場合は、メッセージを送信すべきではない。
残念なことに、この種の垂直統合ソフトウェアシステム設計アプローチ(すなわち、作業項目の実行が、実質的にデータの到着に基づくアプローチ)には多くの欠点がある。例えば、あるコンポーネントが特定のタスクまたは作業項目を実施している間は、他のコンポーネントは、その特定の作業項目の状態(例えば、完了、実行中、中止など)を知ることができない。さらに、実施すべきワークフローの1つまたは複数の作業項目の実行に障害が存在する場合でも、ワークフローエンジンは、状態に関する認識が不足しているため、全体のワークフローを再実行することが必要になる場合もある。
したがって、1つまたは複数のこれらおよび他の欠点に対処するために、ワークフロートランザクションのバッチ処理機構により作業項目のランタイムおよびアプリケーションの状態を同期させるため、ならびにトランザクションのバッチ処理により、ワークフローエンジンが作業項目の実行を遅延できるようにし、通信コンポーネントを介して作業項目の持続された状態の一貫性を維持できるようにするための、ワークフロー管理の改善が必要とされている。
本発明の諸実施形態により、永続的トランザクションにおける、コンポーネントの共用が容易になる。言い換えると、これらの実施形態により、ワークフローの状態および未処理メッセージングの状態を単一のトランザクションにおいて永続記憶装置にコミットすることが可能になり、「チェックポイントがとられた(checkpointed)」状態がすべてのコンポーネントにわたって一貫していることが保証される。本発明の実施形態はワークフローコンポーネントを含み、ワークフローコンポーネントは、サービスプロバイダコンポーネントに対するすべての呼出しまたは割当てにおいて、スレッド呼出し状況での作業バッチオブジェクトをフロート(float)する。サービスプロバイダコンポーネントは、コミットタイムにすべてのアクションを単一のトランザクションとして処理するバッチ処理に、作業を追加することを選択することができる。
一態様によれば、一方法によりワークフローの状態が管理される。実行すべき1つまたは複数の作業項目が定義される。定義された1つまたは複数の作業項目が、実行のために1つまたは複数のサービスプロバイダコンポーネントに割り当てられる。1つまたは複数の割り当てられた作業項目は、後で1つまたは複数のサービスプロバイダコンポーネントへバッチ処理される。1つまたは複数のバッチ処理された作業項目の状態は持続される。1つまたは複数のサービスプロバイダコンポーネントが、1つまたは複数のコミットされた作業項目を実行するとき、1つまたは複数のサービスプロバイダコンポーネントは、1つまたは複数のバッチ処理された作業項目の実行にコミットする。
他の態様によれば、1つまたは複数のコンピュータ読み取り可能記憶媒体は、ワークフローの状態を管理するためのコンピュータ実行可能コンポーネントを含む。ワークフローコンポーネントは、1つまたは複数の実行すべき作業項目を割り当てる。ワークフローコンポーネントはまた、1つまたは複数の作業項目を定義し、1つまたは複数の割り当てられた作業項目を後でバッチ処理する。1つまたは複数のサービスプロバイダコンポーネントは、1つまたは複数のバッチ処理された作業項目の実行にコミットする。
さらに他の態様によれば、システムはサービスの永続的状態を維持する。ワークフローエンジンは、実行すべき1つまたは複数の作業項目を割り当てる。ワークフローエンジンは1つまたは複数の作業項目を定義し、1つまたは複数の割り当てられた作業項目を後でバッチ処理する。サービスプロバイダコンポーネントは、1つまたは複数の割り当てられた作業項目の実行にコミットする。
さらにまた他の態様においては、一方法により、第1のホスト環境によって実行可能な1つまたは複数の作業項目のワークフローが管理される。1つまたは複数の作業項目の実行の割当ては第1のホスト環境において受信される。1つまたは複数の割り当てられた作業項目が第1のホスト環境においてバッチに付加され、その1つまたは複数の割り当てられた作業項目が、後で第1のホスト環境によって実行されるように指示される。1つまたは複数の割り当てられた作業項目の実行を求める要求が、第1のホスト環境において受信される。第1のホスト環境は、1つまたは複数の要求された作業項目を実行する。
別法として、本発明は様々な他の方法および装置を含むことができる。
他の特徴については、一部は自明であり、また一部は以下の記述によって指し示す。
全図面を通して、対応する参照番号は対応する部品を示す。
最初に図1を参照すると、本発明の一実施形態による、コミットされていない作業のバッチ処理により、通信コンポーネントを介して持続された状態の一貫性を維持するためのシステム100の構成図が示されている。システム100は、これに限られるものではないが、ワークフローコンポーネント102、1つまたは複数のサービスプロバイダコンポーネント104、永続記憶装置106を含む。一実施形態では、システム100は1つまたは複数のコンポーネント(例えば、ワークフローコンポーネント102、サービスプロバイダコンポーネント104など)を含むソフトウェアシステムである。他の実施形態では、システム100は、本発明の実施形態を含む1つまたは複数のアプリケーションおよび/またはソフトウェアシステムを含む、企業アプリケーション統合システムなどの統合ソフトウェアアプリケーションシステムである。
ワークフローコンポーネント102は、サービスプロバイダコンポーネント104(例えば、104−1から104−N)によって実施されるタスクの形で作業を管理する。
図1のサービスプロバイダコンポーネント104−1から104−Nは、様々なサービスまたは作業項目を提供するコンポーネントである。例えば、サービスプロバイダコンポーネント104−1は、ユーザ検索クエリの受信、製品のオンライン発注書の受信などのウェブサービスを提供するコンポーネントであってもよい。一実施形態では、サービスプロバイダコンポーネント104は、ホスト環境とも呼ばれるシステム100の一部であり、サービスプロバイダコンポーネント104はホストである。他の実施形態では、サービスプロバイダコンポーネント104の一部またはすべては、システム100の外部に存在する。例えば、サービスプロバイダコンポーネント104−1は、サービスプロバイダコンポーネント104−2とは別のソフトウェアアプリケーションまたはシステムであってもよい。他の実施形態では、サービスプロバイダコンポーネント104によって実施される作業項目の例には、これに限られるものではないが、メッセージング、インスタンス、トランザクション、パーシスタンス(persistence)、スレッディング、タイマ、ロール(role)、トラッキングなどが含まれる。
図1に示したようなワークフローコンポーネント102およびサービスプロバイダコンポーネント104は、システム100の一部であるが、これらのコンポーネント(すなわち、ワークフローコンポーネント102、サービスプロバイダコンポーネント104、および/または永続記憶装置106)は、別のシステム(例えば、別のホスト環境)の一部であってもよいことを理解されたい。例えば、ワークフローコンポーネント102はスタンドアロンソフトウェアアプリケーションであってもよく、一方サービスプロバイダコンポーネント104−1および/またはサービスプロバイダコンポーネント104−2は、ワードプロセッシングソフトウェア、スプレッドシートソフトウェアなど別のソフトウェアであってもよい。
最初に、ワークフローコンポーネント102は一連の実行すべき作業項目を有する。例えば、ウェブサービスを提供するシステムでは、新製品を販売するための新しいウェブページを作成するための一連の作業項目が必要になることがある。作業項目またはタスクには、これに限られるものではないが、製品の写真を提供すること、製品の説明を提供すること、製品の入手可能性を検索することなどが含まれる。この例では、サービスプロバイダコンポーネント104−1から104−Nが、これらの作業項目のすべてまたは一部を実施または実行するサービスを提供する。図1に示したように、サービスプロバイダコンポーネント104は、ワークフローコンポーネント102だけでなく、永続記憶装置106と直接対話することもできる。
この一連の作業項目について考える。ワークフローコンポーネント102は、最初にこれらの作業項目の実行を定義する。新しいウェブページを作成する上記の例では、製品の説明の前に製品の写真を提供するなど、作業項目の実行の順序を定義する。さらに、ワークフローコンポーネント102は、締め切りおよび/または他のビジネスルールなど他のルールも定義する。例えば、ワークフローコンポーネント102は、新しいページ作成の完了締め切りおよび/またはオンライン顧客が新製品を入手できるようになったときの最初の2日間のディスカウントなどを設定することができる。作業項目実行のための他のルールおよび/または定義を、ワークフローコンポーネント102に提供できることを理解されたい。
これら一連の作業項目が定義された後で、ワークフローコンポーネント102は、これらの作業項目を1つまたは複数のサービスプロバイダコンポーネント104に割り当てる。次に、図2を参照すると、本発明の一実施形態による、サービスプロバイダコンポーネント104からの作業項目のバッチ処理についてのフロー図が示されている。例えば、サービスプロバイダコンポーネントを呼び出す前に、ワークフローコンポーネント202は、208において、一連の作業項目に対する作業バッチを生成する。210−1において、ワークフローコンポーネント202は、サービスプロバイダコンポーネントA(例えば、サービスプロバイダコンポーネント104−1)にメッセージを送信することによって、(例えば、新製品の写真を提供するなどの)作業項目を割り当てる。言い換えると、ワークフローコンポーネント202は、サービスプロバイダコンポーネントA上の動作の呼び出しに、バッチを加える。同様に、サービスプロバイダコンポーネントAは、第1の作業項目を生成し、それに作業バッチを付加する。同様に、ワークフローコンポーネント202は、212−1によって、(例えば、新製品の説明を提供するなどの)他の作業をサービスプロバイダコンポーネントB(例えば、サービスプロバイダコンポーネント104−2)に割り当てる。一実施形態では、ワークフローコンポーネント202は、サービスプロバイダコンポーネントAに作業項目の実行を遅延させるように要求することによって、作業項目をサービスプロバイダコンポーネントAに割り当てる。例えば、ワークフローコンポーネント202は、ワークフローコンポーネント202がサービスプロバイダコンポーネントAに実施するように指示するまで、サービスプロバイダコンポーネントAに作業項目を実施しないよう要求する。他の実施形態では、ワークフローコンポーネント202は、各々が様々なサービスプロバイダコンポーネント104によって実施される一連の作業項目を含む、1つまたは複数の作業バッチを生成することができる。
ワークフローコンポーネント202がサービスプロバイダコンポーネントAに作業項目を実施するよう要求することができること、および、サービスプロバイダコンポーネントAが、全体の作業項目ではなく、割り当てられた作業項目の一部分を作業バッチに付加することを理解されたい。例えば、サービスプロバイダコンポーネントAによって作業バッチに付加される作業項目は、ワークフローコンポーネント202からの要求のデータベース要素であってもよい。他の例では、サービスプロバイダコンポーネントBによって作業バッチに付加される作業項目は、ワークフローコンポーネント202からの同じ要求の異なる部分であってもよい。
ワークフローコンポーネント202と各サービスプロバイダコンポーネント(例えば、サービスプロバイダコンポーネントA)との間で、複数の対話が行われることがあることを理解されたい。例えば、ワークフローコンポーネント202は、210−2によってサービスプロバイダコンポーネントAに(または、212−2によってサービスプロバイダコンポーネントBに)、2つ以上の作業項目を割り当てることができる。また、サービスプロバイダコンポーネントAは、1つまたは複数の割り当てられた作業項目を214−2によって作業バッチに付加することができる(あるいは、サービスプロバイダコンポーネントBは、1つまたは複数の割り当てられた作業項目を216−2によって作業バッチに付加することができる)。
他の実施形態では、ワークフローコンポーネント202は、特定のサービスプロバイダコンポーネントに割り当てられた作業項目に関する作業バッチを生成することができる。例えば、ワークフローコンポーネント202は、サービスプロバイダコンポーネントAからの作業項目に対する1つの作業バッチを生成し、サービスプロバイダコンポーネントBからの作業項目に対するもう1つの作業バッチを生成することができる。このように、ワークフローコンポーネント202は、必要に応じて各サービスプロバイダコンポーネントに対する作業バッチを生成する。
サービスプロバイダコンポーネントAは、作業バッチに割り当てられた作業項目を付加または追加することによって、214−1によってワークフローコンポーネント202に応答する。同様に、サービスプロバイダコンポーネントBは、216−1によって作業バッチに作業項目を付加する。例えば、上記の例を使用すると、サービスプロバイダコンポーネント104−1は、新しいウェブページを作成するために新製品の写真を提供することができるというメッセージをワークフローコンポーネント102に送信する。同様に、サービスプロバイダコンポーネント104−2は、新製品の説明を提供できるというメッセージをワークフローコンポーネント102に送信する。ワークフローコンポーネント102が、個々のサービスプロバイダコンポーネント104がどのようにして個々の作業項目を実行するのかの詳細を知らなくてもよいことを理解されたい。新製品の新しいウェブページを作成する上記の例を用いると、サービスプロバイダコンポーネント104−1は、多数の製品写真を含むデータベースにアクセスして新製品の写真を見つけ出すことが必要になることもある。同様に、サービスプロバイダコンポーネント104−2は、製品についての説明を含むデータベースにアクセスすることが必要になること、および/またはデータベースから入手できない場合は、新しい説明を提供するために人の介在が必要になることもある。
図2には、2つのサービスプロバイダコンポーネントAおよびBだけが示されているが、これらおよび他のサービスプロバイダコンポーネントに、追加の作業項目を割り当てることができることを理解されたい。サービスプロバイダコンポーネント104は、ワークフローコンポーネント102から割り当てられた作業項目の実施を拒絶することができることも理解されたい。
サービスプロバイダコンポーネントAおよび/またはBからのメッセージを受信するとすぐに、ワークフローコンポーネント202は、226で作業項目の状態を持続するためのバッチ処理された作業項目を含むトランザクションを生成する。例えば、ワークフローコンポーネント202は、予定された時点または時間にトランザクションを生成することができる。218−1で、ワークフローコンポーネント202は、サービスプロバイダコンポーネントAに、(例えば、新製品の写真を提供することなどの)バッチ処理された作業項目を持続するよう要求する。言い換えると、ワークフローコンポーネント202はサービスプロバイダコンポーネントAにバッチ処理された作業項目の実行の状態に関する要求を行う。222−1において、サービスプロバイダコンポーネントAは、「未実行」、「完了」、「実行中」、「中止」など、バッチ処理された作業項目の状態を示すことによって、ワークフローコンポーネント202に応答する。個々の作業項目に対応する1つまたは複数の他の状態を、ワークフローコンポーネント202に提供できることを理解されたい。同様に、ワークフローコンポーネント202は、220−1で、サービスプロバイダコンポーネントB(例えば、サービスプロバイダコンポーネント104−2)に、(例えば、新製品の説明を提供することなどの)バッチ処理された作業項目の実行の状態を永続するよう要求し、224−1において、サービスプロバイダコンポーネントBはその要求に応答する。
ワークフローコンポーネント202が、他のバッチ処理された作業項目の実行の状態に関する複数の要求(例えば、218−2など)をサービスプロバイダコンポーネントAに送信することができることを理解されたい。同様に、サービスプロバイダコンポーネントAは、(例えば、222−2において)ワークフローコンポーネント202に応答して、他の要求によるバッチ処理された作業項目の状態を示すことができる。
本発明の一実施形態によれば、ワークフローコンポーネント202は、状態を持続するためのトランザクションを生成する。ワークフローコンポーネント202は作業バッチを繰り返し、サービスプロバイダコンポーネントAについての作業項目のすべてを収集する。この例では、ワークフローコンポーネント202は、各作業項目間の順序を維持して特定の作業バッチを生成する。ワークフローコンポーネント202は、コミットポイントにおいて、サービスプロバイダコンポーネントAの動作を呼び出したときに、トランザクションおよび作業バッチを渡す。サービスプロバイダコンポーネントAは、トランザクションに作業バッチ中の各作業項目を追加する。言い換えると、作業項目が持続される。これらのプロセスは、作業バッチ中の各項目を含むすべてのコンポーネントに対して繰り返すことができる。コミット通知またはメッセージの成功時に、ワークフローコンポーネント202はトランザクションをコミットする。次いで、トランザクションのコミットに成功すると、ワークフローコンポーネント202は、(サービスプロバイダコンポーネントAに関して前述したように)バッチを繰り返し、各コンポーネントに対するすべての作業項目を収集する。
次に、ワークフローコンポーネント102は、サービスプロバイダコンポーネント104によって提供される永続記憶装置106に作業項目の状態を格納する。例えば、サービスプロバイダコンポーネント104は、作業項目の状態を格納するために、永続記憶装置106など、そのコンポーネントの全体のリソース環境をワークフローコンポーネント102に提供する。同様に、対話(例えば、図1のサービスプロバイダコンポーネント104−Nと永続記憶装置106の間の矢印)は、ワークフローコンポーネント102のために永続記憶装置106にアクセスして作業項目の状態を格納する、サービスプロバイダコンポーネント104−Nを示す一例である。図1には、ただ1つの永続記憶装置106だけが示されているが、作業項目の状態を格納するために、ワークフローコンポーネント102が複数の永続記憶装置を使用できることを理解されたい。永続記憶装置106は、コンピュータ読み取り可能命令、データ構造、プログラムモジュール、その他のデータなどの情報を格納するための揮発性および不揮発性、取り外し可能および取り外し不可能な媒体であってもよい(例えば、図5のシステムメモリ134)。格納された作業項目の永続的な状態を使用して、ワークフローコンポーネント102は作業項目の一貫性を維持することができる。言い換えると、ワークフローコンポーネント102は定期的に作業項目のチェックポイントをとり、そのチェックポイントでの作業項目の状態を格納して、すべての作業項目の永続的な状態を維持する。
228において、ワークフローコンポーネント202はトランザクションをコミットする。言い換えると、ワークフローコンポーネント202は、サービスプロバイダコンポーネントAおよび/またはBに、バッチ処理された作業項目の実行にコミットするよう要求する。新製品のために新しいウェブページを作成する上述の例を再度参照すると、ワークフローコンポーネント102が、タスクを完了するために必要なすべての作業を割り当てた後で、ワークフローコンポーネント102はサービスプロバイダコンポーネントに新製品の写真の提供、新製品の説明の提供などを要求する。このような作業項目の割当て、バッチ処理、およびコミットを介して、ワークフローコンポーネント202は、割当て時に作業項目が実行/実施される垂直統合モデルの不利な点や欠点の解決を支援することを理解されたい。この遅延実行を提供することによって、ワークフローコンポーネント202は、作業項目の一貫した状態を維持しながら、いつ作業項目を実行/実施すべきかを管理する。同時に、各サービスプロバイダコンポーネントAおよび/またはBはまた、他のサービスプロバイダコンポーネントが個々のバッチ処理またはトランザクション中に有する作業項目の状態についての一貫したビューも備える。
限定のためではなく例として、メッセージングサービスプロバイダコンポーネントの「Send(送信)」メッセージは、特別なSQL(structured query language)を含むオブジェクトを構成することに帰着することがある。この例では、メッセージングサービスプロバイダコンポーネントは、オブジェクト、すなわち、Work Item(作業項目)を作業バッチに追加する。ワークフローコンポーネントによって決定された、スケジュールされたコミットポイントにおいて、トランザクションが生成される。さらに、すべての未処理の割り当てられた作業項目にはトランザクションが与えられ、サービスプロバイダコンポーネントは作業項目の実行/実施にコミットするよう指示される。このポイントにおいて、例えば、メッセージングサービスプロバイダコンポーネントは、トランザクションの一部としてSQLを実行するのに適切な、あらゆるアクションを実施する。次いで、トランザクションがコミットされる。
次に、図3を参照すると、本発明の一実施形態による、1つまたは複数の付加された作業項目を有する、トランザクション304の構成図が示されている。先に論じたように、ワークフローコンポーネント102は、バッチ処理された作業項目からなる1つまたは複数のバッチを含むトランザクションを生成する。一実施形態では、トランザクション304は1つまたは複数のトランザクション302(例えば、302−1から302−N)を含む長期実行トランザクションであり、完了までに非常に長い期間(例えば、数カ月)を要する。言い換えると、トランザクション302は、トランザクション304など他の長期実行トランザクションの中にバッチ処理されることができる。各トランザクション302は、各トランザクション302が個別のブロックで示された図3に示されるように、トランザクション境界に従って構成される。例えば、トランザクション302−1(例えば、アトミックトランザクション(atomic transaction)1)は、トランザクション302−2(例えば、アトミックトランザクション2)とは別の境界を有する。個別の境界を有するトランザクション302を定義することによって、ワークフローコンポーネント102はトランザクション302のチェックポイントをとり、トランザクション302の状態/状況を決定することができる。例えば、ワークフローコンポーネント102は、308において、トランザクション302−1の状態を調査または監視する。同様に、ワークフローコンポーネント102は、306において、トランザクション302−2の状態を調査する。トランザクション302の状態のチェックポイントをとることによって、ワークフローコンポーネント102はトランザクション302の作業項目の永続的な状態を維持する。
他の例では、各トランザクション302には、1つまたは複数の作業項目を含む1つまたは複数のバッチが含まれる。例えば、アトミックトランザクション302−1には、1つまたは複数の作業項目(図示せず)を含むバッチ(または、スコープバッチ(scope batch))310が含まれる。同様に、アトミックトランザクション302−2には、1つまたは複数の作業項目を含むバッチ(または、スコープバッチ)312が含まれる。図3のアトミックトランザクション302−1には、ただ1つのバッチ310だけが示されているが、各トランザクション302が1つまたは複数のバッチまたは内部スコープバッチを含むことができることを理解されたい。
他の実施形態においては、障害のために1つまたは複数の作業項目または全体のトランザクションが実行されない場合に、ワークフローコンポーネント102は、定義されたトランザクション境界のおかげで影響を受けない他のトランザクションとともにある、障害のあるトランザクション中の作業項目を中止することだけを必要とする。ワークフローコンポーネント102は、最初に、障害の起こっているスコープ(例えば、アトミックトランザクション302−1のスコープバッチ310)に関係するすべての作業項目を識別し、障害作業バッチを構成する。次いで、ワークフローコンポーネント102は、各個別の未処理作業項目の「完了」状態を呼び出し、障害作業バッチ内のすべての作業に対して完了状態を「偽(false)」に設定する。さらに、ワークフローコンポーネント102は、この作業バッチ内のすべての作業を中止する。この実施形態におけるランタイムは、障害からの回復の後で、残りのすべての作業バッチ項目への参照を維持する。次いで各作業を、後の永続ポイントでコミットすることができる。
新しいウェブページを作成する前述の例において、トランザクション内の作業項目の実行をコミットした後で、サービスプロバイダコンポーネント104−1が新製品の写真を提供することができないと想定する。トランザクションの永続的な状態を維持する際に、ワークフローコンポーネント102は、特定の作業項目(例えば、新製品の写真を提供することなど)が中止されたか、または未完了であるかを判断する。ワークフローコンポーネント102は次に、このトランザクション(すなわち、新しいウェブページを作成すること)中の作業項目の一部またはすべてを中止するが、この障害のあったトランザクションによって他のトランザクション(例えば、他の項目のためのオーダを取るなど)が影響を受けることはない。一実施形態では、他のトランザクションにおける他の作業項目の完了時、または障害からの回復時に、ワークフローコンポーネント102は、障害のあるトランザクションの参照(例えば、バッチ処理された作業項目、作業項目定義など)を維持して、後でワークフローコンポーネント102はサービスプロバイダコンポーネント104がその作業項目に再度コミットするよう要求できるようにすることができる。
さらに他の実施形態では、サービスプロバイダコンポーネント104−1は、コミットされた作業項目の実行を完了できないと知らせるメッセージを、ワークフローコンポーネント102に通知または送信することができる。その結果、ワークフローコンポーネント102は、受信したメッセージに応答して作業項目を中止することができる。
図4は、本発明の一実施形態による、コミットされていない作業のバッチ処理により、通信コンポーネントを介して持続された状態の一貫性を維持する動作を示す一例示的流れ図である。最初に、ワークフローコンポーネント102は、実行/実施すべき一組の作業項目を含むワークフローを定義する。402において、ワークフローコンポーネント102は、作業バッチを生成する。404において、ワークフローコンポーネント102は、作業項目をサービスプロバイダコンポーネント(例えば、サービスプロバイダコンポーネント104−1)に割り当てる。例えば、ワークフローコンポーネント102は、作業項目(例えば、新製品の写真を提供すること)をサービスプロバイダコンポーネント104に割り当てる。406において、サービスプロバイダコンポーネント104は、割当てに従って作業項目を生成し、それを作業バッチに付加する。408において、ワークフローコンポーネント102は、ワークフローを完成させるために作業バッチにさらに付加すべき作業項目があるかどうかを判定する。判定結果が肯定の場合は、ワークフローコンポーネント102は404に続き、その作業バッチに追加すべき追加の作業項目を収集する。
判定が否定の場合は、ワークフローコンポーネント102は、410においてトランザクションを生成する。あるいは、ワークフローコンポーネント102は、スケジュールされた時間またはポイントにおいて、トランザクションを生成することができる。412において、ワークフローコンポーネント102は、バッチ処理された作業項目をトランザクションに収集する。414において、ワークフローコンポーネント102は作業項目の状態を持続する。次に416において、ワークフローコンポーネント102は、トランザクションの実行をコミットする。すなわち、ワークフローコンポーネント102は、割り当てられた作業を実行/実施するようサービスプロバイダコンポーネント104に要求する。サービスプロバイダコンポーネント104が作業項目にコミットした後で、ワークフローコンポーネント102は、作業項目の状態を図1の永続記憶装置106に格納することによって作業項目の状態を持続することを理解されたい。
418で、ワークフローコンポーネント102は、定期的に作業項目/トランザクションの状態のチェックポイントをとることによって、コミットされた作業項目の実行の間に何らかの障害が発生しているかどうかを判定する。他の実施形態では、サービスプロバイダコンポーネント104は、ワークフローコンポーネント102に障害が発生したことをメッセージ送信するか、または通知する。実行障害がないとワークフローコンポーネント102が判定した場合は、420において、ワークフローコンポーネント102はトランザクションの実行を完了する。
一方、ワークフローコンポーネント102が、実行障害があると判定した場合、または他の実施形態で、サービスプロバイダコンポーネントが実行障害があると示した場合は、ワークフローコンポーネント102は、422において、障害のある作業項目/トランザクションに関連するバッチを中止する。言い換えると、この実施形態では、ワークフローコンポーネント102は、(障害のあるスコープの)内部バッチ中のすべての項目を中止し、後のコミットポイントのために周囲のスコープ中の作業項目を維持する。424において、ワークフローコンポーネント102は、非障害作業項目の実行を完了する。ワークフローコンポーネント102は、426において、障害のある作業項目に関連する作業への参照を維持し、(破線で示されているように)後でサービスプロバイダコンポーネント104を、障害のあった作業項目にコミットさせ続けさせることもできる。付録Aは、ワークフロートランザクションのバッチ処理のための例示的プロトコルを示す。
本発明は、本発明の特徴の少なくともいくつかを実施する作業項目を含むバッチを実装することによって、従来のワークフローシステム設計およびモデリングに対する利点を提供する。動作に際して、1つまたは複数のコンポーネントまたは複数のソフトウェアシステムを含むソフトウェアシステムは、複数のワークフローを管理するワークフローコンポーネントを含む。ワークフローコンポーネントは、1つまたは複数のサービスプロバイダコンポーネントによって実施される(例えば、新製品のための新しいウェブページを作成することなどの)ワークフローを定義する。例えば、新しいウェブページ作成のためのワークフローには、新製品の写真を提供すること、新製品の説明を提供すること、新製品の入手性の決定などを含めることができる。サービスプロバイダコンポーネントが、ワークフローコンポーネントとは別のソフトウェアシステム、アプリケーション、またはパッケージ内に存在してもよいことを理解されたい。
ワークフローコンポーネントは作業バッチを生成し、作業項目をサービスプロバイダコンポーネントに割り当てるメッセージを送信する。サービスプロバイダコンポーネントは、割り当てられた作業項目が実行/実施できるかどうかを判定する。判定が肯定の場合は、サービスプロバイダコンポーネントは、作業バッチに作業項目を付加する。このバッチ処理プロセスによって、ワークフローコンポーネントは、割り当てられた作業項目の実質上同時に起こる実行を遅延させることを理解されたい。
次に、ワークフローコンポーネントは、バッチされた作業項目を含むトランザクションを生成する。ワークフローコンポーネントは、トランザクション/作業項目のチェックポイントをとり、作業項目の状態を永続記憶装置に格納することによって、作業項目の状態を定期的に持続する。その際、ワークフローコンポーネントは、様々なトランザクションにおける作業項目の持続された状態の一貫性を維持する。ワークフローコンポーネントは、サービスプロバイダコンポーネントに作業項目を実行/実施することを要求することによってトランザクションをコミットする。
実行障害が発生した場合は、ワークフローコンポーネントは障害のある作業項目を中止する。ワークフローコンポーネントは、引き続き非障害作業項目の実行を完了させる。一実施形態では、サービスプロバイダコンポーネントは、ワークフローコンポーネントに実行障害が発生したことを知らせるメッセージを送信する。障害のある実行から回復したとき、または非障害作業項目の実行が完了した後で、ワークフローコンポーネントは、その後障害のある作業項目をコミットすることができる。
図5はコンピュータ130の形の汎用コンピュータ装置の一例を示す。本発明の一実施形態において、コンピュータ130などのコンピュータは、本明細書で図示し説明した他の図における使用にも適するものである。コンピュータ130は1つまたは複数のプロセッサまたは処理ユニット132、およびシステムメモリ134を有する。図示の実施形態では、システムバス136は、システムメモリ134など様々なシステムコンポーネントをプロセッサ132に結合する。バス136は、メモリバスもしくはメモリコントローラ、ペリフェラルバス、AGP(accelerated graphics port)、および様々なバスアーキテクチャのいずれかを使用するプロセッサもしくはローカルバスなど、いくつかの種類のバス構造のうちの任意の1つまたは複数を表す。限定の意味ではなく例として、このようなアーキテクチャには、ISA(Industry Standard Architecture)バス、MCA(Micro Channel Architecture)バス、EISA(Enhanced ISA)バス、VESA(Video Electronics Standards Association)ローカルバス、メザニン(Mezzanine)バスとも呼ばれるPCI(Peripheral Component Interconnect)バスなどが含まれる。
一般に、コンピュータ130は、少なくとも何らかの形のコンピュータ読み取り可能記憶媒体を含む。コンピュータ読み取り可能記憶媒体は、コンピュータ130によってアクセス可能な任意の使用可能媒体でよく、揮発性および不揮発性媒体、ならびに取り外し可能および取り外し不可能な媒体の両方を含む。限定の意味ではなく例として、コンピュータ読み取り可能記憶媒体には、コンピュータ記憶媒体および通信媒体を含めることができる。コンピュータ記憶媒体は、コンピュータ読み取り可能命令、データ構造、プログラムモジュール、その他のデータなどの情報を記憶するための任意の方法または技術で実装された、揮発性および不揮発性、取り外し可能および取り外し不可能な媒体を含む。例えば、コンピュータ記憶媒体は、RAM、ROM、EEPROM、フラッシュメモリ、または他のメモリ技術製品、CD−ROM、DVD(digital versatile disks)、または他の光ディスク記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置、または他の磁気記憶装置、あるいは、所望の情報を格納するために使用することができ、かつコンピュータ130によってアクセスできる他の任意の媒体を含む。一般に、通信媒体はコンピュータ読み取り可能命令、データ構造、プログラムモジュール、その他のデータなどを、搬送波もしくは他の伝送機構など被変調データ信号の形で実施するとともに、いずれかの情報送達媒体を含む。当業者ならば、情報を信号中に符号化するような形で設定または変更された、1つまたは複数の信号特性を有する被変調データ信号については熟知しているはずである。有線ネットワーク、直接有線接続などの有線媒体、および音響、無線周波数(RF)、赤外などの無線媒体は通信媒体の例である。上記の媒体の任意の組合せもまた、コンピュータ読み取り可能記憶媒体の範囲に含まれる。
システムメモリ134は、取り外し可能および/または取り外し不可能、揮発性および/または不揮発性メモリの形のコンピュータ記憶媒体を含む。図示の実施形態では、システムメモリ134は、ROM(読み出し専用メモリ)138およびRAM(ランダムアクセスメモリ)140を含む。基本入/出力システム(BIOS)142は、例えば起動時などに、コンピュータ130内の各要素間の情報転送を支援する基本ルーチンを含み、通常はROM138に格納されている。RAM140は一般に、処理ユニット132によって即時にアクセス可能かつ/または現在動作中である、データおよび/またはプログラムモジュールを含む。限定の意味ではなく、例として、図5には、オペレーティングシステム144、アプリケーションプログラム146、その他のプログラムモジュール148、およびプログラムデータ150が示されている。
コンピュータ130は、他の取り外し可能/取り外し不可能、揮発性/不揮発性のコンピュータ記憶媒体を含むこともできる。例えば図5には、取り外し不可能な不揮発性の磁気媒体に読み書きするハードディスクドライブ154が示されている。図5にはまた、取り外し可能な不揮発性磁気ディスク158に読み書きする磁気ディスクドライブ156、およびCD−ROMや他の光媒体など取り外し可能な不揮発性光ディスク162に読み書きする光ディスクドライブ160も示されている。例示の動作環境で使用できる、他の取り外し可能/取り外し不可能、揮発性/不揮発性のコンピュータ記憶媒体には、これに限定されるものではないが、磁気テープカセット、フラッシュメモリカード、DVD、デジタルビデオテープ、半導体RAM、半導体ROMなどが含まれる。ハードディスクドライブ154、ならびに磁気ディスクドライブ156および光ディスクドライブ160は一般に、インターフェース166などの不揮発性メモリインターフェースによってシステムバス136に接続される。
上述し図5に示した各ドライブまたは大容量記憶装置、ならびにそれらに関連するコンピュータ記憶媒体は、コンピュータ130のためのコンピュータ読み取り可能命令、データ構造、プログラムモジュール、その他のデータなどを記憶する。図5において、例えば、ハードディスクドライブ154は、オペレーティングシステム170、アプリケーションプログラム172、その他のプログラムモジュール174、およびプログラムデータ176を格納するように図示されている。これらのコンポーネントは、オペレーティングシステム144、アプリケーションプログラム146、その他のプログラムモジュール148、およびプログラムデータ150と同一であっても、異なっていてもよいことに留意されたい。オペレーティングシステム170、アプリケーションプログラム172、他のプログラムモジュール174、およびプログラムデータ176は、少なくともそれらが異なるコピーであることを示すために、本明細書では異なる番号が付与されている。
ユーザは、キーボード180やポインティング装置182(例えば、マウス、トラックボール、ペン、タッチパッド)などの入力装置またはユーザインターフェース選択装置を介して、命令および情報をコンピュータ130に入力することができる。他の入力装置(図示せず)には、マイクロホン、ジョイスティック、ゲームパッド、衛星放送受信アンテナ、スキャナなどがある。これらおよび他の入力装置は、システムバス136に結合されたユーザ入力インターフェース184を介して処理ユニット132に接続されるが、パラレルポート、ゲームポート、USB(Universal Serial Bus)など、他のインターフェースやバス構造を用いて接続されることもある。モニタ188、または他の種類の表示装置もまた、ビデオインターフェース190などのインターフェースを介してシステムバス136に接続される。モニタ188の他に、コンピュータは、出力ペリフェラルインターフェース(図示せず)を介して接続できるプリンタやスピーカなど、他の周辺出力装置(図示せず)を含むことも多い。
コンピュータ130は、リモートコンピュータ194など1つまたは複数のリモートコンピュータへの論理接続を使用してネットワーク環境で動作させることができる。リモートコンピュータ194は、パーソナルコンピュータ、サーバ、ルータ、ネットワークPC、ピア装置、他の一般的なネットワークノードなどであってもよく、コンピュータ130に関連して上述した要素の多く、またはすべてを含むことができる。図5に示された論理接続には、LAN(ローカルエリアネットワーク)196およびWAN(ワイドエリアネットワーク)198が含まれているが、他のネットワークを含めることもできる。LAN196および/またはWAN198は有線ネットワークでも、無線ネットワークでも、それらの組合せなどであってもよい。このようなネットワーク環境は、オフィス、企業規模のコンピュータネットワーク、イントラネット、およびグローバルコンピュータネットワーク(例えば、インターネット)において一般的なものである。
LANネットワーク環境で使用されるとき、コンピュータ130は、ネットワークインターフェースまたはアダプタ186を介してLAN196に接続される。WANネットワーク環境で使用されるとき、コンピュータ130は一般に、インターネットなどのWAN198を介して通信を確立するためのモデム178、その他の手段を含む。モデム178は、内蔵でも外付けでもよいが、ユーザ入力インターフェース184または他の適切な機構を介してシステムバス136に接続される。ネットワーク環境では、コンピュータ130に関連して示された各プログラムモジュールまたはその一部は、リモートのメモリ記憶装置(図示せず)に格納することができる。限定の意味ではなく例として、図5には、リモートアプリケーションプログラム192が、メモリ装置上に常駐するように示されている。図示のネットワーク環境は例示的なものであり、コンピュータ間の通信リンクを確立する他の手段を使用することもできる。
一般に、コンピュータ130のデータプロセッサは、異なる時点においてコンピュータのさまざまなコンピュータ読み取り可能記憶媒体に格納された、命令を用いてプログラムされる。プログラムおよびオペレーティングシステムは一般に、例えば、フロッピー(登録商標)ディスクやCD−ROMなどに分散される。そこから、それらはコンピュータの2次メモリにインストールまたはロードされる。実行時には、それらの少なくとも一部はコンピュータの主電子メモリにロードされる。本明細書に記載の本発明は、これらおよび他の様々な種類のコンピュータ読み取り可能記憶媒体を含み、それらの媒体には、マイクロプロセッサまたは他のデータプロセッサと共に使用される、以下に記載の諸ステップを実行するための命令またはプログラムが含まれる。本発明はまた、本明細書に記載の方法および技術に従ってプログラムされたコンピュータそれ自体も含む。
例示のために、オペレーティングシステムなどのプログラムや他の実行可能なプログラムコンポーネントは、本明細書では個別のブロックとして示されている。しかし、このようなプログラムおよびコンポーネントは、様々な時点にコンピュータの様々な記憶コンポーネントに存在し、コンピュータのデータプロセッサによって実行されることを理解されたい。
コンピュータ130などの例示的コンピュータシステム環境と共に説明されているが、本発明は多くの他の汎用または専用コンピュータシステム環境または構成と共に使用することができる。このコンピュータシステム環境は、本発明の使用または機能の範囲に関するいかなる制限を示唆することも意図したものでもない。さらに、コンピュータシステム環境は、例示的動作環境に示されたコンポーネントのいずれか、またはその組合せに関して何らかの依存関係または要件を有しているものと解釈すべきではない。本発明と共に使用するのに適した周知のコンピュータシステム、環境、および/または構成の例には、これに限られるものではないが、パーソナルコンピュータ、サーバコンピュータ、ハンドヘルドまたはラップトップ装置、マルチプロセッサシステム、マイクロプロセッサベースのシステム、セットトップボックス、プログラマブル家電、携帯電話、ネットワークPC、ミニコンピュータ、メインフレームコンピュータ、上記のシステムまたは装置のいずれかを含む分散コンピュータ環境などが含まれる。
本発明は、1つまたは複数のコンピュータまたは他の装置によって実行される、プログラムモジュールなどのコンピュータ実行可能命令の一般的文脈で説明することができる。一般に、プログラムモジュールには、これに限られるものではないが、特定のタスクを実行するかまたは特定の抽象データ型を実行するルーチン、プログラム、オブジェクト、コンポーネント、データ構造などが含まれる。本発明は分散コンピュータ環境でも実施できるが、その場合タスクは、通信ネットワークを介してリンクされたリモート処理装置によって実施される。分散コンピュータ環境においては、プログラムモジュールは、ローカルおよびリモート両方のコンピュータの、メモリ記憶装置などの記憶媒体に配置することができる。
ソフトウェアアーキテクチャの文脈におけるインターフェースには、ソフトウェアモジュール、コンポーネント、コードの一部分、または他の一連のコンピュータ実行可能命令が含まれる。インターフェースは、例えば、第1のモジュールが、その第1のモジュールの代わりにコンピューティングタスクを実施する第2のモジュールにアクセスすることを含む。第1および第2のモジュールは、一例として、オペレーティングシステムなどによって提供されるAPI(アプリケーションプログラムインターフェース)、(例えば、ピアツーピアアプリケーション通信のための)COM(コンポーネントオブジェクトモデル)インターフェース、および(例えば、ウェブサービス間の通信のための)XMI(XMLメタデータ交換形式)インターフェースなどを含む。
インターフェースは、J2EE(Java(登録商標)2 Platform Enterprise Edition)、COM、DCOM(distributed COM)の例などの、密結合、同期実行であってもよい。別法または追加として、インターフェースは、(例えば、SOAP(simple object access protocol)を使用する)ウェブサービスなどの、疎結合、非同期実行であってもよい。一般に、インターフェースは、密結合、疎結合、同期、非同期などの特性の任意の組合せを含む。さらに、インターフェースは、標準プロトコル、専用プロトコル、あるいは標準プロトコルと専用プロトコルの任意の組合せに従うことができる。
本明細書に記載のインターフェースはすべて、単一のインターフェースの一部であってもよいし、あるいは個別のインターフェースまたはそれらの任意の組合せとして実装することもできる。インターフェースは、機能を提供するために、ローカルまたはリモートで実行することができる。さらに、インターフェースは、本明細書に図示し説明した機能に対して追加の機能を含むことも、削減された機能を含むこともできる。
本明細書に図示し記載した方法の実行または動作の順序は、特に指定した場合を除き重要ではない。すなわち、本方法の各要素は、特に指定がない場合は、任意の順序で実施することができる。また、本明細書の方法は、本明細書に開示の諸要素に対してより多くの要素を含むことも、あるいはより少ない要素を含むこともできる。例えば、特定の要素を他の要素より前に、それと同時に、またはそれより後で実行または実施することは、本発明の範囲に含まれることが企図される。
上記の成果および方法については、本発明の範囲を逸脱することなく様々な変更がなし得るので、上記の説明に含まれ添付の図面に示されたすべての内容は例示的なものであり限定の意味ではないものと解釈すべきであることが意図される。
付録A
ワークフロートランザクションのバッチ処理
例示のワークフローの実行の間に、ランタイムはそのサービスを呼び出し、作業を実施する。例えば、送信ワークフロー動作は、メッセージングサービスの呼出しである。メッセージングサービスは送信要求を処理し、送信に関するある状態を維持する。トランザクション/永続的モデルの要件の1つは、様々なサービスおよびワークフローランタイムによって維持される各状態間の一貫性を維持することである。ワークフローがコミットポイントに到達したとき、ランタイムは永続的サービスを呼び出し、そのワークフローインスタンスの状態を渡す。このインスタンスの状態および他のサービスの作業をバッチ処理し、ある単一のトランザクションに関与する複数の永続的リソースマネージャ(RM)にコミットすることができる。
およびBが別々の作業バッチである場合は(例えば、図3のトランザクション304およびアトミックトランザクション302−N参照)、コミットポイントにおいて全体の作業集合{B,B}をトランザクションにコミットする必要がある。トランザクションの障害発生時には、要件により、Bに関する作業は捨てなければならない。Bに関する作業は、後続のポイントのために存在し続ける必要がある。
本発明の一実施形態によれば、各プロバイダが容易に同じトランザクションを共用できるように、ランタイムは、そのサービスへのすべての呼出しにおいて、そのスレッド呼出し状況でのWorkBatchオブジェクトをフロートさせる。各サービスはこのバッチに作業を追加することを選択することができる。例えば、メッセージングサービスにおけるSendメソッドにより、アドホックSQLを含むオブジェクトが構築されることがある。次いで、メッセージングサービスは、そのオブジェクトをWorkBatchに追加することができる。スケジュールされたコミットポイントにおいて、メッセージングサービスIPendingWork.Completeメソッドが呼び出され、その未処理作業のすべてがそのメソッドに返される。次いで、サービスは、トランザクションの一部としてSQLを実行するのが適切な、どのようなアクションでも実施することができる。
例えば、Namespace:Microsoft.Workflow.Runtimeは、
Figure 2006178935
で与えられる。
Addメソッドを使用して、未処理の作業項目を作業バッチに追加することができる。プロバイダは、IPendingWorkインターフェースを実装するオブジェクトに関連するバッチに追加された作業にタグをつける。このオブジェクトは、作業の最終的なコミットを処理することになる。以下の例では、永続プロバイダそれ自体が、IPendingWorkインターフェースを実装する。
インターフェースIPendingWorkは次のように定義される。
Figure 2006178935
Commitメソッドでは、作業項目のリストはトランザクションオブジェクトを使用してデータベースにコミットされる。
Completeメソッドは、必要なクリーンアップを実施する。このメソッドは、項目リストにある作業の処理が終了したときに、ランタイムによって呼び出される。作業が正常に終了した場合は、succeeded=真(true)であり、それ以外の場合はsucceeded=偽(false)である。
さらにこの例に関して、コミットポイントでの一連の動作は、以下の項目を含む。
a.ランタイムは、PersistenceService::Saveメソッドを呼び出す。
b.ランタイムは、TransactionService::Createメソッドを呼び出し、System.ICommitableTransactionを取得する。
c.ランタイムはその作業収集を繰り返し、同じIPendingWorkオブジェクトを参照するすべての項目を収集する。次いで、ランタイムは各固有のIPendingWorkオブジェクトのCommitメソッドを一度だけ呼び出し、Transactionとそのすべての未処理作業のリストを渡す。
d.コミット通知の成功時に、ランタイムはICommittableTransaction::Commitを呼び出す。
e.トランザクションの成功時に、ランタイムは各固有のIPendingWorkオブジェクトのCompleteメソッドを一度だけ呼び出し、succeeded=真と、そのすべての未処理作業のリストを渡す。
Workflow Faultに関する例示的一連の動作には以下の項目が含まれる。
a.ランタイムは、ワークフローモデルセマンティックス(アトミックスコープ)に基づいて、障害範囲に関連するIPendingWorkオブジェクトを中止することを決定する。
b.ランタイムは各固有のIPendingWorkのCompleteメソッドを呼び出し、中止したすべての作業に対して完了状態=偽とする。
c.ランタイムは、障害からの回復の後でその作業が引き続き有効であることを、その作業のセマンティックスが示している任意の作業への参照を維持する。次いで、その作業を後の永続ポイントにおいてコミットすることができる。
本発明の一実施形態による、コミットされていない作業のバッチ処理により、通信コンポーネントを介して持続された状態の一貫性を維持するシステムを示す一例示的実施形態の構成図である。 本発明の一実施形態による、サービスプロバイダコンポーネントからの作業項目のバッチ処理を示す一例示的フロー図である。 本発明の一実施形態による、1つまたは複数の付加された作業項目を有するトランザクションを示す一例示的構成図である。 本発明の一実施形態による、コミットされていない作業のバッチ処理により、通信コンポーネントを介して持続された状態の一貫性を維持する動作を示す一例示的流れ図である。 本発明を実装することができる適切なコンピュータシステム環境の一例を示す構成図である。

Claims (20)

  1. ワークフローの状態を管理する方法であって、
    実行すべき1つまたは複数の作業項目を定義すること、
    前記1つまたは複数の定義された作業項目を、1つまたは複数のサービスプロバイダコンポーネントに実行のために割り当てること、
    前記1つまたは複数のサービスプロバイダコンポーネントに割り当てられた前記1つまたは複数の作業項目を後でバッチ処理すること、
    前記1つまたは複数のバッチ処理された作業項目の状態を持続すること、および、
    前記1つまたは複数のサービスプロバイダコンポーネントに前記1つまたは複数のバッチ処理された作業項目を実行するようコミットすることであって、前記1つまたは複数のサービスプロバイダコンポーネントが前記1つまたは複数のコミットされた作業項目を実行すること
    を含むことを特徴とする方法。
  2. コミットすることは、トランザクションを生成すること、および、前記1つまたは複数のバッチ処理された作業項目をトランザクションに付加することの少なくとも一方を含むことを特徴とする請求項1に記載の方法。
  3. 付加することは、前記トランザクション内の前記1つまたは複数の付加された作業項目を、前記1つまたは複数の定義された作業項目の機能に応じて区分することを含むことを特徴とする請求項2に記載の方法。
  4. 前記1つまたは複数のサービスプロバイダコンポーネントは、1つまたは複数のホスト環境と、前記1つまたは複数の定義された作業項目に関してリモートである1つまたは複数のホスト環境との一部であり、
    前記1つまたは複数の作業項目は、メッセージング、インスタンス、トランザクション、パーシスタンス、スレッディング、タイマ、ロール、および、トラッキングのうちの少なくとも1つまたは複数を含むこと
    を特徴とする請求項1に記載の方法。
  5. 前記1つまたは複数のコミットされた作業項目の実行に失敗した場合に、前記1つまたは複数のサービスプロバイダコンポーネントによってメッセージが送信されることをさらに含むことを特徴とする請求項1に記載の方法。
  6. 持続することは、前記1つまたは複数のバッチ処理された作業項目の前記状態を、コンピュータ読み取り可能記憶媒体に保存することを含み、前記1つまたは複数の割り当てられた作業項目の前記状態は、完了、実行中、および中止のうちの少なくとも1つを含むことを特徴とする請求項1に記載の方法。
  7. 1つまたは複数のコンピュータ読み取り可能記憶媒体は、前記請求項1に記載の方法を実施するためのコンピュータ実行可能命令を有することを特徴とする請求項1に記載の方法。
  8. ワークフローの状態を管理するためのコンピュータ実行可能コンポーネントを含む、1つまたは複数のコンピュータ読み取り可能記憶媒体であって、前記コンポーネントは、
    実行すべき1つまたは複数の作業項目を割り当てるワークフローコンポーネントであって、前記1つまたは複数の作業項目を定義し、1つまたは複数の割り当てられた作業項目を後でバッチ処理するワークフローコンポーネントと、
    前記1つまたは複数のバッチ処理された作業項目の実行にコミットする1つまたは複数のサービスプロバイダコンポーネントと
    を含むことを特徴とするコンピュータ読み取り可能記憶媒体。
  9. 前記1つまたは複数のバッチ処理された作業項目の永続的な状態を格納するためのメモリをさらに含み、前記1つまたは複数のバッチ処理された作業項目の前記永続的な状態は、完了、実行中、および中止のうちの少なくとも1つを含むことを特徴とする請求項8に記載のコンピュータ読み取り可能記憶媒体。
  10. 前記ワークフローコンポーネントはトランザクションを生成し、前記トランザクションは前記1つまたは複数のバッチ処理された作業項目を含むことを特徴とする請求項8に記載のコンピュータ読み取り可能記憶媒体。
  11. 前記ワークフローコンポーネントは、前記トランザクション内の前記1つまたは複数の割り当てられた作業項目を、前記1つまたは複数の定義された作業項目の機能に応じて区分することをさらに含むことを特徴とする請求項8に記載のコンピュータ読み取り可能記憶媒体。
  12. 前記1つまたは複数のサービスプロバイダコンポーネントは、1つまたは複数のホスト環境の一部であることを特徴とする請求項8に記載のコンピュータ読み取り可能記憶媒体。
  13. 前記ワークフローコンポーネントは、前記1つまたは複数の定義された作業項目を1つまたは複数のサービスプロバイダコンポーネントに実行のために割り当て、前記1つまたは複数のサービスプロバイダコンポーネントは、前記1つまたは複数の定義された作業項目に関してリモートである1つまたは複数のホスト環境の一部であることを特徴とする請求項8に記載のコンピュータ読み取り可能記憶媒体。
  14. 前記1つまたは複数のコミットされた作業項目の実行に失敗した場合に、前記1つまたは複数のサービスプロバイダコンポーネントが前記ワークフローコンポーネントに通知することを特徴とする請求項8に記載のコンピュータ読み取り可能記憶媒体。
  15. 第1のホスト環境によって実行可能な、1つまたは複数の作業項目のワークフローを管理する方法であって、
    前記第1のホスト環境において、1つまたは複数の作業項目を実行することの割当てを受信すること、
    前記1つまたは複数の割り当てられた作業項目をバッチに付加することであって、前記1つまたは複数の割り当てられた作業項目を、後で前記第1のホスト環境によって実行するよう指示すること、
    前記第1のホスト環境において、前記1つまたは複数の割り当てられた作業項目の実行を求める要求を受信すること、および、
    前記第1のホスト環境において、前記1つまたは複数の要求された作業項目を実行すること
    を含むことを特徴とする方法。
  16. 前記割当ては、1つまたは複数の定義された作業項目を含み、
    前記トランザクションは、前記1つまたは複数の定義された作業項目の機能に応じて前記トランザクション内の前記1つまたは複数の作業項目のアトミックトランザクション境界を定義することを含み、
    前記1つまたは複数の作業項目は、第2のホスト環境において実行可能であること
    を特徴とする請求項15に記載の方法。
  17. 前記1つまたは複数の作業項目の前記定義されたアトミックトランザクション境界に従って、前記トランザクション内の前記1つまたは複数のバッチ処理された作業項目の前記状態を保存することをさらに含むことを特徴とする請求項15に記載の方法。
  18. 前記1つまたは複数のバッチ処理された作業項目の前記状態を、コンピュータ読み取り可能記憶媒体に保存することをさらに含み、前記1つまたは複数のバッチ処理された作業項目の前記状態は、完了、実行中、および中止のうちの少なくとも1つを含むことを特徴とする請求項15に記載の方法。
  19. トランザクションに前記バッチを付加することをさらに含むことを特徴とする請求項15に記載の方法。
  20. 前記1つまたは複数のコミットされた作業項目の実行に失敗した場合に、前記第1のホスト環境によってメッセージが送信されることをさらに含むことを特徴とする請求項15に記載の方法。
JP2005332675A 2004-12-22 2005-11-17 ワークフロートランザクションのバッチ処理によるランタイムおよびアプリケーションの状態の同期化 Pending JP2006178935A (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US11/023,769 US7665093B2 (en) 2004-12-22 2004-12-22 Synchronization of runtime and application state via batching of workflow transactions

Publications (2)

Publication Number Publication Date
JP2006178935A true JP2006178935A (ja) 2006-07-06
JP2006178935A5 JP2006178935A5 (ja) 2009-01-08

Family

ID=36000930

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2005332675A Pending JP2006178935A (ja) 2004-12-22 2005-11-17 ワークフロートランザクションのバッチ処理によるランタイムおよびアプリケーションの状態の同期化

Country Status (5)

Country Link
US (1) US7665093B2 (ja)
EP (1) EP1675056A1 (ja)
JP (1) JP2006178935A (ja)
KR (1) KR20060071860A (ja)
CN (1) CN1783132B (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009271839A (ja) * 2008-05-09 2009-11-19 Canon Software Inc 情報処理システム、情報処理方法、プログラム、及び、記録媒体
WO2010018637A1 (ja) * 2008-08-15 2010-02-18 富士通株式会社 業務フロー分散処理システム及び方法

Families Citing this family (106)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9552599B1 (en) * 2004-09-10 2017-01-24 Deem, Inc. Platform for multi-service procurement
US8180658B2 (en) * 2007-01-30 2012-05-15 Microsoft Corporation Exploitation of workflow solution spaces to account for changes to resources
US20080184250A1 (en) * 2007-01-30 2008-07-31 Microsoft Corporation Synchronizing Workflows
US20080307035A1 (en) * 2007-06-05 2008-12-11 Erik John Burckart System and Method for Off-loading Online Meeting Updates Using Forward Proxy
AU2008279001B2 (en) * 2007-07-26 2014-02-06 Ab Initio Technology Llc Transactional graph-based computation with error handling
US8326814B2 (en) 2007-12-05 2012-12-04 Box, Inc. Web-based file management system and service
US8108868B2 (en) * 2007-12-18 2012-01-31 Microsoft Corporation Workflow execution plans through completion condition critical path analysis
JP2009217587A (ja) * 2008-03-11 2009-09-24 Hitachi Ltd バッチ処理装置及び方法
US8161492B2 (en) * 2008-04-15 2012-04-17 Microsoft Corporation Continuation based runtimes in transactions
US20090307651A1 (en) * 2008-06-05 2009-12-10 Shanmugam Senthil Computing Platform for Structured Data Processing
US10169199B2 (en) 2008-06-10 2019-01-01 Microsoft Technology Licensing, Llc Automatic model-specific debugger extensions
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
US8468529B2 (en) * 2009-05-27 2013-06-18 Microsoft Corporation Correlating, logging and tracing messaging events between workflow instances with globally unique identifiers
US8250588B2 (en) * 2009-06-16 2012-08-21 Microsoft Corporation Persisting application state
US8205113B2 (en) * 2009-07-14 2012-06-19 Ab Initio Technology Llc Fault tolerant batch processing
US8281309B2 (en) * 2009-08-31 2012-10-02 Accenture Global Services Limited Optimization system for controlling batch job processing traffic transmitted to a mainframe computer
US8424009B2 (en) * 2009-12-04 2013-04-16 Microsoft Corporation Lock resolution for distributed durable instances
US20110173947A1 (en) * 2010-01-19 2011-07-21 General Electric Company System and method for gas turbine power augmentation
US8417805B2 (en) * 2010-01-26 2013-04-09 Microsoft Corporation Controlling execution of services across servers
US8296780B2 (en) * 2010-03-23 2012-10-23 Microsoft Corporation Reducing persistence commands
US10078674B2 (en) * 2010-06-04 2018-09-18 Mcl Systems Limited Integrated workflow and database transactions
WO2012099617A1 (en) 2011-01-20 2012-07-26 Box.Net, Inc. Real time notification of activities that occur in a web-based collaboration environment
US8538793B2 (en) * 2011-02-17 2013-09-17 Infosys Limited System and method for managing real-time batch workflows
US9015601B2 (en) 2011-06-21 2015-04-21 Box, Inc. Batch uploading of content to a web-based collaboration environment
US9063912B2 (en) 2011-06-22 2015-06-23 Box, Inc. Multimedia content preview rendering in a cloud content management system
WO2013009337A2 (en) 2011-07-08 2013-01-17 Arnold Goldberg Desktop application for access and interaction with workspaces in a cloud-based content management system and synchronization mechanisms thereof
US9978040B2 (en) 2011-07-08 2018-05-22 Box, Inc. Collaboration sessions in a workspace on a cloud-based content management system
US8862975B2 (en) 2011-09-19 2014-10-14 Microsoft Corporation Web-based workflow service visualization and navigation
US9197718B2 (en) 2011-09-23 2015-11-24 Box, Inc. Central management and control of user-contributed content in a web-based collaboration environment and management console thereof
US8515902B2 (en) 2011-10-14 2013-08-20 Box, Inc. Automatic and semi-automatic tagging features of work items in a shared workspace for metadata tracking in a cloud-based content management system with selective or optional user contribution
WO2013062599A1 (en) 2011-10-26 2013-05-02 Box, Inc. Enhanced multimedia content preview rendering in a cloud content management system
US9098474B2 (en) 2011-10-26 2015-08-04 Box, Inc. Preview pre-generation based on heuristics and algorithmic prediction/assessment of predicted user behavior for enhancement of user experience
US8990307B2 (en) 2011-11-16 2015-03-24 Box, Inc. Resource effective incremental updating of a remote client with events which occurred via a cloud-enabled platform
WO2013082320A1 (en) 2011-11-29 2013-06-06 Box, Inc. Mobile platform file and folder selection functionalities for offline access and synchronization
US9019123B2 (en) 2011-12-22 2015-04-28 Box, Inc. Health check services for web-based collaboration environments
US9904435B2 (en) 2012-01-06 2018-02-27 Box, Inc. System and method for actionable event generation for task delegation and management via a discussion forum in a web-based collaboration environment
US11232481B2 (en) 2012-01-30 2022-01-25 Box, Inc. Extended applications of multimedia content previews in the cloud-based content management system
US9965745B2 (en) 2012-02-24 2018-05-08 Box, Inc. System and method for promoting enterprise adoption of a web-based collaboration environment
US9195636B2 (en) 2012-03-07 2015-11-24 Box, Inc. Universal file type preview for mobile devices
US9054919B2 (en) 2012-04-05 2015-06-09 Box, Inc. Device pinning capability for enterprise cloud service and storage accounts
US9575981B2 (en) 2012-04-11 2017-02-21 Box, Inc. Cloud service enabled to handle a set of files depicted to a user as a single file in a native operating system
US9413587B2 (en) 2012-05-02 2016-08-09 Box, Inc. System and method for a third-party application to access content within a cloud-based platform
US9691051B2 (en) 2012-05-21 2017-06-27 Box, Inc. Security enhancement through application access control
US8914900B2 (en) 2012-05-23 2014-12-16 Box, Inc. Methods, architectures and security mechanisms for a third-party application to access content in a cloud-based platform
US9027108B2 (en) 2012-05-23 2015-05-05 Box, Inc. Systems and methods for secure file portability between mobile applications on a mobile device
US9021099B2 (en) 2012-07-03 2015-04-28 Box, Inc. Load balancing secure FTP connections among multiple FTP servers
GB2505072A (en) 2012-07-06 2014-02-19 Box Inc Identifying users and collaborators as search results in a cloud-based system
US9792320B2 (en) 2012-07-06 2017-10-17 Box, Inc. System and method for performing shard migration to support functions of a cloud-based service
US9712510B2 (en) 2012-07-06 2017-07-18 Box, Inc. Systems and methods for securely submitting comments among users via external messaging applications in a cloud-based platform
US9237170B2 (en) 2012-07-19 2016-01-12 Box, Inc. Data loss prevention (DLP) methods and architectures by a cloud service
US8868574B2 (en) 2012-07-30 2014-10-21 Box, Inc. System and method for advanced search and filtering mechanisms for enterprise administrators in a cloud-based environment
US9794256B2 (en) 2012-07-30 2017-10-17 Box, Inc. System and method for advanced control tools for administrators in a cloud-based service
US9369520B2 (en) 2012-08-19 2016-06-14 Box, Inc. Enhancement of upload and/or download performance based on client and/or server feedback information
US8745267B2 (en) 2012-08-19 2014-06-03 Box, Inc. Enhancement of upload and/or download performance based on client and/or server feedback information
US9558202B2 (en) 2012-08-27 2017-01-31 Box, Inc. Server side techniques for reducing database workload in implementing selective subfolder synchronization in a cloud-based environment
US9135462B2 (en) 2012-08-29 2015-09-15 Box, Inc. Upload and download streaming encryption to/from a cloud-based platform
US9195519B2 (en) 2012-09-06 2015-11-24 Box, Inc. Disabling the self-referential appearance of a mobile application in an intent via a background registration
US9117087B2 (en) 2012-09-06 2015-08-25 Box, Inc. System and method for creating a secure channel for inter-application communication based on intents
US9311071B2 (en) 2012-09-06 2016-04-12 Box, Inc. Force upgrade of a mobile application via a server side configuration file
US9292833B2 (en) * 2012-09-14 2016-03-22 Box, Inc. Batching notifications of activities that occur in a web-based collaboration environment
CN102902572B (zh) * 2012-09-17 2015-06-10 北京中电普华信息技术有限公司 一种基于消息分段式的工作流引擎以及集群系统
US10200256B2 (en) 2012-09-17 2019-02-05 Box, Inc. System and method of a manipulative handle in an interactive mobile user interface
US9553758B2 (en) 2012-09-18 2017-01-24 Box, Inc. Sandboxing individual applications to specific user folders in a cloud-based service
US10915492B2 (en) 2012-09-19 2021-02-09 Box, Inc. Cloud-based platform enabled with media content indexed for text-based searches and/or metadata extraction
US9959420B2 (en) 2012-10-02 2018-05-01 Box, Inc. System and method for enhanced security and management mechanisms for enterprise administrators in a cloud-based environment
US9705967B2 (en) 2012-10-04 2017-07-11 Box, Inc. Corporate user discovery and identification of recommended collaborators in a cloud platform
US9495364B2 (en) 2012-10-04 2016-11-15 Box, Inc. Enhanced quick search features, low-barrier commenting/interactive features in a collaboration platform
US9665349B2 (en) 2012-10-05 2017-05-30 Box, Inc. System and method for generating embeddable widgets which enable access to a cloud-based collaboration platform
US9628268B2 (en) 2012-10-17 2017-04-18 Box, Inc. Remote key management in a cloud-based environment
US9756022B2 (en) 2014-08-29 2017-09-05 Box, Inc. Enhanced remote key management for an enterprise in a cloud-based environment
US10235383B2 (en) 2012-12-19 2019-03-19 Box, Inc. Method and apparatus for synchronization of items with read-only permissions in a cloud-based environment
US9396245B2 (en) 2013-01-02 2016-07-19 Box, Inc. Race condition handling in a system which incrementally updates clients with events that occurred in a cloud-based collaboration platform
US9953036B2 (en) 2013-01-09 2018-04-24 Box, Inc. File system monitoring in a system which incrementally updates clients with events that occurred in a cloud-based collaboration platform
EP2755151A3 (en) 2013-01-11 2014-09-24 Box, Inc. Functionalities, features and user interface of a synchronization client to a cloud-based environment
EP2757491A1 (en) 2013-01-17 2014-07-23 Box, Inc. Conflict resolution, retry condition management, and handling of problem files for the synchronization client to a cloud-based platform
US9256460B2 (en) * 2013-03-15 2016-02-09 International Business Machines Corporation Selective checkpointing of links in a data flow based on a set of predefined criteria
US9323619B2 (en) 2013-03-15 2016-04-26 International Business Machines Corporation Deploying parallel data integration applications to distributed computing environments
US9401835B2 (en) 2013-03-15 2016-07-26 International Business Machines Corporation Data integration on retargetable engines in a networked environment
US10725968B2 (en) 2013-05-10 2020-07-28 Box, Inc. Top down delete or unsynchronization on delete of and depiction of item synchronization with a synchronization client to a cloud-based platform
US10846074B2 (en) 2013-05-10 2020-11-24 Box, Inc. Identification and handling of items to be ignored for synchronization with a cloud-based platform by a synchronization client
GB2515192B (en) 2013-06-13 2016-12-14 Box Inc Systems and methods for synchronization event building and/or collapsing by a synchronization component of a cloud-based platform
US9805050B2 (en) 2013-06-21 2017-10-31 Box, Inc. Maintaining and updating file system shadows on a local device by a synchronization client of a cloud-based platform
US10229134B2 (en) 2013-06-25 2019-03-12 Box, Inc. Systems and methods for managing upgrades, migration of user data and improving performance of a cloud-based platform
US10110656B2 (en) 2013-06-25 2018-10-23 Box, Inc. Systems and methods for providing shell communication in a cloud-based platform
US9535924B2 (en) 2013-07-30 2017-01-03 Box, Inc. Scalability improvement in a system which incrementally updates clients with events that occurred in a cloud-based collaboration platform
US9477511B2 (en) 2013-08-14 2016-10-25 International Business Machines Corporation Task-based modeling for parallel data integration
US10509527B2 (en) 2013-09-13 2019-12-17 Box, Inc. Systems and methods for configuring event-based automation in cloud-based collaboration platforms
US9213684B2 (en) 2013-09-13 2015-12-15 Box, Inc. System and method for rendering document in web browser or mobile device regardless of third-party plug-in software
US9704137B2 (en) 2013-09-13 2017-07-11 Box, Inc. Simultaneous editing/accessing of content by collaborator invitation through a web-based or mobile application to a cloud-based collaboration platform
GB2518298A (en) 2013-09-13 2015-03-18 Box Inc High-availability architecture for a cloud-based concurrent-access collaboration platform
US9535909B2 (en) 2013-09-13 2017-01-03 Box, Inc. Configurable event-based automation architecture for cloud-based collaboration platforms
US8892679B1 (en) 2013-09-13 2014-11-18 Box, Inc. Mobile device, methods and user interfaces thereof in a mobile device platform featuring multifunctional access and engagement in a collaborative environment provided by a cloud-based platform
US10866931B2 (en) 2013-10-22 2020-12-15 Box, Inc. Desktop application for accessing a cloud collaboration platform
US10180821B2 (en) 2013-12-05 2019-01-15 Ab Initio Technology Llc Managing interfaces for sub-graphs
CN105094758A (zh) * 2014-04-29 2015-11-25 国际商业机器公司 用于避免事务回滚的方法和装置
US10530854B2 (en) 2014-05-30 2020-01-07 Box, Inc. Synchronization of permissioned content in cloud-based environments
US9602514B2 (en) 2014-06-16 2017-03-21 Box, Inc. Enterprise mobility management and verification of a managed application by a content provider
US9894119B2 (en) 2014-08-29 2018-02-13 Box, Inc. Configurable metadata-based automation and content classification architecture for cloud-based collaboration platforms
US10574442B2 (en) 2014-08-29 2020-02-25 Box, Inc. Enhanced remote key management for an enterprise in a cloud-based environment
US10038731B2 (en) 2014-08-29 2018-07-31 Box, Inc. Managing flow-based interactions with cloud-based shared content
US9311134B1 (en) 2014-09-29 2016-04-12 International Business Machines Corporation Automated creation of executable workflow
US11216764B2 (en) * 2017-07-11 2022-01-04 Jpmorgan Chase Bank, N.A. Systems and methods for distributed business process management
US11458621B2 (en) * 2017-09-27 2022-10-04 Kindred Systems Inc. Systems, devices, articles, and methods for parallelization of robots in synchronous communication framework
CN110264076B (zh) * 2019-06-19 2020-11-06 深圳市艾迪思特信息技术有限公司 一种物联网事务管理系统
CN111400352B (zh) * 2020-03-18 2020-11-17 北京三维天地科技股份有限公司 一种可进行数据批量处理的工作流引擎

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH08101817A (ja) * 1994-09-30 1996-04-16 Fuji Xerox Co Ltd ワークフロー支援システム
JP2000348111A (ja) * 1999-06-01 2000-12-15 Hitachi Ltd ワークフロー管理方法及びその実施装置並びにその処理プログラムを記録した記録媒体

Family Cites Families (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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
US5774661A (en) 1995-04-18 1998-06-30 Network Imaging Corporation Rule engine interface for a visual workflow builder
US6353844B1 (en) * 1996-12-23 2002-03-05 Silicon Graphics, Inc. Guaranteeing completion times for batch jobs without static partitioning
US5960404A (en) * 1997-08-28 1999-09-28 International Business Machines Corp. Mechanism for heterogeneous, peer-to-peer, and disconnected workflow operation
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
US6430538B1 (en) 1998-04-30 2002-08-06 Enterworks Workflow management system, method and medium with personal subflows
JP2003528358A (ja) 1998-08-24 2003-09-24 富士通株式会社 ワークフローシステムおよび方法
AU3875900A (en) 1999-03-11 2000-09-28 Paysys International, Inc. Methods and systems for developing applications and for interfacing with users
US6609128B1 (en) * 1999-07-30 2003-08-19 Accenture Llp Codes table framework design in an E-commerce architecture
US7289964B1 (en) * 1999-08-31 2007-10-30 Accenture Llp System and method for transaction services patterns in a netcentric environment
US6625602B1 (en) * 2000-04-28 2003-09-23 Microsoft Corporation Method and system for hierarchical transactions and compensation
AU2002211405A1 (en) 2000-10-02 2002-04-15 International Projects Consultancy Services, Inc. Object-based workflow system and method
US7917888B2 (en) 2001-01-22 2011-03-29 Symbol Technologies, Inc. System and method for building multi-modal and multi-channel applications
US7461119B2 (en) * 2001-09-29 2008-12-02 Siebel Systems, Inc. Method, apparatus, and system for managing status of requests in a client server environment
US6907451B1 (en) * 2001-09-29 2005-06-14 Siebel Systems, Inc. Method, apparatus, and system for immediate posting of changes in a client server environment
US7089287B2 (en) 2002-01-16 2006-08-08 Xerox Corporation Message-based system having embedded information management capabilities
US7127716B2 (en) * 2002-02-13 2006-10-24 Hewlett-Packard Development Company, L.P. Method of load balancing a distributed workflow management system
US20040002950A1 (en) 2002-04-15 2004-01-01 Brennan Sean F. Methods and apparatus for process, factory-floor, environmental, computer aided manufacturing-based or other control system using hierarchically enumerated data set
US20040078105A1 (en) 2002-09-03 2004-04-22 Charles Moon System and method for workflow process management
US20040148213A1 (en) 2002-11-25 2004-07-29 Microsoft Corporation Automated workflow constraints
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
US7451432B2 (en) * 2004-10-01 2008-11-11 Microsoft Corporation Transformation of componentized and extensible workflow to a declarative format

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH08101817A (ja) * 1994-09-30 1996-04-16 Fuji Xerox Co Ltd ワークフロー支援システム
JP2000348111A (ja) * 1999-06-01 2000-12-15 Hitachi Ltd ワークフロー管理方法及びその実施装置並びにその処理プログラムを記録した記録媒体

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009271839A (ja) * 2008-05-09 2009-11-19 Canon Software Inc 情報処理システム、情報処理方法、プログラム、及び、記録媒体
WO2010018637A1 (ja) * 2008-08-15 2010-02-18 富士通株式会社 業務フロー分散処理システム及び方法
JP5024453B2 (ja) * 2008-08-15 2012-09-12 富士通株式会社 業務フロー分散処理システム及び方法
US8583754B2 (en) 2008-08-15 2013-11-12 Fujitsu Limited Business flow distributed processing system and method

Also Published As

Publication number Publication date
CN1783132A (zh) 2006-06-07
US20060136279A1 (en) 2006-06-22
CN1783132B (zh) 2014-11-19
US7665093B2 (en) 2010-02-16
KR20060071860A (ko) 2006-06-27
EP1675056A1 (en) 2006-06-28

Similar Documents

Publication Publication Date Title
JP2006178935A (ja) ワークフロートランザクションのバッチ処理によるランタイムおよびアプリケーションの状態の同期化
US12189510B2 (en) Long running workflows for robotic process automation
US20070074121A1 (en) Interfaces for a productivity suite application and a hosted user interface
US8024733B2 (en) Component model for batch computing in a distributed object environment
US9898517B2 (en) Declarative synchronization of shared data
US20070239728A1 (en) System and method for transactional session management
US9584949B2 (en) Cloud based master data management architecture
WO2007077012A2 (en) Architectural design for physical inventory application software
JP2016541056A (ja) ビジネスフローをスケジュールするためのコンピュータ装置、方法及び装置
JP2006260588A (ja) 分散コンポーネントアプリケーションでの待機メソッド呼び出し方法
Fay-Wolfe et al. Real-time CORBA
US11681683B2 (en) Transaction compensation for single phase resources
AU2011261618A1 (en) Integrated workflow and database transactions
US7698280B2 (en) Active cache offline sharing of project files
WO2019037617A1 (zh) 数据事务处理方法、装置以及电子设备
US7644197B1 (en) Queue management by multiple processors
US20050022164A1 (en) Systems and methods utilizing a workflow definition language
US20070209038A1 (en) Conflict avoidance and resolution in a distributed computing system
US8326801B2 (en) Increasing database availability during fault recovery
US8788313B2 (en) Decentralised audit system in collaborative workflow environment
Miller et al. The guardian model and primitives for exception handling in distributed systems
CN100568245C (zh) 工作流数据的持久化处理方法、装置及工作流系统
Pandey et al. LIFT-A new linear two-phase commit protocol
Shrivastava et al. Real time transaction management in replicated DRTDBS
US20050120352A1 (en) Meta directory server providing users the ability to customize work-flows

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20081114

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20081114

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110610

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110908

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20110927