(57)【要約】      （修正有）【課題】以前には統合されるように設計されなかったツールの間の統合を可能にするアーキテクチャを提供する。【解決手段】非統合ツール１０２に対し、アーティファクト・プロバイダ・インタフェース１０６が実装され、非統合ツール１０２のアーティファクト１０８を公開し、また非統合ツール１０４に対し、アーティファクト・コンシューマ・インタフェース１１０が実装され、非統合ツール１０４のリファレンス１１２が公開される。非統合ツール１０２のアーティファクト１０８は、リンキング・コンポーネント１１４によって非統合ツール１０４のリファレンス１１２に関連付けられる。【選択図】図１
2005259138.tif 000002
【特許請求の範囲】
【請求項１】
非統合のアプリケーションのインターフェースを容易にするシステムであって、
前記アプリケーションのうちの第１のアプリケーションのアーティファクトを公開するアーティファクト・プロバイダ、および
前記アプリケーションのうちの第２のアプリケーションの参照であり、前記アーティファクト・プロバイダによって保持される前記アーティファクトのうちの少なくとも１つへのリンクである参照、を公開するアーティファクト・コンシューマ
を備えることを特徴とするシステム。
【請求項２】
前記リンクは、ｕｎｉｆｏｒｍ  ｒｅｓｏｕｒｃｅ  ｉｄｅｎｔｉｆｉｅｒ（ＵＲＩ）であることを特徴とする請求項１に記載のシステム。
【請求項３】
前記アーティファクト・プロバイダおよび前記アーティファクト・コンシューマは、前記それぞれのアプリケーションにインターフェースするアプリケーション・プログラミング・インターフェース（ＡＰＩ）であることを特徴とする請求項１に記載のシステム。
【請求項４】
前記参照と前記対応するアーティファクトをリンクするリンキング・コンポーネントをさらに備えることを特徴とする請求項１に記載のシステム。
【請求項５】
前記リンキング・コンポーネントは、アーティファクトをポイントする前記アーティファクト・コンシューマによって保持されるアーティファクト識別子であることを特徴とする請求項４に記載のシステム。
【請求項６】
前記リンキング・コンポーネントは、バイナリであり、参照するアーティファクトおよび参照されるアーティファクトに関連付けられることを特徴とする請求項４に記載のシステム。
【請求項７】
前記プロバイダおよび前記コンシューマのうちの少なくとも１つは、ツールまたはサービスであることを特徴とする請求項１に記載のシステム。
【請求項８】
前記アーティファクト・プロバイダは、それが提供するアーティファクトごとにアーティファクト・タイプを登録し、各アーティファクトはホスティングできる対応するリンク・タイプを登録することを特徴とする請求項１に記載のシステム。
【請求項９】
アーティファクトおよびアーティファクト・リンクの両方の格納および公開を容易にするためにツールにインターフェースするジェネリック・アーティファクト・プロバイダ（ＧＡＰ）をさらに備えることを特徴とする請求項１に記載のシステム。
【請求項１０】
前記ＧＡＰと非統合アプリケーションとの間のインターフェースを提供するＧＡＰアダプタをさらに備えることを特徴とする請求項９に記載のシステム。
【請求項１１】
前記アーティファクトおよび関連するアーティファクト・リンクを格納するキャッシュをさらに備えることを特徴とする請求項１に記載のシステム。
【請求項１２】
アーティファクト間参照を提示するのを容易にするユーザ・インターフェースをさらに備えることを特徴とする請求項１に記載のシステム。
【請求項１３】
請求項１に記載のシステムを実行するコンピュータ実行可能命令が格納されたことを特徴とするコンピュータ可読媒体。
【請求項１４】
請求項１に記載のシステムを使用することを特徴とするコンピュータ。
【請求項１５】
請求項１に記載のシステムを使用することを特徴とするサーバ。
【請求項１６】
非統合アプリケーションのインターフェースを容易にするシステムであって、
前記アプリケーションのうちの第１のアプリケーションのアーティファクトを公開するツールまたはサービスであるアーティファクト・プロバイダ、
前記アプリケーションのうちの第２のアプリケーションの参照を公開するツールまたはサービスであるアーティファクト・コンシューマ、および
前記アーティファクトをポイントする、前記アーティファクト・コンシューマによって保持されるリンク
を備えることを特徴とするシステム。
【請求項１７】
前記リンクは、不変で一意の構成されたキーであるアーティファクト識別子であることを特徴とする請求項１６に記載のシステム。
【請求項１８】
キャッシュ内容を更新し、パージ（purge）することによってキャッシュを管理するリンク・マネージャをさらに備えることを特徴とする請求項１６に記載のシステム。
【請求項１９】
前記アーティファクト・プロバイダおよび前記アーティファクト・コンシューマは、疎結合および密結合のうちの少なくとも１つであることを特徴とする請求項１６に記載のシステム。
【請求項２０】
前記アーティファクト・コンシューマ、アーティファクト・プロバイダ、および非統合のアプリケーションのうちの少なくとも１つに関連するパラメータに基づいて推論を行うクラシファイヤをさらに備えることを特徴とする請求項１６に記載のシステム。
【請求項２１】
前記アーティファクト・プロバイダは、疎結合されたサーバ・ベース相互作用、疎結合されたクライアント、キャッシング、および呼出し側との契約によってアーティファクト指定機能をサポートする密結合相互作用のうちの少なくとも１つに関して、ＵＲＩを作成し、知らせることを特徴とする請求項１６に記載のシステム。
【請求項２２】
前記アーティファクト・コンシューマは、前記リンクを保持し、前記リンクは、参照されるアーティファクトへのＵＲＩであることを特徴とする請求項１６に記載のシステム。
【請求項２３】
非統合アプリケーション間のインターフェースを容易にする方法を実行するコンピュータ実行可能命令を有するコンピュータ可読媒体であって、前記方法は、
第１の非統合のアプリケーションと通信するアーティファクト・プロバイダを提供すること、
前記アーティファクト・プロバイダを使用して前記第１のアプリケーションのアーティファクトを公開すること、
第２の非統合のアプリケーションと通信するアーティファクト・コンシューマを提供すること、
前記アーティファクト・コンシューマを使用して前記第２のアプリケーションの参照を公開すること、および
前記アーティファクトへの前記参照をアーティファクト識別子とリンクすること
を備えることを特徴とするコンピュータ可読媒体。
【請求項２４】
前記方法は、
前記アーティファクトのアーティファクト・タイプを登録する動作、および
前記アーティファクトがホスティングするリンク・タイプを登録する動作
をさらに備えることを特徴とする請求項２３に記載のコンピュータ可読媒体。
【請求項２５】
前記方法は、
前記アーティファクトの依存性情報をユーザに提示することをさらに含み、前記情報は、リンク・タイプ、アーティファクト・タイプ、アーティファクト名、および変更日付のうちの少なくとも１つを備えることを特徴とする請求項２３に記載のコンピュータ可読媒体。
【請求項２６】
前記方法は、
前記アーティファクト・コンシューマおよびアーティファクト・プロバイダのうちの少なくとも１つはウェブ・サービスであることを特徴とする請求項２３に記載のコンピュータ可読媒体。
【請求項２７】
前記方法は、
非統合アプリケーションに格納されたデータを表すアーティファクト・プロキシを生成することをさらに備えることを特徴とする請求項２３に記載のコンピュータ可読媒体。
【請求項２８】
前記方法は、
前記アーティファクトは、ソース・ファイル、欠陥、要件、テスト結果、およびビルドのうちの少なくとも１つを表すことを特徴とする請求項２３に記載のコンピュータ可読媒体。
【請求項２９】
前記方法は、
前記リンクすることは、参照するＵＲＩ、参照されるＵＲＩ、およびリンク・タイプを含むリンクを備えることを特徴とする請求項２３に記載のコンピュータ可読媒体。
【請求項３０】
前記方法は、
どの参照するアーティファクトが特定の参照されるアーティファクトへのリンクを保持するかを発見することをさらに備えることを特徴とする請求項２３に記載のコンピュータ可読媒体。
【請求項３１】
前記アーティファクトが作成される、削除される、および変更される、のうちの少なくとも１つである時にイベントを生成することをさらに備えることを特徴とする請求項２３に記載のコンピュータ可読媒体。
【請求項３２】
前記方法は、
前記アーティファクト・プロバイダによって前記アーティファクトの外部アドレッサビリティを提供することをさらに備えることを特徴とする請求項２３に記載のコンピュータ可読媒体。
【請求項３３】
前記方法は、
アーティファクト・プロバイダおよびアーティファクト・コンシューマの両方であるジェネリックＡＰＩを提供することをさらに備えることを特徴とする請求項２３に記載のコンピュータ可読媒体。
【請求項３４】
非統合アプリケーションのインターフェースを容易にするシステムであって、
第１アプリケーションのアーティファクトを公開する手段、
第２アプリケーションの参照を公開する手段、
前記アーティファクトへの前記参照をアーティファクト識別子にリンクする手段、および
キャッシング手段を用いて前記アーティファクトおよび前記アーティファクト識別子をキャッシングする手段
を備えることを特徴とするシステム。
【請求項３５】
前記キャッシング手段を前記アーティファクトのソースおよび前記アーティファクト識別子のソースと同期化する手段をさらに備えることを特徴とする請求項３４に記載のシステム。
【請求項３６】
前記アーティファクトおよびアーティファクト識別子をＸＭＬで定義する手段をさらに備えることを特徴とする請求項３４に記載のシステム。
【請求項３７】
クエリをフィルタリングする手段をさらに備えることを特徴とする請求項３４に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、アプリケーション・プログラム・インターフェースおよびその使用に関する。
【背景技術】
【０００２】
従来、スタンドアローンでありながら、一緒に使用される時に、より結合力があり大幅に改善されたユーザ体験を提供できるソフトウェア・ツールが存在する。そのような環境は、サード・パーティ・ベンダおよび他者がアプリケーションおよびドキュメント開発の質を高めるツールを提供するための手段を提供する。
【０００３】
【特許文献１】米国特許第6,513,152号明細書
【特許文献２】米国特許第6,611,878号明細書
【特許文献３】米国特許第5,890,161号明細書
【非特許文献１】N. KAJLER. CAS/PI: a Portable and Extensible Interface for Computer Algebra Systems. In ISSAC'92, pp. 376-386. ACM Press, 1992.
【非特許文献２】T. METZNER, M. RADIMERSKY, A. SORGATZ, and S. WEHMEIER. Towards HighPerformance Symbolic Computing in MuPAD: Multi-Polynomial Quadratic Sieve using Macro Parallelism and Dynamic Modules. In Proc. of IMACS Conference on Applications of Computer Algebra, 1998. 25 pages.
【非特許文献３】H. LIEBERMAN. Integrating User Interface Agents with Conventional Applications. Proceedings of the 3rd International Conference on Intelligent User Interfaces, pp. 39-46, 1997.
【発明の開示】
【発明が解決しようとする課題】
【０００４】
必要なものは、統合されないツールの機能のアクセスを可能にするリンキング・アーキテクチャである。
【課題を解決するための手段】
【０００５】
以下では、本発明のいくつかの態様の基本的な理解を提供するために、本発明の単純化された要約を提示する。この要約は、本発明の網羅的概要ではない。本発明の主要な／クリティカルな要素を識別することおよび本発明の範囲を示すことは意図されていない。この要約の唯一の目的は、後で提示されるより詳細な説明の前置きとして単純化された形で本発明の概念の一部を提示することである。
【０００６】
本明細書で開示され、請求される本発明には、その１態様に、統合されていないアプリケーション、サービス、またはツールの統合を容易にするアーキテクチャが含まれる。開示される統合サービス（Integration Services、ＩＳ）は、疎結合され、個別に設計されたツールが、テクノロジおよび規約の組合せを介して単純なデータ統合を提供できるようにする軽量のアーキテクチャである。したがって、ＩＳは、リポジトリ自体なしで、共通リポジトリによって提供される核心の利益の一部を提供する。たとえば、ＩＳは、それぞれが異なる原則を念頭において別々に設計された、ソース制御および欠陥トラッキング（defect tracking）を含む。各ツールが公開する主要な項目（すなわち、各ツールのアーティファクト（artifact））を識別する標準的な方法を導入することによって、たとえば、一方のツールが他のツールの詳しい知識を持つことなく、欠陥（defect）が、ソース・コントロールをポイントすること（およびその逆）が可能になる。さらに、サード・パーティは、独自の特殊化されたリンクを用いてＩＳに新しいツールを導入して、ＩＳツールの変更なしに軽量のデータ統合（lightweight data integration）を可能にすることができる。
【０００７】
統合されるように設計されていないツールの間の統合を可能にするのに使用されるアプリケーション・プログラミング・インターフェース（ＡＰＩ）および規約のセットが開示される。この解決策は、わずかなコストおよびコミットメントでリポジトリの利益のかなりの部分を関与するものに提供する。この解決策は、開発ツールのための、サーバ・ベースのパートナ統合およびクライアント統合のアーキテクチャを提供する。
【０００８】
それをサポートするために、１つまたは複数の異なるアプリケーションのアーティファクトを公開するアーティファクト・プロバイダ、およびアーティファクト・プロバイダのアーティファクトへのリンクに関連する参照を公開するアーティファクト・コンシューマ、を備えるシステムを提供する。リンキング・コンポーネントは、プロバイダ・アーティファクトとコンシューマ参照のリンクを容易にする。
【０００９】
本発明のもう１つの態様では、アーティファクトとアーティファクト参照、およびリンクをキャッシングするリンク・キャッシュが提供される。
【００１０】
本発明のもう１つの態様では、アーティファクト間参照の提示を容易にするユーザ・インターフェースが提供される。
【００１１】
本発明のもう１つの態様では、少なくとも各ツールとのキャッシュ同期化を容易にするリンク・マネージャが提供される。
【００１２】
本発明のもう１つの態様では、ジェネリック・アーティファクト・プロバイダ（generic artifact provider、ＧＡＰ）が提供され、アーティファクト・プロバイダおよびコンシューマからのすべてのメソッドがＧＡＰによって実装される。ジェネリック・アーティファクト・スキーマ・フォーマット内のアーティファクトが、ＧＡＰデータベースにプッシュされる。
【００１３】
前述の目的および関連する目的を達成するために、本発明のある例示的態様を、以下の説明および添付図面に関して本明細書で説明する。しかし、これらの態様は、本発明の原理を使用できるさまざまな方法のごく少数を示すものであり、本発明は、そのような態様およびその同等物のすべてを含むことが意図されている。本発明の他の長所および新規の特徴は、添付図面と共に検討される時に以下の本発明の詳細な説明から明白になる。
【発明を実施するための最良の形態】
【００１４】
本発明を、図面を参照してこれから説明するが、図面では、類似する符号が、図面全体を通じて類似する要素を指すのに使用される。以下の説明では、例示において、本発明の完全な理解を提供するために、多数の具体的な詳細を示す。しかし、本発明を、これらの具体的な詳細なしで実践できることは明白である。他の場合として、周知の構造およびデバイスを、本発明の説明を容易にするために、ブロック図形式で示している。
【００１５】
本明細書で使用される時に、用語「コンポーネント」および「システム」は、ハードウェア、ハードウェアおよびソフトウェアの組合せ、ソフトウェア、または実行中のソフトウェアのいずれであれ、コンピュータ関連のエンティティを指すことが意図されている。たとえば、コンポーネントは、プロセッサで動作するプロセス、プロセッサ、オブジェクト、実行可能ファイル、実行のスレッド、プログラム、および／またはコンピュータとすることができるが、これに制限はされない。たとえば、サーバで動作するアプリケーションとサーバの両方を、コンポーネントとすることができる。１つまたは複数のコンポーネントが、プロセスおよび／または実行のスレッドの中に存在することができ、１つのコンポーネントを、１つのコンピュータにローカライズし、かつ／または複数のコンピュータの間で分散することができる。
【００１６】
本明細書で使用される時に、用語「推定する」または「推論」は、一般に、イベントおよび／またはデータを介して取り込まれた一連の観察からの、システム、環境、および／またはユーザの状態に関して推理するまたは推定する処理（process）を指す。たとえば、推論は、特定のコンテクストまたはアクションを識別するのに使用することができ、あるいは、状態に対する確率分布を生成することができる。推論は、確率的であり、すなわち、データおよびイベントの考慮に基づく、重要な状態に対する確率分布の計算とすることができる。推論は、イベントおよび／またはデータのセットから上位イベントを構成するのに使用される技法を指すこともできる。そのような推論は、イベントが時間的に非常に近接して相関するか否かにかかわらず、イベントおよびデータが１つまたは複数のイベント・ソースおよびデータ・ソースのどちらから来るかにかかわらず、観察されたイベントおよび／または格納されたイベント・データのセットからの新しいイベントまたはアクションの構成をもたらす。
【００１７】
定義
以下の用語は、この説明全体を通じて使用されるが、本発明のさまざまな態様の理解を助けるために、その定義をここで提供する。
【００１８】
アーティファクト：ツールが公に公開し、その結果、他のツールがそれへのポインタを保持できるようにされたデータの任意のアイテム。各アーティファクトは、アーティファクト・タイプでなければならない。各アーティファクトは、一意で不変のアーティファクト識別子によって識別されなければならない。例：ソース・ファイルｆｏｏ．ｃｓ、ワーク・アイテム１２５、ビルド２００４１２０５．３からのテスト結果。
【００１９】
アーティファクト・コンシューマ：くだいて言えば、アーティファクト・プロバイダによってホスティングされるアーティファクトへの、それが保持する参照を公開するツールまたはサービス。形式的に言えば、アーティファクト・プロバイダによってホスティングされるアーティファクトへの、それが保持する参照を公開するサービス。たとえば、Ｃのワーク・アイテム（それ自体がアーティファクト）は、ワーク・アイテムが処理されつつあった時に検査されたＰの変更セットへの参照を保持することができる。この場合に、Ｃは、アーティファクト・コンシューマであり、Ｐは、アーティファクト・プロバイダである。アーティファクト・コンシューマは、ある標準的な振る舞いを提供しなければならない。定義により、リンクが２つのアーティファクトの間にあるので、アーティファクト・コンシューマが、アーティファクト・プロバイダでもあることが必要であることに留意されたい。
【００２０】
アーティファクト識別子：特定のアーティファクトに関する一意で不変の識別子の具体化された版（ＡｒｔｉｆａｃｔＵｒｉ）。アーティファクト識別子のプロパティは、ＵＲＩのルールに従う。
【００２１】
アーティファクト・プロバイダ：くだいて言えば、アーティファクト・コンシューマがリンクできるアーティファクトをホスティングし、公開するツールまたはサービス。形式的に言えば、アーティファクトを公開するサービスである。たとえば、Ｃが、ｄｅｆｅｃｔのタイプのアーティファクト、ｒｅｑｕｉｒｅｍｅｎｔ、およびｔａｓｋを、ウェブ・サービスを介して公開し、アーティファクト・プロバイダになる。アーティファクト・プロバイダは、ある標準的な振る舞いを提供しなければならない。定義により、リンクが２つのアーティファクトの間にあるので、多数のアーティファクト・プロバイダを、アーティファクト・コンシューマにすることもできることに留意されたい。
【００２２】
アーティファクト・プロキシ：非統合サービスの使用可能なストアに格納されたデータを表す、ジェネリックアーティファクトプロバイダ（ＧＡＰ）によって格納されたアーティファクト。
【００２３】
アーティファクト・タイプ：ツールが公に公開するデータのタイプ。特定のアーティファクト・タイプのアーティファクトは、そのタイプの他のアーティファクトに共通のリンク・タイプのセットを有する。例に、ソース・ファイル、欠陥（defect）、用件、テスト結果、およびビルドが含まれるがこれに限定されない。
【００２４】
アーティファクトＵＲＩ：適格性に関する特定のルールに従うＵｎｉｆｏｒｍ  Ｒｅｓｏｕｒｃｅ  Ｉｄｅｎｔｉｆｉｅｒ。統合サービス（ＩＳ）Ｕｒｉの同義語。
【００２５】
統合サービス（ＩＳ）：疎結合され個別に設計された非統合ツールの単純なデータ統合を、テクノロジおよび規約の組合せを介して可能にする開示される軽量アーキテクチャ。ＩＳアーキテクチャによってイネーブルされていないサービスまたはツールを、「非ＩＳ」または非統合（non-integrated）と称する。
【００２６】
ＩＳ名前空間：ＩＳ対応（IS-enabled ）の製品およびアーティファクトの集合に対応する名前空間であり、これは、その物理要素が複数の物理サーバにまたがって分散できる「論理サーバ」と考えることができる。ツールは、インストール時にＩＳ名前空間にそれ自体を登録し、すべてのツールが、ＩＳロケーションテーブルを介してアクセス可能である。各アーティファクトは、１つのＩＳ名前空間によって所有される。
【００２７】
ＩＳ  Ｕｒｉ：整形式（well formedness）に関するＩＳ固有のルールに従うＵｎｉｆｏｒｍ  Ｒｅｓｏｕｒｃｅ  Ｉｄｅｎｔｉｆｉｅｒ。ＡｒｔｉｆａｃｔＵｒｉの同義語。
【００２８】
外部識別子：ＩＳ  ＧＡＰのコンテクスト内で意味を有する。非ＩＳ対応ツールがアーティファクトを参照するのに用いる識別子を指す。
【００２９】
ジェネリック・アーティファクト・プロバイダ（ＧＡＰ）：ＩＳ  ＧＡＰは、アーティファクト・プロキシの構成が、完全にＩＳ対応ではないツールにアーティファクトを処理する振る舞いを分け与えることを可能にする、ＩＳが提供する機能。
【００３０】
ジェネリック・アーティファクト・スキーマ（ＧＡＳ）：アーティファクトの集合を記述する共通のスキーマ。各アーティファクトに、その拡張属性と、それが保持する他のアーティファクトへのリンクが含まれる。
【００３１】
ジェネリック・リンク・スキーマ（ＧＬＳ）：リンクの集合を記述する共通のスキーマ。各リンクに、それが参照するＡｒｔｉｆａｃｔＵｒｉ、参照されるＡｒｔｉｆａｃｔＵｒｉ、およびそのリンク・タイプが含まれる。
【００３２】
インバウンド・リンク（Inbound Link）：参照されるアーティファクト（すなわち、ポイントされているアーティファクト）の観点からのリンク。参照するアーティファクトへのインバウンド・リンクは、アーティファクト・コンシューマによる実装に使用される標準ＧｅｔＲｅｆｅｒｅｎｃｉｎｇＡｒｔｉｆａｃｔｓメソッドを使用して発見する（見えるようにする）ことができる。
【００３３】
リンク：アーティファクトをポイントするためにアーティファクト・コンシューマによって保持されるアーティファクト識別子。リンクは、バイナリであり、正確に２つのアーティファクトすなわち、参照するアーティファクトと参照されるアーティファクトを含む。リンクは、ツール（アーティファクト・コンシューマ）が個々のアーティファクトへのアーティファクト識別子を保持する時に形成される。各リンクは、リンク・タイプでなければならない。適格なリンク（well-formed link）が、２つのアーティファクトすなわち参照するアーティファクトと参照されるアーティファクトの間にあることに留意されたい。アーティファクトと非アーティファクトの間のポインタは、リンクではない。例：ｂｕｇ  １２５  ｗａｓ  ｆｏｕｎｄ  ｉｎ  ｂｕｉｌｄ  ２００４１２０５．４（バグ１２５がビルド２００４１２０５．４で見つかった）。この「ｂｕｇ」および「ｂｕｉｌｄ」が、アーティファクト・タイプであり、「ｗａｓ  ｆｏｕｎｄ  ｉｎ」が、リンク・タイプである。
【００３４】
リンク・タイプ：そのタイプのリンクの目的を記述する。アーティファクトのアーティファクト・タイプを、有効なリンクを構成できるものに制限することができる。各リンクに、各方向（アウトバウンドおよびインバウンド）に１つの、２つの読み（または役割）が含まれる。たとえば：ｂｕｇ  １２５  ｗａｓ  ｆｏｕｎｄ  ｉｎ  ｂｕｉｌｄ  ２００４１２０５．４（バグ１２５がビルド２００４１２０５．４で見つかった）対ｂｕｉｌｄ  ２００４１２０５．４  ｅｘｐｏｓｅｄ  ｂｕｇ  １２５（ビルド２００４１２０５．４がバグ１２５を公開した）。
【００３５】
疎結合（Loose Coupling）：リンキングのコンテクストで、アーティファクト・プロバイダがアーティファクト・コンシューマについての知識を有することを必要としない振る舞いの質。たとえば、アーティファクト・プロバイダが、ＩＳクロス・サービス・インバージョン・クエリ（inversion query）ツールを使用する参照インバージョン（reference inversion）クエリを発行する時に、ＩＳは、すべてのアーティファクトに共通するスキーマに従って参照のセットを返す。
【００３６】
アウトバウンド・リンク（Outbound Link）：参照するアーティファクト（すなわち、他のアーティファクトをポイントするアーティファクト）の観点からのリンク。参照されるアーティファクトへのアウトバウンド・リンクは、アーティファクト・プロバイダによる実装に必要な標準ＧｅｔＡｒｔｉｆａｃｔｓメソッドによって返される。
【００３７】
参照インバージョン（またはインバージョン・クエリ）：一般に、参照インバージョンは、どのアイテムが特定のアイテムへの（それを参照する）ポインタを保持するかを発見するプロセスである。ＩＳでは、これは、どの参照するアーティファクトが特定の参照されるアーティファクトへのリンクを保持するかを発見するプロセスである。
【００３８】
参照されるアーティファクト：リンクのコンテクスト内で使用される。参照されるアーティファクトは、リンクの、参照するアーティファクトがポイントする側である。参照されるアーティファクトは、必ず、アーティファクト・プロバイダによってホスティングされる。
【００３９】
参照するアーティファクト：リンクのコンテクストで使用される。参照するアーティファクトは、リンクの、参照されるアーティファクトへの参照を保持する側である。これは、アーティファクト・コンシューマによってホスティングされる。
【００４０】
密結合：リンキングのコンテクスト内で、アーティファクト・コンシューマがアーティファクト・プロバイダに関する特定の知識を有することを必要とする振る舞いの質。たとえば、プロバイダが、（おそらくは特殊なフィルタを含めるか、対象のコンシューマへの特定の重要な固有の情報を返す）特殊化された参照インバージョン・メソッドを提供し、コンシューマがそれを利用する場合に、その相互作用（interaction）を密結合されると言う。
【００４１】
ツール固有Ｉｄ（ＴＳＩｄ）：適格なＩＳ  Ｕｒｉの最後の部分。ツール・インスタンス、アーティファクト・タイプ、およびツール固有Ｉｄの組合せは、ＩＳ名前空間内で一意でなければならない。さらに、ＴＳＩｄは、不変でなければならない。
【００４２】
図１を参照すると、本発明のシステム１００が示されている。この説明において、２つだけの非統合ツール（またはサービスであるが、以下では集合的にツールと称する）すなわち、第１ツール１０２および第２ツール１０４が提供される。しかし、本発明による１つまたは複数のインターフェースを使用することによって相互作用（interaction）を可能にすることができる任意の個数の使用可能な非統合ツールが存在し得ることを理解されたい。この実施形態では、第１ツール１０２が、プロバイダと指定され、第２ツールが、コンシューマと指定される。両方のツール（１０２および１０４）が、非統合ツールなので、本発明のインターフェースは、統合ツールを用いて行うことができるように、これらのツール（１０２および１０４）のデータの公開を容易にする。公開されたデータは、アーティファクトおよびこれらのアーティファクトへの参照の形である。これをサポートして、アーティファクト・プロバイダ・インターフェース１０６（たとえば、アプリケーションプログラミングインターフェース−ＡＰＩの形の）が、第１ツール１０２と共に実装され、第１ツール１０２の１つまたは複数のアーティファクト１０８（ＡＲＴＩＦＡＣＴ１、ＡＲＴＩＦＡＣＴ２、…、ＡＲＴＩＦＡＣＴＮ）の公開を容易にする。第２ツール１０４は、アーティファクト１０８のコンシューマと指定される。本発明によれば、第１ツール１０２の１つまたは複数のアーティファクト１０８を参照できる第２ツール１０４の１つまたは複数の参照１１２（ＲＥＦＥＲＥＮＣＥ１、ＲＥＦＥＲＥＮＣＥ２、…、ＲＥＦＥＲＥＮＣＥＭ）を公開するアーティファクト・コンシューマ・インターフェース１１０が提供される。
【００４３】
第１ツール１０２のアーティファクト１０８は、リンキング・コンポーネント１１４によって第２ツール１０４の参照１１２に関連付けられる。リンキング・コンポーネントは、コンシューマ・インターフェース１１０の一部とすることができるが、これは必要ではない。リンキング・コンポーネント１１４は、少なくとも１つのアーティファクト１０８をポイントするアーティファクト識別子を含むリンクを定義する。リンクは、リンク・タイプであり、バイナリである、すなわち、２つのアーティファクト、参照するアーティファクトおよび参照されるアーティファクトを伴う。
【００４４】
したがって、開示されるアーキテクチャに、前に統合されるように設計されなかったツールの間の統合を可能にするのに使用されるＡＰＩおよび規約のセットが含まれる。これは、ツールのサーバ・ベース・パートナ統合およびクライアント統合の基礎を提供し、サード・パーティ・エコシステム（ecosystem）の構築の基礎を容易にすることができる。
【００４５】
図２を参照すると、本発明による処理の流れ図が示されている。説明を単純にするために、図示の、たとえば流れ図の形の１つまたは複数の方法論を、一連の動作（act）として図示し、説明するが、本発明によれば、一部の動作（act）を、図示され本明細書で説明されるものと異なる順序でおよび／または他の動作（act）と並列に行うことができるので、本発明が、動作（act）の順序によって制限されないことを理解されたい。たとえば、当業者は、方法論を、その代わりに、状態図など、一連の相関する状態またはイベントとして表すことができることを理解し、諒解するであろう。さらに、示される動作（act）のすべてが、本発明による方法論を実施するのに必要ではない可能性がある。
【００４６】
２００で、非統合ツールが、使用のために使用可能であるが、まだ統合ツールとして使用することができない。２０４で、アーティファクト・プロバイダＡＰＩが、１つまたは複数のツールのうちの１つと共に使用されて、そのアーティファクトが公の使用のために公開される。２０６で、アーティファクト・コンシューマＡＰＩが、別のツールに対して使用されて、アーティファクトに関連付けられたその参照が公開される。２０８で、参照をアーティファクトにリンクし、ツールを統合する。このプロセスは、その後、停止ブロックに達する。
【００４７】
図３を参照すると、コンシューマとプロバイダのリンク・パターン３００と、参照するアーティファクト・アソシエーション（artifact association）および参照されるアーティファクト・アソシエーションが示されている。アーティファクト・プロバイダ３０２は、疎結合されたサーバ・ベース相互作用、疎結合されたクライアント、キャッシング、および呼出し側との契約によってすべてのアーティファクト固有機能をサポートする密結合された相互作用というエンティティを少なくともサポートする複数の異なるタイプのＵＲＩ（Uniform Resource Identifier）を作成し、知らせる。図からわかるように、プロバイダ３０２は、アーティファクト固有データの公開を容易にする参照されるアーティファクトのＵＲＩを作成する。アーティファクト・コンシューマ３０４は、参照されるアーティファクトへのリンクおよび参照するアーティファクトへのＵＲＩを保持し、後者によって、アーティファクト固有データが公開される。リンクと一緒に、リンク・タイプがある。参照されるアーティファクトへのＵＲＩは、疎結合された相互作用および密結合された相互作用をサポートし、後者は、呼出し側との契約によるすべてのアーティファクト固有機能をサポートする。アーティファクト・データをコンシューマ３０４に公開するために、コンシューマ３０４からプロバイダ３０２へのリンク３０６が確立される。リンクの使用が、開示されるＵＲＩによって表される構造およびＵＲＩのどちらにも制限されず、一般に、任意のタイプのリンキング機構とすることができることに留意されたい。図４を参照すると、アーティファクト依存性の提示を容易にするユーザ・インターフェース（ＵＩ）４００が示されている。ＵＩ  ４００は、登録されたリンク定義からのリンク・タイプ情報４０２、登録されたアーティファクト定義からのアーティファクト・タイプ情報４０４、ＧｅｔＡｒｔｉｆａｃｔからのアーティファクト名情報４０６、およびＧｅｔＡｒｔｉｆａｃｔからの最終変更情報４０８を表示するのに使用することができる。
【００４８】
本発明の主要な要素に、下記が含まれる。永続データに、アーティファクト・メタデータ、リンク・インスタンス、およびアーティファクト／リンク・インスタンス・キャッシュ情報が含まれる。アーティファクト・メタデータに関して、リンキング・サービスに関与するために、各アーティファクト・プロバイダは、それが提供する各アーティファクトのアーティファクト・タイプを登録し、これらのアーティファクトのそれぞれがホスティングできるリンク・タイプを登録する。リンク・インスタンス（ジェネリック・アーティファクト・プロバイダ・データベース）に関して、リンクをネイティブに格納することが困難または不便であるツールのために、開示されるリンキング・アーキテクチャは、「ジェネリック・アーティファクト・プロバイダ」を実装することを含む。キャッシュは、アーティファクトおよびそのリンクをキャッシングするのを容易にして、クエリ性能を最適化する。
【００４９】
共通のフォーマットおよびスキーマは、アーティファクトＩＤ、ジェネリック・アーティファクト・スキーマ（ＧＡＳ）、およびジェネリック・アーティファクト・データベース・スキーマ（ＧＡＤＳ）を含む。アーティファクトＩＤは、不変で一意の構成されたキーである。これは、アーティファクト・プロバイダによって提供されるサービスを介して公開され、ＵＲＩとして具体化される。ＧＡＳは、すべてのアーティファクトが、そのアウトバウンド・リンクと共に、ジェネリック要求を介して返されるようにする、共通の短縮された形である。ＧＡＤＳは、ジェネリック・アーティファクト・スキーマの形で提示されたアーティファクトおよびリンクのストレージを可能にする。ＧＡＤＳは、ジェネリック・アーティファクト・プロバイダおよびアーティファクト／リンク・キャッシュの両方のスキーマとして使用される。
【００５０】
本発明のアーキテクチャには、リンク対応アーティファクト・プロバイダ用のＡＰＩおよび規約も含まれる。このＡＰＩは、統合に関与する各ツールまたはサービスによって実装される。ＧｅｔＡｒｔｉｆａｃｔｓメソッドは、アーティファクトのＩＤのストリングに基づいて、ジェネリック・アーティファクト・スキーマ・フォーマットでｌ：ｍアーティファクトを返す。規約により、各ＧｅｔＡｒｔｉｆａｃｔ実装は、ジェネリック・アーティファクト・スキーマ・コンフォーマント（conformant）アーティファクトを返すリンク・キャッシュ・マネージャ（および環境内の他のツール）にＡｒｔｉｆａｃｔＣｈａｎｇｅｄイベントを引き起こす。ＳｙｎｃｈｒｏｎｉｚｅＡｒｔｉｆａｃｔＣａｃｈｅメソッドは、ＡｒｔｉｆａｃｔＣｈａｎｇｅｄに似たイベントを引き起こすことによって、アーティファクトおよびリンクをキャッシュに非同期にレポートする。
【００５１】
このアーキテクチャには、リンク対応アーティファクト・コンシューマ用のＡＰＩも含まれる。このＡＰＩは、リンキングに関与し、他のアーティファクトへのリンクを保持するツールまたはサービスのそれぞれによって実装されなければならない。ＧｅｔＲｅｆｅｒｅｎｃｅｄＡｒｔｉｆａｃｔｓメソッドは、ジェネリック・アーティファクト・スキーマ・フォーマットで、アーティファクトＩＤの供給されたセットをポイントするアーティファクトのリストを返す。
【００５２】
リンク・マネージャ用のＡＰＩも提供される。ＧｅｔＡｒｔｉｆａｃｔｓメソッドは、ジェネリック・アーティファクト・スキーマ・フォーマットで、潜在的に複数のプロバイダからのアーティファクトのセットを返す。アーティファクト／リンク・キャッシュがイネーブルされる場合に、その回答は、オーバーライドされない限りそれから導出され、この場合には、プロバイダが、個別に照会（クエリ）され、その応答が集められる。ＧｅｔＲｅｆｅｒｅｎｃｅｄＡｒｔｉｆａｃｔｓメソッドは、ジェネリック・アーティファクト・スキーマ・フォーマットで、アーティファクトＩＤの供給されたセットをポイントする潜在的に複数のプロバイダからのアーティファクトのリストを返す。ＳｙｎｃｈｒｏｎｉｚｅＡｒｔｉｆａｃｔＣａｃｈｅメソッドは、フル・キャッシュ同期化のために、各ツールのＳｙｎｃｈｒｏｎｉｚｅＡｒｔｉｆａｃｔＣａｃｈｅメソッドを呼び出す。
【００５３】
このアーキテクチャは、ジェネリック・アーティファクト・プロバイダ（ＧＡＰ）用のＡＰＩを提供する。アーティファクト・プロバイダＡＰＩからのすべてのメソッドが、ＧＡＰによって実装される。アーティファクト・コンシューマＡＰＩからのすべてのメソッドが、ＧＡＰによって実装される。ＵｐｄａｔｅＡｒｔｉｆａｃｔＤａｔａメソッドは、ジェネリック・アーティファクト・スキーマ・フォーマットで、アーティファクトをＧＡＰデータベースにプッシュする。ＧｅｔＡｒｔｉｆａｃｔｓＢｙＥｘｔｅｒｎａｌＩＤメソッドは、ＡｒｔｉｆａｃｔＩＤに従わない可能性があるが基礎になるツールによって理解される識別子によるＧＡＰデータベースのクエリを可能にする。
【００５４】
再ホスティング可能なＵＩが、アーティファクト間参照を示すために提供される。
【００５５】
適格な（well-formed）ＩＳのＵＲＩ  
アーティファクトの識別子は、適格なＵｒｉ（well formed IS Uri）からなる。各ＩＳ  Ｕｒｉは、アーティファクトのプロバイダによって形成される。適格なＵｒｉを構成する要素の一部は、ＩＳ環境から導出されるが、他の要素は、ツール自体によって供給される。次の説明は、Ｕｒｉの各要素を識別し、その値を導出する方法を説明する。
【００５６】
次は、適格ＩＳ  Ｕｒｉのサンプルである。
【００５７】
【表１】
2005259138.tif 000003
【００５８】
・ｈｔｔｐは、ＵｒｉがＩＤＥ（統合開発環境）の外部に現れることができるということを表す定数である。現れる場合に、ｈｔｔｐは、以下の「外部アドレッサビリティ」で説明するルールに従って処理される。
【００５９】
・各ＩＳ論理サーバは、名前空間を定義する。＜ＩＳＮａｍｅｓｐａｃｅ＞は、単に、サーバの名前、たとえば「Ｓｅｒｖｅｒ２２」である。
【００６０】
・ｖｓｅｔは、ＩＳ  ＵｒｉハンドラがストリングをＩＳ  Ｕｒｉとして認識できるようにする定数である。
【００６１】
・＜ｔｏｏｌｔｙｐｅ＞は、アーティファクトを維持し、アーティファクトに関する質問に答える責任を負うツール（すなわち、アーティファクト・プロバイダ）によってサポートされるツール・インターフェースを識別する。これによって、呼出し側のツール（リンクを保持するツール）が、ツールによって提供されるインターフェースに基づいてアーティファクトを処理する方法に関する決断を行うことが可能になる。例：ｖｓｂｕｇ、ｖｓｖｅｒｓｉｏｎｓｔｏｒｅなど。ｔｏｏｌｔｙｐｅは、ＡＰＩを識別し、ツールによって指定される。
【００６２】
・＜ｔｏｏｌｉｎｓｔａｎｃｅ＞は、識別されるアーティファクトの責任を負うアーティファクト・プロバイダの特定のインスタンスを記述する。組合せ＜ｔｏｏｌｔｙｐｅ＞＜ｔｏｏｌｉｎｓｔａｎｃｅ＞は、ＩＳ名前空間内で一意である。たとえば、ｔｏｏｌｔｙｐｅインスタンスは、インストール時にＩＳによって割り当てられ、ツールに格納される。
【００６３】
・＜ａｒｔｉｆａｃｔｔｔｙｐｅ＞（オプション）は、ツールによって維持されるアーティファクトのタイプである。ツールは、タイプが不変である場合（すなわち、インスタンスのタイプをその生存期間を通じて変更できない場合）に限ってアーティファクト・タイプを供給する。アーティファクト・タイプは、インストール時にツールによって登録される。
【００６４】
・＜ｔｏｏｌ−ｓｐｅｃｉｆｉｃ  ｉｄ＞は、アーティファクト・インスタンスへの不変の参照である。ｔｏｏｌ−ｓｐｅｃｉｆｉｃ  ｉｄは、ツールによって作成され、維持される。
例：  
Ｈに格納されたファイルをポイントするＵｒｉ：  ｈｔｔｐ：／／Ｓｅｒｖｅｒ０８／ｖｓｅｔ／ｖｓｖｅｒｓｉｏｎｓｔｏｒｅ．２／ｆｉｌｅ／ｂ４ｅ３２１６
Ｃの要件レコードをポイントするＵｒｉ：  ｈｔｔｐ：／／Ｓｅｒｖｅｒ０８／ｖｓｅｔ／ｖｓｂｕｇ．１／ｒｅｑ／３４５
アーティファクトＵＲＩをエンコード／デコードするユーティリティ機能
ＵＲＩの一貫したフォーマッティングを奨励するために、ＩＳは、構造に基づいてＵＲＩをエンコードし、デコードするユーティリティ機能の対を提供する。
【００６５】
【表２】
2005259138.tif 000004
【００６６】
ＥｎｃｏｄｅＵｒｉは、タイプＡｒｔｉｆａｃｔＩｄの構造体をとり、以下のＵＲＬルールに従うストリングを作る。ＡｒｔｉｆａｃｔＩＤ．ＴｏｏｌＩｎｓｔａｎｃｅ（ｔｏｏｌＴｙｐｅ．ｔｏｏｌＩｎｓｔａｎｃｅの形の）およびＡｒｔｉｆａｃｔＩＤ．ＡｒｔｉｆａｃｔＴｙｐｅの非ヌル値が、呼出し側によって供給される。ＡｒｔｉｆａｃｔＩＤ．ＳｅｒｖｅｒＮａｍｅｓｐａｃｅ＝ｎｕｌｌの場合には、現在アクティブな名前空間の名前が、ＵＲＩのＩＳＮａｍｅｓｐａｃｅ部分に使用される。ほとんどの場合に、ツールは、ＡｒｔｉｆａｃｔＩＤ．ＴｏｏｌＳｐｅｃｉｆｉｃＩＤに対して非ヌル値を供給する。ＡｒｔｉｆａｃｔＩＤ．ＴｏｏｌＳｐｅｃｉｆｉｃＩＤ＝ｎｕｌｌの場合には、ＥｎｃｏｄｅＵｒｉは、ｔｏｏｌ−ｓｐｅｃｉｆｉｃ  ｉｄにストリング”＜？＞”を挿入する。このストリングは、アーティファクトをジェネリック・アーティファクト・プロバイダに追加する時に特別な意味を有し、それ以外の場合には、使用を避けることができる。
【００６７】
【表３】
2005259138.tif 000005
【００６８】
ＤｅｃｏｄｅＵｒｉは、ＩＳ  Ｕｒｉルールに従うストリングをとり、タイプＡｒｔｉｆａｃｔＩｄの構造体を返す。  
例：  
下のコード断片は、アーティファクトＩｄの構築と、ＥｎｃｏｄｅＵｒｉメソッドを使用する適格なＩＳ  Ｕｒｉへの変換を示す。結果のＵＲＩは、
ｈｔｔｐ：／／ＩＳ００１／ｖｓｅｔ／Ｗｏｒｋ％２０Ｉｔｅｍ％２０％Ｔｒａｃｋｉｎｇ．１／ｄｅｆｅｃｔ／５２９１
になる。ＤｅｃｏｄｅＵｒｉは、逆の形で働く。
【００６９】
【表４】
2005259138.tif 000006
【００７０】
疎結合対密結合  
ＩＳリンキング環境では、ツールは、リンクを使用して、疎結合された振る舞いを可能にする。ツールは、密結合された振る舞いを通して高レベルの特殊化された統合を提供する特殊化されたインターフェースおよび相互作用を提供することもできる。このそれぞれが、適切なコンテクストで有効である。
【００７１】
疎結合は、次の特徴を提供する。前に存在するアプリケーションに迷惑をかけずに、アーティファクトのウェブに新しいアーティファクト・タイプを追加することが単純である。これは、サード・パーティ統合に特に有用である。結果を集約して、さまざまなタイプのアーティファクトの完全な「ｗｈｅｒｅ−ｕｓｅｄ」ピクチャを提供することが可能である。アーティファクト・ハンドラ（プロバイダおよびコンシューマ）は、振る舞いを劇的に変更することができ、ジェネリック・リンキング・インターフェースを使用し続ける限り、すべての疎結合された振る舞いが働き続けることになる。
【００７２】
密結合された振る舞いを提供するツールは、リンキング・サービスに従うリンクを活用するが、ジェネリック・リンキング・インターフェースを利用しない。その代わりに、アーティファクト・コンシューマは、アーティファクト・プロバイダによって提供される特定のインターフェースを利用する。これらの振る舞いは、参加するツールに非常に固有のクロス・ツール振る舞いを提供するのに使用することができる。
【００７３】
疎結合は、参照されるアーティファクトへのポインタが、参照されるアーティファクトのプロバイダに未知の参照するアーティファクトに存在し得る時に使用することができる。  
例−サード・パーティ・テスト・ケース管理ツールを、スイート（suite）に導入する。これは、ＩＳ対応であり、したがって、たとえば欠陥（defect）へのリンクを構築する機構を提供する。欠陥（defect）は、それに関する戻り情報をインバージョン・クエリで示すためにこの新しいタイプの参照するアーティファクトについて知る必要がない。
【００７４】
疎結合は、参照するアーティファクトが、それが知らない参照されるアーティファクト・タイプをポイントできる時にも使用でき、参照されるアーティファクトについて使用可能な振る舞いが参照するアーティファクトによって影響されない時にも使用することができる。  
例−どのワーク・アイテムがビルドに関連するかを知ることをユーザが求めると、ＩＤＥ内で、ワーク・アイテムのリストが、ビルドのインバージョン・クエリＵＩで返される。同様に、どのワーク・アイテムが特定の変更セットによって影響されるかを知ることをユーザが求めると、ワーク・アイテムのリストが、変更セットのインバージョン・クエリＵＩで返される。どちらの場合でも、ユーザが、どのワーク・アイテムおよびドキュメントウィンドウでもダブルクリックすることを可能にして、そのウィンドウが表示されるようにならければならない。所望の振る舞いは、参照するアーティファクトがビルドまたは変更セットのどちらであっても同一であり、したがって、振る舞いは、参照するアーティファクトによって（この２つのケースで）影響されない。
【００７５】
疎結合された相互作用は、（ａ）ＩＳ規約に従い、（ｂ）標準インターフェースを実装する、アーティファクト・プロバイダおよびアーティファクト・コンシューマを介して可能にされる。
【００７６】
ツールがリンキングに関与する方法  
アーティファクトを提供する各ツールは、アーティファクト・プロバイダである。アーティファクト・プロバイダは、そのアーティファクト・タイプを登録し、疎結合されたツールがこれらのアーティファクトを読み取ることを可能にするインターフェースのセットを実装する。アーティファクト・プロバイダの責任は、「アーティファクト・プロバイダの義務」で詳細に説明する。
【００７７】
他のアーティファクトへのリンクも含むアーティファクト・プロバイダは、アーティファクト・コンシューマである。アーティファクト・コンシューマは、プロバイダの義務の他に追加の義務を有する。アーティファクト・コンシューマは、リンク・タイプを登録し、クエリおよびインバージョン・クエリに回答する標準メソッドを提供する。アーティファクト・コンシューマの責任は、「アーティファクト・コンシューマの義務」で詳細に説明する。
【００７８】
最後に、ＩＳ自体は、登録、発見可能性（discoverability）、およびクロス・サービス・リンク・クエリに関する複数の機能を提供するが、これらは、「ＩＳ  ＡＰＩ」で詳細に説明する。
【００７９】
アーティファクト・プロバイダの義務  
アーティファクトをホスティングするツールは、すべてがアーティストプロバイダである。アーティファクト・プロバイダは、下記の責任を有するが、そのうちの一部はオプションであり、それ以外は必須である。登録時に、各アーティファクト・プロバイダは、それがホスティングする各アーティファクト・タイプをＩＳに登録し、引き起こすことができるすべてのイベント（アーティファクト変更イベントを含む）を登録し、そのプロバイダ・ウェブ・サービス・インターフェースのＵＲＬを登録し、それが所有する各アーティファクトのＩＳ  Ｕｒｉを返すことができるウェブ・サービス・インターフェースを提供し、それが所有する各アーティファクト・タイプのインスタンスを取り出すのに使用できるＧｅｔＡｒｔｉｆａｃｔｓメソッドを提供し、アーティファクト・インスタンスを返す各メソッドで戻り値としてアーティファクトのＵｒｉを含めることができ、それが所有するアーティファクトが、そのアーティファクトに関するＧｅｔＡｒｔｉｆａｃｔｓメソッド実行に異なる結果を返させる形で作成され、削除され、または変更された時にイベントを引き起こし、それが提供する各アーティファクト・タイプの外部アドレッサビリティを処理する形を提供し、それが所有するアーティファクトのＩＤＥ内要求に応答するクライアントＡＰＩ（ＥｘｅｃｕｔｅＤｅｆａｕｌｔＡｃｔｉｏｎ、ＧｅｔＡｌｌｏｗａｂｌｅＡｃｔｉｏｎｓ、およびＥｘｅｃｕｔｅＡｃｔｉｏｎ）を実装することができる。ＩＳおよび他者は、これを使用して、アーティファクト・コンシューマとアーティファクト・プロバイダの間の結合されないアクセスを提供することができる。
【００８０】
アーティファクト・タイプの登録  
アーティファクト・タイプおよびリンク・タイプの登録は、インストール時に行われる。各ツールは、ＩＳ登録サービスＸＭＬ（eXtensible Markup Language）スキーマに従うＸＭＬドキュメントを用意する。アーティファクト・タイプごとに、次の情報が必要である：このタイプのアーティファクトの責任を負うプロバイダ；アーティファクト・タイプの名前（ローカライズ可能でない）；アーティファクト・タイプ・ラベル（ローカライズ可能）。リンク・タイプごとに、次の情報が必要である：参照するアーティファクトのアーティファクト・タイプの名前；リンク・タイプの名前（ローカライズ可能でない）；リンク・タイプ・ラベル（ローカライズ可能）；逆リンク・タイプ・ラベル（ローカライズ可能）；およびオプションの参照されるアーティファクト・タイプ・アレイ。リンク・タイプ・ラベルに関して、たとえば、ｍａｎ  ｂｉｔｅｓ  ｄｏｇ（人が犬を咬む）、ｄｏｇ  ｉｓ  ｂｉｔｔｅｎ  ｂｙ  ｍａｎ（犬が人によって咬まれる）など、両方の方向での読みを提供するために、順方向および逆方向が使用される。参照されるアーティファクト・タイプ・アレイが空の場合には、リンクの参照される端（end）にタイプがない。すなわち、このタイプのリンクは、任意のアーティファクトをポイントすることができる。参照されるアーティファクト・タイプ・アレイの各要素は、参照されるアーティファクト・タイプのサービスおよび参照されるアーティファクト・タイプの名前の両方を示す。
【００８１】
プロバイダサーバＡＰＩ−ＩＴｏｏｌＳｅｒｖｅｒＬｉｎｋｉｎｇ  
アーティファクト・プロバイダは、それが所有する各アーティファクト・タイプのインスタンスを取り出すＧｅｔＡｒｔｉｆａｃｔｓメソッドを提供する。ＧｅｔＡｒｔｉｆａｃｔｓメソッドは、入力としてＵｒｉのアレイを取り込む。戻り値は、ジェネリック・アーティファクト・ディスプレイ・スキーマ（ＧＡＳ）に従うオブジェクトのアレイである。
【００８２】
【表５】
2005259138.tif 000007
【００８３】
ＧｅｔＡｒｔｉｆａｃｔｓは、ＩＳ  Ｕｒｉの形のアーティファクトＩｄのアレイを取り込むことができる。プロバイダは、ＧＡＳフォーマットで表された各アーティファクトＩｄのアーティファクト・インスタンスを返す責任を負う。  
例：  
ＩＳ名前空間が「ＩＳ００１」と命名され、ＩＳ００１に登録された欠陥トラッキングツールが、「ＷｏｒｋＩｔｅｍｓ．１」と命名され、２つのワーク・アイテム、Ｄｅｆｅｃｔ  １５２およびＲｅｑｕｉｒｅｍｅｎｔ  １５３があると仮定する。
【００８４】
最後に、ＡｒｔｉｆａｃｔＵｒｉ［］と命名されたアレイが、次の２つの要素を有すると仮定する。
ｈｔｔｐ：／／ＩＳ００１／ｖｓｅｔ／ＷｏｒｋＩｔｅｍｓ．１／Ｄｅｆｅｃｔ／１５２およびｈｔｔｐ：／／ＩＳ００１／ｖｓｅｔ／ＷｏｒｋＩｔｅｍｓ．１／Ｒｅｑ／１５３
この呼出しの後のＭｙＡｒｔｉｆａｃｔｓの値
【００８５】
【表６】
2005259138.tif 000008
【００８６】
は、シリアライズされたならば、次のＸＭＬドキュメントに似たものになる。
【００８７】
【表７−１】
2005259138.tif 000009
【００８８】
【表７−２】
2005259138.tif 000010
【００８９】
【表７−３】
2005259138.tif 000011
【００９０】
ＳｙｎｃｈｒｏｎｉｚｅＡｒｔｉｆａｃｔＣａｃｈｅメソッド  
ＳｙｎｃｈｒｏｎｉｚｅＡｒｔｉｆａｃｔＣａｃｈｅメソッドは、アーティファクト・キャッシュを、損傷を受けた場合に再構成するのに使用される。
【００９１】
【表８】
2005259138.tif 000012
【００９２】
ＳｙｎｃｈｒｏｎｉｚｅＡｒｔｉｆａｃｔＣａｃｈｅメソッドは、アーティファクト・コンシューマによって保持される順方向リンクのフルセットの通知を開始するために、ＩＳによって呼び出される。アーティファクト・コンシューマは、そのアーティファクトのそれぞれについてＣａｃｈｅＡｒｔｉｆａｃｔイベントを引き起こさなければならない（複数のアーティファクトを単一のイベントにパッケージ化することができる）。ＩＳは、これらのイベントをリスンし、その結果を使用して、コンシューマのＧｅｔＡｒｔｉｆａｃｔｓメソッドまたはＧｅｔＲｅｆｅｒｅｎｃｉｎｇＡｒｔｉｆａｃｔｓメソッドを呼び出さずに、単純なクエリを解決するのに使用できるリンク・キャッシュを取り込む。
【００９３】
【表９】
2005259138.tif 000013
【００９４】
ＳｙｎｃｈｒｏｎｉｚｅＡｒｔｉｆａｃｔＣａｃｈｅは、日付範囲によって制限することができる。この場合に、アーティファクト・コンシューマは、両端を含めてｆｒｏｍとｔｏの間に変更されたアーティファクトに関するＣａｃｈｅＡｒｔｉｆａｃｔイベントを発行する義務だけを負う。
【００９５】
アーティファクト・プロバイダによって保持されるアーティファクトごとに、ＳｙｎｃｈｒｏｎｉｚｅＡｒｔｉｆａｃｔＣａｃｈｅメソッドは、アーティファクトおよびそのアウトバウンド・リンク（存在する場合に）を（ＧＡＳスキーマにコンフォーマント（整合）された）ＸＭＬドキュメントとしてパッケージ化する。このフォーマッティングが、ＧｅｔＡｒｔｉｆａｃｔｓによって使用されるものと正確に同一のロジックを必要とすることに留意されたい。このメソッドは、ＩＳにＧＡＳコンフォーマントＸＭＬドキュメントを渡すＣａｃｈｅＡｒｔｉｆａｃｔイベントも引き起こす。
【００９６】
プロバイダは、そのキャッシング・アクティビティを完了した時に、ＥｎｄＣａｃｈｅＬｏａｄイベントを発行する。１つのＧＡＳドキュメントが、複数のアーティファクトを保持できることに留意されたい。したがって、プロバイダは、複数のアーティファクトを一度にキャッシュに渡すというオプションを有する。ＩＳは、通常、ＡｒｔｉｆａｃｔＣｈａｎｇｅｄイベント（他のツールがサブスクライブするのと同一のＡｒｔｉｆａｃｔＣｈａｎｇｅｄイベント）に応答することによって、そのキャッシュを更新する。しかし、ＩＳは、他のツールおよびサービスがサブスクライブしないＣａｃｈｅＡｒｔｉｆａｃｔイベントもリスンする。
【００９７】
プロバイダ・クライアントＡＰＩ−ＩＴｏｏｌＣｌｉｅｎｔＬｉｎｋｉｎｇ  
アーティファクト・プロバイダ・クライアントＡＰＩは、ＩＤＥ内の疎結合された相互作用を扱うために存在する。たとえば、ＧｅｔＡｒｔｉｆａｃｔｓ呼出しの結果として返されるリンク・コレクションにＩｄが含まれるアーティファクトのリストをツールが表示するシナリオを想像されたい。ユーザは、（任意の）アーティファクトの１つを表示することを望む。アーティファクトのプロバイダが、本明細書に記載のＥｘｅｃｕｔｅＤｅｆａｕｌｔＡｃｔｉｏｎメソッドを実装する場合に、リストのホルダは、アーティファクトまたはアーティファクトのタイプの知識なしで、（アーティファクトを表示するナビゲーション・アクションである可能性が高い）アクションを呼び出すことができる。
【００９８】
ＥｘｅｃｕｔｅＤｅｆａｕｌｔＡｃｔｉｏｎメソッド  
このメソッドは、プロバイダ・クライアントの一部として、アーティファクト・プロバイダが提供することができる。これは、プロバイダのクライアント・インストールの一部としてインストールされ、発見可能（discoverable）とすることができる。
【００９９】
【表１０】
2005259138.tif 000014
【０１００】
ＥｘｅｃｕｔｅＤｅｆａｕｌｔＡｃｔｉｏｎは、入力として単一のアーティファクトＵＲＩを取り込む。プロバイダ・クライアントは、アーティファクトに適当であればどのデフォルト振る舞いでも実行する責任を負う。プロバイダ・クライアントは、デフォルト・アクションの実行が成功であった場合にリターンする。ＥｘｅｃｕｔｅＤｅｆａｕｌｔＡｃｔｉｏｎは、通常は直接には呼び出されない。その代わりに、ＥｘｅｃｕｔｅＤｅｆａｕｌｔＡｃｔｉｏｎは、ＩＳクライアントのＥｘｅｃｕｔｅＤｅｆａｕｌｔＡｃｔｉｏｎメソッドを介して呼び出される。
【０１０１】
ＡｒｔｉｆａｃｔＣｈａｎｇｅｄイベント  
アーティファクトについてのＧｅｔＡｒｔｉｆａｃｔｓメソッド実行が異なる結果を返す形でアーティファクトが作成され、削除され、または変更される時に、アーティファクト・プロバイダは、ＡｒｔｉｆａｃｔＣｈａｎｇｅｄイベントを引き起こさなければならない。
【０１０２】
アーティファクト変更時、プロバイダは、ＦｉｒｅＡｓｙｎｃＥｖｅｎｔメソッドを使用して、ＩＳ  Ｅｖｅｎｔｉｎｇに非同期ＡｒｔｉｆａｃｔＣｈａｎｇｅｄイベントを引き起こす。ＡｒｔｉｆａｃｔＣｈａｎｇｅｄイベント・タイプは、登録中にＩＳの一部として自動的にインストールされる。ＡｒｔｉｆａｃｔＣｈａｎｇｅｄイベント・タイプには、ＧＡＳスキーマに従うＸＭＬドキュメントが含まれる。ＧＡＳに、アーティファクトの順方向リンクが含まれるので、ＡｒｔｉｆａｃｔＣｈａｎｇｅｄは、リンク変化ならびに他のアーティファクト変化についてリスナに知らせるのに使用される。
【０１０３】
ＡｒｔｉｆａｃｔＣｈａｎｇｅｄイベントは、アーティファクトが追加され、変更され、または削除される時に必ず引き起こされなければならない。ＧＡＳスキーマには、それが収容しているアーティファクトが追加され、変更され、または削除されたかどうかを呼出し側が示せるようにするＡｒｔｉｆａｃｔ要素に関する属性が含まれる。次に、「Ｄｅｆｅｃｔ  １５２が追加され、Ｒｅｑｕｉｒｅｍｅｎｔ  １５３が削除された」単一のＡｒｔｉｆａｃｔＣｈａｎｇｅｄイベントでレポートされる２つの変更を示す。
【０１０４】
【表１１】
2005259138.tif 000015
【０１０５】
どのツールでも、ジェネリックＡｒｔｉｆａｃｔＣｈａｎｇｅｄイベントを登録することができる。さらに、アーティファクト／リンク・キャッシュは、これらのイベントをリスンし、これらのイベントを使用してそれ自体を更新する。
【０１０６】
外部アドレッサビリティ  
アーティファクト・プロバイダは、それが提供するアーティファクトごとに外部アドレッサビリティを扱う形を提供する。ユーザが、ＩＳアーティファクトのＵＲＩを電子メールに含めると仮定する。その電子メールの受信者は、そのＵＲＩが外部アドレッサブルでなければ、そのＵＲＩに関して何も行うことができない。外部アドレッサブルである場合には、ブラウザは、それに関して行うべきことを理解することができる。  
例：  
たとえば、位置  
＼＼ＶＳＳｅｒｖｅｒ８＼ＦｉｎＰｒｏｊ＼Ａｃｃｔｇ＼ＷｅｂＵＩ＼ｔａｃｃｔｓ．ｃｓ  
のバージョンストアに格納されたソース・ファイルが、ＵＲＩ  
ｈｔｔｐ：／／ＶＳＳｅｒｖｅｒ８／ｖｓｅｔ／ｖｓｖｅｒｓｉｏｎｓｔｏｒｅ．２／ｆｉｌｅ／ｂ４ｅ３２１６  
によって表されると仮定する。
【０１０７】
次に、ｔａｃｃｔプログラムにエラーが発生したばかりである（「ｔａｃｃｔ」は、ＩＳ  Ｕｒｉであるハイパーリンクのビハインド（hyperlink behind）である）ことを示している電子メールが、ユーザに送信されると仮定する。ユーザがそのハイパーリンクを選択する時に、ユーザは、ＵＲＩに関連付けられたものについて同じ表現が作られていると当然期待する。この場合に、多分、それは、（ユーザの記憶を呼び起こすのを助ける）ファイルに関するあるメタデータおよび説明的情報である。この可能性があるのは、各アーティファクト・プロバイダが、そのアーティファクトを外部アドレッサブルにすることができるからである。各アーティファクト・プロバイダは、インストール時に、それが管理するタイプのアーティファクトを処理できるページを提供することによってそれを行う。このページは、ＩＳサーバ上の周知の仮想ディレクトリに格納され、そのツール・インスタンス用に命名される。このページは、読取専用ページを作るために単純なＸＳＬ変換を呼び出す、非常に単純なものとすることができる。その代わりに、このページを、本格的な（full-blown）プリケーションへのゲートウェイを提供する非常に複雑なものとすることができる。
【０１０８】
ＩＳは、正しいディレクトリに向けるためにＵＲＩをＵＲＬに変換し、ページがアーティファクト・タイプおよびモニカを普通のパラメータとして扱うことを可能にする、ＩＳＡＰＩ（Internet Server Application Program Interface）フィルタを提供する。  
例：  
この着信したＵｒｉ：ｈｔｔｐ：／／Ｓｅｒｖｅｒ８／ｖｓｅｔ／ｖｓｖｅｒｓｉｏｎｓｔｏｒｅ．２／ｆｉｌｅ／ｂ４ｅ３２１６は、ＩＳＡＰＩフィルタによって、  
ｈｔｔｐ：／／Ｓｅｒｖｅｒ８／ｖｓｖｅｒｓｉｏｎｓｔｏｒｅ．２．ａｓｐｘ？ａｒｔｉｆａｃｔＴｙｐｅ＝ｆｉｌｅ＆ｉｄ＝ｂ４ｅ３２１６  
に似たものに変換され、ここで、「ａｒｔａｓｐ」は、ＡＳＰページが格納されるＳｅｒｖｅｒ８のホルダである。
【０１０９】
アーティファクト・コンシューマの義務  
登録時に、各アーティファクト・コンシューマは、それがホスティングするリンク・タイプのそれぞれをＩＳに登録し、そのコンシューマ・ウェブサービス・インターフェースのＵＲＬを登録し、それが応答できる（アーティファクト変更イベントを含む）すべてのイベントにサブスクライブし、「ｄｏ  ｙｏｕ  ｐｏｉｎｔ  ｔｏ  ｍｅ？（これをポイントするか）」クエリに応答できるＧｅｔＲｅｆｅｒｅｎｃｉｎｇＡｒｔｉｆａｃｔｓメソッドを提供し、および、削除すべき参照するアーティファクト・リンクを削除するために、ＡｒｔｉｆａｃｔＣｈａｎｇｅｄイベントに応答することができる。変更について、参照するアーティファクトは、そのリンクを無効化させる可能性がある状況を検査することができる。
【０１１０】
コンシューマ・サーバＡＰＩ  
アーティファクト・コンシューマは、「ｄｏ  ｙｏｕ  ｐｏｉｎｔ  ｔｏ  ｍｅ？」クエリに応答できるＧｅｔＲｅｆｅｒｅｎｃｉｎｇＡｒｔｉｆａｃｔｓメソッドを提供しなければならない。ＧｅｔＲｅｆｅｒｅｎｃｉｎｇＡｒｔｉｆａｃｔｓは、入力としてＵＲＩのアレイを取り込む。戻り値は、ジェネリック・アーティファクト・データベース・スキーマ（ＧＡＳ）に従うアーティファクト・オブジェクトのアレイである。次は、メソッド・シグネチャである。
【０１１１】
【表１２】
2005259138.tif 000016
【０１１２】
このバージョンのＧｅｔＲｅｆｅｒｅｎｃｉｎｇＡｒｔｉｆａｃｔｓは、それ自身が所有する参照されるアーティファクトＩｄのアレイを取り込む。コンシューマは、それが所有するすべての参照するアーティファクトのリストを返す責任を負い、それは、ＧＡＳ互換アーティファクト・オブジェクトとして、含まれる参照されるアーティファクトのいずれをもポイントする。
【０１１３】
【表１３】
2005259138.tif 000017
【０１１４】
このバージョンのＧｅｔＲｅｆｅｒｅｎｃｉｎｇＡｒｔｉｆａｃｔｓは、参照されるアーティファクトＩｄのアレイおよびリンク・フィルタのアレイを取り込む。リンク・フィルタは、アーティファクト、アーティファクト・タイプ、またはリンク・タイプを提供するツール・タイプによって、返されるアーティファクトを制限するのに使用することができる。
【０１１５】
ＡｒｔｉｆａｃｔＣｈａｎｇｅｄイベント・ハンドラ
本明細書で説明するように、アーティファクトが実質的に変化するたびに、アーティファクト・プロバイダがＡｒｔｉｆａｃｔＣｈａｎｇｅｄイベントを引き起こす。各アーティファクト・コンシューマは、ＡｒｔｉｆａｃｔＣｈａｎｇｅｄイベント・ハンドラを登録することによって、これらのＡｒｔｉｆａｃｔＣｈａｎｇｅｄイベントをリスンすることができる。
【０１１６】
各コンシューマのＡｒｔｉｆａｃｔＣｈａｎｇｅｄイベント・ハンドラは、イベントを検査して、それが当のアーティファクトを保持するかどうかを決定する。保持する場合に、コンシューマのイベント・ハンドラは、変更に応答することができる。通常、そのような応答は、次の形の１つになる。  
・コンシューマが、アーティファクトへのポインタだけを保持する場合、そのコンシューマは、しばしば、削除の場合のＡｒｔｉｆａｃｔＣｈａｎｇｅｄに関係する。そのコンシューマは、削除されたアーティファクトへのすべてのリンクを除去する。  
・いくつかの場合に、参照されるアーティファクトが、参照するアーティファクトがそれへのリンクを保持するための特定の状態であること、を必要とする特定のポリシ情報が存在する場合がある。そうである場合には、コンシューマは、変更後に、参照されるアーティファクトがまだ正しい状態であることを保証することができ、そうでない場合には、コンシューマはそのリンクを除去する。
【０１１７】
アーティファクト／リンク・キャッシュは、ＡｒｔｉｆａｃｔＣｈａｎｇｅｄイベントを使用して最新の状態に留まる。
【０１１８】
ＩＳ  ＡＰＩ  
次のＡＰＩが、ＩＳのさまざまな要素によって直接に提供される。
【０１１９】
サーバＡＰＩ  ＥｎｃｏｄｅＵｒｉ／ＤｅｃｏｄｅＵｒｉユーティリティ・メソッド。
【０１２０】
ＧｅｔＡｒｔｉｆａｃｔｓメソッド  
ＧｅｔＡｒｔｉｆａｃｔｓメソッドは、入力としてＵＲＩのアレイを取り込む。戻り値は、ＧＡＳに従うオブジェクトである。論理的観点から、ＩＳバージョンのＧｅｔＡｒｔｉｆａｃｔｓメソッドは、アーティファクトが要求されるアーティファクト・プロバイダのそれぞれのＧｅｔＡｒｔｉｆａｃｔｓメソッドを呼び出す。物理的には、ｄｉｒｅｃｔパラメータ＝ｔｒｕｅでない限り、クエリが、アーティファクト／リンク・キャッシュに対して実行される。メソッド・シグネチャを下に示す。
【０１２１】
【表１４】
2005259138.tif 000018
【０１２２】
ＧｅｔＡｒｔｉｆａｃｔｓは、ＩＳ  Ｕｒｉの形のアーティファクトＩｄのアレイを取り込む。プロバイダは、ＧＡＳフォーマットで表されたアーティファクトＩｄごとのアーティファクト・インスタンスを返す責任を負う。このバージョンのＧｅｔＡｒｔｉｆａｃｔｓは、ＩＳアーティファクト／リンク・キャッシュに対して動作する。
【０１２３】
【表１５】
2005259138.tif 000019
【０１２４】
このバージョンのＧｅｔＡｒｔｉｆａｃｔｓは、呼出し側がｄｉｒｅｃｔパラメータの値を供給できることを除いて、上の形と正確に同様に振る舞う。ｄｉｒｅｃｔ＝ｔｒｕｅの時には、結果セットが、アーティファクト／リンク・キャッシュを使用するのではなく呼出し側の個々のプロバイダのＧｅｔＡｒｔｉｆａｃｔｓメソッドから直接に作られる。これによって、負荷的に重い集合クエリの方法を使用して最新のデータが提供される。
【０１２５】
ＧｅｔＲｅｆｅｒｅｎｃｉｎｇＡｒｔｉｆａｃｔｓメソッド  
ＩＳクロス・サービス・インバージョン・クエリＧｅｔＲｅｆｅｒｅｎｃｉｎｇＡｒｔｉｆａｃｔｓは、ソートのクエリ集合として動作する。論理的観点から、ＩＳから要求されたクロス・サービス・インバージョン・クエリは、クエリに情報を提供する可能性があるすべてのＩＳ対応ツールに対して、るリンク・インバージョン・クエリを実行し、すべての応答者からの結果を集合し、単一の結果セットを（ＸＭＬドキュメントの形で）ユーザに送り返す。物理的観点から、ＩＳクロスサービス・インバージョン・クエリは、実際に、ＩＳアーティファクト／リンク・キャッシュに対して実行することができる。
【０１２６】
【表１６】
2005259138.tif 000020
【０１２７】
このバージョンのＧｅｔＲｅｆｅｒｅｎｃｉｎｇＡｒｔｉｆａｃｔｓは、参照されるアーティファクトＩｄのアレイを取り込む。各潜在的なアーティファクト・コンシューマ（登録情報に基づく）が関与して、アーティファクトの完全なリストを作る。各コンシューマは、ＧＡＳ準拠アーティファクト・オブジェクトとして含まれる、参照されるアーティファクトのすべてをポイントするアーティファクトで、それが所有するすべての参照するアーティファクトのリスト、を返す責任を負う。ＩＳは、リストをマージし、単一のアーティファクト・アレイをクライアントに返す。
【０１２８】
【表１７】
2005259138.tif 000021
【０１２９】
このバージョンのＧｅｔＲｅｆｅｒｅｎｃｉｎｇＡｒｔｉｆａｃｔｓは、リンク・フィルタの追加アレイを取り込むことを除いて、前のバージョンと同一である。リンク・フィルタは、アーティファクト、アーティファクト・タイプ、またはリンク・タイプを提供するツール・タイプによって、返されるアーティファクトを制限するのに使用することができる。
【０１３０】
【表１８】
2005259138.tif 000022
【０１３１】
このバージョンのＧｅｔＲｅｆｅｒｅｎｃｉｎｇＡｒｔｉｆａｃｔｓは、呼出し側がｄｉｒｅｃｔパラメータの値を供給できることを除いて、最初のバージョン（form）と正確に同一に振る舞う。ｄｉｒｅｃｔ＝＝ｔｒｕｅの時に、結果セットは、アーティファクト／リンク・キャッシュを利用するのではなく、呼出し側の個々のプロバイダのＧｅｔＲｅｆｅｒｅｎｃｉｎｇＡｒｔｉｆａｃｔｓメソッドから直接に作られる。これによって、負荷の重い集合約クエリを使用して最新のデータが提供される。
【０１３２】
【表１９】
2005259138.tif 000023
【０１３３】
このバージョンのＧｅｔＲｅｆｅｒｅｎｃｉｎｇＡｒｔｉｆａｃｔｓは、呼出し側がｄｉｒｅｃｔパラメータの値を供給できることを除いて、第２のバージョン（form）と正確に同一に振る舞う。ｄｉｒｅｃｔ＝ｔｒｕｅの時に、結果セットは、アーティファクト／リンク・キャッシュを利用するのではなく、呼出し側の個々のプロバイダのＧｅｔＲｅｆｅｒｅｎｃｉｎｇＡｒｔｉｆａｃｔｓメソッドから直接に作られる。これによって、負荷の重い集合クエリを使用して最新のデータが提供される。
【０１３４】
リンク・ヘルパ・メソッド−ＩＬｉｎｋｉｎｇ  
ＩＳリンク・ヘルパ・メソッドは、各アーティファクト内でアウトバウンド（参照）リンクがネストされているアーティファクト・オブジェクトのアレイを後処理して、ＧＬＳに従うリンクのフラット・リストを作る。ＥｘｔｒａｃｔＬｉｎｋｓは、オプションのユーザ供給フィルタへの準拠（conformance）の対象になるアーティファクト・オブジェクト・アレイ内で見つかるすべてのリンクのフラット・リストを返す。
【０１３５】
ＥｘｔｒａｃｔＬｉｎｋｓの第３の形は、その参照されるＩｄがストリング・アレイを介して渡されたリンクについてのみ、同一のことを行う。その形で、ＥｘｔｒａｃｔＬｉｎｋｓをＧｅｔＲｅｆｅｒｅｎｃｉｎｇＡｒｔｉｆａｃｔｓと対にして、当該アーティファクトＩｄをポイントするリンクのみの、フラットなフィルタリングされたリストを作成することができる。
【０１３６】
【表２０】
2005259138.tif 000024
【０１３７】
各リンクが、その参照するアーティファクトと共にパッケージ化されたアーティファクト・オブジェクト・アレイを与えられると、ＥｘｔｒａｃｔＬｉｎｋｓは、ＧＬＳに従うリンク・アレイの内部のリンクのフラット・リストを作る。
【０１３８】
【表２１】
2005259138.tif 000025
【０１３９】
ＥｘｔｒａｃｔＬｉｎｋｓのこの形では、リンクは、ｌｉｎｋＦｉｌｔｅｒＬｉｓｔ内のフィルタに準拠する場合に限って含まれる。
【０１４０】
【表２２】
2005259138.tif 000026
【０１４１】
この形では、参照されるＵＲＩがＡｒｔｉｆａｃｔＵｒｉストリング・アレイに含まれるリンクだけが返される。ＬｉｎｋＦｉｌｔｅｒＬｉｓｔは、リンク・タイプ・フィルタリングが必要でない場合にヌルにすることができる。
【０１４２】
ＥｘｔｒａｃｔＬｉｎｋｓの例１：リンクのフラット・リストを作る  
Ａｒｔｉｆａｃｔアレイをもたらすアーティファクトを得る。次に、Ａｒｔｉｆａｃｔオブジェクトアレイからリンクのフラット・リストを抽出する。
【０１４３】
【表２３】
2005259138.tif 000027
【０１４４】
ＥｘｔｒａｃｔＬｉｎｋｓから返されるリンク・オブジェクトは、下のＸＭＬスキーマに対応する。
【０１４５】
【表２４】
2005259138.tif 000028
【０１４６】
ＥｘｔｒａｃｔＬｉｎｋｓの例２：特定の欠陥（defect）をポイントするリンクのリストを作る  
Ｄｅｆｅｃｔ  １７３が、Ｄｅｆｅｃｔ  １５２およびＲｅｑｕｉｒｅｍｅｎｔ  １５３だけから参照されると仮定する。その場合に、Ｄｅｆｅｃｔ  １７３のＧｅｔＲｅｆｅｒｒｉｎｇＡｒｔｉｆａｃｔｓは、正確に同一のＡｒｔｉｆａｃｔアレイを返す。この例では、ＥｘｔｒａｃｔＬｉｎｋｓが、Ｄｅｆｅｃｔ  １７３を実際にポイントするリンクだけを返すのに使用される。
【０１４７】
【表２５】
2005259138.tif 000029
【０１４８】
Link[] links = IS.ExtractLinks(artifacts, null, artifactUris);
ＥｘｔｒａｃｔＬｉｎｋｓから返されるリンク・オブジェクト（ＧｅｔＲｅｆｅｒｅｎｃｉｎｇＡｒｔｉｆａｃｔｓと同一のａｒｔｉｆａｃｔＵｒｉｓのセットによってフィルタリングされている）を、図５に示す。
【０１４９】
【表２６】
2005259138.tif 000030
【０１５０】
<ReferringUri>http://IS001/vset/WorkItems.1/Req/153</ReferringUri>
<LinkType>depends on</LinkType>
<ReferencedUri>http://IS001/vset/WorkItems.1/Defect/173</ReferencedUri>
</Link>
</Links>
ＳｙｎｃｈｒｏｎｉｚｅＡｒｔｉｆａｃｔＣａｃｈｅ  
このメソッドは、アーティファクト／リンク・キャッシュへのバックグラウンド更新を引き起こすために呼び出される。
【０１５１】
【表２７】
2005259138.tif 000031
【０１５２】
ＳｙｎｃｈｒｏｎｉｚｅＡｒｔｉｆａｃｔＣａｃｈｅメソッドは、各アーティファクト・プロバイダのＳｙｎｃｈｒｏｎｉｚｅＡｒｔｉｆａｃｔＣａｃｈｅメソッドを呼び出すことによって、ＩＳがアーティファクト・キャッシュを同期化させる。
【０１５３】
【表２８】
2005259138.tif 000032
【０１５４】
ＳｙｎｃｈｒｏｎｉｚｅＡｒｔｉｆａｃｔＣａｃｈｅは、日付範囲によって制限することができる。この場合に、各アーティファクト・コンシューマは、両端を含めてｆｒｏｍとｔｏの間に変更されたアーティファクトに関するＣａｃｈｅＡｒｔｉｆａｃｔイベントを発行する義務だけを負う。
【０１５５】
クライアントＡＰＩ−ＩＣｌｉｅｎｔＬｉｎｋｉｎｇ  
リンキングに関するＩＳクライアントＡＰＩは、単一のメソッドからなる。このメソッドの機能は、ツールのデフォルト・アクションを呼び出してアーティファクトを表示することである。
【０１５６】
ＥｘｅｃｕｔｅＤｅｆａｕｌｔＡｃｔｉｏｎ
【０１５７】
【表２９】
2005259138.tif 000033
【０１５８】
ＥｘｅｃｕｔｅＤｅｆａｕｌｔＡｃｔｉｏｎは、入力として単一のアーティファクトＩｄを取り込む。クライアントは、アーティファクトのタイプおよびデフォルト・アクション処理用に登録された機構に基づいて、次のように実行すべきアクションを決定する。アーティファクト・タイプが、登録されたプロバイダ・クライアントに関連付けられる場合に、プロバイダ・クライアントのＥｘｅｃｕｔｅＤｅｆａｕｌｔＡｃｔｉｏｎが呼び出される。そうでない場合に、ＡｒｔｉｆａｃｔＩｄが、外部アドレッサビリティ機構を使用する解決のために、ＩＳサーバに渡される。成功の場合に、このことは、ＩＤＥ内部で開かれるベージ内にもたらされ。不成功の場合に、ユーザは、ｈｔｔｐ  ４０４エラーを見ることになる。
【０１５９】
ジェネリック・アーティファクト・プロバイダ  
図５を参照すると、本発明によるＧＡＰ  ＡＰＩの一実施形態のブロック図が示されている。ＧＡＰは、本質的に、標準的なアーティファクト・プロバイダおよびアーティファクト・コンシューマのメソッドを提供するデータベース・アプリケーションである。１つまたは複数のＩＳ対応ツール５００および、その内容の一部が統合ツールとしてアクセスされることが望まれる非ＩＳ対応ツール５０２が提供される。ＩＳ対応ツール５００との相互作用を容易にするために、関連するＧＡＰデータベース５０６を有するＧＡＰ  ５０４が使用される。ＧＡＰデータベース５０６は、図７に関して以下で説明するジェネリック・アーティファクト・データベース・スキーマ（ＧＡＤＳ）のフォーマットで構成される。非ＩＳ対応ツールと相互作用するために、ＧＡＰアダプタ５０８を記述することができ、その結果、オリジナルのツール５０２への最小限の途絶（disruption）で、ツール・データをＩＳアーティファクトとして公開でき、ＩＳアーティファクトへのリンクを保持できるようになる。
【０１６０】
ＧＡＰは、アーティファクトを保持するツールで直接にアーティファクト・プロバイダ／コンシューマの義務を満足することが不可能または不便である状況に対処することを特に意図されたものである。たとえば、あるチームが、完全なアーティファクトであるかのように、共有サーバに格納されたドキュメントとの間のリンクを望む。残念ながら、共有サーバは、ＩＳ対応ＡＰＩ（IS-enablement APIs）を実施せず、したがって、そのアーティファクトのＩＳ準拠ＵＲＩ（IS-compliant URIs）を提供せず、必要なメソッド（たとえばGetArtifacts/GetReferencingArtifacts）を提供しない。ＧＡＰを使用すると、このチームは、共有ドキュメントの「アーティファクト・プロキシ」を構成することができる。このプロキシは、それが表す実際の共有ドキュメントの代わりに、他のアーティファクトによって参照されることが可能であり、他のアーティファクトへのリンクを保持することができる。
【０１６１】
ＧＡＰは、アーティファクト・コンテナが、ソース・コードでまたはファイル・システム内のいずれかでファイルとして保持される状況に対処することも意図されている。この場合に、アーティファクト作成の責任を負うツールは、その永続性に関して指示することはなく、したがって、ソース制御およびファイル・システムがアーティファクトからのリンクを認識し、格納することを要求することはない。たとえば、あるツールが、あるモデルと、そのモデルから生成されたソース・コードの間のリンクを保持することを望むみ、この場合、モデルがソース・コードと同じように格納される。ＧＡＰを使用すれば、そのツールは、このリンクを保持するアーティファクト・プロキシを構築することができる。さらに、追加のアーティファクト・プロキシを構築して、ツールモデル内のソース・ファイルまたはＸＭＬウェブ・サービス内のメソッドなど、ファイル内部のアーティファクトを表すことができる。
【０１６２】
図６を参照すると、ＧＡＰを使用して非統合ツールを準備する一実施形態の流れ図が示されている。６００で、１つまたは複数の非統合ツールを受け取る。６０２で、本発明によるＧＡＰを使用するアーティファクトおよび参照の公開のために、登録時に１つまたは複数の非統合ツールを準備する。６０４で、ツール・タイプが、登録され、ＧＡＰによって管理されるアーティファクトごとに、ＧＡＰサービスにマッピングするアーティファクト・プロバイダとして働く。自己管理式アーティファクトおよびＧＡＰによって管理されるアーティファクトの両方を含むプロバイダについて、それぞれのツール・タイプが別個である必要がある。６０６で、ＧＡＰによって管理されるアーティファクトごとに、そのアーティファクト・タイプおよびにアウトバウンド・リンク・タイプが、存在する場合に、定義される。この処理は、その後、停止ブロックに達する。
【０１６３】
図７を参照すると、ＧＡＰおよびキャッシュの両方に使用されるジェネリック・アーティファクト・データベース・スキーマ（ＧＡＤＳ）７００が示されている。ＧＡＤＳ  ７００には、正確に１つの表示可能アーティファクトを含むＡｒｔｉｆａｃｔ要素７０２が含まれ、Ａｒｔｉｆａｃｔ要素７０２には、サブ要素として、返されるアーティファクトのＵＲＩ；返されるアーティファクトのタイプのローカライズされたフレンドリ名であるアーティファクトＴｉｔｌｅ；入手可能な場合に最後の変更の日付および時刻（ＬａｓｔＣｈａｎｇｅｄＯｎ）；入手可能な場合にこのアーティファクトを変更した最後の人のｕｓｅｒＩｄ（ＬａｓｔＣｈａｎｇｅｄＢｙ）；ＩＳジェネリック・アーティファクト・プロバイダによる使用のために予約され、直接のアーティファクト・プロバイダを有しないアイテムにＩＳおよびそのエージェントがアクセスできるようにする情報を含むＥｘｔｅｒｎａｌＩＤ；およびキャッシュ内で使用され、インスタンス固有同期化状態を保持するオプションのビット属性ＳｙｎｃＦｌａｇが含まれる。
【０１６４】
ＧＡＤＳ  ７００には、Ａｒｔｉｆａｃｔ要素７０２のＬｉｎｋサブ要素７０４も含まれ、Ｌｉｎｋサブ要素７０４には、参照するリンクのＵＲＩ（ＲｅｆｅｒｒｉｎｇＵＲＩ）、リンク・タイプ（ＬｉｎｋＴｙｐｅ）、および参照されるリンクのＵＲＩ（ＲｅｆｅｒｅｎｃｅｄＵＲＩ）が含まれる。Ａｒｔｉｆａｃｔ要素７０２のＥｘｔｅｎｄｅｄＡｔｔｒｉｂｕｔｅｓサブ要素７０６に、プロバイダが提供できるオプションのアーティファクト固有プロパティを記述する名前／値の対のコレクションが含まれる。
【０１６５】
図８を参照すると、本発明によるＧＡＰを実施する１つの方法の流れ図が示されている。８００で、プロバイダが、公開されるアーティファクトごとにアーティファクト・タイプ情報を登録する。８０２で、プロバイダが、ホスティングするアーティファクトごとにリンク・タイプを登録する。８０４で、登録情報をローカルにまたはネイティブに（natively）格納できるかどうかを決定する。そうでない場合には、流れは８０６に向かい、ＧＡＰを使用する。８０８で、ＧＡＰデータベースに対してデータを処理する。８１０で、非統合ツールをＩＳ対応ツールにインターフェースすることができる。処理は、その後、停止ブロックに達する。しかし、登録情報をネイティブに格納できる場合には、流れは８０４から８１２に向かい、ＧＡＰなしで処理する。流れは、その後、停止ブロックに向かう。
【０１６６】
図９を参照すると、本発明によるＧＡＰアダプタを実装する１つの方法の流れ図が示されている。アーティファクトが変更される際、ＧＡＰデータベースには、アーティファクトごとに１つのレコードが存在する。アダプタを構成するために、基礎になるツールに格納されたアーティファクト・データの変化を検出することができなければならない。
【０１６７】
９００で、アーティファクトとして表されるアイテムをツールに追加する。９０２で、アーティファクトのＵＲＩを作成する。アーティファクトとして表されるアイテムがツールに追加されると、９０４に示されているように、ツール・アダプタは、ＧＡＰ  ＵｐｄａｔｅＡｒｔｉｆａｃｔＤａｔａメソッドを使用することによって、対応するアーティファクト・レコードをＧＡＰ内で作成する。このレコードは、このアーティファクトＵＲＩを、ツールに既知の（外部Ｉｄと称する）識別子にマッピングする。たとえば、ファイル共有に格納されたドキュメントの外部Ｉｄは、そのホルダ階層およびファイル名とすることができる。
【０１６８】
アーティファクト・レコードは、たとえばアーティファクトのＵＲＩ、タイトル、外部Ｉｄ、および拡張属性を含むという点で、ＧＡＳに従う。９０６で、システムは、ツールのアーティファクト・データの変更を検出するように動作する。９０８で、システムは、変更が行われていたかどうかを決定する。そうでない場合には、流れは、ブロック９０６に戻って、変更の監視を継続する。そうである場合には、流れは９１０に向かい、ここで、アイテム「変更」について、ツール・アダプタが、ＧＡＰ  ＵｐｄａｔｅＡｒｔｉｆａｃｔＤａｔａメソッドを使用することによって変更をポストする。ＧＡＰアーティファクトへおよびこれからのリンクの保全性を維持するために、変更と削除／追加とを区別することが重要であることに留意されたい。９１２で、変更が「追加／削除」である場合に、アダプタは、対応するレコードをＧＡＰデータベースに追加し、またはＧＡＰデータベースから削除する。アーティファクトに関連するアイテムが削除される時に、ツール・アダプタは、ＧＡＰ  ＵｐｄａｔｅＡｒｔｉｆａｃｔＤａｔａメソッドを使用することによって、ＧＡＰから対応するレコードを削除する。アーティファクトからのリンクが作成されまたは変更される時には、ＵｐｄａｔｅＡｒｔｉｆａｃｔＤａｔａメソッドが使用される。９１４で、リンク作成およびリンク変更が処理される。処理は、その後、停止ブロックに達する。外部アドレッサビリティを処理するために、アーティファクト・ハンドラが定義され、登録される。
【０１６９】
ＧＡＰ  ＡＰＩ  
ＧＡＰ  ＡＰＩは、アーティファクト・プロバイダとアーティファクト・コンシューマの両方に存在するので、標準的なサーバ・プロバイダおよびコンシューマについてのメソッドおよび振る舞い（すなわち、ＩＴｏｏｌＳｅｒｖｅｒＬｉｎｋｉｎｇインターフェースのすべてのメソッド）のそれぞれを提供する。さらに、ＧＡＰ  ＡＰＩは、それが保持するアーティファクト・データの維持を可能にする次のメソッドを提供する。
【０１７０】
【表３０】
2005259138.tif 000034
【０１７１】
呼出し側は、Ａｒｔｉｆａｃｔアレイ・オブジェクトを取り込み、ＵｐｄａｔｅＡｒｔｉｆａｃｔＤａｔａを呼び出して、ＧＡＰデータベースを更新する。Ａｒｔｉｆａｃｔアレイには、拡張された属性およびリンクを含む、ＧＡＰデータベース内で保持されるアーティファクト記述全体が含まれる。各アーティファクトは、そのＣｈａｎｇｅＴｙｐｅ属性の有効な値（ａｄｄ、ｃｈａｎｇｅ、ｄｅｌｅｔｅ）を有しなければならない。
【０１７２】
追加時：アーティファクトのＵｒｉの＜ｔｏｏｌ−ｓｐｅｃｉｆｉｃ  ｉｄ＞に特殊な値”＜？＞”がセットされている場合に、ＧＡＰは、一意のＩＤを生成し、そのＡｒｔｉｆａｃｔ．Ｕｒｉプロパティ内の関連するＵｒｉを置換する。そうでない場合には、＜ｔｏｏｌ−ｓｐｅｃｉｆｉｃ  ｉｄ＞の値が直接に使用される。アーティファクト追加の試みの際、到来するＡｒｔｉｆａｃｔ．Ｕｒｉ値によってキーイングされるレコードが既にＧＡＰに存在する場合には、エラーが送出される。
【０１７３】
変更または削除の際に、入ってくるＡｒｔｉｆａｃｔ．Ｕｒｉ値によってキーイングされるレコードは、データベース内に存在しなければならず、そうでない場合にはエラーが送出される。
【０１７４】
【表３１】
2005259138.tif 000035
【０１７５】
このメソッドは、ＧＡＰアーティファクトのＵＲＩが一致する外部Ｉｄに基づくＧＡＳ準拠アーティファクトを返すのに使用される。Ａｒｔｉｆａｃｔアレイは、ＵＲＩと外部Ｉｄの両方を含むので、したがって、標準ＧｅｔＡｒｔｉｆａｃｔｓが、ＵＲＩを与えられて外部Ｉｄを決定するのに使用される。このメソッドは、外部Ｉｄを与えられてＵＲＩを決定することが可能になる。
【０１７６】
図１０を参照すると、本発明による非統合ツールへのアクセスを容易にするシステム１０００が示されている。システム１０００には、複数の非統合ツール、第１のツール１００２、第２のツール１００４、および第３のツール１００６の使用が示されている。第１のツール１００２は、ＩＳ対応ツール１０１０へのアーティファクト・プロバイダとして有効にされるように、ＧＡＰ  １００８の実装を必要とする。それをサポートするように、ツール固有アダプタ１０１２が作成され、これは、１つまたは複数のアーティファクトをＩＳ対応ツール１０１０へ公開することを容易にする。リンクおよび参照は、ＧＡＤＳに従ってＧＡＰデータベース５０６に格納することができる。
【０１７７】
第２のツール１００４は、そのアーティファクトを公に公開するプロバイダ・イネーブルメントＡＰＩ  １０１４を、ネイティブ・インターフェースの上に統合する。第３のツール１００６は、第２のツール１００４のプロバイダ・アーティファクトおよび第１のツール１００２のアーティファクトへの参照を公開するコンシューマ・イネーブルメントＡＰＩ  １０１６を、ネイティブ・インターフェースの上に統合する。
【０１７８】
システム１０００に、さらに、本発明に従ってアーティファクトおよびリンク情報をキャッシングするアーティファクト／リンク・キャッシュ１０１８が含まれる。リンキング・マネージャ１０２０が、キャッシュ１０１８を管理する。キャッシュ１０１８は、少なくとも第１、第２、および第３のツール（１００２、１００４、および１００６）とインターフェースして、少なくともアーティファクトおよびリンク情報および本明細書に記載の他の情報のキャッシングを容易にする。
【０１７９】
本発明（たとえば、選択に関して）は、本発明のさまざまな自動的処理を実行するために、たとえばクラシファイヤ１０２２（オプション）の形の、さまざまな人工知能ベースの方式（intelligence based schemes）を使用することができる。本明細書に記載の実施形態は、一般に、１つのホップだけ、すなわち、別のツールに直接にインターフェースするツール、を扱う。クラシファイヤ１０２２は、より洗練されたクエリを容易にするのに使用することができ、１ホップを超えて延びるリンク記述を派生することができる。
【０１８０】
クラシファイヤは、入力属性ベクトルｘ＝（ｘ１，ｘ２，ｘ３，ｘ４，ｘｎ）を、入力がクラスに属する信頼性（confidence：確信度）すなわちｆ（ｘ）＝ｃｏｎｆｉｄｅｎｃｅ（ｃｌａｓｓ）に写像する関数である。そのような分類（classification）は、確率ベースおよび／または統計ベースの分析（たとえば、分析ユーティリティおよびコストへのファクタリング）を使用して、ユーザが自動的に実行されることを望むアクションを予知しまたは推論することができる。
【０１８１】
サポート・ベクトル・マシン（support vector machine、ＳＶＭ）が、使用できるクラシファイヤの例である。ＳＶＭは、可能な入力の空間内で超曲面（hyper surface）を見つけることによって動作し、この超曲面は、トリガする判断基準をトリガしない判断基準から分割することを試みる。直観的には、これによって、トレーニング・データに近いが同一でないデータのテストに関して分類を修正する。他のダイレクテッドおよびアンダイレクテッドのモデル分類手法に、たとえば、ナイーブ・ベイズが含まれ、ベイジアン・ネットワーク、決定木、および依存性について異なるパターンを提供する確率的分類モデルを使用することができる。本明細書で使用する分類は、優先順位のモデルを開発するのに使用される統計的回帰も含む。
【０１８２】
本明細書から簡単に諒解されるように、本発明は、明示的にトレーニングされる（たとえばジェネリック・トレーニングデータを介して）クラシファイヤならびに暗黙のうちにトレーニングされる（たとえばユーザ振る舞いを介して、外部情報を受け取ることによって）クラシファイヤを使用することができる。たとえば、ＳＶＭは、クラシファイヤ・コンストラクタおよび特徴選択モジュール内の学習フェーズまたはトレーニング・フェーズを介して構成される。したがって、クラシファイヤを使用して、所定の判断基準に従って、どのアーティファクトを公開するか、公開されるアーティファクトにどの優先順位を適用するか、他のツールの前にどのツールを公開しなければならないか、データのタイプ、ユーザ、およびデータの位置に基づいてどのアーティファクトを公開できるかの決定を含むがこれに制限されない多数の機能を自動的に実行するのに使用することができる。
【０１８３】
アーティファクト／リンク・キャッシュ  
アーティファクト／リンク・キャッシュは、高性能クエリ・アクセスを可能にするために、それが保持するアーティファクトおよびリンクが複製される集中化ストアである。短いアーティファクト・データおよびリンクデータを単一のデータベースに一緒に集めることによって、クロスサービス参照インバージョンを、はるかに効率的に処理することができる。
【０１８４】
図１１を参照すると、本発明によるキャッシュの一実施形態の処理の流れ図が示されている。１１００で、キャッシュが使用され、アーティファクト／リンク・リレーションシップを格納する。１１０２で、ＧＡＳに従ってそのリレーションシップをフォーマットする。１１０４で、アーティファクト・プロバイダによって引き起こされるＡｒｔｉｆａｃｔＣｈａｎｇｅｄイベントに応答して、キャッシュに対する更新を行う。ＩＳキャッシュ・マネージャは、ＡｒｔｉｆａｃｔＣｈａｎｇｅｄにサブスクライブし、ＧＡＳに従うオブジェクトであるイベント・オブジェクトを使用して、それ自体を更新する。キャッシュは、実際のアーティファクト更新に対して非同期に更新されるので、短い間、基礎になるストアと同期はずれになる可能性がある。しかし、待ち時間は短く、ほとんどのアプリケーションにとって許容可能である。０遅延が必要な時には、ツールは、キャッシュをバイパスし、その標準ＧｅｔＡｒｔｉｆａｃｔｓ／ＧｅｔＲｅｆｅｒｅｎｃｉｎｇＡｒｔｉｆａｃｔｓメソッドを介してツールに直接に要求を行う。キャッシュは、ジェネリック・アーティファクト・データベース・スキーマに従うデータベース内に格納される。キャッシュは、ＧＡＰデータベースがマッピング情報およびリンクのマスタコピーであり、キャッシュ・データベースが何のマスタでもなく、完全に再作成可能であるという点で、ＧＡＰデータベースと異なる。
【０１８５】
もう一度図１１を参照すると、１１０６で、キャッシュが基礎になるデータと同期化されているかどうかを決定する。ネットワーク障害またはシステム障害の結果として、キャッシュと基礎になるデータが永久的に同期はずれになる場合に、ＩＳは、各アーティファクト・プロバイダと協力してキャッシュを復元する管理ＳｙｎｃｈｒｏｎｉｚｅＡｒｔｉｆａｃｔＣａｃｈｅユーティリティを提供する。このユーティリティは、各アーティファクト・プロバイダのＳｙｎｃｈｒｏｎｉｚｅＡｒｔｉｆａｃｔＣａｃｈｅメソッドを呼び出す。同期化が必要でない場合には、流れは、１１０６から１１０４に向かって、キャッシュを更新する。同期化が必要な場合には、流れは、１１０６から１１０８に向かって、同期化を呼び出す。キャッシュ同期化は、次のように振る舞う。ＩＳのＳｙｎｃｈｒｏｎｉｚｅＡｒｔｉｆａｃｔＣａｃｈｅユーティリティが呼び出される（プログラム的にまたは管理機能を介して）。キャッシュ同期化が既に進行中である場合には、警告を提供するが、この警告をオーバーライドすることができる。ＩＳ管理データベースでは、状態「グローバル同期化進行中」がセットされる。
【０１８６】
１１１０で、同期化される（データ範囲に基づいて）各キャッシングされたアーティファクトが、「キャッシング予定」フラグでマークされる。１１１２で、マークされたアーティファクトを有する各プロバイダに連絡する。アーティファクト・プロバイダのＳｙｎｃｈｒｏｎｉｚｅＡｒｔｉｆａｃｔＣａｃｈｅメソッドが、呼び出され、管理データベースに状態「＜ｔｏｏｌ−ｉｎｓｔａｎｃｅ＞同期化進行中」をセットする。１１１４で、アーティファクト・プロバイダのＳｙｎｃｈｒｏｎｉｚｅＡｒｔｉｆａｃｔＣａｃｈｅメソッドが、各候補アーティファクト（または候補アーティファクトのセット）のＣａｃｈｅＡｒｔｉｆａｃｔイベントを発行する。１１１６で、イベントを発行され、マークされたアーティファクトが、キャッシュにアップロードされる。アーティファクト・プロバイダは、すべての候補アーティファクトについてＣａｃｈｅＡｒｔｉｆａｃｔイベントを発行し終えた時に、パラメータとしてそれ自体のツール・インスタンスを用いてＥｎｄＣａｃｈｅＬｏａｄイベントを起動させる。ＩＳキャッシュ・マネージャは、ＡｒｔｉｆａｃｔＣｈａｎｇｅｄイベントおよびＣａｃｈｅＡｒｔｉｆａｃｔイベントをリスンする。両方のイベントが、同一の形で処理され、イベントのＡｒｔｉｆａｃｔｓパラメータに含まれる各アーティファクトが、キャッシュに置かれる。
【０１８７】
１１１８で、同一のＵＲＩを有するキャッシュ内のアーティファクトが存在する場合に、これを置換する。そうでない場合には、アーティファクトを追加する。置換されたまたは追加されたエントリが、「キャッシング予定」フラグがセットされていないことに留意されたい。ＩＳキャッシュ・マネージャは、ＥｎｄＣａｃｈｅＬｏａｄイベントをリスンする。受け取られる時に、１１２０で、キャッシュ・クリーンアップを実行し、「キャッシング予定」とマークされた、ＥｎｄＣａｃｈｅＬｏａｄによって指定されたツール・インスタンスに関するキャッシュ内のすべてのアーティファクトを削除する。これによって、対応するアーティファクトが主ストアから削除されたすべてのキャッシングされたアイテムが除去される。ＩＳは、「＜ｔｏｏｌ−ｉｎｓｔａｎｃｅ＞同期化進行中」状態をオフにする。最後のプロバイダの「＜ｔｏｏｌ−ｉｎｓｔａｎｃｅ＞同期化進行中」状態がオフにされた時に、「グローバル同期化進行中」状態がオフにされる。この処理は、その後、停止ブロックに達する。
【０１８８】
ＡＰＩ参照  
このセクションには、メソッドの詳細への言及と共に、本明細書の他所で定義されたメソッド・シグネチャのすべてが含まれる。さらに、ＩＳによって提供されるメソッドのオーバーロードに、メッセージ・クォリファイヤ（message qualifier）が付随する。ＡＳＰ．Ｎｅｔでの規約により、オーバーロードされるメソッドのＭｅｓｓａｇｅＮａｍｅプロパティは、下で示すように、メッセージ名とメッセージ・クォリファイヤを連結することによって形成される。このメッセージ名は、サービスのコンシューマに不可視である。
【０１８９】
次のコードは、メッセージ名がメソッド名、この場合ではＧｅｔＡｒｔｉｆａｃｔｓをデフォルトとすることを表す。
【０１９０】
【表３２】
2005259138.tif 000036
【０１９１】
次では、メッセージ名が明示的に指定される。規約により、メッセージ名は、メソッド名にメッセージ・クォリファイヤを連結してシグネチャ・テーブルを形成することによって形成される。この場合に、メッセージ・クォリファイヤはＤｉｒｅｃｔであり、したがって、メッセージ名はＧｅｔＡｒｔｉｆａｃｔｓＤｉｒｅｃｔである。
【０１９２】
【表３３】
2005259138.tif 000037
【０１９３】
スキーマおよびデータ・タイプ  
ジェネリック・アーティファクト・スキーマ（ＧＡＳ）およびアーティファクト・クラス：ＧＡＳは、表示可能なアーティファクトのジェネリック・フォーマットを定義するＸＭＬスキーマである。このスキーマを下に示し、その要素のそれぞれの説明を後続する。ＧＡＳコンフォーマント・ドキュメントがオブジェクトにデシリアライズ（deserialize）される時に、そのオブジェクトは、「Ａｒｔｉｆａｃｔｓクラス」に示された形（form）になる。ＡＰＩにＡｒｔｉｆａｃｔｓオブジェクトが全く現れず、その代わりに、Ａｒｔｉｆａｃｔｓオブジェクトのアレイが使用されることに留意されたい。
【０１９４】
【表３４−１】
2005259138.tif 000038
【０１９５】
【表３４−２】
2005259138.tif 000039
【０１９６】
要素Ａｒｔｉｆａｃｔｓ  
ｌ：ｍ  Ａｒｔｉｆａｃｔ要素を含み、そのそれぞれが、ジェネリックＩＳアーティファクトを記述する。入ってくるＡｒｔｉｆａｃｔＩｄごとに１つのＡｒｔｉｆａｃｔ要素が、Ａｒｔｉｆａｃｔｓ要素に現れる。
【０１９７】
要素Ａｒｔｉｆａｃｔ  
次のサブ要素からなる、正確に１つの表示可能なＡｒｔｉｆａｃｔを含む。  
・Ｕｒｉ：返されるアーティファクトのＵｒｉ。  
・ＡｒｔｉｆａｃｔＴｉｔｌｅ：返されるアーティファクトのローカライズされたフレンドリ名。  
・ＡｒｔｉｆａｃｔＴｙｐｅＮａｍｅ：返されるアーティファクトのタイプのローカライズされたフレンドリ名。  
・ＬａｓｔＣｈａｎｇｅｄＯｎ：有効な場合に、最後の変更の日付および時刻。  
・ＬａｓｔＣｈａｎｇｅｄＢｙ：有効な場合に、このアーティファクトを最後に変更した人のｕｓｅｒＩｄ。  
・Ｅｘｔｅｒｎａｌ  Ｉｄ：この要素は、ＩＳジェネリック・アーティファクト・プロバイダによる使用のために予約済みである。ＩＳおよびそのエージェントが、直接のアーティファクト・プロバイダを有しないアイテムにアクセスできるようにする情報を含む。
【０１９８】
・ＥｘｔｅｎｄｅｄＡｔｔｒｉｂｕｔｅｓ：プロバイダが提供できるオプションのアーティファクト固有プロパティを記述する名前／値の対のコレクション。  
・ＯｕｔｂｏｕｎｄＬｉｎｋｓ：このアーティファクトからのアウトバウンド・リンクを記述するリンク・タイプと参照されるＵｒｉの対のコレクション。  
・ＣｈａｎｇｅＴｙｐｅ：これは、ＡｒｔｉｆａｃｔＣｈａｎｇｅｄイベントのコンテクストでのみ意味を持つＡｒｔｉｆａｃｔ要素に対するオプション属性である。
【０１９９】
Ａｒｔｉｆａｃｔｓクラス
【０２００】
【表３５−１】
2005259138.tif 000040
【０２０１】
【表３５−２】
2005259138.tif 000041
【０２０２】
ジェネリック・リンク・スキーマ（ＧＬＳ）およびＬｉｎｋｓクラス
ＧＬＳは、アーティファクト・リンクのジェネリック・フォーマットを定義するＸＭＬスキーマである。ＧＬＳは、ＥｘｔｒａｃｔＬｉｎｋｓメソッドによって返される。このスキーマを、下に示し、その要素のそれぞれの説明を後続する。ＧＬＳコンフォーマント・ドキュメントがオブジェクトにデシリアライズされる時に、オブジェクトは、「Ｌｉｎｋｓクラス」のセクションに示された形になる。
【０２０３】
【表３６】
2005259138.tif 000042
【０２０４】
要素Ｌｉｎｋｓ  
ｌ：ｍ  Ｌｉｎｋ要素を含み、このＬｉｎｋ要素のそれぞれが、２つのＩＳアーティファクトの間のリンクを記述する。
【０２０５】
要素Ｌｉｎｋ  
２つのアーティファクトの間の１つのリンクを記述する  
・ＲｅｆｅｒｒｉｎｇＵｒｉ：参照する（コンシューマ）アーティファクトのＵｒｉ。  
・ＬｉｎｋＴｙｐｅ：リンクのタイプ。  
・ＲｅｆｅｒｅｎｃｅｄＵｒｉ：参照される（プロバイダ）アーティファクトのＵＲＩ。
【０２０６】
Ｌｉｎｋｓクラス
【０２０７】
【表３７】
2005259138.tif 000043
【０２０８】
ＬｉｎｋＦｉｌｔｅｒクラス  
ＬｉｎｋＦｉｌｔｅｒクラスは、結果をフィルタリングするためにクエリ・メソッドで使用される。各アーティファクト・コンシューマは、そのＧｅｔＲｅｆｅｒｅｎｃｉｎｇＡｒｔｉｆａｃｔｓ実装でフィルタを尊重しなければならない。
【０２０９】
【表３８】
2005259138.tif 000044
【０２１０】
ＡｒｔｉｆａｃｔＩｄクラス  
ＡｒｔｉｆａｃｔＩｄクラスは、ＥｎｃｏｄｅＵｒｉメソッドおよびＤｅｃｏｄｅＵｒｉメソッドを使用して、アーティファクトのＵｒｉを形成するのに使用されるデータを収集するのに使用される。
【０２１１】
【表３９】
2005259138.tif 000045
【０２１２】
ジェネリック・アーティファクト・データベース・スキーマ  
次は、ジェネリック・アーティファクト・プロバイダとアーティファクト／リンク・キャッシュの両方に使用されるジェネリック・アーティファクト・データベース・スキーマの説明である。本質的に、これは、プロバイダ名およびアーティファクト・タイプが存在しないことを除いて、ＧＡＳスキーマのデータベース実装である。それらは、アーティファクト・インスタンスが読み取られる時にＵＲＩから自動的に導出され、アーティファクト・インスタンスが書き込まれる時に無視される。オプションのビット属性「Ｓｙｎｃ  Ｆｌａｇ」は、キャッシュ内でのみ使用され、インスタンス固有の同期化状態を保持する。
【０２１３】
サンプルのコンピューティング・システム  
図１２を参照すると、開示されるアーキテクチャを実行するように動作するコンピュータのブロック図が示されている。本発明のさまざまな態様に関する追加コンテクストを提供するために、図１２および次の説明は、本発明のさまざまな態様を実施できる適当なコンピューティング環境１２００の短い全般的な説明を提供することが意図されている。本発明を、上では、１つまたは複数のコンピュータで実行できるコンピュータ実行可能命令の全般的な文脈で説明したが、本発明を、他のプログラム・モジュールと組み合わせて、および／またはハードウェアとソフトウェアの組合せとして実施できることを、当業者は諒解するであろう。
【０２１４】
一般に、プログラム・モジュールには、特定のタスクを実行するか特定の抽象データ・タイプを実施するルーチン、プログラム、コンポーネント、データ構造などが含まれる。さらに、本発明の方法を、それぞれが１つまたは複数の関連するデバイスに機能的に結合される、シングル・プロセッサ・コンピュータ・システム、マルチ・プロセッサ・コンピュータシステム、ミニ・コンピュータ、メインフレーム・コンピュータならびにパーソナル・コンピュータ、ハンドヘルド・コンピューティング・デバイス、マイクロ・プロセッサ・ベースまたはプログラマブル一般電子機器などを含む他のコンピュータシステム構成を用いて実施できることを、当業者は諒解するであろう。
【０２１５】
本発明の示された態様は、通信ネットワークを介してリンクされたリモート処理デバイスによってあるタスクが実行される分散コンピューティング環境で実践することもできる。分散コンピューティング環境では、プログラム・モジュールを、ローカルとリモートの両方のメモリ・ストレージ・デバイスに配置することができる。
【０２１６】
コンピュータに、通常は、さまざまなコンピュータ可読媒体が含まれる。コンピュータ可読媒体は、コンピュータによってアクセスでき、揮発性媒体および不揮発性媒体、取り外し可能媒体および取り外し不能媒体の両方を含む、任意の使用可能な媒体とすることができる。制限ではなく例として、コンピュータ可読媒体に、コンピュータ記憶媒体および通信媒体を含めることができる。コンピュータ記憶媒体に、コンピュータ可読命令、データ構造、プログラム・モジュール、または他のデータなどの情報の格納のための方法またはテクノロジで実施される、揮発性および不揮発性、取り外し可能および取り外し不能の両方の媒体が含まれる。コンピュータ記憶媒体に、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュ・メモリ、または他のメモリ・テクノロジ、ＣＤ−ＲＯＭ、ディジタル・ビデオ・ディスク（ＤＶＤ）、または他の光ディスク・ストレージ、磁気カセット、磁気テープ、磁気ディスク・ストレージ、または他の磁気ストレージ・デバイス、あるいは、所望の情報を格納するのに使用でき、コンピュータによってアクセス可能な他のすべての媒体が含まれるが、これに制限はされない。
【０２１７】
通信媒体は、通常は、搬送波または他のトランスポート機構など、変調されたデータ信号内でコンピュータ可読命令、データ構造、プログラム・モジュール、または他のデータを具現化し、すべての情報配布媒体を含む。用語「変調されたデータ信号」は、信号内で情報をエンコードする形でその特性の１つまたは複数を設定または変更された信号を意味する。制限ではなく例として、通信媒体に、有線ネットワークまたは直接配線接続などの有線媒体と、音響、ＲＦ、赤外線、および他のワイヤレス媒体などのワイヤレス媒体が含まれる。上記のいずれかの組合せも、コンピュータ可読媒体の範囲に含まれなければならない。
【０２１８】
図１２をもう一度参照すると、処理ユニット１２０４、システム・メモリ１２０６、およびシステム・バス１２０８を含むコンピュータ１２０２を含む、本発明のさまざまな態様を実施する例示的環境１２００が示されている。システム・バス１２０８は、システム・メモリ１２０６を含むがこれに制限されないシステム・コンポーネントを処理ユニット１２０４に結合する。処理ユニット１２０４は、さまざまな市販プロセッサのいずれかとすることができる。デュアル・マイクロプロセッサおよび他のマルチ・プロセッサ・アーキテクチャも、処理ユニット１２０４として使用することができる。
【０２１９】
システム・バス１２０８は、さまざまな市販バス・アーキテクチャのいずれかを使用するメモリ・バス（メモリ・コントローラありまたはなし）、周辺バス、およびローカル・バスにさらに相互接続できる複数のタイプのバス構造のいずれかとすることができる。システム・メモリ１２０６には、読取専用メモリ（ＲＯＭ）１２１０およびランダム・アクセスメモリ（ＲＡＭ）１２１２が含まれる。起動中などにコンピュータ１２０２内の要素の間で情報を転送するのを助ける基本ルーチンを含む基本入出力システム（ＢＩＯＳ）が、ＲＯＭ、ＥＰＲＯＭ、ＥＥＰＲＯＭなどの不揮発性メモリ１２１０に格納される。ＲＡＭ  １２１２には、データをキャッシングするスタティックＲＡＭなどの高速ＲＡＭも含まれる。
【０２２０】
コンピュータ１２０２には、さらに、内蔵ハードディスク・ドライブ（ＨＤＤ）１２１４（たとえばＥＩＤＥ、ＳＡＴＡ）（内蔵ハードディスク・ドライブ１２１４は適当なシャーシ（図示せず）内での外部使用用に構成することもできる）、磁気フロッピ（登録商標）ディスク・ドライブ（ＦＤＤ）１２１６（たとえば、取り外し可能ディスケット１２１８をから読み取り、これに書き込むための）、および光ディスク・ドライブ１２２０（たとえば、ＣＤ−ＲＯＭディスク１２２２を読み取るか、ＤＶＤなどの他の大容量光媒体から読み取るかこれに書き込むための）が含まれる。ハードディスク・ドライブ１２１４、磁気ディスク・ドライブ１２１６、および光りディスク・ドライブ１２２０は、それぞれ、ハードディスク・ドライブ・インターフェース１２２４、磁気ディスク・ドライブ・インターフェース１２２６、光ドライブ・インターフェース１２２８によってシステム・バス１２０８に接続することができる。外部ドライブ実施形態のためのインターフェース１２２４に、Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ（ＵＳＢ）インターフェース・テクノロジおよびＩＥＥＥ  １３９４インターフェース・テクノロジの少なくとも１つまたは両方が含まれる。
【０２２１】
ドライブおよびそれに関連するコンピュータ可読媒体は、データ、データ構造、コンピュータ実行可能命令などの不揮発性ストレージを提供する。コンピュータ１２０２について、ドライブおよび媒体は、適当なディジタル・フォーマットでのすべてのデータのストレージに対処する。上のコンピュータ可読媒体の説明では、ＨＤＤ、取り外し可能磁気ディスケット、およびＣＤまたはＤＶＤなどの取り外し可能光媒体に言及したが、ｚｉｐドライブ、磁気カセット、フラッシュ・メモリ・カード、カートリッジなどのコンピュータによって読み取り可能な他のタイプの媒体も、例示的オペレーティング環境で使用できることと、さらに、そのようなすべての媒体に、本発明の方法を実行するコンピュータ実行可能命令を含めることができることを、当業者は諒解するであろう。
【０２２２】
オペレーティング・システム１２３０、１つまたは複数のアプリケーション・プログラム１２３２、他のプログラム・モジュール１２３４、およびプログラム・データ１２３６を含む複数のプログラム・モジュールを、ドライブおよびＲＡＭ  １２１２に格納することができる。オペレーティング・システム、アプリケーション、モジュール、および／またはデータのすべてまたは一部を、ＲＡＭ  １２１２内でキャッシングすることもできる。
【０２２３】
本発明を、さまざまな市販オペレーティング・システムまたはオペレーティング・システムの組合せを用いて実施できることを諒解されたい。
【０２２４】
ユーザは、たとえばキーボード１２３８、およびマウス１２４０などのポインティングデ・バイスなどの１つまたは複数の有線／無線入力デバイスを介してコンピュータ１２０２にコマンドおよび情報を入力することができる。他の入力デバイス（図示せず）に、マイクロホン、ＩＲリモート・コントロール、ジョイ・スティック、ゲーム・パッド、スタイラス・ペン、タッチ・スクリーンなどを含めることができる。上記および他の入力デバイスは、しばしば、システム・バス１２０８に結合された入力デバイス・インターフェース１２４２を介して処理ユニット１２０４に接続されるが、パラレルポート、ＩＥＥＥ  １３９４シリアル・ポート、ゲーム・ポート、ＵＳＢポート、ＩＲインターフェースなどの他のインターフェースによって接続することができる。
【０２２５】
モニタ１２４４または他のタイプのディスプレイ・デバイスも、ビデオ・アダプタ１２４６などのインターフェースを介してシステム・バス１２０８に接続される。モニタ１２４４の他に、コンピュータに、通常はスピーカ、プリンタなど、他の周辺出力デバイス（図示せず）が含まれる。
【０２２６】
コンピュータ１２０２は、リモート・コンピュータ１２４８など、１つまたは複数のリモート・コンピュータへの有線接続および／または無線接続を介する論理接続を使用してネットワーク化された環境で動作することができる。リモート・コンピュータ１２４８は、ワーク・ステーション、サーバ・コンピュータ、ルータ、パーソナル・コンピュータ、ポータブル・コンピュータ、マイクロ・プロセッサ・ベースのエンターテイメント・アプライアンス、ピア・デバイス、または他の一般的なネットワーク・ノードとすることができ、通常は、コンピュータ１２０２に関して説明した要素の多数またはすべてが含まれるが、図を簡単にするために、メモリ・ストレージ・デバイス１２５０だけを図示した。図示の論理接続には、ローカル・エリア・ネットワーク（ＬＡＮ）１２５２および／または広域ネットワーク（ＷＡＮ）１２５４などのより大きいネットワークへの有線／無線接続性が含まれる。そのようなＬＡＮおよびＷＡＮのネットワーキング環境は、オフィス、会社などでありふれており、イントラネットなどの会社全体のコンピュータ・ネットワークを容易にし、これらのすべてを、インターネットなどのグローバル通信ネットワークに接続することができる。
【０２２７】
ＬＡＮネットワーキング環境で使用される時に、コンピュータ１２０２は、有線および／または無線の通信ネットワーク・インターフェースまたはアダプタ１２５６によってローカル・エリア・ネットワーク１２５２に接続される。アダプタ１２５６は、ＬＡＮ  １２５２への有線接続または無線接続を容易にし、ＬＡＮ  １２５２には、無線アダプタ１２５６と通信するために配置された無線アクセスポイントも含めることができる。ＷＡＮネットワーキング環境で使用される時に、コンピュータ１２０２は、モデム１２５８を含むことができ、ＬＡＮ上の通信サーバに接続され、あるいはインターネットによるなどＷＡＮ  １２５４を介する通信を確立する他の手段を有する。モデム１２５８は、内蔵または外付けの有線デバイスまたは無線デバイスとすることができるが、シリアル・ポート・インターフェース１２４２を介してシステム・バス１２０８に接続される。ネットワーク化された環境では、コンピュータ１２０２に関して図示されたプログラム・モジュールまたはその一部を、リモート・メモリ／ストレージ・デバイス１２５０に格納することができる。図示のネットワーク接続が例示的であり、コンピュータの間の通信リンクを確立する他の手段を使用できることを諒解されたい。
【０２２８】
コンピュータ１２０２は、プリンタ、スキャナ、デスクトップおよび／またはポータブル・コンピュータ、携帯情報端末、通信衛星、および無線で検出可能なタグに関連する機器または位置（たとえば、キオスク、ニュース・スタンド、トイレなど）および電話機など、無線デバイスまたは無線通信に機能的に配置されたエンティティと通信するように動作する。これには、少なくともＷｉ−Ｆｉ無線テクノロジおよびＢｌｕｅｔｏｏｔｈ（商標）無線テクノロジが含まれる。したがって、通信は、従来のネットワークのように事前定義の構造とするか、単に少なくとも２つのデバイスの間のアドホック通信とすることができる。
【０２２９】
Ｗｉ−ＦｉまたはＷｉｒｅｌｅｓｓ  Ｆｉｄｅｌｉｔｙは、家庭の寝椅子、ホテルのベッド、仕事場の会議室などからワイヤなしでのインターネットへの接続を可能にする。Ｗｉ−Ｆｉは、コンピュータなどのデバイスが室内および戸外で、基地局からの範囲内の任意の場所でデータを送受信できるようにする、セル電話機に似た無線テクノロジである。Ｗｉ−Ｆｉネットワークは、ＩＥＥＥ  ８０２．１１（ａ、ｂ、ｇなど）と称する無線テクノロジを使用して、セキュアで信頼性があり高速の無線接続性を提供する。Ｗｉ−Ｆｉネットワークは、他のコンピュータに、インターネットに、および有線ネットワークに（ＩＥＥＥ  ８０２．３またはイーサネット（登録商標）を使用する）コンピュータを接続するのに使用することができる。Ｗｉ−Ｆｉネットワークは、免許不要の２．４ＧＨｚおよび５ＧＨｚラジオ帯域で、１１Ｍｂｐｓ（８０２．１１ｂ）または５４Ｍｂｐｓ（８０２．１１ａ）のデータレートあるいは両方の帯域を含む製品（デュアルバンド）で動作し、したがって、このネットワークは、多数のオフィスで使用される基本的な１０ＢａｓｅＴ有線イーサネット（登録商標）ネットワークに似た実世界の性能を提供することができる。
【０２３０】
図１３を参照すると、本発明による例示的コンピューティング環境１３００を示す概略ブロック図が示されている。システム１３００に、１つまたは複数のクライアント１３０２が含まれる。クライアント１３０２は、ハードウェアおよび／またはソフトウェア（たとえば、スレッド、プロセス、コンピューティング・デバイス）とすることができる。クライアント１３０２は、たとえば、本発明を使用することによって、クッキーおよび／または関連するコンテクスト情報を収容することができる。システム１３００に、１つまたは複数のサーバ１３０４も含まれる。サーバ１３０４も、ハードウェアおよび／またはソフトウェア（たとえば、スレッド、プロセス、コンピューティング・デバイス）とすることができる。サーバ１３０４は、たとえば、本発明を使用することによって、変換を実行するスレッドを収容することができる。クライアント１３０２とサーバ１３０４の間の可能な通信の１つを、複数のコンピュータ・プロセスの間で伝送されるように適合されたデータ・パケットの形とすることができる。データ・パケットには、たとえば、クッキーおよび／または関連するコンテクスト情報を含めることができる。システム１３００に、クライアント１３０２とサーバ１３０４の間の通信を容易にするのに使用することができる通信フレームワーク１３０６（たとえば、インターネットなどのグローバル通信ネットワーク）が含まれる。
【０２３１】
通信を、有線テクノロジ（光ファイバを含む）および／または無線テクノロジを介して容易にすることができる。クライアント１３０２は、クライアント１３０２にローカルな情報（たとえば、クッキーおよび／または関連するコンテクスト情報）を格納するのに使用できる１つまたは複数のクライアント・データ・ストレージ１３０８に機能的に接続される。同様に、サーバ１３０４は、サーバ１３０４にローカルな情報を格納するのに使用することができる１つまたは複数のサーバ・データ・ストア１３１０に機能的に接続される。
【０２３２】
上で説明したものに、本発明の例が含まれる。もちろん、本発明を説明するためにコンポーネントおよび方法論の考えられるすべての組合せを記述することは可能ではないが、当業者は、本発明の多数のさらなる組合せおよび置換が可能であることを諒解するであろう。したがって、本発明は、請求項の趣旨および範囲に含まれるそのような変更、修正、および変形のすべてを含むことが意図されている。さらに、用語「includes（含む）」が詳細な説明または請求項のいずれかで使用される範囲まで、そのような単語は、請求項で前後を接続する単語として使用される時に用語「comprising（備える）」が解釈されるのと同一の形で包含的であることが意図されている。
【図面の簡単な説明】
【０２３３】
【図１】本発明のシステムを示す図である。
【図２】本発明による処理を示す流れ図である。
【図３】コンシューマとプロバイダのリンク・パターンと、参照するアーティファクト・アソシエーションおよび参照されるアーティファクト・アソシエーションを示す図である。
【図４】アーティファクト依存性の提示を容易にするユーザ・インターフェース（ＵＩ）を示す図である。
【図５】本発明によるＧＡＰ  ＡＰＩの一実施形態を示すブロック図である。
【図６】ＧＡＰを使用して非統合ツールを準備する一実施形態を示す流れ図である。
【図７】ＧＡＰおよびキャッシュの両方に使用されるジェネリック・アーティファクト・データベース・スキーマ（ＧＡＤＳ）を示す図である。
【図８】本発明によるＧＡＰを実施する１つの方法を示す流れ図である。
【図９】本発明によるＧＡＰアダプタを実施する１つの方法を示す流れ図である。
【図１０】本発明による非統合ツールへのアクセスを容易にするシステムを示す図である。
【図１１】本発明によるキャッシュの一実施形態の処理を示す流れ図である。
【図１２】開示されるアーキテクチャを実行するように動作するコンピュータを示すブロック図である。
【図１３】本発明による例示的コンピューティング環境を示す概略ブロック図である。
【符号の説明】
【０２３４】
１００  本発明のシステム
１０２  非統合ツール
１０４  非統合ツール
１０６  アーティファクト・プロバイダ・インターフェース
１０８  複数のアーティファクト
１１０  アーティファクト・コンシューマ・インターフェース
１１４  リンキング・コンポーネント
３０２  アーティファクト・プロバイダ
３０４  アーティファクト・コンシューマ
３０６  リンク
４００  ユーザ・インターフェース
４０２  リンク・タイプ情報
４０４  アーティファクト・タイプ情報
４０６  アーティファクト名情報
４０８  最終更新情報
５０８  ＩＳ対応ツール
５０２  非ＩＳ対応ツール
５０８  ツール固有ＧＡＰアダプタ
５０４  ジェネリック・アーティファクト・プロバイダ（ＧＡＰ）
５０６  ジェネリック・アーティファクト・スキーマ（ＧＡＤＳ）
７００  ジェネリック・アーティファクト・データベース・スキーマ（ＧＡＤＳ）
７０２  アーティファクト要素
７０４  リンク・サブ要素
７０６  ＥｘｔｅｎｄｅｄＡｔｔｒｉｂｕｔｅｓサブ要素
１０００  本発明による非統合ツールへのアクセスを容易にするシステム
１００２  非ＩＳ対応ツール
１００４  非ＩＳ対応ツール
１００６  非ＩＳ対応ツール
１００８  ジェネリック・アーティファクト・プロバイダ（ＧＡＰ）
１０１０  ＩＳ対応ツール
１０１２  ツール固有ＧＡＰアダプタ
１０１４  プロバイダ・イネーブルメントＡＰＩ
１０１６  コンシューマ・イネーブルメントＡＰＩ
１０２０  リンキング・マネージャＡＰＩ
１０２２  クラシファイヤ
１２００  コンピューティング環境
１２０４  処理ユニット
１２０６  システム・メモリ
１２０８  バス
１２１０  ＲＯＭ
１２１２  ＲＡＭ
１２１４  内蔵ＨＤＤ、外部ＨＤＤ
１２１６  ＦＤＤ
１２１８  ディスク
１２２０  ＣＤドライブ
１２２２  ディスク
１２２４  インターフェース
１２２６  インターフェース
１２２８  インターフェース
１２３０  オペレーティング・システム
１２３２  アプリケーション
１２３４  モジュール
１２３６  データ
１２３８  キーボード
１２４０  マウス
１２４２  入力デバイス・インターフェース
１２４４  モニタ
１２４６  ビデオ・アダプタ
１２４８  リモート・コンピュータ
１２５０  メモリ／ストレージ
１２５２  ＬＡＮ
１２５４  ＷＡＮ
１２５６  ネットワーク・アダプタ
１２５８  モデム
１３００  コンピューティング環境
１３０２  クライアント
１３０８  クライアント・データストア
１３０６  通信フレームワーク
１３０４  サーバ
１３１０  サーバ・データ・ストア
【図１】
2005259138.tif 000046
【図２】
2005259138.tif 000047
【図３】
2005259138.tif 000048
【図４】
2005259138.tif 000049
【図５】
2005259138.tif 000050
【図６】
2005259138.tif 000051
【図７】
2005259138.tif 000052
【図８】
2005259138.tif 000053
【図９】
2005259138.tif 000054
【図１０】
2005259138.tif 000055
【図１１】
2005259138.tif 000056
【図１２】
2005259138.tif 000057
【図１３】
2005259138.tif 000058