(57)【特許請求の範囲】
【請求項１】
システムであって、
１つ以上のプロセッサと、
構成可能なワークフローサービスの１つ以上のモジュールであって、前記１つ以上のプロセッサのうちの少なくとも１つによって実行されるとき、
クライアントから、定義されたワークフローに対する複数のワークフローコンポーネントおよび相互接続を指定する構成情報を受信することであって、前記指定される複数のワークフローコンポーネントのうちの１つ以上は、前記構成可能なワークフローサービスによって提供された複数の事前定義されたワークフローコンポーネントから前記クライアントによって選択される、ことと、
前記受信した構成情報に少なくとも部分的に基づいて複数のコンピューティングノードを供給して、前記複数のワークフローコンポーネントを実装することと、
前記実装したワークフローコンポーネントに対応する前記複数のコンピューティングノードで定義されたアクティビティの実施を開始することによって、前記クライアントの前記定義されたワークフローを実装することであって、前記定義されたアクティビティの前記実施が、１つ以上のデータソースから入力データを取得することと、前記取得した入力データに少なくとも部分的に基づいたデータ操作動作を実施することと、前記実施したデータ操作動作に少なくとも部分的に基づいて出力データを生成することと、を含む、ことと
によって、前記クライアントに対して定義されたワークフローの機能を提供するよう構成される１つ以上のモジュールと
を備え、
前記複数のワークフローコンポーネントが、１つ以上のソースコンポーネントおよび１つ以上のデータ操作コンポーネントおよび１つ以上の宛先コンポーネントを含み、前記１つ以上のソースコンポーネントの各々が、関連付けられたデータソースと、前記関連付けられたデータソースから前記入力データの少なくとも一部にアクセスするための関連付けられた命令と、を含み、前記１つ以上のデータ操作コンポーネントの各々が、前記データ操作動作のうちの少なくとも１つを実施するための関連付けられた命令を有し、前記１つ以上の宛先コンポーネントの各々が、生成された前記出力データのうちの少なくとも一部を取り扱う関連付けられた命令を有することを特徴とするシステム。
【請求項２】
前記構成可能なワークフローサービスの複数のクライアントに対するワークフローを実装する際に用いられる複数のコンピューティングノードをさらに備え、
前記複数のコンピューティングノードのうちの少なくとも一部が、前記複数のコンピューティングノードのサブ集合であり、前記クライアントが支払った１つ以上の料金と引き換えに、前記クライアントに対して前記定義されたワークフローを実装する際に用いられるために提供され、
前記１つ以上のモジュールが、前記１つ以上のプロセッサのうちの少なくとも１つによる実行のためのソフトウエア命令を含むことを特徴とする請求項１に記載のシステム。
【請求項３】
前記１つ以上のモジュールが、前記クライアントに対する前記定義されたワークフローの前記機能の提供の実施のための１つ以上の手段から成ることを特徴とする請求項１に記載のシステム。
【請求項４】
コンピュータ実装方法であって、
構成可能なワークフローサービスの１つ以上の構成されたコンピューティングシステムによって、前記構成可能なワークフローサービスのクライアントの定義されたワークフローに対する構成情報を受信することであって、前記構成情報が、前記定義されたワークフローの複数のワークフローコンポーネントと、前記複数のワークフローコンポーネントのうちの少なくともいくつかの間の相互接続とを指定し、前記指定される複数のワークフローコンポーネントのうちの１つ以上は、クライアントによる前記構成可能なワークフローサービスの使用のために、前記構成可能なワークフローサービスによって提供された複数の事前定義されたワークフローコンポーネントから前記クライアントによって選択される、ことと、
前記構成可能なワークフローサービスの前記１つ以上の構成されたコンピューティングシステムによって、複数のコンピューティングノードを供給して、各々が前記複数のワークフローコンポーネントのうちの少なくとも１つを実装することであって、前記複数のコンピューティングノードのうちの少なくとも１つが、クライアントによる前記構成可能なワークフローサービスの使用のために前記構成可能なワークフローサービスによって提供される、ことと、
前記構成可能なワークフローサービスの前記１つ以上の構成されたコンピューティングシステムによって、前記実装したワークフローコンポーネントに対応する前記複数のコンピューティングノードで定義されたアクティビティの実施を開始することによって、前記クライアントの前記定義されたワークフローを実装することと
を含み、前記定義されたアクティビティが、
前記構成可能なワークフローサービスの外部の１つ以上のデータソースから入力データを取得することを伴う１つ以上の第１のアクティビティと、
前記取得した入力データに少なくとも部分的に基づいたデータ操作動作を実施することによって中間結果データを生成することを伴う１つ以上の第２のアクティビティと、
前記第２のアクティビティの前記中間結果データに少なくとも部分的に基づいて出力データを生成することを伴う１つ以上の第３のアクティビティと
を含み、
前記複数のワークフローコンポーネントが、１つ以上のソースコンポーネントおよび１つ以上のデータ操作コンポーネントおよび１つ以上の宛先コンポーネントを含み、前記１つ以上のソースコンポーネントの各々が、関連付けられたデータソースと、前記関連付けられたデータソースから前記入力データの少なくとも一部にアクセスするための関連付けられた命令と、を含み、前記１つ以上のデータ操作コンポーネントの各々が、前記データ操作動作のうちの少なくとも１つを実施するための関連付けられた命令を有し、前記１つ以上の宛先コンポーネントの各々が、生成された前記出力データのうちの少なくとも一部を取り扱う関連付けられた命令を有することを特徴とする方法。
【請求項５】
前記クライアントに対する前記定義されたワークフローの前記実装が、前記生成された出力データを前記クライアントによって指定された１つ以上の記憶場所に記憶することと、前記生成された出力データに少なくとも部分的に基づき、かつ前記クライアントに提供される１つ以上の報告を生成することと、のうちの少なくとも一方をさらに含むことを特徴とする請求項４に記載の方法。
【請求項６】
前記定義されたワークフローの実装を開始するための１つ以上の基準の指示を受信することと、
前記定義されたワークフローの前記実装の前に、前記１つ以上の構成されたコンピューティングシステムによって、前記１つ以上の基準が満たされていると決定することと
をさらに含むことを特徴とする請求項４に記載の方法。
【請求項７】
コンピュータ実装方法であって、
構成可能なワークフローサービスの１つ以上の構成されたコンピューティングシステムによって、前記構成可能なワークフローサービスのクライアントの定義されたワークフローに対する構成情報を受信することであって、前記構成情報が、前記定義されたワークフローの複数のワークフローコンポーネントと、前記複数のワークフローコンポーネントのうちの少なくともいくつかの間の相互接続とを指定し、前記指定される複数のワークフローコンポーネントのうちの１つ以上は、クライアントによる前記構成可能なワークフローサービスの使用のために、前記構成可能なワークフローサービスによって提供された複数の事前定義されたワークフローコンポーネントから前記クライアントによって選択される、ことと、
前記構成可能なワークフローサービスの前記１つ以上の構成されたコンピューティングシステムによって、複数のコンピューティングノードを供給して、各々が前記複数のワークフローコンポーネントのうちの少なくとも１つを実装することであって、前記複数のコンピューティングノードのうちの少なくとも１つが、クライアントによる前記構成可能なワークフローサービスの使用のために前記構成可能なワークフローサービスによって提供される、ことと、
前記構成可能なワークフローサービスの前記１つ以上の構成されたコンピューティングシステムによって、前記実装したワークフローコンポーネントに対応する前記複数のコンピューティングノードで定義されたアクティビティの実施を開始することによって、前記クライアントの前記定義されたワークフローを実装することと
を含み、前記定義されたアクティビティが、
前記構成可能なワークフローサービスの外部の１つ以上のデータソースから入力データを取得することを伴う１つ以上の第１のアクティビティと、
前記取得した入力データに少なくとも部分的に基づいたデータ操作動作を実施することによって中間結果データを生成することを伴う１つ以上の第２のアクティビティと、
前記第２のアクティビティの前記中間結果データに少なくとも部分的に基づいて出力データを生成することを伴う１つ以上の第３のアクティビティと
を含み、
前記方法は、
前記定義されたワークフローの実装を開始するための１つ以上の基準の指示を受信することと、
前記定義されたワークフローの前記実装の前に、前記１つ以上の構成されたコンピューティングシステムによって、前記１つ以上の基準が満たされていると決定することと
をさらに含み、
前記１つ以上の基準が、複数の時点で利用可能な入力データの変更に基づいて前記複数の時点での前記定義されたワークフローの周期的実装に対応し、前記方法が、前記定義されたワークフローの前記実装を前記複数の時点の各時点で実施することをさらに含む
ことを特徴とする方法。
【請求項８】
コンピュータ実装方法であって、
構成可能なワークフローサービスの１つ以上の構成されたコンピューティングシステムによって、前記構成可能なワークフローサービスのクライアントの定義されたワークフローに対する構成情報を受信することであって、前記構成情報が、前記定義されたワークフローの複数のワークフローコンポーネントと、前記複数のワークフローコンポーネントのうちの少なくともいくつかの間の相互接続とを指定し、前記指定される複数のワークフローコンポーネントのうちの１つ以上は、クライアントによる前記構成可能なワークフローサービスの使用のために、前記構成可能なワークフローサービスによって提供された複数の事前定義されたワークフローコンポーネントから前記クライアントによって選択される、ことと、
前記構成可能なワークフローサービスの前記１つ以上の構成されたコンピューティングシステムによって、複数のコンピューティングノードを供給して、各々が前記複数のワークフローコンポーネントのうちの少なくとも１つを実装することであって、前記複数のコンピューティングノードのうちの少なくとも１つが、クライアントによる前記構成可能なワークフローサービスの使用のために前記構成可能なワークフローサービスによって提供される、ことと、
前記構成可能なワークフローサービスの前記１つ以上の構成されたコンピューティングシステムによって、前記実装したワークフローコンポーネントに対応する前記複数のコンピューティングノードで定義されたアクティビティの実施を開始することによって、前記クライアントの前記定義されたワークフローを実装することと
を含み、前記定義されたアクティビティが、
前記構成可能なワークフローサービスの外部の１つ以上のデータソースから入力データを取得することを伴う１つ以上の第１のアクティビティと、
前記取得した入力データに少なくとも部分的に基づいたデータ操作動作を実施することによって中間結果データを生成することを伴う１つ以上の第２のアクティビティと、
前記第２のアクティビティの前記中間結果データに少なくとも部分的に基づいて出力データを生成することを伴う１つ以上の第３のアクティビティと
を含み、
前記方法は、
前記定義されたワークフローの実装を開始するための１つ以上の基準の指示を受信することと、
前記定義されたワークフローの前記実装の前に、前記１つ以上の構成されたコンピューティングシステムによって、前記１つ以上の基準が満たされていると決定することと
をさらに含み、
前記１つ以上の基準のうちの少なくとも１つが、前記複数のワークフローコンポーネントのうちの少なくとも１つと関連付けられた前提条件として定義される
ことを特徴とする方法。
【請求項９】
前記複数のワークフローコンポーネントのうちの１つと関連付けられる事後条件の基準についての情報を受信することをさらに含むことを特徴とする請求項６に記載の方法。
【請求項１０】
コンピュータ実装方法であって、
構成可能なワークフローサービスの１つ以上の構成されたコンピューティングシステムによって、前記構成可能なワークフローサービスのクライアントの定義されたワークフローに対する構成情報を受信することであって、前記構成情報が、前記定義されたワークフローの複数のワークフローコンポーネントと、前記複数のワークフローコンポーネントのうちの少なくともいくつかの間の相互接続とを指定し、前記指定される複数のワークフローコンポーネントのうちの１つ以上は、クライアントによる前記構成可能なワークフローサービスの使用のために、前記構成可能なワークフローサービスによって提供された複数の事前定義されたワークフローコンポーネントから前記クライアントによって選択される、ことと、
前記構成可能なワークフローサービスの前記１つ以上の構成されたコンピューティングシステムによって、複数のコンピューティングノードを供給して、各々が前記複数のワークフローコンポーネントのうちの少なくとも１つを実装することであって、前記複数のコンピューティングノードのうちの少なくとも１つが、クライアントによる前記構成可能なワークフローサービスの使用のために前記構成可能なワークフローサービスによって提供される、ことと、
前記構成可能なワークフローサービスの前記１つ以上の構成されたコンピューティングシステムによって、前記実装したワークフローコンポーネントに対応する前記複数のコンピューティングノードで定義されたアクティビティの実施を開始することによって、前記クライアントの前記定義されたワークフローを実装することと
を含み、前記定義されたアクティビティが、
前記構成可能なワークフローサービスの外部の１つ以上のデータソースから入力データを取得することを伴う１つ以上の第１のアクティビティと、
前記取得した入力データに少なくとも部分的に基づいたデータ操作動作を実施することによって中間結果データを生成することを伴う１つ以上の第２のアクティビティと、
前記第２のアクティビティの前記中間結果データに少なくとも部分的に基づいて出力データを生成することを伴う１つ以上の第３のアクティビティと
を含み、
前記方法は、
前記定義されたワークフローの実装を開始するための１つ以上の基準の指示を受信することと、
前記定義されたワークフローの前記実装の前に、前記１つ以上の構成されたコンピューティングシステムによって、前記１つ以上の基準が満たされていると決定することと
をさらに含み、
前記１つ以上の基準が満たされたとの前記決定が、第１の時点で発生し、前記方法が、
前記１つ以上の構成されたコンピューティングシステムによって、前記１つ以上の基準が第２の時点で満たされていないと決定することと、
これに応答して、前記クライアントにアラーム通知を生成して前記１つ以上の基準が満たされていないことを知らせることと、
をさらに含むことを特徴とする方法。
【請求項１１】
前記１つ以上の構成されたコンピューティングシステムによって、前記クライアントに前記構成可能なワークフローサービスのグラフィカルユーザインターフェースを提供することであって、前記クライアントが、前記定義されたワークフローを論理的に表すグラフを編集することによって前記グラフィカルユーザインターフェースを介して前記構成情報を指定し、前記複数のワークフローコンポーネントの各々は、前記グラフの複数のノードのうちの少なくとも１つによって前記グラフ内に示される、ことをさらに含むことを特徴とする請求項４に記載の方法。
【請求項１２】
前記クライアントに対して前記定義されたワークフローを、複数の時点において実装することをさらに含み、前記複数のコンピューティングノードのうちの１つ以上を前記複数の時点の間で維持して、前記１つ以上のコンピューティングノードの前記供給が一回のみ発生することを可能にすることを特徴とする請求項４に記載の方法。
【請求項１３】
前記複数のコンピューティングノードについて、前記コンピューティングノードが、前記定義されたアクティビティのうちの複数を分散方式で実施する複数のコンピュータシステムのクラスタとして実装されることを特徴とする請求項４に記載の方法。
【請求項１４】
前記複数のコンピューティングノードの各々について、前記複数のコンピューティングノードの前記供給が、ソフトウエアプログラムまたは構成データのうちの少なくとも１つを前記コンピューティングノードにロードすることを含むことを特徴とする請求項４に記載の方法。
【請求項１５】
前記複数のコンピューティングノードのうちの１つ以上が、ネットワークを介して、前記構成可能なワークフローサービスの前記１つ以上の構成されたコンピューティングシステムに利用可能なオンライン実行サービスによって提供され、前記１つ以上のコンピューティングノードの前記供給が、前記１つ以上の構成されたコンピューティングシステムによって、前記１つ以上のコンピューティングノードに対応する前記オンライン実行サービスとの１つ以上の対話を実施することを含むことを特徴とする請求項４に記載の方法。
【請求項１６】
前記提供された１つ以上のコンピューティングノードが、前記オンライン実行サービスによって、前記オンライン実行サービスを使用する前記クライアントの口座と関連付けられ、前記オンライン実行サービスとの前記１つ以上の対話が、前記オンライン実行サービスに対して、前記クライアントの代わりに、前記クライアントの前記口座についての情報を提供することを含むことを特徴とする請求項１５に記載の方法。
【請求項１７】
前記提供された１つ以上のコンピューティングノードが、前記クライアントが前記１つ以上のコンピューティングノードにアクセスすることを防止する方式で、前記オンライン実行サービスによって、前記構成可能なワークフローサービスと関連付けられることを特徴とする請求項１５に記載の方法。
【請求項１８】
前記複数のワークフローコンポーネントが、複数の前記ソースコンポーネントをさらに含み、前記クライアントが、前記ソースコンポーネントのうちの少なくとも１つを前記構成可能なワークフローサービスに対して供給して、前記クライアントに対して特有のデータソースに対するアクセスを可能にすることを特徴とする請求項４に記載の方法。
【請求項１９】
前記複数のワークフローコンポーネントが、複数の前記データ操作コンポーネントをさらに含み、前記データ操作コンポーネントのうちの少なくとも１つが、前記クライアントによって、前記構成可能なワークフローサービスに対して供給される関連付けられたデータ操作動作を有し、前記クライアントに対して特有の定義されたアクティビティの実施を可能にすることを特徴とする請求項４に記載の方法。
【請求項２０】
前記クライアントは、前記複数のコンピューティングノードの前記供給または前記クライアントに対する前記定義されたワークフローの前記実装のうちの少なくとも１つと引き換えに、前記構成可能なワークフローサービスに１つ以上の料金を提供する前記構成可能なワークフローサービスのカスタマーであることを特徴とする請求項４に記載の方法。
【請求項２１】
前記構成可能なワークフローサービスの複数のさらなるクライアントの各々について、
前記さらなるクライアントのさらなる定義されたワークフローに対する構成情報を受信することと、
前記さらなるクライアントのさらなる定義されたワークフローに対する前記構成情報を、前記構成可能なワークフローサービスの１つ以上の記憶機構に記憶することと、
前記さらなる定義されたワークフローを、前記さらなるクライアントの代わりに、１つ以上のコンピューティングノードに１回以上実装することと
をさらに含むことを特徴とする請求項４に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、構成可能なワークフロー機能の提供に関する。
【背景技術】
【０００２】
ソフトウエアプログラムによって生成および使用されるデータの量が増すにつれて、このようなデータを管理および分析する複雑性も、少なくとも一部の状況において増している。加えて、オンライン環境および他のネットワーク化された環境におけるソフトウエアプログラムの実行が増えるにつれて、種々異なる場所および様式での管理および分析すべきデータのアクセス可能性も高まり、このことは、このようなデータの管理および分析の複雑性を増しかねない。したがって、ソフトウエアプログラムによって生成および使用されるデータを管理および分析する際に、様々な問題が存在する。
【図面の簡単な説明】
【０００３】
【図１】遠隔の顧客が定義された様式でソースデータを操作する定義されたワークフローを作成、構成、および実行することを可能にする機能性を提供する構成可能なワークフローサービスの例示の実施形態を図示する。
【図２Ａ】ソースデータを特定の条件下で特定の様式で操作するために定義されたワークフローを用いる例を図示する。
【図２Ｂ】ソースデータを特定の条件下で特定の様式で操作するために定義されたワークフローを用いる例を図示する。
【図３】サポートされた顧客システムのために、定義されたワークフローの使用を管理する構成可能なワークフローサービスを提供するように構成されたコンピューティングシステムの例示の実施形態を図示するブロック図である。
【図４】構成可能なワークフローサービスルーチンの流れ図の例示の実施形態を図示する。
【図５】ワークフローコンポーネントワーカープロセスルーチンの例示の実施形態の流れ図を図示する。
【発明を実施するための形態】
【０００４】
複数の遠隔の顧客にとって利用可能な構成可能なワークフローサービスの制御下などにある定義された様式でソースデータを操作する定義されたワークフローを作成、構成、および実行する機能性へのアクセスを顧客に提供する技法を説明する。少なくとも一部の実施形態では、遠隔の顧客は、１つ以上の公衆網を介して構成可能なワークフローサービスと対話して、顧客によって使用されるようにこの構成可能なワークフローサービスによって提供される定義されたワークフローを作成して、構成し得るが、このような定義されたワークフローは、例えば、各々が指定されたタイプの入力データに対して１つ以上の指定されたタイプのデータ操作動作を実施するように構成された複数の相互接続されたワークフローコンポーネントを含み得る。顧客がこのような定義されたワークフローを構成した後、構成可能なワークフローサービスは、さらに、一部の状況下で、構成可能なワークフローサービスによって提供される複数のコンピューティングノードを供給して、各々が、定義されたワークフロー用のワークフローコンポーネントのうちの少なくとも１つを実装するようにすることによって、および、定義されたタイプのソースデータを検索して、それを定義された様式でワークフローコンポーネントに提供することによってなど、定義されたワークフローを一回以上にわたって、かつ１つ以上の様式で実行し得る。すなわち、少なくとも一部の実施形態では、説明した技法の一部または全部は、以下により詳細に説明するように、１つ以上の構成されたコンピューティングシステム上で実行される１つ以上のソフトウエアモジュールによって実装され得るように、構成可能なワークフローサービスの実施形態によって自動的に実行される。
【０００５】
上記のように、定義されたワークフローは、少なくとも一部の実施形態では、定義されたワークフローに対する入力データに対応する１つ以上のデータソースワークフローコンポーネントを有することを含む複数のタイプのものであり得る複数のワークフローコンポーネントと、データに対して実施されることになっている定義されたデータ変換または他の操作に対応する１つ以上のデータ操作ワークフローコンポーネントと、定義されたワークフローから出力データを提供することに対応する１つ以上のデータ宛先ワークフローコンポーネントと、を含み得る。加えて、相互接続は、ワークフローコンポーネント間でのデータフローに対応するワークフローコンポーネント間で定義され得るため、第１のコンポーネントから出力されたデータは、入力として第２のコンポーネントに供給され得るが、この関係は、第１のコンポーネントから第２のコンポーネントへの接続であると表され得る。少なくとも一部の実施形態および状況においては、構成可能なワークフローサービスは、オプションとしては、１つ以上の様式で構成された後で、顧客が定義された顧客のワークフロー中で選択して用い得る事前定義されたワークフローコンポーネントの群を提供し得る。さらにその上、少なくとも一部の実施形態および状況においては、構成可能なワークフローサービスは、顧客が、定義された顧客のワークフロー中で用いられるワークフローコンポーネントの一部または全部を供給するまたは別様に定義することを可能にし得る。
【０００６】
ワークフローに対して定義された各々のデータソースワークフローコンポーネントは、示されたデータソースからデータを取得することに対応し、かつこのデータの記憶場所などの情報と、オプションとしては、この記憶場所に関連するさらなるアクセス情報（例えば、顧客と関連付けられたログイン情報、メタデータおよび／またはデータ内容に関連するなどの、用いられるデータを識別するために使用する特定の探索物または他の情報など）とを含み得る。一部の実施形態では、構成可能なワークフローサービスは、顧客がそのソースデータを記憶する際に用いる内部記憶場所を提供し得るが、特定のデータソースはこのような内部記憶場所に対応し、一方、特定のデータソースが、顧客によって提供されるまたは別様に制御される１つ以上のネットワークアクセス可能記憶システム、１つ以上のオンライン記憶サービス、１つ以上のオンラインデータ生成サービスなどのような構成可能なワークフローサービスの外部の実施形態および状況もある。用いられ得るオンライン記憶サービスの例の包括的なリストには、次が含まれる：さまざまなタイプのオブジェクトデータを記憶するＡｍａｚｏｎ  Ｓｉｍｐｌｅ  Ｓｔｏｒａｇｅ  Ｓｅｒｖｉｃｅ  （Ｓ３）、リレーショナルデータベース機能性を提供するＡｍａｚｏｎ  Ｒｅｌａｔｉｏｎａｌ  Ｄａｔａｂａｓｅ  Ｓｅｒｖｉｃｅ  （ＲＤＳ）、キー値対を記憶する機能性を提供するＡｍａｚｏｎ  ＳｉｍｐｌｅＤＢ、ＮｏＳＱＬデータベース機能性を提供するＡｍａｚｏｎ  ＤｙｎａｍｏＤＢサービス、仮想ローカルブロック記憶デバイスを目標となるコンピュータシステムに搭載することを可能にすることを含む、生ブロック記憶デバイスにアクセスするＡｍａｚｏｎ  Ｅｌａｓｔｉｃ  Ｂｌｏｃｋ  Ｓｔｏｒｅ  （ＥＢＳ）など。オンラインデータ生成サービスの例の包括的なリストには、ＲＳＳフィード、アプリケーションおよびサービスを実行する機能性を監視して、対応する情報を生成するＡｍａｚｏｎ  Ｃｌｏｕｄｗａｔｃｈ  Ｓｅｒｖｉｃｅなどが含まれる。したがって、データソースは、オプションとしては分散様式で実装されるリレーショナルもしくは他のデータベース（例えば、ＨＢａｓｅオープンソース分散データベース、ＢｉｇＴａｂｌｅ分散データベース、ＭｏｎｇｏＤＢデータベースシステム、Ａｐａｃｈｅ  Ｃａｓｓａｎｄｒａ分散データベース管理システムなど）、ハッシュテーブル、ファイルシステム、オブジェクトストアなどの様々な形態のものであり得、データソースから所得され得るデータ群の例の包括的なリストは、ファイル（例えば、ウェブサーバログ）、データベースローもしくは他の報告、記憶されたデータオブジェクト、データのストリーミングされた群などを含む。
【０００７】
したがって、一部の状況および実施形態では、特定の定義済みワークフローは、複数のデータソースからデータを取得して用い得るが、これらのデータソースの一部または全部が、オプションとして、構成可能なワークフローサービスの外部にある。加えて、構成可能なワークフローサービスは、構成可能なワークフローサービスの特定の内部記憶機構に対応する、１つ以上の特定のオンライン記憶サービス（例えば、構成可能なワークフローサービスと統合されたもしくは別様に提携したまたは、そうする代わりに、構成可能なワークフローサービスとは提携していないオンライン記憶サービス）に対応するためなどで、オプションとして、１つ以上のタイプのデータソースワークフローコンポーネントを事前定義する。同様に、顧客は、顧客固有の記憶場所、事前定義されたデータソースワークフローコンポーネントなしのオンライン記憶デバイスなどに対応するためなどで、オプションとして、１つ以上のデータソースワークフローコンポーネントを定義し得る。
【０００８】
ワークフローに対して定義される各々のデータ操作ワークフローコンポーネントは、１つ以上の定義されたデータ変換または他の操作を、データ操作ワークフローコンポーネントに入力されたデータに対して実施することに対応し得る。加えて、データ操作ワークフローコンポーネントからの出力は、顧客に提供される予定のデータ宛先ワークフローコンポーネントに提供され得る、または、そうする代わりに、次のデータ操作ワークフローコンポーネントにとって（例えば、構成可能なワークフローサービスによって提供される１つ以上の記憶場所を用いることによって）アクセス可能な記憶場所に中間データを記憶することなどによって、１つ以上の電子メッセージを介することなどによって、次のデータ操作ワークフローコンポーネントに提供される中間データであり得る。定義されたデータ操作は、定義されたタイプの計算を１つ以上の入力データ群に対して実施すること、複数の入力データ群を１つ以上の様式で集約すること、１つ以上の入力データ群のサブ集合を選択すること、データを１つの記憶場所から別の記憶場所に移動させること、などを含む様々な形態のものであり得る。実施例のデータ操作の包括的なリストには、分散データのコピーを実施すること、１つ以上のＳＱＬ（構造化照会言語）変換を実施すること、マップ減少アーキテクチャ（例えば、Ａｍａｚｏｎ  Ｅｌａｓｔｉｃ  ＭａｐＲｅｄｕｃｅサービス内で用いられる）内で１つ以上のマップ関数および／または減少関数（ｒｅｄｕｃｅ  ｆｕｎｃｔｉｏｎ）を実施すること、科学的または数学的なパッケージ（例えば、ＭａｔＬａｂ、Ｍａｔｈｅｍａｔｉｃａなど）を用いること、顧客から供給されたスクリプトまたは他のプログラムを実行すること、などが含まれる。したがって、一部の状況および実施形態においては、定義された特定のワークフローは、事前定義されたおよび／または顧客によって定義されたデータ操作ワークフローコンポーネントを用いて、複数の定義されたデータ操作ワークフローコンポーネントを介して複数のデータ操作動作を実施し得る。
【０００９】
ワークフローに対して定義された各々のデータ宛先ワークフローコンポーネントは、出力データを定義されたワークフローから１つ以上の記憶場所に対しておよび／または１つ以上の様式で提供することに対応し得る。データ宛先ワークフローコンポーネントによって用いられる記憶場所のタイプおよび（およびこのようなデータ宛先ワークフローコンポーネントに対して記憶された対応する情報）は、構成可能なワークフローサービスの内部および／または外部の記憶場所を用いることを含め、少なくとも一部の実施形態におけるデータソースワークフローコンポーネントの場合と類似または同じであり得る。加えて、少なくとも一部の実施形態および状況においては、特定のデータ宛先ワークフローコンポーネントは、特定のタイプの報告を生成すること、出力データを１つ以上のタイプの定義された電子通信を介して送ること、などの、特定の様式で出力データを準備して提供することを含み得る。したがって、一部の状況および実施形態では、特定の定義されたワークフローは、事前定義されたおよび／または顧客によって定義されたデータ宛先ワークフローコンポーネントを用いて、複数の定義されたデータ宛先ワークフローコンポーネントを介して、複数の様式で複数のタイプの出力データを提供し得る。
【００１０】
加えて、顧客は、様々な実施形態で様々な様式でワークフローを定義し得る。例えば、構成可能なワークフローサービスのある実施形態は、定義されたＧＵＩ（「グラフィカルユーザインターフェース」）、定義されたＡＰＩ（「アプリケーションプログラミングインターフェース」）、および／または定義されたＣＬＩ（「コマンドラインインターフェース」）などの、顧客が用いる１つ以上のインターフェースを提供し得る。提供されたＧＵＩを用いるとき、顧客を表すユーザは、例えば、定義されるワークフローに対する特定のワークフローコンポーネントを指定するためにビジュアルエディターを用い得るし、かつ、データフローに対応する特定のワークフローコンポーネント間の相互接続をさらに指定し得るが、少なくとも一部のこのような実施形態では、構成可能なワークフローサービスは、様々なグラフノードが特定のワークフローコンポーネントに対応していて、定義されたワークフローを、ワークフローを論理的に表すグラフとして表し得る。図２Ａは、このようなワークフローグラフの例に対するさらなる解説的な詳細を提供する。
【００１１】
構成可能なワークフローサービスは、顧客に対する定義されたワークフローを、様々な様式で様々な時点でさらに実装し得る。一部の実施形態では、定義されたワークフローが用いられようとするごとに、構成可能なワークフローサービスは、各々が、定義されたワークフローに対する少なくとも１つのワークフローコンポーネントを実装する複数のコンピューティングノードを用いることなどによって、定義されたワークフローを表す論理グラフの物理的コピーをインスタンス化する。特に、少なくとも一部の実施形態では、コンピューティングノードの一部または全部が、構成可能なワークフローサービスによって供給されて、これらのコンピューティングノードが、各々が、作業負荷ワーカープロセスを実行するなど、各々のこのような実装されたワークフローコンポーネントに対応する特定のワークフローコンポーネントを実装する（例えば、対応するソフトウエアおよび／またはデータをこれらのコンピューティングノードにロードする）ように構成する。コンピューティングノードは、各々が個別の物理的コンピュータシステム、個別の仮想マシン（例えば、物理的コンピュータシステム上にホスティングされる複数の仮想マシンのうちの１つ）、分散様式で動作する複数の物理的コンピュータシステムの群などであることを含む、少なくとも一部の実施形態では様々な形態を有し得る。定義されたワークフロー用に用いられるこのようなコンピューティングノードの一部または全部は、一部の実施形態では、顧客に用いられる構成可能なワークフローサービスによって提供される複数のコンピューティングノードから選択され得る。加えて、構成可能なワークフローサービスによって提供されるコンピューティングノードの代わりであろうとまたはこれに加えてであろうと、このようなコンピューティングノードの一部または全部は、顧客によって提供されるまたは別様に制御され得るおよび／または１つ以上のオンライン実行サービスによって提供され得る。用いられ得る実施例のオンライン実行サービスの包括的リストには、Ａｍａｚｏｎ  Ｅｌａｓｔｉｃ  Ｃｏｍｐｕｔｅ  Ｃｌｏｕｄ（［ＥＣ２］）プログラム実行サービス、分散マップ−減少動作（例えば、サービスからのコンピューティングシステムのクラスタを用いて、構成可能なワークフローサービス用にコンピューティングノードを表すまたは実装することによって）を実施するためのＡｍａｚｏｎ  Ｅｌａｓｔｉｃ  ＭａｐＲｅｄｕｃｅサービス、などが含まれる。加えて、定義された特定のワークフローを複数回実装しようとするとき、構成可能なワークフローサービスが、定義されたワークフローに対するコンピューティングノードの一部または全部の供給および利用可能性を、定義されたワークフローを（例えば、構成可能なワークフローサービスなどによる自動的決定に基づいて、顧客からの命令に従って）実装するこのような２回以上の回数間で維持し得る実施形態もあれば、次の実装のために、このようなコンピューティングノードの一部または全部が、実装後に利用可能になるように解放されて、コンピューティングノード（オプションとしては異なるコンピューティングノード）同じタイプの供給が提供され得る実施形態もある。
【００１２】
定義されたワークフローは、少なくとも一部の実施形態および状況においてはさらなるタイプの関連付けられた情報をさらに有し得る。例えば、顧客は、将来の実装を１つ以上の定義された将来の時点にスケジューリングすること、１つ以上の定義された基準が満たされたときに（例えば、特定のソースデータの利用可能性に少なくとも部分的に基づいて）１つ以上の将来の実装をスケジューリングすること、などによって、定義されたワークフローをいつ実装するかを示す情報を、即座に実装するための顧客命令に基づくなどして、指定し得る。定義された基準は、特定のワークフローコンポーネントとまたはそうする代わりに、定義されたワークフローと全体として関連付けられること、などの様々な様式で指定され得る。例えば、特定のワークフローコンポーネントは、ワークフローコンポーネントをいつ実行するかを決定することを評価するための定義された前提条件基準を有し得るおよび／またはいつ実行を完了するかおよび／または生成されたデータを（例えば、次のワークフローコンポーネント、中間記憶場所などに）提供するかを評価する定義された事後条件の基準を有し得る。一部の実施形態および状況においては、定義されたワークフローは、１つ以上の指定された基準が満たされたまたは満たされなかったときに（例えば、特定のソースデータが利用可能でないなどの、定義されたワークフローが特定の時点で実装されない場合）、顧客に通知を提供する（または他のアクティビティを実施する）ために用いられ得る１つ以上の関連付けられた警告をさらに有し得る。
【００１３】
構成可能なワークフローサービスはさらに、少なくとも一部の実施形態では有料のサービスであり得るため、構成可能なワークフローサービスの顧客は、構成可能なワークフローサービスによって提供される機能性の少なくとも一部に対する料金を構成可能なワークフローサービスに支払う顧客である。加えて、１つ以上のオンライン記憶サービスおよび／またはオンライン実行サービスが、構成可能なワークフローサービスによって、特定の顧客に対する特定の定義されたワークフローを実装することの一部として用いられるとき、このような他のサービスもまた、オプションとしては、構成可能なワークフローサービスを介してであろうと直接に顧客に対してであろうと、このような使用に対して使用料を課し得る。
【００１４】
したがって、構成可能なワークフローサービスの使用は、特定の時点または別様に特定の基準が満たされたときに複数のソースからデータを収集することをスケジューリングする、定義されたタイプのデータ操作動作をソースデータに対して実施すること、および定義されたワークフローによって生成された出力データを様々な様式で提供することを顧客に対して可能にすることを含む、様々な恩典を様々な実施形態および状況で提供し得る。さらなる恩典は、本明細書の他の箇所で論じられており、当業者によって別様に理解されるであろう。
【００１５】
解説目的で、ワークフローを定義して実装する特定のインスタンスが、特定のタイプのデータ、特定のタイプのデータ操作動作、ならびに特定のタイプの記憶サービスおよび実行サービスに関連した方法を含む特定の方法で提供される一部の実施形態を以下に説明する。これらの実施例は、解説目的で提供されており、簡潔さのために単純化されており、独創的な技法を広範囲の様々な状況下で用いることが可能であり、その一部が以下で論じられるが、これらの技法は特定のタイプのデータ、記憶もしくは他のデバイス、コンピューティングシステム、またはコンピューティングシステム装置での使用に制限されない。
【００１６】
図１は、構成可能なワークフローサービスの様々な顧客に対する定義されたワークフローの作成および実行を管理する構成可能なワークフローサービス１１０の実施例の実施形態を示すネットワーク図である。定義されたワークフローを実装する一部として、構成可能なワークフローサービス１１０は、特定のコンピューティングノードを、各々が定義されたワークフローに対応する指定されたアクティビティを実施するようにさらに供給する。一部の実施形態では、構成可能なワークフローサービス１１０は、オプションとして、顧客用の定義されたワークフローが実行され得るコンピューティングノード１４０のある群を提供する。構成可能なワークフローサービスによって用いられるコンピューティングノードの一部または全部が、定義されたワークフローがそのために実装される顧客、１つ以上のオンライン実行サービスなどによるなどして、構成可能なワークフローサービスの外部で提供され得る実施形態もある。加えて、一部の実施形態では、構成可能なワークフローサービス１１０は、オプションとして、定義されたワークフローの実行を容易化するためにデータ記憶され得る１つ以上の記憶ノード１５０を含む。例えば、記憶ノード１５０は、存在すれば、定義されたワークフローの実行中に生成される中間結果データを記憶するために用いられ得るし、一部の実施形態では、定義されたワークフローに提供されるソースデータおよび／または定義されたワークフローによって生成される最終的な出力データを記憶するために、さらに用いられ得る。図１には示されていないが、構成可能なワークフローサービスは、図３および別のところを参照してより詳細に説明するように、１つ以上の構成されたコンピューティングシステムを用いて実装され得る。
【００１７】
図１は、１つ以上のネットワーク１９０と、構成可能なワークフローサービス１１０の顧客が、ワークフローを定義して実行するためにサービス１１０と対話する際に介する様々な顧客コンピューティングシステム１６０と、をさらに示す。図１のネットワーク１９０は、イントラネット、インターネット、インターネットへのおよび／またはからのアクセスが可能な１つ以上の私的ネットワーク、セルラーネットワーク、ローカルエリアネットワーク、または他のいずれかのこのようなネットワークもしくはこれらの組み合わせを含む、いずれかの適当なネットワークまたはネットワークの組み合わせを含み得る。ネットワークを介する通信は、有線もしくは無線の接続ならびにこれらの組み合わせによって可能にされ得る。
【００１８】
一部の実施形態では、構成可能なワークフローサービス１１０は、顧客はサービス１１０との様々な対話を実施することを可能にするなどのために、ＧＵＩ（図示せず）および／またはＡＰＩ（図示せず）の一方または双方を提供し得る。例えば、特定の顧客を表すユーザ（図示せず）は、ネットワーク１９０上で構成可能なワークフローサービス１１０とのさらなる対話を発生させるために、顧客コンピューティングシステム１６０のうちの１つとローカルで対話し得る。ユーザは、例えば、ユーザが顧客にとって興味のある１つ以上のワークフローを定義し得る際に介する構成可能なワークフローサービスのワークフローエディターモジュール１２０と対話し得る。ユーザとの対話の一部として、構成可能なワークフローサービス１１０は、顧客および、オプションとして、ユーザの代表者に関する様々な顧客情報１１２を記憶し得るし、また、顧客に対する新たに定義されたワークフローの特定の定義を情報１１４の一部として記憶し得る。一部の実施形態では、特定のワークフローの定義には、１つ以上の事前定義済みシステムによって提供されたワークフローコンポーネント定義１１６を用いることなどによって、１つ以上の定義されたワークフローコンポーネントを選択し、これらのワークフローコンポーネント間の対話を指定するというユーザによる行為が含まれ得るが、構成可能なワークフローサービス１１０がこのようなシステムによって提供された事前定義済みのワークフローコンポーネントをなんら提供し得ない実施形態もある。新しいワークフローを定義することの一部として、ユーザは、ソースデータが検索されて、ワークフローの定義のために用いられることになっている１つ以上のソース位置と、定義されたワークフローによって生成されたデータが提供される１つ以上の宛先位置と、をさらに指定し得る。構成可能なワークフローサービス１１０によって用いられる様々な情報１１２、１１４および１１６は、構成可能なワークフローサービスのデータベースなどの、構成可能なワークフローサービス１１０をサポートまたは提供する１つ以上のシステム上にさらに記憶され得るが、このようなシステムは、図１に関連して示されてはいない。
【００１９】
加えて、顧客を表すユーザは、オプションとして一部の実施形態では、１つ以上の新しいワークフローコンポーネントを新しいワークフローを定義することの一部として定義し得るが、そうであれば、このような顧客が定義したワークフローコンポーネントは、少なくとも一部の実施形態では情報１１６中に記憶される定義情報をさらに有し得る。顧客が定義したワークフローおよびいずれかの顧客が定義したワークフローコンポーネントは、一部の実施形態では、顧客が別様に指定しない限り、私的なものである（例えば、他の指定がない限り、この顧客にしかアクセスできないまたは別様に見えない）として取り扱われ得るが、少なくとも一部のこのような顧客固有の情報が、こうする代わりに指定された状況下で、（例えば、このような情報を定義した顧客が他者による使用を承認する場合に、このような情報を定義した顧客に提供された料金または他の恩典の代わりに）他の顧客が顧客の定義されたワークフローコンポーネントおよび／またはワークフローの一部または全部を使用することを可能にするなど、他の顧客に利用可能なものとし得る実施形態および状況もある。類似の様式で、顧客の定義されたワークフローによって使用されるソースデータと、顧客の定義されたワークフローによって生成される最終的な出力データとは、少なくとも一部の実施形態では、別様に指定されない限りその顧客にとっては私的なものとして取り扱われ得るが、一部または全部のソースデータおよび／または最終的な出力データは、こうする代わりに、（例えば、このような情報と関連付けられる顧客が他者による使用を承認する場合に、データが関連付けられた顧客に対する料金または他の恩典の代わりに）指定された状況下では他の顧客に対して利用可能にされ得る実施形態もある。
【００２０】
顧客が、ソースデータがそこから取得され得るおよび／または最終的な出力データが定義されたワークフロー用にそこに提供され得る１つ以上の記憶場所を示すとき、このような記憶場所は、別のところでより詳しく討論するように、様々な実施形態で様々な形態を有し得る。一例として、少なくとも一部の実施形態では、構成可能なワークフローサービスは、１つのシステム１０５（例えば、１つのエンティティによって動作される１つのシステム）を形成するなどのために、１つ以上の特定のオプションとしてのオンライン記憶サービス１４５と統合または別様に提携し得る。そうである場合、このようなオプションとしてのオンライン記憶サービス１４５を持つ対話１４７は、ソースデータを検索するためおよび／または最終的な出力データを記憶するために実施され得る。さらにその上、少なくとも一部の実施形態では、ワークフローの実行中に生成された中間データ結果は、１つ以上のオプションとしての記憶ノード１５０に加えてであろうとこれらの代わりであろうと、同様に、定義されたワークフローの第１の部分によって生成され、かつ後で、ワークフローの第２の定義された部分によってアクセスされて用いられるなどのために、このようなオンライン記憶サービス１４５に記憶され得る。その上、少なくとも一部の実施形態および状況においては、１つ以上のオンライン記憶サービス１７０が、オプションとしてのオンライン記憶サービス１４５の一部または全部に加えてまたはこれらの代わりに、顧客コンピューティングシステム１６０に対して、および構成可能なワークフローサービス１１０に対してネットワーク１９０を介して利用可能であり、また、同様にネットワーク１９０を介して用いられ得る。加えて、少なくとも一部の実施形態および状況においては、特定の顧客は、１つ以上の顧客固有の記憶システムまたは他の記憶場所を、同様にネットワーク１９０を介して用いられ得る１つ以上の他のコンピューティングシステム１８５を用いて提供し得る。
【００２１】
顧客は、ワークフローを定義するために構成可能なワークフローサービスと対話した後、定義されたワークフローの実行を開始するために、構成可能なワークフローサービスのワークフローエンジンモジュール１３０とさらに対話し得る。特定のワークフローの実行は、顧客からの対応する命令があれば即座に実施される、指定された将来の時点でまたはワークフローの実行を開始する他の指定された基準（１つ以上の定義された前提条件に対する前提条件など）が満たされたときに発生する、など様々な様式で開始され得る。ワークフローエディターモジュール１２０と同様に、ワークフローエンジンモジュール１３０は、一部の実施形態では、顧客に使用されるように、ＧＵＩインターフェースおよび／またはＡＰＩインターフェースを提供し得る。定義されたワークフローの実行が開始されるとき、実施例の実施形態におけるワークフローエンジンモジュール１３０は、定義されたワークフローに対するワークフロー定義情報を情報１１４から検索して、定義されたワークフローの実行を、１つ以上のコンピューティングノード上で開始する。特に、ワークフロー定義は、各々が定義された動作に対応しかつ様々な様式で相互接続される様々な論理ノードで構築され得るし、ワークフローエンジンモジュール１３０は、用いられる特定のコンピューティングノードを選択して、特定のこのような動作を実施し、かつ対応するワークフローワーカープロセスを供給してそれらの実行を各々のこのような選択されたコンピューティングノード上で開始するためのアクティビティをさらに実施し得る。このようなコンピューティングノードを供給することおよび／またはワークフローワーカープロセスをコンピューティングノード上で実行することの一部として、１つ以上の記憶場所とのさらなる対話を実施して、定義されたワークフローの他のワークフローワーカープロセスによって用いられる中間結果データの場合を含め、用いられる入力データを取得するおよび／または生成された結果データを記憶し得る。
【００２２】
定義されたワークフローを実装するために用いられるコンピューティングノードの一部または全部は、例えば、存在すれば構成可能なワークフローサービス１１０によって提供されるオプションとしてのコンピューティングノード１４０から選択され得るし、ワークフローワーカープロセス１４２は、定義された動作を実装するためにこれらのコンピューティングノード上で実行され得る。ワークフローエンジンモジュール１３０は、オプションのコンピューティングノード１４０の代わりにまたはこれらに加えて、構成可能なワークフローサービス１１０によって提供されないコンピューティングノードを用い得る実施形態もある。例えば、一部の実施形態および状況においては、特定の顧客は、１つ以上の他のコンピューティングシステム１８５を提供するまたは別様に制御し得るし、ワークフローエンジン１３０は、このような他のコンピューティングシステム１８５を、その顧客が定義したワークフローを実行する際に用いられるコンピューティングノードとして構成して用い得る。加えて、一部の実施形態では、１つ以上のオンラインプログラム実行サービス１４８および／または１７５が、様々な様式でプログラムを実行する際に用いられるように利用可能であり得るし、そうであれば、特定の顧客の定義されたワークフローの一部または全部を実行するためにコンピューティングノード（図示せず）を提供するために用いられ得るが、例えば、ワークフローエンジンモジュール１３０は、特定のワークフローワーカープロセスを供給して、このようなオンラインプログラム実行サービスによって提供された特定のコンピューティングノード上でそれらの実行を開始し得る。一例として、少なくとも一部の実施形態では、構成可能なワークフローサービスは、上述した単一システム１０５の一部などの、１つ以上の特定のオプションのオンラインプログラム実行サービス１４８と（１つ以上のオプションの記憶サービス１４５に加えてまたはこれらの代わりに）統合または提携し得る。そうであれば、このようなオプションのオンラインプログラム実行サービス１４８との対話１４９は、コンピューティングノードを供給するために、特定のワークフローコンポーネントの実行を開始するため、特定のワークフローコンポーネントによって生成された出力データを受信するなどのために、実施され得る。
【００２３】
構成可能なワークフローサービス１１０は、定義されたワークフロー用の特定のタイプのソースデータを生成して提供する、顧客の定義されたワークフローによって生成された最終的な出力データを管理することに対するさらなるアクティビティを実施することなどのさらなる技法を実施し得る実施形態もある。加えて、構成可能なワークフローサービス１１０は、一部の実施形態では、サーバコンピューティングシステムの１つ以上のハードウエアＣＰＵプロセッサ（図示せず）をプログラムするなどの、説明した技法の一部または全部を実施するためのサーバコンピューティングシステムをプログラムするまたは別様に構成するために１つ以上のサーバコンピューティングシステムを実行するソフトウエア命令に基づいて実装され得るが、このようなソフトウエア命令は、例えば、モジュール１２０および／または１３０を実装するために用いられ得る、または、こうする代わりに、構成可能なワークフローサービスの機能性が、他のタイプのモジュールを用いて提供され得る。
【００２４】
このような様式で、構成可能なワークフローサービス１１０は、部分的または全体的に構成可能なワークフローサービス１１０の計算および記憶のリソースを用いて実行され得るワークフローを定義することを顧客に対して可能にすること、操作されるデータを取得するために様々なタイプのオンラインデータソースと対話すること、および記憶または他の用途のために生成された出力データを提供することを含む様々な恩典を様々な外部の顧客に提供する。構成可能なワークフローサービス１１０の特定の動作に関連するさらなる詳細は、本明細書の他の箇所に含まれる。
【００２５】
図１の前述の実施例の実施形態を、各々が１つ以上の関連付けられたユーザを有し得る１つ以上の顧客システムと連動して様々なタイプの機能性を提供する構成可能なワークフローサービス１１０に関連して説明したが、他の様々な実施形態が存在し得ることが理解されるであろう。例えば、少なくとも一部の実施形態および状況においては、顧客は、組織または他のグループ（例えば、個々の人物ではなくて複数の人を有する会社）を表し得る。したがって、顧客は、様々な実施形態で様々な形態を有し得る。
【００２６】
一部の実施形態では、構成可能なワークフローサービス１１０ならびに、オプションとして、使用されるいずれかのオンライン記憶サービスおよび／またはオンラインプログラム実行サービスは各々が、１つ以上の料金ベースの構造または合意に従って動作し得る。例えば、構成可能なワークフローサービス１１０から説明した技法の一部または全部へのアクセスは、一部の実施形態では、構成可能なワークフローサービス１１０の提供者または操作者に対しておよび／または構成可能なワークフローサービス１１０の説明された技法を用いる少なくとも一部の顧客システムに対して、料金ベースまたは他の有料様式で提供され得る。一例として、構成可能なワークフローサービス１１０の顧客は、構成可能なワークフローサービス１１０によって提供される機能性を使用するために、一回払い料金、定期的（例えば、月ごとの）料金、および／または１つ以上のタイプの使用量ベースの料金を支払い得る。このような料金は、次の包括的リストに示されるような１つ以上の要因およびアクティビティに基づき得る：特定のワークフローを定義するために実施される対話の量および／またはタイプに基づく；定義されたワークフローおよび／またはその定義されたワークフローコンポーネントの一部または全部のサイズおよび／またはタイプ；定義されたワークフローの用途に基づく、例えば、記憶されるおよび／または転送されるデータの量に基づいて、例えば、データのサイズ、記憶時間の量などに基づいて、例えば、定義されたワークフローを実行する際に用いられる計算リソースの尺度（例えば、用いられるコンピューティングノードの量）、用いられるプロセッサ機能の尺度（例えば、ＣＰＵサイクル）、定義されたワークフローの実行中に発生する時間の量、定義されたワークフロー用のコンピューティングノードを提供する際のアクティビティ、定義されたワークフロー用に供給されたコンピューティングノードが他の使用に対しては利用不可能である時間、例えば、これらのコンピューティングノードが、ソースデータが利用可能となるのを、または他の前提条件が満たされるのを待っている時間の量；記憶され、操作され、および／または生成される特定のデータ群のコンテンツまたは他の特徴に基づいて、などである。
【００２７】
図２Ａ〜２Ｂは、顧客用のワークフローを、特定の状況下で特定の様式で定義して実行する例を示す。特に、図２Ａ〜２Ｂの例では、顧客は、ウェブログデータ（例えば、顧客によって動作されるウェブサイトからまたはこうする代わりに他の様式で）にアクセスして、このデータを分析して、目的とする情報を決定することを所望する。特に、この例では、顧客は、ウェブサイトの特定のユーザのクリックストリームデータを特定するために、ウェブログデータの周期的な（例えば、３時間ごとの）分析を実施すること、および、このクリックストリームデータを１つ以上の様式で集約すること（例えば、ウェブサイトの特定の定義された年齢群のユーザに対する集約情報を決定すること）を所望する。クリックストリームデータは、それが定義された様式で集約された後で、後で用いられるように顧客のデータベースに記憶されること、および、１つ以上の電子通信を介して顧客に提供される１つ以上の報告を生成するために用いられることを含む、様々な様式でさらに用いられ得る。
【００２８】
特に、図２Ａに関連して、構成可能なワークフローサービスの特定の顧客（この例では「カスタマーＣ」と呼ぶ）は、例えば、構成可能なワークフローサービスのワークフローエディターモジュールとの様々な対話に基づいて、または、こうする代わりに、定義されたワークフローに関する情報を定義された様式で提供するために構成可能なワークフローサービスの定義されたＡＰＩとの１つ以上のプログラム的対話を実施することによって（例えば、定義されたワークフローを表すために、ファイルをアップロードするまたは別様に１つ以上のデータ構造を指定することによって）様々なノードおよび相互接続を含む新しいワークフローを定義した。この例では、定義されたワークフローは、様々なノードを含む論理グラフ２００であらわされる。
【００２９】
図２Ａでは、カスタマーＣは、定義されたワークフローに対する２つのタイプのデータソースを表すために、２つのデータソースノード２２０を定義した。第１のデータソース２２０ａは、この例ではオンライン記憶サービス２０５によって記憶される周期的に利用可能となるウェブログデータに対応する。特に、この例では、オンライン記憶サービス２０５は様々なデータ群２０６および２０７（例えば、ファイル）を記憶し、ウェブログデータソースに対応するノード２２０ａは、顧客用のウェブログデータを表すオンライン記憶サービスから１つ以上の特定のデータ群２０７を選択するために用いる情報を含む。ノード２２０ａは、ファイル名または特定のデータ群と関連付けられた他のメタデータなどの特定のデータ群２０７を識別するために用いる様々な基準、データ群２０７のコンテンツに関連する１つ以上の指定された基準（例えば、目的とする時間周期に対応するデータベースから報告を抽出するために用いられるウェブログデータに対応する時間フレーム）などを含み得る。ノード２２０ａは、データ群２０７が関連付けられるオンライン記憶サービスでのカスタマーＣの口座情報または他のアクセス情報などの、データ群２０７をオンライン記憶サービス２０５から取得するために用いられる様々なアクセス情報をさらに含み得る。加えて、この例では、カスタマーＣは、ノード２２０ａの実行と、ノード２２０ａに対する指定された基準を満たすデータ群２０７が利用可能であるときに、ワークフローの残りが始まることと、を示すために、１つ以上の前提条件をデータソースノード２２０ａに関連付けられたノード２２５ａの一部として定義した。前提条件２２５ａまたは定義されたワークフローの実行のための他の構成情報が、ワークフローが、特定の時点でまたは定義されたワークフローの最後の実行後に特定の時間量が通過した後で実行されることなどを示すために、他の形態を有し得る実施形態もある。したがって、前提条件２２５ａは、例えば、データ群２０７がいつ利用可能になるかを決定するためにオンライン記憶サービス２０５と対話するワーカープロセスに実装され得るし、すると、ノード２２０ａに対応するワーカープロセスの実行を開始するが、少なくとも一部の実施形態では、構成可能なワークフローサービスは、前提条件が満たされた後でノード２２０ａに対応するワーカープロセスを実行するためにコンピューティングノードを供給するなどのために、前提条件２２５ａ以外のワークフロー２００の一部または全部のノードを実装することを、これらの前提条件が満たされるまで待ち得る。
【００３０】
ウェブログデータソースノード２２０ａに加えて、カスタマーＣはまた、顧客の制御下の、または、そうする代わりにオンラインデータベース記憶サービス（図示せず）を介して利用可能な１つ以上の記憶システム（図示せず）に記憶され得るような、顧客のデータベースに対応するデータソースノード２２０ｂを定義した。この例では、カスタマーＣのデータベース２１０は、様々なデータ群２１１および２１２（例えば、データベース報告）を含み、データ群２１２は、このまたは類似のワークフローの前もっての実行によってまたは他の様式で、顧客のウェブサイト用に前もって生成されたクリックストリームデータを記憶している。この例では、ノード２２０ｂは、例えば、存在することが周知であるデータベースデータに基づいて、またはこの代わりに、定義されたワークフローの実行のためのオプションであるデータベースデータに基づいて（例えば、これにより、現行のウェブログデータが、いずれかの前もって記憶されたクリックストリームデータに追加またはこれと集約されるが、しかし、このような既存のクリックストリームデータが存在しない場合においても、記憶される新しいクリックストリームデータを生成するように）なんら定義された前提条件を含まない。
【００３１】
データソースノード２２０に加えて、カスタマーＣは、定義されたワークフローの一部である様々なデータ操作ノード２３５ａ〜２８０ａをさらに定義した。ワークフローの定義されたノード２３５ａ〜２８０ａは各々が、指定されたソースデータに対して実施され、かつこれらの定義されたデータ操作動作の結果によって特定のアクティビティを実施する１つ以上のデータ操作動作を指定する。特に、この例では、カスタマーＣは、データソースノード２２０ａと相互接続される第１のノード２３５ａを定義しており、第１のノード２３５ａは、データソースノード２２０ａによって提供されるウェブログデータから様々なユーザに対するクリックストリームデータを抽出することを伴うデータ操作動作を実施するように構成される。他の箇所でより詳細に論じられるように、データ操作動作は、定義された数学的または科学的ライブラリもしくは関数などを用いて、実行される特定のプログラムコード、（例えば、ＳＱＬまたは別の定義されたデータベース操作形式で指定される）実施されるデータベース動作による場合を含め様々な様式で指定され得る。さらにその上、特定のデータ操作動作は、例えば、定義されたノード２３５ａ〜２８０ａの一部または全部をより少ない数のノード（例えば１つ）に組み合わせるためおよび／またはノード２３５ａのデータ変換動作を複数のはっきりと異なるノードに分離するために、他の実施形態では他の様式で指定され得る。
【００３２】
この例では、データ操作ノード２３５ａが、そのデータ操作動作を実施した後で、これらのデータ操作動作の中間結果は、この例では、ノード２３５ａによって抽出された各々の群のクリックストリームデータを特定のユーザと関連付けるように構成される次のデータ操作ノード２４０ａに提供されるように構成される。例えば、ノード２３５ａによって提供されたクリックストリームデータは、分類されて、各々のユーザに対する固有の識別子と関連付けられるが、対応するユーザに関するさらなる識別情報を欠き得る。ノード２４０ａのデータ操作動作は、特定のユーザを識別することと、これらのユーザに対する対応する情報を決定することを含み得る。例えば、各々のユーザの年齢は、取得されてノード２４０ａで用いられて、ブロック２３５ａで抽出されたユーザの対応するクリックストリームデータと関連付けられ得る。したがって、ブロック２４０ａからの中間結果出力データは、年齢で識別され、かつ、この実施例の実施形態では、ワークフローに対して定義される次のデータ操作ノード２４５ａに提供される特定のユーザに対応するクリックストリームデータの群を含む。この例では図示しないが、データ操作ノード２４０ａは、一部の実施形態では、ユーザ関連のデータを別のデータソースノード（図示せず）からさらに取得して、例えば、図示するソース位置２０５または２１０のうちに一方からまたは、そうする代わりに、異なるソース位置（図示せず）からその動作を可能にし得る。
【００３３】
データ操作ノード２４５ａは、この実施例の実施形態では、ノード２４０ａからの様々なクリックストリームデータと関連付けられたユーザとを定義された年齢群によって集約する、例えば、年齢群１８〜２５、２６〜５０、５１〜６５、および６６＋のユーザに対するクリックストリームデータを集約するように定義される。したがって、ノード２４５ａのデータ操作動作からの中間結果は、閲覧されたページの数、１ページまたは１サイト当たりの費やされた時間の量、実施されたアクティビティの特定のタイプなどの、各々の定義された年齢群に対する１つ以上のクリックストリーム尺度の要約情報を含み得る。ノード２４５ａによって生成されたこれらの中間データ結果は、図示する例では、この新しいクリックストリームデータを他の前から存在するクリックストリームデータと（もし存在すれば）組み合わせるデータ操作ノード２７５ａに提供されるように構成される。
【００３４】
加えて、定義されたワークフローのノードが、図２Ａの例では、ノード間の相互接続を抽象的な様式で示す論理的様式で図示されているが、一部の実施形態では、定義されたワークフローは、定義されたワークフローの実装が実行中にどのように発生するかについてのさらなる詳細をさらに含み得る。例えば、定義されたワークフローのノードの一部または全部が、ノードが用いるデータをそこから取得する特定の記憶場所および／またはノードの結果が記憶される特定の記憶場所に関する詳細を含み得る。したがって、データ操作ノード２４５ａに関連して、ノードは、オプションとして、それが生成する中間データ結果を、図２Ａではオプションの中間ストレージ２５０として図示される特定の指定された記憶場所に記憶するようにさらに定義され得る。このような中間ストレージ２５０は、例えば、図１のオプションの記憶ノード１５０、図１のオプションのオンライン記憶サービス１４５、図１のオンライン記憶サービス１７０などのうちの１つ以上に対応し得る。１つの具体的な例として、中間ストレージ２５０はオンライン記憶サービス２０５であり得るし、ノード２４５ａは、例えば、特定のデータ群の名称またはノード２４５ａからの中間結果が記憶されるオンライン記憶サービスの他の記憶場所を指定することによって、その結果をオンライン記憶サービス上の１つ以上の特定のデータ群２０８（図示せず）として記憶するように構成され得る。類似の様式で、このような中間記憶場所がノード２４５ａに対して指定されると、ノードグラフ中の次のノード２７５ａが、ノード２４５ａによって生成されたこれらの中間データ結果をそこから取得する同じ記憶場所である定義された入力記憶場所を含み得る。このような中間記憶場所のユーザのさらなる詳細は、図２Ｂの例に関連してさらに詳しく説明する。構成可能なワークフローサービスが、構成可能なワークフローサービスによって自動的に選択された１つ以上の中間記憶場所を用いること、メッセージ受け渡しを実施することなどによって、ワークフローコンポーネント間でのデータの転送を管理し得る実施形態もある。
【００３５】
加えて、以前に注記したように、カスタマーＣは、この例では、顧客に対する以前から存在するクリックストリームデータに対応するデータベース２１０上でデータ群２１２を前もって生成した。このようなクリックストリームデータは、例えば、ノード２４５ａに関連して集約された一部または全部のタイプのクリックストリームデータを含み得るが、さらに、データベース２１０の他のデータ群２１１に関連するそれなどの、ノード２４５ａに対応しない他のタイプのクリックストリームデータを含み得る。加えて、データソースノード２２０ｂは、この定義されたワークフローにとって目的とされるクリックストリームデータに対応するこれらのデータ群２１２を抽出するように前もって定義された。したがって、カスタマーＣは、クリックストリームデータソースノード２２０ｂからこれらのデータ群２１２を受信するように、かつノード２４５ａの定義された年齢群およびタイプのクリックストリームデータに対応する目的とする特定のクリックストリームデータを検索するように構成されるデータ操作ノード２７０ａをさらに定義する。ノード２７０ａのデータ操作動作は、例えば、データベース２１０から特定のデータ報告を抽出することを含み得るまたはさらなるタイプの動作（例えば、データベースの複数のデータベース表からのデータを組み合わせる１つ以上のデータベース結合動作を実施すること、データベース表からデータのサブ集合を選択する１つ以上のデータベース選択動作を実施することなど）を含み得る。したがって、ノード２７０ａのデータ操作によって提供される中間データ結果は、ノード２４５ａに関連して以前に注記したのと同じタイプのクリックストリームデータおよび同じタイプの定義された年齢群を含む。１つ以上のノード２３５ａ〜２４５ａが、こうする代わりに、新しいクリックストリームデータが、データ群２１２のデータベース報告構造に適合するように操作し得る実施形態もある。
【００３６】
したがって、データ操作ノード２７５ａは、ノード２４５ａによって生成された中間データ結果を受信するように構成され、さらに、ノード２７０ａによって生成された中間データ結果を受信するように構成される。双方のタイプのデータが利用可能なとき、ノード２７５ａは、定義されたタイプのクリックストリームデータを定義された年齢群と組み合わせるように構成される。ノード２７５ａによって生成された中間データ結果は、次に、この例では２つのはっきりと異なる様式で用いられるように構成される。特に、カスタマーＣは、定義されたワークフローにより生成されるデータが提供される２つの定義された宛先に対応する定義された２つのデータ宛先ノード２３０をさらに定義した。特に、第１のデータ宛先ノード２３０ａは、カスタマーＣのデータベース２１０に対応するように、特に、データソースノード２２０ｂが対応するのと同じ集合のデータ群２１２に対応するように定義される。したがって、ノード２７５ａの中間データ結果が生成されてデータ宛先ノード２３０ａに対して利用可能にされるとき、これらのデータ結果は、例えば、さらなるデータ報告をデータベースに追加して、ノード２２０ｂによって検索された以前からの既存データを補完するまたは、そうする代わりに、以前に検索されたデータを、ウェブログデータの最新の集合からの情報をさらに含む新しい更新済みデータと交換することによって、定義されたワークフローの最終出力としてデータベース２１０に送られ、かつデータ群２１２の一部として記憶されるように構成される。
【００３７】
更新されたクリックストリームデータをデータベース２１０に記憶することに加えて、カスタマーＣは、カスタマーＣのメールボックス２９０に送られた１つ以上の電子通信を介してカスタマーＣに生成された報告を通信することに対応するデータ宛先ノード２３０ｂをさらに定義する。したがって、定義されたワークフロー２００は、ノード２７５ａから中間結果を取り、かつノード２７５ａからのクリックストリームデータ（例えば、オプションとして、ノード２４５ａによって出力されたちょうど新しいクリックストリームデータ）の一部または全部を含む報告を定義された様式で生成することを含むデータ操作動作を実施するように定義されるデータ操作ノード２８０ａをさらに含む。この例では、構造化された様式で情報を提示する１つ以上の定義された報告を含むように構成されるノード２８０ａによって生成された中間データ結果は、データ宛先ノード２３０ｂに提供されるが、このノードは、定義されたワークフロー２００の最終出力を、１つ以上の電子通信を介してカスタマーＣのメールボックス２９０に提供するように構成される。
【００３８】
したがって、図２Ａの図示する例では、構成可能なワークフローサービスのカスタマーＣという顧客は、実装されると、異なるソースからの異なるタイプのデータを組み合わせて、複数の指定される様式で顧客に自動的に利用可能とされる複数のタイプの目的とする出力データを顧客に対して生成するワークフロー２００を定義した。
【００３９】
図２Ｂは、図２Ａの例を継続し、特に、図２Ａの定義されたワークフロー２００の実装例に関連するさらなる詳細を提供する。特に、図２Ｂは、定義されたワークフローグラフ２００の論理ノード２２５ａ〜２３８ａに対応する様々なワークフローワーカープロセス２２５ｂ〜２８０ｂを実施するように構成された様々なコンピューティングノード１４０を示す。
【００４０】
他の箇所でより詳細に論じられるように、コンピューティングノード１４０は、構成可能なワークフローサービスによって提供される１つ以上のコンピューティングノードを用いること、カスタマーＣという顧客によって利用可能にされる１つ以上のコンピューティングノードを用いること、および／または１つ以上の外部オンライン実行サービスの各々によって提供される１つ以上のコンピューティングノードを用いることを手段とすることを含め、１つ以上のソースに由来し得る。カスタマーＣという顧客によって利用可能とされるコンピューティングノードにアクセスするとき、構成可能なワークフローサービスは、オプションとして、カスタマーＣという顧客によって供給されたアクセス情報を用いて、これらのコンピューティングノードとの対話を可能にする（例えば、コンピューティングノードに対する供給をすること、コンピューティングノード上でソフトウエアを実行することなど）。顧客のために用いられる外部オンライン実行サービスからコンピューティングノードにアクセスするとき、構成可能なワークフローサービスは、一部の実施形態および状況においては、オンライン実行サービスによる顧客の既存の口座の情報などの顧客用の情報をオンライン実行サービスとの対話の一部として用い得るが、その場合、構成可能なワークフローサービスによって用いられている、オンライン実行サービスからのコンピューティングノードは、少なくとも一部のこのような状況下でも、顧客と構成可能なワークフローサービスとの間の対話を介して顧客に対してアクセス可能であり得る。代替的に、顧客のために用いられる外部オンライン実行サービスからコンピューティングノードにアクセスするとき、構成可能なワークフローサービスは、一部の実施形態および状況においては、オンライン実行サービスによる構成可能なワークフローサービスの口座を用い得るが、これにより、オンライン実行サービスは、これらのコンピューティングノードを、顧客とではなくて構成可能なワークフローサービスと関連付けられると考慮するが、その場合、顧客のために構成可能なワークフローサービスによって用いられているオンライン実行サービスからのこれらのコンピューティングノードは、少なくとも一部のこのような状況下では、顧客と構成可能なワークフローサービスとの間のなんらかの対話に基づく場合を含め、顧客に対してアクセス可能ではないということがあり得る（またはことによると可視ですらない）。
【００４１】
図２Ｂは、図２Ａのオンライン記憶サービス２０５を含むが、オンライン記憶サービス２０５によって記憶される特定のデータ群２０６および２０７についての詳細は図示しない。この例では、構成可能なワークフローサービスは、定義された前提条件が満たされていると決定すること（例えば、１つ以上の対話２５７を実施して、図２Ａのデータ群２０７に対応するオンライン記憶サービス２０５からの特定のソースデータが利用可能かどうかを決定すること）などによって、定義されたワークフロー２００の前提条件ノード２２５ａに対応するワークフローワーカープロセス２２５ｂを実施するために、第１のコンピューティングノードＥ１４０ｅを選択して供給した。前提条件が満たされるとき、ワークフローワーカープロセス２２５ｂは、対応する命令（図示せず）を構成可能なワークフローサービスに提供することなどによって、次のワーカープロセス２３５ｂの実施を開始する。構成可能なワークフローサービスは、定義されたワークフロー２００のノード２３５ａに対応する、これの例ではワークフローワーカープロセス２３５ｂを実施するために、コンピューティングノードＡ１４０ａをさらに選択して供給した。特に、図２Ｂのワーカープロセス２３５ｂは、図２Ａのソースノード２２０ａに関連して、かつ、満たされている定義されたワークフロー２００のノード２２５ａに対する前提条件に従って定義された情報を用いることなどによって、図２Ａのデータ群２０７に対応するオンライン記憶サービス２０５からソースデータを取得するために、１つ以上の対話２５５ａを実施する。
【００４２】
ワーカープロセス２２５ｂおよび２３５ｂは、一部の実施形態および状況においては、例えば、異なる時点で、異なるタイプのコンピューティングノード上で（例えば、コンピューティングノードＥが構成可能なワークフローサービスによって提供され、コンピューティングノードＡが構成可能なワークフローサービスの外部で提供される場合）、異なる様式で（例えば、ワーカープロセス２２５ｂはコンピューティングノードＥを提供する１つの物理的コンピューティングシステム上で実行され、ワーカープロセス２３５ｂはコンピューティングノードＡを提供する複数の物理的コンピューティングシステム上で、分散様式で実行される）実行される。したがって、ワーカープロセス２３５ｂのような特定のワーカープロセスを、図２Ｂの例では１つのプロセスとして図示するが、実際のワーカープロセスは、構成可能なワークフローサービスによって提供されようと、その代わりに、構成可能なワークフローサービスの外部の１つ以上のオンラインプログラム実行サービスによって提供されようと、ワーカープロセスを実行するコンピューティングノードを表すために１つ以上の物理的コンピューティングシステムを用いることを含むことによって、様々な様式で、様々な実施形態に実装され得ることが理解されるであろう。
【００４３】
図示する例では、ワーカープロセス２３５ｂは、対話２５５ａを介してソースデータを受信して、図２Ａのノード２３５ａに関連して説明されたデータ操作動作を実施した後では、ワーカープロセス２３５ｂが、オンライン記憶サービスとの１つ以上の対話２２５ｂを介してオンライン記憶サービス２０５に記憶される中間データ結果を生成する。特定の中間結果が図２Ｂの例では示されていないが、ノード２３５ａおよび／またはワーカープロセス２３５ｂの一部として構成される特定の記憶場所に記憶することを含め、図２Ａの中間ストレージ２５０に関連して説明したように様々な様式で記憶され得る。
【００４４】
中間結果が対話２２５ｂを介して記憶された後、コンピューティングノードＢ１４０ｂ上で実行中のワーカープロセス２４０ｂは、オプションとしては、これらの中間データ結果が利用可能であるときに満たされる１つ以上の前提条件（図示せず）の使用に基づいて、これらの中間データ結果を使用目的で取得するために、オンライン記憶サービス２０５とより多くの対話２５５ｃを実施する。特に、この例では、構成可能なワークフローサービスは、それぞれ図２Ａのノード２４０ａおよび２４５ａに対応するワーカープロセス２４０ｂおよび２４５ｂを実行するために、コンピューティングノードＢを選択した。したがって、ワーカープロセス２４０ｂに対して、プロセスは、図２Ａのノード２４０ａに関連して以前に説明した１つ以上のデータ操作動作を実施する。この例では、コンピューティングノードＢは複数のワーカープロセスを実行しているため、ワーカープロセス２４０ｂによって生成された中間データ結果は、例えばオンライン記憶サービス２０５には記憶されず、しかし、その代わりに、インメモリアクセスによって、またはそうする代わりに１つ以上の他のタイプの電子通信によって、対話２５５ｄを介してワーカー２４５ｂに直接に渡される。ワーカープロセス２４０ｂは、こうする代わりに、データフロー中での次のワーカープロセス２４５ｂが、後でこれらの同じ中間データ結果を検索して用いる場合でさえも、オンライン記憶サービスによるこのような中間データ結果を記憶し得る実施形態もある。
【００４５】
この例では、実行中のワーカープロセス２４５ｂは、次に、ワーカープロセス２４０ｂによって生成された中間データ結果を用いることと、この例では、１つ以上の対話２５５ｅを介してオンライン記憶サービス２０５に記憶されるそれ自身の中間データ結果を生成することとを含む、図２Ａのノード２４５ａに関連して以前に説明したデータ操作動作を実施する。オンライン記憶サービス２０５はこの例では複数のはっきりと異なるワーカープロセスの中間データ結果を記憶するために用いられるが、様々なワーカープロセスの中間データ結果が、異なるワーカープロセスの中間データ結果を異なるオンライン記憶サービスにまたは他の様式で記憶することを含む、他の様式で記憶され得る実施形態もある。
【００４６】
図２Ａのオンライン記憶サービス２０５に加えて、図２Ｂはまた、カスタマーＣとしての顧客のデータベース２１０を示すが、図２Ａの実施例のデータ群２１１および２１２は図２Ｂでは図示されていない。この例では、構成可能なワークフローサービスは、図２Ａのワークフロー２００のノード２７０ａに対応するワーカープロセス２７０ｂを実行するために、コンピューティングノードＣ  １４０ｃをさらに選択した。したがって、図２Ｂのワーカープロセス２７０ｂは、データソースノード２２０ｂに対して定義されたデータ群２１２を取得するためにデータベース２１０との対話２５５ｆを実施することを含め、ノード２７０ａに関連して以前に説明した１以上のデータ操作動作を実施する。この例では、ワーカープロセス２７０ｂは、同様に、その中間データ結果を１つ以上の対話２５５ｇを介してオンライン記憶サービス２０５に記憶するが、このような中間結果を他の様式で記憶する実施形態もある。
【００４７】
中間データ結果が、ワーカープロセス２４５ｂおよび２７０ｂから利用可能とされた後、コンピューティングノードＤ１４０ｄのワーカープロセス２７５ｂは、オンライン記憶サービス２０５との１つ以上の対話２５５ｈを実施して、中間データ結果のこれら双方の集合を取得し、かつ図２Ａのノード２７５ａに関連して以前に説明した１つ以上のデータ操作動作を実施することによって、対応する組み合わされたデータを生成する。特に、この例では、構成可能なワークフローサービスは、ワーカープロセス２７５ｂと、図２Ａのノード２８０ａに対応するワーカープロセス２８０ｂとを実行するために、コンピューティングノードＤを選択した。したがって、ワーカープロセス２７５ｂはその結果を生成した後、このプロセスは、図２Ａの宛先ノード２３０ａに関連して指定した様式などで、これらの結果をデータベース２１０に記憶するために、１つ以上の対話２５５ｊを実施する。加えて、この例では、ワーカープロセス２８０ｂは、これらの中間データ結果をワーカープロセス２７５ｂから１つ以上の対話２５５ｉを介して取得し、１つ以上の報告を、図１のノード２８０ａに対して構成された様式で生成する。ワーカープロセス２８０ｂは、さらに進んで１つ以上の対話２５５ｋを実施して、これらの報告を、図２Ａの宛先ノード２３０ｂに対して構成された様式で、カスタマーＣのメールボックス２９０に送出する。
【００４８】
したがって、この様式では、図２Ａの論理定義されたワークフローグラフ２００は、図２Ｂに関連して図示されたコンピューティングノード１４０を用いて、および、ワークフローワーカープロセス間の中間データ結果の一部または全部の転送を管理するために中間ストレージを用いて、この定義されたワークフローの物理的インスタンス化によって実装される。
【００４９】
図２Ａおよび２Ｂの例が説明のために提供されており、本発明がこれらの例に関して論じられる詳細によって制限されないことが理解される。
【００５０】
図３は、サポートされた顧客システムのために、ワークフローの定義および実装を管理する技法を実施するのに適切なコンピュータシステムの実施例の実施形態を示すブロック図である。特に、図３は、構成可能なワークフローサービスを提供するシステム３４０の実施形態を実行するのに適切なサーバコンピュータシステム３００ならびに、様々な顧客コンピュータシステム３５０、オプションのオンライン記憶サービスシステム３６０、オプションのオンラインプログラム実行サービスシステム３７０、および他のコンピューティングシステム３８０を示す。図示する実施形態では、コンピュータシステム３００は、１つ以上のハードウエアＣＰＵプロセッサ３０５、様々なＩ／Ｏコンポーネント３１０、ストレージ３２０、およびメモリ３３０を含むコンポーネントを有し、図示するＩ／Ｏコンポーネントは、ディスプレイ３１１、ネットワーク接続３１２、コンピュータ可読媒体ドライブ３１３、および他のＩ／Ｏデバイス３１５（例えば、キーボード、マウス、スピーカなど）を含む。コンピュータシステム３００は図示するより多いまたは少ないコンポーネントを有し得るし、ローカルストレージ３２０は、オプションとして、コンピュータシステム３００に含まれるまたはこれに対して別様にローカルで取り付けられる１つ以上の不揮発性記憶デバイスによって提供され得る実施形態もある。
【００５１】
加えて、図示する顧客コンピュータシステム３５０は、ＣＰＵ３５１、Ｉ／Ｏコンポーネント３５２（特定のコンポーネントは図示されていないが）、ストレージ３５４、およびメモリ３５７を含む、コンピュータシステム３００のそれらに類似のコンポーネントを有する。他のシステム３６０、３７０、および３８０もまた各々が、コンピュータシステム３００に関連して図示されたコンポーネントの一部または全部に類似したコンポーネントを含むが、しかし、このようなコンポーネントは、簡潔さのためにこの例では図示されていない。顧客コンピュータシステム３５０は各々が、このような顧客コンピュータシステムのユーザが、構成可能なワークフローサービスシステム３４０によって提供されるウェブベースのＧＵＩと対話することを可能にするなどのために、メモリ３５７中で実行されるブラウザプログラム３５８を含み、また、オプションとして、顧客固有のワークフローコンポーネントについての情報３５５をローカルストレージ３５４に記憶するが、これらのコンポーネントの一方または双方が、一部または全部の顧客システム上に存在し得ない実施形態もある。さらにその上、特定の顧客コンピュータシステム３５０は、図示するより多いまたは少ないコンポーネントを有し得る。
【００５２】
ＣＰＵ３０５によって実行されるときに、説明した技法の一部または全部を提供するための自動化された動作を実施するように、コンピュータシステム３００をプログラムするまたは別様に構成するソフトウエア命令を含むような、構成可能なワークフローサービスシステム３４０の実施形態が、コンピュータシステム３００のメモリ３３０中で実行されている。図３には図示されないが、システム３４０は、図１のモジュール１２０および／または１３０にオプションとして対応する１つ以上のモジュールを含み得る。加えて、構成可能なワークフローサービスシステム３４０がこのようなサービス３３５および／または３３７と統合されるまたは連動して別様に動作する状況に対応するようなサーバコンピュータシステムが、１つ以上のオンライン記憶サービス３３５および／または１つ以上のオンラインプログラム実行サービス３３７をメモリ３３０中でさらにオプションとして実行し得るが、システム３４０は、こうする代わりに、一部の実施形態では、このような他のシステムのいずれからも独立して動作し得る。構成可能なワークフローサービスシステム３４０によって用いられるいずれかのこのようなオンライン記憶サービスおよび／またはオンラインプログラム実行サービスが、例えば、オプションのシステム３６０および／または３７０に対して、ネットワーク３９０上でアクセスされ得る実施形態もある。
【００５３】
この実施例の実施形態では、構成可能なワークフローサービスシステム３４０は、サポートされる顧客システムのためにワークフロー関連の機能性を管理することに関連する機能性を含み、かつ、ネットワーク３９０上で（例えば、インターネットおよび／またはワールドワイドウェブを介して、私的セルラネットワークを介してなど）、顧客コンピュータシステム３５０および／または他のシステムおよびデバイスと対話するようにさらにオプションとして構成される。他のシステム３５０、３６０、３７０、および／または３８０もまた各々が、システム３４０との対話の一部として様々なソフトウエアを実行し得る。特定の顧客システムおよび／またはユーザについての情報３２２、顧客用の１つ以上の特定の定義されたワークフローについての情報３２４、およびいずれかの定義されたワークフローコンポーネントについての情報３２６などの構成可能なワークフローサービスシステム３４０（およびオプションとして、サービス３３５および／または３３７）の動作に関連する様々な情報は、図１の情報１１２〜１１６のそれに類似したまたは本明細書の他の箇所で説明されたような様式などで、ストレージ３２０中にまたはその代わりに遠隔に記憶され得る。特定の実施形態におけるシステム３４０の動作に関連するさらなる詳細は、他の箇所でより詳細に説明される。
【００５４】
システム３００、３５０、３６０、３７０、および３８０は、単に解説目的であり、本開示の実施形態の範囲を制限する意図はないことが理解されるであろう。例えば、システム３４０は、代わりに、複数の対話するコンピューティングシステムまたはデバイスによって実行され得るし、コンピューティングシステム３００は、例えば、インターネットなどの１つ以上のネットワークを通じて、ワールドワイドウェブ（「ウェブ」）を介して、または他の電子通信ネットワーク（例えば、セルラベースのネットワーク、公衆交換電話網）で、図示されない他のデバイスに接続され得る。より一般的には、コンピュータシステムもしくはコンピューティングシステムまたはコンピューティングノードは、オプションとして、特定の対応するソフトウエア命令によってプログラムまたは別様に構成されるときに、記述したタイプの機能性と対話してこれらを実施することが可能なハードウエアのいずれかの組み合わせを備え得るが、制限なしで、デスクトップもしくは他の固定位置コンピュータ、ラップトップ、タブレット、および他のモバイルコンピュータ、データベースサーバ、ネットワーク記憶デバイスおよび他のネットワークデバイス、ＰＤＡ、スマートフォンおよび他の携帯電話、無線電話、ポケベル、電子手帳、インターネット機器、テレビベースのシステム（例えば、セットトップボックスおよび／またはパーソナル／デジタルビデオレコーダを用いる）、ならびに適当な通信機能を含む様々な他の消費者製品を含む。加えて、図示するシステム３４０によって提供される機能性は、一部の実施形態では、様々なモジュール中に配信される。
【００５５】
また、様々なアイテムを、使用中にはメモリ中にまたはストレージ上に記憶されているものとして図示されているが、これらのアイテムまたはそれらの部分は、メモリ管理およびデータ保全目的でメモリと他の記憶デバイスとの間で転送され得ることが理解されるであろう。代替的に、ソフトウエアモジュールおよび／またはシステムの一部または全部が別のデバイス上のメモリ中で実行されて、コンピュータ間通信によって、図示するコンピュータシステムと通信し得る実施形態もある。したがって、一部の実施形態では、記述した技法の一部または全部が、例えば、１つ以上のソフトウエアプログラムのソフトウエア命令の実行によっておよび／またはこのようなソフトウエア命令および／またはデータ構造の記憶によって、１つ以上のソフトウエアプログラムによって（例えば、システム３４０によって）および／またはデータ構造（例えば、定義されたワークフロー情報３２４および／または定義されたワークフローコンポーネント情報３２６）によって構成されるときに、１つ以上のプロセッサおよび／またはメモリおよび／またはストレージを含むハードウエア手段によって実施され得る。さらにその上、一部の実施形態では、システムおよび／またはモジュールの一部または全部が、例えば、これには限られないが、１つ以上の特定用途向け集積回路（ＡＳＩＣ）、標準型集積回路、コントローラ（例えば、マイクロコントローラおよび／または埋め込み型コントローラを含め、適当な命令を実行することによって）、現場プログラム可能ゲートアレイ（ＦＰＧＡ）、結合プログラム可能論理回路（ＣＰＬＤ）、などの、少なくとも部分的にまたは完全にファームウエアおよび／またはハードウエアに実装される手段（専用の電子機器など）を用いることによって、他の様式で実装または提供され得る。モジュール、システム、およびデータ構造のうちの一部または全部もまた、ハードディスクもしくはフラッシュドライブまたは他の不揮発性記憶デバイス、揮発性もしくは不揮発性メモリ（例えば、ＲＡＭ）、ネットワーク記憶デバイス、またた、適当なデバイス（例えば、ＤＶＤディスク、ＣＤディスク、光ディスクなど）によってもしくは適当な接続を介して読み出される携帯式媒体物品などの非一時的コンピュータ可読記憶媒体上に（例えば、ソフトウエア命令または構造化データとして）記憶され得る。システム、モジュール、およびデータ構造もまた、一部の実施形態では、無線ベースおよび有線／ケーブルベースの媒体を含む様々なコンピュータ可読送信媒体上で、生成されたデータ信号として（例えば、搬送波または他のアナログもしくはデジタル伝搬信号の一部として）送信され、かつ（単一または多重アナログ信号の一部としてまたは複数の不連続デジタルパケットもしくはフレームとして）様々な形態を取り得る。このようなコンピュータプログラム製品もまた、他の実施形態で他の形態をとり得る。したがって、本発明は、他のコンピュータシステム構成で実施され得る。
【００５６】
図４は、構成可能なワークフローサービスルーチン４００の実施例の実施形態のフロー図である。このルーチンは、例えば、構成可能なワークフローサービスの様々な遠隔の顧客のためのワークフローの定義および実装を管理するために、例えば、図１の構成可能なワークフローサービス１１０および／または図３の構成可能な作業負荷サービスシステム３４０の実行によって提供され得る。この実施例の実施形態では、ルーチンは、構成可能なワークフローサービスルーチンの外部にあるにせよ、構成可能なワークフローサービスルーチンと統合されたもしくは別様に提携しているにせよ、１つ以上のデータ記憶システムまたはデータ記憶サービスから情報をアクセスすることおよび／またはこれらの情報を提供することを管理し得るが、記述の技法は他の実施形態では他の様式で用いられ得る。
【００５７】
図示する実施形態では、ルーチンはブロック４０５から始まるが、ここで、ワークフロー関連の機能性を管理することに関連する命令が受信される。ルーチンはブロック４１０に進み、ブロック４０５で受信された命令が構成可能なワークフローサービスの顧客のために新しいワークフローを定義するかどうか決定する。定義する場合、ルーチンはブロック４１５〜４２５に進み、顧客用の定義されたワークフローについての情報を取得して記憶する。他の箇所でさらに詳しく説明されるように、一部の実施形態および状況においては、構成可能なワークフローサービスは、顧客を表すユーザが、定義されている新しいワークフロー用の情報を対話式に指定する際に介するユーザインターフェースを提供するが、新しいワークフローを定義するために用いる情報は、こうする代わりに、顧客の代わりに１つ以上の実行中のプログラムから１つ以上のプログラム的対話を介して受信され得る実施形態もある。
【００５８】
図示する実施形態では、ブロック４１５中のルーチンは、顧客によって選択されて用いられる利用可能なシステム定義されたワークフローコンポーネントを含む、新しいワークフローを定義するためのオプションについての情報をオプションとして顧客に提供するが、このような情報は、例えば、対応する情報および機能性をユーザに表示することによって、構成可能なワークフローサービスのＧＵＩを介して提供され得る。ブロック４１５の後は、ルーチンはブロック４２０に進んで、顧客用のワークフローを定義するために構成情報を受信する。一部の実施形態では、このような構成情報は、構成可能なワークフローサービスのＡＰＩとのプログラム的対話を介して受信され得るが、ブロック４２０で受信された情報が、構成可能なワークフローサービスのユーザインターフェースを介して、顧客を表すユーザから提供され得る実施形態および状況もある。構成可能なワークフローサービスのユーザインターフェースを介するワークフローの定義は、顧客を表すユーザによる複数の連続的な対話を伴い得るが、構成可能なワークフローサービスは、オプションとしては、実施された事前の選択に基づいてユーザインターフェースを介してさらなるまたは代替の情報を更新すること、およびユーザに提供することが理解されるであろう。したがって、ブロック４１５および４２０の機能性は、一部の実施形態および状況では、構成可能なワークフローサービスによる複数の反復するアクティビティを含み得る。ブロック４２０の後、新しいワークフローの定義が完了するとき、ルーチンはブロック４２５に進んで、データベースまたは構成可能なワークフローサービスの内部の他の記憶場所を用いることなどによって、後で用いるために顧客のワークフロー定義情報を記憶する。一部の実施形態では、顧客は、ルーチン４００のブロック４３５〜４５０に関して取り扱われ得るような、この時点でワークフローの実行を開始するために命令をさらに提供し得る。
【００５９】
ブロック４０５で受信された命令が新しいワークフローを定義することはないとブロック４１０で代わりに決定された場合、ルーチンは、代わりにブロック４３５に進んで、（例えば、ブロック４１５〜４２５に関して論じられるように、新たに定義されたワークフローに関連して）現行の実行を開始するために顧客から受信された命令や、このような実行のために以前に指定された予定された時点が到来したとの指示などの、受信された命令が、既存のワークフローを実行するかどうかを決定する。既存のワークフローを実行する場合、ルーチンはブロック４４０に進んで、内部データベースまたは、構成可能なワークフローサービスと関連付けられた他の記憶場所からのものなどの、顧客に対する記憶されたワークフロー定義情報を検索する。ブロック４４０の後、ルーチンはブロック４４５に進んで、ワークフローに対するワーカープロセスを実行するために用いるコンピューティングノードを選択し、かつこれらのワーカープロセス用のこれらの選択されたコンピューティングノードを供給する。他の箇所でさらに詳しく論じられるように、構成可能なワークフローサービスの様々な顧客に用いられるように構成可能なワークフローサービスによって提供されたコンピューティングノード、１つ以上の外部（オプションとしては提携した）プログラム実行サービスによって提供されたコンピューティングノード、顧客によって提供されたまたは別様に顧客の制御下で提供されたコンピューティングノードなどの、用いられるように選択されたコンピューティングノードは、様々な実施形態では様々な形態を有し得る。加えて、選択されたコンピューティングノードの供給は、例えば、１つ以上の特定のワーカープロセスに対して実行されるソフトウエアを各々の選択されたコンピューティングノードにロードすること、オプションとしては、このようなワーカープロセスによって用いられるデータを各々の選択されたコンピューティングノードにロードすることなどを含み得る。ブロック４４５の後、ルーチンはブロック４５０に進んで、選択されたコンピューティングノード上で実行中のワークフローに対するワーカープロセスの実行を開始する。図５は、ワーカープロセスを供給して選択されたコンピューティングノード上で実行する１つの実施例の実施形態のさらなる詳細を示す。
【００６０】
そうでなくて、ブロック４０５で受信された命令が定義されたワークフローを実行しないとブロック４３５で決定された場合、ルーチンは、代わりにブロック４６０に進んで、受信された命令が、自身の前提条件が満たされたときに実行されるように構成されるワークフローに対してなど、１つ以上の定義されたワークフローに対する前提条件をチェックするかどうか決定する。チェックする場合、ルーチンはブロック４６５に進んで、いずれかのこのような定義されたワークフローに対する前提条件についての情報を検索し、かつこれらの検索された前提条件が現在満たされているかどうかを決定する。ルーチンは、次に、ブロック４７０に進み、いずれかの定義されたワークフローに対するそれらの実装を開始するための十分な前提条件が、満たされたかどうかを決定し、満たされた場合、ブロック４４０に戻り、各々のこのような定義されたワークフローの実行を開始する。特定の時点で前提条件をチェックする命令は、例えば、周期ベースで、発生した事象（例えば、データの新たな到来または利用可能性）の指示に応答してなど、様々な実施形態で様々な様式で開始され得る。
【００６１】
そうではなくて、ブロック４０５で受信された命令がいずれかの定義されたワークフローに対するワークフロー前提条件を現在チェックすることはないことがブロック４６０で決定された場合、ルーチンはブロック４９０に進んで、適宜１つ以上の他の示された動作を実施する。ブロック４９０に関連して実施される動作は、顧客用の定義されたワークフローを修正するもしくは削除する、顧客用の定義されたワークフローの現行のもしくは予定された実行を停止もしくは別様に修正する、いずれかの定義されたワークフローに関連する警告条件がないかどうかをチェックして、適宜対応する動作をとるなどの、様々な時点で様々な実施形態で様々な形態を有し得る。
【００６２】
ブロック４２５、４５０、もしくは４９０の後で、または、そうではなくて、現在満たされている前提条件を有する定義されたワークフローがないことがブロック４７０で決定された場合、ルーチンはブロック４９５に進んで、例えば、明示的な終了指示が受信されるまでは継続するかどうかを決定する。継続することが決定された場合、ルーチンはブロック４０５に進み、そうでない場合にはブロック４９９に進んで、終了する。
【００６３】
図５は、ワークフローコンポーネントワーカープロセスルーチン５００に対する実施例の実施形態の流れ図を示す。ルーチンは、例えば、図１のコンピューティングノード１４０およびワークフローワーカープロセス１４２ならびに図２Ｂのコンピューティングノード１４０およびワークフローワーカープロセス２３５ｂ〜２８０ｂに対して、他の外部プログラム実行サービスによって提供されたコンピューティングノードおよびこれらのコンピューティングノードによって実行される対応するワーカープロセスに関連して、および／または顧客によって提供されたまたは別様に制御されたコンピューティングノードおよびこれらのコンピューティングノードによって実行される対応するワーカープロセスに関連して、例えば、定義されたワークフローに対する構成されたワーカープロセスの供給されたコンピューティングノード上での実行によって提供され得る。
【００６４】
ルーチンのこの実施例の実施形態では、ルーチンの行動は、１つのワーカープロセスに関連して図示されているが、特定のコンピューティングノードが、特定の実施形態および状況において複数のワーカープロセスを実行し得ること、および特定のワーカープロセスが、一部の実施形態および状況においては、複数のコンピューティングノードまたは他のコンピューティングシステム上に対して実行され得る（例えば、これらのコンピューティングシステムに対して同時におよび／または連続的になど、分散様式で）こと、が理解されるであろう。加えて、特定のワークフローコンポーネントワーカープロセスは、自身の対応するワークフローコンポーネントに対する特定の構成に従って、異なる動作（例えば、図示されるより多くまたは少ない動作）を実施し得ることが理解されるであろう。
【００６５】
ルーチンの図示する実施形態は、ブロック５０５から始まり、ここで、実行される定義された作業負荷のワーカープロセスに対する構成情報が受信され、ワーカープロセスの実行が開始される。一部の実施形態および状況においては、構成情報および実行開始は、図４のブロック４４５および４５０に関するような、構成可能なワークフローサービスの実施形態のルーチン４００との１つ以上の対話に基づいて受信される。他の箇所でより詳細に論じられるように、各々のワーカープロセスは、定義されたタイプであることを含め、様々な関連付けられた情報を有して、ワーカープロセスを実装するために実行される定義されたソフトウエアコードを有したり、ワーカープロセスが入力をそこから受信する１つ以上の定義されたデータソースを有したり、ワーカープロセスによって生成されたデータ結果が提供される１つ以上の定義されたデータ宛先を有したり、オプションとして、ワーカープロセスと関連付けられた他のデータ（例えば、ワーカープロセスがどのように１つ以上の指定されたデータ操作動作を実施するかに関する構成情報）を有したり、オプションとして、１つ以上の前提条件および／または事後条件を有したり、オプションとして１つ以上の関連付けられた警告を有したり、などし得る。したがって、ルーチン５００の実施例の実施形態に関連しては図示されていないが、ルーチンが、ワーカープロセスで用いられる構成データを含め、さらなる情報をブロック５０５で他の時点でさらに受信し得る実施形態もある。
【００６６】
ブロック５０５の後で、ルーチンは５１０に進み、ここで、それは、オプションとして、ワークプロセスが、その指定されたデータ操作動作または他の動作を実施するように準備することなどの、ワーカープロセスに対するなんらかの前処理アクティビティを実施する。ブロック５１０の後で、ルーチンは５３５に進み、ここで、それは、ワーカープロセスによって用いられるソースデータを１つ以上の指定されたソース位置から取得する。例えば、一部の実施形態および状況においては、このようなソースデータの利用可能性を決定することに少なくとも部分的に基づく前提条件が、用いられ得る。ブロック５２５の後で、ルーチンは５４０に進んで、ワーカープロセス用の１つ以上の指定されたデータ操作アクティビティを取得されたソースデータに対して実施する。他の箇所でより詳細に論じられるように、このような指定されたデータ操作アクティビティは、データを１つの位置から別の位置に移動させること、データを様々な様式で修正するもしくは別様に変換すること、などを含め、様々な実施形態および状況において様々な形態を有し得る。
【００６７】
ブロック５４０の後で、ルーチンは５７０に進んで、ブロック５４０の指定されたデータ操作アクティビティによる結果を１つ以上の指定された宛先位置に提供する。他の箇所でより詳細に論じられるように、結果データを提供する際にこのようなアクティビティには、結果データの一部または全部を指定された記憶場所に記憶すること、指定された結果データの一部または全部を含む１つ以上の電子通信を送出すること、結果データの一部または全部を提示用に含む特定の報告または他の形式を生成することなどが含まれ得る。
【００６８】
ブロック５７０の後で、ルーチンは５９５に進んで、例えば、終了の明示的な指示が受信されるまで、継続するかどうかを決定する。継続することが決定された場合、ルーチンはブロック５２０に戻り、そうでない場合、ブロック５９９に進んで終了する。図示する実施形態では、所与のワーカープロセスは、したがって、そのように構成されていれば、ブロック５２０〜５７０のアクティビティを複数回実施して、例えば、ワーカープロセスを実行するコンピューティングノードが、定義されたワークフローの複数の実装などのために延長された期間にわたって動作される状況にある場合を含め、１つ以上の指定されたデータ操作アクティビティを異なる群のソースデータに対して異なる時点で実施し得る。ワーカープロセスは、ワーカープロセスの将来の実施を修正するさらなる構成情報をさらに時として受信し得るおよび／または他の前処理アクティビティを時として実施し得る実施形態もあるが、したがって、このような状況下では、ルーチンは、ブロック５９５からブロック５０５および／または５１０に適宜戻り得る。
【００６９】
一部の実施形態では、上述のルーチンによって提供される機能性が、より多いルーチン間に分割されるまたはより少ないルーチンに統合されるなどの、代替的な方法で提供され得ることが理解されるであろう。同様に、一部の実施形態では、例示したルーチンは、提供される機能性の量が変更されたときなどに、説明したより多きまたは少ない機能性を提供し得る。加えて、様々な動作を特定の様式（例えば、連続してまたは並行に）でおよび／または特定の順序で実施されるものとして解説したが、動作が、他の順序または他の様式で実施され得る実施形態もある。同様に、上述したデータ構造は、１つのデータ構造を複数のデータ構造に分割させたり、または、複数のデータ構造を１つのデータ構造に統合させたりすることなどによって、他の実施形態では異なる様式で構造化され得るし、また、説明したより多いまたは少ない情報を（例えば、他の図示するデータ構造が逆にこのような情報をそれぞれ欠いたりまたは含んだりするときに、または、記憶される情報の量またはタイプが変更されたときに）記憶し得る。
【００７０】
構成可能なワークフローサービスの特定の実施例の実施形態に関するさらなる詳細は、以下に含まれるが、説明した技法はこのような詳細に制限されないことが理解されるであろう。
【００７１】
この実施例の実施形態では、構成可能なワークフローサービス（「ＣＷＳ」）のワークフロー（この実施例の実施形態では「パイプライン」とも呼ばれる）は、パイプラインを形成するノード（この実施例の実施形態では「オブジェクト」とも呼ばれる）の記述を可能にする構成言語を介して定義される。次のように、この実施例の実施形態ではＣＷＳパイプラインに記述することが可能な５つの一般的なタイプのオブジェクトが存在する。
−データソース−データ操作ワークフローコンポーネント（この実施例の実施形態では「アクティビティ」とも呼ばれる）に対する入力またはこれからの出力。
−アクティビティ−データ処理変換およびデータコピーなどの、実行させる動作。アクティビティは、ある状態で警告し、失敗の場合には複数回再試行するように設定することが可能である。事前定義されるアクティビティには、Ｃｏｐｙ、ＳＱＬＴｒａｎｓｆｏｒｍ、ＨｉｖｅＱＬＴｒａｎｓｆｏｒｍ、ＥｌａｓｔｉｃＭａｐＲｅｄｕｃｅＴｒａｎｓｆｏｒｍ、およびＣｏｍｍａｎｄＬｉｎｅＴｒａｎｓｆｏｒｍが含まれる。
−前提条件および事後条件−データソースが利用可能および／または良好に形成されたと考えられるときには真になる、データソースに関連付けられた動作。成功裏に完了する前提条件は、データソースを入力として消費する次のアクティビティを実行することを可能にする。成功裏に完了する事後条件は、データソースを作成するアクティビティを、成功裏に完了したと考えることを可能にする。
−予定−データの周期性を記述するデータソースの、または、それが実行されるときの周期性を定義するアクティビティの属性であり、１分以上、時間、日、週、月などの精度で設定することが可能である。
−警告−通知サービス（例えば、アマゾンのＳＮＳまたはＳｉｍｐｌｅ  Ｎｏｔｉｆｉｃａｔｉｏｎ  Ｓｅｒｖｉｃｅ）に公開されるメッセージ、電子通信（例えば、ｅメール）を介して送信されるメッセージなどを記述する。パイプラインおよび個々のアクティビティは、失敗および成功の双方に対して定義された警告を有し得る。
【００７２】
パイプラインはオブジェクトから成り、オブジェクトは属性から成る。属性は、タグ：値という形式を有する。
【００７３】
オブジェクトは、名称：属性およびタイプ：属性を有する。名称およびタイプに加えて、オブジェクトは、オブジェクトのタイプ次第でいくつかの他の属性を有し得る。以下の例では、「インボイスログ」というオブジェクトは、実施例のオンライン記憶サービスＳＳＳ（＜オンライン−記憶−サービス−ＳＳＳ＞と呼ばれる）に記憶されるデータオブジェクトを記述し、名称：およびタイプ：に加えて経路：属性を有する。
名称：インボイスログ
タイプ：＜オンライン−記憶−サービス−ＳＳＳ＞ＤａｔａＮｏｄｅ
経路：＜オンライン−記憶−サービス−ＳＳＳ＞／／ｍｙ＿ｄａｔａ／ｘｙｚ．ｃｖｓ
【００７４】
属性は、オプションとしては、オブジェクト内で繰り返され得る。以下の例では、入力：は繰り返され、および各々の入力：属性に対する値は、順序リストとして扱われる。
名称：インボイス処理
タイプ：ＣｏｍｍａｎｄＲｕｎｎｅｒＴｒａｎｓｆｏｒｍ
入力：インボイスログ
入力：インボイスディメンジョン
【００７５】
属性の値は、次のうちの１つであり得る：
オブジェクトの参照
式
ストリングリテラル
【００７６】
各々のタイプの属性値を示す簡潔な例が個々にある：
名称：ＨｏｕｒＰｅｒｉｏｄ
タイプ：予定
期間：「１時間」←これがストリングリテラル
名称：オブジェクト
タイプ：ＭｙＴｒａｎｓｆｏｒｍ
ディメンジョン：ＨｏｕｒＰｅｒｉｏｄ←これがオブジェクトの参照
属性：＃｛区間．終了｝←これが式
【００７７】
５分間ログを毎時ログに連結する例を考えてみよう。ここに、オンライン−記憶−サービス−ＳＳＳで、反復して、５分間ログを毎時ログに連結する単純なパイプラインがある。このパイプラインは次のものから成る：
入力データソース−５分間クリックログ＜オンライン−記憶−サービス−ＳＳＳ＞
コピーアクティビティ
出力データソース（例えば、データ宛先ノード）−１時間クリックログイン
＜オンライン−記憶−サービス−ＳＳＳ＞
２つの予定オブジェクト
警告オブジェクト
名称：ＦｉｖｅＭｉｎＰｅｒｉｏｄ
タイプ：予定
期間：「５分間」
名称：ＨｏｕｒＰｅｒｉｏｄ
タイプ：予定
期間：「１時間」
名称：５分間ログ
タイプ：＜オンライン−記憶−サービス−ＳＳＳ＞ＤａｔａＮｏｄｅ
ディメンジョン：ＦｉｖｅＭｉｎＰｅｒｉｏｄ
経路：「＜オンライン−記憶−サービス−ＳＳＳ＞：／／ｐｒｏｄ／Ｃｌｉｃｋｓ／＃｛区間．終了｝．ｃｓｖ」
名称：連結
タイプ：ＣｏｐｙＴｒａｎｓｆｏｒｍ
ディメンジョン：ＨｏｕｒＰｅｒｉｏｄ
入力：５分間ログ
出力：毎時ログ
フェイル時：ＣｏｐｙＦａｉｌｅｄＡｌａｒｍ
名称：ＣｏｐｙＦａｉｌｅｄＡｌａｒｍ
タイプ：「ＥｍａｉｌＡｌａｒｍ」
宛先：＜顧客ｅメールアドレス＞
件名：「クリック５分間→１時間フェイル！」
本体：
区間＃｛ノード．区間．開始｝．．＃｛ノード．区間．終了｝でエラー
名称：毎時ログ
タイプ：＜オンライン−記憶−サービス−ＳＳＳ＞ＤａｔａＮｏｄｅ
ディメンジョン：ＨｏｕｒＰｅｒｉｏｄ
経路：「＜オンライン−記憶−サービス−ＳＳＳ＞：／／ＸＸＸ−ｔｅｓｔ／ＯｕｔＤａｔａ／＃｛区間．終了｝．ｃｓｖ」
【００７８】
最初に、我々のパイプラインに対する入力である我々の５分間クリックログをさらに詳細に説明しよう。次の２つのオブジェクトは、１）予定（「ＦｉｖｅＭｉｎＰｅｒｉｏｄ」）および２）ＦｉｖｅＭｉｎＰｅｒｉｏｄ」と関連付けられたデータソース（「５分間ログ」）を定義する。
名称：ＦｉｖｅＭｉｎＰｅｒｉｏｄ
タイプ：予定
期間：「５分間」
名称：５分間ログ
タイプ：＜オンライン−記憶−サービス−ＳＳＳ＞ＤａｔａＮｏｄｅ
ディメンジョン：ＦｉｖｅＭｉｎＰｅｒｉｏｄ
経路：「＜オンライン−記憶−サービス−ＳＳＳ＞：／／ｐｒｏｄ／Ｃｌｉｃｋｓ／＃｛区間．終了｝．ｃｓｖ」
これは、以下のような一連の＜オンライン−記憶−サービス−ＳＳＳ＞ファイルを記述することによる効果である。
・・・
＜オンライン−記憶−サービス−ＳＳＳ＞：／／ｐｒｏｄ／Ｃｌｉｃｋｓ／２０１１−１１−１４：１０：０５：００．ｃｓｖ
＜オンライン−記憶−サービス−ＳＳＳ＞：／／ｐｒｏｄ／Ｃｌｉｃｋｓ／２０１１−１１−１４：１０：１０：００．ｃｓｖ
＜オンライン−記憶−サービス−ＳＳＳ＞：／／ｐｒｏｄ／Ｃｌｉｃｋｓ／２０１１−１１−１４：１０：１５：００．ｃｓｖ
＜オンライン−記憶−サービス−ＳＳＳ＞：／／ｐｒｏｄ／Ｃｌｉｃｋｓ／２０１１−１１−１４：１０：２０：００．ｃｓｖ
＜オンライン−記憶−サービス−ＳＳＳ＞：／／ｐｒｏｄ／Ｃｌｉｃｋｓ／２０１１−１１−１４：１０：２５：００．ｃｓｖ
・・・
各々のこのようなオンライン−記憶−サービス−ＳＳＳファイルは、「５分間ログ」のインスタンスとして考えることが可能である。各々の１つは、自身が表す時間期間と、自身が含むデータとに基づいて他から区別可能である。
【００７９】
さらに、以下に示すオブジェクト情報を考えてみよう。
名称：５分間ログ
タイプ：＜オンライン−記憶−サービス−ＳＳＳ＞ＤａｔａＮｏｄｅ
ディメンジョン：ＦｉｖｅＭｉｎＰｅｒｉｏｄ
経路：「＜オンライン−記憶−サービス−ＳＳＳ＞：／／ｐｒｏｄ／Ｃｌｉｃｋｓ／＃｛区間．終了｝．ｃｓｖ」
属性タイプ：は、これが、＜オンライン−記憶−サービス−ＳＳＳ＞ＤａｔａＮｏｄｅソースオブジェクトであると識別する。名称：は、何でもよいが、この実施例の実施形態では、このパイプライン定義に対して固有であり得る。＜オンライン−記憶−サービス−ＳＳＳ＞ＤａｔａＮｏｄｅなどのようなデータソースオブジェクトもまた、オブジェクトがオカレンスに具現化されることが可能な異なる方法を記述するこの実施例の実施形態ではディメンジョン属性を有し得る。ディメンジョンの１つの一般的な例は時間期間であり、これは、分、時間、日、週、または月として表現することが可能である。別の例としてのディメンジョンは、データソースシステムの異なる位置に対応するものなどの地理的領域に基づいたものがある。
【００８０】
加えて、時間期間は、この実施例の実施形態では予定オブジェクトによって指定され得る。特に、我々は、５分間期間を指定する予定オブジェクトを次にように定義する：
名称：ＦｉｖｅＭｉｎＰｅｒｉｏｄ
タイプ：予定
期間：「５分間」
「５分間ログ」の属性であるディメンジョン：は、予定オブジェクト「ＦｉｖｅＭｉｎＰｅｒｉｏｄ」のことであることに注意されたい。ここで、属性経路：を見てみよう。
経路：「＜オンライン−記憶−サービス−ＳＳＳ＞：／／ｐｒｏｄ／Ｃｌｉｃｋｓ／＃｛区間．終了｝．ｃｓｖ」
シーケンス「＃｛  ｝」は、式を記述する。この場合、評価される式は、区間．終了である。「５分間ログ」は、自身と関連付けられた予定を有するため、それは、自身が「開始」と「終了」の値を有する「区間」と呼ばれる属性を含む。このように、区間．開始．．区間．終了は予定の具体的な時間期間を記述する。
・・・
区間．開始２０１１−１１−１４：１０：００：００    区間．終了２０１１−１１−１４：１０：０５：００
区間．開始２０１１−１１−１４：１０：０５：００    区間．終了２０１１−１１−１４：１０：１０：００
区間．開始２０１１−１１−１４：１０：１５：００    区間．終了２０１１−１１−１４：１０：２０：００
・・・
属性経路：は、この場合での予定オブジェクトごとの各々の５分間区間の終了を用いる＜オンライン−記憶−サービス−ＳＳＳ＞と評価される。
【００８１】
次に、１時間分の５分間クリックを読み出して、これらを時間ごと出力ファイルに連結するアクティビティを説明しよう。これら３つのオブジェクトは、１）予定（「ＨｏｕｒＰｅｒｉｏｄ」）、２）「ＨｏｕｒＰｅｒｉｏｄ」と関連付けられるＣｏｐｙＴｒａｎｓｆｏｒｍ（「連結」）、および３）フェイル発生で発動される警告（「ＣｏｐｙＦａｉｌｅｄＡｌａｒｍ」）：
名称：ＨｏｕｒＰｅｒｉｏｄ
タイプ：予定
期間：「１時間」
名称：連結
タイプ：ＣｏｐｙＴｒａｎｓｆｏｒｍ
ディメンジョン：ＨｏｕｒＰｅｒｉｏｄ
入力：５分間ログ
出力：時間ごとログ
フェイル時：ＣｏｐｙＦａｉｌｅｄＡｌａｒｍ
名称：            ＣｏｐｙＦａｉｌｅｄＡｌａｒｍ
タイプ：「ＥｍａｉｌＡｌａｒｍ」
宛先：＜顧客−ｅメール−アドレス＞
件名：「クリック５分間→１時間フェイル！」
本体：
区間＃｛ノード．区間．開始｝．．＃｛ノード．区間．終了｝でエラー
【００８２】
ＣＷＳは、１時間分の入力：（「５分間ログ」）が利用可能なときは、「連結」を予定して実行する。所与の時間に対する２０個すべての５分間ファイルが用意できるとき、各々は、出力「時間ごとログ」中にコピーされる。「連結」プロセスがフェイル状態に遭遇する場合、警告オブジェクト「ＣｏｐｙＦａｉｌｅｄＡｌａｒｍ」が実行され、ｅメールが送出される。
【００８３】
特に、「連結」は、この実施例の実施形態ではＣＷＳによって提供される内臓のアクティビティであるタイプ「ＣｏｐｙＴｒａｎｓｆｏｒｍ」のオブジェクトである。ＣｏｐｙＴｒａｎｓｆｏｒｍは、入力データソースおよび出力データソースを取る。アクティビティ（ＣｏｐｙＴｒａｎｓｆｏｒｍはアクティビティのタイプ）は、ちょうどデータソースのように、自身と関連付けられた予定ディメンジョンを有し得る。この場合、「連結」は、時間ごとの時間区間を記述する予定オブジェクト「時間ごと期間」と関連付けられる。これは、次にように考えることが可能である。「連結」は、１時間分のデータを処理する。
【００８４】
この場合における入力：の予定は、５分間区間を記述するが、「連結」の予定は時間ごとである。ＣＷＳは、２０個の５分間ファイルが、「連結」がそのために構成される時間ごと区間の処理にマッピングされるものと推測する。「ＣｏｐｙＦａｉｌｅｄＡｌａｒｍ」などの警告オブジェクトは、任意の数のアクティビティと関連付けることが可能である。この場合での本体：属性は、次の式を含む：区間＃｛ノード．区間．開始｝．．＃｛ノード．区間．終了｝でエラー。警告は、実行時間時には警告がそれについて報告しているオブジェクトとして評価されるノード：属性を有する。この場合、「ノード」は、警告が「連結」でのフェイルのため発せられた場合には、オブジェクト「連結」のことである。
【００８５】
最後に、我々の出力データソースがここにある：
名称：時間ごとログ
タイプ：＜オンライン−記憶−サービス−ＳＳＳ＞ＤａｔａＮｏｄｅ
ディメンジョン：ＨｏｕｒＰｅｒｉｏｄ
経路：「＜オンライン−記憶−サービス−ＳＳＳ＞：／／ｐｒｏｄ／ｃｏｎｃａｔ−ｃｌｉｃｋｓ／＃｛区間．終了｝．ｃｓｖ」
【００８６】
これは、以下のような一連の＜オンライン−記憶−サービス−ＳＳＳ＞ファイルを記述することによる効果である。
・・・
＜オンライン−記憶−サービス−ＳＳＳ＞：／／ｐｒｏｄ／ｃｏｎｃａｔ−ｃｌｉｃｋｓ／２０１１−１１−１４：００：０：００．ｃｓｖ
＜オンライン−記憶−サービス−ＳＳＳ＞：／／ｐｒｏｄ／ｃｏｎｃａｔ−ｃｌｉｃｋｓ／２０１１−１１−１４：０１：０：００．ｃｓｖ
＜オンライン−記憶−サービス−ＳＳＳ＞：／／ｐｒｏｄ／ｃｏｎｃａｔ−ｃｌｉｃｋｓ／２０１１−１１−１４：０２：０：００．ｃｓｖ
・・・
各々の＜オンライン−記憶−サービス−ＳＳＳ＞ファイルは、「時間ごとログ」のインスタンスとして考えることが可能である。各々の１つは、自身が表す時間期間と、自身が含むデータとに基づいて他から区別可能である。
【００８７】
さらに、次のものを考えてみよう。
名称：連結
タイプ：ＣｏｐｙＴｒａｎｓｆｏｒｍ
ディメンジョン：ＨｏｕｒＰｅｒｉｏｄ
入力：５分間ログ
出力：時間ごとログ
名称：時間ごとログ
タイプ：＜オンライン−記憶−サービス−ＳＳＳ＞ＤａｔａＮｏｄｅ
ディメンジョン：ＨｏｕｒＰｅｒｉｏｄ
経路：「＜オンライン−記憶−サービス−ＳＳＳ＞：／／ｐｒｏｄ／ｃｏｎｃａｔ−ｃｌｉｃｋｓ／＃｛区間．終了｝．ｃｓｖ」
上述した「５分間ログ」データソースのように、「時間ごとログ」は、この場合には時間ごと予定である予定と関連付けられる。経路：属性は、この場合には予定オブジェクトごとに各々の時間ごと予定の終了を用いる＜オンライン−記憶−サービス−ＳＳＳ＞ファイル名と評価される。
「連結」アクティビティは、「時間ごとログ」を出力データソースとして指定する。ＣＷＳが「連結」を予定して実行するとき、それはまた、現行の実行に対する時間ごと予定期間の終了時間範囲に対応する＜オンライン−記憶−サービス−ＳＳＳ＞ファイルを生じさせる。
【００８８】
属性の値は、次の形態をとる事が可能である。
オブジェクトの参照
式
ストリングリテラル
【００８９】
オブジェクトの参照に関して、属性は別のパイプラインオブジェクトを名称で言及することが可能である。これは、あるタイプの式を形成する際に役に立つ：
名称：オブジェクト１
タイプ：サンプル
名称：オブジェクト２
タイプ：サンプル
属性１：オブジェクト１←オブジェクト１に対する参照
【００９０】
式に関して、式は、この構成の内部で発生する：
＃｛「式」｝。式は組み込み関数であり得る：
属性：＃｛日（現行時間（））｝
ストリング値：
属性：＃｛「これはストリング値である」｝
ストリングの項の連結
属性：＃｛「接頭辞」−関数復帰ストリング（）｝
整数または浮動小数点値
属性：＃｛関数（３．１４、５）｝
数式：
属性：＃｛関数（３．１４＋５）｝
別の属性に対する単なる言及
名称：オブジェクト１
タイプ：サンプル
属性１：＃｛今日（）｝
属性２：＃｛属性１｝←属性２は属性１の値を有する
別の属性に対する修飾参照
名称：オブジェクト１
タイプ：サンプル
属性１：＃｛今日（）｝
属性２：属性１
名称：オブジェクト２
タイプ：サンプル
属性３：オブジェクト１←オブジェクトの参照、「＃｛  ｝」という構成内には現れない
属性４：＃｛属性３．属性２｝←これは、修飾属性参照（値はオブジェクト１．属性２）
【００９１】
ストリングリテラルに関して、属性は、「これはストリングリテラルである」などのストリングリテラル値を有し得る。また、ストリングリテラルは、ストリングとして評価される式を含むことがあり得る：
属性１：「これは＃｛属性２｝を含む」
属性２：「式」
上の属性１は、式構成：「＃｛  ｝」を介して埋め込まれた式を有する
ストリングリテラルもまた、各々ラインが２つのスペースだけ字下げされたマルチラインであり得る：
属性３：
これはライン１
これは第２のライン
そしてこれは最後のライン
【００９２】
本開示の様々な実施形態は、以下の付記を考慮して説明され得る：
１．コンピュータ実装方法であって、
構成可能なワークフローサービスの１つ以上の構成されたコンピューティングシステムによって、１つ以上のインターフェースを提供して、前記構成可能なワークフローサービスの複数の顧客が、実装されるワークフローを構成することを可能とすることと、
前記１つ以上の構成されたコンピューティングシステムによって、第１の定義されたワークフローに対する前記複数の顧客のうちの第１の顧客からの構成情報を受信することであって、前記構成情報が、前記提供されたインターフェースのうちの少なくとも１つを介して受信され、かつ１つ以上のネットワーク上で前記第１の顧客の遠隔位置から送られていて、前記構成情報が、前記第１の定義されたワークフローの複数のワークフローコンポーネントと、前記複数のワークフローコンポーネント間の相互接続と、を指定し、前記複数のワークフローコンポーネントの少なくとも一部が、前記複数の顧客によって用いられるように、前記構成可能なワークフローサービスによって提供された複数の事前定義されたワークフローコンポーネントから前記顧客によって選択される、受信することと、
前記１つ以上の構成されたコンピューティングシステムによって、前記第１の定義されたワークフローを実装するために用いる複数のコンピューティングノードを選択することであって、前記複数のコンピューティングノードのうちの少なくとも一部が、前記複数の顧客によって用いられる前記構成可能なワークフローサービスによって提供される複数のコンピューティングノードのサブ集合である、選択することと、
前記１つ以上の構成されたコンピューティングシステムによって、前記選択されたコンピューティングノードを、各々が前記複数のワークフローコンポーネントのうちの少なくとも１つを実装するように供給することと、
前記１つ以上の構成されたコンピューティングシステムによって、前記実装されたワークフローコンポーネントに対応する前記選択されたコンピューティングノードに対する定義されたアクティビティの実施を開始することによって、前記顧客に対する前記第１の定義されたワークフローを実装することと、を含み、前記定義されたアクティビティが、
前記構成可能なワークフローサービスの外部の１つ以上のデータソースから入力データを取得することを伴う１つ以上の第１のアクティビティと、
前記取得された入力データに少なくとも部分的に基づいたデータ操作動作を実施することによって中間結果データを生成することを伴う１つ以上の第２のアクティビティと、
前記第２のアクティビティの前記中間結果データに少なくとも部分的に基づいて出力データを生成することを伴い、かつ前記生成された出力データを前記第１の顧客に提供することを伴う１つ以上の第３のアクティビティと、を含む、方法。
２．前記提供された１つ以上のインターフェースが、少なくともグラフィカルユーザインターフェースおよびアプリケーションプログラミングインターフェースを含み、前記方法が、
前記提供されたインターフェースのうちの１つを介して、前記第１の定義されたワークフローの実装を開始するための１つ以上の基準についての情報を受信することであって、前記１つ以上の基準が、前記顧客によって指定され、かつ前記複数の時点で利用可能な入力データの変更に基づいて前記複数の時点での前記第１の定義されたワークフローの周期的実装に対応する、受信することと、
前記複数の時点の各時点において、
前記１つ以上の構成されたコンピューティングシステムによって、１つ以上の基準が満たされていると決定することと、
前記第１の定義されたワークフローの前記実装を実施することと、
をさらに含む、付記１に記載の方法。
３．前記構成可能なワークフローサービスが料金ベースのサービスであり、前記方法が、前記第１の定義されたワークフローの前記実装を実施するために、前記第１の顧客から１つ以上の料金を取得することさらに含む、付記２に記載の方法。
４．コンピュータ実装方法であって、
構成可能なワークフローサービスの１つ以上の構成されたコンピューティングシステムによって、前記構成可能なワークフローサービスの顧客の定義されたワークフローのために構成情報を受信することであって、前記構成情報が、前記定義されたワークフローの複数のワークフローコンポーネントと、前記複数のワークフローコンポーネントのうちの少なくともいくつかの間の相互接続とを指定する、受信することと、
前記１つ以上の構成されたコンピューティングシステムによって、複数のコンピューティングノードを供給して、各々が前記複数のワークフローコンポーネントのうちの少なくとも１つを実装することであって、前記複数のコンピューティングノードのうちの少なくとも１つが、顧客による前記構成可能なワークフローサービスの使用のために前記構成可能なワークフローサービスによって提供される、実装することと、
前記実装されたワークフローコンポーネントに対応する前記複数のコンピューティングノードで定義されたアクティビティの実施を開始することによって、前記顧客の前記定義されたワークフローを実装することと、を含み、前記定義されたアクティビティが、
前記構成可能なワークフローサービスの外部の１つ以上のデータソースから入力データを取得することを伴う１つ以上の第１のアクティビティと、
前記取得された入力データに少なくとも部分的に基づいたデータ操作動作を実施することによって中間結果データを生成することを伴う１つ以上の第２のアクティビティと、
前記第２のアクティビティの前記中間結果データに少なくとも部分的に基づいて出力データを生成することを伴う１つ以上の第３のアクティビティと、を含む、方法。
５．前記顧客に対する前記定義されたワークフローの前記実装が、前記生成された出力データを前記顧客によって指定された１つ以上の記憶場所に記憶することと、前記生成された出力データに少なくとも部分的に基づき、かつ前記顧客に提供される１つ以上の報告を生成することと、のうちの少なくとも一方をさらに含む、付記４に記載の方法。
６．前記定義されたワークフローの実装を開始するための１つ以上の基準の指示を受信することと、
前記定義されたワークフローの前記実装前に、１つ以上の構成されたコンピューティングシステムによって、前記１つ以上の基準が満たされていると決定すること、
をさらに含む、付記４に記載の方法。
７．前記１つ以上の基準が、複数時点で利用可能な入力データの変更に基づいて前記複数の時点での前記定義されたワークフローの周期的実装に対応し、前記方法が、前記定義されたワークフローの前記実装を前記複数時点の各時点で実施することをさらに含む、付記６に記載の方法。
８．前記１つ以上の基準のうちの少なくとも１つが、前記複数のワークフローコンポーネントのうちの少なくとも１つと関連付けられた前提条件として定義される、付記６に記載の方法。
９．前記複数のワークフローコンポーネントのうちの１つと関連付けられる事後条件の基準についての情報を受信することをさらに含み、前記定義されたワークフローの前記実装が、前記１つのワークフローコンポーネントに対応する前記定義されたアクティビティのうちの１つ以上の前記実施の後に、前記事後条件の基準が満たされていると決定することをさらに含む、付記６に記載の方法。
１０．前記１つ以上の基準が満たされたとの前記決定が、第１の時点で発生し、前記方法が、
前記１つ以上の構成されたコンピューティングシステムによって、前記１つ以上の基準が第２の時点で満たされていないと決定することと、
これに応答して、前記顧客にアラーム通知を生成して前記１つ以上の基準が満たされていないことを知らせることと、
をさらに含む、付記６に記載の方法。
１１．
グラフィカルユーザインターフェースを提供することをさらに含み、前記顧客が、前記定義されたワークフローを論理的に表すグラフを編集することによって前記グラフィカルユーザインターフェースを介して前記構成情報によって、前記グラフの複数のノードのうちの少なくとも１つによって前記グラフ内に示される前記複数のワークフローコンポーネントの各々を指定し、
前記定義されたワークフローの前記実装が、前記グラフのコピーを物理的にインスタンス化することを含む、付記４に記載の方法。
１２．前記顧客に対して前記定義されたワークフローを、複数のはっきりと異なる時点において実装することをさらに含み、前記複数のコンピューティングノードのうちの１つ以上が、前記１つ以上のコンピューティングノードの前記供給が一回のみ発生することを可能にするために、前記複数のはっきりと異なる時点の間で維持される、付記４に記載の方法。
１３．前記複数のコンピューティングノードのうちに１つ以上について、前記コンピューティングノードが、前記定義されたアクティビティのうちの少なくとも１つを分散様式で実施する複数のコンピュータシステムのクラスタとして実装される、付記４に記載の方法。
１４．前記複数のコンピューティングノードの各々について、前記複数のコンピューティングノードの前記供給が、ソフトウエアプログラムおよび構成データのうちの少なくとも１つを前記コンピューティングノードにロードすることを含む、付記４に記載の方法。
１５．前記複数のコンピューティングノードのうちに１つ以上が、前記構成可能なワークフローサービスの外部のオンライン実行サービスによって提供され、前記１つ以上のコンピューティングノードの前記供給が、前記１つ以上の構成されたコンピューティングシステムによって、前記１つ以上のコンピューティングノードに対応する前記オンライン実行サービスとの１つ以上の対話を実施することを含む、付記４に記載の方法。
１６．前記提供された１つ以上のコンピューティングノードが、前記オンライン実行サービスによって、前記オンライン実行サービスを持つ前記顧客の口座と関連付けられ、前記オンライン実行サービスとの前記１つ以上の対話が、前記オンライン実行サービスに対して、前記顧客の代わりに、前記顧客の前記口座についての情報を提供することを含む、付記１５に記載の方法。
１７．前記提供された１つ以上のコンピューティングノードが、前記顧客が前記１つ以上のコンピューティングノードにアクセスすることを防止する様式で、前記オンライン実行サービスによって、前記構成可能なワークフローサービスと関連付けられる、付記１５に記載の方法。
１８．前記複数のワークフローコンポーネントが、１つ以上のソースコンポーネントおよび１つ以上のデータ操作コンポーネントおよび１つ以上の宛先コンポーネントを含み、前記１つ以上のソースコンポーネントの各々が、関連付けられたデータソースと、前記関連付けられたデータソースから前記入力データの少なくとも一部にアクセスするための関連付けられた命令と、を含み、前記１つ以上のデータ操作コンポーネントの各々が、前記データ操作動作のうちの少なくとも１つを実施するための関連付けられた命令を有し、前記１つ以上の宛先コンポーネントの各々が、生成された前記出力データのうちの少なくとも一部を取り扱う関連付けられた命令を有する、付記４に記載の方法。
１９．前記複数のワークフローコンポーネントが、複数の前記ソースコンポーネントをさらに含み、前記顧客に対して特有のデータソースに対するアクセスを可能にするために、前記ソースコンポーネントのうちの少なくとも１つが、前記顧客によって、前記構成可能なワークフローサービスに対して供給される、付記１８に記載の方法。
２０．前記複数のワークフローコンポーネントが、複数の前記データ操作コンポーネントをさらに含み、前記データ操作コンポーネントのうちの少なくとも１つが、前記顧客に対して特有の定義されたアクティビティの実施を可能にするために、前記顧客によって、前記構成可能なワークフローサービスに対して供給される関連付けられたデータ操作動作を有する、付記１８に記載の方法。
２１．前記複数のワークフローコンポーネントのうちの１つ以上が、前記構成可能なワークフローサービスによって提供され、前記定義されたワークフローで用いられるように前記顧客によって選択される、付記１８に記載の方法。
２２．前記構成可能なワークフローサービスの複数のさらなる顧客の各々について、
前記さらなる顧客のさらなる定義されたワークフローに対する構成情報を受信することと、
前記さらなる顧客のさらなる定義されたワークフローに対する前記構成情報を、前記構成可能なワークフローサービスの１つ以上の記憶機構に記憶することと、
前記さらなる定義されたワークフローを、前記さらなる顧客の代わりに、１つ以上のコンピューティングノードに１回以上実装することと、
をさらに含む、付記４に記載の方法。
２３．構成可能なワークフローサービスのコンピューティングシステムを、
前記構成されたコンピューティングシステムによって、定義されたワークフローに対して顧客によって供給された構成情報に基づいて、複数のコンピューティングノードを供給することであって、前記供給が、前記複数のコンピューティングノードを、前記定義されたワークフローに対して複数のワークフローコンポーネントを実装するように構成することを含み、前記定義されたワークフローが、前記複数のワークフローコンポーネントのうちの少なくとも一部間の相互接続を含む、供給することと、
前記実装されたワークフローコンポーネントに対応する前記複数のコンピューティングノードに対する定義されたアクティビティの実施を開始することによって、前記顧客に対する前記定義されたワークフローを実装することであって、前記定義されたアクティビティの前記実施が、１つ以上のデータソースから入力データを取得することと、前記取得された入力データに少なくとも部分的に基づくデータ操作動作を実施することと、前記実施されたデータ操作動作に少なくとも部分的に基づいた出力データを生成することと、を含む、実装することと、
を行うように構成する記憶されたコンテンツを有する非一時的コンピュータ可読媒体。
２４．前記構成可能なワークフローサービスが、前記構成可能なワークフローサービスの複数の顧客に対してワークフローを実装する際に用いられるように、複数のコンピューティングノードを提供し、前記複数のコンピューティングノードのうちの少なくとも一部が、前記複数のコンピューティングノードのサブ集合であり、前記記憶されたコンテンツが、実行されるときに、前記構成されたコンピューティングシステムをプログラムするソフトウエア命令である、付記２３に記載の非一時的コンピュータ可読媒体。
２５．前記複数のコンピューティングノードの前記供給前に、前記コンピューティングシステムが、
情報の指定時に、前記構成可能なネットワークサービスの顧客による使用のために１つ以上のインターフェースを提供し、かつ
前記定義されたワークフローに対する構成情報を前記顧客から、前記提供されたインターフェースのうちの少なくとも１つを介して受信するようにさらに構成され、
前記定義されたアクティビティが、前記受信された構成情報に従って実施される、付記２３に記載の非一時的コンピュータ可読媒体。
２６．前記複数のコンピューティングノードのうちの少なくとも一部が、前記構成可能なワークフローサービスの外部の１つ以上のプログラム実行サービスによって提供され、前記コンピューティングシステムが、前記複数のコンピューティングノードの前記供給の一部として、前記顧客の代わりに、前記１つ以上のプログラム実行サービスと対話するようにさらに構成される、付記２３に記載の非一時的コンピュータ可読媒体。
２７．前記複数のコンピューティングノードのうちの少なくとも一部が、前記構成されたコンピューティングシステムから遠隔の位置で前記顧客の制御下で１つ以上のコンピュータシステムを介して前記顧客によって提供され、前記コンピューティングシステムが、前記複数のコンピューティングノードの前記供給の一部として、前記１つ以上のコンピュータシステムと対話するようにさらに構成される、付記２３に記載の非一時的コンピュータ可読媒体。
２８．システムであって、
１つ以上のプロセッサと、
構成可能なワークフローサービスの１つ以上のモジュールであって、前記１つ以上のプロセッサのうちの少なくとも１つによって実行されるとき、
前記定義されたワークフローの複数のワークフローコンポーネントおよび相互接続を指定する前記顧客から構成情報を受信することと、
前記受信された構成情報に少なくとも部分的に基づいて複数のコンピューティングノードを供給して、前記複数のワークフローコンポーネントを実装することと、
前記実装されたワークフローコンポーネントに対応する前記複数のコンピューティングノードで定義されたアクティビティの実施を開始することによって、前記顧客の前記定義されたワークフローを実装することであって、前記定義されたアクティビティの前記実施が、１つ以上のデータソースから入力データを取得することと、前記取得された入力データに少なくとも部分的に基づいてデータ操作動作を実施することと、前記実施されたデータ操作動作に少なくとも部分的に基づいて出力データを生成することとを含むこと、
によって顧客に対する定義されたワークフローの機能性を提供するように構成される１つ以上のモジュールと、を備える、システム。
２９．前記構成可能なワークフローサービスの複数の顧客に対するワークフローを実装する際に用いられる複数のコンピューティングノードをさらに備え、前記複数のコンピューティングノードのうちの少なくとも一部が前記複数のコンピューティングノードのサブ集合であり、前記１つ以上のモジュールが、前記１つ以上のプロセッサのうちの少なくとも１つによる実行のためのソフトウエア命令を含む、付記２８に記載のシステム。
３０．１つ以上のモジュールが、前記顧客に対する前記定義されたワークフローの前記機能性の前記提供の実施のための１つ以上の手段から成る、付記２８に記載のシステム。
【００９３】
上記のように、これらの例示の実施形態のこれらの詳細は、説明するために提供されており、他の実施形態に関して説明された技法の範囲を制限するようには意図されない。
【００９４】
前述から、特定の実施形態が説明のために本明細書に記載されているが、本発明の精神および範囲から逸脱することなく様々な修正を加えることができることは明らかである。したがって、本発明は、添付の特許請求の範囲およびそこで列挙される要素以外によって限定されない。加えて、本発明のある態様が以下の特許請求の範囲に示される一方で、本発明者は、任意の利用可能な請求の形態で本発明の様々な態様を企図する。例えば、本発明のごく一部の態様がコンピュータ可読媒体において具現化されるように現在列挙され得るが、他の態様も同様にそのように具現化することができる。
【図１】
0005885859.tif 000002
【図２Ａ】
0005885859.tif 000003
【図２Ｂ】
0005885859.tif 000004
【図３】
0005885859.tif 000005
【図４】
0005885859.tif 000006
【図５】
0005885859.tif 000007