JP2008305004A - 画像形成装置、アプリケーション実行方法及びアプリケーション実行プログラム - Google Patents

画像形成装置、アプリケーション実行方法及びアプリケーション実行プログラム Download PDF

Info

Publication number
JP2008305004A
JP2008305004A JP2007149386A JP2007149386A JP2008305004A JP 2008305004 A JP2008305004 A JP 2008305004A JP 2007149386 A JP2007149386 A JP 2007149386A JP 2007149386 A JP2007149386 A JP 2007149386A JP 2008305004 A JP2008305004 A JP 2008305004A
Authority
JP
Japan
Prior art keywords
activity
application
filter
information
executed
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.)
Pending
Application number
JP2007149386A
Other languages
English (en)
Inventor
Aritaka Hagiwara
有隆 萩原
Tadashi Nagata
匡 永田
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 JP2007149386A priority Critical patent/JP2008305004A/ja
Priority to US12/106,728 priority patent/US20080307428A1/en
Publication of JP2008305004A publication Critical patent/JP2008305004A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N1/00Scanning, transmission or reproduction of documents or the like, e.g. facsimile transmission; Details thereof
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N1/00Scanning, transmission or reproduction of documents or the like, e.g. facsimile transmission; Details thereof
    • H04N1/00127Connection or combination of a still picture apparatus with another apparatus, e.g. for storage, processing or transmission of still picture signals or of information associated with a still picture
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N2201/00Indexing scheme relating to scanning, transmission or reproduction of documents or the like, and to details thereof
    • H04N2201/0077Types of the still picture apparatus
    • H04N2201/0094Multifunctional device, i.e. a device capable of all of reading, reproducing, copying, facsimile transception, file transception

Abstract

【課題】機能のカスタマイズ又は拡張等を簡便化させることのできる画像形成装置、アプリケーション実行方法及びアプリケーション実行プログラムの提供を目的とする。
【解決手段】それぞれ画像データの入力、出力、又は画像データに対する画像処理を実行するソフトウェア部品の組み合わせによりアプリケーションが構築される画像形成装置であって、複数の前記アプリケーションを連続的に実行させる連携手段を有することにより上記課題を解決する。
【選択図】図4

Description

