(57)【要約】【課題】ユーザがワークフローアプリに対しワークフローの実行を指示してから機能プロバイダをすぐに実行することを目的とする。【解決手段】管理手段は、複数の機能提供手段のそれぞれの実行可能条件を保持し、設定管理手段で管理されている本体設定と、情報処理装置の本体状態と、を監視し、本体設定、又は本体状態が変更された場合、実行可能条件から本体設定、又は本体状態が変更された場合も複数の機能提供手段のそれぞれが実行可能か否かの情報を保持し、情報が実行可能を示している機能提供手段のうち、ワークフロー処理手段からの検索条件を満たす機能提供手段を検索し、検索条件を満たす機能提供手段をワークフロー処理手段に返す。【選択図】図８Ｂ
2019087877.tif 000002
【特許請求の範囲】
【請求項１】
複数の機能提供手段を管理する管理手段と、
情報処理装置の本体設定を管理する設定管理手段と、
ワークフロー定義ファイルに基づき前記複数の機能提供手段のうち少なくとも２つ以上の機能提供手段を用いてワークフローに関する処理を実行するワークフロー処理手段と、
を有し、
前記管理手段は、
前記複数の機能提供手段のそれぞれの実行可能条件を保持し、
前記設定管理手段で管理されている前記本体設定と、前記情報処理装置の本体状態と、を監視し、
前記本体設定、又は前記本体状態が変更された場合、前記実行可能条件から前記本体設定、又は前記本体状態が変更された場合も前記複数の機能提供手段のそれぞれが実行可能か否かの情報を保持し、
前記情報が実行可能を示している機能提供手段のうち、前記ワークフロー処理手段からの検索条件を満たす機能提供手段を検索し、検索条件を満たす機能提供手段を前記ワークフロー処理手段に返す情報処理装置。
【請求項２】
複数の機能提供手段を管理する管理手段と、
情報処理装置の本体設定を管理する設定管理手段と、
ワークフロー定義ファイルに基づき前記複数の機能提供手段のうち少なくとも２つ以上の機能提供手段を用いてワークフローに関する処理を実行するワークフロー処理手段と、
を有し、
前記管理手段は、
前記設定管理手段で管理されている前記本体設定と、前記情報処理装置の本体状態と、を監視し、
前記本体設定、又は前記本体状態が変更された場合、前記複数の機能提供手段のそれぞれに対して前記本体設定、又は前記本体状態が変更された場合も実行可能か否かを問い合わせ、前記問い合わせの結果に基づき、前記本体設定、又は前記本体状態が変更された場合も前記複数の機能提供手段のそれぞれが実行可能か否かの情報を保持し、
前記情報が実行可能を示している機能提供手段のうち、前記ワークフロー処理手段からの検索条件を満たす機能提供手段を検索し、検索条件を満たす機能提供手段を前記ワークフロー処理手段に返す情報処理装置。
【請求項３】
前記複数の機能提供手段のうち固有のプロトコルに係る実行可能条件を有する機能提供手段は、前記固有のプロトコルに係る実行可能条件に関する状態を監視し、前記状態が変更された場合、前記状態が変更された場合も実行可能か否かを判定し、判定の結果を前記管理手段に通知し、
前記管理手段は、前記判定の結果に基づき、前記固有のプロトコルに係る実行可能条件を有する機能提供手段が実行可能な否かの情報を保持する請求項１又は２記載の情報処理装置。
【請求項４】
前記固有のプロトコルに係る実行可能条件を有する機能提供手段は、業務システム送信プロバイダである請求項３記載の情報処理装置。
【請求項５】
前記情報処理装置は、画像形成装置である請求項１乃至４何れか１項記載の情報処理装置。
【請求項６】
複数の機能提供手段を管理する管理手段と、
情報処理装置の本体設定を管理する設定管理手段と、
ワークフロー定義ファイルに基づき前記複数の機能提供手段のうち少なくとも２つ以上の機能提供手段を用いてワークフローに関する処理を実行するワークフロー処理手段と、
を有する情報処理装置が実行する情報処理方法であって、
前記管理手段が、
前記複数の機能提供手段のそれぞれの実行可能条件を保持し、
前記設定管理手段で管理されている前記本体設定と、前記情報処理装置の本体状態と、を監視し、
前記本体設定、又は前記本体状態が変更された場合、前記実行可能条件から前記本体設定、又は前記本体状態が変更された場合も前記複数の機能提供手段のそれぞれが実行可能か否かの情報を保持し、
前記情報が実行可能を示している機能提供手段のうち、前記ワークフロー処理手段からの検索条件を満たす機能提供手段を検索し、検索条件を満たす機能提供手段を前記ワークフロー処理手段に返す情報処理方法。
【請求項７】
複数の機能提供手段を管理する管理手段と、
情報処理装置の本体設定を管理する設定管理手段と、
ワークフロー定義ファイルに基づき前記複数の機能提供手段のうち少なくとも２つ以上の機能提供手段を用いてワークフローに関する処理を実行するワークフロー処理手段と、
を有する情報処理装置が実行する情報処理方法であって、
前記管理手段が、
前記設定管理手段で管理されている前記本体設定と、前記情報処理装置の本体状態と、を監視し、
前記本体設定、又は前記本体状態が変更された場合、前記複数の機能提供手段のそれぞれに対して前記本体設定、又は前記本体状態が変更された場合も実行可能か否かを問い合わせ、前記問い合わせの結果に基づき、前記本体設定、又は前記本体状態が変更された場合も前記複数の機能提供手段のそれぞれが実行可能か否かの情報を保持し、
前記情報が実行可能を示している機能提供手段のうち、前記ワークフロー処理手段からの検索条件を満たす機能提供手段を検索し、検索条件を満たす機能提供手段を前記ワークフロー処理手段に返す情報処理方法。
【請求項８】
コンピュータを、請求項１乃至５何れか１項記載の情報処理装置の各手段として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、情報処理方法及びプログラムに関する。
【背景技術】
【０００２】
近年、情報処理装置の一例として、アプリケーションソフトウェア（以下、アプリ）を機能拡張プログラムとして追加できる機能を備えた画像形成装置が普及している。
特に、ある特定の目的のために作られた拡張ソフトは、アプリケーションソフトウェアと呼ばれる。アプリは、画像形成装置が備えるスキャナ、プリンタといった機能を利用することで目的の処理を実現している。画像形成装置は、ユーザの目的に応じて複数のアプリをインストールできるように構成されている。また画像形成装置には画像形成装置が動作するために必要な、仕向け、本体、ユーザ等に応じた設定を保持しており、各アプリは設定に従って動作を行う。
また、アプリの中には、ワークフローアプリというアプリがある。ワークフローアプリは、機能の種類ごとに定められたインターフェースを持つ拡張ソフトである機能プロバイダという部品を、特定の処理としてフローとして組み合わせ、このフローを実行することで、様々な機能を組み合わせた処理の実現を可能としている。
ワークフローアプリが、ワークフロー定義に従って、画像形成装置の特定の機能を実現するための機能プロバイダを実行することによって、入力から出力までの一連の処理を実現できるワークフロー処理システムが知られている（特許文献１）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００５−１９６４１４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
特許文献１のように、ワークフローアプリと機能プロバイダとが疎に結合しており、ジョブ処理実行を機能プロバイダに移譲するような構成の場合、ワークフローアプリでは事前確認を行うことはできない。また特許文献１では、ユーザからのワークフロー実行指示を受けた際に、ワークフロー処理部が、ワークフローの実行に必要な機能プロバイダを機能プロバイダ検索部で検索し、検索された機能プロバイダを実行するような構成になっている。このような構成の場合、ワークフローの各処理が実行可能かを判断するためには、ワークフロー処理に必要な機能プロバイダを検索した後で、各機能プロバイダに対して実行可能か否か判断する必要がある。このため、ユーザがワークフローの実行指示を行ってから、そのワークフローについて実行可能か否かが判明するまでに時間がかかってしまうという問題が発生する。
【課題を解決するための手段】
【０００５】
本発明の情報処理装置は、複数の機能提供手段を管理する管理手段と、情報処理装置の本体設定を管理する設定管理手段と、ワークフロー定義ファイルに基づき前記複数の機能提供手段のうち少なくとも２つ以上の機能提供手段を用いてワークフローに関する処理を実行するワークフロー処理手段と、を有し、前記管理手段は、前記複数の機能提供手段のそれぞれの実行可能条件を保持し、前記設定管理手段で管理されている前記本体設定と、前記情報処理装置の本体状態と、を監視し、前記本体設定、又は前記本体状態が変更された場合、前記実行可能条件から前記本体設定、又は前記本体状態が変更された場合も前記複数の機能提供手段のそれぞれが実行可能か否かの情報を保持し、前記情報が実行可能を示している機能提供手段のうち、前記ワークフロー処理手段からの検索条件を満たす機能提供手段を検索し、検索条件を満たす機能提供手段を前記ワークフロー処理手段に返す。
【発明の効果】
【０００６】
本発明によれば、ユーザがワークフローアプリに対しワークフローの実行を指示してから機能プロバイダをすぐに実行することができる。
【図面の簡単な説明】
【０００７】
【図１】画像処理システムのシステム構成の一例を示す図である。
【図２】ＭＦＰのハードウェア構成の一例を示す図である。
【図３】サーバのハードウェア構成の一例を示す図である。
【図４】ＭＦＰのソフトウェア構成の一例を示す図である。
【図５Ａ】機能プロバイダ情報テーブルの一例を示す図である。
【図５Ｂ】仕向け設定テーブルの一例を示す図である。
【図５Ｃ】セキュリティポリシー設定テーブルの一例を示す図である。
【図５Ｄ】ユーザ設定テーブルの一例を示す図である。
【図５Ｅ】オプション設定テーブルの一例を示す図である。
【図６】機能プロバイダインターフェース定義の一例を示す図である。
【図７Ａ】ワークフロー定義ファイルのより具体的な記述の一例を示す図である。
【図７Ｂ】ワークフロー定義ファイルのより具体的な記述の一例を示す図である。
【図８Ａ】機能プロバイダ登録の情報処理の一例を示したシーケンス図である。
【図８Ｂ】変更監視の情報処理の一例を示したシーケンス図である。
【図８Ｃ】ワークフロー実行の情報処理の一例を示したシーケンス図である。
【図８Ｄ】変更監視の情報処理の一例を示したシーケンス図である。
【図８Ｅ】変更監視の情報処理の一例を示したシーケンス図である。
【図９】情報処理の一例を示すフローチャートである。
【図１０Ａ】ステータス確認処理の一例を示すフローチャートである。
【図１０Ｂ】ステータス確認処理の一例を示すフローチャートである。
【図１０Ｃ】ステータス通知受信処理の一例を示すフローチャートである。
【図１１Ａ】Ｓ８３０〜Ｓ８３３の処理の一例を示すフローチャートである。
【図１１Ｂ】Ｓ８３０〜Ｓ８３３の処理の一例を示すフローチャートである。
【図１１Ｃ】Ｓ８３０〜Ｓ８３３の処理の一例を示すフローチャートである。
【図１１Ｄ】Ｓ８３０〜Ｓ８３３の処理の一例を示すフローチャートである。
【図１２】Ｓ８５０からＳ８７１までの処理の一例を示すフローチャートである。
【図１３】機能プロバイダの検索処理の一例を示すフローチャートである。
【図１４】ステータス確認処理及び通知処理の一例を示すフローチャートである。
【発明を実施するための形態】
【０００８】
以下、本発明の実施形態について図面に基づいて説明する。
【０００９】
＜実施形態１＞
図１は、画像処理システムのシステム構成の一例を示す図である。画像処理システムは、ＬＡＮ１１０を介して接続されるＭＦＰ１０１と、ＷＡＮ１２０を介して接続されるサーバ１０２と、から構成される。ＬＡＮ１１０上の装置とＷＡＮ１２０上の装置とはお互いのネットワークを通して、相互に通信可能である。図１は典型的なネットワーク構成の例であり、各装置がＬＡＮ１１０又はＷＡＮ１２０のどちらにあってもよい。
ＭＦＰ１０１は、スキャナ、プリンタを有する画像形成装置である。加えて、ＭＦＰ１０１は、装置上で動作する拡張ソフトを追加、実行させるためのソフトウェアプラットホームを持つ。サーバ１０２は、ＭＦＰ１０１と連携して各種処理を行うサーバである。例えば、サーバ１０２は、ＭＦＰ１０１から、様々なプロトコル、例えばＳＭＢ（Ｓｅｒｖｅｒ  Ｍｅｓｓａｇｅ  Ｂｌｏｃｋの略称）で画像データを受信するファイルサーバである。また、サーバ１０２は、ＭＦＰ１０１から処理依頼を受けてＯＣＲ（光学文字認識）処理を実行したり、基幹システムの各種業務処理を実行したりするアプリケーションサーバである。画像処理システムに含まれるサーバは一台とは限らず、目的に応じて複数のサーバが存在してもよい。
【００１０】
図２は、ＭＦＰ１０１のハードウェア構成の一例を示す図である。ＣＰＵ２１１を含む制御部２１０は、ＭＦＰ１０１全体の動作を制御する。ＣＰＵ２１１が、ＲＯＭ２１２又はＨＤＤ２１４に記憶されたプログラムをＲＡＭ２１３に読み出して処理を実行することによって後述する図４のＭＦＰ１０１のソフトウェア構成が実現される。また、ＣＰＵ２１１が、ＲＯＭ２１２又はＨＤＤ２１４に記憶されたプログラムをＲＡＭ２１３に読み出して処理を実行することによって後述する図８Ａ〜図８Ｅのシーケンス図の処理が実現される。また、ＣＰＵ２１１が、ＲＯＭ２１２又はＨＤＤ２１４に記憶されたプログラムをＲＡＭ２１３に読み出して処理を実行することによって後述する図９、図１０Ａ〜図１０Ｃ、図１１Ａ〜図１１Ｄ、図１２、図１３、図１４のフローチャートの処理が実現される。ＲＡＭ２１３は、ＣＰＵ２１１の主メモリ、ワークエリア等の一時記憶領域として用いられる。ＨＤＤ２１４は、画像データやインストールされた拡張ソフトに関する各種プログラム等を記憶する。またＨＤＤ２１４は、ＭＦＰ１０１の本体設定や本体オプション設定等の本体設定情報を記憶する。操作部Ｉ／Ｆ２１５は、操作部２１９と制御部２１０とを接続する。操作部２１９には、タッチパネル機能を有する液晶表示部やキーボード等が備えられている。プリンタＩ／Ｆ２１６は、プリンタ２２０と制御部２１０とを接続する。プリンタ２２０で印刷すべき画像データはプリンタＩ／Ｆ２１６を介して制御部２１０からプリンタ２２０に転送され、プリンタ２２０において記録媒体上に印刷される。スキャナＩ／Ｆ２１７は、スキャナ２２１と制御部２１０とを接続する。スキャナ２２１は、原稿上の画像を読み取って画像データを生成し、スキャナＩ／Ｆ２１７を介して制御部２１０に入力する。またスキャナＩ／Ｆ２１７には、画像解析ボードが接続され、画像解析ボードにより入力された画像データに対してＯＣＲ処理が行われる。ネットワークＩ／Ｆ２１８は、制御部２１０（ＭＦＰ１０１）をＬＡＮ１１０に接続する。ネットワークＩ／Ｆ２１８は、ＬＡＮ１１０上又はＷＡＮ１２０上の他の装置との間で各種情報を送受信する。
【００１１】
図３は、サーバ１０２のハードウェア構成の一例を示す図である。ＣＰＵ３１１を含む制御部３１０は、サーバ１０２全体の動作を制御する。ＣＰＵ３１１は、ＲＯＭ３１２又はＨＤＤ３１４に記憶されたプログラムを読み出して処理を実行することによってサーバ１０２の機能を実現させる。ＲＡＭ３１３は、ＣＰＵ３１１の主メモリ、ワークエリア等の一時記憶領域として用いられる。ＨＤＤ３１４は、各種のプログラムやデータを記憶する。表示部Ｉ／Ｆ３１５は、表示部３１８と制御部３１０とを接続する。キーボードＩ／Ｆ３１６は、キーボード３１９と制御部３１０とを接続する。ＣＰＵ３１１は、キーボード３１９を介したユーザからの指示を認識し、認識した指示に応じて表示部３１８に表示する画面を遷移させる。ネットワークＩ／Ｆ３１７は、制御部３１０（サーバ１０２）をＷＡＮ１２０に接続する。ネットワークＩ／Ｆ３１７は、ＬＡＮ１１０上又はＷＡＮ１２０上の他の装置との間で各種情報を送受信する。
【００１２】
図４は、ＭＦＰ１０１のソフトウェア構成の一例を示す図である。拡張ソフト管理部４１０は、ＭＦＰ１０１上で拡張ソフトを動作させるためのソフトウェアプラットホームである。図４の例では、拡張ソフトとして４１１〜４１６の６つの機能プロバイダがＭＦＰ１０１にインストールされている。機能プロバイダは、拡張ソフトの一種であるが、アプリではない。アプリは単体で入力から出力までの一連の完結した処理を備えている。一方、単体の機能プロバイダは入力なら入力、出力なら出力といった特定の機能に特化したものであり、入力から出力までの一連の完結した処理を行うためには、複数の機能プロバイダを組み合わせる必要がある。例えば、「スキャンしてＯＣＲ処理の後、送信する」という機能をユーザに提供する場合、アプリであれば「スキャン」「ＯＣＲ処理」「送信」の３つの機能をひとつのアプリで実現する。一方、機能プロバイダの場合、「スキャン機能を実現する機能プロバイダ」、「ＯＣＲ機能を実現する機能プロバイダ」、「送信機能を実現する機能プロバイダ」の３つの機能プロバイダが必要になる。更に、それら３つの機能プロバイダを一連の処理として実行するためには、後述するワークフロー処理部４３０が必要になる。また、アプリは、ＭＦＰ１０１が元々備えている機能（例えばコピー機能やファクス送信機能）を呼び出すためのメニュー画面に、それらの機能と横並びで表示されるようにアプリ自身を登録する。アプリは、メニュー画面からユーザの指示によって呼び出される。一方、機能プロバイダはメニュー画面ではなく、後述する機能プロバイダ管理部４２０に、機能プロバイダ自身を登録する。機能プロバイダは、機能プロバイダ管理部４２０経由でワークフロー処理部４３０の指示によって呼び出される。更に、機能プロバイダは、後述する機能プロバイダ管理部４２０が規定するルール（以下、機能プロバイダインターフェース）を満たすように実装されている。機能プロバイダインターフェースは、ソフトウェア間のやり取りを行う際のルールを決めたソフトウェアインターフェースである。機能プロバイダインターフェースは、機能プロバイダが提供する機能の種類（以下、機能タイプ）ごとに定められている。機能プロバイダは、機能プロバイダインターフェースに基づいてワークフロー処理部４３０から呼び出される。１つの機能プロバイダは目的に応じて、複数種類のインターフェースを持つ場合がある。例えば、スキャン機能を実現する機能プロバイダであれば、「スキャン設定画面の表示」の目的のためのインターフェース、「スキャンジョブの実行」の目的のためのインターフェースといったように、目的別に複数種類のインターフェースを用意することができる。また、複数種類の機能プロバイダをＭＦＰ１０１にインストールすることができる。異なる機能タイプの機能プロバイダを複数種類インストールしてもよいし、同じ機能タイプの機能プロバイダを複数種類インストールしてもよい。同じ機能タイプの機能プロバイダは同じソフトウェアインターフェースを持つため、拡張ソフトは、同じ機能タイプの機能プロバイダであれば、同じようにソフトウェア間のやり取りを行うことができる。標準スキャンプロバイダ４１１は、スキャン機能を提供する機能プロバイダ（機能タイプ＝スキャン）である。機能タイプが「スキャン」の機能プロバイダを総称してスキャンプロバイダと呼ぶ。スキャンプロバイダは、機能タイプが「スキャン」の機能プロバイダのために定義された機能プロバイダインターフェース（スキャンプロバイダインターフェース）を実現する。標準スキャンプロバイダ４１１は、一般的なユーザ向けのスキャン設定画面を持つ。組込ＯＣＲプロバイダ４１２とＷｅｂＯＣＲプロバイダ４１３とは、共にＯＣＲ機能を提供する機能プロバイダ（機能タイプ＝ＯＣＲ）である。機能タイプが「ＯＣＲ」の機能プロバイダを総称してＯＣＲプロバイダと呼ぶ。ＯＣＲプロバイダは、機能タイプが「ＯＣＲ」の機能プロバイダのために定義された機能プロバイダインターフェース（ＯＣＲプロバイダインターフェース）を実現する。組込ＯＣＲプロバイダ４１２は、ＭＦＰ１０１上で文字認識処理を行うことでＯＣＲ機能を提供する。一方、ＷｅｂＯＣＲプロバイダ４１３は、外部のＷｅｂサーバ（例えば、サーバ１０２）が提供する文字認識処理を呼び出すことでＯＣＲ機能を提供する。ＳＭＢ送信プロバイダ４１４は、ＳＭＢ送信機能を提供する機能プロバイダ（機能タイプ＝ファイル送信）である。送信プロバイダは、機能タイプが「ファイル送信」の機能プロバイダのために定義された機能プロバイダインターフェース（ファイル送信プロバイダインターフェース）を実現する。プルプリントプロバイダ４１５は、プルプリント機能を提供する機能プロバイダ（機能タイプ＝印刷）である。印刷プロバイダは、機能タイプが「印刷」の機能プロバイダのために定義された機能プロバイダインターフェース（印刷プロバイダインターフェース）を実現する。業務システム送信プロバイダ４１６は実施形態１及び２には必ずしも必要ではないため、詳細は実施形態３で説明する。各機能プロバイダは、ＭＦＰ１０１に同じ機能タイプを持つ機能プロバイダが他に存在しなくても、自身の機能タイプ用に定義された機能プロバイダインターフェースを実現する。以上で説明した４１１〜４１６の６つの機能プロバイダは一例であり、ＭＦＰ１０１には、拡張ソフトとして様々な機能プロバイダを追加・削除することができる。４１１〜４１６の６つの機能プロバイダは機能提供手段の例である。
【００１３】
機能プロバイダ管理部４２０は、ＭＦＰ１０１にインストールされている機能プロバイダを管理するソフトウェアである。機能プロバイダ管理部４２０は、機能プロバイダ登録部４２１、機能プロバイダ検索部４２２、機能プロバイダ情報テーブル４２３、機能プロバイダインターフェース定義４２４を持つ。また、機能プロバイダ管理部４２０は、本体監視部４２５、機能プロバイダ状態管理部４２６を持つ。機能プロバイダ登録部４２１は、各機能プロバイダからの依頼を受けて、機能プロバイダ情報テーブル４２３に、各機能プロバイダの機能タイプや設定可能な値等の情報を登録する。機能プロバイダ検索部４２２は、後述するワークフロー処理部４３０から機能プロバイダの検索条件を受け取り、機能プロバイダ情報テーブル４２３の情報を基に、使用可能な機能プロバイダの中から、条件に一致する機能プロバイダを特定する。機能プロバイダ検索部４２２は、検索結果として機能プロバイダをひとつに特定するため、検索条件に一致する機能プロバイダが複数存在した場合は、最も優先順位の高い機能プロバイダを検索結果とする。機能プロバイダインターフェース定義４２４は、機能プロバイダインターフェースを定義している。本体監視部４２５は、後述の本体設定管理部４５０で管理されているＭＦＰ１０１の本体設定である仕向け設定、セキュリティポリシー設定、ユーザ設定、オプション設定を監視し、設定変更を検知した場合、機能プロバイダ状態管理部４２６に通知する。本体監視部４２５は、ＭＦＰ１０１の本体状態であるＭＦＰ１０１とＬＡＮ１１０を介したサーバ１０２とのネットワーク接続状態や、プリンタ２２０やスキャナ２２１の正常や故障等を表すコンポーネント状態を監視する。そして本体監視部４２５は、状態変更を検知した場合、機能プロバイダ状態管理部４２６に通知する。機能プロバイダ状態管理部４２６は、本体監視部４２５からの設定変更や状態変更通知を受け、機能プロバイダの実行可能条件を判断し、機能プロバイダ情報テーブル４２３の実行可能か否かを示すステータスを更新する。
【００１４】
ワークフロー処理部４３０は、後述するワークフロー定義ファイル４４０に従って複数の機能プロバイダを組み合わせて一連の処理として実行する。本明細書では、ワークフローとは、複数の機能プロバイダを組み合わせた一連の処理を差すものとする。ワークフロー定義ファイル４４０は、ワークフロー処理部４３０が呼び出す機能プロバイダの検索条件や、呼び出し順序、呼び出した機能プロバイダに適用する設定値等、機能プロバイダの呼び出しに関する情報を定義する。図４ではワークフロー定義ファイルを例として１つ定義しているが、１つに限定するものではなく、ＭＦＰ１０１上に複数のワークフロー定義ファイルが存在してもよい。本体設定管理部４５０は、ＭＦＰ１０１の本体設定を管理するソフトウェアであり、仕向け設定テーブル４５１、セキュリティポリシー設定テーブル４５２、ユーザ設定テーブル４５３、オプション設定テーブル４５４を持つ。ここで本体設定とは、ＭＦＰ１０１のコピー、プリント、スキャンといった各種機能を動作させるために必要な設定である。また本体設定は、仕向け設定テーブル４５１、セキュリティポリシー設定テーブル４５２、ユーザ設定テーブル４５３、オプション設定テーブル４５４の本体設定テーブルで管理される情報である。本体設定管理部４５０は、操作部Ｉ／Ｆ２１５を通じて操作部２１９に、ユーザが本体設定を確認、変更するための画面を表示し、ユーザが操作部２１９で受け付けた本体設定の内容で、本体設定管理部４５０の管理する各テーブルの内容を変更する機能を持つ。図４では本体設定管理部４５０には例として４つ定義しているが、４つに限定するものではなく、ＭＦＰ１０１上に設定テーブルが４つ以下、又は、４つ以上の設定テーブルが存在していてもよい。
【００１５】
図５Ａは、機能プロバイダ情報テーブル４２３の一例を示す図である。機能プロバイダ情報テーブル４２３は、機能プロバイダを一意に特定する機能プロバイダＩＤ、機能プロバイダの名称、機能タイプ、機能プロバイダインターフェース等、機能プロバイダに関する情報を保持する。また機能プロバイダ情報テーブル４２３は、機能プロバイダの使用可否を表すステータスや、機能プロバイダが実行可能となる条件を表す実行可能条件を保持する。ここでステータスの値として、「Ａｖａｉｌａｂｌｅ」は「使用可」、「ＮｏｔＡｖａｉｌａｂｌｅ」は「使用不可」を表す。図５Ｂは、仕向け設定テーブル４５１の一例を示す図である。仕向け設定テーブル４５１は、仕向け設定を一意に特定する仕向け設定ＩＤ、仕向け設定の名称、仕向け設定等、ＭＦＰ１０１の仕向けに関する本体設定情報を保持する。図５Ｃは、セキュリティポリシー設定テーブル４５２の一例を示す図である。セキュリティポリシー設定テーブル４５２は、セキュリティポリシー設定を一意に特定するポリシー設定ＩＤ、ポリシー設定の名称を示すポリシー設定名、ポリシー設定等、ＭＦＰ１０１のセキュリティポリシーに関する本体設定情報を保持する。図５Ｄは、ユーザ設定テーブル４５３の一例を示す図である。ユーザ設定テーブル４５３は、ユーザ設定を一意に示すユーザ設定ＩＤ、ユーザ設定名、ユーザ設定等、ＭＦＰ１０１のユーザ毎の本体設定を保持する。図５Ｅは、オプション設定テーブル４５４の一例を示す図である。オプション設定テーブル４５４は、オプション設定を一意に示すオプション設定ＩＤ、オプション設定名、オプション設定等、ＭＦＰ１０１のオプション構成に関する本体設定を保持する。
【００１６】
図６（Ａ）は、機能プロバイダインターフェース定義の一例を示す図である。実施形態１では機能プロバイダインターフェースはプログラムのソースコード形式で表現されているが、これに限定されるものではなく、他の形式であってもよい。定義６０１は、スキャンプロバイダインターフェースの定義である。定義６０１では、「ｓｈｏｗＳｅｔｔｉｎｇＵＩ」「ｄｏＳｃａｎ」「ｄｏＳｃａｎＷｉｔｈＳｅｔｔｉｎｇＵＩ」という３つのインターフェースが定義されている。スキャンプロバイダは、定義６０１で定義されている３つのインターフェースを必ず備えている。定義６０２はＯＣＲプロバイダインターフェースの定義である。定義６０３はファイル送信プロバイダインターフェースの定義である。定義６０４はプリントプロバイダインターフェースの定義である。このように、機能プロバイダインターフェース定義では、各機能プロバイダが備えるインターフェース（名称、入力、出力）を定義している。
【００１７】
図７Ａは、ワークフロー定義ファイルのより具体的な記述の一例を示す図である。実施形態１ではワークフロー定義ファイルはＸＭＬ形式のファイルとして表現されているが、ＸＭＬ形式に限定されるものではなく、他の形式のファイルであってもよい。Ｗｏｒｋｆｌｏｗタグ７００は、以下の記述がワークフローの定義であることを示している。ＦＰタグ７０１は、Ｗｏｒｋｆｌｏｗタグ７００の子要素で、ワークフローで実行する機能プロバイダに関する情報を定義している。ＦＰタグ７０１のｎｏ属性は、ワークフローにおける機能プロバイダの実行順を定義しており、「ｎｏ＝"１"」は最初に実行する機能プロバイダであることを示している。ＦＰタグ７０１のｉｄ属性は、実行する機能プロバイダの機能プロバイダＩＤを定義しており、「ｉｄ＝"ＮＯＲＭＡＬ＿ＳＣＡＮ"」は標準スキャンプロバイダであることを示している。Ｃｏｎｄｉｔｉｏｎタグ７０２は、ＦＰタグ７０１の子要素で、スキャンプロバイダの検索条件を定義している。Ａｃｔｉｏｎタグ７０３は、ＦＰタグ７０１の子要素であり、機能プロバイダの呼び出しについての情報を定義している。Ａｃｔｉｏｎタグのｎｏ属性とｍｅｔｈｏｄ属性とは、ＦＰタグで定義された機能プロバイダの中での実行順と呼び出すインターフェースを定義している。Ａｃｔｉｏｎタグ７０３は、標準スキャンプロバイダの実行において「ｄｏＳｃａｎＷｉｔｈｓｈｏｗＳｅｔｔｉｎｇＵＩ」を１番目に呼び出す旨を定義している。Ｐａｒａｍｅｔｅｒタグ７０４はＡｃｔｉｏｎタグ７０３の子要素であり、Ａｃｔｉｏｎタグ７０３で定義されているインターフェース（ｄｏＳｃａｎＷｉｔｈｓｈｏｗＳｅｔｔｉｎｇＵＩ）を呼び出す際に渡す設定値を定めている。Ｏｕｔｐｕｔタグ７０５は、「ｄｏＳｃａｎ」の出力に関する定義であり、ｔｙｐｅ属性で出力形式が「Ｄｏｃｕｍｅｎｔ」である旨とｉｄ属性で出力データを一意に特定するＩＤが「ｆｏｏ」である旨とを定義している。ＦＰタグ７０６は、ｔｙｐｅ属性で、実行する機能プロバイダの機能タイプを定義しており、「ｔｙｐｅ＝"ＯＣＲ"」はＯＣＲプロバイダであることを示している。ＦＰタグは機能プロバイダを、ＦＰタグ７０６のようにｔｙｐｅ属性を使って機能タイプで指定することもできるし、Ａｃｔｉｏｎタグ７０３、７１１、７１５のようにｉｄ属性を使って一意に指定することもできる。Ａｃｔｉｏｎタグ７０７は、ＦＰタグ７０６の子要素であり、ＯＣＲプロバイダの実行において「ｄｏＯＣＲ」を１番目に呼び出す旨を定義している。Ｉｎｐｕｔタグ７０８は、「ｄｏＯＣＲ」の入力に関する定義で、「Ｄｏｃｕｍｅｎｔ」形式のデータをＩＤが「ｆｏｏ」のデータから受け取ることを示している。Ｏｕｔｐｕｔタグ７０９は、「ｄｏＯＣＲ」の出力が、ｔｙｐｅ属性で出力形式が「Ｄｏｃｕｍｅｎｔ」、ｆｏｒｍａｔ属性で出力フォーマットが「ＴＥＸＴ」である旨とｉｄ属性で出力データを一意に特定するＩＤが「ｂａｒ」である旨とを定義している。ＦＰタグ７１０は、ｎｏ属性とｉｄ属性とで、３番目に実行する機能プロバイダがＳＭＢ送信プロバイダであることを定義している。Ａｃｔｉｏｎタグ７１１は、ＳＭＢ送信プロバイダの実行において「ｄｏＳｅｎｄ」を１番目に呼び出す旨を定義している。Ｉｎｐｕｔタグ７１２及びＩｎｐｕｔタグ７１３は、それぞれ「ｄｏＳｅｎｄ」の入力に関する定義で、「Ｄｏｃｕｍｅｎｔ」形式のデータをＩＤが「ｆｏｏ」「ｂａｒ」のデータから受け取ることを示している。ＦＰタグ７１４は、ｎｏ属性とｉｄ属性とで、４番目に実行する機能プロバイダがプルプリントプロバイダであることを定義している。Ａｃｔｉｏｎタグ７１５は、プルプリントプロバイダの実行において「ｄｏＰｒｉｎｔ」を１番目に呼び出す旨を定義している。Ｉｎｐｕｔタグ７１６は、プルプリントプロバイダの「ｄｏＰｒｉｎｔ」呼び出しの入力に関する定義で、「Ｄｏｃｕｍｅｎｔ」のＩＤが「ｆｏｏ」のデータを「ｄｏＳｃａｎ」の出力から受け取ることを示している。
【００１８】
図８Ａは、機能プロバイダ登録の情報処理の一例を示したシーケンス図である。Ｓ８０１で、標準スキャンプロバイダ４１１は、自身の起動時に機能プロバイダ管理部４２０に対して、自身を機能プロバイダとして登録するよう指示する。指示には登録に必要な情報、例えば機能プロバイダＩＤ、機能プロバイダ名、機能プロバイダの実行可能条件に関する情報が含まれる。Ｓ８０２で、登録指示を受け取った機能プロバイダ管理部４２０は、指示に含まれる機能プロバイダの登録情報を機能プロバイダ情報テーブル４２３に格納する。Ｓ８０３、Ｓ８０５、Ｓ８０７、Ｓ８０９、Ｓ８１１で、機能プロバイダ４１２〜４１６も標準スキャンプロバイダ４１１と同様に、自身の起動時に機能プロバイダ管理部４２０に対して、自身を機能プロバイダとして登録するよう指示する。Ｓ８０４、Ｓ８０６、Ｓ８０８、Ｓ８１０、Ｓ８１２で、登録指示を受け取った機能プロバイダ管理部４２０は、指示に含まれる機能プロバイダの登録情報を機能プロバイダ情報テーブル４２３に格納する。
【００１９】
図８Ｂは、本体設定変更、本体設定及び本体状態の変更監視の情報処理の一例を示したシーケンス図である。図８Ｂでは、例として、本体設定のうち仕向け設定テーブル４５１に対するユーザの設定処理と、機能プロバイダ管理部４２０の本体設定監視処理と、を説明する。Ｓ８２０で、本体設定管理部４５０は、操作部２１９に本体設定である仕向け設定を変更する画面を表示し、ユーザからの変更指示を受け付ける。Ｓ８２１で、本体設定管理部４５０は、ユーザから変更指示された本体設定を、仕向け設定テーブル４５１に格納する。Ｓ８３０で、機能プロバイダ管理部４２０は、本体設定管理部４５０に対して本体設定のうち仕向け設定の変更点の検索を指示する。Ｓ８３１で、本体設定管理部４５０は、指示を受けた仕向け設定の変更点を仕向け設定テーブル４５１から検索する。Ｓ８３２で、本体設定管理部４５０は、検索結果を機能プロバイダ管理部４２０に通知する。Ｓ８３３で、機能プロバイダ管理部４２０は、Ｓ８３２で通知を受けた仕向け設定の変更点の内容と機能プロバイダ情報テーブル４２３の実行可能条件の内容とから、仕向け設定が実行条件に関連する機能プロバイダが実行可能か否かを判定する。そして、本体設定管理部４５０は、判定の結果、実行可又は実行不可の情報を機能プロバイダ情報テーブル４２３に格納する。同様に、本体設定管理部４５０は、セキュリティポリシー設定、ユーザ設定、オプション設定についても、本体設定する。そして機能プロバイダ管理部４２０は、本体設定を監視し、機能プロバイダの実行可否を判定し、機能プロバイダ情報テーブル４２３のステータスを更新する。本体設定だけでなく本体状態についても同様に、機能プロバイダ管理部４２０は、本体の状態であるネットワークＩ／Ｆ２１８に対してネットワーク接続状態や、プリンタ２２０、スキャナ２２１に対して稼動状態の取得を指示する。また、本体設定管理部４５０は、本体の状態であるネットワークＩ／Ｆ２１８からネットワーク接続状態や、プリンタ２２０、スキャナ２２１から稼動状態を取得する。機能プロバイダ管理部４２０は、取得した本体状態の内容と、機能プロバイダ情報テーブル４２３の実行可能条件の内容とから、本体状態が実行条件に関連する機能プロバイダが、実行可能か否かを判定する。そして、機能プロバイダ管理部４２０は、判定の結果、実行可又は実行不可の情報で機能プロバイダ情報テーブル４２３のステータスを更新する。
【００２０】
図８Ｃは、ワークフロー実行の情報処理の一例を示したシーケンス図である。Ｓ８５０で、ワークフロー処理部４３０は、ユーザからワークフローの実行指示を受け取る。すると、Ｓ８５１で、ワークフロー処理部４３０は、実行指示に対応するワークフロー定義ファイル４４０を読み込む。ここでは、ワークフロー定義ファイル４４０に「標準スキャンプロバイダ」、「機能タイプがＯＣＲの機能プロバイダ」、「ＳＭＢ送信プロバイダ」、「プルプリントプロバイダ」を順に実行するように定義されているものとする。ワークフロー定義ファイルでは実行する機能プロバイダを機能タイプで指定することもできるし、機能プロバイダを一意に特定する形で指定することもできる。Ｓ８５２で、ワークフロー処理部４３０は、機能プロバイダ管理部４２０に対して「標準スキャンプロバイダ」を検索するよう指示する。指示にはワークフロー定義ファイル４４０に定義された検索条件が含まれる。Ｓ８５３で、検索指示を受け取った機能プロバイダ管理部４２０は、機能プロバイダ情報テーブル４２３のうちステータスが実行可の機能プロバイダの中から、検索条件に一致する標準スキャンプロバイダを抽出する。Ｓ８５４で、機能プロバイダ管理部４２０は、標準スキャンプロバイダの検索結果を、ワークフロー処理部４３０に通知する。Ｓ８５５で、検索結果を受け取ったワークフロー処理部４３０は、検索結果のスキャンプロバイダに対して、スキャン指示を行う。Ｓ８５６で、ワークフロー処理部４３０からスキャン指示を受け取った標準スキャンプロバイダ４１１は、指示に従ってスキャンを実行する。Ｓ８５７で、ワークフロー処理部４３０は、機能プロバイダ管理部４２０に対して「機能タイプがＯＣＲの機能プロバイダ」即ち、ＯＣＲプロバイダを検索するよう指示する。指示にはワークフロー定義ファイル４４０に定義された検索条件が含まれる。Ｓ８５８で、検索指示を受け取った機能プロバイダ管理部４２０は、機能プロバイダ情報テーブル４２３のうちステータスが実行可の機能プロバイダの中から、検索条件に一致するＯＣＲプロバイダを抽出する。検索条件に一致するＯＣＲプロバイダが複数存在した場合は、機能プロバイダ管理部４２０は、最も優先順位の高いＯＣＲプロバイダを検索結果とする。Ｓ８５９で、機能プロバイダ管理部４２０は、ＯＣＲプロバイダの検索結果を、ワークフロー処理部４３０に通知する。Ｓ８６０で、検索結果を受け取ったワークフロー処理部４３０は、検索結果のＯＣＲプロバイダに対して、ＯＣＲ指示を行う。ここでワークフロー処理部４３０は、検索結果が組込ＯＣＲプロバイダ４１２であるか、ＷｅｂＯＣＲプロバイダ４１３であるかを識別しない。どちらであってもＯＣＲプロバイダであることに変わりはなく、ワークフロー処理部４３０は、個別の機能プロバイダを識別することなくＯＣＲプロバイダインターフェースに従ってＯＣＲ指示を出すことができる。Ｓ８６１で、ワークフロー処理部４３０からＯＣＲ指示を受け取ったＯＣＲプロバイダ（図８Ｃでは組込ＯＣＲプロバイダ４１２）は、指示に従ってＯＣＲ処理を実行する。Ｓ８６２で、ワークフロー処理部４３０は、機能プロバイダ管理部４２０に対してＳＭＢ送信プロバイダ４１４を検索するよう指示する。Ｓ８６３で、機能プロバイダ管理部４２０は、機能プロバイダ情報テーブル４２３のうちステータスが実行可の機能プロバイダの中から、検索指示に従ってＳＭＢ送信プロバイダ４１４を検索する。Ｓ８６４で、機能プロバイダ管理部４２０は、ＳＭＢ送信プロバイダ４１４を検索結果として、ワークフロー処理部４３０に通知する。Ｓ８６５で、検索結果を受け取ったワークフロー処理部４３０は、検索結果のＳＭＢ送信プロバイダ４１４に対して、送信指示を行う。Ｓ８６６で、ワークフロー処理部４３０から送信指示を受け取ったＳＭＢ送信プロバイダ４１４は、指示に従って送信処理を実行する。Ｓ８６７で、ワークフロー処理部４３０は、機能プロバイダ管理部４２０に対してプルプリントプロバイダ４１５を検索するよう指示する。Ｓ８６８で、機能プロバイダ管理部４２０は、機能プロバイダ情報テーブル４２３のうちステータスが実行可の機能プロバイダの中から、検索指示に従ってプルプリントプロバイダ４１５を検索する。Ｓ８６９で、機能プロバイダ管理部４２０は、プルプリントプロバイダ４１５を検索結果として、ワークフロー処理部４３０に通知する。Ｓ８７０で、検索結果を受け取ったワークフロー処理部４３０は、検索結果のプルプリントプロバイダ４１５に対して、印刷指示を行う。Ｓ８７１で、ワークフロー処理部４３０から送信指示を受け取ったプルプリントプロバイダ４１５は、指示に従って印刷処理を実行する。
【００２１】
図９（Ａ）は、図８Ａのシーケンス図におけるＳ８０１、Ｓ８０３、Ｓ８０５、Ｓ８０７、Ｓ８０９、Ｓ８１１の情報処理の一例を示すフローチャートである。Ｓ９０１で、標準スキャンプロバイダ４１１は、拡張ソフト管理部４１０からの指示を受け、自らを起動する。Ｓ９０２で、標準スキャンプロバイダ４１１は、自らの機能プロバイダ情報である、機能プロバイダＩＤ、機能プロバイダ名、実行可能条件を機能プロバイダ管理部４２０に通知する。Ｓ９０１〜Ｓ９０２では、組込ＯＣＲプロバイダ４１２、ＷｅｂＯＣＲプロバイダ４１３、ＳＭＢ送信プロバイダ４１４、プルプリントプロバイダ４１５、業務システム送信プロバイダ４１６は、標準スキャンプロバイダ４１１と同様の処理を行う。
図９（Ｂ）は、図８Ａのシーケンス図におけるＳ８０２、Ｓ８０４、Ｓ８０６、Ｓ８０８、Ｓ８１０、Ｓ８１２の情報処理の一例を示すフローチャートである。Ｓ９１１で、機能プロバイダ管理部４２０の機能プロバイダ登録部４２１は、各機能プロバイダからの機能プロバイダ情報を受信する。Ｓ９１２で、機能プロバイダ登録部４２１は、各機能プロバイダから受信した機能プロバイダ情報を機能プロバイダ情報テーブル４２３に格納する。Ｓ９１３で、機能プロバイダ状態管理部４２６は、機能プロバイダのステータス確認項目として、全項目を設定する。ここで機能プロバイダのステータス確認項目とは、機能プロバイダ管理部４２０が確認する本体設定や本体状態の項目である。機能プロバイダ管理部４２０の本体監視部４２５が、ステータス確認項目に設定された本体設定及び本体状態の確認を行うものである。ここで、Ｓ９１３で、機能プロバイダ状態管理部４２６は、機能プロバイダのステータス確認項目として、「全項目」を設定しているが、これは本体設定及び本体状態の全項目を確認することを意味する。Ｓ９１４で、機能プロバイダ登録部４２１は、機能プロバイダ状態管理部４２６に対して、ステータス確認処理を依頼する。Ｓ９１４の処理の詳細は、図１０Ａで説明する。
【００２２】
図１０Ａは、機能プロバイダ状態管理部４２６の機能プロバイダに対するステータス確認処理の一例を示すフローチャートである。
Ｓ１００１で、機能プロバイダ状態管理部４２６は、機能プロバイダ管理部４２０から、実行可能条件確認処理の依頼を受信する。Ｓ１００２で、機能プロバイダ状態管理部４２６は、機能プロバイダ検索部４２２を通じて、機能プロバイダ情報テーブル４２３に格納されている情報を取得する。そしてＳ１００３で、機能プロバイダ状態管理部４２６は、取得した機能プロバイダ情報からレコードを１件取得する。Ｓ１００４で、機能プロバイダ状態管理部４２６は、Ｓ１００３で次の機能プロバイダ情報のレコードを取得できたか否かを判定する。機能プロバイダ状態管理部４２６は、取得できた場合はＳ１００５に進み、そうではない場合は、図１０Ａのフローチャートの処理を終了する。Ｓ１００５で、機能プロバイダ状態管理部４２６は、Ｓ１００３で取得した機能プロバイダ情報のレコードにある実行可能条件から１件を取得する。Ｓ１００６で、機能プロバイダ状態管理部４２６は、Ｓ１００５で実行可能条件を取得できたか否かを判定する。機能プロバイダ状態管理部４２６は、取得できた場合はＳ１００７に進み、そうではない場合は、Ｓ１０２７に進む。Ｓ１００７で、機能プロバイダ状態管理部４２６は、Ｓ１００５で取得した実行可能条件が仕向け設定、即ち、"Ｓｈｉｐｐｌｅｍｅｎｔ"であるか否かを判定する。機能プロバイダ状態管理部４２６は、仕向け設定であった場合は、Ｓ１００８に進み、そうではない場合は、Ｓ１０１１に進む。ここで例えば図５ＡのＮｏ"４"の実行可能条件のうち"Ｓｈｉｐｐｌｅｍｅｎｔ：ＣＣＳｅｒｔｉｆｉｃａｔｉｏｎＭｏｄｅ＝Ｎ"が該当する。Ｓ１００８で、機能プロバイダ状態管理部４２６は、Ｓ１００１で受信した確認処理依頼に仕向け設定が含まれているか否かを判定する。機能プロバイダ状態管理部４２６は、仕向け設定が含まれている場合はＳ１００９、そうではない場合はＳ１０１１に進む。Ｓ１００９では、機能プロバイダ状態管理部４２６は、実行可能条件にある仕向け設定の該当項目を、本体設定管理部４５０から取得する。ここで例えば図５ＡのＮｏ"４"の実行可能条件  "Ｓｈｉｐｐｌｅｍｅｎｔ：ＣＣＳｅｒｔｉｆｉｃａｔｉｏｎＭｏｄｅ＝Ｎ"の場合は、"ＣＣＳｅｒｔｉｆｉｃａｔｉｏｎＭｏｄｅ"が示すＣＣ認証モードを取得する。Ｓ１０１０で、機能プロバイダ状態管理部４２６は、Ｓ１００９で取得した本体設定の仕向け設定が、Ｓ１００５で取得した実行可能条件を満たしているかを判定する。例えば図５ＡのＮｏ"４"の実行可能条件"Ｓｈｉｐｐｌｅｍｅｎｔ：ＣＣＳｅｒｔｉｆｉｃａｔｉｏｎＭｏｄｅ＝Ｎ"の場合、機能プロバイダ状態管理部４２６は、本体設定の仕向け設定のＣＣ認証モードが"Ｎ"の場合は実行可能条件を満たしていると判定する。機能プロバイダ状態管理部４２６は、実行可能条件を満たしていると判定した場合は、Ｓ１０１１に進み、そうではない場合は、Ｓ１０２８に進む。Ｓ１０１１で、機能プロバイダ状態管理部４２６は、Ｓ１００５で取得した実行可能条件がオプション設定、即ち、"Ｏｐｔｉｏｎ："であるか否かを判定する。機能プロバイダ状態管理部４２６は、オプション設定であった場合は、Ｓ１０１２に進み、そうではない場合は、Ｓ１０１５に進む。ここで例えば図５ＡのＮｏ"１"の実行可能条件のうち"Ｏｐｔｉｏｎ：ＳｃａｎＥｘｔｅｎｔｉｏｎＫｉｔ＝Ｙ"が該当する。Ｓ１０１２で、機能プロバイダ状態管理部４２６は、Ｓ１００１で受信した確認処理依頼にオプション設定が含まれているか否かを判定する。機能プロバイダ状態管理部４２６は、オプション設定が含まれている場合は、Ｓ１０１３へ、そうではない場合は、Ｓ１０１５に進む。Ｓ１０１３では、機能プロバイダ状態管理部４２６は、実行可能条件にあるオプション設定の該当項目を、本体設定管理部４５０から取得する。ここで例えば図５ＡのＮｏ"１"の実行可能条件のうち"Ｏｐｔｉｏｎ：ＳｃａｎＥｘｔｅｎｔｉｏｎＫｉｔ＝Ｙ"の場合、機能プロバイダ状態管理部４２６は、"ＳｃａｎＥｘｔｅｎｔｉｏｎＫｉｔ"が示すスキャン拡張キットを取得する。Ｓ１０１４で、機能プロバイダ状態管理部４２６は、Ｓ１０１３で取得した本体設定のオプション設定が、Ｓ１００５で取得した実行可能条件を満たしているかを判定する。例えば図５ＡのＮｏ"１"の実行可能条件のうち"Ｏｐｔｉｏｎ：ＳｃａｎＥｘｔｅｎｔｉｏｎＫｉｔ＝Ｙ"の場合、機能プロバイダ状態管理部４２６は、本体設定のオプション設定のスキャン拡張キットが"Ｙ"の場合は実行可能条件を満たしていると判定する。機能プロバイダ状態管理部４２６は、実行可能条件を満たしていると判定した場合は、Ｓ１０１５に進み、そうではない場合は、Ｓ１０２８に進む。Ｓ１０１５で、機能プロバイダ状態管理部４２６は、Ｓ１００５で取得した実行可能条件がセキュリティポリシー設定、即ち、"ＳｅｃｕｒｉｔｙＰｏｌｉｃｙ"であるか否かを判定する。機能プロバイダ状態管理部４２６は、セキュリティポリシー設定であった場合は、Ｓ１０１６に進み、そうではない場合は、Ｓ１０１９に進む。ここで例えば図５ＡのＮｏ"３"の実行可能条件のうち"ＳｅｃｕｒｉｔｙＰｏｌｉｃｙ：ＮｅｔｗｏｒｋＡｃｃｅｓｓ＝Ｙ"が該当する。Ｓ１０１６で、機能プロバイダ状態管理部４２６は、Ｓ１００１で受信した確認処理依頼にセキュリティポリシー設定が含まれているか否かを判定する。機能プロバイダ状態管理部４２６は、セキュリティポリシー設定が含まれている場合は、Ｓ１０１７へ、そうではない場合は、Ｓ１０１９に進む。Ｓ１０１７では、機能プロバイダ状態管理部４２６は、実行可能条件にあるセキュリティポリシー設定の該当項目を、本体設定管理部４５０から取得する。ここで例えば図５ＡのＮｏ"３"の実行可能条件のうち"ＳｅｃｕｒｉｔｙＰｏｌｉｃｙ：ＮｅｔｗｏｒｋＡｃｃｅｓｓ＝Ｙ"の場合は、機能プロバイダ状態管理部４２６は、"ＮｅｔｗｏｒｋＡｃｃｅｓｓ"が示すネットワーク接続設定を取得する。Ｓ１０１８で、機能プロバイダ状態管理部４２６は、Ｓ１０１７で取得した本体設定のセキュリティポリシー設定が、Ｓ１００５で取得した実行可能条件を満たしているかを判定する。例えば図５ＡのＮｏ"３"の実行可能条件のうち"ＳｅｃｕｒｉｔｙＰｏｌｉｃｙ：ＮｅｔｗｏｒｋＡｃｃｅｓｓ＝Ｙ"の場合、機能プロバイダ状態管理部４２６は、本体設定のセキュリティポリシー設定のネットワーク接続設定が"Ｙ"の場合は実行可能条件を満たしていると判定する。機能プロバイダ状態管理部４２６は、実行可能条件を満たしていると判定した場合は、Ｓ１���１９に進み、そうではない場合は、Ｓ１０２８に進む。Ｓ１０１９で、機能プロバイダ状態管理部４２６は、Ｓ１００５で取得した実行可能条件がユーザ設定、即ち、"ＵｓｅｒＳｅｔｔｉｎｇ"であるか否かを判定する。機能プロバイダ状態管理部４２６は、ユーザ設定であった場合は、Ｓ１０２０に進み、そうではない場合は、Ｓ１０２３に進む。ここで例えば図５ＡのＮｏ"３"の実行可能条件のうち"ＵｓｅｒＳｅｔｔｉｎｇ：Ｌａｎｇｕａｇｅ＝ＥＮ，ＦＲ，ＩＴ，ＧＥ，ＥＳ"が該当する。Ｓ１０２０で、機能プロバイダ状態管理部４２６は、Ｓ１００１で受信した確認処理依頼にユーザ設定が含まれているか否かを判定する。機能プロバイダ状態管理部４２６は、ユーザ設定が含まれている場合はＳ１０２１、そうではない場合はＳ１０２３に進む。Ｓ１０２１では、機能プロバイダ状態管理部４２６は、実行可能条件にあるユーザ設定の該当項目を、本体設定管理部４５０から取得する。ここで例えば図５ＡのＮｏ"３"の実行可能条件のうち"ＵｓｅｒＳｅｔｔｉｎｇ：Ｌａｎｇｕａｇｅ＝ＥＮ，ＦＲ，ＩＴ，ＧＥ，ＥＳ"の場合は、機能プロバイダ状態管理部４２６は、"Ｌａｎｇｕａｇｅ"が示す言語設定を取得する。Ｓ１０２２で、機能プロバイダ状態管理部４２６は、Ｓ１０２１で取得した本体設定のユーザ設定が、Ｓ１００５で取得した実行可能条件を満たしているかを判定する。例えば図５ＡのＮｏ"３"の実行可能条件のうち"ＵｓｅｒＳｅｔｔｉｎｇ：Ｌａｎｇｕａｇｅ＝ＥＮ，ＦＲ，ＩＴ，ＧＥ，ＥＳ"の場合について説明する。この場合、本体設定のユーザ設定の言語設定が"ＥＮ，ＦＲ，ＩＴ，ＧＥ，ＥＳ"のいずれかの場合は、機能プロバイダ状態管理部４２６は、実行可能条件を満たしていると判定する。機能プロバイダ状態管理部４２６は、実行可能条件を満たしていると判定した場合は、Ｓ１０２３に進み、そうではない場合はＳ１０２８に進む。Ｓ１０２３で、機能プロバイダ状態管理部４２６は、Ｓ１００５で取得した実行可能条件が本体状態、即ち、"Ｓｃａｎｎｅｒ"や"Ｐｒｉｎｔｅｒ"であるか否かを判定する。機能プロバイダ状態管理部４２６は、本体状態であった場合はＳ１０２４に進み、そうではない場合は、Ｓ１００５に進む。ここで例えば図５ＡのＮｏ"１"の実行可能条件のうち"Ｓｃａｎｎｅｒ：ＣｏｍｐｏｎｅｎｔＳｔａｔｕｓ＝Ｎｏｒｍａｌ"が該当する。Ｓ１０２４で、機能プロバイダ状態管理部４２６は、Ｓ１００１で受信した確認処理依頼に本体状態が含まれているか否かを判定する。機能プロバイダ状態管理部４２６は、本体状態が含まれている場合は、Ｓ１０２５へ、そうではない場合は、Ｓ１００５に進む。Ｓ１０２５では、機能プロバイダ状態管理部４２６は、実行可能条件にある本体状態の該当項目を、本体設定管理部４５０から取得する。ここで例えば図５ＡのＮｏ"１"の実行可能条件のうち"Ｓｃａｎｎｅｒ：ＣｏｍｐｏｎｅｎｔＳｔａｔｕｓ＝Ｎｏｒｍａｌ"の場合は、機能プロバイダ状態管理部４２６は、"ＣｏｍｐｏｎｅｎｔＳｔａｔｕｓ"が示すスキャナのコンポーネント状態を取得する。Ｓ１０２６で、機能プロバイダ状態管理部４２６は、Ｓ１０２５で取得した本体状態が、Ｓ１００５で取得した実行可能条件を満たしているかを判定する。例えば図５Ａ��Ｎｏ"１"の実行可能条件のうち"Ｓｃａｎｎｅｒ：ＣｏｍｐｏｎｅｎｔＳｔａｔｕｓ＝Ｎｏｒｍａｌ"の場合は、機能プロバイダ状態管理部４２６は、本体状態のスキャナのコンポーネント状態が"Ｎｏｒｍａｌ"の場合は実行可能条件を満たしていると判定する。機能プロバイダ状態管理部４２６は、実行可能条件を満たしていると判定した場合は、Ｓ１００５に進み、そうではない場合はＳ１０２８に進む。Ｓ１０２７で、機能プロバイダ状態管理部４２６は、Ｓ１００３で取得した機能プロバイダ情報テーブル４２３のレコードのステータスに、実行可、即ち、"Ａｖａｉｌａｂｌｅ"を格納する。Ｓ１０２８で、機能プロバイダ状態管理部４２６は、Ｓ１００３で取得した機能プロバイダ情報テーブル４２３のレコードのステータスに、実行不可、即ち、"ＮｏｔＡｖａｉｌａｂｌｅ"を格納する。
【００２３】
図１１Ａは、図８Ｂのシーケンス図における機能プロバイダ管理部４２０のＳ８３０〜Ｓ８３３の処理の一例を示すフローチャートである。Ｓ１１０１で、機能プロバイダ管理部４２０の本体監視部４２５は、ＭＦＰ１０１が起動したか否かを判定する。起動した場合は、本体監視部４２５は、機能プロバイダ状態管理部４２６に対して起動の旨を通知し、Ｓ１１０２に進む。そうではない場合は、本体監視部４２５は、Ｓ１１０１の処理を繰り返す。Ｓ１１０２で、機能プロバイダ状態管理部４２６は、機能プロバイダのステータス確認項目として、仕向け設定とオプション設定とを設定する。Ｓ１１０３で、機能プロバイダ状態管理部４２６は、ステータス確認処理を行う。Ｓ１１０３の処理の詳細は、図１０Ａで説明しているため説明は省略する。
図１１Ｂは、図８Ｂのシーケンス図における機能プロバイダ管理部４２０のＳ８３０〜Ｓ８３３の処理の一例を示すフローチャートである。Ｓ１１１１で、機能プロバイダ管理部４２０の本体監視部４２５は、本体設定がされた場合の通知である本体更新イベントを受信したか否かを判定する。本体更新イベントを受信した場合は、本体監視部４２５は、機能プロバイダ状態管理部４２６に対して本体更新イベント受信の旨を通知し、Ｓ１１１２に進む。そうではない場合は、本体監視部４２５は、Ｓ１１１１の処理を繰り返す。Ｓ１１１２で、機能プロバイダ状態管理部４２６は、機能プロバイダのステータス確認項目として、ユーザ設定を設定する。そして、機能プロバイダ状態管理部４２６は、Ｓ１１０３に進む。Ｓ１１０３の処理は図１１Ａと同一であるため説明は省略する。
【００２４】
図１１Ｃは、図８Ｂのシーケンス図における機能プロバイダ管理部４２０のＳ８３０〜Ｓ８３３の処理の一例を示すフローチャートである。Ｓ１１２１で、機能プロバイダ管理部４２０の本体監視部４２５は、セキュリティポリシー設定等を含む管理者設定が変更されたか否かを判定する。管理者設定が変更された場合は、本体監視部４２５は、機能プロバイダ状態管理部４２６に対して管理者設定変更の旨を通知し、Ｓ１１２２に進む。そうではない場合は、本体監視部４２５は、Ｓ１１２１の処理を繰り返す。Ｓ１１２２で、機能プロバイダ状態管理部４２６は、機能プロバイダのステータス確認項目として、セキュリティポリシー設定を設定する。そして機能プロバイダ状態管理部４２６は、Ｓ１１０３に進む。Ｓ１１０３の処理は図１１Ａと同一であるため説明は省略する。
図１１Ｄは、図８Ｂのシーケンス図における機能プロバイダ管理部４２０のＳ８３０〜Ｓ８３３の処理の一例を示すフローチャートである。Ｓ１１３１で、機能プロバイダ管理部４２０の本体監視部４２５は、予め定められている一定時間が経過したか否かを判定する。一定時間が経過した場合は、本体監視部４２５は、機能プロバイダ状態管理部４２６に対して一定時間経過の旨を通知し、Ｓ１１３２に進む。そうではない場合は、本体監視部４２５は、Ｓ１１３１の処理を繰り返す。Ｓ１１３２で、機能プロバイダ状態管理部４２６は、機能プロバイダのステータス確認項目として、本体状態を設定する。そして、機能プロバイダ状態管理部４２６は、Ｓ１１０３に進む。Ｓ１１０３の処理は図１１Ａと同一であるため説明は省略する。
【００２５】
図１２は、図８Ｃのシーケンス図におけるワークフロー処理部４３０に係るＳ８５０からＳ８７１までの処理の一例を示すフローチャートである。Ｓ１２０１で、ワークフロー処理部４３０は、ユーザからワークフローの実行指示を受け取る。Ｓ１２０２で、ワークフロー処理部４３０は、実行指示に対応するワークフロー定義ファイル４４０を読み込む。Ｓ１２０３で、ワークフロー処理部４３０は、ワークフロー定義ファイル４４０からＦＰタグで定義された機能プロバイダの定義を実行順に１つ取り出す。ここで、実行順とは、ＦＰタグのｎｏ要素に定義された数字の若い順を意味する。Ｓ１２０４で、ワークフロー処理部４３０は、次に実行すべき機能プロバイダがあるか否かを判定する。ワークフロー処理部４３０は、次に実行すべき機能プロバイダがあればＳ１２０５へ進み、次に実行すべき機能プロバイダがなければ（最後の機能プロバイダまで取得し終えたら）、ワークフローの実行を終了する。Ｓ１２０５で、ワークフロー処理部４３０は、ＦＰタグ及びＦＰタグの子要素であるＣｏｎｄｉｔｉｏｎタグから機能プロバイダの検索条件を取得し、機能プロバイダ検索部４２２に機能プロバイダの検索を指示する。機能プロバイダ検索部４２２が行う機能プロバイダの検索処理は図１３のフローチャートで詳細に説明する。Ｓ１２０６で、ワークフロー処理部４３０は、機能プロバイダ検索部４２２から検索結果を受け取り、検索条件に一致する機能プロバイダがあるかどうかを判定する。ワークフロー処理部４３０は、検索結果に一致する機能プロバイダがあればＳ１２０７へ処理を進め、検索に一致する機能プロバイダがなければ、Ｓ１２３１へ処理を進める。Ｓ１２３１で、ワークフロー処理部４３０は、エラーを通知してワークフローの実行処理を終了する。Ｓ１２０７で、ワークフロー処理部４３０は、ワークフロー定義ファイル４４０から処理対象となっているＦＰタグの子要素であるＡｃｔｉｏｎタグを実行順に１つ取り出す。ここで実行順とは、Ａｃｔｉｏｎタグのｎｏ要素に定義された数字の若い順を意味する。Ｓ１２０８で、ワークフロー処理部４３０は、次に処理すべきＡｃｔｉｏｎタグがあるか否かを判定する。ワークフロー処理部４３０は、次に処理すべきＡｃｔｉｏｎタグがあれば、Ｓ１２０９の処理へ進み、次に処理すべきＡｃｔｉｏｎタグがなければ（最後のＡｃｔｉｏｎタグまで取得し終えたら）、Ｓ１２０３の処理へ戻る。Ｓ１２０９で、ワークフロー処理部４３０は、Ａｃｔｉｏｎタグの定義に従って、Ｓ１２０５の検索結果として取得した機能プロバイダを呼び出す。その際、ワークフロー処理部４３０は、Ａｃｔｉｏｎタグの子要素としてＰａｒａｍｅｔｅｒタグ又はＩｎｐｕｔタグが定義されていれば、その定義に従って、機能プロバイダに入力を与える。Ｓ１２２１で、ワークフロー処理部４３０から呼び出された機能プロバイダは、指示に従って処理を実行する。Ｓ１２１０で、ワークフロー処理部４３０は、呼び出した機能プロバイダの実行完了を待ち受ける。機能プロバイダの実行が完了したら、Ｓ１２１１で、ワークフロー処理部４３０は、機能プロバイダの出力を、別の機能プロバイダの入力として使用できるようＨＤＤ２１４又はＲＡＭ２１３に保存する。機能プロバイダの出力を保存したら、ワークフロー処理部４３０は、次の機能プロバイダの定義を取得するために、Ｓ１２０３へ処理を進める。
【００２６】
次に図１３のフローチャートを用いて機能プロバイダ検索部４２２が行う機能プロバイダの検索処理の説明を行う。図１３のフローチャートは、図８Ｃのシーケンス図における機能プロバイダ管理部４２０に係るＳ８５３、８５８、８６３、８６８で行われる処理であり、また、図１２のフローチャートにおけるＳ１１０５から呼び出される処理でもある。Ｓ１３０１で、機能プロバイダ検索部４２２は、ワークフロー処理部４３０から機能プロバイダの検索指示を受け取る。検索指示には、ＦＰタグ及びＦＰタグの子要素であるＣｏｎｄｉｔｉｏｎタグに定義された機能プロバイダの検索条件が含まれる。Ｓ１３０２で、機能プロバイダ検索部４２２は、機能プロバイダ情報テーブル４２３に格納されている全レコードのうち、ステータスが使用可、即ち、"Ａｖａｉｌａｂｌｅ"となっている機能プロバイダを抽出する。例えば図５Ａの場合、ステータスが"Ａｖａｉｌａｂｌｅ"となっている標準スキャン、組込ＯＣＲ、ＳＭＢ送信、プルプリント、業務システム送信の機能プロバイダが抽出される。Ｓ１３０３で、機能プロバイダ検索部４２２は、ＦＰタグの属性として定義された機能プロバイダの指定方法を判定する。機能プロバイダ検索部４２２は、機能プロバイダが機能タイプで指定されていたら、Ｓ１３０４へ処理を進め、機能プロバイダがＩＤで指定されていたら、Ｓ１３１０へ処理を進める。Ｓ１３１０で、機能プロバイダ検索部４２２は、Ｓ１３０２で抽出された使用可の機能プロバイダから、指定されたＩＤをもつ機能プロバイダを抽出する。Ｓ１３１１で、機能プロバイダ検索部４２２は、抽出の結果を確認する。機能プロバイダ検索部４２２は、検索結果が存在する場合、Ｓ１３１３へ処理を進め、そうではない場合、Ｓ１３１２へ処理を進める。Ｓ１３１２で、機能プロバイダ検索部４２２は、検索条件に一致する機能プロバイダはない、という検索結果をワークフロー処理部４３０に返して、図１３のフローチャートの処理を終了する。Ｓ１３０４で、機能プロバイダ検索部４２２は、Ｓ１３０２で抽出された使用可の機能プロバイダから、指定された機能タイプをもつ機能プロバイダを抽出する。Ｓ１３０５で、機能プロバイダ検索部４２２は、抽出の結果を確認する。例えば、機能タイプを「ＯＣＲ」と指定した場合、検索結果候補は、Ｓ１３０２で抽出された機能プロバイダから、機能タイプが「ＯＣＲ」と定義されている組込ＯＣＲプロバイダ４１２となる。Ｓ１３０５で、機能プロバイダ検索部４２２は、検索結果候補が存在する場合、Ｓ１３０５へ処理を進め、そうではない場合、Ｓ１３１３に処理を進める。Ｓ１３１３で、機能プロバイダ検索部４２２は、検索条件に一致する機能プロバイダはない、という検索結果をワークフロー処理部４３０に返して図１３に示すフローチャートの処理を終了する。Ｓ１３０６で、機能プロバイダ検索部４２２は、検索結果候補の機能プロバイダに優先度が指定されているかを確認する。機能プロバイダ検索部４２２は、優先度の指定がある場合、Ｓ１３０７へ処理を進め、そうではない場合、Ｓ１３０８へ処理を進める。Ｓ１３０７で、機能プロバイダ検索部４２２は、優先度の高い機能プロバイダを絞り込む。優先度が高いかどうかは、機能プロ��イダ情報テーブル４２３の「優先度」列に指定された値が小さいかどうかで判別する。Ｓ１３０８で、機能プロバイダ検索部４２２は、絞り込んだ結果、優先度の高い機能プロバイダが複数存在するかをチェックする。機能プロバイダ検索部４２２は、優先度の高い機能プロバイダが複数存在する場合、Ｓ１３０９へ処理を進め、そうではない場合、Ｓ１３１３へ処理を進める。Ｓ１３０９で、機能プロバイダ検索部４２２は、検索候補が複数存在した場合に、検索結果を何れか１つに絞り込み、Ｓ１３１３に処理を進める。最後に、Ｓ１３１３で、機能プロバイダ検索部４２２は、絞り込まれた機能プロバイダを検索結果としてワークフロー処理部４３０に返して図１３に示すフローチャートの処理を終了する。
【００２７】
機能プロバイダ管理部４２０が、各機能プロバイダの実行可能条件を保存しておく。次に、機能プロバイダ管理部４２０が、実行可能条件に関連する本体設定管理部４５０で管理されている仕向け設定、セキュリティポリシー設定、ユーザ設定、オプション設定といった本体設定を監視し、またスキャナやプリンタといった本体状態を監視する。本体設定や本体状態に変更が発生した場合は、機能プロバイダ管理部４２０は、機能プロバイダの実行可能条件から、各機能プロバイダが実行可能か否かのステータスを保存しておく。そしてワークフロー処理部４３０でのワークフロー実行時に、ワークフロー処理部４３０が、機能プロバイダの検索を機能プロバイダ管理部４２０に指示する。このとき機能プロバイダ管理部４２０は、ステータスが使用可の機能プロバイダを抽出したうえで、検索条件に合致する機能プロバイダを検索し、ワークフロー処理部４３０に返却する。これにより、ワークフローアプリと機能プロバイダとが疎に結合している場合でも、機能プロバイダ管理部４２０がステータス使用可の機能プロバイダをワークフロー処理部４３０に返却することで、ワークフロー処理部４３０での事前確認が不要となる。またこれにより、機能プロバイダ管理部４２０は、本体設定や本体状態を監視し、機能プロバイダの使用可、又は、使用不可のステータスを最新状態に更新している。このため、機能プロバイダ管理部４２０は、ワークフロー処理部４３０から検索指示を受けた場合に、その時点から機能プロバイダの使用可不可を確認することなく、機能プロバイダ情報テーブルのステータスを取得するだけで、時間をかけずに使用可能な機能プロバイダを返却することができる。
【００２８】
＜実施形態２＞
実施形態１では、機能プロバイダ管理部４２０が、機能プロバイダの使用可能か否かの判定を行っていた。実施形態２では、機能プロバイダ管理部４２０が本体設定や本体状態を監視し、変更が発生した場合に機能プロバイダに使用可能か否かの判定をさせる処理の例を説明する。
図６（Ｂ）は、実施形態２の機能プロバイダインターフェース定義の例である。実施形態２では機能プロバイダインターフェースはプログラムのソースコード形式で表現されているが、これに限定されるものではなく、他の形式であってもよい。定義６１１はスキャンプロバイダインターフェースの定義である。定義６１２はＯＣＲプロバイダインターフェースの定義である。定義６１３はファイル送信プロバイダインターフェースの定義である。定義６１４はプリントプロバイダインターフェースの定義である。それぞれ図６（Ａ）の定義６０１、６０２、６０３、６０４に加えて、「ＣｈｅｃｋＲｅｓｕｌｔ」という実行可能条件確認のインターフェースが定義されている。
【００２９】
図８Ｄは、実施形態２の本体設定変更、本体設定及び本体状態の変更監視の情報処理の一例を示すシーケンス図である。図８Ｄでは、例として、本体設定のうち仕向け設定テーブル４５１に対するユーザの設定処理と機能プロバイダ管理部４２０の本体設定監視処理とを説明する。Ｓ８００１で、機能プロバイダ管理部４２０は、仕向け設定に関連する実行可能条件を持つ機能プロバイダにステータス確認を指示する。図５Ａの場合では、機能プロバイダ管理部４２０は、ＳＭＢ送信プロバイダ４１４に対してステータス確認を指示する。Ｓ８００２で、ＳＭＢ送信プロバイダ４１４は、仕向け設定を取得して実行可能か否かのステータスを確認する。Ｓ８００３で、ＳＭＢ送信プロバイダ４１４は、ステータス確認結果を機能プロバイダ管理部４２０に返却する。同様に、本体設定管理部４５０は、セキュリティポリシー設定、ユーザ設定、オプション設定についても、本体設定する。そして機能プロバイダ管理部４２０は、本体設定を監視し、機能プロバイダに実行可否確認依頼を行い、返却された実行可否確認結果から、機能プロバイダ情報テーブル４２３のステータスを更新する。本体設定だけでなく本体状態についても同様に、機能プロバイダ管理部４２０は、本体の状態であるネットワークＩ／Ｆ２１８に対してネットワーク接続状態や、プリンタ２２０、スキャナ２２１に対して稼動状態の取得を指示する。また本体設定管理部４５０は、本体の状態であるネットワークＩ／Ｆ２１８からネットワーク接続状態や、プリンタ２２０、スキャナ２２１から稼動状態を取得する。機能プロバイダ管理部４２０は、取得した本体状態の内容と、機能プロバイダ情報テーブル４２３の実行可能条件の内容とから、本体状態が実行条件に関連する機能プロバイダに実行可否確認依頼を行う。そして機能プロバイダ管理部４２０は、返却された実行可否確認結果から、機能プロバイダ情報テーブル４２３のステータスを更新する。
【００３０】
図１０Ｂは、機能プロバイダ状態管理部４２６の機能プロバイダに対するステータス確認処理の一例を示すフローチャートである。図１０Ａでは、Ｓ１０１０、Ｓ１０１４、Ｓ１０１８、Ｓ１０２２、Ｓ１０２６で、機能プロバイダ管理部４２０が、機能プロバイダの実行可否を判定していた。図１０Ｂでは、それらのステップの代わりに、Ｓ１０３１〜Ｓ１０３３の処理を実行する。Ｓ１０３１で、機能プロバイダ状態管理部４２６は、Ｓ１００９、Ｓ１０１３、Ｓ１０１７、Ｓ１０２１、Ｓ１０２５で取得した本体設定や本体状態を、Ｓ１０１３で取得した機能プロバイダに送信し、ステータス確認依頼行う。即ち、機能プロバイダ状態管理部４２６は、図６（Ｂ）の機能プロバイダインターフェース定義で定義されているステータス確認のメソッドである"ＣｈｅｃｋＲｅｓｕｌｔ"に対して、本体設定や本体状態をパラメータとして設定することにより実行する。そしてＳ１０３２で、機能プロバイダ状態管理部４２６は、機能プロバイダからのステータス確認結果を受信したか否かを判定する。機能プロバイダ状態管理部４２６は、確認結果を受信した場合は、Ｓ１０３３へ処理を進め、そうではない場合は、Ｓ１０２８に処理を進める。Ｓ１０３３で、機能プロバイダ状態管理部４２６は、ステータス確認結果が使用可であるか否かを判定する。機能プロバイダ状態管理部４２６は、使用可の場合は、Ｓ１００５に処理を戻し、そうでない場合は、Ｓ１０２８に処理を進める。
【００３１】
図１４（Ａ）は、機能プロバイダでのステータス確認処理の一例を示すフローチャートである。Ｓ１４０１で、機能プロバイダは、機能プロバイダ管理部４２０からステータス確認指示を受信したか否かを判定する。機能プロバイダは、ステータス確認指示を受信したと判定した場合は、Ｓ１４０２に処理を進め、そうでないと判定した場合は、Ｓ１４０１の処理を繰り返す。Ｓ１４０２で、機能プロバイダは、自身の実行可能条件の判定に必要な本体設定、本体状態について、ＭＦＰ１０１の本体設定管理部４５０から本体設定を、プリンタ２２０、スキャナ２２１から本体状態を取得する。Ｓ１４０３で、機能プロバイダは、取得した本体設定、本体状態から、機能プロバイダが実行可能であるか否かを判定する。機能プロバイダは、実行可の場合はＳ１４０４に処理を進め、実行不可の場合はＳ１４０５に処理を進める。Ｓ１４０４で、機能プロバイダは、機能プロバイダ管理部４２０に対してステータス確認結果として使用可を返却する。Ｓ１４０５で、機能プロバイダは、機能プロバイダ管理部４２０に対してステータス確認結果として使用不可を返却する。
【００３２】
機能プロバイダ管理部４２０が、実行可能条件に関連する本体設定管理部４５０で管理されている仕向け設定、セキュリティポリシー設定、ユーザ設定、オプション設定といった本体設定を監視する。また機能プロバイダ管理部４２０がスキャナやプリンタといった本体状態を監視する。本体設定や本体状態に変更が発生した場合は、機能プロバイダ管理部４２０が、機能プロバイダに対してステータス確認を依頼する。そして機能プロバイダが実行可能か否かを判定し、実行可能か否かをステータスとして機能プロバイダ管理部４２０に返却する。そして機能プロバイダ管理部４２０は、機能プロバイダから返却されたステータスを保存しておく。これにより、ワークフローアプリと機能プロバイダとが疎に結合している場合でも、機能プロバイダ管理部４２０がステータス使用可の機能プロバイダをワークフロー処理部４３０に返却することで、ワークフロー処理部４３０での事前確認が不要となる。またこれにより、機能プロバイダ管理部４２０は、本体設定や本体状態を監視し、機能プロバイダにステータス確認することで取得した機能プロバイダの使用可、又は、使用不可のステータスを最新状態に更新している。このため、機能プロバイダ管理部４２０は、ワークフロー処理部４３０から検索指示を受けた場合に、その時点から機能プロバイダの使用可不可を確認することなく、機能プロバイダ情報テーブルのステータスを取得するだけで、時間をかけずに使用可能な機能プロバイダを返却することができる。
【００３３】
＜実施形態３＞
実施形態１においては機能プロバイダ管理部４２０が機能プロバイダの実行が可能か否かの判定を行っており、実施形態２においては機能プロバイダが機能プロバイダの実行が可能か否かの判定を行っていた。本実施形態では、機能プロバイダ管理部４２０では確認できない例えば固有のプロトコルで確認が必要な実行可能条件を機能プロバイダが持つような場合に、機能プロバイダ管理部４２０と機能プロバイダとが分担して機能プロバイダのステータスを確認する処理の例を説明する。
【００３４】
図４で示した業務システム送信プロバイダ４１６は、業務システム送信機能を提供する機能プロバイダ（機能タイプ＝ファイル送信）である。ここで業務システムとは企業がビジネスを遂行するために必要な処理を行うためのシステムであり、システムへの接続状態の確認やファイルの送信のために、一般的ではない固有のプロトコルや手順を用いて接続することが必要なシステムである。業務システム送信プロバイダ４１６は、機能タイプが「ファイル送信」の機能プロバイダのために定義された機能プロバイダインターフェース（ファイル送信プロバイダインターフェース）を、業務システムに接続するためのプロトコルを含めた処理を用いて実現している。
図５Ａの機能プロバイダ情報テーブル４２３には、機能プロバイダが固有の実行可能条件を保持しているか否かを示す固有条件等の情報が保持される。
【００３５】
図７Ｂは、実施形態３におけるワークフロー定義ファイルのより具体的な記述の一例を示す図である。実施形態３ではワークフロー定義ファイルはＸＭＬ形式のファイルとして表現されているが、ＸＭＬ形式に限定されるものではなく、他の形式のファイルであってもよい。ＦＰタグ７２０は、ｎｏ属性とｉｄ属性とで、３番目に実行する機能プロバイダが業務システム送信プロバイダであることを定義している。Ａｃｔｉｏｎタグ７２１は、業務システム送信プロバイダの実行において「ｄｏＳｅｎｄ」を１番目に呼び出す旨を定義している。Ｉｎｐｕｔタグ７２２及びＩｎｐｕｔタグ７２３は、それぞれ「ｄｏＳｅｎｄ」の入力に関する定義で、「Ｄｏｃｕｍｅｎｔ」形式のデータをＩＤが「ｆｏｏ」「ｂａｒ」のデータから受け取ることを示している。
図８Ｅは、実施形態３における本体設定変更、本体設定及び本体状態の変更監視の情報処理の一例を示すシーケンス図である。Ｓ８０１１で、業務システム送信プロバイダ４１６は、自身の保持する業務システム接続プロトコルを用いて実行可能条件を確認する。Ｓ８０１２で、業務システム送信プロバイダ４１６は、ステータス確認結果を機能プロバイダ管理部４２０に通知する。Ｓ８０１３で、機能プロバイダ管理部４２０は、図５の機能プロバイダ管理テーブルを取得する。そして、機能プロバイダ管理部４２０は、固有条件が"Ｙ"、即ち固有条件有りの場合は、業務システム送信プロバイダ４１６からのステータス確認結果を、機能プロバイダ情報テーブル４２３のステータスとして格納する。
【００３６】
図１４（Ｂ）は、機能プロバイダから機能プロバイダ管理部４２０へのステータス通知処理の一例を示すフローチャートである。Ｓ１４１１で、機能プロバイダは、自身の実行可能条件の判定に必要な本体設定、本体状態について、ＭＦＰ１０１の本体設定管理部４５０から本体設定を、プリンタ２２０、スキャナ２２１から本体状態を取得する。また、機能プロバイダは、自身の実行可能条件の判定に自身の固有のプロトコルが必要な場合、例えば業務システムとの接続状態の確認が必要な場合は、自身の持つ固有のプロトコルを用いて状態を取得する。Ｓ１４１２で、機能プロバイダは、取得した本体設定、本体状態から、機能プロバイダが実行可能であるか否かを判定する。機能プロバイダは、実行可の場合はＳ１４１３に処理を進め、実行不可の場合はＳ１４１４に処理を進める。Ｓ１４１３で、機能プロバイダは、機能プロバイダ管理部４２０に対してステータス確認結果として使用可を通知する。Ｓ１４１４で、機能プロバイダは、機能プロバイダ管理部４２０に対してステータス確認結果として使用不可を返却する。
【００３７】
図１０Ｃは、機能プロバイダ状態管理部４２６が機能プロバイダからのステータス通知受信処理の一例を示すフローチャートである。Ｓ１０４１で、機能プロバイダ状態管理部４２６は、機能プロバイダからのステータス更新通知を受信する。Ｓ１０４２で、機能プロバイダ状態管理部４２６は、機能プロバイダ情報テーブル４２３から、通知を送信した機能プロバイダの情報を取得する。Ｓ１０４３で、機能プロバイダ状態管理部４２６は、取得した機能プロバイダ情報の固有条件が"Ｙ"即ち、固有条件有りか否かを判定する。機能プロバイダ状態管理部４２６は、固有条件が有りになっている場合は、Ｓ１０４４に処理を進め、そうではない場合は、図１０Ｃの処理を終了する。Ｓ１０４４で、機能プロバイダ状態管理部４２６は、Ｓ１０４１で受信した機能プロバイダのステータスが実行可か否かを判定する。機能プロバイダ状態管理部４２６は、実行可と判定した場合は、Ｓ１０４５に処理を進め、そうでない場合は、Ｓ１０４６に処理を進める。Ｓ１０４５で、機能プロバイダ状態管理部４２６は、機能プロバイダ情報テーブル４２３のステータスに実行可を保存する。Ｓ１０４６で、機能プロバイダ状態管理部４２６は、機能プロバイダ情報テーブル４２３のステータスに実行不可を保存する。
【００３８】
機能プロバイダが、固有のプロトコルを用いて固有の実行可能条件に関する状態を監視する。そして状態に変更が発生した場合は、機能プロバイダが、実行可能条件を判定した後、機能プロバイダ管理部４２０に対してステータス変更を通知する。そして機能プロバイダ管理部４２０は、機能プロバイダから通知されたステータスを保存しておく。これにより、機能プロバイダが固有の実行条件を持つような場合でも、機能プロバイダが状態監視と機能プロバイダ管理部４２０へのステータス通知とを行うことで、機能プロバイダ管理部４２０が機能プロバイダのステータスを適切に管理することができる。
【００３９】
＜その他の実施形態＞
本発明は、上述の実施形態の１以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給する。そして、そのシステム又は装置のコンピュータにおける１つ以上のプロセッサーがプログラムを読み出し実行する処理でも実現可能である。また、１以上の機能を実現する回路（例えば、ＡＳＩＣ）によっても実現可能である。
【００４０】
以上、本発明の実施形態の一例について詳述したが、本発明は係る特定の実施形態に限定されるものではない。
例えば、ＭＦＰ１０１、サーバ１０２のハードウェア構成として、ＣＰＵは複数存在してもよく、複数のＣＰＵがＲＯＭ又はＨＤＤ等に記憶されているプログラムに基づき処理を実行するようにしてもよい。また、ＭＦＰ１０１のハードウェア構成として、ＣＰＵの替わりに、ＧＰＵ（Ｇｒａｐｈｉｃｓ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）を用いてもよい。
また、上述した実施形態を任意に組み合わせて実施してもよい。
【００４１】
以上、上述した各実施形態によれば、ワークフローアプリから機能プロバイダを検索したときに、使用可の機能プロバイダを検索結果としてすぐに返却することができる。このため、ユーザがワークフローアプリに対しワークフローの実行を指示してから、ワークフローアプリが検索後に機能プロバイダの実行可能か否かの判別することなく、機能プロバイダをすぐに実行することができる。
【符号の説明】
【００４２】
１０１  ＭＦＰ
１０２  サーバ
２１０  制御部
【図１】
2019087877.tif 000003
【図２】
2019087877.tif 000004
【図３】
2019087877.tif 000005
【図４】
2019087877.tif 000006
【図５Ａ】
2019087877.tif 000007
【図５Ｂ】
2019087877.tif 000008
【図５Ｃ】
2019087877.tif 000009
【図５Ｄ】
2019087877.tif 000010
【図５Ｅ】
2019087877.tif 000011
【図６】
2019087877.tif 000012
【図７Ａ】
2019087877.tif 000013
【図７Ｂ】
2019087877.tif 000014
【図８Ａ】
2019087877.tif 000015
【図８Ｂ】
2019087877.tif 000016
【図８Ｃ】
2019087877.tif 000017
【図８Ｄ】
2019087877.tif 000018
【図８Ｅ】
2019087877.tif 000019
【図９】
2019087877.tif 000020
【図１０Ａ】
2019087877.tif 000021
【図１０Ｂ】
2019087877.tif 000022
【図１０Ｃ】
2019087877.tif 000023
【図１１Ａ】
2019087877.tif 000024
【図１１Ｂ】
2019087877.tif 000025
【図１１Ｃ】
2019087877.tif 000026
【図１１Ｄ】
2019087877.tif 000027
【図１２】
2019087877.tif 000028
【図１３】
2019087877.tif 000029
【図１４】
2019087877.tif 000030