(57)【要約】【課題】  本発明は、印刷用データを生成する情報処理装置において、複数のデータ変換処理それぞれを行う各プロセスの間の通信を適切に行うことを目的とする。【解決手段】  本発明は、入力データに対して複数のデータ変換処理を行い、印刷用のデータを生成する情報処理装置において、第一のプロセスで前記複数のデータ変換処理に含まれる第一のデータ変換処理を行い、中間処理データを生成する第一の変換処理手段と、前記中間処理データに対して、前記第一のプロセスと異なる第二のプロセスで前記複数のデータ変換処理に含まれる第二のデータ変換処理を行う第二の変換処理手段と、前記第一のプロセスのデータ出力可能な形式と前記第二のプロセスのデータ入力可能な形式とに基づき、前記第一のプロセスから前記第二のプロセスへ前記中間処理データを送信するための送信方式を設定する設定手段と、を有することを特徴とする。【選択図】  図８
2015125739.tif 000002
【特許請求の範囲】
【請求項１】
入力データに対して複数のデータ変換処理を行い、印刷用のデータを生成する情報処理装置において、
第一のプロセスで前記複数のデータ変換処理に含まれる第一のデータ変換処理を行い、中間処理データを生成する第一の変換処理手段と、
前記中間処理データに対して、前記第一のプロセスと異なる第二のプロセスで前記複数のデータ変換処理に含まれる第二のデータ変換処理を行う第二の変換処理手段と、
前記第一のプロセスのデータの出力可能な形式と前記第二のプロセスのデータ入力可能な形式とに基づき、前記第一のプロセスから前記第二のプロセスへ前記中間処理データを送信するための送信方式を設定する設定手段と、を有することを特徴とする情報処理装置。
【請求項２】
前記第一のプロセスのデータ出力可能な形式と前記第二のプロセスのデータ入力可能な形式との少なくともいずれか一方が、パス通信のみであるか否かを判断する判断手段と、を更に有し
前記設定手段は、前記判断手段によりパス通信のみであると判断された場合、
前記第一のプロセスから前記第二のプロセスへ前記中間処理データを送信するための送信方式をパス通信にする
ことを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記第一のプロセスのデータ出力可能な形式と前記第二のプロセスのデータ入力可能な形式との両方に、データ通信が含まれるか否かを判断する判断手段と、を更に有し
前記設定手段は、前記判断手段によりデータ通信が含まれると判断された場合、前記第一のプロセスから前記第二のプロセスへ前記中間処理データを送信するための送信方式をデータ通信にすることを特徴とする請求項１に記載の情報処理装置。
【請求項４】
前記第一のプロセスのデータ出力可能な形式と前記第二のプロセスのデータ入力可能な形式とを示す入出力情報を保持する保持手段を更に有し、
前記設定手段は、前記保持手段から前記入出力情報を取得し、当該入出力情報に基づき、前記送信方式を設定することを特徴とする請求項１乃至３のいずれか１項に記載の情報処理装置。
【請求項５】
前記入出力情報は、ＸＭＬ（Ｅｘｔｅｎｓｉｂｌｅ  Ｍａｒｋｕｐ  Ｌａｎｇｕａｇｅ）形式で記述されていることを特徴とする請求項４に記載の情報処理装置。
【請求項６】
前記複数のデータ変換処理を管理する管理手段を更に有し、
前記設定手段は、前記管理手段から、前記第一のプロセスのデータ出力可能な形式と前記第二のプロセスのデータ入力可能な形式とを示す入出力情報を取得し、当該入出力情報に基づき、前記送信方式を設定することを特徴とする請求項１乃至３のいずれか１項に記載の情報処理装置。
【請求項７】
前記複数のデータ変換処理の初段のデータ変換を行うプロセスの入力可能な形式に基づき、前記入力データが保存されている保存先を移動する移動手段を更に有することを特徴とする請求項１乃至６のいずれか１項に記載の情報処理装置。
【請求項８】
前記設定手段は、主記憶装置の残容量が所定値以下であるか否か判断し、当該判断の結果に基づき、前記データ送信方式を決定することを特徴とする請求項１乃至７のいずれか１項に記載の情報処理装置。
【請求項９】
前記設定手段は、外部記憶装置の残容量が所定値以下であるか否かを判断し、当該判断の結果に基づき、前記データ送信方式を決定することを特徴とする請求項１乃至８のいずれか１項に記載の情報処理装置。
【請求項１０】
入力データに対して複数のデータ変換処理を行い、印刷用のデータを生成する情報処理方法において、
第一の変換処理手段が、第一のプロセスで前記複数のデータ変換処理に含まれる第一のデータ変換処理を行い、中間処理データを生成する第一の変換処理工程と、
第二の変換処理手段が、前記中間処理データに対して、前記第一のプロセスと異なる第二のプロセスで前記複数のデータ変換処理に含まれる第二のデータ変換処理を行う第二の変換処理工程と、
設定手段が、前記第一のプロセスのデータ出力可能な形式と前記第二のプロセスのデータ入力可能な形式とに基づき、前記第一のプロセスから前記第二のプロセスへ前記中間処理データを送信するための送信方式を設定する設定工程と、を有することを特徴とする情報処理方法
【請求項１１】
コンピュータを、入力データに対して複数のデータ変換処理を行い、印刷用のデータを生成する情報処理装置であって、
第一のプロセスで前記複数のデータ変換処理に含まれる第一のデータ変換処理を行い、中間処理データを生成する第一の変換処理手段と、
前記中間処理データに対して、前記第一のプロセスと異なる第二のプロセスで前記複数のデータ変換処理に含まれる第二のデータ変換処理を行う第二の変換処理手段と、
前記第一のプロセスのデータ出力可能な形式と前記第二のプロセスのデータ入力可能な形式とに基づき、前記第一のプロセスから前記第二のプロセスへ前記中間処理データを送信するための送信方式を設定する設定手段と、を有することを特徴とする情報処理装置として機能させるためのコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、入力データに対して複数のデータ変換処理をするための情報処理装置、情報処理方法およびプログラムに関する。
【背景技術】
【０００２】
ユーザ端末（クライアント）からのリクエストに基づいてＷｅｂサービス（サーバー）が印刷データを生成し、その印刷データをプリンタが受信し、印刷を実行する「クラウドプリントサービス」と呼ばれるＷｅｂサービスが登場してきている。クラウドプリントサービスは、ユーザ端末にプリンタ制御用のデバイスドライバプログラム（プリンタードライバー）をインストールする必要がなく、また、自分の要求する印刷がどこからでも依頼できるため、今後さらなる広がりを見せると考えられる。
【０００３】
クラウドプリントサービスを実現するためには、クラウド上で、印刷対象のドキュメントデータから各種プリンタに対応する印刷データへのデータ変換が必要となってくる。そこで、印刷対象ドキュメントデータから印刷データへ変換するアプリケーション（以降、データ変換アプリケーションと呼称する）をクラウド上のサーバに配置する。そして、データ変換アプリケーションによって印刷するプリンタに対応した印刷データに変換する方式がある。一般的に、このような方式では、入力データに対して複数種類のデータ変換を行い、プリンタに出力するための印刷データを取得する。各複数種のデータ変換は個別のプロセスで処理されるため、中間処理データをプロセス間で送受信するために、プロセス間通信を利用することが考えられる。
【０００４】
プロセス間通信に注目した先行技術文献として、特許文献１には、送信先プロセスが処理できる入力形式をプロセステーブルで管理して、送信元プロセスでは当該テーブルに記載された形式でデータを送信する手法が開示されている。
【０００５】
また、特許文献２では、送信元プロセスにおいて、送信対象のデータを保持している場所に基づいて、プロセス間のデータ送信方法を切り替える手法が開示されている。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開平１１−６５７９５号公報
【特許文献２】特開平６−１２９９９８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかしながら、いずれの先行技術文献に開示されている技術においても、多様なプロセスによるプロセス間通信を想定していない。すなわち、データ送信元のプロセスの出力可能形式とデータ送信先のプロセスの取得可能形式との両方を考慮して、プロセス間の通信方法を設定することは開示されていない。
【０００８】
すなわち、複数のデータ変換を行うデータ変換アプリケーションにおいては、上記両方の形式を考慮しないと、適切に中間処理データの送受信ができないなどの不具合が生じる可能性がある。
本発明は、上記課題を鑑みてなされたものであり、入力データに対して複数のデータ変換処理を行い、印刷用データを生成する情報処理装置において、複数のデータ変換処理それぞれを行う各プロセスの間の通信を適切に行うことを目的とする。
【課題を解決するための手段】
【０００９】
上記課題を解決するために、本発明は、
入力データに対して複数のデータ変換処理を行い、印刷用のデータを生成する情報処理装置において、第一のプロセスで前記複数のデータ変換処理に含まれる第一のデータ変換処理を行い、中間処理データを生成する第一の変換処理手段と、前記中間処理データに対して、前記第一のプロセスと異なる第二のプロセスで前記複数のデータ変換処理に含まれる第二のデータ変換処理を行う第二の変換処理手段と、前記第一のプロセスのデータ出力可能な形式と前記第二のプロセスのデータ入力可能な形式とに基づき、前記第一のプロセスから前記第二のプロセスへ前記中間処理データを送信するための送信方式を設定する設定手段と、を有することを特徴とする。
【発明の効果】
【００１０】
本発明によれば、入力データに対して複数のデータ変換処理を行い、印刷用データを生成する情報処理装置において、複数のデータ変換処理それぞれを行う各プロセスの間の通信を適切に行うことが出来る。
【図面の簡単な説明】
【００１１】
【図１】第一の実施例における印刷システムの構成例を示す図である。
【図２】第一の実施例におけるコンピュータ装置の構成例を示す図である。
【図３】第一の実施例におけるデータ変換アプリケーションを構成するコンポーネントの構成例である。
【図４】第一の実施例におけるフィルタ管理部間におけるプロセス間データ送信の概念を示す図である。
【図５】第一の実施例におけるフィルタ管理部間におけるプロセス間データ送信方法を示す図である。
【図６】第一の実施例におけるジョブ実行処理を表すフローチャートである。
【図７】第一の実施例におけるフィルタ構成情報の一例を示す図である。
【図８】第一の実施例におけるプロセス間データ送信方法決定処理を表すフローチャートである。
【図９】第一の実施例におけるフィルタ入出力情報の一例を示す図である。
【図１０】第一の実施例におけるジョブデータを初段フィルタ管理部に送信する処理を表すフローチャートである。
【図１１】第一の実施例におけるデータ変換処理の詳細を表すフローチャートである。
【図１２】第一の実施例における変換済データを出力する処理を表すフローチャートである。
【図１３】第二の実施例におけるプロセス間データ送信方法決定処理の詳細を表すフローチャートである。
【図１４】第三の実施例におけるメモリフル状態時におけるプロセス間データ送信の決定方法を示す図である。
【図１５】第三の実施例におけるディスクフル状態時におけるプロセス間データ送信の決定方法を示す図である。
【発明を実施するための形態】
【００１２】
（第一の実施例）
図１は、本実施例に係る印刷システム（情報処理装置）の構成例を示す模式図である。
【００１３】
この印刷システムは、クライアントＰＣ１０２、プリントサービスサーバ１０３、データ変換サービスサーバ１０４、プリンタ１０５を有し、それらがネットワーク１０１を介して接続されている。
【００１４】
クライアントＰＣ１０２は、Ｗｅｂブラウザを用いてプリントサービスサーバ１０３にアクセスし、プリントサービスサーバ１０３に格納されているドキュメントの印刷指示を送信する。印刷指示の際に、印刷対象のドキュメントファイルと、チケットと、印刷に使用するプリンタとを指定する。ここでチケットとは、印刷対象ドキュメントを印刷データに変換する際の設定が記述されているファイルである。
【００１５】
プリントサービスサーバ１０３ではＷｅｂアプリケーションが動作しており、クライアントＰＣ１０２の印刷要求に応じて、データ変換サービスサーバ１０４にデータ変換を依頼（データ変換要求を発行）する。なお、印刷要求の情報にはドキュメントファイルを識別する情報と、チケットと、ジョブに基づいて印刷を実行するプリンタを示す指定情報とを含む。また、データ変換要求の情報は変換対象のドキュメントファイルとチケットとプリンタの指定とを含む。次に、データ変換サービスサーバ１０４からデータ変換後の印刷データ（ＰＤＬとプリンタ制御情報）を受信し、プリンタ１０５に印刷を指示する。なお、ＰＤＬとはＰａｇｅ  Ｄｅｓｃｒｉｐｔｉｏｎ  Ｌａｎｇｕａｇｅの略である。
【００１６】
本実施例ではＰＤＬ形式で記述されているファイルのことを単にＰＤＬとする。
【００１７】
データ変換サービスサーバ１０４は、データ変換アプリケーションが動作するサーバである。プリントサービスサーバ１０３からのデータ変換要求を受信し、このデータ変換要求に含まれる変換対象のドキュメントファイル（入力データ）を、指定されているプリンタに適する印刷データへ変換する。そして、プリントサービスサーバ１０３に変換した印刷データとチケット（変換結果の要約なども含む）とを送信する。
【００１８】
プリンタ１０５はプリントサービスサーバ１０３からの印刷指示（データ変換後の印刷データの格納場所の情報を含む）を受信する。印刷指示に応じて、印刷データをプリントサービスサーバ１０３から取得し、印刷を行う。
【００１９】
以上が図１に示す構成例に基づいた本印刷システムの概略である。ただし、本実施例の機能は、図１の構成に限らず適用できる。例えば、クライアントＰＣ１０２、プリントサービスサーバ１０３、データ変換サービスサーバ１０４は同一コンピュータであっても良い。また、プリントサービスサーバ１０３とデータ変換サービスサーバ１０４が同一のコンピュータであってもよい。
【００２０】
次に、本実施例に係るコンピュータ装置の構成を説明する。
本実施例に係るコンピュータ装置とは、クライアントＰＣ１０２、プリントサービスサーバ１０３、データ変換サービスサーバ１０４などである。
【００２１】
図２は、本実施例におけるクライアントＰＣ１０２、プリントサービスサーバ１０３、データ変換サービスサーバ１０４の構成の一例を示すブロック図である。なお、クライアントＰＣ１０２、プリントサービスサーバ１０３、データ変換サービスサーバ１０４は必ずしも同一の構成である必要はない。
【００２２】
（ハードウェア構成）
ＣＰＵ２０１は、ＲＡＭ２０２に格納されている制御プログラムに従って本装置全体の制御を行うＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）である。ＲＡＭ２０２はＣＰＵ２０１が実行するプログラムや、文書画像等のデータを格納する主記憶装置であり、揮発性のＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）メモリである。ネットワークインタフェース２０３は、ＣＰＵ２０１の制御の下にネットワークとの接続を行なってデータ等を送受信するネットワークインタフェースである。外部記憶装置２０４は処理対象のデータやＲＡＭ２０２に展開するためのプログラムを保存する磁気ディスクやフラッシュメモリ等の外部記憶装置であり、不揮発性のメモリである。ディスプレイ２０５は、本装置の処理結果などを表示するディスプレイである。キーボード２０６は、本装置に対してユーザが指示および操作するためのキーボードである。ポインティングデバイス２０７は、本装置に対してユーザが指示および操作を行うためのマウスなどを含むポインティングデバイスである。ディスプレイ２０５に表示する内容について、ユーザはキーボード２０６や、ポインティングデバイス２０７を用いて操作できる。なお、プリントサービスサーバ１０３やデータ変換サービスサーバ１０４については、以下の場合には、ディスプレイ２０５やキーボード２０６やポインティングデバイス２０７は不要になる。すなわち、ネットワーク１０１を介して外部装置から操作したり、ネットワーク１０１を介して取得した情報を他の情報機器のディスプレイによって表示を確認できたりする場合である。
【００２３】
ＲＡＭ２０２に格納されているプログラムを実行するＣＰＵ２０１は、ＲＡＭ２０２に格納されているＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）の機能の一部を必要に応じて呼び出して使用する。また、ＲＡＭ２０２に格納されているコンピュータプログラムに基づいて、ＣＰＵ２０１は、ＲＡＭ２０２に一時記憶するデータの内容の読み書きを行なったり、外部記憶装置２０４に対するデータの読み書きを行なったりする。さらに、ＲＡＭ２０２に格納されているコンピュータプログラムに基づき、ＣＰＵ２０１は、ネットワークインタフェース２０３を通じて他の装置とデータの送受信を行なうことも可能である。また、ＲＡＭ２０２に格納されているプログラムに基づいて、ＣＰＵ２０１は、キーボード２０６やポインティングデバイス２０７からの入力を受け取ったり、ディスプレイ２０５に表示を行なったりする。
【００２４】
（ソフトウェア構成）
クラウドプリントサービスでは、２４時間３６５日に渡ってサービスを提供する必要がある。そのため、クラウドプリントサービスにおいて利用されるデータ変換アプリケーションには、高可用性を要求される。高可用性を実現する方法として、データ変換アプリケーションを構成する各コンポーネントをそれぞれ異なるプロセスとして起動する方法がある。この方法では、データ変換アプリケーションを構成するいずれかのコンポーネントが異常終了した場合であっても、他のコンポーネントが巻き込まれて異常終了する可能性が低く、高可用性を実現することが出来る。尚、ここで、プロセスとは、ＯＳの制御単位を示す。
【００２５】
図３は、本実施例におけるデータ変換サービスサーバ１０４上で動作するアプリケーションであるデータ変換アプリケーション３０２の構成例である。データ変換サービスシステム３０１およびデータ変換アプリケーション３０２を構成する各コンポーネントは、データ変換サービスサーバ１０４のＣＰＵ２０１がＲＡＭ２０２のプログラムコードを実行することによって実現される。
【００２６】
データ変換アプリケーション３０２は、データ変換サービスサーバ１０４で動作するデータ変換サービスシステム３０１によって利用される。データ変換アプリケーション３０２は、データ変換サービスシステム３０１とのインターフェースとして、ジョブ処理受付部３０３を提供する。ジョブ処理受付部３０３はデータ変換サービスシステム３０１が動作するプロセスに組み込まれて動作する。
【００２７】
データ変換アプリケーション３０２では、データ変換を行うために、１つ以上のデータ変換モジュールをジョブに基づいて決定される順序で使用する。以下の説明では、データ変換モジュール（データ変換部、データ処理部）のことを、フィルタとする。ここで、本実施例で提供するフィルタは、例えばＪＰＥＧ形式の画像データをＰＤＦ形式（Ｐｏｒｔａｂｌｅ  Ｄｏｃｕｍｅｎｔ  Ｆｏｒｍａｔ）のデータに変換するフィルタや、ＰＤＦ形式のデータを印刷データに変換するフィルタである。すなわち、当該複数のフィルタそれぞれは、入力データに対して複数のデータ変換処理を順次行い、印刷用のデータを得るために用いられる。
【００２８】
データ変換サービスシステム３０１（ジョブ処理受付部３０３を組み込んで動作）と、ジョブ制御部３０４、フィルタ管理部３０５は、それぞれ別のプロセスとして動作している。また、ジョブ処理受付部３０３、ジョブ制御部３０４、フィルタ管理部３０５はデータを送受信するための通信路３０７によって接続されている。通信路３０７はＴＣＰ／ＩＰ（ＴＣＰ：Ｔｒａｎｓｍｉｓｓｉｏｎ  Ｃｏｎｔｒｏｌ  Ｐｒｏｔｏｃｏｌ、ＩＰ：Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ）などの通信プロトコルによって提供される。
【００２９】
ジョブ処理受付部３０３は、データ変換サービスシステム３０１から入力されたジョブを受け付け、通信路３０７を通じてジョブ制御部３０４にジョブ実行の指示をする。本実施例におけるジョブには、データ変換の対象となるドキュメントと、そのドキュメントを印刷データに変換する際の設定が記載されているチケット等のデータから構成される。ジョブ処理受付部３０３の処理の詳細は後述する。
【００３０】
ジョブ制御部３０４は、各データ変換に係るジョブの制御を行うコンポーネントである。
【００３１】
ジョブ制御部３０４は、構成保持部３０８に格納されているフィルタの構成情報に基づいて、データ変換サービスシステム３０１からのジョブを処理するために必要なフィルタ構成を決定する。その後、ジョブ制御部３０４は、フィルタ構成に含まれるフィルタ３０６を管理しているフィルタ管理部３０５に対して、通信路３０７を通じてデータ変換処理の開始を指示する。この際、フィルタ構成に基づきフィルタ管理部３０５に、データ変換結果を出力するプロセスの位置情報を通知する。さらにフィルタ入出力情報保持部３１１から、各フィルタが対応する入出力形式が記述されているフィルタ入出力情報を取得する。その後、このフィルタ入出力情報に基づいて本実施例に係るプロセス間のデータの受け渡し方法を決定する。尚、ジョブ制御部３０４の処理の詳細は後述する。構成保持部３０８は、データ変換サービスサーバ１０４の外部記憶装置２０４やＲＡＭ２０２に設けられていてもよい。
【００３２】
フィルタ管理部３０５は、フィルタ保持部３０９から必要なフィルタに対応するプログラムコードを取得することによって、フィルタ３０６のロードを行う。また、フィルタ管理部３０５は、通信路３０７を通じて処理対象データ（入力データ）を受信した時、そのデータをフィルタ３０６に受け渡し、フィルタ３０６にデータ変換処理を指示する。フィルタ３０６からデータ変換処理後のデータを受け取った後、フィルタ管理部３０５は、ジョブ制御部３０４から位置情報を通知されたプロセスに対して変換処理後のデータを、通信路３０７を通じて送信する。フィルタ管理部３０５の処理の詳細は後述する。なお、フィルタ保持部３０９は、データ変換サービスサーバ１０４の外部記憶装置２０４やＲＡＭ２０２に設けられていてもよい。
【００３３】
一時データ記憶装置３１０は、ジョブ処理受付部３０３、ジョブ制御部３０４、フィルタ管理部３０５、フィルタ３０６が、プロセス間でデータを受け渡す際に一時的にデータを保存するための記憶領域である。
【００３４】
一時データ記憶装置３１０は、データ変換サービスサーバ１０４の外部記憶装置２０４に設けられていてもよい。
【００３５】
（プロセス間データ送信方法（データ送信方式））
プロセス間の処理対象データの受け渡し（以下、プロセス間データ送信とする）方法は、大別して二種類ある。
【００３６】
一つ目の方法は、送信元プロセスから送信先プロセスに対して、ＲＡＭ２０２に格納されているデータを、通信路３０７を通じて送信する方法（以下、データ通信と呼称する）である。送信先プロセスでは、受信したデータをＲＡＭ２０２に保存する。
【００３７】
二つ目の方法は、送信元プロセスでデータをファイル化して一時データ記憶装置３１０に保存後、送信先プロセスに対してデータの参照情報（以降、ファイルパスとする）を、通信路３０７を通じて送信する方法（以降、パス通信とする）である。送信先プロセスでは、受信したファイルパスに基づき、一時データ記憶装置３１０に保存されている処理対象データを取得する。
【００３８】
以上説明した通り、データ通信では通信路３０７を使用してデータを送信し、パス通信では一時データ記憶装置３１０を使用してデータを送信する。一般にデータ通信の方がパス通信よりも高速である。なぜなら、一時データ記憶装置３１０が設けられている外部記憶装置２０４の転送速度に比べて、通信路３０７の転送速度は高速であるためである。なお、パス通信では、ファイルパスを送信する時間が別途発生するが、一時データ記憶装置３１０に対するデータの読み書きにかかる時間よりも十分に小さいため、ここでは言及しない。
【００３９】
（フィルタの入出力形式）
前述の通り、本実施例においては、フィルタを用いたデータ変換を行う。しかしながら、それぞれのフィルタには、フィルタの入出力形式（フィルタ管理部３０５とフィルタ３０６間における処理対象データの入出力形式）が二種類ある。
【００４０】
一つ目の形式は、フィルタ管理部３０５がＲＡＭ２０２に確保したアドレス領域に処理対象データを格納した上で、そのアドレス領域の参照情報をフィルタ３０６に受け渡す形式（以下、メモリ渡しとする）である。
【００４１】
二つ目の形式は、フィルタ管理部３０５が処理対象データを一時データ記憶装置３１０に保存した上で、そのファイルパスを入力する形式（以下、パス渡しとする）である。なお、フィルタ３０６からフィルタ管理部３０５に対して、処理結果を出力する場合についても同様である。
【００４２】
フィルタによっては、対応する入出力形式がメモリ渡しのみ、もしくはパス渡しのみといった制約が存在する場合がある。これは、フィルタを開発する際に外部の既成ライブラリを組み込むことなどに起因する。すなわち、ソフトウェア開発の大規模化に対応するため、フィルタを一から開発せずに、外部の既成ライブラリを組み込んで開発することがあり、そのライブラリの入出力形式に制約が存在する場合があるためである。
【００４３】
（本実施例におけるプロセス間データ送信の決定方法）
本実施例においてはフィルタ（フィルタ管理部）それぞれをプロセスごとに起動する。よって、例えば、第一のフィルタでデータ変換して生成された中間処理データを第二のフィルタでデータ変換するためには、プロセス間データ送信が必要になる。前述の通り、プロセス間データ送信においては、データ通信の方がパス通信よりも高速であるため、基本的にはデータ通信を利用してデータ送信を行えばよい。しかし、フィルタの入出力形式の制約によっては、データ通信よりもパス通信を利用してプロセス間データ送信を行った方がよい場合がある。例えば、第一のフィルタによるデータ変換処理の後に第二のデータ変換処理を行う場合であって、第一のフィルタの出力可能な形式と第二のフィルタの入力可能な形式のいずれかがパス渡しのみである場合である。図４を用いてその詳細を説明する。
【００４４】
図４は、プロセス間データ送信をフィルタ管理部間で行った場合の概念を示す図である。尚、図４は、フィルタＡ４０２を管理するフィルタ管理部Ａ４０１から、フィルタＢ４０４を管理するフィルタ管理部Ｂ４０３に対してプロセス間データ送信を行う場合の例である。
【００４５】
図４（ａ），（ｂ）は、フィルタＢ４０４が対応する入出力形式がパス渡しのみの場合である。図４（ａ）はフィルタ管理部Ａ４０１からフィルタ管理部Ｂ４０３に対して、データ通信を利用してプロセス間データ送信を行った場合である。この場合、フィルタ管理部Ｂ４０３では受信したデータをＲＡＭ２０２に保存するが、フィルタＢ４０４はメモリ渡しによる入力に対応していない。そのため、フィルタ管理部Ｂ４０３がデータをファイル化して、そのファイルパスをフィルタＢ４０４にパス渡しで入力する必要がある。図４（ｂ）はフィルタ管理部Ａ４０１からフィルタ管理部Ｂ４０３に対して、パス通信を利用してプロセス間データ送信を行った場合である。この場合、フィルタ管理部Ａ４０１（もしくはフィルタＡ４０２）でプロセス間データ送信を行う前にデータをファイル化する必要がある。しかし、フィルタＢはパス渡しによる入力に対応しているため、フィルタ管理部Ｂ４０３では受信したファイルパスをそのままフィルタＢ４０４に入力可能である。ここで、プロセス間データ送信にデータ通信を利用した場合と、パス通信を利用した場合を比較すると、一時データ記憶装置３０１に対する読み書きの回数は同じであるが、通信路３０７を通じた通信量はパス通信を利用した場合の方が少ない。よって、フィルタＢ４０４、即ち送信先のフィルタ管理部が管理しているフィルタ（以降、後段フィルタと呼称する）の入出力形式としてパス渡しのみに対応している場合には、データ通信よりもパス通信を利用した方が高速である。
【００４６】
図４（ｃ），（ｄ）は、フィルタＡ４０２が対応する入出力形式がパス渡しのみの場合である。図４（ｃ）は、フィルタ管理部Ａ４０１からフィルタ管理部Ｂ４０３に対して、データ通信を利用してプロセス間データ送信を行った場合である。この場合、フィルタ管理部Ａ４０１でフィルタＡが出力したファイルパスから、一時データ記憶装置３１０に保存されている処理対象データを取得した後、プロセス間データ送信を行う必要がある。図４（ｄ）はフィルタ管理部Ａ４０１からフィルタ管理部Ｂ４０３に対して、パス通信を利用してプロセス間データ送信を行った場合である。この場合、フィルタ管理部４０１はフィルタＡ４０２から出力されたファイルパスを、そのままプロセス間データ送信することができる。但し、フィルタ管理部Ｂ４０３（またはフィルタＢ４０４）では受信したファイルパスから、一時データ記憶装置３１０に保存されている処理対象データを取得する必要がある。ここで、プロセス間データ送信にデータ通信を利用した場合と、パス通信を利用で比較すると、一時データ記憶装置３０１に対する読み書きの回数は同じであるが、通信路３０７を通じた通信量はパス通信を利用した場合の方が少ない。よって、フィルタＡ４０２、即ち送信元のフィルタ管理部が管理しているフィルタ（以降、前段フィルタと呼称する）の入出力形式としてパス渡しのみに対応している場合には、データ通信よりもパス通信を利用した方が高速である。
【００４７】
図５は、本実施例におけるプロセス間データ送信の決定方法を示した図である。基本的にはデータ通信の方がパス通信よりも高速であるため、プロセス間データ送信にはデータ通信を利用する。しかし、図４で説明した通り、前段フィルタが対応する出力形式がパス渡しのみの場合、または後段フィルタが対応する入力形式がパス渡しの場合のみの場合には、データ通信よりパス通信の方が高速にプロセス間データ送信可能であるため、パス通信を利用する。
【００４８】
ここで、プロセス間データ送信の前後でフィルタ管理部３０５にて処理が必要な場合が二通り存在する。一つは、前段フィルタが対応する出力形式がメモリ渡しのみであり、かつ後段フィルタが対応する入力形式がパス渡しのみの場合（５０１）である。この場合、プロセス間データ送信方法はパス通信であるが、前段フィルタからはメモリ渡しでデータが出力される。そこで、前段フィルタを管理するフィルタ管理部では、データをファイル化して一時データ記憶装置３１０に保存した後にパス通信を行う必要がある。もう一つは、前段フィルタが対応する出力形式がパス渡しのみであり、かつ後段フィルタが対応する入力形式がメモリ渡しのみの場合（５０２）である。この場合、プロセス間データ送信方法はパス通信であるが、後段フィルタが対応している入力形式がメモリ渡しのみである。そこで、後段フィルタを管理するフィルタ管理部では、パス通信で受け取ったファイルパスから、一時データ記憶装置３１０にある処理対象データを取得した後、後段フィルタにメモリ渡しでデータを入力する必要がある。
【００４９】
次に、本実施例におけるデータ変換アプリケーションによるジョブ実行処理について説明する。図６はデータ変換アプリケーション３０２が、データ変換サービスシステム３０１からのジョブを実行する手順を示すフローチャートである。各ステップはＣＰＵ２０１がＲＡＭ２０２から各種コンピュータプログラムを読み出し、実行することによって実現される。なお、図６のフローチャートで示す手順を実行する各種コンピュータプログラムはデータ変換サービスサーバ１０４のＲＡＭ２０２に加え、外部記憶装置２０４などを含む記憶部のいずれかに記憶される。
【００５０】
（ステップＳ６０１）ステップＳ６０１はジョブ処理受付部３０３が、データ変換サービスシステム３０１からのジョブを受け付ける処理である。
【００５１】
（ステップＳ６０２）ステップＳ６０２はジョブ処理受付部３０３が、ジョブ制御部３０４に対してジョブ実行を指示する処理である。この際、ジョブ処理受付部３０３はジョブを解析して、ジョブ制御部３０４に対して、ジョブの種類と、ジョブデータの入出力形式の方法を送信する。
【００５２】
（ステップＳ６０３）ステップＳ６０３はジョブ制御部３０４が、ステップＳ６０２でジョブ処理受付部３０３から送信されたジョブ実行指示を受信する処理である。ここで、ステップＳ６０２でジョブ処理受付部３０３から送信されたジョブの種類と、ジョブデータの入出力形式も同時に受信する。
【００５３】
（ステップＳ６０４）ステップＳ６０４はジョブ制御部３０４が、ステップＳ６０３で受信したジョブ内容を示す情報に基づいて、構成保持部３０８からフィルタの構成情報を取得する。そして、当該構成情報を解析することによって、フィルタの種類と処理順序を決定する処理である。フィルタ構成情報とステップＳ６０４の処理の詳細については図７を用いて後述する。
【００５４】
（ステップＳ６０５）ステップＳ６０５はジョブ制御部３０４が、ステップＳ６０４で取得したフィルタの構成情報に基づいて、構成情報に含まれるそれぞれのフィルタを管理するフィルタ管理部の位置情報を取得する処理である。例えば、フィルタの種類がフィルタＡ、フィルタＢ、フィルタＣである場合には、それぞれのフィルタを管理するフィルタ管理部Ａ、フィルタ管理部Ｂ、フィルタ管理部Ｃの位置情報を取得する。ここで位置情報は、通信路３０７がＴＣＰ／ＩＰによって提供される場合には、ＩＰアドレスとポート番号で提供される。
【００５５】
（ステップＳ６０６）ステップＳ６０６はジョブ制御部３０４が、構成情報に含まれるそれぞれのフィルタを管理するフィルタ管理部に対して、その次段のフィルタ管理部の位置情報を送信する処理である。本処理は、ステップＳ６０４で取得したフィルタの構成情報に基づいて行われる。但し、最終段フィルタのフィルタ管理部に対しては、最終的にデータ変換結果を出力するジョブ処理受付部の位置情報を送信する。例えば、フィルタの処理順序がフィルタＡ、フィルタＢ、フィルタＣである場合には、フィルタ管理部Ａにはフィルタ管理部Ｂの位置情報、フィルタ管理部Ｂにはフィルタ管理部Ｃの位置情報、そしてフィルタ管理部Ｃにはジョブ処理受付部の位置情報を送信する。
【００５６】
（ステップＳ６０７）ステップＳ６０７は構成情報に含まれるそれぞれのフィルタを管理するフィルタ管理部３０５が、ステップＳ６０６でジョブ制御部３０４から送信された出力先プロセスの位置情報を受信する。この位置情報は、後述するステップＳ６１２の処理において使用される。
【００５７】
（ステップＳ６０８）ステップＳ６０８はジョブ制御部３０４が、ステップＳ６０５で取得した初段フィルタのフィルタ管理部の位置情報を、ジョブ処理受付部３０３に送信する処理である。
【００５８】
（ステップＳ６０９）ステップＳ６０９はジョブ処理受付部３０３が、ステップＳ６０８でジョブ制御部３０４から送信された初段フィルタのフィルタ管理部の位置情報を受信する処理である。この位置情報は、後述するステップＳ６１１の処理において使用される。
【００５９】
（ステップＳ６１０）ステップＳ６１０はサブルーチンとしての「プロセス間データ送信方法決定処理」を呼び出す処理である。サブルーチンとしての「プロセス間データ送信方法決定処理」の詳細な説明は図８を用いて後述する。
【００６０】
（ステップＳ６１１）ステップＳ６１１はジョブ処理受付部３０３が、サブルーチンとしての「ジョブデータを初段フィルタ管理部に送信」を呼び出す処理である。サブルーチンとしての「ジョブデータを初段フィルタ管理部に送信」の詳細な説明は図１０を用いて後述する。
【００６１】
（ステップＳ６１２）ステップＳ６１２は構成情報に含まれるそれぞれのフィルタを管理するフィルタ管理部３０５が、サブルーチンとしての「データ変換処理」を呼び出す処理である。サブルーチンとしての「データ変換処理」の詳細な説明は図１１を用いて後述する。本処理には、複数のデータ変換処理が含まれるが、当該複数のデータ変換処理は、第一のデータ変換処理を行った後に、第二のデータ変換処理を行うなど、順次データ変換処理がなされる。
【００６２】
（ステップＳ６１３）ステップＳ６１３はジョブ処理受付部３０３が、サブルーチンとしての「変換済データを出力」を呼び出す処理である。サブルーチンとしての「変換済データを出力」の詳細な説明は図１２を用いて後述する。
【００６３】
（フィルタ構成情報）
以下、構成保持部３０８からジョブ制御部３０４が取得するフィルタの構成情報について説明する。前述の通り、フィルタの構成情報は、フィルタの種類と処理順序を決定するために用いられる。
【００６４】
図７はフィルタ構成情報（以下、単に構成情報とする）の一例である。構成情報は構成保持部３０８に保持されている。図７に示す構成情報はＸＭＬ（Ｅｘｔｅｎｓｉｂｌｅ  Ｍａｒｋｕｐ  Ｌａｎｇｕａｇｅ）形式で記述されている例である。ルート要素である「ＦｉｌｔｅｒｓＣａｔａｌｏｇ」要素の子要素として、「Ａｐｐｌｉｃａｔｉｏｎ」要素が複数記載されている。「Ａｐｐｌｉｃａｔｉｏｎ」要素には、ジョブの種類（「ｉｄ」属性）が記述されている。「Ａｐｐｌｉｃａｔｉｏｎ」要素の子要素には、「Ｆｉｌｔｅｒ」要素が存在する。「Ｆｉｌｔｅｒ」要素には、フィルタの名前（「ｎａｍｅ」属性）が記述されている。
【００６５】
ステップＳ６０３でジョブ制御部３０４が取得したジョブの種類が「Ｐｒｉｎｔ」である場合を例として、ステップＳ６０４の処理を説明する。ステップＳ６０４では、ジョブ制御部３０４がステップＳ６０３で取得したジョブの種類に基づいて、図７の構成情報のＡｐｐｌｉｃａｔｉｏｎ」要素について「ｉｄ」属性を検索する。一致したら、「Ａｐｐｌｉｃａｔｉｏｎ」要素の子要素である「Ｆｉｌｔｅｒ」要素の記載順にＦｉｌｔｅｒの順序構成を取得する。図７の例において、ジョブ制御部３０４はステップ６０３で取得したジョブの種類である「Ｐｒｉｎｔ」に基づいて、構成情報の「Ａｐｐｌｉｃａｔｉｏｎ」要素の「ｉｄ」属性（７０１）を検索する。その後、ジョブ制御部３０４が「Ａｐｐｌｉｃａｔｉｏｎ」要素の子要素である「Ｆｉｌｔｅｒ」要素（７０２）を取得し、フィルタの処理順序を取得する。図７の例では、ＦｉｌｔｅｒＡ、ＦｉｌｔｅｒＢ、ＦｉｌｔｒｅＣの順番で記述されており、この順番がジョブの処理順序に相当する。よって、図７の例で示したフィルタ構成情報を用いる場合は、ＦｉｌｔｅｒＡ、ＦｉｌｔｅｒＢ、ＦｉｌｔｒｅＣの順番でフィルタによるデータ変換がなされることになる。
【００６６】
図８は、ステップＳ６１０に示したプロセス間データ送信方法決定処理の詳細を示すフローチャートである。各ステップは、図６で示したフローと同様に、ＣＰＵ２０１がＲＡＭ２０２から各種コンピュータプログラムを読み出し、実行することによって実現される。
【００６７】
（ステップＳ８０１）ステップＳ８０１はジョブ制御部３０４が、フィルタ入出力情報保持部３１１からフィルタ入出力情報を取得、解析する。取得、解析によって、ステップＳ６０４で取得したフィルタ構成に含まれる各フィルタが対応する入出力形式を取得する処理である。フィルタ入出力情報とステップＳ８０１の処理の詳細については図９を用いて後述する。
【００６８】
（ステップＳ８０２）ステップＳ８０２はジョブ制御部３０４が、ステップＳ６０３で取得したジョブデータの入力形式（データ入力可能な形式）がパス渡しか否か判断する処理である。またはステップＳ８０１で取得した初段フィルタが対応する入力形式がパス渡しのみか否かを判断する。条件を満たす場合はステップＳ８０３に進む。条件を満たさない場合はステップＳ８０４に進む。
【００６９】
（ステップＳ８０３）ステップＳ８０３はジョブ制御部３０４が、ジョブ処理受付部から初段フィルタ管理部へのプロセス間データ送信方法をパス通信と決定する処理である。
【００７０】
（ステップＳ８０４）ステップＳ８０４はジョブ制御部３０４が、ジョブ処理受付部から初段フィルタ管理部へのプロセス間データ送信方法をデータ通信と決定する処理である。
【００７１】
（ステップＳ８０５）ステップＳ８０５はジョブ制御部３０４が、ステップＳ８０２からステップＳ８０４で決定した、ジョブ受付部から初段フィルタ管理部へのプロセス間データ送信方法をジョブ処理受付部３０３に送信する処理である。
【００７２】
（ステップＳ８０６）ステップＳ８０６はジョブ処理受付部３０３が、ステップ８０５でジョブ制御部３０４から送信された、ジョブ受付部から初段フィルタ管理部へのプロセス間データ送信方法を受信する処理である。
【００７３】
（ステップＳ８０７）ステップＳ８０７はジョブ制御部３０４が、データ変換に用いる全ての対象フィルタについて、ステップＳ８０８からステップＳ８１０の処理を繰り返し行う処理である（Ｓ８０７とＳ８１１でループ処理を示す）。
【００７４】
（ステップＳ８０８）ステップＳ８０８はジョブ制御部３０４が、対象フィルタが対応する出力形式がパス渡しのみ、または対象フィルタの次段フィルタが対応する入力形式がパス渡しのみか否かを判断する処理である。ここで、対象フィルタが対応する出力形式の情報と、対象フィルタの次段フィルタが対応する入力形式の情報は、ジョブ制御部３０４がステップＳ８０１で取得した情報である。但し、対象フィルタが最終段フィルタである場合は次段フィルタが対応する入力形式がパス渡しのみか否かを判断する代わりに、ステップＳ６０３で取得したジョブデータの出力形式（データ出力可能な形式）がパス渡しか否かを判断する。条件を満たす場合はステップＳ８０９に進む。条件を満たさない場合はステップＳ８１０に進む。
【００７５】
（ステップＳ８０９）ステップＳ８０９はジョブ管理部３０４が、対象フィルタ管理部から次段フィルタ管理部（対象フィルタが最終段フィルタの場合はジョブ処理受付部）へのプロセス間データ送信方法をパス通信と決定する処理である。
【００７６】
（ステップＳ８１０）ステップＳ８１０はジョブ管理部３０４が、対象フィルタ管理部から次段フィルタ管理部（対象フィルタが最終段フィルタの場合はジョブ処理受付部）へのプロセス間データ送信方法をデータ通信と決定する処理である。
【００７７】
（ステップＳ８１１）ステップＳ８１１はジョブ管理部３０４が、全ての対象フィルタに対してステップＳ８０８からステップＳ８１０の処理を完了した際に、ステップＳ８１２に進む処理である。
【００７８】
（ステップＳ８１２）ステップＳ８１２はジョブ管理部３０４が、各フィルタ管理部３０５に対して、ステップＳ８０８からステップＳ８１０で決定した次段のフィルタ管理部へのプロセス間データ送信方法を送信する処理である。但し、最終段フィルタのフィルタ管理部に対しては、ジョブ処理受付部へのプロセス間データ送信方法を送信する。
【００７９】
（ステップＳ８１３）ステップＳ８１３はフィルタ管理部３０５が、ステップＳ８１２でジョブ制御部３０４から送信された、次段のフィルタ管理部へのプロセス間データ送信方法を受信する処理である。但し、最終段フィルタのフィルタ管理部では、ジョブ処理受付部へのプロセス間データ送信方法を受信する。
【００８０】
（フィルタ入出力情報）
前述の通り、本実施例においては、各フィルタが対応する入出力形式を取得するために、フィルタ入出力情報保持部３１１からフィルタ入出力情報を取得、解析する。
【００８１】
図９は、フィルタ入出力情報保持部３１１に格納されているフィルタ入出力情報の一例である。フィルタ入出力情報はフィルタ入出力情報保持部３１１に保持されている。図９に示すフィルタ入出力情報はＸＭＬ形式で記述されている例である。ルート要素である「ＦｉｌｔｅｒＩｎｆｏｒｍａｔｉｏｎ」要素の子要素として、「Ｆｉｌｔｅｒ」要素が複数記載されている。「Ｆｉｌｔｅｒ」要素には、フィルタの名前（「ｎａｍｅ」属性）が記述されている。「Ｆｉｌｔｅｒ」要素の子要素には、「ＩＯＴｙｐｅ」要素が存在する。「ＩＯＴｙｐｅ」要素には、メモリ渡しに対応しているか否かの情報（「ｍｅｍｏｒｙ」属性）と、パス渡しを対応しているか否かの情報（「ｐａｔｈ」属性）が記述されている。「ｍｅｍｏｒｙ」属性、または「ｐａｔｈ」属性の値が”ｓｕｐｐｏｒｔｅｄ”ならば、それぞれメモリ渡し、またはパス渡しに対応していることを表す。「ｍｅｍｏｒｙ」属性、または「ｐａｔｈ」属性の値が”ｕｎｓｕｐｐｏｒｔｅｄ”ならば、それぞれメモリ渡し、またはパス渡しに対応していないことを表す。
【００８２】
ステップＳ６０４で取得したフィルタの種類が、ＦｉｌｔｅｒＡ、ＦｉｌｔｅｒＢ、ＦｉｌｔｅｒＣである場合を例として、ステップＳ８０１の処理を説明する。ステップＳ８０１では、ジョブ制御部３０４がステップＳ６０４で取得したフィルタの種類に基づいて、図９のフィルタ入出力情報の「Ｆｉｌｔｅｒ」要素の「ｎａｍｅ」属性を検索する。「ｎａｍｅ」属性の値がフィルタの種類に含まれている場合は、「Ｆｉｌｔｅｒ」要素の子要素である「ＩＯＴｙｐｅ」要素からメモリ渡しとパス渡しに対応しているか否かを取得する。例において、フィルタの種類であるＦｉｌｔｅｒＡ、ＦｉｌｔｅｒＢ、ＦｉｌｔｅｒＣに基づいて、フィルタ入出力情報の「Ｆｉｌｔｅｒ」要素の「ｎａｍｅ」属性を検索する（９０１、９０２、９０３）。その後、ジョブ制御部３０４が「Ｆｉｌｔｅｒ」要素の子要素である「ＩＯＴｙｐｅ」要素（９０４、９０５、９０６）を取得し、メモリ渡しとパス渡しに対応するか否かを取得する。図９の例では、ＦｉｌｔｅｒＡはメモリ渡しとパス渡し、ＦｉｌｔｅｒＢはパス渡し、ＦｉｌｔｅｒＣはメモリ渡しとパス渡しに対応することが取得できる。
【００８３】
図１０はステップＳ６１１に示したジョブデータを初段フィルタ管理部に送信する処理の詳細を表すフローチャートである。
【００８４】
各ステップは図６で示したフローと同様に、ＣＰＵ２０１がＲＡＭ２０２から各種コンピュータプログラムを読み出し、実行することによって実現される。
【００８５】
（ステップＳ１００１）ステップＳ１００１はジョブ処理受付部３０３が、ジョブデータの保持先（保存先）を移動させる必要があるか否かを判断する処理である。移動させる必要があると判断した場合にはステップＳ１００２に進む。移動させる必要がないと判断した場合にはステップＳ１００３に進む。
【００８６】
ステップＳ１００１における判断方法について詳細に説明する。ジョブデータの入力形式がメモリ渡しの場合には、ジョブデータはＲＡＭ２０２に保持されている。またジョブデータの入力形式がパス渡しの場合には、ジョブデータは外部記憶装置２０４に保持されている。一方、初段フィルタ管理部へのジョブデータの送信方法としてデータ通信を使用する場合にはジョブデータはＲＡＭ２０２に保持されている必要がある。また初段フィルタ管理部へのジョブデータの送信方法としてパス通信を使用する場合にはジョブデータは外部記憶装置２０４に保持されている必要がある。つまり、ジョブデータの入力形式がメモリ渡しの場合、且つジョブデータの送信方法としてパス通信を使用する場合には、ＲＡＭ２０２に保持されているジョブデータを、外部記憶装置２０４に移動させる必要があると判断する。さらに、ジョブデータの入力形式がパス渡しの場合、且つジョブデータの送信方法としてデータ通信を使用する場合には、外部記憶装置２０４に保持されているジョブデータを、ＲＡＭ２０２に移動する必要があると判断する。
【００８７】
（ステップＳ１００２）ステップＳ１００２はジョブ処理受付部３０３が、ジョブデータの保持先を移動させる処理である。ジョブデータがＲＡＭ２０２に保持されている場合は外部記憶装置２０４に移動させる。ジョブデータが外部記憶装置２０４に保持されている場合はＲＡＭ２０２に移動させる。
【００８８】
（ステップＳ１００３）ステップＳ１００３はジョブ処理受付部３０３が、ステップＳ８０６で受信したジョブデータのプロセス間データ送信方法に従って、ジョブデータを送信する処理である。送信先は、ステップＳ６０９で位置情報を受信した初段フィルタ管理部である。
【００８９】
図１１はステップＳ６１２に示したデータ変換処理の詳細を示すフローチャートである。各ステップは図６で示したフローと同様に、ＣＰＵ２０１がＲＡＭ２０２から各種コンピュータプログラムを読み出し、実行することによって実現される。
【００９０】
（ステップＳ１１０１）ステップＳ１１０１はフィルタ管理部３０５が、変換対象データを受信する処理である。本ステップを実行するフィルタ管理部３０５が初段フィルタ管理部である場合は、ジョブ処理受付部３０３がステップＳ１００３で送信したデータを受信する。本ステップを実行するフィルタ管理部３０５が初段フィルタ管理部以外である場合は、前段のフィルタ管理部がＳ１１０９で送信したデータを受信する。
【００９１】
（ステップＳ１１０２）ステップＳ１１０２はフィルタ管理部３０５が、変換対象データの保持先を取得する処理である。変換対象データのプロセス間データ送信方法がデータ通信の場合は、変換対象データはＲＡＭ２０２に保持されている。変換対象データのプロセス間データ送信方法がパス通信の場合は、変換対象データは外部記憶装置２０４に保持されている。
【００９２】
（ステップＳ１１０３）ステップＳ１１０３はフィルタ管理部３０５が、変換対象データの保持先を移動させる必要があるか否かを判断する処理である。具体的には、以下に示す二通りの場合において、変換対象データの保持先を移動する必要があると判断する。一つは、変換対象データの保持先がＲＡＭ２０２であり、且つ管理するフィルタ３０６が対応する入力形式がパス渡しのみの場合である。もう一つは、変換対象データの保持先が外部記憶装置２０４であり、且つ管理するフィルタ３０６が対応する入力形式がメモリ渡しのみの場合である。変換対象データの保持先を移動させる必要があると判断した場合はステップＳ１１０４に進む。変換対象データの保持先を移動させる必要がないと判断した場合はステップＳ１１０５に進む。
【００９３】
（ステップＳ１１０４）ステップＳ１１０４はフィルタ管理部３０５が、変換対象データの保持先を移動させる処理である。変換対象データがＲＡＭ２０２に保持されている場合は外部記憶装置２０４に移動させる。変換対象データが外部記憶装置２０４に保持されている場合はＲＡＭ２０２に移動させる。
【００９４】
（ステップＳ１１０５）ステップＳ１１０５はフィルタ管理部３０５が、フィルタ３０６に対して変換対象データを入力し、データ変換処理実行を指示する処理である。この際に、フィルタ管理部３０５が、フィルタ３０６に対して変換後データの出力形式を指定する。フィルタ３０６では処理実行の指示に従いデータ変換処理を進める。
【００９５】
ステップＳ１１０５における変換後データの出力形式の指定について詳細に説明する。フィルタ３０６の出力形式がメモリ渡しのみ、もしくはパス渡しのみに対応している場合は、フィルタ管理部３０５がフィルタ３０６に対して変換後データの出力形式を、フィルタ３０６が対応している出力形式で指定する。フィルタ３０６の出力形式がメモリ渡しとパス渡しの両方に対応している場合は、フィルタ管理部３０５がステップＳ８１３で受信したプロセス間データ送信方法に基づいて、フィルタ３０６に対して変換後データの出力形式を指定する。具体的には、プロセス間データ送信方法がデータ通信の場合は、フィルタ３０６に対して出力形式としてメモリ渡しを指示する。また、プロセス間データ送信方法がパス通信の場合は、フィルタ３０６に対して出力形式としてパス渡しを指示する。
【００９６】
（ステップＳ１１０６）ステップＳ１１０６はフィルタ管理部３０５が、フィルタ３０６から処理が完了した通知を受け取った後、変換後データを受け取る処理である。ここで、フィルタ３０６からフィルタ管理部３０５への変換後データの出力形式はステップＳ１１０５で指定した形式である。
【００９７】
（ステップＳ１１０７）ステップＳ１１０７はフィルタ管理部３０５が、変換後データの保持先を移動する必要があるか判断する処理である。具体的には、以下に示す二通りの場合において、変換後データの保持先を移動する必要があると判断する。一つは、変換後データの出力形式がメモリ渡しであり、且つプロセス間データ送信方法がパス通信である場合である。もう一つは、変換後の出力形式がパス渡しであり、且つプロセス間データ送信方法がデータ通信の場合である。変換後データの保持先を移動する必要があると判断した場合はステップＳ１１０８に進む。変換後データの保持先を移動する必要がないと判断した場合はステップＳ１１０９に進む。
【００９８】
（ステップＳ１１０８）ステップＳ１１０８はフィルタ管理部３０５が、変換後データの保持先を移動する処理である。変換後データがＲＡＭ２０２に保持されている場合は外部記憶装置２０４に移動する。変換後データが外部記憶装置２０４に保持されている場合はＲＡＭ２０２に移動する。
【００９９】
（ステップＳ１１０９）ステップＳ１１０９はフィルタ管理部３０５が、ステップＳ６０７で位置情報を受信した出力先プロセスに対して、ステップＳ８１３で受信したプロセス間データ送信方法に従って、変換後データを送信する処理である。
【０１００】
図１２はステップＳ６１３に示した変換済データを出力する処理の詳細を表すフローチャートである。各ステップは図６で示したフローと同様に、ＣＰＵ２０１がＲＡＭ２０２から各種コンピュータプログラムを読み出し、実行することによって実現される。
【０１０１】
（ステップＳ１２０１）ステップＳ１２０１はジョブ処理受付部３０３が、最終段フィルタ管理部がステップＳ１１０９で送信した変換済データを受信する処理である。
【０１０２】
（ステップＳ１２０２）ステップＳ１２０２はジョブ処理受付部３０３が、変更済データの保持先を取得する処理である。変換済データのプロセス間データ送信方法がデータ通信の場合は、変換済データはＲＡＭ２０２に保持されている。変換済データのプロセス間データ送信方法がパス通信の場合は、変換済データは外部記憶装置２０４に保持されている。
【０１０３】
（ステップＳ１２０３）ステップＳ１２０３はジョブ処理受付部３０３が、変換済データの保持先を移動する必要があるか否かを判断する処理である。具体的には、以下に示す二通りの場合に変換対象データの保持先を移動させる必要があると判断する。一つは、変換済データの保持先がＲＡＭ２０２であり、且つデータ変換サービスシステム３０１に対するデータの出力形式がパス渡しである場合である。もう一つは、変換済データの保持先が外部記憶装置２０４であり、且つデータ変換サービスシステム３０１に対するデータの出力形式がメモリ渡しである場合である。変換対象データの保持先を移動させる必要があると判断した場合はステップＳ１２０４に進む。変換対象データの保持先を移動する必要がないと判断した場合はステップＳ１２０５に進む。
【０１０４】
（ステップＳ１２０４）ステップＳ１２０４はジョブ処理受付部３０３が、変換済データの保持先を移動させる処理である。変換済データがＲＡＭ２０２に保持されている場合は外部記憶装置２０４に移動させる。変換済データが外部記憶装置２０４に保持されている場合はＲＡＭ２０２に移動させる。
【０１０５】
（ステップＳ１２０５）ステップＳ１２０５はジョブ処理受付部３０３が、ステップＳ６０１で取得したデータ変換サービスシステム３０１に対するデータの出力形式に従って、データ変換サービスシステム３０１に対して変換済データを出力する処理である。
【０１０６】
以上説明したように、本実施例によればフィルタの入出力可能な形式に応じて、より効率的なプロセス間のデータ送信方法を設定する。従って、プロセス間のデータ送信の際に発生する不具合を抑えることが出来る。
【０１０７】
（第二の実施例）
第一の実施例では、フィルタ入出力情報から各フィルタが対応する入出力形式を取得する例を示した。しかし、あるフィルタが対応する入出力形式が変更になった場合や、フィルタが追加された場合には、その都度フィルタ入出力情報を編集する作業が発生する問題がある。そこで本実施例では、ジョブ制御部からフィルタ管理部に対して入出力予定形式を問い合わせる。その後、フィルタ管理部からフィルタに入出力形式を問い合わせる。なお、本実施例の説明では、第一の実施例と同一機能を有する構成や工程には同一符号を付すとともに、構成的、機能的に変わらないものについてはその説明を省略する。
【０１０８】
図１３は、本実施例における、プロセス間データ送信方法決定処理の詳細を表すフローチャートである。図８のフローからの変更点は、ステップＳ８０１の処理の代わりにステップＳ１３０１からステップＳ１３０３の処理を実行する点である。なお、図１３のフローチャートで示す各手順はデータ変換サービスサーバ１０４のＲＡＭ２０２、もしくは外部記憶装置２０４のいずれかの記憶部に記憶されたコンピュータプログラムを、ＣＰＵ２０１が読み出し、実行することにより実現される。
【０１０９】
（Ｓ１３０１）Ｓ１３０１はジョブ制御部３０４が、構成情報に含まれるフィルタ３０６を管理する各フィルタ管理部３０５に対して、管理するフィルタ３０６が対応する入出力形式を問い合わせる処理である。
【０１１０】
（Ｓ１３０２）Ｓ１３０２はフィルタ管理部３０５が、管理するフィルタ３０６に対して問い合わせることによって取得したフィルタ３０６が対応する入出力形式を、ジョブ制御部３０４に対して送信する処理である。
【０１１１】
（Ｓ１３０３は）Ｓ１３０３はジョブ制御部３０４が、ステップＳ１３０２で構成情報に含まれるフィルタ３０６を管理する各フィルタ管理部３０５から送信された、管理するフィルタが対応する入出力形式を取得する処理である。
【０１１２】
以上説明したように、本実施例によればフィルタ入出力方法が必要なくなるため、あるフィルタが対応する入出力形式が変更になった場合や、フィルタが追加された場合であっても追加で作業を行う必要が無くなる。
【０１１３】
（第三の実施例）
上記実施例では、前段フィルタが対応する出力形式と後段フィルタが対応する入力形式の情報から、プロセス間のデータ送信方法を決定する手法を示した。しかし、前段フィルタが対応する出力形式と後段フィルタが対応する入力形式以外の情報もデータ送信方法決定の判断に使用することが考えられる。本実施例では、データ変換アプリケーション３０２が動作するデータ変換サービスサーバ１０４のＲＡＭ２０２や外部記憶装置２０４の残容量が逼迫しているか否かの情報も、プロセス間のデータ送信方法決定の判断に使用する。以降、データ変換サービスサーバ１０４のＲＡＭ２０２の残容量が逼迫している状態（残容量が所定値以下の状態）を、メモリフル状態と呼称する。また、データ変換サービスサーバ１０４の外部記憶装置２０４の残容量が逼迫している状態（残容量が所定値以下の状態）を、ディスクフル状態と呼称する。
【０１１４】
（メモリフル状態時におけるプロセス間データ送信方法）
メモリフル状態時では、ＲＡＭ２０２の使用量を削減するため、プロセス間データ送信時にデータがＲＡＭ２０２に存在する必要があるデータ通信は出来る限り避けた方がよい。そのため、第一および第二の実施例においてはプロセス間のデータ送信方法をデータ通信と決定する場合であっても、パス通信を利用する。しかしメモリフル状態時においても、プロセス間のデータ送信方法を全てパス通信にした方が良いわけではない。具体的には、後段フィルタの入力形式としてメモリ渡しのみに対応している場合では、プロセス間のデータ送信にパス通信を利用したとしても、ＲＡＭ２０２の使用量を削減できない。なぜなら、メモリ渡しのみに対応している後段フィルタにデータを渡すためには、フィルタ管理部で外部記憶装置２０４からＲＡＭ２０２にデータを移動する必要があるためである。この場合においては、メモリフル状態時であっても第一および第二の実施例と同様にプロセス間のデータ送信にデータ通信を利用する。図１４はメモリフル状態時におけるプロセス間データ送信の決定方法を示した図である。第一および第二の実施例におけるプロセス間データ送信の決定方法を示した図５との違いは、データ通信を利用する代わりにパス通信を利用するように変更になった点（１４０１、１４０２）である。しかし前述の通り、後段フィルタが対応する出力形式がメモリ渡しのみの場合では、プロセス間データ送信方法はデータ通信から変更しない（１４０３、１４０４）。
【０１１５】
次に、メモリフル状態時の処理について、第一および第二の実施例からの差分について説明する。本実施例においては、図６に示すジョブ実行処理のステップＳ６１０の前に、ジョブ処理制御部３０３がメモリフル状態であるか否かを判断する処理を追加する。メモリフル状態と判断した場合は、後述するメモリフル状態時におけるプロセス間データ送信方法決定処理を実行する。メモリフル状態ではないと判断した場合は、第一および第二の実施例におけるプロセス間データ送信方法決定処理を実行する。
【０１１６】
メモリフル状態時におけるプロセス間データ送信方法決定処理において、第一の実施例（図８）、第二の実施例（図１３）からの差分は、プロセス間データ送信方法決定の判断処理（ステップＳ８０２，ステップＳ８０８）が異なる点である。ステップＳ８０２の代わりに、ジョブ管理部３０３が、ジョブデータの入力形式がパス渡し、または初段フィルタが対応する入力形式にパス渡しが含まれる（パス渡しのみ、または両方対応）か否かを判断する処理を実行する。条件を満たす場合はステップＳ８０３に進む。条件を満たさない場合はステップＳ８０４に進む。ステップＳ８０８の代わりに、ジョブ管理部３０３が、対象フィルタが対応する出力形式がパス渡しのみ、または対象フィルタの次段フィルタが対応する入力形式にパス渡しが含まれる（パス渡しのみ、または両方対応）か否かを判断する処理を実行する。条件を満たす場合はステップＳ８０９に進む。条件を満たさない場合はステップＳ８１０に進む。以上の処理によって、図１４に従ってプロセス間データ送信を決定できるため、メモリフル状態時においてＲＡＭ２０２の使用量を削減することが可能となる。
【０１１７】
（ディスクフル状態時におけるプロセス間データ送信方法）
ディスクフル状態時では、外部記憶装置２０４の使用量を削減するため、プロセス間データ送信時にデータが外部記憶装置２０４に存在する必要があるパス通信は出来る限り避けた方がよい。そのため、第一および第二の実施例においてはプロセス間のデータ送信方法をパス通信と決定する場合であっても、データ通信を利用する。しかしディスクフル状態時においても、プロセス間のデータ送信方法を全てデータ通信にした方が良いわけではない。具体的には、後段フィルタの入力形式としてパス渡しのみに対応している場合では、プロセス間のデータ送信にデータ通信を利用したとしても、外部記憶装置２０４の使用量を削減できない。なぜなら、パス渡しのみに対応している後段フィルタにデータを渡すためには、フィルタ管理部でＲＡＭ２０２から外部記憶装置２０４にデータを移動する必要があるためである。この場合においては、ディスクフル状態時であっても、第一および第二の実施例と同様にプロセス間のデータ送信にパス通信を利用する。図１５はディスクフル状態時におけるプロセス間データ送信の決定方法を示した図である。第一および第二の実施例におけるプロセス間データ送信の決定方法を示した図５との違いは、パス通信を利用する代わりにデータ通信を利用するように変更になった点（１５０１、１５０２）である。しかし前述の通り、後段フィルタが対応する出力形式がパス渡しのみの場合では、プロセス間データ送信方法はパス通信から変更しない（１５０３）。
【０１１８】
次に、ディスクフル状態時の処理について、第一および第二の実施例からの差分について説明する。本実施例においては、図６に示すジョブ実行処理のステップＳ６１０の前に、ジョブ処理制御部３０３がディスクフル状態であるか否かを判断する処理を追加する。ディスクフル状態と判断した場合は、後述するディスクフル状態時におけるプロセス間データ送信方法決定処理を実行する。ディスクフル状態ではないと判断した場合は、第一の実施例もしくは第二の実施例におけるプロセス間データ送信方法決定処理を実行する。
【０１１９】
ディスクフル状態時におけるプロセス間データ送信方法決定処理において、第一の実施例（図８）、第二の実施例（図１３）からの差分は、プロセス間データ送信方法決定の判断処理（ステップＳ８０２，ステップＳ８０８）が異なる点である。ステップＳ８０２の代わりに、ジョブ管理部３０３が、初段フィルタが対応する入力形式がパス渡しのみか否かを判断する処理を実行する。条件を満たす場合はステップＳ８０３に進む。条件を満たさない場合はステップＳ８０４に進む。ステップＳ８０８の代わりに、ジョブ管理部３０３が、対象フィルタの次段フィルタが対応する入力形式がパス渡しのみか否かを判断する処理を実行する。条件を満たす場合はステップＳ８０９に進む。条件を満たさない場合はステップＳ８１０に進む。以上の処理によって、図１５に従ってプロセス間データ送信を決定できるため、ディスクフル状態時において外部記憶装置２０４の使用量を削減することが可能となる。
【符号の説明】
【０１２０】
１０１  ネットワーク
１０２  クライアントＰＣ
１０３  プリントサービスサーバ
１０４  データ変換サービスサーバ
１０５  プリンタ
２０１  ＣＰＵ
２０２  ＲＡＭ
２０３  ネットワークインタフェース
２０４  外部記憶装置
２０５  ディスプレイ
２０６  キーボード
２０７  ポインティングデバイス
３０１  データ変換サービスシステム
３０２  データ変換アプリケーション
３０３  ジョブ処理受付部
３０４  ジョブ制御部
３０５  フィルタ管理部
３０６  フィルタ
３０７  通信路
３０８  構成保持部
３０９  フィルタ保持部
３１０  一時データ記憶装置
３１１  フィルタ入出力情報保持部
【図１】
2015125739.tif 000003
【図２】
2015125739.tif 000004
【図３】
2015125739.tif 000005
【図４】
2015125739.tif 000006
【図５】
2015125739.tif 000007
【図６】
2015125739.tif 000008
【図７】
2015125739.tif 000009
【図８】
2015125739.tif 000010
【図９】
2015125739.tif 000011
【図１０】
2015125739.tif 000012
【図１１】
2015125739.tif 000013
【図１２】
2015125739.tif 000014
【図１３】
2015125739.tif 000015
【図１４】
2015125739.tif 000016
【図１５】
2015125739.tif 000017