(57)【要約】【課題】処理の混雑さや依頼した処理の複雑度、量に応じて外部サービスの処理完了までの時間は一定しない。さらに処理の複雑度によってはサービスがハングアップするなどのエラーが生じる可能性がある。このような外部サービスを処理の一部に含んでいる情報処理アプリケーションではいわゆるタイムアウト検出処理が必要であるが、固定のタイムアウト時間では対応が難しい。そのような場合にでも適用可能なタイムアウト判定方法を持った情報処理システムを提供することを課題としている。【解決手段】外部サービスに対して複数の処理を実行させてそれらの処理結果を元に該要求に対応する応答を作成して要求元に返却する情報処理システムであって、要求の量、複雑度の少なくとも一つに基づいて外部サービスに対する処理監視周期を決定する手段と、前記の処理監視周期を計時する計時手段と、外部サービスからの応答を元に外部サービスの処理滞留を検出する処理滞留検出手段を有する。【選択図】図１
2018180965.tif 000002
【特許請求の範囲】
【請求項１】
外部サービスに対して複数の処理を実行させてそれらの処理結果を元に該要求に対応する応答を作成して要求元に返却する情報処理システムであって、
要求の量、複雑度の少なくとも一つに基づいて外部サービスに対する処理監視周期を決定する手段と、
前記の処理監視周期を計時する計時手段と
外部サービスからの応答を元に外部サービスの処理滞留を検出する処理滞留検出手段と、を有することを特徴とする情報処理システム。
【請求項２】
さらに、外部サービスに対する接続と要求の作成、実行のステップを状態遷移のアクティビティとして記述した状態遷移テーブルを実行する状態遷移手段と、状態遷移手段は状態遷移の都度、設定されたタイムアウト時間の計時を開始することを特徴とする請求項１に記載の報処理システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、プログラム及び制御方法に関する。
【背景技術】
【０００２】
アプリケーションが行う処理の大半をインターネット上に存在するＷｅｂサービス（外部サービス）で実行する形態が一般化している。
【０００３】
このようなアプリケーションでは外部サービスへの接続、データのアップロード・ダウンロードが伴う為、タイムアウト管理が必須となっている。すなわち、外部サービスが込み合っている場合には接続タイムアウト時間内を定めて、その時間内での接続リトライを行うことが通常である。またデータの処理ではデータの内容に起因する外部サービスでの処理エラーの発生、処理遅延、ネットワークトラフィックによる接続の切断の発生を時間によって監視することが必要となっている。利用者がアプリケーションに対して依頼する処理の内容（データ量、データの複雑さ）の幅がある場合には外部サービスでの処理時間にも幅がでてくる。この為、外部サービスの処理のタイムアウト監視が固定の時間では対応できない。
【０００４】
特許文献１には、ネットワーク監視装置であって、要求メッセージに対応する応答メッセージの検出を周期的に行うことでセッション異常を検出する方法が開示されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１５−８９０４６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
本発明は、ネットワーク接続された外部サービスの状況、特にハングアップを効果的に検出することができる情報処理装置の提供を目的としている。
【課題を解決するための手段】
【０００７】
上記の目的を達成するために、本発明に係る情報処理装置は、
利用者の指定したデータの量に基づいたタイムアウト監視周期を決定し、その監視周期をタイムアウト計時手段によって計時させ、タイムアウト計時手段が通知した監視タイミングで外部サービスの処理状況を確認する手段で確認させ、その確認手段が外部サービスの処理停滞を検出した時点で外部サービスの処理をタイムアウトとして打ち切る。
【発明の効果】
【０００８】
本発明に係る情報処理装置によれば、利用者の指定したデータの量に基づいたタイムアウト監視周期毎に外部サービスの処理停滞を検出できるため、データの量によらず、処理停滞の感応性を損なわないタイムアウト検出を実行することができる。
【図面の簡単な説明】
【０００９】
【図１】ソフトウェア構成物と処理の関連を示す図である。
【図２】システム構成を示す図である。
【図３】コンピュータのハードウェア構成の一例を示す図である。
【図４】ソフトウェア構成の一例を示す図である。
【図５】状態遷移テーブルを示す図である。
【図６】印刷データ変換処理のフローを示す図である。
【図７】状態遷移処理のフローを示す図である。
【図８】接続ハンドラのフローを示す図である。
【図９】応答受信ハンドラのフローを示す図である。
【図１０】接続タイムアウトハンドラのフローを示す図である。
【図１１】受信タイムアウトハンドラのフローを示す図である。
【発明を実施するための形態】
【００１０】
以下、本発明を実施するための形態について図面などを参照して説明する。なお、実施形態は、本発明を限定するものではなく、また、実施形態で説明されている全ての構成が本発明の課題を解決するための手段に必須であるとは限らない。
【００１１】
（第１実施形態）
［システム構成］
図２は本発明の第一の実施例である印刷データ変換アプリケーション（１００）が動作する機器、その依頼者、および印刷データ変換サービス（４００）から成る構成図である。
【００１２】
印刷データの変換を依頼する依頼者（５０）は印刷データの変換要求を送出する機器として、パーソナルコンピュータ（２０）、タブレットＰＣ（３０）やスマートフォン（４０）などの機器を利用する。依頼者（５０）はこれらの機器の内部で動作している印刷データ変換アプリケーション（１００）を操作して、ネットワーク（１０）上に存在する印刷データ変換サービス（４００）に対して印刷データの変換を依頼する。
【００１３】
印刷データ変換サービス（４００）はサーバーＰＣ（８０）上でＷｅｌｌ−ｋｎｏｗｎのＵＲＬを公開している、いわゆるＷｅｂサービスとして動作しているプログラムである。サーバーＰＣ（８０）上では前記ＵＲＬに対して到着した依頼を印刷データ変換サービス（４００）に転送するＷｅｂサーバー（不図示）も動作している。ＵＲＬへ到着する依頼は通常多数になるため、単一のサーバーＰＣ（８０）では処理させず、複数のサーバーＰＣ（８０）に処理させる構成とする。従って、複数のサーバーＰＣ（８０）の前段にロードバランサー（７０）を設置し各サーバーＰＣ（８０）に転送される依頼が均一に配分されるように構成する。
【００１４】
［ハードウェア構成］
図６は印刷データ変換アプリケーション（１００）をはじめとするソフトウェア群が動作するコンピュータのハードウェア構成図である。
【００１５】
印刷データ変換アプリケーション（１００）はＯＳ（オペレーティングシステム）上で動作するアプリケーションプログラムであり、ＨＤＤ（１００２）あるいはＲＯＭ（１００３）に格納されている。タブレットＰＣ（３０）やスマートフォン（４０）などの機器ではＨＤＤ（１００２）はハードディスク装置ではなく代わりに半導体メモリが用いられている。
【００１６】
ＣＰＵ（１００５）がＯＳとアプリケーションプログラムをＨＤＤ（１００２）あるいはＲＯＭ（１００３）から読み出してＲＡＭ（１００４）にロードし、実行することで様々な処理が進行し印刷データ変換アプリケーションとしての機能を実現する。処理結果はファイルとしてＨＤＤ（１００２）に格納され、あるいはデータとしてＲＡＭ（１００４）に記憶される。アプリケーションプログラムはコンピュータに接続されている入力装置（１００７）から使用者の入力、各種センサの読み取り値を取得する。さらに出力装置（１００６）に対して情報を出力し、処理結果を表示する。さらに、通信装置（１００８）を介してネットワークに接続された他のコンピュータや装置と通信を行う。これらのハードウェアはコントロールバス（１００１）で互いに接続されていてアプリケーションプログラムから操作できるように構成されている。
【００１７】
［ソフトウェア構成］
次に、印刷データ変換アプリケーション（１００）におけるソフトウェアの構成について説明する。図３は、印刷データ変換アプリケーション（１００）の構成の一例を示す図である。
【００１８】
図３に示されるアプリケーションにおける機能（モジュール部）を実現するプログラムは、各装置のＲＯＭ（１００３）等に記憶されている。
【００１９】
印刷データ変換アプリケーション（１００）は利用者から指定された印刷データファイルをインターネット上に存在する印刷データ変換サービス（４００）に送信して印刷データをプリンタ（６０）が処理できる形式に変換させた上で取得し、データファイルとしてＨＤＤ（１００２）に格納することを主な機能としている。
【００２０】
ＧＵＩ処理部（２５０）はアプリケーションのＧＵＩ表示と入力を司り、利用者からの入力に応じて処理を開始する。利用者はＨＤＤ（１００２）等に格納されている印刷用データファイルを指定して、印刷に使用したいプリンタの種別と共に印刷データの変換指示を行う。この変換指示を起点として状態遷移部（２００）に対して変換要求が発行される。状態遷移部（２００）は印刷データ変換処理の全体を状態遷移テーブルとしてＲＡＭ（１００４）等のメモリ上に作成し、状態遷移を行いながら一連の変換処理を遂行していく。その変換処理の一部として、外部に存在する印刷データ変換サービス（４００）へ接続する処理が含まれる。具体的にはＨＴＴＰプロトコルを用いたＷｅｂサービスへの接続が実行される。この処理は接続処理部（２１０）で行われる。Ｗｅｂサービスへの接続が完了した後は状態遷移部（２００）に接続完了イベントが通知され、以って状態遷移が発生し次の状態に移る。接続の次の状態では要求処理部（２２０）において利用者が指定した印刷データファイルをデータ格納部（２４０）から読み出しつつ接続先の印刷データ変換サービス（４００）にデータ変換要求として送信する。変換に必要な印刷データファイルを全て送信し終わった時点で要求処理部（２２０）から送信完了が通知される。
【００２１】
印刷データ変換サービス（４００）への接続とデータ受信に対してはタイムアウトの計時がタイムアウト計時部（２３０）において行われる。接続タイムアウトが検出されるか、あるいは全データの受信が完了しない場合にはエラーとして扱われ、利用者にＧＵＩ処理部を経由して画面表示され処理が失敗したことが通知される。データ受信に対するタイムアウト時間等の設定値は、少なくとも、利用者が指定した印刷データファイルのサイズに基づいて決定され次に説明する状態遷移テーブルの作成時に反映される。
［状態遷移テーブルの構成］
アプリケーションの詳細説明に先立ち、状態遷移部（２００）の動作について説明する。ここでは特に状態遷移テーブルについて説明する。図５は状態遷移部（２００）が保持している状態遷移テーブルを図示したものである。一般的には、状態遷移テーブルは少なくとも「ステート」、「アクティビティ」、「遷移」と遷移の条件である「イベント」の４要素を備えている。状態遷移部（２００）の外部から送出された「イベント」を受信して、現在の「ステート」から次の「ステート」への「遷移」を引き起こす条件と一致した場合には遷移が発生して遷移した先の「ステート」に付随した「アクティビティ」が呼び出される。プログラム的にはステートはユニークなＩＤ番号を持っている。さらに別のステートへの「遷移」を遷移先ステートＩＤとして、イベントをイベントＩＤとして記憶している。
【００２２】
本実施例における状態遷移テーブルにはさらに各ステートにタイムアウト計測周期とタイムアウト計測回数が指定可能となっている。現在のステートＩＤが１であると仮定しよう。テーブルのステートＩＤが「１」である行に着目すると、１０秒のタイムアウト計測周期とタイムアウト計測回数が１回であることがわかる。これは、このステートに遷移してきた時点で１０秒の計時が開始されて、もしタイムアウトが発生したら接続タイムアウトハンドラ（３０５）が実行されることを意味している。このステートに関連つけられているアクティビティ処理は「接続処理（３０１）」である。従って、先の計時開始直後にこの接続処理（３０５）が実行されることになる。またこのステートには２つの遷移先ステートＩＤ（２と４）が設定されていることがわかる。接続処理（３０１）の実行の結果として、接続成功イベント（５０３）が発生した場合にはステートＩＤが２のステートへ、接続タイムアウトイベント（５０３）が発生した場合にはステートＩＤが４のステートへ遷移することになる。先のタイムアウト計測周期１０秒とはＩＤ＝１のステートからＩＤ＝２か、ＩＤ＝４のステートに遷移しなければならないことを意味する。遷移が発生しなかった場合にはタイムアウトハンドラとして「接続タイムアウトハンドラ（３０５）」が実行されることを示している。
【００２３】
［状態遷移処理フロー］
前述の動作を図７に示す状態遷移部で行われる状態遷移処理のフローと関連つけて説明する。状態遷移部（２００）は現在のステートＩＤを保持しており、受信するイベントを検査して状態遷移が発生するか否かを決定する。遷移が決定した場合には必要な処理を行って再びイベント受信待ちを繰り返すという構成となっている。
【００２４】
Ｓ６０１ではメッセージとして送信されてくるイベントを待つ処理となっている。メッセージは最低限イベントＩＤを格納していれば事足りるが、イベントに伴ったデータや処理結果のリザルトコードなどを伴っていても良い。イベントを受信するとＳ６０２においてイベントＩＤと現在のステートＩＤを照らし合わせて、遷移先のステートＩＤを取得する。状態遷移テーブルの最左列のステートＩＤのうち現在のステートＩＤに一致する行を取り出し、その最右列のイベントが受信したイベントＩＤと一致するかを判断する。一致するならばＳ６０３に移るが一致しない場合には無効なイベントであるためイベントは無視され再びＳ６０１のイベント待ちへ戻ることになる。
【００２５】
Ｓ６０３ではまず、現ステートに対応して動作していた可能性があるタイムアウト計時を停止させる。その後Ｓ６０４において記憶している現在のステートＩＤを遷移先のステートＩＤに更新する。この処理が遷移そのものを意味する。続くＳ６０５において新ステートでのタイムアウト計時を開始する。図５の状態遷移テーブルの新ステートＩＤに対応する行のタイムアウト計測周期とタイムアウト計測回数が参照されてタイムアウト計時部（２３０）に対して設定される。なお、ステートによってはタイムアウト計時を行わない場合もある。その場合はＳ６０３、Ｓ６０５などの処理はスキップされる。その後、新ステートに設定されているアクティビティが実行される。その後、再びＳ６０１で新たなイベントの受信を待つ。
【００２６】
［タイムアウト処理］
タイムアウト計時の開始は状態遷移部（２００）内で行われることを説明したが、タイムアウト発生時の処理については触れられていなかった。タイムアウト発生時にはタイムアウト計時部（２３０）が起動時に指示されていたタイムアウトハンドラの呼び出しを行う。例えば、図５のステートＩＤが１の状態にあって１０秒のタイムアウト計測周期が経過した場合にはタイムアウト計時部（２３０）が「接続タイムアウトハンドラ（３０５）」を呼び出すことになる。通常はタイムアウトハンドラ内で状態遷移を行わせるために何らかのイベントを発行する処理を行う。
【００２７】
タイムアウトハンドラの呼び出し後にはタイムアウト計時部（２３０）はタイムアウト計測回数の設定に従い、以後の計時を行わないのかあるいは引き続き同時間の計時を開始するのかを判断して自身の設定に反映させる。図５のステートＩＤが２の場合のタイムアウト計測回数は「繰り返し」となっている。これは具体的には継続回数は不定であり、タイムアウト計時部（２３０）に対して計時停止を明示的に指示しないがきり繰り返し計時を行うことを意味している。この状態でタイムアウト時間が経過する都度、タイムアウトハンドラとして「受信タイムアウトハンドラ（３０６）」が何度も呼び出されることになる。同ハンドラ内部では何らかのエラーが発生したと結論つけるかあるいは無視するかを呼び出しの都度判断することになる。何度目かの呼び出しの末にエラー発生と判断した場合には同ハンドラ内からエラーを意味するイベントを送信すると共にタイムアウト計時を明示的に停止させる。
【００２８】
［アプリケーションの処理フロー］
利用者からの印刷データ変換指示を受け付けてからの処理フローは図６で示される。アプリケーションの動作フローは全て状態遷移部（２００）の処理で司られている。その為、状態遷移テーブルの作成と実行、および終了待ち合わせが主な処理内容であるフローとなっている。Ｓ５０１の状態遷移テーブル作成では図５に示す内容の状態遷移テーブルをメモリ上に構築する。その際、処理することを指示された印刷データのサイズを元に、タイムアウト計測周期を決定する。したがって、状態遷移テーブルは印刷データによって内容が異なるものが作成される。作成された状態遷移テーブルを伴って、Ｓ５０２で状態遷移部（２００）に対して実行指示を行う。
【００２９】
その後は状態遷移部（２００）に対して送信されるイベントによって状態遷移が発生し、対応するアクティビティが実行されてアプリケーションの処理が進んでいく。処理が成功で終了するか失敗で終了するかによらず、利用者への結果の通知と終了処理などがアクティビティとして実行された上で状態遷移テーブルにおいて遷移先がない最終ステートに遷移する。最終ステートへの遷移時点で状態遷移部は処理を終了する。Ｓ５０３では状態遷移部がその処理を終了したことを待ち合わせる。Ｓ５０４ではＳ５０１で作成した状態遷移テーブルを破棄して印刷データ変換処理を終了する。
【００３０】
［印刷データ変換サービスへのアクセス処理］
ここまでで、本発明の印刷データ変換アプリケーション（１００）における、状態遷移部（２００）、状態遷移テーブル、状態遷移処理と印刷データ変換処理のフローを説明してきた。アプリケーションの主な動作が状態遷移テーブルに記述され状態遷移部がそのテーブルに記載されたアクティビティと各種ハンドラを機械的に処理することで生み出されていることを説明した。ここからは、具体的なアクティビティ、イベントと外部サービスの利用についての関係付けについて説明する。
【００３１】
本実施例における印刷データ変換アプリケーションは利用者から与えられた印刷データを外部のＷｅｂサービスである印刷データ変換サービス（４００）に対して送信し、そのデータを変換させた後にダウンロードしてくる処理が主な処理である。図１と図５を以ってその流れを説明すると、
接続処理（３０１）、接続ハンドラ（３０２）のコールバック、サービス要求処理（３０３）、応答受信ハンドラ（３０４）のコールバックがこの順序で呼び出されていくことが必要になっている。この順序を状態遷移テーブルに対応させている。すなわち、ステートＩＤ＝１のステートではアクティビティとして「接続処理（３０１）」が設定されており、接続処理部（２１０）への接続依頼が行われる。接続が成功すると接続ハンドラ（３０２）が接続処理部（２１０）からコールバックされる。
【００３２】
この接続ハンドラ（３０２）内から接続成功イベント（５０３）を送信することでステートＩＤ＝２への状態遷移が発生する。ステートＩＤ＝２のステートではサービス要求処理（３０３）がアクティビティとして設定されている。サービス要求処理（３０３）内では要求処理部（２２０）に対して利用者が指定した印刷データを渡し、外部の印刷データ変換サービス（４００）が要求するリクエストパケットを作成して送信する。印刷データ変換サービス（４００）は受信したデータの変換を実行し、変換が終了したデータを随時返却してくる。要求処理部（２２０）はデータを受信する都度、応答受信ハンドラ（３０４）をコールバックして取得したデータを引き渡す。
【００３３】
応答受信ハンドラ（３０４）では呼び出される都度、現在時刻と取得データ量をメモリ内に記憶しつつ取得データはデータ格納部（２４０）にファイルとして追記している。変換された印刷データを全て受信完了した場合には受信完了イベント（５０４）を送信する。受信が完了しない場合については後述する。受信完了イベント（５０４）によって状態遷移が発生し、ステートＩＤ＝３に遷移し、その結果「終了処理（不図示）」が実行される。ここでは利用者に対する結果の通知と状態遷移の停止、外部サービスとの接続のクローズ、解放などが行われる。接続タイムアウトや受信タイムアウトイベントが送出された場合には状態はステートＩＤ＝４のステートに遷移し、「エラー処理（不図示）」アクティビティが実行される。ここでは利用者へのエラー内容の通知とデータ格納部に未完成で保存されていたファイルの削除等が行われる。
【００３４】
ステートＩＤ＝３と４においてはタイムアウトに関する設定や遷移先ＩＤ、イベントが設定されていない。これはこれらのステートが最終ステートであることを意味する。このような最終ステートに遷移した場合にはアクティビティの実行後、図６のＳ５０３で示すように状態遷移処理の終了が通知される。
【００３５】
［繰り返しタイムアウト計時処理を用いたタイムアウト検出処理］
印刷データ変換アプリケーション（１００）は外部の印刷データ変換サービス（４００）にアクセスし、データ変換処理を依頼する。よって印刷データ変換サービスへの接続が時間内に終了しない可能性と接続は成功したもののデータ変換処理自体に長時間がかかるあるいはサービスがハングアップして変換が進まないなどのアクシデントが発生する可能性がある。サービスへの接続処理は接続処理部（２１０）で実行される際に最大許容できる待ち時間を指定して、その時間内で接続リトライを行う。この接続処理は利用者の指定する印刷データとは無関係であるため固定のタイムアウト時間が用いられている。
【００３６】
一方、外部サービスにおける処理時間は利用者の指定する印刷データと関係があるため単一のタイムアウト時間で対応する場合には最大の許容時間を与える運用にならざるを得ない。例えば、数ＭＢのデータの変換には３０分程度必要な場合があるなら、数ＫＢのデータを依頼する際にも３０分を設定せざるを得ない。しかしこれでは比較的小さいデータを指定した場合に、もし外部サービスがハングアップしてしまっても３０分はその異常に気がつかないことになる。本発明の印刷データ変換アプリケーション（１００）では単一のタイムアウト時間によって監視するのではなく比較的短い周期で外部サービスの実行状況の監視を繰り返すことによって異常時への感応性を早めている。さらに、監視周期を利用者の指定する印刷データのサイズに応じて決定することで印刷データサイズに適応した監視が行える。
【００３７】
（その他の実施例）
本発明は、上述の実施形態の１以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける１つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、１以上の機能を実現する回路（例えば、ＡＳＩＣ）によっても実現可能である。
【符号の説明】
【００３８】
１０  ネットワーク、２０  パーソナルコンピュータ、３０  タブレットＰＣ、
４０  スマートフォン、５０  利用者、６０  プリンタ、７０  ロードバランサ、
８０  サーバーＰＣ、１００  情報処理アプリケーション、２００  状態遷移部、
２１０  接続処理部、２２０  要求処理部、２３０  タイムアウト計時部、
２４０  データ格納部、２５０  ＧＵＩ処理部、３０１  接続処理、
３０２  接続ハンドラ、３０３  サービス要求処理、３０４  応答受信ハンドラ、
３０５  接続タイムアウトハンドラ、３０６  受信タイムアウトハンドラ、
４００  印刷データ変換サービス、５０１  接続タイムアウト時間、
５０２  受信タイムアウト監視周期、５０３  接続完了イベント、
５０４  受信完了イベント、５０５  接続失敗イベント、
５０６  受信タイムアウトイベント、１００１  システムバス、
１００２  ＨＤＤ、１００３  ＲＯＭ、１００４  ＲＡＭ、１００５  ＣＰＵ、
１００６  出力装置、１００７  入力装置、１００８  通信装置
【図１】
2018180965.tif 000003
【図２】
2018180965.tif 000004
【図３】
2018180965.tif 000005
【図４】
2018180965.tif 000006
【図５】
2018180965.tif 000007
【図６】
2018180965.tif 000008
【図７】
2018180965.tif 000009
【図８】
2018180965.tif 000010
【図９】
2018180965.tif 000011
【図１０】
2018180965.tif 000012
【図１１】
2018180965.tif 000013