JP5025193B2 - Apparatus, information processing method, information processing program, and recording medium - Google Patents

Apparatus, information processing method, information processing program, and recording medium Download PDF

Info

Publication number
JP5025193B2
JP5025193B2 JP2006243221A JP2006243221A JP5025193B2 JP 5025193 B2 JP5025193 B2 JP 5025193B2 JP 2006243221 A JP2006243221 A JP 2006243221A JP 2006243221 A JP2006243221 A JP 2006243221A JP 5025193 B2 JP5025193 B2 JP 5025193B2
Authority
JP
Japan
Prior art keywords
service
state
information
state transition
transition
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.)
Expired - Fee Related
Application number
JP2006243221A
Other languages
Japanese (ja)
Other versions
JP2007109219A (en
Inventor
光男 安藤
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 JP2006243221A priority Critical patent/JP5025193B2/en
Priority to US11/521,495 priority patent/US9141374B2/en
Publication of JP2007109219A publication Critical patent/JP2007109219A/en
Application granted granted Critical
Publication of JP5025193B2 publication Critical patent/JP5025193B2/en
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Description

本発明は、機器、情報処理方法、情報処理プログラム、及び記録媒体に関する。 The present invention relates to a device , an information processing method, an information processing program, and a recording medium.

近年、コピー機能とプリンタ機能とスキャナ機能とファクシミリ機能を備える複合機や融合機が市販されるようになった。複合機や融合機は、コピーやプリンタとして機能する場合には、画像を印刷用紙に印刷することになり、コピーやスキャナとして機能する場合には、画像を読取原稿から読み取ることになり、ファクシミリとして機能する場合には、画像を電話回線を介して他の機器と授受することになる。
特開2002−84383号公報
In recent years, multifunction peripherals and multifunction peripherals having a copy function, a printer function, a scanner function, and a facsimile function have come to be marketed. When a multifunction device or multifunction device functions as a copy or a printer, it prints an image on printing paper. When it functions as a copy or a scanner, it reads an image from a read original, and functions as a facsimile. In the case of functioning, images are exchanged with other devices via a telephone line.
JP 2002-84383 A

近年、複合機や融合機には様々なアプリケーションやプラットフォームが実装される。そんな中で問題視されるのが、次々に登場する新規なアプリケーションに既存のプラットフォームが対応し切れなくなるのではないかと言う点である。プラットフォームの設計時において、随時開発されるアプリケーション同士の差異を考慮したり将来開発される種々のアプリケーションの機能を予測したりするのは非常に困難である。従って、アプリケーションの種類によってはプラットフォームの影響で正常に動作しない可能性も出て来る。従って、アプリケーションの多様な変化にプラットフォームが適切に対応できる仕組みを実現する事が望まれる。   In recent years, various applications and platforms have been implemented in multifunction peripherals and multifunction peripherals. In such a situation, it is pointed out that existing platforms may not be able to handle new applications that appear one after another. When designing a platform, it is very difficult to consider the difference between applications that are developed at any time and to predict the functions of various applications that will be developed in the future. Therefore, depending on the type of application, there is a possibility that it may not operate normally due to the platform. Therefore, it is desirable to realize a mechanism that allows the platform to appropriately respond to various changes in applications.

本発明は、アプリケーションやプラットフォームが実装される機器に関して、アプリケーションの多様な変化にプラットフォームが適切に対応できる仕組みを実現することを課題とする。 An object of the present invention is to realize a mechanism in which a platform can appropriately cope with various changes in an application regarding devices on which the application and the platform are mounted.

そこで上記課題を解決するため、本発明は、第一のプログラムにサービスを提供し互いに排他的に機器を動作させる複数のモジュールによって構成される第二のプログラムを備える機器であって、前記各モジュールは、前記第二のプログラムの状態遷移における各状態又は前記各状態間の状態遷移に対応し、前記状態遷移に対応するモジュールの識別情報と、当該状態遷移の条件と、当該条件を当該モジュールに対して設定する契機を示す情報とが指定された変更情報を記憶する変更情報記憶手段と、前記第一のプログラムが当該機器に実行させる前記第二のプログラムに対するサービスの提供要求に応じ、当該提供要求が前記契機を示す情報として前記変更情報に指定されている場合に、当該変更情報に指定されている前記条件を、当該変更情報に指定されている前記識別情報に係る前記モジュールに設定する変更手段とを有し、前記第二のプログラムは、当該第二のプログラムの状態遷移が発生する際は、当該状態遷移に対応する前記モジュールに対して設定されている条件に基づいて、当該状態遷移の可否を当該機器に判定させることを特徴とする。 Therefore in order to solve the above problems, the present invention provides a service to the first program, a device provided with exclusive multiple Therefore configured Second module of the program for operating the apparatus to each other, Each of the modules corresponds to each state in the state transition of the second program or a state transition between the states, the module identification information corresponding to the state transition, the condition of the state transition, and the condition In response to a request for providing service to the second program that the first program causes the device to execute, the change information storage unit that stores the change information in which the information indicating the trigger to be set for the module is specified , When the provision request is specified in the change information as information indicating the trigger, the condition specified in the change information is Change means for setting the module related to the identification information specified in the additional information, and the second program corresponds to the state transition when the state transition of the second program occurs. The apparatus is configured to determine whether or not the state transition is possible based on a condition set for the module to be performed.

このような機器では、アプリケーションの多様な変化にプラットフォームが適切に対応できる仕組みを実現することができる。 With such devices, it is possible to realize a mechanism that allows the platform to appropriately respond to various changes in applications.

本発明は、アプリケーションやプラットフォームが実装される機器に関して、アプリケーションの多様な変化にプラットフォームが適切に対応できる仕組みを実現するものである。 The present invention realizes a mechanism that allows a platform to appropriately cope with various changes in an application regarding devices on which the application and the platform are mounted.

図1は、本発明の実施例に該当する融合機101を表す。図1の融合機101は、種々のハードウェア111と、種々のソフトウェア112と、融合機起動部113により構成される。   FIG. 1 shows a compound machine 101 corresponding to an embodiment of the present invention. The compound machine 101 shown in FIG. 1 includes various hardware 111, various software 112, and a compound machine starting unit 113.

融合機101のハードウェア111としては、撮像部121と、印刷部122と、その他のハードウェア123が存在する。撮像部121は、読取原稿から画像(画像データ)を読み取るためのハードウェアである。印刷部122は、画像(画像データ)を印刷用紙に印刷するためのハードウェアである。   As the hardware 111 of the multi-function peripheral 101, there are an imaging unit 121, a printing unit 122, and other hardware 123. The imaging unit 121 is hardware for reading an image (image data) from a read original. The printing unit 122 is hardware for printing an image (image data) on printing paper.

融合機101のソフトウェア112としては、種々のアプリケーション131と、種々のプラットフォーム132が存在する。これらのプログラムは、UNIX(登録商標)等のOS(オペレーティングシステム)によりプロセス単位で並列的に実行される。   As the software 112 of the multi-function peripheral 101, there are various applications 131 and various platforms 132. These programs are executed in parallel on a process basis by an OS (Operating System) such as UNIX (registered trademark).

アプリケーション131としては、コピー用のアプリケーションであるコピーアプリ141、プリンタ用のアプリケーションであるプリンタアプリ142、スキャナ用のアプリケーションであるスキャナアプリ143、ファクシミリ用のアプリケーションであるファクシミリアプリ144、ネットワークファイル用のアプリケーションであるネットワークファイルアプリ145が存在する。   The application 131 includes a copy application 141 that is a copy application, a printer application 142 that is a printer application, a scanner application 143 that is a scanner application, a facsimile application 144 that is a facsimile application, and a network file application. There is a network file application 145.

アプリケーション131は、専用のSDK(ソフトウェア開発キット)を使用して開発することができる。SDKを使用して開発したアプリケーション131をSDKアプリと呼ぶ。専用のSDKとしては、C言語でアプリケーション131を開発するための「CSDK」や、Java(登録商標)言語でアプリケーション131を開発するための「JSDK」が提供される。CSDKを使用して開発したアプリケーション131を「CSDKアプリ」と呼び、JSDKを使用して開発したアプリケーション131を「JSDKアプリ」と呼ぶ。図1の融合機101にも、CSDKアプリ146と、JSDKアプリ147が存在する。図1の融合機101にはさらに、Java(登録商標)言語で記述されたJSDKアプリ147とC言語で記述された他のソフトウェア112との仲介を行うソフトウェア112として、JSDKプラットフォーム148が存在する。   The application 131 can be developed using a dedicated SDK (software development kit). An application 131 developed using the SDK is called an SDK application. As the dedicated SDK, “CSDK” for developing the application 131 in C language and “JSDK” for developing the application 131 in Java (registered trademark) language are provided. An application 131 developed using CSDK is called a “CSDK application”, and an application 131 developed using JSDK is called a “JSDK application”. The MFP 101 in FIG. 1 also has a CSDK application 146 and a JSDK application 147. 1 further includes a JSDK platform 148 as software 112 that mediates between the JSDK application 147 written in the Java (registered trademark) language and the other software 112 written in the C language.

プラットフォーム132としては、種々のコントロールサービス151、システムリソースマネージャ152、種々のハンドラ153が存在する。コントロールサービス151としては、ネットワークコントロールサービス(NCS)161、ファクシミリコントロールサービス(FCS)162、デリバリコントロールサービス(DCS)163、エンジンコントロールサービス(ECS)164、メモリコントロールサービス(MCS)165、オペレーションパネルコントロールサービス(OCS)166、サーティフィケーションコントロールサービス(CCS)167、ユーザディレクトリコントロールサービス(UCS)168、システムコントロールサービス(SCS)169が存在する。ハンドラ153としては、ファクシミリコントロールユニットハンドラ(FCUH)171、イメージメモリハンドラ(IMH)172が存在する。   The platform 132 includes various control services 151, a system resource manager 152, and various handlers 153. The control service 151 includes a network control service (NCS) 161, a facsimile control service (FCS) 162, a delivery control service (DCS) 163, an engine control service (ECS) 164, a memory control service (MCS) 165, and an operation panel control service. There are (OCS) 166, a certification control service (CCS) 167, a user directory control service (UCS) 168, and a system control service (SCS) 169. As the handler 153, there are a facsimile control unit handler (FCUH) 171 and an image memory handler (IMH) 172.

NCS161のプロセスは、ネットワーク通信の仲介を行う。FCS162のプロセスは、ファクシミリのAPIを提供する。DCS163のプロセスは、蓄積文書の配信処理に関する制御を行う。ECS164のプロセスは、撮像部121や印刷部122に関する制御を行う。MCS165のプロセスは、メモリやハードディスクドライブに関する制御を行う。OCS166のプロセスは、オペレーションパネルに関する制御を行う。CCS167のプロセスは、認証処理や課金処理に関する制御を行う。UCS168のプロセスは、ユーザ情報の管理に関する制御を行う。SCS169のプロセスは、システムの管理に関する制御を行う。   The process of the NCS 161 mediates network communication. The FCS 162 process provides a facsimile API. The process of the DCS 163 performs control related to the distribution processing of the stored document. The process of the ECS 164 performs control related to the imaging unit 121 and the printing unit 122. The process of the MCS 165 controls the memory and hard disk drive. The process of the OCS 166 performs control related to the operation panel. The process of the CCS 167 performs control related to authentication processing and billing processing. The process of the UCS 168 performs control related to management of user information. The process of the SCS 169 performs control related to system management.

アプリケーション131とプラットフォーム132の仲介を行うソフトウェア112として、仮想アプリケーションサービス(VAS)135が存在する。VAS135は、アプリケーション131をクライアントとするサーバプロセスとして動作すると共に、プラットフォーム132をサーバとするクライアントプロセスとして動作する。VAS135は、アプリケーション131から見てプラットフォーム132を隠蔽するラッピング機能を備え、プラットフォーム132のバージョンアップに伴うバージョン差を吸収する役割等を担う。   A virtual application service (VAS) 135 exists as software 112 that mediates between the application 131 and the platform 132. The VAS 135 operates as a server process using the application 131 as a client, and also operates as a client process using the platform 132 as a server. The VAS 135 has a wrapping function that hides the platform 132 when viewed from the application 131, and plays a role of absorbing version differences associated with version upgrades of the platform 132.

融合機起動部113は、融合機101の電源投入時に最初に実行される。これにより、UNIX(登録商標)等のOSが起動され、アプリケーション131やプラットフォーム132が起動される。これらのプログラムは、ハードディスクドライブやメモリカードに蓄積されており、ハードディスクドライブやメモリカードから再生されて、メモリに起動されることになる。   The MFP starter 113 is executed first when the MFP 101 is turned on. As a result, an OS such as UNIX (registered trademark) is activated, and the application 131 and the platform 132 are activated. These programs are stored in the hard disk drive or the memory card, and are reproduced from the hard disk drive or the memory card and activated in the memory.

図2は、図1の融合機101に係るハードウェア構成図である。融合機101のハードウェア111としては、コントローラ201と、オペレーションパネル202と、ファクシミリコントロールユニット(FCU)203と、撮像部121と、印刷部122が存在する。   FIG. 2 is a hardware configuration diagram according to the MFP 101 of FIG. The hardware 111 of the multi-function peripheral 101 includes a controller 201, an operation panel 202, a facsimile control unit (FCU) 203, an imaging unit 121, and a printing unit 122.

コントローラ201は、CPU211、ASIC212、NB221、SB222、MEM−P231、MEM−C232、HDD(ハードディスクドライブ)233、メモリカードスロット234、NIC(ネットワークインタフェースコントローラ)241、USBデバイス242、IEEE1394デバイス243、セントロニクスデバイス244により構成される。   The controller 201 includes a CPU 211, ASIC 212, NB221, SB222, MEM-P231, MEM-C232, HDD (hard disk drive) 233, memory card slot 234, NIC (network interface controller) 241, USB device 242, IEEE 1394 device 243, and Centronics device. 244.

CPU211は、種々の情報処理用のICである。ASIC212は、種々の画像処理用のICである。NB221は、コントローラ201のノースブリッジである。SB222は、コントローラ201のサウスブリッジである。MEM−P231は、融合機101のシステムメモリである。MEM−C232は、融合機101のローカルメモリである。HDD233は、融合機101のストレージである。メモリカードスロット234は、メモリカード235をセットするためのスロットである。NIC241は、MACアドレスによるネットワーク通信用のコントローラである。USBデバイス242は、USB規格の接続端子を提供するためのデバイスである。IEEE1394デバイス243は、IEEE1394規格の接続端子を提供するためのデバイスである。セントロニクスデバイス244は、セントロニクス仕様の接続端子を提供するためのデバイスである。   The CPU 211 is an IC for various information processing. The ASIC 212 is an IC for various image processing. The NB 221 is a north bridge of the controller 201. The SB 222 is a south bridge of the controller 201. The MEM-P 231 is a system memory of the multifunction machine 101. The MEM-C 232 is a local memory of the multifunction machine 101. The HDD 233 is a storage of the multifunction machine 101. The memory card slot 234 is a slot for setting the memory card 235. The NIC 241 is a controller for network communication using a MAC address. The USB device 242 is a device for providing a USB standard connection terminal. The IEEE 1394 device 243 is a device for providing a connection terminal of the IEEE 1394 standard. The Centronics device 244 is a device for providing a Centronics specification connection terminal.

オペレーションパネル202は、オペレータが融合機101に入力を行うためのハードウェア(操作部)であると共に、オペレータが融合機101から出力を得るためのハードウェア(表示部)である。   The operation panel 202 is hardware (operation unit) for an operator to input to the multifunction machine 101 and hardware (display unit) for the operator to obtain an output from the multifunction machine 101.

図3は、図1の融合機101に係る外観図である。図3には、撮像部121の位置と、印刷部122の位置と、オペレーションパネル202の位置が図示されている。図3には更に、読取原稿のセット先となる原稿セット部301と、印刷用紙の給紙先となる給紙部302と、印刷用紙の排紙先となる排紙部303が図示されている。   FIG. 3 is an external view of the multi-function peripheral 101 of FIG. FIG. 3 shows the position of the imaging unit 121, the position of the printing unit 122, and the position of the operation panel 202. FIG. 3 further illustrates a document setting unit 301 that is a setting destination of a read document, a paper feeding unit 302 that is a printing paper feeding destination, and a paper discharging unit 303 that is a printing paper discharging destination. .

オペレーションパネル202は、図4のように、タッチパネル311と、テンキー312と、スタートボタン313と、リセットボタン314と、機能キー315と、初期設定ボタン316により構成される。タッチパネル311は、タッチ操作で入力を行うためのハードウェア(タッチ操作部)であると共に、画面表示で出力を得るためのハードウェア(画面表示部)である。テンキー312は、キー(ボタン)操作で数字入力を行うためのハードウェアである。スタートボタン313は、ボタン操作でスタート操作を行うためのハードウェアである。リセットボタン314は、ボタン操作でリセット操作を行うためのハードウェアである。機能キー315は、キー(ボタン)操作でCSDKアプリ146やJSDKアプリ147による操作画面を表示させるためのハードウェアである。初期設定ボタン316は、ボタン操作で初期設定画面を表示させるためのハードウェアである。   As shown in FIG. 4, the operation panel 202 includes a touch panel 311, a numeric keypad 312, a start button 313, a reset button 314, a function key 315, and an initial setting button 316. The touch panel 311 is hardware (touch operation unit) for inputting by a touch operation and hardware (screen display unit) for obtaining an output by screen display. The numeric keypad 312 is hardware for inputting numbers by operating keys (buttons). The start button 313 is hardware for performing a start operation by a button operation. The reset button 314 is hardware for performing a reset operation by a button operation. The function key 315 is hardware for displaying an operation screen by the CSDK application 146 or the JSDK application 147 by a key (button) operation. The initial setting button 316 is hardware for displaying an initial setting screen by button operation.

原稿セット部301は、ADF(自動原稿搬送装置)321と、フラットベッド322と、フラットベッドカバー323により構成される。給紙部302は、4個の給紙トレイにより構成される。排紙部303は、1個の排紙トレイにより構成される。   The document setting unit 301 includes an ADF (automatic document feeder) 321, a flat bed 322, and a flat bed cover 323. The paper feed unit 302 includes four paper feed trays. The paper discharge unit 303 includes a single paper discharge tray.

(CSDK/JSDK/OSGi)
図5は、図1のCSDKアプリ146とJSDKアプリ147のソフトウェア構成図である。CSDKアプリ146は、C言語のアプリケーションであり、それぞれプロセスとして実行される事になる。JSDKアプリ147は、Java(登録商標)言語のアプリケーションであり、それぞれスレッドとして実行される事になる。
(CSDK / JSDK / OSGi)
FIG. 5 is a software configuration diagram of the CSDK application 146 and the JSDK application 147 of FIG. The CSDK application 146 is a C language application and is executed as a process. The JSDK application 147 is a Java (registered trademark) language application, and is executed as a thread.

図1の融合機101には、CSDKアプリ146として、他のCSDKアプリ146の制御を行うSAS(SDKアプリケーションサービス)411が存在し、JSDKアプリ147として、他のJSDKアプリ147の制御を行うSAS Manager(SDKアプリケーションサービスマネージャ)511が存在する。CSDKアプリ146の方はプロセスとして実行されてJSDKアプリ147の方はスレッドとして実行されるので、CSDKアプリ146用のアプリケーション管理機構とJSDKアプリ147用のアプリケーション管理機構が別個に存在するのである。SAS411とSAS Manager511はそれぞれ、CSDKアプリ146とJSDKアプリ147の起動制御,起動解除制御,インストール制御,アンインストール制御,アップデート制御等を行う。   1 includes a SAS (SDK application service) 411 that controls another CSDK application 146 as the CSDK application 146, and a SAS Manager that controls another JSDK application 147 as the JSDK application 147. (SDK application service manager) 511 exists. Since the CSDK application 146 is executed as a process and the JSDK application 147 is executed as a thread, an application management mechanism for the CSDK application 146 and an application management mechanism for the JSDK application 147 exist separately. The SAS 411 and the SAS manager 511 perform activation control, activation release control, installation control, uninstallation control, update control, and the like of the CSDK application 146 and the JSDK application 147, respectively.

さて、SAS411は、CSDKアプリ146の制御を行う事ができるだけではなく、SAS Manager511を介してJSDKアプリ147の制御を行う事もできる。SAS411は、CSDKアプリ146については直接的にその制御を行う事ができると共に、JSDKアプリ147についてはSAS Manager511を介して間接的にその制御を行う事ができるのである。このように、CSDKアプリ146用のアプリケーション管理機構とJSDKアプリ147用のアプリケーション管理機構は、SAS Manager511を制御できる機能をSAS411に具備させると言う形で統合的に構成されている。融合機101のソフトウェアの根幹部分はC言語によるので、SDKアプリを制御する機能を同じくC言語によるSAS411に集中しておくのが好適なのである。   The SAS 411 can not only control the CSDK application 146, but can also control the JSDK application 147 via the SAS Manager 511. The SAS 411 can directly control the CSDK application 146 and can indirectly control the JSDK application 147 via the SAS Manager 511. As described above, the application management mechanism for the CSDK application 146 and the application management mechanism for the JSDK application 147 are integratedly configured in such a manner that the SAS 411 is provided with a function capable of controlling the SAS Manager 511. Since the fundamental part of the software of the multi-function peripheral 101 is in C language, it is preferable to concentrate the functions for controlling the SDK application on the SAS 411 in the same C language.

図6は、図1の融合機101におけるOSGi(Open Service Gateway initiative)サービスプラットフォームについて説明するための図である。OSGiサービスプラットフォームは、OSGiアライアンスによる標準化技術であり、Java(登録商標)言語に基づいたオープンなソフトウェア部品化技術である。OSGiサービスプラットフォームが実装された機器では、Java(登録商標)言語のソフトウェアは「バンドル」と言うソフトウェア部品の形で実装される。そして、該機器の諸機能はバンドルをもって構成する事ができると共に、該機器の諸機能のアップデートやカスタマイズやメンテナンスはバンドルのダウンロードをもって実現する事ができる。   FIG. 6 is a diagram for explaining an OSGi (Open Service Gateway initial) service platform in the multi-function peripheral 101 of FIG. The OSGi service platform is a standardized technology by the OSGi Alliance, and is an open software componentization technology based on the Java (registered trademark) language. In a device on which the OSGi service platform is mounted, Java (registered trademark) language software is mounted in the form of a software component called “bundle”. The functions of the device can be configured with a bundle, and updates, customization, and maintenance of the functions of the device can be realized by downloading the bundle.

図1の融合機101には、Java(登録商標)言語のソフトウェアとして、JSDKアプリ147と、JSDKプラットフォーム148と、OSGi用のアプリケーションであるOSGiアプリ401と、OSGi用のサービスであるOSGiサービス402と、バンドルの管理(バンドルのライフサイクルやデータの管理等)を行うOSGiフレームワーク403が存在する。   1 includes, as software in Java (registered trademark), a JSDK application 147, a JSDK platform 148, an OSGi application 401 that is an OSGi application, and an OSGi service 402 that is an OSGi service. There is an OSGi framework 403 that manages bundles (such as bundle lifecycle and data management).

図1の融合機101にはさらには、他機のOSGiサービスプラットフォームを自機のOSGiサービスプラットフォームと同様に処理するためのCSC(Communication Service Concierge)421と、Java(登録商標)言語のソフトウェアを実行するためのCVM(Compact Virtual Machine)555が存在する。   1 further executes CSC (Communication Service Concierge) 421 for processing the OSGi service platform of the other machine in the same manner as the OSGi service platform of the own machine and Java (registered trademark) software. CVM (Compact Virtual Machine) 555 exists.

さて、OSGiアプリ401とJSDKアプリ147に関して、OSGiアプリ401はバンドル化された状態で融合機101に実装するものとするが、JSDKアプリ147はバンドル化されていない状態で融合機101に実装するものとする。理由は、JSDKアプリ147をバンドル化して実装する負担をJSDKアプリ147のベンダに課さないようにするためである。その代わり、JSDKアプリ147をバンドル化する「Bundle Activator404」がJSDKプラットフォーム148に存在している。そして、OSGiフレームワーク403は、バンドル化された状態で融合機101に実装されたバンドル(OSGiアプリ401)の管理を行うと共に、バンドル化されていない状態で融合機101に実装されて「Bundle Activator404」によってバンドル化されるバンドル(JSDKアプリ147)の管理を行う事になる。このようにして、OSGiアプリ401用のアプリケーション管理機構とJSDKアプリ147用のアプリケーション管理機構は、OSGiフレームワーク403とBundle Activator404を併設すると言う形で統合的に構成されているのである。これにより、Java(登録商標)言語のアプリケーションの管理先の一元化が実現されている。   Now, regarding the OSGi application 401 and the JSDK application 147, the OSGi application 401 is mounted on the MFP 101 in a bundled state, but the JSDK application 147 is mounted on the MFP 101 in a non-bundled state. And The reason is that the burden of bundling and mounting the JSDK application 147 is not imposed on the vendor of the JSDK application 147. Instead, the “Bundle Activator 404” for bundling the JSDK application 147 exists in the JSDK platform 148. The OSGi framework 403 manages the bundle (OSGi application 401) installed in the multi-function peripheral 101 in a bundled state, and is installed in the multi-function peripheral 101 in a non-bundled state to display “Bundle Activator 404”. ”(JSDK application 147) is managed. In this way, the application management mechanism for the OSGi application 401 and the application management mechanism for the JSDK application 147 are configured in an integrated manner in such a manner that the OSGi framework 403 and the bundle activator 404 are provided side by side. Thereby, unification of management destinations of Java (registered trademark) language applications is realized.

なお、OSGiフレームワーク403は、当然の事ながら、OSGiサービス402を構成するバンドルの管理や、JSDKプラットフォーム148を構成するバンドルの管理も行う。Java(登録商標)言語のソフトウェアの管理先の一元化が実現されていると言える。そして、OSGiアプリ401はここではServletかJSPであるものとする。そして、JSDKアプリ147はここではXletであるものとする。   As a matter of course, the OSGi framework 403 also manages bundles constituting the OSGi service 402 and bundles constituting the JSDK platform 148. It can be said that unification of management destinations of Java (registered trademark) language software is realized. The OSGi application 401 is assumed to be Servlet or JSP here. The JSDK application 147 is assumed to be Xlet here.

なお、JSDKアプリ147についても、バンドル化された状態で実装するものとしてもよい。さらに、JSDKアプリ147については、バンドル化された状態で実装してもバンドル化されていない状態で実装してもどちらでもよいものとしてもよい。バンドル化された状態で実装されるJSDKアプリ147については、Bundle Activator404によるバンドル化は不要である。   Note that the JSDK application 147 may also be implemented in a bundled state. Furthermore, the JSDK application 147 may be mounted either in a bundled state or in a non-bundled state. For the JSDK application 147 implemented in a bundled state, bundling by the bundle activator 404 is not necessary.

(JSDK)
図7は、図1のJSDKアプリ147とJSDKプラットフォーム148のクラス図である。JSDKアプリ147とJSDKプラットフォーム148は、全体で1プロセスとして、同一プロセス上で実行される。JSDKアプリ147とJSDKプラットフォーム148中の各ブロックは、それぞれこの1プロセス上のスレッドとして、スレッド単位で並列的に実行(マルチスレッド)される。JSDKアプリ147とJSDKプラットフォーム148は、Java(登録商標)コンパイラによりソースコードからバイトコードに一括翻訳されており、Java(登録商標)仮想マシンにより逐次実行される。JSDKアプリ147とJSDKプラットフォーム148は「Java(登録商標) 2 Micro Edition」の「Foundation Profile」がベースとなっている。
(JSDK)
FIG. 7 is a class diagram of the JSDK application 147 and the JSDK platform 148 of FIG. The JSDK application 147 and the JSDK platform 148 are executed on the same process as one process as a whole. Each block in the JSDK application 147 and the JSDK platform 148 is executed in parallel (multithread) in units of threads as threads on one process. The JSDK application 147 and the JSDK platform 148 are collectively translated from source code to bytecode by a Java (registered trademark) compiler, and sequentially executed by a Java (registered trademark) virtual machine. The JSDK application 147 and the JSDK platform 148 are based on the “Foundation Profile” of “Java (registered trademark) 2 Micro Edition”.

JSDKアプリ147としては、図に示す通り、ユーザアプリ501と、SAS Manager511と、Screen Manager512等が存在する。   As shown in the figure, the JSDK application 147 includes a user application 501, a SAS manager 511, a screen manager 512, and the like.

ユーザアプリ501は、融合機101のユーザ(例えばベンダ)がJSDKを使用して開発したJSDKアプリ147である。SAS Manager511は、他のJSDKアプリ147(ユーザアプリ501等)の制御等を行うJSDKアプリ147である。Screen Manager512は、他のJSDKアプリ147(ユーザアプリ501等)を操作対象とする操作画面の表示等を行うJSDKアプリ147である。   The user application 501 is a JSDK application 147 developed by a user (for example, a vendor) of the multifunction machine 101 using JSDK. The SAS manager 511 is a JSDK application 147 that controls other JSDK applications 147 (such as the user application 501). The screen manager 512 is a JSDK application 147 that displays an operation screen for other JSDK applications 147 (such as the user application 501).

ユーザアプリ501はここでは、スタンドアロンアプリケーションやアプレットと並ぶJava(登録商標)アプリケーションの一種であるXletである。SAS Manager511とScreen Manager512はここでは、独自の拡張を施したXlet(XletEx)である。   Here, the user application 501 is an Xlet that is a kind of Java (registered trademark) application along with a stand-alone application and an applet. Here, the SAS manager 511 and the screen manager 512 are Xlet (XletEx) with unique extensions.

JSDKプラットフォーム148には、図に示す通り、JSDK Environment521と、Xlet Manager531と、Multi Xlet Manager532と、Send Manager541と、Event Manager542と、System Event Manager543と、Panel Manager544と、Install Manager545と、Server/Client Manager546と、Service Manager547等のクラスが存在する。   As shown in the figure, the JSDK platform 148 includes a JSDK Environment 521, Xlet Manager 531, Multi Xlet Manager 532, Send Manager 541, Event Manager 542, System Manager 542, Event Manager 542, Event Manager 542, Event Manager 542 , Class such as Service Manager 547 exists.

JSDK Environment521は、JSDKシステムの実行環境を反映したJSDKシステムの起動環境設定を実行するクラスである。   The JSDK Environment 521 is a class that executes a startup environment setting of the JSDK system that reflects the execution environment of the JSDK system.

Xlet Manager531は、1対1でXletを管理するクラスである。ここでは、5個のXletのライフサイクルやデータがそれぞれ1対1で5個のXlet Manager531によって管理される。Multi Xlet Manager532は、全てのXlet Manager531を管理するクラスである。ここでは、5個のXlet Manager531のライフサイクルやデータが全て1個のMulti Xlet Manager532によって管理される。なお、SAS Manager511,Screen Manager512,JSDK Environment521,Multi Xlet Manager532,Send Manager541,Event Manager542,System Event Manager543,Panel Manager544,Install Manager545,Server/Client Manager546,Service Manager547等のクラスのバンドルのライフサイクルやデータは、OSGiフレームワーク403によって管理される。   The Xlet Manager 531 is a class that manages Xlet on a one-to-one basis. Here, the life cycle and data of five Xlets are managed by five Xlet Managers 531 on a one-to-one basis. The Multi Xlet Manager 532 is a class that manages all Xlet Managers 531. Here, the life cycle and data of the five Xlet Managers 531 are all managed by one Multi Xlet Manager 532. Note: SAS Manager 511, Screen Manager 512, JSDK Environment 521, Multi Xlet Manager 532, Send Manager 541, Event Manager 542, System Event Manager 543, Sage Manager 543, Sever Manager 534, System Manager 543, Sage Manager 543 Managed by the OSGi framework 403.

System Event Manager543は、図1のプラットフォーム132からのシステムイベント(電力モード等)の管理を行うクラスである。Panel Manager544は、1個のXletが図2のオペレーションパネル202の画面を占有する際の調停を行うクラスである。Install Manager545は、SDcardやWebからのインストールやアンインストールの管理を行うクラスである。Service Manager547は、Xletからのサービス要求に応じてXletへのサービス提供を行うクラスである。   The System Event Manager 543 is a class that manages system events (power mode, etc.) from the platform 132 of FIG. The Panel Manager 544 is a class that performs arbitration when one Xlet occupies the screen of the operation panel 202 of FIG. The Install Manager 545 is a class that manages installation and uninstallation from SDcard and Web. The Service Manager 547 is a class that provides a service to the Xlet in response to a service request from the Xlet.

図7のJSDKシステムでは、APIとして、JSDK API551とJSDK API552が利用される。なお、XletとXletExの差異として、XletExは、オブジェクトにアクセスするのにJSDK API551の利用とJSDKプラットフォーム148へのアクセスが可能である点が挙げられる。図1の融合機101にはさらに、図7のJSDKシステムに係る要素として、C言語とJava(登録商標)言語のインタフェースとなるJSDK Session553とNative JSDK Session554や、JSDKアプリ147とJSDKプラットフォーム148を実行するためJava(登録商標)仮想マシンであるCVM555が存在する。   In the JSDK system of FIG. 7, JSDK API 551 and JSDK API 552 are used as APIs. A difference between Xlet and XletEx is that XletEx can use the JSDK API 551 and access the JSDK platform 148 to access objects. 1 further executes JSDK Session 553 and Native JSDK Session 554, which are interfaces of C language and Java (registered trademark), and JSDK application 147 and JSDK platform 148 as elements related to the JSDK system of FIG. Therefore, there is a CVM 555 that is a Java (registered trademark) virtual machine.

図8は、JSDKシステムの起動処理を説明するための図である。JSDKシステムの起動処理では先ず、OSGiフレームワーク403が、OSGiアプリ401やOSGiサービス402を構成するバンドルを生成(S1)する。次に、OSGiフレームワーク403が、JSDKアプリ147やJSDKプラットフォーム148を構成するバンドルを生成(S2)する。次に、JSDK Environment521が、JSDK Session553やNative JSDK Session554を生成するなど、JSDKシステムの実行環境を反映したJSDKシステムの起動環境設定を実行(S3)する。次に、JSDK Session553が、Send Manager541やEvent Manager542を生成(S4)する。なお、ユーザアプリ501の起動処理には、SAS411やSAS Manager511が関与(S5)する。   FIG. 8 is a diagram for explaining a startup process of the JSDK system. In the startup process of the JSDK system, first, the OSGi framework 403 generates bundles that constitute the OSGi application 401 and the OSGi service 402 (S1). Next, the OSGi framework 403 generates a bundle constituting the JSDK application 147 and the JSDK platform 148 (S2). Next, the JSDK Environment 521 executes a JSDK system startup environment setting that reflects the JSDK system execution environment, such as generating a JSDK Session 553 and a Native JSDK Session 554 (S3). Next, the JSDK Session 553 generates a Send Manager 541 and an Event Manager 542 (S4). Note that SAS 411 and SAS Manager 511 are involved in the activation process of user application 501 (S5).

以下、Service Manager547について詳細に説明する。文中、Service Manager547についてはFunction Service601、JSDK API551についてはFunction API611、JSDK API552についてはC/J API621と表記する。なお、APIは、アプリケーションプログラムインタフェースの略語に相当する。   Hereinafter, the Service Manager 547 will be described in detail. In the text, the Service Manager 547 is expressed as a Function Service 601, the JSDK API 551 is expressed as a Function API 611, and the JSDK API 552 is expressed as a C / J API 621. API corresponds to an abbreviation for application program interface.

1)Function Service
図9は、図7のJSDKシステムを構成するFunction Service601について説明するためのクラス図である。Function Service601は、ユーザアプリ501からのサービス要求に応じてユーザアプリ501へのサービス提供を行うクラスである。サービス内容の具体例としては、コピー処理の実行制御に関するサービス、プリント処理の実行制御に関するサービス、スキャン処理の実行制御に関するサービス、ファックス処理の実行制御に関するサービスが挙げられる。図7のJSDKシステムには、Function Service601とユーザアプリ501との間のサービス授受を仲介するAPIとして、Function API611が存在する。
1) Function Service
FIG. 9 is a class diagram for explaining the Function Service 601 constituting the JSDK system of FIG. The Function Service 601 is a class that provides a service to the user application 501 in response to a service request from the user application 501. Specific examples of service contents include a service related to execution control of copy processing, a service related to execution control of print processing, a service related to execution control of scan processing, and a service related to execution control of fax processing. In the JSDK system in FIG. 7, a Function API 611 exists as an API that mediates service exchange between the Function Service 601 and the user application 501.

