(57)【要約】【課題】外部サービスと連携した処理を行うためのアプリケーションの開発を支援する。【解決手段】電子データを用いた一連の処理を外部サービスと連携して実行するアプリケーション毎に、アプリ識別情報と、該一連の処理に関する情報と、前記電子データを指定させる画面の画面情報とを関連付けて記憶する第１の記憶手段と、一連の処理に含まれる処理毎に、該処理の実行状態に関する情報を記憶する第２の記憶手段と、一の機器から前記アプリ識別情報を含む第１の要求を受け付けると、該アプリ識別情報に関連付けて前記第１の記憶手段に記憶されている前記画面情報を送信する第１の送信手段と、前記画面情報に基づき前記一の機器に表示された画面を介して指定された電子データを含む第２の要求を受け付けると、前記一連の処理を、前記電子データに対して実行する処理実行手段と、実行される前記一連の処理に含まれる一の処理の実行に応じて、前記第２の記憶手段に記憶されている前記一の処理の実行状態に関する情報を更新する更新手段とを有する。【選択図】図１１
2017033218.tif 000002
【特許請求の範囲】
【請求項１】
１以上の情報処理装置が含まれる情報処理システムであって、
電子データを用いた一連の処理を外部サービスと連携して実行するアプリケーション毎に、該アプリケーションを識別するアプリ識別情報と、該一連の処理に関する情報と、該一連の処理に用いる前記電子データを指定させる画面の画面情報と、を関連付けて記憶する第１の記憶手段と、
前記一連の処理に関する情報に基づく一連の処理に含まれる処理毎に、該処理の実行状態に関する情報を記憶する第２の記憶手段と、
前記情報処理システムに接続される１以上の機器のうちの一の機器から前記アプリ識別情報を含む第１の要求を受け付けると、該第１の要求に含まれる該アプリ識別情報に関連付けて前記第１の記憶手段に記憶されている前記画面情報を、要求元の前記一の機器に送信する第１の送信手段と、
前記第１の送信手段により送信された前記画面情報に基づき前記一の機器に表示された画面を介してユーザにより指定された電子データに関する情報を含む第２の要求を前記一の機器から受け付けると、前記アプリ識別情報に関連付けて前記第１の記憶手段に記憶されている前記一連の処理に関する情報に基づく一連の処理を、前記第２の要求に含まれる前記電子データに関する情報により指定される電子データに対して実行する処理実行手段と、
前記処理実行手段により実行される前記一連の処理に含まれる一の処理の実行に応じて、前記第２の記憶手段に記憶されている前記一の処理の実行状態に関する情報を更新する更新手段と
を有する情報処理システム。
【請求項２】
前記更新手段は、
前記処理実行手段により実行される前記一連の処理に含まれる一の処理の実行が完了した場合、前記第２の記憶手段に記憶されている前記一の処理の実行状態に関する情報を、該一の処理の実行が完了したことを示す情報に更新する、請求項１に記載の情報処理システム。
【請求項３】
前記更新手段は、
前記処理実行手段により実行される前記一連の処理に含まれる一の処理の実行が開始される場合、前記第２の記憶手段に記憶されている前記一の処理の実行状態に関する情報を、該一の処理が実行中であることを示す情報に更新する、請求項１又は２に記載の情報処理システム。
【請求項４】
前記更新手段は、
前記処理実行手段により実行される前記一連の処理に含まる一の処理の実行中に該一の処理にエラーが発生した場合、前記第２の記憶手段に記憶されている前記一の処理の実行状態に関する情報を、該一の処理にエラーが発生したことを示す情報に更新する、請求項１ないし３のいずれか１項に記載の情報処理システム。
【請求項５】
前記処理実行手段は、
電子データに対して、それぞれ所定の処理を行う複数のコンポーネントを有し、
前記第２の要求に含まれる前記電子データに関する情報により指定される電子データに対して実行する前記一連の処理を、該一連の処理に含まれる処理を行うコンポーネントを組み合わせることで実行する、請求項１ないし４のいずれか１項に記載の情報処理システム。
【請求項６】
前記処理実行手段は、
さらに、電子データに対して、該電子データのデータ型を所定のデータ型に変換する型変換手段を１以上有し、
前記第２の要求に含まれる前記電子データに関する情報により指定される電子データに対して実行する前記一連の処理を、１以上の前記型変換手段と、該一連の処理に含まれる処理を行うコンポーネントとを組み合わせて、前記電子データに関する情報により指定される電子データのデータ型を前記型変換手段により前記コンポーネントが処理可能な所定のデータ型に変換した後、該コンポーネントにより所定の処理を行うことにより実行する、請求項５記載の情報処理システム。
【請求項７】
前記複数のコンポーネントは、外部サービスに関する処理を実行するコンポーネントを含み、
前記外部サービスに関する処理を実行するコンポーネントは、
外部サービスに対して電子データをアップロードする処理を行うコンポーネント及び外部サービスから電子データをダウンロードする処理を行うコンポーネントを少なくとも含む、請求項５又は６に記載の情報処理システム。
【請求項８】
前記処理実行手段により実行された前記一連の処理の結果を、前記一の機器に送信する第２の送信手段を有する、請求項１ないし７のいずれか１項に記載の情報処理システム。
【請求項９】
情報処理装置であって、
電子データを用いた一連の処理を外部サービスと連携して実行するアプリケーション毎に、該アプリケーションを識別するアプリ識別情報と、該一連の処理に関する情報と、該一連の処理に用いる前記電子データを指定させる画面の画面情報と、を関連付けて記憶する第１の記憶手段と、
前記一連の処理に関する情報に基づく一連の処理に含まれる処理毎に、該処理の実行状態に関する情報を記憶する第２の記憶手段と、
前記情報処理装置に接続される１以上の機器のうちの一の機器から前記アプリ識別情報を含む第１の要求を受け付けると、該第１の要求に含まれる該アプリ識別情報に関連付けて前記第１の記憶手段に記憶されている前記画面情報を、要求元の前記一の機器に送信する第１の送信手段と、
前記第１の送信手段により送信された前記画面情報に基づき前記一の機器に表示された画面を介してユーザにより指定された電子データに関する情報を含む第２の要求を前記一の機器から受け付けると、前記アプリ識別情報に関連付けて前記第１の記憶手段に記憶されている前記一連の処理に関する情報に基づく一連の処理を、前記第２の要求に含まれる前記電子データに関する情報により指定される電子データに対して実行する処理実行手段と、
前記処理実行手段により実行される前記一連の処理に含まれる一の処理の実行に応じて、前記第２の記憶手段に記憶されている前記一の処理の実行状態に関する情報を更新する更新手段と
を有する情報処理装置。
【請求項１０】
１以上の情報処理装置が含まれる情報処理システムであって、電子データを用いた一連の処理を外部サービスと連携して実行するアプリケーション毎に、該アプリケーションを識別するアプリ識別情報と、該一連の処理に関する情報と、該一連の処理に用いる前記電子データを指定させる画面の画面情報と、を関連付けて記憶する第１の記憶手段と、前記一連の処理に関する情報に基づく一連の処理に含まれる処理毎に、該処理の実行状態に関する情報を記憶する第２の記憶手段とを有する情報処理システムに用いられる情報処理方法において、
前記情報処理システムに接続される１以上の機器のうちの一の機器から前記アプリ識別情報を含む第１の要求を受け付けると、該第１の要求に含まれる該アプリ識別情報に関連付けて前記第１の記憶手段に記憶されている前記画面情報を、要求元の前記一の機器に送信する第１の送信手順と、
前記第１の送信手順により送信された前記画面情報に基づき前記一の機器に表示された画面を介してユーザにより指定された電子データに関する情報を含む第２の要求を前記一の機器から受け付けると、前記アプリ識別情報に関連付けて前記第１の記憶手段に記憶されている前記一連の処理に関する情報に基づく一連の処理を、前記第２の要求に含まれる前記電子データに関する情報により指定される電子データに対して実行する処理実行手順と、
前記処理実行手順により実行される前記一連の処理に含まれる一の処理の実行に応じて、前記第２の記憶手段に記憶されている前記一の処理の実行状態に関する情報を更新する更新手順と
を有する情報処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理システム、情報処理装置、及び情報処理方法に関する。
【背景技術】
【０００２】
近年、クラウドコンピューティング等により多種多様な外部サービスが提供されるようになった。例えば、ユーザにより指定された電子データを外部のストレージに保管する外部サービスが知られている。
【０００３】
また、例えば、画像形成装置で原稿をスキャンして取得した画像データを外部ストレージに保管する技術が知られている（例えば特許文献１参照）。このように、画像形成装置と外部サービスとが連携して処理を行う技術が従来から知られている。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、上記の従来技術においては、外部サービスと連携して処理を行うためには画像形成装置に搭載されるアプリケーションの開発が必要となる。また、ある外部サービスが固有の機能（他の外部サービスが提供していない機能）を提供するようになった場合には、当該固有の機能を利用するためのモジュールやプラグイン等を開発する必要がある。したがって、画像形成装置に搭載されるアプリケーションの追加や修正等の開発に要する工数が大きくなる場合があった。
【０００５】
本発明の一実施形態は、上記の点に鑑みてなされたもので、外部サービスと連携した処理を行うためのアプリケーションの開発を支援することを目的とする。
【課題を解決するための手段】
【０００６】
上記目的を達成するため、本発明の一実施形態は、１以上の情報処理装置が含まれる情報処理システムであって、電子データを用いた一連の処理を外部サービスと連携して実行するアプリケーション毎に、該アプリケーションを識別するアプリ識別情報と、該一連の処理に関する情報と、該一連の処理に用いる前記電子データを指定させる画面の画面情報と、を関連付けて記憶する第１の記憶手段と、前記一連の処理に関する情報に基づく一連の処理に含まれる処理毎に、該処理の実行状態に関する情報を記憶する第２の記憶手段と、前記情報処理システムに接続される１以上の機器のうちの一の機器から前記アプリ識別情報を含む第１の要求を受け付けると、該第１の要求に含まれる該アプリ識別情報に関連付けて前記第１の記憶手段に記憶されている前記画面情報を、要求元の前記一の機器に送信する第１の送信手段と、前記第１の送信手段により送信された前記画面情報に基づき前記一の機器に表示された画面を介してユーザにより指定された電子データに関する情報を含む第２の要求を前記一の機器から受け付けると、前記アプリ識別情報に関連付けて前記第１の記憶手段に記憶されている前記一連の処理に関する情報に基づく一連の処理を、前記第２の要求に含まれる前記電子データに関する情報により指定される電子データに対して実行する処理実行手段と、前記処理実行手段により実行される前記一連の処理に含まれる一の処理の実行に応じて、前記第２の記憶手段に記憶されている前記一の処理の実行状態に関する情報を更新する更新手段とを有する。
【発明の効果】
【０００７】
本発明の一実施形態によれば、外部サービスと連携した処理を行うためのアプリケーションの開発を支援することができる。
【図面の簡単な説明】
【０００８】
【図１】第１の実施形態に係る情報処理システムの一例のシステム構成を示す図である。
【図２】第１の実施形態に係るサービス提供システムの一例のハードウェア構成を示す図である。
【図３】第１の実施形態に係る画像形成装置の一例のハードウェア構成を示す図である。
【図４】第１の実施形態に係る情報処理システムの一例の処理ブロックを示す図である。
【図５】共通Ｉ／Ｆ及び固有Ｉ／Ｆの一例を示す図である。
【図６】データ定義の一例を示す図である。
【図７】レイアウト情報の一例を示す図である。
【図８】処理内容の一例を示す図である。
【図９】第１の実施形態に係るスキャン配信サービスの全体処理の一例を示す図である。
【図１０】スキャン配信サービスを利用するためのアプリ画面の一例を示す図である。
【図１１】第１の実施形態に係るロジック処理部の一例の処理ブロックを示す図である。
【図１２】型変換テーブルの一例を示す図である。
【図１３】フロー状態テーブルの一例を示す図である。
【図１４】第１の実施形態に係るＯＣＲから配信実行までの処理の一例のシーケンスを示す図である。
【図１５】ＯＣＲから配信実行までの処理におけるフロー状態テーブルの実行状態の遷移の一例を示す図である。
【図１６】第１の実施形態に係るクラウドプリントサービスの全体処理の一例のシーケンスを示す図である。
【図１７】クラウドプリントサービスを利用するためのアプリ画面の一例を示す図である。
【図１８】第１の実施形態に係るファイル取得実行から印刷変換までの処理の一例のシーケンスを示す図である。
【図１９】ファイル取得実行から印刷変換までの処理におけるフロー状態テーブルの実行状態の遷移の一例を示す図である。
【図２０】第２の実施形態に係る情報処理システムの一例の処理ブロックを示す図である。
【図２１】第２の実施形態に係るアプリ画面の表示処理の一例のシーケンスを示す図である。
【発明を実施するための形態】
【０００９】
以下、本発明の実施形態について図面を参照しながら詳細に説明する。
【００１０】
［第１の実施形態］
＜システム構成＞
まず、本実施形態に係る情報処理システム１のシステム構成について、図１を参照しながら説明する。図１は、第１の実施形態に係る情報処理システムの一例のシステム構成を示す図である。
【００１１】
図１に示す情報処理システム１は、サービス提供環境Ｅ１、ユーザ環境Ｅ２、及び外部ストレージシステム３０を含み、インターネット等の広域的なネットワークＮ１を介して通信可能に接続されている。
【００１２】
サービス提供環境Ｅ１は、ネットワークＮ１を介してクラウドサービス等の外部サービスを提供するシステム環境である。なお、本実施形態では、外部サービスの具体例としてクラウドサービスを採用して説明するが、ＡＳＰ（Application Service Provider）によって提供されるサービスやＷｅｂサービス等、ネットワークを介して提供されるサービスに関して本実施形態が適用されても良い。
【００１３】
サービス提供環境Ｅ１は、一台以上の情報処理装置で実現されるサービス提供システム１０を有する。サービス提供システム１０は、ネットワークＮ１を介して所定のサービスを提供する。例えば、サービス提供システム１０は、ユーザ環境Ｅ２の画像形成装置２０において原稿をスキャンして生成された電子ファイルを、ＯＣＲ（Optical Character Reader）処理して、外部ストレージシステム３０に保存するサービス（スキャン配信サービス）を提供する。また、例えば、サービス提供システム１０は、外部ストレージシステム３０に保存されている電子ファイルを、ユーザ環境Ｅ２の画像形成装置２０で印刷するサービス（クラウドプリントサービス）を提供する。本実施形態では、サービス提供システム１０は、このようなスキャン配信サービス及びクラウドプリントサービスを提供するものとして説明する。
【００１４】
ただし、サービス提供システム１０により提供されるサービスは、これらに限られず、例えば、外部ストレージシステム３０に保存されている電子ファイルを、ユーザ環境Ｅ２のプロジェクタで投影するサービス等であっても良い。また、画像形成装置２０において原稿をスキャンして生成された電子ファイルを、ＯＣＲ処理した後、所定の言語に翻訳（例えば、英語から日本語に翻訳）して、外部ストレージシステム３０に保存するサービス等であっても良い。
【００１５】
なお、サービス提供システム１０の全部又は一部は、ユーザ環境Ｅ２に設置されていても良い。すなわち、サービス提供システム１０を構成する情報処理装置の全部又は一部は、ユーザ環境Ｅ２に包含されていても良い。
【００１６】
ユーザ環境Ｅ２は、例えば、画像形成装置２０を使用するユーザである企業等におけるシステム環境である。ユーザ環境Ｅ２は、一台以上の画像形成装置２０が、例えばＬＡＮ（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）を用いて行うことができる。
【００６４】
また、ストレージサービス連携部１６０は、共通Ｉ／Ｆ１７１及び固有Ｉ／Ｆ１７２をそれぞれ異なるモジュール等で定義している。また、共通Ｉ／Ｆ１７１及び固有Ｉ／Ｆ１７２で定義されるＡＰＩは、「ストレージサービス名」（外部サービス名）を指定することで利用することができる（すなわち、「ストレージサービス名」（外部サービス名）が可変部分となっている）。
【００６５】
したがって、連携先の外部ストレージシステム３０を追加する場合には、他のストレージサービス連携部１６０に定義されている共通Ｉ／Ｆ１７１を再利用することができる。換言すれば、連携先の外部ストレージシステム３０を追加する場合には、当該追加する外部ストレージシステム３０の固有Ｉ／Ｆ１７２のみを開発すれば良い。これにより、連携先の外部ストレージシステム３０の追加等の開発に要する工数をさらに削減することができる。なお、このことは、データ処理部１８０の共通Ｉ／Ｆ１８１及び固有Ｉ／Ｆ１８２に関しても同様である。
【００６６】
アプリ情報記憶部１９０は、アプリ情報１０００を記憶する。アプリ情報１０００は、アプリ画面を画像形成装置２０に表示させるための画面定義と、サービスを実現するため処理内容とを含み、アプリ情報１０００を一意に識別するためのアプリＩＤ毎に、アプリ情報記憶部１９０に記憶されている。
【００６７】
本実施形態では、ストレージサービスＡと連携したスキャン配信サービスを実現するためのアプリ情報１０００を「アプリ情報１０００１」とし、当該アプリ情報１０００１のアプリＩＤを「app001」とする。また、本実施形態では、ストレージサービスＡと連携したクラウドプリントサービスを実現するためのアプリ情報１０００を「アプリ情報１０００２」とし、当該アプリ情報１０００２のアプリＩＤを「app002」とする。
【００６８】
ここで、アプリ情報１０００１の画面定義に含まれるデータ定義及びアプリ情報１０００２の画面定義に含まれるデータ定義を、それぞれ図６（ａ）及び図６（ｂ）に示す。
【００６９】
データ定義には、画像形成装置２０のブラウザ２１０により操作パネル２２等に表示されるアプリ画面の入力欄（入力ボックス）や選択欄（選択ボックス）等を構成するための情報が記述されている。
【００７０】
例えば、図６（ａ）におけるデータ定義部１１０１では、スキャンにより生成される電子ファイルのファイル名をユーザが入力するための入力欄を構成するための情報が記述されている。また、図６（ａ）におけるデータ定義部１１０２では、ストレージサービスＡにおける保存先フォルダを選択するための選択欄を構成するための情報が記述されている。なお、データ定義部１１０２の「data_source」には選択欄の各選択要素（ここでは、保存先候補のフォルダ名及びフォルダＩＤ）の取得先のＵＲＬ（Uniform Resource Locator）が記述されている。
【００７１】
同様に、図６（ｂ）におけるデータ定義部１２０１では、ストレージサービスＡに保存されているファイルを選択するための選択欄を構成するための情報が記述されている。なお、データ定義部１２０１の「data_source」には選択欄の各選択要素（ここでは、ストレージサービスＡに保存されているファイルのファイルＩＤ）の取得先のＵＲＬが記述されている。
【００７２】
次に、アプリ情報１０００１の画面定義に含まれるレイアウト情報及びアプリ情報１０００２の画面定義に含まれるレイアウト情報を、それぞれ図７（ａ）及び図７（ｂ）に示す。レイアウト情報は、画像形成装置２０のブラウザ２１０により操作パネル２２等に表示されるアプリ画面に表示される文字（入力欄の表示名称等）、入力欄や選択欄の表示位置等の情報が記述されている。
【００７３】
例えば、図７（ａ）におけるレイアウト定義部１３０１では、図６（ａ）に示すデータ定義における「"data_id":1」（すなわち、データ定義部１１０１）の表示位置及び表示名称の情報が記述されている。これにより、ストレージサービスＡと連携したスキャン配信サービスのアプリ画面には、表示名称が「ファイル名」である入力欄が、１番目の位置に表示される。また、レイアウト定義部１３０２では、図６（ａ）に示すデータ定義における「"data_id":2」（すなわち、データ定義部１１０２）の表示位置及び表示名称の情報が記述されている。これにより、ストレージサービスＡと連携したスキャン配信サービスのアプリ画面には、表示名称が「保存先フォルダ選択」である選択欄が、２番目の位置に表示される。
【００７４】
同様に、図７（ｂ）におけるレイアウト定義部１４０１では、図６（ｂ）に示すデータ定義における「"data_id":1」（すなわち、データ定義部１２０１）の表示位置及び表示名称の情報が記述されている。これにより、ストレージサービスＡと連携したクラウドプリントサービスのアプリ画面には、表示名称が「印刷対象ファイル選択」である入力欄が、１番目の位置に表示される。
【００７５】
次に、アプリ情報１０００１の処理内容及びアプリ情報１０００２の処理内容を、それぞれ図８（ａ）及び図８（ｂ）に示す。処理内容は、サービス提供システム１０により提供されるサービスを実現する一連の処理（すなわち、処理フロー）が記述されたものである。また、処理内容には、当該処理内容を一意に識別する「フローＩＤ」が含まれる。
【００７６】
例えば、図８（ａ）に示す処理内容は、フローＩＤが「flow1」の処理内容であり、本実施形態に係るスキャン配信サービスを実現するための一連の処理が記述されている。すなわち、フローＩＤ「flow1」の処理内容には、スキャンされた電子ファイルをＯＣＲ処理した後、ストレージサービスＡの指定されたフォルダに配信する一連の処理が記述されている。
【００７７】
同様に、図８（ｂ）に示す処理内容は、フローＩＤが「flow2」の処理内容であり、本実施形態に係るクラウドプリントサービスを実現するための一連の処理が記述されている。すなわち、フローＩＤが「flow2」の処理内容には、ストレージサービスＡから電子ファイルを取得した後、印刷データに変換する一連の処理が記述されている。
【００７８】
以上のように、本実施形態に係るサービス提供システム１０は、画像形成装置２０にアプリ画面を表示させるための画面定義と、サービスを実現するための処理フローが記述された処理内容とが含まれるアプリ情報１０００を利用してサービスを提供する。このため、サービス提供システム１０により提供されるサービスを追加等する場合には、アプリ情報記憶部１９０にアプリ情報１０００を追加等すれば良い。
【００７９】
また、アプリ情報１０００を追加するには、上述したように、画面定義及び処理内容を記述すれば良いため、簡易に開発することができる。したがって、サービスの追加・変更等に伴う開発工数を削減させることができるとともに、例えばサードベンダー等によるサービスの追加・変更等を容易に行うことができる。
【００８０】
＜処理の詳細＞
次に、本実施形態に係る情報処理システム１の処理の詳細について説明する。
【００８１】
≪スキャン配信サービスの全体処理≫
以降では、画像形成装置２０のユーザが本実施形態に係るスキャン配信サービスを利用する場合の全体的な処理について、図９を参照しながら説明する。図９は、第１の実施形態に係るスキャン配信サービスの全体処理の一例を示す図である。
【００８２】
まず、画像形成装置２０のユーザは、ブラウザ２１０を用いて、サービス提供システム１０により提供されるサービスの一覧を取得するための操作を行う。すると、画像形成装置２０は、サービスの一覧の取得要求をサービス提供システム１０のサービス処理部１１０に送信する（ステップＳ９０１）。サービス処理部１１０のアプリ管理部１２０は、当該取得要求を受け取ると、サービス提供システム１０により提供されるサービスの一覧を画像形成装置２０に送信する。これにより、画像形成装置２０の操作パネル２２には、ブラウザ２１０により、サービス提供システム１０により提供されるサービスの一覧が表示される。なお、サービスの一覧には、サービス提供システム１０により提供されるサービスのサービス名と、当該サービスを実現するためのアプリ情報１０００のアプリＩＤとが含まれる。
【００８３】
ユーザは、画像形成装置２０の操作パネル２２に表示されたサービスの一覧から、自身が利用を所望するサービスを選択する。すると、ブラウザ２１０は、選択されたサービスを実現するためのアプリ情報１０００のアプリＩＤをアプリ管理部１２０に送信する（ステップＳ９０２）。ここでは、ユーザによりサービス名「スキャン配信サービス」の利用が選択されたものとする。したがって、ブラウザ２１０は、アプリ情報１０００１のアプリＩＤ「app001」をアプリ管理部１２０に送信する。
【００８４】
そして、アプリ管理部１２０は、ブラウザ２１０から受け取ったアプリＩＤ「app001」のアプリ情報１０００１に含まれる画面定義に基づきＨＴＭＬ（HyperText Markup Language）形式のアプリ画面を生成し、ブラウザ２１０に送信する。
【００８５】
ブラウザ２１０は、アプリ管理部１２０からアプリ画面を受け取ると、表示用情報の取得をデータＩ／Ｆ部１４０に要求する（ステップＳ９０３）。
【００８６】
ここで表示用情報とは、例えばアプリ画面の選択欄の各選択要素のことである。すなわち、本実施形態では、ブラウザ２１０は、スキャン配信サービスの配信先（保存先）となるストレージサービスＡのフォルダの一覧の取得を、データＩ／Ｆ部１４０に要求する。このような要求は、図６（ａ）のデータ定義部１１０２に記述されている「"data_source"」に定義されているＵＲＬ「http://sample.xxx.co.jp/service-a/data/folders」にＨＴＴＰリクエストを送信することで行うことができる。
【００８７】
なお、当該ＵＲＬのうち、「http://sample.xxx.co.jp」の部分がサービス提供システム１０のホスト名、「/service-a/data/folders」の部分がストレージサービス連携部１６０におけるＡＰＩ（すなわち、図５に示すＡＰＩ）の指定となる。
【００８８】
次に、データＩ／Ｆ部１４０は、ブラウザ２１０から表示用情報の取得要求を受け取ると、当該要求を対応するストレージサービス連携部１６０のデータ処理部１８０に送信する（ステップＳ９０４）。本実施形態では、データＩ／Ｆ部１４０は、上記のＵＲＬに含まれる「service-a」（ストレージサービス名）に基づき、当該要求を、ストレージサービスＡ連携部１６０１のデータ処理部１８０１に送信する。
【００８９】
データ処理部１８０は、データＩ／Ｆ部１４０から要求を受け取ると、当該要求に含まれるＵＲＬに基づき、対応する処理要求を外部ストレージシステム３０に送信する（ステップＳ９０５）。すなわち、データ処理部１８０は、データＩ／Ｆ部１４０から受け取った要求に含まれるＵＲＬに基づき、共通Ｉ／Ｆ１８１又は固有Ｉ／Ｆ１８２に定義されているＡＰＩを利用して、該当の外部ストレージシステム３０に処理を要求する。
【００９０】
本実施形態では、上記のＵＲＬに含まれる「/service-a/data/folders」に基づき、データ処理部１８０は、共通Ｉ／Ｆ１８１に定義されているＡＰＩを用いて、ストレージサービスＡにフォルダ一覧の取得を要求する。すると、ブラウザ２１０は、ストレージサービスＡ連携部１６０１を介して、フォルダ一覧を取得する。フォルダ一覧は、本実施形態のスキャン配信サービスにおいて、電子ファイルの保存先の候補となるストレージサービスＡのフォルダ名及びフォルダＩＤ等の情報である。
【００９１】
次に、ブラウザ２１０は、アプリ管理部１２０から受け取ったアプリ画面と、外部ストレージシステム３０から受け取ったフォルダ一覧に基づき、例えば図１０（ａ）に示すようなアプリ画面２０００を、操作パネル２２に表示させる（ステップＳ９０６）。
【００９２】
ここで、図１０（ａ）で示すスキャン配信サービスを利用するためのアプリ画面２０００は、ファイル名入力欄２００１、保存先フォルダ選択欄２００２、及びスキャン実行ボタン２００３を含む。このうち、ファイル名入力欄２００１及び保存先フォルダ選択欄２００２は、図１０（ｂ）に示すように、それぞれＨＴＭＬソースコード２１０１及び２１０２で記述されている。このようなＨＴＭＬソースコード２１０１及び２１０２は、アプリ管理部１２０により、図６（ａ）に示すデータ定義部１１０１及び１１０２並びに図７（ｂ）に示すレイアウト定義部１３０１及び１３０２に基づいて生成される。
【００９３】
ただし、ＨＴＭＬソースコード２１０２に指定されている「option」の設定値は、外部ストレージシステム３０から取得したフォルダ一覧に基づき、ブラウザ２１０で設定される。このように、アプリ画面２０００は、アプリ情報１０００１の画面定義に基づきアプリ管理部１２０で生成されたＨＴＭＬに対して、外部ストレージシステム３０１から取得したフォルダ一覧の情報を設定することで生成される。
【００９４】
次に、ユーザは、図１０（ａ）のアプリ画面２０００において、ファイル名入力欄２００１に所望のファイル名を入力して、保存先フォルダ選択欄２００２から所望の保存先フォルダを選択する。そして、画像形成装置２０のスキャナ２６に原稿をセットして、スキャン実行ボタン２００３を押下する（ステップＳ９０７）。ここで、ユーザはファイル名入力欄２００１にファイル名「test」を入力し、保存先フォルダ選択欄２００２から「FolderB」を選択して、スキャン実行ボタン２００３を押下したものとする。これにより、画像形成装置２０のスキャナ２６により原稿が読み取られ、ファイル名「test」の電子ファイルが生成される（ステップＳ９０８）。
【００９５】
続いて、ブラウザ２１０は、スキャン配信サービスの処理の実行要求をロジック処理部１３０に送信する（ステップＳ９０９）。ここで、当該実行要求には、アプリＩＤ「app001」と、当該アプリＩＤのアプリ情報１０００に含まれる処理内容のフローＩＤ「flow1」と、生成された電子ファイルと、選択された保存先フォルダ「FolderB」のフォルダＩＤ「folder_id_b」とが含まれる。
【００９６】
そして、ロジック処理部１３０は、ブラウザ２１０から処理の実行要求を受け取ると、アプリ管理部１２０を介して、当該処理の実行要求に含まれるアプリＩＤ及びフローＩＤに対応する処理内容を取得し、当該処理内容に従って処理を実行する（ステップＳ９１０）。すなわち、本実施形態に係るスキャン配信サービスでは、当該処理の実行要求に含まれる電子ファイルに対してＯＣＲ処理を行った後、ストレージサービスＡのフォルダ「FolderB」に対して当該ＯＣＲ処理後の電子ファイルを配信（アップロード）する。このステップＳ９１０の処理の詳細については、後述する。ここでは、ロジック処理部１３０は、ＯＣＲ処理後の電子ファイルと、フォルダ「FolderB」のフォルダＩＤ「folder_id_b」とを含む配信実行の要求を、ストレージサービスＡ連携部１６０１のファイル処理部１７０１に送信したものとして説明を続ける。
【００９７】
ファイル処理部１７０は、ロジック処理部１３０から配信実行の要求を受け取ると、共通Ｉ／Ｆ１７１又は固有Ｉ／Ｆ１７２に定義されているＡＰＩを利用して、該当の外部ストレージシステム３０に処理を要求する（ステップＳ９１１）。本実施形態では、ファイル処理部１７０１の共通Ｉ／Ｆ１７１１に定義されているストレージサービスＡにファイルを保存するためのＡＰＩ「/service-a/process/folder」を用いて、ＯＣＲ処理後の電子ファイルをフォルダ「FolderB」に配信（アップロード）する。そして、電子ファイルのアップロードが完了すると、処理結果がブラウザ２１０に表示される。これにより、本実施形態に係るスキャン配信サービスが完了する。
【００９８】
≪ＯＣＲから配信実行までの処理≫
以降では、図９のステップＳ９１０の処理の詳細について説明する。この処理は、主に、ロジック処理部１３０により実行される。したがって、図９のステップＳ９１０の処理の詳細について説明する前に、ロジック処理部１３０の詳細な処理ブロックについて、図１１を参照しながら説明する。図１１は、第１の実施形態に係るロジック処理部の一例の処理ブロック図である。
【００９９】
ロジック処理部１３０は、フロー実行部１３１、コンポーネント管理部１３２、コンポーネント群１３３、型変換管理部１３４、型変換群１３５、及びフロー状態管理部１３６を有する。また、ロジック処理部１３０は、型変換テーブル３０００及びフロー状態テーブル４０００を利用する。
【０１００】
フロー実行部１３１は、ブラウザ２１０からスキャン配信サービスの処理の実行要求を受け取ると、アプリ管理部１２０を介して、アプリ情報１０００から処理内容を取得する。そして、フロー実行部１３１は、取得した処理内容に従ってコンポーネントに対して処理の実行を要求する。ここで、コンポーネントとは、処理内容に含まれる一の処理を実行するためのモジュール等であり、例えばクラスや関数等で定義される。
【０１０１】
コンポーネント管理部１３２は、フロー実行部１３１からの要求に応じて、コンポーネントの生成を行う。なお、コンポーネントの生成とは、例えばクラスで定義されたコンポーネントを、メモリ（例えばＲＡＭ１４）上に展開することを意味する。
【０１０２】
コンポーネント群１３３は、コンポーネントの集合である。コンポーネント群１３３には、外部ストレージシステム３０に電子ファイルを配信するための配信コンポーネント１３３１、外部ストレージシステム３０から電子ファイルを取得するための取得コンポーネント１３３２が含まれる。また、コンポーネント群１３３には、電子ファイルにＯＣＲ処理を行うためのＯＣＲコンポーネント１３３３、電子ファイルを印刷データに変換するための印刷変換コンポーネント１３３４等が含まれる。
【０１０３】
さらに、これらの各コンポーネントは、コンポーネント共通Ｉ／Ｆ１３３０を有する。コンポーネント共通Ｉ／Ｆ１３３０は、各コンポーネントに対して共通に定義されたＡＰＩであり、コンポーネントを生成するためのＡＰＩと、コンポーネントに対して処理の実行を要求するためのＡＰＩとが含まれる。
【０１０４】
このように、各コンポーネントがコンポーネント共通Ｉ／Ｆ１３３０を有することで、コンポーネントの追加等に伴う影響を局所化することができる。換言すれば、フロー実行部１３１及びコンポーネント管理部１３２に影響を与えることなく、コンポーネントの追加等を行うことができる。このため、コンポーネントの追加等の開発に要する工数を削減することができる。
【０１０５】
型変換管理部１３４は、データ型の型変換を管理する。ここで、各コンポーネントは、自身が扱えるデータ型が予め定められている。したがって、型変換管理部１３４は、コンポーネントからの要求に応じて、図１２に示すような型変換テーブル３０００を参照して、型変換群１３５に定義されている型変換を生成する。
【０１０６】
ここで、図１２に示す型変換テーブル３０００は、変換前のデータ型、変換後のデータ型、及び生成する型変換のデータ項目を有する型変換情報を格納する。これにより、例えば、コンポーネントから「InputStream」のデータ型を「LocalFilePath」のデータ型に変換する要求を受け取った場合、型変換管理部１３４は、後述する第１の型変換１３５１を生成する。
【０１０７】
そして、型変換管理部１３４は、生成された型変換に対して型変換処理の実行を要求する。ここで、型変換とは、データ型の型変換処理を実行するためのモジュール等であり、例えばクラスや関数等で定義される。
【０１０８】
なお、型変換の生成とは、例えばクラスで定義された型変換を、メモリ（例えばＲＡＭ１４）上に展開することを意味する。また、データ型には、例えば、ストリームデータを示すデータ型「InputStream」、記憶装置等に格納されている電子ファイルのパス（アドレス）を示す「LocalFilePath」、電子ファイルの実体を示す「File」等が挙げられる。
【０１０９】
型変換群１３５は、型変換の集合である。型変換群１３５には、データ型「InputStream」を「LocalFilePath」に変換する第１の型変換１３５１、「LocalFilePath」を「File」に変換する第２の型変換１３５２等が含まれる。
【０１１０】
さらに、これらの各型変換は、型変換共通Ｉ／Ｆ１３５０を有する。型変換共通Ｉ／Ｆ１３５０は、各型変換に対して共通に定義されたＡＰＩであり、型変換を生成するためのＡＰＩと、型変換に対して処理の実行を要求するためのＡＰＩとが含まれる。このように、各型変換が型変換共通Ｉ／Ｆ１３５０を有するようにすることで、型変換の追加等に伴う影響を局所化することができる。換言すれば、型変換管理部１３４に影響を与えることなく、コンポーネントの追加等を行うことができる。これにより、型変換の追加等の開発に要する工数を削減することができる。
【０１１１】
フロー状態管理部１３６は、処理内容に従って実行される各コンポーネントの実行状態を、図１３に示すようなフロー状態テーブル４０００を用いて管理する。
【０１１２】
ここで、図１３に示すフロー状態テーブル４０００は、処理ＩＤ、フローＩＤ、コンポーネント名、及び実行状態のデータ項目を有する状態情報を格納する。処理ＩＤは、処理内容に基づく一連の処理を一意に識別する識別情報である。フローＩＤは、処理内容を一意に識別する識別情報である。コンポーネント名は、処理内容に含まれる各処理を実行するコンポーネントの名称である。実行状態は、コンポーネントの実行状態であり、例えば、実行前を示す「accepted」、実行中を示す「processing」、実行完了を示す「completed」、及びエラーが発生したことを示す「error」等がある。
【０１１３】
このように、フロー状態管理部１３６により処理内容に従って実行される各コンポーネントの実行状態を示す状態情報が管理される。このため、フロー実行部１３１は、フロー状態管理部１３６を介して、処理内容に従って実行される各コンポーネントの実行が完了したか否かを確認することができる。
【０１１４】
続いて、図９のステップＳ９１０の処理の詳細について、図１４を参照しながら説明する。図１４は、第１の実施形態に係るＯＣＲから配信実行までの処理の一例のシーケンスを示す図である。
【０１１５】
まず、フロー実行部１３１は、ブラウザ２１０からスキャン配信サービスの処理の実行要求を受け取る（ステップＳ１４０１）。ここで、当該実行要求には、アプリＩＤ「app001」と、当該アプリＩＤのアプリ情報１０００に含まれる処理内容のフローＩＤ「flow1」と、生成された電子ファイルと、選択された保存先フォルダ「FolderB」のフォルダＩＤ（保存先）とが含まれる。
【０１１６】
なお、当該電子ファイルは、データ型が「InputStream」（すなわち、ストリームデータ）としてブラウザ２１０から渡されるものとする。
【０１１７】
フロー実行部１３１は、ブラウザ２１０から処理の実行要求を受け取ると、アプリ管理部１２０に対して、処理内容の取得を要求する（ステップＳ１４０２）。ここで、当該取得要求には、アプリＩＤ「app001」と、フローＩＤ「flow1」とが含まれる。そして、フロー実行部１３１は、アプリ管理部１２０からアプリＩＤ「app001」に対応するアプリ情報１０００１に含まれるフローＩＤ「flow1」の処理内容を取得する。すなわち、フロー実行部１３１は、図８（ａ）に示す処理内容を取得する。
【０１１８】
ここで、フロー実行部１３１は、アプリ管理部１２０から処理内容を受け取ると、当該処理内容に基づく一連の処理を一意に識別する処理ＩＤを生成する。本実施形態では、処理ＩＤ「10009」が生成されたものとして説明する。
【０１１９】
フロー実行部１３１は、処理ＩＤを生成すると、フロー状態管理部１３６に対して、状態情報の生成を要求する（ステップＳ１４０３）。すると、フロー状態管理部１３６は、図１５（ａ）に示すように、フローＩＤ「flow1」の処理内容に従って実行される各コンポーネントのコンポーネント名を、処理ＩＤ「10009」及び実行状態「accepted」と関連付けた状態情報を生成する。
【０１２０】
そして、フロー状態管理部１３６は、生成した状態情報をフロー状態テーブル４０００に格納して、生成結果をフロー実行部１３１に返信する。このように、本実施形態に係るサービス提供システム１０は、処理内容が取得されると、当該処理内容に従って実行される各コンポーネントの実行状態が「accepted」である状態情報を生成して、フロー状態テーブル４０００に格納する。
【０１２１】
フロー実行部１３１は、取得した処理内容に従ってコンポーネントの取得を、コンポーネント管理部１３２に要求する（ステップＳ１４０４）。より具体的には、フロー実行部１３１は、図８（ａ）に示す処理内容の「From("file:input")」の次に指定されている「.to("process:ocr")」に基づき、ＯＣＲコンポーネント１３３３の取得を、コンポーネント管理部１３２に要求する。
【０１２２】
コンポーネント管理部１３２は、ＯＣＲコンポーネント１３３３の取得要求を受け取ると、ＯＣＲコンポーネント１３３３を生成する（ステップＳ１４０５）。ＯＣＲコンポーネント１３３３の生成は、コンポーネント共通Ｉ／Ｆ１３３０に定義されたコンポーネントを生成するためのＡＰＩを用いて行うことができる。そして、ＯＣＲコンポーネント１３３３が生成されると、コンポーネント管理部１３２は、ＯＣＲコンポーネント１３３３をフロー実行部１３１に返信する。これは、例えば、コンポーネント管理部１３２は、ＯＣＲコンポーネント１３３３が展開されたメモリ（例えばＲＡＭ１４）上のアドレスを、フロー実行部１３１に返信すれば良い。
【０１２３】
フロー実行部１３１は、生成されたＯＣＲコンポーネント１３３３に対して、データを指定して処理の実行を要求する（ステップＳ１４０６）。なお、ここで指定されるデータは、データ型が「InputStream」としてブラウザ２１０から渡される電子ファイルである。
【０１２４】
すなわち、フロー実行部１３１は、ブラウザ２１０からデータ型「InputStream」として渡される電子ファイルを、単に「データ」として（データ型を意識することなく）、ＯＣＲコンポーネント１３３３に渡して処理の実行を要求する。図１４では、このようにデータ型を意識することなく渡される電子ファイル等を、単に「データ」と表す。
【０１２５】
次に、ＯＣＲコンポーネント１３３３は、フロー状態管理部１３６に対して、実行状態を「processing」に更新することを要求する（ステップＳ１４０７）。すると、フロー状態管理部１３６は、図１５（ｂ）に示すように、コンポーネント名「ＯＣＲコンポーネント」の実行状態を「processing」に更新する。そして、フロー状態管理部１３６は、更新結果をＯＣＲコンポーネント１３３３に返信する。このように、各コンポーネントは、処理を実行する前に、フロー状態テーブル４０００に格納された状態情報に含まれる実行状態を「processing」に更新する。
【０１２６】
ＯＣＲコンポーネント１３３３は、型変換管理部１３４に対して、型変換を要求する（ステップＳ１４０８）。ここで、当該型変換要求には、データと、ＯＣＲコンポーネント１３３３が扱うことができるデータ型を示す「LocalFilePath」の指定とが含まれる。
【０１２７】
型変換管理部１３４は、受け取った型変換要求に含まれるデータのデータ型と、指定されたデータ型とが一致するか否かをチェックする（ステップＳ１４０９）。ここでは、受け取った型変換要求に含まれるデータのデータ型は「InputStream」である一方、指定されたデータ型は「LocalFilePath」であるから、一致しないものと判断される。
【０１２８】
すると、型変換管理部１３４は、型変換テーブル３０００を参照して、「InputStream」を「LocalFilePath」に変換するための型変換を特定して（ここでは、第１の型変換１３５１が特定される）、当該特定された型変換を生成する（ステップＳ１４１０）。
【０１２９】
次に、型変換管理部１３４は、生成された第１の型変換１３５１に対して、データを指定して型変換処理の実行を要求する（ステップＳ１４１１）。すると、第１の型変換１３５１は、指定されたデータのデータ型を「InputStream」から「LocalFilePath」に変換して（ステップＳ１４１２）、当該変換後のデータを型変換管理部１３４に返信する。そして、型変換管理部１３４は、型変換後のデータをＯＣＲコンポーネント１３３３に返信する（ステップＳ１４１３）。
【０１３０】
ＯＣＲコンポーネント１３３３は、型変換後のデータを受け取ると、処理を実行する（ステップＳ１４１４）。すなわち、データ型「LocalFilePath」のデータ（すなわち、パス又はアドレス）により示される電子ファイルに対して、ＯＣＲ処理を実行する。より具体的には、ＯＣＲコンポーネント１３３３は、ドキュメントサービス部１５０のＯＣＲ処理１５１に処理を要求し、ＯＣＲ処理１５１が当該電子ファイルに対して処理を実行する。
【０１３１】
次に、ＯＣＲコンポーネント１３３３は、フロー状態管理部１３６に対して、実行状態を「completed」に更新することを要求する（ステップＳ１４１５）。すると、フロー状態管理部１３６は、図１５（ｃ）に示すように、コンポーネント名「ＯＣＲコンポーネント」の実行状態を「completed」に更新する。そして、フロー状態管理部１３６は、更新結果をＯＣＲコンポーネント１３３３に返信する。このように、各コンポーネントは、処理の実行が完了すると、フロー状態テーブル４０００に格納された状態情報に含まれる実行状態を「completed」に更新する。これにより、コンポーネントの処理の実行が完了したことが管理される。
【０１３２】
なお、各コンポーネントは、例えば、処理の実行中にエラーが発生した場合は、フロー状態テーブル４０００に格納された状態情報に含まれる実行状態を「error」に更新する。
【０１３３】
また、ＯＣＲコンポーネント１３３３は、フロー状態管理部１３６から更新結果を受け取ると、データをフロー実行部１３１に返信する。なお、ここで返信されるデータは、ＯＣＲ処理後の電子ファイルを示すパス又はアドレスである（すなわち、返信されるデータのデータ型は「LocalFilePath」である。）。
【０１３４】
次に、フロー実行部１３１は、取得した処理内容に従ってコンポーネントの取得を、コンポーネント管理部１３２に要求する（ステップＳ１４１６）。より具体的には、フロー実行部１３１は、図８（ａ）に示す処理内容の「.to("process:ocr")」の次に指定されている「.to("strage:send_to_folder?type=service-a")」に基づき、配信コンポーネント１３３１の取得を、コンポーネント管理部１３２に要求する。
【０１３５】
なお、ここで指定されている処理内容のうち「?type=service-a」の部分はオプションパラメータと称され、配信コンポーネント１３３１の処理によるデータのアップロード先のストレージサービスが「ストレージサービスＡ」であることを示している。また、上記の指定されている処理内容に、上記のステップＳ１４０１の実行要求に含まれる保存先（保存先フォルダのフォルダＩＤ）をオプションパラメータとして付加して「.to("strage:send_to_folder? type=service-a&folder_id_b")」としても良い。
【０１３６】
コンポーネント管理部１３２は、配信コンポーネント１３３１の取得要求を受け取ると、配信コンポーネント１３３１を生成する（ステップＳ１４１６）。配信コンポーネント１３３１の生成は、コンポーネント共通Ｉ／Ｆ１３３０に定義されたコンポーネントを生成するためのＡＰＩを用いて行うことができる。そして、配信コンポーネント１３３１が生成されると、コンポーネント管理部１３２は、配信コンポーネント１３３１をフロー実行部１３１に返信する。これは、例えば、コンポーネント管理部１３２は、配信コンポーネント１３３１が展開されたメモリ（例えばＲＡＭ１４）上のアドレスを、フロー実行部１３１に返信すれば良い。
【０１３７】
フロー実行部１３１は、生成された配信コンポーネント１３３１に対して、データを指定して処理の実行を要求する（ステップＳ１４１８）。なお、ここで指定されたデータのデータ型は「LocalFilePath」である。
【０１３８】
次に、配信コンポーネント１３３１は、フロー状態管理部１３６に対して、実行状態を「processing」に更新することを要求する（ステップＳ１４１９）。すると、フロー状態管理部１３６は、図１５（ｄ）に示すように、コンポーネント名「配信コンポーネント」の実行状態を「processing」に更新する。そして、フロー状態管理部１３６は、更新結果を配信コンポーネント１３３１に返信する。このように、各コンポーネントは、処理を実行する前に、フロー状態テーブル４０００に格納された状態情報に含まれる実行状態を「processing」に更新する。
【０１３９】
配信コンポーネント１３３１は、型変換管理部１３４に対して、型変換を要求する（ステップＳ１４２０）。ここで、当該型変換要求には、データと、配信コンポーネント１３３１が扱うことができるデータ型を示す「LocalFilePath」の指定とが含まれる。
【０１４０】
型変換管理部１３４は、受け取った型変換要求に含まれるデータのデータ型と、指定されたデータ型とが一致するか否かをチェックする（ステップＳ１４２１）。ここでは、受け取った型変換要求に含まれるデータのデータ型は「LocalFilePath」であり、指定されたデータ型も「LocalFilePath」であるから、一致するものと判断される。
【０１４１】
そして、型変換管理部１３４は、型変換要求に含まれていたデータを、そのまま配信コンポーネント１３３１に送信する（ステップＳ１４２２）。このように、データ型チェック（ステップＳ１４２１の処理）で両者のデータ型が一致する場合には、型変換管理部１３４は型変換の生成を行わない。
【０１４２】
配信コンポーネント１３３１は、型変換管理部１３４からデータを受け取ると、処理を実行する（ステップＳ１４２３）。すなわち、本実施形態では、配信コンポーネント１３３１は、ストレージサービスＡ連携部１６０１のファイル処理部１７０１に対して、共通Ｉ／Ｆ１７１１として定義されているファイル保存のＡＰＩを用いて、データの配信実行を要求する。より具体的には、配信コンポーネント１３３１は、ストレージサービスＡ連携部１６０１のファイル処理部１７０１に対して、図５（ａ）に示されるようにＡＰＩとして「service-a/process/folder」を用いてデータの配信実行を要求する。これにより、ストレージサービスＡのフォルダ「FolderB」に、ファイル名「test」の電子ファイル（スキャンにより生成された電子ファイルに対してＯＣＲ処理した電子ファイル）が保存される。そして、処理結果がストレージサービスＡ連携部１６０１から配信コンポーネント１３３１に返信される。
【０１４３】
次に、配信コンポーネント１３３１は、フロー状態管理部１３６に対して、実行状態を「completed」に更新することを要求する（ステップＳ１４２４）。すると、フロー状態管理部１３６は、図１５（ｅ）に示すように、コンポーネント名「ＯＣＲコンポーネント」の実行状態を「completed」に更新する。そして、フロー状態管理部１３６は、更新結果をＯＣＲコンポーネント１３３３に返信する。このように、各コンポーネントは、処理の実行が完了すると、フロー状態テーブル４０００に格納された状態情報に含まれる実行状態を「completed」に更新する。これにより、コンポーネントの処理の実行が完了したことが管理される。
【０１４４】
なお、各コンポーネントは、例えば、処理の実行中にエラーが発生した場合は、フロー状態テーブル４０００に格納された状態情報に含まれる実行状態を「error」に更新する。
【０１４５】
また、配信コンポーネント１３３１は、フロー状態管理部１３６から更新結果を受け取ると、データをフロー実行部１３１に返信する。なお、ここで返信されるデータは、ステップＳ１４２３で実行された配信コンポーネント１３３１の処理結果である。
【０１４６】
フロー実行部１３１は、フロー状態管理部１３６に対して、処理ＩＤ「10009」の一連の処理を構成する各コンポーネントの処理の実行が完了したか否かを確認するための状態確認を要求する（ステップＳ１４２５）。すると、フロー状態管理部１３６は、フロー状態テーブル４０００に格納された処理ＩＤ「10009」の各状態情報に含まれる実行状態が「completed」であるか否かを確認し、確認結果をフロー実行部１３１に返信する。すなわち、フロー状態管理部１３６は、処理ＩＤ「10009」の状態情報に含まれるすべての実行状態が「completed」である場合、処理内容に基づく一連の処理が完了したことを示す確認結果を返信する。一方で、フロー状態管理部１３６は、処理ＩＤ「10009」の状態情報に、例えば実行状態「error」が含まれる場合、エラーが発生したことを示す確認結果を返信する。
【０１４７】
このように、フロー状態管理部１３６は、フロー実行部１３１からの要求に応じて、処理内容に従って実行される各コンポーネントの処理が完了したか否かを当該フロー実行部１３１に返信する。これにより、フロー実行部１３１は、処理内容に基づく一連の処理が完了したか否かを確認することができる。
【０１４８】
そして、フロー実行部１３１は、フロー状態管理部１３６から処理が完了したことを示す確認結果を受け取った場合、処理結果をブラウザ２１０に返信する。なお、フロー実行部１３１は、フロー状態管理部１３６からエラーが発生したこと示す確認結果を受け取った場合、エラーが発生したことを示す処理結果をブラウザ２１０に返信する。
【０１４９】
≪クラウドプリントサービスの全体処理≫
以降では、画像形成装置２０のユーザが本実施形態に係るクラウドプリントサービスを利用する場合の全体的な処理について、図１６を参照しながら説明する。図１６は、第１の実施形態に係るクラウドプリントサービスの全体処理の一例のシーケンスを示す図である。
【０１５０】
まず、画像形成装置２０のユーザは、ブラウザ２１０を用いて、サービス提供システム１０により提供されるサービスの一覧を取得するための操作を行う。すると、画像形成装置２０は、サービスの一覧の取得要求をサービス提供システム１０のサービス処理部１１０に送信する（ステップＳ１６０１）。そして、サービス処理部１１０のアプリ管理部１２０は、当該取得要求を受け取ると、サービス提供システム１０により提供されるサービスの一覧を画像形成装置２０に送信する。
【０１５１】
ユーザは、画像形成装置２０の操作パネル２２に表示されたサービスの一覧から、自身が利用を所望するサービスを選択する。すると、ブラウザ２１０は、選択されたサービスを実現するためのアプリ情報１０００のアプリＩＤをアプリ管理部１２０に送信する（ステップＳ１６０２）。ここでは、ユーザによりサービス名「クラウドプリントサービス」の利用が選択されたものとする。したがって、ブラウザ２１０は、アプリ情報１０００２のアプリＩＤ「app002」をアプリ管理部１２０に送信する。
【０１５２】
そして、アプリ管理部１２０は、ブラウザ２１０から受け取ったアプリＩＤ「app002」のアプリ情報１０００２に含まれる画面定義に基づきＨＴＭＬ形式のアプリ画面を生成し、ブラウザ２１０に返信する。
【０１５３】
ブラウザ２１０は、アプリ管理部１２０からアプリ画面を受け取ると、表示用情報の取得をデータＩ／Ｆ部１４０に要求する（ステップＳ１６０３）。本実施形態では、ブラウザ２１０は、クラウドプリントサービスを用いた印刷対象の候補となるストレージサービスＡの電子ファイルの一覧の取得を、データＩ／Ｆ部１４０に要求する。このような要求は、図６（ｂ）のデータ定義部１２０１に記述されている「"data_source"」に定義されているＵＲＬ「http://sample.xxx.co.jp/service-a/data/files」にＨＴＴＰリクエストを送信することで行うことができる。
【０１５４】
次に、データＩ／Ｆ部１４０は、ブラウザ２１０から表示用情報の取得要求を受け取ると、当該要求を対応するストレージサービス連携部１６０のデータ処理部１８０に送信する（ステップＳ１６０４）。
【０１５５】
データ処理部１８０は、データＩ／Ｆ部１４０から要求を受け取ると、当該要求に含まれるＵＲＬに基づき、対応する処理要求を外部ストレージシステム３０に送信する（ステップＳ１６０５）。本実施形態では、データ処理部１８０は、上記のＵＲＬに含まれる「/service-a/data/files」に基づき、ストレージサービスＡにファイル一覧の取得を要求する。すると、ブラウザ２１０は、ストレージサービスＡ連携部１６０１を介して、ファイル一覧を受信する。ファイル一覧は、本実施形態のクラウドプリントサービスにおいて、印刷対象の候補となるストレージサービスＡに保存されている電子ファイルのファイル名及びファイルＩＤ等の情報である。
【０１５６】
次に、ブラウザ２１０は、アプリ管理部１２０から受け取ったアプリ画面と、外部ストレージシステム３０から受け取ったファイル一覧とに基づき、例えば図１７（ａ）に示すようなアプリ画面５０００を、操作パネル２２に表示させる（ステップＳ１６０６）。
【０１５７】
ここで、図１７（ａ）で示すクラウドプリントサービスを利用するためのアプリ画面５０００は、印刷対象のファイルを選択するためのファイル選択欄５００１、及びプリント実行ボタン５００２を含む。このうち、ファイル選択欄５００１は、図１７（ｂ）に示すように、ＨＴＭＬソースコード５１０１で記述されている。このようなＨＴＭＬソースコード５１０１は、アプリ管理部１２０により、図６（ｂ）に示すデータ定義部１２０１及び図７（ｂ）に示すレイアウト定義部１４０１に基づいて生成される。
【０１５８】
ただし、ＨＴＭＬソースコード４１０１に指定されている「option」の設定値は、外部ストレージシステム３０から取得したファイル一覧に基づき、ブラウザ２１０で設定される。
【０１５９】
次に、ユーザは、図１７（ａ）のアプリ画面５０００のファイル選択欄５００１から所望のファイルを選択して、プリント実行ボタン５００２を押下する（ステップＳ１６０７）。ここで、ユーザはファイル選択欄５００１から「FileA」を選択して、プリント実行ボタン５００２を押下したものとする。
【０１６０】
続いて、ブラウザ２１０は、クラウドプリントサービスの処理の実行要求をロジック処理部１３０に送信する（ステップＳ１６０８）。ここで、当該実行要求には、アプリＩＤ「app002」と、当該アプリＩＤのアプリ情報１０００に含まれる処理内容のフローＩＤ「flow2」と、ファイル選択欄５００１から選択されたファイル「FileA」のファイルＩＤ「file_id_a」とが含まれる。
【０１６１】
そして、ロジック処理部１３０は、処理の実行要求を受け取ると、アプリ管理部１２０を介して、当該処理の実行要求に含まれるアプリＩＤ及びフローＩＤから処理内容を取得し、当該処理内容に従って処理を実行する（ステップＳ１６０９）。すなわち、本実施形態に係るクラウドプリントサービスでは、ストレージサービスＡから印刷対象の電子ファイルを取得（ダウンロード）した後、当該電子ファイルを画像形成装置２０が印刷可能な印刷データに変換（印刷変換）する。このステップＳ１６０９の処理の詳細については、後述する。ここでは、ロジック処理部１３０は、ファイル「FileA」のファイルＩＤ「file_id_a」を含むファイル取得実行の要求を、ストレージサービスＡ連携部１６０１のファイル処理部１７０１に送信したものとして説明を続ける。
【０１６２】
ファイル処理部１７０は、ロジック処理部１３０からファイル取得実行の要求を受け取ると、共通Ｉ／Ｆ１７１又は固有Ｉ／Ｆ１７２に定義されているＡＰＩを利用して、該当の外部ストレージシステム３０に処理を要求する（ステップＳ１６１０）。本実施形態では、ファイル処理部１７０１の共通Ｉ／Ｆ１７１１に定義されているストレージサービスＡにファイルを取得するためのＡＰＩ「/service-a/process/file」を用いて、ファイル「FileA」を取得（ダウンロード）する。そして、ロジック処理部１３０は、取得したファイル「FileA」を、画像形成装置２０で印刷可能なデータ形式である印刷データに変換した後、画像形成装置２０に返信する。
【０１６３】
画像形成装置２０のプリンタ２５は、ロジック処理部１３０から印刷データを受け取ると、当該印刷データを印刷する（ステップS１６１１）。これにより、本実施形態に係るクラウドプリントサービスが完了する。
【０１６４】
≪ファイル取得実行から印刷変換までの処理≫
以降では、図１６のステップＳ１６０９の処理の詳細について、図１８を参照しながら説明する。図１８は、第１の実施形態に係るファイル取得実行から印刷変換までの処理の一例のシーケンスを示す図である。
【０１６５】
まず、フロー実行部１３１は、ブラウザ２１０からクラウドプリントサービスの処理の実行要求を受け取る（ステップＳ１８０１）。ここで、当該実行要求には、アプリＩＤ「app002」と、当該アプリＩＤのアプリ情報１０００に含まれる処理内容のフローＩＤ「flow2」と、選択された印刷対象のファイルのファイルＩＤ「file_id_a」とが含まれる。
【０１６６】
なお、当該ファイルＩＤは、データ型が「InputStream」（すなわち、ストリームデータ）としてブラウザ２１０から渡されるものとする。
【０１６７】
フロー実行部１３１は、当該実行要求を受け取ると、アプリ管理部１２０に処理内容の取得を要求する（ステップＳ１８０２）。ここで、当該処理内容の取得要求には、アプリＩＤ「app002」と、フローＩＤ「flow2」とが含まれる。そして、フロー実行部１３１は、アプリ管理部１２０からアプリＩＤ「app002」に対応するアプリ情報１０００２に含まれるフローＩＤ「flow2」の処理内容を取得する。すなわち、フロー実行部１３１は、図８（ｂ）に示す処理内容を取得する。
【０１６８】
ここで、フロー実行部１３１は、アプリ管理部１２０から処理内容を取得すると、当該処理内容に基づく一連の処理を一意に識別する処理ＩＤを生成する。本実施形態では、処理ＩＤ「10010」が生成されたものとして説明する。
【０１６９】
フロー実行部１３１は、フロー状態管理部１３６に対して、状態情報の生成を要求する（ステップＳ１８０３）。すると、フロー状態管理部１３６は、図１９（ａ）に示すように、フローＩＤ「flow2」の処理内容に従って実行される各コンポーネントのコンポーネント名を、処理ＩＤ「10010」及び実行状態「accepted」と関連付けた状態情報を生成する。
【０１７０】
そして、フロー状態管理部１３６は、生成した状態情報をフロー状態テーブル４０００に格納して、生成結果をフロー実行部１３１に返信する。このように、本実施形態に係るサービス提供システム１０は、処理内容が取得されると、当該処理内容に従って実行される各コンポーネントの実行状態が「accepted」である状態情報を生成して、フロー状態テーブル４０００に格納する。
【０１７１】
フロー実行部１３１は、取得した処理内容に従ってコンポーネントの取得を、コンポーネント管理部１３２に要求する（ステップＳ１８０４）。より具体的には、フロー実行部１３１は、図８（ｂ）に示す処理内容の「From("file:input")」の次に指定されている「.to("storage:receive_from_file?type=service-a")」に基づき、取得コンポーネント１３３２の取得を、コンポーネント管理部１３２に要求する。
【０１７２】
なお、ここで指定されている処理内容のうち「?type=service-a」の部分はオプションパラメータと称され、取得コンポーネント１３３２の処理の電子ファイルの取得（ダウンロード）先ストレージサービスが「ストレージサービスＡ」であることを示している。また、上記の指定されている処理内容に、上記のステップＳ１８０１の実行要求に含まれる印刷対象のファイルである「FileA」のファイルＩＤをオプションパラメータとして付加して「.to("storage:receive_from_file?type=service-a&file_id_a")」としても良い。
【０１７３】
コンポーネント管理部１３２は、取得コンポーネント１３３２の取得要求を受け取ると、取得コンポーネント１３３２を生成する（ステップＳ１８０５）。取得コンポーネント１３３２の生成は、コンポーネント共通Ｉ／Ｆ１３３０に定義されたコンポーネントを生成するためのＡＰＩを用いて行うことができる。そして、取得コンポーネント１３３２が生成されると、コンポーネント管理部１３２は、取得コンポーネント１３３２をフロー実行部１３１に返信する。これは、例えば、コンポーネント管理部１３２は、ＯＣＲコンポーネント１３３３が展開されたメモリ（例えばＲＡＭ１４）上のアドレスを、フロー実行部１３１に返信すれば良い。
【０１７４】
フロー実行部１３１は、生成された取得コンポーネント１３３２に対して、データを指定して処理の実行を要求する（ステップＳ１８０６）。なお、ここで指定されるデータは、データ型が「InputStream」としてブラウザ２１０から渡された、印刷対象のファイルのファイルＩＤである。
【０１７５】
すなわち、フロー実行部１３１は、ブラウザ２１０からデータ型「InputStream」として渡されるファイルＩＤを、単に「データ」として（データ型を意識することなく）、取得コンポーネント１３３２に渡して処理の実行を要求する。図１８では、このようにデータ型を意識することなく渡されるファイルＩＤや電子ファイル等を、単に「データ」と表す。
【０１７６】
次に、取得コンポーネント１３３２は、フロー状態管理部１３６に対して、実行状態を「processing」に更新することを要求する（ステップＳ１８０７）。すると、フロー状態管理部１３６は、図１９（ｂ）に示すように、コンポーネント名「取得コンポーネント」の実行状態を「processing」に更新する。そして、フロー状態管理部１３６は、更新結果を取得コンポーネント１３３２に返信する。このように、各コンポーネントは、処理を実行する前に、フロー状態テーブル４０００に格納された状態情報に含まれる実行状態を「processing」に更新する。
【０１７７】
取得コンポーネント１３３２は、型変換管理部１３４に対して、型変換を要求する（ステップＳ１８０８）。ここで、当該型変換要求には、データと、取得コンポーネント１３３２が扱うことができるデータ型を示す「LocalFilePath」の指定とが含まれる。
【０１７８】
型変換管理部１３４は、受け取った型変換要求に含まれるデータのデータ型と、指定されたデータ型とが一致するか否かをチェックする（ステップＳ１８０９）。ここでは、受け取った型変換要求に含まれるデータのデータ型は「InputStream」である一方、指定されたデータ型は「LocalFilePath」であるから、一致しないものと判断される。
【０１７９】
すると、型変換管理部１３４は、型変換テーブル３０００を参照して、「InputStream」を「LocalFilePath」に変換するための型変換を特定して（ここでは、第１の型変換１３５１が特定される）、当該特定された型変換を生成する（ステップＳ１８１０）。
【０１８０】
次に、型変換管理部１３４は、生成された第１の型変換１３５１に対して、データを指定して型変換処理の実行を要求する（ステップＳ１８１１）。すると、第１の型変換１３５１は、指定されたデータのデータ型を「InputStream」から「LocalFilePath」に変換して（ステップＳ１８１２）、当該変換後のデータを型変換管理部１３４に返信する。そして、型変換管理部１３４は、型変換後のデータを取得コンポーネント１３３２に送信する（ステップＳ１８１３）。
【０１８１】
取得コンポーネント１３３２は、型変換後のデータを受け取ると、処理を実行する（ステップＳ１８１４）。すなわち、本実施形態では、取得コンポーネント１３３２は、ストレージサービスＡ連携部１６０１のファイル処理部１７０１に対して、共通Ｉ／Ｆ１７１１として定義されているファイル取得のＡＰＩを用いて、ファイル取得実行を要求する。より具体的には、取得コンポーネント１３３２は、ストレージサービスＡ連携部１６０１のファイル処理部１７０１に対して、図５（ａ）に示されるようにＡＰＩとして「service-a/process/file」を用いてファイル取得の実行を要求する。これにより、ストレージサービスＡからファイルＩＤ「file_id_a」の電子ファイルが取得（ダウンロード）される。
【０１８２】
次に、取得コンポーネント１３３２は、フロー状態管理部１３６に対して、実行状態を「completed」に更新することを要求する（ステップＳ１８１５）。すると、フロー状態管理部１３６は、図１９（ｃ）に示すように、コンポーネント名「取得コンポーネント」の実行状態を「completed」に更新する。そして、フロー状態管理部１３６は、更新結果を取得コンポーネント１３３２に返信する。このように、各コンポーネントは、処理の実行が完了すると、フロー状態テーブル４０００に格納された状態情報に含まれる実行状態を「completed」に更新する。これにより、コンポーネントの処理の実行が完了したことが管理される。
【０１８３】
なお、各コンポーネントは、例えば、処理の実行中にエラーが発生した場合は、フロー状態テーブル４０００に格納された状態情報に含まれる実行状態を「error」に更新する。
【０１８４】
また、取得コンポーネント１３３２は、フロー状態管理部１３６から更新結果を受け取ると、データをフロー実行部１３１に返信する。なお、ここで返信されるデータは、ストレージサービスＡから取得されたファイルＩＤ「file_id_a」の電子ファイルを示すパス又はアドレスである（すなわち、返信されるデータのデータ型は「LocalFilePath」である。）。
【０１８５】
次に、フロー実行部１３１は、取得した処理内容に従ってコンポーネントの取得を、コンポーネント管理部１３２に要求する（ステップＳ１８１６）。より具体的には、フロー実行部１３１は、図８（ｂ）に示す処理内容の「.to("storage:receive_from_file? type=service-a")」の次に指定されている「.to("process:conv")」に基づき、印刷変換コンポーネント１３３４の取得を、コンポーネント管理部１３２に要求する。
【０１８６】
コンポーネント管理部１３２は、印刷変換コンポーネント１３３４の取得要求を受け取ると、印刷変換コンポーネント１３３４を生成する（ステップＳ１８１７）。印刷変換コンポーネント１３３４の生成は、コンポーネント共通Ｉ／Ｆ１３３０に定義されたコンポーネントを生成するためのＡＰＩを用いて行うことができる。そして、印刷変換コンポーネント１３３４が生成されると、コンポーネント管理部１３２は、印刷変換コンポーネント１３３４をフロー実行部１３１に返信する。これは、例えば、コンポーネント管理部１３２は、印刷変換コンポーネント１３３４が展開されたメモリ（例えばＲＡＭ１４）上のアドレスを、フロー実行部１３１に返信すれば良い。
【０１８７】
フロー実行部１３１は、生成された印刷変換コンポーネント１３３４に対して、データを指定して処理の実行を要求する（ステップＳ１８１８）。なお、ここで指定されたデータのデータ型は「LocalFilePath」である。
【０１８８】
次に、印刷変換コンポーネント１３３４は、フロー状態管理部１３６に対して、実行状態を「processing」に更新することを要求する（ステップＳ１８１９）。すると、フロー状態管理部１３６は、図１９（ｄ）に示すように、コンポーネント名「印刷変換コンポーネント」の実行状態を「processing」に更新する。そして、フロー状態管理部１３６は、更新結果を印刷変換コンポーネント１３３４に返信する。このように、各コンポーネントは、処理を実行する前に、フロー状態テーブル４０００に格納された状態情報に含まれる実行状態を「processing」に更新する。
【０１８９】
印刷変換コンポーネント１３３４は、型変換管理部１３４に対して、型変換を要求する（ステップＳ１８２０）。ここで、当該型変換要求には、データと、印刷変換コンポーネント１３３４が扱うことができるデータ型を示す「File」の指定とが含まれる。
【０１９０】
型変換管理部１３４は、受け取った型変換要求に含まれるデータのデータ型と、指定されたデータ型とが一致するか否かをチェックする（ステップＳ１８２１）。ここでは、受け取った型変換要求に含まれるデータのデータ型は「LocalFilePath」である一方、指定されたデータ型は「File」であるから、一致しないものと判断される。
【０１９１】
すると、型変換管理部１３４は、型変換テーブル３０００を参照して、「LocalFilePath」を「File」に変換するための型変換を特定して（ここでは、第２の型変換１３５２が特定される）、当該特定された型変換を生成する（ステップＳ１８２２）。
【０１９２】
次に、型変換管理部１３４は、生成された第２の型変換１３５２に対して、データを指定して型変換処理の実行を要求する（ステップＳ１８２３）。すると、第２の型変換１３５２は、指定されたデータのデータ型を「LocalFilePath」から「File」に変換して（ステップＳ１８２４）、当該変換後のデータを型変換管理部１３４に返信する。そして、型変換管理部１３４は、型変換後のデータを印刷変換コンポーネント１３３４に返信する（ステップＳ１８２５）。
【０１９３】
印刷変換コンポーネント１３３４は、型変換後のデータを受け取ると、処理を実行する（ステップＳ１８２６）。すなわち、データ型「File」のデータ（すなわち、電子ファイル）を、画像形成装置２０が印刷可能なデータ形式である印刷データに変換する処理を実行する。より具体的には、印刷変換コンポーネント１３３４は、ドキュメントサービス部１５０の印刷変換処理１５２に処理を要求し、印刷変換処理１５２がデータ（電子ファイル）に対して処理を実行する。
【０１９４】
次に、印刷変換コンポーネント１３３４は、フロー状態管理部１３６に対して、実行状態を「completed」に更新することを要求する（ステップＳ１８２７）。すると、フロー状態管理部１３６は、図１９（ｅ）に示すように、コンポーネント名「印刷変換コンポーネント」の実行状態を「completed」に更新する。そして、フロー状態管理部１３６は、更新結果を印刷変換コンポーネント１３３４に返信する。このように、各コンポーネントは、処理の実行が完了すると、フロー状態テーブル４０００に格納された状態情報に含まれる実行状態を「completed」に更新する。これにより、コンポーネントの処理の実行が完了したことが管理される。
【０１９５】
なお、各コンポーネントは、例えば、処理の実行中にエラーが発生した場合は、フロー状態テーブル４０００に格納された状態情報に含まれる実行状態を「error」に更新する。
【０１９６】
また、印刷変換コンポーネント１３３４は、フロー状態管理部１３６から更新結果を受け取ると、データをフロー実行部１３１に返信する。なお、ここで返信されるデータは、印刷データである。
【０１９７】
フロー実行部１３１は、フロー状態管理部１３６に対して、処理ＩＤ「10010」の一連の処理を構成する各コンポーネントの処理の実行が完了したか否かを確認するための状態確認を要求する（ステップＳ１８２８）。すると、フロー状態管理部１３６は、フロー状態テーブル４０００に格納された処理ＩＤ「10010」の各状態情報に含まれる実行状態が「completed」であるか否かを確認し、確認結果をフロー実行部１３１に返信する。すなわち、フロー状態管理部１３６は、処理ＩＤ「10010」の状態情報に含まれるすべての実行状態が「completed」である場合、処理内容に基づく一連の処理が完了したことを示す確認結果を返信する。一方で、フロー状態管理部１３６は、処理ＩＤ「10009」の状態情報に、例えば実行状態「error」が含まれる場合、エラーが発生したことを示す確認結果を返信する。
【０１９８】
このように、フロー状態管理部１３６は、フロー実行部１３１からの要求に応じて、処理内容に従って実行される各コンポーネントの処理が完了したか否かを当該フロー実行部１３１に返信する。これにより、フロー実行部１３１は、処理内容に基づく一連の処理が完了したか否かを確認することができる。
【０１９９】
そして、フロー実行部１３１は、フロー状態管理部１３６から処理が完了したことを示す確認結果を受け取った場合、処理結果として印刷データをブラウザ２１０に返信する。なお、フロー実行部１３１は、フロー状態管理部１３６からエラーが発生したこと示す確認結果を受け取った場合、エラーが発生したことを示す処理結果をブラウザ２１０に返信する。
【０２００】
以上のように、本実施形態に係るサービス提供システム１０では、各コンポーネントにより処理が実行される前後で当該コンポーネントの実行状態を更新する。そして、本実施形態に係るサービス提供システム１０では、フロー実行部１３１により、処理内容に基づく一連の処理が完了したか否かを確認し、確認結果に応じた処理結果を画像形成装置２０のブラウザ２１０に返信する。これにより、本実施形態に係るサービス提供システム１０では、処理内容に基づく一連の処理を実行する各コンポーネントの実行状態を管理することができる。
【０２０１】
［第２の実施形態］
次に、第２の実施形態に係る情報処理システム１について説明する。第２の実施形態に係る情報処理システム１に含まれるサービス提供システム１０は、ブラウザ２１０が搭載されていない画像形成装置２０からの要求も受け付ける点が第１の実施形態と異なる。なお、以降では、第１の実施形態と実質的に同一の機能を有する箇所及び同一の処理を行う箇所については、第１の実施形態と同一の符号を用いて、その説明を省略する。
【０２０２】
＜ソフトウェア構成＞
本実施形態に係る情報処理システム１の処理ブロックについて、図２０を参照しながら説明する。図２０は、第２の実施形態に係る情報処理システムの一例の処理ブロックを示す図である。
【０２０３】
画像形成装置２０は、例えばＣＰＵ２１１等により実行されるブラウザ２１０又はクライアントアプリケーション２２０を有する。ここで、ブラウザ２１０はＨＴＭＬを解釈できる一方で、クライアントアプリケーション２２０はＨＴＭＬを解釈することができないものとする。したがって、本実施形態に係るクライアントアプリケーション２２０は、サービス提供システム１０から受け取ったデータ定義に基づきアプリ画面を生成して、表示させる。
【０２０４】
サービス提供システム１０は、アプリ管理部１２０Ａの機能が異なる点、及び、さらに要求判断部１２１を有する点が第１の実施形態と異なる。
【０２０５】
要求判断部１２１は、画像形成装置２０から受け取った情報に基づき、送信元がブラウザ２１０か又はクライアントアプリケーション２２０かを判断する。
【０２０６】
アプリ管理部１２０Ａは、要求判断部１２１の判断結果に応じて、画像形成装置２０に対してアプリ画面又はデータ定義を返信する。すなわち、アプリ管理部１２０Ａは、要求判断部１２１により送信元がクライアントアプリケーション２２０であると判断された場合は、当該画像形成装置２０に対して、データ定義を返信する。
【０２０７】
＜処理の詳細＞
次に、第２の実施形態に係る情報処理システム１の処理の詳細について説明する。第２の実施形態では、図９を用いて説明したスキャン配信サービスの全体処理及び図１６を用いて説明したクラウドプリントサービスの全体処理において、画像形成装置２０にアプリ画面を表示させるまでの処理が異なる。したがって、第２の実施形態では、サービス一覧の取得からアプリ画面の表示までの処理について、図２１を参照しながら説明する。図２１は、第２の実施形態に係るアプリ画面の表示処理の一例のシーケンスを示す図である。
【０２０８】
まず、画像形成装置２０のユーザは、ブラウザ２１０又はクライアントアプリケーション２２０を用いて、サービス提供システム１０により提供されるサービスの一覧を取得するための操作を行う（ステップＳ２１０１）。すると、サービス処理部１１０の要求判断部１２１は、サービス提供システム１０により提供されるサービスの一覧を、アプリ管理部１２０Ａから取得して（ステップＳ２１０２）、画像形成装置２０に返信する。これにより、画像形成装置２０の操作パネル２２には、サービス提供システム１０により提供されるサービスの一覧が表示される。
【０２０９】
ユーザは、画像形成装置２０の操作パネル２２に表示されたサービスの一覧から自身が利用を所望するサービスを選択する。すると、ブラウザ２１０又はクライアントアプリケーション２２０は、選択されたサービスを実現するためのアプリ情報１０００のアプリＩＤを要求判断部１２１に送信する（ステップＳ２１０３）。
【０２１０】
すると、要求判断部１２１は、送信元がブラウザ２１０か又はクライアントアプリケーション２２０かを判断する（ステップＳ２１０４）。これは、要求判断部１２１は、例えば、Ｕｓｅｒ  Ａｇｅｎｔに基づき判断することができる。以降では、要求判断部１２１により送信元がブラウザ２１０であると判断された場合、ステップＳ２１０５の処理が実行される一方、送信元がクライアントアプリケーション２２０であると判断された場合、ステップＳ２１０６及びＳ２１０７の処理が実行される。
【０２１１】
要求判断部１２１により送信元がブラウザ２１０であると判断された場合、要求判断部１２１は、アプリ管理部１２０Ａに対してＨＴＭＬのアプリ画面の取得を要求する（ステップＳ２１０５）。なお、当該要求には、上記のステップＳ２１０３で選択されたサービスを実現するためのアプリ情報１０００のアプリＩＤが含まれる。すると、アプリ管理部１２１Ａは、当該要求に含まれるアプリＩＤのアプリ情報１０００に含まれる画面定義に基づきＨＴＭＬ形式のアプリ画面を生成し、要求判断部１２１を介して、ブラウザ２１０に送信する。
【０２１２】
一方、送信元がクライアントアプリケーション２２０であると判断された場合、要求判断部１２１は、アプリ管理部１２０Ａに対してＪＳＯＮ（JavaScript Object Notation）形式等の汎用的なデータ形式でデータ定義の取得を要求する（ステップＳ２１０６）。なお、当該要求には、上記のステップＳ２１０３で選択されたサービスを実現するためのアプリ情報１０００のアプリＩＤが含まれる。すると、アプリ管理部１２１Ａは、当該要求に含まれるアプリＩＤのアプリ情報１０００に含まれるデータ定義を、要求判断部１２１を介して、ＪＳＯＮ形式でクライアントアプリケーション２２０に送信する。このように、画像形成装置２０にＨＴＭＬを解釈することができないクライアントアプリケーション２２０が搭載されている場合、サービス提供システム１０は、画面定義に含まれるデータ定義のみを返信する。
【０２１３】
そして、画像形成装置２０のクライアントアプリケーション２２０は、受け取ったＪＳＯＮ形式のデータ定義に基づき、アプリ画面を生成する（ステップＳ２１０７）。
【０２１４】
続いて、画像形成装置２０は、操作パネル２２にアプリ画面を表示させる（ステップＳ２１０８）。ここで、画像形成装置２０にブラウザ２１０が搭載されている場合は、上記のステップＳ２１０５で受け取ったＨＴＭＬ形式のアプリ画面を表示させる。
【０２１５】
一方、画像形成装置２０にクライアントアプリケーション２２０が搭載されている場合は、上記のステップＳ２１０７で生成したアプリ画面を表示させる。これにより、画像形成装置２０には必ずしもブラウザ２１０が搭載されている必要はなくなる。したがって、ユーザは、画像形成装置２０に、サービス提供システム１０により提供されるサービスを利用するための任意のクライアントアプリケーション２２０を搭載させることができる。
【０２１６】
＜まとめ＞
以上のように、第１の実施形態に係る情報処理システム１によれば、サービス提供システム１０により外部サービスと連携したサービスを画像形成装置２０に提供することができる。
【０２１７】
また、サービス提供システム１０では、連携先の外部サービスの追加・変更等を容易に行うことができる。さらに、サービス提供システム１０は、画像形成装置２０に提供するサービスの追加・変更等（すなわち、アプリ情報１０００の追加・変更等）を容易に行うことができる。これらにより、第１の実施形態に係るサービス提供システム１０は、サービスの追加・変更等に伴う開発・維持に要する工数を削減することができる。
【０２１８】
第２の実施形態に係る情報処理システム１によれば、サービス提供システム１０は、ブラウザ２１０が搭載されていない画像形成装置２０に対してもサービスを提供することができる。したがって、第２の実施形態に係るサービス提供システム１０によれば、一般にブラウザが搭載されていない多様な電子機器に対してサービスを提供することができる。
【０２１９】
本発明は、具体的に開示された上記の実施形態に限定されるものではなく、特許請求の範囲から逸脱することなく、種々の変形や変更が可能である。
【符号の説明】
【０２２０】
１        情報処理システム
１０      サービス提供システム
２０      画像形成装置
３０      外部ストレージシステム
１１０    サービス処理部
１２０    アプリ管理部
１３０    ロジック処理部
１３１    フロー実行部
１３２    コンポーネント管理部
１３３    コンポーネント群
１３４    型変換管理部
１３５    型変換群
１３６    フロー状態管理部
１４０    データＩ／Ｆ部
１５０    ドキュメントサービス部
１５１    ＯＣＲ処理
１５２    印刷変換処理
１６０    ストレージサービス連携部
１７０    ファイル処理部
１８０    データ処理部
１９０    アプリ情報記憶部
１０００  アプリ情報
３０００  型変換テーブル
４０００  フロー状態テーブル
【先行技術文献】
【特許文献】
【０２２１】
【特許文献１】特開２０１４−０３２６５９号公報
【図１】
2017033218.tif 000003
【図２】
2017033218.tif 000004
【図３】
2017033218.tif 000005
【図４】
2017033218.tif 000006
【図５】
2017033218.tif 000007
【図６】
2017033218.tif 000008
【図７】
2017033218.tif 000009
【図８】
2017033218.tif 000010
【図９】
2017033218.tif 000011
【図１０】
2017033218.tif 000012
【図１１】
2017033218.tif 000013
【図１２】
2017033218.tif 000014
【図１３】
2017033218.tif 000015
【図１４】
2017033218.tif 000016
【図１５】
2017033218.tif 000017
【図１６】
2017033218.tif 000018
【図１７】
2017033218.tif 000019
【図１８】
2017033218.tif 000020
【図１９】
2017033218.tif 000021
【図２０】
2017033218.tif 000022
【図２１】
2017033218.tif 000023