本発明は、画像形成装置、アプリケーション実行方法及びアプリケーション実行プログラム
に関する。
近年におけるプリンタ、コピー機、スキャナ、ファクシミリ、又はこれらの機能を一台の筐体で実現する複合機等の画像形成装置では、メモリ等の制限は厳しいものの、汎用的なコンピュータと同様にCPUを備え、各機能はアプリケーションの制御によって実現されるようになっている。
例えば、特許文献1に記載された画像形成装置では、各アプリケーションから共通的に利用される機能をプラットフォームとして備えており、当該プラットフォームのAPIを利用してアプリケーションを実装することができる。かかる画像形成装置によれば、共通的に利用される機能がプラットフォームとして備えられていることにより、アプリケーションごとに重複した機能の実装が回避され、アプリケーション全体の開発効率を向上させることができる。
特許第3679349号公報
しかしながら、一般的に、共通的に利用されるAPIを備えたプラット
フォームについては、当該プラットフォームによって提供される機能又はインタフェースの粒度が適切に設計されていないと、アプリケーションの開発効率の向上が期待以上に図れない場合がある。
例えば、当該粒度が小さ過ぎると、単純なサービスを提供するアプリケーションであるにもかかわらず、多くのAPIの呼び出しが必要とされ、そのソースコードは複雑なものとなってしまう。
一方、当該粒度が大き過ぎると、或るインタフェースによって提供されている機能の一部について変更を加えたサービスを提供するアプリケーションを実装したい場合、当該プラットフォーム内を修正しなければならず、開発工数の増加を招いてしまいかねない。特に、プラットフォーム内における各モジュールの依存関係が強い場合は、プラットフォームに新規機能を追加するだけでなく、既存部分の修正も必要とされる場合があり、事態はより複雑となる。
また、既存のアプリケーションによって提供されているサービスの一部(例えば、画像の入力処理)を変更したアプリケーションを実装したい場合、当該一部以外の部分については既存のアプリケーションを呼び出すといったようなことは出来ない。したがって、改めてソースコードを記述して新たなアプリケーションを実装しなければならない。
本発明は、上記の点に鑑みてなされたものであって、機能のカスタマイズ又は拡張等を簡便化させることのできる画像形成装置、アプリケーション実行方法及びアプリケーション実行プログラムの提供を目的とする。
そこで上記課題を解決するため、本発明は、それぞれ画像データの入力、出力、又は画像データに対する画像処理を実行するソフトウェア部品の組み合わせによりアプリケーションが構築される画像形成装置であって、複数の前記アプリケーションを連続的に実行させる連携手段を有することを特徴とする。
また、本発明は、前記連携手段は、先に実行される前記アプリケーションより取得した情報を後に実行される前記アプリケーションに設定することを特徴とする。
また、本発明は、前記連携手段は、記憶装置に記録された定義情報において指定されている取得先より情報を取得し、前記定義情報において指定されている設定先に前記取得先より取得された情報を設定することを特徴とする。
また、本発明は、前記連携手段は、先に実行される前記アプリケーションの状態に応じて後に実行される前記アプリケーションの実行の要否を判定することを特徴とする。
また、本発明は、前記連携手段は、記憶装置に記録された定義情報において指定されている情報を先に実行される前記アプリケーションより取得し、取得された情報を前記定義情報において指定されている条件と比較することにより後に実行される前記アプリケーションの実行の要否を判定することを特徴とする。
また、本発明は、第一の前記連携手段は、第二の前記連携手段を前記アプリケーション又は第三の前記連携手段と連続的に実行させることを特徴とする。
このような画像形成装置では、機能のカスタマイズ又は拡張等を簡便化させることのできる画像形成装置、アプリケーション実行方法及びアプリケーション実行プログラムを提供することができる。
本発明によれば、機能のカスタマイズ又は拡張等を簡便化させることのできる画像形成装置、アプリケーション実行方法及びアプリケーション実行プログラムを提供することができる。
以下、図面に基づいて本発明の実施の形態を説明する。図1は、本発明の実施の形態における複合機のソフトウェア構成例を示す図である。ここで、複合機とは、プリンタ、コピー、スキャナ、又はFAX等の複数の機能を一台の筐体において実現する画像形成装置をいう。
図1に示されるように、複合機1におけるソフトウェアは、ユーザインタフェース層10、コントロール層20、アプリケーションロジック層30、デバイスサービス層40、及びデバイス制御層50等より構成される。なお、図中における各層の上下関係は、層間の呼び出し関係に基づいている。すなわち、基本的に図中において上にある層が下の層を呼び出す。
ユーザインタフェース層10は、機能(例えば、コピー、印刷、スキャン、FAX送信)の実行要求を受け付けるための機能が実装されている部分であり、例えば、通信サーバ部11及びローカルUI部12等が含まれる。通信サーバ部11は、例えば、非図示のクライアントPC(Personal Computer)等からネットワーク経由で要求を受け付ける。ローカルUI部12は、例えば、非図示のオペレーションパネルを介して入力される要求を受け付ける。ユーザインタフェース層10において受け付けられた要求は、コントロール層20に伝えられる。
コントロール層20は、要求された機能を実現するための処理を制御するための機能が実装されている部分であり、例えば、プラグイン管理部21及びリクエスト管理部22等が含まれる。プラグイン管理部21は、アプリケーションロジック層30におけるアクティビティ31やフィルタ等を利用可能な状態にするための処理(プラグイン処理)等を制御する。リクエスト管理部22は、ユーザインタフェース層10において受け付けられた要求に応じた複合機1の機能を実行するための処理を制御する。なお、本実施の形態において「複合機1の機能」とは、複合機1がユーザに対して提供する一つのまとまった単位(要求が入力されて最終的な出力が得られるまで)のサービスと同義であり、ソフトウェア的には一つのまとまった単位のサービスを提供するアプリケーションと同義である。
アプリケーションロジック層30は、それぞれが複合機1において提供される機能の一部を実現する部品群が実装されている部分である。すなわち、アプリケーションロジック層30における部品を組み合わせることにより一つの機能が実現される。本実施の形態では、各部品を「フィルタ」と呼ぶ。これは、複合機1のソフトウェアアーキテクチャが「パイプ&フィルタ」と呼ばれる考え方に基づくことによる。
図2は、パイプ&フィルタの概念を説明するための図である。図2において、「F」はフィルタを示し、「P」はパイプを示す。図中に示されるように、各フィルタはパイプによって接続される。フィルタは、入力されたデータに対して変換を施し、その結果を出力する。パイプは、フィルタから出力されたデータを次のフィルタに伝達する。
すなわち、本実施の形態における複合機1では、各機能をドキュメント(データ)に対する「変換」の連続として捉える。複合機の各機能は、ドキュメントの入力、加工、及び出力によって構成されるものとして一般化することができる。そこで「入力」、「加工」、及び「出力」を「変換」として捉え、一つの「変換」を実現するソフトウェア部品がフィルタとして構成される。デバイスからのデータの入力を実現するフィルタを特に「入力フィルタ」という。また、データの加工(画像処理等)を実現するフィルタを特に「変換フィルタ」という。更に、デバイスへのデータの出力を実現するフィルタを特に「出力フィルタ」という。なお、各フィルタは独立しており、フィルタ間における依存関係(呼び出し関係)は基本的に存在しない。したがって、フィルタ単位で追加(インストール)又は削除(アンインストール)が可能とされている。
図1において、アプリケーションロジック層30には、入力フィルタとして、読取フィルタ301、保管文書読出フィルタ302、メール受信フィルタ303、FAX受信フィルタ304、PC文書受信フィルタ305、レポートフィルタ306等が含まれている。
読取フィルタ301は、スキャナによる画像データの読み取りを制御し、読み取られた画像データを出力する。保管文書読出フィルタ302は、複合機1の記憶装置に保管されている文書データ(画像データ)を読み出し、読み出されたデータを出力する。メール受信フィルタ303は、電子メールの受信し、当該電子メールに含まれているデータを出力する。FAX受信フィルタ304は、FAX受信を制御し、受信されたデータを出力する。PC文書受信フィルタ305は、非図示のクライアントPCから印刷データを受信し、受信された印刷データを出力する。レポートフィルタ306は、複合機1の設定情報や履歴情報等を、例えば表形式に整形されたデータとして出力する。
また、変換フィルタとしては、文書加工フィルタ311及び文書変換フィルタ312等が含まれている。文書加工フィルタ311は、入力されたデータに所定の画像変換処理(集約、拡大、又は縮小等)を施し、出力する。文書変換フィルタ312は、レンダリング処理を実行する。すなわち、入力されたPostScriptデータをビットマップデータに変換して出力する。
また、出力フィルタとしては、印刷フィルタ321、保管文書登録フィルタ322、メール送信フィルタ323、FAX送信フィルタ324、PC文書送信フィルタ325、及びプレビューフィルタ326等が含まれている。
印刷フィルタ321は、入力されたデータをプロッタに出力(印刷)させる。保管文書登録フィルタ322は、入力されたデータを複合機1内のハードディスク内に保存する。メール送信フィルタ323は、入力されたデータを電子メールに添付して送信する。FAX送信フィルタ324は、入力されたデータをFAX送信する。PC文書送信フィルタ325は、入力されたデータをクライアントPCに送信する。プレビューフィルタ326は、入力されたデータを、複合機1のオペレーションパネルにプレビュー表示させる。
例えば、複合機1における各種機能は、次のようなフィルタの組み合わせにより実現される。図3は、本実施の形態の複合機における各機能を実現するためのフィルタの組み合わせの例を示す図である。
例えば、コピー機能は、読取フィルタ301と印刷フィルタ321とを接続することにより実現される。読取フィルタ301によって原稿より読み取られた画像データを印刷フィルタ321によって印刷すればよいからである。なお、集約、拡大、又は縮小等の加工が要求された場合は、これらの加工を実現する文書加工フィルタ311が二つのフィルタの間に挿入される。
プリンタ機能(クライアントPCからの印刷機能)は、PC文書受信フィルタ305と文書変換フィルタ312と印刷フィルタ321とを接続することにより実現される。スキャンto email機能(スキャンした画像データを電子メールで転送する機能)は、読取フィルタ301とメール送信フィルタ323とを接続することによって実現される。FAX送信機能は、読取フィルタ301とFAX送信フィルタ324とを接続することによって実現される。FAX受信機能は、FAX受信フィルタ304と印刷フィルタ321とを接続することによって実現される。ドキュメントボックス蓄積機能(スキャンした画像データを複合機1内に保存する機能)は、読取フィルタ301と保管文書登録フィルタ322とを接続することによって実現される。ドキュメントボックス印刷機能(複合機1内に保存されている文書データを印刷する機能)は、保管文書読出フィルタ302と印刷フィルタ321とを接続することにより実現される。
図3において、例えば、読取フィルタ301については5つの機能において利用されている。このように、各フィルタは複数の機能から利用可能であり、それによって各機能を実現するための開発工数を削減することができる。例えば、コピー機能とスキャン機能(ドキュメントボックス蓄積)について、その実行条件を設定させるためのユーザインタフェースは類似しているものであった。それにも拘わらず、各機能をアプリケーションによって実装する場合には、アプリケーションごとに個別にユーザインタフェースの実装も行われていた。しかし、本実施の形態の複合機1によれば、コピー機能及びスキャン機能のいずれの場合も、読取フィルタ301のユーザインタフェースによって設定が行われ、ユーザインタフェースの共通化をも図ることができる。
更に、新たな機能を実現する場合について考える。まず、機能1として、複合機1では対応していないPDL(Page Description Language)(以下、「他PDL」という。)によってクライアントPCから送信される印刷データを印刷する機能を実現する場合について考える。この場合、図3におけるプリンタ機能を雛形とすることができる。但し、プリンタ機能では、PC文書受信フィルタ305により出力されるデータがPostScript形式であることが前提とされている。文書変換フィルタ312が入力データとして扱えるのはPostScript形式のデータだからである。しかし、機能1の場合、PC文書受信フィルタ305によって受信され、当該フィルタより出力されるのは他PDL形式のデータである。したがって、このまま文書変換フィルタ312に転送しても文書変換フィルタ312は適切に処理を実行することができない。そこで、他PDL形式からPostScript形式へのデータ変換を実行する変換フィルタ(以下「他PDL−PS変換フィルタ」という。)を新たに実装し、当該フィルタをPC文書受信フィルタ305と文書変換フィルタ312との間に挿入すれば、機能1を実現することができる。すなわち、機能1は、PC文書受信フィルタ305と他PDL−PS変換フィルタと文書変換フィルタ312と印刷フィルタ321とを接続することにより実現される。
次に、機能2として、Webサイトから情報を収集し、収集された情報を印刷する機能(以下「機能2」という。)を実現する場合について考える。この場合、Webサイトから情報を収集するフィルタが存在しない。したがって、少なくともWebサイトから情報を収集する入力フィルタ(以下「Web収集フィルタ」という。)を新たに実装する必要がある。また、機能2では最終的に印刷を実行させたいので、出力フィルタとしては印刷フィルタ321を用いるのが適切である。ここで問題となるのが、Web収集フィルタと印刷フィルタ321との間をどのように接続するかである。すなわち、印刷フィルタ321の入力データはレンダリングされたビットマップである必要があるところ、Web収集フィルタ内にレンダリング機能を実装するのは非常に工数がかかるので適切ではない。そこで、既にレンダリング機能を実現する文書変換フィルタ312を利用することが考えられる。ただし、文書変換フィルタ312の入力データは、PostScript形式である必要がある。そこで、Web収集フィルタを、収集した情報をPostScript形式によって出力するように実装すれば、文書変換フィルタ312との接続が可能となる。このようにWeb収集フィルタを実装することにより、機能2は、Web収集フィルタと文書変換フィルタ312と、文書変換フィルタ312と印刷フィルタ321との接続により実現される。
このように、複合機1では各フィルタを部品として各機能を構築するため、機能のカスタマイズ又は拡張を簡便に行うことができる。すなわち、各フィルタ間には、機能的な依存関係はなく独立性が保たれているため、フィルタの新たな追加やフィルタの組み合わせの変更によって、新たな機能(アプリケーション)を容易に開発することができる。したがって、新たなアプリケーションの実装が要求された場合、当該アプリケーションの一部の処理について実装されていない場合は、当該一部の処理を実現するフィルタのみを開発し、インストールすればよい。よって、コントロール層20及びアプリケーションロジック層30より下位の層について、新たなアプリケーションの実装に応じて発生する修正の頻度を低下させることができ、安定したプラットフォームを提供することができる。
ところで、アプリケーション層30には、更に、アクティビティ31が含まれている。「アクティビティ」とは、複数のフィルタの組み合わせによって、一つの「機能」(複合機1がユーザに対して提供する一つのまとまった単位のサービス又はアプリケーション)を実現するソフトウェアである。
すなわち、フィルタはそれぞれ独立性が高いため、フィルタの組み合わせ(アプリケーション)を動的に構築することが可能である。具体的には、ジョブの実行要求を受け付けるたびに、利用するフィルタと、フィルタの実行順序、及びそれぞれのフィルタの実行条件等をオペレーションパネルを介してユーザに設定させることにより、ユーザ所望の機能を実現するようにしてもよい。
しかし、コピー機能のように頻繁に利用する機能については、毎回フィルタを選択することにより実行指示を行うのはユーザにとって煩雑である。かかる課題を解決するのがアクティビティ31である。すなわち、フィルタの組み合わせをアクティビティ31として予め定義しておけば、ユーザは、アクティビティ31を単位として実行対象を選択することができる。選択されたアクティビティ31は、当該アクティビティ31に定義された組み合わせに係る各フィルタを自動的に実行する。したがって、アクティビティ31によって、操作の煩雑さを解消することができるとともに、アプリケーション単位で実行対象を選択していた従来のユーザインタフェースと同様の操作感を提供することができる。
図中では、アクティビティ31として、ScanToStorageアクティビティ31a、StorageToEmailアクティビティ31b、及びScanToEmailアクティビティ31c等が例示されている。
ScanToStorageアクティビティ31aは、読取フィルタ301と、文書加工フィルタ311と、保管文書登録フィルタ322との組み合わせにより、ドキュメントボックス蓄積機能を実現するアクティビティ31である。
StorageToEmailアクティビティ31bは、保管文書読出フィルタ302と、文書加工フィルタ311と、メール送信フィルタ323との組み合わせにより、保管文書のメールによる送信機能を実現するアクティビティ31である。
ScanToEmailアクティビティ31cは、ScanToStorageアクティビティ31aとStorageToEmailアクティビティ31bとを組み合わせることにより、二つのアクティビティ31による機能の連携(連続的な実行)を実現するアクティビティ31である。すなわち、上記において、「アクティビティ」とは、複数のフィルタの組み合わせによって構成される旨を説明したが、ScanToEmailアクティビティ31cは、複数のアクティビティの組み合わせによって構成される。
図4は、ScanToEmailアクティビティの構成を示す図である。図4では、ScanToEmailアクティビティ31cによってScanToStorageアクティビティ31a及びStorageToEmailアクティビティ31bが呼び出され、ScanToStorageアクティビティ31a及びStorageToEmailアクティビティ31bによって、それぞれを構成する各フィルタが呼び出される様子が示されている。
ScanToEmailアクティビティ31cのように、複数のアクティビティの組み合わせによって構成されるアクティビティ31を、本実施の形態では「連携アクティビティ」という。「連携アクティビティ」に対し、ScanToStorageアクティビティ31aやStorageToEmailアクティビティ31bのように、通常の(フィルタの組み合わせによって構成される)アクティビティを「文書操作アクティビティ」という。また、両者を区別しない場合は、アクティビティ31という。
なお、基本的に各アクティビティ31は独立しており、連携アクティビティを除いてアクティビティ31間における依存関係(呼び出し関係)は基本的に存在しない。したがって、アクティビティ31単位で追加(インストール)又は削除(アンインストール)が可能である。よって、図1に示されているアクティビティ31以外にも、必要に応じて各種のフィルタの組み合わせによるアクティビティ31を作成し、インストールすることができる。
デバイスサービス層40は、アプリケーションロジック層30における各アクティビティ31や各フィルタから共通に利用される下位機能が実装されている部分であり、例えば、画像パイプ41及びデータ管理部42等が含まれる。画像パイプ41は、上述したパイプの機能を実現する。すなわち、或るフィルタからの出力データを次のフィルタに伝達する。データ管理部42は、各種のデータベースを表現する。例えば、ユーザ情報が登録されたデータベースや、文書又は画像データ等が蓄積されるデータベース等が相当する。
デバイス制御層50は、デバイス(ハードウェア)を制御するドライバと呼ばれるプログラムモジュール群が実装されている部分であり、例えば、スキャナ制御部51、プロッタ制御部52、メモリ制御部53、Tel回線制御部54、及びネットワーク制御部55等が含まれる。各制御部は、当該制御部の名前に付けられているデバイスを制御する。
フィルタ及びアクティビティ31について更に詳しく説明する。図5は、フィルタの構成要素を説明するための図である。図5に示されるように、各フィルタは、フィルタ設定用UI、フィルタロジック、フィルタ固有下位サービス、及び永続記憶領域情報等より構成される。このうち、フィルタ設定用UI、フィルタ固有下位サービス、及び永続記憶領域情報については、フィルタによって必ずしも構成要素に含まれない。
フィルタ設定用UIは、フィルタの実行条件等を設定させるための画面をオペレーションパネル等に表示させるプログラムである。例えば、読取フィルタ301であれば、解像度、濃度、画像種別等を設定させる画面が相当する。なお、オペレーションパネルの表示がHTMLデータや、スクリプトに基づいて行われ得ることに鑑みれば、フィルタ設定用UIはHTMLデータやスクリプトであってもよい。
フィルタロジックは、フィルタの機能を実現するためロジックが実装されたプログラムである。すなわち、フィルタの構成要素としてのフィルタ固有下位サービスや、デバイスサービス層40又はデバイス制御層50等を利用して、フィルタ設定用UIを介して設定された実行条件に応じてフィルタの機能を実現する。例えば、読取フィルタ301であれば、スキャナによる原稿の読み取り制御のためのロジックが相当する。
フィルタ固有下位サービスは、フィルタロジックを実現するために必要な下位機能(ライブラリ)である。すなわち、デバイスサービス層40又はデバイス制御層50相当する機能であるが、他のフィルタから使用されないものについては、フィルタの一部として実装されてもよく、当該一部がフィルタ固有下位サービスに相当する。例えば、読取フィルタ301であれば、スキャナを制御するための機能が相当するが、本実施の形態では、デバイス制御層50においてスキャナ制御部51として実装されている。したがって、読取フィルタ301において、フィルタ固有下位サービスの実装は必ずしも必要ではない。
永続記憶領域情報は、フィルタに対する設定情報(例えば、実行条件のデフォルト値)等、不揮発メモリに保存する必要があるデータのスキーマ定義が相当する。当該スキーマ定義は、フィルタのインストール時にデータ管理部42に登録される。
図6は、アクティビティの構成要素を説明するための図である。図6に示されるように、アクティビティ31は、アクティビティUI、アクティビティロジック、及び永続記憶領域情報等より構成される。
アクティビティUIは、アクティビティ31に関する画面(例えば、アクティビティ31の実行条件等を設定させるための設定画面)をオペレーションパネル等に表示させるための情報又はプログラムである。
アクティビティロジックは、アクティビティ31の処理内容が実装されたプログラムである。基本的に、アクティビティロジックには、フィルタの組み合わせに関するロジック(例えば、フィルタの実行順、複数のフィルタに跨る設定、フィルタの接続変更、エラー処理等)が実装されている。但し、連携アクティビティの場合は、アクティビティ31を連携させるためのロジックが実装されている。
永続記憶領域情報は、アクティビティ31に対する設定情報(例えば、実行条件のデフォルト値)等、不揮発メモリに保存する必要があるデータのスキーマ定義が相当する。当該スキーマ定義は、アクティビティ31のインストール時にデータ管理部42に登録される。
ところで、アクティビティ31やフィルタは、プログラム内においてはオブジェクトとして扱われる。斯かるオブジェクトは、次のようなクラス構成に基づく。図7は、第一の実施の形態におけるアクティビティ及びフィルタのクラス構成例を示す図である。
図7において、アプリケーションクラス330は、連携アクティビティ及び文書操作アクティビティの両者を抽象的に表現するクラスである。連携アクティビティクラス340は、連携アクティビティを表現するクラスである。連携アクティビティクラス340のインスタンスを、以下「連携アクティビティオブジェクト340A」という。文書操作アクティビティクラス350は、文書操作アクティビティを表現するクラスである。文書操作アクティビティクラス350のインスタンスを、以下「文書操作アクティビティオブジェクト350A」という。フィルタクラス360は、フィルタを表現するクラスである。フィルタクラス360のインスタンスを、以下「フィルタオブジェクト」という。
連携アクティビティクラス340及び文書操作アクティビティクラス350は、アプリケーションクラス330を継承している。したがって、連携アクティビティ及び文書操作アクティビティは、アプリケーションクラス330において定義されているインタフェースによって、両者の相違を意識することなく扱うことができる。
連携アクティビティクラス340は、文書操作アクティビティクラス350に対して二つの関連(関連r1、関連r2)を有している。関連r1は、連携される二つの文書操作アクティビティのうち、先に実行される文書操作アクティビティに対応する文書操作アクティビティオブジェクト350Aへの関連を示す。関連r1において関連付けられる文書操作アクティビティオブジェクト350Aは、「前ジョブ」といったロール名によって識別される。関連r2は、連携される二つの文書操作アクティビティのうち、後に実行される文書操作アクティビティに対応する文書操作アクティビティオブジェクト350Aへの関連を示す。関連r2において関連付けられる文書操作アクティビティオブジェクト350Aは、「後ジョブ」といったロール名によって識別される。
文書操作アクティビティクラス350は、複数のフィルタクラス360を集約している。これは、文書操作アクティビティが、複数のフィルタの組み合わせによって構成されることを表現している。
以下、複合機1の処理手順について説明する。図8は、アクティビティを利用可能にするための初期処理を説明するためのシーケンス図である。図8の処理は、複合機1の起動時や等、利用可能なアクティビティ31の一覧の表示が要求された場合等、少なくともアクティビティ31に対して実行要求が行われる前に実行される。
ステップS101において、プラグイン管理部21は、複合機1にインストールされている各アクティビティ31に対し、初期化を要求する。なお、インストールされているアクティビティ31の一覧情報は、複合機1の記憶装置に記録されている。したがって、プラグイン管理部21は、当該一覧情報を取得し、当該一覧情報に基づいて、各アクティビティ31に対する初期化要求を行う。
初期化を要求されたアクティビティ31は、当該アクティビティ31に対応する文書操作アクティビティオブジェクト350又は連携アクティビティオブジェクト340Aを生成し、生成されたオブジェクトをリクエスト管理部22に登録する(S102)。これにより、リクエスト管理部22は、登録されたオブジェクトを介して各アクティビティ31を操作可能となる。
次に、図9は、文書操作アクティビティの処理手順を説明するためのシーケンス図である。図9では、文書操作アクティビティの具体例として、ScanToStorageアクティビティ31aの処理手順が示されている。図中において、ScanToStorageオブジェクト351は、ScanToStorageアクティビティ31aに対応する文書操作アクティビティオブジェクト350Aを示す。また、読取フィルタオブジェクト361、文書加工フィルタオブジェクト362、保管文書登録フィルタオブジェクト363は、それぞれ読取フィルタ301、文書加工フィルタ311、保管文書登録フィルタ322に対応するフィルタオブジェクト360Aを示す。なお、アクティビティ31に対応するオブジェクトによって実行される処理は、当該アクティビティ31を構成するアクティビティロジック(図6参照)に基づく。また、フィルタに対応するオブジェクトによって実行される処理は、当該フィルタを構成するフィルタロジック(図5参照)に基づく。
ユーザによって、複合機1のオペレーションパネルを介してScanToStorageアクティビティ31aが実行対象として選択されると、ローカルUI部12は、ScanToStorageアクティビティ31aの名前(「ScanToStorage」)を指定して、その検索をリクエスト管理部22に要求する(S201)。続いて、リクエスト管理部22は、図8の処理によって登録されている各オブジェクト(文書操作アクティビティオブジェクト350Aや連携アクティビティオブジェクト340A)に対して、それぞれが対応するアクティビティ31の名前を問い合わせる(S202)。
続いて、リクエスト管理部22は、各オブジェクトより返却された名前の中から、ローカルUI部12による検索要求において指定された名前(「ScanToStorage」)を検索し、検索要求に係るアクティビティ31の存否を確認する(S203)。リクエスト管理部22は、ローカルUI部12による検索要求において指定された名前と一致する名前を有するアクティビティ31の存在が確認された場合は、当該アクティビティ31に対応するオブジェクトをローカルUI部12に返却する(S204)。ここでは、ScanToStorageアクティビティ31aが実行対象とされているため、ScanToStorageオブジェクト351が返却される。
続いて、ローカルUI部12は、ScanToStorageオブジェクト351に対して、実行条件の生成を要求する(S205)。続いて、ScanToStorageオブジェクト351は、ScanToStorageアクティビティ31aを構成する各フィルタに対応するオブジェクト(読取フィルタオブジェクト361、文書加工フィルタオブジェクト362、保管文書登録フィルタオブジェクト363)の生成等を行い(S206、S207、S208)、規定値としての実行条件をScanToStorageアクティビティ31a及びその構成フィルタに設定する。なお、規定値としての実行条件は、例えば、フィルタの構成要素である永続記憶領域情報(図5参照)の一部に含まれている。
続いて、ローカルUI部12は、ScanToStorageアクティビティ31aのアクティビティUI(図6参照)を呼び出すことによりScanToStorageアクティビティ31aの画面情報を取得し、当該画面情報に基づいてScanToStorage設定画面をオペレーションパネルに表示させる。
図10は、ScanToStorage設定画面の表示例を示す図である。ScanToStorage設定画面611は、ScanToStorageアクティビティ31aの実行条件を設定させるための画面であり、図中では、ScanToStorageアクティビティ31aを構成する各フィルタの設定画面(読取フィルタ設定画面611a、文書加工フィルタ設定画面611b、及び保管文書登録フィルタ設定画面611c)が表示された例が示されている。すなわち、各フィルタの実行条件を設定させることで、ScanToStorageアクティビティ31aの実行条件が設定されるからである。各フィルタの設定画面の画面情報は、ScanToStorageアクティビティ31aのアクティビティUIが、ローカルUI部12からの呼び出しに応じて各フィルタのフィルタ用設定UI(図5参照)を呼び出すことにより取得され、ScanToStorageアクティビティ31aの画面情報に含められる(マージされる)。なお、単に、各フィルタの設定画面を並べるだけでなく、各フィルタに対して一括して設定を行うためのUIをScanToStorage設定画面611に表示させるようにしてもよい。
それぞれのフィルタの設定画面において設定された実行条件は、それぞれのフィルタのフィルタロジック(図5参照)において保持される。
このように、フィルタ単位で実行条件の設定用のユーザインタフェースが実装されるため、或るフィルタを用いて実現されるアクティビティ31間では、当該フィルタのユーザインタフェースを共通的に用いることができる。したがって、アプリケーション(アクティビティ31)ごとに同様のユーザインタフェースを改めて実装する必要はなく、開発工数を削減することができる。
続いて、ユーザによってオペレーションパネルを介して実行の開始指示が入力されると、ローカルUI部12は、ScanToStorageオブジェクト351に実行を要求する(S209)。続いて、ScanToStorageオブジェクト351は、ScanToStorageアクティビティ31aを構成する各フィルタ(読取フィルタ301、文書加工フィルタ311、及び保管文書登録フィルタ332)をその実行順に従ってパイプによって接続し、ScanToStorageアクティビティ31aによる処理をジョブとしてリクエスト管理部22のジョブキューに登録する(S210)。ここで、「パイプによって接続する」とは、具体的には、各フィルタに対して入力側のパイプ及び出力側のパイプを識別する情報(例えば、ファイル名やメモリのアドレス等)を通知することをいう。したがって、パイプによって接続されることにより、それぞれのフィルタは、入力側のパイプ及び出力側のパイプを識別することが可能となる。
図11は、フィルタがパイプによって接続された状態を概念的に示す図である。図11では、各フィルタ(「F」)間がパイプ(「P」)によって接続されている様子が示されている。
なお、パイプにはその実体として利用される対象に応じて様々な種類が存在する。したがって、各フィルタ間をいずれのパイプによって接続するべきかが判断される必要がある。斯かる判断は、予め各アクティビティ31のアクティビティロジック内に固定的に定義されていてもよいし、記憶装置に次のようなテーブルを記録しておき当該テーブルに基づいて行われても良い。
図12は、フィルタとパイプの対応テーブルの例を示す図である。図12の対応テーブル60によれば、例えば、読取フィルタ301と印刷フィルタ321や、文書変換フィルタ312と印刷フィルタ321は、DMA(Direct Memory Access)パイプによって接続され、高速にデータが転送される。また、PC文書受信フィルタ305と文書変換フィルタ312とは、スプールパイプによって接続される。スプールパイプとは、HDDを用いるパイプであり、左側のフィルタから出力されたデータは、右側のフィルタが読み出すまでHDDにスプール(保存)される。それ以外のフィルタ間は、汎用メモリパイプによって接続される。汎用メモリパイプとは、有限サイズのRAMバッファによってデータ転送を行うパイプである。図12に示される対応テーブル60は、フィルタやパイプの拡張(追加)や削除等に応じて編集可能である。なお、図1における画像パイプ41は、上記の各種のパイプへのインタフェースを提供するモジュールを抽象的に表現したものである。
続いて、リクエスト管理部22は、ジョブキューに登録されたジョブのスケジューリングを行い(S211)、ScanToStorageアクティビティ31aの実行順が回ってくると、ScanToStorageオブジェクト351に実行を要求する(S212)。ScanToStorageオブジェクト351は、ScanToStorageアクティビティ31aを構成する各フィルタに対応するフィルタオブジェクト360Aに対して並列的に実行要求を出力する(S213、S214、S215)。すなわち、フィルタの呼び出しは、前に実行されるフィルタによる処理の完了を待たずに各フィルタに対してほぼ同時に行われる。フィルタ間の同期はパイプによってとられるからである。実行要求を受けた各フィルタは自分の入力側のパイプにデータが入力されるまで待機する。但し、入力フィルタには、入力側にパイプは存在しない。したがって、入力フィルタは実行要求に応じて処理を開始する。
図9の例において具体的に説明すると、読取フィルタ301は、スキャナによる画像データの読み取りを制御し、読み取られた画像データを出力側に接続されているパイプに出力する。文書加工フィルタ311は、入力側に接続されているパイプ(読取フィルタ301の出力側に接続されているパイプ)に対する画像データの入力を検知すると、実行条件において指定された画像変換処理を実行し、変換結果の画像データを出力側に接続されているパイプに出力する。保管文書登録フィルタ322は、入力側に接続されているパイプ(文書加工フィルタ311の出力側に接続されているパイプ)に対する画像データの入力を検知すると、当該画像データをハードディスクに保存する。以上によって、スキャナによって読み取られた画像データの保存といった機能(ScanToStorageアクティビティ31aの機能)が実現される。
各フィルタのオブジェクトは、それぞれの処理が完了すると、ScanToStorageオブジェクト351に対して実行の完了を通知する(S216、S217、S218)。ScanToStorageオブジェクト351は、実行を要求した全てのフィルタオブジェクト360Aより実行完了通知を受け取ると、ジョブの完了をローカルUI部12に通知する(S219)。
次に、連携アクティビティの処理手順について説明する。図13は、連携アクティビティの処理手順を説明するためのシーケンス図である。図13では、連携アクティビティの具体例として、ScanToEmailアクティビティ31cの処理手順が示されている。図13中、図9と同一部分には同一符号を付している。図13において、ScanToEmailオブジェクト353は、ScanToEmailアクティビティ31cに対応する連携アクティビティオブジェクト340Aを示す。また、StorageToEmailオブジェクト352は、StorageToEmailアクティビティ31bに対応する文書操作アクティビティオブジェクト350Aを示す。
ユーザによって、複合機1のオペレーションパネルを介してScanToEmailアクティビティ31cが実行対象として選択されると、ローカルUI部12は、ScanToEmailアクティビティ31cの名前(「ScanToEmail」)を指定して、その検索をリクエスト管理部22に要求する(S301)。続いて、リクエスト管理部22は、図8の処理によって登録されている各オブジェクト(文書操作アクティビティオブジェクト350Aや連携アクティビティオブジェクト340A)に対して、それぞれが対応するアクティビティ31の名前を問い合わせる(S302、S303、S304)。
続いて、リクエスト管理部22は、各オブジェクトより返却された名前の中から、ローカルUI部12による検索要求において指定された名前(「ScanToEmail」)を検索し、検索要求に係るアクティビティ31の存否を確認する(S305)。この際、リクエスト管理部22は、検索要求に係るアクティビティ31が連携アクティビティの場合は、当該アクティビティ31に関連付けられて管理されている連携定義情報に基づいて、連携対象となるアクティビティ31を特定し、その存否についても確認する。
図14は、連携アクティビティの連携定義情報の構成例を示す図である。図14では、連携アクティビティの具体例であるScanToEmailの連携定義情報が示されている。図14おいて、連携定義情報は、構成情報410、引継ぎデータ情報420、及び次ジョブ起動条件情報430より構成される。このうち、ステップS305では、構成情報410が利用される。構成情報410は、連携アクティビティ名、前アクティビティ名、及び後アクティビティ名等の項目より構成される。連携アクティビティ名は、当該連携定義情報の対象となっている連携アクティビティの名前である。前アクティビティ名は、当該連携アクティビティによって連携されるアクティビティ31のうち先に実行されるアクティビティ31の名前である。後アクティビティ名は、当該連携アクティビティによって連携されるアクティビティ31のうち後に実行されるアクティビティ31の名前である。したがって、ステップS305において、リクエスト管理部22は、ScanToEmailアクティビティ31cだけでなく、ScanToEmailアクティビティ31cによって連携されるScanToStorageアクティビティ31a及びStorageToEmailアクティビティ31bの存否についても確認する。なお、連携定義情報は、アクティビティ31の永続記憶領域情報の一部として管理されていてもよいし、複合機1の記憶装置においてファイルとして保存されていてもよい。
リクエスト管理部22は、ローカルUI部12による検索要求において指定された名前と一致する名前を有するアクティビティ31(ScanToEmailアクティビティ31c)と、ScanToEmailアクティビティ31cによって連携される全てのアクティビティ31の存在が確認された場合は、ScanToEmailアクティビティ31cに対応するScanToEmailオブジェクト353をローカルUI部12に返却する(S306)。
続いて、ローカルUI部12は、ScanToEmailオブジェクト353に対して、実行条件の生成を要求する(S307)。続いて、ScanToEmailオブジェクト353は、規定値としての実行条件をScanToEmailアクティビティ31cに設定すると共に、ScanToEmailアクティビティ31cを構成する各アクティビティ31に対応するオブジェクト(ScanToStorageオブジェクト351、StorageToEmailオブジェクト352)に対して実行条件の生成要求を行う(S309、S312)。なお、ScanToEmailオブジェクト353は、連携定義情報の構成情報410に基づいて、ScanToEmailアクティビティ31cを構成する各アクティビティ31を特定する。
ScanToEmailアクティビティ31cを構成する各アクティビティ31に対応するオブジェクトは、それぞれのアクティビティ31及びその構成フィルタに規定値としての実行条件を設定する。例えば、図中では、ScanToStorageオブジェクト351が、ScanToStorageアクティビティ31aを構成する各フィルタに対応するオブジェクト(読取フィルタオブジェクト361、文書加工フィルタオブジェクト362、保管文書登録フィルタオブジェクト363)の生成や実行条件の設定等を行っている様子が示されている(S309〜S311)。StorageToEmailオブジェクト352も同様の処理を実行するが、図中では便宜上省略されている。
続いて、ローカルUI部12は、ScanToEmail31cアクティビティ31cのアクティビティUIを呼び出すことによりScanToEmail31cアクティビティ31cの画面情報を取得し、当該画面情報に基づいてScanToEmail設定画面をオペレーションパネルに表示させる。
図15は、ScanToEmail設定画面の表示例を示す図である。図15において、ScanToEmail設定画面613には、ScanToStorageアクティビティ31bに対応するScanToStorageボタン613a、StorageToEmailアクティビティ31bに対応するStorageToEmailボタン613bが表示されている。このように、連携アクティビティの設定画面では、当該連携アクティビティによって連携されるアクティビティ31に対応するボタンが表示される。
ScanToEmail設定画面613において、ScanToStorageボタン613aが選択(タッチ)されると、ローカルUI部12は、ScanToStorageアクティビティ31aのアクティビティUIを呼び出すことによりScanToStorageアクティビティ31aの画面情報を取得し、当該画面情報に基づいてScanToStorageアクティビティ設定画面611を表示させる。
また、StorageToEmailボタン613bが選択されると、ローカルUI部12は、StorageToEmailアクティビティ31bのアクティビティUIを呼び出すことによりStorageToEmailアクティビティ31bの画面情報を取得し、当該画面情報に基づいてStorageToEmailアクティビティ設定画面612を表示させる。StorageToEmailアクティビティ設定画面612には、ScanToStorageアクティビティ設定画面611と同様に、それを構成する各フィルタの設定画面(保管文書読出フィルタ設定画面612a、文書加工フィルタ設定画面612b、及びメール送信フィルタ設定画面612c)が表示される。
それぞれのフィルタの設定画面において設定された実行条件は、それぞれのフィルタのフィルタロジック(図5参照)において保持される。
なお、StorageToEmail設定画面613における保管文書読出フィルタ設定画面612aでは、複合機1の記憶装置に保管されている文書データ(画像データ)の一覧の中から、読み出すデータを選択させるようなユーザインタフェースが想定される。しかし、ScanToEmailアクティビティ31cによってStorageToEmailアクティビティ31bが連携される場合、StorageToEmailアクティビティ31bによって処理対象(Emailの送信対象)とされる文書データは、ScanToStorageアクティビティ31aにより出力される文書データであり、ユーザに選択させる必要はない。したがって、StorageToEmail設定画面612では、保管文書読出フィルタ設定画面612aを表示させなくてもよい。また、表示させたとしても、処理対象とする文書データは選択できないようにすればよい。文書データを選択できないようにするための制御は、ScanToEmailアクティビティ31cが実行すればよい。
続いて、ユーザによってオペレーションパネルを介して実行の開始指示が入力されると、ローカルUI部12は、ScanToEmailオブジェクト353に実行を要求する(S313)。続いて、ScanToEmailオブジェクト353は、ScanToEmailアクティビティ31cによる処理をジョブとしてリクエスト管理部22のジョブキューに登録する(S314)。
リクエスト管理部22は、ジョブキューに登録されたジョブのスケジューリングを行い(S315)、ScanToEmailアクティビティ31cの実行順が回ってくると、ScanToEmailオブジェクト353に実行を要求する(S316)。ScanToStorageオブジェクト353は、構成情報410の前アクティビティ名に係るScanToStorageオブジェクト351に実行を要求する(S317)。以降ステップS318〜S323までは、図9におけるステップS213〜S218までと同様にScanToStorageアクティビティ31aの機能が実行される。ScanToStorageオブジェクト351は、実行を要求した全てのフィルタオブジェクト360Aより実行完了通知を受け取ると(S321、S322、S323)、ScanToStorageアクティビティ31aのジョブの完了をScanToEmailオブジェクト353に通知する(S324)。
続いて、ScanToEmailオブジェクト325は、次のジョブ(StorageToEmailアクティビティ31bのジョブ)の起動の要否判断を行う(S325)。この判断は、連携定義情報を構成する次ジョブ起動条件情報430に基づいて行われる。図14において、次ジョブ起動条件情報430は、情報取得先、取得内容、及び次ジョブ起動条件等の項目より構成される。情報取得先は、次のジョブの起動の要否判断を行うための情報(以下「判断情報」という。)の取得先の識別情報を示す。図14では、ScanToStorageアクティビティ31aが情報取得先とされている。取得内容は、判断情報として取得する情報の内容を示す。図14では、ScanToStorageアクティビティ31aの状態を示す情報の一例として実行結果を示す情報(正常終了(OK)又は異常終了(NG))が取得内容とされている。次ジョブ起動条件は、判断情報に基づく次のジョブの起動条件を示す。図14では、実行結果が正常終了(OK)であることが次のジョブの起動条件とされている。
したがって、図14の例に基づけば、ScanToEmailオブジェクト353は、次ジョブ起動条件情報430の情報取得先と取得内容との値に基づいて、ScanToStorageオブジェクト351より、ScanToStorageアクティビティ31aの実行結果を取得し(S326)、実行結果と次ジョブ起動条件とを比較する。
実行結果が正常終了でない場合(すなわち、次ジョブ起動条件が満たされない場合)、次に実行されるべきStorageToEmailアクティビティ31bは実行されない。一方、実行結果が正常終了である場合(すなわち、次ジョブ起動条件が満たされる場合)、ScanToEmailオブジェクト353は、連携定義情報を構成する引継ぎデータ情報420に基づいて、引継ぎデータの設定を行う(S327)。
ここで、引継ぎデータとは、連携されるアクティビティ31間において、前に実行されるアクティビティ31より後に実行されるアクティビティ31に引き継がれるべき情報(伝達されるべき情報)をいう。図14において、引継ぎデータ情報420は、情報取得先、取得内容、設定先、及び設定内容等の項目より構成される。取得先は、引継ぎデータの取得先の識別情報を示す。図14では、保管文書登録フィルタ322(ScanToStorageアクティビティ31aにおける出力フィルタ)が取得先とされている。取得内容は、取得先より取得されるべきデータの内容を示す。図14では、文書ID(すなわち、保管文書登録フィルタ322によって保存された画像データの文書ID)が取得内容とされている。設定先は、保管文書読出フィルタ302(StorageToEmail31bにおける入力フィルタ)が設定先とされている。設定内容は、設定先に設定されるべきデータの内容を示す。図14では文書IDが設定内容とされている。
したがって、図14の例に基づけば、ScanToEmailオブジェクト353は、ScanToStorageアクティビティ31aの保管文書登録フィルタ322より、保存された画像データの文書IDを取得し、その文書IDを引継ぎデータとしてStorageToEmailアクティビティ31bの保管文書読出フィルタ302の実行条件として設定する。
続いて、ScanToEmailオブジェクト353は、StorageToEmailオブジェクト352に対して実行を要求する(S328)。当該実行要求に応じ、StorageToEmail31aにより、保存されている画像データのEmailによる送信が実行される。この際、引継ぎデータに基づいてScanToStorageアクティビティ31aの保管文書登録フィルタ322によって保存されている画像データが処理対象とされる。なお、StorageToEmailアクティビティ31bの処理手順については、ScanToStorageアクティビティ31aと同様であるため、図13では省略されている。
StorageToEmailオブジェクト352より実行完了が通知されると、ScanToEmailオブジェクト353は、ScanToEmailアクティビティ31cのジョブの完了をローカルUI部12に通知する(S329)。このように、ScanToEmailアクティビティ31cによって、ScanToStorageアクティビティ31a及びStorageToEmailアクティビティ31bが連続的に実行されることで、スキャナによって読み取られた画像データのEmailによる送信といった機能が実現される。
次に、図13においてScanToEmailアクティビティ31cを例として説明した連携アクティビティの処理手順を、フローチャートを用いてより一般化して説明する。図16は、連携アクティビティの処理手順を説明するためのフローチャートである。
ステップS401において、構成情報410の前アクティビティ名に基づいて、連携されるアクティビティ31のうち先に実行すべきアクティビティ31を実行させる。なお、当該ステップは、図13におけるステップS317に対応する。
続いて、次ジョブ起動条件情報430の情報取得先と取得内容とに基づいて、判断情報を取得する(S402)。続いて、取得された判断情報を参照して、次ジョブ起動条件情報430の次ジョブ起動条件が満たされているか否かを判定する(S403)。次ジョブ起動条件が満たされていない場合(S403でNO)、後に実行すべきアクティビティ31の実行は行わない。
一方、次ジョブ起動条件が満たされている場合(S403でYES)、引継ぎデータ情報420に基づいて、引継ぎデータの設定の要否を判定する(S404)。具体的には、当該連携アクティビティに対して引継ぎデータ情報420が登録(設定)されているか否かを判定する。引継ぎデータの設定が必要である場合(すなわち、当該連携アクティビティに対して引継ぎデータ情報420が登録(設定)されている場合)(S404でYES)、引継ぎデータ情報420に基づいて取得先より引継ぎデータを取得し(S405)、設定先に引継ぎデータを設定する(S406)。引継ぎデータの設定が不要な場合(すなわち、当該連携アクティビティに対して引継ぎデータ情報420が登録(設定)されていない場合)(S404でNO)は、引継ぎデータの取得及び設定は行われない。
続いて、構成情報410の後アクティビティ名に基づいて、後に実行すべきアクティビティ31を実行させる。
次に、第二の実施の形態について説明する。図17は、第二の実施の形態におけるアクティビティ及びフィルタのクラス構成例を示す図である。図17中、図7と同一部分には同一符号を付し、その説明は省略する。
図17において、連携アクティビティクラス340は、図7における関連r1及びr2の代わりに、アプリケーションクラス330に対して関連r3及びr4を有している。関連r3は、連携される二つのアクティビティ31のうち、先に実行されるアクティビティ31に対応する連携アクティビティオブジェクト340A又は文書操作アクティビティオブジェクト350Aへの関連を示す。関連r4は、連携される二つのアクティビティ31のうち、後に実行されるアクティビティ31に対応する連携アクティビティオブジェクト340A又は文書操作アクティビティオブジェクト350Aへの関連を示す。
このことは、連携アクティビティ自身も連携の対象となり得ることを示す。連携アクティビティが他の連携アクティビティによって連携される場合、当該他の連携アクティビティは、連携対象とされる複数の連携アクティビティ又は文書操作アクティビティを連続的に実行させる。
例えば、図13のシーケンス図を例とすると、二つの文書操作アクティビティオブジェクト(ScanToStorageオブジェクト351及びStorageToEmailオブジェクト352)の少なくともいずれ一方が、連携アクティビティオブジェクト340Aに置き換わる。置き換わった連携アクティビティオブジェクト340Aは、図13におけるScanEmailオブジェクト353と同様の処理を実行する。すなわち、連携アクティビティオブジェクト340Aにより処理が階層的に実行される。その他の点については、図13と同様でよい。
次に、第三の実施の形態について説明する。図18は、第三の実施の形態におけるアクティビティ及びフィルタのクラス構成例を示す図である。図18中、図7と同一部分には同一符号を付し、その説明は省略する。
図18では、アクティビティリンククラス370が追加されている。アクティビティリンククラス370は、連携アクティビティクラス340と文書操作アクティビティクラス350との関連を保持するためのクラスである。以下、アクティビティリンククラス370のインスタンスを「アクティビティリンクオブジェクト370A」という。
アクティビティリンククラス370は、文書操作アクティビティクラス350に対して二つの関連(関連r5、関連r6)を有している。関連r5は、連携される二つの文書操作アクティビティのうち、先に実行される文書操作アクティビティに対応する文書操作アクティビティオブジェクト350Aへの関連を示す。関連r5において関連付けられる文書操作アクティビティオブジェクト350Aは、「前ジョブ」といったロール名によって識別される。関連r6は、連携される二つの文書操作アクティビティのうち、後に実行される文書操作アクティビティに対応する文書操作アクティビティオブジェクト350Aへの関連を示す。関連r6において関連付けられる文書操作アクティビティオブジェクト350Aは、「後ジョブ」といったロール名によって識別される。
また、連携アクティビティクラス340は、アクティビティリンククラス370を1対多の多重度で集約している。すなわち、図18のクラス構成によれば、次のような関係を構築することができる。
図19は、第三の実施の形態における連携アクティビティと文書操作アクティビティとの関係を示すオブジェクト図である。図19では、1つの連携アクティビティクオブジェクト340Aが二つのアクティビティリンクオブジェクト370Aを集約している例が示されている。各アクティビティリンクオブジェクト370Aは、それぞれ関連r5及びr6によって二つの文書操作アクティビティオブジェクト350と関連付けられる。但し、一方のアクティビティリンクオブジェクト370Aの後ジョブとしての文書操作アクティビティオブジェクト350Aと、他方のアクティビティリンクオブジェクト370Aの前ジョブとしての文書操作アクティビティオブジェクト350Aとは共通する。したがって、図19の例では、アクティビティリンクオブジェクト370Aを介して一つの連携アクティビティオブジェクト340Aに三つの文書操作アクティビティオブジェクト350Aが関連付けられていることになる。すなわち、図18のようなクラス構成によれば、一つの連携アクティビティによって3つ以上の文書操作アクティビティを連携させることができる。
このようなオブジェクト構成が構築される場合、図14における構成情報420は、前前アクティビティ名及び後アクティビティ名といった固定的な構成ではなく、連携されるアクティビティ31の数に応じて、各アクティビティ31の名前を保持する項目を追加可能なようにすればよい。
なお、第三の実施の形態では、図13のシーケンス図において、実行順が3番目以降のアクティビティについては、実行順が2番目のアクティビティに関する処理手順を同様に繰り返せばよい。
次に、第四の実施の形態について説明する。図20は、第四の実施の形態におけるアクティビティ及びフィルタのクラス構成例を示す図である。図20中、図18と同一部分には同一符号を付し、その説明は省略する。
図20において、アクティビティリンククラス370は、図18における関連r5及びr6の代わりに、アプリケーションクラス330に対して関連r7及びr8を有している。関連r7は、アクティビティリンクオブジェクト370Aによって関連付けられる二つのアクティビティ31のうち、先に実行されるアクティビティ31に対応する連携アクティビティオブジェクト340A又は文書操作アクティビティオブジェクト350Aへの関連を示す。関連r8は、アクティビティリンクオブジェクト370Aによって関連付けられる二つのアクティビティ31のうち、後に実行されるアクティビティ31に対応する連携アクティビティオブジェクト340A又は文書操作アクティビティオブジェクト350Aへの関連を示す。
このことは、連携アクティビティ自身もアクティビティリンクオブジェクト370Aを介して連携の対象となり得ることを示す。すなわち、第四の実施の形態は、第二の実施の形態と第三の実施の形態とを合成したものであり、一つの連携アクティビティによって、三つ以上の連携アクティビティ又は文書操作アクティビティの連携が可能な例である。
第四の実施の形態では、図13のシーケンス図において、第二の実施の形態及び第三の実施の形態において説明した変更を加えればよい。
上述したように、本発明の実施の形態における複合機1によれば、独立性の高いフィルタを組み合わせることによって構築されるアプリケーションであるアクティビティ31同士を連携させることができる。したがって、より柔軟に、かつ、効率的にアプリケーションを構築することができる。
特に、前に実行されるアクティビティ31の実行結果等、状態を示す情報に基づいて後に連携されるアクティビティ31の実行の要否が判定されるため、アクティビティ31の実行結果や状態に応じて柔軟な処理手順を実行させることができる。
したがって、本実施の形態において説明したように、複数のアクティビティ31の機能を連携させるだけでなく、各アクティビティ31において共通に必要とされる処理を抽出し、その抽出された処理を実行する新たなアクティビティ31を定義することで、より効率的にアプリケーションを構築することができる。
具体的には、例えば、アクティビティ31が異常終了した場合、その際の後処理は、エラーメッセージの表示等、各アクティビティ31において共通する点が多い。あるいは、全く同一のロジックであるかもしれない。斯かる場合に、各アクティビティ31に当該後処理を実装していては、同様のソースコードが分散され、保守作業が煩雑になってしまう。そこで、アクティビティ31の連携の仕組みを利用し、後処理を実行するアクティビティ31(以下「後処理アクティビティ」という。)を定義し、当該後処理アクティビティを他のアクティビティ31の後に実行されるように連携させるようにすれば、アクティビティ31ごとに後処理を実装する必要がなくなる。この場合、後処理アクティビティに関する次ジョブ起動条件は、前に実行されるアクティビティ31の実行結果がNG(異常終了)であることとすればよい。また、例えば、異常終了コード等を引継ぎデータとすればよい。
以上、本発明の実施例について詳述したが、本発明は斯かる特定の実施形態に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形・変更が可能である。
本発明の実施の形態における複合機のソフトウェア構成例を示す図である。 パイプ&フィルタの概念を説明するための図である。 本実施の形態の複合機における各機能を実現するためのフィルタの組み合わせの例を示す図である。 ScanToEmailアクティビティの構成を示す図である。 フィルタの構成要素を説明するための図である。 アクティビティの構成要素を説明するための図である。 第一の実施の形態におけるアクティビティ及びフィルタのクラス構成例を示す図である。 アクティビティを利用可能にするための初期処理を説明するためのシーケンス図である。 文書操作アクティビティの処理手順を説明するためのシーケンス図である。 ScanToStorage設定画面の表示例を示す図である。 フィルタがパイプによって接続された状態を概念的に示す図である。 フィルタとパイプの対応テーブルの例を示す図である。 連携アクティビティの処理手順を説明するためのシーケンス図である。 連携アクティビティの連携定義情報の構成例を示す図である。 ScanToEmail設定画面の表示例を示す図である。 連携アクティビティの処理手順を説明するためのフローチャートである。 第二の実施の形態におけるアクティビティ及びフィルタのクラス構成例を示す図である。 第三の実施の形態におけるアクティビティ及びフィルタのクラス構成例を示す図である。 第三の実施の形態における連携アクティビティと文書操作アクティビティとの関係を示すオブジェクト図である。 第四の実施の形態におけるアクティビティ及びフィルタのクラス構成例を示す図である。
符号の説明
1 複合機
10 ユーザインタフェース層
11 通信サーバ部
12 ローカルUI部
20 コントロール層
21 プラグイン管理部
22 リクエスト管理部
30 アプリケーションロジック層
31 アクティビティ
31a ScanToStorageアクティビティ
31b StorageToEmailアクティビティ
31c ScanToEmailアクティビティ(連携手段の一例)
40 デバイスサービス層
41 画像パイプ(伝達手段の一例)
42 データ管理部
50 デバイス制御層
51 スキャナ制御部
52 プロッタ制御部
53 メモリ制御部
54 Tel回線制御部
55 ネットワーク制御部
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 メール受信フィルタ
304 FAX受信フィルタ
305 PC文書受信フィルタ
306 レポートフィルタ
311 文書変換フィルタ
312 文書変換フィルタ
321 印刷フィルタ
322 保管文書登録フィルタ
323 メール送信フィルタ
324 FAX送信フィルタ
325 PC文書送信フィルタ
326 プレビューフィルタ
330 アプリケーションクラス
340 連携アクティビティクラス
350 文書操作アクティビティクラス
360 フィルタクラス
370 アクティビティリンククラス