Function Service601は、ユーザアプリ501からのサービス要求を調停する機能を備える。ユーザアプリ501からのサービス要求が競合する場合があるからである。Function Service601は、図9に示す通り、一のユーザアプリ501からのサービス要求と他のユーザアプリ501からのサービス要求とが競合する際には、一方のサービス要求を優先させて他方のサービス要求を劣後させる等、一方のサービス要求と他方のサービス要求とを調停する事になる。   The Function Service 601 has a function of arbitrating service requests from the user application 501. This is because service requests from the user application 501 may conflict. As shown in FIG. 9, when the service request from one user application 501 and the service request from another user application 501 compete, the Function Service 601 gives priority to one service request and sends the other service request. One service request and the other service request are arbitrated, such as subordinated.

Function Service601には、Adaptive Function701や、Adaptive Behavior702等のクラスが存在する。さらに、Adaptive Behavior702には、Copy Service711や、Print Service712や、Scan Service713や、Fax Service714や、SAS Service721等のクラスが存在する。   The Function Service 601 includes classes such as Adaptive Function 701 and Adaptive Behavior 702. In addition, the Adaptive Behavior 702 includes classes such as Copy Service 711, Print Service 712, Scan Service 713, Fax Service 714, and SAS Service 721.

Adaptive Function701は、ユーザアプリ501等からのサービス要求を受け付けるクラスである。Adaptive Function701は、ユーザアプリ501等からのサービス要求を処理する動的に変更可能な種々の関数を備える。Adaptive Behavior702は、ユーザアプリ501等へのサービス提供を執り行うクラスである。Adaptive Behavior702は、自己の振る舞いを動的に変更する機能を備える。なお、プログラムの振る舞いの取り扱いに関する具体例は例えば、特願2004−062413に開示されている。   The Adaptive Function 701 is a class that receives a service request from the user application 501 or the like. The Adaptive Function 701 includes various functions that can be dynamically changed to process a service request from the user application 501 or the like. The Adaptive Behavior 702 is a class that provides services to the user application 501 and the like. The Adaptive Behavior 702 has a function of dynamically changing its own behavior. For example, Japanese Patent Application No. 2004-062413 discloses a specific example of handling of program behavior.

Copy Service711は、コピー処理の実行制御に関するサービス提供等を執り行うクラスである。Print Service712は、プリント処理の実行制御に関するサービス提供等を執り行うクラスである。Scan Service713は、スキャン処理の実行制御に関するサービス提供等を執り行うクラスである。Fax Service714は、ファックス処理の実行制御に関するサービス提供等を執り行うクラスである。   The Copy Service 711 is a class that provides services related to copy process execution control. The Print Service 712 is a class that provides services related to print process execution control. The Scan Service 713 is a class that provides services related to execution control of scan processing. The Fax Service 714 is a class that provides services related to execution control of fax processing.

SAS Service721は、ユーザアプリ501の動作態様を制御するクラスである。SAS Service721は、Adaptive Behavior702の振る舞いの動的な変更に応じて所定のユーザアプリ501の動作態様を変更する。なお、SAS Service721は、SAS Manager511を制御する事でユーザアプリ501の動作態様を制御する事ができる。   The SAS Service 721 is a class that controls the operation mode of the user application 501. The SAS service 721 changes the operation mode of the predetermined user application 501 in accordance with the dynamic change of the behavior of the adaptive behavior 702. Note that the SAS Service 721 can control the operation mode of the user application 501 by controlling the SAS Manager 511.

なお、JSDKアプリ147とJSDKプラットフォーム148はリフレクション型のアーキテクチャで実装されている。リフレクションとは、プログラムが自己の静的な構造や動的な振る舞いに関する情報を公開したり、自己の静的な構造や動的な振る舞いを変更したりする能力を意味する。リフレクション型のアーキテクチャは、ベースレベルとメタレベルからなる。図7のJSDKシステムでは、JSDKアプリ147がベースレベルに相当し、JSDKプラットフォーム148がメタレベルに相当する。   The JSDK application 147 and the JSDK platform 148 are implemented with a reflection type architecture. Reflection means the ability of a program to publish information about its own static structure and dynamic behavior, and to change its own static structure and dynamic behavior. The reflection type architecture consists of a base level and a meta level. In the JSDK system of FIG. 7, the JSDK application 147 corresponds to the base level, and the JSDK platform 148 corresponds to the meta level.

図10は、Function Service601の動作について説明するための図である。図10は、図9のクラス図に対応するコラボレーション図に相当する。   FIG. 10 is a diagram for explaining the operation of the Function Service 601. FIG. 10 corresponds to a collaboration diagram corresponding to the class diagram of FIG.

ユーザアプリ501がFunction Service601にサービスを要求する際には先ず、ユーザアプリ501からFunction API611に、当該サービスを要求する旨のサービス要求が送信(S11)される。次に、Function API611からAdaptive Function701に、当該サービスを要求する旨の当該サービス要求が送信(S12)される。次に、Adaptive Function701からAdaptive Behavior702に、当該サービスを要求する旨の当該サービス要求が状態遷移のイベント形式で送信(S13)される。次に、Adaptive Behavior702からプラットフォーム132に、当該サービスに関する情報処理,通信処理,画像形成処理等の種々の処理を要求する旨の処理要求が状態遷移のアクション形式で送信(S14)される。   When the user application 501 requests a service from the Function Service 601, first, a service request for requesting the service is transmitted from the user application 501 to the Function API 611 (S 11). Next, the service request for requesting the service is transmitted from the Function API 611 to the Adaptive Function 701 (S12). Next, the service request for requesting the service is transmitted from the Adaptive Function 701 to the Adaptive Behavior 702 in the event format of state transition (S13). Next, a processing request for requesting various processes such as information processing, communication processing, image forming processing, and the like related to the service is transmitted from the Adaptive Behavior 702 to the platform 132 (S14).

続いて次に、プラットフォーム132からAdaptive Behavior702に、当該処理要求に関する処理結果が状態遷移のイベント形式で送信(S21)される。次に、Adaptive Behavior702からAdaptive Function701に、上記のサービス要求に関するサービス結果が状態遷移のアクション形式で送信(S22)される。次に、Adaptive Function701からFunction API611に、上記のサービス要求に関する上記のサービス結果が送信(S23)される。次に、Function API611からユーザアプリ501に、上記のサービス要求に関する上記のサービス結果が送信(S24)される。   Subsequently, the processing result related to the processing request is transmitted from the platform 132 to the Adaptive Behavior 702 in a state transition event format (S21). Next, the service result related to the service request is transmitted from the Adaptive Behavior 702 to the Adaptive Function 701 in the action form of state transition (S22). Next, the service result related to the service request is transmitted from the Adaptive Function 701 to the Function API 611 (S23). Next, the service result related to the service request is transmitted from the function API 611 to the user application 501 (S24).

さて、プラットフォーム132が情報処理,通信処理,画像形成処理等の上記の処理を実行する際に上記の処理を実行する上での不都合や不具合が存在する場合には、プラットフォーム132からJSDK Environment521に、不都合や不具合が存在する旨の通知が送信(S31)される。次に、JSDK Environment521からAdaptive Behavior702に、自己の振る舞いを動的に変更する旨の命令が送信(S32)される。次に、Adaptive Behavior702が、自己の振る舞いを動的に変更(S33)して更に、Adaptive Function701の種々の関数の動作を動的に変更(S34)する。次に、SAS Service721が、SAS Manager511を通じて所定のユーザアプリ501の動作態様を変更(S35,S36)する。   When the platform 132 performs the above-described processing such as information processing, communication processing, and image formation processing, if there are inconveniences or problems in executing the above-described processing, the platform 132 changes the JSDK Environment 521 to A notification that there is an inconvenience or problem is transmitted (S31). Next, a command to dynamically change its own behavior is sent from JSDK Environment 521 to Adaptive Behavior 702 (S32). Next, the Adaptive Behavior 702 dynamically changes its own behavior (S33), and further dynamically changes the operation of various functions of the Adaptive Function 701 (S34). Next, the SAS Service 721 changes the operation mode of the predetermined user application 501 through the SAS Manager 511 (S35, S36).

図11は、Function Service601の動作の具体例について説明するための図である。図11のコラボレーション図は、図10のコラボレーション図の具体例に該当する。   FIG. 11 is a diagram for describing a specific example of the operation of the Function Service 601. The collaboration diagram of FIG. 11 corresponds to a specific example of the collaboration diagram of FIG.

先ず、第3のユーザアプリ501からFax Service714に、ファックス送信処理の実行制御に係るサービス要求が送信(S41)される。次に、Fax Service714からプラットフォーム132に、ファックス送信処理に係る処理要求が送信(S42)される。続いて次に、第1のユーザアプリ501からPrint Service712に、プリント処理の実行制御に係るサービス要求が送信(S43)される。次に、Print Service712からプラットフォーム132に、プリント処理に係る処理要求が送信(S44)される。   First, a service request related to execution control of fax transmission processing is transmitted from the third user application 501 to the Fax Service 714 (S41). Next, a processing request for fax transmission processing is transmitted from the Fax Service 714 to the platform 132 (S42). Subsequently, a service request related to print process execution control is transmitted from the first user application 501 to the print service 712 (S43). Next, a processing request for print processing is transmitted from the Print Service 712 to the platform 132 (S44).

次に、プラットフォーム132からJSDK Environment521に、ファックス送信処理とプリント処理を同時に実行するためのメモリが不足している旨が通知(S51)される。次に、JSDK Environment521は、ファックス送信処理の実行中はプリント処理の処理要求を発行しないようPrint Service712の振る舞いを動的に変更(S52)する。   Next, the platform 132 notifies the JSDK Environment 521 that there is insufficient memory for simultaneously executing the fax transmission process and the print process (S51). Next, the JSDK Environment 521 dynamically changes the behavior of the Print Service 712 so that a print processing request is not issued during execution of the fax transmission process (S52).

次に、プラットフォーム132からJSDK Environment521に、プリント処理を停止してもファックス送信処理を実行するためのメモリがいまだ不足している旨が通知(S61)される。次に、JSDK Environment521は、ファックス送信処理の実行中はファックス送信処理の要求元のユーザアプリ501を除く全てのユーザアプリ501を停止するようSAS Service721の振る舞いを動的に変更(S62)する。次に、SAS Service721は、ファックス送信処理の実行中はファックス送信処理の要求元のユーザアプリ501を除く全てのユーザアプリ501を停止(S63,S64)する。   Next, the platform 132 notifies the JSDK Environment 521 that the memory for executing the fax transmission process is still insufficient even if the print process is stopped (S61). Next, the JSDK Environment 521 dynamically changes the behavior of the SAS Service 721 so as to stop all the user applications 501 except the user application 501 requesting the fax transmission process during the fax transmission process (S62). Next, the SAS Service 721 stops all user applications 501 except the user application 501 that is the request source of the fax transmission process during the execution of the fax transmission process (S63, S64).

