(57)【要約】      （修正有）【課題】処理の状況に応じて同期処理方式とするか非同期処理方式とするかを切り替えることが可能な情報処理装置及びプログラムを提供する。【解決手段】情報処理システム１において、情報処理装置２は、ワークフローの情報を管理するワークフロー管理部２０と、ワークフローの実行の履歴を管理する実行履歴管理部２１と、各種のデータを記憶する記憶部２２と、ワークフローの実行を制御するワークフロー制御部２３と、タスクごとに生成される実行指示を通知するジョブメッセージを一時的に滞留するキューイングサービス２４と、各種通知のやり取りを行う仲介サービス２５と、を有する。ワークフロー管理部の判定手段２０２は、処理部Ａ、処理部Ｂの処理の状況に応じて、注目するタスクの実行方式を切り替えるべきか否かを判定する。【選択図】図１
2020170331.tif 000002
【特許請求の範囲】
【請求項１】
一連の業務を構成する予め定められた単位の処理を実行する実行手段と、
前記実行手段の処理の状況に応じて、前記単位の処理を前記一連の業務と同期させて実行する第１の処理の方式と、前記単位の処理を前記一連の業務と同期させずに実行する第２の処理の方式との間で切り替える切替手段と、
を備える、情報処理装置。
【請求項２】
前記切替手段は、前記実行手段による前記単位の処理の実行に要する処理時間が予め定められた第１の条件を満たすときに、前記第２の処理の方式から前記第１の処理の方式に切り替える、
請求項１に記載の情報処理装置。
【請求項３】
前記処理時間を計測する計測手段をさらに備える、
請求項２に記載の情報処理装置。
【請求項４】
前記切替手段は、前記実行手段にかかる負荷が予め定められた第２の条件を満たすときに、前記第１の処理の方式から前記第２の処理の方式に切り替える、
請求項１から３のいずれか１項に記載の情報処理装置。
【請求項５】
前記負荷を示す情報として、前記実行手段において前記単位の処理が終了するまでの待ち時間が予め定められた基準の時間を超える第１の回数、及び前記単位の処理の実行の試みを繰り返す第２の回数を取得する取得手段をさらに備え、
前記切替手段は、前記第１の回数及び前記第２の回数のいずれか一方が予め定められた回数を超えるときに、前記第１の処理の方式から前記第２の処理の方式に切り替える、
請求項４に記載の情報処理装置。
【請求項６】
コンピュータを
一連の業務を構成する予め定められた単位の処理を実行する実行手段と、
前記実行手段の処理の状況に応じて、前記単位の処理を前記一連の業務と同期させて実行する第１の処理の方式と、前記単位の処理を前記一連の業務と同期させずに実行する第２の処理の方式との間で切り替える切替手段
として、機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置及びプログラムに関する。
【背景技術】
【０００２】
近年、複数のジョブを連携させてジョブ連携として実行する際に、先行するジョブが実行した結果に応じて、該ジョブに後続するジョブの実行を制御する制御装置が提案されている（例えば、特許文献１参照。）。
【０００３】
特許文献１に記載された制御装置は、後続ジョブを実行させる実行条件を設定する制御画面を表示する表示工程と、前記制御装置で利用される記録装置で、先行する先行ジョブを実行させた実行結果を保持する保持工程と、前記記録装置で保持された前記実行結果を取得する取得工程と、前記取得工程において取得された前記実行結果および前記制御画面を介して設定された実行条件に応じて、前記先行ジョブに後続する後続ジョブの実行を制御する制御工程と、を有する。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特許第５８４０２６６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
複数の予め定められた単位の処理（以下、「タスク」ともいう。）を連結させて構築した一連の業務の流れ（以下、「ワークフロー」ともいう。）の実行を制御するワークフロー制御システムでは、ワークフローを制御する工程と同期して処理を実行する方式（以下、「同期処理方式」ともいう。）、及びワークフローを制御する工程と分離して処理を実行する方式（以下、「非同期方式」ともいう。）のうちいずれか一方の方式によってタスクが実行される。
【０００６】
同期処理方式では、処理部３の混雑の度合い（以下、「ビジー状態」ともいう。）や、処理の待ち時間が予め定められた基準となる時間を超えること（すなわち、「タイムアウト」）により処理が停止する虞がある。また、非同期方式では、ワークフローを構築する各種タスクの実行を指示する実行指示（以下、「ジョブ」ともいう。）を通知するジョブメッセージを一時的に滞留させる手段（以下、「キューイングサービス」ともいう。）が用いられるが、かかるキューイングサービスでのジョブメッセージが滞留する時間が長くなることにより処理が停止する虞がある。したがって、同期処理方式及び非同期処理方式のうちいずれか一方の方式のみで実行するよりも、タスクに適した方式を柔軟に選択して実行することが望まれている。
【０００７】
本発明の課題は、処理の状況に応じて同期処理方式とするか非同期処理方式とするかを切り替えることを可能とする情報処理装置及びプログラムを提供することにある。
【課題を解決するための手段】
【０００８】
［１］一連の業務を構成する予め定められた単位の処理を実行する実行手段と、
前記実行手段の処理の状況に応じて、前記単位の処理を前記一連の業務と同期させて実行する第１の処理の方式と、前記単位の処理を前記一連の業務と同期させずに実行する第２の処理の方式との間で切り替える切替手段と、
を備える、情報処理装置。
［２］前記切替手段は、前記実行手段による前記単位の処理の実行に要する処理時間が予め定められた第１の条件を満たすときに、前記第２の処理の方式から前記第１の処理の方式に切り替える、
前記［１］に記載の情報処理装置。
［３］前記処理時間を計測する計測手段をさらに備える、
前記［２］に記載の情報処理装置。
［４］前記切替手段は、前記実行手段にかかる負荷が予め定められた第２の条件を満たすときに、前記第１の処理の方式から前記第２の処理の方式に切り替える、
前記［１］から［３］のいずれか１つに記載の情報処理装置。
［５］前記負荷を示す情報として、前記実行手段において前記単位の処理が終了するまでの待ち時間が予め定められた基準の時間を超える第１の回数、及び前記単位の処理の実行の試みを繰り返す第２の回数を取得する取得手段をさらに備え、
前記切替手段は、前記第１の回数及び前記第２の回数のいずれか一方が予め定められた回数を超えるときに、前記第１の処理の方式から前記第２の処理の方式に切り替える、
前記［４］に記載の情報処理装置。
［６］コンピュータを
一連の業務を構成する予め定められた単位の処理を実行する実行手段と、
前記実行手段の処理の状況に応じて、前記単位の処理を前記一連の業務と同期させて実行する第１の処理の方式と、前記単位の処理を前記一連の業務と同期させずに実行する第２の処理の方式との間で切り替える切替手段
として、機能させるためのプログラム。
【発明の効果】
【０００９】
本発明によれば、処理の状況に応じて同期処理方式とするか非同期処理方式とするかを切り替えることができる。
【図面の簡単な説明】
【００１０】
【図１】図１は、本実施の形態に係る情報処理システムの制御系の一例を示すブロック図である。
【図２】図２は、ワークフローパターンテーブルの一例を示す図である。
【図３】図３は、タスクの実行方式を模式的に説明する図であり、（ａ）は、同期処理方式の一例を示す図、（ｂ）は、非同期処理方式の一例を示す図である。
【図４】図４は、業務フローの一例を示すモデル図である。
【図５】図５は、業務フローの記述言語の一例を示す図であり、（ａ）は、同期処理方式の例を示す図、（ｂ）は、非同期処理方式の例を示す図である。
【図６】図６は、図４に示す業務フローに係る記述言語の一例を示す図である。
【図７】図７は、実行時間の一例を模式的に説明する図である。
【図８】図８は、図１に示す情報処理装置の動作の一例を示すフローチャートである。
【図９】図９は、マッピング情報の一例を示す図である。
【発明を実施するための形態】
【００１１】
以下、本発明の実施の形態について図面を参照して説明する。なお、各図中、実質的に同一の機能を有する構成要素については、同一の符号を付してその重複した説明を省略する。
【００１２】
［実施の形態］
図１は、本発明の実施の形態に係る情報処理システムの制御系の一例を示す模式図である。この情報処理システム１は、情報処理装置２と、情報処理装置２に不図示のネットワークを介して接続された処理部３とを備えている。処理部３は、実行手段の一例である。
【００１３】
このような情報処理装置２として、例えば、パーソナルコンピュータ、タブレッド端末、多機能携帯電話機（スマートフォン）等を用いることができる。また、処理部３には、例えば、画像の処理を行う機能を備える装置（すなわち、画像読取装置、画像出力装置等）や、データの送受信を行う機能を備えた装置（データ送信装置、メールサーバ装置等）、文書や画像データ等の読み取り機能を備えた装置（画像読取装置、スキャナー等）、文字認識を行う機能（ＯＣＲ：Optical Character Recognition）を備えた装置、画像の解析を行う機能を備えた装置（画像処理装置等）、データベースへのデータの登録や登録の際のデータ変換（例えば、文書データから画像データへの変換等）を行う機能を備えた装置、帳票の形式（フォーマット）を認識及び判定する機能を備えた装置、ＱＲコード（登録商標）やバーコードを付加する機能を備えた装置、情報を秘匿するステガノグラフィ機能を備えた装置等が含まれる。
【００１４】
処理部３は、ワークフロー（後述する）を構築する予め定められた単位の処理（以下、「タスク」ともいう。）を実行する。処理部３は、実行されるタスクごとに設けられる。処理部３は、単数でもよく複数でもよい。以下、複数の場合にそれぞれを区別して特定する場合は、「処理部３Ａ」、「処理部３Ｂ」、・・の要領で符号にアルファベットを付して示すものとする。また、処理部３は、必ずしも情報処理装置２の外部に設ける必要はなく、情報処理装置２内に設けてもよい。
【００１５】
（情報処理装置の構成）
情報処理装置２は、ワークフローの情報を管理するワークフロー管理部２０と、ワークフローの実行の履歴を管理する実行履歴管理部２１と、各種のデータを記憶する記憶部２２と、ワークフローの実行を制御するワークフロー制御部２３と、タスクごとに生成される実行指示（以下、「ジョブ」ともいう。）を通知するジョブメッセージを一時的に滞留するキューイングサービス２４と、処理部３及びキューイングサービス２４との間で各種通知（以下、単に「メッセージ」ともいう。）のやり取りを行う仲介サービス２５と、を有して構成されている。
【００１６】
ワークフロー管理部２０、実行履歴管理部２１及びワークフロー制御部２３は、ＣＰＵ（Central Processing Unit）、インターフェース等から構成されている。ＣＰＵは、記憶部２２に記憶されたプログラム２２０に従って動作することにより、マッピング手段２００、生成手段２０１、判定手段２０２、切替手段２０３、滞留時間測定手段２１０、処理時間測定手段２１１、実行指示手段２３０、送信手段２３１、受信手段２３２等として機能する。各手段の詳細については後述する。
【００１７】
（各構成について）
次に、上述した情報処理装置２の各構成について説明する。
〔ワークフロー管理部２０〕
ワークフロー管理部２０は、ワークフローに係る各種情報を管理する。ここで、「ワークフロー」とは、複数のタスクを関連付けて構築した一連の業務の流れをいう。具体的には、ワークフロー管理部２０は、マッピング手段２００、生成手段２０１、判定手段２０２、切替手段２０３等として機能する。判定手段２０２は、取得手段の一例である。
【００１８】
マッピング手段２００は、切替手段２０３（詳細は後述する）によってタスクを実行する方式（以下、単に「実行方式」ともいう。）が切り替えられる前のタスクを含んで構築されたワークフロー（以下、「デフォルトのワークフロー」ともいう。）に係るワークフローＩＤ（図２参照）と、切替手段２０３によって実行方式が切り替えられた後のタスクを含んで構築されたワークフロー（以下、「新たなワークフロー」ともいう。）に係るワークフローＩＤと、の対応関係（以下、「マッピング」ともいう。）を示すマッピング情報（図９参照。）を管理する。生成手段２０１は、ユーザの指示に応じてワークフローを生成する。実行方式の詳細については、後述する。
【００１９】
判定手段２０２は、処理部３の処理の状況に応じて、注目するタスクの実行方式を切り替えるべきか否かを判定する。処理部３の処理の状況は、例えば、処理部３によるタスクの実行に要する時間（以下、単に「処理時間」ともいう。）や、処理部３にかかる容量の負荷（例えば、ＣＰＵやメモリの稼働率をいう。）に応じて特定される。
【００２０】
具体的には、判定手段２０２は、実行履歴管理部２１が取得したタスクの実行時間（後述する。図７参照。）が予め定められた第１の条件を満たすか否か、あるいは、処理部３のタイムアウトの回数やリトライの回数が予め定められた第２の条件を満たすか否かを判定する。タイムアウトの回数は、第１の回数の一例である。リトライの回数は、第２の回数の一例である。また、タイムアウトの回数及びリトライの回数は、処理部３の負荷を示す情報の一例である。
【００２１】
「予め定められた第１の条件」とは、タスクの実行を早く完了するという観点から実行方式を選択する条件をいう。予め定められた第１の条件には、例えば、処理部３による処理時間が占める割合が実行時間に対して一定以下であること、すなわち、キューイングサービス２４によるジョブメッセージの滞留時間（後述する。図７参照。）が占める割合が一定以上であること等が含まれる。
【００２２】
「タイムアウト」とは、タスクの実行を開始する依頼（以下、単に「開始依頼」ともいう。）が処理部３に送られてから実際のタスクの実行が終了されるまで（より具体的には、処理部３から終了通知が送られるまで）の待ち時間が予め定められた基準となる時間を超えることをいう。この基準時間は、処理部３の内部にそれぞれ予め設定されていてもよい。「リトライ」とは、処理部３での何らかのエラーの発生や、処理部３内のタスクの混雑の度合い（すなわち、「ビジー状態」）等により、処理部３が同一のタスクの実行の試みを繰り返すことをいう。
【００２３】
「予め定められた第２の条件」とは、処理部３にかかる負荷を軽減する観点から実行方式を選択する条件をいう。予め定められた第２の条件には、例えば、上述したタイムアウトの回数やリトライの回数が予め定められた基準となる回数を超えること等が含まれる。
【００２４】
切替手段２０３は、判定手段２０２によりタスクの実行方式を切り替えるべきと判定された場合に、生成手段２０１によって生成されたデフォルトのワークフローにおいて、当該タスクの実行方式を切り替えた新たなワークフローを作成する。また、切替手段２０３は、上述したマッピング情報に、デフォルトのワークフローに係るワークフローＩＤと新たなワークフローに係るワークフローＩＤとを関連付けて登録する。
【００２５】
〔実行履歴管理部２１〕
実行履歴管理部２１は、ワークフローの実行の履歴を管理する。具体的には、実行履歴管理部２１は、滞留時間測定手段２１０、処理時間測定手段２１１等として機能する。処理時間測定手段２１１は、計測手段の一例である。滞留時間測定手段２１０は、キューイングサービス２４の記憶領域（以下、「キュー」ともいう。）内にジョブメッセージが滞留している時間を測定する。また、滞留時間測定手段２１０は、同一のタスクにおいて、一定の時間的な範囲（例えば、予め定められた直近の範囲）で行われた複数の実行に係る滞留時間を測定し、予め定められた方法でこれらを集計して出力する。
【００２６】
処理時間測定手段２１１は、仲介サービス２５を介して、処理部３によるタスクの処理時間を測定する。処理時間は、例えば、処理部３がキューイングサービス２４からの処理の開始の依頼を受け付けてから当該タスクの実行を終了するまでに要する時間としてよい。
【００２７】
処理時間測定手段２１１は、例えば、処理部３に記録されたログ情報を利用して処理時間を測定してもよく、キューイングサービス２４内に記録された処理時間を測定してもよい。また、処理時間測定手段２１１は、一定の時間的な範囲（例えば、予め定められた直近の範囲）で行われた複数の実行に対して処理時間を測定し、予め定められた方法でこれらを集計して出力する。
【００２８】
〔記憶部２２〕
記憶部２２は、ＲＯＭ（Read Only Memory）、ＲＡＭ（Random Access Memory）、ハードディスク等から構成され、プログラム２２０や、ワークフローパターンテーブル２２１（図２参照）等の各種データを記憶する。ワークフローパターンテーブル２２１は、ワークフローごとにタスクの実行方式を記録したテーブルである。ワークフローパターンテーブル２２１の構成については後述する。
【００２９】
〔ワークフロー制御部２３〕
ワークフロー制御部２３は、ワークフローの実行を制御する。具体的には、ワークフロー制御部２３は、実行指示手段２３０、送信手段２３１、受信手段２３２等として機能する。
【００３０】
（１）自動タスク
実行指示手段２３０は、処理部３に対して処理機能の実行を指示する。具体的には、実行指示手段２３０は、処理部３に対して対応するタスクの実行の開始依頼を行うとともに、処理部３からのタスクの実行を終了したことを示す通知（以下、単に「終了通知」ともいう。）を受け取る。実行指示手段２３０は、後述する同期処理方式でタスクを実行するための手段である。
【００３１】
（２）送信タスク
送信手段２３１は、キューイングサービス２４に対してタスクの実行の開始依頼を送信する。送信手段２３１により依頼されたタスクは、キューイングサービス２４に滞留する。
【００３２】
（３）受信タスク
受信手段２３２は、キューイングサービス２４から、処理部３によるタスクの終了通知を受信する。送信手段２３１及び受信手段２３２は、非同期処理方式でタスクを実行するための手段である。
【００３３】
〔キューイングサービス２４〕
キューイングサービス２４は、ジョブメッセージを一時的に記憶するキュー（不図示）を備え、ジョブメッセージを受け付けた順に対応する処理部３に対してタスクの実行を指示する機能を有する。また、キューイングサービス２４は、処理部３からタスクの終了通知を受け付け、ワークフロー制御部２３に該終了通知を送信する。キューイングサービス２４は、非同期処理方式で用いられる。
【００３４】
〔仲介サービス２５〕
仲介サービス２５は、キューイングサービス２４と処理部３との間を仲介する機能を有する。具体的には、仲介サービス２５は、キューイングサービス２４と処理部３との間でプロトコルの変換を行う機能を有する。仲介サービス２５は、例えば、処理時間測定手段２１１からの処理時間の測定指示に応じて、各処理部３と通信してタスクの処理時間を測定し、測定結果をキューイングサービス２４に返す機能を有する。
【００３５】
また、仲介サービス２５は、上記の機能に加えて、以下の機能を有してもよい。
−処理部３Ａが複数のサーバ装置に設けられている場合における処理の分散機能（「ロードバランス機能」ともいう。）、
−複数の処理部３に対して同時に処理を実行させる際に実行する処理の数を制御する機能（例えば、リソースを共有する（一時的な処理状態を固定ファイル等に保存する等）処理を同時に複数実行させるときに不整合状態となる可能性を低減するために必ず１つのプロセスしか存在しないように制御する機能）、
−処理サービス名と処理機能のマッピング及び連携機能（具体的には、キューイングサービスのジョブメッセージに含まれる実行内容は処理サービス名で渡され、仲介サービス内の設定により処理サービス名を解釈して実行する処理機能に割り当てる機能。例えば、「処理サービスＡ」がジョブメッセージに記述されている場合、実際の処理は「処理機能Ａ」と「処理機能Ｂ」の連続実行処理として実行される。）、及び
−エラー発生時のリトライ機能（例えば、キューにジョブメッセージが大量に滞留しているときに機能する）等。
【００３６】
（ワークフローパターンテーブル２２１の構成）
図２は、ワークフローパターンテーブル２２１の一例を示す図である。図２に示すように、ワークフローパターンテーブル２２１には、「ワークフローグループＩＤ」欄と、「ワークフローＩＤ」欄と、「タスク」欄と、が設けられている。
【００３７】
「ワークフローＩＤ」欄には、ワークフローを識別する情報であるＩＤ（例えば、番号）が記録されている。「タスク」欄には、ワークフローを構築するタスクごとに実行方式が登録されている。具体的には、「タスク」欄には、当該タスクを同期処理方式で実行するか、非同期処理方式で実行するかを示す情報が記録されている。ワークフローグループとは、タスクの同期処理と非同期処理とを置き換えただけの同種のワークフローをいう。
【００３８】
一例として、図２で示す例では、当該タスクが同期処理方式で実行される場合、「タスク」欄には「１」と記録され、非同期処理方式で実行される場合、「タスク」欄には「０」と記録される。また、「タスク」欄は、ワークフローを構築するタスクの数に応じて、「タスクＡ」〜「タスクＺ」のように複数の欄を設けてもよい。なお、この「タスク」欄に記録される情報は、ユーザの指示に応じて生成手段２０１により設定される、初期の設定（以下、単に「予期設定」ともいう。）としての値である。なお、図２のタスク列の値が１の場合は、ＢＰＭＮ（後述する）上のタスクは同期処理用タスクの１つに対応し、タスク列の値が0の場合は、ＢＰＭＮ上のタスクは、送信タスクと受信タスクとの２つに対応する。
【００３９】
（マッピング情報）
図９は、マッピング情報の一例を示す図であり、（ａ）は、現在実行中のワークフローＩＤと対応するワークフローグループＩＤのテーブル２２２ａの一例を示す図、（ｂ）は、同一のワークフローグループＩＤに含まれるグループＩＤと現在実行中のグループＩＤのテーブル２２２ｂの一例を示す図である。
【００４０】
実行を指示されたワークフローＩＤが図９（ａ）に示すテーブル２２２ａに含まれる場合、指示されたワークフローＩＤをそのまま使う。実行を指示されたワークフローＩＤが図９（ａ）に示すテーブル２２２ａに含まれない場合、上述の図２に示すワークフローパターンテーブル２２１から指示されたワークフローＩＤを取得する。この場合、図９（ａ）に示すテーブル２２２ａから、取得したワークフローグループＩＤに対応するワークフローＩＤを取得して使う。使われるワークフローＩＤを変更するときに、図９（ａ）に示すテーブル２２２ａ内の該当するワークフローグループＩＤの行（１行のみ）を変更する。
【００４１】
実行を指示されたワークフローＩＤに対応する実行中ワークフローＩＤを図９（ｂ）に示すテーブル２２２ｂから検索し、取得したＩＤを使う。使われるワークフローＩＤを変更するときに、図９（ｂ）に示すテーブル２２２ｂの実行中ワークフローＩＤが変更前のワークフローＩＤと等しい行を検索し、該当行の実行中ワークフローＩＤを変更後のワークフローＩＤに置換する。
【００４２】
新しいワークフローＩＤ（ＩＤ−０）が追加される場合、図２に示すワークフローパターンテーブル２２１からワークフローグループＩＤを検索キーとしてワークフローＩＤを1行のみ検索（ＩＤ−１）し、図９（ｂ）に示すテーブル２２２ｂからワークフローＩＤがＩＤ−１である行の実行中ワークフローＩＤ（ＩＤ−２）を抽出する。図９（ｂ）に示すテーブル２２２ｂに新しい行として、ワークフローＩＤがＩＤ−０で実行中ワークフローＩＤがＤＩ−２の行を追加する。
【００４３】
（実行方式について）
図３は、タスクの実行方式を模式的に説明する図であり、（ａ）は、同期処理方式の一例を示す図、（ｂ）は、非同期処理方式の一例を示す図である。実行方式には、例えば、ワークフロー制御プロセスと処理実行プロセスが連動している方式、具体的には、ワークフロー制御プロセスを停止すると、処理実行プロセスは停止または放置され、ワークフロー制御プロセスを再実行した時に、処理を再び最初から実行する方式（以下、「同期処理方式」ともいう。）と、ワークフロー制御プロセスと処理実行プロセスが連動していない方式、具体的には、処理の実行を依頼した後は受信タスクで処理の結果の待ち状態となり、ワークフロー制御プロセスを停止した後に再開した場合に停止したときの状態から再開する方式（以下、「非同期処理方式」ともいう。）が含まれる。同期処理方式は、第１の処理の方式の一例である。非同期処理方式は、第２の処理の方式の一例である。
【００４４】
同期処理方式では、実行指示手段２３０により直接的に処理部３に対してタスクの実行の指示を行う。具体的には、同期処理方式では、図３（ａ）に示すように、実行指示手段２３０が処理部３に対して直接的にタスクの開始依頼を行うとともに、処理部３が当該タスクの実行を終了した後に処理部３から送られる終了通知を受け取る。
【００４５】
また、同期処理方式では、処理部３は、実行指示手段２３０からの依頼に応じて実時間（すなわち、「リアルタイム」）で処理を実行する。また、開始依頼が行われると、処理部３は、タスクの実行を停止することなく終了するまで実行する。
【００４６】
非同期処理方式では、ジョブメッセージをキューイングサービス２４に一時的に滞留させ、送信手段２３１及び受信手段２３２によりキューイングサービス２４を介して間接的に処理部３に対してタスクの実行の指示を行う。具体的には、非同期処理方式では、図３（ｂ）に示すように、送信手段２３１がキューイングサービス２４にタスクの開始依頼を行う。開始依頼とともに送信されたジョブメッセージは、キューイングサービス２４のキュー内に一時的に滞留する。
【００４７】
キューイングサービス２４は、処理部３に対して、キュー内に滞留しているジョブメッセージに係るタスクの実行を開始する依頼を行う。処理部３は、タスクの実行を終了すると終了通知をキューイングサービス２４に返す。受信手段２３２は、キューイングサービス２４から送られる終了通知を受信する。
【００４８】
（実施の形態の動作）
次に、情報処理装置２の動作の一例について図４、図５及び図６を参照して説明する。
〔ワークフローのモデル〕
まず、動作の説明に用いるワークフローのモデルについて図４を参照して説明する。図４は、業務フローの一例を示すモデル図である。このモデル図は、業務プロセスを記述する方法であるＢＰＭＮ（Business Process Model and Notation）に基づいて作成したものである。業務フロー５は、ワークフローの一例である。なお、以下の動作の説明では、ワークフローとして図４に示す業務フロー５を例に挙げて説明するが、本実施の形態で適用されるワークフローは、図４に示す業務フロー５に限定されるものではない。
【００４９】
図４に示すように、業務フロー５は、複数のタスク５０（５０Ａ〜５０Ｊ）と、複数のタスクに係る選択肢の中から特定のタスク５０を選択する条件が定義された分岐５１とを含んで構築される。具体的には、業務フロー５は、文書データの開封及び仕分けに係る第１のタスク５０Ａ、スキャンに係る第２のタスク５０Ｂ、非同期処理方式で行われる帳票の認識に係る第３のタスク５０Ｃ、非同期処理方式で行われた帳票の認識の結果を受信する第４のタスク５０Ｄ、同期処理方式で行われる帳票の認識に係る第５のタスク５０Ｅ、ＯＣＲに係る第６のタスク５０Ｆ、ＯＣＲの結果の補正に係る第７のタスク５０Ｇ、データベース（単に、「ＤＢ」ともいう。）へのデータの登録に係る第８のタスク５０Ｈ、外部に納品するデータの作成に係る第９のタスク５０Ｉ、及びメールの送信に係る第１０のタスク５０Ｊを含む。
【００５０】
なお、上述したように、これら各タスク５０は、それぞれ対応する処理部３により実行される。また、図４に示す例では、帳票の認識に関するタスクについては、分岐５１により同期処理方式で実行される第３のタスク５０Ｃと、非同期処理方式により実行される第５のタスク５０Ｅとに分かれるものとする（破線枠参照。）。
【００５１】
分岐５１は、帳票の認識に関するタスクの実行方式を切り替える条件を含んで構成される。具体的には、タスクの実行方式を非同期処理方式から同期処理方式に切り替える第１の条件と、タスクの実行方式を同期処理方式から非同期処理方式に切り替える第２の条件とを含む。第１の条件は、例えば、上述した「予め定められた第１の条件」が該当する。第２の条件は、例えば、上述した「予め定められた第２の条件」が該当する。
【００５２】
注目するタスクの実行方式の初期設定（すなわち、ワークフローパターンテーブル２２１に記録された情報をいう。）が、同期処理方式か非同期処理方式かに分けて、より具体的に説明する。
【００５３】
（１）初期設定が非同期処理方式の場合
タスクの実行方式が非同期処理方式に設定されている場合、判定手段２０２は、実行履歴管理部２１から実行時間を取得し、取得した実行時間が上述した予め定められた第１の条件を満たすか否か判定する。実行時間が予め定められた第１の条件を満たす場合、切替手段２０３は、タスクの実行方式を非同期処理方式から同期処理方式に切り替えるとともに、切り替え後の新たなワークフローを作成する。
【００５４】
なお、実行時間が予め定められた第１の条件を満たさない場合は、ワークフローパターンテーブル２２１に初期設定として記録された実行方式に従って非同期処理方式でタスクが実行されるようになっている。
【００５５】
（２）初期設定が同期処理方式の場合
タスクの実行方式が同期処理方式に設定されている場合、判定手段２０２は、実行履歴管理部２１から、当該タスクを実行する処理部３でのタイムアウトの回数やリトライの回数に関する情報を取得し、タイムアウトの回数やリトライの回数が予め定められた第２の条件を満たすか否か、すなわち、予め定められた回数を超えるか否かを判定する。タイムアウトの回数やリトライの回数が予め定められた回数を超える場合、切替手段２０３は、タスクの実行方式を同期処理方式から非同期処理方式に切り替えるとともに、切り替え後の新たなワークフローを作成する。
【００５６】
なお、タイムアウトの回数やリトライの回数が予め定められた回数以下の場合は、ワークフローパターンテーブル２２１に初期設定として記録された実行方式に従って同期処理方式でタスクが実行されるようになっている。
【００５７】
〔記述言語〕
次に、図５及び図６を参照して、図４に示す業務フロー５を記述する記述言語について説明する。図５は、業務フローの記述言語の一例を示す図であり、（ａ）は、同期処理方式の例を示す図、（ｂ）は、非同期処理方式の例を示す図である。図６は、図４に示す業務フローに係る記述言語の一例を示す図である。記述言語６とは、業務フロー５を実行するための仕様を記述する方法の１つであり、予め定められたルールに従ってモデル図を変換して作成できるようになっている。なお、図５各図及び図６では、図４に示す業務フロー５を構築するタスク５０のうち、帳票の認識に係る第３のタスク５０Ｃ及び第５のタスク５０Ｅを例に挙げて説明する。
【００５８】
図５（ａ）に示すように、同期処理方式に係る記述言語（以下、「第１の記述言語」ともいう。）６Ａは、プロセス起動（又は開始依頼）を行う（６１）。
【００５９】
図５（ｂ）に示すように、非同期処理方式に係る記述言語（以下、「第２の記述言語」ともいう。）６Ｂは、キューイングサービスへのジョブメッセージの送信を行う（６２）。処理完了後に仲介サービス２５から返送される応答メッセージにジョブＩＤとメッセージ名（６３）を含めることで、応答メッセージ受信時にどのジョブのどのタスクを実行するかを判別することができる。
【００６０】
また、図６に示すように、同期処理方式及び非同期処理方式間の切り替えを行う分岐５１を含む記述言語（以下、「第３の記述言語」ともいう。）６Ｃは、同期処理方式及び非同期処理方式間の実行方式の切り替えを有効とするか無効とするかを示す変数６４をさらに含む。
【００６１】
この変数６４は、当該変数６４を宣言する文字列「Ｓｙｎｃ」と媒介変数とが「＝＝」等の演算子を挟んで記載されている。文字列「Ｓｙｎｃ」が、例えば「Ｔｒｕｅ」と設定されている場合、実行方式の切り替えが有効となり、例えば「Ｆａｌｓｅ」と設定されている場合、実行方式の切り替えが無効となるようになっている。
【００６２】
〔ユースケース〕
次に、実行方式の切り替えを行うユースケースについて、いくつかの具体的な事例を挙げて説明する。同期処理と非同期処理の切り替えについては、以下の２通りの実現方法がある。
１．切り替えパターンに応じてワークフローを管理し、選択された切り替えパターンのワークフローを実行する方法、及び
２．切り替えパターンが増える毎に、該当タスクを条件分岐適用パターンに変更したワークフローに更新し、条件分岐の条件式によって同期/非同期を切り替える方法。
【００６３】
図７は、実行時間の一例を模式的に説明する図である。図７（ａ）は、処理部３が、例えば、ＧＰＵ（Graphic Processing Unit）等の多重並列処理（「多重スレッド処理」ともいう。）を行わないケースにおける実行時間Ｔ１の一例を示し、図７（ｂ）は、処理部３が多重並列処理を行うケースのおける実行時間Ｔ２の一例を示す。図７各図に示すように、同期処理方式及び非同期処理方式のいずれにおいても、実行時間（Ｔ１，Ｔ２）は、滞留時間（ｔＳ１，ｔＳ２）と処理時間（ｔＰ１，ｔＰ２）との合計の時間として求められる。なお、滞留時間（ｔＳ１，ＴＳ２）には、ワークフロー制御部２３とキューイングサービス２４との間のメッセージのやり取りに要する通信時間を含むものとする。
【００６４】
図７（ａ）に示すように、例えば、多重並列処理を行わない場合に、滞留時間ｔＳ１が６秒で、処理時間ｔＰ１が６秒であるとする。この場合、実行時間Ｔ１は、６＋６＝１２秒となる。これに対して、図７（ｂ）に示すように、ＧＰＵによる多重並列処理を行ったときに、滞留時間（ｔＳ１，ｔＳ２）が６秒のままで、処理時間ｔＰ２が１／３の２秒に短縮できたとする。この場合、実行時間Ｔ２は、６＋２＝８秒となる。このようなケースでは、多重並列処理の導入によって処理時間ｔＰ２が１／３に短縮できたのにも関わらず、全体の実行時間Ｔ２は、必ずしも１／３には短縮されない。
【００６５】
以上のように、滞留時間（ｔＳ１，ｔＳ２）が実行時間（Ｔ１，Ｔ２）に対して占める割合が一定以上であることによって、多重並列処理の有無の間で実行時間（Ｔ１，Ｔ２）が期待したように短縮されないケースがある。このように、非同期処理方式で実行することがタスクの実行を早く完了するという観点から必ずしも優位とはいえないケースでは、当該タスクが非同期処理方式で行うように設定されている場合であっても同期処理方式に切り替えることを有効とする。
【００６６】
また、処理部３として充当されるサーバの台数は十分にあり、処理部３の稼働状況に余裕があるのにも関わらず、送信手段２３１によるキューイングサービス２４への開始依頼の送信から受信手段２３２による終了通知の受信まで大幅に時間がかかってしまうケースも同様に、当該タスクの実行方式を非同期処理方式から同期処理方式に切り替えることを有効とする。
【００６７】
上述のケースは、例えば、キューイングサービス２４でのジョブメッセージの滞留時間が長いことや、メッセージに動画等の大容量のコンテンツが付加されていることによって通信時間が長いこと（特に、暗号化や復号が含まれる場合）等の要因により生じ得る現象である。なお、前者のジョブメッセージの滞留時間が長くなることは、処理部３の粒度が細かくメッセージの数が一定以上の容量になることや、キューイングサービス２４の処理性能が低いことにより引き起こされ得る。
【００６８】
（３）同期処理方式から非同期処理方式への切り替え１（ユースケース３）
一方で、同期処理方式において、例えば、処理部３が常時フル稼働状態になることにより、処理部３に処理を依頼してもビジー状態のためエラーが返る頻度が多くなり、エラーの原因を解消するために人手が必要になるケースがある。
【００６９】
このようなケースでは、処理部３に同時に依頼される処理の数が多くなるため、例えば、処理部３に同時に処理すべきタスクの数の上限が予め規定されていないような場合、当該処理部３からのレスポンスが停滞し、処理が進まない原因が処理部３のエラーによるものか否かを判断できなくなる場合がある。また、このような場合に、ユーザが処理の再実行をしてしまうことがあり、さらに同時に処理すべきタスクの数が多くなるという悪循環が発生し得る。
【００７０】
以上のような、同期処理方式で実行することが処理部３にかかる負担を軽減する観点から必ずしも優位とはいえないケースでは、当該タスクの実行方式を同期処理方式から非同期処理方式に切り替えることを有効とする。
【００７１】
（４）同期処理方式から非同期処理方式への切り替え２（ユースケース４）
また、処理部３による処理時間がタスクに対して設定されたタイムアウト時間や通信に対して設定されたタイムアウト時間を超えるケースについても同様に、当該タスクの実行方式を同期処理方式から非同期処理方式に切り替えることを有効とする。なお、かかるケースは、例えば、処理部３が動作する環境上に別の常駐サービスが同居することになり、処理部３に対してタスクの実行に割り当てられるメモリの容量やＣＰＵの占有率が小さくなる場合や、処理部３によるタスクの実行がクラウドサービスよりも性能が低いＶＭ（Virtual Machine）上で実行される場合等に生じ得る。
【００７２】
〔フローチャート〕
次に、上述した情報処理装置２の動作のフローをフローチャートにまとめる。図８は、図１に示す情報処理装置２の動作の一例を示すフローチャートである。図８に示すように、まず、生成手段２０１は、ユーザの指示に応じて、業務フロー５を生成する（Ｓ１）。このとき、生成された業務フロー５が新規の場合（Ｓ２：Ｙｅｓ）、当該業務フロー５を構築する各タスクの実行方式の情報がワークフローパターンテーブル２２１に記録される（Ｓ３）。なお、好ましくは、業務フロー５を生成する前に、生成しようとする同期パターン又は非同期パターンの業務フロー５が登録済みかどうかを確認し、登録されていない場合のみ業務フロー５を生成するようにしてもよい。
【００７３】
次に、生成された業務フロー５の中に、同期処理方式及び非同期処理方式の間の切り替えが有効なタスクが含まれている場合、マッピング手段２００は、当該タスクの切り替え前後のＩＤをマッピング情報に追加する（Ｓ４）。
【００７４】
当該タスクが条件分岐パラメータ（Ｓｙｎｃｙ）により非同期処理方式に設定されている場合（Ｓ５：非同期）、判定手段２０２は、処理部３での当該タスクの実行時間が予め定められた第１の条件を満たすか否か判定する（Ｓ６）。
【００７５】
処理部３での当該タスクの実行時間が予め定められた第１の条件を満たす場合（Ｓ６：Ｙｅｓ）、切替手段２０３は、タスクの実行方式を非同期処理方式から同期処理方式に切り替える（Ｓ７）。
【００７６】
当該タスクが初期設定として同期処理方式に設定されている場合（Ｓ５：同期）、判定手段２０２は、タイムアウトの回数やリトライの回数が予め定められた第２の条件を満たすか否か、すなわち予め定められた回数を超えるか否かを判定する（Ｓ８）。
【００７７】
タイムアウトの回数やリトライの回数が予め定められた回数を超える場合（Ｓ８：Ｙｅｓ）、切替手段２０３は、タスクの実行方式を同期処理方式から非同期処理方式に切り替える（Ｓ９）。
【００７８】
次に、ワークフロー制御部２３は、ワークフローパターンテーブル２２１を参照してタスクごとに処理を実行する。具体的には、実行しようとしているタスクの実行方式が同期処理方式に設定されている場合（Ｓ１０：同期）、実行指示手段２３０は、対応する処理部３に対して当該タスクの実行を指示する（Ｓ１１）。
【００７９】
実行しようとしているタスクの実行方式が非同期処理方式に設定されている場合（Ｓ１０：非同期）、送信手段２３１は、キューイングサービス２４に当該タスクの実行の開始依頼を送信する（Ｓ１２）。また、受信手段２３２は、キューイングサービス２４から当該タスクの終了通知を受信する（Ｓ１３）。
【００８０】
上述のステップＳ５からＳ１３は、業務フロー５を構築する最後のタスクが実行されるまで（Ｓ１４：Ｎｏ）、繰り返して実行される。
【００８１】
以上、本発明の実施の形態を説明したが、本発明の実施の形態は上記実施の形態に限定されるものではなく、本発明の要旨を変更しない範囲内で種々の変形、実施が可能である。例えば、ワークフロー管理部２０、実行履歴管理部２１及びワークフロー制御部２３の各手段は、それぞれ一部又は全部を再構成可能回路（ＦＰＧＡ：Field Programmable Gate Array）、特定用途向け集積回路（ＡＳＩＣ：Application Specific Integrated Circuit）等のハードウエア回路によって構成してもよい。
【００８２】
また、本発明の要旨を変更しない範囲内で、上記実施の形態の構成要素の一部を省くことや変更することが可能である。また、本発明の要旨を変更しない範囲内で、上記実施の形態のフローにおいて、ステップの追加、削除、変更、入替え等が可能である。また、上記実施の形態で用いたプログラムをＣＤ−ＲＯＭ等のコンピュータで読み取り可能な記録媒体に記録して提供することができ、クラウドサーバ等の外部サーバに格納しておき、ネットワークを介して利用することもできる。
【００８３】
以上、本発明の実施の形態を説明したが、本発明の実施の形態は上記実施の形態に限定されるものではなく、本発明の要旨を変更しない範囲内で種々の変形、実施が可能である。例えば、ワークフロー管理部２０、実行履歴管理部２１及びワークフロー制御部２３の各手段は、それぞれ一部又は全部を再構成可能回路（ＦＰＧＡ：Field Programmable Gate Array）、特定用途向け集積回路（ＡＳＩＣ：Application Specific Integrated Circuit）等のハードウエア回路によって構成してもよい。
【００８４】
また、本発明の要旨を変更しない範囲内で、上記実施の形態の構成要素の一部を省くことや変更することが可能である。また、本発明の要旨を変更しない範囲内で、上記実施の形態のフローにおいて、ステップの追加、削除、変更、入替え等が可能である。また、上記実施の形態で用いたプログラムをＣＤ−ＲＯＭ等のコンピュータで読み取り可能な記録媒体に記録して提供することができ、クラウドサーバ等の外部サーバに格納しておき、ネットワークを介して利用することもできる。
【符号の説明】
【００８５】
１…情報処理システム
２…情報処理装置
２０…ワークフロー管理部
２００…マッピング手段
２０１…生成手段
２０２…判定手段
２０３…切替手段
２１…実行履歴管理部
２１０…滞留時間測定手段
２１１…処理時間測定手段
２２…記憶部
２２０…プログラム
２２１…ワークフローパターンテーブル
２３…ワークフロー制御部
２３０…実行指示手段
２３１…送信手段
２３２…受信手段
２４…キューイングサービス
２５…仲介サービス
３，３Ａ，３Ｂ…処理部
５…業務フロー
５０，５０Ａ〜５０Ｊ…タスク
５１…分岐
６…記述言語
６１…処理部指示メッセージ
６２…送信メッセージ
６３…受信メッセージ
６４…変数
【図１】
2020170331.tif 000003
【図２】
2020170331.tif 000004
【図３】
2020170331.tif 000005
【図４】
2020170331.tif 000006
【図５】
2020170331.tif 000007
【図６】
2020170331.tif 000008
【図７】
2020170331.tif 000009
【図８】
2020170331.tif 000010
【図９】
2020170331.tif 000011