(57)【要約】【課題】反復が含まれる一連の処理を実行する。【解決手段】所定の処理を実行するプログラムを有する情報処理システムであって、電子データを用いた一連の処理毎に、１以上の前記プログラムを識別するプログラム識別情報と、実行順とが定義されたフロー情報を、フロー識別情報とを関連付けて記憶する記憶手段と、一の機器から、電子データに関する情報と、前記フロー識別情報とを受信する受信手段と、前記フロー識別情報と関連付けられている前記フロー情報を取得する取得手段と、取得された前記フロー情報に定義されている前記プログラム識別情報が識別する前記プログラムを、前記実行順に従って実行させて、前記電子データを用いた一連の処理を実行する実行手段とを有し、前記実行手段は、前記一連の処理に１以上の処理の繰り返しが含まれる場合、該繰り返しの条件に応じて、前記１以上の処理を繰り返し実行する。【選択図】図９
2017168082.tif 000002
【特許請求の範囲】
【請求項１】
１以上の情報処理装置を含み、所定の処理をそれぞれ実行する複数のプログラムを有する情報処理システムであって、
電子データを用いた一連の処理毎に、該一連の処理のそれぞれの処理を実行する１以上の前記プログラムを識別する第１のプログラム識別情報と、１以上の前記プログラムの第１の実行順とが定義されたフロー情報を、該フロー情報を識別するフロー識別情報とを関連付けて記憶する記憶手段と、
前記情報処理システムに接続される１以上の機器のうちの一の機器から、前記一連の処理に用いられる電子データに関する情報と、前記フロー識別情報とを受信する受信手段と、
前記記憶手段に記憶されているフロー情報のうち、前記受信手段により受信された前記フロー識別情報と関連付けて記憶されているフロー情報を取得する取得手段と、
前記取得手段により取得された前記フロー情報に定義されている前記第１のプログラム識別情報により識別される前記プログラムそれぞれを、前記フロー情報に定義されている前記第１の実行順に従って実行させることで、前記電子データに関する情報に基づく電子データを用いた一連の処理を実行する実行手段とを有し、
前記実行手段は、
前記一連の処理に１以上の処理の繰り返しが含まれる場合、該繰り返しの条件に応じて、前記１以上の処理を繰り返し実行する、情報処理システム。
【請求項２】
前記実行手段は、
前記１以上の処理をそれぞれ実行する前記プログラムを識別する第２のプログラム識別情報と、前記１以上の処理をそれぞれ実行する前記プログラムの第２の実行順と、前記繰り返しの条件とが前記フロー情報に定義されている場合、該繰り返しの条件に応じて、前記フロー情報に定義されている前記第２のプログラム識別情報により識別される前記プログラムそれぞれを、前記第２の実行順に従って実行させることで、前記１以上の処理を繰り返し実行する、請求項１に記載の情報処理システム。
【請求項３】
前記プログラムには、
前記１以上の処理を繰り返し実行させる反復プログラムを含み、
前記実行手段は、
前記反復プログラムを識別する第１のプログラム識別情報が前記フロー情報に定義されている場合、前記反復プログラムが、前記繰り返しの条件に応じて、前記１以上の処理を繰り返し実行させる、請求項１又は２に記載の情報処理システム。
【請求項４】
前記実行手段は、
電子データに対して、該電子データのデータ型を所定のデータ型に変換する型変換手段を１以上有し、
前記電子データのデータ型を、前記型変換手段により前記プログラムが処理可能なデータ型に変換した後、前記プログラムが処理を実行することにより、前記電子データを用いた前記一連の処理を実行する、請求項１乃至３の何れか１項に記載の情報処理システム。
【請求項５】
前記プログラムには、外部サービスに関する処理を実行するプログラムを含み、
前記外部サービスに関する処理を実行するプログラムは、
外部サービスに格納されている電子データの格納先アドレスを取得する処理を実行するプログラムを少なくとも含む、請求項１乃至４の何れか１項に記載の情報処理システム。
【請求項６】
所定の処理をそれぞれ実行する複数のプログラムを有する情報処理装置であって、
電子データを用いた一連の処理毎に、該一連の処理のそれぞれの処理を実行する１以上の前記プログラムを識別するプログラム識別情報と、１以上の前記プログラムの実行順とが定義されたフロー情報を、該フロー情報を識別するフロー識別情報とを関連付けて記憶する記憶手段と、
前記情報処理装置に接続される１以上の機器のうちの一の機器から、前記一連の処理に用いられる電子データに関する情報と、前記フロー識別情報とを受信する受信手段と、
前記記憶手段に記憶されているフロー情報のうち、前記受信手段により受信された前記フロー識別情報と関連付けて記憶されているフロー情報を取得する取得手段と、
前記取得手段により取得された前記フロー情報に定義されている前記プログラム識別情報により識別される前記プログラムそれぞれを、前記フロー情報に定義されている前記実行順に従って実行させることで、前記電子データに関する情報に基づく電子データを用いた一連の処理を実行する実行手段とを有し、
前記実行手段は、
前記一連の処理に１以上の処理の繰り返しが含まれる場合、該繰り返しの条件に応じて、前記１以上の処理を繰り返し実行する、情報処理装置。
【請求項７】
１以上の情報処理装置を含み、所定の処理をそれぞれ実行する複数のプログラムを有する情報処理システムであって、電子データを用いた一連の処理毎に、該一連の処理のそれぞれの処理を実行する１以上の前記プログラムを識別するプログラム識別情報と、１以上の前記プログラムの実行順とが定義されたフロー情報を、該フロー情報を識別するフロー識別情報とを関連付けて記憶する記憶手段を有する情報処理システムに用いられる情報処理方法において、
前記情報処理システムに接続される１以上の機器のうちの一の機器から、前記一連の処理に用いられる電子データに関する情報と、前記フロー識別情報とを受信する受信手順と、
前記記憶手段に記憶されているフロー情報のうち、前記受信手順により受信された前記フロー識別情報と関連付けて記憶されているフロー情報を取得する取得手順と、
前記取得手順により取得された前記フロー情報に定義されている前記プログラム識別情報により識別される前記プログラムそれぞれを、前記フロー情報に定義されている前記実行順に従って実行させることで、前記電子データに関する情報に基づく電子データを用いた一連の処理を実行する実行手順とを有し、
前記実行手順は、
前記一連の処理に１以上の処理の繰り返しが含まれる場合、該繰り返しの条件に応じて、前記１以上の処理を繰り返し実行する、情報処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理システム、情報処理装置、及び情報処理方法に関する。
【背景技術】
【０００２】
近年、クラウドコンピューティング等により多種多様な外部サービスが提供されるようになった。例えば、ユーザにより指定された電子データを外部のストレージに保管する外部サービス等が知られている。
【０００３】
また、予め定義された事務フローモデルに基づき、各種処理を実行するコンポーネントを制御するための事務フローを生成する技術が知られている（例えば特許文献１参照）。このような技術では、生成された事務フローによりコンポーネントが組み合わされて、事務処理を実現する一連の処理が実行される。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、上記の従来技術では、一連の処理において、１以上の処理の繰り返し（反復）が含まれる場合には、当該一連の処理を実行することができない場合があった。例えば、あるコンポーネントの処理結果に応じて、当該１以上の処理の繰り返し回数が動的に異なるようにすることはできなかった。
【０００５】
本発明の一実施形態は、上記の点に鑑みてなされたもので、反復が含まれる一連の処理を実行することを目的とする。
【課題を解決するための手段】
【０００６】
上記目的を達成するため、本発明の一実施形態は、１以上の情報処理装置を含み、所定の処理をそれぞれ実行する複数のプログラムを有する情報処理システムであって、電子データを用いた一連の処理毎に、該一連の処理のそれぞれの処理を実行する１以上の前記プログラムを識別する第１のプログラム識別情報と、１以上の前記プログラムの第１の実行順とが定義されたフロー情報を、該フロー情報を識別するフロー識別情報とを関連付けて記憶する記憶手段と、前記情報処理システムに接続される１以上の機器のうちの一の機器から、前記一連の処理に用いられる電子データに関する情報と、前記フロー識別情報とを受信する受信手段と、前記記憶手段に記憶されているフロー情報のうち、前記受信手段により受信された前記フロー識別情報と関連付けて記憶されているフロー情報を取得する取得手段と、前記取得手段により取得された前記フロー情報に定義されている前記第１のプログラム識別情報により識別される前記プログラムそれぞれを、前記フロー情報に定義されている前記第１の実行順に従って実行させることで、前記電子データに関する情報に基づく電子データを用いた一連の処理を実行する実行手段とを有し、前記実行手段は、前記一連の処理に１以上の処理の繰り返しが含まれる場合、該繰り返しの条件に応じて、前記１以上の処理を繰り返し実行する。
【発明の効果】
【０００７】
本発明の実施の形態によれば、反復が含まれる一連の処理を実行することができる。
【図面の簡単な説明】
【０００８】
【図１】第一の実施形態に係る情報処理システムの一例のシステム構成を示す図である。
【図２】第一の実施形態に係るサービス提供システムの一例のハードウェア構成を示す図である。
【図３】第一の実施形態に係る機器の一例のハードウェア構成を示す図である。
【図４】第一の実施形態に係る情報処理システムの一例の機能構成を示す図である。
【図５】共通Ｉ／Ｆ及び固有Ｉ／Ｆの一例を説明するための図である。
【図６】第一の実施形態に係るロジック処理部の一例の機能構成を示す図である。
【図７】型変換情報テーブルの一例を示す図である。
【図８】「ＯＣＲ配信１」サービスを実現する処理フローが定義された処理フロー情報の一例を示す図である。
【図９】「ＯＣＲ配信１」サービスを実現する処理フローの一例を説明するための図である。
【図１０】第一の実施形態に係る「ＯＣＲ配信１」サービスを利用する場合の全体処理の一例を示すシーケンス図である。
【図１１】サービス一覧画面から、「ＯＣＲ配信１」サービスのサービス画面への画面遷移の一例を示す図である。
【図１２】第一の実施形態に係る親フローの実行処理の一例を示すシーケンス図である。
【図１３】第一の実施形態に係るリスト取得コンポーネントの実行処理の一例を示すシーケンス図である。
【図１４】リソース管理情報の一例を示す図である。
【図１５】第一の実施形態に係るメール配信コンポーネントの実行処理の一例を示すシーケンス図である。
【図１６】第一の実施形態に係る反復コンポーネントの実行処理の一例を示すシーケンス図である。
【図１７】第一の実施形態に係る子フローの実行処理の一例を示すシーケンス図である。
【図１８】「ＯＣＲ配信１」サービスを実現する処理フローの他の例を説明するための図である。
【図１９】「ＯＣＲ配信１」サービスを実現する処理フローが定義された処理フロー情報の他の例を示す図（その１）である。
【図２０】第一の実施形態に係る反復コンポーネントの実行処理の他の例を示すシーケンス図（その１）である。
【図２１】「ＯＣＲ配信１」サービスを実現する処理フローが定義された処理フロー情報の他の例を示す図（その２）である。
【図２２】第一の実施形態に係る反復コンポーネントの実行処理の他の例を示すシーケンス図（その２）である。
【図２３】第二の実施形態に係るロジック処理部の一例の機能構成を示す図である。
【図２４】「ＯＣＲ配信２」サービスを実現する処理フロー（親フロー）が定義された処理フロー情報の一例を示す図である。
【図２５】「ＯＣＲ配信２」サービスを実現する処理フロー（子フロー）が定義された処理フロー情報の一例を示す図である。
【図２６】「ＯＣＲ配信２」サービスを実現する処理フローの一例を説明するための図である。
【図２７】第二の実施形態に係る「ＯＣＲ配信２」サービスを利用する場合の全体処理の一例を示すシーケンス図である。
【図２８】「ＯＣＲ配信２」サービスのサービス画面の一例を示す図である。
【図２９】第二の実施形態に係る親フローの実行処理の一例を示すシーケンス図である。
【図３０】第二の実施形態に係るフロー実行コンポーネントの実行処理の一例を示すシーケンス図である。
【図３１】第二の実施形態に係る子フローの実行処理の一例を示すシーケンス図である。
【図３２】「ＯＣＲ配信２」サービスを実現する処理フロー（親フロー）が定義された処理フロー情報の他の例を示す図である。
【図３３】第二の実施形態に係るフロー実行コンポーネントの実行処理の他の例を示すシーケンス図である。
【発明を実施するための形態】
【０００９】
以下、本発明の実施形態について、図面を参照しながら詳細に説明する。
【００１０】
［第一の実施形態］
＜システム構成＞
まず、本実施形態に係る情報処理システム１のシステム構成について、図１を参照しながら説明する。図１は、本実施形態に係る情報処理システム１の一例のシステム構成を示す図である。
【００１１】
図１に示す情報処理システム１は、サービス提供システム１０と、機器２０と、外部ストレージシステム３０とを含み、インターネット等の広域的なネットワークＮ１を介して通信可能に接続されている。
【００１２】
サービス提供システム１０は、一台以上の情報処理装置で実現され、ネットワークＮ１を介して、クラウドサービス等の外部サービスと連携した一連の処理により実現される各種のサービスを提供する。
【００１３】
本実施形態に係るサービス提供システム１０が提供するサービスの具体例については後述する。なお、以降では、一連の処理を「処理フロー」とも表す。
【００１４】
なお、本実施形態では、外部サービスの具体例としてクラウドサービスを採用して説明するが、これに限られない。本実施形態は、例えば、ＡＳＰ（Application Service Provider）によって提供されるサービスやＷｅｂサービス等のネットワークを介して提供される各種の外部サービスに関して適用されても良い。
【００１５】
機器２０は、ユーザが使用する各種の電子機器である。すなわち、機器２０は、例えば、ＭＦＰ（Multifunction Peripheral）等の画像形成装置、ＰＣ（パーソナルコンピュータ）、プロジェクタ、電子黒板、デジタルカメラ等である。ユーザは、機器２０を用いて、サービス提供システム１０が提供する各種のサービスを利用することができる。
【００１６】
なお、以降では、複数の機器２０について、各々を区別するときは、「機器２０１」、「機器２０２」等と添え字を用いて記載する。
【００１７】
外部ストレージシステム３０は、ネットワークＮ１を介してストレージサービス（又はオンラインストレージ）と呼ばれるクラウドサービスを提供するコンピュータシステムである。ストレージサービスとは、外部ストレージシステム３０のストレージの記憶領域を貸し出すサービスである。
【００１８】
なお、以降では、複数の外部ストレージシステム３０について、各々を区別するときは、「外部ストレージシステム３０１」、「外部ストレージシステム３０２」等と添え字を用いて記載する。また、外部ストレージシステム３０１により提供されるストレージサービスの名称を「ストレージＡ」、外部ストレージシステム３０１により提供されるストレージサービスの名称を「ストレージＢ」等とする。
【００１９】
なお、外部ストレージシステム３０は、複数台の情報処理装置によって実現されるシステムであっても良い。
【００２０】
また、図１に示す情報処理システム１の構成は一例であって、他の構成であっても良い。例えば、本実施形態に係る情報処理システム１には、電子データの入力及び出力の少なくとも一方を行う各種機器が含まれ、これらの機器がサービス提供システム１０により提供される各種サービスを利用しても良い。
【００２１】
＜ハードウェア構成＞
次に、本実施形態に係る情報処理システム１に含まれるサービス提供システム１０のハードウェア構成について、図２を参照しながら説明する。図２は、本実施形態に係るサービス提供システム１０の一例のハードウェア構成を示す図である。
【００２２】
図２に示すサービス提供システム１０は、入力装置１１と、表示装置１２と、外部Ｉ／Ｆ１３と、ＲＡＭ（Random Access Memory）１４とを有する。また、サービス提供システム１０は、ＲＯＭ（Read Only Memory）１５と、ＣＰＵ（Central Processing Unit）１６と、通信Ｉ／Ｆ１７と、ＨＤＤ（Hard Disk Drive）１８とを有する。これらの各ハードウェアは、それぞれがバスＢで接続されている。
【００２３】
入力装置１１は、キーボードやマウス、タッチパネル等を含み、ユーザが各操作信号を入力するのに用いられる。表示装置１２は、ディスプレイ等を含み、サービス提供システム１０による処理結果を表示する。なお、入力装置１１及び表示装置１２の少なくとも一方は、必要なときにサービス提供システム１０に接続して利用する形態であっても良い。
【００２４】
通信Ｉ／Ｆ１７は、サービス提供システム１０をネットワークＮ１に接続するインタフェースである。これにより、サービス提供システム１０は、通信Ｉ／Ｆ１７を介して通信を行うことができる。
【００２５】
ＨＤＤ１８は、プログラムやデータを格納している不揮発性の記憶装置である。ＨＤＤ１８に格納されるプログラムやデータには、サービス提供システム１０全体を制御する基本ソフトウェアであるＯＳ（Operating System）、ＯＳ上において各種機能を提供するアプリケーションソフトウェア等がある。
【００２６】
なお、サービス提供システム１０は、ＨＤＤ１８に代え、記憶媒体としてフラッシュメモリを用いるドライブ装置（例えばソリッドステートドライブ：ＳＳＤ）を利用するものであっても良い。また、ＨＤＤ１８は、格納しているプログラムやデータを所定のファイルシステム及び／又はＤＢにより管理している。
【００２７】
外部Ｉ／Ｆ１３は、外部装置とのインタフェースである。外部装置には、記録媒体１３ａ等がある。これにより、サービス提供システム１０は、外部Ｉ／Ｆ１３を介して記録媒体１３ａの読み取りや書き込みを行うことができる。記録媒体１３ａには、フレキシブルディスク、ＣＤ、ＤＶＤ、ＳＤメモリカード、ＵＳＢメモリ等がある。
【００２８】
ＲＯＭ１５は、電源を切ってもプログラムやデータを保持することができる不揮発性の半導体メモリである。ＲＯＭ１５には、サービス提供システム１０の起動時に実行されるＢＩＯＳ（Basic Input/Output System）、ＯＳ設定、及びネットワーク設定等のプログラムやデータが格納されている。ＲＡＭ１４は、プログラムやデータを一時保持する揮発性の半導体メモリである。
【００２９】
ＣＰＵ１６は、ＲＯＭ１５やＨＤＤ１８等の記憶装置からプログラムやデータをＲＡＭ１４上に読み出し、処理を実行することで、サービス提供システム１０全体の制御や機能を実現する演算装置である。
【００３０】
本実施形態に係るサービス提供システム１０は、図２に示すハードウェア構成を有することにより、後述するような各種処理を実現できる。
【００３１】
次に、本実施形態に係る情報処理システム１に含まれる機器２０が画像形成装置である場合のハードウェア構成について、図３を参照しながら説明する。図３は、本実施形態に係る機器２０の一例のハードウェア構成を示す図である。
【００３２】
図３に示す機器２０は、コントローラ２１と、操作パネル２２と、外部Ｉ／Ｆ２３と、通信Ｉ／Ｆ２４と、プリンタ２５と、スキャナ２６とを有する。また、コントローラ２１は、ＣＰＵ３１と、ＲＡＭ３２と、ＲＯＭ３３と、ＮＶＲＡＭ３４と、ＨＤＤ３５とを有する。
【００３３】
ＲＯＭ３３は、各種プログラムやデータを格納している不揮発性の半導体メモリである。ＲＡＭ３２は、プログラムやデータを一時保持する揮発性の半導体メモリである。ＮＶＲＡＭ３４は、例えば設定情報等を格納している。また、ＨＤＤ３５は、各種プログラムやデータを格納している不揮発性の記憶装置である。
【００３４】
ＣＰＵ３１は、ＲＯＭ３３やＮＶＲＡＭ３４、ＨＤＤ３５等からプログラムやデータ、設定情報等をＲＡＭ３２上に読み出し、処理を実行することで、機器２０全体の制御や機能を実現する演算装置である。
【００３５】
操作パネル２２は、ユーザからの入力を受け付ける入力部と、表示を行う表示部とを備えている。外部Ｉ／Ｆ２３は、外部装置とのインタフェースである。外部装置には、記録媒体２３ａ等がある。これにより、機器２０は、外部Ｉ／Ｆ２３を介して記録媒体２３ａの読み取り及び／又は書き込みを行うことができる。なお、記録媒体２３ａには、例えば、ＩＣカード、フレキシブルディスク、ＣＤ、ＤＶＤ、ＳＤメモリカード、ＵＳＢメモリ等がある。
【００３６】
通信Ｉ／Ｆ２４は、機器２０をネットワークに接続するインタフェースである。これにより、機器２０は、通信Ｉ／Ｆ２４を介して通信を行うことができる。プリンタ２５は、印刷データを印刷する印刷装置である。スキャナ２６は、原稿を読み取って電子ファイル（画像ファイル）を生成する読取装置である。
【００３７】
本実施形態に係る機器２０は、図３に示すハードウェア構成を有することにより、後述するような各種処理を実現できる。
【００３８】
＜サービス提供システムが提供するサービス＞
ここで、本実施形態に係るサービス提供システム１０が提供するサービスについて説明する。なお、以降では、機器２０が画像形成装置であるものとして説明する。
【００３９】
本実施形態に係るサービス提供システム１０は、例えば、外部ストレージシステム３０における電子ファイルの格納先リストを取得した上で、当該リストに基づいて取得した電子ファイルをＯＣＲ（Optical Character Recognition）処理して、メール配信するサービスを提供する。
【００４０】
本実施形態に係るサービス提供システム１０は、上述したサービス（以降では、「ＯＣＲ配信１」サービス、又は、単に「ＯＣＲ配信１」とも表す。）を提供するものとして説明する。
【００４１】
ただし、サービス提供システム１０により提供されるサービスは、これに限られない。例えば、サービス提供システム１０は、外部ストレージシステム３０における電子ファイルの格納先リストを取得した上で、当該リストに基づいて取得した電子ファイルを編集（例えば、所定の情報の追加や削除等）して、メール配信するサービスを提供しても良い。
【００４２】
また、例えば、サービス提供システム１０は、外部ストレージシステム３０における電子ファイルの格納先リストを取得した上で、当該リストに基づいて取得した電子ファイルを圧縮して、メール配信するサービスを提供しても良い。
【００４３】
このように、本実施形態に係るサービス提供システム１０は、外部ストレージシステム３０と連携した各種のサービスを提供する。
【００４４】
＜機能構成＞
次に、本実施形態に係る情報処理システム１の機能構成について、図４を参照しながら説明する。図４は、本実施形態に係る情報処理システム１の一例の機能構成を示す図である。
【００４５】
図４に示す機器２０は、例えばＣＰＵ３１等により実行されるブラウザ２１０を有する。機器２０のユーザは、ブラウザ２１０を介して、サービス提供システム１０が提供するサービスを利用することができる。このように、本実施形態に係る機器２０は、ブラウザ２１０が搭載されていれば良い。
【００４６】
図４に示すサービス提供システム１０は、入出力サービス処理部１１０と、Ｗｅｂサービス処理部１２０と、ドキュメントサービス部１３０と、外部サービス連携部１４０とを有する。これら各部は、サービス提供システム１０にインストールされた１以上のプログラムが、ＣＰＵ１６に実行させる処理により実現される。
【００４７】
また、図４に示すサービス提供システム１０は、アプリ情報記憶部１５０と、画面情報記憶部１６０と、リソース管理情報記憶部１７０とを有する。これら各記憶部は、ＨＤＤ１８により実現可能である。なお、アプリ情報記憶部１５０、画面情報記憶部１６０、及びリソース管理情報記憶部１７０の少なくとも１つの記憶部が、サービス提供システム１０とネットワークＮ１を介して接続される記憶装置等により実現されていても良い。
【００４８】
入出力サービス処理部１１０は、サービス提供システム１０が提供するサービスに関する処理を行う。ここで、入出力サービス処理部１１０は、アプリ管理部１１１と、ロジック処理部１１２と、データＩ／Ｆ部１１３とを有する。
【００４９】
アプリ管理部１１１は、アプリ情報記憶部１５０に記憶されているアプリ情報１０００を管理する。なお、アプリ情報１０００とは、各種のサービスを提供するアプリケーションである。すなわち、サービス提供システム１０が提供する各種のサービスは、アプリ情報１０００により提供される。
【００５０】
また、アプリ管理部１１１は、ロジック処理部１１２からの要求に応じて、アプリ情報１０００に含まれる処理フロー情報１１００を返信する。なお、処理フロー情報１１００は、アプリ情報１０００により提供されるサービスを実現する一連の処理（以降では、一連の処理を「処理フロー」とも表す。）が定義された情報である。
【００５１】
ロジック処理部１１２は、Ｗｅｂサービス処理部１２０からの要求に応じて、アプリ管理部１１１から処理フロー情報１１００を取得する。そして、ロジック処理部１１２は、取得した処理フロー情報１１００に基づいて、サービスを実現する処理フローを実行する。これにより、本実施形態に係る情報処理システム１では、サービス提供システム１０により各種のサービスが提供される。なお、ロジック処理部１１２の詳細については後述する。
【００５２】
データＩ／Ｆ部１１３は、Ｗｅｂサービス処理部１２０やロジック処理部１１２からの要求に応じて、外部サービス連携部１４０のデータ処理部１４２に各種の要求を行う。例えば、データＩ／Ｆ部１１３は、外部サービス連携部１４０のデータ処理部１４２に、電子ファイルの格納先の一覧（すなわち、電子ファイルの格納先リスト）を示すファイル一覧の取得要求を行う。
【００５３】
Ｗｅｂサービス処理部１２０は、ブラウザ２１０からの要求に応じて、画面情報記憶部１６０に記憶されている画面情報２０００を返信する。なお、画面情報２０００は、ブラウザ２１０に表示される画面を定義した情報であり、例えばＨＴＭＬ（HyperText Markup Language）やＣＳＳ（Cascading Style Sheets）等の形式で定義されている。
【００５４】
これにより、機器２０の操作パネル２２には、ブラウザ２１０により、サービス提供システム１０が提供するサービスを選択するためのサービス一覧画面や、サービスを利用するためのサービス画面等が表示される。
【００５５】
また、Ｗｅｂサービス処理部１２０は、ブラウザ２１０からの要求に応じて、入出力サービス処理部１１０に各種の要求を行う。例えば、Ｗｅｂサービス処理部１２０は、ブラウザ２１０からの要求に応じて、「ＯＣＲ配信１」サービスを実現する処理フローの実行要求を、入出力サービス処理部１１０のロジック処理部１１２に行う。
【００５６】
ドキュメントサービス部１３０は、処理フロー情報１１００に基づく一連の処理（処理フロー）に含まれる処理を実行する。ここで、ドキュメントサービス部１３０は、メール配信部１３１と、ＯＣＲ処理部１３２とを有する。
【００５７】
メール配信部１３１は、電子ファイルを添付したメールを作成して、当該メールを指定されたメールアドレス宛に配信する。ＯＣＲ処理部１３２は、電子ファイルをＯＣＲ処理する。
【００５８】
なお、ドキュメントサービス部１３０は、例えば、電子ファイルのデータ形式を所定のデータに変換するデータ変換部、電子ファイルを圧縮又は解凍する圧縮・解凍部等を有していても良い。
【００５９】
このように、ドキュメントサービス部１３０には、一連の処理（処理フロー）に含まれる処理を実行する種々の機能部が含まれる。したがって、ドキュメントサービス部１３０は、これら種々の機能を提供するプログラム（モジュール）群により実現される。
【００６０】
外部サービス連携部１４０は、ロジック処理部１１２やデータＩ／Ｆ部１１３からの要求に応じて、外部ストレージシステム３０に各種の要求を行う。
【００６１】
本実施形態に係るサービス提供システム１０は、外部ストレージシステム３０毎に、当該外部ストレージシステム３０に対応する外部サービス連携部１４０を有する。すなわち、本実施形態に係るサービス提供システム１０は、外部ストレージシステム３０１に各種の要求を行うための外部サービス連携部１４０１、外部ストレージシステム３０２に各種の要求を行うための外部サービス連携部１４０２等を有する。
【００６２】
このように、本実施形態に係るサービス提供システム１０は、当該サービス提供システム１０と連携して処理を行う外部ストレージシステム３０毎に、それぞれ対応する外部サービス連携部１４０を有する。なお、以降では、複数の外部サービス連携部１４０について、各々を区別するときは、上記のように、「外部サービス連携部１４０１」、「外部サービス連携部１４０２」等と添え字を用いて記載する。
【００６３】
ここで、外部サービス連携部１４０は、ロジック処理部１１２からの要求を受信するファイル処理部１４１と、データＩ／Ｆ部１１３からの要求を受信するデータ処理部１４２とを有する。
【００６４】
ファイル処理部１４１は、外部ストレージシステム３０に保存されている電子ファイルに対する操作（例えば、取得、保存、編集等）を行うためのＡＰＩ（Application Programming Interface）が定義された共通Ｉ／Ｆ１４１１及び固有Ｉ／Ｆ１４１２を有する。
【００６５】
共通Ｉ／Ｆ１４１１は、複数の外部ストレージシステム３０間で共通に利用できるＡＰＩであり、例えば図５（ａ）に示すＡＰＩが挙げられる。すなわち、ファイル処理部１４１の共通Ｉ／Ｆ１４１１は、全ての外部ストレージシステム３０が利用できるファイル操作に関する機能（例えば、電子ファイルの取得、保存等）を利用するためのＡＰＩ群である。
【００６６】
一方、固有Ｉ／Ｆ１４１２は、特定の外部ストレージシステム３０において利用できるＡＰＩであり、例えば図５（ｂ）に示すＡＰＩが挙げられる。すなわち、ファイル処理部１４１の固有Ｉ／Ｆ１４１２は、特定の外部ストレージシステム３０において利用できるファイル操作に関する機能（例えば、電子ファイルの編集等）を利用するためのＡＰＩ群である。
【００６７】
したがって、共通Ｉ／Ｆ１４１１は、全ての外部サービス連携部１４０に対して同様に定義される。一方で、固有Ｉ／Ｆ１４１２は、当該固有Ｉ／Ｆ１４１２で定義されるＡＰＩが利用可能な特定の外部ストレージシステム３０に対応する外部サービス連携部１４０に対して定義される。
【００６８】
また、データ処理部１４２は、外部ストレージシステム３０に保存されている電子ファイルの書誌情報等のメタデータ（例えば、ファイル一覧やフォルダ一覧等）を取得等するためのＡＰＩが定義された共通Ｉ／Ｆ１４２１及び固有Ｉ／Ｆ１４２２を有する。
【００６９】
共通Ｉ／Ｆ１４２１は、複数の外部ストレージシステム３０間で共通に利用できるＡＰＩであり、例えば図５（ｃ）に示すＡＰＩが挙げられる。すなわち、データ処理部１４２の共通Ｉ／Ｆ１４２１は、全ての外部ストレージシステム３０で利用できるメタデータ取得等の機能（例えば、ファイル一覧やフォルダ一覧の取得等）を利用するためのＡＰＩ群である。
【００７０】
一方、固有Ｉ／Ｆ１４２２は、特定の外部ストレージシステム３０において利用できるＡＰＩであり、例えば図５（ｄ）に示すＡＰＩが挙げられる。すなわち、データ処理部１４２の固有Ｉ／Ｆ１４２２は、特定の外部ストレージシステム３０において利用できるメタデータ取得等の機能（例えば、画像ファイル一覧の取得等）を利用するためのＡＰＩ群である。
【００７１】
したがって、共通Ｉ／Ｆ１４２１は、全ての外部サービス連携部１４０に対して同様に定義される。一方で、固有Ｉ／Ｆ１４２２は、当該固有Ｉ／Ｆ１４２２で定義されるＡＰＩが利用可能な特定の外部ストレージシステム３０に対応する外部サービス連携部１４０に対して定義される。
【００７２】
このように、本実施形態に係るサービス提供システム１０は、当該サービス提供システム１０と連携して処理を行う外部ストレージシステム３０毎に、それぞれの外部ストレージシステム３０に対応する外部サービス連携部１４０を有する。このため、例えば、サービス提供システム１０の連携先となる外部ストレージシステム３０を追加や削除（以降、「追加等）と表す。）する場合には、この外部ストレージシステム３０に対応する外部サービス連携部１４０を追加等すれば良い。
【００７３】
したがって、本実施形態に係るサービス提供システム１０では、連携先となる外部ストレージシステム３０の追加等に伴う影響を局所化することができる。換言すれば、本実施形態に係るサービス提供システム１０では、他の機能構成（例えば、入出力サービス処理部１１０やＷｅｂサービス処理部１２０等）に影響を与えることなく、連携先となる外部ストレージシステム３０の追加等を行うことができる。
【００７４】
このため、本実施形態に係るサービス提供システム１０では、当該サービス提供システム１０の連携先となる外部ストレージシステム３０を追加等した場合における開発工数を削減することができる。なお、外部サービス連携部１４０の追加等は、ＳＤＫ（Software Development Kit）を用いて行うことができる。
【００７５】
また、外部サービス連携部１４０は、共通Ｉ／Ｆ１４１１と固有Ｉ／Ｆ１４１２とを異なるモジュール等により実現している。また、共通Ｉ／Ｆ１４１１と固有Ｉ／Ｆ１４１２で定義されるＡＰＩは、外部サービス名（ストレージサービス名）を指定することで利用することができる（すなわち、「外部サービス名」が可変部分となっている。）。
【００７６】
したがって、本実施形態に係るサービス提供システム１０では、当該サービス提供システム１０の連携先となる外部ストレージシステム３０を追加する場合には、他の外部サービス連携部１４０に含まれる共通Ｉ／Ｆ１４１１を再利用することができる。換言すれば、連携先となる外部ストレージシステム３０を追加する場合には、固有Ｉ／Ｆ１４１２のみ開発すれば良い。これにより、本実施形態に係るサービス提供システム１０では、連携先となる外部ストレージシステム３０を追加する場合における開発工数をさらに削減することができる。なお、このことは共通Ｉ／Ｆ１４２１と固有Ｉ／Ｆ１４２２に関しても同様である。
【００７７】
アプリ情報記憶部１５０は、アプリ情報１０００を記憶する。アプリ情報１０００は、当該アプリ情報１０００（アプリケーション）を一意に識別するアプリＩＤと関連付けてアプリ情報記憶部１５０に記憶されている。
【００７８】
ここで、アプリ情報１０００には、処理フロー情報１１００が含まれる。例えば、「ＯＣＲ配信１」サービスを提供するアプリ情報１０００には、当該サービスを実現する一連の処理（処理フロー）が定義された処理フロー情報１１００が含まれる。なお、アプリ情報１０００には、２以上の処理フロー情報１１００が含まれていても良い。
【００７９】
処理フロー情報１１００は、上述したように、アプリ情報１０００により提供されるサービスを実現する一連の処理（処理フロー）が定義された情報である。なお、処理フロー情報１１００の詳細については後述する。
【００８０】
画面情報記憶部１６０は、画面情報２０００を記憶する。画面情報２０００は、上述したように、ブラウザ２１０に表示される画面を定義した情報である。なお、アプリ情報１０００により提供されるサービスを利用するためのサービス画面の画面情報２０００は、当該アプリ情報１０００のアプリＩＤと関連付けて画面情報記憶部１６０に記憶されている。
【００８１】
リソース管理情報記憶部１７０は、処理フロー情報１１００に基づく一連の処理（処理フロー）に含まれる各処理の処理結果等を管理するリソース管理情報１７０Ｄを記憶する。なお、リソース管理情報１７０Ｄの詳細については後述する。
【００８２】
ここで、ロジック処理部１１２の詳細な機能構成について、図６を参照しながら説明する。図６は、本実施形態に係るロジック処理部１１２の一例の機能構成を示す図である。
【００８３】
図６に示すロジック処理部１１２は、フロー実行部３０１と、コンポーネント管理部３０２と、コンポーネント群３０３と、型変換管理部３０４と、型変換群３０５と、リソース管理部３０６とを有する。また、ロジック処理部１１２は、型変換情報テーブル３０００を有する。
【００８４】
フロー実行部３０１は、Ｗｅｂサービス処理部１２０を介して、ブラウザ２１０から処理実行要求を受信すると、アプリ情報１０００に含まれる処理フロー情報１１００をアプリ管理部１１１から取得する。そして、フロー実行部３０１は、取得した処理フロー情報１１００に基づく一連の処理（処理フロー）を実行する。
【００８５】
ここで、処理フロー情報１１００に基づく一連の処理は、当該一連の処理に含まれる各処理を実行するためのコンポーネントを組み合わせることにより実行される。なお、コンポーネントは、所定の機能を提供するプログラムやモジュール等により実現され、例えばクラスや関数等で定義される。
【００８６】
コンポーネント管理部３０２は、コンポーネントを管理する。コンポーネント管理部３０２は、フロー実行部３０１からの要求に応じて、コンポーネントを生成すると共に、生成したコンポーネントをフロー実行部３０１に返信する。なお、コンポーネントの生成とは、例えばクラスや関数等で定義されたコンポーネントを、メモリ（例えばＲＡＭ１４）上に展開することである。
【００８７】
コンポーネント群３０３は、コンポーネントの集合である。コンポーネント群３０３には、反復コンポーネント４０１と、リスト取得コンポーネント４０２と、メール配信コンポーネント４０３と、ファイル取得コンポーネント４０４と、ＯＣＲコンポーネント４０５とが含まれる。
【００８８】
反復コンポーネント４０１は、１以上の処理の反復を実現するためのコンポーネントである。すなわち、反復コンポーネント４０１は、１以上の処理を含む他の処理フローを繰り返し実行させることで、当該１以上の処理の反復を実現する。
【００８９】
リスト取得コンポーネント４０２は、指定された外部ストレージシステム３０から電子ファイルの格納先リストを取得するためのコンポーネントである。メール配信コンポーネント４０３は、指定されたメールアドレス宛にメール配信するためのコンポーネントである。
【００９０】
ファイル取得コンポーネント４０４は、外部ストレージシステム３０から電子ファイルを取得（ダウンロード）するためのコンポーネントである。ＯＣＲコンポーネント４０５は、電子ファイルをＯＣＲ処理するためのコンポーネントである。
【００９１】
なお、コンポーネント群３０３には、これら以外にも、例えば、電子ファイルの圧縮するための圧縮コンポーネント、電子ファイルのデータ形式を変換するためのコンポーネント等の各種のコンポーネントが含まれる。
【００９２】
また、コンポーネント群３０３に含まれる各コンポーネントは、コンポーネント共通Ｉ／Ｆ４００を有する。コンポーネント共通Ｉ／Ｆ４００は、各コンポーネントに対して共通に定義されたＡＰＩであり、コンポーネントを生成するためのＡＰＩと、コンポーネントの処理を実行するためのＡＰＩとが含まれる。
【００９３】
このように、各コンポーネントがコンポーネント共通Ｉ／Ｆ４００を有することで、コンポーネントの追加等に伴う影響を局所化することができる。すなわち、例えば、フロー実行部３０１やコンポーネント管理部３０２等に影響を与えることなく、コンポーネントの追加等を行うことができる。これにより、本実施形態に係るサービス提供システム１０では、所定の機能の追加等（すなわち、当該機能を実現する処理を実行するためのコンポーネントの追加等）に伴う開発工数を削減することができる。
【００９４】
なお、コンポーネント管理部３０２は、例えば、サービス提供システム１０の起動時に、コンポーネント共通Ｉ／Ｆ４００により、コンポーネント群３０３に含まれる各コンポーネントを生成しても良い。
【００９５】
型変換管理部３０４は、データ型の型変換を管理する。ここで、各コンポーネントは、自身が扱えるデータ型が予め決まっている。したがって、型変換管理部３０４は、コンポーネントからの要求に応じて、例えば図７に示す型変換情報テーブル３０００を参照して、型変換群３０５に含まれる型変換を生成する。
【００９６】
そして、型変換管理部３０４は、生成された型変換に型変換処理の実行を要求する。なお、型変換は、データ型の型変換処理を実行するプログラムやモジュール等により実現され、例えばクラスや関数等で定義される。また、型変換の生成とは、例えばクラスや関数等で定義された型変換を、メモリ（例えばＲＡＭ１４上）に展開することである。
【００９７】
なお、データ型には、例えば、ストリームデータを示すデータ型「ＩｎｐｕｔＳｔｒｅａｍ」、記憶装置等に格納されている電子ファイルのパス（アドレス）を示す「ＬｏｃａｌＦｉｌｅＰａｔｈ」、及び電子ファイルの実体を示す「Ｆｉｌｅ」等が挙げられる。
【００９８】
ここで、型変換情報テーブル３０００について、図７を参照しながら説明する。図７は、型変換情報テーブルの一例を示す図である。
【００９９】
図７に示す型変換情報テーブル３０００は、データ項目として、変換前のデータ型と、変換後のデータ型と、生成する型変換とを有する。すなわち、型変換情報テーブル３０００に格納されている型変換情報は、変換前のデータ型及び変換後のデータ型毎に、当該変換前のデータ型を、当該変換後のデータ型に変換するための型変換が関連付けられた情報である。
【０１００】
型変換群３０５は、型変換の集合である。型変換群３０５には、データ型「ＩｎｐｕｔＳｔｒｅａｍ」を「ＬｏｃａｌＦｉｌｅＰａｔｈ」に変換するための第１の型変換５０１が含まれる。なお、型変換群３０５には、これ以外にも、例えば、データ型「ＬｏｃａｌＦｉｌｅＰａｔｈ」を「Ｆｉｌｅ」に変換するための第２の型変換等が含まれる。
【０１０１】
また、型変換群３０５に含まれる各型変換は、型変換共通Ｉ／Ｆ５００を有する。型変換共通Ｉ／Ｆ５００は、各型変換に対して共通に定義されたＡＰＩであり、型変換を生成するためのＡＰＩと、型変換の型変換処理を実行するためのＡＰＩとが含まれる。
【０１０２】
このように、各型変換が型変換共通Ｉ／Ｆ５００を有することで、型変換の追加等に伴う影響を局所化することができる。すなわち、例えば、型変換管理部３０４等に影響を与えることなく、型変換の追加等を行うことができる。これにより、本実施形態に係るサービス提供システム１０では、型変換の追加等に伴う開発工数を削減することができる。
【０１０３】
リソース管理部３０６は、リソース管理情報記憶部１７０に記憶されたリソース管理情報１７０Ｄを管理する。すなわち、リソース管理部３０６は、各コンポーネントからの要求に応じて、当該コンポーネントの処理結果を、リソース管理情報１７０Ｄとしてリソース管理情報記憶部１７０に記憶させる。
【０１０４】
ここで、「ＯＣＲ配信１」サービスを提供するアプリ情報１０００に含まれる処理フロー情報１１００について、図８を参照しながら説明する。図８は、「ＯＣＲ配信１」サービスを実現する処理フローが定義された処理フロー情報１１００の一例を示す図である。
【０１０５】
図８に示す処理フロー情報１１００は、「ＯＣＲ配信１」サービスを実現する一連の処理（処理フロー）が定義された情報である。
【０１０６】
図８に示す処理フロー情報１１００には、処理フロー情報１１００を一意に識別する識別情報を示すフローＩＤ１１０１と、処理フローに含まれる各処理の処理内容が定義されたフロー詳細１１０２とが含まれる。
【０１０７】
フロー詳細１１０２には、処理フローに含まれる各処理をそれぞれ定義した処理定義１１１１〜１１１３が含まれる。各処理定義１１１１〜１１１３には、処理を実行するためのコンポーネントを示す「"component"」と、当該コンポーネントに対するパラメータを示す「"parameters"」とが含まれる。
【０１０８】
具体的には、処理定義１１１１の「"component"」には、リスト取得コンポーネント４０２により処理を実行することを示す「"getFileList"」が定義されている。また、「"parameters"」には、リスト取得コンポーネント４０２に対するパラメータ「"storage"」が定義されておいる。なお、パラメータ「"storage"」は、電子ファイルの格納先リストを取得する外部ストレージシステム３０の識別情報が定義されるパラメータである。
【０１０９】
同様に、処理定義１１１３の「"component"」には、メール配信コンポーネント４０３により処理を実行することを示す「"sendMail"」が定義されている。また、「"parameters"」には、メール配信コンポーネント４０３に対するパラメータ「"to"」が定義されている。なお、パラメータ「"to"」は、メールの配信先となるメールアドレスが定義されるパラメータである。
【０１１０】
同様に、処理定義１１１２の「"component"」には、反復コンポーネント４０１により処理を実行することを示す「"iterate"」が定義されている。また、「"parameters"」には、反復コンポーネント４０１に対するパラメータ１１２１〜パラメータ１１２３が定義されている。
【０１１１】
ここで、パラメータ１１２１は、反復コンポーネント４０１が繰り返し実行させる他の処理フローのフローＩＤが定義されたパラメータである。また、パラメータ１１２２は、当該他の処理フローに含まれる各処理をそれぞれ定義した処理定義１１３１及び１１３２を含むフロー詳細が定義されたパラメータである。さらに、パラメータ１１２３は、当該他の処理フローを繰り返し実行させる回数（反復回数）が定義されたパラメータである。
【０１１２】
このように、反復コンポーネント４０１による処理を定義した処理定義１１１２には、繰り返し実行させる他の処理フローのフロー詳細と、当該他の処理フローを繰り返し実行させる回数とが定義されている。これにより、後述するように、反復コンポーネント４０１により、他の処理フローが繰り返し実行され、１以上の処理の反復を実現することができる。
【０１１３】
なお、図８に示す処理フロー情報１１００に定義された各処理の実行順は、上から順に実行される。すなわち、図８に示す処理フロー情報１１００に基づく一連の処理（処理フロー）では、処理定義１１１１に定義された処理、処理定義１１１２に定義された処理、及び処理定義１１１３に定義された処理の順で実行される。ただし、これに限られず、処理フロー情報１１００には、例えば、各処理の実行順を示す情報が定義されていても良い。
【０１１４】
ここで、図８に示す処理フロー情報１１００に基づく処理フロー（すなわち、「ＯＣＲ配信１」サービスを実現する処理フロー）を、図９に示す。図９は、「ＯＣＲ配信１」サービスを実現する処理フローの一例を説明するための図である。なお、以降では、処理フロー情報１１００に基づく処理フローを「親フロー」、反復コンポーネント４０１により繰り返し実行させる他の処理フローを「子フロー」とも表す。
【０１１５】
図９に示すように、「ＯＣＲ配信１」サービスを実現する処理フローでは、まず、リスト取得コンポーネント４０２により、外部ストレージシステム３０に格納されている電子ファイルの格納先リストが取得される。
【０１１６】
次に、反復コンポーネント４０１により、格納先リストに含まれる格納先毎に、ファイル取得コンポーネント４０４による処理と、ＯＣＲコンポーネント４０５による処理とを繰り返し実行させる。これにより、格納先リストに含まれる格納先毎に、電子ファイルの取得（ダウンロード）及び当該電子ファイルのＯＣＲ処理が行われる。
【０１１７】
最後に、メール配信コンポーネント４０３により、ＯＣＲ処理後の電子ファイルがメール配信される。
【０１１８】
このように、「ＯＣＲ配信１」サービスでは、親フローの反復コンポーネント４０１が子フロー（他の処理フロー）を繰り返し実行させることで、１以上の処理の反復を実現している。なお、子フローに反復コンポーネント４０１が含まれる場合には、他の処理フロー（孫フロー）を繰り返し実行させれば良い。
【０１１９】
＜処理の詳細＞
次に、本実施形態に係る情報処理システム１の処理の詳細について説明する。
【０１２０】
以降では、機器２０のユーザＵが、ブラウザ２１０を用いて、サービス提供システム１０により提供される「ＯＣＲ配信１」サービスを利用する場合の処理について、図１０を参照しながら説明する。図１０は、本実施形態に係る「ＯＣＲ配信１」サービスを利用する場合の全体処理の一例を示すシーケンス図である。
【０１２１】
ユーザＵは、機器２０のブラウザ２１０を用いて、アプリ情報１０００により提供されるサービスの一覧を表示させるための表示操作を行う（ステップＳ１００１）。
【０１２２】
機器２０のブラウザ２１０は、サービスの一覧を表示させるための表示操作を受け付けると、サービス一覧画面の取得要求を、サービス提供システム１０のＷｅｂサービス処理部１２０に送信する（ステップＳ１００２）。
【０１２３】
Ｗｅｂサービス処理部１２０は、サービス一覧画面の取得要求を受信すると、当該サービス一覧画面の画面情報２０００を画面情報記憶部１６０から取得する（ステップＳ１００３）。そして、Ｗｅｂサービス処理部１２０は、サービス一覧画面の画面情報２０００をブラウザ２１０に返信する。
【０１２４】
なお、サービス一覧画面の画面情報２０００には、サービス毎に、当該サービスを提供するアプリ情報１０００のアプリＩＤと、当該アプリ情報１０００に含まれる処理フロー情報１１００のフローＩＤとが含まれる。
【０１２５】
機器２０のブラウザ２１０は、サービス一覧画面の画面情報２０００を受信すると、当該画面情報２０００に基づいて、例えば図１１（ａ）に示すサービス一覧画面４１００を操作パネル２２に表示させる（ステップＳ１００４）。
【０１２６】
図１１（ａ）に示すサービス一覧画面４１００には、サービス提供システム１０により提供されるサービス名の一覧であるサービス名一覧４１０１が含まれる。
【０１２７】
次に、ユーザＵは、サービス一覧画面４１００のサービス名一覧４１０１から「ＯＣＲ配信１」を選択して、サービスの選択操作を行う（ステップＳ１００５）。
【０１２８】
機器２０のブラウザ２１０は、サービスの選択操作を受け付けると、サービス画面の取得要求をＷｅｂサービス処理部１２０に送信する（ステップＳ１００６）。なお、当該取得要求には、ユーザＵにより選択された「ＯＣＲ配信１」サービスを提供するアプリ情報１０００のアプリＩＤが含まれる。
【０１２９】
Ｗｅｂサービス処理部１２０は、サービス画面の取得要求を受信すると、当該取得要求に含まれるアプリＩＤに関連付けて画面情報記憶部１６０に記憶されている画面情報２０００（サービス画面の画面情報２０００）を取得する（ステップＳ１００７）。そして、Ｗｅｂサービス処理部１２０は、取得した画面情報２０００をブラウザ２１０に返信する。
【０１３０】
機器２０のブラウザ２１０は、サービス画面の画面情報２０００を受信すると、当該画面情報２０００に基づいて、例えば図１１（ｂ）に示すサービス画面４２００を操作パネル２２に表示させる（ステップＳ１００８）。
【０１３１】
図１１（ｂ）に示すサービス画面４２００は、ユーザＵにより選択された「ＯＣＲ配信１」サービスを利用するための画面である。図１１（ｂ）に示すサービス画面４２００には、ストレージ指定欄４２０１と、メールアドレス指定欄４２０２と、実行ボタン４２０３とが含まれる。
【０１３２】
ここで、ストレージ指定欄４２０１は、電子ファイルの格納先リストを取得する外部ストレージシステム３０のストレージサービス名を指定する欄である。メールアドレス指定欄４２０２は、ＯＣＲ処理された電子ファイルをメール送信する宛先（メールアドレス）を指定する欄である。なお、サービス画面４２００には、例えば、ＯＣＲ処理された電子ファイルをＣＣやＢＣＣでメール送信する宛先を指定するためのＣＣ指定欄やＢＣＣ指定欄等が含まれていても良い。
【０１３３】
次に、ユーザＵは、サービス画面４２００において、ストレージ指定欄４２０１に所望のストレージサービス名を指定すると共に、メールアドレス指定欄４２０２に所望のメールアドレスを指定した上で、実行ボタン４２０３を押下する（ステップＳ１００９）。
【０１３４】
ここで、以降では、ユーザＵにより、ストレージ指定欄４２０１に「ストレージＡ」が指定されると共に、メールアドレス指定欄４２０２にメールアドレス「ｈｏｇｅ＠ｆｕｇａ．ｃｏｍ」が指定された上で、実行ボタン４２０３が押下されたものとして説明する。
【０１３５】
機器２０のブラウザ２１０は、実行ボタン４２０３の押下操作を受け付けると、「ＯＣＲ配信１」サービスを実現する処理フローの実行要求をＷｅｂサービス処理部１２０に送信する（ステップＳ１０１０）。
【０１３６】
なお、当該実行要求には、「ＯＣＲ配信１」サービスを提供するアプリ情報１０００のアプリＩＤと、当該サービスを実現するための処理フロー情報１１００のフローＩＤとが含まれる。また、当該実行要求には、サービス画面４２００においてユーザＵにより入力された入力情報（すなわち、ストレージサービス名及びメールアドレス）が含まれる。
【０１３７】
Ｗｅｂサービス処理部１２０は、処理フローの実行要求を受信すると、当該実行要求を、入出力サービス処理部１１０のロジック処理部１１２に送信する（ステップＳ１０１１）。
【０１３８】
入出力サービス処理部１１０のロジック処理部１１２は、処理フローの実行要求を受信すると、当該実行要求に含まれるアプリＩＤ及びフローＩＤに対応する処理フロー情報１１００に基づく一連の処理（すなわち、親フロー）を実行する（ステップＳ１０１２）。
【０１３９】
そして、ロジック処理部１１２は、当該一連の処理の処理結果を、Ｗｅｂサービス処理部１２０を介して、機器２０のブラウザ２１０に返信する。
【０１４０】
これにより、本実施形態に係るサービス提供システム１０において、「ＯＣＲ配信１」サービスを実現する一連の処理が実行され、機器２０に対して当該サービスが提供される。
【０１４１】
ここで、上記のステップＳ１０１２の処理フローの実行処理（親フローの実行処理）の詳細について、図１２を参照しながら説明する。図１２は、本実施形態に係る親フローの実行処理の一例を示すシーケンス図である。
【０１４２】
フロー実行部３０１は、処理フローの実行要求を受信すると、処理フロー情報の取得要求をアプリ管理部１１１に送信する（ステップＳ１２０１）。なお、当該取得要求には、Ｗｅｂサービス処理部１２０から受信した処理フローの実行要求に含まれるアプリＩＤと、フローＩＤとが含まれる。
【０１４３】
アプリ管理部１１１は、処理フロー情報の取得要求を受信すると、当該取得要求に含まれるアプリＩＤ及びフローＩＤに対応する処理フロー情報１１００をアプリ情報記憶部１５０から取得する（ステップＳ１２０２）。そして、アプリ管理部１１１は、取得した処理フロー情報１１００をフロー実行部３０１に返信する。これにより、フロー実行部３０１には、図８に示す処理フロー情報１１００が返信される。
【０１４４】
フロー実行部３０１は、アプリ管理部１１１から処理フロー情報１１００を受信すると、当該処理フロー情報１１００に基づくコンポーネントの取得要求をコンポーネント管理部３０２に送信する（ステップＳ１２０３）。
【０１４５】
すなわち、フロー実行部３０１は、図８に示す処理フロー情報１１００の処理定義１１１１に含まれる「"component"」に定義されている「"getFileList"」に対応するリスト取得コンポーネント４０２の取得要求をコンポーネント管理部３０２に送信する。
【０１４６】
コンポーネント管理部３０２は、コンポーネントの取得要求を受信すると、リスト取得コンポーネント４０２を生成する（ステップＳ１２０４）。なお、リスト取得コンポーネント４０２の生成は、コンポーネント共通Ｉ／Ｆ４００に定義されたコンポーネントを生成するためのＡＰＩを用いて行うことができる。
【０１４７】
そして、コンポーネント管理部３０２は、生成したリスト取得コンポーネント４０２をフロー実行部３０１に返信する。すなわち、コンポーネント管理部３０２は、例えば、リスト取得コンポーネント４０２が展開されたメモリ（例えばＲＡＭ１４）上のアドレスをフロー実行部３０１に返信する。
【０１４８】
次に、フロー実行部３０１は、コンポーネント実行要求をリスト取得コンポーネント４０２に送信する（ステップＳ１２０５）。なお、当該実行要求には、データと、パラメータ情報とが含まれる。
【０１４９】
ここで、データは、データ型「ＩｎｐｕｔＳｔｒｅａｍ」として、ブラウザ２１０から受信した入力情報（すなわち、ストレージサービス名「ストレージＡ」）である。すなわち、フロー実行部３０１は、ブラウザ２１０からデータ型「ＩｎｐｕｔＳｔｒｅａｍ」として渡された入力情報に含まれるストレージサービス名を、単に「データ」として（データ型を意識することなく）、リスト取得コンポーネント４０２に渡して処理の実行を要求する。本実施形態では、このようにデータ型を意識しない各種の情報（例えば、入力情報や電子ファイル等）を、単に「データ」と表す。
【０１５０】
また、パラメータ情報は、図８に示す処理フロー情報１１００の処理定義１１１１に含まれる「"parameters"」に定義されている「"storage":null」である。
【０１５１】
リスト取得コンポーネント４０２は、コンポーネント実行要求を受信すると、コンポーネントの実行処理を行う（ステップＳ１２０６）。そして、リスト取得コンポーネント４０２は、当該実行処理の処理結果を示すデータをフロー実行部３０１に返信する。
【０１５２】
なお、ここで返信されるデータには、例えば、リスト取得コンポーネント４０２の実行処理が正常に終了したことを示す情報が含まれる。
【０１５３】
ここで、リスト取得コンポーネント４０２の実行処理について、図１３を参照しながら説明する。図１３は、本実施形態に係るリスト取得コンポーネント４０２の実行処理の一例を示すシーケンス図である。
【０１５４】
まず、リスト取得コンポーネント４０２は、型変換要求を型変換管理部３０４に送信する（ステップＳ１３０１）。なお、当該型変換要求には、データと、リスト取得コンポーネント４０２が扱うことができるデータ型を示す「ＬｏｃａｌＦｉｌｅＰａｔｈ」の指定とが含まれる。
【０１５５】
型変換管理部３０４は、型変換要求を受信すると、当該型変換要求に含まれるデータのデータ型と、指定されたデータ型とが一致するか否かをチェックする（ステップＳ１３０２）。
【０１５６】
ここで、受信した型変換要求に含まれるデータのデータ型は「ＩｎｐｕｔＳｔｒｅａｍ」である一方、指定されたデータ型は「ＬｏｃａｌＦｉｌｅＰａｔｈ」である。したがって、型変換管理部３０４は、型変換要求に含まれるデータのデータ型と、指定されたデータ型とが一致しないものと判断する。
【０１５７】
すると、型変換管理部３０４は、型変換情報テーブル３０００を参照して、「ＩｎｐｕｔＳｔｒｅａｍ」を「ＬｏｃａｌＦｉｌｅＰａｔｈ」に変換するための第１の型変換５０１を特定して、当該特定した第１の型変換５０１を生成する（ステップＳ１３０３）。なお、第１の型変換５０１の生成は、型変換共通Ｉ／Ｆ５００に定義されたＡＰＩを用いて行うことができる。
【０１５８】
次に、型変換管理部３０４は、生成された第１の型変換５０１に対して、型変換要求を送信する（ステップＳ１３０４）。なお、当該型変換要求には、データが含まれる。
【０１５９】
第１の型変換５０１は、型変換要求を受信すると、当該要求に含まれるデータのデータ型を「ＩｎｐｕｔＳｔｒｅａｍ」から「ＬｏｃａｌＦｉｌｅＰａｔｈ」に変換する（ステップＳ１３０５）。そして、第１の型変換５０１は、当該変換後のデータを、型変換管理部３０４を介して、リスト取得コンポーネント４０２に返信する。
【０１６０】
リスト取得コンポーネント４０２は、型変換後のデータを受信すると、パラメータ情報を用いて処理を実行する（ステップＳ１３０６）。すなわち、リスト取得コンポーネント４０２は、パラメータ情報に含まれるパラメータ「"storage"」に、データに含まれる「ストレージＡ」を指定して、リスト取得処理を実行する。
【０１６１】
より具体的には、リスト取得コンポーネント４０２は、データＩ／Ｆ部１１３を介して、外部サービス連携部１４０１のデータ処理部１４２に対して、図５（ｃ）に示すＡＰＩ「／外部サービス名／ｄａｔａ／ｆｉｌｅｓ」を用いて、ファイル一覧を取得する。これにより、リスト取得コンポーネント４０２により、ストレージＡにおける電子ファイルの格納先リストが取得される。
【０１６２】
次に、リスト取得コンポーネント４０２は、処理を実行すると、処理結果の保存要求をリソース管理部３０６に送信する（ステップＳ１３０７）。なお、当該保存要求には、リスト取得コンポーネント４０２の処理の結果を示すデータ（すなわち、電子ファイルの格納先リスト）が含まれる。
【０１６３】
リソース管理部３０６は、処理結果の保存要求を受信すると、当該保存要求に含まれるデータに基づいて、リソース管理情報記憶部１７０に記憶されているリソース管理情報１７０Ｄに処理結果を保存する（ステップＳ１３０８）。そして、リソース管理部３０６は、保存結果をリスト取得コンポーネント４０２に返信する。
【０１６４】
ここで、リソース管理情報１７０Ｄに保存されたリスト取得コンポーネント４０２の処理結果について、図１４を参照しながら説明する。図１４は、リソース管理情報１７０Ｄの一例を示す図である。
【０１６５】
図１４に示すように、リソース管理情報１７０Ｄには、リスト取得コンポーネント４０２の処理結果１７１が保存されている。すなわち、処理結果１７１には、電子ファイルの格納先ＵＲＬ（Uniform Resource Locator）を示す「"url[0]"」〜「"url[N-1]"」と、格納先リストのサイズ（すなわち、格納先ＵＲＬの数）を示す「"size"」とが含まれる。換言すれば、処理結果１７１には、電子ファイルの格納先ＵＲＬがそれぞれ格納された配列「"url[0]"」〜「"url[N-1]"」と、当該配列の個数「"size"」とが含まれる。
【０１６６】
また、配列「"url[0]"」〜「"url[N-1]"」には、電子ファイルの作成日の降順に、これら電子ファイルの格納先ＵＲＬが格納されている。これにより、配列「"url[0]"」には、最新の電子ファイルの格納先ＵＲＬが格納されている一方で、配列「"url[N-1]"」には、最も古い電子ファイルの格納先ＵＲＬが格納されている。
【０１６７】
このように、リソース管理情報１７０Ｄには、一連の処理に含まれる各処理を実行するためのコンポーネントの処理結果が保存される。
【０１６８】
図１２に戻る。フロー実行部３０１は、コンポーネントの実行処理の処理結果を示すデータを受信すると、処理フロー情報１１００に基づくコンポーネントの取得要求をコンポーネント管理部３０２に送信する（ステップＳ１２０７）。
【０１６９】
すなわち、フロー実行部３０１は、図８に示す処理フロー情報１１００の処理定義１１１２に含まれる「"component"」に定義されている「"iterate"」に対応する反復コンポーネント４０１の取得要求をコンポーネント管理部３０２に送信する。
【０１７０】
コンポーネント管理部３０２は、コンポーネントの取得要求を受信すると、反復コンポーネント４０１を生成する（ステップＳ１２０８）。なお、反復コンポーネント４０１の生成は、コンポーネント共通Ｉ／Ｆ４００に定義されたコンポーネントを生成するためのＡＰＩを用いて行うことができる。
【０１７１】
そして、コンポーネント管理部３０２は、生成した反復コンポーネント４０１をフロー実行部３０１に返信する。すなわち、コンポーネント管理部３０２は、例えば、反復コンポーネント４０１が展開されたメモリ（例えばＲＡＭ１４）上のアドレスをフロー実行部３０１に返信する。
【０１７２】
次に、フロー実行部３０１は、コンポーネント実行要求を反復コンポーネント４０１に送信する（ステップＳ１２０９）。なお、当該実行要求には、データと、パラメータ情報とが含まれる。
【０１７３】
ここで、パラメータ情報は、図８に示す処理フロー情報１１００の処理定義１１１２に含まれる「"parameters"」に定義されているパラメータ１１２１〜パラメータ１１２３である。
【０１７４】
反復コンポーネント４０１は、コンポーネント実行要求を受信すると、コンポーネントの実行処理を行う（ステップＳ１２１０）。そして、反復コンポーネント４０１は、当該実行処理の処理結果を示すデータをフロー実行部３０１に返信する。なお、反復コンポーネント４０１の実行処理の詳細については後述する。
【０１７５】
以降では、反復コンポーネント４０１の実行処理により、電子ファイルの格納先ＵＲＬを示す「"url[0]"」〜「"url[N-1]"」に基づいて、それぞれ、電子ファイルが取得されて、ＯＣＲ処理が行われたものとして説明する。
【０１７６】
なお、ここで返信されるデータには、例えば、反復コンポーネント４０１の実行処理が正常に終了したことを示す情報と、ＯＣＲ処理後のＮ個（Ｎは、格納先リストのサイズ）の電子ファイルとが含まれる。
【０１７７】
フロー実行部３０１は、コンポーネントの実行処理の処理結果を示すデータを受信すると、処理フロー情報１１００に基づくコンポーネントの取得要求をコンポーネント管理部３０２に送信する（ステップＳ１２１１）。
【０１７８】
すなわち、フロー実行部３０１は、図８に示す処理フロー情報１１００の処理定義１１１３に含まれる「"component"」に定義されている「"sendMail"」に対応するメール配信コンポーネント４０３の取得要求をコンポーネント管理部３０２に送信する。
【０１７９】
コンポーネント管理部３０２は、コンポーネントの取得要求を受信すると、メール配信コンポーネント４０３を生成する（ステップＳ１２１２）。なお、メール配信コンポーネント４０３の生成は、コンポーネント共通Ｉ／Ｆ４００に定義されたコンポーネントを生成するためのＡＰＩを用いて行うことができる。
【０１８０】
そして、コンポーネント管理部３０２は、生成したメール配信コンポーネント４０３をフロー実行部３０１に返信する。すなわち、コンポーネント管理部３０２は、例えば、メール配信コンポーネント４０３が展開されたメモリ（例えばＲＡＭ１４）上のアドレスをフロー実行部３０１に返信する。
【０１８１】
次に、フロー実行部３０１は、コンポーネント実行要求をメール配信コンポーネント４０３に送信する（ステップＳ１２１３）。なお、当該実行要求には、データと、パラメータ情報とが含まれる。
【０１８２】
ここで、データには、入力情報に含まれるメールアドレス「ｈｏｇｅ＠ｆｕｇａ．ｃｏｍ」が含まれる。
【０１８３】
また、パラメータ情報は、図８に示す処理フロー情報１１００の処理定義１１１３に含まれる「"parameters"」に定義されている「"to":null」である。
【０１８４】
メール配信コンポーネント４０３は、コンポーネント実行要求を受信すると、コンポーネントの実行処理を行う（ステップＳ１２１４）。そして、メール配信コンポーネント４０３は、当該実行処理の処理結果を示すデータをフロー実行部３０１に返信する。
【０１８５】
なお、ここで返信されるデータには、例えば、メール配信コンポーネント４０３の実行処理が正常に終了したことを示す情報が含まれる。
【０１８６】
ここで、メール配信コンポーネント４０３の実行処理について、図１５を参照しながら説明する。図１５は、本実施形態に係るメール配信コンポーネント４０３の実行処理の一例を示すシーケンス図である。
【０１８７】
まず、メール配信コンポーネント４０３は、型変換要求を型変換管理部３０４に送信する（ステップＳ１５０１）。なお、当該型変換要求には、データと、メール配信コンポーネント４０３が扱うことができるデータ型を示す「ＬｏｃａｌＦｉｌｅＰａｔｈ」の指定とが含まれる。
【０１８８】
型変換管理部３０４は、型変換要求を受信すると、当該型変換要求に含まれるデータのデータ型と、指定されたデータ型とが一致するか否かをチェックする（ステップＳ１５０２）。
【０１８９】
ここで、受信した型変換要求に含まれるデータのデータ型は「ＬｏｃａｌＦｉｌｅＰａｔｈ」であり、指定されたデータ型も「ＬｏｃａｌＦｉｌｅＰａｔｈ」である。したがって、型変換管理部３０４は、型変換要求に含まれるデータのデータ型と、指定されたデータ型とが一致するものと判断する。
【０１９０】
すると、型変換管理部３０４は、型変換要求に含まれるデータを、メール配信コンポーネント４０３に返信する。このように、データ型のチェックにおいてデータ型が一致するものと判断された場合、型変換管理部３０４は、型変換の生成を行わない。
【０１９１】
メール配信コンポーネント４０３は、データを受信すると、パラメータ情報を用いて処理を実行する（ステップＳ１５０３）。すなわち、メール配信コンポーネント４０３は、まず、パラメータ情報に含まれるパラメータ「"to"」に、データに含まれるメールアドレス「ｈｏｇｅ＠ｆｕｇａ．ｃｏｍ」を指定する。そして、メール配信コンポーネント４０３は、データに含まれる電子ファイルを添付したメールを作成した上で、指定されたメールアドレス宛にメールを送信する。なお、メール配信コンポーネント４０３は、ドキュメントサービス部１３０のメール配信部１３１により、メールの作成及び送信処理を実行する。
【０１９２】
ここで、上記のステップＳ１２１０における反復コンポーネント４０１の実行処理について、図１６を参照しながら説明する。図１６は、本実施形態に係る反復コンポーネント４０１の実行処理の一例を示すシーケンス図である。
【０１９３】
まず、反復コンポーネント４０１は、型変換要求を型変換管理部３０４に送信する（ステップＳ１６０１）。なお、当該型変換要求には、データと、反復コンポーネント４０１が扱うことができるデータ型を示す「ＬｏｃａｌＦｉｌｅＰａｔｈ」の指定とが含まれる。
【０１９４】
型変換管理部３０４は、型変換要求を受信すると、当該型変換要求に含まれるデータのデータ型と、指定されたデータ型とが一致するか否かをチェックする（ステップＳ１６０２）。
【０１９５】
ここで、受信した型変換要求に含まれるデータのデータ型は「ＬｏｃａｌＦｉｌｅＰａｔｈ」であり、指定されたデータ型も「ＬｏｃａｌＦｉｌｅＰａｔｈ」である。したがって、型変換管理部３０４は、型変換要求に含まれるデータのデータ型と、指定されたデータ型とが一致するものと判断する。
【０１９６】
すると、型変換管理部３０４は、型変換要求に含まれるデータを、反復コンポーネント４０１に返信する。このように、データ型のチェックにおいてデータ型が一致するものと判断された場合、型変換管理部３０４は、型変換の生成を行わない。
【０１９７】
反復コンポーネント４０１は、データを受信すると、子フローを実行させた回数（実行済回数）を示す変数「index」を「０」に設定する（ステップＳ１６０３）。
【０１９８】
次に、反復コンポーネント４０１は、実行済回数を示す変数「index」が、パラメータ情報に含まれるパラメータ１１２３に定義された反復回数「"numberOfIterations"」より小さい間、ステップＳ１６０４〜ステップＳ１６０６の処理を実行する。なお、本実施形態では、「"numberOfIterations"」には、リスト取得コンポーネント４０２の処理結果１７１に含まれる格納先リストのサイズ（すなわち、「"result.getFileList.size"」）を参照することが定義されている。したがって、この場合、反復回数（numberOfIterations）は「Ｎ」である。
【０１９９】
すなわち、反復コンポーネント４０１は、まず、処理フローの実行要求をフロー実行部３０１に送信する（ステップＳ１６０４）。なお、当該実行要求には、パラメータ１１２１に定義されたフローＩＤと、型変換管理部３０４から受信したデータと、パラメータ情報とが含まれる。
【０２００】
ここで、パラメータ情報は、反復コンポーネント４０１に対するパラメータ情報に含まれていたパラメータ１１２２である。すなわち、反復コンポーネント４０１は、子フローのフロー詳細が定義されたパラメータ１１２２を、パラメータ情報として、フロー実行部３０１に送信する。
【０２０１】
次に、フロー実行部３０１は、処理フローの実行要求を受信すると、当該実行要求に含まれるフロー詳細に基づく一連の処理（すなわち、子フロー）を実行する（ステップＳ１６０５）。
【０２０２】
そして、フロー実行部３０１は、当該一連の処理の処理結果を示すデータを反復コンポーネント４０１に返信する。
【０２０３】
その後、反復コンポーネント４０１は、子フローの処理結果を示すデータをフロー実行部３０１から受信すると、実行済回数を変数「index」に「１」を加算する（ステップＳ１６０４）。
【０２０４】
このように、反復コンポーネント４０１は、処理フロー（子フロー）の実行要求を繰り返しフロー実行部３０１に送信することで、当該子フローを繰り返し実行させる。これにより、本実施形態に係るサービス提供システム１０では、反復コンポーネント４０１により、処理フローに含まれる１以上の処理の反復を実現することができる。
【０２０５】
ここで、上記のステップＳ１６０５における子フローの実行処理について、図１７を参照しながら説明する。図１７は、本実施形態に係る子フローの実行処理の一例を示すシーケンス図である。
【０２０６】
フロー実行部３０１は、処理フローの実行要求を受信すると、当該実行要求に含まれるパラメータ情報に基づくコンポーネントの取得要求をコンポーネント管理部３０２に送信する（ステップＳ１７０１）。
【０２０７】
すなわち、フロー実行部３０１は、パラメータ１１２２の処理定義１１３１に含まれる「"component"」に定義されている「"getFile"」に対応するファイル取得コンポーネント４０４の取得要求をコンポーネント管理部３０２に送信する。
【０２０８】
コンポーネント管理部３０２は、コンポーネントの取得要求を受信すると、ファイル取得コンポーネント４０４を生成する（ステップＳ１７０２）。なお、ファイル取得コンポーネント４０４の生成は、コンポーネント共通Ｉ／Ｆ４００に定義されたコンポーネントを生成するためのＡＰＩを用いて行うことができる。
【０２０９】
そして、コンポーネント管理部３０２は、生成したファイル取得コンポーネント４０４をフロー実行部３０１に返信する。すなわち、コンポーネント管理部３０２は、例えば、ファイル取得コンポーネント４０４が展開されたメモリ（例えばＲＡＭ１４）上のアドレスをフロー実行部３０１に返信する。
【０２１０】
次に、フロー実行部３０１は、コンポーネント実行要求をファイル取得コンポーネント４０４に送信する（ステップＳ１７０３）。なお、当該実行要求には、データと、パラメータ情報とが含まれる。
【０２１１】
ここで、パラメータ情報は、パラメータ１１２２の処理定義１１３１に含まれる「"parameters"」に定義されている「"location":${result.getFileList.url[index]}」である。
【０２１２】
ファイル取得コンポーネント４０４は、コンポーネント実行要求を受信すると、コンポーネントの実行処理を行う（ステップＳ１７０４）。すなわち、ファイル取得コンポーネント４０４は、リソース管理部３０６を介して、リソース管理情報１７０Ｄに保存されている処理結果１７１に含まれる配列「"url[index]"」から格納先ＵＲＬを取得する。そして、ファイル取得コンポーネント４０４は、パラメータ情報に含まれるパラメータ「"location"」に、当該格納先ＵＲＬを指定して、電子ファイルを取得（ダウンロード）する。なお、「index」は、上述したように、実行済回数を示す変数である。
【０２１３】
そして、ファイル取得コンポーネント４０４は、当該実行処理の処理結果を示すデータをフロー実行部３０１に返信する。なお、ここで返信されるデータには、パラメータ「"location"」に指定された格納先ＵＲＬから取得（ダウンロード）された電子ファイルが含まれる。
【０２１４】
次に、フロー実行部３０１は、当該データを受信すると、反復コンポーネント４０１から受信した処理フローの実行要求に含まれるパラメータ情報に基づくコンポーネントの取得要求をコンポーネント管理部３０２に送信する（ステップＳ１７０５）。
【０２１５】
すなわち、フロー実行部３０１は、パラメータ１１２２の処理定義１１３２に含まれる「"component"」に定義されている「"ocr"」に対応するＯＣＲコンポーネント４０５の取得要求をコンポーネント管理部３０２に送信する。
【０２１６】
コンポーネント管理部３０２は、コンポーネントの取得要求を受信すると、ＯＣＲコンポーネント４０５を生成する（ステップＳ１７０６）。なお、ＯＣＲコンポーネント４０５の生成は、コンポーネント共通Ｉ／Ｆ４００に定義されたコンポーネントを生成するためのＡＰＩを用いて行うことができる。
【０２１７】
そして、コンポーネント管理部３０２は、生成したＯＣＲコンポーネント４０５をフロー実行部３０１に返信する。すなわち、コンポーネント管理部３０２は、例えば、ＯＣＲコンポーネント４０５が展開されたメモリ（例えばＲＡＭ１４）上のアドレスをフロー実行部３０１に返信する。
【０２１８】
次に、フロー実行部３０１は、コンポーネント実行要求をＯＣＲコンポーネント４０５に送信する（ステップＳ１７０７）。なお、当該実行要求には、データと、パラメータ情報とが含まれる。
【０２１９】
ここで、パラメータ情報は、パラメータ１１２２の処理定義１１３２に含まれる「"parameters"」に定義されている「"location":"English"」である。
【０２２０】
ＯＣＲコンポーネント４０５は、コンポーネント実行要求を受信すると、コンポーネントの実行処理を行う（ステップＳ１７０５）。すなわち、ＯＣＲコンポーネント４０５は、データに含まれる電子ファイルにＯＣＲ処理を行う。なお、ＯＣＲコンポーネント４０５は、ドキュメントサービス部１３０のＯＣＲ処理部１３２により、電子ファイルにＯＣＲ処理を実行する。
【０２２１】
そして、ＯＣＲコンポーネント４０５は、当該実行処理の処理結果を示すデータをフロー実行部３０１に返信する。なお、ここで返信されるデータには、ＯＣＲ処理後の電子ファイルが含まれる。
【０２２２】
以上のように、本実施形態に係るサービス提供システム１０では、反復コンポーネント４０１により、他の処理フロー（子フロー）を繰り返し実行させる。これにより、本実施形態に係るサービス提供システム１０では、１以上の処理の反復を実現することができる。
【０２２３】
しかも、本実施形態に係るサービス提供システム１０は、処理フローに含まれる処理の処理結果（すなわち、他のコンポーネントの処理結果）に応じて、反復コンポーネント４０１が他の処理フローを繰り返し実行させる回数を動的に制御することができる。
【０２２４】
ここで、「ＯＣＲ配信１」サービスを実現する処理フローの他の例について、図１８を参照しながら説明する。図１８は、「ＯＣＲ配信１」サービスを実現する処理フローの他の例を説明するための図である。
【０２２５】
図１８に示す処理フローは、反復コンポーネント４０１により子フローを実行させる毎に、異なるパラメータ情報を用いるものである。すなわち、図１８に示す処理フローでは、反復コンポーネント４０１は、１回目に子フローを実行させるときには、「パラメータ情報１」を用いる一方、２回目に子フローを実行させるときには、「パラメータ情報２」を用いる。
【０２２６】
このように、図１８に示す処理フローでは、反復コンポーネント４０１は、実行済回数に応じたパラメータ情報を用いて子フローを実行させる。
【０２２７】
ここで、図１８に示す処理フローの処理フロー情報１１００について、図１９を参照しながら説明する。図１９は、処理フロー情報１１００の他の例を示す図（その１）である。
【０２２８】
図１９に示すように、反復コンポーネント４０１の処理定義１１１２に含まれる「"parameters"」には、パラメータリスト１１２４が定義されている。また、パラメータリスト１１２４には、実行済回数が「０」であるときに用いるパラメータ１１２５と、実行済回数が「１」であるときに用いるパラメータ１１２６とが定義されている。
【０２２９】
すなわち、パラメータリスト１１２４に含まれるパラメータ１１２５及びパラメータ１１２６は、それぞれ１回目に子フロー実行させるときに用いるパラメータ及び２回目に子フローを実行させるときに用いるパラメータである。
【０２３０】
このように、パラメータリスト１１２４には、子フローの実行済回数毎に、パラメータが定義されている。これにより、反復コンポーネント４０１は、子フローの実行済回数毎に、異なるパラメータ情報を用いて子フローを実行させることができる。
【０２３１】
なお、図１９に示す処理フロー情報１１００には、処理定義１１１２に子フローに用いるデータを指定するパラメータ１１２７が定義されている。パラメータ１１２７の「"useOriginalFile"」が「"true"」である場合には、図１６に示す反復コンポーネントの実行処理で説明したように、反復コンポーネント４０１は、リスト取得コンポーネント４０２の実行処理の処理結果を示すデータを用いて、子フローを実行させる。一方、パラメータ１１２７の「"useOriginalFile"」が「"false"」である場合には、反復コンポーネント４０１は、実行済回数が１以上のときに、１つ前に実行された子フローの実行処理の処理結果を示すデータを用いて、次の子フローを実行させる。
【０２３２】
このように、反復コンポーネント４０１は、実行済回数が１以上である場合において、１つ前の子フローの実行処理の処理結果を示すデータを用いて、次の子フローの実行処理を行うようにすることができる。
【０２３３】
ここで、図１８に示す処理フローにおける反復コンポーネント４０１の実行処理について、図２０を参照しながら説明する。図２０は、本実施形態に係る反復コンポーネント４０１の実行処理の他の例を示すシーケンス図（その１）である。以降では、反復コンポーネント４０１が子フローを実行させる回数（反復回数）は「２」であるものとして説明する。なお、ステップＳ１６０１、ステップＳ１６０２、及びステップＳ１６０５の処理は、図１６と同様であるため、その説明を省略する。
【０２３４】
反復コンポーネント４０１は、型変換管理部３０４からデータを受信すると、処理フローの実行要求をフロー実行部３０１に送信する（ステップＳ２００１）。なお、当該実行要求には、パラメータ１１２１に定義されたフローＩＤと、当該データと、パラメータ情報１とが含まれる。
【０２３５】
ここで、パラメータ情報１は、反復コンポーネント４０１に対するパラメータ情報に含まれていたパラメータリスト１１２４のうちのパラメータ１１２５である。すなわち、反復コンポーネント４０１は、実行済回数が「０」であるときに用いるパラメータ１１２５を、パラメータ情報１として、フロー実行部３０１に送信する。
【０２３６】
これにより、フロー実行部３０１により、パラメータ情報１（パラメータ１１２５として定義されたフロー詳細）に基づく一連の処理が実行される。
【０２３７】
また、反復コンポーネント４０１は、１回目の処理フロー（子フロー）の実行処理の処理結果を示すデータを受信すると、２回目の処理フロー（子フロー）の実行要求をフロー実行部３０１に送信する（ステップＳ２００２）。なお、当該実行要求には、パラメータ１１２１に定義されたフローＩＤと、当該データと、パラメータ情報２とが含まれる。
【０２３８】
ここで、パラメータ情報１は、反復コンポーネント４０１に対するパラメータ情報に含まれていたパラメータリスト１１２４のうちのパラメータ１１２６である。すなわち、反復コンポーネント４０１は、実行済回数が「１」であるときに用いるパラメータ１１２６を、パラメータ情報２として、フロー実行部３０１に送信する。
【０２３９】
これにより、フロー実行部３０１により、パラメータ情報２（パラメータ１１２６として定義されたフロー詳細）に基づく一連の処理が実行される。
【０２４０】
このように、反復コンポーネント４０１は、実行済回数毎に、異なるパラメータ情報を指定した子フローの実行要求をフロー実行部３０１に送信することができる。
【０２４１】
ここで、「ＯＣＲ配信１」サービスを実現する処理フローの処理フロー情報１１００の他の例について、図２１を参照しながら説明する。図２１は、処理フロー情報１１００の他の例を示す図（その２）である。
【０２４２】
図２１に示すように、反復コンポーネント４０１の処理定義１１１２に含まれる「"parameters"」には、次の子フローをスキップさせる否かを判定するためのパラメータ１１２８が定義されている。パラメータ１１２８には、次の子フローを実行させるための「"（条件式）"」（例えば、論理式）が定義されている。これにより、反復コンポーネント４０１は、「"（条件式）"」を満たす場合に次の子フローを実行させる一方で、「"（条件式）"」を満たさない場合には次の子フローの実行をスキップさせることができる。
【０２４３】
なお、パラメータ１１２８には、例えば、子フローの繰り返し実行を中止させるか否かを示す「"breakCondition":"（条件式）"」が定義されていても良い。この場合、「"（条件式）"」には、子フローの繰り返し実行を中止させるための条件式が定義される。これにより、反復コンポーネント４０１は、パラメータ１１２８に定義された「"（条件式）"」を満たす場合に、子フローの繰り返し実行を中止させることができる。
【０２４４】
ここで、図２１に示す処理フロー情報１１００における反復コンポーネント４０１の実行処理について、図２２を参照しながら説明する。図２２は、本実施形態に係る反復コンポーネント４０１の実行処理の他の例を示すシーケンス図（その２）である。なお、ステップＳ１６０１〜ステップＳ１６０３、ステップＳ１６０５〜ステップＳ１６０６の処理は、図１６と同様であるため、その説明を省略する。
【０２４５】
ステップＳ１６０３に続いて、反復コンポーネント４０１は、パラメータ１１２８に定義された「"（条件式）"」を満たすか否かを判定する（ステップＳ２２０１）。
【０２４６】
ステップＳ２２０１において、反復コンポーネント４０１は、「"（条件式）"」を満たすと判定した場合、ステップＳ１６０４及びステップＳ１６０５の処理を実行する。
【０２４７】
一方で、ステップＳ２２０１において、反復コンポーネント４０１は、「"（条件式）"」を満たさないと判定した場合、ステップＳ１６０６の処理を実行する。すなわち、反復コンポーネント４０１は、子フローを実行させずに、実行済回数を示す変数「index」に「１」を加算する。
【０２４８】
これにより、反復コンポーネント４０１は、例えば、実行済回数を示す変数「index」が「ｎ」である場合において、「"（条件式）"」を満たさないときは、ｎ＋１回目の子フローの実行をスキップすることができる。
【０２４９】
以上のように、本実施形態に係るサービス提供システム１０は、サービスを実現する一連の処理において、１以上の処理を反復実行することができる。
【０２５０】
しかも、本実施形態に係るサービス提供システム１０では、当該１以上の処理を反復実行させる回数を、他の処理の処理結果に応じて動的に異なるようにすることができる。また、本実施形態に係るサービス提供システム１０では、当該１以上の処理に用いるデータやパラメータ等を、当該１以上の処理の実行回数に応じて動的に決定することができる。
【０２５１】
これにより、本実施形態に係るサービス提供システム１０では、１以上の処理の反復により実現される種々のサービスを提供することができるようになる。
【０２５２】
［第二の実施形態］
次に、第二の実施形態について説明する。従来技術では、一連の処理において、他の一連の処理を呼び出して実行することができなかった。したがって、当該一連の処理の各処理を実行するコンポーネントは、他の一連の処理が実行された際の処理結果を利用することができなかった。そこで、第二の実施形態では、他の一連の処理の呼び出しが含まれる一連の処理を実行することを目的とするものである。
【０２５３】
なお、第二の実施形態では、主に、第一の実施形態との相違点について説明し、第一の実施形態と実質的に同一の機能を有する箇所及び実質的に同一の処理を行う箇所については同一の符号を付与し、その説明を省略する。
【０２５４】
＜サービス提供システムが提供するサービス＞
まず、本実施形態に係るサービス提供システム１０が提供するサービスについて説明する。
【０２５５】
本実施形態に係るサービス提供システム１０は、外部ストレージシステム３０における電子ファイルの格納先リストを取得した上で、当該リストに基づいて取得した最新の電子ファイルをＯＣＲ処理して、メール配信するサービスを提供する。
【０２５６】
本実施形態に係るサービス提供システム１０は、上述したサービス（以降では、「ＯＣＲ配信２」サービス、又は、単に「ＯＣＲ配信２」とも表す。）を提供するものとして説明する。
【０２５７】
ただし、サービス提供システム１０により提供されるサービスは、これに限られない。例えば、サービス提供システム１０は、外部ストレージシステム３０における電子ファイルの格納先リストを取得した上で、当該リストに基づいて取得した最新の電子ファイルを編集（例えば、所定の情報の追加等）して、メール配信するサービスを提供しても良い。
【０２５８】
また、例えば、サービス提供システム１０は、外部ストレージシステム３０における電子ファイルの格納先リストを取得した上で、当該リストに基づいて取得した最新の電子ファイルを圧縮して、メール配信するサービスを提供しても良い。
【０２５９】
このように、本実施形態に係るサービス提供システム１０は、外部ストレージシステム３０と連携した各種のサービスを提供する。
【０２６０】
＜機能構成＞
次に、ロジック処理部１１２の詳細な機能構成について、図２３を参照しながら説明する。図２３は、本実施形態に係るロジック処理部１１２の一例の機能構成を示す図である。
【０２６１】
図２３に示すロジック処理部１１２のコンポーネント群３０３には、フロー実行コンポーネント４０６が含まれる。フロー実行コンポーネント４０６は、他の処理フローを実行するためのコンポーネントである。
【０２６２】
ここで、「ＯＣＲ配信２」サービスを提供するアプリ情報１０００に含まれる処理フロー情報１１００について、図２４を参照しながら説明する。図２４は、「ＯＣＲ配信２」サービスを実現する処理フロー（親フロー）が定義された処理フロー情報１１００の一例を示す図である。なお、以降では、図２４に示す処理フロー情報１１００に基づく処理フローを「親フロー」、親フローから呼び出されることにより実行される他の処理フローを「子フロー」とも表す。
【０２６３】
図２４に示す処理フロー情報１１００は、「ＯＣＲ配信２」サービスを実現する一連の処理（処理フロー）が定義された情報である。
【０２６４】
図２４に示す処理フロー情報１１００には、処理フロー情報１１００を一意に識別する識別情報を示すフローＩＤ１２０１と、処理フローに含まれる各処理の処理内容が定義されたフロー詳細１２０２とが含まれる。
【０２６５】
フロー詳細１２０２には、処理フローに含まれる各処理をそれぞれ定義した処理定義１２１１〜１２１３が含まれる。
【０２６６】
処理定義１２１１の「"component"」には、リスト取得コンポーネント４０２により処理を実行することを示す「"getFileList"」が定義されている。また、「"parameters"」には、リスト取得コンポーネント４０２に対するパラメータ「"storage"」が定義されておいる。
【０２６７】
同様に、処理定義１２１３の「"component"」には、メール配信コンポーネント４０３により処理を実行することを示す「"sendMail"」が定義されている。また、「"parameters"」には、メール配信コンポーネント４０３に対するパラメータ「"to"」が定義されている。
【０２６８】
同様に、処理定義１２１２の「"component"」には、フロー実行コンポーネント４０６により処理を実行することを示す「"execute"」が定義されている。また、「"parameters"」には、フロー実行コンポーネント４０６に対するパラメータ１２２１が定義されている。
【０２６９】
ここで、パラメータ１２２１は、フロー実行コンポーネント４０６が実行させる他の処理フローのフローＩＤが定義されたパラメータである。このように、フロー実行コンポーネント４０６による処理を定義した処理定義１２１２には、当該フロー実行コンポーネント４０６が実行させる他の処理フローのフローＩＤが定義されている。これにより、後述するように、フロー実行コンポーネント４０６により、他の処理フローを実行させることができる。
【０２７０】
ここで、図２４に示す処理フロー情報１１００に定義されたフロー実行コンポーネント４０６が実行させる他の処理フロー（子フロー）の処理フロー情報１１００について、図２５を参照しながら説明する。図２５は、「ＯＣＲ配信２」サービスを実現する処理フロー（子フロー）が定義された処理フロー情報１１００の一例を示す図である。
【０２７１】
図２５に示す処理フロー情報１１００は、図２４に示す処理フロー情報１１００に基づく一連の処理から呼び出される他の処理フローを実行するための処理フロー情報１１００である。
【０２７２】
図２５に示す処理フロー情報１１００には、処理フロー情報１１００を一意に識別する識別情報を示すフローＩＤ１３０１と、処理フローに含まれる各処理の処理内容が定義されたフロー詳細１３０２とが含まれる。
【０２７３】
フロー詳細１３０２には、処理フローに含まれる各処理をそれぞれ定義した処理定義１３１２〜１３２２が含まれる。
【０２７４】
処理定義１３１２の「"component"」には、ファイル取得コンポーネント４０４により処理を実行することを示す「"getFile"」が定義されている。また、「"parameters"」には、ファイル取得コンポーネント４０４に対するパラメータ「"location"」が定義されておいる。なお、パラメータ「"location"」は、電子ファイルの格納先リストを示す情報が定義されるパラメータである。
【０２７５】
同様に、処理定義１３２２の「"component"」には、ＯＣＲコンポーネント４０５により処理を実行することを示す「"ocr"」が定義されている。また、「"parameters"」には、ＯＣＲコンポーネント４０５に対するパラメータ「"language"」が定義されている。
【０２７６】
ここで、図２４に示す処理フロー情報１１００に基づく処理フロー（すなわち、「ＯＣＲ配信２」サービスを実現する処理フロー）を、図２６に示す。図２６は、「ＯＣＲ配信２」サービスを実現する処理フローの一例を説明するための図である。
【０２７７】
図２６に示すように、「ＯＣＲ配信２」サービスを実現する処理フローでは、まず、リスト取得コンポーネント４０２により、外部ストレージシステム３０に格納されている電子ファイルの格納先リストが取得される。
【０２７８】
次に、フロー実行コンポーネント４０６により、図２５に示す処理フロー情報１１００に基づく処理フローである子フローが実行される。すなわち、フロー実行コンポーネント４０６は、ファイル取得コンポーネント４０４による処理と、ＯＣＲコンポーネント４０５による処理とを実行させる。これにより、格納先リストに含まれる格納先のうち、最新の電子ファイルの格納先に基づいて、当該最新の電子ファイルが取得（ダウンロード）され、ＯＣＲ処理が行われる。
【０２７９】
最後に、メール配信コンポーネント４０３により、ＯＣＲ処理後の電子ファイルがメール配信される。
【０２８０】
このように、「ＯＣＲ配信２」サービスでは、親フローのフロー実行コンポーネント４０６が子フロー（他の処理フロー）を実行させることで、処理フローにおいて他の処理フローの呼び出しを実現している。なお、子フローにフロー実行コンポーネント４０６が含まれる場合には、他の処理フロー（孫フロー）を実行させれば良い。
【０２８１】
＜処理の詳細＞
次に、本実施形態に係る情報処理システム１の処理の詳細について説明する。
【０２８２】
以降では、機器２０のユーザＵが、ブラウザ２１０を用いて、サービス提供システム１０により提供される「ＯＣＲ配信２」サービスを利用する場合の処理について、図２７を参照しながら説明する。図２７は、本実施形態に係る「ＯＣＲ配信２」サービスを利用する場合の全体処理の一例を示すシーケンス図である。なお、図２７のステップＳ１００１〜ステップＳ１００４は、図１０と同様であるため、その説明を省略する。
【０２８３】
ステップＳ１００４に続いて、ユーザＵは、サービス一覧画面４１００のサービス名一覧４１０１から「ＯＣＲ配信２」を選択して、サービスの選択操作を行う（ステップＳ２７０１）。
【０２８４】
機器２０のブラウザ２１０は、サービスの選択操作を受け付けると、サービス画面の取得要求をＷｅｂサービス処理部１２０に送信する（ステップＳ２７０２）。なお、当該取得要求には、ユーザＵにより選択された「ＯＣＲ配信２」サービスを提供するアプリ情報１０００のアプリＩＤが含まれる。
【０２８５】
Ｗｅｂサービス処理部１２０は、サービス画面の取得要求を受信すると、当該取得要求に含まれるアプリＩＤに関連付けて画面情報記憶部１６０に記憶されている画面情報２０００（サービス画面の画面情報２０００）を取得する（ステップＳ２７０３）。そして、Ｗｅｂサービス処理部１２０は、取得した画面情報２０００をブラウザ２１０に返信する。
【０２８６】
機器２０のブラウザ２１０は、サービス画面の画面情報２０００を受信すると、当該画面情報２０００に基づいて、例えば図２８に示すサービス画面４３００を操作パネル２２に表示させる（ステップＳ２７０４）。
【０２８７】
図２８に示すサービス画面４３００は、ユーザＵにより選択された「ＯＣＲ配信２」サービスを利用するための画面である。図２８に示すサービス画面４３００には、ストレージ指定欄４３０１と、メールアドレス指定欄４３０２と、実行ボタン４３０３とが含まれる。
【０２８８】
ここで、ストレージ指定欄４３０１は、電子ファイルの格納先リストを取得する外部ストレージシステム３０のストレージサービス名を指定する欄である。メールアドレス指定欄４３０２は、ＯＣＲ処理された電子ファイルをメール送信する宛先（メールアドレス）を指定する欄である。なお、サービス画面４３００には、例えば、ＯＣＲ処理された電子ファイルをＣＣやＢＣＣでメール送信する宛先を指定するためのＣＣ指定欄やＢＣＣ指定欄等が含まれていても良い。
【０２８９】
次に、ユーザＵは、サービス画面４３００において、ストレージ指定欄４３０１に所望のストレージサービス名を指定すると共に、メールアドレス指定欄４３０２に所望のメールアドレスを指定した上で、実行ボタン４３０３を押下する（ステップＳ２７０５）。
【０２９０】
ここで、以降では、ユーザＵにより、ストレージ指定欄４３０１に「ストレージＡ」が指定されると共に、メールアドレス指定欄４３０２にメールアドレス「ｈｏｇｅ＠ｆｕｇａ．ｃｏｍ」が指定された上で、実行ボタン４３０３が押下されたものとして説明する。
【０２９１】
機器２０のブラウザ２１０は、実行ボタン４３０３の押下操作を受け付けると、「ＯＣＲ配信２」サービスを実現する処理フローの実行要求をＷｅｂサービス処理部１２０に送信する（ステップＳ２７０６）。
【０２９２】
なお、当該実行要求には、「ＯＣＲ配信２」サービスを提供するアプリ情報１０００のアプリＩＤと、当該サービスを実現するための処理フロー情報１１００のフローＩＤが含まれる。また、当該実行要求には、サービス画面４３００においてユーザＵにより入力された入力情報（すなわち、ストレージサービス名及びメールアドレス）が含まれる。
【０２９３】
Ｗｅｂサービス処理部１２０は、処理フローの実行要求を受信すると、当該実行要求を、入出力サービス処理部１１０のロジック処理部１１２に送信する（ステップＳ２７０７）。
【０２９４】
入出力サービス処理部１１０のロジック処理部１１２は、処理フローの実行要求を受信すると、当該実行要求に含まれるアプリＩＤ及びフローＩＤに対応する処理フロー情報１１００に基づく一連の処理（すなわち、親フロー）を実行する（ステップＳ２７０８）。
【０２９５】
そして、ロジック処理部１１２は、当該一連の処理の処理結果を、Ｗｅｂサービス処理部１２０を介して、機器２０のブラウザ２１０に返信する。
【０２９６】
これにより、本実施形態に係るサービス提供システム１０において、「ＯＣＲ配信２」サービスを実現する一連の処理が実行され、機器２０に対して当該サービスが提供される。
【０２９７】
ここで、上記のステップＳ２７０８の処理フローの実行処理（親フローの実行処理）の詳細について、図２９を参照しながら説明する。図２９は、本実施形態に係る親フローの実行処理の一例を示すシーケンス図である。
【０２９８】
フロー実行部３０１は、処理フローの実行要求を受信すると、処理フロー情報の取得要求をアプリ管理部１１１に送信する（ステップＳ２９０１）。なお、当該取得要求には、Ｗｅｂサービス処理部１２０から受信した処理フローの実行要求に含まれるアプリＩＤと、フローＩＤとが含まれる。
【０２９９】
アプリ管理部１１１は、処理フロー情報の取得要求を受信すると、当該取得要求に含まれるアプリＩＤ及びフローＩＤに対応する処理フロー情報１１００をアプリ情報記憶部１５０から取得する（ステップＳ２９０２）。そして、アプリ管理部１１１は、取得した処理フロー情報１１００をフロー実行部３０１に返信する。これにより、フロー実行部３０１には、図２４に示す処理フロー情報１１００が返信される。
【０３００】
フロー実行部３０１は、アプリ管理部１１１から処理フロー情報１１００を受信すると、当該処理フロー情報１１００に基づくコンポーネントの取得要求をコンポーネント管理部３０２に送信する（ステップＳ２９０３）。
【０３０１】
すなわち、フロー実行部３０１は、図２４に示す処理フロー情報１１００の処理定義１２１１に含まれる「"component"」に定義されている「"getFileList"」に対応するリスト取得コンポーネント４０２の取得要求をコンポーネント管理部３０２に送信する。
【０３０２】
コンポーネント管理部３０２は、コンポーネントの取得要求を受信すると、リスト取得コンポーネント４０２を生成する（ステップＳ２９０４）。なお、リスト取得コンポーネント４０２の生成は、コンポーネント共通Ｉ／Ｆ４００に定義されたコンポーネントを生成するためのＡＰＩを用いて行うことができる。
【０３０３】
そして、コンポーネント管理部３０２は、生成したリスト取得コンポーネント４０２をフロー実行部３０１に返信する。すなわち、コンポーネント管理部３０２は、例えば、リスト取得コンポーネント４０２が展開されたメモリ（例えばＲＡＭ１４）上のアドレスをフロー実行部３０１に返信する。
【０３０４】
次に、フロー実行部３０１は、コンポーネント実行要求をリスト取得コンポーネント４０２に送信する（ステップＳ２９０５）。なお、当該実行要求には、データと、パラメータ情報とが含まれる。
【０３０５】
ここで、データは、データ型「ＩｎｐｕｔＳｔｒｅａｍ」として、ブラウザ２１０から受信した入力情報（すなわち、ストレージサービス名「ストレージＡ」）である。
【０３０６】
また、パラメータ情報は、図２４に示す処理フロー情報１１００の処理定義１２１１に含まれる「"parameters"」に定義されている「"storage":null」である。
【０３０７】
リスト取得コンポーネント４０２は、コンポーネント実行要求を受信すると、コンポーネントの実行処理を行う（ステップＳ２９０６）。そして、リスト取得コンポーネント４０２は、当該実行処理の処理結果を示すデータをフロー実行部３０１に返信する。
【０３０８】
なお、ここで返信されるデータには、例えば、リスト取得コンポーネント４０２の実行処理が正常に終了したことを示す情報が含まれる。リスト取得コンポーネント４０２の実行処理は、図１３を参照しながら説明した処理と同様である。
【０３０９】
次に、フロー実行部３０１は、コンポーネントの実行処理の処理結果を示すデータを受信すると、処理フロー情報１１００に基づくコンポーネントの取得要求をコンポーネント管理部３０２に送信する（ステップＳ２９０７）。
【０３１０】
すなわち、フロー実行部３０１は、図２４に示す処理フロー情報１１００の処理定義１２１２に含まれる「"component"」に定義されている「"execute"」に対応するフロー実行コンポーネント４０６の取得要求をコンポーネント管理部３０２に送信する。
【０３１１】
コンポーネント管理部３０２は、コンポーネントの取得要求を受信すると、フロー実行コンポーネント４０６を生成する（ステップＳ２９０８）。なお、フロー実行コンポーネント４０６の生成は、コンポーネント共通Ｉ／Ｆ４００に定義されたコンポーネントを生成するためのＡＰＩを用いて行うことができる。
【０３１２】
そして、コンポーネント管理部３０２は、生成したフロー実行コンポーネント４０６をフロー実行部３０１に返信する。すなわち、コンポーネント管理部３０２は、例えば、フロー実行コンポーネント４０６が展開されたメモリ（例えばＲＡＭ１４）上のアドレスをフロー実行部３０１に返信する。
【０３１３】
次に、フロー実行部３０１は、コンポーネント実行要求をフロー実行コンポーネント４０６に送信する（ステップＳ２９０９）。なお、当該実行要求には、データと、パラメータ情報とが含まれる。
【０３１４】
ここで、パラメータ情報は、図２４に示す処理フロー情報１１００の処理定義１２１２に含まれる「"parameters"」に定義されているパラメータ１２２１である。
【０３１５】
フロー実行コンポーネント４０６は、コンポーネント実行要求を受信すると、コンポーネントの実行処理を行う（ステップＳ２９１０）。そして、フロー実行コンポーネント４０６は、当該実行処理の処理結果を示すデータをフロー実行部３０１に返信する。なお、フロー実行コンポーネント４０６の実行処理の詳細については後述する。
【０３１６】
以降では、フロー実行コンポーネント４０６の実行処理により、子フローが実行され、電子ファイルの格納先ＵＲＬを示す「"url[0]"」に基づいて、最新の電子ファイルが取得されて、当該電子ファイルに対してＯＣＲ処理が行われたものとして説明する。
【０３１７】
なお、ここで返信されるデータには、例えば、フロー実行コンポーネント４０６の実行処理が正常に終了したことを示す情報と、ＯＣＲ処理後の電子ファイルとが含まれる。
【０３１８】
フロー実行部３０１は、コンポーネントの実行処理の処理結果を示すデータを受信すると、処理フロー情報１１００に基づくコンポーネントの取得要求をコンポーネント管理部３０２に送信する（ステップＳ２９１１）。
【０３１９】
すなわち、フロー実行部３０１は、図２４に示す処理フロー情報１１００の処理定義１２１３に含まれる「"component"」に定義されている「"sendMail"」に対応するメール配信コンポーネント４０３の取得要求をコンポーネント管理部３０２に送信する。
【０３２０】
コンポーネント管理部３０２は、コンポーネントの取得要求を受信すると、メール配信コンポーネント４０３を生成する（ステップＳ２９１２）。なお、メール配信コンポーネント４０３の生成は、コンポーネント共通Ｉ／Ｆ４００に定義されたコンポーネントを生成するためのＡＰＩを用いて行うことができる。
【０３２１】
そして、コンポーネント管理部３０２は、生成したメール配信コンポーネント４０３をフロー実行部３０１に返信する。すなわち、コンポーネント管理部３０２は、例えば、メール配信コンポーネント４０３が展開されたメモリ（例えばＲＡＭ１４）上のアドレスをフロー実行部３０１に返信する。
【０３２２】
次に、フロー実行部３０１は、コンポーネント実行要求をメール配信コンポーネント４０３に送信する（ステップＳ２９１３）。なお、当該実行要求には、データと、パラメータ情報とが含まれる。
【０３２３】
ここで、データには、入力情報に含まれるメールアドレス「ｈｏｇｅ＠ｆｕｇａ．ｃｏｍ」が含まれる。
【０３２４】
また、パラメータ情報は、図２４に示す処理フロー情報１１００の処理定義１２１３に含まれる「"parameters"」に定義されている「"to":null」である。
【０３２５】
メール配信コンポーネント４０３は、コンポーネント実行要求を受信すると、コンポーネントの実行処理を行う（ステップＳ２９１４）。そして、メール配信コンポーネント４０３は、当該実行処理の処理結果を示すデータをフロー実行部３０１に返信する。
【０３２６】
なお、ここで返信されるデータには、例えば、メール配信コンポーネント４０３の実行処理が正常に終了したことを示す情報が含まれる。メール配信コンポーネント４０３の実行処理は、図１５を参照しながら説明した処理と同様である。
【０３２７】
ここで、上記のステップＳ２９１０におけるフロー実行コンポーネント４０６の実行処理について、図３０を参照しながら説明する。図３０は、本実施形態に係るフロー実行コンポーネント４０６の実行処理の一例を示すシーケンス図である。
【０３２８】
まず、フロー実行コンポーネント４０６は、型変換要求を型変換管理部３０４に送信する（ステップＳ３００１）。なお、当該型変換要求には、データと、フロー実行コンポーネント４０６が扱うことができるデータ型を示す「ＬｏｃａｌＦｉｌｅＰａｔｈ」の指定とが含まれる。
【０３２９】
型変換管理部３０４は、型変換要求を受信すると、当該型変換要求に含まれるデータのデータ型と、指定されたデータ型とが一致するか否かをチェックする（ステップＳ３００２）。
【０３３０】
ここで、受信した型変換要求に含まれるデータのデータ型は「ＬｏｃａｌＦｉｌｅＰａｔｈ」であり、指定されたデータ型も「ＬｏｃａｌＦｉｌｅＰａｔｈ」である。したがって、型変換管理部３０４は、型変換要求に含まれるデータのデータ型と、指定されたデータ型とが一致するものと判断する。
【０３３１】
すると、型変換管理部３０４は、型変換要求に含まれるデータを、フロー実行コンポーネント４０６に返信する。このように、データ型のチェックにおいてデータ型が一致するものと判断された場合、型変換管理部３０４は、型変換の生成を行わない。
【０３３２】
フロー実行コンポーネント４０６は、データを受信すると、処理フローの実行要求をフロー実行部３０１に送信する（ステップＳ３００３）。なお、当該実行要求には、型変換管理部３０４から受信したデータと、パラメータ情報とが含まれる。ここで、パラメータ情報は、パラメータ１２２１に定義されたフローＩＤである。
【０３３３】
次に、フロー実行部３０１は、処理フローの実行要求を受信すると、当該実行要求に含まれるフローＩＤの処理フロー情報１１００に基づく一連の処理（すなわち、子フロー）を実行する（ステップＳ３００４）。
【０３３４】
そして、フロー実行部３０１は、当該一連の処理の処理結果を示すデータをフロー実行コンポーネント４０６に返信する。
【０３３５】
このように、フロー実行コンポーネント４０６は、他の処理フロー（子フロー）の実行要求をフロー実行部３０１に送信することで、当該子フローを実行させる。これにより、本実施形態に係るサービス提供システム１０では、フロー実行コンポーネント４０６により、他の処理フローの呼び出しを実現することができる。
【０３３６】
ここで、上記のステップＳ３００４における子フローの実行処理について、図３１を参照しながら説明する。図３１は、本実施形態に係る子フローの実行処理の一例を示すシーケンス図である。
【０３３７】
フロー実行部３０１は、処理フローの実行要求を受信すると、処理フロー情報の取得要求をアプリ管理部１１１に送信する（ステップＳ３１０１）。なお、当該取得要求には、フロー実行コンポーネント４０６から受信した処理フローの実行要求に含まれるパラメータ情報が示すフローＩＤが含まれる。
【０３３８】
アプリ管理部１１１は、処理フロー情報の取得要求を受信すると、当該取得要求に含まれるフローＩＤに対応する処理フロー情報１１００をアプリ情報記憶部１５０から取得する（ステップＳ３１０２）。そして、アプリ管理部１１１は、取得した処理フロー情報１１００をフロー実行部３０１に返信する。これにより、フロー実行部３０１には、図２５に示す処理フロー情報１１００が返信される。
【０３３９】
フロー実行部３０１は、アプリ管理部１１１から処理フロー情報１１００を受信すると、当該処理フロー情報１１００に基づくコンポーネントの取得要求をコンポーネント管理部３０２に送信する（ステップＳ３１０３）。
【０３４０】
すなわち、フロー実行部３０１は、図２５に示す処理フロー情報１１００の処理定義１３１２に含まれる「"component"」に定義されている「"getFile"」に対応するファイル取得コンポーネント４０４の取得要求をコンポーネント管理部３０２に送信する。
【０３４１】
コンポーネント管理部３０２は、コンポーネントの取得要求を受信すると、ファイル取得コンポーネント４０４を生成する（ステップＳ３１０４）。なお、ファイル取得コンポーネント４０４の生成は、コンポーネント共通Ｉ／Ｆ４００に定義されたコンポーネントを生成するためのＡＰＩを用いて行うことができる。
【０３４２】
そして、コンポーネント管理部３０２は、生成したファイル取得コンポーネント４０４をフロー実行部３０１に返信する。すなわち、コンポーネント管理部３０２は、例えば、ファイル取得コンポーネント４０４が展開されたメモリ（例えばＲＡＭ１４）上のアドレスをフロー実行部３０１に返信する。
【０３４３】
次に、フロー実行部３０１は、コンポーネント実行要求をファイル取得コンポーネント４０４に送信する（ステップＳ３１０５）。なお、当該実行要求には、データと、パラメータ情報とが含まれる。
【０３４４】
ここで、パラメータ情報は、図２５に示す処理フロー情報１１００の処理定義１２１２に含まれる「"parameters"」に定義されている「"location" : ${result.getFileList.url[0]}」である。
【０３４５】
ファイル取得コンポーネント４０４は、コンポーネント実行要求を受信すると、コンポーネントの実行処理を行う（ステップＳ３１０６）。すなわち、ファイル取得コンポーネント４０４は、リソース管理部３０６を介して、リソース管理情報１７０Ｄに保存されている処理結果１７１に含まれる配列「"url[0]"」から格納先ＵＲＬを取得する。そして、ファイル取得コンポーネント４０４は、パラメータ情報に含まれるパラメータ「"location"」に、当該格納先ＵＲＬを指定して、電子ファイルを取得（ダウンロード）する。
【０３４６】
そして、ファイル取得コンポーネント４０４は、当該実行処理の処理結果を示すデータをフロー実行部３０１に返信する。なお、ここで返信されるデータには、パラメータ「"location"」に指定された格納先ＵＲＬから取得（ダウンロード）された電子ファイルが含まれる。
【０３４７】
これにより、ファイル取得コンポーネント４０４により、配列「"url[0]"」が示す電子ファイル（すなわち、最新の電子ファイル）が取得される。
【０３４８】
なお、上記では、ファイル取得コンポーネント４０４により、最新の電子ファイルが取得される場合について説明したが、これに限られない。例えば、処理定義１３１２に含まれる「"parameters"」において「"location":${result.getFileList.url[N-1]}」と定義することで、ファイル取得コンポーネント４０４により、配列「"url[N-1]"」が示す電子ファイル（すなわち、最も古い電子ファイル）を取得することもできる。
【０３４９】
次に、フロー実行部３０１は、当該データを受信すると、フロー実行コンポーネント４０６から受信した処理フローの実行要求に含まれるパラメータ情報に基づくコンポーネントの取得要求をコンポーネント管理部３０２に送信する（ステップＳ３１０７）。
【０３５０】
すなわち、フロー実行部３０１は、図２５に示す処理フロー情報１１００の処理定義１３２２に含まれる「"component"」に定義されている「"ocr"」に対応するＯＣＲコンポーネント４０５の取得要求をコンポーネント管理部３０２に送信する。
【０３５１】
コンポーネント管理部３０２は、コンポーネントの取得要求を受信すると、ＯＣＲコンポーネント４０５を生成する（ステップＳ３１０８）。なお、ＯＣＲコンポーネント４０５の生成は、コンポーネント共通Ｉ／Ｆ４００に定義されたコンポーネントを生成するためのＡＰＩを用いて行うことができる。
【０３５２】
そして、コンポーネント管理部３０２は、生成したＯＣＲコンポーネント４０５をフロー実行部３０１に返信する。すなわち、コンポーネント管理部３０２は、例えば、ＯＣＲコンポーネント４０５が展開されたメモリ（例えばＲＡＭ１４）上のアドレスをフロー実行部３０１に返信する。
【０３５３】
次に、フロー実行部３０１は、コンポーネント実行要求をＯＣＲコンポーネント４０５に送信する（ステップＳ３１０９）。なお、当該実行要求には、データと、パラメータ情報とが含まれる。
【０３５４】
ここで、パラメータ情報は、図２５に示す処理フロー情報１１００の処理定義１３２２に含まれる「"parameters"」に定義されている「"location":"English"」である。
【０３５５】
ＯＣＲコンポーネント４０５は、コンポーネント実行要求を受信すると、コンポーネントの実行処理を行う（ステップＳ３１１０）。すなわち、ＯＣＲコンポーネント４０５は、データに含まれる電子ファイルにＯＣＲ処理を行う。なお、ＯＣＲコンポーネント４０５は、ドキュメントサービス部１３０のＯＣＲ処理部１３２により、電子ファイルにＯＣＲ処理を実行する。
【０３５６】
そして、ＯＣＲコンポーネント４０５は、当該実行処理の処理結果を示すデータをフロー実行部３０１に返信する。なお、ここで返信されるデータには、ＯＣＲ処理後の電子ファイルが含まれる。
【０３５７】
以上のように、本実施形態に係るサービス提供システム１０では、フロー実行コンポーネント４０６により、他の処理フロー（子フロー）を実行させる。これにより、本実施形態に係るサービス提供システム１０では、他の処理フローの呼び出しを実現することができる。
【０３５８】
このため、本実施形態に係るサービス提供システム１０では、処理フローにおいて、他の処理フローの処理結果を利用することができるようになる。
【０３５９】
ここで、「ＯＣＲ配信２」サービスを実現する処理フローの処理フロー情報１１００の他の例について、図３２を参照しながら説明する。図３２は、「ＯＣＲ配信２」サービスを実現する処理フロー（親フロー）が定義された処理フロー情報１１００の他の例を示す図である。
【０３６０】
図３２に示すように、処理定義１２１２に含まれる「"parameters"」には、他の処理フローを実行させるか否かを判定するためのパラメータ１２２２が定義されている。パラメータ１２２２には、他の処理フローを実行させるための「"（条件式）"」（例えば、論理式）が定義されている。これにより、フロー実行コンポーネント４０６は、「"（条件式）"」を満たす場合に他の処理フローを実行させる一方で、「"（条件式）"」を満たさない場合には他の処理フローを実行させないようにすることができる。
【０３６１】
ここで、図３２に示す処理フロー情報１１００におけるフロー実行コンポーネント４０６の実行処理について、図３３を参照しながら説明する。図３３は、本実施形態に係るフロー実行コンポーネント４０６の実行処理の他の例を示すシーケンス図である。なお、ステップＳ３００１〜ステップＳ３００４の処理は、図３０と同様であるため、その説明を省略する。
【０３６２】
ステップＳ３００２に続いて、フロー実行コンポーネント４０６は、パラメータ１２２３に定義された「"（条件式）"」を満たすか否かを判定する（ステップＳ３３０１）。
【０３６３】
ステップＳ３３０１において、フロー実行コンポーネント４０６は、「"（条件式）"」を満たすと判定した場合、ステップＳ３００３の処理を実行する。
【０３６４】
一方で、ステップＳ３３０１において、フロー実行コンポーネント４０６は、「"（条件式）"」を満たさないと判定した場合、処理を終了させる。
【０３６５】
これにより、フロー実行コンポーネント４０６は、「"（条件式）"」を満たさない場合は、子フローを実行させないようにすることができる。
【０３６６】
以上のように、本実施形態に係るサービス提供システム１０は、サービスを実現する一連の処理において、他の一連の処理を実行することができる。このため、本実施形態に係るサービス提供システム１０では、一連の処理において、他の一連の処理の処理結果を用いることができる。
【０３６７】
これにより、本実施形態に係るサービス提供システム１０では、他の一連の処理を呼び出して、当該他の一連の処理の処理結果を用いる一連の処理により実現される種々のサービスを提供することができるようになる。
【０３６８】
本発明は、具体的に開示された上記の実施形態に限定されるものではなく、特許請求の範囲から逸脱することなく、種々の変形や変更が可能である。
【０３６９】
以上の説明に関し、更に以下の項を開示する。
（付記１）
１以上の情報処理装置を含み、所定の処理をそれぞれ実行する複数のプログラムを有する情報処理システムであって、
電子データを用いた一連の処理毎に、該一連の処理のそれぞれの処理を実行する１以上の前記プログラムを識別するプログラム識別情報と、１以上の前記プログラムの実行順とが定義されたフロー情報を、該フロー情報を識別するフロー識別情報と関連付けて記憶する記憶手段と、
前記情報処理システムに接続される１以上の機器のうちの一の機器から、電子データに関する情報と、第１のフロー識別情報とを受信する受信手段と、
前記記憶手段に記憶されているフロー情報のうち、前記受信手段により受信された前記第１のフロー識別情報と関連付けて記憶されている第１のフロー情報を取得する取得手段と、
前記取得手段により取得された前記第１のフロー情報に定義されている前記プログラム識別情報により識別されるプログラムそれぞれを、前記第１のフロー情報に定義されている前記実行順に従って実行させることで、前記受信手段により受信された前記電子データに関する情報に基づく電子データを用いた前記一連の処理を実行する実行手段と、を有し、
前記取得手段は、
他の一連の処理を呼び出す処理に係る前記所定の処理を実行するフロー実行プログラムを識別するプログラム識別情報が前記第１のフロー情報に定義されている場合、前記記憶手段に記憶されているフロー情報のうち、前記第１のフロー情報に含まれる第２のフロー識別情報と関連付けて記憶されている第２のフロー情報を取得し、
前記実行手段は、
前記取得手段により取得された前記第２のフロー情報に定義されている前記プログラム識別情報により識別されるプログラムそれぞれを、前記第２のフロー情報に定義されている前記実行順に従って実行させることで、前記一連の処理の実行中に、前記電子データを用いた前記他の一連の処理を呼び出して実行する、情報処理システム。
（付記２）
前記取得手段は、
前記フロー実行プログラムを識別するプログラム識別情報が前記第１のフロー情報に定義されている場合、前記フロー実行プログラムの実行に応じて、前記記憶手段に記憶されているフロー情報のうち、前記第２のフロー情報を取得する、付記１に記載の情報処理システム。
（付記３）
前記実行手段は、
電子データに対して、該電子データのデータ型を所定のデータ型に変換する型変換手段を１以上有し、
前記電子データのデータ型を、前記型変換手段により前記プログラムが処理可能なデータ型に変換した後、前記プログラムに処理を実行させることにより、前記電子データを用いた前記一連の処理を実行する、付記１又は２に記載の情報処理システム。
（付記４）
前記プログラムには、外部サービス毎に、外部サービスに関する処理を実行する外部サービスプログラムを含み、
前記外部サービスプログラムは、
外部サービスに格納されている電子データの格納先アドレスを取得する処理を実行するプログラムを少なくとも含む、付記１乃至３の何れか１項に記載の情報処理システム。
（付記５）
前記実行順は、前記フロー情報において前記プログラム識別情報が定義されている順である、請求項１乃至４の何れか１項に記載の情報処理システム。
（付記６）
前記フロー情報は、前記プログラム識別情報と、前記実行順と、前記プログラム識別情報により識別されるプログラムの実行に用いるパラメータとが定義され、
前記フロー実行プログラムの実行に用いるパラメータには、前記第２のフロー識別情報が含まれる、請求項１乃至５の何れか１項に記載の情報処理システム。
（付記７）
前記実行手段は、
前記他の一連の処理を実行が終了すると、前記第１のフロー情報に定義されている前記プログラム識別情報により識別されるプログラムのうち、未実行のプログラムそれぞれを前記実行順に従って実行させることで、前記一連の処理に含まれる前記呼び出す処理の次の処理以降の処理を実行する、請求項１乃至６の何れか１項に記載の情報処理システム。
（付記８）
所定の処理をそれぞれ実行する複数のプログラムを有する情報処理装置であって、
電子データを用いた一連の処理毎に、該一連の処理のそれぞれの処理を実行する１以上の前記プログラムを識別するプログラム識別情報と、１以上の前記プログラムの実行順とが定義されたフロー情報を、該フロー情報を識別するフロー識別情報と関連付けて記憶する記憶手段と、
前記情報処理装置に接続される１以上の機器のうちの一の機器から、電子データに関する情報と、第１のフロー識別情報とを受信する受信手段と、
前記記憶手段に記憶されているフロー情報のうち、前記受信手段により受信された前記第１のフロー識別情報と関連付けて記憶されている第１のフロー情報を取得する取得手段と、
前記取得手段により取得された前記第１のフロー情報に定義されている前記プログラム識別情報により識別されるプログラムそれぞれを、前記第１のフロー情報に定義されている前記実行順に従って実行させることで、前記受信手段により受信された前記電子データに関する情報に基づく電子データを用いた前記一連の処理を実行する実行手段と、を有し、
前記取得手段は、
他の一連の処理を呼び出す処理に係る前記所定の処理を実行するフロー実行プログラムを識別するプログラム識別情報が前記第１のフロー情報に定義されている場合、前記記憶手段に記憶されているフロー情報のうち、前記第１のフロー情報に含まれる第２のフロー識別情報と関連付けて記憶されている第２のフロー情報を取得し、
前記実行手段は、
前記取得手段により取得された前記第２のフロー情報に定義されている前記プログラム識別情報により識別されるプログラムそれぞれを、前記第２のフロー情報に定義されている前記実行順に従って実行させることで、前記一連の処理の実行中に、前記電子データを用いた前記他の一連の処理を呼び出して実行する、情報処理装置。
（付記９）
１以上の情報処理装置を含み、所定の処理をそれぞれ実行する複数のプログラムを有する情報処理システムであって、電子データを用いた一連の処理毎に、該一連の処理のそれぞれの処理を実行する１以上の前記プログラムを識別するプログラム識別情報と、１以上の前記プログラムの実行順とが定義されたフロー情報を、該フロー情報を識別するフロー識別情報と関連付けて記憶する記憶手段を有する情報処理システムに用いられる情報処理方法において、
前記情報処理システムに接続される１以上の機器のうちの一の機器から、電子データに関する情報と、第１のフロー識別情報とを受信する受信手順と、
前記記憶手段に記憶されているフロー情報のうち、前記受信手順により受信された前記第１のフロー識別情報と関連付けて記憶されている第１のフロー情報を取得する取得手順と、
前記取得手順により取得された前記第１のフロー情報に定義されている前記プログラム識別情報により識別されるプログラムそれぞれを、前記第１のフロー情報に定義されている前記実行順に従って実行させることで、前記受信手順により受信された前記電子データに関する情報に基づく電子データを用いた前記一連の処理を実行する実行手順と、を有し、
前記取得手順は、
他の一連の処理を呼び出す処理に係る前記所定の処理を実行するフロー実行プログラムを識別するプログラム識別情報が前記第１のフロー情報に定義されている場合、前記記憶手段に記憶されているフロー情報のうち、前記第１のフロー情報に含まれる第２のフロー識別情報と関連付けて記憶されている第２のフロー情報を取得し、
前記実行手順は、
前記取得手順により取得された前記第２のフロー情報に定義されている前記プログラム識別情報より識別されるプログラムそれぞれを、前記第２のフロー情報に定義されている前記実行順に従って実行させることで、前記一連の処理の実行中に、前記電子データを用いた前記他の一連の処理を呼び出して実行する、情報処理方法。
【符号の説明】
【０３７０】
１        情報処理システム
１０      サービス提供システム
２０      機器
３０      外部ストレージシステム
１１０    入出力サービス処理部
１１１    アプリ管理部
１１２    ロジック処理部
１１３    データＩ／Ｆ部
１２０    Ｗｅｂサービス処理部
１３０    ドキュメントサービス部
１３１    メール配信部
１３２    ＯＣＲ処理部
１４０    外部サービス連携部
１４１    ファイル処理部
１４２    データ処理部
１５０    アプリ情報記憶部
１６０    画面情報記憶部
１７０    リソース管理情報記憶部
２１０    ブラウザ
３０１    フロー実行部
３０２    コンポーネント管理部
３０３    コンポーネント群
３０４    型変換管理部
３０５    型変換群
３０６    リソース管理部
１０００  アプリ情報
１１００  処理フロー情報
２０００  画面情報
３０００  型変換情報テーブル
【先行技術文献】
【特許文献】
【０３７１】
【特許文献１】特許第５１１２０８５号公報
【図１】
2017168082.tif 000003
【図２】
2017168082.tif 000004
【図３】
2017168082.tif 000005
【図４】
2017168082.tif 000006
【図５】
2017168082.tif 000007
【図６】
2017168082.tif 000008
【図７】
2017168082.tif 000009
【図８】
2017168082.tif 000010
【図９】
2017168082.tif 000011
【図１０】
2017168082.tif 000012
【図１１】
2017168082.tif 000013
【図１２】
2017168082.tif 000014
【図１３】
2017168082.tif 000015
【図１４】
2017168082.tif 000016
【図１５】
2017168082.tif 000017
【図１６】
2017168082.tif 000018
【図１７】
2017168082.tif 000019
【図１８】
2017168082.tif 000020
【図１９】
2017168082.tif 000021
【図２０】
2017168082.tif 000022
【図２１】
2017168082.tif 000023
【図２２】
2017168082.tif 000024
【図２３】
2017168082.tif 000025
【図２４】
2017168082.tif 000026
【図２５】
2017168082.tif 000027
【図２６】
2017168082.tif 000028
【図２７】
2017168082.tif 000029
【図２８】
2017168082.tif 000030
【図２９】
2017168082.tif 000031
【図３０】
2017168082.tif 000032
【図３１】
2017168082.tif 000033
【図３２】
2017168082.tif 000034
【図３３】
2017168082.tif 000035