図12は、Function Service601の振る舞い変更処理について概念的に説明するための図である。   FIG. 12 is a diagram for conceptually explaining the behavior change process of the Function Service 601.

Function Service601にて、Adaptive Behavior702には、State Machine Pool731、Modify Agent732等のクラスが存在する。   In Function Service 601, Adaptive Behavior 702 includes classes such as State Machine Pool 731 and Modify Agent 732.

State Machine Pool731は、Print Service712やFax Service714の状態遷移モデルの管理を執り行う。Modify Agent732は、Print Service712やFax Service714の状態遷移モデルの修正を執り行う。状態遷移モデルの管理・修正は、Copy Service711やScan Service713も実施対象となる。   The State Machine Pool 731 manages the state transition model of the Print Service 712 and the Fax Service 714. Modify Agent 732 corrects the state transition model of Print Service 712 and Fax Service 714. Copy service 711 and scan service 713 are also targets for management and correction of the state transition model.

Print Service712の状態遷移モデルについて説明しておく。Idle状態741は、プリント処理の待機中の状態である。Print状態742は、プリント処理を実行中の状態である。Idle状態741からPrint状態742は、印刷開始イベント743により遷移する。Print状態742からIdle状態741は、印刷終了イベント744により遷移する。   A state transition model of the Print Service 712 will be described. The idle state 741 is a waiting state for print processing. The Print state 742 is a state in which print processing is being executed. The transition from the Idle state 741 to the Print state 742 is caused by a print start event 743. A transition from the Print state 742 to the Idle state 741 is made by a print end event 744.

Fax Service714の状態遷移モデルについて説明しておく。Idle状態751は、ファックス送信処理の待機中の状態である。FaxSend状態752は、ファックス送信処理を実行中の状態である。Idle状態751からFaxSend状態752には、送信開始イベント753により遷移する。FaxSend状態752からIdle状態751には、送信終了イベント754により遷移する。   A state transition model of the Fax Service 714 will be described. The idle state 751 is a state waiting for fax transmission processing. The FaxSend state 752 is a state in which fax transmission processing is being executed. Transition from the Idle state 751 to the FaxSend state 752 is caused by a transmission start event 753. Transition from the FaxSend state 752 to the Idle state 751 is caused by a transmission end event 754.

Modify Agent732は、State Machine Pool731が管理する状態遷移モデルに状態遷移の実行条件を付加する事で、State Machine Pool731が管理する状態遷移モデルを修正する事ができる。これによって、Print Service712やFax Service714の振る舞いが動的に変更される事になる。   The Modify Agent 732 can modify the state transition model managed by the State Machine Pool 731 by adding an execution condition of the state transition to the state transition model managed by the State Machine Pool 731. As a result, the behavior of the Print Service 712 or the Fax Service 714 is dynamically changed.

図12にて、図12Aは振る舞い変更前の状態遷移モデルを表し、図12Bは振る舞い変更後の状態遷移モデルを表す。Print Service712に関して、図12AではIdle状態741からPrint状態742に遷移するのに制限条件は存在しないが、図12BではIdle状態741からPrint状態742に遷移するのに制限条件が存在する。当該制限条件(ガード条件)は、Fax Service714がIdle状態751の際に限りPrint Service712の状態遷移を許容する事を意味する。当該制限条件(ガード条件)による振る舞い変更処理が、図11のS51・S52による振る舞い変更処理に匹敵する。   In FIG. 12, FIG. 12A represents the state transition model before the behavior change, and FIG. 12B represents the state transition model after the behavior change. With regard to the Print Service 712, there is no restriction condition for transition from the Idle state 741 to the Print state 742 in FIG. 12A, but there is a restriction condition for transition from the Idle state 741 to the Print state 742 in FIG. The restriction condition (guard condition) means that the state transition of the Print Service 712 is allowed only when the Fax Service 714 is in the Idle state 751. The behavior changing process based on the restriction condition (guard condition) is comparable to the behavior changing process according to S51 and S52 of FIG.

Function Service601は、アスペクト指向プログラムに相当する。アスペクト指向とは、システム横断的な関心事の分離メカニズムを意味する。アスペクト指向では、アスペクト指向プログラムにアスペクトを織り込む事で、アスペクト指向プログラムの状態遷移モデルに状態遷移の実行条件を付加する事ができる。これによって、Modify Agent732は、State Machine Pool731が管理する状態遷移モデルに状態遷移の実行条件を付加する。なお、Function Service601は、振る舞いと部品が分離されて設計されており、Modify Agent732からState Machine Pool731に、状態遷移モデルと部品ライブラリが登録される。これによって、アスペクト指向によるアスペクトの織り込みが実現されている。   The Function Service 601 corresponds to an aspect-oriented program. Aspect-oriented means a mechanism of separation of concerns across systems. In aspect-oriented, the state transition execution condition can be added to the state transition model of the aspect-oriented program by incorporating the aspect into the aspect-oriented program. As a result, the Modify Agent 732 adds an execution condition for the state transition to the state transition model managed by the State Machine Pool 731. The Function Service 601 is designed with behaviors and components separated, and a state transition model and a component library are registered in the State Machine Pool 731 from the Modify Agent 732. As a result, aspect-weaving of aspect is realized.

XMI言語によるXML文書(図9,図10,図11)について説明しておく。図10に示す通り、JSDK Environment521とFunction Service601では、XMI言語を記述言語とするXML文書であるAspectSM.xmlファイル(以下、単に「AspectSM」という。)の記述内容に従って、それぞれS32の処理とS33の処理を実行する。図11で言えば、AspectSMにはメモリが不足している際にはFunction Service601の振る舞いを動的に変更する旨が記述されている。なお、XMLは「eXtensible Markup Language」の略語に相当する。また、XMIは「XML Metadata Interchange」の略語に相当する。   An XML document (FIGS. 9, 10, and 11) in the XMI language will be described. As shown in FIG. 10, in JSDK Environment 521 and Function Service 601, AspectSM. In accordance with the description content of the xml file (hereinafter simply referred to as “AspectSM”), the processes of S32 and S33 are executed. Referring to FIG. 11, the aspectSM describes that the behavior of the function service 601 is dynamically changed when the memory is insufficient. Note that XML corresponds to an abbreviation of “extensible Markup Language”. XMI corresponds to an abbreviation of “XML Metadata Interchange”.

以上の説明のように、Function Service601は、自己の振る舞いを動的に変更する事ができる。これにより、JDSKアプリ147の多様な変化にJSDKプラットフォーム148が適切に対応する事ができるのである。更に、Function Service601は、自己の振る舞いの動的な変更に応じてユーザアプリ501の動作態様を変更する事ができる。これにより、JDSKアプリ147の多様な変化にJSDKプラットフォーム148が、JSDKプラットフォーム148の制御と更にJDSKアプリ147の制御を基に適切に対応する事ができるのである。   As described above, the Function Service 601 can dynamically change its own behavior. As a result, the JSDK platform 148 can appropriately cope with various changes in the JDSK application 147. Furthermore, the Function Service 601 can change the operation mode of the user application 501 in accordance with the dynamic change of its own behavior. Accordingly, the JSDK platform 148 can appropriately respond to various changes in the JDSK application 147 based on the control of the JSDK platform 148 and further the control of the JDSK application 147.

図12において概念的に説明した内容を更に具体的に説明する。図12に示されるモジュール構成は、図13に示されるクラス図に基づいている。図13は、Function Serviceの振る舞いの動的な変更を実現するクラス群を説明するためのクラス図である。   The content conceptually described in FIG. 12 will be described more specifically. The module configuration shown in FIG. 12 is based on the class diagram shown in FIG. FIG. 13 is a class diagram for explaining a class group that realizes a dynamic change in the behavior of the Function Service.

図13において、StateMachinePoolクラス1000は、State Machine Pool731を表現するクラスである。すなわち、State Machine Pool731は、StateMachinePoolクラス1000のインスタンスである。   In FIG. 13, a StateMachinePool class 1000 is a class that represents a State Machine Pool 731. That is, the State Machine Pool 731 is an instance of the State Machine Pool class 1000.

StateMachineクラス1001は、Adaptive Behavior702における各サービス(Copy Service711、Print Service712、Scan Service713、及びFax Service714等)を表現するクラスである。すなわち、Copy Service711、Print Service712、Scan Service713、及びFax Service714等は、それぞれSateMachineクラス1001のインスタンス(StateMachineオブジェクト)として生成される。したがって、以後、これらのサービスを総称する場合、「ステートマシン」という。   The StateMachine class 1001 is a class that expresses each service (Copy Service 711, Print Service 712, Scan Service 713, Fax Service 714, etc.) in Adaptive Behavior 702. That is, the copy service 711, the print service 712, the scan service 713, the fax service 714, and the like are each generated as an instance (StateMachine object) of the StateMachine class 1001. Therefore, hereinafter, these services are collectively referred to as “state machine”.

StateVertexクラス1002は、抽象クラスであり、各ステートマシンの状態遷移モデルにおいて状態を表現するクラスのルートクラスに相当する。StateVertexクラス1002には、connectメソッド1002aや、reconnectメソッド1002b等のメソッドが定義されている。connectメソッド1002aは、遷移先の状態及びその状態遷移との接続を実行するメソッドである。状態遷移についてはTransitクラス1003によって表現される。したがって、より具体的には、connectメソッド1002aは、当該メソッドが呼び出されたオブジェクトと、当該オブジェクトの遷移先のStateVertexオブジェクト(厳密にはそのサブクラスのオブジェクト。以下、総称する場合「状態オブジェクト」という。)及びその状態遷移に対応するTransitオブジェクト(以下、「遷移オブジェクト」という。)との接続を実行するクラスである。ここでいう接続は、例えば、状態オブジェクト内に、遷移先の状態オブジェクトや、その遷移オブジェクトの識別情報(ID、参照、又はポインタ等)を保持することで実現される。reconnectメソッド1002bは、遷移先の変更を実行するメソッドである。なお、Trasitクラス1003には、インタフェースとしてEventインタフェース1003a、Guradインタフェース1003b、及びActionインタフェース1003c等が定義されている。Eventインタフェース1003aは、状態遷移の遷移イベントを実装するためのインタフェースである。Guardインタフェース1003bは、ガード条件を実装するためのインタフェースである。Actionインタフェース1003cは、状態遷移時に実行するアクションを実装するためのインタフェースである。   The StateVertex class 1002 is an abstract class and corresponds to the root class of a class that expresses a state in the state transition model of each state machine. In the StateVertex class 1002, methods such as a connect method 1002a and a connect method 1002b are defined. The connect method 1002a is a method for executing a transition destination state and connection with the state transition. The state transition is expressed by a Transit class 1003. Therefore, more specifically, the connect method 1002a includes an object for which the method is called and a StateVertex object to which the object is transitioned (strictly, an object of its subclass. Hereinafter, it is collectively referred to as a “state object”. ) And a Transit object (hereinafter referred to as “transition object”) corresponding to the state transition. The connection here is realized, for example, by holding a transition destination state object and identification information (ID, reference, pointer, etc.) of the transition object in the state object. The reconnect method 1002b is a method for executing transition destination change. In the Trait class 1003, an event interface 1003a, a Gurad interface 1003b, an action interface 1003c, and the like are defined as interfaces. The Event interface 1003a is an interface for implementing a transition event of state transition. The Guard interface 1003b is an interface for implementing a guard condition. The Action interface 1003c is an interface for implementing an action executed at the time of state transition.

StateVertexクラス1002のサブクラスとしては、Stateクラス1004及びPseudoStateクラス1005が定義されている。Stateクラス1004は、例えば、ステートマシンの状態を表現するクラスである。Stateクラス1004には、インタフェースとしてIStateインタフェース1004a及びActivityインタフェース1004b等が定義されている。IStateインタフェース1004aは、状態の入場時の処理(入場処理)及び退場時の処理(退場処理)を実装するためのインタフェースである。Activityインタフェース1004bは、状態にある間実行する処理を実装するためのインタフェースである。これらのインタフェースは、クラスとして実装される。したがって、例えば、Activityインタフェース1004bの処理は、Activityクラスに実装される。   As subclasses of the StateVertex class 1002, a State class 1004 and a PseudoState class 1005 are defined. The State class 1004 is a class that expresses the state of a state machine, for example. In the State class 1004, an IState interface 1004a and an Activity interface 1004b are defined as interfaces. The IState interface 1004a is an interface for implementing state entry processing (entrance processing) and exit processing (exit processing). The Activity interface 1004b is an interface for implementing processing to be executed while in the state. These interfaces are implemented as classes. Therefore, for example, the processing of the Activity interface 1004b is implemented in the Activity class.

PseudoSateクラス1005は、初期状態や終期状態等、その名の通り擬似的な状態を表現するクラスであり、そのサブクラスとしては初期状態を表現するInitialStateクラス1006及び終期状態を表現するFinalStateクラス1007等がある。但し、図12の状態遷移モデルでは、初期状態及び終期状態は便宜上省略されている。   The PseudoState class 1005 is a class that represents a pseudo state such as an initial state and an end state, and its subclass includes an InitialState class 1006 that represents an initial state, a FinalState class 1007 that represents an end state, and the like. is there. However, in the state transition model of FIG. 12, the initial state and the final state are omitted for convenience.

ModifyAgentクラス1009は、Modify Agent732を表現するクラスである。すなわち、Modify Agent732は、ModifyAgentクラス1009のインスタンスである。PluginAgetntクラス1008については後述する。   The Modify Agent class 1009 is a class that represents the Modify Agent 732. In other words, the Modify Agent 732 is an instance of the Modify Agent class 1009. The PluginAgetnt class 1008 will be described later.

上記クラス間の関係について説明する。StateMachinePoolクラス1000は、StateMachineクラス1001を集約する。これは、State Machine Pool731が、一つ以上のステートマシンのそれぞれの状態遷移モデルを管理することを表現したものである。   The relationship between the classes will be described. The StateMachinePool class 1000 aggregates the StateMachine class 1001. This expresses that the State Machine Pool 731 manages each state transition model of one or more state machines.

StateMachineクラス1001は、StateVertexクラス1002を集約する。これは、一つのステートマシンは、一つ以上の状態を有することを表現したものである。StateVertexクラス1002は、Transitクラスを集約する。これは、状態と状態との間は遷移によって接続されることを表現したものである。   The StateMachine class 1001 aggregates the StateVertex class 1002. This expresses that one state machine has one or more states. The StateVertex class 1002 aggregates the Transit class. This expresses that a state is connected by a transition.

以上のような、モデルに基づいて、例えば、Print Service712は、以下のようなオブジェクトによって構成される。   Based on the model as described above, for example, the Print Service 712 is configured by the following objects.

図14は、Print Serviceのオブジェクト構成を表す図である。Print Service712は、図12の状態遷移モデルに基づいて、Idle状態オブジェクト741S、Print状態オブジェクト742S、印刷開始オブジェクト743T、プ及び印刷終了オブジェクト744T等より構成される。Idle状態オブジェクト741S及びPrint状態オブジェクト742Sは、Stateクラス1004のインスタンスである。印刷開始オブジェクト743T及び印刷終了オブジェクト744Tは、Transitクラス1003のインスタンスである。   FIG. 14 is a diagram illustrating an object configuration of the Print Service. The Print Service 712 includes an Idle state object 741S, a Print state object 742S, a print start object 743T, a print and print end object 744T, and the like based on the state transition model of FIG. The Idle state object 741S and the Print state object 742S are instances of the State class 1004. The print start object 743T and the print end object 744T are instances of the Transit class 1003.

図14においてオブジェクト同士を連結する線分は、オブジェクト同士の参照関係を表す。遷移元の状態オブジェクトは遷移先の状態オブジェクトを参照している。なお、図中では状態オブジェクト間に遷移オブジェクトが接続されている。例えば、Idle状態オブジェクト741SとPrint状態オブジェクト742Sとの間には印刷開始オブジェクト743Tが接続されている。しかし、このことはIdle状態703が、Print状態オブジェクト742Sを参照していないことを示すものではない。Idle状態オブジェクト741Sは、Print状態オブジェクト742Sを参照すると共に、その状態遷移に対応する遷移オブジェクトとして印刷開始オブジェクト743Tをも参照することを表現したものである。   In FIG. 14, a line segment connecting the objects represents a reference relationship between the objects. The transition state object refers to the transition state object. In the figure, transition objects are connected between state objects. For example, a print start object 743T is connected between the Idle state object 741S and the Print state object 742S. However, this does not indicate that the Idle state 703 does not refer to the Print state object 742S. The Idle state object 741S represents that the print state object 742T is referred to as a transition object corresponding to the state transition in addition to referring to the Print state object 742S.

オブジェクトの状態は、サービスの授受を行う「アクティブ状態」とサービスの授受を行わない「非アクティブ状態」に分類される。Function Service601におけるステートマシンの振る舞い変更を当該ステートマシンの動作中に実行するには、当該ステートマシンの更新部分のオブジェクトがアクティブ状態ではないとき(非アクティブ状態のとき)に実行すればよい。当該ステートマシンの動作中のオブジェクト同士のサービスの授受が更新処理により阻害されずに済むからである。よって、Function Service601の更新処理をFunction Service601の更新部分のオブジェクトがアクティブ状態ではないときに実行するのである。なお、状態遷移図によるモデリングでは、一のオブジェクトがアクティブ状態のときは他のオブジェクトは非アクティブ状態に限定される。すなわち、各オブジェクトは互いに排他的に処理を実行する(動作する)。   The state of the object is classified into an “active state” in which service is transferred and an “inactive state” in which service is not transferred. In order to change the behavior of the state machine in the Function Service 601 during the operation of the state machine, it may be executed when the object of the update part of the state machine is not in an active state (in an inactive state). This is because the exchange of services between objects during the operation of the state machine is not hindered by the update process. Therefore, the update process of the Function Service 601 is executed when the object of the update part of the Function Service 601 is not in the active state. In the modeling based on the state transition diagram, when one object is in the active state, the other objects are limited to the inactive state. That is, each object executes (operates) processing exclusively from each other.

図14に示されるPrint Service712のオブジェクト構成が構築される過程について説明する。   A process in which the object configuration of the Print Service 712 shown in FIG. 14 is constructed will be described.

図15は、Print Serviceのオブジェクト構成の構築処理を説明するためのシーケンス図である。図15の処理は、Print Service712がState Machine Pool731によってインスタンス化される際に実行される。   FIG. 15 is a sequence diagram for explaining an object configuration construction process of the Print Service. The process of FIG. 15 is executed when the Print Service 712 is instantiated by the State Machine Pool 731.

Print Service712は、インスタンス化されると、Print Service712の状態遷移情報に基づいて、Print Service712の状態遷移モデルに対応したオブジェクト構成を構築する(S401)。状態遷移情報は、例えば、融合機101の所定の記憶装置内に、以下の形式で保存されている。   When the Print Service 712 is instantiated, an object configuration corresponding to the state transition model of the Print Service 712 is constructed based on the state transition information of the Print Service 712 (S401). For example, the state transition information is stored in a predetermined storage device of the multi-function peripheral 101 in the following format.

図16及び図17は、Print Serviceの状態遷移情報の定義例を示す図である。図16及び図17によって一つの状態遷移情報900の記述例が示されている。状態遷移情報900は、XMI(XML Metadata Interchange)に従った記述例が示されている。XMIは、モデルを各種のソフトウェアの間でXML文書によって交換することを目的とした標準規格である。但し、本実施の形態を実施するにあたり、状態遷移情報は、必ずしもXMIに従って記述される必要はない。なお、図中における行番号は、説明の便宜上付加したものである。   FIGS. 16 and 17 are diagrams illustrating examples of definition of the state transition information of the Print Service. A description example of one state transition information 900 is shown in FIGS. The state transition information 900 shows a description example according to XMI (XML Metadata Interchange). XMI is a standard for the purpose of exchanging models between various types of software through XML documents. However, in implementing this embodiment, the state transition information does not necessarily have to be described according to XMI. Note that the line numbers in the figure are added for convenience of explanation.

状態遷移情報900の1行目における<StateMachine>タグのタグ名、及びそのname属性の値(「Print」)によって、状態遷移情報900は、Print Service712に対応するものであることが定義されている。また、当該<StateMachine>タグにおけるxmi.id属性の値(「003」)は、Print Service712を識別するためのIDである。   The tag name of the <StateMachine> tag in the first line of the state transition information 900 and the value of its name attribute (“Print”) define that the state transition information 900 corresponds to the Print Service 712. . Also, xmi. In the <StateMachine> tag. The value of the id attribute (“003”) is an ID for identifying the Print Service 712.

3行目の<CompositeState>タグは、Print Service712における状態の定義の開始の宣言に相当する。当該宣言は、<CompositeState>タグのxmi.idの値(「004」)によって識別される。   The <CompositeState> tag on the third line corresponds to the declaration of the start of the state definition in the Print Service 712. The declaration includes xmi. Of the <CompositeState> tag. It is identified by the value of id (“004”).

5行目から15行目におけるCompositeState要素910は、Idle状態741に対する定義である。CompositeState要素910のname属性の値には「Idle」が設定され、xmi.id要素の値には、「005」が設定されている。   The CompositeState element 910 in the 5th to 15th lines is a definition for the idle state 741. The value of the name attribute of the CompositeState element 910 is set to “Idle”, and xmi. The value of the id element is set to “005”.

16行目から26行目(図17)におけるCompositeState要素920は、Print状態742に対する定義である。CompositeState要素920のname属性の値には「Print」が設定され、xmi.id要素の値には、「008」が設定されている。   The CompositeState element 920 in the 16th to 26th lines (FIG. 17) is a definition for the Print state 742. The value of the name attribute of the CompositeState element 920 is set to “Print”, and xmi. “008” is set as the value of the id element.

また、34行目から64行目には、Print Service712における各状態遷移が定義されている。すなわち、34行目から50行目におけるTransition要素930は、Idle状態741からPrint状態742への状態遷移に対する定義である。Transition要素930が当該状態遷移に対する定義であることは、Transition要素930の子要素として定義されている、Transition.source要素931及びTransition.target要素932より特定される。Transition.source要素931は遷移元の状態が設定される要素である。Transition.source要素931の子要素のxmi.idref属性の値は「005」である。したがって、遷移元は、xmi.id属性の値が「005」の状態、すなわち、Idle状態741であることが分かる。また、Transition.target要素932は遷移先の状態が設定される要素である。Transition.target要素932の子要素のxmi.idref属性の値は「008」である。したがって、遷移先は、xmi.idの値が「008」の状態、すなわち、Print状態742であることが分かる。なお、Transition要素930のname属性の値は「印刷開始」であり、xmi.id属性の値は「006」である。   Further, in the 34th to 64th lines, each state transition in the Print Service 712 is defined. That is, the Transition element 930 from the 34th line to the 50th line is a definition for the state transition from the Idle state 741 to the Print state 742. That the Transition element 930 is a definition for the state transition is that the Transition.930 is defined as a child element of the Transition element 930. source element 931 and Transition. It is specified from the target element 932. Transition. A source element 931 is an element in which a transition source state is set. Transition. xmi. of the child element of the source element 931. The value of the idref attribute is “005”. Therefore, the transition source is xmi. It can be seen that the id attribute value is “005”, that is, the idle state 741. In addition, Transition. A target element 932 is an element in which a transition destination state is set. Transition. xmi. of the child element of the target element 932 The value of the idref attribute is “008”. Therefore, the transition destination is xmi. It can be seen that the id value is “008”, that is, the print state 742. Note that the value of the name attribute of the Transition element 930 is “print start”, and xmi. The value of the id attribute is “006”.

