(54)【発明の名称】REST(Representational State Transfer)準拠のクライアントを使用する異なる認証ドメインに位置するファイル・リポジトリ上での操作の実行
(58)【調査した分野】(Int.Cl.,DB名)
前記クライアント・システムにより、前記その他の認証ドメインから部分結果を受信するステップであって、前記その他の認証ドメインのそれぞれ1つから受信される各部分結果は、前記要求された操作をその認証ドメインに含まれる少なくとも1つのリソースに適用することによって得られる少なくとも1つの結果を備えるステップと、
前記リダイレクション・リストに応じて前記クライアント・システムにより、前記その他の認証ドメインから受信された前記部分結果を単一の最終結果に集約するステップと、
前記クライアント・システムにより、前記最終結果を前記クライアント・システムのユーザに表示するステップとをさらに備える請求項2に記載の方法。
前記初期サーバ・システムにより、前記要求された操作を前記初期認証ドメインに含まれる少なくとも1つのリソースに適用することによって部分結果を生成するステップと、
前記初期サーバ・システムにより、前記部分結果を前記クライアント・システムに送信するステップと、
前記クライアント・システムにより、前記初期サーバ・システムから前記部分結果を受信するステップとをさらに備え、
前記その他の認証ドメインから受信された前記部分結果を単一の最終結果に集約するステップは、前記初期サーバ・システムから受信された前記部分結果を、前記その他の認証ドメインから受信された前記部分結果と共に集約するステップを含む請求項1に記載の方法。
前記クライアント・システムにより、前記クライアント・システムのユーザ・インターフェイスを通じて前記クライアント・システムのユーザから、前記初期認証ドメイン以外の認証ドメインに位置する少なくとも1つのリソースの選択を受信するステップと、
前記要求された操作における前記クライアント・システムにより、前記初期認証ドメイン以外の前記認証ドメインに位置する前記ユーザ選択のリソースの指示を格納するステップとをさらに備え、
前記要求された操作が前記初期認証ドメイン以外の認証ドメインに位置する少なくとも1つのリソースを必要とすることを前記初期サーバ・システムにより決定することは、前記要求された操作において、前記初期認証ドメイン以外の前記認証ドメインに位置する前記ユーザ選択のリソースの前記指示を見出すことに応じ、
前記リダイレクション・リストを作成するステップは、前記ユーザ選択のリソースが位置する前記認証ドメインに対応する前記リダイレクション・リストにエントリを作成するステップを含む請求項2に記載の方法。
前記クライアント・システムのユーザ・インターフェイスを通じて前記クライアント・システムのユーザから、前記要求された操作が前記ユーザのアカウントにリンクされたすべての認証ドメインのすべてのリソースにわたり、前記クライアント・システムにより実行されることを示す指示を受信するステップと、
前記初期サーバ・システムに格納されているアカウント情報に応じて、前記ユーザの前記アカウントに以前リンクされた認証ドメインを前記初期サーバ・システムにより識別するステップであって、前記ユーザの前記アカウントに以前リンクされた前記認証ドメインは、前記初期認証ドメイン以外であるステップとをさらに備え、
前記要求された操作が前記初期認証ドメイン以外の認証ドメインに位置する少なくとも1つのリソースを必要とすることを前記初期サーバ・システムにより決定することは、前記ユーザの前記アカウントに以前リンクされた前記認証ドメインを識別することに応じ、
前記リダイレクション・リストを作成するステップは、前記ユーザの前記アカウントに以前リンクされた前記認証ドメインに対応する前記リダイレクション・リストにエントリを作成するステップを含む請求項2に記載の方法。
前記初期サーバ・システムは、部分結果を前記クライアント・システムにさらに送信し、前記部分結果は、前記検索クエリと一致する前記初期認証ドメインに格納されているドキュメントのリストを備え、
前記クライアント・システムは、前記初期サーバ・システムから受信された前記部分結果を前記その他の認証ドメインから受信された前記部分結果と結合して、前記検索クエリと一致するドキュメントの前記最終リストにする請求項7に記載の方法。
前記クライアント・システムは、処理回路と、該処理回路に結合されたメモリとを備え、前記メモリは、前記処理回路によって遂行されるとき、前記クライアント・システムに、
前記その他の認証ドメインから部分結果を受信させることであって、前記その他の認証ドメインのそれぞれ1つから受信される各部分結果が、前記要求された操作をその認証ドメインに含まれる少なくとも1つのリソースに適用することによって得られる少なくとも1つの結果を備えることと、
前記その他の認証ドメインから受信された前記部分結果を単一の最終結果に集約することと、
前記最終結果を前記クライアント・システムのユーザに表示することとを行わせる命令を格納することをさらに備える請求項12に記載のシステム。
【発明を実施するための形態】
【0012】
本明細書において開示される特定の実施形態、例、および実施態様の個々の特徴は、技術に理に適う任意の望ましい方法で結合されてもよい。さらに、そのような特徴は、これによりすべての可能な組み合わせ、順列、変形を形成するためにこの方法で結合される。ただしそのような組み合わせ、順列、および/または変形が明示的に除外されているか、または実行不可能である場合を除く。そのような組み合わせ、順列、および変形のサポートは、本文書において存在するものと見なされる。
【0013】
異なる認証ドメインに位置するファイル・リポジトリ上で操作を実行するための新しいシステムが開示されている。開示されたシステムにおいて、初期認証ドメインに位置する初期アプリケーション・プログラミング・インターフェイス(API)サーバは、クライアント・システムから要求された操作を受信する。初期サーバは、操作が、複数の異なる認証ドメインにわたり実行されることを検出する。次いで、初期サーバは、初期認証ドメインとは異なる1つまたは複数の認証ドメインに位置する複数のAPIサーバを指示するエントリを有するリダイレクション・リストを生成する。初期サーバは、クライアント・システムにリダイレクション・リストを送信し、次いでクライアント・システムに、リダイレクション・リストのエントリによって指示されるAPIサービスの各々にコマンドを実行するよう命令する。初期サーバは、オプションとして、クライアント・システムに送信する部分結果をリダイレクション・リストと共に含むことができる。リダイレクション・リストのエントリによって指示されるAPIサーバは、部分結果と共にクライアント・システムによって送信されたコマンドに応答し、クライアント・システムは、受信するすべての部分結果を単一の最終結果に集約する。最終結果はクライアント・システムのユーザ・インターフェイスでクライアント・システムのユーザに表示されてもよい。
【0014】
図1は、開示されるシステムの例示的な実施形態におけるコンポーネントのブロック図である。
図1に示されるコンポーネントの操作中に、クライアント・システム10は、要求された操作30を初期アプリケーション・プログラミング・インターフェイス(API)サーバ12に送信する。初期APIサーバ12は、初期認証ドメイン14に位置する。初期認証ドメイン14は、第1のセキュア・リソース16をさらに含む。
【0015】
要求された操作30を受信したことに応じて、初期APIサーバ12は、クライアント・システム10が初期認証ドメイン14に認証されているかどうかを決定する。認証されていない場合、初期APIサーバ12は、たとえば、クライアント・システム10のユーザに初期認証ドメイン14の各自のユーザ名およびパスワードを入力するよう求めるチャレンジレスポンス認証プロトコルを通じて、または特定の実行環境に適切なその他の認証プロセスを通じて、クライアント・システム10に認証されるよう要求する。
【0016】
クライアント・システム10が初期認証ドメイン14に認証された後、初期APIサーバ12は、要求された操作30を解析して、要求された操作30を完了するために、初期認証ドメイン14の外部からのリソース(つまり、第1のセキュア・リソース16以外のリソース)を必要とするかどうかを決定する。必要としない場合、初期APIサーバ12は、第1のセキュア・リソース16からのリソースを使用して初期認証ドメイン14内で要求された操作30を処理する。それ以外の場合、要求された操作30が初期認証ドメイン14以外の1つまたは複数の認証ドメインからのリソースを必要とする場合、初期APIサーバ12は、初期認証ドメイン14とは異なる1つまたは複数の認証ドメインに位置する複数のAPIサーバを指示するエントリを有するリダイレクション・リストを生成する。たとえば、要求された操作30が、認証ドメインA20に含まれる第2のセキュア・リソース22から、および認証ドメインB26に含まれる第3のセキュア・リソース28からのリソースを必要とする場合、初期APIサーバ12は、認証ドメインA20のAPIサーバA18を指示する第1のエントリ、および認証ドメインB26のAPIサーバB24を指示する第2のエントリを有するリダイレクション・リストを生成する。
【0017】
次いで、初期APIサーバ12は、リダイレクション・リストをパーシャル・レスポンス32に格納する。初期APIサーバ12は、オプションとして、生成されたリダイレクション・リストと共に部分結果をパーシャル・レスポンス32に含むことができる。たとえば、要求された操作30が、第1のセキュア・リソース16の1つまたは複数のリソースにも適用可能である場合、初期APIサーバ12は、要求された操作30を第1のセキュア・リソース16に適用し、要求された操作30を第1のセキュア・リソース16に適用することで得られた任意の結果を、パーシャル・レスポンス30内に部分結果として格納する。代替として、要求された操作30が第1のセキュア・リソース16のリソースに適用されない場合、初期APIサーバ12は、パーシャル・レスポンス32の部分結果をヌルと等しく設定するか、または部分結果全体を省略することができる。次いで、初期APIサーバ12は、パーシャル・レスポンス32をクライアント・システム10に送信する。
【0018】
クライアント・システム10はパーシャル・レスポンス32を受信し、パーシャル・レスポンス32および/またはリダイレクション・リスト自体は、クライアント・システム10に、リダイレクション・リストに含まれるエントリによって指示されるAPIサービスの各々でコマンドを実行するよう命令する。したがって、クライアント・システム10は、コマンド1 34を生成して、それを認証ドメインA20のAPIサーバA18に送信する。コマンド1 34は、パーシャル・レスポンス32に含まれるリダイレクション・リスト内に含まれるエントリに含まれる情報に基づいてクライアント・システム10によって生成される。コマンド1 34は、ドメイン固有のコマンドである、つまり第2のセキュア・リソース22内で完全に実行され得るコマンドである。APIサーバA18は、コマンド1 34を受信し、クライアント・システム10が認証ドメインA20に以前認証されているかどうかを最初に決定する。認証されていない場合、APIサーバA18は、たとえば、クライアント・システム10のユーザに認証ドメインA20の各自のユーザ名およびパスワードを入力するよう求めるチャレンジレスポンス認証プロトコルを通じて、または特定の実行環境に適切ないくつかのその他の認証プロセスを通じて、クライアント・システム10が認証ドメインA20に認証されるよう要求する。
【0019】
クライアント・システム10が認証ドメインA20に認証された後、APIサーバA18は、第2のセキュア・リソース22でコマンド1 34を実行することにより部分結果を生成し、部分結果をレスポンス1 36に格納する。次いで、APIサーバA18は、レスポンス1 36をクライアント・システム10に送信する。
【0020】
図1の例においてさらに、クライアント・システム10は、コマンド2 38を生成して、それを認証ドメインB26のAPIサーバA24に送信する。コマンド2 38は、パーシャル・レスポンス32に含まれるリダイレクション・リスト内に含まれる別のエントリに含まれる情報に基づいてクライアント・システム10によって生成される。コマンド2 38は、コマンド2 38がコマンド1 34に関して受信される任意のレスポンスに先立って送信され得るという点において、コマンド1 34に関して非同期的にクライアント・システム10によって送信されてもよい。コマンド2 38はまた、ドメイン固有のコマンド、つまり第3のセキュア・リソース28内で完全に実行され得るコマンドである。したがって、APIサーバB24は、第3のセキュア・リソース28でコマンド2 38を実行することにより部分結果を生成し、部分結果をレスポンス2 40に格納する。次いで、APIサーバB24は、レスポンス2 40をクライアント・システム10に送信する。
【0021】
クライアント・システム10は、初期APIサーバ12から受信したレスポンス(つまり、パーシャル・レスポンス32)、APIサーバA18から受信したレスポンス(つまり、レスポンス1 36)、およびAPIサーバB24から受信したレスポンス(つまり、レスポンス2 40)を、受信した各部分結果のタイプが要求された操作30に返されると予想されるタイプと一致することを検証することによって部分的に処理する。たとえば、要求された操作30に返されると予想されるタイプが項目のフィードである場合、クライアント・システム10は、パーシャル・レスポンス32、レスポンス1 36、またはレスポンス2 40のいずれかに含まれる各部分結果オブジェクトが実際に項目のフィードであることを検証する。
【0022】
同様に、クライアント・システム10はまた、APIサーバ12、APIサーバA18、およびAPIサーバB24から受信したレスポンスを、適切な数の部分結果が要求された操作30について受信されることを検証することによって処理することができる。たとえば、要求された操作30が単一の要素のみを受信すると予想される場合、クライアント・システム10は、APIサーバ12、APIサーバA18、およびAPIサーバB24から受信されたレスポンスのうちの1つだけが任意のコンテンツを含むことを検証する。たとえば、要求された操作30が単一の要素のレスポンスのみを予想する場合、クライアント・システム10は、1つを除くレスポンスのすべてがコンテンツを有していないこと(たとえば、HTTPタイプ204−コンテンツなし)を検証する。クライアント・システム10によって受信された部分結果オブジェクトのタイプおよび合計数が検証される場合、クライアント・システム10は、すべての受信された部分結果オブジェクトを単一の最終結果42に集約し、それが、たとえばクライアント・システム10のユーザ・インターフェイスで、クライアント・システム10のユーザに表示されてもよい。
【0023】
最終結果10は、要求された操作に対して返された結果タイプであり、初期APIサーバまたはリダイレクション・リストによって指示されるAPIサーバの1つから受信されたオブジェクトのリスト、または単一のオブジェクトであってもよい。たとえば、要求された操作30が、第1のセキュア・リソース16、第2のセキュア・リソース22、および第3のセキュア・リソース28内のファイル・リポジトリの検索クエリと一致するファイルの検索(つまり、マルチドメイン検索操作)を実行するよう求める要求である場合、クライアント・システム10によって受信される各部分結果は、セキュア・リソースのそれぞれのセットにおいて検索クエリと一致するファイルのリストで構成される。具体的には、パーシャル・レスポンス32は、検索クエリと一致する第1のセキュア・リソース16内のすべてのファイルのリストである部分結果オブジェクトを含むことになり、レスポンス1 36は、検索クエリと一致する第2のセキュア・リソース22内のすべてのファイルのリストである部分結果オブジェクトを含むことになり、レスポンス2 40は、検索クエリと一致する第3のセキュア・リソース28内のすべてのファイルのリストである部分結果オブジェクトを含むことになる。次いで、クライアント・システム10は、受信した部分結果を、最終結果42としてユーザに表示するために、検索クエリと一致するファイルの単一のリストに集約する。
【0024】
要求された操作30が、クロスドメイン・コピー操作である場合、たとえば、第1の認証ドメイン(たとえば、認証ドメインA20)から第2の認証ドメイン(たとえば、認証ドメインB26)にファイルをコピーするよう求める要求である場合、1つの部分結果のみが非ヌルとなる、つまりレスポンス2 40で受信される部分結果となり、これは第3のセキュア・リソース28内のファイルコピーの識別子を含み、コピー操作が正常であったことを指示する。次いで、クライアント・システム10による部分結果集約は、単一の結果オブジェクトを処理するステップ、たとえば新しいファイルコピーのビジュアル表示を第3のセキュア・リソース28内のその新しい場所に示すことによってコピー操作が正常であったことを、ユーザ・インターフェイスを通じてユーザにレポートするステップから成る。
【0025】
もう1つの例において、要求された操作30は、複数の認証ドメイン(たとえば、認証ドメインA20と認証ドメインB26の両方)において実行される指定されたユーザのファイルに関連のあるアクティビティを記述するログ・データまたは同種のものを求める要求のような、マルチドメイン・ユーザ・アクティビティ・レポート要求であってもよい。そのようなユーザ・アクティビティ・データは、各認証ドメインによって非公開で保持され、ファイルアクセス、ファイル変更、ファイル削除などのような、複数の認証ドメインの各々1つに含まれるファイルに指定されたユーザによって実行された操作に関する、時間、ファイル名、およびその他の詳細のような情報を含むことができる。この場合、レスポンス1 36は、第2のセキュア・リソース22に含まれるファイルに関して指定されたユーザのアクションを記述するユーザ・アクティビティ・データを含む部分結果を含むことになり、レスポンス2 40は、第3のセキュア・リソース28に含まれるファイルに関して指定されたユーザのアクションを記述するユーザ・アクティビティ・データを含む部分結果を含むことになる。次いで、クライアント・システム10による部分結果集約は、たとえば、第2のセキュア・リソース22と第3のセキュア・リソース28の両方に含まれるファイルに関して指定されたユーザのすべてのファイル関連のアクティビティを示す、レポートまたは同様のものが(たとえば、クライアント・システム10のグラフィカル・ユーザ・インターフェイスを通じて)クライアント・システム10のユーザに提示されるように、レスポンス1 36およびレスポンス2 40からの部分結果データを最終結果42に結合するステップから成る。
【0026】
簡潔な説明を目的として、
図1では3つの認証ドメインのみが示されているが、開示されるシステムがそのように限定されないことを当業者であれば理解するであろう。したがって、開示されるシステムは、さまざまな認証ドメインの任意の固有の数がサポートされるように具現され操作されてもよい。
【0027】
図1に示されるクライアント・システム10ならびにAPIサーバ12、18および24は、たとえば、各々処理回路(たとえば、1つまたは複数のプロセッサ)、メモリ、および/またはその他のプログラム・ストレージ、および1つまたは複数の入力/出力インターフェイスを有する、1つまたは複数のコンピュータ・システムとして、またはコンピュータ・システム内で具現されてもよい。本明細書において説明される操作は、ソフトウェア、ファームウェア、専用ハードウェア回路、および/またはその一部の組み合わせを使用するそのようなコンピュータ・システムにおいて具現されてもよい。同様に、当業者は、
図1に示されるクライアント・システム10、ならびにAPIサーバ12、18、および24の1つまたは複数が、1つまたは複数の仮想マシンまたは同様のものとして、これらを含んで、またはこれらの中で具現されてもよいことが理解される。
【0028】
図1に示されるクライアント・システム10、ならびにAPIサーバ12、18、および24の間の通信は、たとえば、1つまたは複数のローカルエリアネットワーク(LAN)、ワイドエリアネットワーク(WAN)、および/またはインターネットのような、1つまたは複数のコンピュータまたはその他のタイプの通信ネットワークを介して提供されてもよい。クライアント・システム10、ならびにAPIサーバ12、18、および24の間の通信は、ハイパーテキスト転送プロトコル(HTTP)を含むがこれに限定されないさまざまな固有の通信プロトコルを使用することができる。
【0029】
図2は、開示されるシステムの例示的な実施形態におけるクライアント・システムおよび初期アプリケーション・プログラミング・インターフェイス(API)サーバの構造を示すブロック図である。
図2の実施形態に示されているように、クライアント・システム10は、ディスプレイ・デバイス50、通信インターフェイス52、処理回路54、およびメモリ56として示されるプログラム・ストレージを含む。ディスプレイ・デバイス50は、情報を可視の形態で提示するように動作可能な任意の固有のタイプの出力デバイスを含むか、またはそのような出力デバイスで構成されてもよい。通信インターフェイス52は、たとえば、1つまたは複数のネットワーク・インターフェイス・カード(NIC)または同種のものを含むか、またはそのようなNICで構成されてもよい。処理回路54は、たとえば、1つまたは複数のマイクロプロセッサまたは同種のものを含むか、またはそのようなマイクロプロセッサで構成されてもよい。メモリ56は、たとえば、クライアント・システム10において使用するプログラム(命令のシーケンス)および/またはデータ(たとえば、プログラム状態情報)を格納するように動作可能な任意の固有のタイプの揮発性または不揮発性の半導体メモリまたは同種のものを含むか、またはそのような半導体メモリで構成されてもよい。
【0030】
メモリ56は、処理回路54で実行するためのプログラム論理を格納する。
図2の1つの実施形態において、メモリ56は、RESTfulクライアント58として示される、REST準拠のクライアント・アプリケーション・ソフトウェアを含む。RESTfulクライアント58は、グラフィカル・ユーザ・インターフェイスの少なくとも一部をディスプレイ・デバイス50内のクライアント・システム10のユーザに提供するためのクライアント・ユーザ・インターフェイス論理60を含む。認証論理および認証資料61は、たとえば認証ドメインに位置するAPIサーバを通じて、クライアント・システム10をさまざまな異なる認証ドメインに認証するためのプログラムコードおよび/または認証資料を含む。たとえば、認証論理および認証資料61は、クライアント・システム10が、リダイレクション・リストの処理中にコンタクトされたさまざまな認証ドメインの1つまたは複数に以前認証されたという証拠を含む1つまたは複数の「認証クッキー」のような認証資料を含むことができる。したがって、そのような「認証クッキー」は、クライアント・システム10が、リダイレクション・リストの処理中に認証ドメインのAPIサーバと通信しているときにその認証ドメインに以前認証されたことを証明するために、クライアント・システム10によって使用されてもよい。認証論理および認証資料61は同様に、または代替として、たとえばLANマネージャ、NT LANマネージャ(NTLM)、ケルベロス、または任意の他の固有の認証プロトコルのような、たとえば1つまたは複数の認証プロトコルを使用して、リダイレクション・リストの処理中にコンタクトされたさまざまな認証ドメインの1つまたは複数にクライアント・システム10を認証するためのプログラムコードおよび/または認証資格情報を含むこともできる。
【0031】
操作要求/コマンド生成論理60は、
図1に示される要求された操作30、コマンド1 34、およびコマンド2 38を含む、要求された操作および/またはコマンドを生成するため、およびそのような操作および/またはコマンドを通信インターフェイス52を使用して送信するためのプログラムコードを含む。レスポンス・ハンドラ66は、複数のレスポンス・ハンドラ・プログラムコード・モジュールを含み、これらは通信インターフェイス52を通じてRESTfulクライアント58のクライアント・システム10によって受信されたメッセージ(たとえば、レスポンス)を処理することに責任を負う。したがって、クライアント・システム10がRESTfulクライアント58のレスポンス(たとえば、
図1に示されるパーシャル・レスポンス32、レスポンス1 36、またはレスポンス2 40のうちの1つ)を受信すると、RESTfulクライアント58は、レスポンスがパーシャル・レスポンスであるか、またはその他のタイプのレスポンスであるかを決定する。受信したレスポンスがパーシャル・レスポンスである場合、受信したレスポンスは、処理のためにパーシャル・レスポンス・ハンドラ64に渡される。RESTfulクライアント58のクライアント・システム10によって受信されたその他のレスポンスは、その他のレスポンス・ハンドラ66によって処理される。
【0032】
図2の例示的な実施形態においてさらに、初期APIサーバ12は、通信インターフェイス84、処理回路82、およびメモリ80として示されるプログラム・ストレージを含む。通信インターフェイス84は、たとえば、1つまたは複数のネットワーク・インターフェイス・カード(NIC)または同種のものを含むか、またはそのようなNICで構成されてもよい。処理回路82は、たとえば、1つまたは複数のマイクロプロセッサまたは同種のものを含むか、またはそのようなマイクロプロセッサで構成されてもよい。メモリ80は、たとえば、初期APIサーバ12において使用するプログラム(命令のシーケンス)および/またはデータ(たとえば、プログラム状態情報)を格納するように動作可能な任意の固有のタイプの揮発性または不揮発性の半導体メモリまたは同種のものを含むか、またはそのような半導体メモリで構成されてもよい。
【0033】
図2に示されるメモリ80は、要求およびコマンド処理論理90として示される、処理回路82で実行するためのプログラム論理、ならびに認証ドメイン・データベース88、およびユーザ・アカウント・データベース86を格納する。要求された操作(たとえば、
図1の要求された操作30)が、通信インターフェイス84を通じて初期APIサーバ12によって受信される場合、要求は、要求およびコマンド解析論理92に渡される。要求およびコマンド解析論理92は、要求された操作を実行することが、ローカル認証ドメイン以外(たとえば、
図1の初期認証ドメイン14以外)の1つまたは複数の認証ドメインに位置する1つまたは複数のリソースにアクセスすることを必要とするかどうかを決定する。必要とする場合、要求された操作は、処理のためにマルチ認証ドメイン操作要求処理論理94に渡される。それ以外の場合、受信した要求された操作が、ローカル認証ドメイン内に含まれる(たとえば、
図1の初期認証ドメイン内に含まれる)リソースを使用して、完全に実行され得る場合には、要求された操作は、その他のコマンド処理論理96に渡される。
【0034】
たとえば、要求およびコマンド解析論理92は、受信した要求された操作がローカル認証ドメインの外部に含まれるリソースの任意の指示を含むかどうかを決定するために、受信した要求された操作の内容を調べることができる。そのような指示は、たとえば、ローカル認証ドメイン以外の認証ドメインに位置する1つまたは複数のファイル・リポジトリ内の1つまたは複数のファイルまたはファイルの場所を指定する1つまたは複数のパスを含み得る。受信した要求された操作がローカル認証ドメイン外部に含まれるリソースの任意の指示を含む場合、受信した要求された操作は、処理のためにマルチ認証ドメイン操作要求処理論理94に渡される。
【0035】
もう1つの例において、要求およびコマンド解析論理92は、受信した要求された操作に関連付けられているユーザが以前、ローカル認証ドメイン以外の1つまたは複数の認証ドメインにそのアカウントをリンクしていたかどうかを決定するために、ユーザ・アカウント・データベース86のコンテンツを調べることができる。以前ユーザのアカウントにリンクされたそのような認証ドメインの参照(名前、パス、URLなど)は、たとえば、ユーザに関連付けられ、ユーザ・アカウント・データベース86に含まれるエントリに格納されてもよい。受信した要求されたコマンドが、ユーザのアカウントにリンクされたすべての認証ドメインにわたりコマンドが実行されるべきであることを指示する場合、およびユーザのアカウントが、ローカル認証ドメイン以外の少なくとも1つの認証ドメインにリンクされている場合、受信した要求された操作は、処理のためにマルチ認証ドメイン操作要求処理論理94に渡される。
【0036】
マルチ認証ドメイン操作要求処理論理94は、パーシャル・レスポンス(たとえば、
図1のパーシャル・レスポンス32)を生成することによって、および要求された操作を送信したクライアント・システム(たとえば、クライアント・システム10)にパーシャル・レスポンスを送信することによって、要求された操作を処理する。マルチ認証ドメイン操作要求処理論理94によって生成されたパーシャル・レスポンスは、要求された操作を完了するために、要求側クライアント・システムによってコンタクトされるべき1つまたは複数のその他の認証ドメインを指示するエントリを有するダイレクトリストを含む。リダイレクション・リストの各エントリの内容は、認証ドメインがクライアント・システムによってコンタクトされる方法を指示する情報(たとえば、APIサーバのURL)を含む。所与の認証ドメインがコンタクトされる方法を指示するそのような情報は、認証ドメイン・データベース88からマルチ認証ドメイン操作要求処理論理94によって取得されてもよい。認証ドメイン・データベース88は、ローカル認証ドメイン以外の1つまたは複数の異なる認証ドメインを記述する情報を含む。そのような情報は、たとえば、各認証ドメインがクライアント・システム10のようなクライアント・システムによってコンタクトされる方法を記述する情報を含むことができる。所与の認証ドメインがクライアント・システムによってコンタクトされる方法を記述する情報は、たとえば、認証ドメイン内の、クライアント・システムからコマンドを受信することに責任を負うAPIサーバのURLを含むことができる。
【0037】
マルチ認証ドメイン操作要求処理論理94はまた、オプションとして、パーシャル・レスポンスに含まれるべき部分結果を生成することによって、要求された操作を処理するように動作することもできる。たとえば、部分結果は、ローカル認証ドメイン内に含まれるリソースで要求された操作を実行することによって得られた結果を含むことができる。
【0038】
図3は、開示されるシステムの例示的な実施形態における初期アプリケーション・プログラミング・インターフェイス(API)サーバによって生成され、このサーバから送信されるパーシャル・レスポンスの構造の少なくとも一部の例を示すブロック図である。
図3に示されるように、パーシャル・レスポンス32は、HTTPレスポンス・タイプ150、アプリケーション・レスポンス・タイプ152、部分結果オブジェクト154、および例示の目的で示されるリダイレクション・リスト・エントリ1 156から、リダイレクション・リスト・エントリ2 158、リダイレクション・リスト・エントリ3 160、リダイレクション・リスト・エントリN 162に至る複数のリスト・エントリで構成されるリダイレクション・リスト155を含む。HTTPレスポンス・タイプのコンテンツは、たとえば、HTTPレスポンスステータス200のような、HTTPレスポンス・ステータスコードを含むことができる。アプリケーション・レスポンス・タイプ152のコンテンツは、たとえば、RESTfulクライアント58(
図2)に関するレスポンスのタイプが「パーシャル・レスポンス」であるので、RESTfulクライアント58に、レスポンスをパーシャル・レスポンス・ハンドラ64に向けさせることを指示するコードまたは値を含むことができる。部分結果オブジェクト154は、オブションであり、存在する場合は、たとえば、初期APIサーバが位置する同じ認証ドメインに位置する1つまたは複数のリソースに要求された操作を適用した結果を含むことができる。
【0039】
リダイレクション・リスト内の各エントリ156は、要求された操作を完了するために、クライアントが、クライアントによってコンタクトされるべきその他の認証ドメインの1つにコンタクトする方法を指示する。
【0040】
図4の例示のリダイレクション・リスト・エントリ200によって示されるように、リダイレクション・リスト・エントリは、URL202、メソッド204、および本体206を含む。URL202は、リダイレクション・リスト・エントリ200の認証ドメインに位置するAPIサーバのWebアドレスであり、クライアントが認証ドメインにコンタクトする場合にクライアントによって使用されるものである。メソッド204は、たとえば、クライアントが認証ドメインにコンタクトする場合にクライアントによって使用されるHTTP要求メソッド(たとえば、GET、POSTなど)である。本体206は、たとえば、URL202によって指示されるAPIサーバにクライアント・システムによって送信された要求と共に含まれるべき、たとえばJavaScript Object Notation(JSON)ドキュメントのような、その他の情報を含む。
【0041】
図5は、例示的な実施形態における異なる認証ドメインにわたる操作の要求を処理するために初期APIサーバによって実行されるステップの例を示す流れ図である。
図5に示されるステップは、たとえば、
図1および
図2に示される初期APIサーバ12(「初期サーバ」)によって実行されてもよい。ステップ300において、初期サーバは、クライアント・システムから要求された操作を受信する。ステップ300において受信される操作は、たとえば、クロスドメイン・コピー、マルチドメイン検索、またはマルチドメイン・ユーザ・アクティビティ・レポート要求のような、任意の固有のマルチドメイン操作であってもよい。ステップ302において、初期サーバは、要求された操作を解析し、操作の完了には、ローカル認証ドメイン以外の認証ドメインからの少なくとも1つのリソースが必要であることを決定する。たとえば、初期サーバは、要求された操作を解析して、操作が、ローカル認証ドメインの外部に位置するファイル・リポジトリ内のファイルの場所を指示する1つまたは複数のパスを含むことを決定することができる。操作の完了には、ローカル認証ドメイン以外の1つまたは複数の認証ドメインからのリソースが必要であることを決定するステップに応じて、ステップ304において、初期サーバは、リダイレクション・リストを生成する。ステップ304において生成されたリダイレクション・リストは、クライアントが、要求された操作を完了するためにコンタクトすべき認証ドメインの各々に対するリスト・エントリを含む。たとえば、クロスドメイン・コピーの場合、リダイレクション・リストは、i)コピーされるべきファイルが現在位置しているソース認証ドメインのAPIサーバを指示する第1のエントリ、ii)ファイルがコピーされるべきターゲット認証ドメインのAPIサーバを指示する第2のエントリ、iii)ファイルをソース認証ドメイン内のその現在の場所からターゲット認証ドメイン内の場所にコピーするようクライアントによって命じられるべきAPIサーバを指示する第3のエントリ、(送信側APIサーバはソース、ターゲット、または一部のその他の認証ドメインのいずれかに位置してもよい)を含む。
【0042】
もう1つの例において、マルチドメイン検索の場合、リダイレクション・リストは、元の要求された操作で指示された検索クエリと一致するファイルを検索されるべき異なる認証ドメインの各々に対するエントリを含む。およびさらなる例において、マルチドメイン・ユーザ・アクティビティ・レポート要求の場合、リダイレクション・リストは、指定されたユーザに関するファイルアクティビティ情報を取得されるべき異なる認証ドメインの各々に対するエントリを含む。
【0043】
ステップ306において、初期サーバは、オプションとして、要求された操作をローカル認証ドメインに含まれるリソースに適用することによって、部分結果オブジェクトを生成する。たとえば、マルチドメイン検索の場合、初期サーバは、元の要求された操作からの検索クエリと一致するローカル認証ドメイン内に位置するすべてのファイルのリストである部分結果オブジェクトを作成することができる。
【0044】
ステップ308において、初期サーバは、リダイレクション・リストおよび任意の部分結果オブジェクトを、ステップ310において初期サーバからクライアント・システムに送信するために、パーシャル・レスポンスに格納することができる。
【0045】
図6は、開示されるシステムの例示的な実施形態における異なる認証ドメインにわたる操作を実行するためにRESTfulクライアント・システムによって実行されるステップの例を示す流れ図である。
図6に示されるステップは、たとえば、
図1および
図2に示されるクライアント・システム10(「クライアント・システム」)によって実行されてもよい。ステップ400において、クライアント・システムは、マルチドメイン操作の要求を受信する。たとえば、クライアント・システムは、ステップ400において、クライアント・システムによって生成されたグラフィカル・ユーザ・インターフェイスで実行されるユーザアクションの指示を受信することができる。グラフィカル・ユーザ・インターフェイスで実行されるユーザアクションは、i)要求されるべき操作のタイプ(たとえば、検索、コピー、ユーザ・アクティビティ・レポート要求など)、およびii)操作が実行されるべき複数の認証ドメイン(たとえば、マルチドメイン検索で検索されるべきドメイン、クロスドメイン・コピーのためのソースおよびターゲット・ドメイン、アクティビティがマルチドメイン・ユーザ・アクティビティ・レポート要求のために取得されるべきドメインなど)を含むことができる。ステップ400において受信された要求に応じて、クライアント・システムは、要求された操作を生成する。操作が実行されるべき認証ドメインを識別する、パスまたは同種のもののような指示は、クライアント・システムが要求された操作を生成するとき、クライアント・システムによって要求された操作に格納される。あるいは、ユーザのアカウントに以前リンクされたすべての認証ドメインにわたり実行されるべき要求された操作の場合、クライアント・システムは、クライアント・システムが要求された操作を生成するときに要求された操作内のユーザのアカウントにリンクされたすべての認証ドメインにわたり要求された操作が実行されることを示す指示を含む。次いで、クライアント・システムは、ステップ402において、要求された操作を初期APIサーバに送信する。
【0046】
クライアント・システムは、APIサーバからレスポンスを受信し、ステップ404において、レスポンスがパーシャル・レスポンスであることを決定して、パーシャル・レスポンスをパーシャル・レスポンス・ハンドラ(たとえば、
図2のパーシャル・レスポンス・ハンドラ64)に渡す。パーシャル・レスポンスが部分結果オブジェクトを含む場合、クライアント・システムは、ステップ406において、パーシャル・レスポンスから部分結果オブジェクトを格納する。リダイレクション・リストに含まれている任意の部分結果オブジェクトは、要求された操作のドキュメント化されたレスポンス・タイプと同じであるタイプを有するはずである。たとえば、要求された操作が項目のフィードを返す場合、初期APIサーバからクライアント・システムに送信される任意の部分結果は、項目のフィードでなくてはならない。1つの実施形態において、初期APIサーバがクライアント・システムに送信する部分結果を有していない場合、初期APIサーバは、ヌルの値を有する部分結果をクライアント・システムに送信する。
【0047】
ステップ408において、クライアント・システムは、リダイレクション・リストを処理する。410において、リダイレクション・リストの処理に応じて、リダイレクション・リストの各エントリについて、クライアント・システムは、コマンドを作成して、それをパーシャル・レスポンスを生成した初期APIサーバを含む認証ドメイン以外の認証ドメインのAPIサーバに送信する。ステップ410において送信されたコマンドは、各コマンドが、以前送信されたコマンドのいずれか1つに対して任意のレスポンスが受信される前に送信され得るという点において、非同期的に送信されてもよい。ステップ410において送信されたコマンドの各々は、クライアント・システムが、コマンドが送信された認証ドメインに認証されることが必要になるという結果をもたらし得る。たとえば、ステップ410において送信されたコマンドの1つまたは複数は、宛先APIサーバが、クライアント・システムとのチャレンジレスポンス認証プロトコルを実行するという結果をもたらし得る。そのような場合、APIサーバは、質問(「チャレンジ」)を提示し、クライアント・システムは、APIサーバを含む認証ドメインに認証されるために有効な回答(「レスポンス」)を提供する必要がある。チャレンジレスポンスプロトコルは、たとえば、パスワード認証を必要とすることがあるが、この場合、クライアント・システムは、クライアント・システムのユーザのパスワードから成る有効なレスポンスを提供することができる。その他のタイプの認証プロトコルは、クライアント・システムを、リダイレクション・リストのエントリによって指示される各認証ドメインに認証するために実行されてもよい。あるいは、クライアント・システムが、リダイレクション・リストのエントリによって指示される認証ドメインに以前認証されている場合、クライアント・システムは、たとえば認証クッキーまたは同種のもののような、クライアント・システムに以前格納された認証資料の形態の、その以前の認証の証拠を認証ドメインに含まれるAPIサーバに提供することができる。
【0048】
ステップ412において、クライアント・システムは、初期APIサーバから、およびステップ410で発行されたコマンドへのレスポンスで受信した結果を、単一の最終結果に集約する。たとえば、要求された操作が「フィード」を返す場合、パーシャル・レスポンスおよび/またはステップ410で発行されたコマンドへのレスポンスにおけるすべての部分結果は、同じタイプのフィードでなければならず、クライアント・システムは、すべての受信した部分結果を、最終結果である単一のリストにそれらを連結することによって集約する。もう1つの例において、要求された操作が単一の要素レスポンスを返す場合、パーシャル・レスポンスまたはステップ410で発行されたコマンドへのレスポンスの1つのみが部分結果を含み、ステップ410で発行されたコマンドへのレスポンスのすべてのその他のレスポンスは、204−コンテンツなしのステータスコードを有する。次いで、クライアント・システムは、ステップ414において、アプリケーションのグラフィカル・ユーザ・インターフェイスを通じてクライアント・システムのユーザに最終結果を表示する。
【0049】
図7は、ユーザが異なる認証ドメインにわたり実行されるべき操作を指定できるようにする、開示されるシステムの例示的な実施形態によって生成されるグラフィカル・ユーザ・インターフェイスの一部における特徴を示す簡略化されたスクリーンショットを示す図である。
図7に示されるアプリケーション・ユーザ・インターフェイス500は、たとえば、ディスプレイ・デバイス50を通じてクライアント・ユーザ・インターフェイス論理60によってクライアント・システム10(
図1および
図2)のユーザに表示されてもよい。
図7に示されるように、アプリケーション・ユーザ・インターフェイス500は、フォルダ1 504からフォルダ2 506、フォルダN 508に至るフォルダ表現502を含む。フォルダ表現502の各々は、異なる認証ドメインに位置するファイル・リポジトリ(たとえば、ファイル・サーバ・システムまたはファイル共有サービス)を表すことができる。たとえば、
図1を参照すると、フォルダ1 504は、認証ドメインA20に位置するファイル・リポジトリを表すことができ、フォルダ2 506は、認証ドメインB26に位置するファイル・リポジトリを表すことができる。したがって、クライアント・システム10のユーザは、フォルダ1 504を選択する(たとえば、クリックする)ことによって認証ドメインA20に位置するファイル・リポジトリを選択することができる、および/またはフォルダ2 506を選択する(たとえば、クリックする)ことによって認証ドメインB26に位置するファイル・リポジトリを選択することができる。同様に、クライアント・システム10のユーザは、フォルダ1 504をダブルクリックすることによって認証ドメインA20に含まれるファイル・リポジトリに含まれるファイルからブラウズおよび選択することができ、フォルダ2 506をダブルクリックすることによって認証ドメインB26に含まれるファイル・リポジトリに含まれるファイルからブラウズおよび選択することができる。
【0050】
ファイル・コマンド510は、コマンド1 512から、コマンド2 514、コマンド3 516、コマンドN 518までを含むことが示されている。ファイル・コマンド510は、1つまたは複数の現在選択されているファイル、ファイル・リポジトリなどに関して実行されるべき固有の要求された操作を指示するためにユーザが選択することができるユーザ・インターフェイス表示オブジェクト(たとえば、ボタン)の例である。たとえば、コマンド1 512をクリックすることで、1つまたは複数の現在選択されているファイル・リポジトリに関して検索操作をトリガーすることができる。したがって、ユーザが、フォルダ1 504およびフォルダ2 506を選択した後にコマンド1 512をクリックする場合、マルチドメイン検索操作は、検索項目と一致するファイルを探して、認証ドメインA20のファイル・リポジトリおよび認証ドメインB26のファイル・リポジトリを検索するよう開始されることになる。そのような要求された操作は、認証ドメインA20および認証ドメインB26を指示するパスを含む。
【0051】
あるいは、コマンド1 512をクリックすることで、クライアント・システム10のユーザに関連付けられているアカウントに以前リンクされたすべての認証ドメインに位置するすべてのファイル・リポジトリに関して検索操作をトリガーすることができる。その場合、要求された操作は、検索操作が、ユーザに関連付けられているアカウントに以前リンクされたすべての認証ドメインのすべてのファイル・リポジトリにわたり実行されることを示す指示を含むように生成される。
【0052】
もう1つの例において、コマンド2 514をクリックすることで、現在選択されているファイルを、続いて選択されるターゲット・ファイルの場所またはリポジトリにコピーするコピー操作をトリガーすることができる。したがって、ユーザが、フォルダ1 504内をブラウズしながら、認証ドメインA20に位置するファイル・リポジトリに含まれるファイルを選択し、次いでコマンド2 514をクリックし、次いで認証ドメインB26内のファイル・リポジトリがコピーのターゲットであることを指示する場合、クロスドメイン・コピー操作が、認証ドメインA20に位置するファイル・リポジトリから、認証ドメインB26に位置するファイル・リポジトリに選択されたファイルをコピーするように開始される。
【0053】
およびもう1つの例において、コマンド3 516をクリックすることで、1つまたは複数の現在選択されているファイル・リポジトリにわたり以前指示されたユーザに関してユーザ・アクティビティ・レポート要求をトリガーすることができる。したがって、ユーザが、フォルダ1 504およびフォルダ2 506が選択されている間にコマンド3 516をクリックする場合、マルチドメイン・ユーザ・アクティビティ・レポート要求は、認証ドメインA20に位置するファイル・リポジトリと認証ドメインB26に位置するファイル・リポジトリの両方にわたり以前指示されたユーザによって実行されたすべてのファイル操作を記述するログ・データを収集するよう開始されることになる。あるいは、コマンド3 516をクリックすることで、クライアント・システム10のユーザに関連付けられているアカウントに以前リンクされたすべての認証ドメインに位置するすべてのファイル・リポジトリにわたり以前指示されたユーザに関してユーザ・アクティビティ・レポート要求をトリガーすることができる。
【0054】
当業者であれば、
図7に示される固有のユーザ・インターフェイス・オブジェクト(つまり、ボタン)が、簡便な例示および説明の目的のために提供されているに過ぎず、開示されるシステムが、それらの固有のユーザ・インターフェイス・オブジェクトを使用して、開示されるシステムによってサポートされるマルチドメイン操作にユーザアクセスを提供する実施形態に限定されないことを理解するであろう。任意の適切なタイプのグラフィカル制御要素(たとえば、ドロップダウンメニュー、ポップアップメニュー、コンテキストメニュー、サブメニューなど)は、ファイル・コマンド510に示されるボタンまたはフォルダ表現502に示されるフォルダの機能的な代替として使用されてもよい。さらに、アプリケーション・ユーザ・インターフェイス500自体は、簡略化された表現で示され、示されているもの以外のさまざまなユーザ・インターフェイス表示オブジェクトは、必要に応じて固有の実施形態に含まれるかまたは追加されてもよい。
【0055】
このように、異なる認証ドメインに位置する複数のファイル・リポジトリ上で操作が実行されるようにする固有の特徴を有し、しかも以前のシステムにまさる大幅な改善をもたらす、操作を実行するための新しいシステムが開示される。開示されるシステムは、異なる認証ドメイン上で要求された操作を効果的に実行し、しかもクライアント・システムのみが異なるドメインで操作を実行した結果として異なるドメインから取り出されたデータにアクセスできるようにすることを含む、以前の手法にまさる固有の改善をもたらす。取り出されたデータは、それぞれの認証ドメインからクライアント・システムに直接送信されるので、開示されるシステムは、認証済みの要求側クライアント・システムの外部への顧客データの公開を回避することにより、ひいてはデータ・プライバシー保護を提供することにより、以前のシステムにまさる改善をもたらす。したがって、以前の手法とは対照的に、開示されるシステムは、多くのサービスとしてのソフトウェア(SaaS)プロバイダ環境のような、データ・プライバシー保護要件を有するコンテキストにおける使用に適している。
【0056】
開示されるシステムはまた、Representational State Transfer(REST)準拠のクライアントを使用することによって以前のシステムにまさる改善をもたらす。開示されるシステムによって生成されるリダイレクション・リストを処理するために、クライアントは、有利なことに、一連の非同期的に発行されるドメイン固有の操作を使用する必要があるだけで、リダイレクション・リストのエントリによって指示されるAPIサーバは、各自の認証ドメイン内のクライアント・システムから送信されるコマンドを処理する必要があるだけである。このようにして、開示されるシステムは、比較的軽量のクライアントを有するという望ましいRESTの目標を満足し、したがってRESTクライアント−サーバ・アーキテクチャの制約に適合する。
【0057】
上記の説明は、固有のシステム、デバイス、および/またはコンポーネントを指示するためにさまざまな固有の用語を使用して実施形態の例を提供するが、そのような用語は、例示的なものであり、利便性および簡潔な説明を目的として使用されているに過ぎない。開示されるシステムは、上記で使用される用語によって識別されるシステム、デバイスおよび/またはコンポーネントを含むかまたは伴う実施形態に限定されることはない。
【0058】
当業者によって理解されるように、本発明の態様は、システム、方法、またはコンピュータ・プログラム製品として具現されてもよい。したがって、本発明の態様は、完全にハードウェアの実施形態、完全にソフトウェアの実施形態(ファームウェア、常駐ソフトウェア、マイクロコードなどを含む)、または本明細書においてすべてが概して「回路」、「モジュール」もしくは「システム」と称され得るソフトウェアおよびハードウェアの態様を組み合わせる実施形態の形をとることができる。さらに、本発明の態様は、コンピュータ可読プログラムコードを具現させた1つまたは複数の非一時的コンピュータ可読ストレージ媒体において具現されたコンピュータ・プログラム製品の形をとることができる。
【0059】
1つまたは複数のコンピュータ可読ストレージ媒体の任意の組み合わせが使用されてもよい。コンピュータ可読ストレージ媒体は、たとえば、ポータブル・コンピュータ・ディスケット、ハードディスク、ランダムアクセスメモリ(RAM)、読取り専用メモリ(ROM)、消去可能プログラマブル読取り専用メモリ(EPROMまたはフラッシュメモリ)、ポータブルコンパクトディスク読取り専用メモリ(CD−ROM)、光ストレージ・デバイス、磁気ストレージ・デバイス、または前述のものの任意の適切な組み合わせであってもよいが、これらに限定されることはない。本文書のコンテキストにおいて、コンピュータ可読ストレージ媒体は、命令実行システム、装置、またはデバイスによって、またはこれらと接続して使用するプログラムを含むかまたは格納することができる任意の非一時的有形の媒体であってもよい。
【0060】
開示されるシステムは、完全にソフトウェアベースの実施形態、完全にハードウェアベースの実施形態、またはソフトウェアおよびハードウェア要素を共に含む実施形態の形をとることができる。図面は、本発明の実施形態による方法、装置、およびコンピュータ・プログラム製品のブロック図および流れ図の説明図を含む。そのような図面の各ブロック、およびそれらのブロックの組み合わせが、コンピュータ・プログラム命令によって実施され得ることが理解されるであろう。これらのコンピュータ・プログラム命令は、コンピュータまたはその他のプログラマブル・データ処理装置上で実行する命令が、単一または複数のブロックにおいて指定される機能を実施するための手段を作成するように、コンピュータまたはその他のプログラマブル・データ処理装置にロードされてマシンを生成することができる。これらのコンピュータ・プログラム命令はまた、特定の方式で機能するようにコンピュータまたはその他のプログラマブル・データ処理装置を指図することができるコンピュータ可読メモリに格納されて、コンピュータ可読メモリに格納された命令が、単一または複数のブロックにおいて指定される機能を実施する命令手段を含む製造品を生成するようにされてもよい。コンピュータ・プログラム命令はまた、コンピュータまたはその他のプログラマブル・データ処理装置にロードされて、コンピュータまたはその他のプログラマブル装置上で実行する命令が、単一または複数のブロックにおいて指定される機能を実施するためのステップを提供するように、コンピュータ実施のプロセスを生成するためにコンピュータまたはその他のプログラマブル装置上で一連の操作ステップが実行されるようにすることができる。
【0061】
当業者であれば、本発明の機能を定義するプログラムが、(a)非書き込み可能ストレージ媒体(たとえば、コンピュータI/Oアタッチメントによって読取り可能なROMまたはCD−ROMディスクのようなコンピュータ内の読取り専用メモリ・デバイス)に永続的に格納された情報、または(b)書き込み可能ストレージ媒体(たとえば、フロッピーディスクおよびハードドライブ)に変更可能に格納された情報を含むがこれらに限定されることはない多数の形態で、コンピュータに搬送され得ることを容易に理解すべきである。
【0062】
本発明は、上記の例示的な実施形態を通じて説明されているが、開示される本明細書における発明の概念を逸脱することなく、例示される実施形態の変更および変形が行なわれてもよいことが当業者には理解されよう。