(57)【要約】      （修正有）【課題】フロー処理を他のサービスフロー処理装置に移譲可能なフロー処理装置を提供する。【解決手段】サービスフロー処理装置は、サービスフロー記述文書に記述された処理に従ってネットワーク上のサービスからメッセージを受信する。そして、受信したメッセージを他のサービスフロー処理装置が処理する場合、受信したメッセージを用いて行われる処理の記述をサービスフロー記述文書から抽出する。サービスフロー処理装置は、抽出された処理の記述を含むサービス部分フロー記述文書と受信されたメッセージとを他のサービスフロー処理装置に送信する。【選択図】図１
2009301538.tif 000002
【特許請求の範囲】
【請求項１】
サービスフロー処理装置であって、
サービスフロー記述文書に記述された処理に従ってネットワーク上のサービスからメッセージを受信する受信手段と、
前記受信されたメッセージを他のサービスフロー処理装置が処理する場合、前記受信されたメッセージを用いて行われる処理の記述を前記サービスフロー記述文書から抽出する抽出手段と、
前記抽出された前記処理の記述を含むサービス部分フロー記述文書と前記受信手段により受信されたメッセージとを前記他のサービスフロー処理装置に送信する送信手段と、
を有することを特徴とするサービスフロー処理装置。
【請求項２】
前記送信手段は、前記他のサービスフロー処理装置が前記処理の記述に従って実行した結果を前記サービスフロー処理装置に返送する処理を含むサービス部分フロー記述文書を前記他のサービスフロー処理装置に送信することを特徴とする請求項１に記載のサービスフロー処理装置。
【請求項３】
前記送信手段は、前記受信されたメッセージに基づいて前記他のサービスフロー処理装置がネットワーク上のサービスを利用して行う処理の記述を含むサービス部分フロー記述文書を、前記他のサービスフロー処理装置に送信することを特徴とする請求項１に記載のサービスフロー処理装置。
【請求項４】
前記送信手段は、前記ネットワーク上のサービスを利用するためのサービスインターフェース記述文書を、前記他のサービスフロー処理装置に送信することを特徴とする請求項３に記載のサービスフロー処理装置。
【請求項５】
前記送信手段は、前記サービス部分フロー記述文書を前記他のサービスフロー処理装置に送信するか否かを、前記受信したメッセージのサイズに基づいて判断することを特徴とする請求項１に記載のサービスフロー処理装置。
【請求項６】
サービスフロー処理方法であって、
サービスフロー記述文書に記述された処理に従ってネットワーク上のサービスからメッセージを受信する受信工程と、
前記受信されたメッセージを他のサービスフロー処理装置が処理する場合、当該受信されたメッセージを用いて行われる処理の記述を前記サービスフロー記述文書から抽出する抽出工程と、
前記抽出された前記処理の記述を含むサービス部分フロー記述文書と、前記受信工程において受信されたメッセージとを前記他のサービスフロー処理装置に送信する送信工程と、
を有することを特徴とするサービスフロー処理方法。
【請求項７】
請求項１乃至５の何れか１項に記載のサービスフロー処理装置としてコンピュータを機能させるためのプログラムを記録したコンピュータ読み取り可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、サービスフロー処理装置及び方法に関する。
【背景技術】
【０００２】
従来、ＷＥＢサービスを順次実行させるためのＷＥＢサービスフロー記述文書（構造化文書）を読み込み、その記述内容に従ってＷＥＢサービスを順次実行させる技術が知られている。ＷＥＢサービスフロー記述文書は、例えばＷＳＢＰＥＬ（Web Service Business Process Execution Language）に従って記述されている。
【０００３】
ＷＥＢサービスフロー記述文書の記述内容に応じて不特定多数のＷＥＢサービスを順番に呼び出す際、フロー処理装置は以下の流れで処理を進めて実行させていくのが一般的である。
【０００４】
ＳＯＡＰメッセージをＷＥＢサービスへ送信し、ＷＥＢサービスからの応答をＳＯＡＰメッセージで受信し、受信したＳＯＡＰメッセージからデータを抽出、或いはメッセージの加工などの処理を行う。この処理結果をＳＯＡＰメッセージとして、次のＷＥＢサービスに対して送信する。
【０００５】
このようなＷＥＢサービスを実行手順に基づいて順次実行させる処理に関しては、複数のＷＥＢサービスの実行手順を如何にして効率的に生成するかを課題とした開発がなされている。
【０００６】
特許文献１には、比較的小さな処理を行うための単位フローを柔軟に組み合わせて、全体として論理的な１つのＷＥＢサービスフローを動的に組み立て実行させることが記載されている。また、特許文献２には、個々のサービスの手順が記述された複数の指示書から、どのような組み合わせで処理を実行させるかを指示する指示書を生成する技術が開示されている。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２００４−３６１９９３号公報
【特許文献２】特開２００５−１７３８９２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
しかしながら、上記従来の技術では、フロー処理装置から呼び出したＷＥＢサービスの応答として大容量のＳＯＡＰメッセージが返信される可能性がある。また、実際に大容量のＳＯＡＰメッセージが返信された場合、そのＳＯＡＰメッセージをフロー処理装置内部で抱え込み、データの抽出、加工などを行うことになる。つまり、処理できる資源のサイズを超える可能性があり、その時点で処理不能となり、ＷＥＢサービスフロー記述文書に記述されたそれ以降の処理を進めることが困難であるという問題があった。大容量のＳＯＡＰメッセージが返信された場合にも、処理の内容によっては、処理不能になったり、処理に長時間かかったりすることが考えられる。
【０００９】
逆に、ＷＥＢサービスフロー記述文書の中に条件式などを多用することで、起こり得る様々な場合に備えて特別な処理内容を記述しておくことは、ＷＥＢサービスフロー記述文書自体が肥大化かつ複雑になってしまうという問題もあった。
【００１０】
本発明は、フロー処理を他のサービスフロー処理装置に対して移譲することができるフロー処理装置及び方法を提供することを目的とする。
【課題を解決するための手段】
【００１１】
本発明は、サービスフロー処理装置であって、
サービスフロー記述文書に記述された処理に従ってネットワーク上のサービスからメッセージを受信する受信手段と、
前記受信されたメッセージを他のサービスフロー処理装置が処理する場合、前記受信されたメッセージを用いて行われる処理の記述を前記サービスフロー記述文書から抽出する抽出手段と、
前記抽出された前記処理の記述を含むサービス部分フロー記述文書と前記受信手段により受信されたメッセージとを前記他のサービスフロー処理装置に送信する送信手段と、
を有することを特徴とする。
【発明の効果】
【００１２】
本発明によれば、フロー処理を他のサービスフロー処理装置に対して移譲することができる。
【図面の簡単な説明】
【００１３】
【図１】本実施形態におけるＷＥＢサービスフロー処理部分転送処理を説明するための図である。
【図２】図１に示すＷＥＢサービスフロー処理装置（フロー処理装置）の構成の一例を示す図である。
【図３】ＷＥＢサービスフロー記述文書の構成の一例を示す図である。
【図４】レスポンスＳＯＡＰメッセージの具体例を示す図である。
【図５】ＷＥＢサービスフロー処理記述文書の具体例を示す図である。
【図６】ＷＳＤＬを生成する方法を示す図である。
【図７】変形例１におけるＷＥＢサービスフロー処理装置（フロー処理装置）の構成の一例を示す図である。
【図８】情報処理装置のハードウェア構成の一例を示す図である。
【発明を実施するための形態】
【００１４】
以下、図面を参照しながら発明を実施するための形態について詳細に説明する。まず、ＷＥＢサービスフロー処理装置が外部サービス（ＷＥＢサービス）から受信したＳＯＡＰメッセージを処理できない場合、他のＷＥＢサービスフロー処理装置にフロー処理を移譲するＷＥＢサービスフロー処理部分転送処理の概要を説明する。尚、以下の実施形態では、ＷＥＢサービスフロー処理装置を単にフロー処理装置とも呼称する。
【００１５】
図１は、本実施形態におけるＷＥＢサービスフロー処理部分転送処理を説明するための図である。図１において、１０１はプリンタである。１０２はＷＥＢサービスフロー記述文書の記述内容に従ってＷＥＢサービスを順次実行可能なフロー処理装置であり、プリンタ１０１内に搭載されている。フロー処理装置１０２は、サービスフロー記述文書を解釈し、内容に応じてフロー処理を実行するサービスフロー処理装置である。
【００１６】
図１は、プリンタ１０１がネットワーク上のＷＥＢサービスを利用するＷＥＢサービスフローを処理する機能を有することを示す。本実施形態では、プリンタがＷＥＢサービスフロー処理装置を有する形態を説明するが、本発明は、このような形態に限定されるものではない。
【００１７】
１０３はＷＥＢサービスフロー処理部分転送部であり、ＷＥＢサービスから受信したＳＯＡＰメッセージを処理できない場合、そのＳＯＡＰメッセージを後述する複合機１１２に搭載されたフロー処理装置に転送する。また、この場合、そのＳＯＡＰメッセージを参照して処理を行うＷＥＢサービスフロー記述文書の部分も、他のフロー処理装置に転送する。１０４は複数の文書１０５、１０９〜１１１と、ＷＥＢサービスフロー処理の転送先である複合機１１２の場所を示すエンドポイントの情報が記述された複合機エンドポイント情報１１３とを１つにまとめたパッケージである。１０５は複数のＷＥＢサービスフローを記述したＷＥＢサービスフロー記述文書である。１０９は検索処理サービス用ＷＳＤＬ（Web Services Description Language）であり、検索処理サービス１０６が公開するＷＥＢサービスインターフェース記述文書である。
【００１８】
尚、検索処理サービス１０６は、例えばニュース検索サービスや書籍検索サービスなどである。また、ＷＳＤＬはＷＥＢサービスを識別するインターフェースとして記述された文書である。
【００１９】
１１０はレイアウト処理サービス用ＷＳＤＬであり、レイアウト処理サービス１０７が公開するＷＥＢサービスインターフェース記述文書である。１１１はストレージ処理サービス用ＷＳＤＬであり、ストレージ処理サービス１０８が公開するＷＥＢサービスインターフェース記述文書である。検索処理サービス１０６、レイアウト処理サービス１０７、ストレージ処理サービス１０８は、外部サービスである。１１２はコピー、スキャン、プリントなどの複数の機能を備えた複合機である。１１４は複合機１１２内に搭載されているフロー処理装置である。１１５はパーソナルコンピュータ等のクライアントであり、ＷＥＢサービスフロー処理の開始指示を出す。１１６はプリンタ１０１が公開するプリンタ搭載ＷＥＢサービスフロー処理サービス用ＷＳＤＬである。
【００２０】
以上の構成において、ＷＥＢサービスフロー処理部分転送部１０３の処理を説明する。まず、プリンタ１０１に搭載されたフロー処理装置１０２がパッケージ１０４に含まれるそれぞれのファイルを読み込み、ＷＥＢサービスフロー記述文書１０５に従って、ＷＥＢサービスフロー処理の開始を準備する。プリンタ１０１は、不図示のネットワークを介して、パッケージ１０４に含まれるそれぞれのファイルを読み込む。そして、クライアント１１５がプリンタ１０１に対してプリンタ搭載ＷＥＢサービスフロー処理サービス用ＷＳＤＬ１１６を利用して必要なキーワードを含むリクエストメッセージを送ることでＷＥＢサービスフロー処理の開始を指示する。
【００２１】
この開始の指示により、フロー処理装置１０２はＷＥＢサービスフロー記述文書１０５に記述された内容でＷＥＢサービスフロー処理の実行を始める。クライアント１１５から受け付けたキーワードを含むリクエストＳＯＡＰメッセージＡ（リクエストメッセージ）１１７を生成し、検索処理サービス１０６に送信し、検索結果としてレスポンスＳＯＡＰメッセージＡ（レスポンスメッセージ）１１８を受け取る。即ち、フロー処理装置１０２は、フロー処理を実行中に、検索処理サービス１０６に対して行ったリクエストに対するレスポンスのメッセージを受信する。受け取った検索結果を含むリクエストＳＯＡＰメッセージＢ（リクエストメッセージ）１１９を生成し、レイアウト処理サービス１０７に送信し、レイアウト結果としてレスポンスＳＯＡＰメッセージＢ（レスポンスメッセージ）１２０を受け取る。
【００２２】
ここで、レイアウト処理サービス１０７は検索結果をレイアウトし、ＰＤＦファイルやＳＶＧファイルとして出力するが、本実施形態では、ＰＤＦファイルを出力するものとする。この例では、ＰＤＦファイルを含むため、サイズが非常に大きい場合があり、プリンタ１０１では、読み込む時点で、自分が処理できるメモリ使用量を超えてしまい、その後のフロー処理を続けられなくなる場合がある。
【００２３】
そのため、フロー処理装置１０２は、大容量のレスポンスメッセージが返送されてきても、フロー処理を続けられるように、ＷＥＢサービスフロー処理部分転送部１０３がレスポンスを受け付ける。そして、レスポンスメッセージのサイズを計測しながら内部に読み込み、自分が処理できるメモリの使用量を越えると判断した時点で、次に行うべきフロー処理を複合機１１２に移譲する。
【００２４】
即ち、ＷＥＢサービスフロー処理部分転送部１０３は、受信したレスポンスメッセージの処理サイズが設定値以上か否かを判断し、受信したメッセージが設定値以上である場合、次に行うべきフロー処理を他のフロー処理装置１１４に移譲する。
【００２５】
ＷＥＢサービスフロー処理部分転送部１０３には、フロー処理を移譲すべきレスポンスメッセージのサイズが予め設定されている。フロー処理を移譲する他のフロー処理装置である複合機１１２のアドレスは、複合機エンドポイント情報１１３に設定されている。
【００２６】
具体的には、レイアウト処理サービス１０７から受信したレスポンスメッセージ１２０を用いて処理を行うはずであったフロー処理部分をＷＥＢサービスフロー記述文書１０５から特定する。そして、特定したフロー処理の記述を含むＷＥＢサービス部分フロー記述文書１２１を生成する。また、ＷＥＢサービス部分フロー記述文書１２１の内容を実行するために必要で且つ複合機１１２を起動させるのに必要な複合機搭載ＷＥＢサービスフロー処理サービス用ＷＳＤＬ１２２も生成する。即ち、ＷＥＢサービスフロー処理部分転送部１０３は、レスポンスメッセージ１２０を使用して処理を行う部分フロー記述をＷＥＢサービスフロー記述文書１０５から抽出する。そして、生成した文書１２１、ＷＳＤＬ１２２と、次のフロー処理に必要と判断したＷＳＤＬ１１０、１１１とを複合機１１２に送信する。即ち、抽出した部分フロー記述は、構造化文書であるＷＥＢサービス部分フロー記述文書１２１として、複合機１１２に送信される。
【００２７】
一方、複合機１１２は、これらの文書を受け取って読み込むことでＷＥＢサービス部分フロー記述文書１２１の内容を処理できる状態に移行し、レスポンスメッセージ１２０が送られてくるのを待つ。そして、プリンタ１０１内のフロー処理装置１０２（具体的には、ＷＥＢサービスフロー処理部分転送部１０３）が複合機１１２にレスポンスメッセージ１２０を送信する。即ち、ＷＥＢサービスフロー処理部分転送部１０３は、レスポンスメッセージ１２０を、部分フロー記述を実行可能な複合機１１２に転送する。
【００２８】
ここで、複合機１１２はＷＥＢサービス部分フロー記述文書１２１に記述された内容でフロー処理を開始する。そして、レスポンスメッセージ１２０に含まれるレイアウト結果であるＰＤＦファイルを含むリクエストＳＯＡＰメッセージＣ（リクエストメッセージ）１２３を生成し、ストレージ処理サービス（受信したデータの保存などを行う）１０８に送信する。その後、保存完了通知を含むレスポンスＳＯＡＰメッセージＣ（レスポンスメッセージ）１２４を受け取ると、そのまま、プリンタ１０１へそのレスポンスメッセージ１２４を返す。
【００２９】
一方、プリンタ１０１がレスポンスメッセージ１２４を受け取ると、フロー処理装置１０２は複合機１１２に移譲したフロー処理に関して処理を行わず、そのフロー処理部分を飛ばしてその次の処理を行う。そして、最終的なＷＥＢサービスフロー処理の結果をクライアント１１５に返す。
【００３０】
以上のように、大容量のレスポンスメッセージ１２０を受信しても、途中で処理が止まることなく、最後までフロー処理を行うことが可能となる。尚、レスポンスメッセージ１２０のサイズは、クライアント１１５からのリクエストメッセージに含まれるキーワードによって、異なる。従って、そのキーワードによって、ＷＥＢサービスフロー処理装置１０２単体で処理可能の場合と、ＷＥＢサービスフロー処理装置１０２単体で処理不可能の場合がある。したがって、ＷＥＢサービスフロー処理装置１０２は、クライアント１１５からリクエストメッセージが受信されるごとに、ＷＥＢサービスフロー処理装置１１４に処理を移譲するか、判断する。
【００３１】
ここでは、レスポンスＳＯＡＰメッセージのサイズによって、ＷＥＢサービスフロー処理装置１１４に処理を移譲するか、判断した。しかしながら、ＷＥＢサービスフロー処理装置１１４に処理を移譲するかの判断基準は、レスポンスＳＯＡＰメッセージのサイズに限定されるものではない。ＷＥＢサービスフロー処理装置１０２、１１４の種々の能力に基づき、ＷＥＢサービスフロー処理装置１０２で処理が不可能と、あるいは、ＷＥＢサービスフロー処理装置１１４に処理を移譲した方が良いと判断することが可能である。
【００３２】
次に、図１に示すプリンタ１０１に搭載されたフロー処理装置１０２のＷＥＢサービスフロー処理部分転送部１０３の詳細な構成を、図２を用いて説明する。図２は、図１に示すＷＥＢサービスフロー処理装置（フロー処理装置）の構成の一例を示す図である。図２に示すように、フロー処理装置１０２は、ＷＥＢサービスフロー処理部分転送部１０３、ＷＥＢサービスフロー処理部２０１、情報格納領域２０２を有する。情報格納領域２０２には、パッケージ１０４など、ＷＥＢサービスフロー記述文書、ＷＳＤＬ、その他必要となる情報などが格納され、情報格納領域２０２はＷＥＢサービスフロー処理部２０１とＷＥＢサービスフロー処理部分転送部１０３とで共有される。
【００３３】
ＷＥＢサービスフロー処理部分転送部１０３の構成及び処理を説明する。ＷＥＢサービスフロー処理部分転送部１０３は、メッセージサイズ上限設定処理部２１１、メッセージ受信処理部２１２、メッセージサイズ判断処理部２１３、部分フロー記述抽出処理部２１４、転送処理部２１５から構成される。
【００３４】
まず、メッセージサイズ上限設定処理部２１１は情報格納領域２０２などから上限値設定ファイル２０３を読み込み、自分が処理可能なメモリ使用量の上限値として設定しておく。設定値としては、例えば２５６ＭＢ、５１２ＭＢなどの数値が設定されている。
【００３５】
メッセージ受信処理部２１２は、ＷＥＢサービス（例えばレイアウト処理サービス１０７）からのレスポンスＳＯＡＰメッセージをストリームで受信し、メッセージサイズ判断処理部２１３へ出力する。メッセージサイズ判断処理部２１３は、メッセージサイズ上限設定処理部２１１から上限値を取得しておき、レスポンスＳＯＡＰメッセージをストリームから読み込み、バッファに格納していきながら、メッセージサイズを確認する。バッファに格納している最中に、取得してある上限値を超える（または設定値以上）と判断した場合は、バッファに格納するのを停止し、フロー処理を他のフロー処理装置１１４に移譲する。この場合、後述するように、レイアウト処理サービス１０７からのレスポンスメッセージ１２０の受信は継続するが、並行して、バッファに格納済みのレスポンスメッセージ１２０を他のフロー処理装置１１４に送信する。
【００３６】
部分フロー記述抽出処理部２１４は、現在どこまでフロー処理を実行したかという内容２２１をＷＥＢサービスフロー処理部２０１から取得する。そして、現在実行中のフロー処理の内容が記述されたＷＥＢサービスフロー記述文書２２２を情報格納領域２０２から取得する。更に、受信したレスポンスＳＯＡＰメッセージを使用して処理を行う次のフロー処理記述部分を特定し、抽出して新たにＷＥＢサービス部分フロー処理記述文書を生成する。この処理は、ＷＥＢサービス部分フロー記述文書の内容を実行するために必要である。また、転送先のフロー処理装置がフロー処理を行うＷＥＢサービスとして起動させるために必要なＷＥＢサービスフロー処理サービス用ＷＳＤＬも生成する。
【００３７】
また、抽出した部分フロー処理に関しては実行しないで、処理を次に飛ばす指示２２３をＷＥＢサービスフロー処理部２０１に送る。そして、ＷＥＢサービスフロー処理部２０１は、情報格納領域２０２に移譲先からのレスポンスＳＯＡＰメッセージが書き込まれるのを監視して待つ。
【００３８】
次に、転送処理部２１５は、部分フロー記述抽出処理部２１４が生成したＷＥＢサービス部分フロー処理記述文書とＷＥＢサービスフロー処理サービス用ＷＳＤＬとを他のＷＥＢサービスフロー処理装置１１４に送信する。尚、部分フローを実行するために必要となるＷＳＤＬや移譲先のフロー処理装置の位置を特定するエンドポイント情報などは情報格納領域２０２から取得する。それらの情報を利用して、転送処理部２１５は、レスポンスＳＯＡＰメッセージを、途中まで読み込んだバッファの内容と、メッセージサイズ判断処理部２１３が途中まで読んだ残りのストリームを、ストリームとして他のフロー処理装置１１４に送信する。
【００３９】
他のフロー処理装置１１４で部分フロー処理が実行され、処理の結果としてレスポンスメッセージ１２４が返送されると、メッセージ受信処理部２１２が受信し、メッセージサイズ判断処理部２１３が処理を行う。レスポンスＳＯＡＰメッセージのサイズが上限値を超えなければ、情報格納領域２０２にそのレスポンスＳＯＡＰメッセージを格納する。一方、移譲先からのレスポンスＳＯＡＰメッセージが情報格納領域２０２に書き込まれると、ＷＥＢサービスフロー処理部２０１は、書き込まれたメッセージを利用して次の処理を行う。
【００４０】
上述した処理の流れを実現することにより、ＷＥＢサービスフロー処理部の処理が受信したレスポンスＳＯＡＰメッセージのサイズによって、処理不能になるということを防ぐことが可能となる。
【００４１】
次に、ＷＥＢサービスフロー処理部分転送部１０３の処理内容をＷＥＢサービスフロー記述文書の具体例を用いて説明する。
【００４２】
図３は、ＷＥＢサービスフロー記述文書の構成の一例を示す図である。図３において、３０１はＷＥＢサービスフロー記述文書１０５の記述例である。図３に示す例では、プログラムで言う変数宣言などを記述する宣言部３０２と、フロー処理のロジックなどを記述するロジック部３０３から構成されている。
【００４３】
宣言部３０２において、３０４はＷＥＢサービスフロー記述文書３０１を特定する情報、及び呼び出し先各ＷＥＢサービスのＷＳＤＬ１０９、１１０、１１１を特定する情報である。３０５はＷＥＢサービスフロー処理で用いる変数情報である。
【００４４】
一方、ロジック部３０３において、３０６はクライアントからリクエストメッセージを受信する処理内容である。３０７は受信したクライアントリクエストメッセージから検索キーワードを抽出し、検索処理サービス用ＷＳＤＬ１０９の情報を基に、検索キーワードを付加した形で検索処理サービス１０６へのリクエストメッセージ１１７を生成する処理内容である。３０８は生成したリクエストメッセージ１１７を用いて検索処理サービス１０６を呼び出し、検索処理を行わせ、検索結果のレスポンスメッセージ１１８を受信する処理内容である。
【００４５】
３０９は検索処理サービス１０６から受信したレスポンスメッセージ１１８から検索結果を抽出し、レイアウト処理サービス用ＷＳＤＬ１１０の情報に基づき、検索結果を付加した形でリクエストメッセージ１１９を生成する処理内容である。また、このリクエストメッセージ１１９はレイアウト処理サービス１０７へ送信される。３１０は生成したリクエストメッセージ１１９を用いてレイアウト処理サービス１０７を呼び出し、レイアウト処理を行わせ、レイアウト結果のレスポンスメッセージ１２０を受信する処理内容である。３１１はレイアウト処理サービス１０７から受信したレスポンスメッセージ１２０からレイアウト結果を抽出する。そして、ストレージ処理サービス用ＷＳＤＬ１１１の情報に基づきレイアウト結果を付加した形でストレージ処理サービス１０８へのリクエストメッセージを生成する処理内容である。
【００４６】
３１２は生成したリクエストメッセージを用いてストレージ処理サービス１０８を呼び出し、ストレージ処理を行わせ、ストレージ処理結果のレスポンスメッセージを受信する処理内容である。３１３はストレージ処理サービス１０８から受信したレスポンスメッセージからストレージ処理結果を抽出し、その結果を付加した形でクライアントへのレスポンスメッセージを生成する処理内容である。３１４は生成したレスポンスメッセージを用いて、クライアントへ返信する処理内容である。
【００４７】
また、３１５はＷＥＢサービスフロー記述文書の記述例３０１に基づく具体的なＷＥＢサービスフロー記述文書である。この例では、ＷＳＢＰＥＬというＷＥＢサービスの処理フローをＸＭＬ文書で記述するための標準仕様の方式で記述されている。ここで、ＷＳＢＰＥＬはWeb Service Business Process Execution Languageの略、ＸＭＬはeXtensible Markup Languageの略である。ここで、ＷＥＢサービスフロー記述文書の記述例３０１と、ＷＥＢサービスフロー記述文書３１５とを比較する。
【００４８】
３１６は情報３０４の記述内容に対応し、ＷＥＢサービスフロー記述文書３１５を特定する情報及び呼び出し先各ＷＥＢサービスのＷＳＤＬ１０９、１１０、１１１を特定する情報が＜process＞タグの属性値としてネームスペースで記述されている。３１７は変数情報３０５の記述内容に対応し、フロー処理を行うときに使用するメッセージ変数の型情報がそれぞれ＜variable＞タグで記述されている。
【００４９】
３１８は処理内容３０６の記述内容に対応し、クライアントからリクエストメッセージを受信する処理内容が＜receive＞タグで記述されている。３１９は処理内容３０７の記述内容に対応し、検索処理サービス用ＷＳＤＬ１０９の情報に基づき、検索キーワードを付加した形で検索処理サービス１０６へのリクエストメッセージ１１７を生成する処理内容が＜assign＞タグなどで記述されている。３２０は処理内容３０８の記述内容に対応し、生成したリクエストメッセージ１１７を用いて検索処理サービス１０６を呼び出し、検索処理を行わせ、検索結果のレスポンスメッセージ１１８を受信する処理内容が＜invoke＞タグで記述されている。
【００５０】
３２１〜３２５は処理内容３０９〜３１３にそれぞれ対応している。３２６は処理内容３１４の記述内容に対応し、クライアントにレスポンスメッセージを返信する処理内容が＜reply＞タグで記述されている。
【００５１】
以上のように、ロジック部３０３の記述内容に対応する＜receive＞、＜assign＞、＜invoke＞、＜reply＞タグは、ＷＳＢＰＥＬではアクティビティと呼ばれる。これらのタグはＷＥＢサービスフロー処理の表現を抽象化したものである。例えば、＜receive＞タグはメッセージの受信を、＜assign＞タグはメッセージの加工、変換を、＜invoke＞タグは外部のＷＥＢサービスの呼び出しを、＜reply＞タグはメッセージの返信を示す。
【００５２】
次に、レスポンスＳＯＡＰメッセージの具体例を用いてメッセージサイズ判断処理部の処理を説明する。図４は、レスポンスメッセージ１２０の具体例を示す図である。４０１はレスポンスＳＯＡＰメッセージの具体例であり、＜Body＞タグ以下の４０２に示す部分がＷＥＢサービスフロー処理装置１０２で利用される。４０３に示す部分に、レイアウト処理サービス１０７でレイアウトされて生成されたＰＤＦの情報がBase64binary形式で埋め込まれている。
【００５３】
メッセージサイズ判断処理部２１３では、４０４に示すように、ＳＯＡＰメッセージがストリームとして渡され、メッセージの上部からバッファ４０５に読み込んでいく（４０６）。
【００５４】
４０７は上限設定値であり、４０８で示すところまで読み込むと、４０９に示すようにバッファの使用容量が上限設定値４０７に達するので、その時点で、ＷＥＢサービスフロー処理装置１０２では処理を続けられないと判断する。そして、転送処理部２１５は、バッファ４０５からＳＯＡＰメッセージを読み出し、ＷＥＢサービスフロー処理装置１１４に送信する。ＷＥＢサービスフロー処理装置１１４に送信したＳＯＡＰメッセージをバッファに保存しておく必要はないので、新たに受信したＳＯＡＰメッセージをバッファに格納することが可能である。この新たに受信したＳＯＡＰメッセージも、ＷＥＢサービスフロー処理装置１１４に順次送信される。すなわち、転送処理部２１５が、バッファ４０５の内容４０９と、残りの情報が含まれるストリーム４１０とを、ストリームとして移譲先のＷＥＢサービスフロー処理装置１１４に送信する。
【００５５】
ここで、部分フロー記述抽出処理部２１４の具体的な処理内容を、図５を用いて説明する。図５は、ＷＥＢサービスフロー処理記述文書の具体例を示す図である。図５において、５０１は３１５に示すＷＥＢサービスフロー記述文書の具体例と同じである。
【００５６】
ＷＥＢサービスフロー処理部２０１は、このＷＥＢサービスフロー記述文書５０１の内容を順に実行していく。そして、５０２のレイアウト処理サービス１０７へのinvokeアクティビティの処理で、上限設定値４０７を超えるレスポンスＳＯＡＰメッセージ４０１が返される。更にメッセージサイズ判断処理部２１３から部分フロー記述抽出処理部２１４に部分フロー記述抽出処理が指示される。
【００５７】
この指示により、部分フロー記述抽出処理部２１４は、この５０２のinvokeアクティビティの処理で受け取るはずであった５０３に示すlayoutoutputという変数が示すデータに関連した処理部分を特定する。そして、部分的に抽出するフロー記述を特定する。
【００５８】
この場合、５０３に示すlayoutoutputという変数は、５０４に示すようにmessageTypeがlayoutwsdl:Response型であると定義されている。また、このlayoutoutputという変数５０３の型のプレフィックスlayoutwsdlは５０５に示すhttp://www.sample.com/LayoutService.wsdlのネームスペースを指す。したがって、このネームスペースにより必要なＷＳＤＬを特定することができ、Response型がどのような型であるかがわかる。
【００５９】
これらの情報から、layoutoutput変数からstorageinput変数にメッセージのデータをコピーするassignアクティビティの処理が、関連すると判断できる。更に、メッセージのデータをコピーされたstorageinput変数を使用したinvokeアクティビティの処理も関連すると判断できる。これらの関連する処理を、５０６で示す。
【００６０】
５０６に示すinvokeアクティビティの処理で一旦外部に処理が移るので、この部分までを部分フロー記述として抽出することができると判断する。ＷＥＢサービスフロー処理部２０１は、５０７に示すメッセージ変数の情報が情報格納領域２０２に格納されたかどうかを確認しながら待機する。この情報は、ＷＥＢサービスフロー処理装置１１４により情報格納領域２０２に格納される。
【００６１】
部分フロー記述抽出処理部２１４は、部分フロー記述部分を特定すると、５０６の部分フロー記述の内容を、転送先の例えば他のフロー処理装置１１４で実行させるために必要な情報を生成する。
【００６２】
まず、この部分フロー記述部分を５０８に示す新たなＷＥＢサービスフロー記述文書として生成する。この例では、５０６の部分フロー記述は、５０９に示す部分に記述され、その前に、５１０に示す処理を追加し、その後ろに、５１１に示す処理を追加する。
【００６３】
５１０には、メッセージの転送先でメッセージを受け取るreceiveアクティビティの処理と、layoutoutput変数にメッセージのデータをコピーするassignアクティビティの処理を追加する。
【００６４】
一方、５１１には、５０９のinvokeアクティビティの処理によって受け取ったメッセージのデータをコピーするassignアクティビティの処理と、メッセージの転送元に５０９の処理結果を返信するreplyアクティビティの処理を追加する。そして、これらの処理を行うために必要な情報を５１２に示すように付加することで、新たなＷＥＢサービスフロー記述文書を生成する。更に、この文書の生成と同時に、転送先でフロー処理を行うＷＥＢサービスとして起動させるために必要な５１３に示すＷＥＢサービスフロー処理サービス用ＷＳＤＬも自動生成する。このＷＳＤＬは、例えば図１に示す複合機搭載ＷＥＢサービスフロー処理サービス用ＷＳＤＬ１２２に相当する。    
部分フロー記述抽出処理部２１４が５１３に示すＷＥＢサービスフロー処理サービス用ＷＳＤＬを自動生成する処理を説明する。ＷＳＤＬ５１３は、図１中の複合機１１２が、プリンタ１０１から、部分フローの実行を開始する指示を、Ｗｅｂサービスのリクエストとして受け付けられるようにするために利用される。
【００６５】
ＷＳＤＬ５１３は、部分フロー記述抽出処理部２１４が、予め用意したテンプレートに、必要な情報を埋めることで生成する。図６の６０１にある点線による四角囲み部分以外はテンプレートとして元々用意している。
【００６６】
本実施形態では、このテンプレートに値を埋めるために、図１中のレイアウト処理サービス用ＷＳＤＬ１１０と、ストレージ処理サービス用ＷＳＤＬ１１１を使用する。図６にある６０２は、レイアウト処理サービス用ＷＳＤＬ１１０の具体例の記述であり、６０３は、ストレージ処理サービス用ＷＳＤＬ１１１の具体例である。
【００６７】
レイアウト処理サービスの返りのレスポンスメッセージ１２０が大容量の場合、次のストレージ処理サービス１０８への処理を委譲するので、まずレイアウト処理サービス用ＷＳＤＬ６０２から６０４に示される、返りの値の型を宣言している部分を参照する。部分フロー記述抽出処理部２１４は、６０５にあるように返りの値の型はbase64binaryであると解釈する。つまり、レイアウト処理サービス１０７の処理結果が、レイアウト処理されたＰＤＦのようなバイナリデータであると判断することができる。よって、図１の中のＷＥＢサービスフロー処理装置１１４が、このバイナリデータが含まれるSOAPメッセージをリクエストとして受け付けるようにするため、リクエスト時の型を宣言する６０６に６０５と同じ型を挿入する。
【００６８】
そして、ストレージ処理サービス１０８の処理結果を図１中のプリンタ１０１に返すので、ストレージ処理サービスのＷＳＤＬ６０３にある６０７に記述してある返りの値の型を宣言している部分を参照する。部分フロー記述抽出処理部２１４は、６０８にあるように返りの値の型はstringであると解釈する。よって、図１中のＷＥＢサービスフロー処理装置１１４が、このstringが含まれるSOAPメッセージをレスポンスとして返すようにするため、レスポンス時の型を宣言する６０９に６０８と同じ型を挿入する。
【００６９】
部分フロー記述抽出処理部２１４は、その他の値としては、６１０にこのWSDL６０１を特定するためのネームスペースを決めて挿入する。
【００７０】
以上のようにして、部分フロー記述抽出処理部２１４は図５中のWSDL５１３を自動生成する。
【００７１】
本実施形態によれば、資源（例えばハードディスクやメモリ）の少ないデバイス機器において、大容量のＳＯＡＰメッセージを受信しても、他の資源豊富なデバイス機器に一部の処理を移譲する。これにより、一連のＷＥＢサービスフロー処理を停止させずそのまま継続させることが可能となる。
【００７２】
次に、本実施形態の変形例１について説明する。本実施形態では、上限値設定ファイル２０３に設定される値は、２５６ＭＢ、５１２ＭＢなどの定数であった。変形例１では、上限値設定ファイル２０３に設定する値を、例えば２０％、３０％などの割合を設定することで、デバイス機器のそのときのハードウェア資源の使用状況に応じてフロー処理中に扱うメッセージサイズの上限を可変する場合を説明する。
【００７３】
図７は、変形例１におけるＷＥＢサービスフロー処理装置（フロー処理装置）の構成の一例を示す図である。尚、図２に示す構成と同じものには同一の符号を付し、その説明は省略する。
【００７４】
上限値設定ファイル２０３に、例えば３０％の割合が設定されるとする。メッセージサイズ上限設定処理部２１１において、メッセージサイズ判断処理部２１３から上限値の確認の指示がきた時点で、情報格納領域２０２に対して空き容量がどれぐらいあるかを確認する処理を行う（６７１）。情報格納領域２０２の全体の要領が５１２ＭＢとして、現在４１２ＭＢを使用中で、残りの空き容量が１００ＭＢであった場合、１００ＭＢの３０％までを残り使用できると判断し、４１２ＭＢに３０ＭＢを追加した４４２ＭＢを上限値として設定する。
【００７５】
変形例１によれば、デバイス機器のそのときのハードウェア資源の使用状況に応じて、フロー処理中に扱うメッセージサイズの上限を変更することが可能となる。
【００７６】
次に、本実施形態の変形例２について説明する。本実施形態では、メッセージサイズ判断処理部２１３でメッセージの処理サイズをどのように判断するかをメッセージにBase64binary形式、つまり、テキストの情報が埋め込まれている例を説明した。変形例２では、メッセージにテキストではなく、バイナリが埋め込まれた場合の処理を説明する。
【００７７】
メッセージに、例えば圧縮されたバイナリ情報が埋め込まれていた場合、そのままではサイズを判断することができない。そのため、メッセージサイズ判断処理部２１３では、圧縮されたバイナリ情報を１度解凍し、解凍したバイナリ情報のサイズを計測することによりメッセージの処理サイズを判断する。
【００７８】
変形例２によれば、メッセージの処理サイズとして、テキストだけでなく、バイナリを扱うことも可能となる。
【００７９】
ＷＥＢサービスフロー処理部分転送部を、プリンタなどの資源の少ないデバイス機器へ搭載する例を挙げたが、パーソナルコンピュータなどの情報処理装置に搭載しても良い。その場合、上述した本発明の機能を実現するソフトウェアのプログラムコードを記録した記録媒体を情報処理装置に供給し、情報処理装置のコンピュータ（ＣＰＵ又はＭＰＵ）が記録媒体に格納されたプログラムコードを読み出して実行する。
【００８０】
図８は、情報処理装置のハードウェア構成の一例を示す図である。図８に示すように、情報処理装置は、入力装置７０１と、表示装置７０２と、記憶媒体ドライブ装置７０３と、ＲＯＭ７０５と、ＲＡＭ７０６と、ＣＰＵ又はＭＰＵ７０７と、インターフェース装置７０８と、ＨＤ（ハードディスク）７０９とを含む。
【００８１】
入力装置７０１は、情報処理装置の操作者（オペレータ）が操作するキーボード及びマウスなどで構成され、情報処理装置に各種操作情報などを入力するのに用いられる。表示装置７０２は、情報処理装置の操作者が利用するディスプレイなどで構成され、各種情報（又は画面）などを表示するのに用いられる。インターフェース装置７０８は、情報処理装置をネットワークなどに接続するインターフェースである。前述した処理のフローなどに係るプログラムは、例えばＣＤ−ＲＯＭなどの記憶媒体７０４によって情報処理装置に提供されるか、ネットワークなどを通じてダウンロードされる。記憶媒体７０４は、記憶媒体ドライブ装置７０３にセットされ、プログラムが記憶媒体７０４から記憶媒体ドライブ装置７０３を介してＨＤ７０９にインストールされる。ＲＯＭ７０５は情報処理装置の電源投入時に最初に読み込まれるプログラムなどを格納する。ＲＡＭ７０６は、情報処理装置のメインメモリである。ＣＰＵ７０７は、ＨＤ７０９よりプログラムを読み出して、ＲＡＭ７０６に格納し、プログラムを実行することで、前述の処理内容を実現したりする。また、ＨＤ７０９は、プログラム以外に、例えば、ＷＥＢサービスフロー記述文書、ＷＳＤＬ文書などを格納する。
【００８２】
尚、本発明は複数の機器（例えば、ホストコンピュータ、インターフェース機器、リーダ、プリンタなど）から構成されるシステムに適用しても、１つの機器からなる装置（例えば、複写機、ファクシミリ装置など）に適用しても良い。
【００８３】
また、他の形態では、前述した実施形態の機能を実現するソフトウェアのプログラムコードを記録した記録媒体を、システム或いは装置に供給し、そのシステム或いは装置のコンピュータが記録媒体に格納されたプログラムコードを読出し実行する。
【００８４】
この形態では、コンピュータ読み取り可能な記録媒体から読出されたプログラムコード自体が前述した実施形態の機能を実現し、そのプログラムコードを記憶した記録媒体は本発明を構成する。
【図１】
2009301538.tif 000003
【図２】
2009301538.tif 000004
【図３】
2009301538.tif 000005
【図４】
2009301538.tif 000006
【図５】
2009301538.tif 000007
【図６】
2009301538.tif 000008
【図７】
2009301538.tif 000009
【図８】
2009301538.tif 000010