51行目から64行目におけるTransition要素940は、Print状態742からIdle状態741への状態遷移に対する定義である。Transition要素940が当該状態遷移に対する定義であることは、Transition.source要素941内のxmi.idref属性の値が「008」(Print状態742)であり、Transition.target要素942内のxmi.idref属性の値が「005」(Idle状態741)であることから特定される。なお、Transition要素940のname属性の値は「印刷終了」であり、xmi.id属性の値は「007」である。   The Transition element 940 in the 51st line to the 64th line is a definition for the state transition from the Print state 742 to the Idle state 741. The Transition element 940 is a definition for the state transition. xmi. in the source element 941. The value of the idref attribute is “008” (Print state 742), and Transition. xmi. in the target element 942. It is identified from the value of the idref attribute being “005” (Idle state 741). Note that the value of the name attribute of the Transition element 940 is “print end”, and xmi. The value of the id attribute is “007”.

5行目以降の説明に戻る。各状態に対応する、CompositeState要素910及びCompositeState要素920は、StateVertex.outgoing要素及びStateVertex.incoming要素の少なくともいずれか一方を子要素として有する。StateVertex.outgoing要素は、遷移元からの状態遷移に対する接続が定義される要素である。StateVertex.incoming要素は、遷移先への状態遷移に対する接続が定義される要素である。   Returning to the description after the fifth line. The CompositeState element 910 and the CompositeState element 920 corresponding to each state are a StateVertex. outgoing element and StateVertex. It has at least one of incoming elements as a child element. StateVertex. The outgoing element is an element in which a connection to a state transition from the transition source is defined. StateVertex. The incoming element is an element in which a connection for a state transition to a transition destination is defined.

例えば、Idle状態741に対応するCompositeState要素910おけるStateVertex.outgoing要素911においてその子要素のxmi.idref属性の値は「006」であり、StateVertex.incoming要素912において、その子要素のxmi.idref属性の値は「007」である。したがって、Print状態742からの遷移先への状態遷移は、Transition要素930が対応する状態遷移に相当し、遷移元の状態遷移は、Transition要素940が対応する状態遷移に相当することが分かる。   For example, StateVertex. In the CompositeState element 910 corresponding to the Idle state 741. In the outgoing element 911, the child element xmi. The value of the idref attribute is “006”, and StateVertex. In the incoming element 912, the child element xmi. The value of the idref attribute is “007”. Therefore, it can be seen that the state transition from the Print state 742 to the transition destination corresponds to the state transition corresponding to the Transition element 930, and the state transition of the transition source corresponds to the state transition corresponding to the Transition element 940.

また、Print状態742に対応するCompositeState要素920おけるStateVertex.outgoing要素921においてその子要素のxmi.idref属性の値は「007」であり、StateVertex.incoming要素922において、その子要素のxmi.idref属性の値は「006」である。したがって、Print状態742からの遷移先への状態遷移は、Transition要素940が対応する状態遷移に相当し、遷移元の状態遷移は、Transition要素930が対応する状態遷移に相当することが分かる。   In addition, StateVertex. In the CompositeState element 920 corresponding to the Print state 742 is displayed. In the outgoing element 921, the child element xmi. The value of the idref attribute is “007”, and the StateVertex. In the incoming element 922, the child element xmi. The value of the idref attribute is “006”. Therefore, it can be seen that the state transition from the Print state 742 to the transition destination corresponds to the state transition corresponding to the Transition element 940, and the state transition of the transition source corresponds to the state transition corresponding to the Transition element 930.

上記のような状態遷移情報900に基づいて、Print Service712は、まず、各状態オブジェクト及び遷移オブジェクト等をインスタンス化する。図中では、状態遷移情報900におけるCompositeState要素910、CompositeState要素920、Transition要素930、及びTransition要素940のそれぞれに基づいて、Idle状態オブジェクト741S、Print状態オブジェクト742S、印刷開始オブジェクト743T、及び印刷終了オブジェクト744Tが生成されている例が示されている(S402〜S405)。   Based on the state transition information 900 as described above, the Print Service 712 first instantiates each state object, transition object, and the like. In the figure, based on each of the CompositeState element 910, the CompositeState element 920, the Transition element 930, and the Transition element 940 in the state transition information 900, an Idle state object 741S, a Print state object 742S, a print start object 743T, and a print end object are shown. An example in which 744T is generated is shown (S402 to S405).

続いて、Print Service712は、各状態オブジェクトの参照関係が状態遷移情報900に定義された状態遷移の順になるよう、遷移元の状態オブジェクトに対して遷移先の状態オブジェクトを接続する。例えば、Print Service712は、Print状態オブジェクト742Sの識別情報と印刷開始オブジェクト743Tの識別情報とを引数として、Idle状態オブジェクト741Sのconnect()メソッドを呼び出す(S406)。また、Print Service712は、Idleオブジェクト741Sの識別情報と印刷終了オブジェクト744Tの識別情報とを引数として、Print状態オブジェクト742Sのconnect()メソッドを呼び出す(S407)。connect()メソッドを呼び出された各状態オブジェクトは、当該状態オブジェクト内において引数に指定された識別情報を保持する。   Subsequently, the Print Service 712 connects the state object of the transition destination to the state object of the transition source so that the reference relationship of each state object is in the order of the state transition defined in the state transition information 900. For example, the Print Service 712 calls the connect () method of the Idle state object 741S with the identification information of the Print state object 742S and the identification information of the print start object 743T as arguments (S406). The Print Service 712 calls the connect () method of the Print state object 742S using the identification information of the Idle object 741S and the identification information of the print end object 744T as arguments (S407). Each state object for which the connect () method is called holds identification information designated as an argument in the state object.

このように、connect()メソッドの引数に、状態オブジェクトと遷移オブジェクトとのそれぞれの識別情報が指定された場合、当該メソッドが呼び出された状態オブジェクトは、その状態オブジェクトの識別情報と遷移オブジェクトの識別情報とを関連付けて(ペアで)保持する。これによって、ある状態オブジェクトがアクティブのときに、あるイベントが発生したときの遷移先の状態オブジェクトが特定され得る。   As described above, when the identification information of the state object and the transition object is designated as the argument of the connect () method, the state object from which the method is called has the identification information of the state object and the identification of the transition object. Associate and keep information (in pairs). Thereby, when a certain state object is active, a state object of a transition destination when a certain event occurs can be specified.

以上の処理によって、Print Service712について、図14に示されるようなオブジェクト構成が構築される。   With the above processing, an object configuration as shown in FIG. 14 is constructed for the Print Service 712.

上記をふまえて、Print Service712の振る舞い変更処理を具体的に説明する。図18及び図19は、Print Serviceの振る舞い変更処理を説明するためのシーケンス図である。   Based on the above, the behavior change processing of the Print Service 712 will be specifically described. FIG. 18 and FIG. 19 are sequence diagrams for explaining the behavior change process of the Print Service.

プラットフォーム132からJSDK Environment521に、例えば、不都合や不具合の発生等を示すイベントが送信される(S421)。ここでは、メモリが不足していることを示すイベントが通知されたこととする。但し、ここで通知されるイベントは不具合や不都合に限定されず、例えば、機器の状態の変化も含まれ得る。機器の状態の変化としては、静的な情報(機種名、機種のスペック、周辺機器情報)の変化と動的な情報(使用可能メモリ、周辺機器の状態、ユーザ操作)の変化とがある。静的な情報の変化は確定した時にJSDK Environment521に通知され、動的な情報は変化が発生した時に随時通知される。 JSDK Environmnet521は、プラットフォーム132からのイベントに応じた振る舞い修正指示がAspectSMに記載されているか確認する。   For example, an event indicating the occurrence of inconvenience or malfunction is transmitted from the platform 132 to the JSDK Environment 521 (S421). Here, it is assumed that an event indicating that memory is insufficient is notified. However, the event notified here is not limited to a malfunction or inconvenience, and may include, for example, a change in the state of the device. Changes in the device state include changes in static information (model name, model specifications, peripheral device information) and changes in dynamic information (usable memory, peripheral device state, user operation). A change in static information is notified to the JSDK Environment 521 when it is confirmed, and dynamic information is notified at any time when a change occurs. The JSDK Environment 521 confirms whether the behavior correction instruction according to the event from the platform 132 is described in the AspectSM.

図20は、Print Serviceの振る舞いの変更内容が記述されたAspectSMの記述例を示す図である。AspectSM810には、Print Service712の状態遷移情報900(図16及び図17)に対する変更内容が記述されている。   FIG. 20 is a diagram illustrating a description example of AspectSM in which the contents of changes in the behavior of the Print Service are described. The aspect SM 810 describes changes to the state transition information 900 (FIGS. 16 and 17) of the Print Service 712.

AspectSM810において、1行目から6行目までの<Event>タグで囲まれたEvent要素811のname属性、type属性、value属性のそれぞれには、振る舞いを変更するトリガとなるイベント名、条件、閾値が記述される。また、Event要素811の子要素(modify.StateMachine要素)には、振る舞いの変更対象となるステートマシンが記述される。図20の例では、空きメモリが10MBを下回ったことを示すイベントを受信した場合にPrint(Print Service712)に対して振る舞いを変更することが記述されている。   In AspectSM 810, each of the name attribute, type attribute, and value attribute of the Event element 811 surrounded by the <Event> tag from the first line to the sixth line includes an event name, a condition, and a threshold value that trigger a behavior change Is described. In the child element (modify.StateMachine element) of the Event element 811, a state machine whose behavior is to be changed is described. In the example of FIG. 20, it is described that the behavior is changed with respect to Print (Print Service 712) when an event indicating that the free memory is less than 10 MB is received.

7行目から15行目までのaspect要素812のXMI.StateMachine属性には、変更するステートマシン名(Print)が記述される。また、pointcut.Transmission要素813のname属性には、Print Service712において変更対象となる状態遷移の名前が記述され、timeng属性にはAspectSM810による変更処理を実行するタイミングが記述される。図20の例では、Print Service712の状態遷移において、Idle状態741のときに振る舞い変更処理を実行することが記述されている。advice.Gaurd要素には、変更の内容が記述される。すなわち、<advice.Guard>タグのタグ名におけるadvice.以降によって、変更の対象がGuard(ガード条件)であることが記述されている。また、type属性によって、変更の種別が「insert」(挿入)であることが記述されている。すなわち、変更内容はガード条件を挿入することであることが記述されている。10行目から12行目までは、実際に状態遷移情報900に挿入される定義である。すなわち、AspectSM810では、「Idle状態741のときにPrint Service712の印刷開始イベント743に基づく状態遷移に対してガード条件(Fax Service714がIdle状態であること)を付加すること」が定義されている。   XMI. Of the aspect element 812 from the 7th line to the 15th line. In the StateMachine attribute, the state machine name (Print) to be changed is described. Also, pointcut. The name attribute of the Transmission element 813 describes the name of the state transition to be changed in the Print Service 712, and the timing attribute describes the timing for executing the change processing by the AspectSM 810. In the example of FIG. 20, it is described that the behavior change process is executed in the idle state 741 in the state transition of the print service 712. advice. The contents of the change are described in the Gaud element. That is, <advice. Guard. Tag> advice. From now on, it is described that the change target is Guard (guard condition). In addition, the type attribute describes that the type of change is “insert” (insert). That is, it is described that the change content is to insert a guard condition. The 10th to 12th lines are definitions that are actually inserted into the state transition information 900. In other words, the Aspect SM 810 defines that “a guard condition (the Fax Service 714 is in the Idle state) is added to the state transition based on the print start event 743 of the Print Service 712 in the Idle state 741”.

なお、各イベントに応じたAspectSMは、予め融合機101のHDD233又はメモリカード235等に保存されている。   Note that the AspectSM corresponding to each event is stored in advance in the HDD 233 or the memory card 235 of the multi-function peripheral 101.

したがって、ステップS421において通知されたイベントが、空きメモリが10MBを下回ったことを示すものであった場合、JSDK Environmnet521は、図20のAspectSM810に基づいて、Print Service712の振る舞いを変更する必要があることを判断し、Modify Agent732にPrint Service712の振る舞い変更情報を添付して振る舞い変更要求を発行する(S422)。ここで、「振る舞い変更情報」とは、AspectSM810より、振る舞いの変更に必要な情報のみが抽出されたものでもよいし、AspectSM810そのものでもよい。   Therefore, if the event notified in step S421 indicates that the free memory is less than 10 MB, the JSDK Environment 521 needs to change the behavior of the Print Service 712 based on the AspectSM 810 of FIG. The behavior change request is issued by attaching the behavior change information of the Print Service 712 to the Modify Agent 732 (S422). Here, the “behavior change information” may be information obtained by extracting only information necessary for behavior change from the Aspect SM 810 or the Aspect SM 810 itself.

Modify Agent732は、Print Service712に対する振る舞い変更要求を受け、State Machine Pool731に対して、Print Service712の状態遷移情報900の取得要求を発行する(S423)。State Machine Pool731は、状態遷移情報900の取得要求に対して、当該状態遷移情報が登録されていれば状態遷移情報900をModify Agent732に提供する(S424)。   The Modify Agent 732 receives the behavior change request for the Print Service 712, and issues an acquisition request for the state transition information 900 of the Print Service 712 to the State Machine Pool 731 (S423). In response to the acquisition request for the state transition information 900, the State Machine Pool 731 provides the state transition information 900 to the Modify Agent 732 if the state transition information is registered (S424).

State Machine Pool731から状態遷移情報900を取得できた場合、Modify Agent732は、Print Service712の状態遷移情報900に対する振る舞い変更処理の可否を判断する(S425a)。一方、状態遷移情報900を取得できなかった場合、Modify Agent732は、State Machine Pool731にPrint Service712は登録されていないことを実装してないことをJSDK Environmnet521に通知する(S425b)。   If the state transition information 900 can be acquired from the State Machine Pool 731, the Modify Agent 732 determines whether or not the behavior change process for the state transition information 900 of the Print Service 712 is possible (S 425 a). On the other hand, if the state transition information 900 cannot be acquired, the Modify Agent 732 notifies the JSDK Environment 521 that the Print Service 712 is not registered in the State Machine Pool 731 (S425b).

ステップS425aにおいて、振る舞い変更処理が可能であると判断した場合、Modify Agent732は、State Machine Pool731に対して、Print Service712がインスタンス化されているか(すなわち、図14に示されるオブジェクト構成がメモリ上に構築されているか)を問い合わせる(S426a)。一方、ステップS425aにおいて、振る舞い変更処理は不可能であると判断した場合、Modify Agent732は、JSDK Environmnet521に変更不可であることを通知する(S426b)。   If it is determined in step S425a that the behavior change process is possible, the Modify Agent 732 has instantiated the Print Service 712 with respect to the State Machine Pool 731 (that is, the object configuration shown in FIG. Is inquired) (S426a). On the other hand, if it is determined in step S425a that the behavior change process is impossible, the Modify Agent 732 notifies the JSDK Environment 521 that the change cannot be made (S426b).

ステップS426aの問い合わせに対して、State Machine Pool731は、Print Service712がインスタンス化されていればそのインスタンスを返却する(S427)。   In response to the inquiry in step S426a, the State Machine Pool 731 returns the instance if the Print Service 712 is instantiated (S427).

Print Service712のインスタンスが生成されていない場合、Modify Agent732は、状態遷移情報900に対し振る舞い変更情報に応じた修正を行い、修正された状態遷移情報900をState Machine Pool731に登録する(S428a)具体的には、状態遷移情報900の34行目と38行目の間に、AspectSM810の10行目から13行目が挿入される。したがって、以降にPrint Service712がインスタンス化される際は、修正された状態遷移情報900に基づいて、オブジェクト群が構築される。   When the instance of the Print Service 712 has not been generated, the Modify Agent 732 modifies the state transition information 900 according to the behavior change information, and registers the modified state transition information 900 in the State Machine Pool 731 (S428a) In the state transition information 900, the 10th to 13th lines of the AspectSM 810 are inserted between the 34th and 38th lines. Therefore, when the Print Service 712 is instantiated thereafter, an object group is constructed based on the modified state transition information 900.

一方、Print Service712のインスタンスが生成されている場合、Modify Agent732は、図19に示される処理を実行する(S428b)
図19において、Modify Agent732は、Print Service712のIdle状態オブジェクト741Sを検索する(S431、S432)。ここで、Modefy Agent732は、AspectSM810のpointcut.Transmission要素813のtiming属性に基づいて、Idle状態オブジェクト741Sを監視することにより、Print Service712がIdle状態741に遷移するまで待機する。
On the other hand, when an instance of the Print Service 712 has been generated, the Modify Agent 732 executes the processing shown in FIG. 19 (S428b).
19, Modify Agent 732 searches for Idle state object 741S of Print Service 712 (S431, S432). Here, Modefy Agent 732 is the pointcut. Based on the timing attribute of the Transmission element 813, the Idle state object 741S is monitored to wait until the Print Service 712 transitions to the Idle state 741.

Print Service712がIdle状態741に遷移すると、Modify Agent732は、Idle状態オブジェクト741Sより、印刷開始オブジェクト743Tを検索する(S433、S434)。続いて、Modify Agent732は、ガード条件を表現するガード条件オブジェクト746を生成し(S435)、AspectSM810に定義されているガード条件([is_in(FaxTxIdle)])を、ガード条件オブジェクト746に設定する(S436)。ここで、FaxTxIdleは、Fax Service714のIdle状態オブジェクトの識別情報である。   When the Print Service 712 transitions to the Idle state 741, the Modify Agent 732 searches the Idle state object 741S for the print start object 743T (S433, S434). Subsequently, the Modify Agent 732 generates a guard condition object 746 that represents the guard condition (S435), and sets the guard condition ([is_in (FaxTxIdle)]) defined in the AspectSM 810 in the guard condition object 746 (S436). ). Here, FaxTxIdle is identification information of the Idle state object of Fax Service 714.

続いて、Modify Agent732は、印刷開始オブジェクト743Tに対して、ガード条件オブジェクト746を設定する(S437)。ここで、印刷開始オブジェクト743Tは、Idle状態741からPrint状態742への状態遷移に対応するオブジェクトである。したがって、ステップS437の処理により、当該状態遷移にガード条件が付加されたことになる。以降、Print Service712において、Idle状態741からPrint状態742への遷移が発生する際、印刷開始オブジェクト743Tに設定されたガードオブジェクト746に基づいて、遷移の可否が判定される。   Subsequently, the Modify Agent 732 sets a guard condition object 746 for the print start object 743T (S437). Here, the print start object 743T is an object corresponding to the state transition from the Idle state 741 to the Print state 742. Therefore, the guard condition is added to the state transition by the process of step S437. Thereafter, when a transition from the Idle state 741 to the Print state 742 occurs in the Print Service 712, whether or not the transition is possible is determined based on the guard object 746 set in the print start object 743T.

上述したように、本実施の形態におけるFunction Service601は、状態オブジェクトの遷移によってサービスを実現する。また、サービスの実現過程において、アクティブな状態オブジェクトが限定されるように構成されている。言い換えれば、非アクティブな状態オブジェクトが存在することになる。このような構成を前提として、AspectSM810には、更新部分が非アクティブなタイミングで更新が行われるような更新指示が記述されている。そして、かかるAspectSM810に従って、更新部分が非アクティブなときに更新が実行される。したがって、本実施の形態におけるFunction Service601は、当該Function Service601の実行中にその振る舞いの変更を実行することができる。また、振る舞いの変更にあたり、オブジェクト群が再構築されるわけではないので、当該Function Service601の参照側との参照関係が破壊されることなく、動的にその振る舞いを変更することが可能となっている。よって、融合機101を再起動することなくFunction Service601の振る舞いは変更され得る。   As described above, the Function Service 601 in the present embodiment implements a service by transition of state objects. Also, the active state object is limited in the service realization process. In other words, there will be an inactive state object. Assuming such a configuration, the AspectSM 810 describes an update instruction so that the update is performed at a timing when the update portion is inactive. Then, according to the aspect SM 810, the update is executed when the update part is inactive. Therefore, the Function Service 601 in the present embodiment can change the behavior during the execution of the Function Service 601. In addition, since the object group is not reconstructed when the behavior is changed, the behavior can be dynamically changed without destroying the reference relationship with the reference side of the Function Service 601. Yes. Therefore, the behavior of the Function Service 601 can be changed without restarting the compound machine 101.

なお、本実施の形態においては、ステートマシンが状態遷移モデルに基づいて設計された例を用いて説明したが、本発明が適用可能なプログラムは、状態ごとにオブジェクトが構築されるような構成であるものに限定されない。お互いに排他的に動作する複数のモジュール(オブジェクトも含む)の接続によって構成されているものでればよい。ここで排他的に処理を実行するとは、あるモジュールが動作中(アクティブ)のときは、他のモジュールは動作中でない(非アクティブである)ことが保証されることをいう。このようなソフトウェアであれば、動作中でないモジュールを変更することが可能であり、本実施の形態において説明した振る舞いの変更処理を適用させることができる。   In this embodiment, the state machine has been described using an example designed based on the state transition model. However, a program to which the present invention can be applied has a configuration in which an object is constructed for each state. It is not limited to a certain thing. What is necessary is just to be comprised by the connection of the several module (an object is also included) which mutually operate | moves exclusively. Here, exclusive processing means that when a certain module is operating (active), it is guaranteed that other modules are not operating (inactive). With such software, modules that are not in operation can be changed, and the behavior change processing described in this embodiment can be applied.

2)Modify Service
図21は、図7のJSDKシステムを構成するModify Service602について説明するためのクラス図である。Modify Service602は、JSDKアプリ147からのFunction Service601に対するサービスの提供要求に応じて、Function Service601のサービスを修正するクラスである。すなわち、第一節(Function Service)では、プラットフェーム132からのイベントに応じて、Function Service601が、自らの振る舞いを変更する処理について説明したが、Modify Service602は、JSDKアプリ147がFunction Service601を利用しようとしたときに、Function Service601の振る舞いを変更するのである。
2) Modify Service
FIG. 21 is a class diagram for explaining the Modify Service 602 constituting the JSDK system of FIG. The Modify Service 602 is a class that modifies the service of the Function Service 601 in response to a service provision request for the Function Service 601 from the JSDK application 147. That is, in the first section (Function Service), the function service 601 has changed the behavior of the function service 601 in response to an event from the platform 132. However, the modification service 602 uses the function service 601 by the JSDK application 147. In this case, the behavior of Function Service 601 is changed.

図7のJSDKシステムでは、第1節で取り上げたFunction Service601と第2節で取り上げるModify Service602は下位層と上位層の関係にある。図7のJSDKシステムには、Function Service601とユーザアプリ501との間のサービス授受を仲介するAPIとして、Function API611が存在し、Modify Service602とユーザアプリ501との間のサービス授受を仲介するAPIとして、Modify API612が存在する。Modify Service602とModify API612の実装態様は、図21の実装態様ではなく図22の実装態様でもよい。図21についての説明の内容は図22についても同様に成立する。なお、図21は、Modify API612は、複数のユーザアプリ501に対して有効であること(呼び出し元が限定されないこと)を示す。一方、図22は、Modify API612は、特定のユーザアプリ501に対して有効であること(呼び出し元が限定されること)を示す。   In the JSDK system of FIG. 7, the Function Service 601 taken up in the first section and the Modify Service 602 taken up in the second section have a relationship between a lower layer and an upper layer. In the JSDK system of FIG. 7, a Function API 611 exists as an API that mediates service exchange between the Function Service 601 and the user application 501. As an API that mediates service exchange between the Modify Service 602 and the user application 501, There is a Modify API 612. The implementation mode of the Modify Service 602 and the Modify API 612 may be the implementation mode of FIG. 22 instead of the implementation mode of FIG. The contents of the explanation for FIG. 21 are also valid for FIG. FIG. 21 shows that the Modify API 612 is effective for a plurality of user applications 501 (callers are not limited). On the other hand, FIG. 22 shows that the Modify API 612 is effective for a specific user application 501 (the caller is limited).

