(57)【特許請求の範囲】
【請求項１】
印刷装置によって実行される印刷工程に続いて、記述されたページ数の印刷物に対する後処理を実行するための後処理工程が実行されるワークフローを生成し、新たなワークフローを生成するための判定基準を記憶するメモリを備えた情報処理装置において実行可能なプログラムであって、
前記ワークフローに定義されている前記印刷工程の処理状況を前記印刷装置から受信する受信手段と、
前記受信手段によって受信された前記印刷工程の処理状況がエラーであり、かつ、前記エラーが発生するまでに前記印刷装置により印刷されたページ数が、前記判定基準である、前記後処理を実行することで１部分の印刷物を生成できるページ数に達しているか否かを判定する判定手段と、
前記判定手段によって前記印刷装置により印刷されたページ数が、前記メモリから読みだされた前記判定基準である、前記後処理を実行することで１部分の印刷物を生成できるページ数に達していると判定された場合、前記エラーが発生するまでに印刷されたページ数が前記後処理されるページ数として記述された新たなワークフローを生成するワークフロー生成手段として前記情報処理装置を機能させることを特徴とするプログラム。
【請求項２】
前記受信手段によって受信された処理状況に基づいて各処理工程の処理内容を記述した作業指示データを生成する作業指示データ生成手段として前記情報処理装置を機能させ、前記作業指示データ生成手段は、前記処理状況に基づいて、前記印刷工程において処理済み部分に対する第１作業指示データおよび前記印刷工程において未処理済み部分に対する第２作業指示データを生成することを特徴とする請求項１に記載のプログラム。
【請求項３】
前記第１作業指示データに含まれる識別情報が前記第２作業指示データに含まれる作業指示情報と一致し、かつ、前記第１作業指示データに含まれる前記新たなワークフローが生成された処理工程が前記第２作業指示データに含まれる前記新たなワークフローが生成された処理工程と一致する場合、前記第１作業指示データと前記第２作業指示データとを結合する結合手段を更に備えることを特徴とする請求項２に記載のプログラム。
【請求項４】
印刷装置によって実行される印刷工程に続いて印刷物に対する、記述されたページ数の後処理を実行するための後処理工程が実行されるワークフローを生成し、新たなワークフローを生成するための判定基準を記憶するメモリを備えた情報処理装置であって、
前記ワークフローに定義されている前記印刷工程の処理状況を前記印刷装置から受信する受信手段と、
前記受信手段によって受信された前記印刷工程の処理状況がエラーであり、かつ、前記エラーが発生するまでに前記印刷装置により印刷されたページ数が、前記判定基準である、前記後処理を実行することで１部分の印刷物を生成できるページ数に達しているか否かを判定する判定手段と、
前記判定手段によって前記印刷装置により印刷されたページ数が、前記メモリから読みだされた前記判定基準である、前記後処理を実行することで１部分の印刷物を生成できるページ数に達していると判定された場合、前記エラーが発生するまでに印刷されたページ数が前記後処理されるページ数として記述された新たなワークフローを生成するワークフロー生成手段と
を備えることを特徴とする情報処理装置。
【請求項５】
前記受信手段によって受信された処理状況に基づいて各処理工程の処理内容を記述した作業指示データを生成する作業指示データ生成手段を更に備え、
前記作業指示データ生成手段は、前記処理状況に基づいて、前記印刷工程において処理済み部分に対する第１作業指示データおよび前記印刷工程において未処理済み部分に対する第２作業指示データを生成することを特徴とする請求項４に記載の情報処理装置。
【請求項６】
前記第１作業指示データに含まれる識別情報が前記第２作業指示データに含まれる作業指示情報と一致し、かつ、前記第１作業指示データに含まれる前記新たなワークフローが生成された処理工程が前記第２作業指示データに含まれる前記新たなワークフローが生成された処理工程と一致する場合、前記第１作業指示データと前記第２作業指示データとを結合する結合手段を更に備えることを特徴とする請求項５に記載の情報処理装置。
【請求項７】
印刷装置によって実行される印刷工程に続いて印刷物に対する、記述されたページ数の後処理を実行するための後処理工程が実行されるワークフローを生成し、新たなワークフローを生成するための判定基準を記憶するメモリと、受信手段と、判定手段と、ワークフロー生成手段とを備えた情報処理装置におけるワークフロー生成方法であって、
前記受信手段が、前記ワークフローに定義されている前記印刷工程の処理状況を前記印刷装置から受信する受信ステップと、
前記判定手段が、前記受信ステップによって受信された前記印刷工程の処理状況がエラーであり、かつ、前記エラーが発生するまでに前記印刷装置により印刷されたページ数が、前記判定基準である、前記後処理を実行することで１部分の印刷物を生成できるページ数に達しているか否かを判定する判定ステップと、
前記ワークフロー生成手段が、前記判定ステップによって前記印刷装置により印刷されたページ数が、前記メモリから読みだされた前記判定基準である、前記後処理を実行することで１部分の印刷物を生成できるページ数に達していると判定された場合、前記エラーが発生するまでに印刷されたページ数が前記後処理されるページ数として記述された新たなワークフローを生成するワークフロー生成ステップと
を有することを特徴とするワークフロー生成方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、あらかじめ定義されたワークフローに従ってデータを処理するための情報処理装置及びワークフロー実行方法とプログラムに関する。詳しくは、たとえば処理途中で障害等が生じても、その障害によって印刷処理全体を中断することを防止できる情報処理装置及びワークフロー生成方法とプログラムに関する。
【背景技術】
【０００２】
第三者（顧客、クライアント）から印刷物の作成依頼を受注し、注文に応じて印刷物を作成してそれをクライアントに納品することで報酬を得る商業的印刷業界では、オフセット製版印刷機などの大規模な印刷装置等を用いた印刷が主流である。印刷業界では、入稿、デザインやレイアウト、カンプ（プリンタ出力によるプレゼンテーション）、校正（レイアウト修正や色修正）、校正刷り（プルーフプリント）、版下作成、印刷、後処理加工、発送といった具合に様々な工程を踏んで作業を進めてきた。
【０００３】
一方で、最近、電子写真方式の印刷装置やインクジェット方式の印刷装置の高速化、高画質化に伴い、プリント・オン・ディマンド（Ｐｒｉｎｔ  Ｏｎ  Ｄｅｍａｎｄ：以下、ＰＯＤと表記する。）と呼ばれる印刷装置で扱うジョブより比較的小ロットのジョブを大掛かりな装置やシステムを用いずに短納期で取り扱う市場がある。
【０００４】
ＰＯＤ市場では従来の大規模な印刷機またはシステムに代わって、例えば、ディジタル複写機やディジタル複合機等のディジタル画像処理装置を最大限に活用して、電子データを用いたディジタルプリントを採用している。このようなＰＯＤ市場では、従来の印刷業界に比べてディジタル化が進み、コンピュータを利用した管理、制御が浸透してきている。
【０００５】
例えば、ＰＯＤ市場では、納期までに処理を終了させるためスケジュールを生成している。さらに、ＰＯＤ市場では効率的に処理を進めるために複数の処理工程を組み合わせたＰＯＤワークフローを生成し、ジョブチケットを使用して印刷を実施している。ジョブチケットとは、印刷されるデータの作業工程を電子的に示しているものである。ＰＯＤを請け負う印刷ショップ等では、ジョブチケットに記載されているように印刷を行えばよく、処理の自動化を行う上で欠くことのできない技術である。ジョブチケットの詳細な説明については後述する。
【０００６】
ジョブチケットを用いてワークフロー処理を進める方法が特許文献１に記載されている。特許文献１では、生成されたワークフローに対応するジョブチケットを生成し、ワークフロー生成装置から発行されたジョブチケットに従って必要な処理が行われることが記載されている。
【０００７】
また、印刷物の後処理（フィニッシング処理）を行う装置（フィニッシャ）として、印刷装置やその制御装置であるコンピュータと通信を介して接続されたニアラインフィニッシャが実用化されている。ニアラインフィニッシャは印刷装置と独立した装置であるために、機能の拡張性や代替性に優れている。また、電子化されたジョブチケットを通信を介して受信し、そのジョブチケットに記述された処理を実行できるために、処理の自動化にも貢献している。
【０００８】
さらに、ワークフローの処理を進める上でエラーを想定したワークフローを生成することが特許文献２に記載されている。特許文献２には、指定された出力結果を得るために生成された一貫性制約ルールに基づいて、一貫性ルールが破られた場合の異常系の作業処理を予め生成しておくことが記載されている。
【特許文献１】特開２００４−１６４５７０号公報
【特許文献２】特開２００１−１９５４７０号公報
【発明の開示】
【発明が解決しようとする課題】
【０００９】
特許文献２に記載の技術では、エラーが発生した場合の処理（異常系の作業処理という）をあらかじめ定めているため、エラーの発生タイミングに応じた動的な異常系の作業処理を行うことができない。例えば、１０ページ分の印刷物を製本して２冊の本を作成するためのワークフローにおいて、２冊目の本の５ページ目の印刷中にエラーが発生した場合を考える。この場合には、１冊目の本の１０ページ分の印刷処理は終了している。そのため、１冊目の本については次の工程、たとえば製本工程に進めても構わない。このように次の工程へ進めることが可能なデータやものに関しては、できるだけ次の工程に進めることで、効率的にワークフローの処理を行うことができる。しかしながら、特許文献２に記載の技術では、エラーが発生した場合の処理を予め登録しているため、エラーが発生した時点での処理状況を判定してワークフローを生成することはできない。
【００１０】
また、特許文献１に記載の技術を用いても、予め異常系の作業処理を定めておくため、定められていないタイミングでエラーが発生しても、異常系の作業処理が行えない。逆にあらゆるタイミングで生じるエラーに対応するために異常系の作業処理を定めておくと、定義のためのデータ量が膨大なものとなる。
【００１１】
このように、従来の技術では、ワークフローの処理状態に応じて適切な処理内容の変更あるいは処理対象の変更を行えないため、処理状況に基づいて効率的にワークフローの処理を進めることはできなかった。
【００１２】
本発明は上記従来例に鑑みてなされたもので、ワークフローの実行中に所定の条件に一致する事象が発生した場合に、ワークフローを動的に生成することで、効率的に処理を進めることを目的とする。
【課題を解決するための手段】
【００１３】
上記目的を達成するために本発明は以下の構成を備える。
【００１４】
印刷装置によって実行される印刷工程に続いて印刷物に対する、記述されたページ数の後処理を実行するための後処理工程が実行されるワークフローを生成し、新たなワークフローを生成するための判定基準を記憶するメモリを備えた情報処理装置において実行可能なプログラムであって、前記ワークフローに定義されている前記印刷工程の処理状況を前記印刷装置から受信する受信手段と、前記受信手段によって受信された前記印刷工程の処理状況がエラーであり、かつ、前記エラーが発生するまでに前記印刷装置により印刷されたページ数が、前記判定基準である、前記後処理を実行することで１部分の印刷物を生成できるページ数に達しているか否かを判定する判定手段と、前記判定手段によって前記印刷装置により印刷されたページ数が、前記メモリから読みだされた前記判定基準である前記後処理を実行することで１部分の印刷物を生成できるページ数に達していると判定された場合、前記エラーが発生するまでに印刷されたページ数が前記後処理されるページ数として記述された新たなワークフローを生成するワークフロー生成手段として前記情報処理装置を機能させることを特徴とする。
【発明の効果】
【００１５】
本発明により、ワークフローの実行中に、所定の条件に一致する事象が発生した場合に、ワークフローを動的に生成することで、効率的に処理を進めることができる。
【発明を実施するための最良の形態】
【００１６】
［第１実施形態］
以下、添付図面に従って本発明に係る実施形態を詳細に説明する。
【００１７】
＜定義＞
ここで本実施形態で用いられるいくつかの用語について説明し、定義する。まずニアラインフィニッシャとは、ホストコンピュータ等の外部装置と通信する手段を備えている。ニアラインフィニッシャは、フィニッシャにおいて行う処理内容を、通信を介して外部装置からジョブチケットを入力することで設定できる。また、フィニッシャの操作部からユーザによる手入力でも入力可能である。
【００１８】
ワークフローとは、後処理まで含めた印刷処理の流れである。本実施形態では、ワークフローをコンピュータにより処理可能な形式で記述された情報を、ワークフロー（あるいはワークフロー情報）と呼ぶ。なお、本実施例では,ワークフローを印刷処理の流れと記述したが、印刷処理に限定される必要はない。ワークフローは、ワークフローを構成するアクティビティ（処理工程とも呼ぶ。）を、処理の順序に従って記述した情報である。各アクティビティは、処理の実行主体と、実行される処理の内容とが記述されている。実行主体はデバイス等でなくとも良く、たとえば担当者の氏名や役職等であってもよい。また、処理内容も、動作の一般的な記述であってよく、処理の客体の具体的な記述などはなくともよい。ただし、各アクティビティに記述された実行主体や動作を基にジョブチケットが生成されることから、自然言語による記述ではなく、あらかじめ定めた形式（文法）と単語（予約語）で記述しておくのが望ましい。
【００１９】
ワークフローにしたがって実行されるデータおよびパラメータの集まりの一単位をジョブ（本例では印刷ジョブ）と呼ぶ。ワークフローはジョブ単位で実行される。例えば、ワークフローは、原稿データを入力する入稿処理工程、入稿処理工程により入力された原稿データを紙面に割り付ける面付け工程、面付け工程により面付けされた原稿データを印刷する印刷工程、印刷工程により印刷された用紙を後処理する工程を含む。
【００２０】
ワークフロー情報は、各工程を実行するデバイス情報、各工程の処理順序を示す情報、面付け工程における原稿のレイアウトを特定するレイアウト情報、印刷工程における印刷方法を特定する印刷設定情報、後処理工程の処理の内容を特定する後処理設定情報を含む。
【００２１】
ジョブチケットとは、ジョブ毎に印刷処理の各工程における処理内容を記述したデータのまとまりであり、ジョブ制御情報とも呼ぶ。つまりジョブチケットとは、作業指示内容を示す情報が記述された作業指示書の電子データである。ジョブチケットは、たとえばＸＭＬ（ｅＸｔｅｎｓｉｖｅ  Ｍａｒｋｕｐ  Ｌａｎｇｕａｇｅ）を用いて定義されたＪＤＦ（Ｊｏｂ  Ｄｅｆｉｎｉｔｉｏｎ  Ｆｏｒｍａｔ）形式で記述されたデータである。しかし、規格化されていない形式で記述されたジョブチケットであっても、本発明のために用いることはできる。ジョブチケットには、ワークフローを構成する各アクティビティを実現するデバイス等において実行される処理のパラメータ等が記述されている。なおデバイス等とは、プリンタやニアラインフィニッシャ、画像スキャナといった個々のデバイスに加えて、汎用コンピュータで実行される原稿の入稿処理アプリケーションや面付けアプリケーションなども含む。デバイス等を、ハードウエア上独立したデバイスとソフトウエアにより実現されるデバイスとを含めて、本実施形態では論理デバイスと称する場合もある。
【００２２】
各デバイス等では、ジョブチケットに記述されたパラメータにしたがって処理を遂行する。また、本実施形態では、これから実行しようとする処理内容に加えて、終了した処理（未完の処理も含む）の状態も、その処理を実行したデバイス等により記述されている。これらは、各デバイス等による処理終了後にジョブチケットに書き込まれる。ジョブチケットの具体的な構成例は図３等を参照して後で説明する。
【００２３】
まず、図２５に、本実施形態の情報処理装置を説明するブロック図を示す。なお特に断りがない限り、本発明の機能が実行されるのであれば、単体の機器であっても、複数の機器からなるシステムであっても、ＬＡＮやＷＡＮ等のネットワークを介して接続が為され処理が行われるシステムであっても本発明を適用できる。また、クライアントコンピュータと記載したがこれに限る必要はなく、情報処理装置であれば基本的に図２５と同じ構成となる。よって、例えば後述するＭＩＳサーバも図２５と同じ構成となる。
【００２４】
図２５において、２５００はホストコンピュータで、ＲＯＭ２５０３のプログラム用ＲＯＭあるいは文書処理プログラム等に基づいて図形、イメージ、文字、表（表計算等を含む）等が混在した文書処理を実行するＣＰＵ２５０１を備えている。ＣＰＵ２５０１は、システムバス２５０４に接続される各デバイスを総括的に制御する。
【００２５】
また、このＲＯＭ２５０３のプログラム用ＲＯＭあるいは外部メモリ２５１１には、ＣＰＵ２５０１の制御プログラムであるオペレーティングシステムプログラム（以下ＯＳ）等を記憶する。また、ＲＯＭ２５０３のフォント用ＲＯＭあるいは外部メモリ２５１１には上記文書処理の際に使用するフォントデータ等を記憶し、ＲＯＭ２５０３のデータ用ＲＯＭあるいは外部メモリ２５１１には上記文書処理等を行う際に使用する各種データを記憶する。
【００２６】
２５０２はＲＡＭで、ＣＰＵ２５０１の主メモリ、ワークエリア等として機能する。２５０５はキーボードコントローラ（ＫＢＣ）で、キーボード２５０９や不図示のポインティングデバイスからのキー入力を制御する。２５０６はＣＲＴコントローラ（ＣＲＴＣ）で、ＣＲＴディスプレイ（ＣＲＴ）２５１０の表示を制御する。
【００２７】
２５０７はディスクコントローラ（ＤＫＣ）で、ブートプログラム、アプリケーション、フォントデータ、プリンタ制御コマンド生成プログラム（以下プリンタドライバ）等を記憶するハードディスク（ＨＤ）等の外部メモリ２５１１とのアクセスを制御する。また、ＤＫＣ２５０７は、フロッピー（登録商標）ディスクとのアクセスも制御可能である。
【００２８】
２５０８はプリンタコントローラ（ＰＲＴＣ）で、所定の双方向性インターフェース２５２１を介して外部デバイスに接続されて、外部デバイスとの通信制御処理を実行する。なお、ＣＰＵ２５０１は、例えばＲＡＭ２５０２上に設定された表示情報ＲＡＭへのアウトラインフォントの展開（ラスタライズ）処理を実行し、ＣＲＴ２５１０上でのＷＹＳＩＷＹＧを可能としている。
【００２９】
また、ＣＰＵ２５０１は、ＣＲＴ２５１０上の不図示のマウスカーソル等で指示されたコマンドに基づいて登録された種々のウインドウを開き、種々のデータ処理を実行する。ユーザは印刷を実行する際、印刷の設定に関するウインドウを開き、プリンタの設定や、印刷モードの選択を含むプリンタドライバに対する印刷処理方法の設定を行える。なお、図２５に記載の情報処理装置は、本願に記載のＭＩＳも基本的に同様の構成となる。
【００３０】
＜システム構成＞
図１は、本発明の第１実施形態を示す印刷システムのシステム概要図である。図１において、印刷システムは、印刷システムサーバ１００、インターネットあるいは企業内のイントラネットであるネットワーク１０１、パーソナルコンピュータとソフトウエアなどからなるクライアント部１０２を備える。さらに、ワークフローのアクティビティを実現するデバイス等として、入稿アプリケーションがインストールされたパーソナルコンピュータ１０９（これを入稿アプリケーション１０９と呼ぶ）を備える。また面付けアプリケーションがインストールされたパーソナルコンピュータ１１０（これを面付けアプリケーション１０９と呼ぶ）を備える。さらに、記録紙に印刷を行う印刷機（印刷エンジン）１１１、製本やトリミング等の後処理を行うニアラインフィニッシャ１１２も備えている。
【００３１】
入稿アプリケーションは、入稿を行うためのアプリケーションソフトウエアである。入稿アプリケーション１０９は、入力されたイメージデータやテキストデータ等のデータを、所定形式（たとえばＰＤＦ（Ｐｏｒｔａｂｌｅ  Ｄｏｃｕｍｅｎｔ  Ｆｏｒｍａｔ））に変換する。入稿アプリケーション１０９は、クライアント１０２へインストールされてもよく、ネットワーク１０１上の別のコンピュータに存在していても良い。面付けアプリケーション１１０は、版下である電子データを印刷物として出力結果を指定するためのプログラムである。面付けアプリケーション１１０により、たとえば「２ｉｎ１で両面印刷を行う」であるとか、「１ｉｎ１でくるみ製本印刷を行う」などの面付け指定が、見やすいＵＩ上で指定できる。面付け指定にしたがって、入稿アプリケーション１０９から出力された原稿の電子データが面付けアプリケーション１１０によって変換される。変換後の電子データは、印刷エンジン１１１に入力される電子データである。この電子データには、たとえばＰＤＦで記述された各ページが、面付け指定やあるいはＰＤＦで記述された各ページの配置にしたがって、所定のＰＤＬ（ページ記述言語）により記述されている。いずれにしても、印刷エンジン１１１により解釈実行可能な形式の電子データである。入稿アプリケーション１０９や割り付けアプリケーション１１０等、ワークフローで使用されるデバイス等は、ジョブチケットに対応している。コンピュータにおいては、たとえばジョブチケットを受信し、それを表示し、ユーザによる入力を受け付け、受け付けた入力と共にジョブチケットをサーバ１００に送信するためのプログラム（ジョブチケット処理プログラムと呼ぶ。）が実行される。このプログラムは、必要に応じてジョブチケットに記述されたアクティビティのパラメータを、そのアクティビティを実行するデバイスにセットアップできる。
【００３２】
印刷機１１１は、入力された電子データ（これを印刷データとも呼ぶ。）に基づいて、記録紙上への印刷を実行する。ニアラインフィニッシャ１１２は、印刷装置に付属のインラインフィニッシャとは異なり、人手で持参された印刷物を、ネットワーク経由で指定されたジョブチケットなどのジョブ制御情報に従ってフィニッシング処理する。これに似たものとしてオフラインフィニッシャがあるが、これはネットワーク接続されておらず、ジョブチケットなどのジョブ制御情報はフレキシブルディスクなどの電子媒体によって提供される。ニアラインフィニッシャは、処理対象の印刷物が手作業で所定の位置に載置されてから処理を始める。そのため、処理開始のきっかけはオペレータにより入力される。その際に、図１０に示すようにジョブの結合等の指示を行うことができる。
【００３３】
サーバ１００には、ジョブチケット（ＪＴ）発生部１０３、ワークフロー実行部１０４、ジョブチケット（ＪＴ）管理部１０５、ユーザ管理部１０６、アクティビティ管理部１０７、ワークフロー管理部１０８、ワークフロー生成部１２０を含む。ジョブチケット管理部１０５、ユーザ管理部１０６、アクティビティ管理部１０７、ワークフロー管理部１０８は、メモリや外部メモリ等により実現される記憶領域を持つ管理プログラムか、あるいは記憶領域そのものである。ジョブチケット発生部１０３、ワークフロー実行部１０４、ワークフロー生成部１２０はサーバコンピュータ１００がプログラムを実行することで実現される。もちろんそのプログラムと等価な回路を持つハードウエアで実現することもできる。
【００３４】
ワークフロー生成部１２０は、ユーザが、アクティビティ管理部１０７に保存された定義済みのアクティビティを用いてワークフローを定義するためのモジュールであり、定義されたワークフローはワークフロー管理部１０８に保存される。その際、ログインしたユーザがワークフローを定義する権限を持つか否かを、担当者管理部１０６に保存された該当ユーザの権限と照合してチェックしてもよい。またワークフロー生成部１２０は、実行中のワークフローのアクティビティで、エラー等、処理の中断が必要なイベントが発生した場合に、実行中のワークフローのワークフロー情報を、そのイベントが生じたアクティビティを含めて複製する。望ましくはそのイベントが生じたアクティビティを先頭としてワークフローを複製するが、それ以前のアクティビティを含めても良い。複製されたワークフロー情報に基づくワークフローは、元のワークフローと並列に実行される。その際、一方のワークフローはそのまま処理を継続できるデータを対象として実行される。他方のワークフローは、エラー等のイベントによりいったん処理を中断する必要のあるデータを対象として実行される。そのため、ワークフロー生成部１２０は、ワークフロー情報を生成した後、各ワークフロー情報のパラメータを変更する。もちろんここでいう並列とはワークフロー処理全体として並列ということである。並列とは、複数のワークフローにおいて、共通のアクティビティがある瞬間に同時に実行されていることを意味しない。
【００３５】
なお、本実施形態では、あるワークフローから新たに生成される、元のワークフローの全部または一部を複製したワークフローを、派生ワークフローと呼ぶ。また、派生ワークフローを新たに生成することを、ワークフローの派生と呼ぶ。
【００３６】
ジョブチケット発生部１０３は、ワークフロー実行部が実行しようとするワークフローに対応するジョブチケットを生成し、ジョブチケット管理部１０５に保存する。ジョブチケットの生成はワークフロー実行部が行っても良い。ワークフローが派生された場合には、派生ワークフローに対応するジョブチケットが生成され、実行される。
【００３７】
ワークフロー実行部１０４は、ワークフロー管理部１０８に保存された一つ以上のワークフローを同時動作させる。ワークフロー実行部１０４は、ワークフローを動作させるために、ジョブチケットを各アクティビティの実行前に動的に更新し、ワークフローの柔軟な実行を実現している。ジョブチケット管理部１０５は、生成されたジョブチケットをワークフロー終了まで保持する。ジョブチケットは、アクティビティを実行するデバイスからアクティビティ実行後にワークフロー実行部１０４に対して送信されるので、それを受信してジョブチケット管理部１０５で保持する。また、受信したジョブチケットは、次のアクティビティのために更新される。担当者（ユーザ）管理部１０６は、ログインしたユーザの権限などを保持する。アクティビティ管理部１０７は、ワークフローで実行される作業工程を意味するアクティビティを保存管理する。たとえば「主任が入稿を行う」、「派遣社員が面付けを行う」、「部長が承認を行う」、「印刷作業者がくるみ印刷を行う」などの定義をアクティビティとして登録できる。通常、アクティビティは担当者と作業の組み合わせからなる。ユーザは、アクティビティ管理部１０７に保存されたアクティビティをつなぎ合わせてワークフローを定義できる。ワークフロー管理部１０８は、ユーザや管理者があらかじめ定義するワークフローを保存管理する。「課長承認付くるみ印刷」、「部長１００部印刷」などのユーザに定義されたワークフローを複数管理している。ワークフローはこのような名称が付され、アクティビティ管理部１０７で定義済みのアクティビティのシーケンスとして定義されている。たとえば、「課長承認付くるみ印刷」という名称のワークフローは、「担当者Ａが入稿」、「担当者Ｂが面付け」、「管理者Ｃが承認」、「両面印刷」、「くるみ製本」という順序で配置された一連の定義済みアクティビティから構成される。アクティビティの指定はそのＩＤを用いて行われる。アクティビティ管理部１０７は、たとえばアクティビティの実行主体となるデバイスやプログラムのＩＤおよびそれらの所在（アドレス）等のアクティビティ情報と、アクティビティＩＤとを関連づけた表なども保持する。そしてワークフローが実行され、アクティビティＩＤがワークフロー実行部によりワークフロー情報から読まれると、ワークフロー実行部１０４によりアクティビティ情報が参照される。参照されたアクティビティ情報はワークフロー実行部１０４に渡され、その情報に基づいてジョブチケットが生成される。ジョブチケットには、たとえばアクティビティ情報に含まれるＩＤを持つデバイス名等が記載され、処理主体が特定される。
【００３８】
＜ワークフロー＞
ワークフローの定義例を図２に示す。図２において、ワークフロー２００は、直列に配置されたアクティビティ２０１から２０５を含む。アクティビティ（処理工程）２０１は入稿アプリを起動するアクティビティである。ワークフロー情報においては、アクティビティはたとえば「担当者Ａが入稿」などと定義されている。この定義は、この例のように自然言語で記述されても良いが、特別に定めた一定の規則で記述されても良い。たとえば、「主体名」＋「が」＋「動作名」といったように記述される。印刷システムが適切な実行主体を選択できる場合には、主体の記述は省略しても良い。いずれにしても、コンピュータにより実行されるワークフロー実行部１０４により解析可能であり、アクティビティの実体（実行主体）を特定可能な形式で記述される。アクティビティ２０１が終了するとアクティビティ２０２へすすむ。アクティビティ２０２は面付けアプリを起動するアクティビティである。たとえば「担当者Ｂが面付け」のように記述されている。同様にアクティビティ２０３は記録紙を印刷するアクティビティである。たとえば「両面印刷」のように記述される。本例では、両面印刷機能を持つ印刷機は、印刷システム（たとえばワークフロー実行部）が適当に選択できるために、主体の記述はない。ワークフロー情報からジョブチケットを生成する際に主体たる装置が選択される。アクティビティ２０４はニアラインフィニッシャでフィニッシングを実行するアクティビティである。たとえば「くるみ製本」のように記述される。アクティビティ２０５は管理者などが出力結果内容を確認するアクティビティである。たとえば「管理者Ｃが承認」などと記述される。
【００３９】
このように、アクティビティ２０１からアクティビティ２０５までをつなげて１つのワークフローを構築している。ワークフロー情報は、たとえばアクティビティの名称（あるいはＩＤ、図２ではＡ１，...，Ａ５である）を実行順に並べたデータファイルなどとして実現できる。アクティビティの実体を定義する定義情報は、アクティビティ管理部１０７に保存されている。ジョブチケット２０６は、図３で詳細が説明されるような構成を有する。例えば、ジョブチケット２０６はワークフロー２００に基づいて生成される。また、ジョブチケットは、顧客から注文された情報に基づいて生成されても良い。そして、ジョブチケットは、各処理工程の実行主体に対して、処理工程毎にＭＩＳ（管理サーバ）２１０から送信される。また、処理工程終了毎に各デバイスからＭＩＳ２１０に対して返信される。ワークフローの途中、たとえば図２のアクティビティ２０３で記録紙無しなどの異常が発生すると、印刷ジョブデータはそのアクティビティにより処理された部分と処理できなかった部分とに別れ、ジョブチケットも分割された各印刷ジョブに合わせて分割される。ワークフローは分割された各部分毎に進行し、また結合される。次にジョブチケットの内容について説明する。
【００４０】
＜ジョブチケット＞
図３はジョブチケットの構成例である。図３はワークフロー実行前のジョブチケットの例を示す。符号３０１はジョブチケットの開始記号、符号３０２は元ジョブ名を示す。ジョブ名は、たとえば基になるワークフロー名と関連付けられているのが望ましい。本例では「３６１２１２」となる。符号３０３はジョブ名である。依頼者情報３０４は「kazuta」、支払者情報３０５は「matsueda」、届け先３０６は「xxxxxx-yyyyyy」、サーバ名３０７は「stargate」である。たとえばワークフロー作成時にこれらの値をユーザに入力させれば、ジョブチケット作成時には、ワークフロー情報に含まれる値を用いることができる。サーバ名はサーバ部１００の名称である。開始日時３０８は本ジョブチケットが生成された時間を示す。符号３０９から符号３１３には、アクティビティに対応して実行される作業工程が示されている。符号３０９はアクティビティ２０１の内容である。以下同様に、符号３１０はアクティビティ２０２、符号３１１はアクティビティ２０３、符号３１２はアクティビティ２０４、符号３１３はアクティビティ２０５の作業内容が示される。符号３１４はジョブチケットの終了マークである。
【００４１】
アクティビティの内容は、アクティビティ管理部１０７に保存されている。そこで、ジョブチケットを生成する際には、アクティビティ管理部１０７を参照して、アクティビティに対応する内容にしたがって処理内容をジョブチケットに記述する。たとえば本例ではアクティビティＡ１〜Ａ５に対応して、それぞれ「担当者Ａが入稿」、「担当者Ｂが、両面くるみ製本で面付け」、「管理者Ｃが承認」、「両面印刷」、「くるみ製本」といったアクティビティがアクティビティ管理部１０７に記述されている。そこで、ワークフロー実行部１０４あるいはジョブチケット発生部１０３により、各アクティビティの内容が、それを実行するためのパラメータに変換されてジョブチケットに記述される。パラメータは、たとえばデバイスの識別子やアドレス、処理の種類、その処理のために必要とされるパラメータ等を含む。たとえば「担当者Ａが入稿」というアクティビティに対しては、入稿アプリケーションが実行されるコンピュータの識別名やアドレスと、オペレータに対して表示されるアクティビティの内容などが、ジョブチケットの工程１に記述される。また、「くるみ製本」というアクティビティに対しては、それが実行されるフィニッシャの識別子やアドレスと、フィニッシング処理の種類や処理に応じて必要とされるパラメータがジョブチケットの工程４に記述される。
【００４２】
＜ワークフロー実行の概要＞
図４は本実施形態におけるワークフロー実行手順の一例を示す図である。まず、通常のワークフロー実行手順の例を説明する。ワークフロー実行部１０４は（あるいはジョブチケット発生部１０３）、指定されたワークフローをワークフロー管理部１０８から読み、ワークフローに対応するジョブチケットを生成する。その際、ジョブチケットに含まれる、アクティビティに相当する工程には必要な情報が付加される。そのジョブチケットが、当該工程を実行するデバイス等に送付される。ジョブチケットには、当該工程を実行するために必要な情報（パラメータ）が記述されているので、各デバイス等は、そのジョブチケットの該当個所を読み、記述されたパラメータにしたがってその工程を実行する。該当個所は、たとえなジョブチケットを受信したデバイスの保持するデバイス識別子と、ジョブチケットの各工程に記載されたデバイスのＩＤとを照合して検出できる。すなわち、ワークフロー実行部１０４は、ワークフローの各アクティビティを実行するデバイス等に対して、ワークフローに定義された順序でジョブチケットを送る。これにより、各アクティビティをワークフローに定義された順序で実行させている。すなわち、ワークフロー実行部１０４あるいはジョブチケット発生部１０３は、各アクティビティの内容を、それを実行するためのパラメータ（デバイス識別子、処理種類、処理パラメータ等）に変換してジョブチケットに記述する。なお用紙サイズなど、処理のためのパラメータは、前段階のアクティビティたとえば面付けアプリケーション１１０における処理結果に基づいて決定される場合もある。もちろんワークフローにおいてあらかじめ定めておくこともできる。
【００４３】
たとえば、ワークフロー実行部１０４は、着目アクティビティが入稿であれば、入稿の工程を記述したジョブチケットを、その工程の実行デバイスである、入稿アプリケーションがインストールされたコンピュータに送信する。入稿処理がオペレータによる操作に応じて実行される場合、ジョブチケットの記述内容はその処理を実行するデバイスの識別子や、オペレータに対する指示の記述となる。それを受信したコンピュータのジョブチケット処理プログラム（前述）は、当該工程に対応して記述された情報を読み、たとえばオペレータ名と処理内容（たとえば「担当者Ａが入稿」）、記述された情報を表示する。そして、担当者がログインしたならその認証を行い、指定した入稿担当者に対して入稿操作を許す。この認証は、たとえばジョブチケットに記載された担当者識別名を、不図示のディレクトリサーバ等で検索し、照合することで実行できる。その後担当者が入稿するデータを指定し、入稿アプリケーションによる所定の形式への変換等の処理が完了したなら、変換後のデータをあらかじめ指定されたフォルダ（例えば、ホットフォルダ）へ格納する。最後に、入稿アプリケーションがインストールされたコンピュータは、入稿したファイル名やホットフォルダの名称（必要に応じて所在も含む）、サイズ、処理開始時刻、完了時刻等の処理後に確定したジョブチケットに書き加える。オペレータにより指定された情報があれば、それも書き加える。たとえば、印刷部数などがこの段階で指定されることもあり得るので、それをジョブチケットに書き込む。最後に、入稿アプリケーションがインストールされたコンピュータは、更新したジョブチケットをワークフロー実行部１０４に送信する。
【００４４】
以上は、オペレータが介入する処理について同様に行われる。一方、オペレータの介入なしに行える処理については、アクティビティを実行するデバイスに適合したパラメータがジョブチケットには記載される。たとえば、「両面印刷」というアクティビティがあれば、ワークフロー実行部１０４はそれを実行するデバイスを決定し、用紙サイズや両面印刷という印刷設定をジョブチケットに書き込んでそれを印刷エンジン１１１に送信する。この形式は、たとえばＪＤＦ（ジョブ定義形式）などの規格に従えばよい。その他の点は、オペレータが介入する処理と同様である。なお、サーバ１００に接続されているデバイスの情報は、サーバ１００が管理している。例えば「両面印刷」というアクティビティを処理するデバイスについては、ワークフロー実行部１０４が、サーバ１００に管理されているデバイス情報から両面印刷を実行できるデバイスを特定する。そして、ワークフロー実行部１０４が、そのデバイスにて処理すべきとの内容を記述したジョブチケットを生成する。
【００４５】
ただし、処理によっては、その後の処理に応じてパラメータが与えられる場合がある。たとえば、面付けアプリケーションにおける面付けは、印刷順序やフィニッシング処理の種類（特に製本処理）に応じて行われる。たとえば製本処理では、一定枚数の印刷済み用紙を２つ折りし、それをステープルして束ね、その束を重ねて背表紙を付けるなどの処理が行われる。そのため、２つ折りする枚数や、折りの方向などによって、面付け処理によるページの配置が決定される。また処理の仕方には、装置の機能による制約もある。そこでワークフロー実行部１０４あるいはジョブチケット発生部１０３は、着目するアクティビティ実行のためのジョブチケットを、ワークフロー全体および使用するデバイスの機能に基づいて決定している。
【００４６】
＜ワークフローの派生＞
図５は本発明に係るワークフロー自動生成（すなわち派生）を示す概要図である。図５において、アクティビティ２０３〜２０５は図２のそれに等しい。ワークフロー５２０は、ワークフロー５１０を元ワークフローとして派生された派生ワークフローである。アクティビティ５０１から５０４は、派生ワークフローの自動生成処理により生成された派生ワークフロー５２０に属するアクティビティである。本例では元ワークフロー５１０のアクティビティ２０３にて異常が発生した際に派生ワークフロー５２０が生成されている。ワークフロー５２０は、アクティビティ２０３の処理中に中断されたジョブの一部（アクティビティ２０３で未処理のデータ）を対象として、異常解除後に実行される。また、アクティビティ（印刷エンジンによる印刷処理）２０３による処理が行われた部分的なジョブ（印刷物）は、アクティビティ２０３における異常解除を待たずアクティビティ２０４へ進められる。
【００４７】
派生ワークフロー５２０のアクティビティ５０１は結合のアクティビティである。これは、アクティビティ２０３からの異常解除後のジョブと、アクティビティ２０４で処理できなかったジョブの一部との結合のアクティビティである。結合のアクティビティは、派生ワークフローの生成に際して、必要に応じて発生させることが可能である。アクティビティ５０２はアクティビティ２０４の複製アクティビティで５０１において処理済のジョブを扱うことができる。アクティビティ５０３はアクティビティ２０５の複製アクティビティであり、アクティビティ５０２の処理を終えたジョブを扱うことが可能である。
【００４８】
なお確認アクティビティとは、出力物の確認をユーザに行わせる処理である。たとえば確認アクティビティはソフトウエアであり、処理が完了した出力物の詳細（部数や一部あたりのページ数、サイズなど）をコンピュータ端末に表示する。ユーザは、表示されたデータと実際の印刷物を調べてから得られる情報とを照合して、一致する旨や、相違する旨の入力をその端末で行う。その結果一致が確認されれば、その旨がワークフロー実行部に通知されて、次のアクティビティに進む。
【００４９】
アクティビティ５０４は最終結合アクティビティである。つまり、ワークフロー実行部１０４は、記憶手段に記憶されているワークフロー（ワークフロー５１０）の最終工程からの出力データと、生成された新たなワークフロー５２０の最終工程からの出力データとを結合させる結合工程を生成することができる。よって、ワークフロー実行部１０４は、ワークフロー５１０の最終工程からの出力データと、新たなワークフロー５２０の最終工程からの出力データとは結合されるようなワークフローを生成することができる。本例ではアクティビティ２０５の出力と、アクティビティ５０３の出力とを結合する。
【００５０】
結合アクティビティは、たとえば対象がデータであれば、そのデータを結合してひとつのまとまったデータを再構成する。一方、対象が物であり、結合がユーザのマニュアル処理で行われる場合には、たとえば次段のアクティビティに渡すパラメータの結合を行う。アクティビティ５０４は最終段のアクティビティであるから、結合後の出力物の詳細をユーザに確認させる確認アクティビティと同様の処理であっても良い。しかし、アクティビティ５０１では、アクティビティ２０３からワークフロー５２０に分岐する部分ジョブの出力パラメータと、アクティビティ２０４からワークフロー５２０に分岐する部分ジョブの出力パラメータとを結合する。結合されたパラメータが次段のアクティビティ５０２の入力となる。
【００５１】
たとえば、２０ページの印刷物を１０部印刷して製本する場合を考える。アクティビティ２０３でエラーのために印刷できない印刷物が５０ページであるとする。印刷を部単位で行っているとすれば、エラーが生じたときに印刷中であった部は、その半分の１０ページの印刷を終えており、残りの半分は印刷されていない。そのためアクティビティ２０４が製本処理であれば、アクティビティ２０４では１０ページの印刷物が半端となって製本処理の対象とはできない。そこで、アクティティ２０４にて余った印刷物は、アクティビティ２０３でエラーのために印刷できず、エラー解除後印刷された印刷物（５０ページ）と結合される。アクティビティ５０１ではその結合が行われる。印刷物自体を重ね合わせてフィニッシャにセットする処理はマニュアル操作で行われる場合がある。この場合でも、フィニッシャに与えるパラメータは結合される必要がある。
【００５２】
すなわち、アクティビティ２０３および２０４ではそれぞれジョブが分割され、一方は次段のアクティビティに進められる。各アクティビティにおいて分割後の他方のジョブはいずれもアクティビティ５０１に入力される。その際に、アクティビティ２０３からのジョブのパラメータはたとえば処理すべきページ数が５０であり、１部あたりのページ数は２０である。一方アクティビティ２０４からのパラメータは、処理すべきページ数が１０であり、１部あたりのページ数は２０である。このため、結合アクティビティにより、ページ数は加算されて６０となる。これが、後処理のアクティビティ５０２へ入力されるパラメータとなる。アクティビティ５０２では、入力されたパラメータに従い、６０ページの印刷物を、２０ページずつ製本する。
【００５３】
なお、図５において派生ワークフロー５２０には結合アクティビティを含めず、結合処理を施したデータやパラメータを派生アクティビティに入力すると考えても良い。
【００５４】
本例では、結合アクティビティの実体は、たとえば直前の２つ（またはそれ以上）のアクティビティからワークフロー実行部１０４に出力されるパラメータをひとつにまとめる処理が定義されたプログラムである。一つにまとめるとは、具体的には加算演算等である。ワークフロー実行部１０４は、加算されるべきパラメータをワークフローの先頭に挿入された結合アクティビティに渡す。それにより、指定されたパラメータが加算され、結合アクティビティから出力される。加算されるべきパラメータは、たとえばページ数であったり、あるいは部数等である。ワークフロー実行部１０４は、たとえば、あらかじめ結合アクティビティで加算すべきパラメータを、その直前のアクティビティに応じて定義した結合テーブルを保持している。そして、付加された結合アクティビティに対して、直前のアクティビティおよび結合テーブルを参照して決定されるパラメータを、加算すべきパラメータとして指定する。たとえば、印刷アクティビティに対応付けて「ページ数」が結合テーブルに登録されているとする。この場合、結合アクティビティの直前のアクティビティが「印刷」であれば、結合テーブルからは、「ページ数」が加算対象のパラメータとして特定できる。これを、結合アクティビティに対して指定する。パラメータを指定された結合アクティビティは、複数のアクティビティからの入力パラメータのうち、指定された「ページ数」パラメータに該当する値を加算する。もちろん指定されるパラメータは一つとは限らない。「ページ数」と「部数」など複数のパラメータを指定しても良い。
【００５５】
確認アクティビティも同様にあらかじめ定義されている。ただし確認アクティビティの実体は、入力されたパラメータを端末に表示し、オペレータに確認した旨の入力を促すプログラムである。
【００５６】
＜アクティビティのプロパティの設定＞
図６はアクティビティのプロパティの設定表示例である。一般的にワークフローシステムにおいては各アクティビティに関してプロパティを設定することが可能である。たとえば、図２のアクティビティ２０１から２０５のそれぞれのアクティビティに別々のプロパティを設定することが可能である。プロパティでは各種パラメータの設定を行うことが可能であるが、本例はその一部分のみを表示している。アクティビティのプロパティの設定は、アクティビティ管理部１０７により実行される。プロパティ設定のためには、アクティビティ管理部１０７により提供されるユーザインターフェース画面においてアクティビティのＩＤを入力し、現在のプロパティを読み取る。当該ＩＤが存在しなければ、新たに作成しても良い。プロパティは、アクティビティとして保存されたその内容（たとえば「プリンタＡで１０部両面印刷する」といった記述）に関連づけて、ハードディスク等の記憶部に保存されている。読み出されたプロパティが、図６のように表示される。図６の各チェックボックスのチェックの有無は、たとえばフラグとしてプロパティに保存される。以下の説明ではチェックボックスのチェックの有無を判定するように記述しているが、実際にはプロパティに属するフラグが判定の対象となる。
【００５７】
図６において表示枠６０１はダイアログ設定部である。チェックボックス６０２は障害が発生した際に作業の並行処理を行うか否かの処理選択チェックボックスである。現在はチェックが入っており作業の並行処理を行う設定となっている。並行処理を行う設定になっていると、障害発生時に、当該障害が発生したアクティビティ以下のワークフローを含む新たな派生ワークフローが生成される。つまり、ワークフロー実行部１０４は、受信した処理状況がワークフロー生成条件に一致すると判定された場合、処理状況の送信元のデバイスが担当する着目処理工程および該着目処理工程から後の工程を含んだワークフローを生成する。そのために、ワークフロー実行部１０４は、記憶されている元々のワークフロー情報（図５では、ワークフロー５１０に相当）において着目処理工程および該着目処理工程から後の工程に該当する情報を用いて、新たなワークフローを生成する。そしてジョブは、元ワークフローにしたがってそのまま処理される部分と、派生ワークフローにしたがって処理される部分とに分割される。一方チェックボックス６０２においてチェックがされていないと、障害時には、障害が解除されるまでそのアクティビティでジョブ全体が停止する。
【００５８】
チェックボックス６０３は並行処理移行値であり、当該アクティビティにおいて障害発生時に、派生ワークフローを生成するか否かを決定するための閾値である。この閾値は、ジョブの処理対象であるデータ全体のうち、処理が済んだ割合を意味している。図６では現在の設定は１／２となっている。図６のプロパティがアクティビティ２０３の設定であると仮定すると、アクティビティ２０３のエンジン部でジョブ全体の２分の１以上の出力が行われた後にエンジンの異常が発生した場合に、設定値６０４〜６０６の設定が有効であることを示している。本チェックボックス（スイッチとも呼ぶ）６０３には、ワークフローとして意味のある値を設定すればよい。
【００５９】
チェックボックス６０４は結合アクティビティの作成の有無を示す。チェックボックス６０４がチェックされていると、派生ワークフローの先頭に結合アクティビティが生成される。図５の例ではアクティティ５０１が該当する。チェックボックス６０５は確認アクティビティの作成処理である。確認アクティビティは、そのアクティビティで処理されるジョブのパラメータ等をユーザに確認させるためのアクティビティである。チェックボックス６０５がチェックされていると、チェックボックス６０４にしたがって作成された結合アクティビティの直後に、確認アクティビティが挿入される。画面上で確認した旨を入力することで、確認アクティビティは終了する。これにより、ジョブが結合されたことをコンピュータ端末の画面で確認できる。確認を権限があるものが行えるようにするために、画面上でまず認証情報の要求を行っても良い。
【００６０】
チェックボックス６０６は、最終結合アクティビティを作成するためのチェックボックスである。このチェックボックス６０６がチェックされていると、元ワークフロー及び派生ワークフローを一つに纏め上げる結合アクティビティが生成される。図５では、本チェックボックス６０６がオンであるため、結合アクティビティ５０４が付加されている。
【００６１】
ここで、アクティビティの付加はたとえば以下のような方法で行われる。派生ワークフローの生成処理において付加される結合アクティビティおよび確認アクティビティは、あらかじめ定義され、実行可能な形式でサーバ１００（あるいは他のコンピュータ）の記憶部に記憶されている。元ワークフローのワークフロー情報から複製された派生ワークフローのワークフロー情報には、その適切な位置に、挿入されるアクティビティのＩＤなどの情報が挿入される。ＩＤはアクティビティの実体と関連づけられている。ークフロー実行部は、そのＩＤを呼んで、ＩＤと関連づけられているアクティビティの実体であるプログラムを実行する。
【００６２】
つまり、ワークフロー実行部１０４は、図６を介して設定された値を用いてワークフローを生成する条件を設定する。そして、ワークフロー実行部１０４は、後述する判定処理により、着目処理工程から受信した処理状況が、設定された条件に一致するか否かを判定する。ここで、処理状況と図６にて設定された値が一致する場合、新たなワークフローが生成される。
【００６３】
＜本発明を使用しない場合のフロー例＞
図７に本発明を使用しない場合すなわちジョブの分岐を予め静的に定義しておく場合のフロー例を示した。ワークフローがアクティビティにおけるエラー等で停止した場合に、処理時間の短縮を図って可能な部分だけを先に進めるフローを構築しようとすると図７のような複雑なフローとなる。たとえば、アクティビティ７０３（エンジンによる印刷）でワークフローが中断した場合、中断前後で処理済みと未処理とに分かれたデータを処理するために、アクティビティＡ８から始まる一連の分岐したフローも定義しておく必要がある。これは他のアクティビティについても同様である。図７にはすべての分岐が描き尽くされているわけではなく、分岐した先でさらに分岐する場合もあり得るために、全ての分岐をカバーしようとすると一層複雑なフローとなる。つまり、予め各アクティビティで発生するエラーを想定して、全てのエラーをカバーするワークフローを用意すると膨大なワークフローを保持しておかなければならない。さらに、用意し忘れていた場合は、エラーが発生した時に、処理をカバーすることができなくなる。このように、予め各アクティビティで発生するエラーを想定して、全てのエラーをカバーするワークフローを用意することは非常に困難な作業である。
【００６４】
＜本実施形態におけるワークフローの派生処理＞
これに対して本実施形態では、元ワークフローは二重丸で記載されたアクティビティだけである。つまり、分岐は、新たなワークフローとして必要に応じて動的に派生するので、元ワークフローの定義は本来のフローの定義のみで良く、ワークフロー作成の作業効率が高くなる。
【００６５】
図８はワークフロー実行部１０４において、１つのアクティビティを実行する際の制御フローを示している。以下図８に従って説明する。Ｓ８０１は、アクティビティの処理を実行するステップである。アクティビティの実行は、後述するジョブチケットをアクティビティの実行主体たるデバイスやプログラムに送信することで遂行される。なお、本願のワークフローは情報処理装置のＣＰＵによって実行される。また、本願の処理を実行する情報処理装置は、複数工程の処理順序を定義したワークフローを生成し、ワークフローおよび該ワークフローに含まれる各工程における処理を定義したワークフロー情報を記憶する記憶部を有しているとする。
【００６６】
Ｓ８０２は、ワークフロー実行部１０４が、各アクティビティにおける処理中に異常があったか否かを判定するステップである。異常の発生は、アクティビティの実行主体であるデバイスやプログラムから、異常発生のメッセージを受信した場合に検知される。つまり、ワークフロー実行部１０４は、ワークフローに定義されている複数工程におけるいずれかの着目処理工程の処理状況を該着目処理工程の処理を実行するデバイスから受信する。異常が発生していないとＳ８０３へ進む。Ｓ８０３は、ワークフロー実行部１０４が、アクティビティ処理が終了したか否かを判定するステップである。アクティビティの終了もまたデバイスやプログラムからの終了通知で判定できる。処理が終了と判定されると本フローは終了し次のアクティビティが存在すればそちらへ遷移する。Ｓ８０３で処理が終了していないと判定されるとＳ８０１へ戻る。
【００６７】
一方Ｓ８０２で、ワークフロー実行部１０４が、異常が発生したと判定するとＳ８０４へ進む。Ｓ８０４において、ワークフロー実行部１０４は、派生ワークフローの生成すなわちジョブチケットの分割の判定を行う。具体的には図６のダイアログ６０１で設定した内容を判定し、派生ワークフローおよびその派生ワークフローに含まれる新規アクティビティを作成するか否かが判定される。すなわち「作業の並行処理フラグ」がセットされており、しかも行うべき処理の量に対する処理済みの処理量の比率が「並行処理移行値」であれば、派生ワークフローを生成する。処理量とは、たとえば出力ページ数で表される。  つまり、Ｓ８０４において、ワークフロー実行部１０４は、受信された着目処理工程の処理状況がワークフロー生成条件に一致するか否かを判定する。Ｓ８０４において、ワークフロー実行部１０４は、Ｓ８０４の判定によって着目処理工程の処理状況がワークフロー生成条件に一致すると判定された場合、記憶されているワークフロー情報および着目処理工程の処理状況に基づいてワークフローを生成する。
【００６８】
ワークフロー実行部１０４は、派生ワークフローを生成べきであると判定するとステップＳ８０５へ進む。Ｓ８０５はワークフロー実行部１０４は、異常が発生したアクティビティにおいて処理を実行するデバイス等から中断情報を受信して、ジョブの分割すべき位置を認識する。
【００６９】
ステップＳ８０６では、ワークフロー実行部１０４は、図６のようなアクティビティのプロパティに従って派生ワークフローを生成する。すなわち、ワークフロー実行部１０４は、たとえば元ワークフローのワークフロー情報を、エラー中断したアクティビティを含めて複製する。そして、中断したアクティビティのプロパティを参照して、設定に応じて先頭および末尾に結合アクティビティを追加し、また確認アクティビティを付加する。図５でいえば、アクティビティ５０１から５０４を含むワークフロー情報が生成される。ステップＳ８０７は、ワークフロー実行部１０４が、Ｓ８０５において取得した情報をもとに中断したジョブを、既に処理が済んだ既処理部分と済んでいない未処理部分と分割する。そして、既処理部分（既処理ジョブという）を、本ワークフローのワークフロー情報にしたがって、次のアクティビティにすすめる。具体的には、中断したアクティビティに入力したジョブチケットを未処理部分と既処理部分とに分割する。そして、既処理部分のジョブチケットを、元ワークフローの次段のアクティビティの実行主体であるプログラムあるいはデバイスに送信する。
【００７０】
ステップＳ８０８では、ワークフロー実行部１０４は、未処理部分に関する情報を、派生アークフローの先頭のアクティビティの実行主体に対して入力する。すなわち、図５の例では、先頭は結合アクティビティであるので、ワークフロー実行部１０４は、結合アクティビティを実行するプログラムに対して、未処理部分のジョブチケットを入力する。このプログラムの詳細は図９で説明する。
【００７１】
ステップＳ８０４で分岐判定が否と判定されると派生ワークフローの生成は行われず、ジョブ全体がＳ８０９へ進み、ワークフロー実行部１０４は、異常が生じたアクティビティで復帰待ちする。
【００７２】
＜ワークフロー実行部１０４の処理の例＞
次に図９で、ワークフロー実行部１０４の処理フローに関して、印刷工程を例にとってさらに詳しく説明する。図９のフローは処理工程２０３の開始時点から始まる。もちろん他の処理工程についても同様である。ただし、図９中、ステップＳ１３１３やステップＳ１３０９の「全印刷？」という工程は、各処理工程における処理を完了したか否かの判定に置換されるべきである。また、ステップＳ１３０２、ステップＳ１３０３の判定も処理工程毎に異なる基準で行われる。
【００７３】
図９において、ステップＳ１３０１は、ワークフロー実行部１０４が、エンジン部１１１へ出力を依頼する処理である。具体的には、図１０のジョブチケット４０１のうち、工程Ａ３における処理結果５０４〜５０６の記述を除いたものが、ステップＳ１３０１で生成されてエンジン部１１１へ送信される。もちろんエンジン部１１１への指示は、その前の処理工程Ａ２における処理結果に基づいて記述されている。たとえば、処理工程Ａ２における出力サイズはＡ３であり、枚数は１２０枚であり、両面に面付けされている。そこで、ワークフロー実行部では、印刷に必要なパラメータのうち、処理工程Ａ２の処理結果に含まれる項目を読み、それを処理工程Ａ３のパラメータとしてジョブチケットに書き込む。なお、印刷データは、ＭＩＳ２１０から渡しても良いし、図５には図示していないが、その在処とファイル名とを工程Ａ２の処理結果として記載し、それを参照してジョブチケットにデータの所在を記載しても良い。
【００７４】
エンジン部１１１で印刷が終了すると、そこから返信されるジョブチケットを受信する。そしてステップＳ１３０２において、ワークフロー実行部１０４は、ジョブを分割する原因（すなわち派生ワークフローを生成する原因）が生じたか否かをジョブチケットを参照して判定する。分割の原因は、処理中の工程（着目処理工程）ごとに判定される。一般化すると、ジョブ（ワークフロー）を処理途中で停止させる事態が生じると、ジョブを分割する原因すなわち派生ワークフローを生成する原因があると判定できる。たとえば印刷処理工程の場合、エンジン１１１で障害等の問題が発生したかが判定される。なお、新たな派生ワークフローを生成する条件に一致する着目処理工程の処理状況は、デバイスの処理を中断させる事象であっても良い。その際、ワークフロー実行部１０４は、エラーが発生した着目処理工程を先頭として着目処理工程と着目処理工程より後の工程を含む新たな派生ワークフローを生成する。また、例えば、後処理工程の場合、後処理の単位（たとえば１部）となるページがすべて揃っているかが判定される。後処理の単位に満たない部分（ページ）がある場合には、その部分を独立したジョブとして分割する原因があると判断される。分割の原因がある（たとえばエンジン部１１１で問題あり）と判定されると、ステップＳ１３０３へ進みジョブの分割を行うか否かが判定される。分割の原因がなければステップＳ１３１４へ進む。
【００７５】
ステップＳ１３０３の判定は、ワークフロー実行部１０４が、分割の原因がある場合に、着目ジョブが分割に適するか判定する処理である。つまり、ワークフロー実行部１０４は、受信された着目処理工程の処理状況がワークフロー生成条件に一致するか否かを判定する。たとえば図６のプロパティの値と着目ジョブの処理結果に基づき判定される。さらに、アクティビティ固有の属性も判定される。またたとえば図８では省いたが、分割の原因がエンジンの障害である場合、「印刷済みページ数」、「印刷済みページが全体に占める割合」、「後工程の種類」、「エンジンの障害の種類」等によって分割の適否が判定される。たとえば１２枚のくるみ製本を１０部製本する例において、印刷から製本へ渡す際に、正常に工程Ａ３が完了すれば、１２０枚の印刷物を出力することになる。ところが印刷が最初の１５枚だけで終了した際には、その１５枚だけ製本工程に渡せば１部の製本を作り上げることはできる。すなわち、ジョブを分割することができる。一方、たとえば最初の９枚しか出力されなかった場合には、その９枚では製本はできない。すなわちジョブを分割することはできない。このように、現在の処理結果とジョブ内容またはワークフロー内容等を鑑みて、ワークフロー実行部１０４は、分割を行う必要があるか否かをステップＳ１３０３で判断する。
【００７６】
ステップＳ１３０３における判定の基準の例には以下のようなものがある。
（１）印刷済みページ数：後工程（たとえばフィニッシング工程）の処理単位（上の例では１２枚）が少なくとも１組揃っているか否か。揃っていなければ分割はしない。これは単にページ数だけではなく、先頭ページと末尾ページとを含むことも条件となる。
（２）印刷済みページ数の割合：出力ページ数が、出力すべきページ数のうち一定率以上であるか。なければ分割しない。たとえば全体の１０％以上の出力があれば次の工程の作業が始められる場合などのように、割合で指定ができるとき、その割合分の出力が終わっているか否かを判定する。
（３）後工程の種類：たとえば、次の後処理工程が全頁の一括箱づめ作業であれば全頁が揃わないと渡しても意味がない。このように後工程の種類が、分割しても意味があるものなのかどうかが判定される。
（４）エンジン障害：たとえば次の工程が製本であるがその製本機がトラブル中であり、他に代替機も存在しないときには、ジョブを分割しても処理は進まないので分割の意味がない。このように分割後の代替機が存在するか否かを判定する。
【００７７】
以上の基準は、印刷処理における判定基準の例である。この判定基準は、たとえば表化されてメモリ等に保存され参照されて判定基準とされる。
【００７８】
さて、ジョブの分割を行うと判定されるとステップＳ１３０４へ進む。ステップＳ１３０４では、ワークフロー実行部１０４が、元ジョブのジョブチケットを、図１０および図１１で示した２つのジョブチケット（後述）に分割する。ステップＳ１３０５では、未出力部のジョブを保留状態にして、エンジンの復旧とともに印刷を開始できる状態としておく。すなわち、ワークフロー実行部１０４は、未出力部分に相当する分割後のジョブチケットを、ジョブチケット管理部１０５に保存し、エンジンの復旧を待つ。ステップＳ１３０６では、分割されたジョブのうち、印刷処理済み部分に対応するジョブの処理完了後に、印刷エンジン１１１からジョブチケットを受信し、次の処理工程Ａ４のためのジョブチケット４０３を生成する。そしてワークフロー実行部１０４は、次の処理工程Ａ４用のジョブチケット４０３を工程Ａ４の実行主体たとえばフィニッシャ１１２へ送信する。これによって、処理をフィニッシング処理工程へ移行させる。このジョブチケットを受信したフィニッシャ１１２は、工程Ａ４のために記載されたパラメータにしたがって、後処理を実行する。つまり、ワークフロー実行部１０４は、受信された処理状況に基づいて各処理工程の処理内容を記述したジョブチケットを生成することができる。ワークフロー実行部１０４は、処理状況に基づいて、着目処理工程において処理済み部分に対するジョブチケットおよび着目処理工程において未処理済み部分に対するジョブチケットを生成する。なお、図４の例では、着目処理工程において処理済み部分に対するジョブチケットは、ジョブチケット４０３であり、未処理済み部分に対するジョブチケットは、ジョブチケット４０２である。なお、ワークフロー実行部１０４は、処理状況に基づいて着目処理工程の処理済み部分については着目処理工程の次工程の処理内容を含んだジョブチケット４０３を生成する。さらに、ワークフロー実行部１０４は、着目処理工程の未処理部分については、未処理部分について着目処理工程にて処理すべき内容を含んだジョブチケットを生成する。なお、本願では、処理工程にて処理すべき内容を記述したジョブチケットを作業指示データと記載することもある。
【００７９】
ステップＳ１３０７は、ワークフロー実行部は、エンジン部１１１から復旧の知らせが来るのを待つステップである。エンジンが復旧するとステップＳ１３０８へ進み、ワークフロー実行部１０４は、ステップＳ１３０５で保留したジョブチケット４０２を印刷エンジン１１１に送信する。なお、エンジンの状態情報は、ワークフロー実行部１０４に送信されている。これにより保留されていた印刷ジョブが開始される。なお、ステップＳ１３０７、ステップＳ１３０８は、説明の便宜上ステップＳ１３０６の直後に位置しているが、それらステップとは非同期に実行しても良い。ステップＳ１３０９は全ての印刷が終了したか判定するステップである。
【００８０】
ステップＳ１３１０は、ステップＳ１３０８で処理が完了したジョブを後処理（Ａ４）工程へ進めるステップである。すなわち、ワークフロー実行部１０４は、ステップＳ１３０８による印刷が完了した際に、印刷エンジンから処理結果を記載したジョブチケットを受信する。そしてワークフローおよび受信したジョブチケットを基に、後処理（Ａ４）工程のためのジョブチケット（図４には不図示）を生成する。そのジョブチケットを、後処理工程を行うフィニッシャ１１２に送信する。
【００８１】
一方ステップＳ１３１１は、ジョブ分割しないと判定された際に、元ジョブ全体について、ジョブを停止させている原因の解除、たとえばエンジンの復旧を待つステップである。エンジンが復旧するとステップＳ１３１２へ進み、未出力部を印刷する。印刷エンジン１１１は、ジョブチケットをワークフロー実行部１０４に返信せずに復旧を待っても良い。あるいは、印刷エンジン１１１は、障害が発生したなら、処理を停止させて処理済み部分と未処理部分とを処理結果として記載したジョブチケットをワークフロー実行部１０４に送信してもよい。この場合ワークフロー実行部１０４は、障害から復旧した印刷エンジン部１１１に対して、あらためて印刷処理工程を指示するジョブチケットを送信する。送信されるジョブチケットは、印刷エンジン部１１１から受信したジョブチケットと同じ内容を持つ。印刷エンジン部１１１は、受信したジョブチケットに記載された処理工程Ａ３のパラメータを参照し、＜出力ページ＞に該当するページをスキップし、＜未出力ジョブ＞に該当する部分を印刷処理する。
【００８２】
ステップＳ１３１３は全ての印刷が終了したかを判定する。印刷が終了するとステップＳ１３１４へ進み、ジョブをまとめてＡ４ステップへ進める。ここでも、ワークフロー実行部は、ジョブ全体についての後処理工程Ａ４のためのパラメータを記述したジョブチケットを作成し、それをフィニッシャ１１２に送信する。
【００８３】
＜ジョブ分割処理＞
次に図４に即して、派生ワークフローの生成、すなわちジョブ分割の実行手順の例を説明する。この手順はワークフロー実行部１０４により実行される。図４では、ワークフロー実行時にエンジン部１１１で記録紙無しなどの障害が発生した際に、派生アークフロー情報が生成される。そしてジョブチケット２０６がジョブチケット４０１とジョブチケット４０２とに分割され、ジョブが元ワークフローと派生ワークフローに割り振られる。つまり、元々のジョブを、中断前に印刷済みの部分に関するジョブと、中断により未印刷の部分に関するジョブとに分割する。ジョブチケットも、ジョブの分割に応じて、印刷済みの部分に関するジョブがジョブチケット４０１に割り振られ、未印刷部に関してはジョブチケット４０２に割り振られる。このようにひとつのジョブを、進行状況の相異なる複数のジョブに分割して対応するワークフローにより処理させることで、ワークフローの中断を防止し、処理済み部分に関しては部分的に先のアクティビティに進めることが可能になる。すなわち本例であるとジョブチケット４０１から、次段の処理工程のためのジョブチケット４０３を生成し、次段の処理に工程を進めることが可能になる。
【００８４】
また、ジョブチケット４０２は、分割によりジョブチケット４０３から独立したものとなっている。そのため、障害復旧後にジョブチケット４０３の進み具合に関係なく処理を開始できる。ジョブチケット４０４は、ジョブチケット４０３の実行後のジョブチケットである。図１３等で説明するように、あるアクティビティを実行するためのジョブチケットは、その終了後に情報の追加が行われるため、処理の前後で相異なる内容を持つ。
【００８５】
＜ジョブチケットの分割＞
さて、分割後のジョブチケット４０１の構成の一例を図１０に示す。また、分割後のジョブチケット４０２の構成の一例を図１１に示す。なお、分割前のジョブチケットすなわち印刷エンジン部１１１からワークフロー実行部に送信されるジョブチケットは、図５とほぼ同じ内容を持つ。ただし、ジョブは元ジョブそのものなので、ジョブ名は「３６１２１２」である。
【００８６】
図１０はジョブチケット４０１の構成例を示す図である。ジョブ名５０１は、「３６１２１２−１−２−３−１／２」となっている。このジョブ名は、元ジョブ名「３６１２１２」に含まれる工程１、２は成功したこと、工程３で２分割されたこと、本ジョブはそのうちの前半のジョブであることを示している。なお、工程１、２、３はそれぞれアクティビティＡ１，Ａ２，Ａ３に対応する。また、工程１，２が成功したことは「−２−１」で示され、工程３で２分割され、本ジョブはそのうちの前半のジョブであることは、「−３−２／１」で示される。すなわち、ジョブチケット分割後のジョブ名は、「元ジョブ名＋成功した工程（アクティビティ）の識別番号（繰り返し）＋分割実行される工程の識別番号＋分割された部分の、ジョブ全体に対する位置を示す識別子」で与えられる。「分割された部分の、ジョブ全体に対する位置を示す識別子」は、図１０では、分割数を分母に、分割部分の順番を示す番号を分子にした分数形式で示される。
【００８７】
作業結果５０２には工程１の作業指示および作業結果が記載されている。作業指示はワークフロー実行部１０４により記載される。作業結果は、処理を行ったデバイスにより記載される。作業結果について説明する。＜入稿ファイル＞欄は「aaabbbccc.pdf」であり、＜開始時間＞欄には「2005/04/14 19:00:01」に入稿を受付けたことが記述されている。さらに、＜終了時間＞欄には、「2005/04/14 19:00:03」に入稿を終了したことが記述されている。また、＜部数＞は１０部である。部数は、たとえばジョブチケットで指定された部数であってもよいし、入稿時にオペレータにより指定された部数であっても良い。また、入稿されたデータが保存されている＜ホットフォルダ＞欄は「folder1」となっている。ホットフォルダとは、所定の目的のためにあらかじめ指定されているフォルダであり、本例では入稿データを保存するためにあらかじめ指定されたフォルダである。図１０では入稿したＰＣ上のホットフォルダ名が示されている。＜処理の実行者＞欄は、「System」が主体であることが記述されている。このように工程１ではその処理結果として、少なくとも、入稿ファイルの名称およびそれが保存されている場所を示す情報がジョブチケットに追加される。なお工程１は図１０では問題（障害）なく終了している。
【００８８】
領域５０３には工程２（Ａ２：面付けアプリ）の作業指示および作業結果が記載されている。作業指示はワークフロー実行部１０４により記載されるが、図では詳細は省略しＡ２と示した。作業指示は、ワークフローおよび、ジョブチケットに記載された前の工程の作業結果を基に記載される。作業指示の内容としては、「両面くるみ製本」であることおよびその詳細を示すパラメータが記述されている。これはたとえば、ワークフロー実行部１０４が、印刷およびフィニッシングのアクティビティを読み、面付けのパラメータとして、それをジョブチケットに記載することで実現される。面付けでは、その後の印刷やフィニッシング処理のためにページ順の調整も行う。たとえば、印刷エンジン１１０は入力される面付け後のページ順序で印刷済み用紙を出力する。フィニッシャは、給紙台に載置された印刷済み出力用紙を、その装置に固有の順序で取り込みフィニッシング処理する。そこで、フィニッシャが正しく１部ずつ製本できるように、印刷出力されるページ順序は決定されるべきであり、面付け処理後のページ配置もそれに合わせて決められる。このようなページ順序の決定は、たとえば面付けアプリケーションが、ジョブチケットに記載されたパラメータとして、両面くるみ製本が行われること、および製本の単位となる枚数等をワークフロー実行部から受け取ることで実現される。
【００８９】
また作業結果は、処理を行ったデバイスにより図１０のようにジョブチケットに記載される。工程２の作業結果について説明する。工程２は工程１と同じく本例では問題（障害）なく終了している。面付けの結果としてＡ３用紙を使用したくるみ製本のための面付けが１アップ（シート１ページにつき入稿された１ページが配置される）で行われている。また工程２の処理は担当者「yamanaka」が行ったことが記述されている。また、くるみ製本の表紙カバーには厚紙１の用紙を使用するという記載もある。これはたとえば、面付け処理時にカバーまで含めた面付けが行われた場合などに記載される。また出力部数は１０部、印刷枚数は１２０枚である。これはたとえば、印刷エンジンにより印刷させた場合の出力順序をフィニッシャによる処理順序に整合させるために、面付けアプリケーションが全出力ページを生成する必要がある場合等に、処理結果として記載される。図１０の例では、１２枚のくるみ印刷を１０部出力し、総計１２０枚印刷することを示している。なお、総ページ数の代わりに、部数と共に１部あたりのページ数を記述しても良い。また、＜開始時間＞および＜終了時間＞欄は工程２には記されていないが必要に応じてセットされる。このように工程２ではその処理結果として、少なくとも、面付け後のページ数がジョブチケットに追加される。もちろん図１０のようにそのほかの情報が追加される場合もある。
【００９０】
領域５０４は工程３の処理結果を示している。デバイス名欄５０４にはデバイス名「ＡＢＣＤ」が記載されている。また出力ページ欄５０５には、分割が工程３で行われたことを示す工程の識別番号「３」と、出力が完了した部分が前半部分であることを示す「１／２」という識別子とをつなげた「３−１／２」と、印刷済みページ数「５０」が記載されている。割符パスワード５０６は、ジョブチケットを分割した際に各々のジョブチケットに同一のパスワードが挿入される。本例では工程３で分割が発生したため割符パスワードが工程３の要素として記載されている。その値は「a3$DtGh)」であるが、固有性があればどのようなものであってもよい。未出力ジョブ情報欄５０６には、分割が工程３で行われたことを示す工程の識別番号「３」と、出力が完了した部分が後半部分であることを示す「２／２」という識別子とをつなげた「３−２／２」と、未印刷済みページ数「７０」が記載されている。これにより７０枚が未出力であることが示されている。未処理の工程を示す欄５０７及び欄５０８には処理結果の記録が何も残されていない。欄５０９はジョブの終了を示すマークであり、分割後のジョブ名も記載されている。このように工程３ではその処理結果として、少なくとも、デバイス名と、出力ページ数とがジョブチケットに追加される。もちろん、未処理部分が残れば、出力ページ数に加えて未処理ページ数も追加される。
【００９１】
また図１０のジョブチケット４０１は、工程３の処理済み部分に関するジョブチケットである。ワークフロー実行部１０４は、エンジン部１１１から工程Ａ３の途中まで処理が終わったことを記したジョブチケットを受信すると、工程４用のフィニッシング処理のための記述をしたジョブチケット４０３を生成する。例えば、ジョブチケット４０３は、フィニッシャに送られるものであるので、フィニッシャにより実行される処理のパラメータが記載されている。
【００９２】
図１１はジョブチケット４０２の構成例の図である。ジョブ名６０１からは工程３で分割された後方のジョブであることが分かる。割り符パスワード６０２は、図１０のパスワード５０５と同様の割符パスワード、符号６０３はジョブの終了マークである。ジョブ名以外は、図１０と同様の内容を有している。ジョブ名６０１は、上述した規則に従って、「３６１２１２−１−２−３−２／２」となっている。このジョブ名は、元ジョブ名「３６１２１２」に含まれる工程１、２は成功したこと、工程３で２分割されたこと、本ジョブはそのうちの後半のジョブであることを示している。なお、工程１、２、３はそれぞれアクティビティＡ１，Ａ２，Ａ３に対応する。また、工程１，２が成功したことは「−２−１」で示され、工程３で２分割され、本ジョブはそのうちの後半のジョブであることは、「−３−２／２」で示される。また図１１のジョブチケット４０２は、工程３の印刷処理のため印刷エンジン１１１に送られるものであるので、フィニッシャにより実行される処理のパラメータは記載されている必要はない。
【００９３】
図１２にジョブチケット分割処理の一例を示す。まず、ワークフロー実行部１０４は、元ジョブのジョブチケットを分割する数だけ複製する（Ｓ１８０１）。そして、それぞれのジョブチケットの元ジョブ名称の欄に元ジョブの名称を複製し、ジョブ名として、図５等で説明した規則に従い、各ジョブチケットに固有の名称を記述する（Ｓ１８０２）。さらにその後、各ジョブチケットが送信されるデバイスのために、該当する工程の欄に指示（処理パラメータ）が記述される。なお、ここで記述されるパラメータは前工程の処理結果を反映したパラメータが記述される。
【００９４】
＜ジョブチケットの結合＞
次にジョブチケットを結合する結合アクティビティの処理に関して説明する。分割されたジョブは、分割された各ジョブチケットに係る処理が同じ工程まで進んだ際に、結合することができる。また、結合しなければ次の工程が行えない場合もある。
【００９５】
図１３は本発明によるジョブチケットの結合を説明するためのシステム概要図である。図１３において、ジョブチケット７０１は、エンジン復旧後に印刷が終了したジョブおよびジョブチケットである。ジョブチケット７０２は、次の処理工程（フィニッシング）に進んだジョブのジョブチケットであり、まだ次の処理が開始されていない。本例では、フィニッシング処理では、１２枚を１部とするくるみ製本を１０部分実行する。
【００９６】
一方ジョブチケット４０１は、次のフィニッシング工程においてさらに２分割されている。工程４のフィニッシング処理は、本例では製本処理を含んでおり、１部単位でしか実行できないためである。１部に満たない半端な部分は、残りの部分の印刷が完了し、そこと合わせて初めて製本され得る。そのため、ジョブチケット４０１は、製本された部分に対応するジョブチケット７０３と、製本されていない部分に対応するジョブチケット７０４とに分割されている。たとえば図１０の記述によれば、ジョブチケット４０１により、印刷済みの５０ページがフィニッシャの処理に渡される。フィニッシャでは１２枚ごとのフィニッシング（製本）が行われるので、４部製本を作成すると２枚のあまりが発生する。そこで、フィニッシングが完了した４８ページと、未完了の２ページとにジョブが分割される。ジョブチケット４０１は、ジョブの分割のために、フィニッシングの工程が完了したジョブチケット７０３と、フィニッシングの工程が未完了のジョブチケット７０４とに分割される。そして、ジョブチケット７０４は、印刷エンジンの復旧後に印刷が完了したジョブのジョブチケット７０２と結合され、結合後のジョブチケットがフィニッシング処理のためにフィニッシャ１１１２に対して発行される。結合はワークフロー制御部１０４で行われる。これにより、この後の工程作業の自動化が図れ、データが扱いやすくなる。
【００９７】
図１４はジョブチケット７０４と、ジョブチケット７０２の構成例の図である。また工程Ａ２以前は省略されている（これは図１５，図１６も同様）。ジョブチケット８０１はジョブチケット７０４の内容の例を示す図である。作業工程Ａ４で分割されたジョブチケットは、元ジョブ名が「361212-1-2-3-1/2」である。したがって前述の名前付けルールに従い、元ジョブ名に「-4/2/2」が付加された「361212-1-2-3-1/2-4/2/2」がジョブチケット７０４のジョブ名となる。これにより工程Ａ３による分割ジョブの前半のジョブを、さらに工程Ａ４で分割したその後半に相当することが示されている。また、工程Ａ４の＜未出力ジョブ＞の値が「4-2/2 2枚」となっていることから、本ジョブチケットが指し示すジョブの工程Ａ４は、２枚の未処理ジョブを対象とすることがわかる。
【００９８】
ジョブチケット８０２はジョブチケット７０２の構成例の図である。ジョブ名「361212-1-2-3-2/2」から作業工程Ａ３で分割が行われた後半のジョブであることを示している。また、工程Ａ４の＜処理ページ＞の値が「70枚」となっていることから、本ジョブチケットが指し示すジョブの工程Ａ４における７０枚を対象とすることがわかる。これらは、フィニッシャ１１１によりジョブチケットの該当箇所（すなわちデバイス名としてフィニッシャ名が記述された工程の領域）が読み取られ、「未処理ジョブ」欄の値から判断される。
【００９９】
＜結合後のジョブチケット＞
図１５は、ジョブチケット９０１はジョブチケット７０２とジョブチケット７０４とが結合された後のジョブチケットの構成図を示している。図１４に記載のジョブチケット８０１とジョブチケット８０２がワークフロー実行部１０４に送信される。ジョブチケット９０１ではジョブ名「361212-1-2-3-1/2-4/2/2」の次にSubJobName「361212-1-2-3-2/2」が追加され、ジョブ結合されたことがわかる。作業工程Ａ４の処理ページが加算の結果７２枚となっている。結合後にニアラインフィニッシャの処理に進むことができる。加算の対象は、結合されるジョブチケットそれぞれの工程Ａ４において処理すべきページ数である。すなわちジョブチケット「361212-1-2-3-2/2」の工程Ａ４の＜処理ページ＞の値７０と、ジョブチケット「361212-1-2-3-1/2-4/2/2」の工程Ａ４の＜未出力ジョブ＞の値２とが加算される。結合の条件は後で説明する。
【０１００】
図１６に、結合されたジョブチケット９０１をフィニッシャが受信してフィニッシング処理を実行した後のジョブチケットの例を示す。このジョブチケット１７０１が、ワークフロー実行部１０４に送信される。工程Ａ４の処理の処理結果がジョブチケットの欄１７０２に示されている。処理前のジョブチケット（図１５）に比べて、処理済みページ数や部数、作業者、作業内容といった結果が、フィニッシャ１１２によって表示欄１７０２に記述されている。
【０１０１】
＜本実施形態における結合アクティビティ処理＞
図１７は、ワークフロー実行部１０４部で実行される結合アクティビティの処理のフロー図である。この手順でたとえばジョブチケット８０１とジョブチケット８０２とが結合される。図５に記載の結合アクティビティ５０１を例として説明する。
【０１０２】
図１７において、ステップＳ１７０１では、ワークフロー実行部１０４が、分割されたジョブチケットのデータ受信を待つ処理である。なお、受信したジョブチケットが分割されたジョブチケットであるか否かは、上述した通り、ジョブチケットの名称を用いて判定することができる。本例では、ジョブチケットはワークフロー実行部１０４部を介してアクティビティに入力される。しかし、アクティビティから次のアクティビティに直接渡されても良い。この場合には、各アクティビティの実行主体が、次段のアクティビティの実行主体がなにであるか決定し、そこに宛ててジョブチケットを送信する機能を持つ。
【０１０３】
ステップＳ１７０２は、ワークフロー実行部１０４が、分割ジョブチケットデータの受信を判定する。ステップＳ１７０３は、データを受信した場合に、どのアクティビティのデバイスからの受信であるかを判定する。この判定処理も受信したジョブチケットの名称から判定できる。例えば、図１４のジョブチケット８０１を受信した場合、ジョブチケット名称は、「３６１２１２−１−２−３−１−１／２−４−２／２」となっている。ここで、ジョブチケット名称から、４つ目の工程まで進んで分割されたジョブであると判定できるため、ワークフロー実行部は、ジョブチケット８０１を４つ目のアクティビティのデバイスから取得したと判定できる。なお、図１７では、図５の結合アクティビティを例にして、説明しているため、Ｓ１７０３の処理はアクティビティ２０３からの受信か否かを判定するステップとしている。もしＹｅｓであればステップＳ１７０４へ進む。アクティビティ２０３からのデータでなければアクティビティ２０４からの受信であるため、ワークフロー実行部１０４は、ステップＳ１７０８へ進み内部で保持するＡ４フラグをセットする。ステップＳ１７０４は同様に内部で保持するＡ３フラグをセットする処理である。ステップＳ１７０５において、ワークフロー実行部１０４は、Ａ３フラグとＡ４フラグがともにＯＮとなったのか判定する。ともに揃ったらステップＳ１７０６へ進む。なお、ステップＳ１７０３〜Ｓ１７０５の処理をより一般的にすることもできる。たとえば、入力データとはジョブチケットであるから、ジョブチケットを受信した場合、そのジョブチケットに示されているジョブチケットの分割に係る情報を参照する。たとえば分割後のジョブチケットのＩＤは、元のジョブチケットのＩＤに、分割が生じたアクティビティのＩＤ（あるいは順序番号）と、既処理部分か未処理部分かを示す情報とが示される。このため以下の条件（１）が満たされた上で、条件（２）または（３）が満たされればジョブチケットは結合可能と判定できる。すなわち、（１）同じジョブチケットのＩＤを含むこと。（２）同じアクティビティで分割された部分ジョブ同士であること。（３）あるアクティビティで分割された未処理ジョブと、その直後のアクティビティで分割された未処理部分と同士であること。ただし「あるアクティビティで分割された未処理ジョブ」とは分割時点でのジョブチケットＩＤの意味である。結合アクティビティに入力される際には、そのジョブチケットに対応するジョブの当該アクティビティにおける処理は済んでいるはずである。例えば、図１４のジョブチケット８０１とジョブチケット８０２を用いて具体的に説明する。両者のジョブチケット名称には「３６１２１２」と同じジョブチケットＩＤが含まれているため、（１）を満たしている。また、ジョブチケット８０１には工程３で分割されたことを示す「―３―１／２」の記述があり、ジョブチケット８０２にも工程３で分割されたことを示す「―３−２／２」と記述されている。つまり、ジョブチケット８０１および８０２ともに、３つ目の工程で分割されているため（２）の条件を満たしている。さらに、ジョブチケット８０１には「未処理ジョブ  ４−２／２」との記述がある。また、ジョブチ���ット８０２には「３−２／２」との記述がある。つまり、ジョブチケット８０２は３つ目の工程で分割された未処理ジョブであり、ジョブチケット８０１は、ジョブチケット８０２の直後の工程で分割され、未処理ジョブである。よって、ジョブチケット８０１およびジョブチケット８０２は（１）、（２）、（３）の全ての条件を満たしているため、当然結合可能と判定される。
【０１０４】
さて、ステップＳ１７０６は結合可能か判定するステップである。Ａ３およびＡ４から受け取ったジョブを可能であればページの連続性などをチェックして結合可能かを判定する。これは、上記条件（１）（２）（３）によって一般的な判定をした場合にも行われる。ステップＳ１７０６で結合可能と判定されるとステップＳ１７０７へ進む。ステップＳ１７０７は結合の実施処理である。結合は、たとえば結合されるジョブのジョブチケットを合成して単一のジョブチケットを生成する処理である。結合が不能であればステップＳ１７０９へ進む。ステップＳ１７０９は結合不能のためエラー終了するステップである。以上が結合アクティビティの処理例である。
【０１０５】
結合処理がおわると、ワークフロー実行部１０４は、結合済みであるジョブチケットを実行中のワークフロー（着目ワークフロート呼ぶ。）のワークフロー情報に従い、次のアクティビティの処理主体にそのジョブチケットを送信する。図５の例では、アクティビティ５０２を実行するフィニッシャに、結合されたジョブチケット９０１が送信される。
【０１０６】
＜ジョブチケット結合のユーザインターフェース＞
図１８は、ジョブチケットの結合を行う際のパネル表示例図である。ジョブチケットの結合は、条件に適合すればそのまま行っても良いが、図１８に示すユーザインターフェースを通してユーザに結合対象のジョブチケットを指定させても良い。結合アクティビティを実行するプログラムにより行われる。たとえば、オペレータが、ジョブの結合を指示する入力を行うと、それに応じて図１８のウインドウ１００１が表示される。表示されるデバイスはクライアントコンピュータ１０２である。もちろん、ジョブの結合が行われるデバイスであれば、他のデバイスであっても同様に表示される。
【０１０７】
ウインドウ１００１はジョブチケット入力指示画面の例である。表示領域１００５はシステムからのメッセージを表示するための領域である。領域１００６はユーザが結合したいジョブチケットを入力するテキスト入力領域である。ボタン１００７はジョブチケットを参照検索する際に使用する参照ボタンである。ボタン１００８はジョブチケットの結合を実行する実行ボタンである。ボタン１００９は結合する２個目以上のジョブチケットを指定するための結合ボタンである。ボタン１０１０は本ジョブチケットの結合表示から抜けるためのキャンセルボタンである。
【０１０８】
ウインドウ１００２は、第１のジョブチケット名をユーザが指定した状態の表示である。この状態でユーザは結合ボタンを押下できる。結合ボタンを押すと、第２のジョブチケット名を入力できる。ウインドウ１００３は第２のジョブチケット名を指定した状態の画面である。ユーザはこの状態で実行ボタンを押下できる。実行ボタンが押されると、パスワードが入力できる。ウインドウ１００４は、結合用のパスワード（割り符パスワード）をユーザが入力して実行ボタンを押下する際の表示である。ウインドウ１００４において実行ボタンを押下することで、図１８の要領で入力された、結合しようとするジョブチケットの名称等の情報がワークフロー実行部１０４に送信される。図１８のユーザインターフェースを利用する場合には、ワークフロー実行部１０４は指定されたジョブチケットについて図９の手順で結合する。
【０１０９】
図１９は、各処理工程のために生成されるジョブチケットの例を示した図である。ジョブチケット１２０１は本例の作業工程Ａ１を実行する際のジョブチケット、ジョブチケット１２０２は工程Ａ２でのジョブチケットである。特に分割も発生していないためジョブチケットは１つである。その後工程Ａ３へ進み、そこで分割が発生する。これはジョブチケット２０６からジョブチケット４０１、ジョブチケット４０２へ分割されたことを示している。図１９では、ジョブチケット１２０３がジョブチケット１２０４とジョブチケット１２０７とに分割されている。その後ジョブチケット１２０４は、さらにジョブチケット１２０５とジョブチケット１２０６とに分割されている。ジョブチケット１２０６はジョブチケット７０４を示している。図１９において、ジョブチケット１２０６とジョブチケット１２０７に対応するジョブにはページの連続性がある。よって結合が可能である。以上のような判定が、図１７のステップＳ１７０６で行われる。
【０１１０】
＜結合判定（ステップＳ９０６）＞
図２１は、ジョブチケットの結合可能判定（Ｓ１７０６）のフローチャートである。図２１は、図１７のステップＳ１７０１で受信したデータを基に、ワークフロー実行部１０４により実行される。なおパラメータがユーザインターフェースから入力される場合には、図１８のユーザインターフェースから入力されたパラメータに基づいて実行される。図２１は、ジョブＡとジョブＢの２つのジョブのジョブチケットが結合可能か否かを判定するフローとしている。
【０１１１】
ステップＳ２１０１において、ワークフロー実行部１０４はジョブＡの分割工程を検索する。分割工程とは図１１でいうところの工程３および工程４がそれにあたる。この分割工程は入力されたジョブ名から探索できる。ジョブ名のうち、「１／２」といった分数形式の識別子に先立つ工程が、分割工程と判定できる。例えば、ジョブチケットの名称が「―３−１／２」であれば、３つ目の工程が分割工程であると認識される。ステップＳ２１０２において、ワークフロー実行部１０４は、ジョブＢの分割工程を検索する。なお、検索方法は、Ｓ２１０１と同様である。ステップＳ２１０３では、ワークフロー実行部１０４が、前頁を含むジョブを決定する。例えば、Ｓ２１０１およびＳ２１０２にて検索された同じ分割工程の後に記述された分数形式の識別子の分子に記述された値を用いて実行する。つまり、３つ目の工程の後に記述された分数形式の識別子を判定する。たとえば、２分割されていれば、前側のページが含まれているジョブと、後側のページが含まれているジョブとを決定する。この決定は、分割工程の後に続く分数形式の識別子の分子が「１」となっているジョブ名が先頁を含むジョブであると決定される。つまり、分数形式における分子の値がジョブチケット順序を示す。たとえば図１９でのジョブチケット１２０６とジョブチケット１２０７では、ジョブチケット１２０６が前のページを含んでいる。工程Ａ３で分割したほうの前方を含んでいるのがジョブ名から判断できる。
【０１１２】
ステップＳ２１０４は、ステップＳ２１０３で前方のページを含むジョブと判定されたジョブが、分割された時点における最終ページを含んでいるか否かの判定ステップである。ジョブチケット１２０６とジョブチケット１２０７の例では、ワークフロー実行部が、第３工程の分割における前方側の最終ページ（処理済みとなっているページ群の最終ページ）がジョブチケット１２０６に含まれているかをステップ１２０６から判定する。ステップＳ２１０５は、ステップＳ２１０３で後方のページを含むジョブと判定されたジョブが、分割時点での先頭ページを含んでいるか否かの判定ステップである。ジョブチケット１２０６とジョブチケット１２０７では、ワークフロー実行部が、第３工程の分割における後方側の先頭ページ（つまり、未処理となっているページ群の先頭ページ）がジョブチケット１２０７に含まれるかをジョブチケット１２０７から判定する。
【０１１３】
ステップＳ２１０６は結合可能と判定するステップ、Ｓ２１０７は結合不能と判定するステップである。ステップＳ２１０４およびステップＳ２１０５の両者においてＹｅｓと判定された場合、前ページを含むジョブと後ページを含むジョブは、ページの連続性があると判定される。そのため、ワークフロー実行部は、例えば図１８のＵＩにて指定された複数のジョブチケットの結合が可能であると判定する（Ｓ２１０６）。つまり、ワークフロー実行部１０４は、ジョブチケットを結合する際に、ジョブチケットが分割された着目処理工程の次工程以降において結合しようとする各ジョブチケットによる処理部分が、連続した部分であるか否かを判定する。そして、ワークフロー実行部１０４は、連続した部分であればジョブチケットを結合する。たとえば、結合可能をしめすフラグ等が、ステップＳ２１０６でセットされ、ステップＳ２１０７でリセットされる。これが図１７のステップＳ１７０６での判定基準となる。
【０１１４】
上記手順でページの連続性による結合判定のフローを示したが、必ずしもページの連続だけが結合条件になるとは限らない。ページの連続性がなくても結合を行っても次の作業に影響がでないこともありえる。
【０１１５】
以上のように本実施形態によれば、ワークフロー実行中に新たなワークフローを生成できる。そして各ワークフローの処理を互いに独立して進めることができる。そして分割したジョブチケットを用いて、各ワークフローのアクティビティを実行できる。これにより、ひとつのジョブの実行中に、それを中断する事由が生じても、継続可能な部分を分割して、その部分については処理を進行させることができる。このため、ジョブ全体を完了させるための時間が短縮できる。
【０１１６】
また、ジョブチケットをワークフロー実行中に動的に結合することができる。そして結合したジョブチケットを用いて、アクティビティを実行できる。このため、分割されたジョブの各部分を結合したアクティビティを、マニュアルで行わずに済みワークフローの生産性が向上する。
【０１１７】
なお、分割されたジョブに係る出力物を、オペレータが手作業で結合した場合には、その後の工程の処理は、結合されたジョブとして処理される必要がある。しかし、特に通知がない限り、サーバは、出力物に対する結合処理が行われていることを認識できない。そこで、手作業である工程の出力物の結合を行った作業者は、パーソナルコンピュータ等を通して、結合した出力物を出力した工程の名称（ジョブチケットの名称）および結合した旨をワークフロー実行部に入力する。その通知を受けたワークフロー実行部は、結合された出力物に相当するジョブチケットを結合し、次の工程のジョブチケットを生成する。この様にすることで、手作業による結合を、ワークフローに反映させ、作業の簡略化を図ることができる。
【０１１８】
［第２実施形態］
以下、別の実施例として承認系のワークフローシステムに関して説明する。承認系のワークフローの定義例を図２２に示す。図２２において２２０１から２２０４はそれぞれアクティビティである。２２０１は申請を行うアクティビティである。住所変更、外出交通費申請、など企業内の業務に多数存在するものである。本作業は通常一般者により執り行われる。終了すると２２０２へすすむ。２２０２は課長による承認アクティビティである。非図示であるが２２０２では２２０１の申請処理を承認するのであれば承認ボタンなどを押下し、否認するのであれば、「否認ボタン」、「差し戻しボタン」等を押下すればよい。同様に２２０３は部長による承認アクティビティ、２２０４は社長による承認処理である。
【０１１９】
フローによっては、一括系の承認依頼が行われる。例えば申請書１０部を１つのアクティビティで処理させ、承認依頼を求めるものである。この場合、１部だけ承認を差し戻しするようなケースが多々発生する。差し戻しとは、下位の者へ申請を戻す処理のことである。この一部差し戻しの処理をワークフローエディタ上で表現すると複数のアクティビティで処理が考えられるためフローが煩雑で理解困難なものとなってしまう。
【０１２０】
図２３は本発明のワークフロー自動生成を示す概要図である。図２３において２２０２〜２２０４は図２２のそれに等しい。２３０１から２３０４は、本発明によるワークフローの自動生成により生成されたアクティビティである。本例では２２０３のアクティビティにて一部差し戻し発生した際に新規アクティビティが生成されている。２３０１は２２０３で差し戻された部分的なジョブが進むアクティビティである。２３０１で承認処理が行われると２３０２へ進む。２３０２は２２０３の複製アクティビティ２３０１の処理済のジョブを扱うことができる。２３０３は２２０４の複製アクティビティである。２３０２の終了ジョブを扱うことが可能である。２３０４は最終結合アクティビティである。ジョブとして完全系にするもので、承認確認を行えるものである。
【０１２１】
図２４はアクティビティのプロパティの設定表示例である。図２４において２４０１はダイアログ設定部である。たとえば、２２０１から２２０４の各アクティビティに別々のプロパティを設定することが可能である。プロパティでは各種パラメータの設定を行うことが可能であるが、本例はその一部分のみを表示している。２４０２は一部差し戻しを不可とするラジオボタン、２４０３は一部差し戻しを可とするラジオボタン、現設定は可となっている。２４０４は作業の並行処理を行うスイッチであり、本スイッチがチェックされていることで２３０１から２３０４が生成されている。２４０５は最終結合アクティビティを生成するスイッチである。現設定は生成するように設定されているので２３０４が生成されている。
【０１２２】
本実施形態は、第１の実施形態と異なり、派生ワークフローは、中断したアクティビティではなく、それ以前のアクティビティまで含めて生成される。この点を除けば第１実施形態と同じ要領で処理は行われる。ただしどこまで戻すか、という点は、機械的に判断できない場合もある。その場合には、派生ワークフローを生成する際に、ユーザインターフェースを介して戻すアクティビティを指定させ、そのアクティビティを先頭にして元ワークフローのワークフロー情報を複製する。こうして派生ワークフローを生成して実行する。
【０１２３】
以上のように本実施形態によれば、中断するアクティビティよりも前のアクティビティに戻る新たなワークフローを生成するために、差し戻しの処理を、あらかじめワークフローを定義することなく行うことができる。
【０１２４】
［その他の実施形態］
なお本発明は、複数の機器（例えばホストコンピュータ、インタフェイス機器、リーダ、プリンタなど）から構成されるシステムに適用しても、一つの機器からなる装置（例えば、複写機、ファクシミリ装置など）に適用してもよい。また本発明の目的は、前述の実施形態の機能を実現するプログラムコードを記録した記録媒体を、システムあるいは装置に供給し、そのシステムあるいは装置のコンピュータが記憶媒体に格納されたプログラムコードを読み出し実行することによっても達成される。この場合、記憶媒体から読み出されたプログラムコード自体が前述した実施形態の機能を実現することになり、そのプログラムコード自体およびプログラムコードを記憶した記憶媒体は本発明を構成することになる。
【０１２５】
また、本発明には、プログラムコードの指示に基づき、コンピュータ上で稼働しているオペレーティングシステム(OS)などが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれる。さらに、記憶媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張カードやコンピュータに接続された機能拡張ユニットに備わるメモリに書込まれた場合についても、本発明は適用される。その場合、書き込まれたプログラムコードの指示に基づき、その機能拡張カードや機能拡張ユニットに備わるCPUなどが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される。
【図面の簡単な説明】
【０１２６】
【図１】本発明の第１実施形態を示す印刷システムのシステム概要図
【図２】ワークフローの定義例を示す図
【図３】ジョブチケットの構成例を示す図
【図４】本発明を用いた際のシステム概要図
【図５】本発明のワークフロー自動生成を示す概要図
【図６】アクティビティのプロパティの設定表示例の図
【図７】本発明を使用しない場合のフロー例の図
【図８】アクティビティを実行する際の制御フロー図
【図９】ワークフロー実行部の処理例のフロー図
【図１０】ジョブチケットの構成例図
【図１１】ジョブチケットの構成図
【図１２】ジョブ分割手順の処理フロー図
【図１３】ジョブチケットの結合を説明するためのシステム概要図
【図１４】７０４のジョブチケットと、７０２のジョブチケットの構成例図
【図１５】結合された後のジョブチケットの構成図
【図１６】結合されたジョブチケットに係るアクティビティ実行後のジョブチケットの例を示した図
【図１７】結合アクティビティの処理のフロー図
【図１８】ジョブチケットの結合を行う際のパネル表示例図
【図１９】ジョブチケットの遷移を示した図
【図２０】ジョブ名の詳細を示した図
【図２１】ジョブチケットの結合可能判例フロー図
【図２２】承認系のワークフローの定義例
【図２３】ワークフロー自動生成を示す概要図
【図２４】アクティビティのプロパティの設定表示例
【図２５】コンピュータのブロック図
【符号の説明】
【０１２７】
１００は印刷システムサーバー部
１０１はインターネットあるいはイントラネットであるネットワーク部
１０２はパソコンとソフトウエアなどからなるクライアント部
１０３はジョブチケット発生部
１０４はワークフロー実行部
１０５はジョブチケット管理部
１０６はログインしたユーザの権限などを保持するユーザ管理部
１０７はアクティビティ管理部
１０８はワークフロー管理部
１０９は「入稿アプリ」が存在するＰＣ
１１０は「面付けアプリ」が存在するＰＣ
１１１は印刷エンジン
１１２はニアラインフィニッシャ部
【図１】
0004761533.tif 000002
【図２】
0004761533.tif 000003
【図３】
0004761533.tif 000004
【図４】
0004761533.tif 000005
【図５】
0004761533.tif 000006
【図６】
0004761533.tif 000007
【図７】
0004761533.tif 000008
【図８】
0004761533.tif 000009
【図９】
0004761533.tif 000010
【図１０】
0004761533.tif 000011
【図１１】
0004761533.tif 000012
【図１２】
0004761533.tif 000013
【図１３】
0004761533.tif 000014
【図１４】
0004761533.tif 000015
【図１５】
0004761533.tif 000016
【図１６】
0004761533.tif 000017
【図１７】
0004761533.tif 000018
【図１８】
0004761533.tif 000019
【図１９】
0004761533.tif 000020
【図２０】
0004761533.tif 000021
【図２１】
0004761533.tif 000022
【図２２】
0004761533.tif 000023
【図２３】
0004761533.tif 000024
【図２４】
0004761533.tif 000025
【図２５】
0004761533.tif 000026