(57)【要約】【課題】複数ページを含む電子データを用いた一連の処理の実行時間を短縮する。【解決手段】電子データを用いた一連の処理を、コンポーネントを組み合わせて実行するアプリ毎に、該アプリを識別するアプリ識別情報と、前記一連の処理に関する情報と、前記電子データを指定させる画面の画面情報とを関連付けて記憶する記憶手段と、一の機器から前記アプリ識別情報を含む第１の要求を受け付けると、前記アプリ識別情報に関連付けられている前記画面情報を送信する送信手段と、前記一の機器に表示された画面を介して指定された電子データに関する情報を含む第２の要求を受け付けると、前記アプリ識別情報に関連付けられている前記一連の処理に関する情報に基づく一連の処理を、前記電子データを用いて実行する処理実行手段と、を有し、前記処理実行手段は、コンポーネントによる処理を、前記電子データに含まれる複数のページデータに対して並列に実行する。【選択図】図１１
2017079030.tif 000002
【特許請求の範囲】
【請求項１】
１以上の情報処理装置を含む情報処理システムであって、
電子データを用いた一連の処理を、該一連の処理それぞれを実行するコンポーネントを組み合わせて実行するアプリケーション毎に、該アプリケーションを識別するアプリ識別情報と、前記一連の処理に関する情報と、該一連の処理に用いる前記電子データを指定させる画面の画面情報とを関連付けて記憶する記憶手段と、
前記情報処理システムに接続される１以上の機器のうちの一の機器から前記アプリ識別情報を含む第１の要求を受け付けると、該第１の要求に含まれる前記アプリ識別情報に関連付けて前記記憶手段に記憶されている前記画面情報を、要求元の前記一の機器に送信する送信手段と、
前記送信手段により送信された前記画面情報に基づき前記一の機器に表示された画面を介してユーザにより指定された電子データに関する情報を含む第２の要求を前記一の機器から受け付けると、前記アプリ識別情報に関連付けて前記記憶手段により記憶されている前記一連の処理に関する情報に基づく一連の処理を、前記電子データに関する情報により指定される電子データを用いて実行する処理実行手段と、
を有し、
前記処理実行手段は、
前記一連の処理それぞれを実行するコンポーネントによる処理を、前記電子データに含まれる複数のページデータに対してそれぞれ並列に実行する、情報処理システム。
【請求項２】
前記処理実行手段は、
前記コンポーネントを生成する生成手段を有し、
前記コンポーネントが生成されていない場合、前記生成手段により前記コンポーネントを生成し、該生成されたコンポーネントによる処理を、前記ページデータに対して実行する、請求項１に記載の情報処理システム。
【請求項３】
前記ページデータ毎に、該ページデータに対する前記一連の処理の処理結果を記憶する結果記憶手段を有し、
前記処理実行手段は、
前記複数のページデータに対して前記一連の処理を実行した場合、前記複数のページデータそれぞれの処理結果を前記結果記憶手段から取得し、前記一の機器に送信する、請求項１又は２に記載の情報処理システム。
【請求項４】
前記処理実行手段は、
前記ページデータのデータ型を所定のデータ型に変換する型変換手段を１以上有し、
前記ページデータのデータ型を前記型変換手段により前記コンポーネントが処理可能なデータ型に変換した後、前記コンポーネントによる処理を実行することにより、前記電子データを用いた前記一連の処理を実行する、請求項１ないし３のいずれか１項に記載の情報処理システム。
【請求項５】
前記コンポーネントは、外部サービスに関する処理を実行するコンポーネントを含み、
前記外部サービスに関する処理を実行するコンポーネントには、
外部サービスに対してページデータをアップロードする処理を実行するコンポーネントを少なくとも含む、請求項１ないし４のいずれか１項に記載の情報処理システム。
【請求項６】
情報処理装置であって、
電子データを用いた一連の処理を、該一連の処理それぞれを実行するコンポーネントを組み合わせて実行するアプリケーション毎に、該アプリケーションを識別するアプリ識別情報と、前記一連の処理に関する情報と、該一連の処理に用いる前記電子データを指定させる画面の画面情報とを関連付けて記憶する記憶手段と、
前記情報処理装置に接続される１以上の機器のうちの一の機器から前記アプリ識別情報を含む第１の要求を受け付けると、該第１の要求に含まれる前記アプリ識別情報に関連付けて前記記憶手段に記憶されている前記画面情報を、要求元の前記一の機器に送信する送信手段と、
前記送信手段により送信された前記画面情報に基づき前記一の機器に表示された画面を介してユーザにより指定された電子データに関する情報を含む第２の要求を前記一の機器から受け付けると、前記アプリ識別情報に関連付けて前記記憶手段により記憶されている前記一連の処理に関する情報に基づく一連の処理を、前記電子データに関する情報により指定される電子データを用いて実行する処理実行手段と、
を有し、
前記処理実行手段は、
前記一連の処理それぞれを実行するコンポーネントによる処理を、前記電子データに含まれる複数のページデータに対してそれぞれ並列に実行する、情報処理装置。
【請求項７】
１以上の情報処理装置を含む情報処理システムであって、電子データを用いた一連の処理を、該一連の処理それぞれを実行するコンポーネントを組み合わせて実行するアプリケーション毎に、該アプリケーションを識別するアプリ識別情報と、前記一連の処理に関する情報と、該一連の処理に用いる前記電子データを指定させる画面の画面情報とを関連付けて記憶する記憶手段を有する情報処理システムに用いられる情報処理方法において、
前記情報処理システムに接続される１以上の機器のうちの一の機器から前記アプリ識別情報を含む第１の要求を受け付けると、該第１の要求に含まれる前記アプリ識別情報に関連付けて前記記憶手段に記憶されている前記画面情報を、要求元の前記一の機器に送信する送信手順と、
前記送信手順により送信された前記画面情報に基づき前記一の機器に表示された画面を介してユーザにより指定された電子データに関する情報を含む第２の要求を前記一の機器から受け付けると、前記アプリ識別情報に関連付けて前記記憶手段により記憶されている前記一連の処理に関する情報に基づく一連の処理を、前記電子データに関する情報により指定される電子データを用いて実行する処理実行手順と、
を有し、
前記処理実行手順は、
前記一連の処理それぞれを実行するコンポーネントによる処理を、前記電子データに含まれる複数のページデータに対してそれぞれ並列に実行する、情報処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理システム、情報処理装置、及び情報処理方法に関する。
【背景技術】
【０００２】
近年、クラウドコンピューティング等により多種多様な外部サービスが提供されるようになった。例えば、ユーザにより指定された電子データを外部ストレージに保管する外部サービス等が知られている。
【０００３】
また、コピーやプリント、スキャン、ファクシミリ送信、メール配信、リポジトリへの格納、ＯＣＲ処理（Optical Character Reader）等の複数のサービスを連携させた一連の処理を実行する技術が知られている（例えば特許文献１参照）。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、上記の従来技術においては、一連の処理に含まれる各処理が順に実行されるため、当該一連の処理の実行が完了するまで時間が掛かる場合があった。
【０００５】
一方で、一連の処理の処理対象の電子データの構造によっては、当該一連の処理に含まれる各処理を並列に実行することができる場合がある。
【０００６】
例えば、ＯＣＲ処理した後、リポジトリへの格納処理を行う一連の処理において、複数のページを含む電子データが処理対象であるものとする。この場合、当該電子データのＮページ目に対するリポジトリへの格納処理と、当該電子データに対するＮ＋１ページ目に対するＯＣＲ処理とは並列に実行することができる。
【０００７】
本発明の実施の形態は、上記の点に鑑みてなされたもので、複数ページを含む電子データを用いた一連の処理の実行時間を短縮することを目的とする。
【課題を解決するための手段】
【０００８】
上記目的を達成するため、本発明の実施の形態は、１以上の情報処理装置を含む情報処理システムであって、電子データを用いた一連の処理を、該一連の処理それぞれを実行するコンポーネントを組み合わせて実行するアプリケーション毎に、該アプリケーションを識別するアプリ識別情報と、前記一連の処理に関する情報と、該一連の処理に用いる前記電子データを指定させる画面の画面情報とを関連付けて記憶する記憶手段と、前記情報処理システムに接続される１以上の機器のうちの一の機器から前記アプリ識別情報を含む第１の要求を受け付けると、該第１の要求に含まれる前記アプリ識別情報に関連付けて前記記憶手段に記憶されている前記画面情報を、要求元の前記一の機器に送信する送信手段と、前記送信手段により送信された前記画面情報に基づき前記一の機器に表示された画面を介してユーザにより指定された電子データに関する情報を含む第２の要求を前記一の機器から受け付けると、前記アプリ識別情報に関連付けて前記記憶手段により記憶されている前記一連の処理に関する情報に基づく一連の処理を、前記電子データに関する情報により指定される電子データを用いて実行する処理実行手段と、を有し、前記処理実行手段は、前記一連の処理それぞれを実行するコンポーネントによる処理を、前記電子データに含まれる複数のページデータに対してそれぞれ並列に実行する。
【発明の効果】
【０００９】
本発明の実施の形態によれば、複数ページを含む電子データを用いた一連の処理の実行時間を短縮することができる。
【図面の簡単な説明】
【００１０】
【図１】本実施形態に係る情報処理システムの一例のシステム構成を示す図である。
【図２】本実施形態に係るサービス提供システムの一例のハードウェア構成を示す図である。
【図３】本実施形態に係る画像形成装置の一例のハードウェア構成を示す図である。
【図４】本実施形態に係る情報処理システムの一例の機能構成を示す図である。
【図５】共通Ｉ／Ｆ及び固有Ｉ／Ｆの一例を説明するための図である。
【図６】処理フロー情報の一例を示す図である。
【図７】本実施形態に係るロジック処理部の一例の機能構成を示す図である。
【図８】型変換情報テーブルの一例を示す図である。
【図９】本実施形態に係るサービス利用の全体処理の一例を示すシーケンス図である。
【図１０】サービス一覧画面からサービス画面への画面遷移の一例を示す図である。
【図１１】ページ毎に処理フローを実行する場合について模式的に説明する図である。
【図１２】本実施形態に係る処理フローの実行処理（１ページ目）の一例のシーケンス図である。
【図１３】ジョブ管理情報テーブルの一例を示す図である。
【図１４】コンポーネント情報テーブルの一例を示す図である。
【図１５】結果情報テーブルの一例を示す図である。
【図１６】本実施形態に係る処理フローの実行処理（２ページ目以降）の一例のシーケンス図である。
【発明を実施するための形態】
【００１１】
以下、本発明の実施の形態について、図面を参照しながら詳細に説明する。
【００１２】
＜システム構成＞
まず、本実施形態に係る情報処理システム１の構成について、図１を参照しながら説明する。図１は、本実施形態に係る情報処理システムの一例のシステム構成を示す図である。
【００１３】
本実施形態に係る情報処理システム１は、サービス提供環境Ｅ１と、ユーザ環境Ｅ２と、外部ストレージシステム３０とを含み、インターネット等の広域的なネットワークＮ１を介して通信可能に接続されている。
【００１４】
サービス提供環境Ｅ１は、ネットワークを介して、クラウドサービス等の外部サービスと連携した所定のサービスを提供するシステム環境である。なお、本実施形態では、外部サービスの具体例としてクラウドサービスを採用して説明するが、ＡＳＰ（Application Service Provider）によって提供されるサービスやＷｅｂサービス等、ネットワークを介して提供される各種のサービスに関して本実施形態が適用されても良い。
【００１５】
サービス提供環境Ｅ１は、一台以上の情報処理装置で実現されるサービス提供システム１０を有する。サービス提供システム１０は、ネットワークを介して所定のサービスを提供する。例えば、サービス提供システム１０は、ユーザ環境Ｅ２の画像形成装置２０において原稿をスキャンして生成された電子ファイルを、ＯＣＲ処理して、外部ストレージシステム３０に保存するサービス（スキャン配信サービス）を提供する。
【００１６】
本実施形態に係るサービス提供システム１０は、上述したスキャン配信サービスを提供するものとして説明する。
【００１７】
ただし、サービス提供システム１０により提供されるサービスは、これに限られない。例えば、サービス提供システム１０は、外部ストレージシステム３０に保存されている電子ファイルを、ユーザ環境Ｅ２の画像形成装置２０で印刷するサービス（クラウドプリントサービス）を提供しても良い。また、例えば、サービス提供システム１０は、外部ストレージシステム３０に保存されている電子ファイルを、ユーザ環境Ｅ２のプロジェクタで投影するサービスを提供しても良い。さらに、例えば、サービス提供システム１０は、画像形成装置２０において原稿をスキャンして生成された電子ファイルを、ＯＣＲ処理した後、所定の言語に翻訳（例えば、英語を日本語に翻訳）して、外部ストレージシステム３０に保存するサービスを提供しても良い。
【００１８】
このように、サービス提供システム１０は、外部ストレージシステム３０と連携した各種のサービスを提供することができる。
【００１９】
なお、サービス提供システム１０の全部又は一部は、ユーザ環境Ｅ２に設置されていても良い。すなわち、サービス提供システム１０を構成する情報処理装置の全部又は一部は、ユーザ環境Ｅ２に包含されていても良い。
【００２０】
ユーザ環境Ｅ２は、例えば、画像形成装置２０を使用するユーザである企業等におけるシステム環境である。ユーザ環境Ｅ２は、一台以上の画像形成装置２０が、例えばＬＡＮ（Local Area Network）等のネットワークを介して接続されている。ユーザは、画像形成装置２０を用いて、サービス提供システム１０により提供される各種のサービスを利用することができる。
【００２１】
本実施形態に係る画像形成装置２０は、スキャン機能を有するＭＦＰ（Multifunction Peripheral）等である。なお、画像形成装置２０は、スキャン機能以外に、例えば、プリント機能やコピー機能、ファクシミリ（ＦＡＸ）通信機能等を有していても良い。
【００２２】
なお、以降では、複数の外部ストレージシステム３０について、各々を区別するときは、「外部ストレージシステム３０１」、「外部ストレージシステム３０２」等と添え字を用いて記載する。また、外部ストレージシステム３０１によって提供されるストレージサービスの名称を「外部ストレージＡ」、外部ストレージシステム３０２によって提供されるストレージサービスの名称を「外部ストレージＢ」等とする。
【００２３】
外部ストレージシステム３０は、ネットワークを介してストレージサービス（又はオンラインストレージ）と呼ばれるクラウドサービスを提供するコンピュータシステムである。ストレージサービスとは、外部ストレージシステム３０のストレージの記憶領域を貸し出すサービスである。
【００２４】
本実施形態に係るサービス提供システム１０により提供されるスキャン配信サービスでは、外部ストレージシステム３０によって貸し出される記憶領域に、ＯＣＲ処理された電子ファイルが保存（アップロード）される。
【００２５】
なお、外部ストレージシステム３０は、複数台の情報処理装置によって実現されるシステムであっても良い。また、図１に示される情報処理システム１の構成は一例であって、他の構成であっても良い。例えば、ユーザ環境Ｅ２には、画像形成装置２０に加えて又は画像形成装置２０に代えて、プロジェクタ、電子黒板、デジタルカメラ等の各種機器が含まれていても良い。すなわち、本実施形態に係る情報処理システム１のユーザ環境Ｅ２には、電子ファイルの入力及び／又は出力を行う各種機器が含まれ、これらの機器がサービス提供システム１０により提供される各種のサービスを利用しても良い。
【００２６】
＜ハードウェア構成＞
次に、本実施形態に係る情報処理システム１に含まれるサービス提供システム１０及び画像形成装置２０のハードウェア構成について、それぞれ図２及び図３を参照しながら説明する。
【００２７】
図２は、本実施形態に係るサービス提供システムの一例のハードウェア構成を示す図である。本実施形態に係るサービス提供システム１０は、入力装置１１と、表示装置１２と、外部Ｉ／Ｆ１３と、ＲＡＭ（Random Access Memory）１４とを有する。また、サービス提供システム１０は、ＲＯＭ（Read Only Memory）１５と、ＣＰＵ（Central Processing Unit）１６と、通信Ｉ／Ｆ１７と、ＨＤＤ（Hard Disk Drive）１８とを有する。これらの各ハードウェアは、それぞれがバスＢで接続されている。
【００２８】
入力装置１１は、キーボードやマウス、タッチパネル等を含み、ユーザが各操作信号を入力するのに用いられる。表示装置１２は、ディスプレイ等を含み、サービス提供システム１０による処理結果を表示する。なお、サービス提供システム１０は、必要なときに入力装置１１及び／又は表示装置１２をバスＢに接続して利用する形態であっても良い。
【００２９】
通信Ｉ／Ｆ１７は、サービス提供システム１０をネットワークＮ１に接続するインタフェースである。これにより、サービス提供システム１０は、通信Ｉ／Ｆ１７を介してデータ通信を行うことができる。
【００３０】
ＨＤＤ１８は、プログラムやデータを格納している不揮発性の記憶装置である。ＨＤＤ１８に格納されるプログラムやデータには、本実施形態を実現するプログラム、サービス提供システム１０全体を制御する基本ソフトウェアであるＯＳ（Operating System）、ＯＳ上において各種機能を提供するアプリケーションソフトウェア等がある。
【００３１】
なお、サービス提供システム１０は、ＨＤＤ１８に代え、記憶媒体としてフラッシュメモリを用いるドライブ装置（例えばソリッドステートドライブ：ＳＳＤ）を利用するものであっても良い。また、ＨＤＤ１８は、格納しているプログラムやデータを所定のファイルシステム及び／又はＤＢにより管理している。
【００３２】
外部Ｉ／Ｆ１３は、外部装置とのインタフェースである。外部装置には、記録媒体１３ａ等がある。これにより、サービス提供システム１０は、外部Ｉ／Ｆ１３を介して記録媒体１３ａの読み取り及び／又は書き込みを行うことができる。記録媒体１３ａには、フレキシブルディスク、ＣＤ、ＤＶＤ、ＳＤメモリカード、ＵＳＢメモリ等がある。
【００３３】
ＲＯＭ１５は、電源を切ってもプログラムやデータを保持することができる不揮発性の半導体メモリである。ＲＯＭ１５には、サービス提供システム１０の起動時に実行されるＢＩＯＳ（Basic Input/Output System）、ＯＳ設定、及びネットワーク設定等のプログラムやデータが格納されている。ＲＡＭ１４は、プログラムやデータを一時保持する揮発性の半導体メモリである。
【００３４】
ＣＰＵ１６は、ＲＯＭ１５やＨＤＤ１８等の記憶装置からプログラムやデータをＲＡＭ１４上に読み出し、処理を実行することで、サービス提供システム１０全体の制御や機能を実現する演算装置である。
【００３５】
本実施形態に係るサービス提供システム１０は、上記のハードウェア構成を有することにより、後述するような各種処理を実現できる。
【００３６】
図３は、本実施形態に係る画像形成装置の一例のハードウェア構成を示す図である。本実施形態に係る画像形成装置２０は、コントローラ２１と、操作パネル２２と、外部Ｉ／Ｆ２３と、通信Ｉ／Ｆ２４と、スキャナ２５とを有する。また、コントローラ２１は、ＣＰＵ３１と、ＲＡＭ３２と、ＲＯＭ３３と、ＮＶＲＡＭ３４と、ＨＤＤ３５とを有する。
【００３７】
ＲＯＭ３３は、各種プログラムやデータを格納している。ＲＡＭ３２は、プログラムやデータを一時保持する。ＮＶＲＡＭ３４は、例えば設定情報等を格納している。また、ＨＤＤ３５は、各種プログラムやデータを格納している。
【００３８】
ＣＰＵ３１は、ＲＯＭ３３やＮＶＲＡＭ３４、ＨＤＤ３５等からプログラムやデータ、設定情報等をＲＡＭ３２上に読み出し、処理を実行することで、画像形成装置２０全体の制御や機能を実現する。
【００３９】
操作パネル２２は、ユーザからの入力を受け付ける入力部と、表示を行う表示部とを備えている。外部Ｉ／Ｆ２３は、外部装置とのインタフェースである、外部装置には、記録媒体２３ａ等がある。これにより、画像形成装置２０は、外部Ｉ／Ｆ２３を介して記録媒体２３ａの読み取り及び／又は書き込みを行うことができる。なお、記録媒体２３ａには、例えば、ＩＣカード、フレキシブルディスク、ＣＤ、ＤＶＤ、ＳＤメモリカード、ＵＳＢメモリ等がある。
【００４０】
通信Ｉ／Ｆ２４は、画像形成装置２０をネットワークＮ１に接続するインタフェースである。これにより、画像形成装置２０は、通信Ｉ／Ｆ２４を介してデータ通信を行うことができる。スキャナ２５は、原稿を読み取って画像ファイル（電子ファイル）を生成するための読取装置である。
【００４１】
本実施形態に係る画像形成装置２０は、上記のハードウェア構成を有することにより、後述するような各種処理を実現できる。
【００４２】
＜機能構成＞
次に、本実施形態に係る情報処理システム１の機能構成について、図４を参照しながら説明する。図４は、本実施形態に係る情報処理システムの一例の機能構成を示す図である。
【００４３】
画像形成装置２０は、ＵＩ制御部２１０と、スキャン処理部２２０とを有する。これら各機能部は、画像形成装置２０にインストールされた１以上のプログラムが、ＣＰＵ３１に実行させる処理により実現される。
【００４４】
ＵＩ制御部２１０は、操作パネル２２に各種画面を表示させる。また、ＵＩ制御部２１０は、操作パネル２２に表示された各種画面におけるユーザの各種操作を受け付ける。
【００４５】
スキャン処理部２２０は、ＵＩ制御部２１０により受け付けられたユーザの操作に応じて、スキャナ２５で原稿をスキャンして電子ファイル（画像ファイル）を生成する。
【００４６】
ここで、本実施形態に係るスキャン処理部２２０は、複数のページで構成される原稿をスキャナ２５でスキャンした場合、複数のページを含む電子ファイルを生成する。
【００４７】
サービス提供システム１０は、サービス処理部１１０と、ドキュメントサービス部１５０と、外部ストレージ連携部１６０とを有する。これら各機能部は、サービス提供システム１０にインストールされた１以上のプログラムが、ＣＰＵ１６に実行させる処理により実現される。
【００４８】
また、サービス提供システム１０は、アプリ情報記憶部１９０を有する。当該記憶部は、ＨＤＤ１８を用いて実現可能である。なお、アプリ情報記憶部１９０は、サービス提供システム１０とネットワークを介して接続される記憶装置等を用いて実現されても良い。
【００４９】
サービス処理部１１０は、画像形成装置２０のＵＩ制御部２１０からの要求に応じて、後述するアプリ情報１０００により提供される各種のサービスに関する処理を行う。ここで、サービス処理部１１０は、アプリ管理部１２０と、ロジック処理部１３０と、データＩ／Ｆ部１４０とを有する。
【００５０】
アプリ管理部１２０は、アプリ情報記憶部１９０に記憶されているアプリ情報１０００を管理する。なお、アプリ情報１０００とは、外部ストレージシステム３０と連携した各種のサービスを提供するアプリケーションである。すなわち、サービス提供システム１０により提供される各種のサービスは、アプリ情報１０００により提供される。
【００５１】
また、アプリ管理部１２０は、画像形成装置２０のＵＩ制御部２１０からの要求に応じて、アプリ情報１０００に基づく各種の情報を返信する。
【００５２】
すなわち、アプリ管理部１２０は、画像形成装置２０のＵＩ制御部２１０からの要求に応じて、アプリ情報１０００に含まれる画面定義情報１１００を返信する。なお、画面定義情報１１００とは、アプリ情報１０００により提供されるサービス（例えば、スキャン配信サービス等）を利用するための画面であるサービス画面を表示させるための情報である。
【００５３】
また、アプリ管理部１２０は、ロジック処理部１３０からの要求に応じて、アプリ情報１０００に含まれる処理フロー情報１２００を返信する。なお、処理フロー情報１２００とは、アプリ情報１０００により提供されるサービス（例えば、スキャン配信サービス等）を実現する一連の処理に関する情報である。
【００５４】
ロジック処理部１３０は、画像形成装置２０のＵＩ制御部２１０からの要求に応じて、アプリ管理部１２０を介して、アプリ情報１０００に含まれる処理フロー情報１２００を取得する。そして、ロジック処理部１３０は、処理フロー情報１２００に基づいて、ドキュメントサービス部１５０や外部ストレージ連携部１６０のファイル処理部１７０等に処理の実行を要求することで、当該処理フロー情報１２００に基づく一連の処理（処理フロー）を実行する。
【００５５】
なお、ロジック処理部１３０は、後述するコンポーネントを組み合わせることにより、処理フロー情報１２００に基づく一連の処理（処理フロー）を実行する。
【００５６】
データＩ／Ｆ部１４０は、画像形成装置２０のＵＩ制御部２１０からの要求に応じて、外部ストレージ連携部１６０のデータ処理部１８０に対して、各種の要求（例えば、フォルダ一覧の取得要求等）を行う。
【００５７】
ドキュメントサービス部１５０は、各種の処理を実行するプログラム（モジュール）群である。これらのプログラムは、ロジック処理部１３０からの要求に応じて、後述するコンポーネントにより実行される。
【００５８】
ドキュメントサービス部１５０には、電子ファイルに対してＯＣＲ処理を実行するＯＣＲ処理１５１が含まれる。
【００５９】
なお、ドキュメントサービス部１５０には、これ以外にも、各種のプログラムが含まれても良い。例えば、ドキュメントサービス部１５０には、電子ファイルを画像形成装置２０が印刷可能な印刷データに変換する印刷変換プログラム、電子ファイルを圧縮又は解凍するための圧縮・解凍プログラム、言語の翻訳を行う翻訳プログラム等が含まれても良い。
【００６０】
外部ストレージ連携部１６０は、ロジック処理部１３０やデータＩ／Ｆ部１４０からの要求に応じて、外部ストレージシステム３０に対して、各種の要求（例えば、フォルダ一覧の取得要求やファイルの保存要求等）を行う。
【００６１】
本実施形態に係るサービス提供システム１０は、当該サービス提供システム１０と連携して処理を行う外部ストレージシステム３０毎に、それぞれ外部ストレージシステム３０と対応する外部ストレージ連携部１６０を有する。
【００６２】
すなわち、本実施形態に係るサービス提供システム１０は、外部ストレージシステム３０１と連携するための外部ストレージ連携部１６０１を有する。同様に、本実施形態に係るサービス提供システム１０は、外部ストレージシステム３０２と連携するための外部ストレージ連携部１６０２等を有する。
【００６３】
なお、以降では、複数の外部ストレージ連携部１６０について、各々を区別するときは、上記のように「外部ストレージ連携部１６０１」、「外部ストレージ連携部１６０２」等と添え字を用いて表す。
【００６４】
ここで、外部ストレージ連携部１６０は、ロジック処理部１３０からの要求を受け付けるファイル処理部１７０と、データＩ／Ｆ部１４０からの要求を受け付けるデータ処理部１８０とを有する。
【００６５】
ファイル処理部１７０は、外部ストレージシステム３０に対して、ファイル操作（例えば、取得、保存、編集等）を行うためのＡＰＩ（Application Programming Interface）が定義された共通Ｉ／Ｆ１７１及び固有Ｉ／Ｆ１７２を有する。
【００６６】
共通Ｉ／Ｆ１７１は、複数の外部ストレージシステム３０間で共通に利用できるＡＰＩであり、例えば図５（ａ）に示すＡＰＩが挙げられる。すなわち、ファイル処理部１７０の共通Ｉ／Ｆ１７１は、全ての外部ストレージシステム３０が提供しているファイル操作に関する機能（例えば、ファイルの取得、保存等）を利用するためのＡＰＩ群である。
【００６７】
固有Ｉ／Ｆ１７２は、特定の外部ストレージシステム３０で利用できるＡＰＩであり、例えば図５（ｂ）に示すＡＰＩが挙げられる。すなわち、ファイル処理部１７０の固有Ｉ／Ｆ１７２は、特定の外部ストレージシステム３０が提供しているファイル操作に関する機能（例えば、ドキュメントにファイルを付加等）を利用するためのＡＰＩ群である。
【００６８】
したがって、共通Ｉ／Ｆ１７１は、全ての外部ストレージ連携部１６０に対して同様に定義される。一方で、固有Ｉ／Ｆ１７２は、当該固有Ｉ／Ｆ１７２で定義されるＡＰＩが利用可能な特定の外部ストレージシステム３０に対応する外部ストレージ連携部１６０に対して定義される。
【００６９】
データ処理部１８０は、外部ストレージシステム３０に対して、ファイルの書誌情報等のメタデータ（例えば、ファイル一覧やフォルダ一覧等）を取得するためのＡＰＩが定義された共通Ｉ／Ｆ１８１及び固有Ｉ／Ｆ１８２を有する。
【００７０】
共通Ｉ／Ｆ１８１は、複数の外部ストレージシステム３０間で共通に利用できるＡＰＩであり、例えば図５（ｃ）に示すＡＰＩが挙げられる。すなわち、データ処理部１８０の共通Ｉ／Ｆ１８１は、全ての外部ストレージシステム３０が提供しているメタデータ取得に関する機能（例えば、ファイル一覧の取得、フォルダ一覧の取得等）を利用するためのＡＰＩ群である。
【００７１】
固有Ｉ／Ｆ１８２は、特定の外部ストレージシステム３０で利用できるＡＰＩであり、例えば図５（ｄ）に示すＡＰＩが挙げられる。すなわち、データ処理部１８０の固有Ｉ／Ｆ１８２は、特定の外部ストレージシステム３０が提供しているメタデータ取得に関する機能（例えば、画像ファイル一覧の取得等）を利用するためのＡＰＩ群である。
【００７２】
したがって、共通Ｉ／Ｆ１８１は、全ての外部ストレージ連携部１６０に対して同様に定義される。一方で、固有Ｉ／Ｆ１８２は、当該固有Ｉ／Ｆ１８２で定義されるＡＰＩが利用可能な特定の外部ストレージシステム３０に対応する外部ストレージ連携部１６０に対して定義される。
【００７３】
以上のように、本実施形態に係るサービス提供システム１０は、連携して処理を行う外部ストレージシステム３０毎に、それぞれの外部ストレージシステム３０に対応する外部ストレージ連携部１６０を有する。このため、連携先となる外部ストレージシステム３０を追加や削除（以降、「追加等」と表す。）する場合、当該追加等される外部ストレージシステム３０に対応する外部ストレージ連携部１６０をサービス提供システム１０に追加等すれば良い。
【００７４】
これにより、本実施形態に係るサービス提供システム１０では、連携先となる外部ストレージシステム３０の追加等に伴う影響を局所化することができる。換言すれば、本実施形態に係るサービス提供システム１０では、他の機能部（サービス処理部１１０やドキュメントサービス部１５０等）に影響を与えることなく、連携先となる外部ストレージシステム３０の追加等を行うことができる。なお、外部ストレージ連携部１６０の追加等は、ＳＤＫ（Software Development Kit）を用いて行うことができる。
【００７５】
また、外部ストレージ連携部１６０のファイル処理部１７０は、共通Ｉ／Ｆ１７１と固有Ｉ／Ｆ１７２とを異なるモジュール等で定義している。また、共通Ｉ／Ｆ１７１及び固有Ｉ／Ｆ１７２で定義されるＡＰＩは、外部ストレージシステム３０を一意に識別する「外部ストレージ名」を指定することで利用できる（すなわち、「外部ストレージ名」が可変部分となっている。）。
【００７６】
これにより、外部ストレージ連携部１６０を追加する場合、他の外部ストレージ連携部１６０のファイル処理部１７０に定義されている共通Ｉ／Ｆ１７１を再利用することができる。換言すれば、外部ストレージ連携部１６０を追加する場合、当該追加する外部ストレージ連携部１６０のファイル処理部１７０は、固有Ｉ／Ｆ１７２のみを開発すれば良い。このことは、データ処理部１８０の共通Ｉ／Ｆ１８１及び固有Ｉ／Ｆ１８２についても同様である。
【００７７】
アプリ情報記憶部１９０は、外部ストレージシステム３０と連携した各種のサービスを提供するアプリケーションであるアプリ情報１０００を記憶する。アプリ情報１０００には、画像形成装置２０にサービス画面の表示させるための画面定義情報１１００と、サービスを実現する一連の処理に関する情報である処理フロー情報１２００とが含まれる。
【００７８】
また、アプリ情報１０００には、当該アプリ情報１０００を一意に識別するアプリＩＤが関連付けられている。
【００７９】
ここで、本実施形態に係るスキャン配信サービスを提供するアプリ情報１０００に含まれる処理フロー情報１２００について、図６を参照しながら説明する。図６は、処理フロー情報の一例を示す図である。
【００８０】
図６に示す処理フロー情報１２００は、画像形成装置２０でスキャンして生成された電子ファイルをＯＣＲ処理した後、外部ストレージＡに配信するスキャン配信サービス（スキャン配信１）を実現する一連の処理に関する情報である。
【００８１】
図６に示す処理フロー情報１２００には、処理フロー情報１２００を一意に識別するフローＩＤ１２０１と、処理フロー情報１２００の名称を示すフロー名１２０２と、処理フロー情報１２００に基づく一連の処理の処理内容を示すフロー詳細１２０３とが含まれる。
【００８２】
また、フロー詳細１２０３には、ＯＣＲ処理に関する処理内容を示す処理内容１２０４と、外部ストレージＡへの配信（アップロード）処理に関する処理内容を示す処理内容１２０５とが含まれる。
【００８３】
処理内容１２０４には、ＯＣＲ処理を行うためのコンポーネントのコンポーネント名「ＯＣＲ」と、当該ＯＣＲ処理におけるパラメータ「language」及び「outputType」とが指定されている。また、処理内容１２０５には、外部ストレージＡへの配信処理を行うためのコンポーネントのコンポーネント名「配信Ａ」と、当該配信処理におけるパラメータ「folderID」とが指定されている。
【００８４】
これにより、処理フロー情報１２００に基づく一連の処理では、画像形成装置２０でスキャンして生成された電子ファイルをＯＣＲ処理した後、当該ＯＣＲ処理後の電子ファイルを外部ストレージＡに配信することができる。
【００８５】
ここで、ロジック処理部１３０の詳細な機能構成について、図７を参照しながら説明する。図７は、本実施形態に係るロジック処理部の一例の機能構成を示す図である。
【００８６】
ロジック処理部１３０は、フロー実行部１３１と、コンポーネント管理部１３２と、コンポーネント群１３３と、型変換管理部１３４と、型変換群１３５とを有する。
【００８７】
また、ロジック処理部１３０は、ジョブ管理情報テーブル２０００と、コンポーネント情報テーブル３０００と、結果情報テーブル４０００と、型変換情報テーブル５０００とを利用する。
【００８８】
フロー実行部１３１は、画像形成装置２０のＵＩ制御部２１０からの処理フローの実行要求に応じて、当該実行要求を識別するジョブＩＤを生成する。そして、フロー実行部１３１は、生成したジョブＩＤと、アプリＩＤ及びフローＩＤと関連付けたジョブ管理情報を生成し、当該ジョブ管理情報をジョブ管理情報テーブル２０００に格納する。なお、ジョブ管理情報テーブル２０００の詳細については後述する。
【００８９】
また、フロー実行部１３１は、画像形成装置２０のＵＩ制御部２１０からのページ単位のデータ入力に応じて、ジョブ管理情報テーブル２０００で管理されているジョブＩＤに基づいて、アプリ情報１０００に含まれる処理フロー情報１２００を取得する。そして、フロー実行部１３１は、取得した処理フロー情報１２００に基づいてコンポーネントに対して処理の実行を要求する。
【００９０】
ここで、コンポーネントとは、処理フロー情報１２００に基づく一連の処理（処理フロー）に含まれる各処理を実行するモジュール等である。したがって、処理フロー情報１２００に基づく一連の処理は、１以上のコンポーネントにより実行される処理が組み合わされることで実現される。なお、コンポーネントは、例えばクラスや関数等で定義される。
【００９１】
このように、フロー実行部１３１は、画像形成装置２０でスキャンして生成された電子ファイルにおけるページ単位のデータ（ページデータ）毎に、処理フロー情報１２００に基づく一連の処理を実行する。
【００９２】
そして、フロー実行部１３１は、当該電子ファイルにおけるページデータ毎に、一連の処理の処理結果を示す結果情報を結果情報テーブル４０００に格納する。なお、結果情報テーブル４０００の詳細については後述する。
【００９３】
コンポーネント管理部１３２は、フロー実行部１３１からの要求に応じて、コンポーネント情報テーブル３０００を参照して、コンポーネントを生成するか否かを判定する。そして、コンポーネント管理部１３２は、判定結果に応じて、コンポーネントを生成する。
【００９４】
ここで、コンポーネントの生成とは、例えばクラスや関数等で定義されているコンポーネントを、メモリ（例えばＲＡＭ１４）上に展開することである。なお、コンポーネント情報テーブル３０００の詳細については後述する。
【００９５】
コンポーネント群１３３は、コンポーネントの集合である。コンポーネント群１３３には、外部ストレージＡ（外部ストレージシステム３０１）に対してデータを配信するための配信Ａコンポーネント１３３１が含まれる。また、コンポーネント群１３３には、データに対してＯＣＲ処理を行うためのＯＣＲコンポーネント１３３２が含まれる。
【００９６】
なお、コンポーネント群１３３には、これら以外にも、例えば、外部ストレージＢに対してデータを配信するための配信Ｂコンポーネント、データを印刷データに変換するための印刷変換コンポーネント等の各種のコンポーネントが含まれても良い。
【００９７】
ここで、各コンポーネントは、コンポーネント共通Ｉ／Ｆ１３３０を有する。コンポーネント共通Ｉ／Ｆ１３３０は、各コンポーネントに対して共通に定義されたＡＰＩであり、コンポーネントを生成するためのＡＰＩと、コンポーネントに対して処理の実行を要求するためのＡＰＩとが含まれる。
【００９８】
各コンポーネントがコンポーネント共通Ｉ／Ｆ１３３０を有することで、コンポーネントの追加等に伴う影響を局所化することができる。すなわち、本実施形態に係るサービス提供システム１０では、例えば、フロー実行部１３１やコンポーネント管理部１３２等に影響を与えることなく、コンポーネントの追加等を行うことができる。
【００９９】
型変換管理部１３４は、データ型の型変換を管理する。ここで、各コンポーネントは、自身が扱えるデータ型が予め決まっている。したがって、型変換管理部１３４は、コンポーネントからの要求に応じて、型変換情報テーブル５０００を参照して、型変換群１３５に定義されている型変換を生成する。そして、型変換管理部１３４は、生成された型変換に対して型変換処理の実行を要求する。これにより、型変換管理部１３４は、要求元のコンポーネントが扱えるデータ型に型変換を行う。
【０１００】
ここで、型変換情報テーブル５０００の詳細について、図８を参照しながら説明する。図８は、型変換情報テーブルの一例を示す図である。
【０１０１】
図８に示す型変換情報テーブル５０００に格納されている型変換情報は、データ項目として、変換前のデータ型と、変換後のデータ型と、生成する型変換とを有する。すなわち、型変換情報は、変換前のデータ型及び変換後のデータ型毎に、当該変換前のデータ型を当該変換後のデータ型に型変換するための型変換が関連付けられた情報である。
【０１０２】
これにより、例えば、ストリームデータを示すデータ型「InputStream」のデータを、記憶装置等に格納されているデータのパス（アドレス）を示すデータ型「LocalFilePath」に型変換する場合、第１の型変換を生成すれば良い。
【０１０３】
ここで、型変換の生成とは、例えばクラスで定義された型変換を、メモリ（例えばＲＡＭ１４）上に展開することである。また、データ型には、上述した「InputStream」や「LocalFilePath」以外に、例えば、データの実体を示すデータ型「File」等が挙げられる。
【０１０４】
型変換群１３５は、型変換の集合である。型変換群１３５には、データ型「InputStream」のデータを、データ型「LocalFilePath」のデータに変換する第１の型変換１３５１が含まれる。
【０１０５】
なお、型変換群１３５には、これに以外にも、例えば、データ型「LocalFilePath」のデータを、データ型「File」のデータに変換する第２の型変換等の各種の型変換が含まれても良い。
【０１０６】
ここで、各型変換は、型変換共通Ｉ／Ｆ１３５０を有する。型変換共通Ｉ／Ｆ１３５０は、各型変換に対して共通に定義されたＡＰＩであり、型変換を生成するためのＡＰＩと、型変換に対して処理の実行を要求するためのＡＰＩとが含まれる。
【０１０７】
各型変換が型変換共通Ｉ／Ｆ１３５０を有することで、型変換の追加等に伴う影響を局所化することができる。すなわち、本実施形態に係るサービス提供システム１０では、例えば、型変換管理部１３４等に影響を与えることなく、型変換の追加等を行うことができる。
【０１０８】
＜処理の詳細＞
次に、本実施形態に係る情報処理システム１の処理の詳細について説明する。
【０１０９】
まず、ユーザＵが画像形成装置２０を用いて、サービス提供システム１０のアプリケーション（アプリ情報１０００）により提供されるサービスを利用する場合の全体処理について、図９を参照しながら説明する。図９は、本実施形態に係るサービス利用の全体処理の一例を示すシーケンス図である。
【０１１０】
ユーザＵは、画像形成装置２０を用いて、アプリ情報１０００により提供されるサービスの一覧を表示させるための表示操作を行う（ステップＳ９０１）。
【０１１１】
画像形成装置２０のＵＩ制御部２１０は、サービスの一覧を表示させるための表示操作を受け付けると、サービス提供システム１０のアプリ管理部１２０に対して、サービス一覧の取得要求を送信する（ステップＳ９０２）。そして、アプリ管理部１２０は、当該取得要求を受け取ると、サービス一覧画面情報を返信する。
【０１１２】
なお、サービス一覧画面情報とは、アプリ情報１０００により提供されるサービスの一覧を表示するための情報であり、例えばＨＴＭＬ等のデータ形式により表される。また、サービス一覧画面情報には、例えば、アプリ情報１０００のアプリＩＤと、当該アプリ情報１０００に含まれる処理フロー情報１２００のフローＩＤ及びフロー名とが含まれる。
【０１１３】
画像形成装置２０のＵＩ制御部２１０は、サービス一覧画面情報を受け取ると、当該サービス一覧画面情報に基づいて、例えば図１０（ａ）に示すサービス一覧画面６１００を操作パネル２２に表示させる（ステップＳ９０３）。
【０１１４】
図１０（ａ）に示すサービス一覧画面６１００には、アプリ情報１０００により提供されるサービスの名称の一覧であるサービス名一覧６１０１が含まれる。このようなサービス名一覧６１０１に含まれる各サービス名は、例えば、サービス一覧画面情報に含まれるフローＩＤ及びフロー名に基づいて表示される。
【０１１５】
なお、図１０（ａ）に示すサービス一覧画面６１００に含まれるサービス名一覧６１０１では、アプリ情報１０００に含まれる処理フロー情報１２００のフロー名をサービス名としたが、これに限られず、任意のサービス名が表示されても良い。
【０１１６】
次に、ユーザＵは、サービス一覧画面６１００に含まれるサービス名一覧６１０１から、所望のサービスを選択する操作を行う（ステップＳ９０４）。以降では、サービス一覧画面６１００に含まれるサービス名一覧６１０１から「スキャン配信１」がユーザＵにより選択されたものとして説明する。
【０１１７】
画像形成装置２０のＵＩ制御部２１０は、サービスの選択操作を受け付けると、サービス提供システム１０のアプリ管理部１２０に対して、サービス画面の取得要求を送信する（ステップＳ９０５）。なお、当該取得要求には、ユーザＵにより選択された「スキャン配信１」サービスを提供するアプリ情報１０００のアプリＩＤ「app001」が含まれる。
【０１１８】
そして、アプリ管理部１２０は、サービス画面の取得要求を受け取ると、アプリＩＤ「app001」のアプリ情報１０００に含まれる画面定義情報１１００を取得し、当該取得した画面定義情報１１００を返信する。
【０１１９】
画像形成装置２０のＵＩ制御部２１０は、画面定義情報１１００を受け取ると、サービス提供システム１０のデータＩ／Ｆ部１４０に対して、サービス画面の表示用情報の取得要求を送信する（ステップＳ９０６）。
【０１２０】
なお、表示用情報とは、サービス画面における選択欄の各選択要素等のことであり、例えば、外部ストレージにおける保存先のフォルダの候補となるフォルダ一覧（フォルダ名及びフォルダＩＤの一覧）等である。以降では、表示用情報の取得要求は、外部ストレージＡにおける保存先のフォルダの候補を示すフォルダ一覧の取得要求であるものとして説明する。
【０１２１】
ここで、フォルダ一覧の取得要求は、図５（ｃ）に示すＡＰＩ「/外部ストレージ名/data/folders」を用いて行うことができる。すなわち、ＵＩ制御部２１０は、データＩ／Ｆ部１４０に対して、例えば、「/storage-a/data/folders」としてＨＴＴＰ（Hypertext Transfer Protocol）リクエストを送信することで、外部ストレージＡのフォルダ一覧の取得を要求することができる。
【０１２２】
サービス提供システム１０のデータＩ／Ｆ部１４０は、表示用情報の取得要求を受け取ると、当該取得要求を対応する外部ストレージ連携部１６０のデータ処理部１８０に転送する（ステップＳ９０７）。すなわち、データＩ／Ｆ部１４０は、受け取った表示用情報の取得要求を外部ストレージ連携部１６０１のデータ処理部１８０１に転送する。
【０１２３】
外部ストレージ連携部１６０１のデータ処理部１８０１は、表示用情報の取得要求を受け取ると、外部ストレージＡに対してフォルダ一覧の取得要求を送信して、フォルダ一覧を示すフォルダ一覧情報を取得する（ステップＳ９０８）。すなわち、データ処理部１８０１は、共通Ｉ／Ｆ１８１１に定義されているＡＰＩを用いて、外部ストレージＡからフォルダ一覧情報を取得する。
【０１２４】
そして、データ処理部１８０１は、ＵＩ制御部２１０に対して、データＩ／Ｆ部１４０を介してフォルダ一覧情報を返信する。
【０１２５】
画像形成装置２０のＵＩ制御部２１０は、フォルダ一覧情報を受け取ると、当該フォルダ一覧情報を画面定義情報１１００に反映させて、例えば図１０（ｂ）に示すサービス画面６２００を操作パネル２２に表示させる（ステップＳ９０９）。
【０１２６】
図１０（ｂ）に示すサービス画面６２００は、ユーザＵにより選択された「スキャン配信１」サービスを利用するための画面であり、保存先フォルダ選択欄６２０１と、スキャン実行ボタン６２０４とを有する。
【０１２７】
また、サービス画面６２００には、「スキャン配信１」サービスを実現する処理フロー情報１２００に基づいて設定されたパラメータがＯＣＲ言語６２０２及びデータ形式６２０３に表示されている。
【０１２８】
なお、サービス画面６２００において、保存先フォルダ選択欄６２０１の各選択要素は、上記のステップＳ９０８で外部ストレージＡから取得されたフォルダ一覧情報に基づいて設定される。
【０１２９】
次に、ユーザＵは、サービス画面６２００において、保存先フォルダ選択欄６２０１から所望の保存先フォルダを選択し、画像形成装置２０のスキャナ２５に原稿をセットした上で、スキャン実行ボタン６２０４を押下する（ステップＳ９１０）。以降では、ユーザＵにより、保存先フォルダ選択欄６２０１から「FolderB」が選択された上で、スキャン実行ボタン６２０４が押下されたものとして説明する。
【０１３０】
画像形成装置２０のＵＩ制御部２１０は、スキャン実行ボタン６２０４の押下を受け付けると、スキャン処理部２２０に対して、スキャンの実行要求を送信する（ステップＳ９１１）。
【０１３１】
画像形成装置２０のスキャン処理部２２０は、スキャンの実行要求を受け取ると、スキャナ２５を制御して、セットされた原稿から電子ファイルを生成する（ステップＳ９１２）。そして、スキャン処理部２２０は、スキャンが終了したことを示すスキャン結果を返信する。
【０１３２】
ここで、本実施形態では、スキャナ２５に複数のページで構成される原稿がセットされた上で、スキャン実行ボタン６２０４が押下されたものとする。したがって、本実施形態において、スキャン処理部２２０により生成された電子ファイルには、複数のページが含まれる。すなわち、スキャン処理部２２０により生成された電子ファイルは、複数のページデータを含む。
【０１３３】
画像形成装置２０及びサービス提供システム１０は、生成された電子ファイルにおけるページデータ毎に、処理フローの実行処理を行う（ステップＳ９１３）。なお、処理フローの実行処理の詳細については後述する。
【０１３４】
ここで、本実施形態に係るサービス提供システム１０において、ページデータ毎に、処理フローを実行する場合について、図１１を参照しながら模式的に説明する。図１１は、ページ毎に処理フローを実行する場合について模式的に説明する図である。
【０１３５】
図１１では、Ｍページのページデータを含む電子データに対して、「スキャン配信１」を実現する処理フローを実行する場合を示している。なお、当該処理フローは、ＯＣＲコンポーネント１３３２と、配信Ａコンポーネント１３３１とを組み合わせることにより実現される。
【０１３６】
このとき、本実施形態に係るサービス提供システム１０は、まず、１ページ目のページデータに対してＯＣＲコンポーネント１３３２による処理を実行する。
【０１３７】
次に、本実施形態に係るサービス提供システム１０は、１ページ目のページデータに対してＯＣＲコンポーネント１３３２による処理の実行が完了すると、当該ページデータに対して配信Ａコンポーネント１３３１による処理を実行する。
【０１３８】
一方で、本実施形態に係るサービス提供システム１０は、１ページ目のページデータに対してＯＣＲコンポーネント１３３２による処理の実行が完了すると、２ページ目のページデータに対してＯＣＲコンポーネント１３３２による処理を実行する。
【０１３９】
続いて、本実施形態に係るサービス提供システム１０は、１ページ目のページデータに対して配信Ａコンポーネント１３３１による処理の実行が完了すると、２ページ目のページデータに対して配信Ａコンポーネント１３３１による処理を実行する。
【０１４０】
一方で、本実施形態に係るサービス提供システム１０は、２ページ目のページデータに対してＯＣＲコンポーネント１３３２による処理の実行が完了すると、３ページ目のページデータに対してＯＣＲコンポーネント１３３２による処理を実行する。
【０１４１】
このように、本実施形態に係るサービス提供システム１０は、処理フローが２個のコンポーネントの組み合わせで実現される場合、Ｎページ目のページデータと、Ｎ＋１ページ目のページデータとを異なるコンポーネントにより並列に処理を実行することができる。すなわち、より一般には、処理フローがＬ個のコンポーネントの組み合わせで実現される場合、Ｎページ目のページデータ〜Ｎ＋Ｌ−１ページ目のページデータをそれぞれ異なるコンポーネントにより並列に処理を実行することができる。
【０１４２】
このため、本実施形態に係るサービス提供システム１０では、複数のページを含む電子データに対する処理フローの全体の実行時間を短縮することができる。
【０１４３】
次に、上記の図９のステップＳ９１３の処理フローの実行処理の詳細について説明する。まず、１ページ目のページデータに対する処理フローの実行処理について、図１２を参照しながら説明する。図１２は、本実施形態に係る処理フローの実行処理（１ページ目）の一例のシーケンス図である。
【０１４４】
まず、ＵＩ制御部２１０は、フロー実行部１３１に対して、処理フローの実行要求を送信する（ステップＳ１２０１）。ここで、当該実行要求には、ユーザＵにより選択された「スキャン配信１」サービスを提供するアプリ情報１０００のアプリＩＤ「app001」と、当該サービスを実現する処理フロー情報１２００のフローＩＤ「flow001」とが含まれる。
【０１４５】
次に、フロー実行部１３１は、処理フローの実行要求を受け取ると、当該実行要求を一意に識別するジョブＩＤを生成する。その後、フロー実行部１３１は、生成したジョブＩＤと、当該実行要求に含まれるアプリＩＤ及びフローＩＤと関連付けたジョブ管理情報を作成し、当該ジョブ管理情報をジョブ管理情報テーブル２０００に格納する（ステップＳ１２０２）。
【０１４６】
そして、フロー実行部１３１は、画像形成装置２０のＵＩ制御部２１０に対して、生成したジョブＩＤを返信する。
【０１４７】
ここで、ジョブ管理情報テーブル２０００の一例を図１３（ａ）に示す。図１３（ａ）に示すように、ジョブ管理情報テーブル２０００に格納されているジョブ管理情報２００１及び２００２は、データ項目として、ジョブＩＤと、アプリＩＤと、フローＩＤとを有する。このように、ジョブ管理情報テーブル２０００では、ジョブＩＤ毎に、アプリＩＤ及びフローＩＤが関連付けられている。
【０１４８】
ステップＳ１２０２において、フロー実行部１３１は、ジョブＩＤ「Job103」を生成したものとする。この場合、フロー実行部１３１は、ジョブＩＤ「Job103」と、処理フローの実行要求に含まれるアプリＩＤ「app001」及びフローＩＤ「flow001」とを関連付けたジョブ管理情報２００３を作成する。そして、図１３（ｂ）に示すように、フロー実行部１３１は、作成したジョブ管理情報２００３をジョブ管理情報テーブル２０００に格納する。
【０１４９】
次に、ＵＩ制御部２１０は、フロー実行部１３１に対して、ページデータを入力する（ステップＳ１２０３）。ここで、ＵＩ制御部２１０は、フロー実行部１３１から返信されたジョブＩＤ「Job103」を指定して、ページデータを入力する。
【０１５０】
フロー実行部１３１は、ページデータの入力を受け付けると、当該ページデータに対してページ番号を採番する（ステップＳ１２０４）。なお、フロー実行部１３１は、例えば、ページ番号「１」を採番すれば良い。
【０１５１】
次に、フロー実行部１３１は、指定されたジョブＩＤに関連付けられているアプリＩＤ及びフローＩＤをジョブ管理情報テーブル２０００から取得する（ステップＳ１２０５）。すなわち、フロー実行部１３１は、ジョブＩＤ「Job103」に関連付けられているアプリＩＤ「app001」及びフローＩＤ「flow001」をジョブ管理情報テーブル２０００から取得する。
【０１５２】
次に、フロー実行部１３１は、アプリ管理部１２０に対して、処理フロー情報の取得要求を送信する（ステップＳ１２０６）。ここで、当該取得要求には、ステップＳ１２０５で取得されたアプリＩＤ「app001」及びフローＩＤ「flow001」が含まれる。
【０１５３】
そして、アプリ管理部１２０は、受け取った処理フローの取得要求に含まれるアプリＩＤ「app001」及びフローＩＤ「flow001」に対応する処理フロー情報１２００を取得して、当該処理フロー情報１２００を返信する。これにより、フロー実行部１３１には、図６に示す処理フロー情報１２００が返信される。
【０１５４】
フロー実行部１３１は、処理フロー情報１２００を受け取ると、コンポーネント管理部１３２に対して、当該処理フロー情報１２００に基づくコンポーネントの取得要求を送信する（ステップＳ１２０７）。
【０１５５】
すなわち、フロー実行部１３１は、処理フロー情報１２００のフロー詳細１２０３における処理内容１２０４に指定されたコンポーネント名「ＯＣＲ」と、ジョブＩＤ「Job103」とを含むコンポーネントの取得要求をコンポーネント管理部１３２に送信する。
【０１５６】
コンポーネント管理部１３２は、コンポーネントの取得要求を受け取ると、コンポーネント情報テーブル３０００を参照して、当該取得要求に含まれる「ＯＣＲ」に対応するＯＣＲコンポーネント１３３２を生成するか否かを判定する（ステップＳ１２０８）。
【０１５７】
ここで、コンポーネント情報テーブル３０００の一例を図１４（ａ）に示す。図１４（ａ）に示すように、コンポーネント情報テーブル３０００に格納されているコンポーネント情報３００１〜３００３は、データ項目として、ジョブＩＤと、コンポーネント名と、アドレスとを有する。なお、データ項目「アドレス」は、コンポーネントが展開されたメモリ（例えば、ＲＡＭ１４）上のアドレスである。
【０１５８】
このように、コンポーネント情報テーブル３０００では、生成されたコンポーネントのコンポーネント名及びアドレスが、ジョブＩＤと関連付けられている。
【０１５９】
したがって、ステップＳ１２０８において、コンポーネント管理部１３２は、コンポーネントの取得要求に含まれるジョブＩＤ及びコンポーネント名に対応するコンポーネント情報がコンポーネント情報テーブル３０００に格納されていない場合、コンポーネントを生成すると判定する。一方、ステップＳ１２０８において、コンポーネント管理部１３２は、コンポーネントの取得要求に含まれるジョブＩＤ及びコンポーネント名に対応するコンポーネント情報がコンポーネント情報テーブル３０００に格納されている場合、コンポーネントを生成しないと判定する。
【０１６０】
ここで、図１４（ａ）に示すコンポーネント情報テーブル３０００には、ジョブＩＤ「Job103」及びコンポーネント名「ＯＣＲ」に対応するコンポーネント情報が格納されていないため、コンポーネント管理部１３２は、コンポーネントを生成すると判定する。
【０１６１】
コンポーネント管理部１３２は、コンポーネントを生成すると判定すると、コンポーネントの取得要求に含まれるコンポーネント名「ＯＣＲ」に対応するＯＣＲコンポーネント１３３２を生成する（ステップＳ１２０９）。なお、ＯＣＲコンポーネント１３３２の生成は、コンポーネント共通Ｉ／Ｆ１３３０に定義されたＡＰＩを用いて行うことができる。
【０１６２】
また、コンポーネント管理部１３２は、生成したＯＣＲコンポーネント１３３２のコンポーネント名「ＯＣＲ」及びアドレス「DDD」を、ジョブＩＤ「Job103」と関連付けたコンポーネント情報３００４を作成する。そして、コンポーネント管理部１３２は、図１４（ｂ）に示すように、作成したコンポーネント情報３００４をコンポーネント情報テーブル３０００に格納する。
【０１６３】
その後、コンポーネント管理部１３２は、フロー実行部１３１に対して、生成したＯＣＲコンポーネント１３３２のアドレス「DDD」を返信する。
【０１６４】
次に、フロー実行部１３１は、ＯＣＲコンポーネント１３３２に対して、処理の実行要求を送信する（ステップＳ１２１０）。ここで、当該実行要求には、ＵＩ制御部２１０から入力されたページデータが含まれる。なお、当該ページデータは、データ型が「InputStream」としてＵＩ制御部２１０から入力される。
【０１６５】
ＯＣＲコンポーネント１３３２は、処理の実行要求を受け取ると、型変換管理部１３４に対して、型変換要求を送信する（ステップＳ１２１１）。なお、当該型変換要求には、ページデータと、ＯＣＲコンポーネント１３３２が扱うことができるデータ型である「LocalFilePath」の指定とが含まれる。
【０１６６】
型変換管理部１３４は、型変換要求を受け取ると、当該型変換要求に含まれるデータのデータ型と、指定されたデータ型とが一致するか否かをチェックする（ステップＳ１２１２）。
【０１６７】
ここで、受け取った型変換要求に含まれるページデータのデータ型は「InputStream」である一方、指定されたデータ型は「LocalFilePath」である。したがって、型変換管理部１３４は、型変換要求に含まれるページデータのデータ型と、指定されたデータ型とが一致しないものと判断する。
【０１６８】
すると、型変換管理部１３４は、型変換情報テーブル５０００を参照して、データ型「InputStream」をデータ型「LocalFilePath」に変換するための第１の型変換１３５１を特定する。そして、型変換管理部１３４は、特定した第１の型変換１３５１を生成する（ステップＳ１２１３）。なお、第１の型変換１３５１の生成は、型変換共通Ｉ／Ｆ１３５０に定義されたＡＰＩを用いて行うことができる。
【０１６９】
次に、型変換管理部１３４は、生成された第１の型変換１３５１に対して、型変換処理の実行要求を送信する（ステップＳ１２１４）。なお、当該実行要求には、ページデータが含まれる。
【０１７０】
第１の型変換１３５１は、型変換処理の実行要求を受け取ると、当該実行要求に含まれるページデータのデータ型を「InputStream」から「LocalFilePath」に変換する（ステップＳ１２１５）。そして、第１の型変換１３５１は、型変換管理部１３４に対して、型変換後のページデータを返信する。
【０１７１】
型変換管理部１３４は、型変換後のページデータを受け取ると、ＯＣＲコンポーネント１３３２に対して、当該型変換後のページデータを送信する（ステップＳ１２１６）。
【０１７２】
ＯＣＲコンポーネント１３３２は、型変換後のページデータを受け取ると、処理を実行する（ステップＳ１２１７）。すなわち、ＯＣＲコンポーネント１３３２は、データ型「LocalFilePath」のページデータに対してＯＣＲ処理を実行する。
【０１７３】
より具体的には、ＯＣＲコンポーネント１３３２は、ドキュメントサービス部１５０のＯＣＲ処理１５１に対して処理の実行を要求し、当該ＯＣＲ処理１５１が、ページデータ（アドレス又はパス）により示されるデータに対して処理を実行する。
【０１７４】
そして、ＯＣＲコンポーネント１３３２は、フロー実行部１３１に対して、ＯＣＲ処理後のページデータを返信する。なお、ＯＣＲコンポーネント１３３２により返信されるページデータのデータ型は「LocalFilePath」である。
【０１７５】
次に、フロー実行部１３１は、ページデータを受け取ると、コンポーネント管理部１３２に対して、処理フロー情報１２００に基づくコンポーネントの取得要求を送信する（ステップＳ１２１８）。
【０１７６】
すなわち、フロー実行部１３１は、処理フロー情報１２００のフロー詳細１２０３における処理内容１２０５に指定されたコンポーネント名「配信Ａ」と、ジョブＩＤ「Job103」とを含むコンポーネントの取得要求をコンポーネント管理部１３２に送信する。
【０１７７】
コンポーネント管理部１３２は、コンポーネントの取得要求を受け取ると、コンポーネント情報テーブル３０００を参照して、当該取得要求に含まれる「配信Ａ」に対応する配信Ａコンポーネント１３３１を生成するか否かを判定する（ステップＳ１２１９）。
【０１７８】
ここで、図１４（ｂ）に示すコンポーネント情報テーブル３０００には、ジョブＩＤ「Job103」及びコンポーネント名「配信Ａ」に対応するコンポーネント情報が格納されていないため、コンポーネント管理部１３２は、コンポーネントを生成すると判定する。
【０１７９】
コンポーネント管理部１３２は、コンポーネントを生成すると判定すると、コンポーネントの取得要求に含まれるコンポーネント名「配信Ａ」に対応する配信Ａコンポーネント１３３１を生成する（ステップＳ１２２０）。なお、配信Ａコンポーネント１３３１の生成は、コンポーネント共通Ｉ／Ｆ１３３０に定義されたＡＰＩを用いて行うことができる。
【０１８０】
また、コンポーネント管理部１３２は、生成した配信Ａコンポーネント１３３１のコンポーネント名「配信Ａ」及びアドレス「EEE」を、ジョブＩＤ「Job103」と関連付けたコンポーネント情報３００５を作成する。そして、コンポーネント管理部１３２は、図１４（ｃ）に示すように、作成したコンポーネント情報３００５をコンポーネント情報テーブル３０００に格納する。
【０１８１】
その後、コンポーネント管理部１３２は、フロー実行部１３１に対して、生成した配信Ａコンポーネント１３３１のアドレス「EEE」を返信する。
【０１８２】
次に、フロー実行部１３１は、配信Ａコンポーネント１３３１に対して、処理の実行要求を送信する（ステップＳ１２２１）。ここで、当該実行要求には、ＯＣＲコンポーネント１３３２から返信されたページデータが含まれる。
【０１８３】
配信Ａコンポーネント１３３１は、処理の実行要求を受け取ると、型変換管理部１３４に対して、型変換要求を送信する（ステップＳ１２２２）。なお、当該型変換要求には、ページデータと、配信Ａコンポーネント１３３１が扱うことができるデータ型である「LocalFilePath」の指定とが含まれる。
【０１８４】
型変換管理部１３４は、型変換要求を受け取ると、当該型変換要求に含まれるページデータのデータ型と、指定されたデータ型とが一致するか否かをチェックする（ステップＳ１２２３）。
【０１８５】
ここで、受け取った型変換要求に含まれるページデータのデータ型は「LocalFilePath」であり、指定されたデータ型も「LocalFilePath」である。したがって、型変換管理部１３４は、型変換要求に含まれるページデータのデータ型と、指定されたデータ型とが一致するものと判断する。
【０１８６】
すると、型変換管理部１３４は、型変換要求に含まれるページデータを配信Ａコンポーネント１３３１に送信する（ステップＳ１２２４）。このように、データ型のチェック（ステップＳ１２２３の処理）においてデータ型が一致すると判断された場合、型変換管理部１３４は、型変換の生成を行わない。
【０１８７】
配信Ａコンポーネント１３３１は、型変換管理部１３４からページデータを受け取ると、処理を実行する（ステップＳ１２２５）。すなわち、配信Ａコンポーネント１３３１は、外部ストレージＡのフォルダ名「FolderB」のフォルダに対して、ページデータを配信（アップロード）する。
【０１８８】
より具体的には、配信Ａコンポーネント１３３１は、外部ストレージ連携部１６０１のファイル処理部１７０１に対して、図５（ａ）に示すＡＰＩ「/外部ストレージ名/process/folder」を用いる。すなわち、配信Ａコンポーネント１３３１は、ファイル処理部１７０１に対して、例えば、「/storage-a/process/folder」としてページデータを送信する。
【０１８９】
これにより、ページデータ（すなわち、スキャンにより生成された電子ファイルにおける１ページ目のデータをＯＣＲ処理したデータ）が、外部ストレージＡのフォルダ名「FolderB」のフォルダに保存される。
【０１９０】
そして、配信Ａコンポーネント１３３１は、フロー実行部１３１に対して、処理結果を示すページデータを返信する。
【０１９１】
フロー実行部１３１は、配信Ａコンポーネント１３３１からページデータを受け取ると、当該ページデータを、ジョブＩＤ及びページ番号と関連付けた結果情報を作成し、当該結果情報を結果情報テーブル４０００に格納する（ステップＳ１２２６）。
【０１９２】
ここで、結果情報テーブル４０００の一例を図１５（ａ）に示す。図１５（ａ）に示すように、結果情報テーブル４０００に格納されている結果情報４００１〜４００３は、データ項目として、ジョブＩＤと、ページデータと、ページ番号とを有する。
【０１９３】
このように、結果情報テーブル４０００では、ジョブＩＤ及びページ番号毎に、処理フローの処理結果（すなわち、１ページ分の処理フローの処理結果）であるページデータが関連付けられている。
【０１９４】
すなわち、ステップＳ１２２６において、フロー実行部１３１は、配信Ａコンポーネント１３３１から受け取ったページデータを、ジョブＩＤ「Job103」及びページ番号「１」と関連付けた結果情報４００４を作成する。そして、フロー実行部１３１は、図１５（ｂ）に示すように、作成した結果情報４００４を結果情報テーブル４０００に格納する。
【０１９５】
以上により、本実施形態に係るサービス提供システム１０において、１ページ目のページデータに対して、処理フロー情報１２００に基づく処理フローが実行される。
【０１９６】
次に、２ページ目以降のページデータに対する処理フローの実行処理について、図１６を参照しながら説明する。図１６は、本実施形態に係る処理フローの実行処理（２ページ目以降）の一例のシーケンス図である。
【０１９７】
ＵＩ制御部２１０は、フロー実行部１３１に対して、ページデータを入力する（ステップＳ１６０１）。ここで、ＵＩ制御部２１０は、図１２のステップＳ１２０２でフロー実行部１３１から返信されたジョブＩＤ「Job103」を指定して、ページデータを入力する。なお、ここで入力されるページデータは、スキャンにより生成された電子ファイルにおける２ページ目以降のページデータである。
【０１９８】
フロー実行部１３１は、ページデータの入力を受け付けると、当該ページデータに対してページ番号を採番する（ステップＳ１６０２）。ここでは、ページ番号「２」が採番されたものとして説明する。
【０１９９】
次に、フロー実行部１３１は、コンポーネント管理部１３２に対して、図１２のステップＳ１２０６で取得した処理フロー情報１２００に基づくコンポーネントの取得要求を送信する（ステップＳ１６０３）。
【０２００】
すなわち、フロー実行部１３１は、処理フロー情報１２００のフロー詳細１２０３における処理内容１２０４に指定されたコンポーネント名「ＯＣＲ」と、ジョブＩＤ「Job103」とを含むコンポーネントの取得要求をコンポーネント管理部１３２に送信する。
【０２０１】
コンポーネント管理部１３２は、コンポーネントの取得要求を受け取ると、コンポーネント情報テーブル３０００を参照して、当該取得要求に含まれる「ＯＣＲ」に対応するＯＣＲコンポーネント１３３２を生成するか否かを判定する（ステップＳ１６０４）。
【０２０２】
ここで、図１４（ｃ）に示すコンポーネント情報テーブル３０００には、ジョブＩＤ「Job103」及びコンポーネント名「ＯＣＲ」に対応するコンポーネント情報が格納されている。したがって、コンポーネント管理部１３２は、コンポーネントを生成しないと判定する。
【０２０３】
その後、コンポーネント管理部１３２は、ＯＣＲコンポーネント１３３２のアドレス「DDD」をコンポーネント情報テーブル３０００から取得して、フロー実行部１３１に対して、当該アドレス「DDD」を返信する。
【０２０４】
このように、コンポーネント管理部１３２は、コンポーネントの取得要求に係るコンポーネントが既に生成されている場合には、コンポーネントの生成を行わない。すなわち、コンポーネント管理部１３２は、２ページ目以降のページデータに対する処理フローにおいては、コンポーネントの生成を行わない。
【０２０５】
次に、フロー実行部１３１は、ＯＣＲコンポーネント１３３２に対して、処理の実行要求を送信する（ステップＳ１６０５）。ここで、当該実行要求には、ＵＩ制御部２１０から入力されたページデータが含まれる。なお、当該ページデータは、データ型が「InputStream」としてＵＩ制御部２１０から入力される。
【０２０６】
ＯＣＲコンポーネント１３３２は、処理の実行要求を受け取ると、型変換管理部１３４に対して、型変換要求を送信する（ステップＳ１６０６）。なお、当該型変換要求には、ページデータと、ＯＣＲコンポーネント１３３２が扱うことができるデータ型である「LocalFilePath」の指定とが含まれる。
【０２０７】
型変換管理部１３４は、型変換要求を受け取ると、当該型変換要求に含まれるページデータのデータ型と、指定されたデータ型とが一致するか否かをチェックする（ステップＳ１６０７）。
【０２０８】
ここで、受け取った型変換要求に含まれるページデータのデータ型は「InputStream」である一方、指定されたデータ型は「LocalFilePath」である。したがって、型変換管理部１３４は、型変換要求に含まれるページデータのデータ型と、指定されたデータ型とが一致しないものと判断する。
【０２０９】
すると、型変換管理部１３４は、型変換情報テーブル５０００を参照して、データ型「InputStream」をデータ型「LocalFilePath」に変換するための第１の型変換１３５１を特定する。そして、型変換管理部１３４は、特定した第１の型変換１３５１を生成する（ステップＳ１６０８）。なお、第１の型変換１３５１の生成は、型変換共通Ｉ／Ｆ１３５０に定義されたＡＰＩを用いて行うことができる。
【０２１０】
次に、型変換管理部１３４は、生成された第１の型変換１３５１に対して、型変換処理の実行要求を送信する（ステップＳ１６０９）。なお、当該実行要求には、ページデータが含まれる。
【０２１１】
第１の型変換１３５１は、型変換処理の実行要求を受け取ると、当該実行要求に含まれるページデータのデータ型を「InputStream」から「LocalFilePath」に変換する（ステップＳ１６１０）。そして、第１の型変換１３５１は、型変換管理部１３４に対して、型変換後のページデータを返信する。
【０２１２】
型変換管理部１３４は、型変換後のページデータを受け取ると、ＯＣＲコンポーネント１３３２に対して、当該型変換後のページデータを送信する（ステップＳ１６１１）。
【０２１３】
ＯＣＲコンポーネント１３３２は、型変換後のページデータを受け取ると、処理を実行する（ステップＳ１６１２）。すなわち、ＯＣＲコンポーネント１３３２は、データ型「LocalFilePath」のページデータに対してＯＣＲ処理を実行する。
【０２１４】
そして、ＯＣＲコンポーネント１３３２は、フロー実行部１３１に対して、ＯＣＲ処理後のページデータを返信する。なお、ＯＣＲコンポーネント１３３２により返信されるページデータのデータ型は「LocalFilePath」である。
【０２１５】
次に、フロー実行部１３１は、ページデータを受け取ると、コンポーネント管理部１３２に対して、処理フロー情報１２００に基づくコンポーネントの取得要求を送信する（ステップＳ１６１３）。
【０２１６】
すなわち、フロー実行部１３１は、処理フロー情報１２００のフロー詳細１２０３における処理内容１２０５に指定されたコンポーネント名「配信Ａ」と、ジョブＩＤ「Job103」とを含むコンポーネントの取得要求をコンポーネント管理部１３２に送信する。
【０２１７】
コンポーネント管理部１３２は、コンポーネントの取得要求を受け取ると、コンポーネント情報テーブル３０００を参照して、当該取得要求に含まれる「配信Ａ」に対応する配信Ａコンポーネント１３３１を生成するか否かを判定する（ステップＳ１６１４）。
【０２１８】
ここで、図１４（ｃ）に示すコンポーネント情報テーブル３０００には、ジョブＩＤ「Job103」及びコンポーネント名「配信Ａ」に対応するコンポーネント情報が格納されている。したがって、コンポーネント管理部１３２は、コンポーネントを生成しないと判定する。
【０２１９】
その後、コンポーネント管理部１３２は、配信Ａコンポーネント１３３１のアドレス「EEE」をコンポーネント情報テーブル３０００から取得して、フロー実行部１３１に対して、当該アドレス「EEE」を返信する。
【０２２０】
上述したように、コンポーネント管理部１３２は、２ページ目以降のページデータに対する処理フローにおいては、コンポーネントの生成を行わない。
【０２２１】
次に、フロー実行部１３１は、配信Ａコンポーネント１３３１に対して、処理の実行要求を送信する（ステップＳ１６１５）。ここで、当該実行要求には、ＯＣＲコンポーネント１３３２から返信されたページデータが含まれる。
【０２２２】
配信Ａコンポーネント１３３１は、処理の実行要求を受け取ると、型変換管理部１３４に対して、型変換要求を送信する（ステップＳ１６１６）。なお、当該型変換要求には、ページデータと、配信Ａコンポーネント１３３１が扱うことができるデータ型である「LocalFilePath」の指定とが含まれる。
【０２２３】
型変換管理部１３４は、型変換要求を受け取ると、当該型変換要求に含まれるページデータのデータ型と、指定されたデータ型とが一致するか否かをチェックする（ステップＳ１６１７）。
【０２２４】
ここで、受け取った型変換要求に含まれるページデータのデータ型は「LocalFilePath」であり、指定されたデータ型も「LocalFilePath」である。したがって、型変換管理部１３４は、型変換要求に含まれるページデータのデータ型と、指定されたデータ型とが一致するものと判断する。
【０２２５】
すると、型変換管理部１３４は、型変換要求に含まれるページデータを配信Ａコンポーネント１３３１に送信する（ステップＳ１６１８）。このように、データ型のチェック（ステップＳ１６１７の処理）においてデータ型が一致すると判断された場合、型変換管理部１３４は、型変換の生成を行わない。
【０２２６】
配信Ａコンポーネント１３３１は、型変換管理部１３４からページデータを受け取ると、処理を実行する（ステップＳ１６１９）。すなわち、配信Ａコンポーネント１３３１は、外部ストレージＡのフォルダ名「FolderB」のフォルダに対して、ページデータを配信（アップロード）する。
【０２２７】
これにより、ページデータ（すなわち、スキャンにより生成された電子ファイルにおける２ページ目のデータをＯＣＲ処理したデータ）が、外部ストレージＡのフォルダ名「FolderB」のフォルダに保存される。
【０２２８】
そして、配信Ａコンポーネント１３３１は、フロー実行部１３１に対して、処理結果を示すページデータを返信する。
【０２２９】
フロー実行部１３１は、配信Ａコンポーネント１３３１からページデータを受け取ると、当該ページデータを、ジョブＩＤ及びページ番号と関連付けた結果情報を作成し、当該結果情報を結果情報テーブル４０００に格納する（ステップＳ１６２０）。
【０２３０】
すなわち、フロー実行部１３１は、配信Ａコンポーネント１３３１から受け取ったページデータを、ジョブＩＤ「Job103」及びページ番号「２」と関連付けた結果情報４００５を作成する。そして、フロー実行部１３１は、図１５（ｃ）に示すように、作成した結果情報４００５を結果情報テーブル４０００に格納する。
【０２３１】
これにより、２ページ目のページデータに対する処理フローの処理結果が結果情報テーブル４０００に格納される。
【０２３２】
ここで、ステップＳ１６０１において入力したページデータが最終ページである場合、ＵＩ制御部２１０は、フロー実行部１３１に対して、完了通知を送信する（ステップＳ１６２１）。ここで、当該完了通知には、ジョブＩＤ「Job103」が含まれる。なお、以降では、２ページ目が最終ページであるものとして説明する。
【０２３３】
フロー実行部１３１は、完了通知を受け取ると、コンポーネント管理部１３２に対して、コンポーネントの破棄要求を送信する（ステップＳ１６２２）。ここで、当該破棄要求には、ジョブＩＤ「Job103」が含まれる。
【０２３４】
次に、コンポーネント管理部１３２は、コンポーネントの破棄要求を受け取ると、当該破棄要求に含まれるジョブＩＤ「Job103」に対応するコンポーネント情報をコンポーネント情報テーブル３０００から削除する（ステップＳ１６２３）。
【０２３５】
すなわち、コンポーネント管理部１３２は、図１４（ｃ）に示すコンポーネント情報テーブル３０００に格納されているコンポーネント情報３００１〜３００５のうち、コンポーネント情報３００４及び３００５を削除する。
【０２３６】
そして、コンポーネント管理部１３２は、フロー実行部１３１に対して、該当のコンポーネント情報を削除したことを示す削除結果を返信する。
【０２３７】
フロー実行部１３１は、削除結果を受け取ると、ジョブＩＤ「Job103」に対応する結果情報を結果情報テーブル４０００から取得する（ステップＳ１６２４）。
【０２３８】
すなわち、フロー実行部１３１は、図１５（ｃ）に示す結果情報テーブル４０００に格納されている結果情報４００１〜４００５のうち、結果情報４００４及び４００５を取得する。
【０２３９】
そして、フロー実行部１３１は、ＵＩ制御部２１０に対して、取得した結果情報４００４及び４００５を返信する。
【０２４０】
このように、スキャンにより生成された電子ファイルにおける全てのページデータに対する処理フローの実行が完了すると、コンポーネント管理部１３２は、コンポーネント情報テーブル３０００から該当のコンポーネント情報を削除する。また、このとき、フロー実行部１３１は、ページデータ毎の処理フローの処理結果をまとめてＵＩ制御部２１０に返信する。
【０２４１】
以上により、本実施形態に係るサービス提供システム１０において、２ページ目以降のページデータに対して、処理フロー情報１２００に基づく処理フローが実行される。
【０２４２】
以上のように、本実施形態に係るサービス提供システム１０では、複数のページを含む電子ファイルに対して、ページ単位のデータ毎に処理フローを実行することができる。しかも、本実施形態に係るサービス提供システム１０では、処理フローに含まれる各処理を実行するコンポーネントを並列に実行させることができる。
【０２４３】
これにより、本実施形態に係るサービス提供システム１０では、複数のページを含む電子ファイルに対する処理フローの実行時間を短縮することができる。
【０２４４】
本発明は、具体的に開示された上記の実施形態に限定されるものではなく、特許請求の範囲から逸脱することなく、種々の変形や変更が可能である。
【符号の説明】
【０２４５】
１        情報処理システム
１０      サービス提供システム
２０      画像形成装置
３０      外部ストレージシステム
１１０    サービス処理部
１２０    アプリ管理部
１３０    ロジック処理部
１３１    フロー実行部
１３２    コンポーネント管理部
１３３    コンポーネント群
１３４    型変換管理部
１３５    型変換群
１４０    データＩ／Ｆ部
１５０    ドキュメントサービス部
１５１    ＯＣＲ処理
１６０    外部ストレージ連携部
１７０    ファイル処理部
１８０    データ処理部
１９０    アプリ情報記憶部
２１０    ＵＩ制御部
２２０    スキャン処理部
１０００  アプリ情報
１１００  画面定義情報
１２００  処理フロー情報
２０００  ジョブ管理情報テーブル
３０００  コンポーネント情報テーブル
４０００  結果情報テーブル
５０００  型変換情報テーブル
【先行技術文献】
【特許文献】
【０２４６】
【特許文献１】特許第５３８２１９５号公報
【図１】
2017079030.tif 000003
【図２】
2017079030.tif 000004
【図３】
2017079030.tif 000005
【図４】
2017079030.tif 000006
【図５】
2017079030.tif 000007
【図６】
2017079030.tif 000008
【図７】
2017079030.tif 000009
【図８】
2017079030.tif 000010
【図９】
2017079030.tif 000011
【図１０】
2017079030.tif 000012
【図１１】
2017079030.tif 000013
【図１２】
2017079030.tif 000014
【図１３】
2017079030.tif 000015
【図１４】
2017079030.tif 000016
【図１５】
2017079030.tif 000017
【図１６】
2017079030.tif 000018