(57)【特許請求の範囲】
【請求項１】
１以上の情報処理装置により構成される情報処理システムであって、
電子データを用いた一連の処理で構成される第１の処理を外部サービスと連携して実行するアプリケーション毎に、該アプリケーションを識別するアプリ識別情報と、該第１の処理に関する情報とを関連付けて記憶する第１の記憶手段と、
前記情報処理システムに接続される１以上の機器のうちの一の機器から前記アプリ識別情報と、該一の機器においてユーザにより指定された電子データに関する情報とを含む要求を受信する受信手段と、
前記受信手段で受信した前記要求に含まれる前記アプリ識別情報に関連付けて前記第１の記憶手段に記憶されている前記第１の処理に関する情報に基づく前記第１の処理を、該要求に含まれる前記電子データに関する情報により指定される電子データに対して実行する処理実行手段と、
前記第１の処理に含まれる一の処理毎に、前記処理実行手段により前記一の処理が実行される前に、該実行される一の処理の前に実行させる処理に関する情報を追加した第２の処理に関する情報を生成するか否かを判定し、該判定結果に応じて前記第２の処理に関する情報を生成する処理変更手段と
を有し、
前記処理実行手段は、
前記処理変更手段により前記第２の処理に関する情報が生成された場合、該生成された前記第２の処理に関する情報に基づく第２の処理を、前記電子データに対して実行する、情報処理システム。
【請求項２】
前記処理変更手段は、
さらに、前記処理実行手段により前記第１の処理又は前記第２の処理が実行された後、該実行された前記第１の処理又は前記第２の処理の後に実行される処理に関する情報を追加した第３の処理に関する情報を生成するか否かを判定し、該判定結果に応じて前記第３の処理に関する情報を生成する、請求項１記載の情報処理システム。
【請求項３】
前記処理変更手段が前記第２の処理に関する情報を生成する条件に関する情報と、該条件を充足した場合に前記実行される一の処理の前に実行させる処理に関する情報とを関連付けて記憶する第２の記憶手段を有し、
前記処理変更手段は、
前記第１の処理に含まれる一の処理毎に、前記処理実行手段により前記一の処理が実行される前に、前記第２の記憶手段に記憶されている前記条件に関する情報を参照して、該条件を充足するか否かを判定することにより前記第２の処理に関する情報を生成するか否かを判定し、該判定結果に応じて、前記条件を充足すると判定された前記条件に関する情報に関連付けて前記第２の記憶手段に記憶されている前記処理に関する情報を、前記実行される一の処理に関する情報の前に追加した第２の処理に関する情報を生成する、請求項１又は２記載の情報処理システム。
【請求項４】
前記第２の記憶手段には、
電子データに所定の文字列が含まれることを条件とする条件に関する情報と、該条件を充足した場合に実行させる前記電子データを所定のデータ形式に変換させる処理に関する情報とを含み、
前記処理変更手段は、
前記第１の処理に含まれる一の処理毎に、前記処理実行手段により前記一の処理が実行される前に、前記第２の記憶手段に記憶されている前記条件に関する情報を参照して、該一の処理の処理対象となる電子データに所定の文字列が含まれるか否かを判定し、該判定結果に応じて前記実行される一の処理に関する情報の前に前記電子データを所定のデータ形式に変換させる処理に関する情報を追加した前記第２の処理に関する情報を生成する、請求項３記載の情報処理システム。
【請求項５】
前記処理変更手段は、
前記第１の処理に含まれる一の処理毎に、前記処理実行手段により前記一の処理が実行される前に、該実行される一の処理の前に実行される処理に関する情報を追加した、又は該実行される一の処理に関する情報を削除若しくは変更した第２の処理に関する情報を生成するか否かを判定し、該判定結果に応じて前記第２の処理に関する情報を生成する、請求項１記載の情報処理システム。
【請求項６】
情報処理装置であって、
電子データを用いた一連の処理で構成される第１の処理を外部サービスと連携して実行するアプリケーション毎に、該アプリケーションを識別するアプリ識別情報と、該第１の処理に関する情報とを関連付けて記憶する第１の記憶手段と、
前記情報処理装置に接続される１以上の機器のうちの一の機器から前記アプリ識別情報と、該一の機器においてユーザにより指定された電子データに関する情報とを含む要求を受信する受信手段と、
前記受信手段で受信した前記要求に含まれる前記アプリ識別情報に関連付けて前記第１の記憶手段に記憶されている前記第１の処理に関する情報に基づく前記第１の処理を、該要求に含まれる前記電子データに関する情報により指定される電子データに対して実行する処理実行手段と、
前記第１の処理に含まれる一の処理毎に、前記処理実行手段により前記一の処理が実行される前に、該実行される一の処理の前に実行させる処理に関する情報を追加した第２の処理に関する情報を生成するか否かを判定し、該判定結果に応じて前記第２の処理に関する情報を生成する処理変更手段と
を有し、
前記処理実行手段は、
前記処理変更手段により前記第２の処理に関する情報が生成された場合、該生成された前記第２の処理に関する情報に基づく第２の処理を、前記電子データに対して実行する、情報処理装置。
【請求項７】
１以上の情報処理装置により構成される情報処理システムであって、電子データを用いた一連の処理で構成される第１の処理を外部サービスと連携して実行するアプリケーション毎に、該アプリケーションを識別するアプリ識別情報と、該第１の処理に関する情報とを関連付けて記憶する第１の記憶手段を有する情報処理システムにおいて、
前記情報処理システムに接続される１以上の機器のうちの一の機器から前記アプリ識別情報と、該一の機器においてユーザにより指定された電子データに関する情報とを含む要求を受信する受信手順と、
前記受信手順で受信した前記要求に含まれる前記アプリ識別情報に関連付けて前記第１の記憶手段に記憶されている前記第１の処理に関する情報に基づく前記第１の処理を、該要求に含まれる前記電子データに関する情報により指定される電子データに対して実行する処理実行手順と、
前記第１の処理に含まれる一の処理毎に、前記処理実行手順により前記一の処理が実行される前に、該実行される一の処理の前に実行させる処理に関する情報を追加した第２の処理に関する情報を生成するか否かを判定し、該判定結果に応じて前記第２の処理に関する情報を生成する処理変更手順と
を有し、
前記処理実行手順は、
前記処理変更手順により前記第２の処理に関する情報が生成された場合、該生成された前記第２の処理に関する情報に基づく第２の処理を、前記電子データに対して実行する、情報処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理システム、情報処理装置、及び情報処理方法に関する。
【背景技術】
【０００２】
近年、クラウドコンピューティング等により多種多様な外部サービスが提供されるようになってきており、このような外部サービスと機器とが連携して処理を行う技術が知られている。例えば画像形成装置で原稿をスキャンして取得した画像データを外部ストレージサービスに保管する技術が知られている。
【０００３】
また、予め定義された事務フローモデルに基づき、各種処理を実行するコンポーネント部品を制御するための事務フローを生成する技術が知られている（例えば特許文献１参照）。このような技術では、生成された事務フローによりコンポーネント部品が組み合わされて、事務フローを実現する一連の処理が実行される。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ここで、上記の従来技術においては、予め定義された事務フローモデルに基づき事務フローが生成される。したがって、事務フローを実現する一連の処理に対して、動的に処理を追加等することができなかった。このため、実行される一連の処理の途中で、特定の処理を行う必要が生じた場合、改めて当該特定の処理を含めた一連の処理を実行させる必要があった。
【０００５】
本発明の一実施形態は、上記の点に鑑みてなされたもので、外部サービスと連携した一連の処理に対して動的に処理を追加することを目的とする。
【課題を解決するための手段】
【０００６】
上記目的を達成するため、本発明の一実施形態は、１以上の情報処理装置により構成される情報処理システムであって、電子データを用いた一連の処理で構成される第１の処理を外部サービスと連携して実行するアプリケーション毎に、該アプリケーションを識別するアプリ識別情報と、該第１の処理に関する情報とを関連付けて記憶する第１の記憶手段と、前記情報処理システムに接続される１以上の機器のうちの一の機器から前記アプリ識別情報と、該一の機器においてユーザにより指定された電子データに関する情報とを含む要求を受信する受信手段と、前記受信手段で受信した前記要求に含まれる前記アプリ識別情報に関連付けて前記第１の記憶手段に記憶されている前記第１の処理に関する情報に基づく前記第１の処理を、該要求に含まれる前記電子データに関する情報により指定される電子データに対して実行する処理実行手段と、前記処理実行手段により前記第１の処理に含まれる一の処理が実行される前に、該実行される一の処理の前に実行させる処理に関する情報を追加した第２の処理に関する情報を生成するか否かを判定し、該判定結果に応じて前記第２の処理に関する情報を生成する処理変更手段とを有し、前記処理実行手段は、前記処理変更手段により前記第２の処理に関する情報が生成された場合、該生成された前記第２の処理に関する情報に基づく第２の処理を、前記電子データに対して実行することを特徴とする。
【発明の効果】
【０００７】
本発明の一実施形態によれば、外部サービスと連携した一連の処理に対して動的に処理を追加することができる。
【図面の簡単な説明】
【０００８】
【図１】第１の実施形態に係る情報処理システムの一例のシステム構成図である。
【図２】第１の実施形態に係るサービス提供システムの一例のハードウェア構成図である。
【図３】第１の実施形態に係る画像形成装置の一例のハードウェア構成図である。
【図４】第１の実施形態に係る情報処理システムの一例の処理ブロック図である。
【図５】共通Ｉ／Ｆ及び固有Ｉ／Ｆの一例を示す図である。
【図６】処理内容の一例を示す図である。
【図７】第１の実施形態に係るロジック処理部の一例の処理ブロック図である。
【図８】第１の実施形態に係るスキャン配信サービスの全体処理の一例のシーケンス図である。
【図９】スキャン配信サービスを利用するためのアプリ画面の一例を示す図である。
【図１０】第１の実施形態に係る配信実行処理の一例のシーケンス図である。
【図１１】変更ルール情報テーブルの一例を示す図である。
【図１２】フロー経過情報テーブルの一例の説明するための図である。
【図１３】変更処理内容の一例を示す図である。
【図１４】第２の実施形態に係る配信実行処理の一例のシーケンス図である。
【図１５】変更された処理内容を承認するための画面の一例を示す図である。
【発明を実施するための形態】
【０００９】
以下、本発明の実施形態について図面を参照しながら詳細に説明する。
【００１０】
［第１の実施形態］
＜システム構成＞
まず、本実施形態に係る情報処理システム１のシステム構成について、図１を用いて説明する。図１は、第１の実施形態に係る情報処理システムの一例のシステム構成図である。図１に示される情報処理システム１は、サービス提供環境Ｅ１、ユーザ環境Ｅ２、及び外部ストレージシステム３０を含み、インターネット等の広域的なネットワークＮ１を介して通信可能に接続されている。
【００１１】
サービス提供環境Ｅ１は、ネットワークを介してクラウドサービス等の外部サービスを提供するシステム環境である。なお、本実施形態では、外部サービスの具体例としてクラウドサービスを採用して説明するが、ＡＳＰ（Application Service Provider）によって提供されるサービスやＷｅｂサービス等、ネットワークを介して提供されるサービスに関して本実施の形態が適用されてもよい。
【００１２】
サービス提供環境Ｅ１は、一台以上の情報処理装置で実現されるサービス提供システム１０を有する。サービス提供システム１０は、ネットワークを介して、外部サービスと連携した所定のサービスを提供する。例えば、サービス提供システム１０は、ユーザ環境Ｅ２の画像形成装置２０において原稿をスキャンして生成された電子ファイルを、ＯＣＲ（Optical Character Reader）処理して、外部ストレージシステム３０に保存するサービス（スキャン配信サービス）を提供する。本実施形態では、サービス提供システム１０は、このようなスキャン配信サービスを提供するものとして説明する。
【００１３】
ただし、サービス提供システム１０により提供されるサービスは、これに限られない。サービス提供システム１０は、例えば、外部ストレージシステム３０に保存されている電子ファイルを、ユーザ環境Ｅ２の画像形成装置２０で印刷するサービス（クラウドプリントサービス）を提供してもよい。また、サービス提供システム１０は、例えば、画像形成装置２０において原稿をスキャンして生成された電子ファイルを、ＯＣＲ処理した後、所定の言語に翻訳（例えば英語から日本語に翻訳）して、外部ストレージシステム３０に保存するサービスを提供してもよい。さらに、サービス提供システム１０は、例えば、外部ストレージシステム３０に保存されている電子ファイルを、ユーザ環境Ｅ２のプロジェクタで投影するサービス等を提供してもよい。
【００１４】
なお、サービス提供システム１０の全部又は一部は、ユーザ環境Ｅ２に設置されていてもよい。すなわち、サービス提供システム１０を構成する情報処理装置の全部又は一部は、ユーザ環境Ｅ２に包含されていてもよい。
【００１５】
ユーザ環境Ｅ２は、例えば画像形成装置２０を使用するユーザである企業等におけるシステム環境である。ユーザ環境Ｅ２は、一台以上の画像形成装置２０が例えばＬＡＮ（Local Area Network）等のネットワークを介して接続されている。
【００１６】
本実施形態に係る画像形成装置２０は、スキャン機能を有する。ただし、画像形成装置２０は、スキャン機能以外に、プリント機能やコピー機能、ファックス（ＦＡＸ）通信機能等を備える複合機等でもよい。
【００１７】
外部ストレージシステム３０は、ネットワークを介してストレージサービス（又はオンラインストレージ）と呼ばれるクラウドサービスを提供するコンピュータシステムである。ストレージサービスとは、外部ストレージシステム３０の記憶領域を貸し出すサービスである。本実施形態では、スキャン配信サービスにおいて、外部ストレージシステム３０によって貸し出される記憶領域に、電子ファイルを保存（アップロード）する。
【００１８】
なお、以降では、複数の外部ストレージシステム３０について、各々を区別するときは、「外部ストレージシステム３０１」、「外部ストレージシステム３０２」等と添え字を用いて記載する。また、外部ストレージシステム３０１によって提供されるサービスの名称を「ストレージサービスＡ」、ストレージシステム３０２によって提供されるサービスの名称を「ストレージサービスＢ」等とする。
【００１９】
また、外部ストレージシステム３０は、複数台の情報処理装置によって実現されるシステムであってもよい。さらに、図１に示される情報処理システム１の構成は一例であって、他の構成であってもよい。例えば、ユーザ環境Ｅ２は、画像形成装置２０に加えて又は画像形成装置２０に代えて、プロジェクタ、電子黒板、携帯電話、スマートフォン等の各種機器を有していてもよい。
【００２０】
＜ハードウェア構成＞
次に、本実施形態に係るサービス提供システム１０及び画像形成装置２０のハードウェア構成について、それぞれ図２及び図３を用いて説明する。
【００２１】
≪サービス提供システム≫
図１に示されるサービス提供システム１０は、例えば図２に示されるようなハードウェア構成を有する。図２は、第１の実施形態に係るサービス提供システムの一例のハードウェア構成図である。図２に示すサービス提供システム１０は、入力装置１１と、表示装置１２と、外部Ｉ／Ｆ１３と、ＲＡＭ（Random Access Memory）１４とを有する。また、サービス提供システム１０は、ＲＯＭ（Read Only Memory）１５と、ＣＰＵ（Central Processing Unit）１６と、通信Ｉ／Ｆ１７と、ＨＤＤ（Hard Disk Drive）１８とを有する。これらの各ハードウェアは、それぞれがバスＢで接続されている。
【００２２】
入力装置１１は、キーボードやマウス、タッチパネル等を含み、ユーザが各操作信号を入力するのに用いられる。表示装置１２は、ディスプレイ等を含み、サービス提供システム１０による処理結果を表示する。なお、入力装置１１及び表示装置１２は、必要なときにサービス提供システム１０に接続して利用する形態であってもよい。
【００２３】
通信Ｉ／Ｆ１７は、サービス提供システム１０をネットワークＮ１に接続するインタフェースである。これにより、サービス提供システム１０は、通信Ｉ／Ｆ１７を介してデータ通信を行うことができる。
【００２４】
ＨＤＤ１８は、プログラムやデータを格納している不揮発性の記憶装置の一例である。格納されるプログラムやデータには、サービス提供システム１０全体を制御する基本ソフトウェアであるＯＳ（Operating System）、及びＯＳ上において各種機能を提供するアプリケーションソフトウェア等がある。なお、サービス提供システム１０は、ＨＤＤ１０８に代え、記憶媒体としてフラッシュメモリを用いるドライブ装置（例えばソリッドステートドライブ：ＳＳＤ）を利用するものであってもよい。また、ＨＤＤ１０８は、格納しているプログラムやデータを所定のファイルシステム及び／又はＤＢにより管理している。
【００２５】
外部Ｉ／Ｆ１３は、外部装置とのインタフェースである。外部装置には、記録媒体１３ａ等がある。これにより、サービス提供システム１０は、外部Ｉ／Ｆ１３を介して記録媒体１３ａの読み取り及び／又は書き込みを行うことができる。記録媒体１３ａには、フレキシブルディスク、ＣＤ、ＤＶＤ、ＳＤメモリカード、ＵＳＢメモリ等がある。
【００２６】
ＲＯＭ１５は、電源を切ってもプログラムやデータを保持することができる不揮発性の半導体メモリ（記憶装置）である。ＲＯＭ１５には、サービス提供システム１０の起動時に実行されるＢＩＯＳ（Basic Input/Output System）、ＯＳ設定、及びネットワーク設定等のプログラムやデータが格納されている。ＲＡＭ１４は、プログラムやデータを一時保持する揮発性の半導体メモリ（記憶装置）である。
【００２７】
ＣＰＵ１６は、ＲＯＭ１５やＨＤＤ１８等の記憶装置からプログラムやデータをＲＡＭ１４上に読み出し、処理を実行することで、サービス提供システム１０全体の制御や機能を実現する演算装置である。
【００２８】
本実施形態に係るサービス提供システム１０は、上記のハードウェア構成を有することにより、後述するような各種処理を実現できる。
【００２９】
≪画像形成装置≫
図１に示される画像形成装置２０は、例えば図３に示されるようなハードウェア構成を有する。図３は、第１の実施形態に係る画像形成装置の一例のハードウェア構成図である。図３に示す画像形成装置２０は、コントローラ２１と、操作パネル２２と、外部Ｉ／Ｆ２３と、通信Ｉ／Ｆ２４と、スキャナ２５とを有する。また、コントローラ２１は、ＣＰＵ２１１と、ＲＡＭ２１２と、ＲＯＭ２１３と、ＮＶＲＡＭ２１４と、ＨＤＤ２１５とを有する。ＲＯＭ２１３は、各種プログラムやデータが格納されている。ＲＡＭ２１２はプログラムやデータを一時保持する。ＮＶＲＡＭ２１４は、例えば設定情報等が格納されている。また、ＨＤＤ２１５は各種プログラムやデータが格納されている。
【００３０】
ＣＰＵ２１１は、ＲＯＭ２１３やＮＶＲＡＭ２１４、ＨＤＤ２１５等からプログラムやデータ、設定情報等をＲＡＭ２１２上に読み出し、処理を実行することで、画像形成装置２０全体の制御や機能を実現する。
【００３１】
操作パネル２２は、ユーザからの入力を受け付ける入力部と、表示を行う表示部とを備えている。外部Ｉ／Ｆ２３は、外部装置とのインタフェースである。外部装置には、記録媒体２３ａ等がある。これにより、画像形成装置２０は、外部Ｉ／Ｆ２３を介して記録媒体２３ａの読み取り及び／又は書き込みを行うことができる。記録媒体２３ａにはＩＣカード、フレキシブルディスク、ＣＤ、ＤＶＤ、ＳＤメモリカード、ＵＳＢメモリ等がある。
【００３２】
通信Ｉ／Ｆ２４は、画像形成装置２０をネットワークＮ１に接続するインタフェースである。これにより、画像形成装置２０は通信Ｉ／Ｆ２４を介してデータ通信を行うことができる。スキャナ２５は原稿を読み取り画像ファイル（電子ファイル）を生成するための読取装置である。
【００３３】
本実施形態に係る画像形成装置２０は、上記のハードウェア構成を有することにより、後述するような各種処理を実現できる。
【００３４】
＜ソフトウェア構成＞
次に、本実施形態に係る情報処理システム１の処理ブロックについて、図４を用いて説明する。図４は、第１の実施形態に係る情報処理システムの一例の処理ブロック図である。
【００３５】
画像形成装置２０は、例えばＣＰＵ２１１等により実現されるブラウザ２１０を有する。画像形成装置２０のユーザは、ブラウザ２１０を介して、サービス提供システム１０により提供されるサービスを利用することができる。このように、本実施形態に係る画像形成装置２０では、ブラウザ２１０が搭載されていればよく、サービスを利用するための専用のアプリケーションを開発等する必要がない。
【００３６】
サービス提供システム１０は、サービス処理部１１０と、ドキュメントサービス部１５０と、ストレージサービス連携部１６０とを有する。これら各部は、サービス提供システム１０にインストール又はダウンロードされる１以上のプログラムが、ＣＰＵ１６等に実行させる処理により実現される。
【００３７】
また、サービス提供システム１０は、アプリ情報記憶部１９０を有する。このアプリ情報記憶部１９０は、ＨＤＤ１８により実現される。なお、アプリ情報記憶部１９０は、サービス提供システム１０とネットワークを介して接続される記憶装置等により実現されてもよい。
【００３８】
サービス処理部１１０は、アプリ管理部１２０と、ロジック処理部１３０と、データＩ／Ｆ部１４０とを有する。
【００３９】
アプリ管理部１２０は、アプリ情報記憶部１９０に記憶されているアプリ情報１０００を管理する。アプリ管理部１２０は、ブラウザ２１０からの要求に応じて、アプリ情報１０００に含まれる画面定義に基づくアプリ画面を返信する。これにより、画像形成装置２０のブラウザ２１０には、サービス提供システム１０により提供されるサービスを利用するためのアプリ画面が表示される。ここで、アプリ情報１０００は、上述したアプリ画面を画像形成装置２０に表示させるための画面定義と、当該アプリ情報１０００により実現されるサービスの処理内容とが記述された情報である。
【００４０】
また、アプリ管理部１２０は、ロジック処理部１３０からの要求に応じて、アプリ情報１０００に含まれる処理内容を返信する。処理内容には、詳細は後述するが、スキャン配信サービス等のサービス提供システム１０により提供されるサービスを実現するための一連の処理が記述されている。
【００４１】
ロジック処理部１３０は、ブラウザ２１０からの要求に応じて、アプリ管理部１２０から処理内容を取得する。そして、ロジック処理部１３０は、取得した処理内容に基づきドキュメントサービス部１５０やストレージサービス連携部１６０のファイル処理部１７０に対して、処理の実行を要求する。これにより、サービス提供システム１０による各種サービスが、画像形成装置２０に提供される。なお、ロジック処理部１３０の詳細な処理ブロックについては、後述する。
【００４２】
データＩ／Ｆ部１４０は、ブラウザ２１０からの要求に応じて、ストレージサービス連携部１６０のデータ処理部１８０に対して、所定の要求（例えばフォルダ一覧の取得等の要求）を行う。
【００４３】
ドキュメントサービス部１５０は、サービス提供システム１０により提供されるサービスを実現するためのプログラム（モジュール）群である。ドキュメントサービス部１５０には、例えば、電子ファイルに対してＯＣＲ処理を実行するＯＣＲ処理１５１、電子ファイルをパスワード付き電子ファイルに変換する機密変換処理１５２等が含まれる。なお、ドキュメントサービス部１５０は、例えば、電子ファイルを画像形成装置２０が印刷可能な印刷データに変換するプログラム、電子ファイルの圧縮又は解凍するためのプログラム、言語の翻訳処理を行うためのプログラム等が含まれてもよい。
【００４４】
ストレージサービス連携部１６０は、ロジック処理部１３０及びデータＩ／Ｆ部１４０からの要求に応じて、外部ストレージシステム３０に対して、各種処理の実行を要求する。ここで、サービス提供システム１０は、外部ストレージシステム３０毎に、ストレージサービス連携部１６０をそれぞれ有する。すなわち、サービス提供システム１０は、外部ストレージシステム３０１に対して処理を要求するためのストレージサービスＡ連携部１６０１、外部ストレージシステム３０２に対して処理を要求するためのストレージサービスＢ連携部１６０２等を有する。このように、サービス提供システム１０は、連携して処理を行う外部ストレージシステム３０毎に、それぞれ対応するストレージサービス連携部１６０を有する。なお、以降では、複数のストレージサービス連携部１６０について、各々を区別するときは、上記のように「ストレージサービスＡ連携部１６０１」、「ストレージサービスＢ連携部１６０２」等と添え字を用いて記載する。
【００４５】
ストレージサービス連携部１６０は、上述したように、ロジック処理部１３０からの要求を受け付けるファイル処理部１７０と、データＩ／Ｆ部１４０からの要求を受け付けるデータ処理部１８０とを有する。
【００４６】
ファイル処理部１７０は、外部ストレージシステム３０に保存されている電子ファイルに対する操作（例えば、取得、保存、編集等）を行うためのＡＰＩ（Application Programming Interface）が定義された共通Ｉ／Ｆ１７１及び固有Ｉ／Ｆ１７２を有する。共通Ｉ／Ｆ１７１は、複数の外部ストレージシステム３０間で共通に利用できるＡＰＩであり、例えば図５（ａ）に示すようなＡＰＩが挙げられる。換言すれば、ファイル処理部１７０の共通Ｉ／Ｆ１７１は、すべての外部ストレージシステム３０が利用できるファイル操作に関する機能（例えば、ファイルの取得、保存等）を利用するためのＡＰＩ群である。一方、固有Ｉ／Ｆ１７２は、特定の外部ストレージシステム３０において利用できるＡＰＩであり、例えば図５（ｂ）に示すようなＡＰＩが挙げられる。換言すれば、ファイル処理部１７０の固有Ｉ／Ｆ１７２は、ある特定の外部ストレージシステム３０において利用できるファイル操作に関する機能（例えば、ファイルの編集等）を利用するためのＡＰＩ群である。したがって、共通Ｉ／Ｆ１７１は、すべてのストレージサービス連携部１６０に対して同様に定義される一方、固有Ｉ／Ｆ１７１は、当該固有Ｉ／Ｆ１７１で定義されるＡＰＩが利用可能な特定のストレージサービス連携部１６０に対して定義される。
【００４７】
一方、データ処理部１８０は、外部ストレージシステム３０に保存されている電子ファイルの書誌情報等のメタデータ（例えば、ファイル一覧、フォルダ一覧等）を取得等するためのＡＰＩが定義された共通Ｉ／Ｆ１８１及び固有Ｉ／Ｆ１８２を有する。共通Ｉ／Ｆ１８１は、複数の外部ストレージシステム３０間で共通に利用できるＡＰＩであり、例えば図５（ｃ）に示すようなＡＰＩが挙げられる。換言すれば、データ処理部１８０の共通Ｉ／Ｆ１８１は、すべての外部ストレージシステム３０で利用できるメタデータ取得等の機能を利用するためのＡＰＩ群である。一方、固有Ｉ／Ｆ１８２は、ある特定の外部ストレージシステム３０において利用できるＡＰＩであり、例えば図５（ｄ）に示すようなＡＰＩが挙げられる。換言すれば、データ処理部１８０の固有Ｉ／Ｆ１８２は、ある特定の外部ストレージシステム３０において利用できるメタデータ取得等の機能（例えば、画像ファイル一覧の取得等）を利用するためのＡＰＩ群である。したがって、共通Ｉ／Ｆ１８１は、すべてのストレージサービス連携部１６０に対して同様に定義される一方、固有Ｉ／Ｆ１８１は、当該固有Ｉ／Ｆ１８１で定義されるＡＰＩが利用可能な特定のストレージサービス連携部１６０に対して定義される。なお、ストレージサービス連携部１６０の追加等は、ＳＤＫ（Software Development Kit）を用いて行うことができる。
【００４８】
ここで、図５に示されるように共通Ｉ／Ｆ１７１及び固有Ｉ／Ｆ１７２で定義されるＡＰＩは、「外部サービス名（ストレージサービス名）」を指定することで利用することができる（すなわち、「ストレージサービス名」が可変部分として定義されている）。
【００４９】
アプリ情報記憶部１９０は、アプリ情報１０００を記憶する。アプリ情報１０００は、アプリ画面を画像形成装置２０に表示させるための画面定義と、サービス提供システム１０により提供されるサービスを実現するため一連の処理を示す処理内容とが記述された情報である。アプリ情報１０００は、アプリ情報１０００を一意に識別するためのアプリＩＤ毎に、アプリ情報記憶部１９０に記憶されている。本実施形態では、ストレージサービスＡと連携したスキャン配信サービスを実現するためのアプリ情報を「アプリ情報１０００１」とし、このアプリ情報１０００１のアプリＩＤを「app001」とする。
【００５０】
ここで、アプリ情報１０００１に含まれる処理内容を図６に示す。図６は、処理内容の一例を示す図である。図６に示す処理内容１１００は、スキャンして生成された電子ファイルについて、ＯＣＲ処理した後、ストレージサービスＡの指定されたフォルダに配信する一連の処理を示している。図６に示す処理内容１１００の「flowId」にはアプリ情報１０００１において処理内容を一意に識別するためのフローＩＤ「flow1」が定義されている。また、図６に示す処理内容１１００の「flowDetails」には、処理内容を構成するオペレーション１１０１及び１１０１が定義されている。ここで、オペレーションとは、サービス提供システム１０により提供されるサービスを実現するための一連の処理が定義された処理内容を構成する各処理のことである。すなわち、処理内容は、１以上のオペレーションが定義されることにより構成される。
【００５１】
図６に示す処理内容１１００は、ＯＣＲ処理を実行するオペレーション１１０１及びストレージサービスＡへの配信（アップロード）処理を実行するオペレーション１１０２で構成されている。より具体的には、オペレーション１１０１は、英語でＯＣＲ処理を実行してＰＤＦ（Portable Document Format）形式で処理結果を出力する。また、オペレーション１１０２は、ストレージサービスＡの指定されたフォルダＩＤのフォルダに電子ファイルを配信（アップロード）する。
【００５２】
なお、図６に示す処理内容１１００は、スキャン配信サービスを実現するための一例である。スキャン配信サービスは、例えば、ドキュメントサービス部１５０に含まれるプログラムにより実現される各種処理を、さらに組み合わせた一連の処理により実現されてもよい。例えば、スキャン配信サービスは、「スキャンされた電子ファイルについて、ＯＣＲ処理を行った後、英語を日本語に翻訳して、ストレージサービスＡの指定されたフォルダに配信する」等であってもよい。
【００５３】
また、アプリ情報１０００１には、複数の処理内容が含まれてもよい。すなわち、アプリ情報１０００には、フローＩＤが異なる複数の処理内容が含まれてもよい。
【００５４】
次に、本実施形態に係るロジック処理部１３０の詳細な処理ブロックについて、図７を用いて説明する。図７は、第１の実施形態に係るロジック処理部の一例の処理ブロック図である。ロジック処理部１３０は、フロー実行部１３１と、コンポーネント管理部１３２と、コンポーネント群１３３と、フロー経過管理部１３４と、フロー変更部１３５と、フロー経過情報記憶部１３６と、変更ルール情報記憶部１３７とを有する。
【００５５】
フロー実行部１３１は、ブラウザ２１０からスキャン配信サービスの処理の実行要求を受け付けると、アプリ管理部１２０を介して、アプリ情報１０００から処理内容を取得する。そして、フロー実行部１３１は、アプリ情報１０００から取得した処理内容に定義されたオペレーションに従ってコンポーネントに対して処理の実行を要求する。なお、ここで、コンポーネントとは、各種処理を実行するためのモジュール等であり、例えばクラスや関数等で定義される。
【００５６】
また、フロー実行部１３１は、コンポーネントから処理結果を受け取ると、フロー経過情報の更新をフロー経過管理部１３４に要求する。ここで、フロー経過情報とは、処理内容に定義されたオペレーションのうち実行済のオペレーションに関する情報である。
【００５７】
さらに、フロー実行部１３１は、処理内容に定義されたオペレーションに従ってコンポーネントに対して処理の実行を要求する前、又は処理を実行したコンポーネントから処理結果を受け取った後に、処理内容の変更要否の判定をフロー変更部１３５に要求する。このように、本実施形態に係るサービス提供システム１０では、処理内容に定義されたオペレーションに従った処理の実行前又は実行後に、処理内容の変更要否を判定する。そして、後述するように、この判定結果に応じて、フロー変更部１３５により処理内容が変更される。このようにして、一連の処理を示す処理内容が動的に変更される。
【００５８】
コンポーネント管理部１３２は、フロー実行部１３１からの要求に応じて、コンポーネントの生成を行う。なお、コンポーネントの生成とは、例えばクラスで定義されたコンポーネントを、メモリ（例えばＲＡＭ１４）上に展開することを意味する。
【００５９】
コンポーネント群１３３は、コンポーネントの集合である。コンポーネント群１３３には、外部ストレージシステム３０に電子ファイルを配信するための配信コンポーネント１３３１、電子ファイルにＯＣＲ処理を行うためのＯＣＲコンポーネント１３３２が含まれる。また、コンポーネント群１３３には、電子ファイルをパスワード付き電子ファイルに変換するための機密変換コンポーネント１３３３が含まれる。なお、コンポーネント群１３３には、これら以外にも、例えば、外部ストレージシステム３０から電子ファイルを取得するための取得コンポーネントや外部ストレージシステム３０を利用するための認証情報を取得するための認証コンポーネント等が含まれてもよい。
【００６０】
このように、コンポーネント群１３３には、処理内容に定義されたオペレーションの処理を実行するコンポーネントが定義されている。したがって、フロー実行部１３１は、処理内容に定義されたオペレーションに従って、オペレーションに対応するコンポーネントに処理の実行を要求することで、サービス提供システム１０により提供されるサービスを実現するための一連の処理が実行される。
【００６１】
さらに、これらの各コンポーネントは、コンポーネント共通Ｉ／Ｆ１３３０を有する。コンポーネント共通Ｉ／Ｆ１３３０は、各コンポーネントに対して共通に定義されたＡＰＩであり、コンポーネントを生成するためのＡＰＩと、コンポーネントに対して処理の実行を要求するためのＡＰＩとが含まれる。このように、各コンポーネントがコンポーネント共通Ｉ／Ｆ１３３０を有するようにすることで、コンポーネントの追加等に伴う影響を局所化することができる。これにより、コンポーネントの追加等の開発に要する工数を削減することができる。
【００６２】
フロー経過管理部１３４は、フロー実行部１３１からフロー経過情報を受け取った場合に、受け取ったフロー経過情報に含まれる情報をフロー経過情報記憶部１３６に記憶させる。
【００６３】
フロー変更部１３５は、フロー実行部１３１からの要求に応じて、変更ルール情報記憶部１３７に記憶されている変更ルール情報テーブル１３７１に基づき、処理内容の変更要否を判定する。そして、フロー変更部１３５は、判定結果に応じて処理内容を変更する。ここで、処理内容を変更するとは、処理内容に新たにオペレーションの定義を追加した処理内容を生成すること、又は処理内容に定義されたオペレーションを削除若しくは変更した処理内容を生成することを意味する。
【００６４】
フロー経過情報記憶部１３６は、フロー経過情報テーブル１３６１を記憶する。フロー経過情報テーブル１３６１は、処理内容に定義されたオペレーションの実行状況が管理される。これにより、フロー経過管理部１３４は、一連の処理を示す処理内容に定義された各オペレーションについて、どこまでのオペレーションが実行済であるのかを管理することができる。なお、フロー経過情報テーブル１３６１の詳細については後述する。
【００６５】
変更ルール情報記憶部１３７は、変更ルール情報テーブル１３７１を記憶する。変更ルール情報テーブル１３７１は、処理内容を変更するためにフロー変更部１３５により参照される情報であり、処理内容を変更するための条件と当該条件を充足した際の変更内容とが管理されている。なお、変更ルール情報テーブル１３７１の詳細については後述する。
【００６６】
以上のように、本実施形態に係るサービス提供システム１０は、一連の処理を示す処理内容に定義されたオペレーションに従った処理の実行前又は実行後に、変更ルール情報テーブル１３７１に基づき、処理内容の変更要否を判定する。そして、サービス提供システム１０は、判定結果に応じて処理内容が変更される。これにより、サービス提供システム１０により実行される処理内容が動的に変更される。
【００６７】
＜処理の詳細＞
次に、本実施形態に係る情報処理システム１の処理の詳細について説明する。
【００６８】
≪スキャン配信サービスの全体処理≫
まず、画像形成装置２０のユーザが本実施形態に係るスキャン配信サービスを利用する場合の全体的な処理について、図８を用いて説明する。図８は、第１の実施形態に係るスキャン配信サービスの全体処理の一例のシーケンス図である。
【００６９】
まず、画像形成装置２０のユーザは、ブラウザ２１０を用いて、サービス提供システム１０により提供されるサービスの一覧を取得するための操作を行う。すると、画像形成装置２０は、サービスの一覧の取得要求をサービス提供システム１０のサービス処理部１１０に送信する（ステップＳ８０１）。そして、サービス処理部１１０のアプリ管理部１２０は、当該取得要求を受信すると、サービス提供システム１０により提供されるサービスの一覧を画像形成装置２０に送信する。これにより、画像形成装置２０のブラウザ２１０により、画像形成装置２０の操作パネル２２にサービス提供システム１０により提供されるサービスの一覧が表示される。なお、サービスの一覧には、サービス提供システム１０により提供されるサービスのサービス名と、このサービスを実現するためのアプリ情報１０００のアプリＩＤと、このアプリ情報１０００に含まれる処理内容のフローＩＤとが含まれる。
【００７０】
ユーザは、画像形成装置２０の操作パネル２２に表示されたサービスの一覧から、自身が利用を所望するサービスを選択する。すると、ブラウザ２１０は、選択されたサービスを実現するためのアプリ情報１０００のアプリＩＤをアプリ管理部１２０に送信する（ステップＳ８０２）。ここでは、ユーザによりストレージサービスＡにスキャン配信するためのサービス「スキャン配信サービス」の利用が選択されたものとする。したがって、ブラウザ２１０は、アプリ情報１０００１のアプリＩＤ「app001」をアプリ管理部１２０に送信する。そして、アプリ管理部１２０は、ブラウザ２１０から受け取ったアプリＩＤ「app001」のアプリ情報１０００１に含まれる画面定義に基づきＨＴＭＬ（HyperText Markup Language）形式のアプリ画面を生成し、ブラウザ２１０に送信する。
【００７１】
ブラウザ２１０は、アプリ管理部１２０から受け取ったアプリ画面を受信すると、例えば図９に示すようなアプリ画面１５００を、操作パネル２２に表示させる（ステップＳ８０３）。図９は、ストレージサービスＡにスキャン配信するスキャン配信サービスを利用するためのアプリ画面１５００である。
【００７２】
次に、ユーザは、図９に示すアプリ画面１５００において、ファイル名入力欄１５０２にスキャンにより生成される電子ファイルに付与する所望のファイル名を入力する。また、ユーザは、保存先フォルダＩＤ入力欄１５０３にスキャンにより生成される電子ファイルを保存するストレージサービスＡのフォルダのフォルダＩＤを入力する。ここでは、ファイル名入力欄１５０２にファイル名「test」及び保存先フォルダＩＤ入力欄１５０３に保存先のフォルダのフォルダＩＤ「/folder1」が入力されたものとする。なお、図９に示すアプリ画面１５００では、ＯＣＲ言語選択欄１５０１には英語でＯＣＲ処理を行うことを示す「English」が選択されているが、ユーザが所望の言語をしてもよい。
【００７３】
また、図９に示すアプリ画面１５００では、ストレージサービスＡにおける保存先フォルダのフォルダＩＤをユーザが直接入力するものとしたが、保存先フォルダをフォルダ一覧からユーザが選択できるようにしてもよい。すなわち、例えばデータＩ／Ｆ１４０がデータ処理部１８０を介してストレージサービスＡのフォルダ一覧を取得し、取得されたフォルダ一覧からユーザが保存先フォルダを選択できるようにしてもよい。
【００７４】
そして、ユーザは、画像形成装置２０のスキャナ２５に原稿をセットした上で、スキャン実行ボタン１５０４を押下する（ステップＳ８０４）。これにより、画像形成装置２０のスキャナ２５により原稿が読み取られ、ファイル名入力欄１５０２に入力されたファイル名の電子ファイルが生成される（ステップＳ８０５）。そして、画像形成装置２０は、生成された電子ファイルをストレージサービスＡに配信するための配信実行処理を行う（ステップＳ８０６）。この配信実行処理について、図１０を用いて詳細に説明する。
【００７５】
ここで、図１０に示す配信実行処理では、スキャンして生成した電子ファイルをＯＣＲ処理した後に、当該ＯＣＲ処理後の電子ファイルをパスワード付き電子ファイルに変換する処理を動的に追加する場合について説明する。したがって、図１０に示す配信実行処理では、このように動的に処理が追加された結果（処理内容が変更された結果）、当該追加された処理により変換されたパスワード付き電子ファイルがストレージサービスＡに配信（アップロード）される。
【００７６】
≪配信実行処理≫
図１０は、第１の実施形態に係る配信実行処理の一例のシーケンス図である。
【００７７】
まず、ブラウザ２１０は、スキャン配信サービスの処理の実行要求をフロー実行部１３１に送信する（ステップＳ１００１）。ここで、当該実行要求には、アプリＩＤ「app001」、実行される処理内容のフローＩＤ「flow1」、スキャンにより生成された電子ファイル、保存先フォルダのフォルダＩＤ等が含まれる。そして、フロー実行部１３１は、処理の実行要求を受け付けると、アプリ管理部１２０を介して、当該処理の実行要求に含まれるアプリＩＤ「app001」のアプリ情報１０００１からフローＩＤ「flow1」の処理内容を取得する（ステップＳ１００２）。すなわち、フロー実行部１３１は、図６に示す処理内容１１００を取得する。
【００７８】
フロー実行部１３１は、処理内容に基づき実行されるジョブを一意に識別するためのジョブＩＤを発行する（ステップＳ１００３）。ここでは、ジョブＩＤ「Job001」が発行されたものとする。
【００７９】
次に、フロー実行部１３１は、処理内容の変更要否の判定をフロー変更部１３５に要求する（ステップＳ１００４）。ここで、当該判定要求には、ステップＳ１００２で取得した処理内容１１００、及びスキャンにより生成された電子ファイルを示すデータ等が含まれる。なお、電子ファイルには、例えば入力ストリームを示す「InputStream」や電子ファイルの保存先パスを示す「LocalFilePath」等の各種のデータ型が定義されているが、このようなデータ型を意識することなく扱われる電子ファイルを単に「データ」と表す。
【００８０】
そして、フロー変更部１３５は、変更ルール情報テーブル１３７１を参照して、処理内容の変更要否を判定する（ステップＳ１００５）。
【００８１】
ここで、フロー変更部１３５は、例えば図１１に示すような変更ルール情報テーブル１３７１を参照して、処理内容の変更要否を判定する。より具体的には、フロー変更部１３５は、図１１に示す変更ルール情報テーブル１３７１の「変更条件」を参照して、該当する変更条件が存在するか否かを判定する。換言すれば、フロー変更部１３５は、処理内容に新たにオペレーションの定義を追加した処理内容、又は処理内容に定義されたオペレーションを削除若しくは変更した処理内容を生成するか否かを判定する。
【００８２】
そして、フロー変更部１３５は、該当する変更条件が存在する場合、処理内容の変更が必要であると判定する一方、該当する変更条件が存在しない場合、処理内容の変更は不要であると判定する。ここでは、フロー変更部１３５は、変更不要を示す判定結果を得たものとする。すると、フロー変更部１３５は、判定結果をフロー実行部１３１に送信する。
【００８３】
次に、フロー実行部１３１は、処理内容に定義されたオペレーションに従って、コンポーネントの取得をコンポーネント管理部１３２に要求する（ステップＳ１００６）。より具体的には、フロー実行部１３１は、図６に示す処理内容１１００のオペレーション１１０１に基づき、ＯＣＲコンポーネント１３３２の取得をコンポーネント管理部１３２に要求する。
【００８４】
コンポーネント管理部１３２は、ＯＣＲコンポーネント１３３２の取得要求を受け付けると、ＯＣＲコンポーネント１３３２を生成する（ステップＳ１００７）。ＯＣＲコンポーネント１３３２の生成は、コンポーネント共通Ｉ／Ｆ１３３０に定義されたコンポーネントを生成するためのＡＰＩを用いて行うことができる。そして、ＯＣＲコンポーネント１３３２が生成されると、コンポーネント管理部１３２は、ＯＣＲコンポーネント１３３２をフロー実行部１３１に返却する。これは、例えば、コンポーネント管理部１３２は、ＯＣＲコンポーネント１３３２が展開されたメモリ（例えばＲＡＭ１４）上のアドレスを、フロー実行部１３１に返却すればよい。
【００８５】
フロー実行部１３１は、生成されたＯＣＲコンポーネント１３３２に対して、データを指定して処理の実行を要求する（ステップＳ１００８）。
【００８６】
ＯＣＲコンポーネント１３３２は、フロー実行部１３１からデータを指定した処理の実行要求を受け取ると、指定されたデータに対して処理を実行する（ステップＳ１００９）。より具体的には、ＯＣＲコンポーネント１３３２は、ドキュメントサービス部１５０のＯＣＲ処理１５１に対して処理の実行を要求し、ＯＣＲ処理１５１が指定されたデータ（すなわち、電子ファイル）に対してＯＣＲ処理を実行する。そして、ＯＣＲコンポーネント１３３２は、処理結果をフロー実行部１３１に返信する。なお、ここで、返信される処理結果は、スキャンにより生成された電子ファイルをＯＣＲ処理された後のデータ（より具体的には、ＰＤＦ形式の電子ファイル）である。
【００８７】
次に、フロー実行部１３１は、フロー経過情報の更新をフロー経過管理部１３４に要求する（ステップＳ１０１０）。ここで、フロー経過情報には、ステップＳ１００３で発行されたジョブＩＤ「Job001」と、処理内容１１００のフローＩＤ「flow1」と、実行されたＯＣＲコンポーネント１３３２に対応するオペレーション１１０１のオペレーション名「ocr」とが含まれる。
【００８８】
続いて、フロー経過管理部１３４は、フロー経過情報に含まれるジョブＩＤと、処理内容のフローＩＤと、オペレーション名とに基づき、フロー経過情報記憶部１３６のフロー経過情報テーブル１３６１を更新する（ステップＳ１０１１）。より具体的には、図１２（ａ）に示すように、フロー経過情報テーブル１３６１に、ジョブＩＤ「Job001」、アプリＩＤ「app001」、フローＩＤ「flow1」、オペレーション「ocr」のレコードを追加する。これにより、ジョブＩＤ「Job001」のジョブにおいて、アプリＩＤ「app001」のフローＩＤ「flow1」で特定される処理内容１１００に含まれるオペレーション１１０１が実行済であることが管理される。そして、フロー経過管理部１３４は、更新が完了したことを示す更新結果をフロー実行部１３１に送信する。
【００８９】
次に、フロー実行部１３１は、処理内容の変更要否の判定をフロー変更部１３５に要求する（ステップＳ１０１２）。ここで、当該判定要求には、ステップＳ１００２で取得した処理内容１１００、及びステップＳ１００９でＯＣＲ処理された後のデータ等が含まれる。
【００９０】
そして、フロー変更部１３５は、変更ルール情報テーブル１３７１を参照して、処理内容の変更要否を判定する（ステップＳ１０１３）。
【００９１】
ここで、フロー変更部１３５は、例えば図１１に示すような変更ルール情報テーブル１３７１を参照して、処理内容の変更要否を判定する。より具体的には、フロー変更部１３５は、図１１に示す変更ルール情報テーブル１３７１の「変更条件」を参照して、該当する変更条件が存在するか否かを判定する。換言すれば、フロー変更部１３５は、処理内容に新たにオペレーションの定義を追加した処理内容、又は処理内容に定義されたオペレーションを削除若しくは変更した処理内容を生成するか否かを判定する。
【００９２】
そして、フロー変更部１３５は、該当する変更条件が存在する場合、処理内容の変更が必要であると判定する一方、該当する変更条件が存在しない場合、処理内容の変更は不要であると判定する。ここでは、データ（ＰＤＦ形式の電子ファイル）に「パスワード」との文言が含まれていたことにより、フロー変更部１３５は、変更ルールＩＤ「１」の変更条件に該当すると判定したものとする。
【００９３】
すると、フロー変更部１３５は、ステップＳ１００２で取得した処理内容を、上記のステップＳ１０１３で変更条件に該当すると判定された変更ルールＩＤの変更内容に基づき変更する（ステップＳ１０１４）。より具体的には、フロー変更部１３５は、ステップＳ１０１３で変更条件に該当すると判定された変更ルールＩＤ「１」の変更内容に基づき、処理内容１１００を図１３に示す変更処理内容２０００に変更する。すなわち、フロー変更部１３５は、処理内容１１００において実行済のオペレーション１１０１の次に、変更ルールＩＤ「１」の変更内容に基づき、ＰＤＦ形式の電子ファイルをパスワード付きＰＤＦ形式の電子ファイルに変換するオペレーション２１００を追加する。このようにして、本実施形態に係るサービス提供システム１０では、フロー実行部１３１により実行される処理内容が動的に変更される。そして、フロー変更部１３５は、変更処理内容２０００をフロー実行部１３１に送信する。
【００９４】
次に、フロー実行部１３１は、ステップＳ１０１４で変更された処理内容（すなわち、変更処理内容２０００）に定義されたオペレーションに従って、コンポーネントの取得をコンポーネント管理部１３２に要求する（ステップＳ１０１５）。より具体的には、フロー実行部１３１は、図１３に示す変更処理内容２０００のオペレーション１１０１の次に定義されたオペレーション２１００に基づき、機密変換コンポーネント１３３３の取得をコンポーネント管理部１３２に要求する。
【００９５】
コンポーネント管理部１３２は、機密変換コンポーネント１３３３の取得要求を受け付けると、機密変換コンポーネント１３３３を生成する（ステップＳ１０１６）。機密変換コンポーネント１３３３の生成は、コンポーネント共通Ｉ／Ｆ１３３０に定義されたコンポーネントを生成するためのＡＰＩを用いて行うことができる。そして、機密変換コンポーネント１３３３が生成されると、コンポーネント管理部１３２は、機密変換コンポーネント１３３３をフロー実行部１３１に返却する。これは、例えば、コンポーネント管理部１３２は、機密変換コンポーネント１３３３が展開されたメモリ（例えばＲＡＭ１４）上のアドレスを、フロー実行部１３１に返却すればよい。
【００９６】
フロー実行部１３１は、生成された機密変換コンポーネント１３３３に対して、データを指定して処理の実行を要求する（ステップＳ１０１７）。ここで、指定されるデータは、具体的には、ステップＳ１００９でＯＣＲコンポーネント１３３２から処理結果として返信されたデータである。
【００９７】
機密変換コンポーネント１３３３は、フロー実行部１３１からデータを指定した処理の実行要求を受け取ると、指定されたデータに対して処理を実行する（ステップＳ１０１８）。より具体的には、機密変換コンポーネント１３３３は、ドキュメントサービス部１５０の機密変換処理１５２に対して処理の実行を要求し、機密変換処理１５２が指定されたデータに対してパスワードを付加する処理を行う。すなわち、機密変換処理１５２は、指定された電子ファイルを、パスワード付き電子ファイルに変換する。そして、機密変換コンポーネント１３３３は、処理結果をフロー実行部１３１に返信する。なお、ここで、返信される処理結果は、パスワードを付加したデータ（より具体的には、パスワード付きＰＤＦ形式の電子ファイル）である。
【００９８】
次に、フロー実行部１３１は、フロー経過情報の更新をフロー経過管理部１３４に要求する（ステップＳ１０１９）。ここで、フロー経過情報には、ジョブＩＤ「Job001」と、変更処理内容２０００のフローＩＤ「flow1」と、実行された機密変換コンポーネント１３３３に対応するオペレーション２１００のオペレーション名「pdf2securepdf」とが含まれる。
【００９９】
続いて、フロー経過管理部１３４は、フロー経過情報に含まれるジョブＩＤと、処理内容（変更処理内容）のフローＩＤと、オペレーション名とに基づき、フロー経過情報記憶部１３６のフロー経過情報テーブル１３６１を更新する（ステップＳ１０２０）。より具体的には、図１２（ｂ）に示すように、フロー経過情報テーブル１３６１に、ジョブＩＤ「Job001」、アプリＩＤ「app001」、フローＩＤ「flow1」で特定されるレコードに、オペレーション「pdf2securepdf」を追加する。これにより、ジョブＩＤ「Job001」のジョブにおいて、アプリＩＤ「app001」のフローＩＤ「flow1」で特定される変更処理内容２０００に含まれるオペレーション１１０１及び２１００が実行済であることが管理される。そして、フロー経過管理部１３４は、更新が完了したことを示す更新結果をフロー実行部１３１に送信する。
【０１００】
次に、フロー実行部１３１は、処理内容（変更処理内容）の変更要否の判定をフロー変更部１３５に要求する（ステップＳ１０２１）。ここで、当該判定要求には、変更処理内容２０００、ステップＳ１０１８でパスワードが付加されたデータ等が含まれる。
【０１０１】
そして、フロー変更部１３５は、変更ルール情報テーブル１３７１を参照して、処理内容（変更処理内容）の変更要否を判定する（ステップＳ１０２２）。ここでは、ステップＳ１００５と同様に、フロー変更部１３５は、変更不要を示す判定結果を得たものとする、すると、フロー変更部１３５は、判定結果をフロー実行部１３１に送信する。
【０１０２】
次に、フロー実行部１３１は、変更処理内容２０００に定義されたオペレーションに従って、コンポーネントの取得をコンポーネント管理部１３２に要求する（ステップＳ１０２３）。より具体的には、フロー実行部１３１は、図１３に示す変更処理内容２０００のオペレーション２１００の次に定義されたオペレーション１１０２に基づき、配信コンポーネント１３３１の取得をコンポーネント管理部１３２に要求する。
【０１０３】
コンポーネント管理部１３２は、配信コンポーネント１３３１の取得要求を受け付けると、配信コンポーネント１３３１を生成する（ステップＳ１０２４）。配信コンポーネント１３３１の生成は、コンポーネント共通Ｉ／Ｆ１３３０に定義されたコンポーネントを生成するためのＡＰＩを用いて行うことができる。そして、配信コンポーネント１３３１が生成されると、コンポーネント管理部１３２は、配信コンポーネント１３３１をフロー実行部１３１に返却する。これは、例えば、コンポーネント管理部１３２は、配信コンポーネント１３３１が展開されたメモリ（例えばＲＡＭ１４）上のアドレスを、フロー実行部１３１に返却すればよい。
【０１０４】
フロー実行部１３１は、生成された配信コンポーネント１３３１に対して、データを指定して処理の実行を要求する（ステップＳ１０２５）。ここで、指定されるデータは、具体的には、ステップＳ１０１８で機密変換コンポーネント１３３３から処理結果として返信されたデータである。
【０１０５】
配信コンポーネント１３３１は、フロー実行部１３１からデータを指定した処理の実行要求を受け取ると、指定されたデータに対して処理を実行する（ステップＳ１０２６）。より具体的には、配信コンポーネント１３３１は、ストレージサービスＡ連携部１６０１のファイル処理部１７０１に対して、共通Ｉ／Ｆ１７１１として定義されているファイル保存のＡＰＩを用いて、データの配信実行を要求する。すなわち、配信コンポーネント１３３１は、ストレージサービスＡ連携部１６０１のファイル処理部１７０１に対して、図５（ａ）に示すＡＰＩとして「外部サービス名/process/folder」を用いて、例えば「service-a/process/folder?path=/floder1&name=test」と指定する。これにより、ストレージサービスＡのフォルダパス「/folder1」のフォルダに、ファイル名「test」のデータ（具体的には、パスワード付きＰＤＦ形式の電子ファイル）が配信される。そして、配信コンポーネント１３３１は、データの配信処理の結果をフロー実行部１３１に送信する。
【０１０６】
次に、フロー実行部１３１は、フロー経過情報の更新をフロー経過管理部１３４に要求する（ステップＳ１０２７）。ここで、フロー経過情報には、ジョブＩＤ「Job001」と、変更処理内容２０００のフローＩＤ「flow1」と、実行された配信コンポーネント１３３１に対応するオペレーション１１０１のオペレーション名「uploadFile」とが含まれる。
【０１０７】
続いて、フロー経過管理部１３４は、フロー経過情報に含まれるジョブＩＤと、処理内容（変更処理内容）のフローＩＤと、オペレーション名とに基づき、フロー経過情報記憶部１３６のフロー経過情報テーブル１３６１を更新する（ステップＳ１０２８）。より具体的には、図１２（ｃ）に示すように、フロー経過情報テーブル１３６１に、ジョブＩＤ「Job001」、アプリＩＤ「app001」、フローＩＤ「flow1」で特定されるレコードに、オペレーション「uploadFile」を追加する。これにより、ジョブＩＤ「Job001」のジョブにおいて、アプリＩＤ「app001」のフローＩＤ「flow1」で特定される変更処理内容２０００に含まれるオペレーション１１０１、２１００、及び１１０２が実行済であることが管理される。そして、フロー経過管理部１３４は、更新が完了したことを示す更新結果をフロー実行部１３１に送信する。
【０１０８】
次に、フロー実行部１３１は、処理内容（変更処理内容）の変更要否の判定をフロー変更部１３５に要求する（ステップＳ１０２９）。ここで、当該判定要求には、変更処理内容２０００、ステップＳ１０２６でストレージサービスＡに配信（アップロード）されたデータ等が含まれる。
【０１０９】
そして、フロー変更部１３５は、変更ルール情報テーブル１３７１を参照して、処理内容（変更処理内容）の変更要否を判定する（ステップＳ１０３０）。ここでは、ステップＳ１００５及びステップＳ１０２２と同様に、フロー変更部１３５は、変更不要を示す判定結果を得たものとする、すると、フロー変更部１３５は、判定結果をフロー実行部１３１に送信する。最後に、フロー実行部１３１は、データの配信処理が完了したことを示す処理結果をブラウザ２１０に送信する。これにより、本実施形態に係る配信実行処理が完了する。
【０１１０】
なお、本実施形態に係る配信実行処理では、上記のステップＳ１０１４において処理内容に対する変更内容として、実行済みのオペレーションの次に新たなオペレーションを追加する場合について説明したが、これに限られない。すなわち、処理内容に対する変更内容として、実行済みのオペレーションの次に定義されているオペレーションを削除又は変更してもよい。また、変更内容として追加するオペレーション、削除するオペレーション、及び変更するオペレーションは、１つに限られず、複数のオペレーションであってもよい。換言すれば、変更ルール情報テーブル１３７１の変更条件に合致した場合の変更内容は、例えば情報処理システム１の管理者等が任意に設定することができる。
【０１１１】
このように、本実施形態に係るサービス提供システム１０では、一連の処理を示す処理内容を実行する際に、この処理内容を動的に変更することができる。したがって、本実施形態に係るサービス提供システム１０では、アプリ情報記憶部１９０で管理される処理内容の増大を抑制させることできる。例えば、アプリ情報記憶部１９０には利用頻度が高い基本的な処理内容を管理しておく一方で、データの特性等に応じて行われる固有の処理は動的に追加等されるような構成にすることで、アプリ情報記憶部１９０に管理される処理内容の数を抑制することができる。このため、サービス提供システム１０の管理者に対しては処理内容の管理負担を軽減させることができるとともに、ユーザに対しては処理内容により実現されるサービスを選択する場合等の操作負担を軽減させることができる。
【０１１２】
［第２の実施形態］
次に、第２の実施形態に係る情報処理システム１について説明する。第２の実施形態に係る情報処理システム１に含まれるサービス提供システム１０は、フロー変更部１３５により処理内容が変更された場合、変更された処理内容で処理を続行させるか否かをユーザに選択させるものである。これにより、ユーザは、動的に変更された処理内容について、自身で変更内容を確認した上で、処理を続行させることができるようになる。なお、以降では、第１の実施形態と実質的に同一の機能を有する箇所及び同一の処理を行う箇所については、第１の実施形態と同一の符号を用いて、その説明を省略する。
【０１１３】
＜処理の詳細＞
次に、本実施形態に係る情報処理システム１の処理の詳細について説明する。
【０１１４】
≪配信実行処理≫
第２の実施形態に係る配信実行処理について、図１４を用いて説明する。図１４は、第２の実施形態に係る配信実行処理の一例のシーケンス図である。
【０１１５】
フロー実行部１３１は、フロー変更部１３５から変更処理内容２０００を受け取ると、変更処理内容２０００をブラウザ２１０に送信する（ステップＳ１４０１）。また、このとき、フロー実行部１３１は、ブラウザ２１０に例えば図１５に示すような承認画面３０００を表示させるための画面定義をアプリ管理部１２０から取得し、取得した画面定義に基づき生成されるアプリ画面をブラウザ２１０に送信する。
【０１１６】
ブラウザ２１０は、フロー実行部１３１から変更処理内容２０００及びアプリ画面を受け取ると、変更処理内容２０００及びアプリ画面に基づき図１５に示すような承認画面３０００を表示させる（ステップＳ１４０２）。ユーザは、図１５に示す承認画面３０００を確認することにより、処理内容が変更されたことを知ることができる。ユーザが承認画面３０００において「はい」ボタン３００１が選択されると、ブラウザ２１０は、ユーザにより処理内容の変更が承認されたことを示す情報をフロー実行部１３１に送信する。これにより、フロー実行部１３１により変更処理内容２０００に従った処理が実行される。
【０１１７】
一方、ユーザが承認画面３０００において「いいえ」ボタン３００２が選択されると、ブラウザ２１０は、ユーザにより処理内容の変更が拒否されたことを示す情報をフロー実行部１３１に送信する。このとき、フロー実行部１３１は、変更処理内容２０００に従った処理を中止（すなわち、ジョブＩＤ「Job001」を中止）させる。ただし、フロー実行部１３１は、変更処理内容２０００に従った処理を中止させるのではなく、変更前の処理内容１１００に従った処理を行うようにしてもよい。
【０１１８】
＜まとめ＞
以上のように、第１の実施形態に係るサービス提供システム１０は、各コンポーネントに対して処理の実行を要求する前、又は処理を実行したコンポーネントから処理結果を受け取った後に、変更ルール情報テーブル１３７１を参照して、処理内容の変更要否を判定する。そして、サービス提供システム１０は、変更ルール情報テーブル１３７１の変更条件に合致する場合、処理内容を、合致した変更条件に対応する変更内容に変更する。これにより、本実施形態に係るサービス提供システム１０では、処理内容を動的に変更させることができる。したがって、本実施形態に係るサービス提供システム１０では、アプリ情報記憶部１９０で管理される処理内容の増大を抑制させることできる。
【０１１９】
また、第２の実施形態に係るサービス提供システム１０は、処理内容が変更された場合に、ユーザに変更内容を確認させることができる。これにより、ユーザは、動的に変更された処理内容を確認した上で、変更された処理内容で処理を続行させるか否かを選択することができる。したがって、サービス提供システム１０により動的に変更された処理内容がユーザの意図しないものであった場合等において、ユーザの意図しない処理が行われることを防止することができる。
【０１２０】
なお、アプリ情報記憶部１９０は、第１の記憶手段の一例である。フロー実行部１３１は、受信手段及び処理実行手段の一例である。フロー変更部１３５は、処理変更手段の一例である。変更ルール情報記憶部１３７は、第２の記憶手段の一例である。
【０１２１】
なお、本発明は、具体的に開示された上記の実施形態に限定されるものではなく、特許請求の範囲から逸脱することなく、種々の変形や変更が可能である。
【符号の説明】
【０１２２】
１        情報処理システム
１０      サービス提供システム
２０      画像形成装置
３０      外部ストレージシステム
１１０    サービス処理部
１２０    アプリ管理部
１３０    ロジック処理部
１３１    フロー実行部
１３２    コンポーネント管理部
１３３    コンポーネント群
１３４    フロー経過管理部
１３５    フロー変更部
１３６    フロー経過情報記憶部
１３７    変更ルール情報記憶部
１４０    データＩ／Ｆ部
１５０    ドキュメントサービス部
１５１    ＯＣＲ処理
１５２    機密変換処理
１６０    ストレージサービス連携部
１７０    ファイル処理部
１８０    データ処理部
１９０    アプリ情報記憶部
【先行技術文献】
【特許文献】
【０１２３】
【特許文献１】特許第５１１２０８５号公報
【図１】
0006477092.tif 000002
【図２】
0006477092.tif 000003
【図３】
0006477092.tif 000004
【図４】
0006477092.tif 000005
【図５】
0006477092.tif 000006
【図６】
0006477092.tif 000007
【図７】
0006477092.tif 000008
【図８】
0006477092.tif 000009
【図９】
0006477092.tif 000010
【図１０】
0006477092.tif 000011
【図１１】
0006477092.tif 000012
【図１２】
0006477092.tif 000013
【図１３】
0006477092.tif 000014
【図１４】
0006477092.tif 000015
【図１５】
0006477092.tif 000016