(57)【特許請求の範囲】
【請求項１】
プロセッサと、
画像形成処理に関する複数の設定値と、Ｗｅｂアプリケーションと、テンプレートファイルとが格納され、該プロセッサに結合された記憶手段と、
を備えた情報処理装置において、該Ｗｅｂアプリケーションは、
該プロセッサに対し、クライアントからのクエリ文字列に基づいて該複数の設定値の少なくとも１つを変更させ、該クエリ文字列で指定され該設定値の変更の成否に応じて定まるテンプレートファイルに基づいてリスポンスボディを生成させるＳＥＴ処理制御部と、
返り値の形式が統一されている複数の関数と、
該プロセッサに対し、該複数の関数のうち該テンプレートファイルに含まれるコンテキスト・トークンで定まるものを直接又は間接的に呼び出させ、該コンテキスト・トークンをこの関数の返り値で置換させる、ＧＥＴ処理制御部とを有し、
該ＳＥＴ処理制御部は該プロセッサに対し、該テンプレートファイルのパス情報を該ＧＥＴ処理制御部に引き渡し、該ＧＥＴ処理制御部を介して該リスポンスメッセージを生成させる、
ことを特徴とする情報処理装置。
【請求項２】
該ＳＥＴ処理制御部は該プロセッサに対し、該返り値の形式が統一されている複数の関数のうち該クエリ文字列で指定されたものを介して該設定値の変更を行わせる、
ことを特徴とする請求項１に記載の情報処理装置。
【請求項３】
該Ｗｅｂアプリケーションはさらに、トランスレータを有し、
該ＧＥＴ処理制御部は該プロセッサに対し、該パスの情報を該トランスレータに引き渡し、該トランスレータを介して該リスポンスボディを生成させ、
該トランスレータは該プロセッサに対し、該リスポンスボディを生成するために、該テンプレートファイルに含まれるコンテキスト・トークンを、該コンテキスト・トークンで定まる関数に引き渡し、該テンプレートファイルに含まれるコンテキスト・トークンを、該関数の返り値で置換させる、
ことを特徴とする請求項２に記載の情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、Ｗｅｂクライアントからの遠隔操作を可能にするＷｅｂサーバ機能を備えた情報処理装置に関する。
【背景技術】
【０００２】
下記特許文献１には、ネットワーク接続されたユーザ端末装置で、画像形成装置の各種情報を参照するためのマイページを各使用者が任意に変更できるようにした画像形成装置が開示されている。
【０００３】
マイページにおけるユーザ毎の表示項目ＩＤは、画像形成装置に格納され、又は、クッキーとしてユーザ端末装置に格納され、画像形成装置は、これらＩＤを対応する情報で置換したマイページファイルを作成し、ユーザ端末装置に送信する。また、ユーザ端末装置に入力された設定ページ上の設定情報を画像形成装置に送信し、画像形成装置がこれに応答して設定情報を更新する。
【特許文献１】特開２００６−１５５３５６
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかし、画像形成装置側での設定値変更処理とその処理が成功したか否かをクライアントに通知する処理との連携については開示されていない。この通知処理を、設定値変更処理に含ませ、設定値取得処理と独立させると、ソフトウエア構成が複雑になる。
【０００５】
本発明の目的は、このような問題点に鑑み、設定値変更処理とその処理が成功したか否かをクライアントに通知する処理とを簡単な構成で連携させることが可能な情報処理装置を提供することにある。
【０００６】
本発明の他の目的は、設定値変更処理とその処理が成功したか否かをクライアントに通知する処理と設定値取得処理とを含むソフトウエア構成を簡単化することが可能な情報処理装置を提供することにある。
【課題を解決するための手段】
【０００７】
本発明の第１態様では、
プロセッサと、
画像形成処理に関する複数の設定値と、Ｗｅｂアプリケーションとが格納され、該プロセッサに結合された記憶手段と、
を備えた情報処理装置において、該Ｗｅｂアプリケーションは、
該プロセッサに対し、クライアントからのクエリ文字列に基づいて該複数の設定値の少なくとも１つを変更させ、該クエリ文字列で指定されこの変更の成否に応じて定まるテンプレートファイルに基づいてリスポンスボディを生成させるＳＥＴ処理制御部を有する。
【０００８】
本発明による情報処理装置の第２態様では、第１態様において、該記憶手段にはさらに、リスポンスボディ生成用テンプレートファイルが格納され、
該Ｗｅｂアプリケーションはさらに、ＧＥＴ処理制御部を有し、
該ＳＥＴ処理制御部は該プロセッサに対し、該テンプレートファイルのパス情報を該ＧＥＴ処理制御部に引き渡し、該ＧＥＴ処理制御部を介して該リスポンスメッセージを生成させる。
【０００９】
本発明による情報処理装置の第３態様では、第２態様において、該Ｗｅｂアプリケーションはさらに、返り値の形式が統一されている複数の関数を有し、
該ＳＥＴ処理制御部は該プロセッサに対し、該複数の関数のうち該クエリ文字列で指定されたものを介して該変更を行わせ、
該ＧＥＴ処理制御部は該プロセッサに対し、該複数の関数のうち該テンプレートファイルに含まれるコンテキスト・トークンで定まるものを直接又は間接的に呼び出させ、該コンテキスト・トークンをこの関数の返り値で置換させる。
【００１０】
本発明による情報処理装置の第４態様では、第３態様において、該Ｗｅｂアプリケーションはさらに、トランスレータを有し、
該ＧＥＴ処理制御部は該プロセッサに対し、該パスの情報を該トランスレータに引き渡し、該トランスレータを介して該リスポンスボディを生成させ、
該トランスレータは該プロセッサに対し、該リスポンスボディを生成するために、該テンプレートファイルに含まれるコンテキスト・トークンを、該コンテキスト・トークンで定まる関数に引き渡し、該コンテキスト・トークンを該関数の返り値で置換させる。
【発明の効果】
【００１１】
上記第１態様の構成によれば、クライアントからのクエリ文字列に基づいて複数の設定値の少なくとも１つを変更し、該クエリ文字列で指定されこの変更の成否に応じて定まるテンプレートファイルに基づいてリスポンスボディを生成するので、設定値変更処理とその処理が成功したか否かをクライアントに通知する処理とを簡単な構成で連携させることができるという効果を奏する。
【００１２】
上記第２態様の構成によれば、ＳＥＴ処理制御部で設定値変更処理が行われ、ＧＥＴ処理制御部を介して該処理が成功したか否かのリスポンスメッセージが生成されるので、ＧＥＴ処理制御部を有効利用してＳＥＴ処理制御部の構成を簡単化することができるという効果を奏する。
【００１３】
上記第３態様の構成によれば、該変更及び該置換が、返り値の形式が統一されている関数を用いて行われるので、設計変更が容易になるという効果を奏する。
【００１４】
上記第４態様の構成によれば、ＧＥＴ処理制御部がトランスレータ及び関数を介してコンテキスト・トークンの置換を行うので、プログラムが階層構造となり、設計変更が容易になるという効果を奏する。
【００１５】
本発明の他の目的、構成及び効果は以下の説明から明らかになる。
【実施例１】
【００１６】
図１５は、本発明の実施例１に係る画像形成システムのハードウエア概略ブロック図である。
【００１７】
情報処理装置としての画像形成装置１０は、コピー、プリント、ＦＡＸ送受信及び電子メール送信を行うことが可能な複合機である。画像形成装置１０は、ＨＴＴＰに従ったＷｅｂサーバマシンとしても機能し、イントラネット内のホストコンピュータの汎用ブラウザによる画像形成装置１０の遠隔操作が可能となっている。
【００１８】
画像形成装置１０では、ＭＰＵ１１にインターフェイス１２を介してＰＲＯＭ１３、ＤＲＡＭ１４、操作パネル１５、プリンタ１６、スキャナ１７、ＮＩＣ（Network Interface Card）１８及びＦＡＸモデム１９が接続されている。図１５では簡単化のため、複数のインターフェイスを１つのブロックで示している。
【００１９】
ＰＲＯＭ１３は、例えばフラッシュメモリであり、これにはマルチプロセス及びマルチスレッドの機能を備えた汎用ＯＳ(オペレーティングシステム)、Ｗｅｂサーバ及びＷｅｂアプリケーション（画像形成処理プログラムを含む）並びに後述の各種データが格納されている。ＯＳは、例えばLinux（登録商標）である。
【００２０】
ＤＲＡＭ１４は、ワークエリア用であり、マルチプロセス及びマルチスレッドのインスタンス並びにリクエストメッセージ、リスポンスメッセージ及びこれらに関係したデータが格納され、解放される。操作パネル１５は、設定値又は指示を入力し、設定画面や状態などを表示させるためのものである。プリンタ１６は、コピー及びファックス送信での画像入力用である。スキャナ１７は、プリントエンジン並びに用紙の給紙部、搬送部及び排紙部を備え、ＤＲＡＭ１４内に生成されたビットマップデータが供給され、このデータに基づいて感光ドラムに静電潜像を形成し、この像をトナーで現像し、トナー像を用紙に転写し定着させ、排紙する。ＮＩＣ１８は、ケーブル又は無線の通信媒体を介して複数のＷｅｂクライアントマシーン２０、２１、・・・に結合される。ＦＡＸモデム１９は、公衆回線網２８を介して任意のＦＡＸ装置２９に結合される。
【００２１】
図１は、主に画像形成装置１０のソフトウエア構成を示す機能ブロック図である。
【００２２】
画像形成装置１０では、ＰＲＯＭ１３（図１５）内に、プログラムとして、ＯＳ３０と、その上層のｉｎｅｔｄ３１、ｈｔｔｐｄ３２、メール送信サーバ３３、メインＷｅｂサーバ３４、Ｗｅｂアプリケーション３５及びＤＢＭＳ（database management system）３６とを備え、データとして、静的リソース３７と、ＨＴＭＬテンプレートファイル３８と、バッファサイズテーブル３９と、言語テーブルファイル４０と、データベース４１と、コンフィグレーションファイル４２とを備えている。
【００２３】
ｉｎｅｔｄ３１、ｈｔｔｐｄ３２及びメール送信サーバ３３は汎用プログラムである。ｉｎｅｔｄ３１及びｈｔｔｐｄ３２中の文字"ｄ"は、バックグラウンドで動作するデーモンであることを示しており、それぞれプロセスとして動作する。メインＷｅｂサーバ３４、Ｗｅｂアプリケーション３５及びＤＢＭＳ３６は１つのプロセスとして動作する。
【００２４】
ｉｎｅｔｄ３１を用いている理由は、既存の資産を有効利用してメインＷｅｂサーバ３４の構成を簡単化するためである。ｉｎｅｔｄ３１は、定義ファイルに記述された１つ以上のポートを監視するのでスーパーサーバと称されており、クライアントとの間でＴＣＰ接続が確立する毎に、そのポート番号に対応した、定義ファイルに記述されているプログラムを起動させる。本実施例では、ｉｎｅｔｄ３１は８０番のポートのみ監視し、クライアントとの間でＴＣＰ接続が確立する毎にｈｔｔｐｄ３２を起動させる。ｉｎｅｔｄ３１は、セキュリティ機能（フィルタ）も備えており、本実施例では、定義ファイルに記述されたローカルＩＰアドレスを持つクライアントからの接続要求のみ受け付ける。
【００２５】
ｈｔｔｐｄ３２を用いている理由は、これを用いないとｉｎｅｔｄ３１が接続要求を受け付ける毎にメインＷｅｂサーバ３４が起動されることになるからである。メインＷｅｂサーバ３４は、システム起動時に１回起動させれば、後述のように、メインＷｅｂサーバ３４内でリクエスト毎にスレッドが生成されて並行処理が可能となっており、リクエスト毎にプロセスを生成するよりもメモリを節約することができる。
【００２６】
本実施例１によれば、既存の資産を有効利用してメモリ資源節約型メインＷｅｂサーバの構成を簡単化しその開発期間を短縮することができるという効果を奏する。
【００２７】
ｈｔｔｐｄ３２は、起動されると、ｉｎｅｔｄ３１でＴＣＰ接続が確立したクライアントからのリクエストメッセージを、Ｗｅｂクライアントマシーン２０からＮＩＣ１８及びＯＳ３０を介し受け取り、パイプでメインＷｅｂサーバ３４に渡した後、ＤＲＡＭ１４上から消滅する。すなわち、ｈｔｔｐｄ３２は、仲介役としてのみ機能する。このため、この仲介に必要な機能のみコンパイルされて用いられ、これによりメモリをさらに節約することができるという効果を奏する。
【００２８】
メインＷｅｂサーバ３４では、ＨＴＴＰ処理スレッド生成部３４０が、ｈｔｔｐｄ３２からのリクエストメッセージを受け取ってＨＴＴＰ処理スレッド３４１を生成し、このメッセージの識別子をＨＴＴＰ処理スレッド３４１のコンストラクタに引き渡し、ＨＴＴＰ処理スレッド３４１を起動させる。
【００２９】
ＨＴＴＰ処理スレッド３４１は、このメッセージをパースし、メッセージに含まれているリクエストＵＲＩ中のパス及びＧＥＴメソッドの場合のクエリ文字列、各フィールド名とその値、ＰＯＳＴメソッドの場合には変数名とその値（本明細書及び特許請求の範囲では、ＰＯＳＴメソッドにおいて、ＧＥＴメソッドの場合のクエリ文字列に対応するものもクエリ文字列と称す）を、予め定めた構造体の変数の対応する要素に代入し、この構造体変数（以下、Ｓ変数と称す。）の識別子（以下、Ｓ識別子と称す。）を引数として処理粗振分部３４２を呼び出す。
【００３０】
以下の処理では、リクエストメッセージ中の情報が、Ｓ変数の対応する要素を介して用いられ、これにより以下の複数の処理のそれぞれが簡単になる。リクエストＵＲＩ中のパスが格納されたＳ変数の要素をＳ変数．パス、クエリ文字列が格納されたＳ変数の要素をＳ変数．クエリ文字列と表記する
図３は、処理粗振分部３４２による処理を示すフローチャートである。以下、カッコ内は図中の識別符号である。
【００３１】
（Ｓ０）Ｓ変数．パスを読取る。
【００３２】
（Ｓ１）このパスに含まれるファイル名の拡張子が"cgi"であればステップＳ２へ進み、そうでなければステップＳ３へ進む。
【００３３】
（Ｓ２）Ｓ識別子を引数としてＷｅｂアプリケーション３５を呼出し、図３の処理を終了する。
【００３４】
（Ｓ３）ステップＳ０で読取ったパスが、コンフィグレーションファイル４２内のフォースファイル項目に記述された、ファイル名に一致し又はディレクトリのパス以下のものである場合には、ステップＳ２へ進み、そうでなければステップＳ４へ進む。すなわち、リクエスト対象を示すパスが所定パスであればＣＧＩプログラムのうち、後述のget.cgiに対するリクエストであるとみなす。
【００３５】
（Ｓ４）Ｓ識別子を引数として静的リソース処理部３４３を呼び出す。
【００３６】
静的リソース処理部３４３はこれに応答して、Ｓ変数．パスで識別されるファイルの内容を静的リソース３７からＤＲＡＭ１４上に読出し、その識別子を、対応するＨＴＴＰ処理スレッド３４１に引き渡す。ＨＴＴＰ処理スレッド３４１はこれに応答して、このファイルの内容にリスポンスヘッダを付加し、リスポンスメッセージとして、ＯＳ３０及びＮＩＣ１８を介しＷｅｂクライアントマシーン２０へこのメッセージを送信する。
【００３７】
本実施例１によれば、処理粗振分部３４２において、クライアントからのリクエストＵＲＩに含まれるパスがコンフィグレーションファイル４２内のフォースファイル項目に記述された仮想ファイルパスと一致し又は仮想ディレクトリパス以下のものと判定されれば、Ｗｅｂアプリケーション３５に制御が移るので、Ｗｅｂアプリケーション３５に制御を移すためのプログラムファイルパスを省略でき、これにより３７及び３８の記述を簡単化することができるという効果を奏する。
【００３８】
次に、処理粗振分部３４２によりＷｅｂアプリケーション３５が呼び出された場合の処理を説明する。図２は、主にＷｅｂアプリケーション３５の構成を示す機能ブロック図である。
【００３９】
この呼出は、Ｗｅｂアプリケーション３５の処理細振分部３５０に対して行われる。図４は、処理細振分部３５０による処理を示すフローチャートである。
【００４０】
ここで、従来ではＣＧＩプログラムのそれぞれがプロセスとして起動されていたが、本実施例１では、ＣＧＩプログラムのそれぞれを１つのプロセスの中の関数（サブルーチン）として起動することにより、プロセス間通信による遅延を防止するとともに、複数のＣＧＩプログラムでリソースを共有して、全体として必要なメモリサイズを削減している。すなわち、ＣＧＩ方式の利点を有効利用するとともに、その欠点を補っている。
【００４１】
（Ｓ１０、Ｓ１１）Ｓ変数．パスに含まれるファイル名本体（ファイル名から.cgiを除いた部分）が"login"であればＳ識別子を引数として認証制御部３５１を呼び出し、図４の処理を終了する。
【００４２】
（Ｓ１２、Ｓ１３）該ファイル名本体が"get"であればＳ識別子を引数としてＧＥＴ処理制御部３５２を呼び出し、図４の処理を終了する。
【００４３】
（Ｓ１４、Ｓ１５）該ファイル名本体が"set"であればＳ識別子を引数としてＳＥＴ処理制御部３５３を呼び出し、図４の処理を終了する。
【００４４】
（Ｓ１６、Ｓ１７）該ファイル名本体が"image"であればＳ識別子を引数としてイメージ処理制御部３５４を呼び出し、図４の処理を終了し、そうでなければ、すなわちフォースファイルであれば、ステップＳ１３へ進む。
【００４５】
図２に戻って、ＧＥＴ処理制御部３５２は、Ｓ変数．クエリ文字列に含まれるパスを引数としてＨＴＭＬトランスレータ３５５を呼び出す。例えば、リクエスト行がGET /cgi-bin/get.cgi?htmfile=/start/start.html HTTP/1.1である場合、Ｓ変数．クエリ文字列はhtmfile=/start/start.htmlであり、このパス/start/start.htmlは、ＨＴＭＬテンプレートファイルのパスである。ＨＴＭＬトランスレータ３５５はこの呼出に応答して、図５（Ａ）に示す処理を行う。
【００４６】
ここで、ＨＴＭＬテンプレートファイル３８の各々について、図５（Ｂ）に示す如く、そのパスとそのファイルサイズに対応したバイト数とを対応させたバッファサイズテーブル３９が予め作成されている。このバイト数は例えば、ファイルサイズ自体、ファイルサイズの１．１倍又はファイルサイズに２５６バイトを加えたものなどである。
【００４７】
（Ｓ２０）バッファサイズテーブル３９から、指定されたテンプレートファイルに対応したバイト数を読取る。
【００４８】
（Ｓ２１）図１に示すＯＳ３０のメモリマネージャ３０２を介し、ＤＲＡＭ１４上のこのバイト数の一時記憶領域を獲得する。
【００４９】
（Ｓ２２）テンプレートファイルから、ステートメント行カウンタＳＬＣが示す行のステートメントを読み込み、このカウンタＳＬＣを１だけインクリメントする。
【００５０】
（Ｓ２３）ステップＳ２２で読み込むべきステートメントが存在しなかった場合にはステップＳ２９へ進み、そうでなければステップＳ２４へ進む。
【００５１】
（Ｓ２４）ステートメントがディレクティブ（ＨＴＭＬトランスレータ３５５に対する指示文）であれば、後述のようにその処理を行う。
【００５２】
（Ｓ２５〜Ｓ２８）ステートメントがコンテキスト・トークン（以下、単にトークンと称す。）であれば、後述のようにこれを対応する文字列で置換したものを該一時記憶領域に書き込み、そうでなければステートメントをそのまま該一時記憶領域に書き込む。次に、ステップＳ２２へ戻る。
【００５３】
ステップＳ２５、Ｓ２７又はＳ２８においては、次の処理も行われる。
【００５４】
（Ｓ２Ａ、Ｓ２Ｂ）該一時記憶領域に書き込む際に、該一時記憶領域が不足して書き込めない場合には、メモリマネージャ３０２を介し、ステップＳ２０で取得したサイズの所定％、例えば１０％だけ、一時記憶領域を拡大させる。
【００５５】
図６は、図５（Ａ）のステップＳ２７の詳細を示すフローチャートである。
【００５６】
（Ｓ３０）トークンからトークンボディを抽出する。ここにトークンとは例えば、#l_NetworkSetting#又は#f_GetIPAddress#のように、トークン開始記号#とトークン終了記号#とを含む文字列である。トークンのうち、#と#の間の文字列を、トークンボディと称す。トークンボディの先頭部分は、トークンの種類を示しており、先頭２文字がl_、f_である場合、それぞれ言語トークン、関数トークンであることを示し、先頭３文字がmsgである場合、メッセージ・トークンであることを示す。
【００５７】
（Ｓ３１）トークンボディの先頭２文字がl_であればステップＳ３２へ進みf_であればステップＳ３６へ進み、先頭３文字がmsgであればステップＳ３９へ進む。
【００５８】
（Ｓ３２）トークン名をハッシュ値に変換する。ここにトークン名とは、言語トークンにおけるトークンボディ中の３文字目以降の文字列である。
【００５９】
言語テーブルファイル４０は、各国語の言語テーブルファイルを有し、各テーブルは、トークン名のハッシュ値とトークン名の値である文字列とが対応付けられている。
【００６０】
（Ｓ３３）ステップＳ３２で変換されたハッシュ値をキーとして、指定された言語テーブルファイルの内容を検索し、対応する値を得る。例えば、トークン名がNetworkSetingの場合、指定された言語が英語であれば"Network Setting" が得られ、日本語であれば"ネットワーク設定"が得られる。
【００６１】
指定された言語は、最初は既定値であり、後述のようにして変更され、langクッキーに保持され、lang値により言語テーブルファイル４０内の１つが指定される。例えば、lang=0は英語を示し、lang=2は日本語を示す。
【００６２】
（Ｓ３４）トークンをその値で変換する。例えばlang=0で言語トークンが#l_NetworkSetting#である場合、このトークンが"Network Setting"に変換される。
【００６３】
ここで、処理関数群３５６内の各関数の引数及び返り値の形式は統一されており、任意の関数funcは、Ｃ言語でfunc(chr **IN,chr ***OUT)と表される。引数IN及び返り値OUTはともに文字列の１次元動的配列である。INよりもOUTの方に記号*が１つ多く付加されているのは、返り値OUTの配列要素数を関数側で変更できるようにするため、すなわち関数側で動的配列にすることができるようにするためである。
【００６４】
関数トークンの場合にはこれがその関数名の関数の返り値*OUT[0]に変換される。メッセージ・トークン#msgX#(Xは自然数）の場合、これが関数の返り値*OUT[X]に変換される。
【００６５】
（Ｓ３５）トークンの値にはトークンを含めることができ、この値にトークンが含まれている場合にはステップＳ３０へ戻り、そうでなければ図６の処理を終了する。
【００６６】
（Ｓ３６、Ｓ３７）関数トークンに引数が含まれていれば、引数を抽出する。
【００６７】
引数は、クエリ文字列と同じ形式で記述され、デリミタとしての&により複数の引数を関数トークンに含むことができる。関数トークンにおけるトークンボディの３文字目以降&まで（&が無い場合は最後まで）を関数名と称す。例えば、関数トークン#f_func&arg1=XXX&arg2=YYY&arg3=ZZZ#は、関数名がfunc、引数名arg1の値がXXX、引数名arg2の値がYYY、引数名arg3の値がZZZであることを示す。一般に、引き数名argXの値は引数IN[X]に代入される。
【００６８】
（Ｓ３８）関数トークンに含まれる関数名の関数に、関数トークンに含まれる引数を渡して、この関数を呼び出す。次にステップＳ３４へ進む。
【００６９】
この関数は、図２の処理関数群３５６に含まれている。関数は、ＤＢＭＳ３６を介してデータベース４１内のデータを読出し又は変更することができる。このデータには、画像形成装置の各種設定値やトナー残量、印刷枚数などの状態が含まれている。
【００７０】
（Ｓ３９）メッセージ・トークン#msgX#からインデックスＸ（Ｘ≧０）を取り出し、ステップＳ３４へ進む。
【００７１】
例えば、関数トークン#f_getDHCPMode#で識別される関数getDHCPModeが*OUT[0]="#l_dhcp_on#"を返し、ステップＳ３４で#f_getDHCPMode#が#l_dhcp_on#で置換され、ステップＳ３５からステップＳ３０へ戻る。lang=0の場合、ステップＳ３３で"DHCP ON"が取得され、ステップＳ３４で#l_dhcp_on#が"DHCP ON"で置換され、lang=2の場合、ステップＳ３３で"DHCP オン"が取得され、ステップＳ３４で#l_dhcp_on#が"DHCP オン"で置換される。
【００７２】
したがって、トークンを変数と言語の両方に応じて適当に変換することができるという効果を奏する。
【００７３】
他の例として、lang=2の場合、言語トークン#l_jobnum_msg#が"現在処理中のジョブは#f_getJobNum#個です。"に変換され、さらに、関数トークン#f_getJobNum#が*OUT[0]="10"に変換され、結果として、言語トークンl_jobnum_msg#が"現在処理中のジョブは10個です。"に変換される。lang=0の場合、言語トークン#l_jobnum_msg#が"#f_getJobNum# jobs are being processed"に変換され、さらに、関数トークン#f_getJobNum#が*OUT[0]="10"に変換され、結果として、言語トークンl_jobnum_msg#が"10 jobs are being processed"に変換される。
【００７４】
したがって、英語と日本語で文章中の変数の値"10" の位置が異なっても対応できるという効果を奏する。
【００７５】
本実施例１によれば、Ｗｅｂアプリケーション３５に含まれる複数の関数の返り値の形式が統一されているので、Ｗｅｂアプリケーションの全体構成を簡単化することができるとともにチームによるソフトウエア設計が容易になるという効果を奏し、機能を拡張又は変更した製品の開発期間短縮に寄与するところが大きい。
【００７６】
また、複数の関数のそれぞれが関数側で返り値を複数にすることができるので、１つの関数を実行して得られる情報を複数箇所でそれぞれ異なる目的に用いることができ、複雑な構成を簡単化することができるという効果を奏する。
【００７７】
ＤＢＭＳ３６は主に、設定値の変更に対する制限を課すものであり、値の範囲を制限したり、同時に設定値を変更できるクライアント数を一人に制限する。
【００７８】
図１４（Ａ）及び（Ｂ）は、Ｗｅｂクライアントマシーン２０と画像形成装置１０との間のメッセージ送受概略を示すシーケンス図である。
【００７９】
図１４（Ａ）において、Ｗｅｂクライアントマシーン２０のブラウザ上から画像形成装置１０のサイトのトップ頁を要求し、画像形成装置１０がこれに応答して、Ｗｅｂクライアントマシーン２０のブラウザ上に例えば図９（Ａ）に示すような画面が表示される。この画面のＨＴＭＬファイルは、言語選択のフォームと、印刷画面又はＦＡＸ送信画面への移動を指示するフォームとを有している。
【００８０】
この言語選択フォームにおいて、ユーザがプルダウンメニュー中の項目（言語）を選択し、Ｇｏボタンを押下すると、選択した言語の情報を含むリクエストメッセージが画像形成装置１０へ送信され、図２において、処理細振分部３５０からＧＥＴ処理制御部３５２へ処理が移り、次いでＨＴＭＬトランスレータ３５５により、トップページのテンプレートファイルに含まれる言語トークンが、選択した言語の文字列に変換され、これがＧＥＴ処理制御部３５２に返される。ＧＥＴ処理制御部３５２は、このリスポンスボディに、選択した言語のクッキーフィールドを付加し、ＨＴＴＰ処理スレッド３４１を介し残りのリスポンスヘッダを付加して、リクエストメッセージを完成させる。ＨＴＴＰ処理スレッド３４１は、このリスポンスメッセージを、ＯＳ３０及びＮＩＣ１８を介して、Ｗｅｂクライアントマシーン２０へ送信する。これにより、Ｗｅｂクライアントマシーン２０のブラウザには、選択した言語で図９（Ａ）に示す内容が表示される。このＨＴＴＰ処理スレッド３４１は、この送信後に消滅する。
【００８１】
Ｗｅｂクライアントマシーン２０から画像形成装置１０へ送信されるこれ以降のリクエストメッセージには、選択した言語を示すクッキーがリクエストヘッダに含まれるので、ブラウザに表示される文字列の言語が、選択したものとなる。
【００８２】
上記画面移動のフォームにおいて、ユーザがＦＡＸ送信画面のラジオボタンを選択し、移動ボタンを押下すると、リクエストＵＲＩにget.cgiを含むリクエストメッセージが画像形成装置１０へ送信され、上記同様にして画像形成装置１０によりリスポンスメッセージが生成され、これがＷｅｂクライアントマシーン２０に送信されて、ブラウザ上に図９（Ｂ）に示すような画面が表示される。
【００８３】
ユーザが、プルダウンメニューでＦＡＸ送信の宛先を選択し、次いで参照ボタンをクリックしてブラウザに対しファイル選択ダイアログを表示させ、Ｗｅｂクライアントマシーン２０のハードディスクに格納されているファイルを選択して送信ファイルを特定し、ＦＡＸ送信ボタンを押下すると、選択した宛先と送信ファイルの内容とを含むリクエストメッセージが画像形成装置１０へ送信される。
【００８４】
このリクエストメッセージに含まれるリクエスト行は例えば、POST /cgi-bin/image.cgi HTTP/1.1であり、ファイル名がimage.cgiであるので、図２の処理細振分部３５０からイメージ処理制御部３５４へ制御が移る。このメッセージのリクエストボディに含まれるクエリ文字列は例えば、func=sendFax&arg0=sendfile.pdf&arg1=1&okhtmfile=OK.html&failhtmfile=NG.htmlであり、これは上記Ｓ変数．クエリ文字列に格納されている。イメージ処理制御部３５４は、Ｓ識別子をイメージ処理部３５７へ渡し、イメージ処理部３５７はこれに基づいて、IN[0]="sendfile.pdf",IN[1]="1"を引数として処理関数群３５６中の関数sendFaxを呼出す。関数sendFaxでは、処理関数群３５６内の設定値取得関数を介して、データベース４１から又は後述のクッキーから、ＦＡＸ送信に使用する設定値を取得する。この点は、ＦＡＸ送信以外のイメージ処理についても同様である。関数sendFaxは、取得した設定値を用い、送信ファイルsendfile.pdfの内容をＦＡＸ送信用の画像データに変換し、アドレス帳内の１番目の宛先へＦＡＸを送信する。
【００８５】
上記送信が正常に行われたか否かの情報は、関数sendFaxにおいて返り値*OUT[0]に代入され、これがイメージ処理部３５７を介してイメージ処理制御部３５４に返される。イメージ処理制御部３５４は、上記クエリ文字列に基づき、*OUT[0]="OK"であれば、テンプレートファイルOK.htmlのパスをＧＥＴ処理制御部３５２に与えてOK.htmファイルを生成させ、*OUT[0]="NG"であれば、テンプレートファイルNG.htmlのパスをＧＥＴ処理制御部３５２に与えてNG.htmファイルを生成させる。本実施例では、テンプレートファイルの拡張子をhtmlとし、これに基づいて作成されたファイルの拡張子をhtmとしている。
【００８６】
例えば図１１（Ａ）に示す如く、テンプレートファイルOK.htmlにはメッセージ・トークン#msg1#が含まれ、図１１（Ｃ）に示す如く、テンプレートファイルNG.htmlにはメッセージ・トークン#msg1#及び#msg2#が含まれており、メッセージ・トークン#msg1#及び#msg2#はＨＴＭＬトランスレータ３５５による図６のステップＳ３９及びＳ３４の処理により、それぞれ*OUT[1]及び*OUT[2]で置換される。これにより、テンプレートファイルOK.html及びNG.htmlからそれぞれ図１１（Ｂ）及び（Ｄ）に示すようなHTMLファイルOK.htm及びNG.htmがＧＥＴ処理制御部３５２により生成される。いずれの場合も、ＧＥＴ処理制御部３５２及びＨＴＴＰ処理スレッド３４１を介しリスポンスヘッダがこれに付加されて、Ｗｅｂクライアントマシーン２０へ送信される。
【００８７】
ＧＥＴ処理制御部３５２はまた、設定に応じて、送信完了又は送信失敗をユーザに通知するため、HTMLファイルOK.htm又はNG.htmの内容の電子メールを作成して、メール送信サーバ３３のメールボックスへ格納させる（図１０参照）。
【００８８】
本実施例１によれば、処理関数群３５６内の各関数の返り値の形式が上述のように統一されているので、同一テンプレートファイルOK.html及びNG.htmlに基づき、ＦＡＸ送信結果以外のイメージ処理結果又は設定値変更結果を示すリスポンスメッセージボディも作成することができ、構成が簡単になる。
【００８９】
また、処理の種類毎に異なるテンプレートファイルを用いても、関数の返り値とメッセージ・トークンとが統一的に対応づけられているので、例えば図１１（Ｅ）に示すように、処理結果のテンプレートファイルを容易に作成できるという効果を奏する。図１１（Ｆ）は、図１１（Ｅ）に示すテンプレートファイルOK.htmlに基づいて作成されたHTMLファイルOK.htmを示す。
【００９０】
図９（Ｂ）に戻って、プルダウンメニューに含まれる宛先の数は、後述する図９（Ｃ）画面を用いてユーザが追加又は削除することにより変化する。このような変化に対応して、図１２（Ａ）に示すようなテンプレートファイルが用いられる。このテンプレートファイルには、ｆｏｒディレクティブ<!-- for f_getCountOfAddress -->とｅｎｄ＿ｆｏｒディレクティブ<!-- end_for -->とが含まれる。ディレクティブは、その開始記号<!--及び終了記号-->で識別される。
【００９１】
ｆｏｒディレクティブとｅｎｄ＿ｆｏｒディレクティブとの間に配置されたステートメントに対する処理は、ｆｏｒディレクティブに含まれる繰り返し回数f_getCountOfAddressだけ繰り返される。この繰り返し回数は、定数であってもよいが、この例では、トークン識別記号#を省略した関数トークンf_getCountOfAddressが変数として用いられている。この関数トークンで識別される関数getCountOfAddressにより、アドレス帳に含まれる宛先の数が取得されて、その返り値*OUT[0]で関数トークンが置換される。
【００９２】
オプションタグに含まれるトークン"#f_m_Count&arg0=0#"中のf_m_は、関数Countが多価関数であることを示している。この関数は、上述の引数及び返り値の形式が統一された関数と同一であるが、ｆｏｒディレクティブでの繰り返しが何回目であるかを示す内部カウンタｉの値により、関数の取り扱いが異なる。カウンタｉが初期値０（繰り返し１回目）である場合のみこの関数が呼び出され、ｉ≧０の各ｉについて多価関数トークン"#f_m_Count&arg0=0#"が*OUT[i]で置換される。これらのことは、アドレス帳内のｉ番目の宛先を*OUT[i]に代入する多価関数トークン#f_m_getAddress#についても同様である。
【００９３】
ディレクティブは、上述の図５（Ａ）におけるステップＳ２５で処理される。図７は、このステップＳ２５での、主にｆｏｒディレクティブに対する処理の詳細を示すフローチャートである。
【００９４】
（Ｓ４０）ｆｏｒディレクティブ（for DIR）であればステップＳ４１へ進み、そうでなければステップＳ４Ｃへ進む。
【００９５】
（Ｓ４１）繰り返しカウンタｉに初期値０を代入し、また、処理対象のステートメントがテンプレートファイル内の何行目であるかを示す行カウンタＳＬＣの値をＳＬＣ０に代入して保存する。
【００９６】
（Ｓ４２）テンプレートファイルから、カウンタＳＬＣが示す行のステートメントを読み込み、この行カウンタを１だけインクリメントする。
【００９７】
（Ｓ４３）このステートメントに多価関数トークンが含まれていればステップＳ４４へ進み、そうでなければステップＳ４７へ進む。
【００９８】
（Ｓ４４、Ｓ４５）ｉ＝０のときのみ、処理関数群３５６内の、多価関数トークンで識別される関数を呼び出す。この際、多価関数トークンに引数が含まれていればこれを抽出してこの関数に引き渡す。例えば多価関数トークンが"#f_m_Count&arg0=0#"である場合、IN[0]="0"を引き渡して関数Countを呼び出す。関数Countの*OUT[i]は、in[0]を数値に変換しこれに値ｉを加えたものを文字型に変換したものである。
【００９９】
（Ｓ４６）多価関数トークンを*OUT[i]で置換し、ステップＳ４８へ進む。
【０１００】
（Ｓ４７）ステートメントに応じた処理を行う。
【０１０１】
（Ｓ４８）end_forディレクティブであればステップＳ４９へ進み、そうでなければステップＳ４２へ戻る。
【０１０２】
（Ｓ４９）繰り返しカウンタｉを１だけインクリメントする。
【０１０３】
（Ｓ４Ａ）ｉの値がｆｏｒディレクティブ内で指定された値ｉｍａｘに等しければ図７の処理を終了し、そうでなければステップＳ４Ｂへ進む。
【０１０４】
（Ｓ４Ｂ）ステートメント行カウンタＳＬＣにＳＬＣ０を代入し、ステップＳ４２へ戻る。
【０１０５】
（Ｓ４Ｃ）他のディレクティブに対する処理を行って図７の処理を終了する。
【０１０６】
このような処理を含む図５（Ａ）の処理により、図１２（Ａ）に示すテンプレートファイルに基づいて、図１２（Ｂ）に示すようなＨＴＭＬファイルがリスポンスボディとしてＨＴＭＬトランスレータ３５５により生成される。
【０１０７】
図１２（Ａ）と図１２（Ｂ）とを比べると、簡単化されたテンプレートファイルで任意の項目数のプルダウンメニューを作成可能であることが明らかである。上記ｆｏｒディレクティブは、Ｃ言語等の命令文で用いられる他のｗｈｉｌｅ文やｄｏ−ｌｏｏｐなどの制御ループにも同様に適用可能である。
【０１０８】
次に、ＳＥＴ処理の具体例として、アドレス帳内の項目（宛先）を追加、変更又は削除する処理を説明する。
【０１０９】
図１４（Ｂ）は、図９（Ａ）の画面から図９（Ｂ）の画面へ移った後、「アドレス帳を開く」ボタンをクリックして図９（Ｃ）の画面へ移り、編集処理を行い、これが成功した場合を示す。
【０１１０】
「アドレス帳を開く」ボタンをクリックして得られるリクエストメッセージに対応したリスポンスメッセージは、上述の図９（Ａ）で「移動」ボタンをクリックして得られるリクエストメッセージに対応したリスポンスメッセージと同様にして作成される。このメッセージのリスポンスボディは、図１３（Ａ）に示すテンプレートファイルに基づいてＨＴＭＬトランスレータ３５５により生成され、例えば図１３（Ｂ）に示すものである。図１３（Ａ）中のｆｏｒディレクティブ及び多価関数トークンは、図１２（Ａ）中のものと同様である。
【０１１１】
図９（Ｃ）において、リストボックス内の項目をクリックして選択すると、この項目が反転表示されるとともに、クライアンドサイドのオンクリックイベントハンドラが呼び出されて、選択した項目が宛先ボックス内に表示される。ユーザが、この状態で「削除」のラジオボタンを選択し、または宛先ボックス内の文字列を変更して「変更」のラジオボタンを選択し、実行ボタンを押下すると、宛先ボックス内のデータと、選択した「変更」又は「削除」を示すデータと、図１３（Ｂ）に示すＦＯＲＭタグの属性値とを含むリクエストメッセージが、画像形成装置１０へ送信される。
【０１１２】
画像形成装置１０では、このメッセージに対応した上述のＳ識別子を引数としてＳＥＴ処理制御部３５３が起動され、処理関数群３５６内の対応する関数及びＤＢＭＳ３６を介してデータベース４１内のアドレス帳データが更新又は削除される。
【０１１３】
また、ユーザが、追加しようとする宛先を図９（Ｃ）の宛先ボックスに記入し、「追加」ラジオボタンを選択して実行ボタンを押下すると、前記と同様に、この宛先と、追加を示すデータと、図１３（Ｂ）に示すＦＯＲＭタグの属性値とを含むリクエストメッセージが画像形成装置１０へ送信され、ＳＥＴ処理制御部３５３、処理関数群３５６及びＤＢＭＳ３６を介しデータベース４１内のアドレス帳データに、この宛先が追加される。
【０１１４】
設定値変更の他の例として、図９（Ｂ）に示す画面でＦＡＸ送信設定値ボタンを押下すると、そのリクエストメッセージに対応して、図１０に示すような画面を表示するためのリスポンスメッセージが画像形成装置１０からＷｅｂクライアントマシーン２０へ送信される。この画面には、ＦＡＸ受信までのコール回数選択ドロップダウンリスト、送信完了／失敗通知手段選択ドロップダウンリスト及びその宛先並びにアドレス帳選択ドロップダウンリストが表示されている。通知手段選択ドロップダウンリストには「ｅ−ｍａｉｌ」、「携帯電話」、「無し」の項目がある。
【０１１５】
ここで、図２のデータベース４１には、クライアントのＩＤと通知手段ごとの宛先アドレスとが登録されており、図１０で宛先が「登録先」となっている場合には、この登録された宛先が用いられる。図１０で選択されたアドレス帳は、図９（Ｂ）及び（Ｃ）で用いられる。
【０１１６】
設定値変更の種類には、マイ設定と共通設定とがある。マイ設定はクライアント毎の設定であり、共通設定は各クライアントに共通の設定である。
【０１１７】
マイ設定は、共通設定の一部または全部を、共通設定を変更せずにクッキーによりユーザ毎に設定値を書き換えるものである。このクッキーの値は、処理関数群３５６内の設定値取得関数で用いられる。すなわち、この関数は、該当するものがクッキーにあればその値を取得し、無ければＤＢＭＳ３６を介しデータベース４１内の該当する設定値（共通設定値）を取得する。
【０１１８】
共通設定は、データベース４１に格納された設定であり、クッキーにより書き換えられない項目の設定値として用いられる。すなわち、処理関数群３５６内の設定値取得関数は、マイ設定でクッキーにより個別に変更されない項目については、データベース４１内の共通設定値を取得する。
【０１１９】
図１０に示す「共通」は、マイ設定において共通設定の値が用いられ（クッキーを使用しない）又は共通設定において変更しないことを示している。共通設定値の変更は、管理者権限でログインしている場合のみ許可される。管理者権限でログインしているか否かは、後述の認証クッキーで判定される。
【０１２０】
なお、管理者権限でログインしている場合、処理関数群３５６内の設定値取得関数はデータベース４１内の共通設定値を取得する。
【０１２１】
「変更」ボタンを押下すると、図１０に示す情報を含むリクエストメッセージが画像形成装置１０へ送信され、図２のＳＥＴ処理制御部３５３及びこれに関係した部分で、図８に示すような処理が行われる。
【０１２２】
（Ｓ５０）ＳＥＴ処理制御部３５３は、Ｓ変数に基づいて例えば、IN[0]="my"（「マイ設定」）,IN[1]="common"（ＦＡＸ受信までのコール回数が「共通」）,IN[2]="e-mail"（通知手段が「e-mail」）,IN[3]="same"（宛先が「登録先」）,IN[4]="DesignDepartment"（アドレス帳が「DesignDepartment」） とし、ＦＡＸ送信設定値変更関数を呼び出す。
【０１２３】
（Ｓ５１）ＦＡＸ送信設定値変更関数は、IN[0]に基づいて、共通設定とマイ設定のどちらが選択されたかを判定し、前者と判定した場合にはステップＳ５２へ進み、後者と判定した場合にはステップＳ５７へ進む。
【０１２４】
（Ｓ５２）ＦＡＸ送信設定値変更関数は、認証クッキーに基づいて、管理者権限でログインしているか否かを判定し、肯定判定した場合にはステップＳ５３へ進み、そうでなければステップＳ５６へ進む。
【０１２５】
（Ｓ５３）ＦＡＸ送信設定値変更関数は、IN[1]〜IN[4]の値で、ＤＢＭＳ３６を介しデータベース４１に格納されている対応する設定値を更新する。但し、IN[1]="common"であれば、ＦＡＸ受信までのコール回数を更新しない。また、IN[3]="same"であれば、通知先を更新しない。
【０１２６】
（Ｓ５４）ＦＡＸ送信設定値変更関数は、IN[3]についてＤＢＭＳ３６が設定値変更を許可した場合には*OUT[0]に"OK"を代入し、禁止した場合には*OUT[0]に"NG"を代入するとともにその原因を示す文字列をＤＢＭＳ３６から取得して*OUT[1]に代入する。設定値変更関数からＳＥＴ処理制御部３５３にリターンする。
【０１２７】
（Ｓ５５）ＳＥＴ処理制御部３５３は、*OUT[0]が"OK"、"NG"又は"NotAuth"であればそれぞれ、テンプレートファイルOK.html、NG.html又はNotAuth.htmlのパスを引数としてＧＥＴ処理制御部３５２を呼び出す。
【０１２８】
ＧＥＴ処理制御部３５２はこれに応答して、ＨＴＭＬトランスレータ３５５を介しテンプレートファイルに基づいてＨＴＭＬファイルを作成させ、このファイルにリスポンスヘッダの一部を付加する。作成されたNotAuth.htmには、そのフォームにユーザのＩＤ及びパスワードの入力ボックスが記述されている。ＧＥＴ処理制御部３５２は、ＨＴＴＰ処理スレッド３４１を介して残りのリスポンスヘッダを付加させ、リスポンスメッセージとしてＷｅｂクライアントマシーン２０へ送信させ、図８の処理を終了する。
【０１２９】
なお、ユーザのＩＤ及びパスワードは、画像形成装置１０のサイトのトップ頁でも入力させるようにしてもよい。
【０１３０】
（Ｓ５６）*OUT[0]に"NotAuth"を代入し、ステップＳ５５へ進む。
【０１３１】
（Ｓ５７）上記Ｒ識別子で識別される構造体変数の対応する要素の値、すなわち図１０の設定値の名前とその値の組をそれぞれ、値が「共通」又は「登録先」であるものを除き、クッキーにセットする。このクッキーは、ステップＳ５５において、ヘッダフィールドとされる。
【０１３２】
（Ｓ５８）IN[1]が"common"でない場合、文字数等が条件を満たしているか否かを判定し、肯定判定した場合には*OUT[0]に"OK"を代入し、否定判定した場合には*OUT[0]に"NG"を代入するとともにその原因を示す文字列を*OUT[1]に代入する。次にステップＳ５５へ進む。
【０１３３】
このような処理により、マイ設定と共通設定とを簡単かつ容易に行うことができるとともに、ユーザに応じたサービスを提供することができるという効果を奏する。
【０１３４】
また、ＳＥＴ処理制御部３５３での処理が成功したか否かに応じて、ＧＥＴ処理制御部３５２を介しリスポンスボディを生成させるので、ＳＥＴ処理でＧＥＴ処理を有効利用してソフトウエア構成を簡単化することができるという効果を奏する。
【０１３５】
なお、共通設定は、管理者権限で操作パネル１５を操作して直接変更することもできる。
【０１３６】
また、ステップＳ５２で正当な権限がないと判定され、ブラウザ上のNotAuth.htm表示画面でユーザのＩＤ及びパスワードが入力されて、これに対応したデータがリクエストメッセージとして画像形成装置１０へ送信される。このメッセージのリクエスト行は例えば、POST /cgi-bin/login.cgi HTTP/1.1であり、上述のＳ識別子を引数として、図２において認証制御部３５１が起動される。
【０１３７】
認証制御部３５１は、Ｓ変数の要素に格納されているユーザの前記データを引数として、処理関数群３５６内の関数Authを呼び出す。この関数は、ＤＢＭＳ３６を介し、このデータに対応したデータがデータベース４１内に登録されているか否かを判定し、肯定判定した場合には*OUT[0]に"OK"を代入し、否定判定した場合には*OUT[0]に"NotAuth"を代入する。認証制御部３５１は、*OUT[0]の内容に応じて、ＳＥＴ処理の場合と同様の処理を行う。ただし、認証制御部３５１は、*OUT[0]="OK"の場合、認証されたこと及び管理者権限が有るか否かを示す認証クッキー、例えば、Set-Cookie: login=admin_1068625073を、リスポンスヘッダフィールドとして、リスポンスボディに付加する。Ｗｅｂクライアントマシーン２０がこのクッキーを受け取った後は、Ｗｅｂクライアントマシーン２０から画像形成装置１０へリクエストメッセージが送信される毎に、これに該クッキーが含まれる。
【０１３８】
本実施例１によれば、Ｗｅｂアプリケーション３５において、処理細振分部３５０により、クライアントからのリクエストＵＲＩに含まれるパスのファイル名に基づいて複数の処理制御部３５１〜３５４のいずれかに制御を移させ、複数の処理制御部３５１〜３５４のそれぞれが直接又は間接的に処理関数群３５６の中の少なくとも１つを介して処理を行わせるので、処理関数群３５６に新たな関数を追加したり、処理関数群３５６の中の１つ以上の関数を変更したり、複数の処理制御部３５１〜３５４に新たな処理制御部を追加することにより、容易に機能を拡張又は変更することができるという効果を奏し、新製品の開発期間短縮に寄与するところが大きい。
【０１３９】
なお、本発明には外にも種々の変形例が含まれる。
【０１４０】
例えば、上記実施例ではＣＧＩを用いた場合を説明したが、本発明はＣＧＩに限定されない処理の手法に特徴があるので、ＣＧＩの替わりにＡＳＰやＪＳＰなどを用いた構成であってもよい。
【０１４１】
また、関数の返り値は、関数の値であってもよい。関数は、関数とサブルーチンを区別するプログラム言語におけるサブルーチン、又はクラスのメンバ関数などであってもよい。引数は、メンバ変数を介して関数へ引き渡す構成であってもよい。
【０１４２】
さらに、テンプレートファイルはＨＴＭＬファイルを作成するためのものに限定されず、ＸＭＬファイルなどの他のファイルを作成するためのものであってもよい。
【０１４３】
また、メッセージ・トークンは、メッセージ以外にも利用可能である。
【０１４４】
また、図３のステップＳ３において、パスに含まれるファイル名の拡張子がテンプレートファイルであることを示している場合に、ステップＳ２へ進む構成であってもよい。図４において、ファイル名拡張子が"cgi"でなければステップＳ１３へ進むようにしてもよい。フォースファイル項目のパス及びこれと比較されるパスは、実パスであってもよい。
【０１４５】
さらに、図３と図４の処理を１つにまとめた構成や、ＤＢＭＳ３６を用いない構成であってもよい。メインＷｅｂサーバ３４、Ｗｅｂアプリケーション３５及びＤＢＭＳ３６はそれぞれプロセスとして動作する構成であってもよい。
【０１４６】
また、汎用のｉｎｅｔｄ３１及びｈｔｔｐｄ３２を用いずに、これらの機能をＨＴＴＰ処理スレッド生成部３４０に含めた構成であってもよい。
【０１４７】
また、上記実施例では情報処理装置が画像形成装置である場合を説明したが、本発明はこれに限定されず、本発明は特許請求の範囲に記載された構成を含むものであればよい。
【図面の簡単な説明】
【０１４８】
【図１】主に画像形成装置のソフトウエア構成を示す機能ブロック図である。
【図２】主に図１中のＷｅｂアプリケーションの構成を示す機能ブロック図である。
【図３】図１中の処理粗振分部による処理を示すフローチャートである。
【図４】図２中の処理細振分部による処理を示すフローチャートである。
【図５】（Ａ）は図２中のＨＴＭＬトランスレータによる処理を示すフローチャートであり、（Ｂ）はＨＴＭＬテンプレートファイルの各々についてそのパスとファイルサイズに対応したバイト数とを対応させたバッファサイズテーブルの説明図である。
【図６】図５（Ａ）中のステップＳ２７の詳細を示すフローチャートである。
【図７】図５（Ａ）中のステップＳ２５での、主にｆｏｒディレクティブに対する処理の詳細を示すフローチャートである。
【図８】図１０に示すブラウザ上の「変更」ボタン押下に応答した、画像形成装置のＳＥＴ処理制御部及びこれに関係した部分での処理を示すフローチャートである。
【図９】（Ａ）〜（Ｃ）はそれぞれ、クライアントのブラウザ上に表示されるトップ頁画面、ＦＡＸ送信画面及びアドレス帳編集画面を示す図である。
【図１０】クライアントのブラウザ上に表示されるＦＡＸ送信設定値変更画面を示す図である。
【図１１】（Ａ）は処理成功の場合に汎用される、メッセージ・トークンを含んだＨＴＭＬテンプレートファイルの説明図、（Ｂ）はこのＨＴＭＬテンプレートファイルに基づいてＨＴＭＬトランスレータにより生成されたＨＴＭＬファイルの説明図、（Ｃ）は処理失敗の場合に汎用される、メッセージ・トークンを含んだＨＴＭＬテンプレートファイルの説明図、（Ｄ）はこのＨＴＭＬテンプレートファイルに基づいてＨＴＭＬトランスレータにより生成されたＨＴＭＬファイルの説明図、（Ｅ）はＦＡＸ送信処理成功の場合に用いられる、メッセージ・トークンを含んだＨＴＭＬテンプレートファイルの説明図、（Ｆ）はこのＨＴＭＬテンプレートファイルに基づいてＨＴＭＬトランスレータにより生成されたＨＴＭＬファイルの説明図である。
【図１２】（Ａ）は図９（Ｂ）に示す画面に対応したＨＴＭＬファイルを作成するための、多価関数トークンを含むＨＴＭＬテンプレートファイルの説明図、（Ｂ）はこのＨＴＭＬテンプレートファイルに基づいてＨＴＭＬトランスレータにより生成されたＨＴＭＬファイルの説明図である。
【図１３】（Ａ）は図９（Ｃ）に示す画面に対応したＨＴＭＬファイルを作成するための、多価関数トークンを含むＨＴＭＬテンプレートファイルの説明図、（Ｂ）はこのＨＴＭＬテンプレートファイルに基づいてＨＴＭＬトランスレータにより生成されたＨＴＭＬファイルの説明図である。
【図１４】（Ａ）は図９（Ａ）及び（Ｂ）に関係した、Ｗｅｂクライアントマシーンと画像形成装置との間のメッセージ送受概略を示すシーケンス図、（Ｂ）は図９（Ａ）〜（Ｃ）に関係した、Ｗｅｂクライアントマシーンと画像形成装置との間のメッセージ送受概略を示すシーケンス図である。
【図１５】本発明の実施例１に係る画像形成システムのハードウエア概略ブロック図である。
【符号の説明】
【０１４９】
１０  画像形成装置
１１  ＭＰＵ
１２  インターフェイス
１３  ＰＲＯＭ
１４  ＤＲＡＭ
１５  操作パネル
１６  プリンタ
１７  スキャナ
１８  ＮＩＣ
１９  ＦＡＸモデム
２０、２１  Ｗｅｂクライアントマシーン
２８  公衆回線網
２９  ＦＡＸ装置
３０  ＯＳ
３００  ＮＩＣドライバ
３０１  メモリマネージャ
３１  ｉｎｅｔｄ
３２  ｈｔｔｐｄ
３３  メール送信サーバ
３４  Ｗｅｂサーバ
３４０  ＨＴＴＰ処理スレッド生成部
３４１  ＨＴＴＰ処理スレッド
３４２  処理粗振分部
３４３  静的リソース処理部
３５  Ｗｅｂアプリケーション
３５０  処理細振分部
３５１  認証制御部
３５２  ＧＥＴ処理制御部
３５３  ＳＥＴ処理制御部
３５４  イメージ処理制御部
３５５  ＨＴＭＬトランスレータ
３５６  処理関数群
３５７  イメージ処理部
３６  ＤＢＭＳ
３７  静的リソース
３８  ＨＴＭＬテンプレートファイル
３９  バッファサイズテーブル
４０  言語テンプレートファイル
４１  データベース
４２  コンフィグレーションファイル
【図１】
0005389343.tif 000002
【図２】
0005389343.tif 000003
【図３】
0005389343.tif 000004
【図４】
0005389343.tif 000005
【図５】
0005389343.tif 000006
【図６】
0005389343.tif 000007
【図７】
0005389343.tif 000008
【図８】
0005389343.tif 000009
【図９】
0005389343.tif 000010
【図１０】
0005389343.tif 000011
【図１１】
0005389343.tif 000012
【図１２】
0005389343.tif 000013
【図１３】
0005389343.tif 000014
【図１４】
0005389343.tif 000015
【図１５】
0005389343.tif 000016