フレームワークにビジネスロジックを実装する方法であって、ビジネスエンティティに関連付けられたイベントを自動的にインターセプトすること、前記イベントおよびビジネスロジックに基づいて結果を計算するために前記イベントがインターセプトされると前記ビジネスロジックの実装をインスタンス化すること、および前記結果を前記フレームワーク内のプロパティにバインドすることを含むことを特徴とする方法。前記ビジネスエンティティに関連付けるべき前記ビジネスロジックの実装を宣言することをさらに含むことを特徴とする請求項1に記載の方法。前記イベントは前記ビジネスエンティティの作成であることを特徴とする請求項1または2に記載の方法。前記イベントは前記ビジネスエンティティの更新であることを特徴とする請求項1または2に記載の方法。前記イベントは前記ビジネスエンティティを読み取ることを含むことを特徴とする請求項1または2に記載の方法。前記イベントは前記ビジネスエンティティの削除であることを特徴とする請求項1または2に記載の方法。前記ビジネスエンティティはビジネスエンティティプロパティを含み、前記イベントは前記ビジネスエンティティプロパティを変更することであることを特徴とする請求項1または2に記載の方法。前記ビジネスエンティティは前記プロパティを含むことを特徴とする請求項1乃至7のいずれかに記載の方法。第2のビジネスエンティティは前記プロパティを含むことを特徴とする請求項1乃至7のいずれかに記載の方法。請求項1乃至9のいずれかに記載の方法を実行するように構成されていることを特徴とするコンピュータ可読媒体。情報を管理し、格納するためのシステムであって、格納されている情報に関連付けられたプロパティを含むビジネスエンティティモジュールと、前記ビジネスエンティティモジュールに関連付けられ、前記プロパティに関連付けられたロールを含み、前記関連するビジネスエンティティのイベントにビジネスロジックを実装して前記ビジネスロジックのイベントに基づいて結果を計算するように構成されているコラボレーションモジュールとを含むことを特徴とするシステム。前記ロールは前記ロールを前記プロパティにバインドするための情報をさらに含むことを特徴とする請求項11に記載のシステム。前記ビジネスエンティティモジュールが前記コラボレーションモジュールとは別個のものであることを特徴とする請求項11または12に記載のシステム。プロパティを含み、前記コラボレーションモジュールをインスタンス化してロールを該プロパティに関連付けるように構成されている第2のビジネスエンティティモジュールをさらに含むことを特徴とする請求項11乃至13のいずれかに記載のシステム。前記イベントは前記ビジネスエンティティモジュールの作成であることを特徴とする請求項11乃至14のいずれかに記載のシステム。前記イベントは前記ビジネスエンティティモジュールの更新であることを特徴とする請求項11乃至14のいずれかに記載のシステム。前記イベントは前記ビジネスエンティティモジュールを読み取ることを含むことを特徴とする請求項11乃至14のいずれかに記載のシステム。前記イベントは前記プロパティを変更することであることを特徴とする請求項11乃至14のいずれかに記載のシステム。前記コラボレーションモジュールは、前記結果を前記プロパティにバインドするようにさらに構成されていることを特徴とする請求項11乃至18のいずれかに記載のシステム。前記コラボレーションモジュールは前記結果を第2のプロパティにバインドするようにさらに構成されていることを特徴とする請求項11乃至19のいずれかに記載のシステム。前記第2のプロパティは前記ビジネスエンティティモジュールに含まれることを特徴とする請求項20に記載のシステム。前記第2のプロパティは第2のビジネスエンティティモジュール内に含まれることを特徴とする請求項20に記載のシステム。クラスは、情報の格納には非常に役立つが、機能は限られている。場合によって、同じまたは似たコードがアプリケーションの複数の場所に実装されており、クラスに対して様々な操作を行うことがある。こうした複数の実装では、エラーになりやすく、開発するのにかなりの時間および費用がかかる。さらに、他の状況に容易に適合できない実装もあり、こうした実装のために規模の経済および許容可能な製品のサポートを達成するのが困難となる。その結果、ビジネスアプリケーション開発者の負担を低減するために、異なる状況に適応可能なビジネスロジックのフレキシブルなアプリケーションが望まれている。本発明は、ビジネスアプリケーションにビジネスロジックをフレキシブルに実装できるようにする。ビジネスアプリケーション向けのカスタマイズされたソリューションが開発しやすいように、一般的な再利用可能なビジネスロジックを実装する。様々なロジックの実装にビジネスエンティティのプロパティをバインドすることを使用して、ビジネスロジックを再利用する。パラメータは、コラボレーションおよびコラボレーションロールと呼ばれるビジネスロジックの実装の挙動を制御するメタデータ内でセットアップすることができる。本発明は、コンピュータソフトウェアにおけるビジネスロジックの実装に関する。本明細書では、ビジネスオブジェクトにわたるビジネスロジックの実装に関連して説明するが、本発明は、一般にオブジェクトのプロパティを複数横断する他のタイプのロジックに適用することもできる。しかし、本発明をより詳しく説明する前に、本発明を使用できる環境例の一実施形態について説明する。図1は、本発明を実施できる、適したコンピューティングシステム環境100の例を示している。コンピューティングシステム環境100は、適したコンピューティング環境の一例にすぎず、本発明の使用または機能の範囲に関する限定を示唆するものではない。また、コンピューティング環境100を、コンピューティング環境100の例に示した構成要素のいずれか1つ、またはその組合せに関連する依存性または必要条件を有しているものと解釈すべきではない。本発明は、他の多くの汎用または専用コンピューティングシステム環境または構成で動作可能である。本発明との使用に適したよく知られているコンピューティングシステム、環境、および/または構成の例には、それだけには限定されないが、パーソナルコンピュータ、サーバーコンピュータ、ハンドヘルドまたはラップトップ装置、マルチプロセッサシステム、マイクロプロセッサベースのシステム、セットトップボックス、プログラム可能家庭用電化製品、ネットワークPC、ミニコンピュータ、メインフレームコンピュータ、上記の任意のシステムまたは装置を含む分散コンピューティング環境などがある。本発明は、コンピュータによって実行されるプログラムモジュールなどのコンピュータ実行可能命令の一般的なコンテキストで説明することができる。一般にプログラムモジュールは、特定のタスクを実行する、または特定の抽象データ型を実装するルーチン、プログラム、オブジェクト、構成要素、データ構造などを含む。また、本発明は、タスクが通信ネットワークによってリンクされているリモート処理装置によって実行される分散コンピューティング環境で実施するように設計されている。分散コンピューティング環境では、プログラムモジュールを、メモリ記憶装置を含むローカルおよびリモートのコンピュータ記憶媒体に置くことができる。図1を参照すると、本発明を実施するシステムの例は、汎用コンピューティング装置をコンピュータ110の形で含んでいる。コンピュータ110の構成要素は、それだけには限定されないが、処理ユニット120、システムメモリ130、およびシステムメモリを含む様々なシステム構成要素を処理ユニット120に結合するシステムバス121を含む。システムバス121は、様々なバスアーキテクチャのうちの任意のものを使用するメモリバスまたはメモリコントローラ、周辺バス、およびローカルバスを含むいくつかのタイプのバス構造のうちどんなものでもよい。こうしたアーキテクチャには、それだけには限定されないが一例として、ISAindustrystandardarchitectureバス、MCAmicrochannelarchitectureバス、EISAenhancedISAバス、VESAvideoelectronicsstandardsassociationローカルバス、およびメザニンバスとしても知られているPCIperipheralcomponentinterconnectバスなどがある。コンピュータ110は、一般に様々なコンピュータ可読媒体を含む。コンピュータ可読媒体は、コンピュータ110からアクセスできる使用可能な任意の媒体とすることができ、揮発性および不揮発性媒体、リムーバブルおよび非リムーバブル媒体を含む。コンピュータ可読媒体は、それだけには限定されないが一例として、コンピュータ記憶媒体および通信媒体を含み得る。コンピュータ記憶媒体には、コンピュータ可読命令、データ構造、プログラムモジュール、他のデータなど、情報を記憶するための任意の方法または技術で実施される揮発性および不揮発性のリムーバブルおよび非リムーバブル媒体がある。コンピュータ記憶媒体には、それだけには限定されないが、RAM、ROM、EEPROM、フラッシュメモリまたは他のメモリ技術、CD-ROM、デジタル多用途ディスクDVDまたは他の光ディスク記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置または他の磁気記憶装置、または所望の情報の格納に使用でき、コンピュータ110からアクセスできる他の任意の媒体などがある。通信媒体は一般に、コンピュータ可読命令、データ構造、プログラムモジュール、または他のデータを搬送波または他の移送機構などの変調されたデータ信号に組み込む。これには任意の情報配送媒体がある。変調されたデータ信号という用語は、信号内の情報を符号化するように設定または変更された1つまたは複数のその特徴を有する信号を意味する。通信媒体には、それだけには限定されないが一例として、有線ネットワーク、直接配線された接続などの有線媒体、および音響、RF、赤外線、その他の無線媒体などの無線媒体がある。また、上記のどんな組合せでもコンピュータ可読媒体の範囲内に含まれるものとする。システムメモリ130は、読取り専用メモリROM131やランダムアクセスメモリRAM132など、揮発性および/または不揮発性メモリの形態のコンピュータ記憶媒体を含む。BIOSbasicinput/output133は、例えば起動中など、コンピュータ110内の要素間での情報の転送を助ける基本ルーチンを含み、一般にROM131に格納されている。RAM132は一般に、処理ユニット120から直接アクセス可能な、かつ/または処理ユニット120が現在処理しているデータおよび/またはプログラムモジュールを含む。図1は、それだけには限定されないが一例として、オペレーティングシステム134、アプリケーションプログラム135、他のプログラムモジュール136、およびプログラムデータ137を示している。コンピュータ110は、他のリムーバブル/非リムーバブル、揮発性/不揮発性コンピュータ記憶媒体を含むこともできる。一例にすぎないが、図1は、非リムーバブル不揮発性磁気媒体から読み取り、あるいはそこに書き込むハードディスクドライブ141、リムーバブル不揮発性磁気ディスク152から読み取り、あるいはそこに書き込む磁気ディスクドライブ151、およびCD-ROMや他の光媒体など、リムーバブル不揮発性光ディスク156から読み取り、あるいはそこに書き込む光ディスクドライブ155を示している。動作環境の例で使用できる他のリムーバブル/非リムーバブル、揮発性/不揮発性コンピュータ記憶媒体には、それだけには限定されないが、磁気テープカセット、フラッシュメモリカード、デジタル多用途ディスク、デジタルビデオテープ、半導体RAM、半導体ROMなどがある。ハードディスクドライブ141は一般に、インターフェイス140などの非リムーバブル不揮発性メモリインターフェイスを介してシステムバス121に接続され、磁気ディスクドライブ151および光ディスクドライブ155は一般に、インターフェイス150などのリムーバブル不揮発性メモリインターフェイスによってシステムバス121に接続される。上述し、図1に示したドライブおよびその関連のコンピュータ記憶媒体は、コンピュータ可読命令、データ構造、プログラムモジュール、およびコンピュータ110の他のデータの記憶を提供する。図1では例えば、ハードディスクドライブ141は、オペレーティングシステム144、アプリケーションプログラム145、他のプログラムモジュール146、およびプログラムデータ147を記憶するものとして示されている。これらの構成要素は、オペレーティングシステム134、アプリケーションプログラム135、他のプログラムモジュール136、およびプログラムデータ137と同じであっても、異なっていてもよいことに注意されたい。オペレーティングシステム144、アプリケーションプログラム145、他のプログラムモジュール146、およびプログラムデータ147は少なくとも異なるコピーであることを示すために、ここではそれらに異なる番号を付している。ユーザは、キーボード162、マイクロフォン163、および一般にマウス、トラックボール、タッチパッドなどのポインティング装置161などの入力装置を介してコマンドおよび情報をコンピュータ110に入力することができる。他の入力装置図示せずには、ジョイスティック、ゲームパッド、衛星パラボラアンテナ、スキャナなどがある。これらおよび他の入力装置は、しばしばシステムバスに結合されているユーザ入力インターフェイス160を介して処理ユニット120に接続されるが、パラレルポート、ゲームポート、ユニバーサルシリアルバスUSBなど他のインターフェイスおよびバス構造で接続してもよい。モニタ191または他のタイプの表示装置もまた、ビデオインターフェイス190などのインターフェイスを介してシステムバス121に接続される。モニタに加えて、コンピュータは、出力周辺インターフェイス195などを介して接続できるスピーカー197、プリンタ196などの他の周辺出力装置を含むこともできる。コンピュータ110は、リモートコンピュータ180など1つまたは複数のリモートコンピュータへの論理接続を使用してネットワーク式環境で操作される。リモートコンピュータ180は、パーソナルコンピュータ、ハンドヘルド装置、サーバー、ルーター、ネットワークPC、ピア装置、または他の一般のネットワークノードでよく、一般にコンピュータ110に関連して上述した多くまたはすべての要素を含む。図1に示した論理接続は、ローカルエリアネットワークLAN171およびワイドエリアネットワークWAN173を含むが、他のネットワークを含んでいてもよい。こうしたネットワーキング環境は、オフィス、全社規模のコンピュータネットワーク、イントラネット、およびインターネットではごく一般的である。LANネットワーキング環境で使用する場合、コンピュータ110は、ネットワークインターフェイスまたはアダプタ170を介してLAN171に接続される。WANネットワーキング環境で使用する場合、コンピュータ110は一般に、モデム172、またはインターネットなどWAN173を介して通信を確立する他の手段を含む。モデム172は、内蔵のものでも外付けのものでもよく、ユーザ入力インターフェイス160または他の適切な機構を介してシステムバス121に接続することができる。ネットワーク式環境では、コンピュータ110に関連して示したプログラムモジュール、またはその一部をリモートメモリ記憶装置に格納することができる。図1は、それだけには限定されないが一例として、リモートアプリケーションプログラム185をメモリコンピュータ180上に存在するものとして示している。図示したネットワーク接続は例であり、コンピュータ間の通信リンクを確立する他の手段を使用してもよいことは理解されよう。図2は、オブジェクトリレーショナルまたはエンティティリレーショナルデータ記憶システムを示す図である。本発明では、エンティティは、オブジェクトという用語と同義の用語として使用される。E-Rシステム200は、リレーショナルデータベース204に格納されているデータに対応する1組のエンティティまたはオブジェクト202を含む。エンティティは、エンティティリレーショナルERマップ208を使用するデータアクセスシステム206を介してリレーショナルデータにアクセスする。ERマップ208は、エンティティ202とリレーショナルデータベース204内のテーブルエンティティとの間のマッピングを含む。本発明は、E-Rシステム以外の他のシステムにおいても使用可能であり、図2に示すシステムは、本発明を使用できるシステムの一例にすぎないことに注意されたい。図3は、本発明の一実施形態によるビジネスコラボレーションフレームワークbusinesscollaborationframework220の統一モデリング言語UMLクラスの図である。フレームワーク220は、1つまたは複数のビジネスオブジェクト222を含む。ビジネスオブジェクト222は、オブジェクト222の様々なデータ要素を定義する静的モデルを含む。例えば、販売注文用のビジネスオブジェクトは、顧客名、出荷先住所、商品説明、価格など、様々なデータ要素を含むことができる。一実施形態では、ビジネスオブジェクト222は、ビジネスオブジェクト222から導出される他のオブジェクトの代わりにロジックを実装する基本クラスである。ビジネスオブジェクト222は、1つまたは複数のコラボレーション224、1つまたは複数のロール226、および1つまたは複数のプロパティ228に関連付けられる。フレームワーク220を使用すると、ビジネスロジックパターン本明細書ではコラボレーションおよびロールの実装は、パラメータ化され、異なるビジネスオブジェクトにわたって再利用可能である。パラメータ化とは、コラボレーションおよびコラボレーションロールの挙動を制御するパラメータをメタデータ内でセットアップする機能を指す。例えば、番号順ロールの場合、メタデータを使用して、シーケンスから取り出される任意の数が連続すべきであることを定義することができる。各コラボレーションロールは、どのメタデータをコラボレーション/コラボレーションロールに設定できるかを定義するスキーマを有することができる。後述するように、このメタデータは、プロパティとコラボレーションロールとjの間のバインド情報を指定するメタデータの他に追加してもよい。コラボレーション224は、ビジネスアプリケーションの異なるビジネスオブジェクトによって再利用可能であり、これによって設計者は、ビジネスオブジェクト222内の様々なプロパティプロパティ228などの挙動を設定することができる。コラボレーション224は、ビジネスロジックパターン、1組のロールロール226など、ならびに各ロールの基数その組の中の要素の数、および各ロールが同じまたは異なるビジネスエンティティの他のロールとどのように対話するかを管理するルールを含む。コラボレーション224は、関連するインターフェイス230を含み、これによってビジネスアプリケーションにおいてコラボレーションが定義され、他のコラボレーションおよびロールとの対話が可能になる。ロール226は、ビジネスオブジェクト222内の個々のプロパティ例えばフィールドまたはオブジェクトと関連する、あるいは複数のビジネスオブジェクトと関連するオブジェクトである。ロール226は、他のコラボレーションおよび/または他のロールと対話するために、ロール226にバインドされたプロパティの挙動を制御するためのビジネスロジックを含む。さらに、ロール226は、外部または内部フィールドを含む。外部フィールドは、他のロールまたは他のビジネスソフトウェアと通信するときに使用される。外部フィールドでは、ロールは、プロパティのインターセプトを制御し、ロールをビジネスオブジェクト222の静的モデル内のデータにバインドするロジックを含む。これについては後述する。内部フィールドは、特定のロール内でのみ使用され、特定のロールを介してのみアクセスされる。ロール226は、ロールを定義する、関連するインターフェイス232も含む。ロール226は、関連するロールオンプロパティサブクラス234および/または関連するロールオンコラボレーションサブクラス236をさらに有することができる。ロールオンプロパティ234は、ビジネスオブジェクト222の静的モデルのプロパティまたはフィールドに関する、ビジネスアプリケーションで起こるイベントのプロパティをインターセプトするために使用される。ロールオンコラボレーションサブクラス236によって、ロール226は、他のコラボレーションと対話して、例えば他のコラボレーションからのイベントをインターセプトすることができる。フレーム220は、関連するメタデータインターフェイス238も含む。メタデータインターフェイス238は、ロールによって定義されている挙動が与えられると、フレームワーク220によって、格納されているデータと対話するために使用される。特に、インターフェイス238によって、格納されているデータを、ロールによって定義されたように、ビジネスオブジェクト222の静的モデルで定義されたプロパティにバインドすることができる。コラボレーションが定義されると、ビジネスオブジェクトのプロパティがコラボレーションロールにバインドされる。このバインド情報は、適切なメタデータストアに格納される。フレームワーク220内で起こる様々なイベントによって、少なくとも1つのコラボレーションおよびその関連するロールの実装が引き起こされる。こうしたイベントには、ビジネスエンティティの作成、更新、読取り、削除、ビジネスエンティティ内のプロパティの変更、ないしは改変などがある。例えば、販売注文を作成すると、簡単な番号ジェネレータコラボレーションがトリガまたはインスタンス化されてシーケンスに新しい販売注文番号を作成することができる。図4は、ビジネスコラボレーションを用いるアプリケーションを開発するときにアプリケーション開発者240によって実行されるタスクの例を示す概略図である。これらのタスクは、ビジネスオブジェクトのプロパティの静的モデルが定義された後で行うことができる。アプリケーション開発者240が実装するタスクは、コラボレーションの定義タスク242、ロールの定義タスク244を含む。ロールの定義タスク244は、コラボレーションへのロールの定義タスク248、フィールドへのロールの定義タスク250、ロールをフィールドとする定義タスク252、およびロールを可視インターフェイスとする定義246を使用することを含む。図5は、コラボレーションをビジネスエンティティにバインドするメタデータを設定するコラボレーションを定義するためのタスク242を完了するステップを示している。ステップ260で、ビジネスソリューションの実装に応じてコラボレーションタイプを決定する。例えば開発者240は、moneyコラボレーションを選択して、ある金額をある通貨から別の通貨に変換する、または通貨総額aggregatecurrencyを選択してあるフィールドの複数のインスタンスを計算するすなわち販売注文の明細の集計にわたって価格を追加することができる。ステップ262で、コラボレーションをそのコラボレーションを制御するエンティティ上に作成する。つまりコラボレーションは、エンティティのメタデータ内に作成される。例えば、コラボレーションは、特定のビジネスオブジェクトに関連付けられ、それに関連して作成される。ステップ264で、コラボレーションを適切に識別するために、コラボレーションに名前を付ける。コラボレーションに名前が付けられると、次いでステップ266で、アプリケーション開発者は、そのコラボレーションに対するロールを定義することができる。このステップは、タスク244を実施することによって行なわれる。後でロールを使用して、他のエンティティ内のオブジェクトをロールにバインドすることができる。各ロールが定義された後、ステップ268で、ビジネスエンティティにおけるモデルが有効になる。コラボレーションを使用してモデルがいったん有効になると、ステップ270でこのコラボレーションを保存する。タスク248、250、および252を使用してロールを定義することができる。図6は、ロールをフィールドとして定義するタスク252を完了するステップを示す。タスク252を使用して、ビジネスオブジェクト内のフィールドとして働くようにロールを定義する。タスクはステップ280で開始し、ここでロールタイプを設定する。ロールタイプは、日付、整数、小数、オブジェクトなど、またはユーザ定義タイプを組み込むことができる。ステップ282で、ロールタイプをフィールドとしてビジネスエンティティに追加する。したがってロールは、ビジネスエンティティのプロパティオブジェクトとして定義される。ステップ284で、ロールを適切に識別するために、ロールに名前を付ける。次に、ステップ286で、ロールを適切なコラボレーションに関連付ける。図7は、フィールドにロールを定義するタスク250を完了するステップを示す。タスク250を使用して、ビジネスオブジェクトに存在するフィールドの挙動を定義する。ステップ290で、ロールタイプを設定する。ステップ292で、ロールタイプをそのロールのデータを保持するフィールドに接続する。次に、ステップ294で、ロールをコラボレーションに関連付ける。図8は、コラボレーションにロールを定義するタスク248を完了するステップを示す。タスク248を使用して、別のコラボレーションに関連するロールを実装する。ステップ300で、ロールタイプを設定する。ステップ302で、ロールタイプをロールのソースを保持するコラボレーションに接続する。ステップ304で、ロールをコラボレーションに関連付ける。図9は、ビジネスアプリケーション内のコードからアクセスできるようにロールを可視インターフェイスとして定義するタスク246を示す。タスク246は、タスク248および250のサブタスクである。ステップ310で、可視にすべきロールを選択する。ステップ312で、ロールを表示するために、プロパティ可視フラグをtrueに設定する。図10は、コラボレーションの例および関連するロールの表を示す。Moneyコラボレーション320は、通貨間で金額を変換するために使用される。このコラボレーションは、例えば取引通貨が会計帳簿に入力された現地通貨とは異なる販売注文の金額を更新するときに役立つ。会計通貨とは異なる取引通貨が入力されると、取引通貨額が自動的に変換され、会計帳簿が会計通貨値で更新される。Moneyコラボレーション320は、通貨コードロール322、日付ロール324、取引通貨額ロールAmountTCYロール326、現地または会計通貨額ロールAmountLCYロール327、および為替レートロール328を含む。Moneyコラボレーションの実装では、デフォルトの通貨すなわち会計通貨を仮定する。為替レートロール328は、アプリケーション開発者から可視である必要はなく、また、個別のロールを必要とせずに、Moneyコラボレーション320自体のビジネスロジックに含めることもできることは注目に値する。表330は、Moneyコラボレーション320におけるロールの定義を含む。表330の行は、ロールに関する情報を表し、列はロールの特定の特徴に関する情報、すなわちロール名、バインド、基数、およびタイプを表す。通貨コードロール322は、外部フィールドしたがってそのバインドは外部であり、文字列である。通貨コードロール322の基数は1である。これは、Moneyコラボレーション320では常に唯一のコードロールが存在することを意味する。日付ロール324は、外部フィールドで、日付であり、その基数は0または1のいずれかである0..1で示す。AmountTCYロール326およびAmountLCYロール327は外部フィールドで、小数であり、任意の数の個々のロールを含むことができるで示す。為替レートロール328は、外部フィールドで、小数であり、その基数は0または1である。図11は、通貨間で金額を変換する実装例を示す。この例では、現地通貨がわかっていると仮定する。SomeBusinessClass350で示したビジネスエンティティがビジネスアプリケーションで定義されている。例えば、SomeBusinessClass350は、取引通貨と現地通貨との間の変換を含む販売注文とすることができる。SomeBusinessClass350は、CurrencyCode取引通貨コード352、AmountLCY現地または会計通貨額354、およびAmountTCY取引通貨額356の3つのフィールドを含む。必要に応じて、クラス350は、ExchangeRateフィールド358を含むこともできる。Moneyコラボレーション360は、CCDRole362、LCYRole364、TCYRole366、およびEXRRole368のロールを含む。コラボレーション360を実装すると、CCDRole362がCurrencyCodeフィールド352にバインドされ、LCYRole364がAmountLCYフィールド354にバインドされ、TCYRole366がAmountTCYフィールド356にバインドされる。ExchangeRateフィールド358を使用している場合、EXRRole368がそれにバインドされる。メタデータ構造370は、ロールをそれぞれのフィールドにバインドするバインド情報を含む。例えば、メタデータ構造370内の情報MoneyCollaboration.CCDRoleおよびSomeBusinessClass.CurrencyCodeによってこのバインドが提供される。SomeBusinessClassをインスタンス化する例えば新しい販売注文が要求されると、メタデータは、これらのフィールドにバインドされ、Moneyコラボレーション360がインスタンス化される。図12は、本発明の一実施形態によるMoneyコラボレーション360を使用した取引通貨額の更新の方法400を示す。ステップ402で、ユーザがCurrencyCodeフィールド352を更新する。ステップ404で、更新をインターセプトされ、CCDRole362に適用する。通貨コードのフィールドが更新されるといつでもインターセプトが行われる。次いで、ステップ406で、更新された通貨コードは、EXRRole368に委任され、そこで為替レートを計算し、ExchangeRateフィールド358を更新する。次にステップ408で、ユーザがAmountLCYフィールド354に金額を入力する。再度、この更新によってインターセプトが引き起こされる。ステップ410で、新しい金額を更新し、Moneyコラボレーション360に委任し、ここで為替レートおよび現地通貨額に基づいて対象の通貨値を新たに計算する。次いでステップ412でAmountTCYフィールド356を更新する。コラボレーションは、いくつかのエンティティにわたって定義してもよく、また他のコラボレーションと対話することもできることに注意されたい。図13は、コラボレーションが複数のエンティティにわたって使用される環境の例を示す。請求書エンティティ420、支払いエンティティ422、および顧客エンティティ424を示している。Applyコラボレーションは、支払い、請求書、および残高のロールを含む。請求書ロールは、請求書エンティティを使用して正確な請求書を顧客に送信できるようにするために、支払いに関する情報を含んでいる。同様に、顧客エンティティは、残高ロールを使用して顧客の請求書値および支払い値を計算して適切な残高を決定する。図14は、いくつかのコラボレーションが相互に作用する環境を示す。Moneyコラボレーション440、Moneyamountコラボレーション442、Applyコラボレーション444、およびAggregationコラボレーション446を示している。Moneyamountコラボレーション442は、ビジネスアプリケーションの値を計算するために、Moneyコラボレーション440、Applyコラボレーション444、およびAggregationコラボレーション446からの値を使用する。また、Moneyコラボレーション440の金額ロールがMoneyamountコラボレーション442の挙動を定義するMoneyamountコラボレーション442も示されている。ビジネスエンティティと関連付けられたコラボレーションおよびロールを実装することによって、一般のビジネスロジックを様々な状況において再利用することができる。ロールは、ビジネスオブジェクトのプロパティが更新されると、プロパティのビジネスロジックを実行するように、メタデータのインスタンスにバインドされる。したがって、ビジネスアプリケーションを通じてビジネスロジックのこうしたインスタンスを再生する必要がなく、時間および開発コストが節約される。本発明は、特定の実施形態に関連して説明してきたが、本発明の意図および範囲から逸脱することなく形態および詳細に変更を加えることができることを当業者であれば理解されよう。