Modify Service602とModify API612の実装理由を説明する事にする。図7のJSDKシステムには、Function Service601の振る舞いを動的に変更する機能は実装しているが、Function API611の動作を動的に変更する機能は実装していない。APIの実装態様はユーザアプリ501の開発効率に与える影響が大きいところ、APIの動作を動的に変更するような実装は開発トラブルや市場トラブルを招き兼ねないからである。よって、Function Service601のサービスを修正するには、Function Service601のサービスを修正するModify Service602を、Function Service601に上乗せするのである。そしてさらに、Function API611にModify API612を上乗せする。   The reason for implementing the Modify Service 602 and the Modify API 612 will be described. In the JSDK system of FIG. 7, a function for dynamically changing the behavior of the Function Service 601 is implemented, but a function for dynamically changing the operation of the Function API 611 is not implemented. This is because the implementation of the API has a great influence on the development efficiency of the user application 501, but implementation that dynamically changes the operation of the API can cause development trouble and market trouble. Therefore, in order to modify the Function Service 601 service, the Modification Service 601 for modifying the Function Service 601 service is added to the Function Service 601. Further, a modification API 612 is added to the function API 611.

図21に示す通り、旧バージョンのユーザアプリ501は、Function API611を通じてFunction Service601にサービスを要求(S101)する。一方、新バージョンのユーザアプリ501は、Function Service601にサービスを要求する際には、Function API611を通じてFunction Service601にサービスを要求(S102)して、Modify Service602にサービスを要求する際には、Modify API612を通じてModify Service602にサービスを要求(S103)する。   As shown in FIG. 21, the old version of the user application 501 requests a service from the Function Service 601 through the Function API 611 (S101). On the other hand, when a new version of the user application 501 requests a service from the Function Service 601, the user application 501 requests a service from the Function Service 601 through the Function API 611 (S <b> 102), and requests a service from the Modify Service 602 through the Modify API 612. A service is requested to the Modify Service 602 (S103).

但し、Modify Service602を介してサービス要求がなされ、Function Service601の振る舞いが変更された後は、旧バージョンのユーザアプリ501であっても、Function API611を通じて、振る舞いが変更されたFunction Service601によるサービスの提供を受けることができる。   However, after a service request is made via the Modify Service 602 and the behavior of the Function Service 601 is changed, even the old version of the user application 501 provides the service provided by the Function Service 601 through the Function API 611. Can receive.

Modify Service612について更に具体的に説明する。図23は、Modify ServiceによるFunction Serviceの変更処理を説明するためのシーケンス図である。図23では、Fax Servece714を利用するためのFunction API611の呼び出しに応じて、Printer Service712の振る舞いが変更される例について説明する。   The Modify Service 612 will be described more specifically. FIG. 23 is a sequence diagram for explaining the function service change processing by the modify service. FIG. 23 illustrates an example in which the behavior of the Printer Service 712 is changed in response to a call to the Function API 611 for using the Fax Service 714.

JSDKアプリ147の一つであるFax送信アプリ501fが起動されている状態において、ユーザが、オペレーションパネル202を介してFax送信アプリ501fに対して送信開始の指示を行ったとする(S501)。Fax送信アプリ501fは、ユーザからの指示に応じ、Function API601又はModify API612の一部を構成するFax送信クラス611fを用いて送信開始を行う(S502)。具体的には、Fax送信アプリ501fは、Fax送信クラス611fのstart()メソッド(Faxtx.start())を呼び出す。   It is assumed that the user instructs the fax transmission application 501f to start transmission via the operation panel 202 in a state where the fax transmission application 501f, which is one of the JSDK applications 147, is activated (S501). The Fax transmission application 501f starts transmission using the Fax transmission class 611f that constitutes a part of the Function API 601 or the Modify API 612 in accordance with an instruction from the user (S502). Specifically, the fax transmission application 501f calls the start () method (Faxtx.start ()) of the fax transmission class 611f.

Fax送信クラス611fは、FaxTx.start()メソッドが呼ばれたこと(送信開始イベント753の発生)を要求元のアプリのプロダクトIDを添えてModify Service602に通知する(S503)。Modify Service602は、通知されたイベント(送信開始イベント753)が、Fax送信アプリ501fのインストールの際にFax送信アプリ501fに対応させて登録されたAspectSMに基づく振る舞い変更のトリガとなるイベントであるか当該AspectSMを参照することにより判断する。   The Fax transmission class 611f includes FaxTx. It notifies the Modify Service 602 that the start () method has been called (occurrence of the transmission start event 753) with the product ID of the requesting application (S503). The Modify Service 602 indicates whether the notified event (transmission start event 753) is an event that triggers behavior change based on the AspectSM registered in association with the Fax transmission application 501f when the Fax transmission application 501f is installed. Judgment is made by referring to AspectSM.

図24は、Fax送信アプリに対応させて登録されたAspectSMの記述例を示す図である。図24のAspectSM820は、2行目の記述内容が、図20のAspectSM810と異なる。   FIG. 24 is a diagram illustrating a description example of AspectSM registered corresponding to the Fax transmission application. In the aspect SM 820 of FIG. 24, the description content of the second line is different from the aspect SM 810 of FIG.

すなわち、AspectSM820のEvent要素821のname属性には、振る舞いを変更するトリガとなるイベント名として"Method"が記述されている。これは、メソッドが呼び出されたことがトリガとなることを意味する。また、type属性には、トリガとなる具体的なメソッド名(" jp.co.rrr.function.FaxTx:start(void)")が記述されている。ここで「FaxTx」とは、Fax送信クラスを示す。更に、value属性には、メソッドの呼び出し元を特定するプロダクトID("123456")が記述されている。ここで、"123456"は、Fax送信アプリ501fのプロダクトIDである。呼び出し元を特定しない場合、value属性の値は空となる。なお、value属性の値にプロダクトIDが指定されない場合(すなわち、呼び出し元が限定されない場合)と、プロダクトIDが指定される場合(すなわち、呼び出し元が限定される場合)との違いは、図21と図22との違いによって概念的に示されている。   That is, “Method” is described as an event name serving as a trigger for changing the behavior in the name attribute of the Event element 821 of the AspectSM820. This means that the method is triggered. In the type attribute, a specific method name (“jp.co.rrr.function.FaxTx: start (void)”) serving as a trigger is described. Here, “FaxTx” indicates a Fax transmission class. Further, the value attribute describes a product ID ("123456") that identifies the method caller. Here, “123456” is the product ID of the fax transmission application 501f. If the caller is not specified, the value of the value attribute is empty. The difference between the case where the product ID is not specified as the value of the value attribute (that is, the case where the calling source is not limited) and the case where the product ID is specified (that is, where the calling source is limited) is shown in FIG. This is conceptually shown by the difference between FIG.

上記より、AspectSM820には、Fax送信アプリ501fからのFaxtx.start()の呼び出しが、振る舞いを変更するトリガであることが記述されていることが分かる。   As described above, the Faxtx 820 from the Fax transmission application 501f is included in the AspectSM820. It can be seen that the start () call is described as a trigger that changes the behavior.

したがって、Modify Service602は、AspectSM820のEvent要素821に基づいて、Fax送信クラス611fより通知されたイベント(送信開始イベント753)は、振る舞い変更のトリガとなるイベントであると判断し、Modify Agent732に「振る舞い変更情報」を添えて、Printer Service712の振る舞いの変更を要求する(S504)。   Therefore, the modify service 602 determines that the event (transmission start event 753) notified from the fax transmission class 611f is an event that triggers the behavior change based on the event element 821 of the aspectSM 820, and the behavior to the modify agent 732 is “behavior”. A change in the behavior of the Printer Service 712 is requested together with the “change information” (S504).

続いて、ステップS505からステップS510bまでは、図18のステップS423からステップS428bまでと同様の処理が実行される。したがって、ステップS510bでは、図19において説明した処理と同様の処理が実行され、Printer Service712の振る舞いが変更される。すなわち、Printer Service712における、Idle状態741からPrint状態742への状態遷移に対してガード条件が付加される。   Subsequently, from step S505 to step S510b, processing similar to that from step S423 to step S428b in FIG. 18 is executed. Accordingly, in step S510b, processing similar to the processing described in FIG. 19 is executed, and the behavior of the printer service 712 is changed. That is, a guard condition is added to the state transition from the idle state 741 to the print state 742 in the printer service 712.

続いて、Modify Agent732は、Printer Service712の振る舞いの変更が完了したことをModify Service602に通知する(S511)。Modify Service602は、Fax送信クラス611fに対して変更の完了を通知する(S512)。   Subsequently, the Modify Agent 732 notifies the Modify Service 602 that the change of the behavior of the Printer Service 712 has been completed (S511). The Modify Service 602 notifies the fax transmission class 611f of the completion of the change (S512).

Fax送信クラス611fは、Modify Service602からの変更完了通知が届くまで待機している。Fax送信クラス611fは、変更完了通知に応じてState Machine Pool731に対して送信開始イベント753を発行する(S513)。State Machine Pool731は、送信開始イベント753の通知先を検索し、検索されたFax Service713に送信開始イベント753を通知する(S514)。   The fax transmission class 611f stands by until a change completion notification is received from the modify service 602. The fax transmission class 611f issues a transmission start event 753 to the state machine pool 731 in response to the change completion notification (S513). The State Machine Pool 731 searches for a notification destination of the transmission start event 753, and notifies the searched Fax Service 713 of the transmission start event 753 (S514).

ここでFax Service713によってFaxの送信処理が実行されるが、この間は、上記で説明した振る舞いの変更によってPrinter Service712に対して印刷開始イベント743が発行されても、印刷は開始されない。   Here, fax transmission processing is executed by the fax service 713. During this time, even if the print start event 743 is issued to the printer service 712 due to the behavior change described above, printing is not started.

Fax Service714によるFax送信が完了すると(S515)、State Machine Pool731は、Fax送信クラス611fに送信完了通知を行う(S516)。Fax送信クラス611fは、State Machine Pool731からの送信完了通知を受けてFax送信アプリ501fに送信完了通知を行う(S517)。Fax送信アプリ501fは、オペレーションパネル202に送信が完了した旨のメッセージ等を表示することにより、Fax送信の完了をユーザに通知する(S518)。   When Fax transmission by the Fax Service 714 is completed (S515), the State Machine Pool 731 notifies the Fax transmission class 611f of transmission completion (S516). The fax transmission class 611f receives the transmission completion notification from the state machine pool 731 and sends a transmission completion notification to the fax transmission application 501f (S517). The fax transmission application 501f notifies the user of the completion of the fax transmission by displaying a message indicating that the transmission is completed on the operation panel 202 (S518).

ところで、図23のステップS514において、「State Machine Pool731は、送信開始イベント753の通知先を検索する」と説明したが、State Machine Pool731に通知されたイベントが、どのように各ステートマシンに通知されるかについて説明する。   By the way, in step S514 of FIG. 23, “State Machine Pool 731 searches for a notification destination of transmission start event 753” has been described, but how the event notified to State Machine Pool 731 is notified to each state machine. I will explain.

図25は、State Machine Poolによるイベントの通知方式について説明するための図である。   FIG. 25 is a diagram for explaining an event notification method using State Machine Pool.

State Machine Pool731は、イベントを受け付けると、管理しているステートマシン群に対して、ラウンドロビン方式で順番にイベントを発行する。これにより、ステートマシン間では排他的な動作が実現される。また、個々のステートマシンも遷移処理を排他的に処理することにより、State Machine Pool731内のアクション処理を排他的に実行することができる。   When the State Machine Pool 731 receives the event, the State Machine Pool 731 issues the event in order in a round-robin manner to the managed state machine group. Thereby, an exclusive operation is realized between the state machines. Each state machine can also exclusively execute the action process in the State Machine Pool 731 by processing the transition process exclusively.

図25に示される手順に沿って説明する。   A description will be given along the procedure shown in FIG.

送信開始イベント753が、State Machine Pool731に対して発行される(S521)。State Machine Pool731は、管理している全てのステートマシン(但し、イベントに宛先が明示されている場合は、特定のステートマシン)に送信開始イベント753をラウンドロビン方式で発行する(S521〜S524)。例えば、Fax Service714が、待ち行列の最初に位置している場合、State Machine Pool731は、最初にFax Service714に送信開始イベント753を発行する(S521)。   A transmission start event 753 is issued to the State Machine Pool 731 (S521). The State Machine Pool 731 issues a transmission start event 753 to all managed state machines (however, when a destination is clearly specified in the event) in a round robin manner (S521 to S524). For example, when the fax service 714 is located at the beginning of the queue, the state machine pool 731 first issues a transmission start event 753 to the fax service 714 (S521).

Fax Service714は、今現在、アクティブな状態オブジェクトに接続している全ての遷移オブジェクトに対して順番にイベントを発行し、遷移条件を満足しているかを確認する。遷移条件を満足していれば、アクションを実行して遷移する。例えば、Idle状態751であれば、送信開始イベント753によりFaxSend状態752に遷移し、Fax送信を開始する。   The Fax Service 714 issues events to all the transition objects connected to the currently active state object in order, and confirms whether the transition conditions are satisfied. If the transition condition is satisfied, the action is executed to make a transition. For example, in the Idle state 751, a transition is made to the FaxSend state 752 by a transmission start event 753, and Fax transmission is started.

3)Extend Service
図26は、図7のJSDKシステムを構成するExtend Service603について説明するためのクラス図である。Extend Service603は、Function Service601のサービスを拡張するクラスである。図7のJSDKシステムでは、第1節で取り上げたFunction Service601と第3節で取り上げるExtend Service603は同位層の関係にある。図7のJSDKシステムには、Function Service601とユーザアプリ501との間のサービス授受を仲介するAPIとして、Function API611が存在し、Extend Service603とユーザアプリ501との間のサービス授受を仲介するAPIとして、第1のExtend API613−1が存在し、Function Service601とExtend Service603との間のサービス授受を仲介するAPIとして、第2のExtend API613−2が存在する。
3) Extended Service
FIG. 26 is a class diagram for explaining the Extended Service 603 constituting the JSDK system of FIG. The extension service 603 is a class that extends the function of the function service 601. In the JSDK system of FIG. 7, the Function Service 601 taken up in the first section and the Extended Service 603 taken up in the third section are in an isotopic relationship. In the JSDK system of FIG. 7, the Function API 611 exists as an API that mediates service exchange between the Function Service 601 and the user application 501. As an API that mediates service exchange between the Extended Service 603 and the user application 501, The first Extend API 613-1 exists, and the second Extend API 613-2 exists as an API that mediates service exchange between the Function Service 601 and the Extend Service 603.

Extend Service603とExtend API613の実装理由を説明する事にする。JSDKアプリ147の多様な変化にJSDKプラットフォーム148が適切に対応するには、Function Service601のサービスをより他律的に変更できる方が好適な場合がある。Function Service601に部品を外部から提供してFunction Service601のサービスを拡張する場合等である。よって、Function Service601のサービスを拡張するのに、Function Service601のサービスを拡張するExtend Service603を、Function Service601とともに実装するのである。そしてさらに、Function API611とともにExtend API613を実装する。   The reason for implementing the Extended Service 603 and the Extended API 613 will be described. In order for the JSDK platform 148 to appropriately respond to various changes in the JSDK application 147, it may be preferable that the service of the Function Service 601 can be changed more uniformly. For example, the function of the Function Service 601 may be extended by providing a component to the Function Service 601 from the outside. Therefore, in order to extend the function of the Function Service 601, the Extended Service 601 that extends the Function Service 601 is installed together with the Function Service 601. In addition, an Extend API 613 is mounted together with the Function API 611.

図26に示す通り、旧バージョンのユーザアプリ501は、Function API611を通じてFunction Service601にサービスを要求(S201)する。一方、新バージョンのユーザアプリ501は、Function Service601に非拡張バージョンのサービスを要求する際は、Function API611を通じてFunction Service601にサービスを要求(S202)して、Function Service601に拡張バージョンのサービスを要求する際は、第1のExtend API613−1とExtend Service603と第2のExtend API613−2とを通じてFunction Service601にサービスを要求(S203−1,2)する。   As shown in FIG. 26, the old version of the user application 501 requests a service from the Function Service 601 through the Function API 611 (S201). On the other hand, when the new version of the user application 501 requests a function of the non-extended version from the Function Service 601, the user application 501 requests the service from the Function Service 601 through the Function API 611 (S 202), and requests the Function Service 601 for the extended version service. Requests a function from the Function Service 601 through the first Extended API 613-1, the Extended Service 603, and the second Extend API 613-2 (S203-1, 2).

図27は、Extend Serviceの動作の概要を説明するための図である。   FIG. 27 is a diagram for explaining the outline of the operation of the Extended Service.

図27に示されるFunction Service601にて、Adaptive Behavior702には、非拡張バージョンのFax Service714であるFaxTx1と、拡張バージョンのFax Service714であるFaxTx2が存在する。FaxTx1は、画像データをFAX送信するFax Service714である。FaxTx2は、画像データをPDFからTIFFに変換してFAX送信するFax Service714である。画像データをPDFからTIFFに変換してFAX送信する場合において、FaxTx1が送信処理に関与する場合にはJSDKアプリ147で変換処理を実行する事になり、FaxTx2が送信処理に関与する場合にはJSDKプラットフォーム148で変換処理を実行する事になる。   In the Function Service 601 shown in FIG. 27, the Adaptive Behavior 702 includes a non-extended version of Fax Service 714, FaxTx1, and an extended version of Fax Service 714, FaxTx2. FaxTx1 is a Fax Service 714 that transmits image data by FAX. Fax Tx 2 is a Fax Service 714 that converts image data from PDF to TIFF and transmits it by FAX. In the case where image data is converted from PDF to TIFF and transmitted by FAX, if FaxTx1 is involved in the transmission process, the JSDK application 147 performs the conversion process, and if FaxTx2 is involved in the transmission process, JSDK Conversion processing is executed by the platform 148.

図28は、FaxTx1やFaxTx2の状態遷移モデルである。FaxTx1の状態には、初期状態760、Idle状態761、Send状態762、及び終期状態764等が存在する。FaxTx2の状態には、初期状態760、Idle状態761、Send状態762、Transform状態763、及び終期状態764等が存在する。Idle状態761は、FAX送信処理の待機中の状態である。Send状態762は、FAX送信処理を実行中の状態である。Transform状態763は、画像変換処理を実行中の状態である。図28により、FaxTx1とFaxTx2は継承関係にある事が解る。FaxTx1が継承前のクラスであり、FaxTx2が継承後のクラスである。   FIG. 28 shows state transition models of FaxTx1 and FaxTx2. In the state of Fax Tx1, there are an initial state 760, an idle state 761, a send state 762, a final state 764, and the like. The FaxTx2 state includes an initial state 760, an idle state 761, a send state 762, a transform state 763, a final state 764, and the like. The idle state 761 is a state in which a FAX transmission process is on standby. The Send state 762 is a state in which a FAX transmission process is being executed. The Transform state 763 is a state in which image conversion processing is being executed. From FIG. 28, it is understood that FaxTx1 and FaxTx2 are in an inheritance relationship. FaxTx1 is a class before inheritance, and FaxTx2 is a class after inheritance.

Function Service601にて、Adaptive Behavior702では、自己の振る舞いを動的に継承する事で、自己の振る舞いを動的に変更する事ができる。例えば、図27に示す通り、FaxTx1がFaxTx2に動的に継承される事で、画像データをPDFからTIFFに変換しない振る舞いが変換する振る舞いに動的に変更される事になる。   In Function Service 601, Adaptive Behavior 702 can dynamically change its own behavior by dynamically inheriting its own behavior. For example, as shown in FIG. 27, when FaxTx1 is dynamically inherited by FaxTx2, the behavior of not converting image data from PDF to TIFF is dynamically changed to the behavior of conversion.

Function Service601にて、Adaptive Behavior702では、自己に振る舞い継承用のプラグイン部品をプラグインする事で、自己の振る舞いを動的に継承する事ができる。例えば、図27に示す通り、画像データをPDFからTIFFに変換するためのプラグイン部品の「PDF2TIFF」のプラグインにより、FaxTx1がFaxTx2に動的に継承される。振る舞い継承用のプラグイン部品は、Extend Service603がFunction Service601に提供する。   In Function Service 601, Adaptive Behavior 702 can dynamically inherit its own behavior by plugging in a plug-in component for its own behavior inheritance. For example, as shown in FIG. 27, FaxTx1 is dynamically inherited by FaxTx2 by a plug-in component “PDF2TIFF” for converting image data from PDF to TIFF. A plug-in component for behavior inheritance is provided by the Extended Service 603 to the Function Service 601.

図29は、Fax Serviceに関するプラグイン処理を説明するための図である。   FIG. 29 is a diagram for explaining plug-in processing related to the Fax Service.

Function Service601にて、Adaptive Behavior702には、State Machine Pool731、Plugin Agent733等のクラスが存在する。   In Function Service 601, Adaptive Behavior 702 includes classes such as State Machine Pool 731 and Plugin Agent 733.

State Machine Pool731は、FaxTx1やFaxTx2の状態遷移モデルを管理するクラスである。Plugin Agent733は、FaxTx1やFaxTx2の状態遷移モデルに振る舞い継承用のプラグイン部品のプラグイン結果を反映させるクラスである。   State Machine Pool 731 is a class for managing the state transition model of FaxTx1 and FaxTx2. Plugin Agent 733 is a class that reflects the plug-in result of the plug-in component for behavior inheritance in the state transition model of FaxTx1 and FaxTx2.

Plugin Agent733は、Function Service601に振る舞い継承用のプラグイン部品がプラグインされた場合、State Machine Pool731が管理する状態遷移モデルに振る舞い継承用のプラグイン部品のプラグイン結果を反映させる。これによって、Function Service601の振る舞いが動的に変更される。   When a plug-in component for behavior inheritance is plugged in to the Function Service 601, the Plug-in Agent 733 reflects the plug-in result of the plug-in component for behavior inheritance in the state transition model managed by the State Machine Pool 731. As a result, the behavior of the Function Service 601 is dynamically changed.

図26から図29にかけてその概要を説明したFaxTx1からFaxTx2への拡張処理について更に具体的に説明する。   The expansion process from FaxTx1 to FaxTx2 whose outline has been described with reference to FIGS. 26 to 29 will be described more specifically.

拡張前のFax Service714であるFaxTx1は、図13に示したモデルに基づいて、以下のようなオブジェクトによって構成される。   Fax Tx1, which is the Fax Service 714 before expansion, is composed of the following objects based on the model shown in FIG.

図30は、FaxTx1のオブジェクト構成を表す図である。FaxTx1は、図28の状態遷移モデルに基づいて、初期状態オブジェクト760S、終期状態オブジェクト764S、Idle状態オブジェクト761S、Send状態オブジェクト762S、送信開始オブジェクト765T、送信処理オブジェクト762A等より構成されている。   FIG. 30 is a diagram illustrating an object configuration of FaxTx1. The Fax Tx1 includes an initial state object 760S, an end state object 764S, an Idle state object 761S, a Send state object 762S, a transmission start object 765T, a transmission processing object 762A, and the like based on the state transition model of FIG.

