(57)【要約】【課題】  ビジネスアプリケーションにビジネスロジックをフレキシブルに実装できるようにすること。【解決手段】  ビジネスアプリケーション向けのカスタマイズされたソリューションが開発しやすいように、一般的な再利用可能なビジネスロジックを実装する。様々なロジックの実装にビジネスエンティティのプロパティをバインドすることを使用して、ビジネスロジックを再利用する。パラメータは、ビジネスロジックの実装の挙動を制御するメタデータ内でセットアップすることができる。【選択図】  図３
2004280822.tif 000002
【特許請求の範囲】
【請求項１】
フレームワークにビジネスロジックを実装する方法であって、
ビジネスエンティティに関連付けられたイベントを自動的にインターセプトすること、
前記イベントおよびビジネスロジックに基づいて結果を計算するために前記イベントがインターセプトされると前記ビジネスロジックの実装をインスタンス化すること、および
前記結果を前記フレームワーク内のプロパティにバインドすること
を含むことを特徴とする方法。
【請求項２】
前記ビジネスエンティティに関連付けるべき前記ビジネスロジックの実装を宣言することをさらに含むことを特徴とする請求項１に記載の方法。
【請求項３】
前記イベントは前記ビジネスエンティティの作成であることを特徴とする請求項１または２に記載の方法。
【請求項４】
前記イベントは前記ビジネスエンティティの更新であることを特徴とする請求項１または２に記載の方法。
【請求項５】
前記イベントは前記ビジネスエンティティを読み取ることを含むことを特徴とする請求項１または２に記載の方法。
【請求項６】
前記イベントは前記ビジネスエンティティの削除であることを特徴とする請求項１または２に記載の方法。
【請求項７】
前記ビジネスエンティティはビジネスエンティティプロパティを含み、前記イベントは前記ビジネスエンティティプロパティを変更することであることを特徴とする請求項１または２に記載の方法。
【請求項８】
前記ビジネスエンティティは前記プロパティを含むことを特徴とする請求項１乃至７のいずれかに記載の方法。
【請求項９】
第２のビジネスエンティティは前記プロパティを含むことを特徴とする請求項１乃至７のいずれかに記載の方法。
【請求項１０】
請求項１乃至９のいずれかに記載の方法を実行するように構成されていることを特徴とするコンピュータ可読媒体。
【請求項１１】
情報を管理し、格納するためのシステムであって、
格納されている情報に関連付けられたプロパティを含むビジネスエンティティモジュールと、
前記ビジネスエンティティモジュールに関連付けられ、前記プロパティに関連付けられたロールを含み、前記関連するビジネスエンティティのイベントにビジネスロジックを実装して前記ビジネスロジックのイベントに基づいて結果を計算するように構成されているコラボレーションモジュールと
を含むことを特徴とするシステム。
【請求項１２】
前記ロールは前記ロールを前記プロパティにバインドするための情報をさらに含むことを特徴とする請求項１１に記載のシステム。
【請求項１３】
前記ビジネスエンティティモジュールが前記コラボレーションモジュールとは別個のものであることを特徴とする請求項１１または１２に記載のシステム。
【請求項１４】
プロパティを含み、前記コラボレーションモジュールをインスタンス化してロールを該プロパティに関連付けるように構成されている第２のビジネスエンティティモジュールをさらに含むことを特徴とする請求項１１乃至１３のいずれかに記載のシステム。
【請求項１５】
前記イベントは前記ビジネスエンティティモジュールの作成であることを特徴とする請求項１１乃至１４のいずれかに記載のシステム。
【請求項１６】
前記イベントは前記ビジネスエンティティモジュールの更新であることを特徴とする請求項１１乃至１４のいずれかに記載のシステム。
【請求項１７】
前記イベントは前記ビジネスエンティティモジュールを読み取ることを含むことを特徴とする請求項１１乃至１４のいずれかに記載のシステム。
【請求項１８】
前記イベントは前記プロパティを変更することであることを特徴とする請求項１１乃至１４のいずれかに記載のシステム。
【請求項１９】
前記コラボレーションモジュールは、前記結果を前記プロパティにバインドするようにさらに構成されていることを特徴とする請求項１１乃至１８のいずれかに記載のシステム。
【請求項２０】
前記コラボレーションモジュールは前記結果を第２のプロパティにバインドするようにさらに構成されていることを特徴とする請求項１１乃至１９のいずれかに記載のシステム。
【請求項２１】
前記第２のプロパティは前記ビジネスエンティティモジュールに含まれることを特徴とする請求項２０に記載のシステム。
【請求項２２】
前記第２のプロパティは第２のビジネスエンティティモジュール内に含まれることを特徴とする請求項２０に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ソースコードを使用してユーザが望むアプリケーションおよびプログラムを実装するコンピューティング環境に関する。より詳細には、本発明は、アプリケーションまたはコンピュータプログラムにロジックをフレキシブルに実装できるようにするフレームワークに関する。
【背景技術】
【０００２】
企業では一般に、決算、給与計算、人事、販売注文、従業員の追跡調査、顧客関係の追跡調査など、企業運営を制御し、分析する様々な機構を使用している。こうした機能を提供するツールは、コンピュータソフトウェアを使用して実施されることが多い。ソフトウェアパッケージは、ユーザが様々な企業運営に対応するデータを容易に入力し、表示できるようにするために、ユーザインターフェイスを提供することができる。また、ソフトウェアパッケージは、データベースに格納されているデータにアクセスし、それを更新するように構成されている。
【０００３】
ビジネスアプリケーションは、注文処理および出荷など様々なビジネスイベントを扱うように設計されている。ビジネスアプリケーションは、コードを使用して実施されるアプリケーション機能を含んでいる。ビジネスアプリケーションは、コードに加えて、ビジネスアプリケーションを実行するときにコードと対話するためのいくつかの抽象を含む。例えば、１つの抽象は、顧客または販売注文に関するデータの格納をモデル化するビジネスエンティティである。こうしたエンティティ（またはオブジェクト）は、データを格納するためのクラスを含む。
【発明の開示】
【発明が解決しようとする課題】
【０００４】
クラスは、情報の格納には非常に役立つが、機能は限られている。場合によって、同じまたは似たコードがアプリケーションの複数の場所に実装されており、クラスに対して様々な操作を行うことがある。こうした複数の実装では、エラーになりやすく、開発するのにかなりの時間および費用がかかる。さらに、他の状況に容易に適合できない実装もあり、こうした実装のために規模の経済および許容可能な製品のサポートを達成するのが困難となる。
【０００５】
その結果、ビジネスアプリケーション開発者の負担を低減するために、異なる状況に適応可能なビジネスロジックのフレキシブルなアプリケーションが望まれている。
【課題を解決するための手段】
【０００６】
本発明は、ビジネスアプリケーションにビジネスロジックをフレキシブルに実装できるようにする。ビジネスアプリケーション向けのカスタマイズされたソリューションが開発しやすいように、一般的な再利用可能なビジネスロジックを実装する。様々なロジックの実装にビジネスエンティティのプロパティをバインドすることを使用して、ビジネスロジックを再利用する。パラメータは、コラボレーションおよびコラボレーションロールと呼ばれるビジネスロジックの実装の挙動を制御するメタデータ内でセットアップすることができる。
【発明を実施するための最良の形態】
【０００７】
本発明は、コンピュータソフトウェアにおけるビジネスロジックの実装に関する。本明細書では、ビジネスオブジェクトにわたるビジネスロジックの実装に関連して説明するが、本発明は、一般にオブジェクトのプロパティを複数横断する他のタイプのロジックに適用することもできる。しかし、本発明をより詳しく説明する前に、本発明を使用できる環境例の一実施形態について説明する。
【０００８】
図１は、本発明を実施できる、適したコンピューティングシステム環境１００の例を示している。コンピューティングシステム環境１００は、適したコンピューティング環境の一例にすぎず、本発明の使用または機能の範囲に関する限定を示唆するものではない。また、コンピューティング環境１００を、コンピューティング環境１００の例に示した構成要素のいずれか１つ、またはその組合せに関連する依存性または必要条件を有しているものと解釈すべきではない。
【０００９】
本発明は、他の多くの汎用または専用コンピューティングシステム環境または構成で動作可能である。本発明との使用に適したよく知られているコンピューティングシステム、環境、および／または構成の例には、それだけには限定されないが、パーソナルコンピュータ、サーバーコンピュータ、ハンドヘルドまたはラップトップ装置、マルチプロセッサシステム、マイクロプロセッサベースのシステム、セットトップボックス、プログラム可能家庭用電化製品、ネットワークＰＣ、ミニコンピュータ、メインフレームコンピュータ、上記の任意のシステムまたは装置を含む分散コンピューティング環境などがある。
【００１０】
本発明は、コンピュータによって実行されるプログラムモジュールなどのコンピュータ実行可能命令の一般的なコンテキストで説明することができる。一般にプログラムモジュールは、特定のタスクを実行する、または特定の抽象データ型を実装するルーチン、プログラム、オブジェクト、構成要素、データ構造などを含む。また、本発明は、タスクが通信ネットワークによってリンクされているリモート処理装置によって実行される分散コンピューティング環境で実施するように設計されている。分散コンピューティング環境では、プログラムモジュールを、メモリ記憶装置を含むローカルおよびリモートのコンピュータ記憶媒体に置くことができる。
【００１１】
図１を参照すると、本発明を実施するシステムの例は、汎用コンピューティング装置をコンピュータ１１０の形で含んでいる。コンピュータ１１０の構成要素は、それだけには限定されないが、処理ユニット１２０、システムメモリ１３０、およびシステムメモリを含む様々なシステム構成要素を処理ユニット１２０に結合するシステムバス１２１を含む。システムバス１２１は、様々なバスアーキテクチャのうちの任意のものを使用するメモリバスまたはメモリコントローラ、周辺バス、およびローカルバスを含むいくつかのタイプのバス構造のうちどんなものでもよい。こうしたアーキテクチャには、それだけには限定されないが一例として、ＩＳＡ（ｉｎｄｕｓｔｒｙ  ｓｔａｎｄａｒｄ  ａｒｃｈｉｔｅｃｔｕｒｅ）バス、ＭＣＡ（ｍｉｃｒｏ  ｃｈａｎｎｅｌ  ａｒｃｈｉｔｅｃｔｕｒｅ）バス、ＥＩＳＡ（ｅｎｈａｎｃｅｄ  ＩＳＡ）バス、ＶＥＳＡ（ｖｉｄｅｏ  ｅｌｅｃｔｒｏｎｉｃｓ  ｓｔａｎｄａｒｄｓ  ａｓｓｏｃｉａｔｉｏｎ）ローカルバス、およびメザニンバスとしても知られているＰＣＩ（ｐｅｒｉｐｈｅｒａｌ  ｃｏｍｐｏｎｅｎｔ  ｉｎｔｅｒｃｏｎｎｅｃｔ）バスなどがある。
【００１２】
コンピュータ１１０は、一般に様々なコンピュータ可読媒体を含む。コンピュータ可読媒体は、コンピュータ１１０からアクセスできる使用可能な任意の媒体とすることができ、揮発性および不揮発性媒体、リムーバブルおよび非リムーバブル媒体を含む。コンピュータ可読媒体は、それだけには限定されないが一例として、コンピュータ記憶媒体および通信媒体を含み得る。コンピュータ記憶媒体には、コンピュータ可読命令、データ構造、プログラムモジュール、他のデータなど、情報を記憶するための任意の方法または技術で実施される揮発性および不揮発性のリムーバブルおよび非リムーバブル媒体がある。コンピュータ記憶媒体には、それだけには限定されないが、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリまたは他のメモリ技術、ＣＤ−ＲＯＭ、デジタル多用途ディスク（ＤＶＤ）または他の光ディスク記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置または他の磁気記憶装置、または所望の情報の格納に使用でき、コンピュータ１１０からアクセスできる他の任意の媒体などがある。通信媒体は一般に、コンピュータ可読命令、データ構造、プログラムモジュール、または他のデータを搬送波または他の移送機構などの変調されたデータ信号に組み込む。これには任意の情報配送媒体がある。「変調されたデータ信号」という用語は、信号内の情報を符号化するように設定または変更された１つまたは複数のその特徴を有する信号を意味する。通信媒体には、それだけには限定されないが一例として、有線ネットワーク、直接配線された接続などの有線媒体、および音響、ＲＦ、赤外線、その他の無線媒体などの無線媒体がある。また、上記のどんな組合せでもコンピュータ可読媒体の範囲内に含まれるものとする。
【００１３】
システムメモリ１３０は、読取り専用メモリ（ＲＯＭ）１３１やランダムアクセスメモリ（ＲＡＭ）１３２など、揮発性および／または不揮発性メモリの形態のコンピュータ記憶媒体を含む。ＢＩＯＳ（ｂａｓｉｃ  ｉｎｐｕｔ／ｏｕｔｐｕｔ）１３３は、例えば起動中など、コンピュータ１１０内の要素間での情報の転送を助ける基本ルーチンを含み、一般にＲＯＭ１３１に格納されている。ＲＡＭ１３２は一般に、処理ユニット１２０から直接アクセス可能な、かつ／または処理ユニット１２０が現在処理しているデータおよび／またはプログラムモジュールを含む。図１は、それだけには限定されないが一例として、オペレーティングシステム１３４、アプリケーションプログラム１３５、他のプログラムモジュール１３６、およびプログラムデータ１３７を示している。
【００１４】
コンピュータ１１０は、他のリムーバブル／非リムーバブル、揮発性／不揮発性コンピュータ記憶媒体を含むこともできる。一例にすぎないが、図１は、非リムーバブル不揮発性磁気媒体から読み取り、あるいはそこに書き込むハードディスクドライブ１４１、リムーバブル不揮発性磁気ディスク１５２から読み取り、あるいはそこに書き込む磁気ディスクドライブ１５１、およびＣＤ−ＲＯＭや他の光媒体など、リムーバブル不揮発性光ディスク１５６から読み取り、あるいはそこに書き込む光ディスクドライブ１５５を示している。動作環境の例で使用できる他のリムーバブル／非リムーバブル、揮発性／不揮発性コンピュータ記憶媒体には、それだけには限定されないが、磁気テープカセット、フラッシュメモリカード、デジタル多用途ディスク、デジタルビデオテープ、半導体ＲＡＭ、半導体ＲＯＭなどがある。ハードディスクドライブ１４１は一般に、インターフェイス１４０などの非リムーバブル不揮発性メモリインターフェイスを介してシステムバス１２１に接続され、磁気ディスクドライブ１５１および光ディスクドライブ１５５は一般に、インターフェイス１５０などのリムーバブル不揮発性メモリインターフェイスによってシステムバス１２１に接続される。
【００１５】
上述し、図１に示したドライブおよびその関連のコンピュータ記憶媒体は、コンピュータ可読命令、データ構造、プログラムモジュール、およびコンピュータ１１０の他のデータの記憶を提供する。図１では例えば、ハードディスクドライブ１４１は、オペレーティングシステム１４４、アプリケーションプログラム１４５、他のプログラムモジュール１４６、およびプログラムデータ１４７を記憶するものとして示されている。これらの構成要素は、オペレーティングシステム１３４、アプリケーションプログラム１３５、他のプログラムモジュール１３６、およびプログラムデータ１３７と同じであっても、異なっていてもよいことに注意されたい。オペレーティングシステム１４４、アプリケーションプログラム１４５、他のプログラムモジュール１４６、およびプログラムデータ１４７は少なくとも異なるコピーであることを示すために、ここではそれらに異なる番号を付している。
【００１６】
ユーザは、キーボード１６２、マイクロフォン１６３、および一般にマウス、トラックボール、タッチパッドなどのポインティング装置１６１などの入力装置を介してコマンドおよび情報をコンピュータ１１０に入力することができる。他の入力装置（図示せず）には、ジョイスティック、ゲームパッド、衛星パラボラアンテナ、スキャナなどがある。これらおよび他の入力装置は、しばしばシステムバスに結合されているユーザ入力インターフェイス１６０を介して処理ユニット１２０に接続されるが、パラレルポート、ゲームポート、ユニバーサルシリアルバス（ＵＳＢ）など他のインターフェイスおよびバス構造で接続してもよい。モニタ１９１または他のタイプの表示装置もまた、ビデオインターフェイス１９０などのインターフェイスを介してシステムバス１２１に接続される。モニタに加えて、コンピュータは、出力周辺インターフェイス１９５などを介して接続できるスピーカー１９７、プリンタ１９６などの他の周辺出力装置を含むこともできる。
【００１７】
コンピュータ１１０は、リモートコンピュータ１８０など１つまたは複数のリモートコンピュータへの論理接続を使用してネットワーク式環境で操作される。リモートコンピュータ１８０は、パーソナルコンピュータ、ハンドヘルド装置、サーバー、ルーター、ネットワークＰＣ、ピア装置、または他の一般のネットワークノードでよく、一般にコンピュータ１１０に関連して上述した多くまたはすべての要素を含む。図１に示した論理接続は、ローカルエリアネットワーク（ＬＡＮ）１７１およびワイドエリアネットワーク（ＷＡＮ）１７３を含むが、他のネットワークを含んでいてもよい。こうしたネットワーキング環境は、オフィス、全社規模のコンピュータネットワーク、イントラネット、およびインターネットではごく一般的である。
【００１８】
ＬＡＮネットワーキング環境で使用する場合、コンピュータ１１０は、ネットワークインターフェイスまたはアダプタ１７０を介してＬＡＮ１７１に接続される。ＷＡＮネットワーキング環境で使用する場合、コンピュータ１１０は一般に、モデム１７２、またはインターネットなどＷＡＮ１７３を介して通信を確立する他の手段を含む。モデム１７２は、内蔵のものでも外付けのものでもよく、ユーザ入力インターフェイス１６０または他の適切な機構を介してシステムバス１２１に接続することができる。ネットワーク式環境では、コンピュータ１１０に関連して示したプログラムモジュール、またはその一部をリモートメモリ記憶装置に格納することができる。図１は、それだけには限定されないが一例として、リモートアプリケーションプログラム１８５をメモリコンピュータ１８０上に存在するものとして示している。図示したネットワーク接続は例であり、コンピュータ間の通信リンクを確立する他の手段を使用してもよいことは理解されよう。
【００１９】
図２は、オブジェクトリレーショナル（またはエンティティリレーショナル）データ記憶システムを示す図である。本発明では、エンティティは、「オブジェクト」という用語と同義の用語として使用される。Ｅ−Ｒシステム２００は、リレーショナルデータベース２０４に格納されているデータに対応する１組のエンティティ（またはオブジェクト）２０２を含む。エンティティは、エンティティリレーショナル（ＥＲ）マップ２０８を使用するデータアクセスシステム２０６を介してリレーショナルデータにアクセスする。ＥＲマップ２０８は、エンティティ２０２とリレーショナルデータベース２０４内のテーブルエンティティとの間のマッピングを含む。本発明は、Ｅ−Ｒシステム以外の他のシステムにおいても使用可能であり、図２に示すシステムは、本発明を使用できるシステムの一例にすぎないことに注意されたい。
【００２０】
図３は、本発明の一実施形態によるビジネスコラボレーションフレームワーク（ｂｕｓｉｎｅｓｓ  ｃｏｌｌａｂｏｒａｔｉｏｎ  ｆｒａｍｅｗｏｒｋ）２２０の統一モデリング言語（ＵＭＬ）クラスの図である。フレームワーク２２０は、１つまたは複数のビジネスオブジェクト２２２を含む。ビジネスオブジェクト２２２は、オブジェクト２２２の様々なデータ要素を定義する静的モデルを含む。例えば、販売注文用のビジネスオブジェクトは、顧客名、出荷先住所、商品説明、価格など、様々なデータ要素を含むことができる。一実施形態では、ビジネスオブジェクト２２２は、ビジネスオブジェクト２２２から導出される他のオブジェクトの代わりにロジックを実装する基本クラスである。ビジネスオブジェクト２２２は、１つまたは複数のコラボレーション２２４、１つまたは複数のロール２２６、および１つまたは複数のプロパティ２２８に関連付けられる。
【００２１】
フレームワーク２２０を使用すると、ビジネスロジックパターン（本明細書ではコラボレーションおよびロール）の実装は、パラメータ化され、異なるビジネスオブジェクトにわたって再利用可能である。パラメータ化とは、コラボレーションおよびコラボレーションロールの挙動を制御するパラメータをメタデータ内でセットアップする機能を指す。例えば、番号順ロールの場合、メタデータを使用して、シーケンスから取り出される任意の数が連続すべきであることを定義することができる。各コラボレーションロールは、どのメタデータをコラボレーション／コラボレーションロールに設定できるかを定義するスキーマを有することができる。後述するように、このメタデータは、プロパティとコラボレーションロールとｊの間のバインド情報を指定するメタデータの他に追加してもよい。
【００２２】
コラボレーション２２４は、ビジネスアプリケーションの異なるビジネスオブジェクトによって再利用可能であり、これによって設計者は、ビジネスオブジェクト２２２内の様々なプロパティ（プロパティ２２８など）の挙動を設定することができる。コラボレーション２２４は、ビジネスロジックパターン、１組のロール（ロール２２６など）、ならびに各ロールの基数（その組の中の要素の数）、および各ロールが同じまたは異なるビジネスエンティティの他のロールとどのように対話するかを管理するルールを含む。コラボレーション２２４は、関連するインターフェイス２３０を含み、これによってビジネスアプリケーションにおいてコラボレーションが定義され、他のコラボレーションおよびロールとの対話が可能になる。
【００２３】
ロール２２６は、ビジネスオブジェクト２２２内の個々のプロパティ（例えばフィールドまたはオブジェクト）と関連する、あるいは複数のビジネスオブジェクトと関連するオブジェクトである。ロール２２６は、他のコラボレーションおよび／または他のロールと対話するために、ロール２２６にバインドされたプロパティの挙動を制御するためのビジネスロジックを含む。さらに、ロール２２６は、外部または内部フィールドを含む。外部フィールドは、他のロールまたは他のビジネスソフトウェアと通信するときに使用される。外部フィールドでは、ロールは、プロパティのインターセプトを制御し、ロールをビジネスオブジェクト２２２の静的モデル内のデータにバインドするロジックを含む。これについては後述する。内部フィールドは、特定のロール内でのみ使用され、特定のロールを介してのみアクセスされる。ロール２２６は、ロールを定義する、関連するインターフェイス２３２も含む。
【００２４】
ロール２２６は、関連するロールオンプロパティサブクラス２３４および／または関連するロールオンコラボレーションサブクラス２３６をさらに有することができる。ロールオンプロパティ２３４は、ビジネスオブジェクト２２２の静的モデルのプロパティ（またはフィールド）に関する、ビジネスアプリケーションで起こるイベントのプロパティをインターセプトするために使用される。ロールオンコラボレーションサブクラス２３６によって、ロール２２６は、他のコラボレーションと対話して、例えば他のコラボレーションからのイベントをインターセプトすることができる。
【００２５】
フレーム２２０は、関連するメタデータインターフェイス２３８も含む。メタデータインターフェイス２３８は、ロールによって定義されている挙動が与えられると、フレームワーク２２０によって、格納されているデータと対話するために使用される。特に、インターフェイス２３８によって、格納されているデータを、ロールによって定義されたように、ビジネスオブジェクト２２２の静的モデルで定義されたプロパティにバインドすることができる。コラボレーションが定義されると、ビジネスオブジェクトのプロパティがコラボレーションロールにバインドされる。この「バインド情報」は、適切なメタデータストアに格納される。
【００２６】
フレームワーク２２０内で起こる様々なイベントによって、少なくとも１つのコラボレーションおよびその関連するロールの実装が引き起こされる。こうしたイベントには、ビジネスエンティティの作成、更新、読取り、削除、ビジネスエンティティ内のプロパティの変更、ないしは改変などがある。例えば、販売注文を作成すると、簡単な番号ジェネレータコラボレーションがトリガ（またはインスタンス化）されてシーケンスに新しい販売注文番号を作成することができる。
【００２７】
図４は、ビジネスコラボレーションを用いるアプリケーションを開発するときにアプリケーション開発者２４０によって実行されるタスクの例を示す概略図である。これらのタスクは、ビジネスオブジェクトのプロパティの静的モデルが定義された後で行うことができる。アプリケーション開発者２４０が実装するタスクは、コラボレーションの定義タスク２４２、ロールの定義タスク２４４を含む。ロールの定義タスク２４４は、コラボレーションへのロールの定義タスク２４８、フィールドへのロールの定義タスク２５０、ロールをフィールドとする定義タスク２５２、およびロールを可視インターフェイスとする定義２４６を使用することを含む。
【００２８】
図５は、コラボレーションをビジネスエンティティにバインドするメタデータを設定するコラボレーションを定義するためのタスク２４２を完了するステップを示している。ステップ２６０で、ビジネスソリューションの実装に応じてコラボレーションタイプを決定する。例えば開発者２４０は、ｍｏｎｅｙコラボレーションを選択して、ある金額をある通貨から別の通貨に変換する、または通貨総額（ａｇｇｒｅｇａｔｅ  ｃｕｒｒｅｎｃｙ）を選択してあるフィールドの複数のインスタンスを計算する（すなわち販売注文の明細の集計にわたって価格を追加する）ことができる。ステップ２６２で、コラボレーションをそのコラボレーションを制御するエンティティ上に作成する。つまりコラボレーションは、エンティティのメタデータ内に作成される。例えば、コラボレーションは、特定のビジネスオブジェクトに関連付けられ、それに関連して作成される。ステップ２６４で、コラボレーションを適切に識別するために、コラボレーションに名前を付ける。コラボレーションに名前が付けられると、次いでステップ２６６で、アプリケーション開発者は、そのコラボレーションに対するロールを定義することができる。このステップは、タスク２４４を実施することによって行なわれる。後でロールを使用して、他のエンティティ内のオブジェクトをロールにバインドすることができる。各ロールが定義された後、ステップ２６８で、ビジネスエンティティにおけるモデルが有効になる。コラボレーションを使用してモデルがいったん有効になると、ステップ２７０でこのコラボレーションを保存する。
【００２９】
タスク２４８、２５０、および２５２を使用してロールを定義することができる。図６は、ロールをフィールドとして定義するタスク２５２を完了するステップを示す。タスク２５２を使用して、ビジネスオブジェクト内のフィールドとして働くようにロールを定義する。タスクはステップ２８０で開始し、ここでロールタイプを設定する。ロールタイプは、日付、整数、小数、オブジェクトなど、またはユーザ定義タイプを組み込むことができる。ステップ２８２で、ロールタイプをフィールドとしてビジネスエンティティに追加する。したがってロールは、ビジネスエンティティのプロパティオブジェクトとして定義される。ステップ２８４で、ロールを適切に識別するために、ロールに名前を付ける。次に、ステップ２８６で、ロールを適切なコラボレーションに関連付ける。
【００３０】
図７は、フィールドにロールを定義するタスク２５０を完了するステップを示す。タスク２５０を使用して、ビジネスオブジェクトに存在するフィールドの挙動を定義する。ステップ２９０で、ロールタイプを設定する。ステップ２９２で、ロールタイプをそのロールのデータを保持するフィールドに接続する。次に、ステップ２９４で、ロールをコラボレーションに関連付ける。
【００３１】
図８は、コラボレーションにロールを定義するタスク２４８を完了するステップを示す。タスク２４８を使用して、別のコラボレーションに関連するロールを実装する。ステップ３００で、ロールタイプを設定する。ステップ３０２で、ロールタイプをロールのソースを保持するコラボレーションに接続する。ステップ３０４で、ロールをコラボレーションに関連付ける。
【００３２】
図９は、ビジネスアプリケーション内のコードからアクセスできるようにロールを可視インターフェイスとして定義するタスク２４６を示す。タスク２４６は、タスク２４８および２５０のサブタスクである。ステップ３１０で、可視にすべきロールを選択する。ステップ３１２で、ロールを表示するために、プロパティ可視フラグをｔｒｕｅに設定する。
【００３３】
図１０は、コラボレーションの例および関連するロールの表を示す。Ｍｏｎｅｙコラボレーション３２０は、通貨間で金額を変換するために使用される。このコラボレーションは、例えば取引通貨が会計帳簿に入力された現地通貨とは異なる販売注文の金額を更新するときに役立つ。会計通貨とは異なる取引通貨が入力されると、取引通貨額が自動的に変換され、会計帳簿が会計通貨値で更新される。Ｍｏｎｅｙコラボレーション３２０は、通貨コードロール３２２、日付ロール３２４、取引通貨額ロール（ＡｍｏｕｎｔＴＣＹロール）３２６、現地（または会計）通貨額ロール（ＡｍｏｕｎｔＬＣＹロール）３２７、および為替レートロール３２８を含む。Ｍｏｎｅｙコラボレーションの実装では、デフォルトの通貨（すなわち会計通貨）を仮定する。為替レートロール３２８は、アプリケーション開発者から可視である必要はなく、また、個別のロールを必要とせずに、Ｍｏｎｅｙコラボレーション３２０自体のビジネスロジックに含めることもできることは注目に値する。
【００３４】
表３３０は、Ｍｏｎｅｙコラボレーション３２０におけるロールの定義を含む。表３３０の行は、ロールに関する情報を表し、列はロールの特定の特徴に関する情報、すなわちロール名、バインド、基数、およびタイプを表す。通貨コードロール３２２は、外部フィールド（したがってそのバインドは外部）であり、文字列である。通貨コードロール３２２の基数は１である。これは、Ｍｏｎｅｙコラボレーション３２０では常に唯一のコードロールが存在することを意味する。日付ロール３２４は、外部フィールドで、日付であり、その基数は０または１のいずれかである（０．．１で示す）。ＡｍｏｕｎｔＴＣＹロール３２６およびＡｍｏｕｎｔＬＣＹロール３２７は外部フィールドで、小数であり、任意の数の個々のロールを含むことができる（＊で示す）。為替レートロール３２８は、外部フィールドで、小数であり、その基数は０または１である。
【００３５】
図１１は、通貨間で金額を変換する実装例を示す。この例では、現地通貨がわかっていると仮定する。ＳｏｍｅＢｕｓｉｎｅｓｓＣｌａｓｓ３５０で示したビジネスエンティティがビジネスアプリケーションで定義されている。例えば、ＳｏｍｅＢｕｓｉｎｅｓｓＣｌａｓｓ３５０は、取引通貨と現地通貨との間の変換を含む販売注文とすることができる。ＳｏｍｅＢｕｓｉｎｅｓｓＣｌａｓｓ３５０は、ＣｕｒｒｅｎｃｙＣｏｄｅ取引通貨コード３５２、ＡｍｏｕｎｔＬＣＹ（現地（または会計）通貨額）３５４、およびＡｍｏｕｎｔＴＣＹ（取引通貨額）３５６の３つのフィールドを含む。必要に応じて、クラス３５０は、ＥｘｃｈａｎｇｅＲａｔｅフィールド３５８を含むこともできる。
【００３６】
Ｍｏｎｅｙコラボレーション３６０は、ＣＣＤＲｏｌｅ３６２、ＬＣＹＲｏｌｅ３６４、ＴＣＹＲｏｌｅ３６６、およびＥＸＲＲｏｌｅ３６８のロールを含む。コラボレーション３６０を実装すると、ＣＣＤＲｏｌｅ３６２がＣｕｒｒｅｎｃｙＣｏｄｅフィールド３５２にバインドされ、ＬＣＹＲｏｌｅ３６４がＡｍｏｕｎｔＬＣＹフィールド３５４にバインドされ、ＴＣＹＲｏｌｅ３６６がＡｍｏｕｎｔＴＣＹフィールド３５６にバインドされる。ＥｘｃｈａｎｇｅＲａｔｅフィールド３５８を使用している場合、ＥＸＲＲｏｌｅ３６８がそれにバインドされる。
【００３７】
メタデータ構造３７０は、ロールをそれぞれのフィールドにバインドするバインド情報を含む。例えば、メタデータ構造３７０内の情報ＭｏｎｅｙＣｏｌｌａｂｏｒａｔｉｏｎ．ＣＣＤＲｏｌｅおよびＳｏｍｅＢｕｓｉｎｅｓｓＣｌａｓｓ．ＣｕｒｒｅｎｃｙＣｏｄｅによってこのバインドが提供される。ＳｏｍｅＢｕｓｉｎｅｓｓＣｌａｓｓをインスタンス化する（例えば新しい販売注文が要求される）と、メタデータは、これらのフィールドにバインドされ、Ｍｏｎｅｙコラボレーション３６０がインスタンス化される。
【００３８】
図１２は、本発明の一実施形態によるＭｏｎｅｙコラボレーション３６０を使用した取引通貨額の更新の方法４００を示す。ステップ４０２で、ユーザがＣｕｒｒｅｎｃｙＣｏｄｅフィールド３５２を更新する。ステップ４０４で、更新をインターセプトされ、ＣＣＤＲｏｌｅ３６２に適用する。通貨コードのフィールドが更新されるといつでもインターセプトが行われる。次いで、ステップ４０６で、更新された通貨コードは、ＥＸＲＲｏｌｅ３６８に委任され、そこで為替レートを計算し、ＥｘｃｈａｎｇｅＲａｔｅフィールド３５８を更新する。
【００３９】
次にステップ４０８で、ユーザがＡｍｏｕｎｔＬＣＹフィールド３５４に金額を入力する。再度、この更新によってインターセプトが引き起こされる。ステップ４１０で、新しい金額を更新し、Ｍｏｎｅｙコラボレーション３６０に委任し、ここで為替レートおよび現地通貨額に基づいて対象の通貨値を新たに計算する。次いでステップ４１２でＡｍｏｕｎｔＴＣＹフィールド３５６を更新する。
【００４０】
コラボレーションは、いくつかのエンティティにわたって定義してもよく、また他のコラボレーションと対話することもできることに注意されたい。図１３は、コラボレーションが複数のエンティティにわたって使用される環境の例を示す。請求書エンティティ４２０、支払いエンティティ４２２、および顧客エンティティ４２４を示している。Ａｐｐｌｙコラボレーションは、支払い、請求書、および残高のロールを含む。請求書ロールは、請求書エンティティを使用して正確な請求書を顧客に送信できるようにするために、支払いに関する情報を含んでいる。同様に、顧客エンティティは、残高ロールを使用して顧客の請求書値および支払い値を計算して適切な残高を決定する。
【００４１】
図１４は、いくつかのコラボレーションが相互に作用する環境を示す。Ｍｏｎｅｙコラボレーション４４０、Ｍｏｎｅｙ  ａｍｏｕｎｔコラボレーション４４２、Ａｐｐｌｙコラボレーション４４４、およびＡｇｇｒｅｇａｔｉｏｎコラボレーション４４６を示している。Ｍｏｎｅｙ  ａｍｏｕｎｔコラボレーション４４２は、ビジネスアプリケーションの値を計算するために、Ｍｏｎｅｙコラボレーション４４０、Ａｐｐｌｙコラボレーション４４４、およびＡｇｇｒｅｇａｔｉｏｎコラボレーション４４６からの値を使用する。また、Ｍｏｎｅｙコラボレーション４４０の金額ロールがＭｏｎｅｙ  ａｍｏｕｎｔコラボレーション４４２の挙動を定義するＭｏｎｅｙ  ａｍｏｕｎｔコラボレーション４４２も示されている。
【００４２】
ビジネスエンティティと関連付けられたコラボレーションおよびロールを実装することによって、一般のビジネスロジックを様々な状況において再利用することができる。ロールは、ビジネスオブジェクトのプロパティが更新されると、プロパティのビジネスロジックを実行するように、メタデータのインスタンスにバインドされる。したがって、ビジネスアプリケーションを通じてビジネスロジックのこうしたインスタンスを再生する必要がなく、時間および開発コストが節約される。
【００４３】
本発明は、特定の実施形態に関連して説明してきたが、本発明の意図および範囲から逸脱することなく形態および詳細に変更を加えることができることを当業者であれば理解されよう。
【図面の簡単な説明】
【００４４】
【図１】本発明を使用できる一環境を示すブロック図である。
【図２】オブジェクトリレーショナル（またはエンティティリレーショナル）データベースシステムを示すブロック図である。
【図３】本発明の一実施形態によるコラボレーションのフレームワークを示すＵＭＬクラスの図である。
【図４】ビジネスコラボレーションを実装するための様々なタスクを示す概略図である。
【図５】コラボレーションを定義するタスクを示すフロー図である。
【図６】ロールをフィールドとして定義するタスクを示すフロー図である。
【図７】フィールドにロールを定義するタスクを示すフロー図である。
【図８】コラボレーションにロールを定義するタスクを示すフロー図である。
【図９】ロールを可視インターフェイスとして定義するタスクを示すフロー図である。
【図１０】コラボレーションを示す概略図および関連するロールの表図である。
【図１１】コラボレーションの実装を示す概略図である。
【図１２】コラボレーションを使用してビジネスエンティティのフィールドを更新する方法を示すフロー図である。
【図１３】コラボレーションが複数のエンティティに関連付けられている環境を示す概略図である。
【図１４】コラボレーションが他のコラボレーションと対話する環境を示す概略図である。
【符号の説明】
【００４５】
１００  コンピューティングシステム環境
１１０  コンピュータ
１２０  処理ユニット
１２１  システムバス
１３０  システムメモリ
１３１  読取り専用メモリ（ＲＯＭ）
１３２  ランダムアクセスメモリ（ＲＡＭ）
１３３  基本入出力システム（ＢＩＯＳ）
１３４  オペレーティングシステム
１３５  アプリケーションプログラム
１３６  他のプログラムモジュール
１３７  プログラムデータ
１４０  インターフェイス
１４１  ハードディスクドライブ
１４４  オペレーティングシステム
１４５  アプリケーションプログラム
１４６  他のプログラムモジュール
１４７  プログラムデータ
１５０  インターフェイス
１５１  磁気ディスクドライブ
１５２  リムーバブル不揮発性磁気ディスク
１５５  光ディスクドライブ
１５６  リムーバブル不揮発性光ディスク
１６０  ユーザ入力インターフェイス
１６１  ポインティング装置
１６２  キーボード
１６３  マイクロフォン
１７０  ネットワークインターフェイスまたはアダプタ
１７１  ローカルエリアネットワーク（ＬＡＮ）
１７２  モデム
１７３  ワイドエリアネットワーク（ＷＡＮ）
１８０  リモートコンピュータ
１８５  リモートアプリケーションプログラム
１９０  ビデオインターフェイス
１９１  モニタ
１９５  出力周辺インターフェイス
１９６  プリンタ
１９７  スピーカー
２００  Ｅ−Ｒシステム
２０２  オブジェクト
２０４  リレーショナルデータベース
２０６  データアクセスシステム
２０８  エンティティリレーショナル（ＥＲ）マップ
２２０  ビジネスコラボレーションフレームワーク
２２２  ビジネスオブジェクト
２２４  コラボレーション
２２６  ロール
２２８  プロパティ
２３０  インターフェイス
２３２  インターフェイス
２３４  ロールオンプロパティサブクラス
２３６  ロールオンコラボレーションサブクラス
２３８  関連するメタデータインターフェイス
２４０  アプリケーション開発者
２４２  コラボレーションの定義タスク
２４４  ロールの定義タスク
２４６  ロールを可視インターフェイスとして定義
２４８  コラボレーションへのロールの定義タスク
２５０  フィールドへのロールの定義タスク
２５２  ロールをフィールドとする定義タスク
３２０  Ｍｏｎｅｙコラボレーション
３２２  通貨コードロール
３２４  日付ロール
３２６  取引通貨額ロール
３２７  現地（または会計）通貨額ロール
３２８  為替レートロール
３３０  表
３５０  ＳｏｍｅＢｕｓｉｎｅｓｓＣｌａｓｓ
３５２  ＣｕｒｒｅｎｃｙＣｏｄｅ取引通貨コードフィールド
３５４  ＡｍｏｕｎｔＬＣＹフィールド
３５６  ＡｍｏｕｎｔＴＣＹフィールド
３５８  ＥｘｃｈａｎｇｅＲａｔｅフィールド
３６０  Ｍｏｎｅｙコラボレーション
３６２  ＣＣＤＲｏｌｅ
３６４  ＬＣＹＲｏｌｅ
３６６  ＴＣＹＲｏｌｅ
３６８  ＥＸＲＲｏｌｅ
３７０  メタデータ構造
４００  方法
４２０  請求書エンティティ
４２２  支払いエンティティ
４２４  顧客エンティティ
４４０  Ｍｏｎｅｙコラボレーション
４４２  Ｍｏｎｅｙ  ａｍｏｕｎｔコラボレーション
４４４  Ａｐｐｌｙコラボレーション
４４６  Ａｇｇｒｅｇａｔｉｏｎコラボレーション
【図１】
2004280822.tif 000003
【図２】
2004280822.tif 000004
【図３】
2004280822.tif 000005
【図４】
2004280822.tif 000006
【図５】
2004280822.tif 000007
【図６】
2004280822.tif 000008
【図７】
2004280822.tif 000009
【図８】
2004280822.tif 000010
【図９】
2004280822.tif 000011
【図１０】
2004280822.tif 000012
【図１１】
2004280822.tif 000013
【図１２】
2004280822.tif 000014
【図１３】
2004280822.tif 000015
【図１４】
2004280822.tif 000016
【外国語明細書】
2004280822000001.pdf