(57)【特許請求の範囲】
【請求項１】
コンピュータが処理可能な、アプリケーションを形成するための処理モジュールであって、データチャネルを介して通信されるデータオブジェクトを処理又は修正し、且つユーザインタフェースチャネルを介して通信されるユーザインタフェース制御オブジェクトを修正するためのフィルタを、複数格納したライブラリと、
前記ライブラリに格納された複数のフィルタそれぞれに対応するフィルタアイコンを表示し、表示中のフィルタアイコンの中からユーザにより選択指示されたフィルタアイコンに対応するフィルタを、前記ライブラリから動作環境のメモリにロードして、該動作環境において配列されたフィルタのシーケンスに追加する選択手段と、
前記ユーザインタフェースチャネルを介して通信されるマークアップ言語で記述された前記ユーザインタフェース制御オブジェクトに対して、前記フィルタのシーケンスに従って、当該配列されている各フィルタにおいて当該各フィルタに対応するユーザインタフェースの要素のコードを含めるように修正する修正手段と、
前記修正手段で前記配列されている各フィルタに対応するユーザインタフェースの要素のコードを含めるように修正された前記マークアップ言語記述のユーザインタフェース制御オブジェクトのコードを、少なくともパーサを含むユーザインタフェースコントローラで解釈することによって、前記配列されている各フィルタに対応するユーザインタフェースの要素を表示装置に表示するための表示用データを生成する生成手段と、
を有し、
更に、前記データチャネルを介して通信される前記データオブジェクトは、前記フィルタのシーケンスに従って、当該配列されている各フィルタにおいて処理又は修正されることを特徴とするデータ処理装置。
【請求項２】
前記修正手段は、前記メモリにおけるフィルタのシーケンスに従って、当該配列されている各フィルタにおいて、当該各フィルタに対応するユーザインタフェースの要素のコードを前記ユーザインタフェース制御オブジェクトに追記していくことを特徴とする請求項１に記載のデータ処理装置。
【請求項３】
前記修正手段は、前記ユーザインタフェース制御オブジェクトに対して追記されたフィルタに対応するユーザインタフェースの要素のコードを変更することを特徴とする請求項２に記載のデータ処理装置。
【請求項４】
前記生成された表示用データが前記表示装置に出力されることにより、前記選択されたフィルタに対応するユーザインタフェースの要素は、前記フィルタのシーケンスに対応する順序で前記表示装置に表示されることを特徴とする請求項１に記載のデータ処理装置。
【請求項５】
前記フィルタは、前記配列されたフィルタに対応するユーザインタフェースの要素の表示可否をユーザに設定させるためのコードを含むことを特徴とする請求項１に記載のデータ処理装置。
【請求項６】
前記フィルタは、他の配列されたフィルタに対応するユーザインタフェースの要素を１つのツールバー上に表示させるためのツールバーフィルタを含むことを特徴とする請求項１に記載のデータ処理装置。
【請求項７】
前記マークアップ言語はＸＭＬであることを特徴とする請求項１に記載のデータ処理装置。
【請求項８】
コンピュータが処理可能な、アプリケーションを形成するための処理モジュールあって、データチャネルを介して通信されるデータオブジェクトを処理又は修正し、且つユーザインタフェースチャネルを介して通信されるユーザインタフェース制御オブジェクトを修正するためのフィルタを、複数格納したライブラリを有するデータ処理装置を制御するデータ処理方法であって、
前記データ処理装置が有する選択手段が、前記ライブラリに格納された複数のフィルタそれぞれに対応するフィルタアイコンを表示し、表示中のフィルタアイコンの中からユーザにより選択指示されたフィルタアイコンに対応するフィルタを、前記ライブラリから動作環境のメモリにロードして、該動作環境において配列されたフィルタのシーケンスに追加する選択ステップと、
前記データ処理装置が有する修正手段が、前記ユーザインタフェースチャネルを介して通信されるマークアップ言語で記述された前記ユーザインタフェース制御オブジェクトに対して、前記フィルタのシーケンスに従って、当該配列されている各フィルタにおいて当該各フィルタに対応するユーザインタフェースの要素のコードを含めるように修正する修正ステップと、
前記データ処理装置が有する生成手段が、前記修正ステップで前記配列されている各フィルタに対応するユーザインタフェースの要素のコードを含めるように修正された前記マークアップ言語記述のユーザインタフェース制御オブジェクトのコードを、少なくともパーサを含むユーザインタフェースコントローラで解釈することによって、前記配列されている各フィルタに対応するユーザインタフェースの要素を表示装置に表示するための表示用データを生成する生成ステップと、
の各ステップを含み、
更に、前記データチャネルを介して通信される前記データオブジェクトは、前記フィルタのシーケンスに従って、当該配列されている各フィルタにおいて処理又は修正されることを特徴とするデータ処理方法。
【請求項９】
コンピュータが処理可能な、アプリケーションを形成するための処理モジュールであって、データチャネルを介して通信されるデータオブジェクトを処理又は修正し、且つユーザインタフェースチャネルを介して通信されるユーザインタフェース制御オブジェクトを修正するためのフィルタを、複数格納したライブラリを有するデータ処理装置を制御するための、コンピュータ実行可能なコンピュータプログラムであって、
前記データ処理装置に対して、前記ライブラリに格納された複数のフィルタそれぞれに対応するフィルタアイコンを表示し、表示中のフィルタアイコンの中からユーザにより選択指示されたフィルタアイコンに対応するフィルタを、前記ライブラリから動作環境のメモリにロードして、該動作環境において配列されたフィルタのシーケンスに追加する選択ステップと、
前記データ処理装置に対して、前記ユーザインタフェースチャネルを介して通信されるマークアップ言語で記述された前記ユーザインタフェース制御オブジェクトに対して、前記フィルタのシーケンスに従って、当該配列されている各フィルタにおいて当該各フィルタに対応するユーザインタフェースの要素のコードを含めるように修正する修正ステップと、
前記データ処理装置に対して、前記修正ステップで前記配列されている各フィルタに対応するユーザインタフェースの要素のコードを含めるように修正された前記マークアップ言語記述のユーザインタフェース制御オブジェクトのコードを、少なくともパーサを含むユーザインタフェースコントローラで解釈することによって、前記配列されている各フィルタに対応するユーザインタフェースの要素を表示装置に表示するための表示用データを生成する生成ステップと
して機能させ、
更に、前記データチャネルを介して通信される前記データオブジェクトは、前記フィルタのシーケンスに従って、当該配列されている各フィルタにおいて処理又は修正されることを特徴とするコンピュータプログラム。
【請求項１０】
前記修正ステップは、前記メモリにおけるフィルタのシーケンスに従って、当該配列されている各フィルタにおいて、当該各フィルタに対応するユーザインタフェースの要素のコードを前記ユーザインタフェース制御オブジェクトに追記していくことを特徴とする請求項９に記載のコンピュータプログラム。
【請求項１１】
前記修正ステップは、前記ユーザインタフェース制御オブジェクトに対して追記されたフィルタに対応するユーザインタフェースの要素のコードを変更することを特徴とする請求項１０に記載のコンピュータプログラム。
【請求項１２】
前記生成された表示用データが前記表示装置に出力されることにより、前記選択されたフィルタに対応するユーザインタフェースの要素は、前記フィルタのシーケンスに対応する順序で前記表示装置に表示されることを特徴とする請求項９に記載のコンピュータプログラム。
【請求項１３】
前記フィルタは、前記配列されたフィルタに対応するユーザインタフェースの要素の表示可否をユーザに設定させるためのコードを含むことを特徴とする請求項９に記載のコンピュータプログラム。
【請求項１４】
前記フィルタは、他の配列されたフィルタに対応するユーザインタフェースの要素を１つのツールバー上に表示させるためのツールバーフィルタを含むことを特徴とする請求項９に記載のコンピュータプログラム。
【請求項１５】
前記マークアップ言語はＸＭＬであることを特徴とする請求項９に記載のコンピュータプログラム。
【請求項１６】
請求項９乃至１５のいずれか１項に記載のコンピュータプログラムを格納した、コンピュータ読み取り可能な記憶媒体。
【発明の詳細な説明】
【０００１】
本発明は、カスタム化アプリケーションを使用してデータを処理し、且つそのアプリケーションがここではフィルタと呼ばれる、ユーザが選択する複数の処理モジュールから組み立てられているような、プログラム可能コンピュータを使用するデータ処理に関する。
【０００２】
本発明のある面は、アプリケーションを形成するためのフィルタの選択及びアセンブリがグラフィカルユーザインタフェースを使用して図式的に表現され、それにより、フィルタのアセンブリに加えられる変更がフィルタの表示表現における対応する変化として視覚的に表現されるような、視覚的プログラミング環境の作成にも関する。
【０００３】
本発明の別の面は、グラフィカルユーザインタフェースを使用してデータオブジェクトが視覚化される方式にも関する。
【０００４】
データオブジェクトがスターフィールド表示パターンとして表示され、且つ、そのスターフィールド表示により表現されるデータベースのデータに対して関連するフィルタが動的問い合わせを適用するように表示画面における「動作監視領域」を操作することができる、グラフィカルユーザインタフェースを提供することが米国特許第５、８４１、４３７号によって知られている。
【０００５】
また、米国特許第５,９１３,０３８号により、フィルタグラフのアーキテクチャ内で組み合わされるいくつかのフィルタを使用してマルチメディアデータの処理を実行する提案がなされていることも知られている。フィルタグラフ中のフィルタは、１つのフィルタの出力が通常は次のフィルタに対する入力となり、それにより、マルチメディアデータのストリームをそれぞれ異なるフィルタコンポーネントにより読み取り、互いに分割し、復号し且つレンダリングすることができるように接続可能である。
【０００６】
更に、英国特許公開第２２４７５９７号により、ユーザがコンポーネント処理要素から複雑な処理アプリケーションを組み立てることができるように、一連のアイコンにより図形表現される一連の連続する処理動作によって画像データを処理することも知られている。
【０００７】
本発明は、データを処理する改善された方法及び処理システムを提供することを目的としている。
【０００８】
上記の目的に応じて、利用可能フィルタのライブラリから選択され且つデータ経路でフィルタを結合するように動作環境にロードされる、ここではフィルタと呼ばれる複数の処理要素によりデータオブジェクトが処理されるシステムが開示される。フィルタのうち少なくとも１つは、典型的には表示装置に対する出力の形態でユーザに情報を提示するための出力を有する。これは、選択されたフィルタの間の動作関係の視覚表現を更に提示すると共に、各フィルタを構成するための対話型環境を提供する。
【０００９】
以下、添付の図面を参照して、単なる一例として提示される本発明の実施形態を説明する。
【００１０】
図１は、デスクトップパーソナルコンピュータで実現されるシステムを示している。システムコントローラ１はユーザインタフェース２を介して受信されたユーザ指令に応答して、ユーザ選択フィルタ３を動作環境４にロードする。フィルタは動作環境４においてユーザが決定した順序で配列される。
【００１１】
選択されたフィルタ３は、システムコントローラ１に対してアクセスできる利用可能フィルタのライブラリ５から選択される。
【００１２】
順に配列された選択フィルタにより処理されるべきデータを含むデータメモリ６は、図１に示すシーケンスの第１のフィルタ３１にデータチャネル７により結合されている。データチャネル７は、データメモリ６を第１のフィルタ３1のみならず、シーケンス中の後続するフィルタ３2から３nに順に接続している。動作環境４にロードされるフィルタの総数ｎは可変であり、ユーザの選択により決定される。また、各々のフィルタからユーザインタフェースコントローラ１０を介して表示制御データをグラフィカルユーザインタフェース２へ通信するための表示制御チャネル８も図示されている。
【００１３】
動作環境内部のユーザ選択フィルタのシーケンス３i（ｉ＝１からｎ）は互いに組み合わされて１つのアプリケーションを形成する。特定のシーケンスの選択を定義する情報を後の使用に備えてアプリケーションメモリ９にセーブしておいても良い。このようにしておけば、所要のフィルタのアセンブリを定義する情報が既にセーブされている場合には、その特定の選択を定義する情報はユーザが選択フィルタをアセンブルするときに必ずしも必要ではなくなる。
【００１４】
システムコントローラ１は後述するヘルプ文書のライブラリ１１をもアクセスする。
【００１５】
下記の例におけるユーザインタフェース２はグラフィカルユーザインタフェースである。図２は、グラフィカルユーザインタフェース２によりユーザに対して提示される典型的な表示画面２０を概略的に示す。表示画面２０はデータ表示領域２１を含み、データベース検索の結果であるデータオブジェクトの集合体を表示するためにシステムを使用する例においては、データ表示領域２１内では個々のデータオブジェクトをそれぞれ対応するデータアイコン２３により表現する。図２の例では、データアイコン２２がデータ表示領域２１に無作為に分布するように、個々のデータオブジェクトと関連する位置情報を無作為に生成するスキャッタプロット形態（scatterplot）でデータオブジェクトを表現している。
【００１６】
表示画面２０は、その時点で動作環境４にロードされている選択フィルタ３1から３nの各々を対応するフィルタボックス２４i（ｉ＝１からｎ）により表現するフィルタディスプレイウィンドウ２３を更に含む。
【００１７】
各々のフィルタボックスは、表示画面では、所定のウィンドウについてフィルタボックスが関連対応するフィルタのアイデンティティと、そのフィルタを制御するための制御パラメータと、フィルタ又はフィルタシーケンスの動作を制御するためにインタフェースを介してユーザから入力されたデータとを指示するように図形（グラフィックス）及びテキストを表示するウィンドウとして作成される。
【００１８】
フィルタディスプレイウィンドウ２３の中で、データメモリ６からのデータの流れをフィルタボックス２４iのスタックを通る下向きの流れとして目で見て識別できるように、選択フィルタ３iの間の動作連結の順序はフィルタディスプレイウィンドウ２３の表示に保存される。
【００１９】
ユーザは、利用可能フィルタのライブラリ５の中から別のフィルタを選択できるためのフィルタセレクタウィンドウ２５内部の対話型表示を利用し、シーケンスに更なる追加フィルタを追加しても良い。各々の新たなフィルタはシーケンスの該当する位置に追加され、スタック中の対応する位置に新たなフィルタボックス２４nにより表現される。更に、スタックからフィルタを除去する機能又はフィルタの順序を変更する機能などの追加機能も設けられているが、図２には示されていない。
【００２０】
この例では、図３に示すように特許データベース３０の特許文書を求める検索の結果から選択的情報を管理し、取り出すためにフィルタ３iのシーケンスを使用するシステムを説明する。この例においては、図１に示すシステムは、表示装置３２を有し、ローカルネットワーク３３を介してサーバ３４に接続するパーソナルコンピュータ３１により動作される。モデム３５はローカルネットワーク３３をインターネット３６を介してデータベース３０に接続する。
【００２１】
データベース３０中の特許文書を求めて実行される検索の結果、サーバ３４の検索結果ファイル３７にデータが累積され、ユーザがそのデータを表示するためにコンピュータ３１へのアクセス可能とする。
【００２２】
検索結果を見るため、ユーザは表示装置３２を含むグラフィカルユーザインタフェース２を使用し、利用可能フィルタのライブラリ５からフィルタ３を選択することにより、データを処理するためのアプリケーションを構築する。特に、図４に更に詳細に示すようにフィルタセレクタウィンドウ２５に設けられた選択機能を利用する。
【００２３】
フィルタセレクタウィンドウ２５は、各々が１つの対応するフィルタのクラスと関連する一連のタブ４０から４４を表示する。コンピュータ３１のディスプレイカーソル及びマウスを使用してタブ４０から４４のうちいずれか１つを選択すると、図４にタブ４３を選択した場合に応答したフィルタアイコン４５から５０の表示により示すように、選択したクラスに含まれるフィルタのメニューが表示される。フィルタアイコン４５から５０のうちいずれか１つを選択すると、選択したフィルタは動作環境４におけるフィルタのシーケンスに追加され、フィルタ表示ウィンドウ２３に表示されるフィルタボックスのスタックにも対応するフィルタボックス２４が追加される。
【００２４】
この例では、タブ４０から４４と関連するフィルタのクラスは次の通りである。
【００２５】
タブ４０はデータオブジェクトをフィルタのシーケンスへインポートする働きをするフィーダフィルタに対応する。
【００２６】
タブ４１はデータオブジェクトを修正するワーカフィルタに対応する。
【００２７】
タブ４２は「フィルタ」という用語の純粋な意味の通りフィルタリング機能を実行し、選択されたデータオブジェクトのみをシーケンス中の連続するフィルタに通すリミットフィルタに対応する。
【００２８】
タブ４３はシステムフィルタを選択する。
【００２９】
タブ４４は、情報をデータ表示領域２１に表示させるという結果をもたらす表示出力を有するディスプレイフィルタを選択する。
【００３０】
図５は、フィルタボックス５１から５４により表現されるようにこの例のユーザ選択フィルタに対応するグラフィカルユーザインタフェース２の一例を示している。図６は、この特定のユーザ選択の結果として動作環境４にロードされた対応するフィルタ５６から５９のシーケンスを示している。入力フィルタ５６はユーザによりコンピュータ３１のキーボードを介して入力されたＵＲＬ（ユニフォームリソースロケータ）の入力に応答して、ローカルネットワーク３３を介して検索結果ファイル３７の内容を検索する。
【００３１】
データメモリ６からのデータストリームはシステムコントローラ１からの指令によって開始され、一連のデータ要素を入力フィルタ５６に入力する。各データ要素は、データベース３０から検索される特定の特許項目に関連する情報を検索を実行すべき検索エンジンにより指示されるフォーマットで含んでいる。
【００３２】
図５に示すようなフィルタボックス５２は、シーケンス中で入力フィルタ５６に続く次のフィルタであり且つ入力フィルタから出力されるデータ要素のストリームを受信する、図６に示すようなコンバータフィルタ５７に対してグラフィカルインタフェースを形成する。コンバータフィルタ５７は各々のデータ要素を取り上げて、それらをシーケンス中の後続フィルタによる処理に適するフォーマットのそれぞれ対応するJavaオブジェクトに変換する。
【００３３】
図５に示すｇｒｅｐフィルタボックス５３は、シーケンス中の次のフィルタであり且つコンバータフィルタ５７から出力されるデータオブジェクトを受信する、図６に示すようなｇｒｅｐフィルタ５８に対してグラフィカルインタフェースを形成する。ｇｒｅｐフィルタ５８は、図４のタブ４２を選択した後にユーザが選択を行うために利用できる「リミットフィルタ」の１つである。ｇｒｅｐフィルタ５８の機能は、ｇｒｅｐフィルタボックス５３に設けられているインタフェースを介してユーザにより定義された検索基準に適合するデータオブジェクトのみを通過させることである。ｇｒｅｐフィルタ５８はユーザにより定義されたテキストストリングを捜索するように設計されている。特許文書の検索という意味での一例として、ユーザが入力した所定の名称の特許譲受人に関連するデータオブジェクトのみをユーザが要求した場合を考える。ｇｒｅｐフィルタ５８はこの基準に適合するデータオブジェクトのみを通過させ、その他のオブジェクトがシーケンス中の次のフィルタへ送り出されるのを阻止することにより応答する。
【００３４】
しかし、ｇｒｅｐフィルタ５８は、ユーザが選択を実行するためにデータオブジェクトの利用可能な属性からどれを選び出すかをあらかじめ知っておくことはできないので、ｇｒｅｐフィルタは、第１のデータオブジェクトが受信され、そのデータオブジェクトから利用可能な属性のリストが抽出された時点で初めてそのユーザインタフェース、すなわち、ｇｒｅｐフィルタボックス５３の外観を構築するように構成されている。この機能は、生成するデータオブジェクトに関してそれぞれ異なるフォーマットを有するいくつかの利用可能なコンバータフィルタ５７のうちいずれか１つをユーザが選択している可能性があるために必要とされるのである。
【００３５】
図７Ａ及び図７Ｂはｇｒｅｐフィルタボックス５３の典型的な表示例を示し、ユーザが検索目標を識別するテキストストリングを入力できる検索ターゲットボックス７０を含む。図７Ａは検索できる属性のメニュー７１を示し、図７Ｂは特定の属性を「inventor（発明者）」として選択した結果を示す。選択された属性は選択属性ボックス７２に入ることになる。
【００３６】
選択属性を選択した後、ｇｒｅｐフィルタ５８がデータオブジェクトのストリームを処理して、発明者として「Smith」の名前を有するデータオブジェクトのみを出力するように、ユーザは検索ターゲットボックス７０に「Smith」などの発明者名を入力し、ＳＥＡＲＣＨボタン７３を選択する。
【００３７】
あるいは、ユーザは「S*th*」などの一定表現パターンを入力しても良いが、その場合、ｇｒｅｐフィルタはその入力に応答して、Smith、Sutherlandなどのパターンに整合するテキストを検索することになるであろう。
【００３８】
図６のシーケンスにおける最後のフィルタは、図５に示すようにディスプレイフィルタボックス５４により形成される対応するインタフェースを有するディスプレイフィルタ５９である。ディスプレイフィルタ５９は、図４のディスプレイタブ４４の選択後、ユーザにより利用可能なディスプレイフィルタのメニューから選択される。この例では、ユーザは、ｇｒｅｐフィルタを使用して選択された結果をデータ表示領域２１に表示させるために、ｇｒｅｐフィルタ５８の下流側に来るべきディスプレイフィルタ５９を選択する必要がある。図５においては、ｇｒｅｐフィルタ５８により選択されたデータオブジェクトはデータ表示領域２１の中にそれぞれ対応するアイコン２２として表示されている。データ表示領域２１内部に無作為に割り当てられた２次元画像座標をプロッティングさせるため、スキャッタグラフ機能を有するディスプレイフィルタ５４を選択することにより、アイコン２２の位置を無作為に分布させることができる。
【００３９】
後述するように、例えば、オブジェクトの特性によって決まる彩色、及びユーザが特定のデータアイコンを選択したときに見ることができる関連テキスト・画像ディスプレイボックスを追加するために、各々のアイコン２２により提示される情報も同様に適切なディスプレイフィルタの選択によって制御されても良い。
【００４０】
［ユーザインタフェースチャネルを介するユーザインタフェースの制御］
次に、フィルタの対話型制御のためにユーザインタフェースがフィルタディスプレイ２３にどのようにフィルタボックス２４を提示するかを説明する。
【００４１】
図８は、データ要素の集合体８０を処理するための特定のユーザ選択アプリケーションを構成するフィルタの選択の一例を示す。便宜上、先に説明した特許文書の検索の例をここでも利用する。従って、この例においても、データ要素の集合体はデータメモリ６に格納された特許データオブジェクトにより構成されている。
【００４２】
図８のフィルタのシーケンスはデータメモリ６からデータオブジェクトの集合体８０をインポートするためのインポートフィルタ８１と、第１の処理フィルタ８２と、第１のディスプレイフィルタ８３と、第２の処理フィルタ８４と、ユーザインタフェースフィルタ８５と、第３の処理フィルタ８６と、第２のディスプレイフィルタ８７とから構成されている。表示情報は第１及び第２のディスプレイフィルタ８３及び８７からデータディスプレイチャネル９３を介してユーザインタフェースコントローラ８９へ通信されて、データ表示領域２０にデータを表示させることができる。
【００４３】
上記のフィルタの各々はデータチャネル８８を介してデータオブジェクトの入力を受信し、データチャネルを介してデータオブジェクトをシーケンス中の次に続くフィルタへ出力する。シーケンス中の最後のフィルタである第２のディスプレイフィルタ８７はその他のフィルタには接続しておらず、概念上はデータシンク（data sink）に接続するとみなしても良い。
【００４４】
フィルタ８１から８７はそれぞれユーザインタフェース制御データを生成し、このデータは、この例では図２のフィルタディスプレイウィンドウ２３におけるフィルタボックス２４の外観により構成されるフィルタユーザインタフェース８１０を制御するユーザインタフェースコントローラ８９に入力される。ユーザインタフェースコントローラ８９は表示画面２０のデータ表示領域２１にあるデータアイコン２２の表示も制御する。
【００４５】
ユーザインタフェース制御データはシーケンス中の隣接するフィルタの間で通信されると共に、ユーザインタフェースチャネル８１１を介して最後のフィルタ８７とユーザインタフェースコントローラ８９との間でも通信される。ユーザインタフェース制御データはインポートフィルタ８１により作成されるユーザインタフェース記述オブジェクトにより構成されており、これはＸＭＬ（eXtendable Markup Language）で書かれた文書の形態をとるコードである。従って、ユーザインタフェース記述オブジェクトはインポートフィルタ８１から出力された時点ではマークアップ言語で記述されたコードであるが、ユーザインタフェースコントローラ８９はこのコードを対応するフィルタボックス２４をフィルタディスプレイウィンドウ２３に表示させるような方式で解釈することができる。例えば、このコードはフィルタのクラス（すなわち、フィルタがフィーダフィルタであるか、ワーカフィルタであるか、リミットフィルタであるか、システムフィルタであるか、又はディスプレイフィルタであるかの区別）を定義し、且つフィルタボックスに表示されるべきフィルタの名称を指示する。また、コードはユーザデータ入力のために表示されるべきテキストボックスと、ユーザが選択するために表示されるべきボタン、あるいはユーザがマウス又はキーボードなどの従来通りの指示装置を使用して対話形式で操作できる類似の制御要素とを定義する。
【００４６】
このユーザインタフェース記述オブジェクトはユーザインタフェースチャネル８１１を介して第１の処理フィルタ８２へ通信され、第１の処理フィルタ８２は、それがフィルタユーザインタフェース８１０において表現されるべき方式の記述を追加するようにコードを修正する。同様に、シーケンス中の後続する各フィルタも、それぞれ対応する要素を含めるようにユーザインタフェース記述オブジェクトのコードを修正し、その結果、最終的にユーザインタフェースコントローラ８９へ出力されるオブジェクトはこの特定のフィルタのシーケンスについて要求されるフィルタユーザインタフェース８１０を完璧に定義する情報を含むことになる。各要素は一般にフィルタボックスの１つずつにそれぞれ対応する。
【００４７】
次に、図９に示す選択フィルタのシーケンスを含み、対応するユーザインタフェースが図１０のフィルタディスプレイウィンドウ２３の内容により表現されるようなアプリケーションについて、コードがどのようにして生成され、修正されるかの一例を説明する。
【００４８】
図９のフィルタのシーケンスはデータオブジェクトの集合体の形態をとる特許情報をロードする特許ローダフィルタ９０と、ユーザが選択色を選択するのに応答してフィルタを通過する各データオブジェクトの固有色を判定する色選択フィルタ９１と、データ表示領域２１の、各オブジェクトにより搬送される位置情報により判定される２次元位置にデータを表示するために、入力されて来る全てのデータオブジェクトに関する表示情報を出力するディスプレイフィルタ９２とを含む。表示情報はデータディスプレイチャネル９３によりユーザインタフェースコントローラ８９へ通信される。
【００４９】
これらのフィルタの各々に対応するユーザインタフェースは図１０に概略的に示されており、特許ローダフィルタボックス１００と、色選択フィルタボックス１０１と、ディスプレイフィルタボックス１０２とから構成されている。
【００５０】
特許ローダフィルタにより作成されるユーザインタフェース記述オブジェクトは付録１にコードにより示すようなこのフィルタの記述を含む。（以下に挙げる付録は、全て、実際に利用されるＸＭＬコードを代表してはいるが、それに厳密には対応していない擬似コードを採用することにより簡略化されている。）このコードは、最終的には、コードをパージングするパーサを含むユーザインタフェースコントローラ８９により読み取られるべきものである。パーサは＜filter＞を読み取るときはフィルタ定義を期待し、＜class＞を読み取るときには、この例ではインポートフィルタであると指示されているフィルタクラスを読み取る。
【００５１】
次に、パーサは＜name＞を読み取り、フィルタＩＤ及びフィルタ名を判定する。
【００５２】
次に、パーサは＜controls＞を読み取り、その後、＜textbox＞をパージングするときに与えられる、このケースにおいてはテキストボックス記述子であると指示されているフィルタのユーザインタフェースの定義を期待する。そこで、コントローラ８９はこの情報を使用して、特許ローダフィルタボックス１００を特許ローダフィルタ９０と関連付けても良い。
【００５３】
次に、パーサは＜size＞を読み取ることにより、テキストボックスが表示する文字の数、この場合は２０を獲得する。
【００５４】
次に、パーサは＜UIconstraints＞を読み取って、一連の制約を判定する。この例では、フィルタボックス１００でテキストボックスを見ることができるように制約「visible」を真に設定すると共に、フィルタとの対話を可能にするためにユーザインタフェースがイネーブルされるように制約「enabled」も真に設定する。
【００５５】
これに対し、制約(constraint)「visible」が偽に設定されていれば、フィルタは依然として存在しているにもかかわらず、フィルタボックス１００は表示されなくなるであろう。「enabled」が偽に設定されていれば、フィルタボックス１００により提供されるユーザインタフェースはディスエーブルされるであろう。次に、パーサは定義＜button＞を読み取る。この定義は、フィルタボックス１００に表示されたときのボタン（１０４）の幅を定義する＜size＞を含む。
【００５６】
従って、このコードは、データオブジェクトの集合体に対するポインタを定義するためにユーザがテキストボックス１０３にテキストを入力して、ボタン１０４を選択することにより集合体のロードを開始させることができるように、特許ローダフィルタ１００を定義する。
【００５７】
特許ローダフィルタ９０から出力されたユーザインタフェース記述オブジェクトはユーザインタフェースチャネル８１１を介してシーケンス中の次のフィルタ、図９のこの例では色選択フィルタ９１へ通信される。色選択フィルタ９１はユーザインタフェース記述オブジェクトに、図１０には色選択フィルタボックス１０１として示されている色選択フィルタのユーザインタフェースを定義するコードを追加する。このコードは付録２に示されている。ユーザインタフェースコントローラ８９のパーサによりパージングされたとき、このコードはフィルタが処理クラスのフィルタであり且つ「colour chooser」という名称であることを指示する。＜controls＞定義は、大きさ（５０画素幅）及び色（赤）に関して定義された色選択アイコンを規定する。
【００５８】
追加されたユーザインタフェース記述オブジェクトは色選択フィルタ９１からユーザインタフェースチャネル８１１を介してディスプレイフィルタ９２へ出力される。ディスプレイフィルタ９２は図１０のディスプレイフィルタボックス１０２を記述するための独自のコードを追加する。
【００５９】
最後に、ユーザインタフェース記述オブジェクトはユーザインタフェースコントローラ８９へ出力され、ユーザインタフェースコントローラ８９はコードをパージングし、フィルタユーザインタフェースウィンドウ８１０を生成するために別のデータチャネル８１２を介して表示装置３２へ出力されるデータを生成する。
【００６０】
この例におけるデータオブジェクトの集合体をロードするということの効果は、それらのデータオブジェクトが赤色に着色されて表示されることである。ユーザがフィルタボックス１００及び１０１に表示されているパラメータに変更を加えると、コントローラ８９はそれらの変更を実現するためのメッセージをフィルタへ送信し、それに応じてフィルタディスプレイウィンドウ２３内部の表示が更新されるように、新たなユーザインタフェース記述オブジェクトが生成される。
【００６１】
図１１の例に示すように、別の処理フィルタが追加される新たなアプリケーションを形成するために追加フィルタを追加することを選択しても良い。この例では、色選択フィルタ９１の後に「白黒」フィルタ１１０を追加しており、この「白黒」フィルタはこのフィルタを通過する各データオブジェクトから全ての色情報を除去するという機能を有する。図１２に示すように、フィルタディスプレイウィンドウ２３にはこれに対応するフィルタボックス１２０が現われ、このフィルタボックスはチェックボックス１２１を含む。ユーザがシーケンス中の先行するカラーフィルタをオーバライドすることを要求する場合に、このチェックボックスを選択することによりチェックを行なうことができる。
【００６２】
従って、チェックボックス１２１を選択しなければ、白黒フィルタは、シーケンス中の白黒フィルタの上流側にあるカラーフィルタにより先にカラーコード化されていないデータオブジェクトのみを白黒に変更する効果を有する。これに対し、チェックボックス１２１を選択した場合には、シーケンス中のカラーフィルタにより追加された色属性も白黒フィルタによりオーバライドされることになる。
【００６３】
図１１及び図１２の例において、色選択フィルタ９１は白黒フィルタ１１０の上流側に配置されているので、図１２に示すように、白黒フィルタにシーケンス中の先行するカラーフィルタをオーバライドさせるようにユーザがチェックボックス１２１を選択した場合には、色選択フィルタのフィルタボックス１０１がこのフィルタを通過するデータオブジェクトに適用されるべき色の設定をユーザに求めることは不適切であろう。従って、このような状況においては、白黒フィルタ１１０は色選択フィルタ９１に対応するフィルタボックス１０１により規定されるユーザインタフェースを自動的にディスエーブルする。これは、色選択フィルタ９１のユーザインタフェースを判定するコードを搬送するユーザインタフェース記述オブジェクトが白黒フィルタ１１０を通過しなければならないために可能である。白黒フィルタ１１０は、色選択フィルタ９１の＜controls＞定義の中で制約「enabled」を偽に設定することによりコードを変更する。その結果、白黒フィルタ１１０から出力されるユーザインタフェース記述オブジェクト中のコードを付録３に示す。図１２では、「enabled」パラメータを偽に設定した結果として、色選択フィルタボックス１０１は、色選択フィルタ９１がディスエーブルされたことをユーザに指示するためのディスエーブルアイコン１２２を示している。
【００６４】
次に、図１３及び図１４を参照して、シーケンス中の先行するフィルタからユーザインタフェースチャネル８１１により通信されたユーザインタフェース記述オブジェクトを書き換え、その後、修正形態のインタフェース記述オブジェクトを選択フィルタのシーケンス中の後続するフィルタへ送り出すことを唯一の目的とするユーザインタフェースフィルタについて一例を説明する。
【００６５】
この例では、いくつかの他のフィルタのユーザインタフェースをツールバーフィルタユーザインタフェースボックス１４１に加えてフィルタディスプレイウィンドウ２３内に表示される１つのツールバー１４０に圧縮する効果を有するツールバーフィルタ１３０を説明する。図１３に示すように、ツールバーフィルタ１３０は選択フィルタのシーケンスの、ディスプレイフィルタ９２の下流側に挿入され、ユーザインタフェースチャネル８１１を介してローダフィルタ９０、色選択フィルタ９１、白黒フィルタ１１０及びディスプレイフィルタ９２のユーザインタフェースを定義するユーザインタフェース制御データを含むユーザインタフェース記述オブジェクトを入力として受信する。ツールバーフィルタボックス１４１は一連のチェックボックス１４２を表示し、ユーザはツールバー１４０と置き換えるべきフィルタユーザインタフェースを選択することができる。この例では、特許ローダ、色選択及び白黒の各フィルタについてユーザはチェックしているが、ディスプレイフィルタについてはチェックしていない。
【００６６】
従って、この結果、フィルタディスプレイウィンドウ２３に表示されるのはツールバー１４０と、ディスプレイフィルタボックス１０２と、ツールバーフィルタボックス１４１である。
【００６７】
ツールバーフィルタ１３０がユーザインタフェース記述オブジェクトのコードをどのようにして修正するかは、コードの関連部分を含む付録４の修正コードとして示されている。
【００６８】
ユーザインタフェースコントローラ８９はコードをパージングし、スタックの初めの３つのフィルタがツールバーＴＢ１のメンバーであると判定する。パラメータはツールバーでそれらのＩＤを定義し、ポップアップ要素は、ユーザがマウス及びカーソルを使用して特許ローダフィルタ、色選択フィルタ及び白黒フィルタをそれぞれ表現する一連のアイコン１４３、１４４及び１４５のうち１つを選択したときに何が示されるかを定義する。コードは、そのような選択の結果として実行されるアクションを元のフィルタユーザインタフェースを図１０及び図１２のフィルタボックス１００、１０１及び１２０に対応する形態で出現させる動作として定義する。
【００６９】
ツールバーフィルタ１３０などのユーザインタフェースフィルタは、アプリケーションメモリ９を使用して後の使用に備えてセーブされる様々なアプリケーションを開発させるための開発ツールであるとみなされることが多い。そのようなアプリケーションの場合、アプリケーション開発中に開発ツールとしてのみ使用されるフィルタをユーザに対して表示することが望ましくないこともある。例えば、ツールバーフィルタボックス１４１を見えなくするための機能をツールバーフィルタ１３０に与えたとする。ツールバーフィルタボックス１４１で「Display」ボックスの選択を解除することによりこの機能を選択すると、ツールバーフィルタ１３０からのユーザインタフェース記述オブジェクトにおけるコード記述出力の制約「visible」が偽に設定される結果となる。その結果得られた、フィルタのシーケンスを含むアプリケーションを定義する情報を格納しても良い。後にこの機能を再び使用すると、フィルタディスプレイウィンドウ２３の見かけは、図１５に示すように、図１４のツールバーフィルタボックス１４１が見えないように隠された状態になる。同様に、アプリケーション開発に使用される他のフィルタも利用後、アプリケーションのセーブ前に隠されても良い。
【００７０】
別の例においては、フィルタボックス内に提示されるユーザインタフェースの一部を選択的に隠すようにユーザインタフェースフィルタを構成しても良い。例えば、フィルタボックスが通常はユーザ選択のためのボタンのような制御特徴を表示するか、又はフィルタの構成を制御するパラメータを表示している場合、それらの特徴を隠しても良い。これは、例えば、システム開発担当者により使用されている特徴をエンドユーザがアクセスできないように隠すという目的のために望まれるであろう。
【００７１】
ユーザインタフェースフィルタ８５のもう１つの例は、図１６に示すような「データコントロール追加」フィルタ１６０である。このフィルタは、図１７でデータコントロール追加フィルタボックス１７０により表現されているユーザインタフェースを有する。
【００７２】
“データコントロール追加”フィルタの効果は、表示される各データアイコン２２が関連する制御アイコン１７１を有するようにデータ表示領域２１に更にコントロールを追加することである。この例では、ユーザがアイコン１７１を選択した場合に、データアイコン２２と関連する文書のプリントアウトが得られるように、ユーザは表示される全データ要素にプリント制御アイコン１７１を付随させるオプションを選択している。
【００７３】
データコントロール追加フィルタ１６０によりユーザインタフェース記述オブジェクトに追加されるコードを付録５に示す。まず、コードは「データコントロール追加」フィルタ１６０自体を記述し、その制御はデータコントロール追加フィルタボックス１７０に示す通りである。データコントロール追加フィルタボックス１７０は、表示装置からユーザが選択した文書をセーブできるように、データアイコン２２に付随するボタンと関連する「セーブ」などの機能を提供するものであっても良い。あるいは、ユーザはデータ表示領域２１内部で「データコントロール追加」フィルタにより提供されるコントロールを使用して選択を行うことにより、ヘルプフィルタ、ｇｒｅｐフィルタまたは色選択フィルタを呼び出すことも可能であろう。
【００７４】
付録５のコードの後半部分は、ディスプレイチャネル８１１を介して受信された表示データを処理するときにユーザインタフェースコントローラ８９に何が要求されるかを記述している。コードは、ユーザインタフェースコントローラ８９が各要素独自の記述にボタン１７１の記述を追加しなければならないと判定する。
【００７５】
各データ要素アイコン１７１は、例えば、付録６に示すような独自のユーザインタフェース記述コードを有していても良い。データディスプレイチャネル９３を介して通信されるこれらのコードオブジェクトはユーザインタフェースコントローラ８９によりパージングされ、各データ要素は小さな矩形としてレンダリングされても良い。先に説明したように、データコントロール追加フィルタを所定の場所に配置すると、各データ要素の記述は付録７に示すような記述に修正されるであろう。
【００７６】
ユーザインタフェースコントローラ８９によりパージングされると、コントローラは各データ要素が上端部にボタンが配置された矩形としてレンダリングされると判定する。ボタンはＩＤ＝ＦＩＤ６のフィルタを源としており、これにより、ユーザインタフェースコントローラ８９はこのボタンを選択するアクションをデータコントロール追加フィルタ１６０により定義される対応する方法にリンクすることができる。
【００７７】
図１８及び図１９は、フィルタを使用してアプリケーションを構築する上述の技法を利用できる更に別の例を示す。この例では、パーソナルコンピュータ３１を使用して作成されるアプリケーションを、例えば、パームトップコンピュータ又はプロセッサ及び表示画面を具備する携帯電話などのポータブルコンピュータ装置１８０の形態をとる外部装置へダウンロードする。図１８に示すように、ポータブルコンピュータ装置１８０をプリンタ１８１に接続することにより、ユーザはポータブルコンピュータ装置にその時点で保持されているデータを印刷することができる。
【００７８】
図１９は、図１のシステムを使用して著述され、その後、ポータブルコンピュータ装置１８０にダウンロードされたアプリケーションに対するフィルタシーケンスを示す。このフィルタシーケンスはポータブル印刷装置の動作環境４で動作している。この場合、アプリケーションは、ケーブル又は無線チャネルを介して接続されているプリンタ１８１を制御するためにポータブルコンピュータ装置１８０の表示画面３２に表示されるプリンタユーザインタフェース１９５を生成するように設計されたプリンタ制御アプリケーションである。図１９には、表示画面３２に表示され、シーケンス中のフィルタに対応するフィルタボックスから構成されるポータブルコンピュータ装置ユーザインタフェース１９６も示されている。ポータブルコンピュータ装置１８０は様々に異なる動作パラメータを有する任意の数の異なるプリンタに接続できるので、プリンタユーザインタフェース１９５は各プリンタ１８１の必要条件に従って生成されるのが好ましい。そのため、図１９のフィルタのシーケンスは、ポータブルコンピュータ装置１８０が接続されているプリンタにより送信され、ポータブルコンピュータ装置の入力ソケット１９７により受信されるデータに応答することにより、アプリケーションがプリンタ１８１に対して適切なプリンタユーザインタフェース１９５を構築するように構成されている。
【００７９】
従って、図１９のフィルタのシーケンスは、ポータブルコンピュータ装置１８０の入力ソケット１９７を介して受信されるデータをのがすまいとし、受信したデータをいずれもシーケンス中の次のフィルタへ出力するソケットリスナフィルタ１９０を含む。
【００８０】
シーケンス中の次のフィルタはユーザインタフェースビルダフィルタ１９１である。このフィルタはデータチャネル８８により受信されるデータに応答してプリンタ１８１のユーザインタフェースを構築するタスクを有し、データチャネル８８を介してシーケンス中の次のフィルタへプリンタユーザインタフェースオブジェクトを出力する。
【００８１】
シーケンス中の次のフィルタは、出力ソケット１９４を介してプリンタへ送信されるべきデータを出力する機能を有するソケットライタフィルタ１９２である。次のディスプレイフィルタ１９８は、ユーザインタフェースコントローラ８９にデータ表示領域２１に表示されるべきプリンタユーザインタフェース１９５に対する表示信号を生成させることができるようにするために、プリンタユーザインタフェースオブジェクトから生成されるディスプレイオブジェクトをディスプレイチャネル９３に出力する機能を有する。最後に、ユーザインタフェースフィルタ１９３は、アプリケーションの開発者にシーケンス中のフィルタに対応するフィルタボックスをポータブルコンピュータ装置ユーザインタフェース１９６の表示から選択的に隠すことを可能にさせる機能を有する。図２０に示すように、アプリケーションの作成中、ソケットリスナフィルタボックス２００と、ユーザインタフェースビルダフィルタボックス２０１と、ソケットライタフィルタボックス２０２と、ディスプレイフィルタボックスと２０５と、ユーザインタフェースフィルタボックス２０３とがフィルタディスプレイウィンドウ２３に表示される。そこで、開発者はユーザインタフェースフィルタ１９３に、アプリケーションの実行時にフィルタボックス２００、２０１、２０２及び２０３が表示されないようにユーザインタフェース記述オブジェクトを修正するように命令する。その後、アプリケーションが格納され、ポータブルコンピュータ装置１８０にダウンロードされるとき、フィルタボックスが表示されないため、装置のユーザはそのアプリケーションに内在するフィルタシーケンスに気づくことはない。表示される唯一の項目は、ユーザインタフェースビルダフィルタ２０１により（この場合）作成され、出力されたデータオブジェクトである。
【００８２】
ポータブルコンピュータ装置１８０をプリンタ１８１に接続した場合、プリンタにより送信されるハンドシェーク信号はコンピュータ装置のソケットにより受信され、コンピュータ装置は適切なハンドシェーク信号によって応答する。次に、プリンタ１８１はその機能性とユーザインタフェース要件を定義するためにデータをコンピュータ装置にダウンロードする。ポータブルコンピュータ装置１８０で実行中のアプリケーションは上記のフィルタシーケンスを使用してこのデータに応答し、フィルタシーケンスにおいては、ユーザインタフェースビルダフィルタ１９１がコンピュータ装置に接続する特定のプリンタ１８１の機能性とユーザインタフェース要件に対応する適切なユーザインタフェース記述オブジェクトを生成する。
【００８３】
図２１は、プリンタが白黒プリンタである場合にポータブルコンピュータ装置１８０により表示されるプリンタユーザインタフェース２１０を示している。
【００８４】
図２２は、カラープリンタである別のプリンタに接続された場合にポータブルコンピュータ装置１８０により表示されるプリンタユーザインタフェース２２０を示している。
【００８５】
例えば、プリントボタンを選択するなど、プリンタユーザインタフェースに応答してユーザから何らかの入力が行われると、その結果、対応するデータがユーザインタフェースビルダフィルタ１９１に入力される。ユーザインタフェースビルダフィルタ１９１は対応するデータをソケットライタフィルタ１９２へ出力する。図１９に示すように、ソケットライタフィルタはソケット１９４を介してプリンタ１８１へデータを出力する。
【００８６】
プリンタ１８１はユーザにより選択された印刷機能を実行することによって応答することになる。
【００８７】
ポータブルコンピュータ装置１８０を同様にファクシミリ装置などの別の外部装置に接続しても良い。ファクシミリ装置の場合、ユーザインタフェースビルダフィルタ１９１により生成されるユーザインタフェース２３０は図２３の例に示すような表示になるであろう。
【００８８】
別の構成では、ユーザインタフェースビルダフィルタ１９１は、ユーザインタフェースチャネルを介して通信され且つフィルタディスプレイウィンドウ２３に表示されるユーザインタフェース記述オブジェクトとしてプリンタユーザインタフェースを生成しても良い。
【００８９】
従って、より一般的には、生成されるオブジェクトは、ポータブルコンピュータ装置（またはアプリケーションを実行するその種の他の何らかの外部装置）が使用中に接続される周辺装置の制御のためにユーザインタフェースを定義する周辺装置制御オブジェクトであるとみなされても良い。
【００９０】
例えば、周辺装置の動作にユーザの好みを適用するために、フィルタのシーケンスは周辺装置制御オブジェクトを修正する更に別のフィルタを任意に含んでいても良い。例えば、周辺装置がプリンタである場合、用紙サイズの選択肢をＡ４サイズに限定するためのフィルタを追加できる。
【００９１】
そのような外部装置とポータブルコンピュータ装置１８０とが互いに機能し合うためには、ポータブルコンピュータ装置１８０との間でデータを交換する際に共通のプロトコル、すなわち、通信規格を利用することが必要になる。先に示した通り、このプロトコルは、データがポータブルコンピュータ装置１８０の表示画面を介してユーザに提示されるべきユーザインタフェースを定義することを要求すると良い。あるいは、データプロトコルは、このユーザインタフェース情報が厳密には定義されず、例えば、単純にポータブルコンピュータ装置１８０の機能性の定義を含むだけのものであっても良い。その場合、ユーザインタフェースビルダフィルタ１９１はポータブルコンピュータ装置１８０の機能性の知識から適切なユーザインタフェースを構成する。例えば、プリンタ機能プロトコルがプリンタ１８１は白黒印刷とカラー印刷の双方を支援すると定めている場合には、ユーザインタフェースビルダフィルタ１９１はこの装置機能プロトコルを２つの選択肢を伴う、すなわち、単色動作又はカラー動作を選択するためのコンボボックスに対応するユーザインタフェース要素にマッピングすることを要求される。
ポータブルコンピュータ装置がプリンタ１８１などの周辺装置に結合されたとき、プリンタがユーザインタフェースの修正を必要とするより優れた機能を有するようにグレードアップされたとしても、グレードアップ後のプリンタが所定のプロトコルに従って所要のデータを出力するならば、先に図１９を参照して説明したようなフィルタのシーケンスを有するアプリケーションにより、ポータブルコンピュータ装置は適切なユーザインタフェースを生成することができる。
【００９２】
［ヘルプフィルタ］
上記のフィルタシステムを使用するアプリケーションのユーザには、図２４に示すようなヘルプフィルタ２４０によってヘルプ情報が提供されても良い。図２４は、特許データベース検索の結果を処理するために使用されるいくつかのフィルタを含むアプリケーションの一例を示す。
【００９３】
図２５は、図２４のフィルタのシーケンスに対応するフィルタディスプレイウィンドウ２３を示している。フィルタディスプレイウィンドウ２３はフィルタボックス２５０、２５１、２５２及び１０２のスタックを含む。
【００９４】
図２４のフィルタのシーケンスはコレクタフィルタ２４１と、ＩＰＣ（国際特許分類）フィルタ２４２と、ヘルプフィルタ２４０と、ディスプレイフィルタ９２とを含む。フィルタのシーケンスは外部源からのデータオブジェクトをも入力するデータチャネル８８に接続されていると共に、ユーザインタフェースデータオブジェクトをユーザインタフェースコントローラ８９に通信するユーザインタフェースチャネル８１１にも接続している。ディスプレイフィルタ９２は、データ表示領域２１に表示するためにユーザインタフェースコントローラ８９へディスプレイオブジェクトを出力するデータディスプレイチャネル９３にも接続している。
【００９５】
上記のフィルタのシーケンスは動作環境４内部で先に図１を参照して説明したように機能する。
【００９６】
図２５では、フィルタのシーケンスはフィルタディスプレイウィンドウ２３でコレクタフィルタボックス２５０と、ＩＰＣフィルタボックス２５１と、ヘルプフィルタボックス２５２と、ディスプレイフィルタボックス１０２とにより表現されている。
【００９７】
ヘルプフィルタボックス２５２はＨＥＬＰボタン２５３、ＰＲＥＶＩＯＵＳボタン２５４、ＡＬＬボタン２５５及びＤＡＴＡボタン２５６を含むユーザが選択するための一連のボタンを提示している。
【００９８】
図２４のフィルタのシーケンスは、コレクタフィルタ２４１と、ＩＰＣフィルタ２４２と、ディスプレイフィルタ９２とを含むアプリケーションのユーザがヘルプ画面の形の援助を必要とし、図４のフィルタセレクタウィンドウ２５を使用してディスプレイタブ４４を選択し、その後、ライブラリ５の利用可能ディスプレイフィルタの中からヘルプフィルタの挿入を選択した場合に現れる。ユーザはドラッグ＆ドロップ技法を使用して図２４のフィルタのシーケンスの所望の場所にヘルプフィルタ２４０を挿入する。この場合、フィルタ選択ウィンドウ２５のフィルタアイコンをドラッグし、フィルタディスプレイウィンドウ２３のフィルタボックスのスタックの中の所望の場所にそれをドロップすることになる。図２５に示すように、ヘルプフィルタボックス２５２はＩＰＣフィルタボックス２５１とディスプレイフィルタボックス１５２との間に挿入されているので、その結果、ヘルプフィルタ２４０は図２４に示すような位置に挿入されることになる。
【００９９】
ヘルプフィルタ２４０を挿入すると、直ちに、全てのデータオブジェクトがデータチャネル８８を介してシーケンス中の次のフィルタであるディスプレイフィルタ９２に到達する流れが停止される。従って、先にデータ表示領域２１に表示されていた全てのデータが消える。
【０１００】
そこで、ユーザはヘルプフィルタ２４０をいくつかのオプションに従って利用することができる。第１のオプションはヘルプボタン２５３の選択である。この選択に応答して、ヘルプフィルタ２４０はデータチャネル８８を介して単一ヘルプ文書オブジェクトを出力し、このオブジェクトはディスプレイフィルタ９２により受信され、その結果、データディスプレイチャネル９３を介して対応する出力がユーザインタフェースコントローラ８９に送信される。データ表示領域２１は図２６に示すような単一ヘルプオブジェクトアイコン２６０を表示する。ユーザがこのアイコン２６０を選択すると、データ表示領域２１にヘルプフィルタの全機能を記述したヘルプ文書が表示される。
【０１０１】
ユーザが利用できる第２の機能はヘルプフィルタボックス２５２内部のＰＲＥＶＩＯＵＳボタン２５４の選択である。ヘルプフィルタ２４０はこの選択に応答して、システムコントローラ１からフィルタのシーケンス中の先行するフィルタ、この場合にはＩＰＣフィルタ２４２のアイデンティティを要求する。この情報が与えられると、ヘルプフィルタ２４０は単一ヘルプ文書オブジェクトを出力する。このオブジェクトはディスプレイフィルタ９２により処理されて、図２６に示すようなヘルプアイコン２６０を表示させる。ユーザがアイコン２６０を選択すると、その結果、図２７に示すようなヘルプ文書２７０が表示される。図２７のヘルプ文書はいくつかの適切なフィールドでテキストを使用してＩＰＣフィルタを記述すると共に、ＩＰＣフィルタの使用中に得られる典型的な表示の図形例示２７１をユーザに提示する。
【０１０２】
ユーザが利用できる第３のオプションはＡＬＬボタン２５５の選択である。この選択に応答して、ヘルプフィルタ２４０はシステムコントローラ１から利用可能フィルタ５のライブラリに保持されているフィルタを含むシステム中の全てのフィルタのリストを要求し、この情報が与えられると、ヘルプフィルタはライブラリ中の利用可能フィルタの数に相当する数のヘルプ文書オブジェクトの集合体を出力する。各ヘルプ文書オブジェクトはディスプレイフィルタ９２により受信され、ディスプレイチャネル９３を介して出力される。そこで、データ表示領域２１は図２８に示すようないくつかのヘルプオブジェクトアイコン２６０を表示する。ユーザは適切なヘルプ文書を見るためにヘルプオブジェクトアイコン２６０のいずれか１つを選択すれば良い。アイコン２６０は、利用可能フィルタの各々の名称をユーザに指示するための識別情報を含む。
【０１０３】
このように、ユーザは、シーケンス中の所望のフィルタを使用しやすくするため、又は既存のシーケンスにライブラリからフィルタを追加すべきか否かを決定するという目的のために、どのフィルタに関してもヘルプ情報に対するアクセスを獲得することができる。
【０１０４】
ユーザが利用できる第４のオプションはＤＡＴＡボタン２５６の選択である。ヘルプフィルタ２４０はこの選択に応答して、データチャネル８８を介してヘルプフィルタにその時点で入力されているデータオブジェクトの型を問い合わせ、この情報が与えられると、ヘルプフィルタはデータの型に対応するヘルプ文書オブジェクトを出力する。その結果、データ表示領域２１にはデータの型に対応する１つ以上のヘルプアイコン２６０が表示されるので、ユーザは１つのヘルプアイコンを選択して、そのデータに関連する適切なヘルプページを見ることができる。
【０１０５】
図２４の例においては、ヘルプフィルタにより出力されるヘルプ文書オブジェクトの各々はＨＴＭＬ（ハイパーテキストマークアップ言語）で格納されているヘルプ文書を指示するポインタを含む。ユーザインタフェース２におけるオブジェクトの表示を容易にするために、ユーザインタフェースコントローラ８９はヘルプ文書オブジェクトに含まれるポインタを使用して、システムコントローラ１を介して図１に示すようなヘルプ文書のライブラリ１１から要求されているヘルプ文書を検索する。
【０１０６】
別の実施形態では、ヘルプフィルタ２４０はフィルタのライブラリ５に対応する各ヘルプ文書を定義するコードを含み、そのため、図１に示すヘルプ文書のライブラリ１１は不要である。この例においては、ヘルプ文書オブジェクトはヘルプページを定義するＨＴＭＬコードを含み、ユーザインタフェースコントローラ８９はデータディスプレイチャネル９３を介してこのデータを受信したのに応答して、ページをデータ表示領域２１へ出力する。
【０１０７】
ユーザの要求に適合するヘルプを獲得した後、ユーザはシーケンスからヘルプフィルタ２４０を除去しても良く、これにより、ディスプレイフィルタ９２に至るデータオブジェクトの流れを再開することができ、これと共に、フィルタディスプレイウィンドウ２３からも図２５のヘルプフィルタボックス２５２は除去される。
【０１０８】
図２９は、フィルタのシーケンスに適応ヘルプフィルタ２９０が挿入され、システムコントローラ１からシーケンス中の他のフィルタのアイデンティティ及び位置に関する情報を獲得する別の構成を示す。この情報から、適応ヘルプフィルタ２９０は知識ベース２９１を参照することにより、データ表示領域２１を介してこのフィルタの出力をユーザに知的に適応させる。そのような知識ベース２９１から利用可能なヘルプ情報は、例えば、フィルタの順序を変更するか又はフィルタの１つをより適切なフィルタと置き換えることによりフィルタのシーケンスを再構成する方法のアドバイスを含むこともできるであろう。
【０１０９】
ヘルプフィルタのもう１つの例は図３０に示すトレースフィルタである。トレースフィルタ３００はフィルタのシーケンスに挿入される。フィルタのシーケンスにトレースフィルタ３００を含めることにより、シーケンス中の各フィルタにより出力されるデータオブジェクトの数に関してデータをコレートすることができるようになり、例えば、フィルタのシーケンスにより定義されるアプリケーションにおけるボトルネックを検出するための診断ツールとしてこれを利用できる。トレースフィルタは、ディスプレイフィルタ９２により処理されたときに、図３１に示すような一連の同心円を使用して、データディスプレイチャネル９３へのディスプレイオブジェクトの出力にシーケンス中のフィルタを通るデータオブジェクトの流れを図形的に表現させるヘルプ文書オブジェクトを出力する。最も外側の円３１０はシーケンス中の第１のフィルタ３1を表し、このフィルタから出力されるデータオブジェクトの数を指示する数が付されている。同様に、次に内側の円３１１は第２のフィルタ３2を表し、同様に数が付されている。最も内側の円３１２は第３のフィルタ３3を表す。この例では、シーケンス中の各フィルタを出るデータオブジェクトの数はそれぞれ１００、５０、１０である。
【０１１０】
円の表示はディスプレイフィルタからのデータオブジェクトの表示の上に重なり合っていても良い。
【０１１１】
［双方向フィルタ］
図１のフィルタシステムにおけるフィルタ３のシーケンスは、データオブジェクトがフィルタからフィルタへと通過して行く方向に対応する順方向を定義する順序で配列されている。状況によっては、フィルタは制御オブジェクトをフィルタからフィルタへ逆方向に、すなわち、先に定義された順方向とは反対の方向に通過させるほうが有利な場合もある。
【０１１２】
データオブジェクト及び制御オブジェクトを順方向と逆方向にそれぞれ転送する能力を有するフィルタを以下の実施形態で説明するが、そのようなフィルタを双方向フィルタと呼ぶ。
【０１１３】
図３２はそのような双方向フィルタ３２０を概略的に示す。この場合、データチャネル８８はデータオブジェクトを順方向に搬送し、制御チャネル３２１は制御オブジェクトを逆方向に搬送する。
【０１１４】
場合によっては、図３３に示すように双方向フィルタを１対のサブフィルタ３３０及び３３１から構成し、それらのサブフィルタに共有状態３３２、すなわち、サブフィルタ３３０及び３３１のいずれか一方によりアクセス可能な共有メモリをもたせるほうが適切なこともあるだろう。
【０１１５】
図３４は、シーケンス中の各フィルタが双方向フィルタであるようなフィルタのシーケンスの一例を示す。この例では、フィルタのシーケンスは文書処理（ワードプロセッシング）を実行するためのアプリケーションを形成している。シーケンスはインタフェースフィルタ３４０と、スペルチェッカフィルタ３４１と、フォーマッティングフィルタ３４２と、テキスト処理フィルタ３４３とを含む。
【０１１６】
インタフェースフィルタ３４０は１対のサブフィルタ、すなわち、セーバサブフィルタ３４４と、ローダサブフィルタ３４５とにより形成されている。テキスト処理フィルタ３４３は１対のサブフィルタ、すなわち、テキスト捕捉サブフィルタ３４６と、テキストレンダリングサブフィルタ３４７とにより形成されている。
【０１１７】
フィルタ３４０、３４１、３４２及び３４３は、各々が１つのデータオブジェクトを構成する複数のテキストファイルを含むファイルシステム３４８からデータチャネル８８を介して通信されるデータオブジェクトのストリームを処理する。
【０１１８】
図３５には、これに対応するグラフィカルユーザインタフェースが概略的に示されており、フィルタディスプレイウィンドウ２３はフィルタ３４０、３４１、３４２及び３４３の各々に対応するフィルタボックスを対応するフィルタシーケンスにおける順序と同じ順序で表示し、データ表示領域２１はユーザに選択されたときにテキストファイルの１つを形成するテキストを表示する。
【０１１９】
表示されている、インタフェースフィルタ３４０に対応するグラフィカルユーザインタフェースはセーバフィルタボックス３５０と、ローダフィルタボックス３５１とを含む。ローダフィルタボックス３５１はＬＯＡＤボタン３５７を含み、セーバフィルタボックスはＳＡＶＥボタン３５２を備えている。
【０１２０】
スペルチェッカフィルタボックス３５３はスペルチェッカフィルタ３４１に対するユーザインタフェースを提供し、フォーマッタフィルタボックス３５４はフォーマッティングフィルタ３４２に対するユーザインタフェースを提供する。
【０１２１】
テキストレンダラフィルタボックス３５５はテキスト処理フィルタ３４３のテキストレンダリングサブフィルタ３４７に対するユーザインタフェースを提供し、テキストキャプチャラフィルタボックス３５６はテキスト捕捉サブフィルタ３４６に対するユーザインタフェースを提供する。
【０１２２】
ローダサブフィルタ３４５はユーザに対して、ファイルシステム３４８からテキストファイルを選択的にロードできるようにする。このローディング機能は図３５のローダフィルタボックス３５１にあるＬＯＡＤボタン３５７をユーザが選択するのに応答して実行される。ローダサブフィルタ３４５はセーバサブフィルタ３４４と共通する共有状態３４９を有し、この共有状態を使用して、ファイルシステム３４８からロードされたファイルを格納する。制御チャネル３２１により、ユーザはユーザインタフェースコントローラ８９のマウス及びキーボード３３９を介して指令を入力することができ、共有状態３４９に格納されているファイルの編集を可能にするため、編集指令がフィルタシーケンスを介して逆方向に通信される。ローダサブフィルタ３４５は共有状態３４９に格納された編集済みテキストを含むデータオブジェクトを生成し、このデータオブジェクトはフィルタシーケンスを介して順方向に通信される。テキストレンダリングフィルタ３４７はデータディスプレイチャネル９３を介してディスプレイオブジェクトの出力を生成することにより、図３５に示すように、データ表示領域２１にテキスト３５８を表示させる。テキストが正しく編集されたことにユーザが満足すれば、ユーザはセーバフィルタボックス３５０のＳＡＶＥボタン３５２を選択することにより編集済みファイルをセーブすることを選択すれば良く、これに応答して、セーバサブフィルタ３４４は、適切なテキストファイルをユーザの編集に従って更新させるために、制御オブジェクトを制御チャネル３２１を介してファイルシステム３４８へ逆方向に出力する。
【０１２３】
図３５の例では、表示されるテキストファイルは、ユーザが語「the illustrated text」及びイタリック体の語「up」を追加することにより編集することを希望するテキストのブロック３５８を含んでいる。ユーザは所要のフレーズをキーボード３３９から入力し、キーボードのコントロールキーを使用するか、又はマウスを使用して表示アイコン（図示せず）を選択することによりイタリック体を選択する。テキスト捕捉サブフィルタ３４６はユーザインタフェースコントローラ８９から制御チャネル３２１を介して対応する編集指令を受信する。この指令はキーボード事象又はマウス事象に対応する一連のオブジェクトに相当する。テキスト捕捉サブフィルタ３４６はオブジェクトをフォーマッティングフィルタ３４２へ送り出し、フォーマッティングフィルタ３４２は編集指令に含まれている文字を完全な言葉の形に統合する。その後、フォーマッティングフィルタ３４２はフォーマッティング済み制御オブジェクトをスペルチェッカフィルタ３４１へ出力し、スペルチェッカフィルタ３４１は各々の語のスペルチェックを実行する。フォーマッティングフィルタ３４２の出力は、例えば、文字がイタリック体体で表されているか否かを示すために、適切なマークアップ言語を含む。
【０１２４】
スペルチェッカフィルタ３４１は、スペルミスの場所を報知すると共に、その後の正しいスペリングを指示するために、スペルミスがあるとわかった語に追加マークアップ言語を付随させる。この情報はセーバサブフィルタ３４４の共有状態３４９に格納され、後にローダサブフィルタ３４５により出力されて、スペルチェッカフィルタ３４１、フォーマッティングフィルタ３４２、テキストレンダリングサブフィルタ３４７及びユーザインタフェースコントローラ８９を通過し、データ表示領域２１に表示される。
【０１２５】
そこで、ユーザはスペルチェッカフィルタ３４１により提案される修正を実現する機会を得る。
【０１２６】
図３５では、ユーザは語「up」及び語「ilustrated」（スペルミス）を挿入することによりテキスト３５８編集したところである。以下は、この際に起こる一連の事象を示している。
【０１２７】
１．ユーザはスペルミスを含む語「ilustrated」の入力を終え、キーボードのスペースキーを押して、カーソル３５９を語境界から離れるように移動させる。
【０１２８】
２．その編集はテキスト捕捉フィルタにより他の制御事象と共に捕捉される。そのような制御事象の一例は、編集において、ユーザが「up」をイタリック体で出現させるべきであることを指示するために「Control−ｉ」とキーボードで入力することなどである。これらの制御事象は関連する入力テキストと共に送信される。
【０１２９】
３．フォーマッティングフィルタ３４２は制御事象と、制御事象が適用される何らかのテキストとを受信し、それに従ってテキストをマークアップする。イタリック体の例をそのまま利用すると、フォーマッティングフィルタは新たなテキスト文字のｘを含むストリング<i>ｘ</i>を出力することになるであろう。フォーマッティングフィルタ３４２は更に語及び段落をグループ分けし、マークアップされたどのデータ及び事象をシーケンス中の次のフィルタへ逆方向に送信すべきかを決定する。例えば、フォーマッティングフィルタは全ての文字入力を通過させるのではなく、１つの語全体が入力されるまで待ち、その後に語を通過させるのである。図３５の例では、フォーマッティングフィルタによる出力は
<word location=1><i>up</i></word>;<word location=m>ilustrated</word>
を含む。
【０１３０】
４．スペルチェッカフィルタ３４１はこのマークアップデータを受信する。スペルチェッカフィルタ３４１はwordマークアップの事例を捜索し、そのような要素のデータ内容を処理する。そこで、「up」は受け入れられるが、「ilustrated」は不合格となる。スペルチェッカフィルタ３４１はスペルミスを含む全ての語をマークアップする。従って、出力は、
<misspelled><wordlocation=m>ilustrated</word></misspelled>
となる。
【０１３１】
５．セーバサブフィルタ３４４はこのデータを受信し、それをこの双方向フィルタの共有「状態」３４９にキャッシュする。このようにして、入力データの新たな部分が到着するたびに編集済みテキストファイルの全体を構築することができる。ユーザがＳＡＶＥボタン３５２を選択すると、このキャッシュファイルはファイルシステム３４８へ出力される。ユーザがＬＯＡＤボタンを押すと、ファイルシステム３４８から新たなファイルが共有状態３４９にロードされる。
【０１３２】
６．順方向のデータの流れを再び考えてみる。データのスペルチェックがまだ実行されていなければ、スペルチェッカフィルタ３４１は先に説明したように機能する。これは、ユーザがファイルシステム３４８からロードされるべき新たなテキストファイルを選択した場合に起こるであろう。スペルチェッカフィルタ３４１はこのマークアップテキストを取り出し、<misspelled>語の全ての発生時例を何らかのフォーマッティング命令と置き換える。この例では、スペルチェッカフィルタ３４１は問題のある語に赤色の背景を表示するためのマークアップを適用する。例えば、スペルチェッカフィルタ３４１は、
<word location>=m><colour background=red>ilustrated</colour></word>
を出力する。
【０１３３】
７．フォーマッティングフィルタ３４２はフォーマッティング命令でマークアップされたデータを検査し、それらのデータを、文書に対するフォーマッティング命令（ページサイズ、文書スタイルなど）も考慮に入れて、テキストレンダリングサブフィルタ３４７が理解する制御文字に変換する。この例では、これをＨＴＭＬへの単純な変換であるとする。より精巧なフォーマッタであれば、スタイルシート又はよりハイレベルなリーディング調整及びカーニング調整を伴うワードブレーキングアルゴリズムを使用できると考えられる。
【０１３４】
８．テキストレンダリングサブフィルタ３４７は新たなデータを取り上げ、それをデータ表示領域２１にレンダリングする。この例では、これはＨＴＭＬを理解するjavaJEditorコンポーネントへの挿入の使用によって行われるであろう。ユーザはスペルミスした語が赤色の背景によってハイライティングされている様子を見て取ることができる。
【０１３５】
図３６は、双方向フィルタのシーケンスの別の例を示す。この場合、双方向フィルタのシーケンスは線図を編集する機能を実行し、図３７に概略的に表されるようなグラフィカルユーザインタフェースを有する。先の図の要素に対応する要素については、先の図の図中符号に対応する図中符号を付してある。
【０１３６】
図３６のフィルタシーケンスは、ファイルシステム３４８からデータオブジェクトを入力するローダサブフィルタ３４５と、編集済みファイルをファイルシステムにセーブするセーバサブフィルタ３４４から成るインタフェースフィルタ３４０を含む。
【０１３７】
ローダサブフィルタ３４５とセーバサブフィルタ３４４は、編集中にデータをキャッシングするための共有状態３４９をアクセスする。
【０１３８】
ローダサブフィルタ３４５はデータオブジェクトを順方向にマニピュレーションフィルタ３６０へ出力し、マニピュレーションフィルタ３６０はデータオブジェクトを内部状態３６１に格納する。マニピュレーションフィルタ３６０はデータオブジェクトを順方向に線図処理フィルタ３６２へ出力する。線図処理フィルタ３６２はレンダリングサブフィルタ３６３と、選択サブフィルタ３６４とを含み、これらのサブフィルタは受信したデータオブジェクトを格納する共有状態３６５を有する。
【０１３９】
レンダリングサブフィルタ３６３はマニピュレーションフィルタ３６０からデータオブジェクトを受信し、ディスプレイチャネル９３を介してディスプレイオブジェクトをユーザインタフェースコントローラ８９へ出力することにより、表示領域２１に図７に示す円３７０のような線図オブジェクトの表現を表示させる。
【０１４０】
選択サブフィルタ３６４は制御チャネル３２１を介して逆方向に通信される制御オブジェクトを受信して、ユーザインタフェースコントローラ８９のマウス及びキーボード３３９を介するユーザ入力に応答して表示データを編集する。
【０１４１】
通常、ユーザはマウスとカーソルを使用して表示されているオブジェクトの１つを選択し、その後、例えば、オブジェクトの大きさ、向き又は位置を変更することによりオブジェクトを操作するための編集指令を適用することにより、線図を編集することを望む。まず、表示されているオブジェクトのどれがマウス操作によって選択されたかを判定することが必要であり、このタスクが選択サブフィルタ３６４により実行される。選択サブフィルタ３６４は選択が実行されたカーソル位置を共有状態３６５に含まれている表示オブジェクトの詳細な格納内容と関連付け、選択された線図オブジェクトを識別する。選択サブフィルタ３６４は選択された線図オブジェクトを識別するマークアップ済みデータを編集指令と共に逆方向に出力し、この情報はマニピュレーションフィルタ３６０により状態３６１に内部格納される。
【０１４２】
状態３６１は表示されている線図オブジェクトに関連する格納データを既に含んでおり、選択された線図オブジェクトに要求された変換を適用するために編集指令を解釈する。通常、これは変換データをもたらす幾何学的変換を含み、変換済みデータは逆方向にセーバサブフィルタ３４４へ出力され、そこで共有状態３４９に格納される。
【０１４３】
ローダサブフィルタ３４５は、変換済みオブジェクトデータを含めて、共有状態３４９に含まれる編集済みデータから表示されている線図オブジェクトを自動的に更新し、編集済みデータは順方向に送り出されて、ユーザに対して表示される前にマニピュレーションフィルタ３６０及びレンダリングサブフィルタ３６３に格納される。
【０１４４】
選択サブフィルタ３６４は編集すべきオブジェクトの選択を識別するが、この選択情報は共有状態３６５を介してレンダリングサブフィルタ３６３でも利用可能となり、レンダリングサブフィルタ３６３はデータディスプレイチャネル９３を介して出力されるデータをユーザに対して選択されたオブジェクトを指示するための選択標識を追加することにより修正する。この標識は、例えば、選択された線図オブジェクトに追加される選択ハンドル３８１又は選択フレームの形態をとる。これは図３８Ａ、図３８Ｂ及び図３８Ｃに次のように示されている。図３８Ａでは、ユーザは編集したいオブジェクト３７０の上にカーソル３８０を置き、マウスをクリックすることによりそのオブジェクトを選択する。
【０１４５】
この選択は選択サブフィルタ３６４により検出され、オブジェクト３７０が識別され、レンダリングサブフィルタ３６３へ通信される。レンダリングサブフィルタ３６３は選択ハンドル３８１を作成し、選択ハンドル３８１は図３８Ｂに示すように選択されたオブジェクトの上に重なるように表示される。
【０１４６】
そこで、ユーザはカーソルの位置を使用して選択されたオブジェクト３７０を図３８Ｃに示すように新たな位置までドラッグする。このマウスドラッグアクションは、マニピュレーションフィルタ３６０により解釈される指令として解釈される。マニピュレーションフィルタ３６０は、オブジェクト３７０が表示されるべき座標への平行移動という形の適切な変換を適用する。
【０１４７】
この例では、セレクタサブフィルタ３６４から出力されるマークアップ済みデータは次のような形態をとると考えられる。
<selected><object id = o1/></selected><event><mousedrag from =10,10 to =5,5/></event>
マニピュレーションフィルタ３６０により適用される変換の効果は、
<object id =o1><shape><circle x = 10,y = 10,r=2/></shape></object>
から元のオブジェクトデータを
<object id = o1><shape><circle x=5,y= 5,r = 2/></shape></object>
に変更するというものである。
【０１４８】
ユーザは、セーブボタン３５２を選択することにより、ファイルシステム３４８中のファイルを編集済みデータによって更新することを選択しても良い。
これにより、選択サブフィルタ３６４、マニピュレーションフィルタ３６０及びセーバサブフィルタ３４４を介して逆方向の制御オブジェクトの流れを使用してデータを編集できる。
【０１４９】
図３９に示すように、アンドゥーフィルタ３９０を含むように図３６のフィルタシーケンスを変形しても良い。アンドゥーフィルタ３９０は、制御チャネル３２１を介して逆方向に受信された編集指令を格納する内部状態３９１を含む。図４０に示す、これに対応するグラフィカルユーザインタフェースは、アンドゥーボタン４０１と、リドゥーボタン４０２とを含むアンドゥーフィルタボックス４００を含む。ユーザがアンドゥーボタン４０１を選択するのに応答して、アンドゥーフィルタ３９０は編集無効指令を生成し、この指令は逆方向にマニピュレーションフィルタ３６０へ出力される。マニピュレーションフィルタ３６０は、線図が先に受信された編集指令以前の形態に戻るように編集打ち消しを実現する。
【０１５０】
ユーザがリドゥーボタン４０２を選択するのに応答して、アンドゥーフィルタ３９０は先に実行されなかった編集指令に対応する編集指令を生成し、その指令をマニピュレーションフィルタ３６０へ出力する。そこで、マニピュレーションフィルタ３６０は編集を再実行するために必要な変換を実行する。
【０１５１】
テキスト捕捉サブフィルタ３４６から編集指令を受信し、適切な編集無効指令を逆方向にフォーマッティングフィルタ３４２へ出力するように、対応するアンドゥーフィルタを図３４のワード処理アプリケーションのフィルタシーケンスに挿入することが可能である。
【０１５２】
別の実施形態においては、例えば、アンドゥー機能が単にメモリから未編集バージョンを検索することだけを要求するように、編集の前後でそのたびに完全状態を格納することによりアンドゥー機能とリドゥー機能を実現する。
【０１５３】
［フィルタの実現］
以上説明したようなフィルタを使用してアプリケーションを作成する方法はいくつかの異なる方法で実現できるであろうが、現時点で好ましい態様においては、ＸＭＬ要素により表現されるデータオブジェクト、制御オブジェクト及び制御事象と共にJavaインプリメンテーリョンを利用している。このインプリメンテーリョンでは、フィルタは、各々がＸＭＬストリームからＸＭＬ要素を読み取り、別のＸＭＬストリームにＸＭＬ要素を書き込むJavaオブジェクトになる。
【０１５４】
システムは、低レベルでは、パーサと、アプリケーションプログラミングインタフェースとを含むＸＭＬプロセッサの形態をとるカーネルにより実現される。パーサは、ＸＭＬ要素がフィルタが作用しうる要素であるか否かを各フィルタが判定できるようにすると共に、各フィルタが必要なデータを抽出できるようにするために、各フィルタにより要求される。
【０１５５】
より高いレベルでは、入力ストリームと出力ストリームが定義され、通常は入力と出力を処理するためにいくつかのストリームが必要とされる。
【０１５６】
ストリームを作成し、それにフィルタを適用し、フィルタのシーケンスの出力を出力装置に結合するなどのタスクはカーネルの責務である。また、カーネルは、利用可能な入力ファイルシステムがどのようなものであっても、そこからのＸＭＬ要素の一貫したストリームを維持する働きもする。一貫したストリームとは、例えば、ＸＭＬ要素のストリームにより表現されるＸＭＬ文書の場合のように、セッション間で状態を保持するストリームである。標準型パーソナルコンピュータの場合、システムにより提供されるストリームはマウス状態（位置及びボタン）と、キーボードストリームと、システムクロックストリームと、ネットワークソケットを介してシステムに入力するデータなどの他のデータストリームとを含む。
【０１５７】
上記の入力ストリームは、ディスプレイストリームと、音声出力ストリームと、ネットワークソケットを介してシステムから出力されるデータのデータストリームとを含む出力ストリームにより相補される。
【０１５８】
以上説明した実施形態は従来のパーソナルコンピュータを使用して、ハードウェアの変形なく実現できる。Javaを使用して実現される好ましい実施形態は、Javaプログラムをコンパイルすることにより得られるバイトコードを解釈し且つ実行するためにJavaプログラム及びJava仮想機械により使用するためのJavaクラスを定義するJavaプラットフォームをパーソナルコンピュータにロードすることを必要とする。例えば、ストリング整合に使用されるユーティリティなどの表現ユーティリティを含む正規表現ライブラリに加えて、システムは、パーサ、及びユーザインタフェース要素を処理するためのソフトウェアモジュールを含むＵＩＭＬ（ユーザインタフェースマークアップ言語）ライブラリなどのユーティリティを含むＸＭＬライブラリを必要とする。
【０１５９】
システムの開発者は、表示領域が提示されるウィンドウを定義するフレームコンポーネントなどの１組のJavaユーザインタフェースコンポーネント、フィルタセレクタウィンドウ２５に表示される利用可能フィルタのパレットを作成するための初期設定オブジェクト、及び動作環境４内部のフィルタのシーケンスにフィルタを導入するためのハンドリングソフトウェアを作成しなければならない。また、シーケンス中のフィルタを所要の方法で動作接続するためのソフトウェアを開発しなければならない。これは、動作環境の一部を形成する事象ハンドリングソフトウェアにより実現されるのが好ましい。例えば、シーケンス中の所定の１つのフィルタについて、そのフィルタの出力は出力すべきデータオブジェクトと、動作環境の事象ハンドリングソフトウェアにより検出される事象を生成するための事象開始ソフトウェアを含むバッファに相当する。シーケンス中の次のフィルタはバッファ内容を受け入れることによりそのような事象に応答する。
【０１６０】
フィルタディスプレイウィンドウ２３にフィルタボックス２４が表示される方式を定義するために、対応するデータ構造が存在している。このデータ構造は、フィルタディスプレイウィンドウ２３の表示を更新するためにデータ構造がユーザにより更新されるたびにパージングされるツリーの形態をとる。このデータ構造の変更は、動作環境のデータ構造の対応するツリーにおける変化に反映される。その結果、フィルタの動作接続にも変更が起こる。先に説明した通り、ユーザインタフェースとしての各フィルタボックスの実際の内容は、フィルタ自体により作成されるユーザインタフェースオブジェクトによって定義される。
【０１６１】
システムのエンドユーザは言うまでもなくJava又はプログラミングの知識を必要とせず、システムは従来のデスクトップコンピュータと組み合わせて使用するためのソフトウェアパッケージとして販売されると考えられる。このソフトウェアパッケージは、例えば、システムコントローラ１と、動作環境４と、基本フィルタライブラリ５とを定義するシステムソフトウェアであっても良い。この場合、例えば、グラフィックデザイン、デスクトップ出版、音声視覚マスタリング、文書アーカイブの格納及び検索、データベース検索及びインターネット検索等の新たな問題に対処するようにシステムの能力を拡張する目的のために、ライブラリに追加すべき追加フィルタがユーザに提供されることになるであろう。
【０１６２】
フィルタは入れ換えや、再利用が可能なように設計されているため、フィルタのライブラリの追加、削除により既存のフィルタと更新用の新たなフィルタとの交換は容易に行えるであろう。
【０１６３】
次に、上述のフィルタに加えてライブラリに含めることができるフィルタの例を挙げる。
【０１６４】
フォルダフィルタは、１組のデータオブジェクトを個別のアイコンとして表示領域に表示するのではなく、１つのフォルダアイコンが現れるように、データオブジェクトを１つのフォルダにまとめるために使用されても良い。マウスとカーソルを使用してフォルダアイコンを選択することにより、個々のデータオブジェクトをアクセスし、表示させることができる。
【０１６５】
クロックフィルタはシステムフィルタの一例である。フィルタシーケンスに挿入されると、クロックフィルタは表示領域に時刻を表示する。このフィルタは、クロックを更新するために要求される、絶えず変化しているＸＭＬデータのストリームに応答する。
【０１６６】
リビジョンフィルタは、数人のユーザの間で共用されているシステムにおいて、ユーザが処理中の文書の変更を行う場合に使用されても良い。リビジョンフィルタは他のユーザが行った変更を異なる色で表示させる。
【０１６７】
バージョンコントロールフィルタは文書処理に使用される。バージョンコントロールフィルタをフィルタシーケンスに挿入すると、バージョン追跡を可能にする属性を含むようにデータオブジェクトを修正することができる。また、バージョンコントロールフィルタは、先に修正されたバージョンを必要に応じて検索できるように、文書の各バージョンを保持しておく。
【０１６８】
読み取り専用フィルタは、後にデータオブジェクトの定義済みフィールドの編集を阻止するようなデータオブジェクトの属性を定義するためにフィルタシーケンスに挿入される。
【０１６９】
暗号化フィルタ及び暗号解読フィルタも使用できる。遠隔場所へ送信すべき文書を作成する場合、データオブジェクトを暗号化するために暗号化フィルタをフィルタシーケンスに挿入すれば良い。遠隔場所では、データオブジェクトを解読するために暗号解読フィルタを含むフィルタシーケンスを具備するアプリケーションを使用して、受信したデータを処理する。
【０１７０】
画像処理フィルタは、画像から成るデータオブジェクトに様々な種類の画像処理を適用するために利用される。
【０１７１】
画面セーバフィルタは、所定の期間にわたるアクティビティの欠落を検出し、画面に表示されるべきアニメーションの形態をとる画面セーブを生成することによりこれに応答するために、ディスプレイフィルタに近接してフィルタシーケンスに挿入される。このフィルタはアクティビティの検出に応答して、画面セーバを停止し、データ表示に戻る。
【０１７２】
選択されたデータオブジェクトを印刷できるようにするためにプリントフィルタを設けても良い。
【０１７３】
ユーザがアプリケーションに含めるためにライブラリから選択できるフィルタの数に制限はない。その時点で処理中であるデータオブジェクトの種類に現実に適合しないフィルタがあっても、フィルタはこの事象において本質的には透明であるように構成されているため、そのこと自体は問題ではない。例えば、その時点で画像データを含まない文書を処理しているアプリケーションに画像処理フィルタが含まれていた場合でも、データオブジェクトは何の影響も受けずに画像処理フィルタを通過するだけであろう。これは、何らかのアクションが可能であるか又は適切であるかを判定するために、フィルタがデータオブジェクトのメタデータをパージングするからである。
【０１７４】
上述の例は、情報が視覚表示されるグラフィカルユーザインタフェースの形態をとるユーザインタフェースに関する。情報の音声視覚提示又は純粋な音声提示を含めた他の形態のユーザインタフェースも可能である。
【０１７５】
以上説明したように、本発明は、上述の方法を実行すべくプロセッサを制御するためのプロセッサ実現可能な命令の形態をとるコンピュータプログラムを提供されるコンピュータを使用して実現できる。そのようなプログラムは記憶媒体に格納されれば良く、従って、本発明の１つの面は、上述の方法のいずれか１つ又はその組み合わせを実行すべくプロセッサを制御するためのプロセッサ実現可能な命令を格納する記憶媒体を提供する。
【０１７６】
コンピュータプログラムは、例えば、インターネットなどのネットワークを介してコードをダウンロードすることにより電子形態で獲得されても良い。このため、本発明の別の面によれば、上述の方法のいずれか１つ又はその組み合わせを実行すべくプロセッサを制御するためのプロセッサ実現可能な命令を搬送する電気信号が提供される。
【０１７７】
本発明のシステム及び方法を動作させることにより得られるアプリケーションも同様に記憶媒体に格納されるか、又は電子信号として通信されても良い。従って、そのようなアプリケーションがプロセッサ実現可能な命令、記憶媒体に格納された命令又は電子信号として通信される命令の形態をとるとき、それは本発明の別の面を構成する。
【０１７８】
上述の方法のいずれか１つを実行するためのアルゴリズムの格納又は送信のためのキャリアは、例えば、この目的のための論理を定義するハードワイヤード回路を含めて、本発明の１つの面を構成すると考えられる。
【０１７９】
以上説明したシステム及び方法は、フィルタのシーケンスが分岐を含まないノードの直線的シーケンスを定義する実施形態に関する。本発明の範囲内で、フィルタのシーケンスが分割し、再び組み合わされて、並列処理構造又はより複雑な処理構造を形成する複数の分岐を伴うツリー構造に対応するような別の実施形態も考えられる。そのような構造は、例えば、双方向フィルタ、ユーザインタフェース制御オブジェクトにより制御されるユーザインタフェース、及びユーザがシステムを開発、使用するのを補助するためのヘルプオブジェクト発生器を有するという特徴を含むであろう。
【０１８０】
付録１
0004306991.tif 000002
付録２
0004306991.tif 000003
付録３
0004306991.tif 000004
付録４
0004306991.tif 000005
付録４の続き
0004306991.tif 000006
付録５
0004306991.tif 000007
付録５の続き
0004306991.tif 000008
付録６
0004306991.tif 000009
付録７
0004306991.tif 000010
【図面の簡単な説明】
【図１】システムの基本構造を示す概略図である。
【図２】図１のシステムのグラフィカルユーザインタフェースの表示画面を示す図である。
【図３】データベースを検索するためのインターネットを介するシステムの接続を示す図である。
【図４】図２の表示画面のフィルタセレクタウィンドウの概略図である。
【図５】図３のデータベースから特許文書を検索する例において使用されるグラフィカルユーザインタフェースの概略図である。
【図６】図３から図５の例で使用されるフィルタ構成から形成されるアプリケーションの概略図である。
【図７Ａ】検索できる属性のメニューを示すｇｒｅｐフィルタボックスの図である。
【図７Ｂ】検索に際して特定の属性を選択した後の図７Ａのｇｒｅｐフィルタボックスを示す図７Ａに対応する図である。
【図８】データ要素の集合体を処理するためのフィルタの選択の一例を示す図である。
【図９】フィルタシーケンスの概略図である。
【図１０】図９のフィルタシーケンスに対応するフィルタディスプレイウィンドウを示す図である。
【図１１】別のフィルタシーケンスを示す図である。
【図１２】図１１のフィルタシーケンスに対応するフィルタディスプレイウィンドウを示す図である。
【図１３】ツールバーフィルタを含むフィルタシーケンスの別の例を示す図である。
【図１４】図１３のフィルタシーケンスに対応するフィルタディスプレイウィンドウを示す図である。
【図１５】ツールバーフィルタボックスを見えなくするように制約した後の図１３のフィルタシーケンスに対応するフィルタディスプレイウィンドウを示す図である。
【図１６】「データコントロール追加」フィルタを含む別のフィルタシーケンスを示す図である。
【図１７】フィルタディスプレイウィンドウ及び図１６のフィルタシーケンスに対応するデータディスプレイウィンドウの一部を示す図である。
【図１８】ポータブルコンピュータ装置にダウンロードされるアプリケーションの概略図である。
【図１９】プリンタ制御アプリケーションの場合のフィルタシーケンスを示す図である。
【図２０】プリンタユーザインタフェースに対するアプリケーションを開発するために使用されるグラフィカルユーザインタフェースを示す図である。
【図２１】白黒プリンタの場合のプリンタユーザインタフェースを示す図である。
【図２２】カラープリンタの場合のユーザインタフェースを示す図である。
【図２３】ファクシミリ装置の場合のユーザインタフェースを示す図である。
【図２４】ヘルプフィルタを含むフィルタシーケンスを示す図である。
【図２５】図２４のフィルタシーケンスに対応するフィルタディスプレイウィンドウを示す図である。
【図２６】ヘルプボタンを選択した場合のデータ表示を示す図である。
【図２７】ヘルプ文書を示す図である。
【図２８】ＡＬＬボタンを選択したときのデータ表示を示す図である。
【図２９】適応ヘルプフィルタを含むフィルタシーケンスを示す図である。
【図３０】トレースフィルタを含むフィルタシーケンスを示す図である。
【図３１】図３０のトレースフィルタの出力に対応するデータ表示を示す図である。
【図３２】双方向フィルタの概略図である。
【図３３】図３２のフィルタのサブフィルタ構造の概略図である。
【図３４】双方向フィルタを含むフィルタシーケンスを示す図である。
【図３５】ワード処理アプリケーションに対するグラフィカルユーザインタフェースを示す図である。
【図３６】線図を編集するためのアプリケーションに対するフィルタシーケンスを示す図である。
【図３７】図３６の線図編集アプリケーションに対するグラフィカルユーザインタフェースを示す図である。
【図３８Ａ】線図編集操作のオブジェクト選択の時点における表示領域を示す図である。
【図３８Ｂ】選択ハンドルを示す、選択後の図３８Ａの表示領域を示す図である。
【図３８Ｃ】選択されたオブジェクトの移動後の図３８Ａ及び図３８Ｂの表示領域を示す図である。
【図３９】アンドゥーフィルタを有する線図編集アプリケーションに対するフィルタシーケンスを示す図である。
【図４０】図３９の線図編集アプリケーションに対するグラフィカルユーザインタフェースを示す図である。
【図４１】コンピュータ装置を示す図である。
【図１】
0004306991.tif 000011
【図２】
0004306991.tif 000012
【図３】
0004306991.tif 000013
【図４】
0004306991.tif 000014
【図５】
0004306991.tif 000015
【図６】
0004306991.tif 000016
【図７Ａ】
0004306991.tif 000017
【図７Ｂ】
0004306991.tif 000018
【図８】
0004306991.tif 000019
【図９】
0004306991.tif 000020
【図１０】
0004306991.tif 000021
【図１１】
0004306991.tif 000022
【図１２】
0004306991.tif 000023
【図１３】
0004306991.tif 000024
【図１４】
0004306991.tif 000025
【図１５】
0004306991.tif 000026
【図１６】
0004306991.tif 000027
【図１７】
0004306991.tif 000028
【図１８】
0004306991.tif 000029
【図１９】
0004306991.tif 000030
【図２０】
0004306991.tif 000031
【図２１】
0004306991.tif 000032
【図２２】
0004306991.tif 000033
【図２３】
0004306991.tif 000034
【図２４】
0004306991.tif 000035
【図２５】
0004306991.tif 000036
【図２６】
0004306991.tif 000037
【図２７】
0004306991.tif 000038
【図２８】
0004306991.tif 000039
【図２９】
0004306991.tif 000040
【図３０】
0004306991.tif 000041
【図３１】
0004306991.tif 000042
【図３２】
0004306991.tif 000043
【図３３】
0004306991.tif 000044
【図３４】
0004306991.tif 000045
【図３５】
0004306991.tif 000046
【図３６】
0004306991.tif 000047
【図３７】
0004306991.tif 000048
【図３８Ａ】
0004306991.tif 000049
【図３８Ｂ】
0004306991.tif 000050
【図３８Ｃ】
0004306991.tif 000051
【図３９】
0004306991.tif 000052
【図４０】
0004306991.tif 000053
【図４１】
0004306991.tif 000054