(57)【要約】【課題】機器間のデータの送受信を効率化した処理実行システムを提供すること。【解決手段】第１の機器と、第２の機器とがネットワークを介して接続された処理実行システムであって、第２の機器は、処理定義情報及び前記処理対象データを受信する受信手段３３と、処理定義情報を解析して前記次処理を自機で実行するか否かを判定する処理実行制御手段３１と、処理実行制御手段が自機で実行すると判定した場合、前記次処理を前記処理対象データに対し実行する処理実行手段２１と、実行順に従って、次処理の次に処理することが定義された処理を新たな前記次処理に変更して前記処理定義情報を更新する定義情報更新手段２２と、自機以外の前記第２の機器に前記処理定義情報及び前記処理対象データを送信する第２の送信手段３２と、を有することを特徴とする。【選択図】図１
2014134873.tif 000002
【特許請求の範囲】
【請求項１】
複数の処理と処理の実行順の設定を受け付ける第１の機器と、前記処理を実行する１台以上の第２の機器とがネットワークを介して接続された処理実行システムであって、
前記第１の機器は、各処理の処理内容と次に実行すべき次処理が定義された処理定義情報及び処理対象データ若しくは処理対象データの指示情報を前記第２の機器に送信する第１の送信手段を有し、
前記第２の機器は、前記処理定義情報及び前記処理対象データ若しくは処理対象データの指示情報を受信する受信手段と、
前記処理定義情報を解析して前記次処理を自機で実行するか否かを判定する処理実行制御手段と、
前記処理実行制御手段が自機で実行すると判定した場合、前記次処理を前記処理対象データに対し実行する処理実行手段と、
前記実行順に従って、前記次処理の次に処理することが定義された処理を新たな前記次処理に変更することで前記処理定義情報を更新する定義情報更新手段と、
自機以外の前記第２の機器に前記処理定義情報及び前記処理対象データを送信する第２の送信手段と、
を有することを特徴とする処理実行システム。
【請求項２】
前記処理定義情報には各処理毎に処理を実行する前記第２の機器の識別情報が対応づけられており、
前記処理実行制御手段は、前記次処理を実行する前記第２の機器の前記識別情報が自機の前記識別情報と一致するか否か、及び、前記次処理と自機の前記識別情報が対応づけられた処理とが一致するか否か、に基づき前記次処理を自機で実行するか否かを判定する、
ことを特徴とする請求項１記載の処理実行システム。
【請求項３】
前記処理実行手段が前記次処理を前記処理対象データに対し実行し、前記定義情報更新手段が前記処理定義情報を更新した後、
前記処理実行制御手段は、再度、前記次処理を自機で実行するか否かを判定し、自機で実行すると判定した場合、前記処理実行手段が前記次処理を前記処理対象データに対し実行し、
自機で実行しないと判定した場合、前記第２の送信手段が自機以外の前記第２の機器に前記処理定義情報及び前記処理対象データを送信する、
ことを特徴とする請求項１又は２記載の処理実行システム。
【請求項４】
前記処理実行制御手段は、
前記次処理を実行する他の第２の機器がファイアウォールよりも外側に存在すると判断した場合、前記他の第２の機器による前記次処理の実行を監視する監視処理が前記次処理として定義された第２の処理定義情報を作成し、
前記第２の送信手段は前記次処理を実行する前記他の第２の機器に前記処理定義情報と前記処理対象データを送信し、
自機である前記第２の機器の前記処理実行制御手段は、前記第２の処理定義情報の前記次処理を自機で実行するか否かを判定し、
前記処理実行制御手段が自機で実行すると判定した場合、前記処理実行手段は前記次処理として前記監視処理を実行する、
ことを特徴とする請求項２記載の処理実行システム。
【請求項５】
自機である前記第２の機器は、前記監視処理を実行して前記他の第２の機器から前記次処理が更新された前記処理定義情報と前記処理対象データを受信し、
自機である前記第２の機器の前記処理実行制御手段は、前記次処理を自機で実行するか否かを判定し、自機で実行すると判定した場合、前記処理実行手段が前記次処理を前記処理対象データに対し実行し、
自機で実行しないと判定した場合、前記第２の送信手段は自機以外の第２の機器に前記処理定義情報及び前記処理対象データを送信する、
ことを特徴とする請求項４記載の処理実行システム。
【請求項６】
前記処理定義情報には、第１の機器を操作したユーザのユーザ情報が記述されており、
前記第２の機器は、ユーザ情報が記憶されているユーザ情報記憶手段から読み出したユーザ情報と、前記処理定義情報に記述されたユーザ情報とが一致するか否かに基づきユーザ認証が成立したか否かを判定する認証手段を有し、
認証が成立した場合、前記処理実行手段が、前記次処理を前記処理対象データに対し実行し、
前記定義情報更新手段が前記処理定義情報を更新すると共に、前記処理実行制御手段は、前記処理定義情報のユーザ情報を、前記次処理を実行する前記第２の機器の前記認証手段が認証に使用するユーザ情報に更新する、
ことを特徴とする請求項１〜５いずれか１項記載の処理実行システム。
【請求項７】
前記第２の機器は、
各第２の機器に対応づけて前記認証手段が認証に使用するユーザ情報が登録された装置別ユーザ情報を有し、
前記処理実行制御手段は、前記装置別ユーザ情報において前記次処理を実行する前記第２の機器に対応づけられたユーザ情報により、前記処理定義情報のユーザ情報を更新する、
ことを特徴とする請求項６記載の処理実行システム。
【請求項８】
前記第２の機器は、
各第２の機器に対応づけて前記認証手段が認証に使用するユーザ情報の種類が登録された装置別ユーザ情報を有し、
前記処理実行制御手段は、前記装置別ユーザ情報において前記次処理を実行する前記第２の機器に対応づけられたユーザ情報の種類を読み出し、該ユーザ情報の種類のユーザ情報を収集して、前記処理定義情報のユーザ情報を更新する、
ことを特徴とする請求項６記載の処理実行システム。
【請求項９】
複数の処理と処理の実行順の設定を受け付ける機器とネットワークを介して通信可能な情報処理装置であって、
各処理の処理内容と次に実行すべき次処理が定義された処理定義情報及び処理対象データ若しくは処理対象データの指示情報を受信する受信手段と、
前記処理定義情報を解析して前記次処理を自機で実行するか否かを判定する処理実行制御手段と、
前記処理実行制御手段が自機で実行すると判定した場合、前記次処理を前記処理対象データに対し実行する処理実行手段と、
前記実行順に従って、前記次処理の次に処理することが定義された処理を新たな前記次処理に変更して前記処理定義情報を更新する定義情報更新手段と、
自機以外の装置に前記処理定義情報及び前記処理対象データを送信する送信手段と、
を有することを特徴とする情報処理装置。
【請求項１０】
複数の処理と処理の実行順の設定を受け付ける機器とネットワークを介して通信可能な情報処理装置に、
各処理の処理内容と次に実行すべき次処理が定義された処理定義情報及び処理対象データ若しくは処理対象データの指示情報を受信する受信ステップと、
前記処理定義情報を解析して前記次処理を自機で実行するか否かを判定する処理実行制御ステップと、
前記処理実行制御手段が自機で実行すると判定した場合、前記次処理を前記処理対象データに対し実行する処理実行ステップと、
前記実行順に従って、前記次処理の次に処理することが定義された処理を新たな前記次処理に変更して前記処理定義情報を更新する定義情報更新ステップと、
自機以外の装置に前記処理定義情報及び前記処理対象データを送信する送信ステップと、を実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、処理を実行する１台以上の機器がネットワークを介して接続された処理実行システムに関する。
【背景技術】
【０００２】
ネットワークに接続された各機器が、設定された手順でデータを処理するネットワークシステムが知られている。各機器は、データをそれぞれ特有の機能で処理するモジュール（例えば、プラグイン、アプリケーションなどと呼ばれる）を有しており、モジュールの組み合わせに応じて様々な処理が可能である（例えば、特許文献１参照。）。特許文献１には、複数の外部装置と通信を行い、ある外部装置から受信したデータを別の外部装置に送信して処理させることにより、複数の外部装置の機能を組み合わせたデータ処理を実現する通信装置が開示されている。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
モジュールを組み合わせてデータを処理することをワークフローと称し、ワークフローの処理手順をフロー定義情報と称することにする。例えば、フロー定義情報に、「原稿のスキャン→ＯＣＲ→電子メール送信」と設定されている場合、１台以上の機器の各モジュールによりワークフローを実行する。
【０００４】
しかしながら、従来のネットワークシステムでは、ワークフロー制御を行う制御装置が中心になってワークフローに伴うジョブデータ（例えばスキャンされた画像データ）を各機器に配信するため、制御装置やネットワークに負荷が集中しやすいという問題がある。
【０００５】
図１８はネットワークシステムのジョブデータの転送例を示す図である。
Ａ．ＭＦＰ（Multi Function Peripheral）がスキャナーで読み取ったジョブデータは制御装置に送信される。
Ｂ１．制御装置は、ＯＣＲ処理をするためにジョブデータをサーバ１に送信する。
Ｂ２．サーバ１はＯＣＲ処理したジョブデータを制御装置に送信する。
Ｃ１．制御装置は、ジョブデータを電子メールで送信するためにサーバ２に送信する。
Ｃ２．サーバ２は送信結果を制御装置に送信する。
このように、複数の機器でワークフローを実行する場合、制御装置にジョブデータの送受信が集中してしまう。
【０００６】
本発明は、上記課題に鑑み、機器間のデータの送受信を効率化した処理実行システムを提供することを目的とする。
【課題を解決するための手段】
【０００７】
本発明は、複数の処理と処理の実行順の設定を受け付ける第１の機器と、前記処理を実行する１台以上の第２の機器とがネットワークを介して接続された処理実行システムであって、前記第１の機器は、各処理の処理内容と次に実行すべき次処理が定義された処理定義情報及び処理対象データ若しくは処理対象データの指示情報を前記第２の機器に送信する第１の送信手段を有し、前記第２の機器は、前記処理定義情報及び前記処理対象データ若しくは処理対象データの指示情報を受信する受信手段と、前記処理定義情報を解析して前記次処理を自機で実行するか否かを判定する処理実行制御手段と、前記処理実行制御手段が自機で実行すると判定した場合、前記次処理を前記処理対象データに対し実行する処理実行手段と、前記実行順に従って、前記次処理の次に処理することが定義された処理を新たな前記次処理に変更して前記処理定義情報を更新する定義情報更新手段と、自機以外の前記第２の機器に前記処理定義情報及び前記処理対象データを送信する第２の送信手段と、を有することを特徴とする。
【発明の効果】
【０００８】
機器間のデータの送受信を効率化した処理実行システムを提供することができる。
【図面の簡単な説明】
【０００９】
【図１】処理実行システムの概略的な特徴を説明する図の一例である。
【図２】処理実行システムのシステム構成図の一例である。
【図３】ＭＦＰとしてのワークフロー実行要求装置のハードウェア構成図の一例である。
【図４】配信サーバのハードウェア構成図の一例である。
【図５】フロー定義情報の一例を説明する図の一例である。
【図６】ワークフロー実行要求装置、配信サーバ、及び、サービス提供装置の機能ブロック図の一例を示す図である。
【図７】機器決定テーブルの一例を示す図である。
【図８】処理実行システムの全体的な動作手順の一例を示す図である。
【図９】配信サーバ又はサービス提供装置が処理を実行する際の手順を示すフローチャート図の一例である。
【図１０】処理実行システムのシステム構成図の一例である（実施例２）。
【図１１】フロー定義情報の作成を模式的に説明する図の一例である。
【図１２】処理実行システムの全体的な動作手順を一例を示す図である（実施例２）。
【図１３】配信サーバ又はサービス提供装置が処理を実行する際の手順を示すフローチャート図の一例である（実施例２）。
【図１４】ワークフロー実行要求装置、配信サーバ、及び、サービス提供装置の機能ブロック図の一例を示す図である（実施例３）。
【図１５】いくつかのパターンの対応づけ情報を模式的に説明する図の一例である。
【図１６】更新の前後のフロー定義情報におけるユーザ情報の一例を示す図である。
【図１７】配信サーバ又はサービス提供装置が処理を実行する際の手順を示すフローチャート図の一例である（実施例３）。
【図１８】ネットワークシステムのジョブデータの転送例を示す図の一例である。
【発明を実施するための形態】
【００１０】
以下、図面を参照して本発明の実施形態について説明する。しかしながら、本発明の技術的範囲が、本実施の形態に限定されるものではない。
【実施例１】
【００１１】
図１は、本実施形態の処理実行システム５００の概略的な特徴を説明する図の一例である。ネットワーク４００を介して、ＭＦＰ（Multi Function Peripheral）２０１、配信サーバ１００、及び、サービス提供装置（以下、区別する場合、サービス提供装置１，２という）３００が通信可能に接続されている。
【００１２】
(i)  ユーザはＭＦＰ２０１を操作して１つ以上の処理を含むワークフローを定義する。例えば、「ＰＤＦ変換→電子メール送信」というワークフローを設定したとする。この一連の処理がフロー定義情報となる。フロー定義情報には次に実行される処理がカレントポイント（特許請求の範囲の次処理に相当する）として指示されている。開始前はＰＤＦ変換がカレントポイントである。ＭＦＰ２０１はフロー定義情報とジョブデータ（画像データなど）を配信サーバ１００に送信する。
【００１３】
(ii)  配信サーバ１００はフロー定義情報を解析して、フロー定義情報の各処理にサービス提供装置を対応づけてフロー定義情報を更新する。ＰＤＦ変換、電子メール送信をそれぞれ行うサービス提供装置１，２が決定される。なお、配信サーバが処理を実行する場合もある。
【００１４】
(iii)  配信サーバ１００は、カレントポイントが設定された処理を行うサービス提供装置１にフロー定義情報とジョブデータを送信する。
【００１５】
(iv)  サービス提供装置１はフロー定義情報を解析して自機が実行対象機器か否かを判定し、自機が実行対象機器の場合はカレントポイントにて指示される処理を実行する。そして、サービス提供装置１はフロー定義情報の次の処理にカレントポイントを更新して、次に処理を行うサービス提供装置２にフロー定義情報とジョブデータを送信する。
【００１６】
(v)  サービス提供装置２はフロー定義情報を解析して自機が実行対象機器か否かを判定し、自機が実行対象機器の場合はカレントポイントにて指示される処理を実行する。そして、サービス提供装置２はフロー定義情報の次の処理にカレントポイントを更新して、次に処理を行うサービス提供装置にフロー定義情報とジョブデータを送信する。この例では、次に行う処理がないのでワークフローはここで終了する。
【００１７】
したがって、配信サーバ１００は最初にフロー定義情報とジョブデータを送信した後、各サービス提供装置との間の通信量を抑制できるので（主に実行結果の受信を行う）、配信サーバ１００に処理負荷や配信サーバ１００が接続されたネットワークに通信負荷が集中することを抑制できる。
【００１８】
〔構成例〕
図２は、処理実行システム５００のシステム構成図の一例を示す。配信サーバ１００を中心に、ネットワーク４００を介してワークフロー実行要求装置２００と１台以上のサービス提供装置３００が接続されている。配信サーバ１００が中心にあるのは処理上の位置を示すにすぎず、ワークフロー実行要求装置２００とサービス提供装置３００も互いにネットワーク４００を介して接続されている。
【００１９】
ネットワーク４００は、ＬＡＮ、又は、複数のＬＡＮがルータなどを介して接続されたＷＡＮである。また、ファイアウォールを考慮しなければインターネットを含んでいてよい。ネットワーク４００は有線で構築されていてもよいし、一部又は全てを無線ＬＡＮ（IEEE802.11b/a/g/n等）で構築されていてもよい。さらに、ネットワーク４００は携帯電話網、WiMAX網、ＰＨＳ網などの移動体向けに構築された通信網を含む。なお、処理実行システム５００の各装置が無線ＬＡＮのアドホックモードなどで１対１で通信しても、ネットワーク４００に含めることとする。
【００２０】
ワークフロー実行要求装置２００はワークフローの実行を配信サーバ１００に要求する装置である。例えば、ＭＦＰ２０１、携帯端末２０２、クライアント端末２０３が図示されているが、通信機能を備えた情報処理装置はワークフロー実行要求装置２００になりうる。ワークフロー実行要求装置２００は処理実行システム５００に１台以上存在する。ＭＦＰ２０１は、コピー機、スキャナー、プリンタ、ファックス装置など画像を形成する機能を備えた装置である。ＭＦＰ２０１はこのうち１つ以上の機能を有していればよい。ＭＦＰ２０１は、例えば原稿をスキャンして作成した画像データをジョブデータとして配信サーバ１００に送信すると共にフロー定義情報を送信し、配信サーバ１００にワークフローの実行を要求する。
【００２１】
携帯端末２０２は、携帯電話、スマートフォン、タブレット端末、ＰＤＡ（Personal Digital Assistant）、デジタルカメラなど、ユーザが携帯又は所持する端末である。例えば、携帯電話のカメラやデジタルカメラで撮影した画像データをジョブデータとして配信サーバ１００に送信すると共にフロー定義情報を送信し、配信サーバ１００にワークフローの実行を要求する。
【００２２】
クライアント端末２０３はノートＰＣ（Personal Computer）、デスクトップＰＣ、ワークステーション、テレビ会議端末などユーザが使用する情報処理装置である。例えば、アプリケーションが作成したアプリケーションデータ、Ｗｅｂから取得したＷｅｂデータをジョブデータとして配信サーバ１００に送信すると共にフロー定義情報を送信し、配信サーバ１００にワークフローの実行を要求する。
【００２３】
なお、ワークフロー実行要求装置２００は、ユーザが直接、操作する装置であるとするが、ジョブデータはユーザが直接、操作する装置が作成したり記憶している必要はない。例えば、クライアント端末が、ＮＡＳ（Network Attached Storage）や他の装置に記憶されているジョブデータを指定して、ＮＡＳ等から配信サーバ１００に送信する（配信サーバ１００が読みに行く）ことも可能である。
【００２４】
配信サーバ１００は、ＰＣ、サーバ装置、シンクライアント等の情報処理装置である。ＭＦＰが配信サーバとなることも可能である。例えば、ＭＦＰ２０１からジョブデータとして画像データとフロー定義情報を受信した場合、フロー定義情報に従い配信処理を実行する。なお、配信サーバ１００は１台存在すればよいが、１台以上存在してもよい。配信サーバ１００がサービス提供装置３００としての機能を有することも可能である。
【００２５】
サービス提供装置３００は、ＰＣ、サーバ装置、シンクライアント等の情報処理装置である。ＭＦＰがサービス提供装置３００となることも可能である。サービス提供装置３００はフロー定義情報を解析して、処理を実行する。例えば、配信サーバ１００からジョブデータとして画像データとフロー定義情報を受信した場合、フロー定義情報に従い画像データにＯＣＲ処理を施したり、電子メールで送信したりする。サービス提供装置３００は、１台以上存在する。また、１台で複数の処理を行う場合もある。
【００２６】
配信サーバ１００とサービス提供装置３００はいずれもフロー定義情報で定義された処理を実行するので、両者を区別しない場合、単に「装置」という場合がある。
【００２７】
図３は、ＭＦＰ２０１としてのワークフロー実行要求装置２００のハードウェア構成図の一例を示す。ＭＦＰ２０１は、コントローラ１３０と、オペレーションパネル１２５と、ファクシミリコントロールユニット（ＦＣＵ）１２６と、撮像部１２７及び印刷部１２８を有する。
【００２８】
コントローラ１３０は、ＣＰＵ１１４と、ＡＳＩＣ１１６と、ＮＢ（ノースブリッジ）１１５と、ＳＢ（サウスブリッジ）１１７と、ＭＥＭ−Ｐ（システムメモリ）１１１と、ＭＥＭ−Ｃ（ローカルメモリ）１１２と、ＨＤＤ（ハードディスクドライブ）１１３と、メモリカードスロット１２３と、ＮＩＣ（ネットワークインタフェースコントローラ）１１８と、ＵＳＢデバイス１１９と、ＩＥＥＥ１３９４デバイス１２１と、セントロニクスデバイス１２２とを有する。
【００２９】
ＣＰＵ１１４は、種々の情報処理を実行するためのＩＣであり、ＯＳやプラットホーム上で、アプリケーションをプロセス単位で並列的に実行する。ＡＳＩＣ１１６は、画像処理用のＩＣである。ＮＢ１１５は、ＣＰＵ１１４とＡＳＩＣ１１６を接続するためのブリッジである。ＳＢ１１７は、ＮＢ１１５と周辺機器等を接続するためのブリッジである。ＡＳＩＣ１１６とＮＢ１１５は、例えばＡＧＰ（Ａｃｃｅｌｅｒａｔｅｄ Ｇｒａｐｈｉｃｓ Ｐｏｒｔ）を介して接続されている。
【００３０】
ＭＥＭ−Ｐ１１１は、ＮＢ１１５に接続されたメモリである。ＭＥＭ−Ｃ１１２は、ＡＳＩＣ１１６に接続されたメモリである。ＨＤＤ１１３は、ＡＳＩＣ１１６に接続されたストレージであり、画像データ蓄積・文書データ蓄積・プログラム蓄積・フォントデータ蓄積・フォームデータ蓄積等を行うために使用される。ＨＤＤ１１３には種々のアプリケーション（コピーアプリ、スキャナアプリ、プリンタアプリ、ファックスアプリ等）及びプログラム１３１が記憶されている。プログラム１３１はユーザによるワークフローの設定を受け付け、フロー定義情報等を作成するためのものである。
【００３１】
メモリカードスロット１２３は、ＳＢ１１７に接続され、メモリカード１２４をセット（挿入）するために使用される。メモリカード１２４は、ＵＳＢメモリ、ＳＤメモリ等のフラッシュメモリであり、プログラム１３１を配布するために使用される。また、プログラム１３１は所定のサーバからＭＦＰ２０１にダウンロードすることで配布することもできる。
【００３２】
ＮＩＣ１１８は、ネットワーク４００等を介してＭＡＣアドレス等を使用したデータ通信を行うためのコントローラである。ＵＳＢデバイス１１９は、ＵＳＢ規格に準拠したシリアルポートを提供するためのデバイスである。ＩＥＥＥ１３９４デバイス１２１は、ＩＥＥＥ１３９４規格に準拠したシリアルポートを提供するためのデバイスである。セントロニクスデバイス１２２は、セントロニクス仕様に準拠したパラレルポートを提供するためのデバイスである。ＮＩＣ１１８と、ＵＳＢデバイス１１９と、ＩＥＥＥ１３９４デバイス１２１と、セントロニクスデバイス１２２と、ＰＣＩ（Ｐｅｒｉｐｈｅｒａｌ Ｃｏｍｐｏｎｅｎｔ Ｉｎｔｅｒｃｏｎｅｃｔ）バスを介してＮＢ１１５とＳＢ１１７に接続されている。
【００３３】
オペレーションパネル１２５は、ユーザがＭＦＰ２０１に入力を行うためのハードウェア（操作部）であると共に、ＭＦＰ２０１がメニュー画面を表示するハードウェア（表示部）である。オペレーションパネル１２５は、ＡＳＩＣ１１６に接続されている。ＦＣＵ１２６と、撮像部１２７と、印刷部１２８は、ＰＣＩ（Ｐｅｒｉｐｈｅｒａｌ Ｃｏｍｐｏｎｅｎｔ Ｉｎｔｅｒｃｏｎｅｃｔ）バスを介してＡＳＩＣ１１６に接続されている。
【００３４】
撮像部１２７は、コンタクトガラスに載置された原稿を光学的に走査して、その反射光をＡ／Ｄ変換して画像処理を施し、カラー又はモノクロのデジタルデータ（以下、画像データという）を生成する。
【００３５】
印刷部１２８は、例えばタンデム型の感光ドラムを有し、上記の画像データやユーザＰＣから受信したＰＤＬデータに基づきレーザビームを変調し感光ドラムを走査して潜像を形成する。潜像にトナーを付着して現像した１ページ毎の画像を用紙に熱と圧力で転写する。このような電子写真方式のプロッタに限られず、液滴を吐出して画像を形成するインクジェット型のプロッタエンジンでもよい。
【００３６】
ＦＣＵ１２６は、ＮＩＣ１１８を介してネットワーク４００に接続し例えばＴ.３７，Ｔ.３８の規格に対応した通信手順、又は、公衆通信網に接続し例えばＧ３、Ｇ４規格に対応した通信手順、に従い画像データの送受信を行う。また、ＭＦＰ２０１の電源がＯＦＦのときに画像データを受信しても、印刷部１２８を起動して画像データを用紙に印刷することができる。
【００３７】
図４は、配信サーバ１００のハードウェア構成図の一例を示す。配信サーバ１００は、バスに接続された、ＣＰＵ３０１、ＲＯＭ３０２、ＲＡＭ３０３、ＨＤＤ３０４、ディスプレイ３２０が接続されたグラフィックボード３０５、キーボード・マウス３０６、メディアドライブ３０７、及び、ネットワーク通信部３０８を有する。ＣＰＵ３０１はＨＤＤ３０４に記憶されたプログラム３１０をＲＡＭ３０３に展開して実行し、各部品を制御して入出力を行ったり、データの加工を行ったりする。ＲＯＭ３０２にはＢＩＯＳや、ブートストラップローダをＨＤＤ３０４からＲＡＭ３０３に読み出すスタートプログラムが記憶されている。ブートストラップローダは、ＯＳをＨＤＤ３０４からＲＡＭ３０３に読み出す。
【００３８】
ＨＤＤ３０４は、不揮発性のメモリであればよくＳＳＤ（Solid State  Drive）などでもよい。ＨＤＤ３０４はＯＳ、デバイスドライバ、及び、後述する機能を提供するプログラム３１０を記憶している。ディスプレイ３２０にはプログラムが指示し、グラフィックボード３０５が作成したＧＵＩ画面が表示される。
【００３９】
キーボード・マウス３０６はユーザの操作を受け付ける入力装置である。メディアドライブ３０７はコンパクトディスク、ＤＶＤ及びブルーレイディスクなどの光学メディアにデータを読み書きする。また、フラッシュメモリなどのメモリカードにデータを読み書きしてもよい。ネットワーク通信部３０８は、例えばＬＡＮに接続するためのイーサネット（登録商標）カードである。ＴＣＰ／ＩＰ（ＵＤＰ／ＩＰ）やアプリケーション層のプロトコルの処理はＯＳやプログラム３１０が行う。アプリケーション層のプロトコルは各種あるが、例えばＳＮＭＰ（Simple Network Management Protocol）、ＨＴＴＰ、ＦＴＰ、ＳＭＢ（Server Message Block）等がある。
【００４０】
プログラム３１０は、インストール可能な形式又は実行可能な形式のファイルで、コンピュータで読み取り可能な記録メディアに記録して配布される。また、プログラム３１０は、不図示のサーバからインストール可能な形式又は実行可能な形式のファイルで配布される。
【００４１】
〔フロー定義情報〕
図５は、フロー定義情報の一例を説明する図の一例である。図５（ａ）はワークフロー実行要求装置２００が配信サーバ１００に送信するフロー定義情報であり、図５（ｂ）は配信サーバ１００がサービス提供装置３００に送信するフロー定義情報である。
【００４２】
ユーザは、ワークフロー実行要求装置２００で配信サーバ１００にアクセスし配信サーバ１００から画面データを受信する。画面データには、ワークフローを定義するためのメニューが表示され、ユーザは自身が所望する複数の処理について、処理の順番と処理内容（処理に必要な条件。例えば、電子メールアドレスの送信先、ＦＡＸの送信先、ドキュメントボックスの記憶先、印刷条件など）を設定することでワークフローを定義する。各処理において設定が必要な事項は決まっているので、画面にはユーザが選択した処理に応じて必要な処理内容を設定するメニューが表示される。例えば、ＰＤＦ変換やメール配信では以下のような処理内容が設定される。
処理１．ＰＤＦ変換
ドキュメントデータ：ＡＢＣ．ｄｏｃ
処理２．メール配信
宛先アドレス：123456@abc.com
件名：会議資料
ドキュメントデータ：処理１から取得
ユーザがワークフローの設定を完了すると、ワークフロー実行要求装置２００が図５（ａ）のようなフロー定義情報を作成する。なお、図のフロー定義情報は説明上重要でない記載が省略されている。
【００４３】
フロー定義情報は、例えばＸＭＬで記述されている。＜flows＞から＜/flows＞までが１つのワークフローを定義している。また、＜flow＞から＜/flow＞はワークフローの手順を定義している。
【００４４】
１つの処理は１つの＜plugin id＞タグ単位に記述され、何の処理が行われるかが記述されている。例えば、「plugin id="ToSMTP"」は電子メールで送信する処理を意味しており、「type="output"」はデータの処理タイプが出力であることを意味している。「displayName="メール配信" 」は操作パネルなどユーザが目視する際に表示される処理名である。「plugin id="PDFConverter"」はジョブデータをＰＤＦに変換する処理を意味しており、「type="filter"」はデータの処理タイプが変換であることを意味している。「displayName="ＰＤＦ変換" 」は操作パネルなどユーザが目視する際に表示される処理名である。
【００４５】
また、＜nextPlugin id＞タグは処理の順番を指示するタグである。つまり、ＰＤＦ変換の次の処理は、メール配信であることが定義されている。これにより、サービス提供装置３００は次の処理を決定できる（正確には図５（ｂ）に示すように次のサービス提供装置を特定できる）。
【００４６】
<start_point>タグは、ワークフローが開始される最初の処理を定義している。すなわち、ユーザがワークフローの最初に実行するように定義した処理が定義される。
【００４７】
図５（ａ）のフロー定義情報によれば、<start_point>タグから最初の処理がＰＤＦ変換であり、ＰＤＦ変換の次の処理がメール配信であることが分かる。
【００４８】
配信サーバ１００は図５（ａ）のフロー定義情報を解析して、＜plugin id＞タグ単位にproceed属性を追加し、フロー定義情報に<current_point>タグを追加する。配信サーバ１００は＜plugin id＞タグ毎に、plugin idの処理が可能なサービス提供装置が対応づけられた後述する機器決定テーブル４４を有している。配信サーバ１００は機器決定テーブル４４を参照して、例えばメール配信を行うのは「machineID_A」であり、ＰＤＦ変換を行うのは「machineID_B」であると決定する。図５（ｂ）は配信サーバ１００が更新したフロー定義情報の一例である。
【００４９】
なお、各処理を行うサービス提供装置３００の決定まで含めてワークフロー実行要求装置２００が行ってもよい。ワークフロー実行要求装置２００が機器決定テーブル４４を有するか又はアクセス可能であればよいので、機器の決定はワークフロー実行要求装置２００やサービス提供装置３００が行うことも可能である。
【００５０】
図５（ｃ）は<current_point>タグについて説明する図の一例である。<current_point>タグはワークフローにおいて現時点において処理すべき処理、すなわち次に処理すべき処理を示す。配信サーバ１００は、<start_point>タグを参照して最初に行う処理を決定し、図５（ｂ）のようにＰＤＦ変換が次に処理すべき処理であることをフロー定義情報に記述する。なお、<current_point>タグの処理をカレントポイントの処理と称する。<current_point>タグはワークフロー実行要求装置２００が配信サーバに送信する時点で含まれていていてもよい。この場合、<current_point>タグは<start_point>タグと同じになる。
【００５１】
サービス提供装置３００はproceed属性と<current_point>タグを参照して自機が処理を行うか否かを判定する。また、処理を行った場合は、<current_point>タグを更新して、次のサービス提供装置にフロー定義情報とジョブデータを送信する。例えば、ＰＤＦ変換が完了したら、<current_point>タグは次のように更新される。
<current_point>
<plugin id="ToSMTP"  />
</current_point>
また、図５（ａ）（ｂ）では＜nextPlugin id＞タグに１つのplugin idしか記述されていないが、ユーザが設定したワークフローによっては平行に処理が可能となる場合もある。例えば、ジョブデータを電子メールで送信すると共にドキュメントボックスに記憶するような場合、電子メールの送信とドキュメントボックスの送信は平行して実行可能である。このようなワークフローでは、＜nextPlugin id＞タグに２つ以上のplugin idが記述される場合がある。この場合、配信サーバ１００は、<current_point>タグに"ＴｏＳＭＴＰ"と記述されたフロー定義情報と、"ＤｏｃＢｏｘ（ドキュメントボックス）"と記述されたフロー定義情報を作成し、サービス提供装置３００に送信する。
【００５２】
〔機能ブロック例〕
図６はワークフロー実行要求装置２００、配信サーバ１００、及び、サービス提供装置３００の機能ブロック図の一例を示す図である。
【００５３】
ワークフロー実行要求装置２００は、フローデータ送信部１１、フロー定義受付部１２、及び、フロー定義画面受信部１３を有する。フロー定義画面受信部１３は、配信サーバ１００にアクセスしてワークフローを定義するための画面データを受信する。なお、配信サーバ１００のＩＰアドレス又はＵＲＬなどはワークフロー実行要求装置２００にとって既知である。画面データは例えばＸＭＬで記述されている。フロー定義画面受信部１３はＸＭＬとＸＳＬＴスタイルシートを受信してＨＴＭＬに変換してオペレーションパネル１２５等に表示する。フロー定義受付部１２は、ユーザによるワークフローの設定を受け付け、フロー定義情報を作成する。フローデータ送信部１１はフロー定義情報と、フロー定義情報で指定されたジョブデータを配信サーバ１００に送信する。なお、ジョブデータは、ユーザが明示的にファイル名を指定して指示される場合と、原稿のスキャンやカメラによる撮影などのように、ワークフローの中で作成される場合がある。本実施例では説明を容易にするため前者の状況にて説明する。
【００５４】
配信サーバ１００は、１つ以上のプラグイン２１、フロー制御部２２、ジョブ制御部２３、及び、配信機能部２４を有している。配信機能部２４は、配信サーバ１００がワークフローを準備・支援するための機能であり、ログ記録部４１、機器決定部４２、及び、画面データ送信部４３を有している。画面データ送信部４３は、ワークフロー実行要求装置２００からの要求に応じて、画面データＤＢ４５から画面データを読み出し、ワークフロー実行要求装置２００に送信する。
【００５５】
機器決定部４２は、ワークフロー実行要求装置２００との通信の中で機器決定テーブル４４を参照して各処理を実行する機器を決定する。例えば、ユーザが設定したフロー定義情報を画面データ送信部４３が受信し、最終的なワークフローの確認画面を送信する際に、機器を決定すればよい。または、ジョブ受信部３３が受信したフロー定義情報に対し、機器を決定してもよい。
【００５６】
図７は機器決定テーブルの一例を示す図である。処理を実行可能なサービス提供装置３００の機器ＩＤとＩＰアドレスが登録されている。ＩＰアドレスは不図示のＤＨＣＰサーバにより割り当てられ、機器ＩＤが分かればＩＰアドレスも特定できるようになっている。または、サービス提供装置３００に固定のＩＰアドレスが付与される場合は、ＩＰアドレスを機器ＩＤとして用いてもよい。機器決定部４２は、plugin idに基づきその処理を実行可能な機器ＩＤを特定してproceed属性として追加する。１つのplugin idに複数の機器ＩＤが登録されている場合、例えばサービス提供装置３００から収集した処理負荷の低いサービス提供装置を選んでもよいし、同じネットワークアドレスのサービス提供装置３００を優先して選んでもよい。
【００５７】
また、ユーザがワークフローの実行開始操作を行う前に、配信サーバ１００は例えばサービス提供装置３００の起動の有無を判断し、起動しているサービス提供装置３００を処理に割り当ててもよい。これにより、ユーザから実行開始操作を受け付けた後に、ワークフローの大部分が実行できない状況となることを抑制できる。
【００５８】
図６に戻り、ログ記録部４１は、ワークフローのログを記録する。サービス提供装置３００は自機の処理が終了すると実行結果を配信サーバ１００に送信するので、ログ記録部４１はワークフロー単位で、各処理を実行した機器の識別情報、開始時刻、終了時刻及び処理が完了したか失敗したか等を記録する。配信サーバ１００が実行した場合は自機のログ記録部４１が実行結果を記録する。
【００５９】
ジョブ制御部２３は、ワークフローの各処理の実行を制御する。まず、ジョブ受信部３３は、他の装置（配信サーバ１００はワークフロー実行要求装置２００とサービス提供装置。サービス提供装置３００は配信サーバ１００又は他のサービス提供装置３００）からフロー定義情報とジョブデータを受信しジョブキュー３５に蓄積する。１つのジョブは、１つのPlugin idが付与された１つの処理に相当する。
【００６０】
ジョブ受信部３３は、いったんジョブキュー３５に記憶したワークフローのフロー定義情報とジョブデータを自機で処理を行う必要があるか否かを判定する。すなわち、自機のマシンＩＤ３６が少なくとも１つのProceed属性に登録されているか否かを判定する。
【００６１】
自機のマシンＩＤ３６がProceed属性に登録されていない場合、ジョブ転送部３２はフロー定義情報とジョブデータをサービス提供装置３００に送信する。このサービス提供装置３００は<current_point>の処理を受け持つサービス提供装置であることが好ましいが、<current_point>の処理を受け持たないサービス提供装置に送信しても転送されるので不都合は少ない。
【００６２】
自機のマシンＩＤ３６がProceed属性に登録されている場合、ジョブ実行部３１がフロー定義情報とジョブデータをジョブキュー３５から読み出して処理を実行する。ジョブ実行部３１は、<current_point>を確認して、<current_point>の処理を行う配信サーバ１００又はサービス提供装置３００を確認する。自機が<current_point>の処理を行う機器の場合、フロー制御部２２にフロー定義情報とジョブデータを出力する。自機が<current_point>の処理を行う機器でない場合、ジョブ実行部３１はジョブ転送部３２にフロー定義情報とジョブデータを転送させる。転送先は、好ましくは<current_point>の処理を受け持つサービス提供装置３００である。
【００６３】
フロー制御部２２は、フロー定義情報に沿ってプラグイン２１を選択して処理を実行する。プラグイン２１は、これまで説明したＰＤＦ変換を行うもの、電子メールを送信するもの、ＯＣＲ処理を行うもの、翻訳を行うものなどである。プラグイン２１は共通のプラットホーム上で動作可能になっており、配信サーバ１００やサービス提供装置は１つのプラグイン２１を独立に追加したり、削除することができる。プラグイン同士は互いの処理には関与しない。なお、このようなプラグイン２１に限られずアプリケーションプログラムにより処理してもよい。
【００６４】
フロー制御部２２は、<current_point>の処理を確認して、その処理を行うプラグイン２１を呼び出すと共にジョブを実行させる。ジョブが正常に完了すればフロー制御部２２は、<current_point>タグの処理を更新する。ジョブ実行部３１はフロー定義情報とジョブデータをジョブキュー３５に記憶する。
【００６５】
ジョブ検知部３４は、ジョブキュー３５にジョブが入力されたことを検知する。すなわち、プラグイン２１が１つの処理を実行することで作成されたジョブデータがジョブキュー３５に記憶されると、ジョブ検知部３４が検知する。そして、ジョブ実行部３１等が同様の処理を繰り返し行う。
【００６６】
図６に示すように、サービス提供装置３００は、１つ以上のプラグイン２１、フロー制御部２２及びジョブ制御部２３、を有している。すなわち、配信機能部２４を有さないが、その他の機能は配信サーバ１００と同様である。これは、ワークフローの実行手順については、サービス提供装置３００と配信サーバ１００とで同様となることを意味しており、サービス提供装置３００の開発コストを低減したり、サービス提供装置３００と配信サーバ１００を柔軟に切り替えることが可能であることを示す。
【００６７】
〔動作手順〕
図８は、処理実行システム５００の全体的な動作手順の一例を示す図である。
S1：ユーザはＭＦＰ２０１にログインする。ログインについては後述するが、ユーザ名とパスワードの入力、ＩＣカードの読み取りなどでログインすればよい。
S2：ユーザの操作により、ＭＦＰ２０１はワークフローの画面データを配信サーバ１００に要求する。この時、ユーザ情報も送信される。
S3：配信サーバ１００の画面データ送信部４３は画面データをＭＦＰ２０１に送信する。
S4：ユーザがワークフローの内容をＭＦＰ２０１に設定すると、フロー定義受付部１２がワークフローのフロー定義情報を作成する。
S5：ユーザが最終的なワークフローの実行開始操作を行うと、フローデータ送信部１１はフロー定義情報とジョブデータを配信サーバ１００に送信する。なお、配信サーバ１００又はＭＦＰ２０１はフロー定義情報とジョブデータを受信する前に、各処理を実行する機器を決定しているものとする。
S6：配信サーバ１００のジョブ受信部３３はジョブキュー３５にフロー定義情報とジョブデータを記憶し、フロー定義情報を解析する。この解析は、自機が処理を行う機器として記述されているか否かと、カレントポイントが自機の処理を示しているか否かの２つである。
S7：解析の結果、自機が処理を行う場合は、フロー制御部２２がプラグイン２１を使用して自機に割り当てられた処理を実行する。
S8：フロー制御部２２は、カレントポイントを次の処理に変更して、フロー定義情報を更新する。
S9：次に、ジョブ実行部３１はフロー定義情報を解析して、次の処理を行うサービス提供装置３００を特定する。
S10：ジョブ転送部３２は次の処理を行うサービス提供装置１にフロー定義情報とジョブデータを送信する。
S11：ジョブ制御部２３は自機が行った処理の実行結果を配信サーバ１００に送信する。ここでは配信サーバ１００が処理を行ったので、ログ記録部４１に実行結果を出力すればよい。
S12〜S17：以降、サービス提供装置１が行う処理手順は配信サーバ１００が行った処理手順と同様になる。
S18〜S22：サービス提供装置２が行う処理手順は配信サーバ１００が行った処理手順と同様になる。
このように、ワークフローの処理手順については装置間の処理手順を同じにすることができる。
【００６８】
図９は、配信サーバ１００又はサービス提供装置が処理を実行する際の手順を示すフローチャート図の一例である。図9は図8のS6〜11の詳細な手順になっている。
【００６９】
まず、ジョブ受信部３３がフロー定義情報とジョブデータを受信して、ワークフロー実行要求を受け付ける（Ｓ１０）。
【００７０】
ジョブ受信部３３はフロー定義情報のproceed属性に自機のマシンＩＤが登録されているか否かに基づき自機が実行対象機器か否かを判定する（Ｓ２０）。
【００７１】
自機が実行対象機器でない場合（Ｓ２０のＮｏ）、他のサービス提供装置が実行できるように、ジョブ転送部３２がフロー定義情報とジョブデータを転送する（Ｓ１００）。
【００７２】
自機が実行対象機器の場合（Ｓ２０のＹｅｓ）、ジョブ実行部３１はカレントポイントの処理が、自機が行う処理か否かを判定する（Ｓ３０）。
【００７３】
カレントポイントの処理を行うのが自機でない場合（Ｓ３０のＮｏ）、他のサービス提供装置３００が実行できるように、ジョブ転送部３２がフロー定義情報とジョブデータを転送する（Ｓ１００）。ワークフローの全体が終了した場合は、転送しなくてよい。また、終了したことを配信サーバ１００に送信することが好ましい。
【００７４】
カレントポイントの処理を行うのが自機の場合（Ｓ３０のＹｅｓ）、ジョブ実行部３１はフロー制御部２２に処理を依頼する（Ｓ４０）。
【００７５】
フロー制御部２２はカレントポイントを確認して、自機が行う処理を特定し、該当するプラグイン２１を呼び出すなどして処理を実行する（Ｓ５０）。プラグイン２１は処理の実行結果をフロー制御部２２に返す。
【００７６】
フロー制御部２２は、処理が正常に終了したか、又は、プラグイン２１がエラーの発生を明示的に通知したり応答がない等により正常に終了しなかったかどうかを判定する（Ｓ６０）。
【００７７】
正常に終了しない場合（Ｓ６０のＮｏ）、フロー制御部２２はリトライの上限回数に達したか否かを判定する（Ｓ９０）。リトライの上限回数に達していない場合（Ｓ９０のＮｏ）、処理はステップＳ５０に戻り、プラグイン２１が再度同じ処理を行う。
【００７８】
リトライの上限回数に達した場合（Ｓ９０のＹｅｓ）、処理はステップＳ８０に移動し、ジョブ制御部２３は実行結果を送信する（Ｓ８０）。この場合の実行結果は処理のplugin IDと正常終了しなかったという情報を含む。
【００７９】
正常に終了した場合（Ｓ６０のＹｅｓ）、フロー制御部２２はカレントポイントを変更することで、フロー定義情報を更新する（Ｓ７０）。
【００８０】
次いで、ジョブ制御部２３は実行結果を送信する（Ｓ８０）。この場合の実行結果は処理のplugin IDと正常終了したという情報を含む。
【００８１】
この後、処理は、ステップＳ３０に戻り、必要であればフロー制御部２２が再度、処理を行う。
【００８２】
以上説明したように、本実施例の処理実行システム５００は、配信サーバ１００と各サービス提供装置３００にワークフローの処理機能を持たせることで、ジョブを次々と転送することができる。このため、処理毎に配信サーバ１００にジョブデータ等を戻す必要がなく、配信サーバ１００とサービス提供装置との間のやり取りを少なくして効率的にジョブ処理を行うことができる。
【実施例２】
【００８３】
本実施例では、ファイアウォール越しにサービス提供装置３００が存在する処理実行システム５００について説明する。
【００８４】
図１０は、処理実行システム５００のシステム構成図の一例を示す。なお、本実施例において、実施例１において同一の符号を付した構成要素は同様の機能を果たすので、主に本実施例の主要な構成要素についてのみ説明する場合がある。
【００８５】
処理実行システム５００はファイアウォール６００を介してオフィス側と外部とに分かれている。オフィス側の構成は実施例１とほぼ同様になっている。外部側にはネットワーク（インターネット）越しに１台以上のサービス提供装置３００が存在する。サービス提供装置は実施例１と同様にフロー制御部２２、ジョブ制御部２３及び１つ以上のプラグイン２１を有している。
【００８６】
このようなシステム形態ではユーザがオフィス側に存在するので、外部のサービス提供装置３００が処理したジョブデータをオフィス側の配信サーバ等が取得する場合、ファイアウォール６００を超える必要がある。外部の装置が通信の契機となってファイアウォール６００を超えることは困難なので、配信サーバ１００が外部のサービス提供装置３００を監視する。監視により、配信サーバ１００が外部のサービス提供装置３００からジョブデータ等を受信することを可能とする。
【００８７】
監視とは、配信サーバ１００が定期的に外部のサービス提供装置３００に実行結果を確認すること（外部からの応答を受け取れる通信状態にすること）をいう。ファイアウォール６００のアクセス制御には例えばパケットフィルタリング、ステートフルインスペクションなどがあるが、これらでは、管理者等がオフィス側から送信したパケットの宛先ＩＰアドレスからの応答（外部からの通信の送信元ＩＰアドレスが、オフィスからの通信で設定した宛先ＩＰアドレスになっている）は通過を許可するという設定が可能である。このような設定がされたファイアウォール６００であれば、オフィス側の配信サーバ１００が送信したパケットに対する応答としてフロー定義情報とジョブデータを受信できる。
【００８８】
〔フロー定義情報の作成〕
本実施例では、実施例１とは別の態様でフロー定義情報の作成が必要になる。これは、配信サーバ１００が外部のサービス提供装置３００を監視するフロー定義情報を必要とするためである。
【００８９】
図１１は、フロー定義情報の作成を模式的に説明する図の一例である。図１１（ａ）の更新前のフロー定義情報は、以下のようになっている。なお、処理内容はどのようなものでもよく、一部の処理を外部のサービス提供装置３００が行えばよい。
処理１（マル１）：配信サーバ
処理２（マル２）：外部のサービス提供装置Ｃ１
配信サーバ１００は、処理１を実行後、フロー定義情報を更新するが（カレントポイントを次の処理に変更する）、更新されるフロー定義情報とは別にフロー定義情報を作成する。
【００９０】
作成されるフロー定義情報は、配信サーバ１００が外部のサービス提供装置Ｃ１を監視するフロー定義情報である。後者のフロー定義情報は以下のようにして作成する。配信サーバ１００はフロー定義情報を複製し、＜plugin id＞タグに
<plugin id="Monitor" …   proceed= " machineID_A（配信サーバ）" />    
を追加する。すなわち、監視する処理を配信サーバ１００が行うことが追加される。監視する処理を行う装置は、予め定められており（この場合は配信サーバ）、予め定められた装置のマシンＩＤが＜plugin id＞タグのproceed属性に記述される。
【００９１】
また、配信サーバ１００は、<current_point>の記述を<plugin id="Monitor" />に変更する。すなわち、次の処理が監視であることを示すように変更する。
【００９２】
このような更新により、図１１（ａ）の更新後に示すように、処理２（マル２）のフロー定義情報は外部のサービス提供装置Ｃ１に送信され、処理Ａ（マルＡ）のフロー定義情報は配信サーバ１００により実行される。なお、処理Ａ（マルＡ）のフロー定義情報は監視が終了すると、次の処理が記述されていないので破棄される。
【００９３】
以下、フロー制御部２２が更新したフロー定義情報をオリジナルのフロー定義情報といい、配信サーバが作成したフロー定義情報を監視用のフロー定義情報という。
【００９４】
図１１（ｂ）の更新前のフロー定義情報は、以下のようになっている。
処理１：配信サーバ
処理２：外部のサービス提供装置Ｃ１
処理３：配信サーバ
処理２までは図１１（ａ）と同様だが、次に、配信サーバ１００が処理３を行う。図１１（ａ）の更新後のフロー定義情報に示したように、外部のサービス提供装置Ｃ１は処理２を実行し、外部のサービス提供装置Ｃ１の処理を、配信サーバ１００が監視する。外部のサービス提供装置Ｃ１は処理２の実行後、フロー定義情報を更新してジョブデータと共に、監視している配信サーバ１００に送信する。したがって、配信サーバ１００はファイアウォール６００越しに更新されたフロー定義情報とジョブデータを受信できる。外部のサービス提供装置Ｃ１が更新したフロー定義情報の<current_point>には配信サーバ１００が処理３を行うことが記述されているので、配信サーバ１００は実施例１と同様にワークフローの処理を実行できる。
【００９５】
図１１（ｃ）の更新前のフロー定義情報は、以下のようになっている。
処理１：配信サーバ
処理２：外部のサービス提供装置Ｃ１
処理３：内部のサービス提供装置１
処理２までは図１１（ａ）と同様だが、次に、オフィス側のサービス提供装置１が処理３を行う。この場合も、外部のサービス提供装置Ｃ１を監視している配信サーバ１００はファイアウォール６００越しに更新されたフロー定義情報とジョブデータを受信する。外部のサービス提供装置Ｃ１が更新したフロー定義情報の<current_point>にはオフィス側のサービス提供装置１が処理３を行うことが記述されている。このため、配信サーバ１００はフロー定義情報を解析して、自機が処理を行う装置ではないので、フロー定義情報とジョブデータを、オフィス側のサービス提供装置１に転送する。
【００９６】
このように、ファイアウォール６００側の配信サーバ１００が外部のサービス提供装置の処理を監視するフロー定義情報を作成することで、ファイアウォール６００を跨いでワークフローを実行することが可能になる。
【００９７】
なお、配信サーバ１００による監視はワークフローの一部なので処理を実行するのはプラグイン２１とすることができる。したがって、配信サーバ１００に機能を追加する場合はもちろん、サービス提供装置３００に監視機能を追加することも容易である。当然ながら、プラグイン２１とは別に監視用の機能がインストールされてもよい。
【００９８】
〔動作手順〕
図１２は、処理実行システム５００の全体的な動作手順を一例を示す図である。ここでは図１１（ａ）のワークフローを処理する場合を例に説明する。
S1：ユーザはＭＦＰ２０１にログインする。ログインについては後述するが、ユーザ名とパスワードの入力、ＩＣカードの読み取りなどでログインすればよい。
S2：ユーザの操作により、ＭＦＰ２０１はワークフローの画面データを配信サーバ１００に要求する。この時、ユーザ情報も送信される。
S3：配信サーバ１００の画面データ送信部４３は画面データをＭＦＰ２０１に送信する。
S4：ユーザがワークフローの内容をＭＦＰ２０１に設定すると、フロー定義受付部１２がワークフローのフロー定義情報を作成する。この時、ユーザは処理を行うのがオフィスの外であることや内側であることを意識する必要はないが、セキュリティ上、ＭＦＰ２０１がユーザに確認してもよい。例えば「選択された処理Ａはインターネット上で実行されます。よろしいですか。」等と表示し、ユーザが「はい」を押下したことでワークフローを受け付ける。これにより、セキュリティを維持することができる。
S5：ユーザが最終的なワークフローの実行開始操作を行うと、フローデータ送信部１１はフロー定義情報とジョブデータを配信サーバ１００に送信する。なお、配信サーバ１００は最終的なフロー定義情報とジョブデータを受信する前に、各処理を実行する機器を決定する。
S6：配信サーバ１００のジョブ受信部３３はジョブキュー３５にフロー定義情報とジョブデータを記憶し、フロー定義情報を解析する。この解析は、自機が処理を行う機器として記述されているか否かと、自機が処理を行うタイミングか否かの２つである。
S7：解析の結果、自機が処理を行う場合は、フロー制御部２２がプラグイン２１を使用して自機に割り当てられた処理を実行する。
S8：フロー制御部２２は、カレントポイントを次の処理に変更して、フロー定義情報を更新する。
S9：次に、ジョブ実行部３１はフロー定義情報を解析して、次の処理を行うサービス提供装置を特定する。ここでは、次の処理を行うサービス提供装置は外部のサービス提供装置Ｃ１となる。ジョブ転送部３２は、<current_point>の処理を行うサービス提供装置の例えばＩＰアドレスを参照して、外部にあることを検出する。または、予め、外部のサービス提供装置のマシンＩＤのリストが登録されたテーブルを保持しておき、外部のサービス提供装置Ｃ１が処理を行うことを検出する。
【００９９】
ファイアウォール６００の外部のサービス提供装置Ｃ１が処理を実行する場合、ジョブ実行部３１はフロー定義情報を複製し、＜plugin id＞タグに監視の処理を追加し、<current_point>の記述を監視に変更する。これにより、２つのフロー定義情報が得られる。
【０１００】
この結果、ジョブ実行部３１は監視用のフロー定義情報を解析して、次の処理を行う装置が自機である配信サーバ１００であることを検出する。したがって、フロー制御部２２がプラグイン２１を使って再度、監視という処理を実行する。
S10：ジョブ転送部３２は次の処理を行うサービス提供装置Ｃ１にオリジナルのフロー定義情報とジョブデータを送信する。
S11：ジョブ制御部２３は自機が行った処理の実行結果を配信サーバ１００に送信する。ここでは配信サーバ１００が処理を行ったので、ログ記録部４１に実行結果を出力すればよい。
S12〜S17：以降、外部のサービス提供装置Ｃ１は、同じ手順で処理を実行する。
S31：配信サーバ１００は、プラグイン２１の処理により定期的に実行完了したか否かを外部のサービス提供装置Ｃ１に問い合わせる。
S32：実行が完了していない外部のサービス提供装置Ｃ１は未完了の応答を配信サーバ１００に送信する。
S33：配信サーバ１００は、プラグイン２１の処理により定期的に実行完了したか否かを外部のサービス提供装置Ｃ１に問い合わせる。
S34：実行が完了していない外部のサービス提供装置Ｃ１は未完了の応答を配信サーバ１００に送信する。
S35：配信サーバ１００は、プラグイン２１の処理により定期的に実行完了したか否かを外部のサービス提供装置Ｃ１に問い合わせる。
S36：実行が完了した外部のサービス提供装置Ｃ１は完了したという応答を配信サーバ１００に送信する。本実施例ではここでワークフローが終了するが、次の処理がある場合は、配信サーバ１００はフロー定義情報とジョブデータをサービス提供装置Ｃ１から受信する。このように、配信サーバ１００はファイアウォール６００外のサービス提供装置３００を用いてワークフローを実行できる。
【０１０１】
図１３は、配信サーバ１００又はサービス提供装置３００が処理を実行する際の手順を示すフローチャート図の一例である。図１３は図９と同様であるが、Ｓ２１０，Ｓ２２０の処理が異なっている。
【０１０２】
すなわち、ジョブ受信部３３はフロー定義情報のproceed属性に自機のマシンＩＤが登録されているかに基づき自機が実行対象機器か否かを判定する（Ｓ２０）。
【０１０３】
自機が実行対象機器でない場合（Ｓ２０のＮｏ）、ジョブ制御部２３は実効対象機器が外部のサービス提供装置か否かを判定する（Ｓ２１０）。
【０１０４】
実効対象機器が外部のサービス提供装置でない場合（Ｓ２１０のＮｏ）、他のサービス提供装置が実行できるように、ジョブ転送部３２がフロー定義情報とジョブデータを転送する（Ｓ１００）。
【０１０５】
実効対象機器が外部のサービス提供装置の場合（Ｓ２１０のＹｅｓ）、ジョブ制御部２３は監視用のフロー定義情報を作成する（Ｓ２２０）。この後、処理はステップＳ２０に戻り、監視用のフロー定義情報に基づく処理が実行される。監視を別の装置が行う場合は、ステップＳ１００で監視用のフロー定義情報が転送される。
【０１０６】
本実施例の処理実行システム５００によれば、ファイアウォール６００外の装置も使用してワークフローを実行できるので、多様で高度なサービスの提供が可能になる。また、監視をワークフローの一部として実行できる。
【実施例３】
【０１０７】
本実施例では、ユーザ認証を行う処理実行システム５００について説明する。なお、ユーザ認証は実施例１及び２のどちらでも適用可能である。
【０１０８】
〔機能ブロック例〕
図１４はワークフロー実行要求装置２００、配信サーバ１００、及び、サービス提供装置の機能ブロック図の一例を示す図である。なお、本実施例において、実施例１、２において同一の符号を付した構成要素は同様の機能を果たすので、主に本実施例の主要な構成要素についてのみ説明する場合がある。
【０１０９】
本実施例では、ワークフロー実行要求装置２００がログイン受付部１４を有し、ジョブ制御部２３がユーザ認証部３７、対応づけＤＢ３８及び認証情報ＤＢ３９を有する。なお、対応づけＤＢ３８，認証情報ＤＢ３９は配信サーバ１００又はサービス提供装置３００がアクセス可能な場所にあれば、装置内に有する必要はない。対応づけＤＢ３８には後述する装置とユーザ情報を対応づける対応づけ情報が記憶されている。認証情報ＤＢ３９には各装置におけるユーザの認証情報が記憶されている。ユーザ認証部３７はフロー定義情報に含まれるユーザ情報と認証情報ＤＢ３９に記憶されているユーザ情報の整合性によりユーザの認証が成立するか否かを判定する。
【０１１０】
ワークフロー実行要求装置２００のログイン受付部１４はユーザのログインを受け付ける。ログイン時に、ユーザは、ワークフロー実行要求装置２００がユーザをログインするためのユーザ名とパスワードを入力する。ユーザ名とパスワードでユーザはワークフロー実行要求装置２００にログインできるが、配信サーバ１００やサービス提供装置３００の認証情報がユーザ情報と異なっている場合がある。ユーザが配信サーバ１００やサービス提供装置３００に対しユーザ情報を送信することは困難なので、以下のように状況に応じて配信サーバ１００や各サービス提供装置３００はフロー定義情報に記述するユーザ情報を変更する。なお、ユーザ情報をフロー定義情報に含めるのでなく、独立したファイルでユーザ情報を送信してもよい。
【０１１１】
〔対応づけ情報〕
図１５はいくつかのパターンの対応づけ情報を模式的に説明する図の一例である。
【０１１２】
パターン１．どの装置でも共通したユーザＩＤ及びパスワードで認証する場合
パターン１では、フロー定義情報には共通の１組のユーザＩＤ及びパスワードが記述されていればよい。この場合、フロー定義情報のユーザ情報は固定なので対応づけＤＢ３８は使用されない。ユーザＩＤ及びパスワードは、ユーザがワークフロー実行要求装置２００に入力したものでよい。または、管理者用のユーザＩＤ及びパスワードでもよい。
【０１１３】
パターン２．装置によってユーザＩＤ及びパスワードが異なる場合
この場合、各装置の対応づけＤＢ３８には、図１５（ａ）に示すように各サービス提供装置３００が認証に使用するユーザＩＤ及びパスワードが記憶されているものとする。ジョブ実行部３１は、カレントポイントの処理を行うマシンＩＤからサービス提供装置３００を特定して、ユーザＩＤ及びパスワードを読み出す。そして、フロー定義情報のユーザ情報を更新する。
【０１１４】
パターン３．装置によってユーザＩＤ及びパスワードが異なるが、装置によって認証が不要な場合
この場合、図１５（ｂ）に示すように、各装置の対応づけＤＢ３８には、パターン２とほぼ同様の情報が登録されている。認証が不要な装置のユーザ名、パスワードには"−"が設定されており、ジョブ実行部３１は、カレントポイントの処理を行うサービス提供装置３００が認証不要な装置の場合、フロー定義画情報のユーザ名、パスワードに"−"を記述する。
【０１１５】
パターン４．装置によって認証情報の対象が異なる場合（例えば、装置によって管理者の情報を用いる装置とログインユーザの情報を用いる場合）
この場合、図１５（ｃ）に示すように、各装置の対応づけＤＢ３８には認証対象が記憶されている。ジョブ実行部３１は、カレントポイントの処理を行うサービス提供装置３００の認証対象を特定し、認証対象のユーザ名とパスワードを収集し、フロー定義情報のユーザ情報を更新する。
【０１１６】
パターン５．装置の処理によって認証情報の対象が異なる場合（例えば、ストレージに保存する場合、個人領域に保存する場合と共有領域に保存する場合とで認証情報の対象が異なる場合）
この場合、図１５（ｄ）に示すように、対応づけＤＢ３８には各装置の処理毎に認証対象が記憶されている。ジョブ実行部３１は、対応づけＤＢ３８からカレントポイントの処理を行うサービス提供装置３００とカレントポイントのplugin IDに対応づけられた認証情報の対象を特定する。そして、認証対象のユーザ名とパスワードを収集し、フロー定義情報のユーザ情報を更新する。
【０１１７】
〔ユーザ情報の更新例〕
図１６は、更新の前後のフロー定義情報におけるユーザ情報の一例を示す図である。図１６（ａ）が更新前、図１６（ｂ）が更新後である。例えば、配信サーバ１００が「userName="A"  Password="aaa"」でユーザを認証し、処理を実行した。配信サーバ１００のジョブ実行部３１は、対応づけＤＢ３８を参照して、カレントポイントの処理を行うサービス提供装置３００のユーザ情報を読み出す。そして、フロー定義情報のユーザ情報を< userName="AA"  Password="aaabbb"  />に更新する。これにより、次のサービス提供装置３００で認証が成立し、ワークフローの実行を継続できる。
【０１１８】
〔動作手順〕
図１７は、配信サーバ１００又はサービス提供装置が処理を実行する際の手順を示すフローチャート図の一例である。図１７は図９と同様であるが、ステップＳ２０又はＳ３０の後にＳ３１０、Ｓ３２０の処理が追加されている。
【０１１９】
まず、ステップＳ３０においてカレントポイントの処理行うのが自機の場合（Ｓ３０のＹｅｓ）、ユーザ認証部３７はフロー定義情報のユーザ情報を読み出し、認証情報ＤＢ３９のユーザ情報と整合性があるか否かにより認証が成立するか否かを判定する（Ｓ３２０）。認証が成立した場合にのみ、自機に割り当てられた処理を実行する。なお、認証が成立しない場合、実行結果としてエラーを配信サーバ１００に送信する（Ｓ８０）。
【０１２０】
また、自機が実行対象機器でない場合（Ｓ２０のＮｏ）、又は、カレントポイントの処理行うのが自機でない場合（Ｓ３０のＮｏ）、ジョブ実行部３１はフロー定義情報のユーザ情報を更新する（Ｓ３１０）。ジョブ実行部３１は、カレントポイントの処理を行うサービス提供装置３００を特定し、該装置におけるユーザの認証情報を読み出す。そして、フロー定義情報のユーザ情報を更新する。
【０１２１】
その後、ジョブ転送部３２はフロー定義情報とジョブデータを転送する（Ｓ１００）。以降の処理は実施例１と同様である。
【０１２２】
本実施例の処理実行システム５００によれば、ワークフローを実行する各装置でユーザを認証するので、セキュリティを維持したままワークフローを実行できる。
【符号の説明】
【０１２３】
２１      プラグイン
２２      フロー制御部
２３      ジョブ制御部
２４      配信機能部
３１      ジョブ実行部
３２      ジョブ転送部
３３      ジョブ受信部
３４      ジョブ検知部
３５      ジョブキュー
３６      マシンＩＤ
１００    配信サーバ
２００    ワークフロー実行要求装置
３００    サービス提供装置
５００    処理実行システム
【先行技術文献】
【特許文献】
【０１２４】
【特許文献１】特開２０１２‐０６３９７２号公報
【図１】
2014134873.tif 000003
【図２】
2014134873.tif 000004
【図３】
2014134873.tif 000005
【図４】
2014134873.tif 000006
【図５】
2014134873.tif 000007
【図６】
2014134873.tif 000008
【図７】
2014134873.tif 000009
【図８】
2014134873.tif 000010
【図９】
2014134873.tif 000011
【図１０】
2014134873.tif 000012
【図１１】
2014134873.tif 000013
【図１２】
2014134873.tif 000014
【図１３】
2014134873.tif 000015
【図１４】
2014134873.tif 000016
【図１５】
2014134873.tif 000017
【図１６】
2014134873.tif 000018
【図１７】
2014134873.tif 000019
【図１８】
2014134873.tif 000020