以下、本発明の実施の形態について、図面を参照しながら詳細に説明する。
<システム構成>
まず、本実施形態に係る情報処理システム1の構成について、図1を参照しながら説明する。図1は、本実施形態に係る情報処理システムの一例のシステム構成を示す図である。
本実施形態に係る情報処理システム1は、サービス提供環境E1と、ユーザ環境E2と、外部ストレージシステム30とを含み、インターネット等の広域的なネットワークN1を介して通信可能に接続されている。
サービス提供環境E1は、ネットワークを介して、クラウドサービス等の外部サービスと連携した所定のサービスを提供するシステム環境である。なお、本実施形態では、外部サービスの具体例としてクラウドサービスを採用して説明するが、ASP(Application Service Provider)によって提供されるサービスやWebサービス等、ネットワークを介して提供される各種のサービスに関して本実施形態が適用されても良い。
サービス提供環境E1は、一台以上の情報処理装置で実現されるサービス提供システム10を有する。サービス提供システム10は、ネットワークを介して所定のサービスを提供する。例えば、サービス提供システム10は、ユーザ環境E2の画像形成装置20において原稿をスキャンして生成された電子ファイルを、OCR処理して、外部ストレージシステム30に保存するサービス(スキャン配信サービス)を提供する。
本実施形態に係るサービス提供システム10は、上述したスキャン配信サービスを提供するものとして説明する。
ただし、サービス提供システム10により提供されるサービスは、これに限られない。例えば、サービス提供システム10は、外部ストレージシステム30に保存されている電子ファイルを、ユーザ環境E2の画像形成装置20で印刷するサービス(クラウドプリントサービス)を提供しても良い。また、例えば、サービス提供システム10は、外部ストレージシステム30に保存されている電子ファイルを、ユーザ環境E2のプロジェクタで投影するサービスを提供しても良い。さらに、例えば、サービス提供システム10は、画像形成装置20において原稿をスキャンして生成された電子ファイルを、OCR処理した後、所定の言語に翻訳(例えば、英語を日本語に翻訳)して、外部ストレージシステム30に保存するサービスを提供しても良い。
このように、サービス提供システム10は、外部ストレージシステム30と連携した各種のサービスを提供することができる。
なお、サービス提供システム10の全部又は一部は、ユーザ環境E2に設置されていても良い。すなわち、サービス提供システム10を構成する情報処理装置の全部又は一部は、ユーザ環境E2に包含されていても良い。
ユーザ環境E2は、例えば、画像形成装置20を使用するユーザである企業等におけるシステム環境である。ユーザ環境E2は、一台以上の画像形成装置20が、例えばLAN(Local Area Network)等のネットワークを介して接続されている。ユーザは、画像形成装置20を用いて、サービス提供システム10により提供される各種のサービスを利用することができる。
本実施形態に係る画像形成装置20は、スキャン機能を有するMFP(Multifunction Peripheral)等である。なお、画像形成装置20は、スキャン機能以外に、例えば、プリント機能やコピー機能、ファクシミリ(FAX)通信機能等を有していても良い。
なお、以降では、複数の外部ストレージシステム30について、各々を区別するときは、「外部ストレージシステム301」、「外部ストレージシステム302」等と添え字を用いて記載する。また、外部ストレージシステム301によって提供されるストレージサービスの名称を「外部ストレージA」、外部ストレージシステム302によって提供されるストレージサービスの名称を「外部ストレージB」等とする。
外部ストレージシステム30は、ネットワークを介してストレージサービス(又はオンラインストレージ)と呼ばれるクラウドサービスを提供するコンピュータシステムである。ストレージサービスとは、外部ストレージシステム30のストレージの記憶領域を貸し出すサービスである。
本実施形態に係るサービス提供システム10により提供されるスキャン配信サービスでは、外部ストレージシステム30によって貸し出される記憶領域に、OCR処理された電子ファイルが保存(アップロード)される。
なお、外部ストレージシステム30は、複数台の情報処理装置によって実現されるシステムであっても良い。また、図1に示される情報処理システム1の構成は一例であって、他の構成であっても良い。例えば、ユーザ環境E2には、画像形成装置20に加えて又は画像形成装置20に代えて、プロジェクタ、電子黒板、デジタルカメラ等の各種機器が含まれていても良い。すなわち、本実施形態に係る情報処理システム1のユーザ環境E2には、電子ファイルの入力及び/又は出力を行う各種機器が含まれ、これらの機器がサービス提供システム10により提供される各種のサービスを利用しても良い。
<ハードウェア構成>
次に、本実施形態に係る情報処理システム1に含まれるサービス提供システム10及び画像形成装置20のハードウェア構成について、それぞれ図2及び図3を参照しながら説明する。
図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による処理結果を表示する。なお、サービス提供システム10は、必要なときに入力装置11及び/又は表示装置12をバスBに接続して利用する形態であっても良い。
通信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は、上記のハードウェア構成を有することにより、後述するような各種処理を実現できる。
図3は、本実施形態に係る画像形成装置の一例のハードウェア構成を示す図である。本実施形態に係る画像形成装置20は、コントローラ21と、操作パネル22と、外部I/F23と、通信I/F24と、スキャナ25とを有する。また、コントローラ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をネットワークN1に接続するインタフェースである。これにより、画像形成装置20は、通信I/F24を介してデータ通信を行うことができる。スキャナ25は、原稿を読み取って画像ファイル(電子ファイル)を生成するための読取装置である。
本実施形態に係る画像形成装置20は、上記のハードウェア構成を有することにより、後述するような各種処理を実現できる。
<機能構成>
次に、本実施形態に係る情報処理システム1の機能構成について、図4を参照しながら説明する。図4は、本実施形態に係る情報処理システムの一例の機能構成を示す図である。
画像形成装置20は、UI制御部210と、スキャン処理部220とを有する。これら各機能部は、画像形成装置20にインストールされた1以上のプログラムが、CPU31に実行させる処理により実現される。
UI制御部210は、操作パネル22に各種画面を表示させる。また、UI制御部210は、操作パネル22に表示された各種画面におけるユーザの各種操作を受け付ける。
スキャン処理部220は、UI制御部210により受け付けられたユーザの操作に応じて、スキャナ25で原稿をスキャンして電子ファイル(画像ファイル)を生成する。
ここで、本実施形態に係るスキャン処理部220は、複数のページで構成される原稿をスキャナ25でスキャンした場合、複数のページを含む電子ファイルを生成する。
サービス提供システム10は、サービス処理部110と、ドキュメントサービス部150と、外部ストレージ連携部160とを有する。これら各機能部は、サービス提供システム10にインストールされた1以上のプログラムが、CPU16に実行させる処理により実現される。
また、サービス提供システム10は、アプリ情報記憶部190を有する。当該記憶部は、HDD18を用いて実現可能である。なお、アプリ情報記憶部190は、サービス提供システム10とネットワークを介して接続される記憶装置等を用いて実現されても良い。
サービス処理部110は、画像形成装置20のUI制御部210からの要求に応じて、後述するアプリ情報1000により提供される各種のサービスに関する処理を行う。ここで、サービス処理部110は、アプリ管理部120と、ロジック処理部130と、データI/F部140とを有する。
アプリ管理部120は、アプリ情報記憶部190に記憶されているアプリ情報1000を管理する。なお、アプリ情報1000とは、外部ストレージシステム30と連携した各種のサービスを提供するアプリケーションである。すなわち、サービス提供システム10により提供される各種のサービスは、アプリ情報1000により提供される。
また、アプリ管理部120は、画像形成装置20のUI制御部210からの要求に応じて、アプリ情報1000に基づく各種の情報を返信する。
すなわち、アプリ管理部120は、画像形成装置20のUI制御部210からの要求に応じて、アプリ情報1000に含まれる画面定義情報1100を返信する。なお、画面定義情報1100とは、アプリ情報1000により提供されるサービス(例えば、スキャン配信サービス等)を利用するための画面であるサービス画面を表示させるための情報である。
また、アプリ管理部120は、ロジック処理部130からの要求に応じて、アプリ情報1000に含まれる処理フロー情報1200を返信する。なお、処理フロー情報1200とは、アプリ情報1000により提供されるサービス(例えば、スキャン配信サービス等)を実現する一連の処理に関する情報である。
ロジック処理部130は、画像形成装置20のUI制御部210からの要求に応じて、アプリ管理部120を介して、アプリ情報1000に含まれる処理フロー情報1200を取得する。そして、ロジック処理部130は、処理フロー情報1200に基づいて、ドキュメントサービス部150や外部ストレージ連携部160のファイル処理部170等に処理の実行を要求することで、当該処理フロー情報1200に基づく一連の処理(処理フロー)を実行する。
なお、ロジック処理部130は、後述するコンポーネントを組み合わせることにより、処理フロー情報1200に基づく一連の処理(処理フロー)を実行する。
データI/F部140は、画像形成装置20のUI制御部210からの要求に応じて、外部ストレージ連携部160のデータ処理部180に対して、各種の要求(例えば、フォルダ一覧の取得要求等)を行う。
ドキュメントサービス部150は、各種の処理を実行するプログラム(モジュール)群である。これらのプログラムは、ロジック処理部130からの要求に応じて、後述するコンポーネントにより実行される。
ドキュメントサービス部150には、電子ファイルに対してOCR処理を実行するOCR処理151が含まれる。
なお、ドキュメントサービス部150には、これ以外にも、各種のプログラムが含まれても良い。例えば、ドキュメントサービス部150には、電子ファイルを画像形成装置20が印刷可能な印刷データに変換する印刷変換プログラム、電子ファイルを圧縮又は解凍するための圧縮・解凍プログラム、言語の翻訳を行う翻訳プログラム等が含まれても良い。
外部ストレージ連携部160は、ロジック処理部130やデータI/F部140からの要求に応じて、外部ストレージシステム30に対して、各種の要求(例えば、フォルダ一覧の取得要求やファイルの保存要求等)を行う。
本実施形態に係るサービス提供システム10は、当該サービス提供システム10と連携して処理を行う外部ストレージシステム30毎に、それぞれ外部ストレージシステム30と対応する外部ストレージ連携部160を有する。
すなわち、本実施形態に係るサービス提供システム10は、外部ストレージシステム301と連携するための外部ストレージ連携部1601を有する。同様に、本実施形態に係るサービス提供システム10は、外部ストレージシステム302と連携するための外部ストレージ連携部1602等を有する。
なお、以降では、複数の外部ストレージ連携部160について、各々を区別するときは、上記のように「外部ストレージ連携部1601」、「外部ストレージ連携部1602」等と添え字を用いて表す。
ここで、外部ストレージ連携部160は、ロジック処理部130からの要求を受け付けるファイル処理部170と、データI/F部140からの要求を受け付けるデータ処理部180とを有する。
ファイル処理部170は、外部ストレージシステム30に対して、ファイル操作(例えば、取得、保存、編集等)を行うためのAPI(Application Programming Interface)が定義された共通I/F171及び固有I/F172を有する。
共通I/F171は、複数の外部ストレージシステム30間で共通に利用できるAPIであり、例えば図5(a)に示すAPIが挙げられる。すなわち、ファイル処理部170の共通I/F171は、全ての外部ストレージシステム30が提供しているファイル操作に関する機能(例えば、ファイルの取得、保存等)を利用するためのAPI群である。
固有I/F172は、特定の外部ストレージシステム30で利用できるAPIであり、例えば図5(b)に示すAPIが挙げられる。すなわち、ファイル処理部170の固有I/F172は、特定の外部ストレージシステム30が提供しているファイル操作に関する機能(例えば、ドキュメントにファイルを付加等)を利用するためのAPI群である。
したがって、共通I/F171は、全ての外部ストレージ連携部160に対して同様に定義される。一方で、固有I/F172は、当該固有I/F172で定義されるAPIが利用可能な特定の外部ストレージシステム30に対応する外部ストレージ連携部160に対して定義される。
データ処理部180は、外部ストレージシステム30に対して、ファイルの書誌情報等のメタデータ(例えば、ファイル一覧やフォルダ一覧等)を取得するためのAPIが定義された共通I/F181及び固有I/F182を有する。
共通I/F181は、複数の外部ストレージシステム30間で共通に利用できるAPIであり、例えば図5(c)に示すAPIが挙げられる。すなわち、データ処理部180の共通I/F181は、全ての外部ストレージシステム30が提供しているメタデータ取得に関する機能(例えば、ファイル一覧の取得、フォルダ一覧の取得等)を利用するためのAPI群である。
固有I/F182は、特定の外部ストレージシステム30で利用できるAPIであり、例えば図5(d)に示すAPIが挙げられる。すなわち、データ処理部180の固有I/F182は、特定の外部ストレージシステム30が提供しているメタデータ取得に関する機能(例えば、画像ファイル一覧の取得等)を利用するためのAPI群である。
したがって、共通I/F181は、全ての外部ストレージ連携部160に対して同様に定義される。一方で、固有I/F182は、当該固有I/F182で定義されるAPIが利用可能な特定の外部ストレージシステム30に対応する外部ストレージ連携部160に対して定義される。
以上のように、本実施形態に係るサービス提供システム10は、連携して処理を行う外部ストレージシステム30毎に、それぞれの外部ストレージシステム30に対応する外部ストレージ連携部160を有する。このため、連携先となる外部ストレージシステム30を追加や削除(以降、「追加等」と表す。)する場合、当該追加等される外部ストレージシステム30に対応する外部ストレージ連携部160をサービス提供システム10に追加等すれば良い。
これにより、本実施形態に係るサービス提供システム10では、連携先となる外部ストレージシステム30の追加等に伴う影響を局所化することができる。換言すれば、本実施形態に係るサービス提供システム10では、他の機能部(サービス処理部110やドキュメントサービス部150等)に影響を与えることなく、連携先となる外部ストレージシステム30の追加等を行うことができる。なお、外部ストレージ連携部160の追加等は、SDK(Software Development Kit)を用いて行うことができる。
また、外部ストレージ連携部160のファイル処理部170は、共通I/F171と固有I/F172とを異なるモジュール等で定義している。また、共通I/F171及び固有I/F172で定義されるAPIは、外部ストレージシステム30を一意に識別する「外部ストレージ名」を指定することで利用できる(すなわち、「外部ストレージ名」が可変部分となっている。)。
これにより、外部ストレージ連携部160を追加する場合、他の外部ストレージ連携部160のファイル処理部170に定義されている共通I/F171を再利用することができる。換言すれば、外部ストレージ連携部160を追加する場合、当該追加する外部ストレージ連携部160のファイル処理部170は、固有I/F172のみを開発すれば良い。このことは、データ処理部180の共通I/F181及び固有I/F182についても同様である。
アプリ情報記憶部190は、外部ストレージシステム30と連携した各種のサービスを提供するアプリケーションであるアプリ情報1000を記憶する。アプリ情報1000には、画像形成装置20にサービス画面の表示させるための画面定義情報1100と、サービスを実現する一連の処理に関する情報である処理フロー情報1200とが含まれる。
また、アプリ情報1000には、当該アプリ情報1000を一意に識別するアプリIDが関連付けられている。
ここで、本実施形態に係るスキャン配信サービスを提供するアプリ情報1000に含まれる処理フロー情報1200について、図6を参照しながら説明する。図6は、処理フロー情報の一例を示す図である。
図6に示す処理フロー情報1200は、画像形成装置20でスキャンして生成された電子ファイルをOCR処理した後、外部ストレージAに配信するスキャン配信サービス(スキャン配信1)を実現する一連の処理に関する情報である。
図6に示す処理フロー情報1200には、処理フロー情報1200を一意に識別するフローID1201と、処理フロー情報1200の名称を示すフロー名1202と、処理フロー情報1200に基づく一連の処理の処理内容を示すフロー詳細1203とが含まれる。
また、フロー詳細1203には、OCR処理に関する処理内容を示す処理内容1204と、外部ストレージAへの配信(アップロード)処理に関する処理内容を示す処理内容1205とが含まれる。
処理内容1204には、OCR処理を行うためのコンポーネントのコンポーネント名「OCR」と、当該OCR処理におけるパラメータ「language」及び「outputType」とが指定されている。また、処理内容1205には、外部ストレージAへの配信処理を行うためのコンポーネントのコンポーネント名「配信A」と、当該配信処理におけるパラメータ「folderID」とが指定されている。
これにより、処理フロー情報1200に基づく一連の処理では、画像形成装置20でスキャンして生成された電子ファイルをOCR処理した後、当該OCR処理後の電子ファイルを外部ストレージAに配信することができる。
ここで、ロジック処理部130の詳細な機能構成について、図7を参照しながら説明する。図7は、本実施形態に係るロジック処理部の一例の機能構成を示す図である。
ロジック処理部130は、フロー実行部131と、コンポーネント管理部132と、コンポーネント群133と、型変換管理部134と、型変換群135とを有する。
また、ロジック処理部130は、ジョブ管理情報テーブル2000と、コンポーネント情報テーブル3000と、結果情報テーブル4000と、型変換情報テーブル5000とを利用する。
フロー実行部131は、画像形成装置20のUI制御部210からの処理フローの実行要求に応じて、当該実行要求を識別するジョブIDを生成する。そして、フロー実行部131は、生成したジョブIDと、アプリID及びフローIDと関連付けたジョブ管理情報を生成し、当該ジョブ管理情報をジョブ管理情報テーブル2000に格納する。なお、ジョブ管理情報テーブル2000の詳細については後述する。
また、フロー実行部131は、画像形成装置20のUI制御部210からのページ単位のデータ入力に応じて、ジョブ管理情報テーブル2000で管理されているジョブIDに基づいて、アプリ情報1000に含まれる処理フロー情報1200を取得する。そして、フロー実行部131は、取得した処理フロー情報1200に基づいてコンポーネントに対して処理の実行を要求する。
ここで、コンポーネントとは、処理フロー情報1200に基づく一連の処理(処理フロー)に含まれる各処理を実行するモジュール等である。したがって、処理フロー情報1200に基づく一連の処理は、1以上のコンポーネントにより実行される処理が組み合わされることで実現される。なお、コンポーネントは、例えばクラスや関数等で定義される。
このように、フロー実行部131は、画像形成装置20でスキャンして生成された電子ファイルにおけるページ単位のデータ(ページデータ)毎に、処理フロー情報1200に基づく一連の処理を実行する。
そして、フロー実行部131は、当該電子ファイルにおけるページデータ毎に、一連の処理の処理結果を示す結果情報を結果情報テーブル4000に格納する。なお、結果情報テーブル4000の詳細については後述する。
コンポーネント管理部132は、フロー実行部131からの要求に応じて、コンポーネント情報テーブル3000を参照して、コンポーネントを生成するか否かを判定する。そして、コンポーネント管理部132は、判定結果に応じて、コンポーネントを生成する。
ここで、コンポーネントの生成とは、例えばクラスや関数等で定義されているコンポーネントを、メモリ(例えばRAM14)上に展開することである。なお、コンポーネント情報テーブル3000の詳細については後述する。
コンポーネント群133は、コンポーネントの集合である。コンポーネント群133には、外部ストレージA(外部ストレージシステム301)に対してデータを配信するための配信Aコンポーネント1331が含まれる。また、コンポーネント群133には、データに対してOCR処理を行うためのOCRコンポーネント1332が含まれる。
なお、コンポーネント群133には、これら以外にも、例えば、外部ストレージBに対してデータを配信するための配信Bコンポーネント、データを印刷データに変換するための印刷変換コンポーネント等の各種のコンポーネントが含まれても良い。
ここで、各コンポーネントは、コンポーネント共通I/F1330を有する。コンポーネント共通I/F1330は、各コンポーネントに対して共通に定義されたAPIであり、コンポーネントを生成するためのAPIと、コンポーネントに対して処理の実行を要求するためのAPIとが含まれる。
各コンポーネントがコンポーネント共通I/F1330を有することで、コンポーネントの追加等に伴う影響を局所化することができる。すなわち、本実施形態に係るサービス提供システム10では、例えば、フロー実行部131やコンポーネント管理部132等に影響を与えることなく、コンポーネントの追加等を行うことができる。
型変換管理部134は、データ型の型変換を管理する。ここで、各コンポーネントは、自身が扱えるデータ型が予め決まっている。したがって、型変換管理部134は、コンポーネントからの要求に応じて、型変換情報テーブル5000を参照して、型変換群135に定義されている型変換を生成する。そして、型変換管理部134は、生成された型変換に対して型変換処理の実行を要求する。これにより、型変換管理部134は、要求元のコンポーネントが扱えるデータ型に型変換を行う。
ここで、型変換情報テーブル5000の詳細について、図8を参照しながら説明する。図8は、型変換情報テーブルの一例を示す図である。
図8に示す型変換情報テーブル5000に格納されている型変換情報は、データ項目として、変換前のデータ型と、変換後のデータ型と、生成する型変換とを有する。すなわち、型変換情報は、変換前のデータ型及び変換後のデータ型毎に、当該変換前のデータ型を当該変換後のデータ型に型変換するための型変換が関連付けられた情報である。
これにより、例えば、ストリームデータを示すデータ型「InputStream」のデータを、記憶装置等に格納されているデータのパス(アドレス)を示すデータ型「LocalFilePath」に型変換する場合、第1の型変換を生成すれば良い。
ここで、型変換の生成とは、例えばクラスで定義された型変換を、メモリ(例えばRAM14)上に展開することである。また、データ型には、上述した「InputStream」や「LocalFilePath」以外に、例えば、データの実体を示すデータ型「File」等が挙げられる。
型変換群135は、型変換の集合である。型変換群135には、データ型「InputStream」のデータを、データ型「LocalFilePath」のデータに変換する第1の型変換1351が含まれる。
なお、型変換群135には、これに以外にも、例えば、データ型「LocalFilePath」のデータを、データ型「File」のデータに変換する第2の型変換等の各種の型変換が含まれても良い。
ここで、各型変換は、型変換共通I/F1350を有する。型変換共通I/F1350は、各型変換に対して共通に定義されたAPIであり、型変換を生成するためのAPIと、型変換に対して処理の実行を要求するためのAPIとが含まれる。
各型変換が型変換共通I/F1350を有することで、型変換の追加等に伴う影響を局所化することができる。すなわち、本実施形態に係るサービス提供システム10では、例えば、型変換管理部134等に影響を与えることなく、型変換の追加等を行うことができる。
<処理の詳細>
次に、本実施形態に係る情報処理システム1の処理の詳細について説明する。
まず、ユーザUが画像形成装置20を用いて、サービス提供システム10のアプリケーション(アプリ情報1000)により提供されるサービスを利用する場合の全体処理について、図9を参照しながら説明する。図9は、本実施形態に係るサービス利用の全体処理の一例を示すシーケンス図である。
ユーザUは、画像形成装置20を用いて、アプリ情報1000により提供されるサービスの一覧を表示させるための表示操作を行う(ステップS901)。
画像形成装置20のUI制御部210は、サービスの一覧を表示させるための表示操作を受け付けると、サービス提供システム10のアプリ管理部120に対して、サービス一覧の取得要求を送信する(ステップS902)。そして、アプリ管理部120は、当該取得要求を受け取ると、サービス一覧画面情報を返信する。
なお、サービス一覧画面情報とは、アプリ情報1000により提供されるサービスの一覧を表示するための情報であり、例えばHTML等のデータ形式により表される。また、サービス一覧画面情報には、例えば、アプリ情報1000のアプリIDと、当該アプリ情報1000に含まれる処理フロー情報1200のフローID及びフロー名とが含まれる。
画像形成装置20のUI制御部210は、サービス一覧画面情報を受け取ると、当該サービス一覧画面情報に基づいて、例えば図10(a)に示すサービス一覧画面6100を操作パネル22に表示させる(ステップS903)。
図10(a)に示すサービス一覧画面6100には、アプリ情報1000により提供されるサービスの名称の一覧であるサービス名一覧6101が含まれる。このようなサービス名一覧6101に含まれる各サービス名は、例えば、サービス一覧画面情報に含まれるフローID及びフロー名に基づいて表示される。
なお、図10(a)に示すサービス一覧画面6100に含まれるサービス名一覧6101では、アプリ情報1000に含まれる処理フロー情報1200のフロー名をサービス名としたが、これに限られず、任意のサービス名が表示されても良い。
次に、ユーザUは、サービス一覧画面6100に含まれるサービス名一覧6101から、所望のサービスを選択する操作を行う(ステップS904)。以降では、サービス一覧画面6100に含まれるサービス名一覧6101から「スキャン配信1」がユーザUにより選択されたものとして説明する。
画像形成装置20のUI制御部210は、サービスの選択操作を受け付けると、サービス提供システム10のアプリ管理部120に対して、サービス画面の取得要求を送信する(ステップS905)。なお、当該取得要求には、ユーザUにより選択された「スキャン配信1」サービスを提供するアプリ情報1000のアプリID「app001」が含まれる。
そして、アプリ管理部120は、サービス画面の取得要求を受け取ると、アプリID「app001」のアプリ情報1000に含まれる画面定義情報1100を取得し、当該取得した画面定義情報1100を返信する。
画像形成装置20のUI制御部210は、画面定義情報1100を受け取ると、サービス提供システム10のデータI/F部140に対して、サービス画面の表示用情報の取得要求を送信する(ステップS906)。
なお、表示用情報とは、サービス画面における選択欄の各選択要素等のことであり、例えば、外部ストレージにおける保存先のフォルダの候補となるフォルダ一覧(フォルダ名及びフォルダIDの一覧)等である。以降では、表示用情報の取得要求は、外部ストレージAにおける保存先のフォルダの候補を示すフォルダ一覧の取得要求であるものとして説明する。
ここで、フォルダ一覧の取得要求は、図5(c)に示すAPI「/外部ストレージ名/data/folders」を用いて行うことができる。すなわち、UI制御部210は、データI/F部140に対して、例えば、「/storage-a/data/folders」としてHTTP(Hypertext Transfer Protocol)リクエストを送信することで、外部ストレージAのフォルダ一覧の取得を要求することができる。
サービス提供システム10のデータI/F部140は、表示用情報の取得要求を受け取ると、当該取得要求を対応する外部ストレージ連携部160のデータ処理部180に転送する(ステップS907)。すなわち、データI/F部140は、受け取った表示用情報の取得要求を外部ストレージ連携部1601のデータ処理部1801に転送する。
外部ストレージ連携部1601のデータ処理部1801は、表示用情報の取得要求を受け取ると、外部ストレージAに対してフォルダ一覧の取得要求を送信して、フォルダ一覧を示すフォルダ一覧情報を取得する(ステップS908)。すなわち、データ処理部1801は、共通I/F1811に定義されているAPIを用いて、外部ストレージAからフォルダ一覧情報を取得する。
そして、データ処理部1801は、UI制御部210に対して、データI/F部140を介してフォルダ一覧情報を返信する。
画像形成装置20のUI制御部210は、フォルダ一覧情報を受け取ると、当該フォルダ一覧情報を画面定義情報1100に反映させて、例えば図10(b)に示すサービス画面6200を操作パネル22に表示させる(ステップS909)。
図10(b)に示すサービス画面6200は、ユーザUにより選択された「スキャン配信1」サービスを利用するための画面であり、保存先フォルダ選択欄6201と、スキャン実行ボタン6204とを有する。
また、サービス画面6200には、「スキャン配信1」サービスを実現する処理フロー情報1200に基づいて設定されたパラメータがOCR言語6202及びデータ形式6203に表示されている。
なお、サービス画面6200において、保存先フォルダ選択欄6201の各選択要素は、上記のステップS908で外部ストレージAから取得されたフォルダ一覧情報に基づいて設定される。
次に、ユーザUは、サービス画面6200において、保存先フォルダ選択欄6201から所望の保存先フォルダを選択し、画像形成装置20のスキャナ25に原稿をセットした上で、スキャン実行ボタン6204を押下する(ステップS910)。以降では、ユーザUにより、保存先フォルダ選択欄6201から「FolderB」が選択された上で、スキャン実行ボタン6204が押下されたものとして説明する。
画像形成装置20のUI制御部210は、スキャン実行ボタン6204の押下を受け付けると、スキャン処理部220に対して、スキャンの実行要求を送信する(ステップS911)。
画像形成装置20のスキャン処理部220は、スキャンの実行要求を受け取ると、スキャナ25を制御して、セットされた原稿から電子ファイルを生成する(ステップS912)。そして、スキャン処理部220は、スキャンが終了したことを示すスキャン結果を返信する。
ここで、本実施形態では、スキャナ25に複数のページで構成される原稿がセットされた上で、スキャン実行ボタン6204が押下されたものとする。したがって、本実施形態において、スキャン処理部220により生成された電子ファイルには、複数のページが含まれる。すなわち、スキャン処理部220により生成された電子ファイルは、複数のページデータを含む。
画像形成装置20及びサービス提供システム10は、生成された電子ファイルにおけるページデータ毎に、処理フローの実行処理を行う(ステップS913)。なお、処理フローの実行処理の詳細については後述する。
ここで、本実施形態に係るサービス提供システム10において、ページデータ毎に、処理フローを実行する場合について、図11を参照しながら模式的に説明する。図11は、ページ毎に処理フローを実行する場合について模式的に説明する図である。
図11では、Mページのページデータを含む電子データに対して、「スキャン配信1」を実現する処理フローを実行する場合を示している。なお、当該処理フローは、OCRコンポーネント1332と、配信Aコンポーネント1331とを組み合わせることにより実現される。
このとき、本実施形態に係るサービス提供システム10は、まず、1ページ目のページデータに対してOCRコンポーネント1332による処理を実行する。
次に、本実施形態に係るサービス提供システム10は、1ページ目のページデータに対してOCRコンポーネント1332による処理の実行が完了すると、当該ページデータに対して配信Aコンポーネント1331による処理を実行する。
一方で、本実施形態に係るサービス提供システム10は、1ページ目のページデータに対してOCRコンポーネント1332による処理の実行が完了すると、2ページ目のページデータに対してOCRコンポーネント1332による処理を実行する。
続いて、本実施形態に係るサービス提供システム10は、1ページ目のページデータに対して配信Aコンポーネント1331による処理の実行が完了すると、2ページ目のページデータに対して配信Aコンポーネント1331による処理を実行する。
一方で、本実施形態に係るサービス提供システム10は、2ページ目のページデータに対してOCRコンポーネント1332による処理の実行が完了すると、3ページ目のページデータに対してOCRコンポーネント1332による処理を実行する。
このように、本実施形態に係るサービス提供システム10は、処理フローが2個のコンポーネントの組み合わせで実現される場合、Nページ目のページデータと、N+1ページ目のページデータとを異なるコンポーネントにより並列に処理を実行することができる。すなわち、より一般には、処理フローがL個のコンポーネントの組み合わせで実現される場合、Nページ目のページデータ〜N+L−1ページ目のページデータをそれぞれ異なるコンポーネントにより並列に処理を実行することができる。
このため、本実施形態に係るサービス提供システム10では、複数のページを含む電子データに対する処理フローの全体の実行時間を短縮することができる。
次に、上記の図9のステップS913の処理フローの実行処理の詳細について説明する。まず、1ページ目のページデータに対する処理フローの実行処理について、図12を参照しながら説明する。図12は、本実施形態に係る処理フローの実行処理(1ページ目)の一例のシーケンス図である。
まず、UI制御部210は、フロー実行部131に対して、処理フローの実行要求を送信する(ステップS1201)。ここで、当該実行要求には、ユーザUにより選択された「スキャン配信1」サービスを提供するアプリ情報1000のアプリID「app001」と、当該サービスを実現する処理フロー情報1200のフローID「flow001」とが含まれる。
次に、フロー実行部131は、処理フローの実行要求を受け取ると、当該実行要求を一意に識別するジョブIDを生成する。その後、フロー実行部131は、生成したジョブIDと、当該実行要求に含まれるアプリID及びフローIDと関連付けたジョブ管理情報を作成し、当該ジョブ管理情報をジョブ管理情報テーブル2000に格納する(ステップS1202)。
そして、フロー実行部131は、画像形成装置20のUI制御部210に対して、生成したジョブIDを返信する。
ここで、ジョブ管理情報テーブル2000の一例を図13(a)に示す。図13(a)に示すように、ジョブ管理情報テーブル2000に格納されているジョブ管理情報2001及び2002は、データ項目として、ジョブIDと、アプリIDと、フローIDとを有する。このように、ジョブ管理情報テーブル2000では、ジョブID毎に、アプリID及びフローIDが関連付けられている。
ステップS1202において、フロー実行部131は、ジョブID「Job103」を生成したものとする。この場合、フロー実行部131は、ジョブID「Job103」と、処理フローの実行要求に含まれるアプリID「app001」及びフローID「flow001」とを関連付けたジョブ管理情報2003を作成する。そして、図13(b)に示すように、フロー実行部131は、作成したジョブ管理情報2003をジョブ管理情報テーブル2000に格納する。
次に、UI制御部210は、フロー実行部131に対して、ページデータを入力する(ステップS1203)。ここで、UI制御部210は、フロー実行部131から返信されたジョブID「Job103」を指定して、ページデータを入力する。
フロー実行部131は、ページデータの入力を受け付けると、当該ページデータに対してページ番号を採番する(ステップS1204)。なお、フロー実行部131は、例えば、ページ番号「1」を採番すれば良い。
次に、フロー実行部131は、指定されたジョブIDに関連付けられているアプリID及びフローIDをジョブ管理情報テーブル2000から取得する(ステップS1205)。すなわち、フロー実行部131は、ジョブID「Job103」に関連付けられているアプリID「app001」及びフローID「flow001」をジョブ管理情報テーブル2000から取得する。
次に、フロー実行部131は、アプリ管理部120に対して、処理フロー情報の取得要求を送信する(ステップS1206)。ここで、当該取得要求には、ステップS1205で取得されたアプリID「app001」及びフローID「flow001」が含まれる。
そして、アプリ管理部120は、受け取った処理フローの取得要求に含まれるアプリID「app001」及びフローID「flow001」に対応する処理フロー情報1200を取得して、当該処理フロー情報1200を返信する。これにより、フロー実行部131には、図6に示す処理フロー情報1200が返信される。
フロー実行部131は、処理フロー情報1200を受け取ると、コンポーネント管理部132に対して、当該処理フロー情報1200に基づくコンポーネントの取得要求を送信する(ステップS1207)。
すなわち、フロー実行部131は、処理フロー情報1200のフロー詳細1203における処理内容1204に指定されたコンポーネント名「OCR」と、ジョブID「Job103」とを含むコンポーネントの取得要求をコンポーネント管理部132に送信する。
コンポーネント管理部132は、コンポーネントの取得要求を受け取ると、コンポーネント情報テーブル3000を参照して、当該取得要求に含まれる「OCR」に対応するOCRコンポーネント1332を生成するか否かを判定する(ステップS1208)。
ここで、コンポーネント情報テーブル3000の一例を図14(a)に示す。図14(a)に示すように、コンポーネント情報テーブル3000に格納されているコンポーネント情報3001〜3003は、データ項目として、ジョブIDと、コンポーネント名と、アドレスとを有する。なお、データ項目「アドレス」は、コンポーネントが展開されたメモリ(例えば、RAM14)上のアドレスである。
このように、コンポーネント情報テーブル3000では、生成されたコンポーネントのコンポーネント名及びアドレスが、ジョブIDと関連付けられている。
したがって、ステップS1208において、コンポーネント管理部132は、コンポーネントの取得要求に含まれるジョブID及びコンポーネント名に対応するコンポーネント情報がコンポーネント情報テーブル3000に格納されていない場合、コンポーネントを生成すると判定する。一方、ステップS1208において、コンポーネント管理部132は、コンポーネントの取得要求に含まれるジョブID及びコンポーネント名に対応するコンポーネント情報がコンポーネント情報テーブル3000に格納されている場合、コンポーネントを生成しないと判定する。
ここで、図14(a)に示すコンポーネント情報テーブル3000には、ジョブID「Job103」及びコンポーネント名「OCR」に対応するコンポーネント情報が格納されていないため、コンポーネント管理部132は、コンポーネントを生成すると判定する。
コンポーネント管理部132は、コンポーネントを生成すると判定すると、コンポーネントの取得要求に含まれるコンポーネント名「OCR」に対応するOCRコンポーネント1332を生成する(ステップS1209)。なお、OCRコンポーネント1332の生成は、コンポーネント共通I/F1330に定義されたAPIを用いて行うことができる。
また、コンポーネント管理部132は、生成したOCRコンポーネント1332のコンポーネント名「OCR」及びアドレス「DDD」を、ジョブID「Job103」と関連付けたコンポーネント情報3004を作成する。そして、コンポーネント管理部132は、図14(b)に示すように、作成したコンポーネント情報3004をコンポーネント情報テーブル3000に格納する。
その後、コンポーネント管理部132は、フロー実行部131に対して、生成したOCRコンポーネント1332のアドレス「DDD」を返信する。
次に、フロー実行部131は、OCRコンポーネント1332に対して、処理の実行要求を送信する(ステップS1210)。ここで、当該実行要求には、UI制御部210から入力されたページデータが含まれる。なお、当該ページデータは、データ型が「InputStream」としてUI制御部210から入力される。
OCRコンポーネント1332は、処理の実行要求を受け取ると、型変換管理部134に対して、型変換要求を送信する(ステップS1211)。なお、当該型変換要求には、ページデータと、OCRコンポーネント1332が扱うことができるデータ型である「LocalFilePath」の指定とが含まれる。
型変換管理部134は、型変換要求を受け取ると、当該型変換要求に含まれるデータのデータ型と、指定されたデータ型とが一致するか否かをチェックする(ステップS1212)。
ここで、受け取った型変換要求に含まれるページデータのデータ型は「InputStream」である一方、指定されたデータ型は「LocalFilePath」である。したがって、型変換管理部134は、型変換要求に含まれるページデータのデータ型と、指定されたデータ型とが一致しないものと判断する。
すると、型変換管理部134は、型変換情報テーブル5000を参照して、データ型「InputStream」をデータ型「LocalFilePath」に変換するための第1の型変換1351を特定する。そして、型変換管理部134は、特定した第1の型変換1351を生成する(ステップS1213)。なお、第1の型変換1351の生成は、型変換共通I/F1350に定義されたAPIを用いて行うことができる。
次に、型変換管理部134は、生成された第1の型変換1351に対して、型変換処理の実行要求を送信する(ステップS1214)。なお、当該実行要求には、ページデータが含まれる。
第1の型変換1351は、型変換処理の実行要求を受け取ると、当該実行要求に含まれるページデータのデータ型を「InputStream」から「LocalFilePath」に変換する(ステップS1215)。そして、第1の型変換1351は、型変換管理部134に対して、型変換後のページデータを返信する。
型変換管理部134は、型変換後のページデータを受け取ると、OCRコンポーネント1332に対して、当該型変換後のページデータを送信する(ステップS1216)。
OCRコンポーネント1332は、型変換後のページデータを受け取ると、処理を実行する(ステップS1217)。すなわち、OCRコンポーネント1332は、データ型「LocalFilePath」のページデータに対してOCR処理を実行する。
より具体的には、OCRコンポーネント1332は、ドキュメントサービス部150のOCR処理151に対して処理の実行を要求し、当該OCR処理151が、ページデータ(アドレス又はパス)により示されるデータに対して処理を実行する。
そして、OCRコンポーネント1332は、フロー実行部131に対して、OCR処理後のページデータを返信する。なお、OCRコンポーネント1332により返信されるページデータのデータ型は「LocalFilePath」である。
次に、フロー実行部131は、ページデータを受け取ると、コンポーネント管理部132に対して、処理フロー情報1200に基づくコンポーネントの取得要求を送信する(ステップS1218)。
すなわち、フロー実行部131は、処理フロー情報1200のフロー詳細1203における処理内容1205に指定されたコンポーネント名「配信A」と、ジョブID「Job103」とを含むコンポーネントの取得要求をコンポーネント管理部132に送信する。
コンポーネント管理部132は、コンポーネントの取得要求を受け取ると、コンポーネント情報テーブル3000を参照して、当該取得要求に含まれる「配信A」に対応する配信Aコンポーネント1331を生成するか否かを判定する(ステップS1219)。
ここで、図14(b)に示すコンポーネント情報テーブル3000には、ジョブID「Job103」及びコンポーネント名「配信A」に対応するコンポーネント情報が格納されていないため、コンポーネント管理部132は、コンポーネントを生成すると判定する。
コンポーネント管理部132は、コンポーネントを生成すると判定すると、コンポーネントの取得要求に含まれるコンポーネント名「配信A」に対応する配信Aコンポーネント1331を生成する(ステップS1220)。なお、配信Aコンポーネント1331の生成は、コンポーネント共通I/F1330に定義されたAPIを用いて行うことができる。
また、コンポーネント管理部132は、生成した配信Aコンポーネント1331のコンポーネント名「配信A」及びアドレス「EEE」を、ジョブID「Job103」と関連付けたコンポーネント情報3005を作成する。そして、コンポーネント管理部132は、図14(c)に示すように、作成したコンポーネント情報3005をコンポーネント情報テーブル3000に格納する。
その後、コンポーネント管理部132は、フロー実行部131に対して、生成した配信Aコンポーネント1331のアドレス「EEE」を返信する。
次に、フロー実行部131は、配信Aコンポーネント1331に対して、処理の実行要求を送信する(ステップS1221)。ここで、当該実行要求には、OCRコンポーネント1332から返信されたページデータが含まれる。
配信Aコンポーネント1331は、処理の実行要求を受け取ると、型変換管理部134に対して、型変換要求を送信する(ステップS1222)。なお、当該型変換要求には、ページデータと、配信Aコンポーネント1331が扱うことができるデータ型である「LocalFilePath」の指定とが含まれる。
型変換管理部134は、型変換要求を受け取ると、当該型変換要求に含まれるページデータのデータ型と、指定されたデータ型とが一致するか否かをチェックする(ステップS1223)。
ここで、受け取った型変換要求に含まれるページデータのデータ型は「LocalFilePath」であり、指定されたデータ型も「LocalFilePath」である。したがって、型変換管理部134は、型変換要求に含まれるページデータのデータ型と、指定されたデータ型とが一致するものと判断する。
すると、型変換管理部134は、型変換要求に含まれるページデータを配信Aコンポーネント1331に送信する(ステップS1224)。このように、データ型のチェック(ステップS1223の処理)においてデータ型が一致すると判断された場合、型変換管理部134は、型変換の生成を行わない。
配信Aコンポーネント1331は、型変換管理部134からページデータを受け取ると、処理を実行する(ステップS1225)。すなわち、配信Aコンポーネント1331は、外部ストレージAのフォルダ名「FolderB」のフォルダに対して、ページデータを配信(アップロード)する。
より具体的には、配信Aコンポーネント1331は、外部ストレージ連携部1601のファイル処理部1701に対して、図5(a)に示すAPI「/外部ストレージ名/process/folder」を用いる。すなわち、配信Aコンポーネント1331は、ファイル処理部1701に対して、例えば、「/storage-a/process/folder」としてページデータを送信する。
これにより、ページデータ(すなわち、スキャンにより生成された電子ファイルにおける1ページ目のデータをOCR処理したデータ)が、外部ストレージAのフォルダ名「FolderB」のフォルダに保存される。
そして、配信Aコンポーネント1331は、フロー実行部131に対して、処理結果を示すページデータを返信する。
フロー実行部131は、配信Aコンポーネント1331からページデータを受け取ると、当該ページデータを、ジョブID及びページ番号と関連付けた結果情報を作成し、当該結果情報を結果情報テーブル4000に格納する(ステップS1226)。
ここで、結果情報テーブル4000の一例を図15(a)に示す。図15(a)に示すように、結果情報テーブル4000に格納されている結果情報4001〜4003は、データ項目として、ジョブIDと、ページデータと、ページ番号とを有する。
このように、結果情報テーブル4000では、ジョブID及びページ番号毎に、処理フローの処理結果(すなわち、1ページ分の処理フローの処理結果)であるページデータが関連付けられている。
すなわち、ステップS1226において、フロー実行部131は、配信Aコンポーネント1331から受け取ったページデータを、ジョブID「Job103」及びページ番号「1」と関連付けた結果情報4004を作成する。そして、フロー実行部131は、図15(b)に示すように、作成した結果情報4004を結果情報テーブル4000に格納する。
以上により、本実施形態に係るサービス提供システム10において、1ページ目のページデータに対して、処理フロー情報1200に基づく処理フローが実行される。
次に、2ページ目以降のページデータに対する処理フローの実行処理について、図16を参照しながら説明する。図16は、本実施形態に係る処理フローの実行処理(2ページ目以降)の一例のシーケンス図である。
UI制御部210は、フロー実行部131に対して、ページデータを入力する(ステップS1601)。ここで、UI制御部210は、図12のステップS1202でフロー実行部131から返信されたジョブID「Job103」を指定して、ページデータを入力する。なお、ここで入力されるページデータは、スキャンにより生成された電子ファイルにおける2ページ目以降のページデータである。
フロー実行部131は、ページデータの入力を受け付けると、当該ページデータに対してページ番号を採番する(ステップS1602)。ここでは、ページ番号「2」が採番されたものとして説明する。
次に、フロー実行部131は、コンポーネント管理部132に対して、図12のステップS1206で取得した処理フロー情報1200に基づくコンポーネントの取得要求を送信する(ステップS1603)。
すなわち、フロー実行部131は、処理フロー情報1200のフロー詳細1203における処理内容1204に指定されたコンポーネント名「OCR」と、ジョブID「Job103」とを含むコンポーネントの取得要求をコンポーネント管理部132に送信する。
コンポーネント管理部132は、コンポーネントの取得要求を受け取ると、コンポーネント情報テーブル3000を参照して、当該取得要求に含まれる「OCR」に対応するOCRコンポーネント1332を生成するか否かを判定する(ステップS1604)。
ここで、図14(c)に示すコンポーネント情報テーブル3000には、ジョブID「Job103」及びコンポーネント名「OCR」に対応するコンポーネント情報が格納されている。したがって、コンポーネント管理部132は、コンポーネントを生成しないと判定する。
その後、コンポーネント管理部132は、OCRコンポーネント1332のアドレス「DDD」をコンポーネント情報テーブル3000から取得して、フロー実行部131に対して、当該アドレス「DDD」を返信する。
このように、コンポーネント管理部132は、コンポーネントの取得要求に係るコンポーネントが既に生成されている場合には、コンポーネントの生成を行わない。すなわち、コンポーネント管理部132は、2ページ目以降のページデータに対する処理フローにおいては、コンポーネントの生成を行わない。
次に、フロー実行部131は、OCRコンポーネント1332に対して、処理の実行要求を送信する(ステップS1605)。ここで、当該実行要求には、UI制御部210から入力されたページデータが含まれる。なお、当該ページデータは、データ型が「InputStream」としてUI制御部210から入力される。
OCRコンポーネント1332は、処理の実行要求を受け取ると、型変換管理部134に対して、型変換要求を送信する(ステップS1606)。なお、当該型変換要求には、ページデータと、OCRコンポーネント1332が扱うことができるデータ型である「LocalFilePath」の指定とが含まれる。
型変換管理部134は、型変換要求を受け取ると、当該型変換要求に含まれるページデータのデータ型と、指定されたデータ型とが一致するか否かをチェックする(ステップS1607)。
ここで、受け取った型変換要求に含まれるページデータのデータ型は「InputStream」である一方、指定されたデータ型は「LocalFilePath」である。したがって、型変換管理部134は、型変換要求に含まれるページデータのデータ型と、指定されたデータ型とが一致しないものと判断する。
すると、型変換管理部134は、型変換情報テーブル5000を参照して、データ型「InputStream」をデータ型「LocalFilePath」に変換するための第1の型変換1351を特定する。そして、型変換管理部134は、特定した第1の型変換1351を生成する(ステップS1608)。なお、第1の型変換1351の生成は、型変換共通I/F1350に定義されたAPIを用いて行うことができる。
次に、型変換管理部134は、生成された第1の型変換1351に対して、型変換処理の実行要求を送信する(ステップS1609)。なお、当該実行要求には、ページデータが含まれる。
第1の型変換1351は、型変換処理の実行要求を受け取ると、当該実行要求に含まれるページデータのデータ型を「InputStream」から「LocalFilePath」に変換する(ステップS1610)。そして、第1の型変換1351は、型変換管理部134に対して、型変換後のページデータを返信する。
型変換管理部134は、型変換後のページデータを受け取ると、OCRコンポーネント1332に対して、当該型変換後のページデータを送信する(ステップS1611)。
OCRコンポーネント1332は、型変換後のページデータを受け取ると、処理を実行する(ステップS1612)。すなわち、OCRコンポーネント1332は、データ型「LocalFilePath」のページデータに対してOCR処理を実行する。
そして、OCRコンポーネント1332は、フロー実行部131に対して、OCR処理後のページデータを返信する。なお、OCRコンポーネント1332により返信されるページデータのデータ型は「LocalFilePath」である。
次に、フロー実行部131は、ページデータを受け取ると、コンポーネント管理部132に対して、処理フロー情報1200に基づくコンポーネントの取得要求を送信する(ステップS1613)。
すなわち、フロー実行部131は、処理フロー情報1200のフロー詳細1203における処理内容1205に指定されたコンポーネント名「配信A」と、ジョブID「Job103」とを含むコンポーネントの取得要求をコンポーネント管理部132に送信する。
コンポーネント管理部132は、コンポーネントの取得要求を受け取ると、コンポーネント情報テーブル3000を参照して、当該取得要求に含まれる「配信A」に対応する配信Aコンポーネント1331を生成するか否かを判定する(ステップS1614)。
ここで、図14(c)に示すコンポーネント情報テーブル3000には、ジョブID「Job103」及びコンポーネント名「配信A」に対応するコンポーネント情報が格納されている。したがって、コンポーネント管理部132は、コンポーネントを生成しないと判定する。
その後、コンポーネント管理部132は、配信Aコンポーネント1331のアドレス「EEE」をコンポーネント情報テーブル3000から取得して、フロー実行部131に対して、当該アドレス「EEE」を返信する。
上述したように、コンポーネント管理部132は、2ページ目以降のページデータに対する処理フローにおいては、コンポーネントの生成を行わない。
次に、フロー実行部131は、配信Aコンポーネント1331に対して、処理の実行要求を送信する(ステップS1615)。ここで、当該実行要求には、OCRコンポーネント1332から返信されたページデータが含まれる。
配信Aコンポーネント1331は、処理の実行要求を受け取ると、型変換管理部134に対して、型変換要求を送信する(ステップS1616)。なお、当該型変換要求には、ページデータと、配信Aコンポーネント1331が扱うことができるデータ型である「LocalFilePath」の指定とが含まれる。
型変換管理部134は、型変換要求を受け取ると、当該型変換要求に含まれるページデータのデータ型と、指定されたデータ型とが一致するか否かをチェックする(ステップS1617)。
ここで、受け取った型変換要求に含まれるページデータのデータ型は「LocalFilePath」であり、指定されたデータ型も「LocalFilePath」である。したがって、型変換管理部134は、型変換要求に含まれるページデータのデータ型と、指定されたデータ型とが一致するものと判断する。
すると、型変換管理部134は、型変換要求に含まれるページデータを配信Aコンポーネント1331に送信する(ステップS1618)。このように、データ型のチェック(ステップS1617の処理)においてデータ型が一致すると判断された場合、型変換管理部134は、型変換の生成を行わない。
配信Aコンポーネント1331は、型変換管理部134からページデータを受け取ると、処理を実行する(ステップS1619)。すなわち、配信Aコンポーネント1331は、外部ストレージAのフォルダ名「FolderB」のフォルダに対して、ページデータを配信(アップロード)する。
これにより、ページデータ(すなわち、スキャンにより生成された電子ファイルにおける2ページ目のデータをOCR処理したデータ)が、外部ストレージAのフォルダ名「FolderB」のフォルダに保存される。
そして、配信Aコンポーネント1331は、フロー実行部131に対して、処理結果を示すページデータを返信する。
フロー実行部131は、配信Aコンポーネント1331からページデータを受け取ると、当該ページデータを、ジョブID及びページ番号と関連付けた結果情報を作成し、当該結果情報を結果情報テーブル4000に格納する(ステップS1620)。
すなわち、フロー実行部131は、配信Aコンポーネント1331から受け取ったページデータを、ジョブID「Job103」及びページ番号「2」と関連付けた結果情報4005を作成する。そして、フロー実行部131は、図15(c)に示すように、作成した結果情報4005を結果情報テーブル4000に格納する。
これにより、2ページ目のページデータに対する処理フローの処理結果が結果情報テーブル4000に格納される。
ここで、ステップS1601において入力したページデータが最終ページである場合、UI制御部210は、フロー実行部131に対して、完了通知を送信する(ステップS1621)。ここで、当該完了通知には、ジョブID「Job103」が含まれる。なお、以降では、2ページ目が最終ページであるものとして説明する。
フロー実行部131は、完了通知を受け取ると、コンポーネント管理部132に対して、コンポーネントの破棄要求を送信する(ステップS1622)。ここで、当該破棄要求には、ジョブID「Job103」が含まれる。
次に、コンポーネント管理部132は、コンポーネントの破棄要求を受け取ると、当該破棄要求に含まれるジョブID「Job103」に対応するコンポーネント情報をコンポーネント情報テーブル3000から削除する(ステップS1623)。
すなわち、コンポーネント管理部132は、図14(c)に示すコンポーネント情報テーブル3000に格納されているコンポーネント情報3001〜3005のうち、コンポーネント情報3004及び3005を削除する。
そして、コンポーネント管理部132は、フロー実行部131に対して、該当のコンポーネント情報を削除したことを示す削除結果を返信する。
フロー実行部131は、削除結果を受け取ると、ジョブID「Job103」に対応する結果情報を結果情報テーブル4000から取得する(ステップS1624)。
すなわち、フロー実行部131は、図15(c)に示す結果情報テーブル4000に格納されている結果情報4001〜4005のうち、結果情報4004及び4005を取得する。
そして、フロー実行部131は、UI制御部210に対して、取得した結果情報4004及び4005を返信する。
このように、スキャンにより生成された電子ファイルにおける全てのページデータに対する処理フローの実行が完了すると、コンポーネント管理部132は、コンポーネント情報テーブル3000から該当のコンポーネント情報を削除する。また、このとき、フロー実行部131は、ページデータ毎の処理フローの処理結果をまとめてUI制御部210に返信する。
以上により、本実施形態に係るサービス提供システム10において、2ページ目以降のページデータに対して、処理フロー情報1200に基づく処理フローが実行される。
以上のように、本実施形態に係るサービス提供システム10では、複数のページを含む電子ファイルに対して、ページ単位のデータ毎に処理フローを実行することができる。しかも、本実施形態に係るサービス提供システム10では、処理フローに含まれる各処理を実行するコンポーネントを並列に実行させることができる。
これにより、本実施形態に係るサービス提供システム10では、複数のページを含む電子ファイルに対する処理フローの実行時間を短縮することができる。
本発明は、具体的に開示された上記の実施形態に限定されるものではなく、特許請求の範囲から逸脱することなく、種々の変形や変更が可能である。