(57)【要約】【課題】一連の処理でエラーが発生する場合における待ち時間を削減する。【解決手段】所定の処理を実行する複数のプログラムを有する情報処理システムであって、電子データを用いた一連の処理毎に、プログラム識別情報と、前記プログラムの実行順とが定義されたフロー情報を、フロー識別情報と関連付けて記憶する記憶手段と、電子データに関する情報と、フロー識別情報とを受信する受信手段と、受信した前記フロー識別情報と関連付けられているフロー情報を取得する取得手段と、取得した前記フロー情報に定義されている前記プログラム識別情報の前記プログラムそれぞれを、前記実行順に従って仮実行させて、前記一連の処理を仮実行する仮実行手段と、仮実行でエラーが発生しなかった場合、前記フロー情報に定義されている前記プログラム識別情報の前記プログラムそれぞれを、前記実行順に従って実行させて、前記一連の処理を実行する実行手段と、を有する。【選択図】図１２
2018037746.tif 000002
【特許請求の範囲】
【請求項１】
１以上の情報処理装置を含み、所定の処理をそれぞれ実行する複数のプログラムを有する情報処理システムであって、
電子データを用いた一連の処理毎に、該一連の処理のそれぞれの処理を実行する１以上の前記プログラムを識別するプログラム識別情報と、１以上の前記プログラムの実行順とが定義されたフロー情報を、該フロー情報を識別するフロー識別情報と関連付けて記憶する記憶手段と、
前記情報処理システムに接続される１以上の機器のうちの一の機器から、電子データに関する情報と、フロー識別情報とを受信する受信手段と、
前記記憶手段に記憶されているフロー情報のうち、前記受信手段により受信された前記フロー識別情報と関連付けて前記記憶手段に記憶されているフロー情報を取得する取得手段と、
前記取得手段により取得された前記フロー情報に定義されている前記プログラム識別情報により識別される前記プログラムそれぞれを、前記フロー情報に定義されている前記実行順に従って仮実行させることで、前記受信手段により受信された前記電子データに関する情報に基づく電子データを用いた前記一連の処理を仮実行する仮実行手段と、
前記仮実行手段による前記一連の処理の仮実行でエラーが発生しなかった場合、前記取得手段により取得された前記フロー情報に定義されている前記プログラム識別情報により識別される前記プログラムそれぞれを、前記フロー情報に定義されている前記実行順に従って実行させることで、前記受信手段により受信された前記電子データに関する情報に基づく電子データを用いた前記一連の処理を実行する実行手段と、
を有する情報処理システム。
【請求項２】
前記実行手段は、
前記仮実行手段による前記一連の処理の仮実行でエラーが発生した場合、前記一連の処理を実行せずに、前記エラーの発生を前記一の機器に通知する、請求項１に記載の情報処理システム。
【請求項３】
前記フロー情報には、更に、１以上の前記プログラムそれぞれの実行に用いられるパラメータ情報が定義され、
前記仮実行は、前記プログラムの実行に用いられる前記パラメータ情報が、該プログラムでサポートされているか否かを確認するための処理を実行することである、請求項１又は２に記載の情報処理システム。
【請求項４】
前記仮実行は、前記プログラムの実行に用いられる前記電子データの数、前記電子データに含まれるページ数、及び前記電子データのサイズの少なくとも１つが、それぞれ予め設定された所定の上限値を超えているか否かを確認するための処理を実行することである、請求項１乃至３の何れか一項に記載の情報処理システム。
【請求項５】
前記プログラムには、外部サービスに関する処理を実行する外部サービスプログラムを含み、
前記外部サービスプログラムには、
外部サービスに電子データをアップロードする処理を実行するプログラムを少なくとも含む、請求項１乃至４の何れか一項に記載の情報処理システム。
【請求項６】
前記実行順は、前記フロー情報において前記プログラム識別情報が定義されている順である、請求項１乃至５の何れか１項に記載の情報処理システム。
【請求項７】
所定の処理をそれぞれ実行する複数のプログラムを有する情報処理装置であって、
電子データを用いた一連の処理毎に、該一連の処理のそれぞれの処理を実行する１以上の前記プログラムを識別するプログラム識別情報と、１以上の前記プログラムの実行順とが定義されたフロー情報を、該フロー情報を識別するフロー識別情報と関連付けて記憶する記憶手段と、
前記情報処理装置に接続される１以上の機器のうちの一の機器から、電子データに関する情報と、フロー識別情報とを受信する受信手段と、
前記記憶手段に記憶されているフロー情報のうち、前記受信手段により受信された前記フロー識別情報と関連付けて前記記憶手段に記憶されているフロー情報を取得する取得手段と、
前記取得手段により取得された前記フロー情報に定義されている前記プログラム識別情報により識別される前記プログラムそれぞれを、前記フロー情報に定義されている前記実行順に従って仮実行させることで、前記受信手段により受信された前記電子データに関する情報に基づく電子データを用いた前記一連の処理を仮実行する仮実行手段と、
前記仮実行手段による前記一連の処理の仮実行でエラーが発生しなかった場合、前記取得手段により取得された前記フロー情報に定義されている前記プログラム識別情報により識別される前記プログラムそれぞれを、前記フロー情報に定義されている前記実行順に従って実行させることで、前記受信手段により受信された前記電子データに関する情報に基づく電子データを用いた前記一連の処理を実行する実行手段と、
を有する情報処理装置。
【請求項８】
１以上の情報処理装置を含み、所定の処理をそれぞれ実行する複数のプログラムを有する情報処理システムであって、電子データを用いた一連の処理毎に、該一連の処理のそれぞれの処理を実行する１以上の前記プログラムを識別するプログラム識別情報と、１以上の前記プログラムの実行順とが定義されたフロー情報を、該フロー情報を識別するフロー識別情報と関連付けて記憶する記憶手段を有する情報処理システムに用いられる情報処理方法において、
前記情報処理システムに接続される１以上の機器のうちの一の機器から、電子データに関する情報と、フロー識別情報とを受信する受信手順と、
前記記憶手段に記憶されているフロー情報のうち、前記受信手順により受信された前記フロー識別情報と関連付けて前記記憶手段に記憶されているフロー情報を取得する取得手順と、
前記取得手順により取得された前記フロー情報に定義されている前記プログラム識別情報により識別される前記プログラムそれぞれを、前記フロー情報に定義されている前記実行順に従って仮実行させることで、前記受信手順により受信された前記電子データに関する情報に基づく電子データを用いた前記一連の処理を仮実行する仮実行手順と、
前記仮実行手順による前記一連の処理の仮実行でエラーが発生しなかった場合、前記取得手順により取得された前記フロー情報に定義されている前記プログラム識別情報により識別される前記プログラムそれぞれを、前記フロー情報に定義されている前記実行順に従って実行させることで、前記受信手順により受信された前記電子データに関する情報に基づく電子データを用いた前記一連の処理を実行する実行手順と、
を有する情報処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理システム、情報処理装置、及び情報処理方法に関する。
【背景技術】
【０００２】
近年、複数の機能（例えば、スキャンやプリント、外部サービスへのアップロード等）を組み合わせた機能を提供するサービスが知られるようになった。例えば、スキャンにより生成された電子データを外部サービスにアップロードするサービス等が知られている。このようなサービスは、各機能を実現する１以上の処理が一連の処理として実行されることにより実現される。
【０００３】
また、１以上の処理を一連の処理として表した処理情報等が含まれる指示書に基づいて、当該一連の処理を実行する画像形成装置が知られている（例えば特許文献１参照）。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、上記の従来技術においては、一連の処理でエラー等が発生する場合、エラー等の発生がユーザに通知されるまでに時間を要することがあった。すなわち、例えば、一連の処理に含まれる各処理のうち、当該一連の処理の最後に実行される処理でエラー等が発生する場合、ユーザは、当該最後の処理が実行され、当該エラー等が通知されるまで待つ必要があった。
【０００５】
本発明の実施の形態は、上記の点に鑑みてなされたもので、一連の処理でエラーが発生する場合における待ち時間を削減することを目的とする。
【課題を解決するための手段】
【０００６】
上記目的を達成するため、本発明の実施の形態は、１以上の情報処理装置を含み、所定の処理をそれぞれ実行する複数のプログラムを有する情報処理システムであって、電子データを用いた一連の処理毎に、該一連の処理のそれぞれの処理を実行する１以上の前記プログラムを識別するプログラム識別情報と、１以上の前記プログラムの実行順とが定義されたフロー情報を、該フロー情報を識別するフロー識別情報と関連付けて記憶する記憶手段と、前記情報処理システムに接続される１以上の機器のうちの一の機器から、電子データに関する情報と、フロー識別情報とを受信する受信手段と、前記記憶手段に記憶されているフロー情報のうち、前記受信手段により受信された前記フロー識別情報と関連付けて前記記憶手段に記憶されているフロー情報を取得する取得手段と、前記取得手段により取得された前記フロー情報に定義されている前記プログラム識別情報により識別される前記プログラムそれぞれを、前記フロー情報に定義されている前記実行順に従って仮実行させることで、前記受信手段により受信された前記電子データに関する情報に基づく電子データを用いた前記一連の処理を仮実行する仮実行手段と、前記仮実行手段による前記一連の処理の仮実行でエラーが発生しなかった場合、前記取得手段により取得された前記フロー情報に定義されている前記プログラム識別情報により識別される前記プログラムそれぞれを、前記フロー情報に定義されている前記実行順に従って実行させることで、前記受信手段により受信された前記電子データに関する情報に基づく電子データを用いた前記一連の処理を実行する実行手段と、を有する。
【発明の効果】
【０００７】
本発明の実施の形態によれば、一連の処理でエラーが発生する場合における待ち時間を削減することができる。
【図面の簡単な説明】
【０００８】
【図１】本実施形態に係る情報処理システムの一例のシステム構成を示す図である。
【図２】本実施形態に係るサービス提供システムの一例のハードウェア構成を示す図である。
【図３】本実施形態に係る機器の一例のハードウェア構成を示す図である。
【図４】本実施形態に係る情報処理システムの一例の機能構成を示す図である。
【図５】共通Ｉ／Ｆ及び固有Ｉ／Ｆの一例を説明するための図である。
【図６】本実施形態に係るロジック処理部の一例の機能構成を示す図である。
【図７】型変換情報テーブルの一例を示す図である。
【図８】処理フロー情報の一例を示す図である。
【図９】本実施形態に係る「ＯＣＲ配信Ａ」サービスの全体処理の一例を示すシーケンス図である。
【図１０】画面情報の一例を示す図である。
【図１１】アプリ画面の一例を示す図である。
【図１２】本実施形態に係る処理フローの実行処理の一例を示すシーケンス図である。
【図１３】本実施形態に係るＯＣＲコンポーネントの仮実行処理の一例を示すシーケンス図である。
【図１４】本実施形態に係る配信Ａコンポーネントの仮実行処理の一例を示すシーケンス図である。
【図１５】本実施形態に係るＯＣＲコンポーネントの正式実行処理の一例を示すシーケンス図である。
【図１６】本実施形態に係る配信Ａコンポーネントの正式実行処理の一例を示すシーケンス図である。
【図１７】本実施形態に係る処理フローの実行処理の他の例を示すシーケンス図である。
【発明を実施するための形態】
【０００９】
以下、本発明の実施形態について、図面を参照しながら説明する。
【００１０】
＜システム構成＞
まず、本実施形態に係る情報処理システム１のシステム構成について、図１を参照しながら説明する。図１は、本実施形態に係る情報処理システム１の一例のシステム構成を示す図である。
【００１１】
図１に示す情報処理システム１は、サービス提供システム１０と、機器２０と、外部ストレージシステム３０とを含み、インターネット等の広域的なネットワークＮ１を介して通信可能に接続されている。
【００１２】
サービス提供システム１０は、一台以上の情報処理装置で実現され、ネットワークＮ１を介して、クラウドサービス等の外部サービスと連携した一連の処理により実現される各種のサービスを提供する。
【００１３】
本実施形態に係るサービス提供システム１０が提供するサービスの具体例については後述する。なお、以降では、一連の処理を「処理フロー」とも表す。
【００１４】
なお、本実施形態では、外部サービスの具体例としてクラウドサービスを採用して説明するが、これに限られない。本実施形態は、例えば、ＡＳＰ（Application Service Provider）によって提供されるサービスやＷｅｂサービス等のネットワークを介して提供される各種の外部サービスに関して適用されても良い。
【００１５】
機器２０は、ユーザが使用する各種の電子機器である。すなわち、機器２０は、例えば、ＭＦＰ（Multifunction Peripheral）等の画像形成装置、ＰＣ（パーソナルコンピュータ）、プロジェクタ、電子黒板、デジタルカメラ等である。ユーザは、機器２０を用いて、サービス提供システム１０が提供する各種のサービスを利用することができる。
【００１６】
なお、以降では、複数の機器２０について、各々を区別するときは、「機器２０１」、「機器２０２」等と添え字を用いて記載する。
【００１７】
外部ストレージシステム３０は、ネットワークＮ１を介してストレージサービス（又はオンラインストレージ）と呼ばれるクラウドサービスを提供するコンピュータシステムである。ストレージサービスとは、外部ストレージシステム３０のストレージの記憶領域を貸し出すサービスである。
【００１８】
なお、以降では、複数の外部ストレージシステム３０について、各々を区別するときは、「外部ストレージシステム３０１」、「外部ストレージシステム３０２」等と添え字を用いて記載する。また、外部ストレージシステム３０１により提供されるストレージサービスの名称を「ストレージＡ」、外部ストレージシステム３０１により提供されるストレージサービスの名称を「ストレージＢ」等とする。
【００１９】
なお、外部ストレージシステム３０は、複数台の情報処理装置によって実現されるシステムであっても良い。
【００２０】
また、図１に示す情報処理システム１の構成は一例であって、他の構成であっても良い。例えば、本実施形態に係る情報処理システム１には、電子データの入力及び出力の少なくとも一方を行う各種機器が含まれ、これらの機器がサービス提供システム１０により提供される各種サービスを利用しても良い。
【００２１】
＜ハードウェア構成＞
次に、本実施形態に係る情報処理システム１に含まれるサービス提供システム１０のハードウェア構成について、図２を参照しながら説明する。図２は、本実施形態に係るサービス提供システム１０の一例のハードウェア構成を示す図である。
【００２２】
図２に示すサービス提供システム１０は、入力装置１１と、表示装置１２と、外部Ｉ／Ｆ１３と、ＲＡＭ（Random Access Memory）１４とを有する。また、サービス提供システム１０は、ＲＯＭ（Read Only Memory）１５と、ＣＰＵ（Central Processing Unit）１６と、通信Ｉ／Ｆ１７と、ＨＤＤ（Hard Disk Drive）１８とを有する。これらの各ハードウェアは、それぞれがバスＢで接続されている。
【００２３】
入力装置１１は、キーボードやマウス、タッチパネル等を含み、ユーザが各操作信号を入力するのに用いられる。表示装置１２は、ディスプレイ等を含み、サービス提供システム１０による処理結果を表示する。なお、入力装置１１及び表示装置１２の少なくとも一方は、必要なときにサービス提供システム１０に接続して利用する形態であっても良い。
【００２４】
通信Ｉ／Ｆ１７は、サービス提供システム１０をネットワークＮ１に接続するインタフェースである。これにより、サービス提供システム１０は、通信Ｉ／Ｆ１７を介して通信を行うことができる。
【００２５】
ＨＤＤ１８は、プログラムやデータを格納している不揮発性の記憶装置である。ＨＤＤ１８に格納されるプログラムやデータには、サービス提供システム１０全体を制御する基本ソフトウェアであるＯＳ（Operating System）、ＯＳ上において各種機能を提供するアプリケーションソフトウェア等がある。
【００２６】
なお、サービス提供システム１０は、ＨＤＤ１８に代え、記憶媒体としてフラッシュメモリを用いるドライブ装置（例えばソリッドステートドライブ：ＳＳＤ）を利用するものであっても良い。また、ＨＤＤ１８は、格納しているプログラムやデータを所定のファイルシステム及び／又はＤＢにより管理している。
【００２７】
外部Ｉ／Ｆ１３は、外部装置とのインタフェースである。外部装置には、記録媒体１３ａ等がある。これにより、サービス提供システム１０は、外部Ｉ／Ｆ１３を介して記録媒体１３ａの読み取りや書き込みを行うことができる。記録媒体１３ａには、フレキシブルディスク、ＣＤ、ＤＶＤ、ＳＤメモリカード、ＵＳＢメモリ等がある。
【００２８】
ＲＯＭ１５は、電源を切ってもプログラムやデータを保持することができる不揮発性の半導体メモリである。ＲＯＭ１５には、サービス提供システム１０の起動時に実行されるＢＩＯＳ（Basic Input/Output System）、ＯＳ設定、及びネットワーク設定等のプログラムやデータが格納されている。ＲＡＭ１４は、プログラムやデータを一時保持する揮発性の半導体メモリである。
【００２９】
ＣＰＵ１６は、ＲＯＭ１５やＨＤＤ１８等の記憶装置からプログラムやデータをＲＡＭ１４上に読み出し、処理を実行することで、サービス提供システム１０全体の制御や機能を実現する演算装置である。
【００３０】
本実施形態に係るサービス提供システム１０は、図２に示すハードウェア構成を有することにより、後述するような各種処理を実現できる。
【００３１】
次に、本実施形態に係る情報処理システム１に含まれる機器２０が画像形成装置である場合のハードウェア構成について、図３を参照しながら説明する。図３は、本実施形態に係る機器２０の一例のハードウェア構成を示す図である。
【００３２】
図３に示す機器２０は、コントローラ２１と、操作パネル２２と、外部Ｉ／Ｆ２３と、通信Ｉ／Ｆ２４と、プリンタ２５と、スキャナ２６とを有する。また、コントローラ２１は、ＣＰＵ３１と、ＲＡＭ３２と、ＲＯＭ３３と、ＮＶＲＡＭ３４と、ＨＤＤ３５とを有する。
【００３３】
ＲＯＭ３３は、各種プログラムやデータを格納している不揮発性の半導体メモリである。ＲＡＭ３２は、プログラムやデータを一時保持する揮発性の半導体メモリである。ＮＶＲＡＭ３４は、例えば設定情報等を格納している。また、ＨＤＤ３５は、各種プログラムやデータを格納している不揮発性の記憶装置である。
【００３４】
ＣＰＵ３１は、ＲＯＭ３３やＮＶＲＡＭ３４、ＨＤＤ３５等からプログラムやデータ、設定情報等をＲＡＭ３２上に読み出し、処理を実行することで、機器２０全体の制御や機能を実現する演算装置である。
【００３５】
操作パネル２２は、ユーザからの入力を受け付ける入力部と、表示を行う表示部とを備えている。外部Ｉ／Ｆ２３は、外部装置とのインタフェースである。外部装置には、記録媒体２３ａ等がある。これにより、機器２０は、外部Ｉ／Ｆ２３を介して記録媒体２３ａの読み取り及び／又は書き込みを行うことができる。なお、記録媒体２３ａには、例えば、ＩＣカード、フレキシブルディスク、ＣＤ、ＤＶＤ、ＳＤメモリカード、ＵＳＢメモリ等がある。
【００３６】
通信Ｉ／Ｆ２４は、機器２０をネットワークに接続するインタフェースである。これにより、機器２０は、通信Ｉ／Ｆ２４を介して通信を行うことができる。プリンタ２５は、印刷データを印刷する印刷装置である。スキャナ２６は、原稿を読み取って電子ファイル（画像ファイル）を生成する読取装置である。
【００３７】
本実施形態に係る機器２０は、図３に示すハードウェア構成を有することにより、後述するような各種処理を実現できる。
【００３８】
＜サービス提供システムが提供するサービス＞
ここで、本実施形態に係るサービス提供システム１０が提供するサービスについて説明する。なお、以降では、機器２０が画像形成装置であるものとして説明する。
【００３９】
本実施形態に係るサービス提供システム１０は、例えば、機器２０において原稿をスキャンして生成された電子ファイルをＯＣＲ（Optical Character Recognition）処理した後、外部ストレージシステム３０１（ストレージＡ）に保存するサービスを提供する。
【００４０】
本実施形態に係るサービス提供システム１０は、上述したサービス（以降では、「ＯＣＲ配信Ａ」サービスとも表す。）を提供するものとして説明する。
【００４１】
ただし、サービス提供システム１０により提供されるサービスは、これに限られない。例えば、サービス提供システム１０は、機器２０において原稿をスキャンして生成された電子ファイルをＯＣＲ処理した後、所定のメールアドレス宛にメール送信するサービスを提供しても良い。また、例えば、サービス提供システム１０は、外部ストレージシステム３０に保存されている電子ファイルを、機器２０で印刷するサービスを提供しても良い。
【００４２】
＜機能構成＞
次に、本実施形態に係る情報処理システム１の機能構成について、図４を参照しながら説明する。図４は、本実施形態に係る情報処理システム１の一例の機能構成を示す図である。
【００４３】
図４に示す機器２０は、例えばＣＰＵ３１等により実行されるウェブブラウザ２１０（以降では、単に「ブラウザ２１０」と表す。）を有する。機器２０のユーザは、ブラウザ２１０を用いて、サービス提供システム１０が提供するサービスを利用することができる。
【００４４】
このように、本実施形態に係る機器２０には、ブラウザ２１０が搭載されていれば良い。したがって、本実施形態に係る機器２０では、例えば、サービス提供システム１０が提供するサービスを利用するための専用のアプリケーションプログラム等を搭載する必要がない。
【００４５】
図４に示すサービス提供システム１０は、入出力サービス処理部１１０と、Ｗｅｂサービス処理部１２０と、ドキュメントサービス部１３０と、外部サービス連携部１４０とを有する。これら各機能部は、サービス提供システム１０にインストールされた１以上のプログラムが、ＣＰＵ１６に実行させる処理により実現される。
【００４６】
また、サービス提供システム１０は、アプリ情報記憶部１５０と、画面情報記憶部１６０とを有する。これら各記憶部は、ＨＤＤ１８により実現可能である。なお、アプリ情報記憶部１５０及び画面情報記憶部１６０の少なくとも一方が、サービス提供システム１０とネットワークを介して接続される記憶装置等により実現されていても良い。
【００４７】
入出力サービス処理部１１０は、サービス提供システム１０が提供するサービスに関する処理を行う。ここで、入出力サービス処理部１１０は、アプリ管理部１１１と、ロジック処理部１１２と、データＩ／Ｆ部１１３とを有する。
【００４８】
アプリ管理部１１１は、アプリ情報記憶部１５０に記憶されているアプリ情報１０００を管理する。なお、アプリ情報１０００とは、一連の処理により実現されるサービスを提供するためのアプリケーションである。すなわち、サービス提供システム１０が提供する各種のサービスは、アプリ情報１０００により提供される。
【００４９】
また、アプリ管理部１１１は、ロジック処理部１１２からの要求に応じて、アプリ情報１０００に含まれる処理フロー情報１１００を返信する。なお、処理フロー情報１１００とは、アプリ情報１０００により提供されるサービスを実現する一連の処理が定義された情報である。
【００５０】
ロジック処理部１１２は、Ｗｅｂサービス処理部１２０からの要求に応じて、アプリ情報１０００に含まれる処理フロー情報１１００をアプリ管理部１１１から取得する。そして、ロジック処理部１１２は、アプリ管理部１１１から取得した処理フロー情報１１００に基づいて、当該アプリ情報１０００が提供するサービスを実現する一連の処理（処理フロー）を実行する。これにより、本実施形態に係るサービス提供システム１０は、各種のサービスを提供することができる。なお、ロジック処理部１１２の詳細については後述する。
【００５１】
データＩ／Ｆ部１１３は、Ｗｅｂサービス処理部１２０からの要求に応じて、外部サービス連携部１４０のデータ処理部１４２に対して、各種の要求（例えば、フォルダ一覧の取得要求等）を行う。
【００５２】
Ｗｅｂサービス処理部１２０は、ブラウザ２１０からの要求に応じて、画面情報記憶部１６０に記憶されている画面情報２０００を返信する。なお、画面情報２０００とは、アプリ情報１０００により提供されるサービスを利用するための画面（アプリ画面）が定義された情報である。画面情報２０００は、例えば、ＨＴＭＬ（HyperText Markup Language）、ＸＨＴＭＬ（Extensible HyperText Markup Language）、ＣＳＳ（Cascading Style Sheets）、ＪａｖａＳｃｒｉｐｔ（登録商標）等のブラウザ２１０が解釈可能な形式でアプリ画面が定義されている。
【００５３】
これにより、機器２０の操作パネル２２には、ブラウザ２１０により、サービス提供システム１０が提供するサービスを利用するためのアプリ画面が表示される。
【００５４】
また、Ｗｅｂサービス処理部１２０は、ブラウザ２１０からの要求に応じて、入出力サービス処理部１１０に対して、各種の要求を行う。例えば、Ｗｅｂサービス処理部１２０は、ブラウザ２１０からの要求に応じて、「ＯＣＲ配信Ａ」サービスを実現する処理フローの実行要求を、入出力サービス処理部１１０のロジック処理部１１２に行う。
【００５５】
ドキュメントサービス部１３０は、処理フロー情報１１００に基づく一連の処理（処理フロー）に含まれる所定の処理を実行する。ここで、ドキュメントサービス部１３０は、ＯＣＲ処理部１３１を有する。ＯＣＲ処理部１３１は、電子ファイル（画像ファイル）に対してＯＣＲ処理を行う。
【００５６】
なお、ドキュメントサービス部１３０は、例えば、電子ファイルのデータ形式を所定のデータ形式に変換するデータ変換部、電子ファイルを圧縮又は解凍する圧縮・解凍部、電子ファイルを添付したメールを送信するメール送信部等を有していても良い。
【００５７】
このように、ドキュメントサービス部１３０には、一連の処理（処理フロー）に含まれる所定の処理を実行する種々の機能部が含まれる。したがって、ドキュメントサービス部１３０は、これら種々の機能を提供するプログラム（モジュール）群により実現される。
【００５８】
外部サービス連携部１４０は、ロジック処理部１１２やデータＩ／Ｆ部１１３からの要求に応じて、外部ストレージシステム３０に対して、各種の要求（例えば、フォルダ一覧の取得要求等）を行う。
【００５９】
本実施形態に係るサービス提供システム１０は、当該サービス提供システム１０と連携して処理を行う外部ストレージシステム３０毎に、それぞれの外部ストレージシステム３０に対応する外部サービス連携部１４０を有する。すなわち、本実施形態に係るサービス提供システム１０は、外部ストレージシステム３０１に対して各種の要求を行うための外部サービス連携部１４０１を有する。同様に、本実施形態に係るサービス提供システム１０は、外部ストレージシステム３０２に対して各種の要求を行うための外部サービス連携部１４０２等を有する。
【００６０】
なお、以降では、複数の外部サービス連携部１４０について、各々を区別するときは、上記のように、「外部サービス連携部１４０１」、「外部サービス連携部１４０２」等と添え字を用いて表す。
【００６１】
ここで、外部サービス連携部１４０は、ロジック処理部１１２からの要求を受信するファイル処理部１４１と、データＩ／Ｆ部１１３からの要求を受信するデータ処理部１４２とを有する。
【００６２】
ファイル処理部１４１は、外部ストレージシステム３０に保存されている電子ファイルに対する操作（例えば、取得、保存、編集等）を行うためのＡＰＩ（Application Programming Interface）が定義された共通Ｉ／Ｆ１４１１及び固有Ｉ／Ｆ１４１２を有する。
【００６３】
共通Ｉ／Ｆ１４１１は、複数の外部ストレージシステム３０間で共通に利用できるＡＰＩであり、例えば図５（ａ）に示すＡＰＩが挙げられる。すなわち、ファイル処理部１４１の共通Ｉ／Ｆ１４１１は、全ての外部ストレージシステム３０が利用できるファイル操作に関する機能（例えば、ファイルの取得、保存等）を利用するためのＡＰＩ群である。
【００６４】
一方、固有Ｉ／Ｆ１４１２は、ある特定の外部ストレージシステム３０において利用できるＡＰＩであり、例えば図５（ｂ）に示すＡＰＩが挙げられる。すなわち、ファイル処理部１４１の固有Ｉ／Ｆ１４１２は、ある特定の外部ストレージシステム３０において利用できるファイル操作に関する機能（例えば、ドキュメントにファイルを付加等）を利用するためのＡＰＩ群である。
【００６５】
したがって、共通Ｉ／Ｆ１４１１は、全ての外部サービス連携部１４０に対して同様に定義される。一方で、固有Ｉ／Ｆ１４１２は、当該固有Ｉ／Ｆ１４１２で定義されるＡＰＩが利用可能な特定な外部ストレージシステム３０に対応する外部サービス連携部１４０に対して定義される。
【００６６】
データ処理部１４２は、外部ストレージシステム３０に保存されている電子ファイルの書誌情報等のメタデータ（例えば、ファイル一覧やフォルダ一覧等）を取得等するためのＡＰＩが定義された共通Ｉ／Ｆ１４２１及び固有Ｉ／Ｆ１４２２を有する。
【００６７】
共通Ｉ／Ｆ１４２１は、複数の外部ストレージシステム３０間で共通に利用できるＡＰＩであり、例えば図５（ｃ）に示すＡＰＩが挙げられる。すなわち、データ処理部１４２の共通Ｉ／Ｆ１４２１は、全ての外部ストレージシステム３０で利用できるメタデータ取得に関する機能（例えば、ファイル一覧の取得、フォルダ一覧の取得等）を利用するためのＡＰＩ群である。
【００６８】
一方、固有Ｉ／Ｆ１４２２は、ある特定の外部ストレージシステム３０において利用できるＡＰＩであり、例えば図５（ｄ）に示すＡＰＩが挙げられる。すなわち、データ処理部１４２の固有Ｉ／Ｆ１４２２は、ある特定の外部ストレージシステム３０において利用できるメタデータ取得等に関する機能（例えば、画像ファイル一覧の取得等）を利用するためのＡＰＩ群である。
【００６９】
したがって、共通Ｉ／Ｆ１４２１は、全ての外部サービス連携部１４０に対して同様に定義される。一方で、固有Ｉ／Ｆ１４２２は、当該固有Ｉ／Ｆ１４２２で定義されるＡＰＩが利用可能な特定の外部ストレージシステム３０に対応する外部サービス連携部１４０に対して定義される。
【００７０】
以上のように、本実施形態に係るサービス提供システム１０は、当該サービス提供システム１０と連携して処理を行う外部ストレージシステム３０毎に、それぞれの外部ストレージシステム３０に対応する外部サービス連携部１４０を有する。このため、連携先となる外部ストレージシステム３０を追加や削除（以降、「追加等」と表す。）する場合、当該追加等される外部ストレージシステム３０に対応する外部サービス連携部１４０をサービス提供システム１０に追加等すれば良い。
【００７１】
これにより、本実施形態に係るサービス提供システム１０では、連携先となる外部ストレージシステム３０の追加等に伴う影響を局所化することができる。換言すれば、本実施形態に係るサービス提供システム１０では、他の機能部（入出力サービス処理部１１０やドキュメントサービス部１３０等）に影響を与えることなく、連携先となる外部ストレージシステム３０の追加等を行うことができる。なお、外部サービス連携部１４０の追加等は、ＳＤＫ（Software Development Kit）を用いて行うことができる。
【００７２】
また、外部サービス連携部１４０のファイル処理部１４１は、共通Ｉ／Ｆ１４１１と固有Ｉ／Ｆ１４１２とを異なるモジュール等で定義している。更に、共通Ｉ／Ｆ１４１１及び固有Ｉ／Ｆ１４１２で定義されるＡＰＩは、「外部ストレージ名」（外部ストレージシステム３０により提供されるストレージサービスの名称）を指定することで利用できる。すなわち、共通Ｉ／Ｆ１４１１及び固有Ｉ／Ｆ１４１２で定義されるＡＰＩは、「外部ストレージ名」が可変部分となっている。
【００７３】
これにより、外部サービス連携部１４０を追加する場合、他の外部サービス連携部１４０のファイル処理部１４１に定義されている共通Ｉ／Ｆ１４１１を再利用することができる。換言すれば、外部サービス連携部１４０を追加する場合、当該追加する外部サービス連携部１４０のファイル処理部１４１は、固有Ｉ／Ｆ１４１２のみを開発すれば良い。このことは、データ処理部１４２の共通Ｉ／Ｆ１４２１及び固有Ｉ／Ｆ１４２２についても同様である。
【００７４】
アプリ情報記憶部１５０は、アプリ情報１０００を記憶する。アプリ情報１０００は、当該アプリ情報１０００を識別するアプリＩＤと関連付けてアプリ情報記憶部１５０に記憶されている。なお、アプリ情報１０００には、更に、当該アプリ情報１０００の名称（アプリケーション名）が関連付けられていても良い。
【００７５】
ここで、アプリ情報１０００には、処理フロー情報１１００が含まれる。例えば、「ＯＣＲ配信Ａ」サービスを提供するアプリ情報１０００には、当該サービスを実現する一連の処理が定義された処理フロー情報１１００が含まれる。すなわち、「ＯＣＲ配信Ａ」サービスを提供するアプリ情報１０００には、スキャンにより生成された電子ファイルをＯＣＲ処理した後、外部ストレージシステム３０１（ストレージＡ）に保存（アップロード）する処理が定義された処理フロー情報１１００が含まれる。なお、アプリ情報１０００には、２以上の処理フロー情報１１００が含まれていても良い。
【００７６】
処理フロー情報１１００は、上述したように、アプリ情報１０００により提供されるサービスを実現する一連の処理（処理フロー）が定義された情報である。なお、処理フロー情報１１００の詳細については後述する。
【００７７】
画面情報記憶部１６０は、画面情報２０００を記憶する。画面情報２０００は、アプリＩＤと関連付けて画面情報記憶部１６０に記憶されている。なお、画面情報２０００の詳細については後述する。
【００７８】
なお、入出力サービス処理部１１０、Ｗｅｂサービス処理部１２０、ドキュメントサービス部１３０、外部サービス連携部１４０、アプリ情報記憶部１５０、及び画面情報記憶部１６０は、それぞれが異なる情報処理装置により実現されていても良い。
【００７９】
ここで、ロジック処理部１１２の詳細な機能構成について、図６を参照しながら説明する。図６は、本実施形態に係るロジック処理部１１２の一例の機能構成を示す図である。
【００８０】
図６に示すロジック処理部１１２は、フロー実行部３０１と、コンポーネント管理部３０２と、コンポーネント群３０３と、型変換管理部３０４と、型変換群３０５とを有する。また、ロジック処理部１１２は、型変換情報テーブル３０００を有する。
【００８１】
フロー実行部３０１は、Ｗｅｂサービス処理部１２０から処理フローの実行要求を受信すると、当該実行要求に対応する処理フロー情報１１００をアプリ管理部１１１から取得する。そして、フロー実行部３０１は、アプリ管理部１１１から取得した処理フロー情報１１００に基づく一連の処理（処理フロー）を実行する。
【００８２】
このとき、フロー実行部３０１は、処理フロー情報１１００に基づく一連の処理（処理フロー）を仮実行して、当該仮実行においてエラー等が発生しなかった場合に、当該一連の処理（処理フロー）を正式実行する。
【００８３】
ここで、仮実行とは、処理フロー情報１１００に基づく一連の処理（処理フロー）の正式実行の前に、当該一連の処理に含まれる各処理の形式的な確認等を行うために当該一連の処理を実行することである。一方で、正式実行とは、処理フロー情報１１００に基づく一連の処理（処理フロー）に含まれる各処理の形式的な確認等が行われた場合に、アプリ情報１０００により提供されるサービスを実現するために当該一連の処理を実行することである。
【００８４】
また、処理フロー情報１１００に基づく一連の処理は、当該一連の処理に含まれる各処理を実行するためのコンポーネントを組み合わせることにより実行される。したがって、一連の処理に含まれる各処理の形式的な確認とは、例えば、当該処理を実行するためのコンポーネントに対するパラメータ情報の整合性の確認等である。なお、コンポーネントは、所定の機能を実現する処理を実行するためのプログラムやモジュール等により実現され、例えばクラスや関数等で定義される。
【００８５】
コンポーネント管理部３０２は、コンポーネントを管理する。コンポーネント管理部３０２は、フロー実行部３０１からの要求に応じて、コンポーネントを生成すると共に、生成したコンポーネントをフロー実行部３０１に返信する。なお、コンポーネントの生成とは、例えばクラスや関数等で定義されたコンポーネントを、メモリ（例えばＲＡＭ１４）上に展開することである。
【００８６】
コンポーネント群３０３は、コンポーネントの集合である。コンポーネント群３０３には、ＯＣＲコンポーネント１３１０と、配信Ａコンポーネント１３２０とが含まれる。
【００８７】
ＯＣＲコンポーネント１３１０は、電子ファイルをＯＣＲ処理するためのコンポーネントである。ＯＣＲコンポーネント１３１０は、ドキュメントサービス部１３０のＯＣＲ処理部１３１に対してＯＣＲ処理を要求することにより、電子ファイルのＯＣＲ処理を行う。
【００８８】
配信Ａコンポーネント１３２０は、電子ファイルを外部ストレージシステム４０１（ストレージＡ）に保存（アップロード）するためのコンポーネントである。配信Ａコンポーネント１３２０は、外部ストレージシステム４０１に対応する外部サービス連携部１４０１のファイル処理部１４１に対して電子ファイルのアップロードを要求することにより、電子ファイルのアップロードを行う。
【００８９】
なお、コンポーネント群３０３には、上記のコンポーネント以外にも、例えば、電子ファイルのデータ形式を所定のデータ形式に変換するための変換コンポーネント、電子ファイルを圧縮するための圧縮コンポーネント等が含まれる。また、コンポーネント群３０３には、例えば、電子ファイルを外部ストレージシステム４０２（ストレージＢ）に保存（アップロード）するための配信Ｂコンポーネント等が含まれる。更に、コンポーネント群３０３には、例えば、電子ファイルを外部ストレージシステム４０１（ストレージＡ）から取得（ダウンロード）するための取得Ａコンポーネント等が含まれる。
【００９０】
このように、コンポーネント群３０３には、所定の機能を実現する処理を実行する各種のコンポーネントが含まれる。
【００９１】
また、コンポーネント群３０３に含まれる各コンポーネントは、コンポーネント共通Ｉ／Ｆ１３００を有する。コンポーネント共通Ｉ／Ｆ１３００は、各コンポーネントに対して共通に定義されたＡＰＩであり、コンポーネントを生成するためのＡＰＩと、コンポーネントの処理を実行するためのＡＰＩとが含まれる。
【００９２】
このように、各コンポーネントがコンポーネント共通Ｉ／Ｆ１３００を有することで、コンポーネントの追加等に伴う影響を局所化することができる。すなわち、例えば、フロー実行部３０１やコンポーネント管理部３０２等に影響を与えることなく、コンポーネントの追加等を行うことができる。これにより、本実施形態に係るサービス提供システム１０では、所定の機能の追加等（すなわち、当該機能を実現する処理を実行するためのコンポーネントの追加等）に伴う開発工数を削減することができる。
【００９３】
型変換管理部３０４は、データ型の型変換を管理する。ここで、各コンポーネントは、自身が扱えるデータ型が予め決まっている。したがって、型変換管理部３０４は、コンポーネントからの要求に応じて、例えば図７に示す型変換情報テーブル３０００を参照して、型変換群３０５に含まれる型変換を生成する。
【００９４】
そして、型変換管理部３０４は、生成された型変換に型変換処理の実行を要求する。なお、型変換は、データ型の型変換処理を実行するプログラムやモジュール等により実現され、例えばクラスや関数等で定義される。また、型変換の生成とは、例えばクラスや関数等で定義された型変換を、メモリ（例えばＲＡＭ１４上）に展開することである。
【００９５】
なお、データ型には、例えば、ストリームデータを示すデータ型「ＩｎｐｕｔＳｔｒｅａｍ」、記憶装置等に格納されている電子ファイルのパス（アドレス）を示す「ＬｏｃａｌＦｉｌｅＰａｔｈ」、及び電子ファイルの実体を示す「Ｆｉｌｅ」等が挙げられる。
【００９６】
ここで、型変換情報テーブル３０００について、図７を参照しながら説明する。図６は、型変換情報テーブル３０００の一例を示す図である。
【００９７】
図７に示す型変換情報テーブル３０００は、データ項目として、変換前のデータ型と、変換後のデータ型と、生成する型変換とを有する。すなわち、型変換情報テーブル３０００に格納されている型変換情報は、変換前のデータ型及び変換後のデータ型毎に、当該変換前のデータ型を、当該変換後のデータ型に変換するための型変換が関連付けられた情報である。
【００９８】
型変換群３０５は、型変換の集合である。型変換群３０５には、データ型「ＩｎｐｕｔＳｔｒｅａｍ」を「ＬｏｃａｌＦｉｌｅＰａｔｈ」に変換するための第１の型変換１４１０が含まれる。なお、型変換群３０５には、これ以外にも、例えば、データ型「ＬｏｃａｌＦｉｌｅＰａｔｈ」を「Ｆｉｌｅ」に変換するための第２の型変換等が含まれる。
【００９９】
また、型変換群３０５に含まれる各型変換は、型変換共通Ｉ／Ｆ１４００を有する。型変換共通Ｉ／Ｆ１４００は、各型変換に対して共通に定義されたＡＰＩであり、型変換を生成するためのＡＰＩと、型変換の型変換処理を実行するためのＡＰＩとが含まれる。
【０１００】
このように、各型変換が型変換共通Ｉ／Ｆ１４００を有することで、型変換の追加等に伴う影響を局所化することができる。すなわち、例えば、型変換管理部３０４等に影響を与えることなく、型変換の追加等を行うことができる。これにより、本実施形態に係るサービス提供システム１０では、型変換の追加等に伴う開発工数を削減することができる。
【０１０１】
ここで、「ＯＣＲ配信Ａ」サービスを提供するアプリ情報１０００に含まれる処理フロー情報１１００について、図８を参照しながら説明する。図８は、「ＯＣＲ配信Ａ」サービスを実現する一連の処理が定義された処理フロー情報１１００の一例を示す図である。
【０１０２】
図８に示す処理フロー情報１１００は、「ＯＣＲ配信Ａ」サービスを実現する一連の処理（処理フロー）が定義された情報である。
【０１０３】
図８に示す処理フロー情報１１００には、当該処理フロー情報１１００を識別するフローＩＤ１１０１と、当該処理フロー情報１１００に基づく一連の処理（処理フロー）の名称を示すフロー名１１０２とが含まれる。また、図８に示す処理フロー情報１１００には、一連の処理（処理フロー）に含まれる各処理の処理内容が定義されたフロー詳細１１０３が含まれる。
【０１０４】
フロー詳細１１０３には、処理フローに含まれる各処理をそれぞれ定義した処理定義１１０４と、処理定義１１０５とが含まれる。また、処理定義１１０４及び処理定義１１０５には、処理を実行するコンポーネントのコンポーネント名を示す「"ｃｏｍｐｏｎｅｎｔ"」と、当該コンポーネントに対するパラメータ情報が定義される「"ｐａｒａｍｅｔｅｒｓ"」とが含まれる。
【０１０５】
具体的には、処理定義１１０４の「"ｃｏｍｐｏｎｅｎｔ"」には、ＯＣＲコンポーネント１３１０のコンポーネント名「"ｏｃｒ"」が定義されている。また、処理定義１１０４の「"ｐａｒａｍｅｔｅｒｓ"」には、パラメータ名「"ｌａｎｇｕａｇｅ"」のパラメータ情報と、パラメータ名「"ｏｕｔｐｕｔＴｙｐｅ"」のパラメータ情報とが定義されている。
【０１０６】
更に、パラメータ名「"ｌａｎｇｕａｇｅ"」のパラメータ情報には、ＯＣＲ処理の言語が英語である事を示す「"Ｅｎｇｌｉｓｈ"」がパラメータ値として定義されている。同様に、パラメータ名「"ｏｕｔｐｕｔＴｙｐｅ"」のパラメータ情報には、ＯＣＲ処理後のファイル形式がＰＤＦ形式であることを示す「"ｐｄｆ"」がパラメータ値として定義されている。
【０１０７】
同様に、処理定義１１０５の「"ｃｏｍｐｏｎｅｎｔ"」には、配信Ａコンポーネント１３２０のコンポーネント名「"ｕｐｌｏａｄＦｉｌｅＡ"」が定義されている。また、処理定義１１０５の「"ｐａｒａｍｅｔｅｒｓ"」には、パラメータ名「"ｆｉｌｅｎａｍｅ"」のパラメータ情報と、パラメータ名「"ｆｏｌｄｅｒ"」のパラメータ情報とが定義されている。
【０１０８】
更に、パラメータ名「"ｆｉｌｅｎａｍｅ"」のパラメータ情報には、アップロードされる電子ファイルの名称（ファイル名）が設定されていないことを示す「ｎｕｌｌ」がパラメータ値として定義されている。同様に、パラメータ名「"ｆｏｌｄｅｒ"」のパラメータ情報には、アップロード先（保存先）フォルダが設定されていないことを示す「ｎｕｌｌ」がパラメータ値として定義されている。
【０１０９】
このように、処理フロー情報１１００には、一連の処理（処理フロー）を構成する各処理の処理定義が定義されている。これにより、本実施形態に係るサービス提供システム１０は、処理フロー情報１１００に含まれる各処理定義に従って、各コンポーネントによる処理を行うことで、アプリ情報１０００により提供されるサービスを実現する一連の処理を実行することができる。
【０１１０】
なお、図８に示す処理フロー情報１１００に含まれる各処理定義に定義された処理は、上から順に実行される。すなわち、図８に示す処理フロー情報１１００に基づく一連の処理では、処理定義１１０４に定義された処理、処理定義１１０５に定義された処理の順で実行される。ただし、これに限られず、処理フロー情報１１００には、例えば、各処理定義に定義された処理の実行順を示す情報が定義されていても良い。
【０１１１】
＜処理の詳細＞
次に、本実施形態に係る情報処理システム１の処理の詳細について説明する。以降では、機器２０のユーザが、「ＯＣＲ配信Ａ」サービスを利用する場合の全体的な処理について、図９を参照しながら説明する。図９は、本実施形態に係る「ＯＣＲ配信Ａ」サービスの全体処理の一例を示すシーケンス図である。
【０１１２】
まず、機器２０のブラウザ２１０は、「ＯＣＲ配信Ａ」サービスのアプリ画面を表示させるための操作（表示操作）を受け付ける（ステップＳ９０１）。
【０１１３】
機器２０のブラウザ２１０は、当該表示操作を受け付けると、「ＯＣＲ配信Ａ」サービスのアプリ画面を表示するための画面情報の取得要求をＷｅｂサービス処理部１２０に送信する（ステップＳ９０２）。なお、当該取得要求は、例えば、ＨＴＴＰ（Hypertext Transfer Protocol）リクエストであり、「ＯＣＲ配信Ａ」サービスを提供するアプリ情報１０００のＵＲＬ（Uniform Resource Locator）が指定される。このとき、当該取得要求には、「ＯＣＲ配信Ａ」サービスを提供するアプリ情報１０００のアプリＩＤが含まれていても良い。
【０１１４】
Ｗｅｂサービス処理部１２０は、画面情報の取得要求を受信すると、当該取得要求に指定されているＵＲＬに対応するアプリＩＤと関連付けられている画面情報２０００を画面情報記憶部１６０から取得する（ステップＳ９０３）。そして、Ｗｅｂサービス処理部１２０は、画面情報記憶部１６０から取得した画面情報２０００をブラウザ２１０に返信する。すなわち、Ｗｅｂサービス処理部１２０は、画面情報記憶部１６０から取得した画面情報２０００を含むＨＴＴＰレスポンスをブラウザ２１０に返信する。
【０１１５】
ここで、「ＯＣＲ配信Ａ」サービスのアプリ画面を表示するための画面情報２０００について、図１０を参照しながら説明する。図１０は、「ＯＣＲ配信Ａ」サービスのアプリ画面を表示するための画面情報２０００の一例を示す図である。
【０１１６】
図１０に示す画面情報２０００は、ＨＴＭＬ形式で定義された情報である。図１０に示す画面情報２０００には、ファイル名を入力するテキストボックスを表示するＩＮＰＵＴタグ２００１と、保存先フォルダの選択欄を表示するＳＥＬＥＣＴタグ２００２と、スキャン実行するためのボタンを表示するＢＵＴＴＯＮタグ２００３とが含まれる。
【０１１７】
これにより、後述するように、外部ストレージシステム３０１から取得したフォルダ一覧に含まれる各フォルダの情報を、ＳＥＬＥＣＴタグ２００２に選択要素として定義することで、「ＯＣＲ配信Ａ」サービスを利用するためのアプリ画面を表示することができる。
【０１１８】
機器２０のブラウザ２１０は、画面情報２０００を受信すると、アプリ画面の表示用情報の取得要求をＷｅｂサービス処理部１２０に送信する（ステップＳ９０４）。
【０１１９】
なお、表示用情報とは、例えば、アプリ画面の選択欄に含まれる各選択要素のことである。本実施形態では、「ＯＣＲ配信Ａ」サービスにおける電子ファイルの保存先フォルダの候補となるフォルダ一覧を選択要素として外部ストレージシステム４０１（ストレージＡ）から取得する。
【０１２０】
Ｗｅｂサービス処理部１２０は、アプリ画面の表示用情報の取得要求を受信すると、当該取得要求をデータＩ／Ｆ部１１３に送信する（ステップＳ９０５）。
【０１２１】
データＩ／Ｆ部１１３は、アプリ画面の表示用情報の取得要求を受信すると、ストレージＡのフォルダ一覧の取得要求を、外部サービス連携部１４０のデータ処理部１４２に送信する（ステップＳ９０６）。
【０１２２】
なお、データＩ／Ｆ部１１３は、フォルダ一覧の取得要求を、ストレージＡ（外部ストレージシステム３０１）に対応する外部サービス連携部１４０１のデータ処理部１４２に送信する。すなわち、データＩ／Ｆ部１１３は、例えば、「ｓｔｏｒａｇｅＡ／ｄａｔａ／ｆｏｌｄｅｒｓ」として共通Ｉ／Ｆ１４２１に定義されているＡＰＩを用いることで、フォルダ一覧の取得要求を送信する。
【０１２３】
外部サービス連携部１４０のデータ処理部１４２は、フォルダ一覧の取得要求を受信すると、フォルダ一覧の取得要求を外部ストレージシステム３０に送信して、フォルダ一覧を取得する（ステップＳ９０７）。そして、データ処理部１４２は、取得したフォルダ一覧を、データＩ／Ｆ部１１３及びＷｅｂサービス処理部１２０を介して、ブラウザ２１０に返信する。
【０１２４】
機器２０のブラウザ２１０は、フォルダ一覧を受信すると、当該フォルダ一覧と、上記のステップＳ９０３で返信された画面情報２０００とに基づいて、アプリ画面を操作パネル２２に表示させる（ステップＳ９０８）。すなわち、ブラウザ２１０は、図１０に示す画面情報２０００のＳＥＬＥＣＴタグ２００２に、例えば、フォルダ一覧に含まれる各フォルダＩＤを値（ＶＡＬＵＥ）としてＯＰＴＩＯＮタグに定義した上で、当該画面情報２０００に基づくアプリ画面を表示させる。
【０１２５】
これにより、機器２０の操作パネル２２には、ブラウザ２１０により、例えば図１１に示すアプリ画面２１００が表示される。図１１は、「ＯＣＲ配信Ａ」サービスを利用するためのアプリ画面２１００の一例を示す図である。
【０１２６】
図１１に示すアプリ画面２１００は、「ＯＣＲ配信Ａ」サービスを利用するための画面である。図１１に示すアプリ画面２１００には、ストレージＡにアップロードする電子ファイルのファイル名を入力するためのテキストボックス２１０１と、ストレージＡの保存先フォルダを選択するための選択欄２１０２とが含まれる。また、図１１に示すアプリ画面２１００には、スキャンを実行するためのスキャンボタン２１０３が含まれる。
【０１２７】
なお、テキストボックス２１０１、選択欄２１０２、及びスキャンボタン２１０３は、ＩＮＰＵＴタグ２００１、ＳＥＬＥＣＴタグ２００２、及びＢＵＴＴＯＮタグ２００３をブラウザ２１０がそれぞれ解釈することにより表示される。
【０１２８】
このように、本実施形態に係るサービス提供システム１０は、機器２０のブラウザ２１０からの要求に応じて、ＨＴＭＬ形式等のブラウザ２１０が解釈可能な形式で定義された画面情報２０００を返信する。そして、機器２０は、サービス提供システム１０から返信された画面情報２０００に基づいて、サービスを利用するためのアプリ画面２１００を表示する。したがって、ユーザは、一般的なブラウザ２１０が搭載された機器２０を用いて、サービス提供システム１０が提供するサービスを利用することができる。
【０１２９】
機器２０のブラウザ２１０は、テキストボックス２１０１にファイル名が入力され、かつ、選択欄２１０２から保存先フォルダが選択された上で、スキャンボタン２１０３が押下されると、ユーザ指定情報及びスキャン実行操作を受け付ける（ステップＳ９０９）。なお、ユーザ指定情報とは、テキストボックス２１０１に指定されたファイル名及び選択欄２１０２で指定された保存先フォルダのフォルダＩＤである。
【０１３０】
例えば、テキストボックス２１０１に「ｓａｍｐｌｅ．ｐｄｆ」、選択欄２１０２で「Ｆｏｌｄｅｒ１」（フォルダＩＤ「ｆｏｌｄｅｒ１」）が指定されたとする。この場合、ユーザ指定情報には、例えば、「"ｆｉｌｅｎａｍｅ"："ｓａｍｐｌｅ．ｐｄｆ"」と、「"ｆｏｌｄｅｒ"："ｆｏｌｄｅｒ１"」とが含まれる。
【０１３１】
機器２０のブラウザ２１０は、スキャン実行操作を受け付けると、スキャナ２６により原稿を読み取って、電子ファイル（画像ファイル）を生成する（ステップＳ９１０）。
【０１３２】
次に、機器２０のブラウザ２１０は、電子ファイルが生成されると、処理フローの実行要求をＷｅｂサービス処理部１２０に送信する（ステップＳ９１１）。なお、当該実行要求は、例えば、ＨＴＴＰリクエストであり、「ＯＣＲ配信Ａ」サービスを実現する一連の処理が定義された処理フロー情報１１００のフローＩＤと、上記のステップＳ９１０で生成された電子ファイルと、ユーザ指定情報とが含まれる。
【０１３３】
ただし、処理フローの実行要求には、フローＩＤに代えて、例えば、アプリ情報１０００のＵＲＬ、上記のステップＳ９０８で表示したアプリ画面２１００の画面ＩＤ、スキャンボタン２１０３のボタンＩＤ等が含まれていても良い。すなわち、処理フローの実行要求には、フローＩＤに代えて、後述するステップＳ９１２でフローＩＤに変換することができる種々の識別情報が含まれていても良い。
【０１３４】
Ｗｅｂサービス処理部１２０は、処理フローの実行要求を受信すると、当該要求を、入出力サービス処理部１１０のロジック処理部１１２に送信する（ステップＳ９１２）。なお、Ｗｅｂサービス処理部１２０は、例えば、アプリ情報１０００のＵＲＬ、アプリ画面２１００の画面ＩＤ、スキャンボタン２１０３のボタンＩＤ等が処理フローの実行要求に含まれている場合には、これらの識別情報をフローＩＤに変換する。
【０１３５】
次に、入出力サービス処理部１１０のロジック処理部１１２は、処理フローの実行要求を受信すると、フロー実行部３０１により、処理フロー情報の取得要求をアプリ管理部１１１に送信する（ステップＳ９１３）。なお、当該取得要求には、フローＩＤが含まれる。
【０１３６】
アプリ管理部１１１は、処理フロー情報の取得要求を受信すると、当該取得要求に含まれるフローＩＤにより識別される処理フロー情報１１００をアプリ情報記憶部１５０から取得する（ステップＳ９１４）。
【０１３７】
そして、アプリ管理部１１１は、アプリ情報記憶部１５０から取得した処理フロー情報１１００をロジック処理部１１２に返信する。ここで、以降では、アプリ管理部１１１は、図８に示す処理フロー情報１１００をロジック処理部１１２に返信したものとして説明する。
【０１３８】
次に、ロジック処理部１１２は、アプリ管理部１１１から処理フロー情報１１００を受信すると、当該処理フロー情報１１００に基づく処理フローの実行処理を行う（ステップＳ９１５）。
【０１３９】
すなわち、ロジック処理部１１２は、「ＯＣＲ配信Ａ」サービスを実現する一連の処理（処理フロー）の実行処理を行う。このとき、ロジック処理部１１２は、「ＯＣＲ配信Ａ」サービスを実現する一連の処理（処理フロー）を仮実行して、当該仮実行においてエラー等が発生しなかった場合に、当該一連の処理（処理フロー）を正式実行することで、処理フローの実行処理を行う。なお、処理フローの実行処理の詳細については後述する。
【０１４０】
そして、ロジック処理部１１２は、処理フローの実行処理の処理結果を、Ｗｅｂサービス処理部１２０を介して、ブラウザ２１０に返信する。これにより、本実施形態に係るサービス提供システム１０は、処理フロー情報１１００に基づく一連の処理（処理フロー）により実現される各種のサービス（例えば、「ＯＣＲ配信Ａ」サービス）を提供することができる。
【０１４１】
なお、図９に示す「ＯＣＲ配信Ａ」サービスの全体処理では、ブラウザ２１０は、Ｗｅｂサービス処理部１２０を介して、処理フローの実行要求をロジック処理部１１２に送信しているが、これに限られない。ブラウザ２１０は、例えば、画面情報２０００に定義されたＪａｖａＳｃｒｉｐｔ等に基づいてＷｅｂＡＰＩを呼び出すことにより、Ｗｅｂサービス処理部１２０を介さずに、直接、処理フローの実行要求をロジック処理部１１２に送信しても良い。
【０１４２】
ここで、以降では、「ＯＣＲ配信Ａ」サービスを実現する処理フローの実行処理（図９のステップＳ９１５の処理）の詳細について説明する。なお、処理フローの実行処理では、上述したように、「ＯＣＲ配信Ａ」サービスを実現する一連の処理（処理フロー）を仮実行して、当該仮実行においてエラー等が発生しなかった場合に、当該一連の処理（処理フロー）を正式実行する。したがって、以降では、図９のステップＳ９１５における処理フローの実行処理において、一連の処理を仮実行する段階を「仮実行フェーズ」、一連の処理を正式実行する段階を「正式実行フェーズ」とも表す。
【０１４３】
まず、「ＯＣＲ配信Ａ」サービスを実現する処理フローの実行処理において、仮実行フェーズが正常に終了した後、正式実行フェーズが行われる場合について、図１２を参照しながら説明する。図１２は、本実施形態に係る処理フローの実行処理の一例を示すシーケンス図である。
【０１４４】
まず、フロー実行部３０１は、図９のステップＳ９１４でアプリ管理部１１１から返信された処理フロー情報１１００に基づいて、コンポーネントの取得要求をコンポーネント管理部３０２に送信する（ステップＳ１２０１）。すなわち、フロー実行部３０１は、図８に示す処理フロー情報１１００の処理定義１１０４の「"ｃｏｍｐｏｎｅｎｔ"」に定義されている「"ｏｃｒ"」を含むコンポーネントの取得要求をコンポーネント管理部３０２に送信する。
【０１４５】
コンポーネント管理部３０２は、コンポーネントの取得要求を受信すると、当該取得要求に含まれる「"ｏｃｒ"」に対応するＯＣＲコンポーネント１３１０を生成する（ステップＳ１２０２）。なお、ＯＣＲコンポーネント１３１０の生成は、コンポーネント共通Ｉ／Ｆ１３００を用いて行うことができる。
【０１４６】
そして、コンポーネント管理部３０２は、生成したＯＣＲコンポーネント１３１０をフロー実行部３０１に返信する。すなわち、コンポーネント管理部３０２は、例えば、ＯＣＲコンポーネント１３１０が展開されたメモリ（例えばＲＡＭ１４）上のアドレスをフロー実行部３０１に返信する。
【０１４７】
フロー実行部３０１は、ＯＣＲコンポーネント１３１０が返信されると、コンポーネントの仮実行要求を、当該ＯＣＲコンポーネント１３１０に送信する（ステップＳ１２０３）。なお、コンポーネントの仮実行要求は、ＯＣＲコンポーネント１３１０を仮実行するための要求であり、データと、パラメータ情報とが含まれる。
【０１４８】
ここで、上記のステップＳ１２０３において、データとは、データ型「ＩｎｐｕｔＳｔｒｅａｍ」として、Ｗｅｂサービス処理部１２０から受信した電子ファイル（処理フローの実行要求に含まれる電子ファイル）である。すなわち、フロー実行部３０１は、Ｗｅｂサービス処理部１２０から受信した電子ファイルを、単に「データ」として（データ型を意識することなく）、ＯＣＲコンポーネント１３１０に送信する。以降では、このようにデータ型を意識しない電子ファイル等を、単に「データ」と表す。
【０１４９】
また、上記のステップＳ１２０３において、パラメータ情報とは、図８に示す処理フロー情報１１００の処理定義１１０４の「"ｐａｒａｍｅｔｅｒｓ"」に定義されている各パラメータ情報である。すなわち、上記のステップＳ１２０３におけるコンポーネントの処理実行要求には、パラメータ情報「"ｌａｎｇｕａｇｅ"："Ｅｎｇｌｉｓｈ"」と、パラメータ情報「"ｏｕｔｐｕｔＴｙｐｅ"："ｐｄｆ"」とが含まれる。
【０１５０】
ＯＣＲコンポーネント１３１０は、コンポーネントの仮実行要求を受信すると、当該仮実行要求に含まれるデータと、パラメータ情報とを用いて、仮実行処理を行う（ステップＳ１２０４）。
【０１５１】
ここで、ＯＣＲコンポーネント１３１０の仮実行処理について、図１３を参照しながら説明する。図１３は、本実施形態に係るＯＣＲコンポーネント１３１０の仮実行処理の一例を示すシーケンス図である。
【０１５２】
ＯＣＲコンポーネント１３１０は、型変換要求を型変換管理部３０４に送信する（ステップＳ１３０１）。なお、当該型変換要求には、データと、ＯＣＲコンポーネント１３１０が扱うことができるデータ型を示す「ＬｏｃａｌＦｉｌｅＰａｔｈ」の指定とが含まれる。
【０１５３】
型変換管理部３０４は、型変換要求を受信すると、当該型変換要求に含まれるデータのデータ型と、指定されたデータ型とが一致するか否かをチェックする（ステップＳ１３０２）。
【０１５４】
ここで、型変換要求に含まれるデータのデータ型は「ＩｎｐｕｔＳｔｒｅａｍ」である一方、指定されたデータ型は「ＬｏｃａｌＦｉｌｅＰａｔｈ」である。したがって、型変換管理部３０４は、型変換要求に含まれるデータのデータ型と、指定されたデータ型とが一致しないものと判断する。
【０１５５】
すると、型変換管理部３０４は、図７に示す型変換情報テーブル３０００を参照して、データ型「ＩｎｐｕｔＳｔｒｅａｍ」を「ＬｏｃａｌＦｉｌｅＰａｔｈ」に変換するための型変換を特定する（ここでは、第１の型変換１４１０が特定される。）。そして、型変換管理部３０４は、特定した第１の型変換１４１０を生成する（ステップＳ１３０３）。なお、第１の型変換１４１０の生成は、型変換共通Ｉ／Ｆ１４００を用いて行うことができる。
【０１５６】
次に、型変換管理部３０４は、型変換処理の実行要求を第１の型変換１４１０に送信する（ステップＳ１３０４）。なお、当該実行要求には、データが含まれる。
【０１５７】
第１の型変換１４１０は、型変換の実行要求を受信すると、当該実行要求に含まれるデータのデータ型を「ＩｎｐｕｔＳｔｒｅａｍ」から「ＬｏｃａｌＦｉｌｅＰａｔｈ」に変換する型変換処理を行う（ステップＳ１３０５）。そして、第１の型変換１４１０は、データ型が変換されたデータを型変換管理部３０４に返信する。
【０１５８】
そして、型変換管理部３０４は、第１の型変換１４１０からデータを受信すると、当該データをＯＣＲコンポーネント１３１０に送信する（ステップＳ１３０６）。
【０１５９】
ＯＣＲコンポーネント１３１０は、型変換管理部３０４からデータを受信すると、当該データと、パラメータ情報とを用いて、ＯＣＲ処理の仮実行処理を行う（ステップＳ１３０７）。
【０１６０】
ここで、ＯＣＲコンポーネント１３１０は、ＯＣＲ処理の仮実行処理として、例えば、データチェックやパラメータ情報チェック等を行う。すなわち、ＯＣＲコンポーネント１３１０は、例えば、データ（データ型「ＬｏｃａｌＦｉｌｅＰａｔｈ」）により示される電子ファイルのページ数やファイル数、サイズ等が、予め設定された上限を超えているか否か等のデータチェックを行う。また、ＯＣＲコンポーネント１３１０は、例えば、ＯＣＲ言語（パラメータ情報「"ｌａｎｇｕａｇｅ"」のパラメータ値）や出力データ形式（パラメータ情報「"ｏｕｔｐｕｔＴｙｐｅ"」のパラメータ値）をサポートしているか否か等のパラメータ情報チェックを行う。
【０１６１】
なお、ＯＣＲコンポーネント１３１０は、フロー実行部３０１から受信したデータを、より軽量なデータ（サイズが小さいデータ）に変更した上で、当該変更後のデータを用いて、ＯＣＲ処理を行っても良い。また、ＯＣＲコンポーネント１３１０は、このような軽量なデータを用いてＯＣＲ処理を行った結果（すなわち、当該軽量なデータが示す電子ファイルに対してＯＣＲ処理を行った電子ファイル）を保持しておき、正式実行処理で当該データを利用しても良い。
【０１６２】
このように、ＯＣＲコンポーネント１３１０は、データチェックやパラメータ情報チェック等の仮実行処理を行う。
【０１６３】
そして、ＯＣＲコンポーネント１３１０は、仮実行の処理結果を示すデータをフロー実行部３０１に返信する。ここで、ＯＣＲコンポーネント１３１０は、例えば、データチェックで電子ファイルのページ数やファイル数、サイズ等が、予め設定された上限を超えていると判定された場合、エラーが発生したことを示すデータをフロー実行部３０１に返信する。同様に、ＯＣＲコンポーネント１３１０は、例えば、パラメータ情報チェックでパラメータ値に指定されたＯＣＲ言語や出力データ形式をサポートしていないと判定された場合、エラーが発生したことを示すデータをフロー実行部３０１に返信する。
【０１６４】
図１２に戻る。フロー実行部３０１は、ＯＣＲコンポーネント１３１０からデータを受信すると、処理フローの実行処理を継続するか否かを判定する（ステップＳ１２０５）。すなわち、フロー実行部３０１は、ＯＣＲコンポーネント１３１０から返信されたデータが、エラー等が発生したことを示すものであるか否かを判定する。
【０１６５】
ここで、上記のステップＳ１２０５において、ＯＣＲコンポーネント１３１０から返信されたデータが、エラー等が発生したことを示すものであると判定された場合、フロー実行部３０１は、エラー等の発生を機器２０に通知した上で、処理を終了させる。一方で、ＯＣＲコンポーネント１３１０から返信されたデータが、エラー等が発生したことを示すものでない場合、フロー実行部３０１は、処理を継続させる。以降では、フロー実行部３０１は、ＯＣＲコンポーネント１３１０から返信されたデータは、エラー等が発生したことを示すものでないとして説明を続ける。
【０１６６】
フロー実行部３０１は、図９のステップＳ９１４でアプリ管理部１１１から返信された処理フロー情報１１００に基づいて、コンポーネントの取得要求をコンポーネント管理部３０２に送信する（ステップＳ１２０６）。すなわち、フロー実行部３０１は、図８に示す処理フロー情報１１００の処理定義１１０５の「"ｃｏｍｐｏｎｅｎｔ"」に定義されている「"ｕｐｌｏａｄＦｉｌｅＡ"」を含むコンポーネントの取得要求をコンポーネント管理部３０２に送信する。
【０１６７】
コンポーネント管理部３０２は、コンポーネントの取得要求を受信すると、当該取得要求に含まれる「"ｕｐｌｏａｄＦｉｌｅＡ"」に対応する配信Ａコンポーネント１３２０を生成する（ステップＳ１２０７）。なお、配信Ａコンポーネント１３２０の生成は、コンポーネント共通Ｉ／Ｆ１３００を用いて行うことができる。
【０１６８】
そして、コンポーネント管理部３０２は、生成した配信Ａコンポーネント１３２０をフロー実行部３０１に返信する。すなわち、コンポーネント管理部３０２は、例えば、配信Ａコンポーネント１３２０が展開されたメモリ（例えばＲＡＭ１４）上のアドレスをフロー実行部３０１に返信する。
【０１６９】
フロー実行部３０１は、配信Ａコンポーネント１３２０が返信されると、コンポーネントの仮実行要求を、当該配信Ａコンポーネント１３２０に送信する（ステップＳ１１２０８）。なお、コンポーネントの処理実行要求は、配信Ａコンポーネント１３２０を仮実行するための要求であり、データと、パラメータ情報とが含まれる。
【０１７０】
ここで、上記のステップＳ１２０８において、データとは、ＯＣＲコンポーネント１３１０から返信されたデータである。
【０１７１】
また、上記のステップＳ１２０８において、パラメータ情報とは、図８に示す処理フロー情報１１００の処理定義１１０５の「"ｐａｒａｍｅｔｅｒｓ"」に定義されている各パラメータ情報である。
【０１７２】
すなわち、上記のステップＳ１２０８におけるコンポーネントの仮実行要求には、パラメータ情報「"ｆｉｌｅｎａｍｅ"：ｎｕｌｌ」と、パラメータ情報「"ｆｏｌｄｅｒ"：ｎｕｌｌ」とが含まれる。また、上記のステップＳ１２０８におけるコンポーネントの仮実行要求には、Ｗｅｂサービス処理部１２０から受信したユーザ指定情報「"ｆｉｌｅｎａｍｅ"："ｓａｍｐｌｅ．ｐｄｆ"」と、ユーザ指定情報「"ｆｏｌｄｅｒ"："ｆｏｌｄｅｒ１"」とが含まれる。
【０１７３】
配信Ａコンポーネント１３２０は、コンポーネントの仮実行要求を受信すると、当該仮実行要求に含まれるデータと、パラメータ情報と、ユーザ指定情報とを用いて、仮実行処理を行う（ステップＳ１２０９）。
【０１７４】
ここで、配信Ａコンポーネント１３２０の仮実行処理について、図１４を参照しながら説明する。図１４は、本実施形態に係る配信Ａコンポーネント１３２０の仮実行処理の一例を示すシーケンス図である。
【０１７５】
配信Ａコンポーネント１３２０は、コンポーネントの仮実行要求を受信すると、型変換要求を型変換管理部３０４に送信する（ステップＳ１４０１）。なお、当該型変換要求には、データと、配信Ａコンポーネント１３２０が扱うことができるデータ型を示す「ＬｏｃａｌＦｉｌｅＰａｔｈ」の指定とが含まれる。
【０１７６】
型変換管理部３０４は、型変換要求を受信すると、当該型変換要求に含まれるデータのデータ型と、指定されたデータ型とが一致するか否かをチェックする（ステップＳ１４０２）。
【０１７７】
ここで、型変換要求に含まれるデータのデータ型は「ＬｏｃａｌＦｉｌｅＰａｔｈ」であり、指定されたデータ型も「ＬｏｃａｌＦｉｌｅＰａｔｈ」である。したがって、型変換管理部３０４は、型変換要求に含まれるデータのデータ型と、指定されたデータ型とが一致するものと判断する。
【０１７８】
すると、型変換管理部３０４は、型変換要求に含まれるデータを配信Ａコンポーネント１３２０に送信する（ステップＳ１４０３）。このように、データ型のチェック（ステップＳ１４０２の処理）において、データのデータ型と、指定されたデータ型とが一致すると判断された場合には、型変換管理部３０４は、型変換の生成を行わない。
【０１７９】
配信Ａコンポーネント１３２０は、型変換管理部３０４からデータを受信すると、当該データと、パラメータ情報と、ユーザ指定情報とを用いて、ストレージＡへのアップロード処理の仮実行処理を行う（ステップＳ１４０４）。このとき、配信Ａコンポーネント１３２０は、パラメータ情報にユーザ指定情報を定義して、「"ｆｉｌｅｎａｍｅ"："ｓａｍｐｌｅ．ｐｄｆ"」及び「"ｆｏｌｄｅｒ"："ｆｏｌｄｅｒ１"」とする。
【０１８０】
ここで、配信Ａコンポーネント１３２０は、ストレージＡへのアップロード処理の仮実行処理として、例えば、データチェックやパラメータ情報チェック等を行う。すなわち、配信Ａコンポーネント１３２０は、例えば、データ（データ型「ＬｏｃａｌＦｉｌｅＰａｔｈ」）により示される電子ファイル）のページ数やファイル数、サイズ等が、予め設定された上限を超えているか否か等のデータチェックを行う。また、配信Ａコンポーネント１３２０は、例えば、ファイル名（パラメータ情報「"ｆｉｌｅｎａｍｅ"」のパラメータ値）に使用不可能な文字が含まれているか否か等のパラメータ情報チェックを行う。更に、配信Ａコンポーネント１３２０は、例えば、保存先フォルダ（パラメータ情報「"ｆｏｌｄｅｒ"」のパラメータ値）が存在するか否か等のパラメータ情報チェックを行う。
【０１８１】
なお、配信Ａコンポーネント１３２０は、ストレージＡへのアップロード処理の仮実行処理として、例えば、外部ストレージシステム３０１に対する接続確認（外部ストレージシステム３０１との間でデータ通信が可能か否かの確認）を行っても良い。また、配信Ａコンポーネント１３２０は、フロー実行部３０１から受信したデータを、より軽量なデータ（サイズが小さいデータ）に変更した上で、当該変更後のデータを用いて、ストレージＡへのアップロード処理の仮実行処理を行っても良い。更に、配信Ａコンポーネント１３２０は、このような軽量なデータを保持しておき、正式実行処理で当該データを利用しても良い。
【０１８２】
このように、配信Ａコンポーネント１３２０は、データチェックやパラメータ情報チェック等の仮実行処理を行う。
【０１８３】
そして、配信Ａコンポーネント１３２０は、仮実行の処理結果を示すデータをフロー実行部３０１に返信する。ここで、配信Ａコンポーネント１３２０は、例えば、データチェックでデータのページ数やファイル数、サイズ等が、予め設定された上限を超えていると判定された場合、エラーが発生したことを示すデータをフロー実行部３０１に返信する。同様に、配信Ａコンポーネント１３２０は、例えば、パラメータ情報チェックでパラメータ値に指定されたファイル名に使用不可能な文字が含まれると判定された場合等に、エラーが発生したことを示すデータをフロー実行部３０１に返信する。また、同様に、配信Ａコンポーネント１３２０は、例えば、パラメータ情報チェックでパラメータ値に指定された保存先フォルダが存在しないと判定された場合等に、エラーが発生したことを示すデータをフロー実行部３０１に返信する。
【０１８４】
図１２に戻る。フロー実行部３０１は、配信Ａコンポーネント１３２０からデータを受信すると、処理フローの実行処理を継続するか否かを判定する（ステップＳ１２１０）。すなわち、フロー実行部３０１は、配信Ａコンポーネント１３２０から返信されたデータが、エラー等が発生したことを示すものであるか否かを判定する。
【０１８５】
ここで、上記のステップＳ１２１０において、配信Ａコンポーネント１３２０から返信されたデータが、エラー等が発生したことを示すものであると判定された場合、フロー実行部３０１は、エラー等の発生を機器２０に通知した上で、処理を終了させる。一方で、配信Ａコンポーネント１３２０から返信されたデータが、エラー等が発生したことを示すものでない場合、フロー実行部３０１は、処理を継続させる。以降では、フロー実行部３０１は、配信Ａコンポーネント１３２０から返信されたデータは、エラー等が発生したことを示すものでないとして説明を続ける。
【０１８６】
フロー実行部３０１は、コンポーネントの正式実行要求を、ＯＣＲコンポーネント１３１０に送信する（ステップＳ１２１１）。なお、コンポーネントの正式実行要求には、データと、パラメータ情報とが含まれる。
【０１８７】
このように、フロー実行部３０１は、仮実行フェーズでエラー等が発生しなかった場合、正式実行フェーズを行う。
【０１８８】
ここで、上記のステップＳ１２１１において、データとは、データ型「ＩｎｐｕｔＳｔｒｅａｍ」として、アプリ実行部１２２から受信した電子ファイル（アプリケーションの実行要求に含まれる電子ファイル）である。
【０１８９】
また、上記のステップＳ１２１１において、パラメータ情報とは、図８に示す処理フロー情報１１００の処理定義１１０４の「"ｐａｒａｍｅｔｅｒｓ"」に定義されている各パラメータ情報である。すなわち、上記のステップＳ１２１１におけるコンポーネントの処理実行要求には、パラメータ情報「"ｌａｎｇｕａｇｅ"："Ｅｎｇｌｉｓｈ"」と、パラメータ情報「"ｏｕｔｐｕｔＴｙｐｅ"："ｐｄｆ"」とが含まれる。
【０１９０】
ＯＣＲコンポーネント１３１０は、コンポーネントの正式実行要求を受信すると、当該正式実行要求に含まれるデータと、パラメータ情報とを用いて、正式実行処理を行う（ステップＳ１２１２）。
【０１９１】
ここで、ＯＣＲコンポーネント１３１０の正式実行処理について、図１５を参照しながら説明する。図１５は、本実施形態に係るＯＣＲコンポーネント１３１０の正式実行処理の一例を示すシーケンス図である。
【０１９２】
ＯＣＲコンポーネント１３１０は、コンポーネントの正式実行要求を受信すると、型変換要求を型変換管理部３０４に送信する（ステップＳ１５０１）。なお、当該型変換要求には、データと、ＯＣＲコンポーネント１３１０が扱うことができるデータ型を示す「ＬｏｃａｌＦｉｌｅＰａｔｈ」の指定とが含まれる。
【０１９３】
型変換管理部３０４は、型変換要求を受信すると、当該型変換要求に含まれるデータのデータ型と、指定されたデータ型とが一致するか否かをチェックする（ステップＳ１５０２）。
【０１９４】
ここで、型変換要求に含まれるデータのデータ型は「ＬｏｃａｌＦｉｌｅＰａｔｈ」であり、指定されたデータ型も「ＬｏｃａｌＦｉｌｅＰａｔｈ」である。したがって、型変換管理部３０４は、型変換要求に含まれるデータのデータ型と、指定されたデータ型とが一致するものと判断する。
【０１９５】
すると、型変換管理部３０４は、型変換要求に含まれるデータをＯＣＲコンポーネント１３１０に送信する（ステップＳ１５０３）。このように、データ型のチェック（ステップＳ１５０２の処理）において、データのデータ型と、指定されたデータ型とが一致すると判断された場合には、型変換管理部３０４は、型変換の生成を行わない。
【０１９６】
ＯＣＲコンポーネント１３１０は、型変換管理部３０４からデータを受信すると、パラメータ情報を用いて、ＯＣＲ処理の正式実行を行う（ステップＳ１５０４）。
【０１９７】
すなわち、ＯＣＲコンポーネント１３１０は、ドキュメントサービス部１３０のＯＣＲ処理部１３１により、当該データ（データ型「ＬｏｃａｌＦｉｌｅＰａｔｈ」）により示される電子ファイルに対してＯＣＲ処理を行う。このとき、ＯＣＲコンポーネント１３１０は、ＯＣＲ言語を「英語」として、当該電子ファイルに対してＯＣＲ処理を行った上で、ＯＣＲ処理後の電子ファイルのデータ形式を「ＰＤＦ」とする。
【０１９８】
そして、ＯＣＲコンポーネント１３１０は、処理結果を示すデータをフロー実行部３０１に返信する。なお、ここで返信されるデータは、ＯＣＲコンポーネント１３１０によりＯＣＲ処理された電子ファイルを示すデータ（データ型「ＬｏｃａｌＦｉｌｅＰａｔｈ」）である。
【０１９９】
図１２に戻る。フロー実行部３０１は、コンポーネントの正式実行要求を、配信Ａコンポーネント１３２０に送信する（ステップＳ１２１３）。なお、コンポーネントの正式実行要求には、データと、パラメータ情報とが含まれる。
【０２００】
ここで、上記のステップＳ１２１３において、データとは、ＯＣＲコンポーネント１３１０から返信されたデータ（すなわち、ＯＣＲ処理された電子ファイルを示すデータ（データ型「ＬｏｃａｌＦｉｌｅＰａｔｈ」））である。
【０２０１】
また、上記のステップＳ１２１３において、パラメータ情報とは、図８に示す処理フロー情報１１００の処理定義１１０５の「"ｐａｒａｍｅｔｅｒｓ"」に定義されている各パラメータ情報である。
【０２０２】
すなわち、上記のステップＳ１２１３におけるコンポーネントの正式実行要求には、パラメータ情報「"ｆｉｌｅｎａｍｅ"：ｎｕｌｌ」と、パラメータ情報「"ｆｏｌｄｅｒ"：ｎｕｌｌ」とが含まれる。また、上記のステップＳ１２１３におけるコンポーネントの正式実行要求には、Ｗｅｂサービス処理部１２０から受信したユーザ指定情報「"ｆｉｌｅｎａｍｅ"："ｓａｍｐｌｅ．ｐｄｆ"」と、ユーザ指定情報「"ｆｏｌｄｅｒ"："ｆｏｌｄｅｒ１"」とが含まれる。
【０２０３】
配信Ａコンポーネント１３２０は、コンポーネントの正式実行要求を受信すると、当該正式実行要求に含まれるデータと、パラメータ情報と、ユーザ指定情報とを用いて、正式実行処理を行う（ステップＳ１２１４）。
【０２０４】
ここで、配信Ａコンポーネント１３２０の正式実行処理について、図１６を参照しながら説明する。図１６は、本実施形態に係る配信Ａコンポーネント１３２０の正式実行処理の一例を示すシーケンス図である。
【０２０５】
配信Ａコンポーネント１３２０は、コンポーネントの正式実行要求を受信すると、型変換要求を型変換管理部３０４に送信する（ステップＳ１６０１）。なお、当該型変換要求には、データと、配信Ａコンポーネント１３２０が扱うことができるデータ型を示す「ＬｏｃａｌＦｉｌｅＰａｔｈ」の指定とが含まれる。
【０２０６】
型変換管理部３０４は、型変換要求を受信すると、当該型変換要求に含まれるデータのデータ型と、指定されたデータ型とが一致するか否かをチェックする（ステップＳ１６０２）。
【０２０７】
ここで、型変換要求に含まれるデータのデータ型は「ＬｏｃａｌＦｉｌｅＰａｔｈ」であり、指定されたデータ型も「ＬｏｃａｌＦｉｌｅＰａｔｈ」である。したがって、型変換管理部３０４は、型変換要求に含まれるデータのデータ型と、指定されたデータ型とが一致するものと判断する。
【０２０８】
すると、型変換管理部３０４は、型変換要求に含まれるデータを配信Ａコンポーネント１３２０に送信する（ステップＳ１６０３）。このように、データ型のチェック（ステップＳ１６０２の処理）において、データのデータ型と、指定されたデータ型とが一致すると判断された場合には、型変換管理部３０４は、型変換の生成を行わない。
【０２０９】
配信Ａコンポーネント１３２０は、型変換管理部３０４からデータを受信すると、当該データと、パラメータ情報と、ユーザ指定情報とを用いて、ストレージＡへのアップロード処理の正式実行処理を行う（ステップＳ１６０４）。
【０２１０】
すなわち、まず、配信Ａコンポーネント１３２０は、パラメータ情報にユーザ指定情報を定義して、「"ｆｉｌｅｎａｍｅ"："ｓａｍｐｌｅ．ｐｄｆ"」及び「"ｆｏｌｄｅｒ"："ｆｏｌｄｅｒ１"」とする。次に、配信Ａコンポーネント１３２０は、パラメータ情報"ｆｉｌｅｎａｍｅ"："ｓａｍｐｌｅ．ｐｄｆ"」及び「"ｆｏｌｄｅｒ"："ｆｏｌｄｅｒ１"」を用いて、データにより示される電子ファイルのファイル名を「ｓａｍｐｌｅ．ｐｄｆ」とする。そして、配信Ａコンポーネント１３２０は、当該電子ファイルを、ストレージＡにおけるフォルダＩＤ「ｆｏｌｄｅｒ１」のフォルダにアップロード（保存）する。
【０２１１】
なお、配信Ａコンポーネント１３２０は、電子ファイルのアップロードを、ストレージＡ（外部ストレージシステム３０１）に対応する外部サービス連携部１４０１のファイル処理部１４１に送信する。すなわち、配信Ａコンポーネント１３２０は、例えば、「ｓｔｏｒａｇｅＡ／ｐｒｏｃｅｓｓ／ｆｏｌｄｅｒｓ」として共通Ｉ／Ｆ１４１１に定義されているＡＰＩを用いることで、電子ファイルのアップロードを行う。
【０２１２】
そして、配信Ａコンポーネント１３２０は、処理結果を示すデータをフロー実行部３０１に返信する。なお、ここで返信されるデータは、配信Ａコンポーネント１３２０の処理結果を示すデータ（例えば、電子ファイルのアップロードが正常終了したことを示すデータ）である。
【０２１３】
以上により、本実施形態に係るサービス提供システム１０は、機器２０のユーザに対して、「ＯＣＲ配信Ａ」サービスを提供することができる。このとき、本実施形態に係るサービス提供システム１０は、当該サービスを実現する一連の処理を仮実行して、当該仮実行でエラー等が発生しなかった場合に、当該一連の処理を正式実行する。
【０２１４】
これにより、本実施形態に係るサービス提供システム１０では、例えば、一連の処理の実行に用いられるパラメータ情報の誤りや外部サービスとの通信不可、電子ファイルの形式誤り等が無いことをチェックした上で、当該一連の処理を正式実行することができる。
【０２１５】
なお、本実施形態に係るサービス提供システム１０では、機器２０のユーザに提供するサービスを実現する一連の処理を仮実行した後に、正式実行するものとしたが、これに限られず、仮実行を行わなくても良い。
【０２１６】
例えば、仮実行を行うか否かをアプリ画面等において機器２０のユーザが選択することができても良い。この場合、機器２０は、上記のステップＳ９１１において、仮実行を行うか否かを示す情報を含む処理フローの実行要求をＷｅｂサービス処理部１２０に送信すれば良い。
【０２１７】
また、例えば、仮実行を行うか否かの情報（フラグ等）が処理フロー情報１１００に定義されていても良い。この場合、フロー実行部３０１は、アプリ管理部１１１から取得した処理フロー情報１１００に定義されているフラグ等から仮実行を行うか否かを判定すれば良い。
【０２１８】
次に、「ＯＣＲ配信Ａ」サービスを実現する処理フローの実行処理において、仮実行フェーズでエラー等が発生する場合について、図１７を参照しながら説明する。図１７は、本実施形態に係る処理フローの実行処理の他の例を示すシーケンス図である。なお、図１７のステップＳ１７０１〜ステップＳ１７０３の処理は、図１２のステップＳ１２０１〜ステップＳ１２０３の処理と同様であるため、その説明を省略する。
【０２１９】
ステップＳ１７０３に続いて、ＯＣＲコンポーネント１３１０は、コンポーネントの仮実行要求を受信すると、当該仮実行要求に含まれるデータと、パラメータ情報とを用いて、仮実行処理を行う（ステップＳ１７０４）。
【０２２０】
ここで、以降では、上記のステップＳ１７０４のＯＣＲコンポーネント１３１０の仮実行処理でエラー等が発生したものとする。この場合、ＯＣＲコンポーネント１３１０は、エラー等が発生したことを示すデータをフロー実行部３０１に返信する。
【０２２１】
フロー実行部３０１は、ＯＣＲコンポーネント１３１０からデータを受信すると、処理フローの実行処理を継続するか否かを判定する（ステップＳ１７０５）。すなわち、フロー実行部３０１は、ＯＣＲコンポーネント１３１０から返信されたデータが、エラー等が発生したことを示すものであるか否かを判定する。
【０２２２】
ここで、上記のステップＳ１７０４において、ＯＣＲコンポーネント１３１０から返信されたデータは、エラー等が発生したことを示すものである。この場合、フロー実行部３０１は、Ｗｅｂサービス処理部１２０を介して、エラー等の発生を機器２０に通知（ステップＳ１７０６）した上で、処理を終了させる。
【０２２３】
＜まとめ＞
以上のように、本実施形態に係るサービス提供システム１０は、機器２０のユーザに提供するサービスを実現する一連の処理を仮実行した後、当該仮実行でエラー等が発生しなかった場合に、当該一連の処理を正式実行する。
【０２２４】
また、本実施形態に係るサービス提供システム１０は、仮実行フェーズでエラー等が発生した場合には、当該エラー等の発生を機器２０に通知した上で、正式実行フェーズを行わない。すなわち、本実施形態に係るサービス提供システム１０では、一連の処理でエラー等が発生するか否かを仮実行フェーズでチェックした上で、エラー等が発生する場合には、正式実行フェーズを行わずに、機器２０のユーザに対して、エラー等の発生を通知する。
【０２２５】
これにより、本実施形態に係るサービス提供システム１０では、例えば、一連の処理の実行に用いられるパラメータ情報の誤りや外部サービスとの通信不可、電子ファイルの形式誤り等が無いことをチェックした上で、当該一連の処理を正式実行することができる。
【０２２６】
また、本実施形態に係るサービス提供システム１０では、サービスを実現する一連の処理でエラー等が発生する場合に、機器２０のユーザに対して、エラー等の発生を早期に通知することができる。したがって、本実施形態に係るサービス提供システム１０では、一連の処理でエラー等が発生する場合に、ユーザの待ち時間を削減することができると共に、不要なシステムリソース（例えば、ＣＰＵ１６等）の消費を削減することができる。特に、本実施形態に係るサービス提供システム１０は、一連の処理に含まれる各処理のうち、後に実行される処理でエラー等が発生する場合に、ユーザ待ち時間や不要なシステムリソースの消費をより削減することができる。
【０２２７】
本発明は、具体的に開示された上記の実施形態に限定されるものではなく、特許請求の範囲から逸脱することなく、種々の変形や変更が可能である。
【符号の説明】
【０２２８】
１          情報処理システム
１０        サービス提供システム
２０        機器
１１０      入出力サービス処理部
１１１      アプリ管理部
１１２      ロジック処理部
１１３      データＩ／Ｆ部
１２０      Ｗｅｂサービス処理部
１３０      ドキュメントサービス部
１４０      外部サービス連携部
１５０      アプリ情報記憶部
１６０      画面情報記憶部
３０１      フロー実行部
３０２      コンポーネント管理部
３０３      コンポーネント群
３０４      型変換管理部
３０５      型変換群
１０００    アプリ情報
１１００    処理フロー情報
２０００    画面情報
３０００    型変換情報テーブル
【先行技術文献】
【特許文献】
【０２２９】
【特許文献１】特許第４０３９１９１号公報
【図１】
2018037746.tif 000003
【図２】
2018037746.tif 000004
【図３】
2018037746.tif 000005
【図４】
2018037746.tif 000006
【図５】
2018037746.tif 000007
【図６】
2018037746.tif 000008
【図７】
2018037746.tif 000009
【図８】
2018037746.tif 000010
【図９】
2018037746.tif 000011
【図１０】
2018037746.tif 000012
【図１１】
2018037746.tif 000013
【図１２】
2018037746.tif 000014
【図１３】
2018037746.tif 000015
【図１４】
2018037746.tif 000016
【図１５】
2018037746.tif 000017
【図１６】
2018037746.tif 000018
【図１７】
2018037746.tif 000019