(57)【要約】【課題】利用者がフローチャートの流れの理解しやすいように、フローチャート中の各ノードに番号を付与すること。【解決手段】番号付与装置１００は、フローチャートに含まれるノードと遷移の各種属性情報を保持する構成要素情報１１１を参照して、開始ノードを起点として、遷移を辿りながらノードを訪問していくフローチャート探索部１２２と、フローチャート探索部１２２によって訪問された順にノードに番号を付与する番号設定部１２３とを備え、フローチャート探索部１２２は、訪問しているノードから他のノードへ向かう経路が複数存在する場合に、それらの経路における直近のノードの表示位置を図形情報１１２から取得し、表示位置に基づいてそれらの経路を探索する順序を決定し、訪問しているノードへ他のノードから到達する経路が複数存在する場合に、それら全ての経路の探索が完了するまで、訪問しているノードよりも前方のノードの探索を行わない。【選択図】        図４
2008282286.tif 000002
【特許請求の範囲】
【請求項１】
フローチャートに含まれるノードと遷移の各種属性情報を保持する構成要素情報と、ノードと遷移を図示するための位置と形状に関する情報を保持する図形情報とによって表現されるフローチャート中の各ノードに番号を付与する番号付与プログラムであって、
前記構成要素情報を参照して、フローチャートの開始ノードを起点として、遷移を辿りながらフローチャート内のノードを訪問していくフローチャート探索手順と、
前記フローチャート探索手順によって訪問された順にノードに番号を付与する番号設定手順とをコンピュータに実行させ、
前記フローチャート探索手順は、訪問しているノードから他のノードへ向かう経路が複数存在する場合に、それらの経路における直近のノードの表示位置を前記図形情報から取得し、表示位置の座標の大きさに基づいてそれらの経路を探索する順序を決定し、訪問しているノードへ他のノードから到達する経路が複数存在する場合に、それら全ての経路の探索が完了するまで、訪問しているノードよりも前方のノードの探索を行わないことを特徴とする番号付与プログラム。
【請求項２】
フローチャートの向きを判定する方向判定手順をさらにコンピュータに実行させ、
前記フローチャート探索手順は、訪問しているノードから他のノードへ向かう経路が複数存在する場合に、前記方向判定手順の判定結果によって、表示位置の座標の大きさに基づいてそれらの経路を探索する順序を変更することを特徴とする請求項１に記載の番号付与プログラム。
【請求項３】
前記番号設定手順は、フローチャートに含まれるノードの属性情報が出力される文書の書式情報を参照して、各ノードが該文書のどのページに出力されるかを算出し、前記フローチャート探索手順によって訪問された順にノードに番号を付与する場合に、該ノードが該文書に出力されるページのページ番号をさらにノードに付与することを特徴とする請求項１または２に記載の番号付与プログラム。
【請求項４】
フローチャートに含まれるノードと遷移の各種属性情報を保持する構成要素情報と、ノードと遷移を図示するための位置と形状に関する情報を保持する図形情報とによって表現されるフローチャート中の各ノードに番号を付与する番号付与装置であって、
前記構成要素情報を参照して、フローチャートの開始ノードを起点として、遷移を辿りながらフローチャート内のノードを訪問していくフローチャート探索手段と、
前記フローチャート探索手段によって訪問された順にノードに番号を付与する番号設定手段とを備え、
前記フローチャート探索手段は、訪問しているノードから他のノードへ向かう経路が複数存在する場合に、それらの経路における直近のノードの表示位置を前記図形情報から取得し、表示位置の座標の大きさに基づいてそれらの経路を探索する順序を決定し、訪問しているノードへ他のノードから到達する経路が複数存在する場合に、それら全ての経路の探索が完了するまで、訪問しているノードよりも前方のノードの探索を行わないことを特徴とする番号付与装置。
【請求項５】
フローチャートに含まれるノードと遷移の各種属性情報を保持する構成要素情報と、ノードと遷移を図示するための位置と形状に関する情報を保持する図形情報とによって表現されるフローチャート中の各ノードに番号を付与する番号付与方法であって、
前記構成要素情報を参照して、フローチャートの開始ノードを起点として、遷移を辿りながらフローチャート内のノードを訪問していくフローチャート探索ステップと、
前記フローチャート探索ステップによって訪問された順にノードに番号を付与する番号設定ステップとを含み、
前記フローチャート探索ステップは、訪問しているノードから他のノードへ向かう経路が複数存在する場合に、それらの経路における直近のノードの表示位置を前記図形情報から取得し、表示位置の座標の大きさに基づいてそれらの経路を探索する順序を決定し、訪問しているノードへ他のノードから到達する経路が複数存在する場合に、それら全ての経路の探索が完了するまで、訪問しているノードよりも前方のノードの探索を行わないことを特徴とする番号付与方法。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、フローチャート中の各ノードに番号を付与する番号付与プログラム、番号付与装置および番号付与方法に関し、特に、利用者がフローチャートの流れの理解しやすいように、フローチャート中の各ノードに番号を付与する番号付与プログラム、番号付与装置および番号付与方法に関する。
【背景技術】
【０００２】
従来より、プログラムの処理手順や、業務の流れを可視化するためにフローチャートが作成されている。フローチャートの内容を第三者に説明する場合には、現在説明している対象がフローチャート中のどのノードであるかを明確にするため、フローチャートに含まれる各ノードが予めナンバリングされていることが好ましい。
【０００３】
ところが、フローチャートのナンバリングは、単にノードに番号が付与されていればよいというものではなく、フローチャートの流れの理解の手助けと成るように、処理順序に沿って番号が付与されていなければならない。そのため、フローチャートが大規模な場合、そこに含まれる全ノードに人手でナンバリングを行うことは大きな労力を要していた。このような労力を省くため、特許文献１において開示されているテスト項目自動生成装置は、自動生成したフローチャートの全パスをサーチして、ノードに自動的にナンバリングするように構成されている。
【０００４】
【特許文献１】特開２００６−２０９５２１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかしながら、特許文献１には、ナンバリングを実現するための具体的な技術が開示されていない。ナンバリングを実現するための最も簡単な方法は、既知の探索手法である深さ優先探索や幅優先探索を用いてフローチャート中のノードを探索しながらノードに番号を付与していく方法であるが、この方法では、全てのノードに漏れなく番号を付与することは可能であるものの、処理順序に沿ったナンバリングは行われない。例えば、分岐と合流が存在するフローチャートでは、合流部分で待ち合わせを行い、分岐したフローに属する全てのノードに番号が付与された後に合流箇所に番号を付与することが好ましいが、上記の方法では、このようなナンバリングを行うことはできない。
【０００６】
この発明は、上述した従来技術による問題点を解消するためになされたものであり、利用者がフローチャートの流れの理解しやすいように、フローチャート中の各ノードに番号を付与する番号付与プログラム、番号付与装置および番号付与方法を提供することを目的とする。
【課題を解決するための手段】
【０００７】
上述した課題を解決し、目的を達成するため、本発明の一つの態様では、フローチャートに含まれるノードと遷移の各種属性情報を保持する構成要素情報と、ノードと遷移を図示するための位置と形状に関する情報を保持する図形情報とによって表現されるフローチャート中の各ノードに番号を付与する番号付与装置であって、前記構成要素情報を参照して、フローチャートの開始ノードを起点として、遷移を辿りながらフローチャート内のノードを訪問していくフローチャート探索手段と、前記フローチャート探索手段によって訪問された順にノードに番号を付与する番号設定手段とを備え、前記フローチャート探索手段は、訪問しているノードから他のノードへ向かう経路が複数存在する場合に、それらの経路における直近のノードの表示位置を前記図形情報から取得し、表示位置の座標の大きさに基づいてそれらの経路を探索する順序を決定し、訪問しているノードへ他のノードから到達する経路が複数存在する場合に、それら全ての経路の探索が完了するまで、訪問しているノードよりも前方のノードの探索を行わないことを特徴とする。
【０００８】
この発明の態様によれば、分岐部分では分岐先のノードの表示位置に基づいてどの経路を先に探索するかを決定し、合流部分では、その合流部分へ到達する全ての経路が探索されるまで待ち合わせを行うこととしたので、処理の順序と番号の大小関係が一致することとなり、利用者がフローチャートの流れの理解しやすいように、フローチャート中の各ノードに番号を付与することができる。
【０００９】
また、本発明の他の態様では、上記の発明の態様において、フローチャートの向きを判定する方向判定手段をさらに備え、前記フローチャート探索手段は、訪問しているノードから他のノードへ向かう経路が複数存在する場合に、前記方向判定手段の判定結果によって、表示位置の座標の大きさに基づいてそれらの経路を探索する順序を変更することを特徴とする。
【００１０】
この発明の態様によれば、フローチャートの向きを判定し、その判定結果によって分岐箇所での経路の探索順序を変更することとしたので、フローチャートの向きに関わらず、利用者がフローチャートの流れの理解しやすいように、フローチャート中の各ノードに番号を付与することができる。
【００１１】
また、本発明の他の態様では、上記の発明の態様において、前記番号設定手段は、フローチャートに含まれるノードの属性情報が出力される文書の書式情報を参照して、各ノードが該文書のどのページに出力されるかを算出し、前記フローチャート探索手段によって訪問された順にノードに番号を付与する場合に、該ノードが該文書に出力されるページのページ番号をさらにノードに付与することを特徴とする。
【００１２】
この発明の態様によれば、関連する文書においてノードに関する情報が出力される位置を示す情報を番号とともにノードに付与することとしたので、フローチャートに番号とともにその情報を表示することにより、利用者がフローチャートと対応する文書の対応づけを容易に行うことができる。
【００１３】
なお、本発明の構成要素、表現または構成要素の任意の組合せを、方法、装置、システム、コンピュータプログラム、記録媒体、データ構造などに適用したものも本発明の態様として有効である。
【発明の効果】
【００１４】
本発明の一つの態様によれば、分岐部分では分岐先のノードの表示位置に基づいてどの経路を先に探索するかを決定し、合流部分では、その合流部分へ到達する全ての経路が探索されるまで待ち合わせを行うこととしたので、処理の順序と番号の大小関係が一致することとなり、利用者がフローチャートの流れの理解しやすいように、フローチャート中の各ノードに番号を付与することができるという効果を奏する。
【００１５】
また、本発明の一つの態様によれば、フローチャートの向きを判定し、その判定結果によって分岐箇所での経路の探索順序を変更することとしたので、フローチャートの向きに関わらず、利用者がフローチャートの流れの理解しやすいように、フローチャート中の各ノードに番号を付与することができるという効果を奏する。
【００１６】
また、本発明の一つの態様によれば、関連する文書においてノードに関する情報が出力される位置を示す情報を番号とともにノードに付与することとしたので、フローチャートに番号とともにその情報を表示することにより、利用者がフローチャートと対応する文書の対応づけを容易に行うことができるという効果を奏する。
【発明を実施するための最良の形態】
【００１７】
以下に添付図面を参照して、本発明に係る番号付与プログラム、番号付与装置および番号付与方法の好適な実施の形態を詳細に説明する。なお、以下の実施例では、業務の流れを示すフローチャートである業務フロー図に含まれる各ノードに番号を付与する例を示すが、本発明は、業務フロー図に限らず、処理や業務の流れを示すフローチャートに広く適用することができる。
【実施例】
【００１８】
まず、従来の探索手法を用いた場合における番号付与について説明する。図２５は、業務フロー図の一例を示す図である。同図に示した業務フロー図１１は、ノードへの番号付与が行われていない業務フロー図であり、開始ノード２１と、終了ノード２２と、業務プロセス２３ａ〜２３ｆと、分岐ノード２４と、合流ノード２５と、遷移３１ａ〜３１ｊとを有している。
【００１９】
開始ノード２１は、業務の流れの起点を表すノードであり、終了ノード２２は、業務の流れの終点を表すノードである。業務プロセス２３ａ〜２３ｆは、業務に含まれるプロセスを表すノードであり、それぞれ、「業務プロセスＡ」〜「業務プロセスＦ」という名前を与えられている。分岐ノード２４は、所定の条件に従って業務の流れが分岐する箇所を示すノードであり、合流ノード２５は、分岐した業務の流れが合流する箇所を示すノードである。
【００２０】
遷移３１ａ〜３１ｊは、業務の流れを示すために各ノード間を接続する矢印に相当する遷移オブジェクトである。具体的には、遷移３１ａは、開始ノード２１から業務プロセス２３ａへ向かう流れを示す遷移オブジェクトであり、遷移３１ｂは、業務プロセス２３ａから業務プロセス２３ｂへ向かう流れを示す遷移オブジェクトであり、遷移３１ｃは、業務プロセス２３ｂから分岐ノード２４へ向かう流れを示す遷移オブジェクトである。
【００２１】
また、遷移３１ｄは、「条件ａ」が満たされるときに、分岐ノード２４から業務プロセス２３ｃへ向かう流れを示す遷移オブジェクトであり、遷移３１ｅは、「条件ｂ」が満たされるときに、分岐ノード２４から業務プロセス２３ｄへ向かう流れを示す遷移オブジェクトであり、遷移３１ｇは、業務プロセス２３ｄから業務プロセス２３ｅへ向かう流れを示す遷移オブジェクトである。
【００２２】
また、遷移３１ｆは、業務プロセス２３ｃから合流ノード２５へ向かう流れを示す遷移オブジェクトであり、遷移３１ｈは、業務プロセス２３ｅから合流ノード２５へ向かう流れを示す遷移オブジェクトであり、遷移３１ｉは、合流ノード２５から業務プロセス２３ｆへ向かう流れを示す遷移オブジェクトであり、遷移３１ｊは、業務プロセス２３ｆから終了ノード２２へ向かう流れを示す遷移オブジェクトである。
【００２３】
図２６は、従来の探索手法を用いて番号を付与した業務フロー図の一例を示す図である。同図に示した業務フロー図１２は、既知の探索手法である深さ優先探索を用いて図２５に示した業務フロー図１１を探索しながらノードに番号を付与したものである。業務フロー図１２においては、業務プロセス２３ａ〜２３ｆ内の名前の前に、付与された番号が表示されている。
【００２４】
深さ優先探索は、どのノードを訪問したかを記録しながら、起点となるノードから深さ方向（起点から遠い方向）へ向けてノードを訪問していき、終端のノードに達した場合に、訪問済みのノードから分岐している未訪問のノードのうち最も近いノードから探索を再開するという探索手法である。この深さ優先探索を用いて、フローチャート内のノードを探索しながら、初めて訪問したノードに連番を付与していくことにより、フローチャート内の全てのノードに漏れなく番号を付与することができる。
【００２５】
しかしながら、深さ優先探索では、フローチャート中に分岐が存在した場合にどの経路を先に探索するかが無作為に決定されるため、必ずしもノードに適切な番号を付与することができない。例えば、図２６に示した業務フロー図１２では、左下の業務プロセス２３ｃへ向かう経路と、右下の業務プロセス２３ｄへ向かう経路とに分岐する分岐ノード２４が存在しているが、たまたま後者の経路が先に探索されているため、業務プロセス２３ｄの方が、業務プロセス２３ｃよりも若い番号を付与されている。一般に、このような縦型のフローチャートにおいては、利用者が流れを理解し易いように、左側の経路に若い番号が付与されていることが好ましいが、業務フロー図１２では逆になってしまっている。
【００２６】
また、深さ優先探索では、フローチャート中に分岐が存在し、ある経路が選択された場合、その経路の終端までの探索が完了するまで他の経路の探索は行われない。そのため、分岐の合流部分よりも先のノードに、分岐の手前のノードよりも若い番号が付与されてしまう。例えば、図２６に示した業務フロー図１２では、合流ノード２５の先にある業務プロセス２３ｆの方が、合流ノード２５の手前の業務プロセス２３ｃよりも若い番号を付与されている。一般に、このような縦型のフローチャートにおいては、利用者が流れを理解し易いように、同一系路上のノード間では起点に近いノードほど若い番号が付与されていることが好ましいが、業務プロセス２３ｃと業務プロセス２３ｆにおいては、番号の大小関係が逆になってしまっている。
【００２７】
このように、単純に深さ優先探索を用いてノードに番号を付与する手法では、利用者が流れを理解し易いように、適切な順序の番号をノードに付与することができない。
【００２８】
次に、本実施例に係る番号付与方法について説明する。本実施例に係る番号付与方法は、深さ優先探索を改善した方式でフローチャート内のノードを探索し、連番を付与していく。具体的には、本実施例に係る番号付与方法は、フローチャート中に分岐が存在した場合、分岐先の各ノードの表示位置を比較してどの経路を先に探索するかを決定する。また、本実施例に係る番号付与方法は、フローチャート中に合流箇所が存在した場合、その合流箇所へ到達する全ての経路が探索されるまで、合流箇所から先の探索を遅延させる。
【００２９】
図１は、本実施例に係る番号付与方法を用いて番号を付与した業務フロー図の一例を示す図である。同図に示した業務フロー図１３は、本実施例に係る番号付与方法を用いて図２５に示した業務フロー図１１の各ノードに番号を付与したものである。業務フロー図１３においては、業務プロセス２３ａ〜２３ｆ内の名前の前に、付与された番号が表示されている。
【００３０】
業務フロー図１３においては、分岐ノード２４の左下の業務プロセス２３ｃの方が、右下の業務プロセス２３ｄよりも若い番号を付与されており、利用者が流れを理解し易くなっている。これは、分岐先のノードの表示位置を比較した結果に基づいて、ノードが左寄りに存在する経路が先に探索すべき経路として選択されているためである。
【００３１】
また、業務フロー図１３においては、合流ノード２５の手前に存在する業務プロセス２３ｃ〜２３ｅの方が、合流ノード２５の先に存在する業務プロセス２３ｆよりも若い番号を付与されており、利用者が流れを理解し易くなっている。これは、合流ノード２５へ到達する全ての経路の探索が完了するのを待ち合わせてから合流ノード２５から先の探索が行われているためである。
【００３２】
なお、本実施例に係る番号付与方法は、フローチャート中に分岐が存在した場合に、分岐先の各ノードの表示位置をどのように比較して、その結果に基づいてどの経路を先に探索するかをフローチャートの向きによって変更する。具体的には、フローチャートの向きが縦向きの場合、図１に示したように、分岐先のノードの位置が左寄りである経路ほど先に探索される。また、フローチャートの向きが横向きの場合、図２に示したように、分岐先のノードの位置が上寄りである経路ほど先に探索される。なお、ここで説明したノードの位置と経路探索の優先順位の関係は一例であり、フローチャートの種類等に応じて変更することとしてもよい。
【００３３】
また、本実施例に係る番号付与方法は、ノードと関連する情報が他の文書においてどこに存在しているかを示す情報を番号とともに表示させることもできる。例えば、内部統制を目的として業務フロー図を作成する場合、業務フロー図に含まれる業務プロセスにおいて発生するリスクも業務フロー図に記載される。そして、業務フロー図に含まれる各業務プロセスとそこで発生するリスクの詳細を示すＲＣＭ（Risk Control Matrix）と呼ばれる一覧表が別途作成され、業務フロー図とＲＣＭを対にして参照しながら監査等の作業が行われる。このため、業務フロー図に含まれる業務プロセスに関する情報がＲＣＭのどこに存在しているかを容易に知ることができる手掛かりが業務フロー図中に表示されていることが好ましい。そこで、本実施例に係る番号付与方法は、例えば、ノードと関連する情報が他の文書においてどのページに存在しているかを示すページ番号を、ノードを識別するための番号とともに表示させることができる。
【００３４】
図３−１は、本実施例に係る番号付与方法を用いてページ番号付の番号を付した業務フロー図の一例を示す図であり、図３−２は、業務フロー図と関連する文書の一例を示す図である。図３−１に示した業務フロー図１５は、本実施例に係る番号付与方法を用いて図２５に示した業務フロー図１１の各ノードにページ番号付の番号を付与したものである。業務フロー図１５においては、業務プロセス２３ａ〜２３ｆ内の名前の前に、図３−２に示した文書においてその業務プロセスの情報が表示されているページのページ番号と、その業務プロセスに付与された番号が表示されている。例えば、「業務プロセスＤ」という業務プロセス名の前に表示されている「０２−０４」という値は、その業務プロセスに対応する情報が、図３−２において示した文書において２ページ目に表示されており、その業務プロセスには４という番号が付与されていることを示している。
【００３５】
なお、図３−１の例では、ノードと関連する情報が他の文書においてどこに存在しているかを示す情報として、ページ番号を表示する例を示したが、他の文書の形式等に応じて、段落番号等を用いてノードと関連する情報が他の文書中に存在する位置を示すこととしてもよい。
【００３６】
次に、本実施例に係る番号付与方法を用いてフローチャートに番号を付与する番号付与装置１００について説明する。図４は、番号付与装置１００の構成を示す機能ブロック図である。同図に示すように、番号付与装置１００は、記憶部１１０と、制御部１２０とを有する。記憶部１１０は、各種情報を記憶する記憶部であり、構成要素情報１１１と、図形情報１１２と、書式情報１１３と、フォント情報１１４等を記憶する。
【００３７】
構成要素情報１１１および図形情報１１２は、業務フロー図を実現するための情報であり、例えば、業務フロー図の編集装置によって編集され、記憶部１１０に格納される。構成要素情報１１１は、業務フロー図に含まれる各種要素の論理的な情報を含む。構成要素情報１１１のモデルを表すクラス図を図５に示す。同図に示すように、構成要素情報１１１のモデルの最上位には、の業務フロー図に対応する業務フロー４１があり、業務フロー４１には、ノード４２と、遷移４３とが含まれる。
【００３８】
ノード４２は、業務フロー図に含まれる各種ノードに相当し、ｔｙｐｅ、ｉｄ、ｎａｍｅ、ｏｕｔｇｏｉｎｇ、ｉｎｃｏｍｏｉｎｇといった属性を有する。ｔｙｐｅは、そのノードの種別であり、ｉｄは、そのノードを識別するための識別番号である。ｎａｍｅは、そのノードの名称であり、ノードが業務プロセスの場合、この属性の値が業務フロー図においてその業務フローの名称として表示される。ｏｕｔｇｏｉｎｇは、そのノードから先のノードへ続いている遷移のｉｄのリストであり、ｉｎｃｏｍｏｉｎｇは、そのノードへ続いている遷移のｉｄのリストである。
【００３９】
遷移４３は、ノード間の流れを示す矢印に相当し、ｔｙｐｅ、ｉｄ、ｓｏｕｒｃｅ、ｔａｒｇｅｔといった属性を有する。ｔｙｐｅは、その遷移の種別であり、ｉｄは、その遷移を識別するための識別番号である。ｓｏｕｒｃｅは、その遷移が接続しているノードのうち起点に近いノードのｉｄであり、ｔａｒｇｅｔは、その遷移が接続しているノードのうち起点から遠いノードのｉｄである。
【００４０】
ノード４２は、サブフロー４４と、制御ノード４５と、業務プロセス４６とに分類される。サブフロー４４は、入れ子関係にある他の業務フロー図を示すノードである。業務フロー図が大規模になった場合、業務フロー図の一部を抜き出して別の業務フロー図とし、元の業務フロー図において抜き出された業務フローが存在していた箇所に、抜き出した別の業務フロー図へのリンクを示すノードを表示しておくことがあるが、サブフロー４４は、そのリンクを示すノードに相当する。
【００４１】
制御ノード４５は、業務フロー図において流れを制御するために配置されるノードであり、開始４５ａと、終了４５ｂと、条件分岐４５ｃと、並列分岐４５ｄとにさらに分類される。開始４５ａは、業務フロー図の起点を表す情報であり、終了４５ｂは、業務フロー図の終点を表す情報である。条件分岐４５ｃは、条件分岐する箇所、もしくは、条件分岐した流れが合流する箇所を表す情報であり、並列分岐４５ｄは、並列分岐する箇所、もしくは、並列分岐した流れが合流する箇所を表す情報である。
【００４２】
業務プロセス４６は、業務を構成する個別のプロセスを表すノードである。業務プロセス４６は、複数の属性４６ａを含むことができる。属性４６ａは、業務プロセス４６の詳細を示す情報であり、情報の種別を示すｉｄや、情報の内容を示すｖａｌｕｅといった属性を有する。
【００４３】
図６は、構成要素情報１１１の一例を示す図である。同図に示した情報は、図５に示したモデルに従って、図１に示した業務フロー図１３の各要素をＸＭＬ（Extensible Markup Language）形式で表現したものであり、ｆｌｏｗＥｄｇｅタグが遷移４３に相当し、ｆｌｏｗＮｏｄｅタグがノード４２に相当する。また、タグ中のアトリビュートが、遷移４３もしくはノード４２の属性に相当する。
【００４４】
例えば、ｉｄのアトリビュートの値が「ｅｄｇｅ０１」であるｆｌｏｗＥｄｇｅタグは、ｓｏｕｒｃｅのアトリビュートの値が「ｎｏｄｅ００」、ｔａｒｇｅｔのアトリビュートの値が「ｎｏｄｅ０１」となっている。これは、このタグが表す遷移が、「ｎｏｄｅ００」というｉｄをもつノードから「ｎｏｄｅ０１」というｉｄをもつノードへつながる流れを表すものであることを示している。
【００４５】
また、ｉｄのアトリビュートの値が「ｎｏｄｅ１０１」であるｆｌｏｗＮｏｄｅタグは、ｔｙｐｅの値が「条件分岐」、ｉｎｃｏｍｉｎｇのアトリビュートの値が「ｅｄｇｅ０３」、ｏｕｔｇｏｉｎｇのアトリビュートの値が「ｅｄｇｅ０４、ｅｄｇｅ０５」となっている。これは、このタグが表すノードが、条件分岐４５ｃに分類されるノードであり、「ｅｄｇｅ０３」というｉｄをもつ遷移によって直前のノードと接続され、「ｅｄｇｅ０４」というｉｄをもつ遷移と「ｅｄｇｅ０５」というｉｄをもつ遷移によって直後のノードと接続されていることを示している。
【００４６】
ノードを表すタグにおいてｉｎｃｏｍｉｎｇとｏｕｔｇｏｉｎｇに設定される遷移のｉｄの数は、通常は１つであるが、上記の例のように、ノードの種別により異なることがある。例えば、開始４５ａに分類されるノードを表すタグでは、そのノード以前のノードが存在しないため、ｉｎｃｏｍｉｎｇは空になる。また、条件分岐４５ｃに分類されるノードを表すタグの場合、そのノードが分岐を表すノードであれば、ｏｕｔｇｏｉｎｇに複数のｉｄが設定され、そのノードが合流を表すノードであれば、ｉｎｃｏｍｉｎｇに複数のｉｄが設定される。
【００４７】
なお、図６に示した構成要素情報１１１の例では、業務プロセスを表す各タグに属性を表すタグが１つずつしか含まれていないが、業務プロセスを表すタグは、属性を表すタグを複数含むことができる。例えば、番号の付与が完了した後には、付与された番号を保持するための属性を表すタグが、業務プロセスを表す各タグに追加される。また、構成要素情報１１１は、必ずしもＸＭＬ形式である必要はなく、業務フロー図を編集するツールが出力するのに適した形式であってよい。
【００４８】
構成要素情報１１１は、制御部１２０によって記憶部１１０から読み出され、メモリ（図示せず）上に展開された状態で番号付与処理が適用される。メモリ上に展開された構成要素情報１１１のイメージの一例を図７に示す。同図に示すように、メモリ上に展開された構成要素情報１１１は、ノードを表す要素や遷移を表す要素が業務フロー図単位でまとまった状態で管理される。なお、図７は、図６に示した構成要素情報１１１がメモリ上に展開された例を示しており、各要素に、図１に示した業務フロー図１３中の対応する要素の符号を付している。
【００４９】
図形情報１１２は、業務フロー図に含まれる各種要素を図示するための情報を含む。図形情報１１２のモデルを表すクラス図を図８に示す。同図に示すように、図形情報１１２のモデルの最上位には、１つの業務フロー図に対応する業務フロー５１があり、業務フロー５１には、図形情報５２が含まれる。
【００５０】
図形情報５２は、業務フロー図に含まれるノードもしくは遷移と１対１で対応し、ｔｙｐｅ、ｉｄ、といった属性を有する。ｔｙｐｅは、図示する図形の種別であり、ｉｄは、対応するノードもしくは遷移のｉｄである。また、図形情報５２は、複数の接続ポイント５２ａを含むことができる。接続ポイント５２ａは、ノードと遷移の接続箇所の座標を示す情報であり、接続箇所のＸ座標を示すＲｘや、Ｙ座標を示すＲｙといった属性を有する。
【００５１】
図形情報５２は、矩形情報５３と線情報５４に分類される。矩形情報５３は、ノードを表す矩形等を図示するための情報であり、図形情報５２が共通にもつ属性に加えて、ＰｉｎＸやＰｉｎＹといった属性をさらに有する。ＰｉｎＸとＰｉｎＹは、それぞれ、矩形等の中心のＸ座標とＹ座標を示す。線情報５４は、遷移を表す矢印等を図示するための情報であり、図形情報５２が共通にもつ属性に加えて、ＢｅｇｉｎＸ、ＢｅｇｉｎＹ、ＥｎｄＸ、ＥｎｄＹといった属性をさらに有する。ＢｅｇｉｎＸとＢｅｇｉｎＹは、それぞれ、矢印等の起点のＸ座標とＹ座標を示し、ＥｎｄＸとＥｎｄＹは、それぞれ、矢印等の終点のＸ座標とＹ座標を示す。
【００５２】
図形情報５２は、例えば、図６に示したようなＸＭＬ形式のデータとして記憶部１１０に記憶される。そして、番号付与処理のために、制御部１２０によって記憶部１１０から読み出され、メモリ（図示せず）上に展開される。メモリ上に展開された図形情報５２のイメージの一例を図９に示す。同図に示すように、メモリ上に展開された図形情報５２は、ノードや遷移を図示するための要素が業務フロー図単位でまとまった状態で管理される。なお、図９は、図１に示した業務フロー図を図示するための図形情報５２がメモリ上に展開された例を示しており、各要素に、図１に示した業務フロー図１３中の対応する要素の符号を付している。
【００５３】
図４の説明に戻って、書式情報１１３は、業務フロー図と関連する他の文書の出力形式に関する情報を含む。書式情報１１３の一例を図１０に示す。同図に示した書式情報１１３の例は、図３−２に示した一覧表を表示するためのものであり、属性名、出力カラム位置、カラム長、フォント名、フォントサイズといった項目を有し、一覧表のカラムごとに情報が予め登録される。
【００５４】
図３−２に示した一覧表は、業務プロセスごとに行が追加され、業務プロセスに含まれる属性が、対応するカラムに設定されるようになっており、属性名は、業務プロセスに含まれる属性のｉｄに対応し、その他の項目は、属性のｖａｌｕｅの出力形式を示している。例えば、図１０に示した例の４行目は、「業務内容」というｉｄをもつ属性のｖａｌｕｅは、５番目のカラムが出力位置であり、そのカラムの幅は２４０であり、出力時には「ゴシック」という名のサイズ１０のフォントを使用する必要があることを示している。
【００５５】
フォント情報１１４は、フォントの高さや幅といったメトリック情報をフォントの種類とサイズごとに保持する。フォント情報１１４の内容は、多くの情報処理システムで使用されているものと同様であるので、ここでは詳細な説明を省略する。
【００５６】
制御部１２０は、番号付与装置１００を全体制御する制御部であり、方向判定部１２１と、フローチャート探索部１２２と、番号設定部１２３とを有する。方向判定部１２１は、フローチャートが縦向きであるのか横向きであるのかを判定する処理部である。具体的には、方向判定部１２１は、図形情報１１２を参照し、フローチャート中の各ノードから次のノードへ向かう遷移が縦向きに伸びているのか横向きに伸びているのかを判定し、縦向きに伸びている遷移の数が横向きに伸びている遷移の数よりも多ければフローチャートが縦向きであると判定し、さもなければ、フローチャートが横向きであると判定する。
【００５７】
フローチャート探索部１２２は、フローチャート中の各ノードを探索する処理部である。フローチャート探索部１２２は、基本的には、既知の探索手法である深さ優先探索に基づいてノードの探索を行うが、フローチャートの流れの理解を助けるようなナンバリングを実現するため、分岐部分では、図形情報１１２を参照して分岐先のノードの表示位置を比較し、その結果に基づいて先に探索すべき経路を選択する。また、分岐後の合流部分では、その合流部分へ到達する全ての経路の探索が完了するのを待ち合わせる。
【００５８】
図１１〜１７を参照しながら、図１に示した業務フロー図１３中のノードを探索する場合を例にして、フローチャート探索部１２２の処理の詳細について説明する。フローチャート探索部１２２は、ノードの探索を行うためにスタック６１と、訪問済みリスト６２と、待合せマップ６３とを用いる。スタック６１は、深さ優先探索を実現するために、現在訪問中のノードの直後のノードのｉｄがプッシュされるＬＩＦＯ（Last In First Out）方式のバッファである。訪問済みリスト６２は、既に訪問したノードを重複して訪問することがないように、訪問済みのノードのｉｄを保持するリストである。待合せマップ６３は、合流箇所での待ち合わせを実現するために、合流箇所に相当するノードのｉｄと、そのノードの訪問回数が対で保持されるマップである。
【００５９】
深さ優先探索では、現在訪問中のノードの直後の未訪問のノードのｉｄを全てスタックにプッシュした後、スタックからノードのｉｄを１つポップし、そのｉｄが示すノードを現在訪問中のノードとするという動作が、スタックが空になるまで繰り返し実行され、訪問されたノードのｉｄが訪問リストに追加されていく。
【００６０】
業務フロー図１３中のノードを探索する場合、まず、開始ノード２１のｉｄである「ｎｏｄｅ００」がスタック６１にプッシュされる。そして、スタック６１から「ｎｏｄｅ００」がポップされ、このｉｄに対応する開始ノード２１が現在訪問中のノードとなり、「ｎｏｄｅ００」が訪問済みリスト６２に追加される。
【００６１】
続いて、構成要素情報１１１を参照して、現在訪問中のノードの直後のノードのｉｄが取得され、スタック６１にプッシュされる。具体的には、ｉｄが「ｎｏｄｅ００」であるノードのｏｕｔｇｏｉｎｇに設定されている遷移のｉｄは、「ｅｄｇｅ０１」であり、この遷移のｔａｒｇｅｔに設定されているノードのｉｄは、「ｎｏｄｅ０１」であるため、業務プロセス２３ａのｉｄである「ｎｏｄｅ０１」が取得され、これがスタック６１にプッシュされる。
【００６２】
同様の処理が繰り返され、ｉｄが「ｎｏｄｅ０２」である業務プロセス２３ｂが訪問済みリストに追加された場面を図１１に示す。同図に示すように、この場面では、業務プロセス２３ｂの直後のノードである分岐ノード２４のｉｄ「ｎｏｄｅ１０１」がスタック６１にプッシュされ、訪問済みリスト６２には、「ｎｏｄｅ００」、「ｎｏｄｅ０１」、「ｎｏｄｅ０２」が追加されている。
【００６３】
次の場面では、図１２に示すように、スタック６１から「ｎｏｄｅ１０１」がポップされ、このｉｄに対応する分岐ノード２４が現在訪問中のノードとなり、「ｎｏｄｅ１０１」が訪問済みリスト６２に追加される。続いて、構成要素情報１１１を参照して、現在訪問中のノードの直後のノードのｉｄが取得されるが、ｉｄが「ｎｏｄｅ１０１」であるノードのｏｕｔｇｏｉｎｇに設定されている遷移のｉｄは、「ｅｄｇｅ０４、ｅｄｇｅ０５」の２つであるため、「ｎｏｄｅ０３」と「ｎｏｄｅ０４」という２つのｉｄが直後のノードのｉｄとして取得される。
【００６４】
このように分岐箇所のノードにおいては、複数のｉｄが直後のノードのｉｄとして取得される。この場合、フローチャート探索部１２２は、図形情報１１２を参照してそれらのｉｄに対応するノードの表示位置に関する情報を取得し、その比較結果に基づいてｉｄをスタック６１へプッシュする順番を決定する。
【００６５】
具体的には、フローチャートが縦型のものであれば、フローチャート探索部１２２は、図１３に示すように、取得されたｉｄに対応する矩形情報の中心のＸ座標であるＰｉｎＸを比較し、この値が大きいものを先にスタック６１へプッシュする。もし、ＰｉｎＸの値が同一のものが複数あれば、ＰｉｎＹの値が小さいものを先にスタック６１へプッシュする。これにより、相対的に左寄りに位置するノードが先に訪問され、番号設定部１２３によって若い番号を付与されるため、フローチャートの流れの理解を助けるようなナンバリングが実現される。
【００６６】
なお、フローチャートが横型のものであれば、フローチャート探索部１２２は、取得されたｉｄに対応する矩形情報の中心のＹ座標であるＰｉｎＹを比較し、この値が小さいものを先にスタック６１へプッシュする。もし、ＰｉｎＹの値が同一のものが複数あれば、ＰｉｎＸの値が大きいものを先にスタック６１へプッシュする。これにより、相対的に上寄りに位置するノードが先に訪問され、番号設定部１２３によって若い番号を付与されるため、フローチャートの流れの理解を助けるようなナンバリングが実現される。
【００６７】
図１２に続く場面では、フローチャートが縦型であり、ｉｄが「ｎｏｄｅ０４」の矩形情報のＰｉｎＸの方が、ｉｄが「ｎｏｄｅ０３」の矩形情報のＰｉｎＸよりも大きいため、図１４に示すように、「ｎｏｄｅ０４」が先にスタック６１へプッシュされ、続いて「ｎｏｄｅ０３」がプッシュされる。これにより、ｉｄが「ｎｏｄｅ０３」のノードが先に訪問されることになる。
【００６８】
そして、ｉｄが「ｎｏｄｅ０３」のノードが訪問済みとなると、図１５に示すように、「ｎｏｄｅ０４」と、ｉｄが「ｎｏｄｅ０３」のノードの直後のノードである合流ノード２５のｉｄ「ｎｏｄｅ１０２」がスタック６１へプッシュされた状態となる。そして、図１６に示すように、スタック６１から「ｎｏｄｅ１０２」がポップされる。
【００６９】
このとき、構成要素情報１１１をみると、ｉｄが「ｎｏｄｅ１０２」であるノードのｉｎｃｏｍｉｎｇに設定されている遷移のｉｄは、「ｅｄｇｅ０６、ｅｄｇｅ０８」の２つであるため、ｉｄが「ｎｏｄｅ１０２」であるノードは、分岐後の合流箇所であることがわかる。このように、ポップしたｉｄが、合流ノードのｉｄであった場合、フローチャート探索部１２２は、待合せマップ６３を使って、その合流ノードへの経路が全て探索されるまで待ち合わせを行う。
【００７０】
図１６の場面では、待合せマップ６３には、ｉｄ「ｎｏｄｅ１０２」に関する情報が保持されていないため、フローチャート探索部１２２は、待合せマップ６３にｉｄ「ｎｏｄｅ１０２」と訪問回数「１」を登録し、スタック６１から次のｉｄをポップして、合流ノード２５以前のノードの探索を継続する。
【００７１】
もし、待合せマップ６３に、ｉｄ「ｎｏｄｅ１０２」に関する情報が保持されていれば、フローチャート探索部１２２は、ｉｄ「ｎｏｄｅ１０２」に対応する訪問回数に１を加算する。そして、加算後の訪問回数が、ｉｎｃｏｍｉｎｇに設定されている遷移のｉｄの数未満であれば、スタック６１から次のｉｄをポップしてノードの探索を継続し、加算後の訪問回数が、ｉｎｃｏｍｉｎｇに設定されている遷移のｉｄの数以上であれば、合流ノード２５へ到達する経路が全て探索されたことになるので、待ち合わせを終了し、合流ノード２５よりも先のノードの探索を開始する。
【００７２】
図１６の場面の後、フローチャート探索部１２２は、業務プロセス２３ｄと業務プロセス２３ｅを訪問し、合流ノード２５を再び訪問することになる。そして、図１７のように、「ｎｏｄｅ１０２」を２回目にポップした場面では、待合せマップ６３に、ｉｄ「ｎｏｄｅ１０２」に関する情報が保持されているため、フローチャート探索部１２２は、ｉｄ「ｎｏｄｅ１０２」に対応する訪問回数に１を加算する。そして、加算後の訪問回数の値である２は、ｉｎｃｏｍｉｎｇに設定されている遷移のｉｄの数以上であるため、フローチャート探索部１２２は、待ち合わせを終了し、合流ノード２５よりも先のノードである業務プロセス２３ｆを訪問する。
【００７３】
このように、待合せマップ６３を用いて待ち合わせを行うことにより、合流箇所よりも先のノードが合流箇所よりも前のノードよりも先に訪問され、番号設定部１２３によって若い番号を付与されてしまうことを防止することができ、フローチャートの流れの理解を助けるようなナンバリングが実現される。
【００７４】
なお、上記の説明では、深さ優先探索に基づいてノードの探索を行うためにスタックを用いる例を示したが、関数の再帰を用いて深さ優先探索を実現する方式も知られており、上記の処理を、スタックではなく、関数の再帰を用いて実現するように変更することとしてもよい。
【００７５】
図４の説明に戻って、番号設定部１２３は、フローチャート探索部１２２において訪問済となった業務プロセスに連番を付与する処理部である。既に説明したように、フローチャート探索部１２２は、フローチャートの流れの理解を助けるようなナンバリングが実現されるように、分岐箇所や合流箇所で特殊な処理を行っているため、番号設定部１２３は、フローチャート探索部１２２において訪問済となった順に業務プロセスに連番を付与するだけで、業務プロセスに適切な番号を付与することができる。
【００７６】
次に、番号付与装置１００の処理手順について説明する。図１８は、番号付与装置１００の処理手順を示すフローチャートである。同図に示すように、番号付与装置１００が、まず、初期処理として、関連する文書においてノードに関する情報が含まれるページを示す変数であるページ番号を１に設定し、ノードに付与する番号を示す変数であるステップ番号を１に設定し、関連する文書におけるノードに関する情報の表示位置を示す変数であるページ内位置を０に設定し、訪問済みリスト６２と待合せマップ６３を初期化する（ステップＳ１０１）。
【００７７】
そして、方向判定部１２１が、後述する方向判定処理を実行して、フローチャートが縦向きであるか横向きであるかを判定し（ステップＳ１０２）、フローチャート探索部１２２が、構成要素情報１１１を参照して、探索対象のフローチャートの開始ノードをスタック６１へプッシュする（ステップＳ１０３）。
【００７８】
続いて、フローチャート探索部１２２が、スタック６１からノードをポップする（ステップＳ１０４）。ここで、ノードをポップすることができた場合、すなわち、スタック６１が空でなかった場合は（ステップＳ１０５肯定）、フローチャート探索部１２２は、構成要素情報１１１を参照して、ポップしたノードのｉｎｃｏｍｉｎｇの値を確認し、そのノードが合流ノードであるか否かを判定する。
【００７９】
そして、フローチャート探索部１２２は、ｉｎｃｏｍｉｎｇに設定されているｉｄの数が１以下であれば合流ノードではないと判定し（ステップＳ１０６否定）、番号設定部１２３に後述する番号設定処理を行わせて、ポップしたノードに番号を付与させ（ステップＳ１０７）、ポップしたノードを訪問済みリスト６２へ登録する（ステップＳ１０８）。
【００８０】
そして、構成要素情報１１１を参照して、ポップしたノードの直後に接続されている未訪問のノードを全て取得し（ステップＳ１０９）、複数のノードが取得された場合、すなわち、ポップしたノードが分岐ノードであった場合は（ステップＳ１１０肯定）、後述するノード並べ替え処理を行って取得されたノードを整列した後（ステップＳ１１１）、最後のノードからスタック６１へプッシュしていく（ステップＳ１１２）。そして、プッシュが完了した後は、ステップＳ１０４以降の処理を再実行する。
【００８１】
一方、ステップＳ１０９において取得されたノードが１以下であった場合、ポップしたノードが分岐ノードでなかった場合は（ステップＳ１１０否定）、取得されたノードがあればそれをスタック６１へプッシュし、ステップＳ１０４以降の処理を再実行する。
【００８２】
また、フローチャート探索部１２２は、ステップＳ１０４においてポップしたノードのｉｎｃｏｍｉｎｇに設定されているｉｄの数が複数であれば、ポップしたノードが合流ノードであると判定し（ステップＳ１０６肯定）、そのノードが待合せマップ６３に登録済みであるか否かを確認する。ここで、登録されていなければ（ステップＳ１１３否定）、ノードを待合せマップ６３に登録し（ステップＳ１１４）、ノードに対応する訪問回数を１回に設定する。
【００８３】
一方、待合せマップ６３に登録済みであれば（ステップＳ１１３肯定）、ノードに対応する訪問回数に１を加算し（ステップＳ１１６）、加算後の訪問回数が遷移数、すなわち、ノードのｉｎｃｏｍｉｎｇに設定されているｉｄの数以上であれば（ステップＳ１１７肯定）、ステップＳ１０７以降の処理を実行して、当該の合流ノードに番号を付与させ、遠方のノードの探索を行う。一方、加算後の訪問回数が遷移数、すなわち、ノードのｉｎｃｏｍｉｎｇに設定されているｉｄの数未満であれば（ステップＳ１１７否定）、ステップＳ１０４に戻って、当該の合流ノードへ到達する他の経路の探索を行う。
【００８４】
こうして、フローチャート内の探索を進め、ステップＳ１０４においてノードをポップすることができなかった場合、すなわち、スタック６１が空であった場合は（ステップＳ１０５否定）、フローチャート内の全てのノードを探索したことになるため、処理を終了する。なお、上記の説明においては、スタック６１等にノードそのものを格納するものとしたが、スタック６１等に格納するのは、ノードを識別することができるもの、例えば、ｉｄであってもよい。
【００８５】
図１９は、方向判定処理の処理手順を示すフローチャートである。同図に示すように、方向判定部１２１は、まず、初期処理として、縦方向に伸びる遷移の数を示す変数である縦遷移数を０に設定し、横方向に伸びる遷移の数を示す変数である横遷移数を０に設定する（ステップＳ２０１）。
【００８６】
そして、方向判定部１２１は、構成要素情報１１１から処理対象のフローチャートに含まれるノードのうち未選択のものを１つ選択する（ステップＳ２０２）。ここで、ノードを選択することができた場合は（ステップＳ２０３肯定）、図形情報１１２を参照して、ノードと対応する矩形情報、すなわち、ノードと同一のｉｄをもつ矩形情報を取得し（ステップＳ２０４）、その矩形情報に付随する接続ポイントを全て取得する（ステップＳ２０５）。
【００８７】
そして、方向判定部１２１は、取得した接続ポイントのうち未選択のものを１つ選択する（ステップＳ２０６）。ここで、接続ポイントを選択することができた場合は（ステップＳ２０７肯定）、選択した接続ポイントの座標を矩形情報の座標と比較する。具体的には、矩形情報が示す矩形等の中心のＸ座標であるＰｉｎＸと、矩形情報が示す矩形等と遷移の矢印との交点である接続ポイントのＸ座標であるＲｘの差の絶対値が所定の閾値よりも大きければ（ステップＳ２０８肯定）、遷移が横向き（Ｘ軸方向）に伸びていると想定されるので、横遷移数に１を加算する（ステップＳ２０９）。また、矩形情報が示す矩形等の中心のＹ座標であるＰｉｎＹと、矩形情報が示す矩形等と遷移の矢印との交点である接続ポイントのＹ座標であるＲｙの差の絶対値が所定の閾値よりも大きければ（ステップＳ２１０肯定）、遷移が縦向き（Ｙ軸方向）に伸びていると想定されるので、縦遷移数に１を加算する（ステップＳ２１１）。
【００８８】
そして、接続ポイントの座標を矩形情報の座標と比較した後は、ステップＳ２０６に戻って、次の未選択の接続ポイントの選択を試みる。こうして、取得された全ての接続ポイントの座標を矩形情報の座標と比較し、ステップＳ２０６において全ての接続ポイントが選択済みであった場合は（ステップＳ２０７否定）、ステップＳ２０２へ戻って、構成要素情報１１１から処理対象のフローチャートに含まれるノードのうち未選択ものの選択を試みる。
【００８９】
こうして、処理対象のフローチャートに含まれる各ノードを対象として処理を進めていき、ステップＳ２０２において全てのノードを選択済みとなったならば（ステップＳ２０３否定）、縦遷移数の値と横遷移数の値を比較する。そして、縦遷移数の値が横遷移数の値よりも大きければ（ステップＳ２１２肯定）、フローチャートが縦向きであると判定し、さもなければ（ステップＳ２１２否定）、フローチャートが横向きであると判定する。
【００９０】
図２０は、ノード並び替え処理の処理手順を示すフローチャートである。同図に示すように、フローチャート探索部１２２は、取得された各ノードに対応する矩形情報、すなわち、同一のｉｄをもつ矩形情報を図形情報１１２から取得する（ステップＳ３０１）。
【００９１】
そして、方向判定部１２１によってフローチャートの向きが縦向きであると判定されていた場合は（ステップＳ３０２肯定）、相対的に左にあるノードが先になるように、矩形情報が示す矩形等の中心のＸ座標であるＰｉｎＸが昇順となるように対応するノードをソートする。このとき、ＰｉｎＸの値が同一の矩形情報があれば、それらの矩形情報については、ＰｉｎＹが降順となるように対応するノードをソートする（ステップＳ３０３）。
【００９２】
また、方向判定部１２１によってフローチャートの向きが横向きであると判定されていた場合は（ステップＳ３０２否定）、相対的に上にあるノードが先になるように、矩形情報が示す矩形等の中心のＹ座標であるＰｉｎＹが降順となるように対応するノードをソートする。このとき、ＰｉｎＹの値が同一の矩形情報があれば、それらの矩形情報については、ＰｉｎＸが昇順となるように対応するノードをソートする（ステップＳ３０４）。
【００９３】
図２１は、番号設定処理の処理手順を示すフローチャートである。同図に示すように、番号設定部１２３は、現在処理対象になっているノードが業務プロセスであれば、すなわち、現在処理対象になっているノードのｔｙｐｅの値を参照し、その値が「業務プロセス」であれば（ステップＳ４０１肯定）、ノードにステップ番号を設定し（ステップＳ４０２）、ステップ番号に１を加算する（ステップＳ４０３）。一方、現在処理対象になっているノードが業務プロセスでなければ（ステップＳ４０１否定）、特に処理を行わない。
【００９４】
図２２は、ページ番号を付加する場合の番号設定処理の処理手順を示すフローチャートである。同図に示すように、番号設定部１２３は、現在処理対象になっているノードが業務プロセスであれば、すなわち、現在処理対象になっているノードのｔｙｐｅの値を参照し、その値が「業務プロセス」であれば（ステップＳ５０１肯定）、構成要素情報１１１と、書式情報と１１３と、フォント情報１１４とを参照して、ノードに関する情報を関連する文書に出力する場合に、出力行の高さがどれだけの大きさになるかを算出する（ステップＳ５０２）。
【００９５】
例えば、図３−２に示したような一覧表にノードに関する情報を出力する場合であれば、各カラムの幅と使用するフォントの情報を取得し、ノードに設定されている属性を各カラムに出力した場合に、各カラムの高さがどれだけになるかをフォントのサイズと文字の折り返しを考慮して算出し、最も高さが必要なカラムの高さを出力行の高さとする。
【００９６】
そして、求めた高さをページ内位置に加算し（ステップＳ５０３）、ページ内位置が１ページ内に出力可能な高さの最大値を超過した場合は（ステップＳ５０４肯定）、ページ番号に１を加算し（ステップＳ５０５）、求めた高さをページ内位置に設定する（ステップＳ５０６）。ページ内位置が１ページ内に出力可能な高さの最大値を超過していなければ、ステップＳ５０５および５０６は実行しない。
【００９７】
そして、ノードにページ番号とステップ番号を設定し（ステップＳ５０７）、ステップ番号に１を加算する（ステップＳ５０８）。一方、現在処理対象になっているノードが業務プロセスでなければ（ステップＳ５０１否定）、特に処理を行わない。
【００９８】
図２３は、ページ番号を付加し、サブフローの出現時に改ページを行う場合の番号設定処理の処理手順を示すフローチャートである。サブフローとは、既に説明したように、入れ子になっている他のフローチャートへのリンクを示すノードである。フローチャート中にこのようなノードがあった場合、フローチャートに関連する文書では、そのノードの部分でページを改めた方が見やすい文書となる場合がある。当該のフローチャートは、このように、サブフローの出現時に改ページを行う場合の処理手順を示すものである。
【００９９】
同図に示すように、番号設定部１２３は、現在処理対象になっているノードがサブフローでなければ、すなわち、現在処理対象になっているノードのｔｙｐｅの値を参照し、その値が「サブフロー」でなければ（ステップＳ６０１否定）、図２２に示したステップＳ５０１〜５０９と同様の処理であるステップＳ６０２〜６０９を実行する。
【０１００】
一方、ように、番号設定部１２３は、現在処理対象になっているノードがサブフローであれば（ステップＳ６０１肯定）、ページ番号に１を加算し（ステップＳ６１０）、ページ内位置に０を設定した後（ステップＳ６１１）、サブフローが示すフローチャートについて図１８に示したステップＳ１０２以降を実行して番号付与処理を行う（ステップＳ６１２）。そして、サブフローが示すフローチャートについて番号付与処理を行った後は、ページ番号に１を加算し（ステップＳ６１３）、ページ内位置に０を設定して処理を終了する（ステップＳ６１４）。
【０１０１】
なお、上記の処理手順では、サブフローが出現した場合には常に改ページをすることとしているが、改ページが多くなり余白が大きいページが多数できるのも不都合であるため、サブフローが出現した場合にページ内位置の値を確認し、この値が小さければ（例えば、１ページないに出力可能な高さの１／４以下であれば）、改ページを行わないこととしてもよい。
【０１０２】
上述してきたように、本実施例では、分岐部分では分岐先のノードの表示位置に基づいてどの経路を先に探索するかを決定し、合流部分では、その合流部分へ到達する全ての経路が探索されるまで待ち合わせを行うこととしたので、利用者がフローチャートの流れの理解しやすいように、フローチャート中の各ノードに番号を付与することができる。
【０１０３】
なお、図４に示した本実施例に係る番号付与装置１００の構成は、本発明の要旨を逸脱しない範囲で種々に変更することができる。例えば、番号付与装置１００の制御部１２０の機能をソフトウェアとして実装し、これをコンピュータで実行することにより、番号付与装置１００と同等の機能を実現することもできる。以下に、制御部１２０の機能をソフトウェアとして実装した番号付与プログラム１０７１を実行するコンピュータの一例を示す。
【０１０４】
図２４は、番号付与プログラム１０７１を実行するコンピュータ１０００を示す機能ブロック図である。このコンピュータ１０００は、各種演算処理を実行するＣＰＵ（Central Processing Unit）１０１０と、ユーザからのデータの入力を受け付ける入力装置１０２０と、各種情報を表示するモニタ１０３０と、記録媒体からプログラム等を読み取る媒体読取り装置１０４０と、ネットワークを介して他のコンピュータとの間でデータの授受を行うネットワークインターフェース装置１０５０と、各種情報を一時記憶するＲＡＭ（Random Access Memory）１０６０と、ハードディスク装置１０７０とをバス１０８０で接続して構成される。
【０１０５】
そして、ハードディスク装置１０７０には、図４に示した制御部１２０と同様の機能を有する番号付与プログラム１０７１と、図４に示した記憶部１１０に記憶される各種データに対応する番号付与用データ１０７２とが記憶される。なお、番号付与用データ１０７２を、適宜分散させ、ネットワークを介して接続された他のコンピュータに記憶させておくこともできる。
【０１０６】
そして、ＣＰＵ１０１０が番号付与プログラム１０７１をハードディスク装置１０７０から読み出してＲＡＭ１０６０に展開することにより、番号付与プログラム１０７１は、番号付与プロセス１０６１として機能するようになる。そして、番号付与プロセス１０６１は、番号付与用データ１０７２から読み出した情報等を適宜ＲＡＭ１０６０上の自身に割り当てられた領域に展開し、この展開したデータ等に基づいて各種データ処理を実行する。
【０１０７】
なお、上記の番号付与プログラム１０７１は、必ずしもハードディスク装置１０７０に格納されている必要はなく、ＣＤ−ＲＯＭ等の記憶媒体に記憶されたこのプログラムを、コンピュータ１０００が読み出して実行するようにしてもよい。また、公衆回線、インターネット、ＬＡＮ（Local Area Network）、ＷＡＮ（Wide Area Network）等を介してコンピュータ１０００に接続される他のコンピュータ（またはサーバ）等にこのプログラムを記憶させておき、コンピュータ１０００がこれらからプログラムを読み出して実行するようにしてもよい。
【０１０８】
（付記１）フローチャートに含まれるノードと遷移の各種属性情報を保持する構成要素情報と、ノードと遷移を図示するための位置と形状に関する情報を保持する図形情報とによって表現されるフローチャート中の各ノードに番号を付与する番号付与プログラムであって、
前記構成要素情報を参照して、フローチャートの開始ノードを起点として、遷移を辿りながらフローチャート内のノードを訪問していくフローチャート探索手順と、
前記フローチャート探索手順によって訪問された順にノードに番号を付与する番号設定手順とをコンピュータに実行させ、
前記フローチャート探索手順は、訪問しているノードから他のノードへ向かう経路が複数存在する場合に、それらの経路における直近のノードの表示位置を前記図形情報から取得し、表示位置の座標の大きさに基づいてそれらの経路を探索する順序を決定し、訪問しているノードへ他のノードから到達する経路が複数存在する場合に、それら全ての経路の探索が完了するまで、訪問しているノードよりも前方のノードの探索を行わないことを特徴とする番号付与プログラム。
【０１０９】
（付記２）フローチャートの向きを判定する方向判定手順をさらにコンピュータに実行させ、
前記フローチャート探索手順は、訪問しているノードから他のノードへ向かう経路が複数存在する場合に、前記方向判定手順の判定結果によって、表示位置の座標の大きさに基づいてそれらの経路を探索する順序を変更することを特徴とする付記１に記載の番号付与プログラム。
【０１１０】
（付記３）前記番号設定手順は、フローチャートに含まれるノードの属性情報が出力される文書の書式情報を参照して、各ノードが該文書のどのページに出力されるかを算出し、前記フローチャート探索手順によって訪問された順にノードに番号を付与する場合に、該ノードが該文書に出力されるページのページ番号をさらにノードに付与することを特徴とする付記１または２に記載の番号付与プログラム。
【０１１１】
（付記４）前記番号設定手順は、フローチャートが階層的に作成されており、前記フローチャート探索手順によって探索される階層が変化した場合に、フローチャートに含まれるノードの属性情報が出力される文書が改ページされたものとみなして、各ノードが該文書のどのページに出力されるかを算出することを特徴とする付記３に記載の番号付与プログラム。
【０１１２】
（付記５）フローチャートに含まれるノードと遷移の各種属性情報を保持する構成要素情報と、ノードと遷移を図示するための位置と形状に関する情報を保持する図形情報とによって表現されるフローチャート中の各ノードに番号を付与する番号付与装置であって、
前記構成要素情報を参照して、フローチャートの開始ノードを起点として、遷移を辿りながらフローチャート内のノードを訪問していくフローチャート探索手段と、
前記フローチャート探索手段によって訪問された順にノードに番号を付与する番号設定手段とを備え、
前記フローチャート探索手段は、訪問しているノードから他のノードへ向かう経路が複数存在する場合に、それらの経路における直近のノードの表示位置を前記図形情報から取得し、表示位置の座標の大きさに基づいてそれらの経路を探索する順序を決定し、訪問しているノードへ他のノードから到達する経路が複数存在する場合に、それら全ての経路の探索が完了するまで、訪問しているノードよりも前方のノードの探索を行わないことを特徴とする番号付与装置。
【０１１３】
（付記６）フローチャートに含まれるノードと遷移の各種属性情報を保持する構成要素情報と、ノードと遷移を図示するための位置と形状に関する情報を保持する図形情報とによって表現されるフローチャート中の各ノードに番号を付与する番号付与方法であって、
前記構成要素情報を参照して、フローチャートの開始ノードを起点として、遷移を辿りながらフローチャート内のノードを訪問していくフローチャート探索ステップと、
前記フローチャート探索ステップによって訪問された順にノードに番号を付与する番号設定ステップとを含み、
前記フローチャート探索ステップは、訪問しているノードから他のノードへ向かう経路が複数存在する場合に、それらの経路における直近のノードの表示位置を前記図形情報から取得し、表示位置の座標の大きさに基づいてそれらの経路を探索する順序を決定し、訪問しているノードへ他のノードから到達する経路が複数存在する場合に、それら全ての経路の探索が完了するまで、訪問しているノードよりも前方のノードの探索を行わないことを特徴とする番号付与方法。
【産業上の利用可能性】
【０１１４】
以上のように、本発明に係る番号付与プログラム、番号付与装置および番号付与方法は、フローチャート中の各ノードに番号を付与する場合に有用であり、特に、用者がフローチャートの流れの理解しやすいように、フローチャート中の各ノードに番号を付与することが必要な場合に適している。
【図面の簡単な説明】
【０１１５】
【図１】本実施例に係る番号付与方法を用いて番号を付与した業務フロー図の一例を示す図である。
【図２】本実施例に係る番号付与方法を用いて番号を付与した横向きの業務フロー図の一例を示す図である。
【図３−１】本実施例に係る番号付与方法を用いてページ番号付きの番号を付与した業務フロー図の一例を示す図である。
【図３−２】業務フロー図と関連する文書の一例を示す図である。
【図４】本実施例に係る番号付与装置の構成を示す機能ブロック図である。
【図５】構成要素情報のモデルを示す図である。
【図６】構成要素情報の一例を示す図である。
【図７】メモリに展開された構成要素情報の一例を示す図である。
【図８】図形情報のモデルを示す図である。
【図９】メモリに展開された図形情報の一例を示す図である。
【図１０】書式情報の一例を示す図である。
【図１１】ｎｏｄｅ０２が訪問済となった後の場面を示す図である。
【図１２】分岐ノードであるｎｏｄｅ１０１をポップした場面を示す図である。
【図１３】分岐先のノードの位置情報の比較を示す図である。
【図１４】分岐先のノードをプッシュした場面を示す図である。
【図１５】ｎｏｄｅ０３が訪問済となった後の場面を示す図である。
【図１６】合流ノードであるｎｏｄｅ１０２を１回目にポップした場面を示す図である。
【図１７】合流ノードであるｎｏｄｅ１０２を２回目にポップした場面を示す図である。
【図１８】番号付与装置の処理手順を示すフローチャートである。
【図１９】方向判定処理の処理手順を示すフローチャートである。
【図２０】ノード並べ替え処理の処理手順を示すフローチャートである。
【図２１】番号設定処理の処理手順を示すフローチャートである。
【図２２】ページ番号を付加する場合の番号設定処理の処理手順を示すフローチャートである。
【図２３】ページ番号を付加し、サブフロー出現時に改ページを行う場合の番号設定処理の処理手順を示すフローチャートである。
【図２４】番号付与プログラムを実行するコンピュータを示す機能ブロック図である。
【図２５】業務フロー図の一例を示す図である。
【図２６】従来の探索手法を用いて番号を付与した業務フロー図の一例を示す図である。
【符号の説明】
【０１１６】
１１〜１５  業務フロー図
２１    開始ノード
２２    終了ノード
２３ａ〜２３ｆ  業務プロセス
２４    分岐ノード
２５    合流ノード
３１ａ〜３１ｊ  遷移
４１    業務フロー
４２    ノード
４３    遷移
４４    サブフロー
４５    制御ノード
４５ａ  開始
４５ｂ  終了
４５ｃ  条件分岐
４５ｄ  並列分岐
４６    業務プロセス
４６ａ  属性
５１    業務フロー
５２    図形情報
５２ａ  接続ポイント
５３    矩形情報
５４    線情報
６１    スタック
６２    訪問済みリスト
６３    待合せマップ
１００    番号付与装置
１１０    記憶部
１１１    構成要素情報
１１２    図形情報
１１３    書式情報
１１４    フォント情報
１２０    制御部
１２１    方向判定部
１２２    フローチャート探索部
１２３    番号設定部
１０００    コンピュータ
１０１０    ＣＰＵ
１０２０    入力装置
１０３０    モニタ
１０４０    媒体読取り装置
１０５０    ネットワークインターフェース装置
１０６０    ＲＡＭ
１０６１    番号付与プロセス
１０７０    ハードディスク装置
１０７１    番号付与プログラム
１０７２    番号付与用データ
１０８０    バス
【図１】
2008282286.tif 000003
【図２】
2008282286.tif 000004
【図３−１】
2008282286.tif 000005
【図３−２】
2008282286.tif 000006
【図４】
2008282286.tif 000007
【図５】
2008282286.tif 000008
【図６】
2008282286.tif 000009
【図７】
2008282286.tif 000010
【図８】
2008282286.tif 000011
【図９】
2008282286.tif 000012
【図１０】
2008282286.tif 000013
【図１１】
2008282286.tif 000014
【図１２】
2008282286.tif 000015
【図１３】
2008282286.tif 000016
【図１４】
2008282286.tif 000017
【図１５】
2008282286.tif 000018
【図１６】
2008282286.tif 000019
【図１７】
2008282286.tif 000020
【図１８】
2008282286.tif 000021
【図１９】
2008282286.tif 000022
【図２０】
2008282286.tif 000023
【図２１】
2008282286.tif 000024
【図２２】
2008282286.tif 000025
【図２３】
2008282286.tif 000026
【図２４】
2008282286.tif 000027
【図２５】
2008282286.tif 000028
【図２６】
2008282286.tif 000029