(57)【要約】【課題】ワークフローに含まれる複数の処理をネットワーク環境を跨って実行する場合の通信量を削減可能とする。【解決手段】第１のネットワーク環境に含まれる情報処理装置であって、第２のネットワーク環境で実行される第１の処理および第２の処理と、第１のネットワーク環境で、第１の処理および第２の処理の間に実行される第３の処理と、を含むワークフローを作成する作成部と、ワークフローの実行を制御する第１の実行制御部と、を備える。第１の実行制御部は、第１の処理により出力される第１のデータの状態と、第２の処理に必要な第２のデータの状態とを取得し、第１のデータの状態と第２のデータの状態とが一致する場合に、第１のデータを第２のデータとして第２の処理に入力させる。【選択図】図１１
2018156591.tif 000002
【特許請求の範囲】
【請求項１】
第１のネットワーク環境に含まれる情報処理装置であって、
第２のネットワーク環境で実行される第１の処理および第２の処理と、前記第１のネットワーク環境で、該第１の処理および該第２の処理の間に実行される第３の処理と、を含むワークフローを作成する作成部と、
前記ワークフローの実行を制御する第１の実行制御部と、
を備え、
前記第１の実行制御部は、
前記第１の処理により出力される第１のデータの状態と、前記第２の処理に必要な第２のデータの状態とを取得し、該第１のデータの状態と該第２のデータの状態とが一致する場合に、前記第１のデータを前記第２のデータとして前記第２の処理に入力させる
情報処理装置。
【請求項２】
前記第１の実行制御部は、
少なくとも前記第３の処理について、入力されたデータを変化させないで出力するか否かを示す情報に基づき前記第１のデータの状態と前記第２のデータの状態とが一致するか否かを判定する
請求項１に記載の情報処理装置。
【請求項３】
前記作成部は、
前記情報を予め求めて前記ワークフローに含める
請求項２に記載の情報処理装置。
【請求項４】
前記第１の実行制御部は、
前記第１の処理および前記第２の処理の実行を前記第２のネットワーク環境に含まれる第２の実行制御部に依頼し、
前記第１の処理により出力される第１のデータの状態と、前記第２の処理に必要な第２のデータの状態とを取得し、該第１のデータの状態と該第２のデータの状態とが一致する場合に、前記第２の実行制御部に対して、前記第１のデータを前記第２のデータとして前記第２の処理に入力させる指示を行う
請求項１乃至請求項３の何れか１項に記載の情報処理装置。
【請求項５】
前記第１の実行制御部は、
前記第１の処理が入力されたデータを変化させないで出力する場合に、
該第１の処理に必要なデータを、前記第１のデータに代えて、前記第２のデータとして前記第２の処理に入力させる
請求項１乃至請求項４の何れか１項に記載の情報処理装置。
【請求項６】
第１のネットワーク環境に含まれる情報処理装置により実行させるための情報処理プログラムであって、
第２のネットワーク環境で実行される第１の処理および第２の処理と、前記第１のネットワーク環境で、該第１の処理および該第２の処理の間に実行される第３の処理と、を含むワークフローを作成する作成ステップと、
前記ワークフローの実行を制御する第１の実行制御ステップと、
を有し、
前記第１の実行制御ステップは、
前記第１の処理により出力される第１のデータの状態と、前記第２の処理に必要な第２のデータの状態とを取得し、該第１のデータの状態と該第２のデータの状態とが一致する場合に、前記第１のデータを前記第２のデータとして前記第２の処理に入力させる
情報処理プログラム。
【請求項７】
第１のネットワーク環境に含まれる第１の情報処理装置と、第２のネットワーク環境に含まれる第２の情報処理装置と、を含む情報処理システムであって、
前記第１の情報処理装置は、
前記第２のネットワーク環境で実行される第１の処理および第２の処理と、前記第１のネットワーク環境で、該第１の処理および該第２の処理の間に実行される第３の処理と、を含むワークフローを作成する作成部と、
前記ワークフローの実行を制御する第１の実行制御部と、
を備え、
前記第２の情報処理装置は、
前記ワークフローの実行を制御する第２の実行制御部と、
データを記憶する記憶部と、
を備え、
前記第１の実行制御部は、
前記ワークフローが実行される際に、前記第１の処理により出力される第１のデータの状態と、前記第２の処理に必要な第２のデータの状態とを取得し、該第１のデータの状態と該第２のデータの状態とが一致する場合に、前記第２の情報処理装置に対して要求を行い、
前記第２の実行制御部は、
前記要求に応じて、前記第１のデータを前記記憶部に記憶させ、前記第２の処理を実行させる際に、該記憶部に記憶させた該第１のデータを前記第２のデータとして前記第２の処理に入力させる
情報処理システム。
【請求項８】
第１のネットワーク環境に含まれる第１の情報処理装置と、第２のネットワーク環境に含まれる第２の情報処理装置と、を含む情報処理システムにおける情報処理方法であって、
前記第１の情報処理装置が前記第２のネットワーク環境で実行される第１の処理および第２の処理と、前記第１のネットワーク環境で、該第１の処理および該第２の処理の間に実行される第３の処理と、を含むワークフローを作成する作成ステップと、
前記第１の処理装置が前記ワークフローの実行を制御する第１の実行制御ステップと、
前記第２の情報処理装置が前記ワークフローの実行を制御する第２の実行制御ステップと、
前記第２の処理装置がデータを記憶部に記憶する記憶ステップと、
を有し、
前記第１の実行制御ステップは、
前記ワークフローが実行される際に、前記第１の処理により出力される第１のデータの状態と、前記第２の処理に必要な第２のデータの状態とを取得し、該第１のデータの状態と該第２のデータの状態とが一致する場合に、前記第２の情報処理装置に対して要求を行い、
前記第２の実行制御ステップは、
前記要求に応じて、前記第１のデータを前記記憶部に記憶させ、前記第２の処理を実行させる際に、該記憶部に記憶させた該第１のデータを前記第２のデータとして前記第２の処理に入力させる
情報処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、情報処理プログラム、情報処理システムおよび情報処理方法に関する。
【背景技術】
【０００２】
近年では、ユーザが１以上の処理による処理手順を定義してワークフローを作成し、作成したワークフローを定型業務などに適用させて業務の効率化を図るシステムが開発されている。また、特許文献１には、ワークフローの処理を、ワークフローに含まれる各処理の内容や、ユーザの要求に応じて、例えばオンプレミスの第１のネットワーク環境で提供される第１のサービスと、例えばクラウドネットワークによる第２のネットワーク環境で提供される第２のサービスと、第１のサービスと第２のサービスとを組み合わせた第３のサービスと、から選択して実行可能とする技術が開示されている。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
ところで、例えば上述の、第１のサービスおよび第２のサービスを含む第３のサービスにおいて、ワークフローに含まれる複数の処理のうち第１の処理を第１のサービスにより実行させ、第２の処理を第２のサービスにより実行させ、第２の処理の実行結果を第１のサービスの第１のネットワーク環境に返す処理を考える。このとき、第１の処理や第２の処理の内容によっては、第１のネットワーク環境と第２のネットワーク環境との間で、同一のデータや似通ったデータが同じ経路を介して送受信され、無駄なトラフィックが発生してしまう場合があるという問題があった。
【０００４】
本発明は、上記に鑑みてなされたものであって、ワークフローに含まれる複数の処理をネットワーク環境を跨って実行する場合の通信量を削減可能とすることを目的とする。
【課題を解決するための手段】
【０００５】
上述した課題を解決し、目的を達成するために、本発明は、第１のネットワーク環境に含まれる情報処理装置であって、第２のネットワーク環境で実行される第１の処理および第２の処理と、第１のネットワーク環境で、第１の処理および第２の処理の間に実行される第３の処理と、を含むワークフローを作成する作成部と、ワークフローの実行を制御する第１の実行制御部と、を備え、第１の実行制御部は、第１の処理により出力される第１のデータの状態と、第２の処理に必要な第２のデータの状態とを取得し、第１のデータの状態と第２のデータの状態とが一致する場合に、第１のデータを第２のデータとして第２の処理に入力させる。
【発明の効果】
【０００６】
本発明によれば、ワークフローに含まれる複数の処理をネットワーク環境を跨って実行する場合の通信量の削減が可能となるという効果を奏する。
【図面の簡単な説明】
【０００７】
【図１】図１は、実施形態に係る情報処理システムの一例の構成を示すブロック図である。
【図２】図２は、実施形態に適用可能なサーバの一例のハードウェア構成を示すブロック図である。
【図３】図３は、実施形態に係るオンプレミス側のサーバの機能を説明するための一例の機能ブロック図である。
【図４】図４は、実施形態に係るクラウド側のサーバの機能を説明するための一例の機能ブロック図である。
【図５】図５は、実施形態に適用可能なワークフロー定義について概略的に説明するための図である。
【図６】図６は、実施形態に適用可能なワークフロー定義について概略的に説明するための図である。
【図７】図７は、実施形態に適用可能な、コンポーネントのテスト結果の記述を含むワークフロー定義の例を示す図である。
【図８】図８は、実施形態に係る、第１のコンポーネントの出力をそのまま第２のコンポーネントの入力として用いることが可能な条件について説明するための図である。
【図９】図９は、実施形態に係るワークフローにおける、クラウド側で実行されるコンポーネントの処理を示す一例のフローチャートである。
【図１０】図１０は、実施形態に係るワークフローにおける、クラウド側で実行されるコンポーネントの処理を示す一例のフローチャートである。
【図１１】図１１は、実施形態に係る情報処理システムにおける処理を示す一例のシーケンス図である。
【発明を実施するための形態】
【０００８】
以下に添付図面を参照して、情報処理装置、情報処理プログラム、情報処理システムおよび情報処理方法の実施形態を詳細に説明する。図１は、実施形態に係る情報処理システムの一例の構成を示す。図１において、情報処理システム１は、例えばＬＡＮ(Local  Area  Network)によるネットワーク２に接続されるサーバ２０と、ネットワーク２からインターネット３を介して接続されるサーバ３０とを含む。情報処理システム１は、さらに、ネットワーク２に接続されるＭＦＰ(Multi  Function  Printer)１０とパーソナルコンピュータ（ＰＣ）４０とを含んでもよい。
【０００９】
ネットワーク２は、例えば１つの組織体内で閉じた、所謂オンプレミスのネットワークであり、サーバ２０は、オンプレミスのシステムにおけるサービスを提供する。ＭＦＰ１０は、プリンタ機能、スキャナ機能、複写機能、ＦＡＸ機能など複数の機能を１の筐体で実現した複合機である。ＰＣ４０は、一般的なパーソナルコンピュータであって、サーバ２０にログインしてサーバ２０の機能を利用することができる。また、ＰＣ４０は、ＭＦＰ１０に対して印刷ジョブを送信することもできる。サーバ３０は、クラウドネットワーク上のサーバである。
【００１０】
ここで、サーバ２０は、オンプレミスのシステムに対して、その組織の業務のための処理など、その組織に特有の処理を提供する。一方、サーバ３０は、クラウドネットワークに接続される、複数の異なるオンプレミスのシステム（組織）が利用するための汎用的な処理を提供する。
【００１１】
このような構成において、情報処理システム１は、１以上の処理による処理手順を定義したワークフローによるサービスを提供できる。ワークフロー（ＷＦ）は、処理を実行するコンポーネントと、コンポーネントの順序とが定義される。例えば、画像データをＰＤＦ(Portable  Document  Format)データに変換し、変換されたＰＤＦデータを電子メールを用いて所定の宛先に転送する処理が定義されたワークフローを考える。この場合、例えば、当該ワークフローには、ＰＤＦ変換を行うＰＤＦ変換コンポーネントと、データを電子メールで所定の宛先に送信する電子メール送信コンポーネントが定義される。
【００１２】
ワークフローの定義およびコンポーネントは、サーバ２０および３０に保存される。ワークフローは、サーバ２０に保存されるコンポーネントのみを用いて定義してもよいし、サーバ３０に保存されるコンポーネントのみを用いて定義してもよい。さらに、ワークフローは、サーバ２０に保存されるコンポーネントと、サーバ３０に保存されるコンポーネントとを混在して定義してもよい。
【００１３】
例えば、ＭＦＰ１０は、サーバ２０あるいはサーバ３０に対してワークフローの実行を要求することができる。例えば、それぞれクラウド側のサーバ３０で実行される第１の処理および第２の処理と、第１の処理の出力を用いた処理を実行して実行結果を含むデータを第２の処理に渡す、オンプレミス側のサーバ２０で実行される第３の処理と、を含むワークフローを考える。
【００１４】
実施形態では、このようなワークフローの実行に際して、第１の処理により出力されるデータの状態と、第２の処理に必要なデータの状態とが一致する場合、第１の処理により出力されたデータをクラウドネットワーク上、例えばサーバ３０に記憶させ、第２の処理に対して、このサーバ３０に記憶されたデータを入力させる。これにより、オンプレミス側の第３の処理の出力を、クラウド側に送信する処理を省略でき、ワークフローに含まれる複数の処理をネットワーク環境を跨って実行する場合の通信量を削減することが可能となる。
【００１５】
図２は、実施形態に適用可能なサーバ２０の一例のハードウェア構成を示す。図２において、サーバ２０は、ＣＰＵ(Central  Processing  Unit)２０００と、ＲＯＭ(Read  Only  Memory)２００１と、ＲＡＭ(Random  Access  Memory)２００２と、ストレージ２００３と、通信Ｉ／Ｆ２００４とを含み、これら各部がバス２０１０により互いに通信可能に接続される。ストレージ２００３は、ハードディスクドライブや不揮発性半導体メモリにより構成される保存媒体である。ストレージ２００３は、ＣＰＵ２０００が動作するための各種プログラムやデータが格納される。
【００１６】
ＣＰＵ２０００は、ストレージ２００３やＲＯＭ２００１に予め格納されるプログラムに従い、ＲＡＭ２００２をワークエリアとして用いて動作し、サーバ２０の全体の動作を制御する。通信Ｉ／Ｆ２００４は、ＣＰＵ２０００の指示に従い、ネットワーク２を介した通信を制御する。
【００１７】
図２の例では、ストレージ２００３がサーバ２０に内蔵されているように示されているが、これはこの例に限定されない。例えば、ストレージ２００３は、サーバ２０に対して直接的、あるいは、ネットワーク２を介して接続される外部保存装置であってもよい。また、図１および図２の例では、サーバ２０が１台のコンピュータにより構成されているように示しているが、これはこの例に限定されず、サーバ２０は、複数台のコンピュータが分散して動作することで構成してもよい。
【００１８】
また、クラウドネットワーク上のサーバ３０も、図２に示すサーバ２０と同等の構成にて実現可能であるので、ここでの詳細な説明を省略する。
【００１９】
図３は、実施形態に係るサーバ２０の機能を説明するための一例の機能ブロック図である。図３において、オンプレミスのサーバ２０は、通信部２００と、ＵＩ提示部２０１と、作成部２０２と、管理部２０３と、実行制御部２０４と、ＷＦ（ワークフロー）定義保存部２１０と、コンポーネント保存部２２０と、を含む。
【００２０】
これらのうち、ＷＦ定義保存部２１０およびコンポーネント保存部２２０は、例えばストレージ２００３の所定領域を用いて構成される。また、通信部２００、ＵＩ提示２０１、作成部２０２、管理部２０３および実行制御部２０４は、ＣＰＵ２０００上で実施形態に係る情報処理プログラムが実行されることで形成される。これに限らず、通信部２００、ＵＩ提示部２０１、作成部２０２、管理部２０３および実行制御部２０４の一部または全部を、互いに協働して動作するハードウェア回路により構成してもよい。
【００２１】
サーバ２０における各機能を実現するための情報処理プログラムは、インストール可能な形式または実行可能な形式のファイルでＣＤ(Compact  Disk)、フレキシブルディスク（ＦＤ）、ＤＶＤ(Digital  Versatile  Disk)などのコンピュータで読み取り可能な記録媒体に記録して提供される。これに限らず、当該情報処理プログラムを、インターネットなどのネットワークに接続されたコンピュータ上に格納し、当該ネットワークを介してダウンロードさせることにより提供してもよい。また、当該情報処理プログラムをインターネットなどのネットワークを経由して提供または配布するように構成してもよい。
【００２２】
当該情報処理プログラムは、上述した各部（通信部２００、ＵＩ提示部２０１、作成部２０２、管理部２０３および実行制御部２０４）を含むモジュール構成となっている。実際のハードウェアとしては、ＣＰＵ２０００がストレージ２００３などの保存媒体から当該情報処理プログラムを読み出して実行することにより、上述した各部がＲＡＭ２００２などの主保存装置上にロードされ、通信部２００、ＵＩ提示部２０１、作成部２０２、管理部２０３および実行制御部２０４が主記憶装置上に生成されるようになっている。
【００２３】
図３において、ＷＦ定義保存部２１０は、ＷＦ（ワークフロー）定義２１１ａ、２１１ｂ、…が保存される。ＷＦ定義保存部２１０に含まれる各ＷＦ定義２１１ａ、２１１ｂ、…は、それぞれ、１以上のコンポーネントの組み合わせと、各コンポーネントによる処理の順序を示す情報と、プリセットされた情報と、ワークフローを識別するためのワークフローＩＤと、が関連付けられて含まれる。
【００２４】
コンポーネント保存部２２０は、各ＷＦ定義２１１ａ、２１１ｂ、…で用いるための各コンポーネント２２１ａ、２２１ｂ、…が保存される。各コンポーネント２２１ａ、２２１ｂ、…は、コンポーネントを識別するためのコンポーネントＩＤと、コンポーネントのバージョン情報と、が関連付けられて含まれる。
【００２５】
通信部２００は、通信Ｉ／Ｆ２００４を制御して、ネットワーク２に対する通信を行う。通信部２００は、これにより、ネットワーク２を介してインターネット３に接続し、ネットワーク２およびインターネット３を介してサーバ３０と通信を行うことができる。ＵＩ提示部２０１は、例えばＭＦＰ１０やＰＣ４０からの指示を受け付ける。ＵＩ提示部２０１は、ＭＦＰ１０やＰＣ４０からの指示を受け付ける機能に限定してもよいし、ＭＦＰ１０やＰＣ４０に対して入力画面などを提示してもよい。
【００２６】
作成部２０２は、例えばＵＩ提示部２０１に受け付けられた指示に従い、コンポーネント保存部２２０に保存される各コンポーネント２２１ａ、２２１ｂ、…を用いてＷＦ定義２１１ａ、２１１ｂ、…を作成する。作成部２０２は、作成したＷＦ定義２１１ａ、２１１ｂ、…を、ＷＦ定義保存部２１０に保存させる。管理部２０３は、ＷＦ定義保存部２１０に保存される各ＷＦ定義２１１ａ、２１１ｂ、…を、例えばワークフローＩＤに基づき管理する。また、管理部２０３は、コンポーネント保存部２２０に保存される各コンポーネント２２１ａ、２２１ｂ、…を、コンポーネントＩＤおよびバージョン情報に基づき管理する。
【００２７】
実行制御部２０４は、ＵＩ提示部２０１に受け付けられた指示や、特定のイベントに基づき、指定されたワークフローを実行させる。例えば、実行制御部２０４は、ＭＦＰ１０からの指示に応じて、管理部２０３に管理されるＷＦ定義２１１ａ、２１１ｂ、…から指定されたＷＦ定義を取得して、取得したＷＦ定義に含まれる各コンポーネントを実行する。
【００２８】
図４は、実施形態に係るサーバ３０の機能を説明するための一例の機能ブロック図である。図４において、クラウド側のサーバ３０は、通信部３００と、管理部３０１と、実行制御部３０２と、データ記憶部３０３と、ＷＦ定義保存部３１０と、コンポーネント保存部３２０と、を含む。これらのうち、通信部３００、管理部３０１および実行制御部３０２は、サーバ３０が備えるＣＰＵ上で所定のプログラムが動作されることで実現される。また、データ記憶部３０３、ＷＦ定義保存部３１０およびコンポーネント保存部３２０は、サーバ３０が備えるストレージの所定の保存領域が用いられる。
【００２９】
ＷＦ定義保存部３１０は、ＷＦ定義３１１ａ、３１１ｂ、…が保存される。各ＷＦ定義３１１ａ、３１１ｂ、…の構成は、上述したＷＦ定義２１１ａ、２１１ｂ、…と同様である。コンポーネント保存部３２０は、各ＷＦ定義３１１ａ、３１１ｂ、…で用いるための各コンポーネント３２１ａ、３２１ｂ、…が保存される。管理部３０１は、ＷＦ定義保存部３１０に保存される各ＷＦ定義３１１ａ、３１１ｂ、…と、コンポーネント保存部３２０に保存される各コンポーネント３２１ａ、３２１ｂ、…とを管理する。
【００３０】
通信部３００は、サーバ３０が備える通信Ｉ／Ｆを制御して、インターネット３０に対する通信を行う。通信部３００は、これにより、インターネット３を介してネットワーク２に接続し、インターネット３およびネットワーク２を介してサーバ２０と通信を行うことができる。
【００３１】
実行制御部３０２は、特定のイベントに基づき、指定されたワークフローを実行させる。例えば、実行制御部３０２は、サーバ２０からの指示に応じて、管理部３０１に管理されるＷＦ定義３１１ａ、３１１ｂ、…から指定されたＷＦ定義を取得して、取得したＷＦ定義に含まれる各コンポーネントを実行する。
【００３２】
図５および図６を用いて、実施形態に適用可能な、ＷＦ定義保存部２１０および３１０に保存される、ＷＦ定義２１１ａ、２１１ｂ、…、３１１ａ、３１１ｂ、…について、概略的に説明する。図５は、ＷＦ定義２１１０の例を示す。このＷＦ定義２１１０においては、ＰＤＦ変換を行うコンポーネント２２１０ａと、ＦＴＰ(File  Transfer  Protocol)配信を行うコンポーネント２２１０ｂと、メール配信を行うコンポーネント２２１０ｃとが含まれる。各コンポーネント２２１０ａ、２２１０ｂおよび２２１０ｃは、スタートポイント２２１１から処理が開始され、先ずコンポーネント２２１０ａおよび２２１０ｃがそれぞれ実行され、コンポーネント２２１０ａの出力を受けてコンポーネント２２１０ｂが実行されるように定義されている。
【００３３】
図６は、図５に示したＷＦ定義２１１０の具体的な記述例を示す。なお、この図６と、後述する図７とにおいて、特に記載の無い限り、各行の先頭の数字は説明のための行番号を示し、続くコロン（：）でデータ本体を示すコードと区別されている。この例では、ワークフロー定義情報は、タグを用いてデータの意味や構造を定義して記述するマークアップ言語の一種であるＸＭＬ(Extensible  Markup  Language)を用いて記述されている。これは一例であって、ワークフロー定義情報の記述方式は、特に限定されない。例えば、ワークフロー定義情報は、ＪＳＯＮ(Java  Script（登録商標））  Object  Notation)により記述してもよいし、バイナリ形式で記述してもよい。
【００３４】
図６において、第１行目でこのデータが記述されるＸＭＬのバージョンと、エンコード方式とが定義され、第２行目の開始タグ「<flows>」と、第１４行目の終了タグ「</flows>」とに挟まれる、第３行目の開始タグ「<flow>」と、第１３行目の終了タグ「</flow>」との間に、ＷＦ定義２１１０の本体が記述される。
【００３５】
また、ワークフロー定義情報において、記述「nextPlugin」は、次に実行されるプラグインが定義されることを示し、記述「nextPlugin」に続く記述「id="  "」において、「"  "」に挟まれる部分に、次に実行されるプラグインの識別情報が記述される。ここで、プラグインは、例えば各コンポーネント２２１０ａ、２２１０ｂおよび２２１０ｃに対応する。
【００３６】
第４行目〜第１２行目の記述において、第９行目および第１２行目に開始タグ「<starpointt>」および終了タグ「</startpoint>」によりスタートポイント２２１１が定義され、これら開始タグ「<starpointt>」および終了タグ「</startpoint>」に挟まれた第１０行目および第１１行目に、スタートポイント２２１１の次に実行されるプラグインの識別情報「@RPDFConverter」および「@ToSMTP」が記述される。すなわち、記述「nextPlugin」は、次に実行されるプラグインが定義されることを示し、記述「nextPlugin」を含む、一対の開始文字「<」および終了文字「>」に挟まれる部分に、記述「id=」に続けて、次に実行されるプラグインの識別情報が記述される。
【００３７】
第４行目〜第８行目において、開始タグ「<plugin>」および終了タグ「</plugin>」を用いて、それぞれプラグインが定義される。
【００３８】
第４行目は、ＦＴＰ配信のコンポーネント２２１０ｂが定義される。第４行目の開始タグ「<plugin>」において、このプラグインについて、記述「id=」により識別情報「@ToFtp」が、記述「type=」によりタイプ「output」が、記述「input」により値「A」が、記述「output」により値「A」が、記述「displayName=」により表示名「ＦＴＰ配信」が、それぞれ記述される。表示名は、例えばＵＩ提示部２０１により、ＭＦＰ１０の操作パネルにおける表示に用いられる。また、このコンポーネント２２１０ｂの定義においては、終了タグ「</plugin>」がタグ「/>」として簡略的に記述されている。
【００３９】
第５行目〜第７行目は、ＰＤＦ変換のコンポーネント２２１０ａが定義される。第５行目の開始タグ「<plugin>」において、このプラグインについて、記述「id=」により識別情報「@RPDFConverter」と、タイプ「filter」と、input「A」と、output「A」と、表示名「ＰＤＦ変換」とが記述される。また、開始タグ「<plugin>」および終了タグ「</plugin>」に挟まれる第６行目に、このプラグインの次に実行されるプラグインの識別情報「@ToFtp」が記述され、次にＦＴＰ配信のコンポーネント２２１０ｂが実行されることが定義される。
【００４０】
第８行目は、メール配信のコンポーネント２２１０ｃが定義される。第９行目の開始タグ「<plugin>」において、このプラグインについて、記述「id=」により識別情報「@ToSMTP」と、タイプ「output」と、input「A」と、output「A」と、表示名「メール配信」とが、それぞれ記述される。また、このコンポーネント２２１０ｃの定義においては、終了タグ「</plugin>」がタグ「/>」として簡略的に記述されている。
【００４１】
例えば実行制御部２０４は、ワークフローの実行時に、このように記述されたＷＦ定義２１１０を読み込み、読み込んだＷＦ定義２１１０を解釈する。実行制御部２０４は、ＷＦ定義２１１０の解釈の結果に従い、ＷＦ定義２１１０に含まれる各コンポーネント２２１０ａ、２２１０ｂおよび２２１０ｃを実行する。
【００４２】
実施形態においては、サーバ２０のコンポーネント保存部２２０に保存される各コンポーネント２２１ａ、２２１ｂ、…、および、サーバ３０のコンポーネント保存部３２０に保存される各コンポーネント３２１ａ、３２１ｂ、…について、入力データの状態と出力データの状態とに変化が生じるか否かを予めテストできる。テスト結果は、各コンポーネント２２１ａ、２２１ｂ、…、３２１ａ、３２１ｂ、…に含めて、あるいは、関連付けて保存される。また、テスト結果は、ＷＦ定義２１１ａ、２１１ｂ、…、３１１ａ、３１１ｂ、…に記述される。
【００４３】
図７は、実施形態に適用可能な、コンポーネントのテスト結果の記述を含むＷＦ定義２１１０’の例を示す。図７に示されるＷＦ定義２１１０’は、図６のＷＦ定義２１１０にテスト結果２１１１の記述を加えたものである。テスト結果２１１１において、記述「modify」としてテスト結果２１１１の値「false」および「true」の何れかが記述される。値「false」は、入力データの状態と出力データの状態とが一致することを示し、値「true」は、入力データの状態と出力データの状態とが一致しないことを示す。このテスト結果２１１１の記述「modify」は、ＷＦ定義２１１０’に記述される全てのコンポーネント２２１０ａ、２２１０ｂおよび２２１０ｃの記述に付加される。
【００４４】
このテスト結果２１１１が値「false」の場合、そのコンポーネントは、入力されたデータが変化しないで出力される。したがって、テスト結果２１１１が値「false」のコンポーネントの前段のコンポーネントの出力を、当該コンポーネントの後段のコンポーネントの入力としてそのまま用いることが可能である。
【００４５】
ここで、クラウド側で実行される第１および第２のコンポーネントと、これら第１および第２のコンポーネントの間においてオンプレミス側で実行される第３のコンポーネントを考える。データが第１のコンポーネント、第３のコンポーネント、第２のコンポーネントと順次受け渡されて処理が実行されるものとする。
【００４６】
この場合において、第１のコンポーネントの出力をそのまま第２のコンポーネントの入力として用いることが可能な条件について、図８を用いて説明する。なお、図８において、コンポーネント２２１０ｎおよび２２１１ｎは、入力データを変化させないで出力する処理を行い、コンポーネント２２１０ｍおよび２２１１ｍは、入力データを変化させて出力する処理を行う。コンポーネント２２１０ａｎｙは、入力データに対して任意の処理を行う。
【００４７】
また、図８において、左から右に向けて、各コンポーネントによる処理が実行されるものとする。より具体的には、先ずクラウド側（例えばサーバ３０）で１つのコンポーネントが実行され、この出力を受けて、次に、オンプレミス側（例えばサーバ２０）でコンポーネントが実行される。オンプレミス側では、複数のコンポーネントをシリアルに実行できるものとする。オンプレミス側のコンポーネントの出力を受けて、次に、再びクラウド側で１つのコンポーネントが実行される。
【００４８】
ＷＦ定義２１１０ａは、クラウド側で実行されるコンポーネント２２１０ｎおよび２２１０ａｎｙと、それぞれオンプレミス側で実行される、１以上のコンポーネント２２１１ｎ、および、少なくとも１つのコンポーネント２２１１ｍと、を含むワークフローを定義する。ＷＦ定義２１１０ｂは、クラウド側で実行されるコンポーネント２２１０ｎおよび２２１０ａｎｙと、オンプレミス側で実行される１以上のコンポーネント２２１１ｎと、を含むワークフローを定義する。ＷＦ定義２１１０ｃは、クラウド側で実行されるコンポーネント２２１０ｍおよび２２１０ａｎｙと、それぞれオンプレミス側で実行される、１以上のコンポーネント２２１１ｎ、および、少なくとも１つのコンポーネント２２１１ｍと、を含むワークフローを定義する。また、ＷＦ定義２１１０ｄは、クラウド側で実行されるコンポーネント２２１０ｍおよび２２１０ａｎｙと、オンプレミス側で実行される１以上のコンポーネント２２１１ｎと、を含むワークフローを定義する。
【００４９】
図８において、ＷＦ定義２１１０ａが定義するワークフローは、オンプレミス側にデータを変化させるコンポーネント２２１１ｍが含まれているため、コンポーネント２２１０ａｎｙは、コンポーネント２２１０ｎの出力データとは異なるデータが入力される。したがって、コンポーネント２２１０ｎの出力データは、オンプレミス側に送信される必要があり、また、コンポーネント２２１０ａｎｙは、オンプレミス側から送信されたデータが入力される必要がある。同様にして、ＷＦ定義２１１０ｃが定義するワークフローも、オンプレミス側にコンポーネント２２１１ｍが含まれており、クラウド側とオンプレミス側との間でデータの送受信が発生する。
【００５０】
一方、ＷＦ定義２１１０ｂおよび２１１０ｄが定義する各ワークフローは、オンプレミス側にデータを変化させないコンポーネント２２１１ｎのみが含まれ、データを変化させるコンポーネント２２１１ｍが含まれない。そのため、コンポーネント２２１０ａｎｙは、コンポーネント２２１０ｍまたは２２１０ｎの出力データと同一のデータが入力される。したがって、コンポーネント２２１０ｍまたは２２１０ｎの出力データは、そのままコンポーネント２２１０ａｎｙの入力データとして用いることができ、オンプレミス側の処理において、クラウド側とオンプレミス側との間のデータの送受信を省略することができる。具体的には、コンポーネント２２１０ｍまたは２２１０ｎの出力データは、サーバ３０のデータ記憶部３０３に記憶され、コンポーネント２２１０ａｎｙは、このデータ記憶部３０３に記憶されたデータを入力データとして用いる。
【００５１】
さらに、ＷＦ定義２１１０ｂが定義するワークフローは、クラウド側で最初に実行されるコンポーネント２２１０ｎは、データを変化させない。そのため、ＷＦ定義２１１０ｂが定義するワークフローにおいては、コンポーネント２２１０ｎの入力データを、そのままコンポーネント２２１０ａｎｙの入力データとして用いることができる。
【００５２】
以下において、特に記載の無い限り、オンプレミス側（サーバ２０）のＷＦ定義保存部２１０に保存される各ＷＦ定義２１１ａ、２１１ｂ、…をＷＦ定義２１１として説明を行う。同様に、特に記載の無い限り、オンプレミス側（サーバ２０）で実行されるコンポーネント２２１ａ、２２１ｂ、…をコンポーネント２２１とし、クラウド側（サーバ３０）で実行されるコンポーネント３２１ａ、３２１ｂ、…をコンポーネント３２１として説明を行う。
【００５３】
図９および図１０は、実施形態に係るワークフローにおける、クラウド側で実行されるコンポーネントの処理を示す一例のフローチャートである。例えばサーバ２０において、実行制御部２０４は、実行対象のワークフローにおいて、クラウド側で実行されるコンポーネント３２１が２以上含まれる場合に、これら図９および図１０のフローチャートによる処理を実行する。また、実行制御部２０４は、ワークフローに含まれる、クラウド側で実行されるコンポーネント３２１（対象コンポーネントと呼ぶ）の実行時に、これら図９および図１０のフローチャートによる処理を実行する。
【００５４】
図９のフローチャートによる処理について説明する。ステップＳ１０で、実行制御部２０４は、クラウド側で対象コンポーネントの次に実行されるコンポーネント３２１との間に、オンプレミス側のコンポーネント２１１が有るか否かを判定する。ここで、クラウド側で対象コンポーネントの次に実行されるコンポーネント３２１とは、オンプレミス側のコンポーネント２２１の処理を挟んで、次に実行されるコンポーネント３２１を含む。
【００５５】
実行制御部２０４は、無いと判定した場合（ステップＳ１０、「Ｎｏ」）、処理をステップＳ１５に移行させる。ステップＳ１５で、実行制御部２０４は、対象コンポーネントの出力データをサーバ３０のデータ記憶部３０３に記憶させずに、オンプレミス側のコンポーネント２２１に送信する。
【００５６】
一方、実行制御部２０４は、ステップＳ１０で、有ると判定した場合（ステップＳ１０、「Ｙｅｓ」）、処理をステップＳ１１に移行させる。ステップＳ１１で、実行制御部２０４は、クラウド側で次に実行されるコンポーネント３２１との間のオンプレミス側のコンポーネント２２１が、データを変化させるコンポーネント（例えば図８のコンポーネント２２１１ｍ）を含むか否かを判定する。実行制御部２０４は、例えば、図７を用いて説明した、コンポーネントの記述に含まれるテスト結果２１１１の値に基づき、この判定を行う。実行制御部２０４は、含むと判定した場合（ステップＳ１１、「Ｙｅｓ」）、処理を上述したステップＳ１５に移行させる。
【００５７】
一方、実行制御部２０４は、ステップＳ１１で含まないと判定した場合（ステップＳ１１、「Ｎｏ」）、処理をステップＳ１２に移行させる。ステップＳ１２で、実行制御部２０４は、対象コンポーネントが入力データを変化させて出力する処理を行うか否かを判定する。実行制御部２０４は、この判定も、例えば図７を用いて説明した、コンポーネントの記述に含まれるテスト結果２１１１の値に基づき行う。
【００５８】
実行制御部２０４は、ステップＳ１２において、対象コンポーネントが入力データを変化させて出力する処理を行うと判定した場合（ステップＳ１２、「Ｙｅｓ」）、処理をステップＳ１３に移行させる。ステップＳ１３で、実行制御部２０４は、対象コンポーネントの出力データを、サーバ３０のデータ記憶部３０３に記憶させる。
【００５９】
一方、実行制御部２０４は、ステップＳ１２において、対象コンポーネントが入力データを変化させて出力する処理を行わないと判定した場合（ステップＳ１２、「Ｎｏ」）、処理をステップＳ１４に移行させる。ステップＳ１４で、実行制御部２０４は、対象コンポーネントに対して入力される入力データを、サーバ３０のデータ記憶部３０３に記憶させる。
【００６０】
次に、図１０のフローチャートによる処理について説明する。この図１０のフローチャートによる処理は、上述の図９のフローチャートによる処理が実行されている場合に、実行される。ステップＳ２０で、実行制御部２０４は、クラウド側で対象コンポーネントの前に実行されるコンポーネント３２１と間に、オンプレミス側のコンポーネント２２１が有るか否かを判定する。ここで、クラウド側で対象コンポーネントの前に実行されるコンポーネント３２１とは、オンプレミス側のコンポーネント２２１の処理を挟んで、前に実行されるコンポーネント３２１を含む。
【００６１】
実行制御部２０４は、無いと判定した場合（ステップＳ２０、「Ｎｏ」）、処理をステップＳ２３に移行させ、オンプレミス側から送信されたデータを対象コンポーネントに入力させる。
【００６２】
一方、実行制御部２０４は、ステップＳ２０で有ると判定した場合（ステップＳ２０、「Ｙｅｓ」）、処理をステップＳ２１に移行させる。ステップＳ２１で、実行制御部２０４は、クラウド側で対象コンポーネントの前に実行されるコンポーネント３２１と間に有るオンプレミス側のコンポーネント２２１が、データを変化させる処理を行うコンポーネントを含むか否かを判定する。実行制御部２０４は、含むと判定した場合（ステップＳ２１、「Ｙｅｓ」）、処理を上述したステップＳ２３に移行させる。
【００６３】
一方、実行制御部２０４は、ステップＳ２１で含まないと判定した場合（ステップＳ２１、「Ｎｏ」）、処理をステップＳ２２に移行させる。ステップＳ２２で、実行制御部２０４は、サーバ３０のデータ記憶部３０３に記憶されたデータを、対象コンポーネントの入力データとして用いる。
【００６４】
次に、ＷＦ定義２１１および３１１と、コンポーネント２２１および３２１の情報と、の例について説明する。表１は、ＷＦ定義２１１の例を示す。なお、ＷＦ定義３１１は、ＷＦ定義２１１と同様の情報を含むため、ここではＷＦ定義２１１および３１１をＷＦ定義２１１で代表させて説明する。この例では、ＷＦ定義２１１は、「ＷＦ名」、「コンポーネント名」、「トリガ」、「入力元」、「入力」、「出力先」、「出力」および「パラメータ」の各項目を含む。項目「ＷＦ名」はそのワークフローの名前を示し、項目「コンポーネント名」は、ＷＦ定義２１１に含まれるコンポーネントの名前を示す。表１の例では、ＷＦ名「定形処理＃１」のＷＦ定義が、それぞれコンポーネント名が「データ解析」および「クラウド保存」の２つのコンポーネントを含むことを示している。
【表１】
2018156591.tif 000003
【００６５】
項目「トリガ」は、コンポーネントが起動されるトリガを示す。項目「入力元」および「入力」は、それぞれ、そのコンポーネントに入力されるデータの入力元と、入力されるデータの種類が示される。なお、項目「入力」に示されるデータの種類は、そのコンポーネントが処理に必要とするデータの種類である。項目「出力先」および「出力」は、それぞれ、そのコンポーネントから出力されるデータの出力先と、出力されるデータの種類が示される。表１の例では、ＷＦ名「定形処理＃１」のＷＦ定義２１１において、コンポーネント名「データ解析」のコンポーネントの出力データがコンポーネント名「クラウド保存」のコンポーネントに入力されることが示されている。
【００６６】
項目「パラメータ」は、例えばそのコンポーネントから出力されるデータに付加される引数を示す。表１の例では、ＷＦ名「定形処理＃２」のＷＦ定義２１１において、コンポーネント名「転送」のコンポーネントは、スキャンデータを出力データとして出力し、出力データに、パラメータとして転送先のアドレス情報（例えば電子メールアドレス）が付加されることが示されている。
【００６７】
表２は、コンポーネント２２１、３２１の情報の例を示す。この例では、コンポーネント２２１の情報は、「コンポーネント名」、「入力情報」、「出力情報」、「パラメータ」、「データ状態情報」の各項目を含む。
【表２】
2018156591.tif 000004
【００６８】
項目「コンポーネント名」は、そのコンポーネントの名前を示し、表１の項目「コンポーネント名」に対応する値が格納される。項目「入力情報」および［出力情報」は、表１の項目「入力」および「出力」に対応し、そのコンポーネントに入力されるデータと、出力されるデータの種類と、がそれぞれ示される。項目「パラメータ」は、そのコンポーネントがデフォルト状態で出力データに付加するパラメータが示される。
【００６９】
項目「データ状態情報」は、図７を用いて説明したテスト結果２１１１に対応し、そのコンポーネントが入力データを変化させて出力するか否かを示す値が格納される。表２の例では、コンポーネント名「データ解析」、「クラウド保存」、「転送」、「セキュリティフィルタ」および「マスキング」の各コンポーネントは、入力データを変化させないで出力する。一方、コンポーネント名「ＰＤＦ変換」のコンポーネントは、入力データを変化させて出力する。
【００７０】
図１１は、実施形態に係る情報処理システム１における処理を示す一例のシーケンス図である。なお、図１１において、上述した図３と対応する部分には同一の符号を付して、詳細な説明を省略する。
【００７１】
図１１において、ステップＳ１００〜ステップＳ１１２の処理は、サーバ２０側においてワークフローの実行が指示され、指示されたワークフローの実行を準備するための処理を含む。サーバ２０において、実行制御部２０４は、例えばＭＦＰ１０から送信された、ワークフローの指定および実行指示を、ワークフローの実行を開始するトリガとして検知する（ステップＳ１００）。実行制御部２０４は、トリガの検知に応じて、管理部２０３を通じて、ＷＦ定義保存部２１０から指定されたＷＦ定義２１１を取得する（ステップＳ１０１、ステップＳ１０２）。
【００７２】
実行制御部２０４は、取得したＷＦ定義２１１を解析し、ＷＦ定義２１１に記述されるコンポーネント２２１、３２１の情報を、管理部２０３を通じて、コンポーネント保存部２２０から取得する（ステップＳ１０３、ステップＳ１０４）。また、実行制御部２０４は、取得したＷＦ定義２１１にサーバ３０側で実行されるコンポーネント３２１の記述が含まれる場合、サーバ３０に対して当該コンポーネント３２１の情報を要求する（ステップＳ１０５）。この要求は、通信部２００からネットワーク２およびインターネット３を介してサーバ３０の通信部３００に受信され（ステップＳ１０６）、通信部３００から管理部３０１に渡される（ステップＳ１０７）。
【００７３】
管理部３０１は、コンポーネント保存部３２０から、渡された要求に応じたコンポーネントの情報を取得し（ステップＳ１０８、ステップＳ１０９）、取得したコンポーネントの情報をサーバ２０に返す（ステップＳ１１０、ステップＳ１１１）。このコンポーネントの情報は、サーバ２０の通信部２００に受信され、通信部２００から実行制御部２０４に渡される（ステップＳ１１２）。
【００７４】
ステップＳ１２０およびステップＳ１２１は、ＷＦ定義２１１に含まれるコンポーネント２２１、３２１のうち、オンプレミスのコンポーネント２２１の実行処理を示す。ステップＳ１２０で、実行制御部２０４は、コンポーネント保存部２２０に保存される、コンポーネント２２１の情報に示されるコンポーネント２２１に処理を依頼する（ステップＳ１２０）。当該コンポーネント２２１は、この依頼に応じて処理を実行し、例えば実行結果を実行制御部２０４に返す（ステップＳ１２１）。
【００７５】
ステップＳ１３０〜ステップＳ１３９は、図９のフローチャートにおけるステップＳ１３またはステップＳ１４の処理に従い、クラウド側で実行されるコンポーネントの出力または入力データをデータ記憶部３０３に記憶する処理を示す。ここでは、説明のため、図９のステップＳ１３で、コンポーネント３２１の出力データをデータ記憶部３０３に記憶させるものとして説明を行う。
【００７６】
実行制御部２０４は、サーバ３０に対して、クラウド側のコンポーネント保存部３２０に保存される、コンポーネント３２１の情報に示されるコンポーネント３２１の実行を依頼する（ステップＳ１３０）。このとき、実行制御部２０４は、サーバ３０に送信する依頼に対して、実行を依頼したコンポーネント３２１の出力データをデータ記憶部３０３に記憶させる指示を含ませる。この依頼は、サーバ３０において通信部３００に受信され（ステップＳ１３１）、実行制御部３０２に渡される（ステップＳ１３２）。実行制御部３０２は、渡された依頼に応じて、コンポーネント保存部３２０に保存される、コンポーネント３２１の情報に示されるコンポーネント３２１に処理を依頼し、出力データをデータ記憶部３０３に記憶するように指示する（ステップＳ１３３）。
【００７７】
コンポーネント保存部３２０に保存される当該コンポーネント３２１は、処理の依頼に応じて処理を実行し、出力データをデータ記憶部３０３に記憶する（ステップＳ１３４）。データ記憶部３０３にて出力データが記憶されると、その旨が実行制御部３０２に通知され（ステップＳ１３５、ステップＳ１３６）、実行制御部３０２からサーバ２０に対して、コンポーネント３２１の実行完了の通知が送信される（ステップＳ１３７、ステップＳ１３８）。この通知は、サーバ２０において通信部２００に受信され、通信部２００から実行制御部２０４に渡される（ステップＳ１３９）。
【００７８】
ステップＳ１５０〜ステップＳ１５９は、図１０のフローチャートにおけるステップＳ２２の処理に従い、データ記憶部３０３に記憶されるデータを、クラウド側で実行されるコンポーネント３２１の入力データとして用いる処理を示す。
【００７９】
実行制御部２０４は、サーバ３０に対して、クラウド側のコンポーネント保存部３２０に保存される、コンポーネント３２１の情報に示されるコンポーネント３２１の実行を依頼する（ステップＳ１５０）。このとき、実行制御部２０４は、サーバ３０に送信する依頼に対して、データ記憶部３０３に記憶されるデータを、実行を依頼したコンポーネント３２１の入力データとして用いる指示を含ませる。この依頼は、サーバ３０において通信部３００に受信され（ステップＳ１５１）、実行制御部３０２に渡される（ステップＳ１５２）。実行制御部３０２は、渡された依頼に応じて、コンポーネント保存部３２０に保存される、コンポーネント３２１の情報に示されるコンポーネント３２１に処理を依頼し、データ記憶部３０３に記憶されるデータを当該コンポーネント３２１の入力データとして用いるように指示する（ステップＳ１５３）。
【００８０】
コンポーネント保存部３２０に保存される当該コンポーネント３２１は、処理の依頼に応じてデータ記憶部３０３からデータを取得し（ステップＳ１５４、ステップＳ１５５）、取得したデータを入力データとして用いて処理を実行する。処理の実行が完了すると、その旨が実行制御部３０２に通知され（ステップＳ１５６）、実行制御部３０２からサーバ２０に対して、コンポーネント３２１の実行完了の通知が送信される（ステップＳ１５７、ステップＳ１５８）。この通知は、サーバ２０において通信部２００に受信され、通信部２００から実行制御部２０４に渡される（ステップＳ１５９）。
【００８１】
このように、実施形態に係る情報処理システム１では、クラウド側の第１のコンポーネントおよび第２のコンポーネントの間で、オンプレミス側で実行されるコンポーネントが、入力データを変化させずに出力する場合に、第１のコンポーネントの出力データをクラウド側に記憶する。そして、第２のコンポーネントは、クラウド側に記憶されたデータを入力データとして用いて、処理を実行する。これにより、オンプレミス側の出力データをクラウド側に送信する処理を省略でき、ワークフローに含まれる複数の処理をネットワーク環境を跨って実行する場合の通信量を削減することが可能となる。
【００８２】
なお、上述の各実施形態は、本発明の好適な実施の例ではあるがこれに限定されるものではなく、本発明の要旨を逸脱しない範囲において種々の変形による実施が可能である。
【符号の説明】
【００８３】
１  情報処理システム
２  ネットワーク
３  インターネット
１０  ＭＦＰ
２０，３０  サーバ
４０  ＰＣ
２００，３００  通信部
２０１  ＵＩ提示部
２０２  作成部
２０３，３０１  管理部
２０４，３０２  実行制御部
２１０，３１０  ＷＦ定義保存部
２２０，３２０  コンポーネント保存部
２１１１  テスト結果
【先行技術文献】
【特許文献】
【００８４】
【特許文献１】特開２０１４−１７９０４８号公報
【図１】
2018156591.tif 000005
【図２】
2018156591.tif 000006
【図３】
2018156591.tif 000007
【図４】
2018156591.tif 000008
【図５】
2018156591.tif 000009
【図６】
2018156591.tif 000010
【図７】
2018156591.tif 000011
【図８】
2018156591.tif 000012
【図９】
2018156591.tif 000013
【図１０】
2018156591.tif 000014
【図１１】
2018156591.tif 000015