以下、本発明の実施形態について、図面を参照しながら詳細に説明する。
<システム構成>
まず、本実施形態に係る情報処理システム1のシステム構成について、図1を参照しながら説明する。図1は、本実施形態に係る情報処理システム1の一例のシステム構成を示す図である。
図1に示す情報処理システム1は、サービス提供システム10と、機器20と、外部ストレージシステム30とを含み、インターネット等の広域的なネットワークN1を介して通信可能に接続されている。
サービス提供システム10は、一台以上の情報処理装置で実現され、ネットワークN1を介して、クラウドサービス等の外部サービスと連携した各種のサービスを提供する。本実施形態に係るサービス提供システム10が提供するサービスの具体例については後述する。
なお、本実施形態では、外部サービスの具体例としてクラウドサービスを採用して説明するが、これに限られない。本実施形態は、例えば、ASP(Application Service Provider)によって提供されるサービスやWebサービス等のネットワークを介して提供される各種の外部サービスに関して適用されても良い。
機器20は、ユーザが使用する各種の電子機器である。すなわち、機器20は、例えば、MFP(Multifunction Peripheral)等の画像形成装置、PC(パーソナルコンピュータ)、プロジェクタ、電子黒板、デジタルカメラ等である。ユーザは、機器20を用いて、サービス提供システム10が提供する各種のサービスを利用することができる。
なお、以降では、複数の機器20について、各々を区別するときは、「機器201」、「機器202」等と添え字を用いて記載する。
外部ストレージシステム30は、ネットワークN1を介してストレージサービス(又はオンラインストレージ)と呼ばれるクラウドサービスを提供するコンピュータシステムである。ストレージサービスとは、外部ストレージシステム30のストレージの記憶領域を貸し出すサービスである。
なお、以降では、複数の外部ストレージシステム30について、各々を区別するときは、「外部ストレージシステム301」、「外部ストレージシステム302」等と添え字を用いて記載する。また、外部ストレージシステム301により提供されるストレージサービスの名称を「ストレージA」、外部ストレージシステム301により提供されるストレージサービスの名称を「ストレージB」等とする。
なお、外部ストレージシステム30は、複数台の情報処理装置によって実現されるシステムであっても良い。
また、図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が提供するサービスについて説明する。
本実施形態に係るサービス提供システム10は、外部ストレージシステム30における電子ファイルの格納先リストを取得した上で、当該リストに基づいて取得した最新の電子ファイルをOCR(Optical Character Recognition)処理して、メール配信するサービスを提供する。
本実施形態に係るサービス提供システム10は、上述したサービス(以降では、「OCR配信」サービス、又は、単に「OCR配信」とも表す。)を提供するものとして説明する。
ただし、サービス提供システム10により提供されるサービスは、これに限られない。例えば、サービス提供システム10は、外部ストレージシステム30における電子ファイルの格納先リストを取得した上で、当該リストに基づいて取得した最新の電子ファイルを編集(例えば、所定の情報の追加等)して、メール配信するサービスを提供しても良い。
また、例えば、サービス提供システム10は、外部ストレージシステム30における電子ファイルの格納先リストを取得した上で、当該リストに基づいて取得した最新の電子ファイルを圧縮して、メール配信するサービスを提供しても良い。
<機能構成>
次に、本実施形態に係る情報処理システム1の機能構成について、図4を参照しながら説明する。図4は、本実施形態に係る情報処理システム1の一例の機能構成を示す図である。
図4に示す機器20は、例えばCPU31等により実行されるブラウザ210を有する。機器20のユーザは、ブラウザ210を介して、サービス提供システム10が提供するサービスを利用することができる。このように、本実施形態に係る機器20は、ブラウザ210が搭載されていれば良い。
図4に示すサービス提供システム10は、入出力サービス処理部110と、Webサービス処理部120と、ドキュメントサービス部130と、外部サービス連携部140とを有する。これら各部は、サービス提供システム10にインストールされた1以上のプログラムが、CPU16に実行させる処理により実現される。
また、図4に示すサービス提供システム10は、アプリ情報記憶部150と、画面情報記憶部160と、リソース管理情報記憶部170とを有する。これら各記憶部は、HDD18により実現可能である。なお、アプリ情報記憶部150、画面情報記憶部160、及びリソース管理情報記憶部170の少なくとも1つの記憶部が、サービス提供システム10とネットワークN1を介して接続される記憶装置等により実現されていても良い。
入出力サービス処理部110は、サービス提供システム10が提供するサービスに関する処理を行う。ここで、入出力サービス処理部110は、アプリ管理部111と、ロジック処理部112と、データI/F部113とを有する。
アプリ管理部111は、アプリ情報記憶部150に記憶されているアプリ情報1000を管理する。なお、アプリ情報1000とは、各種のサービスを提供するアプリケーションである。すなわち、サービス提供システム10が提供する各種のサービスは、アプリ情報1000により提供される。
また、アプリ管理部111は、ロジック処理部112からの要求に応じて、アプリ情報1000に含まれる処理フロー情報1100を返信する。なお、処理フロー情報1100は、アプリ情報1000により提供されるサービスを実現する一連の処理(以降では、一連の処理を「処理フロー」とも表す。)が定義された情報である。
ロジック処理部112は、Webサービス処理部120からの要求に応じて、アプリ管理部111から処理フロー情報1100を取得する。そして、ロジック処理部112は、取得した処理フロー情報1100に基づいて、サービスを実現する処理フローを実行する。これにより、本実施形態に係る情報処理システム1では、サービス提供システム10により各種のサービスが提供される。なお、ロジック処理部112の詳細については後述する。
データI/F部113は、Webサービス処理部120やロジック処理部112からの要求に応じて、外部サービス連携部140のデータ処理部142に各種の要求を行う。例えば、データI/F部113は、外部サービス連携部140のデータ処理部142に、電子ファイルの格納先の一覧(すなわち、電子ファイルの格納先リスト)を示すファイル一覧の取得要求を行う。
Webサービス処理部120は、ブラウザ210からの要求に応じて、画面情報記憶部160に記憶されている画面情報2000を返信する。なお、画面情報2000は、ブラウザ210に表示される画面を定義した情報であり、例えばHTML(HyperText Markup Language)やCSS(Cascading Style Sheets)等の形式で定義されている。
これにより、機器20の操作パネル22には、ブラウザ210により、サービス提供システム10が提供するサービスを選択するためのサービス一覧画面や、サービスを利用するためのサービス画面等が表示される。
また、Webサービス処理部120は、ブラウザ210からの要求に応じて、入出力サービス処理部110に各種の要求を行う。例えば、Webサービス処理部120は、ブラウザ210からの要求に応じて、「OCR配信」サービスを実現する処理フローの実行要求を、入出力サービス処理部110のロジック処理部112に行う。
ドキュメントサービス部130は、処理フロー情報1100に基づく一連の処理(処理フロー)に含まれる処理を実行する。ここで、ドキュメントサービス部130は、メール配信部131と、OCR処理部132とを有する。
メール配信部131は、電子ファイルを添付したメールを作成して、当該メールを指定されたメールアドレス宛に配信する。OCR処理部132は、電子ファイルをOCR処理する。
なお、ドキュメントサービス部130は、例えば、電子ファイルのデータ形式を所定のデータに変換するデータ変換部、電子ファイルを圧縮又は解凍する圧縮・解凍部等を有していても良い。
このように、ドキュメントサービス部130には、一連の処理(処理フロー)に含まれる処理を実行する種々の機能部が含まれる。したがって、ドキュメントサービス部130は、これら種々の機能を提供するプログラム(モジュール)群により実現される。
外部サービス連携部140は、ロジック処理部112やデータI/F部113からの要求に応じて、外部ストレージシステム30に各種の要求を行う。
本実施形態に係るサービス提供システム10は、外部ストレージシステム30毎に、当該外部ストレージシステム30に対応する外部サービス連携部140を有する。すなわち、本実施形態に係るサービス提供システム10は、外部ストレージシステム301に各種の要求を行うための外部サービス連携部1401、外部ストレージシステム302に各種の要求を行うための外部サービス連携部1402等を有する。
このように、本実施形態に係るサービス提供システム10は、当該サービス提供システム10と連携して処理を行う外部ストレージシステム30毎に、それぞれ対応する外部サービス連携部140を有する。なお、以降では、複数の外部サービス連携部140について、各々を区別するときは、上記のように、「外部サービス連携部1401」、「外部サービス連携部1402」等と添え字を用いて記載する。
ここで、外部サービス連携部140は、ロジック処理部112からの要求を受信するファイル処理部141と、データI/F部113からの要求を受信するデータ処理部142とを有する。
ファイル処理部141は、外部ストレージシステム30に保存されている電子ファイルに対する操作(例えば、取得、保存、編集等)を行うためのAPI(Application Programming Interface)が定義された共通I/F1411及び固有I/F1412を有する。
共通I/F1411は、複数の外部ストレージシステム30間で共通に利用できるAPIであり、例えば図5(a)に示すAPIが挙げられる。すなわち、ファイル処理部141の共通I/F1411は、全ての外部ストレージシステム30が利用できるファイル操作に関する機能(例えば、電子ファイルの取得、保存等)を利用するためのAPI群である。
一方、固有I/F1412は、特定の外部ストレージシステム30において利用できるAPIであり、例えば図5(b)に示すAPIが挙げられる。すなわち、ファイル処理部141の固有I/F1412は、特定の外部ストレージシステム30において利用できるファイル操作に関する機能(例えば、電子ファイルの編集等)を利用するためのAPI群である。
したがって、共通I/F1411は、全ての外部サービス連携部140に対して同様に定義される。一方で、固有I/F1412は、当該固有I/F1412で定義されるAPIが利用可能な特定の外部ストレージシステム30に対応する外部サービス連携部140に対して定義される。
また、データ処理部142は、外部ストレージシステム30に保存されている電子ファイルの書誌情報等のメタデータ(例えば、ファイル一覧やフォルダ一覧等)を取得等するためのAPIが定義された共通I/F1421及び固有I/F1422を有する。
共通I/F1421は、複数の外部ストレージシステム30間で共通に利用できるAPIであり、例えば図5(c)に示すAPIが挙げられる。すなわち、データ処理部142の共通I/F1421は、全ての外部ストレージシステム30で利用できるメタデータ取得等の機能(例えば、ファイル一覧やフォルダ一覧の取得等)を利用するためのAPI群である。
一方、固有I/F1422は、特定の外部ストレージシステム30において利用できるAPIであり、例えば図5(d)に示すAPIが挙げられる。すなわち、データ処理部142の固有I/F1422は、特定の外部ストレージシステム30において利用できるメタデータ取得等の機能(例えば、画像ファイル一覧の取得等)を利用するためのAPI群である。
したがって、共通I/F1421は、全ての外部サービス連携部140に対して同様に定義される。一方で、固有I/F1422は、当該固有I/F1422で定義されるAPIが利用可能な特定の外部ストレージシステム30に対応する外部サービス連携部140に対して定義される。
このように、本実施形態に係るサービス提供システム10は、当該サービス提供システム10と連携して処理を行う外部ストレージシステム30毎に、それぞれの外部ストレージシステム30に対応する外部サービス連携部140を有する。このため、例えば、サービス提供システム10の連携先となる外部ストレージシステム30を追加や削除(以降、「追加等)と表す。)する場合には、この外部ストレージシステム30に対応する外部サービス連携部140を追加等すれば良い。
したがって、本実施形態に係るサービス提供システム10では、連携先となる外部ストレージシステム30の追加等に伴う影響を局所化することができる。換言すれば、本実施形態に係るサービス提供システム10では、他の機能構成(例えば、入出力サービス処理部110やWebサービス処理部120等)に影響を与えることなく、連携先となる外部ストレージシステム30の追加等を行うことができる。
このため、本実施形態に係るサービス提供システム10では、当該サービス提供システム10の連携先となる外部ストレージシステム30を追加等した場合における開発工数を削減することができる。なお、外部サービス連携部140の追加等は、SDK(Software Development Kit)を用いて行うことができる。
また、外部サービス連携部140は、共通I/F1411と固有I/F1412とを異なるモジュール等により実現している。また、共通I/F1411と固有I/F1412で定義されるAPIは、外部サービス名(ストレージサービス名)を指定することで利用することができる(すなわち、「外部サービス名」が可変部分となっている。)。
したがって、本実施形態に係るサービス提供システム10では、当該サービス提供システム10の連携先となる外部ストレージシステム30を追加する場合には、他の外部サービス連携部140に含まれる共通I/F1411を再利用することができる。換言すれば、連携先となる外部ストレージシステム30を追加する場合には、固有I/F1412のみ開発すれば良い。これにより、本実施形態に係るサービス提供システム10では、連携先となる外部ストレージシステム30を追加する場合における開発工数をさらに削減することができる。なお、このことは共通I/F1421と固有I/F1422に関しても同様である。
アプリ情報記憶部150は、アプリ情報1000を記憶する。アプリ情報1000は、当該アプリ情報1000(アプリケーション)を一意に識別するアプリIDと関連付けてアプリ情報記憶部150に記憶されている。
ここで、アプリ情報1000には、処理フロー情報1100が含まれる。例えば、「OCR配信」サービスを提供するアプリ情報1000には、当該サービスを実現する一連の処理(処理フロー)が定義された処理フロー情報1100が含まれる。
なお、アプリ情報1000には、2以上の処理フロー情報1100が含まれていても良い。また、アプリ情報記憶部150には、アプリ情報1000に含まれない処理フロー情報1100が記憶されていても良い。
処理フロー情報1100は、上述したように、アプリ情報1000により提供されるサービスを実現する一連の処理(処理フロー)が定義された情報である。なお、処理フロー情報1100の詳細については後述する。
画面情報記憶部160は、画面情報2000を記憶する。画面情報2000は、上述したように、ブラウザ210に表示される画面を定義した情報である。なお、アプリ情報1000により提供されるサービスを利用するためのサービス画面の画面情報2000は、当該アプリ情報1000のアプリIDと関連付けて画面情報記憶部160に記憶されている。
リソース管理情報記憶部170は、処理フロー情報1100に基づく一連の処理(処理フロー)に含まれる各処理の処理結果等を管理するリソース管理情報170Dを記憶する。なお、リソース管理情報170Dの詳細については後述する。
ここで、ロジック処理部112の詳細な機能構成について、図6を参照しながら説明する。図6は、本実施形態に係るロジック処理部112の一例の機能構成を示す図である。
図6に示すロジック処理部112は、フロー実行部301と、コンポーネント管理部302と、コンポーネント群303と、型変換管理部304と、型変換群305と、リソース管理部306と、パラメータ置換部307とを有する。また、ロジック処理部112は、型変換情報テーブル3000を有する。
フロー実行部301は、Webサービス処理部120を介して、ブラウザ210から処理実行要求を受信すると、アプリ情報1000に含まれる処理フロー情報1100をアプリ管理部111から取得する。そして、フロー実行部301は、取得した処理フロー情報1100に基づく一連の処理(処理フロー)を実行する。
ここで、処理フロー情報1100に基づく一連の処理は、当該一連の処理に含まれる各処理を実行するためのコンポーネントを組み合わせることにより実行される。なお、コンポーネントは、所定の機能を提供するプログラムやモジュール等により実現され、例えばクラスや関数等で定義される。
コンポーネント管理部302は、コンポーネントを管理する。コンポーネント管理部302は、フロー実行部301からの要求に応じて、コンポーネントを生成すると共に、生成したコンポーネントをフロー実行部301に返信する。なお、コンポーネントの生成とは、例えばクラスや関数等で定義されたコンポーネントを、メモリ(例えばRAM14)上に展開することである。
コンポーネント群303は、コンポーネントの集合である。コンポーネント群303には、フロー実行コンポーネント401と、リスト取得コンポーネント402と、メール配信コンポーネント403と、ファイル取得コンポーネント404と、OCRコンポーネント405とが含まれる。
フロー実行コンポーネント401は、他の処理フローを実行するためのコンポーネントである。このとき、フロー実行コンポーネント401は、当該他の処理フローに含まれる各処理を実行するコンポーネントに対するパラメータ情報に、置換指定が含まれるか否かを判定する。そして、フロー実行コンポーネント401は、パラメータ情報に置換指定が含まれると判定した場合、パラメータ情報の置換をパラメータ置換部307に要求する。なお、置換指定とは、パラメータ情報に含まれるパラメータ値を、例えば、他のコンポーネントの処理結果等を示すリソースに置換するための指定である。
リスト取得コンポーネント402は、指定された外部ストレージシステム30から電子ファイルの格納先リストを取得するためのコンポーネントである。メール配信コンポーネント403は、指定されたメールアドレス宛にメール配信するためのコンポーネントである。
ファイル取得コンポーネント404は、外部ストレージシステム30から電子ファイルを取得(ダウンロード)するためのコンポーネントである。OCRコンポーネント405は、電子ファイルをOCR処理するためのコンポーネントである。
なお、コンポーネント群303には、これら以外にも、例えば、電子ファイルの圧縮するための圧縮コンポーネント、電子ファイルのデータ形式を変換するためのコンポーネント等の各種のコンポーネントが含まれる。
また、コンポーネント群303に含まれる各コンポーネントは、コンポーネント共通I/F400を有する。コンポーネント共通I/F400は、各コンポーネントに対して共通に定義されたAPIであり、コンポーネントを生成するためのAPIと、コンポーネントの処理を実行するためのAPIとが含まれる。
このように、各コンポーネントがコンポーネント共通I/F400を有することで、コンポーネントの追加等に伴う影響を局所化することができる。すなわち、例えば、フロー実行部301やコンポーネント管理部302等に影響を与えることなく、コンポーネントの追加等を行うことができる。これにより、本実施形態に係るサービス提供システム10では、所定の機能の追加等(すなわち、当該機能を実現する処理を実行するためのコンポーネントの追加等)に伴う開発工数を削減することができる。
型変換管理部304は、データ型の型変換を管理する。ここで、各コンポーネントは、自身が扱えるデータ型が予め決まっている。したがって、型変換管理部304は、コンポーネントからの要求に応じて、例えば図7に示す型変換情報テーブル3000を参照して、型変換群305に含まれる型変換を生成する。
そして、型変換管理部304は、生成された型変換に型変換処理の実行を要求する。なお、型変換は、データ型の型変換処理を実行するプログラムやモジュール等により実現され、例えばクラスや関数等で定義される。また、型変換の生成とは、例えばクラスや関数等で定義された型変換を、メモリ(例えばRAM14上)に展開することである。
なお、データ型には、例えば、ストリームデータを示すデータ型「InputStream」、記憶装置等に格納されている電子ファイルのパス(アドレス)を示す「LocalFilePath」、及び電子ファイルの実体を示す「File」等が挙げられる。
ここで、型変換情報テーブル3000について、図7を参照しながら説明する。図7は、型変換情報テーブルの一例を示す図である。
図7に示す型変換情報テーブル3000は、データ項目として、変換前のデータ型と、変換後のデータ型と、生成する型変換とを有する。すなわち、型変換情報テーブル3000に格納されている型変換情報は、変換前のデータ型及び変換後のデータ型毎に、当該変換前のデータ型を、当該変換後のデータ型に変換するための型変換が関連付けられた情報である。
型変換群305は、型変換の集合である。型変換群305には、データ型「InputStream」を「LocalFilePath」に変換するための第1の型変換501が含まれる。なお、型変換群305には、これ以外にも、例えば、データ型「LocalFilePath」を「File」に変換するための第2の型変換等が含まれる。
また、型変換群305に含まれる各型変換は、型変換共通I/F500を有する。型変換共通I/F500は、各型変換に対して共通に定義されたAPIであり、型変換を生成するためのAPIと、型変換の型変換処理を実行するためのAPIとが含まれる。
このように、各型変換が型変換共通I/F500を有することで、型変換の追加等に伴う影響を局所化することができる。すなわち、例えば、型変換管理部304等に影響を与えることなく、型変換の追加等を行うことができる。これにより、本実施形態に係るサービス提供システム10では、型変換の追加等に伴う開発工数を削減することができる。
リソース管理部306は、リソース管理情報記憶部170に記憶されたリソース管理情報170Dを管理する。すなわち、リソース管理部306は、各コンポーネントからの要求に応じて、当該コンポーネントの処理結果を、リソース管理情報170Dとしてリソース管理情報記憶部170に記憶させる。
パラメータ置換部307は、各コンポーネントに対するパラメータ情報を置換する。すなわち、パラメータ置換部307は、フロー実行コンポーネント401からの要求に応じて、パラメータ情報に含まれるパラメータ値を、当該パラメータ値として定義されている置換指定に対応するリソースに置換する。
ここで、「OCR配信」サービスを提供するアプリ情報1000に含まれる処理フロー情報1100について、図8を参照しながら説明する。図8は、親フローの処理フロー情報の一例を示す図である。なお、以降では、処理フロー情報1100に基づく処理フローを「親フロー」、親フローから呼び出されることにより実行される他の処理フローを「子フロー」とも表す。
図8に示す処理フロー情報1100は、「OCR配信」サービスを実現する一連の処理(処理フロー)が定義された情報である。
図8に示す処理フロー情報1100には、処理フロー情報1100を一意に識別する識別情報を示すフローID1101と、処理フローに含まれる各処理の処理内容が定義されたフロー詳細1102とが含まれる。
フロー詳細1102には、処理フローに含まれる各処理をそれぞれ定義した処理定義1111〜1113が含まれる。各処理定義1111〜1113には、処理を実行するためのコンポーネントのコンポーネント名を示す「"component"」と、当該コンポーネントに対するパラメータ情報が定義される「"parameters"」とが含まれる。
具体的には、処理定義1111の「"component"」には、リスト取得コンポーネント402のコンポーネント名「"getFileList"」が定義されている。また、「"parameters"」には、リスト取得コンポーネント402に対するパラメータ情報として、パラメータ名「"storage"」と、パラメータ値「null」とが定義されている。なお、パラメータ名「"storage"」のパラメータ情報には、電子ファイルの格納先リストを取得する外部ストレージシステム30の識別情報がパラメータ値として定義される。
同様に、処理定義1113の「"component"」には、メール配信コンポーネント403のコンポーネント名「"sendMail"」が定義されている。また、「"parameters"」には、メール配信コンポーネント403に対するパラメータ情報として、パラメータ名「"to"」と、パラメータ値「null」とが定義されている。なお、パラメータ名「"to"」のパラメータ情報には、メールの配信先となるメールアドレスがパラメータ値として定義される。
同様に、処理定義1112の「"component"」には、フロー実行コンポーネント401のコンポーネント名「"execute"」が定義されている。また、「"parameters"」には、フロー実行コンポーネント401に対するパラメータ情報1121として、パラメータ名「"flowid"」と、パラメータ値「"flow101"」とが定義されている。なお、パラメータ名「"flowid"」のパラメータ情報1121には、フロー実行コンポーネント401が実行させる他の処理フローのフローIDがパラメータ値として定義される。
このように、フロー実行コンポーネント401による処理を定義した処理定義1112には、当該フロー実行コンポーネント401が実行させる他の処理フローのフローIDが定義されている。これにより、後述するように、フロー実行コンポーネント401により、他の処理フローを実行させることができる。
なお、各処理定義に定義された処理の実行順は、フロー詳細1102において、上から順に定義される。すなわち、図8に示す処理フロー情報1100に基づく一連の処理(処理フロー)では、処理定義1111に定義された処理、処理定義1112に定義された処理、処理定義1113に定義された処理の順で実行される。ただし、これに限られず、処理フロー情報1100には、例えば、各処理定義に定義された処理の実行順を示す情報が定義されていても良い。
ここで、図8に示す処理フロー情報1100に定義されたフロー実行コンポーネント401が実行させる他の処理フロー(子フロー)の処理フロー情報1100について、図9を参照しながら説明する。図9は、子フローの処理フロー情報の一例を示す図である。
図9に示す処理フロー情報1100は、図8に示す処理フロー情報1100に基づく一連の処理から呼び出される他の処理フローを実行するための処理フロー情報1100である。
図9に示す処理フロー情報1100には、処理フロー情報1100を一意に識別する識別情報を示すフローID1201と、処理フローに含まれる各処理の処理内容が定義されたフロー詳細1202とが含まれる。
フロー詳細1202には、処理フローに含まれる各処理をそれぞれ定義した処理定義1212〜1222が含まれる。各処理定義1212〜1222には、処理を実行するためのコンポーネントのコンポーネント名を示す「"component"」と、当該コンポーネントに対するパラメータ情報が定義される「"parameters"」とが含まれる。
具体的には、処理定義1212の「"component"」には、ファイル取得コンポーネント404のコンポーネント名「"getFile"」が定義されている。また、「"parameters"」には、ファイル取得コンポーネント404に対するパラメータ情報として、パラメータ名「"location"」と、パラメータ値「"#{result.getFileList.url[0]}"」が定義されている。なお、パラメータ名「"location"」は、電子ファイルの格納先リストを示す情報がパラメータ値として定義される。
ここで、パラメータ値「"#{result.getFileList.url[0]}"」は置換指定である。置換指定「"#{result.getFileList.url[0]}"」は、当該パラメータ値を、後述するリソース管理情報170Dの「result.getFileList.url[0]」で識別されるリソースに置換するための指定である。
同様に、処理定義1222の「"component"」には、OCRコンポーネント405のコンポーネント名「"ocr"」が定義されている。また、「"parameters"」には、OCRコンポーネント405に対するパラメータ情報として、パラメータ名「"language"」と、パラメータ値「"English"」とが定義されている。なお、パラメータ名「"language"」には、OCR言語がパラメータ値として定義される。
ここで、図8に示す処理フロー情報1100に基づく処理フロー(すなわち、「OCR配信」サービスを実現する処理フロー)を、図10に示す。図10は、「OCR配信」サービスを実現する処理フローの一例を説明するための図である。
図10に示すように、「OCR配信」サービスを実現する処理フローでは、まず、リスト取得コンポーネント402により、外部ストレージシステム30に格納されている電子ファイルの格納先リストが取得される。
次に、フロー実行コンポーネント401により、図9に示す処理フロー情報1100に基づく処理フローである子フローが実行される。すなわち、フロー実行コンポーネント401は、ファイル取得コンポーネント404による処理と、OCRコンポーネント405による処理とを実行させる。これにより、格納先リストに含まれる格納先のうち、最新の電子ファイルの格納先に基づいて、当該最新の電子ファイルが取得(ダウンロード)され、OCR処理が行われる。
最後に、メール配信コンポーネント403により、OCR処理後の電子ファイルがメール配信される。
このように、「OCR配信」サービスでは、親フローのフロー実行コンポーネント401が子フロー(他の処理フロー)を実行させることで、処理フローにおいて他の処理フローの呼び出しを実現している。なお、子フローにフロー実行コンポーネント401が含まれる場合には、他の処理フロー(孫フロー)を実行させれば良い。
次に、本実施形態に係る情報処理システムの処理の詳細について説明する。
以降では、機器20のユーザUが、ブラウザ210を用いて、サービス提供システム10により提供されるサービスを利用する場合の処理について、図11を参照しながら説明する。図11は、本実施形態に係るサービス利用の全体処理の一例を示すシーケンス図である。
ユーザUは、機器20のブラウザ210を用いて、アプリ情報1000により提供されるサービスの一覧を表示させるための表示操作を行う(ステップS1101)。
機器20のブラウザ210は、サービスの一覧を表示させるための表示操作を受け付けると、サービス一覧画面の取得要求を、サービス提供システム10のWebサービス処理部120に送信する(ステップS1102)。
Webサービス処理部120は、サービス一覧画面の取得要求を受信すると、当該サービス一覧画面の画面情報2000を画面情報記憶部160から取得する(ステップS1103)。そして、Webサービス処理部120は、サービス一覧画面の画面情報2000をブラウザ210に返信する。
なお、サービス一覧画面の画面情報2000には、サービス毎に、当該サービスを提供するアプリ情報1000のアプリIDと、当該アプリ情報1000に含まれる処理フロー情報1100のフローIDとが含まれる。
機器20のブラウザ210は、サービス一覧画面の画面情報2000を受信すると、当該画面情報2000に基づいて、例えば図12(a)に示すサービス一覧画面4100を操作パネル22に表示させる(ステップS1104)。
図12(a)に示すサービス一覧画面4100には、サービス提供システム10により提供されるサービス名の一覧であるサービス名一覧4101が含まれる。
次に、ユーザUは、サービス一覧画面4100のサービス名一覧4101から、所望のサービスを選択する操作を行う(ステップS1105)。ここで、以降では、サービス一覧画面4100のサービス名一覧4101から「OCR配信」が選択されたものとして説明する。
機器20のブラウザ210は、サービスの選択操作を受け付けると、サービス画面の取得要求をWebサービス処理部120に送信する(ステップS1106)。なお、当該取得要求には、ユーザUにより選択された「OCR配信」サービスを提供するアプリ情報1000のアプリIDが含まれる。
Webサービス処理部120は、サービス画面の取得要求を受信すると、当該取得要求に含まれるアプリIDに関連付けて画面情報記憶部160に記憶されている画面情報2000(サービス画面の画面情報2000)を取得する(ステップS1107)。そして、Webサービス処理部120は、取得した画面情報2000をブラウザ210に返信する。
機器20のブラウザ210は、サービス画面の画面情報2000を受信すると、当該画面情報2000に基づいて、例えば図12(b)に示すサービス画面4200を操作パネル22に表示させる(ステップS1108)。
図12(b)に示すサービス画面4200は、ユーザUにより選択された「OCR配信」サービスを利用するための画面である。図12(b)に示すサービス画面4200には、ストレージ指定欄4201と、メールアドレス指定欄4202と、実行ボタン4203とが含まれる。
ここで、ストレージ指定欄4201は、電子ファイルの格納先リストを取得する外部ストレージシステム30のストレージサービス名を指定する欄である。メールアドレス指定欄4202は、OCR処理された電子ファイルをメール送信する宛先(メールアドレス)を指定する欄である。なお、サービス画面4200には、例えば、OCR処理された電子ファイルをCCやBCCでメール送信する宛先を指定するためのCC指定欄やBCC指定欄等が含まれていても良い。
次に、ユーザUは、サービス画面4200において、ストレージ指定欄4201に所望のストレージサービス名を指定すると共に、メールアドレス指定欄4202に所望のメールアドレスを指定した上で、実行ボタン4203を押下する(ステップS1109)。
ここで、以降では、ユーザUにより、ストレージ指定欄4201に「ストレージA」が指定されると共に、メールアドレス指定欄4202にメールアドレス「hoge@fuga.com」が指定された上で、実行ボタン4203が押下されたものとして説明する。
機器20のブラウザ210は、実行ボタン4203の押下操作を受け付けると、「OCR配信」サービスを実現する処理フローの実行要求をWebサービス処理部120に送信する(ステップS1110)。
なお、当該実行要求には、「OCR配信」サービスを提供するアプリ情報1000のアプリIDと、当該サービスを実現するための処理フロー情報1100のフローIDが含まれる。また、当該実行要求には、サービス画面4200においてユーザUにより入力された入力情報(すなわち、ストレージサービス名及びメールアドレス)が含まれる。
Webサービス処理部120は、処理フローの実行要求を受信すると、当該実行要求を、入出力サービス処理部110のロジック処理部112に送信する(ステップS1111)。
入出力サービス処理部110のロジック処理部112は、処理フローの実行要求を受信すると、当該実行要求に含まれるアプリID及びフローIDに対応する処理フロー情報1100に基づく一連の処理(すなわち、親フロー)を実行する(ステップS1112)。
そして、ロジック処理部112は、当該一連の処理の処理結果を、Webサービス処理部120を介して、機器20のブラウザ210に返信する。
これにより、本実施形態に係るサービス提供システム10において、「OCR配信」サービスを実現する一連の処理が実行され、機器20に対して当該サービスが提供される。
ここで、上記のステップS1112の処理フローの実行処理(親フローの実行処理)の詳細について、図13を参照しながら説明する。図13は、本実施形態に係る親フローの実行処理の一例を示すシーケンス図である。
フロー実行部301は、処理フローの実行要求を受信すると、処理フロー情報の取得要求をアプリ管理部111に送信する(ステップS1301)。なお、当該取得要求には、Webサービス処理部120から受信した処理フローの実行要求に含まれるアプリIDと、フローIDとが含まれる。
アプリ管理部111は、処理フロー情報の取得要求を受信すると、当該取得要求に含まれるアプリID及びフローIDに対応する処理フロー情報1100をアプリ情報記憶部150から取得する(ステップS1302)。そして、アプリ管理部111は、取得した処理フロー情報1100をフロー実行部301に返信する。これにより、フロー実行部301には、図8に示す処理フロー情報1100が返信される。
フロー実行部301は、アプリ管理部111から処理フロー情報1100を受信すると、当該処理フロー情報1100に基づくコンポーネントの取得要求をコンポーネント管理部302に送信する(ステップS1303)。
すなわち、フロー実行部301は、図8に示す処理フロー情報1100の処理定義1111に含まれる「"component"」に定義されているコンポーネント名「"getFileList"」のコンポーネントの取得要求をコンポーネント管理部302に送信する。
コンポーネント管理部302は、コンポーネントの取得要求を受信すると、コンポーネント名「"getFileList"」のコンポーネント(すなわち、リスト取得コンポーネント402)を生成する(ステップS1304)。なお、リスト取得コンポーネント402の生成は、コンポーネント共通I/F400に定義されたコンポーネントを生成するためのAPIを用いて行うことができる。
そして、コンポーネント管理部302は、生成したリスト取得コンポーネント402をフロー実行部301に返信する。すなわち、コンポーネント管理部302は、例えば、リスト取得コンポーネント402が展開されたメモリ(例えばRAM14)上のアドレスをフロー実行部301に返信する。
次に、フロー実行部301は、コンポーネント実行要求をリスト取得コンポーネント402に送信する(ステップS1305)。なお、当該実行要求には、データと、パラメータ情報とが含まれる。
ここで、データは、データ型「InputStream」として、ブラウザ210から受信した入力情報(すなわち、ストレージサービス名「ストレージA」)である。すなわち、フロー実行部301は、ブラウザ210からデータ型「InputStream」として渡された入力情報に含まれるストレージサービス名を、単に「データ」として(データ型を意識することなく)、リスト取得コンポーネント402に渡して処理の実行を要求する。本実施形態では、このようにデータ型を意識しない各種の情報(例えば、入力情報や電子ファイル等)を、単に「データ」と表す。
また、パラメータ情報は、図8に示す処理フロー情報1100の処理定義1111に含まれる「"parameters"」に定義されている「"storage":null」である。
リスト取得コンポーネント402は、コンポーネント実行要求を受信すると、コンポーネントの実行処理を行う(ステップS1306)。そして、リスト取得コンポーネント402は、当該実行処理の処理結果を示すデータをフロー実行部301に返信する。
なお、ここで返信されるデータには、例えば、リスト取得コンポーネント402の実行処理が正常に終了したことを示す情報が含まれる。
ここで、リスト取得コンポーネント402の実行処理について、図14を参照しながら説明する。図14は、本実施形態に係るリスト取得コンポーネント402の実行処理の一例を示すシーケンス図である。
まず、リスト取得コンポーネント402は、型変換要求を型変換管理部304に送信する(ステップS1401)。なお、当該型変換要求には、データと、リスト取得コンポーネント402が扱うことができるデータ型を示す「LocalFilePath」の指定とが含まれる。
型変換管理部304は、型変換要求を受信すると、当該型変換要求に含まれるデータのデータ型と、指定されたデータ型とが一致するか否かをチェックする(ステップS1402)。
ここで、受信した型変換要求に含まれるデータのデータ型は「InputStream」である一方、指定されたデータ型は「LocalFilePath」である。したがって、型変換管理部304は、型変換要求に含まれるデータのデータ型と、指定されたデータ型とが一致しないものと判断する。
すると、型変換管理部304は、型変換情報テーブル3000を参照して、「InputStream」を「LocalFilePath」に変換するための第1の型変換501を特定して、当該特定した第1の型変換501を生成する(ステップS1403)。なお、第1の型変換501の生成は、型変換共通I/F500に定義されたAPIを用いて行うことができる。
次に、型変換管理部304は、生成された第1の型変換501に対して、型変換要求を送信する(ステップS1404)。なお、当該型変換要求には、データが含まれる。
第1の型変換501は、型変換要求を受信すると、当該要求に含まれるデータのデータ型を「InputStream」から「LocalFilePath」に変換する(ステップS1405)。そして、第1の型変換501は、当該変換後のデータを、型変換管理部304を介して、リスト取得コンポーネント402に返信する。
リスト取得コンポーネント402は、型変換後のデータを受信すると、パラメータ情報を用いて処理を実行する(ステップS1406)。すなわち、リスト取得コンポーネント402は、パラメータ情報に含まれるパラメータ名「"storage"」のパラメータ値に、データに含まれる「ストレージA」を指定して、リスト取得処理を実行する。
より具体的には、リスト取得コンポーネント402は、データI/F部113を介して、外部サービス連携部1401のデータ処理部142に対して、図5(c)に示すAPI「/外部サービス名/data/files」を用いて、ファイル一覧を取得する。これにより、リスト取得コンポーネント402により、ストレージAにおける電子ファイルの格納先リストが取得される。
次に、リスト取得コンポーネント402は、処理を実行すると、処理結果の保存要求をリソース管理部306に送信する(ステップS1407)。なお、当該保存要求には、リスト取得コンポーネント402の処理の結果を示すデータ(すなわち、電子ファイルの格納先リスト)が含まれる。
リソース管理部306は、処理結果の保存要求を受信すると、当該保存要求に含まれるデータに基づいて、リソース管理情報記憶部170に記憶されているリソース管理情報170Dに処理結果を保存する(ステップS1408)。そして、リソース管理部306は、保存結果をリスト取得コンポーネント402に返信する。
ここで、リソース管理情報170Dに保存されたリスト取得コンポーネント402の処理結果について、図15を参照しながら説明する。図15は、リソース管理情報の一例を示す図である。
図15に示すように、リソース管理情報170Dには、リスト取得コンポーネント402の処理結果171が保存されている。すなわち、処理結果171には、電子ファイルの格納先URL(Uniform Resource Locator)を示す「"url[0]"」〜「"url[N-1]"」と、格納先リストのサイズ(すなわち、格納先URLの数)を示す「"size"」とが含まれる。換言すれば、処理結果171には、電子ファイルの格納先URLがそれぞれ格納された配列「"url[0]"」〜「"url[N−1]"」と、当該配列の個数「"size"」とが含まれる。
また、配列「"url[0]"」〜「"url[N−1]"」には、電子ファイルの作成日の降順に、これら電子ファイルの格納先URLが格納されている。これにより、配列「"url[0]"」には、最新の電子ファイルの格納先URLが格納されている一方で、配列「"url[N−1]"」には、最も古い電子ファイルの格納先URLが格納されている。
このように、リソース管理情報170Dには、一連の処理に含まれる各処理を実行するためのコンポーネントの処理結果が保存される。
図13に戻る。フロー実行部301は、コンポーネントの実行処理の処理結果を示すデータを受信すると、処理フロー情報1100に基づくコンポーネントの取得要求をコンポーネント管理部302に送信する(ステップS1307)。
すなわち、フロー実行部301は、図8に示す処理フロー情報1100の処理定義1112に含まれる「"component"」に定義されているコンポーネント名「"execute"」のコンポーネントの取得要求をコンポーネント管理部302に送信する。
コンポーネント管理部302は、コンポーネントの取得要求を受信すると、コンポーネント名「"execute"」のコンポーネント(すなわち、フロー実行コンポーネント401)を生成する(ステップS1308)。なお、フロー実行コンポーネント401の生成は、コンポーネント共通I/F400に定義されたコンポーネントを生成するためのAPIを用いて行うことができる。
そして、コンポーネント管理部302は、生成したフロー実行コンポーネント401をフロー実行部301に返信する。すなわち、コンポーネント管理部302は、例えば、フロー実行コンポーネント401が展開されたメモリ(例えばRAM14)上のアドレスをフロー実行部301に返信する。
次に、フロー実行部301は、コンポーネント実行要求をフロー実行コンポーネント401に送信する(ステップS1309)。なお、当該実行要求には、データと、パラメータ情報とが含まれる。
ここで、パラメータ情報は、図8に示す処理フロー情報1100の処理定義1112に含まれる「"parameters"」に定義されているパラメータ情報1121(すなわち、「"flowid":"flow101"」)である。
フロー実行コンポーネント401は、コンポーネント実行要求を受信すると、コンポーネントの実行処理を行う(ステップS1310)。そして、フロー実行コンポーネント401は、当該実行処理の処理結果を示すデータをフロー実行部301に返信する。なお、フロー実行コンポーネント401の実行処理の詳細については後述する。
以降では、フロー実行コンポーネント401の実行処理により、子フローが実行され、電子ファイルの格納先URLを示す「"url[0]"」に基づいて、最新の電子ファイルが取得されて、当該電子ファイルに対してOCR処理が行われたものとして説明する。
なお、ここで返信されるデータには、例えば、フロー実行コンポーネント401の実行処理が正常に終了したことを示す情報と、OCR処理後の電子ファイルとが含まれる。
フロー実行部301は、コンポーネントの実行処理の処理結果を示すデータを受信すると、処理フロー情報1100に基づくコンポーネントの取得要求をコンポーネント管理部302に送信する(ステップS1311)。
すなわち、フロー実行部301は、図8に示す処理フロー情報1100の処理定義1113に含まれる「"component"」に定義されているコンポーネント名「"sendMail"」のコンポーネントの取得要求をコンポーネント管理部302に送信する。
コンポーネント管理部302は、コンポーネントの取得要求を受信すると、コンポーネント名「"sendMail"」のコンポーネント(すなわち、メール配信コンポーネント403)を生成する(ステップS1312)。なお、メール配信コンポーネント403の生成は、コンポーネント共通I/F400に定義されたコンポーネントを生成するためのAPIを用いて行うことができる。
そして、コンポーネント管理部302は、生成したメール配信コンポーネント403をフロー実行部301に返信する。すなわち、コンポーネント管理部302は、例えば、メール配信コンポーネント403が展開されたメモリ(例えばRAM14)上のアドレスをフロー実行部301に返信する。
次に、フロー実行部301は、コンポーネント実行要求をメール配信コンポーネント403に送信する(ステップS1313)。なお、当該実行要求には、データと、パラメータ情報とが含まれる。
ここで、データには、入力情報に含まれるメールアドレス「hoge@fuga.com」が含まれる。
また、パラメータ情報は、図8に示す処理フロー情報1100の処理定義1113に含まれる「"parameters"」に定義されている「"to":null」である。
メール配信コンポーネント403は、コンポーネント実行要求を受信すると、コンポーネントの実行処理を行う(ステップS1314)。そして、メール配信コンポーネント403は、当該実行処理の処理結果を示すデータをフロー実行部301に返信する。
なお、ここで返信されるデータには、例えば、メール配信コンポーネント403の実行処理が正常に終了したことを示す情報が含まれる。
ここで、メール配信コンポーネント403の実行処理について、図16を参照しながら説明する。図16は、本実施形態に係るメール配信コンポーネント403の実行処理の一例を示すシーケンス図である。
まず、メール配信コンポーネント403は、型変換要求を型変換管理部304に送信する(ステップS1601)。なお、当該型変換要求には、データと、メール配信コンポーネント403が扱うことができるデータ型を示す「LocalFilePath」の指定とが含まれる。
型変換管理部304は、型変換要求を受信すると、当該型変換要求に含まれるデータのデータ型と、指定されたデータ型とが一致するか否かをチェックする(ステップS1602)。
ここで、受信した型変換要求に含まれるデータのデータ型は「LocalFilePath」であり、指定されたデータ型も「LocalFilePath」である。したがって、型変換管理部304は、型変換要求に含まれるデータのデータ型と、指定されたデータ型とが一致するものと判断する。
すると、型変換管理部304は、型変換要求に含まれるデータを、メール配信コンポーネント403に返信する。このように、データ型のチェックにおいてデータ型が一致するものと判断された場合、型変換管理部304は、型変換の生成を行わない。
メール配信コンポーネント403は、データを受信すると、パラメータ情報を用いて処理を実行する(ステップS1603)。すなわち、メール配信コンポーネント403は、まず、パラメータ情報に含まれるパラメータ名「"to"」のパラメータ値に、データに含まれるメールアドレス「hoge@fuga.com」を指定する。そして、メール配信コンポーネント403は、データに含まれる電子ファイルを添付したメールを作成した上で、指定されたメールアドレス宛にメールを送信する。なお、メール配信コンポーネント403は、ドキュメントサービス部130のメール配信部131により、メールの作成及び送信処理を実行する。
ここで、上記のステップS1310におけるフロー実行コンポーネント401の実行処理について、図17を参照しながら説明する。図17は、本実施形態に係るフロー実行コンポーネントの実行処理の一例を示すシーケンス図である。
まず、フロー実行コンポーネント401は、型変換要求を型変換管理部304に送信する(ステップS1701)。なお、当該型変換要求には、データと、フロー実行コンポーネント401が扱うことができるデータ型を示す「LocalFilePath」の指定とが含まれる。
型変換管理部304は、型変換要求を受信すると、当該型変換要求に含まれるデータのデータ型と、指定されたデータ型とが一致するか否かをチェックする(ステップS1702)。
ここで、受信した型変換要求に含まれるデータのデータ型は「LocalFilePath」であり、指定されたデータ型も「LocalFilePath」である。したがって、型変換管理部304は、型変換要求に含まれるデータのデータ型と、指定されたデータ型とが一致するものと判断する。
すると、型変換管理部304は、型変換要求に含まれるデータを、フロー実行コンポーネント401に返信する。このように、データ型のチェックにおいてデータ型が一致するものと判断された場合、型変換管理部304は、型変換の生成を行わない。
フロー実行コンポーネント401は、データを受信すると、処理フロー情報の取得要求をアプリ管理部111に送信する(ステップS1703)。なお、当該取得要求には、フローIDとして、パラメータ情報1121に含まれるパラメータ名「"flowid"」のパラメータ値「"flow101"」が含まれる。
アプリ管理部111は、処理フロー情報の取得要求を受信すると、当該取得要求に含まれるフローIDに対応する処理フロー情報1100をアプリ情報記憶部150から取得する(ステップS1704)。そして、アプリ管理部111は、取得した処理フロー情報1100をフロー実行コンポーネント401に返信する。これにより、フロー実行コンポーネント401には、図9に示す処理フロー情報1100が返信される。
なお、パラメータ情報1121には、パラメータ名「"flowid"」及びパラメータ値「"flow101"」に代えて、例えば、図9に示す処理フロー情報1100に含まれるフロー詳細1201が定義されていても良い。この場合、上記のステップS1703において、フロー実行コンポーネント401は、処理フロー情報の取得要求をアプリ管理部111に送信しなくても良い。
次に、フロー実行コンポーネント401は、アプリ管理部111から返信された処理フロー情報1100に含まれるパラメータ情報を評価する(ステップS1705)。すなわち、フロー実行コンポーネント401は、図9に示す処理フロー情報1100の処理定義1212〜1222のパラメータ情報に置換指定が含まれるか否かを判定する。換言すれば、フロー実行コンポーネント401は、子フローの処理フロー情報1100のパラメータ情報に置換指定が含まれるか否かを判定する。
ここで、図9に示す処理フロー情報1100の処理定義1212のパラメータ情報には、パラメータ名「"location"」のパラメータ値に置換指定「"#{result.getFileList.url[0]}"」が定義されている。したがって、本実施形態では、フロー実行コンポーネント401は、パラメータ情報に置換指定が含まれると判定する。
ステップS1705において、子フローの処理フロー情報1100のパラメータ情報に置換指定が含まれると判定された場合、フロー実行コンポーネント401は、パラメータ情報の置換要求をパラメータ置換部307に送信する(ステップS1706)。なお、当該置換要求には、置換指定が含まれるパラメータ情報「"location":"#{result.getFileList.url[0]}"」が含まれる。
次に、パラメータ置換部307は、パラメータ情報の置換要求を受信すると、リソースの取得要求をリソース管理部306に送信する(ステップS1707)。なお、当該取得要求には、置換指定「"#{result.getFileList.url[0]}"」が含まれる。
リソース管理部306は、リソースの取得要求を受信すると、当該取得要求に含まれる置換指定に対応するリソースを、リソース管理情報記憶部170に記憶されているリソース管理情報170Dから取得する(ステップS1708)。そして、リソース管理部306は、取得したリソースをパラメータ置換部307に返信する。
すなわち、リソース管理部306は、図15に示すリソース管理情報170Dに保存されている処理結果171に含まれる配列「"url[0]"」に対応するリソース(すなわち、格納先URL「"http://service_a.com/user1/file20150228.jpg"」)を取得する。そして、リソース管理部306は、リソース「"http://service_a.com/user1/file20150228.jpg"」をパラメータ置換部307に返信する。
次に、パラメータ置換部307は、リソース管理部306からリソースが返信されると、パラメータ情報に含まれるパラメータ値に定義されている置換指定を、当該リソースで置換する(ステップS1709)。そして、パラメータ置換部307は、置換後のパラメータ情報をフロー実行コンポーネント401に返信する。
すなわち、パラメータ置換部307は、パラメータ情報「"location":"#{result.getFileList.url[0]}"」の置換指定「"#{result.getFileList.url[0]}」を、リソース「"http://service_a.com/user1/file20150228.jpg"」で置換する。そして、パラメータ置換部307は、置換後のパラメータ情報「"location":"http://service_a.com/user1/file20150228.jpg"」をフロー実行コンポーネント401に返信する。
次に、フロー実行コンポーネント401は、ステップS1704で取得された処理フロー情報1100に基づいて、置換後のパラメータ情報が定義された処理フロー情報1100を作成する(ステップS1710)。
すなわち、フロー実行コンポーネント401は、図9に示す処理フロー情報1100に基づいて、図18に示す処理フロー情報1100を作成する。図18に示す処理フロー情報1100では、処理定義1212において、置換後のパラメータ情報1301が定義されている。
このように、フロー実行コンポーネント401は、パラメータ情報に含まれるパラメータ値に置換指定が定義されている場合には、当該パラメータ値を、当該置換指定に対応するリソースに置換した処理フロー情報1100を作成する。
フロー実行コンポーネント401は、処理フローの実行要求をフロー実行部301に送信する(ステップS1711)。なお、当該実行要求には、データと、処理フロー情報1100が含まれる。
ここで、処理フローの実行要求に含まれる処理フロー情報1100は、上記のステップS1705で子フローの処理フロー情報1100のパラメータ情報に置換指定が含まれると判定された場合、置換後のパラメータ情報が定義された処理フロー情報1100である。一方、上記のステップS1705で子フローの処理フロー情報1100のパラメータ情報に置換指定が含まれないと判定された場合、上記のステップS1704で取得された処理フロー情報1100である。
次に、フロー実行部301は、処理フローの実行要求を受信すると、当該実行要求に含まれる処理フロー情報1100に基づく一連の処理(すなわち、子フロー)を実行する(ステップS1712)。
そして、フロー実行部301は、当該一連の処理の処理結果を示すデータをフロー実行コンポーネント401に返信する。
このように、フロー実行コンポーネント401は、他の処理フロー(子フロー)の実行要求をフロー実行部301に送信することで、当該子フローを実行させる。これにより、本実施形態に係るサービス提供システム10では、フロー実行コンポーネント401により、他の処理フローの呼び出しを実現することができる。
ここで、上記のステップS1712における子フローの実行処理について、図19を参照しながら説明する。図19は、本実施形態に係る子フローの実行処理の一例を示すシーケンス図である。
フロー実行部301は、処理フローの実行要求を受信すると、当該実行要求に含まれる処理フロー情報1100に基づくコンポーネントの取得要求をコンポーネント管理部302に送信する(ステップS1901)。
すなわち、フロー実行部301は、図18に示す処理フロー情報1100の処理定義1212に含まれる「"component"」に定義されているコンポーネント名「"getFile"」のコンポーネントの取得要求をコンポーネント管理部302に送信する。
コンポーネント管理部302は、コンポーネントの取得要求を受信すると、コンポーネント名「"getFile"」のコンポーネント(すなわち、ファイル取得コンポーネント404)を生成する(ステップS1902)。なお、ファイル取得コンポーネント404の生成は、コンポーネント共通I/F400に定義されたコンポーネントを生成するためのAPIを用いて行うことができる。
そして、コンポーネント管理部302は、生成したファイル取得コンポーネント404をフロー実行部301に返信する。すなわち、コンポーネント管理部302は、例えば、ファイル取得コンポーネント404が展開されたメモリ(例えばRAM14)上のアドレスをフロー実行部301に返信する。
次に、フロー実行部301は、コンポーネント実行要求をファイル取得コンポーネント404に送信する(ステップS1903)。なお、当該実行要求には、データと、パラメータ情報とが含まれる。
ここで、パラメータ情報は、図18に示す処理フロー情報1100の処理定義1212に含まれる「"parameters"」に定義されている置換後のパラメータ情報1301(すなわち、「"location":"http://service_a.com/user1/file20150228.jpg"」)である。
ファイル取得コンポーネント404は、コンポーネント実行要求を受信すると、コンポーネントの実行処理を行う(ステップS1904)。すなわち、ファイル取得コンポーネント404は、パラメータ名「"location"」のパラメータ値「"http://service_a.com/user1/file20150228.jpg"」により示される電子ファイルを取得(ダウンロード)する。
そして、ファイル取得コンポーネント404は、当該実行処理の処理結果を示すデータをフロー実行部301に返信する。なお、ここで返信されるデータには、ファイル取得コンポーネント404により取得(ダウンロード)された電子ファイルが含まれる。
これにより、ファイル取得コンポーネント404により、パラメータ名「"location"」により示される電子ファイル(すなわち、最新の電子ファイル)が取得される。
なお、上記では、ファイル取得コンポーネント404により、最新の電子ファイルが取得される場合について説明したが、これに限られない。例えば、処理定義1212に含まれる「"parameters"」のパラメータ情報「"location":#{result.getFileList.url[N−1]}」と定義することで、ファイル取得コンポーネント404により、配列「"url[N−1]"」が示す電子ファイル(すなわち、最も古い電子ファイル)を取得することもできる。
次に、フロー実行部301は、当該データを受信すると、フロー実行コンポーネント401から受信した処理フローの実行要求に含まれるパラメータ情報に基づくコンポーネントの取得要求をコンポーネント管理部302に送信する(ステップS1905)。
すなわち、フロー実行部301は、図18に示す処理フロー情報1100の処理定義1222に含まれる「"component"」に定義されているコンポーネント名「"ocr"」のコンポーネントの取得要求をコンポーネント管理部302に送信する。
コンポーネント管理部302は、コンポーネントの取得要求を受信すると、コンポーネント名「"ocr"」のコンポーネント(すなわち、OCRコンポーネント405)を生成する(ステップS1906)。なお、OCRコンポーネント405の生成は、コンポーネント共通I/F400に定義されたコンポーネントを生成するためのAPIを用いて行うことができる。
そして、コンポーネント管理部302は、生成したOCRコンポーネント405をフロー実行部301に返信する。すなわち、コンポーネント管理部302は、例えば、OCRコンポーネント405が展開されたメモリ(例えばRAM14)上のアドレスをフロー実行部301に返信する。
次に、フロー実行部301は、コンポーネント実行要求をOCRコンポーネント405に送信する(ステップS1907)。なお、当該実行要求には、データと、パラメータ情報とが含まれる。
ここで、パラメータ情報は、図18に示す処理フロー情報1100の処理定義1222に含まれる「"parameters"」に定義されている「"language":"English"」である。
OCRコンポーネント405は、コンポーネント実行要求を受信すると、コンポーネントの実行処理を行う(ステップS1908)。すなわち、OCRコンポーネント405は、OCR言語を英語として、データに含まれる電子ファイルにOCR処理を行う。なお、OCRコンポーネント405は、ドキュメントサービス部130のOCR処理部132により、電子ファイルにOCR処理を実行する。
そして、OCRコンポーネント405は、当該実行処理の処理結果を示すデータをフロー実行部301に返信する。なお、ここで返信されるデータには、OCR処理後の電子ファイルが含まれる。
以上のように、本実施形態に係るサービス提供システム10では、フロー実行コンポーネント401により、他の処理フロー(子フロー)を実行させる。また、このとき、本実施形態に係るサービス提供システム10では、子フローの処理フロー情報1100に定義されたパラメータ情報に置換指定が含まれる場合には、当該パラメータ情報に含まれるパラメータ値を置換する。
これにより、本実施形態に係るサービス提供システム10では、他のコンポーネントの処理結果等をパラメータ値として定義したパラメータ情報を用いて、他の処理フローを実行させることができるようになる。このため、本実施形態に係るサービス提供システム10では、他の処理フローを実行させる際に、当該他の処理フローに対するパラメータ情報として様々なコンポーネントの処理結果等を用いることができるようになる。
ここで、「OCR配信」サービスを実現する処理フローの処理フロー情報1100の他の例について、図20を参照しながら説明する。図20は、処理フロー情報1100の他の例を示す図である。
図20に示すように、処理定義1112に含まれる「"parameters"」には、他の処理フローを実行させるか否かを判定するためのパラメータ情報1123が定義されている。パラメータ情報1123には、他の処理フローを実行させるための「"(条件式)"」(例えば、論理式)が定義されている。これにより、フロー実行コンポーネント401は、「"(条件式)"」を満たす場合に他の処理フローを実行させる一方で、「"(条件式)"」を満たさない場合には他の処理フローを実行させないようにすることができる。
ここで、図20に示す処理フロー情報1100におけるフロー実行コンポーネント401の実行処理について、図21を参照しながら説明する。図21は、本実施形態に係るフロー実行コンポーネント401の実行処理の他の例を示すシーケンス図である。なお、ステップS1701〜ステップS1712の処理は、図17と同様であるため、その説明を省略する。
ステップS1702に続いて、フロー実行コンポーネント401は、パラメータ情報1123に定義された「"(条件式)"」を満たすか否かを判定する(ステップS2101)。
ステップS2101において、「"(条件式)"」を満たすと判定した場合、フロー実行コンポーネント401は、ステップS1703以降の処理を実行する。
一方で、ステップS2101において、「"(条件式)"」を満たさないと判定した場合、フロー実行コンポーネント401は、処理を終了させる。
これにより、フロー実行コンポーネント401は、「"(条件式)"」を満たさない場合は、子フローを実行させないようにすることができる。
以上のように、本実施形態に係るサービス提供システム10は、サービスを実現する一連の処理において、他の一連の処理を実行することができる。また、このとき、本実施形態に係るサービス提供システム10は、当該他の一連の処理に用いるパラメータ情報に、他のコンポーネントの処理結果等を用いることができる。
これにより、本実施形態に係るサービス提供システム10では、他の一連の処理を呼び出す一連の処理により実現される種々のサービスを提供することができるようになる。
本発明は、具体的に開示された上記の実施形態に限定されるものではなく、特許請求の範囲から逸脱することなく、種々の変形や変更が可能である。