(57)【要約】【課題】独立した機能を組み合わせて定義されたワークフローの実行が非効率な場合、ワークフローデータ生成時にワークフロー定義の最適化を行う。【解決手段】ワークフローシステムのワークフローデータ生成部１０５は、１以上の機能を所定の順序で実行するワークフローの内容を定義したワークフローデータ４０１を生成する。ワークフロー制御部１０２は、ワークフローデータ４０１に基づき、１以上の機能を実行するために、各機能を実行する実行モジュール１０９を呼び出し、制御する。ワークフローデータ生成部１０５は、ワークフローにおいて連続する機能が、同じ実行モジュール１０９により実行されることが定義されている場合に、実行モジュールに対して１回の呼び出しで該連続する機能が実行されるように、ワークフローデータ４０１を編集する最適化処理を実行する。【選択図】図１
2019008695.tif 000002
【特許請求の範囲】
【請求項１】
１以上の機能を所定の順序で実行するワークフローの内容を定義したワークフローデータを生成する生成手段と、
前記ワークフローデータに基づき、前記１以上の機能を実行するために、各機能を実行する実行モジュールを呼び出し、制御する制御手段と、を有し、
前記生成手段は、前記ワークフローにおいて連続する機能が、同じ実行モジュールにより実行されることが定義されている場合に、前記実行モジュールに対して１回の呼び出しで該連続する機能が実行されるように、前記ワークフローデータを編集する、
ことを特徴とするワークフローシステム。
【請求項２】
前記生成手段は、
前記ワークフローにおいて連続する機能が、異なる実行モジュールにより実行されることが定義されている場合であっても、該連続する機能のそれぞれを実行可能な共通の実行モジュールがある場合に、
前記共通の実行モジュールに対して１回の呼び出しで該連続する機能が実行されるように、前記ワークフローデータを編集する、
ことを特徴とする請求項１に記載のワークフローシステム。
【請求項３】
前記ワークフローに用いられる機能と、該機能を実行する実行モジュールと、該機能を実行可能な他の実行モジュールとを示す情報を保持する関連データ保持手段をさらに有する、
ことを特徴とする請求項２に記載のワークフローシステム。
【請求項４】
前記ワークフローに用いられる機能を分類したカテゴリに対して、カテゴリ間の順序を定めた順序データを保持する順序データ保持手段をさらに有し、
前記生成手段は、前記ワークフローにおいて連続する機能が、同じ実行モジュールにより実行されるように、前記ワークフローデータを編集する際に、前記順序データに基づき、該連続する機能が実行される順序を変更する
ことを特徴とする請求項１乃至３のいずれか１項に記載のワークフローシステム。
【請求項５】
前記ワークフローの内容を定義および実行を指示する画面を表示する表示手段をさらに有し、
前記生成手段は、前記画面を介して前記ワークフローの内容が定義された際、または実行を指示された際に、前記ワークフローデータを編集する
ことを特徴とする請求項１乃至４のいずれか１項に記載のワークフローシステム。
【請求項６】
１以上の機能を所定の順序で実行するワークフローの内容を定義したワークフローデータを生成する生成工程と、
前記ワークフローデータに基づき、前記１以上の機能を実行するために、各機能を実行する実行モジュールを呼び出し、制御する制御工程と、を有し、
前記生成工程において、前記ワークフローにおいて連続する機能が、同じ実行モジュールにより実行されることが定義されている場合に、前記実行モジュールに対して１回の呼び出しで該連続する機能が実行されるように、前記ワークフローデータを編集する、
ことを特徴とするワークフローシステムの制御方法。
【請求項７】
１以上の機能を所定の順序で実行するワークフローの内容を定義したワークフローデータを生成する生成工程をコンピュータに実行させるためのプログラムであって、
前記生成工程において、前記ワークフローにおいて連続する機能が、同じ実行モジュールにより実行されることが定義されている場合に、前記実行モジュールに対して１回の呼び出しで該連続する機能が実行されるように、前記ワークフローデータを編集する、
ことを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ワークフローシステム、制御方法、およびプログラムに関する。
【背景技術】
【０００２】
ドキュメントを扱う定型的な業務の効率化、自動化を目的としたドキュメントワークフローシステムと呼ばれるシステムが存在する。このワークフローシステムでは、複数の独立した実行モジュールや装置により実行される複数の機能が存在し、ユーザは機能を自由に組み合わせてワークフローを定義することができる。また、ワークフロー構築後は、定義されたワークフローに従って各機能を順番に実行することが可能である。
【０００３】
このようなワークフローシステムは、複数の独立した実行モジュールや装置により実行される機能を組み合わせてワークフローを定義するため、定義されたワークフローの内容によってはワークフローの実行において非効率な場合がある。例えば、ＰＤＦ（Ｐｏｒｔａｂｌｅ  Ｄｏｃｕｍｅｎｔ  Ｆｏｒｍａｔ）形式のファイルを編集する２つの異なる機能を連続して実行するワークフローが定義された場合を考える。
【０００４】
個々の機能は他の機能とは独立して実行されるため、同じＰＤＦ形式のファイルを扱う場合であっても、ＰＤＦ形式のファイルを解釈する処理や編集後のＰＤＦ形式のファイルを保存する処理が別々に実行されてしまい、処理速度の低下を招く場合がある。また、各機能の実行の過程で、中間ファイル等、不要なファイルを重複して生成してしまう可能性もあり、リソースを必要以上に消費する可能性がある。特に、複合機やモバイル端末など、リソースの制約が厳しい環境においてワークフローを実行する場合、リソース不足を招き、ワークフローシステムに多大な影響を与えてしまう可能性がある。
【０００５】
特許文献１は、同一のリソースを用いる処理を含む複数のワークフローの実行において、同一のリソースを用いる複数の処理の実行順序を特定し、該複数の処理の中から実行を省略可能な処理を特定するワークフロー制御プログラムを開示している。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２０１４−１９１６０３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかしながら、特許文献１は、複数のワークフロー間の処理において省略可能な処理の関係を考慮する技術であり、１つのワークフローにおいて無駄な処理が発生しないための具体的な方法については言及されていない。また、特許文献１では、省略可能な処理を特定しているが、省略可能でない処理から構成されるワークフローを最適化することは考慮されていない。また、特許文献１では、複数のワークフローの中から同一のリソースを用いる複数の処理の実行順序を特定しており、各処理の順序は不変である。すなわち、複数の処理の順序を変更することによりワークフローを最適化することは考慮されていない。
【０００８】
本発明は、ワークフローを効率良く実行することを可能とするワークフローシステムを提供することを目的とする。
【課題を解決するための手段】
【０００９】
本発明の一実施形態のワークフローシステムは、１以上の機能を所定の順序で実行するワークフローの内容を定義したワークフローデータを生成する生成手段と、前記ワークフローデータに基づき、前記１以上の機能を実行するために、各機能を実行する実行モジュールを呼び出し、制御する制御手段と、を有し、前記生成手段は、前記ワークフローにおいて連続する機能が、同じ実行モジュールにより実行されることが定義されている場合に、前記実行モジュールに対して１回の呼び出しで該連続する機能が実行されるように、前記ワークフローデータを編集する。
【発明の効果】
【００１０】
本発明のワークフローシステムによれば、ワークフローを効率良く実行することできる。
【図面の簡単な説明】
【００１１】
【図１】ワークフローシステムの全体構成の一例を示す概念図である。
【図２】情報処理装置のハードウェア構成例を示す図である。
【図３】ユーザインタフェースの一例を示す図である。
【図４】ワークフローデータの構造例を示す図である。
【図５】機能定義データの構造例を示す図である。
【図６】ワークフローの最適化処理を示すフローチャートである。
【図７】ワークフローの最適化処理の一例を示す図である。
【図８】ワークフローの最適化処理を示すフローチャートである。
【図９】ワークフローの最適化処理の一例を示す図である。
【図１０】ワークフローの最適化処理を示すフローチャートである。
【図１１】ワークフローの最適化処理の一例を示す図である。
【発明を実施するための形態】
【００１２】
以下、本発明を実施するための形態について図面などを参照して説明する。
【００１３】
（第１実施形態）
図１は、本発明におけるワークフローシステムの全体構成の一例を示す概念図である。
本発明におけるワークフローシステムは、ワークフロー編集部１０１、ワークフロー制御部１０２、および処理実行部１０３を備える。ワークフロー編集部１０１は、ワークフローの定義、編集、および実行指示を行う機能を有する。ユーザは、ワークフロー編集部１０１の機能を使用して、ワークフローを操作する。
【００１４】
ワークフロー編集部１０１は、ユーザインタフェース１０４、ワークフローデータ生成部１０５、実行指示部１０６、および機能定義データ１０７を備える。ユーザインタフェース１０４は、ユーザが、ワークフローの定義、編集、および実行指示を行うためのインタフェースである。ユーザインタフェース１０４の詳細については、図３を用いて後述する。
【００１５】
ワークフローデータ生成部１０５は、ユーザが定義したワークフローを実行するためのデータを生成する。具体的なデータについては、図４を用いて後述する。以下、ワークフローを実行するためのデータをワークフローデータと呼ぶ。実行指示部１０６は、ユーザが定義したワークフローを実際に実行する際に指示を行う。
【００１６】
具体的には、実行指示部１０６は、ワークフローデータ生成部１０５が生成したデータを、ワークフロー制御部１０２に送信する。また、実行指示部１０６は、ワークフロー制御部１０２からワークフローの実行状況を受信し、ユーザインタフェース１０４に通知する。機能定義データ１０７の詳細については、図５を用いて後述する。
【００１７】
ワークフロー制御部１０２は、ワークフロー編集部１０１によって生成されたワークフローデータを解釈してワークフローの実行を制御する。具体的には、ワークフロー制御部１０２は、ワークフローに定義された順序で処理実行部１０３を呼び出す処理や、エラーが発生した場合に処理をキャンセルする処理等を行う。処理実行部１０３は、ワークフロー制御部１０２から指示された各処理を実行する。処理実行部１０３は、各種処理を行う実行モジュール１０９、および実行モジュール１０９を制御する実行制御部１０８を備える。
【００１８】
本実施形態では、処理実行部１０３は、実行モジュール１０９として、ＰＤＦ編集、画像制御、入力制御、および出力制御をそれぞれ実行するモジュールを有する。なお、処理実行部１０３がどのような実行モジュールを有するかはこれに限定されるものではなく、ワークフローシステムに応じて変更できる。また、それぞれの実行モジュール１０９は、複数の機能を有する。
【００１９】
例えば、ＰＤＦ編集モジュールは、ＰＤＦに署名を行う機能、アノテーションを付加する機能等を有する。実行制御部１０８は、ワークフロー制御部１０２から実行指示を受け付け、受け付けた指示をそれぞれの実行モジュール１０９に送信する。ワークフロー制御部１０２と実行制御部１０８とは、ジョブチケットをやりとりし、ワークフロー制御部１０２が１つのジョブチケットを送信することで１つの実行モジュール１０９の各種機能を実行できるものとする。
【００２０】
また、１つのジョブチケットでは、１つの実行モジュール１０９の複数の機能の実行指示を行うことができる。例えば、ＰＤＦ編集を行う実行モジュールが有するＰＤＦ署名およびＰＤＦアノテーションを行う機能を実行する際に、１つのジョブチケットで実行することができる。
【００２１】
なお、ワークフロー編集部１０１、ワークフロー制御部１０２、および処理実行部１０３の３つの処理部は、同一の情報処理装置で実行される構成でも良く、また、異なる情報処理装置で実行される構成でも良い。また、処理実行部１０３が有する実行モジュールがそれぞれ異なる情報処理装置で実行される構成でも良い。
【００２２】
また、３つの処理部を実行する情報処理装置の種類は、例えば、ＰＣ、サーバ装置、複合機等のデバイスであるが、これらに限定するものではない。例えば、ワークフロー編集部１０１とワークフロー制御部１０２が複合機上に存在し、処理実行部１０３がクラウドシステム上に存在するといった形態であってもよい。
【００２３】
図２は、情報処理装置のハードウェア構成例を示す図である。
なお、ここでいう情報処理装置とは、ワークフロー編集部１０１、ワークフロー制御部１０２、および処理実行部１０３を実行する情報処理装置のことである。ＣＰＵ２０１は、所定のプログラムを読み出して解釈および実行する。ＲＯＭ２０６の内部のプログラム領域に記憶されたプログラム、ハードディスク２０３からＲＡＭ２０２にロードされたＯＳ、汎用アプリケーション等のプログラムの実行処理が行われる。
【００２４】
ＲＡＭ２０２は、ＣＰＵ２０１の主メモリ、ワークエリア等として機能する記憶デバイスである。ハードディスク２０３は、ブートプログラム、種々のアプリケーション、フォントデータ、ユーザファイル、電子原稿ファイル等を記憶する記録媒体である。本実施形態にかかるプログラムは、ハードディスク２０３に記憶されており、ＲＡＭ２０２に読み出されてＣＰＵ２０１によって実行される。
【００２５】
ディスプレイコントローラ２０４は、ディスプレイの表示制御を行う。ネットワークコントローラ２０５は、ネットワークに接続された機器との通信処理の制御を行う。外部記憶ドライブ２０７は、メディア（記録媒体）２０８に関するデータの読み出しと書き込みを制御する。キーボードコントローラ２０９は、ユーザのキー操作やポインティングデバイス等の操作による操作指示信号の入力処理を行う。
【００２６】
図３は、ユーザインタフェース１０４の一例を示す図である。
ユーザインタフェース１０４は、機能一覧画面３０１およびワークフロー定義画面３０２を有する。機能一覧画面３０１は、ワークフローシステムで定義されている機能を一覧する画面である。ユーザは、機能一覧画面３０１からワークフローに使用したい機能を選択し、ワークフロー定義画面３０２に移動させることでワークフローの定義を行う。
【００２７】
ワークフロー定義画面３０２は、機能一覧画面３０１で選択した各機能を並べて配置し、各機能を実行する順序に応じて各機能を接続してワークフローを定義する画面である。１つの四角で囲まれたブロックが、実行モジュール１０９の１回の呼び出しで実行される機能（処理）を表している。すなわち、１つの四角で囲まれたブロックが、１つのジョブチケットで実行指示される機能を表している。
【００２８】
また、ワークフロー定義画面３０２は、保存ボタンおよび実行ボタンを有する。ユーザは、ワークフローの定義が完了した際に保存ボタンを押下することでワークフローを確定させる。ワークフローが確定するとワークフローデータ生成部１０５がワークフローデータを生成する。そして、ワークフローデータ生成部１０５は、生成したワークフローデータに対して最適化処理を実行する。また、ユーザは、実行ボタンを押下することで、定義したワークフローを実行することができる。
【００２９】
図４は、ワークフローデータ生成部１０５が生成するワークフローデータの構造例を示す図である。
ワークフローデータ４０１は、ワークフローに含めた機能の内容や順序が定義されたＸＭＬ形式のデータである。なお、データの形式は一例であり、これに限られるものではない。
【００３０】
Ｆｌｏｗタグで囲まれている部分が１つのワークフローの定義を表す。図４は、「ｆｌｏｗ１」という名称のワークフローの定義を示している。Ｆｌｏｗタグ内には、複数のＦｕｎｃｔｉｏｎタグを含めることができる。Ｆｕｎｃｔｉｏｎタグで囲まれている部分がワークフローに含めた１つの機能を表す。図４は、「Ｆｕｎｃ１」、「Ｆｕｎｃ２」、「Ｆｕｎｃ３」、「Ｆｕｎｃ４」という名称の４つの機能が定義されている。
【００３１】
各機能は、ｉｎｄｅｘ属性によってワークフローにて実行される順序を表す。図４では、Ｆｕｎｃ１、Ｆｕｎｃ２、Ｆｕｎｃ３、Ｆｕｎｃ４の順に実行されることを示している。また、Ｆｕｎｃｔｉｏｎタグには、各機能の内容として、次の内容が定義されている。ｉｎｐｕｔ  ｔｙｐｅタグにより入力データフォーマット、ｏｕｔｐｕｔ  ｔｙｐｅタグにより出力データフォーマット、また、ｓｅｔｔｉｎｇタグには、設定パラメータが定義されている。
【００３２】
また、各機能、すなわち各Ｆｕｎｃｔｉｏｎタグで囲まれている部分は、Ｆｕｎｃｔｉｏｎｓタグでグループ化することもできる。これは、複数の機能を１回の実行指示（呼び出し）で実行することを意味する。複数の機能を１つの実行指示で実行する場合の詳細は、図９等を用いて後述する。なお、ワークフローデータ４０１は、ユーザがワークフローを確定させた際にワークフローデータ生成部１０５が生成する。また、ワークフローを実行する際には、ワークフロー制御部１０２がワークフローデータ４０１を解釈し、各機能の実行指示を行う。
【００３３】
図５は、機能定義データ１０７の構造例を示す図である。
機能定義データ１０７は、各機能の内容を定義したデータおよび各機能の属するカテゴリに応じて決まる実行順序を定義したデータを含む。
【００３４】
図５（Ａ）は、機能定義データ１０７のうち、各機能の内容を定義したデータのデータ構造例を示す図である。このデータは、ＩＤ５０１、機能名５０２、実行モジュール５０３、実行可能モジュール５０４、および機能カテゴリ５０５を有する。ＩＤ５０１は、ワークフローシステムで定義されている機能を一意に識別するための識別子である。機能名５０２は、各機能の名称を表す。
【００３５】
実行モジュール５０３は、各機能がどの実行モジュール１０９で実行されるかを表す。本実施形態では、図１に示したように、ワークフローシステムは、実行モジュール１０９として、入力制御モジュール、ＰＤＦ編集モジュール、画像制御モジュール、および出力制御モジュールの４つのモジュールを有する。したがって、実行モジュール５０３の値として各機能が取り得る値は、これら４つのモジュールのいずれかである。
【００３６】
実行可能モジュール５０４は、各機能が実行モジュール５０３のモジュール以外にどの実行モジュール１０９で実行可能であるかを表す。言い換えると、各機能が実行モジュール５０３に記載されたモジュール以外で実行可能かを表している。実行可能モジュール５０４は、機能によっては存在しない場合や複数存在する場合がある。
【００３７】
機能カテゴリ５０５は、各機能の種類を表す。本実施形態では、機能カテゴリとして、「入力」、「ＰＤＦ編集」、「画像解析」、「画像処理」、「出力」の５つのカテゴリがあり、各機能は、これら５つのカテゴリに分類されている。機能カテゴリ５０５は、同一の実行モジュール１０９内に含まれる機能のうち、どの機能カテゴリに属する機能を先に実行するか、すなわち同一の実行モジュール１０９で実行される各機能の実行順序を制御するために用いられる。
【００３８】
図５（Ｂ）は、機能定義データ１０７のうち、各機能の属する機能カテゴリに応じて決まる実行順序を定義したデータのデータ構造例を示す図である。このデータは、登録ＩＤ５０６および順序データ５０７を有する。登録ＩＤ５０６は、この実行順序を定義したデータの登録内容を一意に識別するための識別子である。順序データ５０７は、機能カテゴリ間の順序の制約を定義したデータである。
【００３９】
例えば、登録ＩＤ５０６が１のデータでは、順序データ５０７は、機能カテゴリ５０５が「入力」と「出力」の実行順序の制約を定義している。具体的には、機能カテゴリ５０５が「入力」に属する機能が「出力」に属する機能よりも先に実行されることが定義されている。
【００４０】
また、登録ＩＤ５０６が２のデータでは、順序データ５０７は、機能カテゴリ５０５が「画像処理」と「画像解析」の実行順序の制御を定義している。具体的には、機能カテゴリ５０５が「画像処理」に属する機能が「画像解析」に属する機能よりも先に実行されることが定義されている。なお、図５（Ｂ）に示したデータは、第３実施形態で用いる。
【００４１】
図６は、本実施形態に係るワークフローの最適化処理を説明するためのフローチャートである。
ワークフローの最適化処理は、ワークフローデータ生成部１０５が行う。本実施形態では、ワークフローデータの最適化処理として、ワークフロー定義画面３０２にて定義されたワークフローにおいて、同一の実行モジュール１０９で実行する機能が連続している場合に実行する最適化処理について説明する。なお、図６のフローチャートにおける処理は、全てワークフローデータ生成部１０５が実行する。
【００４２】
ステップＳ１において、ワークフローデータ生成部１０５は、ユーザがユーザインタフェース１０４を介して定義したワークフロー情報を取得する。ワークフロー情報とは、ワークフローデータ４０１を生成することが可能な情報を含んだ内部データであり、その形式は問わない。ステップＳ２において、ワークフローデータ生成部１０５は、ステップＳ１にて取得したワークフロー情報からワークフローにおいて最初に実行すると定義された機能、言い換えるとワークフローの先頭に配置された機能の情報を取得する。
【００４３】
なお、ステップＳ２〜Ｓ６の処理は、繰り返し実行される。初めてステップＳ２を実行する際には、上述したように、処理対象を、ワークフローの先頭に配置された機能とするが、２回目以降にステップＳ２を実行する際には、処理対象をステップＳ４にて情報を取得した機能とする。なお、このとき、ステップＳ４で取得した情報を保持することにより、ステップＳ２にてあらためて該機能の情報を取得しなくてもよい。ステップＳ３において、ワークフローデータ生成部１０５は、ステップＳ２にて処理対象とした機能の次に実行する機能がワークフローの中で定義されているか判定する。
【００４４】
次に実行する機能が定義されていない場合、ワークフローデータ生成部１０５は、ステップＳ２にて処理対象とした機能が、ワークフローの中で最後に実行する機能として定義されていると判断する。そして、ワークフローデータ生成部１０５は、最適化処理が完了したとみなして図６に示す処理を終了する。一方、次に実行する機能が定義されている場合、処理はステップＳ４に進み、ワークフローデータ生成部１０５は、ステップＳ１にて取得したワークフロー情報からステップＳ２にて処理対象とした機能の次に実行する機能についての情報を取得する。
【００４５】
ステップＳ５において、ワークフローデータ生成部１０５は、ステップＳ２にて処理対象とした機能と、ステップＳ４にて情報を取得した機能との２つの機能が同じ実行モジュール１０９で実行されるか判定する。すなわち、ステップＳ５では、ワークフローデータ生成部１０５は、ワークフローにおいて連続する２つの機能が、同じ実行モジュール１０９で実行されるか否かを判定する。
【００４６】
ワークフローデータ生成部１０５は、判定対象の２つの機能について、図５（Ａ）に示した機能定義データ１０７の実行モジュール５０３の値を比較し、同じ値である場合に同じ実行モジュール１０９で実行されると判定する。判定対象の２つの機能が同じ実行モジュール１０９で実行されないと判定された場合、処理はステップＳ２に戻り、処理対象をステップＳ４にて情報を取得した機能として以降の処理を繰り返す。一方、判定対象の２つの機能が同じ実行モジュール１０９で実行されると判定された場合、処理はステップＳ６に進む。
【００４７】
ステップＳ６において、ワークフローデータ生成部１０５は、ステップＳ５にて判定対象とした２つの機能を実行する際に、１つのジョブチケットで実行指示を行うことができると判断する。すなわち、ワークフローデータ生成部１０５は、実行モジュール１０９の１回の呼び出しで２つの機能を実行可能であると判断する。そして、ワークフローデータ生成部１０５は、２つの機能を１つの実行指示で実行するワークフローデータを編集する。
【００４８】
なお、２つの機能を１つの実行指示で実行するワークフローデータを生成する際に、既に一方の機能が他の機能とまとめて呼び出されるようにワークフローデータにて定義されている場合、他方の機能をそれら他の機能とまとめて呼び出されるようにする。すなわち、２つの機能を１つの実行指示で実行するワークフローデータを生成する際に、一方の機能がＦｕｎｃｔｉｏｎｓタグに他の機能とともにグループ化されている場合には、もう一方の機能についても該Ｆｕｎｃｔｉｏｎｓタグ内に含めるようにする。
【００４９】
これにより、ワークフローにおいて２以上の連続する機能を１つの実行指示で実行するワークフローデータを生成することができる。ステップＳ６を終了すると、処理はステップＳ３に戻り、処理対象をステップＳ４にて情報を取得した機能として以降の処理を繰り返す。
【００５０】
図７は、本実施形態に係るワークフローの最適化処理の一例を示す図である。
詳細には、図７（Ａ）は、最適化処理を実行する前のワークフローの定義を示す図であり、図７（Ｂ）は、図７（Ａ）のワークフローに対して最適化処理を実行した後のワークフローの定義を示す図である。
【００５１】
図７（Ａ）に示すワークフローは、所定のフォルダからＰＤＦ形式のファイルが入力されると、該ファイルに署名およびアノテーションを付加して所定のフォルダに出力するワークフローである。なお、１つの四角で囲まれたブロックは、実行モジュール１０９の１回の呼び出しで実行される機能を表している。図７（Ａ）に示すワークフローを実行する場合、「フォルダ入力」、「ＰＤＦ署名」、「ＰＤＦアノテーション」、および「フォルダ出力」の４つの機能を実行するために実行モジュール１０９が４回呼び出される。
【００５２】
「ＰＤＦ署名」と「ＰＤＦアノテーション」は、同じ実行モジュール１０９であるＰＤＦ編集モジュールにより実行される。そのため、図７（Ａ）に示すワークフローに対して図６に示す最適化処理を実行すると、ステップＳ５において「ＰＤＦ署名」と「ＰＤＦアノテーション」が判定対象の２つの機能の場合に、同じ実行モジュール１０９で実行できると判定される。
【００５３】
そして、ステップＳ６において「ＰＤＦ署名」と「ＰＤＦアノテーション」とを１つの実行指示で実行するワークフローデータが生成される。このように、「ＰＤＦ署名」と「ＰＤＦアノテーション」とが実行モジュール１０９の１回の呼び出しで実行される機能としてまとめられたワークフローが図７（Ｂ）である。
【００５４】
また一方、図７（Ｃ）は、図７（Ａ）に対応するワークフローデータ４０１の構造例を示す図であり、図７（Ｄ）は、図７（Ｂ）に対応する最適化処理を実行した後のワークフローデータ４０１の構造例を示す図である。図７（Ｃ）では、図７（Ａ）のワークフローにて定義された４つの機能が、「フォルダ入力」、「ＰＤＦ署名」、「ＰＤＦアノテーション」、「フォルダ出力」の順に呼び出され、実行される。すなわち、４つの機能に対して、実行モジュール１０９の呼び出しが４回行われる。
【００５５】
一方、図７（Ｄ）では、「ＰＤＦ署名」と「ＰＤＦアノテーション」とは、実行モジュール１０９の１回の呼び出しで実行されるように、それぞれの機能に対応するＦｕｎｃｔｉｏｎタグが、１つのＦｕｎｃｔｉｏｎｓタグでグループ化されていることがわかる。これにより、４つの機能に対して、実行モジュール１０９の呼び出しが３回行われる。
【００５６】
このように、ワークフローデータ生成部１０５がワークフローの最適化処理を実行すると、ワークフローデータ生成部１０５が生成するワークフローデータ４０１の構造が変化する。そして、ワークフローデータ４０１の構造が変化すると、ワークフロー制御部１０２が該ワークフローデータ４０１に基づいて実行制御部１０８に送信するジョブチケットも変化する。
【００５７】
具体的には、図７（Ｃ）のワークフローデータ４０１を受け取ったワークフロー制御部１０２は、実行制御部１０８に対して４つのジョブチケットを送信する。一方、図７（Ｄ）のワークフローデータ４０１を受け取ったワークフロー制御部１０２は、実行制御部１０８に対して３つのジョブチケットを送信する。その中の１つは、「ＰＤＦ署名」と「ＰＤＦアノテーション」の両機能の実行指示が記載されたジョブチケットである。
【００５８】
以上のように、本実施形態によれば、ワークフローデータの最適化処理を実行することにより、ワークフローを効率良く実行することができる。これにより、例えば、ワークフローの実行において、ワークフローの内容に基づいて最適な呼び出し回数でワークフローを実行することが可能となる。
【００５９】
したがって、実行パフォーマンスの向上、メモリ、ＣＰＵ等、ハードウェアリソースの使用効率向上が可能となる。また、ワークフローシステムを扱うユーザがワークフローの各機能に関して特別な知識やスキルを持たず、効率の良さを考慮せずにワークフローの構築を行った場合であっても、自動でワークフローの最適化が行われるため、ユーザの負担が軽減される。
【００６０】
（第２実施形態）
次に、第２実施形態に係るワークフローの最適化処理について説明する。第１実施形態では、ワークフローにおいて、同一の実行モジュール１０９で実行される機能が連続する場合の最適化処理について説明した。本実施形態では、同一の実行モジュール１０９で実行される機能が連続しない場合についてのワークフローの最適化処理について説明を行う。
【００６１】
なお、図１〜図５にて説明したワークフローシステムの構成、情報処理装置の構成、ユーザインタフェース、各種データの構造等は、第１実施形態と同様のため、同一構成のものには同一の符号を付し、その説明を省略する。
【００６２】
図８は、本実施形態に係るワークフローの最適化処理を説明するためのフローチャートである。
なお、第１実施形態にて説明したワークフローの最適化処理（図６）と共通する処理についてはその説明を省略し、ここでは差異のみについて説明する。
【００６３】
図６の最適化処理と異なる点は、ステップＳ５において、ワークフローデータ生成部１０５が、判定対象の２つの機能が同じ実行モジュール１０９で実行できないと判定した場合、処理がステップＳ２に戻るのではなく、ステップＳ１１に進む点である。ステップＳ１１において、ワークフローデータ生成部１０５は、ステップＳ５の判定対象の２つの機能が同じ実行モジュール１０９で実行可能か判定する。
【００６４】
具体的には、ワークフローデータ生成部１０５は、判定対象の２つの機能のうち後に実行される機能について、図５（Ａ）に示した機能定義データ１０７の実行可能モジュール５０４の値が、先に実行される機能の実行モジュール５０３の値と同じか判定する。すなわち、判定対象の２つの機能のうち先に実行される機能を実行する実行モジュール１０９でグループ化できるかを判定する。
【００６５】
なお、ステップＳ１１の判定内容はこれに限られるものではなく、例えば、判定対象の２つの機能のうち後に実行される機能を実行する実行モジュール１０９でグループ化できるか判定してもよい。また、例えば、判定対象の２つの機能について、実行可能モジュール５０４に共通の値があるか、すなわち該共通の値が示す実行モジュール１０９でグループ化できるか判定してもよい。
【００６６】
ステップＳ１１にて判定対象の２つの機能が同じ実行モジュール１０９で実行可能と判定された場合、処理はステップＳ６に進む。そして、第一実施形態と同様に、ワークフローデータ生成部１０５は、２つの機能を１つの実行指示で実行するワークフローデータを生成する。
【００６７】
図９は、本実施形態に係るワークフローの最適化処理の一例を示す図である。
詳細には、図９（Ａ）は、最適化処理を実行する前のワークフローの定義を示す図であり、図９（Ｂ）は、図９（Ａ）のワークフローに対して最適化処理を実行した後のワークフローの定義を示す図である。
【００６８】
図９（Ａ）に示すワークフローは、所定のフォルダからｊｐｇやｐｎｇ形式等の画像ファイルが入力されると、ノイズ除去を行い、ノイズ除去後の画像ファイルから暗号化されたＰＤＦ形式のファイルを生成して所定のフォルダに出力するワークフローである。なお、第１実施形態の図７と同様に、１つの四角で囲まれたブロックは、実行モジュール１０９の１回の呼び出しで実行される機能を表している。
【００６９】
図９（Ａ）に示すワークフローを実行する場合、「フォルダ入力」、「ノイズ除去」、「暗号化ＰＤＦ生成」、および「フォルダ出力」の４つの機能を実行するために、実行モジュール１０９が４回呼び出される。「ノイズ除去」は、画像制御モジュールにより実行され、「暗号化ＰＤＦ生成」は、ＰＤＦ編集モジュールにより実行される。そのため、図９（Ａ）に示すワークフローに対して図８に示す最適化処理を実行すると、ステップＳ５において「ノイズ除去」と「暗号化ＰＤＦ生成」が判定対象の２つの機能の場合に、同じ実行モジュール１０９では実行できないと判定される。
【００７０】
そして、ステップＳ１１において判定対象の２つの機能が同じ実行モジュール１０９で実行可能か判定される。ここで、図５（Ａ）に示した機能定義データ１０７を参照すると、「暗号化ＰＤＦ生成」は、機能定義データ１０７の実行可能モジュール５０４の値として画像制御モジュールを含む。そのため、「ノイズ除去」と「暗号化ＰＤＦ生成」は、画像制御モジュールの１回の呼び出しで実行できる。
【００７１】
そこで、ステップＳ１１において判定対象の２つの機能が同じ実行モジュール１０９で実行可能であると判定される。そして、ステップＳ６において「ノイズ除去」と「暗号化ＰＤＦ生成」とを１つの実行指示で実行するワークフローデータ４０１が生成される。このように、「ノイズ除去」と「暗号化ＰＤＦ生成」とが実行モジュール１０９の１回の呼び出しで実行される機能としてまとめられたワークフローが図９（Ｂ）である。
【００７２】
また一方、図９（Ｃ）は、図９（Ａ）に対応するワークフローデータ４０１の構造例を示す図であり、図９（Ｄ）は、図９（Ｂ）に対応する最適化処理を実行した後のワークフローデータ４０１の構造例を示す図である。図９（Ｃ）では、図９（Ａ）のワークフローにて定義された４つの機能が、「フォルダ入力」、「ノイズ除去」、「暗号化ＰＤＦ生成」、「フォルダ出力」の順に呼び出され、実行される。すなわち、４つの機能に対して、実行モジュール１０９の呼び出しが４回行われる。
【００７３】
一方、図９（Ｄ）では、「ノイズ除去」と「暗号化ＰＤＦ生成」とは、実行モジュール１０９の１回の呼び出しで実行されるように、それぞれの機能に対応するＦｕｎｃｔｉｏｎタグが、１つのＦｕｎｃｔｉｏｎｓタグでグループ化されていることがわかる。これにより、４つの機能に対して、実行モジュール１０９の呼び出しが３回行われる。
【００７４】
また、第１実施形態の場合と同様に、ワークフローデータ４０１の構造が変化すると、ワークフロー制御部１０２が該ワークフローデータ４０１に基づいて実行制御部１０８に送信するジョブチケットも変化する。具体的には、図９（Ｃ）のワークフローデータ４０１を受け取ったワークフロー制御部１０２は、実行制御部１０８に対して４つのジョブチケットを送信する。
【００７５】
一方、図９（Ｄ）のワークフローデータ４０１を受け取ったワークフロー制御部１０２は、実行制御部１０８に対して３つのジョブチケットを送信する。その中の１つは、「ノイズ除去」および「暗号化ＰＤＦ生成」の両機能の実行指示が記載されたジョブチケットである。
【００７６】
以上のように、本実施形態によれば、第１実施形態と同様の効果を奏する。さらに、本実施形態によれば、ワークフローにおいて連続する機能が異なる実行モジュールにより実行することが定義されている場合であっても、該連続する機能を実行可能な共通の実行モジュールがあるときには、実行モジュールの呼び出し回数を軽減できる。
【００７７】
（第３実施形態）
次に、第３実施形態に係るワークフローの最適化処理について説明する。第１実施形態および第２実施形態では、連続する機能が同じ実行モジュール１０９で実行されるかまたは実行可能な場合に、該実行モジュール１０９の１回の呼び出しでそれら連続する機能を実行するように、ワークフローの最適化処理を行う。
【００７８】
これに対して、本実施形態では、第１実施形態および第２実施形態の最適化処理に加えて、ワークフローにて定義された機能の順序を入れ替えることによりワークフローの最適化を行う場合について説明する。これは、ワークフローの定義を行う際に、ユーザがどのように機能を組み合わせるかは自由であり、同じ処理を行うワークフローであっても、様々なパターンのワークフローが定義できるため、有効な処理である。
【００７９】
例えば、ユーザがワークフローの作成に必要なスキルを持たない場合、ワークフローで用いられる各機能を理解し、各機能の実行順序を考慮して最適なワークフローを作成するのは困難である。このような場合であっても、本実施形態では、各機能の最適な実行順序を考慮して、ワークフローの最適化処理を行うことができる。
【００８０】
図１０は、本実施形態に係るワークフローの最適化処理を説明するためのフローチャートである。
なお、第２実施形態にて説明したワークフローの最適化処理（図８）と共通する処理についてはその説明を省略し、ここでは差異のみについて説明する。
【００８１】
図８の最適化処理と異なる点は、ステップＳ６にて、ワークフローにおいて連続する機能を１つの実行指示で実行するワークフローデータを生成する前に、各機能の実行順序の入れ替えに関する処理が追加されている点である。詳細には、ステップＳ５にて、ワークフローにおいて連続する機能が、同じ実行モジュール１０９で実行されると判定された場合に、ステップＳ６の前にステップＳ２１〜Ｓ２３の処理が実行される。
【００８２】
また、ステップＳ１１にて、ワークフローにおいて連続する機能が、同じ実行モジュール１０９で実行可能であると判定された場合についても、ステップＳ６の前にステップＳ２１〜Ｓ２３の処理が実行される。
【００８３】
ステップＳ２１において、ワークフローデータ生成部１０５は、図５に示した機能定義データ１０７から、ステップＳ１１の判定対象の２つの機能に関して、順序に関わる情報を取得する。具体的には、ワークフローデータ生成部１０５は、ステップＳ１１の判定対象の２つの機能について、機能定義データ１０７から、機能カテゴリ５０５および順序データ５０７を取得する。
【００８４】
ステップＳ２２において、ワークフローデータ生成部１０５は、順序の入れ替えが必要か判定する。まず、ワークフローデータ生成部１０５は、順序データ５０７において、判定対象の２つの機能に対応する機能カテゴリ５０５に関して順序の制約が定義されているか確認する。そして、順序データ５０７において、判定対象の２つの機能に対応する機能カテゴリ５０５に関して順序の制約が定義されている場合、順序データ５０７に従って順序の入れ替えが必要であると判断する。
【００８５】
ステップＳ２２にて、順序の入れ替えが必要であると判定された場合、処理はステップＳ２３に進み、順序の入れ替えが必要ないと判定された場合、処理はステップＳ６に進む。ステップＳ２３において、ワークフローデータ生成部１０５は、２つの機能の順序を入れ替える。
【００８６】
図１１は、本実施形態に係るワークフローの最適化処理の一例を示す図である。
詳細には、図１１（Ａ）は、最適化処理を実行する前のワークフローの定義を示す図であり、図１１（Ｂ）は、図１１（Ａ）のワークフローに対して最適化処理を実行した後のワークフローの定義を示す図である。
【００８７】
図１１（Ａ）に示すワークフローは、所定のフォルダからｊｐｇやｐｎｇ形式等の画像ファイルが入力されると、斜行補正、ＯＣＲ、ノイズ除去を行い、ノイズ除去後の画像ファイルおよびＯＣＲの実行結果を所定のフォルダに出力するワークフローである。図１１（Ａ）に示すワークフローを実行する場合、「フォルダ入力」、「斜行補正」、「ＯＣＲ」、「ノイズ除去」、および「フォルダ出力」の５つの機能を実行するために、実行モジュール１０９が５回呼び出される。
【００８８】
「斜行補正」、「ＯＣＲ」、および「ノイズ除去」はいずれも画像制御モジュールにより実行される。そのため、図１１（Ａ）に示すワークフローに対して図１０に示す最適化処理を実行すると、ステップＳ５において「斜行補正」と「ＯＣＲ」が判定対象の２つの機能の場合、同じ実行モジュール１０９で実行できると判定される。また、「ＯＣＲ」と「ノイズ除去」が判定対象の２つの機能の場合、同様に、同じ実行モジュール１０９で実行できると判定される。
【００８９】
よって、それぞれの場合に、ステップＳ２１〜Ｓ２３の処理に進む。そして、ステップＳ２１〜２３の処理において、図５（Ａ）に示した機能定義データ１０７を参照すると、「斜行補正」と「ノイズ除去」の機能カテゴリ５０５が「画像処理」であり、「ＯＣＲ」の機能カテゴリ５０５が「画像解析」であることがわかる。また、図５（Ｂ）に示した機能定義データ１０７を参照すると、順序データ５０７において機能カテゴリ５０５が「画像処理」と「画像解析」との間には、実行する順序に制約が定義されていることがわかる。
【００９０】
具体的には、機能カテゴリ５０５が「画像処理」の機能は、機能カテゴリが「画像解析」の機能より前に実行されるという制約がある。このため、「ＯＣＲ」と「ノイズ除去」の実行順序が入れ替わる。このように、「斜行補正」、「ＯＣＲ」、および「ノイズ除去」が実行モジュール１０９の１回の呼び出しで実行される機能としてまとめられ、さらに、「ＯＣＲ」と「ノイズ除去」の実行順序が入れ替えられたワークフローが図１１（Ｂ）である。
【００９１】
また一方、図１１（Ｃ）は、図１１（Ａ）に対応するワークフローデータ４０１の構造例を示す図であり、図１１（Ｄ）は、図１１（Ｂ）に対応する最適化処理を実行した後のワークフローデータ４０１の構造例を示す図である。図１１（Ｃ）では、図１１（Ａ）のワークフローにて定義された５つの機能が、「フォルダ入力」、「斜行補正」、「ＯＣＲ」、「ノイズ除去」、「フォルダ出力」の順に呼び出され、実行される。すなわち、５つの機能に対して、実行モジュール１０９の呼び出しが５回行われる。
【００９２】
一方、図１１（Ｄ）では、「斜行補正」、「ＯＣＲ」、および「ノイズ除去」は、実行モジュール１０９の１回の呼び出しで実行されるように、それぞれに対応するＦｕｎｃｔｉｏｎタグが、１つのＦｕｎｃｔｉｏｎｓタグでグループ化されていることがわかる。これにより、５つの機能に対して、実行モジュール１０９の呼び出しが３回行われる。さらに、本実施形態では、「ＯＣＲ」と「ノイズ除去」の実行順序を入れ替えたため、「ＯＣＲ」に対応するＦｕｎｃｔｉｏｎタグのｉｎｄｅｘ属性と「ノイズ除去」に対応するＦｕｎｃｔｉｏｎタグのｉｎｄｅｘ属性が入れ替わっていることがわかる。
【００９３】
以上のように、本実施形態では、第１実施形態の場合と同様の効果を奏する。さらに、本実施形態によれば、ワークフローの内容に基づいて最適な順序でワークフローを実行することが可能となる。例えば、ＯＣＲのような画像解析処理より後にノイズ除去等の画像処理が定義されている場合、画像解析処理より前に画像処理を行うことでＯＣＲの精度を向上させることができる。
【００９４】
このように、ユーザがワークフローシステムを扱うユーザがワークフローの各機能に関して特別な知識やスキルを持たず、効率の良さを考慮せずにワークフローの構築を行った場合であっても、自動でワークフローの最適化が行われる。そして、特定の機能の精度を向上させることも可能となる。
【００９５】
なお、上述した各実施形態において、ワークフローの最適化処理は、いずれもワークフローが確定した際に実行されるものとして説明した。しかし、これに限られるものではなく、例えば、ワークフローを実行する際にワークフロー制御部１０２が同様の処理を行う構成としてもよい。また、上述した各実施形態では、ワークフローが確定した際に生成されたワークフローデータに対して最適化処理を行い、該生成されたワークフローデータを編集するものとして説明した。しかし、これに限られるものではなく、例えば、ワークフローを作成する際に、同時に最適化処理を実行してもよい。
【００９６】
（その他の実施形態）
本発明は、上述の実施形態の１以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける１つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、１以上の機能を実現する回路（例えば、ＡＳＩＣ）によっても実現可能である。
【００９７】
以上、本発明の好ましい実施形態について説明したが、本発明は、これらの実施形態に限定されず、その要旨の範囲内で種々の変形および変更が可能である。
【符号の説明】
【００９８】
１０１    ワークフロー編集部
１０５    ワークフローデータ生成部
１０２    ワークフロー制御部
１０３    処理実行部
【図１】
2019008695.tif 000003
【図２】
2019008695.tif 000004
【図３】
2019008695.tif 000005
【図４】
2019008695.tif 000006
【図５】
2019008695.tif 000007
【図６】
2019008695.tif 000008
【図７】
2019008695.tif 000009
【図８】
2019008695.tif 000010
【図９】
2019008695.tif 000011
【図１０】
2019008695.tif 000012
【図１１】
2019008695.tif 000013