(57)【要約】  ソフトウェアベースの顧客関係管理システム及び方法。【選択図】図１
2009508190.tif 000002
【特許請求の範囲】
【請求項１】
顧客関係管理システムであって、
クライアントと、
情報の複数の一部分を含むデータベースと、
前記クライアントからの要求に基づいて前記データベースから情報の一部分を引き出すために前記データベースにアクセスし、前記要求された情報を含むユーザインターフェースを前記ユーザに表示する１つ又はそれ以上のモジュールと、
前記クライアントによる前記１つ又はそれ以上のモジュール及び前記データベースへのアクセスを制御する１つ又はそれ以上のコントローラと、
前記データベースと前記１つ又はそれ以上のコントローラの間に接続されたクエリーカウンタと、
を備え、
前記クエリーカウンタが、前記ユーザインターフェースのデータベースに対するクエリーの数を決定付けるコードの１つ又はそれ以上のラインを有する、
ことを特徴とする顧客関係管理システム。
【請求項２】
前記クエリーカウンタは、前記ユーザインターフェースの各ページに対して、前記ユーザインターフェースのデータベース及び前記ユーザインターフェースの１つ又はそれ以上の部分に対するクエリーの数を決定付けるコードの１つ又はそれ以上のラインを更に含む、
ことを特徴とする請求項１に記載のシステム。
【請求項３】
前記クエリーカウンタは、前記データベースクエリーを生成した前記ユーザインターフェースの部分に隣接してクエリーの数を表示するコードの１つ又はそれ以上のラインを更に含む、
ことを特徴とする請求項１に記載のシステム。
【請求項４】
前記クエリーカウンタは、前記データベースクエリーを生成した前記ユーザインターフェースの部分に隣接して前記データベースクエリーのコンテンツを表示するコードの１つ又はそれ以上のラインを更に含む、
ことを特徴とする請求項１に記載のシステム。
【請求項５】
前記データベースの抽象化レイヤは、スロークエリーをログに記録することができるコードの１つ又はそれ以上のラインを更に含む、
ことを特徴とする請求項１に記載のシステム。
【請求項６】
前記データベース抽象化レイヤは、前記クエリーを実行するよう要求された実際の時間に設定されるスレショルドに基づいてどのクエリーのログを記録するかを更に制御することができる、
ことを特徴とする請求項５に記載のシステム。
【請求項７】
クライアントと、情報の複数の一部分を含むデータベースと、前記クライアントからの要求に基づいて前記データベースから情報の一部分を引き出すために前記データベースにアクセスし、前記要求された情報を含むユーザインターフェースを前記ユーザに表示する１つ又はそれ以上のモジュールと、前記クライアントによる前記１つ又はそれ以上のモジュール及び前記データベースへのアクセスを制御する１つ又はそれ以上のコントローラとを有する顧客関係管理システムのための顧客関係管理方法であって、該方法が、
前記ユーザインターフェースの表示中に１つ又はそれ以上のデータベースクエリーを実行する段階と、
前記データベースと前記１つ又はそれ以上のコントローラとの間に結合されたクエリーカウンタを使用して、前記ユーザインターフェースによる前記データベースのクエリーの数をカウントする段階と、
を含む方法。
【請求項８】
クエリーの数をカウントする段階が、前記ユーザインターフェースの各ページに対して、前記ユーザインターフェースのデータベース及び前記ユーザインターフェースの１つ又はそれ以上の部分に対するクエリーの数を決定付ける段階を更に含む、
ことを特徴とする請求項７に記載の方法。
【請求項９】
前記クエリーの数をカウントする段階が、前記データベースクエリーを生成した前記ユーザインターフェースの部分に隣接してクエリーの数を表示する段階を更に含む、
ことを特徴とする請求項７に記載の方法。
【請求項１０】
前記クエリーカウンタは、前記データベースクエリーを生成した前記ユーザインターフェースの部分に隣接して前記データベースクエリーのコンテンツを表示するコードの１つ又はそれ以上のラインを更に含む、
ことを特徴とする請求項７に記載のシステム。
【請求項１１】
前記データベース抽象化レイヤは、スロークエリーをログに記録することができるコードの１つ又はそれ以上のラインを更に含む、
ことを特徴とする請求項７に記載のシステム。
【請求項１２】
前記データベース抽象化レイヤは、前記クエリーを実行するよう要求された実際の時間に設定されるスレショルドに基づいてどのクエリーのログを記録するかを更に制御することができる、
ことを特徴とする請求項１１に記載のシステム。
【請求項１３】
顧客関係管理システムであって、
クライアントと、
情報の複数の一部分を含むデータベースと、
前記クライアントからの要求に基づいて前記データベースから情報の一部分を引き出すために前記データベースにアクセスし、前記要求された情報を含むユーザインターフェースを前記ユーザに表示する１つ又はそれ以上のモジュールと、
前記クライアントによる前記１つ又はそれ以上のモジュール及び前記データベースへのアクセスを制御する１つ又はそれ以上のコントローラと、
ユーザ命令に基づいて、前記１つ又はそれ以上のモジュールによって実装されたソフトウェアアプリケーションに使用される前記モジュールを変更するコードの１つ又はそれ以上のラインを有するモジュールローダと、
を備える、
ことを特徴とする顧客関係管理システム。
【請求項１４】
前記モジュールローダが、新しいモジュールを前記ソフトウェアアプリケーションに追加するコードの１つ又はそれ以上のラインと、前記ソフトウェアアプリケーションからモジュールを取り除くコードの１つ又はそれ以上のラインとを更に含む、
ことを特徴とする請求項１３に記載のシステム。
【請求項１５】
前記モジュールローダが、構成要素をロードするのに使用されるマニフェストファイルを更に含み、前記構成要素は、モジュール、ユーザインターフェーステーマ、言語パッケージ、及び前記ソフトウェアアプリケーションへのパッチのうちの少なくとも１つである、
ことを特徴とする請求項１３に記載のシステム。
【請求項１６】
前記マニフェストファイルが、前記構成要素をロードするために前記ソフトウェアアプリケーションのバージョンを示すバージョン変数と、前記構成要素をロードするために前記ソフトウェアアプリケーションのフレーバーを示すフレーバー変数とを更に含み、前記フレーバーが、オープンソースフレーバー、プロフェッショナルフレーバー、又はエンタープライズフレーバーの１つ又はそれ以上である、
ことを特徴とする請求項１５に記載のシステム。
【請求項１７】
前記マニフェストファイルが、前記構成要素のユーザ可読名を含む名前変数と、前記構成要素の説明を含む説明変数と、前記構成要素の作成者を含む作成者変数と、前記構成要素が公開された日付を含む公開日付変数と、前記構成要素のバージョンを示すバージョン変数と、前記構成要素のタイプを示すタイプ変数とを更に含む、
ことを特徴とする請求項１６に記載のシステム。
【請求項１８】
前記マニフェストファイルが、前記構成要素をコピーするためのファイルコピー命令のセットを含むコピーファイル変数を更に含む、
ことを特徴とする請求項１７に記載のシステム。
【請求項１９】
クライアントと、情報の複数の一部分を含むデータベースと、前記クライアントからの要求に基づいて前記データベースから情報の一部分を引き出すために前記データベースにアクセスし、前記要求された情報を含むユーザインターフェースを前記ユーザに表示する１つ又はそれ以上のモジュールと、
前記クライアントによる前記１つ又はそれ以上のモジュール及び前記データベースへのアクセスを制御する１つ又はそれ以上のコントローラとを備える顧客関係管理システムの一部分であるソフトウェアアプリケーションを再構成するための方法であって、該方法が、モジュールローダを使用して、前記ソフトウェアアプリケーションの構成要素をマニフェストファイルに基づいて変更する段階を含み、前記構成要素が、モジュール、ユーザインターフェーステーマ、言語パッケージ、及びパッチのうちの１つである、
ことを特徴とする方法。
【請求項２０】
前記ソフトウェアアプリケーションの構成要素を変更する段階が、前記ソフトウェアアプリケーションに構成要素を追加する段階、又は前記ソフトウェアアプリケーションから構成要素を取り除く段階を更に含む、
ことを特徴とする請求項１９に記載の方法。
【請求項２１】
前記マニフェストファイルが、前記構成要素をロードするために前記ソフトウェアアプリケーションのバージョンを示すバージョン変数と、前記構成要素をロードするために前記ソフトウェアアプリケーションのフレーバーを示すフレーバー変数とを更に含み、前記フレーバーが、オープンソースフレーバー、プロフェッショナルフレーバー、又はエンタープライズフレーバーの１つ又はそれ以上である、
ことを特徴とする請求項１９に記載の方法。
【請求項２２】
前記マニフェストファイルが、前記構成要素のユーザ可読名を含む名前変数と、前記構成要素の説明を含む説明変数と、前記構成要素の作成者を含む作成者変数と、前記構成要素が公開された日付を含む公開日付変数と、前記構成要素のバージョンを示すバージョン変数と、前記構成要素のタイプを示すタイプ変数とを更に含む、
ことを特徴とする請求項２１に記載の方法。
【請求項２３】
前記マニフェストファイルが、前記構成要素をコピーするためのファイルコピー命令のセットを含むコピーファイル変数を更に含む、
ことを特徴とする請求項２２に記載の方法。
【請求項２４】
オープンソースソフトウェアアプリケーションのアップグレード方法であって、
既存のオープンソースソフトウェアアプリケーションをアップグレードするためにアップグレードパッケージを受け取る段階と、
前記アップグレードパッケージにおける各ファイルについて、カスタマイズされていた既存の前記オープンソースソフトウェアアプリケーションにおけるファイルを示すために、前記ファイルが前記ファイルの前のバージョンとマッチしないかどうかを識別する段階と、
カスタマイズされているとして識別されなかった前記アップグレードパッケージ内の前記ファイルを自動的にアップグレードする段階と、
前記既存のオープンソースソフトウェアアプリケーションからのカスタマイズが前記アップグレードプロセス中に失われないように、ユーザ命令及びデフォルト論理のうちの１つに基づいて、カスタマイズされているとして識別された前記ファイルを選択的にアップグレードする段階と、
を含む方法。
【請求項２５】
前記カスタマイズされたファイルを識別する段階が、前記アップグレードパッケージにおける各ファイルについて検査合計を計算する段階と、前記計算された検査合計を
前記ソフトウェアアプリケーションの前回インストールされたバージョンからの前記ファイルについての既知の検査合計値と前記計算された検査合計とを比較する段階を更に含む、
ことを特徴とする請求項２４に記載の方法。
【請求項２６】
前記検査合計を計算する段階が、ＭＤ５検査合計を計算する段階を更に含む、
ことを特徴とする請求項２５に記載の方法。
【請求項２７】
前記検査合計を計算する段階が、ラインフィード、ソースコード制御システムタグ、及び／又は前記ソースコードのホワイトスペースに対する変更とは無関係のＭＤ５検査合計を計算する段階を更に含む、
ことを特徴とする請求項２５に記載の方法。
【請求項２８】
顧客関係管理システムであって、
クライアントと、
情報の複数の一部分を含むデータベースと、
前記クライアントからの要求に基づいて前記データベースから情報の一部分を引き出すために前記データベースにアクセスし、前記要求された情報を含むユーザインターフェースを前記ユーザに表示する１つ又はそれ以上のモジュールと、
前記クライアントによる前記１つ又はそれ以上のモジュール及び前記データベースへのアクセスを制御する１つ又はそれ以上のコントローラと、
前記サーバー、前記１つ又はそれ以上のモジュール、及び前記１つ又はそれ以上のコントローラに対する定期的な接続性を有するモバイルクライアントと、
を備え、
前記モバイルクライアントが、前記サーバー上の前記データベース及びモジュールの１つに変化が生じたとき或いは前記モバイルクライアント上の前記データに変化が生じたときに双方向に同期される、
ことを特徴とする顧客関係管理システム。
【請求項２９】
前記モバイルクライアントが、前記モバイルクライアントのセキュリティを向上させるために前記モジュールの暗号化形式を更に含む、
ことを特徴とする請求項２８に記載のシステム。
【請求項３０】
前記モバイルクライアントが、同期中に前記ユーザへの同期進行フィードバックを更に提供する、
ことを特徴とする請求項２８に記載のシステム。
【請求項３１】
顧客関係管理システムであって、
クライアントと、
情報の複数の一部分を含むデータベースと、
前記クライアントからの要求に基づいて前記データベースから情報の一部分を引き出すために前記データベースにアクセスし、前記要求された情報を含むユーザインターフェースを前記ユーザに表示する１つ又はそれ以上のモジュールと、
前記クライアントによる前記１つ又はそれ以上のモジュール及び前記データベースへのアクセスを制御する１つ又はそれ以上のコントローラと、
前記モジュールのオペレーション中にＰＨＰセッションセキュリティを保護するためのセキュリティソースコードと、
を備える顧客関係管理システム。
【請求項３２】
前記セキュリティソースコードは、インストール中に前記サーバーに対するアプリケーションＩＤを生成し、各セッションに対して前記アプリケーションＩＤ及びＩＰアドレスを追跡し、前記アプリケーションＩＤの１つがユーザに対して割り当てられたアプリケーションＩＤと一致していない場合、或いは前記ＩＰアドレスが前記ユーザに対して割り当てられたＩＰアドレスと一致していない場合には、前記ユーザは顧客関係管理システムとのＰＨＰセッションへのアクセスが拒否される、
ことを特徴とする請求項３１に記載のシステム。
【請求項３３】
前記セキュリティソースコードは、前記アプリケーションの全てのエントリーポイントを宣言する必要があるときに、エンドユーザが前記モジュールファイルの１つに直接アクセスできないようにする、
ことを特徴とする請求項３１に記載のシステム。
【請求項３４】
セキュリティにおけるあらゆる侵害又はセキュリティにおける認識された侵害により、システム攻撃を阻止するためにＰＨＰセッションが破棄される結果となる、
ことを特徴とする請求項３１に記載のシステム。
【請求項３５】
顧客関係管理システムであって、
クライアントと、
情報の複数の一部分を含むデータベースと、
前記クライアントからの要求に基づいて前記データベースから情報の一部分を引き出すために前記データベースにアクセスし、前記要求された情報を含むユーザインターフェースを前記ユーザに表示する１つ又はそれ以上のモジュールと、
前記クライアントによる前記１つ又はそれ以上のモジュール及び前記データベースへのアクセスを制御する１つ又はそれ以上のコントローラと、
を備え、
前記１つ又はそれ以上のモジュールがカレンダーモジュールを更に含み、前記カレンダーモジュールが、外部カレンダープログラムと同期される、
ことを特徴とする顧客関係管理システム。
【請求項３６】
前記外部カレンダープログラムは、Ｍｉｃｒｏｓｏｆｔ  Ｏｕｔｌｏｏｋである、
ことを特徴とする請求項３５に記載のシステム。
【請求項３７】
前記外部カレンダープログラムは、Ｌｏｔｕｓ  Ｄｏｍｉｎｏ、Ｇｏｏｇｌｅ  Ｃａｌｅｎｄｅｒ、Ｏｒａｃｌｅ  Ｃａｌｅｎｄｅｒ、ＳＡＰ  Ｃａｌｅｎｄｅｒ、Ｚｉｍｂｒａ  Ｃａｌｅｎｄｅｒ、Ｓｃａｌｉｘ  Ｃａｌｅｎｄｅｒ、及びＮｏｖｅｌ  Ｇｒｏｕｐｗｉｓｅのうちの１つを更に含む、
ことを特徴とする請求項３５に記載のシステム。
【請求項３８】
処理ユニットベースシステムであって、
前記処理ユニットベースシステム上で、ユーザインターフェースが関連付けられたビジネスソフトウェアアプリケーションを実行させる処理ユニットベースシステムと、
前記ビジネスソフトウェアアプリケーションのユーザインターフェースと関連付けられた１つ又はそれ以上のテーマと、
を備え、
前記各テーマが、前記ビジネスソフトウェアアプリケーションを使用してユーザによって選択された前記ビジネスソフトウェアアプリケーションの特定のユーザインターフェースを生成する、
ことを特徴とする処理ユニットベースシステム。
【請求項３９】
前記１つ又はそれ以上のテーマが、前記ユーザインターフェースの移動部分を有する対話型テーマを更に含む、
ことを特徴とする請求項３８に記載のシステム。
【請求項４０】
前記対話型テーマの移動部分が、動いているボート、落ちてゆくスノーフレーク、及び動いているエーリアンの１つを更に含む、
ことを特徴とする請求項３９に記載のシステム。
【請求項４１】
前記対話型テーマは、前記ユーザインターフェースをビューしている間に前記ユーザによってプレー可能なゲームを更に含む、
ことを特徴とする請求項３９に記載のシステム。
【請求項４２】
前記対話型テーマは、アイドル期間中に移動コンテンツを表示するスクリーンセーバを更に含む、
ことを特徴とする請求項３９に記載のシステム。
【請求項４３】
前記処理ユニットベースシステムが、顧客関係管理ソフトウェアアプリケーションを有する顧客関係管理システムを更に備える、
ことを特徴とする請求項３８に記載のシステム。
【請求項４４】
ビジネスソフトウェアアプリケーションのユーザインターフェースを生成するための方法であって、
ビジネスソフトウェアアプリケーションの特定のユーザインターフェースを生成するテーマを選択する段階と、
前記ビジネスソフトウェアアプリケーションのユーザインターフェースを生成する段階と、
を含む方法。
【請求項４５】
前記１つ又はそれ以上のテーマが、前記ユーザインターフェースの移動部分を有する対話型テーマを更に含む、
ことを特徴とする請求項４４に記載の方法。
【請求項４６】
前記対話型テーマの移動部分が、動いているボート、落ちてゆくスノーフレーク、及び動いているエーリアンの１つを更に含む、
ことを特徴とする請求項４５に記載の方法。
【請求項４７】
前記対話型テーマは、前記ユーザインターフェースをビューしている間に前記ユーザによってプレー可能なゲームを更に含む、
ことを特徴とする請求項４５に記載の方法。
【請求項４８】
前記対話型テーマは、アイドル期間中に移動コンテンツを表示するスクリーンセーバを更に含む、
ことを特徴とする請求項４５に記載の方法。
【請求項４９】
前記処理ユニットベースシステムが、顧客関係管理ソフトウェアアプリケーションを有する顧客関係管理システムを更に備える、
ことを特徴とする請求項４４に記載の方法。
【請求項５０】
ソフトウェアを配布するためのシステムであって、
ソースコードベースレポジトリと、
ビルドプロセスを有するコンピュータベースシステムと、
を備え、
前記ビルドプロセスが、前記ソースコードベースレポジトリのタグを検出し、前記タグは、前記ソースコードベースの特定の部分がソフトウェアアプリケーションの１つ又はそれ以上のバージョンに含まれているかどうかを示し、前記ソフトウェアアプリケーションの構築されるバージョンが前記検出されたタグに基づいて前記ソースコードベースの特定の部分を含むように前記ソフトウェアアプリケーションのバージョンを構築し、これによって前記ソフトウェアアプリケーションの各バージョンに含まれる前記ソースコードベースの部分が前記タグによって制御されるようにする、
ことを特徴とするシステム。
【請求項５１】
前記ビルドプロセスが、前記検出されたタグに基づいて前記ソースコードベースの特定の部分を取り除く、
ことを特徴とする請求項５０に記載のシステム。
【請求項５２】
前記ビルドプロセスは、前記ソースコードベースの特定の部分が前記ソフトウェアアプリケーションのバージョンから取り除かれたときに、前記ソフトウェアアプリケーションのバージョンから取り除かれたソースコードベースの特定の部分のラインに対応する幾つかのブランクラインを前記ソフトウェアアプリケーションのバージョンに挿入し、前記ソフトウェアアプリケーションのバージョンの前記ラインナンバーを維持する、
ことを特徴とする請求項５１に記載のシステム。
【請求項５３】
前記ソースコードベースが、ソースコードの一部分を更に含み、前記タグは、ソースコードの一部分の特定の部分がソフトウェアアプリケーションの１つ又はそれ以上のバージョンに含まれるかどうかを示すコードレベルタグを更に含む、
ことを特徴とする請求項５０に記載のシステム。
【請求項５４】
前記ソースコードベースが、ソースコードディレクトリを更に含み、前記タグは、特定のソースコードディレクトリがソフトウェアアプリケーションの１つ又はそれ以上のバージョンに含まれるかどうかを示すディレクトリレベルタグを更に含む、
ことを特徴とする請求項５０に記載のシステム。
【請求項５５】
前記ソースコードベースは、ソースコードファイルを更に含み、前記タグは、特定のソースコードファイルがソフトウェアアプリケーションの１つ又はそれ以上のバージョンに含まれるかどうかを示すファイルレベルタグを更に含む、
ことを特徴とする請求項５０に記載のシステム。
【請求項５６】
前記バージョンは、オープンソースバージョン、エンタープライズバージョン、及びプロフェッショナルバージョンの１つを更に含む、
ことを特徴とする請求項５０に記載のシステム。
【請求項５７】
前記コンピュータベースのシステムは、データの複数の一部分を含むデータベース、前記データベース内のデータの一部分に特定の機能を実行する１つ又はそれ以上の機能モジュール、及び前記１つ又はそれ以上の機能モジュールに結合され前記データベースと前記機能モジュールとの間をインターフェース接続するクラスオブジェクトを有する顧客関係管理システムを更に備える、
ことを特徴とする請求項５０に記載のシステム。
【請求項５８】
ソフトウェアを配布するためのシステムであって、
ソースコードベースレポジトリと、
ビルドプロセスを有するコンピュータベースシステムと、
を備え、
前記ビルドプロセスが、前記ソースコードベースレポジトリのタグを検出し、前記タグは、前記ソースコードベースの特定の部分がソフトウェアアプリケーションの１つ又はそれ以上のバージョンに含まれているかどうかを示し、前記ソフトウェアアプリケーションの構築されるバージョンが前記検出されたタグに基づいて前記ソースコードベースの特定の部分を含まないように前記ソフトウェアアプリケーションのバージョンを構築し、これによって前記ソフトウェアアプリケーションの各バージョンに含まれる前記ソースコードベースの部分が前記タグによって制御されるようにする、
ことを特徴とするシステム。
【請求項５９】
１つ又はそれ以上のタグを含むソースコードベースを有するソフトウェアを配布するための方法であって、
前記ソースコードレベルの特定の部分がソフトウェアアプリケーションの１つ又はそれ以上のバージョンに含まれるかどうかを示すタグを前記ソースコードベースにおいて検出する段階と、
前記ソフトウェアアプリケーションの構築されるバージョンが前記検出されたタグに基づいて前記ソースコードベースの特定の部分を含むように前記ソフトウェアアプリケーションのバージョンを構築し、これによって、前記ソフトウェアアプリケーションの各バージョンに含まれる前記ソースコードベースの部分が前記タグによって制御されるようにする段階と、
を含む方法。
【請求項６０】
前記ソフトウェアアプリケーションのバージョンを構築する段階が、前記検出されたタグに基づいて前記ソースコードベースの特定の部分を取り除く段階を更に含む、
ことを特徴とする請求項５９に記載の方法。
【請求項６１】
前記ソフトウェアアプリケーションのバージョンを構築する段階が、前記ソースコードベースの特定の部分が前記ソフトウェアアプリケーションのバージョンから取り除かれたときに、前記ソフトウェアアプリケーションのバージョンから取り除かれた前記ソースコードベースの特定の部分のラインに対応する幾つかのブランクラインを前記ソフトウェアアプリケーションのバージョンに挿入し、前記ソフトウェアアプリケーションのバージョンのラインナンバーを維持する段階を含む、
ことを特徴とする請求項５９に記載の方法。
【請求項６２】
前記ソースコードベースが、ソースコードの一部分を更に含み、前記タグは、ソースコードの一部分の特定の部分がソフトウェアアプリケーションの１つ又はそれ以上のバージョンに含まれるかどうかを示すコードレベルタグを更に含む、
ことを特徴とする請求項５９に記載の方法。
【請求項６３】
前記ソースコードベースが、ソースコードディレクトリを更に含み、前記タグは、特定のソースコードディレクトリがソフトウェアアプリケーションの１つ又はそれ以上のバージョンに含まれるかどうかを示すディレクトリレベルタグを更に含む、
ことを特徴とする請求項５９に記載の方法。
【請求項６４】
前記ソースコードベースは、ソースコードファイルを更に含み、前記タグは、特定のソースコードファイルがソフトウェアアプリケーションの１つ又はそれ以上のバージョンに含まれるかどうかを示すファイルレベルタグを更に含む、
ことを特徴とする請求項５９に記載の方法。
【請求項６５】
前記バージョンは、オープンソースバージョン、エンタープライズバージョン、及びプロフェッショナルバージョンの１つを更に含む、
ことを特徴とする請求項５９に記載の方法。
【請求項６６】
１つ又はそれ以上のタグを含むソースコードベースを有するソフトウェアを配布するための方法であって、
前記ソースコードレベルの特定の部分がソフトウェアアプリケーションの１つ又はそれ以上のバージョンに含まれるかどうかを示すタグを前記ソースコードベースにおいて検出する段階と、
前記ソフトウェアアプリケーションの構築されるバージョンが前記検出されたタグに基づいて前記ソースコードベースの特定の部分を含まないように前記ソフトウェアアプリケーションのバージョンを構築し、これによって、前記ソフトウェアアプリケーションの各バージョンに含まれる前記ソースコードベースの部分が前記タグによって制御されるようにする段階と、
を含む方法。
【発明の詳細な説明】
【技術分野】
【０００１】
（関連出願／優先権請求）
本出願は、２００５年８月１２日に出願された名称「Ｃｕｓｔｏｍｅｒ  Ｒｅｌａｔｉｏｎｓｈｉｐ  Ｍａｎａｇｅｍｅｎｔ  Ｓｙｓｔｅｍ  ａｎｄ  Ｍｅｔｈｏｄ（顧客関係管理システム及び方法）」の米国暫定出願シリアル番号６０／７０７，８２０に対し米国特許法第１１９（ｅ）に基づく優先権を主張し、その全体は引用により本明細書に組み込まれる。
（技術分野）
本発明は、一般に、顧客関係管理システム及び方法に関し、詳細には、顧客関係管理を可能にするためのソフトウェアベースのシステム及び方法に関する。
【背景技術】
【０００２】
顧客関係管理（ＣＲＭ）システム及びソリューションは公知である。例えば、既知の典型的なＣＲＭシステムには、Ｍｉｃｒｏｓｏｆｔ（登録商標）ＣＲＭ、ｅ−Ｓｙｎｅｒｇｙ、ＳａｌｅｓＦｏｒｃｅ．ｃｏｍにより提供されるＣＲＭ製品、Ｎｅｔｓｕｉｔｅ  ＣＲＭ、及びＳＡＰ  Ｂｕｓｉｎｅｓｓ  Ｏｎｅ  ＣＲＭが挙げられる。しかしながら、従来のＣＲＭシステムは、融通性の欠如、高コスト、及び従来の製品に組み込まれているクローズソース構造を含む重大な制限がある。これらの制限は、従来のＣＲＭ実装に対して７０％を越える不成功率をもたらしてきた。従って、一般的なＣＲＭシステムのこれらの制限を克服する顧客関係管理システム及び方法を提供することが望ましく、本発明はこの目的を達成することを対象とする。
【発明の開示】
【０００３】
顧客関係管理システムは、テンプレート及びテーマの１つ又はそれ以上の組合せを有し、該テンプレート及びテーマは、顧客関係管理システムのユーザインターフェーススキンであり、テンプレートはデータのレイアウトを調整し、テーマは顧客関係管理システムの表示のユーザインターフェースを調整する。テンプレート／テーマの一部は、幾つかの特徴がある対話型ユーザインターフェースとすることができる。
【０００４】
本システムはまた、複数の製品に対して１つのコードベースを使用するためにソースコードをタグ付けするためのメカニズムを有することができる。タグ／コメントは、アプリケーションのファイル、コード、又はディレクトリに付加される。ディレクトリレベルタグを用いて、特定のビルドからディレクトリを取り除くか、或いはディレクトリを特定のビルドに単に含めることができる。例えば、モジュールがプロフェッショナル及びエンタープライズビルドにだけあり、オープンソース製品にはない場合、ＣＲＭシステムのプロフェッショナル又はエンタープライズビルドを行っていなければ、ビルドプロセスに全フォルダを取り除くように通知するファイルをそのフォルダに入れることができる。ファイルレベルタグを用いて、特定のビルドから全ファイルを取り除くか、或いは全ファイルを特定のビルドに含めることができる。コードレベルタグは、ラインナンバーが一致するか又は特定のビルドにこれらを単に含めるように、コード固有のビルドのセクションを取り除き、これらをブランクラインと置換することができる。本発明によれば、タグは、コードの構築されたバージョンから取り除かれる。
【発明を実施するための最良の形態】
【０００５】
本発明は、オープンソース顧客関係管理（ＣＲＭ）ソフトウェアシステムに特に適用可能であり、この関連において本発明を説明することにする。しかしながら、本明細書で開示されるこれらのモジュール及び本発明の態様は他の非オープンソースＣＲＭシステム、並びに他のビジネスソフトウェアアプリケーションシステム、更に他のデータベースソフトウェアシステムに一様に適用できるので、本発明によるアルゴリズム、データ構造、プロセス、及びモジュールが極めて有用であることは理解されるであろう。例証の目的のために、説明されるシステムは、ＣＲＭ及びグループウェアシステムにおける実装であるが、本発明の方法は、複数のシステムにわたって適用される。実施例において、ＣＲＭ及びグループウェアシステムは、ＳｕｇａｒＣＲＭ  Ｉｎｃ．のＳｕｇａｒ  Ｐｒｏｆｅｓｓｉｏｎａｌ  ３．５である。これは、高速応答時間を要求するデータベース主導のアプリケーションである。
【０００６】
このシステムは、ＳｕｇａｒＢｅａｎとして知られるベースクラス、及びデータ検索ＡＰＩを使用して好ましい実施形態で実装することができる。ベースクラスは、リストクエリーを構築し、セーブし、更に個々の項目を検索するための方法を有する。データの各特定のタイプは、このベースクラスのサブクラスを作成する。本発明の好ましい実施形態では、ベースクラスはＳｕｇａｒＢｅａｎと呼ばれる。各モジュールに対してＳｕｇａｒＢｅａｎの少なくとも１つのサブクラスがある。ＳｕｇａｒＢｅａｎは、データベーステーブルの作成、データベーステーブルのクリア、レコードのロード、リストのロード、レコードのセーブ、及び関係の維持のために使用される。ＳｕｇａｒＢｅａｎサブクラスの１つの実施例がコンタクト（Ｃｏｎｔａｃｔ）である。コンタクトは、ＳｕｇａｒＢｅａｎの幾つかのメンバー変数を埋める単純なオブジェクトであり、その論理の大部分がＳｕｇａｒＢｅａｎを活用する。例えばセキュリティは、コンタクトに対して自動的に作成される。ＳｕｇａｒＢｅａｎサブクラスの別の実施例は、セキュリティに関連し、行レベルセキュリティを適用させる必要のないモジュールであるユーザ（Ｕｓｅｒ）である。この理由で、これらのモジュールは、セキュリティを検証するためのライトジョイン（ｒｉｇｈｔ  ｊｏｉｎ）の追加をスキップするよう設定されたバイパスフラグを有する。ＳｕｇａｒＣＲＭ  Ｓｕｇａｒ  Ｐｒｏｆｅｓｓｉｏｎａｌシステムは、多くの同時ユーザを持つウェブベースのシステムである。このプログラムは、ユーザへのクリティカルデータを含むので、ユーザがシステム及びそのデータへのクイックアクセスができることは必須である。ＳＦＡアプリケーションにおける最も頻度が多いアクティビティは、既存のデータを見ることである。
【０００７】
図１は、本発明による顧客関係管理（ＣＲＭ）システム１００を示す図である。好ましい実施形態では、本発明によるシステム１００は、好ましくはオープンソースコードを使用できるソフトウェアシステムとして実装される。従って、好ましい実施形態では、図１に示される要素は、サーバーコンピュータなどのコンピュータシステムのプロセッサによって実行することができるコンピュータコードの複数のラインとして実装され、このコンピュータコードの種々のラインは、コンピュータシステム及びデータベース１１０とのシステムインターフェースに関連したメモリ内に記憶される。このシステムは、一般的なコンピューティングデバイス上で実行されるブラウザアプリケーション（ブラウザクライアントセッション）などの１つ又はそれ以上のクライアント１０２を有することができ、インターネットなどのコンピュータネットワーク１０３を通じてシステムにアクセスする。クライアント１０２の対話は、１つ又はそれ以上のコントローラのセット１０４を経由する。コントローラは、システムへのエントリーポイントであり、セッショントラッキング、セッションセキュリティ及びエンドユーザ認証などの事柄を処理する。コントローラはまた、コンテンツに対するスクリーン又はラッパーを準備し、ユーザがアクセスしようとするアプリケーションのモジュールがいずれであるかを判定し、要求されたモジュールに該要求を処理させる作業を処理する。従って、このシステムは、アプリケーション機能の構成要素であり且つ一定の機能を提供する１つ又はそれ以上のモジュール１０６を有する。ＣＲＭシステムのモジュール１０６は、一例として、ポータルモジュール、カレンダーモジュール、アクティビティモジュール、コンタクトモジュール、アカウントモジュール、リードモジュール、オポチュニティモジュール、クォートモジュール、製品モジュール、ケースモジュール、バグトラッカーモジュール、文書モジュール、電子メールモジュール、キャンペーンモジュール、プロジェクトモジュール、ＲＳＳモジュール、予想モジュール、レポートモジュール、及びダッシュボードモジュールを含むことができる。これらのモジュールの各々は、種々の機能をシステムに提供し、例えば、カレンダーモジュールは、システムに対してインスタンス化されるカレンダー機能をＣＲＭシステムに提供する。このシステムはまた、システムの一般的な管理用機能を扱うアドミニストレーションモジュールを含むことができる。各モジュールは、ＳｕｇａｒＢｅａｎベースオブジェクト１０８のサブクラスを含み、各モジュールは、表示に必要とされるデータをデータベース１１０から検索するためにＳｕｇａｒＢｅａｎを参照する。
【０００８】
図２は、図１のシステムのユーザインターフェース１２０の実施例を示す図である。ユーザインターフェースは、ケース（Ｃａｓｅ）、オポチュニティ（Ｏｐｐｏｔｕｎｉｔｙ）、アポイントメント（Ａｐｐｏｉｎｔｍｅｎｔ）、リード（Ｌｅａｄ）、タスク（Ｔａｓｋ）、カレンダー（Ｃａｌｅｎｄｅｒ）、チームノーティス（Ｔｅａｍ  Ｎｏｔｉｃｅ）、及びパイプライン（Ｐｉｐｅｌｉｎｅ）の一般的概要を提供するホームタブ１２１（図２で選択される）を含むことができる。ホームタブはまた、ほとんどの種類のデータを入力するためのショートカット、及び新しいコンタクトに対するクイックフォームを含む。ホームタブはまた、どの顧客タスク及びアクティビティに現在注目する必要があるかに関するクイック概要を提供する。ポータルモジュール（マイポータルタブ１２２を使用して選択される）は、電子メール、フォーラム、又はいずれかの他のウェブベースアプリケーションを含むことができ、システムを複数のアプリケーションに対する単一ユーザインターフェースにすることが可能な、選択されるいずれかのウェブサイトにリンクできる一連のショートカットを含む。カレンダーモジュールは、カレンダータブ１２４により選択することができ、これによってユーザは、ミーティング、タスク、及び呼出しなどのスケジュールされたアクティビティ（日毎、週毎、月毎、又は年毎）をビューすることが可能となる。また、このシステムによって、ユーザは、自分のカレンダーを同僚と共有することができ、これは毎日のアクティビティを調整するための強力なツールである。アクティビティモジュールは、アクティビティタブ１２６を使用して選択され、これによってユーザは、スケジュールされたアクティビティを作成又は更新するか、或いは既存のアクティビティをサーチすることが可能となる。アカウント、コンタクト、リード、オポチュニティ、又はケースのコンテキスト内のアクティビティを管理することで、本システムにより、ジョブを完了させるために追跡する必要のある無数の呼出し、ミーティング、ノート、電子メール、及びタスクをユーザが管理することが可能になる。タスクは、期日までに終了するよう管理する必要のあるあらゆる動作を追跡することを目的とし、ノートは、ユーザがノート情報を取り込むと同時にファイル添付をアップロードすることを可能にし、呼出しは、ユーザが、呼出しのようなリード及び顧客、ミーティングに対する電話呼出しを追跡することを可能にするが、同様にユーザが、ミーティングのロケーションを追跡することを可能にし、電子メールは、ユーザが、送信又は受信された電子メールメッセージをアーカイブすることを可能にする。
【０００９】
コンタクトモジュールは、コンタクトタブ１２８によってアクセスされ、これによってユーザは、ページが作成されたコンタクトリストをビューし、或いはコンタクトをサーチすることができるようになる。ユーザは、特定のコンタクトをクリックして、詳細なコンタクトレコードにズームインすることができ、ユーザは、特定のコンタクトレコードから関係するアカウント又はリード、オポチュニティ、ケース、或いは直接レポート（関係のコンタクト）にリンクすることができる。本システムにおいて、コンタクトは組織がビジネスを行う人物である。アカウントと同様に、システムによってユーザは、タイトル、電子メールアドレス、及び他のデータなどの多様なコンタクト情報を追跡することが可能となる。コンタクトは通常、アカウントにリンクされているが、これは必ずしも必要ではない。アカウントモジュールは、アカウントタブ１３０を使用してアクセスすることができ、ユーザは、ページが作成されたアカウントリストをビューし、或いはアカウントをサーチすることができる。ユーザは、特定のアカウントをクリックして詳細なアカウントレコードにズームインでき、更にユーザは、特定のアカウントレコードから関連のコンタクト、アクティビティ、リード、オポチュニティ、ケース、又はメンバー組織にリンクすることができる。アカウントは、組織がビジネスを行う会社であり、システムによってユーザは、ウェブサイト、メインアドレス、従業員の数、及び他のデータを含むアカウントについての多様な情報を追跡することが可能になる。企業の子会社は、アカウント間の関係を示すために親企業にリンクさせることができる。
【００１０】
リードモジュールは、リードタブ１３２によってアクセスされ、ユーザが、リードのページ作成されたリストをビューし、或いは特定のリードをサーチすることができるようにする。ユーザは、個々のリードをクリックしてリード情報レコードにズームインでき、ユーザは、その詳細なリードレコードから全ての関連のアクティビティにリンクし、更にリードについてのアクティビティ履歴を見ることができる。リードは、組織が将来ビジネスを行う可能性のある人又は会社である。潜在的顧客との対話の最初のポイントを追跡するように設計されると、リードは通常、マーケティング部門と販売部門の間でのハンドオフである。コンタクト又はアカウントと混同されないために、リードは多くの場合不完全又は不正確な情報を含む可能性があるのに対して、Ｓｕｇａｒ  Ｐｒｏｆｅｓｓｉｏｎａｌに記憶されているコンタクト及びアカウントは、正確なデータを必要とする多くのビジネスプロセスの基本となるものである。リードは通常、ウェブサイト、トレードショーリスト、又は他の方法から自動的にＳｕｇａｒ  Ｐｒｏｆｅｓｓｉｏｎａｌシステムに送り込まれる。しかしながら、ユーザはまた、全リードをＳｕｇａｒ  Ｐｒｏｆｅｓｓｉｏｎａｌにマニュアルで直接入力することができる。
【００１１】
オポチュニティモジュールは、オポチュニティタブ１３４によってアクセスされ、ユーザがオポチュニティのページ作成されたリストをビューし、又は特定のオポチュニティを検索サーチすることができるようにする。ユーザは、個々のオポチュニティをクリックしてオポチュニティ情報レコードにズームインでき、ユーザは、その詳細なオポチュニティレコードから全ての関連するアクティビティにリンクし、オポチュニティについてのアクティビティ履歴を見て、関連するリード及びコンタクトにリンクすることができる。オポチュニティは、潜在的顧客に対する商品又はサービスの販売のプロセスを追跡する。販売プロセスがリードで始まると、リードは、コンタクト及び場合によってはアカウントに変換する必要がある。オポチュニティは、販売段階、クローズの可能性、取引額、及び他の情報などの属性を追跡することによって、ユーザが販売プロセスを管理するのを助ける。クォートモジュールは、クォートタブ１３６によってアクセスされ、ユーザが顧客クォートのページ作成されたリストをビューするか、或いは特定のクォートをサーチすることを可能にすることができる。ユーザは、個々のクォートをクリックして、詳細なクォート情報にズームインすることができる。クォートは、作成できる製品のカタログから製品を参照し価格設定することによって形成される。クォートのプレゼンテーションクオリティ・ポータブルドキュメントフォーマット（ＰＤＦ）表示を作成し、クライアントにファックス又は電子メールすることができる。クォートは、アカウント、コンタクト、又はオポチュニティに関連付けることができる。
【００１２】
製品モジュールは、製品タブ１３８によってアクセスされ、ユーザが製品のページ作成されたリストをビューし、又は特定の製品をサーチできるようにする。ユーザは、個々の製品をクリックし、詳細な製品情報にズームインすることができる。製品は、顧客クォートをアセンブルするときに使用される。ケースモジュールは、ケースタブ１４０を使用してアクセスすることができ、ユーザがケースのページ作成されたリストをビューするか、或いは特定のケースをサーチできるようにする。ユーザは、個々のケースをクリックし、ケース情報レコードにズームインすることができ、ユーザは、その詳細なケースレコードから全ての関連のアクティビティにリンクし、ケースについてのアクティビティ履歴を見て、関連のコンタクトにリンクすることができる。ケースは、販売部門と顧客サポート部門との間のハンドオフであり、顧客サポート代理人が、状態及びプライオリティ、割り当てられたユーザ、並びに全ての関連のオープン及び終了したアクティビティの全形跡など、各ケースに対する情報を追跡することによって完了までのサポート問題又は照会を管理するのを助ける。バグトラッカーモジュールは、バグトラッカータブ１４２を使用してアクセスされ、ユーザがレポートされたソフトウェアバグのページ作成されたリストをビュー可能にすることができる。ユーザは、個々のバグをクリックして詳細なバグレポートにズームインでき、その詳細なバグレポートからユーザは、全ての関連のアクティビティにリンクし、バグのアクティビティ履歴を見て、更に関連のコンタクト、アカウント、及びケースにリンクすることができる。トラッキングソフトウェアバグは、顧客サポート部門の重要な機能である。バグトラッカーモジュールは、顧客サポート代理人が、状態及びプライオリティ、決定事項、割り当てられたユーザ、包含されるソフトウェアのリリース、そのタイプ（欠陥又は特徴）並びに全ての関連のオープン及び終了アクティビティの全形跡など、各バグについての情報を追跡することによって終了までのソフトウェア関連のサポート問題又は照会を管理するのを助ける。
【００１３】
文書モジュールは、ユーザがダウンロード可能な文書のリストをユーザに示すことができる。ユーザはまた、文書をアップロードし、公開日及び有効期限を割り当て、更にどのユーザが文書にアクセスできるかを指定することができる。電子メールモジュールによってユーザは、電子メールを書いて送信し、更に電子メールベースのマーケティングキャンペーンで使用できる電子メールテンプレートを作成することが可能となる。ユーザはまた、下書きをセーブし、電子メールをアーカイブすることができる。キャンペーンモジュールは、ユーザがマーケティングキャンペーンを実施し且つ追跡するのを助け、ここでキャンペーンは、テレマーケティング、メール、又は電子メールベースとすることができる。各キャンペーンに対して、ユーザは、コンタクト又はリードから、或いはファイルソースの外から予想リストを作成することができる。プロジェクトモジュールは、ユーザが特定のプロジェクトに関するタスクを管理するのを助ける。タスクは、種々のユーザに割り当てられ、推定される労力の時間が割り当てられ、タスクが進行し終了すると、ユーザは、各タスクについての情報を更新することができる。ＲＳＳモジュールは、ユーザがお気に入りのＲＤＦサイトサマリー（ＲＳＳ）フィードによって提供される最新のヘッドラインをビューすることを可能にする。これらのフィードは、この方式でコンテンツを公開するウェブサイトによって配信又は同時公開されるニュース又は他のウェブコンテンツを提供する。このシステムは、供給される利用可能な数百のＲＳＳフィードを有し、その他を容易に追加することができる。
【００１４】
予想モジュールは、ユーザに自分のコミットされた予想履歴及び現在のオポチュニティを示す。マネージャーにおいて、ユーザは、チームのロールアップ予想をビューすることができる。レポートモジュールは、セーブされたが未公開のカスタムレポートのリスト、並びに公開済みレポートのリストをユーザに示す。セーブされたレポートは、ビュー、削除、又は公開され、公開済みのレポートは、ビュー、削除、又は非公開にすることができる。レポート名をクリックすると、そのレポートに付いてのレポート基準の詳細定義（表示フィールド、及びフィルタ設定）にズームし、ユーザが基準を変更し、レポートクエリーを再提示することが可能になる。最後に、ダッシュボードモジュールは、販売段階毎のユーザのオポチュニティパイプライン、リードソース毎結果毎のオポチュニティ、月毎結果毎のパイプライン、及びリードソース毎のオポチュニティのグラフィカルダッシュボードを表示する。
【００１５】
図１を参照すると、本システムはまた、システムのデータを含むデータベース１１０と、データベース１１０内のデータへのアクセスを制御するためのセキュリティ方法を実施するセキュリティモジュール１１２とを含む。システムはまた、データベース１１０とＳｕｇａｒＢｅａｎオブジェクト１０８の間のインターフェースによる目的で、データベース１１０とＳｕｇａｒＢｅａｎオブジェクト１０８間に結合されたデータベース抽象化レイヤ１１４を含むことができる。Ｓｕｇａｒ  Ｂｅａｎオブジェクト１０８は、データベースから情報を検索しこれを利用可能にするのに必要なベース論理を提供し、各モジュールは、モジュール固有の詳細を提供するためにＳｕｇａｒＢｅａｎのサブクラスを作成する。データベースからデータを検索するプロセスの間、ＳｕｇａｒＢｅａｎ１０８は、データを検索するＳＱＬに行レベルセキュリティ情報を読み込む呼出しを行う。
【００１６】
データが、ＳｕｇａｒＢｅａｎオブジェクト１０８から検索されると、モジュールは、テンプレートメカニズム１１８及びテーマ１１６を使用して、ユーザ用に要求された表示を生成する。テンプレートメカニズムは、データベース１１０からのデータを特定の形式に再フォーマットし、テーマは、ユーザの好みに応じてユーザインターフェースを調整する。例えば、ユーザが、指定されたコンタクトに対するコンタクトモジュールの詳細ビューのＨＴＭＬ表示を要求する場合には発生フローが存在する。ユーザは、コントローラ指定インデックス．ｐｈｐをヒットする。これは、メインアプリケーションに対する論理の大部分を処理する。インデックスコントローラは、現在のユーザをロードし、認証及びセッション情報を検証し、ユーザの言語をロードし、更にＵＩシェルの幾つかを生成する。次いで、インデックスコントローラは、コンタクトモジュールを呼び出し、指定されたコンタクトの詳細ビューを要求する。コンタクトモジュールは、要求されたコンタクトに対してＳｕｇａｒＢｅａｎを検索する。ＳｕｇａｒＢｅａｎは、このポイントで行レベルセキュリティを検証する。レコードが正常に検索されなかった場合、プロセスが異常終了し、ユーザは、そのレコードについてのデータをビューすることができない。検索が成功した場合、コンタクトモジュールは、Ｘテンプレートメカニズム及び現在のユーザのテーマに対するコードを使用し、表示のためのＵＩを作成する。結果として得られたＵＩは、要求したクライアントに戻される。
【００１７】
図３は、本発明によるクエリーカウンタを備えた顧客関係管理システム１００を示す図である。図のように、クエリーカウンタモジュール１５０は、コントローラ１０４及びデータベース抽象化レイヤ１１４に結合されている。クエリーカウンタモジュールは、サーバーコンピュータ上に常駐し、サーバーコンピュータのプロセッサによって実行されるコンピュータコードの複数のラインを有するソフトウェアコードの一部として実装することができるのが好ましく、開発中のアプリケーションの各ページのデータベースクエリーの数、及び性能問題を実証及び診断しようとする生産システム上で使用可能にされる時点を決定する。より詳細には、モジュールは、画面上の各ページに対して、画面の１つのセクション当たり及び画面全体に対するクエリーカウントを決定する。モジュールはまた、ポピュレートするためにクエリーが実行された画面の部分の隣にクエリーの全てを示す機能をユーザに提供し、これにより、開発者がクエリーのソースを迅速に分離することが可能になり、更に、開発者に開発中の変更を判断するためのクイック数値を与える。
【００１８】
図４は、本発明によるモジュールローダモジュールを組み入れた、本発明によるアドミニストレーションモジュールのユーザインターフェース１６０の実施例である。このアドミニストレーションモジュールによって、システムのアドミニストレータは、システムの構成を含む種々の管理機能を実行することができる。アドミニストレータモジュールは、モジュールローダタブ１６２によって選択することができるモジュールローダモジュールを含むことができる。ローダモジュールは、アプリケーションからの構成要素の追加及び除去の簡単なエンドユーザ管理を可能にする。システム上で実行されるアプリケーションから追加／除去することができるこれらの構成要素は、言語パック、アップグレード、新しいモジュール、及びテーマを含むことができる。モジュールは基本的に、必要とされるＳｕｇａｒコードベースに対しあらゆる変更を加えるのに使用することができる。図のように、管理ユーザインターフェースには、新しいモジュールをアップロードするための画面がある。モジュールがアップロードされると、モジュール及びこれについての詳細がインストールに利用可能なものとしてリストされる。インストールをクリックした場合、モジュールがインストールされ、インストールされたモジュールリストに移され、アンインストールに利用できるようになる。モジュールは、ファイル管理、メタデータ変更、ＳＱＬの全てを内部的に処理し、任意のＰＨＰコードの実行が可能になる。
【００１９】
本発明によれば、モジュールローディングは、マニフェストファイル１７０を使用して実装することができ、その実施例が図５Ａ及び５Ｂに示される。マニフェストファイルフォーマットは、モジュール、パッチ、テーマ、及び言語パックをＳｕｇａｒサーバー／システムにロード可能にするのに用いられる。図５Ａ及び５Ｂに示される実施例において、固有のＳｕｇａｒローダブルモジュールを作成するための実施例である「Ｓｏｎｇ」モジュールのｚｉｐファイルが提供される。マニフェストファイルフォーマットは、以下でより詳細に説明されるモジュールローダ並びにアップグレードウィザードに使用される。
【００２０】
マニフェストファイルフォーマットは、実施例としてサンプルモジュール「Ｓｏｎｇ」に示されており、どのようにファイルをフォーマットすべきか及びどのようにローディングメカニズム及びマニフェストファイルが働くかを調べる。マニフェストファイルは、このモジュールをロードするために提示されなくてはならないＳｕｇａｒサーバーのバージョンを含む「Ａｃｃｅｐｔａｂｌｅ＿ｓｕｇａｒ＿ｖｅｒｓｉｏｎｓ」変数を含むことができる。バージョン従属チェックのフォーマットは、完全一致として、或いは正規表現比較として提供することができる。マニフェストファイルはまた、現在ではＯｐｅｎ  Ｓｏｕｒｃｅ、Ｐｒｏｆｅｓｓｉｏｎａｌ、及びＥｎｔｅｒｐｒｉｓｅ  Ｆｌａｖｏｒｓを含む、Ｓｕｇａｒサーバーのフレーバーを指定する「Ａｃｃｅｐｔａｂｌｅ＿ｓｕｇａｒ＿ｆｌａｖｏｒｓ」変数を含むことができる。特定のフレーバーの機能に関する要素又は従属性が存在する場合、このパラメータは、要求されるものを指定するために使用しなくてはならない。制約又は制限がない場合、変数は、サポートされるＳｕｇａｒフレーバーの全てを指定することができる。
【００２１】
マニフェストファイルはまた、モジュールに対するユーザ読取り可能な名前を含む「Ｎａｍｅ」変数を含むことができ、この名前は、モジュールをロードしインストールしたときにＳｕｇａｒアドミニストレーションインターフェースに表示される。マニフェストファイルはまた、Ｓｕｇａｒアドミニストレーションインターフェースに表示されるモジュールの説明を含む「Ｄｅｓｃｒｉｐｔｉｏｎ」変数、モジュールを作成した人又は会社の名前を含む「Ａｕｔｈｏｒ」変数、モジュールが公開又は最後に改訂された日付を含む「Ｐｕｂｌｉｓｈｅｄ  Ｄａｔｅ」変数、並びにモジュールのバージョンを含む「Ｖｅｒｓｉｏｎ」モジュールを含むことができる。マニフェストファイルはまた、ｚｉｐファイルに含まれるパッケージのタイプを含む「Ｔｙｐｅ」変数を含むことができる。現在では、モジュールローダは、「Ｍｏｄｕｌｅ」だけをサポートし、アップグレードウィザードが、言語パック、テーマ、パッチ、及びフルアップグレードのサポートを提供する。マニフェストファイルはまた、Ｓｕｇａｒローダを用いてこのモジュールのためのＳｕｇａｒアドミニストレーションインターフェースに表示する必要があるｚｉｐファイルでのアイコンファイルの相対パス及び名前を含む「Ｉｃｏｎ」変数を含むことができる。システムは、これが左ブランクである場合には、デフォルトアイコンを使用することになる。最後に、マニフェストファイルはまた、フォルダ及びファイルに対してＦｒｏｍ＆Ｔｏソース及び宛先を指定するファイルコピー命令のアレイである「Ｃｏｐｙ＿ｆｉｌｅｓ」変数を含むことができる。処理は、指定されたようにファイルを移動させるこのツリーをウォークスルーし、フォルダは再帰的にコピーされる。
【００２２】
本発明によるシステムはまた、タブ１６４から実施される新規のアップグレードプロセスを有し、図４に示されたアドミニストレータユーザインターフェースからアップグレードウィザードモジュールを起動する。アップグレードウィザードモジュールは、以下に説明されるような変更検出及びシステム検証を含むアップグレードプロセスを行うサーバー上で実行されるソフトウェアモジュールであるのが好ましい。
【００２３】
図６は、本発明によるアップグレードプロセス１８０を示すフローチャートである。本発明によるアップグレード／更新の間、前のバージョンのコードの変化をアップグレードバージョンと比較する変化検出が行われる。典型的なオープンソースプログラムでは、プログラムは、ユーザに現在のインストールに対するアップグレードを解凍させ、これによってユーザは、オープンソース製品に行うことのできるあらゆるカスタマイズを解放する可能性がある。従って、ステップ１８２では、アップグレードプロセスは、ファイルをステージングフォルダに入れることから開始する。次にステップ１８４で、アップグレードプロセスを始める前に、アップグレードファイルに幾つかのチェックを行うアップグレードスクリプトが呼び出される。ステップ１８６で、アップグレードスクリプトは、アップグレード中のシステムがアップグレードできる既知のシステムの１つであることを保証する。システムが既知であれば、１つのアップグレードパッケージが複数の前のバージョンをサポートすることができ、各バージョンは、わずかに異なる一連のアップグレードステップを有することができるので、ステップ１８８で、アップグレードスクリプトは、システム上で特定のインストールされたバージョンが必要とするアップグレードステップを決定する。これは、ユーザが順次各バージョンをステップスルーすることを要求するのに比べて、アップグレードプロセスを遙かに迅速で且つ簡単にする。
【００２４】
ここで、ステップ１９０において、アップグレードは、チェックが行われたときにインストールの準備ができている。ステップ１９２で、アップグレードプロセスは、比較する必要のあるアップグレードにおけるファイルが更にあるかどうかを判断する。このループは、アップグレードに含まれるファイル全てが比較され適切に処理されることを保証する。従って、インストールプロセス中、アップグレードシステムは、アップグレードされているシステム上のファイルの全てを調べる。ステップ１９４で、システムは、アップグレードのファイルに対して、好ましくはＭＤ５検査合計とすることができる検査合計を計算する。ＭＤ５検査合計は、ラインフィード、ソースコード制御システムタグ、及び／又はソースコードおけるホワイトスペースへの変更とは無関係とすることができる。ステップ１９６で、システムは、検査合計値が前のビルドからの既知の値の１つ（Ｕｎｉｘ又はＤｏｓラインフィードで）であるか、或いはシップドバージョンに一致するかどうかを判断する。合計が既知である場合、カスタマイズが置換中に失われることにはならないので、当該ファイルは安全に置換できると考えられ、よって本方法はステップ１９２に戻り、次のファイルの検査合計を比較する。検査合計が既知でない場合、ステップ１９８で、当該ファイルは、ユーザによってチェックされるファイルのリストに追加される。本方法が終了すると、当該リストの一部でないあらゆるファイルは自動的に置換される。次いで、本方法はステップ１９２に戻り、次のファイルの検査合計を比較する。アップグレードにおけるファイルの全てがチェックされると、本方法はステップ２００に進み、ここで検査合計の既知でないファイルのリストがユーザに提示され、これによってユーザは、アップグレード中に置換されるファイルをリストから選択することができるようになる。ステップ２０２で、オリジナルファイルのアップグレードのファイルへの置換が行われる。このステップでは、検査合計が既知であるファイル並びにリストからユーザによって選択されたファイルが置換される。次にステップ２０４で、別のスクリプトが実行され、アップグレードの何らかの更なる処理を行う。このようにして、アプリケーションのアップグレードは、ユーザによって行われるどのようなカスタマイズも失うことなく処理される。
【００２５】
図７は、図１に示されたシステムのオフラインクライアントを構成するためのユーザインターフェース２１０の実施例である。このユーザインターフェースによって、システムは、モバイルクライアントに対する接続を提供するようシステム及びサーバーを構成することが可能になる。これが実施されると、モバイルクライアントは、アプリケーションの小型バージョンとなり、指定されたユーザ名／パスワードが有する全てのデータを自動的に同期させ、アプリケーション変更も同様に同期させることになる。アプリケーションコードの変更は、ファイル単位ベースで同期され、クライアントとサーバーとの間で同じでないファイルだけが同期され、全てのコード同期は、サーバーからクライアントにのみ向かう一方向である。あらゆるメタデータ及びスキーム変更も同じ方向で同期される。サーバー上のコード、メタデータ、構成、スキームに対するあらゆる変更は、自動的にクライアントに同期される。これらの変更はまた差分として同期され、初回以降は全同期ではない。
【００２６】
アプリケーションデータ変更は双方向で同期され、クライアント及びサーバーでの変更はマージされる。この双方向同期は、他の機械からの最新の変更に対してクライアント及びサーバーの両方を更新し、競合解消を処理する。同期中、ユーザは、同期プロセスの進行をユーザに示すユーザインターフェースを取得する。
【００２７】
モバイルクライアント同期はまた、セキュリティ機能を含むことができる。詳細には、システムソフトウェアはＰＨＰで開発されており、ほとんどのＰＨＰプログラムがプレーンテキストであるので、コードは多少盗まれやすい。そうした行為を阻止するために、モバイルクライアントにソースをコピーする前に、ソースの符号化／暗号化バージョンを作成することができる。コード暗号化によるモバイル同期のプロセスは、サーバーから現在のコードを取得し、これをバイナリ実行可能形式に完全暗号化し、次いで、暗号化されたアプリケーションをモバイルクライアントに送り出すことができる。これは、モバイルクライアント機能、サーバー上での変更及び管理を容易にすることを可能にし（サーバー上では未だ暗号化されていないので）、モバイルクライアントユーザは、アプリケーションのソースコードを修正又は盗用するのが極めて困難になる。これは、グローバルスケールでシステムの完全性を向上させる。
【００２８】
本発明によるモバイルクライアントは、サーバー上で利用可能なモジュールの全数のサブセットをサポートすることができる。現在のところ、Ｈｏｍｅ（ホーム）、Ｃａｌｅｎｄｅｒ（カレンダー）、Ａｃｃｏｕｎｔｓ（アカウント）、Ｃｏｎｔａｃｔｓ（コンタクト）、Ｌｅａｄｓ（リード）、Ｏｐｐｏｒｔｕｎｉｔｉｅｓ（オポチュニティ）、Ｑｕｏｔｅｓ（クォート）、Ｐｒｏｄｕｃｔｓ（製品）、Ｆｏｒｅｃａｓｔｓ（予測）、及びＤｏｃｕｍｅｎｔｓ（文書）がサポートされる。Ｄｏｃｕｍｅｎｔを除き、ユーザがアクセスできる（すなわち見ることのできる）全てのデータが、そのクライアントに同期される。Ｄｏｃｕｍｅｎｔモジュールは常に、ユーザがアクセスする文書のリスト（すなわちタイトル）を同期するが、実際のファイルは同期しない。特定のファイルをクライアントに同期させるために、ユーザは、そのクライアントで最新に維持したい個々のファイルを選択する必要がある。これは、切断時に文書のリストにアクセスし、自分のクライアントに同期させたい各文書にフラグを設定することによって行われる。フラグが文書に対して設定されると、文書の新しいバージョン（実際のファイル）が将来の同期オペレーションで自動的にクライアントに同期される。これは、全文書の同期が場合によっては極めて長い時間を必要とする可能性があるときに行われる。モバイルクライアントは、電子メールを送信せず、監査オペレーションのログを記録することもない。これらのオペレーションは保留され、レコードが同期されたときにサーバーによって実行される。
【００２９】
オフライン／モバイルクライアントであるためには、モバイルクライアントを操作するシステムは、Ｓｕｇａｒ  Ｅｎｔｅｒｐｒｉｓｅソフトウェアをインストールする前に、ＷＡＭＰ／ＬＡＭＰスタックをインストールする必要がある。インストールされるときにはＳｕｇａｒ  Ｅｎｔｅｒｐｒｉｓｅソフトウェアの１つのバージョンだけが存在し、オフラインクライアントとして動作するよう構成するセットアップステップがある。これによりアプリケーションワークが確実になり、ユーザがオフラインクライアントを介してサーバーに接続又は切断された場合にこのアプリケーションワークを確認する。サーバー／システム側では、アドミニストレータは、モバイルクライアント用にサーバーに対する有効なログイン及びパスワードを作成しなくてはならない。ここで、モバイルクライアントのインスールを説明する。ステップは以下を含む。
１．Ｓｕｇａｒサーバーに対して通常行うように、ＷＡＭＰ／ＬＡＭＰスタックをインストールする。
２．ＳｕｇａｒのＰｒｏｆｅｓｓｉｏｎａｌ又はＥｎｔｅｒｐｒｉｓｅバージョンをインストールし、ユーザ及びデータベースを作成するが、シードデータは読み込まない。
３．アドミニストレータとしてクライアントシステムにログオンする。
４．Ａｄｍｉｎ画面に進み、「Ｒｅｐａｉｒ（修復）」セクションを選択し、次いで、「Ｃｏｎｖｅｒｔ  ｔｏ  Ｏｆｆｌｉｎｅ  Ｃｌｉｅｎｔ（オフラインクライアントに変換）」を選択する。図７の画面。
５．Ｓｕｇａｒ  Ｓｅｒｖｅｒｓ  ＵＲＬを指定する。例えば、ｈｔｔｐ：／／ｌｏｃａｌｈｏｓｔ／ｓｕｇａｒ３５。
６．サーバーに接続されたときに、このクライアントのユーザが通常使用するログインユーザ名及びパスワードを指定する（例えば、ｗｉｌｌ、ｗｉｌｌ）。
７．実行ボタンを押すと、確認画面が現れ、続けるにはＯＫボタンを押すか、或いは変換ステップを出るにはキャンセルを押す。変換は通常、１分又は２分を要する。
ａ．同期処理は最初に、Ｓｕｇａｒサーバー上で修正又はカスタマイズされた全てのアプリケーションファイルに対し検証及びコピーを行う。これは、サーバーに行われたあらゆる修正をクライアントシステムが自動的に受け取ることを保証する。
ｂ．同期プロセス中、ユーザは、進行に関する頻繁な更新、同期終了の割合、及びプロセスの現在のステップを受け取ることができる。
ｃ．アプリケーションファイルが同期されると、ユーザにアクセス可能なレコードが同期される。
８．画面が戻り、変換されたことをオフラインクライアントに通知しなくてはならない。
９．この時点で、クライアントインストール（未だアドミニストレータである）からログアウトし、クライアントを有するユーザとしてログインする。
１０．全てが適切に行われていることを保証し、ユーザに対する初期同期を行う。同期リンクは、ログアウトリンクの近くに配置されている。「ＳｔａｒｔＳｙｎｃ（同期開始）」を選択する。同期ポップアップが現れ、同期モードを選択することができる。「Ｐｒｏｍｐｔ（プロンプト）」を選択すると、同期オペレーションが始まる。同期処理が始まると、プログレスバーは、現在のプロセスがどの程度であるかを示す。初期同期は、サーバーからクライアントに移動させるデータがより多いので、通常の平常同期オペレーションよりも長くかかる。
１１．同期プロセスが終了すると、これをポップアップで表示する。
ａ．同期プロセス中においてエラーが生じた場合、エラーは、クライアントルートディレクトリの同期ログファイルにログが記録される。例えば、Ｃ：／Ｐｒｏｇｒａｍ  Ｆｉｌｅｓ／Ａｐａｃｈｅ／ｈｔｄｏｃｓ／ｓｕｇａｒ３５ｃ／ｓｙｎｃ．ｌｏｇである。
ｂ．ログは、「ｄｅｔａｉｌｓ（詳細）」リンクを選択することによって同期ポップアップを介してビューすることができる。
【００３０】
図１に示されるように、ＣＲＭシステムは、ソースコードベース（ソースコードレポジトリを形成し、レポジトリは、１つ又はそれ以上のディレクトリ及び１つ又はそれ以上のソースコードファイルを有する）から構成され、ビルド環境は、複数の製品に対する１つのコードベースを使用するために、ソースコードを処理するメカニズムを含むビルドプロセスを含むことができ、ここではアプリケーションのファイル、コード、又はディレクトリにコメントが追加される。ソースコードベースは、データベース１１０内に記憶することができる。タグは、製品に使用される種々の言語でのコメントである。（例えば、ｐｈｐの「／／」でのラインの終わり又はｈｔｍｌコメント）。このように、製品のバージョンでチェックされたデフォルトは、完全に機能的であり、ビルドを必要としない。これは開発を大幅に迅速化する。
【００３１】
図１に示されたシステムの一部であるビルドプロセスは、ソースコードベースで１つ又はそれ以上のタグ（以下で詳細に説明されるようなディレクトリレベルタグ、ファイルレベルタグ、及びコードレベルタグ）を検出するコンピュータコードの複数のラインを有する。ビルドプロセスはまた、製品の１つのバージョンを構築する場合に製品の各バージョンにおけるソースコードベースの一定の部分（ソースコードの特定の部分、ソースコードベースの特定のディレクトリ及び／又はソースコードベースの特定のファイル）を包含又は除外するコンピュータコードの複数のラインを有し、このソースコードベースの部分の包含又は除外は、タグによって制御される。より一般的には、ソースコード再使用システムは、ソースコードレポジトリを有するシステムにおけるビルドプロセスを有することができ、ここでビルドプロセスは、ソースコードシステムで同じステップで行うことができる。
【００３２】
ソフトウェアアプリケーション／製品バージョンのビルドを行っているときには、ビルドプロセスは、特定の製品バージョンに対してのソースコードレポジトリからソースコードのタグを検出し、そのバージョンに含まれるソースコードの部分がソースコードのタグに依存する製品／ソフトウェアアプリケーションを構築する。
【００３３】
ディレクトリレベルタグを用いて、特定のビルドからディレクトリを取り除くか、或いは単にディレクトリを特定のビルドに含めることができる。例えば、自分のプロフェッショナル及びエンタープライズビルドにだけあって、自分のオープンソース製品にはないモジュールが存在する場合、システムは、ビルドプロセスがプロフェッショナル又はエンタープライズビルドを行っていなければ、ビルドプロセスに全フォルダを取り除くように通知するファイルをそのモジュールのフォルダに入れることができる。ファイルレベルタグを用いて、特定のビルドから全ファイルを取り除くか、或いは全ファイルを特定のファイルに対して使用された以外の上記のディレクトリレベルタグの実施例に類似した特定のビルドに単に含めることができる。
【００３４】
コードレベルタグを用いて、コード固有のビルドのセクションを取り除くか、或いはコードの一部に対して使用された以外の上記のディレクトリレベルタグの実施例に類似した特定のビルドに該コード固有のビルドのセクションを単に含めることができる。コードレベルタグでは、開始タグは、除外したいコードの前に配置することができ、終了タグは、コードの後に配置することができる。ビルドプロセスがコードレベルタグになると、当該コードが現在のビルドに対して適切でない場合には、タグ及びコードはソースコードから除去される。タグ及びコードがビルドから除去されると、ブランクラインが所定位置に戻され、アプリケーションの全てのバージョン間のライン照合を行う。これは、ほとんどのエラーメッセージがラインナンバーに言及するので、デバッグにおいて重要なことである。問題のデバッグ時、開発者は通常、特定のビルドを有する必要はない。当該コードがその特定のビルドにある限り、ラインナンバーは正確である。
【００３５】
システムはまた、本発明によるＰＨＰセッションセキュリティ拡張（セキュリティソースコードを使用する）を含むことができる。ＰＨＰは、良く知られたサーバー側スクリプト言語である。ＰＨＰセッションセキュリティを拡張するために、システムは、アプリケーションＧＵＩＤ及びＩＰアドレストラッキングを使用することができる。ＰＨＰセッションは、特定のサーバー又は特定のサーバークラスタに連係されているが、これらは、そのサーバー上の特定のアプリケーション又はウェブフォルダに対してどのような制約もない。これは、サーバー上の１つのＰＨＰアプリケーションにおけるセッションを作成できるユーザが、そのセッションを同じサーバー上の別のＰＨＰアプリケーションにホップすることができることを意味する。従って、システムは、アプリケーションＩＤを使用する。アプリケーションＩＤは、インストール中（又はインストール中に指定されたエンドユーザ）にランダムに生成されたＧＵＩＤであり、これを用いて、ユーザがそのアプリケーションで使用しようとしているセッションはこの特定のアプリケーションに対しての有効なセッションであることを検証する。このＩＤが無いと、システム及びそのコンテンツの全ては、サーバー上にインストールされていた最小セキュアＰＨＰアプリケーションと同じ程度にしか安全ではない。
【００３６】
他のセキュリティ変更は、ユーザがセッション中からアプリケーションを使用しているＩＰアドレスのトラッキングである。別のユーザが全く違うＩＰアドレスからアプリケーションを使用しようとする場合には、これが検出され、ユーザは拒否され、セキュリティが侵害されていると考えられるのでセッションは破棄される。デフォルト動作は、ＩＰアドレスの最初の３オクテットが同じである全ＩＰアドレス（例えば、１９２．１６８．１．ｘｘｘ、ここでｘｘｘは任意の番号とすることができる）を同じＩＰとすることである。これは、セキュリティメカニズムを遮断することなくアウトバウンドトラフィックの負荷バランシングを可能にする。しかしながら、本システムはまた、より厳密に構成することもできる。セキュリティソースコードは、アプリケーションの全エントリーポイントを宣言しなくてはならないときに、エンドユーザがモジュールファイルの１つに直接アクセスできないようにする。更に、セキュリティにおけるいずれかの侵害又はセキュリティにおいて認識された侵害により、当該セッションがシステム攻撃を阻止するために破棄されることになる。
【００３７】
本システムはまた、システムとＯｕｔｌｏｏｋとの間のカレンダー同期を提供する。従って、本システムは、Ｏｕｔｌｏｏｋとのインターフェース及びＡＰＩを有し、これによってアウトルックカレンダーのフリー／ビジー表示をシステム内に記憶されたミーティングにマージすることができるようになる。詳細には、本システムは、Ｏｕｔｌｏｏｋフリー／ビジーＡＰＩ呼出しを受け付けてこれに応答する。ユーザが、Ｏｕｔｌｏｏｋフリー／ビジーサーバーを構成する場合、システムは、次の２カ月間にユーザがミーティング中としてスケジュールされている時間の全てをサーバーに通知する。ユーザが同じフリー／ビジーサーバーを使用してミーティングをスケジュールしている場合、システムは、他の人がいつ利用可能であるかを確認する。予約されるユーザのフリー／ビジー情報を記憶し繰り返すことに加えて、本システムでは若干深く関与する。詳細には、ユーザのフリー／ビジー情報が要求された場合、そのユーザからのＯｕｔｌｏｏｋデータ（利用可能な場合）とシステムに記録されたミーティングの両方から時間のビジーブロックの全ての単一のリストを生成する。これは、人がミーティングをスケジュールしようとしたときには、ビジー時間の単一の組み合わされたリストをＯｕｔｌｏｏｋに提供する。更に、システムのカレンダーを調べる場合、自分のシステムミーティングと自分がＯｕｔｌｏｏｋにスケジュールしていたミーティングとのビジーブロックの組み合わせリストを確認することができる。他の人とのミーティングをスケジュールする場合、各招待ユーザについての本システム及びＯｕｔｌｏｏｋミーティングを得ることになる。カレンダー同期はまた、Ｌｏｔｕｓ（登録商標）Ｄｏｍｉｎｏ、Ｇｏｏｇｌｅ（登録商標）Ｃａｌｅｎｄｅｒ、Ｏｒａｃｌｅ（登録商標）Ｃａｌｅｎｄｅｒ、ＳＡＰ（登録商標）Ｃａｌｅｎｄｅｒ、Ｚｉｍｂｒａ（登録商標）Ｃａｌｅｎｄｅｒ、Ｓｃａｌｉｘ（登録商標）Ｃａｌｅｎｄｅｒ、又はＮｏｖｅｌ（登録商標）Ｇｒｏｕｐｗｉｓｅなどの他の外部カレンダープログラムに提供することができる。
【００３８】
本システムは、ビジネスカードから項目を作成するためのクイックエントリ形式をシステムのユーザに提供するビジネスカード画面を更に含むことができる。ビジネスカード画面によってユーザは、共通のビジネスカードで含まれる情報を即座に入力し、同時にフォローアップ項目及び付加的な注記を作成することもできる。この単一の画面は、サーバーへの１往復で全コンタクト、アカウント、オポチュニティ、ノート、タスク、呼出し、ミーティングなどのクイックエントリを可能にする。これは、情報がユーザにとって使いやすいフォーマットであることを提示するだけでなく、ユーザの多くの時間が節約される。
【００３９】
図８Ａ−Ｃは、顧客関係管理システムの対話型テンプレート及びテーマの幾つかの実施例を示す。図８Ａは、ユーザインターフェースの上部３０１にオーシャン３０２を含み、ユーザインターフェースの中央のアイランド３０４を備えたパラダイステンプレート及びテーマ３００を示す。このテンプレート／テーマでは、ユーザインターフェースがアイドル時間中にユーザに示されている間、ボート３０６がスクリーンセーバとしてユーザインターフェースの上部３０１全体を移動し、テーマ／テンプレートは対話型となる。図８Ｂは、山脈の背景とスキーヤー３１２を有するユーザインターフェースの上部３０１を備えた細長テンプレート及びテーマ３１０を示しており、ユーザがアイドル期間中にユーザインターフェースをビューする間、１つ又はそれ以上のスノーフレーク３１４が、スクリーンセーバとしてユーザインターフェースを舞い降りる。図８Ｃは、８０年代テンプレート及びテーマ３２０を示しており、ユーザがアイドル期間中にユーザインターフェースをビューしている間エーリアンキャラクター３２２がスクリーンセーバとしてユーザインターフェースを降りていく。これらのライブ動作テンプレート／テーマに加えて、対話型テンプレート及びテーマは、ゲーム又は他の非表示又は対話型コンテンツをユーザインターフェースに組み込むことができる。図８Ａ−８Ｃに示されたテンプレート及びテーマ、これらのユーザインターフェースは、種々の他のビジネス・ソフトウエア・アプリケーション及び他のシステムと共に使用することができる。
【００４０】
図９Ａ−Ｍは、顧客関係管理システムのテンプレート及びテーマの幾つかの実施例を示す。これらのテンプレートは、対話型であってもよく、又は対話型でなくてもよいが、システムのユーザインターフェースのルック及びフィールを変更する。例えば図９Ａは、Ａｗｅｓｏｍｅ８０’のテーマ及びテンプレートを示し、図９Ｂは、Ｆｉｎａｌ  Ｆｒｏｎｔｉｅｒのテーマ及びテンプレートを示し、図９Ｃは、Ｇｏｌｄｅｎ  Ｇａｔｅのテーマ及びテンプレートを示し、図９Ｄは、Ｌｉｎｋｓのテーマ及びテンプレートを示し、図９Ｅは、Ｌｏｖｅのテーマ及びテンプレートを示し、図９Ｆは、Ｐｉｐｅｌｉｎｅのテーマ及びテンプレートを示し、図９Ｇは、Ｒｅｔｒｏのテーマ及びテンプレートを示し、図９Ｈは、Ｒｉｐｃｕｒｌのテーマ及びテンプレートを示し、図９Ｉは、Ｓｕｇａｒのテーマ及びテンプレートを示し、図９Ｊは、Ｓｕｇａｒ  Ｃｌａｓｓｉｃのテーマ及びテンプレートを示し、図９Ｋは、Ｓｕｇａｒ  Ｌｉｔｅのテーマ及びテンプレートを示し、図９Ｌは、Ｓｕｎｓｅｔのテーマ及びテンプレートを示し、図９Ｍは、Ｗｈｉｔｅ  Ｓａｎｄｓのテーマ及びテンプレートを示す。図９Ａ−９Ｍに示されたテンプレート及びテーマ、これらのユーザインターフェースは、種々の他のビジネスソフトウェアアプリケーション及び他のシステムと共に使用できる。
【００４１】
以上、本発明の特定の実施形態に関して参照してきたが、この実施形態における変更は、本発明の原理及び精神から逸脱することなく行うことができ、本発明の範囲は添付の請求項によって定義されることは当業者には理解されるであろう。
【図面の簡単な説明】
【００４２】
【図１】本発明の種々の特徴を組み入れた本発明による顧客関係管理システムを示す図である。
【図２】図１のシステムのユーザインターフェースの実施例を示す図である。
【図３】本発明によるクエリーカウンタを備えた顧客関係管理システムを示す図である。
【図４】本発明によるモジュールローダモジュールを組み入れた本発明によるアドミニストレーションモジュールのユーザインターフェースの実施例を示す図である。
【図５Ａ】モジュールローダモジュールを使用してシステムにロードすることができるモジュール用マニフェストコードの実施例を示す図である。
【図５Ｂ】モジュールローダモジュールを使用してシステムにロードすることができるモジュール用マニフェストコードの実施例を示す図である。
【図６】本発明によるアップグレードプロセスを示すフローチャートである。
【図７】図１に示されたシステムのオフラインクライアントを構成するためのユーザインターフェースの実施例を示す図である。
【図８Ａ】顧客関係管理システムの対話型テンプレート及びテーマの幾つかの実施例を示す図である。
【図８Ｂ】顧客関係管理システムの対話型テンプレート及びテーマの幾つかの実施例を示す図である。
【図８Ｃ】顧客関係管理システムの対話型テンプレート及びテーマの幾つかの実施例を示す図である。
【図９Ａ】顧客関係管理システムのテンプレート及びテーマの幾つかの実施例を示す図である。
【図９Ｂ】顧客関係管理システムのテンプレート及びテーマの幾つかの実施例を示す図である。
【図９Ｃ】顧客関係管理システムのテンプレート及びテーマの幾つかの実施例を示す図である。
【図９Ｄ】顧客関係管理システムのテンプレート及びテーマの幾つかの実施例を示す図である。
【図９Ｅ】顧客関係管理システムのテンプレート及びテーマの幾つかの実施例を示す図である。
【図９Ｆ】顧客関係管理システムのテンプレート及びテーマの幾つかの実施例を示す図である。
【図９Ｇ】顧客関係管理システムのテンプレート及びテーマの幾つかの実施例を示す図である。
【図９Ｈ】顧客関係管理システムのテンプレート及びテーマの幾つかの実施例を示す図である。
【図９Ｉ】顧客関係管理システムのテンプレート及びテーマの幾つかの実施例を示す図である。
【図９Ｊ】顧客関係管理システムのテンプレート及びテーマの幾つかの実施例を示す図である。
【図９Ｋ】顧客関係管理システムのテンプレート及びテーマの幾つかの実施例を示す図である。
【図９Ｌ】顧客関係管理システムのテンプレート及びテーマの幾つかの実施例を示す図である。
【図９Ｍ】顧客関係管理システムのテンプレート及びテーマの幾つかの実施例を示す図である。
【符号の説明】
【００４３】
１０２  クライアント
１０４  コントローラ
１０６  モジュール
１０８  Ｓｕｇａｒビーン
１１０  データベース
１１２  行レベルセキュリティ
１１４  データベース抽象化レイヤ
１１６  テーマ
１１８  テンプレート
【図１】
2009508190.tif 000003
【図２】
2009508190.tif 000004
【図３】
2009508190.tif 000005
【図４】
2009508190.tif 000006
【図５Ａ】
2009508190.tif 000007
【図５Ｂ】
2009508190.tif 000008
【図６】
2009508190.tif 000009
【図７】
2009508190.tif 000010
【図８Ａ】
2009508190.tif 000011
【図８Ｂ】
2009508190.tif 000012
【図８Ｃ】
2009508190.tif 000013
【図９Ａ】
2009508190.tif 000014
【図９Ｂ】
2009508190.tif 000015
【図９Ｃ】
2009508190.tif 000016
【図９Ｄ】
2009508190.tif 000017
【図９Ｅ】
2009508190.tif 000018
【図９Ｆ】
2009508190.tif 000019
【図９Ｇ】
2009508190.tif 000020
【図９Ｈ】
2009508190.tif 000021
【図９Ｉ】
2009508190.tif 000022
【図９Ｊ】
2009508190.tif 000023
【図９Ｋ】
2009508190.tif 000024
【図９Ｌ】
2009508190.tif 000025
【図９Ｍ】
2009508190.tif 000026