(57)【特許請求の範囲】
【請求項１】
自動化された実験プラットホームであって、
一つ以上のプロセッサと、
一つ以上のメモリと、
一つ以上のデータ格納装置と、
前記一つ以上のプロセッサ上で実行されるときに、
グラフ内においてともにリンクされる、入力データセットと、実行モジュールと、生成されたセットと、を含むワークフローが生成されディスプレイされる視覚的統合開発環境を提供し、
出力データセットを生産するためにワークフローを実行するように、前記自動化された実験プラットホームを制御する、前記メモリおよびデータ格納装置のいずれか一つ以上に格納されるコンピュータ命令と、
ユーザコンピュータまたは他のプロセッサ制御されたユーザ装置上でそれぞれ駆動する多数のフロントエンド実験ダッシュボードアプリケーションを含むフロントエンドと、
一つ以上のＡＰＩサーバと、分散カタログサービスと、クラスタ管理サービスと、多数の実行クラスタノードとを含む、インターネットを介して前記フロントエンドに連結されるバックエンドと、を含み、
前記クラスタ管理サービスは、
前記一つ以上のＡＰＩサーバから、ユーザの代わりに実験を行うために、前記実行クラスタノード上で実行される必要がある作業に対する作業識別子を受信し、
前記作業識別子により識別される作業を、実行のために適切な実行クラスタノードにディスパッチし、ディスパッチした作業のうち、
実行準備のできた作業は即時実行のための特定の実行クラスタノードに伝達され、
現在実行中の作業および実行待機中の作業により生産されるデータを待機する必要がある作業は、データの従属性が満たされるときに開始するために、従属性の満足度を断続的に検査する実行クラスタノード内で実行中のピンガルーチンに伝達される、自動化された実験プラットホーム。
【請求項２】
各ワークフローは、エッジにより連結されるノードを含む有向非巡回グラフとして前記視覚的統合開発環境により表現される、請求項１に記載の自動化された実験プラットホーム。
【請求項３】
前記ノードは、
ユーザにより前記自動化された実験プラットホームシステムにアップロードされるデータセットとして名づけられたデータセットを表現する名づけられたデータソースノード；
前記ワークフローにより定義される実験の実行により出力される出力データセットノード；
ｐｙｔｈｏｎ、ｊａｖａ（登録商標）、ｈｉｖｅ、ｍｙｓｑｌ（登録商標）、ｓｃａｌａ、ｓｐａｒｋ、および他のプログラミング言語を含む非常に様々な相違する言語のいずれかで記録される一つ以上の実行可能ルーチンをそれぞれ表現する実行モジュールを表現する実行モジュールノードであって、各実行モジュールは、一つ以上の中間データセットに対応する一つ以上の関連する出力を含む実行モジュールノードから選択される、請求項２に記載の自動化された実験プラットホーム。
【請求項４】
前記エッジは、
名づけられたデータソースノードを実行モジュールと連結するエッジ；
中間ノードと関連する出力を実行モジュールと連結するエッジ；
中間ノードと関連する出力を出力データセットノードと連結するエッジから選択される、請求項３に記載の自動化された実験プラットホーム。
【請求項５】
前記ワークフローは実験を表現し、各ワークフローはテキストエンコードされ、前記テキストエンコードは、エンコードされた実行モジュールのリストを含み、各エンコードされた実行モジュールは、
実行モジュールネームと、
バージョン番号と、
一つ以上の実行モジュールインスタンスそれぞれに対するエンコーディングと、を含む、請求項１に記載の自動化された実験プラットホーム。
【請求項６】
各実行モジュールインスタンスは、
インスタンスネームまたは識別子と、
キー値ペアのリストまたはセットと、を含む、請求項５に記載の自動化された実験プラットホーム。
【請求項７】
実行モジュールは、実行クラスタノードにより実行可能な実行可能ファイルであり、
各実行モジュールインスタンスは、実験有向非巡回グラフの単一ノードにマッピングされ、
実行モジュールが実験の間に多数回呼び出されるときに、各呼び出しは、相違する実行モジュールインスタンスに対応し、
前記キー値ペアは、前記実行モジュールインスタンスに対するデータ入力、前記実行モジュールインスタンスからのデータ出力、前記実行モジュールインスタンスに対する静的パラメータ、および前記実行モジュールインスタンスに対する可変パラメータの表示を提供する、請求項６に記載の自動化された実験プラットホーム。
【請求項８】
前記視覚的統合開発環境は、ユーザによりアクセスされるときに、前記ユーザが、
実行モジュールをユーザコンピュータから前記自動化された実験プラットホームにアップロードし、
実行モジュールを前記自動化された実験プラットホームからユーザコンピュータにダウンロードし、
入力、中間、および出力データセットをユーザコンピュータから前記自動化された実験プラットホームにアップロードし、
入力、中間、および出力データセットを前記自動化された実験プラットホームからユーザコンピュータにダウンロードし、
ネームにより、実行モジュールおよびユーザデータセットと関連する一つ以上の属性に対する値により、また、説明により実行モジュールおよびデータセットを検索し、
既存のワークフローをコピーし、
新たな実験のための新たなワークフローを生成するために、既存のワークフローのうち一部を抽出および修正し、
実験、ワークフロー、データセット、および実行モジュールを公開、共有、および協力的に生成するようにチームとして他のユーザと協力することを可能にするインターフェイスの特徴を含むダッシュボードを提供する、請求項１に記載の自動化された実験プラットホーム。
【請求項９】
各フロントエンド実験ダッシュボードは、人間ユーザが、
前記バックエンドに格納される実行モジュール、データセット、および実験に関する情報をダウンロードし、
有向非巡回グラフベースの視覚化を用いて実験を生成および編集し、
実行のために実験を提出し、
実行された実験により生成される結果を見て、
前記バックエンドにデータセットおよび実行モジュールをアップロードし、
他のユーザと実験、実行モジュール、およびデータセットを共有する、
ことができるようにする、前記人間ユーザに対するユーザインターフェイスを提供する、請求項１に記載の自動化された実験プラットホーム。
【請求項１０】
前記フロントエンドは、前記インターネット以外に、パーソナルエリアネットワーク、ローカルエリアネットワーク、ワイドエリアネットワーク、および通信ザブシステム、システムおよび媒体により前記バックエンドに連結される、請求項９に記載の自動化された実験プラットホーム。
【請求項１１】
前記バックエンドは、一つ以上のクラウドコンピューティングシステム、集中型または分散型プライベートデータセンター内に、または多数のサーバコンピュータ、およびネットワークアタッチト格納システム、内部ネットワークを含む他の一般的に大規模マルチコンピュータシステム演算環境内部上で具現される、請求項１に記載の自動化された実験プラットホーム。
【請求項１２】
前記フロントエンド実験ダッシュボードアプリケーションからの受信要請、および前記フロントエンド実験ダッシュボードアプリケーションへの送信応答は、ステートレスＲＥＳＴｆｕｌ通信プロトコルを使用してユーザコンピュータ上で駆動し、
前記ＡＰＩサーバは、前記カタログサービスおよびクラスタ管理サービスにより提供されるサービスをアクセッシングすることにより受信された要請を行い、
前記ＡＰＩサーバは、前記実行クラスタノードに対するサービスおよびクラスタ管理サービスを提供する、請求項１に記載の自動化された実験プラットホーム。
【請求項１３】
前記カタログサービスは、実行モジュールの実行インスタンスである、前に実行された、現在実行されている、また、以降実行される作業と関連する状態情報に対するリポジトリであり、
前記カタログサービスは、格納されたデータセット、実験、実行モジュール、および作業エンティティのバージョニング、また、それに対する検索インターフェイスを提供する、請求項１に記載の自動化された実験プラットホーム。
【請求項１４】
前記カタログサービスは、多数のユーザおよび／またはユーザ組織それぞれに対して相違するタイプのカタログエントリーを格納し、前記相違するタイプのカタログエントリーは、データ、実験、実行モジュール、作業カタログエントリータイプを含む、請求項１３に記載の自動化された実験プラットホーム。
【請求項１５】
カタログエントリーは、
特定のユーザまたはユーザ組織に対する格納されたメタデータの特定の集合を識別する
インデックスフィールドと、
前記カタログエントリーのタイプを表示するタイプフィールドと、
特定のユーザまたは組織に対する同一のタイプのエントリーの集合から前記カタログエントリーを探索し検索するために使用されるカタログエントリーに対する固有の識別子であるＩＤフィールドと、を含む、請求項１４に記載の自動化された実験プラットホーム。
【請求項１６】
カタログエントリーは、
状態値と、
短い説明と、
ネームと、
オーナと、
最終更新日付／時間と、
タイプと、
生成日と、
バージョンと、
メタデータを有するソース部分と、をさらに含む、請求項１５に記載の自動化された実験プラットホーム。
【請求項１７】
作業が実行を完了したときに、出力データおよび状態情報は、実行クラスタノードから前記ＡＰＩサーバを介して前記カタログサービスに返される、請求項１に記載の自動化された実験プラットホーム。
【請求項１８】
実験は、
フロントエンド実験ダッシュボードアプリケーションと相互作用するユーザにより、実験設計の視覚的表現を構築し、
前記カタログサービスにまだ存在していないデータセットおよび実行モジュールを前記一つ以上のＡＰＩサーバにより提供されるアップロードサービスを使用して前記カタログサービスにアップロードし、
前記実験設計を前記一つ以上のＡＰＩサーバにより提供される実験提出サービスに提出し、
前記実験設計を前記一つ以上のＡＰＩサーバにより実行モジュールインスタンスおよびデータセットにパースし、
前記一つ以上のＡＰＩサーバにより、前記データセットおよび実行モジュールがいずれも前記カタログサービス内に常駐することを保証し、
前記一つ以上のＡＰＩサーバにより、前記実験設計を検証し、
前記一つ以上のＡＰＩサーバにより、前記実行モジュールインスタンスに対する作業署名をコンピューティングし、
前記一つ以上のＡＰＩサーバおよびカタログサービスにより、前記カタログに既に格納された作業エントリーの作業署名とマッチしない作業署名に対する新たな作業エントリー
を生成し、
前記一つ以上のＡＰＩサーバにより、前記新たに生成された作業エントリーに対する作業識別子を受信し、
前記一つ以上のＡＰＩサーバにより、前記実験を実行するために実行される必要があるかかる作業に対する作業識別子をクラスタ管理者構成要素に伝達し、
前記クラスタ管理者構成要素により、前記作業識別子に対応する作業に対する前記入力データがいずれも利用可能な場合に即時実行するために、またはデータ従属性が満たされた場合に後続実行のために、前記実行クラスタノードの中に前記伝達された作業識別子を分散し、
各作業の完了時に、前記作業を実行させた実行クラスタノードにより、実行により生成されるデータセット、標準エラー出力とＩ／Ｏ出力、および完了状態を格納のために前記カタログサービスに送信し、
前記実験の前記作業が実行されたときに、前記一つ以上のＡＰＩサーバにより、実行完了表示を前記フロントエンド実験ダッシュボードアプリケーションに返すことにより実施される、請求項１に記載の自動化された実験プラットホーム。
【請求項１９】
自動化された実験プラットホームであって、
一つ以上のプロセッサと、
一つ以上のメモリと、
一つ以上のデータ格納装置と、
前記一つ以上のプロセッサ上で実行されるときに、
グラフ内においてともにリンクされる、入力データセットと、実行モジュールと、生成されたセットと、を含むワークフローが生成されディスプレイされる視覚的統合開発環境を提供して、
出力データセットを生産するためにワークフローを実行するように、前記自動化された実験プラットホームを制御する、前記メモリおよびデータ格納装置のいずれか一つ以上に格納される、コンピュータ命令と、
ユーザコンピュータまたは他のプロセッサ制御されたユーザ装置上でそれぞれ駆動する多数のフロントエンド実験ダッシュボードアプリケーションを含むフロントエンドと、
一つ以上のＡＰＩサーバと、分散カタログサービスと、クラスタ管理サービスと、多数の実行クラスタノードとを含む、インターネットを介して前記フロントエンドに連結されるバックエンドと、を含み、
前記カタログサービスは、実行モジュールの実行インスタンスである、前に実行された、現在実行されている、また、以降実行される作業と関連する状態情報に対するリポジトリであり、
前記カタログサービスは、格納されたデータセット、実験、実行モジュール、および作業エンティティのバージョニング、また、それに対する検索インターフェイスを提供する、実験プラットホーム。
【請求項２０】
自動化された実験プラットホームであって、
一つ以上のプロセッサと、
一つ以上のメモリと、
一つ以上のデータ格納装置と、
前記一つ以上のプロセッサ上で実行されるときに、
グラフ内においてともにリンクされる、入力データセットと、実行モジュールと、生成されたセットと、を含むワークフローが生成されディスプレイされる視覚的統合開発環境を提供して、
出力データセットを生産するためにワークフローを実行するように、前記自動化された実験プラットホームを制御する、前記メモリおよびデータ格納装置のいずれか一つ以上に格納される、コンピュータ命令と、
ユーザコンピュータまたは他のプロセッサ制御されたユーザ装置上でそれぞれ駆動する多数のフロントエンド実験ダッシュボードアプリケーションを含むフロントエンドと、
一つ以上のＡＰＩサーバと、分散カタログサービスと、クラスタ管理サービスと、多数の実行クラスタノードとを含む、インターネットを介して前記フロントエンドに連結されるバックエンドと、を含み、
実験は、
フロントエンド実験ダッシュボードアプリケーションと相互作用するユーザにより、実験設計の視覚的表現を構築し、
前記カタログサービスにまだ存在していないデータセットおよび実行モジュールを前記一つ以上のＡＰＩサーバにより提供されるアップロードサービスを使用して前記カタログサービスにアップロードし、
前記実験設計を前記一つ以上のＡＰＩサーバにより提供される実験提出サービスに提出し、
前記実験設計を前記一つ以上のＡＰＩサーバにより実行モジュールインスタンスおよびデータセットにパースし、
前記一つ以上のＡＰＩサーバにより、前記データセットおよび実行モジュールがいずれも前記カタログサービス内に常駐することを保証し、
前記一つ以上のＡＰＩサーバにより、前記実験設計を検証し、
前記一つ以上のＡＰＩサーバにより、前記実行モジュールインスタンスに対する作業署名をコンピューティングし、
前記一つ以上のＡＰＩサーバおよびカタログサービスにより、前記カタログに既に格納された作業エントリーの作業署名とマッチしない作業署名に対する新たな作業エントリーを生成し、
前記一つ以上のＡＰＩサーバにより、前記新たに生成された作業エントリーに対する作業識別子を受信し、
前記一つ以上のＡＰＩサーバにより、前記実験を実行するために実行される必要があるかかる作業に対する作業識別子をクラスタ管理者構成要素に伝達し、
前記クラスタ管理者構成要素により、前記作業識別子に対応する作業に対する前記入力データがいずれも利用可能な場合に即時実行するために、またはデータ従属性が満たされた場合に後続実行のために、前記実行クラスタノードの中に前記伝達された作業識別子を分散し、
各作業の完了時に、前記作業を実行させた実行クラスタノードにより、実行により生成されるデータセット、標準エラー出力とＩ／Ｏ出力、および完了状態を格納のために前記カタログサービスに送信し、
前記実験の前記作業が実行されたときに、前記一つ以上のＡＰＩサーバにより、実行完了表示を前記フロントエンド実験ダッシュボードアプリケーションに返すことにより実施される、実験プラットホーム。
【発明の詳細な説明】
【技術分野】
【０００１】
関連出願の相互参照
本出願は、２０１３年１２月１７日付で提出された米国特許仮出願第６１／９１６，８８８号の利益を主張する。
【０００２】
本発明は、演算システムに関し、特に、ユーザが、データ駆動ワークフローを構築および実行することができるようにする視覚的統合開発環境を提供する自動化された実験プラットホームに関する。
【背景技術】
【０００３】
データ処理は、過去６０年間、主に、基本オペレーティングシステム機能およびハンドコードされたデータ処理ルーチンを使用するアドホックプログラム（ａｄ  ｈｏｃ  ｐｒｏｇｒａｍ）に依存することから、データベース管理システムと関連する各種の一般化されたデータ処理アプリケーションと、ユーティリティと、ツールとを含む、非常に様々な異なるタイプのさらに高いレベルの自動化されたデータ処理環境に進化して来た。しかしながら、かかる自動化されたデータ処理システムのほとんどは、データ処理手順、データモデル、データタイプ、および他のかかる制約の規定による制約を含む重要な制約と関連する。また、ほとんどの自動化されたシステムは、依然として特定のインターフェイスと関連する機能の特定タイプのデータを目指すために必要なデータ変換だけでなく、データ処理ステップを規定するために多量の問題特定コーディングを伴う。その結果、データ処理システムおよびツールを設計および開発する者だけでなく、それを使用する者もまた、新たなデータ処理システムおよび機能を模索し続ける。
【発明の概要】
【課題を解決するための手段】
【０００４】
本発明は、ユーザが、様々なタイプのデータ駆動ワークフローを構築および実行することができるようにする視覚的統合開発環境（「ＩＤＥ」）を提供する自動化された実験プラットホームに関する。自動化された実験プラットホームは、ＡＰＩサーバと、カタログと、クラスタ管理構成要素と、実行クラスタノードとを含むバックエンド構成要素を含む。ワークフローは、有向非巡回グラフとして視覚的に表現され、テキストにエンコードされる。ワークフローは、実行クラスタノードに実行のために分散される作業に変換される。
【図面の簡単な説明】
【０００５】
【図１】現在開示されている自動化された実験プラットホームのユーザにより生成される例示的なワークフローを図示している。
【図２】図１に図示されている実験の駆動に次いで、ユーザが図１における入力データセット１０２の代わりに新たな入力データセット２０２を使用することにより、実験をどのように修正できるかを示している。
【図３】図２に図示されている第２ワークフローのダッシュボード図を示している。
【図４】様々なタイプのコンピュータに対する一般的なアーキテクチャダイヤグラムを提供している。
【図５】インターネット連結されている分散コンピューティングシステムを示している。
【図６】クラウドコンピューティングを示している。
【図７】図１に図示されているものと類似のアーキテクチャを有する汎用コンピュータシステムのような汎用コンピュータシステムの一般化されたハードウェアおよびソフトウェア構成要素を示している。
【図８Ａ】２タイプの仮想マシンおよび仮想マシン実行環境を示している。
【図８Ｂ】２タイプの仮想マシンおよび仮想マシン実行環境を示している。
【図９】クライアントとサーバコンピュータとの間の電子通信を示している。
【図１０】ＲＥＳＴｆｕｌ  ＡＰＩにおけるリソースの役割を示している。
【図１１Ａ】ＲＥＳＴｆｕｌアプリケーションで使用されるＨＴＴＰアプリケーション階層プロトコルにより提供される四つの基本動詞、または動作を示している。
【図１１Ｂ】ＲＥＳＴｆｕｌアプリケーションで使用されるＨＴＴＰアプリケーション階層プロトコルにより提供される四つの基本動詞、または動作を示している。
【図１１Ｃ】ＲＥＳＴｆｕｌアプリケーションで使用されるＨＴＴＰアプリケーション階層プロトコルにより提供される四つの基本動詞、または動作を示している。
【図１１Ｄ】ＲＥＳＴｆｕｌアプリケーションで使用されるＨＴＴＰアプリケーション階層プロトコルにより提供される四つの基本動詞、または動作を示している。
【図１２】本発明が目指す科学的なワークフローシステムの主要構成要素を示している。
【図１３Ａ】比較的簡単な六つのノード実験ＤＡＧのＪＳＯＮエンコーディングを示している。
【図１３Ｂ】比較的簡単な六つのノード実験ＤＡＧのＪＳＯＮエンコーディングを示している。
【図１３Ｃ】比較的簡単な六つのノード実験ＤＡＧのＪＳＯＮエンコーディングを示している。
【図１３Ｄ】比較的簡単な六つのノード実験ＤＡＧのＪＳＯＮエンコーディングを示している。
【図１３Ｅ】比較的簡単な六つのノード実験ＤＡＧのＪＳＯＮエンコーディングを示している。
【図１４Ａ】カタログサービスに格納されるメタデータ（図１２における１２２６）を示している。
【図１４Ｂ】カタログサービスに格納されるメタデータ（図１２における１２２６）を示している。
【図１４Ｃ】カタログサービスに格納されるメタデータ（図１２における１２２６）を示している。
【図１４Ｄ】カタログサービスに格納されるメタデータ（図１２における１２２６）を示している。
【図１５Ａ】図１３Ｃ〜図１３Ｄを参照して前記論じられた実験ＤＡＧのような実験ＤＡＧに対応する実験レイアウトＤＡＧの一例を提供している。
【図１５Ｂ】図１３Ｃ〜図１３Ｄを参照して前記論じられた実験ＤＡＧのような実験ＤＡＧに対応する実験レイアウトＤＡＧの一例を提供している。
【図１５Ｃ】図１３Ｃ〜図１３Ｄを参照して前記論じられた実験ＤＡＧのような実験ＤＡＧに対応する実験レイアウトＤＡＧの一例を提供している。
【図１５Ｄ】図１３Ｃ〜図１３Ｄを参照して前記論じられた実験ＤＡＧのような実験ＤＡＧに対応する実験レイアウトＤＡＧの一例を提供している。
【図１５Ｅ】図１３Ｃ〜図１３Ｄを参照して前記論じられた実験ＤＡＧのような実験ＤＡＧに対応する実験レイアウトＤＡＧの一例を提供している。
【図１５Ｆ】図１３Ｃ〜図１３Ｄを参照して前記論じられた実験ＤＡＧのような実験ＤＡＧに対応する実験レイアウトＤＡＧの一例を提供している。
【図１５Ｇ】図１３Ｃ〜図１３Ｄを参照して前記論じられた実験ＤＡＧのような実験ＤＡＧに対応する実験レイアウトＤＡＧの一例を提供している。
【図１５Ｈ】図１３Ｃ〜図１３Ｄを参照して前記論じられた実験ＤＡＧのような実験ＤＡＧに対応する実験レイアウトＤＡＧの一例を提供している。
【図１５Ｉ】図１３Ｃ〜図１３Ｄを参照して前記論じられた実験ＤＡＧのような実験ＤＡＧに対応する実験レイアウトＤＡＧの一例を提供している。
【図１６Ａ】科学的なワークフローシステム内における実験設計および実行のプロセスを示している。
【図１６Ｂ】科学的なワークフローシステム内における実験設計および実行のプロセスを示している。
【図１６Ｃ】科学的なワークフローシステム内における実験設計および実行のプロセスを示している。
【図１６Ｄ】科学的なワークフローシステム内における実験設計および実行のプロセスを示している。
【図１６Ｅ】科学的なワークフローシステム内における実験設計および実行のプロセスを示している。
【図１６Ｆ】科学的なワークフローシステム内における実験設計および実行のプロセスを示している。
【図１６Ｇ】科学的なワークフローシステム内における実験設計および実行のプロセスを示している。
【図１６Ｈ】科学的なワークフローシステム内における実験設計および実行のプロセスを示している。
【図１６Ｉ】科学的なワークフローシステム内における実験設計および実行のプロセスを示している。
【図１７Ａ】実験ＤＡＧのサンプル視覚的表現および実験ＤＡＧの対応するＪＳＯＮエンコーディングを図示している。
【図１７Ｂ】実験ＤＡＧのサンプル視覚的表現および実験ＤＡＧの対応するＪＳＯＮエンコーディングを図示している。
【図１８Ａ】フロントエンド実験ダッシュボードアプリケーションを介してユーザによる実行のための実験の提出に次いで、科学的なワークフローシステムバックエンドのＡＰＩサーバ構成要素（図１６Ａにおける１６０８）により行われる活動を示している。
【図１８Ｂ】フロントエンド実験ダッシュボードアプリケーションを介してユーザによる実行のための実験の提出に次いで、科学的なワークフローシステムバックエンドのＡＰＩサーバ構成要素（図１６Ａにおける１６０８）により行われる活動を示している。
【図１８Ｃ】フロントエンド実験ダッシュボードアプリケーションを介してユーザによる実行のための実験の提出に次いで、科学的なワークフローシステムバックエンドのＡＰＩサーバ構成要素（図１６Ａにおける１６０８）により行われる活動を示している。
【図１８Ｄ】フロントエンド実験ダッシュボードアプリケーションを介してユーザによる実行のための実験の提出に次いで、科学的なワークフローシステムバックエンドのＡＰＩサーバ構成要素（図１６Ａにおける１６０８）により行われる活動を示している。
【図１８Ｅ】フロントエンド実験ダッシュボードアプリケーションを介してユーザによる実行のための実験の提出に次いで、科学的なワークフローシステムバックエンドのＡＰＩサーバ構成要素（図１６Ａにおける１６０８）により行われる活動を示している。
【図１８Ｆ】フロントエンド実験ダッシュボードアプリケーションを介してユーザによる実行のための実験の提出に次いで、科学的なワークフローシステムバックエンドのＡＰＩサーバ構成要素（図１６Ａにおける１６０８）により行われる活動を示している。
【図１８Ｇ】フロントエンド実験ダッシュボードアプリケーションを介してユーザによる実行のための実験の提出に次いで、科学的なワークフローシステムバックエンドのＡＰＩサーバ構成要素（図１６Ａにおける１６０８）により行われる活動を示している。
【図１９】実行のために実行クラスタノードに作業を分散するために科学的なワークフローシステムバックエンドのクラスタマネージャ構成要素上で実行されるルーチン「クラスタマネージャ」に対する制御流れ図を提供している。
【図２０】ルーチン「ピンガ」に対する制御流れ図を提供している。
【図２１】実行クラスタノード上で作業の実行を開始するルーチン「実行器」に対する制御流れ図を提供している。
【発明を実施するための形態】
【０００６】
本発明は、ユーザがデータ駆動実験を実施することができるようにする自動化された実験プラットホームに関する。実験は、複雑な演算タスクであり、視覚的ＩＤＥによりユーザによるワークフローとして組み立てられる。かかる視覚的ＩＤＥおよび自動化された実験プラットホームに基づくモデルは、一般的に、三つの基本エンティティを含む。：（１）入力データセット；（２）中間および出力データセットを含む生成されたデータセット；および（３）設定による実行モジュール。ワークフローがグラフィックで構築されると、自動化された実験プラットホームは、ワークフローを実行して出力データセットを生産する。設定された実行モジュールは、実験のランタイムインスタンスにより複数の作業に変換される。かかる作業は、自動化された実験プラットホームにより実行され監視され、自動化された実験プラットホームが含まれている同一のコンピュータシステム上で局所的に、若しくはリモートコンピュータシステム上で遠隔に実行され得る。換言すれば、ワークフローの実行は、分散コンピューティング構成要素にマッピングされ得る。特定の具現において、自動化された実験プラットホームは、それ自体が多数のコンピュータシステムを介して分散される。自動化された実験プラットホームは、多数の作業および多数のワークフローを並列に駆動することができ、データセットの冗長生成および作業の冗長実行を避けるために高度な論理を含み、必要に応じて、データセットは、自動化された実験プラットホームにより既に生成されカタログ化されている。
【０００７】
実行モジュールは、ｐｙｔｈｏｎ、ｊａｖａ（登録商標）、ｈｉｖｅ、ｍｙｓｑｌ（登録商標）、ｓｃａｌａ、ｓｐａｒｋ、および他のプログラミング言語を含む、非常に様々な他の言語のいずれかで記録され得る。自動化された実験プラットホームは、各種タイプの実行モジュールへのデータの入力に要するデータ変換を自動処理する。自動化された実行プラットホームは、実験の全体ヒストリーが再利用および再実行だけでなく、前の実験、実行モジュール、およびデータセットに基づく新たな実験の構築のためにユーザによりアクセスされ得るように、ワークフロー、実行モジュール、およびデータセットとして具現される相違するバージョンの実験を認識しカタログ化するバージョニング構成要素をさらに含む。
【０００８】
自動化された実験プラットホームは、ユーザがローカルマシンから、またローカルマシンに実行モジュールをアップロードおよびダウンロードするだけでなく、ローカルマシンから、またローカルマシンに、入力、中間、および出力データセットをアップロードおよびダウンロードすることができるようにするダッシュボード能力を提供する。また、ユーザは、ネームにより、実行モジュールおよびユーザデータセットと関連する一つ以上の属性に対する値により、また説明により実行モジュールおよびデータセットを検索することができる。既存のワークフローが複製され得、既存のワークフローの一部は、新たな実験のための新たなワークフローを生成するために抽出され修正され得る。自動化された実験プラットホームにより提供される視覚的ワークフロー生成施設は、ユーザが複雑なデータ駆動処理タスクを迅速に設計および実行することができるようにすることで、ユーザの生産性を大幅に増加させる。また、自動化された実験プラットホームは、実行の潜在的な重複および重複したデータを識別することができることから、ハンドコードされたり、より知能的ではない自動化されたデータ処理システムに比べて、相当な演算効率性が得られる。また、自動化された実験プラットホームは、ユーザが実験、ワークフロー、データセット、および実行モジュールを公開、共有、および協力的に生成するようにチームとして協動することができるようにする。
【０００９】
図１は現在開示されている自動化された実験プラットホームのユーザにより生成される例示的なワークフローを図示している。以下に論じられる図１、および図２〜図３はワークフローが自動化された実験プラットホームにより提供される視覚的ＩＤＥのグラフィックユーザインターフェイスを介してユーザにディスプレイされるようなワークフローを図示している。図１において、ワークフロー１００は、二つの入力データセット１０２および１０４を含む。第１入力データセット１０２は、示されている例において、モンテカルロシミュレーション（Ｍｏｎｔｅ‐Ｃａｒｌｏ  ｓｉｍｕｌａｔｉｏｎ）の結果セットからなる、円形１０８で表される、中間データセットを生産する第１実行モジュール１０６に入力される。次いで、中間データセット１０８は、出力データセット１１２を生産する第２実行モジュール１１０に入力される。第２入力データセット１０４は、第２中間データセット１１６を生成する第３実行モジュール１１４により処理され、この場合、大容量ファイルは、非常に多い数のモンテカルロシミュレーションの結果を継続する。第２中間データセット１１６は、入力データセット１０２とともに実行モジュール１０６に入力される。
【００１０】
図２に図示されているように、図１に図示されている実験の駆動に次いで、ユーザは、図１における入力データセット１０２の代わりに新たな入力データセット２０２を使用することにより実験を修正することができる。次いで、ユーザは、新たな出力データセット２０４を生産するために新たなワークフローを実行することができる。この場合において、第２入力データセット１０４および第３実行モジュール１１４に対する変更がないため、第２ワークフローの実行は、第３実行モジュール１１４への第２入力データセット１０４の再入力および第３実行モジュール１１４の実行を伴わない。その代りに、第３実行モジュールの実行により前に生産される中間データセット１１６は、前に生産された中間データセットのカタログから検索され、図２に図示されている第２ワークフローの駆動中に、第２実行モジュール１０６に入力され得る。三つの実行モジュール１０６，１１０，および１１４は、相違する言語でプログラミングされ得、相違する物理的コンピュータシステム上で駆動され得ることに注目する。また、自動化された実験プラットホームは、入力データセット１０２および１０４のタイプを決定し、必要な場合に、かかるデータセットがワークフローの実行中に入力される実行モジュール１０６および１１４により求められる適切な形式およびデータタイプを有するために、適切に修正されることを保証する責任があることに注目する。
【００１１】
図３は図２に図示されている第２ワークフローのダッシュボード図を示している。図３から分かるように、ワークフローは、ワークフローディスプレイパネル３０２において、ユーザに視覚的にディスプレイされる。また、ダッシュボードは、対応する入力および操作特徴３０４〜３０８を有する様々なツールだけでなく、入力および操作特徴を使用してユーザにより行われる各種タスクおよび動作と関連する情報をディスプレイする更なるディスプレイウィンドウ３１０および３１２を提供する。
【００１２】
二つの以下の小項目において、ハードウェアプラットホームおよびＲＥＳＴｆｕｌ通信の概要は、本発明が目指す自動化された実験プラットホームの説明された具現に使用される。最後の小項目は、「科学的なワークフローシステム」と称される、本発明が目指す自動化された実験プラットホームの具現について説明する。
【００１３】
コンピュータハードウェア、分散演算システム、および仮想化
用語「抽象化」は、どのようにしても、抽象的な発想または概念を意味または提示するように意図されない。演算抽象化は、つまり、物理的コンピュータハードウェア、データ格納装置、および通信システムを使用して具現される有形の物理的インターフェイスである。その代りに、用語「抽象化」は、現在の議論において、電子的にエンコードされたデータが交換され、プロセス実行が開始され、電子サービスが提供される定義されたインターフェイスを有する一つ以上の具体的に、有形に、物理的に具現されているコンピュータシステム内に圧縮される機能の論理レベルを指す。インターフェイスは、物理的ディスプレイ装置上にディスプレイされるグラフィックおよびテキストデータだけでなく、物理的コンピュータプロセッサを制御して各種のタスクおよび動作を行い、電子的に具現されたアプリケーションプログラミングインターフェイス（「ＡＰＩ」）および他の電子的に具現されているインターフェイスにより呼び出されるコンピュータプログラムと、ルーチンとを含むことができる。現代の科学技術に不慣れなもののうち現代のコンピュータの特定の様態を説明するために使用されるときに、用語「抽象的な」および「抽象化」を誤って解釈する傾向がある。例えば、一つの頻繁に直面する論点は、演算システムが、抽象化、機能的階層、およびインターフェイスの面から説明されるため、演算システムが物理的マシンまたは装置と多少相違するというものである。かかる主張は、根拠のないものである。ただし、一つは、複雑なコンピュータ技術の物理的、機械的性質を理解するために、それぞれの電源装置からコンピュータシステムまたはコンピュータシステムのグループを分離する必要がある。また、一つの頻繁に直面する記述は、演算技術を「単にソフトウェア」であって、機械または装置ではないものに特定するものである。ソフトウェアは、本質的に光ディスク上にまたは電子機械の大容量格納装置内にファイルに順に格納されるコンピュータプログラムまたはデジタルエンコードされたコンピュータ命令の出力のような一連のエンコードされた符号である。ソフトウェアは、単独では何も行うことができない。いわゆる「ソフトウェア具現」機能が提供されるのは、エンコードされたコンピュータ命令がコンピュータシステム内の電子メモリにロードされ、物理的プロセッサ上で実行される場合のみである。デジタルエンコードされたコンピュータ命令は、内燃機関内のカムシャフト制御システムほど必須で物理的な、プロセッサ制御機械および装置の必須で物理的な制御構成要素である。マルチクラウド集成、クラウドコンピューティングサービス、仮想マシンコンテナおよび仮想マシン、通信インターフェイス、および以下に論じられる多数の異なるトピックは、物理的、電子光学機械式コンピュータシステムの有形の物理的構成要素である。
【００１４】
図４は様々なタイプのコンピュータに対する一般的なアーキテクチャダイヤグラムを提供している。例えば、クラウドコンピューティング施設内のコンピュータは、図４に図示されている一般的なアーキテクチャダイヤグラムにより説明され得る。コンピュータシステムは、一つまたは多数の中央処理装置（「ＣＰＵ」）４０２〜４０５、ＣＰＵ／メモリザブシステムバス４１０または多数のバスによりＣＰＵと相互連結される一つ以上の電子メモリ４０８、ＣＰＵ／メモリザブシステムバス４１０を更なるバス４１４および４１６と相互連結する第１ブリッジ４１２、または多数の高速直列相互連結を含む他のタイプの高速相互連結メディアを含む。かかるバスまたは直列相互連結は、順に、グラフィックプロセッサ４１８のような特殊化されたプロセッサ、および各種の相違するタイプの大容量格納装置４２８、電子ディスプレイ、入力装置、および他のかかる構成要素、サブ構成要素、および演算リソースにアクセスを提供するコントローラ４２７のような多数のコントローラ４２２〜４２７または高速シリアルリンクと相互連結される一つ以上の更なるブリッジ４２０によりＣＰＵおよびメモリを連結する。コンピュータ読み取り可能データ格納装置は、光および電磁気ディスク、電子メモリ、および他の物理的データ格納装置を含むことに注目すべきである。現代の科学および技術に慣れている者は、電磁放射線および伝播信号が後続検索のためにデータを格納せず、最も簡単なルーチンをエンコードするために必要なものよりはるかに少ない情報である１マイル当たり１バイト以下の情報のみを一時的に「格納」できることを理解する。
【００１５】
勿論、相違するタイプの階層キャッシュメモリを含む相違するメモリの数、プロセッサおよび前記プロセッサと異なるシステム構成要素の連結性の数、内部通信バスおよびシリアルリンクの数、および他の方式において互いに異なる多数の相違するタイプのコンピュータシステムアーキテクチャがある。しかしながら、コンピュータシステムは、一般的にメモリから命令を取り出し、一つ以上のプロセッサで命令を実行することにより格納されたプログラムを実行する。コンピュータシステムは、パーソナルコンピュータ（「ＰＣ」）のような汎用コンピュータシステム、様々なタイプのサーバおよびワークステーション、およびハイヤーエンドメインフレームコンピュータを含むが、また、データ格納システム、通信ルータ、ネットワークノード、タブレットコンピュータ、および携帯電話を含む多量の様々なタイプの特殊目的コンピューティング装置を含み得る。
【００１６】
図５はインターネット連結された分散コンピュータシステムを示している。通信およびネットワーキング技術は、容量およびアクセス性が進化し、演算帯域幅、データ格納容量、および様々なタイプのコンピュータシステムの他の能力および容量が急速に増加し続けることに伴い、ほとんどの現代コンピューティングは、現在、ローカルネットワーク、ワイドエリアネットワーク、無線通信、およびインターネットを介して相互連結される大規模分散システムおよびコンピュータを一般的に伴う。図５は多数のＰＣ５０２〜５０５、大規模データ格納システム５１２を有するハイエンド分散メインフレームシステム５１０、および多数のラックマウントサーバまたはブレードサーバを有する大規模コンピュータセンター５１４がインターネット５１６をともに含む各種通信およびネットワーキングシステムを介していずれも相互連結される通常の分散システムを図示している。かかる分散コンピューティングシステムは、機能性の様々なアレイを提供する。例えば、ホームオフィスに座っているＰＣユーザは、全世界に数十万個の相違するウェブサーバにより提供される数億個の相違するウェブサイトにアクセスすることができ、複雑な演算タスクを駆動するためにリモートコンピュータ施設から高い演算帯域幅コンピュータサービスにアクセスすることができる。
【００１７】
図６はクラウドコンピューティングを示している。近年開発されたクラウドコンピューティングパラダイムにおいて、コンピュータサイクルおよびデータ格納施設は、クラウドコンピューティング提供者により組織および個人に提供される。また、さらに大きい組織は、パブリッククラウドコンピューティングサービス提供者により提供されるコンピュータサービスに加入する代りに、若しくは加入することに加え、プライベートクラウドコンピューティング施設を確立することを選択することができる。図６において、組織に対するシステム管理者は、ＰＣ６０２を使用して、ローカルネットワーク６０６およびプライベートクラウドインターフェイス６０８を介して組織のプライベートクラウド６０４にアクセスし、また、インターネット６１０を介してパブリッククラウドサービスインターフェイス６１４によりパブリッククラウド６１２にアクセスする。管理者は、プライベートクラウド６０４またはパブリッククラウド６１２のいずれか一つの場合に、多数の相違するタイプの演算タスクのいずれかを行うために仮想コンピュータシステムおよびさらには全体仮想データセンターを構成し、仮想コンピュータシステムおよび仮想データセンター上でアプリケーションプログラムの実行を開始することができる。一例として、小規模組織は、遠隔ユーザシステム６１６上で組織の電子商取引ウェブページを見ているユーザのような、組織の遠隔顧客にパブリッククラウドにより電子商取引インターフェイスを提供するためにウェブサーバを実行するパブリッククラウド内に仮想データセンターを構成し、駆動させることができる。
【００１８】
クラウドコンピューティング施設は、ユーティリティ会社が消費者に電力および水を提供するように、多い演算帯域幅およびデータ格納サービスを提供するように意図される。クラウドコンピューティングは、社内データセンターを購入、管理、および保持するためのリソースなしに小規模組織に相当な利点を提供する。かかる組織は、ピーク演算帯域幅およびデータ格納需要を処理するために物理的データセンター内に十分なコンピュータシステムを購入するよりは、むしろ演算帯域幅およびデータ格納要求を追跡するためにパブリッククラウド内にその仮想データセンターから仮想コンピュータシステムを動的に追加および除去することができる。また、小規模組織は、情報技術専門家を雇って定期的に再教育すること、およびオペレーティングシステムおよびデータベース管理システムのアップグレードのために費用を支払い続けることを含む物理的コンピュータシステムの保持および管理に対するオーバーヘッドを完全に避けることができる。また、クラウドコンピューティングインターフェイスは、仮想コンピューティング施設の容易且つ簡単な構成、構成可能なアプリケーションおよびオペレーティングシステムのタイプの柔軟性、および単一組織により使用されるプライベートクラウドコンピューティング施設の所有者および管理者にも有用な他の機能を許容する。
【００１９】
図７は図１に図示されているものと類似のアーキテクチャを有する汎用コンピュータシステムのような汎用コンピュータシステムの一般化されたハードウェアおよびソフトウェア構成要素を示している。コンピュータシステム７００は、三つの基本階層を含むものと見なされることが時々ある。：（１）ハードウェア階層またはレベル７０２；（２）オペレーティングシステム階層またはレベル７０４；および（３）アプリケーションプログラム階層またはレベル７０６。ハードウェア階層７０２は、一つ以上のプロセッサ７０８と、システムメモリ７１０と、各種の相違するタイプの入出力（「Ｉ／О」）装置７１０および７１２と、大容量格納装置７１４とを含む。勿論、ハードウェアレベルはまた電源装置、内部通信リンクおよびバス、特殊化された集積回路、多数の相違するタイプのプロセッサ制御またはマイクロプロセッサ制御周辺装置およびコントローラ、および多数の異なる構成要素を含む多数の異なる構成要素を含む。オペレーティングシステム７０４は、一般的に１セットの非特権コンピュータ命令７１８、１セットの特権コンピュータ命令７２０、１セットの非特権レジスタおよびメモリアドレス７２２、および１セットの特権レジスタおよびメモリアドレス７２４を含む低レベルオペレーティングシステムおよびハードウェアインターフェイス７１６によりハードウェアレベル７０２に接続する。一般的に、オペレーティングシステムは、オペレーティングシステムを介してアプリケーションプログラムに提供される実行環境内で実行されるアプリケーションプログラム７３２〜７３６に、オペレーティングシステムインターフェイス７３０として非特権命令、非特権レジスタ、および非特権メモリアドレス７２６、およびシステムコールインターフェイス７２８を露出させる。オペレーティングシステムは、単独で、特権命令、特権レジスタ、および特権メモリアドレスをアクセスする。特権命令、特権レジスタ、および特権メモリアドレスに対するアクセスを有することにより、オペレーティングシステムは、アプリケーションプログラムおよび他のさらに高いレベルの演算エンティティが互いの実行を邪魔することができず、システム動作に有害な影響を及ぼし得る方式にコンピュータシステムの全体的な状態を変化させることができないことを保証することができる。オペレーティングシステムは、スケジューラ７４２、メモリ管理７４４、ファイルシステム７４６、デバイスドライバ７４８、および多数の異なる構成要素およびモジュールを含む、多数の内部構成要素およびモジュールを含む。ある程度、現代のオペレーティングシステムは、オペレーティングシステムにより各種電子メモリおよび大容量格納装置にマッピングされる別の大規模線形メモリアドレス空間をそれぞれのアプリケーションプログラムおよび他の演算エンティティに提供する仮想メモリを含む、ハードウェアレベル以上の多くのレベルの抽象化を提供する。スケジューラは、アプリケーションプログラムに完全に充実している仮想スタンドアロンシステムを各アプリケーションプログラムに提供することにより、様々な相違するアプリケーションプログラムおよびさらに高いレベルの演算エンティティのインタリーブされ���実行を調整する。アプリケーションプログラムの観点から、アプリケーションプログラムは、他のアプリケーションプログラムおよびさらに高いレベルの演算エンティティとプロセッサリソースおよび他のシステムリソースを共有する必要性に対する心配なく実行し続ける。デバイスドライバは、アプリケーションプログラムが通信ネットワーク、大容量格納装置、および他のＩ／О装置およびサブシステムに、また、それからデータを転送および受信するためのシステムコールインターフェイスを利用可能にし得るハードウェア構成要素動作の詳細を抽象化する。ファイルシステム７３６は、高いレベルのアクセスが容易なファイルシステムインターフェイスとして、大容量格納装置およびメモリリソースの抽象化を容易にする。したがって、オペレーティングシステムの開発および進化は、アプリケーションプログラムおよび他のさらに高いレベルの演算エンティティに対する一種の多面的な仮想実行環境の発生をもたらした。
【００２０】
オペレーティングシステムにより提供される実行環境は、コンピュータシステム内で相当成功的なレベルの抽象化であることが証明されているが、それにもかかわらず、オペレーティングシステムにより提供されたレベルの抽象化は、アプリケーションプログラムおよび他のさらに高いレベルの演算エンティティの開発者およびユーザには、難題および挑戦課題と関連する。一つの難題は、各種の相違するタイプのコンピュータハードウェア内で駆動する多数の相違するオペレーティングシステムが存在するという事実から生じる。多数の場合において、大衆向けのアプリケーションプログラムおよび演算システムは、利用可能なオペレーティングシステムのサブセット上でのみ駆動するように開発されており、そのため、オペレーティングシステムが駆動されるように設計される各種の相違するタイプのコンピュータシステムのサブセット内でのみ実行され得る。時々、アプリケーションプログラムまたは他の演算システムが更なるオペレーティングシステムに移植される場合にも、アプリケーションプログラムまたは他の演算システムは、それにもかかわらずアプリケーションプログラムまたは他の演算システムが最初から目標にしたオペレーティングシステム上でより効率よく駆動され得る。他の難題は、コンピュータシステムの益々分散される特性から生じる。分散オペレーティングシステムは、相当な研究および開発努力の対象であるが、多数の大衆向けのオペレーティングシステムは、主に単一コンピュータシステム上での実行のために設計される。多数の場合において、高可用性、耐欠陥性、およびロードバランシングの目的のために分散コンピューティングシステムの相違するコンピュータシステム同士の間に、リアルタイムで、アプリケーションプログラムを移動させることは困難である。問題は、相違するタイプのオペレーティングシステムを駆動する相違するタイプのハードウェアおよび装置を含む異種の分散コンピューティングシステムにおいてさらに多い。オペレーティングシステムは、特定の旧アプリケーションプログラムおよび他の演算エンティティが大規模分散システムで管理する特に困難な互換性問題を発生させることにより、それが目標とするより最新バージョンの運営システムと互換されないこともあるため、進化され続ける。
【００２１】
かかる理由の全体に対して、「仮想マシン」と称される、さらに高いレベルの抽象化は、前記論じられた互換性問題を含む、伝統的なコンピューティングシステムと関連する多数の難題および課題を処理するためにコンピュータハードウェアをさらに抽象化するように開発および進化されて来た。図８Ａ〜図８Ｂは、２タイプの仮想マシンおよび仮想マシン実行環境を示している。図８Ａ〜図８Ｂは、図７で使用されたものと同一の例示規則を使用する。図８Ａは第１タイプの仮想を図示している。図８Ａにおけるコンピュータシステム８００は、図７に図示されているハードウェア階層７０２と同一のハードウェア階層８０２を含む。しかしながら、図７と同様に、ハードウェア階層のすぐ上にオペレーティングシステム階層を提供するよりは、むしろ図８Ａに示されている仮想化されたコンピュータ環境は、図７におけるインターフェイス７１６と同等な仮想化階層／ハードウェア階層インターフェイス８０６によりハードウェアに接続する仮想化階層８０４を備える。仮想化階層は、仮想マシン階層８１２における仮想化階層の上で実行する、仮想マシン８１０のような多数の仮想マシンにハードウェア類似インターフェイス８０８を提供する。各仮想マシンは、仮想マシン８１０内にともにパッケージングされるアプリケーション８１４およびゲストオペレーティングシステム８１６のような「ゲストオペレーティングシステム」と称されるオペレーティングシステムとともにパッケージングされる一つ以上のアプリケーションプログラムまたは他のさらに高いレベルの演算エンティティを含む。したがって、各仮想マシンは、図７に図示されている汎用コンピュータシステムにおけるオペレーティングシステム階層７０４およびアプリケーションプログラム階層７０６と同等である。仮想マシン内の各ゲストオペレーティングシステムは、実際、ハードウェアインターフェイス８０６よりはむしろ仮想化階層インターフェイス８０８に接続する。仮想化階層は、ハードウェアリソースを仮想マシン内の各ゲストオペレーティングシステムが接続する抽象の仮想ハードウェアに区画する。仮想マシン内のゲストオペレーティングシステムは、一般的に、仮想化階層を認知することができず、それが本当にハードウェアインターフェイスを直接アクセスしたように動作する。仮想化階層は、仮想環境内で現在実行している仮想マシンそれぞれが公正な割り当ての基底ハードウェアリソースを受信することおよびすべての仮想マシンが実行を進行するに十分なリソースを受信することを保証する。仮想化階層インターフェイス８０８は、相違するゲストオペレーティングシステムに応じて異なり得る。例えば、仮想化階層は、一般的に、様々な相違するタイプのコンピュータハードウェアのために仮想ハードウェアインターフェイスを提供することができる。これは一例であって、特定のコンピュータアーキテクチャのために設計されるゲストオペレーティングシステムを含む仮想マシンが相違するアーキテクチャのハードウェア上で駆動するようにすることができる。仮想マシンの数は、物理的プロセッサの数またはさらにはプロセッサの多数の数と同等な必要はない。
【００２２】
仮想化階層は、仮想マシンそれぞれが実行する仮想プロセッサを生成するようにハードウェア階層における物理的プロセッサを仮想化する仮想マシンモニタモジュール８１８（「ＶＭＭ」）を含む。実行の効率性のために、仮想化階層は、仮想マシンが非特権命令を直接実行させ、また非特権レジスタおよびメモリを直接アクセスすることができるようにするように試みる。しかしながら、仮想マシン内のゲストオペレーティングシステムが仮想化階層インターフェイス８０８により仮想特権命令、仮想特権レジスタ、および仮想特権メモリをアクセスする際に、アクセスは、特権リソースをシミュレートまたはエミュレートするように仮想化階層コードの実行をもたらす。仮想化階層は、実行中の仮想マシン（「ＶＭカーネル」）の代りにメモリ、通信、およびデータ格納機械リソースを管理するカーネルモジュール８２０をさらに含む。ＶＭカーネルは、例えば、ハードウェアレベルの仮想メモリ施設がメモリアクセスを処理するために使用されるように各仮想マシン上で陰のページテーブルを保持する。ＶＭカーネルは、仮想通信およびデータ格納装置を具現するルーチンだけでなく、基底ハードウェア通信およびデータ格納装置の動作を直接制御するデバイスドライバをさらに含む。同様に、ＶＭカーネルは、キーボード、光ディスクドライブ、および他のかかる装置を含む各種他のタイプのＩ／О装置を仮想化する。仮想マシンが完全で十分な機能の仮想ハードウェア階層内でそれぞれ行うように、仮想化階層は、必須にオペレーティングシステムがアプリケーションプログラムの実行をスケジューリングすることのように仮想マシンの実行をスケジューリングする。
【００２３】
図８Ｂは第２タイプの仮想化を図示している。図８Ｂにおいて、コンピュータシステム８４０は、図７に図示されているハードウェア階層７０２と同一のハードウェア階層８４２と、ソフトウェア階層８４４とを含む。いくつかのアプリケーションプログラム８４６および８４８は、オペレーティングシステムにより提供される実行環境で駆動することに図示される。また、仮想化階層８５０は、コンピュータ８４０にも提供されるが、図８Ａを参照して論じられる仮想化階層８０４とは異なり、仮想化階層８５０は、「ホストＯＳ」と称されるオペレーティングシステム８４４上に階層化され、オペレーティングシステムにより提供された機能だけでなく、ハードウェアをアクセスするようにオペレーティングシステムインターフェイスを使用する。仮想化階層８５０は、主に図８Ａにおけるハードウェア類似インターフェイス８０８と類似のハードウェア類似インターフェイス８５２と、ＶＭＭとを含む。図７におけるインターフェイス７１６と同等な仮想化階層／ハードウェア階層インターフェイス８５２は、ゲストオペレーティングシステムとともにパッケージングされる一つ以上のアプリケーションプログラムまたは他のさらに高いレベルの演算エンティティをそれぞれ含む、多数の仮想マシン８５６〜８５８のための実行環境を提供する。
【００２４】
図８Ａ〜図８Ｂにおいて、階層は、例示の明確性のために多少簡略化される。例えば、仮想化階層８５０の部分は、仮想化階層によるハードウェアアクセスを容易にするようにホストオペレーティングシステムに含まれる特殊化されたドライバのようなホストオペレーティングシステムカーネル内に常駐することができる。
【００２５】
仮想ハードウェア階層、仮想化階層、およびゲストオペレーティングシステムは、電子メモリ、大容量格納装置、光ディスク、磁気ディスク、および他のかかる装置を含む、物理的データ格納装置に格納されるコンピュータ命令により具現されるすべての物理的エンティティであることに注目すべきである。用語「仮想」は、いかなる方式でも、仮想ハードウェア階層、仮想化階層、およびゲストオペレーティングシステムが抽象的または無形のものを意味しない。仮想ハードウェア階層、仮想化階層、およびゲストオペレーティングシステムは物理的コンピュータシステムの物理的プロセッサ上で実行され、電子メモリおよび大容量格納装置を含む物理的装置の物理的状態を変更する動作を含む、物理的コンピュータシステムの動作を制御する。それは、電源装置、コントローラ、プロセッサ、バス、およびデータ格納装置のようなコンピュータシステムの任意の他の構成要素のように物理的で有形である。
【００２６】
ＲＥＳＴｆｕｌ  ＡＰＩ
コンピュータシステム同士の電子通信は、一般的に、クライアントコンピュータからサーバコンピュータへまたサーバコンピュータからクライアントコンピュータへ転送されるデータグラムと称される情報のパケットを含む。多数の場合において、コンピュータシステム同士の通信は、通常情報転送のためにアプリケーション階層プロトコルを使用する比較的高いレベルのアプリケーションプログラムから見られる。しかしながら、アプリケーション階層プロトコルは、トランスポート階層、インターネット階層、およびリンク階層を含む更なる階層の上に具現される。かかる階層は、通常、コンピュータシステム内の相違するレベルで具現される。各階層は、コンピュータシステムの対応する階層同士のデータ転送のためのプロトコルと関連する。かかるプロトコルの階層は、通常「プロトコルスタック」と称される。図９において、通常のプロトコルスタック９３０の表現は、相互連結されたサーバおよびクライアントコンピュータ９０４および９０２の下に図示される。階層は、アプリケーション階層９３４と関連する階層番号「１」９３２のような階層番号と関連する。かかる同一の階層番号は、アプリケーション階層プロトコルを介してサーバコンピュータのアプリケーション／サービス階層９１４とクライアントコンピュータのアプリケーション階層９１２の相互連結を示す破線９３６と関連する階層番号「１」９３２のような、サーバコンピュータ９０４とクライアントコンピュータ９０２の相互連結の描写に使用される。破線９３６は、図９におけるアプリケーション階層プロトコルを介する相互連結を示すが、これは、相互連結が物理的と言うよりはむしろ論理的であるためである。破線９３８は、トランスポート階層を介するクライアントおよびサーバコンピュータのオペレーティングシステム階層の論理的相互連結を示している。破線９４０は、インターネット階層プロトコルを介して二つのコンピュータシステムのオペレーティングシステムの論理的相互連結を示している。最後に、リンク９０６および９０８およびクラウド９１０は、クライアントコンピュータからサーバコンピュータへまたサーバコンピュータからクライアントコンピュータへデータを物理的に転送する物理的通信媒体および構成要素をともに示している。かかる物理的通信構成要素および媒体は、リンク階層プロトコルに応じてデータを転送する。図９において、プロトコルスタックを示す表９３０と整列される第２表９４２は、それぞれの相違するプロトコル階層のために使用され得る例示的プロトコルを含む。ハイパーテキストトランスファープロトコル（「ＨＴＴＰ」）は、アプリケーション階層プロトコル９４４として使用され得、転送制御プロトコル（「ＴＣＰ」）９４６は、トランスポート階層プロトコルとして使用され得、インターネットプロトコル９４８（「ＩＰ」）は、インターネット階層プロトコルとして使用され得、ローカルイーサーネット（Ｅｔｈｅｒｎｅｔ（登録商標））によりインターネットに相互連結されるコンピュータシステムの場合に、Ｅｔｈｅｒｎｅｔ／ＩＥＥＥ  ８０２．３ｕプロトコル９５０は、コンピュータシステムからインターネットの複雑な通信構成要素で情報を転送および受信する���めに使用され得る。インターネットを示すクラウド９１０内で、多数の更なるタイプのプロトコルがクライアントコンピュータとサーバコンピュータとの間にデータを転送するために使用され得る。
【００２７】
ＨＴＴＰプロトコルを介して、クライアントコンピュータからサーバコンピュータへのメッセージの転送を考慮する。アプリケーションプログラムは、一般的に、システムコールをオペレーティングシステムに行い、システムコールには、データが転送されるという受領の表示だけでなく、データを含むバッファに対する参照をも含む。データおよび他の情報は、データグラム９５２のような一つ以上のＨＴＴＰデータグラムに、ともにパッケージングされる。データグラムは、一般的に、ヘッダ９５４だけでなく、メモリのブロック内にバイトのシーケンスとしてエンコードされるデータ９５６をも含むことができる。ヘッダ９５４は、一般的に、多数のバイトエンコードされたフィールドからなる記録である。アプリケーション階層システムコールに対するアプリケーションプログラムによる呼び出しは、図９において実線垂直矢印９５８で表される。オペレーティングシステムは、ＴＣＰのようなトランスポート階層プロトコルを採用し、アプリケーション階層メッセージをともに示す一つ以上のアプリケーション階層データグラムを転送する。一般的に、アプリケーション階層メッセージが所定のしきい値のバイトを超える場合、メッセージは、二つ以上のトランスポート階層メッセージとして転送される。トランスポート階層メッセージ９６０のそれぞれは、トランスポート階層メッセージヘッダ９６２と、アプリケーション階層データグラム９５２とを含む。トランスポート階層ヘッダは、他のもののうち、一連のアプリケーション階層データグラムが単一アプリケーション階層メッセージに再度組み立てられるようにすることができるシーケンス番号を含む。トランスポート階層プロトコルは、基底ネットワークおよび他の通信ザブシステムとは独立して、エンドツーエンドメッセージ転送に責任を持ち、前記論じられたような誤り制御、セグメント化、流れ制御、輻輳制御、アプリケーションアドレシング、および信頼性のあるエンドツーエンドメッセージ転送の他の様態とさらに関係する。次いで、トランスポート階層データグラムは、オペレーティングシステム内のシステムコールによりインターネット階層に伝達され、インターネット階層ヘッダ９６６およびトランスポート階層データグラムをそれぞれ含むインターネット階層データグラム９６４内に内蔵される。プロトコルスタックのインターネット階層は、インターネットをともに含む潜在的に多数の相違する通信媒体およびザブシステムを介してデータグラムを送信することに関係する。これは、複雑な通信システムを介して意図した宛先へメッセージをルーティングすることを伴う。インターネット階層は、メッセージに対する送信コンピュータおよび受信コンピュータの両方に「ＩＰアドレス」と知られている固有のアドレスを割り当てること、およびインターネットを介して受信コンピュータにメッセージをルーティングすることに関係する。最後に、インターネット階層データグラムは、オペレーティングシステムにより、リンク階層ヘッダ９７２を含み、一般的に、インターネット階層データグラムの末端に添付される更なるバイト９７４の番号を含むリンク階層データグラム９７０にインターネット階層データグラム９６４を内蔵するネットワークインターフェイスコントローラ（「ＮＩＣ」）のような通信ハードウェアに転送される。リンク階層ヘッダは、衝突制御および誤り制御情報だけでなく、ローカルネットワークアドレスをも含む。リンク階層パケットまたはデータグラム９７０は、それぞれのプロトコルスタックの階層により導入される情報だけでなく、アプリケーション階層プロトコルによりソースコンピュータから宛先コンピュータに転送される実際のデータをも含むバイトのシーケンスである。
【００２８】
次いで、図１０をはじめとして、ウェブサービスＡＰＩに対するＲＥＳＴｆｕｌ接近について説明する。図１０はＲＥＳＴｆｕｌ  ＡＰＩにおけるリソースの役割を示している。図１０において、また、後続図面において、リモートクライアント１００２がＨＴＴＰプロトコル１００６を介して一つ以上のサーバコンピュータにより提供されるサービス１００４と相互連結され通信することが図示されている。多数のＲＥＳＴｆｕｌ  ＡＰＩは、ＨＴＴＰプロトコルに基づく。したがって、以下の議論におけるアプリケーション階層に焦点を合わせる。しかしながら、図１０を参照して前記論じられているように、リモートクライアント１００２および一つ以上のサーバコンピュータにより提供されるサービス１００４は、事実上、クライアントコンピュータおよびサーバコンピュータのアプリケーション、オペレーティングシステム、およびハードウェア階層で具現されるプロトコルスタックにおける最も高いレベルの階層のＨＴＴＰプロトコルにより様々なタイプの通信媒体および通信ザブシステムと相互連結されるアプリケーション、オペレーティングシステム、およびハードウェア階層を有する物理的システムである。サービスは、前の部分で前記論じられたように、一つ以上のサーバコンピュータにより提供され得る。一例として、多数のサーバは、様々なレベルの中間サーバおよびエンドポイントサーバとして階層的に組織化され得る。しかしながら、サービスをともに提供するサーバの全体集合は、以下にさらに論じられるように、統一リソース識別子（「ＵＲＩ」）に含まれるドメインネームによりアドレス化される。ＲＥＳＴｆｕｌ  ＡＰＩは、対応するＵＲＩによりそれぞれ固有に識別されるリソース上でＨＴＴＰプロトコルにより提供される小さいセットの動詞、または動作に基づく。リソースは、ドメインをともに含む一つ以上のサーバ上に格納される情報である論理的エンティティである。ＵＲＩは、リソースの固有の名である。インターネットに連結されるサーバ上に情報が格納されるリソースは、かかる情報の適切な認可および権限によりインターネットにまた連結される任意のクライアントコンピュータによりアクセスされ得るようにする固有のＵＲＩを有する。したがって、ＵＲＩは、全世界の固有の識別子であり、全世界にわたりサーバコンピュータ上にリソースを規定するために使用され得る。リソースは、デジタルエンコードされた情報により説明され特定され得る者、デジタルエンコードされた文献、組織、および他のかかるエンティティを含む任意の論理的エンティティであり得る。したがって、リソースは、論理的エンティティである。リソースを説明し、サーバコンピュータからクライアントコンピュータによりアクセスされ得るデジタルエンコードされた情報は、対応するリソースの「表現」と称される。一例として、リソースがウェブページである場合、リソースの表現は、リソースのハイパーテキストマークアップ言語（「ＨＴＭＬ」）エンコードであり得る。他の例として、リソースが会社の従業員である場合、リソースの表現は、従業員の姓名、住所、電話番号、職責、経歴、および他のかかる情報のような従業員を特定する情報を格納する一つ以上のフィールドをそれぞれ含む一つ以上の記録であり得る。
【００２９】
図１０に図示されている例において、ウェップサーバ１００４は、ＨＴＴＰプロトコル１００６に基づくＲＥＳＴｆｕｌ  ＡＰＩおよびサービスのクライアントがアクメ社（Ａｃｍｅ  Ｃｏｍｐａｎｙ）の顧客により行われる注文および顧客に関する情報にアクセスすることができるようにする階層的に組織化されたセットのリソース１００８を提供する。このサービスは、アクメ社自体により、または第３者の情報提供者により提供され得る。顧客および注文情報の両方は、ＵＲＩ「ＨＴＴＰ：／／ｗｗｗ．ａｃｍｅ．ｃｏｍ／ｃｕｓｔｏｍｅｒｉｎｆｏ」１０１２と関連する顧客情報リソース１０１０により一括して表される。以下にさらに論じられるように、この単一ＵＲＩおよびＨＴＴＰプロトコルは、サービス１００４により格納および分散される特定タイプの顧客および注文情報のいずれかにアクセスするようにリモートクライアントコンピュータに十分な情報をともに提供する。顧客情報リソース１０１０は、多数の従属リソースを示す。かかる従属リソースは、アクメ社のそれぞれの顧客に対して、顧客リソース１０１４のような顧客リソースを含む。顧客リソース１０１４〜１０１８は、何れも単一ＵＲＩ「ＨＴＴＰ：／／ｗｗｗ．ａｃｍｅ．ｃｏｍ／ｃｕｓｔｏｍｅｒｉｎｆｏ／ｃｕｓｔｏｍｅｒｓ」１０２０により一括して名づけられたり規定される。顧客リソース１０１４のような個別顧客リソースは、顧客識別子番号と関連し、顧客リソース１０１４で表される顧客に対する顧客識別子「３６１」を含むＵＲＩ「ＨＴＴＰ：／／ｗｗｗ．ａｃｍｅ．ｃｏｍ／ｃｕｓｔｏｍｅｒｉｎｆｏ／ｃｕｓｔｏｍｅｒｓ／３６１」１０２２のような顧客リソース規定ＵＲＩによりそれぞれ個別にアドレス化することができる。各顧客は、一つ以上の注文と論理的に関連し得る。例えば、顧客リソース１０１４で表される顧客は、注文リソースによりそれぞれ表される三つの相違する注文１０２４〜１０２６と関連する。注文は、いずれも単一ＵＲＩ「ＨＴＴＰ：／／ｗｗｗ．ａｃｍｅ．ｃｏｍ／ｃｕｓｔｏｍｅｒｉｎｆｏ／ｏｒｄｅｒｓ」１０３６により一括して規定されたり名づけられる。顧客と関連する注文は、リソース１０１４で表され、注文リソース１０２４〜１０２６で表される注文は、ＵＲＩ「ＨＴＴＰ：／／ｗｗｗ．ａｃｍｅ．ｃｏｍ／ｃｕｓｔｏｍｅｒｉｎｆｏ／ｃｕｓｔｏｍｅｒｓ／３６１／ｏｒｄｅｒｓ」１０３８により一括して規定され得る。注文リソース１０２４で表される注文のような特定の注文は、ＵＲＩ「ＨＴＴＰ：／／ｗｗｗ．ａｃｍｅ．ｃｏｍ／ｃｕｓｔｏｍｅｒｉｎｆｏ／ｃｕｓｔｏｍｅｒｓ／３６１／ｏｒｄｅｒｓ／１」１０４０のようなその注文と関連する固有のＵＲＩにより規定され得、ここで、最後の「１」は、顧客識別子「３６１」により識別される特定の顧客に対応する注文のセット内における特定の注文を規定する注文番号である。
【００３０】
ある意味で、ＵＲＩは、コンピュータオペレーティングシステムにより提供されるファイルディレクトリ内のファイルに対するパスネームと類似性を有する。しかしながら、ファイルとは異なり、リソースは、コンピュータシステム内のファイルをともに構成する格納されたバイトのセットのような物理的エンティティというよりは、むしろ論理的エンティティであることを理解すべきである。ファイルがパスネームによりアクセスされる場合、そのファイルの一部としてメモリまたは大容量格納装置に格納されるバイトのシーケンスのコピーは、アクセッシングエンティティに転送される。対照的に、リソースがＵＲＩを介してアクセスされる場合、サーバコンピュータは、リソースのコピーよりは、むしろリソースのデジタルエンコードされた表現を返す。例えば、リソースが人間である場合、人間を規定するＵＲＩを介してアクセスされるサービスは、人間の様々な特徴の英数字エンコード、デジタルエンコードされた写真または写真、および他のかかる情報を返すことができる。パスネームを介してアクセスされるファイルの場合とは異なり、リソースの表現は、リソースのコピーではなく、その代りにリソースに対して一部タイプのデジタルエンコードされた情報である。
【００３１】
図１０に示されている例示的ＲＥＳＴｆｕｌ  ＡＰＩにおいて、クライアントコンピュータは、特定の顧客に関する情報および特定の顧客により行われる注文に関する情報を取得するために、リソース１００８の全階層をナビゲートするようにＨＴＴＰプロトコルおよび最上位レベルＵＲＩ１０１２の動詞、または動作を使用することができる。
【００３２】
図１１Ａ〜図１１Ｄは、ＲＥＳＴｆｕｌアプリケーションで使用されるＨＴＴＰアプリケーション階層プロトコルにより提供される、四つの基本動詞、または動作を示している。ＲＥＳＴｆｕｌアプリケーションは、クライアントがサービスまたはサーバにＨＴＴＰ要請メッセージを発行し、サービスまたはサーバが対応するＨＴＴＰ応答メッセージを返すことにより応答するクライアント／サーバプロトコルである。図１１Ａ〜図１１Ｄはクライアント、サービス、およびＨＴＴＰプロトコルに対して、図１０を参照して前記論じられた例示規則を使用する。例示の簡潔性および明確性のために、かかる図面それぞれにおいて、上位部分は要請を示し、下位部分は応答を示している。リモートクライアント１１０２およびサービス１１０４は、図１０と同様に、ラベリングされた矩形に図示される。右向き実線矢印１１０６は、リモートクライアントからサービスへのＨＴＴＰ要請メッセージの送信を示し、左向き実線矢印１１０８は、サービスによる要請メッセージに対応する応答メッセージのリモートクライアントへの転送を示す。例示の明確性および簡潔性のために、サービス１１０４は、少数のリソース１１１０〜１１１２と関連して図示される。
【００３３】
図１１ＡはＧＥＴ要請および通常の応答を示している。ＧＥＴ要請は、サービスからＵＲＩにより識別されるリソースの表現を要請する。図１１Ａに図示されている例において、リソース１１１０は、ＵＲＩ「ＨＴＴＰ：／／ｗｗｗ．ａｃｍｅ．ｃｏｍ／ｉｔｅｍ１」１１１６により固有に識別される。初期サブストリング「ＨＴＴＰ：／／ｗｗｗ．ａｃｍｅ．ｃｏｍ」は、サービスを識別するドメインネームである。したがって、ＵＲＩ１１１６は、その中に位置しドメイン「ｗｗｗ．ａｃｍｅ．ｃｏｍ．」により管理されるリソース「ｉｔｅｍ１」を規定するものと考えられ得る。ＧＥＴ要請１１２０は、コマンド「ＧＥＴ」１１２２、ドメインネームに添付される場合に、リソースを固有に識別するＵＲＩを生成する相対的リソース識別子１１２４、および特定の基底アプリケーション階層プロトコル１１２６の表示を含む。要請メッセージは、要請が向けられるドメインを表示するホストヘッダ１１２８「ホスト：ｗｗｗ．ａｃｍｅ．ｃｏｍ」のような一つ以上のヘッダ、またはキー／値ペアを含むことができる。含まれ得る多数の相違するヘッダがある。また、要請メッセージは、要請メッセージボディを含むこともできる。ボディは、各種の相違する自己説明エンコード言語、時々ＪＳＯＮ、ＸＭＬ、またはＨＴＭＬのいずれかでエンコードされ得る。現在の例において、要請メッセージボディがない。サービスは、ＧＥＴコマンドを含む要請メッセージを受信し、メッセージを処理し、対応する応答メッセージ１１３０を返す。応答メッセージは、アプリケーション階層プロトコル１１３２の表示、数値状態１１３４、テキスト状態１１３６、各種ヘッダ１１３８および１１４０、および現在の例において、ウェブページのＨＴＭＬエンコードを含むボディ１１４２を含む。しかしながら、また、ボディは、人事ファイル、顧客説明、または注文説明をエンコードするＪＳＯＮオブジェクトのような多数の異なるタイプの情報のいずれかを含むことができる。ＧＥＴは、最も基本的且つ一般的に最も頻繁に使用されるＨＴＴＰプロトコルの動詞、または機能である。
【００３４】
図１１ＢはＰＯＳＴ  ＨＴＴＰ動詞を示している。図１１Ｂにおいて、クライアントは、ＰＯＳＴ要請１１４６をＵＲＩ「ＨＴＴＰ：／／ｗｗｗ．ａｃｍｅ．ｃｏｍ／ｉｔｅｍ１」と関連するサービスに送信する。多数のＲＥＳＴｆｕｌ  ＡＰＩにおいて、ＰＯＳＴ要請メッセージは、サービスがＰＯＳＴ要請と関連するＵＲＩに従属する新たなリソースを生成し、新たに生成されたリソースのためにネームおよび対応するＵＲＩを提供することを要請する。したがって、図１１Ｂに図示されているように、サービスは、ＵＲＩ「ＨＴＴＰ：／／ｗｗｗ．ａｃｍｅ．ｃｏｍ／ｉｔｅｍ１」により規定されるリソース１１１０に従属する新たなリソース１１４８を生成し、識別子「３６」をこの新たなリソースに割り当て、新たなリソースに固有のＵＲＩ「ＨＴＴＰ：／／ｗｗｗ．ａｃｍｅ．ｃｏｍ／ｉｔｅｍ１／３６」１１５０を生成する。次いで、サービスは、ＰＯＳＴ要請に対応する応答メッセージ１１５２をリモートクライアントにまた送信する。アプリケーション階層プロトコル、状態、およびヘッダ１１５４以外に、応答メッセージは、新たに生成されたリソースのＵＲＩを有する位置ヘッダ１１５６を含む。ＨＴＴＰプロトコルによると、ＰＯＳＴ動詞はまた更新情報を有するボディを含むことにより、既存のリソースを更新するために使用され得る。しかしながら、ＲＥＳＴｆｕｌ  ＡＰＩは、一般的に新たなリソースに対するネームがサービスにより決定される場合に、新たなリソースの生成のためにＰＯＳＴを使用する。ＰＯＳＴ要請１１４６は、サービスによりリソースのための格納された情報に含まれ得るリソースの表現または部分表現を含むボディを含むことができる。
【００３５】
図１１ＣはＰＵＴ  ＨＴＴＰ動詞を図示している。ＲＥＳＴｆｕｌ  ＡＰＩにおいて、ＰＵＴ  ＨＴＴＰ動詞は、一般的に、新たなリソースに対するネームがサービスよりはむしろクライアントにより決定される場合に、既存のリソースを更新したり新たなリソースを生成するために使用される。図１１Ｃに図示されている例において、リモートクライアントは、新たに生成されたリソース１１４８を名付けるＵＲＩ「ＨＴＴＰ：／／ｗｗｗ．ａｃｍｅ．ｃｏｍ／ｉｔｅｍ１／３６」に対してＰＵＴ  ＨＴＴＰ要請１１６０を発行する。ＰＵＴ要請メッセージは、リソース１１６２の表現または部分表現のＪＳＯＮエンコーディングを有するボディを含む。この要請の受信に応答して、サービスは、ＰＵＴ要請に送信される情報１１６２を含むようにリソース１１４８を更新し、次いで、ＰＵＴ要請１１６４に対応する応答をリモートクライアントに返す。
【００３６】
図１１ＤはＤＥＬＥＴＥ  ＨＴＴＰ動詞を図示している。図１１Ｄに図示されている例において、リモートクライアントは、新たに生成されたリソース１１４８をサービスに固有に規定するＵＲＩ「ＨＴＴＰ：／／ｗｗｗ．ａｃｍｅ．ｃｏｍ／ｉｔｅｍ１／３６」に対するＤＥＬＥＴＥ  ＨＴＴＰ要請１１７０を送信する。これに応答して、サービスは、ＵＲＬと関連するリソースを削除し、応答メッセージ１１７２を返す。
【００３７】
以下にさらに論じられ、上述されたように、サービスは、リソース表現以外に応答メッセージ、各種の相違するリンク、またはＵＲＩを返すことができる。かかるリンクは、対応する要請メッセージと関連するＵＲＩにより規定されるリソースと各種の相違する方式で関連する更なるリソースをクライアントに表示することができる。一例として、要請に応答してクライアントに返される情報が単一ＨＴＴＰ応答メッセージに比べて多すぎる場合に、情報は、クライアントが更なるＧＥＴ要請を使用して残りのページを検索可能にする更なるリンク、またはＵＲＩとともに返される第１ページを有するページに分割され得る。他の例として、顧客情報リソース（図１０における１０１０）に対する初期ＧＥＴ要請に応答して、サービスは、クライアントが後続ＧＥＴ要請における階層的リソース組織を横断し始め得ることを使用して、クライアントに対する要請された表現に、さらにＵＲＩ１０２０および１０３６を提供することができる。
【００３８】
現在発明が目指す科学的なワークフローシステム
図１２は現在発明が目指す科学的なワークフローシステムの主要構成要素を示している。科学的なワークフローシステムは、フロントエンド１２０２と、バックエンド１２０４とを含む。フロントエンドは、インターネット１２０６および／またはパーソナルエリアネットワーク、ローカルエリアネットワーク、ワイドエリアネットワーク、および通信サブシステム、システム、およびメディアの各種タイプおよび組み合わせにより前記バックエンドに連結される。科学的なワークフローシステムのフロントエンド部分は、一般的に、ユーザコンピュータまたは他のプロセッサ制御ユーザ装置上でそれぞれ駆動する多数のフロントエンド実験ダッシュボードアプリケーション１２０８〜１２１０を含む。各フロントエンド実験ダッシュボードは、人間ユーザが科学的なワークフローシステム１２０４のバックエンド部分に格納される実行モジュール、データセット、および実験に関する情報をダウンロードし、有向非巡回グラフ（「ＤＡＧ」）ベースの視覚化を用いて実験を生成および編集し、実行のために実験を提出し、実行された実験により生成される結果を見て、科学的なワークフローシステムバックエンドにデータセットおよび実行モジュールをアップロードし、他のユーザと実験、実行モジュール、およびデータセットを共有するように、人間ユーザにユーザインターフェイスを提供する。必須として、フロントエンド実験ダッシュボードアプリケーションは、一種の相互作用開発環境およびウィンドウまたはポータルを科学的なワークフローシステムに、科学的なワークフローシステムを介して一群の科学的なワークフローシステムユーザに提供する。図１２において、外部破線矩形１２０２は、科学的なワークフローシステムフロントエンドを示す一方、内部破線矩形１２２０は、科学的なワークフローシステムフロントエンドをサポートするハードウェアプラットホームを示す。外部破線矩形１２０２内にあり、内部破線矩形１２２０の外部にある陰の構成要素１２０８〜１２１０は、ハードウェアプラットホーム１２２０内で具現される科学的なワークフローシステムの構成要素を示している。類似の例示規則は一つ以上のクラウドコンピューティングシステム、集中型または分散型プライベートデータセンター内に、または他の一般的に大規模マルチコンピュータシステム演算環境１２２２上に具現される科学的なワークフローシステムバックエンド１２０４のために使用される。かかる大規模演算環境は、一般的に、多数のサーバコンピュータと、ネットワークアタッチト格納システムと、内部ネットワークとを含み、メインフレームまたは他の大規模コンピュータシステムを時々含む。科学的なワークフローシステムバックエンド１２０４は、一つ以上のＡＰＩサーバ１２２４と、分散カタログサービス１２２６と、クラスタ管理サービス１２２８と、多数の実行クラスタノード１２３０〜１２３３とを含む。かかるバックエンド構成要素それぞれは、多数の物理的サーバおよび／または大規模コンピュータシステムにマッピングされ得る。結果として、科学的なワークフローシステム１２０４のバックエンド部分は、増加する数のユーザに、科学的なワークフローサービスを提供するように比較的直接的にスケールされる。双方向矢印１２４０〜１２４４で表されるフロントエンド実験ダッシュボード１２０８〜１２１０とＡＰＩサーバ１２２４との通信は、双方向矢印１２５０〜１２６２で表されるバックエンド構成要素同士の内部通信のように、前に論じられたＲＥＳＴｆｕｌ通信モデルに基づく。カタログサービス１２２６以外にバックエンド内の図１２に図示されている構成要素はいずれもステートレスであり、ステートレスＲＥＳＴｆｕｌプロトコルを介して情報を交換する。
【００３９】
ＡＰＩサーバ１２２４は、ユーザコンピュータ上で駆動するフロントエンド実験ダッシュボードアプリケーションから要請を受信し、このアプリケーションに応答を送信する。ＡＰＩサーバは、カタログサービス１２２６およびクラスタ管理サービス１２２８により提供されるサービスをアクセッシングすることにより要請を行う。また、ＡＰＩサーバは、実行クラスタノード１２３０〜１２３３およびクラスタ管理サービス１２２８にサービスを提供する。カタログサービス１２２６は、格納された実行モジュール、実験、データセット、および作業にインターフェイスを提供する。多数の具現において、カタログサービス１２２６は、エンティティ自体がネットワークアタッチト格納機器、データベースシステム、ファイルシステム、および他のかかるデータ格納システムを含む遠隔またはアタッチト格納システムからアクセスされ、それらの上に格納されるように、かかる相違するエンティティに対するメタデータを局所的に格納する。カタログサービス１２２６は、前に実行され、現在実行されており、以降実行される作業と関連する状態情報に対するリポジトリである。作業は、実行モジュールの実行インスタンスである。カタログサービス１２２６は、格納されたデータセット、実験、実行モジュール、および作業エンティティのバージョニング、およびそれに検索インターフェイスを提供する。
【００４０】
クラスタ管理サービス１２２８は、ユーザの代わりに実験を実行するために実行クラスタノード上で実行される必要がある作業のための作業識別子を、ＡＰＩサーバから受信する。クラスタ管理サービスは、実行のための適切な実行クラスタノードに作業をディスパッチする。実行準備のできた作業は即時実行のための特定の実行クラスタノードに伝達される。一方、現在実行中の作業および実行待機中の作業により生産されるデータを待機する必要がある作業は、データの従属性が満たされるときに開始するために、従属性の満足度を断続的に検査する実行クラスタノード内で実行中のピンガルーチンに伝達される。作業が実行を完了すると、出力データおよび状態情報は、実行クラスタノードからＡＰＩサーバを介してカタログに返される。
【００４１】
前記論じられたように、実験は、データソースと、実行モジュールノードとを含むＤＡＧのようにフロントエンド実験ダッシュボードを介して視覚的に表現される。科学的なワークフローシステムの一具現において、実験ＤＡＧは、ジャバスクリプトオブジェクト表現（「ＪＳＯＮ」）にテキストにエンコードされる。実験ＤＡＧは、ＪＳＯＮ実行モジュールのリストのようにテキストにエンコードされる。図１３Ａ〜図１３Ｅは比較的簡単な六つのノード実験ＤＡＧのＪＳＯＮエンコーディングを示している。図１３Ａにおいて、ＪＳＯＮエンコードされた実験ＤＡＧのブロック図類似例示が提供される。ＪＳＯＮエンコードされた実験ＤＡＧは、ＪＳＯＮエンコードされた実行モジュール１３０２および１３０３のリスト１３００からなる。実行モジュール１３０２のＪＳＯＮエンコーディングは、実行モジュールネーム１３０４とバージョン番号１３０６およびそれぞれの一つ以上の実行モジュールインスタンス１３０８および１３１０に対するエンコードを含む。各実行モジュールインスタンスは、インスタンスネームまたは識別子１３１２およびキー値ペア１３１４〜１３１６のリストまたはセットを含み、各キー値ペアは、コロン１３２２によりテキストで表された値１３２０から分離されるテキストで表されたキー１３１８を含む。
【００４２】
実行モジュールは、実行クラスタノードにより実行され得る実行ファイルである。科学的なワークフローシステムは、多数の異なるプログラミング言語のいずれかからコンパイルされる実行可能ファイルを格納および実行することができる。実行モジュールは、ルーチンまたはマルチルーチンプログラムであり得る。実行モジュールインスタンスは、実験ＤＡＧの単一ノードにマッピングされる。同一の実行モジュールが実験の間に多数回呼び出される場合、各呼び出しは、相違するインスタンスに対応する。キー値ペア１３１４〜１３１６は、実行モジュールへのデータ入力、実行モジュールからのデータ出力、静的パラメータ、および実行モジュールに対する可変パラメータの表示を提供する。図１３Ｂは実行モジュール内のインスタンスのＪＳＯＮエンコーディングにおけるキー値ペアのリストまたはセット内で発生し得る相違するタイプのキー値ペアを示している。図１３Ｂにおいては、２タイプの入力キー値ペア１３３０および１３３２がある。両方タイプの入力キー値ペアは、キー「イン」１３３４を含む。第１入力キー値ペア１３３０は、「＠」符号１３３６、データセットネーム１３３８、およびバージョン番号１３４０を含む値ストリングを含む。かかる第１タイプの入力キー値ペアは、科学的なワークフローシステムバックエンド（図１２における１２０４）のカタログサービス（図１２における１２２６）に格納される名づけられたデータセットを規定する。第２入力キー値ペアタイプ１３３２は、実行モジュールインスタンスから入力キー値ペアを含む実行モジュールインスタンスへのデータ出力を規定する。第２入力キー値ペアタイプ１３３２は、ドル記号１３４２で開始し、後に実行モジュールネーム１３４４が付く値ストリング、実行モジュールに対するバージョン番号１３４６、実行モジュールのインスタンスに対するインスタンスネームまたは識別子１３４８、および実行モジュールの出力が入力キー値ペアを含む実行モジュールのインスタンスに入力されるデータを生産することを表示する出力番号１３５０を含む。
【００４３】
実行モジュールのインスタンスからのデータ出力は、いずれも出力キー値ペア１３５２により規定される。出力キー値ペアに対するキーは「アウト」１３５４であり、値は、整数出力番号１３５５である。コマンドライン静的パラメータおよび可変パラメータは、静的キー値ペア１３５６およびパラメータキー値ペア１３５７で表される。静的およびパラメータキー値ペアは、いずれもストリング値１３５８および１３５９を含む。
【００４４】
図１３Ｃはノードおよびリンクにより視覚的に表現される比較的簡単な実験ＤＡＧを図示している。乱数発生器実行可能モジュール１３６０の単一インスタンスは、単一出力１３６１によりファイルスプリッタ実行可能モジュールインスタンス１３６２にデータを生成する。ファイルスプリッタ実行可能モジュールインスタンスは、三つのデータ出力１３６３〜１３６５を生産する。かかる出力は、ダブルソーティング実行モジュール１３６６〜１３６８の三つのインスタンスそれぞれに関するものである。ダブルソーティング実行モジュール１３６６〜１３６８の三つのインスタンスは出力１３６９〜１３７１をそれぞれ生成し、かかる三つの出力は、いずれも単一出力１３７３を生産するダブルマージング実行モジュール１３７２のインスタンスに入力される。図１３Ｄは図１３Ｃに図示されている実験ＤＡＧのＪＳＯＮエンコーディングを図示している。乱数発生器実行モジュール（図１３Ｃにおける１３６０）の単一インスタンスは、テキスト１３７５で表される。ファイルスプリッタ実行モジュール（図１３Ｃにおける１３６２）の単一インスタンスは、テキスト１３７６で表される。ダブルマージング実行モジュール（図１３Ｃにおける１３７２）の単一インスタンスは、テキスト１３７７で表される。ダブルソーティング実行モジュール（図１３Ｃにおける１３６６〜１３６８）は、図１３Ｄにおけるテキスト１３７８，１３７９，および１３８０で表される。図１３Ｄにおけるファイルスプリッタ実行モジュールを表現する図１３Ｃの実験ＤＡＧのＪＳＯＮエンコーディングからのテキスト１３７６を考慮する。コマンドライン静的パラメータは、キー値ペア１３８２で表される。乱数発生器実行モジュール（図１３Ｃにおける１３６０）から出力されるデータの入力は、入力キー値ペア１３８４で表される。ファイルスプリッタ実行モジュールのインスタンスからの三つのデータ出力（図１３Ｃにおける１３６３〜１３６５）は、三つの出力キー値ペア１３８６〜１３８８で表される。乱数発生器実行モジュール（図１３Ｃにおける１３６０）により受信される二つのパラメータは、二つの変数キー値ペア１３９０および１３９２により規定される。
【００４５】
図１３Ｅは三つの相違するＪＳＯＮエンコードされたオブジェクトを示している。図１３Ｅは図１３Ｄにおいてのみならず、後続図に使用されるＪＳＯＮの特定の様態を示すように意図される。第１ＪＳＯＮエンコードされたオブジェクト１３９３は、中括弧１３９３ｂおよび１３９３ｃ内にあるコンマで分離されているキー値ペア１３９３ａのリストである。各キー値ペアは、コロンにより分離される二つのストリングからなる。また、第２ＪＳＯＮエンコードされたオブジェクト１３９４は、キー値ペア１３９４ａのリストを含む。しかしながら、この場合において、第１キー値ペア１３９４ｂは、中括弧１３９４ｃおよび１３９４ｄ内にあるキー値ペア１３９４ｄのリストである値１３９４ｃを含む。したがって、キー値ペアの値は、ストリングであってもよく、ＪＳＯＮエンコードされたサブオブジェクトであってもよい。他のタイプの値は、ストリング１３９４ｅのアレイを表現するストリングの括弧で閉じられたリストである。第３ＪＳＯＮエンコードされたオブジェクト１３９５において、第２キー値ペア１３９５ａは、二つのキー値ペア１３９５ｅおよび１３９５ｆだけでなく、二つのキー値ペアを含むオブジェクト１３９５ｄを含む要素を有する括弧１３９５ｂおよび１３９５ｃ内にあるアレイ値を含む。したがって、ＪＳＯＮは、階層的レベルの任意の数を許容する階層的オブジェクトまたはエンティティエンコードシステムである。オブジェクトは、キー値ペアとしてのＪＳＯＮによりエンコードされるが、所定のキー値ペアの値は、それ自体でサブオブジェクトおよびアレイであり得る。
【００４６】
図１４Ａ〜図１４Ｄはカタログサービス（図１２における１２２６）に格納されるメタデータを示している。図１４Ａはカタログサービス内に格納されるメタデータの論理的組織を示している。各カタログエントリー１４０２は、インデックス１４０４と、タイプ１４０５と、識別子１４０６とを含む。四つの相違するタイプのカタログエントリーがある。：（１）データソースエントリー；（２）実験エントリー；（３）実行モジュールエントリー；および（４）作業エントリー。データエントリーは、作業実行の間に作業に入力されるデータセットを説明する。データエントリーは、実験の脈絡内で実行する他の作業に入力される作業からの出力を表現する臨時データセットだけでなく、ユーザにより科学的なワークフローシステムにアップロードされる名づけられたデータセットをすべて説明する。例えば、図１の実験ＤＡＧに図示されているデータソース１０２および１０４は、実験実行の前に科学的なワークフローシステムにアップロードされるか、それらの内に生成される名づけられたデータソースである。対照的に、出力１１６のような実行モジュールインスタンスからの出力は、実行モジュールインスタンス１０６に後続入力のためのカタログにより臨時データセットとして格納される。実験は、図１３Ａ〜図１３Ｄを参照して前記論じられた実験ＤＡＧにより説明される。実行モジュールは、ＪＳＯＮエンコーディングにより部分的に説明されるが、また、実験実行の間に作業として実行される実際のコンピュータ命令またはｐコード命令を含む格納された実行可能ファイルまたはオブジェクトに対する参照を含む。作業エントリーは、アップストリーム従属作業からの入力のための作業状態および識別子を含むだけでなく、実行モジュールに対応する作業を説明する。
【００４７】
科学的なワークフローシステムは、多数の異なるユーザおよび組織に対する実験ワークフローおよび実験実行をサポートすることができる。したがって、図１４Ａに図示されているように、各ユーザまたはユーザ組織に対して、カタログは、そのユーザまたはユーザ組織に対するデータ、実験、実行モジュール、および作業エントリーを含むことができる。図１４Ａにおいて、大規模矩形１４０８のような各大規模矩形は、特定のユーザまたはユーザ組織の代わりに、格納されるカタログエントリーを表現する。各大規模矩形内に、格納されたデータ、実験、実行モジュール、および作業エントリーそれぞれを表現するより大きい矩形１４０８内のより小さい矩形１４１０〜１４１３のようなより小さい四つの矩形がある。カタログエントリー１４０４のインデックスフィールドは、特定のユーザまたはユーザ組織に対する格納されたメタデータの特定の集合を識別する。カタログエントリーのタイプフィールド１４０５は、エントリーが属する四つの相違するタイプの格納されたエントリーのいずれかを表示する。格納されたエントリーのＩＤフィールド１４０６は、特定のユーザまたは組織に対する同一のタイプのエントリーの集合から格納されたエントリーを探索および検索するために使用可能な格納されたエントリーに対する固有の識別子である。
【００４８】
図１４Ｂはカタログエントリーのコンテンツに対してより詳細な事項を提供する。図１４Ａを参照して前記論じられたように、各カタログエントリー１４２０は、インデックス１４０４と、タイプ１４０５と、ＩＤフィールド１４０６とを含む。また、各エントリーは、ソース部分１４２２を含む。ソース部分は、状態値１４２３と、短い説明１４２４と、ネーム１４２５と、オーナ１４２６と、最新更新日付／時間１４２７と、タイプ１４２８と、生成日１４２９と、バージョン１４３０と、メタデータ１４３１とを含む。図１４Ｃは図１３Ｃに図示されている実験ＤＡＧでノード１３６２として示されるファイルスプリッタ実行モジュールを説明する実行モジュールカタログエントリーに対するメタデータの一部を図示している。このノードは、図１３Ｄに図示されている実験のＪＳＯＮエンコーディング内のテキスト１３７６にエンコードされる。図１４Ｃに図示されているこの実行モジュールに対する実行モジュールカタログエントリーのメタデータの部分は、実行モジュールに対するインターフェイスのＪＳＯＮエンコーディングであり、これは図１３Ｃに図示されている実験ＤＡＧで表される実験のための図１３Ｄにおけるファイルスプリッタノード１３７６のＪＳＯＮに含まれるキー値ペア１３８２〜１３８８の説明である。インターフェイスは、図１３Ｄにおけるキー値ペア１３８２〜１３８８に対応する五つのオブジェクト１４４０〜１４４４を含むアレイである。インターフェイスアレイ内のＪＳＯＮエンコードされたオブジェクト１４４１は、入力パラメータ１３８４に関する説明であり、これは、図１４Ｃに図示されているインターフェイスエンコードを含む実行モジュールエントリーにより説明される実行モジュールを表現する実験ＤＡＧへの実験ＤＡＧノードのＪＳＯＮエンコーディングを含むために使用され得る。
【００４９】
図１４Ｄは作業カタログエントリー内に格納されるメタデータの一部を図示している。このメタデータは、作業に対応する実行モジュールのための各種実行モジュールパラメータに対する値だけでなく、作業の実行のために求められるディスク空間、ＣＰＵ帯域幅、およびメモリの量を規定するリソースキー値ペア１４５０を含む。図１４Ｄに図示されているメタデータにおいて、現在説明されている作業が依存する作業からの入力に対応する入力パラメータは、図１３に図示されている実験ＤＡＧに対するダブルマージングノードのＪＳＯＮエンコーディング（図１３Ｄにおける１３７７）と同様に、実行モジュールインスタンスに対する参照よりは、むしろ作業識別子１４５２および１４５４のような作業識別子を含むことに注目する。
【００５０】
図１５Ａ〜図１５Ｉは図１３Ｃ〜図１３Ｄを参照して前記論じられた実験ＤＡＧのような実験ＤＡＧに対応する実験レイアウトＤＡＧの一例を提供している。図１５Ａ〜図１５Ｉに図示されている実験レイアウトＤＡＧは、フロントエンド実験ダッシュボードを介してユーザに提供される実験ＤＡＧの視覚的表現をともに含むノードおよびリンクのような視覚的ディスプレイ要素の位置および配向を説明するレイアウト部分を含む相当の追加情報を含む。実験ＤＡＧの実験レイアウトＤＡＧ形態は、フロントエンドおよびＡＰＩサーバにより使用され得るが、一般的に、クラスタ管理サービスおよび実行クラスタノードにより使用されない。
【００５１】
図１６Ａ〜図１６Ｉは科学的なワークフローシステム内の実験設計および実行のプロセスを示している。図１６Ａ〜図１６Ｉは、いずれも１２を参照して前に論じられた科学的なワークフローシステム構成要素を示すブロックと同一の例示規則を使用する。初期実験設計ステップにおいて、ユーザコンピュータまたは他のプロセッサ制御装置上で駆動するフロントエンド実験ダッシュボードアプリケーションは、ユーザが実験設計の視覚的表現、若しくは実験ＤＡＧ１６０４を構築することができるようにするユーザインターフェイスを提供する。視覚的表現は、図１３Ｃ〜図１３Ｄおよび図１５Ａ〜図１５Ｉを参照して前記説明されたＤＡＧ１６０６のＪＳＯＮエンコーディングに基づく。フロントエンド実験ダッシュボードアプリケーションは、科学的なワークフローシステムバックエンドのＡＰＩサーバ構成要素１６０８により提供される各種のＤＡＧエディタツールサービスおよび検索サービスを呼び出す。ＡＰＩサーバ構成要素１６０８は、順に、カタログサービス１６１０を呼び出しそれから情報を受信する。実験設計を構築する際に、ユーザは、前に開発された実験設計および実験設計の構成要素を検索しダウンロードすることができ、それに対するメタデータはカタログ１６１０に格納される。検索は、図１４Ｂを参照して前記論じられたカタログエントリー内の各種のフィールドの値に対して行われ得る。また、ユーザは、完全に新たな実験設計を構築するために編集ツールを利用することができる。実験設計は、フロントエンド実験ダッシュボードアプリケーションから呼び出される各種のＡＰＩサーバサービスを介してユーザにより名づけられカタログに格納され得る。「複製」と称される実験設計に対する一つの接近において、既存の実験設計は、カタログに格納される実験設計の検索により識別され、フロントエンド実験ダッシュボードアプリケーションによりユーザにディスプレイされる。次いで、ユーザは、データソースを変更、追加、削除したり、実行モジュールおよび実行モジュール同士のデータフローリンクを変更することにより、また、実行モジュールのインスタンスを追加または削除することにより、既存の実験を修正することができる。前に実行された実験および作業に関する情報が科学的なワークフローシステム内に保持されることから、現在実験の実行の間に、前に実行された実験における同一の作業と同一の入力を受信する修正された実験設計内のかかる作業はまた実行される必要がない。その代りに、かかる作業により生産されるデータは、現在実験のダウンストリーム作業に入力のためのカタログから取得され得る。実際、修正された実験設計の全体サブグラフは、それのサブグラフが同一の入力を有して現在実験設計内で同様に発生する場合、現在実験設計の実行の間に実行される必要がないことがある。
【００５２】
図１６Ｂに示されているように、実験設計が開発されると、ユーザは、ＡＰＩサーバ構成要素１６０８により提供されるアップロードサービスを介してカタログにカタログに既に存在していないデータセットおよび実行モジュールをアップロードするためにフロントエンド実験ダッシュボード特徴を利用することができる。図１６Ｃに図示されているように、ユーザがカタログに既に存在していない実験を実行するために求められる必要なデータセットおよび実行モジュールをアップロードすると、ユーザは、実行のためにＡＰＩサーバ構成要素１６０８により提供される実験提出サービスに、対応する実験ＤＡＧ１６１２のＪＳＯＮエンコーディングとして実験設計を提出するようにフロントエンド実験ダッシュボードの実験提出特徴を入力する。図１６Ｄに図示されているように、実験設計を受信すると、ＡＰＩサーバ構成要素１６０８は、実験設計を実行モジュールインスタンスおよびデータセットに分析し、データセットおよび実行モジュールの両方がカタログ内に常駐することを保証するために、カタログサービス１６１０と相互作用し、実験設計を検証し、すべての実行モジュールインスタンスに対する作業署名をコンピューティングし、カタログに既に格納された作業エントリーの作業署名とマッチしない作業署名に対する新たな作業エントリーを生成するためにカタログと相互作用して、新たに生成された作業エントリーに対する作業識別子を受信する。それは、単に実験を実行するために実行される必要がある新たに生成された作業エントリーである。
【００５３】
図１６Ｅに図示されているように、実験を実行するために実行される必要がある作業に対する作業識別子は、ＡＰＩサーバ構成要素１６０８からクラスタマネージャ構成要素１６１４に伝達される。クラスタマネージャ構成要素は、作業識別子に対応する作業に対する入力データがいずれも利用可能な場合に即時実行のために、若しくはデータ従属性が満たされた場合に後続実行のために、実行クラスタノード１６１６中に受信された作業識別子を分散する。図１６Ｆに図示されているように、従属性満足度のために待機中の作業に対応するかかる作業識別子に対して、作業識別子がクラスタマネージャ構成要素により伝達された実行クラスタノード内のピンガ１６１８は、入力データ従属性がアップストリーム作業の実行完了の結果として満たされるか否かを判断するために、ＡＰＩサーバ構成要素１６０８を連続的にまたは断続的にポーリング（ｐｏｌｌｉｎｇ）する。従属性が満たされた場合、この際、作業識別子は、実行クラスタノードによる実行のために提出される。図１６Ｇに図示されているように、実行クラスタノードが作業の実行を開始するために準備されると、実行クラスタノードは、ＡＰＩサーバサービスを介して、ローカルメモリおよび／または他のローカルデータ格納リソースに必要なデータセットおよび実行可能ファイルをダウンロードする。図１６Ｈに図示されているように、作業が実行を完了すると、実行クラスタノードは、ＡＰＩサーバ構成要素１６０８を介して、実行により生成されるデータセット、標準エラー出力およびＩ／О出力、および完了状態を格納用カタログ１６１０に送信する。図１６Ｉに図示されているように、ＡＰＩサーバ構成要素１６０８は、実験のためのすべての作業が実行されたことを決定する際に、ＡＰＩサーバ構成要素は、フロントエンド実験ダッシュボードアプリケーション１６０２に実行完了表示を返すことができる。その代わりに、フロントエンド実験ダッシュボードアプリケーションは、実行が完了する時を決定するように、ＡＰＩサーバ構成要素インターフェイスまたはサービスを介してカタログをポーリングすることができる。実行が完了すると、ユーザは、フロントエンド実験ダッシュボード上における実験からの出力をアクセスしディスプレイすることができる。
【００５４】
図１６Ａ〜図１６Ｉを参照して、前記論じられたバックエンド活動は、以下でより詳細に説明される。かかる議論の前に、実験設計および実験実行の各種様態が以下に要約される。科学的なワークフローシステムの第一の重要な様態は、実験設計が概念的に簡単な実行モジュールおよびデータソースからなるというものである。これは、システムカタログ内の視覚的編集ツール、検索能力、およびメタデータ格納と結合し、時々、前に開発された実験設計の多数の部分を再利用することにより、ユーザが迅速に実験を構築することができるようにする。科学的なワークフローシステムの第二の重要な特徴は、作業および成功的に実行された作業によるデータ出力がカタログに格納され保持されることから、前に実行された実験の部分を含む新たな実験設計がシステムにより実行される際に、同一の入力で同一の作業を再実行する必要がない。かかる作業からの出力が格納されることから、かかる出力は、実験が実行されるに伴いダウンストリーム作業への供給にすぐ利用可能である。したがって、設計実験の処理および実験実行の演算効率性は、いずれも科学的なワークフローシステム内に保持される広範囲なカタログにより大幅に向上する。科学的なワークフローシステムの他の重要な様態は、カタログ以外に、バックエンド構成要素がいずれもステートレスであるため、それが増加し続ける数のユーザをサポートするために簡単にスケーリングされるようにすることができるというものである。作業を実行するためのデータおよび実行モジュールは、作業が実行される実行クラスタノード上に局所的に格納され、これは、多数の分散システムにおける分散実行と関連する通信帯域幅の問題を相当改善する。科学的なワークフローシステムは、実験を実行モジュールに対応する作業に分解し、実行ステップで作業を実行し、初期作業は、名づけられたデータソースにのみ従属したり外部リソースと独立しており、実行の後続ステップは、従属性が前に実行された作業により満たされたかかる作業を伴う。この実行スケジューリングは、カタログにより保持される作業状態情報により編成され、実験のＤＡＧ説明から自然に発生する。
【００５５】
図１７Ａ〜図１７Ｂは実験ＤＡＧのサンプル視覚的表現および実験ＤＡＧの対応するＪＳＯＮエンコーディングを図示している。図１７Ａに図示されているように、実験設計は、三つのデータソースノード１７０２〜１７０４と、五つの実行モジュールインスタンスノード１７０５〜１７０９とを含む。図１７Ｂにおいて、実行モジュールノードに対する図１７Ａにおいて使用される数値ラベルは、ＪＳＯＮエンコーディングの対応する部分を表示するためにまた使用される。
【００５６】
図１８Ａ〜図１８Ｇはフロントエンド実験ダッシュボードアプリケーションを介してユーザによる実行のための実験の提出後の科学的なワークフローシステムバックエンドのＡＰＩサーバ構成要素（図１６Ａにおける１６０８）により行われる活動を示している。図１８ＡはＡＰＩサーバによる実験設計の検証の間に行われる多数の相違するステップを示している。図１８Ａにおいて、図１７Ｂに図示されている実験ＤＡＧのＪＳＯＮエンコーディングは、第１左側列１８０２で再生産される。第１ステップにおいて、ＡＰＩサーバは、実験設計内の実行モジュールおよびデータセットを識別し、図１８Ａにおける第２右側列１８０４で矩形に図示されているカタログからのかかる構成要素に対する対応するカタログエントリーを検索する。ＡＰＩサーバが各実行モジュールおよびデータソースに対応するカタログエントリーを識別および検索することができないときに、実験提出が拒絶される。そうでなければ、次のステップにおいて、実行モジュールの各インスタンスに対するキー値ペアは、対応するカタログエントリー内のメタデータインターフェイスに対して検査され、検査は、双方向矢印１８０６のような双方向矢印で図１８Ａに表示される。インターフェイス仕様が実験ＤＡＧのＪＳＯＮエンコーディングにおけるキー値ペアと一致しない場合、実験提出が拒絶される。最後に、入力キー値ペア１８０８のような他の実行モジュールを参照する各入力キー値ペアは、入力キー値ペアが曲線矢印１８１０のような曲線矢印で表される第１レベル実行モジュールネームを参照することを保証するように実験ＤＡＧに対して検査される。
【００５７】
図１８Ｂは図１８Ａを参照して前記論じられた検証ステップに対する制御流れ図を提供している。ステップ１８１２において、ルーチン「検証」は、実験ＤＡＧを受信する。ステップ１８１３〜１８２４のｆｏｒ‐ループにおいて、要素が実行モジュールまたは参照されたデータセットであるＤＡＧの各要素が検査される。先ず、ステップ１８１４において、カタログからの対応するエントリーは、現在考慮されているＤＡＧ要素に対して取り出される。カタログ取り出しが成功しなかった場合、ステップ１８１５で決定されるように、失敗が返される。そうでなければ、取り出されたエントリーが実行モジュールである場合、ステップ１８１６で決定されるように、次いで、ステップ１８１７において、カタログエントリーのメタデータ上におけるインターフェイスは、実験ＤＡＧにおける実行モジュールエンコーディングの入力、出力、およびパラメータに対して検査される。インターフェイスメタデータに対する入力、出力、およびパラメータの検査が成功すると、ステップ１８１８で決定されるように、次いで、ステップ１８１９〜１８２１の内部ｆｏｒ‐ループで、他の実行モジュールに対する参照を含む入力キー値ペアはいずれも図１８Ａを参照して前記論じられたように、妥当性に対して検査される。参照が有効しない場合、失敗が返される。そうでなければ、現在考慮されている要素が検証される。現在考慮されている要素がデータセットである場合、ステップ１８１６で決定されるように、次いで、任意のデータセットの妥当性検査は、ステップ１８２２で行われる。かかる検査は、データがデータセットカタログエントリー情報に基づいてアクセス可能であるか否かを判断することを含むことができる。データセット検査が成功すると、ステップ１８２３で決定されるように、次いで、データセットエントリーが検証される。ステップ１８１３〜１８２４のｆｏｒ‐ループは、すべての実験ＤＡＧ要素を介して繰り返されすべて検証されると成功を返す。
【００５８】
図１８Ｃ〜図１８Ｄは実験ＤＡＧの手順を示している。図１８Ｃは実行モジュールインスタンス実行に対する手順、またはステップを示している。実行モジュール１７０５は、データソース１７０２および１７０３からデータソース入力のみを受信する。したがって、実行モジュールインスタンス１７０５は、丸数字番号１８２５で表されているように、第１ステップにおいて即時実行され得る。対照的に、実行モジュール１７０６および１７０７はいずれも実行モジュールインスタンス１７０５からの出力に依存する。したがって、それは、いずれも実行モジュールインスタンス１７０５の実行の完了を待機しなければならない。したがって、それは、丸数字番号１８２６および１８２７で表されているように、実行の第２ステップに割り当てられる。実行モジュールインスタンス１７０８は、実行モジュールインスタンス１７０６の前の実行に依存するため、第３実行ステップ１８２８に割り当てられる。最後に、実行モジュールインスタンス１７０９は、実行モジュールインスタンス１７０８の実行の完了を待機しなければならないため、第４実行ステップ１８２９に割り当てられる。かかるステップ割り当ては、実験ＤＡＧの実行手順を表現する。勿論、実行モジュールインスタンスが実行クラスタノード上で開始可能な時点は、すべてのデータ従属性が満たされるものにのみ依存し、実行モジュールインスタンスが常駐すると見なされるステップに依存しない。
【００５９】
図１８Ｄは実験ＤＡＧに対する実行手順を決定するルーチン「順序ＤＡＧ」に対する制御流れ図を提供している。ステップ１８３０において、ルーチン「順序ＤＡＧ」は、実験ＤＡＧを受信し、ローカル変数を０に設定し、二つのローカルセット変数ｓｏｕｒｃｅＮｏｄｅｓおよびｏｔｈｅｒＮｏｄｅｓを空のセットに設定する。次いで、ステップ１８３１〜１８３７のｗｈｉｌｅ‐ループにおいて、ステップは、ローカル可変セットｓｏｕｒｃｅＮｏｄｅｓおよびｏｔｈｅｒＮｏｄｅｓに格納されるノードが、いずれも実験ＤＡＧにおける全体ノードと同一になるまで繰り返して決定される。ステップ１８３２において、ルーチンは、セットｓｏｕｒｃｅＮｏｄｅｓおよびｏｔｈｅｒＮｏｄｅｓにおけるデータソースおよびノードにのみ依存する実験ＤＡＧにおけるすべてのノードを探索する。ステップ１８３３において、ルーチンは、任意のノードがステップ１８３２で探索されるかを判断する。そうでない場合、次いで、実験ＤＡＧは、実行手順化を邪魔するサイクルまたは他の異常を有さなければならないため、ルーチンは、偽を返す。そうでなければ、ローカル変数ｎｕｍＬｅｖｅｌｓに格納される値が０である場合、ステップ１８３４で決定されるように、次いで、探索されたノードは、ステップ１８３５でローカルセット変数ｓｏｕｒｃｅＮｏｄｅｓに追加され、変数ｎｕｍＬｅｖｅｌｓは１に設定される。そうでなければ、探索されたノードは、ステップ１８３６でセットｏｔｈｅｒＮｏｄｅｓに追加され、変数ｎｕｍＬｅｖｅｌｓは１だけ増加する。
【００６０】
図１８Ｅはルーチン「作業署名生成」に対する制御流れ図を提供している。作業署名は、実行モジュールインスタンスに対応する作業に対する固有指紋のタイプである。ステップ１８４０において、ルーチンは、実行モジュールインスタンスのＪＳＯＮエンコーディングを受信する。ステップ１８４１において、ルーチンは、ローカル変数ｊｏｂ_ｓｉｇを空のストリングに設定する。次いで、ステップ１８４２〜１８４７のｆｏｒ‐ループにおいて、ルーチンは、ローカル変数ｊｏｂ_ｓｉｇに格納される作業署名に各キー値ペアストリングを添付する。現在考慮されているキー値ペアが他の実行モジュールを参照する入力キー値ペアであれば、ステップ１８４３で決定されるように、＄エンコードされた参照は、他の実行モジュールのために作業署名に置き換えられ、ｄ参照された入力キー値ペアは、ステップ１８４４〜１８４５で作業署名に追加される。そうでなければ、キー値ペアは、ステップ１８４６で作業署名に追加される。したがって、作業署名は、かかる実行モジュールのために作業署名に置き換えられる他の実行モジュールを参照して実行モジュールインスタンス内のすべてのキー値ペアの結合である。
【００６１】
図１８Ｆは実験の実行を開始するように科学的なワークフローシステムバックエンドのクラスタ管理構成要素にＡＰＩサーバにより伝達される作業識別子のリストを生成するルーチン「作業準備」に対する制御流れ図である。ステップ１８５０において、ルーチン「作業準備」は、ローカル変数ｌｉｓｔをヌル（ｎｕｌｌ）または空のリストに設定する。次いで、ステップ１８５１〜１８５５のｆｏｒ‐ループにおいて、ルーチン「順序ＤＡＧ」の前の実行において、ソースノードおよび他のノードセットに格納される各実行モジュールインスタンスが考慮される。ステップ１８５２において、作業署名は、実行モジュールインスタンスに対してコンピューティングされる。ステップ１８５３において、ルーチン「作業準備」は、この作業署名がカタログにおける作業エントリーと既に関連しているかを判断する。そうでない場合、次いで、新たな作業エントリーが生成され、状態ＣＲＥＡＴＥＤでステップ１８５４においてカタログに格納される。次いで、ステップ１８５６〜１８６３のｆｏｒ‐ループにおいて、作業がカタログで探索されたり、カタログで生成および格納される時に取得される作業署名に対応する各作業署名および作業識別子が考慮される。対応する実行モジュールインスタンスがｓｏｕｒｃｅＮｏｄｅｓセットにあり、作業識別子に対応する作業エントリーの状態がＣＲＥＡＴＥＤである場合、ステップ１８５７で決定されるように、次いで、ステップ１８５８で状態がカタログにおける作業エントリーでＲＥＡＤＹに変更され、作業識別子は、ステップ１８５９で作業識別子のリストに追加される。そうでなければ、作業署名に対応する実行モジュールインスタンスがセットｏｔｈｅｒＮｏｄｅｓで探索され、カタログにおける作業署名のための作業エントリーの状態が生成されると、ステップ１８６０で決定されるように、次いで、作業エントリーに対する状態がカタログでＳＵＢＭＩＴＴＥＤに変更され、作業識別子がステップ１８６２でリストに追加される。したがって、ルーチン「作業準備」により生産されるリストは、実験の実行の間に実行される必要のある実行モジュールインスタンスに対応する作業識別子のリストを含む。多数の場合において、リストは、実験ＤＡＧにおける実行モジュールインスタンスよりも少ない作業識別子を含む。これは、前記論じられたように、カタログにおいて、前に実行された作業の作業署名とマッチする作業署名を有するかかる作業は、そのデータ出力がカタログで利用可能であることから実行される必要がない。
【００６２】
図１８Ｇは提出された実験設計のＡＰＩサーバ処理を表現するルーチン「ＤＡＧ処理」に対する制御流れ図を提供している。ステップ１８７０において、ルーチン「ＤＡＧ処理」は、実験ＤＡＧを受信する。ステップ１８７２において、ルーチン「ＤＡＧ処理」は、受信された実験ＤＡＧを検証するために、ルーチン「検証」を呼び出す。検証が失敗すると、ステップ１８７４で決定されるように、実験提出が失敗する。そうでなければ、ステップ１８７６において、実験ＤＡＧは、ルーチン「ＤＡＧ手順化」に対する呼び出しにより手順化される。手順化が失敗すると、ステップ１８７８で決定されるように、次いで、実験提出が失敗する。そうでなければ、ステップ１８８０において、実験を実行するために実行される必要がある作業のリストがルーチン「作業準備」に対する呼び出しにより準備される。ステップ１８８２において、作業識別子のリストは、実行のためのクラスタマネージャに伝達される。ステップ１８８４において、ルーチン「ＤＡＧ処理」は、実行のリストまたはタイムアウトにおける作業識別子に対応するすべての作業の成功的な完了の通知を待機する。すべての作業が成功的に完了すると、ステップ１８８６で決定されるように、次いで、実験提出が成功したものである。そうでなければ、実験提出は、成功できなかったものである。
【００６３】
図１９は実行のための実行クラスタノードに作業を分散するように科学的なワークフローシステムバックエンドのクラスタマネージャ構成要素上で実行するルーチン「クラスタマネージャ」に対する制御流れ図を提供している。ステップ１９０２において、クラスタマネージャは、ＡＰＩサーバから作業識別子のリストを受信する。ステップ１９０３〜１９１２のｆｏｒ‐ループにおいて、ルーチン「クラスタマネージャ」は、実行のための実行クラスタノードに対する作業識別子で表される作業をディスパッチする。ステップ１９０４において、ルーチン「クラスタマネージャ」は、ＡＰＩサーバを介して、カタログで作業識別子に対応する作業エントリーをアクセスする。作業エントリーの状態がＲＥＡＤＹであれば、ステップ１９０５で決定されるように、ルーチン「クラスタマネージャ」は、ステップ１９０６で作業のための適切な実行クラスタノードを決定し、ステップ１９０７で即時実行のための実行ノード実行器に作業識別子を送信する。ステップ１９０６において、作業を実行するための適切な実行クラスタノードの決定は、実行クラスタノードを介する実行負荷をバランシングする戦略だけでなく、実行クラスタノード上で利用可能なリソースに対する作業の実行のために求められるリソースをマッチする戦略を伴う。特定の具現において、作業を実行するために任意の実行クラスタノード上でリソースが十分でない場合、作業は、後続実行のために待機し、科学的なワークフローシステムは、科学的なワークフローシステムに利用可能なクラウドコンピューティング施設内で演算リソースを増加させるようにスケーリング動作を行うことができる。作業エントリーの状態がＲＥＡＤＹでない場合、ステップ１９０５で決定されるように、次いで、状態がＳＵＢＭＩＴＴＥＤである場合、ステップ１９０８で決定されるように、ルーチン「クラスタマネージャ」は、ステップ１９０９で作業の実行のための適切な実行クラスタノードを決定し、次いで、作業識別子をステップ１９１０で決定された実行クラスタノード内で実行するピンガに伝達する。ピンガが実行クラスタノード上でまだ実行されていない場合、ルーチン「クラスタマネージャ」は、作業識別子を受信するためにピンガ作業を開始するように実行クラスタノードインターフェイスをアクセスすることができる。上述のように、ピンガは、作業識別子により識別される作業の実行を開始する前にすべての従属性が満たされた時を決定するようにカタログをポーリングし続ける。作業エントリーの状態がＲＥＡＤＹでもＳＵＢＭＩＴＴＥＤでもない場合、エラー条件が取得され、これは、ステップ１９１１で処理される。特定の具現において、作業エントリーは、たぶん他の実験の脈絡において、作業が実行のために既に待機していることを表示するＲＥＡＤＹまたはＳＵＢＭＩＴＴＥＤ以外の状態を有することができる。かかる場合において、作業を含む実験の実行が行われ得る。
【００６４】
図２０はルーチン「ピンガ」に対する制御流れ図を提供している。前記論じられたように、ピンガは、作業の実行を開始するためにクラスタマネージャから受信する作業識別子と関連する作業の従属性の満足度を検査し続けるように実行クラスタノード内で駆動する。前記論じられたように、実験ＤＡＧは、作業が従属する前の実行ステップでの作業が実行を完了し、現在考慮されている作業に入力される出力データを生産するときにのみ、実行可能な特定の実行ステップでの各作業により実行ステップに手順化される。ステップ２００２において、ピンガは、次のイベントを待機する。イベントが新たな作業識別子の受信である場合、ステップ２００３で決定されるように、次いで、作業識別子は、ピンガにより監視される作業識別子のリストに配置される。次のイベントがポーリングタイマー満了イベントである場合、ステップ２００５で決定されるように、ステップ２００６〜２０１０のｆｏｒ‐ループにおいて、ピンガは、ピンガにより監視される作業識別子のリスト上での各作業識別子に対する従属性の満足度を検査する。すべての従属性が特定の作業識別子に対して満たされると、ステップ２００８で決定されるように、次いで、作業識別子は、監視される作業識別子のリストから除去される作業識別子の実行のために実行クラスタノード内の実行器に伝達される。リスト上のすべての作業識別子が従属性の満足度のために検査されると、次いで、ステップ２０１１において、ポーリングタイマーが再設定される。ステップ２０１２において、発生し得る他のイベントが一般的なイベントハンドラーにより処理される。他のイベントが考慮のためにキューされる場合、ステップ２０１３で決定されるように、制御は、ステップ２００３にまたフローされる。そうでなければ、制御は、ピンガが次に発生するイベントを待機するステップ２００２にまたフローされる。
【００６５】
図２１は実行クラスタノード上で作業の実行を開始するルーチン「実行器」に対する制御流れ図を提供している。ステップ２１０２において、ルーチン「実行器」は、科学的なワークフローシステムバックエンドのクラスタマネージャ構成要素から作業識別子を受信する。ステップ２１０３において、ルーチン「実行器」は、ＡＰＩサーバを介して作業のためのカタログエントリーを取得する。ステップ２１０４において、ルーチン「実行器」は、実行クラスタノード上でローカル実行を保証するように、すべての入力データのローカルコピーおよび作業のための実行可能ファイルが実行クラスタノード内に局所的に格納されることを保証する。ステップ２１０５において、作業のためのカタログエントリーの作業状態は、ＲＵＮＮＩＮＧに更新される。ステップ２１０６において、実行器は、作業の実行を開始する。特定の具現において、新たな実行器は、クラスタマネージャにより実行クラスタノードに伝達される各新たな作業識別子を受信するように開始する。他の具現において、実行クラスタノードは、実行器に連続して伝達される作業識別子に対応する作業を開始するために連続して駆動する実行器である。実行器は、実行中の作業からの出力がいずれもファイルまたは他の出力データ格納エンティティにキャプチャーされることを保証する。次いで、ステップ２１０８において、実行器は、実行を完了するために作業を待機する。作業が実行を完了すると、実行器は、出力ファイルをカタログに伝達する。作業が実行を成功的に完了すると、ステップ２１１０で決定されるように、作業のためのカタログエントリーは、ステップ２１１２において、状態ＦＩＮＩＳＨＥＤを有するように更新される。そうでなければ、カタログに対する作業エントリーはステップ２１１１において、状態ＦＡＩＬＥＤを有するように更新される。
【００６６】
本発明は、特定の実施形態について説明しているが、本発明は、かかる実施形態に制限されるように意図されない。本発明の思想内の修正は、当業者にとって明らかである。例えば、多数の相違する具現のいずれかは、フロントエンドおよびバックエンドに対するハードウェアプラットホームの選択、プログラミング言語の選択、オペレーティングシステム、仮想化階層、クラウドコンピューティング施設および他のデータ処理施設、データ構造、制御構造、モジュール型組織、および多数の更なる設計および具現パラメータを含む、多数の異なる設計および具現パラメータのいずれかを変化させることにより取得され得る。
【００６７】
開示されている実施形態の前の説明は、任意の当業者が本開示を製作または利用することができるように提供されると理解される。かかる実施形態に対する各種の修正は、当業者にとってすぐに明らかであり、本願に定義される一般的な原理は、本開示の思想または範囲から逸脱することなく、他の実施形態に適用されてもよい。したがって、本開示は、本願に図示されている実施形態に制限されるように意図されず、本願に開示される原理および新たな特徴に合致する最も広い範囲を付与するものに意図される。
【図１】
0006659544.tif 000002
【図２】
0006659544.tif 000003
【図３】
0006659544.tif 000004
【図４】
0006659544.tif 000005
【図５】
0006659544.tif 000006
【図６】
0006659544.tif 000007
【図７】
0006659544.tif 000008
【図８Ａ】
0006659544.tif 000009
【図８Ｂ】
0006659544.tif 000010
【図９】
0006659544.tif 000011
【図１０】
0006659544.tif 000012
【図１１Ａ】
0006659544.tif 000013
【図１１Ｂ】
0006659544.tif 000014
【図１１Ｃ】
0006659544.tif 000015
【図１１Ｄ】
0006659544.tif 000016
【図１２】
0006659544.tif 000017
【図１３Ａ】
0006659544.tif 000018
【図１３Ｂ】
0006659544.tif 000019
【図１３Ｃ】
0006659544.tif 000020
【図１３Ｄ】
0006659544.tif 000021
【図１３Ｅ】
0006659544.tif 000022
【図１４Ａ】
0006659544.tif 000023
【図１４Ｂ】
0006659544.tif 000024
【図１４Ｃ】
0006659544.tif 000025
【図１４Ｄ】
0006659544.tif 000026
【図１５Ａ】
0006659544.tif 000027
【図１５Ｂ】
0006659544.tif 000028
【図１５Ｃ】
0006659544.tif 000029
【図１５Ｄ】
0006659544.tif 000030
【図１５Ｅ】
0006659544.tif 000031
【図１５Ｆ】
0006659544.tif 000032
【図１５Ｇ】
0006659544.tif 000033
【図１５Ｈ】
0006659544.tif 000034
【図１５Ｉ】
0006659544.tif 000035
【図１６Ａ】
0006659544.tif 000036
【図１６Ｂ】
0006659544.tif 000037
【図１６Ｃ】
0006659544.tif 000038
【図１６Ｄ】
0006659544.tif 000039
【図１６Ｅ】
0006659544.tif 000040
【図１６Ｆ】
0006659544.tif 000041
【図１６Ｇ】
0006659544.tif 000042
【図１６Ｈ】
0006659544.tif 000043
【図１６Ｉ】
0006659544.tif 000044
【図１７Ａ】
0006659544.tif 000045
【図１７Ｂ】
0006659544.tif 000046
【図１８Ａ】
0006659544.tif 000047
【図１８Ｂ】
0006659544.tif 000048
【図１８Ｃ】
0006659544.tif 000049
【図１８Ｄ】
0006659544.tif 000050
【図１８Ｅ】
0006659544.tif 000051
【図１８Ｆ】
0006659544.tif 000052
【図１８Ｇ】
0006659544.tif 000053
【図１９】
0006659544.tif 000054
【図２０】
0006659544.tif 000055
【図２１】
0006659544.tif 000056