(57)【特許請求の範囲】
【請求項１】
サービスプロバイダによってサービスコンシューマに対して1つまたは複数のサービスを提供するための方法であって、
少なくとも1つのコアサービスと少なくとも1つの複合サービスとを定義するモデルを記述するメタモデルをユーザに定義させること、
前記メタモデルに基づいて前記コアサービスについてのモデルをユーザに作成させること、
前記モデルに基づいて前記サービスプロバイダ上で前記コアサービスを実装すること、
前記サービスプロバイダ上で前記複合サービスを実装すること、
前記サービスコンシューマ上で前記コアサービスおよび前記複合サービスに動的にアクセスする包括的アクセスインターフェースを実装すること、および
前記モデルに基づいて前記コアサービスだけにアクセスするために前記サービスコンシューマ上でモデルアクセスインターフェースを実装すること
を含み、
前記モデルアクセスインターフェースは、特定のメタモデルにアクセスするのに適切なタイプのインターフェースを含む方法。
【請求項２】
前記サービスプロバイダが前記メタモデルをリポジトリに記憶すること、および
前記サービスコンシューマ上で第1のクライアントアプリケーションを展開して、前記コアサービスおよび前記複合サービスの少なくとも一方についての前記サービスプロバイダにアクセスすること
をさらに含む、請求項１に記載の方法。
【請求項３】
前記サービスプロバイダ上で前記コアサービス中に新しいサービスを実装すること、および
前記リポジトリを構成して、前記新しいサービスを前記サービスコンシューマに対して使用可能にすること
をさらに含む、請求項２に記載の方法。
【請求項４】
前記サービスコンシューマが前記第1のクライアントアプリケーションによる前記包括的アクセスインターフェースを使用して前記新しいサービスにアクセスすること
をさらに含む、請求項３に記載の方法。
【請求項５】
第2のクライアントアプリケーションを展開して、前記サービスコンシューマ上で前記第1のクライアントアプリケーションを置き換えて、前記サービスについて前記サービスプロバイダにアクセスすること
をさらに含み、前記第2のクライアントアプリケーションが、前記新しいサービスに対応するモデルアクセスインターフェースを有する、請求項４に記載の方法。
【請求項６】
サービスプロバイダによって提供される1つまたは複数のサービスにアクセスするための方法であって、
包括的アクセスインターフェースおよびモデルアクセスインターフェースを含むサービスコンシューマによる、前記サービスプロバイダによって提供されるサービスを要求するサービス要求を取得すること、
要求される前記サービスが、コアサービスであるか、あるいは複合サービスであるかを判定すること、
前記サービスがコアサービスである場合に、前記モデルアクセスインターフェースが、前記コアサービスにアクセスするために使用可能であるかどうかを判定すること、および
前記サービスがコアサービスであり、前記モデルアクセスインターフェースが使用可能である場合に、前記サービスプロバイダによって提供される前記サービスにアクセスするための選択されたアクセスインターフェースとして前記モデルアクセスインターフェースを選択すること
を含み、
前記モデルアクセスインターフェースは、特定のメタモデルにアクセスするのに適切なタイプのインターフェースを含む方法。
【請求項７】
前記サービスが複合サービスである場合、または前記サービスがコアサービスであり、前記モデルアクセスインターフェースが使用可能でない場合に、前記サービスプロバイダによって提供される前記サービスにアクセスするための前記選択されたアクセスインターフェースとして前記包括的アクセスインターフェースを選択すること
をさらに含む、請求項６に記載の方法。
【請求項８】
前記選択されたアクセスインターフェース上で型チェックを実施すること、および
データコンテナを生成して、前記サービス要求および前記選択されたアクセスインターフェースのためのランタイムメモリ空間を提供すること
をさらに含む、請求項７に記載の方法。
【請求項９】
前記サービスコンシューマと前記サービスプロバイダが、同じコンピュータプラットフォーム上にあるかどうかを判定すること、および
前記サービスコンシューマと前記サービスプロバイダが、同じコンピュータプラットフォーム上にある場合に、直接メソッド呼出し方法により前記選択されたアクセスインターフェースを呼び出すこと
をさらに含む、請求項８に記載の方法。
【請求項１０】
前記サービスコンシューマと前記サービスプロバイダが、前記同じコンピュータプラットフォーム上にない場合に、前記サービスコンシューマと前記サービスプロバイダとの間のシンプルオブジェクトアクセスプロトコル(SOAP)チャネルを介して前記選択されたアクセスインターフェースにアクセスすること
をさらに含む、請求項９に記載の方法。
【請求項１１】
少なくとも1つのコアサービスと少なくとも1つの複合サービスとを含むサービスを提供するように構成される第1のコンピュータと、
前記第1のコンピュータによって提供される前記サービスにアクセスするように構成される第2のコンピュータと、
前記第1のコンピュータと前記第2のコンピュータを結合するように構成される1つまたは複数のコンピュータネットワーク接続と
を備え、前記第1のコンピュータが、
前記コアサービスおよび前記複合サービスを定義するモデルを記述するメタモデルに基づいて前記コアサービスについてのモデルをユーザに作成させ、
前記モデルに基づいて前記サービスプロバイダ上で前記コアサービスを実装し、
前記サービスプロバイダ上で前記複合サービスを実装し、
前記第1のコンピュータ上で前記メタモデルをリポジトリに記憶する
ように構成されるプロセッサをさらに含み、
前記第2のコンピュータが、さらに
前記第2のコンピュータ上に前記コアサービスおよび前記複合サービスに動的にアクセスする包括的アクセスインターフェースを実装し、
前記第2のコンピュータ上に前記モデルに基づいて前記コアサービスだけにアクセスするモデルアクセスインターフェースを実装し、
前記第2のコンピュータ上に第1のクライアントアプリケーションを展開して、前記包括的アクセスインターフェースおよび前記モデルアクセスインターフェースの一方を使用して前記のコアサービスおよび複合サービスの少なくとも一方についての前記サービスプロバイダにアクセスするように構成され、
前記モデルアクセスインターフェースは、特定のメタモデルにアクセスするのに適切なタイプのインターフェースを含むシステム。
【請求項１２】
前記プロセッサが、さらに
前記第1のコンピュータ上で前記コアサービス中に新しいサービスを実装し、前記リポジトリを構成して前記新しいサービスを使用可能にするように構成される、請求項１１に記載のシステム。
【請求項１３】
前記第2のコンピュータが、さらに
前記第2のコンピュータ上で前記第1のクライアントアプリケーションにより前記包括的アクセスインターフェースを使用して前記新しいサービスにアクセスするように構成される、請求項１２に記載のシステム。
【請求項１４】
前記第2のコンピュータが、さらに
第2のクライアントアプリケーションを展開して、前記サービスコンシューマ上で前記第1のクライアントアプリケーションを置き換えて、前記第1のコンピュータ上で前記コアサービスにアクセスするように構成され、前記第2のクライアントアプリケーションが、前記新しいサービスに対応するモデルアクセスインターフェースを有する、請求項１３に記載のシステム。
【請求項１５】
サービスコンシューマが、コンピュータシステム上でサービスプロバイダによって提供されるサービスにアクセスするように構成される前記コンピュータシステム上で使用するためのコンピュータ読取り可能媒体であって、
包括的アクセスインターフェースおよびモデルアクセスインターフェースを含むサービスコンシューマによる、前記サービスプロバイダによって提供されるサービスを要求するサービス要求を取得すること、
要求される前記サービスが、コアサービスであるか、あるいは複合サービスであるかを判定すること、
前記サービスがコアサービスである場合に、前記モデルアクセスインターフェースが、前記コアサービスにアクセスするために使用可能であるかどうかを判定すること、および
前記サービスがコアサービスであり、前記モデルアクセスインターフェースが使用可能である場合に、前記サービスプロバイダによって提供される前記サービスにアクセスするための選択されたアクセスインターフェースとして前記モデルアクセスインターフェースを選択すること
を含み、
前記モデルアクセスインターフェースは、特定のメタモデルにアクセスするのに適切なタイプのインターフェースを含む方法を実施するためのコンピュータ実行可能命令を有するコンピュータ読取り可能媒体。
【請求項１６】
前記方法が、
前記サービスが複合サービスである場合、または前記サービスがコアサービスであり、前記モデルアクセスインターフェースが使用可能でない場合に、前記サービスプロバイダによって提供される前記サービスにアクセスするための前記選択されたアクセスインターフェースとして前記包括的アクセスインターフェースを選択すること
をさらに含む、請求項１５に記載のコンピュータ読取り可能媒体。
【請求項１７】
前記方法が、
前記選択されたアクセスインターフェース上で型チェックを実施すること、および
データコンテナを生成して、前記サービス要求および前記選択されたアクセスインターフェースのためのランタイムメモリ空間を提供すること
をさらに含む、請求項１６に記載のコンピュータ読取り可能媒体。
【請求項１８】
前記方法が、
前記サービスコンシューマと前記サービスプロバイダが、両方ともに前記コンピュータシステム上にあるかどうかを判定すること、
前記サービスコンシューマと前記サービスプロバイダが、両方ともに前記コンピュータシステム上にある場合に、直接メソッド呼出し方法により前記選択されたアクセスインターフェースを呼び出すこと、および
前記サービスコンシューマと前記サービスプロバイダが、両方ともには前記コンピュータシステム上にない場合に、前記サービスコンシューマと前記サービスプロバイダとの間のシンプルオブジェクトアクセスプロトコル(SOAP)チャネルを介して前記選択されたアクセスインターフェースにアクセスすること
をさらに含む、請求項１５に記載のコンピュータ読取り可能媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般にコンピュータアプリケーションソフトウェアアーキテクチャ(computer application software architecture)の分野に関し、より詳細にはモデル駆動型サービス指向ソフトウェアアーキテクチャ(model driven service oriented software architecture)を実現する方法およびシステムに関する。
【背景技術】
【０００２】
コンピュータソフトウェアのプログラムまたはアプリケーションは、多くの場合に所定の環境内の特定の1組の問題を解決するために開発される。しかし、新しい種類の問題および所定の環境中における変更は、多くの場合にコンピュータソフトウェアのプログラムまたはアプリケーションの修正またはアップデートを必要とする。複雑なソフトウェアのプログラムまたはアプリケーションが関与するときには、変更またはアップデートは、多くの場合に完了するのに長い時間と多大な努力を要する。ソフトウェアモデルを使用して、これらの変更またはアップデートに対応し、変更またはアップデートを完了するための努力の量または時間の長さを低減させることができる。例えば、2005年3月24日のBloesch等に対する米国特許出願公開第2005/0066338号は、アプリケーションの設計とオペレーティングシステムの相互作用についてのメタオブジェクトモデル(meta-object model)をサポートするアプリケーションプログラミングインターフェース(application programming interface)およびフレームワークを開示している。しかし、そのようなオペレーティングシステムの相互作用技法は、大量販売のネットワークコンピューティングアプリケーション(networking computing application)を取り扱うときにはしばしば効果的でないことがある。
【０００３】
ネットワークベースのソフトウェアアプリケーションのうちでもとりわけ、エンタープライズサービスソフトウェアアプリケーション(enterprise service software application)は、安定した接続、高帯域幅、およびビジネス指向アプリケーションを伴うエンタープライズ環境のために開発することができる。エンタープライズサービスソフトウェアは、多くの場合にトランザクショナル様式および/またはステートフル様式で実装（implement）され、機能の観点から微細細分性(fine granularity)を用いて実装することもできる。他方、一般的なウェブサービスソフトウェアアプリケーションは、異なるコンピュータおよび異なるネットワーク接続が相互接続され、環境のステータスが多くの場合に予測できない場合のネットワークコンピューティング環境中における通常のインターネットベースのアプリケーションのために開発することができる。したがって、一般的なウェブサービスソフトウェアは、多くの場合に非トランザクショナル様式および/またはステートレス様式で実装され、機能の観点からかなり大きな細分性(significantly large granularity)を用いて実装することもできる。
【０００４】
以上の違いのために、エンタープライズサービスソフトウェアアプリケーションおよびウェブサービスソフトウェアアプリケーション(web service software application)は、多くの場合に互いに互換性がないこともある。すなわち、エンタープライズサービスおよびウェブサービスは、エンタープライズサービスソフトウェアアプリケーションおよび/またはウェブサービスソフトウェアアプリケーションに対するあまり大きな変更なしに単一ソフトウェアフレームワークによってアクセスすることができない。エンタープライズサービスとウェブサービスの両方にアクセスしようとする従来の試みは、多くの場合に特定のサービスによって取り扱われるべき必要がある追加アダプテーションレイヤおよび追加帯域外データ(例えば、クッキーなど)を使用することができる。
【特許文献１】米国特許出願公開第2005/0066338号
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかし、従来の技法によって使用されるそのような追加ソフトウェアコンポーネントは、多くの場合に新しいサービスを提供することができるようになる前にかなりの量のソフトウェア実装形態を必要とする。ある種の状況においては、新しい1つまたは複数のサービスを提供する前にそのようなソフトウェア実装形態を作成することは、望ましくなく、または非実用的なこともある。
【０００６】
開示される実施形態のある種の機能と整合した方法およびシステムは、上記の1つまたは複数の問題を解決することを対象としている。
【課題を解決するための手段】
【０００７】
本発明の一態様は、サービスコンシューマ(service consumer)に対するサービスプロバイダ(service provider)による1つまたは複数のサービスを提供するための方法を含んでいる。本方法は、少なくとも1つのコアサービス(core service)および少なくとも1つの複合サービス(compound service)を記述するメタモデル(meta-model)を定義すること、そのメタモデルに基づいてそのコアサービスについてのモデルを作成すること、およびそのモデルに基づいてサービスプロバイダ上にコアサービスを実装することを含むことができる。本方法はまた、サービスプロバイダ上でその複合サービスを実装すること、およびサービスコンシューマ上でコアサービスおよび複合サービスに動的にアクセスする包括的アクセスインターフェース(generic access interface)を実装することを含むこともできる。
【０００８】
本発明の別の態様は、サービスコンシューマが、サービスプロバイダによって提供されるサービスにアクセスするための方法を含んでいる。本方法は、サービスコンシューマが包括的アクセスインターフェースおよびモデルアクセスインターフェース(model access interface)を含むことができる一方で、サービスプロバイダによって提供されるサービスを要求する、サービスコンシューマによるサービス要求を取得することを含むことができる。本方法はまた、要求されるサービスが、コアサービスであるか、または複合サービスであるかを判定すること、およびサービスがコアサービスである場合に、モデルアクセスインターフェースがコアサービスにアクセスするために使用可能であるかどうかを判定することも含むことができる。さらに、本方法は、サービスがコアサービスでありモデルアクセスインターフェースが使用可能である場合に、サービスプロバイダによって提供されるサービスにアクセスするためのモデルアクセスインターフェースを選択することを含むこともできる。
【発明を実施するための最良の形態】
【０００９】
次に添付図面に示される例示の実施形態について詳細に言及することにする。図面全体を通して同じ参照番号を使用して、同じ部分または同様な部分について言及する。
【００１０】
図1は、本発明のある種の実施形態を組み込むコンピュータシステムを有する例示の操作環境100を示すものである。操作環境100は、通信ネットワークによって相互接続されたコンピュータシステムと、ある種のサービスを実行するように提供されたコンピュータソフトウェアプログラムとを含むことができる。操作環境100は、イントラネット102と、イントラネット102に接続されたサービスプロバイダコンピュータ106(「プロバイダ106」)と、インターネット104と、インターネット104に接続されたサービスコンシューマコンピュータ108(「コンシューマ108」)とイントラネット102とインターネット104の両方にインターフェースして、セキュリティ、プロトコル変換、アドレス指定などのネットワークゲートウェイファンクションを提供するゲートウェイ110とを含むことができる。
【００１１】
イントラネット102は、適切な認可を有するメンバおよび/または顧客によってアクセス可能に設計された組織または企業体に関連するコンピュータネットワークなど、限られたネットワークアクセスを有する1つまたは複数のネットワークセグメント(network segment)から成るプライベートネットワーク(private network)を含むことができる。プロバイダ106を使用して、その企業体によって提供されるある種のサービスをホストし、かつ/または実装することができる。1つのサービスプロバイダコンピュータだけが図1に示されるが、任意数のサービスプロバイダコンピュータが含められてもよく、諸サービスは、複数のサービスプロバイダコンピュータ上に分散されてもよい。
【００１２】
インターネット104は、TCP/IP(transmission control protocol/internet protocol伝送制御プロトコル/インターネットプロトコル)または他の適切な任意のタイプのネットワークプロトコルを介して相互接続された1つまたは複数の任意のパブリックアクセス可能ネットワークを含むことができる。インターネット104は、一般にイントラネット102から分離されていると考えることができるが、ゲートウェイ110を介してイントラネット102に接続することもできる。コンシューマ108は、インターネット104およびイントラネット102を介してプロバイダ106にアクセスして、プロバイダ106によって提供されるサービスを要求することができる。図1は、インターネット104に接続されたたった1つのサービスコンシューマコンピュータだけを示すが、任意数のサービスコンシューマコンピュータが含められてもよい。さらに、複数のサービスコンシューマコンピュータが、同時にプロバイダ106にアクセスすることもできる。
【００１３】
プロバイダ106および/またはコンシューマ108は、適切な任意のタイプのコンピュータシステムを含むことができる。図2は、プロバイダファンクションおよび/またはコンシューマファンクションに関連するコンピュータソフトウェアアプリケーションなど、プロバイダ106および/またはコンシューマ108の機能を実行するようにプロバイダ106および/またはコンシューマ108として構成することができる例示のコンピュータシステム200の機能ブロック図を示している。さらに、コンピュータシステム200は、プロバイダ106および/またはコンシューマ108によって実装されるコンピュータソフトウェアアプリケーションを設計し実装するコンピュータプラットフォームとして構成することもできる。コンピュータソフトウェアアプリケーションは、例えば設計ドキュメントおよび/または様々なモデルに含められる抽象記述に基づいて実装し、または作成することができる。
【００１４】
図2に示されるように、コンピュータシステム200は、プロセッサ202と、RAM(random access memoryランダムアクセスメモリ)204と、ROM(read-only memory読取り専用メモリ)206と、コンソール208と、入力デバイス210と、ネットワークインターフェース212と、データベース214と、ストレージ216とを含むことができる。リストアップされたデバイスのタイプおよび数は、例示的なものにすぎず、限定することを意図していないことが理解される。リストアップされたデバイスの数は変更することができ、他のデバイスが追加されてもよい。
【００１５】
プロセッサ202は、適切な任意のタイプの汎用マイクロプロセッサ、デジタル信号処理プロセッサ、またはマイクロコントローラを含むことができる。プロセッサ202は、コンピュータプログラム命令のシーケンスを実行して、以上で説明されるような様々なファンクションを実施することができる。プロセッサ202は、RAM204、ROM206、コンソール208、入力デバイス210、ネットワークインターフェース212、データベース214、および/またはストレージ216など、他のデバイスに結合され、またはアクセスして、コンピュータプログラム命令および/またはプログラムデータを実行することができる。
【００１６】
コンピュータプログラム命令は、プロセッサ202によって実行するために読取り専用メモリ(ROM)206および/またはストレージ216からRAM204へとロードすることができる。ストレージ216は、プロセッサ202が、コンピュータ実装されたプロセスを実施するために必要とする可能性がある任意のタイプの情報を記憶するように設けられた適切な任意のタイプのマスストレージ(mass storage)を含むことができる。例えば、ストレージ216は、1つまたは複数のハードディスクデバイス、光ディスクデバイス、あるいは他のタイプのストレージデバイスを含むことができる。
【００１７】
コンソール208は、コンピュータシステム200のユーザに対して情報を表示するGUI(graphic user interfaceグラフィックユーザインターフェース)または他のタイプのユーザインターフェースを提供することができる。コンソール208は、適切な任意のタイプのコンピュータディスプレイデバイスまたはコンピュータモニタを含むことができる。入力デバイス210は、ユーザがコンピュータシステム200に情報を入力するために設けることができる。入力デバイス210は、キーボード、マウス、または他の光または無線のコンピュータ入力デバイスなどを含むことができる。
【００１８】
ネットワークインターフェース212は、コンピュータシステム200がイントラネット102および/またはインターネット104を介してリモートにアクセスすることができるように通信接続を実現することができる。データベース214は、プロセッサ202によって使用される任意の情報を含むことができる。データベース214は、任意のタイプの商用データベースまたはカスタマイズされたデータベースを含むことができる。データベース214はまた、データベース中の情報を解析するための解析ツールを含むこともできる。
【００１９】
プロセッサ202は、ある種のソフトウェアプログラムを実行して、操作環境100中においてサービスを提供するソフトウェアフレームワークを実装することができる。図3は、そのソフトウェアフレームワークの例示のソフトウェアアーキテクチャを示している。
【００２０】
図3に示されるように、ソフトウェアアーキテクチャ300は、サービス実装レイヤ(service implementation layer)302、サービスリポジトリ(service repository)308、サービスレイヤ(service layer)320、アクセスレイヤ(access layer)318、モデルアクセスおよび包括的アクセスのプロキシレイヤ(proxy layer)316、エンタープライズアプリケーション310、ウェブアプリケーション312、他のアプリケーション314などを含むことができる。さらに、サービス実装レイヤ302は、コアサービス304および複合サービス306を含むことができる。ソフトウェアコンポーネントの数は例示的なものにすぎず、限定することを意図してはいない。任意数のソフトウェアコンポーネントは、ソフトウェアアーキテクチャ300によって実装することができる。
【００２１】
サービス実装レイヤ302は、サービスプロバイダ(例えば、プロバイダ106)によって提供される適切な任意のタイプのサービスを含むことができる。サービスは、あらかじめ定義され、自己完結し、かつ/または特定のタイプのソフトウェアプラットフォームおよび/または他のファンクションのコンテキストまたは状態から独立なファンクションを意味することができる。サービスは、サービスインターフェースを介してアクセスすることができる。サービスを提供するソフトウェアエンティティ、あるいはそのソフトウェアエンティティがサービスを提供するコンピュータプラットフォームは、サービスプロバイダと称することができ、サービスを要求するソフトウェアエンティティ、あるいはそのソフトウェアエンティティがサービスを要求するコンピュータプラットフォームは、サービスコンシューマと称することができる。サービスプロバイダはまた、ある種の状況下ではサービスコンシューマになることもできる。さらに、ソフトウェアエンティティが様々なタイプの接続(例えば、ネットワーク接続または論理接続など)を介して互いに通信することができるネットワークコンピューティング環境(例えば、操作環境100)においては、サービスは、情報を交換するための接続のエンドポイントと称することもできる。異なるサービスは、これらの接続を介して情報を交換することもできる。
【００２２】
サービス実装レイヤ302は、複数の異なるタイプのサービスを含むように構成することができる。これらのサービスは、対応するサービスインターフェースを介して定義されるオペレーションを有するサービスの集まりとして組織化することができる。ソフトウェアアーキテクチャ300は、様々なアプリケーションによりこれらのサービスに対するアクセスを可能とし、かつ/または諸サービスの間の通信を管理するサービス実装レイヤ302を介してこれらのサービスを提供するように設計し、かつ/または構成することができる。したがって、ソフトウェアアーキテクチャ300は、サービスおよびそれらの相互接続の観点からソリューション(solution)を提供するサービス指向アーキテクチャと称することができる。
【００２３】
ソフトウェアアーキテクチャ300は、ソフトウェアモデリングツール(software modeling tool)を使用し、サービス実装レイヤ302によって提供されるべきサービスを定義し組織化するように構成することができる。UML(unified modeling language統合モデリング言語)などのソフトウェアモデリングツールを使用することにより、諸サービスは、1組のモデルに基づいて組織化することができる。一連の変換をモデル間に課して、諸サービスを実装（implement）することができる。モデルマッピング、モデル変換、および/またはコード生成など、そのような変換は、ソフトウェアモデリングツールによって自動的に実施し、あるいはソフトウェア開発業者などのユーザが手作業で実施することができる。したがって、ソフトウェアアーキテクチャ300はまた、モデル駆動型サービス指向アーキテクチャと称することもできる。
【００２４】
サービス実装レイヤ302によって提供されるサービスを定義するモデル(すなわち、サービス特有のモデル)は、メタモデルで記述することができる。メタモデルは一般に、統合モデリング言語(UML)などの言語を記述するモデルを意味することができ、この言語からモデルを表現することができる。すなわち、メタモデルは、ビジネスモデル、医学的モデル、ウェアハウスモデルなどの様々なサービス特有のモデルを作成するためのビルディングブロックを含むことができる。図示するために、メタモデルによって記述されるサービス特有のモデルは、具体的なメタモデル、または単にモデルと称して、サービス特有のモデルが、特定のメタモデルを使用して定義されることを指し示すことができ、またメタモデルにとって使用可能なある種の変換を受けることができる。例えば、具体的なメタモデルは、メタデータによって表現することができ、このメタデータは、XMI(XML metadata interchange XMLメタデータ交換)などある種のデータ交換規格を使用して変換し、またはアクセスすることができる。
【００２５】
以上に説明されるように、サービス実装レイヤ302は、異なるタイプのサービスを含むことができる。ある種の実施形態においては、サービス実装レイヤ302は、コアサービス304と複合サービス306とを含むことができる。しかし、他のタイプのサービスを使用することもできる。
【００２６】
コアサービスは、個別にアクセスすることができるオペレーションの微細細分性をサポートするサービスのことを意味することができる。オペレーションの細分性は、そのオペレーションによってアクセスされるべきサービスの属性の範囲または領域を意味することができる。オペレーションの微細細分性により、属性の一部分または個別の属性は、単一のオペレーションによってアクセスし、または操作することができるようになり得る。コアサービスは、異なるオペレーションによって個別にアクセスすることができるオペレーション多数の属性を含むことができる。さらに、コアサービスは、そのコアサービスのランタイム状態が、コアサービスのオペレーション中に保持され得る点でステートフルとすることができる。例えば、コアサービスは、個別の属性のステータスを提供し、または個別の特性のうちの特性を変更するクエリインターフェース(query interface)を含むことができる。コアサービス304は、特定のコアサービスの適切な任意のタイプの実装形態(すなわち、特定のコアサービスのバックエンド実装形態)を含むことができ、またそのサービスに関連した状態情報を含むこともできる。
【００２７】
例えば、コアサービス304は、ビジネストランザクション中に作成される購買注文を含むことができる。そのコアサービス購買注文は、顧客情報(例えば、顧客名、住所、電話番号など)、発注情報(例えば、注文番号、日付、場所など)、およびアイテム情報(例えば、ストック番号、価格、場所など)に関連する属性を含むことができる。さらに、ヘッダ情報を購買注文に含めて、その情報にアクセスするためのインデックスを提供することができる。また、ノートを含めて任意のテキストメッセージを記録することもできる。
【００２８】
さらに、コアサービス購買注文により、サービスコンシューマは、他の属性にアクセスすることなく、ある種の属性に個別にアクセスすることができるようになり得る。例えば、そのサービスコンシューマは、注文情報にアクセスすることなく、顧客情報にアクセスすることができる。代わりに、サービスコンシューマは、単に顧客名だけにアクセスすることもできる。サービスコンシューマとサービスプロバイダとの間で交換されるデータ量は、要求される情報だけに制限することができる。さらに、説明されるように、コアサービス304のソフトウェア実行の状態情報は、コアサービス304のサービスプロバイダが保持することができる。
【００２９】
複合サービスは、コアサービスに比較してオペレーションの大きな細分性をサポートするサービスを意味することができる。オペレーションの大きな細分性により、属性の大部分または属性のすべては、単一のオペレーションによってアクセスし、または操作することができるようになり得る。したがって複合サービスは、全体または大きなグループにおけるサービス属性にアクセスする限られた数のオペレーションを含むことができる。さらに、複合サービスは、複合サービスがサービス属性に個別にアクセスすることができないように構成することができ、また属性のすべてまたは属性の組にアクセスするように構成することができる。そのように大きな細分性は、単一のオペレーションによって交換されるべき大量のデータを含むことができる。また、複合サービスの状態情報は、しばしば複合サービスのオペレーション中に保持されないこともある。複合サービス306は、特定の複合サービスの適切な任意のタイプの実装形態(すなわち、特定の複合サービスのバックエンド実装形態)を含むことができる。
【００３０】
購買注文の以上の例に従って、複合サービス308は、購買注文サービスを含むこともできる。しかし、複合サービス購買注文は、サービスコンシューマに単一のアクセスですべての属性にアクセスすることを必要にし得る限られたインターフェースを提供することだけができるようにし、これは、サービスプロバイダとサービスコンシューマとの間で転送される大量のデータをもたらす可能性がある。さらに、複合サービス306は、ステートレスであってもよい。すなわち、サービスプロバイダは、複合サービス306のソフトウェア実行の状態情報を保持することができなくてもよい。
【００３１】
サービス実装レイヤ302、またはコアサービス304と複合サービス306のバックエンド実装形態は、コアサービス304と複合サービス306を定義するモデルに基づいて適切な任意のタイプのコンピュータのハードウェアプラットフォームまたはソフトウェアプラットフォーム上に実装することができる。一実施形態においては、サービス実装レイヤ302に含まれるサービスは、複数のハードウェアおよび/またはソフトウェアのプラットフォーム上に実装することができる。
【００３２】
以上で説明されるように、メタモデルを使用してサービス特有のモデルを定義することができる。ある種の実施形態においては、統合メタモデルは、コアサービス304と複合サービス306の両方を定義するように提供することができる。すなわち、コアサービス304および複合サービス306の完全な記述は、ESDL(enterprise services definition languageエンタープライズサービス定義言語)などの統合メタモデルに含めることができる。コアサービス304および複合サービス306の個々のサービスの具体的なメタモデルは、ビジネスオブジェクトモデルや購買注文モデルなどの統合メタモデルを使用して定義することができる。コアサービス304および複合サービス306のメタモデルおよび具体的なメタモデルは、サービスリポジトリ308に記憶することができる。したがって、サービスリポジトリ308は、サービス実装レイヤ302によって提供されるサービスを記述する様々なメタデータと、そのメタデータを定義し、それにアクセスするためのインターフェースを含むこともできる。
【００３３】
統合メタモデルは、コアサービス304と複合サービス306の両方のサービスインターフェースの完全なリストを記述することができるので、コアサービス304と複合サービス306の両方に共通の定義は、コアサービス304と複合サービス306の両方について定義し、使用することができる。他方、コアサービス304と複合サービス306に共通でない定義は、統合メタモデルに別々に含めることができる。
【００３４】
以上の購買注文例においては、コアサービス購買注文(例えば、コアサービス304)は、統合メタモデルの下のビジネスオブジェクトメタモデル(business object meta-model)によって説明することができる。ビジネスオブジェクトメタモデルは、インターフェース、オペレーション、およびタイプを含むことができる。インターフェースは、サービスとインターフェースするために設けることができ、インターフェースパターン(すなわち、相互作用のあらかじめ定義された抽象定義)によって定義することができる。例えば、インターフェースパターンは、クエリ、アクセス、アクション、トランザクション、メッセージ、動的特性、変更通知、および/または値のヘルプ(value help)などを含むことができる。さらに、ビジネスオブジェクトメタモデルの動的特性は、イネーブル/ディスエーブル、必須、非アクティブ、読取り専用、作成可能、アップデート可能、および/または削除可能など適切な任意のランタイム特性を含むこともできる。
【００３５】
コアサービス購買注文メタモデルは、サービスコンシューマがコアサービス304における購買注文にアクセスする様々なオペレーションを含むことができる。例えば、コアサービス購買注文メタモデルは、購買注文のヘッダ情報を読み取る「ヘッダ読取り(read header)」オペレーション、購買注文における特定のアイテムについて検索する「アイテム発見(find item)」オペレーション、購買注文中のインデックス付け情報(例えば、ヘッダ情報)を求めて検索する「ナビゲート」オペレーション、および/または関連した情報を獲得するための「関連付けによる取出し」オペレーションなどを含むことができる。上記のオペレーションは、例示的なものにすぎず、限定することを意図してはおらず、他のオペレーションを含めることもできる。
【００３６】
さらに複合サービス購買注文メタモデルはまた、統合メタモデルの下で定義することもできる。例えば、統合メタモデルは、1つのオペレーションで購買注文におけるすべての情報を取り出す「データ読取り(read data)」オペレーションなど、1つまたは複数の複合サービスオペレーションを含むことができる。
【００３７】
ある種の実施形態においては、統合メタモデルがコアサービス304と複合サービス306の両方のインターフェースを記述するときに、統合メタモデルは、コアサービス304と複合サービス306についての別個のインターフェースを含むことができる。ある種の他の実施形態においては、統合メタモデルは、コアサービス304と複合サービス306の両方についての共通のインターフェースを含むことができる。余分な制約条件を共通のインターフェースを表すインターフェースパターンに追加して、例えばアクセスされるべきサービスのタイプなどを記述する追加の情報を提供することができる。余分な制約条件はまた、コアサービス304のインターフェースパターンに追加することもできる。コアサービス304が複合サービス306のインターフェースを介してアクセスされる場合、余分な制約条件は、より遅い速度および/またはより低い効率などの劣化した性能を伴うアクセスを可能にすることができる。
【００３８】
例示の購買注文を定義するビジネスオブジェクトメタモデルは、例示の目的のためにすぎないことに注意すべきである。サービスリポジトリ308は、統合メタモデルの下で定義される他のエンタープライズに関連した具体的な任意のメタモデルを含むことができる。例えば、サービスリポジトリ308は、コアサービス304と複合サービス306の両方についてのビジネスウェアハウスおよびOLAP(online analytical processオンライン解析的プロセス)などのためのビジネス情報メタモデルを含むことができる。
【００３９】
具体的なメタモデルが統合メタモデルの下で定義され、メタデータが生成され、サービスリポジトリ308に記憶された後に、コアサービス304および複合サービス306は、サービスレイヤ320を介してソフトウェアアプリケーションによってアクセスすることができる。サービスレイヤ320はまた、具体的なメタモデルおよび統合メタモデルに基づいて作成することもできる。サービスレイヤ320は、サービス実装レイヤ302(例えば、コアサービス304、複合サービス306など)およびサービスリポジトリ308についてのブローカとしての役割を果たすことができる。例えば、サービス層320は、インターフェースパターン中の余分な制約条件中で提供される追加情報を使用して、サービス要求がコアサービス304または複合サービス306について意図されるかどうかを判定することができる。サービスレイヤ320は、ある種の要求に応答して、使用可能なサービスを識別するためにサービスリポジトリ308にアクセスすることもできる。
【００４０】
サービスレイヤ320、サービス実装レイヤ302、およびリポジトリ308は、サービスを提供するサービスプロバイダ(例えば、プロバイダ106)によって実装することができる。サービスコンシューマは、サービスプロバイダに対してサービス要求メッセージを送信し、サービスプロバイダからの戻された応答メッセージを受信することにより、サービスにアクセスすることができる。実際には、サービスコンシューマは、エンタープライズアプリケーション310、ウェブアプリケーション312、他のアプリケーション314などある種のクライアントソフトウェアアプリケーションを使用することにより、サービスにアクセスすることができる。
【００４１】
エンタープライズアプリケーション310は、コアサービス304にアクセスするように設計された適切な任意のタイプのソフトウェアアプリケーションを含むことができ、ウェブアプリケーション312は、複合サービス306にアクセスするように設計された適切な任意のタイプのソフトウェアアプリケーションを含むことができる。他方、他のアプリケーション314は、ある種の共通の規格に従ってソフトウェアアーキテクチャ300の特定の構造の知識なしに一般的なサービスにアクセスするように独立に設計された適切な任意のタイプのサードパーティソフトウェアアプリケーションを含むことができる。エンタープライズアプリケーション310、ウェブアプリケーション312、および他のアプリケーション314のすべては、モデルアクセスおよび包括的アクセスのプロキシレイヤ316を介してサービス実装レイヤ302にアクセスすることができる。
【００４２】
モデルアクセスおよび包括的アクセスのプロキシレイヤ316は、サービス実装レイヤ302に対するアクセスをスムーズに進めまたは実現する任意のソフトウェアプログラムを含むことができる。例えば、モデルアクセスおよび包括的アクセスのプロキシレイヤ316は、サービス実装レイヤ302によって提供される任意のサービスにアクセスするための包括的なインターフェースを提供することができる。その包括的インターフェースを使用して、使用可能なサービスプロバイダを動的に調べ、その使用可能なサービスプロバイダによって提供されるサービスのインターフェースおよび/またはオペレーションを取り出すことができる。次いで取り出されたインターフェースおよび/またはオペレーションを使用して、サービスにアクセスすることができる。包括的なアクセスをエンタープライズアプリケーション310、ウェブアプリケーション312、および他のアプリケーション314のうちのどれかが使用して、コアサービス304または複合サービス306のいずれかにアクセスすることができる。
【００４３】
他方、モデルアクセスおよび包括的アクセスのプロキシレイヤ316は、サービス実装レイヤ302によって提供される任意のサービスにアクセスするためのモデルアクセスインターフェースを提供することができる。そのモデルアクセスインターフェースは、特定の具体的なメタモデルにアクセスする適切な任意のタイプのインターフェースを含むことができる。モデルアクセスインターフェースは、具体的なメタモデルから導き出すことができ、ビジネスオブジェクトメタモデルなど、特定のメタモデルクラスに対応することができる。特定の具体的なメタモデルは、あらかじめ定義され、よくドキュメント化されているので、具体的なメタモデルのインターフェースは、ソフトウェアアプリケーション(例えば、エンタープライズアプリケーション310)に知られていることもあり、動的調査または動的結合は、不必要なこともある。すなわち、速度および効率は、かなり増大させることができる。
【００４４】
モデルアクセスインターフェースも包括的アクセスインターフェースも、サービス実装レイヤ302のサービスを提供しアップデートするために必要なこともある。例えば、新しいサービス(すなわち、追加されるべきサービス、または既存のサービスに対するアップデート)が、元のソフトウェア製品中で実装されるときに、クライアントアプリケーションは、1つまたは複数のモデルアクセスインターフェースを使用して、その新しいサービスに速やかにアクセスすることができる。さらに、新しいサービスが、既存のソフトウェア製品に後で追加されるときに、クライアントアプリケーションは、そのクライアントアプリケーションを変更することなく、1つまたは複数の包括的アクセスインターフェースを介してその新しいサービスにアクセスすることを直ちに開始することができる。モデルアクセスインターフェースは、クライアントアプリケーション中において後で開発され展開（deploy）されて、それらのアプリケーションのアクセス効率を改善することができる。
【００４５】
さらに、新しいインターフェース、新しい特性などの新しい1つまたは複数のサービスのメタモデルは、適切な任意のタイプのリポジトリ構成ツールを使用することにより、サービスリポジトリ308に追加することができる。アップデートされたリポジトリ308は、新しい1つまたは複数のサービスに関するサービスコンシューマからの問い合わせに応答することができる。
【００４６】
クライアントアプリケーション(例えば、エンタープライズアプリケーション310、ウェブアプリケーション312など)とモデルアクセスおよび包括的アクセスのレイヤは1つまたは複数のサービスコンシューマ(例えば、コンシューマ108)によって実装することができる。モデルアクセスおよび包括的アクセスのプロキシレイヤ316は、アクセスレイヤ318を介してサービスプロバイダのサービスレイヤ320にアクセスすることができる。
【００４７】
アクセスレイヤ318は、DCOM(distributed component object model分散コンポーネントオブジェクトモデル)、SOAP(simple object access protocol単純オブジェクトアクセスプロトコル)、CORBA(common object request broker architectureコモンオブジェクト要求ブローカアーキテクチャ)、JINIネットワークアーキテクチャ、RPC(remote procedure callリモートプロシージャコール)、RMI(remote method invocationリモートメソッド呼出し)など、特定の規格に従って通信および/または他のサポートするファンクションを提供する適切な任意のタイプのソフトウェアプログラムを含むことができる。アクセスレイヤ318は、サービスプロバイダ(例えば、プロバイダ106)とサービスコンシューマ(例えば、コンシューマ108)の両方によって実装して、サービスプロバイダとサービスコンシューマとの間の情報を交換することができる。
【００４８】
例えば、サービスプロバイダとサービスコンシューマが同じコンピュータ上で実装される場合のある種の状況においては、アクセスレイヤ318は、サービスコンシューマが、サービスプロバイダによって提供される諸サービスに直接にアクセスすることができるようにするDMI(direct method invocation直接メソッド呼出し)インターフェースを含むこともできる。ある種の実施形態においては、その直接アクセスは、ソフトウェアファンクションコールとして実装することができる。
【００４９】
ソフトウェアアーキテクチャ300によるソフトウェアフレームワークまたはソフトウェアプログラムの作成および/またはオペレーションは、コンピュータシステム200など、1つまたは複数のコンピュータシステムによって実行することができる。図4は、コンピュータシステム200、および/またはコンピュータシステム200のユーザによって、またより詳細にはある種の開示された実施形態と整合したプロセッサ202によって実施することができる例示のソフトウェア作成プロセスを示している。
【００５０】
図4に示されるように、プロセッサ202は、ソフトウェアアーキテクチャ300において提供されるべき1つまたは複数のコアサービスを識別することができる(ステップ402)。プロセッサ202は、提供されるべきすべてのサービスとサポートされるべきサービスのすべてのインターフェースを識別し、かつ/またはドキュメント化することができる。プロセッサ202は、ソフトウェアアーキテクチャ300において提供されるべき複合サービスを識別することもできる(ステップ404)。そのように行う際に、プロセッサ202は、識別された複合サービスのすべてのインターフェースを提供することもできる。
【００５１】
さらに、プロセッサ202は、識別されたコアサービスと複合サービスの完全な記述を提供する統合メタモデルを定義することができる(ステップ406)。統合メタモデルは、以前に説明されるようにコアサービスと複合サービスの両方のインターフェースの完全なリストを含むことができる。統合メタモデルが定義された後に、プロセッサ202は、コアサービスと複合サービスを記述する1つまたは複数のモデルまたは具体的なメタモデルを作成することができる(ステップ408)。諸モデルは、新しいサービスが追加されるべきときにはいつでも再使用することができる。
【００５２】
モデルに基づいて、プロセッサ202は、サービスプロバイダ(例えば、プロバイダ106)についての1つまたは複数のコアサービス(例えば、コアサービス304)を実装することができる(ステップ410)。プロセッサ202はまた、サービスプロバイダについての1つまたは複数の複合サービス(例えば、複合サービス306)を実装することもできる(ステップ412)。コアサービスおよび複合サービスは、異なるソフトウェア構造またはプログラミング言語で実装することができる。さらに、プロセッサ202は、ある種のコアサービスおよび/またはある種の複合サービスを提供する任意のサードパーティソフトウェアプログラムを組み込むこともできる。
【００５３】
様々な具体的なメタモデルまたはモデルは、モデルリポジトリに記憶することができる。プロセッサ202は、そのリポジトリを作成し、かつ/または構成して、統合メタモデル、具体的なメタモデル、および任意のメタモデルまたは他の関連したデータをリポジトリに記憶することができる(ステップ414)。プロセッサ202は、適切な任意のタイプの構成ツールを使用してリポジトリを構成することができる。さらに、プロセッサ202は、リポジトリを任意のサービスコンシューマがアクセスして、サービスを見出し、サービスにアクセスすることができるように、リポジトリの他の機能を実装することもできる。
【００５４】
さらにプロセッサ202は、サービス(例えば、コアサービス304および複合サービス306など)にアクセスするためのアクセス規格(例えば、アクセスレイヤ318)を選択することができる(ステップ416)。プロセッサ202は、諸サービスのソフトウェアプラットフォーム、プログラミング言語、操作環境などに基づいてアクセス規格を選択することができる。複数の規格を同時にサポートすることができる。
【００５５】
プロセッサ202は、コアサービスおよび複合サービスについてのサービスインターフェース(例えば、サービスレイヤ320)を提供することもできる(ステップ418)。プロセッサ202は、特定のコアサービスおよび複合サービスと独立なサービスインターフェースを実装して、例えば新しいコアサービスおよび/または複合サービスをアップデートし、かつ/または追加するときの努力を低減させ、あるいはなくすることができる。
【００５６】
プロセッサ202は、コアサービスおよび複合サービスにアクセスするクライアントソフトウェアフレームワークを実装することもできる。さらにプロセッサ202は、コアサービスおよび複合サービスにアクセスする包括的アクセスインターフェースを実装することもできる(ステップ420)。プロセッサ202は、包括的アクセスインターフェースを使用して、統合メタモデルの下の任意のコアサービスおよび/または複合サービスに基づいたモデルにアクセスすることができるように、任意の特定のコアサービスおよび/または複合サービスから独立した包括的アクセスインターフェースを実装することができる。アクセスされるべきサービスの特定のタイプ、インターフェース、および/またはオペレーションは、ランタイム中にサービスに動的にアクセスする包括的アクセスインターフェースに渡すこともできる。
【００５７】
プロセッサ202は、特定のサービス特有のメタモデル実装形態にアクセスするモデルアクセスインターフェースを実装することもできる(ステップ422)。モデルアクセスインターフェースは、コアサービスおよび/または複合サービスの特定のサービスに対応する具体的なメタモデルオブジェクトに基づいて実装することができる。さらに、プロセッサ202は、モデルアクセスインターフェースおよび/または包括的インターフェースを使用するクライアントアプリケーションを実装し展開することもできる(ステップ424)。クライアントアプリケーションのユーザは、モデルアクセスインターフェースおよび/または包括的インターフェースを介してコアサービス、複合サービス、またはその両方にアクセスすることができる。
【００５８】
ソフトウェアフレームワークまたはソフトウェアプログラムの作成の後に、ソフトウェアフレームワークまたはソフトウェアプログラムは、サービスプロバイダ上のソフトウェアフレームワークまたはソフトウェアプログラムのユーザによって展開することができる。さらに、新しいサービスを既存の、または展開済みのコアサービスおよび/または複合サービスに追加することもでき、また既存のサービスをアップデートすることもできる。図5は、新しいサービスを追加し既存のサービスをアップデートするための例示のアップグレードするプロセスを示している。
【００５９】
図5に示されるように、プロセッサ202は、新しいサービスまたはサービスアップデートを実装することができる(ステップ502)。新しいサービスまたはサービスアップデートは、統合メタモデルの下の記述を有する新しいモデルに基づいたものとすることができる。しかし、新しいサービスまたはサービスアップデートのインターフェースが、あらかじめ定義されたメタモデルに完全に含まれない場合、新しいインターフェースをメタモデルに追加することができ、リポジトリ(例えば、サービスリポジトリ308)もまたアップデートすることができる。リポジトリをアップデートすることは、以上で説明されるようにある種の構成ツールを使用してリポジトリを構成することにより実施することができる。
【００６０】
プロセッサ202は、既存のソフトウェアフレームワークまたはソフトウェアプログラム中において新しいサービスまたはサービスアップデートを展開することができる(ステップ504)。すなわち、新しいサービスは、アクセスするために使用可能にするためにバックエンドサービス実装レイヤ302に追加することができる。他方、プロセッサ202はまた、包括的アクセスインターフェースに基づいて新しいサービスまたはサービスアップデートについての既存のクライアントアプリケーションに対する変更を実装し、展開することもできる(ステップ506)。包括的アクセスインターフェースは、特定のタイプのコアサービスまたは複合サービスから独立したものとすることができるので、既存のクライアントアプリケーションに対する変更は最小限に、あるいはなくすることができる。新しいサービスまたはサービスアップデートは、包括的アクセスインターフェースを使用して通常のソフトウェア変更またはアップグレーディングによって必要とされる期間よりもかなり短い期間の後にアクセスすることができる。
【００６１】
諸サービスは、包括的アクセスインターフェースを介してアップデートされたクライアントアプリケーションによってアクセスすることができるが、プロセッサ202はまた、新しいサービスまたはサービスアップデートに対するさらに具体的なアクセスを実現するモデルアクセスインターフェースを実装することもできる(ステップ508)。モデルアクセスインターフェースは、包括的アクセスインターフェースに比べて実装するために、より長い時間とより多くの努力を要する可能性があるが、アクセスの速度および効率をかなり改善することができる。
【００６２】
モデルアクセスインターフェースが実装された後に、プロセッサ202は、モデルアクセスインターフェースに基づいてクライアントアプリケーションに対する変更を実装し展開することができる(ステップ510)。包括的アクセスインターフェースに比べてモデルアクセスインターフェースに基づいては、クライアントアプリケーションに対する変更を実装し展開するために、より多くの努力を必要とする可能性があるので、もっと長い時間がかかって初めて、クライアントアプリケーションは諸サービスにアクセスすることができる。しかし、諸サービスは、最初に包括的アクセスインターフェースによってアクセスされてもよいが、それと同時にモデルアクセスインターフェースは実装されている。したがって、諸サービスは、後でモデルアクセスインターフェースによってアクセスすることができる。
【００６３】
図6は、ソフトウェアアーキテクチャ300と整合した、ランタイム中にサービスを提供しサービスにアクセスするためのさらに詳細を伴う例示のソフトウェアアーキテクチャ600を示している。ソフトウェアアーキテクチャ600は、サービス実装レイヤ601(例えばサービス実装レイヤ302)と、ソフトウェアコントローラ602と、サービスランタイムリポジトリ608(例えば、サービスリポジトリ308)と、ローカルクライアントプロキシ604と、サービスマネージャ606(例えば、サービスレイヤ320)とを含むことができる。ソフトウェアアーキテクチャ600はまた、クライアントアプリケーション628と、型付けプロキシ(typed proxy)630-1から630-4と、型付けリポジトリプロキシ(typed repository proxy)632と、ビジネスオブジェクトモデルプロキシ642と、ビジネス情報モデルプロキシ644と、プロセスオブジェクトモデルプロキシ646と、包括的クライアントプロキシ648と、リポジトリマネージャプロキシ650とを含むこともできる。
【００６４】
プロキシは、一般に別のアプリケーションまたはコンピュータシステムに関与する詳細を示さないまま、別のアプリケーションまたはコンピュータシステムの代わりにある種の1つまたは複数のファンクションおよび/またはある種の1つまたは複数のオペレーションを実施するソフトウェアエージェントと称することができる。例えば、ビジネスオブジェクトモデルプロキシ642は、統合メタモデルの下で定義されるビジネスオブジェクトモデルのサービスに対応することができる。
【００６５】
さらに、ソフトウェアアーキテクチャ600はまた、サービスマネージャプロキシ624と、エンタープライズデータオブジェクト626と、直接メソッド呼出し(DMI)620と、単純オブジェクトアクセスプロトコル(SOAP)チャネル622などを含むこともできる。当業者なら、他のコンポーネントおよび/または異なる数のコンポーネントをソフトウェアアーキテクチャ600によって実装することができるので、リストアップされたコンポーネントは、単に例示的なものにすぎず、限定することを意図していないことが理解されよう。
【００６６】
ビジネスオブジェクトプロバイダ612、ビジネス情報プロバイダ614、ビジネスプロセスプロバイダ616、および複合サービスプロバイダ618によって提供される複合サービスおよびコアサービスについての完全な記述を含むメタモデル(例えば、統合メタモデル)を定義することができる。サービス実装レイヤ601は、ビジネスオブジェクトプロバイダ612と、ビジネス情報プロバイダ614と、ビジネスプロセスプロバイダ616と、複合サービスプロバイダ618とを含むことができる。ビジネスオブジェクトプロバイダ612、ビジネス情報プロバイダ614、およびビジネスプロセスプロバイダ616は、様々なコアサービスを提供することができる。
【００６７】
より詳細には、ビジネスオブジェクトプロバイダ612は、ビジネストランザクションの具体的なメタモデル記述に基づいてコアサービスを提供することができ、ビジネス情報プロバイダ614は、ビジネスウェアハウス(例えば、データベースウェアハウス)およびオンライン解析的処理(OLAP)を記述する具体的なメタモデルに基づいてコアサービスを提供することができ、ビジネスプロセスプロバイダ616は、特定の顧客のための特定の出力、または組織内のマーケット横断時間(market across time)および空間を生成するように設計されたビジネスアクティビティを記述する具体的なメタモデルに基づいてコアサービスを提供することができる。
【００６８】
定義されたメタモデル、具体的なメタモデル、および関連するメタデータは、サービスランタイムリポジトリ608(例えば、リポジトリ308)に記憶することができ、ランタイム中にアクセスすることができる。諸サービスとサービスランタイムリポジトリ608は、サービスマネージャ606(例えば、サービスレイヤ320)を介してアクセスすることができる。
【００６９】
さらに、ソフトウェアコントローラ602は、サービスプロバイダ(例えば、ビジネスオブジェクトプロバイダ612、ビジネス情報プロバイダ614、ビジネスプロセスプロバイダ616、および複合サービスプロバイダ618)と、サービスマネージャ606と、サービスランタイムリポジトリ608との間の相互作用を調整することができる。例えば、ソフトウェアコントローラ602は、サービスプロバイダおよび/またはサービスリポジトリ608に対するアクセスをスムーズに進める命名サービスやディレクトリサービスなど、ある種のサービスハンドラおよび/またはウェブサービスユーティリティを提供することができる。ソフトウェアコントローラ602はまた、統合メッセージハンドリング、接続チャネル通知、および/または動的特性ハンドリングなどを提供することもできる。
【００７０】
クライアントアプリケーション628(例えば、エンタープライズアプリケーション310、ウェブアプリケーション312、他のアプリケーション314など)は、異なるインターフェースを介してサービスプロバイダにアクセスすることができる。例えば、クライアントアプリケーション628は、包括的クライアントプロキシ648(例えば、包括的アクセスインターフェース)を直接に使用して、あるいは型付けプロキシ630-4を介して包括的クライアントプロキシ648を使用して、サービスプロバイダにアクセスすることができる。クライアントアプリケーション628はまた、ビジネスオブジェクトモデルプロキシ642、ビジネス情報モデルプロキシ644、またはプロセスオブジェクトモデルプロキシ646を使用して、あるいはそれぞれ型付けプロキシ630-1、型付けプロキシ630-2、または型付けプロキシ630-3を介してビジネスオブジェクトモデルプロキシ642、ビジネス情報モデルプロキシ644、またはプロセスオブジェクトモデルプロキシ646を使用してサービスプロバイダにアクセスすることもできる。
【００７１】
包括的クライアントプロキシ648は、サービス実装レイヤ601によって提供されるサービスにアクセスするための包括的アクセスインターフェースを提供することができる。包括的クライアントプロキシ648によって提供される包括的アクセスインターフェースを使用するために、対応する具体的なメタモデルおよび/またはメタデータなどの情報は、リポジトリマネージャプロキシ650を介してサービスランタイムリポジトリ608からクライアントアプリケーション628によって取得されてもよい。しかし、他のリポジトリサービスが、包括的クライアントプロキシ648によって使用されてもよい。
【００７２】
ビジネスオブジェクトモデルプロキシ642、ビジネス情報モデルプロキシ644、またはプロセスオブジェクトモデルプロキシ646は、それぞれビジネスオブジェクトプロバイダ612、ビジネス情報プロバイダ614、またはビジネスプロセスプロバイダ616に対応するサービスにアクセスするためのモデルアクセスインターフェースを提供することができる。様々なモデルプロキシは、対応するサービスプロバイダ、または対応する具体的なメタモデルによって提供される特定のタイプのコアサービスについての特定のインターフェース、特性、および/またはオペレーションを含むことができる。
【００７３】
型付けプロキシ(例えば、型付けプロキシ630-1から630-4および型付けリポジトリプロキシ632など)は、対応するプロキシ(例えば、ビジネスオブジェクトモデルプロキシ642、ビジネス情報モデルプロキシ644、プロセスオブジェクトモデルプロキシ646、包括的クライアントプロキシ648、およびリポジトリマネージャプロキシ650など)の型チェック呼出しを実現することができる。型付けプロキシによって実現される型チェックは、対応するプロキシの任意の呼出しのシンタックスをランタイムコンパイルエラーおよび/または他のタイプのランタイムエラーを低減させるために正しいものとして保証することができる。
【００７４】
さらに、プロキシは、サービスマネージャプロキシ624を介してサービスプロバイダにアクセスすることができる。サービスマネージャプロキシ624は、サービスマネージャ606を介してサービスプロバイダに対する接続を実現する機能インターフェースまたはメソッド呼出しインターフェースを含むことができる。サービスマネージャプロキシ624はまた、一部または全部のプロキシに共通のデータコンテナを提供するエンタープライズデータオブジェクト626を含むこともできる。サービスマネージャプロキシ624は、直接メソッド呼出し620により、または単純オブジェクトアクセスプロトコル(SOAP)チャネル(例えば、アクセスレイヤ318など)を経由したサービスマネージャ606に対する接続を実現することができる。他のミドルウェア規格が、使用されてもよい。
【００７５】
手段、クライアントアプリケーション628が、サービスプロバイダと同じコンピュータプラットフォーム上にあるときなど、直接メソッド呼出し620が使用されるときには、ローカルクライアントプロキシ604を使用して、他のタイプのアクセスについてのメッセージ処理の代わりに、メソッド呼出し(またはファンクションコール)を取り扱うことができる。さらに、サービスマネージャプロキシ624はまた、SDO規格に準拠したサードパーティアプリケーションが、サービスマネージャプロキシ624を介してサービスプロバイダにアクセスすることができるように、SDO(service data objectサービスデータオブジェクト)652をサポートすることもできる。
【００７６】
ソフトウェアアーキテクチャ600によるソフトウェアフレームワークを作成し、かつ/またはアップデートすることは、ソフトウェアアーキテクチャ300によるソフトウェアのフレームワークまたはプログラムと同様の方法で実行することができる。ソフトウェアアーキテクチャ600によるクライアントアプリケーションの操作プロセスは、より詳細なオペレーションを含むことができる。図7は、コンピュータシステム200によって、より詳細にはプロセッサ202によって実施することができる例示のクライアントアプリケーション操作プロセスを示している。
【００７７】
図7に示されるように、クライアントアプリケーション操作プロセスの最初にプロセッサ202は、サービス要求を取得することができる(ステップ702)。クライアントアプリケーション628のユーザが、クライアントアプリケーション628のある種のプログラムを呼び出すときに、あるいは他の任意のソフトウェアプログラムによって要求されるときに、プロセッサ202は、サービス要求を取得することができる。サービス要求を取得した(ステップ702)後に、プロセッサ202は、要求されたサービスがコアサービスか、または複合サービスかを判定することができる(ステップ704)。プロセッサ702が、要求されたサービスが複合サービスであることを判定する場合(ステップ704;no)、プロセッサ202は、包括的クライアントプロキシ650を選択することができる(ステップ710)。
【００７８】
他方、プロセッサ202が、要求されたサービスがコアサービスであることを判定する場合(ステップ704;yes)には、プロセッサ202は、さらに対応するモデルプロキシ(例えば、ビジネスオブジェクトモデルプロキシ642、ビジネス情報モデルプロキシ644、またはプロセスオブジェクトモデルプロキシ646など)が使用可能であるかどうかを判定することができる(ステップ706)。対応するモデルプロキシが使用可能でない場合(ステップ706;no)、プロセッサ202はまた包括的クライアントプロキシを選択することもできる(ステップ710)。しかし、対応するモデルプロキシが使用可能である場合(ステップ706;yes)には、プロセッサ202は、要求されたコアサービスにアクセスするための使用可能なモデルプロキシを選択することができる(ステップ708)。
【００７９】
さらに、プロセッサ202は、型付けアクセスが要求されるかどうかを判定することができる(ステップ712)。型付けアクセスが要求される場合(ステップ712;yes)、プロセッサ202は、選択されたモデルプロキシまたは包括的クライアントプロキシについての型付けプロキシ630-1から630-4や型付けリポジトリプロキシ632など、対応する型付けプロキシをコンパイルし、かつ/または呼び出すことができる(ステップ714)。プロセッサ202はまた、型付けアクセス中に任意のコンパイルエラーを報告することもできる。型付けアクセスが要求されない場合(ステップ712;no)、あるいは対応する型付けプロキシがエラーなしでコンパイルされた(ステップ714)後に、プロセッサ202は、エンタープライズデータオブジェクト626を要求されるサービスのために使用されるデータコンテナとして生成することができ、またサービスマネージャプロキシ624を呼び出して(ステップ716)、要求されたサービスにアクセスすることができる。
【００８０】
プロセッサ202はまた、要求アクセスが、直接またはローカルのアクセスであるかどうかを判定することもできる(ステップ718)。要求されたアクセスが、直接またはローカルのアクセスである場合(ステップ718;yes)、プロセッサ202は、直接メソッド呼出しにより要求されたサービスにアクセスすることができる(ステップ720)。他方、要求されたアクセスが、直接またはローカルのアクセスではない場合(ステップ718;no)には、プロセッサ202は、SOAPチャネル622を介して要求されたサービスにアクセスすることができる。しかし、他の接続を使用することもできる。サービスプロバイダは、要求されたサービスを受信することができ、また以前に説明されたように、以上に開示されるアクセス方法を使用してクライアントアプリケーション628に対して対応するサービス応答を送信することができるが、逆の順序(例えば、直接呼出しメソッド620またはSOAPチャネル622、サービスマネージャプロキシ624など)である。
【００８１】
モデルアクセスインターフェース(例えば、ビジネスオブジェクトモデルプロキシ642、ビジネス情報モデルプロキシ644、プロセスオブジェクトモデルプロキシ646、またはリポジトリマネージャプロキシ650など)と、包括的アクセスインターフェース(例えば、包括的クライアントプロキシ648など)の両方を使用することにより、クライアントアプリケーション628は、同じソフトウェアフレームワーク内のコアサービスと複合サービスの両方に柔軟にアクセスすることができる。さらに、新しいサービスまたは既存のサービスのアップデートを、包括的アクセスインターフェースを介して提供して、市場に出るまでの時間および/または実装努力の量をかなり低減させることができるが、より高度でさらに具体的なソリューションを新しいサービスまたはサービスアップデートについて後で提案して、そのソフトウェアフレームワークの速度および/または効率を増大させることができる。
【００８２】
したがって、ユーザまたはソフトウェアプロセスは、統合メタモデルを使用して、サービスプロバイダ上のコアサービスと複合サービスの両方を定義することができ、またクライアントソフトウェアアプリケーションを使用して、共通のソフトウェアフレームワークまたはアーキテクチャを介してコアサービスおよび複合サービスにアクセスすることもできる。コアサービスおよび複合サービスのモデルをエンタープライズ内で再使用して、テストされたソリューションを実現することができる。サードパーティソフトウェアコンポーネントはまた、共通の規格を使用することにより統合することもできる。
【００８３】
開示された例示の方法およびシステムの他の実施形態、特徴、態様、および原理は、当業者には明らかになり、様々な環境およびシステム中において実装することができる。例えば、サードパーティソフトウェアアプリケーション開発業者は、開示されたソフトウェアアーキテクチャを適応させて、ウェブサービスアプリケーションにおけるコアサービスと複合サービスの両方を利用したソフトウェアプログラムを作成し、あるいは開示されたサービスプロバイダアーキテクチャなどと共に機能するクライアントソフトウェアアプリケーションを作成することを可能にすることができる。
【図面の簡単な説明】
【００８４】
【図１】ある種の開示された実施形態と整合した操作環境のブロック図である。
【図２】ある種の開示された実施形態と整合したコンピュータシステムのブロック図である。
【図３】ある種の開示された実施形態と整合した例示のソフトウェアアーキテクチャのブロック図である。
【図４】ある種の開示された実施形態と整合した例示の作成プロセスのフローチャートである。
【図５】ある種の開示された実施形態と整合した例示のアップグレーディングプロセスのフローチャートである。
【図６】ある種の開示された実施形態と整合した別の例示のソフトウェアアーキテクチャのブロック図である。
【図７】ある種の開示された実施形態と整合した例示の操作プロセスのフローチャートである。
【符号の説明】
【００８５】
100  操作環境
102  イントラネット
104  インターネット
106  サービスプロバイダコンピュータ、プロバイダ
108  サービスコンシューマコンピュータ、コンシューマ
110  ゲートウェイ
200  コンピュータシステム
202  プロセッサ
204  ランダムアクセスメモリ(RAM)
206  読取り専用メモリ(ROM)
208  コンソール
210  入力デバイス
212  ネットワークインターフェース
214  データベース
216  ストレージ
300  ソフトウェアアーキテクチャ
302  サービス実装レイヤ
304  コアサービス
306  複合サービス
308  サービスリポジトリ
310  エンタープライズアプリケーション
312  ウェブアプリケーション
314  他のアプリケーション
316  モデルアクセスおよび包括的アクセスのプロキシレイヤ
318  アクセスレイヤ
320  サービスレイヤ
600  ソフトウェアアーキテクチャ
601  サービス実装レイヤ
602  ソフトウェアコントローラ
604  ローカルクライアントプロキシ
606  サービスマネージャ
608  サービスランタイムリポジトリ
612  ビジネスオブジェクトプロバイダ
614  ビジネス情報プロバイダ
616  ビジネスプロセスプロバイダ
618  複合サービスプロバイダ
620  直接メソッド呼出し(DMI)
622  単純オブジェクトアクセスプロトコル(SOAP)チャネル
624  サービスマネージャプロキシ
626  エンタープライズデータオブジェクト
628  クライアントアプリケーション
630-1〜630-4  型付けプロキシ
632  型付けリポジトリプロキシ
642  ビジネスオブジェクトモデルプロキシ
644  ビジネス情報モデルプロキシ
646  プロセスオブジェクトモデルプロキシ
648  包括的クライアントプロキシ
650  リポジトリマネージャプロキシ
652  サービスデータオブジェクト
【図１】
0005230964.tif 000002
【図２】
0005230964.tif 000003
【図３】
0005230964.tif 000004
【図４】
0005230964.tif 000005
【図５】
0005230964.tif 000006
【図６】
0005230964.tif 000007
【図７】
0005230964.tif 000008