(57)【特許請求の範囲】
【請求項１】
ワークフローのプロセスをオーサリングするシステムについてコンピュータが実施する動作方法であって、前記方法は、
所定のビルディングブロックのライブラリを取得するステップであって、前記所定のビルディングブロックは、ワークフローのプロセスを実行するための機能を定義するソースコードを含み、前記所定のビルディングブロックのうちの少なくとも１つは、提供されない特有のワークフローの機能を他の所定のビルディングブロックによりユーザが選択することを許可して前記ワークフローの実行のフローを変更できるようにカスタマイズ可能である、取得するステップと、
前記ライブラリ内の所定のビルディングブロックのうちの少なくとも２つの選択を受け取るステップと、
前記少なくとも２つの所定のビルディングブロックの選択を順に配列して、前記ワークフローのプロセスを生成するステップと、
前記ワークフローのプロセスに、前記ワークフローのプロセスの実行を引き起こす実行イベントを関連付けするステップと、
前記少なくとも２つの所定のビルディングブロックのソースコードを含むＸＭＬドキュメントを生成するステップと、
前記ＸＭＬドキュメントの妥当性を検査するステップであって、前記妥当性を検査するステップは、前記少なくとも２つの所定のビルディングブロックについて所定のパラメータが設定されたか否か判定することおよび前記少なくとも２つの所定のビルディングブロックが適切に配列されたか否か判定することを含む、妥当性を検査するステップと、
前記実行イベントの指示を受け取った後、前記ＸＭＬドキュメントをコンパイルしてアセンブリを形成し、前記ワークフローのプロセスの実行のためワークフロー実行エンジンで前記アセンブリをロードするステップであって、前記アセンブリは、実行する用意のできたダイナミックリンクライブラリである、ステップと、
前記ワークフローのプロセスが実行している間に、前記ワークフローのプロセスを実行するための機能を変更するステップと
を備えたことを特徴とする方法。
【請求項２】
前記ＸＭＬドキュメントが生成される前に、前記少なくとも２つの所定のビルディングブロックのうちの少なくとも１つをカスタマイズする、前記少なくとも２つの所定のビルディングブロックのうちの少なくとも１つのソースコードへの変更を受け取るステップを更に備えたことを特徴とする請求項１に記載のシステムについてコンピュータが実施する動作方法。
【請求項３】
前記少なくとも２つの所定のビルディングブロックのうちの少なくとも１つは、ワークフローのタスクを含み、前記ライブラリ内の所定のビルディングブロックのうちの少なくとも２つの選択を受け取るステップは、少なくとも１つの入力パラメータを受け取るプロンプトを生成するステップを含み、前記少なくとも１つの入力パラメータは、前記ワークフローのタスク内に含まれて、実行時に前記ワークフローのプロセスをカスタマイズすることを特徴とする請求項１に記載のシステムについてコンピュータが実施する動作方法。
【請求項４】
前記少なくとも２つの所定のビルディングブロックの選択を配列するステップは、前記少なくとも２つの所定のビルディングブロックを論理結合子を用いて配列して、前記ワークフローのプロセスの分岐を提供するステップを含むことを特徴とする請求項１に記載のシステムについてコンピュータが実施する動作方法。
【請求項５】
前記所定のビルディングブロックのライブラリを取得するステップの後、且つ、前記ライブラリ内の所定のビルディングブロックのうちの少なくとも２つの選択を受け取るステップの前に、ワークフローのプロセスのユーザインターフェースを生成するステップを更に備え、前記ワークフローのプロセスのユーザインターフェースは、前記少なくとも２つの所定のビルディングブロックの選択を受け取り、前記少なくとも２つの所定のビルディングブロックの実行を引き起こす実行イベントの選択を受け取り、前記少なくとも２つの所定のビルディングブロックの実行に応答して実行するアクションの選択を受け取るように構成されることを特徴とする請求項１に記載のシステムについてコンピュータが実施する動作方法。
【請求項６】
ワークフロー実行エンジンで前記アセンブリをロードするステップの後、且つ、前記ワークフローのプロセスが実行している間に前記ワークフローのプロセスを実行するための機能を変更するステップの前に、前記ワークフローのプロセスの新しいバージョンが利用可能であるか否かを判定するステップと、前記ワークフローのプロセスの新しいバージョンが利用可能であるときに、前記ワークフローのプロセスの新しいバージョンのアセンブリを実行するステップとを更に備えたことを特徴とする請求項１に記載のシステムについてコンピュータが実施する動作方法。
【請求項７】
前記少なくとも２つの所定のビルディングブロックの選択を配列するステップは、前記少なくとも２つの所定のビルディングブロックを論理結合子を用いて配列して、前記ワークフローのプロセスのループを提供するステップを含むことを特徴とする請求項１に記載のシステムについてコンピュータが実施する動作方法。
【請求項８】
請求項１乃至請求項７のうちの何れか１項に記載の方法を実行するためのコンピュータ実行可能命令を有するコンピュータ可読記録媒体。
【請求項９】
ワークフローのプロセスをオーサリングするシステムであって、
プロセッサと、
開発者のクライアントコンピュータから、所定のビルディングブロックのライブラリ内の少なくとも２つの所定のビルディングブロックの選択を受け取ることであって、前記所定のビルディングブロックは、ワークフローのプロセスを実行するための機能を定義するソースコードを含み、前記所定のビルディングブロックのライブラリ内の少なくとも１つの所定のビルディングブロックは、提供されない特有のワークフローの機能を他の所定のビルディングブロックによりユーザが選択することを許可して前記ワークフローの実行のフローを変更できるようにカスタマイズ可能である、受け取ること、
前記少なくとも２つの所定のビルディングブロックの選択を配列して、前記ワークフローのプロセスを生成すること、
前記ワークフローのプロセスに、前記ワークフローのプロセスの実行を引き起こす実行イベントを関連付けすること、
前記少なくとも２つの所定のビルディングブロックのソースコードを含むＸＭＬドキュメントを生成すること、
前記ＸＭＬドキュメントの妥当性を検査することであって、前記妥当性を検査することは、前記少なくとも２つの所定のビルディングブロックについて所定のパラメータが設定されたか否か判定することおよび前記少なくとも２つの所定のビルディングブロックが適切に配列されたか否か判定することを含む、妥当性を検査すること、
前記実行イベントの指示をユーザのクライアントコンピュータから受け取った後、前記ＸＭＬドキュメントをコンパイルしてアセンブリを形成し、前記ワークフローのプロセスの実行のためワークフロー実行エンジンで前記アセンブリをロードすることであって、前記アセンブリは、実行する用意のできたダイナミックリンクライブラリであること、および
前記ワークフローのプロセスが実行している間に、前記ワークフローのプロセスを実行するための機能を変更すること
のためのコンピュータ実行可能命令を有するメモリと
を備えたことを特徴とするシステム。
【請求項１０】
前記ＸＭＬドキュメントが生成される前に、前記少なくとも２つの所定のビルディングブロックのうちの少なくとも１つのソースコードへの変更を受け取ることを更に備えたことを特徴とする請求項９に記載のシステム。
【請求項１１】
前記ライブラリ内の所定のビルディングブロックのうちの少なくとも２つの選択を受け取ることは、少なくとも１つの入力パラメータを受け取るプロンプトを生成することを含み、前記少なくとも１つの入力パラメータは、前記少なくとも２つの所定のビルディングブロックのうちの少なくとも１つの内に含まれて、実行時に前記ワークフローのプロセスをカスタマイズすることを特徴とする請求項９に記載のシステム。
【請求項１２】
前記少なくとも２つの所定のビルディングブロックの選択を配列することは、前記少なくとも２つの所定のビルディングブロックを論理結合子を用いて配列して、前記ワークフローのプロセスの分岐を提供することを含むことを特徴とする請求項９に記載のシステム。
【請求項１３】
所定のブロックのライブラリを取得することの後、且つ、前記ライブラリ内の所定のビルディングブロックのうちの少なくとも２つの選択を受け取ることの前に、ワークフローのプロセスのユーザインターフェースを生成することを更に備え、前記ワークフローのプロセスのユーザインターフェースは、前記少なくとも２つの所定のビルディングブロックの選択を受け取り、前記少なくとも２つの所定のビルディングブロックの実行を引き起こす実行イベントの選択を受け取り、前記少なくとも２つの所定のビルディングブロックの実行に応答して実行するアクションの選択を受け取るように構成されることを特徴とする請求項９に記載のシステム。
【請求項１４】
ワークフロー実行エンジンで前記アセンブリをロードすることの後、且つ、前記ワークフローのプロセスが実行している間に前記ワークフローのプロセスを実行するための機能を変更することの前に、前記ワークフローのプロセスの新しいバージョンが利用可能であるか否かを判定することと、前記ワークフローのプロセスの新しいバージョンが利用可能であるときに、前記ワークフローのプロセスの新しいバージョンのアセンブリを実行することとを更に備えたことを特徴とする請求項９に記載のシステム。
【請求項１５】
前記少なくとも２つの所定のビルディングブロックの選択を配列することは、前記少なくとも２つの所定のビルディングブロックを論理結合子を用いて配列して、前記ワークフローのプロセスのループを提供することを含むことを特徴とする請求項９に記載のシステム。
【請求項１６】
ワークフローのプロセスをオーサリングする方法であって、前記方法は、
複数の所定のビルディングブロックから２つ以上のビルディングブロックを選択するステップであって、前記ビルディングブロックの各々は、ワークフローのアクションを定義するＸＭＬコードを含み、前記複数の所定のビルディングブロックからの少なくとも１つのビルディングブロックは、
提供されない特有のワークフローの機能を他の所定のビルディングブロックによりユーザが選択することを許可して前記ワークフローの実行のフローを変更できるようにカスタマイズ可能である、選択するステップと、
選択された前記２つ以上の所定のビルディングブロックを配列して、ワークフローのプロセスを形成するステップと、
前記ワークフローのプロセスの妥当性を検査するステップであって、前記妥当性を検査するステップは、選択された前記２つ以上の所定のビルディングブロックについて所定のパラメータが設定されたか否か判定することおよび選択された前記２つ以上の所定のビルディングブロックが適切に配列されたか否か判定することを含む、妥当性を検査するステップと、
前記ワークフローのプロセスが実行している間に、前記ワークフローのプロセスを実行するための機能を変更するステップと
を備えたことを特徴とする方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ワークフロースケジュールのオーサリングツールに関する。
【背景技術】
【０００２】
ワークフローは、最終的な成果を出すための組織内における一連のタスクを定義する。ワークフローにより、ビジネスのプロセスを正式化し、また管理可能にすることができる。ワークグループ計算アプリケーションにより、様々なワークフローを様々なタイプの仕事に対して定義することができる。例えば、出版の場合、文書は、執筆者から編集者、校正者、生産へと自動的に経路指定される。ワークフローの各段階では、個人または１つのグループが特有のタスクを担当する。タスクが完了すると、ワークフローのソフトウェアは、次のタスクを担当する人間に通知し、その人がプロセスの次の段階を実行するために必要なデータを受け取ることができるようにする。
【発明の開示】
【発明が解決しようとする課題】
【０００３】
ワークフローは、普通、ソフトウェア技術者によって作成される。アプリケーションには、しばしば、共通のシナリオ（scenario）を目標とする多くの事前定義のワークフローが含まれる。しかし、事前定義のワークフローは、おそらくすべてのユーザの要求を満たすことができない。ワークフローに関連するソースコードを書くことに熟知していない者、またはそのソースコードにアクセスする権利のない者は、その事前定義のワークフローを作成し、カスタマイズし、または編集することができない。
【課題を解決するための手段】
【０００４】
ワークフロースケジュールのオーサリングツールは、ビルディングブロックを特定の順序で配置することにより、ユーザがワークフローを作成できるようにするものである。ビルディングブロックは、イベント、条件、またはアクションに相当し得る。各ビルディングブロックは、ウェブアプリケーションサーバ中のワークフロー実行エンジンによってビルディングブロックが処理されたとき行われるアクションを定義するソースコードに関連付けられている。ビルディングブロックの順序は、ワークフロースケジュールのプロセスを決定する。共通に使用されるアクションのためのいくつかのビルディングブロックは、事前に定義することができる。他のビルディングブロックは、特有の機能を実行するために、または独特な問題への解決策を提供するためにカスタマイズすることができる。ビルディングブロックは、ユーザがコードを何も書く必要がないため、ワークフロースケジュールのオーサリングを簡単化する。
【０００５】
ワークフロースケジューリングのオーサリングツールは、条件が真の場合はビルディングブロックを実行する論理条件を作成するように、ビルディングブロックを構成することができる。ワークフロースケジューリングのオーサリングツールはまた、条件が真のままである限りそのビルディングブロックを実行するループロジックを作成するように、ビルディングブロックを構成することができる。ビルディングブロックは、ビルディングブロックが実行される前に、ユーザにパラメータの入力を要求することができる。ワークフロースケジュールが処理される前に、サーバは適正な動作を保証するためにそのワークフロースケジュールの妥当性を検査することができる。ワークフロースケジュールは、処理中にユーザ入力を要求することができる。ワークフロースケジュールは、イベントが生じたときワークフロースケジュールがトリガされるように、イベントと関連付けられる。
【発明を実施するための最良の形態】
【０００６】
簡単に述べると、ワークフロースケジュールのオーサリングツールは、ビルディングブロックを特定の順序で配置することにより、ユーザがワークフローを作成できるようにする。ビルディングブロックは、イベント、条件、またはアクションに相当し得る。各ビルディングブロックは、それがウェブアプリケーションサーバ中のワークフロー実行エンジンによって処理されたときに行われるべきアクションを定義するソースコードに関連付けられている。ビルディングブロックの順序は、ワークフロースケジュールのプロセスを決定する。いくつかのビルディングブロックは、共通に使用されるアクションに対して事前に定義することができる。他のビルディングブロックは、特有の機能を実行するために、または特有の問題に対して解決策を提供するためにカスタマイズすることもできる。ビルディングブロックを用いると、ユーザはコードを書く必要がないため、ワークフロースケジュールのオーサリングが簡単化される。一実施形態では、既存のワークフロースケジュールをビルディングブロックと共に用いて新しいワークフロースケジュールを作成することができる。サーバ上で利用可能な任意の既存のワークフロースケジュールは、ユーザが既存のワークフロースケジュールを編集できるように、または既存のワークフロースケジュールを新しいワークフロースケジュールに組み込むことができるように、ユーザインターフェース上にロードすることができる。
【０００７】
ワークフロースケジューリングのオーサリングツールは、条件が真の場合はビルディングブロックを実行する論理条件を作成するように、ビルディングブロックを構成することができる。ワークフロースケジューリングのオーサリングツールはまた、条件が真のままである限りそのビルディングブロックを実行するループロジックを作成するように、ビルディングブロックを構成することができる。ロジックを実装することより、ワークフロースケジュールに対して柔軟性とカスタマイズを提供する。ワークフロースケジュールは、どの論理条件が満たされるかに応じてアクションを実行する。ビルディングブロックは、それが実行される前に、ユーザに対してパラメータの入力を要求することができる。
【０００８】
ワークフロースケジュールは、イベントが生じたときトリガされるように、イベントに関連付けられている。ワークフロースケジュールは、処理中にユーザ入力を要求することができる。ワークフロースケジュールの処理は、要求した入力をユーザから受け取るまで停止または延期することができる。ワークフロースケジュールは、その入力を受け取ると処理を継続する。
【０００９】
ワークフロースケジュールが処理される前に、サーバは、適正な動作を保証するためにワークフロースケジュールの妥当性を検査することができる。妥当性検査は、ビルディングブロックのために要求されたパラメータのすべてが適正に設定されていることを判定するために実施することができる。妥当性検査はまた、ビルディングブロックが適正に構成されたかどうかを判定するために実施することもできる。
【００１０】
例示的な動作環境  
図１を参照すると、本発明を実施するための例示的な一システムは、コンピューティング装置１００などのコンピューティング装置を含む。コンピューティング装置１００は、クライアント、サーバ、移動体装置、またはネットワークベースの共同作業システム中のデータと相互作用する他の任意のコンピューティング装置として構成することができる。ごく基本的な構成では、コンピューティング装置１００は、通常、少なくとも１つの処理装置１０２およびシステムメモリ１０４を含む。コンピューティング装置の正確な構成およびタイプに応じて、システムメモリ１０４は、（ＲＡＭなどの）揮発性のもの、（ＲＯＭやフラッシュメモリなどの）不揮発性のもの、またはその２つの何らかの組合せとすることができる。システムメモリ１０４は、通常、オペレーティングシステム１０５、１つまたは複数のアプリケーション１０６を含み、またプログラムデータ１０７を含むことができる。ワークフロースケジュールのオーサリングツール１０８は、以下で詳細に説明するが、アプリケーション１０６内に実装される。
【００１１】
コンピューティング装置１００は、追加の特徴および機能を有することができる。例えば、コンピューティング装置１００はまた、例えば、磁気ディスク、光ディスク、またはテープなどの（取外し可能および／または取外し不能の）追加のデータ記憶装置を含むことができる。このような追加のストレージは、図１で、取外し可能ストレージ１０９および取外し不能ストレージ１１０として示されている。コンピュータ記憶媒体は、コンピュータ可読命令や、データ構造、プログラムモジュール、他のデータなどの、情報を記憶するための任意の方法または技術で実施された、揮発性／不揮発性、取外し可能／取外し不能媒体を含むことができる。システムメモリ１０４、取外し可能ストレージ１０９、取外し不能ストレージ１１０はすべて、コンピュータ記憶媒体の実施例である。コンピュータ記憶媒体は、それだけに限らないが、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリ、もしくは他のメモリ技術、ＣＤ−ＲＯＭ、ＤＶＤ（digital versatile disks）、もしくは他の光ストレージ、磁気カセット、磁気テープ、磁気ディスクストレージ、もしくは他の磁気記憶装置、あるいは所望の情報を記憶するために使用可能であり、コンピューティング装置１００によってアクセス可能な他の任意の媒体を含む。このようなコンピュータ記憶媒体はいずれも装置１００の一部分であり得る。コンピューティング装置１００はまた、キーボード、マウス、ペン、音声入力装置、タッチ入力装置などの入力装置１１２を有することができる。さらに、表示装置、スピーカ、プリンタなどの出力装置１１４を含むこともできる。
【００１２】
コンピューティング装置１００はまた、ネットワークを介するなど、装置が他のコンピューティング装置１１８と通信できるようにする通信接続１１６を含む。ネットワークは、ローカルエリアネットワークおよび広域ネットワーク、ならびに、それだけに限らないが、イントラネットおよびエキストラネットを含む他の大規模ネットワークを含む。通信接続１１６は通信媒体の一実施例である。通信媒体は、通常、コンピュータ可読命令、データ構造、プログラムモジュール、または搬送波もしくは他の移送機構などの変調されたデータ信号中の他のデータによって実施可能なものであり、またそれは、任意の情報配信媒体を含むことができる。用語「変調されたデータ信号」とは、信号中に情報をエンコードするような方式で、その１つまたは複数の特性が設定または変更された信号を意味する。通信媒体は、例として、これだけに限らないが、有線ネットワークや直接有線接続などの有線媒体と、音響、高周波、赤外線および他の無線媒体などの無線媒体とを含む。本明細書で使用するコンピュータ可読媒体という用語は、記憶媒体と通信媒体を共に含むものとする。
【００１３】
ワークフロースケジュールのオーサリングツール  
図２は、サーバベースのプロセスをオーサリングするためのシステムのブロック図を示す。システムは、開発者アクセス用のクライアント２００、ユーザアクセス用のクライアント２１０、フロントエンドサーバ２２０、およびバックエンドデータストア２３０を含む。クライアント２００、クライアント２１０、およびバックエンドデータストア２３０は、それぞれフロントエンドサーバ２２０に結合されている。クライアント２００は、エディタユーザインターフェース２０２を含む。クライアント２１０は、アプリケーション２１２を含む。フロントエンドサーバ２２０は、メッセージングキュー２２２、プロファイル２２４、およびワークフロー実行エンジン２２６を含む。バックエンドデータストア２３０は、事前に存在するダイナミックリンクライブラリ２３２、ＸＭＬモジュール２３４、およびアセンブリ２３６を含む。ビルディングブロック２３８は、ＸＭＬモジュール２３４に結合されている。
【００１４】
一実施形態では、サーバベースのプロセスは、一連のタスクを含むワークフロースケジュールである。そのワークフロースケジュールは、クライアント２００でエディタユーザインターフェース２０２を用いて、開発者により作成される。ワークフロースケジュールは、そのワークフロースケジュールが処理されている間に、クライアント２１０でアプリケーション２１２と対話するユーザからの入力を受け取ることができる。要求した入力をクライアント２１０から受け取るまで、ワークフロースケジュールの処理を停止または延期することができる。ワークフロースケジュールはその入力を受け取ると処理を継続する。
【００１５】
メッセージングキュー２２２は、サーバシステムに対して着信および発信メッセージを調整するためにサーバのすべてのフロントエンド２２０に含まれている。プロファイル２２４は、特定のクライアントを突き止めることができるように、クライアント２００、２１０に関する識別情報を含む。ワークフロー実行エンジン２２６は、ワークフロースケジュールの実行を管理する。例えば、ワークフロー実行エンジンは、一連の諸ステップを再編成することにより、あるいは並列もしくは順次に実行するよう変更することにより、ワークフロースケジュールを管理することができる。
【００１６】
事前に存在するダイナミックリンクライブラリ２３２は、ＸＭＬモジュール２３４によってコール可能な機能であり、したがって、すべての機能を構築する必要がなくなる。事前に存在するダイナミックリンクライブラリ２３２は、ビルディングブロック２３８によって抽出される（すなわち、ビルディングブロックを用いることによって、事前に存在するダイナミックリンクライブラリ２３２が参照される）。ＸＭＬモジュール２３４はコンパイルされて、アセンブリ２３６を形成する。アセンブリ２３６は、実行する用意のできたダイナミックリンクライブラリである。
【００１７】
ビルディングブロック２３８は、ワークフローのアクションを含むＸＭＬのセクションである。ビルディングブロックに関連付けられたアクションは、ビルディングブロックがワークフロー実行エンジン２２６によって処理されると実行される。ワークフロースケジュールは、ビルディングブロック２３８を特定の順序に配置することによって作成される。その順序は、ワークフロースケジュールを決定する。いくつかのビルディングブロックは、共通に使用されるアクションに対して事前に定義することができる。他のビルディングブロックは、特有の機能を実行するために、または特有の問題に対して解決策を提供するためにカスタマイズすることもできる。ビルディングブロック２３８を用いると、ユーザはコードを書く必要がないため、ワークフロースケジュールのオーサリングが簡単化される。
【００１８】
ビルディングブロック２３８により、開発者は、どのようにワークフロースケジュール中のタスクを実行するかに関して論理条件を設定することができる。例えば、ビルディングブロック２３８は、論理結合子（例えばＡＮＤ、ＯＲ、ＥＬＳＥなど）を用いて配置されて、ワークフロースケジュール中で分岐および／またはループを提供することができる。ロジックの実装により、ワークフロースケジュールに対して柔軟性とカスタマイズを提供する。例えば、そのロジックを用いると、出費が特定の量に満たないとき、ワークフロースケジュールは、出費報告文書を承認のため特定の人間に送り、出費報告がその量を超えたときは、出費報告文書を別の人間に送るようにすることができる。  
例示的なワークフロースケジュールを以下にリストする。  
イベント        文書が「Shared Documents」にアップロードされたとき  
条件１          If spec_status = ready for review  
アクション１    Send e-mail to user's Product Team  
条件２          Else  
アクション２    Set spec_staus to Pri1
【００１９】
ワークフロースケジュールの処理は、そのワークフローのアセンブリに関連付けられたイベントが生じたとき開始する。一実施形態では、ワークフロースケジュールは、ウェブページ上のボタンと関連付けられており、そのボタンが活動化されたときイベントが生ずる。他の実施形態では、クライアントが、ワークフロースケジュールとの対話を要求する操作を行ったとき、イベントが生ずる。例えば、ワークフロースケジュールは、文書ライブラリ中の文書が更新されると電子メールを生成するように設計することができ、それによって、承認を求めて電子メールを介しその文書を他のユーザに送信することができる。したがって、そのワークフロースケジュール処理は文書が更新されたときにトリガされる。
【００２０】
ワークフロースケジュールは、どの論理条件が満たされたかに応じてアクションを実行する。各イベント、条件、およびアクションは、１つの別個のビルディングブロックとして表すことができる。したがって、上記のワークフロースケジュールは、何らかのソースコードを書くことを必要とせず、５つのビルディングブロックを並べることによって作成される。
【００２１】
ワークフロースケジュールは、図３に示すようにエディタユーザインターフェース３００上で作成される。エディタユーザインターフェースは、ステップの詳細３１０およびステップリスト３２０を示す。ビルディングブロック（例えば、イベント、条件、アクション）は、メニュー３１２を用いて選択することができる。ワークフロースケジュール中の各ステップは、（例えば、ステップ名１、ステップ名２などと）名前がつけられる。ステップリスト３２０は、ワークフロースケジュールのステップ名を示す。各ステップは、ワークフロースケジュール中の次ステップが実行される前に実行されるビルディングブロックを含む。選択されたビルディングブロックは、ステップリスト３２０中にリストされる。
【００２２】
図２に戻って参照すると、ビルディングブロックは、開発者に対してビルディングブロックが実行される前にパラメータを入力するよう要求することができる。例えば、開発者は、「電子メールを送信する」ビルディングブロックを選択することができる。エディタユーザインターフェース２０２で、「ユーザにコンテンツを電子メールで送る」という文章を生成することができる。「コンテンツ」および「ユーザ」には下線を付し、そのフィールドがさらに情報を要求していることを開発者に知らせる。次いで、開発者は、要求された情報を入力する。開発者は、「コンテンツ」の上をクリックし、次いで、電子メールすべきファイルを選択することができる。同様に、開発者は、「ユーザ」の上をクリックし、次いで、その電子メールメッセージの受信者を選択する。したがって、開発者が「私の提案」と呼ばれる文書を選択し、「ジョー」という名前の受信者を選択した場合、その文章は、「私の提案をジョーに電子メールで送る」に変更される。ワークフロースケジュールは、次いで、保存され、コンパイルすべくサーバに送られる。
【００２３】
図４は、サーバベースのプロセスをオーサリングするためのシステムのブロック図を示す。システムは、クライアント４１０に結合されたサーバ４００を含む。サーバ４００は、図２で示すフロントエンドサーバおよびバックエンドデータストアを含む。サーバ４００はまた、複数のフロントエンドサーバおよびバックエンドデータストアを含むことができる。クライアント４１０は、ローカルストア４１２、エディタ４１４、ＸＭＬファイル４１６、および事前の妥当性検査モジュール４１８を含む。
【００２４】
ワークフロースケジュールのオーサリングは、ビルディングブロックがサーバ４００からクライアント４１０にダウンロードされたときに開始する。ビルディングブロックは、ローカルストア４１２に記憶される。開発者は、エディタ４１４を用いてワークフロースケジュールの作成を行う。一実施形態では、エディタ４１４は、図３を参照して説明したものと同様のユーザインターフェースである。
【００２５】
開発者は、ビルディングブロックおよび条件ロジックを用いてワークフローを生成する。一実施形態では、既存のワークフロースケジュールをビルディングブロックと共に使用して、新しいワークフロースケジュールを作成することができる。ユーザが、既存のワークフロースケジュールを編集できるように、またはそれを新しいワークフロースケジュールに組み込むことができるように、サーバ４００上で利用可能な既存の任意のワークフロースケジュールがクライアント４１０上にロードされる。ワークフロースケジュールの作成が行われた後、開発者はそのワークフロースケジュールを保存することができる。次いで、保存されたワークフロースケジュールはＸＭＬファイル４１６に変換される。
【００２６】
ＸＭＬファイル４１６は、事前の妥当性検査モジュール４１８にロードされて、ビルディングブロックに構文および意味論上の誤りがないかどうかが検査される。事前の妥当性検査モジュール４１８は、ＸＭＬファイル４１６を検査して、ビルディングブロックに対して要求されたすべてのパラメータが適正に設定されているかどうか判定する。事前の妥当性検査モジュール４１８はまた、ビルディングブロックが適正に構成されているかどうかも判定する。エディタ４１４で、開発者は、どんな構文上のまたは意味論上の誤りも通知される。次いで、開発者は、そのワークフロースケジュールを訂正することができる。サーバ４００は、ＸＭＬファイル４１６をコンパイルして、ワークフロースケジュールが適正に働くかどうか判定する。サーバ４００は、エラーレポートまたは確認を生成し送信することによって、コンパイル結果をクライアント４１０に通知する。
【００２７】
図５は、サーバベースのプロセスをオーサリングするためのシステムのブロック図を示す。システムは、サーバ５１０に結合されたクライアント５００を含む。サーバ５１０は、データストア５１５およびフロントエンド５２０、５３０、５４０を含む。メッセージキュー５２２、５３２、５４２は、サーバシステムに対して着信および発信メッセージを調整するためにフロントエンド５２０、５３０、５４０すべてに含まれている。
【００２８】
クライアント５００は、ワークフロースケジュールの実行を要求し、それは特定のフロントエンド（例えば、５２０）に送られる。フロントエンド５２０は、要求されたワークフロースケジュールに関連付けられたアセンブリをデータストア５１５からロードする。次いで、ワークフロースケジュールの実行が開始される。ワークフロースケジュール中の１ステップで、クライアント５００から入力パラメータを要求することができる。その入力パラメータを待つ間、ワークフロースケジュール処理を遅延させることができる。ユーザが入力パラメータを入力したとき、その遅延のために、異なるフロントエンド（例えば、５３０）が提示される可能性がある。したがって、ワークフロースケジュールは、１つのフロントエンドで開始され、異なるフロントエンドで継続されることもあり得る。フロントエンド５３０は、ワークフロースケジュール処理がフロントエンド５３０上で継続できるように現在のワークフロースケジュールに関連付けられたアセンブリをロードする。
【００２９】
ワークフロースケジュールは、サーバ５１０上で変更することができる。一実施形態では、ワークフロースケジュール（例えば、workflow.dll）を、ワークフロースケジュールの処理中に変更することができる。その処理中のワークフロースケジュールは、処理が完了したとき、再度処理することができないようにロックされる。次いで、ワークフロースケジュールは、新しい名前（例えば、workflow.dll.mod）の下でデータストア５１５に記憶される。変更されたワークフロースケジュールは、その事前の変更版に対するどんなコールも、この変更版へと経路指定されるように元のワークフロースケジュールにリンクされる。
【００３０】
本発明のワークフロースケジュールのオーサリングツールは、他の手段によってオーサリングされたワークフロースケジュールと互換性がある。ワークフロースケジュールは、インポートされ、可能な限り多く保存される。ワークフロー実行エンジンによって理解される部分のワークフロースケジュールは処理される。ワークフロー実行エンジンが理解できないワークフロースケジュールの部分は、ワークフロースケジュールのオーサリングツールによりそのワークフロースケジュールが全く理解されないというインディケータ（indicator）と共に提示される。
【００３１】
図６は、ワークフロースケジュールをオーサリングするためのプロセスを示すオペレーションの流れ図である。プロセスは、ワークフロースケジュールをオーサリングするためのビルディングブロック、および既存のワークフロースケジュールがサーバ上で利用可能である開始ブロックから開始される。ブロック６００に進み、開発者が、クライアント上のユーザインターフェースからワークフロースケジュールを作成するように要求する。
【００３２】
ブロック６１０に進み、ワークフロースケジュールのオーサリングツールがインスタンス化される。サーバは、利用可能なワークフロースケジュールおよびビルディングブロックをクライアントにロードする。各ビルディングブロックの機能は、そのビルディングブロックに関連付けられたソースコード中で定義される。ビルディングブロックが処理されると機能が実行される。共通の機能を実行するためのビルディングブロックは事前に定義することができる。あるいは、ビルディングブロックは、特有のユーザ要求に対処するためにカスタマイズすることもできる。
【００３３】
ブロック６２０で、ビルディングブロックは、特定のシーケンスで配置される。そのビルディングブロックのシーケンスは、ワークフロースケジュールを実行するためのプロセスを決定する。一実施形態では、ビルディングブロックが順次実行されないことを目的とした、ワークフロースケジュールを実行するための論理条件を含むようにビルディングブロックを配置することができる。他の実施形態では、既存のワークフロースケジュールを、他のワークフロースケジュールおよび／またはビルディングブロックと共に編集または配置して、新しいワークフロースケジュールを作成することもできる。
【００３４】
ブロック６３０で、ワークフロースケジュールは、イベントと関連付けられる。ワークフローは、イベントが生じたとき処理を開始する。一実施形態では、そのイベントは、ウェブページ上でボタンを活動化することであり得る。他の実施形態では、そのイベントを、ワークフロースケジュールとのユーザ対話とすることもできる。
【００３５】
ブロック６４０で、ユーザがビルディングブロックに対するパラメータを入力する。そのパラメータにより、ユーザは、ビルディングブロックをカスタマイズすることができるようになる。パラメータの実施例には、ファイル名、電子メールアドレス、およびＵＲＬ（uniform resource locator）が含まれる。
【００３６】
ブロック６５０で、ビルディングブロックおよび事前に存在するワークフロースケジュールから作成されたワークフロースケジュールから、ＸＭＬ文書が生成される。ＸＭＬ文書は、ワークフロースケジュールに関連付けられたソースコードを含む。
【００３７】
ブロック６６０で、ＸＭＬ文書は妥当性を検査される。妥当性検査は、ユーザがビルディングブロックのために必要なすべてのパラメータを入力しているか、またビルディングブロックが適正に配列されているかを判定する。ビルディングブロックの内容または配置が無効である場合、ユーザに対して、エラーに対処するよう求めるプロンプトが出される。ブロック６７０で、ＸＭＬファイルはアセンブリへとコンパイルされる。このアセンブリは、実行する用意のできたダイナミックリンクライブラリである。妥当性が検査され、コンパイルされたアセンブリは、サーバのフロントエンドで利用可能である。次いで、終了ブロックで処理は終了する。
【００３８】
図７は、ワークフロースケジュールを実行するためのプロセスを示すオペレーションの流れ図である。プロセスは、妥当性が検査されたワークフロースケジュールがサーバ上で利用可能である開始ブロックから開始する。
【００３９】
ブロック７００に進み、ワークフロースケジュールの実行をトリガするイベントが生ずる。ブロック７１０で、アセンブリが、サーバのフロントエンドで利用可能かどうか判定が行われる。前述のように、ワークフロースケジュールの実行が１つのフロントエンド上で開始され、別のフロントエンド上で継続される可能性があるため、アセンブリはそのフロントエンドで利用できない可能性もある。アセンブリが、そのフロントエンド上で利用できない場合、処理はブロック７２０に進み、ＸＭＬ文書がアセンブリへとコンパイルされる。
【００４０】
ブロック７３０で、トリガされたワークフロースケジュールに対応するアセンブリが、サーバ上のワークフロー実行エンジンにロードされる。ブロック７４０で、ワークフロー実行エンジンは、そのワークフロースケジュールの実行を開始する。
【００４１】
判断ブロック７５０に進み、ワークフロースケジュールの新しいバージョンの受取りが行われたかどうかの判定が行われる。ワークフロースケジュールの新バージョンは、現在のワークフロースケジュールの変更版であり得る。ワークフロースケジュールの新バージョンの受取りが行われていない場合、処理は終了ブロックに進み終了する。ワークフロースケジュールの新バージョンが受信されていた場合、処理はブロック７６０に進み、新しいワークフロースケジュールが記憶される。
【００４２】
ブロック７７０で、ワークフロースケジュールの現在のバージョンの処理がロックされる。ロックされたワークフロースケジュールは、処理が完了した後に実行されることはない。ブロック７８０で、ワークフロー実行要求がワークフロースケジュールの新バージョンに経路指定される。次いで、終了ブロックで、処理は終了する。
【００４３】
上記の明細、実施例、およびデータは、本発明の構成の製造および使用に関する完全な説明を提供する。本発明の多くの実施形態を本発明の趣旨および範囲を逸脱することなく行うことができるので、本発明は以下に添付の特許請求の範囲にある。
【図面の簡単な説明】
【００４４】
【図１】本発明の例示的な実施形態に従って使用することができるコンピューティング装置を示す図である。
【図２】本発明による、ワークフロースケジュールをオーサリングするためのシステムのブロック図である。
【図３】本発明による、ワークフロースケジュールをオーサリングするための例示的なユーザインターフェースを示す図である。
【図４】本発明による、ワークフロースケジュールをオーサリングするためのシステムのブロック図である。
【図５】本発明による、ワークフロースケジュールをオーサリングするためのシステムのブロック図である。
【図６】本発明による、ワークフロースケジュールをオーサリングするためのプロセスを示すオペレーションの流れ図である。
【図７】本発明による、ワークフロースケジュールを実行するためのプロセスを示すオペレーションの流れ図である。
【符号の説明】
【００４５】
１００  コンピューティング装置
１０２  処理装置
１０４  システムメモリ
１０５  オペレーティングシステム
１０６  アプリケーション
１０７  プログラムデータ
１０８  ワークフロースケジュールのオーサリングツール
１０９  取外し可能ストレージ
１１０  取外し不能ストレージ
１１２  入力装置
１１４  出力装置
１１６  通信接続
１１８  他のコンピューティング装置
２００  クライアント（開発者）
２０２  エディタユーザインターフェース
２１０  クライアント（ユーザ）
２１２  アプリケーション
２２０  フロントエンドサーバ
２２２  メッセージキュー
２２４  プロファイル
２２６  ワークフロー実行エンジン
２３０  バックエンドデータストア
２３２  事前に存在するダイナミックリンクライブラリ
２３４  ＸＭＬモジュール
２３６  アセンブリ（ダイナミックリンクライブラリ）
２３８  ビルディングブロック
４００  サーバ
４１０  クライアント
４１２  ローカルストア
４１４  エディタ
４１６  ＸＭＬファイル
４１８  事前の妥当性検査モジュール
【図１】
0004950447.tif 000002
【図２】
0004950447.tif 000003
【図３】
0004950447.tif 000004
【図４】
0004950447.tif 000005
【図５】
0004950447.tif 000006
【図６】
0004950447.tif 000007
【図７】
0004950447.tif 000008