(57)【要約】【課題】効率的にワークフローを処理することを目的とする。【解決手段】情報処理装置は、複数の機能提供手段と、ワークフロー定義ファイルに基づき複数の機能提供手段を一連の処理として実行するワークフロー処理手段と、を有する。ワークフロー処理手段は、複数の機能提供手段を並列に実行する場合、複数の機能提供手段から受け取った画面の状態に基づいて操作部に表示する機能提供手段の画面の優先順位を決定し、決定した優先順位に基づいて操作部に機能提供手段の画面を表示する。【選択図】図８
2019040561.tif 000002
【特許請求の範囲】
【請求項１】
操作部を有する情報処理装置であって、
複数の機能提供手段と、
ワークフロー定義ファイルに基づき前記複数の機能提供手段を一連の処理として実行するワークフロー処理手段と、
を有し、
前記ワークフロー処理手段は、複数の機能提供手段を並列に実行する場合、前記複数の機能提供手段から受け取った画面の状態に基づいて前記操作部に表示する機能提供手段の画面の優先順位を決定し、決定した優先順位に基づいて前記操作部に機能提供手段の画面を表示する情報処理装置。
【請求項２】
前記複数の機能提供手段のそれぞれは、画面の状態を前記処理手段に通知する請求項１記載の情報処理装置。
【請求項３】
前記複数の機能提供手段のそれぞれは、機能提供手段の呼び出し時に前記画面の状態を前記処理手段に通知する請求項２記載の情報処理装置。
【請求項４】
前記複数の機能提供手段のそれぞれは、機能提供手段の実行中に画面の状態が変わればそのたびに前記画面の状態を前記処理手段に通知する請求項２記載の情報処理装置。
【請求項５】
前記ワークフロー処理手段は、複数の機能提供手段の画面の優先順位が同じ場合は、先に呼び出していた機能提供手段の画面を優先して前記操作部に表示する請求項１乃至４何れか１項記載の情報処理装置。
【請求項６】
前記ワークフロー処理手段は、前記並列に実行する複数の機能提供手段のうち、少なくとも１つ以上の機能提供手段に関して前記ワークフロー定義ファイルに画面の優先順位が設定されている場合、前記ワークフロー定義ファイルに設定されている画面の優先順位に基づいて前記操作部に表示する機能提供手段の画面の優先順位を決定し、決定した優先順位に基づいて前記操作部に機能提供手段の画面を表示する請求項１乃至５何れか１項記載の情報処理装置。
【請求項７】
前記ワークフロー処理手段は、前記並列に実行する複数の機能提供手段のうち、画面を有する機能提供手段が存在しない場合、補完画面を前記操作部に表示する請求項１乃至６何れか１項記載の情報処理装置。
【請求項８】
前記情報処理装置は、画像形成装置である請求項１乃至７何れか１項記載の情報処理装置。
【請求項９】
操作部を有する情報処理装置が実行する情報処理方法であって、
ワークフロー定義ファイルに基づき複数の機能提供手段を一連の処理として実行する工程と、
複数の機能提供手段を並列に実行する場合、前記複数の機能提供手段から受け取った画面の状態に基づいて前記操作部に表示する機能提供手段の画面の優先順位を決定し、決定した優先順位に基づいて前記操作部に機能提供手段の画面を表示する工程と、
を含む情報処理方法。
【請求項１０】
コンピュータを、請求項１乃至８何れか１項記載の情報処理装置の各手段として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、情報処理方法及びプログラムに関する。
【背景技術】
【０００２】
近年、オフィスに設置される画像形成装置には、画像形成装置の機能を拡張できるシステムが普及している。コピー機能のような画像形成装置として基本的な機能は、基本ソフトウェア（以下、基本ソフト）として工場出荷時にシステムに組み込まれている。他方、画像形成装置を拡張する機能は、拡張ソフトウェア（以下、拡張ソフトという）として、画像形成装置の設置時又は設置後の運用段階において、システムに追加される。この種のシステムとしてはキヤノン株式会社のＭＥＡＰ（登録商標）等があげられる。
特にある目的に応じて、特定の入力から出力を行うように作られた拡張ソフトは、アプリケーションソフトウェア（以下、アプリという）と呼ばれる。アプリは、画像形成装置が備えるファクシミリ、スキャナ、プリンタといった機能を利用することで入力から出力までの一連の処理（以下、ワークフローという）を実現している。画像形成装置は、ユーザの目的に応じて複数のアプリをインストールできるように構成されている。
また入力、変換、出力を独立した拡張ソフトで構成し、拡張ソフトの組み合わせで一連の処理を行い、拡張ソフトとパラメータとの組み合わせで課金を行うものもある（特許文献１）。ワークフローを構成するそれぞれの拡張ソフトは、実行時に画像形成装置の操作部に画面を表示するものがある。例えば、設定画面、実行中の進捗を示す画面、処理結果の確認画面等である。また、ワークフローによっては、拡張ソフトが並列に処理を行うよう組み合わせが定義されることもある。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１４−１３４８７２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、画像形成装置の操作部に表示できるのは、１つのソフトウェア（基本ソフト又は拡張ソフト）の画面のみであり、複数のソフトウェアの画面を同時に表示することはできない。そのため、ワークフローで並列に処理を行うよう定義されていた場合、同時に拡張ソフトを実行しても、画像形成装置の操作部に表示されるのは同時に実行されている複数の拡張ソフトのうち何れか１つの拡張ソフトの画面のみである。同時に実行されている複数の拡張ソフトのうちその他の拡張ソフトの画面は、表示されている拡張ソフトの画面の後ろに隠れていてユーザからは見えないし、操作できない。
このとき、ユーザの入力を必要とする画面が後ろに隠れている場合、その拡張ソフトの処理はそれ以上進まない。結果、拡張ソフトの処理は、表示されている拡張ソフトの画面が閉じるまで待たされることになり、ワークフロー全体が効率的に処理できないという課題があった。
【課題を解決するための手段】
【０００５】
本発明は、操作部を有する情報処理装置であって、複数の機能提供手段と、ワークフロー定義ファイルに基づき前記複数の機能提供手段を一連の処理として実行するワークフロー処理手段と、を有し、前記ワークフロー処理手段は、複数の機能提供手段を並列に実行する場合、前記複数の機能提供手段から受け取った画面の状態に基づいて前記操作部に表示する機能提供手段の画面の優先順位を決定し、決定した優先順位に基づいて前記操作部に機能提供手段の画面を表示する。
【発明の効果】
【０００６】
本発明によれば、効率的にワークフローを処理することができる。
【図面の簡単な説明】
【０００７】
【図１】情報処理システムのシステム構成の一例を示す図である。
【図２】ＭＦＰのハードウェ構成の一例を示す図である。
【図３】サーバのハードウェア構成の一例を示す図である。
【図４】ＭＦＰのソフトウェア構成の一例を示す図である。
【図５】ワークフロー定義ファイルの具体的な記述の一例を示す図である。
【図６】ＭＦＰ上のワークフローの実行の処理の流れを示したシーケンス図である。
【図７】機能プロバイダの処理状態の例を示す図である。
【図８】ワークフロー処理部の処理を説明するためのフローチャートである。
【図９】Ｓ８１０及びＳ８２０の処理を詳細に説明するためのフローチャートである。
【図１０】処理状態管理テーブルの一例を示す図である。
【図１１】機能プロバイダの画面状態と画面の優先度との関係を示した図である。
【図１２】機能プロバイダの処理の一例を説明するためのフローチャートである。
【図１３】ワークフロー定義ファイルの一例を示す図である。
【図１４】図９を変形したフローチャートである。
【図１５】処理状態管理テーブルの一例を示す図である。
【発明を実施するための形態】
【０００８】
以下、本発明の実施形態について図面に基づいて説明する。
【０００９】
＜実施形態１＞
図１は、情報処理システムのシステム構成の一例を示す図である。情報処理システムは、ＬＡＮ１１０を介して接続されるＭＦＰ１０１と、ＷＡＮ１２０を介して接続されるサーバ１０２と、を含む。ＬＡＮ１１０上の装置とＷＡＮ１２０上の装置はお互いのネットワークを通して、相互に通信可能である。図１は典型的なネットワーク構成の例であり、各装置がＬＡＮ１１０又はＷＡＮ１２０のどちらにあってもよい。
ＭＦＰ１０１は、スキャナ、プリンタを有する画像形成装置である。加えて、ＭＦＰ１０１は、装置上で動作する拡張ソフトを追加、実行させるためのソフトウェアプラットホームを持つ。サーバ１０２は、ＭＦＰ１０１と連携して各種処理を行うサーバである。例えば、サーバ１０２は、ＭＦＰ１０１から画像データを受信するファイルサーバであったり、ＭＦＰ１０１から処理依頼を受けてＯＣＲ（光学文字認識）処理を実行するＷｅｂアプリケーションサーバであったりする。サーバは一台とは限らず、目的に応じて複数のサーバが情報処理システムに存在してもよい。
【００１０】
図２は、ＭＦＰ１０１のハードウェ構成の一例を示す図である。ＣＰＵ２１１を含む制御部２１０は、ＭＦＰ１０１全体の動作を制御する。ＣＰＵ２１１は、ＲＯＭ２１２やＨＤＤ２１４に記憶されたプログラムを読み出して実行することにより読取制御や送信制御等の各種制御処理を実現する。ＲＡＭ２１３は、ＣＰＵ２１１の主メモリ、ワークエリア等の一時記憶領域として用いられる。ＨＤＤ２１４は、画像データやインストールされた拡張ソフトのプログラム等を記憶する。
操作部Ｉ／Ｆ２１５は、操作部２１９と制御部２１０とを接続する。操作部２１９には、タッチパネル機能を有する液晶表示部やキーボード等が備えられている。
プリンタＩ／Ｆ２１６は、プリンタ２２０と制御部２１０とを接続する。プリンタ２２０で印刷すべき画像データはプリンタＩ／Ｆ２１６を介して制御部２１０からプリンタ２２０に転送され、プリンタ２２０において記録媒体上に印刷される。
スキャナＩ／Ｆ２１７は、スキャナ２２１と制御部２１０とを接続する。スキャナ２２１は、原稿上の画像を読み取って画像データを生成し、スキャナＩ／Ｆ２１７を介して制御部２１０に入力する。ネットワークＩ／Ｆ２１８は、制御部２１０（ＭＦＰ１０１）をＬＡＮ１１０に接続する。ネットワークＩ／Ｆ２１８は、ＬＡＮ１１０上又はＷＡＮ１２０上の他の装置との間で各種情報を送受信する。
ＣＰＵ２１１がＲＯＭ２１２やＨＤＤ２１４に記憶されたプログラムをＲＡＭ２１３に読み出して実行することにより、後述する図４に示すＭＦＰ１０１のソフトウェア構成が実現される。また、ＣＰＵ２１１がＲＯＭ２１２やＨＤＤ２１４に記憶されたプログラムをＲＡＭ２１３に読み出して実行することにより、後述する図６のシーケンス図、図８、９、１２、１４のフローチャートの処理が実現される。
【００１１】
図３は、サーバ１０２のハードウェア構成の一例を示す図である。ＣＰＵ３１１を含む制御部３１０は、サーバ１０２全体の動作を制御する。ＣＰＵ３１１は、ＲＯＭ３１２やＨＤＤ３１４に記憶されたプログラムを読み出して実行することにより各種制御処理を実現する。ＲＡＭ３１３は、ＣＰＵ３１１の主メモリ、ワークエリア等の一時記憶領域として用いられる。ＨＤＤ３１４は、各種のプログラムやデータを記憶する。
表示部Ｉ／Ｆ３１５は、表示部３１８と制御部３１０とを接続する。キーボードＩ／Ｆ３１６は、キーボード３１９と制御部３１０とを接続する。ＣＰＵ３１１は、キーボード３１９を介したユーザからの指示を認識し、認識した指示に応じて表示部３１８に表示する画面を遷移させる。
ネットワークＩ／Ｆ３１７は、制御部３１０（サーバ１０２）をＷＡＮ１２０に接続する。ネットワークＩ／Ｆ３１７は、ＬＡＮ１１０上又はＷＡＮ１２０上の他の装置との間で各種情報を送受信する。
【００１２】
図４は、ＭＦＰ１０１のソフトウェア構成の一例を示す図である。
拡張ソフト管理部４１０は、ＭＦＰ１０１上で拡張ソフトを動作させるためのソフトウェアプラットホームである。図４の例では、拡張ソフトとして４１１〜４１４の４つの拡張ソフトが機能プロバイダとしてＭＦＰ１０１にインストールされていることを示している。
機能プロバイダは、拡張ソフトの一種であるが、アプリではない。アプリは単体で入力から出力までの一連の完結した処理を備えている。一方、単体の機能プロバイダは入力なら入力、出力なら出力といった特定の機能を提供する拡張ソフトを示すものであり、入力から出力までの一連の完結した処理を行うためには、複数の機能プロバイダを組み合わせる必要がある。機能プロバイダは、機能提供手段の一例である。
例えば、「スキャンしてプレビュー表示の後、送信する」という機能をユーザに提供する場合、アプリであれば「スキャン」「プレビュー」「送信」の３つの機能を１つのアプリで実現する。一方、機能プロバイダの場合、「スキャン機能を実現する機能プロバイダ」、「プレビュー機能を実現する機能プロバイダ」、「送信機能を実現する機能プロバイダ」の３つの機能プロバイダが必要になる。更に、それら３つの機能プロバイダを一連の処理として実行するためには、後述するワークフロー処理部４３０が必要になる。
また、ＭＦＰ１０１にアプリをインストールすると、アプリは、ＭＦＰ１０１が備えている機能（例えばコピー機能やファクス送信機能）を呼び出すためのメニュー画面に登録される。アプリは、メニュー画面からユーザの指示によって呼び出される。
【００１３】
一方、ＭＦＰ１０１に機能プロバイダをインストールすると、機能プロバイダは、メニュー画面ではなく、後述する機能プロバイダ管理部４２０に登録される。機能プロバイダは、機能プロバイダ管理部４２０経由でワークフロー処理部４３０の指示によって呼び出される。ワークフローを実行するためには、メニュー画面にワークフロー処理部４３０が後述のワークフロー定義ファイルに対応して表示するメニュー項目が用いられる。
更に、機能プロバイダは、機能プロバイダ管理部４２０が規定するルール（以下、機能プロバイダインターフェースという）を満たすようにプログラミングされている。機能プロバイダインターフェースは、ソフトウェア間のやり取りを行う際のルールを決めたソフトウェアインターフェースである。機能プロバイダインターフェースは、機能プロバイダが提供する機能の種類（以下、機能タイプという）ごとに定められている。機能プロバイダは、機能プロバイダインターフェースに基づいてワークフロー処理部４３０から呼び出される。
【００１４】
また、複数種類の機能プロバイダをＭＦＰ１０１にインストールすることができる。異なる機能タイプの機能プロバイダを複数種類インストールしてもよいし、同じ機能タイプの機能プロバイダを複数種類インストールしてもよい。同じ機能タイプの機能プロバイダは同じ機能プロバイダインターフェースを持つため、拡張ソフトは、同じ機能タイプの機能プロバイダであれば、同じようにソフトウェア間のやり取りを行うことができる。
更に、機能プロバイダは自身の処理状態が変化するたびに、呼び出し元のワークフロー処理部４３０に対して、処理状態を通知する。処理状態は、機能プロバイダが何の処理を行っているかを示すものであり、例えばスキャンプロバイダであれば、「スキャン設定受付」状態、「スキャン実行」状態、「次原稿待機」状態、「スキャン画像保存」状態等がある。
スキャンプロバイダ４１１は、機能タイプが「スキャン」の機能プロバイダであり、スキャナ２２１から原稿を読み込むスキャン機能を提供する。プレビュープロバイダ４１２は、機能タイプが「プレビュー」の機能プロバイダであり、操作部２１９に画像を表示するプレビュー機能を提供する。ＯＣＲプロバイダ４１３は、機能タイプが「ＯＣＲ」の機能プロバイダであり、文字認識処理を行うＯＣＲ機能を提供する。ＦＴＰ送信プロバイダ４１４は、機能タイプが「送信」の機能プロバイダであり、ＦＴＰサーバへファイルを送信するＦＴＰ送信機能を提供する。
以上で説明した４１１〜４１４の４つの機能プロバイダは一例であり、ＭＦＰ１０１には、拡張ソフトとして様々な機能プロバイダを追加・削除することができる。
【００１５】
機能プロバイダ管理部４２０は、ＭＦＰ１０１にインストールされている機能プロバイダを管理するソフトウェアである。機能プロバイダ管理部４２０は、後述するワークフロー処理部４３０から機能プロバイダの取得指示を受け取ると、ＭＦＰ１０１にインストールされている機能プロバイダを取得し、ワークフロー処理部４３０に応答する。
ワークフロー処理部４３０は、後述するワークフロー定義ファイル４４０に従って複数の機能プロバイダを組み合わせて一連の処理として実行する。本実施形態では、ワークフローとは複数の機能プロバイダを組み合わせた一連の処理を示すものとする。ワークフロー処理部４３０は、処理状態管理テーブル４３１、実行中補完画面４３２を持つ。処理状態管理テーブル４３１は、ワークフローの処理状態を管理するテーブルである。実行中補完画面４３２は、ワークフローの実行中に画面を持つ機能プロバイダが１つも存在しない場合に処理中であることを示すために、操作部２１９に表示する画面である。
ワークフロー定義ファイル４４０は、ワークフロー処理部４３０が呼び出す機能プロバイダの機能タイプや、呼び出し順序、呼び出した機能プロバイダに適用する設定値等、機能プロバイダの呼び出しに関する情報を定義する。
図４ではワークフロー定義ファイルの例を１つ定義しているが、数を限定するものではない。
【００１６】
図５は、ワークフロー定義ファイルの具体的な記述の一例を示す図である。本実施形態ではワークフロー定義ファイルはＸＭＬ形式のファイルとして表現されているが、ＸＭＬ形式に限定されるものではなく、他の形式のファイルであってもよい。
Ｗｏｒｋｆｌｏｗタグ５１０は、以下の記述がワークフローの定義であることを示している。Ｗｏｒｋｆｌｏｗタグ５１０のｓｔａｒｔＦＰ属性は、ワークフローの最初に呼び出す機能プロバイダを定義している。
ＦＰタグ５２０は、Ｗｏｒｋｆｌｏｗタグ５１０の子要素で、ワークフローで実行する機能プロバイダに関する情報を定義している。ＦＰタグ５２０のｉｄ属性は、ＦＰタグ５２０の定義を一意に特定するＩＤであり、他のタグからＦＰタグを参照する場合に使用される。ＦＰタグ５２０のｔｙｐｅ属性は、実行する機能プロバイダの機能タイプを定義しており、「ｔｙｐｅ＝"ＳＣＡＮ"」はスキャンプロバイダであることを示している。
Ａｃｔｉｏｎタグ５２１は、ＦＰタグ６２０の子要素であり、機能プロバイダの呼び出しについての情報を定義している。Ａｃｔｉｏｎタグのｍｅｔｈｏｄ属性は、ワークフローの実行時に呼び出す機能プロバイダインターフェースを定義している。また、Ａｃｔｉｏｎタグ５２１は、呼び出す際の設定であるＰａｒａｍｅｔｅｒタグや、「ｄｏＳｃａｎ」を実行した結果の出力を定義するＯｕｔｐｕｔタグを子要素として持つ。
【００１７】
Ｎｅｘｔタグ５２３は、ＦＰタグ５２０の子要素であり、ＦＰタグ５２０の機能プロバイダの実行が完了した後に呼び出す機能プロバイダをｒｅｆ属性で定義している。ｒｅｆ属性には複数の値を記載することが可能であり、その場合、記載された複数の機能プロバイダを並列に呼び出すことを示している。Ｎｅｘｔタグ５２３の「ｒｅｆ＝"ｆｐ５３０，ｆｐ５４０"」は、スキャンプロバイダの実行が完了した後に、ｆｐ５３０で定義された機能プロバイダとｆｐ５４０で定義された機能プロバイダとを並列に呼び出すことを定義している。
ＦＰタグ５３０は、プレビュープロバイダの定義である。子要素はＦＰタグ５２０と同様の構成である。Ｎｅｘｔタグ５３１で、プレビュープロバイダの次に呼び出す機能プロバイダを定義している。
ＦＰタグ５４０は、ＯＣＲプロバイダの定義である。子要素はＦＰタグ５２０と同様の構成である。Ｎｅｘｔタグ５４１で、ＯＣＲプロバイダの次に呼び出す機能プロバイダを定義している。
ＦＰタグ５５０は、送信プロバイダの定義である。Ｗａｉｔタグ５５１は、ＦＰタグ５５０の子要素であり、ＦＰタグ５５０の機能プロバイダを実行する前に、実行が完了していなければならない機能プロバイダ（以下、前工程の機能プロバイダという）をｒｅｆ属性で定義している。Ｗａｉｔタグ５５１の「ｒｅｆ＝"ｆｐ５３０，ｆｐ５４０"」は、ｆｐ５３０で定義された機能プロバイダとｆｐ５４０で定義された機能プロバイダとの両方が実行完了した後に、送信プロバイダを呼び出すことを定義している。
【００１８】
図６は、ＭＦＰ１０１上のワークフローの実行の処理の流れを示したシーケンス図である。
Ｓ６０１において、ワークフロー処理部４３０は、ユーザからのワークフローの実行指示を受け取る。
Ｓ６０２において、ワークフロー処理部４３０は、実行指示に対応するワークフロー定義ファイル４４０を読み込む。
Ｓ６０３において、ワークフロー処理部４３０は、機能プロバイダ管理部４２０に対して、ワークフロー定義ファイル４４０に記載されている機能プロバイダの取得を指示する。
Ｓ６０４において、機能プロバイダ管理部４２０は、ワークフロー処理部４３０から指示された機能プロバイダを取得する。
Ｓ６０５において、機能プロバイダ管理部４２０は、機能プロバイダの取得結果をワークフロー処理部４３０に通知する。
Ｓ６０６において、ワークフロー処理部４３０は、Ｗｏｒｋｆｌｏｗタグ５１０のｓｔａｒｔＦＰ属性の記載から、最初に呼び出す機能プロバイダがスキャンプロバイダ４１１であると判断し、スキャンプロバイダ４１１にスキャン指示を行う。
Ｓ６０７において、ワークフロー処理部４３０からスキャン指示を受け取ったスキャンプロバイダ４１１は、指示に従ってスキャンを実行する。
Ｓ６０８において、スキャンプロバイダ４１１は、自身の処理状態とそれに付随する画面情報とをワークフロー処理部４３０に通知する。図６では処理状態の通知はＳ６０８だけしか図示していないが、各機能プロバイダは自身の処理状態が変化するたびに、ワークフロー処理部４３０に自身の処理状態を通知する。
Ｓ６０９において、ワークフロー処理部４３０は、機能プロバイダから受け取った処理状態を基に操作部２１９に表示する機能プロバイダの画面を決定し、最優先の画面が操作部２１９に表示されるよう、画面の切り替えを行う。Ｓ６０９の詳細は図９のフローチャートで後述する。
【００１９】
図７は、機能プロバイダの処理状態の例を示す図である。処理状態は、付随する情報として画面状態を持つ。画面状態は、「画面の有無」「ユーザ操作の有無」「自動遷移の有無」の３つの情報を持つ。「画面の有無」は、定義された処理状態において、機能プロバイダが画面を有しているか否かを示している。「ユーザ操作の有無」は、定義された処理状態において、機能プロバイダが表示する画面に対してユーザが操作を行えるか否かを示している。「自動遷移の有無」は、定義された処理状態において、ユーザが操作を行わなくても自動的に機能プロバイダが別の処理状態に移るか否かを示している。処理状態とそれに付随する画面状態とは、各機能プロバイダが内部に保持している。図７ではテーブルとして図示しているが、機能プロバイダによっては、プログラムコードに直接記載されている場合もある。
【００２０】
図７（ａ）にスキャンプロバイダ４１１の処理状態の一例を示す。
７０１は「スキャン設定受付」状態の定義であり、この状態のとき、スキャンプロバイダ４１１はスキャン設定を行う画面を表示（画面の有無＝あり）し、ユーザからスキャンの各種設定を受け付ける（ユーザ操作の有無＝あり）。そして、ユーザがスキャン設定を確定すると、次の状態である「スキャン実行」状態へ遷移する（自動遷移の有無＝なし）。
７０２は「スキャン実行」状態の定義であり、この状態のとき、スキャンプロバイダ４１１はスキャンの進捗を示す画面を表示（画面の有無＝あり）する。画面には、スキャンを中止するためのボタン（中止ボタン）が表示されており、ユーザが中止ボタンを選択すると、スキャンプロバイダ４１１はスキャンを中止する（ユーザ操作の有無＝あり）。スキャンプロバイダ４１１は、すべての原稿の読み取りが完了すると、自動的に次の状態へ遷移する（自動遷移の有無＝あり）。
【００２１】
７０３は「次原稿待機」状態の定義であり、この状態のとき、スキャンプロバイダ４１１は次の原稿を待機していることを示す画面を表示（画面の有無＝あり）する。画面には、スキャンの再開を指示するためのボタン（再開ボタン）と、スキャンのキャンセルを指示するためのボタン（キャンセルボタン）とが表示されている（ユーザ操作の有無＝あり）。「次原稿待機」状態から次の状態に遷移するためには、ユーザが再開ボタンかキャンセルボタンのどちらかを選択する必要がある（自動遷移の有無＝なし）。ユーザが次に読み込む原稿をスキャナ２２１にセットし、再開ボタンを選択すると、スキャンが再開される（ユーザ操作の有無＝あり）。スキャンが再開されると、スキャンプロバイダ４１１は「スキャン実行」状態に遷移する。
７０４は「スキャン画像保存」状態の定義であり、この状態のとき、スキャンプロバイダ４１１は読み込んだ画像をＨＤＤ２１４に保存処理していることを示す画面を表示（画面の有無＝あり）する。画面には処理中であることを示すメッセージのみが表示される（ユーザ操作の有無＝なし）。保存処理が完了するとスキャンプロバイダ４１１は処理を終了する（自動遷移の有無＝あり）。
【００２２】
Ｓ６１０において、スキャンプロバイダ４１１は、スキャンの実行結果をワークフロー処理部４３０に通知する。
ワークフロー処理部４３０は、スキャンプロバイダ４１１の終了を受けて、Ｎｅｘｔタグ５２３から次に呼び出すべき機能プロバイダを特定する。Ｎｅｘｔタグ５２３には、プレビュープロバイダ４１２とＯＣＲプロバイダ４１３との二つの機能プロバイダを並列に呼び出すことが定義されているため、ワークフロー処理部４３０は、Ｓ６１２、Ｓ６１３でそれら二つの機能プロバイダの呼び出しを行う。
Ｓ６１１において、ワークフロー処理部４３０は、プレビュープロバイダ４１２にプレビュー指示を行う。
Ｓ６１２において、ワークフロー処理部４３０は、ＯＣＲプロバイダ４１３にＯＣＲ指示を行う。
Ｓ６１３において、ワークフロー処理部４３０からプレビュー指示を受け取ったプレビュープロバイダ４１２は、指示に従ってプレビューを実行する。
Ｓ６１４において、ワークフロー処理部４３０からＯＣＲ指示を受け取ったＯＣＲプロバイダ４１３は、指示に従ってＯＣＲを実行する。プレビュープロバイダ４１２の実行処理であるＳ６１３とＯＣＲプロバイダ４１３の実行処理であるＳ６１４とは並列に実行が行われる。また、Ｓ６１３とＳ６１４との処理中に、プレビュープロバイダ４１２とＯＣＲプロバイダ４１３とは、自身の処理状態が変化するたびに、ワークフロー処理部４３０に自身の処理状態を通知する（不図示）。ワークフロー処理部４３０は、Ｓ６０９と同様、受け取った処理状態を基に操作部２１９に表示する機能プロバイダの画面を決定し、最優先の画面が操作部２１９に表示されるよう、画面の切り替えを行う（不図示）。
【００２３】
図７（ｂ）にプレビュープロバイダ４１２の処理状態の一例を示す。
７１１は「画像表示」状態の定義であり、この状態のとき、プレビュープロバイダ４１２はスキャンプロバイダ４１１で読み取ったスキャン画像を画面に表示（画面の有無＝あり）する。画面には、スキャン画像を承認するためのボタン（ＯＫボタン）と、スキャン画像を破棄して処理を中止するためのボタン（キャンセルボタン）とが表示されている（ユーザ操作の有無＝あり）。「画像表示」状態から次の状態に遷移するためには、ユーザがＯＫボタンかキャンセルボタンのどちらかを選択する必要がある（自動遷移の有無＝なし）。
図７（ｃ）にＯＣＲプロバイダ４１３の処理状態の一例を示す。
７２１は「ＯＣＲ実行」状態の定義であり、この状態のとき、ＯＣＲプロバイダ４１３はＯＣＲ処理の進捗を示す画面を表示（画面の有無＝あり）する。画面には進捗状況を示すメッセージのみを表示する（ユーザ操作の有無＝なし）。ＯＣＲ処理が完了するとＯＣＲプロバイダ４１３は、「ＯＣＲ確認」状態に遷移する（自動遷移の有無＝あり）。
７２２は「ＯＣＲ確認」状態の定義であり、この状態のとき、ＯＣＲプロバイダ４１３はＯＣＲ処理の結果を示す画面を表示（画面の有無＝あり）する。画面には、ＯＣＲ結果を承認するためのボタン（ＯＫボタン）と、設定を変更したうえでＯＣＲを再実行するためのボタン（再実行ボタン）とが表示されている（ユーザ操作の有無＝あり）。「ＯＣＲ確認」状態から次の状態に遷移するためには、ユーザがＯＫボタンか再実行ボタンのどちらかを選択する必要がある（自動遷移の有無＝なし）。
【００２４】
Ｓ６１５において、プレビュープロバイダ４１２は、プレビューの実行結果をワークフロー処理部４３０に通知する。ワークフロー処理部４３０は、プレビュープロバイダ４１２の終了を受けて、Ｎｅｘｔタグ５３１から次に呼び出すべき機能プロバイダがＦＴＰ送信プロバイダ４１４であることを特定する。しかし、この時点では、ＦＴＰ送信プロバイダ４１４の呼び出し条件であるＷａｉｔタグ５５１の記載を満たしていないため、ＦＴＰ送信プロバイダ４１４はまだ呼び出さない。
Ｓ６１６において、ＯＣＲプロバイダ４１３は、ＯＣＲの実行結果をワークフロー処理部４３０に通知する。ワークフロー処理部４３０は、ＯＣＲプロバイダ４１３の終了を受けて、Ｎｅｘｔタグ５４１から次に呼び出すべき機能プロバイダがＦＴＰ送信プロバイダ４１４であることを特定する。
ここでＦＴＰ送信プロバイダ４１４の呼び出し条件であるＷａｉｔタグ５５１の記載を満たしたため、Ｓ６１７において、ワークフロー処理部４３０は、ＦＴＰ送信プロバイダ４１４に送信指示を行う。
Ｓ６１８において、ワークフロー処理部４３０から送信指示を受け取ったＦＴＰ送信プロバイダ４１４は、指示に従ってＦＴＰ送信を実行する。また、Ｓ６１８の処理中に、ＦＴＰ送信プロバイダ４１４は、自身の処理状態が変化するたびに、ワークフロー処理部４３０に自身の処理状態を通知する（不図示）。ワークフロー処理部４３０は、Ｓ６０９と同様、受け取った処理状態を基に操作部２１９に表示する機能プロバイダの画面を決定し、最優先の画面が操作部２１９に表示されるよう、画面の切り替えを行う（不図示）。
【００２５】
図７（ｄ）にＦＴＰ送信プロバイダ４１４の処理状態の一例を示す。
７３１は「送信設定受付」状態の定義であり、この状態のとき、ＦＴＰ送信プロバイダ４１４は送信設定を行う画面を表示（画面の有無＝あり）し、ユーザからＦＴＰ送信の各種設定を受け付ける（ユーザ操作の有無＝あり）。そして、ユーザが送信設定を確定すると、次の状態である「送信実行」状態へ遷移する（自動遷移の有無＝なし）。
７３２は「送信実行」状態の定義であり、この状態のとき、ＦＴＰ送信プロバイダ４１４は画面を表示せず（画面の有無＝なし）、バックグランドで送信処理を行う。画面を表示しないため、ユーザ操作の有無は「なし」であり、自動遷移の有無は「あり」である。
【００２６】
Ｓ６１９において、ＦＴＰ送信プロバイダ４１４は、ＦＴＰ送信の実行結果をワークフロー処理部４３０に通知する。ワークフロー処理部４３０は、ＦＰタグ５５０の子要素にＮｅｘｔタグが存在しないため、次に呼び出す機能プロバイダがないと判断し、ＦＴＰ送信プロバイダ４１４の終了を受けて、ワークフローの実行を終了する。
【００２７】
図８は、図６のシーケンス図におけるワークフロー処理部４３０の処理を説明するためのフローチャートである。
Ｓ８０１において、ワークフロー処理部４３０は、ユーザからワークフローの実行指示を受け取る。
Ｓ８０２において、ワークフロー処理部４３０は、Ｓ８０１で受け取った実行指示に対応するワークフロー定義ファイル４４０を読み込む。
Ｓ８０３において、ワークフロー処理部４３０は、ワークフロー定義ファイル４４０のＦＰタグで定義された機能プロバイダの取得指示を機能プロバイダ管理部４２０に対して行う。図５のワークフロー定義ファイル４４０の例では、ワークフロー処理部４３０は、ＦＰタグ５２０、５３０、５４０、５５０を基に、機能タイプが「スキャン」「ＯＣＲ」「プレビュー」「送信」の４つの機能プロバイダの取得指示を機能プロバイダ管理部４２０に対して行う。
Ｓ８０４において、ワークフロー処理部４３０は、機能プロバイダ管理部４２０から機能プロバイダの取得結果が通知されるのを待ち受ける。ワークフロー処理部４３０は、機能プロバイダ管理部４２０から機能プロバイダの取得結果を受け取ると次のＳ８０５へ処理を進める。
【００２８】
Ｓ８０５において、ワークフロー処理部４３０は、Ｗｏｒｋｆｌｏｗタグ５１０のｓｔａｒｔＦＰ属性の記載から、最初に呼び出す機能プロバイダを特定する。図５のワークフロー定義ファイル４４０の例では、「ｓｔａｒｔＦＰ＝"ｆｐ５２０"」の記載によって、ＦＰタグ５２０で定義されたスキャンプロバイダ４１１が最初に呼び出す機能プロバイダであると特定される。
Ｓ８０６において、ワークフロー処理部４３０は、Ｓ８０５又は後述するＳ８１２で特定した機能プロバイダの呼び出しを行う。その際、ワークフロー処理部４３０は、機能プロバイダを呼び出すための機能プロバイダインターフェースや呼び出す際の設定をワークフロー定義ファイル４４０のＡｃｔｉｏｎタグから取得する。このときＳ８０５又はＳ８１２で特定した機能プロバイダが複数の場合は、ワークフロー処理部４３０は、特定した複数の機能プロバイダをすべて呼び出す。
Ｓ８０７において、ワークフロー処理部４３０は、実行中の機能プロバイダからの通知を待ち受ける。ワークフロー処理部４３０は、機能プロバイダから通知を受け取ると次のＳ８０８へ処理を進める。
【００２９】
Ｓ８０８において、ワークフロー処理部４３０は、Ｓ８０７で受け取った通知の種類を判定する。ワークフロー処理部４３０は、通知された情報が、機能プロバイダが処理を完了したときに通知する機能プロバイダの実行結果であれば、Ｓ８０９へ処理を進める。他方、ワークフロー処理部４３０は、通知された情報が、機能プロバイダが処理状態を変更したときに通知する機能プロバイダの処理状態であれば、Ｓ８２０へ処理を進める。
Ｓ８０９において、ワークフロー処理部４３０は、Ｓ８０７で受け取った機能プロバイダの実行結果を別の機能プロバイダの入力として使用できるようＲＡＭ２１３又はＨＤＤ２１４に保存する。
Ｓ８１０において、ワークフロー処理部４３０は、Ｓ８０７で受け取った機能プロバイダの処理状態に基づいて画面の切り替え処理を行う。Ｓ８１０で行う処理とＳ８２０で行う処理とは同じであり、処理の詳細は後述する図９のフローチャートで説明する。
Ｓ８１１において、ワークフロー処理部４３０は、次に呼び出す機能プロバイダがあるか否かをワークフロー定義ファイル４４０のＮｅｘｔタグを用いて判定する。より具体的には、ワークフロー処理部４３０は、Ｓ８０７で実行結果を通知した機能プロバイダに対応するＦＰタグの子要素にＮｅｘｔタグが定義されていれば、次に呼び出す機能プロバイダがあると判定する。ワークフロー処理部４３０は、次に呼び出す機能プロバイダがあればＳ８１２へ処理を進め、それ以外の場合はＳ８１４へ処理を進める。
【００３０】
Ｓ８１２において、ワークフロー処理部４３０は、次に呼び出す機能プロバイダを特定する。より具体的には、ワークフロー処理部４３０は、Ｓ８１１において参照したＮｅｘｔタグのｒｅｆ属性が指し示すＦＰタグで定義された機能プロバイダを、次に呼び出す機能プロバイダとする。Ｎｅｘｔタグ５２３を例にすると「ｒｅｆ＝"ｆｐ５３０，ｆｐ５４０"」の記載により、ＦＰタグ５３０で定義されたプレビュープロバイダ４１２と、ＦＰタグ５４０で定義されたＯＣＲプロバイダ４１３が次に呼び出す機能プロバイダとであると特定される。
Ｓ８１３において、ワークフロー処理部４３０は、Ｓ８１２で特定した機能プロバイダの前工程の機能プロバイダが完了済みか否かを判定する。前工程の機能プロバイダは、ワークフロー定義ファイル４４０のＷａｉｔタグで定義されている。Ｗａｉｔタグ５５１を例にすると「ｒｅｆ＝"ｆｐ５３０，ｆｐ５４０"」の記載により、ＦＰタグ５３０で定義されたプレビュープロバイダ４１２と、ＦＰタグ５４０で定義されたＯＣＲプロバイダ４１３が前工程の機能プロバイダとであると特定される。つまりＦＰタグ５５０に対応するＦＴＰ送信プロバイダ４１４は、プレビュープロバイダ４１２とＯＣＲプロバイダ４１３との両方の処理が完了した場合に、前工程の機能プロバイダが完了済みと判定される。ワークフロー処理部４３０は、前工程の機能プロバイダが完了済みであればＳ８０６へ処理を進め、それ以外の場合はＳ８０７へ処理を進める。
Ｓ８１４において、ワークフロー処理部４３０は、Ｓ８０６で呼び出したすべての機能プロバイダの処理が完了したかどうかを判定する。ワークフロー処理部４３０は、すべての機能プロバイダの処理が完了していれば、図８に示すフローチャートの処理を終了する。一方、ワークフロー処理部４３０は、処理が完了していない機能プロバイダがあれば、Ｓ８０７へ処理を進める。
Ｓ８２０において、ワークフロー処理部４３０は、Ｓ８０７で受け取った機能プロバイダの処理状態に基づいて画面の切り替え処理を行う。ワークフロー処理部４３０は、画面の切り替え処理が完了したら、Ｓ８０７へ処理を進める。前述した通り、Ｓ８１０で行う処理とＳ８２０で行う処理とは同じであり、処理の詳細は図９のフローチャートで詳細に説明する。
【００３１】
図９は、図８のＳ８１０及びＳ８２０の処理を詳細に説明するためのフローチャートである。
Ｓ９０１において、ワークフロー処理部４３０は、処理状態管理テーブル４３１を更新する。より具体的には、Ｓ８０７で受け取った情報が機能プロバイダの処理状態であれば、ワークフロー処理部４３０は、受け取った処理状態を処理状態管理テーブル４３１に反映する。一方、Ｓ８０７で受け取った情報が機能プロバイダの実行結果であれば、ワークフロー処理部４３０は、通知元の機能プロバイダに関する処理情報を処理状態管理テーブル４３１から削除する。
図１０は、処理状態管理テーブル４３１の一例を示す図である。処理状態管理テーブル４３１は、実行中の機能プロバイダの処理状態を管理するためのテーブルで、機能プロバイダごとに「受付順」「処理状態」「画面の優先順位」の情報を持つ。「受付順」は、ワークフロー処理部４３０が処理状態を受け取った順番を記録している。「処理状態」は、機能プロバイダの現在の処理状態を記録している。「画面の優先順位」は、機能プロバイダの処理状態に含まれる画面状態から導き出される画面の優先順位を記録している。機能プロバイダが「画面の有無＝なし」の処理状態のときは「画面の優先順位」は値を持たない。機能プロバイダの画面状態と画面の優先度の関係は図１１で後述する。また図１０の各図の詳細は後述する。
【００３２】
Ｓ９０２において、ワークフロー処理部４３０は、Ｓ９０１の処理によって最優先の機能プロバイダが入れ替わったか否かを判定する。ここで、ワークフロー処理部４３０は、処理状態管理テーブル４３１に記録されている機能プロバイダの中で、画面の優先順位が最も高いものを最優先の機能プロバイダとする。画面の優先順位が同じものが複数存在した場合は、ワークフロー処理部４３０は、受付順が先の機能プロバイダを最優先の機能プロバイダとする。処理状態管理テーブル４３１から、画面の優先順位を持つ機能プロバイダが１つも存在しなくなった場合（つまり最優先となりうる機能プロバイダがなくなった場合）も、最優先となる機能プロバイダが入れ替わったものとする。ワークフロー処理部４３０は、最優先の機能プロバイダが入れ替わった場合はＳ９０３に処理を進め、それ以外の場合は図９に示すフローチャートの処理を終了する。
Ｓ９０３において、ワークフロー処理部４３０は、処理状態管理テーブル４３１に画面の優先順位を持つ機能プロバイダが存在するか否か（すなわち、画面を有する処理状態の機能プロバイダが存在するか否か）を判定する。ワークフロー処理部４３０は、処理状態管理テーブル４３１に画面の優先順位を持つ機能プロバイダが存在する場合はＳ９０４へ処理を進め、それ以外の場合はＳ９０５へ処理を進める。
Ｓ９０４において、ワークフロー処理部４３０は、処理状態管理テーブル４３１のなかで最優先の機能プロバイダを操作部２１９の前面に表示して、図９に示すフローチャートの処理を終了する。
一方、Ｓ９０５において、ワークフロー処理部４３０は、実行中補完画面４３２を操作部２１９の前面に表示して、図９に示すフローチャートの処理を終了する。
【００３３】
図１０は、処理状態管理テーブル４３１の例を示す図である。図１０（ａ）から図１０（ｇ）までは、ワークフロー定義ファイル４４０で定義したワークフローを実行した際に、処理状態管理テーブル４３１がどのように更新されていくかを例として示したものである。
図１０（ａ）は、図６のシーケンス図のＳ６０７でスキャンプロバイダ４１１を呼び出した後、スキャンプロバイダ４１１から処理状態を受け取って更新した処理状態管理テーブル４３１である。実行中の機能プロバイダはスキャンプロバイダ４１１のみであり、スキャンプロバイダ４１１の処理状態は「スキャン設定受付」である。その後、スキャンプロバイダ４１１は図７（ａ）で示したように、処理状態を「スキャン実行」「次原稿待機」「スキャン画像保存」と進めていくが、そのたびに、Ｓ９０１によって処理状態管理テーブル４３１は更新される。このとき、処理状態管理テーブル４３１に存在するのはスキャンプロバイダ４１１のみで、かつ、何れの処理状態も画面を有しているため、ワークフロー処理部４３０は、スキャンプロバイダ４１１の画面を操作部２１９に表示する。
図１０（ｂ）は、図６のシーケンス図のＳ６１１でプレビュープロバイダ４１２を呼び出した後、プレビュープロバイダ４１２から処理状態を受け取ってワークフロー処理部４３０が更新した処理状態管理テーブル４３１である。これまでにワークフロー処理部４３０が受け取った処理状態は図１０（ａ）で説明した通り、スキャンプロバイダ４１１の「スキャン設定受付」「スキャン実行」「次原稿待機」「スキャン画像保存」の４つである。そのため、プレビュープロバイダ４１２から受け取った「画面表示」は受付順が「５」となっている。このとき、処理状態管理テーブル４３１に存在するのはプレビュープロバイダ４１２のみで、かつ、画面を有している処理状態のため、ワークフロー処理部４３０は、プレビュープロバイダ４１２の画面を操作部２１９に表示する。
【００３４】
図１０（ｃ）は、図６のシーケンス図のＳ６１２でＯＣＲプロバイダ４１３を呼び出した後、ＯＣＲプロバイダ４１３から処理状態を受け取ってワークフロー処理部４３０が更新した処理状態管理テーブル４３１である。このとき、処理状態管理テーブル４３１に存在する機能プロバイダのなかで最も画面の優先度が高い機能プロバイダは、プレビュープロバイダ４１２となる。処理状態管理テーブル４３１を図１０（ｃ）の状態に更新したとき、最優先の機能プロバイダは図１０（ｂ）と変わらずプレビュープロバイダ４１２である。そのため、ワークフロー処理部４３０は、画面の切り替えを行わず、操作部２１９にはプレビュープロバイダ４１２が表示されたままとなる。
図１０（ｄ）は、図１０（ｃ）の状態から、ＯＣＲプロバイダ４１３の処理が進み、ＯＣＲプロバイダ４１３からの処理状態の通知をワークフロー処理部４３０が受け取って更新した処理状態管理テーブル４３１である。このとき、ＯＣＲプロバイダ４１３は「ＯＣＲ確認」状態であり、画面の優先順位は「１」である。但し、プレビュープロバイダ４１２も画面の優先度が「１」であり、かつ、受付順も先のため、最優先の機能プロバイダは図１０（ｃ）と変わらずプレビュープロバイダ４１２である。そのため、ワークフロー処理部４３０は、画面の切り替えを行わず、操作部２１９にはプレビュープロバイダ４１２が表示されたままとなる。
【００３５】
図１０（ｅ）は、図６のシーケンス図のＳ６１５でプレビュープロバイダ４１２から実行結果を受け取ってワークフロー処理部４３０が更新した処理状態管理テーブル４３１である。プレビュープロバイダ４１２の処理は完了したため、プレビュープロバイダ４１２に関する情報は処理状態管理テーブル４３１から削除されている。このとき、処理状態管理テーブル４３１に存在するのはＯＣＲプロバイダ４１３のみで、かつ、画面を有している処理状態のため、ＯＣＲプロバイダ４１３が最優先の機能プロバイダとなる。直前の状態である図１０（ｄ）から最優先の機能プロバイダが変更されたため、ワークフロー処理部４３０は、最優先の機能プロバイダであるＯＣＲプロバイダ４１３の画面を操作部２１９に表示する。
図１０（ｆ）は、図６のシーケンス図のＳ６１７でＦＴＰ送信プロバイダ４１４を呼び出した後、ＦＴＰ送信プロバイダ４１４から処理状態を受け取ってワークフロー処理部４３０が更新した処理状態管理テーブル４３１である。このとき、処理状態管理テーブル４３１に存在するのはＦＴＰ送信プロバイダ４１４のみで、かつ、画面を有している処理状態のため、ワークフロー処理部４３０は、ＦＴＰ送信プロバイダ４１４の画面を操作部２１９に表示する。
図１０（ｇ）は、図１０（ｆ）の状態から、ＦＴＰ送信プロバイダ４１４の処理が進み、ＦＴＰ送信プロバイダ４１４からの処理状態の通知をワークフロー処理部４３０が受け取って更新した処理状態管理テーブル４３１である。このとき、ＦＴＰ送信プロバイダ４１４は「送信実行」状態であり、画面の優先順位は値を持っていない。処理状態管理テーブル４３１に画面の優先順位を持つ機能プロバイダが存在しないため、ワークフロー処理部４３０は、実行中補完画面４３２を操作部２１９に表示する。
【００３６】
図１１は、機能プロバイダの画面状態と画面の優先度との関係を示した図である。図１１で示した関係は、ワークフロー処理部４３０が内部に保持している。図１１ではテーブルとして図示しているが、プログラムコードに直接記載されていてもよい。
画面の優先順位は、「画面の有無」「ユーザ操作の有無」「自動遷移の有無」の組み合わせによって決められている。
１１０１は、ユーザ操作が操作できる画面を有していて、かつ、ユーザが操作を行わなければ次の状態に遷移しない画面状態である。１１０１の画面状態の画面が他の画面の背面に隠されてしまうと、その画面をユーザが操作できないため、機能プロバイダの処理がそれ以上進まなくなってしまう。そのため、１１０１の画面状態の画面は最優先で画面に表示するよう、画面の優先順位は「１」となっている。
１１０２の画面状態は、ユーザが操作できる画面を持っているが、ユーザが何も操作をしなくても、機能プロバイダの処理が進めば次の状態に遷移するため、１１０１よりも優先度が低い（画面の優先度＝２）。１１０３の画面状態は、画面を持っているがユーザが操作するものが何もなく、機能プロバイダの処理が進めば次の状態に遷移するため、１１０２よりも優先度が低い（画面の優先度＝３）。
「画面の有無＝あり」かつ「ユーザ操作の有無＝なし」かつ「自動遷移の有無＝なし」は、画面状態としてあり得ない組み合わせのため、図１１には記載がない。また、「画面の有無＝なし」は画面の優先順位を持たないため、図１１には記載がない。
【００３７】
図１２は、機能プロバイダの処理の一例を説明するためのフローチャートである。
Ｓ１２０１において、機能プロバイダは、ワークフロー処理部４３０からの呼び出しを受け付ける。
Ｓ１２０２において、機能プロバイダは、Ｓ１２０１で受け付けた呼び出しに応じた処理を行う。機能プロバイダは、自身の処理状態が変わるか、処理が完了すれば次のステップへ処理を進める。
Ｓ１２０３において、機能プロバイダは、処理状態が変わったか否かを判定する。機能プロバイダは、自身の処理状態が変わった場合はＳ１２０４へ処理を進め、それ以外の場合はＳ１２０５へ処理を進める。
Ｓ１２０４において、機能プロバイダは、自身の処理状態をワークフロー処理部４３０に通知する。その後、機能プロバイダは、Ｓ１２０２へ戻り、処理を継続する。
Ｓ１２０５において、機能プロバイダは、処理が完了したか否かを判定する。機能プロバイダは、処理が完了した場合はＳ１２０６へ処理を進め、それ以外の場合はＳ１２０２へ戻り、処理を継続する。
Ｓ１２０６において、機能プロバイダは、実行結果をワークフロー処理部４３０に通知する。そして、機能プロバイダは、図１２に示すフローチャートの処理を終了する。
【００３８】
以上のように、本実施形態において説明した処理により、機能プロバイダの処理状態を基に、操作部２１９に適切な機能プロバイダの画面を表示することによって、効率的にワークフローを処理することができる。
【００３９】
＜実施形態２＞
実施形態１では、機能プロバイダの処理状態を基に、効率的にワークフローを処理できるよう、操作部２１９に表示する機能プロバイダを決定していた。一方で、ワークフローによっては、最優先に表示したい画面（機能プロバイダ）が存在する場合がある。
実施形態１で例として説明したワークフロー定義ファイル４４０では、プレビュープロバイダ４１２の処理が完了した後に、ＯＣＲプロバイダ４１３の画面が表示されていた。しかし、ＯＣＲプロバイダ４１３を優先的に表示したい場合もある。例えば、ＯＣＲの精度がよくないため、設定を変更してＯＣＲの再実行を行うことが想定される場合は、プレビュープロバイダ４１２の「画像表示」画面よりも、ＯＣＲプロバイダ４１３の「ＯＣＲ確認」画面（７２２）を優先的に表示したい。このような場合、ＯＣＲプロバイダ４１３を優先するために、ＯＣＲプロバイダ４１３の完了後にプレビュープロバイダ４１２を実行するようにワークフロー定義ファイルを定義することが考えられる。しかし、そのようにワークフロー定義ファイルを定義してしまうと、ＯＣＲ処理を実行している状態（７２１）はユーザにとっては無駄な待ち時間となってしまう。
そこで実施形態２として、ワークフロー定義ファイルに画面を優先的に表示したい機能プロバイダの処理状態を指定することにより、任意の画面を操作部２１９に表示しつつも、効率的にワークフローを処理するを説明する。
実施形態２は、実施形態１を変形したものであるため、実施形態１との差分を主に説明する。
【００４０】
図１３は、図５で説明したワークフロー定義ファイル４４０に、Ｓｔａｔｕｓタグ１３０１の記載を加えたワークフロー定義ファイルの一例を示す図である。Ｓｔａｔｕｓタグ１３０１以外の記述は、図５と同じであるため説明は省略する。
Ｓｔａｔｕｓタグ１３０１は、機能プロバイダの処理状態に関する情報を定義している。「ｔｙｐｅ＝"ＯＣＲ確認"  ｕｉ＿ｔｏｐ＝"ｔｒｕｅ"」という記述によって、「ＯＣＲ確認」状態のときに、画面を最優先で表示するということを定義している。
図１４は、図９を変形したフローチャートである。図９で説明したフローチャートにＳ１４０１及びＳ１４０２の処理を追加したものであるため、追加したステップのみ説明する。
Ｓ１４０１において、ワークフロー処理部４３０は、Ｓ８０７で受け取った機能プロバイダの処理状態が、ワークフロー定義ファイルに最前面として表示するように定義されている処理状態であるか否かを判定する。ワークフロー処理部４３０は、最前面として表示するように定義されている処理状態の場合はＳ１４０２へ処理を進め、それ以外の場合はＳ９０２へ処理を進める。
Ｓ１４０２において、ワークフロー処理部４３０は、Ｓ８０７で受け取った機能プロバイダの処理状態を、画面の優先順位が最優先となるように処理状態管理テーブル４３１を更新する。
【００４１】
図１５は、図１０（ｃ）の状態から、ＯＣＲプロバイダ４１３の処理が進み、ＯＣＲプロバイダ４１３からの処理状態の通知をワークフロー処理部４３０が受け取って更新した処理状態管理テーブル４３１を示す図である。Ｓｔａｔｕｓタグ１３０１に「ＯＣＲ確認」状態のときに、画面を最優先に表示することが定義されているため、Ｓ１４０１及びＳ１４０２の処理を行うことによって、「ＯＣＲ確認」状態の画面の優先順位は「０」となる。実施形態１では、最も優先順位が高い値は「１」であったが、「０」はそれを上回る優先順位という定義である。そのため、ワークフロー処理部４３０は、最も優先順位の高いＯＣＲプロバイダ４１３を操作部２１９に表示する。
【００４２】
以上のように、本実施形態において説明した処理により、任意の画面を操作部２１９に表示しつつも、効率的にワークフローを処理することができる。
【００４３】
＜その他の実施形態＞
本発明は、上述の実施形態の１以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給する。そして、そのシステム又は装置のコンピュータにおける１つ以上のプロセッサーがプログラムを読み出し実行する処理でも実現可能である。また、１以上の機能を実現する回路（例えば、ＡＳＩＣ）によっても実現可能である。
【００４４】
以上、本発明の実施形態の一例について詳述したが、本発明は係る特定の実施形態に限定されるものではない。
例えば、サーバ１０２やＭＦＰ１０１のハードウェア構成として、ＣＰＵは複数存在してもよく、複数のＣＰＵが各装置のＨＤＤ等に記憶されているプログラムに基づき処理を実行するようにしてもよい。また、サーバ１０２やＭＦＰ１０１のハードウェア構成として、ＣＰＵに替えてＧＰＵ（Ｇｒａｐｈｉｃｓ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）を用いることとしてもよい。
【００４５】
以上、上述した各実施形態によれば、複数の拡張ソフトを同時に実行する際に、画像形成装置の操作部に適切な拡張ソフトの画面を表示することによって、効率的にワークフローを処理することができる。
【符号の説明】
【００４６】
１０１  ＭＦＰ
１０２  サーバ
２１０  制御部
３１０  制御部
【図１】
2019040561.tif 000003
【図２】
2019040561.tif 000004
【図３】
2019040561.tif 000005
【図４】
2019040561.tif 000006
【図５】
2019040561.tif 000007
【図６】
2019040561.tif 000008
【図７】
2019040561.tif 000009
【図８】
2019040561.tif 000010
【図９】
2019040561.tif 000011
【図１０】
2019040561.tif 000012
【図１１】
2019040561.tif 000013
【図１２】
2019040561.tif 000014
【図１３】
2019040561.tif 000015
【図１４】
2019040561.tif 000016
【図１５】
2019040561.tif 000017