JP2006107480A - フローベースおよび制約ベースのワークフローをオーサリングし、実行するための統一モデル - Google Patents

フローベースおよび制約ベースのワークフローをオーサリングし、実行するための統一モデル Download PDF

Info

Publication number
JP2006107480A
JP2006107480A JP2005267391A JP2005267391A JP2006107480A JP 2006107480 A JP2006107480 A JP 2006107480A JP 2005267391 A JP2005267391 A JP 2005267391A JP 2005267391 A JP2005267391 A JP 2005267391A JP 2006107480 A JP2006107480 A JP 2006107480A
Authority
JP
Japan
Prior art keywords
activities
activity
workflow
computer
user
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.)
Granted
Application number
JP2005267391A
Other languages
English (en)
Other versions
JP5173128B2 (ja
Inventor
Abhay Vinayak Parasnis
ビナヤク パラスニス アブハイ
Dharma K Shukla
ケー.シュクラ ダーマ
David G Green
ジー.グリーン デビッド
Bimal K Mehta
ケー.メヘタ ビマル
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 JP2006107480A publication Critical patent/JP2006107480A/ja
Application granted granted Critical
Publication of JP5173128B2 publication Critical patent/JP5173128B2/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
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q10/00Administration; Management
    • G06Q10/06Resources, workflows, human or project management; Enterprise or organisation planning; Enterprise or organisation modelling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q10/00Administration; Management
    • G06Q10/06Resources, workflows, human or project management; Enterprise or organisation planning; Enterprise or organisation modelling
    • G06Q10/063Operations research, analysis or management
    • G06Q10/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)
  • Economics (AREA)
  • Entrepreneurship & Innovation (AREA)
  • Strategic Management (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Tourism & Hospitality (AREA)
  • Development Economics (AREA)
  • Quality & Reliability (AREA)
  • Marketing (AREA)
  • Game Theory and Decision Science (AREA)
  • General Business, Economics & Management (AREA)
  • Educational Administration (AREA)
  • Operations Research (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)
  • Stored Programmes (AREA)

Abstract

【課題】 フローベースおよび制約ベースの領域を持つワークフローを設計し実行する機能を提供すること。
【解決手段】 ユーザは、制約ベースの領域の一部となるように1つまたは複数のアクティビティを選択する。それぞれの制約ベースの領域は、それに関連付けられた制約を持つ。ワークフローは、フローベースの領域および制約ベースの領域を実行することにより実行される。フローベースの領域は、順次実行される。制約は、評価され、制約ベースの領域は、評価された制約に応答して実行される。
【選択図】 図1

Description

本発明は、ワークフローモデリングの分野に関し、より詳細には、コンポーネント化された拡張可能ワークフローモデル(componentized and extensible workflow model)に関する。
既存のシステムでは、ビジネス問題をモデル化することによりビジネス問題を高水準のワークフローにマッピングすることを試みる。しかし、現実世界のワークフローは、(a)実行およびモデリングの複雑さ、(b)設計時のフローの構造に関する知識、(c)静的に定義された、またはアドホック/動的な特性、(d)ライフサイクルにおけるさまざまな時点でのフローのオーサリングおよび編集の容易さ、(e)ビジネスロジックとコアワークフロープロセスとの弱いまたは強い関連などのさまざまな次元において異なる。既存のモデルでは、これらすべての要因に対応することはできない。
さらに、ほとんどの既存のワークフローモデルは、言語ベースのアプローチ(例えば、BPEL4WS、XLANG/S、およびWSFL)またはアプリケーションベースのアプローチに基づいている。言語ベースのアプローチは、定義済み言語構文の閉じた集合を持つ高水準のワークフロー言語であり、これにより、ユーザ/プログラマに対するワークフロープロセスのモデル化が容易になる。ワークフロー言語は、言語構文の閉じた集合に対するすべての意味情報を備え、これによりユーザはワークフローモデルを構築できる。しかし、言語は、開発者側で拡張することはできず、ワークフローモデルを構成するプリミティブの閉じた集合となっている。言語は、ワークフローシステムベンダが出荷する言語コンパイラに結び付けられている。ワークフローシステム製品ベンダのみが、将来の製品バージョンにおいて新しい言語構文の集合を加えて言語を拡張することによりモデルを拡張することができる。このため、多くの場合、言語に関連付けられたコンパイラのアップグレードが必要となる。
アプリケーションベースのアプローチは、アプリケーション内に領域特有の問題を解決するためのワークフロー機能を備えるアプリケーションである。これらのアプリケーションは、本当に拡張可能であるとはいえず、またプログラム可能なモデルも持たない。
既存のアプローチでは、複雑さ、先見、動的ワークフロー、オーサリングの容易さ、およびビジネスロジックとコアワークフローとの関連度の強さの課題が適切に扱えない。さまざまなクラスのワークフローをモデル化するビジュアルワークフローデザイナ(visual workflow designers)を構築するために利用できる、拡張可能、カスタマイズ可能、および再ホスト可能な(re-hostable)ワークフローデザイナフレームワークはない。既存のシステムでは、ユーザがグラフィックスを利用してワークフロープロセスの設計を行い、開発者が選択したプログラミング言語によるビジネスロジックを関連付けることができるアプリケーション短期開発(RAD)スタイルのワークフロー設計の経験を欠いている。さらに、インク対応ワークフローデザイナ(ink-enabled workflow designer)もない。
さらに、既存システムは、ワークフローの実行のための継ぎ目のないアドホックな、または動的な編集機能を備えていない。ワークフロープロセスは、本質的に動的であり移動性を有し、その形態は設計時には全く予見できない。ワークフロープロセスは、構造化様式で始まり、最終的には、その実行存続期間の過程で発展し変化する。ワークフロービルダが設計時にさまざまな種類のワークフローモデルをオーサリングするだけでなく、継ぎ目のない方式でアドホックな、または動的な変更を実行中のワークフローに加えられるようにするワークフローオーサリングフレームワーク(workflow authoring framework)が必要である。ワークフロープロセスが展開された後、実行されていても、ビジネス要件に変更があれば、多くの場合、現在実行中のワークフロープロセスを変更または編集せざるを得ない。ワークフロープロセスの実行時オーサリングを行えるシステムが必要である。
さらに、ワークフロープロセスでは、ワークフロープロセスの複数のステップにまたがる分野横断的に直交する、かつ入り組んだ諸問題を取り扱う。例えば、ワークフロープロセスの一部が長い実行トランザクションに参加するように設計されているが、同じプロセスの他の部分は同時実行用に設計されている。同じワークフロープロセスのさらに他の部分では、追跡を必要とするが、他の部分ではビジネスまたはアプリケーションレベルの例外を扱う。特定の動作をワークフロープロセスの1つまたは複数の部分に適用する必要がある。
いくつかのワークフローモデリングアプローチは、すべての例外および人間介入を含むビジネスプロセス全体の完全なフローベースの記述を必要とするので実用的でない。これらのアプローチのいくつかは、例外が発生したときの追加機能を用意しているが、他のアプローチでは、ビジネスプロセスをモデル化するフローベースのアプローチの代わりに制約ベースのアプローチのみを採用する。既存システムでは、フローベースまたは制約ベースのアプローチのいずれかを実装する。このようなシステムは、柔軟性が低すぎて、ビジネスの数多くの一般的状況をモデル化できない。
したがって、これらの欠点およびその他の欠点の1つまたは複数を解決する、コンポーネント化された拡張可能なワークフローモデルが望まれる。
本発明のいくつかの実施形態は、コンポーネント化されたワークフローモデルを構築する拡張可能なフレームワークを実現する。特に、ワークフロープロセスの各ステップは、ワークフローステップの設計時の態様、コンパイル時の態様、および実行時の態様を記述する関連コンポーネントモデルを持つ。さらに、開発者は、これらのコンポーネントをオーサリングすることによりコアワークフローモデルを拡張することができる。本発明は、高度に形式的なマシン同士のプロセス、制約ベースのアドホックなヒューマンワークフロー、およびフローベースのアプローチおよび制約ベースのアプローチの混合を持つワークフローを含む、さまざまな種類のワークフローの実行を調整するのに十分柔軟であり強力なワークフローエンジンを含む。ワークフローエンジンでは、実行中ワークフローに対するアクティベーション、実行、クエリ、および制御の機能を使用できる。例えば、本発明では、実行ワークフローにアドホックな動的変更を加えることができる。ワークフローエンジンは、サーバおよびクライアント環境の両方を含むさまざまなホスト環境において再ホスト可能または埋め込み可能である。それぞれの特定のホスト環境では、ワークフローエンジンをサービスプロバイダ群に結合する。サービスプロバイダの集約機能により、特定のホスト環境で実行できるワークフローの種類が決定される。
本発明の他の実施形態では、ワークフローモデルをシリアライゼーションするために拡張オーケストレーションマークアップ言語(extensible orchestration markup language)(XOML)などの宣言形式を備える。宣言形式を使用すると、ユーザはコンポーネントの集合を書くことによりワークフローモデルを拡張することができる。ワークフロープロセスのさまざまなステップに対応する意味論は、コンパイル時に与えられたコンポーネントの意味論の妥当性を確認し、それを強制するアクティビティバリデータコンポーネント(activity validator component)内にカプセル化される。本発明の宣言形式の実施態様では、さらに、データの宣言およびデータとワークフローモデルのさまざまな要素との関連付けが可能である。宣言形式では、ワークフローを通じてデータを変換する操作をサポートする。例えば、この形式は、ワークフローモデル内のデータベースまたはファイル、コードスニペット、およびビジネスルールなどの外部データソースを宣言的に表す。
本発明の一実施態様では、さまざまなクラスのワークフローをモデル化するグラフィカル/ビジュアルワークフローデザイナを構築する拡張可能、カスタマイズ可能、および再ホスト可能なワークフローデザイナフレームワークを提供する。本発明の他の実施態様では、ユーザが任意のプログラミング言語によりグラフィックスを利用してワークフロープロセスの設計を行い、ビジネスロジックの関連付けを行うことができるようにするアプリケーション短期開発スタイルのワークフロー設計のエクスペリエンスをサポートする。本発明の実施態様は、さらに、ペンおよびタブレット技術を使用してインクもサポートする。本発明は、ユーザにより描画されたワークフローが内部表現に変換されるフリーフォームドローイングサーフェス(free form drawing surface)を備える。本発明は、既存のドローイングサーフェス上のインク編集(例えば、追加/削除アクティビティ)、および既存のワークフローのインク注釈(例えば、デザインサーフェス(design surface)に手書きされたコメント、提案、または注意喚起)を介してワークフローの作成および修正をサポートする。
本発明のさらに他の実施態様では、宣言的方法により分野横断的な動作を捕捉し、その動作をワークフローモデルの選択された部分に適用するためのコンポーネントを備える。本発明の他の実施態様は、それに関連付けられている動作の背景状況においてワークフローモデルの選択された部分を実行する。本発明の実施態様は、フレームワーク、再利用可能コンポーネント、およびワークフロープロセスモデルの複数のステップにまたがる分野横断的に直交する、かつ入り組んだ諸問題を扱うための言語を提供する。
本発明の一態様によれば、コンピュータにより実装されるシステムは、ワークフローモデルに相当する。コンピュータにより実装されるシステムは、構造化された複数のアクティビティを持つワークフローを含む。ワークフローは、さらに、制約がそれぞれに関連付けられている構造化されていない複数のアクティビティを含む。このシステムは、さらに、構造化された複数のアクティビティのそれぞれを実行し、構造化されていない複数のアクティビティのそれぞれの制約を評価し、関連付けられている制約を評価した結果に応じて構造化されていない複数のアクティビティのそれぞれを実行することにより、ワークフローを実行するランタイムエンジンも備える。
本発明のさらに他の態様によれば、方法はワークフローをモデル化する。ワークフローは、ビジネスプロセスに相当する。この方法は、複数のアクティビティをユーザに提示することを含む。この方法は、さらに、ユーザから提示されたアクティビティの選択およびそれに関連付けられたフロー指定を受け取ることも含む。この方法は、さらに、受け取ったフロー指定に従ってアクティビティの受け取った選択をグループ化することも含む。この方法は、さらに、ユーザから提示されたアクティビティの他の選択およびそれに関連付けられた制約を受け取ることも含む。この方法は、さらに、ワークフローを作成するために提示されたアクティビティの受け取った他の選択とアクティビティのグループ化された選択とをマージすることも含む。
本発明のさらに他の態様によれば、1つまたは複数のコンピュータ読み取り可能媒体は、フローベースの領域および制約ベースの領域を持つワークフローをモデル化するためのコンピュータ実行可能コンポーネントを格納する。これらのコンポーネントは、複数のアクティビティをユーザに提示するための表示コンポーネントを含む。これらのコンポーネントは、さらに、ユーザから提示されたアクティビティの選択およびそれに関連付けられたフロー指定を受け取るためのインターフェイスコンポーネントも含む。インターフェイスコンポーネントは、さらに、ユーザから提示されたアクティビティの他の選択およびそれぞれ関連付けられた制約も受け取る。コンポーネントは、さらに、受け取ったフロー指定に従ってアクティビティの受け取った選択をグループ化するデザイナコンポーネントも含む。デザイナコンポーネントは、さらに、ワークフローを作成するために提示されたアクティビティの受け取った他の選択とアクティビティのグループ化された選択とをマージする。
それとは別に、本発明は、他のさまざまな方法および装置を含むことができる。
他の特徴は、一部は明白であり、また一部は以下で指摘される。
本発明のいくつかの実施形態では、ビジネスプロセスなどのプロセスを表すワークフローをモデル化する。ビジネスプロセスとは、予測可能で再現可能な成果が得られる従属する、順序付けられたタスク、アクティビティなどのことである。組織の運営手順、制度に関する実務知識、および情報資源を含めて、ビジネスプロセスは、効率よく、時機を逃すことなく定義済みのビジネス目的を達成するように設計される。効率的な環境では、プロセスの機能コンポーネントは、絶え間なく変化する企業要件に対処するために、容易に識別し、適合し、展開することができる。ワークフローは、ビジネスプロセス内のタスクとやり取りするエンドユーザ体験である。タスクは、アクティビティ、コンポーネントなどとしてモデル化され、それぞれ人またはマシンにより実行される一単位の作業である。一実施形態では、複数のアクティビティが一人のユーザに提示される。ユーザは、ワークフローを作成する複数のアクティビティを選択して編成する。作成されたワークフローは、実行され、ビジネスプロセスをモデル化する。図1を参照すると、ワークフロー100の実施例は、タスクおよび制御フロー複合アクティビティを含んでいる。
一実施例では、オーケストレーションエンジンワークフローモデルは、さまざまなクラスのワークフローのモデリング、オーサリング、および実行をサポートする。実施例は、整然とした順序で、または非同期イベントの集合として実行される構造化されたステップの集合に関して与えられた問題をモデル化することを含む。オーケストレーションエンジンは、スケジュールの実行を調整する。スケジュールは、ツリー構造で階層的に配列されたアクティビティの整理された集合である。実行アクティビティの実行コンテキストおよび実行アクティビティから見える共有データは、スコープにより規定される。それぞれのアクティビティは、ワークフロープロセス内のステップに対するメタデータをカプセル化するコンポーネントを表す。アクティビティは、ワークフローモデルでの実行の基本単位であり、関連付けられたプロパティ、ハンドラ、制約、およびイベントを持つ。それぞれのアクティビティは、任意のプログラミング言語のユーザコードにより構成することができる。例えば、ユーザコードは、共通言語ランタイム(CLR)言語で書かれたビジネスもしくはアプリケーションロジックまたはルールを表すことができる。それぞれのアクティビティは、ユーザコードでの実行へのインターセプト前フックおよびインターセプト後フック(pre-interception hooks and post-interception hooks)をサポートする。それぞれのアクティビティは、関連付けられたランタイム実行意味論および動作(例えば、状態管理、トランザクション、イベント処理、および例外処理)を持つ。アクティビティは、他のアクティビティと状態を共有できる。アクティビティは、プリミティブなアクティビティであるか、または複合アクティビティにグループ化することができる。プリミティブつまり基本アクティビティは、下位構造(例えば、子アクティビティ)を持たず、したがって、ツリー構造内の葉ノードである。複合アクティビティは、下位構造を含む(例えば、これは、1つまたは複数の子アクティビティの親である)。
一実施形態では、アクティビティは、単純アクティビティ、コンテナアクティビティ、およびルートアクティビティの3種類がある。この実施形態では、モデルには1つのルートアクティビティがあり、ルートアクティビティの内側に単純アクティビティまたはコンテナアクティビティは全くないか、またはいくらかある。コンテナアクティビティは、単純またはコンテナアクティビティを含むことができる。ワークフロープロセス全体は、高位のワークフロープロセスを構築するアクティビティとして使用することができる。さらに、アクティビティは、中断可能であるか、または非中断可能とすることができる。非中断可能複合アクティビティは、中断可能アクティビティを含まない。非中断可能アクティビティには、アクティビティにブロックさせるサービスはない。
オーケストレーションエンジンは、アクティビティの集まりの例を示している。図2を参照すると、アクティビティ継承ツリーにアクティビティの実施例が示されている。図2に一覧として示されているアクティビティの実施例は、付録Aで詳しく説明する。さらに、ユーザは、ワークフローモデルを拡張するために1つまたは複数のアクティビティを書くことができる。例えば、ユーザは、特定のビジネス問題、領域、ワークフロー標準(例えば、ビジネスプロセス実行言語)、またはターゲットプラットフォームに対するアクティビティを書くことができる。オーケストレーションエンジンは、例えば、コードを分析するサービス、タイプ解決およびタイプシステム、シリアライゼーションするサービス、およびレンダリングを含むアクティビティを書くためのさまざまなサービスの集合をユーザに提供することができる。
一実施形態では、それぞれのアクティビティは、メタデータ、インスタンスデータ、および実行ロジックの少なくとも3つの部分を持つ。アクティビティのメタデータは、構成することができるデータプロパティを定義する。例えば、いくつかのアクティビティは、アクティビティ抽象基本クラスで定義されているメタデータの共通集合を共有することができる。それぞれのアクティビティは、このクラスを拡張することによりそのニーズに応じて独自の追加メタデータプロパティを宣言する。
メタデータプロパティの値は、アクティビティが構成されたスケジュールのいくつかのインスタンスの範囲において、そのアクティビティのすべてのインスタンスにより共有される。例えば、ユーザがスケジュールAを作成し、送信アクティビティをそれに追加した場合、送信アクティビティはそのメタデータの一部として識別情報(例えば、「001」)を与えられる。スケジュールに追加される第2の送信アクティビティは、その独自の一意的な識別情報(例えば、「002」)を受け取ることになる。スケジュールAの複数のインスタンスが作成され、実行されると、送信「001」のすべてのインスタンスはメタデータ値を共有する。対照的に、アクティビティのインスタンスデータは、実行スケジュールインスタンス内のアクティビティのインスタンスに特有のデータの集合を定義する。例えば、遅延アクティビティは、遅延アクティビティのタイムアウト値を表す日時値であるインスタンスデータに関する読み取り専用プロパティを与えることができる。この値は、遅延アクティビティが実行を開始した後利用可能になり、遅延アクティビティの1つ1つのインスタンスについて十中八九異なる。参照を「インスタンス」で修飾せずに、スケジュールのインスタンス、特にアクティビティおよびタスクのインスタンスを参照するのがふつうである。
複合アクティビティは、その子アクティビティの集合を他の要素として持つ。子アクティビティは、一実施形態ではメタデータと考えられる。オーケストレーションエンジンモデルでは、スケジュールのインスタンス内で実行時にこのメタデータを操作できることを明示している。新しい子アクティビティを実行スケジュールインスタンスの一部である複合アクティビティに追加し、そのスケジュールインスタンスに対するメタデータ(アクティビティツリー)のみが影響を受けるようにすることが可能である。
次に図3を参照すると、それぞれのアクティビティは、そのアクティビティに対するコンポーネントモデルを形成する関連付けられたコンポーネントの集合を持つ。関連付けられたコンポーネントの集合は、アクティビティエグゼキュータ(activity executor)、アクティビティデザイナ、アクティビティシリアライザ(activity serializer)、アクティビティバリデータ(例えば、意味チェッカー(semantic checker))、およびアクティビティコードジェネレータを含む。アクティビティエグゼキュータは、アクティビティに対する実行意味論を実装するステートレスコンポーネントである。アクティビティエグゼキュータは、アクティビティを実装するためのアクティビティのメタデータを操作する。コアスケジューラは、アクティビティエグゼキュータのサービスプロバイダとして機能し、アクティビティエグゼキュータにサービスを提供する。
アクティビティデザイナは、アクティビティ設計時のビジュアル表現を視覚的に表示する。アクティビティデザイナは、デザイナ階層内の1つのノードであり、テーマまたはスキンを作成して設定できる。アクティビティデザイナは、設計環境(例えば、アプリケーションプログラム)でホスティングされ、サービスを介してホスト設計環境とやり取りする。アクティビティバリデータでは、コンパイル時だけでなく実行時にもアクティビティ意味論を課す。アクティビティバリデータは、ワークフローモデルのコンテキストに作用し、環境が提供するサービス(例えば、コンパイラ、デザイナ、またはランタイム)を使用する。妥当性検証は、ワークフローのライフサイクルの各時点で実行される。構造準拠検査は、ワークフローのシリアライゼーション表現を作成するときに、コンパイルするときに、およびユーザの要求に対する応答として実行される。意味検査は、コンパイル時に実行するよりも実行時の方が強く、このため実行インスタンスのアクティビティツリー内のアクティビティの追加または置換などの実行時オペレーションの安全性を保証することができる。本発明では、例えば、定義済みインターフェイス要件への適合または準拠に関してアクティビティのそれぞれに関連付けられた意味論を評価する。
アクティビティシリアライザは、アクティビティのメタデータをシリアライゼーションするコンポーネントである。アクティビティシリアライザは、さまざまなモデル/フォーマットシリアライザから呼び出される。ワークフローモデル全体が、拡張可能スキーマに基づいて宣言的マークアップ言語内にシリアライゼーションされ、さらに、望むとおりに他のワークフロー言語に変換することができる。
一実施形態では、アクティビティのコンポーネントモデルは、コンピュータ読み取り可能媒体上にデータ構造体として格納される。データ構造体において、アクティビティデザイナは、アクティビティを視覚的に表現するためデータ(例えば、アイコン)を格納する画像フィールドにより表される。さらに、1つまたは複数の作者時刻フィールドでは、アクティビティに関連付けられているプロパティ、メソッド、およびイベントを定義するメタデータを格納する。アクティビティシリアライザは、作者時刻フィールドに格納されているメタデータをアクティビティの宣言的表現に変換するためのデータを格納するシリアライザフィールドにより表される。アクティビティジェネレータは、作者時刻フィールドに格納されているメタデータに関連付けられているソフトウェアコードを格納するビジネスロジックフィールドにより表される。アクティビティエグゼキュータは、ビジネスロジックフィールドに格納されているソフトウェアコードを実行するためのデータを格納するエグゼキュータフィールドにより表される。
(スコープとスケジュール)
実行アクティビティの実行コンテキストおよび実行アクティビティから見える共有データは、スコープにより規定される。スコープとは、コアアクティビティのうちの1つである。スコープは、変数および長時間実行しているサービスの状態をトランザクション意味論、エラー処理意味論、補正、イベントハンドラ、およびデータ状態管理とともにひとまとめにするための統一言語構文である。スコープは、関連付けられた例外およびイベントハンドラを持つことができる。一実施形態では、スコープは、トランザクション、アトミック、長時間実行、または同期化のスコープとすることができる。ユーザ変数に対するread−writeまたはwrite−write アクセスが衝突する場合にユーザのために同時実行制御が用意される。スコープは、さらに、トランザクション境界、例外処理境界、および補正境界でもある。スコープはスケジュール内でネストすることができるので、さらに、名前が衝突することなく異なるスコープ(スコープがネストしているとしても)内で同じ名前により変数、メッセージ、チャネル、および相関関係集合を宣言することが可能である。
スケジュール内にネストされているスコープは、そのスケジュールのコンテキスト内でのみ実行可能である。スケジュールは、アプリケーション(例えば、スタンドアロンの実行可能エンティティ)として、またはライブラリ(例えば、他のスケジュールから呼び出すため)としてコンパイルすることができる。ライブラリとしてコンパイルされたスケジュールはすべて、実際に、他のスケジュール内から呼び出すことができる新しいアクティビティ型を構成する。スケジュールのメタデータは、パラメータの宣言を含む。
スケジュールが作成された後、作成されたスケジュールのインスタンスを実行できる。スケジュールインスタンスをアクティブにし、制御するプロセスは、オーケストレーションエンジンが埋め込まれているホスト環境に応じて異なる。オーケストレーションエンジンは、スケジュールをテストするために使用できる余計な機能のない「単純なホスト」を提供する。さらに、オーケストレーションエンジンは、サービス環境(つまり、ホスト)とやり取りするため、エンジンおよび外部アプリケーションにより同様に使用される「サービスプロバイダ」モデル(例えば、アプリケーションプログラミングインターフェイス)の標準化を推進するアクティベーションサービスを提供する。アクティベーションサービスは、特定のスケジュール型のスケジュールインスタンスを作成し、その際に、任意選択で、パラメータを受け渡す。スケジュールインスタンスは、本質的に、実行スケジュールインスタンスのプロキシであり、インスタンス、スケジュールのメタデータ(アクティビティツリー)への参照、およびインスタンスのサスペンド、レジューム、および終了を実行するメソッドを一意に識別する識別子を含む。アクティベーションサービスは、さらに、与えられたスケジュールインスタンス識別子に基づいてスケジュールインスタンスを見つける操作もサポートする。
(コードビサイド)
スコープアクティビティは、スコープアクティビティのビジネスロジックを含む関連するコードビサイドクラスを持つことができる。スケジュールはそれ自体スコープであるため、スケジュールはコードビサイドクラスも持つことができる。スケジュール内にネストされているスコープも、それ独自のコードビサイドクラスを持つことができる。スコープ内でネストされているアクティビティは、共有データ状態およびビジネスロジックのコンテナとして働くスコープのコードビサイドクラスを共有する。例えば、コードアクティビティのメタデータは、コードビサイド内に特定のシグネチャを持つメソッドへの参照を含む。他の実施例では、送信アクティビティのメタデータは、特定のシグネチャのコードビサイドメソッドへのオプションの参照に加えてメッセージ宣言およびチャネル宣言への必須参照を含む。
コードビサイドの使用例としては、変数、メッセージ、チャネル、および相関関係集合の宣言、in/out/refパラメータの宣言、追加カスタムプロパティの宣言、送信するメッセージの準備、受信されたメッセージの処理、論理値を返すコードで表現されたルールの実装、ローカルで定義されている変数の操作、アクティビティメタデータおよびインスタンスデータの読み取り、アクティビティインスタンスデータの書き込み(例えば、実行されようとしているアクティビティに関するプロパティの設定)、イベントの発生、例外のスロー、横断的なネストされているスコープおよびスケジュール呼び出し境界を含む実行スケジュールインスタンスのアクティビティツリー内のアクティビティの階層の列挙およびナビゲート、実行スケジュールインスタンス内で複合アクティビティへの新規アクティビティの追加、実行スケジュールインスタンス内のアクティビティに関連付けられている宣言的ルールの変更、ならびに他の実行スケジュールインスタンスへの参照の取得および他の実行スケジュールインスタンスの操作が挙げられる。
図4を参照すると、ブロック図はコンポーネントモデルのライフサイクルの例を示す。ユーザは、1つまたは複数のコンピュータ読み取り可能媒体に格納されているコンピュータ実行可能コンポーネントとやり取りをし、フローベースの領域および制約ベースの領域を持つワークフローをモデル化する。コンピュータ実行可能コンポーネントは、表示コンポーネント402、インターフェイスコンポーネント404、デザイナコンポーネント406、およびランタイムコンポーネント408を含む。表示コンポーネント402は、複数のアクティビティをユーザに提示する。インターフェイスコンポーネント404は、ユーザから提示されたアクティビティの選択およびそれに関連付けられたフロー指定を受け取る。デザイナコンポーネント406は、受け取ったフロー指定に従ってアクティビティの受け取った選択をグループ化し、構造化された複数のアクティビティを作成する。インターフェイスコンポーネント404は、さらに、ユーザから提示されたアクティビティの他の選択およびそれぞれ関連付けられた制約も受け取る。この他の選択は、制約がそれぞれに関連付けられている構造化されていない複数のアクティビティを表す。一実施形態では、ユーザは、制約の1つまたは複数を定義する。デザイナコンポーネント406は、さらに、構造化された複数のアクティビティと構造化されていない複数のアクティビティとをマージして、ワークフローを作成する。ランタイムコンポーネント408は、フロー指定に従って構造化されている複数のアクティビティを実行する。ランタイムコンポーネント408は、さらに、構造化されていない複数のアクティビティのそれぞれに関連付けられた制約を評価し、評価により制約が満たされているアクティビティを実行することにより作成されたワークフローを実行する。一実施形態では、制約は、入力パラメータを持ち、ランタイムエンジン408は、さらに、入力パラメータの変更を識別し、制約を再評価することによりワークフローを実行する。
一実施形態では、表示コンポーネント402、インターフェイスコンポーネント404、デザイナコンポーネント406、およびランタイムコンポーネント408のうちの1つまたは複数は、アプリケーションプログラムの実行環境、コンテキストなどの中で実行される。
ハードウェア、ソフトウェア、および図4に例示され本明細書で説明されているようなシステムは、構造化された複数のアクティビティおよび構造化されていない複数のアクティビティをユーザに提示する手段の実施例、ユーザから構造化された複数のアクティビティの選択、構造化されていない複数のアクティビティの選択、および選択されたアクティビティに関連付けられているフロー指定を受け取る手段の実施例、ワークフローを作成するためにフロー指定に従って構造化された複数のアクティビティの選択および構造化されていない複数のアクティビティの選択をグループ化する手段の実施例、および作成されたワークフローを実行する手段の実施例の構成要素となる。
1つまたは複数のコンピュータ読み取り可能媒体は、メソッドを実行するコンピュータ実行可能命令を持つ。
(制約アクティビティグループ)
ワークフローは、さまざまな形状およびサイズのものがあり、それぞれ、アドホックなものからフォーマルなものまでの範囲のどこにあるかにより特徴付けられる。一般に、アドホックなワークフローは、タスクを任意の順序で遂行または実行する。つまり、タスクの集合は実行順序に関して独立である。フォーマルなワークフローは、きちんと定義された制御フローコンストラクト(例えば、順次実行、同時実行、条件付き分岐、whileループ)を持ち、タスクの集合を正確に定義し制御するために使用される。いくつかのワークフローは、フォーマルな部分と、目標および制約を持つものとして表すのが最も容易なアドホックな他の部分とを持つ。場合によっては、ワークフローは、その存続期間中にこの範囲に沿って移行することも可能であり、またはインスタンスが実行中(in−flight)のときにそのフローおよび/または制約を持つことも可能である。
本発明は、フローベースのスケジューリングおよび制約ベースのスケジューリングの統合を行う。この統合は、制約アクティビティグループ(CAG)と呼ばれる制御フローコンストラクトを中心とする。CAGアクティビティは、実行過程が制約されたアクティビティに関連付けられた制約により誘導されるアクティビティのグループ化を実現する。この方法で、CAGを利用すると、実行パスが明示的にモデル化されないアクティビティの集合(例えば、関係する複数のアクティビティ)の目標指向の制約実行が容易になる。CAGの退化したケース(例えば、制約アクティビティ上で制約が指定されておらず、既定の完了条件が使用される場合)は、制約アクティビティの非同期同時実行または並列実行である。
CAGは、CAGが完了したとみなされるときを宣言する完了条件に関連付けられる。既定の完了条件の例では、CAGの実行は、含まれるアクティビティがすべて、完了またはキャンセル状態にある場合に完了であると宣言する。完了条件の例は、CAGを囲むスコープおよびその親スコープの中の変数およびメッセージおよび他のアクティビティの状態を参照する論理値である。CAGが潜在状態から有効化状態に移行したときに完了条件が真と評価された場合、CAGは、含まれているアクティビティを有効化または実行せずに即座に完了する。如何なるときでも実行中CAGアクティビティの完了条件が真と評価されれば、CAG内に含まれるあらゆる実行中のアクティビティは、即座にキャンセルされ、CAGアクティビティは完了状態に移行する。
CAG内のそれぞれのアクティビティは、関連付けられた制約を持つ。制約アクティビティの制約の例(例えば、CAG内の制約)は、CAGを囲むスコープおよび兄弟スコープではなく、その親スコープの中の変数およびメッセージ、ならびにCAG内の他のアクティビティの状態も参照する論理関数である。制約は、データ依存関係および実装に関して知っていることに応じて透明、半透明、または不透明のいずれかである。実装ではなくデータ依存関係は、半透明制約の場合に分かる。完全透明制約については、データ依存関係および実装が分かる。不透明制約は、データ依存関係または実装のいずれについても情報を与えない。透明および半透明制約では、エンジンがそのような制約の評価が必要な場合について有益な判断を下せるためより効率的な評価を利用する。
アクティビティ上の使用可能制約は、真の場合、関連するアクティビティが実行可状態であり、有効にされなければならないとの宣言である。この制約は、アクティビティが潜在状態である間だけ意味がある。そのため、1回だけ真と評価することができる。制約は、有効にされた後いつでも無効にできる。これは、2つのタスクが2つの個別のものに割り当てられ、一方のタスクの完了により他方のタスクがキャンセルされる(無効にされる)場合に一般的なXOR条件をサポートする。使用不可制約は、使用可能制約のように、1回限りである。CAGの使用可能制約は、CAGの完了条件が満たされた後再有効化され、CAG内のタスクに対し意味論またはwhile意味論を与えることができる。
CAGアクティビティの完了条件および制約されたアクティビティに関連付けられているすべての制約は、式の単一のコレクションと考えることができる。CAG自体が有効化された場合、データ依存関係が満たされているすべての論理式が評価される。CAGの完了条件が真の場合、CAGは、直ちに完了とみなされる。そうでない場合、有効化される0個以上のアクティビティのリストが生成される。本発明のワークフローエンジンでは、識別されたアクティビティを有効化する。アクティビティが実行されたためスケジュールの状態(例えば、制約および完了条件が依存するデータユニバースの状態)に変更が生じると、制約の再評価が実行され、有効化される新しいアクティビティが識別される。式の評価およびアクティビティの実行は、段階的な、または2ステップの反復プロセスとは異なり、同時実行される。
次に図5を参照すると、ブロック図は、CAGを使用しフローベースの領域内に定義されている制約ベースの領域を持つワークフローモデル500を例示している。フローベースの領域は、構造化されたアクティビティの集合(例えば、ワークフローモデル要素)を含む。ワークフローの制約ベースの領域は、関連付けられた制約(例えば、スケジュールのデータ状態についての論理式)が真の場合に実行されるアクティビティの集合を示す。フローベースのモデルは、アクティビティの1つに関連付けられている制約が満たされた場合は(例えば、いつまでも、またはCAG完了意味論が満たされるまで)、制約ベースの領域内のアクティビティが実行されている間にその終点に達したときに完了する。制約ベースの領域に対する完了意味論があれば、制約ベースの領域およびフローベースの領域を組み合わせることができる。
図5の実施例では、制約ベースの領域は、ConstrainedGroup1 502を含む。ConstrainedGroup1内のアクティビティは、Send1 504およびDelay1 506を含む。アクティビティ504、506はそれぞれ、関連付けられた制約を持つ。さらに、完了条件508は、ConstrainedGroup1 502に関連付けられる。
(ワークフローステンシル(Workflow Stencils))
ワークフローステンシル(例えば、ワークフローテンプレートまたはアクティビティパッケージ)は、ルートアクティビティおよびアクティビティの集合を含む。ステンシルは、領域および/またはホスト固有である。前者の実施例としては、構造化ワークフローステンシル、ヒューマンワークフローステンシル、および非構造化ワークフローステンシルがある。いくつかのステンシルは、場合によっては特定のホスト環境内で連携するように設計されている1つまたは複数のルートを含むアクティビティの集合として「閉じて」いてもよい。他のステンシルは、さまざまな程度で「開いて」いてもよい。ステンシルは、その拡張性ポイントを定める。例えば、開発者は、CustomRootおよび新しい抽象CustomActivityを書いて、パッケージがCustomRootであり、さらにCustomActivityから派生したアクティビティであると宣言する。
BPELまたはXLANG/Sステンシルの実施例は、状態管理およびトランザクションに参加する、関連付けられたイベントおよび例外ハンドラを備える、コントラクトファーストモデル(contract first model)をサポートする、分析できる、正しく定義されたアクティベーションおよび終了動作を持つ、という特性を有するルートアクティビティを含む。ステンシルの実施例は、さらに、メッセージング特有のアクティビティの集合(例えば、SendおよびReceiveおよびその変種)およびScope、Loop、Condition、Listen、およびThrowなどの他の構造化アクティビティを含む。
Halifax Stencilの実施例は、暗黙の状態管理関連の例外ハンドラ(0〜n)、イベントベースのモデルをサポートする、適切に定義されたアクティベーション動作を持つ、および未定義の終了がある、という特性を備えるルートアクティビティを含む。ルートアクティビティは、0〜nのEventDrivenアクティビティを含む。それぞれのEventDriven Activityは、Halifax Actionを表す。それぞれのEventDriven Activityは、関連付けられた状態管理プロトコルを有し、アトミックスコープ内で実行される。
(デザイナフレームワーク(ユーザインターフェイス))
オーケストレーションエンジンは、WYSWYG方式でさまざまなクラスのワークフローモデルを設計するためのフレームワークを備える。例えば、図6を参照すると、ワークフローオーサリングするための高水準アプリケーションユーザインターフェイスは、ワークフローの指定をウィザードに依存している。このフレームワークは、開発者がビジュアルワークフローデザイナを書けるようにするサービスおよび動作の集合を含む。これらのサービスは、ワークフロープロセスのレンダリング、フローを描画するためのインク/タブレットのサポート、および元に戻す/繰り返し、ドラッグ/ドロップ、切り取り/コピー/貼り付け、ズーム、パン、検索/置換、ブックマーク、装飾、妥当性検証エラー用のスマートタグ、アクティビティ用の有効なドロップターゲットインジケータ、自動レイアウト、ビューページ付け、ナビゲーションマーカー、ドラッグインジケータ、ヘッダ/フッタ付き印刷およびプレビューなどの効率的方法を提供する。このようなユーザインターフェイスを使用することで、タスクおよび制御フロー複合アクティビティ(例えば、シーケンス、パラレル、および条件付き)を含む単純なワークフローを構成することができる。ルール指定(例えば、条件付き分岐ロジック、whileループロジック)、またはデータフロー指定(例えば、タスクAの出力がタスクBへの入力である)のいずれにも、コードの入力(または既存のコンパイル済みコードへの依存)は不要である。(ルールおよびデータフローを含む)スケジュールのシリアライゼーションされた表現は、コードビサイドが必要ないいくつかのシナリオにおいて自己充足しており、完全である。
本発明のデザイナフレームワークを使用することで、本発明のオーケストレーションエンジンは、ソフトウェアコードをビジュアルな形でワークフローモデルに関連付ける機能をサポートするアプリケーション短期開発(RAD)スタイルのビジュアルワークフローデザイナを含む。ワークフロー内のそれぞれのアクティビティは、関連付けられたアクティビティデザイナを備える。それぞれのアクティビティデザイナは、フレームワークサービスに関して作成される。本発明のフレームワークは、さらに、ビジュアルデザイナモデルも含む。ビジュアルデザイナモデルは、ワークフローモデルで記述された関係を介して互いにリンクされているアクティビティデザイナの集合を含む。図7は、ワークフローデザイナの実施例を示す。本発明は、ユーザコードとワークフローモデルとの間のラウンドトリッピングをリアルタイムで可能にする「Code−Beside」、「Code−Within」、および「Code−Only」を含むコードをワークフローモデルに関連付けるさまざまなモードを含む。本発明は、さらに、ユーザがワークフロー構築している最中にリアルタイムで意味論的エラーを提示する。
一実施形態では、本発明は、デザイナフレームワークのユーザインターフェイス内の複数のアクティビティを識別するパッケージをユーザに提示する。本発明は、さらに、ユーザから、提示されたアクティビティの選択および階層的編成結果を受け取る。本発明では、受け取ったアクティビティをシリアライゼーションし、ワークフローの永続的表現を作成する。本発明は、さらに、ユーザから、ワークフロー内の複数のアクティビティのうちの1つとの関連付けのためのビジネスロジックを表すソフトウェアコードを受け取る。本発明は、さらに、関連付けられている1つまたは複数の意味論を持つユーザ定義アクティビティも受け取ることができる。本発明は、定義済みインターフェイス要件への適合に関して意味論を評価する意味チェッカーまたはバリデータを含む。意味論が定義済みインターフェイス要件に適合している場合、本発明では、ユーザ定義アクティビティを複数のアクティビティのうちの1つとして提示する。本発明は、さらに、そのソフトウェアコードをコンパイルして1つまたは複数のバイナリファイルを作成する。例えば、本発明は、シリアライゼーションされたワークフロー表現およびソフトウェアコードをワークフローの実行可能表現を含む単一のアセンブリにコンパイルする。本発明は、作成されたワークフローを実行する。一実施形態では、1つまたは複数のコンピュータ読み取り可能媒体は、メソッドを実行するコンピュータ実行可能命令を持つ。
オーケストレーションエンジンデザイナによって、ユーザは、他の作成済みスケジュールを使用し、それらを使用して上位のスケジュールを再帰的に作成することができる。スケジュールのインライン展開では、ユーザはスケジュールコンテンツをインラインで表示し、コンテンツを切り取ったりコピーしたりすることができる。スケジュールのインライン展開を有効にし、スケジュールを読み取り専用にするには、インラインスケジュールに対して別のデザインサーフェスおよびデザイナホストを作成する。さらに、複合スケジュールデザイナはそれ独自の階層を持つ。呼び出されたスケジュールはロードされ、ユーザによってデザイナが展開されたときに表示される。一実施形態では、デザイナは、アクティビティがデザインサーフェス上でアクティビティドロップまたはコピーされた場合に縮小する。プロパティは、呼び出し側アクティビティデザイナをホスティングされたスケジュールのルートデザイナに連鎖する。下記の関数は、デザイナからアクティビティの追加および削除を行うことを禁止する。
internal static bool AreAllComponentsInWritableContext(ICollection components)
internal static bool IsContextReadOnly(IServiceProvider serviceProvider)
これらの関数は、アクティビティが挿入されるコンテキストが書き込み可能かどうかをチェックするためにインフラストラクチャにより呼び出される。ホスティングされたデザイナでは、これらの関数は偽を返す。さらに、プロパティの修正が禁止される。他の関数は、適切なコンポーネントからアクティビティデザイナをフェッチする。
internal static ServiceDesigner GetSafeRootDesigner(IServiceProvider serviceProvider)
internal static ICompositeActivityDesigner GetSafeParentDesigner(object obj)
internal static IActivityDesigner GetSafeDesigner(object obj)
一実施例において、ユーザは、スケジュールを作成し、それをアクティビティとしてコンパイルする。コンパイルに成功すると、スケジュールはツールボックス上に表示される。ユーザは、コンパイルされたスケジュールの使用が望ましいスケジュールを開くか、または作成する。ユーザは、ツールボックスからコンパイル済みスケジュールをドラッグ&ドロップする。縮小されたスケジュールデザイナがデザインサーフェスに示される。ユーザがドロップされたコンパイル済みスケジュールのコンテンツを表示したい場合、ユーザはそのスケジュールデザイナを展開して、呼び出されたスケジュールのコンテンツを読み取り専用状態でインライン表示する。呼び出されたスケジュールのインライン化により、ユーザはスケジュールデザイナ同士を切り換えなくても呼び出されたスケジュールを表示することができる。この機能は、既存のスケジュールを再利用して上位スケジュールを作成する開発者に有用な機能である。
(テーマ/スキンを使用したデザイナフレームワークのカスタマイズのサポート)
デザイナフレームワークを使用して書かれたワークフローデザイナは、ワークフローテーマを使用してカスタマイズすることができる。これらは、デザイナのさまざまな態様を宣言的に記述する拡張マークアップ言語(XML)ファイルとすることができる。ワークフローデザイナは、アクティビティを拡張するパートナのサポートをウィザードで対応している。ワークフローデザイナによりサポートされるユーザインターフェイス機能の例として、限定はしないが、元に戻す/繰り返し、ドラッグ/ドロップ、切り取り/コピー/貼り付け、ズーム、パン、検索/置換、ブックマーク、装飾、妥当性検証エラー用のスマートタグ、アクティビティ用の有効なドロップターゲットインジケータ、自動レイアウト、ビューページ付け、ナビゲーションマーカー、ドラッグインジケータ、ヘッダ/フッタ付き印刷およびプレビュー、およびドキュメントアウトライン統合がある。ワークフローデザイナは、XMLメタデータを使用してデザイナのルック&フィールをカスタマイズできるカスタムデザイナテーマ/スキンをサポートする。ワークフローデザイナでは、バックグラウンドコンパイルをサポートする。一実施例では、スケジュールを設計しながら妥当性検証エラーを調べるスマートタグおよびスマートアクションが用意される。ワークフローデザイナは、任意のコンテナ(例えば、アプリケーションプログラム、シェルなど)でホスティングすることができる。
オーケストレーションエンジンプログラムの一実施例は、送信アクティビティが後に続く受信アクティビティを含む。このプロセスでは、メッセージを受信し、それを送出する。ユーザは、「Hello World」と呼ばれるプロジェクトを作成し、オーケストレーションアイテムをプロジェクトに追加する。ユーザは、その後、スコープアクティビティをデザインサーフェス上にドラッグ&ドロップする。次に、ユーザは、送信アクティビティが後に続く受信アクティビティをスコープ上にドロップする。図7は、デザイナ内の結果として得られるワークフロー700を例示している。それぞれのアクティビティデザイナは、オブジェクトモデル上のユーザインターフェイス表現を提供する。開発者は、オブジェクトモデルを直接プログラムして、アクティビティのプロパティを設定するか、またはデザイナを使用することができる。オーケストレーションエンジンデザイナを使用することにより、開発者はツールボックスからアクティビティを選択し、それをデザイナサーフェス上にドラッグすることができる。アクティビティがすでにスケジュールに入れられており、移動する必要がある場合、開発者は、それを選択して(それをクリックすることにより)、そのアクティビティを入れる必要のあるスケジュールの領域にドラッグすることができる。開発者がコントロールキーを押しながらドラッグ&ドロップを行うと、選択されたアクティビティのコピーが作成される。
アクティブな配置では、可能なドロップポイント(ターゲット)をデザインサーフェス上にビジュアルインジケータとして用意する。自動スクロール機能も、ドラッグ&ドロップのコンテキスト内で関与する。大きなスケジュールを取り扱う場合、現在ビューポート内にないデザイナの領域へのナビゲーションは、入れるスケジュールの領域に向かってアクティビティをドラッグすることによりアクセス可能である。
ドラッグ&ドロップは、同じプロジェクト内のスケジュール間で、また同じソリューション内の他のプロジェクト内のスケジュール間でサポートされる。アクティビティがデザインサーフェス上に配置された後、開発者はそのアクティビティの構成を設定する。各アクティビティは、スケジュールが有効なものとなるように開発者が構成する一連のプロパティを持つ。これらのプロパティは、プロパティブラウザで編集可能である。すべてのアクティビティは、プロパティブラウザ内にどのようなプロパティを表示できるかを制御する。開発者がさまざまなアクティビティを構成するのを補助するため、デザイナは、さまざまなダイアログまたは「サブデザイナ」を備えている。ダイアログの各々は、アクティビティのさまざまなプロパティについて呼び出される。
オーケストレーションエンジンは、ツールボックス内に提示されるアクティビティをカスタマイズすることができる。開発者がカスタムアクティビティまたはスケジュールを作成する場合、最終結果はアセンブリである。ダイアログを使用することにより、開発者は、アセンブリロケーションに移動してブラウズし、そのアセンブリを選択してオーケストレーションエンジンアクティビティとして現れるようにすることができる。それとは別に、開発者は、オーケストレーションエンジンのインストールパス内にそのアセンブリを置くことができ、オーケストレーションエンジンアクティビティとして存在することになる。
(アプリケーションプログラミングインターフェイス(API))
他の実施形態では、本発明は、さまざまなワークフローオペレーションを実行するためのアプリケーションプログラミングインターフェイス(API)を備える。本発明は、ワークフローをオーサリングするためのデザインアプリケーションプログラミングインターフェイスを含む。デザインアプリケーションプログラミングインターフェイスは、ワークフローをオーサリングする手段およびアクティビティのうちの1つまたは複数を選択してワークフローを作成する手段を備える。本発明は、さらに、デザインアプリケーションプログラミングインターフェイスを介してオーサリングされたワークフローをコンパイルするためのコンパイルアプリケーションプログラミングインターフェイスも含む。コンパイルアプリケーションプログラミングインターフェイスは、ワークフローをシリアライゼーションする手段、ワークフローの視覚的な表示をカスタマイズする手段、デザインアプリケーションプログラミングインターフェイスを介してオーサリングされたワークフローをコンパイルする手段、ワークフローの妥当性確認を行う手段を含む。
本発明は、さらに、型をワークフロー内のアクティビティのそれぞれに関連付けるためのタイププロバイダアプリケーションプログラミングインターフェイスも含む。タイププロバイダアプリケーションプログラミングインターフェイスは、型をワークフロー内のアクティビティのそれぞれに関連付ける手段および型をワークフロー内のアクティビティのそれぞれに関連付ける手段を含む。
1つまたは複数のAPIは、ワークフローをオーサリングする手段の実施例、アクティビティの1つまたは複数を選択してワークフローを作成する手段の実施例、ワークフローをシリアライゼーションする手段の実施例、ワークフローの視覚的表示をカスタマイズする手段の実施例、ワークフローの妥当性確認を行う手段の実施例、ワークフローをコンパイルする手段の実施例、および型をワークフロー内のアクティビティのそれぞれに関連付ける手段の実施例を含む。
(アクティビティ実行フレームワーク)
スケジュールおよびスコープを除き、エンジンは、アクティビティを抽象エンティティとして表示し、特定のアクティビティの特定のデータまたは意味論を知らずにアクティビティの実行を簡単に調整する。一実施形態では、4つのエンティティは、アクティビティ自体、実行中のアクティビティの親アクティビティ、実行中のアクティビティを取り囲むスコープ、およびオーケストレーションエンジンの実行中にやり取りをする。それぞれのエンティティは異なる関数を持つ。
完了をアクティビティコーディネータに知らせることなくアクティビティの実行メソッドが戻る場合、そのアクティビティは、論理的待ち状態にあると識別される。このようなアクティビティは、オーケストレーションエンジンによりキャンセルするか、または継続することができる(例えば、待っているアイテムまたはイベントが利用可能になるか、または実行され、エンジンによりこれにアクティビティが通知された後)。
論理的待ち状態に決して入らないいくつかのアクティビティは、決してキャンセルできない。実施例は、送信アクティビティおよびコードアクティビティを含むが、これらは外部イベントまたはサブスクリプションへの要求なしで実行されるからである。スレッドを渡された後(つまり、実行メソッドがオーケストレーションエンジンにより呼ばれた後)、これらのアクティビティは完了するまで動作し続ける。完了を通知するまでスレッドを返さないので、オーケストレーションエンジンにはキャンセルする機会が決して与えられない。
オーケストレーションエンジンのランタイムは、ルールを使用して、オーケストレーションエンジンアクティビティが実行されるイベントをトリガする。オーケストレーションエンジンデザイナは、関連付けられたルールを実行時に評価し、イベントを取り出するユーザ機能を提供する。オーケストレーションエンジンデザイナを利用することで、ユーザは、拡張性アーキテクチャを用意することによりさまざまな種類のルール技術を使用できる。デザイナは、使用されるルールの型には関知しない。
一実施形態では、デザイナは、ルールをアクティビティに関連付ける手段として論理式ハンドラをサポートしている。これは、ユーザコードファイル内で、ユーザが真または偽の値を返すメソッドを書くことを意味し、それに基づいてルールがトリガされる。現在、Info AgentおよびBusiness Rules Engine(BRE)を含むルールを評価するために使用することもできる複数の技術がある。これを達成するために、デザイナは、ルール技術開発者がデザイナでカスタムユーザインターフェイスをホスティングできるようにする拡張性アーキテクチャを備える。デザイナは、コードステートメントコレクションの形でルールをシリアライゼーションするカスタムユーザインターフェイスライター向けの手段を用意している。デザイナは、コードステートメントコレクションが中に挿入されているユーザコードファイル内にブールハンドラを生成し出力する。オーケストレーションエンジンは、ルールライターにより使用することもできる既定のユーザインターフェイスを含む。ルール技術プロバイダは、カスタムルール宣言を作成し、そのカスタムルール宣言に関連付けられたユーザインターフェイスタイプエディタを書き、ルールユーザインターフェイスをホスティングするカスタムユーザインターフェイスを作成し、保存後にコードステートメントを生成することによりオーケストレーションエンジンデザイナにルールを追加する。
一実施例では、ユーザは、ルールがアタッチされる必要のあるアクティビティデザイナを選択し、プロパティブラウザでルールプロパティを特定し、ドロップダウン内の「RuleExpressionHandler」を選択し(「Statements」プロパティがユーザインターフェイス内のRule Propertyの下に表示されるようにする)、「Statements」プロパティ内のユーザコードメソッド名を指定し、ユーザインターフェイスタイプエディタを呼び出してルール特有のユーザインターフェイスをホスティングするダイアログを呼び出し、新しい述語行を作成しそれらをグループ化することによりダイアログ内でルールを定義する。ユーザインターフェイスは、ユーザコードファイルにメソッドを生成して出力する。メソッド名は、プロパティブラウザでユーザが指定したのと同じものである。ルールを作成することに相当するコードステートメントが、ルール用のユーザコードメソッド内に挿入される。
(実行時のメッセージング)
実行ワークフローでは、スケジュールに送られるメッセージは、特定のスケジュールインスタンス向けである。例えば、発注書#123に対するインボイスをその発注書を発信した(例えば、送出した)のと同じスケジュールインスタンスに送り返さなければならない。受信メッセージと適切なスケジュールインスタンスとを照合するために、メッセージおよびスケジュールインスタンスは相関関係集合を共有する。相関関係集合は、メッセージ内の識別子フィールドがスケジュールインスタンスにより保持される同じ型の識別子と突き合わせて照合されることを意味する一価相関関係集合でよい。多プロパティ相関関係集合も可能であり、データベーステーブル内の複数列主キーに類似している。
スケジュールインスタンスにより保持されている相関関係集合の値は、スケジュールインスタンスがメッセージを送出するか(例えば、値は送信発注書の識別子フィールドから取り出せる)、またはメッセージを受信するときに初期化される。その後、この相関関係集合値は、そのスケジュールインスタンスの状態の一部となる。後続の受信メッセージが到着すると、スケジュールインスタンス状態で保持されている相関関係集合値は、予想される型の受信メッセージにより保持されている識別子と突き合わせて照合される。一致が見つかった場合、相関関係集合は満たされ、メッセージがスケジュールインスタンスに配送される。
相関関係集合の実装はオーケストレーションエンジンおよびホスト環境に左右されるが、一実施形態では、ユーザは相関関係集合を宣言してスケジュールインスタンスを正しく動作するようにする。他の実施形態では、いくつかのアクティビティ(例えば、SendRequest/ReceiveResponseアクティビティおよびReceiveRequest/SendResponseアクティビティ)は、ユーザと無関係に相関関係集合をセットアップする。送信および受信アクティビティにより広範にわたる妥当性チェックが実行され、相関関係集合が正しく初期化され、追随されるようにする。
(実行ワークフローの動的編集)
オーケストレーションエンジンは、さまざまな種類のワークフローをオーサリングする(そして、その後、ビジュアル化し、実行する)ためのフレームワークを提供する。実施例としては、event−condition−action(ECA)スタイルのワークフローまたは構造化フローまたはルール駆動フローがある。さらに、ワークフローのモデル化方法に関係なく、フレームワークにより、ユーザは設計時と同じ方法で、またはワークフロープロセスを再コンパイルしなくてもワークフロープロセスが実行しているときであってもワークフローをオーサリングまたは編集することができる。フレームワークを使用すると、ユーザはランタイムと高忠実度の設計時表現との間のラウンドトリッピングが可能になる。アドホックな変更は、プロセスモデルに対し実行時に加えられる変更である。ユーザは、そのスケジュールモデルを実行インスタンスに問い合わせ、モデルに変更を加えることができる。例えば、ユーザは、バッチ式でアクティビティの追加、削除、または置換を行うことができ、その後、バッチ変更をコミットまたはロールバックすることができる。一実施形態では、モデルは更新の後に妥当性確認が行われる。本発明の多くのワークフローシナリオでは、「設計時オーサリング」および「ランタイム実行」との間の分離のぼかし、またはさらには除去がある。
スケジュールインスタンスは、実際に、それらのインスタンスのスケジュール型について定義されているアクティビティ型(メタデータ)ツリーを他のインスタンスと共有する。しかし、スケジュールインスタンスは、実行を開始した後、新しいアクティビティの追加または宣言的ルールの操作を介してオンザフライで変更できる。そのような修正されたスケジュールインスタンスを取り出し、新しいスケジュール型として「名前を付けて保存」するか、またはより一般的に、インスタンスからシリアライゼーションされた表現を単純に復元することが可能である。つまり、実行スケジュールインスタンスを、シリアライゼーションし、その後、デザイナ(例えば、オーサリング環境)またはランタイムビジュアル化ツールに持ち込むことができる。
さらに、上級開発者は、スケジュールを丸ごとソフトウェアコードとしてオーサリングすることも可能である。スケジュール型を直接オーサリングする場合も、開発者は、単に、スケジュールのコードビサイドクラスのソフトウェアコードにInitializeScheduleModelという静的メソッドを入れ、このメソッドに[ScheduleCreator]属性でマークするだけである。一実施形態では、静的メソッドは、パラメータを取らず、Scheduleオブジェクトを返す。随伴するシリアライゼーションされたファイルはないが、スケジュールのシリアライゼーションされた表現は、作成されるScheduleオブジェクトから復元できる。これは、単一のソフトウェアコードファイルを使用してスケジュールを作成できることを意味しているが、妥当性チェックは、このファイルには実行されえない。オーケストレーションエンジンのコンパイルにより、スケジュール型の基礎となっているアクティビティツリーの構造上および意味論的な有効性が保証される。他の実施形態では、コンパイルおよび妥当性検証を内部で実行し、実行される実際の型を生成するが、コードの入力は不要である。スケジュール型のコンパイルは、コンパイル時オブジェクトモデルから実行時オブジェクトモデルへの変換がない分、超軽量なプロセスとなっている。本質的に、コンパイルは、単に、スケジュールのオブジェクトモデル表現をコードビサイドと組み合わせて新しい型を生成するだけである。一実施形態では、基本的に、コンパイル済みコードビサイドがオブジェクトモデル内のアクティビティにより要求される内容と一致するか、またはコードビサイドがコンパイル済みフォーム(アセンブリ)内にすでに存在している可能性がある場合には、特定のスケジュールについてコードビサイドを全く生成する必要はないと考えられる。
シリアライゼーションされたスケジュールをコンパイルする場合、そのスケジュールに対するコードビサイドとして実際に使用される既存のコンパイル済み型を指すことが可能である。このコンパイル済み型の派生型が作成され、この新しい型はコードビサイドとして使用され、一意的な型が新しいスケジュールを表すように作成されることが保証される。
(シリアライゼーションアーキテクチャ)
シリアライゼーションインフラストラクチャは、オーケストレーションエンジンのアクティビティツリーをシリアライゼーションする、モジュール方式の、形式に依存しない、容易に拡張可能なメカニズムを提供する。
特に、呼び出し側(例えば、アプリケーションプログラムまたはユーザ)は、シリアライゼーションマネージャからシリアライザにオブジェクト(またはアクティビティ)Aを要求する。オブジェクトAの型のメタデータ属性により、オブジェクトAは要求された型のシリアライザにバインドされる。次に、呼び出し側は、オブジェクトAをシリアライゼーションするようにシリアライザに要求する。続いて、オブジェクトAのシリアライザはオブジェクトAをシリアライゼーションする。シリアライザは、遭遇するオブジェクト毎に、シリアライゼーションしながら、シリアライゼーションマネージャに追加シリアライザを要求する。シリアライゼーションの結果が呼び出し側に返される。
オーケストレーションエンジンコンポーネントモデル内のすべてのアクティビティは、シリアライゼーションに参加することができる。シリアライザコンポーネントは、一実施形態ではアクティビティクラス自体の一部ではない。その代わりに、このコンポーネントは、アクティビティに関連付けられたクラス内のシリアライザ属性に注釈を入れることにより指定される。シリアライザ属性は、そのアクティビティ型のオブジェクトをシリアライゼーションするために使用されるクラスを指す。他の実施形態では、ある1つのアクティビティ型のプロバイダコンポーネントが、そのアクティビティにより与えられる既定のシリアライザをオーバーライドする。
デザイナシリアライゼーションは、メタデータ、シリアライザ、およびシリアライゼーションマネージャに基づく。メタデータ属性は、型をシリアライザに関係付けるために使用される。「ブートストラッピング」属性は、シリアライザを持たない型に対しシリアライザを提供するオブジェクトをインストールするために使用することができる。シリアライザは、特定の1つの型またはある範囲の複数の型をシリアライゼーションする方法を認識するオブジェクトである。それぞれのデータ形式に対して1つの基本クラスがある。例えば、オブジェクトをXMLに変換する方法を認識するXmlSerializer基本クラスが考えられる。本発明は、特定のシリアライゼーション形式に関係しない一般的なアーキテクチャである。シリアライゼーションマネージャは、オブジェクトグラフをシリアライゼーションするために使用されるさまざまなシリアライザに対する情報ストアとなるオブジェクトである。例えば、50個のオブジェクトのグラフは、すべてそれ独自の出力を生成する50個の異なるシリアライザを持つことができる。これらのシリアライザがシリアライゼーションマネージャを使用して、必要に応じて互いに通信し合うことができる。
一実施形態では、汎用オブジェクトメタデータを使用するシリアライザに結合されたシリアライゼーションプロバイダを使用することにより、与えられた型に対するシリアライザを用意する機会がオブジェクトに与えられるコールバックメカニズムを実現する。AddSerializationProviderなどのメソッドを通じて、シリアライゼーションマネージャにシリアライゼーションプロバイダを用意することができる。シリアライゼーションプロバイダは、DefaultSerializationProviderAttributeなどの属性をシリアライザに追加することによりシリアライゼーションマネージャに自動的に追加できる。
一実施形態では、オブジェクトはxml要素としてシリアライゼーションされる、オブジェクトのプロパティは単純プロパティ(例えば、xml属性としてシリアライゼーションされる)または複合プロパティ(子要素としてシリアライゼーションされる)として分類される、オブジェクトの子オブジェクトは子要素としてシリアライゼーションされる、というルールに従って形式が示される。子オブジェクトの定義は、オブジェクト毎に異なることがある。以下の実施例は、子オブジェクトの1つとしてSendアクティビティを持つ、whileアクティビティのシリアライゼーションである。
Figure 2006107480
シリアライゼーションに使用される言語がXOMLである一実施形態では、それぞれのXOML要素は、スケジュールがコンパイルされるときにそれぞれのオブジェクトにシリアライゼーションされる。オブジェクトは、単純型と複合型の両方を含む。各アクティビティのXOML表現の間のマッピングとオーサリングオブジェクトモデルへのマッピングについて、次に説明する。XOMLのシリアライゼーションは、プリミティブアクティビティと複合アクティビティとで異なる。
プリミティブアクティビティに対する単純型は、アクティビティ型に関する属性としてシリアライゼーションされる。プリミティブアクティビティに対する複合型は、子要素としてシリアライゼーションされる。例えば、以下に、SendアクティビティのXOML表現を示す。
Figure 2006107480
プリミティブ型のシリアライゼーションと同様に、複合アクティビティに対する単純型は、アクティビティ型に関する属性としてシリアライゼーションされる。しかし、定義により、複合アクティビティはネストされたアクティビティをカプセル化したものである。それぞれのネストされているアクティビティは、他の子要素としてシリアライゼーションされる。例えば、以下に、WhileアクティビティのXOML表現を示す。
Figure 2006107480
プロセス/ワークフロービューとシリアライゼーションされた表現との間に強い関係が存在する。図9は、スケジュール定義およびビジュアルワークフローと、ワークフローのシリアライゼーションされた(例えば、XOML)表現と、ワークフローのコードビサイドとの間の関係を示す図である。いずれかの表現でオーサリングする場合、他方は変更を招く。そのため、アクティビティ(または複合アクティビティの場合にはその構成要素部分)に対するXOMLを修正すると、開発者がプロセス/ワークフロービューの切り換えを行うときにプロセス/ワークフロービューに直接反映される。逆も言える。プロセス/ワークフロービュー内のアクティビティを修正すると、XOML内に適切な修正が生じる。例えば、プロセス/ワークフロービュー内でアクティビティを削除すると、同じアクティビティについてXOML内のXML要素も削除される。ラウンドトリッピングは、プロセス/ワークフロービューとコードビサイドとの間にも生じる。
XOMLコードを作成するときに、XOML定義が定義済みインターフェイス要件に適合していない場合、違反しているXML要素は、下線が付けられるか、または開発者がそれとわかるように他の何らかの方法で視覚的に識別される。開発者がプロセスビューに切り換えた場合、XOML内にエラーがあると警告され、デザイナがリンクを表示するので、開発者はそのリンクをクリックして、違反している要素にナビゲートする。この同じエラーは、タスクペインにも表示され、そのエラーをダブルクリックすると、開発者はXOMLの違反要素にナビゲートされる。
(XOMLファイルからのアクティビティツリーの作成(デシリアライゼーション))
一実施形態では、CreateEditorInstance()関数が、DesignSurfaceオブジェクトを作成し、その後、DesignSurfaceオブジェクト上でBeginLoad()関数を呼び出して実際のローダオブジェクトをその中に渡し、最後に、BeginLoad()でDesignerLoader()関数を呼び出す。PerformLoad()関数は、テキストバッファオブジェクトを読み込み、それをオーケストレーションエンジンコンポーネントモデル階層にデシリアライゼーションする。本発明は、階層内を辿り、アクティビティをデザインサーフェスに挿入し、コンポーネントをVisual Studioにロードする。
本発明は、さらに、XOMLの変更を監視し、階層およびアイテム識別の変更を追跡して、Visual Studioのキャッシュ内の値を更新する。二次ドキュメントデータリストは、オーケストレーションエンジンデザイナが作用する、ユーザには見えない二次ドキュメントのリストを含む。例えば、ユーザはコードビサイドファイルを開いていないが、ユーザがオーケストレーションエンジンデザイナ内で変更を加えた場合に、コードビサイドファイルに変更が加えられる。このファイルはユーザには見えないので、ファイルは二次ドキュメントとして保持されるXOMLファイルが保存されると、必ず、二次ドキュメントも自動的に保存される。これらのファイルの1つの名前が変更されるか、またはファイルが削除された場合、本発明では、それに応じて、対応する二次ドキュメントオブジェクトを更新する。
オブジェクトツリーのデシリアライゼーションガイドラインの例を以下に示す。xml要素は、まず、親オブジェクトのプロパティとして取り扱われる。親オブジェクトが要素のタグ名を持つプロパティを持たない場合、その要素は親オブジェクトの子オブジェクトとして取り扱われる。xml要素は、親オブジェクト上の単純プロパティとして取り扱われる。
上記のシリアライゼーションされたコードを使用するデシリアライゼーションの実施例では、<While>要素は、xml名前空間情報を使用して作成されたオブジェクトとして取り扱われる。<ConditionRule>要素は、Whileアクティビティのプロパティとして取り扱われる。<CodeExpressionRuleDeclaration>要素は、値がConditionRuleプロパティに適用されるオブジェクトとして取り扱われる。最初に、<Send>要素がWhileアクティビティのプロパティとして試みられるが、「While」アクティビティは、名前「Send」のプロパティを持たず、したがって、<Send>要素はオブジェクトとして取り扱われ、whileアクティビティの子アクティビティとして取り扱われる。<Message>要素は、Sendアクティビティのプロパティとして取り扱われる。Send 上のMessageプロパティは読み取り専用なので、Message要素のコンテンツは、Messageオブジェクトのコンテンツと考えられる。同様のルールが、<OnBeforeSend>および<TypedChannel>要素のデシリアライゼーションに適用される。
XOMLコードがきちんとした形でない、XomlDocumentがXOMLコード内の第1の要素でなく、XOMLコード内の第1のアクティビティがデシリアライザできないという第1の条件の下では、XOMLデシリアライゼーションは決定的に失敗する。開発者に対して、XOMLビューからプロセス/ワークフロービューへ切り換える場合に、違反している側のXML要素にナビゲートするためのエラーメッセージが提示される。
(オーケストレーションエンジンデザイナのホスティング)
デザイナフレームワークは、どのようなアプリケーションプログラムでもホスティングできる。これは、サードパーティのアプリケーションでそれぞれの環境においてワークフローをレンダリングするのに非常に有用な機能である。またこれにより、サードパーティは、デザインサーフェスを再ホスティングおよびカスタマイズすることで、オーケストレーションエンジンデザイナ周辺のツールを開発することができる。本発明のフレームワークでは、ホスティングコンテナアプリケーション側でエディタおよび/またはテキストバッファなどのサービス群を用意することを想定している。
デザイナを再ホストする1ステップでは、ローダおよびデザインサーフェスを作成する。ローダは、XOMLファイルをロードし、アクティビティホストインフラストラクチャを構築する役割を持つ。デザインサーフェスは、その中にデザイナホストインフラストラクチャを保持し、デザインサーフェスをホスティングし、それとやり取りするサービスを提供する。デザインサーフェスは、サービスコンテナだけでなくサービスプロバイダとしても機能する。一実施例では、以下のコードを実行して、XOMLドキュメントをロードし、その中にアクティビティを保持するデザイナホストを構築する。
Figure 2006107480
以下のサービスでは、デザイナで異なる機能を使用できる。ISelectionService関数は、選択されたオブジェクトを保持する。IToolboxService関数は、ツールボックスとのやり取りを管理する。IMenuCommandService関数は、メニューとのやり取りを管理する。ITypeProvider関数を使用すると、タイプシステムを利用できる。さらに、高度なデザイナ機能を使用可能にするデザイナホスティング環境が提供する追加サービスもありえる。
タイプシステムは、本発明のコンポーネントモデルフレームワーク内の一コンポーネントである。デザイナがプロジェクトシステムの内側でホスティングされる場合、TypeProviderオブジェクトがプロジェクト毎に作成される。プロジェクト内のアセンブリ参照は、タイププロバイダへプッシュされる。さらに、プロジェクト内のユーザコードファイルが解析され、単一コードコンパイル単位が作成され、タイププロバイダへプッシュされる。また、本発明は、タイプシステム内で型を変更させることが可能なプロジェクトシステム内のイベントを監視し、その変更に対する応答として型を再ロードする適切な呼び出しをタイププロバイダに対し実行する。
(元に戻す/繰り返し)
スケジュールを作成し、正しく構築した後、開発者は一連の実行済みオペレーションをロールバックしたい場合がある。本発明の「元に戻す」および「繰り返し」機能を使用すると、どのアクティビティが直接影響を受けているかを例示する視覚的フィードバックが得られる。例えば、アクティビティ上でプロパティの変更が元に戻される場合、影響を受けたアクティビティは選択状態になる。複数のオブジェクトの削除が元に戻される場合、関わっているすべてのオブジェクトが、スケジュールに復元されるときに選択状態になる。Undo/Redo(元に戻す/繰り返し)は、他の分野における多くのアプリケーション全体を通して使用される共通の機能であり、その意味はよく理解されている。オーケストレーションエンジンデザイナでは、Save後に、元に戻す/繰り返しアイテムがパージされることはない。さらに、元に戻す/繰り返しは、プロセス/ワークフロービューで、XOMLビューで、開発者がビューを切り換えた場合に、およびコードビサイド内で実行することができる。
Undo/Redoは、プロセス/ワークフロービュー内のアクション、つまり、アクティビティのドラッグ&ドロップ(例えば、ツールボックスからデザインサーフェスにアクティビティをドラッグする、スケジュールの一部分から他の部分にアクティビティを移動する、一方のデザイナから他方のデザイナにアクティビティを移動する)、アクティビティの構成(例えば、アクティビティのプロパティを指定する)、および切り取り/コピー/貼り付け/削除のアクションに対し用意されている。
一実施形態では、シリアライゼーションされたビュー(例えば、XOMLビュー)は、テキストエディタ標準の元に戻す/繰り返しオペレーションを備えるXMLエディタである。本発明のデザイナは、プロセス/ワークフロービュー内で加えられた変更を示すフィードバックを開発者に提示する。その後、シリアライゼーションされたビュー内で元に戻した結果として、シリアライゼーションされたコードは失われる。開発者がプロセス/ワークフロービュー内のスケジュールの一部分を構築し、シリアライゼーションされたビューに切り換えて、その後、元に戻す/繰り返しオペレーションを実行することに決めた場合、警告が表示される。
(動作環境の例)
図10は、コンピュータ130の形態の汎用コンピューティング装置の一実施例を示している。本発明の一実施形態では、コンピュータ130などのコンピュータは、例示され、本明細書で説明されている他の図で使用するのに適している。コンピュータ130は、1つまたは複数のプロセッサまたは演算処理装置132およびシステムメモリ134を備える。例示されている実施形態では、システムバス136は、システムメモリ134を含むさまざまなシステムコンポーネントをプロセッサ132に結合する。バス136は、メモリバスまたはメモリコントローラ、周辺機器バス、アクセラレイティッドグラフィックスポート、およびさまざまなバスアーキテクチャのどれかを使用するプロセッサまたはローカルバスを含む数種類のバス構造のうちの1つまたは複数を表している。例えば、限定はしないが、このようなアーキテクチャとしては、Industry Standard Architecture(ISA)バス、Micro Channel Architecture(MCA)バス、Enhanced ISA(EISA)バス、Video Electronics Standards Association(VESA)ローカルバス、およびMezzanineバスとも呼ばれるPeripheral Component Interconnect(PCI)バスがある。
コンピュータ130は、通常、少なくともある種の形態のコンピュータ読み取り可能媒体を備える。コンピュータ読み取り可能媒体は、揮発性および不揮発性媒体、取り外し可能および固定の媒体を含み、コンピュータ130によってアクセスできる媒体であればどのような媒体でもよい。例えば、限定はしないが、コンピュータ読み取り可能媒体は、コンピュータ記憶媒体および通信媒体を含む。コンピュータ記憶媒体は、コンピュータ読み取り可能命令、データ構造体、プログラムモジュール、またはその他のデータなどの情報を格納する方法または技術で実装される揮発性および不揮発性、取り外し可能な、および固定の媒体を含む。例えば、コンピュータ記憶媒体は、RAM、ROM、EEPROM、フラッシュメモリまたはその他のメモリ技術、CD−ROM、デジタル多目的ディスク(DVD)またはその他の光ディスク記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置またはその他の磁気記憶装置、または所望の情報を格納するために使用することができ、しかもコンピュータ130によりアクセスできるその他の媒体を含む。通信媒体は、通常、コンピュータ読み取り可能命令、データ構造体、プログラムモジュール、または搬送波もしくはその他のトランスポートメカニズムなどの変調データ信号によるその他のデータを具現するものであり、任意の情報配信媒体を含む。当業者は、信号内の情報を符号化するなどの方法により特性のうちの1つまたは複数が設定または変更される変調データ信号を熟知している。有線ネットワークまたは直接配線接続などの有線媒体、ならびに音響、RF、赤外線、およびその他の無線媒体などの無線媒体は、通信媒体のいくつかの実施例である。上記のいずれの組み合わせもコンピュータ読み取り可能媒体の範囲に含まれる。
システムメモリ134は、取り外し可能な、および/または固定の、揮発性および/または不揮発性メモリの形のコンピュータ記憶媒体を備える。例示されている実施形態では、システムメモリ134は、読み取り専用メモリ(ROM)138およびランダムアクセスメモリ(RAM)140を含む。起動時などにコンピュータ130内の要素間の情報伝送を助ける基本ルーチンを含む基本入出力システム142(BIOS)は、通常、ROM 138に格納される。通常、RAM 140は、演算処理装置132に直接アクセス可能な、および/または演算処理装置132によって現在操作されているデータおよび/またはプログラムモジュールを格納する。例えば、限定はしないが、図10は、オペレーティングシステム144、アプリケーションプログラム146、その他のプログラムモジュール148、およびプログラムデータ150を例示している。
コンピュータ130はさらに、その他の取り外し可能な/固定の揮発性/不揮発性コンピュータ記憶媒体を備えることもできる。例えば、図10は、固定の不揮発性磁気媒体への読み書きを行うハードディスクドライブ154を例示している。図10は、さらに、取り外し可能不揮発性磁気ディスク158への読み書きを行う磁気ディスクドライブ156、およびCD−ROMまたはその他の光媒体などの取り外し可能不揮発性光ディスク162への読み書きを行う光ディスクドライブ160を示している。動作環境の実施例で使用できる他の取り外し可能な/固定の揮発性/不揮発性コンピュータ記憶媒体としては、限定はしないが、磁気テープカセット、フラッシュメモリカード、デジタル多目的ディスク、デジタルビデオテープ、ソリッドステートRAM、ソリッドステートROMなどがある。ハードディスクドライブ154、および磁気ディスクドライブ156、および光ディスクドライブ160は、通常、インターフェイス166などの不揮発性メモリインターフェイスによりシステムバス136に接続される。
図10に例示されている上記のドライブまたは他の大容量記憶装置およびその関連コンピュータ記憶媒体は、コンピュータ130用のコンピュータ読み取り可能命令、データ構造体、プログラムモジュール、およびその他のデータを格納する機能を備える。例えば、図10では、ハードディスクドライブ154は、オペレーティングシステム170、アプリケーションプログラム172、その他のプログラムモジュール174、およびプログラムデータ176を格納するものとして例示されている。これらのコンポーネントは、オペレーティングシステム144、アプリケーションプログラム146、その他のプログラムモジュール148、およびプログラムデータ150と同じである場合もあれば異なる場合もあることに留意されたい。オペレーティングシステム170、アプリケーションプログラム172、その他のプログラムモジュール174、およびプログラムデータ176に対しては、ここで、異なる番号を割り当てて、最低でも、それらが異なるコピーであることを示している。
ユーザは、キーボード180、およびポインティング装置182(例えば、マウス、トラックボール、ペン、またはタッチパッド)などのなどの入力装置またはユーザインターフェイス選択装置を通じてコマンドおよび情報をコンピュータ130に入力することができる。他の入力装置(図に示されていない)としては、マイク、ジョイスティック、ゲームパッド、衛星放送受信アンテナ、スキャナなどがある。これらの入力装置およびその他の入力装置は、システムバス136に結合されているユーザ入力インターフェイス184を通じて演算処理装置132に接続されるが、パラレルポート、ゲームポート、またはユニバーサルシリアルバス(USB)などの他のインターフェイスおよびバス構造により接続することもできる。モニタ188またはその他の種類の表示装置も、ビデオインターフェイス190などのインターフェイスを介してシステムバス136に接続される。モニタ188のほかに、コンピュータはプリンタおよびスピーカなどの他の周辺出力装置(図に示されていない)を備えることが多く、これらは出力周辺機器インターフェイス(図に示されていない)を通じて接続することができる。
コンピュータ130は、リモートコンピュータ194などの1つまたは複数のリモートコンピュータへの論理接続を使用してネットワーク接続環境で動作することができる。リモートコンピュータ194は、パーソナルコンピュータ、サーバ、ルータ、ネットワークPC、ピア装置、またはその他の共通ネットワークノードとすることができ、通常は、コンピュータ130に関して上で説明されている要素の多くまたはすべてを含む。図10に示されている論理接続は、ローカルエリアネットワーク(LAN)196およびワイドエリアネットワーク(WAN)198を含むが、他のネットワークを含むこともできる。LAN 196および/またはWAN 198は、有線ネットワーク、無線ネットワーク、それらの組み合わせなどとすることができる。このようなネットワーキング環境は、オフィス、企業規模のコンピュータネットワーク、イントラネット、および大域的コンピュータネットワーク(例えば、インターネット)では一般的である。
ローカルエリアネットワーキング環境で使用される場合、コンピュータ130は、ネットワークインターフェイスまたはアダプタ186を介してLAN 196に接続される。ワイドエリアネットワーキング環境で使用される場合、コンピュータ130は、通常、インターネットなどのWAN 198上で通信を確立するためモデム178またはその他の手段を備える。モデム178は、内蔵でも外付けでもよいが、ユーザ入力インターフェイス184、またはその他の適切なメカニズムを介してシステムバス136に接続される。ネットワーク接続環境では、コンピュータ130またはその一部に関して示されているプログラムモジュールは、リモートメモリ記憶装置(図に示されていない)に格納されうる。例えば、限定はしないが、図10には、リモートアプリケーションプログラム192がメモリ装置に常駐しているように例示されている。図に示されているネットワーク接続は実施例であり、コンピュータ間の通信リンクを確立するのに他の手段が使用されうる。
一般に、コンピュータ130のデータプロセッサは、コンピュータのさまざまなコンピュータ読み取り可能記憶媒体にさまざまな時点において格納された命令を使ってプログラムされる。プログラムおよびオペレーティングシステムは、通常、例えば、フロッピー(登録商標)ディスクまたはCD−ROMで配布される。そこから、コンピュータの補助記憶装置にインストールまたはロードされる。実行時に、それらは少なくとも一部はコンピュータの主記憶装置にロードされる。本明細書で説明されている発明は、これらおよび他のさまざまな種類のコンピュータ読み取り可能記憶媒体を含むが、ただしそのような媒体にマイクロプロセッサまたはその他のデータプロセッサに関して以下で説明されるステップを実装する命令またはプログラムが格納されている場合である。本発明は、さらに、本明細書で説明されている方法および手法に従ってプログラムされた場合にコンピュータ自体も含む。
例示の目的に関して、オペレーティングシステムなどのプログラムおよびその他の実行可能プログラムコンポーネントは、本明細書では異なるブロックとして例示されている。しかし、そのようなプログラムおよびコンポーネントは、コンピュータの異なる記憶装置コンポーネント内にさまざまな時点において常駐し、コンピュータの(複数の)データプロセッサにより実行されることは理解される。
本発明は、コンピュータ130を含む、コンピューティングシステム環境例に関して説明されているが、他の多くの汎用または専用コンピューティングシステム環境または構成で動作する。このコンピューティングシステム環境は、本発明の用途または機能の範囲に関する制限を示唆する意図はない。さらに、コンピューティングシステム環境は、動作環境例に例示されている1つのコンポーネントまたは複数のコンポーネントの組み合わせに関係する何らかの依存関係または要求条件がその環境にあるものと解釈すべきでない。本発明とともに使用するのに適していると思われるよく知られているコンピューティングシステム、環境、および/または構成の例として、パーソナルコンピュータ、サーバコンピュータ、ハンドヘルドまたはラップトップ装置、マルチプロセッサシステム、マイクロプロセッサベースのシステム、セットトップボックス、プログラム可能な家電製品、携帯電話、ネットワークPC、ミニコンピュータ、メインフレームコンピュータ、上記システムまたは装置を含む分散コンピューティング環境などがある。
本発明は、1つまたは複数のコンピュータまたはその他の装置により実行される、プログラムモジュールなどのコンピュータ実行可能命令の一般的状況において説明することができる。一般に、プログラムモジュールは、限定はしないが、特定のタスクを実行する、または特定の抽象データ型を実装するルーチン、プログラム、オブジェクト、コンポーネント、およびデータ構造を含む。また、本発明は、通信ネットワークを通じてリンクされているリモート処理装置によりタスクが実行される分散コンピューティング環境で実施することもできる。分散コンピューティング環境では、プログラムモジュールをメモリ記憶装置などのローカルとリモートの両方のコンピュータ記憶媒体に配置できる。
ソフトウェアアーキテクチャの背景状況におけるインターフェイスは、ソフトウェアモジュール、コンポーネント、コード部分、またはコンピュータ実行可能命令の他のシーケンスを含む。例えば、インターフェイスは、第1のモジュールの代わりにコンピューティングタスクを実行するために第2のモジュールにアクセスする第1のモジュールを含む。第1および第2のモジュールは、一実施例では、オペレーティングシステムによって提供されるようなアプリケーションプログラミングインターフェイス(API)、コンポーネントオブジェクトモデル(COM)インターフェイス(例えば、ピアツーピアアプリケーション通信用)、および拡張マークアップ言語メタデータ交換形式(XMI)インターフェイス(例えば、複数のWebサービス間の通信用)を含む。
インターフェイスは、Java(登録商標) 2 Platform Enterprise Edition(J2EE)、COM、または分散COM(DCOM)の実施例などの密結合の同期実装であってよい。それとは別に、またはそれに加えて、インターフェイスは、Webサービスの場合のような疎結合の非同期実装とすることもできる(例えば、シンプルオブジェクトアクセスプロトコルを使用する)。一般に、インターフェイスは、密結合、疎結合、同期、および非同期という特性の任意の組み合わせを含む。さらに、インターフェイスは、標準プロトコル、専用プロトコル、または標準プロトコルと専用プロトコルとの任意の組み合わせに適合することができる。
本明細書で説明されているインターフェイスは、すべて、単一インターフェイスの一部であるか、または別々のインターフェイスもしくはそれらの任意の組み合わせとして実装することができる。これらのインターフェイスは、機能を提供するためにローカルまたはリモートで実行できる。さらに、これらのインターフェイスが含む機能は、例示されている、または本明細書で説明されている機能よりも多い場合も少ない場合もある。
例示され、本明細書で説明されている方法の実行または遂行の順序は、断りのない限り本質的ではない。つまり、これらの方法の要素は、断りのない限り任意の順序で実行することができ、それらの方法が含む要素は、本明細書で開示されている要素よりも多い場合も少ない場合もある。例えば、特定の要素を、他の要素の前に、他の要素と同時に、または他の要素の後に実行または遂行することは本発明の範囲であると考えられる。
本発明または本発明の(複数の)実施形態の要素を導入する際に、英文中の「a」、「an」、「the」、および「said」という冠詞、したがって和文中の「1つの」、「その」、「前記」は、それらの要素が1つまたは複数あることを意味することを意図している。「備える」、「含む」、および「持つ、格納する、含む、備える」という言葉は、包含的であることを意図し、一覧に示されている要素以外にさらに要素がありうることを意味する。
上記の説明に照らして、本発明の複数の目的が達成され、他の有益な結果が得られることは理解されるであろう。
本発明の範囲から逸脱することなく上記の構成、製品、および方法にさまざまな変更を加えることが可能であるので、上記の説明に含まれ、付属の図面に示されているすべての事柄は、例示しているのであって、限定する意味はないと解釈するものとする。
付録A
(アクティビティの例およびその実装例)
アクティビティの例としては、Send、SendRequest、SendResponse、Receive、ReceiveRequest、ReceiveResponse、Code、Delay、Fault、Suspend、Terminate、InvokeSchedule、InvokeSchedules、Invoke WebService、DotNetEventSource、DotNetEventSink、Sequence、Parallel、While、ConditionalBranch、Conditional、Constrained、ConstrainedActivityGroup(CAG)、EventDriven、Listen、EventHandlers、ExceptionHandler、ExceptionHandlers、Compensate、CompensationHandler、Scope、およびScheduleがある。
アクティビティの実施例はそれぞれ、メタデータが関連付けられている。メタデータは、アクティビティに関連付けられたシリアライザによってワークフローの宣言的表現に移される。例えば、メタデータは、オプションのコードビサイドメソッドおよびオプションの相関関係集合のコレクションを含むことができる。
(Sendアクティビティ)
オーケストレーションエンジンは、メッセージを送信する3つのアクティビティ(例えば、Send、SendRequest、およびSendResponse)を備え、それぞれ異なる使用事例を対象とする。さらに、これら3つのアクティビティは、何らかのメタデータを共有するので、抽象基本クラスが3つのすべての上位クラスとして定義され使用される。
(Receiveアクティビティ)
オーケストレーションエンジンは、メッセージを受信する3つのアクティビティ(例えば、Receive、ReceiveRequest、およびReceiveResponse)を備え、それぞれ異なる使用事例を対象とする。さらに、これら3つのアクティビティは、何らかのメタデータを共有するので、抽象基本クラスが3つのすべての上位クラスとして定義され使用される。
(Code)
Codeアクティビティは、メタデータで指示されているコードビサイドメソッドを実行する。
(Delay)
Delayアクティビティは、その必須コードビサイドメソッドを実行してDateTime値を生成する。そのインスタンスデータのTimeoutValueプロパティをこの値に内部的に設定する。DateTimeが過去であれば、Delayは即座に完了する。そうでなければ、タイマーが発火したときにDelayに通知するようにタイマーサブスクリプションをセットアップする。タイマーが発火した場合、Delayは通知され、完了する。
(Fault)
Faultアクティビティは、その必須コードビサイドメソッドを実行してExceptionオブジェクトを生成する。その後、この例外をスローする。
(Suspend)
Suspendアクティビティは、現在のスケジュールインスタンスをサスペンドする。
(Terminate)
Terminateアクティビティは、現在のスケジュールインスタンスを終了する。
(Invoke Schedule)
InvokeScheduleアクティビティはスケジュールを呼び出す。
(Invoke Web Service)
プロキシクラスを介してWebサービスを呼び出して、パラメータを指定通り受け渡し、受信する。
(DotNetEvent Sink)
すでに呼び出されているスケジュールインスタンスにより指定イベントが発生したという通知が来るのを待つブロック。
(DotNetEvent Source)
指定イベントを発生し、即座に実行を完了する。
(Sequence)
Sequenceアクティビティは、一度に1つずつ、順序正しく子アクティビティの集合の実行を調整する。
(Parallel)
Parallelアクティビティは、子アクティビティの集合を同時実行する。
(While)
子アクティビティを繰り返し実行する。
(ConditionalBranch)
Sequenceの意味論に従って、子アクティビティを実行する。
(Conditional)
Conditionalアクティビティは、ConditionalBranchアクティビティの順序付き集合を含む。
(Constrained)
制約アクティビティグループ(CAG)に追加する目的でアクティビティをラップする。
メタデータ:
ラップされたアクティビティの使用可能ルール。
ラップされたアクティビティの使用不可ルール。
実行時プロパティ:
ラップされたアクティビティが少なくとも1回完了しているかどうかを示す整数値。
実行:
制約されているアクティビティの唯一許容される親はCAGである。CAG自体は、制約されているアクティビティで使用可能および使用不可ルールを用いて、いつ実行するかを決定する。ConstrainedアクティビティがCAGにより実行を指示された場合、それがラップするアクティビティを単に実行するだけである。
Performedプロパティは、制約アクティビティがその実行を完了するとインクリメントされる。親CAG自体が再実行される場合のみ0にリセットされる(例えば、WhileLoopまたは第2の外側のCAG内)。
(CAG(Constrained Activity Group))
子Constrainedアクティビティの集合の制約ベースの実行を行う。
メタデータ:
完了ルール。
実行:
CAGは、制約アクティビティのみを含む。CAGは、実行されると、その使用可能および使用不可制約の評価に基づいて子アクティビティを実行(および再実行)する。子アクティビティは、使用可能ルールが真と評価され、使用不可ルールが偽と評価された場合のみCAGによって実行される。一実施形態では、CAGは、部分ツリーを辿り、すべてのアクティビティについてアクティビティ状態変更にサブスクライブする(これは呼び出し境界のところで停止する)。CAGは、アクティビティが部分ツリーに動的に追加される場合にサブスクリプションを追加する。CAGは、その囲むスコープおよびすべての親スコープからスケジュール境界までについてデータ変更にサブスクライブする。これらのサブスクリプションは、CAG内のすべての制約されているアクティビティに対する使用可能および使用不可ルールを分析することにより決定される。エンジンは、データ変更の一括処理通知を配信し、CAGは、評価すべきルールを決定する。呼び出されたスケジュールにより加えられたデータ変更は、その呼び出しが完了するとポストされることに注意されたい。本発明では、さらに、それらの変数がコードビサイドメソッドを介して間接的にアクセスされる場合でもスコープ変数依存関係を識別する。したがって、変数が変更されたときにどの制約を再評価すべきかを決定する際に非常に特異的である可能性がある。宣言的ルールとコードルールの両方について、同じメカニズムが機能する。制約アクティビティに使用可能ルールがない場合、常に真とみなす。制約アクティビティに使用不可ルールがない場合、常にPerformed>0になるとみなす。したがって、制約アクティビティ上でルールが指定されていない場合、CAGが実行され、再実行されることがない場合にすぐに実行される。同様に、制約アクティビティ上でカスタム使用可能ルールのみが用意される場合、その使用可能ルールが真と評価されたときに実行され、そのときのみ実行される。制約ベースの再実行が望まれている場合、適切なカスタム使用不可ルールを、適切な使用可能ルールとともに用意しなければならない。以下の表は、制約アクティビティを実行するために必要な条件をまとめたものである。
Figure 2006107480
アクティビティの実行時に、そのアクティビティに対する使用不可ルールが真と評価される場合、CAGはそのアクティビティの実行をキャンセルする。これは、そのアクティビティの再実行を除外するわけではない。CAGの完了ルールが真と評価されるとすぐに、CAGは、現在実行中の子アクティビティを直ちにキャンセルした後、それ自体完了する。ルール(使用可能、使用不可、および完了)は、そのデータおよび状態変更依存関係に基づいて必要な場合であれば必ず評価される。
CAGは、PreviewとEditの2つのオペレーションモードを持つ。CAGデザイナがプレビューモードであれば、開発者は、フィルムストリップを表示するアクティビティを選択することだけできる。プロパティブラウザは、開発者がアクティビティを選択していた場合に、使用可能および使用不可ルールオプションを公開する。これにより、開発者は、CAGを使用してそれぞれのアクティビティに対して使用可能および使用不可ルールを設定することができる。CAGデザイナが設計モードであれば、開発者は、プレビューウィンドウ内のアクティビティ(Constrainedと呼ばれる)をクリックすることができる。プロパティブラウザは、特定のアクティビティにより通常は公開されるプロパティに加えて、使用可能および使用不可ルールオプション(例えば、プレビューモードに類似)を表示する。CAGデザイナは、以下に示されている複数の追加メニューオプションを備える。
Preview Activity:選択されたアクティビティが与えられると、CAGは設計モードからプレビューモードに切り換わる。
Edit Activity:選択されたアクティビティが与えられると、CAGはプレビューモードから設計モードに切り換わる。
View Previous Activity:フィルムストリップ内で現在選択されているアクティビティの直前のアクティビティに移動する。CAGフィルムストリップ内の第1のアクティビティに達すると、このメニューオプションは無効にされる。
View Next Activity:フィルムストリップ内で現在選択されているアクティビティの直後のアクティビティに移動する。CAGフィルムストリップ内の最後のアクティビティに達すると、このメニューオプションは無効にされる。
一実施形態では、CAG内のそれぞれのアクティビティは「制約アクティビティ」の中にラップされる。これは、その後、CAGのフィルムストリップを介して開発者に公開される。CAGがプレビューモードに入っており、開発者がこのアクティビティを選択して、それをコピーした場合、貼り付けられる(したがって、その結果のコンテキストメニューが有効にされる)唯一の場所は一実施形態において他のCAG内である。しかし、開発者がCAGモードを「Design」に切り換えて、プレビューペイン内でアクティビティを選択した場合、コピー、貼り付け、およびドラッグ&ドロップは、他のアクティビティと同様に有効にされる。
Task
1つまたは複数のプリンシパルにより実行される外部作業単位をモデル化する。
Event Driven
実行が「イベント」アクティビティによりトリガされるアクティビティをラップする。
Listen
n個の子EventDrivenアクティビティの1つを条件付きで実行する。
Event Handlers
EventHandlersアクティビティは、単純に、EventDrivenアクティビティの集合を保持し、これを関連するScopeが使用する。
Exception Handler
スコープに対するキャッチブロックを表すメタデータでアクティビティをラップする。
Exception Handlers
ExceptionHandlerアクティビティの順序付き集合をラップする。
Compensate
完了した子スコープを補正する。
Compensation Handler
スコープに対する補正ハンドラとして定義されている子アクティビティをラップする。
Scope
スコープは、トランザクション境界、例外処理境界、補正境界、イベント処理境界、およびメッセージ、変数、相関関係集合、およびチャネル宣言の境界(つまり、共有データ状態)である。Scope内のアクティビティの実行は順次であり、したがって、含まれているアクティビティは、Sequenceの場合のように、スコープが構築されたときに明示的に順序付けられる。
Schedule
Scheduleは、オーケストレーションエンジンが実行する唯一の最上位レベルのアクティビティである。
複合アクティビティ
制御フローを使用可能にする複合アクティビティ型は、Sequence、Parallel、Constrained Activity Group、Conditional、While、Listenである。さらに、ScopeおよびScheduleは、中にあるアクティビティの暗黙のシーケンス動作を含むコンテナとして動作する複合アクティビティ型である。
タスクおよび制御フロー複合アクティビティを含むワークフローの実施例を示す図である。 アクティビティ継承ツリーの実施例を示す図である。 コンポーネントモデルの実施例を示す図である。 コンポーネントモデルのライフサイクルの例を示す図である。 フローベースのワークフロー内の制約されたアクティビティグループを例示するブロック図である。 ワークフローの指定にウィザードに依存する、ワークフローオーサリングするための高水準アプリケーションユーザインターフェイスを示す図である。 ワークフローデザイナの実施例を示す図である。 送信アクティビティが後に続く受信アクティビティを含むオーケストレーションプログラムを示す図である。 スケジュール定義およびビジュアルワークフローと、ワークフローのXOMLによるシリアライゼーションされた表現と、ワークフローのコードビサイドとの間の関係を示す図である。 本発明を実装することができる1つの好適なコンピューティングシステム環境の一実施例を示すブロック図である。
符号の説明
130 コンピュータ
154 ハードディスクドライブ
156 磁気ディスクドライブ
160 光ディスクドライブ
178 モデム
188 モニタ
194 リモートコンピュータ

Claims (20)

  1. ワークフローモデルを表すコンピュータにより実装されるシステムであって、
    構造化された複数のアクティビティを有するワークフローであって、それぞれ制約が関連付けられている、構造化されていない複数のアクティビティを含むワークフローと、
    ランタイムエンジンであって、
    前記構造化された複数のアクティビティの各々を実行し、
    前記構造化されていない複数のアクティビティの各々について前記制約を評価し、
    関連付けられている前記制約の評価に応じて前記構造化されていない複数のアクティビティの各々を実行する
    ことにより前記ワークフローを実行するランタイムエンジンと
    を備えたことを特徴とするコンピュータにより実装されるシステム。
  2. 前記制約は、完了意味論を含むことを特徴とする請求項1に記載のコンピュータにより実装されるシステム。
  3. 前記制約は、入力パラメータを有し、前記ランタイムエンジンは、
    前記入力パラメータの変更を識別し、
    前記制約を再評価する
    ことにより前記ワークフローをさらに実行することを特徴とする請求項1に記載のコンピュータにより実装されるシステム。
  4. 前記構造化された複数のアクティビティのうちの1つは、前記構造化されていない複数のアクティビティのうちの1つを含むことを特徴とする請求項1に記載のコンピュータにより実装されるシステム。
  5. 表示領域と、
    前記構造化された複数のアクティビティを表示する前記表示領域のフローベースの領域と、
    前記構造化されていない複数のアクティビティを表示する前記表示領域のフローベースの領域内の制約ベースの領域と
    をさらに備えたことを特徴とする請求項1に記載のコンピュータにより実装されるシステム。
  6. 前記ユーザに対し、前記構造化された複数のアクティビティおよび前記構造化されていない複数のアクティビティを提示する手段をさらに備えたことを特徴とする請求項1に記載のコンピュータにより実装されるシステム。
  7. 前記ユーザから、前記構造化された複数のアクティビティの選択、前記構造化されていない複数のアクティビティの選択、および前記選択されたアクティビティに関連付けられたフロー指定を受け取る手段をさらに備えたことを特徴とする請求項1に記載のコンピュータにより実装されるシステム。
  8. 前記ワークフローを作成するための前記フロー指定に従って前記構造化された複数のアクティビティの選択および前記構造化されていない複数のアクティビティの選択をグループ化する手段をさらに備えたことを特徴とする請求項7に記載のコンピュータにより実装されるシステム。
  9. 前記作成されたワークフローを実行する手段をさらに備えたことを特徴とする請求項8に記載のコンピュータにより実装されるシステム。
  10. ビジネスプロセスを表すワークフローをモデル化するための方法であって、
    複数のアクティビティをユーザに提示するステップと、
    前記ユーザから前記提示されたアクティビティの選択およびそれに関連付けられたフロー指定を受け取るステップと、
    前記受け取ったフロー指定に従ってアクティビティの前記受け取った選択をグループ化するステップと、
    前記ユーザから前記提示されたアクティビティの他の選択およびそれに関連付けられた制約を受け取るステップと、
    ワークフローを作成するために前記提示されたアクティビティの前記受け取った他の選択とアクティビティの前記グループ化された選択とをマージするステップと
    を備えたことを特徴とする方法。
  11. 前記制約を定義するステップをさらに備えたことを特徴とする請求項10に記載の方法。
  12. 前記制約を評価するステップと、
    前記評価に応じて前記提示されたアクティビティの前記他の選択から前記アクティビティを実行することにより前記作成されたワークフローを実行するステップと
    をさらに備えたことを特徴とする請求項10に記載の方法。
  13. 前記フロー指定に従ってアクティビティの前記受け取った選択で前記アクティビティを実行することにより前記作成されたワークフローを実行するステップをさらに備えたことを特徴とする請求項10に記載の方法。
  14. 前記複数のアクティビティを前記ユーザに提示するステップは、前記複数のアクティビティをディスプレイ上に表示するステップを含むことを特徴とする請求項10に記載の方法。
  15. 1つまたは複数のコンピュータ読み取り可能媒体は、請求項10に記載の方法を実行するコンピュータ実行可能命令を有することを特徴とする請求項10に記載の方法。
  16. フローベースの領域および制約ベースの領域を持つワークフローをモデル化するコンピュータ実行可能コンポーネントを含む1つまたは複数のコンピュータ読み取り可能媒体であって、前記コンポーネントは、
    複数のアクティビティをユーザに提示する表示コンポーネントと、
    前記ユーザから、前記提示されたアクティビティの選択およびそれに関連付けられたフロー指定を受け取るインターフェイスコンポーネントであって、前記ユーザから、前記提示されたアクティビティの他の選択およびそれぞれに関連付けられた制約をさらに受け取るインターフェイスコンポーネントと、
    前記受け取ったフロー指定に従ってアクティビティの前記受け取った選択をグループ化するデザイナコンポーネントであって、ワークフローを作成するための前記提示されたアクティビティの前記受け取った他の選択とアクティビティの前記グループ化された選択とをさらにマージするデザイナコンポーネントと
    を備えたことを特徴とするコンピュータ読み取り可能媒体。
  17. 前記制約を評価し、
    前記評価に応じて前記提示されたアクティビティの前記他の選択から前記アクティビティを実行する
    ことにより前記作成されたワークフローを実行するランタイムコンポーネントをさらに備えたことを特徴とする請求項16に記載のコンピュータ読み取り可能媒体。
  18. 前記フロー指定に従ってアクティビティの前記受け取った選択から前記アクティビティを実行することにより、前記作成されたワークフローを実行するランタイムコンポーネントをさらに備えたことを特徴とする請求項16に記載のコンピュータ読み取り可能媒体。
  19. 前記表示コンポーネント、前記インターフェイスコンポーネント、および前記デザイナコンポーネントは、アプリケーションプログラムの実行環境内で実行されることを特徴とする請求項16に記載のコンピュータ読み取り可能媒体。
  20. 前記制約は、完了意味論を含むことを特徴とする請求項16に記載のコンピュータ読み取り可能媒体。

JP2005267391A 2004-10-01 2005-09-14 フローベースおよび制約ベースのワークフローをオーサリングし、実行するための統一モデル Expired - Fee Related JP5173128B2 (ja)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US61554204P 2004-10-01 2004-10-01
US60/615,542 2004-10-01
US11/046,988 US7805324B2 (en) 2004-10-01 2005-01-31 Unified model for authoring and executing flow-based and constraint-based workflows
US11/046,988 2005-01-31

Publications (2)

Publication Number Publication Date
JP2006107480A true JP2006107480A (ja) 2006-04-20
JP5173128B2 JP5173128B2 (ja) 2013-03-27

Family

ID=35455944

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2005267391A Expired - Fee Related JP5173128B2 (ja) 2004-10-01 2005-09-14 フローベースおよび制約ベースのワークフローをオーサリングし、実行するための統一モデル

Country Status (4)

Country Link
US (3) US7805324B2 (ja)
EP (1) EP1643431A1 (ja)
JP (1) JP5173128B2 (ja)
KR (1) KR20060087998A (ja)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008140135A (ja) * 2006-12-01 2008-06-19 Mitsubishi Electric Corp ワークフロー生成装置及びワークフロー生成方法及びプログラム
JP2008276394A (ja) * 2007-04-26 2008-11-13 Nippon Telegr & Teleph Corp <Ntt> プロセスモデル作成システム、方法及びそのプログラム
JP2011504627A (ja) * 2007-11-23 2011-02-10 インターナショナル・ビジネス・マシーンズ・コーポレーション ビジネス・プロセスを再使用可能サービスに変換するためのシステム、方法、およびコンピュータ・プログラム
JP2017532674A (ja) * 2014-10-06 2017-11-02 スイス リインシュランス カンパニー リミテッド 一致度測定量に基づくデータオブジェクトのパターン認識ベースの監視および制御的処理のためのシステムと方法

Families Citing this family (146)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2423382A (en) * 2005-01-27 2006-08-23 Microgen Plc Generating business process programs using a symbolic representation of operators in a graphical interface
US7870162B2 (en) * 2005-07-29 2011-01-11 Sap Ag Method for generating properly formed expressions
US7734625B2 (en) * 2005-07-29 2010-06-08 Sap, Ag Method for performing expression-based validation
US7725483B2 (en) * 2005-07-29 2010-05-25 Sap, Ag Method for improved processing of expression-based data
US7979472B2 (en) * 2005-07-29 2011-07-12 Sap Ag Method for conditionally branching a validation
KR100825722B1 (ko) * 2005-12-08 2008-04-29 한국전자통신연구원 Bpel4ws 프로세스를 칼라드 페트리넷으로 변환하는방법 및 그 장치
US8402426B2 (en) * 2005-12-30 2013-03-19 Sap Ag Architectural design for make to stock application software
US8380553B2 (en) * 2005-12-30 2013-02-19 Sap Ag Architectural design for plan-driven procurement application software
US8448137B2 (en) 2005-12-30 2013-05-21 Sap Ag Software model integration scenarios
US8660904B2 (en) * 2005-12-30 2014-02-25 Sap Ag Architectural design for service request and order management application software
US8396731B2 (en) * 2005-12-30 2013-03-12 Sap Ag Architectural design for service procurement application software
US8407664B2 (en) 2005-12-30 2013-03-26 Sap Ag Software model business objects
US8316344B2 (en) * 2005-12-30 2012-11-20 Sap Ag Software model deployment units
US8676617B2 (en) * 2005-12-30 2014-03-18 Sap Ag Architectural design for self-service procurement application software
US20080275713A9 (en) * 2005-12-30 2008-11-06 Shai Alfandary Architectural design for physical inventory application software
US8321831B2 (en) * 2005-12-30 2012-11-27 Sap Ag Architectural design for internal projects application software
US8327319B2 (en) * 2005-12-30 2012-12-04 Sap Ag Software model process interaction
US8370794B2 (en) * 2005-12-30 2013-02-05 Sap Ag Software model process component
US8326703B2 (en) 2005-12-30 2012-12-04 Sap Ag Architectural design for product catalog management application software
JP2007282199A (ja) * 2006-03-15 2007-10-25 Ricoh Co Ltd フロー実装システム、フロー実装方法、フロー実装プログラム及び画像処理装置
US8396761B2 (en) * 2006-03-30 2013-03-12 Sap Ag Providing product catalog software application as enterprise services
US8396749B2 (en) 2006-03-30 2013-03-12 Sap Ag Providing customer relationship management application as enterprise services
US8538864B2 (en) * 2006-03-30 2013-09-17 Sap Ag Providing payment software application as enterprise services
US8326702B2 (en) * 2006-03-30 2012-12-04 Sap Ag Providing supplier relationship management software application as enterprise services
US8442850B2 (en) * 2006-03-30 2013-05-14 Sap Ag Providing accounting software application as enterprise services
US8438119B2 (en) * 2006-03-30 2013-05-07 Sap Ag Foundation layer for services based enterprise software architecture
US8321832B2 (en) * 2006-03-31 2012-11-27 Sap Ag Composite application modeling
US7603334B2 (en) * 2006-04-06 2009-10-13 Microsoft Corporation Code coverage of declarative objects
US8312416B2 (en) 2006-04-13 2012-11-13 Sap Ag Software model business process variant types
US8396736B2 (en) * 2006-04-21 2013-03-12 Process Assets, Llc Systems and methods for providing documentation having succinct communication with scalability
US20110081632A1 (en) * 2006-10-12 2011-04-07 Wipro Limited System and method for distributed agile
DE102006051189A1 (de) * 2006-10-30 2008-05-08 Siemens Ag Verfahren und System zum Ausführen und Konfigurieren von Applikationen abhängig von einer Einsatzumgebung
US8271941B2 (en) * 2006-10-31 2012-09-18 International Business Machines Corporation Method and apparatus for representing and configuring flexible and extensible presentation patterns
KR100932896B1 (ko) * 2006-12-08 2009-12-21 한국전자통신연구원 웹서비스 기반의 규칙 처리를 위한 디바이스 및 그 방법
EP1936494B1 (en) 2006-12-21 2011-08-03 Software AG Method for runtime execution of one or more tasks defined in a workflow process language
US8386999B2 (en) * 2007-08-09 2013-02-26 Infonovus Technologies, Llc Method and system for analyzing a software design
US8250534B2 (en) * 2007-08-09 2012-08-21 Infonovus Technologies, Llc Method and system for constructing a software application from a complete and consistent specification in a software development process
US8131663B1 (en) 2007-10-12 2012-03-06 Bonamy Taylor Apparatus for generating software logic rules by flowchart design
US8826077B2 (en) 2007-12-28 2014-09-02 International Business Machines Corporation Defining a computer recovery process that matches the scope of outage including determining a root cause and performing escalated recovery operations
US8341014B2 (en) * 2007-12-28 2012-12-25 International Business Machines Corporation Recovery segments for computer business applications
US8346931B2 (en) * 2007-12-28 2013-01-01 International Business Machines Corporation Conditional computer runtime control of an information technology environment based on pairing constructs
US20090171703A1 (en) * 2007-12-28 2009-07-02 International Business Machines Corporation Use of multi-level state assessment in computer business environments
US8782662B2 (en) * 2007-12-28 2014-07-15 International Business Machines Corporation Adaptive computer sequencing of actions
US8677174B2 (en) * 2007-12-28 2014-03-18 International Business Machines Corporation Management of runtime events in a computer environment using a containment region
US8990810B2 (en) 2007-12-28 2015-03-24 International Business Machines Corporation Projecting an effect, using a pairing construct, of execution of a proposed action on a computing environment
US20090171708A1 (en) * 2007-12-28 2009-07-02 International Business Machines Corporation Using templates in a computing environment
US9558459B2 (en) * 2007-12-28 2017-01-31 International Business Machines Corporation Dynamic selection of actions in an information technology environment
US8326910B2 (en) * 2007-12-28 2012-12-04 International Business Machines Corporation Programmatic validation in an information technology environment
US20090172669A1 (en) * 2007-12-28 2009-07-02 International Business Machines Corporation Use of redundancy groups in runtime computer management of business applications
US8365185B2 (en) 2007-12-28 2013-01-29 International Business Machines Corporation Preventing execution of processes responsive to changes in the environment
US20090171730A1 (en) * 2007-12-28 2009-07-02 International Business Machines Corporation Non-disruptively changing scope of computer business applications based on detected changes in topology
US8428983B2 (en) 2007-12-28 2013-04-23 International Business Machines Corporation Facilitating availability of information technology resources based on pattern system environments
US8375244B2 (en) 2007-12-28 2013-02-12 International Business Machines Corporation Managing processing of a computing environment during failures of the environment
US8763006B2 (en) * 2007-12-28 2014-06-24 International Business Machines Corporation Dynamic generation of processes in computing environments
US8447859B2 (en) * 2007-12-28 2013-05-21 International Business Machines Corporation Adaptive business resiliency computer system for information technology environments
US8682705B2 (en) * 2007-12-28 2014-03-25 International Business Machines Corporation Information technology management based on computer dynamically adjusted discrete phases of event correlation
US8868441B2 (en) * 2007-12-28 2014-10-21 International Business Machines Corporation Non-disruptively changing a computing environment
US8751283B2 (en) * 2007-12-28 2014-06-10 International Business Machines Corporation Defining and using templates in configuring information technology environments
US20090171811A1 (en) * 2007-12-31 2009-07-02 Peter Markus A Architectural Design For Product Catalog Management Application Software
US8671032B2 (en) 2007-12-31 2014-03-11 Sap Ag Providing payment software application as enterprise services
US8510143B2 (en) 2007-12-31 2013-08-13 Sap Ag Architectural design for ad-hoc goods movement software
US8671034B2 (en) * 2007-12-31 2014-03-11 Sap Ag Providing human capital management software application as enterprise services
US20090171758A1 (en) * 2007-12-31 2009-07-02 Shai Alfandary Architectural design for physical inventory application software
US8447657B2 (en) * 2007-12-31 2013-05-21 Sap Ag Architectural design for service procurement application software
US8671033B2 (en) * 2007-12-31 2014-03-11 Sap Ag Architectural design for personnel events application software
US8315900B2 (en) * 2007-12-31 2012-11-20 Sap Ag Architectural design for self-service procurement application software
US8401936B2 (en) 2007-12-31 2013-03-19 Sap Ag Architectural design for expense reimbursement application software
US20090198548A1 (en) * 2008-02-05 2009-08-06 Mathias Kohler System to avoid policy-based deadlocks in workflow execution
US20090222277A1 (en) * 2008-03-03 2009-09-03 Microsoft Corporation Defining and implementing custom task processes
EP2107514A1 (en) * 2008-03-31 2009-10-07 British Telecommunications Public Limited Company Process monitoring
US20100004964A1 (en) * 2008-07-07 2010-01-07 Robert Heidasch Intention Driven Business Process Modeling
US8380549B2 (en) * 2008-09-18 2013-02-19 Sap Ag Architectural design for embedded support application software
US8326706B2 (en) * 2008-09-18 2012-12-04 Sap Ag Providing logistics execution application as enterprise services
US20100082497A1 (en) * 2008-09-18 2010-04-01 Sap Ag Providing Foundation Application as Enterprise Services
US8315926B2 (en) * 2008-09-18 2012-11-20 Sap Ag Architectural design for tax declaration application software
US8401928B2 (en) 2008-09-18 2013-03-19 Sap Ag Providing supplier relationship management software application as enterprise services
US20100070395A1 (en) * 2008-09-18 2010-03-18 Andreas Elkeles Architectural design for payroll processing application software
US8352338B2 (en) * 2008-09-18 2013-01-08 Sap Ag Architectural design for time recording application software
US8386325B2 (en) * 2008-09-18 2013-02-26 Sap Ag Architectural design for plan-driven procurement application software
US8595077B2 (en) * 2008-09-18 2013-11-26 Sap Ag Architectural design for service request and order management application software
US8374896B2 (en) * 2008-09-18 2013-02-12 Sap Ag Architectural design for opportunity management application software
US20100070336A1 (en) * 2008-09-18 2010-03-18 Sap Ag Providing Customer Relationship Management Application as Enterprise Services
US8321250B2 (en) * 2008-09-18 2012-11-27 Sap Ag Architectural design for sell from stock application software
US8818884B2 (en) 2008-09-18 2014-08-26 Sap Ag Architectural design for customer returns handling application software
US8214795B2 (en) * 2008-11-26 2012-07-03 Optumsoft, Inc. Efficient automated translation of procedures in constraint-based language
US8738476B2 (en) 2008-12-03 2014-05-27 Sap Ag Architectural design for selling standardized services application software
US8401908B2 (en) * 2008-12-03 2013-03-19 Sap Ag Architectural design for make-to-specification application software
US8321306B2 (en) 2008-12-03 2012-11-27 Sap Ag Architectural design for selling project-based services application software
US8321308B2 (en) * 2008-12-03 2012-11-27 Sap Ag Architectural design for manual invoicing application software
US8311904B2 (en) * 2008-12-03 2012-11-13 Sap Ag Architectural design for intra-company stock transfer application software
US20100153239A1 (en) * 2008-12-11 2010-06-17 Sap Ag Providing accounting software application as enterprise services
US8671035B2 (en) * 2008-12-11 2014-03-11 Sap Ag Providing payroll software application as enterprise services
US8656346B2 (en) * 2009-02-18 2014-02-18 Microsoft Corporation Converting command units into workflow activities
US8683432B2 (en) * 2009-03-20 2014-03-25 Microsoft Corporation Providing execution context in continuation based runtimes
US8751284B2 (en) 2009-04-30 2014-06-10 United Parcel Service Of America, Inc. Systems and methods for a real-time workflow platform using Petri net model mappings
US8332811B2 (en) * 2009-04-30 2012-12-11 United Parcel Service Of America, Inc. Systems and methods for generating source code for workflow platform
US20100293538A1 (en) * 2009-05-15 2010-11-18 Microsoft Corporation Dynamic program updating in a continuation based runtime
CA2669603A1 (en) * 2009-06-18 2010-12-18 Ibm Canada Limited - Ibm Canada Limitee Graphical modeling tool
US9146784B2 (en) * 2009-08-03 2015-09-29 Oracle International Corporation Invocation of web services based on a policy file including processes of a workflow associated with user roles
FR2953048A1 (fr) * 2009-11-23 2011-05-27 Access Commerce Dispositif et procede d'elaboration d'un modele numerique de produit manufacture
US9122461B2 (en) * 2009-12-11 2015-09-01 Microsoft Technology Licensing, Llc Method and system for iteratively partitioning and validating program trees into environments at visibility space granularity
US8484610B2 (en) * 2010-03-17 2013-07-09 Microsoft Corporation Workflow execution model
US8266186B2 (en) * 2010-04-30 2012-09-11 International Business Machines Corporation Semantic model association between data abstraction layer in business intelligence tools
US8863001B2 (en) 2010-06-11 2014-10-14 Microsoft Corporation Web application home button
US8671384B2 (en) 2010-06-11 2014-03-11 Microsoft Corporation Web application pinning including task bar pinning
US9164671B2 (en) * 2010-06-11 2015-10-20 Microsoft Technology Licensing, Llc Web application navigation domains
US8793650B2 (en) 2010-06-11 2014-07-29 Microsoft Corporation Dynamic web application notifications including task bar overlays
US20120023454A1 (en) * 2010-07-20 2012-01-26 Sap Ag Schedule management using linked events
US9135586B2 (en) * 2010-10-28 2015-09-15 Sap Se System for dynamic parallel looping of repetitive tasks during execution of process-flows in process runtime
CN102467504B (zh) * 2010-11-03 2014-01-01 南京莱斯信息技术股份有限公司 一种基于关系数据库的工作流引擎系统的设计方法
US8538793B2 (en) * 2011-02-17 2013-09-17 Infosys Limited System and method for managing real-time batch workflows
US9123002B2 (en) * 2011-05-27 2015-09-01 Abbott Informatics Corporation Graphically based method for developing rules for managing a laboratory workflow
US9659266B2 (en) 2011-07-14 2017-05-23 International Business Machines Corporation Enterprise intelligence (‘EI’) management in an EI framework
US9639815B2 (en) * 2011-07-14 2017-05-02 International Business Machines Corporation Managing processes in an enterprise intelligence (‘EI’) assembly of an EI framework
US9646278B2 (en) 2011-07-14 2017-05-09 International Business Machines Corporation Decomposing a process model in an enterprise intelligence (‘EI’) framework
US11042514B2 (en) * 2011-08-23 2021-06-22 Graeme Perkins Collaboration computer system
CN102982396B (zh) * 2011-09-06 2017-12-26 Sap欧洲公司 通用过程建模框架
US20130110730A1 (en) * 2011-10-28 2013-05-02 International Business Machines Corporation Integration of computerized project planning and project diagramming
US8775395B2 (en) 2011-11-11 2014-07-08 Hewlett-Packard Development Company, L.P. Managing document workflow
US8689060B2 (en) * 2011-11-15 2014-04-01 Sap Ag Process model error correction
US8869107B2 (en) 2012-01-12 2014-10-21 Microsoft Corporation Declarative dynamic control flow in continuation-based runtime
WO2014014443A1 (en) * 2012-07-16 2014-01-23 Hewlett-Packard Development Company L.P. Workflow compilation
US20140278631A1 (en) * 2013-03-15 2014-09-18 Ram Karuppusamy System and method for managing business functions for one or more companies
US9600792B2 (en) * 2013-04-11 2017-03-21 Siemens Aktiengesellschaft Method and apparatus for generating an engineering workflow
US20140316841A1 (en) * 2013-04-23 2014-10-23 Kofax, Inc. Location-based workflows and services
US9158932B2 (en) 2013-05-08 2015-10-13 Sap Se Modeled authorization check implemented with UI framework
US9946516B2 (en) 2014-03-14 2018-04-17 Starbucks Corporation Application workflow framework
US10755217B2 (en) * 2014-04-05 2020-08-25 Wearable Intelligence, Inc. Systems and methods for digital workflow and communication
US9729606B2 (en) * 2014-09-10 2017-08-08 Benefitfocus.Com, Inc. Systems and methods for a metadata driven user interface framework
US10867273B2 (en) * 2014-09-26 2020-12-15 Oracle International Corporation Interface for expanding logical combinations based on relative placement
JP5809382B1 (ja) * 2014-12-10 2015-11-10 楽天株式会社 サーバ、表示制御方法、および表示制御プログラム
US9311083B1 (en) * 2015-04-10 2016-04-12 CypressX LLC Machine interface configuration system for coerced inconsistencies on different machine platforms
US9946983B1 (en) * 2015-06-10 2018-04-17 Amazon Technologies, Inc. Rule-based electronic workflow processing
EP3329366B1 (en) * 2015-07-31 2021-07-07 WiseTech Global Limited Systems and methods for executable content and executable content flow creation
US10528327B2 (en) 2015-11-23 2020-01-07 Microsoft Technology Licensing Llc Workflow development system with ease-of-use features
US10768975B2 (en) * 2016-03-04 2020-09-08 Ricoh Company, Ltd. Information processing system, information processing apparatus, and information processing method
US10248385B1 (en) * 2017-11-30 2019-04-02 International Business Machines Corporation Extracting mobile application workflow from design files
US11087259B2 (en) * 2018-07-12 2021-08-10 Nintex UK Ltd. Business designer
US11762911B2 (en) 2018-07-25 2023-09-19 Vmware, Inc. Utilizing search capabilities for configuring input parameters of a workflow engine
US11120217B2 (en) * 2018-12-18 2021-09-14 Micro Focus Llc Natural language translation-based orchestration workflow generation
US11294555B2 (en) * 2019-04-24 2022-04-05 Appian Corporation Intelligent manipulation of dynamic declarative interfaces
WO2021024145A1 (en) * 2019-08-02 2021-02-11 UST Global (Singapore) Pte. Ltd. Systems and methods for process mining using unsupervised learning and for automating orchestration of workflows
US11916918B2 (en) * 2020-04-14 2024-02-27 Salesforce, Inc. System mode override during flow execution
US20220129818A1 (en) * 2020-10-22 2022-04-28 Open Text Corporation Lifecycle fragment and dynamic discovery of lifecycle fragment at runtime
US11755543B2 (en) * 2020-12-29 2023-09-12 International Business Machines Corporation Optimization of workflows with dynamic file caching
US11451448B1 (en) 2021-06-09 2022-09-20 Bank Of America Corporation System for cognitive technical architecture integration

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH09204467A (ja) * 1996-01-24 1997-08-05 Nippon Telegr & Teleph Corp <Ntt> 統合ワークフロー管理方法及びシステム
JPH11296544A (ja) * 1998-04-15 1999-10-29 Fujitsu Ltd 構造化データ管理システム及び構造化データ管理プログラムを記録したコンピュータ読み取り可能な記録媒体
JPH11316780A (ja) * 1998-05-06 1999-11-16 Hitachi Ltd 階層化されたビジネスプロセス定義を有するワークフローシステム
JP2001202408A (ja) * 2000-01-19 2001-07-27 Fuji Xerox Co Ltd 要素編成支援装置、要素編成支援方法及び記録媒体
JP2001282970A (ja) * 2000-03-29 2001-10-12 Hitachi Software Eng Co Ltd ワークフロー管理システム
JP2003528358A (ja) * 1998-08-24 2003-09-24 富士通株式会社 ワークフローシステムおよび方法
WO2003091824A2 (en) * 2002-04-24 2003-11-06 Sap Ag Methods and computer systems for providing or setting access of a user to resources in a computer system
JP2004164594A (ja) * 2002-07-19 2004-06-10 Microsoft Corp 長時間のトランザクションを管理する方法およびシステム
JP2004206694A (ja) * 2002-12-10 2004-07-22 Hewlett-Packard Development Co Lp 要件ベースワークフローを動的に順序付けするシステムおよび方法

Family Cites Families (111)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5301320A (en) * 1991-06-28 1994-04-05 Digital Equipment Corporation Workflow management and control system
GB2263988B (en) 1992-02-04 1996-05-22 Digital Equipment Corp Work flow management system and method
WO1994018620A1 (en) * 1993-02-08 1994-08-18 Action Technologies, Inc. Method and apparatus for managing business processes
US5734837A (en) * 1994-01-14 1998-03-31 Action Technologies, Inc. Method and apparatus for building business process applications in terms of its workflows
EP0697652A1 (en) 1994-08-16 1996-02-21 International Business Machines Corporation Method for re-executing a process on a computer system for fault correction
JP3267066B2 (ja) 1994-09-30 2002-03-18 富士ゼロックス株式会社 ワークフロー支援システム
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
WO1997023837A2 (en) * 1995-12-22 1997-07-03 Xerox Corporation Process support using system and user states
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
GB9623954D0 (en) * 1996-11-15 1997-01-08 Xerox Corp Systems and methods providing flexible representations of work
US5870545A (en) 1996-12-05 1999-02-09 Hewlett-Packard Company System and method for performing flexible workflow process compensation in a distributed workflow management system
EP0854431A3 (en) 1997-01-20 2001-03-07 International Business Machines Corporation Events as activities in process models of workflow management systems
US5960404A (en) * 1997-08-28 1999-09-28 International Business Machines Corp. Mechanism for heterogeneous, peer-to-peer, and disconnected workflow operation
US6016394A (en) * 1997-09-17 2000-01-18 Tenfold Corporation Method and system for database application software creation requiring minimal programming
US6807583B2 (en) * 1997-09-24 2004-10-19 Carleton University Method of determining causal connections between events recorded during process execution
US6621505B1 (en) * 1997-09-30 2003-09-16 Journee Software Corp. Dynamic process-based enterprise computing system and method
US6225998B1 (en) * 1997-12-02 2001-05-01 Aspect Communications Visual design of workflows for transaction processing
US6115646A (en) * 1997-12-18 2000-09-05 Nortel Networks Limited Dynamic and generic process automation system
US6078982A (en) 1998-03-24 2000-06-20 Hewlett-Packard Company Pre-locking scheme for allowing consistent and concurrent workflow process execution in a workflow management system
US6430538B1 (en) 1998-04-30 2002-08-06 Enterworks Workflow management system, method and medium with personal subflows
US6567783B1 (en) * 1998-06-05 2003-05-20 I2 Technologies Us, Inc. Communication across one or more enterprise boundaries regarding the occurrence of a workflow event
US6397192B1 (en) * 1998-06-05 2002-05-28 I2 Technologies Us, Inc. Synchronizing one or more workflows using one or more synchronization-join activities that include synchronization logic
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
US20010039594A1 (en) * 1999-02-03 2001-11-08 Park Britt H. Method for enforcing workflow processes for website development and maintenance
WO2000054202A2 (en) 1999-03-11 2000-09-14 Paysys International, Inc. Methods and systems for developing applications and for interfacing with users
JP2000348111A (ja) 1999-06-01 2000-12-15 Hitachi Ltd ワークフロー管理方法及びその実施装置並びにその処理プログラムを記録した記録媒体
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
WO2001075568A1 (en) * 2000-03-30 2001-10-11 Ideogramic Aps Method for gesture based modeling
US6768986B2 (en) * 2000-04-03 2004-07-27 Business Objects, S.A. Mapping of an RDBMS schema onto a multidimensional data model
US6964034B1 (en) * 2000-04-20 2005-11-08 International Business Machines Corporation Application development server and a mechanism for providing different views into the same constructs within a strongly encapsulated environment
US6625602B1 (en) * 2000-04-28 2003-09-23 Microsoft Corporation Method and system for hierarchical transactions and compensation
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
US20020032692A1 (en) * 2000-09-08 2002-03-14 Atsuhito Suzuki Workflow management method and workflow management system of controlling workflow process
US6604104B1 (en) * 2000-10-02 2003-08-05 Sbi Scient Inc. System and process for managing data within an operational data store
EP1323016A4 (en) * 2000-10-02 2006-09-27 Internat Projects Consultancy AUTOMATED SYSTEM AND METHOD FOR LOAN PROCESSING
US6954747B1 (en) * 2000-11-14 2005-10-11 Microsoft Corporation Methods for comparing versions of a program
JP2004514982A (ja) * 2000-11-22 2004-05-20 リケア・インコーポレイテッド 疾患管理を医師ワークフローにて統合するためのシステム及び方法
US7653566B2 (en) * 2000-11-30 2010-01-26 Handysoft Global Corporation Systems and methods for automating a process of business decision making and workflow
US7174534B2 (en) * 2001-01-22 2007-02-06 Symbol Technologies, Inc. Efficient system and method for running and analyzing multi-channel, multi-modal applications
US20020161859A1 (en) 2001-02-20 2002-10-31 Willcox William J. Workflow engine and system
US7240324B2 (en) * 2001-02-28 2007-07-03 Hewlett-Packard Development Company, L.P. Event-based scheduling method and system for workflow activities
US20020147606A1 (en) * 2001-03-14 2002-10-10 Norbert Hoffmann Application development method
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
SG121719A1 (en) * 2001-07-19 2006-05-26 Oce Tech Bv Method for creating a workflow
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
US7408658B2 (en) 2001-12-04 2008-08-05 Hewlett-Packard Development Company, L.P. Generation and usage of workflows for processing data on a printing device
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
US7127716B2 (en) * 2002-02-13 2006-10-24 Hewlett-Packard Development Company, L.P. Method of load balancing a distributed workflow management system
US7441197B2 (en) * 2002-02-26 2008-10-21 Global Asset Protection Services, Llc Risk management information interface system and associated methods
US20030233374A1 (en) * 2002-03-14 2003-12-18 Ulrich Spinola Dynamic workflow process
DE10215653A1 (de) 2002-04-09 2003-11-06 Bernhard Voslamber Verfahren und Anordung zur automatischen Erzeugung von Programmcodeabschnitten sowie ein entsprechendes Computerprogrammprodukt und ein entsprechendes computerlesbares Speichermedium
US20030195762A1 (en) 2002-04-12 2003-10-16 David Gleason Automated workflow
WO2003089995A2 (en) * 2002-04-15 2003-10-30 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
US7225425B2 (en) 2002-08-29 2007-05-29 Sap Aktiengesellschaft Rapid application integration
US20040078105A1 (en) * 2002-09-03 2004-04-22 Charles Moon System and method for workflow process management
US7398525B2 (en) * 2002-10-21 2008-07-08 International Business Machines Corporation Resource scheduling in workflow management systems
US8056046B2 (en) * 2002-10-22 2011-11-08 The Boeing Company Integrated system-of-systems modeling environment and related methods
US7437703B2 (en) * 2002-10-25 2008-10-14 Sap Ag Enterprise multi-agent software system with services able to call multiple engines and scheduling capability
US7062537B2 (en) * 2002-11-25 2006-06-13 Microsoft Corporation Workflow services architecture
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
US7885840B2 (en) 2003-01-07 2011-02-08 Sap Aktiengesellschaft System and method of flexible workflow management
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
US7423656B2 (en) * 2003-03-11 2008-09-09 National University Of Singapore Method and apparatus for generating morphing sequence
JP5154798B2 (ja) * 2003-05-07 2013-02-27 エスアーペー アーゲー 構造化ワークフローシステム及びコンピュータプログラム
EP1639458A4 (en) * 2003-06-12 2010-05-05 Reuters America BUSINESS PROCESS AUTOMATION
US20050066002A1 (en) * 2003-07-31 2005-03-24 Arnold Teres Workflow compatible healthcare information message communication system
US8645420B2 (en) * 2003-08-05 2014-02-04 Accenture Global Services Limited Methodology framework and delivery vehicle
US7693973B2 (en) * 2003-08-28 2010-04-06 International Business Machines Corporation Pluggable state meta-data processors based on meta information modeling in a service oriented architecture
EP1558997A1 (en) * 2003-09-02 2005-08-03 Infoglide Software Corporation System and method for workflow process management
CA2443454A1 (en) 2003-09-11 2005-03-11 Teamplate Inc. Data binding method in workflow system
CA2442796A1 (en) * 2003-09-26 2005-03-26 Ibm Canada Limited - Ibm Canada Limitee Binding a workflow engine to a data model
US7548334B2 (en) * 2003-10-15 2009-06-16 Canon Kabushiki Kaisha User interface for creation and editing of variable data documents
ES2328924T3 (es) * 2003-10-15 2009-11-19 Canon Kabushiki Kaisha Previsualizacion y revision selectiva de documentos o esquemas que contienen datos variables.
US7554689B2 (en) * 2003-10-15 2009-06-30 Canon Kabushiki Kaisha Document layout method
US7093207B1 (en) * 2003-11-17 2006-08-15 Kla-Tencor Technologies Corporation Data analysis flow engine
US7519960B2 (en) * 2003-12-19 2009-04-14 International Business Machines Corporation Method and system for debugging business process flow
US7650344B2 (en) * 2004-02-09 2010-01-19 Coremetrics, Inc. System and method of managing software product-line customizations
US7197502B2 (en) * 2004-02-18 2007-03-27 Friendly Polynomials, Inc. Machine-implemented activity management system using asynchronously shared activity data objects and journal data items
US20050210455A1 (en) * 2004-03-18 2005-09-22 International Business Machines Corporation Method for generating an executable workflow code from an unstructured cyclic process model
US20060064335A1 (en) * 2004-08-17 2006-03-23 International Business Machines Corporation Method, system, and storage medium for performing business process modeling
US7451432B2 (en) 2004-10-01 2008-11-11 Microsoft Corporation Transformation of componentized and extensible workflow to a declarative format
US7631291B2 (en) * 2004-10-01 2009-12-08 Microsoft Corporation Declarative representation for an extensible workflow model
US7464366B2 (en) 2004-10-01 2008-12-09 Microsoft Corporation Programming interface for a componentized and extensible workflow model
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
US7433887B2 (en) * 2004-12-29 2008-10-07 Microsoft Corporation Method and apparatus for metadata driven business logic processing
US7343364B2 (en) * 2005-02-04 2008-03-11 Efunds Corporation Rules-based system architecture and systems using the same
US7493594B2 (en) * 2005-03-14 2009-02-17 Research In Motion System and method for designing component based applications
WO2006110981A1 (en) * 2005-04-18 2006-10-26 Research In Motion Limited System and method for enabling assisted visual development of workflow for application tasks
US20060241954A1 (en) * 2005-04-22 2006-10-26 International Business Machines Corporation Method and system for adaptive action management for business solutions
US7983943B2 (en) * 2005-05-27 2011-07-19 Xerox Corporation Method and system for workflow process node synchronization
US20090299766A1 (en) * 2008-05-30 2009-12-03 International Business Machines Corporation System and method for optimizing medical treatment planning and support in difficult situations subject to multiple constraints and uncertainties

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH09204467A (ja) * 1996-01-24 1997-08-05 Nippon Telegr & Teleph Corp <Ntt> 統合ワークフロー管理方法及びシステム
JPH11296544A (ja) * 1998-04-15 1999-10-29 Fujitsu Ltd 構造化データ管理システム及び構造化データ管理プログラムを記録したコンピュータ読み取り可能な記録媒体
JPH11316780A (ja) * 1998-05-06 1999-11-16 Hitachi Ltd 階層化されたビジネスプロセス定義を有するワークフローシステム
JP2003528358A (ja) * 1998-08-24 2003-09-24 富士通株式会社 ワークフローシステムおよび方法
JP2001202408A (ja) * 2000-01-19 2001-07-27 Fuji Xerox Co Ltd 要素編成支援装置、要素編成支援方法及び記録媒体
JP2001282970A (ja) * 2000-03-29 2001-10-12 Hitachi Software Eng Co Ltd ワークフロー管理システム
WO2003091824A2 (en) * 2002-04-24 2003-11-06 Sap Ag Methods and computer systems for providing or setting access of a user to resources in a computer system
JP2004164594A (ja) * 2002-07-19 2004-06-10 Microsoft Corp 長時間のトランザクションを管理する方法およびシステム
JP2004206694A (ja) * 2002-12-10 2004-07-22 Hewlett-Packard Development Co Lp 要件ベースワークフローを動的に順序付けするシステムおよび方法

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008140135A (ja) * 2006-12-01 2008-06-19 Mitsubishi Electric Corp ワークフロー生成装置及びワークフロー生成方法及びプログラム
JP2008276394A (ja) * 2007-04-26 2008-11-13 Nippon Telegr & Teleph Corp <Ntt> プロセスモデル作成システム、方法及びそのプログラム
JP2011504627A (ja) * 2007-11-23 2011-02-10 インターナショナル・ビジネス・マシーンズ・コーポレーション ビジネス・プロセスを再使用可能サービスに変換するためのシステム、方法、およびコンピュータ・プログラム
JP2017532674A (ja) * 2014-10-06 2017-11-02 スイス リインシュランス カンパニー リミテッド 一致度測定量に基づくデータオブジェクトのパターン認識ベースの監視および制御的処理のためのシステムと方法

Also Published As

Publication number Publication date
US8103536B2 (en) 2012-01-24
US20100306000A1 (en) 2010-12-02
EP1643431A1 (en) 2006-04-05
KR20060087998A (ko) 2006-08-03
JP5173128B2 (ja) 2013-03-27
US20060074731A1 (en) 2006-04-06
US20120078677A1 (en) 2012-03-29
US7805324B2 (en) 2010-09-28

Similar Documents

Publication Publication Date Title
JP5173128B2 (ja) フローベースおよび制約ベースのワークフローをオーサリングし、実行するための統一モデル
JP5710852B2 (ja) 設計時および実行時にワークフローを継ぎ目なくオーサリングし編集するためのフレームワーク
JP4806240B2 (ja) コンポーネント化された拡張可能なワークフローモデル
JP5021193B2 (ja) 拡張可能ワークフローモデルの宣言的表現
US7451432B2 (en) Transformation of componentized and extensible workflow to a declarative format
JP2006107479A (ja) ワークフロー領域内の分野横断的動作問題(cross−cuttingbehavioralconcerns)をモデル化するためのフレームワーク
US8170901B2 (en) Extensible framework for designing workflows
EP1643435B1 (en) An extensible framework for designing workflows
US8793649B2 (en) XML application framework
US7886269B2 (en) XML application framework
Bukovics Foundation Overview
White Windows Workflow Activities

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20080912

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110111

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110411

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20110715

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20111115

RD13 Notification of appointment of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7433

Effective date: 20111116

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20111116

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20111207

A912 Re-examination (zenchi) completed and case transferred to appeal board

Free format text: JAPANESE INTERMEDIATE CODE: A912

Effective date: 20120224

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20121122

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20121227

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