カスタマイズポイント
拡張可能なクラス
このドキュメントの「BOM のパブリッシング」のセクションで説明されている Windchill ESI レンダラーによって使用されるクラスを拡張した場合、その拡張を必要に応じていくつかの Windchill ESI プリファレンスまたは ESI サービスのプロパティファイルで定義する必要があります。
Windchill ESI プリファレンスで一般的に定義されているクラスを以下に示します。
BOMOrgFilter
プリファレンス名: 配布ターゲットフィルタ
デフォルト値: com.ptc.windchill.esi.bom.BOMOrgFilter
* 
このプリファレンスの一般的な使用方法については、例: 「配布ターゲットフィルタ」プリファレンスの一般的な使用方法を参照してください。
TreeNavigator
プリファレンス名: Tree Navigator
デフォルト値: com.ptc.windchill.esi.Treenavigation.TreeNavigatorImpl
ESI サービスのプロパティファイルで一般的に定義されているレンダラークラスを以下に示します。
ESIBOMRenderer
サービスプロパティ名: com.ptc.windchill.esi.rnd.ESIRenderer
<Option> エレメントの属性のデフォルト値: cardinality="duplicate" requestor="wt.part.WTPart"
selector="BOM"
serviceClass="com.ptc.windchill.esi.bom.ESIBOMRenderer"
ESIBOMHeaderRenderer
サービスプロパティ名: com.ptc.windchill.esi.rnd.ESIRenderer
<Option> エレメントの属性のデフォルト値: cardinality="duplicate" requestor="wt.part.WTPart" selector="BOMHEADER"
serviceClass="com.ptc.windchill.esi.bom.ESIBOMHeaderRenderer"
ESIBOMComponentRenderer
サービスプロパティ名: com.ptc.windchill.esi.rnd.ESIRenderer
<Option> エレメントの属性のデフォルト値: cardinality="duplicate" requestor="wt.part.WTPart" selector="BOMCOMPONENT"
serviceClass="com.ptc.windchill.esi.bom.ESIBOMComponentRenderer"
ESISubstituteRenderer
サービスプロパティ名: com.ptc.windchill.esi.rnd.ESIRenderer
<Option> エレメントの属性のデフォルト値:cardinality=“duplicate” requestor=”wt.part.WTPart” selector=”SUBSTITUTE”
serviceClass="com.ptc.windchill.esi.bom.ESISubstituteRenderer"
ESIReferenceDesignatorRenderer
サービスプロパティ名: com.ptc.windchill.esi.rnd.ESIRenderer
<Option> エレメントの属性のデフォルト値:cardinality=“duplicate” requestor=”wt.part.WTPart” selector=”REFERENCEDESIGNATOR”
serviceClass="com.ptc.windchill.esi.bom.ESIReferenceDesignatorRenderer"
ESI サービスのプロパティファイルでは次の TreeNavigationRequestBuilder クラスも定義されています。
BOMTreeNavigationReqBuilder
サービスプロパティ名: com.ptc.windchill.esi.treenavigation.TreeNavigationRequestBuilder
<Option> エレメントの属性のデフォルト値:cardinality=“duplicate” requestor=”null”
selector="WCTYPE|wt.part.WTPart" serviceClass="com.ptc.windchill.esi.bom.BOMTreeNavigationReqBuilder"
上記のすべてのクラスはカスタマイズ担当者による拡張が許可されています。
BusinessRuleSetRelationshipDelegate 委任: ESIPartRelationshipDelegate クラスは ESI サービスのプロパティファイルで定義されています。
ESIPartRelationshipDelegate
サービスプロパティ名: com.ptc.core.businessRules.relationship.BusinessRuleSetRelationshipDelegate
<Option> エレメントの属性のデフォルト値:cardinality=“singleton” requestor=“null”
selector="ESIPartRelationshipDelegate" serviceClass="com.ptc.windchill.esi.businessRules.relationship.ESIPartRelationshipDelegate"
このクラスを拡張して、部品に関連付けられているその他のオブジェクトを収集してビジネス規則を適用できます。このビジネス規則の評価によって、そのアセンブリノードを生産 BOM としてパブリッシングすることを決定します。同様に、このクラスを拡張して、ビジネス規則を適用する前にデフォルトのロジックによって収集されたオブジェクトをコレクションから除外できます。
BOM 差異ロジックは、デフォルトのロジックを変更することによってカスタマイズできます。詳細については、「BOM 差異 API の修正」のセクションを参照してください。
例: 「配布ターゲットフィルタ」プリファレンスの一般的な使用方法
設計プロセスの早い段階で "仕掛品" BOM を ERP に送信可能なビジネスプロセスの実装が必要になることがあります。この一般的な用途としては、リードタイムが長い部品の工具を早い段階で調達する場合が挙げられます。設計の進化に伴い、Windchill アセンブリにはリストされているが、ERP システムに送信する準備がまだ整っていない部品が存在することがあります。つまり、ERP にエクスポートする際には、そのような部品を BOM から除外する必要があります。これは通常、以下で概要を説明する手順に従って、前述のプリファレンスを使用して実現できます。
1. クラス com.ptc.windchill.esi.bom.BOMOrgFilter を拡張する新しい Java クラス (com.ptc.windchill.esi.bom.BOMUsageLinkFilter など) を作成します。この新しいクラスで、一定の条件に基づいてコンポーネント部品を BOM から除外するオーバーライドバージョンのメソッド public Enumeration filterOutput(WTPart, Enumeration) を提供しますたとえば、WTPartUsageLink オブジェクトの特定の属性の値を使用して、そのコンポーネントを BOM から除外する必要があることを示すことができます。
2. BOMUsageLinkFilter.java をコンパイルしてそのクラスファイルを <Windchill>\codebase\com\ptc\windchill\esi\bom ディレクトリ内に作成します。
3. 「配布ターゲットフィルタ」という名前の Windchill ESI プリファレンスの値を com.ptc.windchill.esi.bom.BOMUsageLinkFilter に設定します。
BOM をパブリッシングすると、必要に応じて BOM からコンポーネントが除外されるようになりました。
クラス BOMUsageLinkFilter のメソッド filterOutput() の実装例を以下に示します。
package com.ptc.windchill.esi.bom;

