以下、発明の実施の形態を通じて本発明を説明するが、以下の実施形態は特許請求の範囲にかかる発明を限定するものではなく、また実施形態の中で説明されている特徴の組み合わせの全てが発明の解決手段に必須であるとは限らない。
図1は、一実施形態に係るワークフローシステム100の構成の一例を示す。ワークフローシステム100は、複数の社員190a−f(以下、社員190と総称する。)或いは複数の業務処理装置160a−c(以下、業務処理装置160と総称する。)によって遂行されるビジネスプロセスを管理する。例えば、ワークフローシステム100は、ビジネスプロセス全体あるいはビジネスプロセスの一部において、ビジネスプロセスを遂行する上で必要となる文書等のデータ又は作業を、実行者(社員190又は業務処理装置160)から次の実行者へ引き継ぐ。例えば、ワークフローシステム100は、複数の社員190にわたる確認業務、承認業務、又は決済業務等の、一連の業務の進行を管理する。例えば、ワークフローシステム100は、いわゆる回議システム又は稟議システムとして機能してよい。なお、社員190とは会社等の従業員であってよい。また、実行者とは、社員、従業員等の会社組織に含まれる人員だけでなく、ビジネスプロセスに参加する人物及び装置を示す。
ワークフローシステム100は、ワークフロー管理装置110、社員190を認証する複数の認証サーバ140a及びb(以後、認証サーバ140と総称する。)、複数の業務処理装置160a−c(以後、業務処理装置160と総称する。)、複数のユーザ端末170a−f(以後、ユーザ端末170と総称する。)、及びネットワーク180を有する。ワークフロー管理装置110は、ワークフロー管理サーバ120及びデータベース130を有する。なお、ワークフロー管理装置110は、この発明におけるワークフロー管理システムの一例である。
ユーザ端末170は、ネットワーク180によってワークフロー管理装置110と接続されている。ネットーワーク180は、インターネット、又はコンピュータ・ネットワークであってよい。ネットーワーク180は、WAN、MAN、及びLANを含む。ユーザ端末170は、パーソナルコンピュータ、専用端末であってよいし、携帯電話又はPDA等の情報携帯端末であってもよい。
ワークフロー管理装置110は、一連の業務単位を含むビジネスプロセスを開始する前に、社員190等からデータが入力されることにより、業務の流れを定義するプロセス定義データを作成する。例えば、ワークフロー管理装置110は、業務単位のそれぞれが処理されるべき順序及び業務単位のそれぞれを処理する実行者を定義する。そして、ワークフロー管理装置110は、実行者によって業務単位が処理されると、当該業務単位の次の業務単位を処理する実行者に、次の業務単位を処理すべきことを通知する。このように、ワークフロー管理装置110は、一連の作業単位のそれぞれが実行される実行順序が定められたワークフローを管理する。なお、ビジネスプロセスは、この発明におけるワークフローの一例であり、ワークフローは、ビジネスプロセスに限らず、一以上の実行者が順次作業を行う多様なプロセスを含む。また、業務単位は、この発明における業務単位の一例である。また、業務単位は、業務処理装置160が実行してもよい。また、業務処理装置160は、ネットワーク180に接続された外部装置150に業務単位に含まれる業務の一部を依頼してもよい。
なお、ワークフローシステム100は、複数のワークフロー管理装置110を備えてよい。また、ワークフロー管理装置110は、複数のワークフロー管理サーバ120を備えてよいし、複数のデータベース130を備えてもよい。この場合、複数のワークフロー管理サーバ120は、それぞれのワークフロー管理サーバ120に予め割り当てられた異なる処理を実行してよいし、例えばラウンドロビン方式によってアクセスされることによって、一のワークフロー管理サーバ120に処理が集中することを防ぐべく負荷分散されてよい。また、ワークフロー管理装置110は、複数のデータベース130を備えてもよい。この場合、複数のデータベース130のそれぞれは、予め定められた異なるデータを格納してよいし、データベース分散機能等によって、一のデータベース130にアクセスが集中することを防ぐべく負荷分散制御されてもよい。
図2は、ワークフロー管理装置110のブロック構成の一例を示す。ワークフロー管理装置110は、一連の作業単位のそれぞれが実行される実行順序が定められたプロセス情報に基づいてワークフローを管理する。ワークフロー管理装置110は、制御情報格納部200、制御部220、出力部290、情報変更部260、及び組織検索部300を備える。制御情報格納部200は、実行者情報格納部202、プロセス情報格納部204、組織情報格納部206、実行者格納部208、期限格納部210、平均処理時間格納部212、証跡情報格納部214、及びエラー情報格納部216を有する。制御部220は、実行者選択部222、予定実行者選択部225、プロセス生成部230、作業単位特定部240、基準時間幅設定部250、情報変更部260、及び実行内容抽出部270を有する。情報変更部260は、組織情報変更部262及び実行者属性変更部264を含む。実行内容抽出部270は、実行順差抽出部272、及び実行内容選択部274を含む。また、入力部280は、特定実行者入力部282を有する。出力部290は、予定実行者出力部292、実行内容出力部294、及び通知部296を有する。
実行者情報格納部202は、作業単位を実行する実行者が有する属性を格納する。そして、プロセス情報格納部204は、実行順序における順番のそれぞれに対応づけて、当該順番で作業単位を実行する実行者が有する属性が満たすべき条件を格納する。そして、実行者選択部222は、一連の作業単位がそれぞれ実行される前に、それぞれの作業単位が実行される順番に対応づけてプロセス情報格納部204が格納している条件に適合する属性を有する実行者を、それぞれの作業単位を実行する実行者として実行者情報格納部202が格納している実行者の中から選択する。
具体的には、実行者選択部222は、一の作業単位が実行される順番より予め定められた順番だけ前の順番で実行される作業単位が実行された場合に、当該一の作業単位が実行される順番に対応づけてプロセス情報格納部204が格納している条件に適合する属性を有する実行者を、当該一の作業単位を実行すべき実行者として実行者情報格納部202が格納している実行者の中から選択する。
具体的には、実行者情報格納部202は、作業単位を実行する実行者が所属する組織を格納する。そして、プロセス情報格納部204は、実行順序における順番のそれぞれに対応づけて、当該順番で作業単位を実行する実行者が所属すべき組織を対応づけて格納する。そして、実行者選択部222は、一連の作業単位がそれぞれ実行される前に、それぞれの作業単位が実行される順番に対応づけてプロセス情報格納部204が格納している組織に所属する実行者を、それぞれの作業単位を実行する実行者として実行者情報格納部202が格納している実行者の中から選択する。そして、実行者属性変更部264は、実行者が所属する組織に変更があった場合に、実行者情報格納部202が格納している実行者が所属している組織を変更する。なお、組織に変更があった場合とは、社員190の部署の退職を含む異動、及び組織変更を含む。
なお、プロセス情報格納部204は、一連の作業単位が実行される前に実行者が決定されるべきか否かを示す情報を実行順序における順番のそれぞれに対応づけてさらに格納している。そして、実行者選択部222は、一連の作業単位が実行される前に実行者が決定されるべき旨を示す情報及び実行順序における順番に対応づけてプロセス情報格納部204が格納している条件に適合する属性を有する実行者を、当該順番で作業単位を実行すべき実行者として、一連の作業単位が実行される前に、実行者情報格納部202が格納している実行者の中から選択する。なお、一連の作業単位が実行される前とは、ビジネスプロセスが開始される前であってよい。
実行者属性変更部264は、実行者情報格納部202が格納している実行者の属性を変更する。例えば、実行者属性変更部264は、実行者情報格納部202が格納している実行者が所属している部署を変更する。そして、実行者選択部222は、実行者選択部222によって選択された実行者の属性が実行者属性変更部264によって変更された場合に、当該属性が変更された実行者が実行すべき作業単位が実行される順番に対応づけてプロセス情報格納部204が格納している条件に適合する属性を有する実行者を、当該属性が変更された実行者が実行すべき作業単位を実行する実行者として、実行者情報格納部202が格納している実行者の中から新たに選択し直す。
また、予定実行者選択部225は、一連の作業単位が実行される前に、プロセス情報格納部204が実行順序における順番のそれぞれに対応づけて格納している条件に適合する属性を有する実行者を、実行者情報格納部202が格納している実行者の中から選択する。そして、予定実行者出力部292は、予定実行者選択部225が選択した実行者を、プロセス情報格納部204が格納している、当該実行者が実行する作業単位が実行される実行順序における順番のそれぞれに対応づけて出力する。具体的には、予定実行者出力部292は、予定実行者選択部225が選択した実行者を、ユーザ端末170に出力する。
また、プロセス情報格納部204は、一連の作業単位で実行されるべき実行内容及び一連の作業単位のそれぞれを実行する実行者が有する属性が満たすべき条件を対応づけて格納する。そして、実行者格納部208は、一連の作業単位のそれぞれについて、プロセス情報格納部204が格納している条件に適合する属性を有する実行者を実行者情報格納部202が格納している実行者の中から選択して、プロセス情報格納部204が格納している実行内容に対応づけて格納する。具体的には、実行者格納部208は、実行者選択部222が選択した実行者を、実行内容に対応づけて格納する。
なお、特定実行者入力部282は、特定の実行者を入力する。例えば、特定実行者入力部282は、ユーザ端末170からワークフローシステム100にログインした社員190を特定の実行者として入力してよいし、ユーザ端末170から入力された特定の社員190を特定の実行者として入力してよい。そして、実行内容抽出部270は、特定の実行者に対応づけて実行者格納部208が格納している実行内容を抽出する。そして、実行内容出力部294は、実行内容抽出部270が抽出した実行内容を、特定の実行者に対応づけて出力する。具体的には、実行内容出力部294は、実行内容を、特定の実行者に対応づけてユーザ端末170に出力してよい。
プロセス情報格納部204は、実行内容、一連の作業単位のそれぞれを実行する実行者が有する属性が満たすべき条件、及び一連の作業単位のそれぞれを実行すべき実行順序における順番を対応づけて格納している。そして、実行者格納部208は、プロセス情報格納部204が格納している実行内容に対応づけて、実行者及び当該実行者が実行する作業単位を実行すべき順番を格納する。そして、実行内容抽出部270は、特定の実行者に対応づけて実行者格納部208が格納している実行内容を抽出する。そして、実行内容出力部294は、実行内容抽出部270が抽出した実行内容を、当該実行内容及び特定の実行者に対応づけて実行者格納部208が格納している順番を、特定の実行者に対応づけて出力する。
なお、実行者格納部208は、作業単位が現在実行中であるか否かを示す実行状態にさらに対応づけて実行者を格納している。そして、実行順差抽出部272は、特定の実行者に対応づけて実行者格納部208が格納している実行内容のうち、特定の実行者及び当該実行内容に対応づけて実行者格納部208が格納している順番と、作業単位が現在実行中である旨を示す実行状態及び当該実行内容に対応づけて実行者格納部208が格納している順番との差を抽出する。そして、実行内容選択部274は、実行順差抽出部272が抽出した差が予め定められた差より小さい順番及び特定の実行者に対応づけて実行者格納部208が格納している実行内容を選択する。そして、実行内容出力部294は、実行内容選択部274が選択した実行内容を、当該実行内容及び特定の実行者に対応づけて実行者格納部208が格納している順番に対応づけて出力する。
また、実行者格納部208は、一連の作業単位のそれぞれが現在実行中であるか否かを示す実行状態及び実行中である作業単位が実行中になったタイミング、プロセス情報格納部204が格納している実行内容、及び実行者を対応づけて格納している。そして、実行内容抽出部270は、特定の実行者及び作業単位が現在実行中である旨を示す実行状態に対応づけて実行者格納部208が格納している実行内容のうち、実行者格納部208が実行内容に対応づけて格納しているタイミングが示す時刻と現在の時刻との間の時間幅が予め定められた時間幅より長い実行内容を抽出する。なお、作業単位が実行中になったタイミングとは、作業タイミングが実行可能になったタイミングを含む。例えば、作業単位が実行中になったタイミングとは、回議が回ってきたタイミングであってよい。
期限格納部210は、一連の作業単位が完了すべきタイミングを示す完了期限を実行者情報格納部202が格納している実行内容に対応づけて格納する。そして、実行内容抽出部270は、特定の実行者に対応づけて実行者格納部208が格納している実行内容のうち、期限格納部210が実行内容に対応づけて格納している完了期限と現在との間の時間幅が予め定められた時間幅より短い実行内容を抽出する。
実行者格納部208は、一連の作業単位のそれぞれについて、プロセス情報格納部204が格納している条件に適合する属性を有する実行者を実行者情報格納部202が格納している実行者の中から選択して、それぞれの作業単位が現在実行中であるか否かを示す実行状態に対応づけて格納する。具体的には、実行者格納部208は、実行者選択部222が選択した実行者を、実行者が作業単位を現在実行中であるか否かを示す実行状態に対応づけて格納する。そして、通知部296は、期限格納部210が格納している完了期限と現在との間の時間幅が予め定められた基準時間幅より短い場合に、作業単位が現在実行中である旨を示す実行状態に対応づけて実行者格納部208が格納している実行者に通知する。
基準時間幅設定部250は、基準時間幅を設定する。また、実行者格納部208は、一連の作業単位のそれぞれについて、それぞれの作業単位が現在実行中であるか否かを示す実行状態及びそれぞれの作業単位が実行されるべき実行順序における順番に対応づけて実行者を格納している。そして、基準時間幅設定部250は、実行者格納部208が格納している実行状態及び順番に基づいて現在実行中である作業単位より後に実行されるべき作業単位の数を算出し、算出した数がより多い場合により長い基準時間幅を設定する。
また、実行者格納部208は、一連の作業単位のそれぞれについて、作業単位が現在実行中であるか否かを示す実行状態及びそれぞれの作業単位が実行されるべき実行順序における順番に対応づけて実行者を格納している。また、平均処理時間格納部212は、実行者が作業単位を実行するのに要した所要時間の平均値を実行者に対応づけて格納する。そして、実行者選択部222は、実行者格納部208が格納している実行者、実行状態、及び順番に基づいて、現在実行中である作業単位より後に実行される作業単位を実行する実行者を特定する。そして、基準時間幅設定部250は、実行者選択部222が特定した実行者に対応づけて平均処理時間格納部212が格納している処理時間の平均値の合計値がより長い場合に、基準時間幅をより長く設定する。
なお、プロセス情報格納部204は、一連の作業単位のそれぞれが第1リンクデータを用いて実行されるべき実行順序における順番を定める第1プロセス情報、及び、第1プロセス情報で定められている一連の作業単位のうちの少なくとも1つの作業単位を含む一連の作業単位のそれぞれが第2リンクデータを用いて実行されるべき実行順序における順番を定める第2プロセス情報を格納する。そして、プロセス生成部230は、第1プロセス情報及び第2プロセス情報に基づいて、第1プロセス情報及び第2プロセス情報の双方で定められている作業単位である重複作業単位を第1リンクデータ及び第2リンクデータを用いて同時に実行させる新たなプロセス情報を生成する。
また、プロセス生成部230は、第1プロセス情報で定められている重複作業単位の直前に実行される第1直前作業単位と、第2プロセス情報で定められている重複作業単位の直前に実行される第2直前作業単位とが異なる場合に、第1直前作業単位及び第2直前作業単位が共に実行されたことを条件として重複作業単位を実行させる新たなプロセス情報を生成する。なお、プロセス生成部230は、第1プロセス情報で定められている重複作業単位の直前に実行される第1直前作業単位と、第2プロセス情報で定められている重複作業単位の直前に実行される第2直前作業単位とが異なり、第1直前作業単位が第2リンクデータを用いずに実行され、第2直前作業単位が第1リンクデータを用いずに実行される旨が定められている場合に、第1直前作業単位及び第2直前作業単位が共に実行されたことを条件として重複作業単位を実行させる新たなプロセス情報を生成してよい。
また、プロセス生成部230は、第1プロセス情報で定められている重複作業単位の直前に実行される第1直前作業単位と、第2プロセス情報で定められている重複作業単位の直前に実行される第2直前作業単位とが異なり、第1直前作業単位が第1リンクデータ及び第2リンクデータを用いて実行される旨が第1プロセス情報及び第2プロセス情報によって定められ、第2直前作業単位が第1リンクデータを用いずに実行される旨が定められている場合に、第2直前作業単位にも第1リンクデータ及び第2リンクデータを提供するとともに、第2直前作業単位に第1リンクデータを用いた実行を禁止する新たなプロセス情報を生成してよい。
また、プロセス生成部230は、第1プロセス情報で定められている重複作業単位の直前に実行される第1直前作業単位と、第2プロセス情報で定められている重複作業単位の直前に実行される第2直前作業単位とが異なり、第1直前作業単位が第1リンクデータ及び第2リンクデータを用いて実行される旨が第1プロセス情報及び第2プロセス情報により定められており、第1直前作業単位から重複作業単位までの間に実行される旨が第2プロセス情報により定められている作業単位である中間作業単位の数が予め定められた数より少ない場合に、中間作業単位に第1リンクデータ及び第2リンクデータを提供するとともに、中間作業単位に第1リンクデータを用いる実行を禁止する新たなプロセス情報を生成してよい。
プロセス情報格納部204は、一連の作業単位のそれぞれが実行されるべき実行順序における順番を定める第1プロセス情報、及び、第1プロセス情報で定められている一連の作業単位と異なる作業単位を含む一連の作業単位のそれぞれが実行されるべき実行順序における順番を定める第2プロセス情報を格納する。そして、プロセス生成部230は、第1プロセス情報及び第2プロセス情報に基づいて、第1プロセス情報により定められている一連の作業単位が完了したことを条件として、第2プロセス情報により定められている一連の作業単位を実行することを開始する新たなプロセス情報を生成する。
なお、プロセス情報格納部204は、一連の作業単位のそれぞれが第1リンクデータを用いて実行されるべき実行順序における順番を定める第1プロセス情報、及び、第1プロセス情報で定められている一連の作業単位と異なる作業単位を含む一連の作業単位のそれぞれが第1リンクデータと異なる第2リンクデータを用いて実行されるべき実行順序における順番を定める第2プロセス情報を格納している。そして、プロセス生成部230は、第1プロセス情報及び第2プロセス情報に基づいて、第1プロセス情報により定められている一連の作業単位が第1リンクデータを用いて完了したことを条件として、第2プロセス情報により定められている一連の作業単位を第2リンクデータを用いて実行することを開始する新たなプロセス情報を生成する。
また、実行者格納部208は、プロセス情報格納部204が格納している第1プロセス情報及び第2プロセス情報のそれぞれにより定められた一連の作業単位に対応づけて一連の作業単位のそれぞれを実行する実行者を格納する。実行制御部220は、プロセス生成部230が生成したプロセス情報に従って、第1プロセス情報により定められている一連の作業単位が完了した場合に、第2プロセス情報により定められている一連の作業単位のうちの最初の作業単位に対応づけて実行者格納部208が格納している実行者に当該最初の作業単位を実行すべき旨を通知する。
なお、組織検索部300は、複数の階層(例えば、3階層以上)にわたる複数の部署を有するツリー構造において、特定の部署から複数の階層にわたって辿ることができる複数の部署を検索する。組織検索部300の動作については、図3に関連して説明する。
なお、本実施形態における作業単位とは、ビジネスプロセスにおける作業の単位であり、いわゆるアクティビティと呼ばれるものであってよい。例えば、作業単位とは、業務における一の業務単位であってよい。具体的には、作業単位は、文書等の内容を確認或いはレビューする等の確認業務、業務を実行することを承認したり決裁したりする承認業務或いは決裁業務等を含む。他にも、作業単位とは、文書等の情報に基づいて新たな文書を作成したり、データベース等に対してデータを追加・更新・削除する業務等の処理業務を含む。
図3は、組織検索部300のブロック構成の一例を示す。なお、組織検索部300は、この発明における検索システムの一例である。組織検索部300は、階層情報入力部310、節点情報格納部320、節点抽出部330、及び節点出力部340を有する。
階層情報入力部310は、節点の階層情報を入力する。例えば、階層情報入力部310は、組織情報格納部206が格納している組織に含まれる部署の階層情報を入力する。部署は、この発明における節点の一例である。そして、節点情報格納部320は、複数の節点のそれぞれについて、それぞれの節点を含みそれぞれの節点からルートに向かって上位の階層にある節点である上位節点を、当該上位節点が属する階層及びそれぞれの節点に対応づけて格納する。そして、節点抽出部330は、特定の節点が属する階層より上位の複数の階層のそれぞれ及び特定の節点に対応づけて節点情報格納部320がそれぞれ格納している複数の節点を抽出する。また、節点抽出部330はさらに、節点情報格納部320が特定の節点が属する階層と対応づけて特定の節点を格納している複数の節点を抽出する。節点出力部340は、節点抽出部330が抽出した節点を、制御部220に出力する。
図4は、ワークフロー管理装置110が管理するビジネスプロセス400の一例を示す。ワークフロー500は、建設工事を実施する場合のビジネスプロセスを示す。ワークフロー管理装置110は、一のビジネスプロセスにおいて順次実行されるべき一連の複数の業務単位410、420、430、440、450、及び460を有する。また、一連の複数の業務単位410、420、430、440、450、及び460は、順次実行されるべき一連の複数の業務単位(例えば、業務単位410a−d、業務単位440a−d、及び業務単位460a−d)をそれぞれ含む。
プロセス情報格納部204は、業務単位410が実行された後に業務単位420が実行され、業務単位420が実行された後に、業務単位430及び440が実行され、業務単位430及び440の双方が実行された後に業務単位450が実行されることを格納している。また、プロセス情報格納部204は、業務単位450が実行された結果、例えば予算が超過していれば業務単位460が実行され、予算が超過していなければビジネスプロセスを終了する旨を格納している。
なお、業務単位410は見積伺を行う業務であり、業務単位420は、業務単位410における見積伺の結果に応じて予算伺を行う業務である。また、業務単位430は、業務単位420における予算伺の結果に応じて、それぞれ材料及び人員を発注する業務である。また、業務単位450は、業務単位430及び業務単位440において発注した発注結果に応じて、支払いを依頼する業務である。また、業務単位460は、予算が超過した場合には、予算超過の決済を求める業務である。以下に、業務単位410を例に挙げて、ワークフロー管理サーバ120の動作を説明する。
業務単位410aは、見積伺を申請する業務を示す見積伺申請業務であり、例えば見積書等を作成する業務を含み、例えば工事担当者(例えば、社員190a)が実行する業務単位である。工事担当者がユーザ端末170を操作して見積書を添付して申請ボタンをクリックすると、業務単位410を開始する旨の指示が入力部280から入力される。そして、ワークフロー管理サーバ120は、業務単位410aの次に実行すべき業務単位である業務単位410b及び業務単位410cを実行するよう、業務単位410b及び業務単位410cを実行すべき実行者としてそれぞれ割り当てられた実行者に、それぞれ業務単位を実行すべき旨の電子メールを出力部290から送信する。なお、当該電子メールのことを、本実施形態では業務実行通知メールと呼ぶ。
例えば、業務単位410bは、申請者の上司が申請を承認する業務を示す上司承認業務である。プロセス情報格納部204は、工事担当者の直属上司が業務単位410bを実行すべき旨を格納している。したがって、ワークフロー管理サーバ120は、プロセス情報格納部204を参照することによって、業務単位410bを実行すべき旨の業務実行通知メールを、工事担当者の直属上司(以下、社員190bとする。)に出力部290から送信する。
また、業務単位410cは、申請者が所属する部署内において申請内容をチェックする業務を示す部内担当チェック業務である。プロセス情報格納部204は、工事担当者が所属する部署と同じ部署に所属するチェック担当者が申請内容をチェックすべき旨を格納している。したがって、ワークフロー管理サーバ120は、プロセス情報格納部204を参照することによって、業務単位410cを実行すべき旨の業務実行通知メールを出力部290からチェック担当者(以下、社員190cとする。)に送信する。
なお、プロセス情報格納部204は、業務単位410aが実行された後に、業務単位410b及びcが実行されるべき旨を格納している。したがって、ワークフロー管理サーバ120では、業務単位410aが実行されると略同時に、通知部296が社員190b及び190cに業務実行通知メールを送信する。
社員190bは、業務実行通知メールを受け取ると、ユーザ端末170bを操作してワークフロー管理サーバ120にログインする。すると、ワークフロー管理サーバ120は、社員190bが見積書にアクセスするアクセスボタン、承認する旨を示す承認ボタン、承認しない旨を示す非承認ボタンを含むメニューを作成して、ユーザ端末170bに送信する。社員190bがユーザ端末170bに表示されたメニューから、見積書にアクセスするアクセスボタンをクリックすると、ワークフロー管理サーバ120は見積書データをユーザ端末170bに送信する。社員190bは、見積書データを参照して、承認するか否かを判断する。承認する場合には、社員190bは、ユーザ端末170bを操作して、承認ボタンをクリックする。入力部280は、いずれのボタンがクリックされたかを識別する情報をユーザ端末170bから取得する。ワークフロー管理サーバ120は、当該情報によって、業務単位410bが社員190bによって実行され、業務単位410bにおいて承認された否かを判断する。
同様にして、ワークフロー管理サーバ120は、社員190cによって業務単位410cが実行され、業務単位410cにおいてチェックされた結果がOKであるか否かを判断する。ワークフロー管理サーバ120は、業務単位410bにおいて承認され、かつ、業務単位410cにおいてチェック結果がOKである場合に、次に実行されるべき業務単位410dに業務フローを進める。なお、業務単位410bにおいて承認されていないか、業務単位410cにおいてチェック結果がOKでない場合には、その旨を申請者である社員190aに電子メールで通知する。
業務単位410dは、申請者が所属する部が属する本部長が決裁を行う業務を示す本部長決済業務である。プロセス情報格納部204は、工事担当者が所属する部の本部長が業務単位410dを実行すべき旨を格納している。したがって、ワークフロー管理サーバ120は、プロセス情報格納部204を参照することによって、業務単位410dを実行すべき旨の業務実行通知メールを、工事担当者が所属する部の部長(以下、社員190dとする)に出力部290から送信する。そして、ワークフロー管理サーバ120は、上記と同様にして、業務単位410dが社員190dによって実行され、決済されたか否かを判断する。
そして、ワークフロー管理サーバ120は、業務単位410内の最後の業務単位である業務単位410dが決済されると、業務単位410内の次に実行される業務単位420にフローを進める。このようにして、ワークフロー管理サーバ120は、上記した業務単位410、420、430、440、450、及び460を、プロセス情報格納部204に格納されている実行順序で進めていく。なお、プロセス情報格納部204は、一の業務単位420が承認されない場合には、直前に実行される業務単位を再度実行する旨を格納してよい。また、プロセス情報格納部204は、業務単位に対応づけて、当該業務単位が承認されなかった場合に再度実行させるべき業務単位を格納してもよい。そしてワークフロー管理サーバ120は、一の業務単位が承認されなかった場合には、当該一の業務単位に対応づけてプロセス情報格納部204が格納している業務単位を実行するよう、当該業務単位を実行すべき実行者に通知してよい。
なお、人員発注を行う業務である業務単位440において、プロセス情報格納部204は、前に実行した業務単位410におけるチェック担当者(社員190c)が、業務単位440を開始する申請者となる旨を格納している。従って、ワークフロー管理サーバ120は、業務単位440の直前に実行する業務単位420が実行されると、業務単位440の最初の業務単位である業務単位440aを実行すべき旨を示す業務実行通知メールを、社員190cに送信する。そして、ワークフロー管理サーバ120は、上記において業務単位410a−dを進める場合の制御と同様にして、業務単位440a−dを進める。
また、予算超過伺いを行う業務である業務単位460において、プロセス情報格納部204は、前に実行した業務単位440における承認者(例えば、社員190b)が、業務単位440を開始する申請者となる旨を格納している。従って、ワークフロー管理サーバ120は、業務単位460の直前に実行する業務単位450が実行され、予算が超過した場合には、業務単位460の最初の業務単位である460aを実行すべき旨を示す業務実行通知メールを、社員190bに送信する。そして、ワークフロー管理サーバ120は、上記において業務単位410a−dを進める場合の制御と同様にして、業務単位460a−dを進める。
なお、業務単位420、430、及び450も、業務単位410、440、及び460と同様に、複数の業務単位を含むが、説明が分かりにくくなることを防ぐために省略している。以上説明したように、ワークフロー管理サーバ120は、例えば、業務単位410内における一連の業務単位を実行する業務フローと、業務単位410内における一連の業務単位を実行する業務フローとを繋げて、ビジネスプロセスを管理することができる。したがって、ワークフロー管理装置110によると、例えばビジネスプロセスを起票する起票プロセスと、ビジネスプロセスの主要部である本プロセスとを分離して管理しつつ、起票プロセスと本プロセスとを結合して進行させることができる。
以下、制御情報格納部200が格納しているデータの具体例と、当該データを利用したワークフロー管理装置110の動作について説明する。以下の例では、説明を分かりやすく、かつワークフロー管理装置110による各種制御内容をコンパクトに説明するために、出張申請の回議を一例に挙げて、ワークフロー管理装置110の動作の詳細を説明する。なお、回議はビジネスプロセスの一例であり、ワークフロー管理装置110は、回議以外の多様なビジネスプロセスを管理することができることは言うまでもない。
図5は、出張申請における回議を定義したプロセス定義情報の一例を示す。申請、承認、確認、決裁、予算処理、及び発券依頼を含む一連の業務単位には、各業務単位を実行すべき実行者の役職、部署等の、実行者の属性が定められている。また、各業務単位510、520、530、540、550、及び560には、各業務単位の実行順序が定める回議順0、回議順1、回議順1、回議順2、回議順3−1、及び回議順3−2が割り当てられている。
なお、本図の例では、ワークフロー管理サーバ120は、業務単位510が完了すると、業務単位520及び530を実行させるべく、それぞれの業務単位を実行する実行者に略同一のタイミングで業務実行通知メールを送る。一方、業務単位540が完了すると、ワークフロー管理サーバ120は、決裁結果に応じて、業務単位550及び業務単位560のいずれか一方に、業務の処理を依頼する(OR分岐)。
図6、図7、及び図10は、プロセス情報格納部204が格納するデータの一例をテーブル形式で示す。プロセス情報格納部204は、ビジネスプロセスを識別する情報を持つプロセステーブル600、各業務単位の進行に関する情報を持つ回議順テーブル610、各業務単位の実行順序(回議順)に関する情報を持つ回議順関連テーブル620、回議順における一の業務単位を識別する情報を持つ回議ノードテーブル700、次の順番の回議順に進む条件に関する情報を持つ分岐条件テーブル1000を含む。
プロセステーブル600は、複数のビジネスプロセスをそれぞれ識別するプロセスコード及びプロセス名を対応づけて格納する。例えば、プロセステーブル600は、図5に示す出張申請、図4に関連して説明した見積伺、人員発注、及び予算超過伺におけるビジネスプロセスをそれぞれ識別するプロセスコードprc#001、prc#002、prc#003、及びprc#004を格納している。
回議順テーブル610は、プロセスコード、プロセスにおける複数の回議順をそれぞれ識別する回議順コード、分岐の型を示す分岐タイプ、次の回議順に進行するために満たすべき条件の型を示す進行タイプ、可決閾値タイプ、及び可決閾値を対応づけて格納する。なお、可決閾値タイプ及び可決閾値の内容については後に説明する。
また、回議順関連テーブル620は、プロセスコード、回議順コード、パスコード、及び関連先回議順コードを対応づけて格納している。関連先回議順コードとは、次の回議順を示す回議順コードである。また、パスコードは、当該関連先回議順コードと自身の回議順の繋がりを識別する情報である。回議順テーブル610及び回議順関連テーブル620によって、各回議順の間の繋がり(以後、パスと呼ぶ。)が定義され、したがって業務単位の実行順序が定められる。
なお、回議順テーブル610が格納している分岐タイプの値は、前及び/又は後の回議順との間の進行経路を示す情報である。例えば、回議順テーブル610は、回議順コードtrn#00、trn#01、trn#03−1、及びtrn#03−2に対応づけて、"通常"の分岐タイプを格納している。分岐タイプが"通常"とは、前の回議順との間に1本のパスが存在し、後の回議順との間に1本のパスが存在することを示す。回議順テーブル610は、trn#02に対応づけて"OR分岐"の分岐タイプを格納している。この"OR分岐"とは、前の回議順との間に1本のパスが存在し、後の回議順との間に複数本のパスが存在し、かつ、当該複数本のパスのうち何れか1本のパスを排他的に選択して、次の回議順に進むことができる旨を示す。
他にも、図5には具体例が示されないが、回議順テーブル610は、"通常"、"OR分岐"の分岐タイプの他に、"AND分岐"又は"合体"を分岐タイプとして格納することができる。"AND分岐"は、前の回議順との間に1本のパスが存在し、後の回議順との間に複数本のパスが存在し、かつ、当該複数本のパスの全てが示す回議順に進めることができる旨を示す。また、"合体"とは、前の回議順との間に複数本のパスが存在し、後の回議順との間に1本のパスが存在することを示す。例えば、図4に関連して説明した業務単位410dへは、業務単位410bからのパスと業務単位410cからのパスが存在する。したがって、回議順テーブル610は、業務単位410dが実行される回議順に対応づけて"合体"を分岐タイプの値として格納することができる。
また、回議順テーブル610が格納している進行タイプの値は、"AND進行"、"多数決進行"が含まれる。"AND進行"は、複数の業務単位の全ての業務単位において承認がなされたことを条件として、次の回議順に進行する旨を示す。"多数決進行"は、複数の業務単位のうちの所定数又は所定の割合の業務単位において承認がなされたことを条件として、次の回議順に進行する旨を示す。
なお、進行タイプが"多数決進行"である場合には、回議順テーブル610は、可決閾値タイプ及び可決閾値を格納することができる。回議順テーブル610は、絶対数で閾値を指定する旨を示す"絶対数"又は割合で閾値を指定する旨を示す"パーセント"を、可決閾値タイプとして格納する。そして、回議順テーブル610は、当該可決閾値を示す値(例えば、2個、67%等)を、可決閾値として格納する。
図7は、回議ノードテーブル700が格納するデータの一例をテーブル形式で示す。回議ノードテーブル700は、プロセスコード、回議順コード、ノードコード、ノードタイプ、権限コード、動的フラグ、通知メール、削除可能フラグ、多数決重み、作業内容定義、組織タイプ、部署コード、階層タイプ、役職コード、役割コード、社員コード、グループコード、直属上司選択タイプ、直属上司指定ノード、直属上司指定部署Section、直属上司指定部署階層タイプ、及び外部システムコードを対応づけて格納する。
ノードコードは、少なくとも同一プロセス及び同一回議順内において、業務単位を識別する情報である。例えば、回議ノードテーブル700は、プロセスコードprc#001、回議順コードtrn#01に対応づけて、"nod#01"及び"nod#02"を格納する。
ノードタイプとは、業務単位の種別を示す。例えば、ノードタイプには、"会社組織"、"直属上司"、"開始者"、"システム"がある。例えば、"開始者"は、この回議が開始する開始者が実行者である業務単位であることを示す。また、"直属上司"は直属上司を実行者として検索するタイプの業務単位であることを示し、"会社組織"は会社組織の中から実行者を検索するタイプの業務単位であることを示し、"システム"は実行者がシステムであることを示す。権限コードとは、アクセスすることができる権限を示し、権限コードは、"申請者"、"承認者"、"確認者"、"決裁者"、"予算担当"、"発券システム"等を値として持つ。ワークフロー管理サーバ120は、データベース130へのアクセス等、ワークフロー管理装置110に対する各種操作のそれぞれを実行することができるか否かを、各権限コードの値として予め割り当てられている。ワークフロー管理サーバ120は、各ノードが示す業務単位において、権限コードに応じて、社員190による各種操作の許否を決定する。
動的フラグとは、後に説明するように、回議が開始する前に実行者を決定するか、回議の途中で実行者を決定するかを識別する情報を示す。動的フラグが"静的"である場合、ワークフロー管理サーバ120は、回議が開始される前に実行者を決定し、動的フラグが"動的"である場合には、ワークフロー管理サーバ120は、回議が開始された後に実行者を決定する。
また、通知メールは、ワークフロー管理サーバ120が実行者に業務実行通知メールで通知すべきか否かを示す。削除可能フラグは、当該業務単位を削除することができるか否かを示す。ワークフロー管理サーバ120は、削除可能フラグがfalseである業務単位については、業務単位を削除する旨の指示が入力部280からなされても削除しない。ワークフロー管理サーバ120は、削除可能フラグがtrueである業務単位については、業務単位を削除する旨の指示が入力部280からなさると、当該業務単位を削除する。
多数決重みは、上記の進行タイプが"多数決進行"である場合の、多数決に使用するカウント値への寄与の重みを示す。ワークフロー管理サーバ120は、各業務単位において承認されると、多数決の重みに応じて、カウント値を加算していく。そして、ワークフロー管理サーバ120は、加算して得られたカウント値を、回議順テーブル610が格納している可決閾値と比較して、当該カウント値が可決閾値以上である場合に、次の回議順に進める。
作業内容定義は、業務単位において実行すべき内容を特定する情報であってよい。例えば、作業内容定義は、"承認"、"確認"、"決裁"、"経理処理"、"発券"等の、業務単位において実行すべき業務内容を特定するテキスト情報であってよい。なお、この発明における実行内容とは、当該業務内容を含んでよい。組織タイプは、"通常"又は"仮想"を値として持つ。"通常"は実際の組織を示し、"仮想"は仮想組織を示す。仮想組織については後に説明するので、ここでは説明を省略する。部署コードは実行者が属するべき部署を示し、"開始者所属"、"経理部"等を値として持つ。"開始者所属"は、回議の開始者が所属する部署に実行者が所属しているべきことを示し、"経理部"は、実行者が"経理部"が示す部署に所属しているべきことを示す。
また、階層タイプは、実行者を検索する部署が存在する階層を示す。階層タイプとしては、"自部署"、"上位部署"、"下位部署"、及び"上下位部署"を含む。"自部署"は、例えば部署コードの値が示す部署に実行者が所属すべきことを示し、"上位部署"は、当該部署より上位の部署に実行者が所属すべきことを示す。同様に、"下位部署"は、より下位の部署に実行者が所属すべきことを示し、"上下位部署"は、より上位又は下位の部署に実行者が所属すべきことを示す。なお、"上位部署"、"下位部署"、"上下位部署"は、自部署を含んでよいし、含まなくてもよい。
役職コードは、"部長"、"課長"等、実行者の役職を識別する情報を示す。また、役割コードは、"庶務担当"、"経理担当"等、実行者の役割を識別する情報を示す。また、社員コードは、実行者を識別する社員コードを示す。また、グループコードは、実行者が参加するグループを識別する情報を示す。なお、グループとは、会社組織における部署を横断する社員190によって構成される作業部会、小委員会等のような、会社組織における部署とは異なる社員190のまとまりであってよい。
直属上司選択タイプは、直属上司の実行者を検索する場合に、どの系列に属する直属上司を選択するかを示す。例えば、直属上司選択タイプの一つの値である"ノード指定"は、指定されるノードの実行者の直属上司を検索すべきことを示す。直属上司指定ノードは、当該指定されるノードを識別するノードコードを値として持つ。直属上司指定部署Sectionは、実行者の所属部署を特定するものであり、"指定者所属部署"を含む。"指定者所属部署"は、直属上司指定ノードで指定されたノードコードで識別される業務単位の実行者が所属する部署を示す。また、直属上司指定部署階層タイプは、階層タイプと同様に、"自部署"、"上位部署"、"下位部署"、及び"上下位部署"を含む。また、外部システムコードは、いわゆる人物の社員190ではなく、業務処理装置160のような外部のシステムが処理を行う場合に、その外部のシステムを識別する情報を示す。
ここで、図7のデータを参照して、実行者選択部222が各業務単位の実行者を決定する決定方法について説明する。プロセスコードprc#01、回議順コードtrn#01、及びノードコードnod#01の業務単位の実行者(以下、回議順1の承認者とする。)を選択する場合、実行者選択部222は、業務単位を特定する情報に対応づけて回議ノードテーブル700が格納しているノードタイプの値を参照する。ここでは、ノードタイプの値は"直属上司"であるので、実行者選択部222は、直属上司選択タイプの値を参照する。直属上司選択タイプの値は"ノード指定"であるので、実行者選択部222は、直属上司指定ノード及び直属上司指定部署Sectionの値を参照する。直属上司指定ノードはnod#00であり、直属上司指定部署Sectionの値は"指定者所属部署"であるので、実行者選択部222は、nod#00の実行者が所属する部署を特定する。なお、実行者選択部222は、後に説明する実行者情報格納部202が格納している部署コードを参照することによって、実行者が所属する部署を特定することができる。また、実行者選択部222は、直属上司指定部署階層タイプの値を参照すると、"上位部署"であることから、nod#00の業務単位を実行する実行者が所属する部署を含む上位の部署の中から、当該実行者の直属上司を選択する。
また、プロセスコードprc#01、回議順コードtrn#01、及びノードコードnod#02で識別される業務単位の実行者(以下、確認者という。)を選択する場合には、このノードタイプの値は"会社組織"であるので、実行者選択部222は、部署コード、階層タイプ、役職コード、及び役割コードの値を参照する。部署コードの値は"開始者所属"であるので、実行者選択部222は、ノードタイプの値が"開始者"の業務単位を実行する実行者が所属する部署を特定する。また、役職コードの値は指定されておらず、役割コードの値が"庶務担当"であるので、実行者選択部222は、後に説明する実行者情報格納部202の役割コードを参照することによって、庶務担当の役割コードを持つ社員190を検索する。なお、階層タイプの値は"上下位部署"であるので、実行者選択部222は、ノードタイプの値が"開始者"の業務単位を実行する実行者が所属する部署を含む、当該部署の上位及び下位の部署に所属している、"庶務担当"の役割コードを持つ社員190を実行者として検索する。
また、プロセスコードprc#01、回議順コードtrn#02、及びノードコードnod#01で識別される業務単位の実行者(以下、決裁者という。)を選択する場合には、ノードコード#01の実行者の直属上司を検索する点を除いて、上記のプロセスコードprc#01、回議順コードtrn#01、及びノードコードnod#01の実行者を検索する場合と同じである。また、プロセスコードprc#01、回議順コードtrn#03−1、及びノードコードnod#01で識別される業務単位の実行者(以下、予算担当者という。)を選択する場合には、実行者選択部222は経理部に所属する社員190を実行者として検索する。また、プロセスコードprc#01、回議順コードtrn#03−2、及びノードコードnod#01で識別される業務単位の実行者を選択する場合には、ノードタイプの値が"システム"であるので、外部システムコードを参照して、発券システムで識別される業務処理装置160を選択する。
図8は、会社組織の各部署の階層構造及び各部署における社員配置の一例を示す。また、図9は、図8における部署の階層構造及び社員配置において、実行者選択部222が決定した各業務単位を実行する実行者の一例を示す。
申請者、すなわちプロセスコードprc#01、回議順コードtrn#00、及びノードコードnod#01で識別される業務単位の実行者がマイケルである場合には、実行者選択部222は、マイケルが所属する営業部の上位部署である関東事業部に所属し、かつマイケルより役職の高い上司であるボブを、承認者として選択する。また、実行者選択部222は、マイケルが所属する営業部を含む上階層又は下階層の部署に所属し、庶務担当の役割を持つ社員190を検索することによって、ジェニファー及びスーザンを確認者として選択する。
また、実行者選択部222は、承認者であるボブが所属する関東事業部の上位部署である東日本支社に所属し、かつボブより役職の高い支社長のジョンを、決裁者として選択する。また、実行者選択部222は、経理部に所属する社員190を検索することによって、ピーチ及びストロベリーを予算担当者として選択する。
一方、申請者がマイケルより上位のボブである場合には、実行者選択部222は、ボブが所属する関東事業部の上位部署である東日本支社に所属し、かつボブより役職の高い支社長のジョンを、承認者として選択する。また、実行者選択部222は、ボブが所属する関東事業部を含む上階層又は下階層の部署に所属し、庶務担当の役割を持つ社員190を検索することによって、ジェニファー及び/又はスーザンを確認者として選択する。
また、実行者選択部222は、承認者であるジョンが所属する関東事業部の上位部署である会社に所属し、かつボブより役職の高い社長のジョージを、決裁者として選択する。また、実行者選択部222は、経理部に所属する社員190を検索することによって、ピーチ及びストロベリーを予算担当者として選択する。このように、ワークフロー管理装置110によると、一つのプロセスを定義することによって、申請者の所属部署、役職等に応じた適切なルートで回議することができる。
なお、回議ノードテーブル700は、確認者及び予算担当者に該当する動的フラグの値として"true"を格納している。これは、回議が始まってから実行者を選択することを示す。このように、回議が開始された後に動的に実行者を選択する場合のワークフロー管理装置110の動作については後に説明する。
図10は、分岐条件テーブル1000が格納するデータの一例をテーブル形式で示す。分岐条件テーブル1000は、プロセスコード、回議順コード、パスコード、優先順位、条件タイプ、下限金額、上限金額、下限役職レベル、上限役職レベル、及び役職コードを対応づけて格納する。例えば、図5で例示した出張申請の回議では、業務単位540が完了すると、業務単位550又は業務単位560のいずれかに進むことが定められている。このような場合、実行順2が完了した後に"OR分岐"すべきことが、回議順テーブル610に定められている。分岐条件テーブル1000は、このようなOR分岐する場合に、各パスでフローを進める場合に満たすべき条件をパスコードに対応づけて格納する。
図5の出張申請を例に挙げてワークフロー管理装置110の動作を説明すると、実行順2の業務単位540が完了すると、パスコードpat#03及びpat#04のいずれで識別されるパスに進むかを決定する。このとき、制御部220は、分岐条件テーブル1000を参照して、条件タイプの値を取得する。パスコードpat#03に対応づけられた条件のように、条件タイプの値が"開始者の役職コード"である場合、制御部220は、分岐条件テーブル1000の役職コードの値を参照する。役職コードの値は"支社長"であるので、制御部220は、図8に説明したいずれの場合にも、パスコードpat#03に対応づけられた条件に適合しない旨を判断する。
一方、パスコードpat#04に対応づけられた条件のように、条件タイプの値が"開始者の役職レベル"である場合、制御部220は、分岐条件テーブル1000の下限役職レベル及び上限役職レベルの値を参照する。下限役職レベルの値は8、上限役職レベルの値は3であるので、例えばボブ及びマイケルの役職レベルが3−8であれば、図8に説明したいずれの場合にも、パスコードpat#04に対応づけられた条件に適合する旨を判断する。したがって制御部220は、パスコードpat#04に対応するパスで回議を進めることを決定する。
なお、制御部220は、分岐条件テーブル1000が格納している複数の条件が適合することを判断した場合、分岐条件テーブル1000がより高い優先順位に対応づけて格納しているパスコードが示すパスに回議を進めてよい。また、分岐条件テーブル1000が格納する条件タイプには、"画面指定"を含む。この場合、制御部220は、画面入力値が適合する条件に対応づけて分岐条件テーブル1000が格納しているパスに回議を進めてもよい。画面入力値とは、例えば出張申請の場合であれば、出張に要する費用であってよい。このような入力値は、社員190の操作によってユーザ端末170から入力されてワークフロー管理サーバ120に送信され、入力部280から入力される。そして、分岐条件テーブル1000は、入力された金額が適合すべき下限金額及び上限金額を条件として格納することができる。そして制御部220は、入力された金額が当該下限金額以上及び/又は当該上限金額以下である場合に、当該条件に対応づけて分岐条件テーブル1000が格納しているパスで回議を進める。
このように、分岐条件テーブル1000が、適合すべき条件に対応づけてパスを格納しているので、例えば「申請者の役職レベルが本部長以上の場合、社長を含むパスに進む」等といった、申請者の役職レベル等に応じた適切なパスに回議を進めることができる。
図11及び図12は、実行者情報格納部202が格納するデータの一例をテーブル形式で示す。実行者情報格納部202は、社員190を識別する情報を持つ社員テーブル1100、社員190が所属している部署を示す情報を持つ所属テーブル1200、役職を識別する情報を持つ役職テーブル1210を含む。なお、実行者情報格納部202は、代理処理者設定テーブル1700をさらに含んでよい。代理処理者設定テーブル1700については、図17に関連して説明する。
図11を参照して、社員テーブル1100は、複数の社員190をそれぞれ識別する社員コード、社員190の名前を示す社員名、社員190を認証する認証サーバ140を識別する認証サーバコード、社員190がワークフロー管理サーバ120にログインするために使用するログインID、社員190の電子メールアドレスを示す社員メールアドレス、社員190の電話番号を示す電話番号、退職暫定開始日、及び退職暫定終了日を対応づけて格納する。なお、退職暫定開始日及び退職暫定終了日については、後に説明する。
ワークフロー管理サーバ120は、ユーザ端末170からアクセスがあった場合に、ログインIDとパスワードを入力する画面をユーザ端末170に表示させる。ワークフロー管理サーバ120は、ログインIDとパスワードを受信すると、入力されたログインIDに対応づけて社員テーブル1100が格納している認証サーバコードで識別される認証サーバ140に、ログインID及びパスワードを送信する。認証サーバ140は、ログインIDとパスワードを用いて、認証結果をワークフロー管理サーバ120に送信する。ワークフロー管理サーバ120は、認証された旨が認証サーバ140から通知された場合に、社員190にログインを許可し、認証されなかった旨が認証サーバ140から通知された場合に、社員190にログインを許可しない。
なお、通知部296は、社員テーブル1100を参照して、実行すべき業務単位の実行者に宛てて、業務単位を実行すべき旨の業務実行通知メールを送信することができる。
図12を参照して、所属テーブル1200は、所属コード、部署コード、役職コード、社員コード、異動前所属コード、異動後所属コード、及びデフォルト所属フラグを対応づけて格納している。また、役職テーブル1210は、役職コード、役職レベル、役職名、異動前役職コード、及び異動後役職コードを格納している。部署コードは部署を識別する情報であり、図13に関連して詳細に説明する。所属コードは、社員190の所属を一意に識別する情報である。
役職コードは、役職を識別する情報である。役職レベルは、役職のレベルを示す値である。なお、役職レベルは数値であってよい。例えば、役職テーブル1210は、階層においてより高い役職に対応づけて、より小さい値の役職レベルを格納してよい。例えば分岐条件テーブル1000が分岐するパスを選択するための条件として役職レベルの範囲を格納したりするなどのように、ワークフロー管理サーバ120は、役職レベルに応じて多様な形でビジネスプロセスの進行を制御することが可能になる。なお、所属テーブル1200が格納している異動前所属コード及び異動後所属コード、並びに役職テーブル1210が格納している異動前役職コード及び異動後役職コードについては、後に説明する。
デフォルト所属フラグは、当該部署がデフォルトのログイン先であるか否かを示し、"true"又は"false"を値として持つ。ワークフロー管理サーバ120は、認証された社員がログインする場合に、当該社員190を識別する社員コード及び"true"のデフォルト所属フラグに対応づけて所属テーブル1200が格納している部署コードを抽出して、当該部署コードによって識別される部署を、当該社員190がログインすべき部署として選択してよい。そして、ワークフロー管理サーバ120は、選択した部署に応じて、当該社員190がログイン直後のアクセス環境を設定してよい。例えば、ワークフロー管理サーバ120は、選択した部署専用のアクセス画面を、ユーザ端末170に表示させてよい。
このように、所属テーブル1200は、一の社員190が複数の部署に所属している旨を格納することができる。そして、所属テーブル1200は、複数の部署のそれぞれにおける社員190の役職を格納することができる。そして、ワークフロー管理サーバ120は、一の社員190が複数の部署に所属している場合であっても、ログイン時のデフォルトの所属を指定することで、ができる。なお、所属テーブル1200は、社員190が予め定められた時間幅の期間内に社員190が最も多くログインした部署を識別する部署コード及び当該社員190を識別する社員コードに対応づけて、デフォルト所属フラグの値として"true"を格納してよい。
図13は、組織情報格納部206が格納するデータの一例をテーブル形式で示す。組織情報格納部206は、部署を識別する情報を持つ部署テーブル1300を含む。部署テーブル1300は、部署コード、部署コードで識別される部署の名前を示す部署名、異動前部署コード、異動後部署コードを対応づけて格納している。なお、異動前部署コード及び異動後部署コードについては、後に説明する。社員テーブル1100、所属テーブル1200、役職テーブル1210、及び部署テーブル1300により、ワークフロー管理サーバ120は、社員190が所属している部署、社員190の役職、社員190の役職に対応する役職レベルを特定することができる。
図14は、期限格納部210が格納している情報の一例をテーブル形式で示す。期限格納部210は、一連の業務単位が全て実行される期限を示す情報を持つ実フローテーブル1400を含む。実フローテーブル1400は、実際に実行する回議の実体それぞれに関する情報を格納するテーブルであり、ジョブID、プロセスコード、フローステータスタイプ、及び承認期限を対応づけて格納している。ジョブIDは、回議の実体を識別する情報である。プロセスコードは、プロセステーブル600が格納しているプロセスコードを示し、回議がいずれのプロセス定義により定義されているかを示す。
フローステータスタイプは、現在におけるビジネスプロセスの状態を示す情報であり、"実行中"、"業務終了済"、及び"回議終了済"を値として含む。" 実行中"は、回議が現在進行中であることを示し、最後に実行される業務単位がまだ完了していない状態を示す。"業務終了済"は、回議は完了していないが業務が終了した状態を示す。"業務終了済"は、例えば事後承認の場合のように、承認する業務単位がまだ完了していないが、その他の業務単位が完了している状態を示す。"回議終了済"は、回議が完了した旨、すなわち、定義された業務単位が全て完了した旨を示す。具体的には、業務が終了したと判断されるか否かを示す情報が回議順コードに対応づけて回議順テーブル610に定められていて、当該業務順で実行される業務単位が全て完了した場合に、分岐条件テーブル1000は、フローステータスタイプの値として"業務終了済"を格納する。また、承認期限は、回議が完了すべきタイミング、例えば最後に実行される業務単位の実行が完了すべきタイミングを示す。
図15及び図16は、実行者格納部208が格納しているデータの一例をテーブル形式で示す。実行者格納部208は、回議の実体における回議の進行を定める情報を持つ実回議順テーブル1500、回議順における実行順序に関する情報を持つ実回議順関連テーブル1510及び回議の実体における業務単位の実際の実行者を特定する情報を持つ実回議ノードテーブル1600を含む。
図15を参照して、実回議順テーブル1500は、ジョブID、回議順コード、分岐タイプ、ターンステータスタイプ、進行タイプ、可決カウンタ、否決カウンタ、可決閾値タイプ、及び可決閾値を対応づけて格納する。なお、実回議順テーブル1500の各フィールドのうち、回議順テーブル610と同名のフィールド名のフィールドが示す意味は同一であるので、説明を省略する。ジョブIDは、実フローテーブル1400が格納しているジョブIDを格納する。これにより、制御部220は、実回議順テーブル1500がいずれのプロセス定義から生成されたものであるかを特定することができる。
ターンステータスタイプは、該当する回議順で実行される業務単位の処理状態を示し、" 未到達"、"処理中"、及び"終了済"を値として持つ。"未到達"は、当該回議順で実行すべき業務単位が実行できない状態である旨を示し、"処理中"は当該回議順で実行すべき業務単位のいずれかが実行中である旨を示し、"終了済"は当該回議順で実行すべき業務単位の全てが実行された状態である旨を示す。可決カウンタは、当該回議順で実行すべき業務単位のうち、可決或いは承認された業務単位の数を示す。なお、次の回議順の業務単位に進む条件として重み付け多数決が設定されている場合には、実回議順テーブル1500は、重みが加えられた値を可決カウンタに格納してよい。否決カウンタは、当該回議順で実行すべき業務単位のうち、否決或いは否認された業務単位の数を示す。
実回議順関連テーブル1510は、ジョブID、回議順コード、パスコード、関連先回議順コードを対応づけて格納する。なお、回議順コード、パスコード、及び関連先回議順コードは、回議順関連テーブル620における同名のフィールドと同一の情報を示すので、説明を省略する。ジョブIDは、実フローテーブル1400が格納しているジョブIDを格納する。ワークフロー管理サーバ120は、実回議順関連テーブル1510を参照して、回議の実体における回議順の実行順序を特定することができ、特定した順番に従って、業務単位の実行を進めることができる。
図16を参照して、実回議ノードテーブル1600は、ジョブID、回議順コード、ノードコード、ノードタイプ、ノードステータスタイプ、権限コード、動的フラグ、通知メール、削除可能フラグ、多数決重み、作業内容定義、組織タイプ、部署コード、役職コード、社員コード、外部システムコード、処理開始日時、及び処理完了日時を対応づけて格納する。なお、回議順コード、ノードコード、ノードタイプ、並び順、権限コード、動的フラグ、通知メール、削除可能フラグ、多数決重み、作業内容定義、組織タイプ、部署コード、役職コード、及び外部システムコードは、回議ノードテーブル700における同名のフィールドと同一の情報を示すので、説明を省略する。
実回議ノードテーブル1600は、ジョブIDには、実フローテーブル1400が格納しているジョブIDを格納する。また、実回議ノードテーブル1600は、ノードステータスタイプに、当該業務単位の実行状態を格納する。ノードステータスタイプは、"未処理"、"処理可能"、及び"処理済"を値として持つ。"未処理"、"処理可能"、及び"処理済"はそれぞれ、業務単位を実行することができない状態、業務単位を実行することが可能な状態、及び業務単位の実行が完了した状態示す。なお、業務単位を実行することができない状態とは、当該業務単位を実行すべき実行順序における順番より前の順番に実行されるべき業務単位の実行が完了していない状態又は回議が開始されていない状態を含む。
また、実回議ノードテーブル1600は、実行者選択部222が選択した実行者の社員IDを格納する。このように実回議ノードテーブル1600は、回議順を示す情報と、社員190又は業務処理装置160を特定する情報とを対応づけて格納するので、ワークフロー管理サーバ120は、実回議ノードテーブル1600を参照して、回議の実体における一連の業務単位を順次実行させることができる。また、ワークフロー管理サーバ120は、指定された社員190に将来回ってくる業務を抽出して、抽出した業務内容の一覧を当該社員190に提示したりすることができる。なお、ワークフロー管理サーバ120が社員190に業務内容の一覧を提示する場合の動作については、後に説明する。
なお、実回議ノードテーブル1600は、業務単位を実行できるようになった日時を処理開始日時に格納し、業務単位の実行が完了した日時を処理開始日時に格納する。例えば、制御部220は、一の業務単位の実行が完了した場合に、当該実行が完了した業務単位に対応づけて実回議ノードテーブル1600が格納しているノードステータスを"処理可能"から"処理済"に更新するとともに、実行が完了した業務単位に対応づけて実回議ノードテーブル1600が格納している処理完了日時に、実行が完了した日時を格納する。また、制御部220は、一の回議順で実行すべき全ての業務単位の実行が完了した場合に、当該業務単位の次の回議順の業務単位に対応づけて実回議ノードテーブル1600が格納しているノードステータスを"未処理"から"処理可能"に更新するとともに、当該次の業務単位に対応づけて実回議ノードテーブル1600が格納している処理開始日時に、当該次の業務単位の実行が可能になった日時を格納する。当該次の業務単位の実行が可能になった日時とは、例えば前の回議順で実行すべき全ての業務単位の実行が完了した日時であってよい。
なお、実回議順テーブル1500、実回議順テーブル1510、及び実回議ノードテーブル1600は、回議を開始する指示が申請者からなされた場合に、プロセス生成部230が、プロセステーブル600、回議順テーブル610、回議順関連テーブル、回議ノードテーブル700、社員テーブル1100、及び、役職テーブル1210、所属テーブル1200が格納している情報に基づいて生成する。そして、実行者選択部222は、当該ビジネスプロセスに含まれる各業務単位を実行する社員190を社員テーブル1100から選択して、実回議ノードテーブル1600の社員コードの値に格納する。以下に、図5で示した出張申請の回議において、実行者選択部222が社員190を選択する動作について説明する。
実行者選択部222は、出張申請の回議を識別するジョブIDと、当該ジョブIDに対応づけて実フローテーブル1400が格納しているプロセスコードとを抽出する。そして、実行者選択部222は、当該ジョブID及び"静的"の動的フラグに対応づけて実回議ノードテーブル1600が格納している回議順コード及びノードコードを選択する。そして、実行者選択部222は、抽出したプロセスコード、並びに、上記で選択した回議順コード及びノードコードに対応づけて回議ノードテーブル700が格納している、実行者が適合すべき条件(以下、実行者適合条件という。)を読み出す。なお、ここでいう実行者適合条件とは、具体的には、回議ノードテーブル700が格納している、ノードタイプ、組織タイプ、部署コード、階層タイプ、役職コード、役割コード、グループコード、直属上司選択タイプ、直属上司指定ノード、直属上司指定部署Section、直属上司指定部署階層タイプを含む。なお、回議ノードテーブル700で社員コードが直に指定されている場合には、社員190を選択する必要はないので、動的フラグの値が"静的"であったとしても、実行者選択部222が回議ノードテーブル700から実行者適合条件を読み出す必要がないことは言うまでもない。
そして、実行者選択部222は、抽出した実行者適合条件に適合する社員190を、社員テーブル1100が格納している社員190の中から選択する。なお、実行者選択部222が社員190を選択する動作については、図7に関連して具体的に説明したので、ここでは説明を省略する。そして、実行者選択部222は、選択した社員190を特定する社員コードを、実回議ノードテーブル1600の社員コードの値として格納する。このようにして、実行者選択部222は、申請者によるビジネスプロセスの申請時に、動的フラグが"静的"である業務単位を実行する社員190を識別する社員コードを抽出して、実フローテーブル1400に格納する。
そして、申請者から回議を開始する指示を入力部280から入力されると、実行者選択部222は、次の回議順で実行されるべき業務単位のうち、"動的"の動的フラグに対応づけて実回議ノードテーブル1600が格納している業務単位を特定する。例えば、図5の出張申請の回議では、実行順1の確認者が、"動的"の動的フラグに対応づけられている。したがって、実行者選択部222は、実行順1の確認者が適合すべき実行者適合条件を回議ノードテーブル700から読み出して、当該実行者適合条件に適合する社員190を識別する社員コードを抽出して、実フローテーブル1400に格納する。
回議が進んで、業務単位540が実行可能になったタイミングで、実行者選択部222は、実フローテーブル1400が"動的"の動的フラグを持つ、次の順番に実行されるべき回議順3−1の業務単位550を実行する社員190を選択して、実フローテーブル1400に記録する。なお、業務単位540が実行可能になったタイミングとは、回議順2の業務単位を実行する社員190がワークフロー管理サーバ120にアクセスして、業務単位540に関するデータが最初にアクセスされたタイミングであってよい。なお、実行者選択部222は、回議順2の業務単位を実行する社員190がワークフロー管理サーバ120にアクセスして、業務単位540に関するデータがアクセスされる毎に、回議順3−1の業務単位550を実行する社員190を選択してもよい。
なお、上記の説明においては、実行者選択部222が、一の業務単位の直前の業務単位が実行可能になったタイミングで、当該一の業務単位を実行する実行者を選択するとしたが、実行者選択部222が実行者を選択するタイミングとしては、上記のタイミングの他にも、当該一の業務単位が実行される順番から予め定められた順番だけ前の順番で実行される業務単位が実行可能になったタイミングであってよい。他にも、実行者選択部222は、当該一の業務単位が実行される順番から予め定められた順番だけ前の順番で実行される業務単位(直前に実行される業務単位を含む)が完了したタイミングであってもよい。
図17を参照して、代理処理者設定テーブル1700は、社員190に異動等が生じた場合に当該業務単位の実行を委託する他の社員190を格納するテーブルであり、所属コード(依頼者)、社員コード(委託先)、権限タイプ、期間指定フラグ、委託期間開始日、及び委託期間終了日を含む。
所属コード(依頼者)は、委託することを依頼する社員190の所属を識別する、所属テーブル1200に格納されている所属コードを示す。社員コード(委託先)は、実行を委託される社員190を識別する社員コードを示す。権限タイプは、権限の種別を示し、"申請者"、"担当者"等を値として持つ。権限タイプとして"申請者"を持つ社員は、申請者が行うことができる予め定められた操作をすることができる。具体的には、実際に回議を開始したり、回議を削除したりすることができる。権限タイプの値として"担当者"を持つ社員は、担当者が行うことができる予め定められた操作をすることができる。具体的には、添付された文書を閲覧したり、添付された文書を承認したりすることができる。期間指定フラグは、代理で実行することができる期限の有無を示す情報であり、true又はfalseを値として持つ。trueは期限が存在することを示し、falseは期限が存在しないことを示す。委託期間開始日は委託を開始する期間の開始日時を示し、委託期間終了日は委託を開始する期間の終了日日時を示す。
次に、実行者選択部222の動作を説明する。通知部296が業務単位を実行する社員190に業務通知メールを送信する前に、実行者選択部222は、当該業務単位を識別するジョブID、回議順コード、及びノードコードに対応付けて実回議ノードテーブル1600が格納している社員コード、部署コード、及び役職コードを抽出する。そして、実行者選択部222は、当該社員コード、部署コード、及び役職コードの組合せに対応づけて所属テーブル1200が格納している所属コードを抽出する。そして、実行者選択部222は、当該所属コードに対応づけて代理処理者設定テーブル1700が格納しているレコードを検索する。
レコードが検索された場合には、実行者選択部222は、検索されたレコードの期間指定フラグ、委託期間開始日、委託期間終了日、及び社員コード(委託先)を読み出す。そして、期間指定フラグがfalseである場合には、実行者選択部222は、社員コード(委託先)が示す社員コードによって識別される社員190を、代理に実行する社員として選択する。なお、期間指定フラグがtrueである場合には、実行者選択部222は、現在の日時が委託期間開始日と委託期間終了日との間にあることを条件として、社員コード(委託先)が示す社員コードによって識別される社員190を、代理に実行する社員として選択する。そして、通知部296は、当該社員コードに対応づけて社員テーブル1100が格納している社員メールアドレスに、業務通知メールを送信する。一方、レコードが検索されなかった場合には、実行者選択部222は代理者が設定されていない旨を判断する。そして、通知部296は、実回議ノードテーブル1600が格納している社員コードによって識別される社員190に業務通知メールを送信する。なお、実行者情報格納部202は、代理者情報を代理処理者設定テーブル1700に設定した社員190を識別する社員コードをさらに格納してよい。具体的には、代理処理者設定テーブル1700が、社員コード、部署コード、及び役職コードの組合せについて、当該組合せの代理者情報を設定した社員190を識別する社員コード(以下、代理者設定社員コードと呼ぶ。)を格納してよい。そして、実行者選択部222は、代理処理者設定テーブル1700に代理者が設定されている旨を判断した場合には、社員コード(委託先)が示す社員コードの他に、代理者設定社員コードをさらに抽出してよい。そして、通知部296は、抽出された社員コード(委託先)及び代理者設定社員コードの値にそれぞれ対応づけて社員テーブル1100が格納している社員メールアドレスに、業務通知メールを送信してよい。
以上説明したように、ワークフロー管理装置110によると、代理処理者設定テーブル1700が委託期間開始日及び委託期間終了日を格納しているので、社員が部署を変わったり退職したりしても、異動してから所定の期間、他の社員190に代理で処理させることができる。したがって、経費清算の申請を忘れたまま社員190が退職してしまっても、代理の社員190が経費清算を申請したりすることが可能になる。また、ワークフロー管理装置110は、代理処理者設定テーブル1700が格納している権限タイプに応じて、代理の社員190に適切な権限を与えることができる。
なお、ある社員190が他の部署に異動する場合を例に挙げて、所属テーブル1200が格納するデータの遷移を以下に説明する。なお、以下の説明においては、分かりやすさを目的として、社員190が異動前に所属していた部署を旧部署と呼び、社員190が異動する異動先の部署を新部署と呼ぶ。また、社員190が旧部署に所属していることを示す所属コードを旧所属コード、社員190が新部署に所属していることを示す所属コードを新所属コードと呼ぶ。実行者属性変更部264は、社員190が異動した場合に、社員190が新部署に所属していることを示すレコードを所属テーブル1200に追加する。このとき、実行者属性変更部264は、当該レコードの所属コードの値として新所属コードを記録する。そして、実行者属性変更部264は、旧所属コードに対応づけられた異動後所属コードの値として新所属コードを記録するとともに、新所属コードに対応づけられた異動前所属コードの値として旧所属コードを記録する。
このように、所属テーブル1200が異動前所属コード及び異動後所属コードを格納しているので、社員190が異動することによって業務単位を実行させる社員190を特定することができなくなることを未然に防ぐことができる。なお、実行者属性変更部264は、社員190が異動したとき、異動前所属コードの値を格納している他のテーブルに、異動後所属コードの値を格納させてもよい。また、社員190に異動があった場合において、異動前所属コードの値を異動後所属コードの値に更新する旨が入力部280から入力されたことを条件として、実行者属性変更部264は、異動前所属コードの値を格納している他のテーブルに異動後所属コードの値を格納させてもよい。
なお、上記において、所属テーブル1200が異動前後の所属コードを格納することについて説明したが、同様に、役職テーブル1210も、異動前後の役職コードを格納することができる。例えば、図12を参照して、部長という役職が本部長という役職に変更されたとすると、組織情報変更部262は、役職コードpos#13に対応づけて役職名"本部長"及び役職レベル3を持つレコードを所属テーブル1200に追加する。そして、組織情報変更部262は、当該レコードの異動前役職コードの値として、部長の役職を示す役職コード(pos#03)を格納する。また、組織情報変更部262は、本部長の役職コード(pos#13)を、部長の役職を定めているレコードの異動後役職コードに設定する。
同様に、部署テーブル1300も、異動前後の部署コードを格納することができる。例えば、図13を参照して、経理部という部署が会計部という部署に変更されたとすると、組織情報変更部262は、部署コードsec#11に対応づけて部署名"会計部"を持つレコードを部署テーブル1300に追加する。そして、組織情報変更部262は、当該レコードの異動前部署コードの値として、経理部の部署を示す部署コード(pos#01)を格納する。また、組織情報変更部262は、会計部の部署を示す部署コード(sec#11)を、経理部の部署を定めているレコードの異動後部署コードの値として設定する。
なお、組織情報変更部262は、部署に異動があった場合、異動前部署コードの値を格納している他のテーブルに、異動後部署コードの値を格納させてもよい。また、部署に異動があった場合において、異動前部署コードの値を異動後部署コードの値に更新する旨が入力部280から入力されたことを条件として、組織情報変更部262は、異動前部署コードの値を格納している他のテーブルに異動後部署コードの値を格納させてもよい。同様に、組織情報変更部262は、役職に異動があった場合、異動前役職コードの値を格納している他のテーブルに、異動後役職コードの値を格納させてもよい。また、役職に異動があった場合において、異動前役職コードの値を異動後役職コードの値に更新する旨が入力部280から入力されたことを条件として、組織情報変更部262は、異動前役職コードの値を格納している他のテーブルに異動後役職コードの値を格納させてもよい。
上記において、社員190の所属が変わった場合、役職の変更があった場合、及び組織変更等で部署に異動があった場合における、実行者属性変更部264及び組織情報変更部262の動作を説明した。上記のような異動があった場合には、既に回議が開始されている場合に、望ましいフローで回議を進めることができなくなってしまう場合がある。例えば、ある社員190が他の部署に異動したとする。そして、実回議ノードテーブル1600には、その社員190が決裁する業務単位が定められていたとする。このような場合、そのままその社員190が決裁してしまうと、本来決裁権限のないはずの部署の社員190が決裁したことになってしまう。
このような状況は、回議が始まる前に各業務単位の実行者が定められている場合に生じ得る。したがって、情報変更部260は、実行者属性変更部264によって所属している部署が変更された社員190が実行者として定められている場合に、当該社員190を識別する社員コードに対応づけて実回議ノードテーブル1600が格納している動的フラグの値を、"動的"に変更する。なお、情報変更部260は、実回議ノードテーブル1600が当該社員190を識別する社員コード及び"未処理"のノードステータスタイプに対応づけて格納している動的フラグの値を"動的"に変更することが望ましい。このようにすると、既に述べたように、当該社員190が実行すべき業務単位を実行することができるようになったタイミングで適切な実行者が検索されて、検索された実行者に業務実行通知メールが送信される。
図18は、平均処理時間格納部212が格納しているデータの一例をテーブル形式で示す。平均処理時間格納部212は、平均処理時間を識別する情報を持つ処理時間テーブル1800を含む。処理時間テーブル1800は、社員コード、平均処理時間、及び処理カウントを対応づけて格納している。平均処理時間は、社員コードで識別される社員190が一の業務単位の実行に要した時間長さを示す。例えば、平均処理時間は、実行者選択部222が選択した社員コードによって識別する社員190に通知部296が業務実行通知メールを送信した日時から、当該社員190が一の業務単位を実行した日時までの時間長さであってよい。また、処理カウントは、社員コードによって識別される社員190が業務単位を完了した回数を示す。
既に述べたように、実回議ノードテーブル1600は、処理開始日時及び処理終了日時を格納している。そして、制御部220は、所定のタイミングにおいて、実回議ノードテーブル1600が格納している処理完了日時と処理開始日時との間の時間差の合計値及び業務単位の合計数を社員コード毎に算出する。そして、制御部220は、処理時間テーブル1800が格納している平均処理時間及び処理カウントと、算出した時間差の合計値及び業務単位の合計数とに基づいて、社員190が過去に業務単位を処理するのに要した平均処理時間を算出する。そして、制御部220は、算出した平均処理時間を処理時間テーブル1800が格納している平均処理時間の値として格納するとともに、処理時間テーブル1800が格納している処理カウントに業務単位の合計数を加える。なお、所定のタイミングとは、社員190が業務単位を実行したタイミングであってよいし、予め定められた時刻(例えば、毎日午前2時等)であってよい。
なお、ワークフロー管理サーバ120は、回議中のビジネスプロセスについて、その承認期限に近くなると、回議中であるビジネスプロセスに含まれる業務単位を実行している実行者に、実行を催促する電子メール(以下、催促メールと呼ぶ。)を通知する。このとき、ワークフロー管理サーバ120は、処理時間テーブル1800が格納している平均処理時間を考慮して、承認期限に間に合うよう、余裕をもって催促メールを送信する。
具体的には、作業単位特定部240は、"実行中"のフローステータスタイプに対応づけて実フローテーブル1400が格納しているジョブIDを抽出する。そして、作業単位特定部240は、抽出したジョブID及び"処理可能"のノードステータスタイプに対応づけて実回議ノードテーブル1600が格納している回議順コード及び社員コード(以下、実行中社員コードと呼ぶ。)を抽出する。そして、作業単位特定部240は、抽出した回議順コードに対応づけて実回議順関連テーブル1510が格納している関連先回議順コードを抽出する。そして、作業単位特定部240は、抽出した関連先回議順コードの値に対応づけて実回議順関連テーブル1510が格納している関連先回議順コードを抽出していくことによって、実行中の業務単位の後に実行される回議順コードを抽出することができる。そして、作業単位特定部240は、抽出した回議順コード及び抽出したジョブIDに対応づけて実回議ノードテーブル1600が格納しているレコードを抽出する。これにより、作業単位特定部240は、実行中の業務単位の後に実行される業務単位を特定することができる。
そして、通知部296は、作業単位特定部240が抽出したレコードの社員コードを抽出する。そして、通知部296は、抽出した社員コードに対応づけて平均所要時間テーブル1800が格納している平均所要時間の合計値を算出する。そして、通知部296は、算出した合計値が基準時間幅設定部250によって設定された基準時間幅より長い場合に、実行中社員コードに対応づけて社員テーブル1100が格納しているメールアドレスに、催促メールを送信する。なお、通知部296は、作業単位特定部240が抽出したレコードの社員コードに対応づけて平均所要時間テーブル1800が格納している平均所要時間の合計値を、回議順コード毎に算出してよい。そして、通知部296は、算出した回議順コード毎の合計値を同一回議順コードに対応づけられた作業単位の数で除した値を算出し、算出した値を回議順コードにわたる合計値を算出してもよい。そして、通知部296は、算出した合計値が基準時間幅設定部250によって設定された基準時間幅より長い場合に、実行中社員コードに対応づけて社員テーブル1100が格納しているメールアドレスに、催促メールを送信してもよい。なお、通知部296は、作業単位特定部240が抽出したレコードの数が予め定められた数より多い場合に、実行中社員コードに対応づけて社員テーブル1100が格納しているメールアドレスに、催促メールを送信してもよい。なお、承認期限とは、この発明における完了期限であってよい。
なお、実回議ノードテーブル1600は、実行者である社員190が案件にアクセスしたか否かを示す情報を記憶してもよい。例えば、ワークフロー管理サーバ120が後に示す業務単位の一覧を示す画面を当該業務単位を実行する社員190が操作するユーザ端末170に送信した場合に、実回議ノードテーブル1600は、当該業務単位にアクセスした旨を示す情報を記憶してよい。そして、通知部296は、現在の日時と、当該業務単位に対応づけて実回議ノードテーブル1600が格納している処理開始日時との間の差が、代理処理者設定テーブル1700が当該社員190に対応づけて格納している平均処理時間を越えた場合に、業務実行通知メールを再度送信してもよい。
図19は、プロセス定義を社員190に定義させるプロセス作成メニュー1900の一例を示す。ワークフロー管理サーバ120はプロセス作成メニュー1900をユーザ端末170に表示させる。なお、プロセス作成メニュー1900は、複数のプロセス定義から新たな一のプロセス定義を作成するメニューの一例である。
ユーザ端末170は、社員190からのマウス操作によってプロセス作成メニュー1900に含まれるチェックボタン1950及び1960がチェックされると、氏名変更及び家族異動を示すプロセス定義が選択されたことを判断する。また、ユーザ端末170は、社員190からのマウス操作によってプロセス作成メニュー1900に含まれるリンクデータ選択ボタン1930及び1940がマウスでクリックされると、氏名変更届及び家族異動届の届出文書であるコンピュータ・ファイル(氏名変更届.doc及び家族異動届.doc)を社員190に選択させる。
そして、社員190からのマウス操作によってプロセス定義生成ボタン1970がクリックされると、ユーザ端末170は、氏名変更届の回議を定める業務単位1910〜1913及び家族異動届の回議を定める業務単位1920〜1922を用いて、新たなプロセス定義を生成することをプロセスワークフロー管理サーバ120に指示する。そして、プロセス生成部230は、ユーザ端末170から指示された情報を入力部280が受信すると、氏名変更届及び家族異動届のそれぞれのプロセス定義に基づいて、氏名変更届及び家族異動届を届け出る一の回議を定める一連の業務単位を生成する。
具体的には、プロセス生成部230は、回議ノードテーブル700に定められている各業務単位1920〜1922を実行する実行者が適合すべき条件を検索する。実行者が適合すべき条件とは、図5に関連して説明したように、回議ノードテーブル700が格納している部署コード、階層タイプ、役職コード、役割コード、ノード指定、指定者所属部署、及び上位部署等の値を含む。
そして、プロセス生成部230は、業務単位1910〜1913及び業務単位1920〜1922の中から、回議ノードテーブル700が同じ条件を格納している業務単位を選択する。例えば、プロセス生成部230は、開始者である業務単位1910及び1920と、同じ指定部署が指定されている業務単位1913及び1912とを選択する。そこでプロセス生成部230は、業務単位1910の完了後に、業務単位1911及び1920に進む旨を回議順関連テーブル620の関連先回議順コードに記録するとともに、その分岐タイプがAND分岐である旨を回議順テーブル610の分岐タイプに記録する。
図20は、プロセス定義によって定義される回議を開始する申請メニュー2000の一例を示す。ワークフロー管理サーバ120は、社員190によってプロセス定義が選択されると、当該プロセス定義による回議を開始する申請メニュー2000をユーザ端末170に表示させる。なお、本図の申請メニュー2000は、図19に関連して説明した氏名変更届及び家族異動届のそれぞれのプロセス定義からプロセス生成部230が生成したプロセス定義によって定められる回議を申請するメニューの一例である。当該一のプロセス定義は、前述したように、業務単位1910、1911、1912、1913、及び1921を含む。
ユーザ端末170は、申請メニュー2000に含まれる予定実行者取得ボタン2030がクリックされると、各業務単位を実行する実行者を検索するよう回議実行者ワークフロー管理サーバ120に指示する。予定実行者選択部22は、実行者選択部222が実行者を選択する動作と同様にして、各業務単位を実行する実行者を選択する。そして、予定実行者出力部292は、予定実行者選択部225が選択した実行者をユーザ端末170に送信する。ユーザ端末170は、予定実行者選択部224から受信した実行者を、例えば各業務単位のアイコンに隣接して表示する。このように、ワークフローシステム100では、回議前に予定実行者を申請者に確認させることができる。また、ワークフローシステム100ではさらに、回議前又は回議中に、実行者を変更することができる。例えばユーザ端末170は、回議順1を示す領域がクリックされたことを検知すると、回議順1に新たな実行者を追加及び削除するメニューを表示する。ユーザ端末170は、当該メニューから実行者を追加する旨が指示されると、ワークフロー管理サーバ120から実行者の候補者リストを取得して提示して、追加する社員190を選択させる。追加する社員190が選択されると、ユーザ端末170は、選択された社員190を識別する社員識別情報及び回議順1を識別する回議順識別情報を、ワークフロー管理サーバ120に送信する。ワークフロー管理サーバ120は、ユーザ端末170から受信した回議順識別情報によって識別される回議順で実行する実行者として、受信した社員識別情報によって識別される社員190を追加する。具体的には、実回議ノードテーブル1600が、当該社員190を識別する社員コード、並びに、回議順識別情報で識別される回議順を識別する回議順コードを含む新たなレコードを格納する。また、ユーザ端末170は、実行者を削除する旨が指示されると、指定された削除すべき社員190を識別する社員識別情報を回議順識別情報と共にワークフロー管理サーバ120に送信する。ワークフロー管理サーバ120は、ユーザ端末170から受信した回議順識別情報によって識別される回議順で実行される業務単位の実行者の中から、社員識別情報によって識別される社員190を削除する。なお、実行者の変更は、上記の実行者の追加動作及び削除動作の組合せによって実装することができる。また、ここでは特定の回議順において実行者を変更する場合について説明したが、同様の動作によって、回議順自体を追加及び削除することができることは言うまでもない。また、実行者を追加又は削除したり、回議順を追加又は削除したりする操作がなされた場合には、証跡情報格納部214がその操作内容及び操作した社員190を特定する情報を格納する。証跡情報格納部214が格納するデータの一例については図24に関連して説明する。
ユーザ端末170は、申請メニュー2000に含まれる申請ボタン2050がクリックされると、氏名変更届.doc及び家族異動届.docをワークフロー管理サーバ120に送信するとともに、回議を開始することをワークフロー管理サーバ120に指示する。また、このとき、ユーザ端末170は、申請メニュー2000に含まれる承認期限入力欄2040に社員190から入力された承認期限を示す日時情報を、ワークフロー管理サーバ120に送信する。入力部280はユーザ端末170から送信された日時情報を受信して、実フローテーブル1400が受信した日時情報を承認期限の値として格納する。
なお、制御部220は、ユーザ端末170から受け取った回議を開始する旨の指示を受け取ると、プロセス生成部230が生成したプロセス定義に従って前述のように回議を進める。このとき、制御部220は、ワークフロー管理サーバ120から受け取った業務単位1911及び1912を実行する社員190に氏名変更届.docを各回議順において閲覧又は変更可能な形で提供し、業務単位1921を実行する社員190に各回議順において家族異動届.docを閲覧又は変更可能な形で提供する。また、制御部220は、業務単位1913を実行する社員190には、氏名変更届.doc及び家族異動届.docの双方を、閲覧又は変更可能な形で提供する。なお、プロセス生成部230は、業務単位1910と業務単位1913との間に回議すべき業務単位の数が予め定められた数より少ないことを条件として、業務単位1910と業務単位1913との間に回議すべき業務単位に、氏名変更届.doc及び家族異動届.docの双方を、閲覧又は変更可能な形で提供するプロセス定義を生成してよい。
図21は、業務単位を実行する実行者が承認する承認メニュー2100の一例を示す。ワークフロー管理サーバ120は、承認メニュー2100をユーザ端末170に表示させる。なお、本図の承認メニュー2100は、図19及び20に関連して説明した氏名変更届及び家族異動届を作業単位1913において確認するメニューの一例である。
ユーザ端末170は、社員190が文書タブ2130をクリックすると、氏名変更届.docの内容を文書表示枠2110内に表示する。氏名変更届.docの内容が文書表示枠2110内に表示された状態で社員190が確認ボタン2120をクリックした場合に、ユーザ端末170は、氏名変更届が確認された旨を判断する。同様にして、ユーザ端末170は、社員190が文書タブ2140をクリックすると、家族異動届.docの内容を文書表示枠2110内に表示し、その状態で確認ボタン2120がクリックされると、ユーザ端末170は家族異動届が確認された旨を判断する。
このようにして全ての文書が確認された場合に、ユーザ端末170は、作業単位1913が承認された旨の情報をワークフロー管理サーバ120に送信する。ワークフロー管理サーバ120は、当該承認された旨の情報をユーザ端末170から受け取った場合に、作業単位1913の実行が完了したと判断する。
図22は、業務一覧メニュー2200の一例を示す。ワークフロー管理サーバ120は、ワークフロー管理サーバ120にアクセスして認証された社員190に、当該社員190に関連する業務単位の一覧を示す業務一覧メニュー2200をユーザ端末170に表示させる。業務一覧メニュー2200は、業務単位を検索する検索条件を入力する検索メニュー2210、処理中である業務単位の一覧を示す処理中業務一覧メニュー2230、処理予定である業務単位の一覧を示す処理業務予定一覧メニュー2250、及び処理済みである業務単位の一覧を示す処理済業務一覧メニュー2260を含む。
検索メニュー2210は、処理中、処理予定、及び処理済のそれぞれの業務単位を検索すべき処理状態を選択する処理状態選択チェックボックス2212、申請されている金額の範囲を指定する金額入力メニュー2214、作業内容を指定する作業内容選択メニュー2216、承認期限までの残り日数の範囲を指定する承認期限入力メニュー2218、及び検索ボタン2220を含む。
処理状態選択チェックボックス2212がチェックされているか否かを社員190に指定させることで、検索対象に含めるべき業務単位の処理状態を選択することができる。また、作業内容選択メニュー2216により、例えば"確認"、"承認"、"決済"などの、検索対象に含めるべき業務単位の業務種別を選択することができる。なお、処理中、処理予定、及び処理済とは、実回議ノードテーブル1600が格納しているノードステータスタイプの" 処理可能"、" 未処理"、及び" 処理済"にそれぞれ対応する。このような検索メニュー2210を社員190に提示することによって、ワークフロー管理サーバ120は、例えば、複数の業務単位の中から、現在処理中であり、金額入力メニュー2214に入力された金額以下の金額が指定されており、作業内容が"決済"であり、承認期限が2日以内の回議に対応づけられた業務単位を検索することができる。
ユーザ端末170は、検索メニュー2210によって入力された検索条件をワークフロー管理サーバ120に送信する。そして、実行内容抽出部270は、ユーザ端末170から受け取った検索条件に基づいて、ログインしている社員190が実行者である業務単位を抽出する。例えば、実行内容選択部274は、現在の日時から検索条件で指定された承認期限までの日時を承認期限の値に対応づけて実フローテーブル1400が格納しているジョブID及びプロセスコードを抽出する。そして、実行内容選択部274は、当該抽出したジョブID、ログインしている社員190を識別する社員コード、検索条件で指定された処理状態を示す値(例えば"処理可能")、及び検索条件で指定された作業内容を示す値(例えば"決済")に対応づけて実回議ノードテーブル1600が格納しているジョブID、作業内容、及び回議順コードを抽出する。また、実行内容選択部274は、抽出したジョブIDに対応づけて実フローテーブル1400が格納している承認期限を抽出する。また、実行内容選択部274は、抽出したプロセスコードに対応づけてプロセステーブル600が格納しているプロセス名を抽出する。なお、実行内容選択部274が実回議ノードテーブル1600から抽出した回議順コードは、処理予定の業務単位を検索する場合に使用され、後に説明する。
そして、実行内容出力部294は、実行内容選択部274が抽出したプロセス名、作業内容、及び承認期限をユーザ端末170に送信する。なお、実行内容選択部274は、実フローテーブル1400とプロセステーブル600とをプロセスコードで連結するとともに、実フローテーブル1400と実回議ノードテーブル1600とをジョブIDで連結したテーブルに対して、承認期限、社員コード、処理状態、及び作業内容の条件を指定して、一のSQLを実行することによってプロセス名、作業内容、及び承認期限を抽出することができる。なお、プロセス名、作業内容、及び承認期限は、この発明における実行内容の一例である。
なお、ここでは、ログインしている社員190が実行者である業務単位を検索する場合を例に挙げて説明したが、ワークフロー管理サーバ120は、ユーザ端末170から特定の社員190を入力させ、入力された社員190が実行者である業務単位を検索してもよい。この場合も、入力された社員190を識別する社員コードで検索する点を除き、実行内容選択部274が上記と同様の処理を行うことによって検索することができることは言うまでもない。なお、ユーザ端末170が当該特定の社員190を識別する情報をワークフロー管理サーバ120に送信し、ワークフロー管理サーバ120において特定実行者入力部282から当該特定の社員190を識別する情報が入力されてよい。なお、実行内容選択部274は、特定の社員190が実行する業務単位を検索する場合には、ログインしている社員190が閲覧することが許容されている回議の中から検索する。具体的には、制御情報格納部200は、実フローテーブル1400が格納しているジョブIDに対応づけて、当該ジョブIDで識別される回議を閲覧することを許容する社員190(以下、閲覧可能社員と呼ぶ。)の所属を識別する所属コード、閲覧可能社員が所属している部署を識別する部署コード、閲覧可能社員の役職を識別する役職コード、閲覧可能社員を識別する社員コードを格納する。そして、実行内容選択部274は、ログインしている社員190の所属コード、部署コード、役職コード、及び社員コードのいずれかに適合する所属コード、部署コード、役職コード、及び社員コードに対応づけて制御情報格納部200が格納しているジョブIDを抽出する。そして、実行内容選択部274は、抽出したジョブIDで識別される回議の中から、上記と同様の方法によって、特定の社員190が実行する業務単位を選択する。このように、ワークフロー管理サーバ120によると、回議内容を閲覧することができる社員190を限定することができる。
処理中業務一覧メニュー2230は、一括承認の対象とするか否かを指定する一括承認選択チェックボックス2232、回議の概要を示す概要表示欄2234、作業内容を表示する作業内容表示欄2236、承認期限を表示する承認期限表示欄2238、一の業務単位を個別に処理する旨を指示する個別処理ボタン2240、表示されている一括承認選択チェックボックス2232を全てチェックする旨を指示する全チェックボタン2242、一括承認選択チェックボックス2232においてチェックされている業務単位を一括処理する旨を指示する一括処理ボタン2244、一括承認選択チェックボックス2232においてチェックされている業務単位を連続的に処理する旨を指示する連続処理ボタン2246、及び処理中の業務の一覧の表示・非表示を選択する処理中業務一覧表示トグルボタン2231を有する。
個別処理ボタン2240がクリックされると、ユーザ端末170は対応する業務単位を識別する情報とともに作業単位の承認画面をワークフロー管理サーバ120に要求する。ワークフロー管理サーバ120は、業務単位を識別する情報及び作業単位の承認画面を要求する情報をユーザ端末170から受け取ると、当該業務単位を識別する情報に基づいて、図21に関連して説明した業務単位を承認する承認画面をユーザ端末170に表示させる。
また、一括処理ボタン2244がクリックされると、ユーザ端末170は、一括承認選択チェックボックス2232においてチェックされている業務単位を識別する情報及び作業単位を承認する旨の情報をワークフロー管理サーバ120に送信する。ワークフロー管理サーバ120は、業務単位を識別する情報及び作業単位を承認する旨の情報を受け取ると、当該業務単位を識別する情報によって識別される業務単位が実行された旨を判断する。また、連続処理ボタン2246がクリックされた場合の動作の一例は、図23に関連して説明する。
また、全チェックボタン2242がクリックされると、ユーザ端末170は、現在表示している業務単位に対応する一括承認選択チェックボックス2232の全てをチェックする。また、ユーザ端末170は、処理中業務一覧表示トグルボタン2231がクリックされる毎に、処理中業務一覧メニュー2230内に表示されている業務の一覧の表示/非表示を切り替える。
なお、実行内容抽出部270は、業務単位が実行可能になってから予め定められた期間より長い期間が経過している業務単位の実行内容を抽出してもよい。業務単位が実行可能になってからの期間は、実回議ノードテーブル1600の処理開始日時と現在との時間差から判断することができる。そして、実行内容出力部294は、実行可能になってから現在までに経過した時間が長い順に、業務単位の実行内容を処理中業務単位一覧メニュー2230内に表示させてよい。
また、処理予定業務一覧メニュー2250は、回議の概要を示す概要表示欄2252、作業内容を表示する作業内容表示欄2234、及び承認期限表示欄2256を有する。なお、ユーザ端末170が概要表示欄2252、作業内容表示欄2234、及び承認期限表示欄2256に表示する内容は、処理予定の業務単位に関する内容を表示する点を除いて、それぞれ概要表示欄2234、作業内容表示欄2236、及び承認期限表示欄2238に表示する内容と略同一であるので説明を省略する。また、ユーザ端末170が処理済業務一覧メニュー2260に表示する内容は、処理済みの業務単位に関する内容を表示する点を除いて、処理予定業務一覧メニュー2250に表示する内容と略同一であるので、説明を省略する。また、ユーザ端末170は、処理中業務一覧表示トグルボタン2231がクリックされた場合の動作と同様に、処理予定業務一覧表示トグルボタン2251及び処理済業務一覧表示トグルボタン2261がクリックされる毎に、それぞれ処理予定業務一覧メニュー2250及び処理済業務一覧メニュー2260内に表示されている業務の一覧の表示/非表示を切り替える。
なお、上記において、ワークフロー管理サーバ120がログインしている社員190が実行者である業務単位を抽出する動作について説明した。ワークフロー管理サーバ120は、処理予定の業務単位を抽出する場合には、ログインしている社員190が近い将来に処理可能になる業務単位を抽出してよい。この場合、上記で説明した抽出動作において業務単位を抽出する場合に、実行内容選択部274は実フローテーブル1400からジョブIDを、実回議順テーブル1500から回議順コードを抽出する。そして、実行順差抽出部272は、実回議順関連テーブル1510において、抽出されたジョブIDをジョブIDの値として持ち、抽出された回議順コードを関連先回議順コードの値として持つレコードを抽出して、当該レコードの回議順コードの値を抽出する。
そして、実行順差抽出部272は、当該回議順コードを関連先回議順コードの値として持つレコードを抽出することを繰り返し実行することによって、現在実行中の業務単位を実行する回議順を特定する。このとき、実行順差抽出部272は、抽出したレコードの回議順コードに対応づけて実回議順テーブル1500が格納しているターンステータスタイプの値が"処理中"となるまで、当該レコードの抽出を繰り返す。この動作によって、実行順差抽出部272は、ログインしている社員190が実行する回議順と、現在実行中である回議順の差を抽出する。
そして、実行内容選択部274は、抽出した回議順の差が予め定められた差より小さい業務単位の内容を選択してよい。そして、実行内容出力部294は、実行内容選択部274が選択した業務単位の内容を処理予定業務一覧メニュー2250内に表示させるべくユーザ端末170に指示してよい。また、実行内容出力部294は、各業務単位の回議順序における順番を処理予定業務一覧メニュー2250内に表示させてもよい。また、実行内容出力部294は、回議が回ってくる順番が早い業務内容から順に、処理予定業務一覧メニュー2250内に業務単位を表示させてもよい。
図23は、連続承認における画面遷移の一例を示す。すでに述べたように、連続処理指示ボタン2246がクリックされると、ユーザ端末170はチェックされている業務単位を識別する情報をワークフロー管理サーバ120に送信するとともに、連続承認メニューをワークフロー管理サーバ120に要求する。ワークフロー管理サーバ120は、ユーザ端末170から受け取った業務単位を識別する情報から、その業務単位が扱う申請データを取得して、承認メニューをユーザ端末170に送信する。
ワークフロー管理サーバ120は、承認メニュー2100と同様に、一の業務単位に関する添付書類の内容と、承認ボタン2315を含む承認メニュー2310をユーザ端末170に表示させる。ユーザ端末170は、承認ボタン2315がクリックされたことを検知すると、ワークフロー管理サーバ120に当該業務単位が承認されたことをワークフロー管理サーバ120に送信するとともに、次の業務単位の承認メニューをワークフロー管理サーバ120に要求する。そして、ワークフロー管理サーバ120は、当該次の業務単位についても、添付書類の内容と承認ボタン2325を含む承認メニュー2320をユーザ端末170に表示させる。同様にして、ユーザ端末170は、承認ボタン2325がクリックされたことを検知すると、ユーザ端末170にはさらに次の業務単位の承認メニュー2330が表示される。ユーザ端末170は、この最後の業務単位の承認メニュー2330の承認ボタン2335がクリックされたことを検知すると、図22に関連して説明した業務一覧メニュー2200をワークフロー管理サーバ120に要求する。
図24は、証跡情報格納部214が格納しているデータの一例をテーブル形式で示す。証跡情報格納部214は、ワークフローシステム100においてなされた操作情報を持つ証跡情報テーブル2400を含む。証跡情報テーブル2400は、セッションID、管理ID、実行日時、社員コード、ジョブID、IPアドレス、ログインタイプ、ログインID、証跡情報タイプ、証跡タイプ、証跡情報詳細、SQLメッセージ、及び変更申請ジョブIDを対応づけて格納する。なお、社員コード、ジョブID、及びログインIDについては、証跡情報テーブル2400は既に説明した同名のフィールドが示す情報とそれぞれ同じ意味を持つ情報を格納する。
セッションIDは、ワークフロー管理サーバ120が割り当てたセッションを識別する情報を示す。管理IDは、実行日時とともに、証跡情報をセッション内において一意に識別する。実行日時は、証跡に関連する操作が実行された日時を示す。IPアドレスは、証跡情報に関するアクセス元のユーザ端末170及び業務処理装置160のIPアドレスを示す。ログインタイプは、アクセスされた種別を示し、Webを通じてログインされたアクセスであることを示す"Web"、APIを通じてアクセスされたことを示す"API"等を値として持つ。証跡情報タイプは証跡の種別を示し、ワークフローに関連する証跡であることを示す"ワークフロー"、管理用の証跡を示す"管理用"、プロセスに関連する証跡であることを示す"プロセス"等を値として持つ。なお、プロセスに関連する証跡とは、図20に関連して説明した実行者が追加又は削除された場合、或いは回議順が追加又は削除された場合の証跡を含む。証跡タイプは、証跡の種別を示し、マスタテーブルを参照した場合の証跡であることを示す"マスタ参照"、システムを変更した場合の証跡であることを示す"システム変更"等を値として持つ。証跡情報詳細は、証跡データを示す。SQLメッセージは、SQLが実行された場合における、SQLメッセージを示す。SQLメッセージには、実行したSQL文を含んでよいし、得られた結果を含んでもよい。
変更申請ジョブIDは、システムの変更申請が承認された回議を識別するジョブIDを示し、ワークフローシステム100においてシステム変更がなされた場合に得られる証跡に対して格納される。なお、システム変更とは、マスタテーブル、モジュール等の変更、諸設定、追加等を含む。ワークフローシステム100では、そのようなワークフローシステム100全体の制御動作に関わるシステム変更を行う場合には、システム変更の申請を回議し、承認された場合に限り、システム変更を行うことができてよい。
ところで、システム変更申請が回議にて承認された後に社員190がシステム変更を行う場合には、ワークフロー管理サーバ120は、承認された回議を特定する情報を社員190に入力させる。当該回議を特定する情報とは、当該回議のジョブIDであってよいし、当該回議のジョブIDに対応づけられた他の値であってもよい。ワークフロー管理サーバ120は、入力された当該情報によって特定される回議のジョブIDを、その後に社員190によってシステム変更操作がなされた場合の証跡データに対応づけて、変更申請ジョブIDの値として格納する。なお、出力部290は、変更申請ジョブIDに対応づけて証跡情報テーブル2400が格納している証跡データを外部に出力してよい。なお、ここでいう証跡データとは、証跡情報テーブル2400が格納している少なくとも1つのデータであってよい。このように、証跡情報テーブル2400が変更申請ジョブIDを格納するので、ワークフロー管理装置110によると、システム変更のようなワークフローシステム100の動作に重大な影響を及ぼす変更に対して、どの社員190が申請して、どのように承認されたかを、変更申請ジョブIDをキーにして後で参照することが可能になる。
また、証跡情報テーブル2400が格納しているデータから、上記のシステム変更に関する操作等、ワークフローシステム100における多様な操作ログを収集して、解析することができる。このように、ワークフロー管理装置110によると、例えば処理要求毎のデータを収集したり、滞留日数で検索することができる。また、プロセスの実行期間を収集したり、プロセスの変更履歴を検索したりすることが可能になる。
図25は、エラー情報格納部216が格納しているデータの一例をテーブル形式で示す。エラー情報格納部216は、ワークフローシステム100においてエラー情報を持つエラー情報テーブル2500を含む。エラー情報テーブル2500は、セッションID、管理ID、実行日時、社員コード、ジョブID、IPアドレス、ログインタイプ、ログインID、エラーコード、エラータイプ、エラーメッセージ、デバックメッセージ、及び引数メッセージを対応づけて格納する。なお、セッションID、管理ID、実行日時、社員コード、ジョブID、IPアドレス、ログインタイプ、及びログインIDについては、エラー情報テーブル2500は、証跡情報テーブル2400が格納している同名のフィールドとそれぞれ同じ内容を格納するので、説明を省略する。
エラーコードは、ワークフロー管理サーバ120上で動作するプログラムが定めているエラーを識別するエラーコードを示す。エラータイプは、エラー情報の種別を示し、エラー情報であることを示す"エラータイプ"、デバッグ情報であることを示す"デバッグタイプ"を値として含む。エラーメッセージは、エラーに関して出力されるメッセージを示し、オペレーティングシステム、ミドルウェア、又はツール等のプログラム、或いは業務処理装置160等から返却されるエラーメッセージであってよい。デバックメッセージは、デバッグ情報を示し、エラータイプが"デバッグタイプ"である場合に、デバッグ情報が格納される。引数メッセージは、エラーが発生した関数、オブジェクト等のプログラム要素が外部から受け取った情報を示し、例えばミドルウェア、その他のソフトウェア等のAPIが受け取った引数を値として持つ。
このように、エラー情報テーブル2500は、証跡情報テーブル2400が格納しているセッションID、管理ID、及び実行日時とリンクさせて、エラー情報を格納することができる。そして、例えば、ワークフロー管理サーバ120は、セッションIDをキーとして、関連する多様なエラー情報を収集して、例えばテキストファイルとして外部に出力することができる。また、ワークフロー管理サーバ120は、必要に応じて、各テーブルのテーブルデータも取得することができる。
図26は、節点情報格納部320が格納しているデータの一例をテーブル形式で示す。節点情報格納部320は、部署の階層情報を格納する部署階層テーブル2600を含む。部署階層テーブル2300は、部署コード、自階層レベル、階層レベル1識別子、階層レベル2識別子、階層レベル3識別子、階層レベル4識別子、及び階層レベル5識別子を対応づけて格納する。
部署コードは、部署テーブル1300が格納している部署コードを示す。自階層レベルは、部署コードで識別される部署が位置する、階層構造における階層レベルを示す。階層レベル1識別子は、部署コードで識別される部署の先祖ノードのうち、階層構造において階層レベル1にある部署の部署コードを示す。同様に、階層レベル2識別子、階層レベル3識別子、階層レベル4識別子、及び階層レベル5識別子は、階層構造におけるそれぞれの部署の先祖ノードのうち、それぞれ階層レベル2、階層レベル3、階層レベル4、及び階層レベル5にある部署の部署コードを示す。なお、部署テーブル1300は、自階層レベルより低い階層レベルには先祖ノードが存在しないので、階層レベル識別子にはNULL値を格納してよい。なお、階層情報入力部310は、部署の階層構造を表現する情報を、ユーザ端末170から入力して、部署テーブル1300が格納している部署コードに対応づけて部署階層テーブル2600に格納する。なお、以下の説明では、階層レベル1識別子、階層レベル2識別子、階層レベル3識別子、階層レベル4識別子、及び階層レベル5識別子の各フィールドを階層レベルN識別子フィールドと総称し、その値を階層レベルN識別子の値と総称する場合がある。
次に、節点抽出部330の動作について以下に説明する。節点抽出部330は、階層を抽出する基点となる部署を識別する部署コード、及び当該部署より下位及び上位のいずれの階層にある部署を抽出するか示す情報を取得する。節点抽出部330が下位の階層にある部署を抽出する旨の情報を取得した場合、節点抽出部330は、当該部署コードに対応づけられた自階層レベル及び階層レベルN識別子の値を抽出する。なお、節点抽出部330は、当該自階層レベル及び階層レベルN識別子の値を、一のSQLを実行することで抽出することができる。例えば、東日本支社の自階層レベル及び階層レベルN識別子を抽出する場合、"select * from 部署階層テーブル where 部署コード=東日本支社"のようなSQLで抽出することができる。
そして、節点抽出部330は、抽出した自階層レベルにおける部署を識別する階層レベルN識別子の値を、当該自階層レベルの階層レベルN識別子フィールドの値として持つレコードの部署コードを部署階層テーブル2600から抽出する。ただし、Nは、抽出した自階層レベルの値が示す階層の階層レベルを示す値である。例えば、基準となる部署が東日本支社である場合、自階層レベルの値は1であり、節点抽出部330は、階層レベル1識別子の値である2を、階層レベル1識別子フィールドの値として持つレコードの部署コードを抽出する。
この場合にも、節点抽出部330は、一のSQLにより、複数の部署コードを抽出することができる。例えば、東日本支社より下位の部署及び東日本支社を識別する部署コードを抽出する場合、東日本支社の自階層レベルは1であり、それに対応する階層レベル1識別子が2であることが分かっているので、節点抽出部330は、"select 部署コード from 部署階層テーブル where 階層レベル1識別子=2"のようなSQLによって、当該部署コードを抽出することができる。これにより、節点抽出部330は、東日本支社、関東事業部、東北事業部、営業部、及び建設部を識別する識別コードを抽出することができる。このようにして、節点抽出部330は、指定された部署及び当該指定された部署より下位の部署を識別する部署コードを一気に抽出することができる。また、必要であれば、節点抽出部330は、自階層レベルの値を制限することで、指定された部署より予め定められた階層より下位の部署コードを一気に抽出することができることは言うまでもない。例えば、上記SQLのwhere句を、"where 階層レベル1識別子=2 AND 自階層レベル>2"等のように代えれば、階層レベルが2以下の部署だけを選択的に抽出することができる。
一方、節点抽出部330が上位の階層にある部署を抽出する旨の情報を取得した場合、節点抽出部330は、当該部署コードに対応づけられた自階層レベル及び階層レベルN識別子の値を抽出する。なお、節点抽出部330は、当該自階層レベル及び階層レベルN識別子の値を、一のSQLを実行することで抽出することができる。例えば、営業部の自階層レベル及び階層レベルN識別子を抽出する場合、"select * from 部署階層テーブル where 部署コード=営業部"のようなSQLで抽出することができる。
そして、節点抽出部330は、抽出した自階層レベルより上の階層レベルを示す階層レベルN識別子フィールドの値として、抽出した階層レベルN識別子の値を持ち、かつ、自階層レベルフィールドの値として、当該抽出した自階層レベルより上の階層レベルを持つレコードの部署コードを部署階層テーブル2600から抽出する。ただし、Nは、抽出した自階層レベルの値が示す階層の階層レベルより上位の階層レベルを示す値である。例えば、基準となる部署が営業部である場合、節点抽出部330は、階層レベル1識別子及び階層レベル2識別子フィールドの値として、それぞれ2及び21を持つレコードの部署コードを抽出する。
この場合にも、節点抽出部330は、一のSQLにより、複数の部署コードを抽出することができる。例えば、営業部より上位の部署を識別する部署コードを抽出する場合、営業部の自階層レベルは3であり、それより上位の階層レベル1識別子及び階層レベル2識別子がそれぞれ2及び21であることが分かっているので、節点抽出部330は、"select 部署コード from 部署階層テーブル where (階層レベル1識別子=2 and 自階層レベル=1) or (階層レベル2識別子=21 and 自階層レベル=2)"のようなSQLによって、当該部署コードを抽出することができる。これにより、節点抽出部330は、関東事業部及び東日本支社を識別する識別コードを抽出することができる。このようにして、節点抽出部330は、指定された部署より上位の1以上の部署コードを一気に抽出することができる。また、必要であれば、節点抽出部330は、自階層レベルの値を制限することで、指定された部署から予め定められた階層より上位の部署コードを一気に抽出することができることは言うまでもない。
上記のようにして節点抽出部330が抽出した部署コードは、節点出力部340から制御部220に提供される。なお、本図の例では、部署階層テーブル2600は、5階層の部署の階層構造を格納している。しかしながら、部署階層テーブル2600が、階層レベル5識別子よりもさらに深い階層レベルを識別する識別子を示すフィールドを有することで、6階層以上の階層構造を表現するよう拡張することができることは言うまでもない。また、本実施形態では、部署の階層構造を例に挙げて説明したが、節点情報格納部320は、部署階層に限らず、階層構造であればどのような構造も表現することができることは言うまでもない。このように、節点抽出部330は、3階層以上の階層にわたる複数の節点を有するツリー構造において、特定の節点から上位又は下位の複数の階層にわたって辿ることができる複数の節点を、高速に検索することができる。
以上、ワークフロー管理装置110が一の会社組織内におけるビジネスプロセスを管理する場合の動作の一例を説明した。しかしながら、ワークフロー管理装置110が複数の会社組織にわたるビジネスプロセスを管理することができることは言うまでもない。例えば、所属テーブル1200のような会社組織に依存する情報を格納する各種テーブルが、会社組織を識別する情報をさらに格納することで、複数の会社組織にわたってビジネスプロセスを進行させることができる。また、ある日を境に部署が大きく改廃され、大幅に異なる新たな組織構造で会社が運営される場合がある。このような場合に対処すべく、ワークフロー管理装置110は、組織のバージョンを管理してよい。例えば、所属テーブル1200のような組織構造に依存する情報を格納する各種テーブルが、組織のバージョンを識別する情報をさらに格納することで、ワークフロー管理サーバ120は、改廃前の組織構造において既に開始されたビジネスプロセスを適切に進行させることができる。
他にも、会社組織という実体のある組織ではなく、会社横断のプロジェクトチームや製品研究チームのように、仮想的な組織を対象にビジネスプロセスを進めることが必要な場合がある。ワークフロー管理装置110は、所属テーブル1200、役職テーブル1210、及び部署テーブル1300のような会社組織を特定するテーブルの他に、所属テーブル1200、役職テーブル1210、及び部署テーブル1300と同種の情報を有し、仮想的な組織を表すテーブルをさらに有してもよい。そして、回議ノードテーブル700のノードタイプの値として、"会社組織"ではなく"仮想組織"とすることで、ワークフロー管理サーバ120は、仮想組織の部署構造、役職構造に応じて、業務単位の実行者を決定することができる。例えば、実際の会社組織において役職のない社員190が、実際の会社組織において役職のある社員(以下、役職社員と呼ぶ。)の上司であるような仮想組織を構築することができる。そして、役職社員が仮想組織の中で経費申請する場合、まず仮想組織において上司である社員が承認し、その次に、実際の会社組織おける役職社員の上司が承認するというビジネスプロセスを構築することができる。このように、ワークフロー管理装置110は、仮想組織と会社組織にまたがるビジネスプロセスを適切に進めることができる。
図27は、ワークフロー管理装置110のハードウェア構成の一例を示す。ワークフロー管理装置110は、ホスト・コントローラ1582により相互に接続されるCPU1505、RAM1520、グラフィック・コントローラ1575、及び表示装置1580を有するCPU周辺部と、入出力コントローラ1584によりホスト・コントローラ1582に接続される通信インターフェイス1530、ハードディスクドライブ1540、及びCD−ROMドライブ1560を有する入出力部と、入出力コントローラ1584に接続されるROM1510、フレキシブルディスク・ドライブ1550、及び入出力チップ1570を有するレガシー入出力部とを備える。
ホスト・コントローラ1582は、RAM1520と、高い転送レートでRAM1520をアクセスするCPU1505、及びグラフィック・コントローラ1575とを接続する。CPU1505は、ROM1510、及びRAM1520に格納されたプログラムに基づいて動作し、各部の制御を行う。グラフィック・コントローラ1575は、CPU1505等がRAM1520内に設けたフレーム・バッファ上に生成する画像データを取得し、表示装置1580上に表示させる。これに代えて、グラフィック・コントローラ1575は、CPU1505等が生成する画像データを格納するフレーム・バッファを、内部に含んでもよい。
入出力コントローラ1584は、ホスト・コントローラ1582と、比較的高速な入出力装置であるハードディスクドライブ1540、通信インターフェイス1530、CD−ROMドライブ1560を接続する。ハードディスクドライブ1540は、CPU1505が使用するプログラム、及びデータを格納する。通信インターフェイス1530は、ネットワーク通信装置1598に接続してプログラムまたはデータを送受信する。CD−ROMドライブ1560は、CD−ROM1595からプログラムまたはデータを読み取り、RAM1520を介してハードディスクドライブ1540、及び通信インターフェイス1530に提供する。
また、入出力コントローラ1584には、ROM1510と、フレキシブルディスク・ドライブ1550、及び入出力チップ1570の比較的低速な入出力装置とが接続される。ROM1510は、ワークフロー管理装置110が起動時に実行するブート・プログラムや、ワークフロー管理装置110のハードウェアに依存するプログラム等を格納する。フレキシブルディスク・ドライブ1550は、フレキシブルディスク1590からプログラムまたはデータを読み取り、RAM1520を介してハードディスクドライブ1540、及び通信インターフェイス1530に提供する。入出力チップ1570は、フレキシブルディスク・ドライブ1550や、例えばパラレル・ポート、シリアル・ポート、キーボード・ポート、マウス・ポート等を介して各種の入出力装置を接続する。
CPU1505が実行するプログラムは、フレキシブルディスク1590、CD−ROM1595、またはICカード等の記録媒体に格納されて利用者によって提供される。記録媒体に格納されたプログラムは圧縮されていても非圧縮であってもよい。プログラムは、記録媒体からハードディスクドライブ1540にインストールされ、RAM1520に読み出されてCPU1505により実行される。
ワークフロー管理装置110にインストールされて実行されるプログラムは、ワークフロー管理装置110を、図1から図27に関連して説明した、制御情報格納部200、制御部220、情報変更部260、出力部290、組織検索部300、実行者情報格納部202、プロセス情報格納部204、組織情報格納部206、実行者格納部208、期限格納部210、平均処理時間格納部212、証跡情報格納部214、エラー情報格納部216、実行者選択部222、予定実行者選択部225、プロセス生成部230、作業単位特定部240、基準時間幅設定部250、情報変更部260、及び実行内容抽出部270、組織情報変更部262及び実行者属性変更部264、実行順差抽出部272、実行内容選択部274、特定実行者入力部282、予定実行者出力部292、実行内容出力部294、及び通知部296として機能させる。
以上に示したプログラムは、外部の記憶媒体に格納されてもよい。記憶媒体としては、フレキシブルディスク1590、CD−ROM1595の他に、DVDやPD等の光学記録媒体、MD等の光磁気記録媒体、テープ媒体、ICカード等の半導体メモリ等を用いることができる。また、専用通信ネットワークやインターネットに接続されたサーバシステムに設けたハードディスクまたはRAM等の記憶装置を記録媒体として使用し、ネットワークを介してプログラムをワークフロー管理装置110に提供してもよい。
以上、本発明を実施の形態を用いて説明したが、本発明の技術的範囲は上記実施の形態に記載の範囲には限定されない。上記実施の形態に、多様な変更または改良を加え得ることが当業者に明らかである。その様な変更または改良を加えた形態も本発明の技術的範囲に含まれ得ることが、特許請求の範囲の記載から明らかである。