1. Field of the Invention
This invention relates to an image forming apparatus, an application management method, and a computer readable recording medium having an application management program.
2. Description of the Related Art
In recent years, image forming apparatuses such as multi-function apparatuses achieving functions of a printer, a copier, a scanner, a facsimile, or the like have included conventional computers as well as CPUs (central processing units), and each function having been provided by controlling applications in spite of limitations such as memory capacity or the like.
For example, in an image forming apparatus described in the patent document 1 (Japanese Patent No. 3679349), the image forming apparatus includes functions commonly used by each of applications as a platform, and by using an application program interface (API) of the platform, the image forming apparatus can include the applications. Such an image forming apparatus can improve an efficiency of developing total applications because commonly used functions are provided in the image forming apparatus as the platform, so that duplicating functions can be avoided.
However, in general, a platform including a commonly used API tends to have difficulty that does not improve the efficiency of the application development when functions or each of interface grain sizes provided by the platform is not properly designed.
For example, when each grain size is too small, the source code of an application becomes complicated because a large number of APIs need to be requested to process the application even though the application only provides a simple service.
On the other hand, when each grain size is too big, development man-hours can be increased as the platform needs to be modified within the platform itself, when one desires installing an application serving a function for which part of the function provided by an interface is modified. Particularly, when each module in the platform depends on other modules, not only additional new functions but also modifying existing parts in the platform are required. This would make everything complicated.
Also, when one requires mounting applications by modifying part (for example, input process of an image) of a service provided with existing applications, the existing applications cannot be used as the rest of the part of the service. Therefore, new source code needs to be written to generate new applications for mounting
The present invention is carried out by considering the above difficulties, and this invention may provide an image forming apparatus, an application management method, and a computer readable recording medium which are capable of customizing functions and simplifying expandability of the functions.
According to one aspect of the present embodiment of the invention, an image forming apparatus includes an output order control unit, wherein an application executed in the image forming apparatus is constructed by connection of a first software unit executing at least a process related to input of image data and a plurality of second software units executing a process related to output of the image data, and wherein the output order control unit controls an execution order of the plural second software units, based on output order information indicating the execution order of the plural second software units.
According to another aspect of the present embodiment of the invention, an image forming control method includes the steps of (a) executing at least a process related to input of image data using a first software unit; (b) executing a process related to output of the image data using a plurality of second software units; and (c) controlling an execution order of the plural second software units, based on output order information indicating the execution order of the plural second software units.
According to another aspect of the present embodiment of the invention, a computer readable recording medium having instructions executable by a computer to execute an image forming control includes executing at least a process related to input of image data using a first software unit; executing a process related to output of the image data using a plurality of second software units; and controlling an execution order of the plural second software units, based on output order information indicating the execution order of the plural second software units.
Customizing functions and extending functions may be simply provided by this image forming apparatus.
Accordingly, the present invention may provide an image forming apparatus capable of customizing functions or extending functions of applications, methods of application management, and application management programs.
Other objects, features and advantages of the present invention will become more apparent from the following detailed description when read in conjunction with the accompanying drawings.
FIG, 26 shows a flowchart for describing a switching process to resource release propriety judgment and interruption state of document operation job by document operation job object;
In the following, embodiments of this invention are described with reference to the figures.
As shown in
The interface layer 10 includes a function to receive an execution request of other functions (for example, copying, printing, scanning, sending FAX), such as a communication server 11 and a local UI part 12. The communication server 11 receives a request via a network from a client PC (Personal Computer, not shown) or the like. For example, the local UI part 12 receives a request input with an operation panel (not shown). The request received by the user interface layer 10 is sent to the control layer 20.
The control layer 20 includes a control function to perform a requested function, such as a plug-in management part 21 and a request management part 22. The plug-in management part 21 controls processes (plug-in process) of setting an activity 31 and filters of the application logic layer 30 to an available state. The request management part 22 controls a process to perform functions of the multi-function apparatus 1 in response to a request received by the user interface layer 10. Further, in the embodiment of this invention, “a function of the multi-function apparatus 1” corresponds to a unit service (from a request input to a finally obtained output) serving a series of services to a user by the multi function apparatus 1, and corresponds to an application serving a series of service as a unit software.
The application logic 30 includes a group of parts that individually perform a part of the functions provided with the multi-function apparatus 1. In short, a function is performed by combining the parts of the application logic 30. In the present embodiment, each part is named as “a filter”, which is based on a concept that software architecture of the multi-function apparatus 1 is called “pipe & filter.”
Therefore, for the multi-function apparatus 1 of this embodiment, each function is treated as a series of “conversions” to a document (data). Each function of the multi-function apparatus 1 is generalized as a structure constructed with an input, a process, and an output of a document. When the “input”, “process”, and “output” are treated as a “conversion”, a software part performing a single “conversion” forms a filter. A filter inputting a data from a device is specifically called an “input filter.” Also, a filter processing (image processing or the like) data is named as a “conversion filter.” Further, a filter outputting data to a device is called an “output filter.” In this case, each filter is separated and there is no mutual dependence between the filters (call-relation). Therefore, each filter may be added (installation) or deleted (uninstallation) as a unit.
In
The read filter 301 controls a scanner reading image data and outputs the image data read by the scanner. The saved document read filter 302 reads document data (image data) from a memory device of the multi-function apparatus 1 and outputs the read data. The mail receive filter 303 receives an e-mail and outputs data included in the e-mail. The fax receive filter 304 controls receiving a FAX and outputs received data. The PC document receive filter 305 receives print data from a PC (not shown) and outputs the received print data. The report filter 306 outputs setting information, operation history information or the like of the multi-function apparatus l, for example, as data formatted to a table.
Also, a document process filter 311 and a document converter filter 312 belong to converter filters. The document process filter 311 performs a predetermined image conversion process (summary, enlargement, reduction or the like) for input data and outputs the results. The document converter filter 312 performs a rendering process. In short, input PostScript data are converted to bit map data.
Also, an output filter includes a print filter 321, a saved document registration filter 322, a mail sending filter 323r a FAX sending filter 324, a PC document sending filter 325, and a preview filter 326.
The print filter 321 outputs (print) input data with a plotter. The saved document registration filter 322 saves input data into a hard disk in the multi-function apparatus 1. The mail sending filter 323 sends input data with e-mail as an attachment. The FAX sending filter 324 sends input data via a FAX. The PC document sending filter 325 sends input data to a client PC. The preview filter 326 displays input data on an operational panel of the multi-function apparatus 1.
For example, each function of the multi-function apparatus 1 is performed by the following combination of filters.
As an example, a copy function is performed by connecting the read filter 301 and the printing filter 321. Image data is read from a manuscript by the reading filter 301 and printed by the print filter 321. Further, if the copy function is requested to perform summation, enlargement, or reduction of an image, the document process filter 311 is inserted between the two filters.
The printing function (printing function from a client PC) is achieved by connecting the PC document receive filter 305, the document conversion filter 312 and the print filter 321. A scan-to-email function (function of forwarding a scanned image via an e-mail) is achieved by connecting the read filter 301 and the mail sending filter 323. A FAX sending function is achieved by connecting the read filter 301 and the FAX sending filter 324. A FAX receiving function is achieved by connecting the FAX receiving filter 304 and the print filter 321. A document box store function (function of storing scanned image data in the multi-function apparatus 1) is achieved by connecting the read filter 301 and the saved document registration filter 322. A document box print function (function of printing image data saved in the multi-function apparatus 1) is achieved by connecting the saved document read filter 302 and the print filter 321.
In
Further, suppose that a new function is to be performed. First, as a function 1, suppose that when a print function of printing print data being sent from a client PC is achieved by PDL (Page Description Language, hereafter, “outside PDL”) which is not compatible to the multi-function apparatus 1. In such case, the print function of
Next, as a function 2, suppose that information is collected from Web sites and the collected information is to be printed by the function (hereafter, “function 2”). In that case, there is no filter collecting information from Web sites. Thus, it is at least necessary to newly construct an input filter (hereafter “Web collecting filter”). Further, since the function 2 is required to print, the print filter 321 is suitable to use as an output filter. In such a case, there may be a problem of how the Web collecting filter and the print filter 321 are connected. The input data of the print filter 321 needs to be in a rendering bitmap format. However, it is not suitable to construct the rendering function within the Web collecting filter because such construction needs man-hours. Then, it is considered whether to use the document converter filter 312 that performs the rendering function. Even in such a case, the input data of the document converter filter 312 needs to be in PostScript format. If the Web collecting filter is configured to output with PostScript format, it becomes possible to connect between the Web collecting filter and the document converter filter 312. When the Web collecting filter is configured in this manner, the function 2 can be achieved by connecting the Web collecting filter, the document converter filter 312 and the print filter 321.
Thus, since the multi-function apparatus 1 is configured to include each function as each filter, customizing functions and extending functions can simply be carried out. In short, since there is no functional dependence between respective filters, independence is maintained, and additional functions (applications) can be easily developed by adding a new filter or modifying combination of filters. Therefore, when a new application is requested to be constructed and part of the new application is not included in the multi-function apparatus 1, only a filter needs to be developed to achieve the process of the part of the new application and the filter may be installed in the multi-function apparatus 1. Accordingly, for layers below the control layer 20 and the application logic layer 30, frequent modifications needed in response to construction of new applications may be reduced and a stable platform can be provided.
The application layer 30 also includes a filter management part 33. The filter management part 33 manages list information of filters installed in the multi-function apparatus 1 or the like. The list information is, for example, recorded in a memory area (memory area of a memory device) managed by the filter management part 33 when filters are installed in the multi-function apparatus 1.
The application layer 30 further includes activity 31. “Activity” is software performing one “function” (a unit service or an application provided by the multi-function apparatus 1 for a user) by combining multiple filters.
Specifically, filters have independence, so that a dynamic combination of filters (application) is possible. More specifically, functions favorable to a user may be performed by the user who sets filters to be used, executing sequences of the filters and operating condition of each filter via an operation panel of the multi-function apparatus 1 every time the multi-function apparatus 1 receives a request for performing a job.
However, for a function frequently used like a copy function, it is complicated for the user to select filters and instruct execution every time. Such a problem is solved by activity 31. In short, once the combination of filters is predetermined as the activity 31, the user can select the activity 31 as a unit executable object. The selected activity 31 automatically executes respective filters combined as a predetermination by the activity 31. Therefore, the activity 31 can reduce the complicated operation for the user and provide easy operation which is similar to conventional user interfaces, where the executable object is selected as a unit application.
In the figure, as the activity 31, copy activity 31a, printer activity 31b, and multi document activity 31c and the like are shown as an example.
The copy activity 31a is achieved by combining the read filter 301, the document process filter 311 and the print filter 321 and performs the copy function (copy application) as one of the activities 31.
The print activity 31b is achieved by combining the PC document receiving filter 305, the document converter filter 312 and the print filter 321 and performs the print function (print application) as one of the activities 31.
The multi document activity 31c is capable of individually combining an input filter, a converter filter and an output filter for each document as one of the activities 31.
Further, each activity 31 is independent from each other, and basically there is no dependence (call-answer relation) between the activities 31. Therefore, a single activity 31 can be added (install) or deleted (uninstall) as a unit. Then, without the activity 31 shown in
For executing the activity 31, a filter to be used is not fixed (not always the same) and may be changed according to the operating condition set to the activity 31.
A device service layer 40 is constructed with lower functions that are commonly used by each filter such as each activity 31 in the application logic layer 30. For example, an image pipe 41, a data management part 42, a pipe management part 43 and the like are included in the device service layer 40. The image pipe 41 achieves the pipe function described above. In short, the image pipe 41 transfers output data of a filter to another filter. The data management part 42 describes each database, corresponding to, such as, database registered with user information, database stored with documents, image data and the like. The pipe management part 43 manages list information of types of pipes available in the multi-function apparatus 1 or the like. As described below, there are different types of pipes. The list information is, for example, stored in a memory area (on area of a memory device) managed by the pipe management part 43.
A device control layer 50 is constructed with program module groups controlling devices (hardware) called drivers including, for example, a scanner control part 51, a plotter control part 52, a memory control part 53, a TEL line control part 54, and a network control part 55.
Filters and the activity 31 are described below in more detail.
The filter setting UI is a program to display filter operational condition and the like on the operation panel or the like. For example, for a read filter 301, resolution, density, a setting display of image types and or the like correspond to the filter setting UI. Further, since the display on the operational panel is based on HTML data or the script, the filter setting UI may be HTML data or the script.
The filter logic is a program provided with logic to achieve functions of a filter. In short, by using the filter specific lower service, the device service layer 40, the device control layer 51 or the like, the function of a filter is achieved according to the operational condition set via the filter setting UI. For example, for the read filter 301, logic of controlling reading a manuscript by a scanner corresponds to the filter logic.
The filter specific lower service is a lower function (library) required to achieve filter logic. Namely, the filter specific lower service corresponds to a function of the device service layer 40 or the device control layer 50. When a function of the filter specific lower service is not used by other filters, the function may be used as part of a filter, and the part of the filter corresponds to the filter specific lower service. In the read filter 301, the function controlling a scanner corresponds to the filter specific lower service, and in this embodiment, the function is installed as the scanner control part 51 in the device control layer 50. Therefore, the read filter 301 may not always need the filter specific lower service.
The long term memory area information is a schema definition of data such as setting information (e.g. default values of operation condition) for a filter required to be stored in a nonvolatile memory. The schema definition is registered in the data management part 42 when the filter is installed.
The activity UI is a program or information to display a screen (e.g. a setting screen for setting the operational conditions or the like of the activity 31) regarding the activity 31 on an operational panel or the like.
The activity logic is a program in which process contents of the activity 31 are installed. Basically, logic related to combination of filters (e.g., execution sequence of filters, settings related to plural filters, modification of connections of filters, error processing or the like) are installed in the activity logic.
The long term memory area information corresponds to schema definition of data for the activity 31 required to save in a nonvolatile memory, such as setting information (e.g. default values of operational condition) or the like. The schema definition is registered in the data management part 42 when the activity 31 is installed.
As shown in
In
The application logic class 410 is an instance which expresses the activity logic of the activity 31, and manages operation condition and jobs of the activity 31. By corresponding to such management functions, the activity logic class 410 integrates the document operation condition class 420 and the document operation job class 430, respectively, by one-to-multiplicity correspondence. In this case, “job of the activity 31” is defined as a series of processes completing the functions of the activity 31, which is called specifically “document operation job” in this embodiment. For example, when the activity 31 constitutes one input filter, one converter filter and one output filter, an entire process from a start process to an end process achieved by connecting these three filters corresponds to one document operation job.
The document operation condition class 420 is one instance and corresponds to one of activities 31 that describes and manages operation condition. In short, the operation condition set by the activity 31 is saved with the document operation condition object.
A function connector class 440 plays two roles. A function connector object transformed to an instance for performing the first role manages connecting relations between filters utilized by the activity 31. A function connector object transformed to an instance for performing the second role manages an executing order (output order) of respective output filters, when the activity 31 constitutes two or more output filters (hereafter, such activity is called as “multiple outputs activity”).
Next, the execution order (output order) of the output filters is described.
In
Further, in
The document job class 430 is a class controlling a document operation job. The document operation job class 430 integrates a job start trigger class 450 with one-to-multiplicity correspondence.
The job start trigger class 450 is a class that manages the output order when the output order needs to be controlled for the multiple output activity 31.
A job status notice destination class 460 is an abstract class defined by an interface for receiving a job status notice of a filter from the filter. A class required to receive a job status notice of the filter succeeds the job status notice destination class 460. In this embodiment, the document operation job class 439 and the job start trigger 450 are succeeded by the interface of the job status notice destination class 460. Further, a job of a filter is a process executed by one filter and is specifically called as “filter job” in this embodiment.
On the other hand, in
The filter logic class 510 is a class that describes filter logic and manages operation condition and filter jobs of filters. By corresponding to such management functions, the filter logic class 510 integrates the filter condition class 520 and the filter job class 530 with one-to-multiplicity correspondence. The filter condition class 520 is a class that describes the operation condition and manages the operation condition with one instance corresponding to one filter. Therefore, the operation condition set in the filter is maintained at the filter condition class 520.
The filter job class 530 manages filter jobs.
The pipe job class 540 manages pipe jobs (transmittance of data between filters by pipes).
The filter job class 530 includes two associations (associated to r12 and r13) to the pipe job class 540 with one-to-multiplicity correspondence. The association r12 associates with a pipe job object of a pipe as “data source (data input side to the filter)”. The association r13 associates with a pipe job object of a pipe as “data sink (data output side to the filter)”.
As described above, the activity logic and the filter logic include a common part, since both are constituted by classes that mainly manage the operation condition and control the jobs. By referring to
The document operation condition class 420 integrates the filter condition class 520 by two associations (association r3 and association r4) with one-to-multiplicity correspondence. This integrated relation indicates that the operation condition of the activity 31 is constituted by integration of the operation condition of individual filters used by the activity 31. The association r3 associates with the filter condition object of “usable filter” and the association r4 associates with the filter condition object of “functional filter”. The term “usable filter” indicates that the activity 31 statically utilizes the filter (i.e., the filter possibly being used) which can be varied for the activity 31. Therefore, the association r3 indicates that association to the filter condition object of a filter that is possibly utilized by the activity 31. The term “functional filter” indicates that the activity 31 dynamically utilizes the filter (i.e. filter actually being used). Therefore, the association r4 associates to the filter condition object that is actually used by the activity 31. Further, the “functional filter” is selected from “usable filter” according to the operation condition of the activity 31.
The function connector class 440 includes association r5 and association r6 to the filter condition class 520. The association r5 associates with filter condition object of “advance step filter” and r5 associates with filter condition object of “back step filter”. The meanings of “advance stop filter” and “back step filter” vary with roles of the function connector object. For example, when the function connector object manages connecting relations between filters, “advance step filter” indicates that the “advance step filter” is connected to locate at an advanced position in the connecting relation between filters, and “back step filter” indicates that the “back step filter” is connected to locate at a backward position in the connecting relation between filters. Also, when the function connector object manages output order, “advance step filter” indicates an output filter in which the “advance step filter” is executed in advance, and “back step filter” indicates an output filter in which the “back step filter” is executed later.
The document operation job class 430 integrates the filter job class 530 using two associations (association r7 and association r8) by one-to-multiplicity correspondence. This integrating relation indicates that the document operation job is constituted by assembly of filter jobs of individual filters used by the activity 31. The association r7 associates with a filter job object regarding a “job for controlled object”, and the association r8 associates with a filter job object regarding a “initial executing output job”. The “job for controlled object” is each filter job to be executed according to execution of a document operation job. The “initial executing output job” is an object to be instructed for starting execution the first time in response to the start of execution of the document operation job. As described later, once execution of the document operation job is started, the execution of the jobs are started in parallel to respective filters that are used by the activity 31. In a case where the output order is preset for output filters corresponding to the output filters, a start execution is instructed to the first output filter based on the output order. Therefore, the association r8 associates with the filter job object corresponding to the first output filter based on the output order. The association r8 between the document operation job class 430 and the filter job class 530 is one-to-multiplicity correspondence. Thus, the “initial executing output job” may exist for one document operation job.
The document operation job class 430 also includes association r11 for the document operation condition class 420 with one-to-multiplicity correspondence. Therefore, the document operation job object can maintain association for a corresponding document condition object.
The job start trigger class 430 includes association r9 and association r10 for the file job class 530. The association r9 associates with a folder job object 530 relating to “ready for end of event” and the association r10 associates with a folder job object 530 relating to “object of job start instruction”. When the job start trigger object 450 receives a notice of end of event of the filter job from the filter job object 530 of “ready for end of event”, the job start trigger object 450 instructs the filter object 530 of “object of job start instruction” to start a job. In other words, the filter job object of “ready for end of event” is a filter job object of an output filter executed in advance based on the output order. A filter job object of “object of job start instruction” is a file job object of an output filter to be executed later based on the output order. Namely, the output order is managed by the association r9 and the association r10. Further, the job start trigger class 450 includes association r9 and association r10 to the filter job class 530 with one-to-multiplicity correspondence. Therefore, one job start trigger object may set plural filter job objects 530 as ready for end of event, and the plural filter job objects 530 may be set as objects of job start instruction. Specifically, when the activity 31 utilizes three output filters, for example, two of the output filters may be set to wait for an end job and the other filter may be set to start executing job in response to the end of the filter job of the one filter, filter jobs of the other two filters may be started for execution.
The filter job class 530 integrates a job status notice destination. By this association, the filter job class 530 indentifies a notice destination of a change in job status (end of a job or the like). Further, as described above, the job status notice destination 460 is an abstract class in which an interface is only defined, and the document operation job class 430 and the job start trigger class 450 succeed the interface. Thus, a notice of change in the job status from the filter job object 530 is notified to the actual document operation job object 430 or the job start trigger object 450. In this case, by the job status notice destination class 460, the actual notice destination is hidden to the filter job class 530. Therefore, the filter job object 530 does not need to recognize the actual notice destination.
Further, the class diagram in
Based on the class diagram indicated in
The read filter 301 is connected to the document process filters 311a and 311b. The document process fitter 311a is connected to the print filter 321. The document process filter 311b is connected to the stored document registration filter 322.
By connecting the read filter 301, the document filter 311a and the print filter 321, printing scanned image data, that is, a copy function can be performed. Further, by connecting the read filter 301, the document process filter 311b, and the stored document registration filter 322, a storing function storing scanned image date into a HDD (hard disk drive) can be performed. In this manner, the copy accumulating function is a plural output function utilizing two output filters that have parallel relation.
The operation condition of such a copy accumulating function is described by the following object constitution based on the class diagram of
As shown in FIG, 9(B), the operation condition of the copy accumulating function of the copy activity 31a includes a copy accumulation condition object 421 as a document operation condition object corresponding to the copy activity 31a. Also, the operation condition of the copy accumulating function of the copy activity 31a includes a read condition object 521, a process A condition object 522, a print condition object 523, a process B condition object 524, and a stored condition object 525 as a filter condition object to correspond, respectively, to the read filter 301, the document process filter 311a, the print filter 321, the document process filter 311b, and the stored document registration filter 322. Further, as a function connector object which connects to a filter condition object corresponding to each filter in response to each connecting relation, the operation condition of the copy accumulating function of the copy activity 31a includes a filter condition object 441, a filter connection object 442, a filter connection object 443, and a filter connection object 444. Further, as a function connector object which manages the execution order between the print filter 321 and the stored document registration filter 322 based on the relation between the print condition object 523 and the stored condition object 525, the operation condition of the copy accumulating function of the copy activity 31a includes an output order object 445. Further, each connecting line indicates an association between the objects.
The object structure of
Also,
As indicated in
The object structure of
In the following, process sequences of the multi-function apparatus 1 are described based on the software described above.
First, a start instruction of a document operation is input (S11) by a user with an operation panel of the multi-function apparatus 1. The instruction corresponds, for example, to a selection of the activity 31 which is an object to be executed. Next, the selected activity 31 (hereafter, referred as “current activity”) generates (S12) a model of a document operation condition. Specifically, the current activity generates, based on the class constitution indicated in
Next, after the current activity is set (S13) with the operation panel by the user, the current activity reflects the set content to the condition tree (S14). Specifically, the current activity modifies the structure of the condition tree and the attribute value of each object constituting the condition tree.
For example, the modification of the condition tree is performed when a filter is newly added, when an unnecessary filter is generated, or when the output order is set for plural outputs, according to the operation condition. When a filter is newly added, a filter condition object corresponding to the filter is transferred to instances and added to the condition tree. When an unnecessary filter is generated, a filter condition object corresponding to the filter is eliminated from the condition tree. When the output order is set, a function connector object corresponding to the output order is transferred to instances and added to the condition tree.
Further, for example, changing the attribute value of each object is carried out when a filter operation condition is modified. In this case, for a filter condition object corresponding to the filter, the attribute value corresponding to the modified parameter (e.g. reading resolution for the read filter 301) is modified.
After setting the operation condition, when a document operation job is instructed to execute the current activity (S15) by pressing a start button by a user, the request management part 22 generates a job tree based on the condition tree (S16).
In short, as indicated in
Further, as shown in
Further, as shown in
Also, as shown in
According to such a process, a job tree is generated based on the condition tree.
Next, the current activity starts executing the document operation job (S17,
The processes described with an activity diagram of
When a user selects a copy accumulation function of the copy activity 31a with the operation panel, the local UI part 12 requests (the activity UI is described in
The application logic definiteness 410C generates a copy accumulation condition object 421 as an instance of the document operation condition class 420 (S104,
Next, similar processes described in the steps S105-S109 are applied to filter logics of the document process filter 311 and the print filter 321 for steps S113-S119. Thereby, a process A condition object 522 and a print condition object 523 are generated and an association is formed between the filter condition object and the copy accumulation condition object 421.
Next, the application logic definiteness 410C obtains a filter condition object list (hereafter “filter condition list”) associated as “available filter” from the copy accumulation object 421 (S120, S121). Next, the application logic definiteness 410C establishes status notice destinations (S122-8124) for each filter condition object (read condition object 521, process A condition object 522, and print condition object 523) which is included in the filter condition list.
In the next step, the application logic definiteness 410C adds (registers) a function connector object (connection object 441 in
According to the above description, the condition tree generation of
The request management part 22 generates a request object 2201 (S129,
The activity UI 32a generates a UI content displaying the operation condition as an initial predetermined value obtained according to the condition tree based on the copy accumulation condition object 421, and returns the UI content to the local UI part 12 (S134,
The local UI part displays a setting screen of the copy accumulation function on the operation panel of the multi-function apparatus 1 based on the UI content. At this stage, the operation condition (condition tree) has been generated as the predetermined value of the copy accumulation function. Therefore, after this stage, when modification is carried out for the operation condition via the setting display, the condition tree can be modified according to the modification.
Further, the rest of part of
Also, the condition tree constitution as a predetermined value may be directly defined (hard coding) to the application logic definiteness 410C. For example, for an editable file, the condition tree constitution may be defined with a predetermined format (e.g. XML (Extensible Markup Language) format). In the later case, as the condition tree is constructed by the application logic definiteness 410C based on the predetermined information in the file, performing a modification of the condition tree constitution as a predetermined value becomes possible without modifying source code.
Next, processes are described where a job tree is generated based on a condition tree and a job is executed based on the job tree.
When a start button of the operation panel on the multi-function apparatus 1 is pressed, the local UI part 12 notices the UI content 1201 about the button being pressed (S201,
Next, the request management part 22 inquires an authority judgment part 61 about the existence of an operation authority of the copy accumulation function by a user (S203,
Next, the request management part 22 executes obligation process assigned based on the judgment result of the authority judgment part 61 (S205,
First, the request management part 22 obtains an application name of the copy accumulation function from the copy accumulation condition F/W 421F, which is part of a framework of the copy accumulation condition object 421 and is registered on a request object 2201 (S207, S208,
Next, the request management part 22 requests (S210) the obtained copy accumulation condition F/W 410F of the application logic object to generate a job (job tree). The application logic F/W 410F requests (S211) the application logic definiteness 410C to generate authority information (information on function and resource for use) according to the established operation condition (condition tree). The application logic definiteness 410C generates authority information and returns the authority information to the application logic F/W 410F (S212).
Next, the application logic F/W 410F inquires the authority judgment part 61 about existence of authority according to the operation condition based on the authority information (S213). When a judgment result of the authority is returned from the authority judgment part 61 (S214), the application logic F/W 410F executes process related to the obligation assigned with the judgment result (S215). The application logic F/W 410F requests the application logic definiteness 410C to generate a document operation job object corresponding to the copy accumulation function (S216). The application logic definiteness 410C generates the copy accumulation job object 431 as the document operation object corresponding to the copy accumulation function, and returns the copy accumulation job object 431 to the application logic F/W 410F (S217). In this case, the copy accumulation object 431 is an instance of a subclass succeeding the document operation job class 430 which is part of the framework. In
Next, the application logic F/W 410F returns the generated copy accumulation job object 431 to the request management part 22 (S218). At this stage, only the root job part of the job tree is generated.
Next, the request management part 22 requests the copy accumulation condition F/W 421F to acquire a filter condition object list (filter condition list) (S219). For condition tree, the copy accumulation condition F/W 421F returns the filter condition object list associated with the copy accumulation condition object 421 (S220).
The request management part 22 determines one of the filter condition objects included in the filter condition list as an object to be processed (the read condition object 521 is set as an object to be processed in this case), and obtains a filter name from the read condition object 521 (S221, S222,
Next, the request management part 22 registers the corresponding filter condition object (read condition object 521) to the read job object 531. The request management part 22 records (save) the read condition object 521 and the information (correspondence information) indicating corresponding relation between the read job object 531 generated in response to the read condition object 521 in a recording device (S229).
The steps S221-S239 are performed (loop 1) for each filter condition object (i.e. each filter condition object constituting the condition tree) included in the obtained filter condition list at the step S220. As a result, each filter job object (e.g. the process A job object 532, the print job object 533 or the like omitted in
The correspondence relation 2202, for example, specifically, may be constituted by holding the correspondence relation between the reference information (pointer information or the like) of each object and the identification information (ID or the like).
In the following, when “correspondence” is used in the relation between the filter condition object and the filter job object, the correspondence relation indicates correspondence relation identified based on the correspondence information 2202. Thus, when mentioning that file job object “corresponds” to filter condition object, the filter job object is regarded as being generated based on the filter condition object, that is, the filter job object is related to an identical filter that is related to that filter condition object.
Next, the request management part 22 requests the copy accumulation condition F/W 421F to obtain the function connector object list (
Next, the request management part 22 requests (S242) the current function connector object to obtain a “advance step filter”, in which one of the function connector objects 440F included in the function connector list is supposed to be an object being processed. The current function connector object returns (S243) a filter condition object associated with the current function connector object itself as “advance step filter”. Next, the request management part 22 requests (S244) the current function connector object to obtain a “back step filter”. The current function connector object returns (S245) a filter condition object associated with current function connector object itself as “back step filter”. For example, when the current function object is the filter connector object 441 (see
Next, the request management part 22 requests (S246) the pipe management part 43 to obtain a pipe corresponding to the combination designating the filter condition object related to “advance step filter” and the filter condition object related to “back step filter”. The pipe management part 43 determines a corresponding pipe based on the designated combination “advance step filter” and “back step filter”. In short, the entity of the pipe is a memory (including HDD (Hard Disk Drive)), but the used memory type is varied in accordance with filters at both ends of the pipe. The correspondence relation is, for example, defined in the HDD of the multi-function apparatus 1 as shown in
Thus, the pipe management part 43 determines a pipe to connect any identified two filters based on the correspondence table 60, and returns the image pipe 41 corresponding to the pipe to the request management part 22 (S247).
Next, the request management part 22 requests (S248,
Further, the request management part 22 indentifies a filter job object (read job object 531) of “advance step filter” and the pipe job object, and requests (S250,
Next, the request management part 22 indentifies the filter job object (the process A job object 531) of “back step filter” and the pipe job object and requests (S251,
Further, the steps S242-S251 are executed (loop2) for each function connector object (i.e. each function connector object constituting the condition tree) in the step S241. As a result, the association r12 and the association r13 are formed between each filter job object and each pipe job object (i.e. each filter job object is connected with the proper pipe object).
Next, the request management part 22 indentifies one filter condition object (e.g. the read condition object 521) included in the filter condition list, and inquires of the filter logic object (e.g. the read logic object 511) corresponding to the filter condition object whether the filter condition object is effective (S252,
The request management part 22 registers the filter job object (e.g. the read job object 531 when the filter condition object is the read job condition object 521) corresponding to the filter condition object on the copy accumulation job F/W 431F (S254,
Further, the steps S252-S254 are executed for each filter included in the filter condition list (loop 3,
When the function of the activity 31 regarded as an object to be processed has multiple outputs, the setting for the output order is reflected to the job tree (S255,
At this stage, the job tree formation is completed.
Next, the request management part 22 registers (S257,
Further, the request management part 22 instructs the job registered with the request object 2201 (S259,
After that stage, when each job for each filter is completed, job completion is notified (S262, S263, S264) to the copy accumulation job F/W 431F by each filter job object of each filter. When the job completion is noticed from all filter job objects having been requested to execute filter jobs, the copy accumulation job F/W 431F notices respectively the request object 2201 and the UI content 1201 of the completion of the document operation job (S265, S266). In response to the notice, for example, the UI content 1201 displays a screen indicating that the document operation job has been completed.
Further, a process executed at the step S255 in
At step S301, a presence of output order setting is determined with reference to the condition tree. For the condition tree, when even one function connector object managing “output order” (i.e. association r2, see
When there is a presence of the output order setting (YES at S301), the function connector object list (hereafter “output order setting list”) managing “output order” is obtained from the condition tree (S302). Next, one function connector object (output order setting) is taken out from the output order list (S303). Hereafter, the taken function connector object is named as “current function connector object”. Next, a job start trigger object is generated (S304) corresponding to the current function connector object. The generated job start trigger object is named as “current job start trigger object”, hereafter.
Next, a filter condition object (hereafter “advance filter condition object”) associated as “advance step filter” to the current function connector object is obtained from the current function connector object(S305). Next, a filter job object corresponding to the advance step filter condition object is associated with the current job start trigger as an event waiting object (S306), and the event waiting object is set with the current job start trigger object as an end event (S307). Thereby, the association r9 (see
Further, a filter condition object (hereafter “back step condition object”) associated as “back step filter” with the current function connector object is obtained from the current function connector object (S308). Next, the filter job object corresponding to the back step filter condition object is associated as “job start instruction object” (S309). Thereby, the association r10 is established between the current job start trigger and the filter job object (see
Processing steps S304-S309 are to achieve the content process described in
When the process steps S303-S309 are executed (YES at S310) for all connector objects included in the output order setting list, the process in
Next, processes to be executed at step S256 of
At step S351, referring to the condition tree, a presence of the output order setting is determined. This process is similar to step S301 of
The exception list is to hold the filter condition object regarding the output filter excluded from an initial executable object for a process described later. The multi-function apparatus 1 of this embodiment, a follow-up filter carried out later in the output order cannot be the initial executable object. Thus, the back step filter condition object is registered in the exception list.
When steps S303-S309 are executed (YES at S356) for entire function connector objects included in the output order setting list, the process is advanced to step S375.
Also, at step S351, when there is no presence of the output order setting (NO at S351), steps S352-S356 are not executed and the process advances to step S357.
Following step S357, the entire filter condition objects of the output filter are searched in the filter condition object constituting the condition tree, and by eliminating filter condition objects included in the exception list from the searched filter condition object, an initial executable output filter job is identified.
At step S357, a list (hereafter, “filter connector information list”) of the function connector object (i.e. the function connector object related to the association r1 (see
Next, by replacing FALSE into a flag variable (FOUND variable) used for searching filter job objects of the output filter, initialization is performed (S360). Next, a function connector object following the function connector object A is taken out from the filter connector information list. Hereafter, the taken out function connector object is named as “function connector object B”. In the next step, the filter condition object (hereafter, “B advance step filter condition object”) associated with the function connector object B as “advance step filter” is obtained from the function connector object B (S362).
Next, it is determined if the A back step object and the B advance step object are identical (S363). When two are identical, as the A back step object is not the filter condition object of the output filter, TRUE is input as FOUND variable (S364), and the process advances to step S367. On the other hand, when the A back step object and the B advance step object are not identical, it is determined (S365) whether there is a presence of a function connector object (unexecuted function connector object) not regarded as an executable object for the function connector object B, which is not the function connector object A in the filter connector information list. When an unexecuted function connector object exists (NO at S365), the process returns to step S360. If an unexecuted function connector object does not exist (YES at S365), the process advances to step S367.
For advancing to step S367, if the A back step object and the identical B advance object exist, the FOUND variable becomes TRUE, and if the A back step object and the identical B advance object does not exist, the FOUND variable becomes FALSE. The FOUND value being TRUE indicates that A back step object is not the filter condition object of the output filter. In contrast, the FOUND value being FALSE indicates that A back step object is the filter condition object of the output filter.
The step described above is described using the condition tree of
Next, at step S367, the FOUND variable is determined if the value is TRUE (i.e. if the A back step object is the filter condition object of the output filter). If the FOUND variable value is not TRUE (the A back step object is the filter condition object of the output filter) (YES at S367), it is determined whether the A back step object is included in the exception list (S368). IF the A back step object is not included in the exception list (YES at S368), the filter job object corresponding to the A back step object is to be associated with the document operation job object (e.g. the copy accumulation job object 431 in
When the entire function connector objects included in the filter connector information list are executed as the function connector object A (YES at S370), the process of
Next, processes being executed in response to the execution request of job at step S261 of
After receiving a job execution request(S261), the copy accumulation job F/W 431F performs setting a job priority (S401), setting a job group (S402), acquiring control mode (S403, S404), setting of a job entry (S405) to each filter job object (i.e. filter job object having association R7 (see
Each filter job object notices (S406) the copy accumulation job F/W 431F if the filter is executable (executable notice). If all notices received from each filter job objects are executable, the copy accumulation job F/W 431F requests each filter object to prepare execution of a job (S407). Each filter object prepares execution of holding resources or the like, and sends the feasibility of executing the job (S408) to the copy accumulation job F/W 431W. Once preparation for execution becomes successful for all of filter job objects, the copy accumulation job F/W 431F establishes control mode for each filter job object (S409). The control mode to be set indicates a result that the copy accumulation job F/W 431F has adjusted to maintain consistency of each filter job based on control modes received from each filter job object.
Further, in the figure, although steps S401-S409 are indicated to execute only the read job object 531, the steps are performed to each filter job constituting the job tree, as described above.
Next, the copy accumulation job FE/W 431F starts executing the document operation job of the copy accumulation function (S410). Namely, the copy accumulation job F/W 431F instructs starting execution of each filter job to each filter job object (S411, S412, S413). In this stage, the instruction of starting execution is performed to each filter job object in parallel without waiting completion of previous executing filters for connecting relation between filters, having no relation with input filters, converter filters, and output filters. Further, regarding the filter job object of the output filter, only a job registered as an “initial executable output related job” for the copy accumulation job object 431 (having association r8 (see
The filter job object receiving execution starts instruction controls execution of the filter job. When a synchronized mode (a mode starts execution job after the previous filter's execution is completed) is established as a control mode, the filter waits until data is input in the input side pipe of that filter. In this case, when the previous filter outputs image data as execution result of the job, the filter starts executing its own job. In short, the synchronizing between filters is performed by a pipe. Further, there is no pipe for an input filter at input side. Then the input filter starts a process in response to the execution start instruction.
Next, if the job status changes, each filter job object sends a notice of events indicating the job state after the change (job completion or job interruption) to the copy accumulation job F/W 431F and the job start trigger object 451 that are associated as “job state notice destination” (
The copy accumulation job F/W 431F performs a process according to the notice sent form each filter job object (S423, S427, S431). Also, the job start trigger object 451 performs a process according to the content of the noticed event (S424, S428, S432). Particularly, for the activity 31 (function) regarded as an execution object to perform plural outputs, the job start trigger object 451 instructs (S433) the filter job object (i.e. a filter job object of the output filter to be executed later; for the copy accumulation function, the store job object 535 is corresponded) associated by the association r10 (see
In this manner, for output filters excluded from objects as “initial executable output related job”, the job execution start is instructed by the job start trigger object 450 in response to the end of executing filter job of the output filter regarded as being performed in advance. Thereby, the output order is properly controlled for a plural output case. For this embodiment of the copy accumulation function, data generated by the store document registration filter 322 is saved after finishing print by the print filter 321.
For filter job objects that are not “initial execution output related job”, only an instruction source is different from another filter job object and procedures after starting the job execution are similar to the other job object filter. Therefore, when the job state is changed, the event indicating job state after changing is notified to the copy accumulation job F/W 431F associated as “start notice destination” (S434). The copy accumulation job F/W 431F executes a process in response to the content of event notice from the filter job object (S435).
After notice of the end of event from all filter job objects, the copy accumulation job F/W 431F notifies the request object 2201 and the UI content 1201 about the end of the document operation job of the copy accumulation function (S436, S437).
Next, at steps S423, S4271 S431, and 8435 in
At step S501, an event is received from the filter job object. Next, it is determined whether the event is an end event of the filter job (S502). If the event is the end event (YES at S502), that the filter job of the filter object of the event sender has been finished is additionally recorded (end of job record) on the job end check list on the memory device (S503). Next, the end record of all filter jobs recorded on the job end check list is read (S504), and it is determined whether the job (filter job) of all filter job objects constituting the job tree is finished (S505). If all filter jobs are finished (YES at S505), completion of the document operation job is notified (S506) to the state notification destination (in
Next, as an example of another event processing at step S507 of
At S521, an event is received from the filter job object. Next, it is determined whether the event is an interruption (S522). If the event is an interruption (YES at S522), it is determined (S523) whether the interruption is caused by a waiting of data on the input side pipe based on information indicating the reason of interruption included in the interruption event. When the interruption is caused by waiting of data to the input side pipe (YES at S523), a switching (transition) process is performed to shift to the determination of the feasibility of releasing the resource and an interrupted state of the document operation job (S524), and the process of
When the interruption is not caused by a waiting of data input to the input side pipe (No at S523), it is determined whether the job may be restarted based on information indicating restart of event included in the interruption event (S525). If the job may be restarted (YES at S525), it is determined whether the restart instruction (restart instruction of the filter job for the filter job object) is required based on information indicating a restart of the event included in the interruption event (S526). It the restart instruction is required (YES at S526), the necessity of the restart instruction for the filter job object of the sender of the interruption event and the interruption reason are saved in the memory device (S527). If the restart is not necessary (NO at S526), the step 527 is not executed. Then, the document operation job object switches to the interruption state (S528) and the process of
On the other hand, if it is determined that the interruption may be restarted (NO at S525), a cancelling job is instructed to all filter job objects (S529) and the process of
Also, if the received event is not an interruption event (NO at S522), the process corresponding to the event is performed (S530).
Next, the process of step S524 of
At step S541, a release feasibility of resources used in each filter job is inquired about for the filter job object of the conversion filter and the output filter. In this case, the resources are, for example, a memory, hardware related to specific process of the filter (e.g. plotter or the like). Next, based on the inquiry result, it is determined whether the resources of all filter jobs may be released (S542). If the resource of all filter jobs are available to release (YES at S542), an interrupting filter job to all filter job objects is instructed (S543). If the resource of at least one filter job is possible to release (NO at S542), step 543 is not executed. Further, the document operation job object switches to interruption state (S544) and the process of
Next, at steps S424, S428, S432 or the like in
At step S551, an event is received from the filter job object. Next, it is determined whether the event is an end event (S552). If the event is end event (YES at S552), it is determined (S535) whether the filter job object of the sender of the end event corresponds to the filter job object associated as “waiting end event” by association r9 (see
As described above, according to the multi-function apparatus 1 of this embodiment, as each filter can be constructed as each function, a customizing function and an extending function can be simply performed. In short, there is no functional dependence between each filter, maintaining independence, a new function (application) can be easily developed by addition or combination of other filters. Thus, if a new application is required, only part of a process which does not exist in current applications may be developed to construct the new application to install. Then, for a lower layer than the control layer and the application logic layer 30, a modification frequency can be reduced for modifications caused by additional application installation, and a stable platform can be provided.
Further, by preliminarily defining a function constituted by a combination of filters as an activity, the function constituted by the filter combination (connection) may be utilized with simpler operation.
Further, when the activity includes plural outputs, the process order between the plural output filters having parallel relation for filter connection may be controllable. Thus, flexible control may be possible for filter process order.
Further, for this embodiment, the job start trigger class 450 (job start trigger object 451) is an example of output order control unit. Thus, the association r10 and the association r11 formed between the job start trigger object 451 and the filter job object correspond to output order information.
Further, an example is given of the hardware construction of the multi-function apparatus 1.
As hardware of the multi-function apparatus 1, there are a controller 201, an operation panel 202, a facsimile control unit (FCU) 203, an imaging part 121, and a print part 122.
The controller 201 is constructed with a CPU 211, an ASIC 212, a NB 221, a SB 222, a MEM-P 231, a MEM-C 232, a HDD (Hard Disk Drive) 233, a memory card slot 234, a NIC (net working interface controller) 241, a USB device 242, an IEEE 1394 device 243, and a centronics device 244.
The CPU 211 may be various types of information processing ICs. The ASIC 212 may be various types of image processing ICs. The NB 221 is a north-bridge of the controller 201. The SB 222 may be a south-bridge of the controller 201. The MEN-P 231 may be a system memory of the multi-function apparatus 1. The MEM-C 232 may be a local memory of the multi-function apparatus 1. The HDD 233 may be a storage unit of the multi-function apparatus 1. The memory slot 234 is configured to set a memory card 235. The NIC 241 may be a controller for network communication of a MAC address. The USB device 242 may provide terminals to connect USB standard connection terminals. The IEEE 1394 device 243 provides IEEE 1394 connection terminals. The Centronics device 244 provides connection terminals for Centronics standard connection terminals. The operation panel 202 may be a hardware (operation part) which an operator inputs into the multi-function apparatus 1 and obtains an output (display part) from the multi-function apparatus.
Further, the software indicated in
The present invention is not limited to the specifically disclosed embodiments, and variations and modifications may be made without departing from the scope of the present invention.
The present application is based on Japanese priority application No. 2007-228093 filed on Sep. 3, 2007, the entire contents of which are hereby incorporated herein by reference.
Number | Date | Country | Kind |
---|---|---|---|
2007-228093 | Sep 2007 | JP | national |