以下、本発明の実施形態について図面を参照しながら詳細に説明する。
[第一の実施形態]
<システム構成>
まず、第一の実施形態に係る情報処理システム1の構成について、図1を参照しながら説明する。図1は、第一の実施形態に係る情報処理システムの一例の構成を示す図である。
本実施形態に係る情報処理システム1は、サービス提供環境E1と、ユーザ環境E2と、外部ストレージシステム40とを含み、インターネット等の広域的なネットワークN1を介して通信可能に接続されている。
サービス提供環境E1は、ネットワークを介して、クラウドサービス等の外部サービスと連携した所定のサービスを提供するシステム環境である。なお、本実施形態では、外部サービスの具体例としてクラウドサービスを採用して説明するが、ASP(Application Service Provider)によって提供されるサービスやWebサービス等、ネットワークを介して提供される各種のサービスに関して本実施形態が適用されても良い。
サービス提供環境E1は、一台以上の情報処理装置で実現されるサービス提供システム10を有する。サービス提供システム10は、ネットワークを介して所定のサービスを提供する。
例えば、サービス提供システム10は、ユーザ環境E2の画像形成装置20において原稿をスキャンして生成された電子ファイルを、OCR(Optical Character Reader)処理して、外部ストレージシステム40に保存するサービス(OCR配信)を提供する。また、例えば、サービス提供システム10は、外部ストレージシステム40に保存されている電子ファイルを、ユーザ環境E2の画像形成装置20で印刷するサービスを提供する。
本実施形態に係るサービス提供システム10は、上述したOCR配信を提供するものとして説明する。
ただし、サービス提供システム10により提供されるサービスは、これらに限られない。例えば、サービス提供システム10は、外部ストレージシステム40に保存されている電子ファイルを、ユーザ環境E2に設置されたプロジェクタで投影するサービスを提供しても良い。また、例えば、サービス提供システム10は、画像形成装置20において原稿をスキャンして生成された電子ファイルを、OCR処理した後、所定の言語に翻訳(例えば、英語を日本語に翻訳)して、外部ストレージシステム40に保存するサービスを提供しても良い。
なお、サービス提供システム10の全部又は一部は、ユーザ環境E2に設置されていても良い。すなわち、サービス提供システム10を構成する情報処理装置の全部又は一部は、ユーザ環境E2に包含されていても良い。
ユーザ環境E2は、例えば、画像形成装置20やPC端末30等の機器を使用するユーザである企業等におけるシステム環境である。ユーザ環境E2は、一台以上の画像形成装置20と、一台以上のPC端末30とが、例えばLAN(Local Area Network)等のネットワークを介して接続されている。
ただし、画像形成装置20とPC端末30とは、同一のユーザ環境E2に設置されていなくても良い。すなわち、画像形成装置20とPC端末30とが、それぞれ異なるユーザ環境E2に設置されていても良い。
本実施形態に係る画像形成装置20は、スキャン機能やプリント機能等を有するMFP(Multifunction Peripheral)である。また、本実施形態に係るPC端末30は、例えば、デスクトップPC、ノート型PC、スマートフォン、タブレット端末等である。なお、画像形成装置20は、例えば、コピー機能やファクス(FAX)通信機能等の各種機能を有していても良い。
外部ストレージシステム40は、ネットワークを介してストレージサービス(又はオンラインストレージ)と呼ばれるクラウドサービスを提供するコンピュータシステムである。ストレージサービスとは、外部ストレージシステム40のストレージの記憶領域を貸し出すサービスである。
本実施形態に係るサービス提供システム10により提供されるOCR配信では、外部ストレージシステム40によって貸し出される記憶領域に、OCR処理された電子ファイルが保存(アップロード)される。
なお、以降では、複数の外部ストレージシステム40について、各々を区別するときは、「外部ストレージシステム401」、「外部ストレージシステム402」等と添え字を用いて記載する。また、外部ストレージシステム401によって提供されるストレージサービスの名称を「外部ストレージA」、外部ストレージシステム402によって提供されるストレージサービスの名称を「外部ストレージB」等とする。
なお、外部ストレージシステム40は、複数台の情報処理装置によって実現されるシステムであっても良い。また、図1に示される情報処理システム1の構成は一例であって、他の構成であっても良い。例えば、ユーザ環境E2には、画像形成装置20に加えて又は画像形成装置20に代えて、プロジェクタ、電子黒板、デジタルカメラ等の各種機器が含まれていても良い。すなわち、本実施形態に係る情報処理システム1のユーザ環境E2には、電子データの入力及び出力の少なくとも一方を行う各種機器が含まれ、これらの機器がサービス提供システム10により提供される各種サービスを利用しても良い。
<ハードウェア構成>
次に、本実施形態に係る情報処理システム1に含まれるサービス提供システム10及びPC端末30のハードウェア構成について、図2を参照しながら説明する。図2は、第一の実施形態に係るサービス提供システム及びPC端末の一例のハードウェア構成を示す図である。なお、サービス提供システム10及びPC端末30は、同様のハードウェア構成を有しているため、以降では、主に、サービス提供システム10のハードウェア構成について説明する。
サービス提供システム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は、コントローラ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をネットワークN1に接続するインタフェースである。これにより、画像形成装置20は、通信I/F24を介してデータ通信を行うことができる。プリンタ25は、印刷データを印刷する印刷装置である。スキャナ26は、原稿を読み取って画像ファイル(電子ファイル)を生成する読取装置である。
本実施形態に係る画像形成装置20は、図3に示すハードウェア構成を有することにより、後述するような各種処理を実現できる。
<機能構成>
次に、本実施形態に係る情報処理システム1の機能構成について、図4を参照しながら説明する。図4は、第一の実施形態に係る情報処理システムの一例の機能構成を示す図である。
画像形成装置20は、UI制御部210と、スキャン処理部220とを有する。これら各機能部は、画像形成装置20にインストールされた1以上のプログラムが、CPU31に実行させる処理により実現される。
UI制御部210は、操作パネル22に各種画面を表示させる。また、UI制御部210は、操作パネル22に表示された各種画面におけるユーザの各種操作を受け付ける。
スキャン処理部220は、UI制御部210により受け付けられたユーザの操作に応じて、スキャナ26で原稿をスキャンして電子ファイル(画像ファイル)を生成する。
PC端末30は、UI制御部310を有する。当該機能部は、PC端末30にインストールされた1以上のプログラムが、CPU16に実行させる処理により実現される。
UI制御部310は、表示装置12に各種画面を表示させる。また、UI制御部210は、表示装置12に表示された各種画面において、入力装置11により入力されたユーザの各種操作を受け付ける。
サービス提供システム10は、サービス処理部110と、ドキュメントサービス部160と、外部ストレージ連携部170とを有する。これら各機能部は、サービス提供システム10にインストールされた1以上のプログラムが、CPU16に実行させる処理により実現される。
また、サービス提供システム10は、アプリ情報記憶部180を有する。当該記憶部は、HDD18を用いて実現可能である。なお、アプリ情報記憶部180は、サービス提供システム10とネットワークを介して接続される記憶装置等を用いて実現されても良い。
サービス処理部110は、画像形成装置20のUI制御部210からの要求に応じて、後述するアプリ情報1000により提供される各種のサービスに関する処理を行う。また、サービス処理部110は、PC端末30のUI制御部310からの要求に応じて、アプリ情報1000に含まれる処理フロー情報1200の作成に関する処理を行う。
なお、処理フロー情報1200とは、アプリ情報1000により提供されるサービスを実現するための一連の処理(処理フロー)に関する情報である。
ここで、サービス処理部110は、アプリ管理部120と、ロジック処理部130と、フロー作成処理部140と、データI/F部150とを有する。
アプリ管理部120は、アプリ情報記憶部180に記憶されているアプリ情報1000を管理する。アプリ管理部120は、画像形成装置20のUI制御部210やPC端末30のUI制御部310からの要求に応じて、アプリ情報1000に基づく各種の情報を返信する。
例えば、アプリ管理部120は、画像形成装置20のUI制御部210からの要求に応じて、アプリ情報1000に含まれる画面定義情報1100を返信する。なお、画面定義情報1100とは、アプリ情報1000により提供されるサービスを利用するための画面であるサービス画面を表示するための情報である。
また、アプリ管理部120は、ロジック処理部130からの要求に応じて、アプリ情報1000に含まれる処理フロー情報1200を返信する。処理フロー情報1200は、上述したように、アプリ情報1000により提供されるサービス(例えば、OCR配信等)を実現する一連の処理に関する情報である。
さらに、アプリ管理部120は、フロー作成処理部140からの要求に応じて、PC端末30において作成された処理フロー情報1200をアプリ情報記憶部180に記憶させる。
ロジック処理部130は、画像形成装置20のUI制御部210からの要求に応じて、アプリ管理部120を介して、アプリ情報1000に含まれる処理フロー情報1200を取得する。そして、ロジック処理部130は、取得した処理フロー情報1200に基づいて、ドキュメントサービス部160や外部ストレージ連携部170のファイル処理部171等に処理の実行を要求することで、当該処理フロー情報1200に基づく一連の処理を実行する。
なお、ロジック処理部130は、後述するコンポーネントを組み合わせることにより、処理フロー情報1200に基づく一連の処理を実行する。
これにより、本実施形態に係るサービス提供システム10では、アプリ情報1000により提供される各種のサービスが実現される。ロジック処理部130の詳細については後述する。
フロー作成処理部140は、PC端末30のUI制御部310からの要求に応じて、処理フロー作成画面情報を返信する。なお、処理フロー作成画面情報とは、処理フロー情報1200を作成するための画面である処理フロー作成画面を表示するための情報である。
そして、フロー作成処理部140は、処理フロー作成画面において作成された処理フローを示す処理フロー情報1200の登録をアプリ管理部120に要求する。
このように、本実施形態では、PC端末30において作成された処理フローをサービス提供システム10に登録することができる。
データI/F部150は、画像形成装置20のUI制御部210からの要求に応じて、外部ストレージ連携部170のデータ処理部172に対して、各種の要求(例えば、フォルダ一覧の取得要求等)を行う。
ドキュメントサービス部160は、各種処理を実行するプログラム(モジュール)群である。これらのプログラムは、ロジック処理部130からの要求に応じて、後述するコンポーネントにより実行される。
ドキュメントサービス部160には、例えば、電子ファイルに対してOCR処理を実行するOCR処理161、電子ファイルを画像形成装置20が印刷可能な印刷データに変換する印刷変換処理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には、画像形成装置20にサービス画面を表示させるための画面定義情報1100と、サービスを実現するための一連の処理(処理フロー)に関する情報である処理フロー情報1200とが含まれる。
アプリ情報1000には、当該アプリ情報1000を一意に識別するためのアプリIDと、当該アプリ情報1000のアプリ名とが関連付けられている。本実施形態では、画像形成装置20のスキャン機能を利用するアプリ情報1000を「アプリ情報1000A」と表し、アプリIDを「app001」、アプリ名を「スキャンアプリ」とする。また、アプリ情報1000Aには、画面定義情報1100Aと、処理フロー情報1200Aとが含まれるものとする。処理フロー情報1200Aの詳細については後述する。
なお、アプリ情報記憶部180には、これ以外にも、画像形成装置20のプリント機能を利用するアプリ情報1000B(アプリID「app002」、アプリ名「プリントアプリ」)が含まれる。また、アプリ情報1000には、複数の画面定義情報1100と、複数の処理フロー情報1200とが含まれていても良い。
ここで、ロジック処理部130の詳細な機能構成について、図6を参照しながら説明する。図6は、第一の実施形態に係るロジック処理部の一例の機能構成を示す図である。
ロジック処理部130は、フロー実行部131と、コンポーネント管理部132と、コンポーネント群133と、型変換管理部134と、型変換群135とを有する。また、ロジック処理部130は、コンポーネント情報テーブル2000と、型変換情報テーブル3000とを利用する。
フロー実行部131は、画像形成装置20のUI制御部210からの要求に応じて、アプリ管理部120を介して、アプリ情報1000に含まれる処理フロー情報1200を取得する。そして、フロー実行部131は、取得した処理フロー情報1200に基づいてコンポーネントに対して処理の実行を要求する。
ここで、コンポーネントとは、処理フロー情報1200に基づく一連の処理(処理フロー)に含まれる一の処理を実行するためのモジュール等である。したがって、処理フロー情報1200に基づく一連の処理は、1以上のコンポーネントにより実行される処理が組み合わされることで実現される。なお、コンポーネントは、例えばクラスや関数等で定義される。
コンポーネント管理部132は、フロー実行部131からの要求に応じて、コンポーネントの生成を行う。コンポーネントの生成とは、例えばクラスや関数等で定義されているコンポーネントを、メモリ(例えばRAM14)上に展開することである。
また、コンポーネント管理部132は、UI制御部310からの要求に応じて、コンポーネント情報テーブル2000に格納されているコンポーネント情報を返信する。
ここで、コンポーネント情報テーブル2000の詳細について、図7を参照しながら説明する。図7は、コンポーネント情報テーブルの一例を示す図である。
図7に示すコンポーネント情報テーブル2000に格納されているコンポーネント情報は、データ項目として、コンポーネント名と、コンポーネントIDと、オペレーション名と、オペレーションIDと、パラメータとを有する。
コンポーネント名は、コンポーネントの名称である。コンポーネントIDは、コンポーネントを一意に識別するための識別情報である。オペレーション名は、コンポーネントにより実行される処理を示すオペレーションの名称である、オペレーションIDは、オペレーションを識別する情報である。パラメータは、コンポーネントにより実行される処理に設定される各種情報である。
例えば、コンポーネント名「外部ストレージAコンポーネント」(コンポーネントID「storageA」)は、オペレーション名「配信」(オペレーションID「uploadFile」)及び「取得」(オペレーションID「getFiles」)を有する。これは、外部ストレージAコンポーネントは、外部ストレージAに電子ファイルを配信(アップロード)するための配信オペレーションと、外部ストレージAから電子ファイルを取得(ダウンロード)するための取得オペレーションとを有していることを示している。
また、配信オペレーションには、外部ストレージAにおける配信先のフォルダIDを示す「folderID」をパラメータとして指定されることを示している。さらに、取得オペレーションには、外部ストレージAにおける取得対象のファイルIDを示す「fileID」をパラメータとして指定されることを示している。
同様に、例えば、コンポーネント名「OCRコンポーネント」(コンポーネントID「ocr」)は、オペレーション名「OCR」(オペレーションID「process」)を有する。これは、OCRコンポーネントは、電子ファイルにOCR処理を行うためのOCRオペレーションを有していることを示している。
また、OCRオペレーションには、OCR処理の対象となる言語を示す「language」と、OCR処理後の電子ファイルのデータ形式を示す「outputType」とをパラメータとして指定されることを示している。
このように、各コンポーネントには、1以上のオペレーションが含まれる。そして、コンポーネントは、オペレーションと、当該オペレーションに対するパラメータとが指定されることで、指定されたオペレーションにより示される処理を実行することができる。
コンポーネント群133は、コンポーネントの集合である。コンポーネント群133には、外部ストレージシステム401(外部ストレージA)と連携して処理を行うための外部ストレージAコンポーネント1331が含まれる。また、コンポーネント群133には、外部ストレージシステム402(外部ストレージB)と連携して処理を行うための外部ストレージBコンポーネント1332が含まれる。
さらに、コンポーネント群133は、電子ファイルにOCR処理を行うためのOCRコンポーネント1333や電子ファイルを印刷データに変換するための印刷変換コンポーネント1334が含まれる。
なお、コンポーネント群133には、これら以外にも、例えば、画像ファイルのサイズを変換するためのサイズ変換コンポーネントや言語の翻訳を行うための翻訳コンポーネント等が含まれても良い。
ここで、各コンポーネントは、コンポーネント共通I/F1330を有する。コンポーネント共通I/F1330は、各コンポーネントに対して共通に定義されたAPIであり、コンポーネントを生成するためのAPIと、コンポーネントに対して処理の実行を要求するためのAPIとが含まれる。
各コンポーネントがコンポーネント共通I/F1330を有することで、コンポーネントの追加等に伴う影響を局所化することができる。すなわち、本実施形態に係るサービス提供システム10では、例えば、フロー実行部131やコンポーネント管理部132等に影響を与えることなく、コンポーネントの追加等を行うことができる。
型変換管理部134は、データ型の型変換を管理する。ここで、各コンポーネントは、自身が扱えるデータ型が予め決まっている。したがって、型変換管理部134は、コンポーネントからの要求に応じて、型変換情報テーブル3000を参照して、型変換群135に定義されている型変換を生成する。そして、型変換管理部134は、生成された型変換に対して型変換処理の実行を要求する。これにより、型変換管理部134は、要求元のコンポーネントが扱えるデータ型に型変換を行う。
ここで、型変換情報テーブル3000の詳細について、図8を参照しながら説明する。図8は、型変換情報テーブルの一例を示す図である。
図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等に影響を与えることなく、型変換の追加等を行うことができる。
ここで、アプリ情報1000に含まれる処理フロー情報1200の詳細について説明する。以降では、アプリ情報1000Aに含まれる処理フロー情報1200Aの一例について、図9を参照しながら説明する。図9は、処理フロー情報の一例を示す図である。
図9に示す処理フロー情報1200Aは、画像形成装置20でスキャンして生成された電子ファイルを、OCR処理して、外部ストレージAに保存するサービス(OCR配信)を実現するための一連の処理に関する情報である。
処理フロー情報1200Aには、当該処理フロー情報1200Aの識別情報を示すフローID1201Aと、当該処理フロー情報1200Aの名称を示すフロー名1202Aと、一連の処理の処理内容を示すフロー詳細1203Aとが含まれる。
また、フロー詳細1203Aには、OCR処理を示す処理内容1213Aと、外部ストレージAに配信(アップロード)することを示す処理内容1223Aとが含まれる。
ここで、処理内容1213Aには、OCR処理を実行するコンポーネントのコンポーネントID「ocr」、オペレーションID「process」、及びパラメータ「language」、「outputType」が指定されている。同様に、処理内容1223Aでは、外部ストレージAと連携した処理を実行するコンポーネントのコンポーネントID「storageA」、配信処理を示すオペレーションID「uploadFile」、及びパラメータ「folderID」が指定されている。
これにより、処理フロー情報1200に基づく一連の処理では、電子ファイルをOCR処理した後、当該OCR処理後の電子ファイルを外部ストレージAに保存することができる。このように、本実施形態に係るサービス提供システム10では、コンポーネントID、オペレーションID、及びパラメータを指定した処理内容を含む処理フロー情報1200により一連の処理が実現される。
<処理の詳細>
次に、本実施形態に係る情報処理システム1の処理の詳細について説明する。
まず、ユーザUがPC端末30を用いて処理フローを作成し、当該作成した処理フローの処理フロー情報1200をサービス提供システム10に登録する場合の処理について、図10を参照しながら説明する。図10は、第一の実施形態に係る処理フローの登録処理の一例を示すシーケンス図である。
ユーザUは、PC端末30を用いて、処理フローの作成開始操作を行う(ステップS1001)。例えば、ユーザUは、PC端末30を用いて、サービス提供システム10にログインした後、当該ログイン後に表示されるポータル画面等において、「処理フロー作成」ボタン等を選択することにより、処理フローの作成開始操作を行うことができる。
PC端末30のUI制御部310は、処理フローの作成開始操作を受け付けると、サービス提供システム10のフロー作成処理部140に対して、アプリ一覧画面の取得要求を送信する(ステップS1002)。そして、フロー作成処理部140は、当該取得要求を受け取ると、アプリ一覧画面情報を返信する。
なお、アプリ一覧画面情報とは、サービスを提供するためのアプリケーション(アプリ情報1000)の一覧を表示するための情報であり、例えばHTML(HyperText Markup Language)等のデータ形式により表される。
PC端末30のUI制御部310は、アプリ一覧画面情報を受け取ると、サービス提供システム10のアプリ管理部120に対して、アプリ一覧情報の取得要求を送信する(ステップS1003)。そして、アプリ管理部120は、当該取得要求を受け取ると、アプリ情報記憶部180に記憶されているアプリ情報1000のアプリID及びアプリ名を取得して、アプリ一覧情報として返信する。
PC端末30のUI制御部310は、アプリ一覧情報を受け取ると、当該アプリ一覧情報をアプリ一覧画面情報に反映させて、例えば図11(a)に示すアプリ一覧画面4000を表示装置12に表示させる(ステップS1004)。図11(a)に示すアプリ一覧画面4000には、アプリ一覧情報に基づいてアプリ名の一覧が表示されるアプリ名一覧4001が含まれる。
次に、ユーザUは、アプリ一覧画面4000のアプリ名一覧4001から、処理フローを作成するアプリケーションを選択する操作を行う(ステップS1005)。ここで、以降では、アプリ一覧画面4000のアプリ名一覧4001から「スキャンアプリ」がユーザUにより選択されたものとして説明する。
PC端末30のUI制御部310は、アプリケーションの選択操作を受け付けると、サービス提供システム10のフロー作成処理部140に対して、処理フロー作成画面の取得要求を送信する(ステップS1006)。なお、当該取得要求には、ユーザUにより選択されたアプリケーションを識別するための情報(例えば、アプリ名一覧4001に含まれる各表示部品を識別する情報等)が含まれる。ただし、当該取得要求には、ユーザUにより選択されたアプリケーション(アプリ情報1000)のアプリIDが含まれても良い。
そして、フロー作成処理部140は、処理フロー作成画面の取得要求を受け取ると、処理フロー作成画面情報を返信する。なお、処理フロー作成画面情報とは、選択されたアプリケーションの処理フロー作成画面を表示するための情報であり、例えばHTML等のデータ形式により表される。
PC端末30のUI制御部310は、処理フロー作成画面情報を受け取ると、サービス提供システム10のコンポーネント管理部132に対して、コンポーネント情報の取得要求を送信する(ステップS1007)。そして、コンポーネント管理部132は、当該取得要求を受け取ると、コンポーネント情報テーブル2000に格納されているコンポーネント情報を返信する。
PC端末30のUI制御部310は、コンポーネント情報を受け取ると、当該コンポーネント情報を処理フロー作成画面情報に反映させて、例えば図11(b)に示す処理フロー作成画面4100を表示装置12に表示させる(ステップS1008)。すなわち、アプリ一覧画面4000において、ユーザUにより「スキャンアプリ」が選択されると、UI制御部310は、処理フロー作成画面4100に画面遷移させる。
図11(b)に示す処理フロー作成画面4100は、スキャンアプリの処理フローを作成するための画面であり、コンポーネント情報に基づいてコンポーネント名の一覧が表示されるコンポーネント一覧4101が含まれる。また、処理フロー作成画面4100には、処理フローをグラフィカルに作成するための作成領域4102と、処理フローのフロー名を指定するフロー名入力欄4103と、作成された処理フローを登録するための登録ボタン4104とが含まれる。
ユーザUは、図11(b)に示す処理フロー作成画面4100において、スキャンアプリの処理フローを作成することができる。
次に、ユーザUは、処理フロー作成画面4100において、スキャンアプリの処理フローを作成する操作を行う(ステップS1009)。
ここで、一例として、スキャンアプリの処理フロー作成画面4100において、ユーザUにより処理フロー情報1200Aを示す処理フローが作成される場合について、図12及び図13を参照しながら説明する。図12及び図13は、処理フロー作成の一例を示す図である。
まず、図12(a)に示す処理フロー作成画面4200において、コンポーネント一覧4201から「外部ストレージAコンポーネント」をユーザUが選択すると、外部ストレージAコンポーネントのオペレーション一覧4203が表示される。このように、コンポーネント一覧4201からコンポーネントが選択されると、選択されたコンポーネントのオペレーション一覧が表示される。
次に、オペレーション一覧4203から「配信」をユーザUが選択し、作成領域4202内の所望の位置を選択すると、アイコンP11が表示される。ここで、アイコンP11は、コンポーネント名「外部ストレージAコンポーネント」のオペレーション名「配信」により示される処理を表している。
このように、ユーザUは、コンポーネントとオペレーションとを選択した上で、作成領域4202内の所望の位置を選択すると、選択されたコンポーネント及びオペレーションにより示される処理を表すアイコンが表示される。
次に、上記と同様に、図12(b)に示す処理フロー作成画面4300において、コンポーネント一覧4301から「OCRコンポーネント」をユーザUが選択すると、OCRコンポーネントのオペレーション一覧4303が表示される。
次に、オペレーション一覧4303から「OCR」をユーザUが選択し、作成領域4302内の所望の位置を選択すると、アイコンP12が表示される。ここで、アイコンP12は、コンポーネント名「OCRコンポーネント」のオペレーション名「OCR」により示される処理を表している。
続いて、図12(b)に示す処理フロー作成画面4300の作成領域4302において、ユーザUが、アイコンP12とアイコンP11との先後関係を指定する操作を行うことで、矢印P13が表示される。これにより、ユーザUにより、アイコンP12が示す処理の次にアイコンP11が示す処理を行うことが指定される。
次に、図13(a)に示す処理フロー作成画面4400において、例えば、ユーザUがアイコンP12を選択すると、ウインドウP14が表示される。ウインドウP14は、OCRコンポーネントのオペレーション「OCR」のパラメータP141及びパラメータP142を設定するための設定画面である。ここで、ユーザUは、例えば、パラメータP141及びパラメータP142を、それぞれ「English」及び「pdf」に設定したものとする。
なお、ユーザUは、例えば、アイコンP11を選択して、外部ストレージAコンポーネントのオペレーション「配信」のパラメータを設定するための設定画面を表示させ、当該パラメータを設定しても良い。
そして、図13(b)に示す処理フロー作成画面4500において、ユーザUは、フロー名入力欄4501に、作成された処理フローF11のフロー名を入力し、登録ボタン4502を押下する。これにより、ユーザUにより作成された処理フローF11を示す処理フロー情報1200Aが作成される。なお、処理フローF11のフローIDは、例えば、アプリ情報1000Aにおいて一意となるように生成されれば良い。
なお、上記では、コンポーネント一覧からコンポーネント名及びオペレーション名をユーザUが選択した上で、作成領域の所望の位置を選択することで、当該コンポーネント及びオペレーションを示すアイコンが表示されたが、これに限られない。例えば、コンポーネント一覧からコンポーネント名及びオペレーション名を、作成領域にドラックアンドドロップすることで、当該コンポーネント及びオペレーションを示すアイコンが表示されても良い。
図10に戻る。PC端末30のUI制御部310は、ユーザUにより処理フローが作成されると、サービス提供システム10のフロー作成処理部140に対して、処理フローの登録要求を送信する(ステップS1010)。なお、当該登録要求には、ユーザUにより作成された処理フローF11の作成情報(例えば、作成領域に作成されたコンポーネント及びオペレーションを示すアイコンの識別情報や当該アイコン同士の関連を示す関連情報等)が含まれる。また、当該登録要求には、スキャンアプリを識別するための情報(例えば、処理フロー作成画面4500を識別する情報等)が含まれる。
ただし、UI制御部310は、ユーザUにより作成された処理フローF11を示す処理フロー情報1200Aを作成し、当該登録要求に含めて、サービス提供システム10に送信しても良い。また、UI制御部310は、当該登録要求にスキャンアプリのアプリID「app001」を含めても良い。
サービス提供システム10のフロー作成処理部140は、処理フローの登録要求を受け取ると、当該登録要求に含まれる処理フローF11の作成情報に基づいて、当該処理フローF11を示す処理フロー情報1200Aを作成する。また、フロー作成処理部140は、当該登録要求に含まれるスキャンアプリを識別するための情報から当該スキャンアプリのアプリ情報1000AのアプリID「app001」を特定する。
そして、フロー作成処理部140は、処理フロー情報1200Aと、アプリID「app001」とを含む処理フローの登録要求をアプリ管理部120に送信する(ステップS1011)。なお、フロー作成処理部140は、処理フロー作成画面情報に基づいて、スキャンアプリを識別するための情報からアプリID「app001」を特定すれば良い。
アプリ管理部120は、処理フローの登録要求を受け取ると、当該登録要求に含まれる処理フロー情報1200Aを、アプリID「app001」と関連付けてアプリ情報記憶部180に記憶させる。これにより、処理フロー情報1200Aがサービス提供システム10に登録される。
そして、アプリ管理部120は、処理フロー情報1200Aが登録されたことを示す登録結果を、フロー作成処理部140を介してUI制御部310に返信する。
以上により、本実施形態に係る情報処理システム1では、ユーザにより作成された処理フローを示す処理フロー情報1200をサービス提供システム10に登録することができる。
しかも、本実施形態に係る情報処理システム1では、コンポーネント一覧から所望のコンポーネント及びオペレーションを選択した上で、先後関係を指定することで、処理フローを作成することができる。したがって、ユーザは、容易に処理フローを作成することができるようになる。
ここで、処理フロー情報1200は、例えば、JSON(JavaScript Object Notation)やXML(Extensible Markup Language)、DSL(Domain-Specific Language)等により記述される。したがって、本実施形態に係る情報処理システム1によれば、これらJSONやXML、DSL等の仕様や形式を理解していないユーザでも容易に処理フローを作成することができるようになる。
ここで、上記では、先後関係が1つである処理フローを作成する場合について説明したが、これに限られず、処理フローの先後関係は複数であっても良い。
例えば、図14(a)に示す処理フロー作成画面5100では、後続の処理が複数である処理フローF12が作成領域5101に作成された場合を示している。処理フローF12では、アイコンP23の後続の処理としてアイコンP21及びアイコンP22が作成されている。このような処理フローF12によれば、例えば、画像形成装置20でスキャンして生成された電子ファイルを、OCR処理した後、外部ストレージAと外部ストレージBに配信(アップロード)することができる。
また、例えば、図14(b)に示す処理フロー作成画面5200では、先行の処理が複数である処理フローF13が作成領域5201に作成された場合を示している。処理フローF13では、アイコンP31の先行の処理としてアイコンP32及びアイコンP33が作成されている。このような処理フローF13によれば、例えば、画像形成装置20でスキャンして生成された電子ファイルをOCR処理した電子ファイルと、当該スキャンして生成された電子ファイルを印刷データに変換した電子ファイルとを外部ストレージAに配信することができる。
次に、ユーザUが画像形成装置20を用いて、サービス提供システム10のアプリケーション(アプリ情報1000)により提供されるサービスを利用する場合の処理について、図15を参照しながら説明する。図15は、第一の実施形態に係るサービス利用の全体処理の一例を示すシーケンス図である。
ユーザUは、画像形成装置20を用いて、アプリ情報1000により提供されるサービスの一覧を表示させるための表示操作を行う(ステップS1501)。
画像形成装置20のUI制御部210は、サービスの一覧を表示させるための表示操作を受け付けると、サービス提供システム10のアプリ管理部120に対して、サービス一覧の取得要求を送信する(ステップS1502)。そして、アプリ管理部120は、当該取得要求を受け取ると、サービス一覧画面情報を返信する。
なお、サービス一覧画面情報とは、アプリ情報1000により提供されるサービスの一覧を表示するための情報であり、例えばHTML等のデータ形式により表される。また、サービス一覧画面情報には、アプリ情報1000のアプリIDと、当該アプリ情報1000に含まれる処理フロー情報1200のフローID及びフロー名とが含まれる。
画像形成装置20のUI制御部210は、サービス一覧画面情報を受け取ると、当該サービス一覧画面情報に基づいて、例えば図16(a)に示すサービス一覧画面6100を操作パネル22に表示させる(ステップS1503)。図16(a)に示すサービス一覧画面6100には、サービス一覧画面情報に含まれるフローID及びフロー名に基づいてサービス名の一覧が表示されるサービス名一覧6101が含まれる。
なお、図16(a)に示すサービス一覧画面6100では、アプリ情報1000に含まれる処理フロー情報1200のフロー名をサービス名としたが、これに限られず、任意のサービス名が表示されても良い。
次に、ユーザUは、サービス一覧画面6100のサービス名一覧6101から、所望のサービスを選択する操作を行う(ステップS1504)。ここで、以降では、サービス一覧画面6100のサービス名一覧6101から「OCR配信1」がユーザUにより選択されたものとして説明する。
画像形成装置20のUI制御部210は、サービスの選択操作を受け付けると、サービス提供システム10のアプリ管理部120に対して、サービス画面の取得要求を送信する(ステップS1505)。なお、当該取得要求には、ユーザUにより選択されたサービスを提供するアプリ情報1000AのアプリID「app001」と、当該サービスを実現する処理フロー情報1200AのフローID「flow001」とが含まれる。
そして、アプリ管理部120は、サービス画面の取得要求を受け取ると、当該取得要求に含まれるアプリID「app001」とフローID「flow001」に対応する画面定義情報1100Aを取得し、当該取得した画面定義情報1100Aを返信する。
画像形成装置20のUI制御部210は、画面定義情報1100Aを受け取ると、サービス提供システム10のデータI/F部150に対して、サービス画面の表示用情報の取得要求を送信する(ステップS1506)。
なお、表示用情報とは、サービス画面における選択欄の各選択要素等のことであり、例えば、外部ストレージにおける保存先のフォルダの候補となるフォルダ一覧(フォルダ名及びフォルダIDの一覧)等である。以降では、表示用情報の取得要求は、外部ストレージAにおける保存先のフォルダの候補を示すフォルダ一覧の取得要求であるものとして説明する。
ここで、フォルダ一覧の取得要求は、図5(c)に示すAPI「/外部ストレージ名/data/folders」を用いて行うことができる。すなわち、UI制御部210は、データI/F部150に対して、例えば、「/storage-a/data/folders」としてHTTP(Hypertext Transfer Protocol)リクエストを送信することで、外部ストレージAのフォルダ一覧の取得を要求することができる。
サービス提供システム10のデータI/F部150は、表示用情報の取得要求を受け取ると、当該取得要求を対応する外部ストレージ連携部170のデータ処理部172に転送する(ステップS1507)。すなわち、データI/F部150は、受け取った表示用情報の取得要求を外部ストレージA連携部1701のデータ処理部1721に転送する。
外部ストレージA連携部1701のデータ処理部1721は、表示用情報の取得要求を受け取ると、外部ストレージAに対してフォルダ一覧の取得要求を送信して、フォルダ一覧を示すフォルダ一覧情報を取得する(ステップS1508)。すなわち、データ処理部1721は、共通I/F17211に定義されているAPIを用いて、外部ストレージAからフォルダ一覧情報を取得する。
そして、データ処理部1721は、データI/F部150を介して、フォルダ一覧情報をUI制御部210に返信する。
画像形成装置20のUI制御部210は、フォルダ一覧情報を受け取ると、当該フォルダ一覧情報を画面定義情報1100Aに反映させて、例えば図16(b)に示すサービス画面6200を操作パネル22に表示させる(ステップS1509)。
図16(b)に示すサービス画面6200は、ユーザUにより選択されたサービス名「OCR配信1」のサービスを利用するための画面であり、ファイル名入力欄6201と、保存先フォルダ選択欄6202と、スキャン実行ボタン6205とを有する。
また、サービス画面6200には、サービス名「OCR配信1」に対応する処理フロー情報1200Aに基づき、予め設定されたパラメータがOCR言語6203及びデータ形式6204に表示されている。
なお、サービス画面6200において、保存先フォルダ選択欄6202の各選択要素は、上記のステップS1507で外部ストレージAから取得されたフォルダ一覧情報に基づいて設定される。
次に、ユーザUは、サービス画面6200において、ファイル名入力欄6201を所望のファイル名を入力するとともに、保存先フォルダ選択欄6202から所望の保存先フォルダを選択する。そして、画像形成装置20のスキャナ26に原稿をセットした上で、スキャン実行ボタン6205を押下する(ステップS1510)。ここで、以降では、ユーザUにより、ファイル名入力欄6201にファイル名「test」が入力されるとともに、保存先フォルダ選択欄6202から「FolderB」が選択された上で、スキャン実行ボタン6205が押下されたものとして説明する。
画像形成装置20のUI制御部210は、スキャン実行ボタン6205の押下を受け付けると、スキャン処理部220に対して、スキャンの実行要求を送信する(ステップS1511)。
画像形成装置20のスキャン処理部220は、スキャンの実行要求を受け取ると、スキャナ26を制御して、セットされた原稿を読み取って、ファイル名「test」の電子ファイルを作成する(ステップS1512)。そして、スキャン処理部220は、スキャンが終了したことを示すスキャン結果を返信する。
画像形成装置20のUI制御部210は、スキャン結果を受け取ると、サービス提供システム10のロジック処理部130に対して、サービス名「OCR配信1」を実現する処理フローの実行要求を送信する(ステップS1513)。なお、当該実行要求には、アプリ情報1000AのアプリID「app001」と、処理フロー情報1200AのフローID「flow001」と、ファイル名「test」の電子ファイルと、ユーザUにより選択された保存先フォルダ「FolderB」を示すフォルダIDとが含まれる。
サービス提供システム10のロジック処理部130は、受け取った処理フローの実行要求に含まれるアプリID及びフローIDに対応する処理フロー情報1200Aを取得して、当該処理フロー情報1200Aに基づく一連の処理を実行する(ステップS1514)。そして、ロジック処理部130は、当該一連の処理の処理結果を返信する。
これにより、本実施形態に係るサービス提供システム10において、サービス名「OCR配信1」を実現する一連の処理が実行され、画像形成装置20に対して、「OCR配信1」が提供される。
ここで、上記のステップS1514の処理フローの実行処理の詳細な処理について、図17を参照しながら説明する。図17は、第一の実施形態に係る処理フローの実行処理の一例を示すシーケンス図である。
フロー実行部131は、処理フローの実行要求を受け取ると、アプリ管理部120に対して、処理フロー情報の取得要求を送信する(ステップS1701)。なお、当該取得要求には、受け取った処理フローの実行要求に含まれるアプリID「app001」と、フローID「flow001」とが含まれる。
そして、アプリ管理部120は、受け取った処理フロー情報の取得要求に含まれるアプリID「app001」及びフローID「flow001」に対応する処理フロー情報1200Aをアプリ情報記憶部180から取得して、当該処理フロー情報1200Aを返信する。これにより、フロー実行部131には、図9に示す処理フロー情報1200Aが返信される。
次に、フロー実行部131は、処理フロー情報1200Aを受け取ると、コンポーネント管理部132に対して、当該処理フロー情報1200Aに基づくコンポーネントの取得要求を送信する(ステップS1702)。
すなわち、フロー実行部131は、処理フロー情報1200Aのフロー詳細1203Aにおける処理内容1213Aに指定されたコンポーネント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に対して、処理フロー情報1200Aに基づく処理の実行要求を送信する(ステップS1704)。
すなわち、フロー実行部131は、処理フロー情報1200Aのフロー詳細1203Aにおける処理内容1213Aに指定されたオペレーションID「process」と、データとを含む処理の実行要求をOCRコンポーネント1333に送信する。
なお、当該処理の実行要求に含まれるデータは、データ型「InputStream」としてUI制御部210から受け取った電子ファイルである。
すなわち、フロー実行部131は、UI制御部210からデータ型「InputStream」として受け取った電子ファイルを、単に「データ」として(データ型を指定することなく)、OCRコンポーネント1333に送信する。図17では、このようにデータ型を指定することなく送受信される電子ファイル等を、単に「データ」と表す。
OCRコンポーネント1333は、処理の実行要求を受け取ると、型変換管理部134に対して、型変換要求を送信する(ステップS1705)。なお、当該型変換要求には、データと、OCRコンポーネント1333が扱うことができるデータ型である「LocalFilePath」の指定とが含まれる。
型変換管理部134は、型変換要求を受け取ると、当該型変換要求に含まれるデータのデータ型と、指定されたデータ型とが一致するか否かをチェックする(ステップS1706)。
ここで、受け取った型変換要求に含まれるデータのデータ型は「InputStream」である一方、指定されたデータ型は「LocalFilePath」である。したがって、型変換管理部134は、型変換要求に含まれるデータのデータ型と、指定されたデータ型とが一致しないものと判断する。
すると、型変換管理部134は、型変換情報テーブル3000を参照して、データ型「InputStream」をデータ型「LocalFilePath」に変換するための第1の型変換1351を特定する。そして、型変換管理部134は、特定した第1の型変換1351を生成する(ステップS1707)。なお、第1の型変換1351の生成は、型変換共通I/F1350に定義されたAPIを用いて行うことができる。
次に、型変換管理部134は、生成された第1の型変換1351に対して、型変換処理の実行要求を送信する(ステップS1708)。なお、当該実行要求には、データが含まれる。
第1の型変換1351は、型変換処理の実行要求を受け取ると、当該実行要求に含まれるデータのデータ型を「InputStream」から「LocalFilePath」に変換する(ステップS1709)。そして、第1の型変換1351は、型変換後のデータを返信する。
型変換管理部134は、型変換後のデータを受け取ると、当該型変換後のデータをOCRコンポーネント1333に送信する(ステップS1710)。
OCRコンポーネント1333は、型変換後のデータを受け取ると、処理を実行する(ステップS1711)。すなわち、OCRコンポーネント1333は、データ型「LocalFilePath」のデータ(パス又はアドレス)により示される電子ファイルに対して、OCR処理を実行する。
より具体的には、OCRコンポーネント1333は、ドキュメントサービス部160のOCR処理161に対して処理の実行を要求し、当該OCR処理161が当該電子ファイルに対して処理を実行する。
そして、OCRコンポーネント1333は、OCR処理後の電子ファイルを示すデータをフロー実行部131に返信する。なお、OCRコンポーネント1333により返信されるデータは、OCR処理後の電子ファイルのパス又はアドレスを示すデータ(すなわち、データ型「LocalFilePath」のデータ)である。
次に、フロー実行部131は、データを受け取ると、コンポーネント管理部132に対して、処理フロー情報1200Aに基づくコンポーネントの取得要求を送信する(ステップS1712)。
すなわち、フロー実行部131は、処理フロー情報1200Aのフロー詳細1203Aにおける処理内容1223Aに指定されたコンポーネントID「storageA」を含むコンポーネントの取得要求をコンポーネント管理部132に送信する。
コンポーネント管理部132は、コンポーネントの取得要求を受け取ると、当該取得要求に含まれるコンポーネントID「storageA」に対応する外部ストレージAコンポーネント1331を生成する(ステップS1713)。なお、外部ストレージAコンポーネント1331の生成は、コンポーネント共通I/F1330に定義されたAPIを用いて行うことができる。
そして、コンポーネント管理部132は、フロー実行部131に対して、生成した外部ストレージAコンポーネント1331を返信する。すなわち、コンポーネント管理部132は、例えば、外部ストレージAコンポーネント1331が展開されたメモリ(例えばRAM14)上のアドレスをフロー実行部131に返信する。
次に、フロー実行部131は、生成された外部ストレージAコンポーネント1331に対して、処理フロー情報1200Aに基づく処理の実行要求を送信する(ステップS1714)。
すなわち、フロー実行部131は、処理フロー情報1200Aのフロー詳細1203Aにおける処理内容1223Aに指定されたオペレーションID「uploadFile」と、データとを含む処理の実行要求を外部ストレージAコンポーネント1331に送信する。
なお、当該処理の実行要求に含まれるデータは、データ型「LocalFilePath」としてOCRコンポーネント1333から返信されたデータ(すなわち、OCR処理後の電子ファイルを示すパス又はアドレス)である。
外部ストレージAコンポーネント1331は、処理の実行要求を受け取ると、型変換管理部134に対して、型変換要求を送信する(ステップS1715)。なお、当該型変換要求には、データと、外部ストレージAコンポーネント1331が扱うことができるデータ型である「LocalFilePath」の指定とが含まれる。
型変換管理部134は、型変換要求を受け取ると、当該型変換要求に含まれるデータのデータ型と、指定されたデータ型とが一致するか否かをチェックする(ステップS1716)。
ここで、受け取った型変換要求に含まれるデータのデータ型は「LocalFilePath」であり、指定されたデータ型も「LocalFilePath」である。したがって、型変換管理部134は、型変換要求に含まれるデータのデータ型と、指定されたデータ型とが一致するものと判断する。
すると、型変換管理部134は、型変換要求に含まれるデータを外部ストレージAコンポーネント1331に送信する(ステップS1717)。このように、データ型のチェック(ステップS1716の処理)においてデータ型が一致すると判断された場合、型変換管理部134は、型変換の生成を行わない。
外部ストレージAコンポーネント1331は、型変換管理部134からデータを受け取ると、処理を実行する(ステップS1718)。すなわち、外部ストレージAコンポーネント1331は、外部ストレージAのフォルダ名「FolderB」のフォルダに対して、受け取ったデータにより示される電子ファイルを配信(アップロード)する。
より具体的には、外部ストレージAコンポーネント1331は、外部ストレージA連携部1701のファイル処理部1711に対して、図5(a)に示すAPI「/外部ストレージ名/process/folder」を用いて行うことができる。すなわち、外部ストレージAコンポーネント1331は、ファイル処理部1711に対して、例えば、「/storage-a/process/folder」としてデータを送信する。
これにより、ファイル名「test」の電子ファイル(スキャンにより生成された電子ファイルをOCR処理した電子ファイル)が、外部ストレージAのフォルダ名「FolderB」のフォルダに保存される。
そして、外部ストレージAコンポーネント1331は、処理結果を示すデータをフロー実行部131に返信する。
以上により、本実施形態に係るサービス提供システム10は、画像形成装置20に対して、外部ストレージと連携した一連の処理により実現されるサービスを提供することができる。このとき、本実施形態に係るサービス提供システム10は、処理フロー情報1200に基づいて、1以上のコンポーネントを組み合わせることにより、一連の処理を実行することができる。
[第二の実施形態]
次に、第二の実施形態に係る情報処理システム1について説明する。第二の実施形態では、処理フローの登録処理において、処理フローの登録(追加)に加えて、処理フローの更新又は削除をすることができる点が第一の実施形態と異なる。なお、以降では、第一の実施形態と実質的に同一の機能を有する箇所及び同一の処理を行う箇所については、第一の実施形態と同一の符号を用いて、その説明を省略する。
<処理の詳細>
以降では、第二の実施形態に係る処理フローの登録処理について、図18を参照しながら説明する。図18は、第二の実施形態に係る処理フローの登録処理の一例を示すシーケンス図である。
PC端末30のUI制御部310は、アプリ一覧画面4000のアプリ名一覧4001から、処理フローを登録、更新、又は削除するアプリケーションの選択操作を受け付けると、選択されたアプリケーションのアプリ情報画面を表示させる(ステップS1801)。
例えば、アプリ一覧画面4000のアプリ名一覧4001から「スキャンアプリ」がユーザUにより選択された場合、UI制御部310は、例えば図19に示すアプリ情報画面7100を表示装置12に表示させる。
図19に示すアプリ情報画面7100は、「スキャンアプリ」であるアプリ情報1000Aの処理フローの登録、更新、又は削除を行うための画面である。
アプリ情報画面7100には、アプリ情報1000Aに含まれる処理フロー情報1200Aの一覧であるフロー名一覧7101が含まれる。また、アプリ情報画面7100には、処理フローを登録するための登録ボタン7102と、登録されている処理フローを更新するための更新ボタン7103と、登録されている処理フローを削除するための削除ボタン7104とが含まれる。
以降では、ユーザUにより、登録ボタン7102が選択される場合、更新ボタン7103が選択された場合、削除ボタン7104が選択される場合について、それぞれ説明する。
ユーザUによりアプリ情報画面7100において登録ボタン7102が選択された場合、図10のステップS1007〜ステップS1008と同様の処理を行う。これらの処理の詳細については省略する。
ユーザUによりアプリ情報画面7100において、フロー名一覧7101から更新対象のフロー名が選択された上で、更新ボタン7103が選択された場合について、以降で説明する。なお、以降では、フロー名一覧7101から「OCR配信1」が選択された上で、更新ボタン7103が選択されたものとして説明する。
まず、PC端末30のUI制御部310は、更新ボタン7103の選択操作を受け付けると、フロー作成処理部140に対して、処理フローの更新画面の取得要求を送信する(ステップS1802)。なお、当該取得要求には、アプリ一覧画面4000のアプリ名一覧4001から選択されたアプリ情報1000AのアプリID「app001」と、フロー名一覧7101から選択された更新対象の処理フロー「OCR配信1」のフローID「flow001」が含まれる。
そして、フロー作成処理部140は、処理フローの更新画面の取得要求を受け取ると、当該取得要求に含まれるフローIDに対応する処理フロー更新画面情報を返信する。
PC端末30のUI制御部310は、処理フロー更新画面情報を受け取ると、コンポーネント管理部132に対して、コンポーネント情報の取得要求を送信する(ステップS1803)。そして、コンポーネント管理部132は、当該取得要求を受け取ると、コンポーネント情報テーブル2000に格納されているコンポーネント情報を返信する。
PC端末30のUI制御部310は、コンポーネント情報を受け取ると、当該コンポーネント情報を処理フロー更新画面に反映させて、例えば図20に示す処理フロー更新画面8100を表示装置12に表示させる(ステップS1805)。すなわち、アプリ情報画面7100において、フロー名一覧7101から更新対象の処理フローが選択された上で、更新ボタン7103が選択されると、UI制御部310は、処理フロー更新画面8100に画面遷移させる。
図20に示す処理フロー更新画面8100は、「OCR配信1」の処理フローを更新するための画面であり、コンポーネント情報に基づいてコンポーネント名の一覧が表示されるコンポーネント一覧8102が含まれる。また、処理フロー更新画面8100には、ユーザUにより選択された「OCR配信1」の処理フローF21を更新するための作成領域8101が含まれる。さらに、ユーザUにより選択された「OCR配信1」のフロー名を更新するためのフロー名入力欄8103と、更新内容を確定するための更新ボタン8104とが含まれる。
次に、ユーザUは、処理フロー更新画面8100において、処理フローF21を更新する操作を行う(ステップS1806)。なお、ユーザUは、図20に示す処理フロー更新画面8100において、処理フローを作成する場合と同様の方法で、選択した「OCR配信1」の処理フローを更新することができる。すなわち、ユーザUは、処理フローF21に対して、処理の追加又は削除を行うことにより、処理フローF21を更新することができる。
次に、PC端末30のUI制御部310は、ユーザUにより処理フローF21が更新されると、サービス提供システム10のフロー作成処理部140に対して、処理フローの更新要求を送信する(ステップS1807)。なお、当該更新要求には、ユーザUにより更新された処理フローF21の更新情報(例えば、作成領域に作成されたコンポーネント及びオペレーションを示すアイコンの識別情報や当該アイコン同士の関連を示す関連情報等)が含まれる。また、当該更新要求には、スキャンアプリを識別するための情報(例えば、処理フロー更新画面8100を識別する情報等)が含まれる。
ただし、UI制御部310は、ユーザUにより更新された処理フローF21を示す処理フロー情報1200Aを作成し、当該登録要求に含めて、サービス提供システム10に送信しても良い。また、UI制御部310は、当該登録要求にスキャンアプリのアプリID「app001」を含めても良い。
サービス提供システム10のフロー作成処理部140は、処理フローの更新要求を受け取ると、当該更新要求に含まれる処理フローF21の更新情報に基づいて、当該処理フローF21を示す処理フロー情報1200Aを作成する。また、フロー作成処理部140は、当該更新要求に含まれるスキャンアプリを識別するための情報から当該スキャンアプリのアプリ情報1000AのアプリID「app001」を特定する。
そして、フロー作成処理部140は、処理フロー情報1200Aと、アプリID「app001」とを含む処理フローの更新要求をアプリ管理部120に送信する(ステップS1807)。なお、フロー作成処理部140は、処理フロー作成更新情報に基づいて、スキャンアプリを識別するための情報からアプリID「app001」を特定すれば良い。
アプリ管理部120は、処理フローの更新要求を受け取ると、当該更新要求に含まれる処理フロー情報1200Aを、アプリID「app001」と関連付けてアプリ情報記憶部180に記憶させる(ステップS1808)。これにより、サービス提供システム10に登録されている処理フロー情報1200Aが更新される。
そして、アプリ管理部120は、処理フロー情報1200Aが更新されたことを示す更新結果を、フロー作成処理部140を介してUI制御部310に返信する。
ユーザUによりアプリ情報画面7100において、フロー名一覧7101から削除対象のフロー名が選択された上で、削除ボタン7104が選択された場合について、以降で説明する。なお、以降では、フロー名一覧7101から「OCR配信2」が選択された上で、削除ボタン7104が選択されたものとして説明する。
PC端末30のUI制御部310は、削除ボタン7104の選択操作を受け付けると、フロー作成処理部140に対して、処理フローの削除要求を送信する(ステップS1809)。なお、当該取得要求には、ユーザUにより選択されたアプリケーションを識別するための情報(例えば、アプリ名一覧4001に含まれる各表示部品を識別する情報等)が含まれる。また、当該取得要求には、ユーザUにより選択された削除対象の処理フローを識別するための情報(例えば、フロー名一覧7101に含まれる各表示部品を識別する情報等)が含まれる。
ただし、UI制御部310は、ユーザUにより選択されたアプリケーション(アプリ情報1000A)のアプリID「app001」や削除対象の処理フロー「OCR配信2」のフローID「flow002」を、処理フローの削除要求に含めても良い。
フロー作成処理部140は、処理フローの削除要求を受け取ると、当該削除要求に含まれるアプリケーションを識別するための情報及び削除対象の処理フローを識別するための情報から、それぞれアプリID「app001」及びフローID「flow002」を特定する。
そして、フロー作成処理部140は、アプリID「app001」及びフローID「flow002」を含む処理フローの削除要求をアプリ管理部120に送信する(ステップS1810)。
アプリ管理部120は、処理フローの削除要求を受け取ると、当該削除要求に含まれるアプリID「app001」及びフローID「flow002」により示される処理フロー情報1200をアプリ情報記憶部180から削除する。そして、アプリ管理部120は、フロー作成処理部140を介して、削除結果を返信する。
以上により、本実施形態に係る情報処理システム1では、サービス提供システム10に登録されている処理フローの更新及び削除を行うことができる。
[第三の実施形態]
次に、第三の実施形態に係る情報処理システム1について説明する。第三の実施形態では、自然言語により処理フローを作成及び登録することができる点が第一の実施形態と異なる。なお、以降では、第一の実施形態と実質的に同一の機能を有する箇所及び同一の処理を行う箇所については、第一の実施形態と同一の符号を用いて、その説明を省略する。
<処理の詳細>
以降では、第三の実施形態に係る処理フローの登録処理について、図21を参照しながら説明する。図21は、第三の実施形態に係る処理フローの登録処理の一例を示すシーケンス図である。
PC端末30のUI制御部310は、処理フロー作成画面情報を受け取ると、例えば図22に示す処理フロー作成画面9100を表示装置12に表示させる(ステップS2101)。
図22に示す処理フロー作成画面9100は、スキャンアプリの処理フローを作成するための画面であり、自然言語の選択欄9101〜9103が含まれる。また、処理フロー作成画面9100には、処理フローのフロー名を指定するフロー名入力欄9104と、処理フローを登録するための登録ボタン9105とが含まれる。
ユーザUは、処理フロー作成画面9100において、スキャンアプリの処理フローを作成する操作を行う(ステップS2102)。
ここで、本実施形態に係る処理フロー作成画面9100では、自然言語の選択欄9101〜9103からユーザUが所望の自然言語を選択することで、処理フローを作成することができる。
例えば、ユーザUは、自然言語の選択欄9101において、当該選択欄9101の選択要素の一覧9111から所望の選択要素を選択する。同様に、ユーザUは、自然言語の選択欄9202及び9203において、それぞれの選択要素の一覧9112及び9113から所望の選択要素を選択する。
このように、本実施形態では、ユーザUが所望の自然言語を選択することにより処理フローを作成することができる。
例えば、自然言語の選択欄9101〜9103において、それぞれ「OCR処理」、「外部ストレージB」、及び「配信」が選択されたとする。この場合、UI制御部310は、画像形成装置20でスキャンして生成された電子ファイルを、OCR処理した後、外部ストレージBに配信するための処理フロー情報1200を作成する。
なお、図22に示す処理フロー作成画面9100では、自然言語の選択欄9101〜9103の3つの選択欄が含まれる場合について示したが、これに限られず、自然言語の選択欄は任意の個数含まれていても良い。
そして、ユーザUは、フロー名入力欄9104に所望のフロー名を入力した上で、登録ボタン9105を選択することで、処理フローを作成することができる。
PC端末30のUI制御部310は、ユーザUにより処理フローが作成されると、フロー作成処理部140に対して、処理フローの登録要求を送信する(ステップS2103)。なお、当該登録要求には、ユーザUにより作成された処理フローの作成情報と、スキャンアプリを識別するための情報とが含まれる。
以上により、本実施形態に係る情報処理システム1では、ユーザにより作成された処理フローの処理フロー情報1200をサービス提供システム10に登録することができる。
しかも、本実施形態に係る情報処理システム1では、ユーザが自然言語を選択して、組み合わせることにより、処理フローを作成することができる。したがって、ユーザは、容易に処理フローを作成することができるようになる。
[第四の実施形態]
次に、第四の実施形態に係る情報処理システム1について説明する。第四の実施形態では、処理フローの登録処理において、画面を表示させるための各種情報の取得方法が第一の実施形態と異なる。なお、以降では、第一の実施形態と実質的に同一の機能を有する箇所及び同一の処理を行う箇所については、第一の実施形態と同一の符号を用いて、その説明を省略する。
<機能構成>
まず、本実施形態に係る情報処理システム1の機能構成について、図23を参照しながら説明する。図23は、第四の実施形態に係る情報処理システムの一例の機能構成を示す図である。
本実施形態に係るPC端末30は、UI制御部310Aを有する。UI制御部310Aは、操作パネル22に各種画面を表示させる。このとき、UI制御部310Aは、フロー作成処理部140Aから各種画面を表示させるための各種情報を取得する。すなわち、本実施形態に係るUI制御部310Aは、第一の実施形態と異なり、アプリ一覧情報やコンポーネント情報をアプリ管理部120やロジック処理部130から直接取得しない。
本実施形態に係るサービス提供システム10は、フロー作成処理部140Aを有する。フロー作成処理部140Aは、アプリ管理部120やロジック処理部130からアプリ一覧情報やコンポーネント情報を取得する。
<処理の詳細>
以降では、第四の実施形態に係る処理フローの登録処理について、図24を参照しながら説明する。図24は、第四の実施形態に係る処理フローの登録処理の一例を示すシーケンス図である。
サービス提供システム10のフロー作成処理部140Aは、アプリ一覧画面の取得要求を受け取ると、アプリ管理部120に対して、アプリ一覧情報の取得要求を送信する(ステップS2401)。そして、アプリ管理部120は、当該取得要求を受け取ると、アプリ一覧情報をフロー作成処理部140Aに返信する。その後、フロー作成処理部140Aは、アプリ管理部120から返信されたアプリ一覧情報とともに、アプリ一覧画面情報をUI制御部310Aに返信する。
サービス提供システム10のフロー作成処理部140Aは、フロー作成画面の取得要求を受け取ると、コンポーネント管理部132に対して、コンポーネント情報の取得要求を送信する(ステップS2402)。そして、コンポーネント管理部132は、当該取得要求を受け取ると、コンポーネント情報テーブル2000に格納されているコンポーネント情報をフロー作成処理部140Aに返信する。その後、フロー作成処理部140Aは、コンポーネント管理部132から返信されたコンポーネント情報とともに、処理フロー作成画面情報をUI制御部310Aに返信する。
以上により、本実施形態に係る情報処理システム1では、処理フローの登録処理において、アプリ一覧画面や処理フロー作成画面をPC端末30に表示する際に、PC端末30とサービス提供システム10との間の通信回数を削減することができる。
本発明は、具体的に開示された上記の実施形態に限定されるものではなく、特許請求の範囲から逸脱することなく、種々の変形や変更が可能である。