(57)【要約】【課題】製品仕様の選定にかかる複数の部品の組合せを規定した部品組合せルールの管理を効率的に行うことが可能な情報管理支援装置及び方法を提供する。【解決手段】製品仕様の選定にかかる複数の部品の組合せを規定した木構造の部品組合せルールのうち、除外すべき部品の組合せを規定した禁止組合せデータに該当する製品の製品コードに対し、禁止組合せであることを表す禁止マークを付加した状態で表示する。また、表示された部品組合せルールに対して指示された編集内容に応じて、部品組合せルールの編集を行う。【選択図】        図１３
2009075734.tif 000002
【特許請求の範囲】
【請求項１】
部品種別を表す部品種別ノードと、当該部品種別に所属する部品を定義した１又は複数の枝とを構成単位とし、複数の部品種別に対応する構成単位間の接続関係により一の製品を構成する製品仕様毎の部品の組合せを規定するとともに、各製品仕様を識別するための製品コードを前記各枝の終端に位置する葉ノードで表した木構造の部品組合せルールを記憶する第１記憶手段と、
前記製品仕様毎の部品の組合せから除外すべき部品の組合せを部品種別と対応付けて規定した禁止組合せデータを記憶する第２記憶手段と、
前記禁止組合せデータに基づいて、前記部品組合せルールから除外すべき部品種別の組合せに該当する部品種別ノードを抽出する該当部分抽出手段と、
前記該当部分抽出手段により抽出された部品種別ノードの枝毎に、当該枝が定義する部品の一部又は全てが前記禁止組合せデータで規定された部品と一致するか否かを判定する関連性検査手段と、
前記関連性検査手段により一部の部品が前記禁止組合せデータで規定された部品と一致すると判定された枝を、一致した部品のみを定義する枝と、不一致の部品のみを定義する枝と、に下位の木構造を維持した状態で夫々分離する分離手段と、
前記関連性検査手段により一致すると判定された枝にかかる葉ノードに対し、禁止組合せであることを表す禁止マークを付加する禁止マーク付加手段と、
前記禁止マークが付加された部品組合せルールを木構造の状態で表示する表示手段と、
を備えたことを特徴とする情報管理支援装置。
【請求項２】
前記表示手段により表示された部品組合せルールに対する所定の編集内容を指示した編集要求を受け付ける編集要求受付手段と、
前記編集内容に応じて、前記表示手段に表示された部品組合せルールの木構造を編集するルール編集手段と、
前記ルール編集手段により編集された部品組合せルールの葉ノードから前記禁止マークを削除するとともに、共通の製品種別ノードを親ノードに持つ葉ノードが互いに異なる製品コードを表すよう木構造を変更する禁止マーク除去手段と、
前記禁止マーク除去手段により変更された部品組合せルールの木構造を前記第１記憶手段に記憶することで、当該部品組合せルールの更新を行う更新手段と、
を備えたことを特徴とする請求項１に記載の情報管理支援装置。
【請求項３】
前記編集要求受付手段は、製品コードの追加にかかる特定の部品種別ノードと、当該特定の部品種別ノードに関して製品コードの割り当て対象となる特定の部品と、追加対象の製品コードと、を指示する編集要求を受け付け、
前記ルール編集手段は、前記編集要求で指示された特定の部品種別ノードの下に前記追加対象の製品コードを表す葉ノードを生成し、当該部品種別ノードと葉ノードとの間を、前記特定の部品を定義した枝で繋ぐことを特徴とする請求項２に記載の情報管理支援装置。
【請求項４】
前記編集要求受付手段は、前記表示手段により表示された部品組合せルールの木構造のうち、新たな製品種別ノードの追加先となる特定の部品種別ノードと、当該特定の部品種別ノードと新たな部品種別ノードとの間で定義する特定の部品と、追加対象の部品種別と、を指示する編集要求を受け付け、
前記ルール編集手段は、前記編集要求で指示された特定の部品種別ノードの下に前記追加対象の部品種別を表す部品種別ノードを生成し、当該特定の部品種別ノードと生成した部品種別ノードとの間を、前記特定の部品を定義した枝で繋ぐことを特徴とする請求項２に記載の情報管理支援装置。
【請求項５】
前記編集要求受付手段は、前記表示手段により表示された部品組合せルールの木構造のうち、削除の対象となる特定の製品種別ノード又は葉ノードを指示する編集要求を受け付け、
前記ルール編集手段は、前記編集要求で指示された特定の部品種別ノードとそれを含む全子孫又は特定の葉ノード自体を、前記表示手段により表示された部品組合せルールの木構造から削除することを特徴とする請求項２に記載の情報管理支援装置。
【請求項６】
前記編集要求受付手段は、編集対象となる特定の枝と、当該特定の枝に割り当てる部品と、を指示する編集要求を受け付け、
前記ルール編集手段は、前記編集要求で指示された特定の枝が定義する部品を、当該編集要求で割り当てが指示された部品に変更することを特徴とする請求項２に記載の情報管理支援装置。
【請求項７】
前記編集要求受付手段は、編集対象となる特定の部品種別ノードと、当該部品種別ノードに割り当てる部品種別と、を指示する編集要求を受け付け、
前記ルール編集手段は、前記編集要求で指示された特定の部品種別ノードが表す部品種別を、当該編集要求で指示された部品種別に変更することを特徴とする請求項２に記載の情報管理支援装置。
【請求項８】
前記編集要求受付手段は、部分木のトップノードとなる特定の部品種別ノードと、当該部分木の複製先となる特定の葉ノードと、を指示する編集要求を受け付け、
前記ルール編集手段は、前記編集要求で指示された特定の部品種別ノードをトップノードとする部分木を複製し、当該複製した部分木のトップノードを前記編集要求で指示された特定の葉ノードと置き換えることを特徴とする請求項２に記載の情報管理支援装置。
【請求項９】
前記部品組合せルールは、製品コードが未割り当ての状態の葉ノードを有し、
前記編集要求受付手段は、前記製品コードが未割り当ての状態の葉ノードを子孫ノードに有した特定の製品種別ノードと、当該葉ノードに割り当てる製品コードと、を指示する編集要求を受け付け、
前記ルール編集手段は、前記編集要求で指示された特定の製品種別ノードの子孫ノードに存在する前記製品コードが未割り当ての状態の葉ノードに対し、前記編集要求で割り当てが指示された製品コードを割り当てることを特徴とする請求項２に記載の情報管理支援装置。
【請求項１０】
部品種別を表す部品種別ノードと、当該部品種別に所属する部品を定義した１又は複数の枝とを構成単位とし、複数の部品種別に対応する構成単位間の接続関係により一の製品を構成する製品仕様毎の部品の組合せを規定するとともに、各製品仕様を識別するための製品コードを前記各枝の終端に位置する葉ノードで表した木構造の部品組合せルールを記憶する第１記憶手段と、前記製品仕様毎の部品の組合せから除外すべき部品の組合せを部品種別と対応付けて規定した禁止組合せデータを記憶する第２記憶手段と、を備えた情報管理支援装置の情報管理方法であって、
前記禁止組合せデータに基づいて、前記部品組合せルールから除外すべき部品種別の組合せに該当する部品種別ノードを抽出する該当部分抽出工程と、
前記該当部分抽出工程で抽出された部品種別ノードの枝毎に、当該枝が定義する部品の一部又は全てが前記禁止組合せデータで規定された部品と一致するか否かを判定する関連性検査工程と、
前記関連性検査工程で一部の部品が前記禁止組合せデータで規定された部品と一致すると判定された枝を、一致した部品のみを定義する枝と、不一致の部品のみを定義する枝と、に下位の木構造を維持した状態で夫々分離する分離工程と、
前記関連性検査工程で一致すると判定された枝にかかる葉ノードに対し、禁止組合せであることを表す禁止マークを付加する禁止マーク付加工程と、
前記禁止マークが付加された部品組合せルールを木構造の状態で表示する表示工程と、
を含むことを特徴とする情報管理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、製品仕様の選定にかかる複数の部品の組合せを規定した部品組合せルールの管理を支援することが可能な情報管理支援装置及び方法に関する。
【背景技術】
【０００２】
ＰＣ（Personal  Computer）や自動車等の受注生産方式としてＢＴＯ（Built  To  Order）生産方式が知られている。この生産方式では、顧客は部品の組合せを指定して製品を注文することが可能であり、製造メーカ側では顧客の注文に応じて部品の組立てを行い出荷するようになっている。顧客が指定可能な部品の組合せは複数通りとなるが、部品間の特性等により同時に利用できない等の制約が生じる不適切な組合せも存在する。そのため、ＢＴＯ生産方式では、製品仕様選定の際の基準となる複数の部品の組合せに係るルールを規定したデータ（以下、部品組合せルールという）とは別に、除外すべき部品の組合せを規定したデータ（以下、禁止組合せデータという）を予め用意しておくことで、適切な組合せのみが選択されるよう制御している。
【０００３】
例えば、特許文献１には、コンフィグレーションの対象となる商品毎に、それを構成する可能性のある商品の情報と、それらの商品に課される条件情報とをツリー構造の形で記述する樹形図に、商品に課される当該商品の組合せを制約する制約情報を当該商品の下位に付加する技術が開示されている。
【０００４】
【特許文献１】特開２００２−３２６３１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
ところで、部品組合せルールの設定内容の管理は、禁止組合せデータとの整合性を考慮しながら行う必要があるため、その作業が煩雑であるという問題がある。また、特許文献１に記載されているように、制約情報（禁止組合せデータ）を樹形図（部品組合せルール）に付加した状態で保持する場合には、商品毎に制約情報を逐次付加する必要があり、また、樹形図を変更する際には、商品毎に制約情報の有無を判定する必要もあるため、上記の問題を解決することはできない。
【０００６】
本発明は上記に鑑みてなされたものであって、製品仕様の選定にかかる複数の部品の組合せを規定した部品組合せルールの管理を効率的に行うことが可能な情報管理支援装置及び方法を提供することを目的とする。
【課題を解決するための手段】
【０００７】
上述した課題を解決し、目的を達成するために、本発明は、部品種別を表す部品種別ノードと、当該部品種別に所属する部品を定義した１又は複数の枝とを構成単位とし、複数の部品種別に対応する構成単位間の接続関係により一の製品を構成する製品仕様毎の部品の組合せを規定するとともに、各製品仕様を識別するための製品コードを前記各枝の終端に位置する葉ノードで表した木構造の部品組合せルールを記憶する第１記憶手段と、前記製品仕様毎の部品の組合せから除外すべき部品の組合せを部品種別と対応付けて規定した禁止組合せデータを記憶する第２記憶手段と、前記禁止組合せデータに基づいて、前記部品組合せルールから除外すべき部品種別の組合せに該当する部品種別ノードを抽出する該当部分抽出手段と、前記該当部分抽出手段により抽出された部品種別ノードの枝毎に、当該枝が定義する部品の一部又は全てが前記禁止組合せデータで規定された部品と一致するか否かを判定する関連性検査手段と、前記関連性検査手段により一部の部品が前記禁止組合せデータで規定された部品と一致すると判定された枝を下位の木構造を維持した状態で、一致した部品のみを定義する枝と、不一致の部品のみを定義する枝と、に夫々分離する分離手段と、前記関連性検査手段により一致すると判定された枝の葉ノードに対し、禁止組合せであることを表す禁止マークを付加する禁止マーク付加手段と、前記禁止マークが付加された部品組合せルールを木構造の状態で表示する表示手段と、を備えたことを特徴とする。
【０００８】
また、本発明は、部品種別を表す部品種別ノードと、当該部品種別に所属する部品を定義した１又は複数の枝とを構成単位とし、複数の部品種別に対応する構成単位間の接続関係により一の製品を構成する製品仕様毎の部品の組合せを規定するとともに、各製品仕様を識別するための製品コードを前記各枝の終端に位置する葉ノードで表した木構造の部品組合せルールを記憶する第１記憶手段と、前記製品仕様毎の部品の組合せから除外すべき部品の組合せを部品種別と対応付けて規定した禁止組合せデータを記憶する第２記憶手段と、を備えた情報管理支援装置の情報管理方法であって、前記禁止組合せデータに基づいて、前記部品組合せルールから除外すべき部品種別の組合せに該当する部品種別ノードを抽出する該当部分抽出工程と、前記該当部分抽出工程で抽出された部品種別ノードの枝毎に、当該枝が定義する部品の一部又は全てが前記禁止組合せデータで規定された部品と一致するか否かを判定する関連性検査工程と、前記関連性検査工程で一部の部品が前記禁止組合せデータで規定された部品と一致すると判定された枝を下位の木構造を維持した状態で、一致した部品のみを定義する枝と、不一致の部品のみを定義する枝と、に夫々分離する分離工程と、前記関連性検査工程で一致すると判定された枝の葉ノードに対し、禁止組合せであることを表す禁止マークを付加する禁止マーク付加工程と、前記禁止マークが付加された部品組合せルールを木構造の状態で表示する表示工程と、を含むことを特徴とする。
【発明の効果】
【０００９】
本発明によれば、製品仕様の選定にかかる複数の部品の組合せを規定した木構造の部品組合せルールのうち、禁止組合せデータで規定された除外すべき部品と一致すると判定された枝を、一致した部品のみを定義する枝と不一致の部品のみを定義する枝とに分離し、禁止組合せデータの部品組合せにかかる葉ノードが表す製品コードに禁止マークを付加した状態で表示する。これにより、ユーザは部品組合せルールと禁止組合せデータとの整合性を容易に確認することが可能となり、この表示された部品組合せルールに基づいてルールの編集を行うことが可能となるため、部品組合せルールの管理を効率的に行うことができる。
【発明を実施するための最良の形態】
【００１０】
以下に添付図面を参照して、情報管理支援装置及び方法の最良な実施形態を詳細に説明する。
【００１１】
［第１の実施形態］
図１は、情報管理支援装置１００のハードウェア構成を示したブロック図である。図１に示したように、情報管理支援装置１００は、ＣＰＵ（Central  Processing  Unit）１１、操作部１２、表示部１３、ＲＯＭ（Read  Only  Memory）１４、ＲＡＭ（Random  Access  Memory）１５、通信部１６及び記憶部１７等を備え、各部はバス１８により接続されている。なお、後述する情報管理支援装置２００、３００、４００、５００、６００、７００、８００についても図１と同様のハードウェア構成を有するものとする。
【００１２】
ＣＰＵ１１は、ＲＡＭ１５の所定領域を作業領域として、ＲＯＭ１４又は記憶部１７に予め記憶された各種制御プログラムとの協働により各種処理を実行し、情報管理支援装置を構成する各部の動作を統括的に制御する。
【００１３】
また、ＣＰＵ１１は、ＲＯＭ１４又は記憶部１７に予め記憶された所定の制御プログラムとの協働により、後述する機能構成を実現させる。なお、実現された機能構成に含まれる各機能部の動作については後述する。
【００１４】
操作部１２は、各種入力キーを備え、ユーザから操作入力された情報を指示信号として受け付け、その指示信号をＣＰＵ１１に出力する。
【００１５】
表示部１３は、ＬＣＤ（Liquid  Crystal  Display）等の表示デバイスにより構成され、ＣＰＵ１１からの表示信号に基づいて、各種情報を表示する。なお、表示部１３は、操作部１２と一体的にタッチパネルを構成する態様としてもよい。
【００１６】
ＲＯＭ１４は、不揮発性の記憶デバイスであって、情報管理支援装置の制御にかかるプログラムや各種設定情報等を書き換え不可能に記憶する。ＲＡＭ１５は、揮発性の記憶デバイスであって、ＣＰＵ１１の作業エリアとして機能し、各種の処理時においてスタックやバッファ等の役割を果たす。
【００１７】
通信部１６は、図示しないネットワークを介して外部機器との間で通信を行うインタフェースであって、外部機器から受信した各種の情報をＣＰＵ１１に出力し、また、ＣＰＵ１１から出力される各種の情報を外部機器へと送信する。
【００１８】
記憶部１７は、磁気的又は光学的に記録可能な記憶媒体を有し、関連情報抽出サーバ１０の制御にかかるプログラムや各種設定情報等を書き換え可能に記憶する。また、記憶部１７は、ルールＤＢ１７１、部品ＤＢ１７２、禁止組合せＤＢ１７３を予め記憶している。ここで、ルールＤＢ１７１、部品ＤＢ１７２及び禁止組合せＤＢ１７３は、部品種別の異なる複数の部品の組合せにより製品の仕様の指示を行うＢＴＯ生産方式に必要なデータベース群である。なお、本実施形態では、複数の部品から構成される製品をノートＰＣとして説明する。
【００１９】
ルールＤＢ１７１は、製品仕様の決定の際の基準となる前記複数の部品の組合せに係るルールを、部品種別及び部分を表すノード間の接続により規定した木構造の部品組合せルールを記憶するＸＭＬデータベース等のデータベースである。
【００２０】
ここで、「部品種別」とは、製品の構成要素となる部品の分類を表す集合である。例えば、ノートＰＣの部品種別としては、ＣＰＵ、ＨＤＤ（ハードディスクドライブ）、ＬＣＤ、Ｍｅｍｏｒｙ、ＯＤＤ（光ディスクドライブ）、Ｋｅｙｂｏａｒｄ、Ｂｏｄｙ（筐体）等が挙げられる。また、「部品」とは、製品を構成する構成要素であって、上述した部品種別の元となるものである。例えば、部品種別をＣＰＵとし、この部品集合の部品がＣＰＵ０、ＣＰＵ１、ＣＰＵ２、ＣＰＵ３、ＣＰＵ４であるとすると、部品種別と部品との関係は、ＣＰＵ＝｛ＣＰＵ０、ＣＰＵ１、ＣＰＵ２、ＣＰＵ３、ＣＰＵ４｝と表されるものを意味する。
【００２１】
ルールＤＢ１７１において、部品組合せルールは、製品を構成する部品組合せに対して各々固有の製品コードを対応させる形式で、部品間の制約が記述されている。なお、「部品組合せルール」と後述する「禁止組合せデータ」とは、共に製品を構成する部品間の制約を記述するものであるが、前者は「適切」な部品組合せを、後者は「不適切」な部品組合せを明示する点で、夫々の意図は異なっている。
【００２２】
図２は、ルールＤＢ１７１に記憶された部品組合せルールの一例を模式的に示した図である。同図に示したように、部品組合せルールは、当該部品組合せルールの構成単位となる部品種別ノードＣＮ（ＣＮ１〜ＣＮ３）及び枝Ｂと、各枝Ｂの終端に接続された葉ノードＬＮ（ＬＮ１〜ＬＮ４）と、により構成された木構造で表される。以下、部品種別ノードＣＮと葉ノードＬＮとを総称して、ノードともいう。
【００２３】
ここで「部品種別ノードＣＮ」は、上述した「部品種別」の夫々を表すものであって、ノートＰＣの構成要素となる部品の部品種別（ＣＰＵ、ＨＤＤ等）を夫々表している。
【００２４】
「枝Ｂ」は、部品種別に所属する部品を定義するものであって、親ノードとなる「部品種別ノードＣＮ」と接続することで、その部品種別の具体的な部品を下位のノードに対して条件指定するものである。
【００２５】
なお、「枝Ｂ」には特殊なコマンドとして、兄弟ノードに至る他の枝Ｂで指定された部品以外の部品を指示する“ｅｌｓｅ”を定義することが可能であるものとする。例えば、図２の場合、部品種別ノードＣＮ“ＯＤＤ”にかかる枝Ｂの“ｅｌｓｅ”は、部品種別ＯＤＤに含まれた部品のうち、“ＤＶＤ−Ｍｕｌｔｉ  Ｄｒｉｖｅ”以外の全ての部品を指示する。なお、兄弟ノードに至る枝Ｂ間において、複数の“ｅｌｓｅ”が同時に定義されてはならないものとする。
【００２６】
「葉ノードＬＮ」は、各枝の終端、即ち木構造の終端に位置し、上位の部品種別ノードＣＮと枝Ｂとにより条件指定された各部品の組合せから構成される製品を識別するための製品コードを表すためのノードである。なお、「葉ノードＬＮ」には、製品コードが割り当てられていない「製品コード未割り当て」の状態を規定することも可能である。この場合、葉ノードＬＮは、用途不確定のノードとして機能する。
【００２７】
上記した部品組合せルールにおいて、トップノードの部品種別ノードＣＮから葉ノードＬＮまでを各枝Ｂに沿って辿ることで、部品種別ノードＣＮと枝Ｂとにより条件指定された部品に対応する製品コードを読み取ることができる。例えば図２の場合には、ＣＰＵが“ＣＰＵ０”で、且つＨＤＤが“ＨＤＤ２”の場合、製品コード“コード０１”を読み取ることができる。一方、ＣＰＵが“ＣＰＵ２”で、且つＯＤＤが“ＤＶＤ−Ｍｕｌｔｉ  Ｄｒｉｖｅ”の場合には、製品コードが未割り当ての状態であることが読み取れる。なお、ルールＤＢ１７１に記憶する部品組合せルールは、一に限らず製品毎に用意された複数の部品組合せルールを記憶する態様としてもよい。
【００２８】
部品ＤＢ１７２は、各部品種別に含まれる部品の組合せを規定した部品データを記憶するデータベースである。具体的に、部品ＤＢ１７２は、部品種別をキーにして当該部品種別に含まれる部品集合を検索・取得することが可能に構成されている。一般的なＲＤＢ（リレーショナルデータベース）により部品ＤＢ１７２を構成した場合、図３に示したように、「部品種別」と「部品」とを属性名とするテーブルにより部品データを表すことが可能である。なお、図３では、上述したＣＰＵ＝｛ＣＰＵ０、ＣＰＵ１、ＣＰＵ２、ＣＰＵ３、ＣＰＵ４｝の関係を示したものである。
【００２９】
禁止組合せＤＢ１７３は、除外すべき部品種別及び部品の組み合わせを規定した禁止組合せデータを記憶するデータベースである。ここで、除外すべき組み合わせとは、設計上の理由などにより組み合わせることが不適切となる部品の組合せであって、例えば、白いキーボードと黒い筐体との組合せ等が挙げられる。
【００３０】
禁止組合せＤＢ１７３は、部品種別の集合をキーに、当該部品種別に関係する禁止部品組合せデータを検索・取得することが可能に構成されている。一般的なＲＤＢにより禁止組合せＤＢ１７３を構成した場合、図４に示したように、「禁止組合せＩＤ」と、「部品種別」と、「部品」とを属性名とするテーブルにより表すことが可能である。
【００３１】
図４において、テーブルの各行が禁止組合せの一つの部品組合せを表し、一連する禁止組合せデータは禁止組合せＩＤにより区別される。例えば、部品種別の組合せ｛ＣＰＵ、ＨＤＤ｝をキーにした場合、禁止組合せＩＤ“０１”にかかる｛ＣＰＵ０｝×｛ＨＤＤ０、ＨＤＤ１｝が禁止部品組合せデータとして検索・取得される。なお、ここでは、禁止部品組合せデータを部品種別の部分集合の直積集合で表しており、（ＣＰＵ０、ＨＤＤ０）若しくは（ＣＰＵ０、ＨＤＤ１）の組合せが製品設計上不適切な部品集合であることを意味する。
【００３２】
図５は、本実施形態にかかる情報管理支援装置１００の機能構成を示したブロック図である。図５に示したように、情報管理支援装置１００は、ルール表示要求受付部１１１と、ルール読込部１１２と、禁止組合せ結合部１１３と、を備えている。
【００３３】
ルール表示要求受付部１１１は、ルールＤＢ１７１に記憶された部品組合せルールのうち、特定の部品組合せルールの表示を要求する指示情報を、操作部１２を介して受け付け、この要求された部品組合せルールをルール読込部１１２に通知する。
【００３４】
ルール読込部１１２は、ルール表示要求受付部１１１から通知された部品組合せルールをルールＤＢ１７１から読み込み、この読み込んだ部品組合せルールを禁止組合せ結合部１１３に出力する。
【００３５】
禁止組合せ結合部１１３は、ルール読込部１１２から入力された部品組合せルールに対して禁止組合せＤＢ１７３に記憶された禁止組合せデータを適用することで、部品組合せルール中に含まれた禁止組合せに該当する部分を判定し、不適切な組み合わせを明示した部品組合せルールを表示部１３に表示する。なお、禁止組合せ結合部１１３は、部品組合せルール中“ｅｌｓｅ”が定義された枝Ｂについては、部品ＤＢ１７２を参照し、兄弟ノードに至る他の枝Ｂで指定された部品に基づいて、該当する部品を特定する。以下、禁止組合せ結合部１１３について詳細に説明する。
【００３６】
図６は、禁止組合せ結合部１１３の詳細構成を示したブロック図である。同図に示したように、禁止組合せ結合部１１３は、部品種別抽出部１１３１、禁止組合せ抽出部１１３２、禁止組合せ該当部分抽出部１１３３、禁止組合せ関連性検査部１１３４、禁止組合せ分離部１１３５、禁止マーク付加部１１３６、表示制御部１１３７を有している。
【００３７】
部品種別抽出部１１３１は、ルール読込部１１２から入力された部品組合せルールに対し、当該部品組合せルールを構成する木構造中の部品種別ノードＣＮを走査し、この木構造中に規定された全ての部品種別を抽出する。
【００３８】
禁止組合せ抽出部１１３２は、部品種別抽出部１１３１により抽出された各部品種別の組合せに該当する禁止組合せデータを、禁止組合せＤＢ１７３から抽出する。
【００３９】
禁止組合せ該当部分抽出部１１３３は、部品組合せルールを表す木構造を深さ優先で走査し、禁止組合せ抽出部１１３２により抽出された禁止組合せデータに該当する部分木の抽出を行う。
【００４０】
禁止組合せ関連性検査部１１３４は、禁止組合せ該当部分抽出部１１３３により抽出された部分木の各枝Ｂについて、条件指定された部品と禁止組合せデータで指定された部品との比較を行い、一部の部品が禁止組合せデータに該当するような場合には、ノードの分離を指示する属性情報“分離”を該当するノードの属性に付加する。ここで、「属性」とは、ノード自体の属性を示した情報（属性情報）を記述するための領域であって、各ノードに予め設けられているものとする。なお、属性情報の記述はフラグ形式で行う態様としてもよい。
【００４１】
禁止組合せ分離部１１３５は、禁止組合せ関連性検査部１１３４により“分離”が付加されたノードとこの親ノードとを繋ぐ枝Ｂが定義する部品に基づいて、この枝Ｂを禁止組合せの部品のみを定義する枝Ｂと、不一致の部品のみを定義する枝Ｂと、に下位の木構造を維持した状態で夫々分離する。
【００４２】
禁止マーク付加部１１３６は、禁止組合せ分離部１１３５による処理後の部品組合せルールに基づいて、トップノードから各葉ノードＬＮまでを走査し、禁止組合せデータに該当する部品組合せ及び「製品コード未割り当て」の葉ノードＬＮのノード名を、禁止組合せであること指示する情報に変更する。
【００４３】
表示制御部１１３７は、禁止組合せ分離部１１３５により処理された後の部品組合せルールを、木構造の状態で表示部１３に表示する。
【００４４】
以下、図７を参照して、本実施形態の情報管理支援装置１００の動作について説明する。図７は、情報管理支援装置１００により実行されるルール閲覧処理の手順を示したフローチャートである。
【００４５】
まず、ルール表示要求受付部１１１は、操作部１２を介して入力された、特定の部品組合せルールの表示を要求する指示情報を受け付けると、この要求された部品組合せルールをルール読込部１１２に通知する（ステップＳ１１）。
【００４６】
次いで、ルール読込部１１２は、ルール表示要求受付部１１１から通知された部品組合せルールをルールＤＢ１７１から読み込み、読み込んだ部品組合せルールを禁止組合せ結合部１１３に出力する（ステップＳ１２）。
【００４７】
部品種別抽出部１１３１は、ルール読込部１１２から入力された部品組合せルールに含まれた部品種別ノードＣＮを走査し、木構造中に含まれた全ての部品種別を抽出する（ステップＳ１３）。
【００４８】
次に、禁止組合せ抽出部１１３２は、ステップＳ１３の処理で抽出された部品種別の組合せに該当する禁止組合せデータを、禁止組合せＤＢ１７３から抽出する（ステップＳ１４）。
【００４９】
続くステップＳ１５において、禁止組合せ該当部分抽出部１１３３は、ステップＳ１４で抽出された禁止組合せデータに基づいて、禁止組合せ該当部分抽出処理を実行する（ステップＳ１５）。以下、図８を参照して、ステップＳ１５の禁止組合せ該当部分抽出処理について説明する。
【００５０】
図８は、禁止組合せ該当部分抽出処理の手順を示したフローチャートである。なお、本処理は、ステップＳ１２で読み込まれた部品組合せルールに対して行われるものである。まず、禁止組合せ該当部分抽出部１１３３は、部品組合せルールのトップノードに対応するノードの属性に、処理対象としたことを指示する属性情報“訪問済み”を付加する（ステップＳ１５１１）。次いで、禁止組合せ該当部分抽出部１１３３は、ＲＡＭ１５に確保されたスタックに、このトップノードに対応するノードをプッシュ（ｐｕｓｈ）する（ステップＳ１５１２）。
【００５１】
続いて、禁止組合せ該当部分抽出部１１３３は、スタックのトップ（先頭）に格納されたノードを変数ｎｏｄｅに代入すると（ステップＳ１５１３）、この変数ｎｏｄｅに対応するノードの属性に、禁止組合せに関連するノードであることを指示する属性情報“禁止関連”を付加する（ステップＳ１５１４）。
【００５２】
次いで、禁止組合せ該当部分抽出部１１３３は、変数ｎｏｄｅに対応するノードの下に、処理対象としていない未処理の子ノードが存在するか否かを判定する（ステップＳ１５１５）。なお、未処理か否かの判定は、各ノードの属性に付加された属性情報“訪問済み”に基づいて行うものとする。
【００５３】
ステップＳ１５１５において、未処理の子ノードが存在しないと判定した場合には（ステップＳ１５１５；Ｎｏ）、禁止組合せ該当部分抽出部１１３３は、スタックをポップ（ｐｏｐ）し（ステップＳ１５１６）、ステップＳ１５２２の処理に移行する。
【００５４】
一方、ステップＳ１５１５において、未処理の子ノードが存在すると判定した場合には（ステップＳ１５１５；Ｙｅｓ）、禁止組合せ該当部分抽出部１１３３は、未処理の子ノードのうち、一の子ノードを変数ｃｈｉｌｄに代入する（ステップＳ１５１７）。
【００５５】
続いて、禁止組合せ関連性検査部１１３４は、変数ｃｈｉｌｄに対応するノードについて、禁止組合せ関連性検査処理を実行する（ステップＳ１５１８）。以下、図９を参照して、ステップＳ１５１８の禁止組合せ関連性検査処理について説明する。
【００５６】
図９は、禁止組合せ関連性検査処理の手順を示したフローチャートである。なお、本処理は、ステップＳ１２で読み込まれた部品組合せルールに対して行われるものである。まず、禁止組合せ関連性検査部１１３４は、変数ｃｈｉｌｄに対応するノードの親ノード（＝ｎｏｄｅ）が表す部品種別が、ステップＳ１４で抽出された禁止組合せデータに含まれているか否かを判定する（ステップＳ１５１８１）。ここで、禁止組合せデータに含まれていないと判定した場合には（ステップＳ１５１８１；Ｎｏ）、ステップＳ１５１８６の処理に移行する。
【００５７】
一方、ステップＳ１５１８１において、親ノードが表す部品種別が禁止組合せデータに含まれていると判定した場合（ステップＳ１５１８１；Ｙｅｓ）、禁止組合せ関連性検査部１１３４は、この親ノードから変数ｃｈｉｌｄに対応するノードまでに条件指定された部品と、禁止組合せデータで規定された部品とを比較し、共通する部品が存在するか否かを判定する（ステップＳ１５１８２）。
【００５８】
ステップＳ１５１８２において、共通する部品が存在しないと判定した場合には（ステップＳ１５１８２；Ｎｏ）、禁止組合せ関連性検査部１１３４は、禁止組合せに該当しないと判断し、その旨を指示する情報“関連無し”を禁止組合せ該当部分抽出部１１３３に出力した後（ステップＳ１５１８３）、図８のステップＳ１５１９の処理へと移行する。
【００５９】
一方、ステップＳ１５１８２において、共通する部品が存在すると判定した場合（ステップＳ１５１８２；Ｙｅｓ）、禁止組合せ関連性検査部１１３４は、条件指定された部品と、ステップＳ１５１８２で共通すると判定された部品とが一致（完全一致）するか否かを判定する（ステップＳ１５１８４）。ここで、条件指定された部品と、ステップＳ１５１８２の処理で共通すると判定された部品とが一致すると判定した場合には（ステップＳ１５１８４；Ｙｅｓ）、ステップＳ１５１８６の処理に直ちに移行する。
【００６０】
また、ステップＳ１５１８４において、条件指定された部品と、ステップＳ１５１８２の処理で共通すると判定された部品とが一致しないと判定した場合には（ステップＳ１５１８４；Ｎｏ）、禁止組合せ関連性検査部１１３４は、禁止組合せに該当しない部品が条件指定されていると判断し、変数ｃｈｉｌｄに対応するノードの属性に、ノードの分離を指示する属性情報“分離”を付加した後（ステップＳ１５１８５）、ステップＳ１５１８６の処理に移行する。
【００６１】
ステップＳ１５１８６では、禁止組合せ関連性検査部１１３４が、変数ｃｈｉｌｄに対応するノードに、禁止組合せに該当することを指示する情報“関連有り”を禁止組合せ該当部分抽出部１１３３に出力した後（ステップＳ１５１８６）、図８のステップＳ１５１９の処理へと移行する。
【００６２】
図８に戻り、禁止組合せ該当部分抽出部１１３３は、ステップＳ１５１８の処理の結果、禁止組合せ関連性検査部１１３４から入力された情報が“関連有り”か否かを判定する（ステップＳ１５１９）。ここで、禁止組合せ関連性検査部１１３４から入力された情報が“関連無し”と判定した場合には（ステップＳ１５１９；Ｎｏ）、ステップＳ１５２１の処理に直ちに移行する。
【００６３】
一方、ステップＳ１５１９において、禁止組合せ関連性検査部１１３４から入力された情報が“関連有り”と判定した場合には（ステップＳ１５１９；Ｙｅｓ）、禁止組合せ該当部分抽出部１１３３は、変数ｃｈｉｌｄに対応するノードをスタックにプッシュした後（ステップＳ１５２０）、ステップＳ１５２１の処理に移行する。
【００６４】
続くステップＳ１５２１では、禁止組合せ該当部分抽出部１１３３は、変数ｃｈｉｌｄに対応するノードの属性に、処理対象としたことを指示する属性情報“訪問済み”を付加する（ステップＳ１５２１）。
【００６５】
続いて、禁止組合せ該当部分抽出部１１３３は、スタックの状態を確認し、スタックが空か否かを判定する（ステップＳ１５２２）。ここで、スタックが空ではないと判定した場合には（ステップＳ１５２２；Ｎｏ）、ステップＳ１５１３の処理へと再び戻り、スタックのトップ（先頭）に格納されたノードを変数ｎｏｄｅに代入する。以下、ステップＳ１５１３〜ステップＳ１５２２までの一連の処理を「抽出ループ処理」と呼ぶ。
【００６６】
一方、ステップＳ１５２２において、スタックが空と判定した場合には（ステップＳ１５２２；Ｙｅｓ）、禁止組合せ該当部分抽出部１１３３は、各ノードの属性に付加された“訪問済み”を削除した後（ステップＳ１５２３）、図７のステップＳ１６の処理へと移行する。
【００６７】
ここで、図３で示した部品組合せルールに対し、上記したステップＳ１５の禁止組合せ該当部分抽出処理を適用した場合の具体例について説明する。なお、ステップＳ１１、Ｓ１２の処理により図３に示した部品組合せルールが、ルールＤＢ１７１から読み込まれたものとする。
【００６８】
まず、部品種別抽出部１１３１は、ステップＳ１３において、図２の部品組合せルールから部品種別の集合として｛ＣＰＵ、ＨＤＤ、ＯＤＤ｝を抽出する。また、図４で示した禁止組合せデータが禁止組合せＤＢ１７３に記憶されていたとすると、禁止組合せ抽出部１１３２は、ステップＳ１４において、｛ＣＰＵ０｝×｛ＨＤＤ０、ＨＤＤ１｝を抽出する。
【００６９】
次に、禁止組合せ該当部分抽出部１１３３は、ステップＳ１５１１で部品組合せルールのトップノードである部品種別ノードＣＮ１の属性に“訪問済み”を付加すると、ステップＳ１５１２では、この部品種別ノードＣＮ１をスタックにプッシュする。
【００７０】
続いて、禁止組合せ該当部分抽出部１１３３は、１回目の抽出ループ処理を開始し、ステップＳ１５１３において、スタックのトップ（先頭）に格納されたノード、即ち、部品種別ノードＣＮ１を変数ｎｏｄｅに代入する。続いて、禁止組合せ該当部分抽出部１１３３は、この変数ｎｏｄｅに対応する部品種別ノードＣＮ１の属性に“禁止関連”を付加すると（ステップＳ１５１４）、ステップＳ１５１５で、この部品種別ノードＣＮ１に未処理の子ノードが存在するか否かを判定する。
【００７１】
ここで、部品種別ノードＣＮ１には、未処理の子ノード（部品種別ノードＣＮ２、ＣＮ３）が存在するため、禁止組合せ該当部分抽出部１１３３は、ステップＳ１５１５の判定の結果、部品種別ノードＣＮ２を変数ｃｈｉｌｄに代入する（ステップＳ１５１５；Ｙｅｓ→ステップＳ１５１７）。
【００７２】
続いて、禁止組合せ関連性検査部１１３４は、ステップＳ１５１８１の処理の結果、ｃｈｉｌｄに代入された部品種別ノードＣＮ２の親ノード、即ち、部品種別ノードＣＮ１の部品種別｛ＣＰＵ｝が、禁止組合せデータに含まれていると判定する（ステップＳ１５１８１；Ｙｅｓ）。また、禁止組合せ関連性検査部１１３４は、ステップＳ１５１８１の処理の結果、部品種別ノードＣＮ１から部品種別ノードＣＮ２にかけて条件指定された部品｛ＣＰＵ０｝と、禁止組合せデータで規定された部品｛ＣＰＵ０｝と、が共通すると判定する（ステップＳ１５１８２；Ｙｅｓ）。
【００７３】
次に、禁止組合せ関連性検査部１１３４は、ステップＳ１５１８４の処理の結果、部品種別ノードＣＮ１から部品種別ノードＣＮ２にかけて条件指定された全ての部品｛ＣＰＵ０｝と、ステップＳ１５１８２の処理で共通すると判定された部品｛ＣＰＵ０｝とが一致すると判定する（ステップＳ１５１８４；Ｙｅｓ）。そのため、禁止組合せ関連性検査部１１３４は、ステップＳ１５１８６において、禁止組合せに該当することを指示する情報“関連有り”を禁止組合せ該当部分抽出部１１３３に出力する。
【００７４】
禁止組合せ該当部分抽出部１１３３は、ステップＳ１５１９の処理の結果、“関連有り”と判定するため、変数ｃｈｉｌｄに対応する部品種別ノードＣＮ２をスタックにプッシュする（ステップＳ１５１９；Ｙｅｓ→ステップＳ１５２０）。続いて、禁止組合せ該当部分抽出部１１３３は、変数ｃｈｉｌｄに対応する部品種別ノードＣＮ２の属性に“訪問済み”を付加し（ステップＳ１５２１）、ステップＳ１５２２の処理の結果、スタックは空ではないと判定するため、２回目の抽出ループ処理に移行する（ステップＳ１５２２；Ｎｏ→ステップＳ１５１３）。
【００７５】
続いて、禁止組合せ該当部分抽出部１１３３は、２回目の抽出ループ処理を開始し、ステップＳ１５１３において、スタックのトップ（先頭）に格納されたノード、即ち、部品種別ノードＣＮ２を変数ｎｏｄｅに代入する。続いて、禁止組合せ該当部分抽出部１１３３は、この変数ｎｏｄｅに対応する部品種別ノードＣＮ２の属性に“禁止関連”を付加すると（ステップＳ１５１４）、ステップＳ１５１５で、この部品種別ノードＣＮ２に未処理の子ノードが存在するか否かを判定する。
【００７６】
ここで、部品種別ノードＣＮ２には、未処理の子ノード（葉ノードＬＮ１、ＬＮ２）が存在するため、禁止組合せ該当部分抽出部１１３３は、葉ノードＬＮ１を変数ｃｈｉｌｄに代入する（ステップＳ１５１５；Ｙｅｓ→ステップ１５１７）。
【００７７】
続いて、禁止組合せ関連性検査部１１３４は、ステップＳ１５１８１の処理の結果、変数ｃｈｉｌｄに対応する葉ノードＬＮ１の親ノード、即ち、部品種別ノードＣＮ２の部品種別「ＨＤＤ」が、禁止組合せデータに含まれていると判定する（ステップＳ１５１８１；Ｙｅｓ）。また、禁止組合せ関連性検査部１１３４は、ステップＳ１５１８１の処理の結果、部品種別ノードＣＮ２から葉ノードＬＮ１にかけて条件指定された部品｛ＨＤＤ０｝と、禁止組合せデータで規定された部品｛ＨＤＤ０｝と、が共通すると判定する（ステップＳ１５１８２；Ｙｅｓ）。
【００７８】
次に、禁止組合せ関連性検査部１１３４は、ステップＳ１５１８４の処理の結果、部品種別ノードＣＮ２から葉ノードＬＮ１にかけて条件指定された全ての部品｛ＨＤＤ０｝と、ステップＳ１５１８２の処理で共通すると判定された部品｛ＨＤＤ０｝とが一致すると判定する（ステップＳ１５１８４；Ｙｅｓ）。そのため、禁止組合せ関連性検査部１１３４は、ステップＳ１５１８６において、禁止組合せに該当することを指示する情報“関連有り”を禁止組合せ該当部分抽出部１１３３に出力する。
【００７９】
次いで、禁止組合せ該当部分抽出部１１３３では、ステップＳ１５１９の処理の結果、“関連有り”と判定するため、ｃｈｉｌｄに代入した葉ノードＬＮ１をスタックにプッシュする（ステップＳ１５１９；Ｙｅｓ→ステップＳ１５２０）。続いて、禁止組合せ該当部分抽出部１１３３は、変数ｃｈｉｌｄに対応する葉ノードＬＮ１の属性に“訪問済み”を付加する（ステップＳ１５２１）。そして、禁止組合せ該当部分抽出部１１３３は、ステップＳ１５２２の処理の結果、スタックは空ではないと判定するため、３回目の抽出ループ処理に移行する（ステップＳ１５２２；Ｎｏ→ステップＳ１５１３）。
【００８０】
続いて、禁止組合せ該当部分抽出部１１３３は、３回目の抽出ループ処理を開始し、ステップＳ１５１３において、スタックのトップに格納されたノード、即ち、葉ノードＬＮ１を変数ｎｏｄｅに代入する。次いで、禁止組合せ該当部分抽出部１１３３は、この変数ｎｏｄｅに対応する葉ノードＬＮ１の属性に“禁止関連”を付加すると（ステップＳ１５１４）、この葉ノードＬＮ１に未処理の子ノードが存在するか否かを判定する（ステップＳ１５１５）。
【００８１】
ここで、葉ノードＬＮ１には、未処理の子ノードが存在しないため、禁止組合せ該当部分抽出部１１３３は、ステップＳ１５１６でスタックをポップする。そして、禁止組合せ該当部分抽出部１１３３は、ステップＳ１５２２の処理の結果、スタックは空ではないと判定するため、４回目の抽出ループ処理に移行する（ステップＳ１５２２；Ｎｏ→ステップＳ１５１３）。
【００８２】
続いて、禁止組合せ該当部分抽出部１１３３は、４回目の抽出ループ処理を開始し、ステップＳ１５１３において、スタックのトップに格納されたノード、即ち、部品種別ノードＣＮ２を変数ｎｏｄｅに代入する。続いて、禁止組合せ該当部分抽出部１１３３は、この変数ｎｏｄｅに対応する部品種別ノードＣＮ２の属性に“禁止関連”を付加すると（ステップＳ１５１４）、ステップＳ１５１５で、この部品種別ノードＣＮ２に未処理の子ノードが存在するか否かを判定する。
【００８３】
ここで、部品種別ノードＣＮ２には、未処理の子ノード（葉ノードＬＮ２）が存在するため、禁止組合せ該当部分抽出部１１３３は、葉ノードＬＮ２を変数ｃｈｉｌｄに代入する（ステップＳ１５１５；Ｙｅｓ→ステップ１５１７）。
【００８４】
続いて、禁止組合せ関連性検査部１１３４は、ステップＳ１５１８１の処理を行い、変数ｃｈｉｌｄに対応する葉ノードＬＮ２の親ノード、即ち、部品種別ノードＣＮ２の部品種別｛ＨＤＤ｝が、禁止組合せデータに含まれていると判定する（ステップＳ１５１８１；Ｙｅｓ）。また、禁止組合せ関連性検査部１１３４は、ステップＳ１５１８１の処理を行い、部品種別ノードＣＮ２から葉ノードＬＮ２にかけて条件指定された部品｛ＨＤＤ１｝と、禁止組合せデータで規定された部品｛ＨＤＤ１｝と、が共通すると判定する（ステップＳ１５１８２；Ｙｅｓ）。
【００８５】
次に、禁止組合せ関連性検査部１１３４は、ステップＳ１５１８４の処理の結果、部品種別ノードＣＮ２から葉ノードＬＮ２にかけて条件指定された全ての部品｛ＨＤＤ１、ＨＤＤ２｝と、ステップＳ１５１８２の処理で共通すると判定された部品｛ＨＤＤ１｝とが一致しないと判定する（ステップＳ１５１８４；Ｎｏ）。そのため、禁止組合せ関連性検査部１１３４は、ステップＳ１５１８５において、葉ノードＬＮ２の属性に“分離”を付加した後、ステップＳ１５１８６で、禁止組合せに該当することを指示する情報“関連有り”を禁止組合せ該当部分抽出部１１３３に出力する。
【００８６】
禁止組合せ該当部分抽出部１１３３は、ステップＳ１５１９の処理の結果、“関連有り”と判定するため、ｃｈｉｌｄに対応する葉ノードＬＮ２をスタックにプッシュする（ステップＳ１５１９；Ｙｅｓ→ステップＳ１５２０）。続いて、禁止組合せ該当部分抽出部１１３３は、変数ｃｈｉｌｄに対応する葉ノードＬＮ２の属性に“訪問済み”を付加する（ステップＳ１５２１）。そして、禁止組合せ該当部分抽出部１１３３は、ステップＳ１５２２の処理の結果、スタックは空ではないと判定するため、５回目の抽出ループ処理に移行する（ステップＳ１５２２；Ｎｏ→ステップＳ１５１３）。
【００８７】
続いて、禁止組合せ該当部分抽出部１１３３は、５回目の抽出ループ処理を開始し、ステップＳ１５１３において、スタックのトップに格納されたノード、即ち、葉ノードＬＮ２を変数ｎｏｄｅに代入する。続いて、禁止組合せ該当部分抽出部１１３３は、この変数ｎｏｄｅに対応する葉ノードＬＮ２の属性に“禁止関連”を付加すると（ステップＳ１５１４）、ステップＳ１５１５で、この葉ノードＬＮ２に未処理の子ノードが存在するか否かを判定する。
【００８８】
ここで、葉ノードＬＮ２には、未処理の子ノードが存在しないため、禁止組合せ該当部分抽出部１１３３は、ステップＳ１５１６でスタックをポップする。そして、禁止組合せ該当部分抽出部１１３３は、ステップＳ１５２２の処理の結果、スタックは空ではないと判定するため、６回目の抽出ループ処理に移行する（ステップＳ１５２２；Ｎｏ→ステップＳ１５１３）。
【００８９】
続いて、禁止組合せ該当部分抽出部１１３３は、６回目の抽出ループ処理を開始し、ステップＳ１５１３において、スタックのトップに格納されたノード、即ち、部品種別ノードＣＮ２を変数ｎｏｄｅに代入する。続いて、禁止組合せ該当部分抽出部１１３３は、この変数ｎｏｄｅに対応する部品種別ノードＣＮ２の属性に“禁止関連”を付加すると（ステップＳ１５１４）、ステップＳ１５１５で、この部品種別ノードＣＮ２に未処理の子ノードが存在するか否かを判定する。
【００９０】
ここで、部品種別ノードＣＮ２には、未処理の子ノードが存在しないため、禁止組合せ該当部分抽出部１１３３は、ステップＳ１５１６でスタックをポップする。そして、禁止組合せ該当部分抽出部１１３３は、ステップＳ１５２２の処理の結果、スタックは空ではないと判定するため、７回目の抽出ループ処理に移行する（ステップＳ１５２２；Ｎｏ→ステップＳ１５１３）。
【００９１】
続いて、禁止組合せ該当部分抽出部１１３３は、７回目の抽出ループ処理を開始し、ステップＳ１５１３において、スタックのトップに格納されたノード、即ち、部品種別ノードＣＮ１を変数ｎｏｄｅに代入する。続いて、禁止組合せ該当部分抽出部１１３３は、この変数ｎｏｄｅに対応する部品種別ノードＣＮ１の属性に“禁止関連”を付加すると（ステップＳ１５１４）、ステップＳ１５１５で、この部品種別ノードＣＮ１に未処理の子ノードが存在するか否かを判定する。
【００９２】
ここで、部品種別ノードＣＮ１には、未処理の子ノード（部品種別ノードＣＮ３）が存在するため、禁止組合せ該当部分抽出部１１３３は、部品種別ノードＣＮ３を変数ｃｈｉｌｄに代入する（ステップＳ１５１５；Ｙｅｓ→ステップ１５１７）。
【００９３】
続いて、禁止組合せ関連性検査部１１３４は、ステップＳ１５１８１の処理の結果、変数ｃｈｉｌｄに対応する部品種別ノードＣＮ３の親ノード、即ち、部品種別ノードＣＮ１の商品種別｛ＣＰＵ｝が、禁止組合せデータに含まれていると判定する（ステップＳ１５１８１；Ｙｅｓ）。また、禁止組合せ関連性検査部１１３４は、ステップＳ１５１８１の処理の結果、部品種別ノードＣＮ１から部品種別ノードＣＮ３にかけて条件指定された部品｛ＣＰＵ１、ＣＰＵ２｝と、禁止組合せデータで規定された部品｛ＣＰＵ０｝と、に共通する部品がないと判定する（ステップＳ１５１８２；Ｎｏ）。
【００９４】
そのため、禁止組合せ関連性検査部１１３４は、ステップＳ１５１８３において、禁止組合せに該当しないことを指示する情報“関連無し”を禁止組合せ該当部分抽出部１１３３に出力する。
【００９５】
次いで、禁止組合せ該当部分抽出部１１３３では、ステップＳ１５１９の処理の結果、“関連無し”と判定するため（ステップＳ１５１９；Ｎｏ）、変数ｃｈｉｌｄに対応する部品種別ノードＣＮ３の属性に“訪問済み”を付加する（ステップＳ１５２１）。そして、禁止組合せ該当部分抽出部１１３３は、ステップＳ１５２２の処理の結果、スタックは空ではないと判定するため、８回目の抽出ループ処理に移行する（ステップＳ１５２２；Ｎｏ→ステップＳ１５１３）。
【００９６】
続いて、禁止組合せ該当部分抽出部１１３３は、８回目の抽出ループ処理を開始し、ステップＳ１５１３において、スタックのトップに格納されたノード、即ち、部品種別ノードＣＮ１を変数ｎｏｄｅに代入する。続いて、禁止組合せ該当部分抽出部１１３３は、この変数ｎｏｄｅに対応する部品種別ノードＣＮ１の属性に“禁止関連”を付加すると（ステップＳ１５１４）、ステップＳ１５１５で、この部品種別ノードＣＮ１に未処理の子ノードが存在するか否かを判定する。
【００９７】
ここで、部品種別ノードＣＮ１には、未処理の子ノードが存在しないため、禁止組合せ該当部分抽出部１１３３は、ステップＳ１５１６でスタックをポップする。続いて、禁止組合せ該当部分抽出部１１３３は、ステップＳ１５２２の処理の結果、スタックは空と判定するため、各ノードの属性から“訪問済み”を削除した後（ステップＳ１５２３）、禁止組合せ該当部分抽出処理を終了する。
【００９８】
図１０は、図３に示した部品組合せルールに対し、上述した禁止組合せ該当部分抽出処理を施した後の状態を模式的に示した図である。図１０において、破線で囲んだ部分は、禁止組合せ該当部分抽出処理により抽出された禁止組合せデータに関連する部分木を示しており、属性に“禁止関連”が付加されたノード（部品種別ノードＣＮ１、部品種別ノードＣＮ２、葉ノードＬＮ１、葉ノードＬＮ２）から構成されている。なお、葉ノードＬＮ２については、その属性に“分離”が併せて付加されている。
【００９９】
次に、図１１を参照して、ステップＳ１６の禁止組合せ分離処理について説明する。図１１は、禁止組合せ分離処理の手順を示したフローチャートである。なお、本処理は、ステップＳ１５の禁止組合せ該当部分抽出処理が施された後の部品組合せルールに基づいて行われるものである。
【０１００】
まず、禁止組合せ分離部１１３５は、部品組合せルールのトップノードに対応するノードの属性に、処理対象としたことを指示する情報“訪問済み”を付加する（ステップＳ１６１１）。次いで、禁止組合せ分離部１１３５は、ＲＡＭ１５に確保されたスタックに、このトップノードに対応するノードをプッシュ（ｐｕｓｈ）する（ステップＳ１６１２）。
【０１０１】
続いて、禁止組合せ分離部１１３５は、スタックのトップに格納されたノードを変数ｎｏｄｅに代入すると（ステップＳ１６１３）、このｎｏｄｅに対応するノードに未処理で且つ属性に“禁止関連”が付加された子ノードが存在するか否かを判定する（ステップＳ１６１４）。
【０１０２】
ここで、未処理で且つ属性に“禁止関連”が付加された子ノードは存在しないと判定した場合（ステップＳ１６１４；Ｎｏ）、禁止組合せ分離部１１３５は、スタックをポップした後（ステップＳ１６１６）、ステップＳ１６２５の処理へと直ちに移行する。
【０１０３】
一方、ステップＳ１６１４において、未処理で且つ属性に“禁止関連”が付加された子ノードが存在すると判定した場合には（ステップＳ１６１４；Ｙｅｓ）、禁止組合せ分離部１１３５は、該当する子ノードのうち、一の子ノードを変数ｃｈｉｌｄに代入する（ステップＳ１６１６）。
【０１０４】
次いで、禁止組合せ分離部１１３５は、変数ｃｈｉｌｄに対応するノードの属性に“分離”が付加されているか否かを判定する（ステップＳ１６１７）。ここで、属性に“分離”が付加されていないと判定した場合には（ステップＳ１６１７；Ｎｏ）、ステップＳ１６２３の処理に直ちに移行する。
【０１０５】
一方、ステップＳ１６１７において、属性に“分離”が付加されていると判定した場合には（ステップＳ１６１７；Ｙｅｓ）、禁止組合せ分離部１１３５は、変数ｃｈｉｌｄに対応するノードの子孫ノードからなる部分木を複製する（ステップＳ１６１８）。
【０１０６】
続いて、禁止組合せ分離部１１３５は、ステップＳ１６１８で複製した部分木を構成する各ノードの属性に付加された“禁止関連”及び“分離”を削除する（ステップＳ１６１９）。次に、禁止組合せ分離部１１３５は、変数ｎｏｄｅに対応するノードから変数ｃｈｉｌｄに対応するノードまでに条件指定された部品のうち、禁止組合せと共通しない部品のみを有した枝Ｂを新たに生成し、この枝Ｂにより変数ｎｏｄｅに対応するノードと複製した部分木のトップノードとを接続する（ステップＳ１６２０）。
【０１０７】
次いで、禁止組合せ分離部１１３５は、変数ｎｏｄｅに対応するノードから変数ｃｈｉｌｄに対応するノードまでに条件指定された部品が、禁止組合せと共通の部品のみとなるよう、両ノードを接続する枝Ｂから共通しない部品を削除するとともに（ステップＳ１６２１）、変数ｃｈｉｌｄに対応するノードの属性から“分離”を削除する（ステップＳ１６２２）。
【０１０８】
次に、禁止組合せ分離部１１３５は、変数ｃｈｉｌｄに対応するノードをスタックにプッシュした後（ステップＳ１６２３）、この変数ｃｈｉｌｄに対応するノードの属性に“訪問済み”を付加する（ステップＳ１６２４）。
【０１０９】
続いて、禁止組合せ分離部１１３５は、スタックの状態を確認し、スタックが空か否かを判定する（ステップＳ１６２５）。ここで、スタックが空ではないと判定した場合には（ステップＳ１６２５；Ｎｏ）、ステップＳ１６１３の処理へと再び戻り、スタックのトップ（先頭）に格納されたノードをｎｏｄｅに代入する。以下、ステップＳ１６１３〜ステップＳ１６２５までの一連の処理を「分離ループ処理」と呼ぶ。
【０１１０】
一方、ステップＳ１６２５において、スタックが空と判定した場合には（ステップＳ１６２５；Ｙｅｓ）、各ノードの属性に付加された“訪問済み”を削除した後（ステップＳ１６２６）、図７のステップＳ１７の処理へと移行する。
【０１１１】
ここで、図１０で示した部品組合せルールに対し、上記したステップＳ１６の禁止組合せ分離処理を適用した場合の具体例について説明する。なお、ステップＳ１４において、｛ＣＰＵ０｝×｛ＨＤＤ０、ＨＤＤ１｝が禁止組合せデータとして抽出されたものとする。
【０１１２】
まず、禁止組合せ分離部１１３５は、ステップＳ１６１１で部品組合せルールのトップノードである部品種別ノードＣＮ１の属性に“訪問済み”を付加すると、ステップＳ１６１２では、この部品種別ノードＣＮ１をスタックにプッシュする。
【０１１３】
続いて、禁止組合せ分離部１１３５は、１回目の分離ループ処理を開始すると、ステップＳ１６１３において、スタックのトップに格納されたノード、即ち、部品種別ノードＣＮ１を変数ｎｏｄｅに代入する。続いて、禁止組合せ分離部１１３５は、変数ｎｏｄｅに対応する部品種別ノードＣＮ１に未処理で且つ属性に“禁止関連”が付加された子ノードが存在するか否かを判定する（ステップＳ１６１４）。
【０１１４】
ここで、部品種別ノードＣＮ１には、未処理で且つ属性に“禁止関連”が付加された子ノード（部品種別ノードＣＮ２）が存在するため、禁止組合せ分離部１１３５は、ステップＳ１６１４の判定の結果、部品種別ノードＣＮ２を変数ｃｈｉｌｄに代入する（ステップＳ１６１４；Ｙｅｓ→ステップＳ１６１６）。
【０１１５】
続いて、禁止組合せ分離部１１３５は、ステップＳ１６１８の処理の結果、ｃｈｉｌｄに対応する部品種別ノードＣＮ２の属性に“分離”が存在しないと判定するため、この部品種別ノードＣＮ２をスタックにプッシュする（ステップＳ１６１７；Ｎｏ→ステップＳ１６２３）。
【０１１６】
そして、禁止組合せ分離部１１３５は、ステップＳ１６２４でｃｈｉｌｄに代入した部品種別ノードＣＮ２の属性に“訪問済み”を付加した後、ステップＳ１６２５の処理の結果、スタックは空ではないと判定するため、２回目の分離ループ処理に移行する（ステップＳ１６２５；Ｎｏ→ステップＳ１６１３）。
【０１１７】
続いて、禁止組合せ分離部１１３５は、２回目の分離ループ処理を開始すると、ステップＳ１６１３において、スタックのトップに格納されたノード、即ち、部品種別ノードＣＮ２を変数ｎｏｄｅに代入する。続いて、禁止組合せ分離部１１３５は、変数ｎｏｄｅに対応する部品種別ノードＣＮ２に未処理で且つ属性に“禁止関連”が付加された子ノードが存在するか否かを判定する（ステップＳ１６１４）。
【０１１８】
ここで、部品種別ノードＣＮ２には、未処理で且つ属性に“禁止関連”が付加された子ノード（葉ノードＬＮ１、ＬＮ２）が存在するため、禁止組合せ分離部１１３５は、ステップＳ１６１４の判定の結果、葉ノードＬＮ１を変数ｃｈｉｌｄに代入する（ステップＳ１６１４；Ｙｅｓ→ステップ１６１６）。
【０１１９】
続いて、禁止組合せ分離部１１３５は、ステップＳ１６１７の処理の結果、変数ｃｈｉｌｄに対応する葉ノードＬＮ１の属性に“分離”が存在しないと判定するため、この葉ノードＬＮ１をスタックにプッシュする（ステップＳ１６１７；Ｎｏ→ステップＳ１６２３）。
【０１２０】
禁止組合せ分離部１１３５は、変数ｃｈｉｌｄに代入した葉ノードＬＮ１の属性に“訪問済み”を付加し（ステップＳ１６２４）、ステップＳ１６２５の処理の結果、スタックは空ではないと判定するため、３回目の分離ループ処理に移行する（ステップＳ１６２５；Ｎｏ→ステップＳ１６１３）。
【０１２１】
続いて、禁止組合せ分離部１１３５は、３回目の分離ループ処理を開始すると、ステップＳ１６１３において、スタックのトップに格納されたノード、即ち、葉ノードＬＮ１を変数ｎｏｄｅに代入する。続いて、禁止組合せ分離部１１３５は、変数ｎｏｄｅに対応する葉ノードＬＮ１に未処理で且つ属性に“禁止関連”が付加された子ノードが存在するか否かを判定する（ステップＳ１６１４）。
【０１２２】
ここで、葉ノードＬＮ１には、未処理で且つ属性に“禁止関連”が付加された子ノードが存在しないため、禁止組合せ分離部１１３５は、ステップＳ１６１５でスタックをポップする。そして、禁止組合せ分離部１１３５は、ステップＳ１６２５の処理の結果、スタックは空ではないと判定するため、４回目の分離ループ処理に移行する（ステップＳ１６２５；Ｎｏ→ステップＳ１６１３）。
【０１２３】
続いて、禁止組合せ分離部１１３５は、４回目の分離ループ処理を開始すると、ステップＳ１６１３において、スタックのトップに格納されたノード、即ち、部品種別ノードＣＮ２を変数ｎｏｄｅに代入する。続いて、禁止組合せ分離部１１３５は、変数ｎｏｄｅに対応する部品種別ノードＣＮ２に未処理で且つ属性に“禁止関連”が付加された子ノードが存在するか否かを判定する（ステップＳ１６１４）。
【０１２４】
ここで、部品種別ノードＣＮ２には、未処理で且つ属性に“禁止関連”が付加された子ノード（葉ノードＬＮ２）が存在するため、禁止組合せ分離部１１３５は、ステップＳ１６１４の判定の結果、葉ノードＬＮ２を変数ｃｈｉｌｄに代入する（ステップＳ１６１４；Ｙｅｓ→ステップ１６１６）。
【０１２５】
続いて、禁止組合せ分離部１１３５は、ステップＳ１６１７の処理の結果、変数ｃｈｉｌｄに対応する葉ノードＬＮ２の属性に“分離”が存在すると判定するため、この葉ノードＬＮ２の子孫からなる部分木を複製する（ステップＳ１６１７；Ｙｅｓ→ステップＳ１６１８）。なお、図１０の例の場合、葉ノードＬＮ２に子ノードは存在しないため、葉ノードＬＮ２のみが複製されることになる。
【０１２６】
禁止組合せ分離部１１３５は、ステップＳ１６１８で複製した部分木を構成する各ノードの属性から“禁止関連”及び“分離”を削除する（ステップＳ１６１９）。次に、禁止組合せ分離部１１３５は、変数ｎｏｄｅに対応する部品種別ノードＣＮ２から変数ｃｈｉｌｄに対応する葉ノードＬＮ２までに条件指定された部品｛ＨＤＤ１、ＨＤＤ２｝のうち、禁止組合せと共通しない部品｛ＨＤＤ２｝のみを有した枝Ｂを新たに生成し、この枝Ｂにより部品種別ノードＣＮ２と複製した部分木のトップノードとを接続する（ステップＳ１６２０）。
【０１２７】
次いで、禁止組合せ分離部１１３５は、変数ｎｏｄｅに対応する部品種別ノードＣＮ２から変数ｃｈｉｌｄに対応する葉ノードＬＮ２までに条件指定された部品｛ＨＤＤ１、ＨＤＤ２｝が、禁止組合せと共通の部品｛ＨＤＤ１｝のみとなるよう、共通しない部品｛ＨＤＤ２｝を、部品種別ノードＣＮ２と葉ノードＬＮ２とを接続する枝Ｂから削除する（ステップＳ１６２１）。また、禁止組合せ分離部１１３５は、変数ｃｈｉｌｄに対応する葉ノードＬＮ２の属性から“分離”を削除する（ステップＳ１６２２）。
【０１２８】
次に、禁止組合せ分離部１１３５は、変数ｃｈｉｌｄに対応する葉ノードＬＮ２をスタックにプッシュした後（ステップＳ１６２３）、この変数ｃｈｉｌｄに対応する葉ノードＬＮ２の属性に“訪問済み”を付加する（ステップＳ１６２４）。そして、禁止組合せ分離部１１３５は、ステップＳ１６２５の処理の結果、スタックは空ではないと判定するため、５回目の分離ループ処理に移行する（ステップＳ１６２５；Ｎｏ→ステップＳ１６１３）。
【０１２９】
続いて、禁止組合せ分離部１１３５は、５回目の分離ループ処理を開始すると、ステップＳ１６１３において、スタックのトップに格納されたノード、即ち、葉ノードＬＮ２を変数ｎｏｄｅに代入する。続いて、禁止組合せ分離部１１３５は、変数ｎｏｄｅに対応する葉ノードＬＮ２に未処理で且つ属性に“禁止関連”が付加された子ノードが存在するか否かを判定する（ステップＳ１６１４）。
【０１３０】
ここで、葉ノードＬＮ２には、未処理で且つ属性に“禁止関連”が付加された子ノードが存在しないため、禁止組合せ分離部１１３５は、ステップＳ１６１４の判定の結果、ステップＳ１６１５でスタックをポップする。そして、禁止組合せ分離部１１３５は、ステップＳ１６２５の処理の結果、スタックは空ではないと判定するため、６回目の分離ループ処理に移行する（ステップＳ１６２５；Ｎｏ→ステップＳ１６１３）。
【０１３１】
続いて、禁止組合せ分離部１１３５は、６回目の分離ループ処理を開始すると、ステップＳ１６１３において、スタックのトップに格納されたノード、即ち、部品種別ノードＣＮ２を変数ｎｏｄｅに代入する。続いて、禁止組合せ分離部１１３５は、変数ｎｏｄｅに対応する部品種別ノードＣＮ２に未処理で且つ属性に“禁止関連”が付加された子ノードが存在するか否かを判定する（ステップＳ１６１４）。
【０１３２】
ここで、部品種別ノードＣＮ２には、未処理で且つ属性に“禁止関連”が付加された子ノードが存在しないため、禁止組合せ分離部１１３５は、ステップＳ１６１４の判定の結果、ステップＳ１６１５でスタックをポップする。そして、禁止組合せ分離部１１３５は、ステップＳ１６２５の処理の結果、スタックは空ではないと判定するため、７回目の分離ループ処理に移行する（ステップＳ１６２５；Ｎｏ→ステップＳ１６１３）。
【０１３３】
続いて、禁止組合せ分離部１１３５は、７回目の分離ループ処理を開始すると、ステップＳ１６１３において、スタックのトップに格納されたノード、即ち、部品種別ノードＣＮ１を変数ｎｏｄｅに代入する。続いて、禁止組合せ分離部１１３５は、変数ｎｏｄｅに対応する部品種別ノードＣＮ１に未処理で且つ属性に“禁止関連”が付加された子ノードが存在するか否かを判定する（ステップＳ１６１４）。
【０１３４】
ここで、部品種別ノードＣＮ１には、未処理で且つ属性に“禁止関連”が付加された子ノードが存在しないため、禁止組合せ分離部１１３５は、ステップＳ１６１４の判定の結果、ステップＳ１６１５でスタックをポップする。そして、禁止組合せ分離部１１３５は、ステップＳ１６２５の処理の結果、スタックは空と判定するため、各ノードの属性から“訪問済み”を削除した後（ステップＳ１６２６）、禁止組合せ分離処理を終了する。
【０１３５】
図１２は、図１０に示した部品組合せルールに対し、上述した禁止組合せ分離処理を施した後の状態を模式的に示した図である。図１２において、破線で囲んだ部分は、禁止組合せ分離処理の分離に関わった部分を示している。ここで、葉ノードＬＮ５が、上述した４回目の分離ループ処理により図１０の葉ノードＬＮ２から分離されたノードであって、禁止組合せの部品を含まない枝Ｂにより、親ノード（部品種別ノードＣＮ２）と接続されている。
【０１３６】
図７に戻り、禁止マーク付加部１１３６は、ステップＳ１６の処理後の部品組合せルールに含まれた全ての葉ノードＬＮを走査し、その属性に“禁止関連”が付加された葉ノードＬＮについては、そのノード名を禁止組合せであることを明示する名称に変更する（ステップＳ１７）。なお、本実施形態では、属性が“禁止関連”であり且つ製品コード割り当て済みの葉ノードについては、そのノード名に「（禁止）」を追加し、属性が“禁止関連”であり且つノード名が「製品コード未割り当て」の葉ノードについては、そのノード名を「禁止」に変更するものとするが、この例に限らないものとする。
【０１３７】
続いて、表示制御部１１３７は、ステップＳ１７の処理後の部品組合せルールを木構造の状態で表示させ（ステップＳ１８）、本処理を終了する。
【０１３８】
図１３は、上述したルール閲覧処理により表示部１３に表示された部品組合せルールの一例を示した図である。なお、同図では、図１２で示した部品組合せルールに対し、上述したステップＳ１７の処理が施された後の表示結果を示している。
【０１３９】
図１３に示したように、図１２で示した葉ノードＬＮ（葉ノードＬＮ１〜ＬＮ５）のうち、属性に“禁止関連”が付加された葉ノードＬＮ１、ＬＮ２については、そのノード名に禁止組合せである旨が明示されている。具体的に、葉ノードＬＮ１については、「製品コード未割り当て」の葉ノードであるため、ノード名が「禁止」に変更されている。また、葉ノードＬＮ２については、製品コード未割り当て済みの葉ノードであるため、そのノード名中に「（禁止）」が追加されている。
【０１４０】
以上のように、本実施形態の情報管理支援装置１００によれば、製品仕様の選定にかかる複数の部品の組合せを規定した木構造の部品組合せルールのうち、禁止組合せデータで規定された除外すべき部品と一致すると判定された枝Ｂを、一致した部品のみを定義する枝Ｂと不一致の部品のみを定義する枝Ｂとに分離し、禁止組合せデータの部品組合せにかかる葉ノードが表す製品コードに禁止マークを付加した状態で表示する。これにより、ユーザは部品組合せルールと禁止組合せデータとの整合性を容易に確認することが可能となり、この表示された部品組合せルールに基づいてルールの編集を行うことが可能となるため、部品組合せルールの管理を効率的に行うことができる。
【０１４１】
［第２の実施形態］
第２の実施形態では、第１の実施形態で説明したルール閲覧処理後の部品組合せルール、即ち表示部１３に表示された部品組合せルールに基づいて、この部品組合せルールの編集を行う構成について説明する。具体的には、部品組合せルールに対する編集として、特定の部品名に対し所望する製品コードを割り当てることを可能にした情報管理支援装置２００について説明する。なお、上述した第１の実施形態と同様の構成要素については同様の符号を付与し、その説明は省略する。
【０１４２】
図１４は、情報管理支援装置２００の機能構成を示したブロック図である。図１４に示したように、情報管理支援装置２００は、ルール表示要求受付部１１１と、ルール読込部１１２と、禁止組合せ結合部１１３と、ルール編集要求入力部２１１と、ルール編集部２１２と、禁止組合せ除去部２１３と、ルールＤＢ更新部２１４と、を備えている。
【０１４３】
ルール編集要求入力部２１１は、操作部１２を介して指示される、部品組合せルールの編集要求を受け付け、その指示内容をルール編集部２１２に通知する。
【０１４４】
ルール編集部２１２は、コード追加部２１２１を有し、このコード追加部２１２１の機能により、ルール編集要求入力部２１１で受け付けられた製品コードの追加にかかる指示内容に基づいて、ユーザから指示された特定の部品に対し指定された製品コードの割り当てを行う。
【０１４５】
禁止組合せ除去部２１３は、ルール編集部２１２により禁止組合せデータが組み込まれた状態の部品組合せルールを本来のフォーマットに変換するとともに、葉ノードＬＮのノード名から禁止組合せにかかる表示を除去する。また、ルールＤＢ更新部２１４は、禁止組合せ除去部２１３による処理後の部品組合せルールをルールＤＢ１７１に書き込み、ルールＤＢの更新を行う。
【０１４６】
以下、図１５を参照して、本実施形態の情報管理支援装置２００の動作について説明する。図１５は、情報管理支援装置２００により実行される部品組合せルール編集処理の手順を示したフローチャートである。なお、本処理の前提として、上述したルール閲覧処理の処理結果（例えば、図１３参照）が表示部１３に表示されているものとする。また、表示される部品組合せルールには、「製品コード未割り当て」の葉ノードＬＮが少なくとも一つ存在するものとし、当該葉ノードＬＮに対し、ユーザから操作部１２を介して割り当てを所望する製品コードが指定されるものとする。
【０１４７】
まず、ルール編集要求入力部２１１は、「製品コード未割り当て」の葉ノードＬＮの親ノードとなる部品種別ノードＣＮのうち、特定の部品種別ノードＣＮを選択する指示情報を受け付けると、この選択された部品種別ノードＣＮをルール編集部２１２に通知する（ステップＳ２１）。以下、ステップＳ２１で選択された部品種別ノードＣＮをノードＮで表す。
【０１４８】
次に、ルール編集要求入力部２１１は、ステップＳ２１で選択されたノードＮと、当該ノードＮの子ノードとなる「製品コード未割り当て」の葉ノードＬＮと、を接続する枝Ｂの部品から何れかの部品を指定する指示情報を受け付けると、この指定された部品をルール編集部２１２に通知する（ステップＳ２２）。以下、ステップＳ２２で指定された一又は複数の部品を集合Ｙで表す。
【０１４９】
続いて、ルール編集要求入力部２１１は、割り当て対象となる製品コードを指定する指示情報を受け付けると、この製品コードをルール編集部２１２に通知する（ステップＳ２３）。以下、ステップＳ２３で指定された製品コードを製品コードＣで表す。
【０１５０】
コード追加部２１２１では、ノードＮ、集合Ｙ及び製品コードＣがルール編集要求入力部２１１から通知されると、ノードＮと集合Ｙとに基づいて、この集合Ｙにかかる枝Ｂを部品組合せルールから特定する（ステップＳ２４）。以下、ステップＳ２４で特定された枝Ｂを枝ＢＹと表し、この枝ＢＹに定義された全ての部品を集合Ｘで表す。
【０１５１】
次いで、コード追加部２１２１は、禁止組合せ結合部１１３で処理された部品組合せルールを参照し、ノードＮの下に製品コードＣと同じ製品コードを表す葉ノードＬＮが存在するか否かを判定する（ステップＳ２５）。
【０１５２】
ステップＳ２５において、製品コードＣと一致する葉ノードＬＮが存在すると判定した場合（ステップＳ２５；Ｙｅｓ）、コード追加部２１２１は、該当する葉ノードＬＮの枝Ｂに集合Ｙに含まれる部品を追加した後（ステップＳ２６）、ステップＳ２８の処理に移行する。
【０１５３】
一方、ステップＳ２５において、製品コードＣと一致する葉ノードＬＮが存在しないと判定した場合には（ステップＳ２５；Ｎｏ）、コード追加部２１２１は、ノードＮの下に製品コードＣを表す葉ノードＬＮを新たに生成し、この両ノード間を集合Ｙに含まれる部品を定義する枝Ｂで接続した後（ステップＳ２７）、ステップＳ２８の処理に移行する。
【０１５４】
続いて、コード追加部２１２１は、集合Ｘに含まれる部品と、集合Ｙに含まれる部品との差集合Ｘ−Ｙを算出し、この差集合Ｘ−Ｙが空集合か否か判定する（ステップＳ２８）。ここで、差集合Ｘ−Ｙが空集合と判定した場合には（ステップＳ２８；Ｙｅｓ）、コード追加部２１２１は、枝ＢＹとこの枝ＢＹに接続された葉ノードＬＮとを削除し（ステップＳ２９）、ステップＳ３１の処理に移行する。
【０１５５】
また、ステップＳ２８において、差集合Ｘ−Ｙが空集合でないと判定した場合には（ステップＳ２８；Ｎｏ）、コード追加部２１２１は、枝ＢＹに定義された部品（集合Ｘ）を、差集合Ｘ−Ｙの部品に変更し（ステップＳ３０）、ステップＳ３１の処理に移行する。
【０１５６】
ここで、図１６〜図１９を参照し、上述したステップＳ２１〜Ｓ３０迄の処理の動作を、具体例を用いて説明する。図１６は、ルール閲覧処理後に表示部１３に表示された部品組合せルールの一例を示した図である。
【０１５７】
本処理の実行にあたり、ユーザから操作部１２を介し、表示部１３に表示された部品組合せルールに基づいて、上述したノードＮ、集合Ｙ及び製品コードＣが指示される。なお、図１６において「ユーザ操作１」は、製品コードの追加にかかるノードＮとして「部品種別ノードＣＮ３」が選択されたことを意味しており、「ユーザ操作２」は、ノードＮについて製品コードの割り当て対象となる集合Ｙとして「ＤＶＤ−Ｍｕｌｔｉ  Ｄｒｉｖｅ」が指定されたことを示している。また、「ユーザ操作３」は、割り当てを行う製品コードＣとして「コード０４」が指定されたことを示している。なお、この場合、部品種別ノードＣＮ３と、葉ノードＬＮ４とを繋ぐ枝Ｂが枝ＢＹとなり、集合Ｘは「ＤＶＤ−Ｍｕｌｔｉ  Ｄｒｉｖｅ」となる。
【０１５８】
図１６に示したユーザ操作１〜３の条件の時、コード追加部２１２１は、ステップＳ２５において、製品コードＣと一致する葉ノードＬＮが存在しないと判定するため（ステップＳ２５；Ｎｏ）、部品種別ノードＣＮ３の下に製品コードＣを表す葉ノードＬＮを新たに生成し、この両ノード間を集合Ｙに含まれた部品を定義する枝Ｂで接続する（ステップＳ２７）。
【０１５９】
また、コード追加部２１２１は、ステップＳ２８において、差集合Ｘ−Ｙが空集合と判定するため、枝ＢＹとこの枝ＢＹに接続された葉ノードＬＮ４とを削除する（ステップＳ２８；Ｙｅｓ→ステップＳ２９）。その結果、図１７に示したように、部品種別ノードＣＮ３の下に、製品コード「コード０４」を表す葉ノードＬＮ６が生成され、この葉ノードＬＮ６と部品種別ノードＣＮ３とが部品「ＤＶＤ−Ｍｕｌｔｉ  Ｄｒｉｖｅ」を定義した枝Ｂで接続されることになる。
【０１６０】
また、図１８は、ルール閲覧処理後に表示部１３に表示された部品組合せルールの他の例を示した図である。なお、図１８では、図１６に示した部品種別ノードＣＮ３に、「コード０３」を表す葉ノードＬＮ３、「コード０４」を表す葉ノードＬＮ７、「製品未割り当て」を表す葉ノードＬＮ８の夫々が、「ｅｌｓｅ」、「ＣＤ−ＲＯＭ  Ｄｒｉｖｅ」、「ＤＶＤ−Ｍｕｌｔｉ  Ｄｒｉｖｅ」を定義する枝Ｂで接続された木構造を有している。
【０１６１】
ここで、「ユーザ操作１」は、製品コードの追加にかかるノードＮとして「部品種別ノードＣＮ３」が選択されたことを意味しており、「ユーザ操作２」は、ノードＮについて製品コードの割り当て対象となる集合Ｙとして「ＤＶＤ−Ｍｕｌｔｉ  Ｄｒｉｖｅ」が指定されたことを示している。また、「ユーザ操作３」は、割り当てを行う製品コードＣとして「コード０４」が指定されたことを示している。なお、この場合、部品種別ノードＣＮ３と、葉ノードＬＮ８とを繋ぐ枝Ｂが枝ＢＹとなり、集合Ｘは「ＤＶＤ−Ｍｕｌｔｉ  Ｄｒｉｖｅ」となる。
【０１６２】
図１８に示したユーザ操作１〜３の条件の時、コード追加部２１２１は、ステップＳ２４において、製品コードＣと一致する葉ノードＬＮが存在すると判定するため（ステップＳ２５；Ｙｅｓ）、該当する葉ノードＬＮ７の枝Ｂに集合Ｙに含まれる部品「ＤＶＤ−Ｍｕｌｔｉ  Ｄｒｉｖｅ」を追加する（ステップＳ２６）。
【０１６３】
また、コード追加部２１２１は、ステップＳ２８において、差集合Ｘ−Ｙが空集合と判定するため、枝ＢＹとこの枝ＢＹに接続された葉ノードＬＮ８とを削除する（ステップＳ２８；Ｙｅｓ→ステップＳ２９）。その結果、図１９に示したように、部品種別ノードＣＮ３と葉ノードＬＮ７とを接続する枝Ｂに、部品「ＣＤ−ＲＯＭ  Ｄｒｉｖｅ」と「ＤＶＤ−Ｍｕｌｔｉ  Ｄｒｉｖｅ」とが定義されることになる。
【０１６４】
図１５に戻り、禁止組合せ除去部２１３は、ルール編集部２１２により処理が施された部品組合せルールに対し、禁止組合せ除去処理を実行する（ステップＳ３１）。以下、図２０を参照して、ステップＳ３１の禁止組合せ除去処理について説明する。
【０１６５】
図２０は、禁止組合せ除去処理の手順を示したフローチャートである。まず、禁止組合せ除去部２１３は、ルール編集部２１２により処理が施された部品組合せルールを走査し、属性に“禁止関連”が負荷された葉ノードＬＮ、即ちノード名に「禁止」又は「（禁止）」が含まれた葉ノードＬＮを検索し、該当する葉ノードＬＮの一つを処理対象とする（ステップＳ３１１）。
【０１６６】
次いで、禁止組合せ除去部２１３は、ステップＳ３１１で処理対象とした葉ノードＬＮについて、当該葉ノードＬＮの親ノードの下に同じ製品コードを表す他の葉ノードＬＮ（兄弟ノード）が存在するか否かを判定する（ステップＳ３１２）。なお、ステップＳ３１２では、「製品コード未割り当て」、即ち「禁止」のノード名が付された葉ノードＬＮについても、ノード名「禁止」の兄弟ノードが存在するか否かを判定するものとする。
【０１６７】
ステップＳ３１２において、同じ製品コードを表す兄弟ノードが存在しないと判定した場合には（ステップＳ３１２；Ｎｏ）、禁止組合せ除去部２１３は、処理対象の葉ノードＬＮのノード名を「製品コード未割り当て」に変更する（ステップＳ３１３）。次いで、禁止組合せ除去部２１３は、処理対象の葉ノードＬＮの属性から、“禁止関連”を削除した後（ステップＳ３１４）、ステップＳ３１７の処理に移行する。
【０１６８】
一方、ステップＳ３１２において、同じ製品コードを表す兄弟ノードが存在すると判定した場合には（ステップＳ３１２；Ｙｅｓ）、禁止組合せ除去部２１３は、この兄弟ノードにかかる枝Ｂ（以下、枝Ｂ’と表す）に、ステップＳ３１１で処理対象とした葉ノードＬＮの枝Ｂが定義する部品を追加する（ステップＳ３１５）。次いで、禁止組合せ除去部２１３は、処理対象の葉ノードＬＮと、この葉ノードＬＮの枝Ｂとを削除し（ステップＳ３１６）、ステップＳ３１７の処理に移行する。
【０１６９】
続くステップＳ３１７において、禁止組合せ除去部２１３は、ノード名に「禁止」が含まれた全ての葉ノードＬＮを処理対象としたか否かを判定し、未処理の葉ノードＬＮが存在すると判定した場合には（ステップＳ３１７；Ｎｏ）、ステップＳ３１１に戻り、ノード名に「禁止」が含まれた次の葉ノードＬＮを処理対象とする。
【０１７０】
一方、ステップＳ３１７において、ノード名に「禁止」が含まれた全ての葉ノードＬＮを処理対象としたと判定した場合には、図１５のステップＳ３２の処理に移行する。
【０１７１】
ここで、図２１、図２２を参照し、上述した禁止組合せ除去処理の動作を、具体例を用いて説明する。
【０１７２】
図２１は、ルール編集部２１２による処理後の部品組合せルールの一例を示した図である。まず、禁止組合せ除去部２１３は、ステップＳ３１１においてルール編集部２１２により処理が施された部品組合せルールを走査すると、ノード名に「禁止」が含まれた葉ノードＬＮ１を処理対象とする。
【０１７３】
この場合、禁止組合せ除去部２１３は、葉ノードＬＮ１の親ノード（部品種別ノードＣＮ２）の下に同じ製品コード（「禁止」）を表す兄弟ノードが存在しないと判定するため（ステップＳ３１２；Ｎｏ）、葉ノードＬＮ１のノード名を「製品コード未割り当て」に変更し、属性から“禁止関連”を削除する（ステップＳ３１３→ステップＳ３１４）。また、ステップＳ３１７において、禁止組合せ除去部２１３は、未処理の葉ノードＬＮが存在すると判定するため（ステップＳ３１７；Ｎｏ）、ステップＳ３１１の処理に再び戻ることになる。
【０１７４】
次に、禁止組合せ除去部２１３は、ステップＳ３１１において、ノード名に「（禁止）」が含まれた葉ノードＬＮ２を処理対象とする。この場合、葉ノードＬＮ２の親ノード（部品種別ノードＣＮ２）の下に、同じ製品コード（コード０１）を表す兄弟ノード（葉ノードＬＮ５）が存在するため、禁止組合せ除去部２１３は、この葉ノードＬＮ５の枝Ｂ’に、葉ノードＬＮ２の枝Ｂが定義する部品（ＨＤＤ１）を追加する（ステップＳ３１２；Ｙｅｓ→ステップＳ３１５）。次いで、禁止組合せ除去部２１３は、葉ノードＬＮ２と、この葉ノードＬＮ２の枝Ｂとを削除する（ステップＳ３１６）。
【０１７５】
そして、禁止組合せ除去部２１３は、ステップＳ３１７において、未処理の葉ノードＬＮが存在しないと判定するため（ステップＳ３１７；Ｙｅｓ）、本処理を終了し、図１５のステップＳ３２の処理に移行する。
【０１７６】
図２２は、図２１の部品組合せルールに対し、上述した禁止組合せ除去処理を行った後の部品組合せルールの状態を示した図である。同図に示したように、葉ノードＬＮ１のノード名が「禁止」から「製品コード未割り当て」へと変更されている。また、葉ノードＬＮ２とこの葉ノードＬＮ２にかかる枝Ｂとが削除されており、従前この枝Ｂに定義されていた部品が、同じ製品コードを表す葉ノードＬＮ５の枝Ｂ’に追加されている。
【０１７７】
図１５に戻り、ルールＤＢ更新部２１４は、ステップＳ３１の禁止組合せ除去処理が施された部品組合せルールをルールＤＢ１７１に書き込むことで、当該部品組合せルールを編集後の状態に更新する（ステップＳ３２）。
【０１７８】
続いて、ルール読込部１１２が、ステップＳ３２で更新された部品組合せルールをルールＤＢ１７１から読み込むと（ステップＳ３３）、禁止組合せ結合部１１３は、この読み込まれた部品組合せルールに部品組合せルール表示処理を施すことで、更新後の部品組合せルールを表示部１３に表示し（ステップＳ３４）、本処理を終了する。なお、ステップＳ３４の部品組合せルール表示処理は、第１の実施形態で説明したステップＳ１３〜Ｓ１８の処理内容と同様であるため、その説明は省略する。
【０１７９】
以上のように、本実施形態の情報管理支援装置２００によれば、表示部１３に表示された部品組合せルールに基づいて、「製品コード未割り当て」の葉ノードＬＮに対し、所望する製品コードを割り当てることができるため、ユーザは部品組合せルールと禁止組合せデータとの整合性を確認しながら、部品組合せルールの編集を効率的に行うことができる。
【０１８０】
［第３の実施形態］
第３の実施形態では、第１の実施形態で説明したルール閲覧処理後の部品組合せルール、即ち表示部１３に表示された部品組合せルールに基づいて、この部品組合せルールの編集を行う構成について説明する。具体的には、部品組合せルールに対する編集として、新たな部品種別ノードＣＮを追加することを可能にした情報管理支援装置３００について説明する。なお、上述した第１、２の実施形態と同様の構成要素については同様の符号を付与し、その説明は省略する。
【０１８１】
図２３は、情報管理支援装置３００の機能構成を示したブロック図である。図２３に示したように、情報管理支援装置３００は、ルール表示要求受付部１１１と、ルール読込部１１２と、禁止組合せ結合部１１３と、ルール編集要求入力部２１１と、ルール編集部３１１と、禁止組合せ除去部２１３と、ルールＤＢ更新部２１４と、を備えている。
【０１８２】
ルール編集部３１１は、ノード追加部３１１１を有し、このノード追加部３１１１の機能により、ルール編集要求入力部２１１で受け付けられた部品種別ノードＣＮの追加にかかる指示内容に基づいて、ユーザから指定された部品種別を表す新たな部品種別ノードＣＮを部品組合せルールに追加する。
【０１８３】
以下、図２４を参照して、本実施形態の情報管理支援装置３００の動作について説明する。図２４は、情報管理支援装置３００により実行される部品組合せルール編集処理の手順を示したフローチャートである。なお、本処理の前提として、上述したルール閲覧処理の結果（例えば、図１３参照）が表示部１３に表示されているものとする。また、表示された部品組合せルールには、「製品コード未割り当て」の葉ノードＬＮが少なくとも一つ存在するものとし、この葉ノードＬＮの親ノードに基づいて、ユーザから操作部１２を介して所望する製品種別が指定されるものとする。
【０１８４】
まず、ルール編集要求入力部２１１は、「製品コード未割り当て」の葉ノードＬＮの親ノードとなる部品種別ノードＣＮのうち、特定の部品種別ノードＣＮを選択する指示情報を受け付けると、この選択された部品種別ノードＣＮをルール編集部３１１に通知する（ステップＳ４１）。以下、ステップＳ４１で選択された部品種別ノードＣＮをノードＮと表す。
【０１８５】
次に、ルール編集要求入力部２１１は、ステップＳ４１で選択されたノードＮと、当該ノードＮの子ノードとなる「製品コード未割り当て」の葉ノードＬＮと、を接続する枝Ｂに定義された部品から、何れかの部品を指定する指示情報を受け付けると、この指定された部品組合せをルール編集部３１１に通知する（ステップＳ４２）。以下、ステップＳ４２で指定された一又は複数の部品を集合Ｙで表す。
【０１８６】
続いて、ルール編集要求入力部２１１は、追加対象となる部品種別を指定する指示情報を、操作部１２を介して受け付けると、この指定された部品種別をルール編集部３１１に通知する（ステップＳ４３）。以下、ステップＳ４３で指定された部品種別を部品種別Ｋと表す。
【０１８７】
ノード追加部３１１１では、ノードＮ、集合Ｙ、部品種別Ｋがルール編集要求入力部２１１から通知されると、ノードＮと集合Ｙとの関係から、集合Ｙにかかる枝Ｂを禁止組合せ結合部１１３で処理された部品組合せルールから特定する（ステップＳ４４）。以下、ステップＳ４４で特定した集合Ｙにかかる枝Ｂを枝ＢＹと表し、この枝ＢＹに定義された全ての部品を集合Ｘで表す。
【０１８８】
次いで、ルール編集部３１１は、集合Ｘに含まれる部品と、集合Ｙに含まれる部品との差集合Ｘ−Ｙを算出し、この差集合Ｘ−Ｙが空集合か否か判定する（ステップＳ４５）。ここで、差集合Ｘ−Ｙが空集合でないと判定した場合には（ステップＳ４５；Ｎｏ）、ノード追加部３１１１は、ノードＮの下に、「製品コード未割り当て」を表す葉ノードＬＮを新たに生成し、差集合Ｘ−Ｙの部品を定義した枝Ｂで両ノードを接続した後（ステップＳ４６）、ステップＳ４７の処理に移行する。
【０１８９】
一方、ステップＳ４５において、差集合Ｘ−Ｙが空集合と判定した場合には（ステップＳ４５；Ｙｅｓ）、ステップＳ４７に直ちに移行し、ノード追加部３１１１は、枝ＢＹに接続された「製品コード未割り当て」の葉ノードＬＮのノード名を、部品種別Ｋに変更することで部品種別ノードＣＮとする（ステップＳ４７）。
【０１９０】
続いて、ノード追加部３１１１は、部品種別Ｋに関係する全ての部品を部品ＤＢ１７２から取得する（ステップＳ４８）。次いで、ノード追加部３１１１は、ステップＳ４７で部品種別を変更した部品種別ノードＣＮの下に、「製品コード未割り当て」を表す葉ノードＬＮを新たに生成し、両ノード間をステップＳ４８で取得した部品群を定義する枝Ｂで接続する（ステップＳ４９）。
【０１９１】
ここで、図２５〜図２８を参照し、上述したステップＳ４１〜Ｓ４９迄の処理の動作を、具体例を用いて説明する。図２５は、ルール閲覧処理後に表示部１３に表示された部品組合せルールの一例を示した図である。
【０１９２】
本処理の実行にあたり、ユーザから操作部１２を介し、表示部１３に表示された部品組合せルールに基づいて、上述したノードＮ、集合Ｙ及び部品種別Ｋが指示される。なお、図２５において「ユーザ操作１」は、新たな部品種別ノードＣＮの追加先となるノードＮとして「部品種別ノードＣＮ３」が選択されたことを意味しており、「ユーザ操作２」は、ノードＮと新たな部品種別ノードＣＮとの間の枝Ｂで定義する部品の集合Ｙとして｛ＤＶＤ−Ｍｕｌｔｉ  Ｄｒｉｖｅ｝が指定されたことを示している。また、「ユーザ操作３」は、追加対象の部品種別Ｋとして「ＨＤＤ」が指定されたことを示している。なお、この場合、部品種別ノードＣＮ３と、葉ノードＬＮ４とを繋ぐ枝Ｂが枝ＢＹとなり、集合Ｘは｛ＤＶＤ−Ｍｕｌｔｉ  Ｄｒｉｖｅ｝となる。
【０１９３】
図２５に示したユーザ操作１〜３の条件の時、ノード追加部３１１１は、ステップＳ４５において、差集合Ｘ−Ｙが空集合と判定するため（ステップＳ４５；Ｙｅｓ）、枝ＢＹに接続された「製品コード未割り当て」の葉ノードＬＮ４のノード名を「ＨＤＤ」に変更することで部品種別ノードＣＮとする（ステップＳ４７）。
【０１９４】
続いて、ノード追加部３１１１は、部品種別「ＨＤＤ」に関係する全ての部品を部品ＤＢ１７２から取得する（ステップＳ４８）。ここで、部品種別「ＨＤＤ」に関係する部品群として｛ＨＤＤ０、ＨＤＤ１、ＨＤＤ２｝が取得されたものとする。次いで、ノード追加部３１１１は、ステップＳ４７で部品種別を変更した部品種別ノードＣＮの下に、「製品コード未割り当て」を表す葉ノードＬＮを新たに生成し、両ノード間をステップＳ４８で取得した部品の集合｛ＨＤＤ０、ＨＤＤ１、ＨＤＤ２｝を定義した枝Ｂで接続する（ステップＳ４９）。
【０１９５】
その結果、図２６に示したように、部品種別ノードＣＮ３の下に存在した葉ノードＬＮ４が、部品種別「ＨＤＤ」を表す部品種別ノードＣＮ４に変更され、この部品種別ノードＣＮ４の下に「製品コード未割り当て」の葉ノードＬＮ９が新たに生成されている。そして、この部品種別ノードＣＮ４と葉ノードＬＮ９とが、｛ＨＤＤ０、ＨＤＤ１、ＨＤＤ２｝を定義した枝Ｂで接続されることになる。
【０１９６】
また、図２７は、ルール閲覧処理後に表示部１３に表示された部品組合せルールの他の例を示した図である。なお、図２７では、図２５に示した葉ノードＬＮ４にかかる枝Ｂに「ＣＤ−ＲＯＭ  Ｄｒｉｖｅ」と「ＤＶＤ−Ｍｕｌｔｉ  Ｄｒｉｖｅ」とが定義された木構造を有している。
【０１９７】
ここで、「ユーザ操作１」は、新たな部品種別ノードＣＮの追加先となるノードＮとして「部品種別ノードＣＮ３」が選択されたことを意味しており、「ユーザ操作２」は、ノードＮと新たな部品種別ノードＣＮとの間の枝Ｂで定義する部品の集合Ｙとして｛ＤＶＤ−Ｍｕｌｔｉ  Ｄｒｉｖｅ｝が指定されたことを示している。また、「ユーザ操作３」は、追加対象の部品種別Ｋとして「ＨＤＤ」が指定されたことを示している。なお、この場合、部品種別ノードＣＮ３と、葉ノードＬＮ４とを繋ぐ枝Ｂが枝ＢＹとなり、集合Ｘは｛ＣＤ−ＲＯＭ  Ｄｒｉｖｅ、ＤＶＤ−Ｍｕｌｔｉ  Ｄｒｉｖｅ｝となる。
【０１９８】
図２７に示したユーザ操作１〜３の条件の時、ノード追加部３１１１は、ステップＳ４５において、差集合Ｘ−Ｙが空集合でないと判定するため（ステップＳ４５；Ｎｏ）、部品種別ノードＣＮ３の下に、「製品コード未割り当て」を表す葉ノードＬＮを新たに生成し、両ノード間を差集合Ｘ−Ｙ｛ＣＤ−ＲＯＭ  Ｄｒｉｖｅ｝を定義する枝Ｂで接続する（ステップＳ４６）。
【０１９９】
次いで、ノード追加部３１１１は、枝ＢＹに接続された「製品コード未割り当て」の葉ノードＬＮ４のノード名を「ＨＤＤ」に変更することで部品種別ノードＣＮとする（ステップＳ４７）。
【０２００】
続いて、ノード追加部３１１１は、部品種別「ＨＤＤ」に関係する全ての部品を部品ＤＢ１７２から取得する（ステップＳ４８）。ここで、部品種別「ＨＤＤ」に関係する部品群として｛ＨＤＤ０、ＨＤＤ１、ＨＤＤ２｝が取得されたものとする。次いで、ノード追加部３１１１は、ステップＳ４７で部品種別を変更した部品種別ノードＣＮの下に、「製品コード未割り当て」を表す葉ノードＬＮを新たに生成し、両ノード間をステップＳ４８で取得した部品の集合｛ＨＤＤ０、ＨＤＤ１、ＨＤＤ２｝を定義した枝Ｂで接続する（ステップＳ４９）。
【０２０１】
その結果、図２８に示したように、枝ＢＹが定義する部品が｛ＣＤ−ＲＯＭ  Ｄｒｉｖｅ｝に変更され、部品種別ノードＣＮ３の下に部品種別「ＨＤＤ」を表す部品種別ノードＣＮ５が新たに生成されており、部品種別ノードＣＮ３とＣＮ５とが、部品「Ｄｒｉｖｅ、ＤＶＤ−Ｍｕｌｔｉ  Ｄｒｉｖｅ」を定義する枝Ｂで接続される。また、既存の葉ノードＬＮ４については、枝ＢＹの定義する部品が「ＣＤ−ＲＯＭ  Ｄｒｉｖｅ」に変更されることで、部品種別ノードＣＮ５との間で分岐が行われている。
【０２０２】
また、部品種別ノードＣＮ５の下に、「製品コード未割り当て」を表す葉ノードＬＮ１０が新たに生成されており、この部品種別ノードＣＮ５と葉ノードＬＮ１０とが、部品「ＨＤＤ０、ＨＤＤ１、ＨＤＤ２」を定義した枝Ｂで接続されることになる。
【０２０３】
図２４に戻り、禁止組合せ除去部２１３は、ステップＳ４９迄の処理が施された部品組合せルールに対し、禁止組合せ除去処理を実行する（ステップＳ５０）。なお、ステップＳ５０の禁止組合せ除去処理は、図２０で説明したステップＳ３１の禁止組合せ除去処理と同様であるため説明は省略する。
【０２０４】
次いで、ルールＤＢ更新部２１４は、ステップＳ５０の禁止組合せ除去処理が施された部品組合せルールをルールＤＢ１７１に書き込むことで、部品組合せルールを編集後の状態に更新する（ステップＳ５１）。
【０２０５】
続いて、ルール読込部１１２が、ステップＳ５１で更新された部品組合せルールをルールＤＢ１７１から読み込むと（ステップＳ５２）、禁止組合せ結合部１１３は、この読み込まれた部品組合せルールに部品組合せルール表示処理を施すことで、更新後の部品組合せルールを表示部１３に表示し（ステップＳ５３）、本処理を終了する。なお、ステップＳ５３の部品組合せルール表示処理は、第１の実施形態で説明したステップＳ１３〜Ｓ１８の処理内容と同様であるため、その説明は省略する。
【０２０６】
以上のように、本実施形態の情報管理支援装置３００によれば、表示部１３に表示された部品組合せルールに基づいて、「製品コード未割り当て」の葉ノードＬＮに対し所望する製品種別を割り当てることで、新たな部品種別ノードＣＮを生成することができるため、ユーザは部品組合せルールと禁止組合せデータとの整合性を確認しながら、部品組合せルールの編集を効率的に行うことができる。
【０２０７】
なお、本実施形態のルール編集部３１１に、第２の実施形態で説明したルール編集部２１２の構成（コード追加部２１２１）を組み込む態様としてもよい。この場合、ノード追加に限らず、ノード追加に伴って生成された葉ノードＬＮに対し、製品コードを追加することが可能となる。
【０２０８】
［第４の実施形態］
第４の実施形態では、第１の実施形態で説明したルール閲覧処理後の部品組合せルール、即ち表示部１３に表示された部品組合せルールに基づいて、この部品組合せルールの編集を行う構成について説明する。具体的には、部品組合せルールに対する編集として、部品組合せルールから特定のルール（部分木）を削除することを可能にした情報管理支援装置４００について説明する。なお、上述した第１、２の実施形態と同様の構成要素については同様の符号を付与し、その説明は省略する。
【０２０９】
図２９は、情報管理支援装置４００の機能構成を示したブロック図である。図２９に示したように、情報管理支援装置４００は、ルール表示要求受付部１１１と、ルール読込部１１２と、禁止組合せ結合部１１３と、ルール編集要求入力部２１１と、ルール編集部４１１と、禁止組合せ除去部２１３と、ルールＤＢ更新部２１４と、を備えている。
【０２１０】
ルール編集部４１１は、ルール削除部４１１１を有し、このルール削除部４１１１の機能により、ルール編集要求入力部２１１で受け付けられた特定のルール（部分木）の削除にかかる指示内容に基づいて、部品組合せルールから指定された部分木の削除を行う。
【０２１１】
以下、図３０を参照して、本実施形態の情報管理支援装置４００の動作について説明する。図３０は、情報管理支援装置４００により実行される部品組合せルール編集処理の手順を示したフローチャートである。なお、本処理の前提として、上述したルール閲覧処理の処理結果（例えば、図１３参照）が表示部１３に表示されているものとする。
【０２１２】
まず、ルール編集要求入力部２１１は、部品組合せルールに含まれたノードのうち、ルール削除の対象となる特定のノードを選択する指示情報を受け付けると、この選択されたノードをルール削除部４１１１に通知する（ステップＳ６１）。以下、選択されたノードをノードＮで表す。
【０２１３】
続いて、ルール編集要求入力部２１１は、ルール削除の実行を指示する指示情報を受け付けると、この旨をルール削除部４１１１に通知する（ステップＳ６２）。
【０２１４】
ルール削除部４１１１は、ルール編集要求入力部２１１からノードＮ及びルール削除を実行する旨が通知されると、ノードＮの親ノードとなるノードを禁止組合せ結合部１１３で処理された部品組合せルールから特定するとともに、この親ノードとノードＮとを結ぶ枝Ｂを特定する（ステップＳ６３）。以下、ステップＳ６３で特定したノードＮの親ノードをノードＰで表す。また、ステップＳ６３で特定した枝Ｂを枝ＢＹで表すとともに、この枝ＢＹに定義された全ての部品を集合Ｘで表す。
【０２１５】
ルール削除部４１１１は、ノードＮの子孫からなる部分木を削除すると（ステップＳ６４）、ノードＰの下に「製品コード未割り当て」を表す葉ノードＬＮが存在するか否かを判定する（ステップＳ６５）。
【０２１６】
ステップＳ６５において、ノードＰの下に「製品コード未割り当て」を表す葉ノードＬＮが存在すると判定した場合（ステップＳ６５；Ｙｅｓ）、ルール削除部４１１１は、ノードＰの下に存在する「製品コード未割り当て」の葉ノードＬＮにかかる枝Ｂに、集合Ｘに含まれた部品を追加する（ステップＳ６６）。続いて、ルール削除部４１１１は、枝ＢＹを削除した後（ステップＳ６７）、ステップＳ６９の処理に移行する。
【０２１７】
一方、ステップＳ６５において、「製品コード未割り当て」を表す葉ノードＬＮが存在しないと判定した場合には（ステップＳ６５；Ｎｏ）、「製品コード未割り当て」を表す葉ノードＬＮを新たに生成し、この葉ノードＬＮを枝ＢＹと接続した後（ステップＳ６８）、ステップＳ６９の処理に移行する。
【０２１８】
ここで、図３１〜図３４を参照し、ステップＳ６１〜Ｓ６８迄の処理の動作を、具体例を用いて説明する。
【０２１９】
図３１は、ルール閲覧処理後に表示部１３に表示された部品組合せルールの一例を示した図である。本処理の実行にあたり、ユーザから操作部１２を介し、表示部１３に表示された部品組合せルールに基づいて、上述したノードＮ及びルール削除の実行が指示される。なお、図３１において「ユーザ操作１」は、削除の対象となるノードＮとして「部品種別ノードＣＮ３」が選択されたことを意味しており、「ユーザ操作２」は、ルール削除の実行が指示されたことを意味している。なお、この場合、部品種別ノードＣＮ１がノードＰとなり、部品種別ノードＣＮ１と部品種別ノードＣＮ３とを繋ぐ枝Ｂが枝ＢＹとなり、集合Ｘは｛ＣＰＵ１、ＣＰＵ２｝となる。
【０２２０】
図３１に示したユーザ操作１、２の条件の時、ルール削除部４１１１は、部品種別ノードＣＮ３の子孫からなる部分木を削除すると（ステップＳ６４）、ステップＳ６５において、部品種別ノードＣＮ１の下に「製品コード未割り当て」を表す葉ノードＬＮが存在しないと判定する（ステップＳ６５；Ｎｏ）。そのため、ルール削除部４１１１は、「製品コード未割り当て」を表す葉ノードＬＮを新たに生成し、この葉ノードＬＮを枝ＢＹと接続する（ステップＳ６８）。
【０２２１】
その結果、図３２に示したように、部品種別ノードＣＮ３の子孫からなる部分木が削除され、また、既存の枝ＢＹに新設された「製品コード未割り当て」を表す葉ノードＬＮ１１が接続されることになる。
【０２２２】
また、図３３は、ステップＳ６１〜Ｓ６８迄の処理の他の動作例を説明するための図であって、ルール閲覧処理後に表示部１３に表示された部品組合せルールの一例を示した図である。
【０２２３】
ここで、「ユーザ操作１」は、削除の対象となるノードＮとして「葉ノードＬＮ３」が選択されたことを意味しており、「ユーザ操作２」は、ルール削除の実行が指示されたことを意味している。なお、この場合、部品種別ノードＣＮ３がノードＰとなり、部品種別ノードＣＮ３と葉ノードＬＮ３とを繋ぐ枝Ｂが枝ＢＹとなり、集合Ｘは｛（ＯＤＤ）−ＤＶＤ−Ｍｕｌｔｉ  Ｄｒｉｖｅ｝となる。
【０２２４】
図３３に示したユーザ操作１、２の条件の時、ルール削除部４１１１は、葉ノードＬＮ３の子孫からなる部分木を削除する（ステップＳ６４）。なお、図３３の例では、葉ノードＬＮ３のみが削除されることになる。次いで、ルール削除部４１１１は、ステップＳ６５において、部品種別ノードＣＮ３の下に「製品コード未割り当て」を表す葉ノードＬＮ４が存在すると判定する（ステップＳ６５；Ｙｅｓ）。
【０２２５】
そのため、ルール削除部４１１１は、葉ノードＬＮ４にかかる枝Ｂに集合Ｘに含まれた部品を追加した後、枝ＢＹを削除する（ステップＳ６６→ステップＳ６７）。なお、図３３の例では、集合Ｘが｛（ＯＤＤ）−ＤＶＤ−Ｍｕｌｔｉ  Ｄｒｉｖｅ｝であるため、ルール削除部４１１１は、部品ＤＢ１７２から、部品種別ノードＣＮ３の部品種別「ＯＤＤ」に関係する全ての部品を読み出し、読み出した部品群を葉ノードＬＮ４の枝Ｂに定義することになる。
【０２２６】
その結果、図３４に示したように、葉ノードＬＮ３と枝ＢＹとが削除され、また、葉ノードＬＮ４の枝Ｂに、部品種別「ＯＤＤ」に関係する全ての部品が定義される。なお、図３４では、部品ＤＢ１７２に記憶された部品種別「ＯＤＤ」に関係する部品が、（ＯＤＤ）＝｛ＣＤ−ＲＯＭ  Ｄｒｉｖｅ、ＤＶＤ−Ｍｕｌｔｉ  Ｄｒｉｖｅ、ＤＶＤ−ＲＡＭ  Ｄｒｉｖｅ｝であった場合の例を示している。
【０２２７】
図３０に戻り、禁止組合せ除去部２１３は、ルール編集部４１１（ルール削除部４１１１）により処理が施された部品組合せルールに対し、禁止組合せ除去処理を実行する（ステップＳ６９）。なお、ステップＳ６９の禁止組合せ除去処理は、図２０で説明したステップＳ３１の禁止組合せ除去処理と同様であるため説明は省略する。
【０２２８】
次いで、ルールＤＢ更新部２１４は、ステップＳ６９の禁止組合せ除去処理が施された部品組合せルールをルールＤＢ１７１に書き込むことで、部品組合せルールを編集後の状態に更新する（ステップＳ７０）。
【０２２９】
続いて、ルール読込部１１２が、ステップＳ７０で更新された部品組合せルールをルールＤＢ１７１から読み込むと（ステップＳ７１）、禁止組合せ結合部１１３は、この読み込まれた部品組合せルールに部品組合せルール表示処理を施すことで、更新後の部品組合せルールを表示部１３に表示し（ステップＳ７２）、本処理を終了する。なお、ステップＳ７２の部品組合せルール表示処理は、第１の実施形態で説明したステップＳ１３〜Ｓ１８の処理内容と同様であるため、その説明は省略する。
【０２３０】
以上のように、本実施形態の情報管理支援装置４００によれば、表示部１３に表示された部品組合せルールに基づいて、特定のノードをトップノードとする部分木を削除することができるため、ユーザは部品組合せルールと禁止組合せデータとの整合性を確認しながら、部品組合せルールの編集を効率的に行うことができる。
【０２３１】
［第５の実施形態］
第５の実施形態では、第１の実施形態で説明したルール閲覧処理後の部品組合せルール、即ち表示部１３に表示された部品組合せルールに基づいて、この部品組合せルールの編集を行う構成について説明する。具体的には、部品組合せルールに対する編集として、枝Ｂに定義された部品を変更することを可能にした情報管理支援装置５００について説明する。なお、上述した第１、２の実施形態と同様の構成要素については同様の符号を付与し、その説明は省略する。
【０２３２】
図３５は、情報管理支援装置５００の機能構成を示したブロック図である。図３５に示したように、情報管理支援装置５００は、ルール表示要求受付部１１１と、ルール読込部１１２と、禁止組合せ結合部１１３と、ルール編集要求入力部２１１と、ルール編集部５１１と、禁止組合せ除去部２１３と、ルールＤＢ更新部２１４と、を備えている。
【０２３３】
ルール編集部５１１は、枝変更部５１１１を有し、この枝変更部５１１１の機能により、ルール編集要求入力部２１１で受け付けられた特定の枝の定義変更にかかる指示内容に基づいて、部品組合せルール中の特定の枝Ｂに定義された部品をユーザから指定された部品に変更する。
【０２３４】
以下、図３６を参照して、本実施形態の情報管理支援装置５００の動作について説明する。図３６は、情報管理支援装置５００により実行される部品組合せルール編集処理の手順を示したフローチャートである。なお、本処理の前提として、上述したルール閲覧処理の結果（例えば、図１３参照）が表示部１３に表示されているものとする。
【０２３５】
まず、ルール編集要求入力部２１１は、部品組合せルールに含まれた枝Ｂのうち、編集対象となる特定の枝Ｂを選択する指示情報を受け付けると、この選択された枝Ｂを枝変更部５１１１に通知する（ステップＳ８１）。以下、ステップＳ８１で選択された枝Ｂを枝ＢＹで表す。
【０２３６】
続いて、ルール編集要求入力部２１１は、枝ＢＹに割り当てる部品を指定する指示情報を受け付けると、この指定された部品を枝変更部５１１１に通知する（ステップＳ８２）。なお、ここで指定される部品は、枝ＢＹに定義されたものに限らず、部品ＤＢ１７２に記憶された、枝ＢＹの親ノードの部品種別に関係する部品群から指定することが可能であるものとする。以下、ステップＳ８２で指定された部品を集合Ｚで表す。
【０２３７】
枝変更部５１１１では、枝ＢＹ、集合Ｚがルール編集要求入力部２１１から通知されると、この枝ＢＹに接続された親ノードを禁止組合せ結合部１１３で処理された部品組合せルールから特定する（ステップＳ８３）。以下、ステップＳ８３で特定した枝ＢＹに接続された親ノードをノードＮ１で表す。また、枝ＢＹに定義された全ての部品を集合Ｘで表す。
【０２３８】
続いて、枝変更部５１１１は、枝ＢＹが定義する部品を、集合Ｚの部品に変更した後（ステップＳ８４）、ノードＮ１の下に「部品組合せ未割り当て」の葉ノードＬＮが存在するか否かを判定する（ステップＳ８５）。以下、ノードＮ１の下に存在する「部品組合せ未割り当て」の葉ノードＬＮをノードＮ２で表し、このノードＮ２の枝Ｂに定義された全ての部品を集合Ｙで表す。
【０２３９】
ここで、ノードＮ１の下にノードＮ２が存在すると判定した場合、つまり集合Ｙが空集合でない場合には（ステップＳ８５；Ｙｅｓ）、枝変更部５１１１は、該当するノードＮ２の枝Ｂが定義する部品（集合Ｙ）を、差集合Ｙ−Ｚの部品に変更する（ステップＳ８６）。なお、枝変更部５１１１は、ノードＮ２の枝Ｂに定義した差集合Ｙ−Ｚを集合Ｙとする。
【０２４０】
次いで、枝変更部５１１１は、ノードＮ２の枝Ｂが定義する部品に、差集合Ｘ−Ｚの部品を追加する（ステップＳ８７）。即ち、Ｓ８７においてノードＮ２の枝Ｂには、（Ｘ−Ｚ）∪Ｙの部品が定義されることになる。なお、枝変更部５１１１は、ノードＮ２の枝Ｂに定義した（Ｘ−Ｚ）∪Ｙを集合Ｙとする。
【０２４１】
続いて、枝変更部５１１１は、ステップＳ８７の処理の結果、ノードＮ２の枝Ｂに定義した集合Ｙが空集合か否かを判定し、空集合でないと判定した場合には（ステップＳ８８；Ｎｏ）、ステップＳ９２の処理に直ちに移行する。
【０２４２】
また、ステップＳ８８において、ノードＮ２の枝Ｂに定義した集合Ｙが空集合と判定した場合には（ステップＳ８８；Ｙｅｓ）、枝変更部５１１１は、この枝ＢとノードＮ２とを削除した後（ステップＳ８９）、ステップＳ９２の処理に移行する。
【０２４３】
一方、ステップＳ８５において、ノードＮ１の下にノードＮ２が存在しないと判定した場合、つまり集合Ｙが空集合の場合には（ステップＳ８５；Ｎｏ）、枝変更部５１１１は、差集合Ｘ−Ｚが空集合か否かをさらに判定する（ステップＳ９０）。ここで、差集合Ｘ−Ｙが空集合と判定した場合には（ステップＳ９０；Ｙｅｓ）、ステップＳ９２の処理に直ちに移行する。
【０２４４】
また、ステップＳ９０において、差集合Ｘ−Ｙが空集合でないと判定した場合には（ステップＳ９０；Ｎｏ）、枝変更部５１１１は、ノードＮ１の下に「製品コード未割り当て」の葉ノードＬＮを新たに生成し、両ノード間を、差集合Ｘ−Ｚの部品を定義する枝Ｂで接続した後（ステップＳ９１）、ステップＳ９２の処理に移行する。なお、枝変更部５１１１は、ステップＳ９１において、枝Ｂに定義した差集合Ｘ−Ｚを集合Ｙとする。
【０２４５】
続くステップＳ９２において、枝変更部５１１１は、ノードＮ１に接続された枝Ｂのうち、枝ＢＹ及びノードＮ２の枝Ｂを除いた他の枝Ｂに、差集合Ｚ−Ｘ及び集合Ｙに含まれた何れかの部品を定義するものが存在するか否かを判定する（ステップＳ９２）。なお、ノードＮ２自体が存在しない場合には、ノードＮ１に接続された枝Ｂのうち、枝ＢＹを除いた他の枝Ｂから、差集合Ｚ−Ｘに含まれた何れかの部品を定義する枝Ｂが存在するか否かが判定されることになる。以下、差集合Ｚ−Ｘ及び集合Ｙに含まれた何れかの部品を定義する枝Ｂを、枝ＢＺで表す。
【０２４６】
ステップＳ９２において、枝ＢＺが存在しないと判定した場合には（ステップＳ９２；Ｎｏ）、ステップＳ９６の処理に直ちに移行する。
【０２４７】
一方、ステップＳ９２において、枝ＢＺが存在すると判定した場合には（ステップＳ９２；Ｙｅｓ）、枝変更部５１１１は、この枝ＢＺが定義する部品から、差集合Ｚ−Ｘ及び集合Ｙに含まれた部品を削除する（ステップＳ９３）。
【０２４８】
次いで、枝変更部５１１１は、ステップＳ９３の結果、枝ＢＺが定義する部品が空になったか否かを判定する（ステップＳ９４）。ここで、枝ＢＺが定義する部品が存在すると判定した場合には（ステップＳ９４；Ｎｏ）、ステップＳ９６の処理に移行する。
【０２４９】
また、ステップＳ９４において、枝ＢＺが定義する部品が空になったと判定した場合には（ステップＳ９４；Ｙｅｓ）、枝ＢＺを含む全子孫からなる部分木を削除した後（ステップＳ９５）、ステップＳ９６の処理に移行する。
【０２５０】
ここで、図３７〜図４０を参照し、上述したステップＳ８１〜Ｓ９５迄の処理の動作を、具体例を用いて説明する。
【０２５１】
図３７は、ルール閲覧処理後に表示部１３に表示された部品組合せルールの一例を示した図である。本処理の実行にあたり、ユーザから操作部１２を介し、表示部１３に表示された部品組合せルールに基づいて、上述した枝ＢＹ、集合Ｚが指示される。なお、図３７において「ユーザ操作１」は、編集対象となる枝ＢＹとして部品種別ノードＣＮ１と部品種別ノードＣＮ３とを繋ぐ枝Ｂが指定されたことを意味しており、「ユーザ操作２」は、枝ＢＹに割り当てる部品の集合Ｚとして｛ＣＰＵ１｝が指定されたことを意味している。この場合、部品種別ノードＣＮ１がノードＮ１となり、枝ＢＹに定義された｛ＣＰＵ１、ＣＰＵ２｝が集合Ｘとなる。
【０２５２】
図３７に示したユーザ操作１、２の条件の時、枝変更部５１１１は、ステップＳ８４において、枝ＢＹが定義する部品を集合Ｚの部品「ＣＰＵ１」に変更する。そして、枝変更部５１１１は、部品種別ノードＣＮ１の下に「部品組合せ未割り当て」の葉ノードＬＮが存在しないと判定するとともに（ステップＳ８５；Ｎｏ）、差集合Ｘ−Ｚが空集合でないと判定する（ステップＳ９０；Ｎｏ）。
【０２５３】
次いで、枝変更部５１１１は、部品種別ノードＣＮ１の下に「製品コード未割り当て」の葉ノードＬＮを新たに生成すると、ステップＳ９０で生成した葉ノードＬＮと部品種別ノードＣＮ１との間を、差集合Ｘ−Ｚの部品「ＣＰＵ２」を定義した枝Ｂで接続する（ステップＳ９１）。続いて、枝変更部５１１１は、部品種別ノードＣＮ１に接続された枝Ｂのうち、枝ＢＹ及びノードＮ２の枝Ｂを除いた他の枝Ｂに、差集合Ｚ−Ｘに含まれた何れかの部品を定義する枝Ｂは存在しないと判定し（ステップＳ９２；Ｎｏ）、ステップＳ９６の処理へと移行する。
【０２５４】
図３８は、図３７のユーザ操作１、２に対する、ステップＳ８１〜Ｓ９２の処理結果を示した図である。図３８に示したように、ユーザから指定された枝ＢＹに部品「ＣＰＵ１」が定義される。また、従前の枝ＢＹに定義されていた「ＣＰＵ２」が、部品種別ノードＣＮ１の下に新たに生成された「製品コード未割り当て」の葉ノードＬＮ１２と、部品種別ノードＣＮ１とを繋ぐ枝Ｂに定義されることになる。
【０２５５】
また、図３９は、本処理の他の動作例を説明するための図であって、ルール閲覧処理後に表示部１３に表示された部品組合せルールの他の例を示している。なお、図３９では、図３７に示した部品種別ノードＣＮ１の下に、部品「ＣＰＵ３」を定義する枝Ｂで接続された「製品コード未割り当て」の葉ノードＬＮ１３が追加されている。また、部品種別ノードＣＮ１と部品種別ノードＣＮ２とを繋ぐ枝Ｂには「ＣＰＵ０、ＣＰＵ４」が定義されており、部品種別ノードＣＮ１と部品種別ノードＣＮ３とを繋ぐ枝Ｂには「ＣＰＵ１、ＣＰＵ２」が定義されている。
【０２５６】
ここで、「ユーザ操作１」は、編集対象となる枝ＢＹとして部品種別ノードＣＮ１と部品種別ノードＣＮ３とを繋ぐ枝Ｂが指定されたことを意味しており、「ユーザ操作２」は、枝ＢＹに割り当てる部品の集合Ｚとして｛ＣＰＵ１、ＣＰＵ３、ＣＰＵ４｝が指定されたことを意味している。この場合、部品種別ノードＣＮ１がノードＮ１となり、枝ＢＹに定義された「ＣＰＵ１、ＣＰＵ２」が集合Ｘとなる。
【０２５７】
図３９に示したユーザ操作１、２の条件の時、枝変更部５１１１は、ステップＳ８４において、枝ＢＹが定義する部品を集合Ｚの部品「ＣＰＵ１、ＣＰＵ３、ＣＰＵ４」に変更する。そして、枝変更部５１１１は、部品種別ノードＣＮ１の下に「部品組合せ未割り当て」の葉ノードＬＮ１３が存在すると判定するため（ステップＳ８５；Ｙｅｓ）、葉ノードＬＮ１３の枝Ｂが定義する部品「ＣＰＵ３」つまり集合Ｙを、差集合Ｙ−Ｚ（空集合）の部品に変更する（ステップＳ８６）。ここで、葉ノードＬＮ１３がノードＮ２に対応し、差集合Ｙ−Ｚ＝空集合が集合Ｙとなる。
【０２５８】
次いで、枝変更部５１１１は、葉ノードＬＮ１３の枝Ｂが定義する部品に、差集合Ｘ−Ｚ（ＣＰＵ２）の部品を追加する（ステップＳ８７）。ここで、「ＣＰＵ２」が集合Ｙとなる。続いて、枝変更部５１１１は、ステップＳ８８において、葉ノードＬＮ１３の枝Ｂに定義した集合Ｙが空集合でないと判定する（ステップＳ８７；Ｎｏ）。
【０２５９】
次に、枝変更部５１１１は、ステップＳ９２において、部品種別ノードＣＮ１に接続された枝Ｂのうち、枝ＢＹ及び葉ノードＬＮ１３にかかる枝Ｂを除いた他の枝Ｂから、差集合Ｚ−Ｘ及び集合Ｙに含まれる何れかの部品、つまり｛ＣＰＵ１、ＣＰＵ２、ＣＰＵ３、ＣＰＵ４｝の何れかの部品を定義する枝Ｂが存在するか否かを判定する。
【０２６０】
ここで、枝変更部５１１１は、部品種別ノードＣＮ１と部品種別ノードＣＮ２とを繋ぐ枝Ｂ（枝ＢＺ）に部品「ＣＰＵ４」が定義されていると判定するため（ステップＳ９２；Ｙｅｓ）、この枝ＢＺが定義する部品から「ＣＰＵ４」を削除する（ステップＳ９３）。また、枝変更部５１１１は、枝ＢＺが部品「ＣＰＵ０」を定義していると判定するため（ステップＳ９４；Ｎｏ）、ステップＳ９６の処理へと移行する。
【０２６１】
図４０は、図３９のユーザ操作１、２に対する、ステップＳ８１〜Ｓ９４の処理結果を示した図である。図４０に示したように、ユーザから指定された枝ＢＹに部品「ＣＰＵ１、ＣＰＵ３、ＣＰＵ４」が定義される。この枝ＢＹが定義する部品の変更に伴い、従前の枝ＢＹに定義されていた部品「ＣＰＵ２」が「製品コード未割り当て」の葉ノードＬＮ１３の枝Ｂに定義される一方、従前この枝Ｂに定義されていた部品「ＣＰＵ３」は、枝ＢＹが定義する「ＣＰＵ３」との重複を避けるため削除されている。また、枝ＢＺに定義されていた「ＣＰＵ４」は、枝ＢＹが定義する「ＣＰＵ４」との重複を避けるため削除されている。
【０２６２】
図３６に戻り、禁止組合せ除去部２１３は、ルール編集部５１１により処理が施された部品組合せルールに対し、禁止組合せ除去処理を実行する（ステップＳ９６）。なお、ステップＳ９６の禁止組合せ除去処理は、図２０で説明したステップＳ３１の禁止組合せ除去処理と同様であるため説明は省略する。
【０２６３】
次いで、ルールＤＢ更新部２１４は、ステップＳ９６の禁止組合せ除去処理が施された部品組合せルールをルールＤＢ１７１に書き込むことで、部品組合せルールを編集後の状態に更新する（ステップＳ９７）。
【０２６４】
続いて、ルール読込部１１２が、ステップＳ９７で更新された部品組合せルールをルールＤＢ１７１から読み込むと（ステップＳ９８）、禁止組合せ結合部１１３は、この読み込まれた部品組合せルールに部品組合せルール表示処理を施すことで、更新後の部品組合せルールを表示部１３に表示し（ステップＳ９９）、本処理を終了する。なお、ステップＳ９９の部品組合せルール表示処理は、第１の実施形態で説明したステップＳ１３〜Ｓ１８の処理内容と同様であるため、その説明は省略する。
【０２６５】
以上のように、本実施形態の情報管理支援装置５００によれば、表示部１３に表示された部品組合せルールに基づいて、特定の枝Ｂの定義する部品を変更することができるため、ユーザは部品組合せルールと禁止組合せデータとの整合性を確認しながら、部品組合せルールの編集を効率的に行うことができる。
【０２６６】
［第６の実施形態］
第６の実施形態では、第１の実施形態で説明したルール閲覧処理後の部品組合せルール、即ち表示部１３に表示された部品組合せルールに基づいて、この部品組合せルールの編集を行う構成について説明する。具体的には、部品組合せルールに対する編集として、特定のノードが表す部品種別を変更することを可能にした情報管理支援装置６００について説明する。なお、上述した第１、２の実施形態と同様の構成要素については同様の符号を付与し、その説明は省略する。
【０２６７】
図４１は、情報管理支援装置６００の機能構成を示したブロック図である。図４１に示したように、情報管理支援装置６００は、ルール表示要求受付部１１１と、ルール読込部１１２と、禁止組合せ結合部１１３と、ルール編集要求入力部２１１と、ルール編集部６１１と、禁止組合せ除去部２１３と、ルールＤＢ更新部２１４と、を備えている。
【０２６８】
ルール編集部６１１は、ノード変更部６１１１を有し、このノード変更部６１１１の機能により、ルール編集要求入力部２１１で受け付けられた特定のノードに定義された部品種別の変更にかかる指示内容に基づいて、ユーザから指定されたノードが表す部品種別を変更する。
【０２６９】
以下、図４２を参照して、本実施形態の情報管理支援装置６００の動作について説明する。図４２は、情報管理支援装置６００により実行される部品組合せルール編集処理の手順を示したフローチャートである。なお、本処理の前提として、上述したルール閲覧処理の結果（例えば、図１３参照）が表示部１３に表示されているものとする。
【０２７０】
まず、ルール編集要求入力部２１１は、部品組合せルールに含まれたノードのうち、部品種別の変更対象となる特定のノードを選択する指示情報を、操作部１２を介して受け付けると、この選択されたノードをルール編集部６１１に通知する（ステップＳ１０１）。以下、選択されたノードをノードＮで表す。
【０２７１】
続いて、ルール編集要求入力部２１１は、部品種別を指定する指示情報を、操作部１２を介して受け付けると、この指定された部品種別をルール編集部６１１に通知する（ステップＳ１０２）。以下、指定された部品種別Ｋで表す。
【０２７２】
ノード変更部６１１１では、ノードＮ及び部品種別Ｋがルール編集要求入力部２１１から通知されると、ノードＮの子孫からなる部分木を削除し（ステップＳ１０３）、ノードＮが表す部品種別を部品種別Ｋに変更する（ステップＳ１０４）。
【０２７３】
次いで、ノード変更部６１１１は、部品種別Ｋに関係する全ての部品を部品ＤＢ１７２から取得する（ステップＳ１０５）。そして、ノード変更部６１１１は、ノードＮの下に「製品コード未割り当て」を表す葉ノードＬＮを新たに生成すると、両ノード間をステップＳ１０５で取得した部品群を定義する枝Ｂで接続した後（ステップＳ１０６）、ステップＳ１０７の処理に移行する。
【０２７４】
ここで、図４３、図４４を参照し、ステップＳ１０１〜Ｓ１０６迄の処理の動作を、具体例を用いて説明する。
【０２７５】
図４３は、ルール閲覧処理後に表示部１３に表示された部品組合せルールの一例を示した図である。本処理の実行にあたり、ユーザから操作部１２を介し、表示部１３に表示された部品組合せルールに基づいて、上述したノードＮ及び部品種別Ｋが指示される。なお、図４３において「ユーザ操作１」は、編集対象となるノードＮとして「部品種別ノードＣＮ３」が選択されたことを意味しており、「ユーザ操作２」は、ノードＮに割り当てる部品種別Ｋとして「ＬＣＤ」が指示されたことを意味している。
【０２７６】
図４３に示したユーザ操作１、２の条件の時、ノード変更部６１１１は、部品種別ノードＣＮ３の子孫からなる部分木を削除すると（ステップＳ１０３）、この部品種別ノードＣＮ３が表す部品種別「ＯＤＤ」を部品種別「ＬＣＤ」に変更する（ステップＳ１０４）。
【０２７７】
次いで、ノード変更部６１１１は、部品種別「ＬＣＤ」に関係する全ての部品を部品ＤＢ１７２から取得すると、部品種別ノードＣＮ３と当該部品種別ノードＣＮ３の下に生成した「製品コード未割り当て」を表す葉ノードＬＮとの間を、部品種別「ＬＣＤ」に関係する全ての部品を定義した枝Ｂにより接続する（ステップＳ１０５→ステップＳ１０６）。
【０２７８】
図４４は、図４３のユーザ操作１、２に対する、ステップＳ１０１〜Ｓ１０６の処理結果を示した図である。図４４に示したように、ユーザから指定された部品種別ノードＣＮ３が表す部品種別が「ＬＣＤ」に変更されている。また、新設された「製品コード未割り当て」の葉ノードＬＮ１４が、部品種別「ＬＣＤ」に関係する全ての部品を定義した枝Ｂにより部品種別ノードＣＮ３と接続されている。なお、図４４では、部品ＤＢ１７２に記憶された部品種別「ＬＣＤ」に関係する全ての部品が、（ＬＣＤ）＝｛ＬＣＤ１、ＬＣＤ２｝であった場合の例を示している。
【０２７９】
図４２に戻り、禁止組合せ除去部２１３は、ルール編集部６１１（ノード変更部６１１１）により処理が施された部品組合せルールに対し、禁止組合せ除去処理を実行する（ステップＳ１０７）。なお、ステップＳ１０７の禁止組合せ除去処理は、図２０で説明したステップＳ３１の禁止組合せ除去処理と同様であるため説明は省略する。
【０２８０】
次いで、ルールＤＢ更新部２１４は、ステップＳ１０７の禁止組合せ除去処理が施された部品組合せルールをルールＤＢ１７１に書き込むことで、部品組合せルールを編集後の状態に更新する（ステップＳ１０８）。
【０２８１】
続いて、ルール読込部１１２が、ステップＳ１０８で更新された部品組合せルールをルールＤＢ１７１から読み込むと（ステップＳ１０９）、禁止組合せ結合部１１３は、この読み込まれた部品組合せルールに部品組合せルール表示処理を施すことで、更新後の部品組合せルールを表示部１３に表示し（ステップＳ１１０）、本処理を終了する。なお、ステップＳ１１０の部品組合せルール表示処理は、第１の実施形態で説明したステップＳ１３〜Ｓ１８の処理内容と同様であるため、その説明は省略する。
【０２８２】
以上のように、本実施形態の情報管理支援装置６００によれば、表示部１３に表示された部品組合せルールに基づいて、特定の部品種別ノードＣＮが表す部品種別を変更することができるため、ユーザは部品組合せルールと禁止組合せデータとの整合性を確認しながら、部品組合せルールの編集を効率的に行うことができる。
【０２８３】
［第７の実施形態］
第７の実施形態では、第１の実施形態で説明したルール閲覧処理後の部品組合せルール、即ち表示部１３に表示された部品組合せルールに基づいて、この部品組合せルールの編集を行う構成について説明する。具体的には、部品組合せルールに対する編集として、部品組合せルール中の特定のルール（部分木）を、木構造中の別の箇所に再利用することを可能にした情報管理支援装置７００について説明する。なお、上述した第１、２の実施形態と同様の構成要素については同様の符号を付与し、その説明は省略する。
【０２８４】
図４５は、情報管理支援装置７００の機能構成を示したブロック図である。図４５に示したように、情報管理支援装置７００は、ルール表示要求受付部１１１と、ルール読込部１１２と、禁止組合せ結合部１１３と、ルール編集要求入力部２１１と、ルール編集部７１１と、禁止組合せ除去部２１３と、ルールＤＢ更新部２１４と、を備えている。
【０２８５】
ルール編集部７１１は、ルール再利用部７１１１を有し、このルール再利用部７１１１の機能により、ルール編集要求入力部２１１で受け付けられた特定の部分木の再利用にかかる指示内容に基づいて、部品組合せルール中に存在する特定のルール（部分木）を、木構造中の別の箇所に複製する。
【０２８６】
以下、図４６を参照して、本実施形態の情報管理支援装置７００の動作について説明する。図４６は、情報管理支援装置７００により実行される部品組合せルール編集処理の手順を示したフローチャートである。なお、本処理の前提として、上述したルール閲覧処理の結果（例えば、図１３参照）が表示部１３に表示されているものとする。
【０２８７】
まず、ルール編集要求入力部２１１は、部品組合せルールに含まれたノードのうち、再利用対象となる部分木のトップノードとなる一の部品種別ノードＣＮを選択する指示情報を受け付けると、この選択された部品種別ノードＣＮをルール編集部７１１に通知する（ステップＳ１２１）。以下、ステップＳ１２１で選択された部品種別ノードＣＮをノードＮ１で表す。
【０２８８】
続いて、ルール編集要求入力部２１１は、ステップＳ１２１で選択された部分木の再利用先となる「製品コード未割り当て」の葉ノードＬＮを指定する指示情報を受け付けると、この指定された葉ノードＬＮをルール再利用部７１１１に通知する（ステップＳ１２２）。以下、ステップＳ１２２で指定された葉ノードＬＮをノードＮ２で表す。
【０２８９】
ルール再利用部７１１１では、ノードＮ１及びノードＮ２がルール編集要求入力部２１１から通知されると、ノードＮ１をトップノードとした部分木を複製する（ステップＳ１２３）。以下、ステップＳ１２３で複製元となった部分木を部分木Ｔで表し、複製した部分木を部分木Ｔ’で表す。
【０２９０】
続いて、禁止組合せ除去部２１３は、複製した部分木Ｔ’に含まれる各ノードに対し、禁止組合せ除去処理を実行する（ステップＳ１２４）。なお、ステップＳ１２４の禁止組合せ除去処理は、図２０で説明したステップＳ３１の禁止組合せ除去処理と同様であるため説明は省略する。
【０２９１】
次いで、ルール再利用部７１１１は、ノードＮ２をステップＳ１２４の処理が施された部分木Ｔ’のトップノードに置き換えることで、複製した部分木Ｔ’を部品組合せルール中に埋め込む（ステップＳ１２５）。
【０２９２】
続いて、ルール再利用部７１１１は、ノードＮ１をトップノードとする部分木Ｔを削除する（ステップＳ１２６）。なお、本実施形態では、複製元の部分木Ｔを削除する態様としたが、これに限らず、部分木Ｔを削除しない態様としてもよい。
【０２９３】
次に、ルール再利用部７１１１は、ノードＮ１の親ノードの下に、「製品コード未割り当て」を表す葉ノードＬＮが存在するか否かを判定する（ステップＳ１２７）。以下、ノードＮ１の親ノードをノードＰで表し、このノードＰとノードＮ１とを繋ぐ枝Ｂを枝ＢＹで表す。
【０２９４】
ステップＳ１２７において、ノードＰの下に「製品コード未割り当て」を表す葉ノードＬＮが存在すると判定した場合（ステップＳ１２７；Ｙｅｓ）、ルール再利用部７１１１は、この葉ノードＬＮとノードＰとを繋ぐ枝Ｂに枝ＢＹに定義された部品を追加する（ステップＳ１２８）。次いで、ルール再利用部７１１１は、この枝ＢＹを削除した後（ステップＳ１２９）、ステップＳ１３１の処理に移行する。
【０２９５】
一方、ステップＳ１２７において、ノードＰの下に「製品コード未割り当て」を表す葉ノードＬＮが存在しないと判定した場合には（ステップＳ１２７；Ｎｏ）、ルール再利用部７１１１は、ノードＰの下に「製品コード未割り当て」を表す葉ノードＬＮを新たに生成し、この葉ノードＬＮを枝ＢＹと接続した後（ステップＳ１３０）、ステップＳ１３１の処理に移行する。
【０２９６】
ここで、図４７〜図５１を参照し、上述したステップＳ１２１〜Ｓ１３０迄の処理の動作を、具体例を用いて説明する。
【０２９７】
図４７は、ルール閲覧処理後に表示部１３に表示された部品組合せルールの一例を示した図である。本処理の実行にあたり、ユーザから操作部１２を介し、表示部１３に表示された部品組合せルールに基づいて、上述したノードＮ１、Ｎ２が指示される。図４７において「ユーザ操作１」は、部分木ＴのトップノードとなるノードＮ１として部品種別ノードＣＮ２が指定されたことを意味しており、「ユーザ操作２」は、部分木Ｔの複製先、つまり再利用先となるノードＮ２として葉ノードＬＮ４が指定されたことを意味している。この場合、部品種別ノードＣＮ１がノードＰとなり、ノードＰと部品種別ノードＣＮ２とを繋ぐ枝Ｂが枝ＢＹとなる。なお、図４７において、図中破線で囲んだ部分木が複製元の部分木Ｔを表している。
【０２９８】
図４７に示したユーザ操作１、２の条件の時、ルール再利用部７１１１は、ステップＳ１２３において、部品種別ノードＣＮ２をトップノードとした子孫ノードからなる部分木Ｔを複製する。続いて、ルール再利用部７１１１は、禁止組合せ除去部２１３により禁止組合せ除去処理が施された部分木Ｔ’のトップノード（部品種別ノードＣＮ２）を、葉ノードＬＮ４と置き換えることで部品組合せルール中に埋め込む（ステップＳ１２４→ステップＳ１２５）。
【０２９９】
続いて、ルール再利用部７１１１は、複製元の部分木Ｔを削除すると（ステップＳ１２６）、部品種別ノードＣＮ１の下に、「製品コード未割り当て」を表す葉ノードＬＮが存在するか否かを判定する（ステップＳ１２７）。ここで、ルール再利用部７１１１は、部品種別ノードＣＮ１の下に「製品コード未割り当て」を表す葉ノードＬＮが存在しないと判定するため（ステップＳ１２７；Ｎｏ）、部品種別ノードＣＮ１の下に「製品コード未割り当て」を表す葉ノードＬＮを新たに生成し、両ノード間を枝ＢＹで接続する（ステップＳ１３０）。
【０３００】
図４８は、図４７のユーザ操作１、２に対する、ステップＳ１２１〜Ｓ１３０の処理結果を示した図である。図４８に示したように、ユーザから指定された部品種別ノードＣＮ２をトップノードとする部分木Ｔを複製した部分木Ｔ’が、葉ノードＬＮ４と置き換えることで部品組合せルール中に埋め込まれている。なお、部分木Ｔ’は、禁止組合せ除去部２１３による処理の結果、ノード名から「禁止」の文字が削除された状態で表される。また、部分木Ｔの削除に伴い、新設された「製品コード未割り当て」の葉ノードＬＮ１５が枝ＢＹと接続されている。なお、部分木Ｔの削除を行わない場合には、図４９に示したように、部分木Ｔ’が埋め込まれた後も部分木Ｔはそのままの状態で維持されることになる。
【０３０１】
また、図５０は、本処理の他の動作例を説明するための図であって、ルール閲覧処理後に表示部１３に表示された部品組合せルールの他の例を示している。なお、図５０では、図４７に示した部品種別ノードＣＮ１の下に、部品「ＣＰＵ３」を定義する枝Ｂで接続された「製品コード未割り当て」の葉ノードＬＮ１６が追加されている。
【０３０２】
ここで、「ユーザ操作１」は、部分木ＴのトップノードとなるノードＮ１として部品種別ノードＣＮ２が指定されたことを意味しており、「ユーザ操作２」は、部分木Ｔの複製先となるノードＮ２として葉ノードＬＮ４が指定されたことを意味している。この場合、部品種別ノードＣＮ１がノードＰとなり、ノードＰと部品種別ノードＣＮ１とを繋ぐ枝Ｂが枝ＢＹとなる。なお、図５０において、図中破線で囲んだ部分木が複製元の部分木Ｔを表している。
【０３０３】
図５０に示したユーザ操作１、２の条件の時、ルール再利用部７１１１は、ステップＳ１２３において、部品種別ノードＣＮ２をトップノードとした子孫ノードからなる部分木Ｔを複製する。続いて、ルール再利用部７１１１は、禁止組合せ除去部２１３により禁止組合せ除去処理が施された部分木Ｔ’のトップノード（部品種別ノードＣＮ２）を、葉ノードＬＮ４と置き換えることで部品組合せルール中に埋め込む（ステップＳ１２４→ステップＳ１２５）。
【０３０４】
続いて、ルール再利用部７１１１は、複製元の部分木Ｔを削除すると（ステップＳ１２６）、部品種別ノードＣＮ１の下に、「製品コード未割り当て」を表す葉ノードＬＮが存在するか否かを判定する（ステップＳ１２７）。
【０３０５】
ここで、ルール再利用部７１１１は、部品種別ノードＣＮ１の下に「製品コード未割り当て」を表す葉ノードＬＮ１６が存在すると判定するため（ステップＳ１２７；Ｙｅｓ）、この葉ノードＬＮ１６に、枝ＢＹが定義する部品「ＣＰＵ０」を追加した後（ステップＳ１２８）、枝ＢＹを削除する（ステップＳ１２９）。
【０３０６】
図５１は、図５０のユーザ操作１、２に対する、ステップＳ１２１〜Ｓ１２９の処理結果を示した図である。図５１に示したように、ユーザから指定された部品種別ノードＣＮ２をトップノードとする部分木Ｔを複製した部分木Ｔ’が、葉ノードＬＮ４と置き換えることで部品組合せルール中に埋め込まれている。なお、部分木Ｔ’は、禁止組合せ除去部２１３による処理の結果、ノード名から「禁止」の文字が削除された状態で表される。また、枝ＢＹが削除されており、この枝ＢＹに定義されていた部品「ＣＰＵ０」が、葉ノードＬＮ１６と部品種別ノードＣＮ１とを繋ぐ枝Ｂに追加されている。
【０３０７】
図４６に戻り、禁止組合せ除去部２１３は、ルール編集部７１１により処理が施された部品組合せルールに対し、禁止組合せ除去処理を実行する（ステップＳ１３１）。なお、ステップＳ１３１の禁止組合せ除去処理は、図２０で説明したステップＳ３１の禁止組合せ除去処理と同様であるため説明は省略する。
【０３０８】
次いで、ルールＤＢ更新部２１４は、ステップＳ１３１の禁止組合せ除去処理が施された部品組合せルールをルールＤＢ１７１に書き込むことで、部品組合せルールを編集後の状態に更新する（ステップＳ１３２）。
【０３０９】
続いて、ルール読込部１１２が、ステップＳ１３２で更新された部品組合せルールをルールＤＢ１７１から読み込むと（ステップＳ１３３）、禁止組合せ結合部１１３は、この読み込まれた部品組合せルールに部品組合せルール表示処理を施すことで、更新後の部品組合せルールを表示部１３に表示し（ステップＳ１３４）、本処理を終了する。なお、ステップＳ１３４の部品組合せルール表示処理は、第１の実施形態で説明したステップＳ１３〜Ｓ１８の処理内容と同様であるため、その説明は省略する。
【０３１０】
以上のように、本実施形態の情報管理支援装置７００によれば、表示部１３に表示された部品組合せルールに基づいて、特定の部品種別ノードＣＮをトップノードとする部分木を、木構造中の他の箇所で再利用することができるため、ユーザは部品組合せルールと禁止組合せデータとの整合性を確認しながら、部品組合せルールの編集を効率的に行うことができる。
【０３１１】
［第８の実施形態］
第８の実施形態では、第１の実施形態で説明したルール閲覧処理後の部品組合せルール、即ち表示部１３に表示された部品組合せルールに基づいて、この部品組合せルールの編集を行う構成について説明する。具体的には、部品組合せルールに対する編集として、特定のノードの下に存在する「製品コード未割り当て」の全ての葉ノードＬＮに対し、指定した製品コードを一度に割り振ることを可能にした情報管理支援装置８００について説明する。なお、上述した第１、２の実施形態と同様の構成要素については同様の符号を付与し、その説明は省略する。
【０３１２】
図５２は、情報管理支援装置８００の機能構成を示したブロック図である。図５２に示したように、情報管理支援装置８００は、ルール表示要求受付部１１１と、ルール読込部１１２と、禁止組合せ結合部１１３と、ルール編集要求入力部２１１と、ルール編集部８１１と、禁止組合せ除去部２１３と、ルールＤＢ更新部２１４と、を備えている。
【０３１３】
ルール編集部８１１は、未割り当て補完部８１１１を有し、未割り当て補完部８１１１の機能により、ルール編集要求入力部２１１で受け付けられた特定の部品種別ノードＣＮの子孫ノードに存在する「製品コード未割り当て」の葉ノードＬＮに対し、指定された製品コードの割り当てを一度に行う。
【０３１４】
以下、図５３を参照して、本実施形態の情報管理支援装置８００の動作について説明する。図５３は、情報管理支援装置８００により実行される部品組合せルール編集処理の手順を示したフローチャートである。なお、本処理の前提として、上述したルール閲覧処理の処理結果（例えば、図１３参照）が表示部１３に表示されているものとする。また、表示される部品組合せルールには、「製品コード未割り当て」の葉ノードＬＮが少なくとも一つ存在するものとする。
【０３１５】
まず、ルール編集要求入力部２１１は、部品組合せルールに含まれたノードのうち、子孫ノードに「製品コード未割り当て」の葉ノードＬＮを有した特定のノードを選択する指示情報を受け付けると、この選択されたノードを未割り当て補完部８１１１に通知する（ステップＳ１４１）。以下、ステップＳ１４１で選択されたノードをノードＮで表す。
【０３１６】
続いて、ルール編集要求入力部２１１は、製品コードを指定する指示情報を受け付けると、この指定された製品コードを未割り当て補完部８１１１に通知する（ステップＳ１４２）。以下、ステップＳ１４２で指定された製品コードを製品コードＣで表す。
【０３１７】
未割り当て補完部８１１１では、ノードＮ及び製品コードＣがルール編集要求入力部２１１から通知されると、ノードＮの子孫からなる部分木を走査し、「製品コード未割り当て」を表す葉ノードＬＮを探索する（ステップＳ１４３）。ここで、葉ノードＬＮの探索は、深さ優先探索等の探索方法を用いるものとする。
【０３１８】
次いで、未割り当て補完部８１１１は、ステップＳ１４３の探索の結果、見つかった「製品コード未割り当て」を表す全ての葉ノードＬＮのノード名を、製品コードＣに変更し（ステップＳ１４４）、ステップＳ１４５の処理に移行する。
【０３１９】
ここで、図５４、図５５を参照し、ステップＳ１４１〜Ｓ１４４迄の処理の動作を、具体例を用いて説明する。
【０３２０】
図５４は、ルール閲覧処理後に表示部１３に表示された部品組合せルールの一例を示した図である。本処理の実行にあたり、ユーザから操作部１２を介し、表示部１３に表示された部品組合せルールに基づいて、上述したノードＮ及び製品コードＣが指示される。図５４において「ユーザ操作１」は、「製品コード未割り当て」の葉ノードＬＮを子孫ノードに有したノードＮとして「部品種別ノードＣＮ３」が選択されたことを意味しており、「ユーザ操作２」は、「製品コードが未割り当て」の葉ノードＬＮに割り当てるＣとして「コード０２」が指示されたことを意味している。
【０３２１】
図５４に示したユーザ操作１、２の条件の時、未割り当て補完部８１１１は、部品種別ノードＣＮ３の子孫からなる部分木を探索し、「製品コード未割り当て」の葉ノードＬＮ４を見つけると（ステップＳ１４３）、この葉ノードＬＮ３のノード名を「コード０２」に変更する（ステップＳ１４４）。なお、図５４において、部品種別ノードＣＮ３の子孫からなる部分木を部分木Ｔで表している。
【０３２２】
図５５は、図５４のユーザ操作１、２に対する、ステップＳ１４１〜Ｓ１４４の処理結果を示した図である。図５５に示したように、ユーザから指定された部品種別ノードＣＮ３の子ノードに存在した「製品コード未割り当て」の葉ノードＬＮ４のノード名が、指定された「製品コード０２」に変更されている。
【０３２３】
なお、図５４、５５の例では、選択された部品種別ノードＣＮの子ノードに存在した「製品コード未割り当て」の葉ノードにのみ処理を行う態様を説明したが、これに限らず、「製品コード未割り当て」の葉ノードＬＮが、部品種別ノードＣＮの孫ノード以下に存在する場合には、この葉ノードＬＮに対しても処理を行うものとする。
【０３２４】
図５３に戻り、禁止組合せ除去部２１３は、ルール編集部８１１（未割り当て補完部８１１１）により処理が施された部品組合せルールに対し、禁止組合せ除去処理を実行する（ステップＳ１４５）。なお、ステップＳ１４５の禁止組合せ除去処理は、図２０で説明したステップＳ３１の禁止組合せ除去処理と同様であるため説明は省略する。
【０３２５】
次いで、ルールＤＢ更新部２１４は、ステップＳ１４５の禁止組合せ除去処理が施された部品組合せルールをルールＤＢ１７１に書き込むことで、部品組合せルールを編集後の状態に更新する（ステップＳ１４６）。
【０３２６】
続いて、ルール読込部１１２が、ステップＳ１４６で更新された部品組合せルールをルールＤＢ１７１から読み込むと（ステップＳ１４７）、禁止組合せ結合部１１３は、この読み込まれた部品組合せルールに部品組合せルール表示処理を施すことで、更新後の部品組合せルールを表示部１３に表示し（ステップＳ１４８）、本処理を終了する。なお、ステップＳ１４８の部品組合せルール表示処理は、第１の実施形態で説明したステップＳ１３〜Ｓ１８の処理内容と同様であるため、その説明は省略する。
【０３２７】
以上のように、本実施形態の情報管理支援装置８００によれば、表示部１３に表示された部品組合せルールに基づいて、特定の部品種別ノードＣＮ下に存在する「製品コード未割り当て」の葉ノードＬＮに対し、指定した製品コードを一度に割り当てることができるため、ユーザは部品組合せルールと禁止組合せデータとの整合性を確認しながら、部品組合せルールの編集を効率的に行うことができる。
【０３２８】
以上、発明の実施の形態について説明したが、本発明はこれに限定されるものではなく、本発明の主旨を逸脱しない範囲での種々の変更、置換、追加などが可能である。
【０３２９】
例えば、上記実施形態の処理にかかるプログラムを、コンピュータで読み取り可能な記憶媒体として提供することも可能である。記憶媒体としては、磁気ディスク、光ディスク（ＣＤ−ＲＯＭ、ＣＤ−Ｒ、ＤＶＤ等）、光磁気ディスク（ＭＯ等）、半導体メモリ等、プログラムを記憶でき、且つ、コンピュータが読み取り可能な記憶媒体であれば、その記憶形式は何れの形態であってもよい。
【０３３０】
また、上記実施形態の処理にかかるプログラムを、インターネット等のネットワークに接続されたコンピュータ上に格納し、ネットワーク経由でダウンロードさせることにより提供するように構成しても良い。
【０３３１】
また、上記実施形態では、ルールＤＢ１７１、部品ＤＢ１７２、禁止組合せＤＢ１７３を、記憶部１７に格納した態様を説明したが、何れか又は全てのＤＢを、インターネット等のネットワークに接続されたコンピュータ上に格納し、ネットワーク経由でダウンロードさせることにより利用する構成としても良い。
【図面の簡単な説明】
【０３３２】
【図１】情報管理支援装置のハードウェア構成を示した図である。
【図２】部品組合せルールの一例を示した図である。
【図３】部品データの一例を示した図である。
【図４】禁止組合せデータの一例を示した図である。
【図５】第１の実施形態に係る情報管理支援装置の機能構成を示した図である。
【図６】禁止組合せ結合部の詳細構成を示した図である。
【図７】ルール閲覧処理の手順を示したフローチャートである。
【図８】禁止組合せ該当部分抽出処理の手順を示したフローチャートである。
【図９】禁止組合せ関連性検査処理の手順を示したフローチャートである。
【図１０】禁止組合せ該当部分抽出処理後の部品組合せルールの状態の一例を示した図である。
【図１１】禁止組合せ分離処理の手順を示したフローチャートである。
【図１２】禁止組合せ分離処理後の部品組合せルールの状態の一例を示した図である。
【図１３】表示部に表示された部品組合せルールの一例を示した図である。
【図１４】第２の実施形態に係る情報管理支援装置の機能構成を示した図である。
【図１５】第２の実施形態に係る部品組合せルール編集処理の手順を示したフローチャートである。
【図１６】第２の実施形態に係る部品組合せルール編集処理の動作を説明するための図である。
【図１７】第２の実施形態に係る部品組合せルール編集処理の動作を説明するための図である。
【図１８】第２の実施形態に係る部品組合せルール編集処理の動作を説明するための図である。
【図１９】第２の実施形態に係る部品組合せルール編集処理の動作を説明するための図である。
【図２０】禁止組合せ除去処理の手順を示したフローチャートである。
【図２１】禁止組合せ除去処理の動作を説明するための図である。
【図２２】禁止組合せ除去処理の動作を説明するための図である。
【図２３】第３の実施形態に係る情報管理支援装置の機能構成を示した図である。
【図２４】第３の実施形態に係る部品組合せルール編集処理の手順を示したフローチャートである。
【図２５】第３の実施形態に係る部品組合せルール編集処理の動作を説明するための図である。
【図２６】第３の実施形態に係る部品組合せルール編集処理の動作を説明するための図である。
【図２７】第３の実施形態に係る部品組合せルール編集処理の動作を説明するための図である。
【図２８】第３の実施形態に係る部品組合せルール編集処理の動作を説明するための図である。
【図２９】第４の実施形態に係る情報管理支援装置の機能構成を示した図である。
【図３０】第４の実施形態に係る部品組合せルール編集処理の手順を示したフローチャートである。
【図３１】第４の実施形態に係る部品組合せルール編集処理の動作を説明するための図である。
【図３２】第４の実施形態に係る部品組合せルール編集処理の動作を説明するための図である。
【図３３】第４の実施形態に係る部品組合せルール編集処理の動作を説明するための図である。
【図３４】第４の実施形態に係る部品組合せルール編集処理の動作を説明するための図である。
【図３５】第５の実施形態に係る情報管理支援装置の機能構成を示した図である。
【図３６】第５の実施形態に係る部品組合せルール編集処理の手順を示したフローチャートである。
【図３７】第５の実施形態に係る部品組合せルール編集処理の動作を説明するための図である。
【図３８】第５の実施形態に係る部品組合せルール編集処理の動作を説明するための図である。
【図３９】第５の実施形態に係る部品組合せルール編集処理の動作を説明するための図である。
【図４０】第５の実施形態に係る部品組合せルール編集処理の動作を説明するための図である。
【図４１】第６の実施形態に係る情報管理支援装置の機能構成を示した図である。
【図４２】第６の実施形態に係る部品組合せルール編集処理の手順を示したフローチャートである。
【図４３】第６の実施形態に係る部品組合せルール編集処理の動作を説明するための図である。
【図４４】第６の実施形態に係る部品組合せルール編集処理の動作を説明するための図である。
【図４５】第７の実施形態に係る情報管理支援装置の機能構成を示した図である。
【図４６】第７の実施形態に係る部品組合せルール編集処理の手順を示したフローチャートである。
【図４７】第７の実施形態に係る部品組合せルール編集処理の動作を説明するための図である。
【図４８】第７の実施形態に係る部品組合せルール編集処理の動作を説明するための図である。
【図４９】第７の実施形態に係る部品組合せルール編集処理の動作を説明するための図である。
【図５０】第７の実施形態に係る部品組合せルール編集処理の動作を説明するための図である。
【図５１】第７の実施形態に係る部品組合せルール編集処理の動作を説明するための図である。
【図５２】第８の実施形態に係る情報管理支援装置の機能構成を示した図である。
【図５３】第８の実施形態に係る部品組合せルール編集処理の手順を示したフローチャートである。
【図５４】第８の実施形態に係る部品組合せルール編集処理の動作を説明するための図である。
【図５５】第８の実施形態に係る部品組合せルール編集処理の動作を説明するための図である。
【符号の説明】
【０３３３】
１００  情報管理支援装置
１１  ＣＰＵ
１２  操作部
１３  表示部
１４  ＲＯＭ
１５  ＲＡＭ
１６  通信部
１７  記憶部
１７１  ルールＤＢ
１７２  部品ＤＢ
１７３  禁止組合せＤＢ
１８  バス
１１１  ルール表示要求受付部
１１２  ルール読込部
１１３  禁止組合せ結合部
１１３１  部品種別抽出部
１１３２  禁止組合せ抽出部
１１３３  禁止組合せ該当部分抽出部
１１３４  禁止組合せ関連性検査部
１１３５  禁止組合せ分離部
１１３６  禁止マーク付加部
１１３７  表示制御部
２００  情報管理支援装置
２１１  ルール編集要求入力部
２１２  ルール編集部
２１２１  コード追加部
２１３  禁止組合せ除去部
２１４  ルールＤＢ更新部
３００  情報管理支援装置
３１１  ルール編集部
３１１１  ノード追加部
４００  情報管理支援装置
４１１  ルール編集部
４１１１  ルール削除部
５００  情報管理支援装置
５１１  ルール編集部
５１１１  枝変更部
６００  情報管理支援装置
６１１  ルール編集部
６１１１  ノード変更部
７００  情報管理支援装置
７１１  ルール編集部
７１１１  ルール再利用部
８００  情報管理支援装置
８１１  ルール編集部
８１１１  未割り当て補完部
【図１】
2009075734.tif 000003
【図２】
2009075734.tif 000004
【図３】
2009075734.tif 000005
【図４】
2009075734.tif 000006
【図５】
2009075734.tif 000007
【図６】
2009075734.tif 000008
【図７】
2009075734.tif 000009
【図８】
2009075734.tif 000010
【図９】
2009075734.tif 000011
【図１０】
2009075734.tif 000012
【図１１】
2009075734.tif 000013
【図１２】
2009075734.tif 000014
【図１３】
2009075734.tif 000015
【図１４】
2009075734.tif 000016
【図１５】
2009075734.tif 000017
【図１６】
2009075734.tif 000018
【図１７】
2009075734.tif 000019
【図１８】
2009075734.tif 000020
【図１９】
2009075734.tif 000021
【図２０】
2009075734.tif 000022
【図２１】
2009075734.tif 000023
【図２２】
2009075734.tif 000024
【図２３】
2009075734.tif 000025
【図２４】
2009075734.tif 000026
【図２５】
2009075734.tif 000027
【図２６】
2009075734.tif 000028
【図２７】
2009075734.tif 000029
【図２８】
2009075734.tif 000030
【図２９】
2009075734.tif 000031
【図３０】
2009075734.tif 000032
【図３１】
2009075734.tif 000033
【図３２】
2009075734.tif 000034
【図３３】
2009075734.tif 000035
【図３４】
2009075734.tif 000036
【図３５】
2009075734.tif 000037
【図３６】
2009075734.tif 000038
【図３７】
2009075734.tif 000039
【図３８】
2009075734.tif 000040
【図３９】
2009075734.tif 000041
【図４０】
2009075734.tif 000042
【図４１】
2009075734.tif 000043
【図４２】
2009075734.tif 000044
【図４３】
2009075734.tif 000045
【図４４】
2009075734.tif 000046
【図４５】
2009075734.tif 000047
【図４６】
2009075734.tif 000048
【図４７】
2009075734.tif 000049
【図４８】
2009075734.tif 000050
【図４９】
2009075734.tif 000051
【図５０】
2009075734.tif 000052
【図５１】
2009075734.tif 000053
【図５２】
2009075734.tif 000054
【図５３】
2009075734.tif 000055
【図５４】
2009075734.tif 000056
【図５５】
2009075734.tif 000057