説明

部品表を展開する装置及び方法

【課題】複数の製品の部品表をその複数の製品の各々を構成する各部品の員数が各部品に対応する位置に配置されるように並列に展開する処理を、製品の数が多くても高速に実行する。
【解決手段】並列展開装置の並列展開部40において、最終製品抽出部41が最終製品を抽出し、組み立て部品抽出部42がこの最終製品を直接構成する組み立て部品を抽出し、展開判定部43がこの組み立て部品を頂点とする部品表ツリーが展開済みかどうかを判定する。展開済みでなければ、隣接リスト展開部44が、組み立て部品を構成する各部品の員数を展開結果リストに登録し、各部品の員数と展開結果リストの各部品の登録位置とを記録したツリー固有リストを生成する。展開済みであれば、員数加算部46が、ツリー固有リストに記録された各部品の員数を、同じく記録された展開結果リストの各部品の登録位置における員数に加算する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、部品表を展開する装置及び方法に関する。特に、本発明は、複数の製品の部品表を、その複数の製品の各々を構成する各部品の員数が各部品に対応する位置に配置されるように並列に展開する装置及び方法に関する。
【背景技術】
【0002】
オプション装備やバリエーションが豊富な自動車のような組み立て加工の工業製品は、基本的な構造は殆ど同じだが、部分的な仕様の差異によって部分的に異なるだけの類似製品を多く含んでいる。設計及び開発の効率の向上のため、部品の共通化を推し進めるには、業務上このような類似製品の部品構成を比較して、どの部分が同じでどの部分が異なるかをできるだけ効率よく把握できるようにする必要がある。
部品表展開では、部品表ツリーの頂点である最終製品から正展開した結果をリストで表現したものがよく利用されるが、個々の部品表ツリーを正展開した結果を単に複数横に並べただけでは、複数の部品表ツリーの同一部分と相違部分を読み取ることは難しく、比較検討に適していない。そこで、部品構成が同じ部分は一箇所にマージし、部品構成が異なる部分はその部分の違いを表した並列化された表に展開する第1の並列展開方法が用いられる。このときのマージロジックは業務によって異なるが、全体の展開結果は、通常、各行を展開結果の部品に対応させ、各列を最終製品又はその1レベル下の組み立て部品に対応させた態様で表示される。
【0003】
但し、この部品表を並列に展開するロジックを全てSQL(Structured Query Language)で実装すると、処理に要する時間が長くなり、同じデータに繰り返しアクセスがなされるため、処理の無駄も多い。そこで、以下の第2の並列展開方法を用いることも考えられる。即ち、まず、DBにある部品及び部品構成に関するデータから必要なものだけを読み込み、メモリ上に、隣接リスト構造を基本とした部品表ツリーのグラフデータ構造を、並列化する全ての部品表ツリーについて構築する。次いで、このデータ構造を利用して部品表ツリーを展開し、1つ目の部品表ツリーを展開したときの展開結果リストを基軸リストとする。そして、2つ目以降の部品表ツリーを展開したときの展開結果における部品と同じ部品を、1つ目の部品表ツリーそのものではなく、それを展開した基軸リスト中に探索し、その部品の情報も基軸リストに保持する。基軸リストには並列化のための同じ部品及び異なる部品の情報が全て登録されているので、ここから必要な態様で結果を出力することができる。
【0004】
尚、公報記載の技術としては、共用部品及び非共用部品に着目した技術として、例えば特許文献1の技術がある。
特許文献1の技術では、製品群を構成する各製品の部品を機能と属性に分析し、共用部品と非共用部品に分類し、非共用部品の機能を共用機能と非共用機能に分類し、属性を満足する材料と工法から、部材費を最小にする構造を創出する改善指針を生成する。
【0005】
また、部品表の管理に関する技術として、例えば特許文献2〜4の技術がある。
特許文献2の技術では、製品の構成情報を格納した記憶部の構成情報表から、構成情報取得部が製品モデルの構成情報を取得し、取得した前記類似した複数の製品モデルの構成情報を、構成情報組立部で1つの複数モデル部品表にまとめ、さらに部品情報編集部で編集し、部品情報編集部で編集された前記複数モデル部品表は、構成情報分解部に渡されると、数量の欄を基準に各モデルごとに分解され、親品名、品名、数量の列を持つレコードにそれぞれ分解され、部品の構成を構成情報表に格納する形式に変換され、複数モデル間で重複するレコードが省かれて構成情報表にデータが登録される。
【0006】
特許文献3の技術では、部品情報システムは、部品表データベースと、ワークフロー管理機能と、スケジュール管理機能と、部品表展開機能を有している。部品表データベースには、製品開発の各工程(デザイン工程、コンセプト企画工程、エンジニアリング工程、生産工程)で作成される部品表データが相互に関連付けられて一体として管理されており、さらにこれらに関連付けられてCADデータやドキュメントデータや部品カタログデータが保持されている。ワークフロー管理機能は、上記複数の各工程が同時並行的に実行されるように、各工程の作業支援のための開発機能部を制御する。ある工程での変更は部品表データベースを介して他工程に速やかに伝播される。
【0007】
特許文献4の技術では、部品表作成部とレイアウト表作成部とレイアウト部とを具備する電子パーツリストシステムを用いる。部品表作成部は、設計参照情報を参考にした設計者の入力に基づき、自動車の設計に用いる部品に関する部品情報を含む部品表としての電子パーツリストを生成する。レイアウト表作成部は、部品情報に基づいて、部品のレイアウトに必要なレイアウト必要情報を含む表としてのレイアウトリストを生成する。レイアウト部は、設計参照情報と、部品情報と、レイアウト必要情報とに基づき、部品の配置状態としてのレイアウト情報を生成する。そして、電子パーツリストとレイアウトリストとレイアウト情報とは、相互に関連付けられる。
【0008】
更に、技術部品表や図面、部品特性表で用いられる関連性のある情報の適性を調べる技術として、例えば特許文献5の技術がある。
特許文献5の技術では、部番ルールデータベースと品目チェック部とを含む総合検査システムを用いる。部番ルールデータベースは、部番のルールを格納する。品目チェック部は、ルールに従う電子パーツリストの第1部品の第1部番と、部品特性表の第2部品の第2部番とに基づいて、第2部番と適合する第1部番としての特定第1部番を検出し、特定第1部番を有する特定第1部品の、電子パーツリストにおける階層を検出し、その階層と予め設定された第2部品の階層との一致を確認する。ここで電子パーツリストは、第1部番と第1部品に関する第1部品情報とを関連付け、第1部品の各々を階層構造で管理する。部品特性表は、第2部品の仕様の差を決める複数の装備と装備の組み合わせと第2部番とを関連付ける。
【先行技術文献】
【特許文献】
【0009】
【特許文献1】特開2009−265706号公報
【特許文献2】特開平11−203327号公報
【特許文献3】特開2002−73708号公報
【特許文献4】特開2003−281199号公報
【特許文献5】特開2003−281203号公報
【発明の概要】
【発明が解決しようとする課題】
【0010】
ところで、上述した第2の並列展開方法では、列、つまり最終製品が少なければ、行、つまり部品表ツリーに含まれる部品が多くても、高速に処理可能である。しかしながら、列が多い場合には、行が少なかったとしても実行性能が出ないことがある。これは、各列に対応する部品表ツリー中の部品をマージする際の比較処理等に時間がかかってしまうためである。並列展開の結果の表の列が最終製品を表す場合、列の数は、少なくとも数百、多いときには数千になることがあるが、こうなると、DBアクセスの時間を短縮できたとしても、展開自体に何時間もかかることになる。
【0011】
尚、公報記載の技術は、何れも、複数の製品の部品表をその複数の製品の各々を構成する各部品の員数が各部品に対応する位置に配置されるように並列に展開する処理におけるこのような課題を解決する手法を提案するものではない。
【0012】
本発明の目的は、複数の製品の部品表をその複数の製品の各々を構成する各部品の員数が各部品に対応する位置に配置されるように並列に展開する処理を、製品の数が多くても高速に実行することにある。
【課題を解決するための手段】
【0013】
かかる目的のもと、本発明は、複数の製品の部品表を、複数の製品の各々を構成する各部品の員数が各部品に対応する位置に配置されるように並列に展開する装置であって、複数の製品のうちの特定の製品を直接構成する特定の部品を選択する選択部と、選択部により選択された特定の部品の部品表が展開済みであるかどうかを判定する判定部と、特定の部品の部品表が展開済みでないと判定部により判定された場合に、特定の部品の部品表を、特定の部品を構成する各部品に対応する位置で特定の製品に対応する位置に各部品の員数が格納された並列展開情報と、各部品の員数と並列展開情報における各部品に対応する位置を特定する情報とを含む部品表展開情報とに展開する展開部と、特定の部品の部品表が展開済みであると判定部により判定された場合に、部品表展開情報に含まれる各部品の員数を、並列展開情報における位置であって、部品表展開情報に含まれる情報で特定される各部品に対応する位置で特定の製品に対応する位置に格納された員数に加算する加算部とを含む、装置を提供する。
【0014】
ここで、展開部は、特定の部品を構成する各部品に対応する位置として、その員数が並列展開情報に格納されていない部品については、予め定められた規則によって決まる位置を用い、その員数が並列展開情報に格納されている部品については、員数が格納された位置を用いる、ものであってよい。
また、展開部は、特定の部品の部品表を、特定の部品に対応する位置で特定の製品に対応する位置に特定の部品の員数が更に格納された並列展開情報と、特定の部品の員数と並列展開情報における特定の部品に対応する位置を特定する情報とを更に含む部品表展開情報とに展開し、加算部は、部品表展開情報に含まれる特定の部品の員数を、並列展開情報における位置であって、部品表展開情報に含まれる情報で特定される特定の部品に対応する位置で特定の製品に対応する位置に格納された員数に加算する、ものであってよい。
この場合、展開部は、特定の部品に対応する位置として、その員数が並列展開情報に格納されていなければ、予め定められた規則によって決まる位置を用い、その員数が並列展開情報に格納されていれば、員数が格納された位置を用いる、ものであってよい。
【0015】
また、本発明は、複数の製品の部品表を、複数の製品の各々を構成する各部品の員数が各部品に対応する位置に配置されるように並列に展開する装置であって、複数の製品のうちの特定の製品を直接構成する特定の部品を選択する選択部と、選択部により選択された特定の部品の部品表が展開済みであるかどうかを判定する判定部と、特定の部品の部品表が展開済みでないと判定部により判定された場合に、特定の部品の部品表を、複数の製品を構成する複数の部品をそれぞれ表す複数のノードを持ち、複数のノードの各部品を表すノードに対応する配列の特定の製品に対応する位置に各部品の員数が格納された並列展開リストと、特定の部品を構成する複数の部品をそれぞれ表す複数のノードを持ち、複数のノードの各部品を表すノードに各部品の員数と並列展開リストにおける各部品を表すノードを特定する情報とが登録された部品表展開リストとに展開する展開部と、特定の部品の部品表が展開済みであると判定部により判定された場合に、部品表展開リストが持つ各ノードに登録された各部品の員数を、並列展開リストにおけるノードであって、部品表展開リストが持つ各ノードに登録された情報で特定される各部品を表すノードに対応する配列の特定の製品に対応する位置に格納された員数に加算する加算部とを含む、装置も提供する。
【0016】
ここで、この装置は、複数の製品の部品表を記憶するデータベースと、複数の製品の部品表に基づいて生成された隣接リストであって、複数の製品と、複数の製品を構成する複数の部品とを表す複数のノードを持つ隣接リストを記憶するメモリとを更に備え、選択部は、隣接リストが持つ複数のノードのうち、特定の製品を表すノードが持つリストに登録された情報で特定されるノードが表す部品を、特定の部品として選択する、ものであってよい。
【0017】
更に、本発明は、複数の製品の部品表を、複数の製品の各々を構成する各部品の員数が各部品に対応する位置に配置されるように並列に展開する方法であって、複数の製品のうちの特定の製品を直接構成する特定の部品を選択するステップと、選択された特定の部品の部品表が展開済みであるかどうかを判定するステップと、特定の部品の部品表が展開済みでないと判定された場合に、特定の部品の部品表を、特定の部品を構成する各部品に対応する位置で特定の製品に対応する位置に各部品の員数が格納された並列展開情報と、各部品の員数と並列展開情報における各部品に対応する位置を特定する情報とを含む部品表展開情報とに展開するステップと、特定の部品の部品表が展開済みであると判定された場合に、部品表展開情報に含まれる各部品の員数を、並列展開情報における位置であって、部品表展開情報に含まれる情報で特定される各部品に対応する位置で特定の製品に対応する位置に格納された員数に加算するステップとを含む、方法も提供する。
【0018】
更にまた、本発明は、複数の製品の部品表を、複数の製品の各々を構成する各部品の員数が各部品に対応する位置に配置されるように並列に展開する装置として、コンピュータを機能させるプログラムであって、コンピュータを、複数の製品のうちの特定の製品を直接構成する特定の部品を選択する選択部と、選択部により選択された特定の部品の部品表が展開済みであるかどうかを判定する判定部と、特定の部品の部品表が展開済みでないと判定部により判定された場合に、特定の部品の部品表を、特定の部品を構成する各部品に対応する位置で特定の製品に対応する位置に各部品の員数が格納された並列展開情報と、各部品の員数と並列展開情報における各部品に対応する位置を特定する情報とを含む部品表展開情報とに展開する展開部と、特定の部品の部品表が展開済みであると判定部により判定された場合に、部品表展開情報に含まれる各部品の員数を、並列展開情報における位置であって、部品表展開情報に含まれる情報で特定される各部品に対応する位置で特定の製品に対応する位置に格納された員数に加算する加算部として機能させる、プログラムも提供する。
【発明の効果】
【0019】
本発明によれば、複数の製品の部品表をその複数の製品の各々を構成する各部品の員数が各部品に対応する位置に配置されるように並列に展開する処理を、製品の数が多くても高速に実行することができる。
【図面の簡単な説明】
【0020】
【図1】並列展開の対象となる部品表ツリーの例を示した図である。
【図2】部品表ツリーから生成された隣接リスト構造の例を示した図である。
【図3】部品表ツリーを並列展開した結果を表示する態様を示した図である。
【図4】部品表ツリーから生成された展開結果リストの例を示した図である。
【図5】部品表ツリーから生成された展開結果リストの例を示した図である。
【図6】第1の実装例について説明するための図である。
【図7】第2の実装例について説明するために用いる部品表ツリーを示した図である。
【図8】第2の実装例について説明するために用いる部品表ツリーから生成された隣接リスト構造の例を示した図である。
【図9】第2の実装例で展開済みの列内の全ての員数をコピーしたときの展開結果を示した図である。
【図10】第2の実装例で展開済みの列内の必要な員数のみをコピーしたときの展開結果を示した図である。
【図11】第2の実装例で幅優先展開を行う場合の並列展開用データ構造の例を示した図である。
【図12】第2の実装例で深さ優先展開を行う場合の並列展開用データ構造の例を示した図である。
【図13】本発明の実施の形態における並列展開装置の機能構成例を示したブロック図である。
【図14】本発明の実施の形態における並列展開部の動作例を示したフローチャートである。
【図15】本発明の実施の形態を適用可能なコンピュータのハードウェア構成を示した図である。
【発明を実施するための形態】
【0021】
以下、添付図面を参照して、本発明の実施の形態について詳細に説明する。
[本実施の形態のベースとなる設計法]
本実施の形態では、DB(データベース)に格納された部品表ツリーを、メモリ上に隣接リスト構造として構築されているグラフ構造上で展開し、展開結果を、連結リストと、その個々のノードに対する員数が格納された員数配列とで表す。また、並列化対象の別の部品表ツリーも同様にこのグラフ構造上で展開し、マージ対象の部品のノードをこの連結リスト上で探索する。マージ対象の部品のノードが見つかれば、見つかったノードに対する員数配列に員数を書き込む。マージ対象のノードが見つからなければ、連結リストに新しいノードを挿入する。この操作を並列化対象の最終製品の配下にある全ての部品表ツリーについて繰り返す。
【0022】
本実施の形態における並列展開の高速化のベースになるのは、グラフ理論に基づく汎用的なデータ構造を採用した設計案である。DBアクセスは全て最初に行うので、I/Oを最小化できる。また、展開結果は、配列の代わりに、連結リストで表すので、データの挿入及び削除が効率よく行える。更に、メモリ上にグラフ構造の部品表ツリーを持っているので、深さ優先展開(深さ優先探索に基づく展開)も幅優先展開(幅優先探索に基づく展開)も必要に応じて何度でも繰り返し実行でき、しかも展開する際にはメモリ上のポインタを辿るだけでよいので、極めて効率がよい。
【0023】
図1は、本実施の形態で並列展開の対象とする部品表ツリーの例を示したものである。
(a)は最終製品Aの部品表ツリーを示し、(b)は最終製品Bの部品表ツリーを示している。尚、図中、部品の後ろの記号は、部品の品番である。また、各部品表ツリーの左側の太字の数字は展開レベルを表す。ここでは、最終製品の1つ下の部品(組み立て部品)P1,P1’の展開レベルを0としている。更に、部品をつなぐ線に付した数字は員数を表す。実際には最終製品を構成する組み立て部品が1つだけということはあり得ないが、ここでは便宜上、簡略化した例を示している。
【0024】
また、図2は、図1の部品表ツリーに対する隣接リスト構造の例を示したものである。
例えば、図1(a),(b)の部品表ツリーに対応する構成データをDBから再帰SQL等で読み込み、メモリ上の隣接リスト構造に展開したときの状態である。尚、ここでは、各部品表ツリーの展開レベルが0以下の部分を展開している。また、矢印はポインタを表しており、部品表ツリーの並列展開はこのポインタを辿るだけで再帰的に高速に行えるようになっている。
【0025】
図3は、図1の部品表ツリーを並列展開した結果を表示する態様を示したものである。
(a)では、部品表ツリーの展開結果が、品番をその展開レベルに応じた量だけインデントさせた形式で表示されている。
(b)では、(a)の表示に加え、計算された員数がマトリックス内に表示されている。このマトリックスにおいて、ある最終製品の部品表ツリーに含まれる部品は、その最終製品の列における員数が0でない部品である。また、ある最終製品の部品表ツリー内のある部品の直接の親部品は、その最終製品の列をその部品から上に辿っていって、その部品よりも展開レベルが1つ小さく、員数が0でない部品のうち、最初に遭遇したものである。
【0026】
[並列展開のデータ構造と作成ロジック]
図3(a),(b)の何れの態様で表示する場合も、その元となるデータは同様のデータ構造で表すことができる。
図4は、図1(a)の部品表ツリーに対応するデータ構造(展開結果リスト)を示したものである。
まず、図1(a)の部品表ツリーを深さ優先探索で展開し、展開結果を連結リストに保持しておく。同時に、連結リストに含まれる部品のノードに対して、マトリックスの列数をサイズとする動的配列を作っておく。そして、動的配列の1列目に、対応する部品の員数を格納し、これを員数配列とする。
【0027】
その後、この展開結果リストを基軸リストとして、図1(b)の部品表ツリーを深さ優先探索で展開し、展開結果をこの基軸リストに当てる。このとき、次のマージルールを適用する。
即ち、現在展開中の部品と同じ展開レベルに同じ部品があれば、員数配列の2列目のその部品に対応する位置に員数の計算結果を書き込む。一方、現在展開中の部品と同じ展開レベルに同じ部品がなければ、その展開レベルの末尾に現在の部品を追加する。但し、このマージルールは、具体的な業務要件の一例であって、マージの方法や部品の追加位置は業務によって様々に変わり得る。しかし、この部分のロジックはデータ構造から独立しているので、後で修正することも容易である。
ここで、マージの基本的な考え方は、これから展開する部品表ツリーの部品を同じ展開レベルで探索し、マッチする部品が基軸リストになければ行を挿入し、マッチする部品が基軸リストにあれば基軸リストのそのマッチした行の員数配列に今展開している部品の員数を書き込む、というものである。
【0028】
図5は、このロジックによるマージの結果を示したものである。
即ち、図4の基軸リストに対してこのロジックにより図1(b)の部品表ツリーの展開結果をマージしていったときの結果を示している。
このマージの後、展開結果を表す連結リストとその各ノードに対する員数配列の値とは、図3(a),(b)の何れの形式でも出力できる。
【0029】
ところで、この例では、部品表ツリーは2つ、つまり展開結果の表における列は2列としたが、展開結果の表における列が何百列、何千列になる場合もある。その場合、部品表ツリーの展開自体はポインタを辿ることで高速に行えたとしても、マージのための部品の比較処理の繰り返し数が多くなり、処理に要する時間が長くなってしまう。
【0030】
[本実施の形態における具体的な実装方法]
先に述べたように、最終製品は様々なオプションを反映しているために多数存在したとしても、その1レベル下の組み立て部品は、共通化されており、その種類は限られている。上記の例では、最終製品A、Bに全く同じ組み立て部品が含まれていれば、その組み立て部品を頂点とする部品表ツリーは全く同じなので、最終製品Aを展開した結果、つまり展開した品番及び員数をその順序通りに最終製品Bの列にコピーすればよい。即ち、展開を終えた組み立て部品の列を記録しておき、その後、別の最終製品から辿った組み立て部品に展開済みの列が含まれていれば、その列の員数を現在の最終製品の列にコピーしてくるだけでよい。
【0031】
(第1の実装例)
図6は、本実施の形態における第1の実装例を示したものである。
ここでは、(a)に示すように、極端な例として、全ての最終製品が同じ組み立て部品を構成部品として使っている場合を考える。この場合、どの最終製品の列でも展開結果は全く同じであり、同じ部品は全てマージされるので、列ごとに部品表ツリーを展開するのは無駄である。
そこで、(b)に示すように、最初の展開結果の員数を員数配列の各列にコピーすることが考えられる。
【0032】
しかしながら、この方法では問題が生じる。というのは、異なる最終製品が全く同じ組み立て部品のみから構成されることはないからである。つまり、最終製品が異なるのは組み立て部品に違いがあるためであり、この違いのために、単純に展開結果の員数をコピーするだけでは済まない。展開結果の列は、その列の最終製品にぶら下がっている組み立て部品配下の部品表ツリーにおける全ての部品を含んでいる。従って、最終製品が複数の組み立て部品から構成されていれば、1つの組み立て部品だけの展開結果ではなくなってしまう。
【0033】
(第2の実装例)
そこで、本実施の形態では、この第2の実装例を提案する。
図7は、この第2の実装例について説明するための部品表ツリーの例を示したものである。
(a)は最終製品Aの部品表ツリーを示し、(b)は最終製品Bの部品表ツリーを示し、(c)は最終製品Cの部品表ツリーを示している。この例では、最終製品A,Cは、共通の組み立て部品M1から構成されており、最終製品A,Bは、共通の組み立て部品M2から構成されており、最終製品B,Cは、共通の組み立て部品M3から構成されている。
【0034】
また、図8は、図7の部品表ツリーに対する隣接リスト構造の例を示したものである。
即ち、図7の並列展開対象の部品表ツリーのデータをDBから全て読み込んでメモリ上の隣接リスト構造に展開すると、図のようになる。
ディクショナリには、部品表ツリーに含まれる部品に対応する部品データが重複を排除して登録されている。
また、各部品データは、その1レベル下の部品のリスト(部品リスト)を持っている。
更に、部品リストの各部品のノードは、その部品に対応する部品データへの位置情報を持っている。
このような隣接リスト構造を用いると、頂点の部品データから部品リストを辿り、その部品リストの各部品のノードからその部品に対応する部品データを辿ることによって、部品表ツリーの展開が実現できる。
【0035】
この場合において、単純に展開結果の列における員数をコピーしたとする。
図9は、このときの展開結果の表を示したものである。但し、図7の(a),(b)の部品表ツリーについてのみ示している。
まず、(a)に示すように、最終製品Aにおける組み立て部品M1が展開される。最終製品Bには組み立て部品M1はぶら下がっていないので、(b)に示すように、最終製品Bの列には員数0が格納される。
次に、(c)に示すように、最終製品Aにおける組み立て部品M2が展開される。最終製品Bには組み立て部品M2がぶら下がっており、最終製品Aの列で展開済みなので、(d)に示すように、最終製品Aの列に格納された員数を最終製品Bの列にコピーする。
また、最終製品Bには組み立て部品M3がぶら下がっているので、(e)に示すように、最終製品Bにおける組み立て部品M3が展開される。
【0036】
しかしながら、このように単純に員数をコピーしたのでは、結果が正しくなくなってしまう。単に員数をコピーした場合、最終製品Aの列の組み立て部品M1の員数もついてきてしまって、最終製品Bの列の員数が、実際よりも増えてしまうからである。
【0037】
図10は、正しい展開結果の表を示したものである。
本来、最終的な展開結果はこのようにならなければならない。
図9で員数が正しくならないのは、単純に展開結果の列における員数をコピーしただけでは、複数の組み立て部品の展開結果の違いが判別できないからである。
【0038】
そこで、この第2の実装例では、組み立て部品ごとの部品表ツリーの展開結果をツリー固有リストとして個別に保持し、そのツリー固有リストのノードに、展開結果リストの対応する行をポイントさせておく。また、組み立て部品以下の部品表ツリーごとの展開結果が必要なので、コピー元となる情報も、組み立て部品以下の部品表ツリーごとに持っておく。
【0039】
図11は、この第2の実装例で幅優先展開を行う場合の並列展開用データ構造を示したものである。尚、幅優先展開では、最終製品Aの部品表ツリーは、M1,M2,P1,P2,P1,P3の順に展開され、最終製品Bの部品表ツリーは、M2,M3,P1,P3,P2,P4の順に展開され、最終製品Cの部品表ツリーは、M1,M3,P1,P2,P2,P4の順に展開される。
【0040】
ところで、この並列展開用データ構造において、各組み立て部品には、その組み立て部品の配下の部品表ツリーのみを展開して員数を計算した結果を保持するツリー固有リストがぶら下がっている。ツリー固有リストにおける[]内の数値が、計算された員数を表す。尚、このツリー固有リストは、最終的に複数の部品表ツリーがマージされた展開結果リストとは異なる。組み立て部品を頂点とする部品表ツリーが最初に展開されるときに1回だけ作成されるものである。そして、そのタイミングで、ツリー固有リストの各部品が展開結果リストのどの部品に当たるか分かるので、後で検索しないで済むようにポインタでその部品の場所を記憶しておく。このため、ツリー固有リストにおいては展開の順序を気にする必要がない。
その後、その組み立て部品を頂点とする部品表ツリーが再び現れると、その組み立て部品にぶら下がっているツリー固有リストから展開結果と各部品の展開結果リストでの位置とを取り出し、その位置に展開結果をマージ(コピー)する。
【0041】
例えば、最終製品A,B,Cの順に部品表ツリーが展開されるとすると、組み立て部品M2のツリー固有リストは、最終製品Aの部品表ツリーを展開する際に初めて作成される。その後、最終製品Bの部品表ツリーを展開する際に組み立て部品M2が現れると、組み立て部品M2のツリー固有リストは既に存在する。そこで、そのツリー固有リストの部品から展開結果リストの対応する部品をポインタで辿り、その展開結果リストの対応する部品に対する員数配列の最終製品Bの列に、ツリー固有リストが保持する員数を加算する。
【0042】
ここで、この場合の部品表ツリーの展開動作の概要を説明する。
まず、最終製品Aの1レベル下の組み立て部品M1を処理する場合を考える。この場合は、まず、組み立て部品M1を頂点とするツリー固有リストに部品P1,P2の員数が記録される。また、展開結果リストに組み立て部品M1、部品P1,P2のノードが登録され、それぞれのノードに対する員数配列の最終製品Aの列の員数にそれぞれの員数が加算される。その後、組み立て部品M1を頂点とするツリー固有リストに、展開結果リストにおける組み立て部品M1、部品P1,P2の登録位置が記録される。
次に、最終製品Aの1レベル下の組み立て部品M2を処理する場合を考える。この場合は、まず、組み立て部品M2を頂点とするツリー固有リストに部品P1,P3の員数が記録される。また、展開結果リストに部品P1のノードが見つかり、組み立て部品M2、部品P3のノードが登録され、それぞれのノードに対する員数配列の最終製品Aの列にそれぞれの員数が加算される。その後、組み立て部品M2を頂点とするツリー固有リストに、展開結果リストにおける組み立て部品M2、部品P1,P3の登録位置が記録される。
【0043】
次に、最終製品Bの1レベル下の組み立て部品M2を処理する場合を考える。この場合は、組み立て部品M2を頂点とするツリー固有リストに記録された組み立て部品M2、部品P1,P3の員数のコピー先が、このツリー固有リストに記録された登録位置によって決定され、展開結果リストの組み立て部品M2,部品P1,P3のノードに対する員数配列の最終製品Bの列にそれぞれの員数が加算される。
次に、最終製品Bの1レベル下の組み立て部品M3を処理する場合を考える。この場合は、まず、組み立て部品M3を頂点とするツリー固有リストに部品P2,P4の員数が記録される。また、展開結果リストに部品P2のノードが見つかり、組み立て部品M3、部品P4のノードが登録され、それぞれのノードに対する員数配列の最終製品Bの列の員数にそれぞれの員数が加算される。その後、組み立て部品M3を頂点とするツリー固有リストに、展開結果リストにおける組み立て部品M3、部品P2,P4の登録位置が記録される。
【0044】
次に、最終製品Cの1レベル下の組み立て部品M1を処理する場合を考える。この場合は、組み立て部品M1を頂点とするツリー固有リストに記録された組み立て部品M1、部品P1,P2の員数のコピー先が、このツリー固有リストに記録された登録位置によって決定され、展開結果リストの組み立て部品M1,部品P1,P2のノードに対する員数配列の最終製品Cの列にそれぞれの員数が加算される。
最後に、最終製品Cの1レベル下の組み立て部品M3を処理する場合を考える。この場合は、組み立て部品M3を頂点とするツリー固有リストに記録された組み立て部品M3、部品P2,P4の員数のコピー先が、このツリー固有リストに記録された登録位置によって決定され、展開結果リストの組み立て部品M3,部品P2,P4のノードに対する員数配列の最終製品Cの列にそれぞれの員数が加算される。
【0045】
また、図12は、この第2の実装例で深さ優先展開を行う場合の並列展開用データ構造を示したものである。尚、深さ優先展開では、最終製品Aの部品表ツリーは、M1,P1,P2,M2,P1,P3の順に展開され、最終製品Bの部品表ツリーは、M2,P1,P3,M3,P2,P4の順に展開され、最終製品Cの部品表ツリーは、M1,P1,P2,M3,P2,P4の順に展開される。
【0046】
深さ優先展開を行う場合のデータ構造及び展開動作は、展開結果リストにおける部品の順序が深さ優先展開に応じた順序になっている以外は、幅優先展開を行う場合のデータ構造と同様であるので、ここでの説明は省略する。
【0047】
このように、第2の実装例では、ツリー固有リストの各部品に展開結果リストにおけるその部品の位置を記憶しておくことで、マージのための無駄な比較処理を省くことができ、並列展開のパフォーマンスが飛躍的に向上する。
【0048】
[本実施の形態における実装方法を実現する並列展開装置]
次に、本実施の形態で提案する第2の実装例を実現する並列展開装置について説明する。
(並列展開装置の機能構成)
図13は、このような並列展開装置の機能構成例を示したものである。
図示するように、並列展開装置は、部品表ツリー記憶部10と、部品表ツリー展開部20と、隣接リスト記憶部30と、並列展開部40と、展開結果リスト記憶部50と、展開結果出力部60とを備えている。
【0049】
部品表ツリー記憶部10は、複数の製品の部品表ツリーを記憶するDBである。この部品表ツリー記憶部10は、例えば、磁気ディスク装置90g(図15参照)によって実現される。
【0050】
部品表ツリー展開部20は、部品表ツリー記憶部10に記憶された複数の製品の部品表ツリーを隣接リスト構造に展開する。この部品表ツリー展開部20は、例えば、CPU90a(図15参照)が磁気ディスク装置90g(図15参照)に記憶されたプログラムをメインメモリ90c(図15参照)に読み込んで実行することによって実現される。
【0051】
隣接リスト記憶部30は、部品表ツリー展開部20が部品表ツリーを展開することによって生成した隣接リスト構造のデータを記憶する。この隣接リスト記憶部30は、例えば、メインメモリ90c(図15参照)によって実現される。本実施の形態では、隣接リストを記憶するメモリの一例として、隣接リスト記憶部30を設けている。
【0052】
並列展開部40は、隣接リスト記憶部30に記憶された隣接リスト構造のデータのポインタを辿ることにより、複数の製品の部品表ツリーを並列に展開し、展開結果リストを生成する。この並列展開部40は、例えば、CPU90a(図15参照)が磁気ディスク装置90g(図15参照)に記憶されたプログラムをメインメモリ90c(図15参照)に読み込んで実行することによって実現される。
【0053】
展開結果リスト記憶部50は、並列展開部40により生成された展開結果リストを記憶する。ここで、展開結果リストは、既に述べた通り、並列展開対象の複数の製品を構成する各部品を表すノードを連結した連結リストと、ノードごとにそのノードが表す部品の各製品における員数を格納する員数配列とを含んでいる。この隣接リスト記憶部30は、例えば、メインメモリ90c(図15参照)によって実現される。本実施の形態では、並列展開情報、並列展開リストの一例として、展開結果リストを用いている。
【0054】
展開結果出力部60は、展開結果リスト記憶部50に記憶された展開結果リストに保持された情報を例えば表示機構90d(図15参照)に出力する。この展開結果出力部60は、例えば、CPU90a(図15参照)が磁気ディスク装置90g(図15参照)に記憶されたプログラムをメインメモリ90c(図15参照)に読み込んで実行することによって実現される。
【0055】
ここで、並列展開部40について更に詳しく説明する。
図示するように、並列展開部40は、最終製品抽出部41と、組み立て部品抽出部42と、展開判定部43と、隣接リスト展開部44と、ツリー固有リスト記憶部45と、員数加算部46とを備えている。
【0056】
最終製品抽出部41は、隣接リスト記憶部30に記憶された隣接リスト構造のデータから、最終製品を抽出する。本実施の形態では、製品の一例として、最終製品を用いている。
【0057】
組み立て部品抽出部42は、隣接リスト記憶部30に記憶された隣接リスト構造のデータから、最終製品抽出部41により抽出された最終製品を直接構成する組み立て部品を抽出する。具体的には、隣接リスト構造のデータにおいて最終製品のデータからポインタを辿ることにより、組み立て部品を抽出する。本実施の形態では、特定の製品を直接構成する特定の部品の一例として、組み立て部品を用いており、特定の部品を選択する選択部の一例として、組み立て部品抽出部42を設けている。
【0058】
展開判定部43は、組み立て部品抽出部42により抽出された組み立て部品を頂点とする部品表ツリーが展開済みであるかどうかを判定する。本実施の形態では、特定の部品の部品表が展開済みであるかどうかを判定する判定部の一例として、展開判定部43を設けている。
【0059】
隣接リスト展開部44は、組み立て部品抽出部42により抽出された組み立て部品を頂点とする部品表ツリーが展開済みでないと展開判定部43で判定された場合に、隣接リスト記憶部30に記憶された隣接リスト構造のデータを参照して、その組み立て部品を頂点とする部品表ツリーを展開する。具体的には、隣接リスト構造のデータにおいてその組み立て部品のデータからポインタを辿ることにより、部品表ツリーを展開する。そして、部品表ツリーを展開することで、ツリー固有リスト及び展開結果リストを生成する。本実施の形態では、特定の部品の部品表が展開済みでないと判定された場合にその特定の部品の部品表を展開する展開部の一例として、隣接リスト展開部44を設けている。
【0060】
ツリー固有リスト記憶部45は、隣接リスト展開部44が部品表ツリーを展開することで生成されたツリー固有リストを記憶する。ここで、ツリー固有リストは、既に述べた通り、組み立て部品を表すノードにその組み立て部品を頂点とする部品表ツリー内の各部品を表すノードが連結された連結リストであり、各ノードにはそのノードが表す部品の員数及び展開結果リストにおけるそのノードが表す部品の行を示す情報が登録されている。本実施の形態では、部品表展開情報、部品表展開リストの一例として、ツリー固有リストを用いている。
【0061】
員数加算部46は、組み立て部品抽出部42により抽出された組み立て部品を頂点とする部品表ツリーが展開済みであると展開判定部43で判定された場合に、ツリー固有リスト記憶部45に記憶されたその組み立て部品にぶら下がったツリー固有リストの各ノードに登録された員数を、そのノードに登録された情報で特定される展開結果リストの行の員数配列における対象の最終製品の列に格納された員数に加算する。本実施の形態では、特定の部品の部品表が展開済みであると判定された場合に部品表展開情報に含まれる各部品の員数を並列展開情報における員数に加算する加算部の一例として、員数加算部46を設けている。
【0062】
(並列展開装置の動作)
この並列展開装置では、まず、部品表ツリー展開部20が、並列展開すべき部品表データを全て部品表ツリー記憶部10から読み込んで隣接リスト構造に展開し、この隣接リスト構造のデータを隣接リスト記憶部30に記憶しておく。次いで、展開すべき最終製品の展開順序を決めて、その1レベル下の組み立て部品を順次取り出せるようにしておく。これは、例えば、隣接リスト構造のデータにおける最終製品のデータに展開順序を示すデータを持たせることによって実現可能である。
【0063】
このような処理が行われていることを前提として、並列展開部40は動作を開始する。
図14は、並列展開部40の動作例を示したフローチャートである。
並列展開部40では、まず、最終製品抽出部41が、展開すべき最終製品がまだあるかどうかを判定する(ステップ401)。そして、展開すべき最終製品がまだあると判定されれば、隣接リスト記憶部30に記憶された隣接リスト構造のデータから最終製品を取り出す(ステップ402)。
最終製品抽出部41により最終製品が取り出されると、次に、組み立て部品抽出部42が、最終製品の1レベル下の組み立て部品がまだあるかどうかを判定する(ステップ403)。そして、組み立て部品がまだあると判定されれば、隣接リスト記憶部30に記憶された隣接リスト構造のデータから組み立て部品を取り出す(ステップ404)。
【0064】
組み立て部品抽出部42により組み立て部品が取り出されると、展開判定部43は、取り出された組み立て部品を頂点とする部品表ツリーが展開済みであるかどうかを判定する(ステップ405)。これは、例えば、隣接リスト構造のデータにおける組み立て部品のデータにその組み立て部品を頂点とする部品表ツリーが展開済みであるかどうかを示すフラグを持たせることによって実現可能である。
【0065】
その結果、部品表ツリーが展開済みでないと判定されれば、隣接リスト展開部44が、隣接リスト記憶部30に記憶された隣接リスト構造のデータを参照することにより、ステップ404で取り出された組み立て部品を頂点とする部品表ツリーを展開する。
【0066】
即ち、隣接リスト展開部44は、まず、その部品表ツリー内に展開すべき部品がまだあるかどうかを判定する(ステップ406)。そして、その部品表ツリー内に展開すべき部品がまだあると判定されれば、隣接リスト記憶部30に記憶された隣接リスト構造のデータから部品を取り出す(ステップ407)。尚、図7〜12の例では、組み立て部品もツリー固有リスト及び展開結果リストに登録しているので、ここで組み立て部品も取り出すことになるが、組み立て部品は取り出さずに、組み立て部品を構成する部品のみを取り出すようにしてもよい。また、このときの部品を取り出す順序としては、図11に示した幅優先探索に基づく順序であってもよいし、図12に示した深さ優先探索に基づく順序であってもよい。
【0067】
次に、隣接リスト展開部44は、ステップ404で取り出された組み立て部品を頂点とするツリー固有リストに、ステップ407で取り出した部品を登録する(ステップ408)。具体的には、ツリー固有リストにその部品を表すノードを設定し、そのノードに部品の員数を記録する。そして、このツリー固有リストは、ツリー固有リスト記憶部45に記憶される。
【0068】
また、隣接リスト展開部44は、展開結果リスト記憶部50に記憶された展開結果リストにおいて、ステップ407で取り出した部品をマージ又は挿入できる位置を探索する(ステップ409)。具体的には、ステップ407で取り出した部品が展開結果リストに登録されていれば、その登録された位置を、部品をマージできる位置とし、ステップ407で取り出した部品が展開結果リストに登録されていなければ、予め定めた規則に従って決まる位置を、部品を挿入できる位置とする。そして、この探索の結果見つかった展開結果リストにおける位置にその部品を登録する(ステップ410)。
【0069】
その後、隣接リスト展開部44は、ツリー固有リスト記憶部45に記憶されたツリー固有リストにおけるその部品を表すノードに、展開結果リスト記憶部50に記憶された展開結果リストにおけるその部品の登録位置を記録し(ステップ411)、ステップ406へ戻る。
【0070】
また、ステップ406で部品表ツリー内に展開すべき部品がないと判定されれば、隣接リスト展開部44は、ステップ404で取り出された組み立て部品を頂点とする部品表ツリーを展開済みとする(ステップ412)。これは、例えば、隣接リスト構造のデータにおける組み立て部品のデータが持つフラグに、その組み立て部品を頂点とする部品表ツリーが展開済みであることを示す情報を設定することによって行う。そして、処理はステップ403へ戻り、他の組み立て部品についての処理が引き続き行われる。
【0071】
一方、ステップ405で部品表ツリーが展開済みであると判定されれば、員数加算部46が、ツリー固有リスト記憶部45に記憶されたツリー固有リストを参照し、ステップ404で取り出された組み立て部品を頂点とするツリー固有リストに記録された員数を、展開結果リスト記憶部50に記憶された展開結果リストに格納された員数に加算する。
【0072】
即ち、員数加算部46は、まず、そのツリー固有リスト内に処理すべき部品がまだあるかどうかを判定する(ステップ413)。そして、そのツリー固有リスト内に処理すべき部品がまだあると判定されれば、そのツリー固有リストから部品を取り出す(ステップ414)。尚、図7〜12の例では、組み立て部品の員数も展開結果リストに格納しているので、ここで組み立て部品も取り出すことになるが、組み立て部品は取り出さずに、組み立て部品を構成する部品のみを取り出すようにしてもよい。
【0073】
次に、員数加算部46は、この取り出した部品から、展開結果リストのその部品が登録された位置を示す情報を取り出す(ステップ415)。
その後、員数加算部46は、この取り出した情報によって特定される展開結果リストの位置に関連付けられた員数配列において、ステップ402で取り出された最終製品に対応する列に格納された員数に、この取り出した部品に記録された員数を加算し(ステップ416)、ステップ413へ戻る。
【0074】
また、ステップ413でツリー固有リスト内に処理すべき部品がないと判定されれば、処理はステップ403へ戻り、他の組み立て部品についての処理が引き続き行われる。
【0075】
尚、ステップ403で最終製品の1レベル下の組み立て部品がないと判定されれば、処理はステップ401へ戻り、他の最終製品についての処理が引き続き行われる。
また、ステップ401で展開すべき最終製品がないと判定されれば、処理は終了する。
【0076】
このようにして、並列展開部40により生成された展開結果リストが展開結果リスト記憶部50に記憶されると、展開結果出力部60が、展開結果リストの内容を例えば表示機構90d(図15参照)に出力する。
【0077】
[まとめ]
通常、部品表展開は、部品表ツリーの頂点ごとに行なうため、従来は、最終製品を頂点とし、その最終製品ごとに行っていた。そのため、部品表ツリーの内部に全く同じ部分ツリーがある場合は、同じ展開が繰り返されていた。ここに並列展開のための同じ部品のマージ処理が加わると、全く同じ展開結果になるにも関わらず、同じマージのための比較処理が繰り返され、この無駄な繰り返し処理が実行性能を落としていた。
普通は、最終製品のバリエーションが多くても、その1レベル下の組み立て部品は、部品の共通化が図られているため、その種類はそれほど多くない。そこで、最終製品を頂点として最終製品ごとに部品表ツリーを展開するのではなく、組み立て部品から部品表ツリーを展開し、その展開結果を保持しておく。そして、複数の最終製品の間で同じ組み立て部品を構成部品として利用している場合には、既に展開済みで保持されてある展開結果をコピーするようにする。
こうすることによって、列が多い場合に何時間もかかっていた展開処理が分単位で完了することとなる。
【0078】
[本実施の形態を適用するのに好適なコンピュータのハードウェア構成]
図15は、このようなコンピュータのハードウェア構成の一例を示した図である。図示するように、コンピュータは、演算手段であるCPU(Central Processing Unit)90aと、M/B(マザーボード)チップセット90bを介してCPU90aに接続されたメインメモリ90cと、同じくM/Bチップセット90bを介してCPU90aに接続された表示機構90dとを備える。また、M/Bチップセット90bには、ブリッジ回路90eを介して、ネットワークインターフェイス90fと、磁気ディスク装置(HDD)90gと、音声機構90hと、キーボード/マウス90iと、フレキシブルディスクドライブ90jとが接続されている。
【0079】
尚、図15において、各構成要素は、バスを介して接続される。例えば、CPU90aとM/Bチップセット90bの間や、M/Bチップセット90bとメインメモリ90cの間は、CPUバスを介して接続される。また、M/Bチップセット90bと表示機構90dとの間は、AGP(Accelerated Graphics Port)を介して接続されてもよいが、表示機構90dがPCI Express対応のビデオカードを含む場合、M/Bチップセット90bとこのビデオカードの間は、PCI Express(PCIe)バスを介して接続される。また、ブリッジ回路90eと接続する場合、ネットワークインターフェイス90fについては、例えば、PCI Expressを用いることができる。また、磁気ディスク装置90gについては、例えば、シリアルATA(AT Attachment)、パラレル転送のATA、PCI(Peripheral Components Interconnect)を用いることができる。更に、キーボード/マウス90i、及び、フレキシブルディスクドライブ90jについては、USB(Universal Serial Bus)を用いることができる。
【0080】
ここで、本発明は、全てハードウェアで実現してもよいし、全てソフトウェアで実現してもよい。また、ハードウェア及びソフトウェアの両方により実現することも可能である。また、本発明は、コンピュータ、データ処理システム、コンピュータプログラムとして実現することができる。このコンピュータプログラムは、コンピュータにより読取り可能な媒体に記憶され、提供され得る。ここで、媒体としては、電子的、磁気的、光学的、電磁的、赤外線又は半導体システム(装置又は機器)、或いは、伝搬媒体が考えられる。また、コンピュータにより読取り可能な媒体としては、半導体、ソリッドステート記憶装置、磁気テープ、取り外し可能なコンピュータディスケット、ランダムアクセスメモリ(RAM)、リードオンリーメモリ(ROM)、リジッド磁気ディスク、及び光ディスクが例示される。現時点における光ディスクの例には、コンパクトディスク−リードオンリーメモリ(CD−ROM)、コンパクトディスク−リード/ライト(CD−R/W)及びDVDが含まれる。
【0081】
以上、本発明を実施の形態を用いて説明したが、本発明の技術的範囲は上記実施の形態には限定されない。本発明の精神及び範囲から逸脱することなく様々に変更したり代替態様を採用したりすることが可能なことは、当業者に明らかである。
【符号の説明】
【0082】
10…部品表ツリー記憶部、20…部品表ツリー展開部、30…隣接リスト記憶部、40…並列展開部、41…最終製品抽出部、42…組み立て部品抽出部、43…展開判定部、44…隣接リスト展開部、45…ツリー固有リスト記憶部、46…員数加算部、50…展開結果リスト記憶部、60…展開結果出力部

