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