(57)【要約】  フローチャート描画装置（１）は、入力装置（２）から新たなプロセスの入力を受け付ける。そして、パーツ情報管理部（２０２）は、入力されたプロセスの表示位置が、パーツ情報テーブル（３００）に記憶された既存のフローチャートのコネクタの表示位置と重複する場合には、コネクタの上位と下位に位置するプロセスの間に、入力されたプロセスを挿入する処理を行う。次に、フロー位置計算部（２０３）が、各プロセスが均等に配置されるように表示位置を計算し、フロー表示部（２０４）が処理結果のフローチャートを表示装置（３）に表示させる。
2012096001.tif 000002
【特許請求の範囲】
【請求項１】
フローチャートを構成する、複数のノードと前記複数のノード間を接続し前記ノードの処理手順を示すコネクタとの表示位置を調整し、表示装置に表示させるフローチャート描画装置であって、
前記ノードおよび前記コネクタの前記表示位置を示す座標情報、並びに、前記ノードと前記コネクタとの接続情報を含むパーツ情報が記憶される記憶部と、
入力装置から前記フローチャートに追加されるノードに関する情報の入力を受け付けるデータ入力部と、
前記入力されたノードの表示位置と、前記フローチャートを構成する前記コネクタの表示位置とが重複するか否かを前記パーツ情報に基づき判定し、前記入力されたノードが前記コネクタと重複すると判定した場合に、前記重複したコネクタと接続する上位のノードと下位のノードとの間に、前記入力されたノードを挿入するように、前記ノード間の接続関係を決定し、
前記入力されたノードと前記上位のノードとを接続するコネクタ、および前記入力されたノードと前記下位のノードとを接続するコネクタを、前記フローチャートの前記パーツ情報に新たに設定するパーツ情報管理部と、
前記上位のノードの表示位置を基準として、前記入力されたノード、前記下位のノード、前記入力されたノードと前記上位のノードとを接続するコネクタ、および、前記入力されたノードと前記下位のノードとを接続するコネクタの表示位置を決定するフロー位置計算部と、
前記決定した表示位置に基づき、前記フローチャートを前記表示装置に表示させるフロー表示部と、
を備えることを特徴とするフローチャート描画装置。
【請求項２】
前記パーツ情報管理部は、
前記入力されたノードの表示位置と、前記フローチャートを構成する前記ノードの表示位置とが重複するか否かを前記パーツ情報に基づき判定し、前記入力されたノードが前記ノードと重複すると判定した場合に、処理のフローを分岐させる分岐ノードを、前記フローチャートの前記パーツ情報に新たに設定し、前記新たに設定した分岐ノードの分岐先として、前記入力されたノードおよび前記重複したノードを設定し、
前記フロー位置計算部は、
前記設定した分岐ノードを基準として、前記入力されたノードおよび前記重複したノードを均等に配置するように表示位置を決定すること
を特徴とする請求の範囲第１項に記載のフローチャート描画装置。
【請求項３】
前記フロー位置計算部は、
前記分岐ノードの分岐先となる、当該分岐ノードの下位に位置する前記ノードおよび前記コネクタの集合それぞれをノードグループとして設定し、前記ノードグループを構成する各ノードおよび各コネクタの表示位置の前記座標情報を前記パーツ情報から取得し、前記ノードグループを構成する各ノードおよび各コネクタを含む最小の矩形を、前記ノードグループそれぞれについて計算し、
前記計算したノードグループの矩形が他のノードグループの矩形と重複する場合に、前記分岐ノードの表示位置を基準として、前記重複した前記ノードグループの表示位置を変更すること
を特徴とする請求の範囲第２項に記載のフローチャート描画装置。
【請求項４】
フローチャートを構成する、複数のノードと前記複数のノード間を接続し前記ノードの処理手順を示すコネクタとの表示位置を調整し、表示装置に表示させるフローチャート描画装置のフローチャート描画方法であって、
前記フローチャート描画装置は、
前記ノードおよび前記コネクタの前記表示位置を示す座標情報、並びに、前記ノードと前記コネクタとの接続情報を含むパーツ情報が記憶される記憶部を備えており、
入力装置から前記フローチャートに追加されるノードに関する情報の入力を受け付けるステップと、
前記入力されたノードの表示位置と、前記フローチャートを構成する前記コネクタの表示位置とが重複するか否かを前記パーツ情報に基づき判定し、前記入力されたノードが前記コネクタと重複すると判定した場合に、前記重複したコネクタと接続する上位のノードと下位のノードとの間に、前記入力されたノードを挿入するように、前記ノード間の接続関係を決定するステップと、
前記入力されたノードと前記上位のノードとを接続するコネクタ、および前記入力されたノードと前記下位のノードとを接続するコネクタを、前記フローチャートの前記パーツ情報に新たに設定するステップと、
前記上位のノードの表示位置を基準として、前記入力されたノード、前記下位のノード、前記入力されたノードと前記上位のノードとを接続するコネクタ、および、前記入力されたノードと前記下位のノードとを接続するコネクタの表示位置を決定するステップと、
前記決定した表示位置に基づき、前記フローチャートを前記表示装置に表示させるステップと、
を実行することを特徴とするフローチャート描画方法。
【請求項５】
前記入力されたノードの表示位置と、前記フローチャートを構成する前記ノードの表示位置とが重複するか否かを前記パーツ情報に基づき判定し、前記入力されたノードが前記ノードと重複すると判定した場合に、処理のフローを分岐させる分岐ノードを、前記フローチャートの前記パーツ情報に新たに設定し、前記新たに設定した分岐ノードの分岐先として、前記入力されたノードおよび前記重複したノードを設定するステップと、
前記設定した分岐ノードを基準として、前記入力されたノードおよび前記重複したノードを均等に配置するように表示位置を決定するステップと、
をさらに実行することを特徴とする請求の範囲第４項に記載のフローチャート描画方法。
【請求項６】
前記分岐ノードの分岐先となる、当該分岐ノードの下位に位置する前記ノードおよび前記コネクタの集合それぞれをノードグループとして設定し、前記ノードグループを構成する各ノードおよび各コネクタの表示位置の前記座標情報を前記パーツ情報から取得し、前記ノードグループを構成する各ノードおよび各コネクタを含む最小の矩形を、前記ノードグループそれぞれについて計算し、
前記計算したノードグループの矩形が他のノードグループの矩形と重複する場合に、前記分岐ノードの表示位置を基準として、前記重複した前記ノードグループの表示位置を変更すること
を特徴とする請求の範囲第５項に記載のフローチャート描画方法。
【請求項７】
請求の範囲第４項ないし請求の範囲第６項のいずれか１項に記載のフローチャート描画方法をコンピュータの実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、フローチャート描画装置、フローチャート描画方法およびプログラムに関する。
【背景技術】
【０００２】
企業における業務知識やノウハウ等を用いた業務を行う手順を可視化するツールとして業務フローチャートがある。この業務フローチャートは、その業務で行われる作業や処理内容を示すノードやノード間の接続線等で構成される。【０００３】
業務フロー等のように、オブジェクトをフローチャート形式で、表示装置に表示させるソフトウェアの編集機能において、従来技術では、オブジェクトの配置作業時に以下の作業をユーザ自らが行う必要があった。
（１）新規に追加したオブジェクトの配置
（２）描画領域を考慮した配置済みオブジェクトの移動
（３）オブジェクト間の結線（不要な結線の削除や追加したオブジェクトと既存のオブジェクトとの結線）【０００４】
特に、上記（２）のオブジェクトの移動作業については、フローが見やすい形になるようにユーザが考慮して行う必要があり、フローの大きさや複雑さに応じて、多くの作業時間を要していた。【０００５】
この業務フローチャートの作成を効率的に行うための技術として、フローチャートを描画する編集機能を持たず、業務フローの各々の処理を示す表形式のファイルを入力としてフローチャートを作図する方法が開示されている（特許文献１参照）。
また、作成中のフローチャートの接続線が交差しないように自動的に制御する方法が開示されている（特許文献２参照）。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００１−１３４６５３号公報
【特許文献２】特開２００９−１１０２７４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
この特許文献１に記載の技術は、完成したフローチャートの全貌を見た後に編集することができない。また、対象とする業務フローの構成要素が少なく、複雑な形をとらないため、見やすさを考慮に入れていない方法である。
通常、新規オブジェクトの追加によって完成したフローチャートを見て、他のオブジェクトとインデントをそろえたり、ユーザに見やすくするためにスペースをとるなどの見た目を目的とした調整作業が発生する。フローチャートのオブジェクトを描画・編集するソフトウェアにおいて、見た目調整の作業は必須であり、かつ、二次的な作業であるにもかかわらず多くの工数を要していた。
また、特許文献２に記載の技術は、ツールによって形の決まる接続線の配置に着目しているものである。しかしながら、フローチャートを作成するユーザは、フローチャート全体の形を見て、接続線だけでなくオブジェクトの位置を更に手作業により調整する必要があった。
つまり、ユーザは、オブジェクトを追加する場合に、ユーザ自身により、フローチャート全体の形を調整する必要があり、手間のかかるものであった。【０００８】
このような背景に鑑みて本発明がなされたのであり、本発明は、フローチャート作成の編集効率を向上することができる、フローチャート描画装置、フローチャート描画方法およびプログラムを提供することを目的とする。
【課題を解決するための手段】
【０００９】
本発明に係るフローチャート描画装置は、ノードおよびノード間を接続する接続線であるコネクタの表示位置を示す座標情報、並びに、ノードとコネクタとの接続情報を含むパーツ情報（パーツ情報テーブル）を記憶する記憶部を備える。そして、入力装置からフローチャートに追加されるノードに関する情報の入力を受け付けると、入力されたノードの表示位置と、フローチャートを構成するコネクタの表示位置とが重複するか否かをパーツ情報に基づき判定する。そして、入力されたノードがコネクタと重複すると判定した場合に、重複したコネクタと接続する上位のノードと下位のノードとの間に、入力されたノードを挿入するように、ノード間の接続関係を決定する。そして、フローチャート描画装置は、上位のノードの表示位置を基準として、フローチャートを構成するノードおよびコネクタの表示位置を決定し、表示装置にフローチャートを表示させる。
【発明の効果】
【００１０】
本発明によれば、フローチャート作成の編集効率を向上する、フローチャート描画装置、フローチャート描画方法およびプログラムを提供することができる。
【図面の簡単な説明】
【００１１】
【図１】本実施形態に係るフローチャート描画装置の構成例を示す機能ブロック図である。
【図２】本実施形態に係るフローチャート描画装置により、既存のフローチャートを表示装置に表示させた図である。
【図３】本実施形態に係るパーツ情報テーブルのデータ構成の一例を示す図である。
【図４】本実施形態に係るフローチャート描画装置が行うフローチャート描画処理（順接接続）の流れを示すフローチャートである。
【図５】本実施形態に係るフローチャート描画処理（順接接続）の処理過程におけるフローチャートを例示する図である。
【図６】本実施形態に係るパーツ情報テーブルのデータ構成の一例を示す図である。
【図７】本実施形態に係るパーツ情報テーブルのデータ構成の一例を示す図である。
【図８】本実施形態に係るフローチャート描画処理（順接接続）の処理過程におけるフローチャートを例示する図である。
【図９】本実施形態に係るフローチャート描画処理（順接接続）の処理結果のフローチャートを例示する図である。
【図１０】本実施形態に係るフローチャート描画装置の表示位置調整処理（順接接続）の流れを示すフローチャートである。
【図１１】本実施形態に係るパーツ情報テーブルのデータ構成の一例を示す図である。
【図１２】本実施形態に係る表示位置調整処理（順接接続）の処理過程におけるフローチャートを例示する図である。
【図１３】本実施形態に係るパーツ情報テーブルのデータ構成の一例を示す図である。
【図１４】本実施形態に係るフローチャート描画処理（並接接続）の処理過程におけるフローチャートを例示する図である。
【図１５】本実施形態に係るフローチャート描画装置が行うフローチャート描画処理（並接接続）の流れを示すフローチャートである。
【図１６】本実施形態に係るパーツ情報テーブルのデータ構成の一例を示す図である。
【図１７】本実施形態に係るフローチャート描画処理（並接接続）の処理過程におけるフローチャートを例示する図である。
【図１８】本実施形態に係るフローチャート描画装置の表示位置調整処理（並接接続）の流れを示すフローチャートである。
【図１９】本実施形態に係るパーツ情報テーブルのデータ構成の一例を示す図である。
【図２０】本実施形態に係る表示位置調整処理（並接接続）の処理過程におけるフローチャートを例示する図である。
【図２１】本実施形態に係る表示位置調整処理（並接接続）の処理結果のフローチャートを例示する図である。
【図２２】本実施形態に係るパーツ情報テーブルのデータ構成の一例を示す図である。
【図２３】本実施形態に係るノードグループ整形処理の処理過程におけるフローチャートを例示する図である。
【図２４】本実施形態に係るパーツ情報テーブルのデータ構成の一例を示す図である。
【図２５】本実施形態に係るノードグループ整形処理の処理過程におけるフローチャートを例示する図である。
【図２６】本実施形態に係るフローチャート描画装置のノードグループ整形処理の流れを示すフローチャートである。
【図２７】本実施形態に係るノードグループ整形処理の処理結果のフローチャートを例示する図である。
【発明を実施するための形態】
【００１２】
（処理概要）
まず、本実施形態に係るフローチャート描画装置１の処理概要を説明する。
本実施形態に係るフローチャート描画装置１が処理を行うフローチャートは、例えば、後記する図２や図２１等に示すフローチャートである。これらのフローチャートは、処理や分岐等を示すノードで構成され、各ノード間が矢印付きの線（以下、「コネクタ」と呼ぶ。）で結線される。このノードとコネクタとを総称してパーツと呼ぶ。
また、ノードには、以下の種類がある。
（１）開始および終了を示し、楕円形で表示されるノード。以下、開始を示すノードを、「開始ノード」と呼ぶ。
（２）処理を示し、矩形で表示されるノード。以下、「プロセス」と呼ぶ。
（３）分岐を示し、ひし形で表示されるノード。以下、「分岐ノード」と呼ぶ。なお、本実施形態においては、例示していないが、フローにおける処理の合流をひし形の合流ノードとしてフローチャートに表示させてもよい。
【００１３】
本実施形態に係るフローチャート描画装置１は、表示画面上に表示されたフローチャートの既存のパーツに、ユーザが、新たなプロセスを重ねて配置させることで、予め設定された接続関係に基づき、新たなプロセスを追加したフローチャートの配置を決定する。
具体的には、新たなプロセスを追加するユーザの操作に、以下に示す２つの接続関係の処理の実行を設定しておく。
【００１４】
まず、図２に示したフローチャートが表示されている場合、図５に示すように、プロセスＡ００３とプロセスＢ００５との間のコネクタ（矢印）００４に重なるように、新たなプロセスＣ００６がユーザにより配置される。すると、本実施形態に係るフローチャート描画装置１は、後記する図９に示すように、新たなプロセスＣ００６を、プロセスＡ００３とプロセスＢ００５との間に挿入する処理を行うものと判定し、処理を実行する。なお、このように、フローの上方から下方に向けて接続されたノード間に新たなプロセスを挿入する処理、または、ノード間の接続関係を、以下「順接接続」と呼ぶ。
【００１５】
また、図１４（ａ）に示すように、既存のプロセス（プロセスＡ００３）と重なるように、新たなプロセスＣ００６がユーザにより配置される。すると、本実施形態に係るフローチャート描画装置１は、後記する図２１のように、新たなプロセスＣ００６と、既存のプロセスＡ００３とを、並列に接続する処理を行うものと判定し、新たなノードとして分岐ノード（分岐ノード００７）を追加した上で、既存のプロセス（プロセスＡ００３）と新たなプロセスＣ００６とを並列に接続する。なお、このように、フローをある条件によって分岐し、その分岐先の一方のプロセスと他方のプロセスを並列に接続させる処理、または、ノード間の接続関係を、以下「並接接続」と呼ぶ。
【００１６】
本実施形態に係るフローチャート描画装置１は、ユーザの操作に対応付けて、フローチャートの接続関係を予め定義しておくことで、新たに入力されるプロセスを、「順接接続」あるいは「並接接続」として設定する処理を実行する。このようにすることで、ユーザは、新たなプロセスの入力を行う場合に、既存のプロセスの配置の変更を自ら行う必要がなく、作業効率を向上させることができる。
また、フローチャート描画装置１は、新たに入力されたプロセスの接続が終了した後、既存のパーツの大きさに合わせて自動で全体の整形を行う。このようにすることで、ユーザは、既存のパーツとのバランスを考えながら、追加したパーツのレイアウトを微調整する必要がなくなる（詳細は後記する）。
【００１７】
（フローチャート描画装置の構成）
図１は、本実施形態に係るフローチャート描画装置１の構成例を示す機能ブロック図である。図１に示すように、フローチャート描画装置１は、ＣＰＵ（Central Processing Unit）１０と、メモリ部２０と、記憶部３０と、入出力部４０とを含んで構成される。
【００１８】
ＣＰＵ１０は、フローチャート描画装置１全体の制御および演算を行う。
また、入出力部４０は、入力インタフェース４１と出力インタフェース４２とを備える。そして、入出力部４０は、入力インタフェース４１を介して、マウスやキーボード等の入力装置２からの情報の入力を受け付ける。また、入出力部４０は、出力インタフェース４２を介して、フローチャート描画装置１の処理結果であるフローチャートを、表示装置３のディスプレイ等に表示させる。
なお、この入力インタフェース４１は、図示していない可搬型記憶デバイスと接続することができ、後記するフローチャート描画部２００を実行させるプログラムが格納された可搬型記憶デバイスが接続されると、記憶部３０に転送したり、メモリ部２０へ直接記憶させるようにすることもできる。
【００１９】
記憶部３０は、フラッシュメモリ、ハードディスク等の記憶手段からなり、パーツ情報テーブル３００等を記憶する。
【００２０】
図３は、本実施形態に係るパーツ情報テーブル（パーツ情報）３００のデータ構成の一例を示す図である。図３に示すパーツ情報テーブル３００のデータは、図２に示すフローチャートの各パーツに関する情報を示すものである。
【００２１】
パーツ情報テーブル３００は、ＩＤ３０１、Ｔｙｐｅ３０２、Ｎａｍｅ３０３、接続元パーツ３０４、接続先パーツ３０５、位置座標３０６、寸法３０７、重心位置３０８、ノードグループ３０９、および一時情報３１０を含んで構成される。なお、接続元パーツ３０４および接続先パーツ３０５の情報が、請求項の接続情報に該当する。また、位置座標３０６、寸法３０７および重心位置３０８の情報が、請求項の表示位置を示す座標情報に該当する。
ＩＤ３０１は、対象となるフローチャートの各パーツに一意に付される識別子である。
Ｔｙｐｅ３０２は、パーツの種類を示し、開始ノード等を示す「Terminal」、コネクタ（矢印）を示す「Connector」、プロセスを示す「Process」、分岐ノードを示す「Branch」（不図示）等が格納される。
Ｎａｍｅ３０３は、パーツの名称を表す。なお、パーツの名称が付されていない場合は、「NONAME」が格納される。
【００２２】
接続元パーツ３０４は、Ｆｒｏｍ３４１とＦｒｏｍＰｏｒｔ３４２の情報を含んで構成される。このＦｒｏｍ３４１には、そのパーツの上位に接続する接続元のパーツのＩＤ番号（ＩＤ３０１）が格納される。ＦｒｏｍＰｏｒｔ３４２は、そのパーツがプロセスの場合、表示画面上において、矩形の上方（Upper）、下方（Lower）、左方（Left）、右方（Right）のどの位置で接続元のコネクタと接続されているかを示す。例えば、ＩＤ３０１が「００３」のプロセスＡ００３の場合は、図２に示すように、プロセスＡ００３を表す矩形の上方（Upper）で、コネクタ００２（ＩＤ：００２）と接続されることを示している。
【００２３】
接続先パーツ３０５は、Ｔｏ３５１とＴｏＰｏｒｔ３５２の情報を含んで構成される。このＴｏ３５１は、そのパーツの下位に接続する接続先のパーツのＩＤ番号（ＩＤ３０１）が格納される。ＴｏＰｏｒｔ３５２は、そのパーツがプロセスの場合、表示画面上において、プロセスを示す矩形の上方（Upper）、下方（Lower）、左方（Left）、右方（Right）のどの位置で接続先のコネクタと接続されているかを示す。例えば、ＩＤ３０１が「００３」のプロセスＡ００３の場合は、図２に示すように、プロセスＡ００３を表す矩形の下方（Lower）で、コネクタ００４（ＩＤ：００４）と接続されることを示している。なお、パーツの種類が分岐ノード（Branch）の場合は、複数のコネクタが接続先パーツ３０５に設定される（詳細は後記する）。
【００２４】
位置座標３０６は、そのパーツがノードの場合は、ノードを囲む最小の矩形の左上端の座標（ｘ値、ｙ値）を表す。例えば、ＩＤ３０１が「００１」の開始ノード００１の位置座標３０６は、開始ノード００１を表す楕円を囲む最小の矩形の左上端の座標（100、20）を表す（図２参照）。また、そのパーツがコネクタの場合は、接続元のパーツの矢印の始点を表す。例えば、ＩＤ３０１が「００４」のコネクタ００４の位置座標３０６は、コネクタ００４の矢印の始点である座標（120、100）を表す（図２参照）。
【００２５】
寸法３０７は、そのパーツの幅（ｗ値）と高さ（ｈ値）とを表す。本実施例においては、プロセス（矩形）の幅（ｗ値）を「60」、高さ（ｈ値）を「20」。コネクタ（矢印）の幅（ｗ値）を「0」、高さ（ｈ値）を「40」。分岐ノード（ひし形）の幅（ｗ値）を「40」、高さ（ｈ値）を「20」、として説明するが、各パーツの基本となる寸法３０７は任意に設定することができる。
【００２６】
重心位置３０８は、各パーツの重心のｘ座標、ｙ座標である（ｃｘ値）、（ｃｙ値）を表す。
【００２７】
ノードグループ３０９は、分岐ノード若しくは合流ノードを境にしたパーツの集合を表す。後記するフローチャートの表示位置調整処理（図１０、図１８参照）は、同じノードグループ３０９内のパーツについて行う（詳細は後記）。図２に示すフローチャートにおいては、分岐ノード、合流ノードは存在しないので、各パーツは同じノードグループ３０９である「Ｎ１」が設定される。
なお、複数のフローの合流を示す合流ノードを、ひし形のノードとしてフローチャートに図示しない場合（矢印のみでフローの合流を示す）もあるが、その場合であっても、本実施形態におけるパーツ情報テーブル３００の接続元パーツ３０４の項目に、複数の接続元パーツが設定されている場合には、仮想的に合流ノードが存在するものとしてノードグループ３０９の編成処理を行うようにしてもよい。
【００２８】
一時情報３１０は、Ａｄｄ３１１とＴａｒｇｅｔ３１２の情報を含んで構成される。Ａｄｄ３１１は、フローチャートに、追加して入力されたノードを示す一時情報３１０である。また、Ｔａｒｇｅｔ３１２は、フローチャートに、追加して入力されたノードと重なったパーツを示す一時情報３１０である。なお、この一時情報３１０については、後記する図６、図７において詳細に説明する。
【００２９】
図１に戻り、メモリ部２０は、ＲＡＭ（Random Access Memory）等の一次記憶装置からなり、メモリ部２０上には、フローチャート描画部２００がプログラムとして読み込まれている。
【００３０】
このフローチャート描画部２００は、フローチャート描画装置１全体の制御を行い、データ入力部２０１と、パーツ情報管理部２０２と、フロー位置計算部２０３と、フロー表示部２０４とを含んで構成される。なお、このフローチャート描画部２００は、例えばフローチャート描画装置１の記憶部３０に記憶されたプログラムを、ＣＰＵ１０がメモリ部２０に展開し実行することで実現される。また、このフローチャート描画部２００は、集積回路化するなどしてハードウェアで実現するようにしてもよい。
【００３１】
データ入力部２０１は、ユーザによる入力装置２の操作により、入出力部４０を介して新たに追加されたパーツの入力を受け付ける。そして、データ入力部２０１は、受け付けたパーツの情報を、パーツ情報管理部２０２に出力する。
【００３２】
パーツ情報管理部２０２は、入力されたパーツの情報を、一時情報３１０として、記憶部３０内のパーツ情報テーブル３００に記憶する。
また、パーツ情報管理部２０２は、入力されたパーツがプロセスであり、そのプロセスの配置が、パーツ情報テーブル３００に記憶されている既存のパーツであるコネクタまたはプロセスと重複するか否かを判定する。
【００３３】
そして、パーツ情報管理部２０２は、入力されたプロセスが既存のコネクタと重複する場合には、ノード間に入力されたプロセスを挿入する「順接接続」を実行すると判定し、入力されたプロセスとその上位に位置するプロセスとを接続するためのコネクタ、および、入力されたプロセスとその下位に位置するプロセスとを接続するためのコネクタを、パーツ情報テーブル３００に新たに設定する。
また、パーツ情報管理部２０２は、入力されたプロセスが既存のプロセスと重複する場合には、入力されたプロセスと既存の重複したプロセスとを、並列に接続する「並接接続」を実行すると判定する。そして、パーツ情報管理部２０２は、パーツ情報テーブル３００に分岐ノードを設定した上で、重複したプロセスと新たな入力されたプロセスとを並列に接続する。
【００３４】
フロー位置計算部２０３は、パーツ情報管理部２０２が、順接接続を実行すると判定した場合に、入力されたプロセスと接続する上位と下位のプロセスを特定し、上位のプロセスの位置座標に基づき、入力されたプロセスのＸ座標を変更し、各プロセスが等間隔に配置されるようにＹ座標を変更する。なお、詳細は、図１０に示す表示位置調整処理（順接接続）において説明する。
【００３５】
また、フロー位置計算部２０３は、パーツ情報管理部２０２が、並接接続を実行すると判定した場合に、分岐ノードを中心として、分岐ノードよりも下位に接続するパーツを左右対称となるように配置する。なお、詳細は、図１８に示す表示位置調整処理（並接接続）において説明する。
【００３６】
さらに、フロー位置計算部２０３は、入力されたプロセスの属するノードグループにおける表示位置調整処理を終えると、ノードグループ整形処理を行う。ノードグループ整形処理において、フロー位置計算部２０３は、基準となる分岐ノードを支点として、各ノードグループが重ならないように、左右対称に設定する。なお、詳細は、図２６に示すノードグループ整形処理において説明する。
【００３７】
フロー表示部２０４は、パーツ情報管理部２０２を介して、パーツ情報テーブル３００に記憶されたフローチャートの情報を取得し、入出力部４０を介して、表示装置３にそのフローチャートの情報を出力し、表示装置３に表示させる。
【００３８】
（フローチャート描画処理）
次に、本実施形態に係るフローチャート描画装置１が行うフローチャート描画処理について説明する。
【００３９】
≪順接接続≫
図４は、本実施形態に係るフローチャート描画装置１が行うフローチャート描画処理（順接接続）の流れを示すフローチャートである。なお、本実施例では、図５に示すように、図２で示したフローチャートのコネクタ（矢印）００４に、プロセスＣ００６がユーザにより配置されることにより、フローチャート描画装置１が、順接接続の処理を行うものとして説明する。
【００４０】
まず、フローチャート描画装置１のパーツ情報管理部２０２は、パーツ情報テーブル３００におけるノードグループ３０９の編成を行う（ステップＳ１０１）。具体的には、パーツ情報管理部２０２は、パーツ情報テーブル３００内のノードグループ３０９を、分岐・合流ノードを境にして、グループ化を行う。本実施例では、図３のパーツ情報テーブル３００に示すように、すべてのパーツが同じノードグループ（Ｎ１）に属する。
【００４１】
次に、フローチャート描画装置１のフロー表示部２０４は、パーツ情報テーブル３００の情報を取得し、フローチャートを表示装置３に出力し、描画させる（ステップＳ１０２）。ここで表示されるフローチャートは、ユーザによる編集前のフローチャートであり、図２に示すように表示される。
【００４２】
続いて、ユーザによる入力装置２の操作により、入出力部４０を介して、データ入力部２０１が、新たに追加されるパーツの入力を受け付ける（ステップＳ１０３）。具体的には、データ入力部２０１が、プロセスＣ００６の入力を受け付ける（図５参照）。
【００４３】
そして、パーツ情報管理部２０２は、入力されたパーツの情報、ここでは、プロセスＣ００６の情報を、一時情報３１０としてパーツ情報テーブル３００に記憶する（ステップＳ１０４）。具体的には、図６に示すように、プロセスＣ００６がパーツ情報テーブル３００に追加される。ここで、パーツ情報管理部２０２は、プロセスＣ００６がユーザにより追加された表示位置の情報から、ＩＤ３０１（「００６」）、Ｔｙｐｅ３０２（「Process」）、Ｎａｍｅ３０３（「Ｃ」）を格納し、位置座標３０６、寸法３０７、重心位置３０８の情報を算出し格納する。また、パーツ情報管理部２０２は、確定していない接続元パーツ３０４および接続先パーツ３０５については、接続先、接続元が未確定であることを示す「ＮＥＷ」という値を設定しておく。そして、パーツ情報管理部２０２は、入力された情報が、すべてのパーツに対する表示位置の調整を行う前の情報（一時情報）であることを示すものとして、一時情報３１０のＡｄｄ３１１に「１」を設定する。
【００４４】
次に、パーツ情報管理部２０２は、ステップＳ１０３でユーザにより入力されたパーツが、プロセスであり、既存パーツであるコネクタと重複するか否かを判定する（ステップＳ１０５）。ここで、重複とは、新たに追加されたプロセスと、既存のパーツとが、表示装置３のディスプレイ上で重なって表示されていることを意味する。図５に示すように、ユーザにより入力されたプロセスＣ００６が、既存のパーツであるコネクタ００４と重なって表示されている。このように、ユーザ操作において新たなプロセスを追加する際に、既存のコネクタに重ねてプロセスと追加することは、そのコネクタに繋がる上位と下位のプロセスの間に、追加したプロセスを挿入することを意味する。
【００４５】
ステップＳ１０５において、入力されたパーツがプロセスであり、既存のコネクタと重複する場合には（ステップＳ１０５→Ｙｅｓ）、次のステップＳ１０６に進む。一方、入力されたパーツがプロセスでない場合や、プロセスであっても既存のコネクタと重複しない場合には（ステップＳ１０５→Ｎｏ）、ステップＳ１１０へ進む。
【００４６】
次に、ステップＳ１０６において、パーツ情報管理部２０２は、入力されたプロセスに重複するコネクタの接続元および接続先のプロセスを抽出し、接続関係を決定する。ここでは、入力されたプロセスＣ００６と重複するコネクタ００４の接続元、接続先の各プロセスを、パーツ情報テーブル３００のＦｒｏｍ３４１およびＴｏ３５１の項目から抽出し、接続元としてプロセスＡ００３を、接続先としてプロセスＢ００５を得る。
【００４７】
そして、パーツ情報管理部２０２は、入力されたプロセスの上位にあるプロセス（抽出した接続元のプロセス）、下位にあるプロセス（抽出した接続先のプロセス）それぞれと、入力されたプロセスとを接続するコネクタを設定し、一時情報３１０としてパーツ情報テーブル３００に記憶する（ステップＳ１０７）。
【００４８】
ステップＳ１０７の処理を、図７に示すパーツ情報テーブル３００を用いて具体的に説明する。パーツ情報管理部２０２は、パーツ情報テーブル３００において、ユーザにより入力されたプロセスＣ００６と重複するパーツであるコネクタ００４の一時情報３１０のＴａｒｇｅｔ３１２に「１」を設定する。次に、パーツ情報管理部２０２は、新たなコネクタとして、プロセスＣ００６とプロセスＡ００３との間のコネクタ００７、プロセスＣ００６とプロセスＢ００５との間のコネクタ００８を追加する。そして、コネクタ００７およびコネクタ００８の一時情報３１０のＡｄｄ３１１に「１」を設定する。このステップＳ１０７の処理を終えた状態のフローチャートを説明のため示すと、図８のようになる。
【００４９】
図４に戻り、次に、フローチャート描画装置１のフロー位置計算部２０３は、新規に追加したプロセスやコネクタを含め、ノードグループ（Ｎ１）内のすべてのパーツの表示位置を調整する（ステップＳ１０８）。このステップＳ１０８により、フローチャートの位置が調整された結果を図９に示す。なお、このフローチャートの表示位置調整処理（順接接続）の詳細は、図１０において説明する。
【００５０】
続いて、フロー位置計算部２０３は、ノードグループ整形処理を行う（ステップＳ１０９）。このノードグループ整形処理は、パーツ情報テーブル３００のノードグループ３０９の項目に複数のノードグループが存在する場合に実行されるものである。ここでは、ノードグループが「Ｎ１」の１つしか存在しないため、ノードグループ整形処理は行わないが、ノードグループ整形処理については後記において説明する（図２６参照）。
【００５１】
そして、フローチャート描画装置１は、ステップＳ１０８およびステップＳ１０９により、フローチャートの表示位置を決定すると、パーツ情報管理部２０２が、パーツ情報テーブル３００の一時情報３１０を確定する（ステップＳ１１０）。なお、パーツ情報管理部２０２による一時情報３１０の確定は、具体的には、パーツ情報テーブル３００の一時情報３１０のＡｄｄ３１１およびＴａｒｇｅｔ３１２に設定した値の削除処理を行うことである。そして、フロー表示部２０４は、確定したフローチャートを、入出力部４０を介して、表示装置３のディスプレイに描画する（ステップＳ１１１）。
【００５２】
＜表示位置調整処理（順接接続）＞
次に、図４のステップＳ１０８における表示位置調整処理（順接接続）について、図１０を用いて説明する。図１０は、本実施形態に係るフローチャート描画装置１の表示位置調整処理（順接接続）の流れを示すフローチャートである。
【００５３】
まず、フローチャート描画装置１のフロー位置計算部２０３は、入力されたプロセスに接続する上位のプロセスと下位のプロセスとを特定する（ステップＳ２０１）。具体的には、まず、フロー位置計算部２０３は、入力されたプロセスＣ００６と接続関係にある上位のプロセスをパーツ情報テーブル３００から探索する。ここで、フロー位置計算部２０３は、図７のパーツ情報テーブル３００において、プロセスＣ００６の接続元パーツ３０４のＦｒｏｍ３４１の項目から、上位のパーツがＩＤ番号「００７」のコネクタ００７であると抽出し、さらに、コネクタ００７の接続元パーツ３０４のＦｒｏｍ３４１の項目から、コネクタ００７の上位にあるパーツが、プロセスＡ００３であることを特定する。同様に、フロー位置計算部２０３は、プロセスＣ００６と接続関係にある下位のプロセスについて、プロセスＣ００６の接続先パーツ３０５のＴｏ３５１の項目から、下位のパーツがＩＤ番号「００８」のコネクタ００８であると抽出する。そして、コネクタ００８の接続先パーツ３０５のＴｏ３５１の項目から、コネクタ００８の下位にあるパーツが、プロセスＢ００５であることを特定する。
【００５４】
次に、フロー位置計算部２０３は、ステップＳ２０１で特定した上位のプロセスおよび下位のプロセスの重心位置３０８のＸ座標であるｃｘ値と、入力されたプロセスの重心位置３０８のＸ座標であるｃｘ値とを比較し、入力されたプロセスの重心位置３０８のｃｘ値のみが異なるか否かを判定する（ステップＳ２０２）。ここでは、上位のプロセスであるプロセスＡ００３のｃｘ値および下位のプロセスであるプロセスＢ００５のｃｘ値と、入力されたプロセスであるプロセスＣ００６のｃｘ値とを比較する。
【００５５】
そして、フロー位置計算部２０３は、上位のプロセスおよび下位のプロセスのｃｘ値が同じ値であり、入力されたプロセスのｃｘ値のみが異なる場合には（ステップＳ２０２→Ｙｅｓ）、次のステップＳ２０３に進む。
【００５６】
ステップＳ２０３において、フロー位置計算部２０３は、入力されたプロセスの重心位置３０８のｃｘ値を、上位のプロセスのｃｘ値と同じ値に変更する（ステップＳ２０３）。
本実施例においては、上位のプロセスであるプロセスＡ００３のｃｘ値と下位のプロセスであるプロセスＢ００５のｃｘ値が同じであり、入力されたプロセスであるプロセスＣ００６のｃｘ値のみが異なるため、入力されたプロセスの重心位置３０８のｃｘ値を、プロセスＡ００３のｃｘ値と同じ値に設定する。このステップＳ２０３の処理を終えた時点のパーツ情報テーブル３００を図１１に示し、この状態のフローチャートを図１２に示す。図１２に示すように、重心位置３０８のｃｘ値が各プロセスにおいて同じ値となっている。
【００５７】
一方、図１０に戻り、ステップＳ２０２において、上位のプロセスおよび下位のプロセスのｃｘ値と、入力されたプロセスのｃｘ値とを比較し、入力されたプロセスの重心位置３０８のｃｘ値のみが異なる場合以外のとき（ステップＳ２０２→Ｎｏ）、つまり、上位のプロセス、下位のプロセス、入力されたプロセス、それぞれのｃｘ値がすべて異なる場合や、上位のプロセスと入力されたプロセスのｃｘ値が同じ値であり、下位のプロセスのみｃｘ値が異なる場合には、ステップＳ２０４に進む。
【００５８】
ステップＳ２０４において、フロー位置計算部２０３は、入力されたプロセスの重心位置３０８のｃｘ値や、下位のプロセスの重心位置３０８のｃｘ値を、上位のプロセスの重心位置３０８のｃｘ値と同じ値に変更する。つまり、上位のプロセスであるプロセスＡ００３のｃｘ値に、入力されたプロセスＣ００６および下位のプロセスＢ００５のｃｘ値を揃えるようにする。
【００５９】
次に、ステップＳ２０３またはステップＳ２０４の処理を終えると、フロー位置計算部２０３は、各プロセスが等間隔に配置されるように、パーツ毎のｃｘ値、ｃｙ値、およびｘ値、ｙ値を変更する（ステップＳ２０５）。
【００６０】
具体的には、フロー位置計算部２０３は、まず、調整対象となっていないコネクタの高さ（寸法３０７のｈ値）を特定する。本実施例の場合、上位のプロセスＡ００３のさらに上位に接続するコネクタ００２の高さ（ｈ値）「40」を記憶する。フロー位置計算部２０３は、このｈ値「40」を基準にしてＹ座標を調整する。そして、フロー位置計算部２０３は、新たに挿入したコネクタの高さ（ｈ値）が「40」になるように、そしてそのコネクタの寸法３０７の幅（ｗ値）が「0」になるようにして、パーツ全体の表示位置を調整する。また、フロー位置計算部２０３は、パーツ情報テーブル３００の一時情報３１０のＴａｒｇｅｔ３１２の項目に「１」を設定したコネクタを削除する。具体的には、フロー位置計算部２０３は、新たに追加されたプロセスＣ００６と接続するコネクタ００７およびコネクタ００８を設定することで不要となったコネクタ００４を削除する。
【００６１】
図１３は、図１０のステップＳ２０５を実行して、各パーツが等間隔となるように調整されたパーツ情報テーブル３００を示している。図１３に示すパーツ情報テーブル３００では、コネクタ００４が削除されている。この図１３に示すパーツ情報テーブル３００を用いて、フローチャートを示すと、図９に示すように、プロセスＡ００３とプロセスＢ００５との間に、プロセスＣ００６が挿入され、各プロセスは均等な間隔で配置される。
【００６２】
なお、表示位置のレイアウトに関する調整方針は、ユーザの好みやフローチャートを使用する業務によって異なる。したがって、本実施形態で例示したフローチャートの表示位置の調整を、別の調整ロジックに基づき、記憶部３０に記憶させ、ユーザが変更できるようにしてもよい。
【００６３】
このようにすることで、本実施形態に係るフローチャート描画装置１によれば、ユーザにより入力されたプロセスの接続関係を、表示画面上の図形の重なりで特定することができ、フローチャートの編集操作を簡便化することができる。また、ユーザは、既存のパーツとのバランスを考えながら、追加したパーツのレイアウトを微調整する必要がなくなる。
【００６４】
≪並接接続≫
次に、本実施形態に係るフローチャート描画装置１が、ユーザにより入力された新たなプロセスが既存のプロセスに重なるように配置された場合のフローチャート描画処理（並接接続）について説明する。
【００６５】
このフローチャート描画処理（並接接続）では、図１４（ａ）に示すように、既存のプロセス（例えば、プロセスＡ００３）に、新たに入力されたプロセス（例えば、プロセスＣ００６）を重ねた場合に、フローチャート描画装置１において、既存のプロセスと入力されたプロセスとを並列に接続する関係を有するものと規定しておく。そして、フローチャート描画装置１は、図２１の処理結果に示すように、分岐ノードを追加し、入力されたプロセスに重ねられた既存のプロセスと、その入力されたプロセスとがある条件によって分岐ノードにより分岐され、一方の条件下で既存のプロセスを、他方の条件下で入力されたプロセスを実行するという、フローを描画する。
【００６６】
なお、以下においては、図１４（ａ）に示すように、既存のプロセス（プロセスＡ００３）に新たなプロセス（プロセスＣ００６）を重ねた場合として説明するが、図１４（ｂ）に示すように、フローチャート描画装置１は、既存のプロセス（プロセスＡ００３）と接続する上位のコネクタ（コネクタ００２）に新たな分岐ノードを重ねる場合でも同様に並接接続の処理を行うようにすることができる。
フローチャート描画装置１は、プロセスＡ００３と接続する上位のコネクタ００２に分岐ノードが重ねられた場合、プロセスＡ００３以降のパーツを分岐ノードの左側に配置し、分岐ノードの右側には新たなプロセスを加える。そして、新たに入力された分岐ノードを後記する図１７に示すように、プロセスＡ００３と同じ重心位置３０８に配置し直すことで、以下に説明する並接接続の処理を行い、図２１に示すような処理結果のフローチャートを表示させることができる。
なお、順接接続では、新たに入力されたパーツがプロセスであり、入力されたプロセスが既存のコネクタと重複することで、フローチャート描画装置１が、順接接続の処理を行うと判定する。一方、入力されたパーツが分岐ノードであり既存のコネクタと重複する場合には、フローチャート描画装置１は、並接接続の処理を行うと判定し、ユーザが図１４（ａ）に示す操作をした場合と同様の結果が得られる。
【００６７】
次に、本実施形態に係るフローチャート描画装置１の並接接続の処理の流れを、図１５を用いて説明する。なお、図４に示したフローチャート描画装置１の順接接続の処理の流れと同様の処理については、同一の符号を付し、説明を省略する。また、ここでは、図１４（ａ）に示すように、図２で示したフローチャートに、プロセスＣ００６を追加するものとして説明する。
【００６８】
図１５に示すように、まず、図４のステップＳ１０１〜Ｓ１０４と同様に、ノードグループ３０９の編成、フローチャートの描画を行い、表示装置３に既存のフローチャートを表示させる。そして、ユーザにより入力されたパーツの情報を一時情報３１０としてパーツ情報テーブル３００に記憶する。なお、ステップＳ１０３において、図４の順接接続では、ユーザが既存のコネクタ（矢印）に重なるように追加のプロセスを配置したが、並接接続の処理を行わせるため、ユーザは、既存のプロセスに重なるように追加するプロセスを配置する。
【００６９】
次に、フローチャート描画装置１のパーツ情報管理部２０２は、入力されたパーツと既存パーツとが重複する（重なる）か否かを判定する（ステップＳ３０１）。そして、入力されたパーツと既存パーツとが重ならない場合には（ステップＳ３０１→Ｎｏ）、次のステップＳ１１０に進む。一方、入力されたパーツと既存パーツとが重なる場合には（ステップＳ３０１→Ｙｅｓ）、次のステップＳ３０２へ進む。本実施例では、図１４（ａ）に示すように、入力されたプロセスＣ００６が、既存のプロセスＡ００３に重なるため、ステップＳ３０２へ進むものとして説明する。
【００７０】
ステップＳ３０２において、パーツ情報管理部２０２は、ステップＳ１０３でユーザにより入力されたパーツがプロセスであり、入力されたパーツと重複する既存パーツが、コネクタまたはプロセスのどちらであるかを判定する。ここで、入力されたプロセスと重複する既存パーツがコネクタである場合には（ステップＳ３０２→コネクタ）、図４のステップＳ１０６〜Ｓ１０８と同様の処理を行う。
【００７１】
一方、入力されたプロセスと重複する既存パーツがプロセスである場合には（ステップＳ３０２→プロセス）、ステップＳ３０３〜Ｓ３０５までの並接接続の処理に進む。
【００７２】
次に、パーツ情報管理部２０２は、重複するプロセスと新たに入力されたプロセスとを並列接続するための分岐ノードをパーツ情報テーブル３００に設定する（ステップＳ３０３）。本実施例では、重複するプロセスであるプロセスＡ００３と、入力されたプロセスＣ００６とを並接接続するための分岐ノード００７を、パーツ情報テーブル３００に追加する。
【００７３】
続いて、パーツ情報管理部２０２は、設定（挿入）した分岐ノードと接続する複数のコネクタを一時情報３１０としてパーツ情報テーブル３００に記憶する（ステップＳ３０４）。具体的には、パーツ情報管理部２０２は、新たに追加した分岐ノード００７と重複するプロセス（プロセスＡ００３）との間にコネクタ００８を加え、分岐ノード００７と新たに入力されたプロセス（プロセスＣ００６）との間にコネクタ００９を加えて、接続関係を決定する。また、パーツ情報管理部２０２は、重複するプロセス（プロセスＡ００３）と開始ノード００１との間に接続されていたコネクタ００２を、分岐ノード００７と開始ノード００１との間を接続するコネクタとして変更する。
【００７４】
このステップＳ３０４の処理を終えた時点でのパーツ情報テーブル３００を図１６に示す。図１６では、新たに入力されたプロセスＣ００６、分岐ノード００７、コネクタ００８、およびコネクタ００９が新たに設定される。また、コネクタ００２の接続先であるＴｏ３５１のＩＤが「００７」（分岐ノード）に変更されている。そして、重複するプロセスであるプロセスＡ００３の一時情報３１０のＴａｒｇｅｔ３１２に「１」が設定される。
【００７５】
ここで、フロー位置計算部２０３は、新たに設定した分岐ノード００７の挿入位置を、重複するプロセスＡ００３と同じ重心位置３０８になるように配置する。また、新たに設定したコネクタ００８およびコネクタ００９は、描画する位置座標３０６、寸法３０７、重心位置が特定されていないので、「未定」として示す。その他の入力されたプロセスＣ００６、分岐ノード００７等のパーツの位置座標３０６、寸法３０７、重心位置３０８は、フロー位置計算部２０３が、現時点での配置位置に基づいて算出し、パーツ情報テーブル３００に格納する。この図１６に示すパーツ情報テーブル３００を説明のため示すと図１７のようになる。図１７では、新たに設定した分岐ノード００７が、重複するプロセスＡ００３と同じ重心位置３０８に配置されている。なお、図１６のパーツ情報テーブル３００では、コネクタ００８、コネクタ００９の表示位置は「未定」だが、コネクタ００８およびコネクタ００９の存在を示すために、図１７では、分岐ノード００７を接続元とし、接続先をプロセスＡ００３、プロセスＣ００６それぞれの「Ｕｐｐｅｒ」ポートとして仮に表示している。
【００７６】
図１５に戻り、フロー位置計算部２０３は、新たに入力されたプロセスや、分岐ノード、コネクタを含め、ノードグループ３０９内のすべてのパーツの表示位置を調整する（ステップＳ３０５）。なお、このフローチャートの表示位置調整処理（並接接続）の詳細は、後記する図１８において説明する。
【００７７】
続いて、図４のステップＳ１０９〜Ｓ１１１と同様に、フローチャート描画装置１は、ノードグループ３０９の整形処理を行い、確定したフローチャートを、表示装置３のディスプレイに描画する。
【００７８】
＜表示位置調整処理（並接接続）＞
次に、図１５のステップＳ３０５における表示位置調整処理（並接接続）について図１８を用いて説明する。図１８は、本実施形態に係るフローチャート描画装置１の表示位置調整処理（並接接続）の流れを示すフローチャートである。この表示位置調整処理（並接接続）において、フローチャート描画装置１は、分岐ノードを挿入し、その挿入した分岐ノードを中心として、その分岐ノードより下位において接続するパーツを左右対称となるように配置する。以下、具体的に説明する。
【００７９】
まず、パーツ情報管理部２０２は、新たに入力されたプロセス、分岐ノード、新たに設定したコネクタを含めたノードグループ３０９の編成を行う（ステップＳ４０１）。本実施例においては、パーツ情報管理部２０２は、パーツ情報テーブル３００内のノードグループ３０９を、分岐ノード００７を境にして、グループ化を行う。そして、図１９に示すように、パーツ情報管理部２０２は、開始ノード００１およびコネクタ００２について、ノードグループ３０９を「Ｎ１」と設定する。プロセスＡ００３、コネクタ００４、プロセスＢ００５およびコネクタ００８について、ノードグループ３０９を「Ｎ２」と設定する。また、プロセスＣ００６およびコネクタ００９について、ノードグループ３０９を「Ｎ３」と設定する。
【００８０】
次に、フロー位置計算部２０３は、挿入された分岐ノードと接続するプロセスを特定する（ステップＳ４０２）。本実施例では、分岐ノード００７にコネクタ００８を介して接続するプロセスＡ００３と、コネクタ００９を介して接続するプロセスＣ００６とを特定する。
【００８１】
次に、ステップＳ４０２で特定した各プロセスが属するノードグループ３０９に基づき、同じノードグループ３０９に属するパーツを特定し、調整対象パーツとして抽出する（ステップＳ４０３）。本実施例では、プロセスＡ００３の属するノードグループ３０９は「Ｎ２」であり、同じノードグループ３０９に属する、コネクタ００４、プロセスＢ００５およびコネクタ００８が調整対象パーツとして特定される。また、プロセスＣ００６が属するノードグループ３０９は「Ｎ３」であり、同じノードグループ３０９に属するコネクタ００９が調整対象パーツとして特定される。
【００８２】
次に、フロー位置計算部２０３は、フローチャートの水平方向の配置を決定するため、分岐ノードを中心に２つのプロセスを左右均等に配置するように、２つプロセスの重心位置（ｃｘ値）を変更する（ステップＳ４０４）。本実施例では、フロー位置計算部２０３は、分岐ノードの幅（ｗ値）とプロセスの幅（ｗ値）とに基づき、分岐ノード００７のひし形の左端、右端の位置に合わせてそれぞれプロセスＡ００３、プロセスＣ００６を配置するように、ｃｘ値を変更する。
【００８３】
続いて、フロー位置計算部２０３は、調整対象パーツのｃｘ値を変更する（ステップＳ４０５）。具体的には、フロー位置計算部２０３は、ステップＳ４０３で特定した調整対象パーツのうち、ステップＳ４０２で特定したプロセスの下位に位置するパーツの重心位置（ｃｘ値）を、ステップＳ４０４で変更した、その上位に接続するプロセスのｃｘ値と同じ値に変更する。本実施例では、ノードグループ３０９が「Ｎ２」の調整対象パーツのうち、コネクタ００４およびプロセスＢ００５のｃｘ値を、上位のプロセス（プロセスＡ００３）のｃｘ値と同じ値に変更する。
【００８４】
ステップＳ４０５までの処理を実行した結果を説明のため示すと、図２０のフローチャートのようになる。分岐ノード００７を中心に、プロセスＡ００３、プロセスＣ００６の重心位置（ｃｘ値）は、左右均等に配置するように変更されている。また、プロセスＡ００３とコネクタ００４とプロセスＢ００５とが、同じ重心位置（ｃｘ値）に配置されている。
【００８５】
図１８に戻り、ステップＳ４０６において、フロー位置計算部２０３は、分岐ノードとステップＳ４０２で特定した２つのプロセスとの間の縦方向の高さを決定し、２つのプロセスのｃｙ値を変更する。
具体的には、フロー位置計算部２０３は、まず、開始ノード００１とプロセスＡ００３とを接続するコネクタ００２の高さ（ｈ値）「40」を記憶する。そして、フロー位置計算部２０３は、プロセスＡ００３およびプロセスＣ００６の重心位置（ｃｙ値）を、分岐ノード００７の重心位置（ｃｙ値）から、記憶したコネクタの高さ（ｈ値）「40」と自身の寸法３０７の高さ（ｈ値）の２分の１の値（ここでは「10」）とを加えた分（つまり「50」）下方に位置するように決定する。
【００８６】
次に、ステップＳ４０７において、フロー位置計算部２０３は、調整対象パーツのｃｙ値を変更する。
具体的には、フロー位置計算部２０３は、ステップＳ４０３で特定した調整対象パーツのうち、ステップＳ４０２で特定したプロセスの下位に位置するパーツの重心位置（ｃｙ値）を、それぞれ「50」下方に位置するように決定する。
そして、フロー位置計算部２０３は、ステップＳ４０２で特定した２つのプロセスと、分岐ノード００７とを接続するコネクタの位置を特定する（ステップＳ４０８）。
【００８７】
この表示位置調整処理（並接接続）を実行した結果のフローチャートを図２１に、そのパーツ情報テーブル３００を図２２に示す。
なお、図２２のパーツ情報テーブル３００において、追加された２つのコネクタである、コネクタ００８とコネクタ００９の重心位置３０８を、各コネクタの線を直角に曲げた角に位置するように設定している。これは、ユーザにより既存のプロセスの下方に新しいパーツが追加されたとき、フロー位置計算部２０３が、角の位置から計算することで、左右均等、上下均等の位置計算を容易にするためである。ただし、これは一例にすぎず、本来の重心位置の計算値を設定してもよく、パーツの配置を整理し、左右均等、上下均等の位置計算が可能であればよい。
【００８８】
このようにすることで、本実施形態に係るフローチャート描画装置１によれば、ユーザが既存のプロセスに、新たなプロセスを重ねることにより、並接接続の処理を実行でき、各パーツのレイアウトについて微調整等の追加の操作を行うことなく、フローチャートの表示位置を決定し描画させることができる。
【００８９】
≪ノードグループ整形処理≫
次に、図４および図１５のステップＳ１０９で実行されるノードグループ整形処理について、分岐ノードを含む既存のフローチャートに、並接接続の処理を行う実施例を用いて説明する。本実施例では、図２３に示すように、分岐ノード（分岐ノードＥ００３）を含む既存のフローチャートのプロセスＡ００７に、新たにプロセスＣ０１２を重ねる並接接続の操作がユーザにより行われるものとして説明する。
【００９０】
まず、図１５に示した本実施形態に係るフローチャート描画装置１の処理手順のステップＳ１０１において、ノードグループの編成を行う。図２３の例においては、分岐ノードＥ００３を境にしたパーツの集合をノードグループ３０９として破線で示している。このノードグループ３０９の編成の結果を、図２４のパーツ情報テーブル３００に示す。このパーツ情報テーブル３００は、分岐ノードＥ００３を境に、「Ｎ１」「Ｎ２」「Ｎ３」の３つのノードグループ３０９に分けられる。
【００９１】
そして、図１５のステップＳ１０３において、ユーザによる入力装置２の操作により、データ入力部２０１が、新たに追加されるパーツ（プロセスＣ０１２）の入力を受け付ける。続いて、パーツ情報管理部２０２が、受け付けたプロセスＣ０１２の情報を、パーツ情報テーブル３００に記憶する。そして、図１５のステップＳ３０１〜Ｓ３０５の処理を行い、表示位置調整処理（並接接続）を実行する。なお、この並接接続の表示位置調整（ステップＳ３０５）は、入力されたパーツ（プロセスＣ０１２）と重なる既存パーツ（プロセスＡ００７）が属するノードグループ（Ｎ２）内で行う。
【００９２】
次に、図１５のステップＳ１０９におけるノードグループ整形処理を具体的に説明する。図２５は、図１５のステップＳ３０５までの表示位置調整処理（並接接続）を終えた時点でのフローチャートを仮に表示した図である。図２５に示すように、プロセスＣ０１２を含むノードグループ「Ｎ２」を示す矩形と、ノードグループ「Ｎ３」を示す矩形とが、重なったものとなっている。この状態では、ノードグループ「Ｎ２」のコネクタ０１５およびプロセスＣ０１２と、ノードグループ「Ｎ３」のプロセスＢ０１１との距離が近い。よって、今後、プロセスＣ０１２やプロセスＢ０１１にノードを追加していく場合、それぞれのノードグループ内のパーツが、隣接するノードグループ内のパーツと重なってしまうことが予想させる。そのため、ノードグループ内の表示位置調整処理の後に、ノードグループ整形処理を行う。
【００９３】
図２６は、本実施形態に係るノードグループ整形処理の流れを示すフローチャートである。
【００９４】
まず、フローチャート描画装置１のフロー位置計算部２０３は、ノードグループ毎に、そのノードグループに属するパーツをすべて含む最小の矩形を算出する（ステップＳ５０１）。この処理結果は、図２５の破線で示す矩形のようになる。
【００９５】
次に、フロー位置計算部２０３は、算出したそれぞれの矩形が、他のノードグループの矩形と重複しているか否かを判定する（ステップＳ５０２）。そして、フロー位置計算部２０３は、他のノードグループの矩形と重複していない場合には（ステップＳ５０２→Ｎｏ）、次にステップＳ５０４に進む。
【００９６】
一方、算出した矩形と重複している場合には（ステップＳ５０２→Ｙｅｓ）、フロー位置計算部２０３は、ノードグループを区切っている分岐ノードを基準にして、矩形の移動距離を決定する（ステップＳ５０３）。図２５に示したように、分岐ノードをはさんで２つのノードグループが重なる場合は、一方のノードグループが、基準となる分岐ノードよりも他方のノードグループ側に配置しないようにすることで、ノードグループの矩形の重複を避ける。例えば、本実施例において、フロー位置計算部２０３は、左側のノードグループ「Ｎ２」を、分岐ノードＥ００３のひし形の左端座標よりも左側に配置するように移動する。また、図２５においては、分岐ノード００３のひし形の左端に、ノードグループＮ２の矩形の右端を合わせるため、左側のノードグループ「Ｎ２」の距離を「50」左方に移動する。右側のノードグループ「Ｎ３」には、重複の可能性はないが、分岐ノード００３を支点として左右対称に整形するため、ノードグループ「Ｎ２」も右側に移動距離を「50」と設定する。
【００９７】
次に、フロー位置計算部２０３は、描画領域内に収まるように各ノードグループを含むフローチャートを移動する（ステップＳ５０４）。例えば、図２５に示すように、ノードグループ「Ｎ２」の左端のＸ座標が「40」であり、ステップＳ５０３において設定した移動距離である「50」左方に移動できない場合は、ノードグループのうち、最も左方のノードグループのパーツの位置を基準として他のパーツを移動する。
【００９８】
そして、このノードグループ整形処理を終えた結果を図２７に示す。このようにすることで、ユーザが既存のプロセスに、新たなプロセスを重ねるだけで、並接接続の処理と決定でき、追加の操作を行うことなく、ノードグループが重ならない位置座標にフローチャートを移動させ、描画させることができる。
【符号の説明】
【００９９】
１      フローチャート描画装置
２      入力装置
３      表示装置
１０    ＣＰＵ
２０    メモリ部
３０    記憶部
４０    入出力部
４１    入力インタフェース
４２    出力インタフェース
２００  フローチャート描画部
２０１  データ入力部
２０２  パーツ情報管理部
２０３  フロー位置計算部
２０４  フロー表示部
３００  パーツ情報テーブル（パーツ情報）
【図１】
2012096001.tif 000003
【図２】
2012096001.tif 000004
【図３】
2012096001.tif 000005
【図４】
2012096001.tif 000006
【図５】
2012096001.tif 000007
【図６】
2012096001.tif 000008
【図７】
2012096001.tif 000009
【図８】
2012096001.tif 000010
【図９】
2012096001.tif 000011
【図１０】
2012096001.tif 000012
【図１１】
2012096001.tif 000013
【図１２】
2012096001.tif 000014
【図１３】
2012096001.tif 000015
【図１４】
2012096001.tif 000016
【図１５】
2012096001.tif 000017
【図１６】
2012096001.tif 000018
【図１７】
2012096001.tif 000019
【図１８】
2012096001.tif 000020
【図１９】
2012096001.tif 000021
【図２０】
2012096001.tif 000022
【図２１】
2012096001.tif 000023
【図２２】
2012096001.tif 000024
【図２３】
2012096001.tif 000025
【図２４】
2012096001.tif 000026
【図２５】
2012096001.tif 000027
【図２６】
2012096001.tif 000028
【図２７】
2012096001.tif 000029
【手続補正書】
【提出日】平成25年12月12日(2013.12.12)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
フローチャートを構成する、複数のノードと前記複数のノード間を接続し前記ノードの処理手順を示すコネクタとの表示位置を調整し、表示装置に表示させるフローチャート描画装置であって、
前記ノードおよび前記コネクタの前記表示位置を示す座標情報、並びに、前記ノードと前記コネクタとの接続情報を含むパーツ情報が記憶される記憶部と、
入力装置から前記フローチャートに追加されるノードに関する情報の入力を受け付けるデータ入力部と、
前記入力されたノードの表示位置と、前記フローチャートを構成する前記コネクタの表示位置か、前記フローチャートを構成する前記ノードの表示位置が重複するか否かを前記パーツ情報に基づき判定し、
前記入力されたノードが前記コネクタと重複すると判定した場合に、前記重複したコネクタと接続する上位のノードと下位のノードとの間に、前記入力されたノードを挿入するように、前記ノード間の接続関係を決定し、前記入力されたノードと前記上位のノードとを接続するコネクタ、および前記入力されたノードと前記下位のノードとを接続するコネクタを、前記フローチャートの前記パーツ情報に新たに設定し、
前記入力されたノードが前記ノードと重複すると判定した場合に、処理のフローを分岐させる分岐ノードを、前記フローチャートの前記パーツ情報に新たに設定し、前記新たに設定した分岐ノードの分岐先として、前記入力されたノードおよび前記重複したノードを設定するパーツ情報管理部と、
前記入力されたノードが前記コネクタと重複すると判定した場合に、前記上位のノードの表示位置を基準として、前記入力されたノード、前記下位のノード、前記入力されたノードと前記上位のノードとを接続するコネクタ、および、前記入力されたノードと前記下位のノードとを接続するコネクタの表示位置を決定し、
前記入力されたノードが前記ノードと重複すると判定した場合に、前記設定した分岐ノードを基準として、前記入力されたノードおよび前記重複したノードを均等に配置するように表示位置を決定するフロー位置計算部と、
前記決定した表示位置に基づき、前記フローチャートを前記表示装置に表示させるフロー表示部と、を備えることを特徴とするフローチャート描画装置。
【請求項２】
前記フロー位置計算部は、前記分岐ノードの分岐先となる、当該分岐ノードの下位に位置する前記ノードおよび前記コネクタの集合それぞれをノードグループとして設定し、
前記ノードグループを構成する各ノードおよび各コネクタの表示位置の前記座標情報を前記パーツ情報から取得し、前記ノードグループを構成する各ノードおよび各コネクタを含む最小の矩形を、前記ノードグループそれぞれについて計算し、
前記計算したノードグループの矩形が他のノードグループの矩形と重複する場合に、前記分岐ノードの表示位置を基準として、前記重複した前記ノードグループの表示位置を変更することを特徴とする請求の範囲第１項に記載のフローチャート描画装置。
【請求項３】
フローチャートを構成する、複数のノードと前記複数のノード間を接続し前記ノードの処理手順を示すコネクタとの表示位置を調整し、表示装置に表示させるフローチャート描画装置のフローチャート描画方法であって、
前記フローチャート描画装置は、前記ノードおよび前記コネクタの前記表示位置を示す座標情報、並びに、前記ノードと前記コネクタとの接続情報を含むパーツ情報が記憶される記憶部を備えており、入力装置から前記フローチャートに追加されるノードに関する情報の入力を受け付けるステップと、
前記入力されたノードの表示位置と、前記フローチャートを構成する前記コネクタの表示位置か、前記フローチャートを構成する前記ノードの表示位置が重複するか否かを前記パーツ情報に基づき判定し、
前記入力されたノードが前記コネクタと重複すると判定した場合に、前記重複したコネクタと接続する上位のノードと下位のノードとの間に、前記入力されたノードを挿入するように、前記ノード間の接続関係を決定するステップと、前記入力されたノードと前記上位のノードとを接続するコネクタ、および前記入力されたノードと前記下位のノードとを接続するコネクタを、前記フローチャートの前記パーツ情報に新たに設定するステップと、
前記入力されたノードが前記ノードと重複すると判定した場合に、処理のフローを分岐させる分岐ノードを、前記フローチャートの前記パーツ情報に新たに設定し、前記新たに設定した分岐ノードの分岐先として、前記入力されたノードおよび前記重複したノードを設定するステップと、
前記入力されたノードが前記コネクタと重複すると判定した場合に、前記上位のノードの表示位置を基準として、前記入力されたノード、前記下位のノード、前記入力されたノードと前記上位のノードとを接続するコネクタ、および、前記入力されたノードと前記下位のノードとを接続するコネクタの表示位置を決定し、
前記入力されたノードが前記ノードと重複すると判定した場合に、前記設定した分岐ノードを基準として、前記入力されたノードおよび前記重複したノードを均等に配置するように表示位置を決定するステップと、
前記決定した表示位置に基づき、前記フローチャートを前記表示装置に表示させるステップと、を実行することを特徴とするフローチャート描画方法。
【請求項４】
前記分岐ノードの分岐先となる、当該分岐ノードの下位に位置する前記ノードおよび前記コネクタの集合それぞれをノードグループとして設定し、
前記ノードグループを構成する各ノードおよび各コネクタの表示位置の前記座標情報を前記パーツ情報から取得し、
前記ノードグループを構成する各ノードおよび各コネクタを含む最小の矩形を、前記ノードグループそれぞれについて計算し、
前記計算したノードグループの矩形が他のノードグループの矩形と重複する場合に、前記分岐ノードの表示位置を基準として、前記重複した前記ノードグループの表示位置を変更することを特徴とする請求の範囲第３項に記載のフローチャート描画方法。
【請求項５】
請求の範囲第３項ないし請求の範囲第４項のいずれか１項に記載のフローチャート描画方法をコンピュータに実行させるためのプログラム。
【国際調査報告】
2012096001.tif 000030
2012096001.tif 000031