以下、本発明の実施形態について図面を参照しながら詳細に説明する。
<システム構成>
図1は、本実施形態に係る情報処理システムの一例の構成図である。図1に示される情報処理システム1において、サービス提供環境E2、ユーザ環境E1及び外部ストレージシステム40等は、インターネット等の広域的なネットワークN1を介して通信可能に接続されている。
サービス提供環境E2は、ネットワークを介してクラウドサービス等の外部サービスを提供するシステム環境である。なお、本実施の形態では、外部サービスの具体例としてクラウドサービスを採用して説明するが、ASP(Application Service Provider)によって提供されるサービスやWebサービス等、ネットワークを介して提供されるサービスに関して本実施の形態が適用されてもよい。
サービス提供環境E2は、一台以上の情報処理装置で実現されるサービス提供システム20を有する。サービス提供システム20は、ネットワークを介して所定のサービスを提供する。例えば、サービス提供システム20は、外部ストレージシステム40に保存されている電子データを、ユーザ環境E1の画像形成装置10で印刷するサービス(クラウドプリントサービス)を提供する。本実施形態では、サービス提供環境E2は、クラウドサービスの一例として、外部ストレージシステム40と連携して、上記のようなクラウドプリントサービスを提供するものとして説明する。ただし、サービス提供システム20が提供するサービスはクラウドプリントサービスに限られず、例えば、外部ストレージシステム40に保存されている電子データを、ユーザ環境E1のプロジェクタで投影するサービス等であってもよい。なお、サービス提供システム20の全部又は一部は、ユーザ環境E1に設置されていてもよい。すなわち、サービス提供システム20を構成する情報処理装置の全部又は一部は、ユーザ環境E1に包含されていてもよい。
ユーザ環境E1は、例えば画像形成装置10を使用するユーザである企業等におけるシステム環境である。ユーザ環境E1において、一台以上の画像形成装置10と一台以上のPC端末30とはLAN(Local Area Network)等のネットワークを介して接続されている。
本実施形態に係る画像形成装置10は、プリント機能を有する画像形成装置である。プリント機能以外に、スキャン、コピー、又はファックス(FAX)通信等の機能を有する複合機が画像形成装置10として用いられてもよい。
PC端末30は、ユーザ環境E1における画像形成装置10の利用者が使用する端末である。PC端末30は、PC(Personal Computer)の他、PDA(Personal Digital Assistance)、タブレット型端末、スマートフォン、携帯電話等が用いられてもよい。
外部ストレージシステム40は、ネットワークを介してストレージサービス(又はオンラインストレージ)と呼ばれるクラウドサービスを提供するコンピュータシステムである。ストレージサービスとは、外部ストレージシステム40のストレージの記憶領域を貸し出すサービスである。本実施形態では、外部ストレージシステム40によって貸し出される記憶領域は、サービス提供システム20によって提供されるクラウドプリントサービスにおいて、印刷対象となる電子データの取得(ダウンロード)先の候補である。以降では、複数の外部ストレージシステム40について、各々を区別するときは、外部ストレージシステム401、外部ストレージシステム402、・・・と記載する。また、外部ストレージシステム401によって提供されるサービスの名称(サービス名)を「ストレージサービスA」、ストレージシステム402によって提供されるサービス名を「ストレージサービスB」、・・・とする。
なお、外部ストレージシステム40は、複数台の情報処理装置によって実現されるシステムであってもよい。また、図1に示される情報処理システム1の構成は一例であって、他の構成であってもよい。例えば、上述したように、ユーザ環境E1は、画像形成装置10に加えて又は画像形成装置10に代えて、プロジェクタ、電子黒板等の各種電子機器を有していてもよい。換言すれば、ユーザ環境E1における機器は、画像形成装置10に限られず、サービス提供システム20を介して外部ストレージシステム40から取得した電子データに基づき、印刷、表示、投影等の所定の処理を行うものであればよい。
<ハードウェア構成>
≪サービス提供システム及びPC端末≫
図1に示されるサービス提供システム20及びPC端末30は、例えば図2に示されるようなハードウェア構成のコンピュータにより実現される。図2は、コンピュータの一例のハードウェア構成図である。図2のコンピュータ100は、入力装置101と、表示装置102と、外部I/F103と、RAM(Random Access Memory)104と、ROM(Read Only Memory)105と、CPU(Central Processing Unit)106と、通信I/F107と、HDD(Hard Disk Drive)108とを備え、それぞれがバスBで接続されている。
入力装置101はキーボードやマウス、タッチパネル等を含み、ユーザが各操作信号を入力するのに用いられる。表示装置102はディスプレイ等を含み、コンピュータ100による処理結果を表示する。なお、入力装置101及び表示装置102は必要なときに接続して利用する形態であってもよい。
通信I/F107はコンピュータ100をネットワークN1に接続するインタフェースである。これにより、コンピュータ100は通信I/F107を介してデータ通信を行うことができる。
また、HDD108は、プログラムやデータを格納している不揮発性の記憶装置の一例である。格納されるプログラムやデータには、コンピュータ100全体を制御する基本ソフトウェアであるOS(Operating System)、及びOS上において各種機能を提供するアプリケーションソフトウェア等がある。なお、コンピュータ100はHDD108に替え、記憶媒体としてフラッシュメモリを用いるドライブ装置(例えばソリッドステートドライブ:SSD)を利用するものであってもよい。
HDD108は格納しているプログラムやデータを所定のファイルシステム及び/又はDBにより管理している。外部I/F103は、外部装置とのインタフェースである。外部装置には、記録媒体103a等がある。
これにより、コンピュータ100は外部I/F103を介して記録媒体103aの読み取り及び/又は書き込みを行うことができる。記録媒体103aにはフレキシブルディスク、CD、DVD、SDメモリカード、USBメモリ等がある。
ROM105は、電源を切ってもプログラムやデータを保持することができる不揮発性の半導体メモリ(記憶装置)である。ROM105にはコンピュータ100の起動時に実行されるBIOS(Basic Input/Output System)、OS設定、及びネットワーク設定等のプログラムやデータが格納されている。RAM104はプログラムやデータを一時保持する揮発性の半導体メモリ(記憶装置)である。
CPU106は、ROM105やHDD108等の記憶装置からプログラムやデータをRAM104上に読み出し、処理を実行することで、コンピュータ100全体の制御や機能を実現する演算装置である。本実施形態に係るサービス提供システム20及びPC端末30はコンピュータ100のハードウェア構成により、後述する各種処理を実現できる。
≪画像形成装置≫
図1に示される画像形成装置10は、例えば図3に示されるようなハードウェア構成により実現される。図3は、本実施形態に係る画像形成装置の一例のハードウェア構成図である。図3に示される画像形成装置10は、コントローラ201と、操作パネル202と、外部I/F203と、通信I/F204と、プリンタ205とを備える。
コントローラ201はCPU211と、RAM212と、ROM213と、NVRAM214と、HDD215とを備える。ROM213は、各種プログラムやデータが格納されている。RAM212はプログラムやデータを一時保持する。NVRAM214は、例えば設定情報等が格納されている。また、HDD215は各種プログラムやデータが格納されている。
CPU211は、ROM213やNVRAM214、HDD215等からプログラムやデータ、設定情報等をRAM212上に読み出し、処理を実行することで、画像形成装置10全体の制御や機能を実現する。
操作パネル202はユーザからの入力を受け付ける入力部と、表示を行う表示部とを備えている。外部I/F203は外部装置とのインタフェースである。外部装置には、記録媒体203a等がある。これにより、画像形成装置10は外部I/F203を介して記録媒体203aの読み取り及び/又は書き込みを行うことができる。記録媒体203aにはICカード、フレキシブルディスク、CD、DVD、SDメモリカード、USBメモリ等がある。
通信I/F204は、画像形成装置10をネットワークN1に接続するインタフェースである。これにより、画像形成装置10は通信I/F204を介してデータ通信を行うことができる。プリンタ205は印刷データを印刷するための印刷装置である。本実施形態に係る画像形成装置10は上記ハードウェア構成により、後述する各種処理を実現できる。
<ソフトウェア構成>
本実施形態に係る情報処理システム1は、例えば図4に示されるような処理ブロックにより実現することができる。図4は、本実施形態に係る情報処理システムの一例の処理ブロック図である。なお、図4の情報処理システム1において、本実施形態の説明に不要な処理ブロックについては図示を省略している。
画像形成装置10は、例えばCPU211等により実現される1つ以上のクライアントアプリ11を有する。クライアントアプリ11は、サービス提供システム20と連携させるために、画像形成装置10にインストールされる必要のあるアプリケーションプログラムである。クライアントアプリ11は、後述するサーバアプリ22と連携し、利用できるストレージサービスの表示やストレージサービスから電子データを取得するための要求を行う。また、クライアントアプリ11は、ストレージサービスから取得した電子データの印刷等を行う。なお、「クライアントアプリ」という用語は、サービス提供システム20側にインストールされる必要のあるアプリケーションプログラム(後述する「サーバアプリ22」)と区別するために便宜上用いた用語である。
なお、クライアントアプリ11とサーバアプリ22とが同一のプログラムであってもよい。また、クライアントアプリ11は、SDK(Software Development Kit)を利用して開発されたアプリケーションであるSDKアプリケーションを利用できる。
サービス提供システム20は、WebAPI21と、サーバアプリ22と、ポータルアプリ23と、サービス情報部24と、外部ストレージデータ取得部25と、認証部26と、プロキシ部27と、外部ストレージ共通フレームワーク28とを有する。これらは、サービス提供システム20にインストールされる一以上のプログラムによって構成され、例えばCPU106等により実現される。
また、サービス提供システム20は、サービス情報記憶部51と、ユーザ情報記憶部52と、プロファイル情報記憶部53と、プロキシ変換情報記憶部54とを利用する。これら各記憶部は、HDD108、又はサービス提供システム20とネットワークを介して接続される記憶装置等を用いて実現可能である。
WebAPI21は、画像形成装置10やPC端末30がサービス提供システム20を利用するためのインタフェースである。WebAPI21は、画像形成装置10やPC端末30からの各種要求をサーバアプリ22やポータルアプリ23等が受け付けるために設けられた予め定義されたインタフェースであり、例えば、関数やクラス等により構成される。
サーバアプリ22は、クライアントアプリ11と連携してサービス提供システム20が提供するクラウドプリントサービスを実現するアプリケーションプログラムである。サーバアプリ22は、外部ストレージ連携部221を有しており、クライアントアプリ11から外部ストレージシステム40のフォルダ・ファイル一覧情報の取得要求を受け付ける。外部ストレージ連携部221は、プロキシ部27を介して、ストレージサービスのフォルダ・ファイル一覧情報取得のAPI(Application Programming Interface)の呼び出し要求を外部ストレージ共通フレームワーク28に対して行う。なお、サーバアプリ22は、SDKを利用して開発されたアプリケーションであるSDKアプリケーションを利用できる。
ポータルアプリ23は、PC端末30に対して、画像形成装置10の利用者のプロファイル情報の設定や外部ストレージシステム40における認証情報の設定等を提供する。ここで、プロファイル情報とは、画像形成装置10のユーザ毎の設定情報であり、外部ストレージシステム40から電子データを取得するための基点となるフォルダのパス等が含まれる。ポータルアプリ23は、UI生成部231を有しており、PC端末30からの要求を受け付けると、UI生成部231は、受け付けた要求に応じたUI(ユーザインタフェース)画面の生成を行う。
サービス情報部24は、利用できるストレージサービスの管理を行う。また、サービス情報部24は、他の各部からの要求に応じて、サービス情報記憶部51から利用できるストレージサービスに関する情報(以降、「サービス情報」という)を取得する。
外部ストレージデータ取得部25は、サーバアプリ22からの所定の要求に応じて、外部ストレージシステム40に保存されている電子データを取得するための処理を行う。外部ストレージデータ取得部25は、外部ストレージ連携部251を有しており、サーバアプリ22から画像形成装置10の印刷対象となる電子データの取得要求を受け付ける。また、外部ストレージ連携部251は、プロキシ部27を介して、データのダウンロードAPIの呼び出し要求を外部ストレージ共通フレームワーク28に対して行う。
認証部26は、ユーザ毎の認証情報(以降、「ユーザ情報」という)の管理を行う。また、認証部26は、他の各部からの要求に応じて、ユーザ情報記憶部52からユーザ情報を取得する。認証部26は、外部ストレージ共通認証部261を有し、外部ストレージ共通認証部261は、プロキシ部27を介して、外部ストレージシステム40へのログインAPIの呼び出し要求を外部ストレージ共通フレームワーク28に対して行う。
外部ストレージ共通フレームワーク28は、外部ストレージ連携API61と、ストレージサービス連携アプリ62とを有する。また、外部ストレージ共通フレームワーク28は、外部ストレージサービスの設定情報記憶部63を利用する。
外部ストレージ連携API61は、ストレージサービス連携アプリ62を利用するための共通のインタフェースである。外部ストレージ連携API61は、サービス提供システム20の各部からのAPIの呼び出し要求をストレージサービス連携アプリ62が受け付けるために設けられた予め定義されたインタフェースであり、例えば、関数やクラス等により構成される。
ストレージサービス連携アプリ62は、外部ストレージシステム40に対して、ログイン、フォルダ・ファイル一覧情報の取得、データのダウンロード等の各種処理を行うことができるプログラムである。ストレージサービス連携アプリ62は、利用できるストレージサービス毎に存在する。例えば、ストレージサービスAを利用するためのストレージサービスA用連携アプリ621、ストレージサービスBを利用するためのストレージサービスB用連携アプリ622、・・・が存在する。なお、各ストレージサービス連携アプリ62には、「アプリID」と「バージョン」とが対応付けられており、これらの情報は、ストレージサービスの名称とともに、サービス情報記憶部51においてサービス情報として管理される。
また、ストレージサービス連携アプリ62は、それぞれ対応する設定情報記憶部63を利用する。設定情報記憶部63には、対応するストレージサービスの設定情報が記憶されている。設定情報は、UI生成部231がUI(ユーザインタフェース)を生成するために必要な情報が指定されている。
プロキシ部27は、他の各部から外部ストレージシステム40に対する各種要求を受け付けると、プロキシ変換情報記憶部54のプロキシ変換情報テーブルを参照し、対応するホスト情報(アドレス情報)に要求を転送する。例えば、プロキシ部27は、外部ストレージシステム401(ストレージサービスA)に対する要求を受け取った場合、プロキシ変換情報テーブルを参照し、ストレージサービスA用連携アプリ621が動作するホスト(情報処理装置)に、この要求を転送する。
より具体的に説明すると、ストレージサービスA用連携アプリ621(アプリID「appA」)がホスト情報「aaa.xxx.co.jp」の装置に搭載されており、ストレージサービスB用連携アプリ622(アプリID「appB」)がホスト情報「bbb.xxx.co.jp」の装置に搭載されているとする。このとき、プロキシ部27は、プロキシ変換情報テーブルを参照し、受け取った要求に含まれるアプリIDが「appA」である場合、この要求を「aaa.xxx.co.jp」に転送し、他方、受け取った要求に含まれるアプリIDが「appB」である場合、この要求を「bbb.xxx.co.jp」に転送する。換言すれば、プロキシ部27は、所望のストレージサービス連携アプリ62が搭載されている(動作している)ホスト情報の装置に対して、受け取った要求を転送する。
なお、異なるホスト情報が同一の装置で実現されてもよいし、複数台の装置で実現されていてもよい。他方、例えば外部ストレージ共通フレームワーク28が一台の情報処理装置で実現されており、かつ、一つのホスト情報のみを有する場合等は、サービス提供システム20は、プロキシ部27を有していなくてもよい。
また、サービス情報記憶部51は、サービス情報を記憶する。ユーザ情報記憶部52は、ユーザ情報を記憶する。プロファイル情報記憶部53は、プロファイル情報を記憶する。プロキシ変換情報記憶部54は、プロキシ変換情報を記憶する。外部ストレージサービスの設定情報記憶部63は、設定情報を記憶する。
なお、上述したように、サービス提供システム20の各処理ブロックは、複数台の情報処理装置により構成されていてもよい。例えば、プロキシ部27とプロキシ変換情報記憶部54とを一台の情報処理装置で構成し、外部ストレージ共通フレームワーク28を複数台の情報処理装置で構成して運用してもよい。
以上のように本実施形態に係るサービス提供システム20は、各ストレージサービスを利用するための外部ストレージ共通フレームワーク28を有する。また、外部ストレージ共通フレームワーク28は、各ストレージサービス連携アプリ62を利用するための共通に定義されたAPIである外部ストレージ連携API61を有する。したがって、利用できるストレージサービスを追加・変更等する場合、外部ストレージ連携API61を利用することにより、システム全体に影響を与えることなくストレージサービス連携アプリ62を追加・変更等を行うことができる。換言すれば、ストレージサービスの追加・変更等に伴うサービス提供システム20への影響を、外部ストレージ共通フレームワーク28の中だけに限定させることができる。なお、外部ストレージ連携API61は、例えばサードベンダー等に公開してもよい。
<処理の詳細>
次に、本実施形態に係る情報処理システム1の処理の詳細について説明する。
≪認証情報設定処理≫
まず、ユーザがPC端末30を操作して、ストレージサービスの認証情報をサービス提供システム20に設定する処理について図5を用いて説明する。本実施形態に係るサービス提供システム20が提供するクラウドプリントサービスを利用するユーザは、予めストレージサービスの認証情報を設定しておく必要がある。図5は、本実施形態に係る認証情報設定処理の一例のシーケンス図である。
ステップS501において、ユーザがPC端末30を操作してユーザ情報編集画面へ遷移させる。すなわち、例えば、PC端末30にインストールされたWebブラウザ等を用いて、WebAPI21を介して、サービス提供システム20のポータルアプリ23が提供するポータルサイトにログインする。そして、ポータルサイトで所定のボタンを押下することでユーザ情報編集画面に遷移させる。なお、ユーザがポータルサイトにログインする際には、ユーザID、パスワード等を入力する。ここで、後述する外部ストレージシステム40にログインするためのユーザID及びパスワードと区別するため、サービス提供システム20や画像形成装置10にログインするためのユーザID及びパスワードを、以降では便宜的に、利用者ID及び利用者パスワードと呼ぶ。
ステップS502において、ポータルアプリ23は、サービス情報部24に対してサービス情報の取得を要求する。サービス情報部24は、ポータルアプリ23からサービス情報の取得要求を受け付けると、サービス情報記憶部51に記憶されている図6に示すようなサービス情報テーブルを取得し、ポータルアプリ23に送信する。
図6は、サービス情報テーブルの一例の構成図である。サービス情報テーブルは、ストレージサービスを利用するためのストレージサービス連携アプリ62の情報を管理している。サービス情報テーブルは、「アプリID」、「ストレージサービス名」及び「バージョン」等のデータ項目を有する。「アプリID」は、利用可能な外部ストレージシステム40に対して各種処理を要求するためのストレージサービス連携アプリ62の識別情報である。「ストレージサービス名」は、外部ストレージシステム40が提供するサービスの名称である。「バージョン」は、ストレージサービス連携アプリ62のバージョン情報である。
例えば、図6に示すサービス情報テーブルの1レコード目には、ストレージサービスA用連携アプリ621のアプリID「app001」、外部ストレージシステム401が提供するサービス名「ストレージサービスA」、ストレージサービスA用連携アプリ621のバージョン情報「v1」が記憶されている。
なお、図6に示されるサービス情報テーブルでは、同一のアプリIDであっても異なるバージョンのストレージサービス連携アプリ62は別々に管理しているが、バージョンに関わらず同一のアプリIDを1レコードで管理してもよい。
次に、ステップS503及びステップS504の処理を、ステップS502で取得したサービス情報テーブルに含まれるレコード数の回数繰り返し行う。
ステップS503において、ポータルアプリ23は、ステップS502で取得したサービス情報テーブルからレコードを1件取得し、このレコードのアプリID及びバージョンを含む設定情報取得APIの呼び出し要求をプロキシ部27に送信する。
ステップS504において、プロキシ部27は、アプリID及びバージョンを含む設定情報取得APIの呼び出し要求を受け取ると、図7に示すようなプロキシ変換情報テーブルを参照し、該当のホスト名に対して設定情報取得APIの呼び出し要求を転送する。
図7は、プロキシ変換情報テーブルの一例の構成図である。プロキシ変換情報テーブルは、アプリIDに対応した転送先のホスト名を管理している。プロキシ変換情報テーブルは、「アプリID」、「転送先ホスト情報」等のデータ項目を有する。「アプリID」は、上述したようにストレージサービス連携アプリ62の識別情報である。「転送先ホスト名」は、プロキシ部27が受け付けた各種要求を転送する転送先のホスト名である。
例えば、プロキシ部27が受け取った設定情報取得APIの呼び出し要求に含まれるアプリID及びバージョンがそれぞれ「app001」及び「v2」である場合、プロキシ部27は、図7に示すプロキシ変換情報テーブルを参照し、この設定情報取得APIの呼び出し要求を「aaa.xxx.co.jp」に転送する。一方、プロキシ部27が受け取った要求に含まれるアプリID及びバージョンがそれぞれ「app002」及び「v1」である場合、プロキシ部27は、この要求を「bbb.xxx.co.jp」に転送する。このように、プロキシ部27は、受け取った要求に含まれるアプリIDに応じて、この要求を転送先ホスト情報に指定されたホストに転送する。なお、転送先ホスト情報に代えて、転送先を示すIPアドレス等を用いてもよい。これら転送先ホスト情報、IPアドレス等は、アドレス情報の一例である。
そして、プロキシ部27が転送した設定情報取得APIの呼び出し要求より、外部ストレージ連携API61の設定情報取得APIが呼び出され、該当のストレージサービス連携アプリ62は設定情報の取得を行う。より具体的には、外部ストレージ連携API61は、設定情報取得APIの呼び出し要求を受け取ると、設定情報取得APIを呼び出し、この呼び出し要求に含まれるアプリID及びバージョンに対応するストレージサービス連携アプリ62に設定情報の取得を依頼する。続いて、ストレージサービス連携アプリ62は、設定情報記憶部63から設定情報を取得し、プロキシ部27を介して、設定情報をポータルアプリ23に送信する。
なお、サービス提供システム20がプロキシ部27を有さない構成である場合、上記のステップS503において、ポータルアプリ23は、外部ストレージ連携API61に対して直接、設定情報取得APIの呼び出し要求を行う。
ここで、外部ストレージ連携API61について、図8を用いて説明する。図8は、外部ストレージ連携APIの一例を説明するための図である。外部ストレージ連携API61は、外部ストレージシステム40に対して各種処理要求を行うためのAPIを定義している。図8において、外部ストレージシステム40の設定情報を取得するためのAPIは、エンドポイント「/アプリID/バージョン/info」で定義されている。したがって、外部ストレージシステム401(ストレージサービスA)の設定情報を取得するためには、例えばアプリID「app001」、バージョン「v2」を指定した設定情報取得APIの呼び出し要求を外部ストレージ連携API61に送信すればよい。これにより、ストレージサービスA用連携アプリ621によりストレージサービスAの設定情報記憶部631から設定情報が取得される。このように、外部ストレージ連携API61は、エンドポイントのうち「アプリID」及び「バージョン」が可変部分として定義されている。したがって、外部ストレージ連携API61は、「アプリID」及び「バージョン」が指定されることにより、この「アプリID」及び「バージョン」に対応するストレージサービス連携アプリ62に処理を依頼する。これにより、サービス提供システム20に対してストレージサービス連携アプリ62を追加・変更等する場合においても、外部ストレージ連携API61の修正等を行う必要がない。
なお、図8で一例とした示したもの以外にも各種APIが定義されていてもよい。例えば、外部ストレージシステム40の死活を確認するためのAPIや外部ストレージシステム40に保存されている電子データ(ファイル)を削除するためのAPI等が定義されていてもよい。
ここで、設定情報記憶部63に記憶されている設定情報は、例えば図9に示すような情報である。図9は、設定情報の一例を示す図である。図9では、一例として、設定情報記憶部631に記憶されているストレージサービスAの設定情報1000を示している。後述するステップS505の画面生成処理において、この設定情報1000に基づき、ストレージサービスAの認証情報を設定するためのUI画面(認証情報設定画面)が生成される。図9の各情報1100〜1200は、UI画面を生成するための情報である。
次に、ステップS505において、上記のステップS503及びステップS504の処理において取得した各ストレージサービスの設定情報に基づいて、ポータルアプリ23は、認証情報を設定するためのUI画面(認証情報設定画面)を生成する。
ここで、図9に示す設定情報1000に基づき、例えば図10に示すようなUI画面が生成される。図10は、認証情報設定画面の一例のイメージ図である。例えば、図9の情報1100からタイトル部2001が生成される。また、図9の情報1200からユーザID入力部2002が、図9の情報1300からパスワード入力部2003が生成される。このように、ポータルアプリ23のUI生成部231は、取得した設定情報からストレージサービスの認証情報を設定するための画面を生成する。図9及び図10では、認証情報としてユーザIDとパスワードとが設定される場合を一例として示したが、これに限られず、例えば、ユーザIDとパスワードに加えて、企業名等を認証情報として設定することができてもよい。ここで、どのような項目を認証情報として設定することができるかは、ストレージサービス毎に予め決定されている。なお、図9に示す設定情報1000は、JSON(JavaScript Object Notation)で記述されているが、これに限られず、例えばXML(Extensible Markup Language)等で記述されていてもよい。
また、このとき、ポータルアプリ23のUI生成部231は、認証情報の設定を行うことができるストレージサービスの一覧を表示するための画面を生成し、PC端末30の表示装置102に表示させる。ユーザがこのストレージサービスの一覧から所望のストレージサービスを選択することで、上記のステップS505において生成した認証情報設定画面に遷移することができる。
ステップS506において、ユーザはPC端末30を操作して、ストレージサービス一覧から所望のストレージサービスを選択すると、選択したストレージサービスの認証情報設定画面に遷移する。
ステップS507において、ユーザはPC端末30を操作して、認証情報設定画面から認証情報(例えば、ユーザIDとパスワード)を入力して認証情報を設定する。例えば、ユーザがストレージサービスAの認証情報を設定する場合、図10に示す認証情報設定画面2000においてユーザIDとパスワードを入力し、設定ボタン2004を押下する。すると、PC端末30は、ユーザIDとパスワードとを含む認証情報の保存要求をポータルアプリ23に送信する。なお、ここで入力するユーザID及びパスワードは、ユーザが所望のストレージサービスにログインするためのユーザID及びパスワードである。したがって、ユーザは、予め利用するストレージサービスのユーザID及びパスワードを入手しておく必要がある。
ステップS508において、ポータルアプリ23は、PC端末30から受け取った認証情報の保存要求を認証部26に送信する。そして、認証部26は、認証情報の保存要求に含まれる認証情報(ストレージサービスのユーザID及びパスワード等)を、利用者ID及びアプリIDに関連付けてユーザ情報記憶部52の例えば図11に示すようなユーザ情報テーブルに保存する。
図11は、ユーザ情報テーブルの一例の構成図である。ユーザ情報管理テーブルは、「利用者ID」、「アプリID」、「認証情報」等のデータ項目を有する。「利用者ID」は、サービス提供システム20及び画像形成装置10を利用するための利用者IDである。「認証情報」は、アプリIDに対応するストレージサービスに対する認証情報である。「認証情報」は、複数のデータ項目を有している。例えば「Key1」はストレージサービスの認証に用いるユーザID、「Key2」は認証に用いるパスワード、「Key3」は認証に用いる企業名等である。例えば、図14の示すユーザ情報テーブルの1レコード目は、上記のステップS507において、利用者ID「Tony」のユーザが、ストレージサービスAのユーザIDを「user001」、パスワードを「pass001」と設定した場合に保存されるレコードである。
なお、ユーザ情報テーブルの「認証情報」には、ストレージサービスのユーザID及びパスワード等に代えて、OAuthに規定される認証認可トークンの情報等を保存してもよい。これにより、ユーザは、サービス提供システム20にストレージサービスのユーザID及びパスワード等を保存することなく、クラウドプリントサービスを利用することができる。
以上により、本実施形態に係るサービス提供システム20では、ユーザは、PC端末30から所望のストレージサービスの認証情報を設定することができる。また、認証情報設定画面を生成するための設定情報は、外部ストレージ共通フレームワーク28を用いて取得することができる。したがって、サービス提供システム20に利用できるストレージサービスを追加する場合やストレージサービスの設定情報を変更する場合等に、外部ストレージ共通フレームワーク28内だけに追加・変更に伴う影響を限定させることができる。
≪プロファイル情報作成処理≫
次に、ユーザのPC端末30を操作して、プロファイル情報を作成する処理について図12を用いて説明する。ユーザは、プロファイル情報を作成することで、画像形成装置10からサービス提供システム20が提供するクラウドプリントサービスを利用することができるようになる。このため、本実施形態に係るサービス提供システム20が提供するクラウドプリントサービスを利用するユーザは、予めプロファイル情報を作成しておく必要がある。図12は、本実施形態に係るプロファイル情報作成処理の一例のシーケンス図である。
ステップS1201において、ユーザがPC端末30を操作してプロファイルの作成画面へ遷移させる。すなわち、例えば、PC端末30にインストールされたWebブラウザ等を用いて、WebAPI21を介して、サービス提供システム20のポータルアプリ23が提供するポータルサイトにログインする。そして、ポータルサイトで所定のボタンを押下することでプロファイルの作成画面へ遷移させる。
ここで、PC端末30のWebブラウザにより例えば図13(a)に示すようなプロファイル作成画面3000が表示されたものとして以降、説明する。まず、ユーザは、図13(a)のプロファイル作成画面3000において、利用者ID入力欄3001に利用者IDを入力するとともに、接続先選択欄3002のプルダウンリストから所望のストレージサービスを選択する。そして、ユーザが参照ボタン3003を押下すると、PC端末30は、フォルダ・ファイルの一覧情報の取得要求をポータルアプリ23に送信する。なお、PC端末30が送信するフォルダ・ファイルの一覧情報の取得要求には、上記のプロファイル作成画面3000で入力された利用者IDと、選択されたストレージサービスに対応するストレージサービス連携アプリ62のアプリIDとが含まれる。
ステップS1202において、ポータルアプリ23は、フォルダ・ファイルの一覧情報の取得要求をサーバアプリ22に送信する。
ステップS1203において、サーバアプリ22は、フォルダ・ファイルの一覧情報を取得するため、ステップS1201で選択されたストレージサービスに対するログイン要求を認証部26に送信する。
ステップS1204において、認証部26の外部ストレージ共通認証部261は、ログイン要求に含まれる利用者IDとアプリIDとに基づいてユーザ情報記憶部52のユーザ情報テーブルから認証情報(ユーザID及びパスワード等)を取得する。そして、認証部26は、アプリIDと、バージョンと、取得した認証情報とを含むログインAPIの呼び出し要求をプロキシ部27に対して送信する。このように、プロキシ部27(又は外部ストレージ共通フレームワーク28)との通信は外部ストレージ共通認証部261が行う。換言すれば、認証部26が外部ストレージ連携API61を利用するためには、外部ストレージ共通認証部261を介して行う。
ここで、取得する認証情報は、例えば、利用者IDが「Tony」、アプリIDが「app001」である場合、認証部26は、図11に示すユーザ情報管理テーブルから認証情報としてKey1「user001」及びKey2「pass001」を取得する。ここで取得したKey1及びKey2が、外部ストレージシステム401が提供するストレージサービスAにログインするためのユーザID及びパスワードである。
ステップS1205において、プロキシ部27は、アプリID及びバージョンを含むログインAPIの呼び出し要求を受け取ると、図7に示すようなプロキシ変換情報テーブルを参照し、該当のホスト名に対してログインAPIの呼び出し要求を転送する。そして、プロキシ部27が転送したログインAPIの呼び出し要求により、外部ストレージ連携API61のログインAPIが呼び出される。より具体的には、外部ストレージ連携API61は、アプリIDとバージョンと認証情報とを含むログインAPIの呼び出し要求を受け取ると、ログインAPIを呼び出す。そして、外部ストレージ連携API61は、この呼び出し要求に含まれるアプリID及びバージョンに対応するストレージサービス連携アプリ62に対してログイン要求を依頼する。例えば、ログイン要求に含まれるアプリIDが「app01」、バージョンが「v2」である場合、外部ストレージ連携API61は、ストレージサービスA用連携アプリ621に対してログイン要求を依頼する。
ステップS1206において、ストレージサービス連携アプリ62は、外部ストレージシステム40に対してログイン要求を行う。そして、外部ストレージシステム40は、受け取ったログイン要求に含まれる認証情報に基づき、認証を行い、ストレージサービス連携アプリ62を介して認証結果を示す情報をサーバアプリ22に送信する。このとき、認証結果を示す情報には、例えば、PC端末30と外部ストレージシステム40とのセッションを管理するためのトークン(例えばCookie)を含めてもよい。なお、以降では、外部ストレージシステム40に対するログインが成功したものとして説明を続ける。
ステップS1207において、サーバアプリ22の外部ストレージ連携部221は、アプリID及びバージョンを含むフォルダ・ファイルの一覧情報取得APIの呼び出し要求をプロキシ部27に対して送信する。このように、プロキシ部27(又は外部ストレージ共通フレームワーク28)との通信は外部ストレージ連携部221が行う。換言すれば、サーバアプリ22が外部ストレージ連携API61を利用するためには、外部ストレージ連携部221を介して行う。これにより、例えば、サードベンダがSDKによりサーバアプリ22を開発する場合等において、外部ストレージ連携部221として機能するモジュール等を用いることにより容易に外部ストレージ連携API61を利用することができる。なお、ポータルアプリ23についても外部ストレージ連携部を有していてもよい。
ステップS1208において、プロキシ部27は、当該呼び出し要求を受け取ると、図7に示すようなプロキシ変換情報テーブルを参照し、該当のホスト名に対してフォルダ・ファイルの一覧情報取得APIの呼び出し要求を転送する。そして、プロキシ部27が転送したフォルダ・ファイルの一覧情報取得APIの呼び出し要求により、外部ストレージ連携API61のフォルダ・ファイルの一覧情報取得APIが呼び出される。より具体的には、外部ストレージ連携API61は、アプリIDとバージョンとを含むフォルダ・ファイルの一覧情報取得APIの呼び出し要求を受け取ると、フォルダ・ファイルの一覧情報取得APIを呼び出す。そして、外部ストレージ連携API61は、この呼び出し要求に含まれるアプリID及びバージョンに対応するストレージサービス連携アプリ62に対してフォルダ・ファイルの一覧情報取得要求を依頼する。例えば、当該呼び出し要求に含まれるアプリIDが「app01」、バージョンが「v2」である場合、外部ストレージ連携API61は、ストレージサービスA用連携アプリ621に対してフォルダ・ファイルの一覧情報取得を依頼する。
ステップS1209において、ストレージサービス連携アプリ62は、外部ストレージシステム40に対してフォルダ・ファイルの一覧情報の取得要求を行う。そして、外部ストレージシステム40は、フォルダ・ファイルの一覧情報をストレージサービス連携アプリ62を介してPC端末30に送信する。なお、ここで取得されるフォルダ・ファイルの一覧情報は、ステップS1206でログインしたユーザの外部ストレージシステム40におけるフォルダ・ファイルの一覧情報である。換言すれば、ステップS1201でユーザが選択したストレージサービスのフォルダ・ファイルの一覧情報である。ここで、フォルダ・ファイルの一覧情報とは、例えば、ユーザが選択したストレージサービスにおけるフォルダID又はファイルIDと親フォルダIDとの組である。
なお、プロファイル情報は、上述したように、外部ストレージシステム40から電子データを取得するための基点となるフォルダのパスを設定した情報である。したがって、ストレージサービス連携アプリ62は、外部ストレージシステム40からフォルダの一覧情報のみを取得するようにしてもよい。
これにより、PC端末30には、例えば図13(b)に示すように、所望のストレージサービスにおける基点となるフォルダを選択するためのフォルダ選択画面3100が表示される。
ステップS1210において、ユーザは、選択したストレージサービスにおいて基点となるフォルダを選択する。すなわち、ユーザは、図13(b)に示すフォルダ選択画面3100において、所望のフォルダを選択して、OKボタン3101を押下する。すると、例えば図13(c)に示すようにフォルダパス設定欄3201にユーザが選択したフォルダのフォルダパス(ここでは、ストレージサービスAにおけるフォルダパス「/StrageA/日報」)が設定される。ここで設定されたフォルダパスが、ユーザが選択したストレージサービスにおける基点となるフォルダのパスである。そして、ユーザがOKボタン3002を押下すると、PC端末30は、例えば図13(d)に示すような確認画面3300に画面を遷移させる。
ステップS1211において、ユーザにより例えば図13(d)に示す確認画面3300においてOKボタン3301を押下されると、PC端末30は、ユーザにより設定された情報を含むプロファイルの作成要求をポータルアプリ23に送信する。
ステップS1212において、ポータルアプリ23は、プロファイルの作成要求を受け取ると、プロファイルの作成要求をサーバアプリ22に転送する。
ステップS1213は、サーバアプリ22は、受け取ったプロファイル作成要求に含まれる情報に基づきプロファイル情報を作成し、プロファイル情報記憶部53の図14に示すようなプロファイル情報テーブルに保存する。
図14は、プロファイル情報テーブルの一例の構成図である。図14に示されるプロファイル情報テーブルは、「利用者ID」、「プロジェクト名」、「アプリID」、「フォルダパス」等のデータ項目を有する。「プロジェクト名」は、画像形成装置10を用いてクラウドプリントサービスを利用する際に、画像形成装置10の操作パネル202上に表示されるアイコン名である。後述するように、ユーザは、画像形成装置10の操作パネル202上に表示されるプロジェクト名に対応するアイコンを選択することでクラウドプリントサービスを利用することができる。本実施形態では、プロジェクト名は、フォルダパスに設定されたフォルダ名と一致するように作成されるが、これに限られず、任意の名称を設定してもよい。「フォルダパス」は、アプリIDに対応するストレージサービスにおける、利用者IDに対応するユーザの基点となるフォルダのパスである。ここで、基点となるフォルダとは、ユーザが画像形成装置10の操作パネル202上に表示された上記のアイコンを選択した場合に、最初に表示されるフォルダである。
以上により、本実施形態に係るサービス提供システム20では、ユーザは、PC端末30からクラウドプリントサービスを利用するためのプロファイル情報を作成することができる。このとき、プロファイル情報に含まれる基点となるフォルダのパスは、外部ストレージ共通フレームワーク28を用いて取得することができる。したがって、サービス提供システム20で利用できるストレージサービスを追加・変更する場合等においても、外部ストレージ共通フレームワーク28内だけに追加・変更に伴う影響を限定させることができる。
≪印刷処理≫
次に、ユーザがサービス提供システム20を介して所望のストレージサービスから印刷を所望する電子データを選択し、選択された電子データを画像形成装置10で印刷する処理について図15及び図18を用いて説明する。まず、図15を用いてストレージサービスからユーザが印刷を所望する電子データを選択するための画面を表示させる処理について説明する。図15は、本実施形態に係るフォルダ・ファイル一覧の表示処理の一例のシーケンス図である。
ステップS1501において、ユーザは、画像形成装置10に例えば利用者ID及びパスワード等を入力してログインする。以降では、利用者ID「Tony」がログインしたものとして説明する。なお、ユーザは、例えば利用者ID等が記録されたICカード等を画像形成装置10の所定の位置にかざすことにより、画像形成装置10にログインしてもよい。
ステップS1502において、画像形成装置10のクライアントアプリ11は、サーバアプリ22に対して、ログインしたユーザの利用者IDを含むプロファイル情報の取得要求を送信する。すると、サーバアプリ22は、受け取ったプロファイル情報の取得要求に含まれる利用者ID(ここでは「Tony」)のプロファイル情報を、プロファイル情報記憶部53のプロファイル情報テーブルから取得し、画像形成装置10に送信する。
ステップS1503において、画像形成装置10のクライアントアプリ11は、サーバアプリ22から受け取ったプロファイル情報を、例えばHDD215等にキャッシュとして保存する。これにより、例えば、ユーザが画像形成装置10にログインしたときにキャッシュとして保存した当該ユーザのプロファイル情報のバージョン等を確認して、必要な場合に限りサーバアプリ22からプロファイル情報を取得すればよい。
また、画像形成装置10のクライアントアプリ11は、受け取ったプロファイル情報に基づき、例えば図16(a)に示すようなプロジェクト選択画面4000を操作パネル202に表示させる。図16(a)に示すプロジェクト選択画面4000では、プロファイル情報に含まれるプロジェクト名を表すアイコン4001及び4002が表示される。アイコン4001及びアイコン4002は、利用者ID「Tony」のプロファイル情報のプロジェクト名「資料」及び「日報」にそれぞれ対応するものである。後述するように、ユーザは所望のアイコンを選択することで、このアイコンに対応するストレージサービスから印刷対象となる電子データを選択することができる。
なお、図16(a)に示すプロジェクト選択画面4000には、例えばユーザ環境E1に設置されている印刷サーバ等に保存されている電子データ(印刷データ)を選択するためのアイコン4003が表示されていてもよい。
ステップS1504において、ユーザは、画像形成装置10の操作パネル202上に表示されているアイコンを選択する。このように、ユーザがプロジェクト名を表すアイコンを選択することを、「プロジェクトを選択する」と称する。以降では、ユーザによりアイコン4002が選択、すなわち、「日報」プロジェクトが選択されたものとして説明する。
ステップS1505において、画像形成装置10のクライアントアプリ11は、ユーザによりプロジェクトが選択されると、フォルダ・ファイルの一覧情報の取得要求をサーバアプリ22に送信する。ここで、当該取得要求には、選択されたプロジェクトに対応するフォルダパス(すなわち、プロファイル情報において選択したプロジェクト名に対応するフォルダパス)が含まれる。したがって、当該取得要求は、当該フォルダパスのフォルダ以下の階層に存在するフォルダ及びファイルの情報を取得するための要求である。
ステップS1506において、サーバアプリ22は、フォルダ・ファイルの一覧情報を取得するため、選択されたプロジェクトに対応するストレージサービスに対するログイン要求を認証部26に送信する。ここでは、「日報」プロジェクトに対応するストレージサービスA(外部ストレージシステム401)に対するログイン要求が送信される。なお、ログイン要求には、画像形成装置10にログインしたユーザの利用者ID(ここでは「Tony」)と、選択されたプロジェクトに対応するアプリID(ここでは、「app001」)とが含まれる。
ステップS1507において、認証部26の外部ストレージ共通認証部261は、ログイン要求に含まれる利用者IDとアプリIDとに基づいてユーザ情報記憶部52のユーザ情報テーブルから認証情報を取得する。そして、外部ストレージ共通認証部261は、アプリIDと、バージョンと、取得した認証情報とを含むログインAPIの呼び出し要求をプロキシ部27に送信する。
ステップS1508において、プロキシ部27は、アプリID及びバージョンを含むログインAPIの呼び出し要求を受け取ると、図7に示すようなプロキシ変換情報テーブルを参照し、該当のホスト名に対してログインAPIの呼び出し要求を転送する。そして、プロキシ部27が転送したログインAPIの呼び出し要求により、外部ストレージ連携API61のログインAPIが呼び出される。
ステップS1509において、ストレージサービス連携アプリ62(ここでは、ストレージサービスA用連携アプリ621)は、外部ストレージシステム40(ここでは、外部ストレージシステム401)に対してログイン要求を行う。そして、外部ストレージシステム40は、受け取ったログイン要求に含まれる認証情報に基づき、認証を行い、ストレージサービス連携アプリ62を介して認証結果を示す情報をサーバアプリ22に送信する。なお、以降では、外部ストレージシステム40に対するログインが成功したものとして説明を続ける。
ステップS1510において、サーバアプリ22の外部ストレージ連携部221は、アプリID及びバージョンと、選択されたプロジェクトに対応するフォルダパスとを含むフォルダ・ファイルの一覧情報の取得APIの呼び出し要求をプロキシ部27に送信する。
ステップS1511において、プロキシ部27は、当該呼び出し要求を受け取ると、図7に示すようなプロキシ変換情報テーブルを参照し、該当のホスト名に対してフォルダ・ファイルの一覧情報取得APIの呼び出し要求を転送する。そして、プロキシ部27が転送したフォルダ・ファイルの一覧情報取得APIの呼び出し要求により、外部ストレージ連携API61のフォルダ・ファイルの一覧情報取得APIが呼び出される。
ステップS1512において、ストレージサービス連携アプリ62は、外部ストレージシステム40に対してフォルダ・ファイルの一覧情報の取得要求を行う。そして、外部ストレージシステム40は、フォルダ・ファイルの一覧情報をストレージサービス連携アプリ62を介してPC端末30に送信する。なお、ここで取得されるフォルダ・ファイルの一覧情報は、該当のユーザ(ここでは「user001」)における、ステップS1504で選択されたプロジェクトに対応するフォルダパス以下のフォルダ及びファイルの一覧情報である。
ステップS1513において、画像形成装置10のクライアントアプリ11は、サーバアプリ22から受け取ったフォルダ・ファイルの一覧情報を、例えばHDD215等にキャッシュとして保存する。これにより、例えば、ユーザによりプロジェクトが選択されたときに、キャッシュとして保存したフォルダ・ファイルの一覧情報の変更有無を確認して、必要な場合に限りフォルダ・ファイルの一覧情報を取得すればよい。
ステップS1514において、画像形成装置10のクライアントアプリ11は、受け取ったフォルダ・ファイルの一覧情報に基づき、例えば図16(b)に示すようなフォルダ選択画面4100を生成して操作パネル202に表示させる。このように、ユーザがプロジェクト選択画面4000で「日報」プロジェクトを選択すると、このプロジェクトに対応するストレージサービスAのフォルダ選択画面4100に画面遷移する。なお、上記では図16に示す画面は、画像形成装置10のクライアントアプリ11で生成されるものとして説明したが、当該画面はサーバアプリ22等で生成してもよい。この場合、画像形成装置10は、例えば、当該画像形成装置10にインストールされたWebブラウザ等を用いて画面表示を行うことができる。
なお、上記のステップS1509で外部ストレージシステム40に対するログインが失敗した場合、画像形成装置10のクライアントアプリ11は、例えば図17に示すような当該外部ストレージシステム40の認証画面5000を表示させるようにしてもよい。すなわち、例えば、ステップS1504で選択されたプロジェクトに対応するストレージサービスの認証情報(ユーザID及びパスワード等)が有効期限切れ等によりログインが失敗した場合等に認証画面5000を表示させるようにしてもよい。
次に、図18を用いてユーザが印刷を所望する電子データを選択して、画像形成装置10において印刷を行う処理について説明する。図18は、本実施形態に係る印刷処理の一例のシーケンス図である。
ステップS1801において、ユーザは、画像形成装置10を操作して印刷を所望する電子データ(印刷対象データ)を選択する。例えば、図16(b)に示すフォルダ選択画面4100から印刷を所望する電子データが格納されているフォルダを選択する(ここでは、フォルダ名「7月分」が選択されたものとする)。すると、図16(c)に示すようなフォルダ名「7月分」に格納されているファイルを選択するためのファイル選択画面4200が表示される。このファイル選択画面4200において所望の電子データを選択して(ここでは、ファイル名「2014−07−23報告書.pdf」が選択されたものとする)、印刷ボタン4201を押下する。これにより、印刷対象データ(ファイル名「2014−07−23報告書.pdf」)が選択される。
ステップS1802において、画像形成装置10は、ユーザにより印刷対象データが選択されると、選択された印刷対象データのファイルIDと、利用者IDとを含む印刷要求をサーバアプリ22に送信する。
ステップS1803において、サーバアプリ22は、画像形成装置10から受け取った印刷要求に基づき、ジョブを外部ストレージデータ取得部25に投入する。ここで、ジョブは、該当のストレージサービスから印刷対象データをダウンロード(及びデータ変換)するためのジョブであり、ファイルIDと、利用者IDとが含まれる。
ステップS1804において、外部ストレージデータ取得部25の外部ストレージ連携部251は、ジョブが投入されると、該当の外部ストレージシステム40(ここでは、外部ストレージシステム401)に対するログイン要求を認証部26に送信する。
ステップS1805において、認証部26の外部ストレージ共通認証部261は、ログイン要求に含まれる利用者IDとアプリIDとに基づいてユーザ情報記憶部52のユーザ情報テーブルから認証情報を取得する。そして、外部ストレージ共通認証部261は、アプリIDと、バージョンと、取得した認証情報とを含むログインAPIの呼び出し要求をプロキシ部27に送信する。
ステップS1806において、プロキシ部27は、アプリID及びバージョンを含むログインAPIの呼び出し要求を受け取ると、図7に示すようなプロキシ変換情報テーブルを参照し、該当のホスト名に対してログインAPIの呼び出し要求を転送する。そして、プロキシ部27が転送したログインAPIの呼び出し要求により、外部ストレージ連携API61のログインAPIが呼び出される。
ステップS1807において、ストレージサービス連携アプリ62は、外部ストレージシステム40(ここでは、外部ストレージシステム401)に対してログイン要求を行う。そして、外部ストレージシステム40は、受け取ったログイン要求に含まれる認証情報に基づき、認証を行い、ストレージサービス連携アプリ62を介して認証結果を示す情報をサーバアプリ22に送信する。なお、以降では、外部ストレージシステム40に対するログインが成功したものとして説明を続ける。
ステップS1808において、サーバアプリ22の外部ストレージ連携部221は、アプリID及びバージョンと、印刷対象データのファイルIDとが含まれるデータダウンロードAPIの呼び出し要求をプロキシ部27に対して送信する。
ステップS1809において、プロキシ部27は、データダウンロードAPIの呼び出し要求を受け取ると、図7に示すようなプロキシ変換情報テーブルを参照し、該当のホスト名に対してデータダウンロードAPIの呼び出し要求を転送する。そして、プロキシ部27が転送したデータダウンロードAPIの呼び出し要求により、外部ストレージ連携API61のデータダウンロードAPIが呼び出される。より具体的には、外部ストレージ連携API61は、アプリIDとバージョンとを含むデータダウンロードAPIの呼び出し要求を受け取ると、データダウンロードAPIを呼び出す。そして、外部ストレージ連携API61は、この呼び出し要求に含まれるアプリID及びバージョンに対応するストレージサービス連携アプリ62に対して、当該要求に含まれる印刷対象のファイルIDの電子データのダウンロードを依頼する。
ステップS1810において、ストレージサービス連携アプリ62は、当該要求に含まれるファイルIDの電子データ(印刷対象データ)の取得要求を該当の外部ストレージシステム40に行う。そして、外部ストレージシステム40は、印刷対象データをストレージサービス連携アプリ62を介して外部ストレージデータ取得部25に送信する。
ステップS1811において、外部ストレージデータ取得部25は、外部ストレージシステム40から取得した印刷対象データのデータ形式を、画像形成装置10において印刷可能なデータ形式に変換する。以降では、このデータ形式変換後の印刷対象データを、印刷データと称する。なお、外部ストレージデータ取得部25は、印刷対象データのデータ形式を画像形成装置10が印刷可能なデータ形式に変換することができない場合、エラー等を示す情報を画像形成装置10に送信してもよい。また、画像形成装置10が印刷対象データを直接、印刷することができる場合、本ステップの処理は行わなくてもよい。
ステップS1812において、外部ストレージデータ取得部25は、印刷データを例えばHDD108等に保存する。
ステップS1813において、外部ストレージデータ取得部25は、ジョブの完了をサーバアプリ22に通知する。
ステップS1814において、サーバアプリ22は、ジョブの完了を画像形成装置10のクライアントアプリ11に通知する。
ステップS1815において、画像形成装置10のクライアントアプリ11は、サーバアプリ22からジョブの完了が通知されると、印刷データの取得をサーバアプリ22に要求する。
ステップS1816において、サーバアプリ22は、クライアントアプリ11から印刷データの取得要求を受け取ると、外部ストレージデータ取得部25に当該要求を転送する。そして、外部ストレージデータ取得部25は、該当の印刷データをサーバアプリ22を介して、画像形成装置10のクライアントアプリ11に送信する。
ステップS1817において、画像形成装置10のクライアントアプリ11は、サーバアプリ22から印刷データを受け取ると、印刷データを印刷する。これにより、ユーザは、ステップS1801で選択した印刷対象データ(ファイル名「2014−07−23報告書.pdf」)を印刷することができる。
以上により、本実施形態に係るサービス提供システム20では、画像形成装置10からクラウドプリントサービスを利用して印刷する電子データが選択されると、この電子データをストレージサービスから取得(ダウンロード)することができる。このとき、印刷する電子データは、外部ストレージ共通フレームワーク28を用いて取得することができる。したがって、サービス提供システム20で利用できるストレージサービスを追加・変更する場合等においても、外部ストレージ共通フレームワーク28内だけに追加・変更に伴う影響を限定させることができる。
<まとめ>
以上で説明したように本実施形態に係るサービス提供システム20によれば、連携して処理を行うストレージサービスの追加・変更等を容易に行うことができる。すなわち、サービス提供システム20と連携して処理を行うストレージサービスの追加・変更等を行う場合においても、外部ストレージ共通フレームワーク28内に追加・変更等に伴う影響を限定することができる。例えば、外部ストレージ共通フレームワーク28のストレージサービス連携アプリ62を追加・変更する場合、例えば、サービス提供システム20の追加・変更手段を用いて、サービス提供システム20全体の稼働は維持したまま、追加・変更を行うことができる。したがって、ストレージサービスの追加・変更等に伴う開発工数や開発期間を削減することができる。
なお、本実施形態においては、外部ストレージシステム40に保存された電子データの出力先として画像形成装置10で印刷する場合について説明したが、これに限られない。例えば、出力先としては、プロジェクタ、電子黒板、ICレコーダ、会議システム等であってもよい。
また、本実施形態では外部ストレージシステム40からダウンロードした電子データを、印刷データに変換する場合について説明したが、これに限られない。例えば、出力先がプロジェクタである場合、当該プロジェクタで投影可能なデータ形式に変換してもよい。出力先が電子黒板、ICレコーダ、会議システム等である場合も同様である。
なお、WebAPI21は、受付手段の一例である。外部ストレージデータ取得部25は、データ取得手段及び変換手段の一例である。サーバアプリ22は、送信手段及び格納先情報取得手段の一例である。プロキシ部27は、転送手段の一例である。
本発明は、具体的に開示された上記の実施形態に限定されるものではなく、特許請求の範囲から逸脱することなく、種々の変形や変更が可能である。