(57)【要約】      （修正有）【課題】ビジネス・アプリケーションにおける中間階層で必要な、ビジネス・アプリケーション・ソフトウェアをサポートするメタデータ駆動型システムを提供すること。【解決手段】エンティティに関係するロジックを含むプロセスをプロセス・メタデータ・モジュールとして、エンティティに関係する複数のプロパティをエンティティ・メタデータ・モジュールとして、エンティティ上で実行されるオペレーシンをオペレーション・メタデータ・モジュールとして、メタデータ・フォーマットで定義する。これらの少なくとも１つを直列化し、アプリケーション・プラットフォームに伝達し、ここで直列化を解除して格納する。【選択図】図５
2006190279.tif 000002
【特許請求の範囲】
【請求項１】
アプリケーション・プラットフォームのための、関連するデータ構造を有するエンティティを表す方法であって、
前記エンティティに関係するロジックを含むプロセスを、プロセス・メタデータ・モジュールとして、メタデータ・フォーマットで定義すること
を備えることを特徴とする方法。
【請求項２】
前記プロセス・メタデータ・モジュール中にプロセス・エクゼクティブ（process executive）を格納することをさらに備え、前記プロセス・エクゼクティブは前記エンティティに関係する前記ロジックを解釈実行するためのルーチンを提供することを特徴とする請求項１に記載の方法。
【請求項３】
前記エンティティに関係する複数のプロパティを、エンティティ・メタデータ・モジュールとしてメタデータ・フォーマットで定義することをさらに備えることを特徴とする請求項２に記載の方法。
【請求項４】
前記エンティティ上で実行されるオペレーションを、オペレーション・メタデータ・モジュールとしてメタデータ・フォーマットで定義することをさらに備えることを特徴とする請求項３に記載の方法。
【請求項５】
（ａ）（１）前記プロセス・メタデータ・モジュール、（２）前記エンティティ・メタデータ・モジュール、および（３）前記オペレーション・メタデータ・モジュールのうちの少なくとも１つを直列化すること、
（ｂ）（１）前記直列化されたプロセス・メタデータ・モジュール、（２）前記直列化されたエンティティ・メタデータ・モジュール、および（３）前記直列化されたオペレーション・メタデータ・モジュールのうちの少なくとも１つを、前記アプリケーション・プラットフォームに伝達すること、
（ｃ）（１）前記直列化されたプロセス・メタデータ・モジュール、（２）前記直列化されたエンティティ・メタデータ・モジュール、および（３）前記直列化されたオペレーション・メタデータ・モジュールのうちの少なくとも１つを、前記アプリケーション・プラットフォームにおいて直列化解除すること、ならびに
（ｄ）（１）前記直列化解除されたプロセス・メタデータ・モジュール、（２）前記直列化解除されたエンティティ・メタデータ・モジュール、および（３）前記直列化解除されたオペレーション・メタデータ・モジュールのうちの少なくとも１つを、前記アプリケーション・プラットフォーム上に格納すること
をさらに備えることを特徴とする請求項４に記載の方法。
【請求項６】
前記エンティティ上で実行される前記オペレーションは、（１）作成、（２）更新、および（３）削除のうちのひとつであることを特徴とする請求項５に記載の方法。
【請求項７】
前記オペレーション・メタデータは、前記エンティティ上で実行される前記オペレーションに関する情報であって、
（ａ）前記オペレーションがオフライン処理のサポートを必要とするかどうか、
（ｂ）前記オペレーションがアトミック・トランザクション内部で実行される必要があるかどうか、および、
（ｃ）前記オペレーションがワンステップまたはツー・ステップのセキュリティ許可を必要とするかどうか
を備えた情報を含むことを特徴とする請求項６に記載の方法。
【請求項８】
前記エンティティ上で実行される前記オペレーションは、前記アプリケーション・プラットフォームから切り離されたリモート・コンピューティング装置上で実行されることを特徴とする請求項３に記載の方法。
【請求項９】
前記エンティティ上で実行される前記オペレーションは、カスケーディング・オペレーションであることを特徴とする請求項３に記載の方法。
【請求項１０】
前記プロセスのオブジェクトは、
（１）前記エンティティについての既存ロジック、および
（２）新しく追加されたエンティティについての新しいロジック
のうちの少なくともひとつを含むことを特徴とする請求項３に記載の方法。
【請求項１１】
前記エンティティについての複数のメタデータ駆動型拡張機能であって、（１）妥当性検査拡張機能、（２）既定値注入拡張機能（inject defaults extension）、（３）セキュリティ拡張機能、（４）ワークフロー拡張機能、（５）呼出し拡張機能（callout extension）、および（６）オフライン拡張機能、のうちの少なくとも１つを含む拡張機能を作成することをさらに備えることを特徴とする請求項３に記載の方法。
【請求項１２】
前記プロセス・メタデータ・モジュールは、前記複数のメタデータ駆動型拡張機能のうちの少なくとも１つと通信するように、さらに適合されることを特徴とする請求項１１に記載の方法。
【請求項１３】
エンティティを管理するためのメタデータ駆動型システムであって、メタデータ・フォーマットでプロセスを格納するように適合されたプロセス・メタデータ・モジュールを備え、前記プロセスのオブジェクトは前記エンティティに関係するロジックを含むことを特徴とするシステム。
【請求項１４】
前記エンティティの複数のプロパティをメタデータ・フォーマットで格納するように適合されたエンティティ・メタデータ・モジュールと、
複数の基本的なデータプロセスを格納するように適合された基本プロセス・メタデータ・モジュールと、
前記エンティティ・メタデータ・モジュール、前記プロセス・メタデータ・モジュールおよび前記基本プロセス・メタデータ・モジュールを直列化するように適合された直列化モジュールと、
前記エンティティ・メタデータ・モジュール、前記プロセス・メタデータ・モジュールおよび前記基本プロセス・メタデータ・モジュールを直列化解除するように適合された直列化解除モジュールと
をさらに備えることを特徴とする請求項１３に記載のシステム。
【請求項１５】
前記複数の基本的なデータプロセスは、（１）作成プロセス、（２）更新プロセス、および（３）削除プロセス、のうちの少なくとも１つを含むことを特徴とする請求項１４に記載のシステム。
【請求項１６】
前記プロセスは、（１）前記エンティティについての既存ロジック、および（２）新しく追加されたエンティティについての新しいロジック、のうちの少なくとも１つを含むことを特徴とする請求項１５に記載のシステム。
【請求項１７】
前記直列化モジュールは、（ａ）エンティティ・データベースおよびグラフィカル・ユーザ・インターフェースと通信するように、および（ｂ）前記エンティティ・メタデータおよび前記プロセス・メタデータ・モジュールをＸＭＬストリングに直列化するようにさらに適合され、
前記直列化解除モジュールは、グラフィカル・ユーザ・インターフェースをホスティングするリモート・クライアントと、およびエンティティ・データベースを有するサーバと通信するようにさらに適合される
ことを特徴とする請求項１５に記載のシステム。
【請求項１８】
アプリケーション・プラットフォームのための、関連するデータ構造を有するエンティティを表す方法であって、
（ａ）前記エンティティの複数のプロパティを、エンティティ・メタデータ・モジュールとしてメタデータ・フォーマットで定義すること、
（ｂ）前記直列化解除されたエンティティ・メタデータ・モジュールを前記アプリケーション・プラットフォーム上に格納すること、
（ｃ）前記エンティティに関係するロジックを含むプロセスを、プロセス・メタデータ・モジュールとしてメタデータ・フォーマットで定義すること、
（ｄ）前記直列化解除されたプロセス・メタデータ・モジュールを前記アプリケーション・プラットフォーム上に格納すること、
（ｅ）前記エンティティ上で実行されるオペレーションを、オペレーション・メタデータ・モジュールとしてメタデータ・フォーマットで定義すること、および
（ｆ）前記直列化解除されたオペレーション・メタデータ・モジュールを前記アプリケーション・プラットフォーム上に格納すること
を備えることを特徴とする方法。
【請求項１９】
前記プロセスは、独立ソフトウェア・ベンダによって追加されるプロセスであって、前記独立ソフトウェア・ベンダによって追加されたエンティティ上で実行されるプロセス、を表すことを特徴とする請求項１８に記載の方法。
【請求項２０】
前記エンティティ上で実行されるオフライン・オペレーションを取り込むこと、
前記オフライン・オペレーションをメタデータ・フォーマットで格納すること、
前記メタデータ・フォーマットのオペレーションを直列化すること、
前記直列化されたオペレーションを前記アプリケーション・プラットフォームに伝達すること、
前記メタデータ・フォーマットのオペレーションを前記アプリケーション・プラットフォームで直列化解除すること、および、
前記直列化解除されたメタデータ・フォーマットのオペレーションを前記アプリケーション・プラットフォームでプレイバックすること
をさらに備えることを特徴とする請求項１８に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般にコンピュータ・ソフトウェアに関し、より詳細にはインターネットを使用するビジネス・アプリケーションに関する。
【背景技術】
【０００２】
現代のビジネスは、最新の技術を使用しないと効率的に機能することができない。具体的には、コンピュータおよびソフトウェアが、発達した経済的な組織におけるビジネスの大部分で、ほとんど主要な部分になっている。通常、ビジネスでは、エクセル（登録商標）などのいくつかの市販ビジネス・アプリケーション、ならびにビジネスの特定分野向けに特に設計されたいくつかのカスタム・アプリケーションなどを使用する。金融サービスや医療サービスなど、特定のタイプのビジネスで使用するためにソフトウェア会社によって開発された、いくつかの業界特有のソフトウェア・アプリケーションが存在する。
【０００３】
こうした業界特有のソフトウェア・アプリケーションは、一般に、特定のビジネス・タイプの特定の特徴を考慮して設計されているが、それらは、さらにエンド・ユーザの使用により適するように修正する必要がある。顧客（との）関係性管理（ＣＲＭ：Customer relationship management）ソフトウェアは、エンド・ユーザ、あるいはこの特定のタイプのソフトウェアを専門に扱う独立ソフトウェア・ベンダのいずれかによってしばしば修正される、ビジネス・アプリケーションの一例である。
【０００４】
インターネットの発展以来、ビジネスでは、通常、インターネット上で分散型のビジネス・ソリューションを提供するウェブ・ベースのアプリケーションを使用する。典型的なウェブ・ベースのアプリケーションでは、３階層のプラットフォームビジネス・アプリケーションを実装するのに使用され、このプラットフォームでは、ウェブ・ブラウザがクライアント階層（client tier）になり、アプリケーションが使用する様々なビジネス・データを収容するデータベースがバックエンド階層（back-end tier）になり、ウェブ・サーバおよびその拡張部分が中間階層（middle tier）になる。中間階層は、しばしばミドルウェアとしても知られており、限定されないけれども、データの読み取り、データの書き込み、データ・アクセスの許可、関係性の妥当性検査などを含むいくつかの機能性を担当する。
【０００５】
ビジネス・アプリケーション向けに使用されるミドルウェアは、ビジネス・データを管理するための高度にカスタマイズ可能なソリューションを要求する。こうしたアプリケーションでの典型的なプロセスには、許可（authorization）、データ完全性の維持（maintaining data integrity）、ビジネスルールの適用などのための様々なプロセスが含まれる。ビジネス・アプリケーションは、セキュリティ、ビジネス区分の再構成、異種オブジェクト階層の更新／削除などのための様々なカスケーディング・（cascading）オペレーション中に、複数のビジネス・エンティティ（entity）間に様々な関係性の制約（relationship constraints）を課すことも必要とする。本明細書に述べるように、エンティティとは、顧客や製品など実世界の概念をメタデータで記述したものである。エンティティという用語およびクラス（class）という用語は、こうした実世界の概念の、こうした定義または記述を意味するために区別なく使用することができる。エンティティ・インスタンス、または単にインスタンスは、こうしたエンティティのセットの具体的な構成要素を記述する物理的なデータである。同様に、関係性制約条件は、ビジネス・ロジックを実行中に２つのエンティティ間の特定の関係性がどのようにトラバースされるかを管理する１組のルールである。一方で、カスケーディング・オペレーションとは、様々なエンティティの関係性制約条件を自動的にトラバースするビジネス・ロジックに関係するオペレーションである。
【０００６】
すべてのカスケーディング・オペレーションは、接続されたクライアントおよび切り離されたクライアントのいずれにおいても起こりうる。しかし、データを変更するカスケーディング・オペレーションのサブセットは、中央アプリケーション・サーバ上でそれが発生するときにのみ信頼される。したがって、ビジネス・プロセスおよびエンティティ・スキーマ（schema）のカスタマイズを可能にするは、カスケーディング・オペレーションに関していくつかの課題を提起する。
【発明の開示】
【発明が解決しようとする課題】
【０００７】
したがって、ビジネス・データを管理するためのカスタマイズ可能なビジネス・ソリューションを提供するために、より良い中間階層のプラットフォームを提供することが必要になる。
【課題を解決するための手段】
【０００８】
一連のビジネス・アプリケーションにおける中間階層で必要とされるビジネス・アプリケーション・ソフトウェアをサポートするためのメタデータ駆動型システムは、プロセスをメタデータ・フォーマットで格納するように適合されたプロセス・メタデータ・モジュールを含む。このシステムにおいて、このプロセスのオブジェクトは、アプリケーション・ソフトウェアのエンティティに関係するロジックを収容する。このシステムは、アカウント、インシデント（incident）などの様々なエンティティの持続性（persistence）を可能とし、ビジネス・アプリケーション・ソフトウェアのエンド・ユーザが新しいタイプのエンティティを作成することを可能にする。このシステムは、エンド・ユーザが、ビジネス・アプリケーションの配備後に、エンド・ユーザによって定義される新しいエンティティに関しても、このビジネス・アプリケーション・ソフトウェアを再コンパイルすることを必要とせずに、重要なビジネス・ロジック・オペレーションを実行することもできるようになる。メタデータ駆動型手法は、ビジネス・アプリケーションに容易に変更を加えることを可能にし、このビジネス・アプリケーション上に構築されたオブジェクトの品質保証を自動化することを可能にする。
【０００９】
メタデータ駆動型システムの一実装形態は、ビジネス・エンティティを定義するデータベース・スキーマを有する、ビジネス・アカウントや取引相手などのビジネス・エンティティを、メタデータ・フォーマットで表すことを可能にする。このシステムは、ビジネス・エンティティの複数のプロパティをエンティティ・メタデータ・モジュールとしてメタデータ・フォーマットで定義するように、エンティティ・メタデータ・モジュールをアプリケーション・プラットフォームに直列化するように、直列化されたエンティティ・メタデータ・モジュールを直列化解除するように、直列化解除されたエンティティ・メタデータ・モジュールをアプリケーション・プラットフォーム上に格納するように、適合させることができる。このシステムは、プロセス・オブジェクトを、プロセス・メタデータ・モジュールとしてメタデータ・フォーマットで定義するようにさらに適合させることができ、このプロセス・オブジェクトはビジネス・エンティティのためのロジックを収容する。このシステムには、プロセス・メタデータ・モジュールをアプリケーション・プラットフォームに直列化するための直列化モジュール、直列化されたメタデータ・モジュールを直列化解除するための直列化解除モジュール、および直列化解除されたプロセス・メタデータ・モジュールをアプリケーション・プラットフォーム上に格納するための格納モジュールも含むことができる。
【００１０】
システムの代替実装形態は、エンティティ上で実行されるオペレーションを、オペレーション・メタデータ・モジュールとしてメタデータ・フォーマットで定義するように、プロセス・メタデータ・モジュールをアプリケーション・プラットフォームに直列化するように、直列化されたプロセス・メタデータ・モジュールを直列化解除するように、直列化解除されたプロセス・メタデータ・モジュールをアプリケーション・プラットフォーム上に格納するように、適合させることもできる。
【発明を実施するための最良の形態】
【００１１】
以下の本文に数多くの異なる実施形態を詳細に説明するが、記述の法的な範囲は、特許請求の範囲の語句によって定義されることを理解されたい。詳細な記述は、単に例示的なものに過ぎないと解釈すべきであり、考え得るあらゆる実施形態を記述することは、不可能ではないにしても非現実的であるため、考え得るあらゆる実施形態を記述していない。現在の技術または本発明の出願日の後に開発される技術を使用することによって、数多くの代替実施形態を実装することが可能であり、これらは、依然として本発明を定義する特許請求の範囲内に入ることになる。
【００１２】
「本明細書では、用語「＿」は、ここに．．．を意味するように定義される」あるいは同様な文を使用して、ある用語が本発明において明確に定義されない限り、その用語の意味を、その明白なまたは普通の意味を越えて、明確にまたは暗に限定する意図はなく、こうした用語は、（特許請求の範囲での用語以外の）本発明のどんなセクションで述べられる記述に基づく範囲内においても、限定するように解釈すべきでないことも理解されたい。特許請求の範囲に明記されるどんな用語も、本発明において単一の意味に一致する形で言及される場合、それは、ただ読者を混乱させないよう明確にするためであって、こうしたクレームの用語を、暗にまたはその他の方法で、その単一の意味に限定することを意図するものではない。最後に、特許請求の範囲中の構成要素が、任意の構造についての詳述することなく、「手段（means）」という用語、および機能、を列挙することによって定義されない限り、どんな特許請求の範囲中の構成要素の範囲も、米国法典第３５巻第１１２条第６段落の適用に基づいて解釈されることを意図してはいない。
【００１３】
ネットワーク
図１には、本明細書に記載のＸＭＬ版数管理システム（XML versioning system）を実装するために使用することができるネットワーク１０が示してある。ネットワーク１０は、インターネット、仮想専用線網（ＶＰＮ：virtual private network）でもよく、１つまたは複数のコンピュータ、通信装置、データベースなどを、通信ができるように互いに接続することができるようにする他のどんなネットワークでもよい。ネットワーク１０は、イーサネット（登録商標）１６およびルータ１８、ならびに地上の通信線２０を介して、パーソナル・コンピュータ１２およびコンピュータ端末１４に接続することができる。一方、ネットワーク１０は、無線通信局２６および無線リンク２８を介して、ラップトップ・コンピュータ２２および携帯型情報端末２４に無線接続することができる。同様に、サーバ３０は、通信リンク３２を使用してネットワーク１０に接続することができ、メインフレーム３４は、別の通信リンク３６を使用してネットワーク１０に接続することができる。さらに詳しく後述するように、動的ソフトウェア・プロビジョニング・システム（dynamic software provisioning system）の１つまたは複数の構成要素は、ネットワーク１０に接続された任意の様々な装置上に、格納し、稼働させることができる。
【００１４】
図２には、ネットワーク１０に接続され、動的ソフトウェア・プロビジョニング・システムの１つまたは複数の構成要素を実装するために使用することができるコンピュータ１１０の形で、コンピューティング装置が示してある。コンピュータ１１０の構成要素には、それだけには限定されないが、処理ユニット１２０、システム・メモリ１３０、およびシステム・メモリを含めた様々なシステム構成要素を処理ユニット１２０に結合するシステム・バス１２１が含まれ得る。システム・バス１２１は、メモリ・バスまたはメモリ・コントローラ、周辺バス、および任意の様々なバス・アーキテクチャを使用するローカル・バスを含めて、いくつかのタイプのバス構造のうちのどれでもよい。例として、それだけには限定されないが、こうしたアーキテクチャには、ＩＳＡ（Industry Standard Architecture）バス、マイクロ・チャネル・アーキテクチャ（ＭＣＡ：Micro Channel Architecture）バス、ＥＩＳＡ（Enhanced ISA）バス、ビデオ電子装置規格化協会（ＶＥＳＡ：Video Electronics Standards Association）ローカル・バス、およびメザニン・バス（Mezzanine bus）としても知られている周辺構成要素相互接続（ＰＣＩ：Peripheral Component Interconnect）バスが含まれる。
【００１５】
コンピュータ１１０は、通常、様々なコンピュータ読み取り可能な媒体を備える。コンピュータ読み取り可能な媒体は、コンピュータ１１０からアクセスすることができる、入手可能などんな媒体とすることもでき、揮発性および不揮発性の媒体、取り外し可能および取り外し不可能な媒体のどちらも含まれる。例として、それだけには限定されないが、コンピュータ読み取り可能な媒体は、コンピュータの記憶媒体および通信媒体を含むことができる。コンピュータの記憶媒体には、コンピュータ読み取り可能な命令、データ構造、プログラム・モジュール、他のデータなどの情報を格納するためのどんな方法および技術で実装される、揮発性および不揮発性の媒体、取り外し可能および取り外し不可能な媒体も含まれる。コンピュータ記憶媒体には、それだけには限定されないが、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュ・メモリまたは他のメモリ技術、ＣＤ−ＲＯＭ、デジタル多用途ディスク（ＤＶＤ：digital versatile disk）または他の光学ディスク記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置または他の磁気記憶装置、あるいは所望の情報を格納するために使用することができ、コンピュータ１１０からアクセスすることができる他のどんな媒体も含まれる。通信媒体は、通常、コンピュータ読み取り可能な命令、データ構造、プログラム・モジュールまたは他のデータを、搬送波や他の伝送機構など変調されたデータ信号の中に含み、どんな情報送達媒体をも含む。「変調されたデータ信号」という用語は、情報を信号の中に符号化するような方法で設定または変更された信号特性のうちの１つまたは複数を有する信号を意味する。例として、それだけには限定されないが、通信媒体には、有線ネットワークや直接配線接続などの有線媒体、および、音声、無線周波数、赤外線、他の無線媒体などの無線媒体が含まれる。前述のどんな媒体の組合せも、コンピュータ読み取り可能な媒体の範囲内に含まれるべきである。
【００１６】
システム・メモリ１３０には、読出し専用メモリ（ＲＯＭ）１３１やランダム・アクセス・メモリ（ＲＡＭ）１３２など、揮発性および／または不揮発性メモリの形のコンピュータ記憶媒体が含まれる。基本入出力システム１３３（ＢＩＯＳ）は、起動時などにコンピュータ１１０内の諸要素間で情報を伝送する助けとなる基本的なルーチンを収容し、通常ＲＯＭ１３１に格納されている。ＲＡＭ１３２は、通常、処理ユニット１２０からただちにアクセス可能で、かつ／または現在処理ユニット１２０によって動作させられている、データおよび／またはプログラム・モジュールを収容する。例として、それだけには限定されないが、図２には、オペレーティング・システム１３４、アプリケーション・プログラム１３５、他のプログラム・モジュール１３６、およびプログラム・データ１３７が示してある。
【００１７】
コンピュータ１１０には、他の取り外し可能／取り外し不可能な、揮発性／不揮発性のコンピュータ記憶媒体も含めることができる。例として、図２には、取り外し不可能で不揮発性の磁気媒体との間で読み書きを行うハードディスク・ドライブ１４０、取り外し可能で不揮発性の磁気ディスク１５２との間で読み書きを行う磁気ディスク・ドライブ１５１、およびＣＤ  ＲＯＭや他の光学媒体など取り外し可能で不揮発性の光学ディスク１５６との間で読み書きを行う光学ディスク・ドライブ１５５が示してある。例示的な動作環境（operating environment）で使用することができる、他の取り外し可能／取り外し不可能な、揮発性／不揮発性のコンピュータ記憶媒体には、それだけには限定されないが、磁気テープ・カセット、フラッシュ・メモリ・カード、デジタル多用途ディスク、デジタル・ビデオ・テープ、半導体ＲＡＭ、半導体ＲＯＭなどが含まれる。ハードディスク・ドライブ１４１は、通常、インターフェース１４０など取り外し不可能なメモリ・インターフェースを介してシステム・バス１２１に接続され、磁気ディスク・ドライブ１５１および光学ディスク・ドライブ１５５は、通常、インターフェース１５０など取り外し可能なメモリ・インターフェースによってシステム・バス１２１に接続される。
【００１８】
前述の図２に示した各ドライブおよびそれらに関連するコンピュータ記憶媒体は、コンピュータ１１０のために、コンピュータ読み取り可能な命令、データ構造、プログラム・モジュール、および他のデータについての記憶装置を提供する。図２には、たとえば、ハードディスク１４１は、オペレーティング・システム１４４、アプリケーション・プログラム１４５、他のプログラム・モジュール１４６、およびプログラム・データ１４７を格納するように示してある。これらの構成要素は、オペレーティング・システム１３４、アプリケーション・プログラム１３５、他のプログラム・モジュール１３６、およびプログラム・データ１３７と同じものとすることもでき、異なるものとすることもできることに留意されたい。オペレーティング・システム１４４、アプリケーション・プログラム１４５、他のプログラム・モジュール１４６、およびプログラム・データ１４７は、少なくともそれらが別のコピーであることを示すために、図２では別の番号が付与されている。ユーザは、キーボード１６２や、普通はマウス、トラックボール、またはタッチパッドと呼ばれるポインティング装置１６１などの入力装置を介して、コマンドおよび情報をコンピュータ２０に入力することができる。他の入力装置（図示せず）には、マイクロフォン、ジョイスティック、ゲームパッド、衛星用パラボラ・アンテナ、スキャナなどが含まれ得る。これらおよび他の入力装置は、システム・バスに結合されているユーザ入力インターフェース１６０を介して、しばしば処理ユニット１２０に結合されるが、パラレル・ポート、ゲーム・ポート、ユニバーサル・シリアル・バス（ＵＳＢ）など他のインターフェースおよびバス構造によって結合することもできる。モニタ１９１または他のタイプの表示装置も、ビデオ・インターフェース１９０などのインターフェースを介してシステム・バス１２１に接続されている。モニタに加えて、コンピュータには、スピーカ１９７やプリンタ１９６など、出力周辺インターフェース１９０を介して接続することができる他の周辺出力装置も含めることができる。
【００１９】
コンピュータ１１０は、リモート・コンピュータ１８０など１つまたは複数のリモート・コンピュータへの論理的な接続を使用して、ネットワーク化された環境で動作することができる。リモート・コンピュータ１８０は、パーソナル・コンピュータ、サーバ、ルータ、ネットワークＰＣ、ピア装置（peer device）でもよく、他の一般的なネットワーク・ノードでもよい。リモート・コンピュータ１８０は、通常、コンピュータ１１０に関係する前述の各要素の多くまたはすべてを含むが、図２にはメモリ記憶装置１８１だけが示してある。図２に示した論理的な接続には、ローカル・エリア・ネットワーク（ＬＡＮ）１７１およびワイド・エリア・ネットワーク（ＷＡＮ）１７３が含まれるが、他のネットワークも含まれ得る。こうしたネットワーキング環境は、オフィス、企業全体のコンピュータ・ネットワーク、イントラネット、およびインターネットでは普通である。
【００２０】
ＬＡＮネットワーキング環境で使用されるときは、コンピュータ１１０は、ネットワークのインターフェースまたはアダプタ１７０を介してＬＡＮ  １７１に接続される。ＷＡＮネットワーキング環境で使用されるときは、コンピュータ１１０は、通常、インターネットなどのＷＡＮ  １７３を介して通信を確立するためのモデム１７２または他の手段を備える。モデム１７２は、内部モデムでも外部モデムでもよく、ユーザ入力インターフェース１６０または他の適切な機構を介してシステム・バス１２１に接続することができる。ネットワーク化された環境では、コンピュータ１１０に関係して示されたプログラム・モジュール、またはその一部分は、リモート・メモリ記憶装置に格納することができる。例として、それだけには限定されないが、図２には、リモート・アプリケーション・プログラム１８５がメモリ装置１８１に常駐するものとして示してある。示されたネットワーク接続は例示的なものであり、各コンピュータ間の通信リンクを確立する他の手段を使用することもできることが理解されよう。
【００２１】
メタデータ駆動型ビジネス論理処理
図３には、図１のネットワーク１０上で様々なアプリケーションを管理するために使用することができるメタデータ駆動型システム２００のブロック図が示してある。システム２００には、エンティティ・メタデータ・モジュール２０２、プロセス・メタデータ・モジュール２０４、基本プロセス・メタデータ・モジュール２０６、直列化モジュール２０８、および直列化解除モジュール２１０が含まれ得る。システム２００は、サーバ・データベース２１２、リモート・データベース２１４、グラフィカル・ユーザ・インターフェース（ＧＵＩ）２１６およびブラウザ２１８と通信することができる。システム２００の様々なモジュールは、ネットワーク１０のサーバ３０、デスクトップ・コンピュータ１２など、任意の様々なコンピューティング装置上に実装することができる。システム２００は、コンピュータ１１０上に実装される場合、ＲＯＭ１３１、ＲＡＭ１３２、または他の同様などんな記憶場所にも格納することもできる。
【００２２】
システム２００を使用して、サーバ・データベース２１２およびリモート・データベース２１４上の様々なデータにアクセスする顧客（との）関係性管理（ＣＲＭ）アプリケーションなどのアプリケーション用のミドルウェアを実装することができる。本明細書には、システム２００はＣＲＭアプリケーションを実装するものとして説明してあるが、システム２００を使用して、代替アプリケーションをいくつでも実装することができる。たとえば、一代替実装形態では、システム２００を使用して、ネットワーク１０などのネットワーク上に人的資源管理（human resource management）アプリケーションを実装することができる。システム２００を使用して実装することができるアプリケーションの他の例には、企業資源計画（ＥＲＰ：enterprise resource planning）システム、分散会計システム（distributed accounting system）、資材所要量計画（ＭＲＰ：material requirement planning）システム、プロジェクト管理システムなどの様々なビジネス・アプリケーションが含まれる。
【００２３】
システム２００は、ＧＵＩ２１６およびブラウザ２１８を使用して、システム２００のユーザと通信することができる。さらに、コンピュータ１１０上に格納されているアプリケーション・プログラム１３５など、１つまたは複数のアプリケーション・プログラムもシステム２００と対話することができる。システム２００は、システム・バス１２１または当業者によく知られた他のどんな方法をも使用して、コンピュータ１１０上の様々な装置と通信することができる。同様に、システム２００は、ローカル・エリア・ネットワーク１７１、ワイド・エリア・ネットワーク１７３などを使用するネットワーク上の様々な装置と通信することができる。
【００２４】
次に、システム２００の具体的な構成要素を参照すると、エンティティ・メタデータ・モジュール２０２は、アプリケーションが使用するエンティティの様々なプロパティを定義することができる。こうしたエンティティは、たとえば、ＣＲＭアプリケーションの顧客アカウント・データ用のアカウント・テーブル、在庫管理アプリケーションでの売上げデータ用の売上げテーブルなどでよい。当業者にはよく知られているが、メタデータは、一般に、エンティティおよびそれらの関係性についての情報を表す。エンティティ・メタデータ・モジュール２０２には、エンド・ユーザまたは独立ソフトウェア・ベンダ（ＩＳＶ）によって作成される様々なエンティティについてのプロパティを含めて、様々なエンティティのプロパティを含めることができる。エンティティ・メタデータ・モジュール２０２によって表すことができる各プロパティのうちのいくつかの例としては、エンティティのデータ・タイプ、エンティティのサイズ、エンティティに関するセキュリティ情報、そのエンティティと他のエンティティとの関係性などでもよい。図３のブロック図には、エンティティ・メタデータ・モジュール２０２についてひとつのブロックしか示していないが、システム２００の一実装形態では、エンティティ・メタデータ・モジュール２０２の構造は非常に複雑で、様々なエンティティについての様々なエンティティ・メタデータ・モジュールを含み、こうした複数のエンティティ・メタデータ・モジュールのうちの１つまたは複数を、相互に関係づけることができることを理解されたい。
【００２５】
プロセス・メタデータ・モジュール２０４は、エンティティに関係する様々なプロセスを表すことができる。たとえば、エンティティが契約を表し、それが売買契約に関する情報を提供するとき、この契約エンティティに関係するプロセスは、契約更新プロセスである可能性があり、それは、ビジネス・ロジックに関連する可能性があり、ＣｏｎｔｒａｃｔＰｒｏｃｅｅＯｂｊｅｃｔ．Ｒｅｖｉｅ（）法によって実装される可能性がある。この場合、プロセス・メタデータ・モジュール２０４は、ＣｏｎｔｒａｃｔＰｒｏｃｅｅＯｂｊｅｃｔ．Ｒｅｖｉｅ（）法を表すことができる。プロセス・メタデータ・モジュール２０４によって表されるプロセスが、１つまたは複数のサブプロセスを必要とする場合、こうしたサブプロセスも、プロセス・メタデータ・モジュール２０４内で提供することができる。
【００２６】
プロセス・メタデータ・モジュール２０４には、アプリケーションの最初の開発者によってエンティティを使用して開発され、そのアプリケーションの最初の実装形態を与えられている様々なプロセスが含まれ得る。しかし、ユーザ、独立ソフトウェア・ベンダなども、プロセス・メタデータ・モジュール２０４に追加することができる追加プロセスを開発し提供することができる。こうした状況では、プロセス・メタデータ・モジュール２０４には、追加プロセスに関する情報、およびこうした追加ビジネス・プロセスのインスタンスの作成および／または呼出しに必要となることがある他の情報を表すメタデータを含めることができる。
【００２７】
サード・パーティのベンダが、プロセス・メタデータ・モジュール２０４を使用して１つまたは複数のプロセスを開発あるいは提供することができるようにすることによって、アプリケーションに追加されたこうした機能性（functionalities）をコンパイルおよび展開することを必要とせずに、様々な機能性をアプリケーションに追加することができるようになる。さらに、独立ソフトウェア・ベンダがエンティティをアプリケーションに追加する場合、こうした追加されたエンティティの各プロパティはエンティティ・メタデータ・モジュール２０２に格納されるが、こうした追加されたエンティティ上で実行される様々なプロセスは、プロセス・メタデータ・モジュール２０４に格納することができる。
【００２８】
基本プロセス・メタデータ・モジュール２０６は、プロセス・メタデータ・モジュール２０４に格納される各プロセスを含めて、アプリケーションの様々なプロセスによって使用することができる様々な基本プロセスを格納する。たとえば、図３に示すように、基本プロセス・メタデータ・モジュール２０６は、作成プロセス、読み取りプロセス、更新プロセス、および削除プロセスを含むものとして示してある。しかし、セキュリティ、データ持続性（data persistence）、などに関係した多くのさらなる基本プロセスも、基本プロセス・メタデータ・モジュール２０６に格納することができる。したがって、たとえば、プロセス・メタデータ・モジュール２０４に格納されたＣｏｎｔｒａｃｔＰｒｏｃｅｅＯｂｊｅｃｔ．Ｒｅｖｉｅ（）法は、基本プロセス・メタデータ・モジュール２０６から更新プロセスを呼び出して、契約エンティティを更新することができ、こうした契約エンティティの各プロパティおよび関係性をエンティティ・メタデータ・モジュール２０２に格納することができる。
【００２９】
直列化モジュール２０８には、エンティティのメモリ内オブジェクト表現を、ネットワークを介しての送信、あるいはディスクまたは他の記憶媒体への保管が可能なフォーマットに変換するためのプロセスを含めることができる。同様に、直列化解除モジュール２１０には、メモリからのデータまたはネットワークから受け取ったデータをメモリ内オブジェクト表現に変換するための直列化解除プロセスを含めることができ、このオブジェクト表現は、プロセス・メタデータ・モジュール２０４および基本プロセス・メタデータ・モジュール２０６のいずれかに格納された１つまたは複数のプロセスによって使用することができる。
【００３０】
図４には、図３のエンティティ・メタデータ・モジュール２０２に格納することができる様々な構成要素の詳細なブロック図を示している。前述のように、エンティティ・メタデータ・モジュールは、アプリケーションの最初の設計時に作成される様々なエンティティに関する情報、ならびに、アプリケーションの独立ソフトウェア・ベンダまたはユーザによって追加することができる様々なエンティティに関する情報を格納するのに使用することができる。図４には、様々なブロックとしてエンティティ・メタデータ・モジュールに格納される様々な情報が示してあるが、これらのブロックの１つまたは複数は、組み合わせて１つにすることもでき、あるいはこれらのブロックの１つまたは複数は、様々なサブブロックにさらに分割することもできることが当業者には理解されよう。さらに、これらのブロックの各々は、コンピュータ１１０のシステム・バス１２１など一般の通信バスを使用することによって、その他のブロックから情報にアクセスすることができる。
【００３１】
より具体的には、エンティティ・メタデータ・モジュール２０２には、物理形状ブロック（physical shape block）２３２、様々なエンティティの様々な属性を含む属性ブロック（attribute block）２３４、様々なエンティティに結合された様々なプロセスを含む結合プロセス・ブロック（bound processes block）２３６、様々なエンティティの、また様々なエンティティ間の様々な関係を含む関係性（relationships）ブロック２３８、様々なエンティティについてのエンティティ・マップを含むマップ・ブロック（maps block）２４０、様々なエンティティとともに使用される様々なユーザ・インターフェースを含むユーザ・インターフェース・ブロック２４２、および様々なエンティティのうちの１つまたは複数に関する様々なルールを含むルール・ブロック（rules block）２４４、を含めることができる。
【００３２】
物理形状ブロック２３２は、テーブル定義、ビュー定義など、様々なエンティティの物理データベース形状の定義を、メタデータのフォーマットで格納することができる。たとえば、ＣＲＭアプリケーションに関係する顧客エンティティの場合は、物理形状ブロック２３２は、顧客テーブルでの列（columns）の数、顧客テーブルについてのメモリ・アドレスなどに関する情報を格納することができる。
【００３３】
属性（attributes）ブロック２３４は、各エンティティの属性に関係する様々な情報を、メタデータ・フォーマットで格納することができる。たとえば、エンティティのセキュリティ属性は、そのエンティティに関する情報を閲覧または変更するセキュリティ特権（security privilege）を、ユーザが有するのかプロセスが有するのかを指定することができる。エンティティの１つまたは複数の属性は、アプリケーションの最初の設計者および／または独立ソフトウェア・ベンダによって指定することができる。さらに、あるエンティティは、こうした属性はユーザによって変更することができ、他のエンティティは、こうした属性はユーザによって変更することができない。
【００３４】
結合（bound）プロセス・ブロック２３６は、様々なエンティティに結合されたプロセスをメタデータ・フォーマットで指定することができ、こうしたプロセスは、プロセス・メタデータ・モジュール２０４に、基本プロセス・メタデータ・モジュール２０６に、または何かしら他のフォーマットで格納することができる。顧客エンティティに結合しているプロセスの例としては、固定周期毎にアプリケーションに電子メールを生成させる「電子メール生成」プロセスでもよい。販売員エンティティに結合されたプロセスの別の例としては、販売員に関係した旅行情報をアプリケーションが受信するたびに、販売員の市内電話番号を更新する「場所更新」プロセスでもよい。
【００３５】
関係性（relationship）ブロック２３８は、アプリケーションに関係する様々なエンティティ間の様々な関係性を、メタデータ・フォーマットで指定することができる。たとえば、システム２００によって実装される人的資源アプリケーションにおいて、関係性ブロック２３８は、管理者と従業員の関係は１対多数であるが、管理者と秘書の関係性は１対１である、と指定することができる。関係性ブロック２３８は、独立ソフトウェア・ベンダまたはユーザによって追加されるエンティティについての関係を指定することもできる。
【００３６】
マップ・ブロック２４０は、アプリケーション中の様々な既存のエンティティに基づいて他のエンティティを構築するための様々なルールを、メタデータ・フォーマットで指定することができる。たとえば、会計システムのマップ・ブロック２４０は、顧客エンティティ、製品エンティティ、売上税エンティティなどに基づいてインボイス・エンティティを作成するためのルールを指定することができる。
【００３７】
ユーザ・インターフェース・ブロック２４２は、アプリケーションに関係するエンティティについての様々なレイアウト、ビュー、ピック・リスト（pick-list）などを、メタデータ・フォーマットで指定することができる。たとえば、資材所要量計画（ＭＲＰ）アプリケーションでの具体的な原材料エンティティに関係するユーザ・インターフェース・ブロック２４２は、その具体的な原材料についてのピック・リストが、「もっとも一般的に使用されている材料をピック・リストの最上部にリストすべきである」、または「その材料についてのもっとも費用対効果の大きい出荷代替案をピック・リストの最上部にリストすべきである」、などと指定することができる。
【００３８】
ルール・ブロック２４４は、妥当性検査ルールや基数ルール（cardinality rule）など、アプリケーションでの１つまたは複数のエンティティに関係する様々なルールをメタデータ・フォーマットで指定することができる。たとえば、ＣＲＭアプリケーションのルール・ブロック２４４は、最初の金額より大きな顧客返金エンティティへのどんな更新も管理者エンティティによって妥当性検査されなければならないと指定することができる。別の例として、人的資源アプリケーションについてルール・ブロック２４４にメタデータ・フォーマットで格納される妥当性検査ルールは、従業員ボーナス・エンティティへのどんな更新も２つの管理者エンティティによって妥当性検査されなければならないと指定することができる。
【００３９】
さらに、エンティティ・メタデータ・モジュール２０２には、目的のアプリケーションのエンティティに関係する様々なオペレーションを記述するオペレーション（operation）ブロック２４６も含めることができる。たとえば、オペレーション・ブロック２４６は、オフライン・プレイバック支援、オフライン取引支援などへの要求事項を含む作成（create）オペレーションを格納することができる。同様に、オペレーション・ブロック２４６は、取り出し（retrieve）オペレーションがオフライン・プレイバック支援やオフライン取引支援などを必要としない、という情報を含む取り出しオペレーションを格納することもできる。
【００４０】
次に図５を参照すると、プログラム２５０は、図３のメタデータ駆動型システムが使用する様々なメタデータ・モジュールを生成する方法を示している。具体的には、プログラム２５０には、既存のアプリケーションに新しいエンティティを追加し、この新しく追加されたエンティティに関係するプロセスを追加するステップが示してある。プログラム２５０は、アプリケーションに追加する必要があるエンティティを、ブロック２５２で受け取ることができる。たとえば、既存アプリケーションがＣＲＭアプリケーションである場合、独立ソフトウェア・ベンダは、顧客の住居情報、すなわち、その顧客が所有者か、または賃貸者かなどを表す住居状況エンティティを追加することに関心を示すことがある。
【００４１】
プログラム２５０は、新しく受け取ったオブジェクト／エンティティを、次にメモリ上に格納することができるように、ブロック２５４で直列化（シリアライズ）する。プログラム２５０は、新しく受け取ったエンティティを、ブロック２５６でエンティティ・メタデータ・モジュール２０４に格納する。プログラム２５０は、この新しく作成された住居状況エンティティを定義する様々なプロパティおよび関係を、エンティティ・メタデータ・モジュール２０４に格納することもできることに留意されたい。たとえば、こうしたプロパティの１つは、住居状況が４つの異なる状況（所有、賃貸、扶養、その他など）のうちの１つだけをとることができることでもよい。同様に、この新しく追加されたエンティティの別のプロパティは、この新しく作成されたエンティティの関係鍵（relational key）でもよい。
【００４２】
続いてブロック２５８で、プログラム２５０は、新しく作成された住居状況エンティティに関係する様々なプロセスを受け取り、直列化する。たとえば、ひとつのこうしたプロセスは、住居状況を更新することでもよい。しかし、住居状況を賃貸から所有に変更する際の、信用状況の見直しの開始や、最初のマーケティング資料一式の生成など、いくつかの異なるルールに基づいて、状況を更新することを他のいくつかのプロセスに結合させることができることもある。エンティティ・メタデータ・モジュール２０２は、こうしたプロセスの影響を受けた他のエンティティの関係性およびプロパティに関する情報をすでに有していることがあるため、アプリケーション全体をコンパイルする必要なしに、こうした新しいプロセスを実装することは容易である。さらに、新しく追加された住居状況エンティティの各プロパティはエンティティ・メタデータ・モジュール２０２に追加されるため、この新しく追加されたエンティティも、その他のプロセスからアクセス可能である。
【００４３】
続いてブロック２６０で、プログラム２５０は、新しく作成されたエンティティに関係するプロセスのいずれかが、作成（create）、読み取り（read）、更新（update）、削除（delete）などの基本プロセスのいずれかを必要とするかどうかを決定する。１つまたは複数のこうした基本プロセスが必要であると決定された場合、ブロック２６０において、プログラム２５０は、こうしたすべての基本プロセスが基本プロセス・メタデータ・モジュール２０６で確実に使用可能になるようにする。１つまたは複数の基本プロセスが基本プロセス・メタデータ・モジュール２０６で使用不可能であると決定された場合、ブロック２６２において、このプログラムは、こうした基本プロセスを要求し、受け取り、基本プロセス・メタデータ・モジュール２０６に格納する。
【００４４】
次に図６を参照すると、プログラム３００は、メタデータ駆動型システム２００を使用する方法を示している。図では、プログラム３００は、挿入要求（insert request）を実行するためにメタデータ駆動型システム２００を使用するステップを示しているだけであるが、他の要求または複雑なプロセスも、メタデータ駆動型システム２００を使用して実装することができる。こうした要求は、プロセス・メタデータ・モジュール２０４を使用して定義されたビジネス・プロセスによって実行することができ、このビジネス・プロセスは、エンティティ・メタデータ・モジュール２０２に格納されているビジネス・エンティティ上で実行すべき作成オペレーションに、ビジネス・エンティティ上の問い合わせを作成するよう要求する。プログラム３００は、基本プロセス・メタデータ・モジュール２０６に格納されている様々な基本プロセスを使用して、ビジネス・プロセスを実行する。プログラム３００は、挿入要求を実行すべきエンティティの様々な拡張部を使用することができ、こうした拡張部も、そのエンティティに関係するエンティティ・メタデータ・モジュール２０２に格納することができる。一般に、エンティティの拡張部は、アプリケーションの設計中に、あるいは、そのアプリケーションの独立ソフトウェア・ベンダまたはユーザによって実装することができる。
【００４５】
ブロック３０２で、プログラム３００は、ＰｒｅＣｒｅａｔｅ要求を、基本プロセス・メタデータ・モジュール２０６に格納されているＶａｌｉｄａｔｅ基本プロセスに送って、作成プロセスが実行されるエンティティ・インスタンスの様々な属性を妥当性検査することができる。
【００４６】
次に、ブロック３０４で、プログラム３００は、別のＰｒｅＣｒｅａｔｅ要求を、基本プロセス・メタデータ・モジュール２０６に記憶されているＩｎｊｅｃｔＤｅｆａｕｌｔｓ基本プロセスに送って、エンティティ・インスタンスの様々な属性についての顧客定義値をセットすることができる。たとえば、住宅状況の既定値は「賃貸」でよく、エンティティ・インスタンスに値が何も割り当てられていない場合、ＩｎｊｅｃｔＤｅｆａｕｌｔｓ基本プロセスはこうした既定値をエンティティ・インスタンスに追加することができる。
【００４７】
続いて、ブロック３０６で、プログラム３００は、ＰｒｅＣｒｅａｔｅ要求を、基本プロセス・メタデータ・モジュール２０６に記憶されているＳｅｃｕｒｉｔｙ基本プロセスに送って、作成プロセスが実行されるエンティティについてのセキュリティ許可を得ることができる。プログラム３００は、エンティティのセキュリティ拡張機能を使用して、ユーザが作成プロセスを実行するための適切な許可を有していることを妥当性検査することができる。
【００４８】
作成プロセスについてのこのケースでは、プログラム３００は単一レベルのセキュリティ検査だけを実行するが、代替ケースでは、２つのレベルのセキュリティ検査を実行することができ、プログラム３００はまず、要求されたプロセスを実行する許可をユーザが有していることを、エンティティによって定義されたインスタンスのクラスと突き合わせて検査し、続いて、エンティティ・インスタンスの特定の検査を実行して、エンティティの特定のインスタンス上で要求されたプロセスを実行する許可をユーザが有しているかどうかを保証することができる。作成プロセスの場合には、エンティティの既存インスタンスはなく、したがって、１つのレベルのセキュリティ検査だけで十分であることに留意されたい。
【００４９】
ブロック３０８で、プログラム３００は、ＢｕｉｌｄＣｒｅａｔｅ要求を、プロセス・メタデータ・モジュール２０４に格納されているＱｕｅｒｙＢｕｉｌｄｅｒプロセスに送って、エンティティのインスタンスを作成することができる。
【００５０】
続いて、ブロック３１０で、プログラム３００は、ＰｏｓｔＣｒｅａｔｅ要求を、基本プロセス・メタデータ・モジュール２０６に格納されたＳｅｃｕｒｉｔｙ基本プロセスに送って、作成プロセスが実行されるエンティティについてのセキュリティ許可を格納することができる。
【００５１】
ブロック３１２で、プログラム３００は、ＰｏｓｔＣｒｅａｔｅ要求を、基本プロセス・メタデータ・モジュール２０６に格納されたＷｏｒｋｆｌｏｗ基本プロセスに送って、様々な顧客定義ビジネス・プロセスが現行オペレーションの範囲外で稼働することができるようにすることができる。Ｗｏｒｋｆｌｏｗ基本プロセスは、アプリケーションの独立ソフトウェア・ベンダまたはユーザが、エンティティを含むシステムに関係するある事象に応答してとるべきビジネスのルール／行動を開発することができるようにする、プロセスの一例である。たとえば、販売員管理システム（sales force management system）のユーザは、新しい販売機会（sales opportunity）または販売要約情報（sales lead）が販売員管理システムに入力されるたびに、電子メールの送信をトリガするワーク・フロー・プロセスを作成することができる。
【００５２】
続いて、ブロック３１４で、プログラム３００は、ＰｏｓｔＣｒｅａｔｅ要求を、基本プロセス・メタデータ・モジュール２０６に格納されたＣａｌｌｏｕｔ基本プロセスに送って、既存のまたは新しいどんなビジネス・ロジックをも実行することができるようにするＣｒｅａｔｅプロセス実行を予約している他のシステムに通知する。
【００５３】
ブロック３１６で、プログラム３００は、ＰｏｓｔＣｒｅａｔｅ要求を、システムの現行接続状況によって必要とされる場合に信頼できる接続が復旧された際に中央サーバにその後のプレイバックのために、基本プロセス・メタデータ・モジュール２０６に格納されたＯｆｆｌｉｎｅ基本プロセスに送って、この要求を格納することができる。ステップ３１６は、中央アプリケーション・サーバへの接続が確立した際にその後にプレイバックするために、接続されていないクライアント上で作成オペレーションが実行されるときに、この要求を格納することを可能にすることに留意されたい。こうした格納オペレーションは、中央アプリケーション・サーバでオペレーションが実行されている場合は必要でないこともある。
【００５４】
頻繁な更新および顧客開拓（custom development）の能力を必要とすることがあるビジネス・アプリケーションのための、前述のメタデータ駆動型システム２００の利点が、当業者には理解されよう。ビジネス・アプリケーションをメタデータ駆動型にすることによって、各顧客対応の後にビジネス・アプリケーションのコンパイルを実行する必要なしに、顧客対応および顧客対応のためのサポートを可能にすることに関して、途方もない価値がもたらされる。具体的には、妥当性検査、許可、持続性などの様々なプロセスをメタデータ駆動型にすることによって、本明細書に記載のメタデータ駆動型システム２００は、ビジネス・アプリケーションの顧客対応を非常に容易にし、したがってビジネス・アプリケーションの開発および保守のコストを低減する。
【００５５】
メタデータ駆動型システム２００は、ビジネス・ロジックを用いる新しいエンティティの内部開発も、より容易にする。いくつかのツールを用いてメタデータを更新することは、ビジネス・アプリケーション用のコードを更新およびコンパイルすること、ならびに更新されたコードを一群のサーバとクライアント上に配置すること、よりもはるかに容易であるため、メタデータ駆動型システム２００によって、ビジネス・アプリケーションへの設計変更をより容易にすることができる。同様に、メタデータを使用してテストを自動化し、テストの結果を所望の結果と比較することは、より容易であるため、ビジネス・アプリケーションの品質保証のための自動化されたテスト・プロセスを、プロセス・メタデータ・モジュール２０４に容易に追加することができる。
【００５６】
先に、本発明の数多くの異なる実施形態を詳細に説明しているが、本発明の範囲は特許請求の範囲の語句によって定義されることを理解されたい。詳細な記述は、単に例示的なものに過ぎないと解釈すべきであり、考え得るあらゆる実施形態を記述することは、不可能ではないにしても非現実的であるため、本発明の考え得るあらゆる実施形態を記述していない。現在の技術または本発明の出願日の後に開発される技術を使用することによって、数多くの代替実施形態を実装することも可能であり、これらは、依然として本発明を定義する特許請求の範囲内に入ることになる。
したがって、本発明の趣旨および範囲を逸脱することなく、本明細書で説明し図示している各技法および各構造において多くの変更形態および変形形態を作ることができる。したがって、本明細書に記載の各方法および各装置は、単に例示的なものに過ぎず、本発明の範囲を限定するものではないことを理解されたい。
【図面の簡単な説明】
【００５７】
【図１】複数のコンピューティング資源を相互接続するネットワークのブロック図である。
【図２】図１のネットワークに接続することができるコンピュータのブロック図である。
【図３】図１のネットワーク上のアプリケーションを管理するために使用することができるメタデータ駆動型システムのブロック図である。
【図４】図３のメタデータ駆動型システムによって使用することができるエンティティ・メタデータ・モジュールのブロック図である。
【図５】図３のメタデータ駆動型システムによって使用されるメタデータ・モジュールを生成するフローチャートである。
【図６】図３のメタデータ駆動型システムを使用するフローチャートである。
【符号の説明】
【００５８】
１０    ネットワーク
１２    パーソナル・コンピュータ
１４    コンピュータ端末
１６    イーサネット（登録商標）
１８    ルータ
２０    地上の通信線
２２    ラップトップ・コンピュータ
２４    携帯型情報端末
２６    無線通信局
２８    無線リンク
３０    サーバ
３２    通信リンク
３４    メインフレーム
３６    別の通信リンク
１１０    コンピュータ
１２０    処理ユニット
１２１    システム・バス
１３０    システム・メモリ
１３１    （ＲＯＭ）
１３２    （ＲＡＭ）
１３３    ＢＩＯＳ
１３４    オペレーティング・システム
１３５    アプリケーション・プログラム
１３６    他のプログラム・モジュール
１３７    プログラム・データ
１４０    取り外し不能不揮発性メモリ・インターフェース
１４１    ハードディスク・ドライブ
１４２    オペレーティング・システム
１４５    アプリケーション・プログラム
１４６    他のプログラム・モジュール
１４７    プログラム・データ
１５０    取り外し可能不揮発性メモリ・インターフェース
１５１    磁気ディスク・ドライブ
１５２    不揮発性磁気ディスク
１５５    光ディスク・ドライブ
１５６    不揮発性光ディスク
１６０    ユーザ入力インターフェース
１６１    マウス
１６２    キーボード
１７０    ネットワーク・インターフェース
１７１    ローカル・エリア・ネットワーク
１７２    モデム
１７３    広域ネットワーク
１８０    リモート・コンピュータ
１８１    メモリ記憶デバイス
１８５    リモート・アプリケーション・プログラム
１９０    ビデオ・インターフェース
１９１    モニタ
１９５    出力周辺インターフェース
１９６    プリンタ
１９７    スピーカ
２００    メタデータ駆動型システム
２０２    エンティティ・メタデータ・モジュール
２０４    プロセス・メタデータ・モジュール
２０６    基本プロセス・メタデータ・モジュール
２０８    直列化モジュール
２１０    直列化解除モジュール
２１２    サーバ・データベース
２１４    リモート・データベース
２１６    グラフィカル・ユーザ・インターフェース（ＧＵＩ）
２１８    ブラウザ
【図１】
2006190279.tif 000003
【図２】
2006190279.tif 000004
【図３】
2006190279.tif 000005
【図４】
2006190279.tif 000006
【図５】
2006190279.tif 000007
【図６】
2006190279.tif 000008