public class BOMUsageLinkFilter extends BOMOrgFilter
{

public Enumeration[] filterOutput(WTPart part, Enumeration[] partDelta)
{
Enumeration[] enumeration = super.filterOutput(part, partDelta); Enumeration[] delta = new Enumeration[enumeration.length];
for(int i = 0; i < enumeration.length; i++)
{
Enumeration partUsageInfos = enumeration[i]; Vector result = new Vector();
while(partUsageInfos.hasMoreElements())
{
PartUsageInfo info = (PartUsageInfo)partUsageInfos.nextElement();
// Perform the necessary filtering of components here, adding the remaining
// ones to a result Vector in the process
}
delta[i] = result.elements();
}
return delta;
}
コンフィギュレーション可能なオプション
Windchill ESI プリファレンスは、Windchill ESI BOM レンダラーサポートに関連するいくつかのコンフィギュレーション可能なオプションを制御します。以下のオプションがあります。
Windchill ESI で代替アイテムグループを作成するかどうかを定義します。代替アイテムグループは、SAP ERP と互換性がなければなりません。SAP は、代用部品があるすべての BOM コンポーネントに代替アイテムグループ番号を割り当てて BOM の代用部品を管理します。SAP は、代替アイテムグループ番号が同じ部品は交換可能であると判断します。
プリファレンス名: 代替アイテムグループを有効化
デフォルト値:はい
Windchill ESI で行番号情報がない製品構造が検出された場合に例外を返すかどうかを定義します。Windchill の標準動作では、行番号がある製品構造と行番号がない製品構造の両方が許容されます。1 つの製品構造のすべてのコンポーネントに行番号があるか、またはすべてのコンポーネントに行番号がないかのいずれかである必要があります。Windchill の標準動作は、このプリファレンスを「いいえ」に設定した場合と同じです。ターゲットエンタープライズシステムが行番号がない BOM を処理できない場合には、このプリファレンスを「はい」に設定する必要があります。
プリファレンス名: 行番号警告を強化
デフォルト値: いいえ
Windchill ESI で数量がゼロのコンポーネントを含む製品構造が検出された場合に例外を返すかどうかを定義します。デフォルトの動作では例外を返します。
プリファレンス名: コンポーネントの数が必要
デフォルト値: はい
アセンブリ内のコンポーネントを処理する際に、Windchill ESI で部品マスターに適したバージョンが見つからなかった場合に例外を返すかどうかを定義します。
プリファレンス名: 「適切なバージョンが見つからない」エラーを表示
デフォルト値: はい
Windchill ESI サービスで GetBOM、GetECN、および GetProcessPlan RPC リクエストパラメータを調べて行番号のリクエストの有無を判別するかどうかを定義します。行番号がリクエストされていない場合、Windchill ESI サービスは、SAP の一意性エラーの原因となる各オブジェクトについて「Enterprise Systems のトランザクション管理」 UI に警告メッセージを生成します。部品が複数のコンポーネントの代用部品として BOM にリストされている場合、または部品がコンポーネントおよび代用部品として BOM にリストされている場合に、警告メッセージが生成されます。
* 
GetXXX では、RPC リクエストパラメータは応答設定を提供する関連配布ターゲット属性を意味します。
プリファレンス名: BOM の行番号警告を強化
デフォルト値: はい
Windchill のビューと配布ターゲットの間のマッピングを <view name>:<target number> のペアのコンマ区切りリストによって定義します。たとえば、Plant1:001,Plant2:002 という値を指定した場合、ビュー Plant1 と Plant2 がそれぞれ番号 001 と 002 の配布ターゲットにマッピングされます。このプリファレンスは、部品の配布ターゲット割当の検証を駆動するだけでなく、BOM の ESI 応答で送信される Usage エレメントの値を決定する役割を果たします。詳細については、「ビューと BOM タイプのマッピング」プリファレンスを参照してください。
プリファレンス名: ビューと配布ターゲットのマッピング
デフォルト値: このプリファレンスはデフォルトで空白の値に設定されています。
Windchill のビューと BOM タイプ (または子) の値との間のマッピングを <ビュー名>:<BOM 親子関係の値> のペアのコンマ区切りリストによって定義します。たとえば、Design:Engineering,Manufacturing:Production という値を指定した場合、ビュー Design と Manufacturing がそれぞれ BOM 親子関係の値 Engineering と Production にマッピングされます。指定された配布ターゲットに BOM をパブリッシングする際に、ESI サービスは最初に「ビューと配布ターゲットのマッピング」プリファレンスからそのターゲットに対応するビューを特定します。その後で、「ビューと BOM タイプのマッピング」プリファレンスから、前の手順でフェッチされたビューに対応する BOM 親子関係の値が検索されます。この値が応答で BOM の Usage エレメントとともに送信されることで、BOM ヘッダー作業版数に設定されている可能性がある親子関係がオーバーライドされます。
プリファレンス名: ビューと BOM タイプのマッピング
デフォルト値: このプリファレンスはデフォルトで空白の値に設定されています。
ESI 応答で代替アセンブリの部品データを送信するかどうかを定義します。「はい」に設定した場合、ESI サービスは代替アセンブリの部品データを送信します。「いいえ」に設定した場合、そのようなアセンブリの部品データは送信されません。このプリファレンスは、通常のアセンブリをパブリッシングしたときにのみ ERP システムに部品を作成し、代替アセンブリをパブリッシングしたときには作成しない場合に便利です。
プリファレンス名: 部品データを代替アセンブリに送信
デフォルト値: はい
ESI 応答で変更なしオブジェクトの情報を返すかどうかを定義します。変更なしオブジェクトをレンダリングするには「はい」を選択し、変更なしオブジェクトを無視するには「いいえ」を選択します。
プリファレンス名: 変更なしオブジェクトをレンダリング
デフォルト値: はい
* 
このプリファレンスを「いいえ」に設定した場合、ESI 応答の生成時に変更なしの部品と BOM コンポーネントのみが無視されます。
代替部品のパブリッシング時に ESI 応答で BOM データを送信するかどうかを指定します。「はい」に設定した場合、アセンブリである代替部品の BOM データが送信されます。「いいえ」に設定した場合、そのような部品の部品データのみが送信されます。このプリファレンスは、代替部品のパブリッシングに関する配布ターゲット属性の値が「はい」の場合にのみ重要となります。
プリファレンス名: 代替の BOM データを送信
デフォルト値: いいえ
代用部品のパブリッシング時に ESI 応答で BOM データを送信するかどうかを指定します。「はい」に設定した場合、アセンブリである代用部品の BOM データが送信されます。「いいえ」に設定した場合、そのような部品の部品データのみが送信されます。このプリファレンスは、代用部品のパブリッシングに関する配布ターゲット属性の値が「はい」の場合にのみ重要となります。
プリファレンス名: 代用の BOM データを送信
デフォルト値: いいえ
ERP コネクタで子を持つ部品ノードの生産 BOM をパブリッシングするか、単に部品を下流に送信するかを定義します。これにより、特定の部品表内にある特定の部品の生産 BOM を選択的にパブリッシングする柔軟性が得られます。このプリファレンスは、配布属性「BOM のパブリッシング時に、部品の生産 BOM を常にパブリッシング」と組み合わせて使用する必要があります。したがって、ビジネス規則セットでプリファレンスが設定されている場合、これとともにターゲット属性を「はい」または「いいえ」に設定することで、必要に応じて規則を 1 つのターゲットのみまたは複数のターゲットセットに選択的に適用できます。詳細については、「生産 BOM のパブリッシングを禁止するオプションの設定」を参照してください。
プリファレンス名: 生産 BOM パブリッシングを禁止するビジネス規則セット
デフォルト値: 空白値
BOM の差分情報の、配布ターゲットへのパブリッシングの処理方法を定義します。10.2 M030 以降、ERP コネクタはオブジェクトの view、variation1、variation2 属性、バージョン、作業版数によって部品を比較するようになりました。この新しいデフォルトの動作を使用しない場合、次の Windchill プロパティを false に設定することで、古い動作に戻すことができます。古い実装では、部品はバージョンまたは作業版数に基づいて、variation1、variation2 属性のみを比較することによって比較されます。このプロパティはオプションのプロパティであり、esi.properties ファイルで既成では使用できません。差異の計算方法については、Windchill ヘルプセンターの「部品表」のトピックにある「配布ターゲットへの BOM 対応の差分情報のパブリッシング」のセクションを参照してください。
Windchill プロパティ名: com.ptc.windchill.esi.CalculateDeltaUsingLatestPublishedObject Default value:true
デフォルト値: true
デフォルト設定では、差分パブリッシングで差分を計算する際には、(バージョン連続での最新ではなく) オブジェクトのパブリッシング済みの最新作業版数が対象となります。たとえば、オブジェクトのバージョン A.2 がバージョン B.1 の後にパブリッシングされた場合、差分計算では前者 (A.2) が対象となります。
デフォルトの動作を変更する手順
1. 変更内容を動作に反映するには、次のプロパティを site.xconf に追加します。<Property name="com.ptc.windchill.esi.CalculateDeltaUsingLatestPublished Object" overridable="true" targetFile="codebase/com/ptc/windchill/esi/esi.properties" value="false"/>
2. 変更内容を esi.properties に反映します。
3. Windchill サービスを再起動します。
配布ターゲットには、アセンブリのパブリッシング時に ESI 応答メッセージのコンテンツに影響を与えるいくつかのコンフィギュレーション可能属性があります。
詳細については、「BOM に関する属性」を参照してください。
これは役に立ちましたか?