以下、本発明の実施の形態について図面を参照して説明する。以下の説明では同一の部品には同一の符号を付してある。それらの名称および機能も同じである。したがってそれらについての詳細な説明は繰返さない。
図1は、本発明の実施の形態の1つにおけるワークフロー実行システムの全体概要を示す図である。図1を参照して、ワークフロー実行システム1は、ネットワーク2にそれぞれ接続された複合機(以下、「MFP」という)3,4と、パーソナルコンピュータ(以下「PC」いう)200と、サーバ300と、を含む。本実施の形態においては、PC200で入力されたワークフローがサーバ300により実行される場合を例に説明する。この場合、サーバ300は、ワークフローにより定義される複数の処理を、MFP(Multi Function Peripheral)3,4に実行させるために、MFP3,4を制御する。ここでは、ワークフローを実行するサーバ300をワークフロー実行装置といい、ワークフローにより定義される複数の処理を実行するMFP3,4を処理実行装置という。
なお、PC200およびサーバ300は、処理実行装置として機能することが可能である。また、サーバ300をワークフロー実行装置として機能させる場合を例に説明するが、サーバ300が有する機能を、MFP3,4またはPC200に搭載するようにしてもよい。この場合は、MFP3,4またはPC200がワークフロー実行装置として機能するので、サーバ300は不要である。
さらに、2台のMFP3,4が処理実行装置として機能し、1台のサーバ300がワークフロー実行装置として機能する場合を例に説明するが、台数を限定するものではなく、それぞれ1台以上あればよい。また、ユーザがワークフローをPC200に入力する場合を例に説明するが、ユーザがサーバ300またはMFP3,4にワークフローを入力するようにしてもよい。すなわち、MFP3,4のうちいずれか1つがスタンドアロンで、ワークフロー実行装置および処理実行装置として機能するようにしてもよい。
PC200およびサーバ300は、一般的なコンピュータである。MFP3,4は、スキャナ機能、プリンタ機能、コピー機能、ファクシミリ機能、データ送信機能、画像処理等の複数の機能を備える。
ネットワーク2は、ローカルエリアネットワーク(LAN)であり、接続形態は有線または無線を問わない。またネットワーク2は、LANに限らず、ワイドエリアネットワーク(WAN)、インターネットであってもよく、また、専用回線に限らず、公衆交換電話網(PSTN)等で接続されたネットワークであってもよい。
本実施の形態におけるワークフロー実行システム1は、ワークフロー実行装置として機能するサーバ300は、処理実行装置として機能するMFP3,4それぞれが有する機能を予め記憶している。MFP3,4それぞれが有する機能は、PC200において、ワークフローの入力を受け付ける際に、PC200により参照される。PC200を操作するユーザは、サーバ300に記憶されたMFP3,4それぞれが有する機能のうちから複数の機能を選択し、選択された複数の機能をそれぞれ実行する複数の一連の処理を含むワークフローを定義することが可能である。この場合、ユーザは、MFP3,4のいずれかに処理を実行させるか否かを必ずしも決定する必要はないが、MFP3,4のうち複数の処理の少なくとも1つを実行する装置を特定するワークフローを入力することができる。例えば、サーバ300をWebサーバとして機能させ、PC300にブラウザプログラムをインストールするようにすれば、ユーザがPC200にMFP3,4が実行可能な複数の機能の2以上を組み合わせた複数の処理を定義するワークフローを入力し、PC200に入力されたワークフローをサーバ300が受信することができる。
また、サーバ300は、複数の一連の処理を定義したワークフローが入力されると、そのワークフローを実行する。ワークフローの実行は、ワークフローにより定義される処理対象となるデータに対して、ワークフローにより定義される複数の一連の処理を順に、処理実行装置であるMFP3,4に実行させることをいう。具体的には、ワークフローで定義される複数の一連の処理を、最初から順に1つ選択し、処理対象となるデータと、選択した処理を実行するためのコマンドとを、選択した処理を実行可能なMFP3,4のいずれかに送信する。コマンドは、例えば、印刷処理であれば用紙サイズ、拡大または縮小率、印刷枚数等の印刷条件等、処理を実行するための条件を含むようにしてもよい。これにより、MFP3,4のうちコマンドとデータとを受信する装置は、コマンドに従ってデータを処理し、処理後のデータおよび処理結果、または処理後のデータが存在しない処理の場合には処理結果をサーバ300に返信する。
また、ワークフローにより定義される処理は、データの送信処理と印刷処理との組み合わせ等、データの内容を変更しない複数の処理の組み合わせを含む場合があり、この場合には、データの内容を変更しない複数の処理を並列して実行することが可能である。サーバ300は、ワークフローが並列して実行可能な複数の処理を定義する場合には、並列して実行可能な複数の処理を実行するためのコマンドと同一のデータとをMFP3,4にそれぞれ送信し、MFP3,4に並列して異なる処理を実行させる。
サーバ300において、MFP3,4のうち選択した処理を実行させる装置の決定は、その装置がワークフローで指定されている場合には、指定されている装置に決定し、いずれか一方が実行可能な場合には実行可能な装置に決定し、MFP3,4のいずれもが選択した処理を実行可能な場合には、任意の一方に決定する。なお、MFP3,4のいずれもが選択した処理を実行可能な場合には、予め定めた基準に従って実行させる装置を決定するようにしてもよい。予め定めた基準とは、MFP3,4の負荷を監視するようにし、負荷の低い装置に決定する基準、MFP3,4の処理能力を予め記憶しておき、処理能力の高い装置に決定する基準、MFP3,4で処理を実行するのに必要なコストを予め記憶しておき、コストの低い装置に決定する基準等である。
さらに、サーバ300は、印刷枚数制限管理処理を実行する。サーバ300は、印刷枚数制限管理処理を実行するに際して、予め上限管理テーブルを記憶する。上限管理テーブルは、ユーザ毎に、上限値と印刷枚数とを関連付ける上限管理レコードを含む。上限管理レコードは、ユーザを識別するためのユーザ識別情報が設定される項目と、そのユーザに割り当てられた上限値が設定される項目と、そのユーザの指示によりMFP3およびMFP4により印刷された枚数が設定される項目とを含み、ユーザ識別情報と、上限値と、印刷枚数とを関連付ける。
サーバ300は、管理者によりユーザ識別情報と上限値とが入力されると、上限管理テーブルに含まれる上限管理レコードのうち、入力されたユーザ識別情報を含む上限管理レコードの上限値の項目に入力された上限値を設定する。また、MFP3,4それぞれによりプリントまたはコピー処理が実行されると、そのプリントまたはコピー処理の実行を指示したユーザのユーザ識別情報と印刷枚数とを含む実績情報を受信する。サーバ300は、MFP3,4のいずれかから実績情報を受信すると、上限管理テーブルに含まれる上限管理レコードのうち、受信された実績情報に含まれるユーザ識別情報を含む上限管理レコードの印刷枚数の項目に設定されている印刷枚数を、それに実績情報に含まれる印刷枚数を加算した値に変更する。
一方、MFP3,4は、プリントまたはコピー処理を実行する前の段階で、プリントまたはコピー処理の実行を指示したユーザのユーザ識別情報を含む上限枚数の問合せ情報を送信し、サーバ300から、そのユーザ識別情報を含む上限管理レコードを受信する。MFP3,4は、受信された上限管理レコードに設定されている上限値から印刷枚数を減算した印刷可能枚数と、プリントまたはコピー処理を実行することによる印刷予定枚数とを比較し、印刷予定枚数が印刷可能枚数以下であることを条件に、プリントまたはコピー処理を実行する。
なお、MFP3,4が送信する問合せ情報に、印刷予定枚数を含めるようにし、サーバ300が、印刷予定枚数が印刷可能枚数以下であるか否かを判断するようにしてもよい。この場合には、サーバ300が、印刷予定枚数が印刷可能枚数以下であることを条件に許可信号をMFP3,4に送信し、MFP3,4は、サーバ300から許可信号を受信することを条件に、プリントまたはコピー処理を実行する。
次に処理実行装置であるMFP3,4について説明する。ここでは、MFP3,4のハードウェア構成および機能を同じとし、以下の説明では特に言及しない限りMFP3を例に説明する。なお、MFP3,4のハードウェア構成および機能を異なるようにしてもよい。
図2は、MFPのハードウェア構成の一例を示すブロック図である。図2を参照して、MFP3は、メイン回路101を含み、メイン回路101は、ADF10と、画像読取部20と、画像形成部30と、給紙部40と、ファクシミリ部50と、接続される。メイン回路101は、中央演算装置(CPU)111と、CPU111の作業領域として使用されるRAM(Random Access Memory)112と、CPU111が実行するプログラム等を記憶するためのEEPROM(Electronically Erasable Programmable Read Only Memory)113と、表示部114と、操作部115と、大容量記憶装置としてのハードディスクドライブ(HDD)116と、データ通信制御部117と、を含む。
CPU111は、表示部114、操作部115、HDD116およびデータ通信制御部117とそれぞれ接続され、メイン回路101の全体を制御する。また、CPU111は、ADF10、画像読取部20、画像形成部30、給紙部40およびファクシミリ部50とそれぞれ接続され、MFP3の全体を制御する。
表示部114は、液晶表示装置(LCD)、有機ELD(Electro Luminescence Display)等のディスプレイであり、ユーザに対する指示メニューや取得した画像データに関する情報等を表示する。操作部115は、複数のキーを備え、キーに対応するユーザの操作による各種の指示、文字、数字などのデータの入力を受け付ける。操作部115は、表示部114上に設けられたタッチパネルを含む。表示部114と操作部115とで、MFP3本体の上面に設けられる操作パネル9が構成される。
データ通信制御部117は、TCP(Transmission Control Protocol)またはUDP(User Datagram Protocol)等の通信プロトコルで通信するためのインターフェースであるLAN端子118と、シリアル通信するためのシリアルインターフェース端子119とを有する。データ通信制御部117は、CPU111からの指示に従って、LAN端子118またはシリアルインターフェース端子119に接続された外部の機器との間でデータを送受信する。
LAN端子118に、ネットワーク2に接続するためのLANケーブルが接続される場合、データ通信制御部117は、LAN端子118を介して、MFP4、PC200またはサーバ300と通信することが可能である。さらに、LANケーブルがインターネットに接続される場合には、インターネットに接続された電子メールサーバと通信することにより、電子メールの送受信が可能である。
また、CPU111は、データ通信制御部117を制御して、メモリカード119AからCPU111が実行するためのプログラムを読出し、読み出したプログラムをRAM112に記憶し、実行する。なお、CPU111が実行するためのプログラムを記憶する記録媒体としては、メモリカード119Aに限られず、フレキシブルディスク、カセットテープ、光ディスク(CD−ROM(Compact Disc−Read Only Memory)/MO(Magnetic Optical Disc)/MD(Mini Disc)/DVD(Digital VerSatile Disc))、ICカード、光カード、マスクROM、EPROM(EraSable Programmable ROM)、EEPROM(Electronically EPROM)などの半導体メモリ等の媒体でもよい。さらに、CPU111がインターネットに接続されたコンピュータからプログラムをダウンロードしてHDD116に記憶する、または、インターネットに接続されたコンピュータがプログラムをHDD116に書込みするようにして、HDD116に記憶されたプログラムをRAM112にロードしてCPU111で実行するようにしてもよい。ここでいうプログラムは、CPU111により直接実行可能なプログラムだけでなく、ソースプログラム、圧縮処理されたプログラム、暗号化されたプログラム等を含む。
ファクシミリ部50は、公衆交換電話網(PSTN)7に接続され、PSTN7にファクシミリデータを送信する、またはPSTN7からファクシミリデータを受信する。ファクシミリ部50は、受信したファクシミリデータをHDD116に記憶する、または画像形成部30でファクシミリデータを用紙にプリントする。また、ファクシミリ部50は、HDD116に記憶されたデータをファクシミリデータに変換して、PSTN7に接続されたファクシミリ装置または他のMFPに出力する。これにより、HDD116に記憶されたデータをファクシミリ装置または他のMFP4に出力することができる。
図3は、サーバ300のハードウェア構成の一例を示すブロック図である。図3を参照して、サーバ300は、それぞれがバス320に接続されたCPU301と、CPU301が実行するプログラム等を記憶するためのROM303と、CPU301の作業領域として用いられるRAM305と、大容量記憶装置としてのHDD307と、PC300をネットワーク2に接続するための通信I/F311と、ユーザとのインターフェースとなる操作部313と、フラッシュメモリ308が装着されるカードI/F309と、を含む。
操作部313は、キーボードとマウスなどのポインティングデバイスとを含む入力部315と、データを表示する液晶表示装置等からなる表示部317とを含む。
なお、ここではCPU301がROM303に記憶されたプログラムを実行する例を説明するが、フラッシュメモリ308に記憶されたプログラムをRAM305にロードし、実行するようにしてもよい。また、プログラムを記憶する記録媒体としては、フラッシュメモリ308に限られず、上述した他の媒体でもよい。
さらに、CPU301がネットワーク2に接続されたコンピュータからプログラムをダウンロードしてHDD306に記憶する、または、ネットワーク2に接続されたコンピュータがプログラムをHDD306に書込みするようにして、HDD306に記憶されたプログラムをRAM312にロードしてCPU301で実行するようにしてもよい。
図4は、サーバ300が備えるCPUが有する機能の一例を、HDDに記憶される情報とともに示す機能ブロック図である。図4を参照して、CPU301は、ユーザ識別情報とワークフローとを受け付けるワークフロー受付部51と、ユーザ識別情報およびワークフローをそれらが受け付けられた時刻と関連付けてHDD307記憶するワークフロー記憶部53と、ワークフローを実行するワークフロー実行部55と、ワークフロー実行部55を制御するワークフロー制御部57と、複数のユーザ毎に印刷枚数を制限する印刷枚数制限管理を実行する印刷枚数制限管理部59と、を含む。
ワークフロー受付部51は、通信I/F311がPC300からユーザ識別情報とワークフローと、処理対象データとの組を受信すると、受信された組を受け付け、ワークフロー記憶部53に出力する。ユーザ識別情報は、ワークフローの実行を指示したユーザを識別するための識別情報である。処理対象データは、ワークフローが実行される際に、処理の対象となるデータをいう。PC300から受信される処理対象データは、処理対象データそのものであってもよいし、サーバ300、PC200およびMFP3,4のいずれかに記憶されたデータであってもよい。処理対象データが、データそのものでない場合は、処理対象データを識別するためのデータ識別情報がPC200から受信される。データ識別情報は、それが記憶される装置を識別するための装置識別情報と、ファイル名とを含むネットワーク2におけるアドレスであり、例えば、URLである。ワークフローは、MFP3,4がそれぞれ実行可能な複数の処理のうちから選ばれた複数の処理と、それらを実行するための設定値と、実行順とを定義する。ここでは、ユーザがPC200にログインし、PC200にワークフローを入力することにより、PC200がサーバ300にログインしたユーザのユーザ識別情報と、ワークフローと、処理対象データとの組をサーバ300に送信する場合を例に説明する。
例えば、ワークフロー受付部51は、Webサーバとして機能し、HDD307に予め記憶されたMFP3,4それぞれが実行可能な処理を識別するための処理識別情報から複数を順番とともに、ユーザが指定可能なWebページをPC300に送信する。このWebページは、ユーザにより指定された複数の処理識別情報で特定される複数の処理それぞれを実行するための設定値を受け付けることが可能である。さらに、このWebページは、ワークフローの処理対象となるデータを指定可能である。ユーザが、ブラウザプログラムを実行するPC200のディスプレイに表示されるWebページに従って、処理識別情報と、その処理識別情報で特定される処理を実行するための設定値と、実行順と、処理対象データとを指定すれば、指定された複数の処理識別情報と、それらを実行するための設定値と、実行順とを定義するワークフローと、PC200にログインしているユーザのユーザ識別情報と、処理対象データとが、サーバ300に送信される。
ワークフロー記憶部53は、ワークフロー受付部51からユーザ識別情報とワークフローと処理対象データとの組が入力されると、ユーザ識別情報と、ワークフローと、処理対象データと、ワークフローが受け付けられた日時とを関連付けたワークフロー定義データを生成し、それをHDD307に記憶する。これにより、ワークフロー定義データ81がHDD307に記憶される。
ここでワークフロー定義データについて説明する。図5は、ワークフロー定義データのフォーマットの一例を示す図である。図5を参照して、ワークフロー定義データは、ユーザ識別情報の項目と、登録時刻の項目と、ワークフローの項目と、処理対象の項目とを含む。ユーザ識別情報の項目は、ワークフローの実行を指示したユーザを識別するためのユーザ識別情報が設定される。登録時刻の項目は、ワークフローが受け付けられた日時が設定される。ワークフローの項目は、ワークフローが設定される。
処理対象の項目は、ワークフローにより定義される第1番目の処理の対象となるデータを識別するためのデータ識別情報が設定される。ワークフロー記憶部53は、PC200から受信される処理対象データがデータそのものである場合、処理対象データをHDD307に記憶し、記憶したデータを識別するためのデータ識別情報(例えば、ファイル名)を処理対の項目に設定する。また、PC200から受信される処理対象データがデータ識別情報である場合、そのデータ識別情報で特定されるデータを取得し、取得されたデータをHDD307に記憶し、記憶したデータを識別するためのデータ識別情報を処理対の項目に設定する。なお、ワークフローで定義される処理、特に第1番目の処理が、例えば、原稿を読み取るスキャン処理の場合は、その処理が実行されることによりデータが生成されるので、処理対象の項目には何も設定されない。
図6は、ワークフローの一例を示す図である。図6を参照して、ワークフロー定義データは、手順の項目と、処理IDの項目と、設定値の項目と、処理結果の項目と、を含む。手順の項目は、ワークフローにおける複数の処理それぞれの順番が設定される。処理IDの項目は、処理を特定するための処理識別情報が設定される。処理IDは、MFP3,4が実行可能な処理を識別するための処理識別情報である。設定値の項目は、処理識別情報で特定される処理を実行するために用いられる設定値が設定される。ワークフロー定義データにおいて、手順の項目と、処理IDの項目と、設定値の項目とは、PC200においてワークフローが入力され、ワークフロー受付部51により受け付けられる段階で、それぞれの値が設定される。処理結果の項目は、ワークフロー定義データが生成される段階では、処理IDの項目に設定された処理識別情報で識別される処理が未だ実行されていないことを示す「未」の値が設定され、処理IDの項目に設定された処理識別情報で識別される処理が実行され、その処理が終了した段階で、処理が実行されたことを示す「済」の値が設定される。
第1番目の手順としては、処理識別情報「スキャン」の処理が定義されている。設定値は「解像度」と、「色」と、「データ形式」とが設定される。1番目の手順で定義された処理が実行されると、設定値に設定された「解像度」および「色」で原稿が読み取られ、設定値に設定された「データ形式」のデータが生成される。例えば、ここでは、「データ形式」の設定値にビットマップ形式が設定された場合を例に説明する。
第2番目の手順としては、処理識別情報「データ変換」の処理が定義されている。設定値は、「データ形式」と、「Searchable」が設定されている。「データ形式」の設定値は、データ形式を変換した後のデータ形式が設定される。「Searchable」の設定値は、イメージデータを検索可能なデータへの変換を示す。検索可能なデータとは、例えば、イメージデータに含まれる文字を文字認識して得られるテキストデータを付加した検索可能なデータである。ここでは、「データ形式」の設定値にPDF(Portable Document Format)が設定され、「Searchable」の設定値がオンに設定された場合を例に説明する。第2番目の手順で定義された処理が実行されると、手順1で定義された処理が実行されて生成されるビットマップ形式のデータが、PDFのデータに変換されるとともに文字認識され、テキストデータを付加したSearchablePDFのデータに変換する処理が実行される。
第3番目の手順としては、処理識別情報「印刷」の処理が定義されている。設定値は、「印刷枚数」と、「印刷モード」とが設定されている。ここでは、「印刷枚数」の設定値に「30」が設定され、「印刷モード」の設定値に「モノクロ」が設定される場合を例に説明する。第3番目の手順が実行されると、第2番目の手順で定義された処理が実行されて生成されるSearchablePDFのデータの画像が、MFP3、またはMFP4のいずれかによって、モノクロで30枚印刷される。
なお、ここでは、手順1〜手順3の3つの処理を定義するワークフローを例に示したが、ワークフローは、2以上の複数の処理を定義するものであればよく、4以上の処理を定義してもよい。
図4に戻って、ワークフロー実行部55は、HDD307に記憶されたワークフロー定義データ81に含まれるワークフローを実行する。ワークフロー実行部55は、HDD307に複数のワークフロー定義データ81が記憶されている場合、登録されたものから順に1つのワークフロー定義データ81を選択し、選択されたワークフロー定義データに含まれるワークフローを実行する。ワークフロー実行部55は、HDD307に記憶されている複数のワークフロー定義データ81のうち登録時刻の項目に設定されている時刻が前のものから順に1つを選択し、ワークフローを実行する。具体的には、選択されたワークフロー定義データ81の手順の項目に設定されている数字の小さいものから順に、対応する処理IDの項目に設定されている処理識別情報と、設定値の項目に設定されている設定値と、処理対象の項目に設定されているデータ識別情報とを取得し、MFP3またはMFP4のいずれかに取得された処理識別情報と、設定値と、データ識別情報との組を送信する。これにより、MFP3またはMFP4のうち処理識別情報と設定値と、データ識別情報との組を受信したものは、データ識別情報で特定されるデータを取得し、取得されたデータに対して、処理識別情報で識別される処理を設定値に従って実行し、処理を実行した後のデータをサーバ300に返信する。ワークフロー実行部55は、MFP3またはMFP4から処理結果を受信すると、ワークフロー定義データ81を更新する。具体的には、ワークフロー定義データ81に含まれるワークフローの実行された処理の処理識別情報に対応する処理結果を「済」に変更する。
なお、ワークフローで定義される処理が、例えばスキャン処理のようにその処理が実行されることによりデータを生成する処理の場合、ワークフロー実行部55は、処理対象となるデータのデータ識別情報をMFP3,4に送信しない。
ワークフロー実行部55は、複数のワークフローを並列で実行することが可能である。ここでは、ワークフロー実行部55が、2つのワークフローを並列で実行する場合を例に説明する。なお、ワークフロー実行部55が、並列で実行可能なワークフローは、2以上であれば、2つに限定されるものではない。
ワークフロー実行部55は、それぞれが1つのワークフローを実行する第1実行部61と、第2実行部63とを含む。第1実行部61および第2実行部63は、HDD307に記憶されている少なくとも1つのワークフロー定義データ81のうちから、未だ実行されていないワークフローを含むワークフロー定義データを選択し、選択されたワークフロー定義データに含まれるワークフローを実行する。第1実行部61および第2実行部63がHDD307に記憶されている少なくとも1つのワークフロー定義データ81のうちから選択するワークフロー定義データは、第1番目の処理(手順の項目が「1」の処理)未だ実行されていないワークフローを含むワークフロー定義データであれば、任意のものを選択することが可能である。例えば、ユーザ識別情報が同じワークフロー定義データを選択するようにしてもよい。ここでは、登録時刻の項目に設定された時刻が前のものから選択する場合を例に説明する。
第1実行部61がワークフロー定義データに含まれるワークフローを実行している最中に、第1実行部61が選択するワークフロー定義データの登録時刻の次ぎの登録時刻のワークフロー定義データに含まれるワークフローを第2実行部63が実行する場合を例に説明する。換言すれば、第2実行部63が、第1実行部61の選択するワークフロー定義データよりも登録時刻が後のワークフロー定義データを選択する。
第1実行部61および第2実行部63それぞれは、ワークフロー定義データを選択すると、選択されたワークフロー定義データを、ワークフロー制御部57に出力するとともに、ワークフロー制御部57により制御されて、ワークフローを実行する。より具体的には、第1実行部61および第2実行部63それぞれは、ワークフロー定義データに含まれるワークフローにより定義される複数の処理それぞれを実行する前の段階で、処理識別情報をワークフロー制御部57に出力し、ワークフロー制御部57から許可信号が入力されることを条件に、処理識別情報で特定される処理を実行する。
ここでは、第1実行部61がHDD307に記憶される複数のワークフロー定義データ81のうち第1ワークフロー定義データに含まれる第1ワークフローを実行し、第2実行部63がHDD307に記憶される複数のワークフロー定義データ81のうち第2ワークフロー定義データに含まれる第2ワークフローを実行する場合について説明する。また、第1ワークフロー定義データと第2ワークフロー定義データは、同一のユーザが、PC200に印刷処理を含む第1ワークフローを入力したのちに、印刷処理を含む第2ワークフローを入力したとする。このため、第1ワークフロー定義データおよび第2ワークフロー定義データは、同じユーザ識別情報を含む。また、第2ワークフロー定義データの登録時刻の項目に設定される時刻は、第1ワークフロー定義データの登録時刻の項目に設定される時刻よりも後である。
印刷枚数制限管理部59は、上述した印刷枚数制限管理処理を実行する。具体的には、印刷枚数制限管理部59は、入力部315に、管理者によりユーザ識別情報と上限値とが入力されると、HDD307に記憶されている上限管理テーブル83に含まれる上限管理レコードのうち、入力されたユーザ識別情報を含む上限管理レコードの上限値の項目に入力された上限値を設定する。また、MFP3,4それぞれによりプリントまたはコピー処理が実行されると、そのプリントまたはコピー処理の実行を指示したユーザのユーザ識別情報と印刷枚数とを含む実績情報がMFP3,4より送信されるので、印刷枚数制限管理部59は、通信I/F311がMFP3またはMFP4から実績情報を受信すると、その実績情報を取得する。そして、印刷枚数制限管理部59は、上限管理テーブルに含まれる上限管理レコードのうち、取得された実績情報に含まれるユーザ識別情報を含む上限管理レコードの印刷枚数の項目に設定されている印刷枚数を、それに実績情報に含まれる印刷枚数を加算した値に変更する。また、印刷枚数制限管理部59は、MFP3,4のいずれかから上限枚数の問合せ情報を受信すると、上限枚数の問合せ情報に含まれるHDD307に記憶されている上限管理テーブル83から問合せ信号に含まれるユーザ識別情報を含む上限管理レコードを抽出し、抽出された上限管理レコードを、MFP3,4ののうち上限枚数の問合せ情報を送信してきたものに送信する。
さらに、印刷枚数制限管理部59は、ワークフロー制御部57からユーザ識別情報を含む問合せ信号が入力されると、HDD307に記憶されている上限管理テーブル83から問合せ信号に含まれるユーザ識別情報を含む上限管理レコードを抽出し、抽出された上限管理レコードに含まれる上限値と、印刷枚数とをワークフロー制御部57に出力する。ユーザ識別情報で特定されるユーザが、印刷枚数制限管理の対象とされていない場合があり、その場合には、印刷枚数制限管理部59は、上限値から印刷枚数に代えて制限無しを示す信号をワークフロー制御部57に出力する。
ワークフロー制御部57は、検出部71と、判断部73と、ワークフロー実行部55を制御する実行制御部75と、ワークフローの実行を指示したユーザに割り当てられた印刷可能な印刷可能枚数を取得する制限枚数取得部77と、を含む。
検出部71は、ワークフローを実行するワークフロー実行部55からワークフロー定義データが入力され、ワークフロー実行部55がワークフローにより定義された複数の処理それぞれを実行する前の段階で、その処理の処理識別情報が入力される。検出部71は、同じユーザ識別情報と関連付けられた複数のワークフローがワークフロー実行部55により並列して実行される場合、複数のワークフローのうち1つの印刷実行ワークフローにより定義される印刷処理が実行される前の段階で、複数のワークフローのうち印刷実行ワークフロー以外の他のワークフローのうちから印刷処理が未実行の未実行ワークフローを検出する。
具体的には、検出部71は、第1実行部61から第1ワークフロー定義データが入力され、第2実行部63から第2ワークフロー定義データが入力される。検出部71は、第1実行部61および第2実行部63のいずれかから印刷処理以外の処理の処理識別情報が入力される場合、実行制御部75に何も出力しない。
検出部71は、第1実行部61から印刷処理の処理識別情報が入力される場合、第1ワークフロー定義データと第2ワークフロー定義データにそれぞれ含まれるユーザ識別情報が同一か否かを判断する。検出部71は、同一と判断しない場合は、実行制御部75に何も出力しないが、同一と判断する場合は、さらに、HDD81に記憶される第2ワークフロー定義データを参照して、それに含まれるワークフローにより定義される印刷処理が未実行か否かを判断する。検出部71は、第2ワークフロー定義データに含まれる第2ワークフローにより定義される印刷処理が未実行と判断する場合、第2ワークフローを未実行ワークフローとして検出する。検出部71は、未実行ワークフローとして第2ワークフローを検出する場合、第2ワークフローが未実行ワークフローであることを示す信号を実行制御部75に出力するが、そうでなければ何も出力しない。
検出部71は、第2実行部63から印刷処理の処理識別情報が入力される場合、第2ワークフロー定義データと第1ワークフロー定義データにそれぞれ含まれるユーザ識別情報が同一か否かを判断する。検出部71は、同一と判断しない場合は、実行制御部75に何も出力しないが、同一と判断する場合は、さらに、HDD81に記憶される第1ワークフロー定義データを参照して、それに含まれるワークフローにより定義される印刷処理が未実行か否かを判断する。検出部71は、第1ワークフロー定義データに含まれるワークフローにより定義される印刷処理が未実行と判断する場合、第1ワークフローを未実行ワークフローとして検出する。検出部71は、未実行ワークフローとして第1ワークフローを検出する場合、第1ワークフローが未実行ワークフローであることを示す信号を実行制御部75に出力するが、そうでなければ何も出力しない。
ここでは、第1ワークフロー定義データの登録時刻の項目に設定されている時刻は、第2ワークフロー定義データの登録時刻の項目に設定されている時刻よりも前なので、第1ワークフロー定義データに含まれる第1ワークフローが、第2ワークフロー定義データに含まれる第2ワークフローよりも先に実行が開始される。一方、第1ワークフローにより定義される印刷処理が、第2ワークフローにより定義される印刷処理よりも前に実行される場合と、後に実行される場合がある。このため、検出部71は、第2ワークフローにより定義される印刷処理および第2ワークフローにより定義される印刷処理の一方が実行される前の段階で、他方が未実行か否かを判断し、未実行の場合に他方が未実行ワークフローであることを示す信号を出力する。
判断部73は、ワークフロー実行部55からワークフロー定義データが入力され、ワークフロー定義データが入力されると、そのユーザ定義データに含まれるユーザ識別情報のユーザが印刷可能な印刷可能枚数を要求するための要求依頼信号を制限枚数取得部77に出力する。要求依頼信号は、ワークフロー実行部55から入力されるワークフロー定義データに含まれるユーザ識別情報を含む。ここでは、判断部73は、第1ワークフロー定義データと第2ワークフロー定義データとが入力されるが、第1ワークフロー定義データと第2ワークフロー定義データとにそれぞれ含まれるユーザ識別情報は同じなので、そのユーザ識別情報を含む要求依頼信号を制限枚数取得部77に出力する。
制限枚数取得部77は、判断部73から要求依頼信号が入力されると、その要求依頼信号に含まれるユーザ識別情報を含む問合せ信号を印刷枚数制限管理部59に出力する。印刷枚数制限管理部59は、問合せ信号が入力されると、上限値と印刷枚数とを制限枚数取得部77に出力するので、制限枚数取得部77は、入力される上限値から印刷枚数を減算した印刷可能枚数を算出し、印刷可能枚数を判断部73に出力する。ユーザ識別情報で特定されるユーザが、印刷枚数制限管理の対象とされていない場合があり、その場合には、制限枚数取得部77は、印刷可能枚数に代えて制限無しを示す信号を判断部73に出力する。
判断部73は、制限枚数取得部77が要求依頼信号の入力に応じて出力する印刷可能枚数が入力されると、ユーザ識別情報と印刷可能枚数との組を実行制御部75に出力し、制限枚数取得部77から制限無しを示す信号が入力されると、ユーザ識別情報と制限無しを示す信号との組を実行制御部75に出力する。
実行制御部75は、判断部73から印刷可能枚数が入力され、かつ、検出部71から未実行ワークフローとして第2ワークフローを識別するためのワークフロー識別情報が入力される場合、第1ワークフロー定義データに含まれる登録時刻が第2ワークフロー定義データに含まれる登録時刻より前であることを条件に、第1実行部61から処理識別情報が入力されることに応じて、第1実行部61に許可信号を出力する。ここでは、第1ワークフロー定義データに含まれる登録時刻が第2ワークフロー定義データに含まれる登録時刻より前なので、第1実行部61に許可信号を出力する。一方、実行制御部75は、判断部73から制限無しを示す信号が入力される場合、または、検出部71から未実行ワークフローとして第2ワークフローを識別するためのワークフロー識別情報が入力されない場合、第1実行部61から処理識別情報が入力されることに応じて、第1実行部61に許可信号を出力する。このため、第1ワークフローで定義される印刷処理が、第2ワークフローで定義される印刷処理が実行される前に実行される場合には、そのまま印刷処理を実行させることができる。その結果、先に投入された第1ワークフローにより定義される印刷処理が、後に投入された第2ワークフローにより定義される印刷処理よりも先に実行させることができる。
実行制御部75は、判断部73から印刷可能枚数が入力され、かつ、検出部71から未実行ワークフローとして第1ワークフローを識別するためのワークフロー識別情報が入力される場合、第2ワークフロー定義データに含まれる登録時刻が第1ワークフロー定義データに含まれる登録時刻より前であることを条件に、第2実行部63から処理識別情報が入力されることに応じて、第2実行部63に許可信号を出力する。ここでは、第2ワークフロー定義データに含まれる登録時刻が第1ワークフロー定義データに含まれる登録時刻より後なので、第2実行部63に許可信号を出力しない。この場合、実行制御部75は、第1実行部61により第1ワークフロー定義データに含まれる第1ワークフローにより定義される印刷処理が実行され、その印刷処理の実行が終了した時点で、第2実行部63に許可信号を出力する。このため、第2実行部63により第2ワークフローで定義される印刷処理が、第1実行部61により第1ワークフローで定義される印刷処理が実行される前に実行される場合には、第2実行部63による印刷処理を、第1実行部61による印刷処理の実行が終了するまで、実行させないようにすることができる。その結果、先に投入された第1ワークフローにより定義される印刷処理が、後に投入された第2ワークフローにより定義される印刷処理よりも先に実行させることができる。
一方、実行制御部75は、判断部73から制限無しを示す信号が入力される場合は、検出部71から未実行ワークフローとして第1ワークフローを識別するためのワークフロー識別情報が入力される場合、または検出部71から未実行ワークフローとして第2ワークフローを識別するためのワークフロー識別情報が入力される場合であっても、第1実行部61または第2実行部63に許可信号を出力する。
なお、実行制御部75は、第2ワークフローを投入したユーザが印刷することが可能な枚数を制限されており、かつ、そのユーザにより後に投入された第2ワークフローにより定義される印刷処理が実行される前の段階で、先に投入された第1ワークフローにより定義される印刷処理が未実行である場合に、第2ワークフローにより定義される印刷処理を、第1ワークフローにより定義される印刷処理が実行されるまで待機させるようにしたが、印刷処理が実行されるのを制限する条件として、次の条件を用いてもよい。
(1)実行制御部75は、判断部73から入力されるユーザに割り当てられた印刷可能枚数が予め定められたしきい値T以上であり、かつ、検出部71から第1ワークフローが未実行ワークフローであることを示す信号が入力される場合は、第2ワークフロー定義データに含まれる登録時刻が第1ワークフロー定義データに含まれる登録時刻より後であっても第2実行部63に許可信号を出力する。また、実行制御部75は、判断部73から入力されるユーザに割り当てられた印刷可能枚数が予め定められたしきい値T以上であり、かつ、検出部71から第2ワークフローが未実行ワークローであることを示す信号が入力される場合、第1ワークフロー定義データに含まれる登録時刻が第2ワークフロー定義データに含まれる登録時刻より後であっても第1実行部61に許可信号を出力する。
第1および第2ワークフローを投入したユーザに割り当てられた印刷可能枚数が予め定められたしきい値T以上の場合には、第1ワークフローにより定義される印刷処理と、第2ワークフローにより定義される印刷処理とを実行したとしても印刷可能枚数を超えて印刷できなくなる確率が低いためである。
(2)実行制御部75は、第1ワークフローにより定義される印刷処理の印刷枚数と、第2ワークフローにより定義される印刷処理の印刷枚数との合計が、印刷可能枚数以下で、かつ、検出部71から第1ワークフローが未実行ワークフローであることを示す信号が入力される場合は、第2ワークフロー定義データに含まれる登録時刻が第1ワークフロー定義データに含まれる登録時刻より後であっても第2実行部63に許可信号を出力する。また、実行制御部75は、第1ワークフローにより定義される印刷処理の印刷枚数と、第2ワークフローにより定義される印刷処理の印刷枚数との合計が、印刷可能枚数以下で、かつ、検出部71から第2ワークフローが未実行ワークフローであることを示す信号が入力される場合は、第1ワークフロー定義データに含まれる登録時刻が第2ワークフロー定義データに含まれる登録時刻より後であっても第1実行部61に許可信号を出力する。
第1ワークフローにより定義される印刷処理の印刷枚数と、第2ワークフローにより定義される印刷処理の印刷枚数との合計が、第1および第2ワークフローを投入したユーザに割り当てられた印刷可能枚数以下の場合には、第1ワークフローにより定義される印刷処理と、第2ワークフローにより定義される印刷処理とが実行される順番に係わらず、上限管理処理により印刷枚数が制限されることなく実行されるからである。
図7は、ワークフロー制御処理の流れの一例を示すフローチャートである。ワークフロー制御を処理は、サーバ300が備える。CPU301が、ワークフロー実行プログラムを実行することによりCPU301により実行される処理である。
図7を参照して、CPU301は、PC200から、ユーザ識別情報とワークフローとの組を受信したか否かを判断する。ユーザ識別情報とワークフローとの組を受信したならば処理をステップS02に進めるが、そうでなければ処理をステップS06に進める。ステップS02においては、現在時刻を取得する。次のステップS03においては、処理対象データを受信したか否かを判断する。処理対象データを受信したならば処理をステップS04に進めるが、そうでなければステップS04をスキップして処理をステップS05に進める。ステップS04においては、受信された処理対象データをHDD307に記憶し、処理をステップS05に進める。ステップS05においては、ステップS01において受信されたユーザ識別情報およびワークフローと、ステップS02において取得された。現在時刻と関連付けたワークフロー定義データを生成し、HDD307に記憶する。これにより、HDD307にワークフロー定義データ81が記憶される。ステップS06においては、新たなワークフロー定義データが記憶されたか否かを判断する。新たなワークフロー定義データが記憶されたならば処理をステップS07に進めるが、そうでなければ処理をステップS01に戻す。ステップS07においては、新たに記憶されたワークフロー定義データに含まれるワークフローを実行するためのワークフロー実行処理を実行する。
なお、ここでは、処理対象のデータを受信する場合を例に説明するが、処理対象のデータを識別するためのデータ識別情報を受信するようにしてもよい。また、ワークフローで定義される第1番目の処理が処理対象データが必要のない処理である場合には、処理対象のデータは受信されない。
次に、ワークフロー実行処理について説明する。ここでは、ユーザがPC200にログインし、印刷処理を含む第1ワークフローを入力した後に、印刷処理を含む第2ワークフローを入力した場合を例に説明する。この場合、サーバ300により上述のワークフロー制御処理が実行されて、HDD307に第1ワークフローを含む第1ワークフロー定義データと、第2ワークフローを含む第2ワークフロー定義データとが記憶される。第1ワークフローは第2ワークフローよりも前にPC200に入力されるので、第1ワークフロー定義データに含まれる登録時刻は、第2ワークフローに含まれる登録時刻よりも前であり、第1ワークフロー定義データが第2ワークフロー定義データよりも先にHDD307に記憶されるので、第1ワークフローが第2ワークフローよりも先に実行される。ここでは、第1ワークフロー定義データに含まれる第1ワークフローが先に実行されている状態で、第2ワークフロー定義データに含まれる第2ワークフローが実行される場合におけるワークフロー実行処理について説明する。
図8は、ワークフロー実行処理の流れの一例を示すフローチャートである。ワークフロー実行処理は、図7におけるステップS07において実行される処理である。図8を参照して、CPU301は、HDD307に記憶されている第2ワークフロー定義データに含まれる第2ワークフローを読み出す(ステップS11)。そして、第2ワークフロー定義データにより第2ワークフローと関連付けられている時刻を第2時刻として取得する(ステップS12)。ステップS13においては、ステップS11において呼び出された第2ワークフローに含まれる第1番目の処理を選択する。そして、選択された処理が印刷処理か否かを判断する(ステップS14)。選択された処理が印刷処理ならば処理をステップS15に進めるが、そうでなければ処理をステップS29に進める。
ステップS15においては、ステップS11において読み出された第2ワークフローと関連付けられたユーザ識別情報と同じユーザ識別情報と関連付けられた第1ワークフローが存在するか否かを判断する。そのような第1ワークフローが存在するならば処理をステップS16に進めるが、そうでなければ処理をステップS24に進める。ここでは、第1ワークフローが既に実行されているので、処理をステップS16に進める。
ステップS16においては、第1ワークフローが未実行の印刷処理を含むか否かを判断する。第1ワークフローが未実行の印刷処理を含むならば処理をステップS17に進めるが、そうでなければ処理をステップS24に進める。CPU301は、第1ワークフローが未実行の印刷処理を含むか否かを、HDD307に記憶された第1ワークフロー定義データ81を参照することにより判断する。
ステップS17においては、第1および第2ワークフローと、第1ワークフロー定義データまたは第2ワークフロー定義データにより関連付けされたユーザ識別情報のユーザに割り当てられた印刷可能枚数を取得する。具体的には、HDD307に記憶されている上限管理テーブル83を参照し、第1ワークフロー定義データまたは第2ワークフロー定義データに含まれるユーザ識別情報含む上限管理レコードを抽出し、抽出された上限管理レコードに含まれる上限値から印刷枚数を減算することにより印刷可能枚数を算出する。
次のステップS18においては、印刷枚数が制限されているか否かを判断する。印刷可能枚数を算出できたならば印刷枚数が制限されていると判断し、上限管理テーブル83に第1ワークフロー定義データまたは第2ワークフロー定義データに含まれるユーザ識別情報含む上限管理レコードが記憶されていなければ印刷枚数が制限されていないと判断する。印刷枚数が制限されているならば処理のステップS19に進めるが、そうでなければ処理のステップS24に進める。ステップS19においては、ステップS17において取得された印刷可能枚数が予め定められたしきい値T以上か否かを判断する。印刷可能枚数がしきい値T以上ならば処理のステップS24に進めるが、そうでなければ処理のステップS20に進める。しきい値Tは、管理者により予め定められて登録された数である。
ステップS20においては、第1ワークフロー定義データにより第1ワークフローと関連付けられた時刻を第1時刻として取得する。次のステップS21においては、第2ワークフロー定義データにより第2ワークフローと関連付けられた時刻を第2時刻として取得する。次のステップS22においては、第1時刻が第2時刻よりも前か否かを判断する。第1時刻が第2時刻よりも前であれば処理をステップS24に進めるが、そうでなければ処理をステップS23に進める。ステップS23においては、第1ワークフローの印刷処理が終了するまで待機状態となり(ステップS23でNO)、第1ワークフローにより定義される印刷処理が終了すると処理をステップS24に進める。すなわち、第1ワークフローにより定義される印刷処理が終了することを条件に処理をステップS24に進める。ステップS24においては、第2ワークフローにより定義される印刷処理を実行し、処理をステップS25に進める。ステップS25においては、印刷処理が終了するまで待機状態となり(ステップS25でNO)、処理が終了をしたならば(ステップS25でYES)、処理をステップS26に進める。ステップS26においては、HDD307に記憶されているワークフロー定義データ81の処理結果を更新する。
次のステップS27においては、ステップS11において読み出された第2ワークフローが次の順番の処理を定義するか否かを判断する。次の順番の処理を定義するならば処理をステップS28に進めるが、そうでなければ処理を終了する。ステップS28においては、次の順番の処理を選択し、処理をステップS14に戻す。
一方、ステップS29においては、処理対象に選択されている。処理を実行し、処理をステップS30に進める。ステップS30においては、ステップS29において実行を開始した処理が終了するまで待機状態となり(ステップS30でNO)、処理が終了すると(ステップS30でYES)、処理をステップS31に進める。ステップS31においては、HDD307に記憶されているワークフロー定義データ81の処理結果を更新し、処理をステップS27に進める。
<変形例>
図9は、変形例におけるワークフロー実行処理の流れの一例を示すフローチャートである。図8に示したワークフロー実行処理と異なる点は、ステップS19の代わりに、ステップS19AおよびステップS19Bが実行される点である。その他の処理は、図8に示したワークフロー実行処理と同じなので、ここでは異なる点を主に説明する。ステップS18において印刷枚数が制限されていると判断する場合、ステップS19Aにおいて、第1ワークフローにより定義される印刷処理で印刷される印刷枚数と、第2ワークフローにより定義される印刷処理で印刷される印刷枚数との合計を算出する。そして次のステップS19Bにおいて、ステップS19Aにおいて算出された合計が印刷可能枚数以下か否かを判断する。算出された合計が印刷可能枚数以下ならば処理をステップS24に進めるが、そうでなければ、処理をステップS20に進める。第1ワークフローにより定義される印刷処理で印刷される印刷枚数と、第2ワークフローにより定義される印刷処理で印刷される印刷枚数との合計が、印刷可能枚数以下ならば、第1ワークフローにより定義される印刷処理で印刷される印刷枚数と、第2ワークフローにより定義される印刷処理とを、実行することができるからである。
以上説明したように本実施の形態におけるサーバ300は、同じユーザがそれぞれが印刷処理を含む第1および第2ワークフローを投入した場合、複数のワークフローを並列して実行するが、第1および第2ワークフローのうち後に投入された第2ワークフロー(印刷実行ワークフロー)により定義される印刷処理が実行される前の段階で、第1ワークフロー以外のワークフローのうちから印刷処理が未実行の第1ワークフロー(未実行ワークフロー)を検出し、第1ワークフローが検出され、かつ、印刷可能枚数に制限がある場合、第2ワークフローに関連付けられた第2時刻が第1ワークフローに関連付けられた第1時刻より前であることを条件に、第2ワークフローにより定義される印刷処理の実行を許可する。このため、先に実行が開始された第1ワークフローで定義される印刷処理が後に実行が開始された第2ワークフローより先に実行される。このため、複数のワークフローによりそれぞれ定義される複数の印刷処理をワークフローを投入した順に実行することができる。したがって、後に実行が開始された第2ワークフローで定義される印刷処理が実行されるが、先に投入された第1ワークフローで定義される印刷処理が、印刷可能枚数を超えることにより実行されなくなるのを防止することができる。このため、ユーザは、後に投入したワークフローの出力結果である印刷物を手にするが、先に投入したワークフローの出力結果である印刷物を入手できなくなることがなく、ユーザが困惑するのを防止することができる。
また、印刷可能枚数が所定の値より大きい場合は、第2ワークフローに関連付けられた時刻が未第1ワークフローに関連付けられた時刻より後であっても第2ワークフローにより定義される印刷処理の実行を許可する。印刷可能枚数が所定の値より大きい場合は、先に投入したワークフローおよび後に投入したワークフローによりそれぞれ定義される2つの印刷処理により印刷される枚数が印刷可能枚数を越える確率が低い。このため、先に投入されたワークフローにより定義される印刷処理が、後に投入されるワークフローにより定義される印刷処理より後に実行される場合であっても、後に投入されたワークフローで定義される印刷処理を先に実行するようにして、ワークフロー全体としての処理速度を速くすることができる。
また、第1および第2ワークフローそれぞれにより定義される印刷処理の印刷枚数の合計が、印刷可能枚数以下の場合は、第2ワークフローに関連付けられた時刻が第1ワークフローに関連付けられた時刻より後であっても第2ワークフローにより定義される印刷処理の実行を許可する。印刷枚数の合計が印刷可能枚数以下の場合は、先に投入した第1ワークフローおよび後に投入した第2ワークフローによりそれぞれ定義される2つの印刷処理により印刷される枚数が印刷可能枚数を越えない。このため、先に投入された第1ワークフローにより定義される印刷処理が、後に投入される第2ワークフローにより定義される印刷処理より後に実行される場合であっても、後に投入された第2ワークフローで定義される印刷処理を先に実行するようにして、ワークフロー全体としての処理速度を速くすることができる。
また、第2ワークフローにより定義される印刷処理の実行を許可しない場合、第1ワークフローにより定義される印刷処理が終了することを条件に、第2ワークフローにより定義される印刷処理の実行を許可する。先に投入された第1ワークフローにより定義される印刷処理を後に投入された第2ワークフローにより定義される印刷処理より前に実行するので、後に投入された第2ワークフローにより定義される印刷処理が実行されて、先に投入された第1ワークフローにより定義される印刷処理が実行されなくなるのを防止することができる。
なお、上述した実施の形態においては、ワークフロー実行装置の一例としてサーバ300を例に説明したが、図7および図8または図9に示した処理を実行するためのワークフロー実行方法およびそのワークフロー実行方法をコンピュータに実行させるためのワークフロー実行プログラムとして発明を捉えることができるのは言うまでもない。
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
<付記>
(1) 前記印刷処理の実行を許可するステップは、制限される前記印刷可能枚数を所定の値と比較するステップと、
前記比較するステップにおける比較結果が、制限される前記印刷可能枚数が所定の値より大きい場合は、前記未実行ワークフローが検出される場合であっても前記実行するステップにおける前記印刷実行ワークフローにより定義される印刷処理の実行を許可するステップと、を含む請求項5に記載のワークフロー実行方法。
(2) 前記印刷処理の実行を許可するステップは、前記複数のワークフローそれぞれにより定義される印刷処理の印刷枚数の合計が前記印刷可能枚数以下の場合は、前記未実行ワークフローが検出される場合であっても前記実行するステップにおける前記印刷実行ワークフローにより定義される印刷処理の実行を許可するステップを含む、請求項5に記載のワークフロー実行方法。
(3) 前記印刷処理の実行を許可するステップは、前記実行するステップにおける前記印刷実行ワークフローにより定義される印刷処理の実行を許可しない場合、前記未実行ワークフローにより定義される印刷処理が終了することを条件に、前記実行するステップにおける前記印刷実行ワークフローにより定義される印刷処理の実行を許可するステップを含む、請求項5、(1)および(2)のいずれかに記載のワークフロー実行方法。