以下、本発明の実施形態について、図面を参照しながら詳細に説明する。
[第一の実施形態]
<システム構成>
まず、本実施形態に係る情報処理システム1のシステム構成について、図1を参照しながら説明する。図1は、本実施形態に係る情報処理システム1の一例のシステム構成を示す図である。
図1に示す情報処理システム1は、サービス提供システム10と、機器20と、PC端末30と、外部ストレージシステム40とを含み、インターネット等の広域的なネットワークN1を介して通信可能に接続されている。
サービス提供システム10は、一台以上の情報処理装置で実現され、ネットワークN1を介して、クラウドサービス等の外部サービスと連携した一連の処理により実現される各種のサービスを提供する。
本実施形態に係るサービス提供システム10が提供するサービスの具体例については後述する。なお、以降では、一連の処理を「処理フロー」とも表す。
なお、本実施形態では、外部サービスの具体例としてクラウドサービスを採用して説明するが、これに限られない。本実施形態は、例えば、ASP(Application Service Provider)によって提供されるサービスやWebサービス等のネットワークを介して提供される各種の外部サービスに関して適用されても良い。
機器20は、ユーザが使用する各種の電子機器である。すなわち、機器20は、例えば、MFP(Multifunction Peripheral)等の画像形成装置、PC(パーソナルコンピュータ)、プロジェクタ、電子黒板、デジタルカメラ等である。ユーザは、機器20を用いて、サービス提供システム10が提供する各種のサービスを利用することができる。
なお、以降では、複数の機器20について、各々を区別するときは、「機器201」、「機器202」等と添え字を用いて記載する。
PC端末30は、例えば、ユーザが使用するデスクトップPC、ノート型PC、スマートフォン、タブレット端末等である。ユーザは、PC端末30を用いて、サービス提供システム10が提供する各種のサービスを利用することができる。
なお、以降では、複数のPC端末30について、各々を区別するときは、「PC端末301」、「PC端末302」等と添え字を用いて記載する。
外部ストレージシステム40は、ネットワークN1を介してストレージサービス(又はオンラインストレージ)と呼ばれるクラウドサービスを提供するコンピュータシステムである。ストレージサービスとは、外部ストレージシステム40のストレージの記憶領域を貸し出すサービスである。
なお、以降では、複数の外部ストレージシステム40について、各々を区別するときは、「外部ストレージシステム401」、「外部ストレージシステム402」等と添え字を用いて記載する。また、外部ストレージシステム401により提供されるストレージサービスの名称を「ストレージA」、外部ストレージシステム401により提供されるストレージサービスの名称を「ストレージB」等とする。
なお、外部ストレージシステム40は、複数台の情報処理装置によって実現されるシステムであっても良い。
また、図1に示す情報処理システム1の構成は一例であって、他の構成であっても良い。例えば、本実施形態に係る情報処理システム1には、電子データの入力及び出力の少なくとも一方を行う各種機器が含まれ、これらの機器がサービス提供システム10により提供される各種サービスを利用しても良い。
<ハードウェア構成>
次に、本実施形態に係る情報処理システム1に含まれるサービス提供システム10及びPC端末30のハードウェア構成について、図2を参照しながら説明する。図2は、本実施形態に係るサービス提供システム10及びPC端末30の一例のハードウェア構成を示す図である。なお、サービス提供システム10及びPC端末30は、同様のハードウェア構成を有しているため、以降では、主に、サービス提供システム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及びPC端末30は、図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が画像形成装置であるものとして説明する。
本実施形態では、機器20において原稿をスキャンして生成された電子ファイルを、OCR(Optical Character Reader)処理して、外部ストレージシステム40に保存するサービスを「OCR配信」サービスと表す。そして、本実施形態では、サービス提供システム10が「OCR配信」サービスを提供する場合について説明する。
ここで、サービス提供システム10が「OCR配信」サービスを提供するには、当該サービスを実現する一連の処理(処理フロー)をサービス提供システム10に登録する必要がある。
したがって、本実施形態では、「OCR配信」サービスを実現する一連の処理を登録する場合と、当該一連の処理により実現される「OCR配信」サービスを利用する場合とについて説明する。
ただし、サービス提供システム10により提供されるサービスは、これらに限られない。例えば、サービス提供システム10は、機器20において原稿をスキャンして生成された電子ファイルを、OCR処理して、所定のメールアドレス宛にメール送信するサービスを提供しても良い。また、例えば、サービス提供システム10は、外部ストレージシステム40に保存されている電子ファイルを、プロジェクタで投影するサービスを提供しても良い。更に、例えば、サービス提供システム10は、外部ストレージシステム40に保存されている電子ファイルを、機器20で印刷するサービスを提供しても良い。
<機能構成>
次に、本実施形態に係る情報処理システム1の機構構成について、図4を参照しながら説明する。図4は、第一の実施形態に係る情報処理システム1の一例の機能構成を示す図である。
図4に示す機器20は、UI制御部210と、スキャン処理部220とを有する。これら各機能部は、機器20にインストールされた1以上のプログラムが、CPU31に実行させる処理により実現される。
UI制御部210は、操作パネル22に各種画面を表示させる。また、UI制御部210は、操作パネル22に表示された各種画面におけるユーザの各種操作を受け付ける。
スキャン処理部220は、UI制御部210により受け付けられたユーザの操作に応じて、スキャナ26で原稿をスキャンして電子ファイル(画像ファイル)を生成する。
図4に示すPC端末30は、UI制御部310を有する。当該機能部は、PC端末30にインストールされた1以上のプログラムが、CPU16に実行させる処理により実現される。
UI制御部310は、表示装置12に各種画面を表示させる。また、UI制御部210は、表示装置12に表示された各種画面において、入力装置11により入力されたユーザの各種操作を受け付ける。
図4に示すサービス提供システム10は、サービス処理部110と、ドキュメントサービス部160と、外部ストレージ連携部170とを有する。これら各機能部は、サービス提供システム10にインストールされた1以上のプログラムが、CPU16に実行させる処理により実現される。
また、サービス提供システム10は、アプリ情報記憶部180を有する。当該記憶部は、HDD18を用いて実現可能である。なお、アプリ情報記憶部180は、サービス提供システム10とネットワークを介して接続される記憶装置等を用いて実現されても良い。
サービス処理部110は、機器20のUI制御部210からの要求に応じて、後述するアプリ情報1000により提供される各種サービスに関する処理を行う。また、サービス処理部110は、PC端末30のUI制御部310からの要求に応じて、アプリ情報1000に含まれる処理フロー情報1100の作成に関する処理を行う。
なお、処理フロー情報1100とは、アプリ情報1000により提供されるサービス(例えば、「OCR配信」サービス等)を実現するための一連の処理(処理フロー)が定義された情報である。
ここで、サービス処理部110は、アプリ管理部120と、ロジック処理部130と、フロー作成処理部140と、データI/F部150とを有する。
アプリ管理部120は、アプリ情報記憶部180に記憶されているアプリ情報1000を管理する。アプリ管理部120は、機器20のUI制御部210やPC端末30のUI制御部310からの要求に応じて、各種の情報を返信する。
例えば、アプリ管理部120は、機器20のUI制御部210からの要求に応じて、アプリ一覧情報を返信する。なお、アプリ一覧情報とは、アプリ情報1000の名称(アプリケーション名)やアプリ情報1000の識別情報(アプリID)の一覧を示す情報である。
また、例えば、アプリ管理部120は、ロジック処理部130からの要求に応じて、アプリ情報1000に含まれる処理フロー情報1100を返信する。
更に、アプリ管理部120は、フロー作成処理部140からの要求に応じて、PC端末30において作成された処理フロー情報1100をアプリ情報記憶部180に記憶させる。
ロジック処理部130は、機器20のUI制御部210からの要求に応じて、アプリ情報1000に含まれる処理フロー情報1100をアプリ管理部120から取得する。そして、ロジック処理部130は、取得した処理フロー情報1100に基づいて、ドキュメントサービス部160や外部ストレージ連携部170のファイル処理部171等に処理の実行を要求することで、当該処理フロー情報1100に基づく一連の処理を実行する。
なお、ロジック処理部130は、後述するコンポーネントを組み合わせることにより、処理フロー情報1100に基づく一連の処理を実行する。
これにより、本実施形態に係るサービス提供システム10では、アプリ情報1000により提供される各種サービスが実現される。ロジック処理部130の詳細については後述する。
フロー作成処理部140は、PC端末30のUI制御部310からの要求に応じて、処理フロー作成画面を返信する。なお、処理フロー作成画面とは、処理フロー情報1100を作成するための画面である。
そして、フロー作成処理部140は、処理フロー作成画面において作成された処理フローを示す処理フロー情報1100の登録をアプリ管理部120に要求する。
このように、本実施形態に係る情報処理システム1は、PC端末30において作成された処理フローをサービス提供システム10に登録することができる。
データI/F部150は、機器20のUI制御部210からの要求に応じて、外部ストレージ連携部170のデータ処理部172に対して、各種の要求(例えば、フォルダ一覧の取得要求等)を行う。
ドキュメントサービス部160は、処理フロー情報1100に基づく一連の処理(処理フロー)に含まれる所定の処理を実行する。ここで、ドキュメントサービス部160は、OCR処理部161と、メール送信部162とを有する。
OCR処理部161は、電子ファイルに対してOCR処理を行う。メール送信部162は、指定されたメールアドレス宛にメールを送信する。
なお、ドキュメントサービス部160には、これら以外にも、例えば、電子ファイルの圧縮又は解凍するための圧縮・解凍処理部、電子ファイルのデータ形式を変換するためのデータ形式変換部等、種々の機能部が含まれていても良い。
外部ストレージ連携部170は、ロジック処理部130やデータI/F部150からの要求に応じて、外部ストレージシステム40に対して、各種の要求(例えば、フォルダ一覧の取得要求等)を行う。
本実施形態に係るサービス提供システム10は、当該サービス提供システム10と連携して処理を行う外部ストレージシステム40毎に、それぞれの外部ストレージシステム40に対応する外部ストレージ連携部170を有する。すなわち、本実施形態に係るサービス提供システム10は、外部ストレージシステム401に対して各種の要求を行うための外部ストレージA連携部1701を有する。同様に、本実施形態に係るサービス提供システム10は、外部ストレージシステム402に対して各種の要求を行うための外部ストレージB連携部1702等を有する。
なお、以降では、複数の外部ストレージ連携部170について、各々を区別するときは、上記のように、「外部ストレージA連携部1701」、「外部ストレージB連携部1702」等と添え字を用いて表す。
ここで、外部ストレージ連携部170は、ロジック処理部130からの要求を受け付けるファイル処理部171と、データI/F部150からの要求を受け付けるデータ処理部172とを有する。
ファイル処理部171は、外部ストレージシステム40に保存されている電子ファイルに対する操作(例えば、取得、保存、編集等)を行うためのAPI(Application Programming Interface)が定義された共通I/F1711及び固有I/F1712を有する。
共通I/F1711は、複数の外部ストレージシステム40間で共通に利用できるAPIであり、例えば図5(a)に示すAPIが挙げられる。すなわち、ファイル処理部171の共通I/F1711は、全ての外部ストレージシステム40が利用できるファイル操作に関する機能(例えば、ファイルの取得、保存等)を利用するためのAPI群である。
一方、固有I/F1712は、特定の外部ストレージシステム40において利用できるAPIであり、例えば図5(b)に示すAPIが挙げられる。すなわち、ファイル処理部171の固有I/F1712は、ある特定の外部ストレージシステム40において利用できるファイル操作に関する機能(例えば、ドキュメントにファイルを付加等)を利用するためのAPI群である。
したがって、共通I/F1711は、全ての外部ストレージ連携部170に対して同様に定義される。一方で、固有I/F1712は、当該固有I/F1712で定義されるAPIが利用可能な特定の外部ストレージシステム40に対応する外部ストレージ連携部170に対して定義される。
データ処理部172は、外部ストレージシステム40に保存されている電子ファイルの書誌情報等のメタデータ(例えば、ファイル一覧やフォルダ一覧等)を取得等するためのAPIが定義された共通I/F1721及び固有I/F1722を有する。
共通I/F1721は、複数の外部ストレージシステム40間で共通に利用できるAPIであり、例えば図5(c)に示すAPIが挙げられる。すなわち、データ処理部172の共通I/F1721は、全ての外部ストレージシステム40で利用できるメタデータ取得に関する機能(例えば、ファイル一覧の取得、フォルダ一覧の取得等)を利用するためのAPI群である。
一方、固有I/F1722は、ある特定の外部ストレージシステム40において利用できるAPIであり、例えば図5(d)に示すAPIが挙げられる。すなわち、データ処理部172の固有I/F1722は、ある特定の外部ストレージシステム40において利用できるメタデータ取得等に関する機能(例えば、画像ファイル一覧の取得等)を利用するためのAPI群である。
したがって、共通I/F1721は、全ての外部ストレージ連携部170に対して同様に定義される。一方で、固有I/F1722は、当該固有I/F1722で定義されるAPIが利用可能な特定の外部ストレージシステム40に対応する外部ストレージ連携部170に対して定義される。
以上のように、本実施形態に係るサービス提供システム10は、当該サービス提供システム10と連携して処理を行う外部ストレージシステム40毎に、それぞれの外部ストレージシステム40に対応する外部ストレージ連携部170を有する。このため、連携先となる外部ストレージシステム40を追加や削除(以降、「追加等」と表す。)する場合、当該追加等される外部ストレージシステム40に対応する外部ストレージ連携部170をサービス提供システム10に追加等すれば良い。
これにより、本実施形態に係るサービス提供システム10では、連携先となる外部ストレージシステム40の追加等に伴う影響を局所化することができる。換言すれば、本実施形態に係るサービス提供システム10では、他の機能部(サービス処理部110やドキュメントサービス部160等)に影響を与えることなく、連携先となる外部ストレージシステム40の追加等を行うことができる。なお、外部ストレージ連携部170の追加等は、SDK(Software Development Kit)を用いて行うことができる。
また、外部ストレージ連携部170のファイル処理部171は、共通I/F1711と固有I/F1712とを異なるモジュール等で定義している。また、共通I/F1711及び固有I/F1712で定義されるAPIは、「外部ストレージ名」を指定することで利用できる(すなわち、「外部ストレージ名」が可変部分となっている。)。
これにより、外部ストレージ連携部170を追加する場合、他の外部ストレージ連携部170のファイル処理部171に定義されている共通I/F1711を再利用することができる。換言すれば、外部ストレージ連携部170を追加する場合、当該追加する外部ストレージ連携部170のファイル処理部171は、固有I/F1722のみを開発すれば良い。このことは、データ処理部172の共通I/F1721及び固有I/F1722についても同様である。
アプリ情報記憶部180は、機器20に各種サービスを提供するためのアプリケーションであるアプリ情報1000を記憶する。
アプリ情報1000は、当該アプリ情報1000を識別するためのアプリIDと、当該アプリ情報1000の名称(アプリ名)とが関連付けられてアプリ情報記憶部180に記憶されている。また、アプリ情報1000には、機器20に提供するサービスを実現するための一連の処理(処理フロー)が定義された処理フロー情報1100が含まれる。なお、処理フロー情報1100の詳細については後述する。
ここで、ロジック処理部130の詳細な機能構成について、図6を参照しながら説明する。図6は、第一の実施形態に係るロジック処理部130の一例の機能構成を示す図である。
図6に示すロジック処理部130は、フロー実行部131と、コンポーネント管理部132と、コンポーネント群133と、型変換管理部134と、型変換群135とを有する。また、ロジック処理部130は、処理情報テーブル2000と、型変換情報テーブル3000とを利用する。
フロー実行部131は、機器20のUI制御部210からの要求に応じて、アプリ情報1000に含まれる処理フロー情報1100をアプリ管理部120から取得する。そして、フロー実行部131は、アプリ管理部120から取得した処理フロー情報1100に基づいて、コンポーネントに対して処理の実行を要求する。
ここで、コンポーネントとは、処理フロー情報1100に基づく一連の処理(処理フロー)に含まれる所定の処理を実行するためのモジュール等である。したがって、処理フロー情報1100に基づく一連の処理は、1以上のコンポーネントにより実行される各処理が組み合わされることにより実現される。なお、コンポーネントは、例えばクラスや関数等で定義される。
コンポーネント管理部132は、フロー実行部131からの要求に応じて、コンポーネントの生成を行う。コンポーネントの生成とは、例えばクラスや関数等で定義されているコンポーネントを、メモリ(例えばRAM14)上に展開することである。
また、コンポーネント管理部132は、フロー作成処理部140からの要求に応じて、処理情報テーブル2000を返信する。
ここで、処理情報テーブル2000の詳細について、図7を参照しながら説明する。図7は、処理情報テーブル2000の一例を示す図である。
図7に示す処理情報テーブル2000には、1以上の処理情報が格納されている。また、処理情報は、データ項目として、コンポーネント名と、アイコンパスと、コンポーネントIDと、オペレーション名と、オペレーションIDと、パラメータ設定情報とを有する。
コンポーネント名は、コンポーネントの名称である。アイコンパスは、コンポーネント及びオペレーションを表すアイコン等の表示部品が格納されている格納先パス(例えば、URL(Uniform Resource Locator)等)である。
コンポーネントIDは、コンポーネントを識別する識別情報である。オペレーション名は、コンポーネントにより実行される処理を示すオペレーションの名称である。オペレーションIDは、オペレーションを識別する識別情報である。パラメータ設定情報は、コンポーネントにより実行される処理に用いられるパラメータ情報のパラメータ値を設定する際に用いられる各種情報である。
また、パラメータ設定情報には、パラメータ名、表示名、及び入力形式等が含まれる。パラメータ名は、パラメータ情報の名称である。表示名は、パラメータ情報のパラメータ値を設定するための画面(後述するパラメータ設定画面)に表示される表示名である。入力形式は、パラメータ値として設定可能なデータ形式や入力数(例えば、文字や数字、入力可能な文字数等)である。
例えば、コンポーネント名「外部ストレージAコンポーネント」(コンポーネントID「storageA」)は、オペレーション名「配信」(オペレーションID「uploadFile」)の処理(オペレーション)を実行することできる。このとき、外部ストレージAコンポーネントは、パラメータ名「folderID」のパラメータ情報を用いることが示されている。
同様に、例えば、コンポーネント名「外部ストレージAコンポーネント」(コンポーネントID「storageA」)は、オペレーション名「取得」(オペレーションID「getFiles」)の処理(オペレーション)を実行することができる。このとき、外部ストレージAコンポーネントは、パラメータ名「fileID」のパラメータ情報を用いることが示されている。
また、同様に、例えば、コンポーネント名「OCRコンポーネント」(コンポーネントID「ocr」)は、オペレーション名「OCR」(オペレーションID「process」)の処理(オペレーション)を実行することができる。このとき、OCRコンポーネントは、パラメータ名「language」のパラメータ情報と、パラメータ名「outputType」のパラメータ情報を用いることが示されている。
このように、各コンポーネントには、1以上のオペレーションが含まれる。そして、コンポーネントは、オペレーションと、当該オペレーションに対するパラメータとが設定されることで、各種処理を実行することができる。
コンポーネント群133は、コンポーネントの集合である。コンポーネント群133には、外部ストレージシステム401(外部ストレージA)と連携して処理を行うための外部ストレージAコンポーネント1331が含まれる。また、コンポーネント群133には、外部ストレージシステム402(外部ストレージB)と連携して処理を行うための外部ストレージBコンポーネント1332が含まれる。
さらに、コンポーネント群133は、電子ファイルにOCR処理を行うためのOCRコンポーネント1333、指定されたメールアドレス宛にメールを送信するためのメール送信コンポーネント1334等が含まれる。
なお、コンポーネント群133には、これら以外にも、例えば、画像ファイルのサイズを変換するためのサイズ変換コンポーネントや言語の翻訳を行うための翻訳コンポーネント等が含まれても良い。また、コンポーネント群133には、例えば、外部ストレージシステム40に対してログイン認証を行うためのログインコンポーネント等が含まれていても良い。このように、コンポーネント群133には、各種のコンポーネントが含まれる。
ここで、各コンポーネントは、コンポーネント共通I/F1330を有する。コンポーネント共通I/F1330は、各コンポーネントに対して共通に定義されたAPIであり、コンポーネントを生成するためのAPIと、コンポーネントに対して処理の実行を要求するためのAPIとが含まれる。
各コンポーネントがコンポーネント共通I/F1330を有することで、コンポーネントの追加等に伴う影響を局所化することができる。すなわち、本実施形態に係るサービス提供システム10では、例えば、フロー実行部131やコンポーネント管理部132等に影響を与えることなく、コンポーネントの追加等を行うことができる。
型変換管理部134は、データ型の型変換を管理する。ここで、各コンポーネントは、自身が扱えるデータ型が予め決まっている。したがって、型変換管理部134は、コンポーネントからの要求に応じて、型変換情報テーブル3000を参照して、型変換群135に定義されている型変換を生成する。そして、型変換管理部134は、生成された型変換に対して型変換処理の実行を要求する。これにより、型変換管理部134は、要求元のコンポーネントが扱えるデータ型に型変換を行う。
ここで、型変換情報テーブル3000の詳細について、図8を参照しながら説明する。図8は、型変換情報テーブル3000の一例を示す図である。
図8に示す型変換情報テーブル3000に格納されている型変換情報は、データ項目として、変換前のデータ型と、変換後のデータ型と、生成する型変換とを有する。すなわち、型変換情報は、変換前のデータ型及び変換後のデータ型毎に、当該変換前のデータ型を当該変換後のデータ型に型変換するための型変換が関連付けられた情報である。
これにより、例えば、ストリームデータを示すデータ型「InputStream」のデータを、記憶装置等に格納されている電子ファイルのパス(アドレス)を示すデータ型「LocalFilePath」に型変換する場合、第1の型変換を生成すれば良い。
なお、型変換の生成とは、例えばクラスで定義された型変換を、メモリ(例えばRAM14)上に展開することである。また、データ型には、上述した「InputStream」や「LocalFilePath」以外に、例えば、電子ファイルの実体を示すデータ型「File」等が挙げられる。
型変換群135は、型変換の集合である。型変換群135には、データ型「InputStream」のデータを、データ型「LocalFilePath」のデータに変換する第1の型変換1351が含まれる。また、型変換群135には、データ型「LocalFilePath」のデータを、データ型「File」のデータに変換する第2の型変換1352等が含まれる。
ここで、各型変換は、型変換共通I/F1350を有する。型変換共通I/F1350は、各型変換に対して共通に定義されたAPIであり、型変換を生成するためのAPIと、型変換に対して処理の実行を要求するためのAPIとが含まれる。
各型変換が型変換共通I/F1350を有することで、型変換の追加等に伴う影響を局所化することができる。すなわち、本実施形態に係るサービス提供システム10では、例えば、型変換管理部134等に影響を与えることなく、型変換の追加等を行うことができる。
ここで、「OCR配信」サービスを実現する一連の処理が定義された処理フロー情報1100の詳細について、図9を参照しながら説明する。図9は、OCR配信を実現する一連の処理が定義された処理フロー情報1100の一例を示す図である。
図9に示す処理フロー情報1100には、処理フロー情報1100を識別するフローID1101と、処理フロー情報1100に基づく一連の処理の名称を示すフロー名1102と、一連の処理に含まれる各処理を定義したフロー詳細1103とが含まれる。
また、フロー詳細1103には、処理定義1104と、処理定義1105とが含まれる。各処理定義1104及び1105には、コンポーネントIDが設定される「component」と、オペレーションIDが設定される「operation」と、パラメータ情報が設定される「parameters」とが定義されている。
例えば、処理定義1104の「component」には、コンポーネントID「ocr」が設定されている。また、処理定義1104の「operation」には、オペレーションID「process」が設定されている。更に、処理定義1104の「parameters」には、パラメータ情報「"language":"English"」及び「"outputType":"pdf"」が設定されている。
同様に、処理定義1105の「component」には、コンポーネントID「storageA」が設定されている。また、処理定義1105の「operation」には、オペレーションID「uploadFile」が設定されている。更に、処理定義1105の「parameters」には、パラメータ情報「"folderId":"folderA"」が設定されている。
これにより、図9に示す処理フロー情報1100に基づく一連の処理では、まず、OCR言語「英語」で、電子ファイルに対してOCR処理が行われ、当該OCR処理の処理結果がPDF形式の電子ファイルで出力される。そして、当該一連の処理では、外部ストレージシステム401におけるフォルダID「folderA」のフォルダに対して、当該PDF形式の電子ファイルがアップロードされる。
なお、各処理定義に定義された処理の実行順は、フロー詳細1103において、上から順に実行される。すなわち、図9に示す処理フロー情報1100に基づく一連の処理(処理フロー)では、処理定義1104に定義された処理、処理定義1105に定義された処理の順で実行される。ただし、これに限られず、処理フロー情報1100には、例えば、各処理定義に定義された処理の実行順を示す情報が定義されていても良い。
<処理の詳細>
次に、本実施形態に係る情報処理システム1の処理の詳細について説明する。まず、PC端末30のユーザUが、「OCR配信」サービスを実現する一連の処理(処理フロー)をサービス提供システム10に登録する処理について、図8を参照しながら説明する。図10は、処理フローの登録処理の一例を示すシーケンス図である。
ユーザUは、PC端末30を用いて、処理フローの作成開始操作を行う(ステップS1001)。例えば、ユーザUは、PC端末30を用いて、サービス提供システム10にログインした後、当該ログイン後に表示されるポータル画面等において、「処理フロー作成」ボタン等を選択することにより、処理フローの作成開始操作を行うことができる。
PC端末30のUI制御部310は、処理フローの作成開始操作を受け付けると、アプリ一覧画面の取得要求を、サービス提供システム10のフロー作成処理部140に送信する(ステップS1002)。
サービス提供システム10のフロー作成処理部140は、アプリ一覧画面の取得要求を受信すると、アプリ一覧情報の取得要求をアプリ管理部120に送信する(ステップS1003)。そして、アプリ管理部120は、アプリ一覧情報をフロー作成処理部140に返信する。なお、アプリ一覧情報とは、アプリ情報記憶部180に記憶されているアプリ情報1000のアプリ名やアプリIDの一覧を示す情報である。
サービス提供システム10のフロー作成処理部140は、アプリ一覧情報を受信すると、当該アプリ一覧情報に基づいて、アプリ情報1000のアプリ名の一覧を表示するアプリ一覧画面を作成する(ステップS1004)。なお、アプリ一覧画面は、例えば、HTML(HyperText Markup Language)やCSS(Cascading Style Sheets)等により画面が定義されている。
そして、フロー作成処理部140は、作成したアプリ一覧画面をUI制御部310に返信する。
PC端末30のUI制御部310は、アプリ一覧画面を受信すると、例えば図11(a)に示すアプリ一覧画面G100を表示する(ステップS1005)。ここで、図11(a)に示すアプリ一覧画面G100には、アプリ情報1000のアプリ名の一覧であるアプリ一覧G101が含まれる。
次に、ユーザUは、図11(a)に示すアプリ一覧画面G100のアプリ一覧G101から、処理フローを作成するアプリケーションを選択する操作を行う(ステップS1006)。ここで、以降では、図11(a)に示すアプリ一覧画面G100のアプリ一覧G101から「アプリ1」がユーザUにより選択されたものとして説明する。
PC端末30のUI制御部310は、アプリケーションの選択操作を受け付けると、処理フロー作成画面の取得要求を、サービス提供システム10のフロー作成処理部140に送信する(ステップS1007)。なお、当該取得要求には、ユーザUにより選択されたアプリケーションを識別するための情報(例えば、アプリ一覧G101に含まれる各表示部品を識別する情報やアプリID等)が含まれる。
サービス提供システム10のフロー作成処理部140は、処理フロー作成画面の取得要求を受信すると、処理情報テーブルの取得要求を、ロジック処理部130のコンポーネント管理部132に送信する(ステップS1008)。そして、コンポーネント管理部132は、処理情報テーブルの取得要求を受信すると、処理情報テーブル2000をフロー作成処理部140に返信する。
サービス提供システム10のフロー作成処理部140は、処理情報テーブル2000を受信すると、当該処理情報テーブル2000に格納されている処理情報に基づいて、処理フロー作成画面を作成する(ステップS1009)。なお、処理フロー作成画面は、例えば、HTMLやCSS等により画面が定義されている。
そして、フロー作成処理部140は、作成した処理フロー作成画面をUI制御部310に返信する。
PC端末30のUI制御部310は、処理フロー作成画面を受信すると、例えば図11(b)に示す処理フロー作成画面G200を表示する(ステップS1010)。
ここで、図11(b)に示す処理フロー作成画面G200は、「アプリ1」の処理フローを作成するための画面であり、各処理情報に含まれるコンポーネント名が一覧表示されたコンポーネント一覧G201が含まれる。また、図11(b)に示す処理フロー作成画面G200には、処理フローをグラフィカルに作成するための作成領域G202と、操作ガイド等の説明が表示される説明欄G203と、処理フローのフロー名を設定するフロー名設定欄G204とが含まれる。更に、図11(b)に示す処理フロー作成画面G200には、作成された処理フローを登録するための登録ボタンG205が含まれる。
ユーザUは、処理フロー作成画面G200において、1以上のコンポーネント及びオペレーションを選択して、作成領域G202に配置すると共に、各コンポーネントが処理に用いるパラメータ情報を定義することで、処理フローを作成することができる。
次に、ユーザUは、図11(b)に示す処理フロー作成画面G200において、「アプリ1」の処理フローを作成する操作を行って、処理フローの作成処理を行う(ステップS1011)。なお、処理フローの作成処理の詳細については後述する。
次に、ユーザUは、処理フローを作成すると、登録ボタンG205を押下して、処理フローの登録操作を行う(ステップS1012)。
PC端末30のUI制御部310は、処理フローの登録操作を受け付けると、処理フローの登録要求を、サービス提供システム10のフロー作成処理部140に送信する(ステップS1013)。なお、当該登録要求には、ユーザUにより作成された処理フローを示す情報(例えば、処理フロー情報1100等)と、「アプリ1」を識別する情報(例えば、アプリIDや処理フロー作成画面G200を識別する情報等)が含まれる。
サービス提供システム10のフロー作成処理部140は、処理フローの登録要求を受信すると、当該登録要求をアプリ管理部120に送信する(ステップS1014)。そして、アプリ管理部120は、処理フローの登録要求に含まれる処理フロー情報1100を、「アプリ1」のアプリ情報1000と関連付けてアプリ情報記憶部180に記憶させる。これにより、ユーザUにより作成された処理フローがサービス提供システム10に登録される。
ここで、上記のステップS1011において、ユーザが、1以上のコンポーネント及びオペレーションを選択して、作成領域G202に配置する場合の処理について、図12を参照しながら説明する。図12は、処理フローの作成処理(1/2)の一例を示すシーケンス図である。
まず、ユーザUは、コンポーネント及びオペレーションの配置操作を行う(ステップS1201)。すなわち、ユーザUは、次のようにしてコンポーネント及びオペレーションの配置操作を行う。
まず、図13(a)に示す処理フロー作成画面G300において、コンポーネント一覧G201から「外部ストレージAコンポーネント」をユーザUが選択すると、外部ストレージAコンポーネント1331のオペレーション一覧G301が表示される。このように、コンポーネント一覧G201からコンポーネントが選択されると、選択されたコンポーネントのオペレーション一覧が表示される。
次に、オペレーション一覧G301から「配信」オペレーションをユーザUが選択した上で、作成領域G202内の所望の位置を選択する。これにより、ユーザUは、コンポーネント及びオペレーションの配置操作を行うことができる。なお、配置操作は、例えば、オペレーション一覧G301の「配信」オペレーションを、作業領域G202内の所望の位置にドラッグアンドドロップすることにより行っても良い。
ここで、図13(a)に示す処理フロー作成画面G300において、オペレーション一覧からオペレーションがユーザUにより選択されると、選択されたオペレーションの説明が説明欄G203に表示される。例えば、上記のように、外部ストレージAコンポーネント1331の「配信」オペレーションがユーザUにより選択されると、当該「配信」オペレーションの説明が説明欄G203に表示される。
PC端末30のUI制御部310は、コンポーネント及びオペレーションの配置操作を受け付けると、コンポーネントIDと、オペレーションIDと、配置位置とを、サービス提供システム10のフロー作成処理部140に送信する(ステップS1202)。なお、コンポーネントIDは、ユーザUにより選択された外部ストレージAコンポーネント1331のコンポーネントID「storageA」である。同様に、オペレーションIDは、ユーザUにより選択された「配信」オペレーションのオペレーションID「uploadFile」である。また、配置位置は、例えば、コンポーネント及びオペレーションの配置操作が行われた作業領域G202内の位置座標等である。
サービス提供システム10のフロー作成処理部140は、コンポーネントID及びオペレーションIDを受信すると、当該コンポーネントID及びオペレーションIDに対応する処理情報を処理情報テーブル2000から取得する(ステップS1203)。すなわち、フロー作成処理部140は、コンポーネントID「storageA」及びオペレーションID「uploadFile」に対応する処理情報を処理情報テーブル2000から取得する。
次に、サービス提供システム10のフロー作成処理部140は、処理情報を取得すると、アイコンの取得要求を、ロジック処理部130のコンポーネント管理部132に送信する(ステップS1204)。なお、当該取得要求には、上記のステップS1203で取得された処理情報のアイコンパスが含まれる。
ロジック処理部130のコンポーネント管理部132は、アイコンの取得要求を受信すると、当該取得要求に含まれるアイコンパスからアイコンを取得する(ステップS1205)。そして、コンポーネント管理部132は、取得したアイコンをフロー作成処理部140に返信する。なお、アイコンは、例えば、PNGやJPEG、ICO等のデータ形式の画像データである。
サービス提供システム10のフロー作成処理部140は、アイコンを受信すると、処理フロー作成画面の作成領域G202の配置位置にアイコンが表示されるように、当該作成領域G202を更新する(ステップS1206)。そして、フロー作成処理部140は、更新後の作成領域G202をUI制御部310に返信する。
PC端末30のUI制御部310は、更新後の作成領域G202を受信すると、当該更新後の作成領域G202を表示する(ステップS1207)。すなわち、UI制御部310は、図13(a)に示す処理フロー作成画面G300の作成領域G202において、アイコンP11を表示する。これにより、ユーザUにより選択された外部ストレージAコンポーネント1331の「配信」オペレーションを表すアイコンP11が作成領域G202に配置される。
その後、同様に、図13(b)に示す処理フロー作成画面G400において、コンポーネント一覧G201から「OCRコンポーネント」をユーザUが選択すると、OCRコンポーネント1333のオペレーション一覧G401が表示される。そして、オペレーション一覧G401から「OCR」オペレーションを選択した上で、作成領域G202内の所望の位置が選択されると、OCRコンポーネント1333の「OCR」オペレーションを表すアイコンP12が作成領域G202の当該位置に配置される。
また、図13(a)に示す処理フロー作成画面G300の作成領域G202において、ユーザUが、アイコンP11とアイコンP12との先行関係を指定する操作を行うことで、矢印P13が表示される。これにより、ユーザUは、アイコンP12が示すコンポーネントの処理(オペレーション)の次に、アイコンP11が示すコンポーネントの処理(オペレーション)を行うことを指定できる。これにより、ユーザUは、OCRコンポーネント1333の「OCR」オペレーションを行った後、外部ストレージAコンポーネント1331の「配信」オペレーションを行う処理フローF11を作成することができる。
更に、図13(a)に示す処理フロー作成画面G300のフロー名設定欄G204に、処理フローF11のフロー名を設定することができる。
ここで、図13(a)に示す処理フロー作成画面G300において、例えば、アイコンP11やアイコンP11が作成領域G202に配置されると、処理フローを登録するための説明が説明欄G203に表示される。例えば、上記のように、アイコンP12が作成領域G202に配置されると、処理フローを登録するための説明が説明欄G203に表示される。このように、説明欄G203には、ユーザUの操作に応じて、各コンポーネントの説明や当該ユーザUが次に行うと想定される操作の説明等が表示される。
以上により、ユーザUは、コンポーネント及びオペレーションを表すアイコンを作成領域G202に配置することで、処理フローF11を作成することができる。
次に、各コンポーネントが処理(オペレーション)に用いるパラメータ情報を定義する場合の処理について、図14を参照しながら説明する。図14は、処理フローの作成処理(2/2)の一例を示すシーケンス図である。
まず、ユーザUは、アイコンの選択操作を行う(ステップS1401)。ここで、以降では、作成領域G202に配置されたアイコンP11をユーザUが選択したものとする。
PC端末30のUI制御部310は、アイコンの選択操作を受け付けると、選択されたアイコンに対応するコンポーネントID及びオペレーションIDを、サービス提供システム10のフロー作成処理部140に送信する(ステップS1402)。すなわち、UI制御部310は、アイコンP11に対応するコンポーネントID「storageA」及びオペレーションID「uploeadFile」をフロー作成処理部140に送信する。
サービス提供システム10のフロー作成処理部140は、コンポーネントID及びオペレーションIDを受信すると、当該コンポーネントID及びオペレーションIDに対応する処理情報を処理情報テーブル2000から取得する(ステップS1403)。すなわち、フロー作成処理部140は、コンポーネントID「storageA」及びオペレーションID「uploeadFile」に対応する処理情報を処理情報テーブル2000から取得する。
次に、サービス提供システム10のフロー作成処理部140は、上記のステップS1403で取得した処理情報に含まれるパラメータ設定情報に基づいて、パラメータ設定画面を作成する(ステップS1404)。なお、パラメータ設定画面とは、コンポーネントの処理に用いられるパラメータ情報のパラメータ値を設定するための画面であり、例えば、HTMLやCSS等により画面が定義されている。
そして、フロー作成処理部140は、作成したパラメータ設定画面をUI制御部310に返信する。
PC端末30のUI制御部310は、パラメータ設定画面を受信すると、例えば図15に示すパラメータ設定画面G500を表示する(ステップS1405)。
ここで、図15に示すパラメータ設定画面G500は、外部ストレージAコンポーネント1331の「配信」オペレーションが用いるパラメータ情報を設定するための画面である。図15に示すパラメータ設定画面G500には、フォルダIDを設定するためのフォルダ設定欄G501と、決定ボタンG502とが含まれる。
なお、表示名G504は、上記のステップS1403で取得した処理情報に含まれるパラメータ設定情報の表示名が表示される。また、入力制限情報G505は、上記のステップS1403で取得した処理情報に含まれるパラメータ設定情報の入力形式に基づいて表示される。
ユーザUは、フォルダ設定欄G501にフォルダIDを入力した上で、決定ボタンG502を押下することで、パラメータ名「folderId」に値(パラメータ値)を設定することができる。
なお、パラメータ設定画面G500には、共通パラメータ設定欄G503が含まれていても良い。共通パラメータ設定欄G503では、複数のコンポーネントの処理で共通に用いるパラメータ情報を設定することができる。共通パラメータには、例えば、各コンポーネントの処理結果を保存するか否か設定するための「セーブ」、所定のコンポーネントの処理をスキップ(実行しない)か否かを設定するための「スキップ」等がある。
次に、ユーザUは、図15に示すパラメータ設定画面G500において、パラメータ情報を設定する操作(パラメータ設定操作)を行う(ステップS1406)。
そして、PC端末30のUI制御部310は、パラメータ設定操作を受け付けると、当該設定されたパラメータ情報を、該当のコンポーネント及びオペレーションに設定する(ステップS1407)。これにより、外部ストレージAコンポーネント1331の「配信」オペレーションに対してパラメータ情報が設定される。なお、ユーザUは、同様に、OCRコンポーネント1333の「OCR」コンポーネントに対してもパラメータ情報を設定する。
なお、上記のステップS1405において、PC端末30のUI制御部310は、例えば図16に示すパラメータ設定画面G510を表示しても良い。図16に示すパラメータ設定画面G510では、フォルダ設定欄G501に設定する情報を選択するための入力支援ボタンG511が含まれる。
ユーザUが入力支援ボタンG511を押下した場合、フォルダ設定欄G501に設定可能な情報の一覧である設定情報一覧G520が表示される。ここで、設定情報一覧G520には、例えば、他のコンポーネントの処理結果等の情報を選択することができる。
例えば、ユーザUは、設定情報一覧G520から、外部ストレージシステム40にログイン認証を行うためのログインコンポーネントの処理結果を示す「ログインユーザID」等を選択することができる。これにより、例えば、フォルダ設定欄G501に、ログインコンポーネントによりログイン認証されたユーザID(ログインユーザID)を設定することができるようになる。
以上により、本実施形態に係る情報処理システム1では、ユーザUにより作成された処理フローF11を示す処理フロー情報1100をサービス提供システム10に登録することができる。
しかも、本実施形態に係る情報処理システム1では、コンポーネント一覧G201から所望のコンポーネント及びオペレーションを選択して、先後関係を指定すると共に、パラメータ情報を設定することで、処理フローを作成することができる。したがって、ユーザUは、容易に処理フローを作成することができるようになる。
ここで、処理フロー情報1100は、例えば、JSON(JavaScript Object Notation)やXML(Extensible Markup Language)、DSL(Domain-Specific Language)等により記述される。したがって、本実施形態に係る情報処理システム1によれば、これらJSONやXML、DSL等の仕様や形式を理解していないユーザでも容易に処理フローを作成することができるようになる。
なお、上記では、先後関係が1つである処理フローを作成する場合について説明したが、これに限られず、処理フローの先後関係は複数であっても良い。
ここで、ユーザUが、処理フロー作成画面において、処理フローを作成する場合における他の操作例について、図17及び図18を参照しながら説明する。
まず、図17(a)に示す処理フロー作成画面G600の作成領域G202には、処理フローF21が配置されていたとする。このとき、ユーザUが整列ボタンG601を押下することで、処理フローF21を構成する各アイコンP21〜P24の配置位置を整列することができる。
すなわち、ユーザUにより整列ボタンG601が押下されると、図17(b)に示す処理フロー作成画面G700の作成領域G202に配置されている処理フローF21のように、各アイコンP21〜P24の配置位置が整列される。なお、このような配置位置の整列は、例えば、PC端末30のUI制御部310が行っても良いし、UI制御部310からの要求に応じて、フロー作成処理部140が作成領域G202を更新した上で、当該更新後の作成領域G202をUI制御部310が表示しても良い。
これにより、ユーザUは、処理フローF21を構成する各アイコンP21〜P24を容易に整列することができる。
また、図17(a)に示す処理フロー作成画面G600において、ユーザUが拡大ボタンG602や縮小ボタンG603を押下することで、作成領域G202に配置されている処理フローF21を拡大又は縮小することができる。これにより、ユーザUは、処理フローF21を構成する各アイコンP21〜P24の表示を拡大したり、縮小したりすることができる。
次に、図18(a)に示す処理フロー作成画面G800において、ユーザUが共有フロー取り込みボタンG801を押下することで、UI制御部310は、共有フロー選択画面G810を表示することができる。ここで、共有フローとは、共有フロー選択画面G810において選択可能なように予め作成された処理フローである。共有フローは、例えば、処理フロー情報1100において、「"shareflow":"true"」と定義された処理フローである。
ユーザUは、共有フロー選択画面G810において、共有フロー選択欄G811から所望の処理フローを選択した上で、OKボタンG812を押下することで、処理フローを選択することができる。
そして、UI制御部310は、共有フロー選択画面G810において処理フローが選択されると、図18(b)に示す処理フロー作成画面G900のように、作成領域G202に選択された処理フローF31が表示される。これにより、ユーザUは、処理フローF31を編集することで、所望の処理フローを作成することができるようになる。したがって、ユーザUは、共有フローである処理フローF31を編集して処理フローを作成することで、最初から処理フローを作成するよりも、容易に処理フローを作成することができるようになる。
次に、ユーザUが機器20を用いて、サービス提供システム10のアプリケーション(アプリ情報1000)により提供される「OCR配信」サービスを利用する場合の処理について、図19を参照しながら説明する。図19は、サービス利用の全体処理の一例を示すシーケンス図である。
ユーザUは、機器20を用いて、アプリ情報1000により提供されるサービスの一覧を表示させるための表示操作を行う(ステップS1901)。
機器20のUI制御部210は、サービスの一覧を表示させるための表示操作を受け付けると、例えば図20(a)に示すサービス一覧画面G1000を表示する(ステップS1902)。なお、UI制御部210は、例えば、HTMLやCSS等によりサービス一覧画面G1000が定義された情報をサービス提供システム10から受信するにより、当該サービス一覧画面G1000を表示しても良い。
図20(a)に示すサービス一覧画面G1000には、サービス名の一覧が表示されたサービス名一覧G1001が含まれる。
次に、ユーザUは、サービス一覧画面G1000のサービス名一覧G1001から、所望のサービスを選択する操作を行う(ステップS1903)。ここで、以降では、サービス一覧画面G1000のサービス名一覧G1001から「OCR配信」サービスがユーザUにより選択されたものとして説明する。
機器20のUI制御部210は、「OCR配信」サービスの選択操作を受け付けると、例えば図20(b)に示すサービス利用画面G1100を表示する(ステップS1904)。なお、UI制御部210は、例えば、HTMLやCSS等によりサービス利用画面G1100が定義された情報をサービス提供システム10から受信するにより、当該サービス利用画面G1100を表示しても良い。
図20(b)に示すサービス利用画面G1100には、保存先フォルダ表示欄G1101と、OCR言語表示欄G1102と、データ形式表示欄G1103と、スキャンボタンG1104とが含まれる。
ここで、保存先フォルダ表示欄G1101は、例えば、図9に示す処理フロー情報1100の処理定義1105に定義されているパラメータ情報「"folderId":"folderA"」に基づいて表示される。また、OCR言語表示欄G1102は、例えば、図9に示す処理フロー情報1100の処理定義1104に定義されているパラメータ情報「"language":"English"」に基づいて表示される。更に、データ形式表示欄G1103は、例えば、図9に示す処理フロー情報1100の処理定義1104に定義されているパラメータ情報「"outputType":"pdf"」に基づいて表示される。
次に、ユーザUは、図20(b)に示すサービス利用画面G1100において、スキャンボタンG1104を押下して、スキャン実行操作を行う(ステップS1905)。すると、UI制御部210は、当該スキャン実行操作を受け付ける。
機器20のUI制御部210は、スキャン実行操作を受け付けると、スキャン処理部220に対して、スキャンの実行要求を送信する(ステップS1906)。
機器20のスキャン処理部220は、スキャンの実行要求を受け取ると、スキャナ26を制御して、原稿台にセットされた原稿を読み取って、電子ファイルを生成する(ステップS1907)。そして、スキャン処理部220は、スキャンが終了したことを示すスキャン結果を返信する。
機器20のUI制御部210は、スキャン結果を受け取ると、「OCR配信」サービスを実現する処理フローの実行要求を、サービス提供システム10のロジック処理部130に送信する(ステップS1908)。なお、当該実行要求には、例えば、「OCR配信」サービスを提供するアプリ情報1000のアプリIDと、当該サービスを実現する処理フロー情報1100のフローIDと、上記のステップS1907で生成された電子ファイルとが含まれる。
サービス提供システム10のロジック処理部130は、処理フローの実行要求を受信すると、当該実行要求に含まれるアプリID及びフローIDに対応する処理フロー情報1100を取得する。そして、ロジック処理部130は、取得した処理フロー情報1100に基づく一連の処理を実行する(ステップS1909)。その後、ロジック処理部130は、当該一連の処理の処理結果を返信する。
これにより、本実施形態に係るサービス提供システム10において、「OCR配信」サービスを実現する一連の処理が実行され、機器20に対して、「OCR配信」サービスが提供される。
ここで、上記のステップS1909の処理フローの実行処理の詳細について、図21を参照しながら説明する。図21は、処理フローの実行処理の一例を示すシーケンス図である。
フロー実行部131は、処理フローの実行要求を受信すると、処理フロー情報の取得要求をアプリ管理部120に送信する(ステップS2101)。なお、当該取得要求には、受信した処理フローの実行要求に含まれるアプリID及びフローIDが含まれる。
そして、アプリ管理部120は、受信した処理フロー情報の取得要求に含まれるアプリID及びフローIDに対応する処理フロー情報1100をアプリ情報記憶部180から取得して、当該処理フロー情報1100を返信する。これにより、フロー実行部131には、図9に示す処理フロー情報1100が返信される。
次に、フロー実行部131は、図9に示す処理フロー情報1100を受信すると、コンポーネント管理部132に対して、当該処理フロー情報1100に基づくコンポーネントの取得要求を送信する(ステップS2102)。
すなわち、フロー実行部131は、図9に示す処理フロー情報1100の処理定義1104に定義されたコンポーネントID「ocr」を含むコンポーネントの取得要求をコンポーネント管理部132に送信する。
コンポーネント管理部132は、コンポーネントの取得要求を受け取ると、当該取得要求に含まれるコンポーネントID「ocr」に対応するOCRコンポーネント1333を生成する(ステップS1703)。なお、OCRコンポーネント1333の生成は、コンポーネント共通I/F1330に定義されたAPIを用いて行うことができる。
そして、コンポーネント管理部132は、フロー実行部131に対して、生成したOCRコンポーネント1333を返信する。すなわち、コンポーネント管理部132は、例えば、OCRコンポーネント1333が展開されたメモリ(例えばRAM14)上のアドレスをフロー実行部131に返信する。
次に、フロー実行部131は、生成されたOCRコンポーネント1333に対して、処理フロー情報1100に基づく処理実行要求を送信する(ステップS2104)。
すなわち、フロー実行部131は、図9に示す処理フロー情報1100の処理定義1104に定義されたオペレーションID「process」と、データと、パラメータ情報とを含む処理実行要求をOCRコンポーネント1333に送信する。
ここで、当該処理実行要求に含まれるデータは、データ型「InputStream」としてUI制御部210から受け取った電子ファイルである。
すなわち、フロー実行部131は、UI制御部210からデータ型「InputStream」として受け取った電子ファイルを、単に「データ」として(データ型を指定することなく)、OCRコンポーネント1333に送信する。以降では、このようにデータ型を指定することなく送受信される電子ファイル等を、単に「データ」と表す。
また、当該処理実行要求に含まれるパラメータ情報は、図9に示す処理フロー情報1100の処理定義1104に定義されたパラメータ情報「"language":"English"」及び「"outputType":"pdf"」である。
OCRコンポーネント1333は、処理実行要求を受け取ると、型変換管理部134に対して、型変換要求を送信する(ステップS2105)。なお、当該型変換要求には、データと、OCRコンポーネント1333が扱うことができるデータ型である「LocalFilePath」の指定とが含まれる。
型変換管理部134は、型変換要求を受け取ると、当該型変換要求に含まれるデータのデータ型と、指定されたデータ型とが一致するか否かをチェックする(ステップS2106)。
ここで、受け取った型変換要求に含まれるデータのデータ型は「InputStream」である一方、指定されたデータ型は「LocalFilePath」である。したがって、型変換管理部134は、型変換要求に含まれるデータのデータ型と、指定されたデータ型とが一致しないものと判断する。
すると、型変換管理部134は、型変換情報テーブル3000を参照して、データ型「InputStream」をデータ型「LocalFilePath」に変換するための第1の型変換1351を特定する。そして、型変換管理部134は、特定した第1の型変換1351を生成する(ステップS2107)。なお、第1の型変換1351の生成は、型変換共通I/F1350に定義されたAPIを用いて行うことができる。
次に、型変換管理部134は、生成された第1の型変換1351に対して、型変換処理の実行要求を送信する(ステップS2108)。なお、当該実行要求には、データが含まれる。
第1の型変換1351は、型変換処理の実行要求を受信すると、当該実行要求に含まれるデータのデータ型を「InputStream」から「LocalFilePath」に変換する(ステップS2109)。そして、第1の型変換1351は、型変換後のデータを返信する。
型変換管理部134は、型変換後のデータを受け取ると、当該型変換後のデータをOCRコンポーネント1333に送信する(ステップS2110)。
OCRコンポーネント1333は、型変換後のデータを受け取ると、パラメータ情報を用いて、処理を実行する(ステップS2111)。すなわち、OCRコンポーネント1333は、データ型「LocalFilePath」のデータ(パス又はアドレス)により示される電子ファイルに対して、パラメータ情報を用いて、OCR処理を実行する。
より具体的には、OCRコンポーネント1333は、ドキュメントサービス部160のOCR処理部161に対して処理の実行を要求する。そして、OCR処理部161が、OCR言語「英語」で、当該電子ファイルに対してOCR処理を行って、当該OCR処理の処理結果をPDF形式の電子ファイルで出力する。
そして、OCRコンポーネント1333は、OCR処理後の電子ファイルを示すデータをフロー実行部131に返信する。なお、OCRコンポーネント1333により返信されるデータは、OCR処理後の電子ファイルのパス又はアドレスを示すデータ(すなわち、データ型「LocalFilePath」のデータ)である。
次に、フロー実行部131は、データを受け取ると、コンポーネント管理部132に対して、処理フロー情報1100に基づくコンポーネントの取得要求を送信する(ステップS2112)。
すなわち、フロー実行部131は、図9に示す処理フロー情報1100の処理定義1105に定義されたコンポーネントID「storageA」を含むコンポーネントの取得要求をコンポーネント管理部132に送信する。
コンポーネント管理部132は、コンポーネントの取得要求を受け取ると、当該取得要求に含まれるコンポーネントID「storageA」に対応する外部ストレージAコンポーネント1331を生成する(ステップS2113)。なお、外部ストレージAコンポーネント1331の生成は、コンポーネント共通I/F1330に定義されたAPIを用いて行うことができる。
そして、コンポーネント管理部132は、フロー実行部131に対して、生成した外部ストレージAコンポーネント1331を返信する。すなわち、コンポーネント管理部132は、例えば、外部ストレージAコンポーネント1331が展開されたメモリ(例えばRAM14)上のアドレスをフロー実行部131に返信する。
次に、フロー実行部131は、生成された外部ストレージAコンポーネント1331に対して、処理フロー情報1100に基づく処理実行要求を送信する(ステップS2114)。
すなわち、フロー実行部131は、図9に示す処理フロー情報1100の処理定義1105に定義されたオペレーションID「uploadFile」と、データと、パラメータ情報とを含む処理実行要求を外部ストレージAコンポーネント1331に送信する。
なお、当該処理実行要求に含まれるデータは、データ型「LocalFilePath」としてOCRコンポーネント1333から返信されたデータ(すなわち、OCR処理後の電子ファイルを示すパス又はアドレス)である。
また、当該処理実行要求に含まれるパラメータ情報は、図9に示す処理フロー情報1100の処理定義1105に定義されたパラメータ情報「"folderId":"folderA"」である。
外部ストレージAコンポーネント1331は、処理実行要求を受け取ると、型変換管理部134に対して、型変換要求を送信する(ステップS2115)。なお、当該型変換要求には、データと、外部ストレージAコンポーネント1331が扱うことができるデータ型である「LocalFilePath」の指定とが含まれる。
型変換管理部134は、型変換要求を受け取ると、当該型変換要求に含まれるデータのデータ型と、指定されたデータ型とが一致するか否かをチェックする(ステップS2116)。
ここで、受信した型変換要求に含まれるデータのデータ型は「LocalFilePath」であり、指定されたデータ型も「LocalFilePath」である。したがって、型変換管理部134は、型変換要求に含まれるデータのデータ型と、指定されたデータ型とが一致するものと判断する。
すると、型変換管理部134は、型変換要求に含まれるデータを外部ストレージAコンポーネント1331に送信する(ステップS2117)。このように、データ型のチェック(ステップS2116の処理)においてデータ型が一致すると判断された場合、型変換管理部134は、型変換の生成を行わない。
外部ストレージAコンポーネント1331は、型変換管理部134からデータを受信すると、処理を実行する(ステップS2118)。すなわち、外部ストレージAコンポーネント1331は、パラメータ情報を用いて、外部ストレージAのフォルダID「folderA」のフォルダに対して、受信したデータにより示される電子ファイルを配信(アップロード)する。
より具体的には、外部ストレージAコンポーネント1331は、外部ストレージA連携部1701のファイル処理部1711に対して、図5(a)に示すAPI「/外部ストレージ名/process/folder」を用いて行うことができる。すなわち、外部ストレージAコンポーネント1331は、ファイル処理部1711に対して、例えば、「/storage-a/process/folder」としてデータを送信する。
これにより、OCR処理後の電子ファイルが、外部ストレージAのフォルダID「folderA」のフォルダに保存される。
そして、外部ストレージAコンポーネント1331は、処理結果を示すデータをフロー実行部131に返信する。
以上により、本実施形態に係るサービス提供システム10は、機器20に対して、図9に示す処理フロー情報1100に基づく一連の処理により実現される「OCR配信」サービスを提供することができる。このとき、本実施形態に係るサービス提供システム10は、処理フロー情報1100に基づいて、1以上のコンポーネントを組み合わせることにより、一連の処理を実行することができる。
[第二の実施形態]
次に、第二の実施形態に係る情報処理システム1について説明する。第二の実施形態では、処理フローの登録処理において、処理フローの登録(追加)に加えて、処理フローの更新又は削除をすることができる点が第一の実施形態と異なる。なお、以降では、第一の実施形態と実質的に同一の機能を有する箇所及び同一の処理を行う箇所については、第一の実施形態と同一の符号を用いて、その説明を省略する。
<処理の詳細>
以降では、第二の実施形態に係る処理フローの登録処理について、図22を参照しながら説明する。図22は、処理フローの登録、更新、又は削除処理の一例を示すシーケンス図である。
ステップS1006に続いて、PC端末30のUI制御部310は、アプリケーションの選択操作を受け付けると、選択されたアプリケーションのアプリ情報画面を表示する(ステップS2201)。
すなわち、例えば、図11(a)に示すアプリ一覧画面G100のアプリ一覧G101から「アプリ1」がユーザUにより選択された場合、UI制御部310は、例えば図23に示すアプリ情報画面G1200を表示する。
図23に示すアプリ情報画面G1200は、「アプリ1」であるアプリ情報1000の処理フローの登録、更新、又は削除を行うための画面である。
図23に示すアプリ情報画面G1200には、「アプリ1」であるアプリ情報1000に含まれる処理フロー情報1100の一覧であるフロー名一覧G1201が含まれる。また、図23に示すアプリ情報画面G1200には、処理フローを登録するための登録ボタンG1202と、登録されている処理フローを更新するための更新ボタンG1203と、登録されている処理フローを削除するための削除ボタンG1204とが含まれる。
以降では、ユーザUにより、登録ボタンG1202が選択された場合、更新ボタンG1203が選択された場合、削除ボタンG1204が選択された場合について、それぞれ説明する。
図23に示すアプリ情報画面G1200において、ユーザUにより登録ボタンG1202が選択された場合、図10のステップS1007〜ステップS1013と同様の処理を行う。これらの処理の詳細については省略する。
次に、図23に示すアプリ情報画面G1200において、ユーザUにより、フロー名一覧G1201から更新対象のフロー名が選択された上で、更新ボタンG1203が選択された場合について、以降で説明する。なお、以降では、フロー名一覧G1201から「OCR配信」が選択された上で、更新ボタンG1203が選択されたものとして説明する。
まず、PC端末30のUI制御部310は、更新ボタンG1203の選択操作を受け付けると、フロー作成処理部140に対して、処理フローの更新画面の取得要求を送信する(ステップS2202)。なお、当該取得要求には、当該取得要求には、ユーザUにより選択されたアプリケーションを識別するための情報(例えば、アプリ情報画面G1200を識別する情報やアプリID等)が含まれる。また、当該取得要求には、フロー名一覧G1201から選択された更新対象の処理フロー「OCR配信」を識別する情報(例えば、当該「OCR配信」を選択するための表示部品の識別情報やフローID「flow001」)が含まれる。
次に、フロー作成処理部140は、処理フロー情報の取得要求をアプリ管理部120に送信する(ステップS2203)。なお、当該取得要求には、アプリID及びフローIDが含まれる。
そして、アプリ管理部120は、受信した処理フロー情報の取得要求に含まれるアプリID及びフローIDに対応する処理フロー情報1100をアプリ情報記憶部180から取得して、当該処理フロー情報1100を返信する。
次に、フロー作成処理部140は、処理情報テーブルの取得要求を、ロジック処理部130のコンポーネント管理部132に送信する(ステップS2204)。そして、コンポーネント管理部132は、処理情報テーブルの取得要求を受信すると、処理情報テーブル2000をフロー作成処理部140に返信する。
サービス提供システム10のフロー作成処理部140は、受信した処理フロー情報1100と、受信した処理情報テーブル2000に格納されている処理情報とに基づいて、処理フロー更新画面を作成する(ステップS2205)。なお、処理フロー更新画面は、例えば、HTMLやCSS等により画面が定義されている。
そして、フロー作成処理部140は、作成した処理フロー更新画面をUI制御部310に返信する。
PC端末30のUI制御部310は、処理フロー更新画面を受信すると、例えば図24に示す処理フロー更新画面G1300を表示する(ステップS2206)。
ここで、図24に示す処理フロー更新画面G1300は、フロー名「OCR配信」の処理フローを更新するための画面であり、更新領域G1301と、更新ボタンG1302とが含まれる。そして、更新領域G1301には、上記のステップS2203で取得した処理フロー情報1100に基づいて処理フローF11が配置されている。
ユーザUは、処理フロー更新画面G1300において、コンポーネント及びオペレーションの追加や削除、パラメータ情報の修正、フロー名の修正等を行うことで、処理フローG11を変更することができる。
次に、ユーザUは、図24に示す処理フロー更新画面G1300において、処理フローG11を変更した上で、更新ボタンG1302を押下して、処理フローの更新操作を行う(ステップS2207)。
PC端末30のUI制御部310は、処理フローの更新操作を受け付けると、処理フローの更新要求を、サービス提供システム10のフロー作成処理部140に送信する(ステップS2208)。なお、当該登録要求には、ユーザUにより変更された処理フローF11を示す情報(例えば、処理フロー情報1100等)と、「アプリ1」を識別する情報(例えば、アプリIDや処理フロー更新画面G1300を識別する情報等)が含まれる。
サービス提供システム10のフロー作成処理部140は、処理フローの更新要求を受信すると、当該更新要求をアプリ管理部120に送信する(ステップS2209)。そして、アプリ管理部120は、処理フローの更新要求に含まれる処理フロー情報1100を、「アプリ1」のアプリ情報1000と関連付けてアプリ情報記憶部180に記憶させる。その後、アプリ管理部120は、フロー作成処理部140を介して、更新結果を返信する。これにより、サービス提供システム10に登録されていた処理フローが更新される。
次に、図23に示すアプリ情報画面G1200において、ユーザUにより、フロー名一覧G1201から削除対象のフロー名が選択された上で、削除ボタンG1204が選択された場合について、以降で説明する。なお、以降では、フロー名一覧G1201から「OCRメール」が選択された上で、削除ボタンG1204が選択されたものとして説明する。
PC端末30のUI制御部310は、削除ボタンG1204の選択操作を受け付けると、フロー作成処理部140に対して、処理フローの削除要求を送信する(ステップS2210)。なお、当該削除要求には、ユーザUにより選択されたアプリケーションを識別するための情報(例えば、アプリ情報画面G1200を識別する情報やアプリID等)が含まれる。また、当該削除要求には、ユーザUにより選択された削除対象の処理フローを識別するための情報(例えば、フロー名一覧G1201に含まれる各表示部品を識別する情報やフローID等)が含まれる。
フロー作成処理部140は、処理フローの削除要求を受け取ると、当該削除要求をアプリ管理部120に送信する(ステップS2211)。
そして、 アプリ管理部120は、処理フローの削除要求を受け取ると、当該削除要求に含まれるアプリID及びフローIDに対応する処理フロー情報1100をアプリ情報記憶部180から削除する。その後、アプリ管理部120は、フロー作成処理部140を介して、削除結果を返信する。これにより、サービス提供システム10に登録されていた処理フローが削除される。
以上により、本実施形態に係る情報処理システム1では、サービス提供システム10に登録されている処理フローの更新及び削除を行うことができる。
本発明は、具体的に開示された上記の実施形態に限定されるものではなく、特許請求の範囲から逸脱することなく、種々の変形や変更が可能である。