Claims (18)

  1. それぞれ画像データの入力、出力、又は画像データに対する画像処理を実行するソフトウェア部品の組み合わせによりアプリケーションが構築される画像形成装置であって、
    複数の前記アプリケーションを連続的に実行させる連携手段を有することを特徴とする画像形成装置。
  2. 前記連携手段は、先に実行される前記アプリケーションより取得した情報を後に実行される前記アプリケーションに設定することを特徴とする請求項1記載の画像形成装置。
  3. 前記連携手段は、記憶装置に記録された定義情報において指定されている取得先より情報を取得し、前記定義情報において指定されている設定先に前記取得先より取得された情報を設定することを特徴とする請求項2記載の画像形成装置。
  4. 前記連携手段は、先に実行される前記アプリケーションの状態に応じて後に実行される前記アプリケーションの実行の要否を判定することを特徴とする請求項1乃至3いずれか一項記載の画像形成装置。
  5. 前記連携手段は、記憶装置に記録された定義情報において指定されている情報を先に実行される前記アプリケーションより取得し、取得された情報を前記定義情報において指定されている条件と比較することにより後に実行される前記アプリケーションの実行の要否を判定することを特徴とする請求項1乃至4いずれか一項記載の画像形成装置。
  6. 第一の前記連携手段は、第二の前記連携手段を前記アプリケーション又は第三の前記連携手段と連続的に実行させることを特徴とする請求項1乃至5いずれか一項記載の画像形成装置。
  7. それぞれ画像データの入力、出力、又は画像データに対する画像処理を実行するソフトウェア部品の組み合わせによりアプリケーションが構築される画像形成装置におけるアプリケーション実行方法であってであって、
    複数の前記アプリケーションを連続的に実行させる連携手順を有することを特徴とするアプリケーション実行方法。
  8. 前記連携手順は、先に実行される前記アプリケーションより取得した情報を後に実行される前記アプリケーションに設定することを特徴とする請求項7記載のアプリケーション実行方法。
  9. 前記連携手順は、記憶装置に記録された定義情報において指定されている取得先より情報を取得し、前記定義情報において指定されている設定先に前記取得先より取得された情報を設定することを特徴とする請求項8記載のアプリケーション実行方法。
  10. 前記連携手順は、先に実行される前記アプリケーションの状態に応じて後に実行される前記アプリケーションの実行の要否を判定することを特徴とする請求項7乃至9いずれか一項記載のアプリケーション実行方法。
  11. 前記連携手順は、記憶装置に記録された定義情報において指定されている情報を先に実行される前記アプリケーションより取得し、取得された情報を前記定義情報において指定されている条件と比較することにより後に実行される前記アプリケーションの実行の要否を判定することを特徴とする請求項7乃至10いずれか一項記載のアプリケーション実行方法。
  12. 第一の前記連携手順は、第二の前記連携手順を前記アプリケーション又は第三の前記連携手順と連続的に実行させることを特徴とする請求項7乃至11いずれか一項記載のアプリケーション実行方法。
  13. それぞれ画像データの入力、出力、又は画像データに対する画像処理を実行するソフトウェア部品の組み合わせによりアプリケーションが構築される画像形成装置を、
    複数の前記アプリケーションを連続的に実行させる連携手段として機能させるためのアプリケーション実行プログラム。
  14. 前記連携手段は、先に実行される前記アプリケーションより取得した情報を後に実行される前記アプリケーションに設定することを特徴とする請求項13記載のアプリケーション実行プログラム。
  15. 前記連携手段は、記憶装置に記録された定義情報において指定されている取得先より情報を取得し、前記定義情報において指定されている設定先に前記取得先より取得された情報を設定することを特徴とする請求項14記載のアプリケーション実行プログラム。
  16. 前記連携手段は、先に実行される前記アプリケーションの状態に応じて後に実行される前記アプリケーションの実行の要否を判定することを特徴とする請求項13乃至15いずれか一項記載のアプリケーション実行プログラム。
  17. 前記連携手段は、記憶装置に記録された定義情報において指定されている情報を先に実行される前記アプリケーションより取得し、取得された情報を前記定義情報において指定されている条件と比較することにより後に実行される前記アプリケーションの実行の要否を判定することを特徴とする請求項13乃至16いずれか一項記載のアプリケーション実行プログラム。
  18. 第一の前記連携手段は、第二の前記連携手段を前記アプリケーション又は第三の前記連携手段と連続的に実行させることを特徴とする請求項13乃至17いずれか一項記載のアプリケーション実行プログラム。