【特許請求の範囲】
【請求項1】
複数の製品の部品表を、当該複数の製品の各々を構成する各部品の員数が当該各部品に対応する位置に配置されるように並列に展開する装置であって、
前記複数の製品のうちの特定の製品を直接構成する特定の部品を選択する選択部と、
前記選択部により選択された前記特定の部品の部品表が展開済みであるかどうかを判定する判定部と、
前記特定の部品の部品表が展開済みでないと前記判定部により判定された場合に、当該特定の部品の部品表を、当該特定の部品を構成する各部品に対応する位置で前記特定の製品に対応する位置に当該各部品の員数が格納された並列展開情報と、当該各部品の員数と当該並列展開情報における当該各部品に対応する位置を特定する情報とを含む部品表展開情報とに展開する展開部と、
前記特定の部品の部品表が展開済みであると前記判定部により判定された場合に、前記部品表展開情報に含まれる各部品の員数を、前記並列展開情報における位置であって、前記部品表展開情報に含まれる情報で特定される当該各部品に対応する位置で前記特定の製品に対応する位置に格納された員数に加算する加算部と
を含む、装置。
【請求項2】
前記展開部は、前記特定の部品を構成する各部品に対応する位置として、その員数が前記並列展開情報に格納されていない部品については、予め定められた規則によって決まる位置を用い、その員数が前記並列展開情報に格納されている部品については、当該員数が格納された位置を用いる、請求項1の装置。
【請求項3】
前記展開部は、前記特定の部品の部品表を、当該特定の部品に対応する位置で前記特定の製品に対応する位置に当該特定の部品の員数が更に格納された前記並列展開情報と、当該特定の部品の員数と当該並列展開情報における当該特定の部品に対応する位置を特定する情報とを更に含む前記部品表展開情報とに展開し、
前記加算部は、前記部品表展開情報に含まれる前記特定の部品の員数を、前記並列展開情報における位置であって、前記部品表展開情報に含まれる情報で特定される当該特定の部品に対応する位置で前記特定の製品に対応する位置に格納された員数に加算する、請求項1又は請求項2の装置。
【請求項4】
前記展開部は、前記特定の部品に対応する位置として、その員数が前記並列展開情報に格納されていなければ、予め定められた規則によって決まる位置を用い、その員数が前記並列展開情報に格納されていれば、当該員数が格納された位置を用いる、請求項3の装置。
【請求項5】
複数の製品の部品表を、当該複数の製品の各々を構成する各部品の員数が当該各部品に対応する位置に配置されるように並列に展開する装置であって、
前記複数の製品のうちの特定の製品を直接構成する特定の部品を選択する選択部と、
前記選択部により選択された前記特定の部品の部品表が展開済みであるかどうかを判定する判定部と、
前記特定の部品の部品表が展開済みでないと前記判定部により判定された場合に、当該特定の部品の部品表を、当該複数の製品を構成する複数の部品をそれぞれ表す複数のノードを持ち、当該複数のノードの各部品を表すノードに対応する配列の前記特定の製品に対応する位置に当該各部品の員数が格納された並列展開リストと、当該特定の部品を構成する複数の部品をそれぞれ表す複数のノードを持ち、当該複数のノードの各部品を表すノードに当該各部品の員数と当該並列展開リストにおける当該各部品を表すノードを特定する情報とが登録された部品表展開リストとに展開する展開部と、
前記特定の部品の部品表が展開済みであると前記判定部により判定された場合に、前記部品表展開リストが持つ各ノードに登録された各部品の員数を、前記並列展開リストにおけるノードであって、前記部品表展開リストが持つ当該各ノードに登録された情報で特定される当該各部品を表すノードに対応する配列の前記特定の製品に対応する位置に格納された員数に加算する加算部と
を含む、装置。
【請求項6】
前記複数の製品の部品表を記憶するデータベースと、
前記複数の製品の部品表に基づいて生成された隣接リストであって、当該複数の製品と、当該複数の製品を構成する複数の部品とを表す複数のノードを持つ隣接リストを記憶するメモリと
を更に備え、
前記選択部は、前記隣接リストが持つ前記複数のノードのうち、前記特定の製品を表すノードが持つリストに登録された情報で特定されるノードが表す部品を、前記特定の部品として選択する、請求項5の装置。
【請求項7】
複数の製品の部品表を、当該複数の製品の各々を構成する各部品の員数が当該各部品に対応する位置に配置されるように並列に展開する方法であって、
前記複数の製品のうちの特定の製品を直接構成する特定の部品を選択するステップと、
選択された前記特定の部品の部品表が展開済みであるかどうかを判定するステップと、
前記特定の部品の部品表が展開済みでないと判定された場合に、当該特定の部品の部品表を、当該特定の部品を構成する各部品に対応する位置で前記特定の製品に対応する位置に当該各部品の員数が格納された並列展開情報と、当該各部品の員数と当該並列展開情報における当該各部品に対応する位置を特定する情報とを含む部品表展開情報とに展開するステップと、
前記特定の部品の部品表が展開済みであると判定された場合に、前記部品表展開情報に含まれる各部品の員数を、前記並列展開情報における位置であって、前記部品表展開情報に含まれる情報で特定される当該各部品に対応する位置で前記特定の製品に対応する位置に格納された員数に加算するステップと
を含む、方法。
【請求項8】
複数の製品の部品表を、当該複数の製品の各々を構成する各部品の員数が当該各部品に対応する位置に配置されるように並列に展開する装置として、コンピュータを機能させるプログラムであって、
前記コンピュータを、
前記複数の製品のうちの特定の製品を直接構成する特定の部品を選択する選択部と、
前記選択部により選択された前記特定の部品の部品表が展開済みであるかどうかを判定する判定部と、
前記特定の部品の部品表が展開済みでないと前記判定部により判定された場合に、当該特定の部品の部品表を、当該特定の部品を構成する各部品に対応する位置で前記特定の製品に対応する位置に当該各部品の員数が格納された並列展開情報と、当該各部品の員数と当該並列展開情報における当該各部品に対応する位置を特定する情報とを含む部品表展開情報とに展開する展開部と、
前記特定の部品の部品表が展開済みであると前記判定部により判定された場合に、前記部品表展開情報に含まれる各部品の員数を、前記並列展開情報における位置であって、前記部品表展開情報に含まれる情報で特定される当該各部品に対応する位置で前記特定の製品に対応する位置に格納された員数に加算する加算部と
して機能させる、プログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate


【公開番号】特開2013−45186(P2013−45186A)
【公開日】平成25年3月4日(2013.3.4)
【国際特許分類】
【出願番号】特願2011−180999(P2011−180999)
【出願日】平成23年8月22日(2011.8.22)
【出願人】(390009531)インターナショナル・ビジネス・マシーンズ・コーポレーション (4,084)
【氏名又は名称原語表記】INTERNATIONAL BUSINESS MACHINES CORPORATION
【復代理人】
【識別番号】100104880
【弁理士】
【氏名又は名称】古部 次郎
【復代理人】
【識別番号】100118201
【弁理士】
【氏名又は名称】千田 武
【復代理人】
【識別番号】100118108
【弁理士】
【氏名又は名称】久保 洋之
【Fターム(参考)】