また、図31はFaxTx2のオブジェクト構成を表す図である。FaxTx2は、図28の状態遷移モデルに基づいて、初期状態オブジェクト760S、終期状態オブジェクト764S、Idle状態オブジェクト761S、Send状態オブジェクト762S、Transform状態オブジェクト763S、送信開始オブジェクト765T、送信処理オブジェクト762A、変換処理オブジェクト763A、変換終了オブジェクト766T等より構成されている。なお、図30及び図31においては、一部の遷移オブジェクトが省略されているが(例えば、Send状態762から終期状態764への状態遷移に対応する遷移オブジェクト)、これは便宜的なものである。   FIG. 31 is a diagram illustrating the object configuration of FaxTx2. The Fax Tx2 is based on the state transition model of FIG. 28, the initial state object 760S, the final state object 764S, the Idle state object 761S, the Send state object 762S, the Transform state object 763S, the transmission start object 765T, the transmission processing object 762A, the conversion processing An object 763A, a conversion end object 766T, and the like are included. In FIG. 30 and FIG. 31, some transition objects are omitted (for example, transition objects corresponding to the state transition from the Send state 762 to the final state 764), but this is for convenience. .

図30及び図31より、FaxTx1からFaxTx2への拡張処理とは「Transform状態オブジェクト763S」や「変換処理オブジェクト763A」や「変換終了オブジェクト766T」といった拡張処理用のオブジェクトをFaxTx1に対して追加する事で実現できることが分かる。   From FIG. 30 and FIG. 31, the extension process from FaxTx1 to FaxTx2 is that an object for extension processing such as “Transform state object 763S”, “Conversion processing object 763A”, and “Conversion end object 766T” is added to FaxTx1. It can be realized that.

Fax Service714の拡張処理の影響が顕著なオブジェクトが、Fax Service714の更新部分のオブジェクトである。Fax Service714の更新部分のオブジェクトとは、オブジェクトの入替部分やオブジェクトの追加部分(Fax Service714の更新部分)に連結するオブジェクトを意味する。図30から図31への拡張処理では、Fax Service714の更新部分に相当するのがスイッチ770等の追加部分であり、Fax Service714の更新部分のオブジェクトに相当するのがSend状態オブジェクト762Sや送信開始オブジェクト765Tである。Fax Service714の拡張処理をFax Service714の動作中に実行するには、Fax Service714の更新部分のオブジェクトがアクティブ状態ではないとき(非アクティブ状態のとき)に実行すればよい。   An object in which the influence of the extension process of the Fax Service 714 is remarkable is an object of an updated part of the Fax Service 714. The object of the update part of the Fax Service 714 means an object linked to the replacement part of the object or the additional part of the object (the update part of the Fax Service 714). In the extension processing from FIG. 30 to FIG. 31, the update part of the Fax Service 714 corresponds to an additional part such as the switch 770, and the send state object 762 S and the transmission start object correspond to the update part object of the Fax Service 714. 765T. In order to execute the extension process of the Fax Service 714 during the operation of the Fax Service 714, it may be executed when the object of the updated part of the Fax Service 714 is not in an active state (in an inactive state).

図32及び図33は、FaxTx1の状態遷移情報の定義例を示す図である。図32及び図33によって一つの状態遷移情報1100の記述例が示されている。なお、図中における行番号は、説明の便宜上付加したものである。   32 and 33 are diagrams illustrating examples of definition of state transition information of FaxTx1. A description example of one state transition information 1100 is shown in FIGS. Note that the line numbers in the figure are added for convenience of explanation.

状態遷移情報1100の121行目における<StateMachine>タグのタグ名、及びそのname属性の値(FaxTx1)によって、状態遷移情報1100は、FaxTx1に対応するものであることが定義されている。また、当該<StateMachine>タグにおけるxmi.id属性の値(「004」)は、FaxTx1を識別するIDである。   By the tag name of the <StateMachine> tag on the 121st line of the state transition information 1100 and the value of its name attribute (FaxTx1), it is defined that the state transition information 1100 corresponds to FaxTx1. Also, xmi. In the <StateMachine> tag. The value of the id attribute (“004”) is an ID that identifies FaxTx1.

125行目の<CompositeState>タグは、FaxTx1における状態の定義の開始の宣言に相当する。当該宣言は、<CompositeState>タグのxmi.idの値(「017」)によって識別される。   The <CompositeState> tag on the 125th line corresponds to the declaration of the start of the state definition in FaxTx1. The declaration includes xmi. Of the <CompositeState> tag. It is identified by the value of id (“017”).

130行目から137行目における<Pseudostate>タグによって囲まれたPseudostate要素1110は、初期状態760に対する定義である。Pseudostate要素1110のname属性の値には「Init」が設定され、xmi.id要素の値には、「018」が設定されている。   The Pseudostate element 1110 surrounded by the <Pseudostate> tag in the 130th to 137th lines is a definition for the initial state 760. The value of the name attribute of the pseudostate element 1110 is set to “Init”, and xmi. The value of the id element is set to “018”.

138行目から148行目におけるCompositeState要素1120は、Send状態762に対する定義である。CompositeState要素1120のname属性の値には「Send」が設定され、xmi.id要素の値には、「019」が設定されている。   The CompositeState element 1120 in the 138th to 148th lines is a definition for the Send state 762. The value of the name attribute of the CompositeState element 1120 is set to “Send”, and xmi. “019” is set as the value of the id element.

149行目から159行目におけるCompositeState要素1130は、Idle状態761に対する定義である。CompositeState要素1130のname属性の値には「Idle」が設定され、xmi.id要素の値には、「022」が設定されている。   The CompositeState element 1130 in the lines 149 to 159 is a definition for the idle state 761. The value of the name attribute of the CompositeState element 1130 is set to “Idle”, and xmi. “022” is set as the value of the id element.

160行目から183行目におけるPseudostate要素1140は、終期状態764に対する定義である。Pseudostate要素1140のname属性の値には「end」が設定され、xmi.id要素の値には、「024」が設定されている。   The pseudostate element 1140 from the 160th line to the 183rd line is a definition for the final state 764. The value of the name attribute of the pseudostate element 1140 is set to “end”, and xmi. The value of the id element is set to “024”.

また、191行目から228行目には、FaxTx1における各状態遷移が定義されている。すなわち、191行目から204行目におけるTransition要素1150は、Idle状態761からSend状態762への状態遷移に対する定義である。Transition要素1150が当該状態遷移に対する定義であることは、Transition要素1150の子要素として定義されている、Transition.source要素1151及びTransition.target要素1152より特定される。Transition.source要素1151は遷移元の状態が設定される要素である。Transition.source要素1151の子要素のxmi.idref属性の値は「022」である。したがって、遷移元は、xmi.id属性の値が「022」の状態、すなわち、Idle状態761であることが分かる。また、Transition.target要素1152は遷移先の状態が設定される要素である。Transition.target要素1152の子要素のxmi.idref属性の値は「019」である。したがって、遷移先は、xmi.idの値が「019」の状態、すなわち、Send状態762であることが分かる。なお、Transition要素1150のname属性の値は「送信開始」であり、xmi.id属性の値は「023」である。   Further, in the 191st to 228th lines, each state transition in FaxTx1 is defined. That is, the Transition element 1150 from the 191st line to the 204th line is a definition for the state transition from the idle state 761 to the send state 762. That the Transition element 1150 is a definition for the state transition indicates that the Transition.1150 is defined as a child element of the Transition element 1150. source element 1151 and Transition. It is specified by the target element 1152. Transition. A source element 1151 is an element in which a transition source state is set. Transition. xmi. of the child element of the source element 1151. The value of the idref attribute is “022”. Therefore, the transition source is xmi. It can be seen that the id attribute value is “022”, that is, the idle state 761. In addition, Transition. A target element 1152 is an element in which a transition destination state is set. Transition. xmi. of the child element of the target element 1152 The value of the idref attribute is “019”. Therefore, the transition destination is xmi. It can be seen that the id value is “019”, that is, the Send state 762. Note that the value of the name attribute of the Transition element 1150 is “start transmission”, and xmi. The value of the id attribute is “023”.

205行目から218行目におけるTransition要素1160は、Send状態762から終期状態764への状態遷移に対する定義である。Transition要素1160が当該状態遷移に対する定義であることは、Transition.source要素1161内のxmi.idref属性の値が「019」(Send状態762)であり、Transition.target要素1162内のxmi.idref属性の値が「024」(終期状態764)であることから特定される。なお、Transition要素1160のname属性の値は「送信終了」であり、xmi.id属性の値は「020」である。   The Transition element 1160 in the 205th line to the 218th line is a definition for the state transition from the Send state 762 to the final state 764. The Transition element 1160 is a definition for the state transition. xmi. in the source element 1161. The value of the idref attribute is “019” (Send state 762), and Transition. xmi. in the target element 1162. It is identified from the value of the idref attribute being “024” (the final state 764). Note that the value of the name attribute of the Transition element 1160 is “transmission end”, and xmi. The value of the id attribute is “020”.

219行目から228行目におけるTransition要素1170は、初期状態760からIdle状態761への状態遷移に対する定義である。Transition要素1170が当該状態遷移に対する定義であることは、Transition.source要素1171内のxmi.idref属性の値が「018」(初期状態760)であり、Transition.target要素1172内のxmi.idref属性の値が「022」(Idle状態761)であることから特定される。なお、Transition要素1170のxmi.id属性の値は「018」である。   The Transition element 1170 from the 219th line to the 228th line is a definition for the state transition from the initial state 760 to the idle state 761. The Transition element 1170 is a definition for the state transition. xmi. in the source element 1171. The value of the idref attribute is “018” (initial state 760), and Transition. xmi. in the target element 1172. It is specified from the value of the idref attribute being “022” (Idle state 761). Note that the xmi. The value of the id attribute is “018”.

130行目以降の説明に戻る。各状態に対応する、Pseudostate要素1110、CompositeState要素1120、及びCompositeState要素1130は、StateVertex.outgoing要素及びStateVertex.incoming要素の少なくともいずれか一方を子要素として有する。StateVertex.outgoing要素は、遷移元からの状態遷移に対する接続が定義される要素である。StateVertex.incoming要素は、遷移先への状態遷移に対する接続が定義される要素である。   Returning to the description after the 130th line. The Pseudostate element 1110, the CompositeState element 1120, and the CompositeState element 1130 corresponding to each state are in the StateVertex. outgoing element and StateVertex. It has at least one of incoming elements as a child element. StateVertex. The outgoing element is an element in which a connection to a state transition from the transition source is defined. StateVertex. The incoming element is an element in which a connection for a state transition to a transition destination is defined.

例えば、初期状態760に対応するPseudostate要素1110におけるStateVertex.outgoing要素1111において、その子要素のxmi.idref属性の値は「018」である。したがって、初期状態760からの遷移先への状態遷移は、Transition要素1170が対応する状態遷移に相当することが分かる。   For example, StateVertex. In the Pseudostate element 1110 corresponding to the initial state 760. In the outgoing element 1111, the child element xmi. The value of the idref attribute is “018”. Therefore, it can be seen that the state transition from the initial state 760 to the transition destination corresponds to the state transition corresponding to the Transition element 1170.

また、Send状態762に対応するCompositeState要素1120おけるStateVertex.outgoing要素1121においてその子要素のxmi.idref属性の値は「020」であり、StateVertex.incoming要素1122において、その子要素のxmi.idref属性の値は「023」である。したがって、Send状態762からの遷移先への状態遷移は、Transition要素1160が対応する状態遷移に相当し、遷移元の状態遷移は、Transition要素1150が対応する状態遷移に相当することが分かる。   In addition, StateVertex. In the CompositeState element 1120 corresponding to the Send state 762. In the outgoing element 1121, the child element xmi. The value of the idref attribute is “020”, and StateVertex. In the incoming element 1122, the child element xmi. The value of the idref attribute is “023”. Therefore, it can be seen that the state transition from the Send state 762 to the transition destination corresponds to the state transition corresponding to the Transition element 1160, and the state transition of the transition source corresponds to the state transition corresponding to the Transition element 1150.

なお、Idle状態761に対応するCompositeState要素1130、終期状態764に対応するPseudostate要素1140においても同様に状態遷移との接続が定義されている。   Note that the connection with the state transition is similarly defined in the CompositeState element 1130 corresponding to the idle state 761 and the Pseudostate element 1140 corresponding to the final state 764.

このような状態遷移情報に基づいて、FaxTx1のオブジェクト構成は構築される。なお、オブジェクト構成の構築処理は、図15において説明したものに準ずるため、ここでの説明は省略する。   Based on such state transition information, the object configuration of FaxTx1 is constructed. The object configuration construction process is the same as that described with reference to FIG.

上記をふまえて、Fax Service714の拡張処理を具体的に説明する。図34は、Fax Serviceの拡張処理を説明するためのシーケンス図である。   Based on the above, the expansion process of the Fax Service 714 will be specifically described. FIG. 34 is a sequence diagram for explaining the extension process of the Fax Service.

例えば、管理者は、FaxTx2とFaxTx1との差分の追加モジュールが格納されたSDカードを融合機101のメモリカードスロット234に挿入する(S601)。   For example, the administrator inserts an SD card storing an additional module of the difference between FaxTx2 and FaxTx1 into the memory card slot 234 of the multi-function peripheral 101 (S601).

図35は、SDカード内の追加モジュールの構成例を示す図である。図35に示されるSDカード235aには、Fax拡張インタフェース613−1aと、更新差分サービスバンドル840と、AspectSM.xmlファイル850(AspectSM850)とが格納されている。Fax拡張インタフェース613−1a(FaxTxEx)は、Fax Service714を拡張するためのExtend API613−1に相当する。更新差分サービスバンドル840には、拡張処理を実行するにあたり、図13のクラス図において、IStateインタフェース1004a、Activityインタフェース1004b、Eventインタフェース1003a、Guardインタフェース1003b、又はActionインタフェース1003cに対応するクラスのうち、追加が必要とされるクラスが実装された機能モジュール(例えば、Java(登録商標)のクラスファイル。以下「追加モジュール」という。))が格納されている。ここでは、追加モジュールとして、PDF2Tiff841とConvertEnd842とが格納されている。   FIG. 35 is a diagram illustrating a configuration example of an additional module in the SD card. The SD card 235a shown in FIG. 35 includes a Fax extended interface 613-1a, an update difference service bundle 840, an AspectSM. An xml file 850 (AspectSM850) is stored. The Fax extension interface 613-1a (FaxTxEx) corresponds to the Extend API 613-1 for extending the Fax Service 714. In the update difference service bundle 840, when executing the extension process, in the class diagram of FIG. 13, among the classes corresponding to the IState interface 1004a, the Activity interface 1004b, the Event interface 1003a, the Guard interface 1003b, or the Action interface 1003c is added. A function module (for example, a Java (registered trademark) class file; hereinafter referred to as an “additional module”)) is stored. Here, PDF2Tiff841 and ConvertEnd842 are stored as additional modules.

AspectSM850は、FaxTx1からFaxTx2への拡張処理をどのように実施するかについての仕様がXML形式記述されているファイルである。   The AspectSM 850 is a file in which specifications on how to perform extension processing from FaxTx1 to FaxTx2 are described in XML format.

図36は、Fax Serviceの拡張内容が記述されたAspectSMの記述例を示す図である。図中、行番号は説明の便宜上付加したものである。AspectSM850には、FaxTx1の状態遷移情報1100(図32及び図33)に対する変更内容が記述されている。   FIG. 36 is a diagram illustrating a description example of AspectSM in which the extended contents of Fax Service are described. In the figure, line numbers are added for convenience of explanation. The aspect SM 850 describes changes to the state transition information 1100 (FIGS. 32 and 33) of Fax Tx1.

AspectSM850の記述例において、2行目は、xmi.idの値が「004」であるFaxTx1に対して状態遷移の変更を行うことを指示している。すなわち、2行目におけるxmi.idref属性は、変更の対象となるステートマシンのxmi.idが指定される。   In the description example of AspectSM850, the second line is xmi. It is instructed to change the state transition to FaxTx1 whose id value is “004”. That is, xmi. The idref attribute is set to xmi. of the state machine to be changed. id is specified.

3行目から20行目までは一つ目の変更箇所に関する変更情報が記述されている。3行目には、変更箇所と変更タイミングが指定されている。変更箇所は、pointcut.<xxx>における<xxx>の記述とxmi.ref属性の値とによって指定される。ここで、<xxx>の部分は「CompositeState」であり、xmi.ref属性の値は「017」である。したがって、状態遷移情報1100の125行目における<CompositeState>タグ内に対する変更が指定されていることになる。また、変更のタイミングは、timing属性の値によって指定される。ここでは、「Idle」が指定されている。したがって、FaxTx1がIdle状態761にあるときに、変更を行うべきことが指定されている。   From the 3rd line to the 20th line, change information relating to the first change location is described. In the third line, the change location and the change timing are specified. The changed part is pointcut. <Xxx> in <xxx> and xmi. It is specified by the value of the ref attribute. Here, the part of <xxx> is “CompositeState”, and xmi. The value of the ref attribute is “017”. Therefore, a change in the <CompositeState> tag in the 125th line of the state transition information 1100 is designated. Also, the timing of the change is specified by the value of the timing attribute. Here, “Idle” is designated. Therefore, it is specified that the change should be made when FaxTx1 is in the idle state 761.

4行目には、変更の内容が指定されている。すなわち、<advice.CompositeState>タグのタグ名におけるadvice.以降によって、変更の対象がCompositeState要素であることが指定されている。また、type属性によって、変更の種別が「insert」(挿入)であることが指定されている。すなわち、3行目及び4行目によって、<CompositeState>タグ内に新たなCompositeState要素を挿入すべき旨が指定されている。   The contents of the change are specified in the fourth line. That is, <advice. In the tag name of CompositeState> tag, “advice. Henceforth, it is specified that the object of change is a CompositeState element. In addition, the type attribute specifies that the type of change is “insert” (insert). That is, the third and fourth lines specify that a new CompositeState element should be inserted in the <CompositeState> tag.

5行目から18行目は、挿入の対象となるCompositeState要素851の定義である。CompositeState要素851は、FaxTx2のTransform状態763に対応する。CompositeState要素851内の記述形式は、図32及び図33において説明した通りである。すなわち、CompositeState要素851の子要素である、StateVertex.outgoing要素852において遷移先への接続が定義され、StateVertex.incoming要素853において遷移元への接続が定義されている。   Lines 5 to 18 define the CompositeState element 851 to be inserted. The CompositeState element 851 corresponds to the TransT state 763 of FaxTx2. The description format in the CompositeState element 851 is as described in FIGS. That is, StateVertex., Which is a child element of the CompositeState element 851. In the outgoing element 852, a connection to the transition destination is defined, and StateVertex. In the incoming element 853, a connection to the transition source is defined.

ところで、CompositeState要素851は、State.entry要素854が子要素として定義されている。State.entry要素854は、CompositeState要素851が対応するTransform状態763における入場処理が定義される要素である。すなわち、CompositeState要素851の子要素として、Action要素855が定義されているが、そのxmi.id属性とname属性より、xmi.id属性の値が「026」であり、name属性の値がpdf2tiffによって識別される処理が実行されることが指定されている。   By the way, the CompositeState element 851 includes a State. An entry element 854 is defined as a child element. State. The entry element 854 is an element in which entry processing in the Transform state 763 to which the CompositeState element 851 corresponds is defined. That is, an Action element 855 is defined as a child element of the CompositeState element 851, but the xmi. From the id attribute and the name attribute, xmi. The value of the id attribute is “026”, and it is specified that the process in which the value of the name attribute is identified by pdf2tiff is executed.

21行目から42行目までは二つ目の変更箇所に関する変更情報が指定されている。21行目には、変更箇所及び変更のタイミングが指定されている。ここでは、Idle状態761のときにTransition要素1150(図33参照)に対して変更を行うことが指定されている。   From the 21st line to the 42nd line, change information relating to the second change location is designated. In the 21st line, a change location and a change timing are specified. Here, it is specified that the transition element 1150 (see FIG. 33) is changed in the idle state 761.

二つ目の変更箇所には、二つの変更が指定されている。22行目から24行目までに一つ目の変更が指定されており、25行目から41行目までに二つ目の変更が指定されている。   Two changes are specified in the second change place. The first change is specified from the 22nd line to the 24th line, and the second change is specified from the 25th line to the 41st line.

一つ目の変更については、22行目の<advice.Transition.target>タグのタグ名におけるadovice.以降によって変更対象がTransition.target要素1152であることが指定されている。また、type属性によって、変更の種別が修正(modify)であることが指定されている。23行目には、変更の対象に関して修正後の定義が記述されている。すなわち、一つ目の変更は、Idle状態761からSend状態762への状態遷移を、Idle状態761からTransform状態763への状態遷移に修正することである。   Regarding the first change, the <advice. Transition. target> tag in the tag name. After that, the change target is Transition. The target element 1152 is specified. In addition, the type attribute specifies that the type of change is modification. The 23rd line describes the definition after correction with respect to the change target. That is, the first change is to correct the state transition from the Idle state 761 to the Send state 762 to a state transition from the Idle state 761 to the Transform state 763.

二つ目の変更(25行目から41行目)は、新たな状態遷移(Tranform状態605からSend状態762への状態遷移)に対応するTransision要素の挿入をIdle状態761のときに行うことである。この内容は、上記の説明から読み取れるため、各行毎の説明は省略する。   The second change (from the 25th line to the 41st line) is that the transition element corresponding to the new state transition (the state transition from the Transform state 605 to the Send state 762) is inserted in the Idle state 761. is there. Since this content can be read from the above description, the description for each row is omitted.

43行目から55行目は、標準ではなく独自の書式に基づく定義が行われている拡張記述部分である。43行目のpointcut.以下の「XMI.extension」によって、拡張記述部分であることが指定されている。本実施の形態では、この部分に、状態遷移処理で呼ばれるアクション処理と、イベント処理等に使用する機能モジュール(例えば、Java(登録商標)クラス)との関連付けが定義される。   The 43rd to 55th lines are an extended description part in which a definition based on a unique format, not a standard, is performed. On line 43, pointcut. The following “XMI.extension” specifies that it is an extended description part. In this embodiment, an association between an action process called in the state transition process and a function module (for example, Java (registered trademark) class) used for an event process or the like is defined in this part.

44行目では、当該advice要素の子要素の定義を挿入(insert)すべきことが指定されている。   The 44th line specifies that the definition of the child element of the adice element should be inserted.

45行目から49行目までは、挿入される定義である。45行目には、Bundleを実装することが指定されている。Bundleの実装先は、xmi.idref属性の値(「004」)で指定される。すなわち、FaxTx1である。   Lines 45 to 49 are definitions to be inserted. The 45th line specifies that the Bundle should be implemented. The implementation destination of Bundle is xmi. It is specified by the value of the idref attribute (“004”). That is, FaxTx1.

46行目から49行目までは、Transform状態763に対応させて新たに挿入するCompositeState要素851(5行目から18行目)の入場処理の定義(15行目から17行目)におけるpdf2tiffと、実際にその処理が実装されているjp.co.rrr.function.pdf2tiffクラスとの関連付けが定義されている。これによって、FaxTx2に更新された後、Transform状態763に遷移したときには、jp.co.rrr.function.pdf2tiffが実行されることになる。48行目のproperty要素は、jp.co.rrr.function.pdf2tiffクラスが実行されるときのプロパティ情報である。   From the 46th line to the 49th line, the pdf2tiff in the definition of the entrance process (the 15th line to the 17th line) of the CompositeState element 851 (the 5th line to the 18th line) to be newly inserted corresponding to the Transform state 763 Jp. Where the processing is actually implemented. co. rrr. function. Association with the pdf2tiff class is defined. As a result, after the state is updated to FaxTx2, when the state transits to the Transform state 763, jp. co. rrr. function. pdf2tiff will be executed. The property element on line 48 is jp. co. rrr. function. This is property information when the pdf2tiff class is executed.

