(57)【特許請求の範囲】
【請求項１】
一つの開始ノードを有しアクションとフローを備えた処理手順データによって示される処理手順が、適切な流れを有しているかを検証するための検証システムであって、
処理手順データを記録する記録部と、
前記処理手順データ中の判断アクションに着目して、当該判断アクションによって流れを分割し、開始から終了までの流れを部分グラフデータとして複数抽出する部分グラフ抽出手段と、
抽出したそれぞれの部分グラフデータ、または抽出中の部分グラフデータにおいて、一つの部分グラフデータにジョインアクションが含まれる場合、これに入る全ての流れが当該部分グラフデータ中に全て含まれていない場合には、当該部分グラフデータは事象独立性がなく、適切な流れを持たないと判断する部分グラフ事象独立判断手段と、
部分グラフ事象独立判断手段の判断結果を受けて、すべての部分グラフデータが事象独立性を持つと判断された場合には、処理手順データによって示される処理手順が、適切な流れを有している旨の出力を行い、いずれか一つ以上の部分グラフデータが事象独立性を持たないと判断された場合には、適切な流れを有していない旨の出力を行う事象独立判断結果出力手段と、
を備えた検証システム。
【請求項２】
一つの開始ノードを有しアクションとフローを備えた処理手順データによって示される処理手順が、適切な流れを有しているかを検証するための検証システムであって、
処理手順データを記録する記録部と、
前記処理手順データ中の判断アクションに着目して、当該判断アクションによって流れを分割し、開始から終了までの流れを部分グラフデータとして複数抽出する部分グラフ抽出手段と、
抽出したそれぞれの部分グラフデータ、または抽出中の部分グラフデータにおいて、一つの部分グラフデータにマージアクションが含まれる場合、これに入る流れが当該部分グラフデータ中に複数含まれる、または、全く含まれない場合には、当該部分グラフデータは事象独立性がなく、適切な流れを持たないと判断する部分グラフ事象独立判断手段と、
部分グラフ事象独立判断手段の判断結果を受けて、すべての部分グラフデータが事象独立性を持つと判断された場合には、処理手順データによって示される処理手順が、適切な流れを有している旨の出力を行い、いずれか一つ以上の部分グラフデータが事象独立性を持たないと判断された場合には、適切な流れを有していない旨の出力を行う事象独立判断結果出力手段と、
を備えた検証システム。
【請求項３】
一つの開始ノードを有しアクションとフローを備えた処理手順データによって示される処理手順が、適切な流れを有しているかを検証するための検証システムであって、
処理手順データを記録する記録部と、
前記処理手順データ中の判断アクションに着目して、当該判断アクションによって流れを分割し、開始から終了までの流れを部分グラフデータとして複数抽出する部分グラフ抽出手段と、
抽出したそれぞれの部分グラフデータ、または抽出中の部分グラフデータにおいて、一つの部分グラフデータにジョインアクションが含まれる場合、これに入る全ての流れが当該部分グラフデータ中に全て含まれていない場合、または、一つの部分グラフデータにマージアクションが含まれる場合、これに入る流れが当該部分グラフデータ中に複数含まれる、または、全く含まれない場合には、当該部分グラフデータは事象独立性がなく、適切な流れを持たないと判断する部分グラフ事象独立判断手段と、
部分グラフ事象独立判断手段の判断結果を受けて、すべての部分グラフデータが事象独立であると判断された場合には、処理手順データによって示される処理手順が、適切な流れを有している旨の出力を行い、いずれか一つ以上の部分グラフデータが事象独立でないと判断された場合には、適切な流れを有していない旨の出力を行う事象独立判断結果出力手段と、
を備えた検証システム。
【請求項４】
請求項１〜３のいずれかの検証システムにおいて、
前記部分グラフ抽出手段は、以下のi)〜iv)の処理を含む処理によって部分グラフを抽出することを特徴とする：
i)開始からのフローを対象フローとし、
ii)対象フローから判断アクションまでの少なくともフローを記録し、
iii)判断アクションにおける分岐の数と等しくなるように、ii)において記録したフローを複製し、
iv)判断アクションからの分岐フローのそれぞれを対象フローとして上記ii)以下を繰り返す。
【請求項５】
請求項１〜４のいずれかの検証システムにおいて、
前記事象独立判断結果出力手段に代えて、あるいは、これに加えて、部分グラフ事象独立判断手段によって事象独立性がないと判断された部分グラフデータを出力する部分グラフデータ出力手段を備えたことを特徴とする検証システム。
【請求項６】
請求項１〜５のいずれかの検証システムにおいて、
前記部分グラフ抽出手段は、ジョインアクションを見いだすと、ジョインアクションに入力するフローの全てについて検証を行った後でなければ、ジョインアクションの出力フローの検証を行わないことを特徴とする検証システム。
【請求項７】
請求項１〜６のいずれかの検証システムにおいて、
前記処理手順データが複数個集まって、全体としての処理手順データを構成しており、
各処理手順データの全てが事象独立であることを判断した後、全体としての処理手順データが事象独立であるか否かを判断することを特徴とする検証システム。
【請求項８】
一つの開始ノードを有しアクションとフローを備えた処理手順データによって示される処理手順が、適切な流れを有しているかを検証するため、コンピュータによって下記手段を実現するための検証プログラムであって、
処理手順データ中の判断アクションに着目して、当該判断アクションによって流れを分割し、開始から終了までの流れを部分グラフデータとして複数抽出する部分グラフ抽出手段と、
抽出したそれぞれの部分グラフデータ、または抽出中の部分グラフデータにおいて、一つの部分グラフデータにジョインアクションが含まれる場合、これに入る全ての流れが当該部分グラフデータ中に全て含まれていない場合には、当該部分グラフデータは事象独立性がなく、適切な流れを持たないと判断する部分グラフ事象独立性判断手段と、
部分グラフ事象独立判断手段の判断結果を受けて、すべての部分グラフデータが事象独立性を持つと判断された場合には、処理手順データによって示される処理手順が、適切な流れを有している旨の出力を行い、いずれか一つ以上の部分グラフデータが事象独立性を持たないと判断された場合には、適切な流れを有していない旨の出力を行う事象独立判断結果出力手段と、
をコンピュータによって実現するための検証プログラム。
【請求項９】
一つの開始ノードを有しアクションとフローを備えた処理手順データによって示される処理手順が、適切な流れを有しているかを検証するため、コンピュータによって下記手段を実現するための検証プログラムであって、
処理手順データ中の判断アクションに着目して、当該判断アクションによって流れを分割し、開始から終了までの流れを部分グラフデータとして複数抽出する部分グラフ抽出手段と、
抽出したそれぞれの部分グラフデータ、または抽出中の部分グラフデータにおいて、一つの部分グラフデータにマージアクションが含まれる場合、これに入る流れが当該部分グラフデータ中に複数含まれる、または、全く含まれない場合には、当該部分グラフデータは事象独立性がなく、適切な流れを持たないと判断する部分グラフ事象独立性判断手段と、
部分グラフ事象独立性判断手段の判断結果を受けて、すべての部分グラフデータが事象独立性を持つと判断された場合には、処理手順データによって示される処理手順が、適切な流れを有している旨の出力を行い、いずれか一つ以上の部分グラフデータが事象独立性を持たないと判断された場合には、適切な流れを有していない旨の出力を行う事象独立判断結果出力手段と、
をコンピュータによって実現するための検証プログラム。
【請求項１０】
一つの開始ノードを有しアクションとフローを備えた処理手順データによって示される処理手順が、適切な流れを有しているかを検証するため、コンピュータによって下記手段を実現するための検証プログラムであって、
処理手順データ中の判断アクションに着目して、当該判断アクションによって流れを分割し、開始から終了までの流れを部分グラフデータとして複数抽出する部分グラフ抽出手段と、
抽出したそれぞれの部分グラフデータ、または抽出中の部分グラフデータにおいて、一つの部分グラフデータにジョインアクションが含まれる場合、これに入る全ての流れが当該部分グラフデータ中に全て含まれていない場合、または、一つの部分グラフデータにマージアクションが含まれる場合、これに入る流れが当該部分グラフデータ中に複数含まれる、または、全く含まれない場合には、当該部分グラフデータは事象独立性がなく、適切な流れを持たないと判断する部分グラフ事象独立性判断手段と、
部分グラフ事象独立判断手段の判断結果を受けて、すべての部分グラフデータが事象独立性を持つと判断された場合には、処理手順データによって示される処理手順が、適切な流れを有している旨の出力を行い、いずれか一つ以上の部分グラフデータが事象独立性を持たないと判断された場合には、適切な流れを有していない旨の出力を行う事象独立判断結果出力手段と、
をコンピュータによって実現するための検証プログラム。
【請求項１１】
請求項８〜１０のいずれかの検証プログラムにおいて、
前記部分グラフ抽出手段は、以下のi)〜iv)の処理を含む処理によって部分グラフを抽出することを特徴とする：
i)開始からのフローを対象フローとし、
ii)対象フローから判断アクションまでの少なくともフローを記録し、
iii)判断アクションにおける分岐の数と等しくなるように、ii)において記録したフローを複製し、
iv)判断アクションからの分岐フローのそれぞれを対象フローとして上記ii)以下を繰り返す。
【請求項１２】
請求項８〜１１のいずれかの検証プログラムにおいて、
前記事象独立判断結果出力手段に代えて、あるいは、これに加えて、部分グラフ事象独立性判断手段によって事象独立性があると判断された部分グラフデータを出力する部分グラフデータ出力手段をコンピュータによって実現する検証プログラム。
【請求項１３】
請求項８〜１２のいずれかの検証プログラムにおいて、
前記部分グラフ抽出手段は、ジョインアクションを見いだすと、ジョインアクションに入力するフローの全てについて検証を行った後でなければ、ジョインアクションの出力フローの検証を行わないことを特徴とする検証プログラム。
【請求項１４】
請求項８〜１３のいずれかの検証プログラムにおいて、
前記処理手順データが複数個集まって、全体としての処理手順データを構成しており、
各処理手順データの全てが事象独立性があることを判断した後、全体としての処理手順データが事象独立であるか否かを判断することを特徴とする検証プログラム。
【請求項１５】
一以上の開始ノードを有しアクションとフローを備えた処理手順データによって示される処理手順が、適切な流れを有しているかを検証するための検証システムであって、
処理手順データを記録する記録部と、
前記処理手順データ中の判断アクションに着目して、当該判断アクションによって流れを分割し、開始から終了までの流れを事象独立性のある部分グラフデータとして複数抽出する部分グラフ抽出手段と、
処理手順データのいずれのフローについても、当該フローを含む事象独立性のある部分グラフデータが存在する場合には、処理手順データによって示される処理手順が、適切な流れを有している旨の出力を行い、事象独立性のある部分グラフデータに含まれないフローが一つでも存在する場合には、適切な流れを有していない旨の出力を行う事象独立判断結果出力手段と、
を備えた検証システム。
【請求項１６】
一以上の開始ノードを有しアクションとフローを備えた処理手順データによって示される処理手順が、適切な流れを有しているかを検証するための検証システムであって、
処理手順データを記録する記録部と、
前記処理手順データ中の判断アクションに着目して、当該判断アクションによって流れを分割し、開始から終了までの流れを中間生成グラフデータとして複数抽出する中間生成グラフ抽出手段と、
抽出したそれぞれの中間生成グラフデータ、または抽出中の中間生成グラフデータが、下記の条件i)〜iv)を満たす場合には、当該中間生成グラフデータは事象独立性を有し、適切な流れを持つと判断し、下記のいずれかの条件i)〜iv)を満たさない場合には、当該中間生成グラフデータは事象独立性がなく、適切な流れを持たないと判断する中間生成グラフ事象独立性判断手段と、
抽出した中間生成グラフデータを貼り合わせて部分グラフデータを生成する貼合せ手段と、
下記v)vi)の双方の条件を満たす場合に、処理手順データによって示される処理手順が、適切な流れを有している旨の出力を行い、少なくとも一方の条件を満たさないと判断された場合には、適切な流れを有していない旨の出力を行う事象独立判断結果出力手段と、
を備えた検証システム。
i)判断アクションであるとき、当該部分グラフは、当該判断アクションの出力フローを一つだけ持つ。
ii)マージアクションであるとき、当該部分グラフは、当該マージアクションの入力フローを一つだけ持つ。
iii)ジョインアクションであるとき、当該部分グラフは、当該ジョインアクションの入力フローを一以上持つ。さらに、当該部分グラフは、ジョインアクションの出力フローを持つ。
iv)上記以外のアクションであるとき、当該部分グラフは、当該アクションの入出力フローを持つ。
v)部分グラフデータを構成する中間生成グラフデータの全てについて、当該中間生成グラフデータに含まれるジョインアクションの全てに対し、処理手順データにおけるジョインアクションの入力フローを、当該中間生成グラフデータが含んでいる
vi)処理手順データのいずれのフローについても、当該フローを含む部分グラフデータが存在する。
【請求項１７】
請求項１６の検証システムにおいて、
前記中間生成グラフ抽出手段は、以下のi)〜iv)の処理を含む処理によって部分グラフを抽出することを特徴とする：
i)開始からのフローを対象フローとし、
ii)対象フローから判断アクションまでの少なくともフローを記録し、
iii)判断アクションにおける分岐の数と等しくなるように、ii)において記録したフローを複製し、
iv)判断アクションからの分岐フローのそれぞれを対象フローとして上記ii)以下を繰り返す。
【請求項１８】
請求項１５〜１７のいずれかの検証システムにおいて、
部分グラフ抽出手段によって抽出された部分グラフデータに基づいて、処理手順データに関する検証処理を行うことを特徴とする検証システム。
【請求項１９】
請求項１５〜１８のいずれかの検証システムにおいて、
前記処理手順データが複数個集まって、全体としての処理手順データを構成しており、
各処理手順データの全てが事象独立であることを判断した後、全体としての処理手順データが事象独立であるか否かを判断することを特徴とする検証システム。
【請求項２０】
一以上の開始ノードを有しアクションとフローを備えた処理手順データによって示される処理手順が、適切な流れを有しているかを検証するため、コンピュータによって以下の手段を実現するための検証プログラムであって、
処理手順データ中の判断アクションに着目して、当該判断アクションによって流れを分割し、開始から終了までの流れを事象独立性のある部分グラフデータとして複数抽出する部分グラフ抽出手段と、
処理手順データのいずれのフローについても、当該フローを含む事象独立性のある部分グラフデータが存在する場合には、処理手順データによって示される処理手順が、適切な流れを有している旨の出力を行い、事象独立性のある部分グラフデータに含まれないフローが一つでも存在する場合には、適切な流れを有していない旨の出力を行う事象独立判断結果出力手段と、
をコンピュータによって実現するための検証プログラム。
【請求項２１】
一以上の開始ノードを有しアクションとフローを備えた処理手順データによって示される処理手順が、適切な流れを有しているかを検証するため、コンピュータによって以下の手段を実現するための検証プログラムであって、
前記処理手順データ中の判断アクションに着目して、当該判断アクションによって流れを分割し、開始から終了までの流れを中間生成グラフデータとして複数抽出する中間生成グラフ抽出手段と、
抽出したそれぞれの中間生成グラフデータ、または抽出中の中間生成グラフデータが、下記の条件i)〜iv)を満たす場合には、当該中間生成グラフデータは事象独立性を有し、適切な流れを持つと判断し、下記のいずれかの条件i)〜iv)を満たさない場合には、当該中間生成グラフデータは事象独立性がなく、適切な流れを持たないと判断する中間生成グラフ事象独立性判断手段と、
抽出した中間生成グラフデータを貼り合わせて部分グラフデータを生成する貼合せ手段と、
下記v)vi)の双方の条件を満たす場合に、処理手順データによって示される処理手順が、適切な流れを有している旨の出力を行い、少なくとも一方の条件を満たさないと判断された場合には、適切な流れを有していない旨の出力を行う事象独立判断結果出力手段と、
をコンピュータによって実現するための検証プログラム。
i)判断アクションであるとき、当該部分グラフは、当該判断アクションの出力フローを一つだけ持つ。
ii)マージアクションであるとき、当該部分グラフは、当該マージアクションの入力フローを一つだけ持つ。
iii)ジョインアクションであるとき、当該部分グラフは、当該ジョインアクションの入力フローを一以上持つ。さらに、当該部分グラフは、ジョインアクションの出力フローを持つ。
iv)上記以外のアクションであるとき、当該部分グラフは、当該アクションの入出力フローを持つ。
v)部分グラフデータを構成する中間生成グラフデータの全てについて、当該中間生成グラフデータに含まれるジョインアクションの全てに対し、処理手順データにおけるジョインアクションの入力フローを、当該中間生成グラフデータが含んでいる
vi)処理手順データのいずれのフローについても、当該フローを含む部分グラフデータが存在する。
【請求項２２】
請求項２１の検証プログラムにおいて、
前記中間生成グラフ抽出手段は、以下のi)〜iv)の処理を含む処理によって部分グラフを抽出することを特徴とする：
i)開始からのフローを対象フローとし、
ii)対象フローから判断アクションまでの少なくともフローを記録し、
iii)判断アクションにおける分岐の数と等しくなるように、ii)において記録したフローを複製し、
iv)判断アクションからの分岐フローのそれぞれを対象フローとして上記ii)以下を繰り返す。
【請求項２３】
請求項２０〜２２のいずれかの検証プログラムにおいて、
部分グラフ抽出手段によって抽出された部分グラフデータに基づいて、処理手順データに関する検証処理を行うことを特徴とする検証プログラム。
【請求項２４】
請求項２０〜２３のいずれかの検証プログラムにおいて、
前記処理手順データが複数個集まって、全体としての処理手順データを構成しており、
各処理手順データの全てが事象独立であることを判断した後、全体としての処理手順データが事象独立であるか否かを判断することを特徴とする検証プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、処理手順データによって示される処理手順が、適切な流れを有しているかを検証するための検証システムに関するものである。
【背景技術】
【０００２】
業務モデルなどを策定するために、業務の流れを作成するソフトウエアが用いられている。たとえば、Office Visio（マイクロソフト社製）、Jude（チェンジビジョン社製）、Eclipse Modeling FrameWork（Eclipse Foundation社製）、Enterprise Architect（SparxSystems社製）、Konesa（CanyonBlue社製）、パターンウィーバ（Foundatao社製）などのソフトウエアが市販されている。このような業務モデルにおいては、書類やデータ（エビデンスという）などが作成され、保管される処理が定められることになる。一般に、業務モデルを作成するためのソフトウエアは、業務の流れをフローチャートとして画面上で確認しながら、操作ができるようになっている。これによって、作成者は、複雑な業務モデルを比較的容易に作成することができる。
【０００３】
上記のようにして作成した業務モデルにおいては、業務の流れに矛盾がなく整合性がなければならない。たとえば、図１のように、策定された業務モデルにおいてジョインＲ１が含まれることがある。ここで、ジョイン（待ち合わせ）とは、すべての入力が満たされない限り、次の処理に進まないとするものである。図１のＷ１では、判断Ｄ１の分岐後の流れの双方がジョインＲ１に入っており、処理が先に進まないことになる。図１のＷ２においても、同じような不整合がある。
【０００４】
適切な流れを有していないと考えられる例は他にもあり、加えて、実際の業務フローにおいては、流れが複雑であるため、これを簡単に判断することは困難であった。
【０００５】
従来、業務フローの整合性を判定する技術としては、特許文献１のようなものが提案されている。
【０００６】
特許文献１には、携帯電話などのメニューの流れに関する検証が開示されている。検証項目は、すべての状態から少なくとも他の一つの状態に移動できるか、二つの任意の状態u,vについて、uからvへの遷移の連なりと、vからuへの遷移の連なりが存在するかどうか等である。
【０００７】
【特許文献１】特開２００６−２８５６２６号公報
【発明の開示】
【発明が解決しようとする課題】
【０００８】
しかしながら、特許文献１のシステムは、メニュー構造の検証に特化したものであり、状態遷移が適切に行われるかに主眼がある。このため、図１に示したような不整合について、検証を行うことはできなかった。
【０００９】
この発明は上記のような問題点を解決して、処理手順データによって示される処理手順が、適切な流れを有しているかを効率的に判断することのできるシステムを提供することを目的とする。
【課題を解決するための手段】
【００１０】
(1)この発明に係る検証システムは、一つの開始ノードを有しアクションとフローを備えた処理手順データによって示される処理手順が、適切な流れを有しているかを検証するための検証システムであって、処理手順データを記録する記録部と、前記処理手順データ中の判断アクションに着目して、当該判断アクションによって流れを分割し、開始から終了までの流れを部分グラフデータとして複数抽出する部分グラフ抽出手段と、抽出したそれぞれの部分グラフデータ、または抽出中の部分グラフデータにおいて、一つの部分グラフデータにジョインアクションが含まれる場合、これに入る全ての流れが当該部分グラフデータ中に全て含まれていない場合には、当該部分グラフデータは事象独立性がなく、適切な流れを持たないと判断する部分グラフ事象独立性判断手段と、部分グラフ事象独立性判断手段の判断結果を受けて、すべての部分グラフデータが事象独立性を持つと判断された場合には、処理手順データによって示される処理手順が、適切な流れを有している旨の出力を行い、いずれか一つ以上の部分グラフデータが事象独立性を持たないと判断された場合には、適切な流れを有していない旨の出力を行う事象独立判断結果出力手段とを備えている。
【００１１】
したがって、処理手順データが事象独立であるか否かを迅速に判断することができる。
【００１２】
(2)この発明に係る検証システムは、一つの開始ノードを有しアクションとフローを備えた処理手順データによって示される処理手順が、適切な流れを有しているかを検証するための検証システムであって、処理手順データを記録する記録部と、前記処理手順データ中の判断アクションに着目して、当該判断アクションによって流れを分割し、開始から終了までの流れを部分グラフデータとして複数抽出する部分グラフ抽出手段と、抽出したそれぞれの部分グラフデータ、または抽出中の部分グラフデータにおいて、一つの部分グラフデータにマージアクションが含まれる場合、これに入る流れが当該部分グラフデータ中に複数含まれる、または、全く含まれない場合には、当該部分グラフデータは事象独立性がなく、適切な流れを持たないと判断する部分グラフ事象独立性判断手段と、部分グラフ事象独立性判断手段の判断結果を受けて、すべての部分グラフデータが事象独立性を持つと判断された場合には、処理手順データによって示される処理手順が、適切な流れを有している旨の出力を行い、いずれか一つ以上の部分グラフデータが事象独立性を持たないと判断された場合には、適切な流れを有していない旨の出力を行う事象独立性判断結果出力手段とを備えている。
【００１３】
したがって、処理手順データが事象独立であるか否かを迅速に判断することができる。
【００１４】
(3)この発明に係る検証システムは、一つの開始ノードを有しアクションとフローを備えた処理手順データによって示される処理手順が、適切な流れを有しているかを検証するための検証システムであって、処理手順データを記録する記録部と、前記処理手順データ中の判断アクションに着目して、当該判断アクションによって流れを分割し、開始から終了までの流れを部分グラフデータとして複数抽出する部分グラフ抽出手段と、抽出したそれぞれの部分グラフデータ、または抽出中の部分グラフデータにおいて、一つの部分グラフデータにジョインアクションが含まれる場合、これに入る全ての流れが当該部分グラフデータ中に全て含まれていない場合、または、一つの部分グラフデータにマージアクションが含まれる場合、これに入る流れが当該部分グラフデータ中に複数含まれる、または、全く含まれない場合には、当該部分グラフデータは事象独立性がなく、適切な流れを持たないと判断する部分グラフ事象独立性判断手段と、部分グラフ事象独立性判断手段の判断結果を受けて、すべての部分グラフデータが事象独立性を持つと判断された場合には、処理手順データによって示される処理手順が、適切な流れを有している旨の出力を行い、いずれか一つ以上の部分グラフデータが事象独立性を持たないと判断された場合には、適切な流れを有していない旨の出力を行う事象独立判断結果出力手段とを備えている。
【００１５】
したがって、処理手順データが事象独立であるか否かを迅速に判断することができる。
【００１６】
(4)この発明に係る検証システムは、部分グラフ抽出手段は、以下のi)〜iv)の処理を含む処理によって部分グラフを抽出することを特徴とする：
i)開始からのフローを対象フローとし、
ii)対象フローから判断アクションまでの少なくともフローを記録し、
iii)判断アクションにおける分岐の数と等しくなるように、ii)において記録したフローを複製し、
iv)判断アクションからの分岐フローのそれぞれを対象フローとして上記ii)以下を繰り返す。
【００１７】
したがって、判断アクションまでのフロー抽出を繰り返す必要がなく、処理に無駄がない。
【００１８】
(5)この発明に係る検証システムは、事象独立判断結果出力手段に代えて、あるいは、これに加えて、部分グラフ事象独立判断手段によって事象独立であると判断された部分グラフデータを出力する部分グラフデータ出力手段を備えたことを特徴としている。
【００１９】
したがって、事象独立性の保証された部分グラフデータを他の処理に用いることができる。
【００２０】
(6)この発明に係る検証システムは、部分グラフ抽出手段は、ジョインアクションを見いだすと、ジョインアクションに入力するフローの全てについて検証を行った後でなければ、ジョイアクションの出力フローの検証を行わないことを特徴としている。
【００２１】
したがって、効率的に事象独立性を判断しつつ、部分グラフの抽出を行うことができる。
【００２２】
(7)この発明に係る検証システムは、処理手順データが複数個集まって、全体としての処理手順データを構成しており、各処理手順データの全てが事象独立であることを判断した後、全体としての処理手順データが事象独立であるか否かを判断することを特徴としている。
【００２３】
したがって、各部分において事象独立であるかの判断を行うことができ、検証が容易である。
【００２４】
(15)この発明に係る検証システムは、一以上の開始ノードを有しアクションとフローを備えた処理手順データによって示される処理手順が、適切な流れを有しているかを検証するための検証システムであって、処理手順データを記録する記録部と、前記処理手順データ中の判断アクションに着目して、当該判断アクションによって流れを分割し、開始から終了までの流れを事象独立性のある部分グラフデータとして複数抽出する部分グラフ抽出手段と、処理手順データのいずれのフローについても、当該フローを含む事象独立性のある部分グラフデータが存在する場合には、処理手順データによって示される処理手順が、適切な流れを有している旨の出力を行い、事象独立性のある部分グラフデータに含まれないフローが一つでも存在する場合には、適切な流れを有していない旨の出力を行う事象独立判断結果出力手段とを備えている。
【００２５】
したがって、開始ノードが一つの場合だけでなく、複数ある場合についても、事象独立であるか否かを判断することができる。
【００２６】
(16)この発明に係る検証システムは、一以上の開始ノードを有しアクションとフローを備えた処理手順データによって示される処理手順が、適切な流れを有しているかを検証するための検証システムであって、処理手順データを記録する記録部と、前記処理手順データ中の判断アクションに着目して、当該判断アクションによって流れを分割し、開始から終了までの流れを中間生成グラフデータとして複数抽出する中間生成グラフ抽出手段と、抽出したそれぞれの中間生成グラフデータ、または抽出中の中間生成グラフデータが、下記の条件i)〜iv)を満たす場合には、当該中間生成グラフデータは事象独立性を有し、適切な流れを持つと判断し、下記のいずれかの条件i)〜iv)を満たさない場合には、当該中間生成グラフデータは事象独立性がなく、適切な流れを持たないと判断する中間生成グラフ事象独立性判断手段と、抽出した中間生成グラフデータを貼り合わせて部分グラフデータを生成する貼合せ手段と、下記v)vi)の双方の条件を満たす場合に、処理手順データによって示される処理手順が、適切な流れを有している旨の出力を行い、少なくとも一方の条件を満たさないと判断された場合には、適切な流れを有していない旨の出力を行う事象独立判断結果出力手段とを備えている。
【００２７】
i)判断アクションであるとき、当該部分グラフは、当該判断アクションの出力フローを一つだけ持つ。
【００２８】
ii)マージアクションであるとき、当該部分グラフは、当該マージアクションの入力フローを一つだけ持つ。
【００２９】
iii)ジョインアクションであるとき、当該部分グラフは、当該ジョインアクションの入力フローを一以上持つ。さらに、当該部分グラフは、ジョインアクションの出力フローを持つ。
【００３０】
iv)上記以外のアクションであるとき、当該部分グラフは、当該アクションの入出力フローを持つ。
【００３１】
v)部分グラフデータを構成する中間生成グラフデータの全てについて、当該中間生成グラフデータに含まれるジョインアクションの全てに対し、処理手順データにおけるジョインアクションの入力フローを、当該中間生成グラフデータが含んでいる
vi)処理手順データのいずれのフローについても、当該フローを含む部分グラフデータが存在する。
【００３２】
したがって、効率よく迅速に、処理対象データが適切な流れを有しているか否かを判断することができる。
【００３３】
(17)この発明にかかる検証システムは、中間生成グラフ抽出手段は、以下のi)〜iv)の処理を含む処理によって部分グラフを抽出することを特徴としている：
i)開始からのフローを対象フローとし、
ii)対象フローから判断アクションまでの少なくともフローを記録し、
iii)判断アクションにおける分岐の数と等しくなるように、ii)において記録したフローを複製し、
iv)判断アクションからの分岐フローのそれぞれを対象フローとして上記ii)以下を繰り返す。
【００３４】
したがって、判断アクションまでのフロー抽出を繰り返す必要がなく、処理に無駄がない。
【００３５】
(18)この発明に係る検証システムは、部分グラフ抽出手段によって抽出された部分グラフデータに基づいて、処理手順データに関する検証処理を行うことを特徴としている。
【００３６】
したがって、事象独立性が保証された部分グラフデータを用いて、検証処理を行うことができる。
【００３７】
(19)この発明に係る検証システムは、処理手順データが複数個集まって、全体としての処理手順データを構成しており、各処理手順データの全てが事象独立であることを判断した後、全体としての処理手順データが事象独立であるか否かを判断することを特徴としている。
【００３８】
したがって、各部分において事象独立であるかの判断を行うことができ、検証が容易である。
【００３９】
「処理手順データ」とは、業務フローデータやフローチャートなどの処理手順を示したデータをいう。
【００４０】
「事象独立」とは、各ノードの入力フローの内で、各事象について実際に用いられる数が常に等しいことを言う。具体的には、マージならば常に１本の入力フローが、ジョインならば常にすべての入力フローが、用いられなくてはならないことをいう。なお、「各事象について実際に用いられる」とは、各事象部分グラフに含まれるということである。
【００４１】
「部分グラフ」とは、第一の実施形態における部分グラフだけでなく、第二の実施形態におけるトレースグラフを含む概念である。
【発明を実施するための形態】
【００４２】
１．処理手順データ
この発明に係る検証システムは、業務フローデータのような、アクションとフローを備えた処理手順データを検証する。業務フローデータとは、業務の流れ（フロー）、業務内容（アクション）を流れ図として示したものである。業務フローデータは、組織内における業務の流れを統一したり、処理の誤りを低減したりするために利用されている。各アクションにおいては、書類・電子データなど（エビデンス）を、生成したり保管したりすることが示されている。
【００４３】
本発明の実施形態による検証システムは、業務フローデータにおいて示された業務の流れが適切であるか否かを検証する。
【００４４】
図２に、検証の対象である処理手順データの一例として、業務フローデータを示す。この業務フローデータは、計画策定の際におけるフローとアクションを示したものであり、エビデンスとして計画書、承諾書が示されている。
【００４５】
図２に示す業務フローデータは、業務フロー作成プログラムなどによって生成されたものである。実際には、図３ａ、図３ｂ、図３ｃに示すようにＸＭＬデータなどによって記述されるデータであるが、コンピュータはこれに基づいて図２のような図としてディスプレイに表示することができる。以下、理解を容易にするため、業務フローデータを図として説明する。
【００４６】
図２において、業務フローの先頭に現れている黒丸は、トリガーアクションＳＡを示す。トリガーアクションＳＡは、業務フローデータの開始を示している。業務フローの最後に現れている二重丸は、エンドアクションＥＡを示す。エンドアクションＥＡは、業務フローデータの終了を示している。
【００４７】
アクションＡＣ１では、計画書を作成することが示されている。このアクションＡＣ１において処理対象となっているエビデンスは、計画書である。したがってアクションＡＣ１に隣接して、処理対象エビデンスＥＶ１として「計画書」が示される。なお、アクションＡＣ１では、エビデンスが生成されるので(+)が記述されている。エビデンスが消滅（保管あるいは破棄など）する場合には(-)が記述される。
【００４８】
アクションＡＣ２では、計画書を見直すことが示されている。処理対象エビデンスＥＶ２は、計画書である。なお、このアクションＡＣ２では、エビデンスが生成されたり、消滅したりしないので、(+)(-)いずれのマークも付されない。
【００４９】
アクションＡＣ３では、計画の予算規模が、３００万円以上であるか否かを判断することが示されている。３００万円以上であれば部署Ｙの承認が必要であり（アクションＡＣ５）、３００万円未満であれば上司Ｘが承認すること（アクションＡＣ４）が示されている。アクションＡＣ３のように判断が必要なアクションを、判断アクションと呼ぶ。
【００５０】
アクションＡＣ４では、処理対象エビデンスＥＶ４として、計画書および承諾書が示される。承諾書は、このアクションにて生成されるので(+)マークが付される。
【００５１】
アクションＡＣ５では、処理対象エビデンスＥＶ５として、計画書および承諾書が示される。承諾書は、このアクションにて生成されるので(+)マークが付される。
【００５２】
アクションＡＣ６は、２以上の処理を結合するアクションである。つまり、アクションＡＣ４あるいはアクションＡＣ５のいずれの処理が行われた場合であっても、次のアクションＡＣ７に進むことを表している。このようなアクションを、処理の結合という意味で、マージと呼ぶ。
【００５３】
アクションＡＣ７では、計画書・承諾書を保管することが示されている。したがって、処理対象エビデンスＥＶ７として、(-)マークを付した計画書、承諾書が示される。
【００５４】
上記のようにして作成された業務フローデータは、組織における業務の指針などとして用いられる。
【００５５】
図４に、業務フローデータ中に現れるアクションの種類を示す。トリガーアクション、エンドアクション、通常アクション、判断アクション、マージアクションについては、図１において説明したとおりである。単純分岐であるフォークアクションは、処理が２以上に分岐することを表している。判断アクションは判断内容に応じていずれか一つのフローに処理が進むが、フォークアクションにおいては、判断することなく複数のフローに同時に処理が進むことになる。ジョインアクションは、マージアクションと同じように処理の結合である。ジョインアクションにおいては、入力側の全てのアクションがなされない限り、次のアクションに移行しない点が、マージアクションと異なっている。
【００５６】
単純結合であるジョインアクションは、たとえば、書面Ａと書面Ｂの２つが揃った場合に、次のアクションを実行させるような場合に用いる。したがって、書面Ａだけが到達していても、書面Ｂが未到達であれば次のアクションを行わない。
【００５７】
また、出力端子は、業務フロー図が複数の図に分割される際に、連結先を示すものとして用いられる。同様に、入力端子は、業務フロー図が複数の図に分割される際に、連結元を示すものとして用いられる。
【００５８】
上記のような業務フローデータは、業務が複雑になればなるほど、分岐アクションやジョインアクションが増え、フローも複雑化することになる。したがって、生成した業務フローデータに誤りを生じる可能性がある。業務の統一的指針であるべき業務フローデータの誤りは致命的であり、避けなければならない。本発明の実施形態による検証システムは、業務フローデータに誤りがないかどうかを検証するものである。特に、業務フローデータにおいて示された流れが妥当であるかどうかを検証する。
【００５９】
２．検証システムの全体構成
図５に、この発明の一実施形態による検証システムの機能ブロック図を示す。処理手順データＤは、業務フローデータなどの検証対象となるデータである。部分グラフ抽出手段２は、前記処理手順データＤ中の判断アクションに着目して、当該判断アクションによって流れを分割し、開始から終了までの流れを部分グラフデータとして抽出する。部分グラフ事象独立判断手段４は、部分グラフ抽出手段２が抽出を行う際に、これと協働して、抽出しようとしている部分グラフデータが、事象独立であるか否かを判断する。
【００６０】
事象独立判断結果出力手段６は、業務フローデータを構成するいずれかの部分グラフデータＷが事象独立でないとの判断が得られた場合には、当該業務フローデータの流れは妥当でないと判断し、これを判断結果として出力する。業務フローデータを構成する全ての部分グラフデータＷが、事象独立であるとの判断が得られた場合には、当該業務フローデータの流れは妥当であると判断し、これを判断結果として出力する。
【００６１】
図６に示すような業務フローデータの検証を行う場合を例として、図５のシステムの動作を説明する。
【００６２】
部分グラフ抽出手段２は、業務フローデータ中の判断アクションに注目して、部分グラフデータＷを抽出する。図６の業務フローデータであれば、判断アクションＡＣ３、ＡＣ１１に注目する。判断アクションＡＣ３では「１Ｌ」と「１Ｒ」に分岐し、判断アクションＡＣ１１においては「２Ｌ」と「２Ｒ」に分岐している。
【００６３】
部分グラフ抽出手段２は、図７Ａ、Ｂ、図８に示すように、判断アクションＡＣ３において「１Ｌ」に分岐した場合と、「１Ｒ」に分岐した場合のそれぞれについて、トリガーアクションＳＡからエンドアクションＥＡまでのフローを抜き出す。さらに、「１Ｒ」に分岐した場合には、「２Ｌ」に分岐した場合と、「２Ｒ」に分岐した場合のそれぞれについて抜き出す。
【００６４】
これを、部分グラフデータＷ(1-L,2-L)、Ｗ(1-R,2-L)、Ｗ(1-R,2-R)（本件明細書中において制限グラフデータということもある）という。したがって、ここでは、図７Ａ、Ｂ、図８に示す３つの部分グラフデータＷ(1-L,2-L)、Ｗ(1-R,2-L)、Ｗ(1-R,2-R)が抽出される。
【００６５】
図７Ａ、Ｂ、図８においては、部分グラフデータＷ(1-L,2-L)、Ｗ(1-R,2-L)、Ｗ(1-R,2-R)を模式的に示している。なお、各アクションにいずれのエビデンスが含まれるかは、業務フローデータを参照することでわかる。他の部分グラフデータＷについても同様である。
【００６６】
なお、この実施形態では、エビデンスのライフサイクルの整合性については検証を行わないので、エビデンスに関するデータは用いる必要がない。
【００６７】
次に、部分グラフ事象独立判断手段４は、上記で抽出した３つの部分グラフデータＷ(1-L,2-L)、Ｗ(1-R,2-L)、Ｗ(1-R,2-R)それぞれについて、事象独立であるか否かを判断する。ここで、部分グラフが事象独立であるとは、以下の条件i)ii)をともに満たす場合をいう。
【００６８】
i)当該部分グラフデータＷにジョインアクションが含まれるなら、それぞれのジョインアクションについて、当該ジョインアクションに入力するフローの全てが当該部分グラフデータＷに含まれる。
【００６９】
ii)当該部分グラフデータＷにマージアクションが含まれるなら、それぞれのマージアクションについて、当該マージアクションに入力する唯一つの入力フローのみ当該部分グラフデータＷに含まれる。
【００７０】
たとえば、図７Ａの部分グラフデータＷ(1-L,2-L)には、マージアクションが含まれているので、上記の条件ii)を検討することになる。部分グラフデータＷ(1-L,2-L)のマージアクションＡＣ６に対する入力は、フローｇ一つだけである。したがって、上記条件ii)を満足する。また、ジョインアクションは含まれていないので、条件i)は満足したものとする。したがって、部分グラフデータＷ(1-L,2-L)は、事象独立であると判断される。
【００７１】
同じように、図７Ｂの部分グラフデータＷ(1-R,2-L)、部分グラフデータＷ(1-R,2-R)についても判断が行われる。ここでは、これらの部分グラフデータも、事象独立であると判断される。
【００７２】
事象独立判断結果出力手段６は、対象となる業務フローデータに含まれる全ての部分グラフデータＷ(1-L,2-L)、Ｗ(1-R,2-L)、Ｗ(1-R,2-R)が事象独立であると判断されたので、当該業務フローデータによって示される業務の流れは、妥当であると判断する。
【００７３】
たとえば、図９に示すような業務フローデータが対象データであったとする。この場合、部分グラフ抽出手段２は、図１０Ａ、Ｂ、図１１に示すように、部分グラフデータＷ(1-L,2-L)、Ｗ(1-R,2-L)、Ｗ(1-R,2-R)を抽出する。
【００７４】
部分グラフ事象独立判断手段４は、図１０Ａの部分グラフデータＷ(1-L,2-L)および図１１の部分グラフデータＷ(1-R,2-R)について、事象独立であると判断する。しかし、図１０Ｂの部分グラフデータＷ(1-R,2-L)については、マージアクションＡＣ６に対して、２つのフローf1、d3が入力されており、上記の条件ii)を満たしていない。
【００７５】
したがって、事象独立判断結果出力手段６は、対象となる業務フローデータに含まれる部分グラフデータＷ(1-R,2-L)が事象独立でないので、当該業務フローデータによって示される業務の流れは、妥当でないと判断し、結果を出力する。この際、事象独立判断結果出力手段６は、事象独立でないと判断したフローf1、d3を指摘する出力を行う。
【００７６】
上記のようにして、流れの妥当性を検証することができる。
【００７７】
３．ハードウエア構成
図１２に、検証システムをＣＰＵを用いて構築した場合のハードウエア構成を示す。ＣＰＵ１０には、ディスプレイ１２、メモリ１４、キーボード／マウス１６、ＣＤ−ＲＯＭドライブ１８、ハードディスク２２が接続されている。
【００７８】
ハードディスク２２には、オペレーティングシステム（マイクロソフト社のWINDOWS（商標）など）２４、業務フロー作成プログラム２６、検証プログラム２８、業務フローデータ３０が記録される。
【００７９】
業務フロー作成プログラム２６は、業務フローデータ３０を作成するためのプログラムであり、オペレーティングシステム２４と協働してその機能を発揮する。検証プログラム２８は、作成された業務フローデータ３０について整合性を検証するプログラムであり、オペレーティングシステム２４と協働してその機能を発揮する。
【００８０】
なお、業務フロー作成プログラム２６、検証プログラム２８は、ともにＣＤ−ＲＯＭ２０に記録されていたものを、ＣＤ−ＲＯＭドライブ１８を介してインストールしたものである。
【００８１】
４．検証プログラム
ハードディスク２２に記録されている検証プログラム２８のフローチャートを、図１３ａ、１３ｂに示す。
【００８２】
ここでは、図６に示すような業務フローデータ３０の流れを検証する場合を例として説明する。なお、業務フローデータ３０としては、循環ループがないことを前提としている。削除可能な循環ループは予め削除した上で、検証を行う。
【００８３】
まず、ステップＪ１において、ＣＰＵ１０は、空のスタックＣＦ１と、空のリストＣＤＡ１、ＣＤＦ１、スタックＳ、リストＲを、メモリ１４に用意する。なお、スタックＣＦ１はフローを格納するためのものである。リストＣＤＡ１はチェック済のマージとジョインを格納するためのものであり、リストＣＤＦ１はチェック済のフローを格納するためのものである。さらに、ＣＰＵ１０は、これらのスタックＣＦ１、空のリストＣＤＡ１、ＣＤＦ１を組Ｓ１として、スタックＳに挿入する。したがって、メモリ１４には、図１４Ａのようにスタック、リストが用意される。
【００８４】
次に、ＣＰＵ１０は、トリガＳＡの出力フローｔをスタックＣＦ１に挿入する（ステップＪ２）。この時、図１４Ｂのような状態となる。
【００８５】
続いて、以下の処理をスタックＳが空になるまで繰り返す（ステップＪ３）。まず、スタックＳからＣＦ、ＣＤＡ、ＣＤＦの組を取り出す（ステップＳ３１）。ここでは、ＣＦ１、ＣＤＡ１、ＣＤＦ１の組Ｓ１が取り出されることになる。
【００８６】
続いて、ＣＰＵ１０は、以下の処理をスタックＣＦ（ここではＣＦ１）が空になるまで繰り返す（ステップＪ３２）。まず、スタックＣＦ１から、フローを取り出す（ステップＪ３２１）。ここでは、フローｔが取り出されることになる（図１４Ｃ参照）。
【００８７】
次に、取り出したフローｔがリストＣＤＦ（ここではＣＤＦ１）に入っているかを判断する（ステップＪ３２２）。入っていれば、事象独立でないと判断し、その旨と当該フローを指摘する出力をする（不整合処理という）。そして終了する。
【００８８】
入っていなければ、当該フローｔをリストＣＤＦ１に入れる（ステップＪ３２２ａ）。
【００８９】
次に、当該フローｔのターゲットとなっているアクションの種類を判定する（ステップＪ３２３）。ここでは、ターゲットアクションＡＣ１は、判断アクション、フォークアクション、マージアクション、ジョインアクションのいずれでもない通常のアクションなので（図６参照）、ステップＪ３２３ａに進む(図１３参照）。ＣＰＵ１０は、ステップＪ３２３ａにおいて、ターゲットアクションＡＣ１の出力フローａ（図６参照）をＣＦ（ここではＣＦ１）に挿入する。この時の状態は、図１５Ｄのようになる。
【００９０】
次に、ＣＰＵ１０は、ステップＪ３２１に戻って処理を行う。まず、スタックＣＦ１からフローａを取り出す。次に、このフローａを、リストＣＤＦ１に挿入する(ステップＳ３２２ａ)。このフローａのターゲットアクションＡＣ２は、通常のアクションである（図６参照）。したがって、ステップＪ３２３ａにおいて、ターゲットアクションＡＣ２の出力フローｂ（図６参照）をＣＦ１に挿入する。この時の状態は、図１５Ｅのようになる。
【００９１】
さらに、ＣＰＵ１０は、ステップＪ３２１に戻って処理を行う。まず、スタックＣＦ１からフローｂを取り出す。次に、このフローｂを、リストＣＤＦ１に挿入する(ステップＳ３２２ａ)。このフローｂのターゲットアクションＡＣ３は、判断アクションである（図６参照）。したがって、ＣＰＵ１０は、ステップＪ３２３ｂに処理を進める。
【００９２】
ステップＪ３２３ｂでは、ターゲットアクションである判断アクションＡＣ３の出力フローｆ１〜ｆｎの数を取得する。ここでは、判断アクションＡＣ３の出力フローは、ｄ１、ｄ２の２つ（ｎ＝２）である。ＣＰＵ１０は、ＣＦ１、ＣＤＡ１、ＣＤＦ１をｎ−１個コピーする。ここでは、ｎは２であるから、１つコピーを行う。したがって、ＣＦ１、ＣＤＡ１、ＣＤＦ１と内容が同じである、ＣＦ２、ＣＤＡ２、ＣＤＦ２が生成される。ＣＰＵ１０は、このＣＦ２、ＣＤＡ２、ＣＤＦ２を、スタックＳ２に挿入する(ステップＳ３２３ｃ)。
【００９３】
さらに、出力フローｄ１をスタックＣＦ１に挿入し、出力フローｄ２をスタックＣＦ２に挿入する（ステップＪ３２３ｄ）。この時の状態は、図１５Ｆのとおりである。
【００９４】
さらに、ＣＰＵ１０は、ステップＪ３２１に戻って処理を行う。まず、スタックＣＦ１からフローｄ１を取り出す（ステップＪ３２１）。リストＣＤＦ１にフローｄ１を挿入する(ステップＪ３２２ａ)。フローｄ１のターゲットアクションＡＣ４は、通常アクションである。したがって、アクションＡＣ４の出力フローｃを、スタックＣＦ１に挿入する（ステップＳ３２３ａ)。
【００９５】
さらに、ＣＰＵ１０は、ステップＪ３２１に戻って処理を行う。まず、スタックＣＦ１からフローｃを取り出す（ステップＪ３２１）。リストＣＤＦ１にフローｃを挿入する(ステップＪ３２２ａ)。フローｃのターゲットアクションＡＣ５は、通常アクションである。したがって、アクションＡＣ５の出力フローｇを、スタックＣＦ１に挿入する（ステップＳ３２３ａ)。この時の状態は、図１６Ｇのとおりである。
【００９６】
さらに、ＣＰＵ１０は、ステップＪ３２１に戻って処理を行う。まず、スタックＣＦ１からフローｇを取り出す（ステップＪ３２１）。リストＣＤＦ１にフローｇを挿入する(ステップＪ３２２ａ)。フローｇのターゲットアクションＡＣ６は、マージアクションである（図６参照）。したがって、ＣＰＵ１０は、ステップＪ３２３ｆに進んで処理を行う。
【００９７】
まずＣＰＵ１０は、当該マージアクションＡＣ６がＣＤＡ（ここではＣＤＡ１）に含まれているかを判断する。既に含まれていれば、事象独立でないと判断し、不整合処理を行う。上述の条件ii)に反するからである。
【００９８】
含まれていなければ、当該マージアクションＡＣ６をＣＤＡ１に挿入する。さらに、マージアクションＡＣ６の出力フローｍ（図６参照）をスタックＣＦ１に挿入する（ステップＪ３２３ｇ）。この時の状態は、図１６Ｈのとおりである。
【００９９】
ＣＰＵ１０は、再びステップＪ３２１に戻って処理を行う。これにより、フローｍ、ｋ、ｎに対する処理がなされる。フローｎに対する処理においては、ターゲットがエンドノードＥ１であるので、その出力フローは存在しない。したがって、フローｎに対する処理が終了した時点では、図１７Ｉに示すように、スタックＣＦ１は空となる。これにより、ループ０２を抜けることになる（ステップＪ３２参照）。
【０１００】
ループ０２を抜けると、ＣＰＵ１０は、リストＣＤＡ（ここではＣＤＡ１）内にある各ジョインアクションのそれぞれについて、当該ジョインアクションに入力するフローが全てＣＤＦ（ここではＣＤＦ１）に入っているかを判断する（ステップＪ３３）。つまり、上述の条件i)を判断する。
【０１０１】
ジョインアクションがある場合に、上記の条件を満足しない場合には、不整合処理を行う。ここでは、ＣＤＡ１にジョインアクションは入っていないので、ＣＤＦ（ここではＣＤＦ１）を、リストＲに挿入する（ステップＪ３３ａ）。この時の状態は、図１７Ｊに示すとおりである。リストＣＤＦ１には、事象独立と判断された部分グラフのフローの連続が記録されることになる。リストＣＤＦ１に抽出された部分グラフは、図７Ａに対応している。上記のようにして、事象独立である部分グラフが抽出される。
【０１０２】
次に、ＣＰＵ１０は、ステップＪ３１に戻って処理を行う。まず、スタックＳからＣＦ、ＣＤＡ、ＣＤＦの組を取り出す。ここでは、ＣＦ２、ＣＤＡ２、ＣＤＦ２が入っているので、これを取り出す（図１７Ｊ参照）。取り出したときの状態は、図１８Ｋのとおりである。
【０１０３】
ＣＰＵ１０は、上述と同じ様な手順で部分グラフの抽出を行う。ただし、ＣＤＦ２には、既に、判断アクションＡＣ３までのフローｔ、ａ、ｂが記録されている。したがって、フローｄ２から処理を開始すればよい。このように、前述のステップＪ３２３ｃにおいてＣＦ、ＣＤＡ、ＣＤＦを複製しておくことにより、重複した処理を省いて、迅速な処理を行うことができるようにしている。
【０１０４】
まず、ＣＰＵ１０は、スタックＣＦ２からフローｄ２を取り出す（ステップＪ３２１）。取り出したフローｄ２をリストＣＤＦ２に入れる（ステップＪ３２２ａ）。フローｄ２のターゲットアクションＡＣ７は通常アクションであるから、ステップＪ３２３ａを実行し、スタックＣＦ２にフローｈを入れる。この時の状態は、図１８Ｌに示すとおりである。
【０１０５】
ＣＰＵ１０は、再びステップＪ３２１に戻って処理を行う。まず、スタックＣＦ２からフローｈを取り出す（ステップＪ３２１）。リストＣＤＦ２にフローｈを挿入する(ステップＪ３２２ａ)。フローｈのターゲットアクションＡＣ８は、フォークアクションである（図６参照）。したがって、ＣＰＵ１０は、ステップＪ３２３ｅに進んで処理を行う。
【０１０６】
ステップＪ３２３ｅにおいて、ＣＰＵ１０は、フォークアクションＡＣ８の全ての出力フローをスタックＣＦに入れる。ここでは、出力フローｆ１、ｆ２が、スタックＣＦ２に入ることになる。この時の状態は、図１９Ｍのようになる。
【０１０７】
ＣＰＵ１０は、再びステップＪ３２１に戻って処理を行う。まず、スタックＣＦ２からフローｆ２を取り出す（ステップＪ３２１）。リストＣＤＦ２にフローｆ２を挿入する(ステップＪ３２２ａ)。フローｆ２のターゲットアクションＡＣ１１は、判断アクションである（図６参照）。したがって、ＣＰＵ１０は、ステップＪ３２３ｂに進んで処理を行う。
【０１０８】
ここでは、判断アクションＡＣ１１の出力フローは２つあるので、ＣＦ２、ＣＤＡ２、ＣＤＦ２をコピーしたＣＦ３、ＣＤＡ３、ＣＤＦ３を生成し、ＣＦ２にフローｄ３、ＣＦ３にフローｄ４を挿入する。
【０１０９】
ＣＰＵ１０は、再びステップＪ３２１に戻って処理を行う。まず、スタックＣＦ２からフローｄ３を取り出す（ステップＪ３２１）。リストＣＤＦ２にフローｄ３を挿入する(ステップＪ３２２ａ)。フローｄ３のターゲットアクションＡＣ１２は、通常アクションである（図６参照）。したがって、ＣＰＵ１０は、ステップＪ３２３ａに進んで処理を行い、スタックＣＦ２にフローｐを入れる。この結果、図２０Ｏのような状態となる。
【０１１０】
ＣＰＵ１０は、再びステップＪ３２１に戻って処理を行う。まず、スタックＣＦ２からフローｐを取り出す（ステップＪ３２１）。リストＣＤＦ２にフローｐを挿入する(ステップＪ３２２ａ)。フローｐのターゲットアクションＥＡ２は、エンドノードである（図６参照）。したがって、ＣＰＵ１０は、ステップＪ３２３ａに進んで処理を行う。スタックＣＦ２に入れるフローは存在しない。この結果、図２０Ｐのような状態となる。
【０１１１】
ＣＰＵ１０は、再びステップＪ３２１に戻って処理を行う。ここでは、スタックＣＦ２にフローｆ１が記録されているので、これを取り出して処理を実行する。以下、エンドノードＥ１まで実行すると、図２１Ｑに示すような状態となる。
【０１１２】
続いて、ＣＰＵ１０は、ステップＪ３３に進み、ジョインについてのチェックを行う。ここでは、リストＣＤＡ２にはジョインが含まれていないので、条件i)を満足しているものとする。次に、リストＣＤＦ２を、リストＲに挿入する（ステップＪ３３ａ）。その結果、図２１Ｒに示すように、事象独立である部分グラフがＣＤＦ２に抽出されることになる。この部分グラフは、図７Ｂに対応している。
【０１１３】
ＣＰＵ１０は、再びステップＪ３２１に戻って処理を行う。以下同様の処理を繰り返し、図２２に示すように、リストＣＤＦ３に部分グラフを抽出する。この部分グラフは、図８に対応している。
【０１１４】
５．他の実施形態
(1)上記各実施形態では、部分グラフデータを抽出しつつ、事象独立性の検証を行うようにしている。しかし、部分グラフデータの抽出を行った後、事象独立性を検証するようにしてもよい。
【０１１５】
(2)上記実施形態では、業務フローデータを対象として検証を行ったが、機器などの処理フロー一般にも適用することができる。
【０１１６】
(3)上記実施形態では、完全な業務フローデータを対象として検証を行った。しかし、業務フローが大がかりである場合、数人の作業者によって業務フローを分割して作成することもある。このような場合においても、完成した業務フローデータに対し、上述の実施形態を用いて検証を行うことができる。
【０１１７】
しかし、各作業者が自らの担当部分の業務フローデータだけで、事象独立でない場合を見いだすことができれば、効率的である。そこで、この実施形態では、担当部分の業務フローデータ単独で、事象独立でない場合を見いだせるようにした。
【０１１８】
たとえば、図６の業務フローデータを、図２３ａに示すように、α要素とβ要素の２つに分けて作成するものとする。ここで、α要素やβ要素だけの独立性の判断を行う。ＣＰＵ１０が行う手順は以下のとおりである。
【０１１９】
α要素について、コネクタＪ１、Ｊ２をエンドノードとみなして、第一の実施形態と同じように、事象独立性を判断しつつ部分グラフの抽出を行う。
【０１２０】
β要素については、コネクタＪ１、Ｊ２をトリガ（開始ノード）とみなして、事象独立性を判断しつつ部分グラフの抽出を行う。開始ノードが一つの場合には、第１の実施形態と同じ処理で、部分グラフの抽出と自称独立性の判断を行うことができる。しかし、β要素のように複数の開始ノードがある場合には、第１の実施形態と同様の方法は用いることができない。以下、その処理内容を説明する。
【０１２１】
まず、複数あるそれぞれの開始ノードに注目して、第１の実施形態において部分グラフを抽出したと同じ方法によって、中間生成部分グラフを抽出する。つまり、図２３ｂに示すように、３つの中間生成グラフが抽出される。この中間生成グラフを抽出する際に、ＣＰＵ１０は、以下の基準にしたがって、事象独立であるかどうかを判断する。抽出した各中間生成グラフに含まれる任意のアクションについて、以下の条件を満たせば、事象独立性があると判断する。
【０１２２】
i)判断アクションであるとき、当該中間生成グラフは、当該判断アクションの出力フローを一つだけ持つ。
【０１２３】
ii)マージアクションであるとき、当該中間生成グラフは、当該マージアクションの入力フローを一つだけ持つ。
【０１２４】
iii)ジョインアクションであるとき、当該中間生成グラフは、当該ジョインアクションの入力フローを一以上持つ。さらに、当該中間生成グラフは、ジョインアクションの出力フローを持つ。
【０１２５】
iv)上記以外のアクションであるとき、当該中間生成グラフは、当該アクションの入出力フローを持つ。
【０１２６】
なお、具体的な処理としては、図１３ａ、図１３ｂと基本的に同じ判断をする。しかし、ステップＪ３２３ｂにおいて、当該ジョインがリストＣＤＡに含まれて入れば何もせずにループ０２の終わりまで進む。また、当該ジョインがリストＣＤＡに含まれていなければ、ジョインアクションをリストＣＤＡに挿入し、ジョインアクションの出力フローをスタックＣＦに挿入する。その後、ループ０２の終わりまで進む。このような点が、図１３ａ、図１３ｂとは異なっている。
【０１２７】
なお、上記のようにして中間生成グラフの全てについて事象独立性があることを確認すると、次に、中間生成グラフを貼り合わせて部分グラフ（トレースグラフという）を生成する。そして、貼り合わせて完成したトレースグラフについて事象独立であるか否かを判断する。
【０１２８】
中間生成グラフの貼り合わせは、以下のようにして行う。２つの中間生成グラフU1とU2について、以下の条件の全てが成り立つとき、U1とU2は貼り合わせ可能である。
【０１２９】
i)U1とU2は互いに競合しない
ii)U1とU2はあるノードを共有する
ここで、「競合」とは、以下のいずれかが成り立つ場合をいう。
【０１３０】
i)U1とU2がある判断アクションを共有し、U1に含まれる判断アクションの出力フローと、U2に含まれる判断アクションの出力フローが互いに異なる
b)U1とU2があるマージを共有し、U1に含まれるマージの入力フローと、U2に含まれるマージの入力フローが互いに異なる
次に、全ての中間生成グラフの集合Uから得られる貼り合わせに関する極大閉集合の全体χを{X1,X2,X3...Xn}とする。この時に、ＣＰＵ１０は、任意のXiの任意の要素xijに含まれる任意のジョインアクションの入力フローのいずれもが、Xiのいずれかの要素xikに含まれるかどうかかを判断する。これが肯定的であれば、業務フローが事象独立であると判断し、X1,X2,X3...Xn のそれぞれを、トレースグラフとして出力する。
【０１３１】
ここで、中間生成グラフの集合Uから得られる貼り合わせに関する極大閉集合{x1,x2,x3...xn}をどのようにして求めるのかを説明する。ＣＰＵ１０は、抽出した中間生成グラフU1,U2...Unについて、以下の条件i)ii)iii)を満たすような中間生成グラフの組（集合Uの部分集合X={x1,x2,x3...xn}）を抽出する。
【０１３２】
c)Xは貼り合わせ可能な関係について連結である。ここで、貼り合わせ可能な関係について「連結」とは、Xの要素x1,x2,x3...xnから任意の要素を２つを選んだいずれの場合であっても、その２つの要素が直接または間接に貼り合わせ可能な関係にあることをいう。
【０１３３】
直接に貼り合わせ可能とは、２つの要素xpとxqが前述の貼り合わせ可能な関係にあることをいう。さらに、間接に貼り合わせ可能とは、２つの要素xpとxqが前述の貼り合わせ可能な関係にないが、X中の他の要素xrを介して、連結可能な関係にあることをいう。具体的には、要素xpとxrが貼り合わせ可能であり、要素xqとxrが貼り合わせ可能であることをいう。なお、xrのように介在する要素が２以上あってもよい。ＣＰＵ１０は、すべての要素の対について、以上の判定を行う。
【０１３４】
ii)Xのどの２つの要素をとってきても、互いに競合しないこと。ＣＰＵ１０は、全ての要素の対について、以上の判定を行う。
【０１３５】
iii)上記の２条件を満たすものの中で極大のものを選ぶ。ＣＰＵ１０は、上記の条件を満足する集合を全て選び出すものではない。たとえば、X={x1,x2,x3}が上記の２条件を満足していたとする。さらに、X={x1,x2,x3,x4}が上記の2条件を満足していれば、ＣＰＵ１０は、X={x1,x2,x3}を極大閉集合として選択しない。X={x1,x2,x3,x4}が、X={x1,x2,x3}を含む関係にあるからである。自らを含むような上位の集合がそれ以上見いだされない場合に、それを極大という。
【０１３６】
上記のようにして、二以上の開始ノードを有する業務フローの事象独立のチェックとトレースグラフの抽出が行われる。
【０１３７】
α要素、β要素のいずれかが事象独立でない場合、これを結合した業務フローデータが事象独立となることはない。したがって、α要素あるいはβ要素だけで事象独立でないことが判明すれば、当該要素だけを迅速に修正することができる。
【０１３８】
一方、α要素およびβ要素の双方が事象独立であるからといって、これを結合した業務フローデータが事象独立であるとは限らない。したがって、α要素およびβ要素の双方が事象独立であることを検証した後、両者を結合して図６のような状態にした後、第一の実施形態による検証を行う。
【０１３９】
なお、上記では、２つの要素に分けられる場合について説明したが、３以上の要素に分けられる場合についても同様に検証を行うことができる。
【０１４０】
なお、上記のβ要素では、抽出した３つの中間生成グラフ（図２３ｂ）は、いずれも、それ単独でトレースグラフとなっており貼り合わせを行う必要がない。貼り合わせが必要となる業務フローデータの例を、図２３ｃに例として示す。これから得られる中間生成グラフは、図２３ｄ、図２３ｅに示す８つである。これらを上記の条件に従って貼り合わせると、図２３ｆ、図２３ｇ、図２３ｈ、図２３ｉ、図２３ｊ、図２３ｋの４つのトレースグラフが得られる。
【０１４１】
また、図２３ａでは業務フローデータを２つに分けたために、トリガが２以上生じた場合について説明したが、業務フローに最初から２以上のトリガが含まれる場合にも同様の処理を行うことができる。
【０１４２】
６．利用例
上記実施形態では、事象独立であるか否かを判断するだけでなく、部分グラフデータ（トレースグラフデータ）も出力するようにしている。事象独立性が保証されている部分グラフデータ（トレースグラフデータ）を参照することにより、作業者は、局所的な情報だけで、業務フローデータの見直しなどを行うことができる。たとえば、あるアクションＡに対して、Ａの直前で複数の入力フローを持つアクションが存在するとする。従来であれば、それまでの状況に応じて作業の流れがどのようにやってくるかについて検討しなければ、流れを確認できなかった。
【０１４３】
しかし、この実施形態によれば、事象独立であることが検証されているので、たとえばアクションがジョインなら、全ての入力フローから作業が入ってくることが明確であり、当該アクションの性質を、局所的な情報だけを使って検証することが可能となる。このことは、大規模な業務フロー図の局所的な見直しを行う場合や、大規模な業務フロー図の一部分だけを作成する場合等に有効である。
【０１４４】
また、当該業務グラフの性質について検証を行う場合にも、上記のようにして事象独立な部分グラフを抽出しておくことで、検証を効率的に行うことが可能となる。
【０１４５】
７．エビデンスの状態変化の検証
上記の事象独立な部分グラフデータの抽出結果を利用して、エビデンスの状態変化の整合性を検証する場合について説明する。
【０１４６】
(1)検証システムの全体構成
図２４に、検証システムの機能ブロック図を示す。処理手順データＤは、業務フローデータなどの検証対象となるデータである。事象独立部分グラフ抽出手段５２は、処理手順データＤから部分グラフデータＷを抽出する。部分グラフ判断手段５４は、抽出したそれぞれの部分グラフデータＷについて、処理対象（たとえばエビデンス）の状態変化がフローとの関係において整合的であるか否かを判断する。なお、事象独立部分グラフ抽出手段５２は、図５の部分グラフ抽出手段２、部分グラフ事象独立判断手段４、事象独立判断結果出力手段６をまとめて表したものである。
【０１４７】
判断結果出力手段５６は、業務フローデータを構成するいずれかの部分グラフデータＷにおいて、整合的でないとの判断が得られた場合には、処理対象の変化が処理手順と整合的でないとの判断結果を出力する。業務フローデータＤを構成する全ての部分グラフデータＷにおいて、整合的であるとの判断が得られた場合には、処理対象の変化が処理手順と整合的であるとの判断結果を出力する。
【０１４８】
図２５に示すような業務フローデータの検証を行う場合を例として、図４のシステムの動作を説明する。
【０１４９】
事象独立部分グラフ抽出手段２は、業務フローデータ中の判断アクションに注目して、部分グラフデータＷを抽出する。抽出の仕方は、前述の実施形態のとおりであるが、概略を再掲すると以下のとおりである。
【０１５０】
図２５の業務フローデータであれば、判断アクションＡＣ３に注目する。この判断アクションＡＣ３では、「Ｌ」と「Ｒ」に分岐している。部分グラフ抽出手段２は、図２６Ａ、Ｂに示すように、判断アクションＡＣ３において「Ｌ」に分岐した場合と、「Ｒ」に分岐した場合のそれぞれについて、トリガーアクションＳＡからエンドアクションＥＡまでのフローを抜き出す。これを、部分グラフデータＷ(L)、Ｗ(R)（本件明細書中において制限グラフデータということもある）という。したがって、ここでは、図２６Ａと図２６Ｂに示す２つの部分グラフデータＷ(L)、Ｗ(R)が抽出される。
【０１５１】
図２６Ａ、図２６Ｂにおいて、部分グラフデータＷ(L)、Ｗ(R)を模式的に示している。具体的には、部分グラフデータＷ(L)は、SA-AC1-AC2-AC3(L)-AC4-AC5-AC6-AC7-AC8-EA1というように、アクションの連続として記録される。なお、各アクションにいずれのエビデンスが含まれるかは、業務フローデータを参照することでわかる。部分グラフデータＷ(R)についても同様である。
【０１５２】
次に、部分グラフ判断手段４は、上記で抽出した２つの部分グラフデータＷ(L)、Ｗ(R)それぞれについて、処理対象であるエビデンスの状態変化が、フローとの関係において整合的であるか否かを判断する。２つの部分グラフデータＷ(L)、Ｗ(R)がともに整合的であれば、業務フローデータ全体も整合的であると判断することができる。
【０１５３】
部分グラフ判断手段５４は、部分グラフデータＷ(L)において、エビデンスのライフサイクルを抽出する。抽出した全てのエビデンスのライフサイクルが正常であれば、当該部分グラフデータＷ(L)が整合的であると判断する。部分グラフデータＷ(R)についても同様の判断を行う。
【０１５４】
図２６Ａの部分グラフデータＷ(L)に対しては、図２７Ａに示すように、エビデンスＡ、Ｂ、ＣのライフサイクルＬＬA、ＬＬB、ＬＬCを抽出する。同様に、図２６Ｂの部分グラフデータＷ(R)に対しては、図２７Ｂに示すように、エビデンスＡ、Ｂ、ＣのライフサイクルＬＲA、ＬＲB、ＬＲCを抽出する。
【０１５５】
図においては、エビデンスのライフサイクルを模式的に示している。具体的には、たとえば、ライフサイクルＬＬAは、(+)A−A−(-)Aというように記録される。他のライフサイクルについても同様である。
【０１５６】
各エビデンスのライフサイクルが、下記の条件i)〜v)を全て満たしていれば、当該ライフサイクルは正常であると判断することができる。
【０１５７】
i)ライフサイクルに含まれるアクションは、いずれもエビデンスを含む
ii)ライフサイクルの最初のアクションは(+)マークのエビデンスを持つ
iii)ライフサイクルの最初のアクション以外のアクションは(+)マークのエビデンスを持たない
iv)ライフサイクルの最後のアクションは(-)マークのエビデンスを持つ
v)ライフサイクルの最後のアクション以外のアクションは(-)マークのエビデンスを持たない
図２７Ａに示された各エビデンスのライフサイクルＬＬA、ＬＬB、ＬＬCは、全て上記の条件を満たすので、図２６Ａの部分グラフデータＷ(L)は、整合的であると判断できる。同様に、図２７Ｂに示された各エビデンスのライフサイクルＬＲA、ＬＲB、ＬＲCは、全て上記の条件を満たすので、図２６Ｂの部分グラフデータＷ(R)も、整合的であると判断できる。
【０１５８】
判断結果出力手段５６は、業務フローデータに含まれる全ての部分グラフデータＷ(L)、Ｗ(R)が整合的であるので、全体としてエビデンスの変化が処理手順と整合的であると判断することができる。そして、その結果を出力する。
【０１５９】
たとえば、図２８に示すような業務フローデータを検証したとする。事象独立部分グラフ抽出手段５２によって、図２９Ａに示す部分グラフデータＷ(L)と、図２９Ｂに示す部分グラフデータＷ(R)が抽出される。
【０１６０】
部分グラフ判断手段５４は、図２９ＢのライフサイクルＬＲCが、上記の条件ii)を満たしていないことを見い出す（エビデンスＣが作成されずにいきなり登場していることを意味する）。したがって、部分グラフデータＷ(R)のエビデンスＣについて、整合性がないことを検出することができる。
【０１６１】
判断結果出力手段５６は、部分グラフデータＷ(R)のエビデンスＣについて、整合性がないことを出力する。
【０１６２】
上記のようにして、業務フローデータの検証を行うことができる。
【０１６３】
(2)検証プログラム
ハードディスク２２に記録されている検証プログラム２８の機能は、図２４に示すものと基本的に同じである。ただし、この実施形態では、部分グラフ判断手段５４が、図３０に示すように、ライン抽出手段４０、ライン内処理対象判断手段４２、ライン判断手段４４を備えて構成されている。
【０１６４】
ライン抽出手段４０は、業務フローデータからラインデータＬを抽出する。ライン内処理対象判断手段４２は、抽出した各ラインデータＬについて、処理対象であるエビデンスの変化が整合的であるか否かを判断する。
【０１６５】
ライン判断手段４４は、各ラインデータ毎、処理対象毎に得られた整合性判定のうち、非整合的であると判断されたものについて、他のラインデータを参照すれば整合的であると判断できるものを見い出す。この判断は、抽出した部分グラフデータＷごとに行う。これによって、部分グラフデータＷを構成する各ラインデータＬにおいて、エビデンスの変化が処理手順と整合的であるか否かを判断する。
【０１６６】
部分グラフデータＷを構成する全てのラインデータＬについてエビデンスの変化が整合的であれば、当該部分グラフデータＷは整合的であると判定する。
【０１６７】
図３１ａに、この実施形態における検証プログラム２８のフローチャートを示す。まず、ステップＳ１において、ＣＰＵ１０は、検証対象である業務フローデータ３０から、部分グラフデータを抽出する。ここでは、図６に示すような業務フローデータ３０について、検証を行うものとして説明を行う。図６の業務フローデータ３０には、２つの判断アクションＡＣ３、ＡＣ１１が含まれている。したがって、図７Ａ、図７Ｂ、図８に示すように、３つの部分グラフデータＷ(1-L,2-L)、Ｗ(1-R,2-L)、Ｗ(1-R,2-R)が抽出されることになる。
【０１６８】
なお、Ｗ(1-R,2-L)は、判断アクションＡＣ３において「Ｒ」である場合、判断アクションＡＣ１１において「Ｌ」である場合の部分グラフを示している。判断アクションが２つあるので、４つの部分グラフデータが抽出されそうであるが、図８の業務フローデータでは、部分グラフデータＷ(1-L,2-L)と部分グラフデータＷ(1-L,2-R)が同じであるため、３つの部分グラフデータが抽出されることになる。抽出した部分グラフデータは、ハードディスク２２に記録される。
【０１６９】
次に、ＣＰＵ１０は、業務フローデータ３０について、ステップＳ２以下を実行する。ステップＳ２に示すように、業務フローデータ３０内の各フローを検出し、各フロー毎に（ループ０１）、ステップＳ３、Ｓ４の繰り返し処理を実行する。
【０１７０】
ステップＳ３に示すように、検出したフローにしたがって、ラインデータＬを抽出する。そして、検出したラインデータＬごとに、ステップＳ４以下を繰り返す（ループ０２）。
【０１７１】
ここで、ラインデータＬとは、業務フローデータ中のフローのつながりであって、下記の条件i)〜iii)を全て満たすものをいう。
【０１７２】
i)始点のフローが有するアクションは、通常アクション（判断、マージ、フォーク、ジョイン以外のアクションをいう）であるかトリガーアクションである。
【０１７３】
ii)終点のフローが有するアクションは通常アクションである。
【０１７４】
iii)始点と終点との間に通常アクションが存在しない。
【０１７５】
したがって、ラインデータＬには、始点または終点以外の部分にエビデンスが記載されることがない。
【０１７６】
この実施形態では、たとえば深さ最優先検索アルゴリズムを用いて、業務フローデータ３０中から、上記条件に基づいてラインデータＬを抽出している。ＣＰＵ１０は、抽出したラインデータＬを、ハードディスク２２に記録する。ここでは、図３２の矢印にて示すラインデータＬa、Ｌb、Ｌc、Ｌd、Ｌe、Ｌf、Ｌ1、Ｌ2，Ｌ3、Ｌ4が抽出されることになる。
【０１７７】
ＣＰＵ１０は、ステップＳ４〜Ｓ１４に示すステップにしたがって、上記の状態把握を実行する。ステップＳ４に示すように、ＣＰＵ１０は、抽出したラインデータについて、当該ラインに記述されているエビデンスも抽出する。たとえば、図３２のラインデータＬaは、エビデンスＡを有しているので、ラインデータ(La,A)として抽出する。ラインデータＬ４は、エビデンスＡ、Ｂ、Ｃを有しているので、ラインデータ(L4,A)、ラインデータ(L4,B)、ラインデータ(L4,C)というように、３つのラインデータを抽出する。
【０１７８】
次に、ＣＰＵ１０は、抽出した各ラインデータＬについて、表１に示す４つの状態のいずれであるかを決定し、当該ラインデータＬに対応づけて記録する。
【０１７９】
【表１】
0004998884.tif 000002
【０１８０】
整合的継続状態、整合的非継続状態は、ラインデータ単独だと整合的であると判断できるものである。
【０１８１】
非整合的出現状態、非整合的消滅状態は、最終的に整合性が無いと判断される可能性を有するものである。
【０１８２】
具体的には、ＣＰＵ１０は、ステップＳ５以下の処理によって、上記抽出したラインデータのそれぞれについて状態把握を行う（ループ０３）。
【０１８３】
まず、ステップＳ５において、ＣＰＵ１０は、対象となるラインデータＬが、表１に示す「整合的継続状態」の条件に合致するかを判断する。この判定が肯定的であれば、ＣＰＵ１０は、当該ラインデータＬについて、整合的継続状態であることをハードディスク２２に記録する（図３３参照）。たとえば、ラインデータ(Lb,A)やラインデータ(L2,B)などは、上記条件に合致するので、図３３に示すように整合的継続状態として記録される。
【０１８４】
整合的継続状態であるラインデータＬに対し、ＣＰＵ１０は、当該ラインデータＬがフォークまたはジョインを持つかを判断する（ステップＳ６）。そうでなければ、ステップＳ１４に進み、ループ０３の処理を繰り返す。フォークまたはジョインを持っていれば、当該ラインデータＬを解Ｓｕｃに分類して記録する（ステップＳ７）。たとえば、ラインデータ(L2,B)であれば、フォークを有するので、図３５に示すように、解Ｓｕｃに分類されて記録される。続いて、ステップＳ１４に進み、ループ０３の処理を繰り返す。
【０１８５】
ステップＳ５における判定が否定的である場合（つまり整合的継続状態でない場合）、ＣＰＵ１０は、対象となるラインデータＬが表１に示す「非整合的出現状態」の条件に合致するかを判断する(ステップＳ８)。この判定が肯定的であれば、ＣＰＵ１０は、当該ラインデータＬについて、非整合的出現状態であることをハードディスク２２に記録する（図３３参照）。たとえば、ラインデータ（L1,C）は、上記条件に合致するので、図３３に示すように非整合的出現状態として記録される。
【０１８６】
非整合的出現状態であるラインデータＬに対し、ＣＰＵ１０は、当該ラインデータＬがジョインを持つかを判断する（ステップＳ９）。ジョインを持っていれば、当該ラインデータＬを解決可能非整合Ｉｎｑに分類して記録する（ステップＳ１０）。続いて、ステップＳ１４に進み、ループ０３の処理を繰り返す。
【０１８７】
ジョインを持っていなければ、当該ラインデータＬを解決不能非整合Ｒｅｓに分類して記録する（ステップＳ１３）。たとえば、ラインデータ(L1,C)はジョインを持たないので、図３５に示すように、解決不能非整合Ｒｅｓに分類されて記録される。続いて、ステップＳ１４に進み、ループ０３の処理を繰り返す。
【０１８８】
ステップＳ８における判定が否定的である場合（つまり整合的継続状態でも、非整合的出現状態でもない場合）、ＣＰＵ１０は、対象となるラインデータＬが表１に示す「非整合的消滅状態」の条件に合致するかを判断する(ステップＳ１１)。この判定が肯定的であれば、ＣＰＵ１０は、当該ラインデータＬについて、非整合的消滅状態であることをハードディスク２２に記録する（図３３参照）。たとえば、ラインデータ（L4,A）、ラインデータ(L4,B)やラインデータ(L2,A)などは、上記条件に合致するので、図３３に示すように非整合的消滅状態として記録される。
【０１８９】
非整合的消滅状態であるラインデータＬに対し、ＣＰＵ１０は、当該ラインデータＬがフォークを持つかを判断する（ステップＳ１２）。フォークを持っていれば、当該ラインデータＬを解決可能非整合Ｉｎｑに分類して記録する（ステップＳ１０）。たとえば、ラインデータ(L4,A)やラインデータ(L4,B)などはフォークを有するので、図３５に示すように、解決可能非整合Ｉｎｑに分類されて記録される。続いて、ステップＳ１４に進み、ループ０３の処理を繰り返す。
【０１９０】
フォークを持っていなければ、当該ラインデータＬを解決不能非整合Ｒｅｓに分類して記録する（ステップＳ１３）。続いて、ステップＳ１４に進み、ループ０３の処理を繰り返す。
【０１９１】
ステップＳ１１における判定が否定的である場合（つまり整合的継続状態でも、非整合的出現状態でも、非整合的消滅状態でもない場合）、ＣＰＵ１０は、対象となるラインデータＬを、整合的非継続状態に分類して記録する。たとえば、ラインデータ(La,A)は、図３５に示すように、整合的非継続状態に分類されて記録される。
【０１９２】
なお、上記において、解決不能非整合Ｒｅｓに分類されたラインデータ(L1,C)は、非整合的であることが確定したものである。図３４から分かるように、エビデンスＣが突然、現れるという非整合性を有している。
【０１９３】
解決可能非整合Ｉｎｑに分類されたラインデータ(L2,A)(L3,B)(L3,C)(L4,A)(L4,B)(L4,C)は、他のラインデータとの関係によっては、整合であると判断できる可能性があるものである。
【０１９４】
解Ｓｕｃに分類されたラインデータ(L2,B)(L2,C)(L3,A)は、上記の解決可能非整合Ｉｎｑであるとされたラインデータの非整合性を解決するものである。
【０１９５】
上記のようにしてラインデータＬを分類した後、ＣＰＵ１０は、ステップＳ１にて抽出した部分グラフデータごとに、解決可能非整合Ｉｎｑであると分類されたラインデータについて、その解があるかどうか（つまり整合性があるかどうか）を判断する。この処理フローチャートを、図３１ｂに示す。
【０１９６】
ステップＳ２０では、ループ０４として、部分グラフデータごとに処理がなされることが示されている。ＣＰＵ１０は、対象とする部分グラフデータ中から、
解Ｓｕｃおよび解決可能非整合Ｉｎｑに分類されたラインを抽出する（ステップＳ２１）。なお、図３１ｂのステップＳ２１において、ＳｕｃΠＷ(i)は、Sucに含まれるラインデータ(L,E)で、ＬがＷ(i)に含まれるものの集まりという意味である。ＩｎｑΠＷ(i)についても同様である。
【０１９７】
具体的には、部分グラフデータＷ(1-L,2-L)であれば、該当するものがないので何も抽出されない（図３６Ｂ参照）。部分グラフデータＷ(1-R,2-L)については、解Ｓｕｃとしてラインデータ(L2,B)(L2,C)(L3,A)が選ばれ、解決可能非整合Ｉｎｑとしてラインデータ(L2,A)(L3,B)(L3,C)が選ばれる（図３６Ｂ参照）。部分グラフデータＷ(1-R,2-R)については、解Ｓｕｃとしてラインデータ(L2,B)(L2,C)が選ばれ、解決可能非整合Ｉｎｑとしてラインデータ(L2,A)(L4,A)(L4,C)が選ばれる（図３６Ｂ参照）。
【０１９８】
次に、ＣＰＵ１０は、解決可能非整合Ｉｎｑとして抽出した上記の各ラインデータ(L2,A)(L3,B)(L3,C)ごとに、ステップＳ２３以下の処理を行う（ステップＳ２２）。
【０１９９】
ステップＳ２３において、ＣＰＵ１０は、対象とする解決可能非整合ＩｎｑのラインデータＬに対して、解となるラインデータＬ'（解Ｓｕｃ）があるかどうかを判断する（ステップＳ２３）。この判断は、具体的には、ラインデータＬに対し合流するか、またはラインデータＬから枝分かれしているラインデータＬ'であって、かつ、ラインデータＬと同じフロー、同じエビデンスを有するラインデータＬ'が、当該部分グラフWから抽出した解Ｓｕｃ中にあるか否かに基づいて行う。
【０２００】
上記の条件に合致する解Ｓｕｃが存在しなければ、当該対象とする解決可能非整合ＩｎｑのラインデータＬを、解決不能非整合Ｒｅｓに記録する。（ステップＳ２４）。解Ｓｕｃが存在すれば、当該解決可能非整合ＩｎｑのラインデータＬは、整合性があると判断する。
【０２０１】
たとえば、ラインデータ(L2,A)のエビデンスＡについては、当該エビデンスを有する解としてのラインデータ(L3,A)が存在する。したがって、ラインデータ(L2,A)は整合的であると判断できる。これは、図３６Ｂからも分かるように、エビデンスＡは、フォークがあることによって、ラインデータＬ２の処理からは消えているが、ラインデータＬ３の方で処理されており、整合的であるといえることを表している。
【０２０２】
同じように、ラインデータ(L3,B)(L3,C)に対しては、それぞれ、ラインデータ(L2,B)(L2,C)が解として存在する。したがって、部分グラフデータＷ(1-R,2-L)は整合的であると判断することができる。
【０２０３】
したがって、部分グラフデータW(1-R,2-L)については、既に解決不能非整合Ｒｅｓとして記録されているラインデータ(L1,C)に加えて、新たに、解決不能非整合Ｒｅｓとして記録するラインデータはない。
【０２０４】
一方、部分グラフデータＷ(1-R,2-R)については、以下のように、解決不能非整合Ｒｅｓが新たに見いだされて記録される。まず、ＣＰＵ１０は、図３５において分類したラインデータの内、部分グラフデータＷ(1-R,2-R)に含まれるラインデータのみを選び出す(ステップＳ２１)。したがって、解Ｓｕｃとしてラインデータ(L2,B)(L2,C)が選ばれ、解決可能非整合Ｉｎｑとしてラインデータ(L2,A)(L4,A)(L4,B)(L4,C)が選ばれる（図３７参照）。
【０２０５】
解決可能非整合Ｉｎｑであるラインデータ(L4,B)(L4,C)については、解Ｓｕｃであるラインデータ(L2,B)(L2,C)が存在する。しかし、ラインデータ(L2,A)(L4,A)については、解が存在しない。したがって、ＣＰＵ１０は、非整合であるとして、ラインデータ(L2,A)(L4,A)を、解決不能非整合Ｒｅｓに記録する。これにより、解決不能非整合Ｒｅｓには、ラインデータ(L1,C)(L2,A)(L4,A)が記録されることになる。
【０２０６】
次に、ＣＰＵ１０は、対象となっている部分グラフＷ中の解ＳｕｃのラインデータＬごとに、ステップＳ２７以下を実行する（ループ０５）。ステップＳ２７では、対象となっている部分グラフＷの解Ｓｕｃについて、当該対象となっている部分グラフＷの他の解Ｓｕｃとの関係で、矛盾を生じていないかどうかを判断する。具体的には、対象部分グラフＷの解ＳｕｃのラインデータＬと、同じフロー、同じエビデンスを持つラインデータＬ'であって、ラインデータＬと合流するか、あるいはラインデータＬから分岐するラインデータＬ'が、対象部分グラフＷの解Ｓｕｃ中にあるかどうかを判断する（ステップＳ２７）。このようなラインデータＬ'が存在するということは、フローの分岐または合流によって、本来は複数あるはずのエビデンスが１つになったり、１つのエビデンスが複数にされたりしている非整合が生じていることになる。したがって、そのようなラインデータＬ'が存在すれば、ＣＰＵ１０は、これを解決不能非整合Ｒｅｓに記録する（ステップＳ２８）。続いて、ステップＳ３０に進み、ループ０６の処理を繰り返す。
【０２０７】
また、上記のようなラインデータＬ'が見いだされない場合には、何もせずに、
ステップＳ３０に進み、ループ０５の処理を繰り返す。
【０２０８】
ループ０５、ループ０４の処理を全て終了すると、次に、ＣＰＵ１０は、解決不能非整合Ｒｅｓに記録されたラインデータ(L1,C)(L2,A)(L4,A)に基づいて、非整合部分の指摘をディスプレイ１２に表示する（プリンタなどから出力したり、データとして出力してもよい）（ステップＳ３２）。
【０２０９】
たとえば、図３８に示すように、業務フローデータをディスプレイに表示し、解決不能非整合Ｒｅｓであるラインデータ(L1,C)(L2,A)(L4,A)および問題のあるエビデンスＡ、Ｃを、ハイライト表示などで区別可能なように表示することができる。
【０２１０】
上記表示に加えて（あるいは単独で）、非整合の内容を文字などで表示してもよい。たとえば、次のような表示を行うことができる。
【０２１１】
i)１−Lのとき、Ｌ１においてＣが不当に出現すること
ii)１−Rかつ２−Rのとき、Act１のＡがどこにも移動しないこと
なお、上記のようなメッセージは、状況を分類し、各状況に対応する文章をあらかじめ用意しておくことによって表示することができる。
【０２１２】
なお、上記の例において示した業務フロー図（アクティビティ図）は、説明のために示したものであり、他の業務フロー図についても本発明による検証を行うことができる。
【０２１３】
(3)その他の実施形態
上記実施形態では、処理手順データが１つのファイルとして記録されている場合について説明した。処理手順データが２つ以上のファイルに跨っている場合には、各ファイルにおけるフローの始点と終点を接続することにより、検証を行うことができる。
【０２１４】
上記実施形態では、処理対象がエビデンスである場合について説明した。しかし、アクションによって処理され、その状態が変化するものであれば、同様に検証を行うことができる。
【０２１５】
上記実施形態では、ステップＳ１において部分グラフデータの抽出を行っているが、ステップＳ５の後、ステップＳ６の前に行うようにしてもよい。
【０２１６】
上記実施形態では、業務フローデータ全体からラインデータを抽出して分類した後に、部分グラフデータごとに解を探すようにしている。しかし、部分グラフデータごとにラインデータを抽出して分類し、解を探すようにしてもよい。
【０２１７】
また、上記実施形態では、スタンドアローンのコンピュータに検証プログラムを格納したシステムを示した。しかし、サーバ装置に検証プログラムを記録しておき、インターネットなどを介して、クライアント装置からこの検証プログラムを利用できるようにしてもよい。この場合に、検証の対象となる処理手順データは、クライアント装置側に記録されていてもよい。
【０２１８】
上記実施形態では、処理手順データ作成プログラムと、検証プログラムが独立している。しかし、検証プログラムを処理手順データ作成プログラムの一機能として設けてもよい。
【０２１９】
なお、上記実施形態では、業務フローデータにおいて、エビデンスの発生に(+)マークが、消滅に(-)マークが付されていることを前提としている。しかし、(-)マークが付されず(+)マークのみが付された業務フローデータについても、検証を行うことができる。この場合には、ラインデータの分類において、表１に代えて、表２を用いるようにすればよい。表２においては、非整合的消滅状態を設けていない。他の処理は、上記実施形態と同じである。
【０２２０】
【表２】
0004998884.tif 000003
【０２２１】
なお、表２では、ラインデータの始点と終点がともにエビデンスを持ち、かつ、終点のエビデンスが(+)マークを持つ場合にも、整合的継続状態とした。しかし、より正確な判定を行うため、これを非整合的消滅状態として分類してもよい。この場合には、表３を用いる。
【０２２２】
【表３】
0004998884.tif 000004
【０２２３】
また、(+)マークが付されず(-)マークのみが付された業務フローデータについても、検証を行うことができる。この場合には、ラインデータの分類において、表１に代えて、表４を用いるようにすればよい。表４においては、非整合的出現状態を設けていない。他の処理は、上記実施形態と同じである。
【０２２４】
【表４】
0004998884.tif 000005
【０２２５】
なお、表４では、ラインデータの始点と終点がともにエビデンスを持ち、かつ、始点のエビデンスが(-)マークを持つ場合にも、整合的継続状態とした。しかし、より正確な判定を行うため、これを非整合的出現状態として分類してもよい。この場合には、表５を用いる。
【０２２６】
【表５】
0004998884.tif 000006
【０２２７】
さらにまた、(+)マークも(-)マークも付されていない業務フローデータについても、検証を行うことができる。ただし、１つの業務フローデータにおいて、一度消滅（保存あるいは破棄）したエビデンスが復活することはないという前提を満たすように業務フローデータが作成されていなければならない。この場合においても、部分グラフを抽出するところまでは、上記の実施形態と同じである。しかし、部分グラフ判断手段４における処理が異なる。部分グラフ判断手段４においては、抽出した各部分グラフについて、エビデンス毎に以下のような判断を行う。つまり、当該部分グラフにおいて、エビデンスＥが含まれているならば、当該エビデンスＥが、ただ一つのフローの連なりに連続して含まれているかを判断する。この判断が、全ての部分グラフ中の全てのエビデンスについて肯定的であれば、ライフサイクルは整合的であると判断する。否定的であれば、ライフサイクルは整合的でないと判断する。
【０２２８】
たとえば、抽出した部分グラフが図３９に示すものであった場合について上記判断の例を示す。エビデンスＡについては、アクション１０１、１０３に現れているが、アクション１０２に現れておらず、連続していない。したがって、ライフサイクルは非整合的であると判断される。
【０２２９】
エビデンスＢについては、アクション１０２、１０３、１０４と連続して現れており、整合的であると判断される。
【０２３０】
エビデンスＣについては、アクション１０３、１０４、１０５と連続して現れている。しかし、アクション１０３、１０６という流れも存在する。したがって、ただ一つのフローの連なりに現れているとはいえず、非整合的であると判断される。
【０２３１】
７．運用および実装
図４０に、この発明による検証システムの運用例を示す。検証プログラム２８を、各端末装置Ｔ1、Ｔ2に記録しておけば、各端末装置Ｔ1、Ｔ2のそれぞれにおいて、業務フロー３０をチェックすることができる。また、サーバ装置Ｓに検証プログラム２８を記録しておけば、各端末装置Ｔ1、Ｔ2からサーバ装置Ｓに業務フロー３０を送信して、チェックを受けることができる。検証プログラム２８を、端末装置Ｔ1、Ｔ2とサーバ装置Ｓの双方に記録しておけば、上記のいずれのチェックも行うことができる。
【０２３２】
図４１に、この発明による検証プログラムのパッケージ構成例を示す。変換プログラム２７は、業務フロー作成プログラム２６によって作成された業務フローを受け取り、当該業務フローのフォーマットを検証プログラム２８において処理することのできるフォーマットに変換する。たとえば、変換プログラム２７は、業務フロー作成プログラム２６によって作成された業務フロー中から、検証のためには不要な、図のイメージデータなどを削除する。
【０２３３】
インターフェースモジュール２５は、業務フロー作成プログラム２６の作成画面上に、検証開始指令のためのボタンを表示したり、あるいは当該ボタンが押されたことを検知して検証処理の開始を変換プログラム２７・検証プログラム２８に指示するものである。また、検証プログラム２８による検証結果を受けて、これを業務フロー作成プログラム２６の作成画面上に表示するのも、インターフェースモジュール２５の役割である。
【０２３４】
上記実施形態における業務フロー図は、説明のために定義したものであり、本発明は、その他の業務フロー図にも適用できるものである。
【図面の簡単な説明】
【０２３５】
【図１】不適切な流れを持つ業務フローの例である。
【図２】業務フローの一例を示す図である。
【図３ａ】図２の業務フローをデータとして示す図である。
【図３ｂ】図２の業務フローをデータとして示す図である。
【図３ｃ】図２の業務フローをデータとして示す図である。
【図４】業務フローデータにおいて用いられるアクションを示す図である。
【図５】この発明の一実施形態による検証システムの機能ブロック図である。
【図６】業務フローデータの例を示す図である。
【図７】部分グラフデータを示す図である。
【図８】部分グラフデータを示す図である。
【図９】流れが妥当でない業務フローデータの例を示す図である。
【図１０】部分グラフデータを示す図である。
【図１１】部分グラフデータを示す図である。
【図１２】この発明の一実施形態による検証システムのハードウエア構成である。
【図１３ａ】検証プログラムのフローチャートである。
【図１３ｂ】検証プログラムのフローチャートである。
【図１４】検証処理におけるリスト、スタックの変化を示す図である。
【図１５】検証処理におけるリスト、スタックの変化を示す図である。
【図１６】検証処理におけるリスト、スタックの変化を示す図である。
【図１７】検証処理におけるリスト、スタックの変化を示す図である。
【図１８】検証処理におけるリスト、スタックの変化を示す図である。
【図１９】検証処理におけるリスト、スタックの変化を示す図である。
【図２０】検証処理におけるリスト、スタックの変化を示す図である。
【図２１】検証処理におけるリスト、スタックの変化を示す図である。
【図２２】検証処理におけるリスト、スタックの変化を示す図である。
【図２３ａ】２つの要素に分解された業務フローデータを示す図である。
【図２３ｂ】中間生成グラフデータを示す図である。
【図２３ｃ】業務フローデータの例である。
【図２３ｄ】中間生成グラフの例である。
【図２３ｅ】中間生成グラフの例である。
【図２３ｆ】トレースグラフの例である。
【図２３ｇ】トレースグラフの例である。
【図２３ｈ】トレースグラフの例である。
【図２３ｉ】トレースグラフの例である。
【図２３ｊ】トレースグラフの例である。
【図２３ｋ】トレースグラフの例である。
【図２４】他の実施形態による検証システムの機能ブロック図である。
【図２５】業務フローデータの例を示す図である。
【図２６】部分グラフデータを示す図である。
【図２７】エビデンスのライフサイクルを示すための図である。
【図２８】部分グラフデータを示す図である
【図２９】エビデンスのライフサイクルを示すための図である。
【図３０】検証システムの機能ブロック図である。
【図３１ａ】検証プログラムのフローチャートである。
【図３１ｂ】検証プログラムのフローチャートである。
【図３２】ラインデータの検出を示す図である。
【図３３】各ラインの状態を記録したデータを示す図である。
【図３４】各ラインの分類を示す図である。
【図３５】各ラインの分類を記録したデータを示す図である。
【図３６】部分グラフデータ毎の判定を示す図である。
【図３７】部分グラフデータ毎の判定を示す図である。
【図３８】非整合部分の表示例である。
【図３９】(+)マーク、(-)マークのない業務フローデータに対する判断を示す図である。
【図４０】検証システムの運用例を示す図である。
【図４１】検証プログラムのパッケージ構成を示す図である。
【図４２】アルゴリズムを示すための説明である。
【図４３】アルゴリズムを示すための説明である。
【図４４】アルゴリズムを示すための説明である。
【図４５】アルゴリズムを示すための説明である。
【図４６】アルゴリズムを示すための説明である。
【図４７】アルゴリズムを示すための説明である。
【図４８】アルゴリズムを示すための説明である。
【図４９】アルゴリズムを示すための説明である。
【図５０】アルゴリズムを示すための説明である。
【図５１】アルゴリズムを示すための説明である。
【図５２】アルゴリズムを示すための説明である。
【図５３】アルゴリズムを示すための説明である。
【図５４】アルゴリズムを示すための説明である。
【図５５】アルゴリズムを示すための説明である。
【図５６】アルゴリズムを示すための説明である。
【符号の説明】
【０２３６】
２・・・部分グラフ抽出手段
４・・・部分グラフ事象独立判断手段
６・・・事象独立判断結果出力手段
Ｄ・・・処理手順データ
Ｗ・・・部分グラフデータ
【図１】
0004998884.tif 000007
【図２】
0004998884.tif 000008
【図３ａ】
0004998884.tif 000009
【図３ｂ】
0004998884.tif 000010
【図３ｃ】
0004998884.tif 000011
【図４】
0004998884.tif 000012
【図５】
0004998884.tif 000013
【図６】
0004998884.tif 000014
【図７】
0004998884.tif 000015
【図８】
0004998884.tif 000016
【図９】
0004998884.tif 000017
【図１０】
0004998884.tif 000018
【図１１】
0004998884.tif 000019
【図１２】
0004998884.tif 000020
【図１３ａ】
0004998884.tif 000021
【図１３ｂ】
0004998884.tif 000022
【図１４】
0004998884.tif 000023
【図１５】
0004998884.tif 000024
【図１６】
0004998884.tif 000025
【図１７】
0004998884.tif 000026
【図１８】
0004998884.tif 000027
【図１９】
0004998884.tif 000028
【図２０】
0004998884.tif 000029
【図２１】
0004998884.tif 000030
【図２２】
0004998884.tif 000031
【図２３ａ】
0004998884.tif 000032
【図２３ｂ】
0004998884.tif 000033
【図２３ｃ】
0004998884.tif 000034
【図２３ｄ】
0004998884.tif 000035
【図２３ｅ】
0004998884.tif 000036
【図２３ｆ】
0004998884.tif 000037
【図２３ｇ】
0004998884.tif 000038
【図２３ｈ】
0004998884.tif 000039
【図２３ｉ】
0004998884.tif 000040
【図２３ｊ】
0004998884.tif 000041
【図２３ｋ】
0004998884.tif 000042
【図２４】
0004998884.tif 000043
【図２５】
0004998884.tif 000044
【図２６】
0004998884.tif 000045
【図２７】
0004998884.tif 000046
【図２８】
0004998884.tif 000047
【図２９】
0004998884.tif 000048
【図３０】
0004998884.tif 000049
【図３１ａ】
0004998884.tif 000050
【図３１ｂ】
0004998884.tif 000051
【図３２】
0004998884.tif 000052
【図３３】
0004998884.tif 000053
【図３４】
0004998884.tif 000054
【図３５】
0004998884.tif 000055
【図３６】
0004998884.tif 000056
【図３７】
0004998884.tif 000057
【図３８】
0004998884.tif 000058
【図３９】
0004998884.tif 000059
【図４０】
0004998884.tif 000060
【図４１】
0004998884.tif 000061
【図４２】
0004998884.tif 000062
【図４３】
0004998884.tif 000063
【図４４】
0004998884.tif 000064
【図４５】
0004998884.tif 000065
【図４６】
0004998884.tif 000066
【図４８】
0004998884.tif 000067
【図４９】
0004998884.tif 000068
【図５０】
0004998884.tif 000069
【図５１】
0004998884.tif 000070
【図５２】
0004998884.tif 000071
【図５３】
0004998884.tif 000072
【図５４】
0004998884.tif 000073
【図５５】
0004998884.tif 000074
【図５６】
0004998884.tif 000075
【図４７】
0004998884.tif 000076