JP2007149386A 2007-06-05 2007-06-05 画像形成装置、アプリケーション実行方法及びアプリケーション実行プログラム Pending JP2008305004A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2007149386A JP2008305004A (ja) 2007-06-05 2007-06-05 画像形成装置、アプリケーション実行方法及びアプリケーション実行プログラム
US12/106,728 US20080307428A1 (en) 2007-06-05 2008-04-21 Image forming apparatus, application execution method, and storage medium

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2007149386A JP2008305004A (ja) 2007-06-05 2007-06-05 画像形成装置、アプリケーション実行方法及びアプリケーション実行プログラム

Publications (1)

Publication Number Publication Date
JP2008305004A true JP2008305004A (ja) 2008-12-18

Family

ID=40097081

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007149386A Pending JP2008305004A (ja) 2007-06-05 2007-06-05 画像形成装置、アプリケーション実行方法及びアプリケーション実行プログラム

Country Status (2)

Country Link
US (1) US20080307428A1 (ja)
JP (1) JP2008305004A (ja)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010198299A (ja) * 2009-02-25 2010-09-09 Ricoh Co Ltd 画像処理装置、情報処理装置、ユーザインタフェース提供方法、画像処理システムおよびプログラム
JP2013140423A (ja) * 2011-12-28 2013-07-18 Ricoh Co Ltd 情報処理装置及び印刷処理プログラム
US8745640B2 (en) 2009-09-10 2014-06-03 Ricoh Company, Ltd. Integration and management apparatus, integration and management system and computer readable information recording medium
WO2015075856A1 (en) * 2013-11-25 2015-05-28 International Business Machines Corporation Cross-platform workload processing
US9626226B2 (en) 2013-11-25 2017-04-18 International Business Machines Corporation Cross-platform workload processing

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5790301B2 (ja) 2011-08-18 2015-10-07 株式会社リコー ネットワークシステム、画像投影装置、プログラム
JP6446995B2 (ja) * 2013-10-29 2019-01-09 株式会社リコー 情報処理システム及び情報処理方法
JP6569415B2 (ja) 2015-09-15 2019-09-04 株式会社リコー 表示入力装置、画像形成装置及び電子機器と表示制御方法並びにプログラム

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0916527A (ja) * 1995-06-30 1997-01-17 Nippon Telegr & Teleph Corp <Ntt> 大規模分散情報処理方法及びシステム
JP2000194576A (ja) * 1998-12-28 2000-07-14 Hitachi Ltd ジョブ運用管理システム
JP2000267867A (ja) * 1999-03-16 2000-09-29 Nippon Steel Corp 処理フロー制御装置、処理フロー制御方法、及び記憶媒体
JP2007128356A (ja) * 2005-11-04 2007-05-24 Canon Inc 情報処理装置及び方法及びシステム

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3049561B2 (ja) * 1990-05-21 2000-06-05 東洋通信機株式会社 プロダクションシステムとプロダクションシステムの変換装置
US5991535A (en) * 1996-07-03 1999-11-23 Sun Microsystems, Inc. Visual composition tool for constructing application programs using distributed objects on a distributed object network
US7164422B1 (en) * 2000-07-28 2007-01-16 Ab Initio Software Corporation Parameterized graphs with conditional components
US20030195763A1 (en) * 2002-04-11 2003-10-16 International Business Machines Corporation Method and system for managing a distributed workflow
US7805327B1 (en) * 2002-07-31 2010-09-28 Sap Aktiengesellschaft Transformations between combined and individual workflows
JP2008009696A (ja) * 2006-06-29 2008-01-17 Fuji Xerox Co Ltd 画像処理装置及びプログラム

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0916527A (ja) * 1995-06-30 1997-01-17 Nippon Telegr & Teleph Corp <Ntt> 大規模分散情報処理方法及びシステム
JP2000194576A (ja) * 1998-12-28 2000-07-14 Hitachi Ltd ジョブ運用管理システム
JP2000267867A (ja) * 1999-03-16 2000-09-29 Nippon Steel Corp 処理フロー制御装置、処理フロー制御方法、及び記憶媒体
JP2007128356A (ja) * 2005-11-04 2007-05-24 Canon Inc 情報処理装置及び方法及びシステム

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010198299A (ja) * 2009-02-25 2010-09-09 Ricoh Co Ltd 画像処理装置、情報処理装置、ユーザインタフェース提供方法、画像処理システムおよびプログラム
US8745640B2 (en) 2009-09-10 2014-06-03 Ricoh Company, Ltd. Integration and management apparatus, integration and management system and computer readable information recording medium
US9489219B2 (en) 2009-09-10 2016-11-08 Ricoh Company, Ltd. Integration and management apparatus, integration and management system and computer readable information recording medium
JP2013140423A (ja) * 2011-12-28 2013-07-18 Ricoh Co Ltd 情報処理装置及び印刷処理プログラム
US9135533B2 (en) 2011-12-28 2015-09-15 Ricoh Company Limited Information processing apparatus configured to establish a workflow using plugins, information processing method, and computer-readable storage medium performing the same
WO2015075856A1 (en) * 2013-11-25 2015-05-28 International Business Machines Corporation Cross-platform workload processing
US9626226B2 (en) 2013-11-25 2017-04-18 International Business Machines Corporation Cross-platform workload processing
US9652294B2 (en) 2013-11-25 2017-05-16 International Business Machines Corporation Cross-platform workload processing
US11311722B2 (en) 2013-11-25 2022-04-26 International Business Machines Corporation Cross-platform workload processing

