(57)【要約】【課題】稼働中の情報処理システムに含まれるプログラムを容易に更新できる情報処理装置、情報処理システム、停止方法及びプログラムを提供することを課題とする。【解決手段】情報処理の実行要求情報を保持する第１保持手段と、一種類以上の情報処理を実行する実行手段と、実行要求情報の情報処理の種類に応じて、その種類の情報処理を実行できる実行手段に第１保持手段が保持する実行要求情報の情報処理を実行させる実行制御手段と、実行手段の停止指示を保持する第２保持手段と、を有し、実行制御手段は実行手段が情報処理を実行していないときに、第２保持手段を確認し、第２保持手段に停止指示が保持されている実行手段に停止処理を行わせることにより、上記課題を解決する。【選択図】  図８
2014153804.tif 000002
【特許請求の範囲】
【請求項１】
情報処理の実行要求情報を保持する第１保持手段と、
一種類以上の情報処理を実行する実行手段と、
前記第１保持手段が保持する前記実行要求情報の情報処理の種類に応じて、その種類の前記情報処理を実行できる前記実行手段に、前記第１保持手段が保持する前記実行要求情報の情報処理を実行させる実行制御手段と、
前記実行手段の停止指示を保持する第２保持手段と、
を有し、
前記実行制御手段は前記実行手段が前記情報処理を実行していないときに、前記第２保持手段を確認し、前記第２保持手段に停止指示が保持されている前記実行手段に停止処理を行わせること
を特徴とする情報処理装置。
【請求項２】
前記停止処理は、前記実行手段が起動しているプログラムを開放する処理、前記実行手段が開いているファイルを閉じる処理、前記実行手段が一時的に利用しているファイル格納場所のファイルを削除する処理、のうちの少なくとも一つを実行したあと、前記実行手段を停止させること
を特徴とする請求項１記載の情報処理装置。
【請求項３】
前記実行制御手段は、前記実行手段が前記情報処理を実行していないとき、所定間隔で前記第２保持手段を確認し、前記実行手段が前記情報処理を実行しているとき、前記情報処理が完了したあとで前記第２保持手段を確認すること
を特徴とする請求項１又は２記載の情報処理装置。
【請求項４】
前記第２保持手段は、ユーザからの前記実行手段の停止指示を保持すること
を特徴とする請求項１乃至３何れか一項記載の情報処理装置。
【請求項５】
テスト用の前記実行手段を起動させる起動手段
を更に有し、
前記実行制御手段は、前記第１保持手段に含まれるテスト用の前記実行要求情報を保持するテスト用保持手段からテスト用の前記実行要求情報を取得し、テスト用の前記実行手段にテスト用の前記実行要求情報の情報処理を実行させること
を特徴とする請求項１乃至４何れか一項記載の情報処理装置。
【請求項６】
テスト用の前記実行要求情報を前記テスト用保持手段に登録させる登録手段と、
前記テスト用の前記実行手段が実行したテスト用の前記実行要求情報の情報処理の結果を評価する評価手段と
を更に有すること
を特徴とする請求項５記載の情報処理装置。
【請求項７】
前記実行制御手段は、テスト用の前記実行手段からテスト用の前記実行要求情報の情報処理の結果を取得すると、テスト用の前記実行要求情報に通知先として指定されている前記評価手段に、テスト用の前記実行要求情報の情報処理の結果を通知すること
を特徴とする請求項６記載の情報処理装置。
【請求項８】
ユーザからのテスト用の前記実行手段の起動指示に応じて、前記起動手段、前記登録手段及び前記評価手段が、テスト用の前記実行手段を起動させる処理、テスト用の前記実行要求情報を前記テスト用保持手段に登録させる処理、テスト用の前記実行手段にテスト用の前記実行要求情報の情報処理を実行させる処理、前記テスト用の前記実行手段が実行したテスト用の前記実行要求情報の情報処理の結果を評価する処理を、自動的に実行することを特徴とする請求項７記載の情報処理装置。
【請求項９】
コンピュータを、請求項１乃至８何れか一項に記載の情報処理装置として機能させるためのプログラム。
【請求項１０】
複数の情報処理装置を含む情報処理システムであって、
情報処理の実行要求情報を保持する第１保持手段と、
一種類以上の情報処理を実行する実行手段と、
前記第１保持手段が保持する前記実行要求情報の情報処理の種類に応じて、その種類の前記情報処理を実行できる前記実行手段に、前記第１保持手段が保持する前記実行要求情報の情報処理を実行させる実行制御手段と、
前記実行手段の停止指示を保持する第２保持手段と、
を有し、
前記実行制御手段は前記実行手段が前記情報処理を実行していないときに、前記第２保持手段を確認し、前記第２保持手段に停止指示が保持されている前記実行手段に停止処理を行わせること
を特徴とする情報処理システム。
【請求項１１】
複数の情報処理装置を含む情報処理システムが実行する停止方法であって、
第１の保持手段が情報処理の実行要求情報を保持するステップと、
実行制御手段が、前記第１保持手段に保持されている前記実行要求情報の情報処理の種類に応じて、その種類の前記情報処理を実行できる実行手段に、前記第１保持手段に保持されている前記実行要求情報の情報処理を実行させるステップと、
前記実行制御手段が、前記実行手段が前記情報処理を実行していないときに、前記実行手段の停止指示を保持する第２保持手段を確認し、前記第２保持手段に停止指示が保持されている前記実行手段に停止処理を行わせるステップと
を有することを特徴とする停止方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、情報処理システム、停止方法及びプログラムに関する。
【背景技術】
【０００２】
クライアントからサーバに対して印刷指示を送信し、印刷指示を受信したサーバが印刷対象のコンテンツを印刷データに変換する技術は従来から知られている。このような技術において、サーバは印刷データを生成するサービスをクライアントに提供している。
【０００３】
近年、注目を集めているクラウドコンピューティングは、上記のようにサーバがクライアントにサービスを提供する一形態である。クラウドコンピューティングは、多くのコンピューティング・リソースを用いてデータ変換やデータ処理を分散実行し、多くのクライアントからの要求を処理する。このようなクラウドコンピューティングを実現するクラウドコンピューティング環境上にＷｅｂサービスを実装し、多種多様なサービスを提供するベンダーも乱立しつつある（例えば特許文献１参照）。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
例えばデータ変換を実行するサーバはプログラムの独立性やメンテナンス性を高めるために、データ変換を行うデータ変換エンジン（データ変換プログラム、データ変換ライブラリなど）を用いる場合がある。
【０００５】
また、データ変換に限らず、何らかのデータ処理を実行するサーバはプログラムの独立性やメンテナンス性を高めるために、データ処理を行うデータ処理エンジン（データ処理プログラム、データ処理ライブラリなど）を用いる場合がある。
【０００６】
データ変換の種類やデータ処理の種類が複数の場合には、多数のデータ変換エンジンやデータ処理エンジンが必要となる。このようなデータ変換エンジンやデータ処理エンジンを用いる稼働中の情報処理システムにおいてデータ変換エンジンやデータ処理エンジンの更新を行う場合は、情報処理システムを停止して行うことが一般的であった。
【０００７】
データ変換エンジンやデータ処理エンジンを用いる従来の情報処理システムは、情報処理システム全体を停止して行っていたため、データ変換エンジンやデータ処理エンジンを容易に更新できないことが課題である。
【０００８】
本発明の実施の形態は、上記の点に鑑みなされたもので、稼働中の情報処理システムに含まれるプログラムを容易に更新できる情報処理装置、情報処理システム、停止方法及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【０００９】
上記目的を達成するために本願請求項１の情報処理装置は、情報処理の実行要求情報を保持する第１保持手段と、一種類以上の情報処理を実行する実行手段と、前記第１保持手段が保持する前記実行要求情報の情報処理の種類に応じて、その種類の前記情報処理を実行できる前記実行手段に、前記第１保持手段が保持する前記実行要求情報の情報処理を実行させる実行制御手段と、前記実行手段の停止指示を保持する第２保持手段と、を有し、前記実行制御手段は前記実行手段が前記情報処理を実行していないときに、前記第２保持手段を確認し、前記第２保持手段に停止指示が保持されている前記実行手段に停止処理を行わせることを特徴とする。
【発明の効果】
【００１０】
本発明の実施の形態によれば、稼働中の情報処理システムに含まれるプログラムを容易に更新できる。
【図面の簡単な説明】
【００１１】
【図１】第１の実施形態に係る情報処理システムの一例の構成図である。
【図２】サービス提供システムの他の例の構成図である。
【図３】コンピュータシステムの一例のハードウェア構成図である。
【図４】第１の実施形態に係るサービス提供システムの一例の処理ブロック図である。
【図５】組織情報の一例の構成図である。
【図６】ユーザ情報の一例の構成図である。
【図７】機器情報の一例の構成図である。
【図８】ワーカーを更新する処理の一例のシーケンス図である。
【図９】ワーカーの停止処理の一例のフローチャートである。
【図１０】ワーカーをテスト及び起動する処理の一例のシーケンス図である。
【図１１】ジョブ情報の一例の構成図である。
【図１２】ジョブ完了の通知の一例の構成図（１／２）である。
【図１３】ジョブ完了の通知の一例の構成図（２／２）である。
【図１４】ジョブ情報の他の例の構成図である。
【図１５】ワーカーによるジョブ結果の評価に利用する対応表の一例について説明するための図である。
【図１６】ワーカーの更新、テスト及び起動時における開発者の操作手順を表した一例のフローチャートである。
【図１７】サービス提供システムによる非同期処理の一例について説明する図である。
【図１８】キューとワーカーとワーカーフレームワークとの関係について説明するための図である。
【図１９】ワーカーの更新、テスト及び起動時におけるキューとワーカーとワーカーフレームワークとの関係について説明するための図である。
【発明を実施するための形態】
【００１２】
以下、本発明の実施形態について図面を参照しながら説明する。
［第１の実施形態］
＜システム構成＞
図１は第１の実施形態に係る情報処理システムの一例の構成図である。図１の情報処理システム１０００は例えばオフィス内ネットワーク等のネットワークＮ１と、クラウドサービスに代表されるサービス提供システムのネットワークＮ２と、インターネットなどのネットワークＮ３とを有する。
【００１３】
ネットワークＮ１は、ファイヤウォールＦＷの内側にあるプライベートなネットワークである。ファイヤウォールＦＷはネットワークＮ１とネットワークＮ３との接点に設置され、不正なアクセスを検出及び遮断する。ネットワークＮ１にはクライアント端末１０１１、携帯端末１０１２、複合機などの画像形成装置１０１３が接続されている。
【００１４】
クライアント端末１０１１は端末装置の一例である。クライアント端末１０１１は一般的なＯＳなどが搭載された情報処理装置によって実現できる。クライアント端末１０１１は無線による通信の手段または有線による通信の手段を有する。クライアント端末１０１１は、タブレットＰＣ、ノートＰＣなど、ユーザが操作可能な端末である。
【００１５】
携帯端末１０１２は端末装置の一例である。携帯端末１０１２は、無線による通信の手段または有線による通信の手段を有している。携帯端末１０１２は、スマートフォンや携帯電話、タブレットＰＣ、ノートＰＣなど、ユーザが携帯可能な端末である。
【００１６】
画像形成装置１０１３は複合機などの画像形成機能を有する装置である。画像形成装置１０１３は無線による通信の手段または有線による通信の手段を有する。画像形成装置１０１３は複合機、コピー機、スキャナ、プリンタ、レーザプリンタ、プロジェクタ、電子黒板など、画像形成に係る処理を行う装置である。図１では、一例としてクライアント端末１０１１、携帯端末１０１２、画像形成装置１０１３がそれぞれ一台である例を示しているが複数台であってもよい。
【００１７】
ネットワークＮ２はアクセス制御装置１０２１によってネットワークＮ３に接続されている。ネットワークＮ２はアクセス制御装置１０２１によってセキュリティが保護されている。ネットワークＮ２にはプリントサービス提供装置１０２２、スキャンサービス提供装置１０２３、他サービス提供装置１０２４が接続されている。
【００１８】
図１の情報処理システム１０００は、アクセス制御装置１０２１、プリントサービス提供装置１０２２、スキャンサービス提供装置１０２３、他サービス提供装置１０２４がサービス提供システムを実現している。プリントサービス提供装置１０２２、スキャンサービス提供装置１０２３、他サービス提供装置１０２４はプリントサービス、スキャンサービスや他サービスを提供する。
【００１９】
アクセス制御装置１０２１はプリントサービス提供装置１０２２が提供するプリントサービスやスキャンサービス提供装置１０２３が提供するスキャンサービスなどへのログインを制御する。
【００２０】
アクセス制御装置１０２１、プリントサービス提供装置１０２２、スキャンサービス提供装置１０２３、他サービス提供装置１０２４は、一台以上の情報処理装置によって実現される。
【００２１】
アクセス制御装置１０２１、プリントサービス提供装置１０２２、スキャンサービス提供装置１０２３、他サービス提供装置１０２４は一台の情報処理装置に統合して実現してもよいし、複数の情報処理装置に分散して実現してもよい。
【００２２】
ネットワークＮ２側のサービスの一部はネットワークＮ２以外にあってもよい。携帯端末１０１２は、オフィス内ネットワーク等のネットワークＮ１以外にあってもよい。図１の情報処理システム１０００では携帯端末１０１２がネットワークＮ１と、ネットワークＮ３とにある例を示している。
【００２３】
ネットワークＮ３に接続されているオンラインストレージ１０３１は、ファイルを保存する装置である。オンラインストレージ１０３１は、ベンダーにより提供されるファイル保存用の装置であってもよい。
【００２４】
図１のサービス提供システムの構成は一例であって、図２に示すような構成によっても実現できる。図２はサービス提供システムの他の例の構成図である。図２のサービス提供システムはネットワークＮ２がファイヤウォールＦＷによってネットワークＮ３に接続されている。
【００２５】
ネットワークＮ２にはＳａａＳ（Software as a Service）系のサービス提供装置、共通サービス（Network Service Platform）系のサービス提供装置、ストレージ（Storage）系の記憶装置が接続されている。なお、共通サービス系のサービス提供装置はＳａａＳ系のサービス提供装置が共通で使えるサービスを提供する。
【００２６】
ＳａａＳ系のサービス提供装置は、例えばポータルサービス提供装置１０５１、プリントサービス提供装置１０５２、スキャンサービス提供装置１０５３など、提供するサービスに応じたサービス提供装置が含まれる。また、共通サービス系のサービス提供装置は、例えば認証サービス提供装置１０６１、データ処理サービス提供装置１０６２、一時データ保存サービス提供装置１０６３など、提供する共通サービスに応じたサービス提供装置が含まれる。ストレージ系の記憶装置は、例えば認証情報記憶装置１０７１、ジョブ情報記憶装置１０７２、一時データ記憶装置１０７３など、記憶する情報（データ）に応じた記憶装置が含まれる。
【００２７】
図２のサービス提供システムでは、例えばファイヤウォールＦＷ、認証サービス提供装置１０６１が提供する認証サービスによってセキュリティが保護されている。なお、図２のサービス提供システムの構成も一例であって、他の構成であってもよい。
【００２８】
＜ハードウェア構成＞
図１のクライアント端末１０１１、携帯端末１０１２、アクセス制御装置１０２１、プリントサービス提供装置１０２２、スキャンサービス提供装置１０２３、他サービス提供装置１０２４は、例えば図３に示すようなハードウェア構成のコンピュータシステムにより実現される。
【００２９】
図２のＳａａＳ系のサービス提供装置、共通サービス系のサービス提供装置、ストレージ系の記憶装置も、例えば図３に示すようなハードウェア構成のコンピュータシステムにより実現される。
【００３０】
図３はコンピュータシステムの一例のハードウェア構成図である。図３のコンピュータシステム１５００は、入力装置１５０１、表示装置１５０２、外部Ｉ／Ｆ１５０３、ＲＡＭ（Random Access Memory）１５０４、ＲＯＭ（Read Only Memory）１５０５、ＣＰＵ（Central Processing Unit）１５０６、通信Ｉ／Ｆ１５０７、及びＨＤＤ（Hard Disk Drive）１５０８などを備え、それぞれがバスＢで相互に接続されている。
【００３１】
入力装置１５０１はキーボードやマウス、タッチパネルなどを含み、ユーザが各操作信号を入力するのに用いられる。表示装置１５０２はディスプレイ等を含み、コンピュータシステム１５００による処理結果を表示する。
【００３２】
通信Ｉ／Ｆ１５０７はコンピュータシステム１５００をネットワークＮ１〜Ｎ３に接続するインタフェースである。これにより、コンピュータシステム１５００は通信Ｉ／Ｆ１５０７を介してデータ通信を行うことができる。
【００３３】
ＨＤＤ１５０８はプログラムやデータを格納している不揮発性の記憶装置である。格納されるプログラムやデータには、例えばコンピュータシステム１５００全体を制御する基本ソフトウェアであるＯＳ（Operating System）や、ＯＳ上において各種機能を提供するアプリケーションソフトウェアなどがある。
【００３４】
ＨＤＤ１５０８は格納しているプログラムやデータを所定のファイルシステム及び／又はＤＢ（データベース）により管理している。外部Ｉ／Ｆ１５０３は、外部装置とのインタフェースである。外部装置には、記録媒体１５０３ａなどがある。これにより、コンピュータシステム１５００は外部Ｉ／Ｆ１５０３を介して記録媒体１５０３ａの読み取り及び／又は書き込みを行うことができる。記録媒体１５０３ａにはフレキシブルディスク、ＣＤ（Compact Disk）、ＤＶＤ（Digital Versatile Disk）、ＳＤメモリカード（SD Memory card）、ＵＳＢメモリ（Universal Serial Bus memory）などがある。
【００３５】
ＲＯＭ１５０５は、電源を切ってもプログラムやデータを保持することができる不揮発性の半導体メモリ（記憶装置）である。ＲＯＭ１５０５には、コンピュータシステム１５００の起動時に実行されるＢＩＯＳ（Basic Input/Output System）、ＯＳ設定、及びネットワーク設定などのプログラムやデータが格納されている。ＲＡＭ１５０４は、プログラムやデータを一時保持する揮発性の半導体メモリ（記憶装置）である。
【００３６】
ＣＰＵ１５０６は、ＲＯＭ１５０５やＨＤＤ１５０８などの記憶装置からプログラムやデータをＲＡＭ１５０４上に読み出し、処理を実行することで、コンピュータシステム１５００全体の制御や機能を実現する演算装置である。
【００３７】
クライアント端末１０１１、携帯端末１０１２、アクセス制御装置１０２１、プリントサービス提供装置１０２２、スキャンサービス提供装置１０２３、他サービス提供装置１０２４は、コンピュータシステム１５００のハードウェア構成により、後述するような各種処理を実現できる。また、図２のＳａａＳ系のサービス提供装置、共通サービス系のサービス提供装置、ストレージ系の記憶装置も、コンピュータシステム１５００のハードウェア構成により、後述するような各種処理を実現できる。なお、図１に示した画像形成装置１０１３、ファイヤウォールＦＷのハードウェア構成については説明を省略する。
【００３８】
＜ソフトウェア構成＞
《サービス提供システム》
第１の実施形態に係るサービス提供システムは例えば図４に示す処理ブロックにより実現される。図４は第１の実施形態に係るサービス提供システムの一例の処理ブロック図である。
【００３９】
サービス提供システム１１００はプログラムを実行することにより、アプリケーション１１０１、共通サービス１１０２、データベース（ＤＢ）１１０３及びプラットフォームＡＰＩ（Application Programming Interface）１１０４を実現している。
【００４０】
アプリケーション１１０１は、ポータルサービスアプリ１１１１、スキャンサービスアプリ１１１２、プリントサービスアプリ１１１３を一例として有する。
【００４１】
ポータルサービスアプリ１１１１は、ポータルサービスを提供するアプリケーションである。ポータルサービスは、サービス提供システム１１００を利用するための入り口となるサービスを提供する。スキャンサービスアプリ１１１２はスキャンサービスを提供するアプリケーションである。プリントサービスアプリ１１１３はプリントサービスを提供するアプリケーションである。アプリケーション１１０１には、その他のサービスアプリが含まれていてもよい。
【００４２】
プラットフォームＡＰＩ１１０４はポータルサービスアプリ１１１１、スキャンサービスアプリ１１１２、プリントサービスアプリ１１１３などのアプリケーション１１０１が共通サービス１１０２を利用するためのインタフェースである。プラットフォームＡＰＩ１１０４はアプリケーション１１０１からの要求を共通サービス１１０２が受信するために設けられた予め定義されたインタフェースであり、例えば関数やクラス等により構成される。
【００４３】
プラットフォームＡＰＩ１１０４は、サービス提供システム１１００が複数の情報処理装置で構成される場合、ネットワーク経由で利用可能な例えばＷｅｂ  ＡＰＩにより実現できる。
【００４４】
共通サービス１１０２は、認証・認可部１１２１、組織管理部１１２２、ユーザ管理部１１２３、ライセンス管理部１１２４、機器管理部１１２５、一時画像保存部１１２６、画像処理ワークフロー制御部１１２７、ログ収集部１１２８を有する。
【００４５】
また、画像処理ワークフロー制御部１１２７はメッセージキュー１１３１、１つ以上のワーカー（Ｗｏｒｋｅｒ）１１３２を有する。ワーカー１１３２は画像変換や画像送信などの機能を実現する。
【００４６】
認証・認可部１１２１は、クライアント端末１０１１や画像形成装置１０１３などのオフィス機器からのログイン要求に基づいて認証・認可を実行する。オフィス機器はクライアント端末１０１１、携帯端末１０１２、画像形成装置１０１３などの総称である。
【００４７】
認証・認可部１１２１は、例えば後述するユーザ情報記憶部１１４３、ライセンス情報記憶部１１４４などにアクセスしてユーザを認証・認可する。また、認証・認可部１１２１は例えば後述する組織情報記憶部１１４２、ライセンス情報記憶部１１４４、機器情報記憶部１１４５などにアクセスして画像形成装置１０１３などを認証する。
【００４８】
組織管理部１１２２は後述する組織情報記憶部１１４２に記憶されている組織情報を管理する。ユーザ管理部１１２３は、後述するユーザ情報記憶部１１４３に記憶されているユーザ情報を管理する。
【００４９】
ライセンス管理部１１２４は後述するライセンス情報記憶部１１４４に記憶されているライセンス情報を管理する。機器管理部１１２５は後述する機器情報記憶部１１４５に記憶されている機器情報を管理する。一時画像保存部１１２６は後述する一時画像記憶部１１４６への一時画像の保存、一時画像記憶部１１４６からの一時画像の取得を行う。
【００５０】
画像処理ワークフロー制御部１１２７はアプリケーション１１０１からの要求に基づいて画像処理に関するワークフローを制御する。メッセージキュー１１３１は処理の種類に対応するキューを有する。画像処理ワークフロー制御部１１２７は処理（ジョブ）に係るリクエストのメッセージを、そのジョブの種類に対応するキューに投入する。
【００５１】
ワーカー１１３２は対応するキューを監視している。キューにメッセージが投入されるとワーカー１１３２は、対応するジョブの種類に応じた画像変換や画像送信などの処理を行う。なお、キューに投入されたメッセージはワーカー１１３２が主体的に読み出す（Ｐｕｌｌ）ようにしてもよいし、キューからワーカー１１３２に提供する（Ｐｕｓｈ）ようにしてもよい。画像処理ワークフロー制御部１１２７の処理の詳細は後述する。
【００５２】
データベース１１０３は、ログ情報記憶部１１４１、組織情報記憶部１１４２、ユーザ情報記憶部１１４３、ライセンス情報記憶部１１４４、機器情報記憶部１１４５、一時画像記憶部１１４６、ジョブ情報記憶部１１４７、アプリケーション固有の設定情報記憶部１１４８を有する。
【００５３】
ログ情報記憶部１１４１は、ログ情報を記憶する。組織情報記憶部１１４２は、後述の組織情報を記憶する。ユーザ情報記憶部１１４３は、後述のユーザ情報を記憶する。ライセンス情報記憶部１１４４は、ライセンス情報を記憶する。機器情報記憶部１１４５は後述の機器情報を記憶する。
【００５４】
一時画像記憶部１１４６は一時画像を記憶する。一時画像は、例えばワーカー１１３２が処理するスキャン画像などのファイルやデータである。ジョブ情報記憶部１１４７は処理（ジョブ）に係るリクエストの情報（ジョブ情報）を記憶する。アプリケーション固有の設定情報記憶部１１４８はアプリケーション１１０１に固有の設定情報を記憶する。
【００５５】
サービス提供システム１１００は、認証・認可や画像処理に関するワークフローなどの共通サービスを提供する統合基盤と、統合基盤の機能を利用してスキャンサービス、プリントサービス等のアプリサービスを提供するサービス群と、して機能する。統合基盤は例えば共通サービス１１０２、ＤＢ１１０３及びプラットフォームＡＰＩ１１０４によって構成される。サービス群は例えばアプリケーション１１０１によって構成される。
【００５６】
なお、図４に示したサービス提供システム１１００の処理ブロックの分類形態は一例であり、アプリケーション１１０１、共通サービス１１０２、ＤＢ１１０３が図４に示されるような階層で分類されていることが必須ではない。第１の実施形態に係るサービス提供システム１１００の処理を実施できるのであれば、図４に示される階層関係などは特定のものに限定されない。
【００５７】
図５は組織情報の一例の構成図である。組織情報は、データ項目として組織ＩＤ、組織名、国、言語、アドレス情報などを有する。組織ＩＤは企業、部署などのグループを特定する情報である。組織ＩＤは組織という言語に限定されるものではなく、例えば契約を識別する情報であってもよい。なお、組織ＩＤは一意である。
【００５８】
組織名は企業、部署などのグループの名称である。国は企業、部署などのグループの属する国名を表している。言語は企業、部署などのグループの使用言語を表している。アドレス情報は企業、部署などのグループのメールアドレスを表している。
【００５９】
図６はユーザ情報の一例の構成図である。図６のユーザ情報はデータ項目として組織ＩＤ、ユーザ名、パスワード、アドレス情報などを有する。ユーザ名、パスワードはユーザを特定する情報である。したがって、ユーザ名はユーザＩＤ等であってもよい。また、パスワードは必須でない。また、同じ組織ＩＤで管理されるユーザ名、パスワードは一意であるが、組織ＩＤが異なれば重複していてもよい。アドレス情報は例えばユーザのメールアドレスを表している。
【００６０】
さらに、ユーザ名はユーザが所持する電子媒体（例えばＩＣカード）を識別する情報を用いてもよい。ユーザが所持する電子媒体としてはＩＣカード、携帯電話、タブレット端末、電子書籍端末等を利用できる。電子媒体を識別する情報としては、カードＩＤ、シリアルＩＤ、携帯電話の電話番号、端末のプロフィール情報などを利用できる。電子媒体を識別する情報は組み合わせて利用してもよい。
【００６１】
図７は機器情報の一例の構成図である。図７の機器情報はデータ項目として組織ＩＤ、デバイス認証情報、事業所情報、ケーパビリティなどを有する。デバイス認証情報はオフィス機器が特定の条件を備えたものであることを判別するデバイス認証のための情報である。デバイス認証情報はオフィス機器に特定のアプリケーションが搭載されていることを示すＩＤや、特定のオフィス機器であることを示す機器番号などであってもよい。事業所情報は例えばオフィス機器が設置されている事業所を表している。ケーパビリティは例えばオフィス機器の能力を表している。
【００６２】
＜処理の詳細＞
《ワーカー１１３２の更新》
第１の実施形態に係るサービス提供システム１１００は、稼働中のサービス提供システム１１００において、サービス提供システム１１００に影響を与えずにワーカー１１３２を更新する。第１の実施形態に係るサービス提供システム１１００は、図８に示すようにワーカー１１３２の更新を行う。
【００６３】
図８はワーカーを更新する処理の一例のシーケンス図である。図８に示したＷｏｒｋｅｒサーバ（ワーカーサーバ）１１は、ワーカー１１３２Ａとワーカー１１３２Ｂとが動作している。ワーカーサーバ１１は、例えばＷｉｎｄｏｗｓ（登録商標）サーバやＬｉｎｕｘ（登録商標）サーバにより実現される。
【００６４】
ワーカーサーバ１１は、アクターである開発者からの指示を受け取って処理する。アクターはサーバ保守担当者などであってもよい。図８のワーカー１１３２Ａとワーカー１１３２Ｂとは後述するワーカーフレームワーク１１３３を含んでいる。ワーカー１１３２Ａとワーカー１１３２Ｂとは起動されたプロセスである。ワーカー１１３２Ａはジョブを処理していないワーカーである。ワーカー１１３２ＢはステップＳ１によりジョブ処理の実行を開始したジョブ処理中のワーカーである。
【００６５】
ステップＳ２において、アクターである開発者はワーカー１１３２Ａ及びワーカー１１３２Ｂを停止する指示を行う。停止する指示は例えばワーカーサーバ１１が動作しているコンピュータシステムや、そのコンピュータシステムとデータ通信可能に接続されているクライアント端末１０１１又は携帯端末１０１２等から、コマンドライン等を利用して行うことができる。
【００６６】
ステップＳ３において、開発者からワーカー１１３２Ａ及びワーカー１１３２Ｂを停止する指示を受け取ったワーカーサーバ１１はワーカー１１３２Ａ及びワーカー１１３２Ｂの停止フラグをＯＮにする。停止フラグのＯＮは例えばフォルダなど所定のファイル格納場所に予め決めておいた名称のファイルを作成することで行うことができる。
【００６７】
例えばワーカーサーバ１１はＷｏｒｋｅｒＡ＿ｅｘｉｔ．ｆｉｌｅという名称のファイルを所定のフォルダに作成することで、ワーカー１１３２Ａの停止フラグをＯＮにすることができる。また、ワーカーサーバ１１はＷｏｒｋｅｒＢ＿ｅｘｉｔ．ｆｉｌｅという名称のファイルを所定のフォルダに作成することで、ワーカー１１３２Ｂの停止フラグをＯＮにすることができる。
【００６８】
なお、ワーカー１１３２Ａ及びワーカー１１３２Ｂを停止する内容が判別できる名称のファイルを、所定のファイル格納場所に作成することで、停止フラグをＯＮする方法は一例である。ワーカー１１３２Ａ及びワーカー１１３２Ｂを停止する内容が判別できるのであれば、前述のようなファイルの作成に限定されない。
【００６９】
ステップＳ４において、ワーカーサーバ１１は所定間隔（例えば５分間）毎に、所定のファイル格納場所にＷｏｒｋｅｒＡ＿ｅｘｉｔ．ｆｉｌｅなどのｅｘｉｔ．ｆｉｌｅが存在しないか（全てのｅｘｉｔ．ｆｉｌｅが削除されたか）をチェックする。
【００７０】
ワーカーサーバ１１は所定のファイル格納場所にｅｘｉｔ．ｆｉｌｅが存在すれば停止フラグがＯＮされたと判断する。図８では、ワーカーサーバ１１はワーカー１１３２Ａ及びワーカー１１３２Ｂの停止フラグがＯＮされたと判断する。
【００７１】
ステップＳ５において、ジョブを処理していないワーカー１１３２Ａはワーカーサーバ１１の停止フラグをチェックする。なお、ワーカーサーバ１１の停止フラグをチェックする機能はワーカーフレームワーク１１３３に実装される。
【００７２】
ジョブを処理していないワーカー１１３２Ａは、所定間隔（例えば１分間）毎に停止フラグをチェックする。ワーカー１１３２Ａは停止フラグがＯＮされたと判断し、ステップＳ６において、後述するような停止処理を実行する。なお、ワーカー１１３２を停止する機能はワーカーフレームワーク１１３３に実装される。ワーカー１１３２Ａは停止フラグがＯＦＦであると判断すると、所定間隔を開けて、再び、ワーカーサーバ１１の停止フラグをチェックする。ステップＳ７において、ワーカー１１３２Ａはワーカーサーバ１１の所定のファイル格納場所からＷｏｒｋｅｒＡ＿ｅｘｉｔ．ｆｉｌｅを削除する。ステップＳ７のあと、ワーカー１１３２Ａは停止する。
【００７３】
ステップＳ８において、ジョブ処理中のワーカー１１３２Ｂはジョブ処理が完了したタイミングでワーカーサーバ１１の停止フラグをチェックする。ワーカー１１３２Ｂは停止フラグがＯＮされたと判断し、ステップＳ９において、後述の停止処理を実行する。
【００７４】
ワーカー１１３２Ｂは停止フラグがＯＦＦであると判断すると、ワーカー１１３２Ａと同様、所定間隔を開けて、ワーカーサーバ１１の停止フラグをチェックする。ステップＳ１０において、ワーカー１１３２Ｂはワーカーサーバ１１の所定のファイル格納場所からＷｏｒｋｅｒＢ＿ｅｘｉｔ．ｆｉｌｅを削除する。ステップＳ１０のあと、ワーカー１１３２Ｂは停止する。
【００７５】
所定のファイル格納場所から全てのｅｘｉｔ．ｆｉｌｅが無くなると、ワーカーサーバ１１はステップＳ１１において、更新対象のワーカー１１３２Ａ及びワーカー１１３２Ｂが停止したと判断する。ワーカーサーバ１１はアクターである開発者に、更新対象である全てのワーカー１１３２が停止したことを通知する。アクターである開発者への通知はコマンドラインによる文字列表示やダイアログによる表示などで行えばよい。
【００７６】
ステップＳ１２において、アクターである開発者は更新対象のワーカー１１３２Ａ及びワーカー１１３２Ｂの更新を指示する。ステップＳ１３において、ワーカーサーバ１１はワーカー１１３２Ａ、ワーカー１１３２Ｂ、ワーカーフレームワーク１１３３のプログラムを書き換えることで、更新対象のワーカー１１３２Ａ及びワーカー１１３２Ｂを更新できる。
【００７７】
なお、ステップＳ１３では、ワーカー１１３２及びワーカーフレームワーク１１３３の両方のプログラムを書き換える場合もあるし、何れか一方のプログラムを書き換える場合もある。また、ステップＳ１３では、複数のワーカー１１３２のうちの一部のワーカー１１３２のプログラムを書き換える場合もある。複数のワーカー１１３２のうちの一部のワーカーを更新する場合は、更新対象以外のワーカー１１３２を停止しなくてもよい。
【００７８】
このように、第１の実施形態に係るサービス提供システム１１００は、ジョブ処理中のワーカー１１３２Ａがあってもジョブ完了を待って、ワーカー１１３２Ａを適切に停止させることができる。
【００７９】
したがって、第１の実施形態に係るサービス提供システム１１００は、ワーカー１１３２Ａにおいて処理中のジョブがエラーになることがなく、稼働中のサービス提供システム１１００に影響を与えずに、ワーカー１１３２を更新できる。
【００８０】
なお、図８のシーケンス図では所定のファイル格納場所に作成するファイルにより停止フラグを実現しているが、例えばワーカー１１３２からの問い合わせに応じて停止フラグのＯＮ／ＯＦＦを通知する機能により実現してもよい。
【００８１】
図９はワーカーの停止処理の一例のフローチャートである。図９に示すワーカー１１３２の停止処理の機能はワーカーフレームワーク１１３３に実装される。
【００８２】
ステップＳ２１において、ワーカー１１３２はメッセージキュー１１３１に接続を切ることを報告する。メッセージキュー１１３１はステップＳ２１の処理により、停止されるワーカー１１３２にジョブ処理を依頼しなくなる。なお、ステップＳ２１の処理を行わない場合、メッセージキュー１１３１は停止されたワーカー１１３２にジョブ処理を依頼してしまい、ジョブ処理が行われないことも想定される。
【００８３】
ステップＳ２２において、ワーカー１１３２は、処理に必要なアプリを起動している場合に、起動しているアプリを開放する。ワーカー１１３２により起動されているアプリはステップＳ２２の処理を実行しないと、起動されたまま残ってしまうことがある。
【００８４】
ファイルを開いているアプリが起動されたまま残ってしまうと、同一ファイルをアプリで起動できなかったり、アプリを二重起動できなかったりする障害となる。また、ユーザのファイルが開いたままの状態となり、セキュリティ的に問題がある。
【００８５】
ステップＳ２３において、ワーカー１１３２はファイルを開いている場合に、開いているファイルを閉じる。ワーカー１１３２により開かれているファイルは、ステップＳ２３の処理を実行しないと、開かれたまま残ってしまうことがある。ファイルが開かれたまま残ってしまうと、同一ファイルを開くことができない障害となる。また、ユーザのファイルが開いたままの状態となり、セキュリティ的に問題がある。
【００８６】
ステップＳ２４において、ワーカー１１３２はテンポラリフォルダを空にする。テンポラリフォルダにあるファイルは、ステップＳ２４の処理を実行しないと、いつまでも残る障害となる。また、ステップＳ２４の処理を実行しないと、ファイルをテンポラリフォルダから消せない障害となる。さらに、ユーザのファイルがテンポラリフォルダに残った状態となり、セキュリティ的に問題がある。
【００８７】
図９のフローチャートに示したワーカー１１３２の停止処理によれば、上記したような問題が生じないように適切にワーカー１１３２を停止できる。なお、図９に示した停止処理は一例であって、例えば図９の処理の少なくとも一部を含む処理であってもよい。
【００８８】
《ワーカー１１３２のテストと起動》
第１の実施形態に係るサービス提供システム１１００は、稼働中のサービス提供システム１１００において、サービス提供システム１１００に影響を与えずにワーカー１１３２をテストし、そのワーカー１１３２を起動する。第１の実施形態に係るサービス提供システム１１００は、図１０に示すようにワーカー１１３２のテスト及び起動を行う。
【００８９】
図１０はワーカーをテスト及び起動する処理の一例のシーケンス図である。図１０に示したワーカーサーバ１１は、図８と同様に、例えばＷｉｎｄｏｗｓ（登録商標）サーバやＬｉｎｕｘ（登録商標）サーバにより実現される。ワーカーサーバ１１には後述のテストプログラムが動作している。
【００９０】
なお、ワーカーサーバ１１は本稼動前であるため、テストプログラムを動作させることができる。ここで言う本稼動とは、ワーカーサーバ１１上で動作するワーカー１１３２がユーザ用のキュー（以下、ノーマルキューという）からのメッセージを受け付ける本番起動された状態である。テストプログラムはワーカーサーバ１１以外のテスト用のサーバを用意して、そのテスト用のサーバで動作させてもよい。
【００９１】
ステップＳ３１において、アクターである開発者はワーカーサーバ１１に対し、図８のシーケンス図の処理により更新されたワーカー１１３２Ａ及びワーカー１１３２Ｂをテスト用に起動する指示を行う。なお、テスト用の起動とはワーカーサーバ１１上で動作するワーカー１１３２Ａ及びワーカー１１３２Ｂがノーマルキューからのメッセージを受け付けず、テスト用のキュー（以下、ダミーキューという）からのメッセージを受け付ける状態である。アクターである開発者は、ワーカー１１３２Ａ及びワーカー１１３２Ｂを起動する指示を行うとき、例えば引数により本番起動させるのか、テスト用の起動をさせるのかを指定できる。
【００９２】
ステップＳ３２において、ワーカーサーバ１１はダミーキューを指定してワーカー１１３２Ａを起動する。ステップＳ３３において、ワーカー１１３２Ａはメッセージキュー１１３１にダミーキューへの接続を要求する。メッセージキュー１１３１はダミーキューが無ければ新たに作成する。
【００９３】
メッセージキュー１１３１はワーカー１１３２Ａをダミーキューに接続する。ステップＳ３３の処理後、ワーカー１１３２Ａはダミーキューに投入されたメッセージのジョブ処理をメッセージキュー１１３１から依頼されるようになる。なお、ダミーキューにはテスト用のジョブが登録される。
【００９４】
ステップＳ３４において、ワーカーサーバ１１はダミーキューを指定してワーカー１１３２Ｂを起動する。ステップＳ３５において、ワーカー１１３２Ｂはメッセージキュー１１３１にダミーキューへの接続を要求する。
【００９５】
メッセージキュー１１３１はワーカー１１３２Ｂをダミーキューに接続する。ステップＳ３５の処理後、ワーカー１１３２Ｂはダミーキューに投入されたメッセージのジョブ処理をメッセージキュー１１３１から依頼されるようになる。
【００９６】
ワーカー１１３２Ａ及びワーカー１１３２Ｂが起動した後、アクターである開発者はステップＳ３６において、ワーカーサーバ１１のテストプログラムに対し、ワーカー１１３２Ａ及びワーカー１１３２Ｂをテストする指示を行う。なお、後述のステップＳ４０〜Ｓ４８の処理はテストの数だけ繰り返される。
【００９７】
ステップＳ３９において、ワーカーサーバ１１のテストプログラムは画像処理ワークフロー制御部１１２７に、処理の種類としてテストを表すダミーキューを指定して、ジョブ情報の登録を要求する。なお、テストプログラムから受け付けるジョブ情報は例えば図１１に示すようなものである。
【００９８】
図１１はジョブ情報の一例の構成図である。図１１のジョブ情報は、ジョブの定義に関わる部分１と、タスクの定義に関わる部分２とを含む。ジョブの定義に関わる部分１はジョブＩＤ、ユーザＩＤ、組織ＩＤ、アプリＩＤ、コールバックする先のＵＲＬ、コールバックに必要なクッキー情報などを含む。また、タスクの定義に関わる部分２はタスクＩＤ、親ジョブＩＤ、タイプ（ｔｙｐｅ）、パラメータ（Ｐａｒａｍｓ）などを含む。
【００９９】
ジョブＩＤはジョブを識別する為の情報である。タスクＩＤはタスクを識別する為の情報である。親ジョブＩＤはタスクとジョブとを対応付けるものであり、ジョブの定義に関わる部分１のジョブＩＤと同一となる。なお、画像処理ワークフロー制御部１１２７が受け付けるジョブ情報はジョブＩＤ、タスクＩＤ及び親ジョブＩＤが空である。
【０１００】
タイプ（ｔｙｐｅ）はワーカー１１３２に行わせる処理の種類を表すものであり、処理の種類（機能）に応じて設定される。なお、図１１ではテストを表す「ｄｕｍｍｙ＿ｑｕｅｕｅ」が設定されている。
【０１０１】
パラメータ（Ｐａｒａｍｓ）は、ワーカー１１３２が処理を実行するために必要なパラメータである。図１１ではオンラインストレージ１０３１にファイルを保存する処理を実行するために必要なパラメータとして、フォルダＩＤ、ファイル名、組織ＩＤ、フェデレーションＩＤ、ファイルを設定している。
【０１０２】
フォルダＩＤはファイルを保存するフォルダを表している。ファイル名はファイルを保存するときに利用するファイルの名称を表している。組織ＩＤ及びフェデレーションＩＤはオンラインストレージ１０３１に接続するためのトークンを認証・認可部１１２１から入手するための情報である。ファイルはオンラインストレージ１０３１に保存するファイルの元の所在を示す情報である。例えばファイルには、一時画像記憶部１１４６に保存されているスキャン画像のファイルの保存場所を示すＵＲＩが設定される。
【０１０３】
なお、パラメータ（Ｐａｒａｍｓ）はワーカー１１３２に行わせる処理の種類に応じたパラメータとなる。パラメータ（Ｐａｒａｍｓ）は、ワーカー１１３２に行わせる処理の種類に固有のパラメータである。
【０１０４】
ユーザＩＤは、ジョブの実行を要求したユーザを表す情報である。組織ＩＤは、ジョブの実行を要求した組織を表す情報である。アプリＩＤは、ジョブの実行を要求したアプリケーション１１０１等の要求元を表す情報である。コールバックする先のＵＲＬはコールバックする先を表す情報である。コールバックに必要なクッキー情報は、要求元にコールバックする際に用いられる情報である。
【０１０５】
ステップＳ４０において、画像処理ワークフロー制御部１１２７は登録の要求があったテスト用のジョブのジョブ情報をジョブ情報記憶部１１４７に登録する。ジョブ情報記憶部１１４７は登録したジョブのジョブＩＤ及びタスクＩＤを発行する。ジョブ情報記憶部１１４７は発行したジョブＩＤ及びタスクＩＤを、ジョブ情報のジョブＩＤ、タスクＩＤ及び親ジョブＩＤに追加する。そして、ジョブ情報記憶部１１４７はジョブ情報を登録したテスト用のジョブのジョブＩＤを画像処理ワークフロー制御部１１２７に返す。
【０１０６】
ステップＳ４１において、画像処理ワークフロー制御部１１２７は、ジョブ情報に含まれるタイプ（ｔｙｐｅ）からテスト用のジョブであることを解析する。画像処理ワークフロー制御部１１２７はメッセージキュー１１３１のダミーキューに、テスト用のジョブに係るリクエストのメッセージを投入（キューイング）する。なお、メッセージにはジョブＩＤが含まれる。
【０１０７】
画像処理ワークフロー制御部１１２７はテスト用のジョブのジョブＩＤをジョブ登録結果としてテストプログラムに返す。ステップＳ４２において、ワーカーサーバ１１のテストプログラムはテスト用のジョブが終了するまで待機する。
【０１０８】
ワーカー１１３２Ａのワーカーフレームワーク１１３３はメッセージキュー１１３１のダミーキューを監視している。ワーカー１１３２Ａのワーカーフレームワーク１１３３はステップＳ４３において、ダミーキューに登録されたメッセージを取得する。
【０１０９】
ステップＳ４４において、ワーカーフレームワーク１１３３は取得したメッセージに含まれるジョブＩＤのジョブ情報をジョブ情報記憶部１１４７から取得する。ステップＳ４５において、ワーカーフレームワーク１１３３はジョブ情報に従い、ワーカー１１３２Ａにテスト用のジョブ実行を指示する。ワーカー１１３２Ａはワーカーフレームワーク１１３３からのジョブ実行の指示に従い、ジョブを処理する。
【０１１０】
また、ステップＳ４６において、ワーカー１１３２Ａのワーカーフレームワーク１１３３はテスト用のジョブの完了をジョブ情報記憶部１１４７に通知する。ジョブ情報記憶部１１４７は例えば完了したテスト用のジョブのステータス（状態）情報を更新する。
【０１１１】
ステップＳ４７において、ワーカーフレームワーク１１３３はジョブ情報からジョブの定義に関わる部分１に含まれるコールバックする先として登録されているワーカーサーバ１１のテストプログラムに、ジョブ完了を通知する。なお、ジョブ情報のジョブの定義に関わる部分１に、コールバックに必要なクッキー情報が設定されている場合、ワーカーフレームワーク１１３３はコールバックにクッキー情報を付加できる。
【０１１２】
そしてステップＳ４８において、テストプログラムはワーカー１１３２Ａによるジョブの結果を後述のように評価する。ワーカー１１３２Ｂのテストはワーカー１１３２Ａのテストと同様であるため、説明を省略する。
【０１１３】
ステップＳ４９において、アクターである開発者はワーカー１１３２Ａ及びワーカー１１３２Ｂを停止する指示を行う。ワーカー１１３２Ａ及びワーカー１１３２Ｂを停止する処理は図８のシーケンス図と同様であるため、説明を省略する。
【０１１４】
テスト用のジョブの結果を受け、問題がなければ、アクターである開発者はステップＳ５０において、ワーカーサーバ１１に対し、図８のシーケンス図の処理により更新されたワーカー１１３２Ａ及びワーカー１１３２Ｂを本番起動する指示を行う。ステップＳ５１において、ワーカーサーバ１１はノーマルキューを指定してワーカー１１３２Ａを起動する。ステップＳ５２において、ワーカー１１３２Ａはメッセージキュー１１３１にノーマルキューへの接続を要求する。メッセージキュー１１３１はノーマルキューが無ければ新たに作成する。メッセージキュー１１３１はワーカー１１３２Ａをノーマルキューに接続する。
【０１１５】
ステップＳ５２の処理後、ワーカー１１３２Ａはノーマルキューに投入されたユーザからのジョブをメッセージキュー１１３１から依頼されるようになる。ワーカー１１３２Ａと同様、ワーカー１１３２Ｂもノーマルキューを指定して起動され、ノーマルキューに投入されたユーザからのジョブをメッセージキュー１１３１から依頼されるようになる。
【０１１６】
なお、図１０では図８のシーケンス図の処理により更新されたワーカー１１３２Ａ及びワーカー１１３２Ｂをテストしたあとで起動する例を説明したが、追加されたワーカー１１３２Ａ及びワーカー１１３２Ｂをテストしたあとで起動する場合も同様である。
【０１１７】
ステップＳ４８においてテストプログラムが行う評価は、例えば図１２及び図１３に示すようなジョブ完了の通知を用いて行われる。
【０１１８】
図１２及び図１３は、ジョブ完了の通知の一例の構成図である。図１２及び図１３に示すジョブ完了の通知の元となるジョブ情報は例えば図１４に示すようなものである。
【０１１９】
図１４はジョブ情報の他の例の構成図である。図１４のジョブ情報は、スキャン画像に対してＯＣＲ（Optical Character Reader）を実行し、生成したファイルをオンラインストレージ１０３１に保存する処理の例を表している。図１４は空であるジョブＩＤ、タスクＩＤ及び親ジョブＩＤを省略している。
【０１２０】
図１４のジョブ情報は図１１のジョブ情報と同様、ジョブの定義に関わる部分１と、タスクの定義に関わる部分２とを含む。ジョブの定義に関わる部分１には、図１１のジョブ情報と同様であるが、将来的に任意のパラメータを増やしていけるように、予約要素が追加されている。
【０１２１】
また、タスクの定義に関わる部分２も、図１１のジョブ情報と同様であるが、２つのタスクが定義されている。１つ目のタスクはスキャン画像に対してＯＣＲを実行する処理の例である。２つ目のタスクは生成したファイルをオンラインストレージ１０３１に保存する処理の例である。
【０１２２】
１つ目のタスクの定義に含まれるパラメータ（Ｐａｒａｍｓ）はスキャン画像に対してＯＣＲを実行する処理に固有のパラメータである。スキャン画像に対してＯＣＲを実行する処理に固有のパラメータには、ＯＣＲ後のファイルフォーマットの設定、ＯＣＲを行う言語の設定、ＯＣＲ後のファイルの画像（用紙）サイズの設定などが含まれる。
【０１２３】
２つ目のタスクの定義に含まれるパラメータ（Ｐａｒａｍｓ）は生成したファイルをオンラインストレージ１０３１に保存する処理に固有のパラメータである。生成したファイルをオンラインストレージ１０３１に保存する処理に固有のパラメータには、オンラインストレージ１０３１に保存するファイルの保存場所を示すＵＲＬが設定される。図１４の例ではオンラインストレージ１０３１に保存するファイルの保存場所を示すＵＲＬに＄１を設定することで、１つ目のタスクの結果を使うことを表している。
【０１２４】
また、生成したファイルをオンラインストレージ１０３１に保存する処理に固有のパラメータには、ファイルを保存するフォルダの設定、オンラインストレージ１０３１に接続するためのトークンを認証・認可部１１２１から入手するための設定などが含まれる。
【０１２５】
また、図１２及び図１３に示したジョブ完了の通知には、ジョブの定義に関わる部分１と、タスクの定義に関わる部分２と、タスクの実行結果の定義に関わる部分３と、が含まれる。
【０１２６】
ジョブの定義に関わる部分１は、ジョブＩＤ、アプリＩＤ、組織ＩＤ、ユーザＩＤ、ステータス、エラー情報、ジョブの作成日時、ジョブの更新日時、コールバックする先のＵＲＬ、コールバックに必要なクッキー情報、予約要素などを含む。ステータスはジョブのステータスであり、受理、処理中、完了、エラーなどが設定される。エラー情報はステータスがエラーの場合に、何のエラーかを示す情報が設定される。
【０１２７】
タスクの定義に関わる部分２は図１４のタスクの定義に関わる部分２に、タスクＩＤ及び親ジョブＩＤが追加されたものである。タスクの実行結果の定義に関わる部分３はタスクの定義に関わる部分２に定義された２つのタスクを実行した結果が列挙されている。
【０１２８】
１つ目のタスクの実行結果の定義には図１２のタスクの定義に関わる部分２に設定されている１つ目のタスクの定義の他、エラー情報、処理結果の詳細、タスクの処理開始日時及び完了日時が設定されている。
【０１２９】
処理結果の詳細としては、例えばスキャン画像に対してＯＣＲを実行する処理に固有の処理結果として、処理後のファイルの所在を示すＵＲＬ、処理後のファイルのサイズなどが設定される。また、処理結果の詳細としては各機能で共通に提供される情報として、タスク全体（ワーカーフレームワーク１１３３及びワーカー１１３２）で掛かった時間、エンジン（ワーカー１１３２）で掛かった時間などが設定される。
【０１３０】
２つ目のタスクの実行結果の定義には図１２のタスクの定義に関わる部分２に設定されている２つ目のタスクの定義の他、エラー情報、処理結果の詳細、タスクの処理開始日時及び完了日時が設定されている。処理結果の詳細としては、例えば生成したファイルをオンラインストレージ１０３１に保存する処理に固有の処理結果として、保存されたファイルの名前、オンラインストレージ１０３１が発行したファイルＩＤ、保存したファイルの所在を示すＵＲＬなどが設定される。また、処理結果の詳細としては各機能で共通に提供される情報として、１つ目のタスクと同様に、タスク全体で掛かった時間、エンジンで掛かった時間などが設定される。
【０１３１】
ステップＳ４８において、テストプログラムは図１２及び図１３のジョブ完了の通知と図１５に示すような機能、入力値及び期待値の対応表とを用いて、ワーカー１１３２によるジョブ結果の評価を行う。図１５はワーカーによるジョブ結果の評価に利用する対応表の一例について説明するための図である。
【０１３２】
図１５の対応表は、ワーカー１１３２の機能と、その機能をワーカー１１３２に行わせるための入力値と、ジョブ完了の通知に含まれる処理結果の期待値と、が対応付けられている。テストプログラムは、ジョブ完了の通知のタイプ（ｔｙｐｅ）に設定されている機能と、パラメータ（Ｐａｒａｍｓ）に設定されている入力値と、に基づき、図１５の対応表から処理結果の期待値を読み出す。
【０１３３】
そして、テストプログラムはジョブ完了の通知に含まれる処理結果と、図１５の対応表から読み出した期待値とを比較することで、ワーカー１１３２によるジョブ結果の評価を行う。例えばジョブ完了の通知に含まれる処理結果と、図１５の対応表から読み出した期待値とが一致していれば、テストプログラムはワーカー１１３２によるジョブ結果が正常であると判断する。
【０１３４】
《ワーカー１１３２の更新、テスト及び起動の自動化》
図１６はワーカーの更新、テスト及び起動時における開発者の操作手順を表した一例のフローチャートである。
【０１３５】
ステップＳ６１において、開発者はワーカーサーバ１１にワーカー１１３２を停止する指示を行う。ワーカー１１３２が停止すると、開発者はワーカーサーバ１１にワーカー１１３２の更新を指示する。ステップＳ６３において、開発者はワーカーサーバ１１に更新したワーカー１１３２をテスト用に起動する指示を行う。ワーカー１１３２がテスト用に起動された後、ステップＳ６４において、開発者はワーカーサーバ１１のテストプログラムに対し、テスト用に起動したワーカー１１３２をテストする指示を行う。
【０１３６】
ステップＳ６５において、開発者はテスト用のジョブの結果を判断し、異常があればステップＳ６６において問題を修正して、ステップＳ６１の処理に戻る。テスト用のジョブの結果が正常であれば、開発者はステップＳ６７において、ワーカーサーバ１１に対してテスト用に起動したワーカー１１３２を停止する指示を行う。そして、ステップＳ６８において、開発者はテスト用のジョブの結果により問題がないことが確認できたワーカー１１３２を本番起動する指示を行う。
【０１３７】
例えば図１６に示した開発者がワーカー１１３２の更新、テスト及び起動する操作手順はワーカーサーバ１１のテストプログラムがバッチ処理することで自動化することが可能となる。テストプログラムがバッチ処理する場合は、例えばステップＳ６６における問題の修正として、更新前のワーカー１１３２に戻すことが考えられる。また、テストプログラムがバッチ処理する場合は、ステップＳ６６における問題の修正に代えて、開発者に異常を通知して、図１６の処理を終了するようにしてもよい。
【０１３８】
《非同期処理》
図４に示すサービス提供システム１１００による非同期処理の流れについて詳細に説明する。図１７は、サービス提供システムによる非同期処理の一例について説明する図である。
【０１３９】
図１７は、図４に示したサービス提供システム１１００の処理ブロックのうち、アプリケーション１１０１と、一時画像保存部１１２６と、画像処理ワークフロー制御部１１２７と、メッセージキュー１１３１と、ワーカー１１３２と、を示している。
【０１４０】
アプリケーション１１０１は、画像形成装置１０１３からアップロードされたスキャン画像のファイル保存を一時画像保存部１１２６に要求する。一時画像保存部１１２６は一時画像記憶部１１４６にスキャン画像のファイルを保存し、ファイルの保存場所を示すＵＲＩをスキャンサービスアプリ１１１２に返す。アプリケーション１１０１は、画像処理ワークフロー制御部１１２７にジョブ情報の登録を要求する。画像処理ワークフロー制御部１１２７はジョブ情報をジョブ情報記憶部１１４７に登録する。ジョブ情報記憶部１１４７はジョブ情報を登録したジョブのジョブＩＤを発行し、画像処理ワークフロー制御部１１２７に返す。
【０１４１】
画像処理ワークフロー制御部１１２７は、ジョブ情報に含まれるタイプ（ｔｙｐｅ）から処理の種類（機能）を解析する。画像処理ワークフロー制御部１１２７は処理の種類に合致するメッセージキュー１１３１のキューに、ジョブに係るリクエストのメッセージを投入（キューイング）する。画像処理ワークフロー制御部１１２７は、必要な処理の種類を解析し、非同期処理を実行させる制御を行う。
【０１４２】
メッセージキュー１１３１は複数の処理の種類に対応するキューを有している。図１７ではワーカー１１３２と、そのワーカー１１３２が担当するキューとを線で結んで表現している。図１７に示すように、ワーカー１１３２は１又は複数のキューを担当することができる。また、図１７に示すように、キューは１又は複数のワーカー１１３２に担当されることができる。
【０１４３】
例えば図１７では、１つのワーカー１１３２が担当する処理の種類として「ｄｏｃ２ＸＸＸ」「ｐｄｆ２ＸＸＸ」「ＸＸＸ２ｐｄｆ」「ｓｔｏｒａｇｅ２ＸＸＸ」「ｏｃｒ」「ｐｄｆ２ＸＸＸ、ｏｃｒ」を表している。処理の種類「ｐｄｆ２ＸＸＸ、ｏｃｒ」を担当するワーカー１１３２は複数の処理の種類を担当するワーカー１１３２の例である。
【０１４４】
メッセージキュー１１３１のキューを監視しているワーカーフレームワーク１１３３はキューに投入されたジョブに係るリクエストのメッセージを検知する。ワーカーフレームワーク１１３３はキューに登録されたメッセージを取得する。ワーカーフレームワーク１１３３は図１７において図示を省略している。
【０１４５】
ワーカーフレームワーク１１３３は取得したメッセージに含まれるジョブＩＤのジョブ情報をジョブ情報記憶部１１４７から取得する。ワーカーフレームワーク１１３３は取得したジョブ情報から、一時画像記憶部１１４６に保存されているスキャン画像のファイルの保存場所を示すＵＲＩを読み出す。
【０１４６】
そして、ワーカーフレームワーク１１３３は一時画像記憶部１１４６に保存されているスキャン画像のファイルの保存場所を示すＵＲＩを指定して、一時画像記憶部１１４６からスキャン画像のファイルを取得する。
【０１４７】
ワーカーフレームワーク１１３３は取得したジョブ情報から処理の種類を解析し、処理の種類に合致するワーカー１１３２にジョブ実行を指示する。指示されたジョブを実行したワーカー１１３２はワーカーフレームワーク１１３３にジョブの実行結果を返す。
【０１４８】
ワーカーフレームワーク１１３３は、ジョブの完了をジョブ情報記憶部１１４７に通知して、完了したジョブのステータス（状態）情報を更新させる。また、ワーカーフレームワーク１１３３はジョブ情報からコールバックする先のＵＲＬを読み出し、コールバックする先のＵＲＬに、ジョブ完了を通知する。
【０１４９】
メッセージキュー１１３１のキューと、ワーカー１１３２と、ワーカーフレームワーク１１３３との関係は、例えば図１８のように表すことができる。
【０１５０】
図１８はキューとワーカーとワーカーフレームワークとの関係について説明するための図である。メッセージキュー１１３１は、複数のキューを有する。キューは「ｄｏｃ２ＸＸＸ」などの処理の種類（機能）ごとに分離されている。メッセージキュー１１３１は例えば１つのサーバ１０上で動作する。
【０１５１】
また、ワーカー１１３２及びワーカーフレームワーク１１３３はワーカーサーバ１１Ａ及び１１Ｂ上で動作する。ワーカーサーバ１１Ａ及び１１Ｂは例えばＷｉｎｄｏｗｓ（登録商標）サーバやＬｉｎｕｘ（登録商標）サーバにより実現される。
【０１５２】
例えばワーカーサーバ１１Ａ及び１１ＢはＷｉｎｄｏｗｓ（登録商標）サーバである場合に、２つのワーカー１１３２を動作させる。また、ワーカーサーバ１１Ａ及び１１ＢはＬｉｎｕｘ（登録商標）サーバである場合に、３つのワーカー１１３２を動作させる。図１８に示すようにワーカーサーバ１１Ａ及び１１Ｂには、ワーカーフレームワーク１１３３と複数のワーカー１１３２とが配置される。
【０１５３】
図１８に示すように、ワーカーフレームワーク１１３３は１つの接続で複数のキューをポーリングすることができる。ただし、１つの接続でポーリングすることができる複数のキューの範囲は例えば同一のＯＳサーバ上で動作するワーカー１１３２の範囲とする。
【０１５４】
メッセージキュー１１３１のキューと、ワーカー１１３２と、ワーカーフレームワーク１１３３とが図１８に示すような関係を有することによりサービス提供システム１１００は非同期処理を実現できる。なお、上記したワーカー１１３２の更新、テスト及び起動時におけるメッセージキュー１１３１のキューと、ワーカー１１３２と、ワーカーフレームワーク１１３３との関係は、例えば図１９のように表すことができる。
【０１５５】
図１９は、ワーカーの更新、テスト及び起動時におけるキューとワーカーとワーカーフレームワークとの関係について説明するための図である。メッセージキュー１１３１は図１８のメッセージキュー１１３１にダミーキューが追加された構成である。
【０１５６】
また、ワーカーサーバ１１Ａ及び１１Ｂは図１８のワーカーサーバ１１Ａ及び１１Ｂにテストプログラムが追加された構成である。図１９のワーカーサーバ１１Ａ及び１１Ｂはワーカー１１３２をテスト用に起動している。したがって、図１９ではワーカー１１３２がダミーキューを担当することを、ワーカーフレームワーク１１３３とダミーキューとを線で結んで表現している。
【０１５７】
メッセージキュー１１３１のダミーキューと、ワーカー１１３２と、ワーカーフレームワーク１１３３と、テストプログラム１１３４とが図１９に示すような関係を有することにより、サービス提供システム１１００は図８及び図１０に示したようなシーケンス図の処理が実現できる。
【０１５８】
（まとめ）
第１の実施形態に係るサービス提供システム１１００によれば、稼働中のサービス提供システム１１００において、サービス提供システム１１００に影響を与えずにワーカー１１３２の更新又は追加、テスト及び起動が可能となる。
【０１５９】
また、第１の実施形態に係るサービス提供システム１１００によれば、ダミーキューを動的に追加できる仕組みと、ワーカー１１３２が担当するキューを動的に変更できる仕組みとを実現できる。
【０１６０】
第１の実施形態に係るサービス提供システム１１００では、ダミーキューを利用することにより、稼働中のサービス提供システム１１００でワーカー１１３２の動作を確認することができる。そして、第１の実施形態に係るサービス提供システム１１００では動作を確認した後のワーカー１１３２を本番起動できる。
【０１６１】
つまり、第１の実施形態に係るサービス提供システム１１００では、冗長構成の複数のワーカー１１３２から、更新対象のワーカー１１３２を一つずつ停止して切り離し、更新後のワーカー１１３２の動作を確認した後で、冗長構成に戻すことも可能である。
【０１６２】
さらに、第１の実施形態に係るサービス提供システム１１００ではワーカー１１３２のジョブ完了を待って、更新対象のワーカー１１３２を適切に停止させることができる。
【０１６３】
本発明は、具体的に開示された上記の実施形態に限定されるものではなく、特許請求の範囲から逸脱することなく、種々の変形や変更が可能である。なお、特許請求の範囲に記載した第１保持手段は、メッセージキュー１１３１に相当する。実行手段はワーカー１１３２に相当する。実行制御手段はワーカーフレームワーク１１３３に相当する。第２保持手段は停止フラグを実現する所定のフォルダに相当する。
【０１６４】
実行要求情報は、ジョブ情報に相当する。起動手段はワーカーサーバ１１のステップＳ３２の処理に相当する。登録手段は、ワーカーサーバ１１のステップＳ３９の処理に相当する。評価手段は、ワーカーサーバ１１のステップＳ４８の処理に相当する。
【符号の説明】
【０１６５】
１０    サーバ
１１Ａ、１１Ｂ    ワーカーサーバ
１０００    情報処理システム
１０１１    クライアント端末
１０１２    携帯端末
１０１３    画像形成装置
１０２１    アクセス制御装置
１０２２    プリントサービス提供装置
１０２３    スキャンサービス提供装置
１０２４    他サービス提供装置
１０３１    オンラインストレージ
１０５１    ポータルサービス提供装置
１０５２    プリントサービス提供装置
１０５３    スキャンサービス提供装置
１０６１    認証サービス提供装置
１０６２    データ処理サービス提供装置
１０６３    一時データ保存サービス提供装置
１０７１    認証情報記憶装置
１０７２    ジョブ情報記憶装置
１０７３    一時データ記憶装置
１１００    サービス提供システム
１１０１    アプリケーション
１１０２    共通サービス
１１０３    データベース
１１０４    プラットフォームＡＰＩ（Application Programming Interface）
１１１１    ポータルサービスアプリ
１１１２    スキャンサービスアプリ
１１１３    プリントサービスアプリ
１１２１    認証・認可部
１１２２    組織管理部
１１２３    ユーザ管理部
１１２４    ライセンス管理部
１１２５    機器管理部
１１２６    一時画像保存部
１１２７    画像処理ワークフロー制御部
１１２８    ログ収集部
１１３１    メッセージキュー
１１３２    ワーカー
１１３３    ワーカーフレームワーク
１１４１    ログ情報記憶部
１１４２    組織情報記憶部
１１４３    ユーザ情報記憶部
１１４４    ライセンス情報記憶部
１１４５    機器情報記憶部
１１４６    一時画像記憶部
１１４７    ジョブ情報記憶部
１１４８    アプリケーション固有の設定情報記憶部
１５００    コンピュータシステム
１５０１    入力装置
１５０２    表示装置
１５０３    外部Ｉ／Ｆ
１５０３ａ    記録媒体
１５０４    ＲＡＭ
１５０５    ＲＯＭ
１５０６    ＣＰＵ
１５０７    通信Ｉ／Ｆ
１５０８    ＨＤＤ
Ｂ    バス
ＦＷ    ファイヤウォール
Ｎ１〜Ｎ３    ネットワーク
【先行技術文献】
【特許文献】
【０１６６】
【特許文献１】特開２０１２−２２６７００号公報
【図１】
2014153804.tif 000003
【図２】
2014153804.tif 000004
【図３】
2014153804.tif 000005
【図４】
2014153804.tif 000006
【図５】
2014153804.tif 000007
【図６】
2014153804.tif 000008
【図７】
2014153804.tif 000009
【図８】
2014153804.tif 000010
【図９】
2014153804.tif 000011
【図１０】
2014153804.tif 000012
【図１１】
2014153804.tif 000013
【図１２】
2014153804.tif 000014
【図１３】
2014153804.tif 000015
【図１４】
2014153804.tif 000016
【図１５】
2014153804.tif 000017
【図１６】
2014153804.tif 000018
【図１７】
2014153804.tif 000019
【図１８】
2014153804.tif 000020
【図１９】
2014153804.tif 000021