(57)【要約】【課題】ジョブに紐付くワークフローにおいて実行される処理に並行実行制限処理が含まれていても、効率のよい負荷分散を可能にする。【解決手段】投入されたジョブに紐づくワークフロー（ジョブ処理フロー）の個々の処理まで解析して、ジョブ毎に優先順位を付けて、優先順位の高い順に処理待ちキューの先頭から格納する。バランススサーバ４０はジョブデータの処理が終わり、スレッドが空くようになったら、処理待ちキューに問い合わせ、そこから一番優先度高いジョブデータを引き取って処理する。【選択図】図４
2017130160.tif 000002
【特許請求の範囲】
【請求項１】
処理データを管理する第１の情報処理装置と、前記処理データに対する処理の実行を制御する１以上の第２の情報処理装置とがネットワークを介して接続されたデータ処理システムであって、
前記第１の情報処理装置は、外部から受け付けられた前記処理データおよび前記処理データに対する処理を定義する処理定義情報を対応付けて管理する管理手段を有し、
前記第２の情報処理装置は、前記第１の情報処理装置から、前記処理データおよび処理定義情報を取得する取得手段と、前記処理データおよび処理定義情報が取得されると、前記処理定義情報に基づき、前記処理データに対する処理を実行する複数の処理実行手段とを有し、
前記取得手段は、前記複数の処理実行手段のうち、処理を実行していない前記処理実行手段がある場合に、前記第１の情報処理装置から前記処理データおよび処理定義情報を取得し、複数の処理の実行単位による並行処理が制限された処理が、前記処理実行手段により実行されている場合に、前記第１の情報処理装置から前記処理データおよび処理定義情報を取得しないことを特徴とするデータ処理システム。
【請求項２】
請求項１に記載されたデータ処理システムにおいて、
前記第１の情報処理装置は、前記処理実行手段による前記処理データに対する処理状況を表す情報を保持する処理状況保持手段と、所定回連続して前記処理データの処理に失敗した前記処理実行手段を有する前記第２の情報処理装置における前記取得手段による前記処理データおよび処理定義情報の引取りを禁止する手段とを有することを特徴とするデータ処理システム。
【請求項３】
請求項１に記載されたデータ処理システムにおいて、
前記第１の情報処理装置は、前記処理定義情報により定義される処理データに対する処理の内容に応じて、所定のルールで当該処理データに対する処理の実行優先度を算出する優先度算出手段と、前記優先度算出手段により算出された実行優先度に応じた順位で前記処理データおよび処理定義情報が格納される処理待ちキューとを有することを特徴とするデータ処理システム。
【請求項４】
請求項３に記載されたデータ処理システムにおいて、
前記所定のルールは、前記処理定義情報により定義される処理の工程数または処理の複雑度により前記実行優先度を算出するものであることを特徴とするデータ処理システム。
【請求項５】
請求項３に記載されたデータ処理システムにおいて、
前記所定のルールは、複数の処理の実行単位による並行処理が制限された処理が含まれる処理データに対する処理の実行優先度を高くしたものであることを特徴とするデータ処理システム。
【請求項６】
請求項１に記載されたデータ処理システムにおいて、
前記処理実行手段は、所定数の実行単位を同時に処理する機能を有することを特徴とするデータ処理システム。
【請求項７】
外部から受け付けられた処理データおよび前記処理データに対する処理を定義する処理定義情報を対応付けて管理する管理手段を有する第１の情報処理装置とネットワークを介して接続されるデータ処理装置であって、
前記第１の情報処理装置から、前記処理データおよび処理定義情報を取得する取得手段と、前記処理データおよび処理定義情報が取得されると、前記処理定義情報に基づき、前記処理データに対する処理を実行する複数の処理実行手段とを有し、
前記取得手段は、前記複数の処理実行手段のうち、処理を実行していない前記処理実行手段がある場合に、前記第１の情報処理装置から前記処理データおよび処理定義情報を取得し、複数の処理の実行単位による並行処理が制限された処理が、前記処理実行手段により実行されている場合に、前記第１の情報処理装置から前記処理データおよび処理定義情報を取得しないことを特徴とするデータ処理装置。
【請求項８】
外部から受け付けられた処理データおよび前記処理データに対する処理を定義する処理定義情報を対応付けて管理する管理手段を有する第１の情報処理装置とネットワークを介して接続されるデータ処理装置により実行されるデータ処理方法であって、
取得手段が、前記第１の情報処理装置から、前記処理データおよび処理定義情報を取得する取得工程と、
前記処理データおよび処理定義情報が取得されると、複数の処理実行手段が、前記処理定義情報に基づき、前記処理データに対する処理を実行する処理実行工程とを有し、
前記取得手段は、前記複数の処理実行手段のうち、処理を実行していない前記処理実行手段がある場合に、前記第１の情報処理装置から前記処理データおよび処理定義情報を取得し、複数の処理の実行単位による並行処理が制限された処理が、前記処理実行手段により実行されている場合に、前記第１の情報処理装置から前記処理データおよび処理定義情報を取得しないことを特徴とするデータ処理方法。
【請求項９】
コンピュータを請求項７に記載されたデータ処理装置の各手段として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ処理システム、データ処理装置、データ処理方法、およびプログラムに関する。
【背景技術】
【０００２】
近年、多くの企業において、ＭＦＰ（多機能複合機）などの画像入出力機器のネットワーク上への配置・接続が進んでいる。画像入出力機器は業務の効率化を図る手段として大きな役割を担っている。
【０００３】
特に、紙文書の電子化と配布を効率的に行う文書配信システムが重要になってきている。配信システムを構成する主な要素は、画像入力機器（画像入力機能を有する機器。例えばスキャナやＭＦＰ）と配信管理サーバである。
【０００４】
配信管理サーバには、予め様々な業務・用途に合わせた複数の処理を順次実行していくことを定義した処理定義情報としてのワークフロー（ジョブ処理フロー）が登録されている。ユーザは画像入力機器のオペレーションパネル（操作部）から業務に適したワークフローを選択してスキャンを行う。
【０００５】
例えば特許文献１には、ＭＦＰと配信管理サーバとを備え、ＭＦＰから入力された処理データとしての画像データに対して、配信管理サーバでワークフロー（例えばスキャン入力→ＯＣＲ処理→メール配信）を実行する文書配信システムが記載されている。
【０００６】
また、特許文献に記載されたものではないが、上記のような配信管理サーバにおいて、負荷分散を行うことが知られている。図１３は、負荷分散を行う配信管理サーバシステムについて説明するための図である。
【０００７】
この配信管理サーバシステムは、メインサーバ５００と、複数（ここでは３つ）のバランスサーバ６０１〜６０３とから構成されている。メインサーバ５００は、各バランスサーバ６０１〜６０３の負荷状況（例えばＣＰＵ占有率）を定期的にポーリングにより取得しており、その負荷状況に応じて、ジョブを振り分ける。図では、メインサーバ５００は、入力されたジョブＡ，Ｂ，Ｃ，Ｄをバランスサーバ６０１、６０２、６０３に振り分けている。
【発明の概要】
【発明が解決しようとする課題】
【０００８】
しかしながら、上記従来の配信管理サーバシステムでは、ＭＦＰから文書をスキャンしてワークフローに乗せる際に、ジョブに紐付くワークフローの構成を配慮せず、単純にバランスサーバ側にジョブとして処理依頼を一方的に送り続けるため、以下の問題がある。
【０００９】
ワークフローにおいて実行される処理のうち、例えばＣＰＵやメモリ等、システムのリソースを大量に消費する処理がある。このような処理は、複数並行して実行された場合、例えば処理速度の低下等、システムの処理に影響を及ぼす可能性があるため、複数並行して実行しない場合がある。また、ワークフローにおいて処理を実行するアプリケーションソフトウェア等の仕様や制限により、複数並行して実行できない処理もある。このような複数並行して実行することが制限された処理（以下、並行実行制限処理）には上記２種類以外の処理もある。
【００１０】
あるバランスサーバが受け取った一つのジョブに紐付くワークフローにおいて実行される処理に、このような並行実行制限処理が含まれる場合、そのジョブの実行が終了するまで、そのバランスサーバは次のジョブを受け取ることができない、又はジョブを受け取っても処理を実行できないため、効率のよい負荷分散が実現されていない。
【００１１】
本発明は、このような問題を解決するためになされたものであり、その目的は、ジョブに紐付くワークフローにおいて実行される処理に並行実行制限処理が含まれていても、効率のよい負荷分散を可能にすることである。
【課題を解決するための手段】
【００１２】
本発明に係るデータ処理システムは、処理データを管理する第１の情報処理装置と、前記処理データに対する処理の実行を制御する１以上の第２の情報処理装置とがネットワークを介して接続されたデータ処理システムであって、前記第１の情報処理装置は、外部から受け付けられた前記処理データおよび前記処理データに対する処理を定義する処理定義情報を対応付けて管理する管理手段を有し、前記第２の情報処理装置は、前記第１の情報処理装置から、前記処理データおよび処理定義情報を取得する取得手段と、前記処理データおよび処理定義情報が取得されると、前記処理定義情報に基づき、前記処理データに対する処理を実行する複数の処理実行手段とを有し、前記取得手段は、前記複数の処理実行手段のうち、処理を実行していない前記処理実行手段がある場合に、前記第１の情報処理装置から前記処理データおよび処理定義情報を取得し、複数の処理の実行単位による並行処理が制限された処理が、前記処理実行手段により実行されている場合に、前記第１の情報処理装置から前記処理データおよび処理定義情報を取得しないことを特徴とするデータ処理システムである。
【発明の効果】
【００１３】
本発明によれば、ジョブに紐付くワークフローにおいて実行される処理に並行実行制限処理が含まれていても、効率のよい負荷分散が可能になる。
【図面の簡単な説明】
【００１４】
【図１】本発明の実施形態に係るデータ処理システムを含む文書配信システムの構成を示す図である。
【図２】本発明の実施形態に係るデータ処理システムにおけるメインサーバのハードウェア構成を示すブロック図である。
【図３】本発明の実施形態に係るデータ処理システムにおけるバランスサーバのハードウェア構成を示すブロック図である。
【図４】本発明の実施形態に係るデータ処理システムにおけるメインサーバおよびバランスサーバの概略動作の一例を示す図である。
【図５】本発明の実施形態に係るデータ処理システムにおけるメインサーバおよびバランスサーバの概略動作の別の一例を示す図である。
【図６】本発明の実施形態に係るデータ処理システムにおけるメインサーバの機能構成を示すブロック図である。
【図７】本発明の実施形態に係るデータ処理システムにおけるバランスサーバの機能構成を示すブロック図である。
【図８】本発明の実施形態に係るデータ処理システムにおけるメインサーバの処理を示すフローチャートである。
【図９】本発明の実施形態に係るデータ処理システムにおけるバランスサーバの処理を示すフローチャートである。
【図１０】本発明の実施形態に係るデータ処理システムにおけるジョブデータの構成の一例を示す図である。
【図１１】本発明の実施形態に係るデータ処理システムにおけるジョブ処理フローの一例を示す図である。
【図１２】本発明の実施形態に係るデータ処理システムにおけるメインサーバが保持するバランスサーバの情報の一例を示す図である。
【図１３】従来の負荷分散について説明するための図である。
【発明を実施するための形態】
【００１５】
以下、本発明の実施形態について図面を参照して詳細に説明する。
〈文書配信システムの構成〉
図１は、本発明の実施形態に係るデータ処理システムを含む文書配信システムの構成を示す図である。
【００１６】
図１に示すように文書配信システム１では、ＬＡＮ（Local Area Network）からなる第１のネットワークＮＷ１を介して、クライアント端末１０、画像形成装置２０、メインサーバ３０、複数台のバランスサーバ４０、メールサーバ５０、およびファイルサーバ６０が接続されている。また、第１のネットワークＮＷ１には、インターネットなどの第２のネットワークＮＷ２を介してクラウドシステム７０が接続されている。ここで、メインサーバ３０とバランスサーバ４０が本発明の実施形態に係るデータ処理システムであり、メインサーバ３０およびバランスサーバ４０がデータ処理装置である。なお、図１に示す第１のネットワークＮＷ１を介して接続される画像形成装置、各種サーバ、およびクライアント端末の数はこれに限定されるものではない。
【００１７】
クライアント端末１０は、例えばＰＣ（Personal Computer）、ＰＤＡ（Personal Data Assistance）等である。クライアント端末１０は、管理者等により各種管理内容を設定するための管理ツール（例えば所定のサービス（データ配信等）のワークフロー等の設定を行うツール）を表示し、入力、画像変換、出力、配信等の各プラグインを適宜組み合わせてワークフローを作成する。クライアント端末１０により定義された処理定義情報としてのワークフローは、バランスサーバ４０に送信され、バランスサーバ４０により実行可能となる。また、このワークフローは画像形成装置２０において選択可能となる。
【００１８】
画像形成装置２０は、スキャン機能、コピー機能、プリンタ機能、ファクシミリ機能等を一つの筐体に搭載した複合機等である。画像形成装置２０は、例えばスキャナ機能により紙媒体等をスキャン処理しての画像データを生成し、ワークフローを選択すると、生成した画像データおよびワークフローを含むジョブをメインサーバ３０に送信する。
【００１９】
メインサーバ３０は、画像形成装置２０から処理データとしての画像データを含むジョブを受信すると、そのジョブからジョブデータを生成し、ジョブデータを解析して実行優先度を算出し、実行優先度に応じた順位で処理待ちキューに格納する。ジョブデータの内容、および実行優先度の算出のルールについては後述する。メインサーバ３０は本発明に係る第１の情報処理装置に対応する。
【００２０】
バランスサーバ４０は、メインサーバ３０の処理待ちキューの先頭からジョブデータを取得し、そのジョブデータに対して、クライアント端末１０等により管理者が設定したワークフローに基づき、種々の処理や配信処理を実行する。ワークフローには、例えば１または複数の処理の内容と実行順序が設定され、それらは例えばプラグインソフト等により実行される。バランスサーバ４０は本発明に係る第２の情報処理装置に対応する。
【００２１】
プラグインの内容には、ＰＤＦ（Portable Document Format）等へのフォーマット変換、ＯＣＲ（Optical Character Recognition）、画像補正、メール送信、フォルダ配信等がある。
【００２２】
メールサーバ５０は、一般的なメールサーバと同様の機能を有する。また、本実施形態では、メールサーバ５０は、バランスサーバ４０によって実行されるワークフローの実行結果の配信先とされる。このとき、配信されたデータは、電子メールに添付されて、実行されたワークフローに設定されているメールアドレス宛に転送される。
【００２３】
ファイルサーバ６０は、ネットワーク上で共有されるファイルを蓄積して管理するコンピュータである。本実施形態では、ファイルサーバ６０は、バランスサーバ４０により実行されるワークフローの実行結果の出力先（配信先）である。配信されたデータは、ファイルサーバ６０のフォルダ内に格納される。
【００２４】
〈メインサーバのハードウェア構成〉
図２は、本発明の実施形態に係るデータ処理システムにおけるメインサーバのハードウェア構成を示すブロック図である。
【００２５】
図示のように、メインサーバ３０は、それぞれがバス３１で相互に接続された制御部３２、主記憶部３３、補助記憶部３４、外部記憶装置Ｉ／Ｆ（インタフェース）部３５、およびネットワークＩ／Ｆ部３６を有する。
【００２６】
制御部３２は、メインサーバ３０全体の制御やデータの演算、加工を行うＣＰＵ（Central Processing Unit）である。主記憶部３３は、ＲＯＭ（Read Only Memory）やＲＡＭ（Random Access Memory）等であり、制御部３２が実行する基本ソフトウェアであるＯＳ（Operating System）やアプリケーションソフトウェア等のプログラムやデータを記憶または一時保存する記憶装置である。補助記憶部３４は、ＨＤＤ（Hard Disk Drive）等であり、アプリケーションソフトウェア等に関連するデータを記憶する記憶装置である。
【００２７】
外部記憶装置Ｉ／Ｆ部３５は、ＵＳＢ（Universal Serial Bus：登録商標）等のデータ伝送路を介して接続された記憶媒体３７（例えば、ＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭ、フラッシュメモリ等）とメインサーバ３０とのインタフェースである。
【００２８】
メインサーバ３０は、記憶媒体３７に所定のプログラムを格納することができる。また、記憶媒体３７に格納されたプログラムは、外部記憶装置Ｉ／Ｆ部３５を介してメインサーバ３０にインストールされ、インストールされた所定のプログラムはメインサーバ３０により実行可能となる。
【００２９】
ネットワークＩ／Ｆ部３６は、有線および／または無線回線等のデータ伝送路により構築されたＬＡＮ（Local Area Network）、ＷＡＮ（Wide Area Network）等のネットワークを介して接続された通信機能を有する周辺機器と当該メインサーバ３０とのインタフェースである。
【００３０】
〈バランスサーバのハードウェア構成〉
図３は、本発明の実施形態に係るデータ処理システムにおけるバランスサーバのハードウェア構成を示すブロック図である。
【００３１】
図示のように、バランスサーバ４０は、それぞれがバス４１で相互に接続された制御部４２、主記憶部４３、補助記憶部３４、外部記憶装置Ｉ／Ｆ部４５、およびネットワークＩ／Ｆ部４６を有する。
【００３２】
制御部４２は、バランスサーバ４０全体の制御やデータの演算、加工を行うＣＰＵである。主記憶部４３は、ＲＯＭやＲＡＭ等であり、制御部４２が実行する基本ソフトウェアであるＯＳやアプリケーションソフトウェア等のプログラムやデータを記憶または一時保存する記憶装置である。補助記憶部４４は、ＨＤＤ等であり、アプリケーションソフトウェア等に関連するデータを記憶する記憶装置である。
【００３３】
外部記憶装置Ｉ／Ｆ部４５は、ＵＳＢ（登録商標）等のデータ伝送路を介して接続された記憶媒体４７とバランスサーバ４０とのインタフェースである。
【００３４】
バランスサーバ４０は、記憶媒体４７に所定のプログラムを格納することができる。また、記憶媒体４７に格納されたプログラムは、外部記憶装置Ｉ／Ｆ部４５を介してバランスサーバ４０にインストールされ、インストールされた所定のプログラムはバランスサーバ４０により実行可能となる。
【００３５】
ネットワークＩ／Ｆ部４６は、有線および／または無線回線等のデータ伝送路により構築されたＬＡＮ、ＷＡＮ等のネットワークを介して接続された通信機能を有する周辺機器と当該バランスサーバ４０とのインタフェースである。
【００３６】
〈メインサーバおよびバランスサーバの概略動作〉
図４は、本発明の実施形態に係るデータ処理システムにおけるメインサーバおよびバランスサーバの概略動作の一例を示す図であり、図５は、その別の一例を示す図である。
【００３７】
社内の処理フローに乗せて配信したいドキュメントが沢山存在する場合、メインサーバ３０は同時に複数のジョブデータをバランスサーバ４０に割り振る必要がある。
【００３８】
本実施形態に係るデータ処理システムでは、図４および図５に示すように、メインサーバ３０は、投入されたジョブに紐づくワークフロー（ジョブ処理フロー）の個々の処理まで解析して、ジョブ毎に優先順位を付け、優先順位（実行優先度）の高い順に処理待ちキューの先頭から格納する。このとき、メインサーバ３０は、ジョブ処理フローの中に並行実行制限処理の一種であるシングルスレッド処理が存在する場合、シングルスレッド処理を含む他のジョブデータの処理が待たされないように、ジョブデータにシングルスレッド処理の有無を表す識別情報を付ける。
【００３９】
並行実行制限処理とは、処理の実行単位（スレッド、プロセス、タスク等）を複数並行して実行することが制限された処理（複数の処理の実行単位による並行処理が制限された処理）である。つまり、シングルスレッド処理とは、スレッドを複数並行して実行しない処理である。また、シングルスレッド処理以外の並行実行制限処理としては、プロセスを複数並行して実行しないシングルプロセス処理、タスクを複数並行して実行しない処理であるシングルタスク処理などがある。
【００４０】
メインサーバ３０は、従来システムとは異なり、ジョブデータをバランスサーバ４０に振り分けない。すなわち、図４に示すように、バランスサーバ４０はジョブデータの処理が終わり、スレッドが空いたら、処理待ちキューに問い合わせ、処理待ちキューの先頭に格納されているジョブデータを引取って処理する。
【００４１】
また、図５に示すように、バランスサーバ４０で処理中のスレッド数が同時最大処理数（ここでは３）に達しておらず、空きのスレッドがあっても、シングルスレッド処理を含むジョブデータを処理中であれば、そのジョブデータの処理が終了するまで、バランスサーバ４０はメインサーバ３０からジョブデータを引取らないようにする。
【００４２】
つまり、メインサーバ３０が個々のジョブに紐づくワークフロー（ジョブ処理フロー）の中身を解析して、シングルスレッド処理を含むか否かを判断した上でジョブデータごとに実行優先順位を付け、実行優先度が最高のジョブデータを処理待ちキューの先頭に置く。また、バランスサーバ４０に対して、処理中のスレッド数が同時最大処理数に達しているとき、およびシングルスレッド処理（画像変換など)を含むジョブデータを実行しているときは、処理待ちキューからジョブデータを引取らないようにする。これらにより、効率の良い負荷分散を実現する。
【００４３】
〈メインサーバの機能構成〉
図６は、本発明の実施形態に係るデータ処理システムにおけるメインサーバの機能構成を示すブロック図である。
【００４４】
図示のように、メインサーバ３０は、入力受付部３０１、配信フロー設定部３０２、配信設定情報保持部３０３、ジョブデータ生成部３０４、ジョブ優先度算出部３０５、および処理待ちキュー３０６を備えている。これらの各部は、メインサーバ３０にインストールされたプログラムが制御部３２により実行されることで実現される。また、ジョブデータ生成部３０４および処理待ちキュー３０６が本発明に係る管理手段に対応する。
【００４５】
入力受付部３０１はジョブを受け付ける。このジョブは、例えば画像形成装置２０において、ユーザが選択したワークフローを示すワークフロー情報と、ユーザが選択したワークフローに対して設定した書誌情報（設定情報）と、スキャンされた画像データとを含む情報である。入力受付部３０１は例えば共有フォルダにより構成される。
【００４６】
配信フロー設定部３０２は、ジョブ処理フロー（後述する図１１）を設定する。例えば、管理者が配信フロー設定部３０２により提供されたユーザインターフェースを介して、ジョブ処理フローにおいて、どの処理（プラグイン）をどの順番で行うかを設定する（組み立てるようなイメージ）。また、処理する際の設定値（書誌情報）を設定する。設定された情報は、配信設定情報保持部３０３に格納される。配信設定情報保持部３０３は、格納された処理フロー情報を保持する。
【００４７】
この処理フロー情報は、どのプラグインを使うか、どの順番で使うか（つまり、どのワークフローが選択されたか）だけではなく、各プラグインにおいてどのように処理するか（つまり、ワークフロー・プラグインに対するユーザ設定）といった情報を含む。処理フロー情報の具体例については後述する。
【００４８】
ジョブデータ生成部３０４は、一定周期で入力受付部３０１をポーリングし、ジョブが受け付けられた場合、ジョブを受け取る。また、受け取ったジョブに基づいて、ジョブデータを生成し、ジョブ優先度算出部３０５に渡す。
【００４９】
ジョブ優先度算出部３０５は、ジョブデータ生成部３０４から受け取ったジョブデータを解析し、所定のルールによりジョブデータの実行優先度を算出する。そして、実行優先度の高い順にジョブデータを処理待ちキュー３０６の先頭から格納する。このとき、処理待ちキュー３０６に格納済みのジョブデータよりも実行優先度が高い場合、格納済みのジョブデータよりも先頭側に格納する。
【００５０】
実行優先度を算出するルールは、ジョブ処理フローを構成する処理の工程数や処理の複雑度に基づくものであり、例えば、「処理工程数が多い程、実行優先度が高い」、「シングルスレッド処理を含むジョブデータは実行優先度が高い」、「配信先が複数あるジョブデータは配信先が一つのジョブデータよりも実行優先度が高い」がある。
【００５１】
また、ジョブデータ生成部３０４は、受け取ったジョブに基づいて、ジョブに含まれるワークフロー情報、書誌情報、画像データ等が対応付けられたジョブ情報に対して、ジョブ情報を識別するためのジョブＩＤを付与して、例えば、データテーブルや設定ファイル等で管理してもよい。この場合、ジョブデータ生成部３０４は、ジョブＩＤをジョブ優先度算出部３０５に渡し、ジョブ優先度算出部３０５は、ジョブＩＤに基づいてジョブ情報を特定し、特定したジョブ情報に基づいて、所定のルールによりジョブ情報の実行優先度を算出する。そして、実行優先度の高い順にジョブＩＤを処理待ちキュー３０６の先頭から格納する。
【００５２】
〈バランスサーバの機能構成〉
図７は、本発明の実施形態に係るデータ処理システムにおけるバランスサーバの機能構成を示すブロック図である。
【００５３】
図示のように、バランスサーバ４０は、分散設定部４０１、ジョブ引取り部４０２、処理制御部４０３、および処理実行部４０４を備えている。これらの各部は、バランスサーバ４０にインストールされたプログラムが制御部４２により実行されることで実現される。また、ジョブ引取り部４０２、処理実行部４０４が、それぞれ本発明に係る取得手段、処理実行手段に対応する。
【００５４】
分散設定部４０１は、負荷分散のアルゴリズム、例えば同時処理可能な最大スレッド数をユーザに選択させることができる。ジョブ引取り部４０２は、メインサーバ３０の処理待ちキュー３０６からジョブデータを引取る。また、ジョブ情報をデータテーブルや設定ファイル等で管理する場合には、ジョブ引取り部４０２は、ジョブ情報に含まれるワークフロー情報、書誌情報、画像データ等を取得する。処理制御部４０３は、バランスサーバ４０の全体の動作を制御する。処理実行部４０４はジョブデータの処理を実行する。
【００５５】
〈メインサーバの処理〉
図８は、本発明の実施形態に係るデータ処理システムにおけるメインサーバの処理を示すフローチャートである。この図および図６を参照して、メインサーバ３０の処理について説明する。
【００５６】
ジョブデータ生成部３０４は入力受付部３０１をポーリングし、ジョブの投入状況を監視し（ステップＳ１）、新たなジョブが投入されたか否かを判定する（ステップＳ２）。
【００５７】
新たにジョブが投入されていないときは（ステップＳ２：No）、ステップＳ１に戻り、ジョブの投入状況の監視を繰り返す。新たにジョブが投入されたときは（ステップＳ２：Yes）、ジョブデータ生成部３０４はジョブデータを生成し、ジョブ優先度算出部３０５に渡す（ステップＳ３）。
【００５８】
ジョブ優先度算出部３０５は、ジョブデータを解析し（ステップＳ４）、ジョブデータに実行優先度を付けて処理待ちキュー３０６に格納する（ステップＳ５）。そして、ステップＳ１に戻り、ジョブの投入状況の監視を繰り返す。
【００５９】
〈バランスサーバの処理〉
図９は、本発明の実施形態に係るデータ処理システムにおけるバランスサーバの処理を示すフローチャートである。この図および図７を参照して、バランスサーバ４０の処理について説明する。
【００６０】
処理制御部４０３は、処理実行部４０４から、処理中のスレッド数を取得し（ステップＳ１１）、同時最大処理数に達しているか否かを判定する（ステップＳ１２）。判定の結果、達している場合は（ステップＳ１２：Yes）、ステップＳ１１に戻り、処理制御部４０３による処理中のスレッド数の取得を繰り返す。
【００６１】
判定の結果、同時最大処理数に達していない場合は（ステップＳ１２：No）、処理制御部４０３はシングルスレッド処理を含むジョブデータを処理していることの通知の有無を判定する（ステップＳ１３）。
【００６２】
判定の結果、通知があった場合は（ステップＳ１３：Yes）、ステップＳ１１に戻り、処理制御部４０３による処理中のスレッド数の取得を繰り返す。一方、通知がなかった場合は（ステップＳ１３：No）、ジョブ引取り部４０２はメインサーバ３０の処理待ちキュー３０６の先頭からジョブデータを取得しにいく（ステップＳ１４）。
【００６３】
処理制御部４０３は、ジョブ引取り部４０２がジョブデータを取得できたか否かを判定し（ステップＳ１５）、取得できた場合は（ステップＳ１５：Yes）、処理実行部４０４に対して、スレッドを立ち上げるように指示し、ジョブデータの処理を指示する（ステップＳ１６）。一方、取得できなかった場合は（ステップＳ１５：No）、ステップＳ１１に戻り、処理制御部４０３による処理中のスレッド数の取得を繰り返す。
【００６４】
ステップＳ１６で処理制御部４０３から指示を受けた処理実行部４０４は、ジョブデータを解析し、シングルスレッド処理の有無を表す情報を取得し（ステップＳ１７）、シングルスレッド処理を含むジョブデータであるか否かを判定する（ステップＳ１８）。
【００６５】
判定の結果、シングルスレッド処理を含むジョブデータであった場合は（ステップＳ１８：Yes）、処理実行部４０４は、シングルスレッド処理を含むジョブを処理していること処理制御部４０３に通知し（ステップＳ１９）、ジョブデータに含まれる処理フロー情報に従って、ジョブデータの処理を開始する（ステップＳ２０）。
【００６６】
シングルスレッド処理を含むジョブデータでなかった場合は（ステップＳ１８：No）、処理実行部４０４は、そのままジョブデータに含まれる処理フローに従って、ジョブデータの処理を開始する（ステップＳ２０）。
【００６７】
処理実行部４０４がジョブデータの処理を開始したら、ステップＳ１１に戻り、処理制御部４０３による処理中のスレッド数の取得を繰り返す。
【００６８】
〈ジョブデータの構成例〉
図１０は、ジョブデータの構成の一例を示す図である。図示のように、ジョブデータは、「ジョブＩＤ」、「処理フロー情報」、「画像データ」、「ジョブ実行優先度」、「シングルスレッド処理の有無」、「アップロード日時」、「ジョブ投入者」からなる。
【００６９】
「ジョブＩＤ」は、ジョブを受け付けた後にジョブデータに付与される識別情報である。「アップロード日時」はジョブを受け付けた日時である。ただし、これらの情報は画像形成装置２０から送信されたジョブに含まれるように構成してもよい。
【００７０】
「画像データ」は、画像形成装置２０から送信されたジョブに含まれているスキャンデータである。「処理フロー情報」は、画像形成装置２０から送信されたジョブに含まれるものである。
【００７１】
図１１は、本発明の実施形態に係るデータ処理システムにおけるジョブ処理フローの一例を示す図である。このジョブ処理フローは、ジョブデータにおける「処理フロー情報」に対応するものであり、順番に処理されるＯＣＲ１０１、画像変換１０２、画像補正１０３、ＰＤＦ変換１０４、およびフォルダ配信１０５からなる。
【００７２】
図１０の説明に戻る。「ジョブ実行優先度」は、ジョブ優先度算出部３０５が算出したジョブデータの実行優先度である。「シングルスレッド処理」の有無は、「ジョブ処理フロー」を解析して、ジョブデータ生成部３０４が生成したものである。図１１のジョブ処理フローの場合、「画像補正１０３」および「ＰＤＦ変換１０４」がシングルスレッド処理であり、これらの処理が含まれるジョブ処理フローは、「シングルスレッド処理がある」と判断される。
【００７３】
〈メインサーバが保持するバランスサーバの情報〉
図１２は、本発明の実施形態に係るデータ処理システムにおけるメインサーバが保持するバランスサーバの情報の一例を示す図である。
【００７４】
図示のように、メインサーバ３０は、バランスサーバ４０の情報として、「バランスサーバＩＤ」、「前回のジョブ処理状況」、「連続ジョブ処理失敗回数」、「ＩＰアドレス」、「同時最大処理数」、および「ブロッキング日時」を保持する。
【００７５】
この図は、１０回連続してジョブ処理に失敗したため、２０１５年６月６日の１５時３０分３２秒にブロッキングしたことを表している。ブロッキングした場合、所定時間経過するまでは、メインサーバ３０はバランスサーバ４０によるジョブデータの引取りを禁止（拒否）する。
【００７６】
メインサーバ３０は、ジョブデータを引取りに来るバランスサーバ４０に対して、この情報を参照して、以下のように処理する。まず、「ブロッキング日時」を見る。もし「ブロッキング日時」が空欄であれば、そのバランスサーバ４０が正常にジョブデータを処理していると判断して、処理待ちキュー３０６から新しいジョブを引取らせる。もし「ブロッキング日時」が記録され、かつ所定の時間（ブロッキング期間）が経過していないのであれば、経過するまでバランスサーバ４０にジョブを引取らせないようにする。
【００７７】
以上詳細に説明したように、本発明の実施形態に係るデータ処理システムは下記（１）〜（４）の仕組みを備えたことで、効率の良い負荷分散を実現することができる。
（１）メインサーバ３０に投入するジョブに紐付くワークフローの個々の処理まで解析して、ジョブごとに優先順位を付けて、優先順位の高い順にジョブデータを処理待ちキュー３０６の先頭から格納する。
（２）処理待ちキュー３０６に格納したジョブデータをバランスサーバ４０に振り分けるのではなく、バランスサーバ４０はジョブデータの処理が終わり、スレッドが空いたら、処理待ちキュー３０６に問い合わせ、そこから一番優先度の高いジョブデータを引取って処理する。
（３）ジョブ処理フローの中にシングルスレッド処理がある場合、ジョブデータにシングルスレッドを表記する。このジョブデータを処理しているバランスサーバ４０は、同時最大処理スレッド数に達していなくても、このジョブデータの処理が終了するまで、処理待ちキュー３０６からジョブデータを引き取らない。こうしてシングルスレッド処理を含むジョブデータ同士はどちらか相手の処理終了までに待たされるというケースの発生を防ぐ。
（４）個々のバランスサーバ４０のジョブデータ処理状況をメインサーバ３０が記録することで、連続してジョブデータ処理に失敗したバランスサーバ４０には、所定の時間メインサーバ３０がジョブデータを引取らせないような仕組みを用意することで、ジョブデータ処理の成功率を確保する。
【００７８】
なお、以上の実施形態は、並行実行制限処理の一例であるシングルスレッド処理に関するものであるが、本発明は、他の並行実行制限処理であるシングルプロセス処理、シングルタスク処理に対しても同様に適用することができる。
【符号の説明】
【００７９】
３０…メインサーバ、４０…バランスサーバ、３０５…ジョブ優先度算出部、３０６…処理待ちキュー、４０２…ジョブ引取り部、４０３…処理制御部、４０４…処理実行部。
【先行技術文献】
【特許文献】
【００８０】
【特許文献１】特開２０１５−６０３０６号公報
【図１】
2017130160.tif 000003
【図２】
2017130160.tif 000004
【図３】
2017130160.tif 000005
【図４】
2017130160.tif 000006
【図５】
2017130160.tif 000007
【図６】
2017130160.tif 000008
【図７】
2017130160.tif 000009
【図８】
2017130160.tif 000010
【図９】
2017130160.tif 000011
【図１０】
2017130160.tif 000012
【図１１】
2017130160.tif 000013
【図１２】
2017130160.tif 000014
【図１３】
2017130160.tif 000015