Also Published As

Publication number Publication date
US20080307428A1 (en) 2008-12-11

Similar Documents

Publication Publication Date Title
JP4861883B2 (ja) 画像形成装置及びアプリケーション実行方法
US7209249B2 (en) Method of and apparatus for image formation, and computer product
JP3679349B2 (ja) 画像形成装置、画像形成方法、画像形成プログラムおよびアプリケーションプログラム
JP4978661B2 (ja) 画像処理装置
JP2008305004A (ja) 画像形成装置、アプリケーション実行方法及びアプリケーション実行プログラム
JP6066006B2 (ja) 画像形成装置
JP5145871B2 (ja) 画像処理装置およびアプリケーション実行方法
US20080168441A1 (en) Data processing apparatus, image processing apparatus, data processing method, and computer-readable recording medium
US20090064201A1 (en) Image Forming Apparatus, Application Management Method, and Computer-Readable Recording Medium Having Application Management Program
JP4922836B2 (ja) 画像形成装置及びアプリケーション構築方法
JP2005287042A (ja) 画像形成装置、画像形成方法および画像形成プログラム
JP5037271B2 (ja) 画像形成装置、情報処理方法及び情報処理プログラム
JP5256952B2 (ja) 画像処理装置、画像処理方法、画像処理プログラム
JP7080061B2 (ja) 画像処理装置
JP2009294773A (ja) 情報処理装置、情報処理方法、情報処理プログラム、記録媒体
JP2005304016A (ja) 画像形成装置、画像形成方法および画像形成プログラム
EP2056197A1 (en) Image forming device, image formation controlling method, and image formation controlling program
JP2010026655A (ja) 画像処理装置、マクロ情報管理方法、及びマクロ情報管理プログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20100222

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20110616

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110628

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110819

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20120508