(57)【要約】共有モデルは、ユーザが標準およびカスタムデータベースオブジェクトおよびアプリケーションを容易にかつ都合よく作成し、ユーザまたはユーザのグループ間で共有するのを可能にする。共有モデルは、ユーザが、カスタムオブジェクトおよびフィールド、標準オブジェクトおよびフィールド、ならびにアプリケーションとの間の関係を定義するタブおよびタブセットを都合よく作成しカスタマイズするのを可能にするシステムおよび方法を含む。タブは、アプリケーションの要素またはデータベースオブジェクトとのユーザインタフェースを視覚的に表す。タブを選択すると、タブによって表されるオブジェクトまたはアプリケーションの要素へのユーザアクセスが可能になる。タブセットは、アプリケーション機能を提供する単位として働く関連するタブのグループである。エンドユーザが表示されるタブおよびタブセットビューによって表される様々なオブジェクトおよびアプリケーション要素を容易にかつ都合よく切り替えることができるように、新しいタブおよびタブセットを定義することができ、タブセットビューをカスタマイズすることができる。2008533593.tif 000003
2008533593.tif 000002
【特許請求の範囲】
【請求項１】
タブセット定義を作成するコンピュータによって実現される方法であって、以下の各段階を含む方法：
ユーザによる選択に利用可能な複数のタブのリストをユーザシステムに提供する段階であって、各タブは、記憶されたタブ定義を有し、かつ各タブは、サーバシステム上に存在するオブジェクトまたはアプリケーションの要素とのリンクを定義する段階；
該複数のタブのうちの1つまたは複数のタブの選択をユーザシステムから受信する段階；
該タブのセットの名称を表すラベルをユーザシステムから受信する段階；
該タブセットのタブセットプロファイル表示をユーザシステムから受信する段階であって、表示は、複数のユーザグループのうちのどのグループがタブセットへのアクセスを許可されるかを識別する段階；および
名称、タブの選択、およびプロファイル表示を含むタブセット定義をサーバシステムに記憶する段階。
【請求項２】
ユーザグループが、グループ内のユーザの階層許可レベルに基づく、請求項1記載の方法。
【請求項３】
タブセット定義へのアクセスを許可されたユーザグループ内の第1のユーザ用の第1のユーザシステムからの要求に応答して、第1のユーザシステムにおけるタブセット定義の表現を表示する段階をさらに含む、請求項1記載の方法。
【請求項４】
表現が、1つまたは複数のタブセット名のリスト内のタブセットの名称を含む、請求項3記載の方法。
【請求項５】
第1のユーザが複数のタブセットへのアクセスを許可され、タブセットの名称は、第1のユーザがアクセスするタブセットのタブセット名のドロップダウンリストに表示される、請求項3記載の方法。
【請求項６】
タブセット定義が、タブセット内のタブのデフォルト表示順序を含み、
第1のユーザからの要求に応答して、タブセット内のタブの表示順序をユーザによって定義された表示順序に変更する段階；
ユーザによって定義された表示順序をサーバシステム内のデータベースオブジェクトに記憶する段階をさらに含む、請求項3記載の方法。
【請求項７】
タブセット定義がタブのデフォルトセットを含み、
第1のユーザからの要求に応答して、
1）タブセットから1つまたは複数のデフォルトタブを削除するか；または
2）1つまたは複数の追加のタブをタブセットに追加するか；または
3）タブセットから1つまたは複数のデフォルトタブを削除し、1つまたは複数の追加のタブをタブセットに追加する
ことによって、タブセット内のタブを再構成する段階、および
ユーザによって再構成されたタブセット定義をサーバシステム内のデータベースオブジェクトに記憶する段階をさらに含む、請求項3記載の方法。
【請求項８】
再構成されたタブセット定義が、再構成されたタブセット内のタブのデフォルト表示順序を含み、
第1のユーザからの要求に応答して、再構成されたタブセット内のタブの表示順序をユーザによって定義された表示順序に変更する段階；および
ユーザによって定義された表示順序をサーバシステム内のデータベースオブジェクトに記憶する段階をさらに含む、請求項7記載の方法。
【請求項９】
記憶されたタブセット定義がロゴグラフィックを含み、ロゴグラフィックは、タブセット定義がユーザによって選択された場合に表示される、請求項1記載の方法。
【請求項１０】
複数のデータベースオブジェクトおよびアプリケーションオブジェクトを記憶するデータベースシステムと、
データベースシステムに通信可能に結合され、
各タブが、データベースに記憶されたタブ定義を有し、かつ各タブが、サーバシステム上に存在するデータベースオブジェクトまたはアプリケーションオブジェクトとのリンクを定義する、ユーザによる選択に利用可能な複数のタブのリストをネットワーク上でユーザシステムに提供し、
該複数のタブのうちの1つまたは複数のタブの選択をユーザシステムから受信し、
該タブのセットの名称を表すラベルをユーザシステムから受信し、
複数のユーザグループのうちのどのグループがタブセットへのアクセスを許可されるかを識別する、該タブセットのタブセットプロファイル表示をユーザシステムから受信し、ならびに
名称、タブの選択、およびプロファイル表示を含むタブセット定義をデータベースシステムに記憶する
ように構成されたサーバシステムとを含む、データベースオブジェクトおよびアプリケーションオブジェクト共有モデルを実現するように構成されたコンピュータシステム。
【請求項１１】
サーバシステムが、タブセット定義へのアクセスを許可されたユーザグループ内の第1のユーザ用の第1のユーザシステムからの要求に応答して、第1のユーザシステムでタブセット定義の表現を表示するための表示信号を供給するようにさらに構成される、請求項10記載のシステム。
【請求項１２】
第1のユーザが複数のタブセットへのアクセスを許可され、タブセットの名称は、第1のユーザがアクセスするタブセットのタブセット名のドロップダウンリストに表示される、請求項11記載のシステム。
【請求項１３】
タブセット定義がタブセット内のタブのデフォルト表示順序を含み、サーバシステムは、第1のユーザからの要求に応答して、ユーザによって定義された表示順序をデータベースシステム内のデータベースオブジェクトに記憶して、タブセット内のタブの表示順序を変更するようにさらに構成される、請求項11記載のシステム。
【請求項１４】
タブセット定義がタブのデフォルトセットを含み、サーバシステムは、第1のユーザからの要求に応答して、ユーザによって再構成されたタブセット定義をデータベース内のデータベースオブジェクトに記憶し、
1）タブセットから1つまたは複数のデフォルトタブを削除するか；または
2）1つまたは複数の追加のタブをタブセットに追加するか；または
3）タブセットから1つまたは複数のデフォルトタブを削除し、1つまたは複数の追加のタブをタブセットに追加する
ことによって、タブセット内のタブを再構成するようにさらに構成される、請求項11記載のシステム。
【請求項１５】
再構成されたタブセット定義が、再構成されたタブセット内のタブのデフォルト表示順序を含み、サーバシステムは、第1のユーザからの要求に応答して、ユーザによって定義された表示順序をデータベースシステム内のデータベースオブジェクトに記憶し、再構成されたタブセット内のタブの表示順序をユーザによって定義された表示順序に変更するようにさらに構成される、請求項14記載のシステム。
【請求項１６】
サーバが、複数のデータベースオブジェクトおよびアプリケーションオブジェクトを記憶するデータベースシステムに通信可能に結合され、コードが、
各タブがデータベースシステムに記憶されたタブ定義を有し、かつ各タブが、データベースオブジェクトまたはアプリケーションオブジェクトとのリンクを定義する、ユーザによる選択に利用可能な複数のタブのリストをネットワーク上でユーザシステムに提供するための命令と、
該複数のタブのうちの1つまたは複数のタブの選択をユーザシステムから受信するための命令と、
該タブのセットの名称を表すラベルをユーザシステムから受信するための命令と、
複数のユーザグループのうちのどのグループがタブセットへのアクセスを許可されるかを識別する、ユーザシステムからのタブセットのタブセットプロファイル表示をユーザシステムから受信するための命令と、ならびに
名称、タブの選択、およびプロファイル表示を含むタブセット定義をデータベースシステムに記憶するための命令
とを含む、サーバ内のプロセッサを制御してデータベースオブジェクトおよびアプリケーションオブジェクト共有モデルを実現するコードを含むコンピュータ可読媒体。
【請求項１７】
コードが、タブセット定義へのアクセスを許可されたユーザグループ内の第1のユーザ用の第1のユーザシステムから受信された要求に応答して、第1のユーザシステムでタブセット定義の表現を表示するための表示信号を提供するための命令をさらに含む、請求項16記載のコンピュータ可読媒体。
【請求項１８】
第1のユーザが複数のタブセットへのアクセスを許可され、かつタブセットの名称は、第1のユーザがアクセスするタブセットのタブセット名のドロップダウンリストに表示される、請求項16記載のコンピュータ可読媒体。
【請求項１９】
タブセット定義がタブセット内のタブのデフォルト表示順序を含み、かつコードは、第1のユーザからの要求に応答して、ユーザによって定義された表示順序をデータベースシステム内のデータベースオブジェクトに記憶して、タブセット内のタブの表示順序を変更するための命令をさらに含む、請求項16記載のコンピュータ可読媒体。
【請求項２０】
タブセット定義がタブのデフォルトセットを含み、コードは、第1のユーザからの要求に応答して、ユーザによって再構成されたタブセット定義をデータベース内のデータベースオブジェクトに記憶し、
1）タブセットから1つまたは複数のデフォルトタブを削除するか；または
2）1つまたは複数の追加のタブをタブセットに追加するか；または
3）タブセットから1つまたは複数のデフォルトタブを削除し、1つまたは複数の追加のタブをタブセットに追加する
ことによって、タブセット内のタブを再構成するための命令をさらに含む、請求項16記載のコンピュータ可読媒体。
【請求項２１】
再構成されたタブセット定義が再構成されたタブセット内のタブのデフォルト表示順序を含み、コードは、第1のユーザからの要求に応答して、ユーザによって定義された表示順序をデータベースシステム内のデータベースオブジェクトに記憶し、再構成されたタブセット内のタブの表示順序をユーザによって定義された表示順序に変更するための命令をさらに含む、請求項20記載のコンピュータ可読媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、概してデータベースに関し、特に、マルチテナントおよび／またはマルチアプリケーションデータベースシステムで使用されるカスタムタブおよびタブセットオブジェクトを作成し、表示するシステムおよび方法に関する。
【０００２】
コンパクトディスクで提出された「配列表」、表、またはコンピュータプログラムリスト付録の参照
該当なし
【背景技術】
【０００３】
発明の背景
salesforce.comサービスなどのマルチテナントデータベースシステムでは、顧客の団体（すなわち、テナント）がアプリケーションおよびデータ、ならびに1つの論理データベース内のデータベースリソースを共有するマルチテナントアーキテクチャが使用される。通常、データベーステーブル自体が共有される。たとえば、データモデル内の各エンティティは、各テナントの行を識別する団体ID（organization_id）カラムを含む。テナントの文脈内のすべてのクエリおよびデータ操作は、この（インデックス付けされた）団体IDカラムをフィルタリングして適切なセキュリティおよび仮想専用データベースの表示を保証する。salesforce.comシステムでは、たとえば、この方式を使用して会計、契約、リード、および機会エンティティなどの標準エンティティを顧客に示す。
【０００４】
しかし、顧客は、すでに与えられている標準オブジェクトおよび標準アプリケーションだけでなく顧客自身のカスタムオブジェクトおよびアプリケーションもシステムに追加したいことがある。顧客が自分自身の物理的データベースを有する従来のクライアント／サーバアプリケーションでは、顧客オブジェクトの追加は通常、そのデータベースに対してDDL（データ定義言語）を介して行われ、新しい物理的スキーマ、すなわち、テーブルおよびカラムが作成される。salesforce.comサービスなどのオンラインマルチテナントデータベースシステムでは、この手法が様々な理由で受け入れがたい場合がある。たとえば、多数のテナント（たとえば、1,000または10,000以上のテナント）を有するデータベースシステムでは、すべての所望のスキーマの和集合が下位のデータ辞書カタログ（たとえば、Oracle辞書）に優先する。さらに、これらのスキーマオブジェクトの保守は、DBA（データベース管理者）にとってほぼ対処できない負担である。さらに、現在のリレーショナルデータベースは、各団体を論理的に独立したままにするのに十分なオンラインDDL（非常に同時性の高いトランザクションシステム）をサポートしていない。具体的には、ある団体がスキーマを作成すると、他のすべての顧客のアプリケーションがロックされ、受け入れられない遅延が起こる恐れがある。
【０００５】
2004年4月2日に出願され、参照により本明細書に組み入れられる「Custom Entities and Fields in a Multi-Tenant Database System」という名称の米国特許出願第10/817,161号(特許文献1)は、エンティティおよびフィールドなどのオブジェクトを作成してカスタマイズするシステムおよび方法を開示している。この出願に示されているシステムおよび方法は、上記およびその他の問題を解消するように様々なスキーマデータを一定の物理的スキーマに格納する融通性に富んだ手法を実現する。
【０００６】
しかし、エンティティおよびフィールドなどのカスタムデータベースオブジェクトを作成する能力を実現するだけでなく、ユーザまたはユーザのグループ間でそのような標準およびカスタムオブジェクトおよびアプリケーションを容易にかつ都合よく共有するのを可能にする共有モデルを実現することが望ましい。共有モデルは、ユーザが様々なオブジェクトおよびアプリケーション要素へのユーザアクセスを可能にするカスタムビューを作成するのを可能にすべきである。このような共有モデルはまた、より好都合でユーザに優しいデータベースおよびアプリケーションユーザインタフェース環境をユーザにもたらすようにモデルの個々のビューをカスタマイズする能力を個々のユーザに与えるべきである。
【０００７】
【特許文献１】米国特許出願第10/817,161号
【発明の開示】
【０００８】
発明の簡単な概要
本発明は、ユーザが、ユーザまたはユーザのグループ間で標準およびカスタムデータベースオブジェクトおよびアプリケーションを容易にかつ都合よく共有するのを可能にする新規の共有モデルを提供する。
【０００９】
本発明によれば、共有モデルは、ユーザが、カスタムオブジェクトおよびフィールドと、標準オブジェクトおよびフィールドと、アプリケーションとの間の関係を定義するタブおよびタブセットを作成しカスタマイズするのを可能にするシステムおよび方法を提供する。タブは、アプリケーションの要素またはデータベースオブジェクトへのユーザインタフェースを視覚的に表す。あるタブを選択すると、そのタブによって表されるオブジェクトまたはアプリケーションの要素へのユーザアクセスが可能になる。タブセットは、アプリケーション機能を提供する単位として働く一群の関連するタブである。エンドユーザが、表示されたタブおよびタブセットビューによって表される様々なオブジェクトおよびアプリケーション要素を容易にかつ都合よく切り替えることができるように、新しいタブおよびタブセットを定義することができ、かつタブセットビューをカスタマイズすることができる。このように、タブおよびタブセットは、ユーザが、オンデマンドウェブベースホストアプリケーション環境などの多重アプリケーション環境でオブジェクト同士およびアプリケーション同士を切り替える手段として使用することができる。さらに、タブセットの作成者または適切な許可を有する他のユーザは、プロファイルを使用して、どのユーザがタブセット定義を見て使用することができるかを定義し、したがって、タブセット定義内のタブがアクセスを可能にするカスタムオブジェクトおよびアプリケーションへのアクセスをどのユーザに許可するかを定義することができる。
【００１０】
図面および特許請求の範囲を含む明細書の残りの部分を参照すると、本発明の他の特徴および利点が認識されよう。本発明の他の特徴および利点と、本発明の様々な態様の構造および動作について、添付の図面に関連して以下に詳しく説明する。図面では、同じ符番は同一または機能的に類似の要素を示す。
【００１１】
発明の詳細な説明
図1は、マルチテナントデータベースシステムを使用することのできる環境を示している。図1に示されている（かつ図2により詳しく示されている）ように、あらゆるユーザシステム12はネットワーク14を介してマルチテナントデータベースシステム（MTS）16と対話する。これらのユーザシステム12のユーザは、様々な能力のユーザであってよく、特定のユーザシステム12の能力は、完全に現在のユーザに対する許可によって決定することができる。たとえば、販売員が特定のユーザシステム12を使用してMTS 16と対話する際、そのユーザシステムはその販売員に割り当てられた能力を有する。しかし、管理者がそのユーザシステムを使用してMTS 16と対話している間、そのユーザシステムはその管理者に割り当てられた能力を有する。したがって、様々なユーザは、ユーザの許可レベルに応じて、タブおよびタブセット定義ならびにプロファイル情報を含む、アプリケーションおよびデータベース情報へのアクセスおよび修正に関してそれぞれの異なる能力を有する。
【００１２】
ネットワーク14は、LAN（ローカルエリアネットワーク）、WAN（ワイドエリアネットワーク）、無線網、ポイントツーポイントネットワーク、スターネットワーク、トークンリングネットワーク、ハブネットワーク、またはその他の構成であってよい。現在使用されている最も一般的な種類のネットワークは、本明細書の多くの例で使用される大文字「I」を有する「インタネット」と呼ばれることが多いネットワークのグローバルインタネットワークなどのTCP/IP（転送制御プロトコルおよびインタフェースプロトコル）ネットワークである。しかし、本発明が使用することのできるネットワークは、それほど限定されないが、現在好ましいプロトコルはTCP/IPであることを理解されたい。
【００１３】
ユーザシステム12は、TCP/IPを使用してMTS 16と通信し、より高いネットワークレベルでは、HTTP、FTP、AFS、WAPのような他の一般的なインタネットプロトコルを使用して通信することができる。一例として、HTTPを使用する場合、ユーザシステム12は、MTS 16のHTTPサーバとの間でHTTPメッセージを送受信する一般に「ブラウザ」と呼ばれるHTTPクライアントを含んでよい。そのようなHTTPサーバは、MTS 16とネットワーク14との間の唯一のネットワークインタフェースとして実現することができるが、他の技術をこれと共にまたはこの代わりに使用することができ、いくつかの実現態様では、MTS 16とネットワーク14の間のインタフェースは、負荷を平衡させ、着信HTTP要求を複数のサーバに均等に分配するラウンドロビンHTTP要求分配プログラムなどの負荷共有機能プログラムを含む。好ましくは、複数のサーバはそれぞれ、少なくともサーバにアクセスするユーザのためにMTSのデータにアクセスすることができる。
【００１４】
好ましい局面では、図1に示されているシステムは、ウェブベース顧客関係管理（CRM）システムを実現する。たとえば、一局面では、MTS 16はCRMソフトウェアアプリケーションを実現し実行すると共に、関連するデータコード、フォーム、ウェブページ、およびその他の情報をユーザシステム12とやり取りし、かつ関連するデータ、オブジェクト、およびウェブページコンテントをデータシステムに記憶しデータシステムから取り込むように構成されたアプリケーションサーバを含んでよい。マルチテナントシステムでは、テナントデータは好ましくは、あるテナントが他のテナントのデータに、そのようなデータが明示的に共有されていないかぎり、アクセスできなくなるように、あるテナントのデータが他のテナントのデータから分離されたままになるように構成される。しかし、システム16がCRMアプリケーション以外のアプリケーションも実現するか、またはCRMアプリケーションだけでなく他のアプリケーションも実現することができることを理解されたい。たとえば、システム16は、CRMアプリケーションを含む複数のホストアプリケーションへのテナントアクセスを可能にすることができる。
【００１５】
ネットワークインタフェース20、テナントデータ用の記憶域22、MTS 16および場合によっては複数のテナントがアクセス可能なシステムデータ用の記憶域24、MTS 16の様々な機能を実現するプログラムコード26、およびMTSシステムプロセス、およびアプリケーションホストサービスの一部としてのランニングアプリケーションなどのテナント固有プロセスを実行するためのプロセス空間28を含む、MTS 16の各要素の一構成が図1に示されている。
【００１６】
図1に示されているシステム内のいくつかの要素は、本明細書で詳しく説明する必要のない従来の公知の要素を含んでいる。たとえば、各ユーザシステム12は、デスクトップパーソナルコンピュータ、ワークステーション、ラップトップ、PDA、携帯電話、あるいはWAPイネーブル装置、またはインタネットもしくはその他のネットワーク接続とのインタフェースを直接的もしくは間接的にとることのできる任意のその他のコンピューティング装置を含んでよい。ユーザシステム12は通常、HTTPクライアント、たとえば、ユーザシステム12のユーザ（たとえば、CRMシステムの加入者）がMTS 16からネットワーク14上で利用可能な情報、ページ、およびアプリケーションにアクセスし、それを処理し表示するのを可能にする、MicrosoftのInternet Explorer(商標)ブラウザ、NetscapeのNavigator(商標)ブラウザ、Operaのブラウザ、または携帯電話、PDA、もしくはその他の無線装置の場合のWAPイネーブルブラウザなどのブラウジングプログラムを実行する。各ユーザシステム12は通常、MTS 16またはその他のシステムもしくはサーバから与えられるページ、フォーム、アプリケーション、およびその他の情報に関連してディスプレイ（たとえば、モニタ画面、LCDディスプレイなど）上にブラウザから与えられるグラフィカルユーザインタフェース（GUI）とのインタフェースをとるキーボード、マウス、タッチスクリーン、ペンのような1つまたは複数のユーザインタフェース装置も含む。たとえば、ユーザインタフェース装置を使用してタブおよびタブセットを選択し、かつ他の方法で、ユーザが、本明細書で説明するように様々なGUIページとのインタフェースをとるのを可能にすることができる。
【００１７】
上述のように、本発明は、ネットワークの特定のグローバルインタネットワークを指すインタネットと共に使用するのに適している。しかし、インタネットの代わりに、イントラネット、エクストラネット、仮想専用網（VPN）、非TCP/IPベースネットワーク、任意のLANまたはWANのような他のネットワークを使用できることを理解されたい。
【００１８】
一態様によれば、各ユーザシステム12およびそのすべての構成要素は、Intel Pentiumプロセッサなどの中央演算処理装置を使用して実行されるコンピュータコードを含む、ブラウザなどのアプリケーションを使用してオペレータによって構成可能である。同様に、MTS 16（および複数が存在するMTSの他の例）ならびにMTS 16のすべての構成要素は、Intel Pentiumプロセッサなどの中央演算処理装置を使用して実行されるコンピュータコードを含むアプリケーションを使用してオペレータによって構成可能である。MTS 16を本明細書で説明するようにウェブページ、アプリケーション、およびその他のデータおよび媒体コンテントと相互通信しかつそれらを処理するように動作させかつ構成するコンピュータコードは、好ましくはダウンロードしてハードディスク上に格納するが、プログラムコード全体またはその一部を、ROMやRAMのような、公知のように任意の他の揮発性または非揮発性メモリ媒体または装置に格納するか、あるいはコンパクトディスク（CD）媒体、デジタルバーサティルディスク（DVD）媒体、フロッピィディスクのような、プログラムコードを格納することのできる任意の媒体上に与えることもできる。さらに、プログラムコード全体またはその一部を、公知のように、たとえば、インタネット上でソフトウェアソースに送信しかつソフトウェアソースからダウンロードするか、または他のサーバに送信しかつ他のサーバからダウンロードするか、あるいは公知のように任意の通信媒体およびプロトコル（たとえば、TCP/IP、HTTP、HTTPS、Ethernetなど）を使用して公知のように任意の他の従来のネットワーク接続（たとえば、エクストラネット、VPN、LANなど）上で送信することができる。本発明の各局面を実現するコンピュータコードを、サーバまたはサーバシステム上で実行できる任意のプログラミング言語で実現し、たとえば、C、C++、HTML、任意の他のマークアップ言語、Java、JavaScript、VBScriptのような任意のその他のスプリプト言語、および多数の他のプログラミング言語で実現できることが理解されよう。
【００１９】
一態様によれば、各MTS 16は、ウェブページ、フォーム、アプリケーション、データおよび媒体コンテントをユーザシステム12に与え、MTS 16のテナントとしてのユーザシステム12によるアクセスをサポートするように構成される。このため、MTS 16は、データが共有されないかぎり各テナントのデータを分離したままにしておくセキュリティ機構を実現する。複数のMTSを使用する場合、各MTSは、互いに近接させて配置する（たとえば、単一のビルディングまたはキャンパス内に配置されたサーバファーム内に配置する）か、または互いに離れた位置に分散させる（たとえば、1つまたは複数のサーバを都市Aに配置し、1つまたは複数のサーバを都市Bに配置する）ことができる。本明細書では、各MTSは、1つまたは複数の地理的位置に局地的にまたはそれらの地理的位置全体にわたって分散した1つまたは複数の論理的および／または物理的に接続されたサーバを含んでよい。さらに、用語「サーバ」は、当技術分野で公知のように、処理ハードウェアおよびプロセス空間ならびに関連する記憶システムおよびデータベースアプリケーション（たとえば、OODBMSまたはRDBMS）を含むコンピュータシステムを含むことを意味する。「サーバシステム」および「サーバ」は、本明細書では相互交換可能に使用されることも理解されたい。同様に、本明細書で説明するデータベースは、単一のデータベース、分散データベース、分散データベースの集合、冗長オンラインまたはオフラインバックアップあるいはその他の冗長要素を有するデータベースなどとして実現することができ、かつ分散データベースまたは記憶域ネットワークならびに関連する処理インテリジェンスを含んでよい。
【００２０】
図2は、MTS 16の各要素および様々な相互接続をより詳しく示している。この例では、ネットワークインタフェースは、1つまたは複数のHTTPアプリケーションサーバ100として実現される。さらに、個々のテナントプロセス空間104を含むシステムプロセス空間102、システムデータベース106、テナントデータベース108、およびテナント管理プロセス空間110も示されている。テナントデータベース108は、物理的な構成であっても論理的な構成であってもよい個々のテナント記憶領域112に分割することができる。各テナント記憶領域112内では、ユーザ記憶域114を同様に各ユーザごとに割り当てることができる。
【００２１】
各アプリケーションサーバ100を異なるネットワーク接続を介してデータベースシステム、たとえばシステムデータベース106およびテナントデータベース108に通信可能に結合できることも理解されたい。たとえば、あるサーバ1001をインタネット14を介して結合することができ、他のサーバ100N-1を直接ネットワークリンクを介して結合することができ、他のサーバ100Nをさらに異なるネットワーク接続によって結合することができる。伝送制御プロトコルおよびインタネットプロトコル（TCP/IP）は、サーバ100とデータベースシステムとの間の通信を行うのに好ましいプロトコルであるが、当業者には、他のトランスポートプロトコルを使用して、使用されるネットワーク相互接続に応じてシステムを最適化できることが明らかであろう。
【００２２】
好ましい局面では、各アプリケーションサーバ100は、任意のユーザ／団体に対する要求に対処するように構成される。任意の時間に任意の理由でアプリケーションサーバをサーバプールに追加しアプリケーションサーバをサーバプールから削除することができることが望ましいので、特定のアプリケーションサーバ100に対するユーザおよび／または団体のサーバアフィニティがないのが好ましい。したがって、一態様では、負荷分散機能（たとえば、F5 Big-IP負荷分散装置）を実現するインタフェースシステム（図示せず）は、サーバ100とユーザシステム12の間に通信可能に結合され、各サーバ100に要求を分配する。ラウンドロビンおよび観測応答時間のような負荷分散アルゴリズムの他の例を使用することもできる。たとえば、ある局面では、同じユーザからの3つの連続的な要求が3つの異なるサーバにヒットすることがあり、それぞれの異なるユーザからの3つの要求が同じサーバにヒットすることがある。このように、MTS 16は、MTS 16が互いに異なるユーザおよび団体全体にわたる互いに異なるオブジェクト、データ、およびアプリケーションの記憶およびそれらへのアクセスに対処するマルチテナントである。
【００２３】
記憶域の一例として、あるテナントは、各販売員がMTS 16を使用して自分の販売プロセスを管理する営業チームを使用する会社であってよい。したがって、ユーザは、すべて（たとえば、テナントデータベース108内の）そのユーザの個人的な販売プロセスに適用可能な連絡先データ、リードデータ、顧客追跡データ、成績データ、目標および進捗度データなどを維持することができる。好ましいMTS構成では、ネットワークアクセスのみを有するユーザシステムによって、このデータおよびアクセス、表示、修正、報告、送信、計算などを行うべきアプリケーションのすべてを維持し、かつそれらにアクセスすることができるため、ユーザは多数の異なるユーザシステムのいずれかから自分の成績およびサイクルを管理することができる。たとえば、販売員がある顧客を訪れ、その顧客のロビーでインタネットアクセスが可能である場合、販売員は、顧客がロビーに到着するのを待つ間にその顧客に関する重要な更新を得ることができる。
【００２４】
各ユーザの販売データは、各ユーザの従業員とは無関係に他のユーザの販売データから分離することができるが、あるデータは、テナントである所与の団体の営業チーム全員によって共有されるかまたはそれらの人がアクセス可能である団体全体のデータであってよい。したがって、いくつかのデータ構造は、テナントレベルで割り当てられるMTS 16によって管理することができ、一方、他のデータ構造はユーザレベルで管理することができる。MTSは、考えられる競合他社を含む複数のテナントをサポートすることができるため、MTSは、データ、アプリケーション、およびアプリケーションの使用を分離したままにしておくセキュリティプロトコルを有するべきである。さらに、多くのテナントは自分自身のシステムを維持するのではなくMTSにアクセスすることを選択するので、冗長性、アップタイム、およびバックアップは、より重大な機能でありMTSにおいて実現する必要がある。
【００２５】
MTS 16は、ユーザ固有データおよびテナント固有データだけでなく、複数のテナントによって使用可能なシステムレベルデータまたはその他のデータを維持することもできる。このようなシステムレベルデータは、テナント間で共有可能な産業レポート、ニュース、ポスティングなどを含んでよい。
【００２６】
ある局面では、クライアントシステム12は、アプリケーションサーバ100と通信し、MTS 16にシステムレベルおよびテナントレベルデータを要求してこれらのデータを更新する。この場合、データベースシステム106および／またはデータベースシステム108への1つまたは複数のクエリが必要になることがある。MTS 16（たとえば、MTS 16内のアプリケーションサーバ100）は、所望の情報にアクセスするように設計された1つまたは複数のSQL文（SQLクエリ）を自動的に生成する。
【００２７】
各データベースは、一般に、所定の範疇に入るデータを含む、1組の論理テーブルのようなオブジェクト集合とみなすことができる。「テーブル」は、データオブジェクトの一表現であり、本明細書では本発明によるオブジェクトおよびカスタムオブジェクトの概念的な説明を簡単にするために使用される。本明細書では「テーブル」および「オブジェクト」を交換可能に使用できることを理解されたい。各テーブルは一般に、可視スキーマにおけるカラムまたはフィールドとして論理的に構成された1つまたは複数のデータ範疇を含む。テーブルの各行またはレコードは、フィールドによって定義される各範疇ごとにデータのインスタンスを含む。たとえば、CRMデータベースは、名前、住所、電話番号、ファックス番号のような基本的な連絡先情報用のフィールドで顧客を記述したテーブルを含んでよい。他のテーブルは、顧客、製品、販売価格、データなどの情報用のフィールドを含む購入注文を記述することができる。いくつかのマルチテナントデータベースシステムでは、すべてのテナントが使用できる標準エンティティテーブルを設けることができる。CRMデータベースアプリケーションの場合、そのような標準エンティティは、各々が定義済みのフィールドを含む会計、連絡先、リード、および機会データのテーブルを含んでよい。
【００２８】
一局面によれば、ユーザは、顧客オブジェクト、カスタムタブ、カスタムフィールド、およびカスタムページレイアウトを含む自分自身のカスタムアプリケーションを設計することができる。2004年4月2日に出願され、すでに参照により本明細書に全体的に組み入れられている「Custom Entities and Fields in a Multi-Tenant Database System」という名称の米国特許出願第10/817,161号は、エンティティおよびフィールドなどのオブジェクトを作成しカスタマイズするシステムおよび方法を開示している。本発明の技術を使用すると、カスタムオブジェクトおよびフィールドと、標準オブジェクトおよびフィールドと、アプリケーションとの間の関係を定義するようにタブおよびタブセットを作成しカスタマイズすることができる。
【００２９】
カスタムタブおよびタブセット
本発明によれば、一般に、タブは、アプリケーションの要素またはデータベースオブジェクトのユーザインタフェースを表す。あるタブを選択すると、そのタブによって表されるアプリケーションのオブジェクトまたは要素へのユーザアクセスが可能になる。タブセットは、アプリケーション機能を実現する単位として働く一群の関連するタブである。本発明は、エンドユーザが、表示されるタブおよびタブセットによって表される様々なオブジェクトおよびアプリケーション要素を容易にかつ都合よく切り替えることができるように、新しいタブおよびタブセットを定義し、タブセットビューをカスタマイズするのを可能にする。一局面では、たとえば、タブおよびタブセットを、オンデマンドウェブベースホストアプリケーション環境などの多重アプリケーション環境でアプリケーション同士を切り替える手段として使用することができる。
【００３０】
一態様では、タブセットは、名前、ロゴ、およびタブの順序付きリストを含む。タブセットは通常、たとえば、ユーザのコンピュータシステム上で実行されるブラウザアプリケーションを使用して、グラフィカルユーザインタフェース（GUI）環境で表示される。たとえば、図3は、タブセットのGUIビューの一部の一例を示している。図3に示されているように、現在選択されているタブセット100は、ロゴ110、および好ましくは、複数のタブセットからユーザが選択可能である場合にのみ含まれる、タブセットセレクタ120を含む。ある局面におけるタブセットセレクタ120は、複数のタブセットが設けられている場合に利用可能であり、かつ利用可能なタブセットを切り替えるのに使用されるドロップダウンリストまたはピックリストを含む。ユーザが選択を変更すると、選択されたタブセット定義に基づいて表示されるタブ、タブの順序、および「新しいxxx（new xxx）」バーが変更される。
【００３１】
図3に示されているタブセットは、ホストシステム、たとえばMTS 16から与えられる標準タブセット定義を表す。標準タブセットは、どのタブ、タブセット、およびデータが最初にテナントまたはユーザに割り当てられるかを決定する能力（テンプレーティング能力）を提供するソースからインポートされる定義済みのタブセットである。標準タブセットの一例は、salesforce.comウェブサイトによりその加入CRMサービスを通じて与えられる。ユーザは、これらの標準タブセットを使用して、会計、連絡先、リード、および機会エンティティなどの標準テーブルまたはエンティティにアクセスすることができる。たとえば、salesforce.com会計、連絡先、リード、および機会エンティティなどを表すタブが図3に示されている。他の例として、salesforce.comは、カスタムエンティティならびに標準エンティティ用のカスタムフィールドを作成する能力も提供する。ユーザは、本発明を使用して、カスタムエンティティおよびフィールドを表すタブを含むタブセットを作成することができる。
【００３２】
一局面によれば、ユーザはカスタムタブセットおよびカスタムタブを作成することができる。好ましくは、管理者レベルユーザのみにその記憶されている許可に基づいてタブセット作成機能が提供される。さらに、ユーザは、表示されるタブの順序およびタブセット内のどのタブが表示されるかを含む、タブセットについてのユーザのビューをカスタマイズすることができる。ユーザがそのタブを都合よく構成するのを可能にするように、各タブは、必要に応じて任意のおよびすべてのタブセットに表示することができる。好ましくは、任意のユーザがタブの組み合わせおよび順序を編集することができるが、ロゴの名前または配置を変更することはできない。タブセットの名称指定およびロゴ選択は、好ましくは管理者レベル機能のみである。たとえば、管理者は、新しいタブセットを作成して既存のタブセットをカスタマイズすることができる。すべてのタブセットについて、管理者は、どのタブが含まれるかおよび各タブを表示すべき順序を指定することができる。団体固有タブセットについて、管理者は名称を指定しオプションのロゴを与えることができる。ホストシステムから与えられる標準タブセット、たとえば、Salesforce.comおよびSupportforce.comタブセットのようなsalesforce.comから提供されるタブセットに対して、管理者は好ましくは、名称またはロゴを変更することも、標準タブセットを削除することもできない。好ましくは、任意のユーザは、見る許可を有するすべてのタブセットについてのユーザのビューを完全にカスタマイズすることができる。単一のタブセットにしかアクセスできないユーザの場合、一局面では、これらのユーザはタブセットセレクタ120を見ることができない。後述のように、ユーザが見ることのできるタブは、ユーザの許可レベルに基づいて決定される。各タブセットのプロファイルは、管理者レベルユーザがタブおよびタブセットのプロファイルレベル可視性を設定するのを可能にし、たとえば、ある許可レベルのユーザのグループについては、あるタブまたはタブセットを見ることを制限することができ、したがって、制限されているタブまたはタブセットによって参照されるあるオブジェクトおよびアプリケーションにアクセスするかまたはそれらを見ることも制限することができる。
【００３３】
したがって、一局面では、タブセットを既存のプロファイルレベルタブ可視性定義上に配置されたフィルタとみなすことができる。管理者は、各タブセットフィルタに含まれるデフォルトタブを設定するが、各ユーザは必要に応じてこれを無効にすることができる。好ましくはユーザが変更できないのはタブセット名称およびロゴだけである。この正味結果として、タブセットはかなりすっきりしており融通性に富んでいる。タブセットに特定の意味は与えられず、各ユーザは一般に、必要に応じてタブセットを使用することができる。
【００３４】
タブセットユーザインタフェース
図4は、一態様によるタブセットを含むUI例の様々な局面を示している。図4に示されているように、画面の一部（たとえば、セットアップ（Setup）、ヘルプ（Help）、およびトレーニング（Training）、ログアウト（Logout）、およびその他のリンクが通常設けられる、各画面の右上隅）に陰影を付けるかまたは他の方法で目立つように表示し、この部分がすべてのアプリケーション全体に適用される（たとえば、持続的である）ことを示すことができる。複数のタブセットを見る許可を有するユーザの場合、タブセットセレクタ120がこの部分にも示される。図示のように、セレクタ120は、この例ではsalesforce.comオンデマンドオペレーティングシステムを示すのに使用される「S」字ロゴ、およびユーザが見る許可を有する各タブセットをリストしたピックリスト122を含む。図4bに示されているようにユーザがピックリスト122からタブを選択すると、タブセットのロゴが、たとえば図示のようにページの左上隅に目立つように表示される。タブセットがホストシステムから供給されず、たとえば、この例ではホストがsalesforce.comであり、顧客がロゴを指定する（すなわち、タブセットがデフォルトのホストロゴを使用しない）場合、図4cに示されているように、「Customforce.com提供（powered by Customforce.com）」グラフィックのようなホストから供給される他のグラフィックをログオンに続いてバナーの右側に表示することができる。
【００３５】
各タブ（ホーム（Home）タブを除く）は、記憶されているタブセット定義によって指定される順序で、選択されたタブセットのタブで置き換えられる。デフォルトでは、ホームタブが現在のタブとして表示される。「新規作成（new）」バーも、選択されたタブセット内のタブによって参照されるオブジェクトに関係するオブジェクトを作成するためのリンクのリストで置き換えられる。たとえば、図4dに示されているように、タブセットが以下のタブ、すなわち動物園（Zoos）およびサル（Monkeys）を含む場合、「新規作成」バーは以下のタブ、すなわち、新しい動物園（New Zoo）、新しいサル（New Monkey）、およびリサイクルビン（Recycle Bin）を有する。「新規作成」バー内の各リンクの順序は好ましくは、タブセット内のタブの順序に一致するが、このことは、図4cを見ると分かるように必要ではない。
【００３６】
一局面では、ユーザがタブセットセレクタ120を理解するのを助けるために、マウスが「S」字ロゴまたはピックリスト122の上に位置する場合、タブセットの概念について説明する工具先端が表示される。
【００３７】
ユーザが新しいオブジェクトを作成するかまたは既存のオブジェクトを表示し、そのオブジェクトが選択されたタブセットでは参照されない場合、システムの動作は好ましくは変更されず、たとえば、タブを有さない新しいオブジェクトを表示または作成する場合と同じ動作が実行される。そのオブジェクトがユーザの別のタブセット内のタブを有する場合でも、選択されたタブセットは好ましくは変更されない。最近の項目リストを使用する場合、リストは好ましくは、選択されたタブセット定義によってフィルタリングされない。ユーザが、現在のタブセットに表示されているタブを有さない項目をクリックした場合、その詳細ページが表示されるがそのタブは表示されない。
【００３８】
図5は、一局面による様々なモードのビューイングタブをサポートするページ（「すべてのタブ（All Tabs）」ページ）の一例を示している。このモードは、「表示（View）」ドロップダウンリスト（ピックリスト）を使用して選択される。あるモードでは、「すべてのタブ」を選択することによって、ユーザがアクセスして見るすべてのタブがアルファベット順で表示される。他のモードでは、タブは表示順にタブセットごとにグループ分けされる。図示のように、標準salesforce.comタブセットのタブが表示順に示される。ドリップダウンリストは、ユーザが表示すべきタブセットを選択するのを可能にする。
【００３９】
図6は、各タブセットを完全にカスタマイズし、どのタブがどのタブセットに入るかを指定すると共にこれらのタブの順序を指定する能力をユーザに与えるページの一例を示している。リストボックスにリストされているタブは、ユーザのプロファイルについて隠されていないすべてのタブを含む。図6に示されているように、ユーザは、「追加（add）」ボタンおよび「削除（Remove）」ボタンを使用してどのタブが選択されたタブセットに属するかを指定することができる。ユーザは、「上（up）」ボタンおよび「下（Down）」ボタンを使用してこれらのタブが現れる順序を再設定することができる。ユーザは好ましくは、タブがタブセット内にリストされているかどうかにかかわらず、見ることが許可されているタブを見ることしかできない。
【００４０】
図7は、一局面による、ユーザがタブセットを作成しカスタマイズするのを可能にするタブセットリストビューページの一例を示している。適切な許可を有する任意のユーザがタブセット、たとえば、作成（create）、削除（delete）、編集（edit）などを管理することができる。リストビューは好ましくは、図示のように利用可能な各タブセットのエントリを含む視覚テーブルを含む。各エントリは、タブセット名および説明を示している。図示のように、リストビューページは、「新規作成」ボタン125を選択することによって新しいカスタムタブセットを作成する新規作成アクション、編集セレクタ126を選択することによってタブセットを編集する編集アクション、および削除セレクタ127を選択することによってタブセットを削除する削除アクションをサポートする。
【００４１】
新規作成ボタン125を選択すると、タブセット選択「ウィザード」が呼び出される。図8は、一局面による第1のウィザードページの一例である。ウィザードは、ユーザがタブセットの名前（ラベル）とオプションの説明を入力するエントリボックスを表示する。タブセット名のサイズは好ましくは、たとえば最大40文字の長さに限定される。カスタムタブセットは好ましくは、ホストシステムによって標準タブセットが表示された後に命名することはできない。「営業チーム（Salesforce）」、「サポートチーム（Supportforce）」、および「カスタムチーム（Customforce）」は、（「.com」の有無に関らず）使用できない。タブセット名はまた、好ましくはHTML文字を含むことができない。
【００４２】
図9は、一局面による、ユーザがカスタムロゴを指定するのを可能にする第2のウィザードページの一例を示している。第2のページは、第1のページの情報が入力され、ユーザが「次（next）」を選択した場合に呼び出される。図9に示されているように、ユーザは新しいタブセット用のロゴを供給することができる（デフォルトでは、Customforceなどのホストシステムロゴがすでに存在している）。画像が識別されるかまたはシステムにアップロードされた後、画像は、所定のサイズ（たとえば、幅：235画素；高さ：55画素）よりも大きい場合、スケールダウンまたはクリッピングすることができる。スケーリングによって元のロゴのアスペクト比が維持される。.gif画像が好ましいが、JPEG、Bitmapのような他の画像フォーマットを使用してもよい。
【００４３】
図10は、一局面による、ユーザがどのタブが新しいタブセットに属するかを指定すると共に、タブが表示される順序を指定するのを可能にする第3のウィザードページの一例を示している。第3のページは、ユーザが第2のページの「保存（save）」を選択した場合に呼び出される。図10に示されているように、ユーザは、「追加」ボタンおよび「削除」ボタンを使用してどのタブがこのタブセットに属するかを指定することができる。ユーザは、「上」ボタンおよび「下」ボタンを使用して、これらのタブが現れるべき順序を再設定することもできる。ユーザは好ましくは、タブがタブセットにリストされているかどうかにかかわらず見る許可を有するタブのみを見ることができる。
【００４４】
図11は、一局面による、タブセットの可視性を指定するのを可能にする第4のウィザードページの一例を示している。第4のページは、ユーザが第3のページで「保存」を選択した場合に呼び出される。図11に示されているように、ユーザは、新しいカスタムタブセットが利用可能なユーザプロファイルを選択すると共に、このカスタムタブセットをデフォルトタブセットにするかどうかを選択することができる。一局面では、ユーザは、図示の一連の選択可能なチェックボックスを使用して各ユーザプロファイル（User Profile）のタブセットの可視性およびデフォルト動作を指定することができる。
【００４５】
図12は、既存のタブセットの詳細を示すタブセット詳細ページの一例を示している。詳細情報は、ラベル、説明、ロゴ、含められるタブ、「作成者（created by）」情報および「前回の更新（last updated）」情報を含んでよい。このページは、たとえば、図7に示されている全てのタブページからタブセットラベルを選択することによって呼び出すことができる。図12に示されているように、ユーザはこのページから編集アクションを選択することもできる。
【００４６】
たとえば図7または図12で編集アクションを選択すると、上述のように新規作成アクションによって呼び出されるウィザードとほぼ同一のウィザードが呼び出される。しかし、ホストシステムから供給される標準タブセット、たとえばsalesforce.comでは、詳細入力段階およびログ選択段階は利用できない。さらに、ウィザードの最後の段階は好ましくは、ユーザが、任意の変更によってユーザの任意の個人的なカスタマイズ設定が無効になるかどうかを指定するのを可能にするチェックボックスを含む。
【００４７】
図13は、ユーザが削除アクションを選択した場合に表示されるページの一例を示している。このアクションを選択すると、ユーザは、削除すべきタブセットをデフォルトタブセットとして選択させたユーザに対してどの他のタブセットをデフォルトタブセットとして設定するかを尋ねられる。タブセットは、事実上フィルタであるので、プロファイルタブ可視性の好みに影響を与えずに削除することができる。タブの順序は好ましくは、現在のプレタブセット順序方式に戻る（すなわち、標準タブはハードコード順序であり、カスタムタブは作成順である）。
【００４８】
一局面によれば、ユーザはカスタムタブを作成することもできる。図14は、ユーザがタブを作成しカスタマイズするのを可能にするタブリストビューページの一例を示している。図示のリストビューは好ましくは、図示のように各々の利用可能なタブのエントリを含む視覚テーブルを含む。各エントリは、タブ名、タブ形式、および説明を示す。図示のように、リストビューは、「新規作成」ボタンを選択することによって新しいカスタムタブを作成する新規作成アクション、編集セレクタを選択することによって既存のタブセットを編集する編集アクション、および削除セレクタを選択することによって既存のタブを削除する削除アクションをサポートする。この場合も、好ましくは、管理者タブにアクセスできるようにすべきなのは管理者レベルユーザだけである。ユーザは、カスタムオブジェクトを参照するカスタムオブジェクト、および外部ウェブアプリケーションおよびコンテントをウィンドウ内に埋め込むのを可能にするウェブタブを作成することができる。
【００４９】
新規作成ボタンを選択するとタブ作成「ウィザード」が呼び出される。図15は、一局面による第1のタブ作成ウィザードページの一例を示している。このウィザードは、既存のカスタムオブジェクトの名称を選択する（または新しいカスタムオブジェクトを作成することを選択する）と共に、タブ形式およびオプションのタブ説明を選択するためのエントリボックスを表示する。
【００５０】
図16は、一局面による第2のタブ作成ウィザードページの一例を示している。第2のページは、第1のページの情報が選択または入力されており、ユーザが「次」を選択した場合に呼び出される。ユーザは、新しいカスタムタブが利用可能になるユーザプロファイルを選択することができる。一局面では、ユーザは、図示の一連の選択可能なチェックボックスを使用して各ユーザプロファイルのタブの可視性およびデフォルト動作を指定することができる。
【００５１】
一局面によれば、図17に示されているように、カスタムオブジェクトタブ（Custom Object Tabs）およびウェブタブ（Web Tabs）の両方についての新規作成アクションのウィザードに追加的な最後の段階が付加される。この段階では、ユーザは、新しいタブが表示されるのはどのタブセットであるか、およびこの新しいタブをユーザの既存の個人的なカスタマイズ設定に付加すべきかどうかを指定する。
【００５２】
一局面では、すべてのタブセットをリストし、どのユーザがあるタブセットを見ることができるか、およびユーザが最初にログオンする際にどのタブセットを選択すべきか（その時から、ユーザがログオンするときに選択されるタブセットは好ましくは、ユーザが前回ログオフする際に選択されたタブセットと同じになる）を各プロファイルごとに指定する、新しい「タブセット設定」（Tab Set Settings）セクションが各プロファイルオブジェクトに付加される。図19のプロファイル編集（Profile Edit）ページに示されているように、タブセットの可視性は、チェックボックスによって示される（ユーザが複数のタブセットにアクセスできるため）が、どのタブセットを最初に選択すべきかは、ラジオボタンによって指定される（1つのデフォルトタブセットしかない場合もある）。図18は、図19のプロファイル編集ページで行われた選択の詳細を示すプロファイル詳細（Profile Detail）ページの一例を示している。
【００５３】
サーバ側動作およびデータモデル定義
ロゴ
一局面では、ロゴ部分をユーザのタブセット定義によって無効にすることができる。ユーザから与えられた画像は好ましくは、「ドキュメント内（in document）」、たとえば、顧客が好む任意のドキュメントタイプを記憶するのを可能にするドキュメント記憶モジュールまたは機能に記憶される。たとえば、ロゴはドキュメントとして記憶され、次に新しいタブセットを作成する際に使用されるウィザードによって参照される。次に、ドキュメント記憶機能内のロゴを（URLを介して）指し示すHTML IMGタグが自動的に生成される。画像の矩形サイズに制限を設定することが好ましく、そうしないと、ユーザは大きな画像、たとえば大きな.gifファイルをポスティングすることによってUIに悪影響を与える。したがって、一局面では、与えられた画像のサイズに応じて、画像をクリッピングまたはスケーリングすることができる。たとえば、以下の例では、画像の高さが55画素よりも大きい場合画像はクリッピングされる。
<div style="position:absolute;height:55px;overflow:hidden;">
<img border=0 src="xxx.gif">
</div>
【００５４】
タブセレクタ
一態様では、タブセレクタ内の利用可能な値は、デフォルトでは各プロファイルに定義される。各ユーザは、ユーザのグループの管理を簡略化するのを助けるために使用されるプロファイルに属する。デフォルトタブは、ユーザがシステムにログインする際に使用される。ユーザのプロファイルにタブセットが1つしかない場合、ユーザに対してセレクタは表示されない。ある局面では、ユーザがログアウトするまでセッションクッキーを使用してタブセレクタ120の現在の選択が維持される。ユーザの選択を維持する他の方法は、ユーザの好みをデータベースに保存することである。
【００５５】
マルチブラウザ動作
ユーザが2つ（またはそれ以上）のブラウザウィンドウを開いてホストシステムにアクセスする場合でも、各タブセレクタの選択（すなわち、タブセット選択）は好ましくは、各ブラウザごとに維持される。この場合、これは、同じセッションを共有する各ブラウザインスタンスがそれ自体のクッキーを有する場合に望ましい。しかし、ブラウザインスタンス固有クッキーIDを生成するための容易な方法はない。一局面では、この問題を解決するために、タブセレクタ上で選択を変更するたびに、直ちにアプリケーションサーバが呼び出されリロードされる。タブセット選択を行うと、セッションクッキーが設定され、サーバに送り返される。次に、値が適切にサーバに渡されるようにセッションクッキーを設定し直すことができる。
【００５６】
ユーザの好み
ユーザは、どのタブがタブセットに入っているかをカスタマイズすると共に、各タブの順序をカスタマイズすることによって、自分が見る許可を有する各タブセットを編集することができる。ユーザが表示することを選択できるタブは好ましくは、現在のタブセットには限定されず、記憶されているプロファイルに定義されている、ユーザが見ることのできるすべてのタブを選択することができる。しかし、ユーザのプロファイル内で「隠す（Hidden）」とマーク付けされたタブが選択不能である。
【００５７】
設計
メモリ内データ構造
タブセットセレクタおよびタブは、ほぼあらゆるページから参照されるため、一局面では、タブセット情報は好ましくは、関連するデータベーステーブルにキャッシュされる。必要な情報には、たとえば、1）各タブセット（w/タブのアレイ）、2）（プロファイルにタブセットセレクタを構成するための）タブセットの集合（Set of Tab Set）、および3）ユーザの好み用のマスタタブセットの部分集合（Set of TabSet）を含めてよい。
【００５８】
タブセット
各タブセットは、名称、説明、画像、およびタブのリストを含み、デフォルトを有さない。この情報は、所与のユーザに固有の情報ではなく、団体またはテナント全体にわたって存在し、一団体全体にわたって共有される（複数の団体のすべてに共有されるわけではない）データベーステーブルに記憶される。2種類のタブセット、すなわち標準タブセットおよびカスタムタブセットがある。標準タブセットは、ホストシステム、たとえばsalesforce.comによって定義され、ユーザは標準タブセットをカスタマイズするその能力を制限される。
【００５９】
以下に、Tab Setデータ構造を定義するのに有用なJavaクラス定義およびデータベーステーブル定義の一例を示す。
class TabSetInfo implements Serializable
String id;
int type;    //0:Custom,>0: Standard
String masterLabel;
String documentId;
String[] tabs;
【００６０】
一局面では、テナントに最初に与えられるタブセットは、テンプレートに定義されており、したがって、様々なテナントがそれぞれの異なるタブセットで開始することができ、これらのタブセットは異なるタブを備えることができる。
【００６１】
一局面では、各ユーザは、対応するプロファイル内のすべてのユーザについて、タブセット可視性を含む許可を決定する「プロファイル」にマップされる。この情報を管理するために、デフォルトフラグを有するタブセットのリストとしてある関係が定義され、データベーステーブルに保持される。
ProfileInfo:
String[]tabSetIds;    //array of TabSetInfo IDs
int defaultTabSetIndex;//index in tabSetIds
【００６２】
ユーザは自分のタブセットをカスタマイズすることができるので、一局面ではユーザのカスタマイズ設定はデータベーステーブルに記憶される。
【００６３】
API要件
タブセットがウェブブラウザを介して利用可能になるだけでなく、ある局面では、タブセットが、Web Services (SOAP/HTTP) APIを介しても利用可能であり、したがって、オフラインブラウザ、無線クライアントなどを含む他のクライアントソフトウェアを介して実現することができる。有用なAPIの一例をJavaに変換すると、以下のようになる。
public DescribeTabSetResult[] describeTabs() throws RemoteException, 
UnexpectedErrorFault;
【００６４】
定義済みのタブセット結果説明（DescribeTabSetResult）オブジェクトのアレイをJavaに変換した際の結果は以下のとおりである。
public class DescribeTabSetResult implements java.io.Serializable{
private java.lang.String label;
private java.lang.String logoUrl;
private boolean selected;
private com.sforce.soap.partner.DescribeTab[] tabs;
public DescribeTabSetResult(){
}
public java.lang.String getLabel(){
return label;
}
public java.lang.String getLogoUrl(){
return logoUrl;
}
public boolean isSelected(){
return Selected;
}
public com.sforce.soap.partner.DescribeTab[] getTabs(){
return tabs;
}
public void setTabs(com.sforce.soap.partner.DescribeTab[] tabs){
this.tabs = tabs;
}
};
【００６５】
最後に、このクラスは、javaでは以下のように定義できるタブ説明（DescribeTab）オブジェクトのリストの参照を含む。
public class DescribeTab implements java.io.Serializable{
private boolean custom; 
private java.lang.String label;
private java.lang.String sobjectName;
private java.lang.String url;
public DescribeTab(){
}
public boolean isCustom(){
return custom;
}
public java.lang.String getLabel(){
return label; 
}
public java.lang.String getSobjectName(){
return sobjectName; 
}
public java.lang.String getUrl(){
return url;
}
};
【００６６】
本発明を一例として特定の態様に関して説明したが、本発明が開示された態様に限定されないことを理解されたい。そればかりでなく、当業者には明らかなように、本発明は、様々な修正態様および同様の構成を対象とするものである。したがって、添付の特許請求の範囲は、すべてのそのような修正態様および同様の構成を包含するように広義に解釈すべきである。
【図面の簡単な説明】
【００６７】
【図１】マルチテナントデータベースシステムを使用することのできる環境を示す。
【図２】図1の各要素および様々な相互接続をより詳しく示す。
【図３】一態様による、ホストシステムから与えられる標準タブセット定義のユーザインタフェース（UI）図である。
【図４】一態様によるタブセットを含むUI例の様々な局面を示す。
【図５】一局面による、様々なモードのビューイングタブをサポートする「すべてのタブ（All Tabs）」の一例を示す。
【図６】一局面による、各タブセットを完全にカスタマイズし、どのタブがどのタブセットに入るかを指定すると共にこれらのタブの順序を指定する能力をユーザに与えるページの一例を示す。
【図７】一局面による、ユーザがタブセットをカスタマイズするのを可能にするタブセットリストビューページの一例を示す。
【図８】一局面による、第1のタブセット作成ウィザードページの一例を示す。
【図９】一局面による、ユーザがカスタムロゴを生成するのを可能にする第2のタブセット作成ウィザードページの一例を示す。
【図１０】一局面による、ユーザが、どのタブが新しいタブセットに入るかを指定すると共に各タブを表示すべき順序を指定するのを可能にする第3のタブセット作成ウィザードページの一例を示す。
【図１１】一局面による、ユーザがタブセットの可視性を指定するのを可能にする第4のタブセット作成ウィザードページの一例を示す。
【図１２】一局面による、既存のタブセットの詳細を示すタブセット詳細ページの一例を示す。
【図１３】一局面による、ユーザが削除（Delete）アクションを選択した場合に示されるページの一例を示す。
【図１４】一局面による、ユーザがタブを作成しカスタマイズするのを可能にするタブリストビューページの一例を示す。
【図１５】一局面による第1のタブセット作成ウィザードページの一例を示す。
【図１６】一局面による第2のタブセット作成ウィザードページの一例を示す。
【図１７】カスタムオブジェクトタブ（Custom Object Tab）およびウェブタブ（Web Tab）の両方のための新規作成（New）アクションについての追加の段階を含むウィザードページの一例を示す図である。
【図１８】図19に示されているプロファイル編集ページで行われた選択の詳細を示すプロファイル詳細ページの一例を示す。
【図１９】一局面によるプロファイル編集ページの一例を示す。
【図１】
2008533593.tif 000004
【図２】
2008533593.tif 000005
【図３】
2008533593.tif 000006
【図４】
2008533593.tif 000007
【図５】
2008533593.tif 000008
【図６】
2008533593.tif 000009
【図７】
2008533593.tif 000010
【図８】
2008533593.tif 000011
【図９】
2008533593.tif 000012
【図１０】
2008533593.tif 000013
【図１１】
2008533593.tif 000014
【図１２】
2008533593.tif 000015
【図１３】
2008533593.tif 000016
【図１４】
2008533593.tif 000017
【図１５】
2008533593.tif 000018
【図１６】
2008533593.tif 000019
【図１７】
2008533593.tif 000020
【図１８】
2008533593.tif 000021
【図１９】
2008533593.tif 000022
【国際調査報告】
2008533593.tif 000023