(57)【特許請求の範囲】
【請求項１】
コンポーネントに相互にデータを転送させるためのシステムであって、
ユニバーサルデータ転送インタフェースを有する第一のコンポーネントと、
該ユニバーサルデータ転送インタフェースに対し、データ転送セッションオブジェクトを使って、該第一のコンポーネントと少なくともひとつのコンポーネントとの間でデータを転送させる第二のコンポーネントであって、前記データ転送セッションオブジェクトは、前記第一のコンポーネントでサポートされるデータのタイプを返す命令と、前記第一のコンポーネントの非同期イベントノーティフィケーションを受け取ることを可能にする命令と、前記第一のコンポーネントのデバイスのタイプとステータスを返す命令と、前記第一のコンポーネントまたは前記少なくともひとつのコンポーネントが、データのタイプに基づいてデータを転送するために用いる転送媒体を選択するために相互に交渉することを可能にする命令を含む第二のコンポーネントと、
を備えることを特徴とするシステム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は一般に、通信システムと方法に関し、より詳しくは、任意のコンポーネントに対し、モバイルコードを利用するひとつまたは複数のユニバーサルデータ転送インタフェースを使って、相互にデータ転送させるシステムと方法に関する。
【０００２】
【従来の技術および発明が解決しようとする課題】
分散型ネットワークをはじめとするデータ通信環境において、異なるベンダ各社が具体的サービスのための多数の製品を提供している。これまで、環境内の任意のコンポーネントに相互に通信させるためには、これらのコンポーネントがデータを送信または受信していたと仮定し(以下、「転送データ」という)、所定のドメインごとのプロトコルセットを指定することが必要であった。たとえば、あるベンダが製造したデバイスは、上記のような所定のプロトコルセットを使用しないと、別のベンダによるデバイスとの通信に問題がある。各ベンダーが必要とする所定のプロトコルがそれぞれ異なるという問題は、既存のプロトコル標準を採用することにより、ある程度対処されてきた。しかしながら、複数の標準化機構があるためプロトコル規格が異なる。
【０００３】
たとえば、コンピュータアプリケーションまたはプログラム、データ、メモリ、ファイルディレクトリ、個人用ファイル、プリンタ、セルラーフォン、ファクシミリ、コピー機、スキャナ、デスクトップコンピュータ、ラップトップコンピュータ、携帯情報端末（ＰＤＡ）システム、その他の機器に代表される任意のコンポーネント同士が相互に関する事前の知識なく通信しようとする場合、うまく通信するためには、ファイルシステムドメイン（たとえばＮＦＳ，ＣＩＦＳ）またはプリンタドメイン（たとえばＩＰＰ，ＬＰＲ）等、特定のドメイン別のプロトコルを両者が事前に知っていなければならない。ファイルシステムと通信しようとしているＰＤＡ等、あるいはこれを行おうとしているプリンタをはじめとする任意のコンポーネントは、上記のような標準的なプロトコルのひとつまたは複数を理解するよう明確にプログラムされていなければならない。その例として、特定ドメインのプリンタドライバをインストールすることにより、プリンタを理解するようプログラムしなければならないコンピュータデバイスまたはアプリケーションが挙げられる。デバイスまたはアプリケーションがプリンタとの通信、使用方法を理解するようプログラムされていると、一般に、ドライバはそのデバイスまたはアプリケーションが特定のタイプのプリンタにのみアクセスできるようにし、すべてのプリンタについて汎用的に用いることはできない。したがって、新しい未知のコンポーネントが等式に入ってくると、アプリケーションはその新コンポーネントと通信するために使用する、新たな標準化プロトコルを理解するよう再プログラムしなければならない。上記のコンピュータとプリンタの例で言えば、新たなタイプのプリンタを導入した場合、コンピュータデバイスは、新しいプリンタ専用のプリンタドライバをインストールすることにより新しいプリンタとデータ転送できるようにプログラムしなおす必要がある。したがって、各アプリケーションは、そのプロトコルと関連するコンポーネントと通信するための事前のな特定の標準化プロトコルセットを使用するよう明確に書かれていなければならない。
【０００４】
カリフォルニア州パロアルトのサン・マイクロシステムズが開発したＪｉｎｉ（登録商標）は、すべての引用によって本明細書に援用する文献、カリフォルニア州パロアルト、サン・マイクロシステムズ（登録商標）による２０００年の「Ｊｉｎｉ（登録商標）テクノロジーのヘルパ、ユーティリティおよびサービスに関する仕様」、１−２１４ページ、カリフォルニア州プロアルトのサン・マイクロシステムズ（登録商標）による２０００年の「Ｊｉｎｉ（登録商標）テクノロジーのコアプラットフォームの仕様」、１−１２６ページにおいて説明されている。この、ドメインごとのインタフェースを利用するＪｉｎｉ（登録商標）のようなシステムにおいて、ＰＤＡ（携帯情報端末）システム等のコンポーネントがプリンタ等の別のコンポーネントと通信するためには、ＰＤＡシステムは、プリンタのプログラム上のインタフェースのセマンティックス（semantics）に関する事前の知識を含んでいなければならない。言い換えれば、印刷方法をわかっているコンポーネントでも、それが特定のコンポーネントに関するインタフェースとの通信方法がわかるよう明確にプログラムされていないかぎり、ファイルシステム、スキャナまたはネットワーク翻訳サービス間のデータ転送方法はわからないかもしれない。
【０００５】
【課題を解決するための手段】
本発明は、コンポーネントに相互にデータを転送させるためのシステムであって、ユニバーサルデータ転送インタフェースを有する第一のコンポーネントと、該ユニバーサルデータ転送インタフェースに対し、データ転送セッションオブジェクトを使って、該第一のコンポーネントと少なくともひとつのコンポーネントとの間でデータを転送させる第二のコンポーネントであって、前記データ転送セッションオブジェクトは、前記第一のコンポーネントでサポートされるデータのタイプを返す命令と、前記第一のコンポーネントの非同期イベントノーティフィケーションを受け取ることを可能にする命令と、前記第一のコンポーネントのデバイスのタイプとステータスを返す命令と、前記第一のコンポーネントまたは前記少なくともひとつのコンポーネントが、データのタイプに基づいてデータを転送するために用いる転送媒体を選択するために相互に交渉することを可能にする命令を含む第二のコンポーネントとを備えることを特徴とする。
【０００９】
本発明により、同じまたは異なる通信プロトコルまたはデータタイプを有するコンポーネントが、ドメインごとのインタフェース、プロトコル、データフォーマットの事前の知識を持つことなく、相互にデータを転送することができる。
【００１０】
【発明の実施の形態】
図１に、本発明のひとつの実施形態による、任意のコンポーネントに相互にデータ転送させるためのシステム１０を示す。この特定の実施形態において、システム１０はコンピュータ２０、プリンタ２１、携帯情報端末（ＰＤＡ）２２、サーバ２３、ファクシミリ２４（以下、「コンポーネント２０−２４」という）を備える。ひとつの実施形態による方法は、コンピュータ２０が、コンポーネント２１−２４のひとつまたは複数と関連するユニバーサルデータ転送インタフェースのひとつ（つまり、データソースインタフェースまたはデータシンクインタフェース）を取得するステップと、取得したユニバーサルデータ転送インタフェースのひとつまたは複数に、コンポーネント２０−２４の間でデータ転送させるステップを含む。本発明により、同じまたは異なる通信プロトコルまたはデータタイプを使用するコンポーネント２０−２４は、ドメインごとのインタフェース、プロトコルまたはデータフォーマットを事前に知ることなく、相互間でデータ転送することができる。本発明により、コンポーネント２０−２４は他のコンポーネント２０−２４とのデータ転送セッションを開始することも可能となる。
【００１１】
さらに詳しく図１を参照すると、コンピュータ２０はこの特定の実施形態において、コンポーネント２１−２４の各々と動作的に接続されているが、より多いまたは少ないコンポーネント数による、別の接続配置や構成も可能である。たとえば、システム１０は、他のコンポーネント２１−２４のひとつまたは複数と直接接続されたコンポーネント２１−２４のひとつまたは複数を有してもよいし（たとえばピア・トゥー・ピアシステム）、システム１０は、相互に接続されたコンポーネント２０と２１を有してもよい。
【００１２】
コンポーネント２０−２４は、デジタル構内自動電話交換システム（ＰＢＸ）を通じた、公共交換電話線を使用する従来のダイヤルアップ通信システムや回線ベースの電話通信プロトコルを使って相互に通信することができる。図にはひとつのタイプの通信システムとプロトコルが示されているが、別の各種の通信システムまたはプロトコルを使用することができる。たとえば、衛星信号、電波、マイクロウェーブまたは赤外線信号等の信号を利用するローカルエリアネットワーク（ＬＡＮ）、ワイドエリアネットワーク（ＷＡＮ）および移動または衛星通信ネットワークシステムに代表される通信システムまたはネットワークアーキテクチャを使用できる。さらに、ｘＤＳＬ，ＩＳＤＮ，ＴＣＰ／ＩＰまたはＲＦＣ，ＯＳＩ機関が定義するプロトコル等、データ伝送のための各種通信プロトコルも利用可能である。使用するプロトコルの種類は、特定のコンポーネントが使用する通信システムの種類、コンポーネントの種類（たとえば、プリンタかスキャナか）、またはコンポーネントが動作するネットワーク環境の種類（たとえば、ＵＮＩＸ（登録商標）動作環境）によって異なる。コンポーネント２０−２４は、ひとつまたは複数の通信プロトコルを使用できる。さらに、図１の矢印は、コンポーネント２０−２４間の通信の流れを示す。
【００１３】
図２を参照すると、この実施形態において、コンピュータ２０は中央処理ユニット（ＣＰＵ）３０、メモリ３２およびＩ／Ｏユニット３４を備え、これらはバス３６によって相互に接続されているが、コンピュータ２０は、本発明のひとつまたは複数の方法を実行するための命令を記憶、処理、実行できるどのようなタイプのデバイスまたはシステムを備えていてもよい。一例にすぎないが、コンピュータ２０は、スキャナ、携帯電話、表示デバイス、ビデオ入力／出力デバイス、オーディオ入力／出力デバイス、遠隔コントロールデバイスまたは器具を備えてもよい。コンピュータ２０は、本発明のひとつまたは複数の方法を行うための命令を実行するハード配線による回路を有するどのようなタイプのデバイスでもよい。コンピュータ２０は、それが動作する環境に関する命令を実行する。この環境は、たとえば１９７４年アディソン−ウェズリー出版社発行のＷ．リチャード・スティーブンスによる「ＵＮＩＸ（登録商標）環境における高度なプログラミング」に記載されたＵＮＩＸ（登録商標）環境である。この文献は、引用をもってすべてを本明細書に援用する。この実施形態において、コンピュータ２０は他のコンポーネント２１−２４のいずれとも同じ通信プロトコルを使用していないが、コンピュータが他のコンポーネント２１−２４のいずれかと同じ通信プロトコルを使用する別の実施形態もある。一例にすぎないが、コンピュータ２０はデータ転送のための第一の種類の通信プロトコルを使用してＵＮＩＸ（登録商標）環境で動作し、第二の種類の通信プロトコルを使用してマイクロソフト・ウィンドウズ（登録商標）環境で動作することもできる。
【００１４】
ＣＰＵ３０は、インテル・ペンティアム（登録商標）プロセッサのようなプロセッサを備える。ＣＰＵ３０は、本明細書で説明、図示される、本発明による任意のコンポーネントに相互にデータ転送させるための方法に関する、記憶された命令の少なくともひとつのプログラムを実行する。ＣＰＵ３０はまた、データ、メモリ、ファイルディレクトリ、個人用ファイル、ワードプロセシングアプリケーション、会計アプリケーションまたはエンジニアリンクアプリケーションを提供するような、ネットワークサービスを含むその他の作業に関する命令も実行できる。その結果、これらのアプリケーションのひとつが実行されると、スプレッドシートを作成する等の作業の命令および本発明の方法のひとつまたは複数を実行するための命令が、コンピュータ２０のＣＰＵ３０によって実行される。命令は、ＢＡＳＩＣ、Ｐａｓｃａｌ、Ｃ、Ｃ＋＋、Ｃ＃、Ｊａｖａ（登録商標）、Ｐｅｒｌ、ＣＯＢＯＬ、ＦＯＲＴＲＡＮ、アセンブリ言語、機械記号言語またはＣＰＵ３０が理解し、実行することのできるコンピュータコードまたは言語をはじめとする、さまざまなコンピュータプログラミング言語で書かれた実行可能なプログラムとして表現できる。
【００１５】
メモリ３２は、ハードディスク、フロッピー（登録商標）ディスク、コンパクトディスク（ＣＤ）、デジタルビデオディスク、磁気テープ、光ディスク、強誘電体メモリ、リードオンリーメモリ、ランダムアクセスメモリ、電気的消去可能プログラマブルリードオンリーメモリ、フラッシュメモリ、消去可能リードオンリーメモリ、スタティックランダムアクセスメモリ、ダイナミックランダムアクセスメモリ、強磁性体メモリ、電荷結合デバイス、スマートカードまたはその他の種類のコンピュータ判読可能媒体等、ＣＰＵ３０によってアクセスできるあらゆるタイプの固定または移動型メモリデバイスを備えることができる。メモリ３２は、ＣＰＵ３０が実行するための、本発明のひとつの実施形態による、任意のコンポーネントに相互にデータ転送させる方法に使用する命令３８を記憶するが、これらの命令の全部または一部を別の場所に記憶してもよい。ユニバーサルインタフェースまたはデータオブジェクトのひとつまたは複数のグループをメモリ３２に記憶し、本発明の実行中にＣＰＵ３０が必要に応じて読み出すこともできる。これについては詳しく後述する。この実施形態においては、ＣＰＵ３０とメモリ３２は物理的に同じ場所にあるが、図１に示すサーバ２３等、異なる場所にあってもよい。
【００１６】
コンピュータ２０は、Ｉ／Ｏユニット３４を使ってコンポーネント２１−２４と通信する。この実施形態において、Ｉ／Ｏユニット３４は、コンピュータ２０をコンポーネント２１−２４に動作的に接続するのに十分なポートを有する、あらゆる種類のイーサネット（登録商標）ベースのデバイスに代表されるルータを備えてもよい。
【００１７】
図１に戻ると、プリンタ２１は、たとえば印刷媒体上にグラフィクスによる表現を載せることのできる従来の印刷デバイスを備える。プリンタ２１等のデバイスは当業界で周知であるため、ここではプリンタ２１内の配置と動作について詳しく説明しない。
【００１８】
ＰＤＡ２２は、電話、ファクシミリ通信またはネットワーキング等の機能を果たす従来のハンドヘルドデバイスである。ＰＤＡ２２等のデバイスは当業界で周知であるため、ここではＰＤＡ２２なイブの物理的要素、その配置、動作について詳しく説明しない。
【００１９】
サーバ２３は、ひとつまたは複数のＣＰＵ、メモリ、Ｉ／Ｏユニット、ひとつまたは複数の記憶媒体を有する従来のコンピュータシステムであり、記憶媒体はバスによって相互に接続され、本発明のひとつまたは複数の実施形態によって命令を記憶、処理するためにサーバ２３によって使用される。これについてさらに説明する。サーバ２３等のデバイスは当業界で周知であるため、ここではサーバ２３内部の配置と動作について詳しく説明しない。
【００２０】
ファクシミリ２４は、電話回線またはネットワーク上で絵やテキストを送受信できる従来のファクシミリである。ファクシミリ２４等のデバイスは当業界で周知であるため、ここではファクシミリ２４内部の配置と動作について詳しく説明しない。
【００２１】
図３において、コンピュータ２０は、図１について上述したように、ＰＤＡ２２に接続されている。ＰＤＡ２２は、メモリに記憶されているか、あるいはたとえばアクセシングサーバ２３によってアクセスされ（以下、「関連している」という）、ユニバーサルインタフェースセット２２ａは、データソースインタフェース、コンテクストインタフェース、ノーティフィケーションインタフェースおよびユーザインタフェースを含む。具体的な数または組み合わせのインタフェースは、ＰＤＡ２２がどのような種類のデバイスか、またそれによって望まれる、または提供される能力またはサービスによって異なる。また、ＰＤＡ２２、従ってユニバーサルインタフェースセット２２ａはいつでもアップデートし、インタフェースの追加、削除、変更が可能である。また、コンピュータ２０はＰＤＡ２２と関連するインタフェースにアクセスするようプログラムされている。同様に、ＰＤＡ２２は、コンピュータ２０と関連するひとつまたは複数のインタフェース（図示せず）にアクセスできる。
【００２２】
コンピュータ２０は、データオブジェクト２２ｂを通じてユニバーサルインタフェースセット２２ａにアクセスし、ここで説明するように、異なるタイプの通信を行うことができる。ユニバーサルインタフェースセット２２ａの各インタフェースは、命令、処理セットまたはその他のデータを含み、コンピュータ２０はこれを理解、実行し、ＰＤＡ２２との通信、データ転送（データの送受信）を行い、ＰＤＡ２２とコンテクスト情報を交換し、コンピュータ２０にＰＤＡ２２に関するイベントノーティフィケーションを提供する、あるいはコンピュータ２０が、コンピュータ２０のユーザにＰＤＡ２２へアクセスし、またこれを操作させるためにユーザインタフェースを受けることができる。一般に、ユニバーサルインタフェースセット２２ａの各インタフェースは、ＰＤＡ２２について特定ドメインのものではない。
【００２３】
特に、データソースインタフェースは、ｇｅｔＳｏｕｒｃｅＤａｔａＦｌａｖｏｒ（）処理およびｂｅｇｉｎＴｒａｎｓｆｅｒＳｅｓｓｉｏｎ（）処理等、複数の処理を含む。さらに、データソースインタフェースは、コンピュータがＰＤＡ２２からのデータを受信できるようにデータ転送セッションを確立するために、コンピュータ２０によって実行される命令とデータを含む。ｇｅｔＳｏｕｒｃｅＤａｔａＦｌａｖｏｒ（）処理は、ＰＤＡ２２が転送できるデータのタイプを決定するために、コンピュータ２０によって実行される命令とデータを含む。この特定の実施形態において、コンピュータ２０はｇｅｔＳｏｕｒｃｅＤａｔａＦｌａｖｏｒ（）処理を実行し、これがＰＤＡ２２によってサポートされるひとつまたは複数のデータタイプのリストを返す。さらに、この実施形態におけるデータのタイプは、通常、ＭＩＭＥデータタイプである。たとえば、上記の動作を実行した後、コンピュータ２０はＰＤＡ２２が“ＪＰＥＧ”フォーマットのデータをサポートすると判断する。ｂｅｇｉｎＴｒａｎｓｆｅｒＳｅｃｃｉｏｎ（）処理は、ＰＤＡ２２に対し、データオブジェクト２２ｂを通じてコンピュータ２０にデータ転送セッションオブジェクト２２ｃを返すことによってデータを受信するようにデータ転送セッションを確立するよう要求するために、コンピュータ２０によって実行される命令とデータを含む。また、ｂｅｇｉｎＴｒａｎｓｆｅｒＳｅｓｓｉｏｎ（）処理は、呼び出されたときに、コンテクストパラメータ、初期リース持続時間パラメータおよびデータフレーバパラメータ等のパラメータを受け取る。この実施形態において、コンピュータ２０は、ｂｅｇｉｎＴｒａｎｓｆｅｒＳｅｃｃｉｏｎ（）処理を呼び出すときに、この動作にコンテクストパラメータを渡し、ＰＤＡ２２に対してコンピュータ２０を識別させるため、ＰＤＡ２２に対してコンピュータ２０のユーザを識別させるため、ＰＤＡ２２に対してネットワーク上のコンピュータ２０の位置を識別させるため、あるいはセキュリティのため等、各種の理由でその識別をＰＤＡ２２に知らせる。ＰＤＡ２２は、コンテクストパラメータにおいて提供される識別情報に基づいて、コンピュータ２０にデータを転送するか否かを決定する。さらに、データ転送セッションはリース（lease）され、したがって、ｂｅｇｉｎＴｒａｎｓｆｅｒＳｅｓｓｉｏｎ（）処理に渡された初期リース持続時間パラメータにおいて特定された値に対応する時間間隔でコンピュータによって定期的に更新し、データ転送セッションをアクティブな状態に保つ必要があるが、セッションをリースする必要のない別の実施形態もある。セッションがリースされる場合は必ず、コンピュータ２０がリースされたＰＤＡ２２を更新しないと、コンピュータ２０がクラッシュした、またはその他リーチ不可能な状態になったためにリースの更新を行わなかったとの前提に立って、コンピュータ２０へのデータ転送が停止される。また、ｇｅｔＳｏｕｒｃｅＤａｔａＦｌａｖｏｒ（）処理を実行することによって、ＰＤＡ２２がひとつまたは複数のタイプのデータをサポートすると判断された場合、データフレーバパラメータがｂｅｇｉｎＴｒａｎｓｆｅｒＳｅｓｓｉｏｎ（）処理に���される。コンピュータ２０は、各種の理由により、データフレーバパラメータに好ましいデータタイプの値を提供する。たとえば、コンピュータ２０とＰＤＡ２２が複数の互換性のあるデータタイプをサポートする場合、コンピュータ２０はそのパラメータを使用して、データ転送のために好ましいデータタイプを特定する。この実施形態において、コンピュータ２０は、たとえば、コンピュータ２０のユーザに好ましいデータタイプを表示させる、コンピュータ２０とＰＤＡ２２との間で互換性のあるデータタイプのひとつをランダムに選択する、あるいは転送される特定のデータにとって最も効率のよいデータタイプを選択する等、さまざまな方法を使って好ましいデータを決定している。
【００２４】
コンテクストインタフェースは、コンピュータ２０がＰＤＡ２２からコンテクスト情報を読み出すために実行することのできる命令とデータを含む。この実施形態において、コンテクスト情報はＰＤＡ２２のメモリの中に、ハッシュテーブルに似た多値データ構造として記憶されるが、コンテクスト情報は他のフォーマットで記憶してもよい。また、この実施形態において、コンテクスト情報は、そのデバイスはどのようなタイプか、動作状態、識別、位置、管理ドメインまたはその他の環境データのタイプ等、ＰＤＡ２２に関する情報を含む。別の実施形態において、コンテクスト情報はサーバ２３等の別の物理的な場所に記憶することも可能である。
【００２５】
ノーティフィケーションインタフェースは、ｒｅｇｉｓｔｅｒ（）処理を含み、これはひとつまたは複数のパラメータを受けて、コンピュータ２０がＰＤＡ２２によって発生されるイベントに関する非同期ノーティフィケーションを受け取るためにコンピュータによって実行される。コンピュータ２０は同期ノーティフィケーションを受け取ることもできる。コンピュータ２０はｒｅｇｉｓｔｅｒ（）処理を実行し、これにコンテクストパラメータ、コンポーネントパラタ、初期リース持続時間パラメータを渡す。コンテクストパラメータは、たとえば、ＰＤＡ２２がセキュリティのため、または記録をとるためにコンピュータ２０にノーティフィケーションを送信するか否か判断することができるようにする等、各種の理由でＰＤＡ２２にコンピュータ２０の識別を提供する。コンポーネントパラメータは、ＰＤＡ２２において発生したイベントの通知を受けることが望ましいコンピュータ２０を識別する。さらに、イベント登録はリースされ、コンピュータ２０はイベント登録をアクティブのままにするために、初期リース持続時間パラメータにおいて特定される値に対応する時間間隔で、定期的に更新しなければならない。コンピュータ２０がリースを更新しないと、ノーティフィケーションインタフェースは、コンピュータがクラッシュした、またはその他リーチ不能となったためにリースを更新しなかったとの前提に立ち、発生されたイベントに関するノーティフィケーションをコンピュータ２０に提供するＰＤＡ２２の義務を解除する命令を含む。コンピュータ２０が、ｒｅｇｉｓｔｅｒ（）処理を実行することによってＰＤＡ２２に自分を登録すると、ＰＤＡ２２の中に、それがノーティフィケーションインタフェースと関連する動作において提供された命令に従ってコンピュータ２０に通知すべき状況が発生した場合、ＰＤＡ２２はイベントノーティフィケーションオブジェクトをコンピュータ２０に送信する。コンピュータ２０は次に、後に詳述するユーザウィンドウを発生させ、イベント情報をユーザに表示する。たとえば、ＰＤＡ２２がプリンタであり、コンピュータ２０がワードプロセシングアプリケーションであった場合、ＰＤＡ２２は、プリンタの中で紙詰まりが発生した場合に、コンピュータ２０にイベントノーティフィケーションを提供することができる。さらに、この例において、コンピュータ２０は、グラフィカルユーザインタフェース（ＧＵＩ）を使って、イベントノーティフィケーション（例えば紙詰まり等）を表示することもできる。
【００２６】
ユーザインタフェースは、ｇｅｔＵＩ（）、ｇｅｔＳｔａｔｅ（）、ｓｅｔＳｔａｔｅ（）処理を含み、これらの処理は、コンピュータ２０のユーザにＰＤＡ２２の追加機能を提供し、これを利用するためにＰＤＡ２２をアクセスまたは操作できるようにするための、ＰＤＡ２２に専用のユーザウィンドウを読み出す、または発生させるよう、コンピュータ２０によって実行される命令とデータを含む。この実施形態において、ｇｅｔＵＩ（）処理は、コンピュータ２０によって呼び出されると、ユーザがどのタイプのユーザウィンドウを発生させたいかを示すパラメータを受ける。これについては後に詳述する。ｇｅｔＵＩ（）処理は、ＰＤＡ２２からコンピュータ２０に、ユーザウィンドウを発生する、または呼び出すためのユーザウィンドウまたは命令を返し、このユーザウィンドウについてはコンピュータ２０により、たとえばユーザに対してユーザウィンドウを表示するようインスタンスが生成される。ｇｅｔＳｔａｔｅ（）処理は、状態トークンオブジェクトをＰＤＡ２２からコンピュータ２０に返すように要求するための命令とデータを含む。状態トークンオブジェクトは、コンピュータ２０に関して不透明オブジェクトであり、これはＰＤＡ２２に固有のものであり、さらにＰＤＡ２２の現在の状態（たとえば、デバイスの設定または構成）を含めることができるが、状態トークンオブジェクトはコンピュータ２０に関して透明であってもよく、この場合、コンピュータ２０はＰＤＡ２２の状態トークンオブジェクトを理解することができる。さらに、ＰＤＡ２２は、それがどの種類のデバイスか（たとえば、プリンタまたはワードプロセシングアプリケーション）によって、異なる種類の状態トークンオブジェクトを使用することができる。またさらに、ＰＤＡ２２は、特定の構成を指すポインタまたはＵＲＬ等、さまざまな方法で各々の状態トークンオブジェクトを記号化できる。あるいは、状態トークンオブジェクトは、ＰＤＡ２２の現在の状態を示すものを含んでもよい。さらに、ｓｅｔＳｔａｔｅ（）処理は、その状態トークンオブジェクトに含まれる構成データを使ってユーザウィンドウを発生させるために、コンピュータ２０によって実行される命令とデータを含む。コンピュータ２０は、それが呼び出されたときに状態トークンオブジェクトをｓｅｔＳｔａｔｅ（）処理にパラメータとして渡し、ＰＤＡ２２はこれを使って、状態トークンオブジェクトに含まれる記憶済み構成を有するユーザウィンドウを読み出す、または発生させるためにコンピュータ２０によって実行される命令とデータを返す。ｓｅｔＳｔａｔｅ（）処理はまた、コンピュータ２０によって呼び出され、ユーザ用のユーザウィンドウを作らずに、ＰＤＡ２２の状態をリセットする。
【００２７】
上記のインタフェースの各々とその中の関連する動作および後述するその他のインタフェースはモバイルコードを含む。モバイルコードは、これを実行するコンピュータ２０に転送されることのできる実行可能データである。たとえば、Ｊａｖａ（登録商標）はインターネットで広く使用されている実行可能なコンテンツ（つまり、モバイルコード）を実現したものである。ユーザは、たとえばインターネットからモバイルコードをダウンロードし、ごく一般的なプログラミング言語を使って書かれたプログラムをその場で実行することができる。この実施形態において、モバイルコードはオブジェクト指向モバイルコードであり、これは、プログラミング分野においてはよく知られており、データタイプが関連する手順または一連の命令に沿って定義できる。この場合のデータタイプはクラスと呼ばれる。このように、一連の手順（プロシージャ）または命令は、ひとつまたは複数のデータタイプと関連する。さらに、それと関連する特定のデータタイプに応じて対応する命令を実行する手順または一連の命令を識別するように、同じ名前または識別子を割り当てることができ、これらはしばしば多相性と呼ばれる。このように、一例にすぎないが、ドロー手順を実行し、それが呼び出されたときに手順に提供される、あるいは渡されるデータのタイプに応じて、円または長方形を描くことができる。さらにこの例において、円形のデータタイプが、たとえば半径座標を定義し、ドロー手順が呼び出され、関係データタイプがドロー手順に渡されると、ドロー手順は、ドロー手順と関連するその他のデータタイプを継承し、それに提供されたデータを使って、円を書くための適当な手順または一連の命令を実行する。この実施形態において、ユニバーサルインタフェースセット２２ａがコンピュータ２０に提供されると、コンピュータ２０は手順、命令セットおよび特定のインタフェースと関連するその他のデータにアクセスし、実行できる。これについては後に詳しく説明する。さらに、可変値、パラメータ、データがユニバーサルインタフェースに渡される、または提供され、所望の特定の通信タイプに応じて、コンピュータ２０によって相応に理解され、利用される。また、インタフェースは命令または他のインタフェースへの参照セットを有し、コンピュータはそれに従ってデータを利用する、あるいは命令を実行する。
【００２８】
コンピュータ２０はまた、データオブジェクト２２ｂを取得することなく、ユニバーサルインタフェースセット２２ａに含まれるインタフェースの各々に直接アクセスし、本明細書で説明するいろいろな種類の通信を行うことができる。さらに、ユニバーサルインタフェースセット２２ａ内のインタフェースの各々は、同じ命令、動作セットまたはその他のデータを含み、コンピュータ２０はこれを理解、実行し、ＰＤＡ２２との通信、データ転送のほか、上記のその他機能を果たすことができる。したがって、モバイルコードはこの例においては不要となるが、データが転送されている場合等、必要に応じて使用することも可能である。
【００２９】
この実施形態において、データオブジェクト２２ｂはＰＤＡ２２から受信され、コンピュータ２０に記憶されるが、データオブジェクト２２ｂは、サーバ２３等、別の場所に記憶してもよい。ユニバーサルインタフェースセット２２ａは、データオブジェクト２２ｂを通じてコンピュータ２０にアクセスできる。具体的には、データオブジェクト２２ｂは、ＰＤＡ２２と関連するインタフェースによって定義される各種の処理をサポートし、これらはコンピュータ２０によって知られ、理解されるものと仮定される。データオブジェクト２２ｂは、ＰＤＡ２２と関連するひとつまたは複数のインタフェースの具体的に実現したものを提供する命令（つまり、コンピュータ実行可能なコード）またはデータであり、ここからデータオブジェクト２２ｂが関連する。たとえば、ＰＤＡ２２がコンピュータ２０に提供するデータオブジェクト２２ｂは、ＰＤＡ２２の開発者がどのプロトコルまたはデータフォーマットに決定したかを問わず、これを使ってＰＤＡ２２と通信するよう専用化された、データソースインタフェースのカスタム態様を提供する。
【００３０】
この実施形態において、データ転送セッションオブジェクト２２ｃは、ｇｅｔＴｒａｎｓｆｅｒＤａｔａ（）処理、ｇｅｔＤａｔＳｏｕｒｃｅ（）処理、上記のノーティフィケーションインタフェースと関連するｒｅｇｉｓｔｅｒ（）処理、ｇｅｔＬｅａｓｅ（）処理、ｇｅｔＶｉｅｗｅｒ（）処理、ｇｅｔＥｄｉｔｏｒ動作、ｇｅｔＰｒｉｎｔｅｒ（）処理ならびに、コンピュータ２０にＰＤＡ２２からのデータ、たとえば、受信されるデータのタイプに応じて異なるビデオまたはファイル転送のためのプロトコルを受信させるために必要なその他の命令を含む。データ転送セッションオブジェクト２２ｃは、ＰＤＡ２２に専用であるが、コンピュータ２０によってデータ受信のために実行される上記の動作と命令を含む。たとえば、コンピュータ２０（つまり、データシンクコンポーネント）がＰＤＡ２２（つまり、データソースコンポーネント）からのデータを受信する実施形態において、コンピュータ２０はｇｅｔＤａｔａＴｒａｎｓｆｅｒ（）処理を呼び出し、ＰＤＡ２２からデータを実際に読み出す。さらに、コンピュータ２０はｇｅｔＤａｔａＳｏｕｒｃｅ（）処理を呼び出し、ＰＤＡ２２の識別その他の属性を判断することができる。コンピュータ２０はまた、ｇｅｔＤａｔａＳｏｕｒｃｅ（）処理を呼び出し、データ転送中のその挙動を変更すべきか、あるいは特定のデータ転送を実行させるべきかを決定することもできる。
【００３１】
この実施形態において、コンピュータ２０は、データ転送セッションオブジェクト２２ｃを通じて、ＰＤＡ２２から送られるデータを受信し、理解する方法について、詳細を知る必要がない。特に、データ転送セッションオブジェクト２２ｃ内に含まれる命令と各種の動作は、ＰＤＡ２２に固有の特定のプロトコル、媒体およびデータのタイプに関する情報を含み、コンピュータ２０はこれを実行して、ＰＤＡ２２が異なるプロトコル、媒体、データのタイプを利用しても、ＰＤＡ２２から転送されたデータを受信し、理解することができる。さらに、データ転送セッションオブジェクト２２ｃは、コンピュータ２０がデータ転送中にＰＤＡ２２と交渉し、転送されるデータのタイプに基づいて、相互間でのデータ転送に使用される通信プロトコルまたは媒体を選択することができるようにするための命令を含む。命令はまた、コンピュータ２０とＰＤＡ２２に、転送されるデータのタイプに基づいて、データ転送セッションのための異なるプロトコルを使用することについて、相互に交渉させることもできる。また、命令は、コンピュータ２０に、データ転送セッションオブジェクト２２ｃを通じて転送されるデータのフォーマットまたはコンテンツを変更し、必要に応じて、コンピュータ２０に関連する第一のデータ転送プロトコルからＰＤＡ２２に関連する第二のデータ転送プロトコルへとデータを変換させることもできる。たとえば、ＰＤＡ２２がコンピュータにストリーミングビデオを転送しているとき、ＰＤＡ２２にとって、圧縮または累進的記号化を使用してデータを転送するほうが効率的であろう。コンピュータ２０は、データ転送セッションオブジェクト２２ｃの中に含まれる命令と動作を実行し、データ転送セッションオブジェクト２２ｃがコンピュータ２０と交渉し、データ転送セッションのために使用される特定のプロトコルを決定し、次に、コンピュータ２０に対し、データ転送セッションオブジェクト２２ｃを通じて、コンピュータ２０がデータ転送セッションオブジェクト２２ｃを通じて転送されるデータを読み出し、理解するために必要な動作、命令、データを提供する。さらに、コンピュータ２０とＰＤＡ２２は、入手可能なものがあれば、好ましい物理的輸送媒体について交渉する。たとえば、共有ＦｉｒｅＷｉｒｅ、ＩＲまたはＢｌｕｅｔｏｏｔｈ接続がコンピュータ２０とＰＤＡ２２をリンクしていることがわかった場合、これをイーサネット（登録商標）接続の代わりに、データ転送のための物理的転送媒体として使用することができる。命令は、低速データ転送リンク上でのデータ転送速度を低減するための動作、あるいはデータ転送セッション中にエラーに遭遇した際、冗長性を高めるための動作を含んでもよい。
【００３２】
さらに、データ転送セッションオブジェクト２２ｃは、コンピュータ２０がデータ転送セッションオブジェクト２２ｃを通じて転送されるデータのタイプを見ることができるようにするために、コンピュータ２０が実行する命令を含んでもよい。たとえば、コンピュータ２０が「ＪＰＥＧ」のイメージファイルまたは、たとえばＰＤＡ２２から転送されたビデオデータ転送ストリーミングを表示するようプログラムまたは構成されていない場合、コンピュータ２０はデータ転送セッションオブジェクト２２ｃに含まれる命令を実行し、たとえば、コンピュータ２０に関連するディスプレイデバイス上で、転送されたデータを見ることができる。特に、データ転送セッションオブジェクト２２ｃは、その動作がコンピュータ２０によって呼び出されたときに、ビューワオブジェクトを返す、ｇｅｔＶｉｅｗｅｒ（）処理を含んでもよい。ビューワオブジェクトは、ＰＤＡ２２によって理解され、使用されるデータの具体的タイプに特定のものである。さらに、ビューワオブジェクトは、コンピュータ２０によって実行された場合に、その命令がコンピュータ２０に転送されたデータを見させる点を除き、コンピュータ２０にユーザインタフェースを提供するための、上記と同じ命令を含んでもよい。ビューワオブジェクトはまた、コンピュータ２０に対し、ＰＤＡ２２に関連し、コンピュータ２０がそのようなデータのタイプを見るよう以前にはプログラムされていなかったとしても転送される特定のデータタイプを見させるような命令を含んでもよい。さらに、ｇｅｔＶｉｅｗｅｒ（）処理は、ユーザインタフェースについて先に述べたように、コンピュータ２０にコンピュータ２０が表示したいユーザウィンドウのタイプ（つまり、グラフィクスまたはスピーチ）を特定させるようなパラメータを受ける。この実施形態において、ｇｅｔＶｉｅｗｅｒ（）処理はＰＤＡ２２に記憶され、データオブジェクト２２ｂを通じてコンピュータ２０にアクセスできる。あるいは、またはこれに加えて、ｇｅｔＶｉｅｗｅｒ（）処理は、サーバ２３（図１参照）等の中央レポジトリに記憶することもできる。この例の場合、サーバ２３はひとつまたは複数のｇｅｔＶｉｅｗｅｒ（）処理を記憶し、各動作がコンピュータ２０にデータの特定のタイプを見させる命令を含む。この実施形態において、「見る」や「表示する」という用語は、他の形態の出力を包含するものとし、たとえば、データ転送セッションオブジェクト２２ｃにおける命令がコンピュータ２０に、スピーカ等のオーディオ出力デバイスを通じて特定のフォーマットのオーディオファイルをプレイさせる場合等がある。さらに、データ転送セッションオブジェクト２２ｃは、ｇｅｔＥｄｉｔｏｒ（）処理やｇｅｔＰｒｉｎｔｅｒ（）処理等、ｇｅｔＥｄｉｔｏｒ（）処理とｇｅｔＰｒｉｎｔｅｒ（）処理が、コンピュータ２０がＰＤＡ２２と関連するデータの具体的なタイプを理解するようプログラムされていたか否かを問わず、コンピュータ２０に転送データをそれぞれ編集または印刷させる点を除き、ｇｅｔＶｉｅｗｅｒ（）処理と同じ命令を有する。このように、この実施形態において、コンピュータ２０は、データ転送セッション中に遭遇するデータフォーマットのタイプをすべて理解する必要がない。なぜなら、このようなデータを理解するための命令がデータ転送セッションオブジェクト２２ｃの中に含まれているからである。コンピュータ２０は少なくとも、データ転送セッションオブジェクト２２ｃに含まれる各種の命令と動作を実行する能力を有する。
【００３３】
この実施形態において、ａｂｏｒｔ（）処理は、コンピュータ２０にＰＤＡ２２とのデータ転送セッションを終了させる命令を含む。さらに、コンピュータ２０はＰＤＡ２２に対し、データ転送セッションが失敗した、あるいは完了したことを、それぞれｆａｉｌ（）処理またはｃｏｍｐｌｅｔｅ（）処理を実行することによって示すことができる。コンピュータ２０とＰＤＡ２２との間のデータ転送セッションが失敗した、完了した、あるいは中途終了された場合、登録によって、データ転送セッションの状態への関心を示したコンポーネント２０−２４におけるリスナには、ｒｅｇｉｓｔｅｒ（）処理を通じてイベントが伝えられる。信号化プロトコルは、データ転送セッションが不定の持続時間を有する（たとえば、ストリーミンクビデオ）場合等、ＰＤＡ２２が、いつコンピュータ２０が終了したかを自動的に判断できない場合、コンピュータ２０に、データ転送セッションオブジェクト２１ｃを使って、コンピュータ２０がいつ終了したかを示させる。ｇｅｔＬｅａｓｅ（）処理は、データ転送セッションをアクティブに保つために、コンピュータ２０に初期リース持続時間パラメータに従ってリースを更新させる。
【００３４】
図４において、ステップ４０で、コンピュータ２０はディスカバリプロセスを実行して、コンピュータ２０とＰＤＡ２２が相互にデータを転送できるか判断する。この実施形態において、コンピュータ２０は各種のディスカバリシステムを使用してＰＤＡ２２のディスカバリを行う。ディスカバリシステムには、Ｂｌｕｅｔｏｏｔｈ  ＳＩＧによって開発され、ディスカバリ・ユニバーサル・ディスクリプション、２００１年Ｂｌｕｅｔｏｏｔｈコンソーシアム、バージョン１．１コア、「Ｂｌｕｅｔｏｏｔｈシステムの仕様」に記載されたＢｌｕｅｔｏｏｔｈ（登録商標）サービス・ロケーション・プロトコル（ＳＬＰ）、アリバ、ＩＢＭ（登録商標）、マイクロソフト（登録商標）によって開発され、ディスカバリ・ユニバーサル・ディスクリプション・アンド・インテグレーション・コンソーシアム、「ＵＤＤＩテクニカル・ホワイトペーパー」２０００年１−１２ページ、アリバ、インターナショナル・ビジネス・マシンズ（登録商標）、マイクロソフト（登録商標）、「ユニバーサル・ディスクリプション・ディスカバリ・アンド・インテグレーション・データ・ストラクチャ・リファレンス、バージョン１．０」２０００年１−３１ページ、アリバ（登録商標）、インターナショナル・ビジネス・マシンズ（登録商標）、マイクロソフト（登録商標）、「ユニバーサル・ディスクリプション・ディスカバリ・アンド・インテグレーション・プログラマのＡＰＩ  １．０」２０００年１−６７ページ、アリバ（登録商標）、インターナショナル・ビジネス・マシンズ（登録商標）、マイクロソフト（登録商標）、「ユニバーサル・ディスクリプション・ディスカバリ・アンド・インテグレーション・テクニカル・ホワイトペーパー」２０００年１−１２ページに記載されたユニバーサル・ディスクリプション・ディスカバリおよびインテグレーション・プロトコル（ＵＤＤＩ）、各種のＪｉｎｉ（登録商標）システムディスカバリプロトコルまたはネームサーバ内のシンプルなルックアップがあり、これらはすべて、引用によって全体が本明細書に援用される。ディスカバリが行われたＰＤＡ２２は、コンピュータ２０にデータオブジェクト２２ｂを返す。コンピュータ２０は、受け取ったデータオブジェクト２２ｂを内観し、どのひとつまたは複数のインタフェースがＰＤＡ２２と関連するかを判断する。したがって、コンピュータ２０が上記のディスカバリ動作を実行し、ＰＤＡ２２からデータオブジェクト２２ｂを受信すると、コンピュータ２０は受け取ったデータオブジェクト２２ｂを内観し、どのユニバーサルインタフェースにＰＤＡ２２が関連しているかを判断する。コンピュータ２０は、ＰＤＡ２２が少なくてもデータソースインタフェースと関連していると判断し、したがって、ＰＤＡ２２はこれにデータを提供できる。コンピュータ２０は、ＰＤＡ２２に関連し、データオブジェクト２２ｂに含まれるデータソースインタフェースを呼び出し、これには、コンピュータ２０に対し、データオブジェクト２２ｂに含まれるｇｅｔＳｏｕｒｃｅＤａｔａＦｌａｖｏｒｓ（）処理を実行させるよう指示する命令が含まれる。ｇｅｔＳｏｕｒｃｅＤａｔａＦｌａｖｏｒｓ（）処理は、ＰＤＡ２２にアクセスし、コ��ピュータ２０にＰＤＡ２２によってサポートされるデータのタイプを提供するための命令を含む。
【００３５】
次に、ステップ４２において、コンピュータ２０はデータソースインタフェースに含まれるｂｅｇｉｎＴｒａｎｓｆｅｒＳｅｓｓｉｏｎ（）処理を実行するさらに、ｂｅｇｉｎＴｒａｎｓｆｅｒＳｅｓｓｉｏｎ（）処理は、呼び出されると、コンテクストパラメータ、初期リース持続時間パラメータおよびデータフレーバパラメータを受け取る。ＰＤＡ２２は、データ転送セッションオブジェクト２２ｃをコンピュータ２０に返す。コンピュータ２０は、上記の方法で好ましいデータタイプを判断し、データフレーバパラメータの中のデータを受け取るために好ましいデータタイプの数値を提供し、そうでなければ、コンピュータ２０はＰＤＡ２２によって提供される際のデータフォーマットでデータを受信する。コンピュータ２０は、データ転送セッションオブジェクト２２ｃによってＰＤＡ２２からデータを受信してもよい。
【００３６】
次に、ステップ４４において、データ転送セッションオブジェクト２２ｃは、ｇｅｔＴｒａｎｓｆｅｒＤａｔａ（）処理と、コンピュータがＰＤＡ２２からデータを読み出すために実行する上記のその他の動作と命令を含む。ステップ４６で、データはデータ転送セッションオブジェクト２１ｃを通じて、ＰＤＡ２２からコンピュータ２０に転送される。またさらに、コンピュータ２０は、本来は理解するようプログラムされていないデータタイプを見ることもできる。コンピュータ２０がｂｅｇｉｎＴｒａｎｓｆｅｒＳｅｓｓｉｏｎ（）処理を実行すると、ＰＤＡ２２は命令、動作またはデータを直接コンピュータ２０に返し、コンピュータ２０にＰＤＡ２２から転送されるデータを理解させる。
【００３７】
図５において、コンピュータ２０は先に図１について説明したように、ファクシミリ２４に接続されている。ファクシミリ２４は、メモリの中に記憶された、あるいはたとえばサーバ２３にアクセスすることによってアクセスされる、データシンクインタフェースを含むユニバーサルインタフェースセット２４ａを有する。これについては後に詳しく説明する。しかし、ファクシミリ２４は、いくつのインタフェースにも、どのような組み合わせで関連していてもよい。
【００３８】
ファクシミリ２４は、データオブジェクト２４ｂを通じてユニバーサルインタフェースセット２４ａにアクセスし、異なる種類の通信を実行できる。ユニバーサルインタフェースセット２４ａ内のインタフェースは各々、命令、動作セット、またはその他、コンピュータ２０によって理解、実行され、コンピュータ２０がファクシミリ２４と通信し、データ転送することができるようにするデータを含む。データシンクインタフェースを除き、上記のインタフェースの各々は、ＰＤＡ２２に関連して先に説明したものと同じであるが、各インタフェースは、それらが関連する特定のデバイス（たとえば、ファクシミリ２４）に特定の命令を含む。
【００３９】
特に、データインクインタフェースは、ｇｅｔＳｉｎｋＤａｔａＦｌａｖｏｒ（）およびＴｒａｎｓｆｅｒ（）処理等、複数の動作を含む。さらに、データシンクインタフェースは、コンピュータ２０がデータをファクシミリ２４に送信することができるようにするデータ転送セッションを確立するために、コンピュータ２０によって実行される命令とデータを含む。特に、ｇｅｔＳｉｎｋＤａｔａＦｌａｖｏｒ（）処理は、コンピュータ２０により、ファクシミリ２４がどのタイプのデータをサポートできるかを判断するために実行される命令とデータを含む。この特定の実施形態において、コンピュータ２０はｇｅｔＳｉｎｋＤａｔａＦｌａｖｏｒ（）処理を実行し、これがファクシミリ２４によってサポートされるひとつまたは複数のデータタイプのリストを返す。さらに、この実施形態におけるデータタイプは通常、ＭＩＭＥデータタイプである。Ｔｒａｎｓｆｅｒ（）処理は、コンピュータ２０により、ファクシミリ２４にデータ転送セッションを確立し、コンピュータ２０がファクシミリ２４へのデータ転送を開始できるようにするよう要求するために実行される命令とデータを含む。Ｔｒａｎｓｆｅｒ（）処理は、この実施形態において、呼び出されたとき、コンピュータ２０と関連するデータ転送セッションオブジェクト２０ｃ、コンテクストパラメータ、データフレーバパラメータ等のパラメータを受ける。特に、コンピュータ２０はデータ転送セッションオブジェクト２０ｃをＴｒａｎｓｆｅｒ（）処理の中に渡し、これをファクシミリ２４が利用し、その中の命令を実行して、コンピュータ２０からのデータを実際に受信できるようにする。この実施形態において、コンピュータ２０に関連するデータ転送セッションオブジェクト２０ｃは上記のデータ転送セッションオブジェクト２２ｄと同じ種類の命令、データ、動作を含むが、ここに含まれる命令、データ、動作はコンピュータ２０に特定のものである。コンピュータ２０は、それを呼び出すときに、Ｔｒａｎｓｆｅｒ（）処理の中にコンテクストパラメータを渡し、ファクシミリ２４に対し、セキュリティ等、各種の目的のためにその識別を知らせる。ファクシミリ２４は、コンテクストパラメータの中で提供された識別上方に基づいて、コンピュータ２０にデータをそこに転送させるか否かを判断する。さらに、ファクシミリ２４が、ｇｅｔＳｉｎｋＤａｔａＦｌａｖｏｒ（）処理を実行することによって判断されるひとつまたは複数のタイプのデータをサポートする場合、データフレーバパラメータはＴｒａｎｓｆｅｒ（）処理の中に渡され、コンピュータ２０によって転送されるデータのタイプをファクシミリ２４に伝える。さらに、コンピュータ２０は、各種の理由によって、データフレーバパラメータに好ましいデータタイプの数値を提供する。たとえば、コンピュータ２０とファクシミリ２４が複数の互換性のあるデータタイプをサポートし、コンピュータ２０が、パラメータを使用して、データ転送のための好ましいデータタイプを特定する場合等がある。この実施形態において、コンピュータ２０は、コンピュータ２０のユーザに好ましいデータタイプを指示させる、コンピュータ２０とファクシミリ２４との間の互換性のあるデータタイプのひとつをランダムに選択する、あるいは転送される特定のデータにとって最も効率的なデータタイプを選択する等、さまざまな方法を使って好ましいデータタイプを判断できる。さらに、コンピュータ２０はファクシミリ２４が相互に関して有限数の互換性のあるデータタイプをサポートする場合、コンピュータ２０はデータをファクシミリ２４に転送するための互換性のあるデータタイプを選択する。
【００４０】
図６において、ステップ５０で、コンピュータ２０は、ディスカバリプロセスを実行し、ひとつまたは複数の実施形態について先に説明したように、データオブジェクト２４ｂを内観することにより、ファクシミリ２４が少なくともデータシンクインタフェースと関連していることから、コンピュータ２０とファクシミリ２４が相互にデータを転送できることを判断する。コンピュータ２０は、ファクシミリ２４と関連し、データオブジェクト２４ｂに含まれるデータシンクインタフェースを呼び出し、これは、コンピュータ２０にｇｅｔＳｉｎｋＤａｔａＦｌａｖｏｒ（）処理を実行するよう指示する命令を含む。ｇｅｔＳｉｎｋＤａｔａＦｌａｖｏｒ（）処理は、ファクシミリ２４にアクセスし、前述のように、コンピュータ２０にファクシミリ２４がサポートするデータのタイプを提供する命令を含む。
【００４１】
次に、ステップ５２において、コンピュータ２０は、データシンクインタフェースに含まれるＴｒａｎｓｆｅｒ（）処理を実行する。さらに、コンピュータ２０は、前述のように、これを呼び出すときにＴｒａｎｓｆｅｒ（）処理の中にデータオブジェクト２０ｃ、コンテクストパラメータおよびデータフレーバパラメータを渡す。
【００４２】
次に、ステップ５４において、ファクシミリ２４は、Ｔｒａｎｓｆｅｒ（）処理を通じてそれに提供されるデータ転送セッションオブジェクト２０ｃ内に含まれる命令を実行し、コンピュータ２０からのデータを受信する。ステップ５６において、データは、データ転送セッションオブジェクト２０ｃにより、コンピュータ２０からファクシミリ２４に転送される。
【００４３】
図７において、コンピュータ２０、プリンタ２１、サーバ２３が、図１について前述したように、相互に接続されている。この実施形態において、プリンタ２１は、データソースインタフェース、データシンクインタフェースおよびコンテクストインタフェースを含むユニバーサルインタフェースセット２１ａと関連する。サーバ２３は、データソースインタフェース、データシンクインタフェース、コンテクストインタフェースを有するユニバーサルインタフェースセット２３と関連する。上記のインタフェースはそれぞれ、図３と図５に関連して説明したものと同じであるが、この実施形態における各インタフェースは、それらが関連しているデバイス（つまり、プリンタ２１またはサーバ２３）について特定の命令を含む。さらに、プリンタ２１と関連するデータ転送セッションオブジェクト２５は、上記のデータ転送セッションオブジェクト２０ｃと２２ｃと同じ命令、データ、動作を含むが、その中に含まれる命令、データ、動作はプリンタ２１に特定のものである。
【００４４】
図８において、ステップ６０でコンピュータ２０はディスカバリプロセスを実行し、ひとつまたは複数の実施形態について先に説明したように、データオブジェクト２１ｂと２３ｂを内観することにより、プリンタ２１がデータソースインタフェースと関連し、サーバ２３がデータシンクインタフェースと関連していることから、プリンタ２１とサーバ２３が相互にデータ転送できると判断する。コンピュータ２０は、前述のように、プリンタ２１と関連するデータソースインタフェースを呼び出し、データオブジェクト２１ｂに含まれるｇｅｔＳｏｕｒｃｅＤａｔａＦｌａｖｏｒｓ（）処理を実行し、プリンタ２１にアクセスして、プリンタ２１がサポートするデータのタイプを判断する。
【００４５】
次に、ステップ６２において、コンピュータ２０は、データソースインタフェースに含まれるｂｅｇｉｎＴｒａｎｓｆｅｒＳｅｓｓｉｏｎ（）処理を実行する。さらに、ｂｅｇｉｎＴｒａｎｓｆｅｒＳｅｓｓｉｏｎ（）処理は、コンピュータ２０またはサーバ２３に関連するコンテクストパラメータを受ける。たとえば、コンピュータ２０はサーバ２３に関連し、データオブジェクト２３ｂを通じてアクセスできるコンテクストインタフェースを呼び出す。この例において、コンピュータ２０はサーバ２３からのコンテクスト情報を受け取るが、ｂｅｇｉｎＴｒａｎｓｆｅｒＳｅｓｓｉｏｎ（）処理を通じて、これをプリンタ２１に供給する。これにより、プリンタ２１は、それがデータをサーバ２３とともに転送したいかを決定することができる。あるいは、コンピュータ２０は、同じ理由によって自己のコンテクスト情報をプリンタ２１に供給し、前述のように、呼び出されたときに初期リース持続時間パラメータを供給する。コンピュータ２０は、サーバ２３に関連し、データオブジェクト２３ｂに含まれるデータシンクインタフェースを呼び出し、これは、コンピュータ２０にｇｅｔＳｉｎｋＤａｔａＦｌａｖｏｒ（）処理を実行させる命令を含む。ｇｅｔＳｉｎｋＤａｔａＦｌａｖｏｒ（）処理は、サーバ２３にアクセスし、コンピュータ２０にサーバ２３がサポートするデータのタイプを提供する命令を含む。さらに、サーバ２３がｇｅｔＳｉｎｋＤａｔａＦｌａｖｏｒ（）処理を実行することによって判断されるように、ひとつまたは複数のデータタイプをサポートする場合、データフレーバパラメータはＴｒａｎｓｆｅｒ（）処理に渡され、サーバ２３に対し、それに転送されるデータのタイプを伝える。さらに、コンピュータ２０は各種の理由により、データフレーバパラメータに好ましいデータタイプの数値を提供する。たとえば、プリンタ２１とサーバ２３が複数の互換性のあるデータタイプをサポートし、コンピュータ２０が、そのパラメータを使用し、プリンタ２１とサーバ２３との間のデータ転送のための好ましいデータタイプを特定する場合である。プリンタ２１は、データオブジェクト２１ｂを通じて、データソースオブジェクト２５をコンピュータ２０に返す。
【００４６】
次に、ステップ６４で、コンピュータ２０は、サーバ２３と関連し、データオブジェクト２３ｂに含まれるデータシンクインタフェースに含まれるＴｒａｎｓｆｅｒ（）処理を実行する。Ｔｒａｎｓｆｅｒ（）処理は、それが呼び出されると、プリンタ２１からコンピュータ２０が受け取るデータソースオブジェクト２５、プリンタ２１と関連するコンテクストパラメータまたはデータフレーバパラメータ等のパラメータを受ける。コンピュータ２０はサーバ２３に対し、コンピュータ２０またはプリンタ２１と関連するコンテクストパラメータを提供し、サーバ２３が、セキュリティをはじめとする各種の理由で、データ転送に参加したいか否かを判断する。コンピュータ２０は、自己の命令を実行してそのコンテクスト情報を取得し、コンテクスト情報を通じてその情報をＴｒａｎｓｆｅｒ（）処理に渡すことにより、サーバ２３にそれ自身のコンテクスト情報を提供することができる。サーバ２３は、プリンタ２１からコンピュータ２０が受け取り、コンピュータ２０からＴｒａｎｓｆｅｒ（）処理を通じてサーバ２３に伝えられるデータ転送セッションオブジェクト２５として、プリンタ２１からデータを受け取る。
【００４７】
次に、ステップ６６において、サーバ２３は、データ転送セッションオブジェクト２５に含まれるｇｅｔＴｒａｎｓｆｅｒＤａｔａ（）処理を実行して、プリンタ２１からデータを読み出す。ステップ６８において、このデータは、データ転送セッションオブジェクト２５を通じてプリンタ２１からサーバ２３に転送される。この実施形態において、コンピュータ２０、プリンタ２１またはサーバ２３のひとつまたは複数は、前述の、データ転送セッションオブジェクト２５に含まれるａｂｏｒｔ（）処理、ｆａｉｌ（）処理またはｃｏｍｐｌｅｔｅ（）処理にアクセスし、これ実行することができる。また、コンピュータ２０、プリンタ２１またはサーバ２３のひとつまたは複数は、リースされたデータ転送セッションを更新する責任を負う。別の実施形態において、コンピュータ２０、プリンタ２１またはサーバ２３のひとつまたは複数は、コンピュータ２０、プリンタ２１またはサーバ２３に関連するノーティフィケーションインタフェース（図示せず）を呼び出すことにより、相互にリスナとして登録し、上述のようにイベントノーティフィケーションを受け取ることができる。この例において、コンピュータ２０は、プリンタ２１またはサーバ２３と関連するノーティフィケーションインタフェースを呼び出し、リスナとして登録し、データ転送の進行状況をモニタすることができる。プリンタ２１とサーバ２３との間のデータ転送中、コンピュータ２０の参加は不要である。コンピュータ２０がデータ転送セッションに引き続き参加するか否かは、たとえば、コンピュータ２０がデータ転送セッションに関連するイベントノーティフィケーションを受け取りたいか、あるいは前述のように、コンピュータ２０がリースされたデータ転送セッションの更新を担当するか等、各種の要因による。
【００４８】
別の実施形態において、コンピュータ２０、プリンタ２１またはサーバ２３のいずれかが、上記の実施形態のいずれかを採用し、相互間のデータソースおよびデータシンクとして機能することができる。たとえば、コンピュータ２０がデータ転送を開始すると、サーバ２３はデータソースとして機能し、データをサーバ２３に転送するプリンタ２１に関して先に説明したものと同じステップに従って、データオブジェクト転送セッション２５を通じて、プリンタ２１にデータを転送する。
【００４９】
コンピュータ２０、プリンタ２１、ＰＤＡ２２、サーバ２３、ファクシミリ２４等のデバイス（つまり、コンポーネント２０−２４）が上述のひとつまたは複数の実施形態において例として使用されたが、言語翻訳サービス、データフォーマット変換、電子メールアプリケーション、カレンダーアプリケーションまたはワードプロセシングアプリケーション内で実行されるスペルチェックルーチンをはじめとするソフトウェアサービス、アプリケーションまたはその一部等、多数の他のシステムをコンポーネント２０−２４として使用できる。たとえば、ワードプロセッサは、現在先端されているデータをデータソースコンポーネントとして使用し、それがデータシンクコンポーネントであるＰＤＡ２２に送信されるようにすることができる。
【図面の簡単な説明】
【図１】  一実施形態による、任意のコンポーネントに相互にデータ転送させるためのシステムの略図である。
【図２】  任意のコンポーネントに相互にデータ転送を行わせるシステムにおいて使用される任意のコンポーネントの例のブロック図である。
【図３】  別の実施形態による、ひとつの任意のコンポーネントが別の任意のコンポーネントからデータを受信するためのシステムの略図である。
【図４】  別の任意のコンポーネントからデータを受信するプロセスのフローチャートである。
【図５】  別の実施形態による、ひとつの任意のコンポーネントが別の任意のコンポーネントにデータを転送するためのシステムの略図である。
【図６】  別の任意のコンポーネントにデータを転送するプロセスのフローチャートである。
【図７】  別の実施形態による、ひとつの任意のコンポーネントが２つの別の任意のコンポーネントに相互にデータ転送させるシステムのブロック図である。
【図８】  任意のコンポーネントが、他の任意のコンポーネントに相互にデータ転送させるプロセスのフローチャートである。
【符号の説明】
１０  システム、２０  コンピュータ、２１  プリンタ、２２  ＰＤＡ、２２ａ  ユニバーサルインタフェースセット、２２ｂ  データオブジェクト、２２ｃデータ転送セッションオブジェクト、２３  サーバ、２４  ファクシミリ、２５データソースオブジェクト、３０  中央処理ユニット（ＣＰＵ）、３２  メモリ、３４  Ｉ／Ｏユニット、３６  バス、３８  命令。
【図１】
0004424910.tif 000002
【図２】
0004424910.tif 000003
【図３】
0004424910.tif 000004
【図４】
0004424910.tif 000005
【図５】
0004424910.tif 000006
【図６】
0004424910.tif 000007
【図７】
0004424910.tif 000008
【図８】
0004424910.tif 000009