(57)【要約】【課題】情報処理システム全体の動作を停止させることなく動作中のソフトウェアを更新することができる連携処理装置、プログラム及びソフトウェア更新方法を提供することを課題とする。【解決手段】連携機器と接続され、連携機器からの処理要求を受け付けて処理を実行する連携処理装置であって、処理要求に対応した処理を実施するソフトウェアと、ソフトウェアの管理を行うソフトウェア管理手段と、連携機器からの処理要求をソフトウェアに送信して処理を実施させる処理要求送信手段とを有し、ソフトウェア管理手段はソフトウェアが更新中の間、連携機器からの処理要求を処理要求送信手段に保管させ、更新前のソフトウェアの動作内容を保持したデータを取得した上で、更新後のソフトウェアを起動して、更新後のソフトウェアに更新前のソフトウェアの動作内容を復元させ、ソフトウェアの更新を完了させることにより上記課題を解決する。【選択図】  図１
2014178893.tif 000002
【特許請求の範囲】
【請求項１】
連携機器と接続され、前記連携機器からの処理要求を受け付けて処理を実行する連携処理装置であって、
前記処理要求に対応した処理を実施するソフトウェアと、
前記ソフトウェアの管理を行うソフトウェア管理手段と、
前記連携機器からの処理要求を前記ソフトウェアに送信して処理を実施させる処理要求送信手段と
を有し、
前記ソフトウェア管理手段は、前記ソフトウェアが更新中の間、前記連携機器からの処理要求を前記処理要求送信手段に保管させ、更新前の前記ソフトウェアの動作内容を保持したデータを取得した上で、更新後の前記ソフトウェアを起動して、更新後の前記ソフトウェアに更新前の前記ソフトウェアの動作内容を復元させ、前記ソフトウェアの更新を完了させること
を特徴とする連携処理装置。
【請求項２】
前記処理要求送信手段は、前記ソフトウェアの更新中の間に保管した前記連携機器からの処理要求を、前記ソフトウェアの更新が完了した後で、順次、前記ソフトウェアに送信して処理を実施させること
を特徴とする請求項１記載の連携処理装置。
【請求項３】
更新前の前記ソフトウェアは前記ソフトウェア管理手段から更新通知を受け付けると処理を一時停止し、更新前の前記ソフトウェアの動作内容を保持したデータを生成して前記ソフトウェア管理手段に送信すること
を特徴とする請求項１又は２記載の連携処理装置。
【請求項４】
更新後の前記ソフトウェアは、更新前の前記ソフトウェアの動作内容を保持したデータを前記ソフトウェア管理手段から受信し、更新前の前記ソフトウェアの動作内容を復元すること
を特徴とする請求項３記載の連携処理装置。
【請求項５】
ソフトウェア保存装置から更新後の前記ソフトウェアを取得し、前記ソフトウェア管理手段に、更新前の前記ソフトウェアから更新後の前記ソフトウェアへの更新を要求する更新処理手段を更に有すること
を特徴とする請求項１乃至４何れか一項記載の連携処理装置。
【請求項６】
連携機器と接続され、前記連携機器からの処理要求を受け付けて処理を実行する連携処理装置を、
前記処理要求に対応した処理を実施するソフトウェア、
前記ソフトウェアの管理を行うソフトウェア管理手段、
前記連携機器からの処理要求を前記ソフトウェアに送信して処理を実施させる処理要求送信手段
として機能させ、
前記ソフトウェア管理手段は、前記ソフトウェアが更新中の間、前記連携機器からの処理要求を前記処理要求送信手段に保管させ、更新前の前記ソフトウェアの動作内容を保持したデータを取得した上で、更新後の前記ソフトウェアを起動して、更新後の前記ソフトウェアに更新前の前記ソフトウェアの動作内容を復元させ、前記ソフトウェアの更新を完了させること
を特徴とするプログラム。
【請求項７】
連携機器と接続され、前記連携機器からの処理要求を受け付けて処理を実行する連携処理装置におけるソフトウェア更新方法であって、
前記連携処理装置は、
前記処理要求に対応した処理を実施するソフトウェアと、
前記ソフトウェアの管理を行うソフトウェア管理手段と、
前記連携機器からの処理要求を前記ソフトウェアに送信して処理を実施させる処理要求送信手段と
を有し、
前記ソフトウェア管理手段が、前記ソフトウェアが更新中の間、前記連携機器からの処理要求を前記処理要求送信手段に保管させるステップと、
更新前の前記ソフトウェアの動作内容を保持したデータを取得した上で、更新後の前記ソフトウェアを起動するステップと、
更新後の前記ソフトウェアに更新前の前記ソフトウェアの動作内容を復元させ、前記ソフトウェアの更新を完了させるステップと
を有することを特徴とするソフトウェア更新方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、連携処理装置、プログラム及びソフトウェア更新方法に関する。
【背景技術】
【０００２】
従来、複数の情報処理装置へのソフトウェア更新作業を、動作確認作業を含めて自動化してシステム管理者の負荷を軽減させるソフトウェア更新プログラムがある（例えば特許文献１参照）。
【０００３】
従来のソフトウェア更新プログラムは、ソフトウェアを更新するための修正ファイルとともに該修正ファイルの適用後のソフトウェアの動作確認をおこなうテストプログラムを配布するファイル配布手順と、前記ファイル配布手順がファイルを配布した情報処理装置において前記修正ファイルの適用が完了した後に、前記テストプログラムの実行を指示するテストプログラム実行指示手順と、前記実行指示手順が実行を指示した前記テストプログラムの実行が完了した後に、該テストプログラムの実行結果を取得するテストプログラム実行結果取得手順と、前記テストプログラム実行結果取得手順が取得した前記実行結果の通知をおこなう結果通知手順と、をコンピュータに実行させていた。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
近年、ユーザは電子データを出力するプリンタ、複合機、プロジェクタなどの様々な電子機器や、携帯電話、スマートフォン、タブレット端末などの様々な端末装置を利用するようになっている。これら電子機器や端末装置を利用する形態（システム）では、様々な電子機器や端末装置を連携させることにより利用価値の向上が期待される。
【０００５】
これら電子機器や端末装置を連携させる処理は、連携処理装置に搭載されているアプリケーションによって行われる場合がある。しかしながら、連携処理装置に搭載されているアプリケーションを更新する場合は電子機器や端末装置を含む情報処理システム全体の動作を停止させなければならなかった。
【０００６】
本発明の一実施形態は上記の点に鑑みなされたもので、情報処理システム全体の動作を停止させることなく動作中のソフトウェアを更新できる連携処理装置、プログラム及びソフトウェア更新方法を提供することを目的とする。
【課題を解決するための手段】
【０００７】
上記目的を達成するため、本願請求項１は、連携機器と接続され、前記連携機器からの処理要求を受け付けて処理を実行する連携処理装置であって、前記処理要求に対応した処理を実施するソフトウェアと、前記ソフトウェアの管理を行うソフトウェア管理手段と、前記連携機器からの処理要求を前記ソフトウェアに送信して処理を実施させる処理要求送信手段とを有し、前記ソフトウェア管理手段は、前記ソフトウェアが更新中の間、前記連携機器からの処理要求を前記処理要求送信手段に保管させ、更新前の前記ソフトウェアの動作内容を保持したデータを取得した上で、更新後の前記ソフトウェアを起動して、更新後の前記ソフトウェアに更新前の前記ソフトウェアの動作内容を復元させ、前記ソフトウェアの更新を完了させることを特徴とする。
【発明の効果】
【０００８】
本発明の一実施形態によれば、情報処理システム全体の動作を停止させることなく動作中のソフトウェアを更新できる。
【図面の簡単な説明】
【０００９】
【図１】本実施形態に係る情報処理システムの一例の構成図である。
【図２】本実施形態に係るコンピュータシステムの一例のハードウェア構成図である。
【図３】本実施形態に係る連携処理装置の一例の処理ブロック図である。
【図４】連携処理装置の起動時の処理を表した一例のフローチャートである。
【図５】連携処理装置の通常運用時の処理を表した一例のフローチャートである。
【図６】連携処理装置のプログラム更新時の処理を表した一例のフローチャートである。
【図７】アプリ管理テーブルの一例の構成図である。
【図８】シリアライズされるデータ構造の一例の説明図である。
【図９】連携処理装置の通常運用時の処理を表した一例のシーケンス図である。
【図１０】連携処理装置のプログラム更新時の処理を表した一例のシーケンス図（１／２）である。
【図１１】連携処理装置のプログラム更新時の処理を表した一例のシーケンス図（２／２）である。
【発明を実施するための形態】
【００１０】
次に、本発明の実施の形態について、詳細に説明する。
［第１の実施形態］
＜システム構成＞
図１は本実施形態に係る情報処理システムの一例の構成図である。図１の情報処理システム１は、連携処理装置１０がＬＡＮ（Local Area Network）やインターネットなどのネットワークＮ１に接続されている。
【００１１】
また、情報処理システム１は一台以上のＰＣ１１、一台以上の携帯端末１２、一台以上の複合機（ＭＦＰ）１３、一台以上のプロジェクタ１４がネットワークＮ１に接続されている。さらに、情報処理システム１はプログラム保存装置１５がネットワークＮ１に接続されている。
【００１２】
ＰＣ１１、携帯端末１２はユーザが操作する端末装置１６の一例である。ＰＣ１１はデスクトップＰＣ、ノードＰＣなど、ユーザが操作できる装置であればよい。携帯端末１２はスマートフォン、タブレット端末の他、携帯電話など、ユーザが携帯して操作できる装置であればよい。
【００１３】
複合機１３及びプロジェクタ１４は電子データの入出力（印刷、撮像、投影など）を行う電子機器１７の一例である。例えば電子機器１７は、複合機１３及びプロジェクタ１４の他、プリンタ、複写機、画像表示装置など、電子データの入出力を行うことのできる装置であればよい。
【００１４】
連携処理装置１０は例えば汎用ＯＳを採用しており、ネットワークＮ１を介して様々な端末装置１６や電子機器１７を接続できる。連携処理装置１０は内部にアプリケーションが搭載されている。連携処理装置１０は端末装置１６や電子機器１７からファイル共有などを実現するＳＭＢ（Server Message Block）やＨＴＴＰリクエストなどの汎用プロトコルにより要求を受け付けることができる。連携処理装置１０は受け付けた要求をアプリケーションにより処理し、ネットワークＮ１を介して結果を返す。
【００１５】
複合機１３は画像形成装置の一例である。複合機１３は内部に搭載するブラウザソフトを介して連携処理装置１０にアクセスする。ブラウザソフトはＨＴＴＰリクエストなどの汎用プロトコルを用いて連携処理装置１０に要求を出力する。また、複合機１３はファイルシステムをサポートしている。
【００１６】
複合機１３は連携処理装置１０に対してＳＭＢでアクセスすることができれば、複合機１３内に保存したファイルを連携処理装置１０のネットワーク共有フォルダにコピーすることで、連携処理装置１０に対するワークフロー処理の要求を出すことができる。
【００１７】
プロジェクタ１４は画像投影装置の一例である。プロジェクタ１４は、ネットワークＮ１経由で端末装置１６や他の電子機器１７から要求のあった画像を投影することが可能である。プロジェクタ１４は連携処理装置１０、端末装置１６、電子機器１７に保存されている画像を選択して投影することも可能である。
【００１８】
端末装置１６はブラウザ機能を有する。端末装置１６は連携処理装置１０に対してブラウザ経由でＳＭＢやＨＴＴＰなどの汎用プロトコルを用いて要求を出力する。また、端末装置１６はファイルシステムをサポートしている。端末装置１６は連携処理装置１０に対してＳＭＢでアクセスすることができれば、端末装置１６内に保存したファイルを連携処理装置１０のネットワーク共有フォルダにコピーすることで、連携処理装置１０に対するワークフロー処理の要求を出すことができる。
【００１９】
プログラム保存装置１５は連携処理装置１０内のプログラムの更新情報（更新プログラム情報）と、更新プログラムとを格納している。連携処理装置１０は例えば所定期間ごとにプログラム保存装置１５にアクセスし、更新プログラムの存在有無を確認する。連携処理装置１０は、必要に応じてプログラム保存装置１５から更新プログラムをダウンロードする。
【００２０】
連携処理装置１０は複合機１３やプロジェクタ１４で処理できないような高機能処理の実行や、ファイルサーバとしての処理の実行を行うことができる。連携処理装置１０は端末装置１６と電子機器１７とを連携させることにより利用価値の向上を図れる。連携処理装置１０は複数のコンピュータに分散して構成するようにしてもよい。
【００２１】
＜ハードウェア構成＞
連携処理装置１０は例えば図２に示すハードウェア構成のコンピュータシステムにより実現される。なお、端末装置１６も図２に示すハードウェア構成を含む構成である。図２は本実施形態に係るコンピュータシステムの一例のハードウェア構成図である。
【００２２】
図２のコンピュータシステム１００は、入力装置１０１、表示装置１０２、外部Ｉ／Ｆ１０３、ＲＡＭ１０４、ＲＯＭ１０５、ＣＰＵ１０６、通信Ｉ／Ｆ１０７及びＨＤＤ１０８などを備え、それぞれがバスＢで相互に接続されている。入力装置１０１はキーボードやマウス、タッチパネルなどを含み、コンピュータシステム１００に各操作信号を入力するために用いられる。
【００２３】
表示装置１０２はディスプレイなどを含み、コンピュータシステム１００による処理結果を表示する。通信Ｉ／Ｆ１０７はコンピュータシステム１００をネットワークＮ１に接続するインターフェースである。これにより、コンピュータシステム１００は通信Ｉ／Ｆ１０７を介して、プログラム保存装置１５、端末装置１６、電子機器１７等とデータ通信を行うことができる。
【００２４】
ＨＤＤ１０８は、プログラムやデータを格納している不揮発性の記憶装置である。格納されるプログラムやデータには、コンピュータシステム１００全体を制御する基本ソフトウェアであるＯＳ（Operating System）、及び、ＯＳ上において各種機能を提供するアプリケーションソフトウェアなどがある。また、ＨＤＤ１０８は、格納しているプログラムやデータを、所定のファイルシステム及び／又はＤＢ（Data Base）により管理している。
【００２５】
外部Ｉ／Ｆ１０３は、外部装置とのインターフェースである。外部装置には、記録媒体１０３ａなどがある。これにより、コンピュータシステム１００は外部Ｉ／Ｆ１０３を介して、記録媒体１０３ａの読み取り及び／又は書き込みを行うことができる。なお、記録媒体１０３ａにはフレキシブルディスク、ＣＤ、ＤＶＤ（Digital Versatile Disk）、ＳＤメモリカード（SD Memory card）、ＵＳＢメモリ（Universal Serial Bus memory）等がある。
【００２６】
ＲＯＭ１０５は、電源を切ってもプログラムやデータを保持することができる不揮発性の半導体メモリ（記憶装置）である。ＲＯＭ１０５には、コンピュータシステム１００の起動時に実行されるＢＩＯＳ（Basic Input/Output System）、ＯＳ設定、及びネットワーク設定などのプログラムやデータが格納されている。ＲＡＭ１０４は、プログラムやデータを一時保持する揮発性の半導体メモリ（記憶装置）である。
【００２７】
ＣＰＵ１０６は、ＲＯＭ１０５やＨＤＤ１０８などの記憶装置からプログラムやデータをＲＡＭ１０４上に読み出し、処理を実行することで、コンピュータシステム１００全体の制御や機能を実現する演算装置である。
【００２８】
本実施形態に係るコンピュータシステム１００は、上記ハードウェア構成により、後述するような各種処理を実現できる。
【００２９】
＜ソフトウェア構成＞
《連携処理装置》
本実施形態に係る連携処理装置１０は例えば図３に示すように構成される。図３は本実施形態に係る連携処理装置の一例の処理ブロック図である。連携処理装置１０はプログラムを実行することで、共通フレームワーク２０、ＷｅｂＡＰＩ処理部２１、ＷＥＢ制御部２２、認証処理部２３、画像処理部２４、設定情報管理部２５、データ管理部２６、アプリ管理部２７、アップデート処理部２８、メッセージ処理部２９、データ保存部３０、プログラム保存部３１、メッセージ保存部３２を実現している。
【００３０】
共通フレームワーク２０は連携処理装置１０内の複数あるソフトウェアが通信するための仕組みであり、要求やデータの送受信に用いられる。ＷｅｂＡＰＩ処理部２１はネットワークＮ１に接続された端末装置１６や電子機器１７からＷｅｂＡＰＩを介したアクセスを制御する。ＷｅｂＡＰＩ（Application Programming Interface）は、端末装置１６や電子機器１７からの要求を受信するために設けられた予め定義されたインターフェースであり、例えば関数やクラス等により構成される。ＷｅｂＡＰＩ処理部２１は受信した要求をＷＥＢ制御部２２に通知する。ＷＥＢ制御部２２はＷｅｂＡＰＩ処理部２１から通知された要求を共通フレームワーク２０で解釈できるメッセージに変換し、各種処理部へ送信する。
【００３１】
認証処理部２３はユーザ情報の認証を行う。例えば認証処理部２３はデータ保存部３０に保存されているアカウント情報にアクセスしてユーザ情報の認証を行う。または、認証処理部２３はＷｅｂＡＰＩを介した認証サーバ（図示せず）を利用してユーザ情報の認証を行う。例えばデータ保存部３０にアカウント情報が保存されている場合、認証処理部２３は設定情報管理部２５を介してアカウント情報にアクセスする。
【００３２】
画像処理部２４はＷＥＢ制御部２２からの要求により、必要な画像処理を行う。画像処理部２４はＯＣＲ（Optical Character Reader）などの文字読取機能も有する。必要な画像処理が完了すると、画像処理部２４は各種処理部へ画像処理の結果を通知する。画像処理部２４は、また、ＷＥＢ制御部２２からの要求により、データを他のフォーマットへ変換する。画像処理部２４は、各種アプリケーションやＰＤＦ、ＸＰＳなどのドキュメントフォーマット、ＪＰＥＧやＴＩＦＦ、ＰＮＧなどの画像フォーマットに対応する。
【００３３】
設定情報管理部２５は、アカウント情報、システム情報、ユーザに紐付けされたユーザ設定などを、データ保存部３０で管理する。データ管理部２６は、ユーザが連携処理装置１０内に保存したデータを、データ保存部３０で管理する。全てのデータは蓄積データとしてユニークなドキュメントＩＤを割り振られて管理される。連携処理装置１０内の蓄積データにアクセスする際はドキュメントＩＤを元にアクセスする。
【００３４】
アプリ管理部２７は連携処理装置１０内にあるプログラムを、プログラム保存部３１で管理する。共通フレームワーク２０が起動すると、アプリ管理部２７はプログラム保存部３１から読み出したプログラムをロードして起動させる。また、プログラムを更新するようにアップデート処理部２８から要求があった場合、アプリ管理部２７は更新するプログラムをアンロードする。
【００３５】
アップデート処理部２８はプログラムのアップデート情報（更新プログラム）があるかを定期的にプログラム保存装置１５に問い合わせる。プログラムのアップデート情報がある場合、アップデート処理部２８はアップデート情報をプログラム保存装置１５からダウンロードし、プログラム保存部３１に格納する。なお、プログラム保存部３１に格納されている状態維持用データについては後述する。
【００３６】
メッセージ処理部２９は共通フレームワーク２０が持つメッセージキューをメッセージ保存部３２で管理する。プログラムの状態（例えば更新中）によって要求を受け付けられない場合、要求は一旦、メッセージキューに蓄積される。また、要求を受け付けられるプログラムの状態（稼働中）になると、要求はメッセージキューから順番にプログラムへ送信される。
【００３７】
＜処理の詳細＞
以下では、本実施形態に係る情報処理システム１の処理の詳細について説明する。
【００３８】
《連携処理装置の起動時の処理》
図４は連携処理装置の起動時の処理を表した一例のフローチャートである。ステップＳ１において、連携処理装置１０はＯＳ（システム）を起動する。ステップＳ２において連携処理装置１０はＯＳから共通フレームワーク２０を起動する。共通フレームワーク２０はアプリ管理部２７の処理を開始する。
【００３９】
ステップＳ３において、アプリ管理部２７はプログラム保存部３１に格納されているプログラムを順次読み込んで起動させる。ステップＳ４において、起動したプログラムは初期化処理を行う。ステップＳ５において、連携処理装置１０は起動したプログラムによるサービスの提供を開始する。サービスの提供を開始したあと、アップデート処理部２８はステップＳ６に進み、更新プログラムの確認処理を開始する。
【００４０】
ステップＳ６の更新プログラムの確認処理は、連携処理装置１０内のプログラムの更新プログラムが、プログラム保存装置１５にあるかを定期的に確認する処理である。連携処理装置１０内のプログラムの更新プログラムがプログラム保存装置１５にあれば、アップデート処理部２８は更新プログラムをプログラム保存装置１５からダウンロードし、更新プログラムをプログラム保存部３１に格納する。そして、アップデート処理部２８はプログラムを更新するようにアプリ管理部２７に要求する。
【００４１】
したがって、図４のフローチャートの処理によれば、連携処理装置１０はプログラム保存装置１５に更新プログラムが保存されると、更新プログラムをダウンロードすることができる。また、連携処理装置１０は更新プログラムを連携処理装置１０からダウンロードしたあと、後述のようなプログラム更新時の処理を開始できる。
【００４２】
《連携処理装置の通常運用時の処理》
図５は連携処理装置の通常運用時の処理を表した一例のフローチャートである。端末装置１６や電子機器１７などの連携機器はステップＳ１１において、ＷＥＢメッセージを送信して、連携処理装置１０に要求を行う。ここで言う要求とは、連携処理装置１０に保存されているデータの取得要求や、必要なデータ形式（フォーマット）への変換要求などであり、連携処理装置１０が有する各種機能（提供する各種サービス）を使用するための要求である。連携機器と連携処理装置１０とのＷＥＢメッセージのやり取りはＷｅｂＡＰＩを介して実施されるため、各々のハードウェアに依存しない形式で行われる。
【００４３】
ステップＳ１２において、連携処理装置１０のＷｅｂＡＰＩ処理部２１はＷｅｂＡＰＩによりＷＥＢメッセージを受信する。ＷｅｂＡＰＩによるＷＥＢメッセージはＨＴＴＰ又はＨＴＴＰＳなどの汎用プロトコルにより送受信される。
【００４４】
また、ステップＳ１３において、ＷＥＢ制御部２２は受信したＷＥＢメッセージを共通フレームワーク２０で解釈できる形式のメッセージに変換する。共通フレームワーク２０はＸＭＬスキーマにより定義されたメッセージを送受信する。共通フレームワーク２０内で動作するプログラムは全て同じフォーマットのメッセージを使用する。
【００４５】
ステップＳ１４において、共通フレームワーク２０はメッセージを解釈し、メッセージに対応した処理を実施するプログラムにメッセージを送信する。メッセージを受信したプログラムはメッセージに対応した処理を実施する。メッセージに対応した処理としては連携処理装置１０に保存されているデータの取得処理や、データ形式の変換処理、他の連携機器へのデータの送信処理など、である。
【００４６】
ステップＳ１５において、メッセージに対応した処理を実施したプログラムは、処理を実施した結果について、要求元の連携機器に対するメッセージを作成する。共通フレームワーク２０はメッセージを解釈し、そのメッセージをＷＥＢ制御部２２に送信する。ＷＥＢ制御部２２は受信したメッセージをＷｅｂＡＰＩで送信できる形式のＷＥＢメッセージに変換する。
【００４７】
ステップＳ１６において、連携処理装置１０のＷｅｂＡＰＩ処理部２１はＷｅｂＡＰＩによりＷＥＢメッセージを送信する。ステップＳ１７において、要求元の連携機器は処理を実施した結果についてのＷＥＢメッセージを受信する。
【００４８】
したがって、図５のフローチャートの処理によれば、連携処理装置１０は連携機器からＷＥＢメッセージにて要求された処理を実施し、処理を実施した結果をＷＥＢメッセージにて要求元の連携機器に返すことができる。
【００４９】
《連携処理装置のプログラム更新時の処理》
図５に示した連携処理装置１０の通常運用時の処理は、プログラム更新時、図６に示すフローチャートのように変化する。図６は連携処理装置のプログラム更新時の処理を表した一例のフローチャートである。ここでは連携機器からのＷＥＢメッセージを連携処理装置１０が受信する前に、アップデート処理部２８がプログラムを更新するようにアプリ管理部２７に要求していたものとして説明を続ける。
【００５０】
ステップＳ２１において、連携機器はＷＥＢメッセージを送信して、連携処理装置１０に要求を行う。ステップＳ２２において、連携処理装置１０のＷｅｂＡＰＩ処理部２１はＷｅｂＡＰＩによりＷＥＢメッセージを受信する。ＷＥＢ制御部２２はＷｅｂＡＰＩ処理部２１により受信されたＷＥＢメッセージを、共通フレームワーク２０で解釈できる形式のメッセージに変換する。
【００５１】
ステップＳ２３は、連携処理装置１０において実施される、プログラム更新時におけるメッセージのキューイング処理を示している。連携処理装置１０内におけるメッセージの送信は共通フレームワーク２０を介して行われる。
【００５２】
メッセージに対応した処理を実施するプログラムが更新中であれば、メッセージ処理部２９はメッセージをメッセージキューにキューイングする。更新中のプログラムには通常のメッセージが送信されず、プログラムの更新に必要なメッセージがやり取りされる。
【００５３】
なお、メッセージに対応した処理を実施するプログラムが更新中であるかの判定は例えば図７に示すようなアプリ管理テーブルを参照して行うことができる。図７はアプリ管理テーブルの一例の構成図である。図７のアプリ管理テーブルは例えばアプリ管理部２７により管理される。
【００５４】
図７のアプリ管理テーブルはアプリＩＤ、アプリ名、状態、保存先、関連アプリＩＤなどを項目として有する。アプリＩＤはプログラムを特定する情報の一例である。アプリ名はプログラムの一例としてのアプリケーションの名称である。状態はプログラムの状態を表している。プログラムの状態としては、例えば更新中、稼働中、停止中等がある。保存先はプログラムの保存先を表している。関連アプリＩＤは関連するアプリケーションのアプリＩＤを示している。メッセージ処理部２９はアプリ管理テーブルの保存先を参照することにより、プログラムが更新中であるか否かを判定できる。
【００５５】
ステップＳ２４において、アプリ管理部２７は更新対象のプログラムに対してプログラム更新通知を送信する。プログラム更新通知を受信した更新対象のプログラムは、プログラムの更新が開始されることを把握する。更新対象のプログラムは現在処理中のデータが存在する場合は一旦処理を中断してデータ構造のシリアライズ（バイナリデータ化）を開始する。
【００５６】
なお、シリアライズされるデータ構造は例えば図８に示すようなものである。図８はシリアライズされるデータ構造の一例の説明図である。図８に示すように、更新対象のアプリＡはデータサブセット、スレッドテーブル、スレッドデータを有する。ステップＳ２４で行うデータ構造のシリアライズは、図８に示すようなデータ構造を退避させるための準備処理である。
【００５７】
ステップＳ２５において、更新対象のプログラムはシリアライズしたデータ構造（現在の動作内容を保持したデータ）を取り出し、そのシリアライズしたデータ構造を状態維持用データとしてアプリ管理部２７に送信する。アプリ管理部２７は、受信した状態維持用データをプログラム保存部３１に保存する。
【００５８】
更新対象のプログラムから受信した状態維持用データを保存すると、アプリ管理部２７はステップＳ２６において更新対象のプログラムのアンロードを行う。プログラムのアンロードは共通フレームワーク２０に取り込んだプログラムを一旦メモリ上から外すことを示している。外されたプログラムは再度ロードし直すまで使用できない。
【００５９】
更新対象のプログラムのアンロードが完了した時点で、アプリ管理部２７は更新対象のプログラムの旧モジュールをリネームし、新モジュール（更新プログラム）のロードに失敗した場合などに再利用できるようにする。
【００６０】
ステップＳ２７に進み、アプリ管理部２７は更新対象のプログラムの旧モジュールを新モジュール（更新プログラム）と差し替え、更新プログラムを共通フレームワーク２０へロードし直す。新モジュール（更新プログラム）は更新前、特別な保存場所に保存されているため、旧モジュールのリネームが完了した時点で適切な保存場所に移動される。新モジュール（更新プログラム）が共通フレームワーク２０にロードされると、更新プログラムは起動され、処理が開始される。
【００６１】
ステップＳ２８に進み、アプリ管理部２７は状態維持用データをプログラム保存部３１から読み出す。アプリ管理部２７は状態維持用データを更新プログラムに送信し、プログラムの更新が開始される前のデータ構造を復元させる。プログラムの更新が開始される前のデータ構造に更新プログラムが復元されたあと、メッセージ処理部２９はステップＳ２９に進む。
【００６２】
ステップＳ２９において、メッセージ処理部２９はメッセージキューにキューイングしておいたメッセージを順次、デキューする。更新対象のプログラムの更新中はメッセージ処理部２９によりメッセージのキューイングが実施され、メッセージを更新対象のプログラムへ送信しないようにしている。
【００６３】
このため、連携処理装置１０ではプログラムの更新中であっても、更新対象のプログラムへのメッセージの受け付けを継続できるので、情報処理システム１全体の動作を停止させる必要がない。プログラムの更新が開始される前のデータ構造に復元されたあと、更新プログラムは以前と同様にメッセージの受信を再開できる。
【００６４】
ステップＳ３０において、共通フレームワーク２０はメッセージに対応した処理を実施する更新プログラムにメッセージを送信する。そして、メッセージを受信した更新プログラムはメッセージに対応した処理を実施する。
【００６５】
ステップＳ３１において、メッセージに対応した処理を実施した更新プログラムは処理を実施した結果について要求元の連携機器に対するメッセージを作成する。共通フレームワーク２０はメッセージを解釈し、そのメッセージをＷＥＢ制御部２２に送信する。ＷＥＢ制御部２２は受信したメッセージをＷｅｂＡＰＩで送信できる形式のＷＥＢメッセージに変換する。
【００６６】
連携処理装置１０のＷｅｂＡＰＩ処理部２１はＷｅｂＡＰＩによりＷＥＢメッセージを送信する。ステップＳ３２において、要求元の連携機器は処理を実施した結果についてのＷＥＢメッセージを受信する。
【００６７】
図６のフローチャートの処理によれば連携処理装置１０は更新対象のプログラムの更新中に、更新対象のプログラムへのメッセージの受け付けを継続できる。また、連携処理装置１０は更新プログラムのデータ構造を、プログラムの更新が開始される前のデータ構造に復元できる。したがって、図６のフローチャートの処理によれば、情報処理システム１全体の動作を停止させることなく稼働（動作）中のプログラムを更新できる。
【００６８】
《連携処理装置の通常運用時の処理のシーケンス図》
図９は連携処理装置の通常運用時の処理を表した一例のシーケンス図である。ステップＳ１０１において、連携処理装置１０のアップデート処理部２８は、連携処理装置１０内のプログラムの更新プログラムが、プログラム保存装置１５にあるかを確認する。ここでは連携処理装置１０内のプログラムの一例としてのアプリＡの更新プログラムが、プログラム保存装置１５に無かったものとして説明を続ける。
【００６９】
連携機器はステップＳ１０２において、ＷＥＢメッセージを送信して、連携処理装置１０に処理要求を行う。連携処理装置１０のＷｅｂＡＰＩ処理部２１はＷｅｂＡＰＩによりＷＥＢメッセージを受信する。また、ＷＥＢ制御部２２は受信したＷＥＢメッセージを共通フレームワーク２０で解釈できる形式のメッセージに変換する。ＷＥＢ制御部２２は共通フレームワーク２０を利用し、ステップＳ１０３において、メッセージをメッセージ処理部２９に送信する。
【００７０】
ステップＳ１０４において、メッセージ処理部２９はメッセージに対応した処理を実施するプログラム（アプリＡ）の状態をアプリ管理部２７に要求する。アプリ管理部２７は図７に示したようなアプリ管理テーブルからアプリＡの状態を読み出し、メッセージ処理部２９に返す。ここでは、アプリＡの状態が稼働中であったものとして説明を続ける。
【００７１】
ステップＳ１０５において、メッセージ処理部２９はメッセージを、メッセージに対応した処理を実施するアプリＡに送信する。ステップＳ１０６において、アプリＡは受信したメッセージに対応する必要な処理を実施する。そして、アプリＡはメッセージ処理部２９、ＷＥＢ制御部２２、ＷｅｂＡＰＩ処理部２１などを介して、処理結果を要求元の連携機器に通知する。
【００７２】
《連携処理装置のプログラム更新時の処理》
図５に示した連携処理装置１０の通常運用時の処理は、プログラム更新時、図１０及び図１１に示すシーケンス図のように変化する。図１０及び図１１は連携処理装置のプログラム更新時の処理を表した一例のシーケンス図である。
【００７３】
ステップＳ２０１において、連携処理装置１０のアップデート処理部２８は、連携処理装置１０内のアプリＡの更新プログラムであるアプリａが、プログラム保存装置１５にあるかを確認する。ここでは連携処理装置１０内のアプリＡの更新プログラムであるアプリａが、プログラム保存装置１５にあったものとして説明を続ける。
【００７４】
ステップＳ２０２において、アップデート処理部２８はアプリａをプログラム保存装置１５からダウンロードする。ステップＳ２０３において、アップデート処理部２８はダウンロードしたアプリａをプログラム保存部３１に保存する。そして、アップデート処理部２８はステップＳ２０４において、アプリａのプログラム更新通知をアプリ管理部２７に対して行う。
【００７５】
連携機器はステップＳ２０５において、ＷＥＢメッセージを送信して、連携処理装置１０に処理要求を行う。連携処理装置１０のＷｅｂＡＰＩ処理部２１はＷｅｂＡＰＩによりＷＥＢメッセージを受信する。また、ＷＥＢ制御部２２は受信したＷＥＢメッセージを共通フレームワーク２０で解釈できる形式のメッセージに変換する。ＷＥＢ制御部２２は共通フレームワーク２０を利用し、ステップＳ２０６において、メッセージをメッセージ処理部２９に送信する。
【００７６】
ステップＳ２０７において、メッセージ処理部２９はメッセージに対応した処理を実施するプログラム（アプリＡ）の状態をアプリ管理部２７に要求する。アプリ管理部２７は図７に示したようなアプリ管理テーブルからアプリＡの状態を読み出し、メッセージ処理部２９に返す。ここでは、アプリＡの状態が稼働中から更新中に変更される前であったものとして説明を続ける。
【００７７】
ステップＳ２０８において、メッセージ処理部２９はメッセージを、メッセージに対応した処理を実施するアプリＡに送信する。ステップＳ２０９において、アプリＡは受信したメッセージに対応する必要な処理を実施する。このように、メッセージ処理部２９はアプリ管理部２７から後述のプログラム更新開始通知を受信する前であれば、メッセージをアプリＡに送信し、アプリＡに必要な処理を実施させる。
【００７８】
ステップＳ２１０において、アプリ管理部２７はアプリＡの状態を稼働中から更新中に変更し、メッセージ処理部２９にプログラム更新開始通知を送信する。プログラム更新開始通知を受信後、メッセージ処理部２９はアプリＡに送信するメッセージのキューイング処理を開始する。
【００７９】
ステップＳ２１１において、アプリ管理部２７はアプリＡに対してプログラム更新通知を送信する。プログラム更新通知を受信したアプリＡは、プログラムの更新が開始されることを把握する。この時点でアプリＡはステップＳ２０８で受信したメッセージに対応する必要な処理を終了していなかったものとする。
【００８０】
ステップＳ２１２において、アプリＡは処理を一時停止する。アプリＡはステップＳ２１３において、現在処理中のデータ（データ構造）のシリアライズを行う。ステップＳ２１４において、アプリＡはシリアライズしたデータを状態維持用データとしてアプリ管理部２７に送信する。アプリ管理部２７は、受信した状態維持用データをプログラム保存部３１に保存する。
【００８１】
アプリＡから受信した状態維持用データを保存すると、アプリ管理部２７はステップＳ２１５においてアプリＡのアンロードを行う。アプリＡのアンロードが完了後、アプリ管理部２７はステップＳ２１６において、旧モジュール（アプリＡ）を新モジュール（アプリａ）と差し替える。
【００８２】
ステップＳ２１７において、アプリ管理部２７はアプリａを共通フレームワーク２０へロードし直す。アプリａが共通フレームワーク２０にロードされると、アプリ管理部２７は状態維持用データをプログラム保存部３１から読み出す。ステップＳ２１８においてアプリ管理部２７は状態維持用データをアプリａに送信する。ステップＳ２１９においてアプリａは状態維持用データを利用し、プログラムの更新が開始される前のデータ構造を復元させる。
【００８３】
ステップＳ２２０において、アプリａはデータ構造を復元したことをアプリ管理部２７に通知する。ステップＳ２２１において、アプリ管理部２７はプログラム更新完了通知をメッセージ処理部２９に送信する。メッセージ処理部２９はプログラム更新完了通知を受信することで、プログラムの更新が終了したことを把握する。なお、データ構造を復元したアプリａはステップＳ２２２において処理を再開する。
【００８４】
プログラム更新完了通知を受信する前であるステップＳ２２３において、連携機器はＷＥＢメッセージを送信して、連携処理装置１０に処理要求を行っている。連携処理装置１０のＷｅｂＡＰＩ処理部２１はＷｅｂＡＰＩによりＷＥＢメッセージを受信する。ＷＥＢ制御部２２は、受信したＷＥＢメッセージを共通フレームワーク２０で解釈できる形式のメッセージに変換する。ＷＥＢ制御部２２は共通フレームワーク２０を利用し、ステップＳ２２４において、メッセージをメッセージ処理部２９に送信する。プログラム更新完了通知の受信前であるため、メッセージ処理部２９は、ステップＳ２２４において受信したメッセージをキューイングする。
【００８５】
ステップＳ２２６において、アプリａはステップＳ２０８で受信したメッセージに対応する必要な処理を終了し、メッセージ処理部２９、ＷＥＢ制御部２２、ＷｅｂＡＰＩ処理部２１などを介して、処理結果を要求元の連携機器に通知する。
【００８６】
ステップＳ２２７に進み、メッセージ処理部２９はメッセージキューにキューイングしておいたメッセージを順次、デキューし、アプリａに送信する。アプリａはステップＳ２２８において、受信したメッセージに対応する必要な処理を実施する。そして、アプリａはメッセージ処理部２９、ＷＥＢ制御部２２、ＷｅｂＡＰＩ処理部２１などを介して、処理結果を要求元の連携機器に通知する。
【００８７】
本実施形態に係る情報処理システム１は連携処理装置１０がプログラム保存装置１５に更新プログラムがあるかを定期的に確認しているが、プログラム保存装置１５から連携処理装置１０に通知することも可能である。本実施形態に係る情報処理システム１の構成は一例であり、用途や目的に応じて様々なシステム構成例があることは言うまでもない。
【００８８】
＜まとめ＞
連携処理装置１０は様々な端末装置１６や電子機器１７等の連携機器を連携させることにより利用価値の向上が期待される一方、連携機器の数の増加により、システム全体としての保守性・信頼性・可用性に与える影響が大きくなっている。また、連携処理装置１０に搭載されるソフトウェアは技術力の向上や顧客要求の高まりにより、機能追加や修正のためのプログラム更新のサイクルが短くなっている。従来はソフトウェアを更新するために情報処理システム１全体の動作を停止させる必要があり、ユーザにとって利便性がよくなかった。
【００８９】
本実施形態の情報処理システム１はソフトウェアを更新するために情報処理システム１全体の動作を停止させる必要がない。したがって、本実施形態の情報処理システム１はプログラム更新の短いサイクルに対応したとしても、ユーザにとっての利便性を欠くこともない。
【００９０】
本実施形態に係る情報処理システム１は更新中のソフトウェアへのメッセージの受け付けを継続できる。また、本実施形態に係る情報処理システム１は更新したソフトウェアのデータ構造を更新が開始される前のデータ構造に復元できる。したがって、本実施形態に係る情報処理システム１によれば情報処理システム１全体の動作を停止させることなく稼働中のソフトウェアを更新できる。
【００９１】
本発明は、具体的に開示された上記の実施形態に限定されるものではなく、特許請求の範囲から逸脱することなく、種々の変形や変更が可能である。なお、特許請求の範囲に記載したソフトウェア管理手段はアプリ管理部２７に相当する。また、処理要求送信手段はメッセージ処理部２９に相当する。更新前のソフトウェアの動作内容を保持したデータは状態維持用データに相当する。ソフトウェア保存装置はプログラム保存装置１５に相当する。更新処理手段はアップデート処理部２８に相当する。
【符号の説明】
【００９２】
１    情報処理システム
１０    連携処理装置
１１    ＰＣ
１２    携帯端末
１３    複合機（Ｍｕｌｔｉ  Ｆｕｎｃｔｉｏｎ  Ｐｅｒｉｐｈｅｒａｌ：ＭＦＰ）
１４    プロジェクタ
１５    プログラム保存装置
２０    共通フレームワーク
２１    ＷｅｂＡＰＩ処理部
２２    ＷＥＢ制御部
２３    認証処理部
２４    画像処理部
２５    設定情報管理部
２６    データ管理部
２７    アプリ管理部
２８    アップデート処理部
２９    メッセージ処理部
３０    データ保存部
３１    プログラム保存部
３２    メッセージ保存部
１００    コンピュータシステム
１０１    入力装置
１０２    表示装置
１０３    外部Ｉ／Ｆ
１０３ａ    記録媒体
１０４    ＲＡＭ
１０５    ＲＯＭ
１０６    ＣＰＵ
１０７    通信Ｉ／Ｆ
１０８    ＨＤＤ
Ｂ    バス
Ｎ１    ネットワーク
【先行技術文献】
【特許文献】
【００９３】
【特許文献１】特開２００６−１１９８４８号公報
【図１】
2014178893.tif 000003
【図２】
2014178893.tif 000004
【図３】
2014178893.tif 000005
【図４】
2014178893.tif 000006
【図５】
2014178893.tif 000007
【図６】
2014178893.tif 000008
【図７】
2014178893.tif 000009
【図８】
2014178893.tif 000010
【図９】
2014178893.tif 000011
【図１０】
2014178893.tif 000012
【図１１】
2014178893.tif 000013