(57)【特許請求の範囲】
【請求項１】
コンピュータシステムのメモリにおいて、複数の構成要素にてなる組み立て品の仮想的な表現を構成する方法であって、上記方法は、上記コンピュータシステムのプロセッサによって実行される以下のステップ、すなわち、
複数の構成要素にてなる複数のカテゴリを表現する第１のデータセットと、各カテゴリ毎に上記カテゴリの各々のうちの上記構成要素の各々の構成に対する制限を定義するパラメータ及び拘束条件とを、上記コンピュータシステムのデータベース内に記憶するステップを含み、これにより１つのカテゴリにおけるすべての構成要素は共通のパラメータ及び拘束条件を有し、
上記複数の構成要素にてなる組み立て品を表現しかつ上記複数の構成要素の構成空間を表現する第２のデータセットを生成するステップを含み、上記第２のデータセットは、構成要素の有効な組み合わせを定義する別個のデータ構造を備え、上記別個のデータ構造は、別個の各データ構造が特定の構成要素に関連付けられ、これにより上記特定の構成要素に係る拘束条件が構成要素の上記有効な組み合わせを反映するように、上記第２のデータセットに含まれ、上記第２のデータセットを生成するステップは、上記各構成要素に関連付けられた拘束条件と上記組み立て品に対する拘束条件とに従って実行され、
上記第２のデータセットを上記コンピュータシステムのメモリに記憶するステップを含み、
上記構成空間における現在の構成を表現する第３のデータセットを生成するステップを含み、
上記第２のデータセットの更新されたバージョンに到達しかつ上記第３のデータセットの更新されたバージョンに到達するように、上記各構成要素に関連付けられた拘束条件と上記組み立て品に対する拘束条件とに従いながら、上記第２及び第３のデータセットを生成するステップを、
−  上記組み立て品に追加されると結果的に構成要素の有効な組み合わせをもたらすような構成要素であって、上記第２のデータセットの上記別個のデータ構造から導出されるような構成要素のみを提示すること、及び、
−  上記第３のデータセットの構成要素を提示すること、及び、
−  上記第２及び第３のデータセットの上記提示された構成要素に応答して生じたユーザ入力を取得すること、及び、
−  上記提示された構成要素のうちの１つを表現しかつ上記第１のデータセットから導出されるデータを、上記第２及び第３のデータセットに追加すること、又は、
−  上記第２及び第３のデータセットのうちの構成要素を表現するデータを削除すること、又は、
−  上記第２及び第３のデータセットのうちの以前に追加された構成要素を表現するデータを変更することによって繰り返すステップを含む方法。
【請求項２】
構成要素を表現するデータは、上記構成要素に係るパラメータを表現するデータをさらに含み、
上記方法はさらに、上記第３のデータセットを生成するステップにおいて、選択されたパラメータのみを提示するように複数の構成要素に係る複数のパラメータを提示することを含み、上記選択されたパラメータは、構成要素及びパラメータの可能な及び／又は合法的な組み合わせのみが達成されうるように、構成要素の拘束条件に従って選択されている請求項１記載の方法。
【請求項３】
上記構成要素及び／又はパラメータ値を提示するステップにおいて、上記各構成要素に関連付けられた拘束条件及び上記組み立て品に対する拘束条件に従う構成要素及び／又はパラメータ値のみが提示される請求項１又は２記載の方法。
【請求項４】
上記方法はさらに、上記コンピュータシステムに関連付けられたディスプレイ装置又はプリンタ上に、上記第２のデータセットによって表現される上記構成空間の少なくとも一部分に係るグラフィック表現又は物理的表現を視覚化することを含む、請求項１乃至３のうちのいずれか１つに記載の方法。
【請求項５】
上記方法はさらに、上記コンピュータシステムに関連付けられたディスプレイ装置又はプリンタ上に、上記第３のデータセットによって表現される上記構成の少なくとも一部分に係るグラフィック表現又は物理的表現を視覚化することを含む請求項１乃至３のうちのいずれか１つに記載の方法。
【請求項６】
上記コンピュータシステムは通信ネットワークに接続され、
上記方法はさらに、
上記第２及び／又は第３のデータセットを上記通信ネットワークを介して別のコンピュータシステムへ送信することと、
上記別のコンピュータシステムのモニタ又は他の任意の表示用装置上に、上記第２のデータセットによって表現される構成空間のグラフィック画像及び／又は上記第３のデータセットによって表現される構成のグラフィック画像を視覚化することとを含む、請求項１乃至５のうちのいずれか１つに記載の方法。
【請求項７】
上記第２のデータセットは、関連した複数の構成要素間の関係と構成要素間の関係のタイプとを表現するデータを含み、これにより上記第２のデータセットはさらに構成要素間の接続を表現する、請求項１乃至６のうちのいずれか１つに記載の方法。
【請求項８】
上記追加するステップは、複数の構成要素を接続して組み立て品とすること、及び／又は上記組み立て品に１つの構成要素を追加することを含む、請求項１乃至７のうちのいずれか１つに記載の方法。
【請求項９】
上記削除するステップは、上記組み立て品における２つの構成要素を切断すること、及び／又は上記組み立て品から１つの構成要素を除去することを含む、請求項１乃至８のうちのいずれか１つに記載の方法。
【請求項１０】
上記変更するステップは、
上記組み立て品の少なくとも１つの構成要素を表現するデータを変更することと、
上記組み立て品の２つの構成要素を接続することと、
上記組み立て品の２つの構成要素を切断することと
のうちの少なくとも１つを含む、請求項１乃至９のうちのいずれか１つに記載の方法。
【請求項１１】
上記第２及び第３のデータセットを生成するステップは複数の構成要素にてなる複数のクラスタを生成することを含み、各クラスタは、単一の構成要素を表現するデータを含むとともに、オプションで、上記単一の構成要素に接続される少なくとも１つの別の構成要素を表現するデータを含み、これにより、上記複数のクラスタは上記仮想的な表現に含まれたすべての構成要素を表現するデータを含む、請求項１乃至１０のうちのいずれか１つに記載の方法。
【請求項１２】
上記単一の構成要素に関連付けられた上記別個のデータ構造は、上記クラスタのうちの構成要素及び／又は上記クラスタのうちの構成要素に係るパラメータ値の、可能な組み合わせ又は許容される組み合わせを定義する請求項１１記載の方法。
【請求項１３】
上記別個のデータ構造は、構成要素及び／又はパラメータ値の可能な組み合わせ又は許容される組み合わせを表現するデータが記憶される構成データベースを構成する請求項１１又は１２記載の方法。
【請求項１４】
上記第２のデータセットを生成するステップは、
各クラスタについて、そのクラスタのうちの１つの構成要素を表現するデータが、そのクラスタ内の相互に接続された構成要素によって定義される拘束条件に適合するか否かについてのチェックを実行することを含み、
上記チェックにより、適合しないことが明らかになったとき、
相互に接続されたすべての構成要素によって与えられる拘束条件に従いながら、上記第２のデータセットを変更すること、及び／又は問題となっている上記構成要素を表現するデータを変更することを含む、請求項１１乃至１３のうちのいずれか１つに記載の方法。
【請求項１５】
上記第２のデータセットは上記組み立て品の少なくとも一部分の幾何学的形状を表現するデータを含み、これにより、上記組み立て品の上記部分の構成要素に係る拘束条件は、上記構成要素のパラメータに対して幾何学的性質に係る拘束条件を定義する、請求項１乃至１４のうちのいずれか１つに記載の方法。
【請求項１６】
上記第３のデータセットは上記現在の構成の状態を表現し、
上記方法は、上記繰り返すステップにおいて、上記第３のデータセットの変化に応答して上記第２のデータセットを自動的に更新することを含む、請求項１乃至１５のうちのいずれか１つに記載の方法。
【請求項１７】
上記現在の構成は上記第１及び第３のデータセットから再現可能である請求項１６記載の方法。
【請求項１８】
コンピュータシステムのメモリにおいて、複数の構成要素にてなる組み立て品の仮想的な表現を構成するコンピュータシステムであって、上記コンピュータシステムは、
複数の構成要素にてなる複数のカテゴリを表現する第１のデータセットと、各カテゴリ毎に上記カテゴリの各々のうちの上記構成要素の各々の構成に対する制限を定義するパラメータ及び拘束条件とを記憶するデータベースを備え、これにより１つのカテゴリにおけるすべての構成要素は共通のパラメータ及び拘束条件を有し、
上記複数の構成要素にてなる組み立て品を表現しかつ上記複数の構成要素の構成空間を表現する第２のデータセットを生成し、かつ上記第２のデータセットを上記コンピュータシステムのメモリに記憶するようにプログラミングされるプロセッサを備え、上記第２のデータセットは、構成要素の有効な組み合わせを定義する別個のデータ構造を備え、上記別個のデータ構造は、別個の各データ構造が特定の構成要素に関連付けられ、これにより上記特定の構成要素に係る拘束条件が構成要素の上記有効な組み合わせを反映するように、上記第２のデータセットに含まれ、
上記プロセッサは、上記各構成要素に関連付けられた拘束条件と上記組み立て品に対する拘束条件とに従いながら上記第２のデータセットを生成するようにプログラミングされ、
上記プロセッサはさらに、上記構成空間内における現在の構成を表現する第３のデータセットを生成するようにプログラミングされ、
上記プロセッサはさらに、上記第２のデータセットの更新されたバージョンに到達しかつ上記第３のデータセットの更新されたバージョンに到達するように、上記各構成要素に関連付けられた拘束条件と上記組み立て品に対する拘束条件とに従いながら、
−  上記組み立て品に追加されると結果的に構成要素の有効な組み合わせをもたらすような構成要素であって、上記第２のデータセットの上記別個のデータ構造から導出されるような構成要素のみを提示すること、及び、
−  上記第３のデータセットの構成要素を提示すること、及び、
−  上記第２及び第３のデータセットの上記提示された構成要素に応答して生じたユーザ入力を取得すること、及び、
−  上記提示された構成要素のうちの１つを表現しかつ上記第１のデータセットから導出されるデータを、上記第２及び第３のデータセットに追加すること、又は、
−  上記第２及び第３のデータセットのうちの構成要素を表現するデータを削除すること、又は、
−  上記第２及び第３のデータセットのうちの以前に追加された構成要素を表現するデータを変更することによって、
上記第２及び第３のデータセットの生成を繰り返すようにプログラミングされるコンピュータシステム。
【請求項１９】
構成要素を表現するデータは、上記構成要素に係るパラメータを表現するデータをさらに含み、
上記プロセッサはさらに、上記第３のデータセットを生成する際に、選択されたパラメータのみを提示すべく複数の構成要素に係る複数のパラメータを提示するようにプログラミングされ、上記選択されたパラメータは、構成要素及びパラメータの可能な及び／又は合法的な組み合わせのみが達成されうるように、構成要素の拘束条件に従って選択されている請求項１８記載のコンピュータシステム。
【請求項２０】
上記プロセッサはさらに、上記各構成要素に関連付けられた拘束条件及び上記組み立て品に対する拘束条件に従う構成要素及び／又はパラメータ値のみを提示するようにプログラミングされる請求項１８又は１９記載のコンピュータシステム。
【請求項２１】
上記コンピュータシステムは、上記第２のデータセットによって表現される上記構成空間の少なくとも一部分のグラフィック表現又は物理的表現を視覚化するディスプレイ装置又はプリンタに接続されている請求項１８乃至２０のうちのいずれか１つに記載のコンピュータシステム。
【請求項２２】
上記コンピュータシステムは、上記第３のデータセットによって表現される上記構成の少なくとも一部分のグラフィック表現又は物理的表現を視覚化するディスプレイ装置又はプリンタに接続されている請求項１８乃至２１のうちのいずれか１つに記載のコンピュータシステム。
【請求項２３】
上記コンピュータシステムは通信ネットワークに接続され、上記コンピュータシステムはさらに、
上記第２のデータセットによって表現される構成空間のグラフィック画像及び／又は上記第３のデータセットによって表現される構成のグラフィック画像を視覚化するディスプレイ装置に接続された別のコンピュータシステムに、上記第２及び／又は第３のデータセットを上記通信ネットワークを介して送信する通信インタフェースを備えた請求項１８乃至２２のうちのいずれか１つに記載のコンピュータシステム。
【請求項２４】
上記プロセッサはさらに、データを上記第２及び第３のデータセットに追加する際に、複数の構成要素を接続して組み立て品とするように、及び／又は上記組み立て品に１つの構成要素を追加するようにプログラミングされる請求項１８乃至２３のうちのいずれか１つに記載のコンピュータシステム。
【請求項２５】
上記プロセッサはさらに、データを上記第２及び第３のデータセットから削除する際に、上記組み立て品における２つの構成要素を切断するように、及び／又は上記組み立て品から１つの構成要素を除去するようにプログラミングされる請求項１８乃至２４のうちのいずれか１つに記載のコンピュータシステム。
【請求項２６】
上記プロセッサはさらに、上記第２及び第３のデータセットを変更する際に、
上記組み立て品の少なくとも１つの構成要素を表現するデータを変更することと、
上記組み立て品の２つの構成要素を接続することと、
上記組み立て品の２つの構成要素を切断することと
のうちの少なくとも１つを実行するようにプログラミングされる請求項１８乃至２５のうちのいずれか１つに記載のコンピュータシステム。
【請求項２７】
上記プロセッサは、上記第２及び第３のデータセットを生成するとき、上記コンピュータシステムのメモリにおいて複数の構成要素にてなる複数のクラスタを生成するようにプログラミングされ、各クラスタは、単一の構成要素を表現するデータを含むとともに、オプションで、上記単一の構成要素に接続される少なくとも１つの別の構成要素を表現するデータを含み、これにより、上記複数のクラスタは上記仮想的な表現に含まれたすべての構成要素を表現するデータを含む請求項１８乃至２６のうちのいずれか１つに記載のコンピュータシステム。
【請求項２８】
上記プロセッサは、上記第２のデータセットを生成するステップにおいて、
各クラスタについて、そのクラスタのうちの１つの構成要素を表現するデータが、そのクラスタ内の相互に接続された構成要素によって定義される拘束条件に適合するか否かについてのチェックを実行するようにプログラミングされ、
上記チェックにより、適合しないことが明らかになったとき、
相互に接続されたすべての構成要素によって与えられる拘束条件に従いながら、上記第２のデータセットを変更するように、及び／又は問題となっている上記構成要素を表現するデータを変更するようにプログラミングされる請求項２７記載のコンピュータシステム。
【請求項２９】
上記第３のデータセットは上記現在の構成の状態を表現し、
上記プロセッサはさらに、上記繰り返すステップにおいて、上記第３のデータセットの変化に応答して上記第２のデータセットを自動的に更新するようにプログラミングされる請求項１８乃至２８のうちのいずれか１つに記載のコンピュータシステム。
【請求項３０】
コンピュータシステムのプロセッサにおいて実行されたとき、上記コンピュータシステムのメモリにおいて、複数の構成要素にてなる組み立て品の仮想的な表現を構成するコンピュータプログラムであって、上記コンピュータプログラムは、
複数の構成要素にてなる複数のカテゴリを表現する第１のデータセットと、各カテゴリ毎に上記カテゴリの各々のうちの上記構成要素の各々の構成に対する制限を定義するパラメータ及び拘束条件とを、上記コンピュータシステムのデータベース内に記憶するステップを備え、これにより１つのカテゴリにおけるすべての構成要素は共通のパラメータ及び拘束条件を有し、
上記複数の構成要素にてなる組み立て品を表現しかつ上記複数の構成要素の構成空間を表現する第２のデータセットを生成するステップを備え、上記第２のデータセットは、構成要素及び／又はパラメータ値の有効な組み合わせを定義する別個のデータ構造を備え、上記別個のデータ構造は、別個の各データ構造が特定の構成要素に関連付けられ、これにより上記特定の構成要素に係る拘束条件が構成要素及び／又はパラメータ値の上記有効な組み合わせを反映するように、上記第２のデータセットに含まれ、上記第２のデータセットを生成するステップは、上記各構成要素に関連付けられた拘束条件と上記組み立て品に対する拘束条件とに従って実行され、
上記第２のデータセットを上記コンピュータシステムのメモリに記憶するステップを備え、
上記構成空間内における現在の構成を表現する第３のデータセットを生成するステップを備え、
上記第２のデータセットの更新されたバージョンに到達しかつ上記第３のデータセットの更新されたバージョンに到達するように、上記各構成要素に関連付けられた拘束条件と上記組み立て品に対する拘束条件とに従いながら、上記第２及び第３のデータセットを生成するステップを、
−  上記組み立て品に追加されると結果的に構成要素の有効な組み合わせをもたらすような構成要素であって、上記第２のデータセットの上記別個のデータ構造から導出されるような構成要素のみを提示すること、及び、
−  上記第３のデータセットの構成要素を提示すること、及び、
−  上記第２及び第３のデータセットの上記提示された構成要素に応答して生じたユーザ入力を取得すること、及び、
−  上記提示された構成要素のうちの１つを表現しかつ上記第１のデータセットから導出されるデータを、上記第２及び第３のデータセットに追加すること、又は、
−  上記第２及び第３のデータセットのうちの構成要素を表現するデータを削除すること、又は、
−  上記第２及び第３のデータセットのうちの以前に追加された構成要素を表現するデータを変更することによって繰り返すステップを備えたコンピュータプログラム。
【請求項３１】
請求項３０記載のコンピュータプログラムがロードされたコンピュータが読み取り可能なデータ記憶媒体。
【請求項３２】
請求項３０記載のコンピュータプログラムがロードされたメモリ又は記憶手段と、
上記コンピュータプログラムの各ステップを実行するプロセッサと、
所定のデータを記憶するデータベースと
を備えたコンピュータシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複雑な製品に対する構成上の課題のリアルタイムでの視覚化をサポートすることを目的として、システムを構成することに関する。本発明は、抽象的な複数の構成要素の使用により製品モデルを定式化するための一般的な方法を提供する。本発明は、電子的な製品販売等の実行時環境において、リアルタイムの視覚的フィードバックとともに製品を視覚的に構成することに有益である。
【背景技術】
【０００２】
製品の構成は、しばしば製品の変形物又はカスタマイズされた製品と呼ばれる（製品の）１つの構成に到達するように、パラメータ空間をナビゲートして移動するプロセスとして捉えることができる。
【０００３】
このコンテキストにおいては、パラメータは、構成要素に係る１つ又は複数の特性であって、通常はコンピュータプログラム内の変数において記憶される１つ又は複数の特性として理解される必要がある。例えば、ある構成要素は、異なる値を割り当て可能なオーク材、ブナ材、マホガニー材、チーク材などのような材料パラメータと、青、緑、黄などのような色パラメータと、小、中又は大のようなサイズパラメータと、光沢があるか又はつや消しであるかなどのような光反射パラメータとを有する可能性がある。
【０００４】
例えば、自動車は有限の状態空間を有している。その複数の合法的（legal）なソリューションにてなるシステムは、有限個のパラメータによって定義されることが可能であり、自動車を構成するプロセスは、有限個のパラメータの各々について値を選択することによって有限の状態空間をナビゲートして移動することと等価である。反対に、台所は可変な個数のキャビネット（棚）及び付属品から構築され、ゆえに、キャビネットの個数に依存して変化するパラメータ空間であって、かつおそらくは無限のパラメータ空間を有する。台所における新たなキャビネット毎に、パラメータ空間は変化する。
【０００５】
より一般的な例としては、構築可能な製品がある。構築可能な製品は、所定個数の部分製品（サブプロダクト）にてなる製品であって、これらの部分製品は（何らかの意味で）ともに構築されて全体を生じさせることができる。ある意味では、ほとんどの物理的な製品は構築可能なものとみなすことができる。しかしながら、製品は通常、その製品が厳密に特定個数の品目（アイテム）に限定されていない場合でも、構築可能であると呼ばれる。このことは、異なる製品が、非常に異なる個数及び／又は組み合わせの部分製品を有し、これらの部分製品がともに構築されるものであると考えることができる。例えば、自動車は常に、４つの車輪と１つのエンジンのように同じ個数の同様の不可欠な部品を有するが、台所の不可欠な部品は異なる個数のキャビネットを含んでいる。複数の構築用ブロックは、それら自体、非常によく構成可能な又は構築可能な製品である可能性がある。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】国際出願の国際公開ＷＯ９９／４８０３１Ａ。
【特許文献２】国際出願の国際公開ＷＯ９８／５５９４９Ａ。
【特許文献３】米国特許第５，５１５，５２４号明細書。
【特許文献４】国際出願の国際公開ＷＯ９４／１２９４１Ａ。
【発明の概要】
【発明が解決しようとする課題】
【０００７】
通常、ほとんどの構築可能な製品に係る満足な製品モデルを構築することは困難である。各構築用ブロックは構成可能であるが他のすべてのものに依存するので、１つの問題点は変形物の個数を把握することにある。この問題を回避するための１つの方法は、部分製品の個数及び組み合わせを固定した上ですべての相互関係を記述することである。
【０００８】
さらに、多くの構築可能な製品では、部分製品間の接続は、製品モデルの論理的用語で記述することが困難であるか、もしくは不可能でさえある非常に基本的な物理的性質のものである場合が多い。例えば台所では、キャビネットの複数の引き出しは、それを収容するキャビネットとの間に非常に明確な論理的（又は構造的）関係を有し、例えばサイズに依存して３個、５個又は７個存在する可能性がある。しかしながら、２つの異なる接続グループにおける２つのキャビネットの間の関係は、必ずしも既知ではない。
【０００９】
従って、いくつかの問題点が存在する。第１に、構築可能な製品に係る組み合わされた全体的な論理ルールは、古典的な製品モデルの記述にさほど関連しない。第２に、複数の構築可能な製品の相互関係を、論理的な拘束条件に関して記述することは容易でない。
【００１０】
ルールに基づく２つのタイプのコンフィギュレータ（configurator）が既知であり、（例えばツリー構造を使用した）検索アルゴリズム、又は論理に基づいてデータベース内のすべての有効な組み合わせを記憶するものが存在する。これらの技術のうちのいずれも、上述の問題点に取り組んだものではない。さらに、多数の自明かつ簡単なルールが、幾何学的性質のものであるか、あるいは製品の幾何学的性質に関連している。これらを論理言語で定式化することは、極めて困難である。従って、本発明の目的は、構成要素の原理に基づいて製品の構築を促進しかつ製品モデルの生成を可能にすることにある。
【課題を解決するための手段】
【００１１】
本発明は、第１の態様では、コンピュータシステムのメモリにおいて、複数の構成要素にてなる組み立て品（アセンブリ）の仮想的な表現を構成する方法を提供し、本方法は、
−複数の構成要素にてなる複数のカテゴリを表現する第１のデータセットと、各カテゴリ毎に上記カテゴリの各々のうちの上記構成要素の各々の構成に対する制限を定義する複数のパラメータ及び複数の拘束条件とを、上記コンピュータシステムのデータベース内に記憶するステップを含み、これにより１つのカテゴリにおけるすべての構成要素は共通のパラメータ及び拘束条件を有し、
−上記複数の構成要素にてなる組み立て品を表現しかつ上記複数の構成要素の構成空間を表現する第２のデータセットを生成し、かつ上記第２のデータセットを上記コンピュータシステムのメモリに記憶するステップを含み、上記生成するステップは、各構成要素に関連付けられた上記拘束条件と上記組み立て品に対する拘束条件とに従って実行され、上記構成空間における現在の構成を表現する第３のデータセットを生成するステップを含み、
−上記第２のデータセットの更新されたバージョンに到達しかつ上記第３のデータセットの更新されたバージョンに到達するように、各構成要素に関連付けられた上記拘束条件と上記組み立て品に対する拘束条件とに従いながら、上記生成するステップを、
−１つのカテゴリの構成要素を表現しかつ上記第１のデータセットから導出されるデータを、上記第２及び第３のデータセットに追加すること、又は、
−上記第２及び第３のデータセットのうちの構成要素を表現するデータを削除すること、又は、
−上記第２及び第３のデータセットのうちの以前に追加された構成要素を表現するデータを変更することによって繰り返すステップを含む。
【００１２】
第２及び第３のデータセットを反復的に生成することは、限られた個数の構成要素又は限られた空間によっては制限されない製品モデルを可能にする。さらに、構成要素の各々の構成に対する制限を定義する拘束条件をデータベースに記憶させ、かつこれらの拘束条件に従いながら第２のデータセットを生成することにより、構成要素の可能なすべての組み合わせを記憶する必要性は取り除かれる。同様に、組み立て品の拘束条件を表現するデータを自動的に生成しかつ好適にはこれを記憶することにより、製品モデルは、柔軟で、メモリ及びデータ処理について効率的な方法で構築されることが可能である。
【００１３】
第２のデータセットの更新されたバージョンは第３のデータセットにおける変化の結果として取得されることが可能であり、従って、生成するステップが反復されるとき、例えばユーザ入力に応答して第３のデータセットが更新され、これにより第２のデータセットが自動的に更新されるものと理解される必要がある。
【００１４】
第３のデータセットを生成するステップでは、本方法はさらに、複数の構成要素、又は構成要素の複数のカテゴリを提供することと、上記提供するステップを繰り返すこととを含み、これにより、上記提供するステップが繰り返されるとき、選択された構成要素又は構成要素のカテゴリのみが提供される。従って、コンピュータシステムのユーザは、製品を構成する際に時間を節約することが可能になり、それと同時に、複数の構成要素に係る合法的でないか又は許容されない組み合わせを生成することが防止される。
【００１５】
構成要素を表現するデータは、構成要素のパラメータを表現するデータを含むことが可能であるが、この場合、本方法はさらに、第３のデータセットを生成するステップにおいて複数の構成要素に係る複数のパラメータを提供することを含み、これにより選択されたパラメータのみが提供され、上記選択されたパラメータは、複数の構成要素及び複数のパラメータの可能な及び／又は合法的な組み合わせのみが達成されうるように、複数の構成要素に係る複数の拘束条件に従って選択されている。
【００１６】
さらに、構成要素及び／又はパラメータの値を提供するステップでは、各構成要素に関連付けられた拘束条件に従い、かつ上記組み立て品に対する拘束条件に従う構成要素及び／又はパラメータの値のみが提供されることが可能である。
【００１７】
本コンテキストにおいては、構成要素は、物理的構成要素としてだけでなく、さらに、あるいは代替として、コンピュータシステムのメモリにおけるそのデータ表現としても解釈される必要があり、ここで、上記データ表現は、おそらくは構成要素のパラメータ及び／又は特性を含む。
【００１８】
本方法は、コンピュータシステムに関連付けられたディスプレイ装置又はプリンタ上に、第２のデータセットによって表現される構成空間の少なくとも一部分及び／又は第３のデータセットによって表現される構成の少なくとも一部分に係るグラフィック表現又は物理的表現を視覚化することを含みうる。コンピュータシステムは通信ネットワークに接続されてもよく、この場合、本方法はさらに、
−上記第２及び／又は第３のデータセットを上記通信ネットワークを介して別のコンピュータシステムへ送信することと、
−上記別のコンピュータシステムのモニタ又は他の任意の表示用装置上に、上記第２のデータセットによって表現される構成空間のグラフィック画像及び／又は上記第３のデータセットによって表現される構成のグラフィック画像を視覚化することとを含んでもよい。
【００１９】
従って、データはインターネット又はローカルエリアネットワーク（ＬＡＮ）等の通信ネットワークを介して伝送されることが可能であり、よって、ユーザや、又は例えば台所である製品の潜在的購入者は、コンピュータシステムの場所からは遠隔している場所からその製品を構成することができる。
【００２０】
第２のデータセットはさらに、関連した複数の構成要素間の関係と構成要素間の関係のタイプとを表現するデータを含んでもよく、これにより、第２のデータセットは構成要素間の接続も表現する。
【００２１】
生成するステップの間において、追加するステップは、構成要素を接続して組み立て品とすること、及び／又は組み立て品に構成要素を追加することを含みうる。同様に、削除するステップは、組み立て品内の２つの構成要素を切断すること、及び／又は組み立て品から構成要素を除去することを含みうる。最後に、変更するステップは、
−上記組み立て品の少なくとも１つの構成要素を表現するデータを変更することと、
−上記組み立て品の２つの構成要素を接続することと、
−上記組み立て品の２つの構成要素を切断することと
のうちの少なくとも１つを含んでもよい。
【００２２】
本発明のある実施形態においては、生成するステップは複数のクラスタにてなる１つのセットを生成することを含み、各クラスタは、単一の構成要素を表現するデータを含むとともに、オプションで、上記単一の構成要素に関連した少なくとも１つの別の構成要素を表現するデータを含み、これにより、上記複数のクラスタにてなるセットは上記仮想的な表現に含まれたすべての構成要素を表現するデータを含む。構成要素間の関係は、物理的関係又は論理的関係のいずれかでありうる。物理的関係は、例えば２つの構成要素間の物理的接続（連結）を含むことが可能である。これに対して、論理的関係は、例えば構成要素に割り当てられうる可能なパラメータ又はパラメータの値を限定し、例えば台所のドアが製造される材料は、オーク材又はブナ材に限定されるが、台所の他の構成要素はチーク材又はマホガニー材から製造される場合もある。第２のデータは、関連した構成要素間の関係のタイプを表現するデータを含んでもよい。
【００２３】
第２のデータセットはさらに、複数の構成要素及び／又は複数のパラメータの値の可能な組み合わせ又は許容される組み合わせを定義する別個のデータ構造又は別個の複数のデータ構造にてなるセットを含み、上記１つ又は複数の別個のデータ構造は、別個の各データ構造が特定の構成要素に関連付けられ、これにより上記特定の構成要素の拘束条件のうちの少なくとも１つが上記複数の構成要素及び／又は複数のパラメータの値の可能な組み合わせ又は許容される組み合わせを反映しうるように上記第２のデータセットに含まれている。
【００２４】
従って、単一の構成要素に関連付けられた上記別個のデータ構造は、単一の構成要素に対応するクラスタの複数の構成要素の可能な組み合わせ又は許容される組み合わせ、及び／又は単一の構成要素に対応するクラスタの複数の構成要素に係る複数のパラメータの値の可能な組み合わせ又は許容される組み合わせを定義することが可能である。
【００２５】
別個のデータ構造は、好適には、複数の構成要素及び／又は複数のパラメータの値の可能な組み合わせ又は許容される組み合わせを表現するデータが記憶される構成データベースを構成することが可能である。
【００２６】
第２のデータセットを生成するステップは、
−各クラスタについて、そのクラスタの構成要素を表現するデータが、そのクラスタ内の相互に接続された構成要素によって定義される拘束条件に適合するか否かについてのチェックを実行することを含んでもよく、
上記チェックにより、適合しないことが明らかになったとき、
−相互に接続されたすべての構成要素によって与えられる拘束条件に従いながら、上記第２のデータセットを変更すること、及び／又は問題となっている上記構成要素を表現するデータを変更することを含んでもよい。
【００２７】
第２のデータセットはさらに、上記組み立て品の少なくとも一部分の幾何学的形状を表現するデータを含んでもよく、これにより、上記組み立て品のこの部分の構成要素に係る拘束条件は、上記構成要素のパラメータに対して幾何学的性質に係る拘束条件を定義する。
【００２８】
さらに、第３のデータセットは上記現在の構成の状態を表現してもよく、本方法は、上記繰り返すステップにおいて、第３のデータセットの変化に応答して第２のデータセットを自動的に更新することを含んでもよい。第３のデータセットに対するこのような変化は、例えば１つ又は複数のパラメータの値を変更することでありうる。パラメータがある構成要素を表現している場合、このようなパラメータの変化は、組み立て品に対してその構成要素が挿入される／除去されること、及び／又はその構成要素に関係する接続が挿入される／除去されることを開始させる可能性がある。従って、現在の構成は第１及び第３のデータセットから再現可能である。
【００２９】
本発明は、第２の態様では、コンピュータシステムのメモリにおいて、複数の構成要素にてなる組み立て品の仮想的な表現を構成するコンピュータシステムに関連し、上記コンピュータシステムは、
−複数の構成要素にてなる複数のカテゴリを表現する第１のデータセットと、各カテゴリ毎に上記カテゴリの各々のうちの上記構成要素の各々の構成に対する制限を定義する複数のパラメータ及び複数の拘束条件とを記憶するデータベースを備え、これにより１つのカテゴリにおけるすべてのパラメータ及び構成要素は共通の拘束条件を有し、
−上記複数の構成要素にてなる組み立て品を表現しかつ上記複数の構成要素の構成空間を表現する第２のデータセットを生成し、かつ上記第２のデータセットを上記コンピュータシステムのメモリに記憶するようにプログラミングされるプロセッサを備え、上記プロセッサは、各構成要素に関連付けられた上記拘束条件と上記組み立て品に対する拘束条件とに従いながら上記第２のデータセットを生成するようにプログラミングされ、上記プロセッサはさらに、上記構成空間における現在の構成を表現する第３のデータセットを生成するようにプログラミングされ、
−上記プロセッサはさらに、上記第２のデータセットの更新されたバージョンに到達しかつ上記第３のデータセットの更新されたバージョンに到達するように、各構成要素に関連付けられた上記拘束条件と上記組み立て品に対する拘束条件とに従いながら、
−１つのカテゴリの構成要素を表現しかつ上記第１のデータセットから導出されるデータを、上記第２及び第３のデータセットに追加すること、又は、
−上記第２及び第３のデータセットのうちの構成要素を表現するデータを削除すること、又は、
−上記第２及び第３のデータセットのうちの以前に追加された構成要素を表現するデータを変更することによって、
上記第２のデータセットの生成を繰り返すようにプログラミングされる。
【００３０】
コンピュータシステムは、本発明の第１の態様の方法に関連して上述の諸ステップを実行すりようにプログラムされることが可能である。
【００３１】
本発明は、第３の態様では、コンピュータシステムのメモリにおいて、複数の構成要素にてなる組み立て品の仮想的な表現を構成するコンピュータプログラム製品に関連し、上記コンピュータプログラム製品は、
−複数の構成要素にてなる複数のカテゴリを表現する第１のデータセットと、各カテゴリ毎に上記カテゴリの各々のうちの上記構成要素の各々の構成に対する制限を定義する複数のパラメータ及び複数の拘束条件とを、上記コンピュータシステムのデータベース内に記憶する手段を備え、これにより１つのカテゴリにおけるすべてのパラメータ及び構成要素は共通の拘束条件を有し、
−上記複数の構成要素にてなる組み立て品を表現しかつ上記複数の構成要素の構成空間を表現する第２のデータセットを生成し、かつ上記第２のデータセットを上記コンピュータシステムのメモリに記憶する手段を備え、上記生成するステップは、各構成要素に関連付けられた上記拘束条件と上記組み立て品に対する拘束条件とに従って実行され、上記構成空間における現在の構成を表現する第３のデータセットを生成する手段を備え、
−上記第２のデータセットの更新されたバージョンに到達しかつ上記第３のデータセットの更新されたバージョンに到達するように、各構成要素に関連付けられた上記拘束条件と上記組み立て品に対する拘束条件とに従いながら、上記生成するステップを、
−１つのカテゴリの構成要素を表現しかつ上記第１のデータセットから導出されるデータを、上記第２及び第３のデータセットに追加すること、又は、
−上記第２及び第３のデータセットのうちの構成要素を表現するデータを削除すること、又は、
−上記第２及び第３のデータセットのうちの以前に追加された構成要素を表現するデータを変更することによって繰り返す手段を備えている。
【００３２】
本発明はまた、コンピュータプログラム製品がロードされたコンピュータが読み取り可能なデータキャリアと、コンピュータプログラム製品によって生成されたデータを具現化するコンピュータが読み取り可能なデータ信号と、コンピュータプログラム製品がロードされたメモリ又は記憶手段を備えたコンピュータシステムとに関する。コンピュータプログラム製品は、本発明の方法に関連して前述し、かつ後述するステップのすべて又はいくつかを実行する手段を備えていてもよい。
【図面の簡単な説明】
【００３３】
【図１】構成要素のセットで表現された製品モデルの概念図である。
【図２】値設定プロセスにおける複数のステップの概要を示す図である。
【図３】値設定プロセスの値を伝搬させるステップを示す図である。
【図４】値設定プロセスの値を処理するステップを示す図である。
【図５】別個のデータ構造を介した構成要素間の拘束条件を示す図である。
【図６】値設定プロセスの値をチェックするステップを示す図である。
【図７】値設定プロセスの間における異なる複数の状態に分割された、状態に基づく方法を示す図である。
【図８】構成要素と、複数の状態変数を備えたその状態ベクトルとを示す図である。
【図９】Ｃ２及びＣ４を包含する、Ｃ３のクラスタを示す図である。
【図１０】Ｃ１のクラスタが２つの構成要素のみを含む、重複する複数のクラスタにてなるセットを示す図である。
【図１１】複数の部分構成要素を備えたより複雑なクラスタ構造の一例を示す図である。
【図１２】ある構成要素（構成要素５）を追加してパラメータ空間を拡大させることを示す図である。
【図１３】ある構成要素を即時の製品モデルに追加するプロセスを示す図である。
【図１４】複数の構成要素を接続するプロセスを示す図である。
【図１５】モデルのチェーン化を、２つの構成要素間の接続の結果として示す図である。
【図１６】構成要素に基づく視覚的コンフィギュレータのアーキテクチャを示す図である。
【図１７】マネージャ手段、世界、構成要素などのデータ構造を示す図である。
【図１８】構成要素１の論理的クラスタを示す図である。
【図１９】足場組みシステムを構成する際における複数のステップの視覚化を示す図である。
【図２０】関連する変数のうちのいくつかを含む、プラットフォーム４のクラスタを示す図である。
【図２１】構成プロセスのステップ１０の後に現れる組み立て品（又は構成要素の階層）を示す図である。
【図２２】構成される足場組みシステムのパラメータ空間を示す図である。
【発明を実施するための形態】
【００３４】
本発明の詳細な説明．
構成する技術において取り組まれる科学的な問題点は、与えられたシステムに対する合法的なソリューションの動的な状態空間を構築し、かつ上記動的な状態空間においてナビゲートして移動することにある。理論的に言えば、（製品を）構成することは、（当該製品の）１つの構成に到達するようにパラメータ空間をナビゲートして移動するプロセスである。
【００３５】
製品は、何らかの全体をともに構成する、何らかのシステム又は物理的オブジェクトもしくはオブジェクト群である。構築可能な製品は、（何らかの意味で）ともに構築されて全体を生じさせることが可能な、所定個数の部分製品にてなる製品である。
【００３６】
構成の用語法において、製品モデル（ＰＭ）とは、システム全体におけるすべてのパラメータの記述であり、かつパラメータ値のどの組み合わせが合法的であるかということについての記述であり、これらはコンフィギュレータにおいて合法的な（又は有効な）製品を表現する。この用語法では、構成プロセスは、製品の合法的な構成を生じさせる製品モデルに係る複数のルールを考慮しながら、複数のパラメータによって張られるパラメータ空間をナビゲートして移動することよりなる。
【００３７】
数学的に言えば、製品モデルは、製品の１つの可能な構成にそれぞれ対応するＭＮ×Ｐ個の値を有するパラメータ空間を記述する。ここでは、システムはＰ個のサブシステムにてなり、これらのサブシステムはそれぞれＮ個のパラメータを有し、また、これらのパラメータの各々はＭ個の可能な値を有することが仮定されている。Ｐ個のサブシステムが互いに接続されていないならば、パラメータ空間は（ＭＮ）×Ｐ個の値のみを有している。しかしながら、複数のサブシステムはいくつかの部分空間を有し、これらの部分空間においてサブシステムは互いに接続される。ゆえに、パラメータ空間は（Ｍ（Ｎ＋Ｏ））×Ｐ個の値を有しており、小さな数のＯの場合、すなわちサブシステムの重複が少ない場合には、ＭＮ×Ｐのシステムよりは複雑でない。言い替えれば、接続されていることを記述するいくつかの追加のパラメータを部分製品のそれぞれに付加することによってより複雑でないシステムが決定され、このことは、サブシステムの個数Ｐが最初に知られていない場合に大きな優位点となる。
【００３８】
本発明では、原則として無限（又は無制限）のパラメータ空間（すなわちパラメータ数）を記述することを目的として、構成要素のセットで表現された製品モデルが考案され、この場合、各構成要素（上述のＰ）は、複数の値（上述のＭ）にてなる変域をそれぞれ備えた有限個（上述のＮ）のパラメータを有するが、システム全体は無制限のものを備えてもよく、それは最初は未知であり、任意個数の構成要素にてなることが可能である。これらの構成要素はデータ構造の一部であり、各構成要素は所定個数の状態変数に関連付けられる。
【００３９】
ある特別な場合において、構成要素は、所定の幾何学的表現を有するオブジェクトに直接に関係付けられる。オブジェクトは通常、製品の物理的オブジェクトであり、その幾何学的形状は、関連付けられた視覚化システムにおいて、ＰＭの変化の結果として任意の装置上に視覚化されることが可能である。視覚化のために、上記幾何学的形状を表示することができる任意の電子装置を使用可能である。
【００４０】
すべてのパラメータが全構成要素に係る全パラメータの総体である古典的な仮定では、使用中の製品モデルは、既存の構成要素のセットで表現された製品モデルに新たな構成要素を設けて（モデルのマージングをして）製品の新たな構成を生じさせることによって拡張されるので、定義により、記述を実行することは不可能である。
【００４１】
本発明の重要な概念は、パラメータ空間を表現する特定のデータ構造と、パラメータ空間（状態空間とも呼ばれる）をナビゲートして移動するための関連付けられた方法とを含む、状態に基づいた構成である。
【００４２】
本方法では、すべてのパラメータは複数の状態変数によって表現され、これらの状態変数のすべては、常に、きっかり１つの値を有している。すべての状態変数の値の収集物は「状態」と呼ばれ、製品のきっかり１つの構成を表現する。等しく重要なものは、満足できる構成に到達するまで、パラメータ空間において１度に１つの（又はそれよりも多くの）変数を変化させることによってナビゲートして移動する能力である。ある意味で、このタイプのコンフィギュレータは、ユーザがパラメータ空間内を動き回ることを可能にする。代替の方法は、パラメータ空間の何らかの受容可能なサブセットを減縮して、最後にようやく特定の製品構成に到達するというものである。
【００４３】
ある意味で物理的なものである製品、例えば足場について考えてみる。状態表現の１つの利点は、これが、構成プロセスの間にユーザに対して構成を視覚的に提示することを可能にするということにある。製品の仮想的な表現を視覚化することが意味するものは、製品の視覚化であり、パラメータ空間の何らかの抽象的表示ではない。製品を構成すると同時にその結果を表示することに関わる問題点は、構成技術の分野における既知の問題点である。状態に基づく構成は、このタイプのコンフィギュレータがどのように動作するかということについてのまさに核心部分にあり、その含意すること及び利点は視覚化に限定されるわけではまったくないということに留意されたい。
【００４４】
本発明の中心的な部分は、構成要素のセットで表現された製品モデル（構成要素のセットで表現されたＰＭ）を有するという概念である。構成要素のセットで表現されたＰＭは、ＰＭに関連した２つの部分にてなる。一方の部分はＰＭの静的記述であり、他方の部分は動的なものである。このことは、ＰＭにおける個別の構成要素から製品を構築することを伴いかつ製品の全体が動的に変化し、結果的にモデルの（必然的に静的な）記述がモデル自体から分離される必要のあるアプリケーションにおける有用性にとって必要である。
【００４５】
静的な記述は断片化された製品モデルと呼ばれ、かつこれはＰＭの有限個の断片にてなる。ＰＭの断片は、ＰＭの構築用ブロックである。ＰＭの各断片は、製品パラメータにてなる１つのセットを含む。
【００４６】
ＰＭのコンテキストではＰＭの断片が構築用ブロックであるが、製品のコンテキストでは構成要素が構築用ブロックである。しかしながら、ＰＭの断片は１つの構成要素又は構成要素群に直接に関連付けられる場合が多い。
【００４７】
動的な記述は即時の製品モデルと呼ばれ、かつこれは互いに組み合わされた複数のＰＭの断片のセットを含む。言い替えれば、即時のＰＭは、そのＰＭの断片の、互いに依存した固有の組み合わせでの総和である。即時のＰＭは通常、同一のカテゴリのＰＭの断片が、同じパラメータのセットを有するＰＭの断片として定義される場合であって、ただし複数のパラメータが異なる値を有する可能性のある場合に、同じカテゴリのＰＭの多数の断片を含むということに留意されたい。
【００４８】
要するに、構成要素のセットで表現されたＰＭは、図１に示すように断片化されたＰＭと即時のＰＭとからなる。
【００４９】
構成要素のセットで表現されたＰＭを使用する実行時環境では、第１のインスタンスはＰＭの断片であり、これが即時のＰＭを初期化する。その後、即時のＰＭのモデルを変更することによって、構成要素のセットで表現されたＰＭの変更が実行され、通常、この変更のそれぞれが、即時のＰＭに係る、及び／又はそのＰＭの断片に係る新たな構造を生じさせる。
【００５０】
このことを実行できるようにする際の全体的な基礎は、ＰＭのすべての断片がそれらのコンテキストに組み込まれるＰＭクラスタ化と呼ばれるものを生じさせる、ローカルな組み合わせに依存する。このことは、特定の構成要素の影響（インパクト）又はむしろその状態がローカルなものでしかないことを含意する。その固有のクラスタ（コンテキスト）における変化はクラスタの重複を介した他のクラスタへの伝搬が可能になる場合があるので、少なくともこれは単にローカルな直接的影響である。
【００５１】
本発明は、複数のシステム構成要素（略して構成要素という。）から構築されることが可能な、複雑なシステムを構成することに関する。区別するために、システム全体を「シーン」と呼ぶ。
【００５２】
状態に基づくシステムにおいて構成するということは、製品モデルに係る複数のルールを考慮しながら状態を変化させることを意味する。コンフィギュレータにおける（システムの）製品モデルは、利用可能な全パラメータのための記述と、それらが従わなければならないルールとを備える。数学的には、これは、すべての関連するパラメータの個別の変域に係る直積（デカルト積）であるパラメータ空間と、合法的なパラメータ空間と呼ばれる、パラメータ空間のサブセットを本質的に記述する複数のルールにてなるセットとを備える。
【００５３】
コンフィギュレータとの関連において、パラメータ空間内の各点は、問題となっているシステムの構成と呼ばれ、この点が有効なサブセット内にあれば、この構成は合法的である（又は有効である）と呼ばれる。（システムを）構成することは、１つの（又は場合によっては複数の）構成を表現するデータを生成することを含む。構成（パラメータ空間内の点）は、各パラメータについてきっかり１つの値を含むということに留意されたい。
【００５４】
構成することに対する、状態に基づいたプロセスのアプローチが意味することは、構成プロセスが基本的に、通常は常に合法的なサブセット内に留まりながら、個別のパラメータをそれぞれ表現する状態変数を１度に１つ又は複数個だけ変化させることによって、構成（「状態」と呼ばれる。）から構成へナビゲートして移動することよりなるということにある。
【００５５】
システム全体に係る与えられた状態において、合法的なパラメータ空間と、あるパラメータの変域との共通部分は、当該パラメータの合法的な値と呼ばれる。これらはまさしく、この変数が別の変数との競合を発生させることなく、すなわちルールを破ることなく割り当てられうる値である。
【００５６】
本質的には、本方法において必要とされる３つの別個のデータ構造が存在する。
【００５７】
第１のデータセット：断片化された製品モデルであり、これは、構成要素の複数のカテゴリ（モデル−断片）の定義にてなるセットである。これらの定義の各々は、この構成要素のカテゴリに対するパラメータの数及び複数のソーティングと、このような構成要素のふるまいとを定義するデータを備える。
第２のデータセット：即時の製品モデルであり、これは、その時点で組み合わされるシステムの製品モデルであり、シーン内の構成要素に係るすべてのパラメータと、その時点で合法的であるパラメータ空間のサブセットとの表現を備える。
第３のデータセット：パラメータ空間における（現在の構成を表現する）現在の点を正確に指示する状態である。
【００５８】
図面の詳細な説明．
状態変数は、ＰＭにおけるまさに１つのパラメータを表現し、また、これは、ＰＭからのデータ及びルールが構成プロセスに直接に関係付けられるポイントである。
【００５９】
状態変数は、このパラメータに関して利用可能なすべての値を表現する変域に関連付けられる。変域内に存在しないものを変数へ割り当てることは、いかなる意味もなさない。
【００６０】
与えられた時点において、変域の値のサブセットが、場合によっては変域の値のすべてが合法的であるとされる一方、その残りは合法的ではない。これは、静的である変域とは相違して、動的に変化する何かである。与えられた時点においてどの値が合法的であるかについては、現在の状態に対するＰＭの反応を反映する、すなわち、システム全体の状態が与えられている場合に、システム全体を合法的でない状態に導くことなくこの変数にどの値が割り当て可能であるかを反映するということに留意されたい。従って、これは間接的に変数と他の変数との相互作用を反映する。
【００６１】
先に述べたように、状態値は任意の時刻においてきっかり１つの値を有し、この値を用いて変数が設定された項が使用される。この値は変域内の多くの値のうちの１つであり、値設定プロセスのみがこれを変更することができる。図２に、値設定プロセスにおける各ステップの概要を示す。値設定プロセスが、合法的でない状態という結果をもたす場合、本プロセスは競合状態になると呼ばれる。図３における値を伝搬させるステップを参照されたい。このことは、システムの明示的な設定に依存して異なる方法で解決されることが可能である。１つの例は、問題となっている変数の簡単なロールバックを使用するものであり、もう１つは、状態全体を過渡的とみなしかつきわめて先進的な過渡状態解消機構を活用して、合法的な状態を与えるために他のどの変数値が調整されるべきかを識別する方法である。
【００６２】
状態変数には、変域の値のどれが合法的であるかを動的に限定することができる、所定個数の拘束条件が割り当て可能である。言い替えれば、それらの拘束条件は、どの値が合法的であるかを制御する。さらに、状態変数には、値設定プロセスの間に、値を処理するステップにおいてトリガーされる、いくつかの結果又は効果が割り当て可能である。図４を参照されたい。
【００６３】
パラメータ空間の合法的な部分を決定するルールは、各状態変数へ拘束条件を割り当てることによってモデル化される。拘束条件は、別個のデータ構造に対するか、又は外部のデータ構造に対するものであってさえもよい、ある種のリンクとみなされることが可能であり、特定の態様の現在のシステムに係る情報はここで収集されて処理される。図５を参照されたい。従って各拘束条件は、特定の状態変数に関連するこの情報の特定の解釈である。例えば、複数のオブジェクトにてなるシステムの純粋な幾何学的情報を表現するデータ構造を有することは、このシステムの幾何学的特性を表現する拘束条件の使用を可能にする。もう１つの例は、別個の外部のデータ構造において実行される何らかの計算であり、これは次いで複数の状態変数を介してパラメータ空間に影響を与える。別個のデータ構造に係る第３の例は、与えられた（ローカルな）複数の変数にてなるシステムのすべての合法的な組み合わせを備えたデータベース、すなわちシステムの論理的コンフィギュレータである。
【００６４】
この場合の重要なポイントは、拘束条件がきっかり１つの状態変数に対して割り当てられ、次にはこれがそのデータ構造へ間接的にリンクされるが、このデータ構造は、こうしてそれにリンクされた複数の状態変数を有する可能性があり、通常は実際に有しているということにある。まさしくこれは、複数の状態変数が、直接にではなく、このようなデータ構造の変化に対するそれらの個々の反応を介して、互いに相互作用しうる方法である。
【００６５】
状態変数の合法的な値に拘束条件を与えること以外に、すべての拘束条件はそのデータ構造に対して所定の結果又は効果を有するが、このことは、データ構造が、関連付けられた拘束条件によって状態変数を設定した時点で変化するということを意味する。これが、ある状態変数へ所定の結果又は効果を割り当てるための機構である。
【００６６】
実際の使用においては、値の合法性をチェックすることが、その結果に責任を負うことなしに可能であれば、拘束条件はシミュレーション可能である。通常、これは単に特定の実装に係る性能の問題であり、よって抽象的なプロセスにはさほど関連しない。このことは、本方法を実際に実装するときにはかなり重要であるのでここに言及しておく。図６の、値をチェックするステップのフローチャートを参照されたい。
【００６７】
従って、ある拘束条件がシミュレーション可能でなければ、何らかの効果がトリガーされる前にこれをチェックすることはできない。このような状況において値が合法的でないということが発見されると、状態値は競合状態にあり、ロールバック機構が動作させられる。最も一般的なロールバック機構は単に設定手順を逆転させるものであるが、しかしながら、このことは所定の状況においては必ずしも可能でなく、及び／又は望ましくない。もう１つのロールバック機構は、複数の効果にてなる重み付けられた方式（スキーム）を使用することであり、この場合、これらの効果は上記方式に与えられる重み付けに従って異なる優先度を有するものである。
【００６８】
図７に、値設定プロセスの間における異なる複数の状態に分割された、当該状態に基づく方法を示す。
【００６９】
このようなデータ構造がこうして変更されている場合、このデータ構造に関連付けられた他の変数がそれらの状況を変化させている可能性があり、それらの変数は通知される必要がある。これもまた、拘束条件によって扱われる。従って、拘束条件は、関連付けられたデータ構造の変化によって変更される可能性があり、状態変数にこのような変化について通知することができる。このような変化に対する反応は異なる種類である可能性があるが、いくつかの顕著な原則が存在する。第１の例では、これにより現在の合法的な値が更新されることになるが、また、これによりこの変数の値が実際に設定されることにもなる。
【００７０】
単一の変数を設定することは、拘束条件−効果の関係を介して他の変数の設定をもたらす可能性があり、このことは次いで他の変数の設定をもたらし、こうして結果が伝搬される。このプロセスは、効果のカスケーディング（又は単にカスケーディング）と呼ばれる。これは１つのＰＭの断片内に留まるように限定されるものではなく、即時のＰＭ全体にわたってはなはだ十分に拡散されることも可能である点に留意されたい。ただし、このプロセスを制御するために伝搬の停止を挿入することが非常に賢明であるので、これが実際に拡散されることは非常にまれである点に留意されたい。
【００７１】
ある構成要素は（ＰＭの断片の）データ構造の一部であり、各構成要素は、構成要素パラメータの各々につき１つの状態変数を備えた状態ベクトルに関連付けられる。図８を参照されたい。構成要素に対する効果は、これらの状態変数を介して制御される。例えば、ある構成要素に対して特定の状態変数が設定されると、これは視覚的効果を有する可能性がある。
【００７２】
構成要素が製品の構築用ブロックを表現する場合を想定されたい。（完全な、又は部分的な）製品の全体は、所定個数の構成要素によって表現された所定個数の構築用ブロックで構成される。製品は、複数の部分製品の間で２つ１組の接続を形成することによって構成可能である。構築可能な製品の概念に沿うとき、構成要素は２つ１組で接続されることが可能であり、これにより構成要素の階層（又は組み立て品）と呼ばれるデータ構造が生成される。これは数学的には、構成要素グラフ（component graph）と呼ばれる。
【００７３】
各構成要素は、他の構成要素への、（動的に変化する）所定個数の接続（又は構造的接続）を有することが可能である。接続は反射的であり、よって、接続は、ある構成要素がもう１つの構成要素に接続されれば他の構成要素も最初の構成要素に接続されるという意味で双方向的である。先に述べたように、ある構成要素のＰＭの一部は、与えられた構成要素に対してある役割を果たす可能性のある、当該構成要素の他の構成要素に対する関係であり、これはしばしば、特定の状態変数を有することによってモデル化され、ここで上記特定の状態変数はその値としてもう１つの構成要素を有している。この特定の状態変数は、構成要素変数と呼ばれる。実際の値は、ＰＭの断片に対応する構成要素のカテゴリであるが、これはなお、構成要素のカテゴリに係る特定のインスタンスを保持し、これが構成要素である。明確に言えば、ある構成要素（例えばＣ２）がもう１つの構成要素（例えばＣ１）における構成要素変数（例えば近傍１）の値であれば、Ｃ２はＣ１のＰＭにおける近傍１の役割を果たす。
【００７４】
構成要素のＰＭ内では、構成要素変数は単なる状態変数である。しかしながら、構成要素変数（を設定すること）の効果（の一部）は、その構成要素と値構成要素との間の接続を確立することにある。このことは、他の構成要素内の変数をこの構成要素変数で設定することを含みうるということに留意されたい。
【００７５】
ＰＭの断片は、システムの全体的ＰＭの構築用ブロックである。ＰＭの各断片は、システムの複数のパラメータにてなるセットを含む。ＰＭの断片はＰＭコンテキストにおける構築用ブロックであり、多くの場合において、構成要素又は構成要素群に相当するＰＭの断片である。
【００７６】
モデルのチェーン化は、即時のＰＭにおけるＰＭの所定個数の断片を組み合わせる抽象的なプロセスである。実際には、モデルのチェーン化は（構成要素間の）構造的な接続上で生じる可能性があり、ＰＭの２つの断片を互いに対話させるための方法である。このことはまた、断片を即時のＰＭの全体における一部へと昇格させることの一部でもある（図１及び図１５を参照）。
【００７７】
構成要素のレベルでは、構成要素の階層における構成要素間のすべての相互作用はチェーン化を用いて発生し、チェーン化は常にクラスタ内で発生する。本質的には、このことがクラスタの定義である。
【００７８】
２つの構成要素が接続されていれば、状態変数間のチェーンを確立することができる。このようなチェーンは、１つの状態変数の値と他の状態変数との間に何らかの関係を確立する。この関係は様々な種類に属する可能性があり、例えば、一方向ミラーリングと、シェアリングと、論理回路における実装の拘束条件の転移とがある。抽象的に言えば、これは全体として、一般に２つの構成要素に係るローカルなＰＭをチェーン化するモデルとして通常知られたものを構成する。
【００７９】
簡単な状況としては、ＰＭの断片が互いに独立している場合がある。一般に、ＰＭの断片は複雑なパターンで互いに高度に依存し合っている。このパターンを制御するために、クラスタ化が使用される。
【００８０】
実行時環境では、ＰＭの断片はすべて、少なくとも原則的には互いに組み合わされて即時のＰＭにされる。ただし、これを行うことを可能にする基礎の全体は、ＰＭのすべての断片がそれらのコンテキストに組み込まれるＰＭクラスタ化とわれわれが呼ぶものを生じさせるローカルな組み合わせに依存するので、このことは原則でしかない。
【００８１】
クラスタの概念は、構成要素のセットで表現されたＰＭが、モデルのチェーン化とともに統合化された部分である。すべての構成要素は、ＰＭの断片に関連付けられる。モデルのチェーン化は、ある構成要素のふるまいがその近傍の構成要素の状態変数に依存する場合にその役を果たすようになる。１つの構成要素のふるまいに係るこの完全なＰＭの断片は、ローカルな（構成要素のセットで表現された）製品モデルと呼ばれる。原則として、これはその近傍の構成要素の任意個数の状態変数に依存することが可能であり、もしくは近傍のそのまた近傍の任意数のレベルへと到達することが可能である。異なるローカルなモデルにおける状態変数に係る、それらを従属的なものにするこの重複は、まさしくモデルのチェーン化である。構成要素のセットで表現された１つのローカルな製品モデルに関係する構成要素の収集物は、クラスタと呼ばれる。
【００８２】
従って、構成要素のセットで表現されたグローバルな製品モデルである即時のＰＭは、複数のローカルなモデルにてなり、これらのローカルなモデルは、重複する複数のクラスタによってすべての構成要素の完全なカバーをもたらす。複数のクラスタに関与する構成要素は、モデルのチェーン化に含まれる構成要素である。
【００８３】
一例を挙げるために、２つの近傍を有する構成要素のカテゴリを想像し、かつこれらのうちの５つがチェーン状に連結されていると想像されたい。１つの構成要素に係るローカルなモデルはその近傍に依存するが、それ以外のものには依存しない。よってＣ３のクラスタは、Ｃ２及びＣ４を包含する。図９を参照されたい。互いに重複する複数のクラスタからグローバルな製品モデルがどのように構成されるかを説明するに当たっては、５つの構成要素を備えた製品モデルに対する図１０の完全図を参照されたい。この場合、Ｃ１及びＣ５は１つの近傍のみを有するので、それらのクラスタには２つの構成要素のみが存在するということに留意されたい。
【００８４】
非常に多くの場合において、クラスタ化は、すべてのモデルがチェーン化されているのではない異なる構成要素の複数のカテゴリを伴って、ずっと大幅に複雑化する。前の例の単なる拡張として、上述の構成要素が、１つの部分構成要素をそれぞれ備えた２つの部分構成要素を有する場合について考察する。親構成要素のモデルはそのすべての部分構成要素に依存するが、これらのいずれも、Ｃ２及びＣ４のクラスタ内の何かには依存しない（図１１を参照）。
【００８５】
即時の製品モデルは動的な製品モデルを妥協して処理し、ともに構築されるＰＭの複数の断片にてなるセットを含む。言い替えれば、即時のＰＭは、そのＰＭの断片の、互いに依存する固有の組み合わせにおける総体である。
【００８６】
同じカテゴリに係るＰＭの断片が、同じパラメータにてなるセットを備えたＰＭの断片として定義される場合であって、ただしこれらのパラメータが異なる値を有する可能性のある場合には、即時のＰＭは通常、同じカテゴリに係るＰＭの多数の断片を含むということに留意されたい。
【００８７】
モデルのマージングは、与えられた即時のＰＭへ新たなＰＭの断片を追加することにより即時のＰＭが動的に変化させられるとき、もしくは２つ以上の構成要素を接続する際に発生するものである。前者の場合、現在の即時のＰＭは新しい断片によって拡大される。もう一方の場合には、構成要素の各々に係る即時のＰＭをマージすることが実行される。ただし、実際には、ローカルなレベルでこれらのプロセスは同じであり、モデルのマージングとして統一的な用語を用いている。
【００８８】
モデルのマージングは、２つの方法で実行可能である。１つの方法は、クラスタ内においてＰＭの複数の断片を接続することであるが、しかしながら、これによれば単に、クラスタ内に１つの完全なローカルなＰＭ、すなわち新たなＰＭの断片が組み立てられる。もう１つの方法はクラスタ間におけるものであり、これは、一般的な構成の観点から見た場合の実際のモデルのチェーン化である。
【００８９】
即時のＰＭを見るための良い方法は、（無限個の）多数の互いに重複する古典的な製品モデルとすることであり、このとき、これらの製品モデルがモデルのマージングによってそれらの重複に影響する場合を除いて、その各々は半独立的に構成されることが可能である。
【００９０】
単一の構成要素は、構成要素のカテゴリに係る１つのインスタンスとみなすことができる。ある構成要素が生成されると、すべてのパラメータの新たなコピーが生成される。上記構成要素がシーンに追加されると、これらのすべてのパラメータは、即時のＰＭに係る合計の瞬間的なパラメータ空間へ追加され、その構成要素のみに関係する拘束条件が適用される。
【００９１】
２つの構成要素が接続されるとき、各々は互いにとって特定の役割を果たす。これらの役割は構成要素のカテゴリにおいて（ふるまい及びすべてのものにより）予め定義され、このふるまいは製品モデルの一部である。
【００９２】
上記ふるまいは、２つの部分よりなるとみなすことができる。第１の部分は、どの役割が利用可能であり、またどの構成要素のカテゴリがそれらを果たせるかということに関する記述である。構成要素変数は、ある構成要素にとって利用可能な各役割を表現する。従って、この変数に割り当てられる変域とオプションの拘束条件とが存在する。第２の部分は、これらの構成要素に関連付けられる２つのローカルなＰＭが互いにどのように影響し合うかということに関する記述である。これらは、互いの状態変数に拘束条件を与えることによって互いに影響し合う。すなわち、これらは、構成要素においてどの変数が実際に利用可能であるかということには影響しないが、これらの変数においてどの値が合法的であるかということには影響する。
【００９３】
このコンテキストでは、即時のＰＭは以下のものからなる。
【００９４】
・個別のパラメータ（状態変数）に関連付けられた複数の変域の直積であるパラメータ空間。
・複数のパラメータ値の間の関係を定義する、パラメータ空間の合法的なサブセット。
【００９５】
このことを考察するために等しく有効な方法は、即時のＰＭが、これらのパラメータの値の間の関係であって、合法的であると呼ばれるパラメータ空間のサブセットを定義する関係を備えるというものである。このような関係もまた、拘束条件と呼ばれる。
【００９６】
即時のＰＭは、下記のような方法で動的に変化することが可能である。変化する可能性のあるものは、次のものである。
【００９７】
・パラメータ空間に包含される複数のパラメータ。与えられたパラメータの変域は変化しなくてもよいということに留意されたい。
・合法的であると呼ばれるパラメータ空間のサブセット。定義により、あるサブセットはその上位セット（superset）に属するので、アプリオリにパラメータ空間を変化させるとサブセットは無効にされることに留意されたい。しかしながら、上位セットの拡大を、合法的なサブセットに単に追加することによって定義し、拘束条件をサブセットの明らかな拘束条件として定義すれば、これはなお十分にうまく定義されている。
【００９８】
（コンフィギュレータにおける）即時のＰＭは、本質的に、ある構成要素を変更する場合と、ＰＭの断片（又は構成要素）を追加するか又は除去する場合と、対応する構成要素の階層におけるＰＭの複数の断片の間の接続を再配置する場合とに変化する。これは、後で説明されるように、以下の５つの方法で変化する。
【００９９】
・構成要素を変更すること、
・新たな構成要素を追加すること、
・構成要素を除去すること、
・２つの構成要素を接続すること、及び
・２つの構成要素を切断すること。
【０１００】
構成要素を変更する動作は、当該構成要素のパラメータに対してローカルな効果のみを有する。新たな構成要素を追加する動作は、当該新たな構成要素のパラメータを追加することによりパラメータ空間を拡大する。図１２を参照されたい。さらに、このサブセットは内部で拘束条件を有する可能性があるが、これらの新たなパラメータと旧パラメータとの間に関係は存在しなくてもよい。図１３は、即時のＰＭに構成要素を追加するプロセスを示す。
【０１０１】
構成要素を除去する動作は、この構成要素に関連付けられたパラメータを即時のＰＭのパラメータ空間から単に除去する。ただし、除去される構成要素が接続されていないこと、すなわち予め他のすべての構成要素から切断されていることが予め必要とされる。
【０１０２】
２つの構成要素を接続する動作は、これら２つの構成要素の各々に属するパラメータ間に新たな関係を直接に確立することによって、合法的なサブセットを変化させる可能性がある。間接的には、このことは、既に確立された関係を有するパラメータに対してさらに影響を与える可能性がある。具体的には、本プロセスは、問題となっている２つの構成要素のローカルなＰＭの間でチェーン化されたモデルを確立することを含む。このモデルのチェーン化は、両構成要素が互いに対してどの特定的な役割を果たすかということに依存し、ＰＭの断片（構成要素のカテゴリ）の一部として記述される。図１４を参照されたい。
【０１０３】
２つの構成要素を接続するプロセスを実装する１つの方法は、構成要素の各々に他方に対する特定の役割を果たさせることと、２つの構成要素の間でチェーン化するモデルをセットアップすることとを含む。このモデルのチェーン化は、構成要素のローカルなＰＭの２つの断片にそれぞれ属する要素の間に１つ又は複数のチェーンを確立することよりなる（図１５を参照）。これらのチェーンは特定の役割に関連付けられ、かつＰＭの断片の一部である。
【０１０４】
明らかに、２つの構成要素を切断する動作は、これらの２つの構成要素が接続されていることを必要とする。この動作は、これらの構成要素に属するパラメータ間のすべての関係を切断することによって合法的なサブセットを変化させる。
【０１０５】
構成要素のセットで表現されたＰＭは、ＰＭに関連した２つの部分にてなる。一方の部分は、有限個のＰＭの断片にてなり、断片化されたＰＭと呼ばれるＰＭの静的な記述である。もう１つの部分は、実行時環境において動的に変化される上述の即時のＰＭである。
【０１０６】
断片化されたＰＭは、システム又は製品の複数の構築用ブロックが互いに構築される前にそれらの構築用ブロックにて成る所定の構造物を得るために使用されるが、即時のＰＭは、断片化されたＰＭからのＰＭの各断片が即時のＰＭの生成において使用される構築プロセスにおいて使用されるので、これらの２つの部分を分離することが重要である。
【０１０７】
２つの構成要素を接続して上述のようにモデルのチェーン化を確立することに係る非常に重要な効果は、これにより２つのＰＭがマージされ、従ってモデルのマージングプロセスにおいてこれらの両方が変化させられることである。原則的には、標準的なコンフィギュレータの場合に見られるように、これにより、マージより前から即時のＰＭを満たした構成の全体が無効にされるか、又は無意味なものにさえされる。しかしながら、現在の構成に係る構成要素を中心とした状態表現の原則に基づく構成要素のセットで表現されたＰＭにより、所定個数の変数と、それらの意味と、関連付けられた変域とは不変であることが保証され、このことにより、結果として生じた状態が、新たにマージされた構成要素のセットで表現されたＰＭにおいて依然として意味のある（技術上有効な）構成を表現するという非常に重要な特性が保証される。
【０１０８】
上述のこの特性は非常に重要な特性ではあるが、この場合、状態の合法性は保証されていない。合法的でない状態は解消される必要があるので、この状態は過渡状態であり、また、この場合、純粋なロールバックは、接続を再び断つことに対応するので適当でない。このことは過渡状態の解消と呼ばれ、いくつかの可能性が存在する。原則的には、すべての変数が合法的ではなくなった可能性があるとしても、構成要素を中心とした表現となるように自然に構築されたローカルな複数の原則（例えば、幾何学的及び構造的な局所性の両方）により、一般的に、この問題点は、あるとしても、関連した構成要素の近傍に制限され、また非常に多くの場合にごくわずかな変数のみに制限されるということに留意されたい。
【０１０９】
構成要素のセットで表現されたＰＭに基づいて過渡状態の解消の問題を解決する方法は、パラメータ空間において近傍に受容可能な状態を発見することである。近傍において条件を評価する方法ＰＭに依存し、実際には、構成要素のセットで表現されたＰＭの一部として考慮されることが可能である。このことは、例えば、すべての変数に優先度を割り当てていて、合法状態に到達するまで、競合において重要性が最も低いものから最初に変化させるということが可能である。他の方法も可能である。
【０１１０】
原則的には、構成要素変数は、複数の拘束条件を通常の方法で有することが可能な単なる通常の変数である。しかしながら、マージングを行う前に両側のＰＭにおいて調整されなければならず、かつ広域的に過ぎる過渡状態の解消が防止されなければならない場合、このような変数を設定することは、実際には、値設定プロセスの間にルールが変化することをモデルのマージングに含意させるので、プラグ技術が使用される。プラグ技術は、接続される複数のＰＭの間においてある程度の互換性を予め保証する。プラグは、基本的には構成要素内の接続ポイントを表現し、また、構成要素変数に関連付けることにより、それらのプラグは、複数のＰＭがマージされる前に、接続が意味を持つか否かを制御する。さらなる利点は、これが、幾何学的及び視覚的な表現に対して、必要な位置決めデータを提供する自然な方法であるということにある。
【０１１１】
構成要素に基づいた視覚的コンフィギュレータの例．
本発明は、製品と、従って製品モデルとが複数の部分製品（又は製品の部品）から無限に構築されうるという原則に基づいて、構成要素に基づいた視覚的コンフィギュレータにおいて物理的オブジェクトの仮想的な表現を構成するための方法を提供する。構成要素のセットで表現された製品モデルは、構成要素に基づいた視覚的コンフィギュレータ、簡単に言えば視覚的コンフィギュレータにおける、基本的な機構として使用される。
この視覚的コンフィギュレータは、標準型のコンフィギュレータを用いた場合には典型的には取り扱うことが困難であるが一般的に現存するタイプの製品のために役立つ。概念的には、これは下記の５つのキーポイントを互いに結びつけている。
【０１１２】
１．構成要素の階層と、
２．状態表現に係る特定の実装である状態エンジンとを使用し、
３．これに、現在の構成の動的かつ真の視覚的表現を結びつけ、
４．また、論理的な拘束条件と、
５．幾何学的な拘束条件との両方を満足させる。
【０１１３】
図１６に、構成要素に基づいた視覚的コンフィギュレータの基本的なアーキテクチャを示す。以下の説明は、選択されたデータ構造全体に集中して行い、これは、先述のデータ構造と、並びに、状態エンジンによって実行される状態変数の処理タイミングに関連する特定の実装選択と、状態変数に関連する拘束条件の働き及び関連とに関して適切な相関関係に設定されている、
【０１１４】
基本的な構造は、所定のグラフ構造（必ずしも単一の接続のグループではない）において接続された多数の構成要素を含む。各構成要素には、構成要素のパラメータの各々につき１つの状態変数を備えた状態ベクトルが割り当てられる。これは、（動的な）パラメータ空間の完全な表現を構成する。
【０１１５】
視覚化は、世界にいくつかの周囲部分（視覚的世界）を割り当て、各構成要素に視覚的表現を割り当て、また、構成要素の各状態変数が視覚的効果を有することを許容して、構成要素の表現（世界又は他の構成要素に対するその相対的な位置を含む）を変化させることによって付加される。各状態変数は常にきっかり１つの値を有するので、製品全体の完全な視覚化は、常に現在の構成を正確に表示する。
【０１１６】
パラメータ空間の合法的な部分を決定するルールは、各状態変数に複数の拘束条件を割り当てることによってモデル化される。この実装においては、こうした拘束条件に係る２つの特定のタイプが使用される。その１つは、製品の幾何学的な特性を表現する拘束条件の使用を可能にする、世界及び製品の純粋に幾何学的な表現である。世界に対して何らかの幾何学的な世界を割り当て、各構成要素に幾何学的な表現を割り当て、かつ各状態変数に幾何学的な拘束条件を割り当てることにより、幾何学的なルールは、視覚化に対して同様に追加される。構成要素の構造は、構成要素間の各接続がそれらの間の相対的位置を包含するという事実において反映される。
【０１１７】
第２のタイプは、製品の純粋に論理的な表現を収集する通常の論理的コンフィギュレータである。ローカルなＰＭの各断片に対してこのような関連付けられた１つの論理的な表現が存在するが、これは、原則的にはあらゆる構成要素であることが可能な特定のＰＭに依存して、論理的なクラスタホルダと呼ばれる所定のカテゴリの構成要素に関連付けられる。特に、複数の状態変数は、変数間の関係に係る何らかの論理的記述に関連付けられた論理的な拘束条件をそれらの変数に割り当てることによって互いに結びつけられる。この実装においては、各構成要素がこうしたものに関連付けられることが許容され、各状態変数には、これを１つのものに結びつける論理的な拘束条件が割り当てられうる（これがローカルな製品モデル、論理的クラスタ及びクラスタホルダの概念とどのように関連するかということについてのさらなる詳細は、下記を参照されたい）。
【０１１８】
まず第１に、アプリケーションの全体は、上述の（及び後述の）方法及び構造を含むコアと、並びに、３Ｄレンダラ（任意の装置）と、グラフィカルユーザインタフェースと、可能であれば外部の論理的コンフィギュレータと、問題となっているＰＭの表現とを備える。
【０１１９】
基本的なアプリケーションの構造は、基本的には、あらゆるものを互いに結びつけて初期化を取り扱う全体的マネージャ手段と、断片化された静的なＰＭ及び関連付けられた情報（データ）を制御するデータマネージャ手段と、３Ｄの視覚化を取り扱い外部の視覚化システムとインタフェースをとるビジュアルコントローラと、幾何学的な世界を取り扱う幾何学的コントローラとである、いくつかのコントローラから構築される。
【０１２０】
全体的なデータ構造（上述の各々における特殊化されたもの以外）は、複数の構成要素の周囲に構築される。本質的に周囲部分を表現する世界が存在する、すなわち、製品がその中で構築されるシーンが存在する。これは、この中に直接に挿入されていてもよい構成要素を含むが、構成要素の階層は直接には含まれていない。いくつかの初期構成要素のみが世界に直接に挿入されているが、部分構成要素は例えばもう１つの構成要素に接続されていてもよく、ゆえに間接的にのみ挿入されている。図１７は、このデータ構造を示す。
【０１２１】
次の３つの例は、図１６における状態エンジンの下部における３つの部分を説明している。
【０１２２】
視覚化部分の例．
現時点の（完全な）構成（製品の状態）の真の視覚化を保持するためには、下記の実用的な態様が考慮されなければならない。
【０１２３】
まず第１に、視覚的なシーンは、ビジュアルコントローラを介して、例えば何らかの３Ｄシーンのグラフによって表現された世界のオブジェクトに関連付けられる。これはまた、製品の周囲部分を含み、これもまたその固有のパラメータを有してもよく、実際に別個に構成されることが可能である。この区別が行われるのは、それが通常、実際に製品の一部である代わりに単に製品又はＰＭ（ルール）に影響するだけだからである。時にこれは、実際の構成を正しいか又は正確な周囲部分において示すためだけに視覚的に変化させられる場合すらある。
【０１２４】
第２に、各構成要素には、視覚的な表現が割り当てられることが可能である。視覚的でない構成要素は、ゴーストの構成要素又は抽象的な構成要素と呼ばれ、通常、何らかの収集を行う役割を有する。
【０１２５】
第３に、各状態変数は、その表現の特定の態様に影響する視覚的効果を有してもよい。これは、実際には、視覚化システムの柔軟性に依存して全体の表現をもう１つの表現と単に交換するだけであってもよい。
【０１２６】
１つの可能なタイプの視覚化システムは、シーンのグラフ上に、又は３Ｄのシーンのグラフ上にさえも表現が構築されるものである。このようなシステムでは、構成要素の１つの変数に係る視覚的効果が、特定の視覚的ノードに変更を加えることになる。例えば、材料ノードの色フィールドを変更することは、品目の色を変化させる可能性があり、一方、形状ノードを変更することは、その実際の形状を変化させる可能性がある。グラフのさらに上方における変形（トランスフォーム）ノードの平行移動又は回転フィールドを変更することは、品目の位置を変化させる、すなわち構成要素を移動させる。
【０１２７】
この階層的な表現は、使用中の構成要素のセットによる表現に係る利点を活用するために非常に適している。このことは、視覚的な変化をローカルに包含すること、すなわち１つの構成要素内か又は接続された２つの構成要素の間だけに包含することを自然かつ容易にする。例えば、２つの構成要素は、他の構成要素とは独立して、かつ他の構成要素との関係に影響を与えることなく、視覚的に互いに結びつけられて接続されることが可能である。この場合もやはり、構成要素に基づいた視覚的構成のポイントは、結果（及び効果）がローカルに達成されうるということにある。言い替えれば、構成要素自体の視覚的表現と、他の構成要素に対する接続の位置との上で達成されうる。
【０１２８】
幾何学的コンフィギュレータにおける拘束条件の例．
物理的オブジェクトを記述する視覚的コンフィギュレータの重要な部分は、製品の幾何学的及び物理的な態様を記述し、かつこれらの態様をコンフィギュレータに、すなわち状態変数に関連させる能力である。
【０１２９】
視覚化と同様に、その考案は、本質的には、現時点の（完全な）構成の幾何学的な表現を保持することにある。従って、ある状態変数に複数の拘束条件を割り当てることが可能であり、これは、現在の幾何学的な表現について照会することができ、また、通常は所定の効果を含意する変更をそれに加えることもできる。
【０１３０】
この場合も、各構成要素には、当該構成要素が現在の構成に追加される際に幾何学的な世界に挿入される、（その形状が）決定された幾何学的な表現が割り当てられることが可能である。各変数には所定の幾何学的な拘束条件が割り当てられることが可能であり、この幾何学的な拘束条件は、例えば、ある構成要素がもう１つの構成要素の上に移動されることを防止できる、すなわち衝突を防止でき、又は、おそらくは、ある構成要素に関連付けられた特定ゾーンに進入するものが存在しないことを保証できるものである。ゾーンの一例は、安全ゾーン又は作業ゾーンである。これはまた、単に、占有されることもされないことも可能ないくつかのスロットを有していて、ここで、特定のスロットにてなるセットを必要とする構成要素が挿入されたり又は接続されたりすることを防止したり又は許容したりすることが可能である。
【０１３１】
幾何学的な拘束条件の概念は、実際には論理的ルール等の他のルールで測定されかつ使用されることが可能な構成要素間の距離のような概念に対して幾何学的な世界を介して意味が与えられうるという点で、コンフィギュレータにとって特に重要である。これは、古典的なコンフィギュレータが通常利用できるデータではなく、この点がある種のルールの定式化を困難にする。またこれは、（構成要素の構造及び構成要素の階層の）構造的なものとは完全に別に、ローカルな影響についての自然な概念（局所性又は近接性）を与え、これは、例えば、部分製品が再度遭遇するように追加され及び／又は構築されているときを非常に簡単な方法で通知するか又は検出することを可能にする。幾何学的ルールを定式化するこの方法は、構成要素のセットで表現されたＰＭの主要な機構である。
【０１３２】
すべての幾何学的な拘束条件は同じ幾何学的な世界へ関連付けられるが、このことは、それらの個別の状態変数がここにおいて、同じ状態ベクトルにアクセスできるか否か、すなわち構成要素の構造に関してローカルにアクセスできるか否かということとは完全に独立に互いに影響し合うことを意味するという点に留意されたい。代わりに、幾何学的性質により、ある構成要素に対する拘束条件は、当該構成要素に物理的に近接して存在する他の構成要素によって影響される。ゆえに、この場合は、構造的なそれを見事に補足する幾何学的局所性という異なる概念が存在する。
【０１３３】
構成要素のセットで表現されたコンフィギュレータにおける論理的な拘束条件の例．
所定の範囲の問題は、論理的な構成を、構成要素のセットで表現された構成の概念と組み合わせることで解決され、従って、構成要素のセットで表現された環境において論理的コンフィギュレータのパワーを利用する。言い替えれば、この環境は、正しく使用されれば論理的コンフィギュレータを強化し、かつこの逆の場合もある。
【０１３４】
本質的に、データ構造は、論理的コンフィギュレータ（論理データベース）を各構成要素（実際には状態変数）に関連付けることが許容されることと、論理ルールを包含することと、このデータベースの論理的な拘束条件を構成要素における状態変数に割り当てることとによって拡大される。これにより、これらの変数は、（論理データベースにおいて許容される複雑さに依存して）複雑な方法で相互依存的となることが可能になる。
【０１３５】
チェーン化の機構を使用することにより、接続された複数の構成要素における状態変数にもまた、同じ論理データベースから論理的な拘束条件が割り当てられることが可能であり、こうして対応するローカルな製品モデル内にこれらが包含される。この状況では、このデータベースから論理的な拘束条件が割り当てられている複数の変数は、関連付けられた論理データベースを備えた構成要素の論理的クラスタと呼ばれる。このとき、この構成要素は、論理的クラスタホルダと呼ばれる（図１８を参照）。この構造は、コンフィギュレータが任意の論理的コンフィギュレータの強力さを利用できるようにするということに留意されたい。構成要素のセットで表現されたコンフィギュレータでは、ローカルな製品モデルは、予め決められた数のパラメータを記述し、一方で、全体的な即時の製品モデルは、任意個数のローカルな製品モデルを備え、従って任意個数のパラメータを備えることが可能である。
【０１３６】
足場組みシステムのための視覚的コンフィギュレータの実施例．
この実施例の目的は、本発明の方法を用いた構成プロセスを説明することにある。特に、コンフィギュレータにおいて使用される入力データの構成要素の構造及びデータ構造に重点を置き、また、製品モデル（ＰＭ）を構成要素のセットで表現することが、いわゆる構築可能な製品の拡大可能な性質をどのようにして捕捉するかということに重点を置く。
【０１３７】
実施例は、足場組みシステムである。２つの態様について検討する、すなわち、システムの構造、パラメータ及びルールが捕捉されるモデル化プロセスと、足場組みシステムに対する制限を利用しかつ考慮して特定の足場が構成される構成プロセスとについて検討する。
【０１３８】
足場コンフィギュレータは、例えば、足場システムの製造業者により足場敷設業者に対するサービスとして提供される可能性があり、足場敷設業者は本システムを使用して特定のタスク用に彼らが必要とする足場を正確に構成することが可能であり、同時に製造業者がこのような（カスタマイズされた）システムを実際に配送できることが保証される。コンフィギュレータに関連付けられた視覚化システム、すなわち視覚的コンフィギュレータを使用すれば、これは、正確な組み立てを行う足場敷設業者にとってかなり容易なものになる。
【０１３９】
製品は、足場を構築するためのシステム全体にてなる。これは、フロアモジュール、レール、はしごなどのようないくつかの足場組み用部品を備える。これらは、製品モデルにおいて表示される構成要素であり、かつ部分製品のコンテキストにおける（物理的な）オブジェクトである。製品モデルはまた複数の抽象的な構成要素を含むことも可能であるが、これらは必ずしも物理的なオブジェクトに１対１で対応するものではないということに注意されたい。
【０１４０】
より詳細には、所望の足場組みシステムは、何らかの建物の側面に沿って直立する作業プラットフォームをセットアップするためのシステムである。本質的には、これは、複数の鋼管にてなるフレーム構造物上に設けられた多数のフロアプラットフォームにてなる。昇り降りを容易にするために、いくつかのフロアは、はしごが取り付けられる穴を有することが可能である。作業員の落下を防止するために、フレーム上にはさらに鋼管製のレールを取り付けることができる。最後に、（ここではモデル化されないが）フレームは建物の壁に取り付けられてこれに固定されることが可能である。
【０１４１】
足場は、本質的には、プラットフォームと必要なフレームとの両方を備えた所定個数のフロアモジュールから構築される。２つのタイプのプラットフォームが存在して、１つは標準型であり、もう１つは穴及びはしごが設けられたものである。プラットフォームは短い側と広い側とを備えた長方形であり、足場は、複数のフロアモジュールから、他のフロアモジュールをいずれの側（等しい長さが要求される）に連結するか、あるいは上又は下に連結することにより増設されることが可能である。
【０１４２】
通常は、モジュールにおける２つの広い側の一方は壁取り付けになり、内側（inside-side）と呼ばれる。１つのモジュールの下には、地面又は別のモジュールのいずれかが存在している必要がある。１つのフロアモジュールからその１つ上のモジュールまでの距離は、低、中又は高であることが可能である（また、穴からの可能なはしごは、この高さに従ったものでなければならない）。与えられた足場（１つの構成）は複数の階に分割され、よって互いに隣り合うプラットフォームは同じ高さを有している。
【０１４３】
短いものと広いものとの２つのタイプのレールが存在して、フロアモジュールの側方に取り付けられる。一番上のフロア上にレールを追加できるように、本質的にいくつかのより長い管にてなる上部モジュールを追加することが可能である。
【０１４４】
特定の足場システムは、下記の構成要素、すなわち互いに上述された関係を有するプラットフォーム、標準のレール、フルサイズのレール、上部及びはしごを備えたＰＭを有する。各タイプの構成要素に係るパラメータと、構成要素のセットで表現されたＰＭに従う変数としてのそれらの定式化とについて、以下のことが指定される。さらに、異なる接続（又は連結）間に関与したチェーン化についても定式化する。第３に、ルールデータベース（ここではrules.logicdbと呼ぶ。）に関連付けられるものとして定義される関連の拘束条件について略述し、かつ関連したルールのタイプについて略述する。
【０１４５】
２つのタイプのフロアモジュールが存在して、１つは標準型であり、もう１つは穴及びはしごが取り付けられたものである。これらは、ＰＭにおける１つの（プラットフォーム）構成要素に対応し、それは、フロアのどちらかの側に穴を有するか、あるいは持たないかのいずれかの可能性がある。それが一方の端部にのみ穴を持ちうる場合には向きが問題になるということに留意されたい。反対に、２つの穴が存在することはあり得ない。プラットフォーム構成要素は、足場システムのルール及びパラメータを収集するこの製品モデルにおける主要な構成要素である。
【０１４６】
［表１］
プラットフォーム構成要素。
――――――――――――――――――――――――――――――――――――
<Component id=platform ..
<variables>
<var id=neighbor_left domain=modules valuetype=component type=link ..
<var id=neighbor_right ..
<var id=neighbor_outside domain=modules type=link ..
<var id=inside_neighbor ..
<var id=above domain=modules_and_top type=link
.. モジュールが異なる「形状」のモジュール、例えば幅の広いモジュールと狭い
.. モジュールとを備えた場合には、ここにチェーンが存在する必要がある。
<var id=below ..
<var id=ladder valuetype=component type=sub ..
<chain id=resize direction=out constraint=ladder chained=length/>
</var>
<var id=rail_left domain=rails type=sub
<chain id="length" direction="out" constraint="rail_left_length" chained="length"/>
</var>
<var id=rail_right domain=rails type=sub ..
..
<var id=rail_outside domain=rails type=sub ..
..
<var id=rail_inside domain=rails type=sub ..
..
<var id=wall_inside valuetype=boolean default=true
<var id=height valuetype=integer domain=module_heights default=medium
<var id=hole valuetype=boolean visualeffect=switch
</variables>
<logic>
..
</logic>
<geometry>
..
</geometry>
</Component>
――――――――――――――――――――――――――――――――――――
【０１４７】
［表２］
標準のレール構成要素。
――――――――――――――――――――――――――――――――――――
<Component id=rail_standard
<var id=length domain=side_lengths
</Component>
――――――――――――――――――――――――――――――――――――
【０１４８】
［表３］
フルサイズのレール構成要素。
――――――――――――――――――――――――――――――――――――
<Component id=rail_full
<var id=length domain=side_lengths
</Component>
――――――――――――――――――――――――――――――――――――
【０１４９】
［表４］
上部構成要素。
――――――――――――――――――――――――――――――――――――
<Component id=top ..
<var id=rail_left domain=rails type=sub
<var id=rail_right domain=rails type=sub
<var id=rail_outside domain=rails type=sub
<var id=rail_inside domain=rails type=sub
<var id=wall_inside valuetype=boolean
</component>
――――――――――――――――――――――――――――――――――――
【０１５０】
［表５］
はしご構成要素。
――――――――――――――――――――――――――――――――――――
<Component id=ladder
<var id=length domain=module_heigths effect=switch
</Component>
――――――――――――――――――――――――――――――――――――
【０１５１】
［表６］
変数の変域。
――――――――――――――――――――――――――――――――――――
<domain id=modules          list=(platform, none)/>
<domain id=modules_and_top  list=(platform, top_module, none)/>
<domain id=rails            list=(rail_standard, rail_full, none)/>
<domain id=module_heights   list=(low, medium, high)/>
<domain id=side_lengths     list=(short, wide)/>
――――――――――――――――――――――――――――――――――――
【０１５２】
製品モデルを記述するためには、下記のルールが使用される。
【０１５３】
ルール１：２つのモジュールの連結点は同一の長さである必要がある。すなわち、Ｃ１がleft_neighbor（左側の近傍）としてＣ２を有していれば、Ｃ２はＣ１をright_neighbor（右側の近傍）又はleft_neighbor（左側の近傍）のいずれかとして有する必要がある。またさらに、これは右側である必要があるが、このことは、さもなければ内側が対応しなくなるからである。
ルール２：壁があれば、内側の近傍は存在し得ない。
ルール３：フロアが地面の上に存在するのではない場合は、その下にもう１つのフロアが存在する必要がある。
ルール４：はしごは、穴のある場合にのみ存在することができる。
ルール５：フロアが地面の上に存在しているのではない場合、近傍（又は内側であれば壁）が存在しなければフロアの側方にレールが存在している必要がある。
ルール６：ルール５の結果として、あらゆるフロア構成要素の上部には何かが存在しなければならない（管材料はプラットフォームから下降するということに注意する）。
ルール７：ルール１と同様に、レールのlength（長さ）変数はフロアの側方の長さに一致している必要がある。
ルール８：はしごの長さは、モジュールの高さに適合している必要がある。
ルール９：フロアのすべての近傍（上と下を除く）に係る高さは同じである必要がある。
ルール１０：オブジェクト間の衝突や、又は例えば建物の一部のような周囲部分との衝突が存在しない。
ルール１１：はしご及びレールの幾何学的形状は、（衝突がない場合に限り）長さに適合している必要がある。
【０１５４】
ルール１は、本質的には、ある連結における２つの構成要素が各々どの役割を果たすかということを調整する、構造的な拘束条件である。これは、拘束条件を明示的でないものにするプラグを使用して実装される。
【０１５５】
［表７］
プラグの拘束条件を用いるモジュールの連結。
――――――――――――――――――――――――――――――――――――
<var id=neighbor_left plugid=neighbor_left ..
<plug id=neigbhor_left type=floor_short ..
..
――――――――――――――――――――――――――――――――――――
【０１５６】
ルール２、ルール３及びルール４は、１つの構成要素内の複数の変数を互いに結びつける標準的な論理型の拘束条件である。変数の各々は、ある拘束条件に関連付けられ、従って、別個に定式化されることが可能な論理的データ構造（rules.logicdb）にバインドされる。
【０１５７】
［表８］
rules.logicdbの名前を有するルールデータベースに関連付けられた論理型の拘束条件。
――――――――――――――――――――――――――――――――――――
<var id=neighbor_inside logicconstraint=neighbor_inside ..
<var id=wall logiccconstraint=wall ..
..
<logic database=rules.logicdb ..
<constraint id=neighbor_inside
<constraint id=ladder
<constraint id=wall
<constraint id=below
</logic>
――――――――――――――――――――――――――――――――――――
【０１５８】
別個のデータ構造rules.logicdbにおいては、ルールは、下記のように論理的に定式化される。
【０１５９】
［表９］
論理的ルール。ここで、−＞は含意を意味する。
――――――――――――――――――――――――――――――――――――
wall=true -> inside=none
hole=false -> ladder=none
onground=false -> below=floor_module
――――――――――――――――――――――――――――――――――――
【０１６０】
ルール５及びルール６は、ルール２、ルール３及びルール４に類似するものであるが、これらのルールを構築プロセスの間に実施することははなはだ非実用的である点が異なる。例えば、空きの側は、もう１つのフロアモジュールを追加するために必要な１つの前置状態である。このタイプのルールは完全ルール又は最終決定（finalize）ルールと呼ばれ、完了するように明示的に要求された場合にのみシステムにより実施される。これが実施されると、コンフィギュレータは最終的かつ正確な足場を生成する。
【０１６１】
［表１０］
論理的ルール。ここで、！は否定を意味する。
――――――――――――――――――――――――――――――――――――
in_complete -> (neighbor_left=none and !ground) -> rail_left!=none
in_complete -> (neighbor_outside=none and !ground) -> rail_outside!=none
..
in_complete -> above!=none
――――――――――――――――――――――――――――――――――――
【０１６２】
ルール７及びルール８もまた、標準的な論理型の拘束条件であるが、これらは連結された異なる構成要素内の変数に関連する点が異なる。１つの構成要素によって複数の論理的な拘束条件が保持されるので、チェーン化機構を用いてそれらの拘束条件をフロアモジュールから個々のレール及びはしごの変数へとプッシュ伝送する必要がある。
【０１６３】
［表１１］
チェーン、論理及び構成要素の間の関係。
――――――――――――――――――――――――――――――――――――
<component id=floor_module
<var id=rail_outside ..
<chain id=lenght constraint=rail_outside.length
</var>
<logic database=rules.logicdb>
<constraint id=rail_outside.length ..
</logic>
</component>
<component id=rail ..
<var id=parent
<chain chaintype=constraint
<var id=length
.. 及び、'rules.logicdb' において、
rail_outside!=none -> rail_outside.length=wide
rail_left!=none -> rail_left.length=narrow 
..
ladder.length=platform.height
――――――――――――――――――――――――――――――――――――
【０１６４】
ルール９は、連結される構成要素間における同一のタイプの拘束条件である。これは、チェーン化機構を用いて直接に取り扱われることが可能である。
【０１６５】
［表１２］
チェーン化機構。
――――――――――――――――――――――――――――――――――――
<var id=neighbor_left domain=modules valuetype=component type=link ..
<chain id=n_height direction=in chained=myheight constraint=neighbor_left.height
<chain id=myheight direction=out chained=n_height refvar=height
.. 又は ..
<chain id=myheight direction=out chained=n_height constraint=height
</var>
<logic database=rules.logicdb>
<constraint id=neighbor_left.height
and in ‘rules.logicdb’ add
platform.height=neighbor_left.height
platform.height=neighbor_outside.height
..
――――――――――――――――――――――――――――――――――――
【０１６６】
ルール１０及びルール１１は、典型的な衝突のタイプの拘束条件である。ルール１０は、構成要素に幾何学的形状を割り当てることによりすべての構成要素変数について明示的ではない形式で定式化される。下記は、その例である。
【０１６７】
［表１３］
１つの構成要素に関する衝突の幾何学的形状。
――――――――――――――――――――――――――――――――――――
<component id=rail ..
<geometry>
<box size=... position=... 
</geometry>
――――――――――――――――――――――――――――――――――――
【０１６８】
ルール１１は、幾何学的なデータ構造に、構成要素の幾何学的形状の変化について通知する（また、これが許容可能であるか否かをチェックする）ことに関連する。これは、典型的な幾何学的な拘束条件である。
【０１６９】
［表１４］
１つの構成要素に関する幾何学的な拘束条件。
――――――――――――――――――――――――――――――――――――
<component id=rail ..
<var id=length geometricconstraint=length ..
..
<geometry>
<constraint id=length type=geometrychange ..
</geometry>
..
</component>
――――――――――――――――――――――――――――――――――――
【０１７０】
以下の説明では、先に定義された構成要素のセットで表現された製品モデルを使用して、構成要素のセットで表現された構成システムにおいて足場を構成する方法の一例を挙げる。焦点は２つ存在し、その第１のものは、製品を構成するこの方法の利点をユーザが活用できるプロセス及び方法を示すことである。第２のものは、構成プロセスの間にコンフィギュレータ内部で実際に何が発生するかを示すことである。
【０１７１】
目標とする構成は、例えば外側に何らかの修繕を必要とする特定の窓に到達するための、片側にはしごを備え、両方に追加の上部モジュールを備えた２×２のサイズの足場を提供する、２フロア分の高さの足場である。ユーザは、下記のステップを実行する。図１９は、対応する各ステップの視覚化を示したものである。
【０１７２】
ステップ１：世界への直接的な挿入のために利用可能な唯一の構成要素はプラットフォームであり、よってユーザはプラットフォームを選択して挿入する。これは、デフォルトの高さであるmedium（中）になっている。これは、自動的にプラットフォーム１と命名される。
ステップ２：ユーザはプラットフォーム１のleft_side（左側）を選択し、２つの変数neighbor_left（左側の近傍）及びrail_left（左側のレール）にアクセスする。ここではプラットフォームかレールかのいずれかを追加することが可能である。ユーザはプラットフォームを追加してこれがプラットフォーム２と命名される。
ステップ３：ユーザはプラットフォーム２を選択し、変数hole（穴）をtrue（真）に設定する。構成システムは自動的に穴にはしご（下方向）を追加し（はしご１）、その長さをmedium（中）に設定する。
ステップ４：次に、プラットフォーム２の上部を選択する。ここではプラットフォーム又は上部モジュールかのいずれかを追加することが可能である。ユーザはプラットフォームを追加する（プラットフォーム３と命名される）。
ステップ５：ユーザはプラットフォーム３において変数hole（穴）をtrue（真）に設定し、はしご２が自動的に追加される。
ステップ６：top（上部）を選択し、上部を追加する（トップ１）。
ステップ７：上部フロアが窓に到達するための十分な高さでないことに気づいて、ユーザはプラットフォーム３を選択し、その変数height（高さ）をhigh（高）に調整する。はしご２の長さも、自動的にhigh（高）の値に設定される。
ステップ８：プラットフォーム１のtop（上部）を選択すると、ユーザはもう１つのプラットフォーム（プラットフォーム４）を追加することができる。これは幾何学的な世界によって記録され、システムは自動的にプラットフォーム４をプラットフォーム３のneighbor_right（右側の近傍）として設定する。続いてこれは、そのheight（高さ）変数をhigh（高）の値に調整する。
ステップ９：はしごを登る作業員を最適に保護するために、ユーザはプラットフォーム３のoutside（外側）を選択し、outside_rail（外側のレール）をfull（フルサイズ）の値に設定する。これは、wide（広）の値に等しいlength（長さ）変数となっている。
ステップ１０：最後に、必要なすべての場所にレールが設けられていること保証するために、ユーザによりプロセス完了が実行される。構成システムは、状態変数rail_left（左側のレール）を用いてプラットフォーム３に単一のレールを追加し、rail_right（右側のレール）及びrail_outside（外側のレール）を用いてプラットフォーム４に単一のレールを追加し、rail_left（左側のレール）及びrail_outside（外側のレール）を用いて上部１に単一のレールを追加し、上述のプラットフォーム４に上部（上部２）を追加し、rail_right（右側のレール）及びrail_outside（外側のレール）を用いてトップ２に単一のレールを追加する。デフォルトにより、プラットフォーム及びトップの両方の内側は壁沿いにあり、よってそこには何も追加されないということに留意されたい。
【０１７３】
以下の部分では、構成プロセスの間にコンフィギュレータ内部で実際に何が発生するかを、即時のＰＭ、状態、クラスタ概念及びロールバック機構に注目して論じる。
【０１７４】
即時のＰＭは、複数の構成要素にてなる、現時点で組み立てられている構成のモデルであり、その（現在の）状態に対して実行できるすべての可能な変更を表現するということに注意する。これは、複数の構成要素がどのようにして組み立てられるかを記述する現時点の構成要素の階層を備え、また、これは、すべての状態変数とそれらの可能な値との収集物を記述する現時点の状態空間を備える。図２１は、ステップ１０が完了した後の完全な構成要素の階層を示す。それに加えて、状態は、それが現時点の状態空間内のきっかり１つの点を表現し、かつ現時点の即時のＰＭは静的な断片化されたＰＭ（のデータ）と共にその状態から再現可能であるという意味において、現時点の構成を一意的に表現するということに注意する。
【０１７５】
状態はまさに、すべての状態変数の値の収集物であり、いくつかの変数（構成要素変数）は、それらの値がもう１つの構成要素との連結に関係しまた当該連結を定義し、それらの収集された状態が構成要素の階層を定義するというように、二重の役割を果たす。この点においてそれらの値は状態値ではなく、実際の構成要素である。これは、それらの連結値と呼ばれる。図２２は、ステップ９が完了した後の状態空間を略示すると同時に、状態を略示したものである（図１２も参照）。すべての変数はデフォルト値を有し、よってこれらが値を待たないということはあり得ない点に留意されたい。指定されたデフォルトを持たない変数は、デフォルトとして自動的に１を選択し、特に構成要素変数は、デフォルトとして値none（なし）を有する。
【０１７６】
（論理的）クラスタは、１つの論理的構造によって直接に拘束条件が与えられる、即時のＰＭの部分であるということに注意する。この例では、プラットフォームだけに論理的構造（ルール）が付加され、よって、全ステップが完了した後は、各プラットフォームに１つずつである、４つの（論理的）クラスタが存在する。図２０が示す、ステップ１０が完了した後のプラットフォーム４のクラスタの図面を参照されたい。この図面は、プラットフォーム４（プラットフォーム４はクラスタホルダである。）に付加された論理的構造によって拘束条件が与えられる変数を示す。これは、こうしてプラットフォーム４のクラスタ内にチェーン化される、他の構成要素内のいくつかの変数を含んでいるということに留意されたい。図２０においてこれらは別個のボックス内に示され、ここで、ラインは連結の変数に向かい、この連結の変数を用いてそれはチェーン化されている。また、変数neighbor_left.height（左側の近傍の高さ）は、その固有のクラスタを有するプラットフォーム３に属することにも留意されたい。これは、この情報が両方の場所で必要とされる場合のクラスタの重複の一例である。
【０１７７】
次に、変数をある値に設定するプロセスについて考察する。ステップ３では、プラットフォーム２における変数hole（穴）がtrue（真）に設定される。通常これは、下記のように動作する。
【０１７８】
１）ユーザインタフェースがプラットフォーム２にアクセスし、そこからhole（穴）を取得する。
２）それは合法的な値のリストを要求し、この場合これは（true, false）である。
３）ユーザは、値true（真）を有する穴に対する値設定プロセスを呼び出す。
４）第１に、合法性がチェックされ、照合される。
５）第２に、値が処理される。このステップは、視覚的な世界を更新して穴を表示することと、論理的なデータ構造にこの新たな値について知らせることとを含む。
６）第３に、値が伝搬される。この場合これは、論理的なデータ構造における可能な結果を発見することを含む。
７）それは単純な競合を発見する、すなわちその時点で合法的な値（ladder）の中に存在しない現在の値none（なし）を有する他の変数ladder（はしご）との競合を発見する。
８）状態エンジンが解消状態になる。
９）競合を解消するため、状態エンジンは値ladder（はしご）を備えた変数ladder（はしご）に対する値設定プロセスを呼び出す。
１０）変数ladder（はしご）が首尾良く設定されるともはや競合はなくなり、よって状態エンジンは準備完了（ready）に進む。
１１）この値設定プロセスは首尾良く終了され、ユーザ（インタフェース）に対して新たな値が通知される。
【０１７９】
次に、構成要素変数の設定、すなわち新たな連結を生成することについて考察する。上述のステップ９では、設定された変数は構成要素変数であり、よってそれを設定することは、実際に新たな構成要素（はしご１）を生成するという副作用を有し、これが即時のＰＭに追加され、かつプラットフォーム２へ連結される。通常、このことは下記のように動作する。
【０１８０】
１）変数ladder（はしご）を値ladder（はしご）に設定する。
２）それが合法的であるか否かをチェックする。それは合法的である。
３）値を処理する。これは、構成要素変数にとって特別な効果を呼び出す。
４）新たな構成要素のタイプであるはしごを生成する。これは、はしご１になる。
５）はしご１の状態を初期化する。これは、単一の変数length（長さ）を、デフォルト値であるmedium（中）に設定することよりなる。
６）これを（視覚的コンフィギュレータの正確なセットアップに依存して）世界に連結する。
７）構成要素のプラットフォーム２におけるコネクタ変数ladder（はしご）を用いて変数length（ながさ）にチェーンのリサイズ（resize）を連結する。
８）はしご構成要素における競合をチェックする。この場合は何も発見されない。
９）連結プロセスから復帰し、プラットフォーム２における変数ladder（はしご）の値を伝搬し続ける。これにより競合が存在するか否かがチェックされる。この場合は何も発見されないので、状態エンジンは準備完了となり戻ることができる。
【０１８１】
最後に、競合の解消について考察する。ステップ７では、コンフィギュレータはプラットフォーム２の高さを故意に変更してはしご１の長さとの競合を引き起こし、次いでこのことが検出されて解消されたことに留意されたい。同様の状況は、ステップ３及び５においても発生し、下記のように動作する。
【０１８２】
１）第１に、合法性をチェックするプロセスが、値が合法的でないことを発見して通知する。ユーザはこれを（変数のアボート状態を聞いてこれを取り消すことにより）明示的にオーバーライドする必要がある。この場合、ユーザインタフェースがこれを自動的に行う。
２）第２に、ロールバック手順がそれの進行を可能にする必要がある。これは、値を伝搬させるプロセスにおける解消手順を開始させる。
３）値を伝搬させるにより、論理的クラスタ内の競合は現実のものとなる。変数height（高さ）とladder.length（はしごの長さ）が競合状態にあることが発見され、かつ可能なすべての解消が発見され、最終的にこれらが比較される。われわれの例では、height（高さ）の拘束条件はユーザによってオーバーライドされたばかりであるので、状態エンジンはheight（高さ）でなくladder.length（はしごの長さ）の変更を選択する。これは、height（高さ）の優先度をladder.length（はしごの長さ）より明示的に高く設定することによってもまた、実行可能であった。他の場合では、ユーザ又は周囲のアプリケーションが照会される可能性がある。
【符号の説明】
【０１８３】
Ｃ１，Ｃ２…構成要素。
【図１】
0004876158.tif 000002
【図２】
0004876158.tif 000003
【図３】
0004876158.tif 000004
【図４】
0004876158.tif 000005
【図５】
0004876158.tif 000006
【図６】
0004876158.tif 000007
【図７】
0004876158.tif 000008
【図８】
0004876158.tif 000009
【図９】
0004876158.tif 000010
【図１０】
0004876158.tif 000011
【図１１】
0004876158.tif 000012
【図１２】
0004876158.tif 000013
【図１３】
0004876158.tif 000014
【図１４】
0004876158.tif 000015
【図１５】
0004876158.tif 000016
【図１６】
0004876158.tif 000017
【図１７】
0004876158.tif 000018
【図１８】
0004876158.tif 000019
【図１９】
0004876158.tif 000020
【図２０】
0004876158.tif 000021
【図２１】
0004876158.tif 000022
【図２２】
0004876158.tif 000023