50行目から52行目は、Transform状態763からSend状態762への状態遷移のトリガとなる変換完了イベントとjp.co.rrr.function.convertEndクラスとの関連付けが定義されている。これによって、Traneform状態605中に変換完了イベントが検知されると、jp.co.rrr.function.convertEndクラスが実行され、その実行結果がtrueであれば、Send状態762に遷移することになる。   The 50th to 52nd lines are a conversion completion event that triggers a state transition from the Transform state 763 to the Send state 762, and jp. co. rrr. function. An association with the convertEnd class is defined. Thus, when a conversion completion event is detected during the Trainform state 605, jp. co. rrr. function. If the convertEnd class is executed and the execution result is true, the state transitions to the Send state 762.

図34に戻る。管理者によるSDカード235aの挿入が自動的に検知されると、又はSDカード235aが挿入され、オペレーションパネル202から更新指示が入力されると、SAS411は、SAS Manager511に拡張処理の実行を要求する(S602)。なお、SDカード235aに記録された情報は、ネットワークを介してダウンロードされてもよい。この場合、SDカードのような記録媒体を用いる必要はない。   Returning to FIG. When the insertion of the SD card 235a by the administrator is automatically detected, or when the SD card 235a is inserted and an update instruction is input from the operation panel 202, the SAS 411 requests the SAS manager 511 to execute the expansion process. (S602). Note that the information recorded on the SD card 235a may be downloaded via a network. In this case, it is not necessary to use a recording medium such as an SD card.

SAS Manager511は、挿入されたSDカード235aの更新差分サービスバンドル840によるFaxTx1からFaxTx2への更新の可否についてチェックを行う(S603)。更新が可能な場合、SAS Manager511は、更新差分サービスバンドル840の融合機101へのインストールの可否をチェックする(S604)。インストールが可能な場合、SAS Manager511は、SDカード235a内の更新差分サービスバンドル840をOSGiフレームワーク403(融合機101)にインストールする(S605)。更新差分サービスバンドル840のインストールが完了すると、SAS Manager511は、更新差分サービスバンドル840をアクティブ状態に遷移させるようにOSGiフレームワーク403に要求する(S606)。   The SAS manager 511 checks whether the update difference service bundle 840 of the inserted SD card 235a can be updated from FaxTx1 to FaxTx2 (S603). If the update is possible, the SAS Manager 511 checks whether or not the update difference service bundle 840 can be installed in the multi-function peripheral 101 (S604). If installation is possible, the SAS manager 511 installs the update difference service bundle 840 in the SD card 235a in the OSGi framework 403 (multifunction machine 101) (S605). When the installation of the update difference service bundle 840 is completed, the SAS Manager 511 requests the OSGi framework 403 to shift the update difference service bundle 840 to the active state (S606).

OSGiフレームワーク403は、更新差分サービスバンドル840のインスタンスを(以下、「更新差分オブジェクト840a」という。)生成し、アクティブな状態に遷移させる(S607)。   The OSGi framework 403 generates an instance of the update difference service bundle 840 (hereinafter referred to as “update difference object 840a”), and transitions to an active state (S607).

続いて、SAS Manager511は、Fax拡張インタフェース613−1aをOSGiフレームワーク403にインストールし(S608)、Fax拡張インタフェース613−1aのFunction Service601への組み込みをExtend Service603に要求する(S609)。   Subsequently, the SAS manager 511 installs the Fax extension interface 613-1a in the OSGi framework 403 (S608), and requests the Extended Service 603 to incorporate the Fax extension interface 613-1a into the Function Service 601 (S609).

続いて、Extend Service603が、Fax拡張インタフェース613−1aをアクティブな状態にするようOSGiフレームワーク403に要求すると(S610)、OSGiフレームワーク403は、Fax拡張インタフェース613−1aをアクティブな状態に遷移させる。(S611)。Fax拡張インタフェース613−1aがアクティブな状態に遷移すると、Extend Service603は、Fax拡張インタフェース613−1aをFunction Service601に登録する(S612)。これによって、Fax拡張インタフェース613−1aの呼び出しが可能となる。   Subsequently, when the Extended Service 603 requests the OSGi framework 403 to activate the Fax extension interface 613-1a (S610), the OSGi framework 403 transitions the Fax extension interface 613-1a to an active state. . (S611). When the Fax extension interface 613-1a transitions to an active state, the Extended Service 603 registers the Fax extension interface 613-1a in the Function Service 601 (S612). This makes it possible to call the fax extension interface 613-1a.

一方、ステップS607においてアクティブな状態にされた更新差分オブジェクト840aは、Plugin Agent733に対して更新差分サービスバンドル840がプラグインされたことをAspectSM850を添えて通知する(S613)。Plugin Agent733は、State Machine Pool731より、FaxTx1のオブジェクト(FaxTx1オブジェクト714a)を取得する(S614、S615)。   On the other hand, the update difference object 840a activated in step S607 notifies the plug-in Agent 733 that the update difference service bundle 840 has been plugged in along with the aspect SM 850 (S613). The Plug Agent 733 acquires a FaxTx1 object (FaxTx1 object 714a) from the State Machine Pool 731 (S614, S615).

Plugin Agent733は、FaxTx1オブジェクト714aに対して、AspectSM850を添えてFaxTx2への更新要求を行う(S616)。FaxTx1オブジェクト714aは、AspectSM850に基づいて、サービスバンドルFaxTx1をFaxTx2へ更新する為に必要な追加モジュール判断し、当該追加モジュール(ここでは、PDF2Tiff841及びConvertEnd842)の取得を更新差分オブジェクト840aに要求する(S617)。更新差分オブジェクト840aは、当該追加モジュールを取得し、FaxTx1オブジェクト714aに返却する(S618)。   The Plug Agent 733 sends an update request to the Fax Tx 2 with the Aspect SM 850 to the Fax Tx 1 object 714 a (S 616). The FaxTx1 object 714a determines an additional module necessary for updating the service bundle FaxTx1 to FaxTx2 based on the AspectSM 850, and requests the update difference object 840a to acquire the additional modules (in this case, PDF2Tiff841 and ConvertEnd842) (S617). ). The update difference object 840a acquires the additional module and returns it to the FaxTx1 object 714a (S618).

続いて、FaxTx1オブジェクト714aは、AspectSM850に従って、FaxTx1のオブジェクト構成を、FaxTx2に対応するものに更新すると共に、当該更新によって新たに追加されたActivityオブジェクトと追加モジュールとの関連付けを行う(S619)。なお、ステップS619の処理は、AspectSM850に記述されているタイミングで行われる。   Subsequently, the FaxTx1 object 714a updates the object configuration of FaxTx1 to that corresponding to FaxTx2 according to the AspectSM 850, and associates the Activity object newly added by the update with the additional module (S619). Note that the process of step S619 is performed at the timing described in the AspectSM850.

続いて、FaxTx1オブジェクト714aは、FaxTx1についてFaxTx2への更新が完了したことをPlugin Agent733に通知する(S620)。但し、FaxTx1をFaxTx2に切り替えるスイッチ770は、FaxTx1の状態のままである。   Subsequently, the FaxTx1 object 714a notifies the Plug Agent 733 that the update of FaxTx1 to FaxTx2 has been completed (S620). However, the switch 770 that switches FaxTx1 to FaxTx2 remains in the state of FaxTx1.

更新が完了した旨の通知は、SAS Manaer511を介してSAS411に通知される(S621、S622)。SAS411は、管理者に更新完了を通知するため、オペレーションパネル202に更新完了を通知するメッセージを表示させる(S623)。なお、この状態では、スイッチ770は、まだFaxTx2には切り替えられていないので、SAS411は、管理者にFaxTx2へ切り替える否かを問い合わせる。   The notification that the update has been completed is notified to the SAS 411 via the SAS manager 511 (S621, S622). The SAS 411 displays a message notifying update completion on the operation panel 202 in order to notify the administrator of update completion (S623). In this state, since the switch 770 has not been switched to FaxTx2, the SAS 411 inquires of the administrator whether to switch to FaxTx2.

そこで、管理者が、オペレーションパネル202を介してFaxTx2への切替指示を入力すると(S624)、SAS411は、FaxTx2への切替要求をSAS Manager511に通知する(S625)。SAS Manager511は、Plugin Agent733にFaxTx2への切り替えを要求する(S626)。Plugin Agent733は、FaxTx1オブジェクト714aに対して、その振る舞い(状態遷移)をFaxTx2に対応するものに切り替えるように指示する(S627)。   Therefore, when the administrator inputs an instruction to switch to FaxTx2 via the operation panel 202 (S624), the SAS 411 notifies the SAS Manager 511 of a request to switch to FaxTx2 (S625). The SAS manager 511 requests the plug-in agent 733 to switch to FaxTx2 (S626). The Plug Agent 733 instructs the FaxTx1 object 714a to switch its behavior (state transition) to that corresponding to FaxTx2 (S627).

FaxTx1オブジェクト714aは、FaxTx1がIdle状態761になるまで待機する。Idle状態761に遷移すると、FaxTx1オブジェクト714aは、スイッチ770を切り換えることにより、自己の振る舞いをFaxTx2に対応するものに切り替える(S628)。切り替えが完了すると、FaxTx1オブジェクト714aは、Plugin Agent733に対して、切替完了通知を行う(S629)。切替完了通知は、SAS Manager511を介してSAS411に伝達される(S630、S631)。SAS411は、切替完了通知に応じ、FaxTx1の切り替えが完了した旨をオペレーションパネル202に表示させる(S632)。   The FaxTx1 object 714a waits until the FaxTx1 enters the idle state 761. When the state transitions to the Idle state 761, the FaxTx1 object 714a switches its behavior to one corresponding to FaxTx2 by switching the switch 770 (S628). When the switching is completed, the FaxTx1 object 714a sends a switching completion notification to the Plug Agent 733 (S629). The switch completion notification is transmitted to the SAS 411 via the SAS Manager 511 (S630, S631). In response to the notification of switching completion, the SAS 411 displays on the operation panel 202 that the switching of FaxTx1 has been completed (S632).

次に、ステップS619における、FaxTx1のオブジェクト構成の更新処理の詳細について説明する。図37は、FaxTx1のオブジェクト構成の更新処理を説明するためのシーケンス図である。   Next, details of the update process of the object configuration of FaxTx1 in step S619 will be described. FIG. 37 is a sequence diagram for explaining update processing of the object configuration of FaxTx1.

まず、FaxTx1オブジェクト714aは、FaxTx1の状態が、AspectSM850に指定されている変更箇所ごとにおけるtiming属性の値に指定されている状態に遷移するまで待機する(S6191)。図36のAspectSM850の例では、全ての変更箇所に対するタイミングは、Idle状態761として指定されている。したがって、ここでは、Idle状態761に遷移するまで待機する。   First, the FaxTx1 object 714a waits until the state of the FaxTx1 transitions to the state specified by the timing attribute value for each change location specified in the AspectSM 850 (S6191). In the example of the aspect SM 850 in FIG. 36, the timings for all the changed portions are designated as the idle state 761. Therefore, here, it waits until it changes to the Idle state 761.

FaxTx1の状態がIdle状態761に遷移すると、FaxTx1オブジェクト714aは、AspectSM850の記述にしたがって、拡張処理を開始する。   When the state of FaxTx1 transitions to the Idle state 761, the FaxTx1 object 714a starts the extension process according to the description of the aspectSM850.

例えば、FaxTx1オブジェクト714aは、AspectSM850の3行目から20行目に基づいてTransform状態763に対応するTransform状態オブジェクト763Sを生成する(S6192)。続いて、FaxTx1オブジェクト714aは、AspectSM850の25行目から41行目に基づいて、変換終了オブジェクト766Tを生成する(S6193)。続いて、FaxTx1オブジェクト714aは、AspectSM850の9行目から14行目や、22行目から24行目に基づいて、オブジェクト間の接続関係を変更する。すなわち、FaxTx1オブジェクト714aは、Transform状態オブジェクト763Sの識別情報を引数としてIdle状態オブジェクト761Sのreconnect()メソッドを呼び出す(S6194)。これに応じて、Idle状態オブジェクト761Sは、遷移先の状態オブジェクトとして、Send状態オブジェクト762SとTransform状態オブジェクト763Sとを保持することになる。これは、ちょうど図31において、スイッチ770によって遷移先が分岐している状態に相当する。スイッチ770は、例えば、Idle状態オブジェクト761Sが参照可能なフラグ変数として実装される。例えば、当該フラグ変数の値が0のときには遷移先はSend状態オブジェクト762Sとされ、1のときには遷移先はTransform状態オブジェクト763Sとされるといった具合である。なお、Idle状態オブジェクト761SとTransform状態オブジェクト763Sとの接続は行われたが、図34において説明したように、この時点では、スイッチ770は切り替えられていないため、Idle状態オブジェクト761Sからの遷移先のオブジェクトはSend状態オブジェクト762Sのままである(すなわち、FaxTx1として機能する。)。   For example, the FaxTx1 object 714a generates a Transform state object 763S corresponding to the Transform state 763 based on the third to twentieth rows of the AspectSM 850 (S6192). Subsequently, the FaxTx1 object 714a generates a conversion end object 766T based on the 25th to 41st lines of the AspectSM850 (S6193). Subsequently, the FaxTx1 object 714a changes the connection relationship between the objects based on the 9th to 14th lines and the 22nd to 24th lines of the AspectSM850. That is, the FaxTx1 object 714a calls the reconnect () method of the Idle state object 761S with the identification information of the Transform state object 763S as an argument (S6194). In response to this, the Idle state object 761S holds a Send state object 762S and a Transform state object 763S as transition destination state objects. This corresponds to a state in which the transition destination is branched by the switch 770 in FIG. The switch 770 is implemented as a flag variable that can be referred to by the Idle state object 761S, for example. For example, when the value of the flag variable is 0, the transition destination is the Send state object 762S, and when the value is 1, the transition destination is the Transform state object 763S. Although the connection between the Idle state object 761S and the Transform state object 763S has been made, as described in FIG. 34, since the switch 770 is not switched at this time, the transition destination from the Idle state object 761S is not changed. The object remains the Send state object 762S (ie, functions as FaxTx1).

続いて、FaxTx1オブジェクト714aは、Send状態オブジェクト762Sの識別情報と変換完了オブジェクト766Tの識別情報とを引数としてTransform状態オブジェクト763Sのconnect()メソッドを呼び出す(S6195)。これに応じて、Transform状態オブジェクト763Sは、Send状態オブジェクト762Sの識別情報と変換完了オブジェクト766Tの識別情報とを関連付けて保持する。すなわち、変換終了イベントが発生した際のTransform状態763からSend状態762への状態遷移に対応する接続が構築されたことになる。   Subsequently, the FaxTx1 object 714a calls the connect () method of the Transform state object 763S with the identification information of the Send state object 762S and the identification information of the conversion completion object 766T as arguments (S6195). In response to this, the Transform state object 763S holds the identification information of the Send state object 762S and the identification information of the conversion completion object 766T in association with each other. That is, the connection corresponding to the state transition from the Transform state 763 to the Send state 762 when the conversion end event occurs is established.

続いて、FaxTx1オブジェクト714aは、AspectSM850の43行目から55行目に基づいて、追加モジュールとオブジェクトとの関連付けを行う。すなわち、Transform状態オブジェクト763Sの入場処理のインタフェース(IStateインタフェース1004a)に対してPDF2TIFF841を関連付ける(S6196)。続いて、変換完了オブジェクト766TのEventインタフェース1003aに対してConvertEnd842を関連付ける(S6197)。   Subsequently, the FaxTx1 object 714a associates the additional module with the object based on the 43rd to 55th lines of the AspectSM850. That is, the PDF2TIFF 841 is associated with the entrance processing interface (IState interface 1004a) of the Transform state object 763S (S6196). Subsequently, ConvertEnd 842 is associated with Event interface 1003a of conversion completion object 766T (S6197).

以上の処理によって、FaxTx1のオブジェクト構成は、図31に示されるようなもの(FaxTx2)に更新される。   Through the above processing, the object configuration of FaxTx1 is updated to the one shown in FIG. 31 (FaxTx2).

ところで、図36において、AspectSM850にはFaxTx1の状態遷移情報1100(図32及び図33)に対する変更内容が記述されていると説明した。しかし、上記のように、FaxTx1オブジェクト714aは、AspectSM850に基づいて状態遷移情報1100を書き換えるのではなく、FaxTx1を構成するオブジェクトを変更することで拡張処理を実現する。FaxTx1は、状態遷移情報1100に基づいてそのオブジェクトが構築されたものである。したがって、状態遷移情報1100に対する変更内容が記述されたAspectSM850は、そのままFaxTx1のオブジェクト構成に適用することができるのである。なお、AspectSM850に基づいて状態遷移情報1100を更新し、更新された状態遷移情報1100に基づいてFaxTx1(厳密には、FaxTx2に更新されたもの)を再構築してもよい。但し、この場合、再構築の前にFaxTx1を構成するオブジェクト群が破棄されるため、FaxTx1を利用中のアプリケーション等との参照関係が破壊されてしまう。したがって、本実施の形態のように、オブジェクト群を再構築するのではなく、既存のオブジェクト構成を変更する方が好適である。   Incidentally, in FIG. 36, it has been described that the aspect SM850 describes changes to the state transition information 1100 (FIGS. 32 and 33) of FaxTx1. However, as described above, the FaxTx1 object 714a does not rewrite the state transition information 1100 based on the AspectSM 850, but implements the extension process by changing the objects that constitute the FaxTx1. The Fax Tx1 is an object constructed based on the state transition information 1100. Therefore, the aspect SM 850 in which the contents of change to the state transition information 1100 are described can be directly applied to the object configuration of Fax Tx1. Note that the state transition information 1100 may be updated based on the AspectSM 850, and FaxTx1 (strictly, updated to FaxTx2) may be reconstructed based on the updated state transition information 1100. However, in this case, since the object group constituting the FaxTx1 is discarded before the reconstruction, the reference relationship with the application using the FaxTx1 is destroyed. Therefore, it is preferable to change the existing object configuration instead of reconstructing the object group as in the present embodiment.

なお、上記のように、拡張処理後は、FaxTx1とFaxTx2とは、スイッチ770を切り替えることにより容易に切り替えが可能である。したがって、FaxTx1からFaxTx2への更新後、再度FaxTx2からFaxTx1に戻したい場合は、スイッチ770を切り替えることにより実現すればよい。すなわち、Idle状態オブジェクト761Sが参照可能なフラグ変数の値を更新すればよい。また、FaxTx2からFaxTx1への更新指示が記述されたAspectSMに基づいて、FaxTx2からFaxTx1への更新を実現してもよい。この場合スイッチ770を切り替えるタイミングは、当該AspectSMに記述されたタイミングで行われる。   As described above, after the expansion process, FaxTx1 and FaxTx2 can be easily switched by switching the switch 770. Therefore, if it is desired to return from Fax Tx2 to Fax Tx1 after the update from Fax Tx1 to Fax Tx2, it may be realized by switching the switch 770. That is, the value of the flag variable that can be referred to by the Idle state object 761S may be updated. Further, the update from FaxTx2 to FaxTx1 may be realized based on AspectSM in which an update instruction from FaxTx2 to FaxTx1 is described. In this case, the switch 770 is switched at the timing described in the aspectSM.

上述したように、本実施の形態では、AspectSM850には、拡張部分が非アクティブなタイミングでFax Service714の拡張が行われるような拡張指示が記述されている。そして、かかるAspectSM850に従って、拡張部分が非アクティブなときに拡張が実行される。したがって、本実施の形態におけるFax Service714は、当該Fax Service714の実行中にその振る舞いの拡張を実行することができる。また、振る舞いの拡張にあたり、オブジェクト群が再構築されるわけではないので、当該Fax Service714の参照側との参照関係が破壊されることなく、動的にその振る舞いを拡張することが可能となっている。よって、融合機101を再起動することなくFax Service714の振る舞いは拡張され得る。   As described above, in the present embodiment, the aspect SM 850 describes an extension instruction that causes the extension of the fax service 714 at a timing when the extension portion is inactive. Then, according to the aspect SM 850, the extension is executed when the extension part is inactive. Therefore, the Fax Service 714 according to the present embodiment can extend the behavior during the execution of the Fax Service 714. In addition, since the object group is not reconstructed when the behavior is expanded, the behavior can be dynamically expanded without destroying the reference relationship with the reference side of the fax service 714. Yes. Therefore, the behavior of the fax service 714 can be expanded without restarting the multi-function peripheral 101.

4)OSGi
図38は、Service Registry801について説明するためのクラス図である。Service Registry801は、OSGiフレームワーク403を構成するクラスである。サービス提供側であるFunction Service601は、自己が提供するサービス内容をService Registry801に登録(S301)し、サービス要求側であるユーザアプリ501は、自己が要求するサービス内容をService Registry801から検索(S302)する。これによって、ユーザアプリ501は、Function Service601にサービスを要求(S303)して、Function Service601は、ユーザアプリ501にサービスを提供(S304)する。
4) OSGi
FIG. 38 is a class diagram for explaining the Service Registry 801. The Service Registry 801 is a class that constitutes the OSGi framework 403. The function service 601 serving as the service provider registers the service content provided by itself in the service registry 801 (S301), and the user application 501 serving as the service requester searches the service content requested by itself from the service registry 801 (S302). . Accordingly, the user application 501 requests a service from the Function Service 601 (S303), and the Function Service 601 provides the service to the user application 501 (S304).

図39は、状態遷移モデルのバンドル化手順について説明するためのデータ図である。状態遷移モデルは、振る舞いと部品に分離されて設計される。振る舞いはXMI言語にて記述されて、部品はJava(登録商標)言語にて記述される。XMI言語によるコードとJava(登録商標)言語によるコードはOSGiによるバンドル化手順に従ってバンドル化される。バンドルには、マニフェストファイル802が同梱される。マニフェストファイル802には、バンドルにとって必要な情報が格納される。   FIG. 39 is a data diagram for explaining the bundling procedure of the state transition model. The state transition model is designed to be separated into behavior and parts. The behavior is described in the XMI language, and the component is described in the Java (registered trademark) language. The code in the XMI language and the code in the Java (registered trademark) language are bundled according to a bundling procedure by OSGi. A manifest file 802 is included in the bundle. The manifest file 802 stores information necessary for the bundle.

図40・図41は、CSC421について説明するための図である。融合機101には他機のOSGiサービスプラットフォームを自機のOSGiサービスプラットフォームと同様に処理するためのCSC421が実装されている。CSC421の実装態様は、図6に示す通りである。   40 and 41 are diagrams for explaining the CSC 421. FIG. The multi-function peripheral 101 is equipped with a CSC 421 for processing the OSGi service platform of another machine in the same manner as the OSGi service platform of the own machine. The implementation mode of the CSC 421 is as shown in FIG.

図40は他機が融合機101である場合を表し、図41は他機がPC803である場合を表す。図40・図41に示す通り、自機のCSC421と他機のCSC421の仲介によって、自機のSAS Manager511と他機のSAS Manager511の連携が実現される。   FIG. 40 shows a case where the other machine is the multifunction machine 101, and FIG. 41 shows a case where the other machine is the PC 803. As shown in FIG. 40 and FIG. 41, the cooperation between the SAS Manager 511 of the own machine and the SAS Manager 511 of the other machine is realized by mediation between the CSC 421 of the own machine and the CSC 421 of the other machine.

