JP4424910B2 - 任意のコンポーネントに相互にデータを転送させるシステム - Google Patents
任意のコンポーネントに相互にデータを転送させるシステム Download PDFInfo
- Publication number
- JP4424910B2 JP4424910B2 JP2003018254A JP2003018254A JP4424910B2 JP 4424910 B2 JP4424910 B2 JP 4424910B2 JP 2003018254 A JP2003018254 A JP 2003018254A JP 2003018254 A JP2003018254 A JP 2003018254A JP 4424910 B2 JP4424910 B2 JP 4424910B2
- Authority
- JP
- Japan
- Prior art keywords
- data
- computer
- pda
- transfer
- interface
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Lifetime
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/40—Network security protocols
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer And Data Communications (AREA)
Description
【発明の属する技術分野】
本発明は一般に、通信システムと方法に関し、より詳しくは、任意のコンポーネントに対し、モバイルコードを利用するひとつまたは複数のユニバーサルデータ転送インタフェースを使って、相互にデータ転送させるシステムと方法に関する。
【0002】
【従来の技術および発明が解決しようとする課題】
分散型ネットワークをはじめとするデータ通信環境において、異なるベンダ各社が具体的サービスのための多数の製品を提供している。これまで、環境内の任意のコンポーネントに相互に通信させるためには、これらのコンポーネントがデータを送信または受信していたと仮定し(以下、「転送データ」という)、所定のドメインごとのプロトコルセットを指定することが必要であった。たとえば、あるベンダが製造したデバイスは、上記のような所定のプロトコルセットを使用しないと、別のベンダによるデバイスとの通信に問題がある。各ベンダーが必要とする所定のプロトコルがそれぞれ異なるという問題は、既存のプロトコル標準を採用することにより、ある程度対処されてきた。しかしながら、複数の標準化機構があるためプロトコル規格が異なる。
【0003】
たとえば、コンピュータアプリケーションまたはプログラム、データ、メモリ、ファイルディレクトリ、個人用ファイル、プリンタ、セルラーフォン、ファクシミリ、コピー機、スキャナ、デスクトップコンピュータ、ラップトップコンピュータ、携帯情報端末(PDA)システム、その他の機器に代表される任意のコンポーネント同士が相互に関する事前の知識なく通信しようとする場合、うまく通信するためには、ファイルシステムドメイン(たとえばNFS,CIFS)またはプリンタドメイン(たとえばIPP,LPR)等、特定のドメイン別のプロトコルを両者が事前に知っていなければならない。ファイルシステムと通信しようとしているPDA等、あるいはこれを行おうとしているプリンタをはじめとする任意のコンポーネントは、上記のような標準的なプロトコルのひとつまたは複数を理解するよう明確にプログラムされていなければならない。その例として、特定ドメインのプリンタドライバをインストールすることにより、プリンタを理解するようプログラムしなければならないコンピュータデバイスまたはアプリケーションが挙げられる。デバイスまたはアプリケーションがプリンタとの通信、使用方法を理解するようプログラムされていると、一般に、ドライバはそのデバイスまたはアプリケーションが特定のタイプのプリンタにのみアクセスできるようにし、すべてのプリンタについて汎用的に用いることはできない。したがって、新しい未知のコンポーネントが等式に入ってくると、アプリケーションはその新コンポーネントと通信するために使用する、新たな標準化プロトコルを理解するよう再プログラムしなければならない。上記のコンピュータとプリンタの例で言えば、新たなタイプのプリンタを導入した場合、コンピュータデバイスは、新しいプリンタ専用のプリンタドライバをインストールすることにより新しいプリンタとデータ転送できるようにプログラムしなおす必要がある。したがって、各アプリケーションは、そのプロトコルと関連するコンポーネントと通信するための事前のな特定の標準化プロトコルセットを使用するよう明確に書かれていなければならない。
【0004】
カリフォルニア州パロアルトのサン・マイクロシステムズが開発したJini(登録商標)は、すべての引用によって本明細書に援用する文献、カリフォルニア州パロアルト、サン・マイクロシステムズ(登録商標)による2000年の「Jini(登録商標)テクノロジーのヘルパ、ユーティリティおよびサービスに関する仕様」、1−214ページ、カリフォルニア州プロアルトのサン・マイクロシステムズ(登録商標)による2000年の「Jini(登録商標)テクノロジーのコアプラットフォームの仕様」、1−126ページにおいて説明されている。この、ドメインごとのインタフェースを利用するJini(登録商標)のようなシステムにおいて、PDA(携帯情報端末)システム等のコンポーネントがプリンタ等の別のコンポーネントと通信するためには、PDAシステムは、プリンタのプログラム上のインタフェースのセマンティックス(semantics)に関する事前の知識を含んでいなければならない。言い換えれば、印刷方法をわかっているコンポーネントでも、それが特定のコンポーネントに関するインタフェースとの通信方法がわかるよう明確にプログラムされていないかぎり、ファイルシステム、スキャナまたはネットワーク翻訳サービス間のデータ転送方法はわからないかもしれない。
【0005】
【課題を解決するための手段】
本発明は、コンポーネントに相互にデータを転送させるためのシステムであって、ユニバーサルデータ転送インタフェースを有する第一のコンポーネントと、該ユニバーサルデータ転送インタフェースに対し、データ転送セッションオブジェクトを使って、該第一のコンポーネントと少なくともひとつのコンポーネントとの間でデータを転送させる第二のコンポーネントであって、前記データ転送セッションオブジェクトは、前記第一のコンポーネントでサポートされるデータのタイプを返す命令と、前記第一のコンポーネントの非同期イベントノーティフィケーションを受け取ることを可能にする命令と、前記第一のコンポーネントのデバイスのタイプとステータスを返す命令と、前記第一のコンポーネントまたは前記少なくともひとつのコンポーネントが、データのタイプに基づいてデータを転送するために用いる転送媒体を選択するために相互に交渉することを可能にする命令を含む第二のコンポーネントとを備えることを特徴とする。
【0009】
本発明により、同じまたは異なる通信プロトコルまたはデータタイプを有するコンポーネントが、ドメインごとのインタフェース、プロトコル、データフォーマットの事前の知識を持つことなく、相互にデータを転送することができる。
【0010】
【発明の実施の形態】
図1に、本発明のひとつの実施形態による、任意のコンポーネントに相互にデータ転送させるためのシステム10を示す。この特定の実施形態において、システム10はコンピュータ20、プリンタ21、携帯情報端末(PDA)22、サーバ23、ファクシミリ24(以下、「コンポーネント20−24」という)を備える。ひとつの実施形態による方法は、コンピュータ20が、コンポーネント21−24のひとつまたは複数と関連するユニバーサルデータ転送インタフェースのひとつ(つまり、データソースインタフェースまたはデータシンクインタフェース)を取得するステップと、取得したユニバーサルデータ転送インタフェースのひとつまたは複数に、コンポーネント20−24の間でデータ転送させるステップを含む。本発明により、同じまたは異なる通信プロトコルまたはデータタイプを使用するコンポーネント20−24は、ドメインごとのインタフェース、プロトコルまたはデータフォーマットを事前に知ることなく、相互間でデータ転送することができる。本発明により、コンポーネント20−24は他のコンポーネント20−24とのデータ転送セッションを開始することも可能となる。
【0011】
さらに詳しく図1を参照すると、コンピュータ20はこの特定の実施形態において、コンポーネント21−24の各々と動作的に接続されているが、より多いまたは少ないコンポーネント数による、別の接続配置や構成も可能である。たとえば、システム10は、他のコンポーネント21−24のひとつまたは複数と直接接続されたコンポーネント21−24のひとつまたは複数を有してもよいし(たとえばピア・トゥー・ピアシステム)、システム10は、相互に接続されたコンポーネント20と21を有してもよい。
【0012】
コンポーネント20−24は、デジタル構内自動電話交換システム(PBX)を通じた、公共交換電話線を使用する従来のダイヤルアップ通信システムや回線ベースの電話通信プロトコルを使って相互に通信することができる。図にはひとつのタイプの通信システムとプロトコルが示されているが、別の各種の通信システムまたはプロトコルを使用することができる。たとえば、衛星信号、電波、マイクロウェーブまたは赤外線信号等の信号を利用するローカルエリアネットワーク(LAN)、ワイドエリアネットワーク(WAN)および移動または衛星通信ネットワークシステムに代表される通信システムまたはネットワークアーキテクチャを使用できる。さらに、xDSL,ISDN,TCP/IPまたはRFC,OSI機関が定義するプロトコル等、データ伝送のための各種通信プロトコルも利用可能である。使用するプロトコルの種類は、特定のコンポーネントが使用する通信システムの種類、コンポーネントの種類(たとえば、プリンタかスキャナか)、またはコンポーネントが動作するネットワーク環境の種類(たとえば、UNIX(登録商標)動作環境)によって異なる。コンポーネント20−24は、ひとつまたは複数の通信プロトコルを使用できる。さらに、図1の矢印は、コンポーネント20−24間の通信の流れを示す。
【0013】
図2を参照すると、この実施形態において、コンピュータ20は中央処理ユニット(CPU)30、メモリ32およびI/Oユニット34を備え、これらはバス36によって相互に接続されているが、コンピュータ20は、本発明のひとつまたは複数の方法を実行するための命令を記憶、処理、実行できるどのようなタイプのデバイスまたはシステムを備えていてもよい。一例にすぎないが、コンピュータ20は、スキャナ、携帯電話、表示デバイス、ビデオ入力/出力デバイス、オーディオ入力/出力デバイス、遠隔コントロールデバイスまたは器具を備えてもよい。コンピュータ20は、本発明のひとつまたは複数の方法を行うための命令を実行するハード配線による回路を有するどのようなタイプのデバイスでもよい。コンピュータ20は、それが動作する環境に関する命令を実行する。この環境は、たとえば1974年アディソン−ウェズリー出版社発行のW.リチャード・スティーブンスによる「UNIX(登録商標)環境における高度なプログラミング」に記載されたUNIX(登録商標)環境である。この文献は、引用をもってすべてを本明細書に援用する。この実施形態において、コンピュータ20は他のコンポーネント21−24のいずれとも同じ通信プロトコルを使用していないが、コンピュータが他のコンポーネント21−24のいずれかと同じ通信プロトコルを使用する別の実施形態もある。一例にすぎないが、コンピュータ20はデータ転送のための第一の種類の通信プロトコルを使用してUNIX(登録商標)環境で動作し、第二の種類の通信プロトコルを使用してマイクロソフト・ウィンドウズ(登録商標)環境で動作することもできる。
【0014】
CPU30は、インテル・ペンティアム(登録商標)プロセッサのようなプロセッサを備える。CPU30は、本明細書で説明、図示される、本発明による任意のコンポーネントに相互にデータ転送させるための方法に関する、記憶された命令の少なくともひとつのプログラムを実行する。CPU30はまた、データ、メモリ、ファイルディレクトリ、個人用ファイル、ワードプロセシングアプリケーション、会計アプリケーションまたはエンジニアリンクアプリケーションを提供するような、ネットワークサービスを含むその他の作業に関する命令も実行できる。その結果、これらのアプリケーションのひとつが実行されると、スプレッドシートを作成する等の作業の命令および本発明の方法のひとつまたは複数を実行するための命令が、コンピュータ20のCPU30によって実行される。命令は、BASIC、Pascal、C、C++、C#、Java(登録商標)、Perl、COBOL、FORTRAN、アセンブリ言語、機械記号言語またはCPU30が理解し、実行することのできるコンピュータコードまたは言語をはじめとする、さまざまなコンピュータプログラミング言語で書かれた実行可能なプログラムとして表現できる。
【0015】
メモリ32は、ハードディスク、フロッピー(登録商標)ディスク、コンパクトディスク(CD)、デジタルビデオディスク、磁気テープ、光ディスク、強誘電体メモリ、リードオンリーメモリ、ランダムアクセスメモリ、電気的消去可能プログラマブルリードオンリーメモリ、フラッシュメモリ、消去可能リードオンリーメモリ、スタティックランダムアクセスメモリ、ダイナミックランダムアクセスメモリ、強磁性体メモリ、電荷結合デバイス、スマートカードまたはその他の種類のコンピュータ判読可能媒体等、CPU30によってアクセスできるあらゆるタイプの固定または移動型メモリデバイスを備えることができる。メモリ32は、CPU30が実行するための、本発明のひとつの実施形態による、任意のコンポーネントに相互にデータ転送させる方法に使用する命令38を記憶するが、これらの命令の全部または一部を別の場所に記憶してもよい。ユニバーサルインタフェースまたはデータオブジェクトのひとつまたは複数のグループをメモリ32に記憶し、本発明の実行中にCPU30が必要に応じて読み出すこともできる。これについては詳しく後述する。この実施形態においては、CPU30とメモリ32は物理的に同じ場所にあるが、図1に示すサーバ23等、異なる場所にあってもよい。
【0016】
コンピュータ20は、I/Oユニット34を使ってコンポーネント21−24と通信する。この実施形態において、I/Oユニット34は、コンピュータ20をコンポーネント21−24に動作的に接続するのに十分なポートを有する、あらゆる種類のイーサネット(登録商標)ベースのデバイスに代表されるルータを備えてもよい。
【0017】
図1に戻ると、プリンタ21は、たとえば印刷媒体上にグラフィクスによる表現を載せることのできる従来の印刷デバイスを備える。プリンタ21等のデバイスは当業界で周知であるため、ここではプリンタ21内の配置と動作について詳しく説明しない。
【0018】
PDA22は、電話、ファクシミリ通信またはネットワーキング等の機能を果たす従来のハンドヘルドデバイスである。PDA22等のデバイスは当業界で周知であるため、ここではPDA22なイブの物理的要素、その配置、動作について詳しく説明しない。
【0019】
サーバ23は、ひとつまたは複数のCPU、メモリ、I/Oユニット、ひとつまたは複数の記憶媒体を有する従来のコンピュータシステムであり、記憶媒体はバスによって相互に接続され、本発明のひとつまたは複数の実施形態によって命令を記憶、処理するためにサーバ23によって使用される。これについてさらに説明する。サーバ23等のデバイスは当業界で周知であるため、ここではサーバ23内部の配置と動作について詳しく説明しない。
【0020】
ファクシミリ24は、電話回線またはネットワーク上で絵やテキストを送受信できる従来のファクシミリである。ファクシミリ24等のデバイスは当業界で周知であるため、ここではファクシミリ24内部の配置と動作について詳しく説明しない。
【0021】
図3において、コンピュータ20は、図1について上述したように、PDA22に接続されている。PDA22は、メモリに記憶されているか、あるいはたとえばアクセシングサーバ23によってアクセスされ(以下、「関連している」という)、ユニバーサルインタフェースセット22aは、データソースインタフェース、コンテクストインタフェース、ノーティフィケーションインタフェースおよびユーザインタフェースを含む。具体的な数または組み合わせのインタフェースは、PDA22がどのような種類のデバイスか、またそれによって望まれる、または提供される能力またはサービスによって異なる。また、PDA22、従ってユニバーサルインタフェースセット22aはいつでもアップデートし、インタフェースの追加、削除、変更が可能である。また、コンピュータ20はPDA22と関連するインタフェースにアクセスするようプログラムされている。同様に、PDA22は、コンピュータ20と関連するひとつまたは複数のインタフェース(図示せず)にアクセスできる。
【0022】
コンピュータ20は、データオブジェクト22bを通じてユニバーサルインタフェースセット22aにアクセスし、ここで説明するように、異なるタイプの通信を行うことができる。ユニバーサルインタフェースセット22aの各インタフェースは、命令、処理セットまたはその他のデータを含み、コンピュータ20はこれを理解、実行し、PDA22との通信、データ転送(データの送受信)を行い、PDA22とコンテクスト情報を交換し、コンピュータ20にPDA22に関するイベントノーティフィケーションを提供する、あるいはコンピュータ20が、コンピュータ20のユーザにPDA22へアクセスし、またこれを操作させるためにユーザインタフェースを受けることができる。一般に、ユニバーサルインタフェースセット22aの各インタフェースは、PDA22について特定ドメインのものではない。
【0023】
特に、データソースインタフェースは、getSourceDataFlavor()処理およびbeginTransferSession()処理等、複数の処理を含む。さらに、データソースインタフェースは、コンピュータがPDA22からのデータを受信できるようにデータ転送セッションを確立するために、コンピュータ20によって実行される命令とデータを含む。getSourceDataFlavor()処理は、PDA22が転送できるデータのタイプを決定するために、コンピュータ20によって実行される命令とデータを含む。この特定の実施形態において、コンピュータ20はgetSourceDataFlavor()処理を実行し、これがPDA22によってサポートされるひとつまたは複数のデータタイプのリストを返す。さらに、この実施形態におけるデータのタイプは、通常、MIMEデータタイプである。たとえば、上記の動作を実行した後、コンピュータ20はPDA22が“JPEG”フォーマットのデータをサポートすると判断する。beginTransferSeccion()処理は、PDA22に対し、データオブジェクト22bを通じてコンピュータ20にデータ転送セッションオブジェクト22cを返すことによってデータを受信するようにデータ転送セッションを確立するよう要求するために、コンピュータ20によって実行される命令とデータを含む。また、beginTransferSession()処理は、呼び出されたときに、コンテクストパラメータ、初期リース持続時間パラメータおよびデータフレーバパラメータ等のパラメータを受け取る。この実施形態において、コンピュータ20は、beginTransferSeccion()処理を呼び出すときに、この動作にコンテクストパラメータを渡し、PDA22に対してコンピュータ20を識別させるため、PDA22に対してコンピュータ20のユーザを識別させるため、PDA22に対してネットワーク上のコンピュータ20の位置を識別させるため、あるいはセキュリティのため等、各種の理由でその識別をPDA22に知らせる。PDA22は、コンテクストパラメータにおいて提供される識別情報に基づいて、コンピュータ20にデータを転送するか否かを決定する。さらに、データ転送セッションはリース(lease)され、したがって、beginTransferSession()処理に渡された初期リース持続時間パラメータにおいて特定された値に対応する時間間隔でコンピュータによって定期的に更新し、データ転送セッションをアクティブな状態に保つ必要があるが、セッションをリースする必要のない別の実施形態もある。セッションがリースされる場合は必ず、コンピュータ20がリースされたPDA22を更新しないと、コンピュータ20がクラッシュした、またはその他リーチ不可能な状態になったためにリースの更新を行わなかったとの前提に立って、コンピュータ20へのデータ転送が停止される。また、getSourceDataFlavor()処理を実行することによって、PDA22がひとつまたは複数のタイプのデータをサポートすると判断された場合、データフレーバパラメータがbeginTransferSession()処理に渡される。コンピュータ20は、各種の理由により、データフレーバパラメータに好ましいデータタイプの値を提供する。たとえば、コンピュータ20とPDA22が複数の互換性のあるデータタイプをサポートする場合、コンピュータ20はそのパラメータを使用して、データ転送のために好ましいデータタイプを特定する。この実施形態において、コンピュータ20は、たとえば、コンピュータ20のユーザに好ましいデータタイプを表示させる、コンピュータ20とPDA22との間で互換性のあるデータタイプのひとつをランダムに選択する、あるいは転送される特定のデータにとって最も効率のよいデータタイプを選択する等、さまざまな方法を使って好ましいデータを決定している。
【0024】
コンテクストインタフェースは、コンピュータ20がPDA22からコンテクスト情報を読み出すために実行することのできる命令とデータを含む。この実施形態において、コンテクスト情報はPDA22のメモリの中に、ハッシュテーブルに似た多値データ構造として記憶されるが、コンテクスト情報は他のフォーマットで記憶してもよい。また、この実施形態において、コンテクスト情報は、そのデバイスはどのようなタイプか、動作状態、識別、位置、管理ドメインまたはその他の環境データのタイプ等、PDA22に関する情報を含む。別の実施形態において、コンテクスト情報はサーバ23等の別の物理的な場所に記憶することも可能である。
【0025】
ノーティフィケーションインタフェースは、register()処理を含み、これはひとつまたは複数のパラメータを受けて、コンピュータ20がPDA22によって発生されるイベントに関する非同期ノーティフィケーションを受け取るためにコンピュータによって実行される。コンピュータ20は同期ノーティフィケーションを受け取ることもできる。コンピュータ20はregister()処理を実行し、これにコンテクストパラメータ、コンポーネントパラタ、初期リース持続時間パラメータを渡す。コンテクストパラメータは、たとえば、PDA22がセキュリティのため、または記録をとるためにコンピュータ20にノーティフィケーションを送信するか否か判断することができるようにする等、各種の理由でPDA22にコンピュータ20の識別を提供する。コンポーネントパラメータは、PDA22において発生したイベントの通知を受けることが望ましいコンピュータ20を識別する。さらに、イベント登録はリースされ、コンピュータ20はイベント登録をアクティブのままにするために、初期リース持続時間パラメータにおいて特定される値に対応する時間間隔で、定期的に更新しなければならない。コンピュータ20がリースを更新しないと、ノーティフィケーションインタフェースは、コンピュータがクラッシュした、またはその他リーチ不能となったためにリースを更新しなかったとの前提に立ち、発生されたイベントに関するノーティフィケーションをコンピュータ20に提供するPDA22の義務を解除する命令を含む。コンピュータ20が、register()処理を実行することによってPDA22に自分を登録すると、PDA22の中に、それがノーティフィケーションインタフェースと関連する動作において提供された命令に従ってコンピュータ20に通知すべき状況が発生した場合、PDA22はイベントノーティフィケーションオブジェクトをコンピュータ20に送信する。コンピュータ20は次に、後に詳述するユーザウィンドウを発生させ、イベント情報をユーザに表示する。たとえば、PDA22がプリンタであり、コンピュータ20がワードプロセシングアプリケーションであった場合、PDA22は、プリンタの中で紙詰まりが発生した場合に、コンピュータ20にイベントノーティフィケーションを提供することができる。さらに、この例において、コンピュータ20は、グラフィカルユーザインタフェース(GUI)を使って、イベントノーティフィケーション(例えば紙詰まり等)を表示することもできる。
【0026】
ユーザインタフェースは、getUI()、getState()、setState()処理を含み、これらの処理は、コンピュータ20のユーザにPDA22の追加機能を提供し、これを利用するためにPDA22をアクセスまたは操作できるようにするための、PDA22に専用のユーザウィンドウを読み出す、または発生させるよう、コンピュータ20によって実行される命令とデータを含む。この実施形態において、getUI()処理は、コンピュータ20によって呼び出されると、ユーザがどのタイプのユーザウィンドウを発生させたいかを示すパラメータを受ける。これについては後に詳述する。getUI()処理は、PDA22からコンピュータ20に、ユーザウィンドウを発生する、または呼び出すためのユーザウィンドウまたは命令を返し、このユーザウィンドウについてはコンピュータ20により、たとえばユーザに対してユーザウィンドウを表示するようインスタンスが生成される。getState()処理は、状態トークンオブジェクトをPDA22からコンピュータ20に返すように要求するための命令とデータを含む。状態トークンオブジェクトは、コンピュータ20に関して不透明オブジェクトであり、これはPDA22に固有のものであり、さらにPDA22の現在の状態(たとえば、デバイスの設定または構成)を含めることができるが、状態トークンオブジェクトはコンピュータ20に関して透明であってもよく、この場合、コンピュータ20はPDA22の状態トークンオブジェクトを理解することができる。さらに、PDA22は、それがどの種類のデバイスか(たとえば、プリンタまたはワードプロセシングアプリケーション)によって、異なる種類の状態トークンオブジェクトを使用することができる。またさらに、PDA22は、特定の構成を指すポインタまたはURL等、さまざまな方法で各々の状態トークンオブジェクトを記号化できる。あるいは、状態トークンオブジェクトは、PDA22の現在の状態を示すものを含んでもよい。さらに、setState()処理は、その状態トークンオブジェクトに含まれる構成データを使ってユーザウィンドウを発生させるために、コンピュータ20によって実行される命令とデータを含む。コンピュータ20は、それが呼び出されたときに状態トークンオブジェクトをsetState()処理にパラメータとして渡し、PDA22はこれを使って、状態トークンオブジェクトに含まれる記憶済み構成を有するユーザウィンドウを読み出す、または発生させるためにコンピュータ20によって実行される命令とデータを返す。setState()処理はまた、コンピュータ20によって呼び出され、ユーザ用のユーザウィンドウを作らずに、PDA22の状態をリセットする。
【0027】
上記のインタフェースの各々とその中の関連する動作および後述するその他のインタフェースはモバイルコードを含む。モバイルコードは、これを実行するコンピュータ20に転送されることのできる実行可能データである。たとえば、Java(登録商標)はインターネットで広く使用されている実行可能なコンテンツ(つまり、モバイルコード)を実現したものである。ユーザは、たとえばインターネットからモバイルコードをダウンロードし、ごく一般的なプログラミング言語を使って書かれたプログラムをその場で実行することができる。この実施形態において、モバイルコードはオブジェクト指向モバイルコードであり、これは、プログラミング分野においてはよく知られており、データタイプが関連する手順または一連の命令に沿って定義できる。この場合のデータタイプはクラスと呼ばれる。このように、一連の手順(プロシージャ)または命令は、ひとつまたは複数のデータタイプと関連する。さらに、それと関連する特定のデータタイプに応じて対応する命令を実行する手順または一連の命令を識別するように、同じ名前または識別子を割り当てることができ、これらはしばしば多相性と呼ばれる。このように、一例にすぎないが、ドロー手順を実行し、それが呼び出されたときに手順に提供される、あるいは渡されるデータのタイプに応じて、円または長方形を描くことができる。さらにこの例において、円形のデータタイプが、たとえば半径座標を定義し、ドロー手順が呼び出され、関係データタイプがドロー手順に渡されると、ドロー手順は、ドロー手順と関連するその他のデータタイプを継承し、それに提供されたデータを使って、円を書くための適当な手順または一連の命令を実行する。この実施形態において、ユニバーサルインタフェースセット22aがコンピュータ20に提供されると、コンピュータ20は手順、命令セットおよび特定のインタフェースと関連するその他のデータにアクセスし、実行できる。これについては後に詳しく説明する。さらに、可変値、パラメータ、データがユニバーサルインタフェースに渡される、または提供され、所望の特定の通信タイプに応じて、コンピュータ20によって相応に理解され、利用される。また、インタフェースは命令または他のインタフェースへの参照セットを有し、コンピュータはそれに従ってデータを利用する、あるいは命令を実行する。
【0028】
コンピュータ20はまた、データオブジェクト22bを取得することなく、ユニバーサルインタフェースセット22aに含まれるインタフェースの各々に直接アクセスし、本明細書で説明するいろいろな種類の通信を行うことができる。さらに、ユニバーサルインタフェースセット22a内のインタフェースの各々は、同じ命令、動作セットまたはその他のデータを含み、コンピュータ20はこれを理解、実行し、PDA22との通信、データ転送のほか、上記のその他機能を果たすことができる。したがって、モバイルコードはこの例においては不要となるが、データが転送されている場合等、必要に応じて使用することも可能である。
【0029】
この実施形態において、データオブジェクト22bはPDA22から受信され、コンピュータ20に記憶されるが、データオブジェクト22bは、サーバ23等、別の場所に記憶してもよい。ユニバーサルインタフェースセット22aは、データオブジェクト22bを通じてコンピュータ20にアクセスできる。具体的には、データオブジェクト22bは、PDA22と関連するインタフェースによって定義される各種の処理をサポートし、これらはコンピュータ20によって知られ、理解されるものと仮定される。データオブジェクト22bは、PDA22と関連するひとつまたは複数のインタフェースの具体的に実現したものを提供する命令(つまり、コンピュータ実行可能なコード)またはデータであり、ここからデータオブジェクト22bが関連する。たとえば、PDA22がコンピュータ20に提供するデータオブジェクト22bは、PDA22の開発者がどのプロトコルまたはデータフォーマットに決定したかを問わず、これを使ってPDA22と通信するよう専用化された、データソースインタフェースのカスタム態様を提供する。
【0030】
この実施形態において、データ転送セッションオブジェクト22cは、getTransferData()処理、getDatSource()処理、上記のノーティフィケーションインタフェースと関連するregister()処理、getLease()処理、getViewer()処理、getEditor動作、getPrinter()処理ならびに、コンピュータ20にPDA22からのデータ、たとえば、受信されるデータのタイプに応じて異なるビデオまたはファイル転送のためのプロトコルを受信させるために必要なその他の命令を含む。データ転送セッションオブジェクト22cは、PDA22に専用であるが、コンピュータ20によってデータ受信のために実行される上記の動作と命令を含む。たとえば、コンピュータ20(つまり、データシンクコンポーネント)がPDA22(つまり、データソースコンポーネント)からのデータを受信する実施形態において、コンピュータ20はgetDataTransfer()処理を呼び出し、PDA22からデータを実際に読み出す。さらに、コンピュータ20はgetDataSource()処理を呼び出し、PDA22の識別その他の属性を判断することができる。コンピュータ20はまた、getDataSource()処理を呼び出し、データ転送中のその挙動を変更すべきか、あるいは特定のデータ転送を実行させるべきかを決定することもできる。
【0031】
この実施形態において、コンピュータ20は、データ転送セッションオブジェクト22cを通じて、PDA22から送られるデータを受信し、理解する方法について、詳細を知る必要がない。特に、データ転送セッションオブジェクト22c内に含まれる命令と各種の動作は、PDA22に固有の特定のプロトコル、媒体およびデータのタイプに関する情報を含み、コンピュータ20はこれを実行して、PDA22が異なるプロトコル、媒体、データのタイプを利用しても、PDA22から転送されたデータを受信し、理解することができる。さらに、データ転送セッションオブジェクト22cは、コンピュータ20がデータ転送中にPDA22と交渉し、転送されるデータのタイプに基づいて、相互間でのデータ転送に使用される通信プロトコルまたは媒体を選択することができるようにするための命令を含む。命令はまた、コンピュータ20とPDA22に、転送されるデータのタイプに基づいて、データ転送セッションのための異なるプロトコルを使用することについて、相互に交渉させることもできる。また、命令は、コンピュータ20に、データ転送セッションオブジェクト22cを通じて転送されるデータのフォーマットまたはコンテンツを変更し、必要に応じて、コンピュータ20に関連する第一のデータ転送プロトコルからPDA22に関連する第二のデータ転送プロトコルへとデータを変換させることもできる。たとえば、PDA22がコンピュータにストリーミングビデオを転送しているとき、PDA22にとって、圧縮または累進的記号化を使用してデータを転送するほうが効率的であろう。コンピュータ20は、データ転送セッションオブジェクト22cの中に含まれる命令と動作を実行し、データ転送セッションオブジェクト22cがコンピュータ20と交渉し、データ転送セッションのために使用される特定のプロトコルを決定し、次に、コンピュータ20に対し、データ転送セッションオブジェクト22cを通じて、コンピュータ20がデータ転送セッションオブジェクト22cを通じて転送されるデータを読み出し、理解するために必要な動作、命令、データを提供する。さらに、コンピュータ20とPDA22は、入手可能なものがあれば、好ましい物理的輸送媒体について交渉する。たとえば、共有FireWire、IRまたはBluetooth接続がコンピュータ20とPDA22をリンクしていることがわかった場合、これをイーサネット(登録商標)接続の代わりに、データ転送のための物理的転送媒体として使用することができる。命令は、低速データ転送リンク上でのデータ転送速度を低減するための動作、あるいはデータ転送セッション中にエラーに遭遇した際、冗長性を高めるための動作を含んでもよい。
【0032】
さらに、データ転送セッションオブジェクト22cは、コンピュータ20がデータ転送セッションオブジェクト22cを通じて転送されるデータのタイプを見ることができるようにするために、コンピュータ20が実行する命令を含んでもよい。たとえば、コンピュータ20が「JPEG」のイメージファイルまたは、たとえばPDA22から転送されたビデオデータ転送ストリーミングを表示するようプログラムまたは構成されていない場合、コンピュータ20はデータ転送セッションオブジェクト22cに含まれる命令を実行し、たとえば、コンピュータ20に関連するディスプレイデバイス上で、転送されたデータを見ることができる。特に、データ転送セッションオブジェクト22cは、その動作がコンピュータ20によって呼び出されたときに、ビューワオブジェクトを返す、getViewer()処理を含んでもよい。ビューワオブジェクトは、PDA22によって理解され、使用されるデータの具体的タイプに特定のものである。さらに、ビューワオブジェクトは、コンピュータ20によって実行された場合に、その命令がコンピュータ20に転送されたデータを見させる点を除き、コンピュータ20にユーザインタフェースを提供するための、上記と同じ命令を含んでもよい。ビューワオブジェクトはまた、コンピュータ20に対し、PDA22に関連し、コンピュータ20がそのようなデータのタイプを見るよう以前にはプログラムされていなかったとしても転送される特定のデータタイプを見させるような命令を含んでもよい。さらに、getViewer()処理は、ユーザインタフェースについて先に述べたように、コンピュータ20にコンピュータ20が表示したいユーザウィンドウのタイプ(つまり、グラフィクスまたはスピーチ)を特定させるようなパラメータを受ける。この実施形態において、getViewer()処理はPDA22に記憶され、データオブジェクト22bを通じてコンピュータ20にアクセスできる。あるいは、またはこれに加えて、getViewer()処理は、サーバ23(図1参照)等の中央レポジトリに記憶することもできる。この例の場合、サーバ23はひとつまたは複数のgetViewer()処理を記憶し、各動作がコンピュータ20にデータの特定のタイプを見させる命令を含む。この実施形態において、「見る」や「表示する」という用語は、他の形態の出力を包含するものとし、たとえば、データ転送セッションオブジェクト22cにおける命令がコンピュータ20に、スピーカ等のオーディオ出力デバイスを通じて特定のフォーマットのオーディオファイルをプレイさせる場合等がある。さらに、データ転送セッションオブジェクト22cは、getEditor()処理やgetPrinter()処理等、getEditor()処理とgetPrinter()処理が、コンピュータ20がPDA22と関連するデータの具体的なタイプを理解するようプログラムされていたか否かを問わず、コンピュータ20に転送データをそれぞれ編集または印刷させる点を除き、getViewer()処理と同じ命令を有する。このように、この実施形態において、コンピュータ20は、データ転送セッション中に遭遇するデータフォーマットのタイプをすべて理解する必要がない。なぜなら、このようなデータを理解するための命令がデータ転送セッションオブジェクト22cの中に含まれているからである。コンピュータ20は少なくとも、データ転送セッションオブジェクト22cに含まれる各種の命令と動作を実行する能力を有する。
【0033】
この実施形態において、abort()処理は、コンピュータ20にPDA22とのデータ転送セッションを終了させる命令を含む。さらに、コンピュータ20はPDA22に対し、データ転送セッションが失敗した、あるいは完了したことを、それぞれfail()処理またはcomplete()処理を実行することによって示すことができる。コンピュータ20とPDA22との間のデータ転送セッションが失敗した、完了した、あるいは中途終了された場合、登録によって、データ転送セッションの状態への関心を示したコンポーネント20−24におけるリスナには、register()処理を通じてイベントが伝えられる。信号化プロトコルは、データ転送セッションが不定の持続時間を有する(たとえば、ストリーミンクビデオ)場合等、PDA22が、いつコンピュータ20が終了したかを自動的に判断できない場合、コンピュータ20に、データ転送セッションオブジェクト21cを使って、コンピュータ20がいつ終了したかを示させる。getLease()処理は、データ転送セッションをアクティブに保つために、コンピュータ20に初期リース持続時間パラメータに従ってリースを更新させる。
【0034】
図4において、ステップ40で、コンピュータ20はディスカバリプロセスを実行して、コンピュータ20とPDA22が相互にデータを転送できるか判断する。この実施形態において、コンピュータ20は各種のディスカバリシステムを使用してPDA22のディスカバリを行う。ディスカバリシステムには、Bluetooth SIGによって開発され、ディスカバリ・ユニバーサル・ディスクリプション、2001年Bluetoothコンソーシアム、バージョン1.1コア、「Bluetoothシステムの仕様」に記載されたBluetooth(登録商標)サービス・ロケーション・プロトコル(SLP)、アリバ、IBM(登録商標)、マイクロソフト(登録商標)によって開発され、ディスカバリ・ユニバーサル・ディスクリプション・アンド・インテグレーション・コンソーシアム、「UDDIテクニカル・ホワイトペーパー」2000年1−12ページ、アリバ、インターナショナル・ビジネス・マシンズ(登録商標)、マイクロソフト(登録商標)、「ユニバーサル・ディスクリプション・ディスカバリ・アンド・インテグレーション・データ・ストラクチャ・リファレンス、バージョン1.0」2000年1−31ページ、アリバ(登録商標)、インターナショナル・ビジネス・マシンズ(登録商標)、マイクロソフト(登録商標)、「ユニバーサル・ディスクリプション・ディスカバリ・アンド・インテグレーション・プログラマのAPI 1.0」2000年1−67ページ、アリバ(登録商標)、インターナショナル・ビジネス・マシンズ(登録商標)、マイクロソフト(登録商標)、「ユニバーサル・ディスクリプション・ディスカバリ・アンド・インテグレーション・テクニカル・ホワイトペーパー」2000年1−12ページに記載されたユニバーサル・ディスクリプション・ディスカバリおよびインテグレーション・プロトコル(UDDI)、各種のJini(登録商標)システムディスカバリプロトコルまたはネームサーバ内のシンプルなルックアップがあり、これらはすべて、引用によって全体が本明細書に援用される。ディスカバリが行われたPDA22は、コンピュータ20にデータオブジェクト22bを返す。コンピュータ20は、受け取ったデータオブジェクト22bを内観し、どのひとつまたは複数のインタフェースがPDA22と関連するかを判断する。したがって、コンピュータ20が上記のディスカバリ動作を実行し、PDA22からデータオブジェクト22bを受信すると、コンピュータ20は受け取ったデータオブジェクト22bを内観し、どのユニバーサルインタフェースにPDA22が関連しているかを判断する。コンピュータ20は、PDA22が少なくてもデータソースインタフェースと関連していると判断し、したがって、PDA22はこれにデータを提供できる。コンピュータ20は、PDA22に関連し、データオブジェクト22bに含まれるデータソースインタフェースを呼び出し、これには、コンピュータ20に対し、データオブジェクト22bに含まれるgetSourceDataFlavors()処理を実行させるよう指示する命令が含まれる。getSourceDataFlavors()処理は、PDA22にアクセスし、コンピュータ20にPDA22によってサポートされるデータのタイプを提供するための命令を含む。
【0035】
次に、ステップ42において、コンピュータ20はデータソースインタフェースに含まれるbeginTransferSession()処理を実行するさらに、beginTransferSession()処理は、呼び出されると、コンテクストパラメータ、初期リース持続時間パラメータおよびデータフレーバパラメータを受け取る。PDA22は、データ転送セッションオブジェクト22cをコンピュータ20に返す。コンピュータ20は、上記の方法で好ましいデータタイプを判断し、データフレーバパラメータの中のデータを受け取るために好ましいデータタイプの数値を提供し、そうでなければ、コンピュータ20はPDA22によって提供される際のデータフォーマットでデータを受信する。コンピュータ20は、データ転送セッションオブジェクト22cによってPDA22からデータを受信してもよい。
【0036】
次に、ステップ44において、データ転送セッションオブジェクト22cは、getTransferData()処理と、コンピュータがPDA22からデータを読み出すために実行する上記のその他の動作と命令を含む。ステップ46で、データはデータ転送セッションオブジェクト21cを通じて、PDA22からコンピュータ20に転送される。またさらに、コンピュータ20は、本来は理解するようプログラムされていないデータタイプを見ることもできる。コンピュータ20がbeginTransferSession()処理を実行すると、PDA22は命令、動作またはデータを直接コンピュータ20に返し、コンピュータ20にPDA22から転送されるデータを理解させる。
【0037】
図5において、コンピュータ20は先に図1について説明したように、ファクシミリ24に接続されている。ファクシミリ24は、メモリの中に記憶された、あるいはたとえばサーバ23にアクセスすることによってアクセスされる、データシンクインタフェースを含むユニバーサルインタフェースセット24aを有する。これについては後に詳しく説明する。しかし、ファクシミリ24は、いくつのインタフェースにも、どのような組み合わせで関連していてもよい。
【0038】
ファクシミリ24は、データオブジェクト24bを通じてユニバーサルインタフェースセット24aにアクセスし、異なる種類の通信を実行できる。ユニバーサルインタフェースセット24a内のインタフェースは各々、命令、動作セット、またはその他、コンピュータ20によって理解、実行され、コンピュータ20がファクシミリ24と通信し、データ転送することができるようにするデータを含む。データシンクインタフェースを除き、上記のインタフェースの各々は、PDA22に関連して先に説明したものと同じであるが、各インタフェースは、それらが関連する特定のデバイス(たとえば、ファクシミリ24)に特定の命令を含む。
【0039】
特に、データインクインタフェースは、getSinkDataFlavor()およびTransfer()処理等、複数の動作を含む。さらに、データシンクインタフェースは、コンピュータ20がデータをファクシミリ24に送信することができるようにするデータ転送セッションを確立するために、コンピュータ20によって実行される命令とデータを含む。特に、getSinkDataFlavor()処理は、コンピュータ20により、ファクシミリ24がどのタイプのデータをサポートできるかを判断するために実行される命令とデータを含む。この特定の実施形態において、コンピュータ20はgetSinkDataFlavor()処理を実行し、これがファクシミリ24によってサポートされるひとつまたは複数のデータタイプのリストを返す。さらに、この実施形態におけるデータタイプは通常、MIMEデータタイプである。Transfer()処理は、コンピュータ20により、ファクシミリ24にデータ転送セッションを確立し、コンピュータ20がファクシミリ24へのデータ転送を開始できるようにするよう要求するために実行される命令とデータを含む。Transfer()処理は、この実施形態において、呼び出されたとき、コンピュータ20と関連するデータ転送セッションオブジェクト20c、コンテクストパラメータ、データフレーバパラメータ等のパラメータを受ける。特に、コンピュータ20はデータ転送セッションオブジェクト20cをTransfer()処理の中に渡し、これをファクシミリ24が利用し、その中の命令を実行して、コンピュータ20からのデータを実際に受信できるようにする。この実施形態において、コンピュータ20に関連するデータ転送セッションオブジェクト20cは上記のデータ転送セッションオブジェクト22dと同じ種類の命令、データ、動作を含むが、ここに含まれる命令、データ、動作はコンピュータ20に特定のものである。コンピュータ20は、それを呼び出すときに、Transfer()処理の中にコンテクストパラメータを渡し、ファクシミリ24に対し、セキュリティ等、各種の目的のためにその識別を知らせる。ファクシミリ24は、コンテクストパラメータの中で提供された識別上方に基づいて、コンピュータ20にデータをそこに転送させるか否かを判断する。さらに、ファクシミリ24が、getSinkDataFlavor()処理を実行することによって判断されるひとつまたは複数のタイプのデータをサポートする場合、データフレーバパラメータはTransfer()処理の中に渡され、コンピュータ20によって転送されるデータのタイプをファクシミリ24に伝える。さらに、コンピュータ20は、各種の理由によって、データフレーバパラメータに好ましいデータタイプの数値を提供する。たとえば、コンピュータ20とファクシミリ24が複数の互換性のあるデータタイプをサポートし、コンピュータ20が、パラメータを使用して、データ転送のための好ましいデータタイプを特定する場合等がある。この実施形態において、コンピュータ20は、コンピュータ20のユーザに好ましいデータタイプを指示させる、コンピュータ20とファクシミリ24との間の互換性のあるデータタイプのひとつをランダムに選択する、あるいは転送される特定のデータにとって最も効率的なデータタイプを選択する等、さまざまな方法を使って好ましいデータタイプを判断できる。さらに、コンピュータ20はファクシミリ24が相互に関して有限数の互換性のあるデータタイプをサポートする場合、コンピュータ20はデータをファクシミリ24に転送するための互換性のあるデータタイプを選択する。
【0040】
図6において、ステップ50で、コンピュータ20は、ディスカバリプロセスを実行し、ひとつまたは複数の実施形態について先に説明したように、データオブジェクト24bを内観することにより、ファクシミリ24が少なくともデータシンクインタフェースと関連していることから、コンピュータ20とファクシミリ24が相互にデータを転送できることを判断する。コンピュータ20は、ファクシミリ24と関連し、データオブジェクト24bに含まれるデータシンクインタフェースを呼び出し、これは、コンピュータ20にgetSinkDataFlavor()処理を実行するよう指示する命令を含む。getSinkDataFlavor()処理は、ファクシミリ24にアクセスし、前述のように、コンピュータ20にファクシミリ24がサポートするデータのタイプを提供する命令を含む。
【0041】
次に、ステップ52において、コンピュータ20は、データシンクインタフェースに含まれるTransfer()処理を実行する。さらに、コンピュータ20は、前述のように、これを呼び出すときにTransfer()処理の中にデータオブジェクト20c、コンテクストパラメータおよびデータフレーバパラメータを渡す。
【0042】
次に、ステップ54において、ファクシミリ24は、Transfer()処理を通じてそれに提供されるデータ転送セッションオブジェクト20c内に含まれる命令を実行し、コンピュータ20からのデータを受信する。ステップ56において、データは、データ転送セッションオブジェクト20cにより、コンピュータ20からファクシミリ24に転送される。
【0043】
図7において、コンピュータ20、プリンタ21、サーバ23が、図1について前述したように、相互に接続されている。この実施形態において、プリンタ21は、データソースインタフェース、データシンクインタフェースおよびコンテクストインタフェースを含むユニバーサルインタフェースセット21aと関連する。サーバ23は、データソースインタフェース、データシンクインタフェース、コンテクストインタフェースを有するユニバーサルインタフェースセット23と関連する。上記のインタフェースはそれぞれ、図3と図5に関連して説明したものと同じであるが、この実施形態における各インタフェースは、それらが関連しているデバイス(つまり、プリンタ21またはサーバ23)について特定の命令を含む。さらに、プリンタ21と関連するデータ転送セッションオブジェクト25は、上記のデータ転送セッションオブジェクト20cと22cと同じ命令、データ、動作を含むが、その中に含まれる命令、データ、動作はプリンタ21に特定のものである。
【0044】
図8において、ステップ60でコンピュータ20はディスカバリプロセスを実行し、ひとつまたは複数の実施形態について先に説明したように、データオブジェクト21bと23bを内観することにより、プリンタ21がデータソースインタフェースと関連し、サーバ23がデータシンクインタフェースと関連していることから、プリンタ21とサーバ23が相互にデータ転送できると判断する。コンピュータ20は、前述のように、プリンタ21と関連するデータソースインタフェースを呼び出し、データオブジェクト21bに含まれるgetSourceDataFlavors()処理を実行し、プリンタ21にアクセスして、プリンタ21がサポートするデータのタイプを判断する。
【0045】
次に、ステップ62において、コンピュータ20は、データソースインタフェースに含まれるbeginTransferSession()処理を実行する。さらに、beginTransferSession()処理は、コンピュータ20またはサーバ23に関連するコンテクストパラメータを受ける。たとえば、コンピュータ20はサーバ23に関連し、データオブジェクト23bを通じてアクセスできるコンテクストインタフェースを呼び出す。この例において、コンピュータ20はサーバ23からのコンテクスト情報を受け取るが、beginTransferSession()処理を通じて、これをプリンタ21に供給する。これにより、プリンタ21は、それがデータをサーバ23とともに転送したいかを決定することができる。あるいは、コンピュータ20は、同じ理由によって自己のコンテクスト情報をプリンタ21に供給し、前述のように、呼び出されたときに初期リース持続時間パラメータを供給する。コンピュータ20は、サーバ23に関連し、データオブジェクト23bに含まれるデータシンクインタフェースを呼び出し、これは、コンピュータ20にgetSinkDataFlavor()処理を実行させる命令を含む。getSinkDataFlavor()処理は、サーバ23にアクセスし、コンピュータ20にサーバ23がサポートするデータのタイプを提供する命令を含む。さらに、サーバ23がgetSinkDataFlavor()処理を実行することによって判断されるように、ひとつまたは複数のデータタイプをサポートする場合、データフレーバパラメータはTransfer()処理に渡され、サーバ23に対し、それに転送されるデータのタイプを伝える。さらに、コンピュータ20は各種の理由により、データフレーバパラメータに好ましいデータタイプの数値を提供する。たとえば、プリンタ21とサーバ23が複数の互換性のあるデータタイプをサポートし、コンピュータ20が、そのパラメータを使用し、プリンタ21とサーバ23との間のデータ転送のための好ましいデータタイプを特定する場合である。プリンタ21は、データオブジェクト21bを通じて、データソースオブジェクト25をコンピュータ20に返す。
【0046】
次に、ステップ64で、コンピュータ20は、サーバ23と関連し、データオブジェクト23bに含まれるデータシンクインタフェースに含まれるTransfer()処理を実行する。Transfer()処理は、それが呼び出されると、プリンタ21からコンピュータ20が受け取るデータソースオブジェクト25、プリンタ21と関連するコンテクストパラメータまたはデータフレーバパラメータ等のパラメータを受ける。コンピュータ20はサーバ23に対し、コンピュータ20またはプリンタ21と関連するコンテクストパラメータを提供し、サーバ23が、セキュリティをはじめとする各種の理由で、データ転送に参加したいか否かを判断する。コンピュータ20は、自己の命令を実行してそのコンテクスト情報を取得し、コンテクスト情報を通じてその情報をTransfer()処理に渡すことにより、サーバ23にそれ自身のコンテクスト情報を提供することができる。サーバ23は、プリンタ21からコンピュータ20が受け取り、コンピュータ20からTransfer()処理を通じてサーバ23に伝えられるデータ転送セッションオブジェクト25として、プリンタ21からデータを受け取る。
【0047】
次に、ステップ66において、サーバ23は、データ転送セッションオブジェクト25に含まれるgetTransferData()処理を実行して、プリンタ21からデータを読み出す。ステップ68において、このデータは、データ転送セッションオブジェクト25を通じてプリンタ21からサーバ23に転送される。この実施形態において、コンピュータ20、プリンタ21またはサーバ23のひとつまたは複数は、前述の、データ転送セッションオブジェクト25に含まれるabort()処理、fail()処理またはcomplete()処理にアクセスし、これ実行することができる。また、コンピュータ20、プリンタ21またはサーバ23のひとつまたは複数は、リースされたデータ転送セッションを更新する責任を負う。別の実施形態において、コンピュータ20、プリンタ21またはサーバ23のひとつまたは複数は、コンピュータ20、プリンタ21またはサーバ23に関連するノーティフィケーションインタフェース(図示せず)を呼び出すことにより、相互にリスナとして登録し、上述のようにイベントノーティフィケーションを受け取ることができる。この例において、コンピュータ20は、プリンタ21またはサーバ23と関連するノーティフィケーションインタフェースを呼び出し、リスナとして登録し、データ転送の進行状況をモニタすることができる。プリンタ21とサーバ23との間のデータ転送中、コンピュータ20の参加は不要である。コンピュータ20がデータ転送セッションに引き続き参加するか否かは、たとえば、コンピュータ20がデータ転送セッションに関連するイベントノーティフィケーションを受け取りたいか、あるいは前述のように、コンピュータ20がリースされたデータ転送セッションの更新を担当するか等、各種の要因による。
【0048】
別の実施形態において、コンピュータ20、プリンタ21またはサーバ23のいずれかが、上記の実施形態のいずれかを採用し、相互間のデータソースおよびデータシンクとして機能することができる。たとえば、コンピュータ20がデータ転送を開始すると、サーバ23はデータソースとして機能し、データをサーバ23に転送するプリンタ21に関して先に説明したものと同じステップに従って、データオブジェクト転送セッション25を通じて、プリンタ21にデータを転送する。
【0049】
コンピュータ20、プリンタ21、PDA22、サーバ23、ファクシミリ24等のデバイス(つまり、コンポーネント20−24)が上述のひとつまたは複数の実施形態において例として使用されたが、言語翻訳サービス、データフォーマット変換、電子メールアプリケーション、カレンダーアプリケーションまたはワードプロセシングアプリケーション内で実行されるスペルチェックルーチンをはじめとするソフトウェアサービス、アプリケーションまたはその一部等、多数の他のシステムをコンポーネント20−24として使用できる。たとえば、ワードプロセッサは、現在先端されているデータをデータソースコンポーネントとして使用し、それがデータシンクコンポーネントであるPDA22に送信されるようにすることができる。
【図面の簡単な説明】
【図1】 一実施形態による、任意のコンポーネントに相互にデータ転送させるためのシステムの略図である。
【図2】 任意のコンポーネントに相互にデータ転送を行わせるシステムにおいて使用される任意のコンポーネントの例のブロック図である。
【図3】 別の実施形態による、ひとつの任意のコンポーネントが別の任意のコンポーネントからデータを受信するためのシステムの略図である。
【図4】 別の任意のコンポーネントからデータを受信するプロセスのフローチャートである。
【図5】 別の実施形態による、ひとつの任意のコンポーネントが別の任意のコンポーネントにデータを転送するためのシステムの略図である。
【図6】 別の任意のコンポーネントにデータを転送するプロセスのフローチャートである。
【図7】 別の実施形態による、ひとつの任意のコンポーネントが2つの別の任意のコンポーネントに相互にデータ転送させるシステムのブロック図である。
【図8】 任意のコンポーネントが、他の任意のコンポーネントに相互にデータ転送させるプロセスのフローチャートである。
【符号の説明】
10 システム、20 コンピュータ、21 プリンタ、22 PDA、22a ユニバーサルインタフェースセット、22b データオブジェクト、22cデータ転送セッションオブジェクト、23 サーバ、24 ファクシミリ、25データソースオブジェクト、30 中央処理ユニット(CPU)、32 メモリ、34 I/Oユニット、36 バス、38 命令。
Claims (1)
- コンポーネントに相互にデータを転送させるためのシステムであって、
ユニバーサルデータ転送インタフェースを有する第一のコンポーネントと、
該ユニバーサルデータ転送インタフェースに対し、データ転送セッションオブジェクトを使って、該第一のコンポーネントと少なくともひとつのコンポーネントとの間でデータを転送させる第二のコンポーネントであって、前記データ転送セッションオブジェクトは、前記第一のコンポーネントでサポートされるデータのタイプを返す命令と、前記第一のコンポーネントの非同期イベントノーティフィケーションを受け取ることを可能にする命令と、前記第一のコンポーネントのデバイスのタイプとステータスを返す命令と、前記第一のコンポーネントまたは前記少なくともひとつのコンポーネントが、データのタイプに基づいてデータを転送するために用いる転送媒体を選択するために相互に交渉することを可能にする命令を含む第二のコンポーネントと、
を備えることを特徴とするシステム。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/058,268 | 2002-01-29 | ||
US10/058,268 US20030145089A1 (en) | 2002-01-29 | 2002-01-29 | System and method for enabling arbitrary components to transfer data between each other |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2003223336A JP2003223336A (ja) | 2003-08-08 |
JP4424910B2 true JP4424910B2 (ja) | 2010-03-03 |
Family
ID=22015738
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2003018254A Expired - Lifetime JP4424910B2 (ja) | 2002-01-29 | 2003-01-28 | 任意のコンポーネントに相互にデータを転送させるシステム |
Country Status (4)
Country | Link |
---|---|
US (2) | US20030145089A1 (ja) |
EP (1) | EP1331571B1 (ja) |
JP (1) | JP4424910B2 (ja) |
DE (1) | DE60302368T2 (ja) |
Families Citing this family (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7367029B2 (en) * | 2002-08-01 | 2008-04-29 | Xerox Corporation | Method and system for handling data |
US20080313282A1 (en) | 2002-09-10 | 2008-12-18 | Warila Bruce W | User interface, operating system and architecture |
US7464110B2 (en) * | 2004-06-30 | 2008-12-09 | Nokia Corporation | Automated grouping of image and other user data |
US20060004834A1 (en) * | 2004-06-30 | 2006-01-05 | Nokia Corporation | Dynamic shortcuts |
US8438633B1 (en) | 2005-04-21 | 2013-05-07 | Seven Networks, Inc. | Flexible real-time inbox access |
US20070070392A1 (en) * | 2005-09-16 | 2007-03-29 | Harrison Karen L | Processing requests for data sinks in a logical printer |
US8176097B2 (en) * | 2009-01-02 | 2012-05-08 | International Business Machines Corporation | Maintaining data coherency within related multi-perspective user interfaces via session-less queries |
JP5550385B2 (ja) * | 2009-03-04 | 2014-07-16 | キヤノン株式会社 | 画像処理装置及びその制御方法、並びに記憶媒体 |
US20100233960A1 (en) * | 2009-03-16 | 2010-09-16 | Brian Tucker | Service discovery functionality utilizing personal area network protocols |
US10277683B2 (en) | 2009-03-16 | 2019-04-30 | Apple Inc. | Multifunctional devices as virtual accessories |
US8285860B2 (en) | 2009-03-16 | 2012-10-09 | Apple Inc. | Efficient service discovery for peer-to-peer networking devices |
US20100235523A1 (en) * | 2009-03-16 | 2010-09-16 | Robert Garcia | Framework for supporting multi-device collaboration |
TW201116002A (en) * | 2009-10-30 | 2011-05-01 | Askey Computer Corp | System and method for data transmission via special line |
CN104641614B (zh) | 2012-04-13 | 2018-04-13 | 高盛有限责任公司 | 用于可扩展的结构化数据分布的系统和方法 |
US9270929B2 (en) * | 2013-12-19 | 2016-02-23 | Lattice Semiconductor Corporation | Formatting audio-video information compliant with first transmission format to second transmission format in integrated circuit for offloading physical layer logic for first transmission format to separate integrated circuit |
CN107786556A (zh) * | 2017-10-24 | 2018-03-09 | 江苏神州信源系统工程有限公司 | 一种端口快速扫描方法与装置 |
Family Cites Families (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5475836A (en) * | 1987-04-01 | 1995-12-12 | Lotus Development Corporation | Interface for providing access to external data sources/sinks |
US6345288B1 (en) * | 1989-08-31 | 2002-02-05 | Onename Corporation | Computer-based communication system and method using metadata defining a control-structure |
DE4106793A1 (de) * | 1991-03-04 | 1992-09-17 | Licentia Gmbh | Kommunikationsschnittstelle |
CA2134620A1 (en) * | 1993-11-05 | 1995-05-06 | Arul Menezes | System and method for exchanging computer data processing capabilities |
US5546549A (en) * | 1994-06-01 | 1996-08-13 | International Business Machines Corporation | Multi-path channel (MPC) interface with user transparent, unbalanced, dynamically alterable computer input/output channels |
US5664102A (en) * | 1995-02-07 | 1997-09-02 | At&T | Intelligent network internetworking access arrangement |
US6148346A (en) * | 1996-06-20 | 2000-11-14 | Peerless Systems Imaging Products, Inc. | Dynamic device driver |
US5915252A (en) * | 1996-09-30 | 1999-06-22 | International Business Machines Corporation | Object oriented framework mechanism for data transfer between a data source and a data target |
US6751647B1 (en) * | 1998-06-19 | 2004-06-15 | Intel Corporation | Method and apparatus for automated data exchange between a user computer and a provider computer using improved object-oriented programming components |
GB2342196A (en) * | 1998-09-30 | 2000-04-05 | Xerox Corp | System for generating context-sensitive hierarchically-ordered document service menus |
US6675196B1 (en) * | 1999-01-08 | 2004-01-06 | Amazon.Com, Inc. | Universal protocol for enabling a device to discover and utilize the services of another device |
US6725281B1 (en) * | 1999-06-11 | 2004-04-20 | Microsoft Corporation | Synchronization of controlled device state using state table and eventing in data-driven remote device control model |
US6718377B1 (en) * | 1999-08-13 | 2004-04-06 | Lucent Technologies Inc. | Telecommunications network management system interface |
AU4135201A (en) * | 1999-10-29 | 2001-05-30 | Singleshop.Com | System and method of data exchange for electronic transactions with multiple sources |
JP3430509B2 (ja) * | 1999-12-03 | 2003-07-28 | 日本電気株式会社 | データ通信システム及び方法 |
US20010033554A1 (en) * | 2000-02-18 | 2001-10-25 | Arun Ayyagari | Proxy-bridge connecting remote users to a limited connectivity network |
WO2001076170A2 (en) * | 2000-03-31 | 2001-10-11 | Classwave Wireless Inc. | Dynamic routing of content to mobile devices |
US6643650B1 (en) * | 2000-05-09 | 2003-11-04 | Sun Microsystems, Inc. | Mechanism and apparatus for using messages to look up documents stored in spaces in a distributed computing environment |
US6591312B1 (en) * | 2000-05-23 | 2003-07-08 | Hewlett-Packard Development Company, L.P. | Digital communication devices and digital communication methods |
US7031945B1 (en) * | 2000-07-24 | 2006-04-18 | Donner Irah H | System and method for reallocating and/or upgrading and/or rewarding tickets, other event admittance means, goods and/or services |
US6938087B1 (en) * | 2000-09-12 | 2005-08-30 | Hewlett-Packard Development Company, L.P. | Distributed universal communication module for facilitating delivery of network services to one or more devices communicating over multiple transport facilities |
US7152110B2 (en) * | 2001-04-18 | 2006-12-19 | Microsoft Corporation | Information exchange between non-networked devices through an intermediary device via a piconet |
US6842460B1 (en) * | 2001-06-27 | 2005-01-11 | Nokia Corporation | Ad hoc network discovery menu |
-
2002
- 2002-01-29 US US10/058,268 patent/US20030145089A1/en not_active Abandoned
-
2003
- 2003-01-28 JP JP2003018254A patent/JP4424910B2/ja not_active Expired - Lifetime
- 2003-01-29 EP EP03002068A patent/EP1331571B1/en not_active Expired - Lifetime
- 2003-01-29 DE DE60302368T patent/DE60302368T2/de not_active Expired - Lifetime
- 2003-12-09 US US10/732,700 patent/US7421494B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
US20040122957A1 (en) | 2004-06-24 |
EP1331571B1 (en) | 2005-11-23 |
US20030145089A1 (en) | 2003-07-31 |
JP2003223336A (ja) | 2003-08-08 |
DE60302368T2 (de) | 2006-06-08 |
EP1331571A1 (en) | 2003-07-30 |
US7421494B2 (en) | 2008-09-02 |
DE60302368D1 (de) | 2005-12-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7552265B2 (en) | System and method for providing context information | |
JP4424910B2 (ja) | 任意のコンポーネントに相互にデータを転送させるシステム | |
US7296042B2 (en) | System and method for enabling communication among arbitrary components | |
US6775700B2 (en) | System and method for common information model object manager proxy interface and management | |
US6195677B1 (en) | Distributed network computing system for data exchange/conversion between terminals | |
JP3071469B2 (ja) | リモート・サーバの単純で安全な管理を提供するための装置および方法 | |
US7526482B2 (en) | System and method for enabling components on arbitrary networks to communicate | |
WO2002103983A1 (en) | System and method for mobile printing | |
JP2006072978A (ja) | サービス要求装置、サービス提供装置、サービス要求方法、サービス提供方法、サービス要求プログラム、サービス提供プログラム及び記録媒体 | |
US7284060B2 (en) | Method for transferring data in a system having multiple transports | |
JP2003223291A (ja) | リモート・コンテンツの印刷方法 | |
US7457839B2 (en) | Selective rejection of access to parameters of an option application detachable from an embedded apparatus including web server function | |
JP2003091376A (ja) | ポータブルワイヤレスデバイスおよび印刷装置のリファレンスによる印刷プロトコル | |
JP2005085279A (ja) | セキュリティコンフリクトを回避する、調整されたネットワークイニシエータ管理 | |
JP3977135B2 (ja) | ネットワークデバイス管理システム及びその制御方法 | |
US7685303B2 (en) | Object-oriented discovery framework | |
JP4398192B2 (ja) | データ処理方法及びデータ処理システム | |
JP2007295587A (ja) | サーバ装置及びその制御方法 | |
JP3063225B2 (ja) | ゲートウェイの通信パラメータ設定装置 | |
JP2009118058A (ja) | 通信管理システムおよび通信管理プログラム | |
JP2005079718A (ja) | 通信管理装置 | |
AU2005246932A1 (en) | A method of configuring a computing device | |
GB2365570A (en) | Accessing content from an embeded web server | |
JPH0455934A (ja) | プリントサーバ |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20060126 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20080801 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20080812 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20090512 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20090715 |
|
A911 | Transfer to examiner for re-examination before appeal (zenchi) |
Free format text: JAPANESE INTERMEDIATE CODE: A911 Effective date: 20090924 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20091110 |
|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20091208 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 Ref document number: 4424910 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20121218 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20121218 Year of fee payment: 3 |
|
S111 | Request for change of ownership or part of ownership |
Free format text: JAPANESE INTERMEDIATE CODE: R313113 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20121218 Year of fee payment: 3 |
|
R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20131218 Year of fee payment: 4 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
EXPY | Cancellation because of completion of term |