以下、本発明の実施形態について、図面を参照しながら詳細に説明する。
<システム構成>
まず、本実施形態に係る情報処理システム1のシステム構成について、図1を参照しながら説明する。図1は、本実施形態に係る情報処理システム1の一例のシステム構成を示す図である。
図1に示す情報処理システム1は、サービス提供システム10と、機器20とを含み、インターネット等の広域的なネットワークN1を介して通信可能に接続されている。
サービス提供システム10は、一台以上の情報処理装置で実現され、ネットワークN1を介して、種々の機能をそれぞれ実現する複数の処理のうちの1以上の処理を組み合わせた一連の処理により実現される各種のサービスを提供する。
ここで、機能とは、文書ファイルや画像ファイル等の電子ファイルに関する機能である。機能には、例えば、プリント、スキャン、ファクシミリ送信、データ形式の変換、メール配信、OCR(Optical character recognition)処理、加工や圧縮・解凍、リポジトリへの格納等が挙げられる。
本実施形態に係るサービス提供システム10が提供するサービスの具体例については後述する。なお、以降では、一連の処理を「処理フロー」とも表す。
機器20は、ユーザが使用する各種の電子機器である。すなわち、機器20は、例えば、MFP(Multifunction Peripheral)等の画像形成装置、PC(パーソナルコンピュータ)、プロジェクタ、電子黒板、デジタルカメラ等である。ユーザは、機器20を用いて、サービス提供システム10が提供する各種のサービスを利用することができる。
なお、以降では、複数の機器20について、各々を区別するときは、「機器201」、「機器202」等と添え字を用いて記載する。
また、図1に示す情報処理システム1の構成は一例であって、他の構成であっても良い。例えば、本実施形態に係る情報処理システム1には、電子データの入力及び出力の少なくとも一方を行う各種機器が含まれ、これらの機器がサービス提供システム10により提供されるサービスを利用しても良い。
<ハードウェア構成>
次に、本実施形態に係る情報処理システム1に含まれるサービス提供システム10のハードウェア構成について、図2を参照しながら説明する。図2は、本実施形態に係るサービス提供システム10の一例のハードウェア構成を示す図である。
図2に示すサービス提供システム10は、入力装置11と、表示装置12と、外部I/F13と、RAM(Random Access Memory)14とを有する。また、サービス提供システム10は、ROM(Read Only Memory)15と、CPU(Central Processing Unit)16と、通信I/F17と、HDD(Hard Disk Drive)18とを有する。これらの各ハードウェアは、それぞれがバスBで接続されている。
入力装置11は、キーボードやマウス、タッチパネル等を含み、ユーザが各操作信号を入力するのに用いられる。表示装置12は、ディスプレイ等を含み、サービス提供システム10による処理結果を表示する。なお、入力装置11及び表示装置12の少なくとも一方は、必要なときにサービス提供システム10に接続して利用する形態であっても良い。
通信I/F17は、サービス提供システム10をネットワークN1に接続するインタフェースである。これにより、サービス提供システム10は、通信I/F17を介して通信を行うことができる。
HDD18は、プログラムやデータを格納している不揮発性の記憶装置である。HDD18に格納されるプログラムやデータには、サービス提供システム10全体を制御する基本ソフトウェアであるOS(Operating System)、OS上において各種機能を提供するアプリケーションソフトウェア等がある。
なお、サービス提供システム10は、HDD18に代え、記憶媒体としてフラッシュメモリを用いるドライブ装置(例えばソリッドステートドライブ:SSD)を利用するものであっても良い。また、HDD18は、格納しているプログラムやデータを所定のファイルシステム及び/又はDBにより管理している。
外部I/F13は、外部装置とのインタフェースである。外部装置には、記録媒体13a等がある。これにより、サービス提供システム10は、外部I/F13を介して記録媒体13aの読み取りや書き込みを行うことができる。記録媒体13aには、フレキシブルディスク、CD、DVD、SDメモリカード、USBメモリ等がある。
ROM15は、電源を切ってもプログラムやデータを保持することができる不揮発性の半導体メモリである。ROM15には、サービス提供システム10の起動時に実行されるBIOS(Basic Input/Output System)、OS設定、及びネットワーク設定等のプログラムやデータが格納されている。RAM14は、プログラムやデータを一時保持する揮発性の半導体メモリである。
CPU16は、ROM15やHDD18等の記憶装置からプログラムやデータをRAM14上に読み出し、処理を実行することで、サービス提供システム10全体の制御や機能を実現する演算装置である。
本実施形態に係るサービス提供システム10は、図2に示すハードウェア構成を有することにより、後述するような各種処理を実現できる。
次に、本実施形態に係る情報処理システム1に含まれる機器20が画像形成装置である場合のハードウェア構成について、図3を参照しながら説明する。図3は、本実施形態に係る機器20の一例のハードウェア構成を示す図である。
図3に示す機器20は、コントローラ21と、操作パネル22と、外部I/F23と、通信I/F24と、プリンタ25と、スキャナ26とを有する。また、コントローラ21は、CPU31と、RAM32と、ROM33と、NVRAM34と、HDD35とを有する。
ROM33は、各種プログラムやデータを格納している不揮発性の半導体メモリである。RAM32は、プログラムやデータを一時保持する揮発性の半導体メモリである。NVRAM34は、例えば設定情報等を格納している。また、HDD35は、各種プログラムやデータを格納している不揮発性の記憶装置である。
CPU31は、ROM33やNVRAM34、HDD35等からプログラムやデータ、設定情報等をRAM32上に読み出し、処理を実行することで、機器20全体の制御や機能を実現する演算装置である。
操作パネル22は、ユーザからの入力を受け付ける入力部と、表示を行う表示部とを備えている。外部I/F23は、外部装置とのインタフェースである。外部装置には、記録媒体23a等がある。これにより、機器20は、外部I/F23を介して記録媒体23aの読み取り及び/又は書き込みを行うことができる。なお、記録媒体23aには、例えば、ICカード、フレキシブルディスク、CD、DVD、SDメモリカード、USBメモリ等がある。
通信I/F24は、機器20をネットワークに接続するインタフェースである。これにより、機器20は、通信I/F24を介して通信を行うことができる。プリンタ25は、印刷データを印刷する印刷装置である。スキャナ26は、原稿を読み取って電子ファイル(画像ファイル)を生成する読取装置である。
本実施形態に係る機器20は、図3に示すハードウェア構成を有することにより、後述するような各種処理を実現できる。
<サービス提供システムが提供するサービス>
ここで、本実施形態に係るサービス提供システム10が提供するサービスについて説明する。なお、以降では、機器20が画像形成装置であるものとして説明する。
本実施形態に係るサービス提供システム10は、機器20において原稿をスキャンして生成された電子ファイル(画像ファイル)をOCR処理して、ユーザにより指定されたメールアドレス宛にメール配信するサービスを提供する。
以降では、本実施形態に係るサービス提供システム10は、上述したサービス(「スキャン To メール配信」サービス)を提供するものとして説明する。
ただし、サービス提供システム10が提供するサービスは、これに限られない。サービス提供システム10は、例えば、機器20において原稿をスキャンして生成された電子ファイルを圧縮して、リポジトリへ格納するサービスを提供しても良い。また、サービス提供システム10は、例えば、機器20において原稿をスキャンして生成された電子ファイルを加工(例えば、当該電子ファイルに所定の文言を付加)して、ファクシミリ送信するサービスを提供しても良い。
また、例えば、機器20が電子黒板等である場合には、本実施形態に係るサービス提供システム10は、電子黒板である機器20により生成された電子ファイルを加工して、メール配信するサービス等を提供しても良い。
<機能構成>
次に、本実施形態に係る情報処理システム1の機能構成について、図4を参照しながら説明する。図4は、本実施形態に係る情報処理システム1の一例の機能構成を示す図である。
図4に示す機器20は、例えばCPU31等により実行されるクライアントアプリケーション210を有する。クライアントアプリケーション210は、サービス提供システム10が提供するサービスを利用するためのアプリケーションプログラムである。ユーザは、機器20にインストールされたクライアントアプリケーション210を用いて、サービス提供システム10が提供する「スキャン To メール配信」サービスを利用することができる。なお、クライアントアプリケーション210には、当該クライアントアプリケーション210を識別するアプリIDが付与されている。
図4に示すサービス提供システム10は、入出力サービス処理部110と、認証サービス部120と、ドキュメントサービス部130とを有する。これら各機能部は、サービス提供システム10にインストールされた1以上のプログラムが、CPU16に実行させる処理により実現される。
また、図5に示すサービス提供システム10は、アプリ情報記憶部140と、ジョブ情報記憶部150と、参照情報記憶部160とを有する。これら各記憶部は、HDD18を用いて実現可能である。なお、これら各記憶部のうちの少なくとも一の記憶部が、サービス提供システム10とネットワークN1を介して接続される記憶装置等を用いて実現されていても良い。
入出力サービス処理部110は、サービス提供システム10が提供するサービスに関する処理を行う。ここで、入出力サービス処理部110は、アプリ管理部111と、ロジック処理部112と、ジョブ管理部113とを有する。
アプリ管理部111は、アプリ情報記憶部140に記憶されているアプリ情報1000と、参照情報記憶部160に記憶されている参照情報を管理する。
なお、アプリ情報1000とは、一連の処理により実現されるサービスを提供するためのアプリケーションである。すなわち、サービス提供システム10が提供する各種のサービス(例えば、「スキャン To メール配信」サービス)は、アプリ情報1000により提供される。また、参照情報とは、クライアントアプリケーション210やアプリ情報1000等が、他のクライアントアプリケーション210やアプリ情報1000等により実行されたジョブの情報(ジョブ情報)を参照可能であるか否かを判定するための情報である。
また、アプリ管理部111は、ロジック処理部112からの要求に応じて、アプリ情報1000に含まれる処理フロー情報1100を返信する。なお、処理フロー情報1100とは、アプリ情報1000により提供されるサービスを実現する一連の処理が定義された情報である。
ロジック処理部112は、クライアントアプリケーション210からの要求に応じて、アプリ情報1000に含まれる処理フロー情報1100をアプリ管理部111から取得する。そして、ロジック処理部112は、アプリ管理部111から取得した処理フロー情報1100に基づいて、当該アプリ情報1000が提供するサービスを実現する一連の処理(処理フロー)を実行する。これにより、本実施形態に係るサービス提供システム10は、各種のサービス(例えば、「スキャン To メール配信」サービス)を提供することができる。
ジョブ管理部113は、ジョブ情報記憶部150に記憶されているジョブ情報を管理する。なお、ジョブ情報とは、ジョブに関する各種情報(例えば、ジョブの作成日や状態等)が含まれる情報である。また、ジョブとは、各種のサービスを実現する一連の処理(処理フロー)を1つの実行単位とした概念である。
認証サービス部120は、クライアントアプリケーション210が入出力サービス処理部110に各種要求を行う際に、様々な認証方式により認証を行う。
ドキュメントサービス部130は、処理フロー情報1100に基づく一連の処理(処理フロー)に含まれる所定の処理を実行する。ここで、ドキュメントサービス部130は、OCR処理部131と、メール配信部132とを有する。
OCR処理部131は、電子ファイル(画像ファイル)に対してOCR処理を行う。メール配信部132は、電子ファイルを添付したメールを作成して、当該メールを指定されたメールアドレス宛に配信する。
なお、ドキュメントサービス部130は、例えば、電子ファイルのデータ形式を所定のデータに変換するデータ変換部、電子ファイルを圧縮又は解凍する圧縮・解凍部等を有していても良い。
このように、ドキュメントサービス部130には、一連の処理(処理フロー)に含まれる所定の処理を実行する種々の機能部が含まれる。したがって、ドキュメントサービス部130は、これら種々の機能を提供するプログラム(モジュール)群により実現される。
アプリ情報記憶部140は、アプリ情報1000を記憶する。アプリ情報1000は、当該アプリ情報1000を識別するアプリIDと関連付けてアプリ情報記憶部140に記憶されている。したがって、アプリIDは、クライアントアプリケーション210及びアプリ情報1000を識別する識別情報である。
ここで、アプリ情報1000には、処理フロー情報1100が含まれる。例えば、「スキャン To メール配信」サービスを提供するアプリ情報1000には、当該サービスを実現する一連の処理が定義された処理フロー情報1100が含まれる。すなわち、「スキャン To メール配信」サービスを提供するアプリ情報1000には、スキャンにより生成された電子ファイルをOCR処理した後、指定されたメールアドレス宛にメール配信する処理が定義された処理フロー情報1100が含まれる。
なお、アプリ情報1000には、2以上の処理フロー情報1100が含まれていても良い。例えば、「スキャン To メール配信」を提供するアプリ情報1000には、英語でOCR処理した後、メール配信する処理が定義された処理フロー情報1100Aと、日本語でOCR処理した後、メール配信する処理が定義された処理フロー情報1100Bとが含まれていても良い。
処理フロー情報1100は、上述したように、アプリ情報1000により提供されるサービスを実現する一連の処理(処理フロー)が定義された情報である。処理フロー情報1100には、当該処理フロー情報1100を識別するフローIDが付与されている。なお、処理フロー情報1100の詳細については後述する。
ジョブ情報記憶部150は、ジョブ情報を記憶する。参照情報記憶部160は、参照情報を記憶する。ジョブ情報及び参照情報の詳細については後述する。
なお、入出力サービス処理部110、認証サービス部120、及びドキュメントサービス部130は、それぞれが異なる情報処理装置により実現されていても良い。
ここで、ロジック処理部112の詳細な機能構成について、図5を参照しながら説明する。図5は、本実施形態に係るロジック処理部112の一例の機能構成図である。
図5に示すロジック処理部112は、フロー実行部301と、コンポーネント管理部302と、コンポーネント群303と、型変換管理部304と、型変換群305とを有する。また、ロジック処理部112は、型変換情報テーブル3000を有する。
フロー実行部301は、認証サービス部120を介して、クライアントアプリケーション210からアプリケーションの実行要求を受信すると、当該実行要求に対応するアプリ情報1000に含まれる処理フロー情報1100をアプリ管理部111から取得する。そして、フロー実行部301は、アプリ管理部111から取得した処理フロー情報1100に基づく一連の処理(処理フロー)を実行する。
ここで、処理フロー情報1100に基づく一連の処理は、当該一連の処理に含まれる各処理を実行するためのコンポーネントを組み合わせることにより実行される。なお、コンポーネントは、所定の機能を実現する処理を実行するためのプログラムやモジュール等により実現され、例えばクラスや関数等で定義される。
コンポーネント管理部302は、コンポーネントを管理する。コンポーネント管理部302は、フロー実行部301からの要求に応じて、コンポーネントを生成すると共に、生成したコンポーネントをフロー実行部301に返信する。なお、コンポーネントの生成とは、例えばクラスや関数等で定義されたコンポーネントを、メモリ(例えばRAM14)上に展開することである。
コンポーネント群303は、コンポーネントの集合である。コンポーネント群303には、OCRコンポーネント1310と、メール配信コンポーネント1320とが含まれる。
OCRコンポーネント1310は、電子ファイルをOCR処理するためのコンポーネントである。OCRコンポーネント1310は、ドキュメントサービス部130のOCR処理部131にOCR処理を要求することにより、電子ファイルのOCR処理を行う。
メール配信コンポーネント1320は、指定されたメールアドレス宛にメール配信するためのコンポーネントである。メール配信コンポーネント1320は、ドキュメントサービス部130のメール配信部132にメール配信処理を要求することにより、指定されたメールアドレス宛にメールを配信する。
このように、各コンポーネントは、ドキュメントサービス部130を利用して、所定の機能を実現する処理を実行する。なお、コンポーネント群303には、上記のコンポーネント以外にも、例えば、電子ファイルのデータ形式を所定のデータ形式に変換するための変換コンポーネント、電子ファイルを圧縮するための圧縮コンポーネント等の各種のコンポーネントが含まれる。
また、コンポーネント群303に含まれる各コンポーネントは、コンポーネント共通I/F1300を有する。コンポーネント共通I/F1300は、各コンポーネントに対して共通に定義されたAPI(Application Programming Interface)であり、コンポーネントを生成するためのAPIと、コンポーネントの処理を実行するためのAPIとが含まれる。
このように、各コンポーネントがコンポーネント共通I/F1300を有することで、コンポーネントの追加等に伴う影響を局所化することができる。すなわち、例えば、フロー実行部301やコンポーネント管理部302等に影響を与えることなく、コンポーネントの追加等を行うことができる。これにより、本実施形態に係るサービス提供システム10では、所定の機能の追加等(すなわち、当該機能を実現する処理を実行するためのコンポーネントの追加等)に伴う開発工数を削減することができる。
型変換管理部304は、データ型の型変換を管理する。ここで、各コンポーネントは、自身が扱えるデータ型が予め決まっている。したがって、型変換管理部304は、コンポーネントからの要求に応じて、例えば図6に示す型変換情報テーブル3000を参照して、型変換群305に含まれる型変換を生成する。
そして、型変換管理部304は、生成された型変換に型変換処理の実行を要求する。なお、型変換は、データ型の型変換処理を実行するプログラムやモジュール等により実現され、例えばクラスや関数等で定義される。また、型変換の生成とは、例えばクラスや関数等で定義された型変換を、メモリ(例えばRAM14上)に展開することである。
なお、データ型には、例えば、ストリームデータを示すデータ型「InputStream」、記憶装置等に格納されている電子ファイルのパス(アドレス)を示す「LocalFilePath」、及び電子ファイルの実体を示す「File」等が挙げられる。
ここで、型変換情報テーブル3000について、図6を参照しながら説明する。図6は、型変換情報テーブルの一例を示す図である。
図6に示す型変換情報テーブル3000は、データ項目として、変換前のデータ型と、変換後のデータ型と、生成する型変換とを有する。すなわち、型変換情報テーブル3000に格納されている型変換情報は、変換前のデータ型及び変換後のデータ型毎に、当該変換前のデータ型を、当該変換後のデータ型に変換するための型変換が関連付けられた情報である。
型変換群305は、型変換の集合である。型変換群305には、データ型「InputStream」を「LocalFilePath」に変換するための第1の型変換1410が含まれる。なお、型変換群305には、これ以外にも、例えば、データ型「LocalFilePath」を「File」に変換するための第2の型変換等が含まれる。
また、型変換群305に含まれる各型変換は、型変換共通I/F1400を有する。型変換共通I/F1400は、各型変換に対して共通に定義されたAPIであり、型変換を生成するためのAPIと、型変換の型変換処理を実行するためのAPIとが含まれる。
このように、各型変換が型変換共通I/F1400を有することで、型変換の追加等に伴う影響を局所化することができる。すなわち、例えば、型変換管理部304等に影響を与えることなく、型変換の追加等を行うことができる。これにより、本実施形態に係るサービス提供システム10では、型変換の追加等に伴う開発工数を削減することができる。
ここで、ジョブ管理部113の詳細な機能構成について、図7を参照しながら説明する。図7は、本実施形態に係るジョブ管理部113の一例の機能構成を示す図である。
図7に示すジョブ管理部113は、ジョブ情報管理部401と、アクセス制御部402とを有する。
ジョブ情報管理部401は、ロジック処理部112からジョブ情報の登録要求を受信すると、ジョブ情報を作成して、ジョブ情報記憶部150に記憶する。これにより、ジョブ情報がサービス提供システム10に登録される。
また、ジョブ情報管理部401は、アクセス制御部402からジョブ情報の取得要求を受信すると、ジョブ情報をジョブ情報記憶部150から取得する。そして、ジョブ情報管理部401は、取得したジョブ情報をアクセス制御部402に返信する。
アクセス制御部402は、認証サービス部120を介して、クライアントアプリケーション210からジョブ情報の参照要求を受信すると、ジョブの情報取得要求をジョブ情報管理部401に送信する。
また、アクセス制御部402は、ジョブ情報管理部401からジョブ情報が返信されると、アプリ管理部111を介して、参照情報に含まれるアプリID(後述する参照可能アプリID)を取得する。そして、アクセス制御部402は、ジョブ情報管理部401から返信されたジョブ情報をクライアントアプリケーション210が参照可能か否かを判定するためのアクセス権チェックを行う。
なお、参照情報には、クライアントアプリケーション210又はアプリ情報1000のアプリIDと、当該クライアントアプリケーション210又はアプリ情報1000が参照可能な他のアプリケーションのアプリID(参照可能アプリID)が関連付けられている。
これにより、クライアントアプリケーション210等が、他のアプリケーション(他のクライアントアプリケーション210や他のアプリ情報1000)のジョブ情報を参照する場合のアクセス制御が行われる。
ここで、「スキャン To メール配信」サービスを提供するアプリ情報1000に含まれる処理フロー情報1100について、図8を参照しながら説明する。図8は、処理フロー情報1100の一例を示す図である。
図8に示す処理フロー情報1100は、「スキャン To メール配信」サービスを実現する一連の処理(処理フロー)が定義された情報である。すなわち、図8に示す処理フロー情報1100には、フローID1101と、「スキャン To メール配信」サービスを実現する一連の処理を構成する各処理をそれぞれ示す処理定義1102及び処理定義1103とが定義されている。
フローID1101は、図8に示す処理フロー情報1100を識別するフローIDである。
処理定義1102及び処理定義1103は、「コンポーネント名:処理内容?オプションパラメータ」の形式で定義される。なお、オプションパラメータは、例えば、コンポーネント名及び処理内容で示されるコンポーネントが処理を行うのに必要である場合に限り、定義されていれば良い(すなわち、オプションパラメータの定義は任意である。)。また、複数のオプションパラメータを定義する場合には、オプションパラメータ同士を「&」で結合することにより定義する。
処理定義1102には、「ocr:ocr_process」が定義されている。これは、OCRコンポーネント1310によりOCR処理を行うこと意味している。なお、処理定義1102には、オプションパラメータは定義されていない。
処理定義1103には、「mail:send」が定義されている。これは、メール配信コンポーネント1320によりメール配信処理を行うことを意味している。
また、処理定義1103には、「?mail_address=null&filename=null」が定義されている。これは、「mail_address」に指定されたメールアドレス宛に、「filename」に指定されたファイル名の電子ファイルをメール配信することを意味している。なお、図8に示す例では、「mail_address」及び「filename」には値が指定されていない(すなわち、nullである。)。
このように、処理フロー情報1100には、一連の処理(処理フロー)を構成する各処理の処理定義が定義されている。これにより、本実施形態に係るサービス提供システム10は、処理フロー情報1100に含まれる各処理定義に従って、各コンポーネントによる処理を行うことで、アプリ情報1000により提供されるサービスを実現する一連の処理を実行することができる。
なお、図8に示す処理フロー情報1100に含まれる各処理定義に定義された処理は、上から順に実行される。すなわち、図8に示す処理フロー情報1100に基づく一連の処理では、処理定義1102に定義された処理、処理定義1103に定義された処理の順で実行される。ただし、これに限られず、処理フロー情報1100には、例えば、各処理定義に定義された処理の実行順を示す情報が定義されていても良い。
<処理の詳細>
次に、本実施形態に係る情報処理システム1の処理の詳細について説明する。まず、機器20のユーザが、「スキャン To メール配信」サービスを利用する場合の全体的な処理について、図9を参照しながら説明する。図9は、サービス利用の全体処理の一例を示すシーケンス図である。
まず、クライアントアプリケーション210は、例えば図10に示すサービス利用画面2100を表示する(ステップS901)。このようなサービス利用画面2100は、例えば、ユーザがサービス利用画面2100の表示操作を行うことにより表示される。
図10に示すサービス利用画面2100には、ファイル名入力欄2101と、メールアドレス入力欄2102と、スキャン実行ボタン2103とが含まれる。
ファイル名入力欄2101は、メールに添付する電子ファイル(すなわち、スキャンにより生成された電子ファイルをOCR処理した電子ファイル)のファイル名をユーザが指定する入力エリアである。メールアドレス入力欄2102は、メールの配信先となるメールアドレスをユーザが指定する入力エリアである。スキャン実行ボタン2103は、原稿のスキャンを実行して、サービスの利用を開始するためのボタンである。
ここで、図10に示すサービス利用画面2100において、ユーザにより、ファイル名入力欄2101及びメールアドレス入力欄2102にファイル名及びメールアドレスが指定された上で、スキャン実行ボタン2103を押下してスキャン実行操作がなされたものとする。
すると、クライアントアプリケーション210は、原稿をスキャナ26で読み取ることで画像ファイル(スキャン画像ファイル)を作成する(ステップS902)。
ここで、クライアントアプリケーション210は、認証サービス部120との間の認証方式が「アプリ認証」である場合、クライアントIDとクライアントシークレットとを含む処理フローの実行要求を認証サービス部120に送信する(ステップS903)。
なお、クライアントIDは、例えば、クライアントアプリケーション210のアプリIDである。また、クライアントシークレットは、クライアントIDに対するパスワード等である。すなわち、処理フローの実行要求には、認証情報として、クライアントIDとクライアントシークレットとが含まれている。
また、処理フローの実行要求には、フローID、スキャン画像ファイル、及びユーザ指定情報も含まれる。なお、ユーザ指定情報とは、ファイル名入力欄2101及びメールアドレス入力欄2102にそれぞれ指定されたファイル名及びメールアドレスである。
例えば、ファイル名入力欄2101に「test.pdf」、メールアドレス入力欄2102に「hoge@hogehoge.co.jp」が指定されたとする。この場合、ユーザ指定情報は、「mail_address=hoge@hogehoge.co.jp」と、「filename=test.pdf」とを含む情報である。
次に、認証サービス部120は、処理フローの実行要求を受信すると、当該実行要求に含まれるクライアントID及びクライアントシークレットに基づいて、アプリ認証を行う(ステップS904)。すなわち、認証サービス部120は、当該実行要求に含まれるクライアントID及びクライアントシークレットの組が、予め決められたクライアントID及びクライアントシークレットの組と一致するか否かを判定することで、アプリ認証を行う。
そして、認証サービス部120は、アプリ認証に成功した場合、処理フローの実行要求をロジック処理部112に送信する(ステップS905)。なお、処理フローの実行要求には、フローIDと、スキャン画像ファイルと、ユーザ指定情報と、アプリIDとが含まれる。
なお、認証サービス部120は、上記のステップS904でアプリ認証に失敗した場合、例えば、アプリ認証に失敗したことを示す通知をクライアントアプリケーション210に返信する。
クライアントアプリケーション210は、認証サービス部120との間の認証方式が「ユーザ認証」である場合、テナントIDと、ユーザIDと、パスワードとを含む処理フローの実行要求を認証サービス部120に送信する(ステップS906)。
なお、テナントIDは、例えば、クライアントアプリケーション210が搭載された機器20のユーザが属するグループや会社等の組織を識別する識別情報である。また、ユーザIDは、例えば、クライアントアプリケーション210が搭載された機器20のユーザを識別する識別情報である。すなわち、処理フローの実行要求には、認証情報として、テナントIDと、ユーザIDと、パスワードとが含まれている。
テナントID、ユーザID、及びパスワードは、例えば、図10に示すサービス利用画面2100において、ユーザにより入力されても良い。なお、処理フローの実行要求には、上記と同様に、フローID、スキャン画像ファイル、及びユーザ指定情報も含まれる。
次に、認証サービス部120は、処理フローの実行要求を受信すると、当該実行要求に含まれるテナントID、ユーザID、及びパスワードに基づいて、ユーザ認証を行う(ステップS907)。すなわち、認証サービス部120は、当該実行要求に含まれるテナントID、ユーザID、及びパスワードの組が、予め決められたテナントID、ユーザID、及びパスワードの組と一致するか否かを判定することで、ユーザ認証を行う。
そして、認証サービス部120は、ユーザ認証に成功した場合、処理フローの実行要求をロジック処理部112に送信する(ステップS908)。なお、処理フローの実行要求には、フローIDと、スキャン画像ファイルと、ユーザ指定情報と、ユーザIDとが含まれる。
なお、認証サービス部120は、上記のステップS907でユーザ認証に失敗した場合、例えば、ユーザ認証に失敗したことを示す通知をクライアントアプリケーション210に返信する。
クライアントアプリケーション210は、認証サービス部120との間の認証方式が「アクセストークン認証」である場合、アクセストークンを含む処理フローの実行要求を認証サービス部120に送信する(ステップS909)。
なお、アクセストークンは、例えば、OAuthによる認証に用いられるトークンである。すなわち、処理フローの実行要求には、認証情報として、アクセストークンが含まれている。なお、処理フローの実行要求には、上記と同様に、フローID、スキャン画像ファイル、及びユーザ指定情報も含まれる。
次に、認証サービス部120は、処理フローの実行要求を受信すると、当該実行要求に含まれるアクセストークンに基づいて、アクセストークン認証を行う(ステップS910)。すなわち、認証サービス部120は、当該実行要求に含まれるアクセストークンが正当であるか否かを判定することで、アクセストークン認証を行う。
そして、認証サービス部120は、アクセストークン認証に成功した場合、処理フローの実行要求をロジック処理部112に送信する(ステップS911)。なお、処理フローの実行要求には、フローID、スキャン画像ファイル、ユーザ指定情報、及びアクセストークンに関連付けられたユーザIDが含まれる。
なお、認証サービス部120は、上記のステップS910でアクセストークン認証に失敗した場合、例えば、アクセストークン認証に失敗したことを示す通知をクライアントアプリケーション210に返信する。
最後に、ロジック処理部112は、処理フローの実行処理を行う(ステップS9126)。すなわち、ロジック処理部112は、当該実行要求に含まれるフローIDの処理フロー情報1100に基づく一連の処理を実行する。
そして、ロジック処理部112は、処理フローの実行処理の処理結果をクライアントアプリケーション210に返信する。これにより、本実施形態に係るサービス提供システム10は、機器20に対して、「スキャン To メール配信」サービスを提供することができる。
ここで、クライアントアプリケーション210と認証サービス部120との間の認証方式が「アプリ認証」、「ユーザ認証」、又は「アクセストークン認証」のいずれであるかは、例えば、クライアントアプリケーション210毎に予め決められている。したがって、クライアントアプリケーション210は、例えば、認証方式の指定を含む処理フローの実行要求を認証サービス部120に送信する。ただし、例えば、図10に示すサービス利用画面2100において、いずれの認証方式を利用するかをユーザが選択することができても良い。
以上のように、本実施形態に係る情報処理システム1では、サービス提供システム10が機器20に対してサービスを提供する前に、種々の認証方式により機器20との間で認証を行う。すなわち、本実施形態に係る情報処理システム1では、機器20に搭載されたクライアントアプリケーション210が一連の処理を実行させる前に、当該クライアントアプリケーション210の認証を行う。これにより、本実施形態に係るサービス提供システム10は、正当な利用者(機器20に搭載されたクライアントアプリケーション210又は機器20のユーザ)に限り、サービスを提供することができる。
以降では、処理フローの実行処理(図9のステップS912の処理)の詳細について、図11を参照しながら説明する。図11は、本実施形態に係る処理フローの実行処理の一例を示すシーケンス図である。
フロー実行部301は、処理フローの実行要求を受信すると、ジョブ情報の登録要求をジョブ情報管理部401に送信する(ステップS1101)。ここで、クライアントアプリケーション210と認証サービス部120との間の認証方式が「アプリ認証」であった場合、ジョブ情報の登録要求には、アプリIDと、フローIDとが含まれる。一方、クライアントアプリケーション210と認証サービス部120との間の認証方式が「ユーザ認証」又は「アクセストークン認証」であった場合、ジョブ情報の登録要求には、ユーザIDと、フローIDとが含まれる。
ジョブ情報管理部401は、ジョブ情報の登録要求を受信すると、ジョブ情報を作成して、ジョブ情報記憶部150に記憶する(ステップS1102)。そして、ジョブ情報管理部401は、登録結果をフロー実行部301に返信する。これにより、ジョブ情報がサービス提供システム10に登録される。なお、ジョブ情報管理部401から返信される登録結果には、ジョブIDが含まれる。
ここで、ジョブ情報記憶部150に記憶されたジョブ情報について、図12を参照しながら説明する。図12は、ジョブ情報の一例を示す図である。
図12に示すように、ジョブ情報は、ジョブIDと、アプリ名と、フローIDと、作成日と、状態と、アプリIDと、ユーザIDとを有する。
ジョブIDは、ジョブを識別する識別情報である。アプリ名は、アプリIDに対応するアプリケーション(クライアントアプリケーション210又はアプリ情報1000)の名称である。フローIDは、ジョブ情報の登録要求に含まれるフローIDである。作成日は、ジョブ情報が作成された年月日である。
状態は、ジョブの状態である。状態には、例えば、ジョブが実行される前であることを示す「accepted」、ジョブが実行中であることを示す「processing」がある。また、状態には、例えば、ジョブの実行中にエラーが発生したことを示す「error」、ジョブの実行が正常終了したことを示す「completed」等がある。なお、ジョブ情報管理部401は、状態を「accepted」としてジョブ情報を作成する。
アプリIDは、ジョブ情報の登録要求に含まれていたアプリIDである。なお、ジョブ情報の登録要求にアプリIDが含まれない場合(すなわち、クライアントアプリケーション210と認証サービス部120との間の認証方式が「アプリ認証」であった場合)、アプリIDは、設定されない。
ユーザIDは、ジョブ情報の登録要求に含まれていたユーザIDである。なお、ジョブ情報の登録要求にユーザIDが含まれない場合(すなわち、クライアントアプリケーション210と認証サービス部120との間の認証方式が「ユーザ認証」又は「アクセストークン認証」であった場合)、ユーザIDは、設定されない。
このように、ジョブ情報管理部401は、ジョブID、アプリ名、フローID、作成日、状態、アプリID、及びユーザID等が含まれるジョブ情報を作成する。そして、ジョブ情報管理部401は、作成したジョブ情報をジョブ情報記憶部150に記憶させる。
次に、フロー実行部301は、処理フロー情報の取得要求をアプリ管理部111に送信する(ステップS1103)。なお、処理フロー情報の取得要求には、フローIDが含まれる。
アプリ管理部111は、処理フロー情報の取得要求を受信すると、当該取得要求に含まれるフローIDの処理フロー情報1100をアプリ情報記憶部140から取得する(ステップS1104)。そして、アプリ管理部111は、アプリ情報記憶部140から取得した処理フロー情報1100をフロー実行部301に返信する。ここで、以降では、アプリ管理部111は、図8に示す処理フロー情報1100をフロー実行部301に返信したものとして説明する。
次に、フロー実行部301は、アプリ管理部111から返信された処理フロー情報1100に基づいて、コンポーネントの取得要求をコンポーネント管理部302に送信する(ステップS1105)。すなわち、フロー実行部301は、図8に示す処理フロー情報1100の処理定義1102に定義されている「ocr:ocr_process」を含むコンポーネントの取得要求をコンポーネント管理部302に送信する。
コンポーネント管理部302は、コンポーネントの取得要求を受信すると、当該取得要求に含まれる「ocr:ocr_process」に対応するOCRコンポーネント1310を生成する(ステップS1106)。なお、OCRコンポーネント1310の生成は、コンポーネント共通I/F1300を用いて行うことができる。
そして、コンポーネント管理部302は、生成したOCRコンポーネント1310をフロー実行部301に返信する。すなわち、コンポーネント管理部302は、例えば、OCRコンポーネント1310が展開されたメモリ(例えばRAM14)上のアドレスをフロー実行部301に返信する。
フロー実行部301は、OCRコンポーネント1310が返信されると、コンポーネントの処理実行要求を、当該OCRコンポーネント1310に送信する(ステップS1107)。なお、コンポーネントの処理実行要求には、データと、パラメータとが含まれる。
ここで、ステップS1107において、データとは、データ型「InputStream」として、認証サービス部120から受信した電子ファイル(処理フローの実行要求に含まれるスキャン画像ファイル)である。すなわち、フロー実行部301は、処理フロー実行要求に含まれるスキャン画像ファイルを、単に「データ」として(データ型を意識することなく)、OCRコンポーネント1310に送信する。以降では、このようにデータ型を意識しない電子ファイル等を、単に「データ」と表す。
また、処理定義1102にはオプションパラメータが定義されていないため、ステップS1107において、パラメータには、nullが指定される。
OCRコンポーネント1310は、コンポーネントの処理実行要求を受信すると、型変換要求を型変換管理部304に送信する(ステップS1108)。なお、当該型変換要求には、データと、OCRコンポーネント1310が扱うことができるデータ型を示す「LocalFilePath」の指定とが含まれる。
型変換管理部304は、型変換要求を受信すると、当該型変換要求に含まれるデータのデータ型と、指定されたデータ型とが一致するか否かをチェックする(ステップS1109)。
ここで、型変換要求に含まれるデータのデータ型は「InputStream」である一方、指定されたデータ型は「LocalFilePath」である。したがって、型変換管理部304は、型変換要求に含まれるデータのデータ型と、指定されたデータ型とが一致しないものと判断する。
すると、型変換管理部304は、型変換情報テーブル3000を参照して、データ型「InputStream」を「LocalFilePath」に変換するための型変換を特定する(ここでは、第1の型変換1410が特定される。)。そして、型変換管理部304は、特定した第1の型変換1410を生成する(ステップS1110)。なお、第1の型変換1410の生成は、型変換共通I/F1400を用いて行うことができる。
次に、型変換管理部304は、型変換処理の実行要求を第1の型変換1410に送信する(ステップS1111)。なお、当該実行要求には、データが含まれる。
第1の型変換1410は、型変換の実行要求を受信すると、当該実行要求に含まれるデータのデータ型を「InputStream」から「LocalFilePath」に変換する型変換処理を行う(ステップS1112)。そして、第1の型変換1410は、データ型が変換されたデータを型変換管理部304に返信する。
型変換管理部304は、第1の型変換1410からデータを受信すると、当該データをOCRコンポーネント1310に送信する(ステップS1113)。
OCRコンポーネント1310は、型変換管理部304からデータを受信すると、当該データに対して処理を実行する(ステップS1114)。すなわち、OCRコンポーネント1310は、ドキュメントサービス部130のOCR処理部131により、当該データ(データ型「LocalFilePath」)により示されるスキャン画像ファイルのOCR処理を行う。
そして、OCRコンポーネント1310は、処理結果を示すデータをフロー実行部301に返信する。なお、ここで返信されるデータは、OCRコンポーネント1310によりOCR処理されたスキャン画像ファイルを示すデータ(データ型「LocalFilePath」)である。
次に、フロー実行部301は、処理フロー情報1100に基づいて、コンポーネントの取得要求をコンポーネント管理部302に送信する(ステップS1115)。すなわち、フロー実行部301は、図8に示す処理フロー情報1100の処理定義1103に定義されている「mail:send」を含むコンポーネントの取得要求をコンポーネント管理部302に送信する。
コンポーネント管理部302は、コンポーネントの取得要求を受信すると、当該取得要求に含まれる「mail:send」に対応するメール配信コンポーネント1320を生成する(ステップS1116)。なお、メール配信コンポーネント1320の生成は、コンポーネント共通I/F1300を用いて行うことができる。
そして、コンポーネント管理部302は、生成したメール配信コンポーネント1320をフロー実行部301に返信する。すなわち、コンポーネント管理部302は、例えば、メール配信コンポーネント1320が展開されたメモリ(例えばRAM14)上のアドレスをフロー実行部301に返信する。
フロー実行部301は、メール配信コンポーネント1320が返信されると、コンポーネントの処理実行要求を、当該メール配信コンポーネント1320に送信する(ステップS1117)。なお、コンポーネントの処理実行要求には、データと、パラメータとが含まれる。
ここで、ステップS1117において、パラメータには、処理定義1103のオプションパラメータ「mail_address=null&filename=null」と、ユーザ指定情報とが含まれる。
メール配信コンポーネント1320は、コンポーネントの処理実行要求を受信すると、型変換要求を型変換管理部304に送信する(ステップS1118)。なお、当該型変換要求には、データと、メール配信コンポーネント1320が扱うことができるデータ型を示す「LocalFilePath」の指定とが含まれる。
型変換管理部304は、型変換要求を受信すると、当該型変換要求に含まれるデータのデータ型と、指定されたデータ型とが一致するか否かをチェックする(ステップS1119)。
ここで、型変換要求に含まれるデータのデータ型は「LocalFilePath」であり、指定されたデータ型も「LocalFilePath」である。したがって、型変換管理部304は、型変換要求に含まれるデータのデータ型と、指定されたデータ型とが一致するものと判断する。
すると、型変換管理部304は、型変換要求に含まれるデータをメール配信コンポーネント1320に送信する(ステップS1120)。このように、データ型のチェック(ステップS1118の処理)において、データのデータ型と、指定されたデータ型とが一致すると判断された場合には、型変換管理部304は、型変換の生成を行わない。
メール配信コンポーネント1320は、型変換管理部304からデータを受信すると、パラメータに基づいて、当該データに対して処理を実行する(ステップS1121)。すなわち、メール配信コンポーネント1320は、ドキュメントサービス部130のメール配信部132により、当該データにより示される電子ファイルを、パラメータに基づいて、メール配信する。
より具体的には、メール配信コンポーネント1320は、まず、パラメータに含まれるオプションパラメータにユーザ指定情報を定義して「mail_address=hoge@hogehoge.co.jp&filename=test.pdf」とする。次に、メール配信コンポーネント1320は、メール配信部132により、当該データにより示される電子ファイル(すなわち、OCR処理後のスキャン画像ファイル)のファイル名を「test.pdf」とした電子ファイルを添付したメールを作成する。最後に、メール配信コンポーネント1320は、メール配信部132により、作成したメールを「hoge@hogehoge.co.jp」宛に配信(送信)する。
そして、メール配信コンポーネント1320は、処理結果を示すデータをフロー実行部301に返信する。なお、ここで返信されるデータは、例えば、メール配信コンポーネント1320により正常にメールが配信されたことを示す情報等である。
フロー実行部201は、メール配信コンポーネント1320からデータを受信すると、ジョブ情報の更新要求をジョブ情報管理部401に送信する(ステップS1122)。なお、ジョブ情報の更新要求には、上記のステップS1102で返信されたジョブIDが含まれる。
ジョブ情報管理部401は、ジョブ情報の更新要求を受信すると、ジョブ情報記憶部150に記憶されているジョブ情報のうち、当該更新要求に含まれるジョブIDのジョブ情報を更新する(ステップS1123)。すなわち、ジョブ情報管理部401は、当該ジョブIDのジョブ情報に含まれる状態を、「completed」に更新する。これにより、ジョブの実行が正常終了したことが管理される。
以上のように、本実施形態に係るサービス提供システム10は、処理フロー情報1100に基づいて、各コンポーネントによる処理をそれぞれ行うことで、一連の処理(処理フロー)を実行する。これにより、本実施形態に係るサービス提供システム10は、当該一連の処理により実現されるサービスを提供することができる。
なお、例えば、一連の処理の実行中にエラー等が発生した場合、フロー実行部301は、ジョブ情報の更新要求をジョブ情報管理部401に送信して、ジョブ情報の状態を「error」に更新する。
以降では、クライアントアプリケーション210がジョブ情報を参照する場合について説明する。クライアントアプリケーション210は、ジョブ情報を参照することで、例えば、エラー原因の解析等を行うことができるようになる。
まず、ジョブ情報の参照が可能なアプリケーション(他のクライアントアプリケーションやアプリ情報1000)を登録する処理について、図13を参照しながら説明する。図13は、参照可能アプリケーションの登録処理の一例を示すシーケンス図である。
まず、クライアントアプリケーション210は、参照可能アプリケーションの登録要求を認証サービス部120に送信する(ステップS1301)。このような登録要求は、例えば、ユーザが参照可能アプリケーションの登録操作を行うことにより送信することができる。
なお、参照可能アプリケーションの登録要求には、クライアントアプリケーション210のアプリIDと、ジョブ情報を参照することが可能なアプリケーションのアプリID(参照可能アプリID)と、テナントIDと、ユーザIDと、パスワードとが含まれる。
認証サービス部120は、参照可能アプリケーションの登録要求を受信すると、当該登録要求に含まれるテナントID、ユーザID、及びパスワードに基づいて、ユーザ認証を行う(ステップS1302)。すなわち、認証サービス部120は、当該登録要求に含まれるテナントID、ユーザID、及びパスワードの組が、予め決められたテナントID、ユーザID、及びパスワードの組と一致するか否かを判定することで、ユーザ認証を行う。
そして、認証サービス部120は、ユーザ認証に成功した場合、参照可能アプリケーションの登録要求をアプリ管理部111に送信する(ステップS1303)。なお、参照可能アプリケーションの登録要求には、クライアントアプリケーション210のアプリIDと、参照可能アプリIDとが含まれる。
アプリ管理部111は、参照可能アプリケーションの登録要求を受信すると、当該登録要求に含まれるアプリIDと参照可能IDとを関連付けた参照情報を作成し、参照情報記憶部160に記憶する(ステップS1304)。そして、アプリ管理部111は、登録結果をクライアントアプリケーション210に返信する。これにより、参照情報がサービス提供システム10に登録される。
ここで、参照情報記憶部160に記憶された参照情報について、図14を参照しながら説明する。図14は、参照情報の一例を示す図である。
図14に示すように、参照情報は、アプリIDと、参照可能アプリIDとを有する。アプリIDは、ジョブ情報の参照を行うアプリケーション(クライアントアプリケーション210又はアプリ情報1000)のアプリIDである。参照可能アプリIDは、ジョブ情報を参照することが可能な他のアプリケーション(クライアントアプリケーション210又はアプリ情報1000)のアプリIDである。
このように、参照情報記憶部160に記憶されている参照情報には、アプリIDと、当該アプリIDのアプリケーションがジョブ情報を参照することができる他のアプリケーションのアプリIDとが関連付けられている。これにより、後述するように、クライアントアプリケーション210が、他のクライアントアプリケーション210又はアプリ情報1000のジョブ情報を参照する場合のアクセス制御を行うことができる。
次に、クライアントアプリケーション210やアプリ情報1000等がジョブ情報を参照する場合の処理について、説明する。まず、認証サービス部120との間の認証方式が「アプリ認証」であるクライアントアプリケーション210がジョブ情報を参照する場合の処理について、図15を参照しながら説明する。図15は、ジョブ情報の参照処理の一例を示すシーケンス図である。
まず、クライアントアプリケーション210は、ジョブ情報の参照要求を認証サービス部120に送信する(ステップS1501)。このような参照要求は、例えば図16に示すジョブ情報の参照画面3100において、ユーザがジョブID入力欄3101にジョブIDを入力した上で、参照ボタン3102を押下することにより行うことができる。
なお、ジョブ情報の参照要求には、ジョブID入力欄3101に入力されたジョブIDと、クライアントシークレットとが含まれる。
認証サービス部120は、ジョブ情報の参照要求を受信すると、当該参照要求に含まれるクライアントID及びクライアントシークレットに基づいて、アプリ認証を行う(ステップS1502)。すなわち、認証サービス部120は、当該参照要求に含まれるクライアントID及びクライアントシークレットの組が、予め決められたクライアントID及びクライアントシークレットの組と一致するか否かを判定することで、アプリ認証を行う。
そして、認証サービス部120は、アプリ認証に成功した場合、ジョブ情報の参照要求をアクセス制御部402に送信する(ステップS1503)。なお、ジョブ情報の参照要求には、ジョブIDと、アプリIDとが含まれる。
なお、認証サービス部120は、上記のステップS1502でアプリ認証に失敗した場合、例えば、アプリ認証に失敗したことを示す通知をクライアントアプリケーション210に返信する。
アクセス制御部402は、ジョブ情報の参照要求を受信すると、ジョブ情報の取得要求をジョブ情報管理部401に送信する(ステップS1504)。なお、ジョブ情報の取得要求には、ジョブIDが含まれる。
ジョブ情報管理部401は、ジョブ情報の取得要求を受信すると、当該取得要求に含まれるジョブIDのジョブ情報をジョブ情報記憶部150から取得する(ステップS1505)。例えば、ジョブ情報の取得要求に含まれるジョブIDが「ジョブ4」である場合、ジョブ情報管理部401は、ジョブID「ジョブ4」のジョブ情報をジョブ情報記憶部150から取得する。なお、ジョブ情報の取得要求に複数のジョブIDが含まれる場合、ジョブ情報管理部401は、複数のジョブ情報をジョブ情報記憶部150から取得する。
そして、ジョブ情報管理部401は、取得したジョブ情報をアクセス制御部402に返信する。
次に、アクセス制御部402は、アクセス権のチェックを行う(ステップS1506)。すなわち、アクセス制御部402は、ジョブ情報の参照要求に含まれるアプリIDと、上記のステップS1502で取得されたジョブ情報に含まれるアプリIDとが一致するか否かを判定する。
そして、アクセス制御部402は、ジョブ情報の参照要求に含まれるアプリIDと、上記のステップS1502で取得されたジョブ情報に含まれるアプリIDとが一致すると判定した場合、ジョブ情報をクライアントアプリケーション210に返信する。
一方、アクセス制御部402は、これらのアプリIDが一致しないと判定した場合、参照可能アプリIDの取得要求をアプリ管理部111に送信する(ステップS1508)。なお、参照可能アプリIDの取得要求には、ジョブ情報の参照要求に含まれるアプリIDが含まれる。
なお、上記のステップS1502で複数のジョブ情報が取得された場合、これらのジョブ情報のうち、上記のステップS1506でアプリIDが一致しないと判定されたジョブ情報について、ステップS1508以降の処理を行えば良い。
次に、アプリ管理部111は、参照可能アプリIDの取得要求を受信すると、当該取得要求に含まれるアプリIDの参照情報を取得する(ステップS1508)。そして、アプリ管理部111は、取得した参照情報に含まれる参照可能アプリIDをアクセス制御部402に返信する。
次に、アクセス制御部402は、アクセス権のチェックを行う(ステップS1509)。すなわち、アクセス制御部402は、上記のステップS1502で取得されたジョブ情報含まれるアプリIDと、参照可能アプリIDのうちの少なくとも一の参照可能アプリIDとが一致するか否かを判定する。
そして、アクセス制御部402は、当該アプリIDと、参照可能アプリIDのうちの少なくとも一の参照可能アプリIDとが一致すると判定した場合、ジョブ情報をクライアントアプリケーション210に返信する。
一方、アクセス制御部402は、当該アプリIDと、全ての参照可能アプリIDとが一致しないと判定した場合、ジョブ情報の参照が許可されていないことを示す通知をクライアントアプリケーション210に返信する。したがって、この場合、クライアントアプリケーション210は、ジョブ情報を参照することができない。
クライアントアプリケーション210は、アクセス制御部402からジョブ情報が返信された場合、例えば図16に示すジョブ情報の参照画面3100のジョブ情報欄3103にジョブ情報を表示する(ステップS1510)。これにより、クライアントアプリケーション210は、当該クライアントアプリケーション210のアプリIDが含まれるジョブ情報と、参照可能アプリIDが含まれるジョブ情報とを表示することができる。したがって、機器20のユーザは、クライアントアプリケーション210により表示されたジョブ情報を参照することで、例えば、エラーが発生したジョブのエラー原因解析等を行うことができるようになる。
このように、本実施形態に係る情報処理システム1では、機器20に搭載されたクライアントアプリケーション210がジョブ情報を参照する際に、当該ジョブ情報を参照する権限があるか否かを判定する。これにより、本実施形態に係る情報処理システム1では、サービス提供システム10は、参照権限があるジョブ情報に限り、クライアントアプリケーション210に表示させることができる。
次に、認証サービス部120との間の認証方式が「ユーザ認証」であるクライアントアプリケーション210がジョブ情報を参照する場合の処理について、図17を参照しながら説明する。図17は、ジョブ情報の参照処理の他の例(その1)を示すシーケンス図である。
まず、クライアントアプリケーション210は、ジョブ情報の参照要求を認証サービス部120に送信する(ステップS1701)。なお、ジョブ情報の参照要求には、ジョブIDと、テナントIDと、ユーザIDと、パスワードとが含まれる。テナントID、ユーザID、及びパスワードは、例えば図16に示すジョブ情報の参照画面3100において、ユーザにより入力等されても良い。
認証サービス部120は、ジョブ情報の参照要求を受信すると、当該参照要求に含まれるテナントID、ユーザID、及びパスワードに基づいて、ユーザ認証を行う(ステップS1702)。すなわち、認証サービス部120は、当該参照要求に含まれるテナントID、ユーザID、及びパスワードの組が、予め決められたテナントID、ユーザID、及びパスワードの組と一致するか否かを判定することで、ユーザ認証を行う。
そして、認証サービス部120は、ユーザ認証に成功した場合、ジョブ情報の参照要求をアクセス制御部402に送信する(ステップS1703)。なお、ジョブ情報の参照要求には、ジョブIDと、ユーザIDとが含まれる。
なお、認証サービス部120は、上記のステップS1702でユーザ認証に失敗した場合、例えば、ユーザ認証に失敗したことを示す通知をクライアントアプリケーション210に返信する。
アクセス制御部402は、ジョブ情報の参照要求を受信すると、ジョブ情報の取得要求をジョブ情報管理部401に送信する(ステップS1704)。なお、ジョブ情報の取得要求には、ジョブIDが含まれる。
ジョブ情報管理部401は、ジョブ情報の取得要求を受信すると、当該取得要求に含まれるジョブIDのジョブ情報をジョブ情報記憶部150から取得する(ステップS1705)。そして、ジョブ情報管理部401は、取得したジョブ情報をアクセス制御部402に返信する。
次に、アクセス制御部402は、アクセス権のチェックを行う(ステップS1706)。すなわち、アクセス制御部402は、ジョブ情報の参照要求に含まれるユーザIDと、上記のステップS1702で取得されたジョブ情報に含まれるユーザIDとが一致するか否かを判定する。
そして、アクセス制御部402は、ジョブ情報の参照要求に含まれるユーザIDと、上記のステップS1702で取得されたジョブ情報に含まれるユーザIDとが一致すると判定した場合、ジョブ情報をクライアントアプリケーション210に返信する。
一方、アクセス制御部402は、これらのユーザIDが一致しないと判定した場合、ジョブ情報の参照が許可されていないことを示す通知をクライアントアプリケーション210に返信する。したがって、この場合、クライアントアプリケーション210は、ジョブ情報を参照することができない。
クライアントアプリケーション210は、アクセス制御部402からジョブ情報が返信された場合、ジョブ情報を表示する(ステップS1707)。これにより、クライアントアプリケーション210は、機器20のユーザのユーザIDが含まれるジョブ情報を表示することができる。
なお、図17では、クライアントアプリケーション210と認証サービス部120との間の認証方式が「ユーザ認証」である場合について説明したが、ステップS1703以降は、当該認証方式が「アクセストークン認証」である場合も同様に適用することができる。なお、この場合、ステップS1701のジョブ情報の参照要求には、ジョブIDと、アクセストークンとが含まれる点、及びステップS1702でアクセストークン認証を行う点が図17と異なる。
ここで、図12に示すように、ジョブ情報記憶部150に記憶されているジョブ情報には、ユーザIDが含まれているが、ユーザIDに代えて(又はユーザIDに加えて)、テナントIDが含まれていても良い。すなわち、例えば、図18に示すように、ジョブ情報記憶部150に記憶されているジョブ情報には、ユーザIDに代えて、テナントIDが含まれていても良い。
この場合において、認証サービス部120との間の認証方式が「ユーザ認証」であるクライアントアプリケーション210がジョブ情報を参照する場合の処理について、図19を参照しながら説明する。図19は、ジョブ情報の参照処理の他の例(その2)を示すシーケンス図である。
まず、クライアントアプリケーション210は、ジョブ情報の参照要求を認証サービス部120に送信する(ステップS1901)。なお、ジョブ情報の参照要求には、ジョブIDと、テナントIDと、ユーザIDと、パスワードとが含まれる。テナントID、ユーザID、及びパスワードは、例えば図16に示すジョブ情報の参照画面3100において、ユーザにより入力等されても良い。
認証サービス部120は、ジョブ情報の参照要求を受信すると、当該参照要求に含まれるテナントID、ユーザID、及びパスワードに基づいて、ユーザ認証を行う(ステップS1902)。すなわち、認証サービス部120は、当該参照要求に含まれるテナントID、ユーザID、及びパスワードの組が、予め決められたテナントID、ユーザID、及びパスワードの組と一致するか否かを判定することで、ユーザ認証を行う。
そして、認証サービス部120は、ユーザ認証に成功した場合、ジョブ情報の参照要求をアクセス制御部402に送信する(ステップS1903)。なお、ジョブ情報の参照要求には、ジョブIDと、テナントIDとが含まれる。
なお、認証サービス部120は、上記のステップS1702でユーザ認証に失敗した場合、例えば、ユーザ認証に失敗したことを示す通知をクライアントアプリケーション210に返信する。
アクセス制御部402は、ジョブ情報の参照要求を受信すると、ジョブ情報の取得要求をジョブ情報管理部401に送信する(ステップS1904)。なお、ジョブ情報の取得要求には、ジョブIDが含まれる。
ジョブ情報管理部401は、ジョブ情報の取得要求を受信すると、当該取得要求に含まれるジョブIDのジョブ情報をジョブ情報記憶部150から取得する(ステップS1905)。そして、ジョブ情報管理部401は、取得したジョブ情報をアクセス制御部402に返信する。
次に、アクセス制御部402は、アクセス権のチェックを行う(ステップS1906)。すなわち、アクセス制御部402は、ジョブ情報の参照要求に含まれるテナントIDと、上記のステップS1902で取得されたジョブ情報に含まれるテナントIDとが一致するか否かを判定する。
そして、アクセス制御部402は、ジョブ情報の参照要求に含まれるテナントIDと、上記のステップS1902で取得されたジョブ情報に含まれるテナントIDとが一致すると判定した場合、ジョブ情報をクライアントアプリケーション210に返信する。
一方、アクセス制御部402は、これらのテナントIDが一致しないと判定した場合、ジョブ情報の参照が許可されていないことを示す通知をクライアントアプリケーション210に返信する。したがって、この場合、クライアントアプリケーション210は、ジョブ情報を参照することができない。
クライアントアプリケーション210は、アクセス制御部402からジョブ情報が返信された場合、ジョブ情報を表示する(ステップS1907)。これにより、クライアントアプリケーション210は、機器20のユーザのテナントIDが含まれるジョブ情報を表示することができる。
<まとめ>
以上のように、本実施形態に係る情報処理システム1は、クライアントアプリケーション210が、サービスを実現する一連の処理を実行させる際に、当該クライアントアプリケーション210の認証を行う。しかも、本実施形態に係る情報処理システム1では、クライアントアプリケーション210に応じて、様々な認証方式により認証を行うことができる。
したがって、本実施形態に係る情報処理システム1では、正当なユーザ(クライアントアプリケーション210や機器20のユーザ)に限り、サービス提供システム10が提供するサービスを利用させるようにすることができる。
また、本実施形態に係る情報処理システム1では、クライアントアプリケーション210等が、他のアプリケーション(他のクライアントアプリケーション210やアプリ情報1000等)により実行された一連の処理のジョブ情報を参照することができる。しかも、本実施形態に係る情報処理システム1では、クライアントアプリケーション210等がジョブ情報を参照するための権限を有しているか否かを判定することで、アクセス制御を行う。これにより、本実施形態に係る情報処理システム1では、正当なユーザ(クライアントアプリケーション210やアプリ情報1000等)に限り、ジョブ情報の参照を許可することができる。
本発明は、具体的に開示された上記の実施形態に限定されるものではなく、特許請求の範囲から逸脱することなく、種々の変形や変更が可能である。