本発明の実施例に該当する融合機を表す。1 shows a multi-function machine corresponding to an embodiment of the present invention. 図1の融合機に係るハードウェア構成図である。It is a hardware block diagram concerning the compound machine of Drawing 1. 図1の融合機に係る外観図である。It is an external view which concerns on the compound machine of FIG. オペレーションパネルを表す。Represents the operation panel. 図1のCSDKアプリとJSDKアプリのソフトウェア構成図である。It is a software block diagram of the CSDK application and JSDK application of FIG. 図1の融合機におけるOSGiについて説明するための図である。It is a figure for demonstrating OSGi in the compound machine of FIG. 図1のJSDKアプリとJSDKプラットフォームのクラス図である。It is a class diagram of the JSDK application and JSDK platform of FIG. JSDKシステムの起動処理を説明するための図である。It is a figure for demonstrating the starting process of a JSDK system. Function Serviceについて説明するためのクラス図である。It is a class diagram for demonstrating Function Service. Function Serviceの動作の説明図である。It is explanatory drawing of operation | movement of Function Service. Function Serviceの動作の具体例の説明図である。It is explanatory drawing of the specific example of operation | movement of Function Service. Function Serviceの振る舞い変更処理について概念的に説明するための図である。It is a figure for demonstrating notionally the behavior change process of Function Service. Function Serviceの振る舞いの動的な変更を実現するクラス群を説明するためのクラス図である。It is a class diagram for demonstrating the class group which implement | achieves the dynamic change of Behavior of Function Service. Print Serviceのオブジェクト構成を表す図である。It is a figure showing the object structure of Print Service. Print Serviceのオブジェクト構成の構築処理を説明するためのシーケンス図である。It is a sequence diagram for demonstrating the construction process of the object structure of Print Service. Print Serviceの状態遷移情報の定義例を示す図である。It is a figure which shows the example of a definition of the state transition information of Print Service. Print Serviceの状態遷移情報の定義例を示す図である。It is a figure which shows the example of a definition of the state transition information of Print Service. Print Serviceの振る舞い変更処理を説明するためのシーケンス図である。It is a sequence diagram for demonstrating the behavior change process of Print Service. Print Serviceの振る舞い変更処理を説明するためのシーケンス図である。It is a sequence diagram for demonstrating the behavior change process of Print Service. Print Serviceの振る舞いの変更内容が記述されたAspectSMの記述例を示す図である。It is a figure which shows the example of description of AspectSM in which the change content of behavior of Print Service was described. Modify Serviceについて説明するためのクラス図である。It is a class diagram for demonstrating Modify Service. Modify Serviceについて説明するためのクラス図である。It is a class diagram for demonstrating Modify Service. Modify ServiceによるFunction Serviceの変更処理を説明するためのシーケンス図である。It is a sequence diagram for demonstrating the change process of Function Service by Modify Service. Fax送信アプリに対応させて登録されたAspectSMの記述例を示す図である。It is a figure which shows the example of description of AspectSM registered corresponding to the Fax transmission application. State Machine Poolによるイベントの通知方式について説明するための図である。It is a figure for demonstrating the notification system of the event by State Machine Pool. Extend Serviceについて説明するためのクラス図である。It is a class diagram for demonstrating Extended Service. Extend Serviceの動作の概要を説明するための図である。It is a figure for demonstrating the outline | summary of the operation | movement of Extended Service. FaxTx1やFaxTx2の状態遷移モデルである。It is a state transition model of FaxTx1 and FaxTx2. Fax Serviceに関するプラグイン処理を説明するための図である。It is a figure for demonstrating the plug-in process regarding Fax Service. FaxTx1のオブジェクト構成を表す図である。It is a figure showing the object structure of FaxTx1. FaxTx2のオブジェクト構成を表す図である。It is a figure showing the object structure of FaxTx2. FaxTx1の状態遷移情報の定義例を示す図である。It is a figure which shows the example of a definition of the state transition information of FaxTx1. FaxTx1の状態遷移情報の定義例を示す図である。It is a figure which shows the example of a definition of the state transition information of FaxTx1. Fax Serviceの拡張処理を説明するためのシーケンス図である。It is a sequence diagram for demonstrating the expansion process of Fax Service. SDカード内の追加モジュールの構成例を示す図である。It is a figure which shows the structural example of the additional module in an SD card. Fax Serviceの拡張内容が記述されたAspectSMの記述例を示す図である。It is a figure which shows the example of description of AspectSM in which the extended content of Fax Service was described. FaxTx1のオブジェクト構成の更新処理を説明するためのシーケンス図である。It is a sequence diagram for demonstrating the update process of the object structure of FaxTx1. Service Registryについて説明するためのクラス図である。It is a class diagram for demonstrating Service Registry. 状態遷移モデルのバンドル化手順について説明するためのデータ図である。It is a data figure for demonstrating the bundling procedure of a state transition model. CSCについて説明するための図(同機種の場合)である。It is a figure (in the case of the same model) for demonstrating CSC. CSCについて説明するための図(別機種の場合)である。It is a figure for demonstrating CSC (in the case of another model).

符号の説明Explanation of symbols

101 融合機
111 ハードウェア
112 ソフトウェア
113 融合機起動部
121 撮像部
122 印刷部
123 その他のハードウェア
131 アプリケーション
132 プラットフォーム
133 アプリケーションプログラムインタフェース
134 エンジンインタフェース
135 仮想アプリケーションサービス
141 コピーアプリ
142 プリンタアプリ
143 スキャナアプリ
144 ファクシミリアプリ
145 ネットワークファイルアプリ
146 CSDKアプリ
147 JSDKアプリ
148 JSDKプラットフォーム
151 コントロールサービス
152 システムリソースマネージャ
153 ハンドラ
161 ネットワークコントロールサービス
162 ファクシミリコントロールサービス
163 デリバリコントロールサービス
164 エンジンコントロールサービス
165 メモリコントロールサービス
166 オペレーションパネルコントロールサービス
167 サーティフィケーションコントロールサービス
168 ユーザディレクトリコントロールサービス
169 システムコントロールサービス
171 ファクシミリコントロールユニットハンドラ
172 イメージメモリハンドラ
201 コントローラ
202 オペレーションパネル
203 ファクシミリコントロールユニット
211 CPU
212 ASIC
221 NB
222 SB
231 MEM−P
232 MEM−C
233 HDD
234 メモリカードスロット
235 メモリカード
241 NIC
242 USBデバイス
243 IEEE1394デバイス
244 セントロニクスデバイス
301 原稿セット部
302 給紙部
303 排紙部
311 タッチパネル
312 テンキー
313 スタートボタン
314 リセットボタン
315 機能キー
316 初期設定ボタン
321 ADF
322 フラットベッド
323 フラットベッドカバー
401 OSGiアプリ
402 OSGiサービス
403 OSGiフレームワーク
404 Bundle Activator
411 SAS
421 CSC
501 ユーザアプリ
511 SAS Manager
512 Screen Manager
521 JSDK Environment
531 Xlet Manager
532 Multi Xlet Manager
541 Send Manager
542 Event Manager
543 System Event Manager
544 Panel Manager
545 Install Manager
546 Server/Client Manager
547 Service Manager
551 JSDK API
552 JSDK API
553 JSDK Session
554 Native JSDK Session
555 CVM
601 Function Service
602 Modify Service
603 Extend Service
611 Function API
612 Modify API
613 Extend API
621 C/J API
701 Adaptive Function
702 Adaptive Behavior
711 Copy Service
712 Print Service
713 Scan Service
714 Fax Service
721 SAS Service
731 State Machine Pool
732 Modify Agent
733 Plugin Agent
741 Idle状態
742 Print状態
743 印刷開始イベント
744 印刷終了イベント
746 ガード条件オブジェクト
741S Idle状態オブジェクト
742S Print状態オブジェクト
743T 印刷開始オブジェクト
744T 印刷終了オブジェクト
751 Idle状態
752 FaxSend状態
753 送信開始イベント
754 送信終了イベント
760 初期状態
761 Idle状態
762 Send状態
763 Transform状態
764 終期状態
801 Service Registry
802 マニフェストファイル
803 PC
810、820 AspectSM
900、1100 状態遷移情報
1000 StateMachinePoolクラス
1001 StateMachineクラス
1002 StateVertexクラス
1003 Transitクラス
1003a Eventインタフェース
1003b Guardインタフェース
1003c Actionインタフェース
1004 Stateクラス
1004a IStateインタフェース
1004b Activityインタフェース
1005 PseudoStateクラス
1006 InitialStateクラス
1007 FinalStateクラス
1008 PluginAgentクラス
1009 ModifyAgentクラス
DESCRIPTION OF SYMBOLS 101 Compound machine 111 Hardware 112 Software 113 Compound machine starting part 121 Imaging part 122 Printing part 123 Other hardware 131 Application 132 Platform 133 Application program interface 134 Engine interface 135 Virtual application service 141 Copy application 142 Printer application 143 Scanner application 144 Facsimile Application 145 Network file application 146 CSDK application 147 JSDK application 148 JSDK platform 151 Control service 152 System resource manager 153 Handler 161 Network control service 162 Facsimile control service 163 Delivery control service 164 an engine control service 165 a memory control service 166 operation panel control service 167 a certification control service 168 user directory control service 169 system control service 171 a facsimile control unit handler 172 image memory handler 201 controller 202 an operation panel 203 facsimile control unit 211 CPU
212 ASIC
221 NB
222 SB
231 MEM-P
232 MEM-C
233 HDD
234 Memory card slot 235 Memory card 241 NIC
242 USB device 243 IEEE 1394 device 244 Centronics device 301 Document setting unit 302 Paper feed unit 303 Paper discharge unit 311 Touch panel 312 Numeric keypad 313 Start button 314 Reset button 315 Function key 316 Initial setting button 321 ADF
322 Flatbed 323 Flatbed cover 401 OSGi app 402 OSGi service 403 OSGi framework 404 Bundle Activator
411 SAS
421 CSC
501 User application 511 SAS Manager
512 Screen Manager
521 JSDK Environment
531 Xlet Manager
532 Multi Xlet Manager
541 Send Manager
542 Event Manager
543 System Event Manager
544 Panel Manager
545 Install Manager
546 Server / Client Manager
547 Service Manager
551 JSDK API
552 JSDK API
553 JSDK Session
554 Native JSDK Session
555 CVM
601 Function Service
602 Modify Service
603 Extended Service
611 Function API
612 Modify API
613 Extend API
621 C / J API
701 Adaptive Function
702 Adaptive Behavior
711 Copy Service
712 Print Service
713 Scan Service
714 Fax Service
721 SAS Service
731 State Machine Pool
732 Modify Agent
733 Plugin Agent
741 Idle state 742 Print state 743 Print start event 744 Print end event 746 Guard condition object 741S Idle state object 742S Print state object 743T Print start object 744T Print end object 751 Idle state 752 FaxSend state 753 Transmission end event 754 Transmission start event 754 State 761 Idle state 762 Send state 763 Transform state 764 Final state 801 Service Registry
802 Manifest file 803 PC
810, 820 AspectSM
900, 1100 state transition information 1000 StateMachinePool class 1001 StateMachine Class 1002 StateVertex Class 1003 Transit class 1003a Event interface 1003b Guard interface 1003c Action interface 1004 State class 1004a IState interface 1004b Activity interface 1005 Pseudostate class 1006 InitialState Class 1007 FinalState Class 1008 PluginAgent class 1009 ModifyAgent class

Claims (15)

第一のプログラムにサービスを提供し互いに排他的に機器を動作させる複数のモジュールによって構成される第二のプログラムを備える機器であって、
前記各モジュールは、前記第二のプログラムの状態遷移における各状態又は前記各状態間の状態遷移に対応し、
前記状態遷移に対応するモジュールの識別情報と、当該状態遷移の条件と、当該条件を当該モジュールに対して設定する契機を示す情報とが指定された変更情報を記憶する変更情報記憶手段と、
前記第一のプログラムが当該機器に実行させる前記第二のプログラムに対するサービスの提供要求に応じ、当該提供要求が前記契機を示す情報として前記変更情報に指定されている場合に、当該変更情報に指定されている前記条件を、当該変更情報に指定されている前記識別情報に係る前記モジュールに設定する変更手段とを有し、
前記第二のプログラムは、当該第二のプログラムの状態遷移が発生する際は、当該状態遷移に対応する前記モジュールに対して設定されている条件に基づいて、当該状態遷移の可否を当該機器に判定させる機器
Servicing the first program, a device comprising a second program thus constructed into a plurality of modules operating exclusively equipment to each other,
Each of the modules corresponds to each state in the state transition of the second program or a state transition between the states,
Change information storage means for storing change information in which identification information of a module corresponding to the state transition, a condition for the state transition, and information indicating a trigger for setting the condition for the module are specified;
In response to a service provision request for the second program that the first program causes the device to execute, if the provision request is designated in the change information as information indicating the trigger, designated in the change information Change means for setting the condition being set in the module according to the identification information specified in the change information,
When the state transition of the second program occurs, the second program determines whether or not the state transition is possible based on the conditions set for the module corresponding to the state transition. Equipment to be judged .
前記変更情報には、少なくとも前記識別情報に係るモジュールが当該機器を動作させていないときが前記条件の設定のタイミングとして指定されていることを特徴とする請求項記載の機器Wherein the change information equipment according to claim 1, wherein a when a module in accordance with at least the identification information is not allowed to operate the device is designated as the timing of setting of the condition. 前記変更情報には、当該機器を動作させているモジュールを特定することにより前記条件の設定のタイミングが指定されており、
前記変更手段は、前記条件の設定のタイミングとして指定されたモジュールが当該機器を動作させているときに、前記条件の設定のタイミングであると判定することを特徴とする請求項記載の機器
In the change information, the timing of setting the condition is specified by specifying the module that operates the device .
3. The device according to claim 2 , wherein the changing unit determines that it is the setting timing of the condition when the module specified as the setting timing of the condition is operating the device .
前記変更手段は、前記条件の設定のタイミングであると判定するまで前記条件の設定を待機することを特徴とする請求項2又は3記載の機器The changing means, according to claim 2 or 3 device, wherein the waiting configuration of the condition until it is determined that the timing of the setting of the condition. 第変更手段は、前記変更情報に基づいて、前記状態遷移に対してガード条件を設定することを特徴とする請求項1乃至4いずれか一項記載の機器Before the change means on the basis of the change information, according to claim 1 or 4 apparatus according to any one claim and sets the guard condition for the state transition. 前記モジュールは、オブジェクトであることを特徴とする請求項1乃至5いずれか一項記載の機器。The device according to claim 1, wherein the module is an object. 前記契機を示す情報は、当該情報に指定されたメソッドが呼び出されたことを示すことを特徴とする請求項1乃至6いずれか一項記載の機器。  The device according to any one of claims 1 to 6, wherein the information indicating the trigger indicates that a method specified in the information is called. 第一のプログラムにサービスを提供し互いに排他的に機器を動作させる複数のモジュールによって構成される第二のプログラムを備える機器によって実行される情報処理方法であって、
前記各モジュールは、前記第二のプログラムの状態遷移における各状態又は前記各状態間の状態遷移に対応し、
前記第一のプログラムが当該機器に実行させる前記第二のプログラムに対するサービスの提供要求に応じ、変更情報記憶手段が記憶する、前記状態遷移に対応するモジュールの識別情報と、当該状態遷移の条件と、当該条件を当該モジュールに対して設定する契機を示す情報とが指定された変更情報を参照し、当該提供要求が前記契機を示す情報として前記変更情報に指定されている場合に、当該変更情報に指定されている前記条件を、当該変更情報に指定されている前記識別情報に係る前記モジュールに設定する変更手順を有し、
前記第二のプログラムは、当該第二のプログラムの状態遷移が発生する際は、当該状態遷移に対応する前記モジュールに対して設定されている条件に基づいて、当該状態遷移の可否を当該機器に判定させる情報処理方法。
Servicing the first program, an information processing method performed by the device comprising a second program thus constructed into a plurality of modules operating exclusively equipment to each other,
Each of the modules corresponds to each state in the state transition of the second program or a state transition between the states,
In response to a service provision request for the second program that the first program causes the device to execute, the change information storage unit stores the module identification information corresponding to the state transition, the state transition condition, If the change information is specified in the change information as information indicating the trigger, with reference to the change information in which the information indicating the trigger for setting the condition for the module is specified, the change information A change procedure for setting the condition specified in the module related to the identification information specified in the change information,
When the state transition of the second program occurs, the second program determines whether or not the state transition is possible based on the conditions set for the module corresponding to the state transition. Information processing method to be determined .
前記変更情報には、少なくとも前記識別情報に係るモジュールが当該機器を動作させていないときが前記条件の設定のタイミングとして指定されていることを特徴とする請求項記載の情報処理方法。 9. The information processing method according to claim 8 , wherein at least a time when the module related to the identification information is not operating the device is specified as the timing for setting the condition in the change information. 前記変更情報には、当該機器を動作させているモジュールを特定することにより前記条件の設定のタイミングが指定されており、
前記変更手順は、前記条件の設定のタイミングとして指定されたモジュールが当該機器を動作させているときに、前記条件の設定のタイミングであると判定することを特徴とする請求項記載の情報処理方法。
In the change information, the timing of setting the condition is specified by specifying the module that operates the device .
10. The information processing according to claim 9 , wherein the changing procedure determines that it is the setting timing of the condition when the module specified as the setting timing of the condition is operating the device. Method.
前記変更手順は、前記条件の設定のタイミングであると判定するまで前記条件の設定を待機することを特徴とする請求項9又は10記載の情報処理方法。 11. The information processing method according to claim 9 , wherein the change procedure waits for setting of the condition until it is determined that it is a timing for setting the condition . 第変更手順は、前記変更情報に基づいて、前記状態遷移に対してガード条件を設定することを特徴とすることを特徴とする請求項8乃至11いずれか一項記載の情報処理方法。 12. The information processing method according to claim 8 , wherein the previous change procedure sets a guard condition for the state transition based on the change information. 前記モジュールは、オブジェクトであることを特徴とする請求項8乃至12いずれか一項記載の情報処理方法。The information processing method according to claim 8, wherein the module is an object. 請求項8乃至13いずれか一項記載の情報処理方法をコンピュータに実行させるための情報処理プログラム。 An information processing program for causing a computer to execute the information processing method according to claim 8 . 請求項14記載の情報処理プログラムを記録したコンピュータ読取可能な記録媒体。 A computer-readable recording medium on which the information processing program according to claim 14 is recorded.
JP2006243221A 2005-09-16 2006-09-07 Apparatus, information processing method, information processing program, and recording medium Expired - Fee Related JP5025193B2 (en)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2006243221A JP5025193B2 (en) 2005-09-16 2006-09-07 Apparatus, information processing method, information processing program, and recording medium
US11/521,495 US9141374B2 (en) 2005-09-16 2006-09-15 Image forming device, information processing method, information processing program, and recording medium

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP2005270265 2005-09-16
JP2005270265 2005-09-16
JP2006243221A JP5025193B2 (en) 2005-09-16 2006-09-07 Apparatus, information processing method, information processing program, and recording medium

Publications (2)

Publication Number Publication Date
JP2007109219A JP2007109219A (en) 2007-04-26
JP5025193B2 true JP5025193B2 (en) 2012-09-12

Family

ID=38035009

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006243221A Expired - Fee Related JP5025193B2 (en) 2005-09-16 2006-09-07 Apparatus, information processing method, information processing program, and recording medium

Country Status (1)

Country Link
JP (1) JP5025193B2 (en)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5078660B2 (en) 2008-02-20 2012-11-21 株式会社リコー Authentication control apparatus, authentication control method, and program
JP5699500B2 (en) 2010-09-16 2015-04-08 株式会社リコー Installation program, installation method, image forming apparatus, and recording medium
JP5786535B2 (en) 2011-08-08 2015-09-30 株式会社リコー Apparatus, information processing method, information processing program, and recording medium

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002244877A (en) * 2001-02-19 2002-08-30 Nec Corp Printer device and program updating method for the same
JP4121333B2 (en) * 2001-08-27 2008-07-23 株式会社リコー Image forming apparatus, program update method, and recording medium
JP4365148B2 (en) * 2002-07-19 2009-11-18 株式会社リコー Image forming apparatus, wrapping processing method, and program
US20040025165A1 (en) * 2002-08-05 2004-02-05 Giuseppe Desoli Systems and methods for extending operating system functionality for an application
JP2004312711A (en) * 2003-03-25 2004-11-04 Ricoh Co Ltd Image forming apparatus and method for operating image forming apparatus by using remote application
US8432562B2 (en) * 2004-02-17 2013-04-30 Ricoh Company, Ltd. Image processing apparatus, method, program, and computer readable recording medium for controlling operation switching and displaying at occurrence of error conditions
JP2005250974A (en) * 2004-03-05 2005-09-15 Ricoh Co Ltd Apparatus, method and program for software development, software, recording medium, image forming apparatus, and electric apparatus
JP2006085493A (en) * 2004-09-16 2006-03-30 Ricoh Co Ltd Screen transition control program and image formation device

Also Published As

Publication number Publication date
JP2007109219A (en) 2007-04-26

Similar Documents

Publication Publication Date Title
JP4791910B2 (en) Image forming apparatus, information processing method, information processing program, and recording medium
US8264717B2 (en) Image forming apparatus, information processing apparatus, information processing method, information processing program and storage medium
JP5025192B2 (en) Apparatus, information processing method, information processing program, and recording medium
JP4625343B2 (en) Image forming apparatus, terminal apparatus, information processing method, information processing program, and recording medium
JP4597834B2 (en) Image forming apparatus, information processing method, information processing program, and recording medium
US9141374B2 (en) Image forming device, information processing method, information processing program, and recording medium
US20040109188A1 (en) Image forming apparatus and methods used in the image forming apparatus
EP1564601A2 (en) Image forming apparatus, terminal apparatus, information processing method, information processing program and computer readable recording medium
JP4843386B2 (en) Apparatus, information processing method, information processing program, and recording medium
JP4832226B2 (en) Apparatus, information processing method, information processing program, and recording medium
JP2006109411A (en) Application execution method, information processor, image forming apparatus, application execution program, terminal device, information processing method, information processing program, and storage medium
JP2006222569A (en) Image forming apparatus, information processing method, information processing program and recording medium
JP2007048270A (en) Image forming apparatus, information processing apparatus, information processing method, information processing program and recording medium
JP5664692B2 (en) Electronic device, image forming apparatus, information processing method, information processing program, and recording medium
JP5025193B2 (en) Apparatus, information processing method, information processing program, and recording medium
JP5246299B2 (en) Apparatus, information processing system, information processing method, information processing program, and recording medium
JP2006079211A (en) Image formation apparatus, information processing method, information processing program and recording medium
JP4459033B2 (en) Image forming apparatus, terminal apparatus, information processing method, information processing program, and recording medium
JP5565439B2 (en) Apparatus, information processing method, information processing program, and recording medium
JP2005269439A (en) Image forming apparatus, information processing method, information processing program, and recording medium
JP2011101422A (en) Image forming apparatus, information processing method, program, and recording medium
JP5418543B2 (en) Terminal device, information processing method, information processing program, recording medium, and information processing system
JP5648723B2 (en) Apparatus, information processing method, program, recording medium, and information processing system
JP2011120250A (en) Terminal equipment, information processing method, information processing program, and computer-readable storage medium

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20090521

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20111026

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20111122

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120113

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: 20120522

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: 20120619

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

Free format text: PAYMENT UNTIL: 20150629

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 5025193

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees