(57)【要約】【課題】処理が完了してから一定期間を経過したサブタスクを特定し、特定したサブタスクをアーカイブすることによって、タスクインスタンスデータベースを軽量化する。【解決手段】データベースを備えた管理サーバによってコンストラクティブワークフローを管理するワークフロー管理システムであって、タスクの書誌情報及びタスク間の階層構造を記憶する第１データベース１１２と、処理が完了したタスクを特定する特定手段１１０と、特定手段により特定されたタスクを、第１データベースから処理が完了したタスクを記憶する第２データベース１１５に移動する移動手段１１１とを備える。【選択図】図３
2010020620.tif 000002
【特許請求の範囲】
【請求項１】
データベースを備えた管理サーバによってコンストラクティブワークフローを管理するワークフロー管理システムであって、
タスクの書誌情報及びタスク間の階層構造を記憶する第１データベースと、
処理が完了したタスクを特定する特定手段と、
前記特定手段により特定されたタスクを、前記第１データベースから処理が完了したタスクを記憶する第２データベースに移動する移動手段と
を備えるワークフロー管理システム。
【請求項２】
文書を記憶する第３データベースと、
処理が完了したタスクに関連付けられた文書を記憶する第４データベースとを備え、
前記移動手段は、
前記特定手段により特定されたタスクに関連付けられた文書を、前記第３データベースから前記第４データベースに移動する請求項１記載のワークフロー管理システム。
【請求項３】
前記タスク間の階層構造を表示する表示手段と、
前記第２データベースに記憶されるタスクについて、前記表示手段に表示するか否かを選択する選択手段と
を備える請求項１又は２記載のワークフロー管理システム。
【請求項４】
前記タスクを指定する指定手段と、
前記指定手段により指定されたタスクに関連するタスクを検索する場合、前記第１データベースと前記第２データベースとに記憶されるタスクを検索対象とする検索手段と
を備える請求項１乃至３いずれか一項に記載のワークフロー管理システム。
【請求項５】
前記特定手段は、
前記タスクの処理状態及び前記タスクの最終更新時刻を用いて処理が完了したタスクを特定する請求項１乃至４いずれか一項に記載のワークフロー管理システム。
【請求項６】
前記特定手段は、
処理が完了したタスクを特定する場合、該タスクのサブタスク全てに対して処理が完了していることを条件とする請求項１乃至５いずれか一項に記載のワークフローシステム。
【請求項７】
前記特定手段は、
前記タスクの最終更新時刻を用いる場合、該タスクのサブタスクの最終更新時刻のうち、最新の最終更新時刻を用いる請求項６記載のワークフロー管理システム。
【請求項８】
前記特定手段は、
処理が完了したタスクの特定を定期的に行う請求項１乃至７いずれか一項に記載のワークフロー管理システム。
【請求項９】
前記第２データベースは、ユーザからのアクセスに対して読み取り専用に設定される請求項１乃至８いずれか一項に記載のワークフロー管理システム。
【請求項１０】
前記第４データベースは、ユーザからのアクセスに対して読み取り専用に設定される請求項２乃至９いずれか一項に記載のワークフロー管理システム。
【請求項１１】
タスクの書誌情報及びタスク間の階層構造を記憶する第１データベースと、処理が完了したタスクを記憶する第２データベースとを備える管理サーバによってコンストラクティブワークフローを管理するワークフロー管理方法であって、
処理が完了したタスクを特定する特定ステップと、
前記特定ステップにより特定されたタスクを前記第１データベースから前記第２データベースに移動する移動ステップと
を有するワークフロー管理システム。
【請求項１２】
コンストラクティブワークフローを管理するワークフロー管理システムに接続される管理サーバにおけるワークフロー管理プログラムであって、
コンピュータに、
タスクの書誌情報及びタスク間の階層構造を記憶する第１データベースと、処理が完了したタスクを記憶する第２データベースとを備え、
処理が完了したタスクを特定する特定手段と、
前記特定機能により特定されたタスクを前記第１データベースから前記第２データベースに移動する移動手段と
を機能させるワークフロー管理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンストラクティブワークフローを管理するワークフロー管理システムに関する。
【背景技術】
【０００２】
従来のワークフロー管理システムは、ワークフロー実行前にワークフローモデルを決定する必要があった。しかし、研究開発や一部のサービスなど、事前情報の完全性の低い分野では、先行的なワークフローモデルの策定が難しい。そこで、コンストラクティブワークフローと呼ばれる、ワークフロー実行時に、動的にモデルを構成できる（動的に変更可能な）方法が開発されてきた。
【０００３】
また、コンストラクティブワークフローにおいて、タスク実行時の作業性を向上させることを目的とし、ワークフロー実行の際に必要となる各種情報（関連情報）を、タスク実行中に適時に検索・提供できるワークフロー管理システムが提案されている（例えば、特開２００７−１８８１４５号公報、特開２００８−０６５７８４号公報、特開２００８−０７１０８２号公報、特開２００８−０７１０８３号公報）。
【特許文献１】特開２００７−１８８１４５号公報
【特許文献２】特開２００８−０６５７８４号公報
【特許文献３】特開２００８−０７１０８２号公報
【特許文献４】特開２００８−０７１０８３号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかしながら、コンストラクティブワークフローでは、ワークフロー実行時に動的にタスクの追加が行えることから、従来のワークフローより長期的な仕事についても扱うことができ、したがってサブタスクの中には、完了してから時間が経ち、更新されなくなったものが発生する。このようなタスクが数多くシステム内に存在すると、システム全体の性能に影響を与えてしまうという問題点がある。
【０００５】
本発明は、上記問題に鑑みてなされたものであり、処理が完了してから一定期間を経過したサブタスクを特定し、特定したサブタスクをアーカイブすることによって、タスクインスタンスデータベースを軽量化することができるワークフロー管理システム、ワークフロー管理方法、及び、ワークフロー管理プログラムを提供することを目的とする。
【課題を解決するための手段】
【０００６】
本発明の一局面のワークフロー管理システムは、データベースを備えた管理サーバによってコンストラクティブワークフローを管理するワークフロー管理システムであって、タスクの書誌情報及びタスク間の階層構造を記憶する第１データベースと、処理が完了したタスクを特定する特定手段と、前記特定手段により特定されたタスクを、前記第１データベースから処理が完了したタスクを記憶する第２データベースに移動する移動手段とを備える。
【０００７】
また、本発明の他の局面のワークフロー管理方法は、タスクの書誌情報及びタスク間の階層構造を記憶する第１データベースと、処理が完了したタスクを記憶する第２データベースとを備える管理サーバによってコンストラクティブワークフローを管理するワークフロー管理方法であって、処理が完了したタスクを特定する特定ステップと、前記特定ステップにより特定されたタスクを前記第１データベースから前記第２データベースに移動する移動ステップとを有する。
【０００８】
また、本発明に係る一局面のワークフロー管理プログラムは、コンストラクティブワークフローを管理するワークフロー管理システムに接続される管理サーバにおけるワークフロー管理プログラムであって、コンピュータに、タスクの書誌情報及びタスク間の階層構造を記憶する第１データベースと、処理が完了したタスクを記憶する第２データベースとを備え、処理が完了したタスクを特定する特定手段と、前記特定機能により特定されたタスクを前記第１データベースから前記第２データベースに移動する移動手段とを機能させる。
【発明の効果】
【０００９】
本発明によれば、処理が完了してから一定期間を経過したサブタスクを特定し、特定したサブタスクをアーカイブすることによって、タスクインスタンスデータベースを軽量化することができるワークフロー管理システム、ワークフロー管理方法、及び、ワークフロー管理プログラムを提供することができる。
【発明を実施するための最良の形態】
【００１０】
以下、本発明の実施例について図面を用いて説明する。
【実施例１】
【００１１】
＜システム構成について＞
まず、本発明の実施例１に係るワークフロー管理システムの構成について、図１〜図３を用いて説明する。図１は、本発明の実施例１に係るワークフロー管理システム１００の一例を示す図である。
【００１２】
図１に示すように、各種情報を管理し、システムが有する機能を制御するワークフロー管理サーバ（情報処理装置）SVと、ユーザがシステムを利用する際に端末として使用するユーザ端末（情報処理装置）PC（PC１〜PCｎ）とが、有線及び／又は無線回線により構築されたLAN（Local Area Network）やWAN（Wide Area Network）などのネットワーク（データ通信網）に接続され、ワークフロー管理システム１００を構築している。
【００１３】
図２は、本発明の実施例１に係るワークフロー管理サーバSV（以下、「管理サーバSV」と言う。）及びユーザ端末PCのハードウェア構成の一例を示す図である。
【００１４】
図２に示すように、管理サーバSV及びユーザ端末PCは、制御部１１、主記憶部１２、補助記憶部１３、ネットワークI/F１４、外部記憶装置I/F１５、外部装置I/F１６、出力装置I/F１７及び入力装置I/F１８とから構成されている。
【００１５】
制御部（CPU：Central Processing Unit）１１は、主記憶部１２に記憶されたプログラムを実行する装置で、入力や記憶装置から受け取ったデータを演算処理し、出力装置や記憶装置に出力する。
【００１６】
主記憶部（ROM：Read Only Memory、RAM：Random Access Memory）１２は、制御部１１が実行するプログラムやデータを記憶する装置である。
【００１７】
補助記憶部（HD：Hard Disk）１３は、基本ソフトウェアであるOS（Operating System）やアプリケーションソフトウェアなどを関連するデータとともに記憶する装置である。また、補助記憶部１３には、データベース（DB：Data Base）が構築され、ワークフロー管理システム１００で取り扱う各種情報（各種データ）を格納し管理する。
【００１８】
ネットワークI/F１４は、ネットワークを介して接続された周辺機器と情報（データ）をやり取りするインタフェースである。
【００１９】
外部記憶装置I/F１５は、USB（Universal Serial Bus）などのデータ伝送路を介して接続された外部記憶装置（例えば、記憶メディアドライブなど。）とデータをやり取りするインタフェースである。
【００２０】
外部装置I/F１６は、データ伝送路を介して接続された外部入力装置（例えば、デジタルカメラやスキャナなど。）とデータをやり取りするインタフェースである。
【００２１】
出力装置I/F１７は、データ伝送路を介して接続された出力装置（例えば、CRT（Cathode Ray Tube）や液晶ディスプレイなど。）からデータを受け取るインタフェースである。
【００２２】
入力装置I/F１８は、データ伝送路を介して接続された入力装置（例えば、キーボードやマウスなど。）からデータを受け取るインタフェースである。
【００２３】
図３は、本発明の実施例１に係るワークフロー管理システム１００の主な機能構成の一例を示す図である。
【００２４】
図１において説明したように、ワークフロー管理システム１００は、ワークフロー管理サーバSV、ユーザ端末PCとから構成されている。では、これらの装置が有する主な機能構成について、管理サーバSV、ユーザ端末PCの順に説明する。
【００２５】
図３に示すように、管理サーバSVは、システムを使用するユーザUに対してGUIを提供するGUI（グラフィカルユーザインタフェース）１０２と、既存のタスクモデル及び／又はタスクインスタンスからの再利用により動的にワークフローモデルを生成し実行するワークフローエンジン１０７と、各種のデータベース（以下、「DB」と言う。）１１２〜１１６を少なくとも備えている。
【００２６】
各種DBとしては、過去のタスクインスタンスを格納するタスクインスタンスDB１１２と、文書本体を格納する文書DB１１３と、ワークフローの実行に際して参考にされる関連情報（添付文書やコメント情報など）を格納する関連情報DB１１４と、アーカイブされたタスクを格納するタスクアーカイブDB１１５と、アーカイブされた文書を格納する文書アーカイブDB１１６とを備えている。
【００２７】
GUI１０２は、ユーザ端末PCの表示画面（CRTや液晶ディスプレイなどに表示される画面）を描画するためのレンダリングエンジン１０３と、ユーザUとの情報のやり取りを行う入出力制御部１０４と、ユーザ端末PCの表示画面にタスクのツリー構造を表示させるためのタスクツリー表示手段１０５と、ユーザ端末PCの表示画面に文書及び／又はタスクの一覧を表示させるための関連文書表示手段１０６とを備えている。
【００２８】
ワークフローエンジン１０７は、文書DB１１３、文書アーカイブDB１１６に対して検索を実行する文書検索手段１０８と、タスクインスタンスDB１１２、タスクアーカイブDB１１５に対して検索を実行する関連タスク検索手段１０９と、アーカイブ対象の複数のファイル、データを特定し、特定したファイル、データをアーカイブするアーカイブ手段１１０と、DBに格納されているデータを他のDBへ移動させる移動手段１１１とを備えている。なお、移動手段１１１は、アーカイブ手段１１０に含まれる構成としてもよい。
【００２９】
ここで、タスクインスタンスDB１１２に格納される情報のデータ構造について、図４を用いて説明する。
【００３０】
図４は、タスクインスタンスDB１１２に格納される情報のデータ構造の一例を示す図である。図４に示すように、実施例１のワークフロー管理システム１００では、タスクの実行者IDに加えて、実行者のメールアドレス（複数個でも良い）、タスクが属するプロジェクトを特定するためのプロジェクトID、ユーザU（タスク実行者）による使用履歴を保持するためのタスクにアクセスしたユーザUのユーザIDとアクセス日時（図中の「使用者及び使用日時」の項目）などを管理する。また、実行者のメールアドレスについては、例えば、他のDBで管理しても良い。
【００３１】
図３に戻り、動作概要としては、ユーザUはGUI１０２の入出力制御部１０４を通じてワークフローエンジン１０７を操作し、ワークフローの作成、実行、ワークフローモデルの作成、関連情報、文書の登録、及びこれらとワークフローインスタンス、ワークフローモデルとのリンクなどの作業を行う。
【００３２】
ワークフローの作成に際し、ワークフローエンジン１０７の各検索手段１０８、１０９は、DB１１２〜１１６に対して各種検索を実行する。
【００３３】
また、実施例１のワークフロー管理システム１００は、管理サーバSVが備える通信I/F機能（例えば、図２で示した情報処理装置が備えるネットワークI/F１４。）によりシステムに接続される複合機MFPなどの機器とデータ通信が行えることから、ユーザUが複合機MFPなどの機器からシステムへログイン／ログアウト、スキャン画像のタスク関連付け（紙文書の情報をタスクの添付情報とする）、タスク添付情報の印刷などを行うことができる。
【００３４】
また、タスクアーカイブDB１１５と文書アーカイブDB１１６とは、ユーザからのアクセスに対しては読み取り専用に設定される。
【００３５】
次に、ユーザ端末PCは、管理サーバSVが備えたGUI１０２のレンダリングエンジン１０３により描画されたタスクに関連する各種情報や検索結果などを管理サーバSVとやり取りを行うための表示画面を表示するブラウザ１０１を備えている。
【００３６】
このように、上記に説明したシステム構成によって、実施例１に係るワークフロー管理システム１００は、サブタスクをアーカイブして、アーカイブしたサブタスクをタスクインスタンスDB１１２からタスクアーカイブDB１１５へ移動させることができるワークフロー管理システムを実現する。
【００３７】
＜実施例１におけるタスクの階層構造について＞
図５は、ワークフローの構造例を示す図である。図５において、ルートタスクであるワークフローは任意数のワークフローにより構成される。各タスクは更に任意数のサブタスクから構成されることができる。すなわち、ワークフローは複数のタスクを、タスクは複数のサブタスクを持つことができる。また、タスクにはファイルを添付することが可能である。例えば、そのタスクを実行するのに必要な文書などを添付することができる。
【００３８】
図６は、実施例１に係るアーカイブされたサブタスクの一例を示す図である。図６（ａ）は、タスクのサブツリーが完了した状態を示す図である。図６において、タスク２０１〜２０５が、完了したタスク（以下、完了タスクという）を示している。
【００３９】
図６（ｂ）は、図６（ａ）に示すタスクのうち、活動中のタスクのツリーを示す図である。図６（ｃ）は、図６（ａ）のタスクのうち、アーカイブされたタスクのサブツリーを示す図である。図６（ｃ）に示すように、図６（ａ）の完了タスクがアーカイブされている。
【００４０】
ここで、サブタスクを有するタスクはサブタスクが全て完了していないとアーカイブされないことにする。つまり、完了タスク２０２は、サブタスク２０３〜２０５が全て完了タスクであるため、完了タスク２０２以下のサブツリーをアーカイブすることができる。仮に、図６（ａ）において、タスク２０４が完了タスクではないとすると、アーカイブされるタスクはタスク２０１、２０３、２０５になる。
【００４１】
また、図６（ｂ）に示すタスクはタスクインスタンスDB１１２に格納され、図６（ｃ）に示すアーカイブされたタスクはタスクアーカイブDB１１５に格納される。
【００４２】
＜ワークフロー管理システム１００のアーカイブ処理について＞
図７は、実施例１に係るワークフロー管理システム１００のアーカイブ処理の一例を示すシーケンス図である。なお、アーカイブ処理は定期的に行われる。
【００４３】
図７に示す処理の例では、ワークフローエンジン１０７のアーカイブ手段１１０が、タスクインスタンスDB１１２に格納されるタスクの書誌情報から、処理が完了しているタスクを特定し、特定したタスクをアーカイブしてタスクアーカイブDB１１５に移動させる処理を説明する。
【００４４】
また、図７に示す処理の例では、タスクに関連付けられている（添付されている）文書についても同様に、文書DB１１３から文書アーカイブDB１１６に移動させる。
【００４５】
ここでは、データをデータベースＡからデータベースＢへ移動させるとは、データベースＡに格納されているデータをコピーし、データベースＢへコピーしたデータを格納し、データベースＡに格納されているコピーされたデータを削除することを言う。つまり、「移動」とは、元のデータベースにデータを残さずに、他のデータベースへデータを格納することを言う。
【００４６】
ステップ１０１において、ワークフローエンジン１０７は、タスクの更新状態を計算するため、タスクに関するデータの取得要求をタスクインスタンスDB１１２に行う。ステップ１０１に続いてステップ１０２に進み、タスクインスタンスDB１１２は、タスクの書誌情報と階層構造の情報とをワークフローエンジン１０７に返す。
【００４７】
ステップ１０２に続いてステップ１０３に進み、ワークフローエンジン１０７は、タスクインスタンスDB１１２から取得したデータに基づいて、タスクの更新状態を計算し、処理が完了したタスクを特定する。更新状態計算処理の詳細については後述する。
【００４８】
ステップ１０３に続いてステップ１０４に進み、ワークフローエンジン１０７は、特定したタスクに関連する情報（例えば書誌情報、階層構造の情報であり、以下、タスク情報という）をアーカイブしてタスクアーカイブDB１１５に出力する。
【００４９】
ステップ１０４に続いてステップ１０５に進み、タスクアーカイブＤＢ１０５は、ワークフローエンジン１０７から取得したタスク情報を格納する。ステップ１０５に続いてステップ１０６に進み、タスクアーカイブDB１１５は、タスク情報の格納が終了すると、ワークフローエンジン１０７に格納完了を通知する。
【００５０】
ステップ１０６に続いてステップ１０７に進み、ワークフローエンジン１０７は、ステップ１０４でアーカイブしたタスクのタスク情報をタスクインスタンスDB１１２から削除するため、削除要求を行う。
【００５１】
ステップ１０７に続いてステップ１０８に進み、タスクインスタンスDB１１２は、削除要求されたタスク情報を削除する。ステップ１０８に続いてステップ１０９に進み、タスクインスタンスDB１１２は、タスク情報の削除が完了すると、ワークフローエンジン１０７に削除完了の通知を行う。
【００５２】
ステップ１０９に続いてステップ１１０に進み、ワークフローエンジン１０７は、ステップ１０３において特定したタスクに添付されている文書をアーカイブして文書アーカイブDB１１６に出力する。
【００５３】
ステップ１１０に続いてステップ１１１に進み、文書アーカイブDB１１６は、ワークフローエンジン１０７から取得した文書を格納する。ステップ１１１に続いてステップ１１２に進み、文書アーカイブDB１１６は、文書の格納が終了すると、ワークフローエンジン１０７に格納完了を通知する。
【００５４】
ステップ１１２に続いてステップ１１３に進み、ワークフローエンジン１０７は、ステップ１１０でアーカイブした文書を文書DB１１３から削除するため、削除要求を行う。
【００５５】
ステップ１１３に続いてステップ１１４に進み、文書DB１１３は、削除要求された文書を削除する。ステップ１１４に続いてステップ１１５に進み、文書DB１１３は、文書の削除が完了すると、ワークフローエンジン１０７に削除完了の通知を行う。
【００５６】
次に、図８〜図１１を用いてアーカイブ処理の詳細についてフローチャートを用いて説明する。また、ここでは、図４に示すようなデータが構造体のデータ形式を持つ場合について説明する。
【００５７】
図８は、アーカイブ動作の概要を示すフローチャートである。ステップ２０１において、アーカイブ手段１１０は、サブツリー更新状態の計算処理を行なう。サブツリー更新状態計算処理については図９を用いて後述する。
【００５８】
ステップ２０１に続いてステップ２０２に進み、アーカイブ手段は、「root．サブツリー完了」の格納領域に「false」を挿入する（書き込む）。ステップ２０２に続いてステップ２０３に進み、アーカイブ手段１１０は、アーカイブ処理を行う。アーカイブ処理については図１０、図１１を用いて後述する。
【００５９】
次に、図９を用いてサブツリー更新状態の計算処理を説明する。図９は、サブツリー更新状態計算処理の一例を示すフローチャートである。なお、サブツリー更新状態計算処理は全てアーカイブ手段１１０が行う。また、図９に示す処理では「task」を引数としてサブツリー更新状態の計算処理を行なう。
【００６０】
ステップ３０１において、「task」のサブタスク全てを変数「children」に挿入する（書き込む）。例えば、図４に示す「サブタスクに関する情報」からタスクのサブタスクを取得することができる。
【００６１】
ステップ３０１に続いてステップ３０２に進み、タスクの最終更新日時を示す変数「lmd」に「task．最終更新日時」の値を挿入する。例えば、図４に示す「最終更新日時」から「task．最終更新日時」の値を取得することができる。また、「finished」に「task．状態」に基づいて「true」か「false」を挿入する。このとき、「task．状態」が「完了」であれば「true」を挿入し、「task．状態」が「未完了」であれば「false」を挿入する。
【００６２】
ステップ３０２に続いてステップ３０３に進み、「children」には、データが入っていないかを判定する。ステップ３０３の判定結果がNO（データが入っている）であればステップ３０４に進み、「children」からデータを一つ取り出して変数「ch」に挿入する。取り出すデータは、タスクIDなどのタスクを識別できる情報を少なくとも含む。
【００６３】
ステップ３０４に続いてステップ３０５に進み、変数「ch」を用いて図９に示す処理を行う。ステップ３０５に続いてステップ３０６に進み、変数「lmd」に、「lmd」と「ch．サブツリー最終更新日時」のうち値が大きい方（日付が新しい方）を挿入する。
【００６４】
ステップ３０６に続いてステップ３０７に進み、「finished」に対して、以下の条件で「true」か「false」を挿入する。
If(finished=true ∧ ch．サブツリー完了=true)｛true｝・・・（１）
Else｛false｝  ・・・（２）
つまり、（１）では、「finished」が「true」であり、かつ、「ch．サブツリー完了」が「true」であれば、「finished」に「true」を挿入し、それ以外（２）であれば「finished」に「false」を挿入する。
【００６５】
ステップ３０７の処理が終了するとステップ３０３に戻る。ステップ３０３の判定の結果YES（データが入っていない）であれば、ステップ３０８に進み、「task．サブツリー最終更新日時」に「lmd」の値を挿入する。
【００６６】
ステップ３０８に続いてステップ３０９に進み、「task．サブツリー完了」に、「finished」の値が挿入される。
【００６７】
以上の処理を行うことで、タスク毎に、最終更新日時や、タスクの処理が完了したか否かの情報が関連付けられて保持される。次に、更新状態計算処理において設定された最終更新日時やタスクの完了状態に基づいてアーカイブ対象が決まり、アーカイブ処理が行われる。
【００６８】
図１０は、「task」を引数とするアーカイブ処理の一例を示すフローチャートである。なお、図１０に示すアーカイブ処理について、ステップ４０２は、アーカイブ手段１１０と移動手段１１１とが行い、その他のステップは、アーカイブ手段１１０が行う。
【００６９】
ステップ４０１において、「task．サブツリー完了」が「true」であり、かつ、「現在日時」と「task．サブツリー最終更新日」との差分が所定期間以上であるか否かを判定する。所定期間とは例えば１ヶ月などである。ステップ４０１の判定結果がYESであればステップ４０２に進み、アーカイブ実行処理を行う。アーカイブ実行処理については、図１１を用いて後述する。
【００７０】
ステップ４０１の判定結果がNOであればステップ４０３に進み、変数「children」に「task」のサブタスク全てを挿入する。例えば、図４に示すように「サブタスクに関する情報」から「task」のサブタスクを特定することができる。
【００７１】
ステップ４０３に続いてステップ４０４に進み、「children」には、データが入っていないかを判定する。ステップ４０４の判定結果がYESであれば処理を終了し、ステップ４０４の判定結果がNOであればステップ４０５に進み、変数「ch」に「children」からデータを一つ取り出して挿入する。
【００７２】
ステップ４０５に続いてステップ４０６に進み、変数「ch」について図１０に示すアーカイブ処理を行い、処理が終了するとステップ４０４に戻る。
【００７３】
以上の処理より、実施例１に係るワークフロー管理システム１００は、処理が完了しているタスクであり、かつ、最後に更新されてから所定期間以上経っているタスクを特定し、これらをアーカイブ対象のタスクとすることができる。また、「task．サブツリー完了」が「true」であるという条件から、サブタスク全ての処理が完了していないとそのタスクはアーカイブの対象とはならないため、処理が完了していないサブタスクよりも先に親タスクがアーカイブされることを防ぐことができる。
【００７４】
次に、アーカイブ対象に対してアーカイブを実行する処理について説明する。図１１は、「task」を引数とするアーカイブ実行処理の一例を示すフローチャートである。
【００７５】
ステップ５０１において、アーカイブ手段１１０は、変数「children」に「task」のサブタスクを挿入する。ステップ５０１に続いてステップ５０２に進み、アーカイブ手段１１０は、「children」のデータが空であるか否かを判定する。
【００７６】
ステップ５０２の判定結果がYESであればステップ５０５に進み、アーカイブ手段１１０は、「docs」に「task」の添付文書を挿入する。ステップ５０５に続いてステップ５０６に進み、アーカイブ手段１１０は、「docs」には、データが入っていないかを判定する。
【００７７】
ステップ５０６の判定結果がNO（データが入っている）であればステップ５０７に進み、移動手段１１１は、「docs」からデータ（文書）を一つ取り出して「d」に挿入する。ステップ５０７に続いてステップ５０８に進み、移動手段１１１は、「d」のデータを文書アーカイブDB１１６に複製する。つまり、文書DB１１４に格納されているデータをコピーして文書アーカイブDB１１６に格納する。
【００７８】
ステップ５０８に続いてステップ５０９に進み、移動手段１１１は、「d」のデータを文書DB１１４から削除する。ステップ５０９の処理が終了するとステップ５０６に戻る。
【００７９】
ステップ５０６の判定結果がYESであればステップ５１０に進み、移動手段１１１は、変数「p」に、「task」の親タスクを挿入する。「task」の親タスクに関しては、タスクインスタンスDB１１２に格納されるタスクの書誌情報、又はタスクの階層構造の情報から取得することができる。
【００８０】
ステップ５１０に続いてステップ５１１に進み、移動手段１１１は、「task」のタスク情報をタスクアーカイブDB１１５に複製する。つまり、タスクインスタンスDB１１２に格納されているタスク情報をコピーしてタスクアーカイブDB１１５に格納する。
【００８１】
ステップ５１１に続いてステップ５１２に進み、移動手段１１１は、「task」のタスク情報をタスクインスタンスDB１１２から削除する。ステップ５１２に続いてステップ５１３に進み、アーカイブ手段１１０は、タスクインスタンスDB１１２に格納される「p」が示すタスクの「アーカイブタスクあり」の格納領域に、「true」を挿入する。
【００８２】
ステップ５１３に続いてステップ５１４に進み、変数（p）について図９に示すサブツリー更新状態計算処理を行ない、この処理が終了すると、アーカイブ実行処理を終了する。
【００８３】
ここで、ステップ５０２に戻り、ステップ５０２の判定結果がNO（データが入っている）であればステップ５０３に進み、アーカイブ手段１１０は、「children」からデータを一つ取り出して「ch」に挿入する。
【００８４】
ステップ５０３に続いてステップ５０４に進み、変数「ch」について、図１１に示すアーカイブ実行処理を行う。ステップ５０４にて「ch」のアーカイブ実行処理が終了すると、ステップ５０２に戻る。
【００８５】
以上の処理より、実施例１に係るワークフロー管理システム１００は、タスクインスタンスDB１１２に格納されているデータを、処理が完了したサブタスク毎に、タスクアーカイブDB１１５に移動させることができる。また、アーカイブ対象のタスクに添付された文書に対しても、文書DB１１３から文書アーカイブDB１１６に移動させることができる。
【００８６】
また、ステップ５１３において、タスクアーカイブDB１１５に格納されたサブタスクがあるか否かの情報を付与することで、過去のタスクを表示する場合のタスクツリー作成時に利用することができる。
【００８７】
＜ワークフロー管理システム１００のタスクツリー表示処理について＞
図１２は、実施例１に係るワークフロー管理システム１００のタスクツリー表示処理の一例を示すシーケンス図である。ステップ６０１において、ブラウザ１０１は、ユーザからタスクツリーの表示指示を受けると（タスクツリー表示ボタン又はワークフロー表示ボタンなどをユーザが選択）、ワークフローエンジン１０７にタスクツリーの表示を指示する。このとき、ブラウザ１０１は、親タスクのIDやワークフロー名を指定してタスクツリーの表示指示を行う。
【００８８】
ステップ６０１に続いてステップ６０２に進み、ワークフローエンジン１０７は、タスクインスタンスDB１１２に対して、タスクの取得要求を行う。このとき、ワークフローエンジン１０７は、ブラウザ１０１から親タスクIDを取得すれば、親タスクIDからタスクを特定し、このタスクのサブタスク全てを取得するよう要求する。また、ワークフローエンジン１０７は、ワークフロー名を取得すれば、このワークフローに関わるタスク全てを取得するようタスクの取得要求を行う。
【００８９】
ステップ６０２に続いてステップ６０３に進み、タスクインスタンスDB１１２は、要求されたタスクをワークフローエンジン１０７に返す。
【００９０】
ステップ６０３に続いてステップ６０４に進み、ワークフローエンジン１０７は、取得したタスクの中に、「アーカイブタスクあり」が「true」であるタスクがあれば、タスクアーカイブDB１１５にアーカイブされたサブタスクの取得要求を行う。
【００９１】
ステップ６０４に続いてステップ６０５に進み、タスクアーカイブDB１１５は、要求されたタスクをワークフローエンジン１０７に返す。アーカイブされたサブタスクの特定については、「アーカイブタスクあり」が「true」のタスクの書誌情報からサブタスクのIDを取得し、取得したタスクIDと同じタスクIDを、タスクアーカイブDB１１５に格納されているタスクから検索することで特定することができる。
【００９２】
ステップ６０５に続いてステップ６０６に進み、ワークフローエンジン１０７は、タスクインスタンスDB１１２、タスクアーカイブDB１１５から取得したタスクから、タスクの階層構造の情報に基づいてタスクツリーを作成し、ブラウザ１０１に出力する。ステップ６０６の後は、ブラウザ１０１が、ワークフローエンジン１０７から取得したタスクツリーを表示画面に表示することで、ユーザにタスクツリーを視覚的に提供することができる。
【００９３】
次に、タスクツリーを表示するための詳細な処理について説明する。図１３は、実施例１に係るワークフローシステム１００のタスクツリー表示処理を示すフローチャートである。ここで、タスクツリー表示処理は「task」と「indent」とを引数とし、タスクツリー表示手段１０５が処理を行う。
【００９４】
ステップ７０１において、「task」の情報を「indent」レベルで１行表示する。ステップ７０１に続いてステップ７０２に進み、「task」のサブツリーを展開して表示することがユーザにより指定されているか否かを判定する。ここで、ワークフロー管理システム１００では、「task」のサブツリーに対して、展開して表示するか否かをユーザにより選択できるようにしておく。
【００９５】
ステップ７０２の判定結果がNOであれば処理を終了する。ステップ７０２の判定結果がYESであればステップ７０３に進み、「children」に「task」のサブタスクを挿入する。
【００９６】
ステップ７０３に続いてステップ７０４に進み、過去タスク（処理が完了したタスク）を表示するモードであり、かつ、「task．アーカイブタスクあり」が「true」であるか否かを判定する。ここで、ワークフロー管理システム１００では、過去タスクを表示するか否かをユーザにより選択できるようにしておく。
【００９７】
ステップ７０４の判定結果がYESであればステップ７０５に進み、タスクアーカイブDB１１５から、「task」を親タスクとするタスクを検索する。また、「task」の書誌情報からサブタスクのタスクIDを特定して、タスクアーカイブDB１１５から検索を行ってもよい。
【００９８】
ステップ７０５に続いてステップ７０６に進み、ステップ７０５の検索結果を「children」に追加挿入する。ステップ７０６に続いてステップ７０７に進み、また、ステップ７０４の判定結果がNOでればステップ７０７に進み、「children」には、データが入っていないかを判定する。
【００９９】
ステップ７０７の判定結果がNOであればステップ７０８に進み、「ch」に「children」からデータを一つ取り出して挿入する。ステップ７０８に続いてステップ７０９に進み、引数を「ch」、「indent+1」として図１３に示すタスクツリー表示処理を行う。
【０１００】
ステップ７０９の処理が終了するとステップ７０７に戻り、ステップ７０７の判定結果がYESであれば、タスクツリー表示処理を終了する。
【０１０１】
以上の処理より、実施例１に係るワークフロー管理システム１００は、タスクツリーをPCの表示画面に表示することができる。その際、サブツリーを表示するか否か、過去タスクを表示するか否かをユーザにより選択させて、ユーザが所望するタスクの表示方法を提供することができる。
【０１０２】
＜各DBに格納されるデータの関係について＞
図１４は、各DB１１２〜１１６に格納されるデータの関係を示す図である。図１４に示すように、タスクインスタンスDB１１２は、タスクの書誌情報と、階層構造の情報を格納し、文書DB１１３は、文書を格納し、関連情報DB１１４は、ワークフローに関するタスクや添付文書の関係を格納する。また、タスクアーカイブBD１１５は、アーカイブされたタスクを格納し、文書アーカイブDB１１６はアーカイブされた文書を格納する。
【０１０３】
このとき、関連情報DB１１４では、アーカイブされたタスクの索引情報について、アーカイブ後もそのまま関連情報DB１１４の中に残されている。
【０１０４】
＜ワークフロー管理システム１００の関連タスク、文書の検索処理について＞
図１５は、実施例１に係るワークフロー管理システム１００における関連タスク、文書の検索処理の一例を示すシーケンス図である。ここで、関連タスクとは、親子の関係にあるタスクなどのことをいう。
【０１０５】
ステップ８０１において、ブラウザ１０１は、ユーザにより指定されたタスクの関連タスクを検索する指示を受けると、ワークフローエンジン１０７に、関連タスクの検索指示を行う。このとき、ブラウザ１０１は、ユーザに指定されたタスクのタスクIDなどタスクを識別できる情報をワークフローエンジン１０７に出力する。
【０１０６】
ステップ８０１に続いてステップ８０２に進み、ワークフローエンジン１０７は、ブラウザ１０１から関連タスクの検索指示を受けると、ブラウザ１０１から取得したタスクIDに関連するタスクの検索要求を関連情報DB１１４に行う。
【０１０７】
ステップ８０２に続いてステップ８０３に進み、関連情報DB１１４は、検索結果として関連タスクのタスクIDを、ワークフローエンジン１０７に返す。ステップ８０３に続いてステップ８０４に進み、ワークフローエンジン１０７は、関連情報DB１１４から取得したタスクIDに基づいてタスク情報を取得するため、タスクインスタンスDB１１２に対して、タスク情報の取得要求を行う。
【０１０８】
ステップ８０４に続いてステップ８０５に進み、タスクインスタンスDB１１２は、取得要求されたタスクIDに対応するタスク情報をワークフローエンジン１０７に返す。ステップ８０５に続いてステップ８０６に進み、ワークフローエンジン１０７は、タスクインスタンスDB１１２に存在しなかったタスクIDについて、タスクアーカイブDB１１５に対してタスク情報の取得要求を行う。
【０１０９】
ステップ８０６に続いてステップ８０７に進み、タスクアーカイブDB１１５は、取得要求されたタスクIDに対応するタスク情報をワークフローエンジン１０７に返す。ステップ８０７に続いてステップ８０８に進み、ワークフローエンジン１０７は、タスクインスタンスDB１１２から取得したタスクに添付されている文書を取得するため、文書DB１１３に対して、文書ID（又は文書の記憶先URLなど文書を識別できる情報）に基づく文書の取得要求を行う。
【０１１０】
ステップ８０８に続いてステップ８０９に進み、文書DB１１３は、取得要求された文書IDに対応する文書をワークフローエンジン１０７に返す。ステップ８０９に続いてステップ８１０に進み、ワークフローエンジン１０７は、タスクアーカイブDB１１５から取得したタスクに添付されている文書を取得するため、文書アーカイブDB１１６に対して、文書ID（又は文書の記憶先URLなど文書を識別できる情報）に基づく文書の取得要求を行う。
【０１１１】
ステップ８１０に続いてステップ８１１に進み、文書アーカイブDB１１６は、取得要求された文書IDに対応する文書をワークフローエンジン１０７に返す。
【０１１２】
ステップ８１１に続いてステップ８１２に進み、ワークフローエンジン１０７は、タスクインスタンスDB１１２、タスクアーカイブDB１１５、文書DB１１３、文書アーカイブDB１１６から取得したデータを一覧にしてブラウザ１０１に出力する。
【０１１３】
上記処理において、関連タスクの検索についてはワークフローエンジン１０７の関連タスク検索手段１０９が行い、文書の検索についてはワークフローエンジン１０７の文書検索手段１０８が行う。
【０１１４】
図１６は、実施例１に係るワークフロー管理システム１００の関連タスク検索処理の一例を示すフローチャートである。図１６に示す例では、「task」を引数として「task」の関連タスクを検索する処理を示している。なお、図１６に示す処理は、関連タスク検索手段１０９が行う。
【０１１５】
ステップ９０１において、「task」から検索条件を生成する。例えば、「task」を識別できるタスクIDやタスク名を用いて検索条件を生成する。ステップ９０１に続いてステップ９０２に進み、検索条件に基づいて関連情報DB１１４から関連タスクを検索し、検索結果のタスクID全てを「list」に挿入する。
【０１１６】
ステップ９０２に続いてステップ９０３に進み、「list」には、データが入っていないかを判定する。ステップ９０３の判定結果がYES（「list」にデータなし）であれば検索処理を終了し、判定結果がNO（「list」にデータあり）であればステップ９０４に進み、「list」からタスクIDを一つ取り出して「tid」に挿入する。
【０１１７】
ステップ９０４に続いてステップ９０５に進み、タスクインスタンスDB１１２から、タスクIDが「tid」のタスクが存在すればタスク情報を取得し、「tk」に挿入する。ステップ９０５に続いてステップ９０６に進み、「tid」に挿入されたタスクIDと同じタスクIDのタスクがタスクインスタンスDB１１２に存在したか否かを判定する。この判定は、ステップ９０５の処理が行なわれていればYESとなる。
【０１１８】
ステップ９０６の判定結果がNOであればステップ９０７に進み、タスクアーカイブDB１１５からタスクIDが「tid」のタスク情報を取得し、「tk」に挿入する。ステップ９０７に続いて、又はステップ９０６の判定結果がYESであればステップ９０８に進み、「tk」を関連タスクとして表示するよう表示データを生成する。ステップ９０８の処理が終了するとステップ９０３に戻り、「list」のデータが空になるまで上記処理が繰り返される。
【０１１９】
また、前述した図１６に示す処理と同様の処理を行うことで、検索するタスクに添付された文書や関連タスクに添付された文書を検索し、PCの表示画面に表示することが可能となる。
【０１２０】
以上の処理より、実施例１に係るワークフロー管理システム１００は、ユーザから指定されたタスクの関連タスクを検索する場合、タスクインスタンスDB１１２のみならずタスクアーカイブDB１１５に格納されているタスクについても検索対象とすることで、ユーザのニーズに合わせた検索結果を提供することができる。
【０１２１】
また、タスクに添付された文書を検索する場合、文書DB１１３のみならず文書アーカイブDB１１６に格納されている文書についても検索対象とすることで、ユーザのニーズに合わせた検索結果を提供することができる。
【０１２２】
以上、実施例１に係るワークフロー管理システム１００によれば、処理が完了してから一定期間を経過したサブタスクを特定し、特定したサブタスクをアーカイブすることによって、タスクインスタンスデータベースを軽量化することができる。
【０１２３】
また、タスク間の階層構造を表示する場合、サブタスクを表示するか否かを選択可能とし、又は、アーカイブされたタスクを表示するか否かを選択可能とすることで、ユーザのニーズに合わせた表示条件を設定することができる。
【０１２４】
また、ユーザから指定されたタスクの関連タスクを検索する場合、タスクインスタンスDB１１２のみならずタスクアーカイブDB１１５に格納されているタスクについても検索対象とすることで、ユーザのニーズに合わせた検索結果を提供することができる。
【０１２５】
また、タスクに添付された文書を検索する場合、文書DB１１３のみならず文書アーカイブDB１１６に格納されている文書についても検索対象とすることで、ユーザのニーズに合わせた検索結果を提供することができる。
【０１２６】
また、アーカイブ対象のタスクを特定する場合、サブタスク全ての処理が完了していることを条件とすることで、サブタスクの処理が完了していないのに、親タスクがアーカイブ対象となる不都合を防止することができる。
【０１２７】
また、アーカイブ対象のタスクを特定する場合、タスクの処理状態と、タスクの最終更新時刻とを用いることで、一定期間更新されていないタスクをアーカイブ対象とすることができる。
【０１２８】
また、アーカイブ対象のタスクを特定する場合、サブタスクの最終更新時刻を含めた最新の最終更新時刻を用いることで、サブタスクを含め、一定期間更新されていないタスクをアーカイブ対象とすることができる。
【０１２９】
また、タスクアーカイブDB１１５と文書アーカイブDB１１６とは、ユーザのアクセスに対しては読み取り専用とすることで、データを変更されることがないため検索対象のデータとして用いることができる。
【０１３０】
以上、本発明の実施例について詳述したが、本発明は係る特定の実施例に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形・変更が可能である。
【０１３１】
なお、実施例において説明した処理内容をプログラムとし、このプログラムをコンピュータに実行させて前述した処理をワークフロー管理サーバに実行させることも可能である。また、このプログラムを記録媒体に記録し、このプログラムが記録された記録媒体をコンピュータに読み取らせて、前述した処理をワークフロー管理サーバに実行させることも可能である。
【図面の簡単な説明】
【０１３２】
【図１】実施例１に係るワークフロー管理システムの一例を示す図。
【図２】実施例１に係るワークフロー管理サーバSV及びユーザ端末PCのハードウェア構成の一例を示す図。
【図３】実施例１に係るワークフロー管理システムの主な機能構成の一例を示す図。
【図４】タスクインスタンスDBに格納される情報のデータ構造の一例を示す図。
【図５】ワークフローの構造例を示す図。
【図６】実施例１に係るアーカイブされたサブタスクの一例を示す図。
【図７】実施例１に係るワークフロー管理システムのアーカイブ処理の一例を示すシーケンス図。
【図８】アーカイブ動作の概要を示すフローチャート。
【図９】サブツリー更新状態計算処理の一例を示すフローチャート。
【図１０】アーカイブ処理の一例を示すフローチャート。
【図１１】アーカイブ実行処理の一例を示すフローチャート。
【図１２】実施例１に係るワークフロー管理システムのタスクツリー表示処理の一例を示すシーケンス図。
【図１３】実施例１に係るワークフローシステムのタスクツリー表示処理を示すフローチャート。
【図１４】各DBに格納されるデータの関係を示す図。
【図１５】実施例１に係るワークフロー管理システムにおける関連タスク、文書の検索処理の一例を示すシーケンス図。
【図１６】実施例１に係るワークフロー管理システムの関連タスク検索処理の一例を示すフローチャート。
【符号の説明】
【０１３３】
１００  ワークフロー管理システム
１１  制御部
１２  主記憶部
１３  補助記憶部
１４  ネットワークI/F
１５  外部記憶装置I/F
１６  外部装置I/F
１７  出力装置I/F
１８  入力装置I/F
１０１  ブラウザ
１０２  GUI
１０３  レンダリングエンジン
１０４  入出力制御部
１０５  タスクツリー表示手段
１０６  関連文書表示手段
１０７  ワークフローエンジン
１０８  文書検索手段
１０９  関連タスク検索手段
１１０  アーカイブ手段
１１１  移動手段
１１２  タスクインスタンスDB
１１３  文書DB
１１４  関連情報DB
１１５  タスクアーカイブDB
１１６  文書アーカイブDB
２０１、２０２、２０３、２０４、２０５  完了タスク
【図１】
2010020620.tif 000003
【図２】
2010020620.tif 000004
【図３】
2010020620.tif 000005
【図４】
2010020620.tif 000006
【図５】
2010020620.tif 000007
【図６】
2010020620.tif 000008
【図７】
2010020620.tif 000009
【図８】
2010020620.tif 000010
【図９】
2010020620.tif 000011
【図１０】
2010020620.tif 000012
【図１１】
2010020620.tif 000013
【図１２】
2010020620.tif 000014
【図１３】
2010020620.tif 000015
【図１４】
2010020620.tif 000016
【図１５】
2010020620.tif 000017
【図１６】
2010020620.tif 000018