(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-03-27
(45)【発行日】2024-04-04
(54)【発明の名称】実行パイプラインのコンピュータ化された制御
(51)【国際特許分類】
G06F 9/50 20060101AFI20240328BHJP
【FI】
G06F9/50 150C
G06F9/50 150A
(21)【出願番号】P 2020538660
(86)(22)【出願日】2019-03-27
(86)【国際出願番号】 IN2019050247
(87)【国際公開番号】W WO2019186585
(87)【国際公開日】2019-10-03
【審査請求日】2022-02-24
(32)【優先日】2018-03-27
(33)【優先権主張国・地域又は機関】US
【前置審査】
(73)【特許権者】
【識別番号】517082065
【氏名又は名称】オラクル・フィナンシャル・サービシーズ・ソフトウェア・リミテッド
【氏名又は名称原語表記】ORACLE FINANCIAL SERVICES SOFTWARE LIMITED
(74)【代理人】
【識別番号】110001195
【氏名又は名称】弁理士法人深見特許事務所
(72)【発明者】
【氏名】バダパンデシワラ,ラジャラム・エヌ
(72)【発明者】
【氏名】ラージクマール,チャールズ
【審査官】三坂 敏夫
(56)【参考文献】
【文献】特開2002-335244(JP,A)
【文献】特開2018-041416(JP,A)
【文献】米国特許出願公開第2015/0163179(US,A1)
【文献】特表2010-539600(JP,A)
【文献】米国特許出願公開第2017/0115964(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 9/455-9/54
(57)【特許請求の範囲】
【請求項1】
コンピュータによって実行可能な命令を格納したコンピュータ読み取り可能なプログラムであって、前記命令は、コンピュータのプロセッサによって実行されると、前記プロセッサに、
ラン定義から導出される複数のタスクを実行するための実行パイプラインを生成させ、前記ラン定義は、前記複数のタスクの各タスクの実行定義を含み、前記命令は、さらに、前記プロセッサに、
前記実行定義を評価して前記複数のタスクの実行プロパティを識別させ、
前記タスクの実行プロパティが実行環境の実行プロパティに適合することに基づいて、前記実行環境のセットから選択される実行環境に前記複数のタスクの各タスクを割り当てさせ、各実行環境は、異なるリソースおよび機能を用いてタスクを実行し、
前記各タスクを割り当てることは、
第1タスクの第1の実行定義を評価して、実行する関数および前記第1タスクのリソース要件を指定する第1の実行プロパティを識別することと、
前記第1の実行プロパティが指定する前記リソース要件および関数を各実行環境が提供する利用可能なリソースおよび関数の実行プロパティと比較して、前記第1の実行プロパティが指定する前記リソース要件および関数に、利用可能なリソースおよび関数が適合する程度または上回る程度に基づいて、各実行環境にランクを割り当てることと、
最高ランクまたは閾値を超えるランクを有する実行環境に前記第1タスクを割り当てることとを含み、前記命令は、さらに、前記プロセッサに、
前記割り当てられた実行環境で各タスクを実行するように前記実行パイプラインを制御させ、各タスクの前記実行定義は、前記割り当てられた実行環境による実行に対応するフォーマットに変換され、
前記各タスクを割り当てることは、
第2タスクの第2の実行定義を評価して、実行する関数および前記第2タスクのリソース要件を指定する第2の実行プロパティを識別することと、
前記第1の実行プロパティが指定する前記リソース要件および関数が、前記実行環境のセットから選択される第1の実行環境が提供する利用可能なリソースおよび関数の実行プロパティに適合することに基づいて、前記第1の実行環境に前記第1タスクを割り当てることと、
前記第2の実行プロパティが指定する前記リソース要件および関数が、前記実行環境のセットから選択される第2の実行環境が提供する利用可能なリソースおよび関数の実行プロパティに適合することに基づいて、前記第2の実行環境に前記第2タスクを割り当てることとを含む
、コンピュータ読み取り可能なプログラム。
【請求項2】
前記命令は、前記プロセッサに、
前記割り当てられた実行環境によるタスク実行の非同期実行追跡を実施させ、
前記非同期実行追跡の結果へのアクセスを提供させる、請求項
1に記載のコンピュータ読み取り可能なプログラム。
【請求項3】
前記命令は、前記プロセッサに、
複数の割り当てられた実行環境間で前記タスクのサブセットを実行するためのスケジュールを設定させ、
前記スケジュールに従って前記複数の割り当てられた実行環境間で前記タスクのサブセットを実行するように前記実行パイプラインを制御させる、請求項1
または2に記載のコンピュータ読み取り可能なプログラム。
【請求項4】
前記各タスクを割り当てることは、
変換タスクの実行プロパティに基づいて、前記変換タスクをアトミック操作としてインメモリ実行環境内で実行し、かつ、前記変換タスクの結果はデータベースに永続させると決定することと、
前記インメモリ実行環境に前記変換タスクを割り当てることとを含む、請求項1~
3のいずれか1項に記載のコンピュータ読み取り可能なプログラム。
【請求項5】
前記命令は、前記プロセッサに、
少なくとも前記実行パイプラインを含む実行パイプラインのセットを作成させ、
前記実行パイプラインのセットに含まれる前記実行パイプラインの各々に前記複数のタスクのサブセットを割り当てさせ、
前記複数のタスクに含まれるタスクの並列実行のために前記実行パイプラインのセットを制御させる、請求項1~
4のいずれか1項に記載のコンピュータ読み取り可能なプログラム。
【請求項6】
コンピュータによって実行可能な命令を格納したコンピュータ読み取り可能なプログラムであって、前記命令は、コンピュータのプロセッサによって実行されると、前記プロセッサに、
ラン定義から導出される複数のタスクを実行するための実行パイプラインを生成させ、前記ラン定義は、前記複数のタスクの各タスクの実行定義を含み、前記命令は、さらに、前記プロセッサに、
前記実行定義を評価して前記複数のタスクの実行プロパティを識別させ、
前記タスクの実行プロパティが実行環境の実行プロパティに適合することに基づいて、前記実行環境のセットから選択される実行環境に前記複数のタスクの各タスクを割り当てさせ、各実行環境は、異なるリソースおよび機能を用いてタスクを実行し、
前記各タスクを割り当てることは、
第1タスクの第1の実行定義を評価して、実行する関数および前記第1タスクのリソース要件を指定する第1の実行プロパティを識別することと、
前記第1の実行プロパティが指定する前記リソース要件および関数を各実行環境が提供する利用可能なリソースおよび関数の実行プロパティと比較して、前記第1の実行プロパティが指定する前記リソース要件および関数に、利用可能なリソースおよび関数が適合する程度または上回る程度に基づいて、各実行環境にランクを割り当てることと、
最高ランクまたは閾値を超えるランクを有する実行環境に前記第1タスクを割り当てることとを含み、前記命令は、さらに、前記プロセッサに、
前記割り当てられた実行環境で各タスクを実行するように前記実行パイプラインを制御させ、各タスクの前記実行定義は、前記割り当てられた実行環境による実行に対応するフォーマットに変換され、
前記命令は、前記プロセッサに、
前記割り当てられた実行環境が理解できるコマンドを前記実行定義内の宣言ステートメントから作成することによって、タスクの実行定義を宣言ステートメントフォーマットから前記割り当てられた実行環境によって用いられるフォーマットに変換させる
、コンピュータ読み取り可能なプログラム。
【請求項7】
計算システムであって、
メモリに接続されたプロセッサと、
非一時的なコンピュータ読み取り可能な媒体に格納された、命令を有して構成されたパイプラインモジュールとを備え、前記命令は、前記プロセッサによって実行されると、前記プロセッサに、
ラン定義から導出される複数のタスクを実行するための実行パイプラインを生成させ、前記ラン定義は、前記複数のタスクの各タスクの実行定義を含み、前記命令は、さらに、前記プロセッサに、
前記実行定義を評価して前記複数のタスクの実行プロパティを識別させ、
前記タスクの実行プロパティが実行環境の実行プロパティに適合することに基づいて、
前記実行環境のセットから選択される実行環境に前記複数のタスクの各タスクを割り当てさせ、各実行環境は、異なるリソースおよび機能を用いてタスクを実行し、
前記各タスクを割り当てることは、
第1タスクの第1の実行定義を評価して、実行する関数および前記第1タスクのリソース要件を指定する第1の実行プロパティを識別することと、
前記第1の実行プロパティが指定する前記リソース要件および関数を各実行環境が提供する利用可能なリソースおよび関数の実行プロパティと比較して、前記第1の実行プロパティが指定する前記リソース要件および関数に、利用可能なリソースおよび関数が適合する程度または上回る程度に基づいて、各実行環境にランクを割り当てることと、
最高ランクまたは閾値を超えるランクを有する実行環境に前記第1タスクを割り当てることとを含み、前記命令は、さらに、前記プロセッサに、
前記割り当てられた実行環境で各タスクを実行するように前記実行パイプラインを制御させ、各タスクの実行定義は、前記割り当てられた実行環境による実行に対応するフォーマットに変換され、
前記命令は、前記プロセッサに、
ボリュームデータタスクの実行定義を評価して、処理するデータの量を特定させ、
前記処理するデータの量を、実行環境が提供する利用可能なデータストレージリソースおよび処理リソースの実行プロパティと比較して、前記処理するデータの量と適合するまたは上回るデータストレージリソースおよび処理リソースを提供するデータベース実行環境を特定させ、
前記データベース実行環境に前記ボリュームデータタスクを割り当てさせる
、計算システム。
【請求項8】
計算システムであって、
メモリに接続されたプロセッサと、
非一時的なコンピュータ読み取り可能な媒体に格納された、命令を有して構成されたパイプラインモジュールとを備え、前記命令は、前記プロセッサによって実行されると、前記プロセッサに、
ラン定義から導出される複数のタスクを実行するための実行パイプラインを生成させ、前記ラン定義は、前記複数のタスクの各タスクの実行定義を含み、前記命令は、さらに、前記プロセッサに、
前記実行定義を評価して前記複数のタスクの実行プロパティを識別させ、
前記タスクの実行プロパティが実行環境の実行プロパティに適合することに基づいて、
前記実行環境のセットから選択される実行環境に前記複数のタスクの各タスクを割り当てさせ、各実行環境は、異なるリソースおよび機能を用いてタスクを実行し、
前記各タスクを割り当てることは、
第1タスクの第1の実行定義を評価して、実行する関数および前記第1タスクのリソース要件を指定する第1の実行プロパティを識別することと、
前記第1の実行プロパティが指定する前記リソース要件および関数を各実行環境が提供する利用可能なリソースおよび関数の実行プロパティと比較して、前記第1の実行プロパティが指定する前記リソース要件および関数に、利用可能なリソースおよび関数が適合する程度または上回る程度に基づいて、各実行環境にランクを割り当てることと、
最高ランクまたは閾値を超えるランクを有する実行環境に前記第1タスクを割り当てることとを含み、前記命令は、さらに、前記プロセッサに、
前記割り当てられた実行環境で各タスクを実行するように前記実行パイプラインを制御させ、各タスクの実行定義は、前記割り当てられた実行環境による実行に対応するフォーマットに変換され、
前記命令は、前記プロセッサに、
タスクの実行定義を評価して、前記タスクがREST(Representational State Transfer)サービスをカプセル化すると判断させ、
前記実行定義を、実行環境が提供するサービスの実行プロパティと比較し、前記RESTサービスに対応するサービスを提供するリモートクラスタ実行環境を特定させ、
前記リモートクラスタ実行環境に前記タスクを割り当てさせる
、計算システム。
【請求項9】
計算システムであって、
メモリに接続されたプロセッサと、
非一時的なコンピュータ読み取り可能な媒体に格納された、命令を有して構成されたパイプラインモジュールとを備え、前記命令は、前記プロセッサによって実行されると、前記プロセッサに、
ラン定義から導出される複数のタスクを実行するための実行パイプラインを生成させ、前記ラン定義は、前記複数のタスクの各タスクの実行定義を含み、前記命令は、さらに、前記プロセッサに、
前記実行定義を評価して前記複数のタスクの実行プロパティを識別させ、
前記タスクの実行プロパティが実行環境の実行プロパティに適合することに基づいて、
前記実行環境のセットから選択される実行環境に前記複数のタスクの各タスクを割り当てさせ、各実行環境は、異なるリソースおよび機能を用いてタスクを実行し、
前記各タスクを割り当てることは、
第1タスクの第1の実行定義を評価して、実行する関数および前記第1タスクのリソース要件を指定する第1の実行プロパティを識別することと、
前記第1の実行プロパティが指定する前記リソース要件および関数を各実行環境が提供する利用可能なリソースおよび関数の実行プロパティと比較して、前記第1の実行プロパティが指定する前記リソース要件および関数に、利用可能なリソースおよび関数が適合する程度または上回る程度に基づいて、各実行環境にランクを割り当てることと、
最高ランクまたは閾値を超えるランクを有する実行環境に前記第1タスクを割り当てることとを含み、前記命令は、さらに、前記プロセッサに、
前記割り当てられた実行環境で各タスクを実行するように前記実行パイプラインを制御させ、各タスクの実行定義は、前記割り当てられた実行環境による実行に対応するフォーマットに変換され、
前記命令は、前記プロセッサに、
計算ルーチンタスクの実行定義を評価して、前記タスクが計算関数を実行すると判断させ、
前記実行定義を、実行環境が提供する関数の実行プロパティと比較し、前記計算関数に対応する関数を提供するREST(Representational State Transfer)サービス実行環境を特定させ、
前記RESTサービス実行環境に前記計算ルーチンタスクを割り当てさせる
、計算システム。
【請求項10】
計算システムであって、
メモリに接続されたプロセッサと、
非一時的なコンピュータ読み取り可能な媒体に格納された、命令を有して構成されたパイプラインモジュールとを備え、前記命令は、前記プロセッサによって実行されると、前記プロセッサに、
ラン定義から導出される複数のタスクを実行するための実行パイプラインを生成させ、前記ラン定義は、前記複数のタスクの各タスクの実行定義を含み、前記命令は、さらに、前記プロセッサに、
前記実行定義を評価して前記複数のタスクの実行プロパティを識別させ、
前記タスクの実行プロパティが実行環境の実行プロパティに適合することに基づいて、
前記実行環境のセットから選択される実行環境に前記複数のタスクの各タスクを割り当てさせ、各実行環境は、異なるリソースおよび機能を用いてタスクを実行し、
前記各タスクを割り当てることは、
第1タスクの第1の実行定義を評価して、実行する関数および前記第1タスクのリソース要件を指定する第1の実行プロパティを識別することと、
前記第1の実行プロパティが指定する前記リソース要件および関数を各実行環境が提供する利用可能なリソースおよび関数の実行プロパティと比較して、前記第1の実行プロパティが指定する前記リソース要件および関数に、利用可能なリソースおよび関数が適合する程度または上回る程度に基づいて、各実行環境にランクを割り当てることと、
最高ランクまたは閾値を超えるランクを有する実行環境に前記第1タスクを割り当てることとを含み、前記命令は、さらに、前記プロセッサに、
前記割り当てられた実行環境で各タスクを実行するように前記実行パイプラインを制御させ、各タスクの実行定義は、前記割り当てられた実行環境による実行に対応するフォーマットに変換され、
前記命令は、前記プロセッサに、
割り当てられた実行環境から対象実行環境にタスクを再割り当てさせる
、計算システム。
【請求項11】
前記タスクを再割り当てすることは、
前記割り当てられた実行環境のデフォルト実行プロパティよりも前記対象実行環境の実行プロパティを優先することを含む、請求項
10に記載の計算システム。
【発明の詳細な説明】
【技術分野】
【0001】
優先権の主張
本特許出願は、2018年3月27日に出願され、本特許出願と同一の出願人による「COMPUTERIZED CONTROL OF EXECUTION PIPELINES」と題された米国通常特許出願第15/936,606号の関連出願であり、当該出願の優先権を主張する。
【0002】
発明の分野
本開示は、実行パイプラインを制御することに関し、より具体的には、選択された実行環境内でタスクを実行するように実行パイプラインを制御するためのシステムおよび方法に関する。
【背景技術】
【0003】
背景
多くの企業がコンピュータインフラストラクチャを組み立てて保守し、大量のデータを格納および処理している。このようなデータ処理は、データセンターなど、1つの実行環境内で複数のタスクを実行する分析パイプラインを通して行うことができる。これらのタスクは、1つのタスクがデータを読み出して処理し、結果を出力し、この出力が別のタスクによってその後利用されるよう、相互に依存し得る。各タスクが大量のデータを処理して限界のない複合的な結果を出力できるので、分析パイプラインの実行は非常に複雑になり得る。メモリ要件および処理要件、SLA(Service Level Agreement)要件、セキュリティ要件など、各タスクの特定の実行プロパティに合わせて実行環境が調整されていないので、1つの実行環境でこれらのタスクを処理することは、効率が悪く実用的でない。分析パイプラインもまた、履歴データ、分散データ、および/またはクラウドで安全に格納されていないであろう機密データを取り扱うので、複雑である。また、分析パイプラインはSLA要件を有しており、様々な場所に存在して分散データを保持する様々なアプリケーションおよびプラットフォームを利用することができる。
【発明の概要】
【課題を解決するための手段】
【0004】
概要
本明細書において、実行パイプラインを制御するコンピュータ化されたシステムおよび方法を説明する。一実施の形態では、コンピュータによって実行可能な命令を1つ以上のプログラムとして格納した非一時的なコンピュータ読み取り可能な媒体であって、命令は、コンピュータのプロセッサによって実行されると、プロセッサに、ラン定義から導出される複数のタスクを実行するための実行パイプラインを生成させ、ラン定義は、複数のタスクの各タスクの実行定義を含み、命令は、さらに、プロセッサに、実行定義を評価して複数のタスクの実行プロパティを識別させ、タスクの実行プロパティが実行環境の実行プロパティに適合することに基づいて、実行環境のセットから選択される実行環境に複数のタスクの各タスクを割り当てさせ、各実行環境は、異なるリソースおよび機能を用いてタスクを実行し、命令は、さらに、プロセッサに、割り当てられた実行環境で各タスクを実行するように実行パイプラインを制御させ、各タスクの実行定義は、割り当てられた実行環境による実行に対応するフォーマットに変換される、非一時的なコンピュータ読み取り可能な媒体を開示する。
【0005】
別の実施の形態では、各タスクを割り当てるための命令は、第1タスクの第1の実行定義を評価して、実行する関数および第1タスクのリソース要件を指定する第1の実行プロ
パティを識別するための命令と、第2タスクの第2の実行定義を評価して、実行する関数および第2タスクのリソース要件を指定する第2の実行プロパティを識別するための命令と、第1の実行プロパティが指定するリソース要件および関数が、実行環境のセットから選択される第1の実行環境が提供する利用可能なリソースおよび関数の実行プロパティに適合することに基づいて、第1の実行環境に第1タスクを割り当てるための命令と、第2の実行プロパティが指定するリソース要件および関数が、実行環境のセットから選択される第2の実行環境が提供する利用可能なリソースおよび関数の実行プロパティに適合することに基づいて、第2の実行環境に第2タスクを割り当てるための命令とを含む。
【0006】
別の実施の形態では、非一時的なコンピュータ読み取り可能な媒体は、割り当てられた実行環境によるタスク実行の非同期実行追跡を実施し、非同期実行追跡の結果へのアクセスを提供するための、コンピュータによって実行可能な命令を含む。
【0007】
別の実施の形態では、非一時的なコンピュータ読み取り可能な媒体は、プロセッサに、複数の割り当てられた実行環境間でタスクのサブセットを実行するためのスケジュールを設定させ、スケジュールに従って複数の割り当てられた実行環境間でタスクのサブセットを実行するように実行パイプラインを制御させるための、コンピュータによって実行可能な命令を含む。
【0008】
別の実施の形態では、非一時的なコンピュータ読み取り可能な媒体は、プロセッサに、変換タスクの実行プロパティに基づいて、変換タスクをアトミック操作としてインメモリ実行環境内で実行し、かつ、変換タスクの結果はデータベースに永続させると決定させ、インメモリ実行環境に変換タスクを割り当てさせるための命令を含んだ、各タスクを割り当てるための命令を含む。
【0009】
別の実施の形態では、非一時的なコンピュータ読み取り可能な媒体は、プロセッサに、少なくとも実行パイプラインを含む実行パイプラインのセットを作成させ、実行パイプラインのセットに含まれる実行パイプラインの各々に複数のタスクのサブセットを割り当させ、複数のタスクに含まれるタスクの並列実行のために実行パイプラインのセットを制御させるためのコンピュータによって実行可能な命令を含む。
【0010】
別の実施の形態では、非一時的なコンピュータ読み取り可能な媒体は、プロセッサに、割り当てられた実行環境が理解できるコマンドを実行定義内の宣言ステートメントから作成することによって、タスクの実行定義を宣言ステートメントフォーマットから割り当てられた実行環境によって用いられるフォーマットに変換させるための、コンピュータによって実行可能な命令を含む。
【0011】
一実施の形態では、1つ以上の計算装置によって実行され、上述したコンピュータにより実行可能な命令の関数の任意の組合せを実行するコンピュータにより実現される方法を開示する。
【0012】
別の実施の形態では、計算システムであって、メモリに接続されたプロセッサと、非一時的なコンピュータ読み取り可能な媒体に格納された、命令を有して構成されたパイプラインモジュールとを備え、命令は、プロセッサによって実行されると、プロセッサに、ラン定義から導出される複数のタスクを実行するための実行パイプラインを生成させ、ラン定義は、複数のタスクの各タスクの実行定義を含み、命令は、さらに、プロセッサに、実行定義を評価して複数のタスクの実行プロパティを識別させ、タスクの実行プロパティが実行環境の実行プロパティに適合することに基づいて、実行環境のセットから選択される実行環境に複数のタスクの各タスクを割り当てさせ、各実行環境は、異なるリソースおよび機能を用いてタスクを実行し、命令は、さらに、プロセッサに、割り当てられた実行環
境で各タスクを実行するように実行パイプラインを制御させ、各タスクの実行定義は、割り当てられた実行環境による実行に対応するフォーマットに変換される、計算システムを開示する。
【0013】
本方法およびシステムの1つの目的は、選択された実行環境内で、実行効率と、計算リソース利用と、ネットワーク帯域幅利用とを向上させる方法でタスクの実行を制御することである。一実施の形態では、これは、実行環境との照合処理と、どの実行環境が特定のタスクを実行するのにより適しているかを判断することとを含んで実行される。これによって、本システムが可能になる。あらゆる種類のタスクを実行するために1種類の実行環境を用いるシステムよりも、本システムは計算システムの実行効率を向上させる。
【0014】
添付の図面は、本明細書に組み込まれ、且つ、本明細書の一部を構成し、本開示の様々なシステム、方法、およびその他の実施の形態を示す。当然ながら、図示された構成要素の境界(たとえば、枠、枠群、またはその他の形状)は、境界の一実施の形態を表す。いくつかの実施の形態では、1つの構成要素は、複数の構成要素として実装されてもよく、複数の構成要素は、1つの構成要素として実装されてもよい。いくつかの実施の形態では、別の構成要素の内蔵コンポーネントとして示される構成要素は、外付けコンポーネントとして実装されてもよく、その逆も然りである。さらに、構成要素は、縮尺通りに描かれていない場合がある。
【図面の簡単な説明】
【0015】
【
図1】実行パイプラインの制御に関するシステムの実施の形態を示す図である。
【
図2】実行パイプラインの制御に関する方法の実施の形態を示す図である。
【
図3】実行パイプラインの制御に関するシステムの実施の形態を示す図である。
【
図4】データ取り込みタスク、変換タスク、機能的タスク、および外部タスクに関する実行パイプラインの制御に関するシステムの実施の形態を示す図である。
【
図5】実行パイプラインの制御に関するシステムの実施の形態を示す図であり、当該実行パイプラインを利用して計算ランのタスクが実行される。
【
図6】実行パイプラインの制御に関するシステムの実施の形態を示す図であり、当該実行パイプラインが実行環境を利用して複数のタスクを実行する。
【
図7】実行パイプラインの制御に関するシステムの実施の形態を示す図であり、当該実行パイプラインを利用して監査サービスのタスクが実行される。
【
図8】非一時的なコンピュータ読み取り可能な媒体の実施の形態を示す図である。
【
図9】開示の例示的なシステムおよび/または方法を用いて構成される計算システムの実施の形態を示す図である。
【
図10】本発明の実施の形態が実装され得る統合業務システムの実施の形態、および企業ネットワークを示す図である。
【
図11】マルチテナント分散コンピューティングサービスプラットフォームの実施の形態を示す図である。
【発明を実施するための形態】
【0016】
詳細な説明
本明細書において、実行パイプラインを制御するコンピュータ化されたシステムおよび方法について説明する。パイプラインモジュールが当該実行パイプラインを生成し、選択された実行環境内でタスクを実行するように実行パイプラインを制御する。実行環境は、特定のタスクを実行することに適した機能およびリソースを提供する。特に、パイプラインモジュールは、利用可能な実行環境のセットから特定の実行環境を選択して、特定のタスクを、実行環境の実行プロパティと各タスクの実行プロパティとのマッチ度に基づいて実行する。よって、タスクを実行することに合わせて調整されたリソースおよび機能を有する実行環境がそのタスクを実行するのに割り当てられる。パイプラインモジュールは、パイプラインモジュールを通したタスクの実行を、処理リソース、ストレージリソース、およびネットワーク帯域幅を節約するために実行環境間のデータの移動またはコピーを抑える方法で調整する。選択された実行環境内でタスクを実行することによって、タスクを実行するための計算効率が向上し、これによって処理リソースおよびストレージリソースを節約することができる。
【0017】
一実施の形態では、実行用に受信したタスクのセットがある場合、特定の実行環境にタスクを割り当てるために、パイプラインモジュールは、タスクの実行プロパティを実行環境の実行プロパティと比較して照合する。タスクの実行プロパティは、入力/出力パラメータ、命令、および/またはタスクを実行するために用いられるその他の関数または要件を含み得る。一実施の形態では、実行プロパティは、メモリ要件、データセキュリティ要件、実行する計算/算出の種類、タスクの入力を出力に変換するために実行される変換の種類、または実行するプログラムコード、処理するデータの種類および量、SLA(Service Level Agreement)、データが存在する場所、および/または、CPUサイクルなど、タスクの処理要件を含み得る。その他のタスクの実行プロパティは、REST(Representational State Transfer)サービスの利用、使用する分析モデル、別のタスクによって出力される結果に応じて異なるタスク、タスクが同期タスクであるか、非同期タスクであるか、タスクを並列で実行可能であるかどうか、タスクに対応した実行プラットフォームの種類、および/またはその他の様々な実行プロパティを含み得る。
【0018】
実行環境の実行プロパティは、タスクを実行するためにどのリソースが利用する可能であるかを定義する。一実施の形態では、実行環境の実行プロパティは、処理リソース、セキュリティプロパティ、利用可能な実行プラットフォーム、利用可能なAPI(Application Programming Interface)などを含んでもよい。その他の実行環境の実行プロパティは、利用可能なデータベースリソースおよび機能、データをインメモリで処理する能力、クラスタ計算プロパティ、クラウドコンピューティングプロパティ、ハードウェアプロパティ、利用可能なサービス、および/またはその他の様々な実行プロパティを含んでもよい。
【0019】
タスクの実行プロパティが実行環境の実行プロパティと比較および照合され、実行環境が割り当てられて特定のタスクが実行される。照合処理を実行してどの実行環境が特定のタスクを実行するのにより適しているかを判断することにより、パイプラインモジュールは、選択された実行環境内でのタスクの実行を、実行効率と、計算リソース利用と、ネットワーク帯域幅利用とを向上させる方法で制御する。よって、前述したような1種類の実行環境を用いてあらゆる種類のタスクを実行するシステムと比較して、本システムは、計算システムの実行効率を改善する。
【0020】
図1を参照して、実行パイプラインの制御に関するコンピュータシステム100の一実施の形態を例示する。コンピュータシステム100は、パイプラインモジュール105を含む。パイプラインモジュール105は、
図9のコンピュータ915など、コンピュータ上で動作するように構成され得る。パイプラインモジュール105は、第1タスク、第2タスク、第3タスク、第4タスクなど、1つのラン(run)にグループ分けされたタスクの処理を改善するように構成される。一実施の形態では、ランとは、逐次および/または並列などで実行されるタスクのグループ分けを定義したデータ構造である。当該ランのラン定義110は、第1タスクの第1の実行定義115、第2タスクの第2の実行定義120、第3タスクの第3の実行定義125、および第4タスクの第4の実行定義130など、実行定義を通してタスクを定義する。
【0021】
一実施の形態では、実行定義は、宣言的定義である。よって、実行定義は、宣言ステートメントを使って、タスクがどのように実行されるかについてと、タスクのパラメータとを定義する。たとえば、タスクの実行定義は、入力パラメータ、出力パラメータ、実行するコマンドおよびメソッド、呼び出す関数、アクセスするサービス、利用する分析モデル、実行する分析などを定義してもよい。ラン定義110は、幅広いタスクを実行定義によって記述してもよい。一実施の形態では、ラン定義110は、銀行顧客がローンの貸し倒れに陥る確率を算出するためのタスク、従業員の退職率を監視および予測するためのタスク、銀行が行う、高い利益が上げられる活動を特定するためのタスクなどを記述する。別の実施の形態では、ラン定義110は、公益事業会社、企業、事業、政府機関などのビジネスロジックの実施など、幅広い産業に関連するタスクを記述する。
【0022】
パイプラインモジュール105は、タスクごとに最も適した選択された実行環境内でランのタスクを実行する実行パイプライン145を生成するように構成される。特に、パイプラインモジュール105は、タスクの実行定義を評価して、タスクの実行プロパティ135を識別する。実行プロパティ135は、メモリ要件、タスクが実行される実行プラットフォームの種類、CPU要件、RESTサービスの利用、処理されるデータの種類などに相当してもよい。また、実行プロパティ135は、処理されるデータの量、当該データの現在の格納場所、どの関数、計算、および変換が実行されるのか、および/またはタスクの実行に関するその他の様々なプロパティに相当してもよい。
【0023】
第1の実行環境150、第2の実行環境155、第3の実行環境160、および/またはその他の実行環境の数および種類など、タスクを実行するための様々な実行環境が利用可能である。実行環境は、特定の種類のタスクを実行するためのそれぞれ異なる計算リソースおよび機能を提供するように実装される。たとえば、ある種類の実行環境は、データベース呼び出しを実行するように構成され得る一方、別の異なる実行環境は、データベース呼び出しを実行しない。したがって、各実行環境は、実行環境の特徴を定義する関連する実行プロパティ140のセットを含む。実行プロパティ140は、パイプラインモジュール105がアクセス可能なデータ構造に格納されてもよい。
【0024】
計算システムは、タスクを処理するために利用可能な任意の数の実行環境を有してもよい。例示的な実行環境は、クラスタ計算環境、クラウド計算環境、ローカル計算環境、インメモリ実行環境、スクリプト実行環境、特定のオペレーティングシステム、特定のアプリケーションフレームワークまたはプラットフォーム、データベース実行環境などを含んでもよい。実行環境の実行プロパティ140は、利用可能なメモリ、ストレージ、冗長性およびデータ保護、セキュリティ、SLA(Service Level Agreement)コンプライアンス、RESTサービス、利用可能なCPU、マルチテナントサービス、関数およびメソッド、ならびに/またはタスク/コードを実行できる計算環境に関するその他の様々なプロパティに相当してもよい。
【0025】
タスク(複数可)をどのように実行するかを決定する際、パイプラインモジュール105は、タスクの実行プロパティ135を実行環境の実行プロパティ140と比較して、互いにベストマッチする実行環境にタスクを割り当てる。特に、メモリリソース、CPUリソース、ストレージリソース、セキュリティ、および/またはタスクの実行プロパティ135が示すそのタスクを実行するための要件に適合するその他の実行プロパティ140を提供する実行環境にタスクが割り当られる。このように、実行環境の実行プロパティ140がタスクの実行プロパティ135に適合する(たとえば、実行プロパティ135の要件を満たす)場合、タスクはこの実行環境に割り当てられる。よって、パイプラインモジュール105は、各タスクをその割り当てられた実行環境で実行するように実行パイプライン145を制御する。
【0026】
実行する前にタスクを用意するために、パイプラインモジュール105は、タスクの実行定義を、割り当てられた実行環境による実行に対応するフォーマットに変換する。利用可能な実行環境がシステムに知られているので、各実行環境が要求するデータのフォーマットがシステムにプログラムされる。システムは、その後、トランスレータとして機能し、実行環境の選択されたフォーマットにタスクの実行定義のフォーマットを変換してもよい。一実施の形態では、タスクの実行定義内の宣言ステートメントは、タスクが割り当てられる実行環境が理解可能なフォーマットに変換/変更される。実行定義を変換する一実施の形態では、割り当てられた実行環境がデータベース実行環境である場合、タスクからの宣言ステートメントは、データベースによって実行可能なデータベースステートメントに変換される。実行定義を変換する別の実施の形態では、宣言ステートメントは、割り当てられた実行環境のサービスによって実行可能な実行指示文に変換される。実行定義を変換する別の実施の形態では、宣言ステートメントは、フレームワークによって実行可能なコードに変換される。実行定義を変換する別の実施の形態では、宣言ステートメントは、スクリプトエンジンによって実行可能なスクリプトに変換される。
【0027】
図2を参照して、実行パイプラインを制御することに関する、コンピュータにより実現される方法200の一実施の形態を例示する。一実施の形態では、方法200は、実行パイプラインの生成および制御に関連する命令を実行するためのプロセッサ920など、コンピュータ915の様々な計算リソースを利用してパイプラインモジュール105によって実行される。実行プロパティ、実行定義、実行パイプラインのデータなど、データを格納するためにメモリ935および/またはディスク955が用いられる。パイプラインモジュール105と、実行パイプラインと、リモート実行環境などの実行環境との間でデータを伝達するためなど、ネットワーク上でデータ構造および/またはその他のデータをコンピュータ915とリモートコンピュータとの間で伝達するためにネットワークハードウェアが用いられる。実行する複数のタスクを含んだランの実行を管理する要求を受け付けると、方法200がトリガーされる。一実施の形態では、コンピュータプログラムは、コンピュータに、特徴の任意の組合せを含む本明細書に開示の方法を実行させるように構成される。
【0028】
パイプラインモジュール105は、
図3の例示的なシステム300によって示すように、実行する複数のタスクを含んだランのラン定義305を識別する。ラン定義305は、タスクがどのように実行されるかを記述した宣言ステートメントなど、タスクの実行定義を含む。一実施の形態では、ラン定義305は、データソースからデータを取り込むためのデータ取り込みタスクの第1の実行定義310を含む。ラン定義305は、銀行の貸し倒れ確率モデルと顧客データとを使用して顧客がローンの貸し倒れに陥るリスクを計算するリスク計算タスクの第2の実行定義315を含む。ラン定義305は、顧客が彼らのリスクに基づいて分類される顧客分類タスクの第3の実行定義320を含む。このように、ラン定義305は、業務のビジネスロジックを実施するタスク、公益事業会社によって実行されるタスク、請求書発行タスク、人材タスク、会計タスクなど、様々な産業に関する幅広いタスクを含んでもよい。
【0029】
205において、パイプラインモジュール105は、データ取り込みタスク、リスク計算タスク、顧客分類タスク、および/またはその他のタスクなど、ランのタスクを実行するための実行パイプライン335を生成する。実行パイプライン335は、命令のデータ構造、コード、実行環境にアクセスするための通信機能、API(Application Programming Interface)、サービス、RESTインターフェース、処理/制御機能、および/または実行環境によるタスクの実行を調整するためのその他の機能を含んでもよい。
【0030】
実行パイプライン335を生成する一実施の形態では、データ処理要素のセットが定義される、または利用可能な予め定義されたデータ処理要素から選択される。各データ処理要素は、実行可能なコードを含むように定義される。実行可能なコードは、当該実行可能なコードによって定義されたコマンドを実行するために、プロセッサによって実行することができる。コマンドの入力と出力、および、出力を作成するための入力がなされたときにどの命令がコマンドによって実行されるかを指定するようにデータ処理要素を定義することができる。例では、データ処理要素のセットを予め定義することができ、当該データ処理要素のセットが、特定の出力を実現するための所望のデータ処理機能をどのデータ処理要素が提供するかに基づいて、利用可能なデータ処理要素から選択される。たとえば、会社の医療費を報告するための実行パイプライン335を生成するために、従業員データの取得、医療保険料の算出、およびレポートの作成に関するデータ処理要素が選択され得る。一実施の形態では、1つ以上のプロセッサによって要素を実行するためのパイプラインにおいて知られている、一方のデータ処理要素の出力が他方のデータ処理要素の入力として用いられる直列接続などでデータ処理要素を互いに論理的に接続することができる。
【0031】
210において、パイプラインモジュール105は、実行定義を評価して複数のタスクの実行プロパティ325を識別する。一実施の形態では、第1の実行定義310を評価してデータ取り込みタスクの第1の実行プロパティセットを識別する。第2の実行定義315を評価してリスク計算タスクの第2の実行プロパティセットを識別する。第3の実行定義320を評価して顧客分類タスクの第3の実行プロパティセットを識別する。
【0032】
一実施の形態では、タスクの実行定義は、タスクが実行のために受信される前に宣言ステートメントによって定義済みである。一例において、宣言ステートメントは、どのように結果を実現するかについての制御フローを明示的に定義しなくてもタスクのロジックおよび結果が定義される宣言型プログラミングによって定義することができる。たとえば、宣言型プログラミングを使用して、どのように出力を実現するかについてのプロシージャを定義しないで、入力と予測される出力とを指定する。宣言型プログラミングの例として、SQL(Structured Query Language)などのデータクエリ言語、正規表現、論理型プログラミング、関数型プログラミングがある。別の例では、実行定義の宣言ステートメントは、HTML(HyperText Markup Language)、宣言型XML(Extensible Markup Language)、またはCSS(Cascading Style Sheet)など、マークアップ言語を用いて定義済みである。このように、ラン定義は、タスクの実行定義を含んでもよい。
【0033】
したがって、一実施の形態では、実行定義は、宣言型パーサを用いて構文解析され、実行プロパティを定義する宣言ステートメント(たとえば、文字列)、実行プロパティのパラメータ、および/またはパラメータの値が識別される。たとえば、宣言ステートメントを構文解析して、タスクの実行中にアクセスされる外部サービスのウェブアドレス、外部サービスに送信される入力、および外部サービスから受信する、予想される出力データ型を識別してもよい。一実施の形態では、XMLパーサを利用して、実行定義内で宣言型XMLによって定義された宣言ステートメントを抽出して処理する。XMLパーサは、宣言ステートメントを抽出して処理し、実行定義内にある、実行プロパティ、実行プロパティのパラメータ、および/またはこれらのパラメータの値を示す文字列を識別する。XMLパーサは、このような情報を識別するように訓練することができ、抽出された文字列を、予め定義された予測文字列のテンプレートと、このような情報を示す当該文字列の構造/順序とに照合してもよい。
【0034】
どの実行環境がタスクを実行するのかを決定するために、パイプラインモジュール105は、タスクを実行できる利用可能な実行環境の実行プロパティ330にアクセスまたは当該実行プロパティ330を識別する。このような実行環境は、インメモリ実行環境340、データベース実行環境345、クラスタ実行環境350、および/または、ソフトウェアホスティングプラットフォーム、オペレーティングシステム、リモートサービス、アプリケーション、クラウドサービス、マルチテナントサービスなど、その他の実行環境を含み得る。
【0035】
215において、パイプラインモジュール105は、実行環境の実行プロパティ330にタスクの実行プロパティ325が適合(たとえば、最も当てはまる、最も近い、閾値内の適合)することに基づいて、利用可能な実行環境から選択される実行環境に各タスクを割り当てる。一実施の形態では、データ取り込みタスクは、データ取り込みタスクの実行プロパティの第1セットがデータベース実行環境345の実行プロパティにベストマッチすることに基づいて、データベース実行環境345に割り当てられる。リスク計算タスクは、リスク計算タスクの実行プロパティの第2セットがインメモリ実行環境340の実行プロパティにベストマッチすることに基づいて、インメモリ実行環境340に割り当てられる。顧客分類タスクは、顧客分類タスクの実行プロパティの第3セットがクラスタ実行環境350の実行プロパティにベストマッチすることに基づいて、クラスタ実行環境350に割り当てられる。
【0036】
その他のタスクが特定の実行環境に割り当てられてもよい。一実施の形態では、RESTサービスをカプセル化しているタスクは、タスクの実行プロパティがクラスタ実行環境350の実行プロパティにベストマッチすることに基づいて、クラスタ実行環境350に割り当てられる。別の実施の形態では、計算ルーチンタスクは、計算ルーチンタスクの実行プロパティがRESTサービス実行環境の実行プロパティにベストマッチすることに基づいて、RESTサービス実行環境によって実行されるように割り当てられる。別の実施の形態では、ボリュームデータタスクは、ボリュームデータタスクによって計算されたデータの量が閾値を超えるとボリュームデータタスクの実行プロパティが示すことに基づいて、データベース実行環境345内で実行されるように割り当てられる。たとえば、データベース内に格納されたデータを、データベースから別の実行環境に移動するよりも、データベース実行環境345内でインプレースで処理する方が効率的であろう。別の実施の形態では、変換タスクをアトミック操作としてインメモリで実行し、変換タスクの結果はデータベースに永続(persist)させるとの決定に基づいて、変換タスクをインメモリ実行環境340に割り当てる。
【0037】
一実施の形態では、第1タスクの第1の実行定義を評価して、実行する関数および第1タスクのリソース要件を指定する第1の実行プロパティを識別する。第1の実行プロパティが指定するリソース要件および関数は、各実行環境が提供する利用可能なリソースおよび関数の実行プロパティと比較され、少なくとも比較結果に基づいて、各実行環境にランクが割り当てられる。ランクは、利用可能なリソースおよび関数が第1の実行プロパティが指定するリソース要件および関数に適合する度合いまたはそれを上回る度合いに基づいて、実行環境に割り当てられる。
【0038】
一実施の形態では、必要な機能、またはタスクを実行するために必要なコンピュータ資源を実行環境が含まない場合、この実行環境には最低ランクが割り当てられる。別の実施の形態では、タスクを実行するために最低限必要な機能およびコンピュータ資源を複数の実行環境が少なくとも含む場合、各実行環境は、様々な要因に基づいてランク付けされる。このような要因は、実行コスト、利用可能なネットワーク帯域幅/ネットワーク処理、ストレージリソースおよび処理リソースなどの利用可能なコンピュータ資源、現在の負荷、予測される負荷、提供されるセキュリティレベル、提供されるデータ冗長性および保護のレベル、サービス品質の保証などに相当し得る。このように、第2の実行環境よりも効率的にタスクを実行できる実行環境は、第2の実行環境よりも高くランク付けされるであろう。同様に、より多くのコンピュータ資源および帯域幅を有するがためにより速くタスクを実行できる、よりセキュアにおよび/またはより少ないコストでタスクを実行できる場合、この実行環境は、そのようなことができない別の実行環境よりも高くランク付けされるであろう。一実施の形態では、実行環境の各パラメータには、このような比較に基づいたランクサブ値が与えられてもよく、ランクサブ値のすべてを合わせて最終ランク値を決定してもよい。比較とランク付けが完了すると、タスクを実行するために最高ランクの実行環境が割り当てられる。
【0039】
一実施の形態では、より良い実行環境が利用可能になった場合、異なる実行環境にタスクを再割り当てしてもよい。たとえば、ある実行環境にタスクが割り当てられたあと、最初の割り当て後に実行パイプライン335が利用できるようになった実行環境など、異なる実行環境にタスクを再割り当てすることができる。タスクを実行するために用いられる当初割り当てられた実行環境のデフォルト実行プロパティよりも、タスクを実行するために用いられる再割り当てされた実行環境の実行プロパティが優先されてもよい。よって、タスクは、再割り当てされた実行環境が理解できるフォーマットに変換されてもよい。
【0040】
220において、パイプラインモジュール105は、割り当てられた実行環境内で各タスクを実行するように実行パイプライン335を制御する。一実施の形態では、実行パイプライン335は、データベース実行環境345内でのデータ取り込みタスクの実行を調整する。タスクがパイプラインを通してどのように実行されるかについては、本開示の範囲を超えており、含まれない。実行パイプライン335は、インメモリ実行環境340内でのリスク計算タスクの実行を調整する。実行パイプライン335は、クラスタ実行環境350内での顧客分類タスクの実行を調整する。タスクの実行は、当該タスクの実行定義を用いて容易にしてもよい。宣言ステートメントまたはその他のフォーマットによって実行定義を定義してもよいため、実行定義は、割り当てられた実行環境による実行に対応するフォーマットに変換されてもよい。一実施の形態では、データ取り込みタスクの第1の実行定義310は、データベース実行環境345が理解できる、SQLステートメントなどのデータベースステートメントに変換されてもよい。タスクを実行する一実施の形態では、タスクの実行は、ラッパー(wrapper)RESTインターフェースを利用して、割り当てられた実行環境を通して起動されてもよい。
【0041】
一実施の形態では、1つの調達動作を実行し、タスクを実行するために用いられるデータ(たとえば、入力データ)を、割り当てられた実行環境に当該タスクの実行のために調達する。このように、タスクの実行中にネットワークのあちこちでデータを転送(たとえば、実行環境間でデータでの移動またはコピー)する代わりにわずか1つの調達動作を行うことによって、ネットワークを経由したデータ転送を低減する。つまり、データは、一度調達されるが、処理は、割り当てられた実行環境の様々なインフラストラクチャに広がる。
【0042】
一実施の形態では、複数の割り当てられた実行環境の間でタスクのサブセットを実行するためのスケジュールを定義してもよい。このように、パイプラインモジュール105は、複数の割り当てられた実行環境間でタスクのサブセットをスケジュールに従って実行するように実行パイプライン335の実行を制御する。
【0043】
一実施の形態では、実行パイプライン335および/またはその他の実行パイプラインを含む実行パイプラインのセットを通してタスクを並列で実行してもよい。タスクが別のタスクの出力を必要としない場合、タスクを並列で実行することができる。タスクのサブセットが各実行パイプラインに割り当てられる。タスクのサブセットは、タスクの並列実行のために制御される。
【0044】
一実施の形態では、第1タスクを実行する第1の実行環境と第2タスクを実行する第2の実行環境との間に、双方向パスが確立される。第1タスクの実行と第2タスクの実行とは、実行環境間の双方向パス上でデータをやり取りすることができる。一実施の形態では、双方向パスは、第1の実行環境と第2の実行環境との間のネットワーク上で双方向の通信路を作ることによって確立される。このように、実行環境のうちの1つの実行環境内の計算装置からその他の実行環境内の別の計算装置に、IP(Internet Protocol)通信のデータパケットによってなど、ネットワーク上で情報を送信することができる。
【0045】
別の実施の形態では、入力値、出力値、および/またはタスク実行の進捗を追跡するためなどの、割り当てられた実行環境によるタスクの実行の実行追跡を実施してもよい。同期または非同期実行追跡を実施してもよい。このように、実行追跡の結果へのアクセスを、計算装置のユーザに同期または非同期で表示するなどして提供してもよい。
【0046】
図4を参照して、実行パイプラインを制御することに関するシステムフロー400の一実施の形態を例示する。実行パイプラインは、様々なデータソース405からの入力データを利用および処理するタスクを実行してもよい。このように、タスクによってデータ取り込みステップ410が実行され、データベースのデータテーブルから入力データが取り込まれたり、ストリームソースから入力データが取り込まれたり、ファイルから入力データが取り込まれたりする。実行パイプラインによって調整される割り当てられた実行環境によって当該タスクが実行されるなどしてタスクによって変換ステップ415が実行され、入力データが変換または処理される。一実施の形態では、データテーブルを標準化してもよく、データをインメモリで変換してもよく、複雑な変換を実施してもよく、インデータベース関数を実行してもよい。
【0047】
実行パイプラインによって調整される割り当てられた実行環境によって当該タスクが実行されるなどしてタスクによって機能ステップ420が実行され、機能が実行される。一実施の形態では、タスクは、ルール、計算、およびローカルデバイス上でホストされる内部のローカルサービスなどの機能を実行してもよい。実行パイプラインによって調整される割り当てられた実行環境によって当該タスクが実行されるなどしてタスクによって外部タスクステップ425が実行され、外部機能が実行される。一実施の形態では、タスクは、ルール拡張、API、REST呼び出し、外部機能、サービス、および/またはネイティブを実行または起動してもよい。このように、実行パイプラインによって、実行環境を通して様々なタスクを実行してもよい。
【0048】
図5を参照して、実行パイプラインの制御に関するシステムフロー500の一実施の形態を例示する。事業資本を算出する資本計算ラン505などのランは、実行パイプラインによって実行が調整される様々なタスクを含んでもよい。このようなタスクは、パイプラインモジュールによって、タスクの実行プロパティにベストマッチする実行プロパティを有する選択された実行環境に割り当てられる。実行パイプラインによって、データ取り込みタスク510およびデータ取り込み処理タスク515など、割り当てられた実行環境内で特定のタスクが同時に実行されてもよい。その他のタスクは、その他のタスクの出力に応じて異なり得る。
【0049】
パイプラインモジュールは、データ取り込みタスク510を、データ取り込みタスク510の実行プロパティおよび実行環境の実行プロパティに基づいて、データ取り込みタスク510を実行するのに適した特定の実行環境に割り当ててもよい。パイプラインモジュールは、データ取り込み処理タスク515を、データ取り込み処理タスク515の実行プロパティおよびその実行環境の実行プロパティに基づいて、データ取り込み処理タスク515を実行するのに適した特定の実行環境に割り当ててもよい。
【0050】
パイプラインモジュールは、データ品質チェックタスク520を、データ品質チェックタスク520の実行プロパティおよびその実行環境の実行プロパティに基づいて、データ品質チェックタスク520を実行するのに適した特定の実行環境に割り当ててもよい。パイプラインモジュールは、データ修正タスク525を、データ修正タスク525の実行プロパティおよびその実行環境の実行プロパティに基づいて、データ修正タスク525を実行するのに適した特定の実行環境に割り当ててもよい。
【0051】
パイプラインモジュールは、リスクウエイト計算処理530を、リスクウエイト計算処理530の実行プロパティおよびその実行環境の実行プロパティに基づいて、リスクウエイト計算処理530を実行するのに適した特定の実行環境に割り当ててもよい。パイプラインモジュールは、再分類ルールタスク535を、再分類ルールタスク535の実行プロパティおよびその実行環境の実行プロパティに基づいて、再分類ルールタスク535を実行するのに適した特定の実行環境に割り当ててもよい。パイプラインモジュールは、計算規則タスク540を、計算規則タスク540の実行プロパティおよびその実行環境の実行プロパティに基づいて、計算規則タスク540を実行するのに適した特定の実行環境に割り当ててもよい。
【0052】
パイプラインモジュールは、貸し倒れ確率モデルタスク545を、貸し倒れ確率モデルタスク545の実行プロパティおよびその実行環境の実行プロパティに基づいて、貸し倒れ確率モデルタスク545を実行するのに適した特定の実行環境に割り当ててもよい。パイプラインモジュールは、結果エリアへのデータ追加(population)タスク550を、結果エリアへのデータ追加タスク550の実行プロパティおよびその実行環境の実行プロパティに基づいて、結果エリアへのデータ追加タスク550を実行するのに適した特定の実行環境に割り当ててもよい。
【0053】
パイプラインモジュールは、データ取り込みタスク555を、データ取り込みタスク555の実行プロパティおよびその実行環境の実行プロパティに基づいて、データ取り込みタスク555を実行するのに適した特定の実行環境に割り当ててもよい。パイプラインモジュールは、アグリゲート構造ビルドタスク560を、アグリゲート構造ビルドタスク560の実行プロパティおよびその実行環境の実行プロパティに基づいて、アグリゲート構造ビルドタスク560を実行するのに適した特定の実行環境に割り当ててもよい。このように、各タスクを、ネットワーク上でデータを移動することなどで浪費されていた処理リソース、ネットワーク帯域幅を抑えた(たとえば、実行環境間のデータの移動またはコピーが減る)方法で各タスクを効率よく実行できる特定の実行環境に割り当てられてもよい。
【0054】
図6を参照して、実行パイプラインの制御に関するシステムフロー600の一実施の形態を例示する。実行パイプライン605は、パイプラインモジュールによって、割り当てられた実行環境内でのタスクの実行を調整するように作成される。実行パイプライン605は、タスクのデータ変換610の実行を調整できる。一実施の形態では、このタスクは、入力データを受け付けると、コマンドを実行することによってデータを変換し、企業買収のパラメータに基づいて企業買収のリスクスコアを算出することなどによって入力データを出力データに変換してもよい。したがって、実行パイプライン605は、タスクを、タスクのデータ変換610を実行できる実行環境に割り当てる。
【0055】
実行パイプライン605は、タスクの決定論的計算定義615の実行を調整できる。一実施の形態では、タスクは、動作状態ごとに次に起こる動作状態が1つしかない決定論的アルゴリズムを実行してもよい。決定論的計算定義615は、決定論的アルゴリズムを定義してもよい。したがって、実行パイプライン605は、タスクを、タスクの決定論的計算定義615を実行できる実行環境に割り当てる。実行パイプライン605は、タスクの並列実行などのために、サブパイプライン620の実行を同期または非同期で調整できる。一実施の形態では、実行パイプライン605は、複数の実行パイプラインをサブパイプライン620として作成し、複数のタスクを実行するように制御する。実行パイプライン605は、複数のタスクのサブセットを各サブパイプラインに割り当てる。このように、実行パイプライン605は、サブパイプライン620の実行を制御できる。
【0056】
実行パイプライン605は、企業サービスフック625の実行を、サービスにタスクを実行のために接続するように調整できる。一実施の形態では、実行パイプライン605は、タスクとリモート計算装置によってホストされるサービスとの間に、サービスがタスクを実行できるように通信路を企業サービスフック625として確立する。このように、サービスは、通信路を使用してタスクから入力を取得し、出力をタスクに送り返すことができる。実行パイプライン605は、リモート計算装置またはサービスが提供する機能など、外部機能とのタスクの統合630の実行を調整できる。一実施の形態では、実行パイプライン605は、タスクを実行するために用いられる外部機能をホストしているリモート計算装置との通信路を、ネットワーク上で確立する。このように、リモート計算装置は、通信路を使用してタスクから入力を取得し、出力をタスクに送り返すことができる。
【0057】
実行パイプライン605は、REST、ネイティブ、API、およびSOAP(Simple Object Access Protocol)呼び出し635の実行を調整できる。一実施の形態では、実行パイプライン605は、タスクを実行するために用いられる機能を実行するためのAPI呼び出しを行うことができる。実行パイプライン605は、タスクのスケジューリングの実行を調整し、様々な実行環境で実行中のタスク間でデータおよびコマンドを伝達するなどのタスク間のインタラクションを容易にする640ことができる。一実施の形態では、第1タスクが、第2タスクへの入力として利用されるデータを出力してもよい。したがって、実行パイプライン605は、第1タスクが出力データを第2タスクに送信できるよう、第1タスクと第2タスクとの間に通信路を確立させる。
【0058】
図7を参照して、実行パイプラインの制御に関するシステムフロー700の一実施の形態を例示する。パイプラインモジュールによって、割り当てられた実行環境内でのタスクの実行を調整するように実行パイプラインが作成される。実行パイプラインは、監査タスクを実行する監査サービス705など、内部または外部サービスの実行を調整できる。一実施の形態では、監査サービス705は、監査タスクが実行のために割り当てられた実行環境によってホストされる。よって、実行パイプラインは、監査サービス705による監査タスクの実行を容易にすることができる。実行パイプラインは、データ統合タスクを提供する、展開されたサービス(たとえば、SaaS(Software As A Service)または、ラッパーエージェントを用いたネイティブ)などのデータ統合サービス710の実行を容易にすることができる。一実施の形態では、データ統合サービス710は、データ統合タスクが実行のために割り当てられた実行環境によってホストされる。よって、実行パイプラインは、データ統合サービス710によるデータ統合タスクの実行を容易にすることができる。
【0059】
実行パイプラインは、アプリケーションタスクの実行を提供する、複数のサービスをホストするコンテナなどのアプリサービス715の実行を調整できる。一実施の形態では、アプリサービス715は、アプリケーションタスクが実行のために割り当てられる実行環境によってホストされる。よって、実行パイプラインは、アプリサービス715によるアプリケーションタスクの実行を容易にすることができる。実行パイプラインは、インメモリ、データベースの一部、またはクラスタの一部である、割り当てられたタスクを実行できる実行環境など、プロセスサービス720の実行を調整できる。一実施の形態では、タスクの実行定義は、RESTによって、またはローカル通信によってなどでプロセスサービス720に反映される実行指示文にフォーマットすることができる。たとえば、タスクの実行定義は、当該タスクを実行する実行環境が理解できるフォーマットにフォーマットされる。したがって、フォーマットされた実行定義は、タスクの実行のために実行環境に送信される。
【0060】
実行パイプラインは、タスクの実行に用いられる外部サービス、レジストリ、および/またはデータリポジトリ725の実行を調整することができる。一実施の形態では、リモート計算装置は、サービス、データリポジトリ、および/またはその他のコンピュータ資源を用いてタスクを実行するために割り当てられたリモート実行環境をホストする。したがって、実行パイプラインは、当該タスクのデータを実行および格納するようにサービスの実行およびデータリポジトリの利用を調整する。実行パイプラインは、RESTインターフェースを利用するイベント駆動型ネットワークアプリフレームワークなど、パイプラインモジュールサービス730の実行を調整することができ、これによって、割り当てられた実行環境を通したタスクの実行が容易になる。つまり、タスクを実行するために用いられるデータを対応する割り当てられた実行環境に送信ためにパイプラインモジュールサービス730を使用してもよい。
【0061】
実行パイプラインは、割り当てられた実行環境を通したタスクの実行をスケジュール設定するために用いられるスケジュールサービス735の実行を調整することができる。たとえば、特定のタスクは、特定の時刻に実行されるおよび/または特定のタスク実行順序に従って実行されるようにスケジュール設定され得る。実行パイプラインは、機能を調整および制御して、同期タスクおよび非同期タスクの調整を監視740できる。実行パイプラインは、非同期タスクのためのコールバック745の実行を調整することができる。第1タスクが第2タスクを呼び出して実行し、実行結果をコールバックによって第1タスクに返す。このように、様々な実行環境内のタスクの実行を調整してもよい。
【0062】
図8は、例示的な非一時的なコンピュータ読み取り可能な媒体805を使用するシナリオ800の説明図である。一実施の形態では、本明細書に記載の構成要素のうちの1つ以上は、パイプラインモジュール105など、非一時的なコンピュータ読み取り可能な媒体805に格納されたプログラムモジュールとして構成される。プログラムモジュールは、格納されたプロセッサによって実行可能な命令820などの命令を有して構成される。当該命令は、プロセッサ840など少なくともプロセッサによって実行されると、計算装置に本明細書に記載の対応する機能(複数可)を実行させる。一実施の形態では、非一時的なコンピュータ読み取り可能な媒体805に格納されたパイプラインモジュール105の機能を、プロセッサによって実行可能な命令820としてプロセッサ840によって実行し、
図2の方法200の実施の形態825を実行してもよい。
【0063】
非一時的なコンピュータ読み取り可能な媒体805は、プロセッサによって実行可能な命令820を含む。命令820は、プロセッサ840によって実行されると、本明細書に提供するもののうち、少なくとも一部を実行させる。非一時的なコンピュータ読み取り可能な媒体805は、メモリ半導体(たとえば、SRAM(Static Random Access Memory)、DRAM(Dynamic Random Access Memory)、および/またはSDRAM(Synchronous Dynamic Random Access Memory)技術を用いた半導体)、ハードディスクドライブのプラッター、フラッシュメモリ装置、または磁気ディスクもしくは光ディスク(CD(Compact Disk)、DVD(Digital Versatile Disk)、またはフロッピー(登録商標)ディスクなど)を含む。例示的な非一時的なコンピュータ読み取り可能な媒体805は、装置830のリーダー835によって読み取られる815と(たとえば、ハードディスクドライブの読み取りヘッド、または固体記憶装置上で呼び出される読み出し動作)、プロセッサによって実行可能な命令820を表すコンピュータ読み取り可能なデータ810を格納する。
【0064】
いくつかの実施の形態では、プロセッサによって実行可能な命令820は、実行されると、たとえば、
図2の例示的な方法200の少なくとも一部などの動作を実行させる。いくつかの実施の形態では、プロセッサによって実行可能な命令820は、たとえば、
図1の例示的なシステム100の一部など、システムを実装させるように構成される。
【0065】
図9は、本明細書に記載の例示的なシステムおよび方法、および/または均等物のうちの1つ以上を用いて構成および/またはプログラムされた例示的な計算装置900を示す図である。例示的な計算装置900は、バス925によって動作可能に接続されたプロセッサ920と、メモリ935と、I/Oポート945とを備えるコンピュータ915であってもよい。一実施の形態では、コンピュータ915は、
図1および
図2に示すシステム100および/または方法200を容易にするように構成されたパイプラインモジュール105のロジックを含んでもよい。異なる実施の形態では、パイプラインモジュール105のロジックは、ハードウェア、命令を格納した非一時的なコンピュータ読み取り可能な媒体905、ファームウェア、および/またはそれらの組合せで実現されてもよい。パイプラインモジュール105のロジックは、バス925に取り付けられたハードウェアコンポーネントとして示されているが、当然のことながら、その他の実施の形態では、パイプラインモジュール105のロジックは、メモリ935に格納された、またはディスク955に格納されたプロセッサ920で実現され得る。
【0066】
一実施の形態では、パイプラインモジュール105のロジックまたはコンピュータ915は、記載の操作を実行するための手段(たとえば、ストラクチャ:ハードウェア、非一時的なコンピュータ読み取り可能な媒体、ファームウェア)である。いくつかの実施の形態では、計算装置は、クラウドコンピューティングシステムで動作するサーバ、SaaS(Software As A Service)アーキテクチャで構成されるサーバ、スマートフォン、ラップトップ、タブレットコンピューティングデバイスなどであってもよい。
【0067】
この手段は、たとえば、割り当て用のルールに基づいたソースの順序付けを実施するようにプログラムされた特定用途向け集積回路(ASIC)として実装されてもよい。また、この手段は、一時的にメモリ935に格納されてからプロセッサ920によって実行されるデータ910としてコンピュータ915に提示される、格納された、コンピュータにより実行可能な命令として実装されてもよい。
【0068】
また、パイプラインモジュール105のロジックは、割り当て用のルールに基づいたソースの順序付けを行うための手段(たとえば、ハードウェア、実行可能な命令を格納した非一時的なコンピュータ読み取り可能な媒体905、ファームウェア)を提供してもよい。
【0069】
コンピュータ915の例示的な構成を概して説明すると、プロセッサ920は、デュアルマイクロプロセッサおよびその他のマルチプロセッサアーキテクチャを含む様々なプロセッサであってもよい。メモリ935は、揮発性メモリおよび/または不揮発性メモリを含んでもよい。不揮発性メモリは、たとえば、ROM(Read-Only Memory)やPROM(Programmable Read-Only Memory)などを含んでもよい。揮発性メモリは、たとえば、RAM(Random Access Memory)、SRAM(Static Random-Access Memory)、DRAM(Dynamic Random Access Memory)などを含んでもよい。
【0070】
ディスク955は、たとえば、入出力インターフェース940(たとえば、カード、デバイス)および入出力ポート945を介してコンピュータ915に動作可能に接続されてもよい。ディスク955は、たとえば、磁気ディスクドライブ、ソリッドステートディスクドライブ、フロッピー(登録商標)ディスクドライブ、テープドライブ、Zipドライブ、フラッシュメモリカード、メモリースティックなどであってもよい。さらに、ディスク955は、CD-ROMドライブ、CD-Rドライブ、CD-RWドライブ、DVD ROMなどであってもよい。メモリ935は、たとえば、非一時的なコンピュータ読み取り可能な媒体905などの中にあるプロセスおよび/またはデータ910を記憶できる。ディスク955および/またはメモリ935は、コンピュータ915のリソースを制御および割り当てするオペレーティングシステムを格納できる。
【0071】
コンピュータ915は、入出力(I/О)インターフェース940およびI/Oポート945を介してI/O装置とやり取りを行ってもよい。I/O装置は、たとえば、キーボード、マイクロフォン、ポインティング/選択デバイス、カメラ、ビデオカード、ディスプレイ、ディスク955、ネットワーク機器950などであってもよい。I/Oポート945は、たとえば、シリアルポート、パラレルポート、およびUSBポートを含んでもよい。I/Oコントローラ930は、I/Oインターフェース940をバス925に接続してもよい。
【0072】
コンピュータ915は、ネットワーク環境で動作できるので、I/Оインターフェース940および/またはI/Оポート945を介してネットワーク機器950に接続されてもよい。ネットワーク機器950を通して、コンピュータ915は、ネットワークとやり取りしてもよい。ネットワークを通して、コンピュータ915は、リモートコンピュータに論理的に接続されてもよい(たとえば、コンピュータ915は、クライアントが接続され得る分散型計算環境内に存在してもよい)。コンピュータ915がやり取りし得るネットワークは、LAN(Local Area Network)、WAN(New Area Network)、およびその他のネットワークを含み得るが、これらに限定されない。
【0073】
図10は、本発明の実施の形態が実装され得るシステム1000を示す図である。企業ネットワーク1004は、小売店、店主、サービス業者、またはその他の種類の事業など、企業と関連付けられてもよい。代替的に、かつ、統合業務システム(マルチテナントデータ処理プラットフォームなど)をホストするASP(Application Service Provider)の利点に従って、企業は、エンドユーザがインターネットブラウザへのアクセスとインターネット接続を有することを条件に、少ない数の専用設備または業務ネットワークを備えるだけでよく、またはそれらを一切備えていなくてもよい。説明を簡潔かつわかりやすくするために、企業ネットワーク1004は、各々が通常、サービス業者またはその他の従業員など、特定のエンドユーザに専用の複数のパーソナルコンピュータ1008(しかし、このように専用である必要はない)が、例示的なリモートユーザコンピュータ1010と共に接続された現場のローカルエリアネットワーク1006によって表される。例示的なリモートユーザコンピュータ1010は、たとえば、公共Wi-Fiアクセスポイントを通したインターネットアクセスまたはその他のインターネットアクセス方法を有する旅行中の従業員のラップトップコンピュータ、またはタブレットコンピュータであり得る。コンピュータ1008および1010に関連付けられたエンドユーザ(消費者)は、インターネットが可能なスマートフォンまたはワイヤレスインターネットアクセスまたはその他の同期機能を有するその他の電子機器(PDA、タブレット端末、ラップトップコンピュータなど)を所持していてもよい。企業ネットワーク1004のユーザは、インターネット1012、または別の適した通信ネットワークもしくはネットワークの組合せを経由して統合業務システム1002とインターフェース接続する。
【0074】
統合業務システム1002は、専用のサードパーティによってホストされてもよく、
図10に示すように連結された統合業務サーバ1014とウェブインターフェースサーバ1016とを備えてもよい。当然のことながら、統合業務サーバ1014およびウェブインターフェースサーバ1016は、
図10では単体のユニットとして表されているが、いずれかまたは両方が、1つ以上の異なるハードウェアシステムおよびコンポーネント上に実装されてもよい。
【0075】
各々が商売を営んでいる複数のアカウント所有者/テナントの利益のためにシステム1002がサードパーティによって運営されている典型例では、統合業務サーバ1014は、ERPモジュール1018を備え、さらに、CRMモジュール1020を備える。多くの場合、ERPモジュール1018がメソッド、ライブラリ、データベース、サブルーチン、変数などをCRMモジュール1020と共有することが望ましく、実際に、ERPモジュール1018をCRMモジュール1020と絡み合わせて統合業務データ処理プラットフォーム(シングルテナントであってもよいが、通常、マルチテナントである)としてもよい。
【0076】
ERPモジュール1018は、財務会計モジュール、オーダー処理モジュール、時間課金モジュール、在庫管理/配分モジュール、従業員管理/給与モジュール、カレンダー/コラボレーションモジュール、レポート/セキュリティモジュール、およびその他のERP関連モジュールを含むが、これらに限定されない。CRMモジュール1020は、セールスフォースオートメーション(SFA:Sales Force Automation)モジュール、マーケティングオートメーションモジュール、連絡先リストモジュール(図示せず)、コールセンターサポートモジュール、ウェブベースのカスタマーサポートモジュール、レポート/セキュリティモジュール、およびその他のCRM関連モジュールを含むが、これらに限定されない。統合業務サーバ1014(または、マルチテナントデータ処理プラットフォーム)は、さらに、ウェブストア/eCommerceモジュール1022、パートナー/ベンダー管理モジュール1024、および統合レポートモジュール1030を含むその他の業務機能を提供する。また、SCM(Supply Chain Management)モジュール1026およびPLM(Product Lifecycle Management)モジュール1028が提供されてもよい。ウェブインターフェースサーバ1016は、統合業務サーバ1014とインターフェース接続するように構成およびなされて、1つ以上のウェブベースのユーザインターフェースを企業ネットワーク1004のエンドユーザに提供する。
【0077】
図10に示す統合業務システムは、少なくとも1つだがおそらく複数の「サーバ」から構成される分散コンピューティングシステム上でホストされてもよい。サーバは、たとえば、インターネットなどのパブリックネットワークまたはプライベートな「イントラネット」ネットワークを介してこのサーバとデータ通信を行うその他のコンピュータのユーザのニーズに応えるための1つ以上のソフトウェアアプリケーションまたはサービスのためのデータストレージおよび実行環境を提供するための専用の物理コンピュータである。サーバおよびサーバが提供するサービスを「ホスト」およびリモートコンピュータと称する場合があり、リモートコンピュータ上で動作している、供給中のソフトウェアアプリケーションを「クライアント」と称する場合がある。サーバが提供するコンピューティングサービス(複数可)によっては、データベースサーバ、データストレージサーバ、ファイルサーバ、メールサーバ、プリントサーバ、ウェブサーバなどと称され得る。ほとんどの場合、ウェブサーバは、インターネットを介してウェブサーバにアクセスするクライアントウェブブラウザに、通常、ウェブサイトをホスティングすることによってコンテンツを配信させてくれるソフトウェアと、ハードウェアとの組合せである。
【0078】
図11は、本発明の実施の形態が実装され得る例示的な動作環境1100の要素または構成要素を例示する図である。図に示したように、様々な計算装置を内蔵するおよび/またはそれらに内蔵された様々なクライアント1102は、1つ以上のネットワーク1114を通して分散コンピューティングサービス/プラットフォーム1108と通信してもよい。たとえば、クライアントは、計算装置のうちの1つ以上によって少なくとも一部が実装されたクライアントアプリケーション(たとえば、ソフトウェア)を内蔵してもよく、および/またはそれに内蔵されてもよい。適した計算装置として、パーソナルコンピュータ、サーバコンピュータ1104、デスクトップコンピュータ1106、ラップトップコンピュータ1107、ノートブックコンピュータ、タブレットコンピュータもしくはPDA(Personal Digital Assistant)1110、スマートフォン1112、携帯電話、および、1つ以上の電子プロセッサ、マイクロプロセッサ、CPU(Central Processing Unit)、またはコントローラなど、1つ以上の計算装置コンポーネントを内蔵した家庭用電子機器などが挙げられる。適したネットワーク1114として、有線および/またはワイヤレス通信技術を利用したネットワーク、および任意の適切なネットワーキングプロトコルおよび/または通信プロトコル(たとえば、インターネット)に従って動作するネットワークなどが挙げられる。カスタマーサポートサービスの配信を伴うユースケースでは、記載の計算装置は、カスタマーサポート配信処理のエンドポイント、すなわち、消費者のデバイスを表す。
【0079】
分散コンピューティングサービス/プラットフォーム(マルチテナント業務データ処理プラットフォームとも称する場合がある)1108は、ユーザインターフェース層(tier)1116、アプリケーションサーバ層1120、およびデータストレージ層1124を含む複数の処理層を含んでもよい。ユーザインターフェース層1116は、グラフィカルユーザインターフェースおよび/またはウェブベースのインターフェースを含む複数のユーザインターフェース1118を保持してもよい。ユーザインターフェースは、(図において、「サービスUI」と示される)サービスのユーザまたは「テナント」のためのアプリケーションおよびデータへのアクセスを提供するためのサービス用デフォルトユーザインターフェース、およびユーザ固有の要件に従って特化/カスタマイズされた1つ以上のユーザインターフェース(たとえば、図において「テナントA UI」、…、「テナントZ UI」によって表され、1つ以上のAPIを介してアクセスされ得る)を含んでもよい。デフォルトユーザインターフェースは、データにアクセスすること、特定のデータ処理動作を実行させることなど、サービスプラットフォームによって提供される機能および能力へのテナントの関与をテナントが管理することを可能にするコンポーネントを含んでもよい。図に示す各処理層は、コンピュータおよび/または、コンピュータサーバおよびプロセッサを含むコンピュータコンポーネントのセットを有して実装されてもよく、ソフトウェアアプリケーションまたは命令セットの実行によって決定される様々な関数、メソッド、処理、または動作を行ってもよい。データストレージ層1124は、1つ以上のデータストアを含んでもよく、データストアとして、サービスデータストア1125と、1つ以上のテナントデータストア1126とを含んでもよい。
【0080】
各テナントデータストア1126は、これらに限定されないが、ERP、CRM、eCommerce、人材管理、給与などを含む、テナント固有の豊富な業務サービスまたは機能の提供の一部として用いられるテナント固有のデータを含んでもよい。データストアは、SQL(Structured Query Language)ベースのRDBMS(Relational Database Management Systems)を含む、任意の適切なデータストレージ技術を有して実装されてもよい。
【0081】
本発明の一実施の形態によると、ビジネス関連アプリケーション、データストレージ、および機能のセットを複数のテナントに提供するために、分散コンピューティングサービス/プラットフォーム1108は、マルチテナントであってもよく、サービスプラットフォーム1108は、エンティティによって操作されてもよい。これらのアプリケーションおよび機能は、会社がその運営の様々な態様を管理するために用いるアプリケーションおよび機能を含んでもよい。たとえば、アプリケーションおよび機能は、業務情報システムへのウェブベースのアクセスを提供することを含んでもよく、ブラウザおよびインターネットまたはイントラネット接続を有するユーザが特定の種類の業務情報を閲覧、入力、処理、または変更できるようになる。
【0082】
上述したように、このような業務情報システムは、業務工程を合理化し、かつ業務全体のレベルで効率性を向上させる目的で、複数のこれまで別々であった業務計算システムの能力を共通システムに統合するERP(Enterprise Resource Planning)システムを含んでもよい。一例として、ERPシステムのモジュールの能力は、会計、オーダー処理、時間課金、在庫管理、小売POS(Point Of Sale)システム、eCommerce、PIM(Product Information Management)、需要/MRP(Material Requirements Planning)、仕入れ、CMS(Content Management System)、PSA(Professional Services Automation)、従業員管理/給与、人材管理、および従業員カレンダー/コラボレーション、ならびにこれらの機能に関係するレポート能力および分析能力を含んでもよい(これらを含む必要はなく、これらのみに限定もされない)。このような機能または業務アプリケーションは、通常、プラットフォームのアプリケーションサーバ層1120の一部である1つ以上のサーバ1122上で保持および実行されるソフトウェアコード/命令の1つ以上のモジュールによって実装される。
【0083】
統合データ処理/サービスプラットフォームの一部として提供され得る別の業務情報システムは、統合CRM(Customer Relationship Management)システムである。統合CRMは、顧客をより理解することを支援し、既存の顧客に向けたサービスを向上させ、かつ、収益の見込める新規顧客の獲得を支援するように設計されている。一例として、CRMシステムの能力またはモジュールは、SFA(Sales Force Automation)、マーケティング自動化、連絡先リスト、コールセンターサポート、RMA(Returns Management Authorization)、ポイントプログラムサポート、およびウェブベースのカスタマーサポート、ならびにこれらの機能に関係するレポート能力および分析能力を含み得る(これらを含む必要はなく、これらのみに限定もされない)。ERP機能およびCRM機能に加えて、業務情報システム/プラットフォームは、統合パートナー/ベンダー管理システム、eCommerceシステム(たとえば、仮想店頭アプリケーションまたはプラットフォーム)、PLM(Product Lifecycle Management)システム、人材管理システム(医療保険/歯科保険事務、給与などを含んでもよい)、またはSCM(Supply Chain Management)システムのうちの1つ以上を含んでもよい。このような機能または業務アプリケーションは、通常、プラットフォームのアプリケーションサーバ層1120の一部である1つ以上のサーバ1122上で保持され、当該1つ以上のサーバ1122によって実行されるソフトウェアコード/命令の1つ以上のモジュールによって実装される。
【0084】
なお、たとえば統合業務システムが小売商のeCommerceプラットフォームおよび/または「ウェブストア」と一体化された、ERP、CRM、およびその他の業務能力を備える統合業務システムを用いることによって、機能面での利点および戦略面での利点の両方を得ることができるであろう。たとえば、特定の商品を探している顧客は、自身の家庭用コンピュータから、さらには、自身の携帯電話から小売商のウェブサイトに導かれ、幅広い商品および/またはサービスを提示され得る。ブラウザベースのインターフェースを介して顧客がオンライン販売取引を開始すると、統合業務システムは、オーダーを処理し、受付可能なアカウントをアップデートし、在庫管理データベースおよびその他のERPベースのシステムをアップデートすることができ、また、戦略的顧客情報データベースおよびその他のCRMベースのシステムを自動的にアップデートすることができる。これらのモジュールならびにその他のアプリケーションおよび機能は、必要に応じて1つ以上の統合データベースにアクセスする1つのコードベースによって有利に統合および実行されてもよく、統合業務管理システムまたはプラットフォームが形成される。
【0085】
図10で説明したように、
図11に示す統合業務システムは、少なくとも1つ、通常、複数の「サーバ」から構成される分散コンピューティングシステム上でホストされてもよい。サーバは、たとえば、インターネットなどのパブリックネットワークまたはプライベートな「イントラネット」ネットワークを介してこのサーバとデータ通信を行うその他のコンピュータのユーザのニーズに応えるための1つ以上のソフトウェアアプリケーションまたはサービスのためのデータストレージおよび実行環境を提供するための専用の物理コンピュータである。
【0086】
会社は、このような統合業務システムを自身で構築して保守するのではなく、サードパーティによって提供されるシステムを利用すればよい。このようなサードパーティは、上述した統合業務システム/プラットフォームを、1つの包括的統合業務システムの個々のインスタンス化が様々なテナントに提供されるマルチテナントプラットフォームを背景に実装してもよい。このようなマルチテナントプラットフォームの1つの利点は、各テナントが、その統合業務システムのインスタンス化を、そのテナントの特定のビジネスニーズまたは運営方法に合わせてカスタマイズできることである。各テナントは、業務データおよび機能を複数のユーザに提供するためにマルチテナントプラットフォームを使用する会社またはエンティティであってもよい。これら複数のユーザのうちの何人かは、当該会社またはエンティティ内で明確な役割または責任があってもよい。
【0087】
場合によっては、テナントは、既存のプラットフォームアプリケーションの機能を、テナントの従業員および/または顧客が利用可能になる拡張をそのアプリケーションに導入することによって変更したり補ったりしたいであろう。場合によっては、プラットフォーム上に存在するデータに関係するテナントの業務の処理にこのような拡張を適用してもよい。この拡張は、テナントによって、またはサードパーティの開発者によって開発され、その後、インストールのためにテナントが利用できるようにしてもよい。プラットフォームは、利用可能な拡張の「ライブラリ」またはカタログを含んでもよい。当該「ライブラリ」またはカタログには、興味のある拡張を見つけるためにテナントがアクセスして検索することができる。ソフトウェア開発者には、提案された拡張が適切に検証された後、拡張をライブラリまたはカタログに「掲載する」許可が与えられてもよい。
【0088】
よって、テナントが所望のサービスおよび機能を取得できるようにするために(eCommerceプラットフォームに関係する機能など、特定のサービスをエンドカスタマーに提供することを含み得る)、マルチテナントサービスプラットフォームは、テナントに、テナントのビジネスニーズにより適合するように、利用可能なサービス(複数可)の特定の態様を設定する許可を与えてもよい。このように、サービスプラットフォームの態様はカスタマイズ可能であってもよく、これによって、テナントは、それぞれのユーザまたはこれらユーザのグループに独自のサービスを提供するようプラットフォームの態様を設定できるようになる。たとえば、サービスプラットフォームを利用する企業は、従業員および/または顧客に追加機能または能力を提供したい、または、企業のビジネスニーズなどに合わせて調整された規定のワークフローに従った特有の方法で業務データを処理したいであろう。
【0089】
テナントによるプラットフォームのカスタマイズは、下位のオペレーティングシステム機能の上に構築されるカスタム機能(テナントまたはユーザ特有の機能、データ処理、または動作を行う能力など)を含んでもよい。いくつかのマルチテナントサービスプラットフォームは、グラフィカルユーザインターフェースの見た目を美しくする変更から互いに無関係のサードパーティベンダーによって開発されたコンポーネントおよび/またはアプリケーション全体の統合を提供することまで、複数の異なるレベルでサービスプラットフォームの機能または動作をカスタマイズする能力を提供してもよい。これは、非常に有益であり得る。理由は、サードパーティベンダーによって開発されたコンポーネントおよび/またはアプリケーションの使用を許可することによって、マルチテナントサービスは、テナントが利用できる機能を大幅に向上させ、プラットフォームに対するテナント満足を上げることができるからである。
【0090】
上述したように、ユーザカスタマイゼーションに加えて、単独のソフトウェア開発者が、マルチテナントデータ処理プラットフォームを通してユーザが利用可能になる特定のアプリケーションの拡張を作成してもよい。この拡張は、基盤となるアプリケーションに新しい機能または能力を加えるものであってもよい。プラットフォームの1つ以上のテナント/ユーザは、拡張によって利用可能になるアプリケーションの拡張機能を利用できようにするために、基盤となるアプリケーションに拡張を加えたいであろう。さらには、開発者は、拡張をアップグレードしたり、修正の必要があると認識した場合、パッチを提供したり、拡張に組み込むと便利な追加機能を提供したいであろう。場合によっては、開発者は、より新しいバージョンの拡張を改善するためのフィードバックを得るために、拡張の安定性をテストするために、または、拡張(複数可)ごとに市場をセグメント化するのを支援するために、選ばれた一組のユーザ(少なくとも初回は)のみがアップグレードできるようにすることを好むであろう。
【0091】
別の実施の形態において、記載の方法および/またはそれらの均等物は、コンピュータにより実行可能な命令を有して実装される。したがって、一実施の形態では、非一時的なコンピュータ読み取り可能な/記憶媒体は、アルゴリズム/実行可能なアプリケーションのコンピュータにより実行可能な格納された命令を有して構成され、命令は、機械(複数の機械)によって実行されると、機械(複数の機械)(および/または関連するコンポーネント)に方法を実行させる。機械としては、プロセッサ、コンピュータ、クラウドコンピューティングシステムにおいて動作するサーバ、SaaS(Software as a Service)アーキテクチャにおいて構成されるサーバ、スマートフォンなどがあるが、これらに限定されない。一実施の形態では、計算装置は、開示の方法を実行するように構成された1つ以上の実行可能なアルゴリズムを有して実装される。
【0092】
1つ以上の実施の形態において、開示の方法またはそれらの均等物は、当該方法を実行するように構成されたコンピュータハードウェア、または非一時的なコンピュータ読み取り可能な媒体に格納されたモジュールに含まれたコンピュータ命令のいずれかによって実行される。ここで、命令は、少なくとも計算装置のプロセッサによって実行されると当該方法を実行するように構成される実行可能なアルゴリズムとして構成される。
【0093】
説明をわかり易くする目的のため、図示した技法をアルゴリズムの一連のブロックとして図示および説明したが、技法は、ブロックの順序に限定されないことがわかる。いくつかのブロックは、図示および説明された順序とは異なる順序起こり得、および/またはその他のブロックと同時に起こり得る。また、例示的な技法を実装するために、図示された全ブロックよりも少ない数のブロックを使用してもよい。ブロックは、複数のアクション/コンポーネントに組み合わされるまたは分けられてもよい。さらに、追加および/または代替的な技法は、ブロックに示されていない追加アクションを使用できる。本明細書に記載の方法は、法定の主題に限定される。
【0094】
以下は、本明細書において使用される選定された用語の定義を含む。定義は、用語の範囲に含まれ、且つ、実装のために使用され得る様々な例および/または形態のコンポーネントを含む。例は、限定するものではない。単数形および複数形の用語も定義の範囲に含まれる。
【0095】
「一実施の形態」、「実施の形態」、「一例」、「例」などは、そのようにして説明される実施の形態(複数の実施の形態)または例(複数の例)が特定の特徴、構成、特性、性質、構成要素、または限定を含み得ることを示し、実施の形態または例のすべてがその特定の特徴、構成、特性、性質、構成要素、または限定を必ずしも含むわけではないことを示す。さらに、表現「一実施の形態において」を繰り返し使用することは、同じ実施の形態を指し得るが、必ずしもそうではない。
【0096】
「データ構造」は、本明細書で使用するとき、メモリに格納された計算システム、記憶装置、またはその他のコンピュータ化されたシステムにおけるデータの構成である。データ構造は、たとえば、データフィールド、データファイル、データ配列、データレコード、データベース、データテーブル、グラフ、ツリー、連結リストなどのうちの任意の1つであり得る。データ構造は、多くの他のデータ構造から形成されてもよく、それらを含んでもよい(たとえば、データベースは、多くのデータレコードを含む)。その他の実施の形態によると、データ構造のその他の例も可能である。
【0097】
「コンピュータ読み取り可能な媒体」または「コンピュータ記憶媒体」は、本明細書で使用するとき、実行されると開示の機能のうちの1つ以上を実行するように構成された命令および/またはデータを格納する非一時的な媒体を指す。いくつかの実施の形態においてデータが命令として機能してもよい。コンピュータ読み取り可能な媒体は、不揮発性媒体、および揮発性媒体などの形式を取り得るが、これらに限定されない。不揮発性媒体は、たとえば、光ディスク、磁気ディスクなどを含み得る。揮発性媒体は、たとえば、半導体メモリ、ダイナミックメモリなどを含み得る。コンピュータ読み取り可能な媒体の一般的な形式は、フロッピー(登録商標)ディスク、フレキシブルディスク、ハードディスク、磁気テープ、その他の磁気媒体、特定用途向け集積回路(ASIC)、プログラマブル・ロジック・デバイス、CD(Compact Disk)、その他の光学媒体、RAM(Random Access Memory)、ROM(Read Only Memory)、メモリチップもしくはカード、メモリースティック、SSD(Solid State Storage Device)、フラッシュドライブ、およびコンピュータ、プロセッサ、またはその他の電子デバイスがともに機能できるその他の媒体を含み得るが、これらに限定されない。各種の媒体は、一実施の形態において実装用に選択された場合、開示および/または請求項に記載の機能のうちの1つ以上を実行するように構成されたアルゴリズムの格納された命令を含み得る。
【0098】
「ロジック」は、本明細書で使用するとき、本明細書に開示の機能もしくはアクションを実行するための、ならびに/または別のロジック、方法、および/もしくはシステムからの機能もしくはアクションを本明細書に開示の通りに実行させるための、コンピュータもしくは電気ハードウェア、実行可能なアプリケーションもしくはプログラムモジュールの格納された命令を有する非一時的な媒体、および/またはこれらの組み合わせを有して実現される部品を表す。同等のロジックが、ファームウェア、アルゴリズムがプログラムされたマイクロプロセッサ、離散ロジック(たとえば、ASIC)、少なくとも1つの回路、アナログ回路、デジタル回路、プログラムされた論理回路、アルゴリズムの命令を含むメモリ素子などを含んでもよく、これらは、いずれも、開示の機能のうちの1つ以上を実行するように構成され得る。一実施の形態では、ロジックは、1つ以上のゲート、ゲートの組み合わせ、または開示の機能のうちの1つ以上を実行するように構成されたその他の回路部品を含み得る。複数のロジックが説明されている箇所は、複数のロジックを1つのロジックに組み込むことが可能である。同様に、1つのロジックが説明されている箇所は、当該1つのロジックを複数のロジックに分散することが可能である。一実施の形態では、これらのロジックのうちの1つ以上は、開示および/または請求項に記載の機能を実行することに関連付けられた対応する構造である。実装するロジックの選択は、所望のシステム条件または仕様に基づいてよい。たとえば、より速い速度を求める場合、機能を実装するために、ハードウェアが選ばれる。低コストを求める場合、機能を実装するために、格納された命令/実行可能なアプリケーションが選ばれる。
【0099】
「動作可能な接続」、またはエンティティが「動作可能に接続される」接続は、信号、物理的通信、および/または論理的通信が送信および/または受信され得る接続である。動作可能な接続は、物理インターフェース、電気インターフェース、および/またはデータインターフェースを含み得る。動作可能な接続は、操作可能な制御を可能にするのに十分なインターフェースおよび/または接続の異なる組み合わせを含み得る。たとえば、2つのエンティティを、直接または1つ以上の中間エンティティ(たとえば、プロセッサ、オペレーティングシステム、ロジック、非一時的なコンピュータ読み取り可能な媒体)を介して互いに信号を通信するように動作可能に接続できる。動作可能な接続を作るために、論理的および/または物理的通信チャネルを使用できる。
【0100】
「ユーザ」は、本明細書において使用するとき、1人以上の人、コンピュータまたはその他のデバイス、またはこれらの組合せを含むが、これらに限定されない。
【0101】
開示の実施の形態をかなり詳しく図示および説明したが、添付の請求の範囲をこのような詳細に制限または限定する意図はまったくない。主題の様々な態様を説明する目的のために構成要素または技法の考えられるすべての組み合わせを説明することは、当然、不可能である。そのため、本開示は、図示および説明した詳細または例示的な実施例に限定されない。多くの変更および変形が当業者に明らかになるであろう。当該変更および変形は、開示の特徴の任意の関連性のある組合せを含む。
【0102】
用語「含む(includes)」または「含む(including)」が詳細な説明または請求の範囲において使用される範囲において、当該用語は、用語「備える(comprising)」が請求の範囲において移行句として使用されたときに解釈されるのと同様に、他を包含する意図がある。
【0103】
用語「または(or)」が詳細な説明または請求の範囲において使用される範囲において(たとえば、AまたはB)、当該用語は、「AまたはBまたはその両方」を意味する意図がある。出願人が、「AまたはBのどちらかのみであって両方ではない」ことを示す意図がある場合、表現「AまたはBのどちらかのみであって両方ではない」が使用される。したがって、本明細書における用語「または」の使用は、包含的であって限定的ではない使用である。