JP2004164582A - 情報処理装置およびプログラム生成方法 - Google Patents

情報処理装置およびプログラム生成方法 Download PDF

Info

Publication number
JP2004164582A
JP2004164582A JP2003199950A JP2003199950A JP2004164582A JP 2004164582 A JP2004164582 A JP 2004164582A JP 2003199950 A JP2003199950 A JP 2003199950A JP 2003199950 A JP2003199950 A JP 2003199950A JP 2004164582 A JP2004164582 A JP 2004164582A
Authority
JP
Japan
Prior art keywords
state
program
function
state transition
event
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2003199950A
Other languages
English (en)
Other versions
JP4246560B2 (ja
Inventor
Kunihiro Akiyoshi
邦洋 秋吉
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Ricoh Co Ltd
Original Assignee
Ricoh Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Ricoh Co Ltd filed Critical Ricoh Co Ltd
Priority to JP2003199950A priority Critical patent/JP4246560B2/ja
Priority to US10/626,608 priority patent/US7554685B2/en
Priority to EP03254672A priority patent/EP1385089A3/en
Priority to CNB03160255XA priority patent/CN1273888C/zh
Priority to CN 200510113871 priority patent/CN1818871B/zh
Publication of JP2004164582A publication Critical patent/JP2004164582A/ja
Application granted granted Critical
Publication of JP4246560B2 publication Critical patent/JP4246560B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Abstract

【課題】画像形成装置の安定性を保持しつつアプリケーションの追加を容易に行うこと。
【解決手段】情報処理装置に、プログラムの取り得る状態と、前記状態下で前記プログラムに対して生じうるイベントと、前記イベントが前記状態下で生じたときに実行されるイベント関数と、前記イベント関数の実行後の遷移先の状態とによって動作が決定される状態遷移モデルに基づいた複数のネスト構造のモジュールを含む前記プログラムに実装され、各モジュールで共用する共用変数に対し前記モジュールごとに別個の領域に割り当てる状態遷移モデル起動関数が登録されたユーティリティライブラリを備えた。
【選択図】 図5

Description

【0001】
【発明の属する技術分野】
この発明は、コピー、プリンタ、スキャナおよびファクシミリなどの画像形成処理にかかるユーザサービスを提供し、状態遷移モデルに基づいてアプリケーションを開発するための関数が登録されたユーティリティライブラリを備えた画像形成装置およびアプリケーション生成方法に関するものである。
【0002】
【従来の技術】
近年では、プリンタ、コピー、ファクシミリ、スキャナなどの各装置の機能を1つの筐体内に収納した画像形成装置(以下、「複合機」という。)が知られている。この複合機は、1つの筐体内に表示部、印刷部および撮像部などを設けるとともに、プリンタ、コピーおよびファクシミリ装置にそれぞれ対応した3種類のソフトウェア(アプリケーション)を設け、これらのソフトウェアを切り替えることによって、当該装置をプリンタ、コピー、スキャナまたはファクシミリ装置として動作させるものである。
【0003】
このような従来の複合機では、複合機上で動作するアプリケーションの開発は、複合機の開発元で一括して行い、開発されたアプリケーションをROMなどに焼き付けた状態で複合機を出荷し、出荷後は新たなアプリケーションの追加を行わないのが一般的である。
【0004】
ところで、このような従来の複合機では、プリンタ、コピー、スキャナおよびファクシミリ装置に対応するソフトウェアをそれぞれ別個に設けているため、各ソフトウェアの開発に多大の時間を要する。このため、出願人は、表示部、印刷部および撮像部などの画像形成処理で使用されるハードウェア資源を有し、プリンタ、コピーまたはファクシミリなどの各ユーザサービスにそれぞれ固有の処理を行うアプリケーションを複数搭載し、これらのアプリケーションとハードウェア資源との間に介在して、ユーザサービスを提供する際に、アプリケーションの少なくとも2つが共通的に必要とするハードウェア資源の管理、実行制御並びに画像形成処理を行う各種コントロールサービスからなるプラットホームを含む画像形成装置(複合機)を発明した(例えば、特許文献1参照)。
【0005】
【特許文献1】
特開2002−82806号公報
【0006】
【発明が解決しようとする課題】
このような新規な複合機は、アプリケーションの少なくとも2つが共通的に必要とするハードウェア資源の管理、実行制御並びに画像形成処理を行うプラットホームを備えた構成とすることによって、ソフトウェア開発の効率化を図るとともに、装置全体としての生産性を向上させることができる点で優れている。
【0007】
一方、このような新規な複合機では、アプリケーションと、ハードウェア資源にアクセスするような開発が難しい処理を行うコントロールサービスとが別個に設けられているため、複合機の出荷後にユーザもしくは第三者であるサードベンダが新規な外部アプリケーションを開発して複合機に搭載することができる構成となっている。
【0008】
このため、このような複合機では、複数のサードベンダによってそれぞれ別個に開発されたアプリケーションが複数搭載されて同時に動作する場合がある。また、一つのサードベンダが開発した一つのアプリケーションであっても、そのアプリケーション内部の複数のモジュールを別々の部署で自由に開発して一つのアプリケーションとして統合して提供する場合も考えられる。
【0009】
このように、アプリケーションの開発を複合機の開発メーカ以外のサードベンダ等に委ねた場合、各サードベンダが独自の手法でアプリケーション開発を行うこととなってしまうため、開発されたアプリケーション内部で障害が発生したり、出荷時に予め搭載されている既存のアプリケーションや複合機のシステムに悪影響を与えてしまうおそれがある。特に、アプリケーションプログラムで使用される共用変数や複合機独自のイベントについて全くその使用方法をサードベンダに委ねてしまうと、ソフトウェア障害によって複合機のシステムが不安定になってしまうおそれが高い。このような問題は、画像形成装置上で動作するアプリケーションのみならず、一般的な情報処理装置上で動作するアプリケーションにとっても問題となることである。
【0010】
この発明は上記に鑑みてなされたもので、システムの安定性を保持しつつアプリケーションの追加を容易に行うことができる情報処理装置およびアプリケーション生成方法を得ることを目的とする。
【0011】
【課題を解決するための手段】
上記目的を達成するため、請求項1にかかる発明は、プログラムの取り得る状態と、前記状態下で前記プログラムに対して生じうるイベントと、前記イベントが前記状態下で生じたときに実行されるイベント関数と、前記イベント関数の実行後の遷移先の状態とによって動作が決定される状態遷移モデルに基づいた複数のネスト構造のモジュールを含む前記プログラムに実装され、各モジュールで共用する共用変数に対し前記モジュールごとに別個の領域に割り当てる状態遷移モデル起動関数が登録されたユーティリティライブラリを備えたことを特徴とする情報処理装置である。
【0012】
この請求項1の発明によれば、プログラムの取り得る状態と、前記状態下で前記プログラムに対して生じうるイベントと、前記イベントが前記状態下で生じたときに実行されるイベント関数と、前記イベント関数の実行後の遷移先の前記状態とによって動作が決定される状態遷移モデルに基づいた複数のネスト構造のモジュールを含む前記プログラムに実装され、各モジュールで共有する共用変数を前記モジュールごとに別個の領域に割り当てる状態遷移モデル起動関数が登録されたユーティリティライブラリを備えているので、プログラムを構成するモジュール間で共用変数を安全に使用することができ、変数の値に起因する障害を回避でき、情報処理装置に新規アプリケーションを搭載可能としながらも情報処理装置の安定性を維持することができる。
【0013】
また、請求項2にかかる発明は、請求項1に記載の情報処理装置において、前記ユーティリティライブラリの前記状態遷移モデル起動関数は、前記共用変数を、前記モジュールごとのスタック領域で指定された領域に割り当てることを特徴とする。
【0014】
この請求項2の発明によれば、状態遷移モデル起動関数は、前記共用変数を、前記モジュールごとのスタック領域で指定された領域に割り当てることで、関数呼び出しの際に使用されるスタック領域を利用してモジュールが呼び出しの際に効率的に共用変数の割り当てを行うことができる。
【0015】
また、請求項3にかかる発明は、請求項1または2に記載の画像形成装置において、前記ユーティリティライブラリの前記状態遷移モデル起動関数は、スレッド単位で共用される共用変数を前記スレッドごとに別個の領域に割り当てることを特徴とする。
【0016】
この請求項3の発明によれば、状態遷移モデル起動関数は、スレッド単位で共用される共用変数を前記スレッドごとに別個の領域に割り当てることで、プログラムのプロセス内部で動作するスレッド内部で共用変数を安全に使用することができ、変数の値に起因する障害を回避できる。
【0017】
また、請求項4にかかる発明は、請求項1〜3のいずれか一つに記載の情報処理装置において、前記ユーティリティライブラリの前記状態遷移モデル起動関数は、前記状態の遷移が生じたときに行う処理を定めた入場関数を実行することを特徴とする。
【0018】
この請求項4の発明によれば、状態遷移モデル起動関数は、前記状態の遷移が生じたときに行う処理を定めた入場関数を実行することで、モジュール呼び出しの際に定型的に行われる処理を実行することができ、プログラム開発を効率的に行える。
【0019】
また、請求項5にかかる発明は、請求項1〜4のいずれか一つに記載の情報処理装置において、前記ユーティリティライブラリの前記状態遷移モデル起動関数は、前記状態とは無関係に発生する非同期イベントを受信したときに行う処理を定めた標準関数を実行することを特徴とする。
【0020】
この請求項5の発明によれば、状態遷移モデル起動関数は、前記状態とは無関係に発生する非同期イベントを受信したときに行う処理を定めた標準関数を実行することで、現在の状態とは無関係に生じるシステム関連のイベントなどに他のプログラムに悪影響を与えずに対処することができ、画像形成装置の安定性を向上させることができる。
【0021】
また、請求項6にかかる発明は、請求項1〜5のいずれか一つの記載において、前記情報処理装置は、画像形成処理を実行する画像形成装置であるとするものである。
【0022】
また、請求項7にかかる発明は、請求項6の画像形成装置は、画像形成処理で使用されるハードウェア資源と、前記画像形成装置のアプリケーションと前記ハードウェア資源との間に介在し、ユーザサービスを提供する際に、アプリケーションの少なくとも2つが共通に必要とする前記ハードウェア資源の獲得要求、管理、実行制御並びに画像形成処理を行うコントロールサービスと、をさらに備え、前記プログラムは、前記アプリケーションであり、前記ユーティリティライブラリは、当該アプリケーションに結合されていることを特徴とするものである。
この請求項7の発明によれば、前記ユーティリティライブラリは、前記アプリケーションに結合されているので、アプリケーションのソフトウェア開発をユーザサービスに固有の部分だけで行うことができ、ソフトウェア開発の労力軽減を図ることができる。
【0023】
請求項9〜14にかかる発明は、上記のプログラムの生成方法の発明であり、この発明によっても上記と同様の効果を奏する。
【0024】
また、請求項15にかかる発明は、前記情報処理装置における状態遷移モデルの発明であり、このように状態遷移モデルを用いることにより、上記と同様の効果を奏する。請求項16〜21に記載の発明は、上記情報処理装置で実行されるプログラムの発明であり、請求項22に記載の発明は、当該プログラムを記録した記録媒体の発明である。
【0025】
【発明の実施の形態】
以下に添付図面を参照して、この発明にかかる情報処理装置およびアプリケーション生成方法の好適な実施の形態を詳細に説明する。以下、情報処理装置の例として画像形成装置について説明する。
(実施の形態1)
図1は、この発明の実施の形態1である画像形成装置(以下、「複合機」という。)の構成を示すブロック図である。
【0026】
図1に示すように、複合機100は、白黒レーザプリンタ(B&W LP)101と、カラーレーザプリンタ(Color LP)102とハードディスク装置(HDD)103と、ファクシミリ、メモリなどのハードウェアリソース104を有するとともに、プラットホーム120と、アプリケーション130とから構成されるソフトウェア群110とを備えている。
【0027】
プラットホーム120は、アプリケーションからの処理要求を解釈してハードウェア資源の獲得要求を発生させるコントロールサービスと、一または複数のハードウェア資源の管理を行い、コントロールサービスからの獲得要求を調停するシステムリソースマネージャ(SRM)123と、汎用OS121とを有する。
【0028】
コントロールサービスは、複数のサービスモジュールから形成され、SCS(システムコントロールサービス)122と、ECS(エンジンコントロールサービス)124と、MCS(メモリコントロールサービス)125と、OCS(オペレーションパネルコントロールサービス)126と、FCS(ファックスコントロールサービス)127と、NCS(ネットワークコントロールサービス)128とから構成される。このプラットホーム120は、あらかじめ定義された関数により前記アプリケーション130から処理要求を受信可能とするアプリケーションプログラムインタフェース(API)を有する。
【0029】
汎用OS121は、UNIX(登録商標)などの汎用オペレーティングシステムであり、プラットホーム120並びにアプリケーション130の各ソフトウェアをそれぞれプロセスとして並列実行する。
【0030】
SRM123のプロセスは、SCS122とともにシステムの制御およびリソースの管理を行うものである。SRM123のプロセスは、スキャナ部やプリンタ部などのエンジン、メモリ、HDDファイル、ホストI/O(セントロI/F、ネットワークI/F、IEEE1394 I/F、RS232C I/Fなど)のハードウェア資源を利用する上位層からの要求にしたがって調停を行い、実行制御する。
【0031】
具体的には、このSRM123は、要求されたハードウェア資源が利用可能であるか(他の要求により利用されていないかどうか)を判断し、利用可能であれば要求されたハードウェア資源が利用可能である旨を上位層に伝える。また、SRM123は、上位層からの要求に対してハードウェア資源の利用スケジューリングを行い、要求内容(例えば、プリンタエンジンにより紙搬送と作像動作、メモリ確保、ファイル生成など)を直接実施している。
【0032】
SCS122のプロセスは、アプリ管理、操作部制御、システム画面表示、LED表示、リソース管理、割り込みアプリ制御などを行う。
【0033】
ECS124のプロセスは、白黒レーザプリンタ(B&W LP)101、カラーレーザプリンタ(Color LP)102、HDD103、スキャナ、ファクシミリなどからなるハードウェアリソース104のエンジンの制御を行う。
【0034】
MCS125のプロセスは、画像メモリの取得および解放、ハードディスク装置(HDD)の利用、画像データの圧縮および伸張などを行う。
【0035】
FCS127のプロセスは、システムコントローラの各アプリ層からPSTN/ISDN網を利用したファクシミリ送受信、BKM(バックアップSRAM)で管理されている各種ファクシミリデータの登録/引用、ファクシミリ読みとり、ファクシミリ受信印刷、融合送受信を行うためのAPIを提供する。
【0036】
NCS128のプロセスは、ネットワークI/Oを必要とするアプリケーションに対して共通に利用できるサービスを提供するためのプロセスであり、ネットワーク側から各プロトコルによって受信したデータを各アプリケーションに振り分けたり、アプリケーションからデータをネットワーク側に送信する際の仲介を行う。
【0037】
OCS126のプロセスは、オペレータ(ユーザ)と本体制御間の情報伝達手段となるオペレーションパネル(操作パネル)の制御を行う。OCS126は、オペレーションパネルからキー押下(またはタッチ操作)をキーイベントとして取得し、取得したキーに対応したキーイベント関数をSCS122に送信するOCSプロセスである。また、オペレーションパネルの操作表示部に対する各種画面を描画出力やその他オペレーションパネルに対する制御は、OCS関数ライブラリに登録されている描画関数等の各種関数をアプリケーション130またはコントロールサービスから呼び出すことにより行われる。このOCS関数ライブラリは、アプリケーション130およびコントロールサービスの各モジュールに動的にリンクされている。なお、OCS126のすべてをプロセスとして動作させるように構成しても良く、あるいはOCS126のすべてをOCS関数ライブラリとして構成しても良い。
【0038】
アプリケーション130は、ページ記述言語(PDL)、PCLおよびポストスクリプト(PS)を有するプリンタ用のアプリケーションであるプリンタアプリ111と、コピー用アプリケーションであるコピーアプリ112と、ファクシミリ用アプリケーションであるファックスアプリ113と、スキャナ用アプリケーションであるスキャナアプリ114と、ネットワークファイル用アプリケーションであるネットファイルアプリ115と、工程検査用アプリケーションである工程検査アプリ116と、サードベンダなどの第三者が開発した外部アプリ117とを有している。外部アプリ117は、状態遷移モデルに従った開発手法により生成されており、状態遷移モデル起動関数が登録されたユーティリティライブラリをリンクしている。
【0039】
アプリケーション130の各プロセス、コントロールサービスの各プロセスは、関数呼び出しとその戻り値送信およびメッセージの送受信によってプロセス間通信を行いながら、コピー、プリンタ、スキャナ、ファクシミリなどの画像形成処理にかかるユーザサービスを実現している。
【0040】
このように、実施の形態1にかかる複合機100には、複数のアプリケーション130および複数のコントロールサービスが存在し、いずれもプロセスとして動作している。そして、これらの各プロセス内部には、一または複数のスレッドが生成されて、スレッド単位の並列実行が行われる。そして、コントロールサービスがアプリケーション130に対し共通サービスを提供しており、このため、これらの多数のプロセスが並列動作、およびスレッドの並列動作を行って互いにプロセス間通信を行って協調動作をしながら、コピー、プリンタ、スキャナ、ファクシミリなどの画像形成処理にかかるユーザサービスを提供するようになっている。
【0041】
また、複合機100には、複合機100の顧客、サードベンダなどの第三者がコントロールサービス層の上のアプリケーション層に外部アプリを開発して搭載することが可能となっている。
【0042】
なお、実施の形態1にかかる複合機100では、複数のアプリケーション130のプロセスと複数のコントロールサービスのプロセスとが動作しているが、アプリケーション130とコントロールサービスのプロセスがそれぞれ単一の構成とすることも可能である。また、各アプリケーション130は、アプリケーションごとに追加または削除することができる。
【0043】
図2に複合機100のハードウェア構成例を示す。
【0044】
複合機100は、コントローラ160と、オペレーションパネル175と、ファックスコントロールユニット(FCU)176と、プリンタ等の画像形成処理に特有のハードウェア資源であるエンジン部177とを含む。コントローラ160は、CPU161と、システムメモリ162と、ノースブリッジ(NB)163と、サウスブリッジ(SB)164と、ASIC166と、ローカルメモリ167と、HDD168と、ネットワークインターフェースカード(NIC)169と、SDカード用スロット170と、USBデバイス171と、IEEE1394デバイス172と、セントロニクス173とを含む。なお、メモリ162、167はRAM、ROM等を含む。FCU176およびエンジン部177は、コントローラ160のASIC166にPCIバス178で接続されている。
【0045】
CPU161が、複合機100にインストールされるアプリケーション、コントロールサービス等のプログラムを、メモリから読み出して実行する。
【0046】
次に、外部アプリ117が実行されている場合のプロセス内部の構造について説明する。図3は、外部アプリ117のプロセス内部の構造を示す説明図である。
【0047】
外部アプリ117のプロセスは、複数のスレッドが並列実行されたマルチスレッド環境となっている。図3に示すように、外部アプリ117のプロセスには、メインスレッド210とイメージライブラリスレッド200が並列実行されている。メインスレッド210は、外部アプリ117の主要な処理を実行するスレッドであり、このメインスレッド210がイメージライブラリスレッド200を呼び出すことにより、コントロールサービス140やVAS(仮想アプリケーションサービス)などの関数呼び出しとその戻り値の受信、メッセージの送受信を実現している。
【0048】
また、外部アプリ117のプロセスには、サブスレッド220、メールボックス211,212,214、イベント取得ハンドラ(スレッド)213が存在している。メインスレッド210には、状態遷移モデル起動関数が登録されたユーティリティライブラリ215が実装されている。
【0049】
メールボックス211は、メインスレッド210とイメージライブラリスレッド200およびイベント取得ハンドラ213との通信に使用される。メールボックス212は、メインスレッド210とイメージライブラリスレッド200の通信に使用される。イベント取得ハンドラ213は、ECS124,MCS125などのコントロールサービスまたはVASのプロセスからのイベントメッセージを受信し、メールボックス211に書き込むものである。
【0050】
メインスレッド210がコントロールサービスなどにアクセスするためには、メインスレッド310がメールボックス211,212,214を開設した後、イメージライブラリスレッドを起動する。
【0051】
メインスレッド310は、イメージライブラリスレッド200に対する関数呼び出しのコマンドを、送信元情報がMB_REQUESTとしてメールボックス211に入れる。また、コントロールサービス140などからのイベントメッセージも、送信元情報MB_CSのメールとしてメールボックス211に入る。
【0052】
イメージライブラリスレッド200は、メールボックス211に配信されるメールをrcv_msg()関数によって取得する。イメージライブラリスレッド200は、取得したメールに含まれる送信元情報とイベントまたは関数情報から、対応する関数の検索を行い、対応する関数が検索された場合にその関数を実行する。一方、対応する関数が検索されなかった場合には何も処理は行わない。
【0053】
取得したメールは対応する関数の実行に関係なく、メールボックス212に転送される。また、イメージライブラリスレッド200は、メインスレッドに対して、エラー情報、実行結果、途中経過などの通知を送信元情報MB_IMAGEのメールとして、メールボックス212に入れる。また、メインスレッド210は、サブスレッド220とメールボックス214,212を利用して同様にメッセージの送受信を行う。
【0054】
また、ユーティリティライブラリ215およびイメージライブラリは、複合機のアプリケーション開発のためのソフトウェア開発キット(SDK:Software Development Kit)などの開発用ツールキットの一部または全部として、CD−ROMまたはFDなどの記憶媒体にインストール可能な形式のファイルで提供される。また、ユーティリティライブラリ215およびイメージライブラリを、Webサイトからのダウンロード等、ネットワーク経由で取得可能な方法で提供するようにしても良い。
【0055】
このように提供された上記ユーティリティライブラリ215およびイメージライブラリを用いて外部アプリ117(複合機100の出荷後に第三者によって開発されて搭載されるアプリ)を生成するには、外部アプリのソースファイルをコンパイラによってコンパイルしてオブジェクトファイルを生成する。そして、リンカによって、生成されたオブジェクトファイルと、上記の方法で提供されたユーティリティライブラリ215およびイメージライブラリとをリンクして、外部アプリの実行形式ファイルを生成する。この外部アプリの実行形式ファイルをフラッシュカードなどに格納して、複合機100において、フラッシュカードから外部アプリをインストールすることにより、ユーティリティライブラリ215およびイメージライブラリを実装した外部アプリが複合機に搭載される。また、外部アプリをネットワークを介して外部のサーバからインストールすることもできる。
【0056】
次に、外部アプリ117が採用している状態遷移モデルについて説明する。図4は、外部アプリ117が状態1と状態2を有する場合の状態遷移の説明図である。図4に示すように、外部アプリ117のメインスレッド210が、状態1および状態2を有し、現在の状態が状態1であると仮定する。このメインスレッド210が状態1にある状態で外部からrcv_msg()関数によってイベント1を受信した場合、イベント関数1を実行して状態2に遷移し、入場関数2を実行する。メインスレッド210がこの状態2にあるときにイベント2を受信すると、イベント関数2を実行して状態1に戻り、入場関数1を実行する。一方、メインスレッド210が状態2にあるときにイベント3を受信すると、イベント関数3を実行し、状態2を維持する。
【0057】
ここで、状態とは、イベントを待機する状態をいい、イベントとは、状態遷移のトリガとなる事象である。また、入場関数とは、状態遷移の際に実行される関数であり、イベント関数とは、発生したイベントに対して実行される関数である。
【0058】
このような状態遷移モデルを利用してイベント処理を行う外部アプリ117を作成する際に、発生する全てのイベントを単一のモジュール、すなわち同じレベルの状態群で対応しようとすると、状態数の増大、一つの状態で処理するイベント数の増大が発生し、プログラムが複雑になり作業効率の低下、メンテナンス効率の低下という問題が生じる。
【0059】
このため、本実施の形態では、外部アプリ117の全体で発生するイベント群から相互関係のあるイベントのみを処理する状態遷移モデルのモジュール(サブモジュール)を個別に作成している。そして、全体を制御する状態遷移モデルのモジュールからは、必要に応じて上記サブモジュールを関数呼び出しの形式で実行する。呼び出しを受けたサブモジュールは、必要に応じてさらに状態遷移モデルのサブモジュールの関数呼び出しを行う。
【0060】
各モジュールは、外部アプリ117の全体で使用できるグローバル変数を使用せずに、起動時に共用するメモリを動的に確保することによって、同じモジュールが再帰的に呼び出されても正確に実行することが保証される。
【0061】
図5は、ネスト構造を有する状態遷移モデルのモジュールからなる外部アプリ117の一例を示す説明図である。図5に示す例では、3つのネスト構造を有しており、イベント関数sub1()によってネスト1のモジュールが呼び出され、イベント関数sub2()によってネスト2のモジュールが呼び出されている。
【0062】
次に、外部アプリ117のソースコードの具体的な記述について説明する。状態遷移モデルのモジュールで実行する入場関数、イベント関数において関数間で共用した変数がある場合、関数型の制約上、その変数を関数の引数として渡すことができない。また、このような変数をグローバル変数として定義すると、ネスト構造のモジュールやマルチスレッドの場合、予期せぬ変数の内容の変更が行われる可能性が高く、外部アプリ117の障害原因となる。
【0063】
本実施の形態の外部アプリ117では、単一の状態遷移モデルのモジュールおよびネストしているモジュールで変数を共用可能としている。図6は、外部アプリ117のソースコードの定義部の一例を示す説明図である。
【0064】
図6に示すように、外部アプリ117のソースコードでは、同一ファイルに記述された入場関数、イベント関数でグローバル変数のように扱う変数を集めて、共用変数として一つの構造体(demoCommonParm_t)を定義する。また、この共用変数に簡易にアクセスするためにCOMMON_STRUCTを定義している。
【0065】
また、図6の例では、外部アプリ117は、2つの状態DEMO_ST_IDLE,DEMO_ST_RUNを有し、各状態のイベント関数テーブルeventDemoIdle,eventDemoRunが定義されている。また、demoStTbl[]は、この状態遷移モデルのモジュールで使用する各状態の入場関数、イベント関数テーブルを定義した状態の順に記述している。また、THREAD_NOによってスレッド番号を指定することにより、このスレッド番号のスレッド内で有効な共用変数を使用することが可能となる。
【0066】
図7は、外部アプリ117のソースコードの関数定義部の一例を示す説明図である。execDemoFunc関数は、状態遷移モデルを起動する処理を行う。具体的には、共用変数の領域確保、設定の後、状態遷移モデル起動関数StMachine()関数呼び出しを行う。図7の例では、スレッド番号THREAD_NOのスレッドで、demoStTbleの状態情報テーブルに従い、状態番号DEMO_ST_IDLEから起動し、pComが示す領域を共用変数として使用することを指示して、状態遷移モデル起動関数StMachine()を呼び出している。図7では、さらに図6で記述したイベント関数、入場関数の処理を記述する。
【0067】
次に、状態遷移モデル起動関数StMachine()の処理について説明する。図8は、状態遷移モデル起動関数StMachine()の処理手順を示すフローチャートである。
【0068】
状態遷移モデル起動関数StMachine()では、メッセージ受信を行うと、まず共用変数の領域割り当てを行う(ステップS701)。図9は、共用変数の領域割り当ての状態を示す説明図である。図9に示すように、本実施の形態ではスタックポインタspの値がそのままネスト番号に相当するようになっており、各ネストのモジュールごと、すなわち各ネストのモジュールで状態遷移モデル起動関数StMachine()が実行されるたびに、共用変数群へのポインタがスタック領域に積まれるようになっている。従って、共用変数が下位モジュールで不用意に変更されることがなく、図9に示すように同じ変数名の共用変数を正確な値に維持しつつグローバル変数のように使用することができる。
【0069】
次に、状態遷移モデル起動関数StMachine()は、現在の状態のイベント関数テーブルを参照してその内容をチェックする(ステップS702)。そして、イベント関数テーブルに受信メッセージが定義されているか否かを判断する(ステップS703)。そして、受信メッセージが定義されている場合には、受信メッセージに対応するイベント関数を実行し(ステップS704)、さらに入場関数を実行する(ステップS705)。一方、イベント関数テーブルに受信メッセージが定義されていない場合には、イベント関数の実行は行わない。そして、このような処理をイベント関数テーブルの末尾に到達するまで繰り返し行う(ステップS706)。このようにして状態遷移モデルに基づいて作成された外部アプリ117の実行が行われる。
【0070】
このように実施の形態1の複合機では、外部アプリ117が、複数のネスト構造のモジュールを含む外部アプリ117に実装され、各モジュールで共有する共用変数をモジュールごとに別個の領域に割り当てる状態遷移モデル起動関数が登録されたユーティリティライブラリを215を有しているので、外部アプリ117を構成するモジュール間で共用変数を安全に使用することができ、変数の値に起因する障害を回避でき、複合機100に外部アプリ117を搭載可能としながらも複合機100の安定性を維持することができる。
【0071】
(実施の形態2)
実施の形態1の複合機100は、外部アプリ117が状態遷移モデルに基づいて作成されているため、状態に依存したイベント関数を実行するのみであったが、この実施の形態2の複合機100では、外部アプリ117が、さらに状態に依存しない標準処理を行うものである。なお、実施の形態2の複合機100および外部アプリ117のプロセス内部の構造は、実施の形態1と同様である。
【0072】
実施の形態2の複合機100では、ユーティリティライブラリの状態遷移モデル起動関数StMachine()が、標準処理を行うように構成されている。
【0073】
図10は、状態遷移モデル起動関数StMachine()の処理手順を示すフローチャートである。共用変数の割り当てから入場関数の実行までの処理(ステップS901〜S906)は、実施の形態1の状態遷移モデル起動関数StMachine()と同様である。
【0074】
本実施の形態の状態遷移モデル起動関数StMachine()では、さらに標準関数テーブルを参照し、その内容をチェックする(ステップS907)。ここで、標準関数とは、イベントを受信したときに現在の状態とは無関係、非依存に実行される処理の関数である。例えば、電源OFFのイベントに対する処理、アプリケーションのオーナ権限の問い合わせイベントに対し、オーナ権限の有無を通知する処理などがあげられる。なお、標準関数テーブルは、メッセージ(イベント)に対して実行される標準関数を定めたものであり、イベント関数テーブルと同様の構造を有している。
【0075】
そして、標準関数テーブルに受信メッセージが定義されているか否かを判断する(ステップS908)。そして、受信メッセージが定義されている場合には、受信メッセージに対応する標準関数を実行する(ステップS909)。一方、標準関数テーブルに受信メッセージが定義されていない場合には、標準関数の実行は行わない。そして、このような処理を標準関数テーブルの末尾に到達するまで繰り返し行う(ステップS910)。このようにして状態遷移モデルに基づいて作成された外部アプリ117において、現在の状態に無関係に非同期にくるイベントに対する標準処理の実行が行われる。
【0076】
このように実施の形態2の複合機100では、状態遷移モデル起動関数は、現在の状態とは無関係に発生する非同期イベントを受信したときに行う処理を定めた標準関数を実行しているので、現在の状態とは無関係に生じる電源OFFなどのシステム関連のイベントなどに他のアプリに悪影響を与えずに対処することができ、複合機100の安定性を向上させることができる。
【0077】
【発明の効果】
以上説明したように、本発明によれば、プログラムを構成するモジュール間で共用変数を安全に使用することができ、変数の値に起因する障害を回避でき、情報処理装置に新規アプリケーションを搭載可能としながらも情報処理装置の安定性を維持することができるという効果を奏する。
【図面の簡単な説明】
【図1】実施の形態1にかかる複合機の機能的構成を示すブロック図である。
【図2】複合機のハードウェア構成を示す図である。
【図3】外部アプリのプロセス内部の構造を示す説明図である。
【図4】外部アプリが状態1と状態2を有する場合の状態遷移の説明図である。
【図5】ネスト構造を有する状態遷移モデルのモジュールからなる外部アプリの一例を示す説明図である。
【図6】外部アプリのソースコードの定義部の一例を示す説明図である。
【図7】外部アプリのソースコードの関数定義部の一例を示す説明図である。
【図8】状態遷移モデル起動関数StMachine()の処理手順を示すフローチャートである。
【図9】共用変数の領域割り当ての状態を示す説明図である。
【図10】実施の形態2における状態遷移モデル起動関数StMachine()の処理手順を示すフローチャートである。
【符号の説明】
100 複合機
101 白黒レーザプリンタ
102 カラーレーザプリンタ
103 HDD
104 ハードウェアリソース
110 ソフトウェア群
111 プリンタアプリ
112 コピーアプリ
113 ファックスアプリ
114 スキャナアプリ
115 ネットファイルアプリ
116 工程検査アプリ
117 外部アプリ
120 プラットホーム
121 汎用OS
122 SCS
123 SRM
124 ECS
125 MCS
126 OCS
127 FCS
128 NCS
130 アプリケーション
140 コントロールサービス
200 イメージライブラリスレッド
210 メインスレッド
211,212,214 メールボックス
213 イベント取得ハンドラ
215 ユーティリティライブラリ
220 サブスレッド

Claims (22)

  1. プログラムの取り得る状態と、前記状態下で前記プログラムに対して生じうるイベントと、前記イベントが前記状態下で生じたときに実行されるイベント関数と、前記イベント関数の実行後の遷移先の状態とによって動作が決定される状態遷移モデルに基づいた複数のネスト構造のモジュールを含む前記プログラムに実装され、各モジュールで共用する共用変数に対し前記モジュールごとに別個の領域に割り当てる状態遷移モデル起動関数が登録されたユーティリティライブラリ
    を備えたことを特徴とする情報処理装置。
  2. 前記ユーティリティライブラリの前記状態遷移モデル起動関数は、前記共用変数を、前記モジュールごとのスタック領域で指定された領域に割り当てることを特徴とする請求項1に記載の情報処理装置。
  3. 前記ユーティリティライブラリの前記状態遷移モデル起動関数は、スレッド単位で共用される共用変数を前記スレッドごとに別個の領域に割り当てることを特徴とする請求項1または2に記載の情報処理装置。
  4. 前記ユーティリティライブラリの前記状態遷移モデル起動関数は、前記状態の遷移が生じたときに行う処理を定めた入場関数を実行することを特徴とする請求項1〜3のいずれか一つに記載の情報処理装置。
  5. 前記ユーティリティライブラリの前記状態遷移モデル起動関数は、前記状態とは無関係に発生する非同期イベントを受信したときに行う処理を定めた標準関数を実行することを特徴とする請求項1〜4のいずれか一つに記載の情報処理装置。
  6. 前記情報処理装置は、画像形成処理を実行する画像形成装置である請求項1〜5のいずれか一つに記載の情報処理装置。
  7. 画像形成処理で使用されるハードウェア資源と、
    前記画像形成装置のアプリケーションと前記ハードウェア資源との間に介在し、ユーザサービスを提供する際に、アプリケーションの少なくとも2つが共通に必要とする前記ハードウェア資源の獲得要求、管理、実行制御並びに画像形成処理を行うコントロールサービスと、をさらに備え、
    前記プログラムは、前記アプリケーションであり、前記ユーティリティライブラリは、当該アプリケーションに結合されていることを特徴とする請求項6に記載の情報処理装置。
  8. プログラムの取り得る状態と、前記状態下で前記プログラムに対して生じうるイベントと、前記イベントが前記状態下で生じたときに実行されるイベント関数と、前記イベント関数の実行後の遷移先の状態とによって動作が決定される状態遷移モデルに基づいた複数のネスト構造のモジュールを含む前記プログラムのオブジェクトファイルと、各モジュールで共用する共用変数を前記モジュールごとに別個の領域に割り当てる状態遷移モデル起動関数が登録されたユーティリティライブラリとを結合するリンクステップ
    を含むことを特徴とするプログラム生成方法。
  9. 前記ユーティリティライブラリの前記状態遷移モデル起動関数は、前記共用変数を、前記モジュールごとのスタック領域で指定された領域に割り当てることを特徴とする請求項8に記載のプログラム生成方法。
  10. 前記ユーティリティライブラリの前記状態遷移モデル起動関数は、スレッド単位で共用される共用変数を前記スレッドごとに別個の領域に割り当てることを特徴とする請求項8または9に記載のプログラム生成方法。
  11. 前記ユーティリティライブラリの前記状態遷移モデル起動関数は、前記状態の遷移が生じたときに行う処理を定めた入場関数を実行することを特徴とする請求項8〜10のいずれか一つに記載のプログラム生成方法。
  12. 前記ユーティリティライブラリの前記状態遷移モデル起動関数は、前記状態とは無関係に発生する非同期イベントを受信したときに行う処理を定めた標準関数を実行することを特徴とする請求項8〜11のいずれか一つに記載のプログラム生成方法。
  13. 前記プログラム生成方法により生成されるプログラムは、画像形成装置で実行されるプログラムである請求項8〜12のいずれか一つに記載のプログラム生成方法。
  14. 前記画像形成装置は、
    画像形成処理で使用されるハードウェア資源と、
    前記画像形成装置のアプリケーションと前記ハードウェア資源との間に介在し、ユーザサービスを提供する際に、アプリケーションの少なくとも2つが共通に必要とする前記ハードウェア資源の獲得要求、管理、実行制御並びに画像形成処理を行うコントロールサービスとを備え、
    前記プログラムは前記アプリケーションであることを特徴とする請求項13に記載のプログラム生成方法。
  15. プログラムの取り得る状態と、前記状態下で前記プログラムに対して生じうるイベントと、前記イベントが前記状態下で生じたときに実行されるイベント関数と、前記イベント関数の実行後の遷移先の状態とによって動作が決定される状態遷移モデルであって、
    当該状態遷移モデルに基づいた複数のネスト構造のモジュールを含む前記プログラムに実装され、各モジュールで共用する共用変数に対し前記モジュールごとに別個の領域に割り当てる状態遷移モデル起動関数が登録されたユーティリティライブラリを備えた情報処理装置において用いられる状態遷移モデル。
  16. プログラムの取り得る状態と、前記状態下で前記プログラムに対して生じうるイベントと、前記イベントが前記状態下で生じたときに実行されるイベント関数と、前記イベント関数の実行後の遷移先の状態とによって動作が決定される状態遷移モデルに基づいた複数のネスト構造のモジュールを含む前記プログラムのオブジェクトファイルと、各モジュールで共用する共用変数を前記モジュールごとに別個の領域に割り当てる状態遷移モデル起動関数が登録されたユーティリティライブラリとを結合することにより生成されるプログラム。
  17. プログラムの取り得る状態と、前記状態下で前記プログラムに対して生じうるイベントと、前記イベントが前記状態下で生じたときに実行されるイベント関数と、前記イベント関数の実行後の遷移先の状態とによって動作が決定される状態遷移モデルに基づいた複数のネスト構造のモジュールを、情報処理装置に生成させるプログラムであって、情報処理装置に、
    メッセージの受信に応じて各モジュールで共用する共用変数を前記モジュールごとに別個の領域に割り当てる手順と、
    イベント関数テーブルを参照することにより前記メッセージに応じたイベント関数を実行する手順と
    を実行させるプログラム。
  18. 前記状態の遷移が生じたときに行う処理を定めた入場関数を更に実行させる請求項17に記載のプログラム。
  19. 前記状態とは無関係に発生する非同期イベントを受信したときに行う処理を定めた標準関数を更に実行させる請求項17または18に記載のプログラム。
  20. 前記情報処理装置は、画像形成処理を実行する画像形成装置である請求項17〜19のいずれか一つに記載のプログラム。
  21. 前記画像形成装置は、
    画像形成処理で使用されるハードウェア資源と、
    前記画像形成装置のアプリケーションと前記ハードウェア資源との間に介在し、ユーザサービスを提供する際に、アプリケーションの少なくとも2つが共通に必要とする前記ハードウェア資源の獲得要求、管理、実行制御並びに画像形成処理を行うコントロールサービスと、をさらに備え、
    前記プログラムは、前記アプリケーションである請求項20に記載のプログラム。
  22. 請求項16〜21のいずれか一つに記載のプログラムを記録したコンピュータ読み取り可能な記録媒体。
JP2003199950A 2002-07-26 2003-07-22 情報処理装置、情報処理方法、プログラム、及び記録媒体 Expired - Fee Related JP4246560B2 (ja)

Priority Applications (5)

Application Number Priority Date Filing Date Title
JP2003199950A JP4246560B2 (ja) 2002-09-24 2003-07-22 情報処理装置、情報処理方法、プログラム、及び記録媒体
US10/626,608 US7554685B2 (en) 2002-07-26 2003-07-25 Image forming apparatus, information processing apparatus, program execution method and program producing method
EP03254672A EP1385089A3 (en) 2002-07-26 2003-07-25 Image forming apparatus, information processing apparatus, program execution method and program producing method
CNB03160255XA CN1273888C (zh) 2002-07-26 2003-07-28 成像装置、信息处理装置、程序执行方法及程序生成方法
CN 200510113871 CN1818871B (zh) 2002-07-26 2003-07-28 信息处理装置

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2002276532 2002-09-24
JP2003199950A JP4246560B2 (ja) 2002-09-24 2003-07-22 情報処理装置、情報処理方法、プログラム、及び記録媒体

Publications (2)

Publication Number Publication Date
JP2004164582A true JP2004164582A (ja) 2004-06-10
JP4246560B2 JP4246560B2 (ja) 2009-04-02

Family

ID=32827711

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2003199950A Expired - Fee Related JP4246560B2 (ja) 2002-07-26 2003-07-22 情報処理装置、情報処理方法、プログラム、及び記録媒体

Country Status (1)

Country Link
JP (1) JP4246560B2 (ja)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008301484A (ja) * 2008-05-19 2008-12-11 Canon Inc シンジケーションデータの構造
JP2009134695A (ja) * 2007-11-07 2009-06-18 Ricoh Co Ltd 情報処理装置、画像処理装置、アプリケーション実行方法、及びアプリケーション実行プログラム
JP2009262702A (ja) * 2008-04-23 2009-11-12 Fuji Heavy Ind Ltd 安全運転支援システム
JP2010166603A (ja) * 2010-03-19 2010-07-29 Canon Inc 画像処理装置およびその制御方法とプログラム
JP2011014137A (ja) * 2009-06-30 2011-01-20 Intel Corp Mpiソースコードプログラムからmpiスレッドベースプログラムへの自動変換
US8438567B2 (en) 2007-11-07 2013-05-07 Ricoh Company, Ltd. Information processing device and image processing apparatus

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009134695A (ja) * 2007-11-07 2009-06-18 Ricoh Co Ltd 情報処理装置、画像処理装置、アプリケーション実行方法、及びアプリケーション実行プログラム
US8438567B2 (en) 2007-11-07 2013-05-07 Ricoh Company, Ltd. Information processing device and image processing apparatus
JP2009262702A (ja) * 2008-04-23 2009-11-12 Fuji Heavy Ind Ltd 安全運転支援システム
JP2008301484A (ja) * 2008-05-19 2008-12-11 Canon Inc シンジケーションデータの構造
JP2011014137A (ja) * 2009-06-30 2011-01-20 Intel Corp Mpiソースコードプログラムからmpiスレッドベースプログラムへの自動変換
JP2010166603A (ja) * 2010-03-19 2010-07-29 Canon Inc 画像処理装置およびその制御方法とプログラム
JP4653243B2 (ja) * 2010-03-19 2011-03-16 キヤノン株式会社 画像処理装置およびその制御方法とプログラム

Also Published As

Publication number Publication date
JP4246560B2 (ja) 2009-04-02

Similar Documents

Publication Publication Date Title
US8305591B2 (en) Image forming apparatus and methods used in the image forming apparatus
JP4276909B2 (ja) 画像形成装置およびアプリ起動制御方法
JP4365148B2 (ja) 画像形成装置及びラッピング処理方法並びにプログラム
US20030218765A1 (en) Apparatus for controlling launch of application and method
JP4344203B2 (ja) 画像形成装置および情報表示方法
JP5434174B2 (ja) 機器管理システム、画像処理装置、機器管理装置、機器管理方法、機器管理プログラムおよび記憶媒体
JP4373742B2 (ja) 画像形成装置およびアプリ起動制限方法
JP2004030601A (ja) リソース情報によりアプリケーション起動判断を行う装置及び方法
JP4394740B2 (ja) 画像形成装置、方法、及びプログラム
JP4504447B2 (ja) 画像形成装置、アプリケーション起動判断方法、プログラム、及び記録媒体
JP4246560B2 (ja) 情報処理装置、情報処理方法、プログラム、及び記録媒体
JP4128506B2 (ja) 画像形成装置およびアプリケーション情報取得方法
JP4314178B2 (ja) 画像形成装置、サービス機能分割統治方法およびサービス機能分割統治プログラム
JP4676977B2 (ja) 画像形成装置、アプリケーション情報取得方法、及びプログラム
JP2004127253A (ja) 情報処理装置およびバージョンチェック方法
JP2003330735A (ja) 画像形成装置および共有メモリ調停方法
JP4677054B2 (ja) 画像形成装置、プログラム、記録媒体、及び方法
JP4485749B2 (ja) 画像形成装置
JP2012192740A (ja) 機器、方法、プログラム、及び記録媒体
JP2004129220A (ja) 画像形成装置およびバージョンチェック方法
JP3857654B2 (ja) 画像形成装置,ユーザ情報管理方法,ユーザ情報管理プログラムおよび記録媒体
JP2007242052A (ja) プロセス間通信プログラムおよび画像情報処理装置
JP2009065713A (ja) 画像形成装置、共有メモリ調停方法、プログラムおよび記録媒体
JP2004005504A (ja) Webサービス機能を有する画像形成装置
JP2005229270A (ja) 画像形成装置、インタフェース方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20051101

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20080201

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20080603

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20080804

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20080909

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20081110

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20081216

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20090108

R150 Certificate of patent or registration of utility model

Ref document number: 4246560

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120116

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120116

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130116

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140116

Year of fee payment: 5

LAPS Cancellation because of no payment of annual fees