(57)【特許請求の範囲】
【請求項１】
コピー、プリント、スキャン又はファクシミリ受信の機能のうち２つ以上の機能を備えた画像形成装置において、
プログラムに従って動作するプロセッサと、
該プロセッサに結合され、該プログラムが格納される記憶手段と、
該プロセッサに結合され、該２つ以上の機能において使用される複数の画像データ入力手段と、
該プロセッサに結合され、指示を入力する指示入力手段と、
該プロセッサに結合され、該２つ以上の機能において使用される画像データ出力手段と、
を有し、該プログラムは、
各機能のジョブを、該複数の画像データ入力手段のうちの対応するものから画像データを入力するインプットジョブステップと、該インプットジョブステップで入力された画像データのフォーマットを各ジョブに共通の特定のフォーマットに変換するクリエイトジョブステップと、該フォーマットに変換された画像データを編集するエディットジョブステップと、該編集された画像データを直接又はフォーマット変換して該画像データ出力手段に供給するアウトプットジョブステップとに分けたとき、それぞれのジョブステップで実行される機能モジュールを含む機能モジュール群と、
該指示入力手段からのジョブ選択指示及び起動指示に応じて、各ジョブステップの機能モジュールを、選択的に、かつ、同一ジョブの同一頁について、該インプットジョブステップ、該クリエイトジョブステップ、該エディットジョブステップ及び該アウトプットジョブステップの順に起動させるジョブ実行制御部と、
を有することを特徴とする画像形成装置。
【請求項２】
該記憶手段にはさらに、各機能のジョブの各ジョブステップで実行される機能モジュールの識別情報を該ジョブステップと対応させた機能モジュール組み合わせ情報が格納され、
該プログラムの該ジョブ実行制御部は、
該ジョブ選択指示に応じて、実行すべき機能モジュールの識別情報を該機能モジュール組み合わせ情報から抽出して各ジョブステップに振り分けるとともに、該設定情報を各ジョブステップに振り分けるジョブ制御部と、
該振り分けられた識別情報と該振り分けられた設定情報とに基づいて、該インプットジョブステップ、クリエイトジョブステップ、エディットジョブステップ及びアウトプットジョブステップに対応した機能モジュールを、同一ジョブの同一頁について、この順に起動させるジョブステップ制御部と、
を有することを特徴とする請求項１に記載の画像形成装置。
【請求項３】
該特定のデータフォーマットは、ビットマップ形式であることを特徴とする請求項１に記載の画像形成装置。
【請求項４】
該画像データの編集は、複数ページ分の画像データを縮小して単一ページに配置する集約処理を含むことを特徴とする請求項１乃至３のいずれか１つに記載の画像形成装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コピー、プリント、スキャン又はファクシミリの機能のうち２つ以上の機能を備えた画像形成装置に関する。
【背景技術】
【０００２】
画像形成装置の一種である複合機は、複数の機能で共通のハードウェア資源を用いるので、全体としてコストを低減できるとともに、省スペース化を図ることができる。
【０００３】
下記特許文献１には、ＵＮＩＸなどの汎用オペレーティングシステム（汎用ＯＳ）を用い、コピー、プリント、スキャン及びファクシミリの各アプリケーションの共通機能を括りだして汎用ＯＳとともにプラットフォームを構成することにより、各アプリケーションのプログラムステップ数を低減して、プログラム開発効率を高めることが開示されている。
【０００４】
しかしながら、ジョブ種別毎にアプリケーションを備え、各アプリケーションの共通機能を括り出しただけなので、アプリケーション毎に独自のジョブ生成モジュールが用いられ、各ジョブのジョブステップ間の関連性が低いので、全体の構成に統一性がなく、煩雑になり、アプリケーション開発効率を低下させる原因となる。
【０００５】
また、各ジョブのジョブステップ間の関連性が低いので、ユーザへの詳細なジョブ状況表示処理が複雑になる。
【特許文献１】特開２００２−８４３８３号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
本発明の目的は、このような問題点に鑑み、複数種のジョブのジョブステップ間を関連付けて統一化することにより、アプリケーション開発効率を高めることが可能な画像形成装置を提供することにある。
【０００７】
本発明のさらに他の目的は、簡単な構成で、複数種のジョブのジョブステップ間を関連付けることにより、ユーザへの詳細なジョブ状況表示処理を簡単化かつ統一化することが可能な画像形成装置を提供することにある。
【課題を解決するための手段】
【０００８】
本発明による画像形成装置の第１態様では、コピー、プリント、スキャン又はファクシミリ受信の機能のうち２つ以上の機能を備えた画像形成装置において、
プログラムに従って動作するプロセッサと、
該プロセッサに結合され、該プログラムが格納される記憶手段と、
該プロセッサに結合され、該２つ以上の機能において使用される複数の画像データ入力手段と、
該プロセッサに結合され、指示を入力する指示入力手段と、
該プロセッサに結合され、該２つ以上の機能において使用される画像データ出力手段と、
を有し、該プログラムは、
各機能のジョブを、該複数の画像データ入力手段のうちの対応するものから画像データを入力するインプットジョブステップと、該インプットジョブステップで入力された画像データのフォーマットを変換するクリエイトジョブステップと、該フォーマットに変換された画像データを編集するエディットジョブステップと、該編集された画像データを直接又はフォーマット変換して該画像データ出力手段に供給するアウトプットジョブステップとに分けたとき、それぞれのジョブステップで実行される機能モジュールを含む機能モジュール群と、
該指示入力手段からのジョブ選択指示及び起動指示に応じて、各ジョブステップの機能モジュールを、選択的に、かつ、同一ジョブの同一頁について、該インプットジョブステップ、該クリエイトジョブステップ、該エディットジョブステップ及び該アウトプットジョブステップの順に実行させるジョブ実行制御部とを有する。
【０００９】
本発明による画像形成装置の第２態様では、第１態様において、該クリエイトジョブステップの機能モジュールは、該インプットジョブステップで入力された画像データのフォーマットを、各ジョブに共通の特定のフォーマットに変換するものである。
【発明の効果】
【００１０】
上記第１態様の構成によれば、複数のジョブがいずれも、インプットジョブステップと、クリエイトジョブステップと、エディットジョブステップと、アウトプットジョブステップとに分けられ、ユーザのジョブ選択に応じて、ジョブ実行制御部が各ジョブステップの機能モジュールを、選択的に、かつ、同一ジョブの同一頁について、該インプットジョブステップ、該クリエイトジョブステップ、該エディットジョブステップ及び該アウトプットジョブステップの順に起動させるので、複数種のジョブを実行可能なアプリケーションが１つに統合されるとともに、複数種のジョブのジョブステップ間が関連付けられて統一化され、これにより、アプリケーションの構成が整理されて単純化され、アプリケーション開発効率を高めることが可能となる。
【００１１】
また、このような統合化及び統一化により、ジョブステップの処理情報に対応したジョブ状況表示処理を簡単化かつ統一化することができる。
【００１２】
上記第２態様の構成によれば、クリエイトジョブステップにおいて、インプットジョブステップで入力された画像データのフォーマットが、各ジョブに共通の特定のフォーマットに変換されるので、編集処理について全ジョブ間でソフトウェア資源の共有化が図られ、これにより、ソフトウェア開発効率を高めることができる。
【００１３】
本発明の他の目的、構成及び効果は以下の説明から明らかになる。
【実施例１】
【００１４】
図１５は、本発明の実施例１に係る画像形成装置１０のハードウェア概略構成を示すブロック図である。
【００１５】
この画像形成装置１０は、コピー、プリント、スキャン、ファクシミリ送信及びファクシミリ受信機能を有し、プロセッサ１１に、チップセット１２を介してメモリ１３、ハードディスク装置１４、拡張カード１５〜１８、ネットワークインタフェースカード（ＮＩＣ）１９及び通信モデム２０が結合され、拡張カード１５〜１８にそれぞれ操作・表示パネル２５、搬送装置等２６、プリントエンジン２７及びスキャンエンジン２８が結合されている。例えば、拡張カード１５〜１７はＰＣＩカードであり、拡張カード１８はＰＣＩバス用ＳＣＳＩインタフェースカードである。また、ＮＩＣ１９及び通信モデム２０はそれぞれ、外部の通信モデム２０及び公衆回線３１に結合されている。搬送装置等２６は、用紙搬送装置、定着装置及びフィニッシャ等を含む。
【００１６】
ハードディスク装置１４には、マルチスレッド機能を備えた汎用オペレーティングシステム（ＯＳ）と、このＯＳ上で動作する統合アプリケーションと、ＯＳの下で動作するデバイスドライバとを備えている。
【００１７】
図１は、このアプリケーション４０の要部全体構成を示す概略ブロック図である。
【００１８】
上記引用文献１がジョブ種別毎にアプリケーションを備えているのに対し、本実施例１の特徴の１つは、コピー、プリント、スキャン及びファクシミリ送信の各ジョブを１つの統合型アプリケーションで処理し、かつ、各ジョブを複数のジョブステップに統一的に分割することにより、ソフトウェア構成を整理して、ソフトウェア開発効率を高めることができる点である。
【００１９】
各ジョブの実行は、機能モジュール群４１から選択したものを順次実行することで遂行される。機能モジュール群４１は、これら４つのジョブステップに対応して、入力機能モジュール群４１０、クリエイト機能モジュール群４１１、エディット機能モジュール群４１２及び出力機能モジュール群４１３に分類される。
【００２０】
図２は、機能モジュール群４１の構成を示すブロック図である。各機能モジュールには、ジョブ制御及びジョブステップ制御において識別されるコードが付されている。
【００２１】
入力機能モジュール群４１０は、コード００、０１及び０２の機能モジュールを含んでおり、それぞれ図１５のスキャンエンジン２８、ＮＩＣ１９及び通信モデム２０からデータを取得してメモリ１３に格納させる。
【００２２】
クリエイト機能モジュール群４１１は、コード１０、１１及び１２の機能モジュールを含んでおり、それぞれコード００、０１及び０２の機能モジュールでメモリ１３に格納された画像データの１頁分を、展開されたビットマップデータに変換するものである。コード１１の機能モジュールは、ＲＩＰ処理を行うものであり、コード１０及び１２の機能モジュールは、圧縮されたデータの伸長処理を行うものである。
【００２３】
クリエイト機能モジュール群４１１での処理により、入力装置によらず、データフォーマットが統一されるので、入力装置に依存しない共通の処理を行うことができる。エディット機能モジュール群４１２は、コード２０、２１及び２２の機能モジュールを含み、それぞれ、クリエイト機能モジュール群４１１によりメモリ１３に格納された画像データに対し、頁付け、２頁分の原稿画像を１枚の用紙サイズに集約する処理（２ｉｎ１）、及び、４頁分の原稿画像を１枚の用紙サイズに集約する処理（４ｉｎ１）を行うものである。
【００２４】
出力機能モジュール群４１３は、コード２０、２１及び２２の機能モジュールを含んでおり、それぞれ、エディット機能モジュール群４１２で編集された画像データをプリントエンジン２７に対しそのまま供給し、ハードディスク装置１４及び通信モデム２０に対しては、定められたフォーマットに変換してこれらに出力する。
【００２５】
図１に戻って、ＧＵＩモジュール４２は、ユーザによる操作・表示パネル２５の操作に応じて表示画面を変更するとともに、ユーザの操作に応じた入力データを設定情報としてメモリ１３に格納させる。ユーザがメインメメニューからコピー、プリント、スキャン又はファクシミリ送信のいずれかのジョブを選択すると、ＧＵＩモジュール４２は、そのジョブの設定画面を表示させる。ユーザが、このジョブについて各種設定をした後（ディフォールトの設定値を使用する場合を含む。）にスタートキーを押下すると、ＧＵＩモジュール４２は、選択されたジョブのコードと設定情報とをジョブ制御モジュール４３へ供給する。
【００２６】
図３に示すように、コピー、プリント、スキャン、ファクシミリ送信及びファクシミリ受信のジョブコードをそれぞれ０〜４とする。また、以下では簡略化のため、ジョブステップ制御をＪＳＣと表記する。
【００２７】
ジョブ制御モジュール４３は、ジョブコードと設定情報の受け取りに応答して、ジョブステップ制御ブロック（ＪＳＣブロック）４４０〜４４３を生成し、これらに情報を記入することにより、ジョブを生成し、さらに、インプットＪＳＣモジュール４５０に、ジョブシリアルナンバーＪＳＮｏを含むジョブ生成完了通知をする。複数種のエディットが設定された場合には、ジョブ制御モジュール４３はその数だけエディットＪＳＣブロック４４２を生成する。
【００２８】
プログラム的には、ＪＳＣブロックの生成は例えば、メソッドを含まないクラスのインスタンス生成に対応しており、また、モジュールＡからモジュールＢへの上記「通知」は例えば、モジュールＡが変数に値を代入し、モジュールＢが該変数の値を見ることを意味する。
【００２９】
図５（Ａ）は、ＪＳＣブロックの構成を示す。このブロックは、機能モジュールコードＦＭＣ、ジョブシリアルナンバーＪＳＮｏ及びページナンバーＰＮｏからなる制御情報のフィールドと、機能モジュールの起動時に引き渡す設定情報のフィールドとを含んでいる。
【００３０】
ジョブ制御モジュール４３は、図３に示すようなテーブルに従って、ＪＳＣブロック４４０、４４１及び４４３の機能モジュールコードＦＭＣ欄に、ジョブに対応した機能モジュールコードを記入し、ＪＳＣブロック４４２の機能モジュールコードＦＭＣ欄には、ＧＵＩモジュール４２からの設定情報に含まれるエディットの種類に応じて、コード２０、２１又は２２を記入する。
【００３１】
ジョブ制御モジュール４３は、ジョブカウンタ４３０及びジョブＩＤキュー４３１を備えており、そのジョブカウンタ４３０の値をＪＳＣブロック４４０〜４４３のジョブシリアルナンバーＪＳＮｏ欄に記入するとともに、ジョブカウンタ４３０の値の先頭にジョブコードを付加したものをジョブＩＤとしてジョブＩＤキュー４３１に追加（図１１参照）した後、ジョブカウンタ４３０を１だけインクリメントする。このジョブカウンタ４３０の初期値は０である。ジョブ制御モジュール４３はまた、ＪＳＣブロック４４０〜４４３のページナンバーＰＮｏ欄に初期値１を記入する。
【００３２】
ジョブ制御モジュール４３は、ＧＵＩモジュール４２からの設定情報を、予め定められた方法で、各ジョブステップで必要な設定情報に振り分けて、それぞれＪＳＣブロック４４０〜４４３の設定情報フィールドに記入する。
【００３３】
図５（Ｂ）は、インプットＪＳＣブロック４４０の具体例を示しており、スキャン入力の設定情報が、白黒、片面、Ａ４縦、４００ｄｐｉ及び明るさ１２８であることを示している。図５（Ｃ）は、エディットＪＳＣブロック４４２の具体例を示しており、頁付けの設定情報が、中央上、マージン１０ｍｍ、書式が−？−（？は頁番号）、フォントがＭＳゴシック、標準及び斜体であり、字間が０ｍｍであることを示している。同様に、図５（Ｄ）はエディットＪＳＣブロック４４２の他の具体例を示しており、４頁の原稿画を１枚の用紙に集約（４ｉｎ１）する設定情報として、上段左、下段左、上段右、下段右の順に頁画像を割り付け、それらの間に仕切線を描かないことを示している。
【００３４】
ジョブステップ制御モジュール（ＪＳＣモジュール）４５０〜４５３はそれぞれ、後述のように、頁毎に（但し、ＪＳＣモジュール４５０は全ページについて）、機能モジュール群内の対応する機能モジュールを起動させ（スレッドを生成させ）、機能モジュールの実行終了に応じて、それぞれＪＳＣブロック４４０〜４４３の頁ナンバーＰＮｏを１だけインクリメントするとともに、右隣（下流側隣）のＪＳＣモジュールに対し後述のスレッド制御ブロックを生成する。また、このＪＳＣモジュールは、スレッドの状態をＷＡＩＴ（ＢＬＯＣＫＥＤ）からＲＥＡＤＹ（ＲＵＮＮＡＢＬＥ）に変化させ、又は、自己のＲＵＮ（ＲＵＮＮＩＮＧ）状態のスレッド御ブロックを消滅させる。
【００３５】
ＪＳＣモジュール４５０〜４５３は、ジョブ制御モジュール及びＧＵＩモジュール４２とともに、例えば２０ｍｓｅｃ毎に起動されて、一巡処理される。これに対し機能モジュールは、ＪＳＣモジュール４５０〜４５３により起動されると、ＪＳＣモジュール４５０〜４５３とは独立にスレッドとして動作する。なお、ＧＵＩモジュール４２、ジョブ制御モジュール及びＪＳＣモジュール４５０〜４５３をスレッドとして動作させても同じ結果になる。
【００３６】
次に、どのように機能モジュール実行順を定めればスループットを向上させることができるかについて説明する。
【００３７】
図６（Ｃ）は、図６（Ａ）と比較するために記載されたものであって、プリントジョブにおいて異なる頁の画像データが並行処理される場合を示す。
【００３８】
ホストコンピュータ３０から、ページ記述言語（ＰＤＬ）で記述されたプリント用画像データを受信し、ビットマップ展開（ＲＩＰ）してプリントエンジン２７に供給し、用紙にプリントする。この場合、第２頁のデータを受信しながら第１頁のＲＩＰ処理を並行して行う。次に、第１頁のＲＩＰ処理を行いながら第２頁のＲＩＰ処理を並行して行う。
【００３９】
このようにすれば、時分割並行処理により、プログラム切換のオーバーヘッドが生じ、スループットが低下する。また、第１頁のプリント中に、第２頁のプリント待ちとなり、出力期間が競合し易く、この状態でＭＰＵ空き時間が生じてスループットが低下する。
【００４０】
図６（Ｂ）も、図６（Ａ）と比較するために記載されたものであって、ＲＩＰ処理が頁順に行われた後にＥＤＩＴ処理が頁順に行われる場合を示す。この場合も、前記同様にスループットが低下する。
【００４１】
以下においては、図６（Ａ）に示すような機能モジュール実行順になる場合について説明する。
【００４２】
この場合、ＲＩＰ処理が終了してから、同一頁のエディット処理が行われ、次に、この頁のプリント出力処理と次ページのＲＩＰ処理とが並行して行われる。
【００４３】
このようにすれば、複数の画像処理が時分割並行処理されることによる処理切替え時のオーバーヘッドが低減して、スループットが向上し、画像処理と入出力処理との並行処理の機会が多くなるので、ＭＰＵ１１の空き時間が少なくなり、スループットがさらに向上する。
【００４４】
図６（Ａ）はプリントジョブの場合であるが、他のジョブも同様に４つのジョブステップに分けられているので、他の１つのジョブ又は任意の複数のジョブの組み合わせが並行処理される場合についても、同じ効果が得られる。
【００４５】
なお、コピー、プリント又はファクシミリ受信の２以上の組み合わせの場合には、出力装置が同じプリントエンジンであるので、ジョブ毎に出力結果を纏め、ジョブ単位で例えばＦＩＦＯの順に出力する。
【００４６】
次に、機能モジュールの起動順及び起動条件について説明する。
【００４７】
（１）同一のジョブシリアルナンバーＪＳＮｏ及びページナンバーＰＮｏについて、入力機能モジュール、クリエイト機能モジュール、エディット機能モジュール、出力機能モジュールの順に起動させる。
【００４８】
このような処理をすれば、コピー、プリント、スキャン、ファクシミリ送信及びファクシミリ受信のジョブはぞれぞれ、図４（Ａ）〜（Ｅ）に示す順序で機能モジュールが起動されて遂行される。
【００４９】
（２）図７に示すように、第ｎ頁についてクリエイト機能モジュールの処理が終了（第ｎ頁のクリエイトスレッドが消滅）すると、第ｎ頁についてエディット機能モジュールを実行（第ｎ頁のエディットスレッドを生成）させる。このエディット機能モジュールでの処理が終了すると、第ｎ頁についてアウトプット機能モジュールを実行（第ｎ頁のアウトプットスレッドを生成）させるとともに、第（ｎ＋１）頁についてクリエイト機能モジュールを実行させる。
【００５０】
ここで、アプリケーション４０は、図１の構成に加えて、図９のスキャンエンジン管理モジュール４６、ＮＩＣ管理モジュール４７及びＭＯＤＥＭ管理モジュール４８を備えている。
【００５１】
スキャンエンジン管理モジュール４６、ＮＩＣ管理モジュール４７及びＭＯＤＥＭ管理モジュール４８はそれぞれ、ＦＭＣ＝００、０１及び０２の機能モジュールからの指示に応答して、汎用ＯＳ５０を介し、それぞれデバイスドライバであるスキャンエンジンドライバ５６、ＮＩＣドライバ５７及びＭＯＤＥＭドライバ５８とデータの授受を行い、それぞれ図１５のスキャンエンジン２８、ＮＩＣ１９及び通信モデム２０を制御する。汎用ＯＳ５０は、スキャンエンジン２８、ＮＩＣ１９及び通信モデム２０から入力された各頁の画像データをメモリ管理モジュール５０１に管理させる。スキャンエンジン管理モジュール４６、ＮＩＣ管理モジュール４７及びＭＯＤＥＭ管理モジュール４８はいずれも、該データの授受により、メモリ管理モジュール５０１が１頁分の画像データを図１５のメモリ１３に格納させたことを確認するとともに、その格納開始アドレス及び格納終了アドレスを知得し、対応する機能モジュールからの指示に応じてこれらのアドレスを該機能モジュールへ渡す。
【００５２】
図８は、クリエイトモジュール制御状態ＣＣＳ、エディットモジュール制御状態ＥＣＳ及びアウトプットモジュール制御状態ＯＣＳ（スレッドの状態）の遷移図である。
【００５３】
図１０は、図６（Ａ）の時刻ｔ１〜ｔ６における、図８の状態変化に対応したスレッド制御ブロック４５１ａ〜４５３ａを示す。
【００５４】
このスレッド制御ブロックは、ジョブシリアルナンバー６０と、機能モジュールによる処理対象のページナンバー６１と、スレッド制御状態６２と、このページナンバーの画像データの格納開始アドレス６３及び格納終了アドレス６４とのフィールドを有する。ジョブシリアルナンバー６０は、ＪＳＣブロックと対応させるためのものであり、また、後述のようにジョブ実行順の決定において用いられる。機能モジュールのインスタンスは、このアドレス範囲の画像データに対して処理を行う。
【００５５】
スレッド制御状態６２には、実行可能であることを示すＲＥＡＤＹと、実行中を示すＲＵＮと、実行終了を示すＥＮＤとがある。スレッド制御ブロックは、上流側隣のＪＳＣモジュールによりＲＥＡＤＹ状態で生成される。このスレッド制御ブロックが属するＪＳＣモジュールにより機能モジュールが起動されてスレッド制御状態６２がＲＵＮにされる。この機能モジュールは、実行を終了する直前に後処理としてスレッド制御状態６２をＥＮＤにする。このスレッド制御ブロックが属するＪＳＣモジュールは、ＥＮＤのスレッド制御ブロックを消滅させる。
【００５６】
次に、図８及び図１０を参照して、ＪＳＣモジュール及びこれにより実行が制御される機能モジュールの動作について説明する。
【００５７】
ジョブ制御モジュールからの上記ジョブ生成完了通知に応答して、
（Ａ）インプットＪＳＣモジュール４５０は、インプットＪＳＣブロック４４０を参照し、そのＦＭＣで識別される機能モジュールＩＦＭにＪＳＣブロック４４０中の設定情報を与えて機能モジュールＩＦＭを起動させる（機能モジュールＩＦＭのインスタンスを生成する）。機能モジュールＩＦＭは、管理モジュール４６、４７又は４８を介して対応する入力装置に１頁分の画像データを入力させ、その格納開始及び終了アドレスを受け取ってインプットＪＳＣモジュール４５０へ渡す。インプットＪＳＣモジュール４５０はこれに応答して、インプットＪＳＣブロック４４０のページナンバーＰＮｏをインクリメントし、また、クリエイトＪＳＣモジュール４５１に対し、クリエイトスレッド制御ブロック４５１ａを、第１頁の場合にはＲＥＡＤＹ状態で生成し（図６のｔ１）、第２頁以降の場合にはＷＡＩＴ状態で生成し（ｔ２）、この（Ａ）の先頭へ戻る。
【００５８】
インプットＪＳＣモジュール４５０は、入力頁が最後である場合、そのページナンバーＰＮｏを最終ページナンバーＰＥＮｏとして図１のジョブ制御モジュール４３へ通知する。
【００５９】
（Ｂ）クリエイトＪＳＣモジュール４５１は、クリエイトＪＳＣブロック４４１を参照し、そのＦＭＣで識別されるクリエイト機能モジュールＣＦＭにＪＳＣブロック４４１中の設定情報を与えるとともに、クリエイトスレッド制御ブロック４５１ａの画像データ格納アドレス範囲情報を与えて、該機能モジュールＣＦＭを起動させ、クリエイトスレッド制御状態をＲＵＮにする。機能モジュールＣＦＭは、このアドレス範囲の画像データをビットマップ形式に変換して、ＯＳを介しメモリ１３に格納し、その格納開始及び終了アドレスを、クリエイトＪＳＣモジュール４５１に渡し、クリエイトスレッド制御状態をＥＮＤにする。クリエイトＪＳＣモジュール４５１はこれに応答して、クリエイトＪＳＣブロック４４１のページナンバーＰＮｏをインクリメントし、また、エディットＪＳＣモジュール４５２に対し、レディ状態のエディットスレッド制御ブロック４５２ａを生成し（ｔ３）、終了したクリエイトスレッドの制御ブロックを消滅させる。
【００６０】
（Ｃ）エディットＪＳＣモジュール４５２は、エディットＪＳＣブロック４４２を参照し、そのＦＭＣで識別される機能モジュールＥＦＭに、テーブル４４２中の設定情報を与えるとともに、エディットスレッド制御ブロック４５２ａの画像データ格納アドレス範囲情報を与えて、機能モジュールＥＦＭを起動させ、エディットスレッド制御状態をＲＵＮにする。機能モジュールＥＦＭは、このアドレス範囲の画像データに対し編集処理を行い、その結果を、ＯＳを介しメモリ１３に格納し、その格納開始及び終了アドレスを、エディットＪＳＣモジュール４５２へ渡し、エディットスレッド制御状態をＥＮＤにする。エディットＪＳＣモジュール４５２は、これに応答して、エディットＪＳＣブロック４４２のページナンバーＰＮｏをインクリメントし、また、アウトプットＪＳＣモジュール４５３に対しレディ状態のアウトプットスレッド制御ブロック４５３ａを生成するとともに、クリエイトＪＳＣモジュール４５１に対し次ページのＷＡＩＴ状態のクリエイトスレッド制御状態をＲＥＡＤＹにし（ｔ４）、さらに、エディットスレッド制御ブロック４５２ａを消滅させる。
【００６１】
但し、例えばエディットが上述の４ｉｎ１の場合には、機能モジュールＥＦＭ、１頁分のクリエイト処理が終了する毎にその頁の配置処理を行い、これを４頁分繰り返した後に、エディットスレッド制御ブロック４５２ａを消滅させる。
【００６２】
（Ｄ）次ページについて上記（Ｂ）へ進むと同時に、次のような動作を行う。すなわち、アウトプットＪＳＣモジュール４５３は、前記ＲＥＡＤＹ状態への移行に応答して、アウトプットＪＳＣブロック４４３を参照し、そのＦＭＣで識別される機能モジュールＯＦＭにＪＳＣブロック４４３中の設定情報を与えるとともに、アウトプットスレッド制御ブロック４５３ａの画像データ格納アドレス範囲情報を与えて、機能モジュールＯＦＭを起動させ、アウトプットスレッド制御状態をＲＵＮにする。機能モジュールＯＦＭは、このアドレス範囲の画像データを、対応する出力装置から出力させ、これを終了すると、アウトプットスレッド制御状態をＥＮＤにする。アウトプットＪＳＣモジュール４５３は、これに応答して、アウトプットＪＳＣブロック４４３のページナンバーＰＮｏをインクリメントし、また、アウトプットスレッド制御ブロック４５３ａを消滅させる。
【００６３】
図１のジョブ制御モジュール４３は、アウトプットＪＳＣモジュール４５３による最終ページナンバーＰＥＮｏのアウトプットスレッド制御ブロック消滅処理に応答して、このジョブシリアルナンバーＪＮｏのＪＳＣブロック４４０〜４４３を破棄するとともに、ジョブＩＤキュー４３１（図１１参照）からこのジョブシリアルナンバーＪＮｏを含むジョブＩＤを削除する。これにより、このジョブが終了する。
【００６４】
以上説明したように、本実施例１によれば、画像形成装置用アプリケーション４０の構成が簡単かつ全ジョブについて統一的であるので、このアプリケーションの開発効率が高くなる。
【００６５】
また、複数の画像処理が時分割並行処理されることによる処理切替え時のオーバーヘッドが無くなって、スループットが向上するとともに、画像処理と入出力処理との並行処理の機会が多くなるので、ＭＰＵ１１の空き時間が少なくなり、スループットが向上する。
【００６６】
さらに、エディット機能モジュール群４１２が各ジョブで共通であるので、アプリケーション４０の構成が簡単になるとともに、画像形成装置１０のアプリケーション開発効率が高くなる。
【００６７】
また、引用文献１と異なり、メモリ資源管理は汎用ＯＳに任せればよいので、構成が簡単となる。
【００６８】
次に、ジョブ実行順について説明する。
【００６９】
上述のように、ジョブが生成されるとジョブＩＤがジョブＩＤキュー４３１に追加され、アウトプットジョブステップで１つのジョブの全頁出力が完了するとそのジョブＩＤがジョブＩＤキュー４３１から削除されるので、複数のジョブが残っている場合には、ジョブＩＤキュー４３１の内容は例えば図１１（Ａ）に示す如くなる。これに対応して、ジョブＩＤキュー４３１内の各ジョブＩＤに対応したＪＳＣブロック４４０〜４４３が存在している。
【００７０】
ジョブＩＤキュー４３１及びＪＳＣブロック４４０〜４４３の内容は、ＧＵＩにも容易に利用することができる。すなわち、ユーザが操作・表示パネル２５上のジョブ状況表示キーを押下すると、ＧＵＩモジュール４２はジョブ制御モジュール４３に対しジョブ状況問い合わせをし、ジョブ制御モジュール４３はこれに応答して、ジョブＩＤキュー４３１の内容を読み出し、その各ジョブＩＤのジョブシリアルナンバーＪＳＮｏについて、ＪＳＣブロック４４０、エディットＪＳＣブロック４４２及びアウトプットＪＳＣブロック４４３に記載されているページナンバーＰＮｏを読み出し、これに基づいて出力完了予定時刻を概略計算し、これらをＧＵＩモジュール４２に渡す。ＧＵＩモジュール４２はこれを操作・表示パネル２５に表示させる。
【００７１】
これにより、例えば図１２（Ａ）に示すような表示が行われる。図中、Ｎｏ．はジョブシリアルナンバーＪＳＮｏであり、Ｎｏ．列は、図１１（Ａ）のジョブＩＤキュー４３１内のジョブＩＤのＪＳＮｏをその順に示している。入力、処理及び出力はそれぞれ、対応するＪＳＣブロック４４０、４４２及び４４３に記載されているページナンバーＰＮｏであり、処理完了ページ数を示している。
【００７２】
操作・表示パネル２５はタッチパネルを備え、これにはアップキー６６、ダウンキー６７、優先キー６８及び取消キー６９が表示されており、これらはジョブ実行順を変更する場合に、以下のように用いられる。
【００７３】
例えば、図１２（Ａ）においてユーザがＮｏ．３のジョブをＮｏ．２より先に実行させたい場合、ダウンキー６７を２回押して、Ｎｏ．１に在る矩形枠をＮｏ．３へ移動させ、優先キー６８を押す。これにより、図１２（Ｂ）に示すように矩形枠内に格子点が表示されて、移動対象が選択状態となる。次にアップキー６６を１回押すと、矩形枠が１つ上に移動して図１３（Ａ）に示す如くなり、この状態で優先キー６８を押すと移動が確定して、図１３（Ｂ）に示す如く格子点が消失する。これとともに、ＧＵＩモジュール４２によりこの順番のＮｏ．列にジョブコードを結合したジョブＩＤがジョブＩＤキュー４３１に上書きされて、その内容が図１１（Ｂ）に示す如く、図１３（Ｂ）のＮｏ．列と対応したものになる。もし、この優先キー６８の代わりに取消キー６９を押すと、図１２（Ａ）に示す初期状態に戻る。
【００７４】
次に、図１４を参照して、クリエイトＪＳＣモジュール４５１のより詳細な動作を説明する。以下、括弧内は図中のステップ識別符号である。
【００７５】
（Ｓ１０）対応するジョブステップでＲＵＮ状態のスレッド制御ブロック（ＳＢＣ）が有れば処理を終了する。これにより、異なる頁又はジョブの画像処理が時分割並行処理されないので、プログラム切換のオーバーヘッドが生ぜず、スループットが向上する。ＲＵＮ状態のＳＢＣがなければステップＳ１１へ進む。
【００７６】
（Ｓ１１）ＥＮＤ状態のＳＢＣが有ればステップＳ１６へ進み、なければステップＳ１２へ進む。
【００７７】
（Ｓ１２、Ｓ１３）ジョブＩＤキュー４３１内のジョブＩＤ並び順に、次の（最初は先頭の）ジョブＩＤを１つ取り出し、そのジョブシリアルナンバーＪＳＮｏを含む、ＲＥＡＤＹ状態のスレッド制御ブロック（ＳＣＢ）が有ればステップＳ１５へ進み、なければステップＳ１４へ進む。
【００７８】
（Ｓ１４）ジョブＩＤキュー４３１に、次に取り出すべきジョブＩＤがなければ、処理を終了する。
【００７９】
（Ｓ１５）このジョブＩＤのジョブシリアルナンバーＪＳＮｏを含むクリエイトＪＳＣブロック４４１に記載の設定情報と、該ＪＳＮｏ及びクリエイトＪＳＣブロック４４１に記載のページナンバーＰＮｏを含むＲＥＡＤＹ状態のスレッド制御ブロックに記載されている画像データ格納開始アドレス及び画像データ格納終了アドレスを、該クリエイトＪＳＣブロック４４１に記載の機能モジュールコードＦＭＣの機能ブロックに与えて、該機能ブロックを起動させ、スレッド制御状態をＲＵＮにして、処理を終了する。
【００８０】
この起動により、機能モジュールは、ＪＳＣモジュールの動作とは独立に、このアドレス範囲の画像データを処理して、ＯＳを介しメモリ１３に格納し、その格納開始及び終了アドレスを、クリエイトＪＳＣモジュール４５１に渡し、また、制御ブロック４５１ａのスレッド制御状態をＥＮＤにして、処理を終了する。
【００８１】
（Ｓ１６）後処理として、対応するＪＳＣブロックのページナンバーＰＮｏを１だけインクリメントし、スレッド制御状態がＥＮＤのスレッド制御ブロック４５１ａを消滅させ、さらに、エディットＪＳＣモジュール４５２に対し、同一頁のＲＥＡＤＹ状態のエディットスレッド制御ブロック４５２ａを生成する。
【００８２】
エディットＪＳＣモジュール４５２及びアウトプットＪＳＣモジュール４５３のいずれの動作も、図１４と同様である。アウトプットＪＳＣモジュール４５３の場合、ステップＳ１５での機能モジュール起動により、この機能モジュールは、与えられたアドレス範囲の画像データを、対応する出力装置から出力させる。また、ステップＳ１６では、対応するＪＳＣブロックのページナンバーＰＮｏを１だけインクリメントし、また、ＥＮＤ状態のスレッドの制御ブロック４５３ａを消滅させる。
【００８３】
図１のジョブ制御モジュール４３は、アウトプットＪＳＣモジュール４５３による最終ページナンバーＰＥＮｏのアウトプットスレッド制御ブロック消滅処理に応答して、このジョブシリアルナンバーＪＮｏのＪＳＣブロック４４０〜４４２を破棄するとともに、ジョブＩＤキュー４３１（図１１参照）からこのジョブシリアルナンバーＪＮｏを含むジョブＩＤを削除する。これにより、このジョブが終了する。
【００８４】
このような簡単な処理により、ジョブＩＤキュー４３１に格納されているジョブＩＤの並び順かつ同一ジョブＩＤについてはページナンバーＰＮｏ順にジョブが実行されるので、ユーザの操作によりジョブＩＤキュー４３１内のジョブＩＤの順番を変えれば、これに応じてジョブ実行順がジョブ単位で変更される。
【００８５】
なお、エディットＪＳＣモジュール４５２については、図１４の通りでも問題ないが、上述のようにクリエイトＪＳＣモジュール４５１で処理が終了した後に、この処理対象と同一のジョブシリアルナンバーＪＳＮｏ及びページナンバーＰＮｏを有するスレッド制御ブロックについて、機能ブロックを実行させる場合には、図１４からステップＳ１２〜１４の処理を省略することができる。
【００８６】
また、図７を参照して説明した制限を付加するには、クリエイトＪＳＣモジュール４５１において、図１４のステップＳ１３とＳ１５との間で、ＲＥＡＤＹ状態のクリエイトＳＣＢと同一頁に係るエディットＳＣＢがＲＥＡＤＹ状態であれば、ステップＳ１５へ進まずに処理を終了し、なければステップＳ１５へ進むようにすればよい。
【００８７】
本実施例１によれば、機能モジュール群を備え、制御モジュールにより、ジョブ種別に応じて機能モジュールを選択的に起動させるので、各ジョブがジョブ実行順に関し対等の関係で取り扱われ、一方、制御モジュールで使用される制御情報を用いてジョブ状況を表示させ、これを用いてジョブ実行順を変更するので、簡単な構成で、複数種のジョブの実行順をジョブ単位で変更することが可能となる。
【００８８】
また、各ジョブのジョブステップが統一されているので、アウトプットジョブステップのみならずクリエイトジョブステップとエディットジョブステップの組である画像処理ジョブステップにおいても、ジョブＩＤキュー４３１内のジョブＩＤの並び順に参照し、未処理で実行可能なジョブＩＤのジョブステップがあれば、対応する機能モジュールを頁単位で実行させることが容易にでき、簡単なソフトウェア構成で、スループットを高く維持しつつ急ぎのジョブを優先的に処理して出力させることが可能となる。
【００８９】
上記実施例ではアプリケーション４０の論理構成を説明したが、この論理構成は各種の方法で実現可能であり、例えば、制御ブロックがＲＥＡＤＹになったときにイベントを発生させて機能モジュールを起動させるイベントドリブン型プログラムで実現することができる。
【００９０】
なお、本発明には外にも種々の変形例が含まれる。
【００９１】
例えば、本発明は、複数種のジョブのジョブステップ間を関連付けて統一化することにより、アプリケーション開発効率を高める点に特徴があるので、クリエイトジョブステップは、インプットジョブステップで入力された画像データのフォーマットを、各ジョブで異なるフォーマットに変換するものであってもよい。また、同一のフォーマットであっても、ビットマップ形式以外のものであってもよい。
【００９２】
また、図８において無条件でＲＥＡＤＹ状態からＲＵＮ状態に遷移するものについては、ＲＥＡＤＹ状態を省略した構成であっても実質的に同一になる。
【００９３】
さらに、上記スループット向上のための構成がなくても、簡単な構成で、アプリケーション開発効率を高めることができるとともに、ユーザへの詳細なジョブ状況表示処理を簡単化かつ統一化することが可能であるので、本発明にはこの構成がないものも含まれる。すなわち、本発明には、画像処理を並行処理する構成も含まれる。
【図面の簡単な説明】
【００９４】
【図１】本発明の実施例１に係る画像形成装置を構成するアプリケーションソフトウェアの全体構成を示す概略ブロック図である。
【図２】ジョブの種類に応じて選択的に実行される、４群に分類された複数の機能モジュールを示すブロック図である。
【図３】ジョブ制御モジュールで用いられるテーブルの説明図であって、コピー、プリント、スキャン、ファクシミリ送信及びファクシミリ受信のジョブコードと、各ジョブで選択される、エディット以外の機能モジュールのコードとの対応関係を示すテーブルの説明図である。
【図４】（Ａ）〜（Ｅ）はそれぞれ、コピー、プリント、スキャン、ファクシミリ送信及びファクシミリ受信のジョブ実行時に順次起動される機能モジュールを示す概略シーケンス図である。
【図５】（Ａ）はジョブステップ制御（ＪＳＣ）ブロックの構成を示す図、（Ｂ）はインプットＪＳＣブロックに記述される情報の具体例を示す図、（Ｃ）及び（Ｄ）はクリエイトＪＳＣブロックに記述される情報の具体例を示す図である。
【図６】（Ａ）は本発明の実施例１のコピージョブ動作例を示す概略タイムチャートであり、（Ｂ）及び（Ｃ）は（Ａ）の効果を示すために（Ａ）と対比されるコピージョブ動作例を示す概略タイムチャートである。
【図７】スループットを向上させるための、クリエイト、エディット及びアウトプット機能モジュールの起動条件を説明するブロック図である。
【図８】クリエイトスレッド、エディットスレッド及びアウトプットスレッドの状態遷移図である。
【図９】画像入力に関するハードウェア資源管理部を示すブロック図である。
【図１０】図６（Ａ）の時刻ｔ１〜ｔ６における、図８の状態変化に対応したスレッド制御ブロックの説明図である。
【図１１】（Ａ）及び（Ｂ）はそれぞれジョブ実行順変更前と変更後のジョブＩＤキューの内容を説明する図である。
【図１２】（Ａ）及び（Ｂ）はジョブ実行順変更操作説明図である。
【図１３】図１２の続きを示すジョブ実行順変更操作説明図である。
【図１４】ジョブＩＤキュー内のジョブＩＤ並び順に従った、ＪＳＣモジュール４５１〜４５３のうちの任意の１つの処理を示すフローチャートである。
【図１５】本発明の実施例１に係る画像形成装置のハードウェア概略構成を示すブロック図である。
【符号の説明】
【００９５】
１０  画像形成装置
１１  プロセッサ
１２  チップセット
１３  メモリ
１４  ハードディスク装置
１５〜１８  拡張カード
１９  ＮＩＣ
２０  通信モデム
２５  操作・表示パネル
２６  搬送装置等
２７  プリントエンジン
２８  スキャンエンジン
３０  ホストコンピュータ
３１  公衆回線
４０  アプリケーション
４１  機能モジュール群
４１０  入力機能モジュール群
４１１  クリエイト機能モジュール群
４１２  エディット機能モジュール群
４１３  出力機能モジュール群
４２  ＧＵＩモジュール
４３  ジョブ制御モジュール
４３０  ジョブカウンタ
４３１  ジョブＩＤキュー
４４０  インプットＪＳＣブロック
４４１  クリエイトＪＳＣブロック
４４２  エディットＪＳＣブロック
４４３  アウトプットＪＳＣブロック
４５０  インプットＪＳＣモジュール
４５１  クリエイトＪＳＣモジュール
４５２  エディットＪＳＣモジュール
４５３  アウトプットＪＳＣモジュール
４６  スキャンエンジン管理モジュール
４７  ＮＩＣ管理モジュール
４８  ＭＯＤＥＭ管理モジュール
５０  汎用ＯＳ
５０１  メモリ管理モジュール
５６  スキャンエンジンドライバ
５７  ＮＩＣドライバ
５８  ＭＯＤＥＭドライバ
６０  ジョブシリアルナンバー
６１  ページナンバー
６２  状態
６３  格納開始アドレス
６４  格納終了アドレス
６６  アップキー
６７  ダウンキー
６８  優先キー
６９  取消キー
ＦＭＣ  機能モジュールコード
ＪＳＮｏ  ジョブシリアルナンバー
ＰＮｏ  ページナンバー
ＣＣＳ  クリエイトモジュール制御状態
ＥＣＳ  エディットモジュール制御状態
ＯＣＳ  アウトプットモジュール制御状態
【図１】
0004438754.tif 000002
【図２】
0004438754.tif 000003
【図３】
0004438754.tif 000004
【図４】
0004438754.tif 000005
【図５】
0004438754.tif 000006
【図６】
0004438754.tif 000007
【図７】
0004438754.tif 000008
【図８】
0004438754.tif 000009
【図９】
0004438754.tif 000010
【図１０】
0004438754.tif 000011
【図１１】
0004438754.tif 000012
【図１２】
0004438754.tif 000013
【図１３】
0004438754.tif 000014
【図１４】
0004438754.tif 000015
【図１５】
0004438754.tif 000016