(57)【特許請求の範囲】
【請求項１】
マルチテナントアプリケーションサーバ環境における複数の編集セッションをサポートするためのシステムであって、
各々が１つ以上のマイクロプロセッサを含む１つ以上のコンピュータと、
前記コンピュータ上のアプリケーションサーバ環境とを備え、前記アプリケーションサーバ環境は、１つ以上のパーティションを有するドメインと、前記ドメインおよび前記１つ以上のパーティションを構成するドメイン構成とを含み、前記システムはさらに、
前記ドメイン構成を変更する際に使用するための複数の方法を含む管理ＡＰＩと、
複数の並行編集セッションとを備え、各並行編集セッションは、前記ドメイン構成のスナップショットを編集するように構築され、前記システムはさらに、
前記ドメイン内の並行セッションマネージャを備え、前記並行セッションマネージャは、前記複数の並行編集セッションによってなされた変更におけるコンフリクトを検出しアドミニストレータに通知するように動作する、システム。
【請求項２】
前記並行セッションマネージャは、
前記ドメイン構成と、前記ドメイン構成のスナップショットに対してアドミニストレータが行なった変更との間の第１の相違を求めるステップと、
前記ドメイン構成のスナップショットと、前記ドメイン構成との間の第２の相違を求めるステップと、
前記第１の相違および前記第２の相違を比較するステップとを実行することにより、前記コンフリクトを検出する、請求項１に記載のシステム。
【請求項３】
前記アドミニストレータはシステムアドミニストレータであり、前記複数の編集セッションは、それぞれ異なるシステムアドミニストレータによって開始される、請求項１または２に記載のシステム。
【請求項４】
前記複数の並行編集セッションは、それぞれ異なるパーティションアドミニストレータによって開始される、請求項１または２に記載のシステム。
【請求項５】
前記複数の並行編集セッションは各々、システムアドミニストレータおよびパーティションアドミニストレータによって開始される、請求項１〜４のいずれかに記載のシステム。
【請求項６】
前記並行セッションマネージャは、前記アドミニストレータが前記管理ＡＰＩを用いて有効化アクションを実行することにより、前記アドミニストレータによってなされた変更を前記ドメイン構成にマージするときに、呼出される、請求項１〜５のいずれかに記載のシステム。
【請求項７】
前記アドミニストレータは、表示された前記コンフリクトを見て確認した後に前記管理ＡＰＩを用いて解決アクションを実行するとともに、前記管理ＡＰＩを用いて有効化アクションを実行する、請求項１〜６のいずれかに記載のシステム。
【請求項８】
前記アドミニストレータによってなされた変更は、コンフリクトが検出されない場合に前記ドメイン構成にマージされる、請求項６に記載のシステム。
【請求項９】
前記スナップショットは、前記並行セッションマネージャがコンフリクトを検出する際に使用するために記憶域に残される、請求項１〜６のいずれかに記載のシステム。
【請求項１０】
前記スナップショットを残すことは、前記スナップショットに関連付けられたアドミニストレータが有効化アクションを実行するときに行なわれる、請求項９に記載のシステム。
【請求項１１】
マルチテナントアプリケーションサーバ環境における複数のパーティションおよび編集セッションをサポートするための方法であって、
アプリケーションサーバ環境を１つ以上のコンピュータ上に与えるステップを含み、前記アプリケーションサーバ環境は、１つ以上のパーティションを有するドメインと、前記ドメインおよび前記パーティションを構成するドメイン構成と、前記ドメイン構成を変更する際に使用するための管理ＡＰＩとを含み、
前記管理ＡＰＩを介して複数の並行編集セッションから変更を受けるステップを含み、各並行編集セッションは、前記ドメイン構成のスナップショットを編集するように構築され、
前記受けた変更におけるコンフリクトを検出するステップと、
前記コンフリクトの解決についてアドミニストレータに通知するステップとを含む、方法。
【請求項１２】
コンピュータシステムによって実行されると前記コンピュータシステムに請求項１１に記載の方法を実行させる機械読取可能なフォーマットのプログラム命令を含むコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
著作権に関する注意
本特許文献の開示の一部には、著作権保護の対象となるものが含まれている。著作権者は、この特許文献または特許開示の何者かによる複製が、特許商標庁の特許ファイルまたは記録にある限り、それに対して異議を唱えないが、そうでなければ、いかなる場合もすべての著作権を留保する。
【０００２】
発明の分野：
本発明の実施形態は、概して、アプリケーションサーバおよびクラウド環境に関し、特に、マルチテナントアプリケーションサーバ環境における複数のパーティションおよび編集セッションをサポートするためのシステムおよび方法に関する。
【背景技術】
【０００３】
背景：
ソフトウェアアプリケーションサーバは、その例として、Oracle WebLogic Server（ＷＬＳ）およびGlassfishを含んでおり、概して、エンタープライズソフトウェアアプリケーションを実行するための管理された環境を提供する。近年、クラウド環境において使用するための技術も開発されており、ユーザまたはテナントが、クラウド環境内でそれらのアプリケーションを開発して実行することが可能になり、かつ、環境によって提供される分散型リソースを活用することが可能になっている。
【発明の概要】
【課題を解決するための手段】
【０００４】
概要：
一実施形態に従い、本明細書において、マルチテナントアプリケーションサーバ環境における編集セッションをサポートするためのシステムおよび方法が説明される。一実施形態に従うと、第１のアドミニストレータまたはユーザは、あるパーティションに対して使用するための名前付き編集セッションを取得し、変更を実施し、これらの変更を有効化することができる。別のアドミニストレータまたはユーザは、並行して名前付き編集セッションを作成することができる。同時に発生する、ある変更と別のユーザによる変更との間にコンフリクトがある場合、アドミニストレータは、変更を有効化するときにエラーを受信することができる。その時点で、アドミニストレータは、このコンフリクトを解決し変更を有効化することができる。有効化されると、編集セッションにおける変更は、グローバル編集構成（configuration）に適用される。
【図面の簡単な説明】
【０００５】
【図１】一実施形態に従った、アプリケーションサーバ、クラウドまたは他の環境においてマルチテナンシをサポートするためのシステムを示す図である。
【図２】一実施形態に従った、アプリケーションサーバ、クラウドまたは他の環境においてマルチテナンシをサポートするためのシステムをさらに示す図である。
【図３】一実施形態に従った、アプリケーションサーバ、クラウドまたは他の環境においてマルチテナンシをサポートするためのシステムをさらに示す図である。
【図４】一実施形態に従った、例示的なマルチテナント環境で使用されるドメイン構成を示す図である。
【図５】一実施形態に従った例示的なマルチテナント環境をさらに示す図である。
【図６】一実施形態に従った、アプリケーションサーバ、クラウドまたは他の環境における複数の編集セッションをサポートするためのシステムを示す図である。
【図７】一実施形態に従った、アプリケーションサーバ、クラウドまたは他の環境における複数の編集セッションをサポートするためのシステムをさらに示す図である。
【図８】一実施形態に従った、アプリケーションサーバ、クラウドまたは他の環境における複数の編集セッションをサポートするためのシステムをさらに示す図である。
【図９】一実施形態に従った、アプリケーションサーバ、クラウドまたは他の環境における複数の編集セッションをサポートするためのシステムをさらに示す図である。
【図１０】一実施形態に従った、アプリケーションサーバ、クラウドまたは他の環境における複数の編集セッションをサポートするための方法を示す図である。
【発明を実施するための形態】
【０００６】
詳細な説明：
一実施形態に従い、本明細書において、マルチテナントアプリケーションサーバ環境における編集セッションをサポートするためのシステムおよび方法が説明される。一実施形態に従うと、第１のアドミニストレータまたはユーザは、あるパーティションに対して使用するための名前付き編集セッションを取得し、変更を実施し、これらの変更を有効化することができる。別のアドミニストレータまたはユーザは、並行して名前付き編集セッションを作成することができる。同時に発生する、ある変更と別のユーザによる変更との間にコンフリクトがある場合、アドミニストレータは、変更を有効化するときにエラーを受信することができる。その時点で、アドミニストレータは、このコンフリクトを解決し変更を有効化することができる。有効化されると、編集セッションにおける変更は、グローバル編集構成（configuration）に適用される。
【０００７】
アプリケーションサーバ（たとえば、マルチテナント（Multi-Tenant：ＭＴ）環境
図１は、一実施形態に従った、アプリケーションサーバ、クラウドまたは他の環境においてマルチテナンシをサポートするためのシステムを示す。
【０００８】
図１に示されるように、一実施形態に従うと、アプリケーションサーバ（たとえばマルチテナント（ＭＴ））環境１００または他のコンピューティング環境は、ソフトウェアアプリケーションのデプロイメントおよび実行を可能にするものであって、アプリケーションサーバドメインを定義するために実行時に用いられるドメイン１０２構成を含み、当該ドメイン１０２構成に従って動作するように構成することができる。
【０００９】
一実施形態に従うと、アプリケーションサーバは、実行時に使用されるよう定義される１つ以上のパーティション１０４を含み得る。各々のパーティションは、グローバルユニークパーティション識別子（identifier：ＩＤ）およびパーティション構成に関連付けることができ、さらに、リソースグループテンプレートの参照１２６および／またはパーティション特有のアプリケーションもしくはリソース１２８とともに、１つ以上のリソースグループ１２４を含み得る。ドメインレベルのリソースグループ、アプリケーションおよび／またはリソース１４０も、任意にはリソースグループテンプレートの参照とともに、ドメインレベルで定義することができる。
【００１０】
各々のリソースグループテンプレート１６０は、１つ以上のアプリケーションＡ１６２、Ｂ１６４、リソースＡ１６６、Ｂ１６８および／または他のデプロイ可能なアプリケーションもしくはリソース１７０を定義することができ、リソースグループによって参照することができる。たとえば、図１に例示されるように、パーティション１０４におけるリソースグループ１２４は、リソースグループテンプレート１６０を参照する（１９０）ことができる。
【００１１】
概して、システムアドミニストレータは、パーティション、ドメインレベルのリソースグループおよびリソースグループテンプレート、ならびにセキュリティ領域を定義することができるとともに、パーティションアドミニストレータは、たとえば、パーティションレベルのリソースグループを作成するか、アプリケーションをパーティションにデプロイするかまたはパーティションについての特定の領域を参照することによって、それら自体のパーティションのアスペクトを定義することができる。
【００１２】
図２は、一実施形態に従った、アプリケーションサーバ、クラウドまたは他の環境においてマルチテナンシをサポートするためのシステムをさらに示す。
【００１３】
図２に示されるように、一実施形態に従うと、パーティション２０２は、たとえば、リソースグループテンプレート２１０の参照２０６を含むリソースグループ２０５と、仮想ターゲット（たとえば仮想ホスト）情報２０７と、プラグ接続可能なデータベース（pluggable database：ＰＤＢ）情報２０８とを含み得る。リソースグループテンプレート（たとえば２１０）は、たとえば、Ｊａｖａ（登録商標）メッセージサーバ（Java Message Server：ＪＭＳ）サーバ２１３、ストア・アンド・フォワード（store-and-forward：ＳＡＦ）エージェント２１５、メールセッションコンポーネント２１６またはＪａｖａデータベースコネクティビティ（Java Database Connectivity：ＪＤＢＣ）リソース２１７などのリソースとともに、複数のアプリケーションＡ２１１およびＢ２１２を定義することができる。
【００１４】
図２に例示されるリソースグループテンプレートが一例として提供される。他の実施形態に従うと、さまざまなタイプのリソースグループテンプレートおよび要素を提供することができる。
【００１５】
一実施形態に従うと、パーティション（たとえば２０２）内のリソースグループが、特定のリソースグループテンプレート（たとえば２１０）を参照する（２２０）と、パーティション特有の情報２３０（たとえば、パーティション特有のＰＤＢ情報）を示すために、特定のパーティションに関連付けられた情報を、参照されたリソースグループテンプレートと組合わせて用いることができる。次いで、パーティション特有の情報は、パーティションによって使用されるリソース（たとえば、ＰＤＢリソース）を構成するようにアプリケーションサーバによって使用可能である。たとえば、パーティション２０２に関連付けられたパーティション特有のＰＤＢ情報は、そのパーティションによって使用されるべき適切なＰＤＢ２３８を備えたコンテナデータベース（container database：ＣＤＢ）２３６を構成する（２３２）ようにアプリケーションサーバによって使用可能である。
【００１６】
同様に、一実施形態に従うと、特定のパーティションに関連付けられた仮想ターゲット情報を用いて、そのパーティションによって使用されるべきパーティション特有の仮想ターゲット２４０（たとえば、ユニフォーム・リソース・ロケータ（uniform resource locator：ＵＲＬ）（たとえば、http://baylandurgentcare.com）によってアクセス可能にすることができるbaylandurgentcare.com）を定義する（２３９）ことができる。
【００１７】
図３は、一実施形態に従った、アプリケーションサーバ、クラウドまたは他の環境においてマルチテナンシをサポートするためのシステムをさらに示す。
【００１８】
一実施形態に従うと、config.xml構成ファイルなどのシステム構成を用いて、パーティションを定義することができる。当該パーティションは、そのパーティションに関連付けられたリソースグループについての構成エレメントおよび／または他のパーティションプロパティを含む。値は、プロパティ名／値の対を用いてパーティションごとに指定することができる。
【００１９】
一実施形態に従うと、複数のパーティションは、管理されたサーバ／クラスタ２４２内で、または、ＣＤＢ２４３にアクセス可能でありかつウェブ層２４４を介してアクセス可能である同様の環境内で、実行することができる。これにより、たとえば、ドメインまたはパーティションを（ＣＤＢの）ＰＤＢのうち１つ以上のＰＤＢに関連付けることが可能となる。
【００２０】
一実施形態に従うと、複数のパーティションの各々、この例においてはパーティションＡ２５０およびパーティションＢ２６０は、そのパーティションに関連付けられた複数のリソースを含むように構成することができる。たとえば、パーティションＡは、アプリケーションＡ１  ２５２と、アプリケーションＡ２  ２５４と、ＪＭＳ  Ａ  ２５６と、さらには、ＰＤＢ  Ａ  ２５９に関連付けられたデータソースＡ２５７とをともに含むリソースグループ２５１を含むように構成することができる。この場合、パーティションは仮想ターゲットＡ２５８を介してアクセス可能である。同様に、パーティションＢ２６０は、アプリケーションＢ１  ２６２と、アプリケーションＢ２  ２６４と、ＪＭＳ  Ｂ  ２６６と、さらには、ＰＤＢ  Ｂ  ２６９に関連付けられたデータソースＢ２６７とをともに含むリソースグループ２６１を含むように構成することができる。この場合、パーティションは仮想ターゲットＢ２６８を介してアクセス可能である。
【００２１】
上述の例のうちいくつかはＣＤＢおよびＰＤＢの使用を例示しているが、他の実施形態に従うと、他のタイプのマルチテナントのデータベースまたは非マルチテナントのデータベースをサポートすることができる。この場合、特定の構成は、たとえば、スキーマを使用するかまたはさまざまなデータベースを使用することによって、各々のパーティションのために提供することができる。
【００２２】
リソース
一実施形態に従うと、リソースは、環境のドメインにデプロイすることができるシステムリソース、アプリケーションまたは他のリソースもしくはオブジェクトである。たとえば、一実施形態に従うと、リソースは、アプリケーション、ＪＭＳ、ＪＤＢＣ、ＪａｖａＭａｉｌ、ＷＬＤＦもしくはデータソースであり得るか、または、サーバ、クラスタもしくは他のアプリケーションサーバターゲットにデプロイすることができる他のシステムリソースもしくは他のタイプのオブジェクトであり得る。
【００２３】
パーティション
一実施形態に従うと、パーティションは、パーティション識別子（partition identifier：ＩＤ）および構成に関連付けられ得るドメインのうちランタイムおよび管理の区分またはスライスであるとともに、アプリケーションを含み得て、ならびに／または、リソースグループおよびリソースグループテンプレートを使用することによってドメイン全体に渡るリソースを参照し得る。
【００２４】
概して、パーティションは、それ自体のアプリケーションを含み、リソースグループテンプレートを介してドメイン全体に渡るアプリケーションを参照し、それ自体の構成を有し得る。パーティション可能なエンティティは、リソース、たとえば、ＪＭＳ、ＪＤＢＣ、ＪａｖａＭａｉｌ、およびＷＬＤＦリソースや、他のコンポーネント、たとえばＪＮＤＩネームスペース、ネットワークトラフィック、ワークマネージャ、セキュリティポリシーおよび領域などを含み得る。マルチテナント環境のコンテキストにおいては、システムは、テナントに関連付けられたパーティションの管理およびランタイムのアスペクトへのアクセスをテナントに提供するように構成することができる。
【００２５】
一実施形態に従うと、パーティション内の各々のリソースグループは、任意には、リソースグループテンプレートを参照することができる。パーティションは、複数のリソースグループを有し得るとともに、それらの各々はリソースグループテンプレートを参照し得る。各々のパーティションは、パーティションのリソースグループが参照するリソースグループテンプレートにおいて指定されていない構成データについてのプロパティを定義することができる。これにより、パーティションが、リソースグループテンプレートで定義されたデプロイ可能なリソースをそのパーティションで使用されるべき特定の値にバインドするものとして機能することが可能となる。場合によっては、パーティションは、リソースグループテンプレートによって指定される構成情報を無効にすることができる。
【００２６】
一実施形態に従うと、パーティション構成は、たとえば、config.xml構成ファイルによって定義されるように、複数の構成エレメントを含み得る。複数の構成エレメントは、たとえば、「パーティション（partition）」（そのパーティションを定義する属性および子エレメントを含む）；「リソース・グループ（resource-group）」（パーティションにデプロイされるアプリケーションおよびリソースを含む）；「リソース・グループ・テンプレート（resource-group-template）」；（そのテンプレートによって定義されるアプリケーションおよびリソースを含む）；「ｊｄｂｃ・システム・リソース・無効化（jdbc-system-resource-override）」（データベース特有のサービス名、ユーザ名およびパスワードを含む）；ならびに、「パーティション・プロパティ（partition-properties）」（リソースグループテンプレートにおいてマクロ置換のために使用可能なプロパティキー値を含む）を含む。
【００２７】
始動後、システムは、構成ファイルによって提供される情報を用いて、リソースグループテンプレートから各々のリソースについてのパーティション特有の構成エレメントを生成することができる。
【００２８】
リソースグループ
一実施形態に従うと、リソースグループは、名前付けされ完全に修飾されたデプロイ可能なリソースの集合であって、ドメインまたはパーティションのレベルで定義することができ、かつ、リソースグループテンプレートを参照することができる。リソースグループにおけるリソースは、完全に修飾されているものと見なされる。というのも、アドミニストレータが、それらのリソースを開始させるのに必要とされるかまたはそれらのリソースに接続するのに必要とされるすべての情報、たとえば、データソースに接続するためのクレデンシャル、またはアプリケーションについての目標情報、を提供しているからである。
【００２９】
システムアドミニストレータは、ドメインレベルで、またはパーティションレベルでリソースグループを公開することができる。ドメインレベルでは、リソースグループは、関連するリソースをグループ化するのに好都合な方法を提供する。システムは、グループ化されていないリソースと同じドメインレベルのリソースグループにおいて公開されたリソースを管理することができる。このため、リソースは、システム起動中に開始させたり、システムのシャットダウン中に停止させたりすることができる。アドミニストレータはまた、グループ内のリソースを個々に停止させるか、開始させるかまたは削除することができ、グループ上で動作させることによって暗黙的にグループ内のすべてのリソースに対して機能することができる。たとえば、あるリソースグループを停止させることにより、まだ停止されていないグループにおけるすべてのリソースを停止させ；リソースグループを始動させることにより、まだ始動させていないグループにおけるいずれのリソースも始動させ、リソースグループを削除することにより、グループに含まれるすべてのリソースを削除する。
【００３０】
パーティションレベルでは、システムまたはパーティションアドミニストレータは、任意のセキュリティ制限下で、或るパーティションにおいて０個以上のリソースグループを構成することができる。たとえば、ＳａａＳ使用事例においては、さまざまなパーティションレベルのリソースグループは、ドメインレベルのリソースグループテンプレートを参照することができる。ＰａａＳ使用事例においては、リソースグループテンプレートを参照しないが代わりにそのパーティション内でのみ利用可能にされるべきアプリケーションおよびそれらの関連するリソースを表わすパーティションレベルのリソースグループを作成することができる。
【００３１】
一実施形態に従うと、リソースグループ化を用いることで、アプリケーションと、それらアプリケーションがドメイン内で別個の管理ユニットとして使用するリソースとをともにグループ化することができる。たとえば、以下に記載される医療記録（ＭｅｄＲｅｃ）アプリケーションにおいては、リソースグループ化によりＭｅｄＲｅｃアプリケーションおよびそのリソースが定義される。複数のパーティションは、各々がパーティション特有の構成情報を用いて、同じＭｅｄＲｅｃリソースグループを実行することができ、このため、各々のＭｅｄＲｅｃインスタンスの一部であるアプリケーションが各々のパーティションにとって特有のものにされる。
【００３２】
リソースグループテンプレート
一実施形態に従うと、リソースグループテンプレートは、リソースグループから参照することができドメインレベルで定義されるデプロイ可能なリソースの集合であり、そのリソースを起動するのに必要な情報のうちいくらかは、パーティションレベル構成の仕様をサポートするように、テンプレート自体の一部として記憶されない可能性がある。ドメインは、リソースグループテンプレートをいくつ含んでもよく、それらの各々は、たとえば、１つ以上の関連するＪａｖａアプリケーションと、それらのアプリケーションが依存するリソースとを含み得る。このようなリソースについての情報のうちのいくらかは、すべてのパーティションにわたって同じであってもよく、他の情報はパーティションごとに異なっていてもよい。すべての構成がドメインレベルで指定される必要はなく、代わりに、パーティションレベル構成が、マクロまたはプロパティ名／値の対を使用することによってリソースグループテンプレートで指定することができる。
【００３３】
一実施形態に従うと、特定のリソースグループテンプレートは、１つ以上のリソースグループによって参照可能である。概して、任意の所与のパーティション内では、リソースグループテンプレートは一度に１つのリソースグループによってのみ参照することができる。すなわち、同じパーティション内で同時に複数のリソースグループによって参照することはできない。しかしながら、異なるパーティションにおける別のリソースグループによって同時に参照することができる。リソースグループを含むオブジェクト、たとえばドメインまたはパーティションは、プロパティ名／値の割当てを用いて、任意のトークンの値をリソースグループテンプレートで設定することができる。システムは、参照するリソースグループを用いてリソースグループテンプレートを起動させると、それらのトークンを、リソースグループが含むオブジェクトにおいて設定された値と置換えることができる。場合によっては、システムはまた、静的に構成されたリソースグループテンプレートおよびパーティションを用いて、パーティション／テンプレートの組合せごとにランタイム構成を生成することができる。
【００３４】
たとえば、ＳａａＳ使用事例においては、システムは、同じアプリケーションおよびリソースを複数回起動することができるが、そのうちの１回は、それらを用いるであろう各パーティションごとに起動され得る。アドミニストレータがリソースグループテンプレートを定義すると、これらは、どこか他のところで提供されるであろう情報を表わすためにトークンを用いることができる。たとえば、ＣＲＭ関連のデータリソースに接続する際に使用されるユーザ名は、リソースグループテンプレートにおいて＼＄｛ＣＲＭＤａｔａＵｓｅｒｎａｍｅ｝として示すことができる。
【００３５】
テナント
一実施形態に従うと、マルチテナント（ＭＴ）アプリケーションサーバ環境などのマルチテナント環境においては、テナントは、１つ以上のパーティションおよび／もしくは１つ以上のテナント認識型アプリケーションによって表現可能であるエンティティ、または１つ以上のパーティションおよび／もしくは１つ以上のテナント認識型アプリケーションに関連付けることができるエンティティである。
【００３６】
たとえば、テナントは、別個のユーザ組織、たとえばさまざまな外部会社、特定の企業内のさまざまな部門（たとえばＨＲおよび財務部）などを表わすことができ、それら各々は、異なるパーティションに関連付けることができる。テナントのグローバルユニークアイデンティティ（テナントＩＤ）は、特定の時点において特定のユーザを特定のテナントに関連付けるものである。システムは、たとえば、ユーザアイデンティティの記録を参照することによって、ユーザアイデンティティから、特定のユーザがどのテナントに属しているかを導き出すことができる。ユーザアイデンティティにより、ユーザが実行することを認可されているアクションをシステムが実施することが可能となる。ユーザアイデンティティは、ユーザがどのテナントに属し得るかを含むが、これに限定されない。
【００３７】
一実施形態に従うと、システムは、互いに異なるテナントの管理およびランタイムを分離することを可能にする。たとえば、テナントは、それらのアプリケーションのいくつかの挙動、およびそれらがアクセスできるリソースを構成することができる。システムは、特定のテナントが別のテナントに属するアーティファクトを確実に管理することができないようにし、かつ、実行時に、特定のテナントの代わりに機能するアプリケーションがそのテナントに関連付けられたリソースのみを参照するが他のテナントに関連付けられたリソースは参照しないことを確実にすることができる。
【００３８】
一実施形態に従うと、テナント非認識型アプリケーションは、アプリケーションが応答している要求をどんなユーザが提示したかにかかわらず、アプリケーションが用いる如何なるリソースにもアクセス可能となるように明示的にテナントに対処する論理を含まないものである。対照的に、テナント認識型アプリケーションは、テナントに明示的に対処する論理を含む。たとえば、ユーザのアイデンティティに基づいて、アプリケーションは、ユーザが属するテナントを導き出すことができ、テナント特有のリソースにアクセスするためにその情報を用いることができる。
【００３９】
一実施形態に従うと、システムは、テナント認識型となるように明示的に書き込まれたアプリケーションをユーザがデプロイすることを可能にし、これにより、アプリケーション開発者は、現在のテナントのテナントＩＤを取得することができる。次いで、テナント認識型アプリケーションは、このテナントＩＤを用いて、アプリケーションの単一のインスタンスを用いている複数のテナントを処理することができる。
【００４０】
たとえば、単一の診療室または病院をサポートするＭｅｄＲｅｃアプリケーションは、２つの異なるパーティションまたはテナント（たとえばBayland Urgent CareテナントおよびValley Healthテナント）に対して公開することができ、その各々は、基礎をなすアプリケーションコードを変更することなく、別個のＰＤＢなどの別個のテナント特有のリソースにアクセスすることができる。
【００４１】
例示的なドメイン構成およびマルチテナント環境
一実施形態に従うと、アプリケーションは、ドメインレベルでリソースグループテンプレートにデプロイすることができるか、または、パーティションに範囲指定されているかもしくはドメインに範囲指定されているリソースグループにデプロイすることができる。アプリケーション構成は、アプリケーション毎またはパーティション毎に指定されたデプロイメントプランを用いて無効化することができる。
【００４２】
図４は、一実施形態に従った、例示的なマルチテナント環境で使用されるドメイン構成を示す。
【００４３】
一実施形態に従うと、システムがパーティションを始動させると、当該システムは、提供された構成に従って、それぞれのデータベースインスタンスに対して、各パーティションごとに１つずつ、仮想ターゲット（たとえば仮想ホスト）および接続プールを作成する。
【００４４】
典型的には、各々のリソースグループテンプレートは、１つ以上の関連するアプリケーションと、それらアプリケーションが依存するリソースとを含み得る。各々のパーティションは、それが参照するリソースグループテンプレートにおいて指定されていない構成データを提供することができるが、これは、場合によっては、リソースグループテンプレートによって指定されるいくつかの構成情報を無効にすることを含めて、パーティションに関連付けられた特定値に対するリソースグループテンプレートにおけるデプロイ可能なリソースのバインディングを行なうことによって、実行可能である。これにより、システムは、各々のパーティションが定義したプロパティ値を用いて、パーティション毎にリソースグループテンプレートによってさまざまに表わされるアプリケーションを始動させることができる。
【００４５】
いくつかのインスタンスにおいては、パーティションが含み得るリソースグループは、リソースグループテンプレートを参照しないか、または、それら自体のパーティション範囲指定されたデプロイ可能なリソースを直接定義する。パーティション内で定義されるアプリケーションおよびデータソースは、概して、そのパーティションにとってのみ利用可能である。リソースは、パーティション：<partitionName>/<resource JNDI name>、またはドメイン：<resource JNDI name>を用いて、パーティションの中からアクセスすることができるようにデプロイ可能である。
【００４６】
たとえば、ＭｅｄＲｅｃアプリケーションは、複数のＪａｖａアプリケーション、データソース、ＪＭＳサーバおよびメールセッションを含み得る。複数のテナントのためにＭｅｄＲｅｃアプリケーションを実行させるために、システムアドミニストレータは、テンプレートにおけるそれらのデプロイ可能なリソースを公開している単一のＭｅｄＲｅｃリソースグループテンプレート２８６を定義することができる。
【００４７】
ドメインレベルのデプロイ可能なリソースとは対照的に、リソースグループテンプレートにおいて公開されたデプロイ可能なリソースは、テンプレートにおいて完全には構成されない可能性があるか、または、いくつかの構成情報が不足しているので、そのままでは起動させることができない。
【００４８】
たとえば、ＭｅｄＲｅｃリソースグループテンプレートは、アプリケーションによって用いられるデータソースを公開し得るが、データベースに接続するためのＵＲＬを指定しない可能性がある。さまざまなテナントに関連付けられたパーティション、たとえば、パーティションＢＵＣ−Ａ２９０（Bayland Urgent Care：ＢＵＣ）およびパーティションＶＨ−Ａ２９２（Valley Health：ＶＨ）は、各々がＭｅｄＲｅｃリソースグループテンプレートを参照する（２９６，２９７）ＭｅｄＲｅｃリソースグループ２９３，２９４を含むことによって、１つ以上のリソースグループテンプレートを参照することができる。次いで、当該参照を用いて、Bayland Urgent Careテナントによって使用されるＢＵＣ−Ａパーティションに関連付けられた仮想ホストbaylandurgentcare.com３０４と、Valley Healthテナントによって使用されるＶＨ−Ａパーティションに関連付けられた仮想ホストvalleyhealth.com３０８とを含む各々のテナントのための仮想ターゲット／仮想ホストを作成する（３０２，３０６）ことができる。
【００４９】
図５は、一実施形態に従った例示的なマルチテナント環境をさらに示す。図５に示されるように、２つのパーティションがＭｅｄＲｅｃリソースグループテンプレートを参照している上述の例から引続いて、一実施形態に従うと、サーブレットエンジン３１０は、この例においてはBayland Urgent Careの医師テナント環境３２０およびValley Healthの医師テナント環境３３０といった複数のテナント環境をサポートするために用いることができる。
【００５０】
一実施形態に従うと、各々のパーティション３２１および３３１は、そのテナント環境についての入来トラフィックを受入れるための異なる仮想ターゲットと、異なるＵＲＬ３２２，３３２とを定義することができる。異なるＵＲＬ３２２，３３２は、パーティションと、この例ではbayland urgent careデータベースまたはvalley healthデータベースを含むそれぞれのリソース３２４、３３４とに接続するためのものである。同じアプリケーションコードが両方のデータベースに対して実行され得るので、データベースインスタンスは互換性のあるスキーマを用いることができる。システムがパーティションを始動させると、当該システムは、それぞれのデータベースインスタンスに対する接続プールおよび仮想ターゲットを作成することができる。
【００５１】
複数のエディットセッションのサポート
アプリケーションサーバ環境、たとえばマルチテナントアプリケーションサーバ環境において、アプリケーションサーバドメインは、複数のパーティションと複数の構成ファイルを有することができ、これらは異なる種類のアドミニストレータによって管理される。構成ファイルの単一の編集セッションは、このようなドメインには不十分である。
【００５２】
一実施形態に従い、本明細書において、マルチテナントアプリケーションサーバ環境における編集セッションをサポートするためのシステムおよび方法が説明される。一実施形態に従うと、第１のアドミニストレータまたはユーザは、あるパーティションに対して使用するための名前付き編集セッションを取得し、変更を実施し、その後これらの変更を有効化することができる。別のアドミニストレータまたはユーザは、並行して名前付き編集セッションを作成することができる。同時に発生する、ある変更と別のユーザによる変更との間にコンフリクトがある場合、アドミニストレータは、変更を有効化するときにエラー警告を受信することができる。その時点で、アドミニストレータは、このコンフリクトを解決し変更を有効化することができる。有効化されると、編集セッションにおける変更は、グローバル編集構成（configuration）に適用される。
【００５３】
一実施形態に従うと、この特徴は、マルチテナント環境または非マルチテナント環境において使用することができる。マルチテナント環境ではこの特徴を自動的に開始することができる。一方、非マルチテナント環境ではこの特徴を手作業で開始することができる。
【００５４】
一実施形態に従うと、アドミニストレータ、たとえばシステムアドミニストレータまたはパーティションアドミニストレータは、名前付き編集セッションを開始し、ドメインの構成のスナップショットを取得することができる。ドメイン構成は、１つ以上のパーティション構成を含む。アドミニストレータは、このアドミニストレータが変更することを許可されたドメイン構成の一部を変更し、この変更を有効化することができる。その後、システムは、この変更と、既に有効化されている１つ以上の変更との間にコンフリクトがあるか否かを検査することができる。
【００５５】
ある実施形態に従うと、コンフリクトは、同時発生するすなわち並列する名前付き編集セッション間で、ある名前付き編集セッションによってなされた変更が有効化されるときに、発生し得る。たとえば、第１の名前付き編集セッションの開始後において、現在のドメイン構成は、第２の名前付き編集セッションによって変更されている可能性がある。第１の名前付き編集セッションにおいてドメイン構成のスナップショットに対して変更がなされ有効化されてドメイン構成に適用されたときに、潜在的なコンフリクトが発生する場合がある。潜在的なコンフリクトの一例として、第１の名前付き編集セッションが、第２の編集セッションによってドメイン構成から削除された構成ｂｅａｎを更新した場合が挙げられる。
【００５６】
一実施形態に従うと、コンフリクトは、２以上のパーティションアドミニストレータによって同一のパーティションに対してなされた変更間、ドメイン構成のグローバルなプロパティを修正した２以上のシステムアドミニストレータによってなされた変更間、または、システムアドミニストレータによってなされた変更とパーティションアドミニストレータによってなされた変更との間に、発生し得る。
【００５７】
１つの名前付き編集セッションからの変更が有効化されるときに、システムがコンフリクトを検出する場合がある。このコンフリクトを一組の構成ルールに従って解決することが可能であれば、上記変更が有効化されて現在のドメイン構成に適用される。このコンフリクトを上記ルールに基づいて解決することが不可能であれば、有効化作業は失敗し、アドミニストレータが手作業で解決できるよう、上記コンフリクトがユーザインターフェイスに表示される。
【００５８】
これに代えて、アドミニストレータは、解決方法を、管理アプリケーションプログラミングインターフェイスを介して呼出すことができる。この解決方法を用いて、並行して適用された構成の変更を、現在の名前付き編集セッションに適用することができる。
【００５９】
手作業による解決または解決方法による解決がなされた後に、現在の名前付き編集セッションにおける変更を再び有効化することができる。
【００６０】
図６は、一実施形態に従った、アプリケーションサーバ、クラウドまたは他の環境における複数の編集セッションをサポートするためのシステムを示す図である。
【００６１】
図６に示されるように、このシステムは、アプリケーションサーバ環境１００におけるドメイン６０２を含む。ドメイン構成６０６は、パーティションに対する複数の構成（たとえばパーティション構成Ａ  ６０７およびパーティション構成Ｂ  ６０９）を含み得る。各パーティション構成はパーティションを定義することができ、このパーティションについてアドミニストレータはパーティション構成を編集することができる。
【００６２】
一実施形態に従うと、システムアドミニストレータまたはパーティションアドミニストレータは、ドメイン構成を、この構成のスナップショット（たとえば構成スナップショットＡ  ６２６ａまたは構成スナップショットＢ  ６２８ａ）に対して作業を実施することにより、編集することができる。構成スナップショットは、管理サーバに存在する構成ＭＢｅａｎｓの別の階層によって表わすことができる。
【００６３】
一実施形態に従うと、ドメイン構成は、複数のアドミニストレータ（たとえばアドミニストレータＡ  ６１９およびアドミニストレータＢ  ６２１）が、複数の並行セッション（たとえば編集セッションＡ  ６２３および編集セッションＢ  ６２５）を利用して編集することができる。各編集セッションは、セッション開始時に指定された名前によって一意に特定されることができ、自身の構成ファイルと自身の構成管理ｂｅａｎインスタンスを有することができる。
【００６４】
図６に示されるように、アドミニストレータＡは編集セッションＡにおける構成スナップショットＡ  ６２７を編集することができ、アドミニストレータＢは編集セッションＢにおける構成スナップショットＢ  ６３１を編集することができる。
【００６５】
一実施形態に従うと、アドミニストレータは、管理ＡＰＩ６１１（たとえばランタイムＭＢｅａｎ  ＡＰＩ）を用いて名前付き並行編集セッションを作成または破壊することができる。管理ＡＰＩは複数のインターフェイス（たとえば保存６１３、解決６１５、および有効化６１７）を含み得る。これらのインターフェイスは、アドミニストレータが複数の動作を実行できるように、たとえば編集セッションを開始し、変更を残し、変更を表示し、変更を取消すことができるようにする。
【００６６】
一実施形態に従うと、編集セッションでなされた変更は、ドメイン内の記憶域６０５に保存する６３７ことができる。保存された変更は、有効化されるまで無効である。変更を有効化することは、変更をドメイン構成にマージしドメイン内のすべてのサーバインスタンスに分配することを含み得る。
【００６７】
先に述べたように、各編集セッションは、ドメイン構成のスナップショットに対して作業を行なっている。各編集セッションの中でなされた変更間でコンフリクトが生じる可能性がある。たとえば、ある編集セッションは、別の編集セッションによってドメイン構成から削除された構成ｂｅａｎを更新する、または、ある編集セッションは、これもまた別の編集セッションによって変更された属性を変更する。コンフリクトは、同一のパーティションに対して複数のパーティションアドミニストレータによってなされた変更間、複数のシステムアドミニストレータによってなされた変更間、またはシステムアドミニストレータによってなされた変更とパーティションアドミニストレータによってなされた変更との間で、生じ得る。
【００６８】
一実施形態に従うと、アドミニストレータが編集セッションにおける構成変更を有効化するときに、並行編集セッションマネージャ６３９を呼出す６４１ことによって、これから有効化しようとしている変更と、編集セッション開始後に有効化された変更との間のコンフリクトを検出することができる。並行セッションマネージャは、編集セッションによってなされた変更（たとえば編集された構成スナップショットＡ  ６４７または編集された構成スナップショットＢ  ６４９）と、元のスナップショット（たとえば元の構成スナップショットＡ  ６２６ｂまたは元の構成スナップショットＢ  ６２８ｂ）を受信する６５３ことができる。同様に、並行編集セッションマネージャは、現在のドメイン構成（すなわちドメイン構成６０５）またはその一部を受信する６５１ことができる。受信した情報を用いて、並行編集セッションマネージャは、一組のルールに従いコンフリクトを判断することができ、一組のルールに基づいてこのコンフリクトの一部またはすべてを解決することができる。
【００６９】
図６に示されるように、コンフリクトが検出されない場合または検出されたコンフリクトの解決に成功した場合は、アドミニストレータによってなされた変更を、ドメイン構成に適用する６４９ことができる。検出されたコンフリクトを解決できない場合は、コンフリクト６４５を、手作業で解決するためにアドミニストレータに対して表示する６２９または６３５ことができる。
【００７０】
図７は、一実施形態に従った、アプリケーションサーバ、クラウドまたは他の環境における複数の編集セッションをサポートするためのシステムをさらに示す図である。
【００７１】
一実施形態に従うと、構成スナップショットは、構成ファイルの元のバージョンを、または、編集セッションあるいは編集ツリーを開始した構成を表わすことができる。
【００７２】
上述のように、構成スナップショットは、並行する編集セッションによってなされた変更間のコンフリクトを判断する際に使用するために、構成記憶域に残すまたはコピーする６５５または６５７必要がある。
【００７３】
一実施形態に従うと、並行する編集セッションに関連付けられた構成スナップショットは、上記並行する編集セッションまたは別の並行する編集セッションによって有効化動作が実行されるときに、構成記憶域に残すことができる。有効化動作が検出されない場合は、構成スナップショットを構成記憶域にコピーしない。そうすることによって、コピーする必要がある構成ファイルの数を低減する。
【００７４】
一実施形態に従うと、管理ＡＰＩは、すべての構成スナップショットをコピーするように、または、コンフリクトの判断に必要な構成スナップショットのみをコピーするように構成することができる。これに代えて、管理ＡＰＩを、コンフリクトの判断に必要な構成スナップショット内のファイルのみをコピーするように構成してもよい。
【００７５】
説明のための例を挙げると、アドミニストレータＢが有効化アクションを要求する７１１一方で、アドミニストレータＡは並行編集セッションで作業している。上記要求の結果として、管理ＡＰＩは、構成スナップショットＡおよびＢを、またはこれらのうちの一方を、またはいずれかの構成スナップショットにおける１つ以上のファイルを、構成記憶域にコピーすることができる。
【００７６】
コンフリクトの判断
図８は、一実施形態に従った、アプリケーションサーバ、クラウドまたは他の環境における複数の編集セッションをサポートするためのシステムをさらに示す図である。
【００７７】
一実施形態に従うと、編集セッションが有効化アクションを実行するときに、並行する編集セッションによってなされたそれぞれの変更間のコンフリクトが判断される。
【００７８】
たとえば、編集セッションで作業しているアドミニストレータＢは、有効化アクションを要求する８１１ことができ、並行セッションマネージャを呼出して一組のルールに従い潜在的なコンフリクトを判断することができる。
【００７９】
一実施形態に従うと、コンフリクトは、ルールに基づいた手法を用いて発見することができ任意で解決することができる。たとえば、編集セッションの開始以来ドメイン構成（たとえばWebLogicランタイムドメイン構成）に対して変更がなされていない場合は、編集セッションの変更を有効化することができる。ドメイン構成に対して変更がなされている場合、並行編集セッションマネージャは、編集セッションによる作業の対象である元の構成スナップショットと、上記ドメイン構成との相違８５３を求めることができる。並行編集セッションマネージャはまた、編集セッションでなされた変更を含む編集された構成スナップショットと、編集セッションによる作業の対象である元の構成スナップショットとの相違８５５を求めることができる。このようにして求めた２組の相違を比較することにより、潜在的なコンフリクト８６１を特定する８５７または８５９ことができる。
【００８０】
図９は、一実施形態に従った、アプリケーションサーバ、クラウドまたは他の環境における複数の編集セッションをサポートするためのシステムをさらに示す図である。
【００８１】
一実施形態に従うと、並行セッションマネージャによってコンフリクトが特定されると、管理ＡＰＩにおける解決方法を、アドミニストレータＢの要求９１１によって呼出して、これらのコンフリクトを解決することができる。
【００８２】
一実施形態に従うと、上記解決方法を、パラメータ（たとえばstopOnConflict=false）を用いて実行することにより、ドメイン構成に対して並行して適用された変更を、これらの変更が編集セッションＢでなされた変更とコンフリクトしない場合、編集セッションＢに適用する９４７ことができる。
【００８３】
たとえば、変更９４５は、元の構成スナップショットＢとドメイン構成との相違である場合がある。
【００８４】
一実施形態に従うと、以下のルールを使用することによって変更を編集セッションに適用することができる。ＥＤＩＴは編集セッションを表わし、ＣＵＲＲＥＮＴはドメイン構成を表わす。ｂｅａｎはドメイン内の構成ｂｅａｎであってもよい。
【００８５】
リスティング２
１）ＥＤＩＴは、ＣＵＲＲＥＮＴにおいて削除されたｂｅａｎを更新した。ｂｅａｎの更新は、属性の変更または子ｂｅａｎの追加を含む。
【００８６】
解決方法：ＥＤＩＴにおいてｂｅａｎを削除すればよい。
２）ＥＤＩＴは、ＣＵＲＲＥＮＴにおいて変更されたｂｅａｎを削除した。
【００８７】
解決方法：ｂｅａｎはＥＤＩＴにおいて削除されたままになる。
３）ＥＤＩＴは、ＣＵＲＲＥＮＴにおいても変更された属性を変更した。これは、単純なデータタイプ属性と単純なデータタイプ属性のアレイとを含む。加えて、順序を保護する必要があるＭＢｅａｎｓのアレイがある。
【００８８】
解決方法：ＥＤＩＴからの値は変更せずに元のままにしておけばよい。
４）ＥＤＩＴは、ＣＵＲＲＥＮＴにおいて追加されたｂｅａｎと同一の修飾キーを有する新たなｂｅａｎを追加。これは属性変更コンフリクトと異なるコンフリクトとして検出される。なぜなら、できる限りＷＬＳにおける既存の差分マージツールを使用する今までのコンフリクト検出および解決方法により適しているからである。
【００８９】
解決方法：ｂｅａｎはＥＤＩＴにおいて変更されず元のままになる。
５）ＥＤＩＴはＣＵＲＲＥＮＴにおいて削除されたｂｅａｎを指すリファレンスを（何等かのプロパティの値として）設定する。
【００９０】
解決方法：リファレンスを未設定にする。
６）ＣＵＲＲＥＮＴはＥＤＩＴにおいて削除されたｂｅａｎを指すリファレンスを（何等かのプロパティの値として）設定する。
【００９１】
解決方法：ＥＤＩＴを変更しない、すなわちｂｅａｎを削除されたままにしておく。
７）ＥＤＩＴはＣＵＲＲＥＮＴにおいて削除されたｂｅａｎを指すリファレンスを（何等かのプロパティの値として）含むｂｅａｎを追加する。
【００９２】
解決方法：追加されたｂｅａｎにおけるリファレンスを未設定にする。
８）ＣＵＲＲＥＮＴはＥＤＩＴにおいて削除されたｂｅａｎを指すリファレンスを（何等かのプロパティの値として）含むｂｅａｎを追加する。
【００９３】
解決方法：新たなｂｅａｎをＥＤＩＴにも追加しリファレンスを未設定にする。
リスティング２に示されるように、認識されている構成コンフリクトと各コンフリクトの解決方法のリストが確認される。
【００９４】
一実施形態に従うと、解決方法がコールされた後に、アドミニストレータは再び編集セッションにおける保留中の変更の有効化を始めることができる。この解決作業により、当面は別の編集セッションが新たな変更を有効化しない限り、コンフリクトがこれ以上発生しないことを保証できる。
【００９５】
一実施形態に従うと、この解決処理の結果、構成検証フェイズにおいて承認されない矛盾した構成になる可能性がある。アドミニストレータは、ユーザインターフェイスに表示された情報を用いて、解決されたセッションを、矛盾がなく有効で意味のある状態に修正することができる。表示された情報はコンフリクトを含み得る。各コンフリクトは、コンフリクトの説明として、たとえば、コンフリクトにおけるｂｅａｎ／プロパティの特定、および、当該コンフリクトについて何が解決されたかを説明する１つ以上のメッセージを含み得る。
【００９６】
アドミニストレータが使用できる他の情報は、各解決およびマージステップの短い説明を含み得るログメッセージを含む。ログメッセージを用いることにより、どの変更がなされたのか、および、特定の編集セッションにおいて変更がどのようにしてなされたのかを確認することができる。
【００９７】
一実施形態に従うと、上記情報は、解決方法がコールされたときに、ユーザインターフェイス上の解決タスクからアクセスすることができる、または、スクリプトツール（たとえばWebLogic Scripting Tool）にプリントすることができる。
【００９８】
図１０は、一実施形態に従った、アプリケーションサーバ、クラウドまたは他の環境における複数の編集セッションをサポートするためのシステムをさらに示す図である。
【００９９】
図１０に示されるように、ステップ１０１１において、アプリケーションサーバ（たとえばマルチテナント）環境を１以上のコンピュータ上に提供することができる。このアプリケーションサーバ環境は、１以上のパーティションを有するドメインと、これらのドメインおよびパーティションを構成するドメイン構成と、ドメイン構成を変更する際にアドミニストレータが使用する管理ＡＰＩとを含む。
【０１００】
ステップ１０１３において、管理ＡＰＩを介して複数の並行編集セッションから変更を受ける。各並行編集セッションを構築してドメイン構成のスナップショットを編集する。
【０１０１】
ステップ１０１５において、受けた変更におけるコンフリクトをドメイン内の並行セッションマネージャによって検出することができる。
【０１０２】
ステップ１０１７において、上記コンフリクトを解決のためにアドミニストレータに対して表示することができる。
【０１０３】
この発明は、この開示の教示に従ってプログラミングされた１つ以上のプロセッサ、メモリおよび／またはコンピュータ読取可能記憶媒体を含む、１つ以上の従来の汎用または特化型デジタルコンピュータ、コンピューティング装置、マシン、またはマイクロプロセッサを使用して都合よく実現されてもよい。ソフトウェア技術の当業者には明らかであるように、この開示の教示に基づいて、適切なソフトウェアコーディングが、熟練したプログラマによって容易に準備され得る。
【０１０４】
実施形態によっては、本発明は、本発明のプロセスのうちいずれかを実行するためにコンピュータをプログラムするのに使用できる命令が格納された非一時的な記録媒体または（１つまたは複数の）コンピュータ読取可能な媒体であるコンピュータプログラムプロダクトを含む。この記録媒体は、フロッピー（登録商標）ディスク、光ディスク、ＤＶＤ、ＣＤ−ＲＯＭ、マイクロドライブ、および光磁気ディスクを含む、任意の種類のディスク、ＲＯＭ、ＲＡＭ、ＥＰＲＯＭ、ＥＥＰＲＯＭ、ＤＲＡＭ、ＶＲＡＭ、フラッシュメモリデバイス、磁気もしくは光カード、ナノシステム（分子メモリＩＣを含む）、または、命令および／もしくはデータを格納するのに適した任意の種類の媒体もしくはデバイスを含み得るものの、これらに限定されない。
【０１０５】
本発明のこれまでの記載は例示および説明を目的として提供されている。すべてを網羅するまたは本発明を開示された形態そのものに限定することは意図されていない。当業者には数多くの変更および変形が明らかであろう。実施の形態は、本発明の原理およびその実際の応用を最もうまく説明することによって他の当業者がさまざまな実施の形態および意図している特定の用途に適したさまざまな変形を理解できるようにするために、選択され説明されている。本発明の範囲は添付の特許請求の範囲およびそれらの同等例によって規定されるものと意図されている。
【図１】
0006491243.tif 000002
【図２】
0006491243.tif 000003
【図３】
0006491243.tif 000004
【図４】
0006491243.tif 000005
【図５】
0006491243.tif 000006
【図６】
0006491243.tif 000007
【図７】
0006491243.tif 000008
【図８】
0006491243.tif 000009
【図９】
0006491243.tif 000010
【図１０】
0006491243.tif 000011