(57)【要約】【課題】従来のワークフローアプリでは、フロー実行中にユーザがログアウトされた場合フローを中止せざるを得ない。【解決手段】ワークフロー処理部が機能プロバイダにユーザ入力の有無を問い合わせることで、ログアウト可否を判断し、ユーザからのログアウト指示を受信した際にログアウト不可の状態でのログアウトを制限する。【選択図】図８Ｃ
2019213165.tif 000002
【特許請求の範囲】
【請求項１】
一以上の機能プロバイダによる処理を順に実行するワークフローを定義したワークフロー定義情報を格納する格納手段と、
前記ワークフロー定義情報で定義したワークフローに含まれた前記機能プロバイダの各々を実行する前に、現在から前記ワークフローの完了までにおけるユーザ入力の有無を、前記ワークフロー定義情報に基づいて判定する判定手段と、
前記判定手段により前記ユーザ入力が有ると判定された場合、ログインしているユーザのログアウトを制限するログアウト制御手段と
を有することを特徴とする情報処理装置。
【請求項２】
請求項１に記載の情報処理装置であって、
前記判定手段は、現在から前記ワークフローの完了までに実行される前記機能プロバイダについて、ユーザ入力が必須であるか、または、必要な入力データが整っていない場合には、前記ユーザ入力が有ると判定することを特徴とする情報処理装置。
【請求項３】
請求項１または２に記載の情報処理装置であって、
前記一以上の機能プロバイダを更に有し、
前記判定手段は、前記ワークフロー定義情報に基づいて、現在から前記ワークフローの完了までに実行される前記機能プロバイダの各々に対してユーザ入力の有無を問い合わせ、該問い合わせに対する応答に、ユーザ入力が有ることを示す応答が含まれていた場合に、前記ユーザ入力が有ると判定することを特徴とする情報処理装置。
【請求項４】
請求項３に記載の情報処理装置であって、
前記機能プロバイダは、ユーザ入力の有無を示すテーブルを有し、前記問い合わせに対して前記テーブルを参照し、前記ユーザ入力が有ることが示されている場合には前記ユーザ入力が有ることを応答することを特徴とする情報処理装置。
【請求項５】
請求項１乃至４のいずれか一項に記載の情報処理装置であって、
前記ユーザ入力が有ると判定した場合には、前記ログアウト制御手段は、前記ワークフローの進捗を示す画面に、ログアウトのためのユーザインターフェースを表示しないことを特徴とする情報処理装置。
【請求項６】
請求項１乃至４のいずれか一項に記載の情報処理装置であって、
前記ユーザ入力が有ると判定した場合には、前記ログアウト制御手段は、前記ワークフローの進捗を示す画面に、ログアウトのためのユーザインターフェースとともに、ユーザ入力が有る旨を表示することを特徴とする情報処理装置。
【請求項７】
請求項１乃至４のいずれか一項に記載の情報処理装置であって、
前記ユーザ入力が有ると判定した場合には、前記ログアウト制御手段は、ログアウトのための操作を無効とすることを特徴とする情報処理装置。
【請求項８】
請求項１乃至４のいずれか一項に記載の情報処理装置であって、
前記ユーザ入力が有ると判定した場合には、前記ログアウト制御手段は、ログアウト操作が行われると、ユーザ入力が有ることを示す警告画面を表示することを特徴とする情報処理装置。
【請求項９】
請求項１乃至４のいずれか一項に記載の情報処理装置であって、
前記ユーザ入力が有ると判定した場合には、前記ログアウト制御手段は、前記ワークフローの進捗を示す画面に、ユーザ入力が有ることを表示し、前記ユーザ入力がないと判定した場合には、前記ログアウト制御手段は、前記ワークフローの進捗を示す画面に、ユーザ入力がないことを表示することを特徴とする情報処理装置。
【請求項１０】
一以上の機能プロバイダによる処理を順に実行するワークフローを定義したワークフロー定義情報を格納する格納手段を有する情報処理装置におけるワークフローの制御方法であって、
前記ワークフロー定義情報で定義したワークフローに含まれた前記機能プロバイダの各々を実行する前に、現在から前記ワークフローの完了までにおけるユーザ入力の有無を、前記ワークフロー定義情報に基づいて判定する判定工程と、
前記判定工程により前記ユーザ入力が有ると判定された場合、ログインしているユーザのログアウトを制限するログアウト制御工程と
を有することを特徴とするワークフローの制御方法。
【請求項１１】
請求項１０に記載のワークフローの制御方法であって、
前記判定工程では、現在から前記ワークフローの完了までに実行される前記機能プロバイダについて、ユーザ入力が必須であるか、または、必要な入力データが整っていない場合には、前記ユーザ入力が有ると判定することを特徴とするワークフローの制御方法。
【請求項１２】
請求項１０または１１に記載のワークフローの制御方法であって、
前記情報処理装置は前記一以上の機能プロバイダを更に有し、
前記判定工程では、前記ワークフロー定義情報に基づいて、現在から前記ワークフローの完了までに実行される前記機能プロバイダの各々に対してユーザ入力の有無を問い合わせ、該問い合わせに対する応答に、ユーザ入力が有ることを示す応答が含まれていた場合に、前記ユーザ入力が有ると判定することを特徴とするワークフローの制御方法。
【請求項１３】
一以上の機能プロバイダによる処理を順に実行するワークフローを定義したワークフロー定義情報を格納する格納手段と、
前記ワークフロー定義情報で定義したワークフローに含まれた前記機能プロバイダの各々を実行する前に、現在から前記ワークフローの完了までにおけるユーザ入力の有無を、前記ワークフロー定義情報に基づいて判定する判定手段と、
前記判定手段により前記ユーザ入力が有ると判定された場合、ログインしているユーザのログアウトを制限するログアウト制御手段と
してコンピュータを機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は情報処理装置及びワークフローの制御方法、プログラムに関し、特に情報処理装置においてワークフローを実行する技術に関する。
【背景技術】
【０００２】
近年、情報処理装置の一例として、アプリケーションソフトウェア（以下、アプリ）を機能拡張プログラムとして追加できる機能を備えた画像形成装置が普及している。アプリは、画像形成装置が備えるスキャナ、プリンタといった機能を利用することで目的の処理を実現している。画像形成装置は、ユーザの目的に応じて複数のアプリをインストールできるように構成されている。また、アプリの中には、ワークフローアプリと呼ばれるものがある（特許文献１参照）。これは、機能の種類ごとに定められたインターフェースを持つ拡張ソフトである機能プロバイダという部品を組み合わせてフローを形成し、特定の処理の実現を図る技術である。このフローを実行することで、様々な機能を組み合わせたアプリの実現を可能にする。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１７−００１３６８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
先行技術のワークフローアプリでは、フロー実行中にユーザにログアウトされ、ログアウト後のフロー処理で、機能プロバイダの処理においてユーザ入力が必要になった場合は、ログアウト後のためにユーザ入力を受けられない。そのため、実行中のフローにおける後続の処理を実行できなくなるという問題があった。
【０００５】
本発明は上記従来例に鑑みてなされたもので、ユーザのログアウトによるワークフローの中断を防止することを目的とする。
【課題を解決するための手段】
【０００６】
上記目的を達成するために本発明は以下の構成を有する。すなわち、本発明の一側面によれば、一以上の機能プロバイダによる処理を順に実行するワークフローを定義したワークフロー定義情報を格納する格納手段と、
前記ワークフロー定義情報で定義したワークフローに含まれた前記機能プロバイダの各々を実行する前に、現在から前記ワークフローの完了までにおけるユーザ入力の有無を、前記ワークフロー定義情報に基づいて判定する判定手段と、
前記判定手段により前記ユーザ入力が有ると判定された場合、ログインしているユーザのログアウトを制限するログアウト制御手段とを有することを特徴とする情報処理装置が提供される。
【発明の効果】
【０００７】
本発明によれば、ユーザのログアウトによる、実行中のワークフローの中断を防ぐことができる。
【図面の簡単な説明】
【０００８】
【図１】実施例１の画像処理システムの構成の一例を示す図。
【図２】実施例１のＭＦＰ１０１のハードウェア構成の一例を示すブロック図。
【図３】実施例１のサーバ１０２のハードウェア構成の一例を示すブロック図。
【図４】実施例１のＭＦＰ１０１のソフトウェア構成の一例を示すブロック図。
【図５Ａ】実施例１のＭＦＰ１０１のメソッド情報テーブルの例。
【図５Ｂ】実施例１のＭＦＰ１０１のメソッド情報テーブルの例。
【図６】実施例１のＭＦＰ１０１の機能プロバイダ情報テーブルの例。
【図７】実施例１のＭＦＰ１０１の機能プロバイダインターフェース定義の例。
【図８Ａ】実施例のＭＦＰ１０１に表示する画面の一例。
【図８Ｂ】実施例のＭＦＰ１０１に表示する画面の一例。
【図８Ｃ】実施例のＭＦＰ１０１に表示する画面の一例。
【図９】実施例１のＭＦＰ１０１のワークフロー実行管理テーブルの例。
【図１０Ａ】実施例１の画像処理システムのワークフロー定義ファイルの例。
【図１０Ｂ】実施例１の画像処理システムのワークフロー定義ファイルの例。
【図１１Ａ】実施例１の画像処理システムの処理の一例を示すシーケンス図。
【図１１Ｂ】実施例１の画像処理システムの処理の一例を示すシーケンス図。
【図１１Ｃ】実施例１の画像処理システムの処理の一例を示すシーケンス図。
【図１１Ｄ】実施例１の画像処理システムの処理の一例を示すシーケンス図。
【図１１Ｅ】実施例２の画像処理システムの処理の一例を示すシーケンス図。
【図１１Ｆ】実施例２の画像処理システムの処理の一例を示すシーケンス図。
【図１１Ｇ】実施例２の画像処理システムの処理の一例を示すシーケンス図。
【図１１Ｈ】実施例２の画像処理システムの処理の一例を示すシーケンス図。
【図１２Ａ】実施例１のＭＦＰ１０１の処理の一例を示すフローチャート。
【図１２Ｂ】実施例１のＭＦＰ１０１の処理の一例を示すフローチャート。
【図１２Ｃ】実施例２のＭＦＰ１０１の処理の一例を示すフローチャート。
【図１２Ｄ】実施例２のＭＦＰ１０１の処理の一例を示すフローチャート。
【図１３】実施例１のＭＦＰ１０１のログアウト制御処理の一例を示すフローチャート。
【図１４】実施例１のＭＦＰ１０１のユーザ入力有無確認処理の一例を示すフローチャート。
【図１５Ａ】実施例１のＭＦＰ１０１の機能プロバイダ実行処理の一例を示すフローチャート。
【図１５Ｂ】実施例１のＭＦＰ１０１の機能プロバイダ実行処理の一例を示すフローチャート。
【図１６】実施例２のＭＦＰ１０１のログアウト処理の一例を示すフローチャート。
【発明を実施するための形態】
【０００９】
以下、本発明を実施するための形態について図面を用いて説明する。なお本例では、ワークフローは、たとえばユーザがＭＦＰにログインした状態であれば、当該ユーザの権限に応じて実行することができる。いったん開始したワークフローは、それを開始させたユーザがログアウトしても続行できるが、ワークフローの途中でユーザによる入力が必要な場合には、例えば権限を有するユーザによる入力でなければ受け付けられない。したがって、ユーザ入力が必要な時点でワークフローを開始したユーザがログアウトしている場合には、たとえば当該ワークフローに関して権限を有するユーザによる入力を待機し、タイムアウトすれば中断される。あるいは権限を有するユーザがログインしているか否かを判定し、ログインしていれば待機するがいなければ中断するなどしてもよい。権限を有するユーザとは例えば当該ワークフローを開始したユーザや当該ワークフローの実行を許されているユーザ、あるいは管理者権限を持つユーザなどであってよく、それらのいずれかであってもよい。
【００１０】
（実施例１）
●システム構成
図１は、本実施形態のワークフローを実現する画像処理システムのシステム構成の一例を示す図である。本システムは、ＬＡＮ１１０を介して接続されるＭＦＰ１０１と、ＷＡＮ１２０を介して接続されるサーバ１０２から構成される。ＬＡＮ１１０上の装置とＷＡＮ１２０上の装置はお互いのネットワークを通して、相互に通信可能である。図１は典型的なネットワーク構成の例であり、各装置がＬＡＮ１１０またはＷＡＮ１２０のどちらにあっても構わない。ＭＦＰ１０１は、スキャナ、プリンタを有する画像形成装置である。加えて、装置上で動作する拡張ソフトを追加、実行させるためのソフトウェアプラットホームを持つ。ＭＦＰ１０１は、さらに公衆回線網１５０とつながりファクス送受信が可能である。サーバ１０２は、ＭＦＰ１０１と連携して各種処理を行うサーバである。例えば、ＭＦＰ１０１から、様々なプロトコル、例えばＳＭＢ（Ｓｅｒｖｅｒ  Ｍｅｓｓａｇｅ  Ｂｌｏｃｋの略称）で文書データを受信するファイルサーバであったりする。サーバは一台とは限らず、目的に応じて複数のサーバが存在してもよい。
【００１１】
図２（Ａ）は、本実施形態の画像形成装置であるＭＦＰ１０１の構成を示すブロック図である。画像形成装置は、画像形成機能や画像読み取り機能を持つ情報処理装置であり、情報処理装置と呼ぶこともある。ＣＰＵ２１１を含む制御部２１０は、ＭＦＰ１０１全体の動作を制御する。ＣＰＵ２１１は、ＲＯＭ２１２やＨＤＤ２１４に記憶された制御プログラムを読み出して読取制御や送信制御などの各種制御処理を実行する。ＲＡＭ２１３は、ＣＰＵ２１１の主メモリ、ワークエリア等の一時記憶領域として用いられる。ＨＤＤ２１４は、画像データや各種ファイル、インストールされた拡張ソフトを含む各種プログラムを記憶する。操作部Ｉ／Ｆ２１５は、操作部２２０と制御部２１０とを接続する。操作部２２０には、タッチパネル機能を有し、ログアウトボタン等を表示してユーザインターフェースを提供する液晶表示部やキーボードなどが備えられている。操作部２２０は後述の図２（Ｂ）で説明する。プリンタＩ／Ｆ２１６は、プリンタ２２１と制御部２１０とを接続する。プリンタ２２１で印刷すべき画像データはプリンタＩ／Ｆ２１６を介して制御部２１０からプリンタ２２１に転送され、プリンタ２２１において記録媒体上に印刷される。スキャナＩ／Ｆ２１７は、スキャナ２２２と制御部２１０とを接続する。スキャナ２２２は、原稿上の画像を読み取って画像データを生成し、スキャナＩ／Ｆ２１７を介して制御部２１０に入力する。またスキャナＩ／Ｆ２１７には、不図示の画像解析ボードが接続され、画像解析ボードにより入力された画像データにＯＣＲ処理を行ったりする。ネットワークＩ／Ｆ２１８は、制御部２１０（ＭＦＰ１０１）をＬＡＮ１１０に接続する。ネットワークＩ／Ｆ２１８は、ＬＡＮ１１０上またはＷＡＮ１２０上の他の装置との間で各種情報を送受信する。モデム２１９は、制御部２１０（ＭＦＰ１０１）を公衆回線網１３０に接続する。モデム２１９は、公衆回線網１３０上の他の装置との間でファクスを送受信する。
【００１２】
図２（Ｂ）ＭＦＰ１０１の操作部２２０の構成を示す外観図である。操作部２２０は、タッチパネルシートが貼られているＬＣＤ表示部２５１を有する。このＬＣＤ表示部２５１には、後述の機能プロバイダやワークフロー実行部、ログアウト制御部が表示する各種画面が表示される。また表示されたキーが押されると押された位置を示す情報を操作部Ｉ／Ｆ２１５を介してＣＰＵ２１１に伝える。また操作部２２０は、数値を入力するための数値キー２５２、処理の開始を指示するためのスタートキー２５３、稼働中の動作を止めるためのストップキー２５４、ログアウトを指示するためのＩＤキー２５５を有する。
【００１３】
図３は、サーバ１０２の構成を示すブロック図である。ＣＰＵ３１１を含む制御部３１０は、サーバ１０２全体の動作を制御する。ＣＰＵ３１１は、ＲＯＭ３１２やＨＤＤ３１４に記憶された制御プログラムを読み出して各種制御処理を実行する。ＲＡＭ３１３は、ＣＰＵ３１１の主メモリ、ワークエリア等の一時記憶領域として用いられる。ＨＤＤ３１４は、各種のプログラムやデータを記憶する。表示部Ｉ／Ｆ３１５は、表示部３１８と制御部３１０を接続する。キーボードＩ／Ｆ３１６は、キーボード３１９と制御部３１０を接続する。ＣＰＵ３１１は、キーボード３１９を介したユーザからの指示を認識し、認識した指示に応じて表示部３１８に表示する画面を遷移させる。ネットワークＩ／Ｆ３１７は、制御部３１０（サーバ１０２）をＷＡＮ１２０に接続する。ネットワークＩ／Ｆ３１７は、ＬＡＮ１１０上またはＷＡＮ１２０上の他の装置との間で各種情報を送受信する。
【００１４】
●ソフトウェア構成
図４は、ＭＦＰ１０１における本実施例に関わるソフトウェア構成図である。ＭＦＰ１０１のＨＤＤ２１４に記憶されているプログラム（ソフトウェア）を、ＣＰＵ２１１がＲＡＭ２１３に読み出し、解析、実行することで、図１１Ａ乃至図１６のフローチャートの処理が実行される。拡張ソフト管理部４１０は、ＭＦＰ１０１上で拡張ソフトを動作させるためのソフトウェアプラットホームである。図４では、拡張ソフトとして４１１〜４１６の６つの機能プロバイダがＭＦＰ１０１にインストールされている。機能プロバイダは、拡張ソフトの一種であるがアプリではない。アプリは単体で入力から出力までの一連の完結した処理を備えている。一方、単体の機能プロバイダは入力、出力といった特定の機能に特化したものであり、入力から出力までの一連の完結した処理を行うためには、複数の機能プロバイダを組み合わせる必要がある。例えば、「スキャンしてＯＣＲ処理し、送信する」という機能をユーザに提供する場合、アプリであれば「スキャン」「ＯＣＲ処理」「送信」の３つの機能を一つのアプリで実現する。一方、機能プロバイダの場合、「スキャン機能を実現する機能プロバイダ」「ＯＣＲ機能を実現する機能プロバイダ」「送信機能を実現する機能プロバイダ」の３つの機能プロバイダが必要になる。それら３つの機能プロバイダを一連の処理として実行するために、後述のワークフロー処理部４３０が必要になる。
【００１５】
◆機能プロバイダ
ユーザプロパティ入力プロバイダ４１１はユーザプロパティを入力する機能を提供する機能プロバイダである。プロパティ入力プロバイダは、機能タイプが「プロパティ入力」のプロパティ入力プロバイダインターフェースを実現する。ユーザプロパティ入力プロバイダ４１１はユーザから文字入力を受け付ける機能を持つ。標準スキャンプロバイダ４１２は、スキャン機能を提供する機能プロバイダである。スキャンプロバイダは機能タイプが「スキャン」のスキャンプロバイダインターフェースを実現する。組込ＯＣＲプロバイダ４１３はＯＣＲ機能を提供する機能プロバイダである。ＯＣＲプロバイダは機能タイプが「ＯＣＲ」のＯＣＲプロバイダインターフェースを実現する。組込ＯＣＲプロバイダ４１３はＭＦＰ１０１上で文字認識処理を行うことでＯＣＲ機能を提供する。メタデータ入力プロバイダ４１４はデータ入力してファイルを作成する機能を提供する機能プロバイダである。データ入力プロバイダは機能タイプが「データ入力」のデータ入力プロバイダインターフェースを実現する。メタデータ入力プロバイダ４１４はテンプレートに文字列を当てはめてファイル作成する機能を持つ。ＦＡＸ（ファクシミリ）送信プロバイダ４１５とＳＭＢ（サーバメッセージブロック）送信プロバイダ４１６はファイル送信機能を提供する機能プロバイダである。ファイル送信プロバイダは機能タイプが「ファイル送信」のファイル送信プロバイダインターフェースを実現する。ＦＡＸ送信プロバイダ４１５はモデム２１９を通じて公衆回線網１３０に接続されている外部のファクスへファイル送信する機能を提供する。一方、ＳＭＢ送信プロバイダ４１６はネットワークＩ／Ｆ２１８を通じてＳＭＢプロトコルのファイルサーバ（例えばサーバ１０２）にファイル送信する機能を提供する。
【００１６】
以上で説明した機能ブロック４１１〜４１６の各々は、後述のメソッド情報テーブル４１７を用いて、機能プロバイダの持つ各機能（以下メソッド）に入力値が与えられた場合にユーザ入力が必要か否かを判断するための機能を有する。メソッド情報テーブル４１７は機能プロバイダが持つメソッドの情報を保持しているテーブルで詳細は図５で説明する。なお、図４ではユーザプロパティ入力プロバイダ４１１のみメソッド情報テーブル４１７が図示されているが、その他の機能プロバイダもそれぞれメソッド情報テーブル４１７を保持している。また以上で説明した４１１〜４１６の６つの機能プロバイダは一例であり、ＭＦＰ１０１には拡張ソフトとして様々な機能プロバイダの追加・削除が可能である。機能プロバイダ管理部４２０はＭＦＰ１０１にインストールされている機能プロバイダを管理するソフトウェアである。
【００１７】
機能プロバイダ管理部４２０は、機能プロバイダ登録部４２１、機能プロバイダ検索部４２２、機能プロバイダ情報テーブル４２３、機能プロバイダインターフェース定義４２４を持つ。機能プロバイダ登録部４２１は、各機能プロバイダからの依頼で、機能プロバイダ情報テーブル４２３に各機能プロバイダの機能タイプなどの情報を登録する。機能プロバイダ検索部４２２は、後述のワークフロー処理部４３０から機能プロバイダの検索条件を受け取り、機能プロバイダ情報テーブル４２３を元に条件に一致する機能プロバイダを特定する。機能プロバイダ検索部４２２は、検索条件に一致する機能プロバイダが複数存在した場合は、最も優先順位の高い機能プロバイダを検索結果とする。機能プロバイダインターフェース定義４２４は、機能プロバイダインターフェースを定義している。
【００１８】
◆ワークフロー処理部
ワークフロー処理部４３０は、後述のワークフロー定義ファイル（ワークフロー定義情報とも呼ぶ）４４０に従って一以上の、たとえば複数の機能プロバイダを組み合わせて一連の処理として実行する。本発明では、ワークフローとは、複数の機能プロバイダを組み合わせた一連の処理を差すものとする。ワークフロー定義ファイル４４０は、ワークフロー処理部４３０が呼び出す機能プロバイダの検索条件や、呼び出し順序、呼び出した機能プロバイダに適用する設定値など、機能プロバイダの呼び出しに関する情報を定義する。ワークフロー定義ファイル４４０は、たとえばＨＤＤ２１４やＲＡＭ２１３などに格納される。なお、図４ではワークフロー定義ファイルを例として１つ定義しているが、１つに限定するものではなく、ＭＦＰ１０１上に複数のワークフロー定義ファイルが存在してもよい。ワークフロー実行管理テーブル４５０は、ワークフロー処理部４３０がワークフロー実行状態に関する情報を管理するテーブルである。ログアウト制御部４６０は、ワークフロー処理部からの指示を受けて、ワークフロー実行管理テーブルのログアウト可否状態を確認し、ユーザからのログアウト指示を受けた際のログアウト処理や、ログアウト可否の状態を表示したりする機能を有する。
【００１９】
●各種テーブル
図５Ａ、図５Ｂに、メソッド情報テーブル４１７の一例を示す。メソッド情報テーブル４１７は、機能プロバイダの識別情報（例えば番号であり、「Ｎｏ」と示す）やメソッド、ユーザ入力を行うか否かの入力画面チェックの情報など、機能プロバイダの持つメソッドに関する情報を有する。また、入力が必須である必須項目チェック、たとえばパラメータの組み合わせの可または不可などを示す組み合わせチェック、チェック対象のパラメータ値などを示す値チェックなど、入力値によってユーザ入力を行うか否かが変わる場合にチェックする項目の情報も有する。なお図５Ａ、図５Ｂについては、この説明では枝番である記号Ａ，Ｂを省略し、図５Ａ、図５Ｂの区別なく図５と称することとする。図５（Ａ）はユーザプロパティ入力プロバイダ４１１、図５（Ｂ）は標準スキャンプロバイダ４１２、図５（Ｃ）は組込ＯＣＲプロバイダ４１３、図５（Ｄ）メタデータ入力プロバイダ４１４が各々保持しているメソッド情報を表す。また図５（Ｅ）はＦＡＸ送信プロバイダ４１５、図５（Ｆ）はＳＭＢ送信プロバイダが各々保持しているメソッド情報を表す。機能プロバイダが異なっていてもメソッド情報テーブル４１７の項目は共通である。
【００２０】
図６に、機能プロバイダ情報テーブル４２３の一例を示す。機能プロバイダ情報テーブル４２３は、機能プロバイダを一意に特定する機能プロバイダＩＤ、名称、機能タイプ、機能プロバイダインターフェースなど、機能プロバイダに関する情報を保持する。
【００２１】
図７は、本実施例における機能プロバイダインターフェース定義の例である。本実施例では機能プロバイダインターフェースはプログラムのソースコード形式で表現されているが、他の形式であってもよい。７０１はプロパティ入力プロバイダインターフェースの定義で、「ｄｏＩｎｐｕｔ」「ｉｓＵｓｅｒＩｎｐｕｔ」の２つのインターフェースを定義している。プロパティ入力プロバイダはインターフェース定義７０１で定義している２つのインターフェースを必ず備えている。「ｄｏＩｎｐｕｔ」はプロパティ入力を実行するためのインターフェースであり、受け付けた入力内容をＳｔｒｉｎｇの配列で返す。「ｉｓＵｓｅｒＩｎｐｕｔ」はメソッド名、入力値、パラメータを受信し、ユーザ入力するか否かをｂｏｏｌｅａｎ（真偽値）で返す。同様に、７０２はスキャンプロバイダ、７０３はＯＣＲプロバイダ、７０４はデータ入力プロバイダ、７０５はファイル送信プロバイダのインターフェースの定義である。このように、機能プロバイダインターフェース定義では、各機能プロバイダが備えるインターフェース（名称、入力、出力）を定義している。いずれの機能プロバイダについても「ｉｓＵｓｅｒＩｎｐｕｔ」インターフェースはきょうつうに備えられている。
【００２２】
図８Ａ〜図８Ｃは、本実施例における機能プロバイダやログアウト制御部が操作部２２０に表示する画面の例である。図８Ａ〜図８Ｃについても、この説明では記号Ａ，Ｂ，Ｃを省略し、図８と称することとする。図８（Ａ）はユーザプロパティ入力画面８００の一例を表す。メッセージ８０１、入力欄８０２、ＯＫボタン８０３、中止ボタン８０４、ログアウトボタン８０５を有する。図８（Ｂ）はスキャン設定画面８１０の一例を示す。メッセージ８１１、スキャン設定項目８１２、ＯＫボタン８１３、中止ボタン８１４、ログアウトボタン８１５を有する。図８（Ｃ）はスキャン実行画面８２０の一例を示す。メッセージ８２１、中止ボタン８２２、ログアウトボタン８２３を有する。図８（Ｄ）はＯＣＲ実行画面８３０の一例を示す。メッセージ８３１、中止ボタン８３２、ログアウトボタン８３３を有する。図８（Ｅ）はＦＡＸ送信エラー画面８４０の一例を示す。メッセージ８４１、入力欄８４２、ＯＫボタン８４３、中止ボタン８４４、ログアウトボタン８４５を有する。図８（Ｆ）はＦＡＸ送信画面８５０の一例を示す。メッセージ８５１、中止ボタン８５２、ログアウトボタン８５３を有する。図８（Ｇ）はＳＭＢ送信画面８６０の一例を示す。メッセージ８６１、中止ボタン８６２、ログアウトボタン８６３を有する。なお図８の画面は一例であり、上記の項目以外の画面項目が含まれていてもよい。なお図８（Ｈ）、（Ｉ）については他の実施形態で参照する図なのでここでは説明を省略する。これらの画面はたとえばワークフローの進捗を示す画面ともいえる。
【００２３】
図９に、ワークフロー実行管理テーブル４５０の一例を示す。ワークフロー実行管理テーブル４５０は、実行中または実行後のフローを一意に特定する実行ＩＤ、実行したワークフローを表すワークフローＩＤを持つ。またワークフロー実行管理テーブル４５０は、実行中の処理を表す実行中機能プロバイダＮｏと実行中アクションＮｏ（番号）、ログアウト可否、実行結果データなどフロー実行に関する情報を保持する。
【００２４】
●ワークフロー定義ファイル
図１０Ａ，図１０Ｂは、本実施例におけるワークフロー定義ファイルの具体的な記述例である。なお図１０Ａ，図１０Ｂは本来一つのファイルを分割して表示する図であり、図１０と総称する。本実施例ではワークフロー定義ファイルはＸＭＬ形式のファイルとして表現されているが、他の形式のファイルであってもよい。図１０のワークフローは、（１）ファクシミリ番号の入力を受け付け、（２）原稿をスキャンして画像データを取得し、（３）その画像データを対象として光学的文字認識（ＯＣＲ）を行い、（４）認識された文字をテンプレートに当てはめてファイルを作成し、（５）スキャンした画像データを入力された番号へ送信し、（６）スキャンした画像データファイルと、ＯＣＲで認識した文字から作成したファイルとを、指定されたホストへ送信する、という手順を定義したものである。もちろんこれは一例であって、このようにしてメソッドやパラメータを所定の形式で指定していくことで、ひとつのワークフローを作成できる。
【００２５】
Ｗｏｒｋｆｌｏｗタグ１０００は、以下の記述がワークフローの定義であることを示す。ＦＰタグ１００１は、Ｗｏｒｋｆｌｏｗタグ１０００の子要素で、ワークフローで実行する機能プロバイダに関する情報を定義する。ＦＰタグ１００１のｎｏ属性（番号属性）は、ワークフローにおける機能プロバイダ実行順を定義しており、「ｎｏ＝"１"」は最初に実行する機能プロバイダであることを示す。ＦＰタグ１００１のｉｄ属性は、実行する機能プロバイダのＩＤを定義しており、「ｉｄ＝"ＩＮＰＵＴ＿ＵＳＥＲ＿ＰＲＯＰＥＲＴＹ"」はユーザプロパティ入力プロバイダであることを示す。Ａｃｔｉｏｎタグ１００２は、機能プロバイダのメソッド呼び出しについての情報を定義する。Ａｃｔｉｏｎタグのｎｏ属性とｍｅｔｈｏｄ属性は、ＦＰタグの機能プロバイダ中の実行順と呼び出すインターフェースを定義する。Ａｃｔｉｏｎタグ１００２は、ユーザプロパティ入力プロバイダ実行において「ｄｏＩｎｐｕｔ」を１番目に呼び出す旨を定義する。Ｐａｒａｍｅｔｅｒタグ１００３は、Ａｃｔｉｏｎタグ１００２で定義されているインターフェース（ｄｏＩｎｐｕｔ）を呼び出す際に渡す設定値を定める。Ｏｕｔｐｕｔタグ１００４は、「ｄｏＩｎｐｕｔ」の出力に関する定義であり、ｔｙｐｅ属性で出力形式が「Ｓｔｒｉｎｇ」である旨と、ｉｄ属性で出力データを一意に特定するＩＤが「ｆｏｏ」である旨を定義する。ＦＰタグ１００５は、２番目に実行する機能プロバイダがＳＣＡＮプロバイダであることを定義する。Ａｃｔｉｏｎタグ１００６で２番目に実行する機能プロバイダのメソッドが「ｄｏＳｃａｎＷｉｔｈＳｈｏｗＳｅｔｔｉｎｇＵＩ」であることを表す。Ｐａｒａｍｅｔｅｒタグ１００７で呼出す際のパラメータを定めており、Ｏｕｔｐｕｔタグ１００８で出力データが「Ｄｏｃｕｍｅｎｔ」形式の「ｂａｒ」であることを定める。同様に、ＦＰタグ１００９乃至Ｏｕｔｐｕｔタグ１０１３では、３番目に呼び出す機能プロバイダがＯＣＲプロバイダであることや入力、パラメータ、出力を定める。同様に、ＦＰタグ１０１４乃至Ｏｕｔｐｕｔタグ１０１８では、４番目に呼び出す機能プロバイダがメタデータ入力プロバイダであり、入力、パラメータ、出力を定める。同様に、ＦＰタグ１０１９乃至Ｏｕｔｐｕｔタグ１０２３では、５番目に呼び出す機能プロバイダがＦＡＸ送信プロバイダ、６番目に呼び出す機能プロバイダがＳＭＢ送信プロバイダであり、入力、パラメータ、出力を定める。
【００２６】
●ワークフローの実行
図１１Ａ〜図１１Ｄは、本実施例におけるＭＦＰ１０１上のワークフロー実行の流れを示したシーケンス図である。図１１Ａ〜図１１Ｄは一連の手順を示しているため、説明においては独に区別しない。ワークフローは例えばＣＰＵ２１１が図１０に示したワークフロー定義ファイルを解釈して順次実行する。ソフトウェアの観点では、ワークフロー処理部４３０と各機能プロバイダにより実行される。
【００２７】
ステップＳ１１０１で、ユーザからのワークフロー実行指示をワークフロー処理部４３０が受け取る。実行指示はたとえば操作部２２０のソフトウェアスイッチやハードウェアスイッチにより入力されてよい。ステップＳ１１０２で、ワークフロー処理部４３０が実行指示に対するワークフロー定義ファイル４４０を読み込む。ここでは、図１０で示したワークフロー定義ファイル４４０のように、まず機能プロバイダＩＤやタイプが「ＩＮＰＵＴ＿ＵＳＥＲ＿ＰＲＯＰＥＲＴＹ」「ＳＣＡＮ」「ＯＣＲ」の機能プロバイダを順に実行するように定義されているとする。また続けて、機能プロバイダＩＤやタイプが「ＣＲＥＡＴＥ＿ＭＥＴＡ＿ＤＡＴＡ」の機能プロバイダを順に実行するように定義されているとする。その後機能プロバイダＩＤが「ＳＥＮＤ＿ＦＡＸ」「ＳＥＮＤ＿ＳＭＢ」の機能プロバイダを順に実行するように定義されているとする。また、ここでワークフロー処理部４３０は、ワークフロー定義ファイル４４０からメソッド、入力、パラメータ、出力の情報も読み込む。ステップＳ１１０３で、ワークフロー処理部４３０は、機能プロバイダ管理部４２０に、ワークフロー定義ファイル４４０に記載されている機能プロバイダの検索を指示し、ステップＳ１１０４で検索結果を受け取る。ステップＳ１１０５で、ワークフロー処理部１１０５はユーザから指示されたフローを実行する際の情報をワークフロー実行管理テーブル４５０にレコードとして追加する。ここでは新たなレコードとして図９に示したようなレコードを追加し、実行ＩＤやワークフローＩＤなどを記録しておいてよい。
【００２８】
ステップＳ１１０６で、ワークフロー処理部４３０は、前記ステップＳ１１０２で読み込んだワークフロー定義ファイル１１０２の１番目の機能プロバイダであるユーザプロパティ入力プロバイダ４１１にユーザ入力を行うか否かを確認する。すなわち、実行する予定のメソッド名、現在保持している入力、パラメータの情報をユーザプロパティ入力プロバイダ４１１に送信し、ユーザ入力を行うか否かを確認する（あるいは問い合わせる、以下同様）。ステップＳ１１０７で、プロパティ入力プロバイダ４１１は、受信した入力値とパラメータ、保持しているメソッド情報テーブル４１７を元に、メソッド実行時にユーザ入力を行うか否かを確認する（あるいは判定する、以下同様）。そしてステップＳ１１０８で確認結果（あるいは判定結果、以下同様）をワークフロー実行部４３０に返却する（あるいは応答する、以下同様）。同様にステップＳ１１０９、Ｓ１１１２、Ｓ１１１５で、ワークフロー処理部４３０は標準スキャンプロバイダ４１２、組込ＯＣＲプロバイダ４１３、メタデータ入力プロバイダ４１４に、実行する予定のメソッド名、現在保持している入力、パラメータの情報を送信して、各機能プロバイダがユーザ入力を行うか否かを問い合わせる。ステップＳ１１１０、Ｓ１１１３、Ｓ１１１６で、標準スキャンプロバイダ４１２、組込ＯＣＲプロバイダ４１３、メタデータ入力プロバイダ４１４は、受信した入力値とパラメータ、メソッド情報テーブル４１７を元に、ユーザ入力を行うか否かを確認する。そしてステップＳ１１１１、Ｓ１１１４、Ｓ１１１７で確認結果をワークフロー実行部４３０に返却する。同様にステップＳ１１１８、Ｓ１１２１で、ワークフロー処理部４３０はＦＡＸ送信プロバイダ４１５、ＳＭＢ送信プロバイダ４１６に、実行する予定のメソッド名、現在保持している入力、パラメータの情報を送信し、ユーザ入力を行うか否かを問い合わせる。ステップＳ１１１９、Ｓ１１２２で、ＦＡＸ送信プロバイダ４１５、ＳＭＢ送信プロバイダ４１６は受信した入力値とパラメータ、メソッド情報テーブル４１７を元に、ユーザ入力を行うか否かを確認する。そしてステップＳ１１２０、Ｓ１１２３で確認結果をワークフロー実行部４３０に返却する。ステップＳ１１２４で、ワークフロー処理部４３０は前記ステップＳ１１０８乃至Ｓ１１２３で各機能プロバイダから受信したユーザ入力有無の情報のうち１つ以上ユーザ入力が有るとの応答が含まれていた場合は、ワークフロー実行管理テーブル４５０にログアウト不可を保存する。この場合たとえば、図９の「ログアウト可否」欄にＮを記録する。そうでない場合はログアウト可をワークフロー実行管理テーブル４５０に保存する。この場合たとえば、図９の「ログアウト可否」欄にＹを記録する。そしてステップＳ１１２５で、ワークフロー処理部４３０は、ログアウト制御部４６０にログアウト制御を指示し、ステップＳ１１２６で、ログアウト処理部４６０は、ワークフロー実行テーブル４５０の情報を元に、ログアウト制御を行う。すなわちログアウト操作が行われてもログアウト不可ならログアウトせず、ログアウト可ならログアウトする。ログアウト不可ならログアウト操作ができないよう制御する。そのために例えばログアウト制御部４６０は、ログアウトが不可の場合には、ログアウトするためのソフトウェアボタンを非表示やグレー表示にし、あるいはハードウェアキーを無視してよい。
【００２９】
ステップＳ１１２７で、ワークフロー処理部４３０は、ユーザプロパティ入力プロバイダ４１１に「ｄｏＩｎｐｕｔ」メソッド実行を指示し、ステップＳ１１２８でユーザプロパティ入力プロバイダ４１１が「ｄｏＩｎｐｕｔ」メソッドを実行する。そしてステップＳ１１２９で、ユーザプロパティ入力プロバイダ４１１が「ｄｏＩｎｐｕｔ」メソッド実行結果をワークフロー処理部４３０に返却する。ステップＳ１１２８で、ワークフロー処理部４３０は、前記ステップＳ１１２９で受信したユーザプロパティ入力プロバイダ４１１実行結果をワークフロー実行管理テーブル４５０の実行結果データ欄に保存しテーブル４５０を更新する。
【００３０】
ステップＳ１１３１乃至ステップＳ１１４８で、ワークフロー処理部４３０は、既に実行したユーザプロパティ入力プロバイダ４１１以外の各機能プロバイダに、既に実行した機能プロバイダ実行結果とパラメータを送信してユーザ入力有無を確認する。各機能プロバイダは受信した入力値を元にユーザ入力の有無を判断し、ワークフロー処理部４３０にユーザ入力有無を返信する。そしてワークフロー処理部４３０は受信したユーザ入力有無からログアウト可否を判断し、ワークフロー実行管理テーブル４５０の「ログアウト可否」欄に保存して、ログアウト処理部４６０にログアウト処理を指示する。ログアウト処理部４６０は、ワークフロー実行管理テーブル４５０の情報を元に、ログアウト制御処理を行う。例えば、ログアウト操作が行われてもログアウト不可ならログアウトせず、ログアウト可ならログアウトする。
【００３１】
ステップＳ１１４９で、ワークフロー処理部４３０は、標準スキャンプロバイダ４１２に「ｄｏＳｃａｎＷｉｔｈＳｅｔｔｉｎｇＵＩ」メソッド実行を指示する。ステップＳ１１５０で標準スキャンプロバイダ４１２が「ｄｏＳｃａｎＷｉｔｈＳｅｔｔｉｎｇＵＩ」メソッドを実行する。そしてステップＳ１１５１で、標準スキャンプロバイダ４１２が「ｄｏＳｃａｎＷｉｔｈＳｅｔｔｉｎｇＵＩ」メソッド実行結果をワークフロー処理部４３０に返却する。ステップＳ１１５２で、ワークフロー処理部４３０は、前記ステップＳ１１５１で受信した標準スキャンプロバイダ４１２実行結果をワークフロー実行管理テーブル４５０に保存しテーブル４５０を更新する。
【００３２】
ステップＳ１１５３乃至ステップＳ１１６７では、既に実行したユーザプロパティ入力プロバイダ４１１、標準スキャンプロバイダ４１２以外の機能プロバイダにユーザ入力の有無の問い合わせを行い、確認結果を保存して、ログアウト制御を行なう。処理はステップＳ１１３４乃至ステップＳ１１４８と同様のため説明は省略する。
【００３３】
ステップＳ１１６８で、ワークフロー処理部４３０は、組込ＯＣＲプロバイダ４１３に「ｄｏＯＣＲ」メソッド実行を指示する。ステップＳ１１６９で組込ＯＣＲプロバイダ４１３が「ｄｏＯＣＲ」メソッドを実行する。そしてステップＳ１１７０で、標準スキャンプロバイダ４１２が「ｄｏＳｃａｎＷｉｔｈＳｅｔｔｉｎｇＵＩ」メソッド実行結果をワークフロー処理部４３０に返却する。ステップＳ１１７１で、ワークフロー処理部４３０は、前記ステップＳ１１７０で受信した組込ＯＣＲプロバイダ４１３実行結果をワークフロー実行管理テーブル４５０に保存しテーブル４５０を更新する。ステップＳ１１７２乃至ステップＳ１１８３では、既に実行したユーザプロパティ入力プロバイダ４１１、標準スキャンプロバイダ４１２、組込ＯＣＲプロバイダ４１３以外の機能プロバイダにユーザ入力の有無の確認を行う。そして確認結果を保存して、ログアウト制御を行なう。処理はステップＳ１１３７乃至ステップＳ１１４８と同様のため説明は省略する。
【００３４】
ステップＳ１１８４で、ワークフロー処理部４３０は、メタデータ入力プロバイダ４１４に「ｃｒｅａｔｅＤａｔａ」メソッド実行を指示する。ステップＳ１１８５でメタデータ入力プロバイダ４１４が「ｃｒｅａｔｅＤａｔａ」メソッドを実行する。そしてステップＳ１１８６で、メタデータ入力プロバイダ４１４が「ｃｒｅａｔｅＤａｔａ」メソッド実行結果をワークフロー処理部４３０に返却する。ステップＳ１１８７で、ワークフロー処理部４３０は、前記ステップＳ１１８６で受信したメタデータ入力プロバイダ４１４実行結果をワークフロー実行管理テーブル４５０に保存しテーブル４５０を更新する。
【００３５】
ステップＳ１１８８乃至ステップＳ１１９６では、既に実行した機能プロバイダ以外の機能プロバイダ、すなわちＦＡＸ送信プロバイダ４１５、ＳＭＢ送信プロバイダ４１６にユーザ入力の有無の問い合わせを行う。そして確認結果を保存してログアウト制御を行なう。処理はステップＳ１１４０乃至ステップＳ１１４８と同様のため説明は省略する。ステップＳ１１９７で、ワークフロー処理部４３０は、ＦＡＸ送信プロバイダ４１５に「ｄｏＳｅｎｄ」メソッド実行を指示する。ステップＳ１１９８でＦＡＸ送信プロバイダ４１５が「ｄｏＳｅｎｄ」メソッドを実行する。そしてステップＳ１１９９で、ＦＡＸ送信プロバイダ４１５が「ｄｏＳｅｎｄ」メソッド実行結果をワークフロー処理部４３０に返却する。ステップＳ１１１００で、ワークフロー処理部４３０は、前記ステップＳ１１９９で受信したＦＡＸ送信プロバイダ４１５実行結果をワークフロー実行管理テーブル４５０に保存しテーブル４５０を更新する。
【００３６】
ステップＳ１１１０１乃至ステップＳ１１１０６では、既に実行した機能プロバイダ以外の機能プロバイダ、すなわちＳＭＢ送信プロバイダ４１６にユーザ入力の有無の問い合わせを行う。そして確認結果を保存して、ログアウト制御を行なう。処理はステップＳ１１４３乃至ステップＳ１１４８と同様のため説明は省略する。ステップＳ１１１０７で、ワークフロー処理部４３０は、ＳＭＢ送信プロバイダ４１６に「ｄｏＳｅｎｄ」メソッド実行を指示する。ステップＳ１１１０８でＳＭＢ送信プロバイダ４１６が「ｄｏＳｅｎｄ」メソッドを実行する。そしてステップＳ１１１０９で、ＳＭＢ送信プロバイダ４１６が「ｄｏＳｅｎｄ」メソッド実行結果をワークフロー処理部４３０に返却する。ステップＳ１１１１０で、ワークフロー処理部４３０は、前記ステップＳ１１１０９で受信したＳＭＢ送信プロバイダ４１６実行結果をワークフロー実行管理テーブル４５０に保存しテーブル４５０を更新する。
【００３７】
ステップＳ１１１１１でワークフロー処理部４３０は、ワークフロー定義４４０の全ステップ実行終了後、ログアウト可をワークフロー実行管理テーブル４５０に保存する。ステップＳ１１１１２で、ワークフロー処理部４３０はログアウト制御部４６０に対してログアウト可に対応したログアウト制御を指示する。ステップＳ１１１１３で、指示を受けたログアウト処理部４６０はワークフロー実行テーブル４５０の情報を元にログアウト制御を行う。ステップＳ１１１１４で、ワークフロー処理部４３０は実行結果を操作部２２０に表示する。そして処理は終了する。
【００３８】
●ＭＦＰによるワークフロー実行フローチャート
図１２Ａ及び図１２Ｂは、図１１Ａ〜図１１Ｄのシーケンス図におけるＭＦＰ１０１のワークフロー実行処理を説明するためのフローチャートである。図１２Ａ，図１２Ｂも一連の手順を示しているので、以下の説明においてはまとめて図１２Ａと呼ぶことがある。ＭＦＰ１０１のＨＤＤ２１４に記憶されているプログラムを、ＣＰＵ２１１がＲＡＭ２１３に読み出し、解析、実行することで、図１２Ａ、図１２Ｂのフローチャートの各ステップが実行される。
【００３９】
ステップＳ１２０１で、まずワークフロー処理部４３０はユーザからワークフロー実行指示を受け取る。ステップＳ１２０２で、ワークフロー処理部４３０は実行指示に対応するワークフロー定義ファイル４４０を読み込む。ステップＳ１２０３で、ワークフロー処理部４３０はワークフロー定義ファイル４４０からＦＰタグの機能プロバイダの定義を実行順に１つ取り出す。ここで実行順とはＦＰタグのｎｏ要素の数字の若い順を意味する。ステップＳ１２０４で、ワークフロー処理部４３０は、次に実行すべき機能プロバイダがあればステップＳ１２０５へ進み、次に実行すべき機能プロバイダがなければ（最後の機能プロバイダまで取得し終えたら）、処理はステップＳ１２０８に進む。ステップＳ１２０５で、ワークフロー処理部４３０はＦＰタグから機能プロバイダの検索条件を取得し、機能プロバイダ情報テーブル４２３から機能プロバイダ情報を検索する。ステップＳ１２０６で、ワークフロー処理部４３０は機能プロバイダ検索結果を受け取り、検索条件に一致する機能プロバイダがあるか否かをチェックする。ステップＳ１２０６で、ワークフロー処理部４３０は検索結果に一致する機能プロバイダがあればステップＳ１２０３へ処理を進める。ワークフロー処理部４３０は、検索に一致する機能プロバイダがなければステップＳ１２０７に処理を進める。ステップＳ１２０７で、ワークフロー処理部４３０は、例えば必要な機能プロバイダがない旨のエラーを通知してワークフロー実行処理を終了する。一方ステップＳ１２０８で、ワークフロー処理部４３０は今回実行するワークフローの情報をワークフロー実行管理テーブル４５０にレコードとして追加する。今回は図９の実行ＩＤが「Ｒ０００２」のレコードとし、ワークフローＩＤは前記ステップＳ１２０２で取得したワークフローＩＤ「ＷＦ０００１」、ログアウト可否はログアウト不可の「Ｎ」、実行結果データは空欄とする。ステップＳ１２０９で、ワークフロー処理部４３０は前記ステップＳ１２０７で追加したレコードの実行中機能プロバイダを「１」、実行中アクションＮｏを「１」にリセットする（あるいは初期設定する）。ステップＳ１２１０で、ワークフロー処理部４３０はワークフロー定義ファイル４４０を再度読み込む。
【００４０】
ステップＳ１２１１で、ワークフロー処理部４３０はワークフロー実行テーブル４５０に保存されている現在実行中の機能プロバイダＩＤを取得し、対応する機能プロバイダをワークフロー定義ファイル４４０から取得する。ステップＳ１２１２で、ワークフロー処理部４３０は前記ステップＳ１２１１で取得した次に実行すべき機能プロバイダがあればステップＳ１２１３へ進む。次に実行すべき機能プロバイダがなければ（最後の機能プロバイダまでユーザ入力確認し終えたら）、処理はステップＳ１２２０に進む。ステップＳ１２１３で、ワークフロー処理部４３０はワークフロー実行テーブル４５０に保存されている現在実行中の機能プロバイダＩＤと実行中のアクションＮｏから対応するＡｃｔｉｏｎタグをワークフロー定義ファイル４４０から取得する。ステップＳ１２１４で、ワークフロー処理部４３０は前記ステップＳ１２１３で取得したＡｃｔｉｏｎタグがあればステップＳ１２１５へ進む。次に実行すべきＡｃｔｉｏｎタグがなければ（最後の機能プロバイダのＡｃｔｉｏｎまでユーザ入力確認し終えたら）、処理はステップＳ１２１１に進み、次の機能プロバイダを対象としてアクションタブの取得を試みる。
【００４１】
ステップＳ１２１５で、ＡｃｔｉｏｎタグのＩｎｐｕｔへの入力値を既に実行した機能プロバイダの実行結果として得ているか、すなわちワークフロー実行管理テーブル４５０に実行結果が保存されているかを判定する。入力値が存在すると判定した場合、処理はステップＳ１２１７に進み、そうでない場合処理はステップＳ１２１６に進む。ステップＳ１２１６で、Ｉｎｐｕｔタグへの入力値を得ていない場合はユーザ入力確認用のダミーデータを作成する。例えば図１０のＩｎｐｕｔタグ１０１１の場合、「ｄｏＯＣＲ」メソッドに「ｆｏｏ」が入力値となっているが、「ｆｏｏ」はＡｃｔｉｏｎタグ１００６の「ｄｏＳｃａｎＷｉｔｈＳｅｔｔｉｎｇＵＩ」から得る必要がある。しかし、まだ「ｆｏｏ」を得ていない場合ダミーデータとして「［ｆｏｏ］」を作成する。ここで鍵括弧「［］」はダミーデータである旨を表す。
【００４２】
次にステップＳ１２１７で、ワークフロー処理部４３０は前記ステップＳ１２１１で取得した機能プロバイダのＳ１２１３で取得したＡｃｔｉｏｎのメソッドを実行した場合のユーザ入力有無を確認する。ここで、ワークフロー処理部４３０は、問い合わせのパラメータとして、ワークフロー定義ファイル４４０から取得したパラメータ、ワークフロー実行管理テーブル４５０の実行結果データ、前記ステップＳ１２１６で作成したダミーデータ、メソッド名を機能プロバイダに送信する。そして機能プロバイダのユーザ入力有無確認処理メソッド「ｉｓＵｓｅｒＩｎｐｕｔ」を呼び出す。ステップＳ１２１８で、依頼を受けた機能プロバイダはユーザ有無確認処理を行う。処理の詳細は図１４で説明する。そしてステップＳ１２１９で、ワークフロー処理部４３０は機能プロバイダからユーザ入力有無確認結果の受信を待ち受ける。そして処理はステップＳ１２１３に進み、次のアクションタグについてユーザ入力の有無を判定する。
【００４３】
一方、処理対象のワークフロー定義ファイルに含まれた、現在実行中の機能プロバイダ以降の機能プロバイダを対象としてユーザ入力の有無をステップＳ１２１２で確認し終えた場合、ステップＳ１２２０を行う。ステップＳ１２２０で、ワークフロー処理部４３０は、ステップＳ１２１９で機能プロバイダから取得したユーザ入力有無確認結果のうち、１つ以上の機能プロバイダからユーザ入力有りが返却されたか否かを判断する。１つ以上の機能プロバイダからユーザ入力有りが返却されたと判断した場合は、ステップＳ１２２１でログアウト可否は「不可」すなわち「Ｎ」の値をワークフロー実行テーブル４５０のログアウト可否欄に保存する。そうでない場合ステップＳ１２２２でログアウト可否は「可」すなわち「Ｙ」の値をワークフロー実行テーブル４５０のログアウト可否欄に保存する。ステップＳ１２２３で、ワークフロー処理部４３０はログアウト制御部４６０にログアウト指示処理を行う。ログアウト制御部４６０のログアウト処理の詳細は図１３Ａで説明する。
【００４４】
ステップＳ１２２４で、ワークフロー制御部４３０は、ワークフロー実行管理テーブル４５０に保存されている現在実行中の機能プロバイダ、アクションＮｏのＡｃｔｉｏｎタグの定義に従って機能プロバイダを呼び出す。ステップＳ１２２５で、ワークフロー処理部４３０によって呼び出された機能プロバイダが処理を実行する。ステップＳ１２２６でワークフロー処理部４３０は呼び出した機能プロバイダの実行完了を待ち受ける。ステップＳ１２２７で、ワークフロー処理部４３０がステップＳ１２２６で受信した機能プロバイダ実行結果がフローキャンセルであるか否かを判断し、フローキャンセル（フロー中断）の場合処理はステップＳ１２３６に進み、そうでない場合ステップＳ１２２８に進む。
【００４５】
ステップＳ１２２８で、ワークフロー制御部４３０は現在実行中の機能プロバイダ、現在実行中のアクションＮｏの次のアクションタグを取得する。ステップＳ１２２９で、ワークフロー制御部４３０は次のＡｃｔｉｏｎタグがあるか否かを判断し、Ａｃｔｉｏｎタグがある場合処理はステップＳ１２３０に進み、そうでない場合処理はステップＳ１２３１に進む。ステップＳ１２３０で、ワークフロー制御部４３０は現在実行中のアクションＮｏを＋１（１を加算）する。ステップＳ１２３１でワークフロー制御部４３０は現在実行中のアクションＮｏを１にリセットする（すなわち１を設定する）。ステップＳ１２３２でワークフロー制御部４３０は現在実行中の機能プロバイダの次の機能プロバイダを取得する。ステップＳ１２３３でワークフロー制御部４３０は次の機能プロバイダがあるか否かを判断し、機能プロバイダがある場合処理はステップＳ１２３４に進み、そうでない場合処理はステップＳ１２３６に進む。ステップＳ１２３４でワークフロー制御部４３０は現在実行中の機能プロバイダ＋１する。ステップＳ１２３５でワークフロー制御部４３０は現在実行中の機能プロバイダ、アクションＮｏ、ステップＳ１２２６で取得した実行結果をワークフロー実行管理テーブル４５０に保存する。
【００４６】
ステップＳ１２３６で、ワークフロー制御部４３０はワークフロー終了時点のワークフロー情報をワークフロー実行管理テーブル４５０に保存する。すなわち現在実行中の機能プロバイダは「−」、アクションＮｏ「−」、ステップＳ１２２６で取得した機能プロバイダ実行結果を保存する。「−」は該当する値がないことを意味する。ステップＳ１２３７で、ワークフロー制御部４３０は操作部２２０にワークフロー実行結果を表示する。そして処理は終了する。
【００４７】
●ＭＦＰによるログアウト制御処理
図１３（Ａ）は、図１２Ａ、図１２ＢのフローチャートにおけるＭＦＰ１０１のログアウト制御処理を説明するためのフローチャートである。ＭＦＰ１０１のＨＤＤ２１４に記憶されているプログラムを、ＣＰＵ２１１がＲＡＭ２１３に読み出し、解析、実行することで、図１３（Ａ）のフローチャートの各ステップが実行される。ステップＳ１３０１で、ログアウト制御部４６０は、ワークフロー処理部４３０からのログアウト制御処理指示を受信する。ステップＳ１３０２で、ログアウト制御部４６０は、現在実行中のワークフロー実行情報を、ワークフロー実行管理テーブル４５０から読み込む。ステップＳ１３０３で、ログアウト制御部４６０は、前記ステップＳ１３０２で取得したワークフロー実行管理テーブル４６０のログアウト可否欄の値が、ログアウト可（Ｙ）であるか否（Ｎ）かを判断する。ログアウト可の場合処理はステップＳ１３０４に進み、そうでない場合処理はステップＳ１３０５に進む。ステップＳ１３０４で、ログアウト制御部４６０は、操作部２２０上のログアウトボタンを表示する。ステップＳ１３０５で、ログアウト制御部４６０は操作部２２０上のログアウトボタンを非表示にする。
【００４８】
●機能プロバイダによるユーザ入力有無確認処理
図１４は、図１１Ａ〜図１１Ｄのシーケンス図におけるＭＦＰ１０１の機能プロバイダのユーザ入力有無確認処理を説明するためのフローチャートである。ＭＦＰ１０１のＨＤＤ２１４に記憶されているプログラムを、ＣＰＵ２１１がＲＡＭ２１３に読み出し、解析、実行することで、図１４のフローチャートの各ステップが実行される。
【００４９】
ステップＳ１４０１で、機能プロバイダはワークフロー処理部４３０からのユーザ有無問い合わせを受信する。ステップＳ１４０２で、機能プロバイダは前記ステップＳ１４０１で受信したメソッドのメソッド情報テーブル４１７を読み出す。ステップＳ１４０３で、機能プロバイダは前記ステップＳ１４０２で読み出したメソッド情報テーブル４１７の入力画面チェックの値が「Ｙ」すなわち入力画面が有りユーザ入力が必須のメソッドであるか否かを判断する。入力画面チェックの値が「Ｙ」であると判断した場合処理はステップＳ１４１０に進み、そうでない場合処理はステップＳ１４０４に進む。ステップＳ１４０４で、機能プロバイダは、前記ステップＳ１４０２で読み出したメソッド情報テーブル４１７の入力画面チェックの値が「Ｎ」すなわち入力画面が無いメソッドであるか否かを判断する。入力画面チェックの値が「Ｎ」であると判断した場合処理はステップＳ１４１０に進み、そうでない場合処理はステップＳ１４０５に進む。
【００５０】
ステップＳ１４０５乃至Ｓ１４０７で、機能プロバイダは、入力画面チェックが「Ｙ」「Ｎ」以外、すなわち「Ｃ」である場合の入力値の確認を行う。ここで入力画面チェック「Ｃ」は入力値によってユーザ入力の有無が変わることを表す。ステップＳ１４０５で、機能プロバイダはメソッド情報４５０の必須項目チェックの内容に従って、前記ステップＳ１４０１で受信した入力値およびパラメータの値を確認する。例えば、ＦＡＸ送信プロバイダ４１５の場合、メソッド情報テーブル４１７が図５（Ｅ）から必須入力チェックは「宛先番号｜宛先名、文書データ」となっている。ここで「｜」は「または」の意を示す。したがって、ステップＳ１４０１で受信した入力値およびパラメータに、必須である宛先番号または宛先名と、文書データとが含まれているか否かを判定する。全て含まれている場合処理はステップＳ１４０６に進み、そうでない場合処理はステップＳ１４１０に進む。ステップＳ１４０６で、機能プロバイダはメソッド情報４５０の組み合わせチェックの内容に従って、前記ステップＳ１４０１で受信した入力値およびパラメータの値を確認する。例えばＦＡＸ送信プロバイダ４１５の場合、組み合わせチェックは「［宛先番号，宛先名］，（宛先番号，アドレス帳フラグ）」となっている。ここで鍵括弧「［］」は両方指定禁止、丸括弧「（）」は両方指定必須を示す。したがって、ステップＳ１４０１で受信した入力値およびパラメータに宛先番号と宛先名の両方が指定されている場合はＮＧ、宛先番号とアドレス帳フラグの両方が指定されている場合はＯＫと判断する。ＯＫの場合処理はステップＳ１４０７に進み、そうでない場合処理はステップＳ１４１０に進む。
【００５１】
ステップＳ１４０７で、機能プロバイダはメソッド情報４５０の値チェックの内容に従って、前記ステップＳ１４０１で受信した入力値およびパラメータがダミーデータであるか否かを判断する。ダミーデータであればダミーではないデータの入力が必要であると判断できる。ここではダミーデータを示す鍵括弧「［］」付のデータであるか否かを確認する。ＦＡＸ送信プロバイダ４１５の場合は、値チェックが「アドレス帳フラグ、宛先番号、宛先名」であるため、ステップＳ１４０１で受信したアドレス帳フラグ、宛先番号、宛先名がダミーデータであるか否かを確認する。ダミーデータである場合処理はステップＳ１４１０に進み、そうでない場合処理はステップＳ１４０８に進む。ステップＳ１４０８で、機能プロバイダはメソッド情報４５０の値チェックの内容に従って、前記ステップＳ１４０１で受信した入力値およびパラメータの値を確認する。例えば、ＦＡＸ送信プロバイダ４１５の場合、値チェックは「アドレス帳フラグ、宛先番号、宛先名」となっている。したがって、ステップＳ１４０１で受信した入力値およびパラメータの宛先番号の形式、宛先名の形式、アドレス帳に宛先番号が存在するか否かを表すアドレス帳フラグが「Ｙ」の場合、宛先番号がアドレス帳に含まれているか否かを確認する。値チェックＯＫの場合処理はステップＳ１４０９に進み、そうでない場合処理はステップＳ１４１０に進む。ステップＳ１４０９で、機能プロバイダはワークフロー処理部４３０にユーザ入力無しの旨を返却し、ステップＳ１４１０で、機能プロバイダはワークフロー処理部４３０にユーザ入力有りの旨を返却する。
【００５２】
このように、各機能プロバイダは、ユーザ入力の有無の問い合わせに応じて、ユーザインターフェースを介したユーザ入力が必須であるか、または必須でなくとも必要な入力データが整っていない場合には、ユーザ入力が有る旨を応答する。
【００５３】
●ＭＦＰによる機能プロバイダ実行処理
図１５Ａ、図１５Ｂは、図１１Ａ〜図１１Ｄのシーケンス図におけるＭＦＰ１０１の機能プロバイダ実行処理を説明するためのフローチャートである。ＭＦＰ１０１のＨＤＤ２１４に記憶されているプログラムを、ＣＰＵ２１１がＲＡＭ２１３に読み出し、解析、実行することで、図１５のフローチャートの各ステップが実行される。以下の説明では、図１５Ａ，図１５Ｂを区別せず、図１５と呼ぶこともある。
【００５４】
◆ユーザプロパティ入力プロバイダ
図１５（Ａ）はユーザプロパティ入力プロバイダ４１１の「ｄｏＩｎｐｕｔ」メソッドの実行処理のフローチャートである。ステップＳ１５０１で、ユーザプロパティ入力プロバイダ４１１はワークフロー処理部４３０からユーザプロパティ入力実行指示を受信する。ステップＳ１５０２で、ユーザプロパティ入力プロバイダ４１１は図８（Ａ）のユーザプロパティ入力画面８００を操作部２２０に表示する。ステップＳ１５０３で、ユーザプロパティ入力プロバイダ４１１はユーザから受け付けたボタン入力がＯＫボタンか否かを判断し、ＯＫボタンの場合処理はＳ１５０４に進み、そうでない場合処理はステップＳ１５０５に進む。ステップＳ１５０４で、ユーザプロパティ入力プロバイダ４１１はユーザプロパティ入力画面８００の入力欄８０２の入力内容をワークフロー制御部４３０に返却（あるいは応答）する。ステップＳ１５０５で、ユーザプロパティ入力プロバイダ４１１はフローキャンセルの旨をワークフロー制御部４３０に返却する。
【００５５】
◆標準スキャンプロバイダ
図１５（Ｂ）は標準スキャンプロバイダ４１２の「ｄｏＳｃａｎＷｉｔｈＳｅｔｔｉｎｇＵＩ」の実行処理のフローチャートである。ステップＳ１５１１で、標準スキャンプロバイダ４１２はワークフロー処理部４３０からスキャン実行指示を受信する。ステップＳ１５１２で、標準スキャンプロバイダ４１２は図８（Ｂ）のスキャン設定画面８１０を操作部２２０に表示する。ステップＳ１５１３で、標準スキャンプロバイダ４１２はスキャン設定画面８１０でユーザから受け付けたボタンがＯＫボタンか否かを判断する。ＯＫボタンの場合処理はステップＳ１５１７に進み、そうでない場合処理はステップＳ１５１４に進む。ステップＳ１５１４で、標準スキャンプロバイダ４１２はスキャン設定画面８１０でユーザから受け付けたボタンがキャンセルボタンか否かを判断する。キャンセルボタンの場合処理はステップＳ１５２０に進み、そうでない場合処理はステップＳ１５１５に進む。ステップＳ１５１５で、標準スキャンプロバイダ４１２は不図示のスキャン詳細設定画面を表示する。ステップＳ１５１６で、ユーザから受け付けたボタンがＯＫボタンか否かを判断する。ＯＫボタンの場合処理はステップＳ１５１２に進み、そうでない場合処理はステップＳ１５１６に進む。ステップＳ１５１７で、標準スキャンプロバイダ４１２は図８（Ｃ）のスキャン実行画面８２０を操作部２２０に表示する。ステップＳ１５１８で、標準スキャンプロバイダ４１２は前記ステップＳ１５１１でワークフロー処理部４３０から受信したパラメータや、前記ステップＳ１５１２、Ｓ１５１５の画面で入力されたスキャン設定を用いてスキャンを実行する。ステップＳ１５１９で、標準スキャンプロバイダ４１２は前記ステップＳ１５１７のスキャン処理で取得した文書データをワークフロー制御部４３０に返却する。ステップＳ１５２０で、標準スキャンプロバイダ４１２はワークフロー処理部４３０にフローキャンセルの旨を返却する。
【００５６】
◆組込ＯＣＲプロバイダ
図１５（Ｃ）は組込ＯＣＲプロバイダ４１３の「ｄｏＯＣＲ」の実行処理のフローチャートである。ステップＳ１５２１で、組込ＯＣＲプロバイダ４１３はワークフロー処理部４３０からＯＣＲ実行指示を受信する。ステップＳ１５２２で、組込ＯＣＲプロバイダ４１３は図８（Ｃ）のＯＣＲ実行中画面８３０を操作部２２０に表示する。ステップＳ１５２３で、組込ＯＣＲプロバイダ４１３は前記ステップＳ１５２１でワークフロー処理部４３０から受信したパラメータや、入力値である文書データを用いてＯＣＲを実行する。ステップＳ１５２４は、組込ＯＣＲプロバイダ４１３は、ＯＣＲ実行画面８３０でユーザから受け付けたボタンがキャンセルボタンか否かを判断する。キャンセルボタンの場合処理はステップＳ１５２５に進み、そうでない場合処理はステップＳ１５２６に進む。ステップＳ１５２５で、組込ＯＣＲプロバイダ４１３は前記ステップＳ１５２３でのＯＣＲ実行結果をワークフロー制御部４３０に返却する。ステップＳ１５２６で、組込ＯＣＲプロバイダ４１３は、フローキャンセルの旨をワークフロー制御部４３０に返却する。
【００５７】
◆メタデータ入力プロバイダ
図１５（Ｄ）はメタデータ入力プロバイダ４１４の「ｃｒｅａｔｅＤａｔａ」の実行処理のフローチャートである。ステップＳ１５３１で、メタデータ入力プロバイダ４１４はワークフロー処理部４３０からメタデータ入力実行指示を受信する。ステップＳ１５３２で、メタデータ入力プロバイダ４１４は前記ステップＳ１５３１でワークフロー処理部４３０から受信したパラメータや入力値の文字列を用いて、ＨＤＤ２１４に保存されているテンプレートに文字列を適用しメタデータ入力処理を実行する。ステップＳ１５３３で、メタデータ入力プロバイダ４１４は前記ステップＳ１５３２でのメタデータ入力実行結果をワークフロー制御部４３０に返却する。
【００５８】
◆ファクシミリ送信プロバイダ
図１５（Ｅ）はＦＡＸ送信プロバイダ４１５の「ｄｏＳｅｎｄ」の実行処理のフローチャートである。ステップＳ１５４１で、ＦＡＸ送信プロバイダ４１５はワークフロー処理部４３０からＦＡＸ送信指示を受信する。ステップＳ１５４２で、ＦＡＸ送信プロバイダ４１５は前記ステップＳ１５４１で受信したワークフロー処理部４３０からのアドレス帳フラグが「Ｙ」か否か、すなわち宛先番号がアドレス帳に保存されているか確認するか否かを判断する。アドレス帳フラグが「Ｙ」の場合処理はステップＳ１５４３に進み、そうでない場合処理はステップＳ１５４６に進む。ステップＳ１５４３で、ＦＡＸ送信プロバイダ４１５は前記ステップＳ１５４１で受信したワークフロー処理部４３０からの宛先番号がアドレス帳に含まれているか否かを判断する。宛先番号がアドレス帳に含まれている場合処理はステップＳ１５４６に進み、そうでない場合処理はステップＳ１５４４に進む。ステップＳ１５４４で、ＦＡＸ送信プロバイダ４１５は、図８（Ｅ）のＦＡＸ送信エラー画面８４０を操作部２２０に表示する。ステップＳ１５４５で、ＦＡＸ送信プロバイダ４１５はＦＡＸ送信エラー画面８４０でユーザから受け付けたボタンがキャンセルボタンか否かを判断する。キャンセルボタンの場合処理はステップＳ１５４９に進み、そうでない場合処理はステップＳ１５４３に進む。
【００５９】
ステップＳ１５４６で、ＦＡＸ送信プロバイダ４１５は図８（Ｆ）のＦＡＸ送信画面８５０を操作部２２０に表示する。ステップＳ１５４７で、ＦＡＸ送信プロバイダ４１５は前記ステップＳ１５４１でワークフロー処理部４３０から受信したパラメータや、前記ステップＳ１５３４の画面で入力されたＦＡＸ送信設定を用いてＦＡＸ送信を実行する。ステップＳ１５４８で、ＦＡＸ送信プロバイダ４１５は前記ステップＳ１５４７のＦＡＸ送信処理の結果をワークフロー制御部４３０に返却する。ステップＳ１５４９で、ＦＡＸ送信プロバイダ４１５はワークフロー処理部４３０にフローキャンセルの旨を返却する。
【００６０】
◆ＳＭＢ送信プロバイダ
図１５（Ｆ）はＳＭＢ送信プロバイダ４１６の「ｄｏＳｅｎｄ」の実行処理のフローチャートである。ステップＳ１５５１で、ＳＭＢ送信プロバイダ４１６はワークフロー処理部４３０からＳＭＢ送信指示を受信する。ステップＳ１５５２で、ＳＭＢ送信プロバイダ４１６は図８（Ｇ）のＳＭＢ送信画面８６０を操作部２２０に表示する。ステップＳ１５５３で、ＳＭＢ送信プロバイダ４１６は前記ステップＳ１５５１でワークフロー処理部４３０から受信したパラメータや、入力値である文書データを用いてＳＭＢ送信を実行する。ステップＳ１５５４は、ＳＭＢ送信プロバイダ４１６はＳＭＢ送信画面８６０でユーザから受け付けたボタンがキャンセルボタンか否かを判断する。キャンセルボタンの場合処理はステップＳ１５５５に進み、そうでない場合処理はステップＳ１５５６に進む。ステップＳ１５５５で、ＳＭＢ送信プロバイダ４１６は前記ステップＳ１５５４でのＳＭＢ送信結果をワークフロー制御部４３０に返却する。ステップＳ１５５６で、ＳＭＢ送信プロバイダ４１６はフローキャンセルの旨をワークフロー制御部４３０に返却する。
【００６１】
以上が本実施例の説明である。ワークフローアプリではワークフローを実行するワークフロー実行部と機能プロバイダが疎に結合しており、ジョブ処理実行を機能プロバイダに移譲するような構成になっている。また機能プロバイダがユーザ入力を行う画面の表示制御をするような構成になっている。このような場合、機能プロバイダがユーザ入力を行う画面を表示するか否かをワークフロー実行部では判断することはできなかった。
【００６２】
本実施例では、以上において説明した手順により、ワークフローを実行するワークフロー処理部４３０がワークフロー実行に係る情報をワークフロー実行管理テーブル４５０で管理する。ワークフロー処理部４３０は機能プロバイダ４１１乃至４１６の実行ステップが進む毎に、現在実行中以降のステップ（機能プロバイダとアクション）の機能プロバイダに、メソッド名、既に取得した実行結果データを、または、まだ実行していない実行結果についてダミーデータを与えて、機能プロバイダ４１１乃至４１６にユーザ入力が発生するかを問い合わせる。機能プロバイダは、それ自身に保持しているメソッド情報テーブル４１７と入力値からユーザ入力が発生するか否かを判断し、その結果を応答する。ワークフロー処理部４３０は１つ以上の機能プロバイダからユーザ入力が発生する旨を受信した場合は、ログアウト不可と判断しログアウト制御部４６０にログアウト制御を指示し、ログアウトボタンを非表示にする。これらの処理により、ワークフロー実行部と機能プロバイダが疎に結合されている場合でも、フロー実行中にユーザ入力が残っている状態でユーザがログアウトするのを防止し、フロー実行を適切に継続することができる。
【００６３】
（実施例２）
次に、本発明に係る第２の実施形態について説明する。実施例１においてはログアウトボタンを非表示にすることでユーザがログアウトするのを防止していた。本実施形態では、ログアウトボタンは表示しておき、ボタン押下時にユーザのログアウトを防止する処理の例を説明する。なお特に断らない限り、本実施例について、実施例１と同一の番号のブロック図、シーケンス図、フローチャートや処理は、それぞれ実施例１の同一番号のブロック図、シーケンス図、フローチャートや処理と同一のものである。
【００６４】
図８（Ｈ）は、ログアウト制御部が操作部２２０に表示する画面の例である。図８（Ｈ）はログアウト警告画面８７０の一例を表す。ログアウト警告画面８７０はメッセージ８７１、フロー続行ボタン８７２、ログアウト続行ボタン８７３を有する。
【００６５】
図１１Ｅ〜図１１Ｈは、本実施例におけるＭＦＰ１０１上のワークフロー実行の流れを示したシーケンス図である。図１１Ａ〜図１１Ｄとの違いは、ワークフロー処理部４３０からログアウト処理部４６０へのログアウト制御指示や、ログアウト処理部４６０でのログアウト制御処理が無いことである。その代り、ユーザからのログアウト指示Ｓ１１２０１（図１１Ｆ）および、ログアウト制御部４６０でのログアウト警告処理Ｓ１１２０２（図１１Ｆ）が、Ｓ１１４６の後に追加されている。ステップＳ１１２０１で、ログアウト制御部４６０はユーザが図８（Ａ）乃至図８（Ｈ）のログアウトボタンを押下したことによるログアウト指示を受信する。ステップＳ１１２０２で、ログアウト制御部４６０はワークフロー実行管理テーブル４６０のログアウト可否が「Ｎ」すなわちログアウト不可の場合、図８（Ｈ）のログアウト警告画面８７０を表示させる。
【００６６】
図１２Ｃ、図１２Ｄは、図１１Ｅ〜図１１Ｈのシーケンス図におけるＭＦＰ１０１のワークフロー実行処理を説明するためのフローチャートである。図１２Ｃ，図１２Ｄも一連の手順を示しているので、以下の説明においてはまとめて図１２Ｃと呼ぶことがある。ＭＦＰ１０１のＨＤＤ２１４に記憶されているプログラムを、ＣＰＵ２１１がＲＡＭ２１３に読み出し、解析、実行することで、図１２Ｃ、図１２Ｄのフローチャートの各ステップが実行される。図１２Ａ、図１２Ｂとの違いは、ワークフロー処理部４３０からログアウト処理部４６０へのログアウト制御指示処理（Ｓ１２２３、Ｓ１２３８）が無い。
【００６７】
図１６（Ａ）は、図１１Ｅ〜図１１Ｈのシーケンス図におけるＭＦＰ１０１のログアウト制御処理を説明するためのフローチャートである。ＭＦＰ１０１のＨＤＤ２１４に記憶されているプログラムを、ＣＰＵ２１１がＲＡＭ２１３に読み出し、解析、実行することで、図１６（Ａ）のフローチャートの各ステップが実行される。ステップＳ１６０１で、ログアウト制御部４６０は、ユーザが図８に示す各画面のログアウトボタンが押下されたことを受信し、ユーザからのログアウト指示を受信する。ステップＳ１６０２で、ログアウト処理部４６０は、ワークフロー実行管理テーブル４５０の現在実行中のフローの情報を取得する。ステップＳ１６０３で、ログアウト処理部４６０は前記ステップＳ１６０２で取得したワークフロー実行管理テーブル４５０のログアウト可否が「Ｎ」すなわちログアウト不可であるか否かを判断する。ログアウト可否がログアウト不可である場合処理はステップＳ１６０４に進み、そうでない場合処理はステップＳ１６０７に進む。ステップＳ１６０４で、ログアウト処理部４６０は図８（Ｈ）のログアウト警告画面８７０を操作部２２０に表示する。ステップＳ１６０５で、ログアウト処理部４６０はログアウト警告画面８７０でフロー続行ボタン８７２が押下されたか否かを判断する。フロー続行ボタン８７２が押下されたと判断した場合処理はステップＳ１６０６に進み、そうでない場合処理はステップＳ１６０７に進む。ステップＳ１６０６で、ログアウト処理部４６０はワークフロー処理部４３０にフローをフォアグラウンドで続行する旨を送信する。ステップＳ１６０７で、ログアウト処理部４６０はワークフロー処理部４３０にバックグラウンドで実行する旨を送信する。ワークフロー処理部４３０はフローをバックグラウンドで実行する旨を受信した場合、現在実行中の機能プロバイダの画面をバックグラウンド表示し、フローを続行する。ステップＳ１６０８で、ログアウト処理部４６０はログアウト処理を行う。
【００６８】
以上が本実施例の説明である。実施例１では、ログアウトボタンを表示させないことによりユーザ入力が必要な場合にユーザのログアウトを防止していた。本実施形態では、以上において説明した手順により、ログアウト制御部４６０が、ユーザがログアウトボタンを押下しログアウト指示が出た旨を受信した際に、ワークフロー実行管理テーブル４５０を参照しログアウト可否を参照する。そしてログアウト不可の場合にログアウト警告画面８７０を表示する。これにより、ユーザがログアウトボタンを押下した場合にユーザ入力が残っている旨をユーザに通知することができる。またユーザがログアウト警告画面８７０でログアウト続行ボタン８７３を押下することでフローをバックグラウンドで続行しつつ、ユーザが強制的にログアウトを行うことができる。
【００６９】
（実施例３）
次に、本発明に係る第３の実施形態について説明する。実施例１においてはログアウトボタンを非表示にすることでユーザがログアウトするのを防止していた。本実施形態では、ＩＤキーを押下しログアウト指示された場合も同様にユーザのログアウトを防止する処理の例を説明する。なお特に断らない限り、本実施例について、実施例１乃至２と同一の番号のブロック図、シーケンス図、フローチャートや処理は、それぞれ実施例１乃至２の同一番号のブロック図、シーケンス図、フローチャートや処理と同一のものである。
【００７０】
図１１Ｅ〜図１１Ｈは、本実施例におけるＭＦＰ１０１上のワークフロー実行の流れを示したシーケンス図である。
【００７１】
図１２Ｃ、図１２Ｄは、図１１Ｅ〜図１１Ｈのシーケンス図におけるＭＦＰ１０１のワークフロー実行処理を説明するためのフローチャートである。ＭＦＰ１０１のＨＤＤ２１４に記憶されているプログラムを、ＣＰＵ２１１がＲＡＭ２１３に読み出し、解析、実行することで、図１２Ｃ、図１２Ｄのフローチャートの各ステップが実行される。
【００７２】
図１６（Ｂ）は、図１１Ｅ〜図１１Ｈのシーケンス図におけるＭＦＰ１０１のログアウト制御処理を説明するためのフローチャートである。ＭＦＰ１０１のＨＤＤ２１４に記憶されているプログラムを、ＣＰＵ２１１がＲＡＭ２１３に読み出し、解析、実行することで、図１６（Ｂ）のフローチャートの各ステップが実行される。図１６（Ａ）との違いは、ステップＳ１６０１でのログアウト指示受信処理が異なる。またステップＳ１６０１でログアウト不可であった場合に処理を終了するところが異なる。ステップＳ１６０１で、ログアウト処理部４６０は、図２（Ｂ）に示す操作部２２０上のＩＤキー２５５がユーザに押下されたことでユーザからのログアウト指示を受信する。ステップＳ１６０３で、ログアウト処理部４６０は前記ステップＳ１６０２で取得したワークフロー実行管理テーブル４５０のログアウト可否が「Ｎ」すなわちログアウト不可であるか否かを判断する。ログアウト可否がログアウト不可である場合処理は終了し、そうでない場合処理はステップＳ１６０７に進む。
【００７３】
以上が本実施例の説明である。実施例１では、ログアウトボタンを表示させないことによりユーザ入力が必要な場合にユーザのログアウトを防止していた。以上において説明した手順により、ログアウト制御部４６０が、ユーザが操作部２２０上のＩＤキー２５５を押下し、ログアウト指示が出た旨を受信した際に、ワークフロー実行管理テーブル４５０を参照し、ログアウト可否を参照する。そしてログアウト不可の場合に処理を終了することによりＩＤキー２５５の入力を無効とする。これにより、ユーザがＩＤキー２５５を押下した場合、ユーザ入力が残っている場合にログアウトを防止することができる。
【００７４】
（実施例４）
次に、本発明に係る第４の実施形態について説明する。実施例３においてはユーザがＩＤキーを入力した際に、キー入力を無効化することでユーザのログアウトを防止していた。本実施形態では、ＩＤキー入力時に警告画面を表示してユーザのログアウトを防止する処理の例を説明する。なお特に断らない限り、本実施例について、実施例１乃至３と同一の番号のブロック図、シーケンス図、フローチャートや処理は、それぞれ実施例１乃至３の同一番号のブロック図、シーケンス図、フローチャートや処理と同一のものである。
【００７５】
図１１Ｅ〜図１１Ｈは、本実施例におけるＭＦＰ１０１上のワークフロー実行の流れを示したシーケンス図である。実施例２との違いは、ワークフロー処理部４３０からログアウト処理部４６０へのログアウト制御指示方法が異なる。ステップＳ１１２０１で、ログアウト制御部４６０はユーザが操作部２２０上のＩＤキー２５５を入力したことによるログアウト指示を受信する。
【００７６】
図１２Ｃ、図１２Ｄは、図１１Ｅ〜図１１Ｈのシーケンス図におけるＭＦＰ１０１のワークフロー実行処理を説明するためのフローチャートである。ＭＦＰ１０１のＨＤＤ２１４に記憶されているプログラムを、ＣＰＵ２１１がＲＡＭ２１３に読み出し、解析、実行することで、図１２Ｃ、図１２Ｄのフローチャートの各ステップが実行される。
【００７７】
図１６（Ａ）は、図１１Ｅ〜図１１Ｈのシーケンス図におけるＭＦＰ１０１のログアウト制御処理を説明するためのフローチャートである。ＭＦＰ１０１のＨＤＤ２１４に記憶されているプログラムを、ＣＰＵ２１１がＲＡＭ２１３に読み出し、解析、実行することで、図１６（Ａ）のフローチャートの各ステップが実行される。実施形態２に対して、ステップＳ１６０１で、ログアウト制御部４６０はユーザが操作部２２０上のＩＤキー２５５が入力されたことを受信し、ユーザからのログアウト指示を受信する。
【００７８】
以上が本実施例の説明である。実施例３においてはユーザがＩＤキーを入力した際に、キー入力を無効化することでユーザがログアウトするのを防止していた。以上において説明した手順により、ログアウト制御部４６０が、ユーザが操作部２２０上のＩＤキー２５５を押下しログアウト指示が出た旨を受信した際、ワークフロー実行管理テーブル４５０を参照しログアウト可否を参照する。そしてログアウト警告画面８７０を表示させる。これにより、ユーザがＩＤキー２５５を押下した場合に、ユーザ入力が残っている場合にユーザへの警告を行い、ログアウトを防止することができる。
【００７９】
（実施例５）
次に、本発明に係る第５の実施形態について説明する。実施例２乃至４においては、ユーザはログアウトボタンやＩＤキーを押下することで初めて、ユーザ入力が残っておりログアウト不可の旨がわかる。本実施形態では、ユーザ入力が残っているか否かを画面上に表示する処理の例を説明する。なお特に断らない限り、本実施例について、実施例１乃至４と同一の番号のブロック図、シーケンス図、フローチャートや処理は、それぞれ実施例１乃至４の同一番号のブロック図、シーケンス図、フローチャートや処理と同一のものである。
【００８０】
図８（Ｉ）は、ログアウト制御部が操作部２２０に表示する画面の例である。図８（Ｉ）はユーザ入力残表示８８１の表示の一例を表す。なお図８（Ｉ）では、ＯＣＲ実行画面８３０上にユーザ入力残表示８８１を表示させているが、表示する画面はＯＣＲ実行画面８３０に限らない。すなわち図８に示すワークフロー実行時にワークフロー処理部４３０、ログアウト制御部４６０、機能プロバイダが表示させる画面の上に表示させてもよい。
【００８１】
図１３（Ｂ）は、図１２Ａ、図１２ＢのフローチャートにおけるＭＦＰ１０１のログアウト制御処理を説明するためのフローチャートである。ＭＦＰ１０１のＨＤＤ２１４に記憶されているプログラムを、ＣＰＵ２１１がＲＡＭ２１３に読み出し、解析、実行することで、図１３（Ｂ）のフローチャートの各ステップが実行される。図１３（Ａ）との違いは、ログアウト制御部４６０がステップＳ１３０３でログアウト可否を判断した後の処理が異なる。ステップＳ１３１１で、ログアウト制御部４６０は操作部２２０に表示されている画面の上にユーザ入力残表示８８１を表示させ、「ユーザ入力残り無し」の旨を表示する。ステップＳ１３１２で、ログアウト制御部４６０は、操作部２２０に表示されている画面の上にユーザ入力残表示８８１を表示させ、「ユーザ入力残り有り」の旨を表示する。
【００８２】
以上が本実施例の説明である。実施例２乃至４においては、ユーザはログアウトボタンやＩＤキーを押下することで初めて、ユーザ入力が残っており、ログアウト不可の旨がわかる。本実施形態では、ログアウト制御部４６０がワークフロー実行中は常にユーザ入力が残っているか否かユーザ入力残表示８８１として操作部２２０に表示させる。またワークフロー処理部４３０からログアウト制御指示を受信した際にログアウト可否の状態に応じて、ログアウト制御部４６０がユーザ入力残表示８８１表示するユーザ入力が残っているか否かの内容を更新する。これにより、ユーザが画面上にあるユーザ入力残表示８８１を参照することで、ログアウトボタンやＩＤキー２５５を入力する前にユーザ入力が残っているか否か、ログアウト可能か否かを判別することができる。
【００８３】
以上説明したように、上記それぞれの実施形態では、ワークフローの進捗に応じて、現時点以降にユーザ入力が必要か否かを、未処理の機能プロバイダごとに判定する。そして、ユーザ入力が必要であると判定した場合には、ログインユーザのログアウトを制限する。例えば、ログアウトボタンを非表示にし、あるいはログアウト操作を無視し、あるいは警告画面を表示する。またまたワークフロー処理部と機能プロバイダが疎に結合している場合、機能プロバイダがユーザ入力を伴う画面を表示するか否かをワークフロー処理部が容易に判断できないため、ログアウト制御ができない。上記実施形態では、その判断を各機能プロバイダにより行うことで、正確な判断を行える。
【００８４】
［その他の実施例］
本発明は、上述の実施形態の１以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける１つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、１以上の機能を実現する回路（例えば、ＡＳＩＣ）によっても実現可能である。
【符号の説明】
【００８５】
４１０  拡張ソフト管理部、４１１〜４１６  機能プロバイダ、４１７  メソッド情報テーブル、４３０  ワークフロー処理部、４４０  ワークフロー定義ファイル、４５０  ワークフロー実行管理テーブル
【図１】
2019213165.tif 000003
【図２】
2019213165.tif 000004
【図３】
2019213165.tif 000005
【図４】
2019213165.tif 000006
【図５Ａ】
2019213165.tif 000007
【図５Ｂ】
2019213165.tif 000008
【図６】
2019213165.tif 000009
【図７】
2019213165.tif 000010
【図８Ａ】
2019213165.tif 000011
【図８Ｂ】
2019213165.tif 000012
【図８Ｃ】
2019213165.tif 000013
【図９】
2019213165.tif 000014
【図１０Ａ】
2019213165.tif 000015
【図１０Ｂ】
2019213165.tif 000016
【図１１Ａ】
2019213165.tif 000017
【図１１Ｂ】
2019213165.tif 000018
【図１１Ｃ】
2019213165.tif 000019
【図１１Ｄ】
2019213165.tif 000020
【図１１Ｅ】
2019213165.tif 000021
【図１１Ｆ】
2019213165.tif 000022
【図１１Ｇ】
2019213165.tif 000023
【図１１Ｈ】
2019213165.tif 000024
【図１２Ａ】
2019213165.tif 000025
【図１２Ｂ】
2019213165.tif 000026
【図１２Ｃ】
2019213165.tif 000027
【図１２Ｄ】
2019213165.tif 000028
【図１３】
2019213165.tif 000029
【図１４】
2019213165.tif 000030
【図１５Ａ】
2019213165.tif 000031
【図１５Ｂ】
2019213165.tif 000032
【図１６】
2019213165.tif 000033