(57)【要約】  実行パイプラインを制御することに関するシステム、方法、およびその他の実施の形態を説明する。一実施の形態では、方法は、複数のタスクを実行するための実行パイプラインを生成するステップを含む。また、例示的な方法は、タスクの実行定義を評価して、複数のタスクの実行プロパティを識別するステップを含んでもよい。また、例示的な方法は、タスクの実行プロパティが実行環境の実行プロパティに一致することに基づいて、各タスクを実行環境のセットから選択される実行環境に割り当てるステップを含んでもよい。また、例示的な方法は、割り当てられた実行環境内で各タスクを実行するように実行パイプラインを制御するステップを含んでもよい。
2021517288.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータによって実行可能な命令を格納した非一時的なコンピュータ読み取り可能な媒体であって、前記命令は、コンピュータのプロセッサによって実行されると、前記プロセッサに、
ラン定義から導出される複数のタスクを実行するための実行パイプラインを生成させ、前記ラン定義は、前記複数のタスクの各タスクの実行定義を含み、前記命令は、さらに、前記プロセッサに、
前記実行定義を評価して前記複数のタスクの実行プロパティを識別させ、
前記タスクの実行プロパティが実行環境の実行プロパティに一致することに基づいて、前記実行環境のセットから選択される実行環境に前記複数のタスクの各タスクを割り当てさせ、各実行環境は、異なるリソースおよび機能を用いてタスクを実行し、前記命令は、さらに、前記プロセッサに、
前記割り当てられた実行環境で各タスクを実行するように前記実行パイプラインを制御させ、各タスクの前記実行定義は、前記割り当てられた実行環境による実行に対応するフォーマットに変換される、非一時的なコンピュータ読み取り可能な媒体。
【請求項２】
前記各タスクを割り当てるための命令は、
第１タスクの第１の実行定義を評価して、実行する関数および前記第１タスクのリソース要件を指定する第１の実行プロパティを識別するための命令と、
第２タスクの第２の実行定義を評価して、実行する関数および前記第２タスクのリソース要件を指定する第２の実行プロパティを識別するための命令と、
前記第１の実行プロパティが指定する前記リソース要件および関数が、前記実行環境のセットから選択される第１の実行環境が提供する利用可能なリソースおよび関数の実行プロパティに一致することに基づいて、前記第１の実行環境に前記第１タスクを割り当てるための命令と、
前記第２の実行プロパティが指定する前記リソース要件および関数が、前記実行環境のセットから選択される第２の実行環境が提供する利用可能なリソースおよび関数の実行プロパティに一致することに基づいて、前記第２の実行環境に前記第２タスクを割り当てるための命令とを含む、請求項１に記載の非一時的なコンピュータ読み取り可能な媒体。
【請求項３】
前記各タスクを割り当てるための命令は、
第１タスクの第１の実行定義を評価して、実行する関数および前記第１タスクのリソース要件を指定する第１の実行プロパティを識別するための命令と、
前記第１の実行プロパティが指定する前記リソース要件および関数を各実行環境が提供する利用可能なリソースおよび関数の実行プロパティと比較して、前記第１の実行プロパティが指定する前記リソース要件および関数に、利用可能なリソースおよび関数が一致する程度または上回る程度に基づいて、各実行環境にランクを割り当てるための命令と、
最高ランクまたは閾値を超えるランクを有する実行環境に前記第１タスクを割り当てるための命令とを含む、先行する請求項のいずれか１項に記載の非一時的なコンピュータ読み取り可能な媒体。
【請求項４】
前記命令は、
前記割り当てられた実行環境によるタスク実行の非同期実行追跡を実施するための命令と、
前記非同期実行追跡の結果へのアクセスを提供するための命令とを含む、先行する請求項のいずれか１項に記載の非一時的なコンピュータ読み取り可能な媒体。
【請求項５】
前記命令は、
複数の割り当てられた実行環境間で前記タスクのサブセットを実行するためのスケジュールを設定するための命令と、
前記スケジュールに従って前記複数の割り当てられた実行環境間で前記タスクのサブセットを実行するように前記実行パイプラインを制御するための命令とを含む、先行する請求項のいずれか１項に記載の非一時的なコンピュータ読み取り可能な媒体。
【請求項６】
前記各タスクを割り当てるための命令は、
変換タスクの実行プロパティに基づいて、前記変換タスクをアトミック操作としてインメモリ実行環境内で実行し、かつ、前記変換タスクの結果はデータベースに永続させると決定するための命令と、
前記インメモリ実行環境に前記変換タスクを割り当てるための命令とを含む、先行する請求項のいずれか１項に記載の非一時的なコンピュータ読み取り可能な媒体。
【請求項７】
前記命令は、
少なくとも前記実行パイプラインを含む実行パイプラインのセットを作成するための命令と、
前記実行パイプラインのセットに含まれる前記実行パイプラインの各々に前記複数のタスクのサブセットを割り当てるための命令と、
前記複数のタスクに含まれるタスクの並列実行のために前記実行パイプラインのセットを制御するための命令とを含む、先行する請求項のいずれか１項に記載の非一時的なコンピュータ読み取り可能な媒体。
【請求項８】
前記命令は、
前記割り当てられた実行環境が理解できるコマンドを前記実行定義内の宣言ステートメントから作成することによって、タスクの実行定義を宣言ステートメントフォーマットから前記割り当てられた実行環境によって用いられるフォーマットに変換するための命令を含む、先行する請求項のいずれか１項に記載の非一時的なコンピュータ読み取り可能な媒体。
【請求項９】
計算システムであって、
メモリに接続されたプロセッサと、
非一時的なコンピュータ読み取り可能な媒体に格納された、命令を有して構成されたパイプラインモジュールとを備え、前記命令は、前記プロセッサによって実行されると、前記プロセッサに、
ラン定義から導出される複数のタスクを実行するための実行パイプラインを生成させ、前記ラン定義は、前記複数のタスクの各タスクの実行定義を含み、前記命令は、さらに、前記プロセッサに、
前記実行定義を評価して前記複数のタスクの実行プロパティを識別させ、
前記タスクの実行プロパティが実行環境の実行プロパティに一致することに基づいて、前記実行環境のセットから選択される実行環境に前記複数のタスクの各タスクを割り当てさせ、各実行環境は、異なるリソースおよび機能を用いてタスクを実行し、前記命令は、さらに、前記プロセッサに、
前記割り当てられた実行環境で各タスクを実行するように前記実行パイプラインを制御させ、各タスクの実行定義は、前記割り当てられた実行環境による実行に対応するフォーマットに変換される、計算システム。
【請求項１０】
前記命令は、前記プロセッサに、
第１タスクの第１の実行定義を評価して、実行する関数および前記第１タスクのリソース要件を指定する第１の実行プロパティを識別させル命令と、
前記第１の実行プロパティが指定する前記リソース要件および関数を、各実行環境が提供する利用可能なリソースおよび関数の実行プロパティと比較し、前記第１の実行プロパティが指定する前記リソース要件および関数に、利用可能なリソースおよび関数が一致する程度または上回る程度に基づいて、各実行環境にランクを割り当てさせる命令と、
最高ランクまたは閾値を超えるランクを有する実行環境に前記第１タスク割り当てさせる命令とを含む、請求項９に記載の計算システム。
【請求項１１】
前記命令は、前記プロセッサに、
ボリュームデータタスクの実行定義を評価して、処理するデータの量を特定させるための命令と、
前記処理するデータの量を、実行環境が提供する利用可能なデータストレージリソースおよび処理リソースの実行プロパティと比較して、前記処理するデータの量と一致するまたは上回るデータストレージリソースおよび処理リソースを提供するデータベース実行環境を特定させるための命令と、
前記データベース実行環境に前記ボリュームデータタスクを割り当てさせるための命令とを含む、請求項９または１０に記載の計算システム。
【請求項１２】
前記命令は、前記プロセッサに、
タスクの実行定義を評価して、前記タスクがＲＥＳＴ（Ｒｅｐｒｅｓｅｎｔａｔｉｏｎａｌ  Ｓｔａｔｅ  Ｔｒａｎｓｆｅｒ）サービスをカプセル化すると判断させるための命令と、
前記実行定義を、実行環境が提供するサービスの実行プロパティと比較し、前記ＲＥＳＴサービスに対応するサービスを提供するリモートクラスタ実行環境を特定させるための命令と、
前記リモートクラスタ実行環境に前記タスクを割り当てさせるための命令とを含む、請求項９〜１１のいずれか１項に記載の計算システム。
【請求項１３】
前記命令は、前記プロセッサに、
計算ルーチンタスクの実行定義を評価して、前記タスクが計算関数を実行すると判断させるための命令と、
前記実行定義を、実行環境が提供する関数の実行プロパティと比較し、前記計算関数に対応する関数を提供するＲＥＳＴ（Ｒｅｐｒｅｓｅｎｔａｔｉｏｎａｌ  Ｓｔａｔｅ  Ｔｒａｎｓｆｅｒ）サービス実行環境を特定させるための命令と、
前記ＲＥＳＴサービス実行環境に前記計算ルーチンタスクを割り当てさせるための命令とを含む、請求項９〜１２のいずれか１項に記載の計算システム。
【請求項１４】
前記命令は、前記プロセッサに、
割り当てられた実行環境から対象の実行環境にタスクを再割り当てさせるための命令を含む、請求項９〜１３のいずれか１項に記載の計算システム。
【請求項１５】
前記タスクを再割り当てする前記命令は、前記プロセッサに、
前記割り当てられた実行環境のデフォルト実行プロパティよりも前記対象実行環境の実行プロパティを優先させるための命令を含む、請求項１４に記載の計算システム。
【発明の詳細な説明】
【技術分野】
【０００１】
優先権の主張
本特許出願は、２０１８年３月２７日に出願され、本特許出願と同一の出願人による「ＣＯＭＰＵＴＥＲＩＺＥＤ  ＣＯＮＴＲＯＬ  ＯＦ  ＥＸＥＣＵＴＩＯＮ  ＰＩＰＥＬＩＮＥＳ」と題された米国通常特許出願第１５／９３６，６０６号の関連出願であり、当該出願の優先権を主張する。
【０００２】
発明の分野
本開示は、実行パイプラインを制御することに関し、より具体的には、選択された実行環境内でタスクを実行するように実行パイプラインを制御するためのシステムおよび方法に関する。
【背景技術】
【０００３】
背景
多くの企業がコンピュータインフラストラクチャを組み立てて保守し、大量のデータを格納および処理している。このようなデータ処理は、データセンターなど、１つの実行環境内で複数のタスクを実行する分析パイプラインを通して行うことができる。これらのタスクは、１つのタスクがデータを読み出して処理し、結果を出力し、この出力が別のタスクによってその後利用されるよう、相互に依存し得る。各タスクが大量のデータを処理して限界のない複合的な結果を出力できるので、分析パイプラインの実行は非常に複雑になり得る。メモリ要件および処理要件、ＳＬＡ（Ｓｅｒｖｉｃｅ  Ｌｅｖｅｌ  Ａｇｒｅｅｍｅｎｔ）要件、セキュリティ要件など、各タスクの特定の実行プロパティに合わせて実行環境が調整されていないので、１つの実行環境でこれらのタスクを処理することは、効率が悪く実用的でない。分析パイプラインもまた、履歴データ、分散データ、および／またはクラウドで安全に格納されていないであろう機密データを取り扱うので、複雑である。また、分析パイプラインはＳＬＡ要件を有しており、様々な場所に存在して分散データを保持する様々なアプリケーションおよびプラットフォームを利用することができる。
【発明の概要】
【課題を解決するための手段】
【０００４】
概要
本明細書において、実行パイプラインを制御するコンピュータ化されたシステムおよび方法を説明する。一実施の形態では、コンピュータによって実行可能な命令を１つ以上のプログラムとして格納した非一時的なコンピュータ読み取り可能な媒体であって、命令は、コンピュータのプロセッサによって実行されると、プロセッサに、ラン定義から導出される複数のタスクを実行するための実行パイプラインを生成させ、ラン定義は、複数のタスクの各タスクの実行定義を含み、命令は、さらに、プロセッサに、実行定義を評価して複数のタスクの実行プロパティを識別させ、タスクの実行プロパティが実行環境の実行プロパティに一致することに基づいて、実行環境のセットから選択される実行環境に複数のタスクの各タスクを割り当てさせ、各実行環境は、異なるリソースおよび機能を用いてタスクを実行し、命令は、さらに、プロセッサに、割り当てられた実行環境で各タスクを実行するように実行パイプラインを制御させ、各タスクの実行定義は、割り当てられた実行環境による実行に対応するフォーマットに変換される、非一時的なコンピュータ読み取り可能な媒体を開示する。
【０００５】
別の実施の形態では、各タスクを割り当てるための命令は、第１タスクの第１の実行定義を評価して、実行する関数および第１タスクのリソース要件を指定する第１の実行プロパティを識別するための命令と、第２タスクの第２の実行定義を評価して、実行する関数および第２タスクのリソース要件を指定する第２の実行プロパティを識別するための命令と、第１の実行プロパティが指定するリソース要件および関数が、実行環境のセットから選択される第１の実行環境が提供する利用可能なリソースおよび関数の実行プロパティに一致することに基づいて、第１の実行環境に第１タスクを割り当てるための命令と、第２の実行プロパティが指定するリソース要件および関数が、実行環境のセットから選択される第２の実行環境が提供する利用可能なリソースおよび関数の実行プロパティに一致することに基づいて、第２の実行環境に第２タスクを割り当てるための命令とを含む。
【０００６】
別の実施の形態では、非一時的なコンピュータ読み取り可能な媒体は、割り当てられた実行環境によるタスク実行の非同期実行追跡を実施し、非同期実行追跡の結果へのアクセスを提供するための、コンピュータによって実行可能な命令を含む。
【０００７】
別の実施の形態では、非一時的なコンピュータ読み取り可能な媒体は、プロセッサに、複数の割り当てられた実行環境間でタスクのサブセットを実行するためのスケジュールを設定させ、スケジュールに従って複数の割り当てられた実行環境間でタスクのサブセットを実行するように実行パイプラインを制御させるための、コンピュータによって実行可能な命令を含む。
【０００８】
別の実施の形態では、非一時的なコンピュータ読み取り可能な媒体は、プロセッサに、変換タスクの実行プロパティに基づいて、変換タスクをアトミック操作としてインメモリ実行環境内で実行し、かつ、変換タスクの結果はデータベースに永続させると決定させ、インメモリ実行環境に変換タスクを割り当てさせるための命令を含んだ、各タスクを割り当てるための命令を含む。
【０００９】
別の実施の形態では、非一時的なコンピュータ読み取り可能な媒体は、プロセッサに、少なくとも実行パイプラインを含む実行パイプラインのセットを作成させ、実行パイプラインのセットに含まれる実行パイプラインの各々に複数のタスクのサブセットを割り当させ、複数のタスクに含まれるタスクの並列実行のために実行パイプラインのセットを制御させるためのコンピュータによって実行可能な命令を含む。
【００１０】
別の実施の形態では、非一時的なコンピュータ読み取り可能な媒体は、プロセッサに、割り当てられた実行環境が理解できるコマンドを実行定義内の宣言ステートメントから作成することによって、タスクの実行定義を宣言ステートメントフォーマットから割り当てられた実行環境によって用いられるフォーマットに変換させるための、コンピュータによって実行可能な命令を含む。
【００１１】
一実施の形態では、１つ以上の計算装置によって実行され、上述したコンピュータにより実行可能な命令の関数の任意の組合せを実行するコンピュータにより実現される方法を開示する。
【００１２】
別の実施の形態では、計算システムであって、メモリに接続されたプロセッサと、非一時的なコンピュータ読み取り可能な媒体に格納された、命令を有して構成されたパイプラインモジュールとを備え、命令は、プロセッサによって実行されると、プロセッサに、ラン定義から導出される複数のタスクを実行するための実行パイプラインを生成させ、ラン定義は、複数のタスクの各タスクの実行定義を含み、命令は、さらに、プロセッサに、実行定義を評価して複数のタスクの実行プロパティを識別させ、タスクの実行プロパティが実行環境の実行プロパティに一致することに基づいて、実行環境のセットから選択される実行環境に複数のタスクの各タスクを割り当てさせ、各実行環境は、異なるリソースおよび機能を用いてタスクを実行し、命令は、さらに、プロセッサに、割り当てられた実行環境で各タスクを実行するように実行パイプラインを制御させ、各タスクの実行定義は、割り当てられた実行環境による実行に対応するフォーマットに変換される、計算システムを開示する。
【００１３】
本方法およびシステムの１つの目的は、選択された実行環境内で、実行効率と、計算リソース利用と、ネットワーク帯域幅利用とを向上させる方法でタスクの実行を制御することである。一実施の形態では、これは、実行環境との照合処理と、どの実行環境が特定のタスクを実行するのにより適しているかを判断することとを含んで実行される。これによって、本システムが可能になる。あらゆる種類のタスクを実行するために１種類の実行環境を用いるシステムよりも、本システムは計算システムの実行効率を向上させる。
【００１４】
添付の図面は、本明細書に組み込まれ、且つ、本明細書の一部を構成し、本開示の様々なシステム、方法、およびその他の実施の形態を示す。当然ながら、図示された構成要素の境界（たとえば、枠、枠群、またはその他の形状）は、境界の一実施の形態を表す。いくつかの実施の形態では、１つの構成要素は、複数の構成要素として実装されてもよく、複数の構成要素は、１つの構成要素として実装されてもよい。いくつかの実施の形態では、別の構成要素の内蔵コンポーネントとして示される構成要素は、外付けコンポーネントとして実装されてもよく、その逆も然りである。さらに、構成要素は、縮尺通りに描かれていない場合がある。
【図面の簡単な説明】
【００１５】
【図１】実行パイプラインの制御に関するシステムの実施の形態を示す図である。
【図２】実行パイプラインの制御に関する方法の実施の形態を示す図である。
【図３】実行パイプラインの制御に関するシステムの実施の形態を示す図である。
【図４】データ取り込みタスク、変換タスク、機能的タスク、および外部タスクに関する実行パイプラインの制御に関するシステムの実施の形態を示す図である。
【図５】実行パイプラインの制御に関するシステムの実施の形態を示す図であり、当該実行パイプラインを利用して計算ランのタスクが実行される。
【図６】実行パイプラインの制御に関するシステムの実施の形態を示す図であり、当該実行パイプラインが実行環境を利用して複数のタスクを実行する。
【図７】実行パイプラインの制御に関するシステムの実施の形態を示す図であり、当該実行パイプラインを利用して監査サービスのタスクが実行される。
【図８】非一時的なコンピュータ読み取り可能な媒体の実施の形態を示す図である。
【図９】開示の例示的なシステムおよび／または方法を用いて構成される計算システムの実施の形態を示す図である。
【図１０】本発明の実施の形態が実装され得る統合業務システムの実施の形態、および企業ネットワークを示す図である。
【図１１】マルチテナント分散コンピューティングサービスプラットフォームの実施の形態を示す図である。
【発明を実施するための形態】
【００１６】
詳細な説明
本明細書において、実行パイプラインを制御するコンピュータ化されたシステムおよび方法について説明する。パイプラインモジュールが当該実行パイプラインを生成し、選択された実行環境内でタスクを実行するように実行パイプラインを制御する。実行環境は、特定のタスクを実行することに適した機能およびリソースを提供する。特に、パイプラインモジュールは、利用可能な実行環境のセットから特定の実行環境を選択して、特定のタスクを、実行環境の実行プロパティと各タスクの実行プロパティとのマッチ度に基づいて実行する。よって、タスクを実行することに合わせて調整されたリソースおよび機能を有する実行環境がそのタスクを実行するのに割り当てられる。パイプラインモジュールは、パイプラインモジュールを通したタスクの実行を、処理リソース、ストレージリソース、およびネットワーク帯域幅を節約するために実行環境間のデータの移動またはコピーを抑える方法で調整する。選択された実行環境内でタスクを実行することによって、タスクを実行するための計算効率が向上し、これによって処理リソースおよびストレージリソースを節約することができる。
【００１７】
一実施の形態では、実行用に受信したタスクのセットがある場合、特定の実行環境にタスクを割り当てるために、パイプラインモジュールは、タスクの実行プロパティを実行環境の実行プロパティと比較して照合する。タスクの実行プロパティは、入力／出力パラメータ、命令、および／またはタスクを実行するために用いられるその他の関数または要件を含み得る。一実施の形態では、実行プロパティは、メモリ要件、データセキュリティ要件、実行する計算／算出の種類、タスクの入力を出力に変換するために実行される変換の種類、または実行するプログラムコード、処理するデータの種類および量、ＳＬＡ（Ｓｅｒｖｉｃｅ  Ｌｅｖｅｌ  Ａｇｒｅｅｍｅｎｔ）、データが存在する場所、および／または、ＣＰＵサイクルなど、タスクの処理要件を含み得る。その他のタスクの実行プロパティは、ＲＥＳＴ（Ｒｅｐｒｅｓｅｎｔａｔｉｏｎａｌ  Ｓｔａｔｅ  Ｔｒａｎｓｆｅｒ）サービスの利用、使用する分析モデル、別のタスクによって出力される結果に応じて異なるタスク、タスクが同期タスクであるか、非同期タスクであるか、タスクを並列で実行可能であるかどうか、タスクに対応した実行プラットフォームの種類、および／またはその他の様々な実行プロパティを含み得る。
【００１８】
実行環境の実行プロパティは、タスクを実行するためにどのリソースが利用する可能であるかを定義する。一実施の形態では、実行環境の実行プロパティは、処理リソース、セキュリティプロパティ、利用可能な実行プラットフォーム、利用可能なＡＰＩ（Ａｐｐｌｉｃａｔｉｏｎ  Ｐｒｏｇｒａｍｍｉｎｇ  Ｉｎｔｅｒｆａｃｅ）などを含んでもよい。その他の実行環境の実行プロパティは、利用可能なデータベースリソースおよび機能、データをインメモリで処理する能力、クラスタ計算プロパティ、クラウドコンピューティングプロパティ、ハードウェアプロパティ、利用可能なサービス、および／またはその他の様々な実行プロパティを含んでもよい。
【００１９】
タスクの実行プロパティが実行環境の実行プロパティと比較および照合され、実行環境が割り当てられて特定のタスクが実行される。照合処理を実行してどの実行環境が特定のタスクを実行するのにより適しているかを判断することにより、パイプラインモジュールは、選択された実行環境内でのタスクの実行を、実行効率と、計算リソース利用と、ネットワーク帯域幅利用とを向上させる方法で制御する。よって、前述したような１種類の実行環境を用いてあらゆる種類のタスクを実行するシステムと比較して、本システムは、計算システムの実行効率を改善する。
【００２０】
図１を参照して、実行パイプラインの制御に関するコンピュータシステム１００の一実施の形態を例示する。コンピュータシステム１００は、パイプラインモジュール１０５を含む。パイプラインモジュール１０５は、図９のコンピュータ９１５など、コンピュータ上で動作するように構成され得る。パイプラインモジュール１０５は、第１タスク、第２タスク、第３タスク、第４タスクなど、１つのラン（ｒｕｎ）にグループ分けされたタスクの処理を改善するように構成される。一実施の形態では、ランとは、逐次および／または並列などで実行されるタスクのグループ分けを定義したデータ構造である。当該ランのラン定義１１０は、第１タスクの第１の実行定義１１５、第２タスクの第２の実行定義１２０、第３タスクの第３の実行定義１２５、および第４タスクの第４の実行定義１３０など、実行定義を通してタスクを定義する。
【００２１】
一実施の形態では、実行定義は、宣言的定義である。よって、実行定義は、宣言ステートメントを使って、タスクがどのように実行されるかについてと、タスクのパラメータとを定義する。たとえば、タスクの実行定義は、入力パラメータ、出力パラメータ、実行するコマンドおよびメソッド、呼び出す関数、アクセスするサービス、利用する分析モデル、実行する分析などを定義してもよい。ラン定義１１０は、幅広いタスクを実行定義によって記述してもよい。一実施の形態では、ラン定義１１０は、銀行顧客がローンの貸し倒れに陥る確率を算出するためのタスク、従業員の退職率を監視および予測するためのタスク、銀行が行う、高い利益が上げられる活動を特定するためのタスクなどを記述する。別の実施の形態では、ラン定義１１０は、公益事業会社、企業、事業、政府機関などのビジネスロジックの実施など、幅広い産業に関連するタスクを記述する。
【００２２】
パイプラインモジュール１０５は、タスクごとに最も適した選択された実行環境内でランのタスクを実行する実行パイプライン１４５を生成するように構成される。特に、パイプラインモジュール１０５は、タスクの実行定義を評価して、タスクの実行プロパティ１３５を識別する。実行プロパティ１３５は、メモリ要件、タスクが実行される実行プラットフォームの種類、ＣＰＵ要件、ＲＥＳＴサービスの利用、処理されるデータの種類などに相当してもよい。また、実行プロパティ１３５は、処理されるデータの量、当該データの現在の格納場所、どの関数、計算、および変換が実行されるのか、および／またはタスクの実行に関するその他の様々なプロパティに相当してもよい。
【００２３】
第１の実行環境１５０、第２の実行環境１５５、第３の実行環境１６０、および／またはその他の実行環境の数および種類など、タスクを実行するための様々な実行環境が利用可能である。実行環境は、特定の種類のタスクを実行するためのそれぞれ異なる計算リソースおよび機能を提供するように実装される。たとえば、ある種類の実行環境は、データベース呼び出しを実行するように構成され得る一方、別の異なる実行環境は、データベース呼び出しを実行しない。したがって、各実行環境は、実行環境の特徴を定義する関連する実行プロパティ１４０のセットを含む。実行プロパティ１４０は、パイプラインモジュール１０５がアクセス可能なデータ構造に格納されてもよい。
【００２４】
計算システムは、タスクを処理するために利用可能な任意の数の実行環境を有してもよい。例示的な実行環境は、クラスタ計算環境、クラウド計算環境、ローカル計算環境、インメモリ実行環境、スクリプト実行環境、特定のオペレーティングシステム、特定のアプリケーションフレームワークまたはプラットフォーム、データベース実行環境などを含んでもよい。実行環境の実行プロパティ１４０は、利用可能なメモリ、ストレージ、冗長性およびデータ保護、セキュリティ、ＳＬＡ（Ｓｅｒｖｉｃｅ  Ｌｅｖｅｌ  Ａｇｒｅｅｍｅｎｔ）コンプライアンス、ＲＥＳＴサービス、利用可能なＣＰＵ、マルチテナントサービス、関数およびメソッド、ならびに／またはタスク／コードを実行できる計算環境に関するその他の様々なプロパティに相当してもよい。
【００２５】
タスク（複数可）をどのように実行するかを決定する際、パイプラインモジュール１０５は、タスクの実行プロパティ１３５を実行環境の実行プロパティ１４０と比較して、互いにベストマッチする実行環境にタスクを割り当てる。特に、メモリリソース、ＣＰＵリソース、ストレージリソース、セキュリティ、および／またはタスクの実行プロパティ１３５が示すそのタスクを実行するための要件に一致するその他の実行プロパティ１４０を提供する実行環境にタスクが割り当られる。このように、実行環境の実行プロパティ１４０がタスクの実行プロパティ１３５に一致する（たとえば、実行プロパティ１３５の要件を満たす）場合、タスクはこの実行環境に割り当てられる。よって、パイプラインモジュール１０５は、各タスクをその割り当てられた実行環境で実行するように実行パイプライン１４５を制御する。
【００２６】
実行する前にタスクを用意するために、パイプラインモジュール１０５は、タスクの実行定義を、割り当てられた実行環境による実行に対応するフォーマットに変換する。利用可能な実行環境がシステムに知られているので、各実行環境が要求するデータのフォーマットがシステムにプログラムされる。システムは、その後、トランスレータとして機能し、実行環境の選択されたフォーマットにタスクの実行定義のフォーマットを変換してもよい。一実施の形態では、タスクの実行定義内の宣言ステートメントは、タスクが割り当てられる実行環境が理解可能なフォーマットに変換／変更される。実行定義を変換する一実施の形態では、割り当てられた実行環境がデータベース実行環境である場合、タスクからの宣言ステートメントは、データベースによって実行可能なデータベースステートメントに変換される。実行定義を変換する別の実施の形態では、宣言ステートメントは、割り当てられた実行環境のサービスによって実行可能な実行指示文に変換される。実行定義を変換する別の実施の形態では、宣言ステートメントは、フレームワークによって実行可能なコードに変換される。実行定義を変換する別の実施の形態では、宣言ステートメントは、スクリプトエンジンによって実行可能なスクリプトに変換される。
【００２７】
図２を参照して、実行パイプラインを制御することに関する、コンピュータにより実現される方法２００の一実施の形態を例示する。一実施の形態では、方法２００は、実行パイプラインの生成および制御に関連する命令を実行するためのプロセッサ９２０など、コンピュータ９１５の様々な計算リソースを利用してパイプラインモジュール１０５によって実行される。実行プロパティ、実行定義、実行パイプラインのデータなど、データを格納するためにメモリ９３５および／またはディスク９５５が用いられる。パイプラインモジュール１０５と、実行パイプラインと、リモート実行環境などの実行環境との間でデータを伝達するためなど、ネットワーク上でデータ構造および／またはその他のデータをコンピュータ９１５とリモートコンピュータとの間で伝達するためにネットワークハードウェアが用いられる。実行する複数のタスクを含んだランの実行を管理する要求を受け付けると、方法２００がトリガーされる。一実施の形態では、コンピュータプログラムは、コンピュータに、特徴の任意の組合せを含む本明細書に開示の方法を実行させるように構成される。
【００２８】
パイプラインモジュール１０５は、図３の例示的なシステム３００によって示すように、実行する複数のタスクを含んだランのラン定義３０５を識別する。ラン定義３０５は、タスクがどのように実行されるかを記述した宣言ステートメントなど、タスクの実行定義を含む。一実施の形態では、ラン定義３０５は、データソースからデータを取り込むためのデータ取り込みタスクの第１の実行定義３１０を含む。ラン定義３０５は、銀行の貸し倒れ確率モデルと顧客データとを使用して顧客がローンの貸し倒れに陥るリスクを計算するリスク計算タスクの第２の実行定義３１５を含む。ラン定義３０５は、顧客が彼らのリスクに基づいて分類される顧客分類タスクの第３の実行定義３２０を含む。このように、ラン定義３０５は、業務のビジネスロジックを実施するタスク、公益事業会社によって実行されるタスク、請求書発行タスク、人材タスク、会計タスクなど、様々な産業に関する幅広いタスクを含んでもよい。
【００２９】
２０５において、パイプラインモジュール１０５は、データ取り込みタスク、リスク計算タスク、顧客分類タスク、および／またはその他のタスクなど、ランのタスクを実行するための実行パイプライン３３５を生成する。実行パイプライン３３５は、命令のデータ構造、コード、実行環境にアクセスするための通信機能、ＡＰＩ（Ａｐｐｌｉｃａｔｉｏｎ  Ｐｒｏｇｒａｍｍｉｎｇ  Ｉｎｔｅｒｆａｃｅ）、サービス、ＲＥＳＴインターフェース、処理／制御機能、および／または実行環境によるタスクの実行を調整するためのその他の機能を含んでもよい。
【００３０】
実行パイプライン３３５を生成する一実施の形態では、データ処理要素のセットが定義される、または利用可能な予め定義されたデータ処理要素から選択される。各データ処理要素は、実行可能なコードを含むように定義される。実行可能なコードは、当該実行可能なコードによって定義されたコマンドを実行するために、プロセッサによって実行することができる。コマンドの入力と出力、および、出力を作成するための入力がなされたときにどの命令がコマンドによって実行されるかを指定するようにデータ処理要素を定義することができる。例では、データ処理要素のセットを予め定義することができ、当該データ処理要素のセットが、特定の出力を実現するための所望のデータ処理機能をどのデータ処理要素が提供するかに基づいて、利用可能なデータ処理要素から選択される。たとえば、会社の医療費を報告するための実行パイプライン３３５を生成するために、従業員データの取得、医療保険料の算出、およびレポートの作成に関するデータ処理要素が選択され得る。一実施の形態では、１つ以上のプロセッサによって要素を実行するためのパイプラインにおいて知られている、一方のデータ処理要素の出力が他方のデータ処理要素の入力として用いられる直列接続などでデータ処理要素を互いに論理的に接続することができる。
【００３１】
２１０において、パイプラインモジュール１０５は、実行定義を評価して複数のタスクの実行プロパティ３２５を識別する。一実施の形態では、第１の実行定義３１０を評価してデータ取り込みタスクの第１の実行プロパティセットを識別する。第２の実行定義３１５を評価してリスク計算タスクの第２の実行プロパティセットを識別する。第３の実行定義３２０を評価して顧客分類タスクの第３の実行プロパティセットを識別する。
【００３２】
一実施の形態では、タスクの実行定義は、タスクが実行のために受信される前に宣言ステートメントによって定義済みである。一例において、宣言ステートメントは、どのように結果を実現するかについての制御フローを明示的に定義しなくてもタスクのロジックおよび結果が定義される宣言型プログラミングによって定義することができる。たとえば、宣言型プログラミングを使用して、どのように出力を実現するかについてのプロシージャを定義しないで、入力と予測される出力とを指定する。宣言型プログラミングの例として、ＳＱＬ（Ｓｔｒｕｃｔｕｒｅｄ  Ｑｕｅｒｙ  Ｌａｎｇｕａｇｅ）などのデータクエリ言語、正規表現、論理型プログラミング、関数型プログラミングがある。別の例では、実行定義の宣言ステートメントは、ＨＴＭＬ（ＨｙｐｅｒＴｅｘｔ  Ｍａｒｋｕｐ  Ｌａｎｇｕａｇｅ）、宣言型ＸＭＬ（Ｅｘｔｅｎｓｉｂｌｅ  Ｍａｒｋｕｐ  Ｌａｎｇｕａｇｅ）、またはＣＳＳ（Ｃａｓｃａｄｉｎｇ  Ｓｔｙｌｅ  Ｓｈｅｅｔ）など、マークアップ言語を用いて定義済みである。このように、ラン定義は、タスクの実行定義を含んでもよい。
【００３３】
したがって、一実施の形態では、実行定義は、宣言型パーサを用いて構文解析され、実行プロパティを定義する宣言ステートメント（たとえば、文字列）、実行プロパティのパラメータ、および／またはパラメータの値が識別される。たとえば、宣言ステートメントを構文解析して、タスクの実行中にアクセスされる外部サービスのウェブアドレス、外部サービスに送信される入力、および外部サービスから受信する、予想される出力データ型を識別してもよい。一実施の形態では、ＸＭＬパーサを利用して、実行定義内で宣言型ＸＭＬによって定義された宣言ステートメントを抽出して処理する。ＸＭＬパーサは、宣言ステートメントを抽出して処理し、実行定義内にある、実行プロパティ、実行プロパティのパラメータ、および／またはこれらのパラメータの値を示す文字列を識別する。ＸＭＬパーサは、このような情報を識別するように訓練することができ、抽出された文字列を、予め定義された予測文字列のテンプレートと、このような情報を示す当該文字列の構造／順序とに照合してもよい。
【００３４】
どの実行環境がタスクを実行するのかを決定するために、パイプラインモジュール１０５は、タスクを実行できる利用可能な実行環境の実行プロパティ３３０にアクセスまたは当該実行プロパティ３３０を識別する。このような実行環境は、インメモリ実行環境３４０、データベース実行環境３４５、クラスタ実行環境３５０、および／または、ソフトウェアホスティングプラットフォーム、オペレーティングシステム、リモートサービス、アプリケーション、クラウドサービス、マルチテナントサービスなど、その他の実行環境を含み得る。
【００３５】
２１５において、パイプラインモジュール１０５は、実行環境の実行プロパティ３３０にタスクの実行プロパティ３２５が一致（たとえば、最も当てはまる、最も近い、閾値内の一致）することに基づいて、利用可能な実行環境から選択される実行環境に各タスクを割り当てる。一実施の形態では、データ取り込みタスクは、データ取り込みタスクの実行プロパティの第１セットがデータベース実行環境３４５の実行プロパティにベストマッチすることに基づいて、データベース実行環境３４５に割り当てられる。リスク計算タスクは、リスク計算タスクの実行プロパティの第２セットがインメモリ実行環境３４０の実行プロパティにベストマッチすることに基づいて、インメモリ実行環境３４０に割り当てられる。顧客分類タスクは、顧客分類タスクの実行プロパティの第３セットがクラスタ実行環境３５０の実行プロパティにベストマッチすることに基づいて、クラスタ実行環境３５０に割り当てられる。
【００３６】
その他のタスクが特定の実行環境に割り当てられてもよい。一実施の形態では、ＲＥＳＴサービスをカプセル化しているタスクは、タスクの実行プロパティがクラスタ実行環境３５０の実行プロパティにベストマッチすることに基づいて、クラスタ実行環境３５０に割り当てられる。別の実施の形態では、計算ルーチンタスクは、計算ルーチンタスクの実行プロパティがＲＥＳＴサービス実行環境の実行プロパティにベストマッチすることに基づいて、ＲＥＳＴサービス実行環境によって実行されるように割り当てられる。別の実施の形態では、ボリュームデータタスクは、ボリュームデータタスクによって計算されたデータの量が閾値を超えるとボリュームデータタスクの実行プロパティが示すことに基づいて、データベース実行環境３４５内で実行されるように割り当てられる。たとえば、データベース内に格納されたデータを、データベースから別の実行環境に移動するよりも、データベース実行環境３４５内でインプレースで処理する方が効率的であろう。別の実施の形態では、変換タスクをアトミック操作としてインメモリで実行し、変換タスクの結果はデータベースに永続（ｐｅｒｓｉｓｔ）させるとの決定に基づいて、変換タスクをインメモリ実行環境３４０に割り当てる。
【００３７】
一実施の形態では、第１タスクの第１の実行定義を評価して、実行する関数および第１タスクのリソース要件を指定する第１の実行プロパティを識別する。第１の実行プロパティが指定するリソース要件および関数は、各実行環境が提供する利用可能なリソースおよび関数の実行プロパティと比較され、少なくとも比較結果に基づいて、各実行環境にランクが割り当てられる。ランクは、利用可能なリソースおよび関数が第１の実行プロパティが指定するリソース要件および関数に一致する度合いまたはそれを上回る度合いに基づいて、実行環境に割り当てられる。
【００３８】
一実施の形態では、必要な機能、またはタスクを実行するために必要なコンピュータ資源を実行環境が含まない場合、この実行環境には最低ランクが割り当てられる。別の実施の形態では、タスクを実行するために最低限必要な機能およびコンピュータ資源を複数の実行環境が少なくとも含む場合、各実行環境は、様々な要因に基づいてランク付けされる。このような要因は、実行コスト、利用可能なネットワーク帯域幅／ネットワーク処理、ストレージリソースおよび処理リソースなどの利用可能なコンピュータ資源、現在の負荷、予測される負荷、提供されるセキュリティレベル、提供されるデータ冗長性および保護のレベル、サービス品質の保証などに相当し得る。このように、第２の実行環境よりも効率的にタスクを実行できる実行環境は、第２の実行環境よりも高くランク付けされるであろう。同様に、より多くのコンピュータ資源および帯域幅を有するがためにより速くタスクを実行できる、よりセキュアにおよび／またはより少ないコストでタスクを実行できる場合、この実行環境は、そのようなことができない別の実行環境よりも高くランク付けされるであろう。一実施の形態では、実行環境の各パラメータには、このような比較に基づいたランクサブ値が与えられてもよく、ランクサブ値のすべてを合わせて最終ランク値を決定してもよい。比較とランク付けが完了すると、タスクを実行するために最高ランクの実行環境が割り当てられる。
【００３９】
一実施の形態では、より良い実行環境が利用可能になった場合、異なる実行環境にタスクを再割り当てしてもよい。たとえば、ある実行環境にタスクが割り当てられたあと、最初の割り当て後に実行パイプライン３３５が利用できるようになった実行環境など、異なる実行環境にタスクを再割り当てすることができる。タスクを実行するために用いられる当初割り当てられた実行環境のデフォルト実行プロパティよりも、タスクを実行するために用いられる再割り当てされた実行環境の実行プロパティが優先されてもよい。よって、タスクは、再割り当てされた実行環境が理解できるフォーマットに変換されてもよい。
【００４０】
２２０において、パイプラインモジュール１０５は、割り当てられた実行環境内で各タスクを実行するように実行パイプライン３３５を制御する。一実施の形態では、実行パイプライン３３５は、データベース実行環境３４５内でのデータ取り込みタスクの実行を調整する。タスクがパイプラインを通してどのように実行されるかについては、本開示の範囲を超えており、含まれない。実行パイプライン３３５は、インメモリ実行環境３４０内でのリスク計算タスクの実行を調整する。実行パイプライン３３５は、クラスタ実行環境３５０内での顧客分類タスクの実行を調整する。タスクの実行は、当該タスクの実行定義を用いて容易にしてもよい。宣言ステートメントまたはその他のフォーマットによって実行定義を定義してもよいため、実行定義は、割り当てられた実行環境による実行に対応するフォーマットに変換されてもよい。一実施の形態では、データ取り込みタスクの第１の実行定義３１０は、データベース実行環境３４５が理解できる、ＳＱＬステートメントなどのデータベースステートメントに変換されてもよい。タスクを実行する一実施の形態では、タスクの実行は、ラッパー（ｗｒａｐｐｅｒ）ＲＥＳＴインターフェースを利用して、割り当てられた実行環境を通して起動されてもよい。
【００４１】
一実施の形態では、１つの調達動作を実行し、タスクを実行するために用いられるデータ（たとえば、入力データ）を、割り当てられた実行環境に当該タスクの実行のために調達する。このように、タスクの実行中にネットワークのあちこちでデータを転送（たとえば、実行環境間でデータでの移動またはコピー）する代わりにわずか１つの調達動作を行うことによって、ネットワークを経由したデータ転送を低減する。つまり、データは、一度調達されるが、処理は、割り当てられた実行環境の様々なインフラストラクチャに広がる。
【００４２】
一実施の形態では、複数の割り当てられた実行環境の間でタスクのサブセットを実行するためのスケジュールを定義してもよい。このように、パイプラインモジュール１０５は、複数の割り当てられた実行環境間でタスクのサブセットをスケジュールに従って実行するように実行パイプライン３３５の実行を制御する。
【００４３】
一実施の形態では、実行パイプライン３３５および／またはその他の実行パイプラインを含む実行パイプラインのセットを通してタスクを並列で実行してもよい。タスクが別のタスクの出力を必要としない場合、タスクを並列で実行することができる。タスクのサブセットが各実行パイプラインに割り当てられる。タスクのサブセットは、タスクの並列実行のために制御される。
【００４４】
一実施の形態では、第１タスクを実行する第１の実行環境と第２タスクを実行する第２の実行環境との間に、双方向パスが確立される。第１タスクの実行と第２タスクの実行とは、実行環境間の双方向パス上でデータをやり取りすることができる。一実施の形態では、双方向パスは、第１の実行環境と第２の実行環境との間のネットワーク上で双方向の通信路を作ることによって確立される。このように、実行環境のうちの１つの実行環境内の計算装置からその他の実行環境内の別の計算装置に、ＩＰ（Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ）通信のデータパケットによってなど、ネットワーク上で情報を送信することができる。
【００４５】
別の実施の形態では、入力値、出力値、および／またはタスク実行の進捗を追跡するためなどの、割り当てられた実行環境によるタスクの実行の実行追跡を実施してもよい。同期または非同期実行追跡を実施してもよい。このように、実行追跡の結果へのアクセスを、計算装置のユーザに同期または非同期で表示するなどして提供してもよい。
【００４６】
図４を参照して、実行パイプラインを制御することに関するシステムフロー４００の一実施の形態を例示する。実行パイプラインは、様々なデータソース４０５からの入力データを利用および処理するタスクを実行してもよい。このように、タスクによってデータ取り込みステップ４１０が実行され、データベースのデータテーブルから入力データが取り込まれたり、ストリームソースから入力データが取り込まれたり、ファイルから入力データが取り込まれたりする。実行パイプラインによって調整される割り当てられた実行環境によって当該タスクが実行されるなどしてタスクによって変換ステップ４１５が実行され、入力データが変換または処理される。一実施の形態では、データテーブルを標準化してもよく、データをインメモリで変換してもよく、複雑な変換を実施してもよく、インデータベース関数を実行してもよい。
【００４７】
実行パイプラインによって調整される割り当てられた実行環境によって当該タスクが実行されるなどしてタスクによって機能ステップ４２０が実行され、機能が実行される。一実施の形態では、タスクは、ルール、計算、およびローカルデバイス上でホストされる内部のローカルサービスなどの機能を実行してもよい。実行パイプラインによって調整される割り当てられた実行環境によって当該タスクが実行されるなどしてタスクによって外部タスクステップ４２５が実行され、外部機能が実行される。一実施の形態では、タスクは、ルール拡張、ＡＰＩ、ＲＥＳＴ呼び出し、外部機能、サービス、および／またはネイティブを実行または起動してもよい。このように、実行パイプラインによって、実行環境を通して様々なタスクを実行してもよい。
【００４８】
図５を参照して、実行パイプラインの制御に関するシステムフロー５００の一実施の形態を例示する。事業資本を算出する資本計算ラン５０５などのランは、実行パイプラインによって実行が調整される様々なタスクを含んでもよい。このようなタスクは、パイプラインモジュールによって、タスクの実行プロパティにベストマッチする実行プロパティを有する選択された実行環境に割り当てられる。実行パイプラインによって、データ取り込みタスク５１０およびデータ取り込み処理タスク５１５など、割り当てられた実行環境内で特定のタスクが同時に実行されてもよい。その他のタスクは、その他のタスクの出力に応じて異なり得る。
【００４９】
パイプラインモジュールは、データ取り込みタスク５１０を、データ取り込みタスク５１０の実行プロパティおよび実行環境の実行プロパティに基づいて、データ取り込みタスク５１０を実行するのに適した特定の実行環境に割り当ててもよい。パイプラインモジュールは、データ取り込み処理タスク５１５を、データ取り込み処理タスク５１５の実行プロパティおよびその実行環境の実行プロパティに基づいて、データ取り込み処理タスク５１５を実行するのに適した特定の実行環境に割り当ててもよい。
【００５０】
パイプラインモジュールは、データ品質チェックタスク５２０を、データ品質チェックタスク５２０の実行プロパティおよびその実行環境の実行プロパティに基づいて、データ品質チェックタスク５２０を実行するのに適した特定の実行環境に割り当ててもよい。パイプラインモジュールは、データ修正タスク５２５を、データ修正タスク５２５の実行プロパティおよびその実行環境の実行プロパティに基づいて、データ修正タスク５２５を実行するのに適した特定の実行環境に割り当ててもよい。
【００５１】
パイプラインモジュールは、リスクウエイト計算処理５３０を、リスクウエイト計算処理５３０の実行プロパティおよびその実行環境の実行プロパティに基づいて、リスクウエイト計算処理５３０を実行するのに適した特定の実行環境に割り当ててもよい。パイプラインモジュールは、再分類ルールタスク５３５を、再分類ルールタスク５３５の実行プロパティおよびその実行環境の実行プロパティに基づいて、再分類ルールタスク５３５を実行するのに適した特定の実行環境に割り当ててもよい。パイプラインモジュールは、計算規則タスク５４０を、計算規則タスク５４０の実行プロパティおよびその実行環境の実行プロパティに基づいて、計算規則タスク５４０を実行するのに適した特定の実行環境に割り当ててもよい。
【００５２】
パイプラインモジュールは、貸し倒れ確率モデルタスク５４５を、貸し倒れ確率モデルタスク５４５の実行プロパティおよびその実行環境の実行プロパティに基づいて、貸し倒れ確率モデルタスク５４５を実行するのに適した特定の実行環境に割り当ててもよい。パイプラインモジュールは、結果エリアへのデータ追加（ｐｏｐｕｌａｔｉｏｎ）タスク５５０を、結果エリアへのデータ追加タスク５５０の実行プロパティおよびその実行環境の実行プロパティに基づいて、結果エリアへのデータ追加タスク５５０を実行するのに適した特定の実行環境に割り当ててもよい。
【００５３】
パイプラインモジュールは、データ取り込みタスク５５５を、データ取り込みタスク５５５の実行プロパティおよびその実行環境の実行プロパティに基づいて、データ取り込みタスク５５５を実行するのに適した特定の実行環境に割り当ててもよい。パイプラインモジュールは、アグリゲート構造ビルドタスク５６０を、アグリゲート構造ビルドタスク５６０の実行プロパティおよびその実行環境の実行プロパティに基づいて、アグリゲート構造ビルドタスク５６０を実行するのに適した特定の実行環境に割り当ててもよい。このように、各タスクを、ネットワーク上でデータを移動することなどで浪費されていた処理リソース、ネットワーク帯域幅を抑えた（たとえば、実行環境間のデータの移動またはコピーが減る）方法で各タスクを効率よく実行できる特定の実行環境に割り当てられてもよい。
【００５４】
図６を参照して、実行パイプラインの制御に関するシステムフロー６００の一実施の形態を例示する。実行パイプライン６０５は、パイプラインモジュールによって、割り当てられた実行環境内でのタスクの実行を調整するように作成される。実行パイプライン６０５は、タスクのデータ変換６１０の実行を調整できる。一実施の形態では、このタスクは、入力データを受け付けると、コマンドを実行することによってデータを変換し、企業買収のパラメータに基づいて企業買収のリスクスコアを算出することなどによって入力データを出力データに変換してもよい。したがって、実行パイプライン６０５は、タスクを、タスクのデータ変換６１０を実行できる実行環境に割り当てる。
【００５５】
実行パイプライン６０５は、タスクの決定論的計算定義６１５の実行を調整できる。一実施の形態では、タスクは、動作状態ごとに次に起こる動作状態が１つしかない決定論的アルゴリズムを実行してもよい。決定論的計算定義６１５は、決定論的アルゴリズムを定義してもよい。したがって、実行パイプライン６０５は、タスクを、タスクの決定論的計算定義６１５を実行できる実行環境に割り当てる。実行パイプライン６０５は、タスクの並列実行などのために、サブパイプライン６２０の実行を同期または非同期で調整できる。一実施の形態では、実行パイプライン６０５は、複数の実行パイプラインをサブパイプライン６２０として作成し、複数のタスクを実行するように制御する。実行パイプライン６０５は、複数のタスクのサブセットを各サブパイプラインに割り当てる。このように、実行パイプライン６０５は、サブパイプライン６２０の実行を制御できる。
【００５６】
実行パイプライン６０５は、企業サービスフック６２５の実行を、サービスにタスクを実行のために接続するように調整できる。一実施の形態では、実行パイプライン６０５は、タスクとリモート計算装置によってホストされるサービスとの間に、サービスがタスクを実行できるように通信路を企業サービスフック６２５として確立する。このように、サービスは、通信路を使用してタスクから入力を取得し、出力をタスクに送り返すことができる。実行パイプライン６０５は、リモート計算装置またはサービスが提供する機能など、外部機能とのタスクの統合６３０の実行を調整できる。一実施の形態では、実行パイプライン６０５は、タスクを実行するために用いられる外部機能をホストしているリモート計算装置との通信路を、ネットワーク上で確立する。このように、リモート計算装置は、通信路を使用してタスクから入力を取得し、出力をタスクに送り返すことができる。
【００５７】
実行パイプライン６０５は、ＲＥＳＴ、ネイティブ、ＡＰＩ、およびＳＯＡＰ（Ｓｉｍｐｌｅ  Ｏｂｊｅｃｔ  Ａｃｃｅｓｓ  Ｐｒｏｔｏｃｏｌ）呼び出し６３５の実行を調整できる。一実施の形態では、実行パイプライン６０５は、タスクを実行するために用いられる機能を実行するためのＡＰＩ呼び出しを行うことができる。実行パイプライン６０５は、タスクのスケジューリングの実行を調整し、様々な実行環境で実行中のタスク間でデータおよびコマンドを伝達するなどのタスク間のインタラクションを容易にする６４０ことができる。一実施の形態では、第１タスクが、第２タスクへの入力として利用されるデータを出力してもよい。したがって、実行パイプライン６０５は、第１タスクが出力データを第２タスクに送信できるよう、第１タスクと第２タスクとの間に通信路を確立させる。
【００５８】
図７を参照して、実行パイプラインの制御に関するシステムフロー７００の一実施の形態を例示する。パイプラインモジュールによって、割り当てられた実行環境内でのタスクの実行を調整するように実行パイプラインが作成される。実行パイプラインは、監査タスクを実行する監査サービス７０５など、内部または外部サービスの実行を調整できる。一実施の形態では、監査サービス７０５は、監査タスクが実行のために割り当てられた実行環境によってホストされる。よって、実行パイプラインは、監査サービス７０５による監査タスクの実行を容易にすることができる。実行パイプラインは、データ統合タスクを提供する、展開されたサービス（たとえば、ＳａａＳ（Ｓｏｆｔｗａｒｅ  Ａｓ  Ａ  Ｓｅｒｖｉｃｅ）または、ラッパーエージェントを用いたネイティブ）などのデータ統合サービス７１０の実行を容易にすることができる。一実施の形態では、データ統合サービス７１０は、データ統合タスクが実行のために割り当てられた実行環境によってホストされる。よって、実行パイプラインは、データ統合サービス７１０によるデータ統合タスクの実行を容易にすることができる。
【００５９】
実行パイプラインは、アプリケーションタスクの実行を提供する、複数のサービスをホストするコンテナなどのアプリサービス７１５の実行を調整できる。一実施の形態では、アプリサービス７１５は、アプリケーションタスクが実行のために割り当てられる実行環境によってホストされる。よって、実行パイプラインは、アプリサービス７１５によるアプリケーションタスクの実行を容易にすることができる。実行パイプラインは、インメモリ、データベースの一部、またはクラスタの一部である、割り当てられたタスクを実行できる実行環境など、プロセスサービス７２０の実行を調整できる。一実施の形態では、タスクの実行定義は、ＲＥＳＴによって、またはローカル通信によってなどでプロセスサービス７２０に反映される実行指示文にフォーマットすることができる。たとえば、タスクの実行定義は、当該タスクを実行する実行環境が理解できるフォーマットにフォーマットされる。したがって、フォーマットされた実行定義は、タスクの実行のために実行環境に送信される。
【００６０】
実行パイプラインは、タスクの実行に用いられる外部サービス、レジストリ、および／またはデータリポジトリ７２５の実行を調整することができる。一実施の形態では、リモート計算装置は、サービス、データリポジトリ、および／またはその他のコンピュータ資源を用いてタスクを実行するために割り当てられたリモート実行環境をホストする。したがって、実行パイプラインは、当該タスクのデータを実行および格納するようにサービスの実行およびデータリポジトリの利用を調整する。実行パイプラインは、ＲＥＳＴインターフェースを利用するイベント駆動型ネットワークアプリフレームワークなど、パイプラインモジュールサービス７３０の実行を調整することができ、これによって、割り当てられた実行環境を通したタスクの実行が容易になる。つまり、タスクを実行するために用いられるデータを対応する割り当てられた実行環境に送信ためにパイプラインモジュールサービス７３０を使用してもよい。
【００６１】
実行パイプラインは、割り当てられた実行環境を通したタスクの実行をスケジュール設定するために用いられるスケジュールサービス７３５の実行を調整することができる。たとえば、特定のタスクは、特定の時刻に実行されるおよび／または特定のタスク実行順序に従って実行されるようにスケジュール設定され得る。実行パイプラインは、機能を調整および制御して、同期タスクおよび非同期タスクの調整を監視７４０できる。実行パイプラインは、非同期タスクのためのコールバック７４５の実行を調整することができる。第１タスクが第２タスクを呼び出して実行し、実行結果をコールバックによって第１タスクに返す。このように、様々な実行環境内のタスクの実行を調整してもよい。
【００６２】
図８は、例示的な非一時的なコンピュータ読み取り可能な媒体８０５を使用するシナリオ８００の説明図である。一実施の形態では、本明細書に記載の構成要素のうちの１つ以上は、パイプラインモジュール１０５など、非一時的なコンピュータ読み取り可能な媒体８０５に格納されたプログラムモジュールとして構成される。プログラムモジュールは、格納されたプロセッサによって実行可能な命令８２０などの命令を有して構成される。当該命令は、プロセッサ８４０など少なくともプロセッサによって実行されると、計算装置に本明細書に記載の対応する機能（複数可）を実行させる。一実施の形態では、非一時的なコンピュータ読み取り可能な媒体８０５に格納されたパイプラインモジュール１０５の機能を、プロセッサによって実行可能な命令８２０としてプロセッサ８４０によって実行し、図２の方法２００の実施の形態８２５を実行してもよい。
【００６３】
非一時的なコンピュータ読み取り可能な媒体８０５は、プロセッサによって実行可能な命令８２０を含む。命令８２０は、プロセッサ８４０によって実行されると、本明細書に提供するもののうち、少なくとも一部を実行させる。非一時的なコンピュータ読み取り可能な媒体８０５は、メモリ半導体（たとえば、ＳＲＡＭ（Ｓｔａｔｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、ＤＲＡＭ（Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、および／またはＳＤＲＡＭ（Ｓｙｎｃｈｒｏｎｏｕｓ  Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）技術を用いた半導体）、ハードディスクドライブのプラッター、フラッシュメモリ装置、または磁気ディスクもしくは光ディスク（ＣＤ（Ｃｏｍｐａｃｔ  Ｄｉｓｋ）、ＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｋ）、またはフロッピー（登録商標）ディスクなど）を含む。例示的な非一時的なコンピュータ読み取り可能な媒体８０５は、装置８３０のリーダー８３５によって読み取られる８１５と（たとえば、ハードディスクドライブの読み取りヘッド、または固体記憶装置上で呼び出される読み出し動作）、プロセッサによって実行可能な命令８２０を表すコンピュータ読み取り可能なデータ８１０を格納する。
【００６４】
いくつかの実施の形態では、プロセッサによって実行可能な命令８２０は、実行されると、たとえば、図２の例示的な方法２００の少なくとも一部などの動作を実行させる。いくつかの実施の形態では、プロセッサによって実行可能な命令８２０は、たとえば、図１の例示的なシステム１００の一部など、システムを実装させるように構成される。
【００６５】
図９は、本明細書に記載の例示的なシステムおよび方法、および／または均等物のうちの１つ以上を用いて構成および／またはプログラムされた例示的な計算装置９００を示す図である。例示的な計算装置９００は、バス９２５によって動作可能に接続されたプロセッサ９２０と、メモリ９３５と、Ｉ／Ｏポート９４５とを備えるコンピュータ９１５であってもよい。一実施の形態では、コンピュータ９１５は、図１および図２に示すシステム１００および／または方法２００を容易にするように構成されたパイプラインモジュール１０５のロジックを含んでもよい。異なる実施の形態では、パイプラインモジュール１０５のロジックは、ハードウェア、命令を格納した非一時的なコンピュータ読み取り可能な媒体９０５、ファームウェア、および／またはそれらの組合せで実現されてもよい。パイプラインモジュール１０５のロジックは、バス９２５に取り付けられたハードウェアコンポーネントとして示されているが、当然のことながら、その他の実施の形態では、パイプラインモジュール１０５のロジックは、メモリ９３５に格納された、またはディスク９５５に格納されたプロセッサ９２０で実現され得る。
【００６６】
一実施の形態では、パイプラインモジュール１０５のロジックまたはコンピュータ９１５は、記載の操作を実行するための手段（たとえば、ストラクチャ：ハードウェア、非一時的なコンピュータ読み取り可能な媒体、ファームウェア）である。いくつかの実施の形態では、計算装置は、クラウドコンピューティングシステムで動作するサーバ、ＳａａＳ（Ｓｏｆｔｗａｒｅ  Ａｓ  Ａ  Ｓｅｒｖｉｃｅ）アーキテクチャで構成されるサーバ、スマートフォン、ラップトップ、タブレットコンピューティングデバイスなどであってもよい。
【００６７】
この手段は、たとえば、割り当て用のルールに基づいたソースの順序付けを実施するようにプログラムされた特定用途向け集積回路（ＡＳＩＣ）として実装されてもよい。また、この手段は、一時的にメモリ９３５に格納されてからプロセッサ９２０によって実行されるデータ９１０としてコンピュータ９１５に提示される、格納された、コンピュータにより実行可能な命令として実装されてもよい。
【００６８】
また、パイプラインモジュール１０５のロジックは、割り当て用のルールに基づいたソースの順序付けを行うための手段（たとえば、ハードウェア、実行可能な命令を格納した非一時的なコンピュータ読み取り可能な媒体９０５、ファームウェア）を提供してもよい。
【００６９】
コンピュータ９１５の例示的な構成を概して説明すると、プロセッサ９２０は、デュアルマイクロプロセッサおよびその他のマルチプロセッサアーキテクチャを含む様々なプロセッサであってもよい。メモリ９３５は、揮発性メモリおよび／または不揮発性メモリを含んでもよい。不揮発性メモリは、たとえば、ＲＯＭ（Ｒｅａｄ−Ｏｎｌｙ  Ｍｅｍｏｒｙ）やＰＲＯＭ（Ｐｒｏｇｒａｍｍａｂｌｅ  Ｒｅａｄ−Ｏｎｌｙ  Ｍｅｍｏｒｙ）などを含んでもよい。揮発性メモリは、たとえば、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、ＳＲＡＭ（Ｓｔａｔｉｃ  Ｒａｎｄｏｍ−Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、ＤＲＡＭ（Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）などを含んでもよい。
【００７０】
ディスク９５５は、たとえば、入出力インターフェース９４０（たとえば、カード、デバイス）および入出力ポート９４５を介してコンピュータ９１５に動作可能に接続されてもよい。ディスク９５５は、たとえば、磁気ディスクドライブ、ソリッドステートディスクドライブ、フロッピー（登録商標）ディスクドライブ、テープドライブ、Ｚｉｐドライブ、フラッシュメモリカード、メモリースティックなどであってもよい。さらに、ディスク９５５は、ＣＤ−ＲＯＭドライブ、ＣＤ−Ｒドライブ、ＣＤ−ＲＷドライブ、ＤＶＤ  ＲＯＭなどであってもよい。メモリ９３５は、たとえば、非一時的なコンピュータ読み取り可能な媒体９０５などの中にあるプロセスおよび／またはデータ９１０を記憶できる。ディスク９５５および／またはメモリ９３５は、コンピュータ９１５のリソースを制御および割り当てするオペレーティングシステムを格納できる。
【００７１】
コンピュータ９１５は、入出力（Ｉ／О）インターフェース９４０およびＩ／Ｏポート９４５を介してＩ／Ｏ装置とやり取りを行ってもよい。Ｉ／Ｏ装置は、たとえば、キーボード、マイクロフォン、ポインティング／選択デバイス、カメラ、ビデオカード、ディスプレイ、ディスク９５５、ネットワーク機器９５０などであってもよい。Ｉ／Ｏポート９４５は、たとえば、シリアルポート、パラレルポート、およびＵＳＢポートを含んでもよい。Ｉ／Ｏコントローラ９３０は、Ｉ／Ｏインターフェース９４０をバス９２５に接続してもよい。
【００７２】
コンピュータ９１５は、ネットワーク環境で動作できるので、Ｉ／Оインターフェース９４０および／またはＩ／Оポート９４５を介してネットワーク機器９５０に接続されてもよい。ネットワーク機器９５０を通して、コンピュータ９１５は、ネットワークとやり取りしてもよい。ネットワークを通して、コンピュータ９１５は、リモートコンピュータに論理的に接続されてもよい（たとえば、コンピュータ９１５は、クライアントが接続され得る分散型計算環境内に存在してもよい）。コンピュータ９１５がやり取りし得るネットワークは、ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、ＷＡＮ（Ｎｅｗ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、およびその他のネットワークを含み得るが、これらに限定されない。
【００７３】
図１０は、本発明の実施の形態が実装され得るシステム１０００を示す図である。企業ネットワーク１００４は、小売店、店主、サービス業者、またはその他の種類の事業など、企業と関連付けられてもよい。代替的に、かつ、統合業務システム（マルチテナントデータ処理プラットフォームなど）をホストするＡＳＰ（Ａｐｐｌｉｃａｔｉｏｎ  Ｓｅｒｖｉｃｅ  Ｐｒｏｖｉｄｅｒ）の利点に従って、企業は、エンドユーザがインターネットブラウザへのアクセスとインターネット接続を有することを条件に、少ない数の専用設備または業務ネットワークを備えるだけでよく、またはそれらを一切備えていなくてもよい。説明を簡潔かつわかりやすくするために、企業ネットワーク１００４は、各々が通常、サービス業者またはその他の従業員など、特定のエンドユーザに専用の複数のパーソナルコンピュータ１００８（しかし、このように専用である必要はない）が、例示的なリモートユーザコンピュータ１０１０と共に接続された現場のローカルエリアネットワーク１００６によって表される。例示的なリモートユーザコンピュータ１０１０は、たとえば、公共Ｗｉ−Ｆｉアクセスポイントを通したインターネットアクセスまたはその他のインターネットアクセス方法を有する旅行中の従業員のラップトップコンピュータ、またはタブレットコンピュータであり得る。コンピュータ１００８および１０１０に関連付けられたエンドユーザ（消費者）は、インターネットが可能なスマートフォンまたはワイヤレスインターネットアクセスまたはその他の同期機能を有するその他の電子機器（ＰＤＡ、タブレット端末、ラップトップコンピュータなど）を所持していてもよい。企業ネットワーク１００４のユーザは、インターネット１０１２、または別の適した通信ネットワークもしくはネットワークの組合せを経由して統合業務システム１００２とインターフェース接続する。
【００７４】
統合業務システム１００２は、専用のサードパーティによってホストされてもよく、図１０に示すように連結された統合業務サーバ１０１４とウェブインターフェースサーバ１０１６とを備えてもよい。当然のことながら、統合業務サーバ１０１４およびウェブインターフェースサーバ１０１６は、図１０では単体のユニットとして表されているが、いずれかまたは両方が、１つ以上の異なるハードウェアシステムおよびコンポーネント上に実装されてもよい。
【００７５】
各々が商売を営んでいる複数のアカウント所有者／テナントの利益のためにシステム１００２がサードパーティによって運営されている典型例では、統合業務サーバ１０１４は、ＥＲＰモジュール１０１８を備え、さらに、ＣＲＭモジュール１０２０を備える。多くの場合、ＥＲＰモジュール１０１８がメソッド、ライブラリ、データベース、サブルーチン、変数などをＣＲＭモジュール１０２０と共有することが望ましく、実際に、ＥＲＰモジュール１０１８をＣＲＭモジュール１０２０と絡み合わせて統合業務データ処理プラットフォーム（シングルテナントであってもよいが、通常、マルチテナントである）としてもよい。
【００７６】
ＥＲＰモジュール１０１８は、財務会計モジュール、オーダー処理モジュール、時間課金モジュール、在庫管理／配分モジュール、従業員管理／給与モジュール、カレンダー／コラボレーションモジュール、レポート／セキュリティモジュール、およびその他のＥＲＰ関連モジュールを含むが、これらに限定されない。ＣＲＭモジュール１０２０は、セールスフォースオートメーション（ＳＦＡ：Ｓａｌｅｓ  Ｆｏｒｃｅ  Ａｕｔｏｍａｔｉｏｎ）モジュール、マーケティングオートメーションモジュール、連絡先リストモジュール（図示せず）、コールセンターサポートモジュール、ウェブベースのカスタマーサポートモジュール、レポート／セキュリティモジュール、およびその他のＣＲＭ関連モジュールを含むが、これらに限定されない。統合業務サーバ１０１４（または、マルチテナントデータ処理プラットフォーム）は、さらに、ウェブストア／ｅＣｏｍｍｅｒｃｅモジュール１０２２、パートナー／ベンダー管理モジュール１０２４、および統合レポートモジュール１０３０を含むその他の業務機能を提供する。また、ＳＣＭ（Ｓｕｐｐｌｙ  Ｃｈａｉｎ  Ｍａｎａｇｅｍｅｎｔ）モジュール１０２６およびＰＬＭ（Ｐｒｏｄｕｃｔ  Ｌｉｆｅｃｙｃｌｅ  Ｍａｎａｇｅｍｅｎｔ）モジュール１０２８が提供されてもよい。ウェブインターフェースサーバ１０１６は、統合業務サーバ１０１４とインターフェース接続するように構成およびなされて、１つ以上のウェブベースのユーザインターフェースを企業ネットワーク１００４のエンドユーザに提供する。
【００７７】
図１０に示す統合業務システムは、少なくとも１つだがおそらく複数の「サーバ」から構成される分散コンピューティングシステム上でホストされてもよい。サーバは、たとえば、インターネットなどのパブリックネットワークまたはプライベートな「イントラネット」ネットワークを介してこのサーバとデータ通信を行うその他のコンピュータのユーザのニーズに応えるための１つ以上のソフトウェアアプリケーションまたはサービスのためのデータストレージおよび実行環境を提供するための専用の物理コンピュータである。サーバおよびサーバが提供するサービスを「ホスト」およびリモートコンピュータと称する場合があり、リモートコンピュータ上で動作している、供給中のソフトウェアアプリケーションを「クライアント」と称する場合がある。サーバが提供するコンピューティングサービス（複数可）によっては、データベースサーバ、データストレージサーバ、ファイルサーバ、メールサーバ、プリントサーバ、ウェブサーバなどと称され得る。ほとんどの場合、ウェブサーバは、インターネットを介してウェブサーバにアクセスするクライアントウェブブラウザに、通常、ウェブサイトをホスティングすることによってコンテンツを配信させてくれるソフトウェアと、ハードウェアとの組合せである。
【００７８】
図１１は、本発明の実施の形態が実装され得る例示的な動作環境１１００の要素または構成要素を例示する図である。図に示したように、様々な計算装置を内蔵するおよび／またはそれらに内蔵された様々なクライアント１１０２は、１つ以上のネットワーク１１１４を通して分散コンピューティングサービス／プラットフォーム１１０８と通信してもよい。たとえば、クライアントは、計算装置のうちの１つ以上によって少なくとも一部が実装されたクライアントアプリケーション（たとえば、ソフトウェア）を内蔵してもよく、および／またはそれに内蔵されてもよい。適した計算装置として、パーソナルコンピュータ、サーバコンピュータ１１０４、デスクトップコンピュータ１１０６、ラップトップコンピュータ１１０７、ノートブックコンピュータ、タブレットコンピュータもしくはＰＤＡ（Ｐｅｒｓｏｎａｌ  Ｄｉｇｉｔａｌ  Ａｓｓｉｓｔａｎｔ）１１１０、スマートフォン１１１２、携帯電話、および、１つ以上の電子プロセッサ、マイクロプロセッサ、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）、またはコントローラなど、１つ以上の計算装置コンポーネントを内蔵した家庭用電子機器などが挙げられる。適したネットワーク１１１４として、有線および／またはワイヤレス通信技術を利用したネットワーク、および任意の適切なネットワーキングプロトコルおよび／または通信プロトコル（たとえば、インターネット）に従って動作するネットワークなどが挙げられる。カスタマーサポートサービスの配信を伴うユースケースでは、記載の計算装置は、カスタマーサポート配信処理のエンドポイント、すなわち、消費者のデバイスを表す。
【００７９】
分散コンピューティングサービス／プラットフォーム（マルチテナント業務データ処理プラットフォームとも称する場合がある）１１０８は、ユーザインターフェース層（ｔｉｅｒ）１１１６、アプリケーションサーバ層１１２０、およびデータストレージ層１１２４を含む複数の処理層を含んでもよい。ユーザインターフェース層１１１６は、グラフィカルユーザインターフェースおよび／またはウェブベースのインターフェースを含む複数のユーザインターフェース１１１８を保持してもよい。ユーザインターフェースは、（図において、「サービスＵＩ」と示される）サービスのユーザまたは「テナント」のためのアプリケーションおよびデータへのアクセスを提供するためのサービス用デフォルトユーザインターフェース、およびユーザ固有の要件に従って特化／カスタマイズされた１つ以上のユーザインターフェース（たとえば、図において「テナントＡ  ＵＩ」、…、「テナントＺ  ＵＩ」によって表され、１つ以上のＡＰＩを介してアクセスされ得る）を含んでもよい。デフォルトユーザインターフェースは、データにアクセスすること、特定のデータ処理動作を実行させることなど、サービスプラットフォームによって提供される機能および能力へのテナントの関与をテナントが管理することを可能にするコンポーネントを含んでもよい。図に示す各処理層は、コンピュータおよび／または、コンピュータサーバおよびプロセッサを含むコンピュータコンポーネントのセットを有して実装されてもよく、ソフトウェアアプリケーションまたは命令セットの実行によって決定される様々な関数、メソッド、処理、または動作を行ってもよい。データストレージ層１１２４は、１つ以上のデータストアを含んでもよく、データストアとして、サービスデータストア１１２５と、１つ以上のテナントデータストア１１２６とを含んでもよい。
【００８０】
各テナントデータストア１１２６は、これらに限定されないが、ＥＲＰ、ＣＲＭ、ｅＣｏｍｍｅｒｃｅ、人材管理、給与などを含む、テナント固有の豊富な業務サービスまたは機能の提供の一部として用いられるテナント固有のデータを含んでもよい。データストアは、ＳＱＬ（Ｓｔｒｕｃｔｕｒｅｄ  Ｑｕｅｒｙ  Ｌａｎｇｕａｇｅ）ベースのＲＤＢＭＳ（Ｒｅｌａｔｉｏｎａｌ  Ｄａｔａｂａｓｅ  Ｍａｎａｇｅｍｅｎｔ  Ｓｙｓｔｅｍｓ）を含む、任意の適切なデータストレージ技術を有して実装されてもよい。
【００８１】
本発明の一実施の形態によると、ビジネス関連アプリケーション、データストレージ、および機能のセットを複数のテナントに提供するために、分散コンピューティングサービス／プラットフォーム１１０８は、マルチテナントであってもよく、サービスプラットフォーム１１０８は、エンティティによって操作されてもよい。これらのアプリケーションおよび機能は、会社がその運営の様々な態様を管理するために用いるアプリケーションおよび機能を含んでもよい。たとえば、アプリケーションおよび機能は、業務情報システムへのウェブベースのアクセスを提供することを含んでもよく、ブラウザおよびインターネットまたはイントラネット接続を有するユーザが特定の種類の業務情報を閲覧、入力、処理、または変更できるようになる。
【００８２】
上述したように、このような業務情報システムは、業務工程を合理化し、かつ業務全体のレベルで効率性を向上させる目的で、複数のこれまで別々であった業務計算システムの能力を共通システムに統合するＥＲＰ（Ｅｎｔｅｒｐｒｉｓｅ  Ｒｅｓｏｕｒｃｅ  Ｐｌａｎｎｉｎｇ）システムを含んでもよい。一例として、ＥＲＰシステムのモジュールの能力は、会計、オーダー処理、時間課金、在庫管理、小売ＰＯＳ（Ｐｏｉｎｔ  Ｏｆ  Ｓａｌｅ）システム、ｅＣｏｍｍｅｒｃｅ、ＰＩＭ（Ｐｒｏｄｕｃｔ  Ｉｎｆｏｒｍａｔｉｏｎ  Ｍａｎａｇｅｍｅｎｔ）、需要／ＭＲＰ（Ｍａｔｅｒｉａｌ  Ｒｅｑｕｉｒｅｍｅｎｔｓ  Ｐｌａｎｎｉｎｇ）、仕入れ、ＣＭＳ（Ｃｏｎｔｅｎｔ  Ｍａｎａｇｅｍｅｎｔ  Ｓｙｓｔｅｍ）、ＰＳＡ（Ｐｒｏｆｅｓｓｉｏｎａｌ  Ｓｅｒｖｉｃｅｓ  Ａｕｔｏｍａｔｉｏｎ）、従業員管理／給与、人材管理、および従業員カレンダー／コラボレーション、ならびにこれらの機能に関係するレポート能力および分析能力を含んでもよい（これらを含む必要はなく、これらのみに限定もされない）。このような機能または業務アプリケーションは、通常、プラットフォームのアプリケーションサーバ層１１２０の一部である１つ以上のサーバ１１２２上で保持および実行されるソフトウェアコード／命令の１つ以上のモジュールによって実装される。
【００８３】
統合データ処理／サービスプラットフォームの一部として提供され得る別の業務情報システムは、統合ＣＲＭ（Ｃｕｓｔｏｍｅｒ  Ｒｅｌａｔｉｏｎｓｈｉｐ  Ｍａｎａｇｅｍｅｎｔ）システムである。統合ＣＲＭは、顧客をより理解することを支援し、既存の顧客に向けたサービスを向上させ、かつ、収益の見込める新規顧客の獲得を支援するように設計されている。一例として、ＣＲＭシステムの能力またはモジュールは、ＳＦＡ（Ｓａｌｅｓ  Ｆｏｒｃｅ  Ａｕｔｏｍａｔｉｏｎ）、マーケティング自動化、連絡先リスト、コールセンターサポート、ＲＭＡ（Ｒｅｔｕｒｎｓ  Ｍａｎａｇｅｍｅｎｔ  Ａｕｔｈｏｒｉｚａｔｉｏｎ）、ポイントプログラムサポート、およびウェブベースのカスタマーサポート、ならびにこれらの機能に関係するレポート能力および分析能力を含み得る（これらを含む必要はなく、これらのみに限定もされない）。ＥＲＰ機能およびＣＲＭ機能に加えて、業務情報システム／プラットフォームは、統合パートナー／ベンダー管理システム、ｅＣｏｍｍｅｒｃｅシステム（たとえば、仮想店頭アプリケーションまたはプラットフォーム）、ＰＬＭ（Ｐｒｏｄｕｃｔ  Ｌｉｆｅｃｙｃｌｅ  Ｍａｎａｇｅｍｅｎｔ）システム、人材管理システム（医療保険／歯科保険事務、給与などを含んでもよい）、またはＳＣＭ（Ｓｕｐｐｌｙ  Ｃｈａｉｎ  Ｍａｎａｇｅｍｅｎｔ）システムのうちの１つ以上を含んでもよい。このような機能または業務アプリケーションは、通常、プラットフォームのアプリケーションサーバ層１１２０の一部である１つ以上のサーバ１１２２上で保持され、当該１つ以上のサーバ１１２２によって実行されるソフトウェアコード／命令の１つ以上のモジュールによって実装される。
【００８４】
なお、たとえば統合業務システムが小売商のｅＣｏｍｍｅｒｃｅプラットフォームおよび／または「ウェブストア」と一体化された、ＥＲＰ、ＣＲＭ、およびその他の業務能力を備える統合業務システムを用いることによって、機能面での利点および戦略面での利点の両方を得ることができるであろう。たとえば、特定の商品を探している顧客は、自身の家庭用コンピュータから、さらには、自身の携帯電話から小売商のウェブサイトに導かれ、幅広い商品および／またはサービスを提示され得る。ブラウザベースのインターフェースを介して顧客がオンライン販売取引を開始すると、統合業務システムは、オーダーを処理し、受付可能なアカウントをアップデートし、在庫管理データベースおよびその他のＥＲＰベースのシステムをアップデートすることができ、また、戦略的顧客情報データベースおよびその他のＣＲＭベースのシステムを自動的にアップデートすることができる。これらのモジュールならびにその他のアプリケーションおよび機能は、必要に応じて１つ以上の統合データベースにアクセスする１つのコードベースによって有利に統合および実行されてもよく、統合業務管理システムまたはプラットフォームが形成される。
【００８５】
図１０で説明したように、図１１に示す統合業務システムは、少なくとも１つ、通常、複数の「サーバ」から構成される分散コンピューティングシステム上でホストされてもよい。サーバは、たとえば、インターネットなどのパブリックネットワークまたはプライベートな「イントラネット」ネットワークを介してこのサーバとデータ通信を行うその他のコンピュータのユーザのニーズに応えるための１つ以上のソフトウェアアプリケーションまたはサービスのためのデータストレージおよび実行環境を提供するための専用の物理コンピュータである。
【００８６】
会社は、このような統合業務システムを自身で構築して保守するのではなく、サードパーティによって提供されるシステムを利用すればよい。このようなサードパーティは、上述した統合業務システム／プラットフォームを、１つの包括的統合業務システムの個々のインスタンス化が様々なテナントに提供されるマルチテナントプラットフォームを背景に実装してもよい。このようなマルチテナントプラットフォームの１つの利点は、各テナントが、その統合業務システムのインスタンス化を、そのテナントの特定のビジネスニーズまたは運営方法に合わせてカスタマイズできることである。各テナントは、業務データおよび機能を複数のユーザに提供するためにマルチテナントプラットフォームを使用する会社またはエンティティであってもよい。これら複数のユーザのうちの何人かは、当該会社またはエンティティ内で明確な役割または責任があってもよい。
【００８７】
場合によっては、テナントは、既存のプラットフォームアプリケーションの機能を、テナントの従業員および／または顧客が利用可能になる拡張をそのアプリケーションに導入することによって変更したり補ったりしたいであろう。場合によっては、プラットフォーム上に存在するデータに関係するテナントの業務の処理にこのような拡張を適用してもよい。この拡張は、テナントによって、またはサードパーティの開発者によって開発され、その後、インストールのためにテナントが利用できるようにしてもよい。プラットフォームは、利用可能な拡張の「ライブラリ」またはカタログを含んでもよい。当該「ライブラリ」またはカタログには、興味のある拡張を見つけるためにテナントがアクセスして検索することができる。ソフトウェア開発者には、提案された拡張が適切に検証された後、拡張をライブラリまたはカタログに「掲載する」許可が与えられてもよい。
【００８８】
よって、テナントが所望のサービスおよび機能を取得できるようにするために（ｅＣｏｍｍｅｒｃｅプラットフォームに関係する機能など、特定のサービスをエンドカスタマーに提供することを含み得る）、マルチテナントサービスプラットフォームは、テナントに、テナントのビジネスニーズにより適合するように、利用可能なサービス（複数可）の特定の態様を設定する許可を与えてもよい。このように、サービスプラットフォームの態様はカスタマイズ可能であってもよく、これによって、テナントは、それぞれのユーザまたはこれらユーザのグループに独自のサービスを提供するようプラットフォームの態様を設定できるようになる。たとえば、サービスプラットフォームを利用する企業は、従業員および／または顧客に追加機能または能力を提供したい、または、企業のビジネスニーズなどに合わせて調整された規定のワークフローに従った特有の方法で業務データを処理したいであろう。
【００８９】
テナントによるプラットフォームのカスタマイズは、下位のオペレーティングシステム機能の上に構築されるカスタム機能（テナントまたはユーザ特有の機能、データ処理、または動作を行う能力など）を含んでもよい。いくつかのマルチテナントサービスプラットフォームは、グラフィカルユーザインターフェースの見た目を美しくする変更から互いに無関係のサードパーティベンダーによって開発されたコンポーネントおよび／またはアプリケーション全体の統合を提供することまで、複数の異なるレベルでサービスプラットフォームの機能または動作をカスタマイズする能力を提供してもよい。これは、非常に有益であり得る。理由は、サードパーティベンダーによって開発されたコンポーネントおよび／またはアプリケーションの使用を許可することによって、マルチテナントサービスは、テナントが利用できる機能を大幅に向上させ、プラットフォームに対するテナント満足を上げることができるからである。
【００９０】
上述したように、ユーザカスタマイゼーションに加えて、単独のソフトウェア開発者が、マルチテナントデータ処理プラットフォームを通してユーザが利用可能になる特定のアプリケーションの拡張を作成してもよい。この拡張は、基盤となるアプリケーションに新しい機能または能力を加えるものであってもよい。プラットフォームの１つ以上のテナント／ユーザは、拡張によって利用可能になるアプリケーションの拡張機能を利用できようにするために、基盤となるアプリケーションに拡張を加えたいであろう。さらには、開発者は、拡張をアップグレードしたり、修正の必要があると認識した場合、パッチを提供したり、拡張に組み込むと便利な追加機能を提供したいであろう。場合によっては、開発者は、より新しいバージョンの拡張を改善するためのフィードバックを得るために、拡張の安定性をテストするために、または、拡張（複数可）ごとに市場をセグメント化するのを支援するために、選ばれた一組のユーザ（少なくとも初回は）のみがアップグレードできるようにすることを好むであろう。
【００９１】
別の実施の形態において、記載の方法および／またはそれらの均等物は、コンピュータにより実行可能な命令を有して実装される。したがって、一実施の形態では、非一時的なコンピュータ読み取り可能な／記憶媒体は、アルゴリズム／実行可能なアプリケーションのコンピュータにより実行可能な格納された命令を有して構成され、命令は、機械（複数の機械）によって実行されると、機械（複数の機械）（および／または関連するコンポーネント）に方法を実行させる。機械としては、プロセッサ、コンピュータ、クラウドコンピューティングシステムにおいて動作するサーバ、ＳａａＳ（Ｓｏｆｔｗａｒｅ  ａｓ  ａ  Ｓｅｒｖｉｃｅ）アーキテクチャにおいて構成されるサーバ、スマートフォンなどがあるが、これらに限定されない。一実施の形態では、計算装置は、開示の方法を実行するように構成された１つ以上の実行可能なアルゴリズムを有して実装される。
【００９２】
１つ以上の実施の形態において、開示の方法またはそれらの均等物は、当該方法を実行するように構成されたコンピュータハードウェア、または非一時的なコンピュータ読み取り可能な媒体に格納されたモジュールに含まれたコンピュータ命令のいずれかによって実行される。ここで、命令は、少なくとも計算装置のプロセッサによって実行されると当該方法を実行するように構成される実行可能なアルゴリズムとして構成される。
【００９３】
説明をわかり易くする目的のため、図示した技法をアルゴリズムの一連のブロックとして図示および説明したが、技法は、ブロックの順序に限定されないことがわかる。いくつかのブロックは、図示および説明された順序とは異なる順序起こり得、および／またはその他のブロックと同時に起こり得る。また、例示的な技法を実装するために、図示された全ブロックよりも少ない数のブロックを使用してもよい。ブロックは、複数のアクション／コンポーネントに組み合わされるまたは分けられてもよい。さらに、追加および／または代替的な技法は、ブロックに示されていない追加アクションを使用できる。本明細書に記載の方法は、法定の主題に限定される。
【００９４】
以下は、本明細書において使用される選定された用語の定義を含む。定義は、用語の範囲に含まれ、且つ、実装のために使用され得る様々な例および／または形態のコンポーネントを含む。例は、限定するものではない。単数形および複数形の用語も定義の範囲に含まれる。
【００９５】
「一実施の形態」、「実施の形態」、「一例」、「例」などは、そのようにして説明される実施の形態（複数の実施の形態）または例（複数の例）が特定の特徴、構成、特性、性質、構成要素、または限定を含み得ることを示し、実施の形態または例のすべてがその特定の特徴、構成、特性、性質、構成要素、または限定を必ずしも含むわけではないことを示す。さらに、表現「一実施の形態において」を繰り返し使用することは、同じ実施の形態を指し得るが、必ずしもそうではない。
【００９６】
「データ構造」は、本明細書で使用するとき、メモリに格納された計算システム、記憶装置、またはその他のコンピュータ化されたシステムにおけるデータの構成である。データ構造は、たとえば、データフィールド、データファイル、データ配列、データレコード、データベース、データテーブル、グラフ、ツリー、連結リストなどのうちの任意の１つであり得る。データ構造は、多くの他のデータ構造から形成されてもよく、それらを含んでもよい（たとえば、データベースは、多くのデータレコードを含む）。その他の実施の形態によると、データ構造のその他の例も可能である。
【００９７】
「コンピュータ読み取り可能な媒体」または「コンピュータ記憶媒体」は、本明細書で使用するとき、実行されると開示の機能のうちの１つ以上を実行するように構成された命令および／またはデータを格納する非一時的な媒体を指す。いくつかの実施の形態においてデータが命令として機能してもよい。コンピュータ読み取り可能な媒体は、不揮発性媒体、および揮発性媒体などの形式を取り得るが、これらに限定されない。不揮発性媒体は、たとえば、光ディスク、磁気ディスクなどを含み得る。揮発性媒体は、たとえば、半導体メモリ、ダイナミックメモリなどを含み得る。コンピュータ読み取り可能な媒体の一般的な形式は、フロッピー（登録商標）ディスク、フレキシブルディスク、ハードディスク、磁気テープ、その他の磁気媒体、特定用途向け集積回路（ＡＳＩＣ）、プログラマブル・ロジック・デバイス、ＣＤ（Ｃｏｍｐａｃｔ  Ｄｉｓｋ）、その他の光学媒体、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、メモリチップもしくはカード、メモリースティック、ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｓｔｏｒａｇｅ  Ｄｅｖｉｃｅ）、フラッシュドライブ、およびコンピュータ、プロセッサ、またはその他の電子デバイスがともに機能できるその他の媒体を含み得るが、これらに限定されない。各種の媒体は、一実施の形態において実装用に選択された場合、開示および／または請求項に記載の機能のうちの１つ以上を実行するように構成されたアルゴリズムの格納された命令を含み得る。
【００９８】
「ロジック」は、本明細書で使用するとき、本明細書に開示の機能もしくはアクションを実行するための、ならびに／または別のロジック、方法、および／もしくはシステムからの機能もしくはアクションを本明細書に開示の通りに実行させるための、コンピュータもしくは電気ハードウェア、実行可能なアプリケーションもしくはプログラムモジュールの格納された命令を有する非一時的な媒体、および／またはこれらの組み合わせを有して実現される部品を表す。同等のロジックが、ファームウェア、アルゴリズムがプログラムされたマイクロプロセッサ、離散ロジック（たとえば、ＡＳＩＣ）、少なくとも１つの回路、アナログ回路、デジタル回路、プログラムされた論理回路、アルゴリズムの命令を含むメモリ素子などを含んでもよく、これらは、いずれも、開示の機能のうちの１つ以上を実行するように構成され得る。一実施の形態では、ロジックは、１つ以上のゲート、ゲートの組み合わせ、または開示の機能のうちの１つ以上を実行するように構成されたその他の回路部品を含み得る。複数のロジックが説明されている箇所は、複数のロジックを１つのロジックに組み込むことが可能である。同様に、１つのロジックが説明されている箇所は、当該１つのロジックを複数のロジックに分散することが可能である。一実施の形態では、これらのロジックのうちの１つ以上は、開示および／または請求項に記載の機能を実行することに関連付けられた対応する構造である。実装するロジックの選択は、所望のシステム条件または仕様に基づいてよい。たとえば、より速い速度を求める場合、機能を実装するために、ハードウェアが選ばれる。低コストを求める場合、機能を実装するために、格納された命令／実行可能なアプリケーションが選ばれる。
【００９９】
「動作可能な接続」、またはエンティティが「動作可能に接続される」接続は、信号、物理的通信、および／または論理的通信が送信および／または受信され得る接続である。動作可能な接続は、物理インターフェース、電気インターフェース、および／またはデータインターフェースを含み得る。動作可能な接続は、操作可能な制御を可能にするのに十分なインターフェースおよび／または接続の異なる組み合わせを含み得る。たとえば、２つのエンティティを、直接または１つ以上の中間エンティティ（たとえば、プロセッサ、オペレーティングシステム、ロジック、非一時的なコンピュータ読み取り可能な媒体）を介して互いに信号を通信するように動作可能に接続できる。動作可能な接続を作るために、論理的および／または物理的通信チャネルを使用できる。
【０１００】
「ユーザ」は、本明細書において使用するとき、１人以上の人、コンピュータまたはその他のデバイス、またはこれらの組合せを含むが、これらに限定されない。
【０１０１】
開示の実施の形態をかなり詳しく図示および説明したが、添付の請求の範囲をこのような詳細に制限または限定する意図はまったくない。主題の様々な態様を説明する目的のために構成要素または技法の考えられるすべての組み合わせを説明することは、当然、不可能である。そのため、本開示は、図示および説明した詳細または例示的な実施例に限定されない。多くの変更および変形が当業者に明らかになるであろう。当該変更および変形は、開示の特徴の任意の関連性のある組合せを含む。
【０１０２】
用語「含む（ｉｎｃｌｕｄｅｓ）」または「含む（ｉｎｃｌｕｄｉｎｇ）」が詳細な説明または請求の範囲において使用される範囲において、当該用語は、用語「備える（ｃｏｍｐｒｉｓｉｎｇ）」が請求の範囲において移行句として使用されたときに解釈されるのと同様に、他を包含する意図がある。
【０１０３】
用語「または（ｏｒ）」が詳細な説明または請求の範囲において使用される範囲において（たとえば、ＡまたはＢ）、当該用語は、「ＡまたはＢまたはその両方」を意味する意図がある。出願人が、「ＡまたはＢのどちらかのみであって両方ではない」ことを示す意図がある場合、表現「ＡまたはＢのどちらかのみであって両方ではない」が使用される。したがって、本明細書における用語「または」の使用は、包含的であって限定的ではない使用である。
【図１】
2021517288.tif 000003
【図２】
2021517288.tif 000004
【図３】
2021517288.tif 000005
【図４】
2021517288.tif 000006
【図５】
2021517288.tif 000007
【図６】
2021517288.tif 000008
【図７】
2021517288.tif 000009
【図８】
2021517288.tif 000010
【図９】
2021517288.tif 000011
【図１０】
2021517288.tif 000012
【図１１】
2021517288.tif 000013
【国際調査報告】
2021517288.tif 000014
2021517288.tif 000015
2021517288.tif 000016