(57)【特許請求の範囲】
【請求項１】
１以上の情報処理装置を含み、所定の処理をそれぞれ実行する複数のプログラムを有する情報処理システムであって、
電子データを用いた一連の処理を実行するアプリケーション毎に、前記一連の処理のそれぞれの処理を実行する１以上の前記プログラムを識別するプログラム識別情報と、１以上の前記プログラムそれぞれの実行に用いられるパラメータと、１以上の前記プログラムの実行順とが定義されたフロー情報を、前記アプリケーションを識別するアプリ識別情報と関連付けて記憶する記憶手段と、
前記情報処理システムに接続される１以上の機器のうちの一の機器から、前記一連の処理に用いられる電子データに関する情報と、前記アプリ識別情報とを含む要求を受け付けると、該要求に含まれる前記アプリ識別情報と関連付けて前記記憶手段に記憶されている前記フロー情報を取得する取得手段と、
前記取得手段により取得された前記フロー情報に定義されている前記プログラム識別情報により識別される前記プログラムそれぞれを、前記フロー情報に定義されている前記実行順に従って、前記フロー情報に定義されている前記パラメータを用いて実行させることで、前記要求に含まれる前記電子データに関する情報に基づく電子データを用いた前記一連の処理を実行する実行手段と、
を有し、
前記実行手段は、
前記プログラムの実行に用いられるパラメータにおいて、該パラメータに含まれるデータ項目のデータ値に、該データ値を他のデータ値に置換するための指定がされている場合、前記データ値を前記他のデータ値に置換する、情報処理システム。
【請求項２】
前記他のデータ値は、前記プログラムとは異なる他のプログラムの処理結果である、請求項１に記載の情報処理システム。
【請求項３】
前記プログラムには、他のプログラムの処理結果に対して所定の情報を付加するテンプレートプログラムを含み、
前記テンプレートプログラムは、
予め定められたテンプレート情報における所定の位置に前記処理結果を埋め込むことで前記所定の情報を付加する、請求項１又は２に記載の情報処理システム。
【請求項４】
前記プログラムには、外部サービスに関する処理を実行するプログラムを含み、
前記外部サービスに関する処理を実行するプログラムは、
外部サービスに対して電子データをアップロードする処理を実行するプログラムを少なくとも含む、請求項１乃至３の何れか一項に記載の情報処理システム。
【請求項５】
前記実行手段は、
さらに、電子データに対して、該電子データのデータ型を所定のデータ型に変換する型変換手段を１以上有し、
前記電子データのデータ型を、前記型変換手段により前記プログラムが処理可能なデータ型に変換した後、前記プログラムを実行させることで、前記電子データを用いた前記一連の処理を実行する、請求項１乃至４の何れか一項に記載の情報処理システム。
【請求項６】
所定の処理をそれぞれ実行する複数のプログラムを有する情報処理装置であって、
電子データを用いた一連の処理を実行するアプリケーション毎に、前記一連の処理のそれぞれの処理を実行する１以上の前記プログラムを識別するプログラム識別情報と、１以上の前記プログラムそれぞれの実行に用いられるパラメータと、１以上の前記プログラムの実行順とが定義されたフロー情報を、前記アプリケーションを識別するアプリ識別情報と関連付けて記憶する記憶手段と、
前記情報処理装置に接続される１以上の機器のうちの一の機器から、前記一連の処理に用いられる電子データに関する情報と、前記アプリ識別情報とを含む要求を受け付けると、該要求に含まれる前記アプリ識別情報と関連付けて前記記憶手段に記憶されている前記フロー情報を取得する取得手段と、
前記取得手段により取得された前記フロー情報に定義されている前記プログラム識別情報により識別される前記プログラムそれぞれを、前記フロー情報に定義されている前記実行順に従って、前記フロー情報に定義されている前記パラメータを用いて実行させることで、前記要求に含まれる前記電子データに関する情報に基づく電子データを用いた前記一連の処理を実行する実行手段と、
を有し、
前記実行手段は、
前記プログラムの実行に用いられるパラメータにおいて、該パラメータに含まれるデータ項目のデータ値に、該データ値を他のデータ値に置換するための指定がされている場合、前記データ値を前記他のデータ値に置換する、情報処理装置。
【請求項７】
１以上の情報処理装置を含み、所定の処理をそれぞれ実行する複数のプログラムを有する情報処理システムであって、電子データを用いた一連の処理を実行するアプリケーション毎に、前記一連の処理のそれぞれの処理を実行する１以上の前記プログラムを識別するプログラム識別情報と、１以上の前記プログラムそれぞれの実行に用いられるパラメータと、１以上の前記プログラムの実行順とが定義されたフロー情報を、前記アプリケーションを識別するアプリ識別情報と関連付けて記憶する記憶手段を有する情報処理システムに用いられる情報処理方法において、
前記情報処理システムに接続される１以上の機器のうちの一の機器から、前記一連の処理に用いられる電子データに関する情報と、前記アプリ識別情報とを含む要求を受け付けると、該要求に含まれる前記アプリ識別情報と関連付けて前記記憶手段に記憶されている前記フロー情報を取得する取得手順と、
前記取得手順により取得された前記フロー情報に定義されている前記プログラム識別情報により識別される前記プログラムそれぞれを、前記フロー情報に定義されている前記実行順に従って、前記フロー情報に定義されている前記パラメータを用いて実行させることで、前記要求に含まれる前記電子データに関する情報に基づく電子データを用いた前記一連の処理を実行する実行手順と、
を有し、
前記実行手順は、
前記プログラムの実行に用いられるパラメータにおいて、該パラメータに含まれるデータ項目のデータ値に、該データ値を他のデータ値に置換するための指定がされている場合、前記データ値を前記他のデータ値に置換する、情報処理方法。
【請求項８】
所定の処理をそれぞれ実行する複数のプログラムを有する情報処理装置であって、電子データを用いた一連の処理を実行するアプリケーション毎に、前記一連の処理のそれぞれの処理を実行する１以上の前記プログラムを識別するプログラム識別情報と、１以上の前記プログラムそれぞれの実行に用いられるパラメータと、１以上の前記プログラムの実行順とが定義されたフロー情報を、前記アプリケーションを識別するアプリ識別情報と関連付けて記憶する記憶手段を有する情報処理装置に、
前記情報処理装置に接続される１以上の機器のうちの一の機器から、前記一連の処理に用いられる電子データに関する情報と、前記アプリ識別情報とを含む要求を受け付けると、該要求に含まれる前記アプリ識別情報と関連付けて前記記憶手段に記憶されている前記フロー情報を取得する取得手順、
前記取得手順により取得された前記フロー情報に定義されている前記プログラム識別情報により識別される前記プログラムそれぞれを、前記フロー情報に定義されている前記実行順に従って、前記フロー情報に定義されている前記パラメータを用いて実行させることで、前記要求に含まれる前記電子データに関する情報に基づく電子データを用いた前記一連の処理を実行する実行手順、
を実行させ、
前記実行手順は、
前記プログラムの実行に用いられるパラメータにおいて、該パラメータに含まれるデータ項目のデータ値に、該データ値を他のデータ値に置換するための指定がされている場合、前記データ値を前記他のデータ値に置換する、情報処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理システム、情報処理装置、情報処理方法、及び情報処理プログラムに関する。
【背景技術】
【０００２】
近年、クラウドコンピューティング等により多種多様な外部サービスが提供されるようになった。例えば、ユーザにより指定された電子データを外部ストレージに保管する外部サービス等が知られている。
【０００３】
また、予め定義された事務フローモデルに基づき、各種処理を実行するコンポーネントを制御するための事務フローを生成する技術が知られている（例えば特許文献１参照）。このような技術では、生成された事務フローによりコンポーネントが組み合わされて、事務処理を実現する一連の処理が実行される。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、上記の従来技術においては、任意のコンポーネントを組み合わせた一連の処理を実行することができない場合があった。例えば、一のコンポーネントの処理結果が他のコンポーネントの入力となるような一連の処理において、一のコンポーネントの処理結果が、他のコンポーネントが入力可能な形式でない場合、当該一連の処理を実行することができなかった。
【０００５】
本発明の一実施形態は、上記の点に鑑みてなされたもので、コンポーネントを組み合わせた一連の処理を実行することを目的とする。
【課題を解決するための手段】
【０００６】
上記目的を達成するため、本発明の一実施形態は、１以上の情報処理装置を含み、所定の処理をそれぞれ実行する複数のプログラムを有する情報処理システムであって、電子データを用いた一連の処理を実行するアプリケーション毎に、前記一連の処理のそれぞれの処理を実行する１以上の前記プログラムを識別するプログラム識別情報と、１以上の前記プログラムそれぞれの実行に用いられるパラメータと、１以上の前記プログラムの実行順とが定義されたフロー情報を、前記アプリケーションを識別するアプリ識別情報と関連付けて記憶する記憶手段と、前記情報処理システムに接続される１以上の機器のうちの一の機器から、前記一連の処理に用いられる電子データに関する情報と、前記アプリ識別情報とを含む要求を受け付けると、該要求に含まれる前記アプリ識別情報と関連付けて前記記憶手段に記憶されている前記フロー情報を取得する取得手段と、前記取得手段により取得された前記フロー情報に定義されている前記プログラム識別情報により識別される前記プログラムそれぞれを、前記フロー情報に定義されている前記実行順に従って、前記フロー情報に定義されている前記パラメータを用いて実行させることで、前記要求に含まれる前記電子データに関する情報に基づく電子データを用いた前記一連の処理を実行する実行手段と、を有し、前記実行手段は、前記プログラムの実行に用いられるパラメータにおいて、該パラメータに含まれるデータ項目のデータ値に、該データ値を他のデータ値に置換するための指定がされている場合、前記データ値を前記他のデータ値に置換する。
【発明の効果】
【０００７】
本発明の一実施形態によれば、コンポーネントを組み合わせた一連の処理を実行することができる。
【図面の簡単な説明】
【０００８】
【図１】第一の実施形態に係る情報処理システムの一例のシステム構成を示す図である。
【図２】第一の実施形態に係るサービス提供システムの一例のハードウェア構成を示す図である。
【図３】第一の実施形態に係る機器の一例のハードウェア構成を示す図である。
【図４】第一の実施形態に係る情報処理システムの一例の機能構成を示す図である。
【図５】共通Ｉ／Ｆ及び固有Ｉ／Ｆの一例を説明するための図である。
【図６】第一の実施形態に係るロジック処理部の一例の機能構成を示す図である。
【図７】型変換情報テーブルの一例を示す図である。
【図８】処理フロー情報の一例を示す図である。
【図９】第一の実施形態に係るサービス利用の全体処理の一例を示すシーケンス図である。
【図１０】サービス一覧画面からサービス画面への画面遷移の一例を示す図である。
【図１１】第一の実施形態に係る処理フローの実行処理の一例を示すシーケンス図である。
【図１２】リソース管理情報の一例を示す図である。
【図１３】パラメータの一例を示す図である。
【図１４】エラー情報が追加される場合のリソース管理情報の一例を示す図である。
【図１５】第二の実施形態に係るロジック処理部の一例の機能構成を示す図である。
【図１６】第二の実施形態に係る処理フローの実行処理の一例を示すシーケンス図である。
【図１７】処理フロー情報の他の例を示す図である。
【図１８】リソース管理情報の他の例を示す図である。
【図１９】パラメータの他の例を示す図である。
【発明を実施するための形態】
【０００９】
以下、本発明の実施形態について、図面を参照しながら詳細に説明する。
【００１０】
［第一の実施形態］
＜システム構成＞
まず、本実施形態に係る情報処理システム１のシステム構成について、図１を参照しながら説明する。図１は、本実施形態に係る情報処理システム１の一例のシステム構成を示す図である。
【００１１】
図１に示す情報処理システム１は、サービス提供システム１０と、機器２０と、外部ストレージシステム３０とを含み、インターネット等の広域的なネットワークＮ１を介して通信可能に接続されている。
【００１２】
サービス提供システム１０は、一台以上の情報処理装置で実現され、ネットワークＮ１を介して、クラウドサービス等の外部サービスと連携した一連の処理により実現される各種のサービスを提供する。
【００１３】
本実施形態に係るサービス提供システム１０が提供するサービスの具体例については後述する。なお、以降では、一連の処理を「処理フロー」とも表す。
【００１４】
なお、本実施形態では、外部サービスの具体例としてクラウドサービスを採用して説明するが、これに限られない。本実施形態は、例えば、ＡＳＰ（Application Service Provider）によって提供されるサービスやＷｅｂサービス等のネットワークを介して提供される各種の外部サービスに関して適用されても良い。
【００１５】
機器２０は、ユーザが使用する各種の電子機器である。すなわち、機器２０は、例えば、ＭＦＰ（Multifunction Peripheral）等の画像形成装置、ＰＣ（パーソナルコンピュータ）、プロジェクタ、電子黒板、デジタルカメラ等である。ユーザは、機器２０を用いて、サービス提供システム１０が提供する各種のサービスを利用することができる。
【００１６】
なお、以降では、複数の機器２０について、各々を区別するときは、「機器２０１」、「機器２０２」等と添え字を用いて記載する。
【００１７】
外部ストレージシステム３０は、ネットワークＮ１を介してストレージサービス（又はオンラインストレージ）と呼ばれるクラウドサービスを提供するコンピュータシステムである。ストレージサービスとは、外部ストレージシステム３０のストレージの記憶領域を貸し出すサービスである。
【００１８】
なお、以降では、複数の外部ストレージシステム３０について、各々を区別するときは、「外部ストレージシステム３０１」、「外部ストレージシステム３０２」等と添え字を用いて記載する。また、外部ストレージシステム３０１により提供されるストレージサービスの名称を「ストレージＡ」、外部ストレージシステム３０１により提供されるストレージサービスの名称を「ストレージＢ」等とする。
【００１９】
なお、外部ストレージシステム３０は、複数台の情報処理装置によって実現されるシステムであっても良い。
【００２０】
また、図１に示す情報処理システム１の構成は一例であって、他の構成であっても良い。例えば、本実施形態に係る情報処理システム１には、電子データの入力及び出力の少なくとも一方を行う各種機器が含まれ、これらの機器がサービス提供システム１０により提供される各種サービスを利用しても良い。
【００２１】
＜ハードウェア構成＞
次に、本実施形態に係る情報処理システム１に含まれるサービス提供システム１０のハードウェア構成について、図２を参照しながら説明する。図２は、本実施形態に係るサービス提供システム１０の一例のハードウェア構成を示す図である。
【００２２】
図２に示すサービス提供システム１０は、入力装置１１と、表示装置１２と、外部Ｉ／Ｆ１３と、ＲＡＭ（Random Access Memory）１４とを有する。また、サービス提供システム１０は、ＲＯＭ（Read Only Memory）１５と、ＣＰＵ（Central Processing Unit）１６と、通信Ｉ／Ｆ１７と、ＨＤＤ（Hard Disk Drive）１８とを有する。これらの各ハードウェアは、それぞれがバスＢで接続されている。
【００２３】
入力装置１１は、キーボードやマウス、タッチパネル等を含み、ユーザが各操作信号を入力するのに用いられる。表示装置１２は、ディスプレイ等を含み、サービス提供システム１０による処理結果を表示する。なお、入力装置１１及び表示装置１２の少なくとも一方は、必要なときにサービス提供システム１０に接続して利用する形態であっても良い。
【００２４】
通信Ｉ／Ｆ１７は、サービス提供システム１０をネットワークＮ１に接続するインタフェースである。これにより、サービス提供システム１０は、通信Ｉ／Ｆ１７を介して通信を行うことができる。
【００２５】
ＨＤＤ１８は、プログラムやデータを格納している不揮発性の記憶装置である。ＨＤＤ１８に格納されるプログラムやデータには、サービス提供システム１０全体を制御する基本ソフトウェアであるＯＳ（Operating System）、ＯＳ上において各種機能を提供するアプリケーションソフトウェア等がある。
【００２６】
なお、サービス提供システム１０は、ＨＤＤ１８に代え、記憶媒体としてフラッシュメモリを用いるドライブ装置（例えばソリッドステートドライブ：ＳＳＤ）を利用するものであっても良い。また、ＨＤＤ１８は、格納しているプログラムやデータを所定のファイルシステム及び／又はＤＢにより管理している。
【００２７】
外部Ｉ／Ｆ１３は、外部装置とのインタフェースである。外部装置には、記録媒体１３ａ等がある。これにより、サービス提供システム１０は、外部Ｉ／Ｆ１３を介して記録媒体１３ａの読み取りや書き込みを行うことができる。記録媒体１３ａには、フレキシブルディスク、ＣＤ、ＤＶＤ、ＳＤメモリカード、ＵＳＢメモリ等がある。
【００２８】
ＲＯＭ１５は、電源を切ってもプログラムやデータを保持することができる不揮発性の半導体メモリである。ＲＯＭ１５には、サービス提供システム１０の起動時に実行されるＢＩＯＳ（Basic Input/Output System）、ＯＳ設定、及びネットワーク設定等のプログラムやデータが格納されている。ＲＡＭ１４は、プログラムやデータを一時保持する揮発性の半導体メモリである。
【００２９】
ＣＰＵ１６は、ＲＯＭ１５やＨＤＤ１８等の記憶装置からプログラムやデータをＲＡＭ１４上に読み出し、処理を実行することで、サービス提供システム１０全体の制御や機能を実現する演算装置である。
【００３０】
本実施形態に係るサービス提供システム１０は、図２に示すハードウェア構成を有することにより、後述するような各種処理を実現できる。
【００３１】
次に、本実施形態に係る情報処理システム１に含まれる機器２０が画像形成装置である場合のハードウェア構成について、図３を参照しながら説明する。図３は、本実施形態に係る機器２０の一例のハードウェア構成を示す図である。
【００３２】
図３に示す機器２０は、コントローラ２１と、操作パネル２２と、外部Ｉ／Ｆ２３と、通信Ｉ／Ｆ２４と、プリンタ２５と、スキャナ２６とを有する。また、コントローラ２１は、ＣＰＵ３１と、ＲＡＭ３２と、ＲＯＭ３３と、ＮＶＲＡＭ３４と、ＨＤＤ３５とを有する。
【００３３】
ＲＯＭ３３は、各種プログラムやデータを格納している不揮発性の半導体メモリである。ＲＡＭ３２は、プログラムやデータを一時保持する揮発性の半導体メモリである。ＮＶＲＡＭ３４は、例えば設定情報等を格納している。また、ＨＤＤ３５は、各種プログラムやデータを格納している不揮発性の記憶装置である。
【００３４】
ＣＰＵ３１は、ＲＯＭ３３やＮＶＲＡＭ３４、ＨＤＤ３５等からプログラムやデータ、設定情報等をＲＡＭ３２上に読み出し、処理を実行することで、機器２０全体の制御や機能を実現する演算装置である。
【００３５】
操作パネル２２は、ユーザからの入力を受け付ける入力部と、表示を行う表示部とを備えている。外部Ｉ／Ｆ２３は、外部装置とのインタフェースである。外部装置には、記録媒体２３ａ等がある。これにより、機器２０は、外部Ｉ／Ｆ２３を介して記録媒体２３ａの読み取り及び／又は書き込みを行うことができる。なお、記録媒体２３ａには、例えば、ＩＣカード、フレキシブルディスク、ＣＤ、ＤＶＤ、ＳＤメモリカード、ＵＳＢメモリ等がある。
【００３６】
通信Ｉ／Ｆ２４は、機器２０をネットワークに接続するインタフェースである。これにより、機器２０は、通信Ｉ／Ｆ２４を介して通信を行うことができる。プリンタ２５は、印刷データを印刷する印刷装置である。スキャナ２６は、原稿を読み取って電子ファイル（画像ファイル）を生成する読取装置である。
【００３７】
本実施形態に係る機器２０は、図３に示すハードウェア構成を有することにより、後述するような各種処理を実現できる。
【００３８】
＜サービス提供システムが提供するサービス＞
ここで、本実施形態に係るサービス提供システム１０が提供するサービスについて説明する。なお、以降では、機器２０が画像形成装置であるものとして説明する。
【００３９】
本実施形態に係るサービス提供システム１０は、例えば、機器２０において原稿をスキャンして生成された電子ファイルを外部ストレージシステム３０に保存して、保存先ＵＲＬ（Uniform Resource Locator）をメール送信するサービスを提供する。
【００４０】
本実施形態に係るサービス提供システム１０は、上述したサービス（以降では、「スキャン配信」サービスとも表す。）を提供するものとして説明する。
【００４１】
ただし、サービス提供システム１０により提供されるサービスは、これに限られない。例えば、サービス提供システム１０は、機器２０において原稿をスキャンして生成された電子ファイルを、ＯＣＲ（Optical Character Recognition）処理して、外部ストレージシステム３０に保存するサービスを提供しても良い。また、例えば、サービス提供システム１０は、外部ストレージシステム３０に保存されている電子ファイルを、機器２０で印刷するサービスを提供しても良い。
【００４２】
＜機能構成＞
次に、本実施形態に係る情報処理システム１の機能構成について、図４を参照しながら説明する。図４は、本実施形態に係る情報処理システム１の一例の機能構成を示す図である。
【００４３】
機器２０は、ＵＩ制御部２１０と、スキャン処理部２２０とを有する。これら各機能部は、機器２０にインストールされた１以上のプログラムが、ＣＰＵ３１に実行させる処理により実現される。
【００４４】
ＵＩ制御部２１０は、操作パネル２２に各種画面を表示させる。また、ＵＩ制御部２１０は、操作パネル２２に表示された各種画面におけるユーザの各種操作を受け付ける。
【００４５】
スキャン処理部２２０は、ＵＩ制御部２１０により受け付けられたユーザの操作に応じて、スキャナ２６で原稿をスキャンして電子ファイルを生成する。
【００４６】
サービス提供システム１０は、サービス処理部１１０と、ドキュメントサービス部１５０と、外部ストレージ連携部１６０とを有する。これら各機能部は、サービス提供システム１０にインストールされた１以上のプログラムが、ＣＰＵ１６に実行させる処理により実現される。
【００４７】
また、サービス提供システム１０は、アプリ情報記憶部１８０と、リソース管理情報記憶部１９０とを有する。これら各記憶部は、ＨＤＤ１８を用いて実現可能である。なお、アプリ情報記憶部１８０及びリソース管理情報記憶部１９０の少なくとも一方が、サービス提供システム１０とネットワークを介して接続される記憶装置等を用いて実現されていても良い。
【００４８】
サービス処理部１１０は、機器２０からの要求に応じて、後述するアプリ情報１０００により提供される各種のサービスに関する処理を行う。ここで、サービス処理部１１０は、アプリ管理部１２０と、ロジック処理部１３０と、データＩ／Ｆ部１４０とを有する。
【００４９】
アプリ管理部１２０は、アプリ情報記憶部１８０に記憶されているアプリ情報１０００を管理する。アプリ管理部１２０は、機器２０のＵＩ制御部２１０からの要求に応じて、アプリ情報１０００に含まれる画面定義情報１１００を返信する。なお、画面定義情報１１００とは、アプリ情報１０００により提供されるサービスを利用するための画面であるサービス画面を表示させるための情報である。
【００５０】
また、アプリ管理部１２０は、ロジック処理部１３０からの要求に応じて、アプリ情報１０００に含まれる処理フロー情報１２００を返信する。なお、処理フロー情報１２００とは、アプリ情報１０００により提供されるサービス（例えば、「スキャン配信」サービス等）を実現する一連の処理（処理フロー）に関する情報である。
【００５１】
ロジック処理部１３０は、機器２０のＵＩ制御部２１０からの要求に応じて、アプリ管理部１２０を介して、アプリ情報１０００に含まれる処理フロー情報１２００を取得する。そして、ロジック処理部１３０は、取得した処理フロー情報１２００に基づいて、ドキュメントサービス部１５０や外部ストレージ連携部１６０のファイル処理部１７１等に処理の実行を要求することで、当該処理フロー情報１２００に基づく一連の処理を実行する。
【００５２】
このとき、ロジック処理部１３０は、一連の処理に用いられるパラメータや当該一連の処理における各処理の処理結果等を、リソース管理情報記憶部１９０に記憶されたリソース管理情報１９０Ｄを用いて管理する。
【００５３】
なお、ロジック処理部１３０は、後述するコンポーネントを組み合わせることにより、処理フロー情報１２００に基づく一連の処理を実行する。
【００５４】
これにより、本実施形態に係るサービス提供システム１０では、アプリ情報１０００により提供される各種のサービスが実現される。なお、ロジック処理部１３０の詳細については後述する。
【００５５】
データＩ／Ｆ部１４０は、機器２０のＵＩ制御部２１０からの要求に応じて、外部ストレージ連携部１６０のデータ処理部１７２に対して、各種の要求（例えば、フォルダ一覧の取得要求等）を行う。
【００５６】
ドキュメントサービス部１５０は、各種処理を実行するプログラム（モジュール）群である。これらのプログラムは、ロジック処理部１３０からの要求に応じて、後述するコンポーネントにより実行される。
【００５７】
ドキュメントサービス部１５０には、メールを作成して、指定された宛先にメールを送信するメール送信１５１が含まれる。
【００５８】
なお、ドキュメントサービス部１５０には、これ以外にも、例えば、電子ファイルに対してＯＣＲ処理を実行するプログラム、電子ファイルを機器２０が印刷可能な印刷データに変換するプログラム等の各種プログラムが含まれても良い。
【００５９】
外部ストレージ連携部１６０は、ロジック処理部１３０やデータＩ／Ｆ部１４０からの要求に応じて、外部ストレージシステム３０に対して、各種の要求（例えば、フォルダ一覧の取得要求等）を行う。
【００６０】
本実施形態に係るサービス提供システム１０は、当該サービス提供システム１０と連携して処理を行う外部ストレージシステム３０毎に、それぞれの外部ストレージシステム３０に対応する外部ストレージ連携部１６０を有する。すなわち、本実施形態に係るサービス提供システム１０は、外部ストレージシステム３０１に対して各種の要求を行うための外部ストレージ連携部１６０１を有する。同様に、本実施形態に係るサービス提供システム１０は、外部ストレージシステム３０２に対して各種の要求を行うための外部ストレージ連携部１６０２等を有する。
【００６１】
なお、以降では、複数の外部ストレージ連携部１６０について、各々を区別するときは、上記のように、「外部ストレージ連携部１６０１」、「外部ストレージ連携部１６０２」等と添え字を用いて表す。
【００６２】
ここで、外部ストレージ連携部１６０は、ロジック処理部１３０からの要求を受け付けるファイル処理部１７１と、データＩ／Ｆ部１４０からの要求を受け付けるデータ処理部１７２とを有する。
【００６３】
ファイル処理部１７１は、外部ストレージシステム３０に対して、ファイル操作（例えば、取得、保存、編集等）を行うためのＡＰＩ（Application Programming Interface）が定義された共通Ｉ／Ｆ１７１１及び固有Ｉ／Ｆ１７１２を有する。
【００６４】
共通Ｉ／Ｆ１７１１は、複数の外部ストレージシステム３０間で共通に利用できるＡＰＩであり、例えば図５（ａ）に示すＡＰＩが挙げられる。すなわち、ファイル処理部１７１の共通Ｉ／Ｆ１７１１は、全ての外部ストレージシステム３０が提供しているファイル操作に関する機能（例えば、ファイルの取得、保存等）を利用するためのＡＰＩ群である。
【００６５】
固有Ｉ／Ｆ１７１２は、特定の外部ストレージシステム３０で利用できるＡＰＩであり、例えば図５（ｂ）に示すＡＰＩが挙げられる。すなわち、ファイル処理部１７１の固有Ｉ／Ｆ１７１２は、特定の外部ストレージシステム３０が提供しているファイル操作に関する機能（例えば、ドキュメントにファイルを付加等）を利用するためのＡＰＩ群である。
【００６６】
したがって、共通Ｉ／Ｆ１７１１は、全ての外部ストレージ連携部１６０に対して同様に定義される。一方で、固有Ｉ／Ｆ１７１２は、当該固有Ｉ／Ｆ１７１２で定義されるＡＰＩが利用可能な特定の外部ストレージシステム３０に対応する外部ストレージ連携部１６０に対して定義される。
【００６７】
データ処理部１７２は、外部ストレージシステム３０に対して、ファイルの書誌情報等のメタデータ（例えば、ファイル一覧やフォルダ一覧等）を取得するためのＡＰＩが定義された共通Ｉ／Ｆ１７２１及び固有Ｉ／Ｆ１７２２を有する。
【００６８】
共通Ｉ／Ｆ１７２１は、複数の外部ストレージシステム３０間で共通に利用できるＡＰＩであり、例えば図５（ｃ）に示すＡＰＩが挙げられる。すなわち、データ処理部１７２の共通Ｉ／Ｆ１７２１は、全ての外部ストレージシステム３０が提供しているメタデータ取得に関する機能（例えば、ファイル一覧の取得、フォルダ一覧の取得等）を利用するためのＡＰＩ群である。
【００６９】
固有Ｉ／Ｆ１７２２は、特定の外部ストレージシステム３０で利用できるＡＰＩであり、例えば図５（ｄ）に示すＡＰＩが挙げられる。すなわち、データ処理部１７２の固有Ｉ／Ｆ１７２２は、特定の外部ストレージシステム３０が提供しているメタデータ取得に関する機能（例えば、画像ファイル一覧の取得等）を利用するためのＡＰＩ群である。
【００７０】
したがって、共通Ｉ／Ｆ１７２１は、全ての外部ストレージ連携部１６０に対して同様に定義される。一方で、固有Ｉ／Ｆ１７２２は、当該固有Ｉ／Ｆ１７２２で定義されるＡＰＩが利用可能な特定の外部ストレージシステム３０に対応する外部ストレージ連携部１６０に対して定義される。
【００７１】
以上のように、本実施形態に係るサービス提供システム１０は、連携して処理を行う外部ストレージシステム３０毎に、それぞれの外部ストレージシステム３０に対応する外部ストレージ連携部１６０を有する。このため、連携先となる外部ストレージシステム３０を追加や削除（以降、「追加等」と表す。）する場合、当該追加等される外部ストレージシステム３０に対応する外部ストレージ連携部１６０をサービス提供システム１０に追加等すれば良い。
【００７２】
これにより、本実施形態に係るサービス提供システム１０では、連携先となる外部ストレージシステム３０の追加等に伴う影響を局所化することができる。換言すれば、本実施形態に係るサービス提供システム１０では、他の機能部（サービス処理部１１０やドキュメントサービス部１５０等）に影響を与えることなく、連携先となる外部ストレージシステム３０の追加等を行うことができる。なお、外部ストレージ連携部１６０の追加等は、ＳＤＫ（Software Development Kit）を用いて行うことができる。
【００７３】
また、外部ストレージ連携部１６０のファイル処理部１７１は、共通Ｉ／Ｆ１７１１と固有Ｉ／Ｆ１７１２とを異なるモジュール等で定義している。また、共通Ｉ／Ｆ１７１１及び固有Ｉ／Ｆ１７１２で定義されるＡＰＩは、外部ストレージシステム３０を一意に識別する「外部ストレージ名」を指定することで利用できる（すなわち、「外部ストレージ名」が可変部分となっている。）。
【００７４】
これにより、外部ストレージ連携部１６０を追加する場合、他の外部ストレージ連携部１６０のファイル処理部１７１に定義されている共通Ｉ／Ｆ１７１１を再利用することができる。換言すれば、外部ストレージ連携部１６０を追加する場合、当該追加する外部ストレージ連携部１６０のファイル処理部１７１は、固有Ｉ／Ｆ１７１２のみを開発すれば良い。このことは、データ処理部１７２の共通Ｉ／Ｆ１７２１及び固有Ｉ／Ｆ１７２２についても同様である。
【００７５】
アプリ情報記憶部１８０は、外部ストレージシステム３０と連携した各種のサービスを提供するアプリケーションであるアプリ情報１０００を記憶する。アプリ情報１０００には、機器２０にサービス画面を表示させるための画面定義情報１１００と、サービスを実現する一連の処理（処理フロー）に関する情報である処理フロー情報１２００とが含まれる。なお、処理フロー情報１２００の詳細については後述する。
【００７６】
また、アプリ情報１０００には、当該アプリ情報１０００を一意に識別するアプリＩＤが関連付けられている。例えば、機器２０のスキャン機能を利用するアプリ情報１０００には、アプリＩＤ「app001」が関連付けられている。同様に、例えば、機器２０のプリント機能を利用するアプリ情報１０００には、アプリＩＤ「app002」が関連付けられている。
【００７７】
したがって、本実施形態に係る「スキャン配信」サービスを実現するための処理フロー情報１２００は、アプリＩＤ「app001」のアプリ情報１０００に含まれる。なお、アプリ情報１０００には、複数の処理フロー情報１２００が含まれていても良い。
【００７８】
リソース管理情報記憶部１９０は、処理フロー情報１２００に基づく一連の処理に用いられるパラメータや当該一連の処理における各処理の処理結果等を管理するリソース管理情報１９０Ｄを記憶する。なお、リソース管理情報１９０Ｄの詳細については後述する。
【００７９】
ここで、ロジック処理部１３０の詳細な機能構成について、図６を参照しながら説明する。図６は、本実施形態に係るロジック処理部１３０の一例の機能構成を示す図である。
【００８０】
ロジック処理部１３０は、フロー実行部１３１と、コンポーネント管理部１３２と、コンポーネント群１３３と、型変換管理部１３４と、型変換群１３５と、リソース管理部１３６と、パラメータ評価部１３７とを有する。また、ロジック処理部１３０は、型変換情報テーブル２０００を利用する。
【００８１】
フロー実行部１３１は、機器２０のＵＩ制御部２１０からの要求に応じて、アプリ管理部１２０を介して、アプリ情報１０００に含まれる処理フロー情報１２００を取得する。そして、フロー実行部１３１は、取得した処理フロー情報１２００に基づいてコンポーネントに対して処理の実行を要求することで、当該処理フロー情報１２００に基づく一連の処理を実行する。
【００８２】
ここで、コンポーネントとは、処理フロー情報１２００に基づく一連の処理（処理フロー）に含まれる各処理を実行するためのモジュール等である。したがって、処理フロー情報１２００に基づく一連の処理は、１以上のコンポーネントにより実行される処理が組み合わされることで実現される。なお、コンポーネントは、例えばクラスや関数等で定義される。
【００８３】
また、フロー実行部１３１は、処理フロー情報１２００を取得すると、リソース管理部１３６を介して、当該処理フロー情報１２００に基づく一連の処理に用いられるパラメータ等をリソース管理情報１９０Ｄとしてリソース管理情報記憶部１９０に保存する。
【００８４】
なお、パラメータとは、一連の処理に含まれる各処理を実行するコンポーネントに入力される各種情報のことである。パラメータには、データ項目を示すキーと、当該キーにおけるデータ項目値を示すリソースとが含まれる。
【００８５】
コンポーネント管理部１３２は、フロー実行部１３１からの要求に応じて、コンポーネントの生成を行う。コンポーネントの生成とは、例えばクラスや関数等で定義されているコンポーネントを、メモリ（例えばＲＡＭ１４）上に展開することである。
【００８６】
コンポーネント群１３３は、コンポーネントの集合である。コンポーネント群１３３には、外部ストレージシステム３０１（外部ストレージＡ）に電子ファイルを保存（アップロード）するための配信Ａコンポーネント１３３１が含まれる。また、コンポーネント群１３３には、メールを作成して、指定された宛先にメールを送信するためのメールコンポーネント１３３２が含まれる。
【００８７】
なお、コンポーネント群１３３には、これら以外にも、例えば、外部ストレージシステム３０２（外部ストレージＢ）に電子ファイルを保存するための配信Ｂコンポーネント、電子ファイルにＯＣＲ処理を行うためのＯＣＲコンポーネント等が含まれても良い。すなわち、コンポーネント群１３３には、各種の処理を実行するための種々のコンポーネントが含まれても良い。
【００８８】
ここで、各コンポーネントは、コンポーネント共通Ｉ／Ｆ１３３０を有する。コンポーネント共通Ｉ／Ｆ１３３０は、各コンポーネントに対して共通に定義されたＡＰＩであり、コンポーネントを生成するためのＡＰＩと、コンポーネントに対して処理の実行を要求するためのＡＰＩとが含まれる。
【００８９】
各コンポーネントがコンポーネント共通Ｉ／Ｆ１３３０を有することで、コンポーネントの追加等に伴う影響を局所化することができる。すなわち、本実施形態に係るサービス提供システム１０は、例えば、フロー実行部１３１やコンポーネント管理部１３２等に影響を与えることなく、コンポーネントの追加等を行うことができる。
【００９０】
型変換管理部１３４は、データ型の型変換を管理する。ここで、各コンポーネントは、自身が扱えるデータ型が予め決まっている。したがって、型変換管理部１３４は、コンポーネントからの要求に応じて、型変換情報テーブル２０００を参照して、型変換群１３５に定義されている型変換を生成する。
【００９１】
そして、型変換管理部１３４は、生成された型変換に対して型変換処理の実行を要求する。これにより、型変換管理部１３４は、要求元のコンポーネントが扱えるデータ型に型変換を行う。
【００９２】
ここで、型変換情報テーブル２０００の詳細について、図７を参照しながら説明する。図７は、型変換情報テーブルの一例を示す図である。
【００９３】
図７に示す型変換情報テーブル２０００に格納されている型変換情報は、データ項目として、変換前のデータ型と、変換後のデータ型と、生成する型変換とを有する。すなわち、型変換情報は、変換前のデータ型及び変換後のデータ型毎に、当該変換前のデータ型を当該変換後のデータ型に型変換するための型変換が関連付けられた情報である。
【００９４】
これにより、例えば、ストリームデータを示すデータ型「InputStream」のデータを、記憶装置等に格納されているデータのパス（アドレス）を示すデータ型「LocalFilePath」に型変換する場合、第１の型変換を生成すれば良いことがわかる。
【００９５】
ここで、型変換の生成とは、例えばクラスで定義された型変換を、メモリ（例えばＲＡＭ１４）上に展開することである。また、データ型には、上述した「InputStream」や「LocalFilePath」以外に、例えば、データの実体を示すデータ型「File」等が挙げられる。
【００９６】
型変換群１３５は、型変換の集合である。型変換群１３５には、データ型「InputStream」のデータを、データ型「LocalFilePath」のデータに変換する第１の型変換１３５１が含まれる。
【００９７】
なお、型変換群１３５には、これ以外にも、例えば、データ型「LocalFilePath」のデータを、データ型「File」のデータに変換する第２の型変換等の各種の型変換が含まれても良い。
【００９８】
ここで、各型変換は、型変換共通Ｉ／Ｆ１３５０を有する。型変換共通Ｉ／Ｆ１３５０は、各型変換に対して共通に定義されたＡＰＩであり、型変換を生成するためのＡＰＩと、型変換に対して処理の実行を要求するためのＡＰＩとが含まれる。
【００９９】
各型変換が型変換共通Ｉ／Ｆ１３５０を有することで、型変換の追加等に伴う影響を局所化することができる。すなわち、本実施形態に係るサービス提供システム１０では、例えば、型変換管理部１３４等に影響を与えることなく、型変換の追加等を行うことができる。
【０１００】
リソース管理部１３６は、リソース管理情報記憶部１９０に記憶されたリソース管理情報１９０Ｄを管理する。すなわち、リソース管理部１３６は、フロー実行部１３１からの要求に応じて、処理フロー情報１２００に基づく一連の処理に用いられるパラメータ等を、リソース管理情報１９０Ｄとしてリソース管理情報記憶部１９０に記憶させる。
【０１０１】
また、リソース管理部１３６は、パラメータ評価部１３７からの要求に応じて、リソース管理情報記憶部１９０に記憶されたリソース管理情報１９０Ｄに含まれるパラメータを返信する。
【０１０２】
パラメータ評価部１３７は、リソース管理部１３６から返信されたパラメータを評価する。すなわち、パラメータ評価部１３７は、返信されたパラメータに置換指定があるか否かを判定する。なお、置換指定とは、パラメータに含まれるキーのリソースを、他のキーのリソースに置換するための指定である。
【０１０３】
そして、パラメータ評価部１３７は、返信されたパラメータに置換指定があると判定した場合、返信されたパラメータにおいて置換指定がされているリソースを、該当のリソースに置換する。
【０１０４】
ここで、処理フロー情報１２００の詳細について、図８を参照しながら説明する。図８は、処理フロー情報の一例を示す図である。
【０１０５】
図８に示す処理フロー情報１２００は、アプリＩＤ「app001」のアプリ情報１０００に含まれる処理フロー情報１２００の一例である。図８に示す処理フロー情報１２００は、機器２０において原稿をスキャンして生成された電子ファイルを外部ストレージＡに保存した後、保存先ＵＲＬをメールで送信するサービス（「スキャン配信」サービス）を実現するための一連の処理に関する情報である。
【０１０６】
図８に示す処理フロー情報１２００には、処理フロー情報１２００を一意に識別する識別情報を示すフローＩＤ１２０１と、処理フロー情報１２００の名称を示すフロー名１２０２と、一連の処理の処理内容を示すフロー詳細１２０３とが含まれる。
【０１０７】
また、フロー詳細１２０３には、電子ファイルを外部ストレージＡに保存する配信処理を示す処理内容１２０４と、保存先ＵＲＬをメールで送信するメール処理を示す処理内容１２０５とが含まれる。
【０１０８】
処理内容１２０４には、配信処理を実行するコンポーネントの名称「配信Ａコンポーネント」と、当該コンポーネントに入力されるパラメータとが指定されている。ここで、パラメータは、「[キー]：[リソース]」の形式で指定される。
【０１０９】
したがって、処理内容１２０４におけるパラメータには、配信対象の電子ファイル名を示すキー「filename」及び当該キーの値を示すリソース「null」（空値）が指定されている。同様に、処理内容１２０４におけるパラメータには、外部ストレージＡにおける保存先フォルダを示すキー「folder」及び当該キーの値を示すリソース「null」が指定されている。このように、処理内容１２０４におけるパラメータには、配信Ａコンポーネント１３３１に入力されるパラメータが指定されている。
【０１１０】
処理内容１２０５には、メール処理を実行するコンポーネントの名称「メールコンポーネント」と、当該コンポーネントに入力されるパラメータとが指定されている。上記と同様に、処理内容１２０５におけるパラメータには、メールの送信元を示すキー「from」及び当該キーの値を示すリソース「hoge@fuga.com」が指定されている。同様に、メールの送信先を示すキー「to」及びリソース「null」、メールのＣＣ（Carbon Copy）先を示すキー「cc」及びリソース「null」、メールのＢＣＣ（Blind Carbon Copy）先を示すキー「bcc」及びリソース「null」が指定されている。また、同様に、メールの件名を示すキー「subject」及びリソース「保存先ＵＲＬの通知」、メールの本文を示すキー「body」及びリソース「${配信Ａコンポーネント.result.fileurl}」が指定されている。
【０１１１】
ここで、キー「body」のリソース「${配信Ａコンポーネント.result.fileurl}」は、置換指定である。なお、この置換指定は、キー「body」のリソースを、配信Ａコンポーネントの処理結果（result）におけるキー「fileurl」のリソースに置換することを意味している。本実施形態では、置換指定は、「${[コンポーネント名].[result].[キー]}」の形式で指定されるものとする。これにより、置換指定がなされているキーのリソースは、置換指定で指定されたコンポーネント名のコンポーネントの処理結果（result）における指定されたキーのリソースで置換することができる。
【０１１２】
なお、置換指定は、「${[コンポーネント名].[parameters].[キー]}」の形式されても良い。これによれば、置換指定がなされているキーのリソースを、指定されたコンポーネントのパラメータ（parameters）における指定されたキーのリソースで置換することができる。
【０１１３】
このように、処理内容１２０５におけるパラメータには、メールコンポーネント１３３２に入力されるパラメータが指定されている。しかも、メールコンポーネント１３３２に入力されるパラメータには、他のコンポーネント（配信Ａコンポーネント１３３１）の処理結果への置換指定が含まれている。
【０１１４】
これにより、後続コンポーネント（メールコンポーネント１３３２）は、先行コンポーネント（配信Ａコンポーネント１３３１）の処理結果を利用した処理を行うことができる。しかも、リソースの置換を行うことにより、先行コンポーネントは、後続コンポーネントが入力可能なキーを意識することなく、任意のキーで処理結果を出力することができる。換言すれば、後続コンポーネントは、任意の先行コンポーネントの処理結果を利用した処理を行うことができるようになる。
【０１１５】
＜処理の詳細＞
次に、本実施形態に係る情報処理システム１の処理の詳細について説明する。
【０１１６】
以降では、ユーザＵが機器２０を用いて、サービス提供システム１０のアプリケーション（アプリ情報１０００）により提供されるサービスを利用する場合の処理について、図９を参照しながら説明する。図９は、本実施形態に係るサービス利用の全体処理の一例を示すシーケンス図である。
【０１１７】
ユーザＵは、機器２０を用いて、アプリ情報１０００により提供されるサービスの一覧を表示させるための表示操作を行う（ステップＳ９０１）。
【０１１８】
機器２０のＵＩ制御部２１０は、サービスの一覧を表示させるための表示操作を受け付けると、サービス提供システム１０のアプリ管理部１２０に対して、サービス一覧の取得要求を送信する（ステップＳ９０２）。そして、アプリ管理部１２０は、当該取得要求を受け取ると、サービス一覧画面情報を返信する。
【０１１９】
なお、サービス一覧画面情報とは、アプリ情報１０００により提供されるサービスの一覧を表示するための情報であり、例えばＨＴＭＬ等のデータ形式により表される。また、サービス一覧画面情報には、アプリ情報１０００のアプリＩＤと、当該アプリ情報１０００に含まれる処理フロー情報１２００のフローＩＤ及びフロー名とが含まれる。
【０１２０】
機器２０のＵＩ制御部２１０は、サービス一覧画面情報を受け取ると、当該サービス一覧画面情報に基づいて、例えば図１０に示すサービス一覧画面３１００を操作パネル２２に表示させる（ステップＳ９０３）。図１０に示すサービス一覧画面３１００には、サービス一覧画面情報に含まれるフローＩＤ及びフロー名に基づいてサービス名の一覧が表示されるサービス名一覧３１０１が含まれる。
【０１２１】
なお、図１０に示すサービス一覧画面３１００では、アプリ情報１０００に含まれる処理フロー情報１２００のフロー名をサービス名としたが、これに限られず、任意のサービス名が表示されても良い。
【０１２２】
次に、ユーザＵは、サービス一覧画面３１００のサービス名一覧３１０１から、所望のサービスを選択する操作を行う（ステップＳ９０４）。ここで、以降では、サービス一覧画面３１００のサービス名一覧３１０１から「スキャン配信１」がユーザＵにより選択されたものとして説明する。
【０１２３】
機器２０のＵＩ制御部２１０は、サービスの選択操作を受け付けると、サービス提供システム１０のアプリ管理部１２０に対して、サービス画面の取得要求を送信する（ステップＳ９０５）。なお、当該取得要求には、ユーザＵにより選択された「スキャン配信１」サービスを提供するアプリ情報１０００のアプリＩＤ「app001」と、当該サービスを実現する処理フロー情報１２００のフローＩＤ「flow001」とが含まれる。
【０１２４】
そして、アプリ管理部１２０は、サービス画面の取得要求を受け取ると、当該取得要求に含まれるアプリＩＤ「app001」とフローＩＤ「flow001」に対応する画面定義情報１１００を取得し、当該取得した画面定義情報１１００を返信する。
【０１２５】
機器２０のＵＩ制御部２１０は、画面定義情報１１００を受け取ると、サービス提供システム１０のデータＩ／Ｆ部１４０に対して、サービス画面の表示用情報の取得要求を送信する（ステップＳ９０６）。
【０１２６】
なお、表示用情報とは、サービス画面における選択欄の各選択要素等のことであり、例えば、外部ストレージにおける保存先のフォルダの候補となるフォルダ一覧（フォルダ名及びフォルダＩＤの一覧）等である。以降では、表示用情報の取得要求は、外部ストレージＡにおける保存先のフォルダの候補を示すフォルダ一覧の取得要求であるものとして説明する。
【０１２７】
ここで、フォルダ一覧の取得要求は、図５（ｃ）に示すＡＰＩ「/外部ストレージ名/data/folders」を用いて行うことができる。すなわち、ＵＩ制御部２１０は、データＩ／Ｆ部１４０に対して、例えば、「/storage-a/data/folders」としてＨＴＴＰ（Hypertext Transfer Protocol）リクエストを送信することで、外部ストレージＡのフォルダ一覧の取得を要求することができる。
【０１２８】
サービス提供システム１０のデータＩ／Ｆ部１４０は、表示用情報の取得要求を受け取ると、当該取得要求を対応する外部ストレージ連携部１６０のデータ処理部１７２に転送する（ステップＳ９０７）。すなわち、データＩ／Ｆ部１４０は、受け取った表示用情報の取得要求を外部ストレージ連携部１６０１のデータ処理部１７２１に転送する。
【０１２９】
外部ストレージ連携部１６０１のデータ処理部１７２１は、表示用情報の取得要求を受け取ると、外部ストレージＡに対してフォルダ一覧の取得要求を送信して、フォルダ一覧を示すフォルダ一覧情報を取得する（ステップＳ９０８）。すなわち、データ処理部１７２１は、共通Ｉ／Ｆ１７２１１に定義されているＡＰＩを用いて、外部ストレージＡからフォルダ一覧情報を取得する。
【０１３０】
そして、データ処理部１７２１は、データＩ／Ｆ部１４０を介して、フォルダ一覧情報をＵＩ制御部２１０に返信する。
【０１３１】
機器２０のＵＩ制御部２１０は、フォルダ一覧情報を受け取ると、当該フォルダ一覧情報を画面定義情報１１００に反映させて、例えば図１０に示すサービス画面３２００を操作パネル２２に表示させる（ステップＳ９０９）。
【０１３２】
図１０に示すサービス画面３２００は、ユーザＵにより選択されたサービス名「スキャン配信１」サービスを利用するための画面である。図１０に示すサービス画面３２００には、ファイル名入力欄３２０１と、保存先フォルダ選択欄３２０２と、宛先指定欄３２０３と、ＣＣ指定欄３２０４と、ＢＣＣ指定欄３２０５と、スキャン実行ボタン３２０６とが含まれる。
【０１３３】
なお、サービス画面３２００において、保存先フォルダ選択欄３２０２の各選択要素は、上記のステップＳ９０８で外部ストレージＡから取得されたフォルダ一覧情報に基づいて設定される。
【０１３４】
次に、ユーザＵは、サービス画面３２００において、ファイル名入力欄３２０１に所望のファイル名を入力するとともに、保存先フォルダ選択欄３２０２から所望の保存先フォルダを選択する。また、ユーザＵは、外部ストレージＡにおける保存先フォルダを示す保存先ＵＲＬを通知するメールアドレスを宛先指定欄３２０３に入力するとともに、必要に応じて、ＣＣ指定欄３２０４やＢＣＣ指定欄３２０５にもメールアドレスを入力する。
【０１３５】
そして、機器２０のスキャナ２６に原稿をセットした上で、スキャン実行ボタン３２０６を押下する（ステップＳ９１０）。
【０１３６】
ここで、以降では、ユーザＵにより、ファイル名入力欄３２０１にファイル名「file1」が入力されるとともに、保存先フォルダ選択欄３２０２から「folderB」が選択されたものとする。また、ユーザＵにより、宛先指定欄３２０３にメールアドレス「hogehoge@fuga.com」が入力された一方で、ＣＣ指定欄３２０４及びＢＣＣ指定欄３２０５には何も入力されずに、スキャン実行ボタン３２０６が押下されたものとして説明する。
【０１３７】
機器２０のＵＩ制御部２１０は、スキャン実行ボタン３２０６の押下を受け付けると、スキャン処理部２２０に対して、スキャンの実行要求を送信する（ステップＳ９１１）。
【０１３８】
機器２０のスキャン処理部２２０は、スキャンの実行要求を受け取ると、スキャナ２６を制御して、セットされた原稿を読み取って、電子ファイルを作成する（ステップＳ９１２）。そして、スキャン処理部２２０は、スキャンが終了したことを示すスキャン結果をＵＩ制御部２１０に返信する。
【０１３９】
機器２０のＵＩ制御部２１０は、スキャン結果を受け取ると、サービス提供システム１０のロジック処理部１３０に対して、「スキャン配信１」サービスを実現する処理フローの実行要求を送信する（ステップＳ９１３）。
【０１４０】
なお、当該実行要求には、「スキャン配信１」サービスを提供するアプリ情報１０００のアプリＩＤ「app001」と、当該サービスを実現するための処理フロー情報１２００のフローＩＤ「flow001」とが含まれる。また、当該実行要求には、スキャンにより生成された電子ファイルと、サービス画面３２００においてユーザＵにより入力された入力情報（ファイル名「file1」、保存先フォルダ「folderB」、宛先メールアドレス「hogehoge@fuga.com」等）が含まれる。
【０１４１】
サービス提供システム１０のロジック処理部１３０は、受け取った処理フローの実行要求に含まれるアプリＩＤ及びフローＩＤに対応する処理フロー情報１２００を取得して、当該処理フロー情報１２００に基づく一連の処理を実行する（ステップＳ９１４）。そして、ロジック処理部１３０は、当該一連の処理の処理結果をＵＩ制御部２１０に返信する。
【０１４２】
これにより、本実施形態に係るサービス提供システム１０において、「スキャン配信１」サービスを実現する一連の処理が実行され、機器２０に対して当該サービスが提供される。
【０１４３】
ここで、上記のステップＳ９１４の処理フローの実行処理の詳細について、図１１を参照しながら説明する。図１１は、本実施形態に係る処理フローの実行処理の一例を示すシーケンス図である。
【０１４４】
フロー実行部１３１は、処理フローの実行要求を受け取ると、アプリ管理部１２０に対して、処理フロー情報の取得要求を送信する（ステップＳ１１０１）。なお、当該取得要求には、受け取った処理フローの実行要求に含まれるアプリＩＤ「app001」と、フローＩＤ「flow001」とが含まれる。
【０１４５】
そして、アプリ管理部１２０は、受け取った処理フロー情報の取得要求に含まれるアプリＩＤ「app001」及びフローＩＤ「flow001」に対応する処理フロー情報１２００をアプリ情報記憶部１８０から取得して、当該処理フロー情報１２００を返信する。これにより、フロー実行部１３１には、図８に示す処理フロー情報１２００が返信される。
【０１４６】
次に、フロー実行部１３１は、処理フロー情報１２００を受け取ると、リソース管理部１３６に対して、リソース管理情報の保存要求を送信する（ステップＳ１１０２）。なお、当該保存要求には、ステップＳ１１０１でＵＩ制御部２１０から受け取った処理フローの実行要求と、処理フロー情報１２００に含まれる処理内容１２０４及び処理内容１２０５とが含まれる。
【０１４７】
リソース管理部１３６は、リソース管理情報の保存要求を受け取ると、当該保存要求に含まれる処理フローの実行要求と、処理内容１２０４及び処理内容１２０５とに基づいて、例えば図１２（ａ）に示すリソース管理情報１９０Ｄを作成する。そして、リソース管理部１３６は、作成したリソース管理情報１９０Ｄをリソース管理情報記憶部１９０に保存し（ステップＳ１１０３）、保存結果をフロー実行部１３１に返信する。
【０１４８】
ここで、図１２（ａ）に示すリソース管理情報１９０Ｄには、実行要求１９１と、パラメータ１９２と、処理結果１９３とが含まれる。
【０１４９】
実行要求１９１は、リソース管理情報の保存要求に含まれる処理フローの実行要求である。図１２（ａ）では、ＵＩ制御部２１０からＨＴＴＰリクエストの形式で送信された処理フローの実行要求が保存されている。
【０１５０】
パラメータ１９２には、配信Ａコンポーネントパラメータ１９２１と、メールコンポーネントパラメータ１９２２とが含まれる。
【０１５１】
配信Ａコンポーネントパラメータ１９２１は、処理内容１２０４と、処理フローの実行要求に含まれる入力情報とに基づいて作成される。すなわち、配信Ａコンポーネントパラメータ１９２１は、処理内容１２０４におけるパラメータのキー「filename」及び「folder」に対して、入力情報に含まれる「file1」及び「folderB」をそれぞれリソースとして指定することで作成される。
【０１５２】
メールコンポーネントパラメータ１９２２は、同様に、処理内容１２０５と、処理フローの実行要求に含まれる入力情報とに基づいて作成される。すなわち、メールコンポーネントパラメータ１９２２は、処理内容１２０５におけるパラメータのキー「to」に対して、入力情報に含まれる「hogehoge@fuga.com」をリソースとして指定することで作成される。
【０１５３】
なお、処理結果１９３は、各コンポーネントの処理が実行された場合に、当該処理の処理結果が保存される。
【０１５４】
フロー実行部１３１は、保存結果を受け取ると、コンポーネント管理部１３２に対して、処理フロー情報１２００に基づくコンポーネントの取得要求を送信する（ステップＳ１１０４）。
【０１５５】
すなわち、フロー実行部１３１は、処理フロー情報１２００のフロー詳細１２０３における処理内容１２０４に指定されたコンポーネント名「配信Ａコンポーネント」を含むコンポーネントの取得要求をコンポーネント管理部１３２に送信する。
【０１５６】
コンポーネント管理部１３２は、コンポーネントの取得要求を受け取ると、当該取得要求に含まれるコンポーネント名に対応する配信Ａコンポーネント１３３１を生成する（ステップＳ１１０５）。なお、配信Ａコンポーネント１３３１の生成は、コンポーネント共通Ｉ／Ｆ１３３０に定義されたコンポーネントを生成するためのＡＰＩを用いて行うことができる。
【０１５７】
そして、コンポーネント管理部１３２は、生成した配信Ａコンポーネント１３３１をフロー実行部１３１に返信する。すなわち、コンポーネント管理部１３２は、例えば、配信Ａコンポーネント１３３１が展開されたメモリ（例えばＲＡＭ１４）上のアドレスをフロー実行部１３１に返信する。
【０１５８】
フロー実行部１３１は、配信Ａコンポーネント１３３１が返信されると、当該コンポーネントに入力するパラメータの取得要求をパラメータ評価部１３７に送信する（ステップＳ１１０６）。なお、当該取得要求には、配信Ａコンポーネント１３３１のパラメータのキー「filename」及び「folder」が含まれる。
【０１５９】
パラメータ評価部１３７は、パラメータの取得要求を受け取ると、当該取得要求をリソース管理部１３６に転送する（ステップＳ１１０７）。
【０１６０】
リソース管理部１３６は、パラメータの取得要求を受け取ると、図１２（ａ）に示すリソース管理情報１９０Ｄの配信Ａコンポーネントパラメータ１９２１から、当該取得要求に含まれるキーに対応するパラメータを取得する（ステップＳ１１０８）。
【０１６１】
すなわち、リソース管理部１３６は、パラメータの取得要求に含まれるキー「filename」及び「folder」にそれぞれ対応する「"filename":"file1"」及び「"folder":"folderB"」を含むパラメータを取得する。
【０１６２】
そして、リソース管理部１３６は、取得したパラメータをパラメータ評価部１３７に返信する。
【０１６３】
パラメータ評価部１３７は、返信されたパラメータを評価する（ステップＳ１１０９）。すなわち、パラメータ評価部１３７は、返信されたパラメータに含まれる「"filename":"file1"」及び「"folder":"folderB"」に置換指定があるか否かを判定する。
【０１６４】
ここで、返信パラメータに含まれる「"filename":"file1"」及び「"folder":"folderB"」に置換指定はなされていない。したがって、パラメータ評価部１３７は、返信されたパラメータに置換指定はないと判定する。
【０１６５】
すると、パラメータ評価部１３７は、リソース管理部１３６から返信されたパラメータを、フロー実行部１３１に返信する（ステップＳ１１１０）。すなわち、パラメータ評価部１３７は、例えば図１３（ａ）に示すパラメータ４１００をフロー実行部１３１に返信する。
【０１６６】
次に、フロー実行部１３１は、配信Ａコンポーネント１３３１に対して、処理の実行要求を送信する（ステップＳ１１１１）。なお、当該実行要求には、データと、図１３（ａ）に示すパラメータ４１００とが含まれる。
【０１６７】
ここで、データとは、データ型「InputStream」として、ＵＩ制御部２１０から受け取った処理フローの実行要求に含まれる電子ファイルである。すなわち、フロー実行部１３１は、ＵＩ制御部２１０からデータ型「InputStream」として渡された電子ファイルを、単に「データ」として（データ型を意識することなく）、配信Ａコンポーネント１３３１に渡して処理の実行を要求する。本実施形態では、このようにデータ型を意識しない電子ファイル等を、単に「データ」と表す。
【０１６８】
配信Ａコンポーネント１３３１は、処理の実行要求を受け取ると、型変換管理部１３４に対して、型変換要求を送信する（ステップＳ１１１２）。なお、当該型変換要求には、データと、配信Ａコンポーネント１３３１が扱うことができるデータ型を示す「LocalFilePath」の指定とが含まれる。
【０１６９】
型変換管理部１３４は、型変換要求を受け取ると、当該型変換要求に含まれるデータのデータ型と、指定されたデータ型とが一致するか否かをチェックする（ステップＳ１１１３）。
【０１７０】
ここで、受け取った型変換要求に含まれるデータのデータ型は「InputStream」である一方、指定されたデータ型は「LocalFilePath」である。したがって、型変換管理部１３４は、型変換要求に含まれるデータのデータ型と、指定されたデータ型とが一致しないものと判断する。
【０１７１】
すると、型変換管理部１３４は、型変換情報テーブル２０００を参照して、「InputStream」を「LocalFilePath」に変換するための型変換を特定する（ここでは、第１の型変換１３５１が特定される）。そして、型変換管理部１３４は、当該特定された型変換を生成する（ステップＳ１１１４）。
【０１７２】
なお、第１の型変換１３５１の生成は、型変換共通Ｉ／Ｆ１３５０に定義されたＡＰＩを用いて行うことができる。
【０１７３】
次に、型変換管理部１３４は、生成された第１の型変換１３５１に対して、型変換要求を送信する（ステップＳ１１１５）。なお、当該型変換要求には、データが含まれる。
【０１７４】
第１の型変換１３５１は、型変換要求を受け取ると、当該要求に含まれるデータのデータ型を「InputStream」から「LocalFilePath」に変換して（ステップＳ１１１６）、当該変換後のデータを型変換管理部１３４に返信する。その後、型変換管理部１３４は、型変換後のデータを配信Ａコンポーネント１３３１に送信する（ステップＳ１１１７）。
【０１７５】
配信Ａコンポーネント１３３１は、型変換後のデータを受け取ると、パラメータ４１００に基づいて処理を実行する（ステップＳ１１１８）。すなわち、配信Ａコンポーネント１３３１は、外部ストレージＡのフォルダ名「folderB」のフォルダに対して、ファイル名を「file1」として、当該データにより示される電子ファイルを配信（アップロード）する。
【０１７６】
なお、配信Ａコンポーネント１３３１は、外部ストレージ連携部１６０１のファイル処理部１７１１に対して、図５（ａ）に示すＡＰＩ「/外部ストレージ名/process/folder」を用いて行うことができる。すなわち、配信Ａコンポーネント１３３１は、ファイル処理部１７１１に対して、例えば、「/storage-a/process/folder」としてデータを送信する。
【０１７７】
これにより、ファイル名「file1」の電子ファイル（スキャンにより生成された電子ファイル）が、外部ストレージＡのフォルダ名「folderB」のフォルダに保存される。
【０１７８】
次に、配信Ａコンポーネント１３３１は、処理実行が完了すると、リソース管理部１３６に対して、処理結果の保存要求を送信する（ステップＳ１１１９）。なお、当該保存要求には、配信Ａコンポーネント１３３１の処理結果を示すデータが含まれる。
【０１７９】
リソース管理部１３６は、処理結果の保存要求を受け取ると、当該保存要求に含まれるデータに基づいて、リソース管理情報１９０Ｄに処理結果を追加する（ステップＳ１１２０）。そして、リソース管理部１３６は、保存結果を配信Ａコンポーネント１３３１に返信する。
【０１８０】
すなわち、リソース管理部１３６は、図１２（ｂ）に示すように、リソース管理情報１９０Ｄの処理結果１９３に対して、配信Ａコンポーネント１３３１の処理結果１９３１を追加する。処理結果１９３１には、保存された電子ファイルのファイル名を示す「"filename":"file1"」と、保存先ＵＲＬを示す「"fileurl":"http://storageA.com/folderB/ file1.txt"」とが含まれる。
【０１８１】
このように、リソース管理情報１９０Ｄには、コンポーネントの処理が実行される度に、当該コンポーネントの処理結果が追加される。なお、配信Ａコンポーネント１３３１は、リソース管理部１３６から保存結果を受け取ると、処理結果を示すデータをフロー実行部１３１に返信する。
【０１８２】
次に、フロー実行部１３１は、データを受け取ると、コンポーネント管理部１３２に対して、処理フロー情報１２００に基づくコンポーネントの取得要求を送信する（ステップＳ１１２１）。
【０１８３】
すなわち、フロー実行部１３１は、処理フロー情報１２００のフロー詳細１２０３における処理内容１２０５に指定されたコンポーネント名「メールコンポーネント」を含むコンポーネントの取得要求をコンポーネント管理部１３２に送信する。
【０１８４】
コンポーネント管理部１３２は、コンポーネントの取得要求を受け取ると、当該取得要求に含まれるコンポーネント名に対応するメールコンポーネント１３３２を生成する（ステップＳ１１２２）。なお、メールコンポーネント１３３２の生成は、コンポーネント共通Ｉ／Ｆ１３３０に定義されたコンポーネントを生成するためのＡＰＩを用いて行うことができる。
【０１８５】
そして、コンポーネント管理部１３２は、生成したメールコンポーネント１３３２をフロー実行部１３１に返信する。すなわち、コンポーネント管理部１３２は、例えば、メールコンポーネント１３３２が展開されたメモリ（例えばＲＡＭ１４）上のアドレスをフロー実行部１３１に返信する。
【０１８６】
フロー実行部１３１は、メールコンポーネント１３３２が返信されると、当該コンポーネントに入力するパラメータの取得要求をパラメータ評価部１３７に送信する（ステップＳ１１２３）。なお、当該取得要求には、メールコンポーネント１３３２のパラメータのキー「from」、「to」、「cc」、「bcc」、「subject」、及び「body」が含まれる。
【０１８７】
パラメータ評価部１３７は、パラメータの取得要求を受け取ると、当該取得要求をリソース管理部１３６に転送する（ステップＳ１１２４）。
【０１８８】
リソース管理部１３６は、パラメータの取得要求を受け取ると、リソース管理情報１９０Ｄのメールコンポーネントパラメータ１９２２から、当該取得要求に含まれるキーに対応するパラメータを取得する（ステップＳ１１２５）。
【０１８９】
すなわち、リソース管理部１３６は、パラメータの取得要求に含まれるキー「from」、「to」、「cc」、「bcc」、「subject」、及び「body」にそれぞれ対応する「"from":"hoge@fuga.com"」、「"to":"hogehoge@fuga.com"」、「"cc":null」、「"bcc":null」、「"subject":"保存先ＵＲＬの通知"」、及び「"body":"${配信Ａコンポーネント.result.fileurl}"」を含むパラメータを取得する。
【０１９０】
そして、リソース管理部１３６は、取得したパラメータをパラメータ評価部１３７に返信する。
【０１９１】
パラメータ評価部１３７は、返信されたパラメータを評価する（ステップＳ１１２６）。すなわち、パラメータ評価部１３７は、返信されたパラメータに含まれる「"from":"hoge@fuga.com"」、「"to":"hogehoge@fuga.com"」、「"cc":null」、「"bcc":null」、「"subject":"保存先ＵＲＬの通知"」、及び「"body":"${配信Ａコンポーネント.result.fileurl}"」に置換指定があるか否かを判定する。
【０１９２】
ここで、返信パラメータに含まれる「"body":"${配信Ａコンポーネント.result.fileurl}"」に置換指定がなされている。したがって、パラメータ評価部１３７は、返信されたパラメータに置換指定があると判定する。
【０１９３】
すると、パラメータ評価部１３７は、リソース管理部１３６に対して、リソースの取得要求を送信する（ステップＳ１１２７）。なお、当該取得要求には、置換指定「${配信Ａコンポーネント.result.fileurl}」が含まれる。
【０１９４】
リソース管理部１３６は、リソースの取得要求を受け取ると、当該取得要求に含まれる置換指定に基づいて、該当のキーのリソースを取得する（ステップＳ１１２８）。そして、リソース管理部１３６は、取得したリソースをパラメータ評価部１３７に返信する。
【０１９５】
すなわち、リソース管理部１３６は、「${配信Ａコンポーネント.result.fileurl}」に基づいて、図１２（ｂ）に示すリソース管理情報１９０Ｄにおける配信Ａコンポーネント１３３１の処理結果１９３１から、キー「fileurl」のリソース「http://storageA.com/folderB/file1.txt」を取得する。
【０１９６】
パラメータ評価部１３７は、リソース管理部１３６からリソースを受け取ると、置換指定がなされているリソースを、受け取ったリソースで置換する（ステップＳ１１２９）。すなわち、パラメータ評価部１３７は、「"body":"${配信Ａコンポーネント.result.fileurl}"」を、「"body":"http://storageA.com/folderB/file1.txt"」に置換する。
【０１９７】
そして、パラメータ評価部１３７は、置換後のリソースを含むパラメータをフロー実行部１３１に返信する（ステップＳ１１３０）。すなわち、パラメータ評価部１３７は、例えば図１３（ｂ）に示すパラメータ４２００をフロー実行部１３１に返信する。
【０１９８】
このように、本実施形態に係るサービス提供システム１０では、パラメータに含まれるキーに置換指定がなされている場合には、当該キーのリソースを指定されたリソースに置換する。これにより、本実施形態に係るサービス提供システム１０では、キーに依存せずに、他のコンポーネントの処理結果を利用することができるようになる。
【０１９９】
次に、フロー実行部１３１は、メールコンポーネント１３３２に対して、処理の実行要求を送信する（ステップＳ１１３１）。なお、当該実行要求には、配信Ａコンポーネント１３３１の処理結果を示すデータと、図１３（ｂ）に示すパラメータ４２００とが含まれる。
【０２００】
メールコンポーネント１３３２は、処理の実行要求を受け取ると、型変換管理部１３４に対して、型変換要求を送信する（ステップＳ１１３２）。なお、当該型変換要求には、データと、メールコンポーネント１３３２が扱うことができるデータ型を示す「LocalFilePath」の指定とが含まれる。
【０２０１】
型変換管理部１３４は、型変換要求を受け取ると、当該型変換要求に含まれるデータのデータ型と、指定されたデータ型とが一致するか否かをチェックする（ステップＳ１１３３）。
【０２０２】
ここで、受け取った型変換要求に含まれるデータのデータ型は「LocalFilePath」であり、指定されたデータ型も「LocalFilePath」である。したがって、型変換管理部１３４は、型変換要求に含まれるデータのデータ型と、指定されたデータ型とが一致するものと判断する。
【０２０３】
すると、型変換管理部１３４は、型変換要求に含まれるデータをメールコンポーネント１３３２に送信する（ステップＳ１１３４）。このように、データ型のチェック（ステップＳ１１３３の処理）においてデータ型が一致すると判断された場合、型変換管理部１３４は、型変換の生成を行わない。
【０２０４】
メールコンポーネント１３３２は、型変換管理部１３４からデータを受け取ると、処理を実行する（ステップＳ１１３５）。すなわち、メールコンポーネント１３３２は、件名が「保存先ＵＲＬの通知」、本文が「http://storageA.com/folderB/file1.txt」であるメールを、宛先「hogehoge@fuga.com」に送信する。
【０２０５】
なお、メールコンポーネント１３３２は、ドキュメントサービス部１５０のメール送信１５１に処理要求を送信し、当該メール送信１５１が、上記のメールを作成及び送信する。
【０２０６】
これにより、外部ストレージＡに保存された電子ファイルの保存先ＵＲＬが、指定された宛先にメール送信される。
【０２０７】
次に、メールコンポーネント１３３２は、処理実行が完了すると、リソース管理部１３６に対して、処理結果の保存要求を送信する（ステップＳ１１３６）。なお、当該保存要求には、メールコンポーネント１３３２の処理結果を示すデータが含まれる。
【０２０８】
リソース管理部１３６は、処理結果の保存要求を受け取ると、当該保存要求に含まれるデータに基づいて、リソース管理情報１９０Ｄに処理結果を追加する（ステップ１１３６）。そして、リソース管理部１３６は、保存結果をメールコンポーネント１３３２に返信する。
【０２０９】
すなわち、リソース管理部１３６は、図１２（ｂ）に示すように、リソース管理情報１９０Ｄの処理結果１９３に対して、メールコンポーネント１３３２の処理結果１９３２を追加する。処理結果１９３２には、メールの送信元を示す「"from":"hoge@fuga.com"」と、送信先（宛先）を示す「"to":"hogehoge@fuga.com"」と、ＣＣを示す「"cc":null」と、ＢＣＣを示す「"bcc":null」とが含まれる。また、処理結果１９３２には、件名を示す「"subject":"保存先ＵＲＬの通知"」と、本文を示す「"body":" http://storageA.com/folderB/file1.txt"」とが含まれる。
【０２１０】
このように、リソース管理情報１９０Ｄには、コンポーネントの処理が実行される度に、当該コンポーネントの処理結果が追加される。なお、メールコンポーネント１３３２は、リソース管理部１３６から保存結果を受け取ると、処理結果を示すデータをフロー実行部１３１に返信する。
【０２１１】
以上により、本実施形態に係るサービス提供システム１０では、コンポーネントが入力するパラメータに含まれるキーに置換指定がなされている場合には、当該キーのリソースを、他のコンポーネントの処理結果等に含まれるリソースで置換することができる。これにより、本実施形態に係るサービス提供システム１０では、パラメータに含まれるキーに依存することなく、任意のコンポーネントの処理結果を、他のコンポーネントがパラメータとして入力することができる。
【０２１２】
なお、例えば、上記のステップＳ１１１８において、配信Ａコンポーネント１３３１の処理の実行中にエラーが発生した場合、ステップＳ１１２０において、リソース管理情報１９０Ｄには、配信Ａコンポーネント１３３１の処理結果としてエラー情報が追加される。すなわち、例えば、入力不正により配信Ａコンポーネント１３３１でエラーが発生した場合、リソース管理情報１９０Ｄには、図１４に示すように、配信Ａコンポーネント１３３１の処理結果（エラー情報）を示す処理結果１９３３が追加される。
【０２１３】
このため、例えば、他のコンポーネントのエラー情報をパラメータとして入力するコンポーネントにおいても、上記と同様に、キーに依存することなく、任意のコンポーネントの処理結果（エラー情報）をパラメータとして入力することができる。
【０２１４】
［第二の実施形態］
次に、第二の実施形態に係る情報処理システム１について説明する。第二の実施形態は、他のコンポーネントの処理結果に対して所定の情報を付加する等の加工を行うテンプレートコンポーネントを有する点が第一の実施形態と異なる。第二の実施形態では、テンプレートコンポーネントを用いることで、例えば、保存先ＵＲＬに加えて、任意の文言をメール本文に付加した上で、指定された宛先にメールを送信することができるようになる。なお、以降では、第一の実施形態と実質的に同一の機能を有する箇所及び同一の処理を行う箇所については、第一の実施形態と同一の符号を用いて、その説明を省略する。
【０２１５】
＜機能構成＞
まず、第二の実施形態に係るロジック処理部１３０の詳細な機能構成について、図１５を参照しながら説明する。図１５は、本実施形態に係るロジック処理部１３０の一例の機能構成を示す図である。
【０２１６】
第二の実施形態に係るロジック処理部１３０は、コンポーネント群１３３にテンプレートコンポーネント１３３３が含まれる点が第一の実施形態と異なる。
【０２１７】
テンプレートコンポーネント１３３３は、処理フロー情報１２００に指定されたテンプレート情報に基づいて、他のコンポーネントの処理結果を加工する。
【０２１８】
＜処理の詳細＞
以降では、第二の実施形態に係る処理フローの実行処理の詳細について、図１６を参照しながら説明する。図１６は、本実施形態に係る処理フローの実行処理の一例を示すシーケンス図である。
【０２１９】
フロー実行部１３１は、処理フローの実行要求を受け取ると、アプリ管理部１２０に対して、処理フロー情報の取得要求を送信する（ステップＳ１６０１）。なお、本実施形態では、当該取得要求には、アプリＩＤ「app001」と、フローＩＤ「flow002」とが含まれるものとする。
【０２２０】
そして、アプリ管理部１２０は、受け取った処理フロー情報の取得要求に含まれるアプリＩＤ「app001」及びフローＩＤ「flow002」に対応する処理フロー情報１２００をアプリ情報記憶部１８０から取得して、当該処理フロー情報１２００を返信する。
【０２２１】
ここで、本実施形態では、フロー実行部１３１には、図１７に示す処理フロー情報１２００が返信されたものとする。
【０２２２】
図１７に示す処理フロー情報１２００は、アプリＩＤ「app001」のアプリ情報１０００に含まれる処理フロー情報１２００の他の例である。
【０２２３】
図１７に示す処理フロー情報１２００には、フローＩＤ１２１１と、フロー名１２１２と、フロー詳細１２１３とが含まれる。
【０２２４】
また、フロー詳細１２１３には、電子ファイルを外部ストレージＡに保存する配信処理を示す処理内容１２１４と、配信Ａコンポーネントの処理結果に対して所定の情報を付加する付加処理を示す処理内容１２１５と、保存先ＵＲＬをメールで送信するメール処理を示す処理内容１２１６とが含まれる。
【０２２５】
処理内容１２１４には、配信処理を実行するコンポーネントの名称「配信Ａコンポーネント」と、当該コンポーネントに入力されるパラメータとが指定されている。
【０２２６】
処理内容１２１５には、付加処理を実行するコンポーネントの名称「テンプレートコンポーネント」と、当該コンポーネントに入力されるパラメータと、配信Ａコンポーネントの処理結果に付加する内容を示すテンプレート情報とが指定されている。
【０２２７】
ここで、テンプレート情報は、「ファイルを外部ストレージＡに保存しました。保存先ＵＲＬは、${配信Ａコンポーネント.result.fileurl}です。」と指定されている。このように、テンプレート情報は、置換指定を、任意のテキスト等に埋め込むことで指定される。
【０２２８】
処理内容１２１６には、メール処理を実行するコンポーネントの名称「メールコンポーネント」と、当該コンポーネントに入力されるパラメータとが指定されている。
【０２２９】
次に、フロー実行部１３１は、処理フロー情報１２００を受け取ると、リソース管理部１３６に対して、リソース管理情報の保存要求を送信する（ステップＳ１６０２）。なお、当該保存要求には、ＵＩ制御部２１０から受け取った処理フローの保存要求と、処理フロー情報１２００に含まれる処理内容１２１４、処理内容１２１５、及び処理内容１２１６とが含まれる。
【０２３０】
リソース管理部１３６は、リソース管理情報の保存要求を受け取ると、当該保存要求に含まれる処理フローの実行要求と、処理内容１２１４、処理内容１２１５、及び処理内容１２１６とに基づいて、例えば図１８（ａ）に示すリソース管理情報１９０Ｄを作成する。そして、リソース管理部１３６は、作成したリソース管理情報１９０Ｄをリソース管理情報記憶部１９０に保存し（ステップＳ１６０３）、保存結果をフロー実行部１３１に返信する。
【０２３１】
ここで、図１８（ａ）に示すリソース管理情報１９０Ｄには、実行要求１９４と、パラメータ１９５と、処理結果１９６とが含まれる。
【０２３２】
実行要求１９４は、リソース管理情報の保存要求に含まれる処理フローの実行要求である。また、処理結果１９６は、各コンポーネントの処理が実行された場合に、当該処理の処理結果が保存される。
【０２３３】
パラメータ１９５には、配信Ａコンポーネントパラメータ１９５１と、テンプレートコンポーネントパラメータ１９５２と、メールコンポーネントパラメータ１９５３とが含まれる。
【０２３４】
配信Ａコンポーネントパラメータ１９５１は、処理内容１２１４と、処理フローの実行要求に含まれる入力情報とに基づいて作成される。また、メールコンポーネントパラメータ１９５３は、同様に、処理内容１２１６と、処理フローの実行要求に含まれる入力情報とに基づいて作成される。
【０２３５】
テンプレートコンポーネントパラメータ１９５２は、処理内容１２１５に基づいて作成される。すなわち、テンプレートコンポーネントパラメータ１９５２は、処理内容１２１５におけるパラメータと同様に、パラメータにはキー及びリソースが指定されてないで作成される。
【０２３６】
続くステップＳ１６０４の処理は、図１１のステップＳ１１０４〜ステップＳ１１２０の処理と同様であるため、その説明を省略する。なお、リソース管理情報１９０Ｄには、配信Ａコンポーネント１３３１の処理結果が追加されているものとする。すなわち、図１８（ｂ）に示すように、リソース管理情報１９０Ｄの処理結果１９６には、配信Ａコンポーネント１３３１の処理結果１９６１が追加されているものとする。
【０２３７】
次に、フロー実行部１３１は、配信Ａコンポーネント１３３１からデータを受け取ると、コンポーネント管理部１３２に対して、処理フロー情報１２００に基づくコンポーネントの取得要求を送信する（ステップＳ１６０５）。
【０２３８】
すなわち、フロー実行部１３１は、図１７に示す処理フロー情報１２００のフロー詳細１２１３における処理内容１２１５に指定されたコンポーネント名「テンプレートコンポーネント」を含むコンポーネントの取得要求をコンポーネント管理部１３２に送信する。
【０２３９】
コンポーネント管理部１３２は、コンポーネントの取得要求を受け取ると、当該取得要求に含まれるコンポーネント名に対応するテンプレートコンポーネント１３３３を生成する（ステップＳ１６０６）。なお、テンプレートコンポーネント１３３３の生成は、コンポーネント共通Ｉ／Ｆ１３３０に定義されたコンポーネントを生成するためのＡＰＩを用いて行うことができる。
【０２４０】
そして、コンポーネント管理部１３２は、生成したテンプレートコンポーネント１３３３をフロー実行部１３１に返信する。すなわち、コンポーネント管理部１３２は、例えば、テンプレートコンポーネント１３３３が展開されたメモリ（例えばＲＡＭ１４）上のアドレスをフロー実行部１３１に返信する。
【０２４１】
フロー実行部１３１は、テンプレートコンポーネント１３３３が返信されると、当該コンポーネントに入力するパラメータの取得要求をパラメータ評価部１３７に送信する（ステップＳ１６０７）。なお、テンプレートコンポーネント１３３３に入力されるパラメータには、キー及びリソースが含まれないため、当該取得要求にはキーが含まれない。
【０２４２】
パラメータ評価部１３７は、パラメータの取得要求を受け取ると、当該取得要求をリソース管理部１３６に転送する（ステップＳ１６０８）。すると、リソース管理部１３６は、キー及びリソースが含まれない、空のパラメータをパラメータ評価部１３７に返信する。
【０２４３】
そして、パラメータ評価部１３７は、返信されたパラメータを評価する（ステップＳ１６０９）。ここで、返信されたパラメータには、キー及びリソースが含まれないため、パラメータ評価部１３７は、返信されたパラメータに置換指定がないと判定する。
【０２４４】
すると、パラメータ評価部１３７は、リソース管理部１３６から返信されたパラメータを、フロー実行部１３１に返信する（ステップＳ１６１０）。すなわち、パラメータ評価部１３７は、例えば図１９（ａ）に示すパラメータ４３００をフロー実行部１３１に返信する。
【０２４５】
次に、フロー実行部１３１は、テンプレートコンポーネント１３３３に対して、処理の実行要求を送信する（ステップＳ１６１１）。なお、当該実行要求には、データと、図１９（ａ）に示すパラメータ４３００と、図１７に示す処理フロー情報１２００の処理内容１２１５に指定されたテンプレート情報とが含まれる。
【０２４６】
テンプレートコンポーネント１３３３は、処理の実行要求を受け取ると、型変換管理部１３４に対して、型変換要求を送信する（ステップＳ１６１２）。なお、当該型変換要求には、データと、テンプレートコンポーネント１３３３が扱うことができるデータ型を示す「LocalFilePath」の指定とが含まれる。
【０２４７】
型変換管理部１３４は、型変換要求を受け取ると、当該型変換要求に含まれるデータのデータ型と、指定されたデータ型とが一致するか否かをチェックする（ステップＳ１６１３）。
【０２４８】
ここで、受け取った型変換要求に含まれるデータのデータ型は「LocalFilePath」であり、指定されたデータ型も「LocalFilePath」である。したがって、型変換管理部１３４は、型変換要求に含まれるデータのデータ型と、指定されたデータ型とが一致するものと判断する。
【０２４９】
すると、型変換管理部１３４は、型変換要求に含まれるデータをテンプレートコンポーネント１３３３に送信する（ステップＳ１６１４）。このように、データ型のチェック（ステップＳ１６１３の処理）においてデータ型が一致すると判断された場合、型変換管理部１３４は、型変換の生成を行わない。
【０２５０】
テンプレートコンポーネント１３３３は、型変換管理部１３４からデータを受け取ると、リソース管理部１３６に対して、リソースの取得要求を送信する（ステップＳ１６１５）。なお、当該取得要求には、テンプレート情報に指定された置換指定が含まれる。すなわち、リソースの取得要求には、置換指定「${配信Ａコンポーネント.result.fileurl}」が含まれる。
【０２５１】
リソース管理部１３６は、リソースの取得要求を受け取ると、当該取得要求に含まれる置換指定に基づいて、該当のキーのリソースを取得する（ステップＳ１６１６）。そして、リソース管理部１３６は、取得したリソースをテンプレートコンポーネント１３３３に返信する。
【０２５２】
すなわち、リソース管理部１３６は、「${配信Ａコンポーネント.result.fileurl}」に基づいて、図１８（ｂ）に示すリソース管理情報１９０Ｄにおける配信Ａコンポーネント１３３１の処理結果１９６１から、キー「fileurl」のリソース「http://storageA.com/folderB/file1.txt」を取得する。
【０２５３】
テンプレートコンポーネント１３３３は、リソース管理部１３６からリソースを受け取ると、テンプレート情報に指定された置換指定を、受け取ったリソースで置換する（ステップＳ１６１７）。
【０２５４】
すなわち、テンプレートコンポーネント１３３３は、テンプレート情報「ファイルを外部ストレージＡに保存しました。保存先ＵＲＬは、${配信Ａコンポーネント.result.fileurl}です。」を、「ファイルを外部ストレージＡに保存しました。保存先ＵＲＬは、http://storageA.com/folderB/file1.txtです。」に置換する。
【０２５５】
そして、テンプレートコンポーネント１３３３は、リソース管理部１３６に対して、処理結果の保存要求を送信する（ステップＳ１６１８）。なお、当該保存要求には、テンプレートコンポーネント１３３３の処理結果である置換後のテンプレート情報を示すデータが含まれる。
【０２５６】
リソース管理部１３６は、処理結果の保存要求を受け取ると、当該保存要求に含まれるデータに基づいて、リソース管理情報１９０Ｄに処理結果を追加する（ステップ１６１９）。そして、リソース管理部１３６は、保存結果をテンプレートコンポーネント１３３３に返信する。
【０２５７】
すなわち、リソース管理部１３６は、図１８（ｂ）に示すように、リソース管理情報１９０Ｄの処理結果１９６に対して、テンプレートコンポーネント１３３３の処理結果１９６２を追加する。処理結果１９６２には、置換後のテンプレート情報を示す「"template":"ファイルを外部ストレージＡに保存しました。保存先ＵＲＬは、http://storageA.com/folderB/file1.txtです。"」が含まれる。なお、テンプレートコンポーネント１３３３は、リソース管理部１３６から保存結果を受け取ると、処理結果を示すデータをフロー実行部１３１に返信する。
【０２５８】
このように、テンプレートコンポーネント１３３３は、置換指定が埋め込まれたテンプレート情報を用いることで、他のコンポーネントの処理結果に対して、任意の文字、記号、数字等を付加する等の加工を行うことができる。
【０２５９】
次に、フロー実行部１３１は、データを受け取ると、コンポーネント管理部１３２に対して、処理フロー情報１２００に基づくコンポーネントの取得要求を送信する（ステップＳ１６２０）。
【０２６０】
すなわち、フロー実行部１３１は、処理フロー情報１２００のフロー詳細１２１３における処理内容１２１６に指定されたコンポーネント名「メールコンポーネント」を含むコンポーネントの取得要求をコンポーネント管理部１３２に送信する。
【０２６１】
コンポーネント管理部１３２は、コンポーネントの取得要求を受け取ると、当該取得要求に含まれるコンポーネント名に対応するメールコンポーネント１３３２を生成する（ステップＳ１６２１）。なお、メールコンポーネント１３３２の生成は、コンポーネント共通Ｉ／Ｆ１３３０に定義されたコンポーネントを生成するためのＡＰＩを用いて行うことができる。
【０２６２】
そして、コンポーネント管理部１３２は、生成したメールコンポーネント１３３２をフロー実行部１３１に返信する。すなわち、コンポーネント管理部１３２は、例えば、メールコンポーネント１３３２が展開されたメモリ（例えばＲＡＭ１４）上のアドレスをフロー実行部１３１に返信する。
【０２６３】
フロー実行部１３１は、メールコンポーネント１３３２が返信されると、当該コンポーネントに入力するパラメータの取得要求をパラメータ評価部１３７に送信する（ステップＳ１６２２）。なお、当該取得要求には、メールコンポーネント１３３２のパラメータのキー「from」、「to」、「cc」、「bcc」、「subject」、及び「body」が含まれる。
【０２６４】
パラメータ評価部１３７は、パラメータの取得要求を受け取ると、当該取得要求をリソース管理部１３６に転送する（ステップＳ１６２３）。
【０２６５】
リソース管理部１３６は、パラメータの取得要求を受け取ると、に示すリソース管理情報１９０Ｄのメールコンポーネントパラメータ１９５３から、当該取得要求に含まれるキーに対応するパラメータを取得する（ステップＳ１６２４）。
【０２６６】
すなわち、リソース管理部１３６は、パラメータの取得要求に含まれるキー「from」、「to」、「cc」、「bcc」、「subject」、及び「body」にそれぞれ対応する「"from":"hoge@fuga.com"」、「"to":"hogehoge@fuga.com"」、「"cc":null」、「"bcc":null」、「"subject":"保存先ＵＲＬの通知"」、及び「"body":"${テンプレートコンポーネント.result.template}"」を含むパラメータを取得する。
【０２６７】
そして、リソース管理部１３６は、取得したパラメータをパラメータ評価部１３７に返信する。
【０２６８】
パラメータ評価部１３７は、返信されたパラメータを評価する（ステップＳ１６２５）。すなわち、パラメータ評価部１３７は、返信されたパラメータに含まれる「"from":"hoge@fuga.com"」、「"to":"hogehoge@fuga.com"」、「"cc":null」、「"bcc":null」、「"subject":"保存先ＵＲＬの通知"」、及び「"body":"${テンプレートコンポーネント.result.template}"」に置換指定があるか否かを判定する。
【０２６９】
ここで、返信パラメータに含まれる「"body":"${テンプレートコンポーネント.result.template}"」に置換指定がなされている。したがって、パラメータ評価部１３７は、返信されたパラメータに置換指定があると判定する。
【０２７０】
すると、パラメータ評価部１３７は、リソース管理部１３６に対して、リソースの取得要求を送信する（ステップＳ１６２６）。なお、当該取得要求には、置換指定「${テンプレートコンポーネント.result.template}」が含まれる。
【０２７１】
リソース管理部１３６は、リソースの取得要求を受け取ると、当該取得要求に含まれる置換指定に基づいて、該当のキーのリソースを取得する（ステップＳ１６２７）。そして、リソース管理部１３６は、取得したリソースをパラメータ評価部１３７に返信する。
【０２７２】
すなわち、リソース管理部１３６は、リソースの取得要求に含まれる置換指定に基づいて、図１８（ｂ）に示すリソース管理情報１９０Ｄにおけるテンプレートコンポーネント１３３３の処理結果１９６２から、キー「template」のリソースを取得する。これにより、リソース管理部１３６は、リソース「ファイルを外部ストレージＡに保存しました。保存先ＵＲＬは、http://storageA.com/folderB/file1.txtです。」を取得して、パラメータ評価部１３７に返信する。
【０２７３】
パラメータ評価部１３７は、リソース管理部１３６からリソースを受け取ると、置換指定がなされているリソースを、受け取ったリソースで置換する（ステップＳ１６２８）。
【０２７４】
すなわち、パラメータ評価部１３７は、「"body":"${テンプレートコンポーネント.result.template}"」を、「"body":"ファイルを外部ストレージＡに保存しました。保存先ＵＲＬは、http://storageA.com/folderB/file1.txtです。"」に置換する。
【０２７５】
そして、パラメータ評価部１３７は、置換後のリソースを含むパラメータをフロー実行部１３１に返信する（ステップＳ１６２９）。すなわち、パラメータ評価部１３７は、例えば図１９（ｂ）に示すパラメータ４４００をフロー実行部１３１に返信する。
【０２７６】
次に、フロー実行部１３１は、メールコンポーネント１３３２に対して、処理の実行要求を送信する（ステップＳ１６３０）。なお、当該実行要求には、テンプレートコンポーネント１３３３の処理結果を示すデータと、図１９（ｂ）に示すパラメータ４４００とが含まれる。
【０２７７】
続くステップＳ１１３２〜ステップＳ１１３４の処理は、図１１と同様であるため、その説明を省略する。
【０２７８】
メールコンポーネント１３３２は、型変換管理部１３４からデータを受け取ると、処理を実行する（ステップＳ１６３１）。すなわち、メールコンポーネント１３３２は、件名が「保存先ＵＲＬの通知」、本文が「ファイルを外部ストレージＡに保存しました。保存先ＵＲＬは、http://storageA.com/folderB/file1.txtです。」であるメールを、宛先「hogehoge@fuga.com」に送信する。
【０２７９】
なお、メールコンポーネント１３３２は、ドキュメントサービス部１５０のメール送信１５１に処理要求を送信し、当該メール送信１５１が、上記のメールを作成及び送信する。
【０２８０】
これにより、外部ストレージＡに保存された電子ファイルの保存先ＵＲＬが、指定された宛先にメール送信される。しかも、本実施形態に係るサービス提供システム１０では、保存先ＵＲＬに対して、任意の文字等を付加した上でメール送信することができる。
【０２８１】
次に、メールコンポーネント１３３２は、処理実行が完了すると、リソース管理部１３６に対して、処理結果の保存要求を送信する（ステップＳ１６３２）。なお、当該保存要求には、メールコンポーネント１３３２の処理結果を示すデータが含まれる。
【０２８２】
リソース管理部１３６は、処理結果の保存要求を受け取ると、当該保存要求に含まれるデータに基づいて、リソース管理情報１９０Ｄに処理結果を追加する（ステップ１６３３）。そして、リソース管理部１３６は、保存結果をメールコンポーネント１３３２に返信する。
【０２８３】
すなわち、リソース管理部１３６は、図１８（ｂ）に示すように、リソース管理情報１９０Ｄの処理結果１９６に対して、メールコンポーネント１３３２の処理結果１９６３を追加する。処理結果１９６３には、メールの送信元を示す「"from":"hoge@fuga.com"」と、送信先（宛先）を示す「"to":"hogehoge@fuga.com"」と、ＣＣを示す「"cc":null」と、ＢＣＣを示す「"bcc":null」とが含まれる。また、処理結果１９３２には、件名を示す「"subject":"保存先ＵＲＬの通知"」と、本文を示す「"body":" ファイルを外部ストレージＡに保存しました。保存先ＵＲＬは、http://storageA.com/folderB/file1.txtです。"」とが含まれる。なお、メールコンポーネント１３３２は、リソース管理部１３６から保存結果を受け取ると、処理結果を示すデータをフロー実行部１３１に返信する。
【０２８４】
以上により、本実施形態に係るサービス提供システム１０では、任意のコンポーネントの処理結果に対して所定の加工を施した上で、他のコンポーネントがパラメータとして入力することができる。
【０２８５】
本発明は、具体的に開示された上記の実施形態に限定されるものではなく、特許請求の範囲から逸脱することなく、種々の変形や変更が可能である。
【符号の説明】
【０２８６】
１        情報処理システム
１０      サービス提供システム
２０      機器
３０      外部ストレージシステム
１１０    サービス処理部
１２０    アプリ管理部
１３０    ロジック処理部
１３１    フロー実行部
１３２    コンポーネント管理部
１３３    コンポーネント群
１３４    型変換管理部
１３５    型変換群
１３６    リソース管理部
１３７    パラメータ評価部
１４０    データＩ／Ｆ部
１５０    ドキュメントサービス部
１６０    外部ストレージ連携部
１８０    アプリ情報記憶部
１９０    リソース管理情報記憶部
２１０    ＵＩ制御部
２２０    スキャン処理部
１０００  アプリ情報
１１００  画面定義情報
１２００  処理フロー情報
２０００  型変換情報テーブル
【先行技術文献】
【特許文献】
【０２８７】
【特許文献１】特許第５１１２０８５号公報
【図１】
0006724630.tif 000002
【図２】
0006724630.tif 000003
【図３】
0006724630.tif 000004
【図４】
0006724630.tif 000005
【図５】
0006724630.tif 000006
【図６】
0006724630.tif 000007
【図７】
0006724630.tif 000008
【図８】
0006724630.tif 000009
【図９】
0006724630.tif 000010
【図１０】
0006724630.tif 000011
【図１１】
0006724630.tif 000012
【図１２】
0006724630.tif 000013
【図１３】
0006724630.tif 000014
【図１４】
0006724630.tif 000015
【図１５】
0006724630.tif 000016
【図１６】
0006724630.tif 000017
【図１７】
0006724630.tif 000018
【図１８】
0006724630.tif 000019
【図１９】
0006724630.tif 000020