(57)【要約】【課題】実行中にプロセスを自由に変更することのできるワークフローシステムを提供する。【解決手段】個々の仕事であるアクティビティと当該アクティビティの処理の順序を規定するトランジションとから構成されるプロセスを実行するワークフローシステムであって、実行中の上記プロセスを停止する手段と、停止した上記プロセスを編集する手段と、編集された上記プロセスの整合性をチェックする手段と、編集された上記プロセスの再開位置を決定する手段と、編集された上記プロセスを上記再開位置から再開する手段とを備える。【選択図】図７
2007004776.tif 000002
【特許請求の範囲】
【請求項１】
個々の仕事であるアクティビティと当該アクティビティの処理の順序を規定するトランジションとから構成されるプロセスを実行するワークフローシステムであって、
実行中の上記プロセスを停止する手段と、
停止した上記プロセスを編集する手段と、
編集された上記プロセスの整合性をチェックする手段と、
編集された上記プロセスの再開位置を決定する手段と、
編集された上記プロセスを上記再開位置から再開する手段とを備えたことを特徴とするワークフローシステム。
【請求項２】
上記プロセスの整合性をチェックする手段は、上記アクティビティの参照もしくは更新するプロセス変数の有無および値、当該プロセス変数に対する業務遂行者の操作権限の有無により整合性をチェックすることを特徴とする請求項１に記載のワークフローシステム。
【請求項３】
上記プロセスの整合性をチェックする手段は、トランザクションの場合、並行するトランザクションの発火条件のＯＲをとった場合に全て可能なプロセス変数の場合を網羅しているかをチェックすることを特徴とする請求項２に記載のワークフローシステム。
【請求項４】
上記プロセスの整合性をチェックする手段は、一つでも実行される可能性がないアクティビティが見つかった場合に警告を出し、編集完了を許さずに再編集を求めることを特徴とする請求項２に記載のワークフローシステム。
【請求項５】
上記プロセスの整合性をチェックする手段は、終端のアクティビティに到達できない場合にエラーとし、編集完了を許さずに再編集を求めることを特徴とする請求項２に記載のワークフローシステム。
【請求項６】
上記プロセスの再開位置を決定する手段は、上記プロセスを構成する最初のアクティビティからトランジションもしくはアクティビティをたどり、プロセス変数の変更履歴を参照してトランジションもしくはアクティビティの終了条件を満足したことが一度もない場合にそのトランジションもしくはアクティビティを再開位置とすることを特徴とする請求項１に記載のワークフローシステム。
【請求項７】
上記プロセスの再開位置を決定する手段は、終了条件を満足したことが一度でもあるアクティビティが最後のアクティビティである場合にプロセスが終了したと判断することを特徴とする請求項６に記載のワークフローシステム。
【請求項８】
上記プロセスを停止する手段は、上記プロセスの状態を保留にすることでプロセスを停止することを特徴とする請求項１に記載のワークフローシステム。
【請求項９】
上記プロセスを停止する手段は、上記プロセスの状態を中断にすることでプロセスを停止することを特徴とする請求項１に記載のワークフローシステム。
【請求項１０】
上記プロセスを編集する手段は、アクティビティの追加、削除、順序の変更、プロセス変数の追加、削除、プロセスの終了条件の変更、プロセス変数の値の変更を含む、プロセスの全ての構成要素の変更を含むことを特徴とする請求項１に記載のワークフローシステム。
【請求項１１】
上記プロセスを編集する手段は、アクティビティもしくはトランジションの追加の場合に当該アクティビティもしくはトランジションが参照もしくは更新するプロセス変数のカウント値をインクリメントし、アクティビティもしくはトランジションの削除の場合に当該アクティビティもしくはトランジションが参照もしくは更新していたプロセス変数のカウント値をデクリメントし、カウント値がゼロになったプロセス変数を削除することを特徴とする請求項１に記載のワークフローシステム。
【請求項１２】
編集者の権限をチェックする手段を備え、上記プロセスを構成するオブジェクト毎に編集を行えるユーザもしくはグループと操作権限を示すアクセスコントロールとを含むアクセスコントロールリストに従って権限をチェックすることを特徴とする請求項１に記載のワークフローシステム。
【請求項１３】
編集が行われ実体化されたプロセスインスタンスフローをプロセス定義に変換し、当該プロセス定義を再利用のために登録する手段を備えたことを特徴とする請求項１に記載のワークフローシステム。
【請求項１４】
個々の仕事であるアクティビティと当該アクティビティの処理の順序を規定するトランジションとから構成されるプロセスを実行するワークフローシステムにおける処理方法であって、
実行中の上記プロセスを停止する工程と、
停止した上記プロセスを編集する工程と、
編集された上記プロセスの整合性をチェックする工程と、
編集された上記プロセスの再開位置を決定する工程と、
編集された上記プロセスを上記再開位置から再開する工程とを備えたことを特徴とするワークフロー処理方法。
【請求項１５】
個々の仕事であるアクティビティと当該アクティビティの処理の順序を規定するトランジションとから構成されるプロセスを実行するワークフローシステムにおける処理プログラムであって、
実行中の上記プロセスを停止する手順と、
停止した上記プロセスを編集する手順と、
編集された上記プロセスの整合性をチェックする手順と、
編集された上記プロセスの再開位置を決定する手順と、
編集された上記プロセスを上記再開位置から再開する手順とを、コンピュータに実行させることを特徴とするワークフロー処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はワークフローシステム、ワークフロー処理方法およびワークフロー処理プログラムに関する。
【背景技術】
【０００２】
近年、複数の担当者がネットワークを経由して仕事をする際に、仕事を円滑に進めるため、担当者間で受け渡すドキュメントや情報の流れを管理し、自動化するワークフローシステムが知られている（例えば、非特許文献１〜３参照。）。
【非特許文献１】速水治夫、「ここまできたワークフロー管理システム（１）」情報処理学会誌、Ｖｏｌ．３９、ＮＯ．１１、ｐ１１６０−ｐ１１６５（１９９８）
【非特許文献２】速水治夫、阪口俊昭、渋谷亮一、「ここまできたワークフロー管理システム（２）」情報処理学会誌、Ｖｏｌ．３９、ＮＯ．１２、ｐ１２５８−ｐ１２６３（１９９８）
【非特許文献３】速水治夫、渋谷亮一、鈴木登雄、生駒順一、寺下陽介、植野直樹、金子聡、林潔、「ここまできたワークフロー管理システム（３）」情報処理学会誌  Ｖｏｌ．４０、ＮＯ．５、ｐ５０７−ｐ５１３（１９９９）
【発明の開示】
【発明が解決しようとする課題】
【０００３】
ところで、上述した従来のワークフローシステムは、予めシステム管理者により定義された固定的なワークフローを実行するのみであり、定義されているワークフローと異なる方法で実際の仕事を進めるといった柔軟な対応が行えないという問題があった。
【０００４】
かかる問題点に対応すべく、本発明者は、実行中のプロセスにアクティビティを追加、保留、先取りすることにより、実行中に柔軟にプロセスを変更する手法を提案している（特願２００５−９２６５号）。
【０００５】
しかしながら、この手法ではプロセスに対して操作できる範囲がアクティビティの追加、保留、先取りに限られており、アクティビティの削除を認めていなかったことから、エンドユーザの立場からは十分なものではなかった。
【０００６】
本発明は上記の点に鑑み提案されたものであり、その目的とするところは、実行中にプロセスを自由に変更することのできるワークフローシステム、ワークフロー処理方法およびワークフロー処理プログラムを提供することにある。
【課題を解決するための手段】
【０００７】
上記の課題を解決するため、本発明にあっては、請求項１に記載されるように、個々の仕事であるアクティビティと当該アクティビティの処理の順序を規定するトランジションとから構成されるプロセスを実行するワークフローシステムであって、実行中の上記プロセスを停止する手段と、停止した上記プロセスを編集する手段と、編集された上記プロセスの整合性をチェックする手段と、編集された上記プロセスの再開位置を決定する手段と、編集された上記プロセスを上記再開位置から再開する手段とを備えるワークフローシステムを要旨としている。
【０００８】
また、請求項２に記載されるように、上記プロセスの整合性をチェックする手段は、上記アクティビティの参照もしくは更新するプロセス変数の有無および値、当該プロセス変数に対する業務遂行者の操作権限の有無により整合性をチェックするものとすることができる。
【０００９】
また、請求項３に記載されるように、上記プロセスの整合性をチェックする手段は、トランザクションの場合、並行するトランザクションの発火条件のＯＲをとった場合に全て可能なプロセス変数の場合を網羅しているかをチェックするものとすることができる。
【００１０】
また、請求項４に記載されるように、上記プロセスの整合性をチェックする手段は、一つでも実行される可能性がないアクティビティが見つかった場合に警告を出し、編集完了を許さずに再編集を求めるものとすることができる。
【００１１】
また、請求項５に記載されるように、上記プロセスの整合性をチェックする手段は、終端のアクティビティに到達できない場合にエラーとし、編集完了を許さずに再編集を求めるものとすることができる。
【００１２】
また、請求項６に記載されるように、上記プロセスの再開位置を決定する手段は、上記プロセスを構成する最初のアクティビティからトランジションもしくはアクティビティをたどり、プロセス変数の変更履歴を参照してトランジションもしくはアクティビティの終了条件を満足したことが一度もない場合にそのトランジションもしくはアクティビティを再開位置とするものとすることができる。
【００１３】
また、請求項７に記載されるように、上記プロセスの再開位置を決定する手段は、終了条件を満足したことが一度でもあるアクティビティが最後のアクティビティである場合にプロセスが終了したと判断するものとすることができる。
【００１４】
また、請求項８に記載されるように、上記プロセスを停止する手段は、上記プロセスの状態を保留にすることでプロセスを停止するものとすることができる。
【００１５】
また、請求項９に記載されるように、上記プロセスを停止する手段は、上記プロセスの状態を中断にすることでプロセスを停止するものとすることができる。
【００１６】
また、請求項１０に記載されるように、上記プロセスを編集する手段は、アクティビティの追加、削除、順序の変更、プロセス変数の追加、削除、プロセスの終了条件の変更、プロセス変数の値の変更を含む、プロセスの全ての構成要素の変更を含むものとすることができる。
【００１７】
また、請求項１１に記載されるように、上記プロセスを編集する手段は、アクティビティもしくはトランジションの追加の場合に当該アクティビティもしくはトランジションが参照もしくは更新するプロセス変数のカウント値をインクリメントし、アクティビティもしくはトランジションの削除の場合に当該アクティビティもしくはトランジションが参照もしくは更新していたプロセス変数のカウント値をデクリメントし、カウント値がゼロになったプロセス変数を削除するものとすることができる。
【００１８】
また、請求項１２に記載されるように、編集者の権限をチェックする手段を備え、上記プロセスを構成するオブジェクト毎に編集を行えるユーザもしくはグループと操作権限を示すアクセスコントロールとを含むアクセスコントロールリストに従って権限をチェックするものとすることができる。
【００１９】
また、請求項１３に記載されるように、編集が行われ実体化されたプロセスインスタンスフローをプロセス定義に変換し、当該プロセス定義を再利用のために登録する手段を備えるものとすることができる。
【００２０】
また、請求項１４に記載されるように、個々の仕事であるアクティビティと当該アクティビティの処理の順序を規定するトランジションとから構成されるプロセスを実行するワークフローシステムにおける処理方法であって、実行中の上記プロセスを停止する工程と、停止した上記プロセスを編集する工程と、編集された上記プロセスの整合性をチェックする工程と、編集された上記プロセスの再開位置を決定する工程と、編集された上記プロセスを上記再開位置から再開する工程とを備えるワークフロー処理方法として構成することができる。
【００２１】
また、請求項１５に記載されるように、個々の仕事であるアクティビティと当該アクティビティの処理の順序を規定するトランジションとから構成されるプロセスを実行するワークフローシステムにおける処理プログラムであって、実行中の上記プロセスを停止する手順と、停止した上記プロセスを編集する手順と、編集された上記プロセスの整合性をチェックする手順と、編集された上記プロセスの再開位置を決定する手順と、編集された上記プロセスを上記再開位置から再開する手順とを、コンピュータに実行させるワークフロー処理プログラムとして構成することができる。
【発明の効果】
【００２２】
本発明のワークフローシステム、ワークフロー処理方法およびワークフロー処理プログラムにあっては、プロセスを停止した上でプロセスを編集し、プロセスの整合性をチェックし、プロセスの再開位置を決定して再開するようにしているため、エンドユーザにより不適切にプロセスが変更されることを防止することができ、実行可能性を担保した上で実行中にプロセスを自由に変更することができる。
【発明を実施するための最良の形態】
【００２３】
以下、本発明の好適な実施形態につき図面を参照して説明する。
【００２４】
＜プロセスの概要＞
図１はプロセスの構成要素を示す図であり、プロセスはアクティビティとトランジションとから構成される。なお、ワークフローシステムで用いられる用語については、"Workflow Management Coalition The Workflow Reference Model"（http://www.wfmc.org/standards/docs/tc003v11.pdf）および"Workflow Management Coalition Workflow Standard/Process Definition Interface -- XML Process Definition Language"（http://www.wfmc.org/standards/docs/TC-1025_xpdl_2_2005-10-03.pdf）に詳細な定義がある。
【００２５】
プロセスとは、ある仕事を遂行するための処理の流れである。プロセスにはプロセスの状態を記述するプロセス変数が定義される。プロセス変数はアクティビティの開始条件、終了条件、トランジションの発火条件、プロセスの終了条件として使用される。アクティビティの開始条件、終了条件は、アクティビティ毎の開始、終了を判定するための条件である。トランジションの発火条件は、主に複数のアクティビティに分岐する場合の分岐条件を判定するために用いる。プロセスの終了条件は、プロセス全体が終了したかどうかを判定するために使用する。なお、後述するプロセスインスタンスフローの変更の前後で、明示的に変更しない限り、プロセス変数の値は保持される。
【００２６】
アクティビティとは、プロセスを構成する個々の仕事である。アクティビティは未実行、完了、処理待ちなどの状態を持っており、この状態の推移によってプロセスの進行状況を表現する。アクティビティには開始条件および終了条件があり、主にプロセス変数を用いた条件式で記述される。なお、アクティビティの実行結果はプロセス変数に格納され、プロセス変数の変更履歴もログとして残るようになっている。
【００２７】
トランジションとは、アクティビティとアクティビティとの処理の順序を規定するものである。トランジションも状態を持っており、これにより、接続するアクティビティの状態遷移条件を決定する。トランジションの前のアクティビティから次のアクティビティに遷移する条件をトランジションの発火条件と呼ぶ。トランジションの発火条件は主にプロセス変数を用いた条件式で記述される。
【００２８】
フローとは、アクティビティとトランジションとで表現した処理の流れ図である。
【００２９】
プロセス定義とは、プロセスのテンプレートであり、実行前のプロセスのフローを定義する。
【００３０】
プロセスインスタンスとは、プロセス定義を実体化したものであり、実際の仕事のコンテンツを含んでいる。
【００３１】
プロセスインスタンスフローとは、実行中のプロセスのフローである。プロセスインスタンスフローは、プロセスインスタンスのフロー定義であり、通常は元になったプロセス定義と同じものである。ただし、本発明では、プロセスインスタンスフローとプロセス定義とを異なる実体として扱い、個別に操作可能とする。すなわち、プロセスインスタンスフローを変更した場合、変更はプロセス定義に反映されることはない。また、プロセス定義に対する変更は、既にインスタンス化されたプロセス（プロセスインスタンス）に反映されることはない。
【００３２】
図２はプロセスの状態遷移を示す図であり、「未実行（ＮＯＴＡＣＴＩＶＡＴＥＤ）」、「処理中（ＡＣＴＩＶＡＴＥＤ）」、「保留（ＳＵＳＰＥＮＤＥＤ）」、「完了（ＣＯＭＰＬＥＴＥＤ）」の状態を有している。ここで、「処理中」のプロセスを停止することで「保留」に移行し、プロセスの再開により「処理中」に復帰する。また、プロセスの「保留」はアクティビティの「保留」と同期する。
【００３３】
図３はアクティビティの状態遷移を示す図であり、「未実行（ＮＯＴＡＣＴＩＶＡＴＥＤ）」、「処理待ち（ＷＡＩＴＩＮＧ）」、「処理中（ＡＣＴＩＶＡＴＥＤ）」、「完了（ＣＯＭＰＬＥＴＥＤ）」、「保留（ＳＵＳＰＥＮＤＥＤ）」の状態を有している。「未実行」のアクティビティは接続する前のトランジションが発火し、かつアクティビティの開始条件が整った場合に「処理待ち」に移行する。「処理待ち」のアクティビティはアクティビティに対応するワークフローアプリケーション（後述）からアクティビティの開始を指示された場合に「処理中」に移行する。「処理中」のアクティビティはワークフローアプリケーションからアクティビティの完了を指示された場合に「完了」に移行する。「未実行」、「処理待ち」、「処理中」、「完了」の状態にあるアクティビティは、プロセスの「保留」と同期して「保留」となり、プロセスが「処理中」に復帰するのと同期して元の状態に復帰する。
【００３４】
図４はトランジションの状態遷移を示す図であり、「ＯＦＦ」、「ＯＮ」の状態を有している。「ＯＦＦ」のトランジションは始点のアクティビティの状態が「完了」に変化し、かつトランジションの発火条件を満たした場合に「ＯＮ」に移行する。「ＯＮ」のトランジションは終点のアクティビティの状態が「処理待ち」から「処理中」に変化した場合に再び「ＯＦＦ」に移行する。
【００３５】
＜システム構成＞
図５はワークフローシステムの構成例を示す図であり、ワークフローシステムを利用する業務遂行者が主に使用するクライアント１Ａ、１Ｂ、１Ｃ、・・およびワークフローシステムの機能を提供するサーバ２Ａ、２Ｂ、・・がネットワーク３に接続される形態となっている。
【００３６】
図６は図５におけるクライアントおよびサーバのハードウェア構成の例を示す図であり、それぞれバス１００で相互に接続される入力装置１０１と、表示装置１０２と、ドライブ装置１０３と、記録媒体１０４と、ＲＯＭ（Read Only Memory）１０５と、ＲＡＭ（Random Access Memory）１０６と、ＣＰＵ（Central Processing Unit）１０７と、インタフェース装置１０８と、ＨＤＤ（Hard Disk Drive）１０９とから構成されている。
【００３７】
入力装置１０１は、クライアントもしくはサーバの利用者により操作されるキーボードおよびマウス等で構成され、クライアントもしくはサーバに各種操作信号を入力するのに用いられる。表示装置１０２は、クライアントもしくはサーバの利用者が利用するディスプレイ等で構成され、各種情報を表示する。インタフェース装置１０８は、クライアントもしくはサーバをネットワーク等に接続するインタフェースである。
【００３８】
後述するソフトウェアに対応するプログラムは、例えばＣＤ−ＲＯＭ等の記録媒体１０４によってクライアントもしくはサーバに提供されるか、ネットワークを通じてダウンロードされる。記録媒体１０４は、ドライブ装置１０３にセットされ、プログラムが記録媒体１０４からドライブ装置１０３を介してＨＤＤ１０９にインストールされる。
【００３９】
ＲＯＭ１０５は、データ等を格納する。ＲＡＭ１０６は、クライアントもしくはサーバの起動時にＨＤＤ１０９からプログラム等を読み出して格納する。ＣＰＵ１０７は、ＲＡＭ１０６に読み出され格納されたプログラム等に従って処理を実行する。
【００４０】
図７はワークフローシステムのソフトウェア構成例を示す図である。図７において、ワークフローシステムは、クライアント側に設けられるプロセス定義ツール１１、プロセス実行時編集ツール１２、ワークフローアプリケーション１３と、サーバ側に設けられるプロセス定義管理部２１、プロセス定義データベース２２、ワークフローエンジン２３、プロセスインスタンスデータベース２４、プロセスオブジェクトＡＣＬ（Access Control List）データベース２５とを備えている。
【００４１】
プロセス定義ツール１１は、プロセス定義を行うツールであり、プロセス定義管理部２１を介して、プロセス定義データベース２２にプロセス定義を登録したり、プロセス定義データベース２２からプロセス定義を取得したりする。また、プロセス定義ツール１１は、ワークフローエンジン２３を介して、プロセスインスタンスデータベース２４よりプロセスインスタンスフローを抽出し、例えば抽出したプロセスインスタンスフローを編集し、編集したプロセスインスタンスフローをプロセス定義としてプロセス定義管理部２１を介してプロセス定義データベース２２に登録する。
【００４２】
プロセス定義管理部２１は、プロセス定義データベース２２に格納されているプロセス定義を管理する管理部であって、プロセス定義ツール１１からの要求に基づいて、対応するプロセス定義をプロセス定義データベース２２から取得したり、対応するプロセス定義をプロセス定義データベース２２に登録したりする。
【００４３】
プロセス定義データベース２２は、プロセス定義を格納するデータベースであり、後述する各種のテーブルを備える。
【００４４】
プロセス実行時編集ツール１２は、プロセスインスタンスフローを編集するツールであり、ワークフローエンジン２３を介して、プロセスインスタンスデータベース２４よりプロセスインスタンスフローを取得したり、取得したプロセスインスタンスフローを編集し、編集したプロセスインスタンスフローを、ワークフローエンジン２３を介してプロセスインスタンスデータベース２４に格納し、プロセスインスタンスフローを更新したりする。なお、プロセスインスタンスフローの編集には、アクティビティの追加、削除、順序の変更、プロセス変数の追加、削除、プロセスの終了条件の変更、プロセス変数の値の変更を含む、プロセスの全ての構成要素の変更を含む。
【００４５】
ワークフローアプリケーション１３は、アクティビティを実行するアプリケーションであり、ワークフローエンジン２３を介して、プロセスインスタンスデータベース２４に格納されている対応するプロセスインスタンスのプロセス情報やプロセスステータスを取得したり、プロセス変数を更新したりする。また、ワークフローアプリケーション１３は、ワークフローエンジン２３を介して、プロセス定義データベース２２よりプロセス定義を取得し、そのプロセス定義に基づいて、プロセスのインスタンス化を行い、インスタンス化されたプロセスをプロセスインスタンスデータベース２４に格納する処理等も行う。
【００４６】
ワークフローエンジン２３は、ワークフローアプリケーション１３からの要求に応じてプロセス定義データベース２２より対応するプロセス定義を取得し、そのプロセス定義に基づいて、プロセスのインスタンス化を行い、プロセスインスタンスデータベース２４に格納したり、ワークフローアプリケーション１３からの要求に基づいて、対応するプロセスインスタンスのプロセス情報やプロセスステータスをプロセスインスタンスデータベース２４より取得したり、プロセスインスタンスデータベース２４に格納されている対応するプロセスインスタンスのプロセス変数を更新したりする。
【００４７】
また、ワークフローエンジン２３は、プロセス実行時編集ツール１２またはプロセス定義ツール１１からの要求に応じて、プロセスインスタンスデータベース２４よりプロセスインスタンスフローを抽出したり、プロセス実行時編集ツール１２からの要求に応じて、プロセスインスタンスデータベース２４に格納されているプロセスインスタンスフローを更新したりする。また、ワークフローエンジン２３は、プロセス実行時編集ツール１２からのプロセスインスタンスフロー更新の要求等に応じて、プロセスオブジェクトＡＣＬデータベース２５において格納され管理されている、対応するプロセスオブジェクトに対するアクセス権等を参照し、要求元のユーザまたはグループに有効なアクセス権が存在するか否かを判定する。
【００４８】
プロセスインスタンスデータベース２４は、プロセスインスタンスを格納するデータベースであり、後述する各種のテーブルを備える。
【００４９】
プロセスオブジェクトＡＣＬデータベース２５は、プロセスオブジェクトに対するアクセス権等を格納し管理する。
【００５０】
なお、上述したように、プロセス定義ツール１１、プロセス実行時編集ツール１２、ワークフローアプリケーション１３等はクライアント側に実装され、プロセス定義管理部２１、プロセス定義データベース２２、ワークフローエンジン２３、プロセスインスタンスデータベース２４、プロセスオブジェクトＡＣＬデータベース２５等はサーバ側に実装される。また、プロセス定義ツール１１、プロセス実行時編集ツール１２、ワークフローアプリケーション１３、プロセス定義管理部２１、プロセス定義データベース２２、ワークフローエンジン２３、プロセスインスタンスデータベース２４、プロセスオブジェクトＡＣＬデータベース２５等を、Ｗｅｂサービスとして実装するようにしてもよい。このような構成とした場合、クライアントとサーバとの間では、ＸＭＬ（eXtensible Markup Language）やＨＴＴＰ（HyperText Transfer Protocol）をベースとしたＳＯＡＰ（Simple Object Access Protocol）等に従って、通信が行われる。
【００５１】
図８はプロセス定義データベース２２に設けられるプロセス定義テーブル２２１の例を示す図であり、プロセス定義を識別する「プロセス定義ＩＤ」フィールドと、プロセス定義の名前を示す「名前」フィールドと、プロセスの終了条件を示す「終了条件」フィールドと、プロセス定義が利用可能であるか否かを示す「状態」フィールドとを有している。
【００５２】
図９はプロセス定義データベース２２に設けられるアクティビティ定義テーブル２２２の例を示す図であり、アクティビティ定義を識別する「アクティビティ定義ＩＤ」フィールドと、アクティビティを収容するプロセス定義を示す「プロセス定義ＩＤ」フィールドと、アクティビティに対応するワークフローアプリケーションを示す「アプリケーションＩＤ」フィールドと、アクティビティ定義の名前を示す「名前」フィールドと、アクティビティの開始条件を示す「開始条件」フィールドと、アクティビティの終了条件を示す「終了条件」フィールドとを有している。なお、「開始条件」および「終了条件」における「％」はプロセス変数定義を示し、「＃」はアクティビティ変数定義を示している。
【００５３】
図１０はプロセス定義データベース２２に設けられるトランジション定義テーブル２２３の例を示す図であり、トランジション定義を識別する「トランジション定義ＩＤ」フィールドと、トランジションを収容するプロセス定義を示す「プロセス定義ＩＤ」フィールドと、トランジションの始点側のアクティビティ定義を示す「Ｆｒｏｍアクティビティ定義ＩＤ」フィールドと、トランジションの終点側のアクティビティ定義を示す「Ｔｏアクティビティ定義ＩＤ」フィールドと、トランジションの発火条件を示す「発火条件」フィールドとを有している。
【００５４】
図１１はプロセス定義データベース２２に設けられるプロセス変数定義テーブル２２４の例を示す図であり、プロセス変数定義を識別する「プロセス変数定義ＩＤ」フィールドと、対応するプロセス定義を示す「プロセス定義ＩＤ」フィールドと、プロセス変数の名前を示す「プロセス変数名」フィールドと、プロセス変数の型を示す「変数型」フィールドとを有している。なお、このプロセス変数定義テーブル２２４は、プロセス変数の雛形（テンプレート）を保持することで、よく使うプロセス変数を再利用しやすくするためのものである。
【００５５】
図１２はプロセス定義データベース２２に設けられるアクティビティ変数定義テーブル２２５の例を示す図であり、アクティビティ変数定義を識別する「アクティビティ変数定義ＩＤ」フィールドと、対応するプロセス定義を示す「プロセス定義ＩＤ」フィールドと、対応するアクティビティ定義を示す「アクティビティ定義ＩＤ」フィールドと、アクティビティ変数の名前を示す「アクティビティ変数名」フィールドと、対応するワークフローアプリケーションのパラメータを示す「アプリケーションパラメータ番号」フィールドと、アクティビティ変数の型を示す「変数型」フィールドとを有している。なお、「アプリケーションパラメータ番号」は、後述するアプリケーション定義テーブル２２７のパラメータリストに記述されているパラメータ番号と対応し、対応しない場合はＮＵＬＬ値となる。
【００５６】
図１３はプロセス定義データベース２２に設けられるプロセス変数定義参照テーブル２２６の例を示す図であり、アクティビティ定義もしくはトランジション定義を示す「アクティビティ定義ＩＤ・トランジション定義ＩＤ」フィールドと、アクティビティもしくはトランジションの区別を示す「アクティビティ／トランジション」フィールド（Ａ：アクティビティ、Ｔ：トランジション）と、参照もしくは更新するプロセス変数定義を示す「プロセス変数定義ＩＤ」フィールドと、プロセス変数のとり得る有効な値の範囲を示す「有効な値の範囲」フィールドと、対応するワークフローアプリケーションのパラメータを示す「アプリケーションパラメータ番号」フィールドと、参照もしくは更新の方法を示す「参照方法」フィールド（Ｒ：参照、Ｗ：更新）とを有している。なお、「アプリケーションパラメータ番号」は、後述するアプリケーション定義テーブル２２７のパラメータリストに記述されているパラメータ番号と対応し、対応しない場合はＮＵＬＬ値となる。
【００５７】
図１４はプロセス定義データベース２２に設けられるアプリケーション定義テーブル２２７の例を示す図であり、ワークフローアプリケーションを識別する「アプリケーションＩＤ」フィールドと、ワークフローアプリケーションの名前を示す「名前」フィールドと、ワークフローアプリケーションのエントリを示す「アプリケーション記述」フィールドと、ワークフローアプリケーションの使用するパラメータのリストを示す「パラメータリスト」フィールドとを有している。なお、「アプリケーション記述」としては、ここではＷｅｂアプリケーションを想定し、ＵＲＬ（Uniform Resource Locator）とした例を示している。
【００５８】
図１５はプロセスインスタンスデータベース２４に設けられるプロセスインスタンステーブル２４１の例を示す図であり、プロセス（プロセスインスタンス）を識別する「プロセスＩＤ」フィールドと、プロセスの名前を示す「名前」フィールドと、プロセスの終了条件を示す「終了条件」フィールドと、プロセスの状態を示す「状態」フィールドとを有している。
【００５９】
図１６はプロセスインスタンスデータベース２４に設けられるアクティビティテーブル２４２の例を示す図であり、アクティビティを識別する「アクティビティＩＤ」フィールドと、アクティビティを収容するプロセスを示す「プロセスＩＤ」フィールドと、アクティビティの名前を示す「名前」フィールドと、対応するアクティビティ定義を示す「アクティビティ定義ＩＤ」フィールドと、対応するワークフローアプリケーションを示す「アプリケーションＩＤ」フィールドと、アクティビティの開始条件を示す「開始条件」フィールドと、アクティビティの終了条件を示す「終了条件」フィールドと、アクティビティの状態を示す「状態」フィールドとを有している。なお、「開始条件」および「終了条件」における「％」はプロセス変数定義を示し、「＃」はアクティビティ変数定義を示している。
【００６０】
図１７はプロセスインスタンスデータベース２４に設けられるトランジションテーブル２４３の例を示す図であり、トランジションを識別する「トランジションＩＤ」フィールドと、トランジションを収容するプロセスを示す「プロセスＩＤ」フィールドと、トランジションの始点側のアクティビティを示す「ＦｒｏｍアクティビティＩＤ」フィールドと、トランジションの終点側のアクティビティを示す「ＴｏアクティビティＩＤ」フィールドと、トランジションの発火条件を示す「発火条件」フィールドと、トランジションの状態を示す「状態」フィールドとを有している。
【００６１】
図１８はプロセスインスタンスデータベース２４に設けられるプロセス変数テーブル２４４の例を示す図であり、プロセス変数を識別する「プロセス変数ＩＤ」フィールドと、対応するプロセスを示す「プロセスＩＤ」フィールドと、対応するプロセス変数定義を示す「プロセス変数定義ＩＤ」フィールドと、プロセス変数の名前を示す「プロセス変数名」フィールドと、プロセス変数の型を示す「変数型」フィールドと、プロセス変数の値を示す「値」フィールドと、プロセス固有のプロセス変数である場合は初期値が「１」で、これにプロセス変数を参照するアクティビティおよびトランジションの数を加えた値を示す「参照カウント」フィールドと、プロセス変数を更新するアクティビティの数を示す「参照更新カウント」フィールドとを有している。
【００６２】
図１９はプロセスインスタンスデータベース２４に設けられるアクティビティ変数テーブル２４５の例を示す図であり、アクティビティ変数を識別する「アクティビティ変数ＩＤ」フィールドと、対応するプロセスを示す「プロセスＩＤ」フィールドと、対応するアクティビティを示す「アクティビティＩＤ」フィールドと、アクティビティ変数の名前を示す「アクティビティ変数名」フィールドと、対応するワークフローアプリケーションのパラメータを示す「アプリケーションパラメータ番号」フィールドと、アクティビティ変数の型を示す「変数型」フィールドと、アクティビティ変数の値を示す「値」フィールドとを有している。なお、「アプリケーションパラメータ番号」は、アプリケーション定義テーブル２２７のパラメータリストに記述されているパラメータ番号と対応し、対応しない場合はＮＵＬＬ値となる。
【００６３】
図２０はプロセスインスタンスデータベース２４に設けられるプロセス変数更新履歴テーブル２４６の例を示す図であり、履歴データを識別する「シーケンス番号」フィールドと、履歴の対象であるプロセスを示す「プロセスＩＤ」フィールドと、履歴の対象であるプロセス変数を示す「プロセス変数ＩＤ」フィールドと、履歴の対象となる事象の日時を示す「日時」フィールドと、プロセス変数の更新方法を示す「更新方法」フィールドと、更新後の値を示す「値」フィールドとを有している。
【００６４】
図２１はプロセスインスタンスデータベース２４に設けられるプロセス変数参照テーブル２４７の例を示す図であり、アクティビティもしくはトランジションを示す「アクティビティＩＤ・トランジションＩＤ」フィールドと、アクティビティもしくはトランジションの区別を示す「アクティビティ／トランジション」フィールド（Ａ：アクティビティ、Ｔ：トランジション）と、参照もしくは更新するプロセス変数を示す「プロセス変数ＩＤ」フィールドと、対応するワークフローアプリケーションのパラメータを示す「アプリケーションパラメータ番号」フィールドと、プロセス変数のとり得る有効な値の範囲を示す「有効な値の範囲」フィールドと、参照もしくは更新の方法を示す「参照方法」フィールド（Ｒ：参照、Ｗ：更新参照）とを有している。
【００６５】
図２２はプロセス定義のＸＭＬ記述と各テーブル等との対応関係の例を示す図であり、プロセス定義全体がプロセス定義テーブル２２１およびプロセスインスタンステーブル２４１に対応し、「<WorkflowProcesses>」タグ直下の「<ExtendedAttributes>」タグ部分がプロセス変数定義テーブル２２４およびプロセス変数テーブル２４４に対応し、「<Activity>」タグ部分がアクティビティ定義テーブル２２２およびアクティビティテーブル２４２に対応し、その直下の「<ExtendedAttributes>」タグ部分がアクティビティ変数定義テーブル２２５およびアクティビティ変数テーブル２４５に対応し、「<ReferedAttributes>」タグ部分がプロセス変数定義参照テーブル２２６およびプロセス変数参照テーブル２４７に対応し、「<Application>」タグ部分がアプリケーション定義テーブル２２７に対応し、「<Transitions>」タグ部分がトランジション定義テーブル２２３およびトランジションテーブル２４３に対応している。
【００６６】
図２３はプロセスオブジェクトに対するアクセスコントロールの例を示す図であり、プロセスに対しては変更、アクティビティに対しては実行、削除、変更、管理、プロセス変数に対しては参照、更新、管理、アクティビティ定義に対しては追加、プロセス変数定義に対しては追加の操作権限を規定している。なお、これらの操作権限はプロセス定義データベース２２にプロセス定義の一部として保持されている。
【００６７】
図２４はプロセスオブジェクトＡＣＬデータベース２５に設けられるアクセスコントロールリストテーブル２５１の例を示す図であり、項目を識別する「ＳＩＤ（Security ID）」フィールドと、プロセスオブジェクトを示す「Ｏｂｊｅｃｔ  ＩＤ」フィールドと、許可対象のユーザもしくはグループを示す「Ｕｓｅｒ／Ｇｒｏｕｐ  ＩＤ」フィールドと、操作権限を示す「アクセスコントロール」フィールドとを有している。「アクセスコントロール」として示される記号は図２３に示す権限記号である。
【００６８】
＜動作＞
図２５はプロセスの実行開始時の処理例を示すシーケンス図である。
【００６９】
先ず、ユーザがワークフローアプリケーション１３に対してプロセス定義一覧の取得を要求すると（ステップＳ１）、ワークフローアプリケーション１３はプロセス定義管理部２１に対してプロセス定義一覧の取得を要求し（ステップＳ２）、プロセス定義管理部２１はプロセス定義データベース２２からプロセス定義一覧を取得する（ステップＳ３）。取得されたプロセス定義一覧はワークフローアプリケーション１３まで応答として送られ、ワークフローアプリケーション１３上でユーザにより選択可能な状態に表示される。
【００７０】
次いで、ユーザが所望のプロセス定義を選択し、プロセスインスタンスの生成を要求すると（ステップＳ４）、ワークフローアプリケーション１３はプロセス定義管理部２１に対してプロセス定義の取得を要求し（ステップＳ５）、プロセス定義管理部２１はプロセス定義データベース２２からプロセス定義を取得する（ステップＳ６）。取得されたプロセス定義はワークフローアプリケーション１３まで応答として送られ、ワークフローアプリケーション１３はプロセス定義のパラメータを設定した上で（ステップＳ７）、ワークフローエンジン２３に対してプロセスインスタンスの生成を要求し（ステップＳ８）、ワークフローエンジン２３はプロセスインスタンスをプロセスインスタンスデータベース２４に登録することでプロセスインスタンスを生成する（ステップＳ９）。プロセスインスタンスが生成された旨は応答としてワークフローアプリケーション１３まで送られる。
【００７１】
そして、ワークフローアプリケーション１３はワークフローエンジン２３に対してプロセスの開始を要求し（ステップＳ１０）、プロセスの実行が開始される。その後は、プロセス定義で規定されたワークフローに従い、業務処理が行われていく。
【００７２】
図２６はプロセスの変更の概念図であり、定義されているワークフローと異なる方法で実際の仕事を進めたい場合における主要な処理を示している。
【００７３】
図２６において、プロセスを停止した上で、ワークフローエンジン２３はプロセスインスタンスデータベース２４からプロセスインスタンスフローを取得し（ステップＳ１１）、ワークフローエンジン２３は取得したプロセスインスタンスフローをプロセスインスタンスデータベース２４の内部表現の形式からプロセス定義に変換し（ステップＳ１２）、プロセス実行時編集ツール１２はワークフローエンジン２３からプロセス定義を取得する（ステップＳ１３）。
【００７４】
プロセス実行時編集ツール１２は取得したプロセス定義に対して編集を行い（ステップＳ１４）、ワークフローエンジン２３に対してプロセス定義の更新を要求する（ステップＳ１５）。
【００７５】
ワークフローエンジン２３はプロセス実行時編集ツール１２から渡されたプロセス定義をプロセスインスタンスデータベース２４の内部表現の形式に変換し（ステップＳ１６）、プロセスインスタンスデータベース２４に対してプロセスインスタンスフローの更新を行う（ステップＳ１７）。そして、停止していたプロセスを再開することで、編集により変更されたワークフローが有効となる。
【００７６】
図２７はプロセスの変更の処理例を示すシーケンス図である。図２７において、プロセスの実行中にユーザがワークフローアプリケーション１３に対してプロセスインスタンスフローの編集開始を要求すると（ステップＳ２１）、ワークフローアプリケーション１３はワークフローエンジン２３に対してプロセスの停止を要求し（ステップＳ２２）、ワークフローエンジン２３はプロセスインスタンスデータベース２４のプロセスの状態を保留とすることでプロセスを停止する（ステップＳ２３）。プロセスが停止した旨は応答としてワークフローアプリケーション１３まで送られる。
【００７７】
ワークフローアプリケーション１３はプロセス実行時編集ツール１２を起動し（ステップＳ２４）、プロセス実行時編集ツール１２はワークフローエンジン２３を介してプロセスインスタンスデータベース２４からプロセスインスタンスフローを取得し（ステップＳ２５、Ｓ２６）、プロセスインスタンスフローを表示する（ステップＳ２７）。
【００７８】
ユーザはプロセス実行時編集ツール１２によりプロセスインスタンスフローに対して編集を行う（ステップＳ２８）。図２８は編集の一例であるアクティビティの追加におけるプロセス実行時編集ツール１２のグラフィカルユーザインタフェース（ＧＵＩ）の例を示す図である。ここでは、次の手順によってアクティビティの追加を行っている状態を示している。
（１）「追加」メニュー１２ａで「アクティビティ」を選択
（２）アプリケーション一覧１２ｂから「ドキュメント作成」を選択
（３）アクティビティ設定ウィンドウ１２ｃが表示
（４）アクティビティ設定ウィンドウ１２ｃにパラメータ（タイトル「特許提案書作成」等）を設定し、「ＯＫ」ボタン１２ｄを押下
（５）「Ｆｌｏｗ  Ｖｉｅｗ」ウィンドウ１２ｅに「特許提案書作成」のアクティビティ１２ｆが表示
（６）「追加」メニュー１２ａで「トランジション」を選択し、トランジション１２ｇを追加
（７）「編集完了」メニュー１２ｈを選択
図２９は上記のアクティビティ等の追加におけるシステム側の処理例を示すフローチャートである。
【００７９】
アクティビティの追加が要求されて処理が開始すると（ステップＳ４１）、ワークフローアプリケーションの選択を受け付け（ステップＳ４２）、アクティビティインスタンスを作成する（ステップＳ４３）。この際、ワークフローアプリケーションの選択を行わせるリストを表示するためにアプリケーション定義テーブル２２７（図１４）の参照が行われ、アクティビティインスタンスの作成のためにアクティビティテーブル２４２（図１６）への更新が行われる。
【００８０】
次いで、必要に応じて新たなプロセス変数もしくはアクティビティ変数を作成する（ステップＳ４４）。この際、プロセス変数については雛形の取得のためにプロセス変数定義テーブル２２４（図１１）の参照が行われるとともに、作成のためにプロセス変数テーブル２４４（図１８）への更新が行われる。アクティビティ変数についてはアクティビティ変数テーブル２４５（図１９）への更新が行われる。なお、プロセス定義ツール１１（図７）を用い、プロセス変数定義テーブル２２４に新たなプロセス変数定義を追加してもよい。
【００８１】
次いで、既存のあるいは新たに作成したプロセス変数、アクティビティ変数につき、選択したワークフローアプリケーションのパラメータに割り付ける（ステップＳ４５）。この際、プロセス変数テーブル２４４、アクティビティ変数テーブル２４５、プロセス変数参照テーブル２４７（図２１）への更新が行われる。
【００８２】
次いで、プロセス変数参照情報を更新する（ステップＳ４６）。この際、プロセス変数参照テーブル２４７への更新が行われる。
【００８３】
次いで、トランジションの追加および設定を行う（ステップＳ４７）。この際、トランジションテーブル２４３（図１７）への更新が行われる。
【００８４】
次いで、追加したアクティビティもしくはトランジションが参照もしくは更新するプロセス変数の参照カウントもしくは参照更新カウントのうちの対応するものをインクリメント（１を加算）する（ステップＳ４８）。この際、プロセス変数テーブル２４４への更新が行われる。
【００８５】
図３０はアクティビティ等の削除におけるシステム側の処理例を示すフローチャートである。
【００８６】
処理が開始すると（ステップＳ５１）、削除するアクティビティの選択を受け付け（ステップＳ５２）、そのアクティビティインスタンスを削除する（ステップＳ５３）。この際、アクティビティテーブル２４２およびアクティビティ変数テーブル２４５への更新が行われる。
【００８７】
次いで、削除したアクティビティが参照もしくは更新していたプロセス変数の参照カウントもしくは参照更新カウントのうちの対応するものをデクリメント（１を減算）する（ステップＳ５４）。この際、プロセス変数テーブル２４４への更新が行われる。
【００８８】
次いで、削除したアクティビティの前後に接続するトランジションを削除する（ステップＳ５５）。この際、トランジションテーブル２４３への更新が行われる。
【００８９】
次いで、そのトランジションが参照していたプロセス変数の参照カウントをデクリメントする（ステップＳ５６）。この際、プロセス変数テーブル２４４への更新が行われる。
【００９０】
次いで、新たなトランジションの追加を行う（ステップＳ５７）。この際、トランジションテーブル２４３への更新が行われる。
【００９１】
次いで、追加したトランジションが参照するプロセス変数の参照カウントをインクリメントする（ステップＳ５８）。この際、プロセス変数テーブル２４４への更新が行われる。
【００９２】
次いで、参照カウントと更新参照カウントがともに「０」になったプロセス変数を削除する（ステップＳ５９）。この際、プロセス変数テーブル２４４への更新が行われる。このように、いずれのアクティビティもしくはトランジションからも参照されないプロセス変数を削除することで、再利用時に不要なプロセス変数が含まれない状態とすることができる。なお、プロセス固有のプロセス変数については、予め参照カウントの初期値が「１」とされているため、全ての参照アクティビティもしくはトランジションが削除されても削除されることはない。
【００９３】
図２７に戻り、プロセスインスタンスフローの編集（ステップＳ２８）が完了した後、ユーザはプロセス実行時編集ツール１２に対してプロセスインスタンスフローの更新を要求し（ステップＳ２９）、プロセス実行時編集ツール１２はワークフローエンジン２３に対してプロセスインスタンスフローの更新を要求する（ステップＳ３０）。
【００９４】
この要求を受けたワークフローエンジン２３は、プロセスオブジェクトＡＣＬデータベース２５に対してプロセスインスタンスフローの変更権を当該ユーザ（編集者）が有しているか否かの確認を行う（ステップＳ３１）。当該ユーザが変更権を有していない場合は編集が許容されない旨をユーザに伝える。これにより、権限のない者によってプロセスが変更されることを防止することができる。
【００９５】
変更権のチェックに問題がない場合、ワークフローエンジン２３はプロセスインスタンスフローの整合性（実行可能性）のチェックを行う（ステップＳ３２）。図３１はプロセスの整合性チェックの処理例を示すフローチャートである。
【００９６】
図３１において、処理が開始されると（ステップＳ６１）、先頭のアクティビティから順に、プロセス変数参照テーブル２４７（図２１）を用いて、アクティビティとトランジションが参照するプロセス変数を確認する（ステップＳ６２）。この際の確認の内容は例えば次のような内容である。
（１）プロセス変数の有無
（２）プロセス変数の値（そのプロセス変数を更新した最後のアクティビティの値がこのアクティビティもしくはトランジションの有効な値の範囲に入っているかどうか？）
（３）そのアクティビティに割り当てられた業務遂行者がそのプロセス変数に対する操作権限を持っているか？
（４）トランザクションの場合は、並行するトランザクションの発火条件のＯＲをとった場合、全て可能なプロセス変数の場合を網羅しているか？
そして、一つでも実行される可能性がないアクティビティが見つかった場合には警告を出し、再編集を求める（ステップＳ６３）。
【００９７】
更に、終端のアクティビティに到達できない場合にはエラーとし、再編集を求める（ステップＳ６４）。
【００９８】
これにより、ユーザにより不適切にプロセスが変更されることを防止することができ、実行可能性を担保することができる。
【００９９】
図３２は整合性チェックの詳細を示すフローチャートであり、図３１のプロセス変数の確認処理（ステップＳ６２）をより詳細に示したものである。
【０１００】
図３２において、処理を開始すると（ステップＳ１０１）、プロセスインスタンスフローを取得し（ステップＳ１０２）、最初のアクティビティを取得し（ステップＳ１０３）、アクティビティが参照するプロセス変数を１つ選択する（ステップＳ１０４）。
【０１０１】
そして、プロセス変数テーブル２４４でプロセス変数の有無を確認するとともに、アクセスコントロールリストテーブル２５１で、プロセス変数に対する業務遂行者の権限を確認する（ステップＳ１０５）。
【０１０２】
ここで、プロセス変数が存在しないか、権限に違反がある場合（ステップＳ１０６のＮｏ）は、整合違反と判定し（ステップＳ１０７）、処理を終了する（ステップＳ１０８）。
【０１０３】
一方、プロセス変数が存在し、権限に違反がない場合（ステップＳ１０６のＹｅｓ）は、メモリからプロセス変数のとり得る値を取得し（ステップＳ１０９）、取得できた場合（ステップＳ１１０のＹｅｓ）は、プロセス変数のプロセス変数定義ＩＤを取得し、アクティビティＩＤとプロセス定義ＩＤからプロセス変数の有効な値の範囲を取得し（ステップＳ１１１）、取得できた場合（ステップＳ１１２のＹｅｓ）は、プロセス変数の有効な値の範囲とプロセス変数のとり得る値のＡＮＤをとり、それをとり得る値としてメモリに記憶する（ステップＳ１１３）。取得できなかった場合（ステップＳ１１０、Ｓ１１２のＮｏ）は特に何もしない。
【０１０４】
次いで、メモリに記憶されているプロセス変数のとり得る値がアクティビティの開始条件に違反しないことを確認し（ステップＳ１１４）、違反している場合（ステップＳ１１４のＮＧ）は、整合違反と判定し（ステップＳ１０７）、処理を終了する（ステップＳ１０８）。
【０１０５】
違反していない場合（ステップＳ１１４のＯＫ）は、次のプロセス変数を取得し（ステップＳ１１５）、取得できた場合（ステップＳ１１６のＹｅｓ）は、アクティビティが参照するプロセス変数の選択（ステップＳ１０４）に戻る。
【０１０６】
取得できなかった場合（ステップＳ１１６のＮｏ）は、アクティビティの終了条件でメモリに記憶したプロセス変数のとり得る値を更新し（ステップＳ１１７）、次のトランジションを取得する（ステップＳ１１８）。
【０１０７】
そして、メモリに記憶されているプロセス変数のとり得る値がトランジションの発火条件に違反しないことを確認し（ステップＳ１１９）、違反する場合（ステップＳ１１９のＮＧ）は、整合違反と判定し（ステップＳ１２０）、処理を終了する（ステップＳ１２１）。
【０１０８】
違反しない場合（ステップＳ１１９のＯＫ）は、トランジションの発火条件でメモリに記憶したプロセス変数のとり得る値を更新し（ステップＳ１２２）、次のアクティビティを取得する（ステップＳ１２３）。
【０１０９】
そして、取得できた場合（ステップＳ１２４のＹｅｓ）は、最初のアクティビティの取得（ステップＳ１０３）に戻る。取得できなかった場合（ステップＳ１２４のＮｏ）は、整合性違反なしと判定し（ステップＳ１２５）、処理を終了する（ステップＳ１２６）。
【０１１０】
図３３は整合性違反の例を示す図であり、（ａ）に示すActibity1とActibity2の間にActibity3を追加して（ｂ）のようにした場合、Activity1の終了条件はP1>200であるから、Activity1終了時にはP1の値は200より大きく、Activity3の開始条件はP1＜150であるからActivity 3は実行されず、このプロセスは完了しないため、整合性違反と判断される。
【０１１１】
図２７に戻り、プロセスインスタンスフローの整合性のチェック（ステップＳ３２）に問題がなかった場合、ワークフローエンジン２３はプロセス変数更新履歴テーブル２４６を参照してプロセスの再開位置を決定する（ステップＳ３３）。図３４はプロセス再開位置を決定する処理例を示すフローチャートである。
【０１１２】
図３４において、処理が開始されると（ステップＳ７１）、プロセスインスタンスフローをプロセスインスタンスデータベース２４から取得し（ステップＳ７２）、最初のアクティビティの取得（ステップＳ７３）およびそのアクティビティに続くトランジションの取得（ステップＳ７４）を行う。そして、プロセス変数更新履歴テーブル２４６を参照し、トランジションの終了条件を満足したことが一度でもあったかどうかを判定し（ステップＳ７５、Ｓ７６）、満足したことがなかった場合（ステップＳ７６のＮｏ）には、そのトランジションを再開位置とし（ステップＳ７７）、処理を終了する（ステップＳ７８）。
【０１１３】
また、トランジションが終了条件を満足したことが一度でもあった場合（ステップＳ７６のＹｅｓ）には、そのトランジションに続くアクティビティを取得し（ステップＳ７９）、プロセス変数更新履歴テーブル２４６を参照し、アクティビティの終了条件を満足したことが一度でもあったかどうかを判定し（ステップＳ８０、Ｓ８１）、満足したことがなかった場合（ステップＳ８１のＮｏ）には、そのアクティビティを再開位置とし（ステップＳ８２）、処理を終了する（ステップＳ７８）。
【０１１４】
また、アクティビティが終了条件を満足したことが一度でもあった場合（ステップＳ８１のＹｅｓ）には、そのアクティビティが最後のアクティビティであるかどうか判断し（ステップＳ８３）、最後のアクティビティである場合（ステップＳ８３のＹｅｓ）には、プロセスが終了したと判定し（ステップＳ８４）、処理を終了する（ステップＳ７８）。
【０１１５】
また、最後のアクティビティでない場合（ステップＳ８３のＮｏ）には、そのアクティビティに続くトランジションの取得（ステップＳ７４）に戻って処理を継続する。
【０１１６】
図２７に戻り、プロセスの再開位置の決定（ステップＳ３３）の後、ワークフローエンジン２３はプロセスインスタンスデータベース２４に対してプロセスインスタンスフローの更新を行い（ステップＳ３４）、その応答を待って、ワークフローアプリケーション１３はワークフローエンジン２３に対してプロセスの再開を要求し（ステップＳ３５）、ワークフローエンジン２３はプロセスインスタンスデータベース２４に対して、ステータス情報の更新を行うことで、決定された再開位置から再開を行う（ステップＳ３６）。
【０１１７】
次に、図３５〜図４０はプロセスインスタンスを複製して編集する場合の各テーブルの例を示す図である。すなわち、前述の動作では、プロセスを保留（ＳＵＳＰＥＮＤＥＤ）することにより停止し、その状態で編集を行い、権限および整合性のチェックの後に再開するようにしていたが、プロセスインスタンスを中断（ＴＥＲＭＩＮＡＴＥＤ）し、その複製を作成し、その新しいプロセスインスタンスに編集を行い、権限および整合性のチェックの後に再開するようにしたものである。
【０１１８】
図３５では、プロセスＩＤ：１のプロセスを編集する場合に、プロセスＩＤ：１の状態を中断（ＴＥＲＭＩＮＡＴＥＤ）に変更し、プロセスＩＤ：１のデータを複製して新しいプロセスインスタンス（プロセスＩＤ：ｍ＋１）を作成した状態を示している。
【０１１９】
図３６では、プロセスＩＤ：１のアクティビティの情報を複製し、アクティビティＩＤとプロセスＩＤの情報だけ新しいＩＤにし、他の情報は引き継ぐようにしている。また、必要に応じてアクティビティを追加し、新しいプロセスＩＤ（ここでは“ｍ＋１”）のプロセスに所属させるようにしている。
【０１２０】
図３７では、プロセスＩＤ：１のトランジションを複製し、Ｆｒｏｍアクティビティ、Ｔｏアクティビティを新しいアクティビティＩＤにしている。また、必要に応じてトランジションを追加・削除している。このとき、各トランジションの発火条件も必要に応じて変更する。状態は、発火条件とプロセス変数・アクティビティ変数の状態から自動的に判定する。
【０１２１】
図３８および図３９では、プロセスＩＤ：１のプロセス変数、アクティビティ変数を複製し、プロセスＩＤ、アクティビティＩＤを新しいプロセス、アクティビティのＩＤにし、その他のデータは引き継ぐようにしている。また、必要に応じて新しいプロセスＩＤ、アクティビティＩＤを追加する。また、参照カウント、更新参照カウントが０のプロセス変数、アクティビティ変数を削除する。
【０１２２】
図４０では、プロセスＩＤ：１に含まれるアクティビティ、トランジションに関係する参照情報を複製し、新しいアクティビティ、トランジションのＩＤにし、その他の情報は引き継ぐようにしている。また、必要に応じて新しい参照情報を追加、あるいは、必要の無い参照情報は削除する。
【０１２３】
次に、図４１は再利用のためのプロセス定義の登録におけるプロセス定義ツールのグラフィカルユーザインタフェースの例を示す図である。すなわち、ユーザにより実際の仕事の進め方に合致した形に変更されたプロセスインスタンスフローからプロセス定義を生成することで、後に再利用できるようにしたものである。ここでは、次の手順によってプロセス定義の登録を行っている状態を示している。
（１）「インポート」メニュー１１ａからプロセスインスタンスフローを選択すると、右ペインがプロセスインスタンス一覧１１ｂに変わる。
（２）プロセスインスタンス一覧１１ｂから所望のプロセスインスタンスを選択し、「ＯＫ」ボタン１１ｃを押すとプロセスインスタンスフローが左の「Ｆｌｏｗ  Ｖｉｅｗ」ウィンドウ１１ｄに表示され、プロセスインスタンス一覧１１ｂは閉じる。
（３）「Ｆｌｏｗ  Ｖｉｅｗ」ウィンドウ１１ｄに表示されたプロセスインスタンスフローを必要に応じて編集した後、「追加」メニュー１１ｅを選択し、プロセス定義としてプロセス定義管理部２１を介してプロセス定義データベース２２に登録処理を行う。
【０１２４】
以上説明したように、本発明にあっては、プロセスを停止した上でプロセスを編集し、編集者の権限およびプロセスの整合性をチェックし、プロセスの再開位置を決定して再開するようにしているため、エンドユーザにより不適切にプロセスが変更されることを防止することができ、実行可能性を担保した上で実行中にプロセスを自由に変更することができる。
【０１２５】
また、アクティビティの実行記録から、改善されたワークフローを作成し、再利用することができる。
【０１２６】
更に、プロセスの進行をプロセス変数によって管理することにより、柔軟にモディファイ可能なプロセスの進行状況を統計的に管理することができる。すなわち、プロセス変数によってプロセス進行評価のためのチェックリストを作成することができる。
【０１２７】
以上、本発明の好適な実施の形態により本発明を説明した。ここでは特定の具体例を示して本発明を説明したが、特許請求の範囲に定義された本発明の広範な趣旨および範囲から逸脱することなく、これら具体例に様々な修正および変更を加えることができることは明らかである。すなわち、具体例の詳細および添付の図面により本発明が限定されるものと解釈してはならない。
【図面の簡単な説明】
【０１２８】
【図１】プロセスの構成要素を示す図である。
【図２】プロセスの状態遷移を示す図である。
【図３】アクティビティの状態遷移を示す図である。
【図４】トランジションの状態遷移を示す図である。
【図５】ワークフローシステムの構成例を示す図である。
【図６】クライアントおよびサーバのハードウェア構成の例を示す図である。
【図７】ワークフローシステムのソフトウェア構成例を示す図である。
【図８】プロセス定義テーブルの例を示す図である。
【図９】アクティビティ定義テーブルの例を示す図である。
【図１０】トランジション定義テーブルの例を示す図である。
【図１１】プロセス変数定義テーブルの例を示す図である。
【図１２】アクティビティ変数定義テーブルの例を示す図である。
【図１３】プロセス変数定義参照テーブルの例を示す図である。
【図１４】アプリケーション定義テーブルの例を示す図である。
【図１５】プロセスインスタンステーブルの例を示す図である。
【図１６】アクティビティテーブルの例を示す図である。
【図１７】トランジションテーブルの例を示す図である。
【図１８】プロセス変数テーブルの例を示す図である。
【図１９】アクティビティ変数テーブルの例を示す図である。
【図２０】プロセス変数更新履歴テーブルの例を示す図である。
【図２１】プロセス変数参照テーブルの例を示す図である。
【図２２】プロセス定義のＸＭＬ記述と各テーブル等との対応関係の例を示す図である。
【図２３】プロセスオブジェクトに対するアクセスコントロールの例を示す図である。
【図２４】アクセスコントロールリストテーブルの例を示す図である。
【図２５】プロセスの実行開始時の処理例を示すシーケンス図である。
【図２６】プロセスの変更の概念図である。
【図２７】プロセスの変更の処理例を示すシーケンス図である。
【図２８】アクティビティの追加におけるプロセス実行時変更ツールのグラフィカルユーザインタフェースの例を示す図である。
【図２９】アクティビティ等の追加におけるシステム側の処理例を示すフローチャートである。
【図３０】アクティビティ等の削除におけるシステム側の処理例を示すフローチャートである。
【図３１】プロセスの整合性チェックの処理例を示すフローチャートである。
【図３２】整合性チェックの詳細を示すフローチャートである。
【図３３】整合性違反の例を示す図である。
【図３４】プロセス再開位置を決定する処理例を示すフローチャートである。
【図３５】プロセスインスタンスを複製して編集する場合のプロセスインスタンステーブルの例を示す図である。
【図３６】プロセスインスタンスを複製して編集する場合のアクティビティテーブルの例を示す図である。
【図３７】プロセスインスタンスを複製して編集する場合のトランジションテーブルの例を示す図である。
【図３８】プロセスインスタンスを複製して編集する場合のプロセス変数テーブルの例を示す図である。
【図３９】プロセスインスタンスを複製して編集する場合のアクティビティ変数テーブルの例を示す図である。
【図４０】プロセスインスタンスを複製して編集する場合のプロセス変数参照テーブルの例を示す図である。
【図４１】再利用のためのプロセス定義の登録におけるプロセス定義ツールのグラフィカルユーザインタフェースの例を示す図である。
【符号の説明】
【０１２９】
１Ａ〜１Ｃ    クライアント
２Ａ、２Ｂ    サーバ
３            ネットワーク
１００        バス
１０１        入力装置
１０２        表示装置
１０３        ドライブ装置
１０４        記録媒体
１０５        ＲＯＭ
１０６        ＲＡＭ
１０７        ＣＰＵ
１０８        インタフェース装置
１０９        ＨＤＤ
１１          プロセス定義ツール
１２          プロセス実行時編集ツール
１３          ワークフローアプリケーション
２１          プロセス定義管理部
２２          プロセス定義データベース
２３          ワークフローエンジン
２４          プロセスインスタンスデータベース
２５          プロセスオブジェクトＡＣＬデータベース
２２１        プロセス定義テーブル
２２２        アクティビティ定義テーブル
２２３        トランジション定義テーブル
２２４        プロセス変数定義テーブル
２２５        アクティビティ変数定義テーブル
２２６        プロセス変数定義参照テーブル
２２７        アプリケーション定義テーブル
２４１        プロセスインスタンステーブル
２４２        アクティビティテーブル
２４３        トランジションテーブル
２４４        プロセス変数テーブル
２４５        アクティビティ変数テーブル
２４６        プロセス変数更新履歴テーブル
２４７        プロセス変数参照テーブル
【図１】
2007004776.tif 000003
【図２】
2007004776.tif 000004
【図３】
2007004776.tif 000005
【図４】
2007004776.tif 000006
【図５】
2007004776.tif 000007
【図６】
2007004776.tif 000008
【図７】
2007004776.tif 000009
【図８】
2007004776.tif 000010
【図９】
2007004776.tif 000011
【図１０】
2007004776.tif 000012
【図１１】
2007004776.tif 000013
【図１２】
2007004776.tif 000014
【図１３】
2007004776.tif 000015
【図１４】
2007004776.tif 000016
【図１５】
2007004776.tif 000017
【図１６】
2007004776.tif 000018
【図１７】
2007004776.tif 000019
【図１８】
2007004776.tif 000020
【図１９】
2007004776.tif 000021
【図２０】
2007004776.tif 000022
【図２１】
2007004776.tif 000023
【図２２】
2007004776.tif 000024
【図２３】
2007004776.tif 000025
【図２４】
2007004776.tif 000026
【図２５】
2007004776.tif 000027
【図２６】
2007004776.tif 000028
【図２７】
2007004776.tif 000029
【図２８】
2007004776.tif 000030
【図２９】
2007004776.tif 000031
【図３０】
2007004776.tif 000032
【図３１】
2007004776.tif 000033
【図３２】
2007004776.tif 000034
【図３３】
2007004776.tif 000035
【図３４】
2007004776.tif 000036
【図３５】
2007004776.tif 000037
【図３６】
2007004776.tif 000038
【図３７】
2007004776.tif 000039
【図３８】
2007004776.tif 000040
【図３９】
2007004776.tif 000041
【図４０】
2007004776.tif 000042
【図４１】
2007004776.tif 000043