(57)【要約】      （修正有）【課題】ワークフロースケジュールのオーサリングツールにおいて、ユーザがビルディングブロックを特定の順序で配置することにより、ワークフローの作成を行なえるようにする。【解決手段】イベント、条件、またはアクションに相当し得る、各ビルディングブロックは、処理された時のアクションを定義するソースコードに関連付けられる。その順序がワークフロースケジュールのプロセスを決定するビルディングブロックにより、ユーザは、ワークフロースケジュール中のタスクの実行の仕方に関して論理条件を設定できる。ビルディングブロックは、実行前に、ユーザにパラメータの入力を要求できる。ワークフロースケジュールは、イベントが生じるとワークフロースケジュールをトリガするようにイベントと関連付けられる。【選択図】図２
2006107440.tif 000002
【特許請求の範囲】
【請求項１】
サーバベースのプロセスをオーサリングするためのツールを提供するコンピュータで実施される方法であって、
前記サーバベースのプロセスを生成するための要求に応答して前記ツールをインスタンス化するステップと、
前記サーバベースのプロセス内の選択されたアクションを開始するために、前記ツール内にビルディングブロックを提供するステップであって、前記ビルディングブロックは選択されたシーケンスで配置されるステップと、
前記選択されたシーケンスのビルディングブロックに従って、マークアップ言語文書を生成するステップと、
実行のために、前記マークアップ言語文書を前記サーバに提供するステップと
を含むことを特徴とするコンピュータで実施される方法。
【請求項２】
選択された条件に従って、前記ビルディングブロックを処理するためのロジックを追加するステップをさらに含むことを特徴とする請求項１に記載のコンピュータで実施される方法。
【請求項３】
前記マークアップ言語文書の妥当性を検査して、前記マークアップ言語文書の適正なオペレーションを決定するステップをさらに含むことを特徴とする請求項１に記載のコンピュータで実施される方法。
【請求項４】
前記マークアップ言語文書をクライアントに配置するステップであって、前記マークアップ言語文書のすべてが、前記クライアントの同じフロントエンドに配置されるステップをさらに含むことを特徴とする請求項１に記載のコンピュータで実施される方法。
【請求項５】
前記マークアップ言語文書をアセンブリへとコンパイルするステップをさらに含むことを特徴とする請求項１に記載のコンピュータで実施される方法。
【請求項６】
前記アセンブリが前記クライアントの現在のフロントエンド上で利用可能ではないとき、前記マークアップ言語文書を前記アセンブリへと再コンパイルするステップと、
前記再コンパイルしたマークアップ言語文書を前記クライアントの前記現在のフロントエンドに配置するステップと
をさらに含むことを特徴とする請求項５に記載のコンピュータで実施される方法。
【請求項７】
前記ビルディングブロックは、他のサーバベースのプロセスを含むことを特徴とする請求項１に記載のコンピュータで実施される方法。
【請求項８】
前記マークアップ言語文書をイベントと関連付けるステップであって、前記マークアップ言語文書は前記イベントが生じたとき実行されるステップをさらに含むことを特徴とする請求項１に記載のコンピュータで実施される方法。
【請求項９】
前記サーバベースのプロセスは、ワークフロースケジュールであることを特徴とする請求項１に記載のコンピュータで実施される方法。
【請求項１０】
前記ビルディングブロックは、前記選択されたアクションを定義することを特徴とする請求項１に記載のコンピュータで実施される方法。
【請求項１１】
前記ビルディングブロックのための入力パラメータを受け取るステップをさらに含むことを特徴とする請求項１に記載のコンピュータで実施される方法。
【請求項１２】
前記マークアップ言語文書を実行するステップと、
要求した入力を受け取るまで実行が中断されるステップと
をさらに含むことを特徴とする請求項１に記載のコンピュータで実施される方法。
【請求項１３】
前記マークアップ言語文書を実行するステップと、
実行中に、前記マークアップ言語文書を変更するステップと
をさらに含むことを特徴とする請求項１に記載のコンピュータで実施される方法。
【請求項１４】
ワークフロースケジュールをオーサリングするためのツールを提供するシステムであって、クライアントに結合されたサーバを備え、前記サーバは、
前記ワークフロースケジュールを生成するための要求に応答して前記ツールをインスタンス化し、
前記ワークフロースケジュール内の選択されたアクションを開始するために、選択されたシーケンスで配置されたビルディングブロックを前記ツール内に提供し、
前記選択されたシーケンスのビルディングブロックに従ってマークアップ言語文書を生成し、
実行のために、前記マークアップ言語文書を提供する
ように構成されていることを特徴とするシステム。
【請求項１５】
前記ビルディングブロックは、前記選択されたアクションを定義することを特徴とする請求項１４に記載のシステム。
【請求項１６】
前記選択されたシーケンスは、選択された条件に従って前記ビルディングブロックを処理するためのロジックを用いて決定されることを特徴とする請求項１４に記載のシステム。
【請求項１７】
前記マークアップ言語文書は、イベントに関連付けられており、また前記マークアップ言語文書は、前記イベントが生じたとき実行されることを特徴とする請求項１４に記載のシステム。
【請求項１８】
前記ビルディングブロックは、入力パラメータを受け取るように配置されることを特徴とする請求項１４に記載のシステム。
【請求項１９】
前記マークアップ言語文書の妥当性を検査して、前記マークアップ言語文書の適正なオペレーションを判定することを特徴とする請求項１４に記載のシステム。
【請求項２０】
前記マークアップ言語文書は、前記マークアップ言語文書が実行されている間に変更されることを特徴とする請求項１４に記載のシステム。
【請求項２１】
ワークフロースケジュールをオーサリングするためのツールを提供するためのコンピュータ実行可能命令を有するコンピュータ可読媒体であって、
前記ワークフロースケジュールを生成するための要求に応答して前記ツールをインスタンス化するステップと、
前記ワークフロースケジュール内の選択されたアクションを開始するために前記ツール内にビルディングブロックを提供するステップであって、前記ビルディングブロックが選択されたシーケンスで配置され、かつ前記選択されたアクションを定義するステップと、
前記選択されたシーケンスのビルディングブロックに従って、マークアップ言語文書を生成するステップと、
実行のために、前記マークアップ言語文書を前記サーバに提供するステップと
を含むことを特徴とするコンピュータ可読媒体。
【請求項２２】
選択されたアクションに従って、前記ビルディングブロックを処理するためのロジックを追加するステップをさらに含むことを特徴とする請求項２１に記載のコンピュータ可読媒体。
【請求項２３】
前記マークアップ言語文書をイベントと関連付けるステップであって、前記イベントが生じたとき前記マークアップ言語文書が実行されるステップをさらに含むことを特徴とする請求項２１に記載のコンピュータ可読媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ワークフロースケジュールのオーサリングツールに関する。
【背景技術】
【０００２】
ワークフローは、最終的な成果を出すための組織内における一連のタスクを定義する。ワークフローにより、ビジネスのプロセスを正式化し、また管理可能にすることができる。ワークグループ計算アプリケーションにより、様々なワークフローを様々なタイプの仕事に対して定義することができる。例えば、出版の場合、文書は、執筆者から編集者、校正者、生産へと自動的に経路指定される。ワークフローの各段階では、個人または１つのグループが特有のタスクを担当する。タスクが完了すると、ワークフローのソフトウェアは、次のタスクを担当する人間に通知し、その人がプロセスの次の段階を実行するために必要なデータを受け取ることができるようにする。
【発明の開示】
【発明が解決しようとする課題】
【０００３】
ワークフローは、普通、ソフトウェア技術者によって作成される。アプリケーションには、しばしば、共通のシナリオ（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）が含まれる。
【００３６】
ブロック６５０で、ビルディングブロックおよび事前に存在するワークフロースケジュールから作成されたワークフロースケジュールから、ＸＭＬ文書が生成される。ＸＭＬ文書は、ワークフロースケジュールに関連付けられたソースコードを含む。
【００３７】
ブロック６６０で、ＸＭＬ文書は妥当性を検査される。妥当性検査は、ユーザがビルディングブロックのために必要なすべてのパラメータを入力しているか、またビルディングブロックが適正に配列されているかを判定する。ビルディングブロックの内容または配置が無効である場合、ユーザに対して、エラーに対処するよう求めるプロンプトが出される。ブロック６７０で、ＸＭＬファイルはアセンブリへとコンパイルされる。このアセンブリは、実行する用意のできたダイナミックリンクライブラリである。妥当性が検査され、コンパイルされたアセンブリは、サーバのフロントエンドで利用可能である。次いで、終了ブロックで処理は終了する。
【００３８】
図７は、ワークフロースケジュールを実行するためのプロセスを示すオペレーションの流れ図である。プロセスは、妥当性が検査されたワークフロースケジュールがサーバ上で利用可能である開始ブロックから開始する。
【００３９】
ブロック７００に進み、ワークフロースケジュールの実行をトリガするイベントが生ずる。ブロック７１０で、アセンブリが、サーバのフロントエンドで利用可能かどうか判定が行われる。前述のように、ワークフロースケジュールの実行が１つのフロントエンド上で開始され、別のフロントエンド上で継続される可能性があるため、アセンブリはそのフロントエンドで利用できない可能性もある。アセンブリが、そのフロントエンド上で利用できない場合、処理はブロック７２０に進み、ＸＭＬ文書がアセンブリへとコンパイルされる。
【００４０】
ブロック７３０で、トリガされたワークフロースケジュールに対応するアセンブリが、サーバ上のワークフロー実行エンジンにロードされる。ブロック７４０で、ワークフロー実行エンジンは、そのワークフロースケジュールの実行を開始する。
【００４１】
判断ブロック７５０に進み、ワークフロースケジュールの新しいバージョンの受取りが行われたかどうかの判定が行われる。ワークフロースケジュールの新バージョンは、現在のワークフロースケジュールの変更版であり得る。ワークフロースケジュールの新バージョンの受取りが行われていない場合、処理は終了ブロックに進み終了する。ワークフロースケジュールの新バージョンが受信されていた場合、処理はブロック７６０に進み、新しいワークフロースケジュールが記憶される。
【００４２】
ブロック７７０で、ワークフロースケジュールの現在のバージョンの処理がロックされる。ロックされたワークフロースケジュールは、処理が完了した後に実行されることはない。ブロック７８０で、ワークフロー実行要求がワークフロースケジュールの新バージョンに経路指定される。次いで、終了ブロックで、処理は終了する。
【００４３】
上記の明細、実施例、およびデータは、本発明の構成の製造および使用に関する完全な説明を提供する。本発明の多くの実施形態を本発明の趣旨および範囲を逸脱することなく行うことができるので、本発明は以下に添付の特許請求の範囲にある。
【図面の簡単な説明】
【００４４】
【図１】本発明の例示的な実施形態に従って使用することができるコンピューティング装置を示す図である。
【図２】本発明による、ワークフロースケジュールをオーサリングするためのシステムのブロック図である。
【図３】本発明による、ワークフロースケジュールをオーサリングするための例示的なユーザインターフェースを示す図である。
【図４】本発明による、ワークフロースケジュールをオーサリングするためのシステムのブロック図である。
【図５】本発明による、ワークフロースケジュールをオーサリングするためのシステムのブロック図である。
【図６】本発明による、ワークフロースケジュールをオーサリングするためのプロセスを示すオペレーションの流れ図である。
【図７】本発明による、ワークフロースケジュールを実行するためのプロセスを示すオペレーションの流れ図である。
【符号の説明】
【００４５】
１００  コンピューティング装置
１０２  処理装置
１０４  システムメモリ
１０５  オペレーティングシステム
１０６  アプリケーション
１０７  プログラムデータ
１０８  ワークフロースケジュールのオーサリングツール
１０９  取外し可能ストレージ
１１０  取外し不能ストレージ
１１２  入力装置
１１４  出力装置
１１６  通信接続
１１８  他のコンピューティング装置
２００  クライアント（開発者）
２０２  エディタユーザインターフェース
２１０  クライアント（ユーザ）
２１２  アプリケーション
２２０  フロントエンドサーバ
２２２  メッセージキュー
２２４  プロファイル
２２６  ワークフロー実行エンジン
２３０  バックエンドデータストア
２３２  事前に存在するダイナミックリンクライブラリ
２３４  ＸＭＬモジュール
２３６  アセンブリ（ダイナミックリンクライブラリ）
２３８  ビルディングブロック
４００  サーバ
４１０  クライアント
４１２  ローカルストア
４１４  エディタ
４１６  ＸＭＬファイル
４１８  事前の妥当性検査モジュール
【図１】
2006107440.tif 000003
【図２】
2006107440.tif 000004
【図３】
2006107440.tif 000005
【図４】
2006107440.tif 000006
【図５】
2006107440.tif 000007
【図６】
2006107440.tif 000008
【図７】
2006107440.tif 000009
【外国語明細書】
2006107440000001.pdf