Create 関数
Create 関数の主な動作は単純で、クライアントアプリケーション (コンバータ) が常に Create 関数を呼び出します。入力パラメータと一致するインスタンスがすでに存在するかどうかの事前チェックは不要です。ユーザーに代わり、Create 関数が対応する Get 関数を呼び出します。そのため、Create 関数は新しいインスタンスを作成して返すか、すでに存在するインスタンスのインスタンス識別子を返します。
Create 関数には、2 つのメインセクションがあります。
セクション 1
入力パラメータのチェックとは別に、Create 関数のセクション 1 は対応する Get 関数の呼び出しで構成されています。指定した実際のパラメータと一致するインスタンスが存在する場合、そのインスタンスのインスタンス識別子が返されます。それ以外の場合、この関数のセクション 2 が入力されます。
セクション 2
セクション 2 では、メインテンプレートインスタンス (REPRESENTING_PART) が作成されます。これは、関数の最後の動作です。テンプレートレイヤーの図に示されているように、テンプレートエンティティは純粋な PLCS エンティティの上、また通常はほかのテンプレートエンティティの上に存在します。テンプレートインスタンス構造に属するすべてのインスタンスが作成されるわけではありません。ポピュレーションのボリュームやサイズをできるだけ削減するために、可能なかぎり既存のインスタンスを再使用して冗長にならないようにします。セクション 2 について、create_representing_part を例に取って説明します。
• Product_category / Product_category_assignment
ポピュレーションには Product_category (name = part) が 1 つのみ存在します。これは再使用され、Product_category_assignment.products 総計を通じてすべての部品にリンクされています。xpxGetEntityExtentBN は指定したタイプのすべてのインスタンスを返します。通常、返されたインスタンスの総計を反復するとパフォーマンスが低下します。しかし、この場合、ポピュレーション全体の Product_category_assignment のインスタンスが 1 つまでなので、この関数を問題なく使用できます。
• 部品
指定した ID を持つ部品がすでに存在するかどうかを調べるには、get_assigning_identification 関数を使用します。存在する場合、部品は再使用されます。存在しない場合は新規部品が作成され、create_assigning_identification 関数を使用してその ID が接続されます。
• Part_version
部品のすべての Part_versions が取得されます (部品を新規作成した場合、このリストは当然空です)。リストの Part_version ごとに、get_assigning_identification 関数を使用して、指定した入力と一致する ID を持つ部品があるかどうかが調べられます。ある場合、Part_version が再使用されます。ない場合は新規の Part_version が作成され、部品に接続されます。また、create_assigning_identification 関数を使用して、その ID も接続されます。
• View_definiton_context
ポピュレーションの View_definiton_context インスタンス数はごく限られています。そのため、パフォーマンスを低下させることなく、xpxGetEntityExtentBN によって返された総計を問題なく反復できます。View_definiton_context は 2 つの分類 (life_cycle_stage と domain) を使用して識別されます。2 つの分類を両方とも持つ View_definiton_context インスタンスが存在する場合、再使用されます。存在しない場合は新規の View_definiton_context インスタンスが作成され、create_assigning_reference_data 関数を使用して 2 つの分類に接続されます。
• Part_view_definition
新規の Part_view_definition は常に作成されます (新規の representing_part インスタンスが作成された結果として)。Part_version と View_definiton_context が接続されます。
• representing_part
最後に、拡張インスタンス representing_part が作成されます。下位レベルへの前方参照が配置されます。これらの前方参照により、プログラマーの作業が容易になります。たとえば、部品の ID を直接取得することが可能です。PLCS では、多くの関係が "入力" です(例: . Identification_assignment、Classification_assignment、Assigned_property)。したがって、特定の部品に接続されている ID を見つけるには、EXPRESS 関数 Usedin を使用する必要があります。そのため、representing_part およびその他の拡張エンティティからの前方参照が便利です。
representing_part 属性のポピュレーション:
• part_id
再使用/作成された assigning_identification インスタンス。
• part_ver
再使用/作成された assigning_identification インスタンス。
• domain
再使用/作成された assigning_reference_data インスタンス。
• life_cycle_stage
再使用/作成された assigning_reference_data インスタンス。
• prt
再使用/作成された部品 (xpxCreateInstanceBN)。
• version
再使用/作成された Part_version (xpxCreateInstanceBN)。
• view
Part_view_definition インスタンスは常に作成されます (xpxCreateInstanceBN)。
• contxt
再使用/作成された View_definition_context。
• catgy
再使用/作成された Product_category。
Copy 関数
Copy 関数は、レガシーデータまたは独自フォーマット (Windchill EXPRESS スキーマなど) の変換時には使用しません。Copy 関数を使用するのは、DEX ソースポピュレーションをターゲット DEX ポピュレーションにマージするときです。ソースおよびターゲットスキーマが同じであることが必要条件です。
Copy 関数は 2 つの単純なステップで構成されています。Copy 関数がソース (representing_part) インスタンスを入力として取ります。ソースインスタンスから Create (create_representing_part) 関数に必要な入力パラメータを抽出します。次に、Create (create_representing_part) 関数を呼び出します。Create 関数はすでに存在するインスタンスを返すか、新規インスタンスを作成します。したがって、Copy 関数をソースポピュレーションのすべてのインスタンスに適用すると、結果として得られるターゲットポピュレーションは、ソースポピュレーションと元のターゲットポピュレーションを結合 (マージ) したものになります。
Delete 関数
Delete 関数は通常、レガシーデータまたは独自フォーマット (Windchill EXPRESS スキーマなど) の変換時には使用しません。このような関数は、DEX データベースを長期的に保持している場合に使用します。たとえば、TruePLM のようなアプリケーションに関連して使用します。