BOM 差異 API の修正
Windchill ESI は、Windchill API の機能を使用して、製品構造に対してどのような変更が行われたかを調べます。さらに、Windchill 差異 API を使用して、部品へのドキュメントの関連付けに対してどのような変更が行われたかを調べます。変更の識別方法を修正する場合、デフォルトの差異 API を拡張できます。
製品構造差異
Windchill ESI は、製品構造差異ロジックを使用して、部品が最後にパブリッシングされた後の製品構造に対する変更を特定します。この差異情報により、データをターゲットエンタープライズシステムと同期化するためにパブリッシングする必要がある情報が明らかになります。
差異は、関連リンクの論理タイプ識別子をキーとして含み、特定のマップを値として含む HashMap として、オブジェクト比較フレームワーク (OCF) によって返されます。含まれている部品に加え、WTPartUsageLink オブジェクトを使用して、含まれている部品に指定されている代用部品と参照指定子をさらに照会してこれらにアクセスします。
手順
カスタマイズするには、デフォルトの実装を拡張し、特定のメソッドをオーバーライドします。
Windchill Information Modeler を使用してクラスを拡張する手順については、Windchill Customization Guide を参照してください。デフォルトのインタフェース実装の単純な拡張では、次のプロセスを使用します。
1. エディタまたは任意の統合開発環境 (IDE) を使用して java ソースファイルを定義します。
* 
Windchill ESI のインストール時に提供されたクラスを修正したり置き換えたりしないでください。これらのファイルは将来ソフトウェアがリリースされる際に置き換えられる可能性があります。
2. java ソースファイルを Windchill コードベースにコンパイルします。
3. 該当するプロパティを変更して新しい実装を指定します。
(詳細については、「service.properties のカスタマイズ」を参照してください。)
以下の例は、wt.part.PartUsageInfo クラスを拡張して比較のデフォルト動作を修正する方法を示しています。この例では、デフォルトの比較に加えて行番号も比較しています。
ソースコードは <Windchill>/codebase/com/ptc/windchill/esi/examples/Example4MyPartUsageInfo.java にあります。
サンプルファイルのコンテンツを以下に示します。
package com.ptc.windchill.esi.examples;
import wt.part.LineNumber;
import wt.part.PartUsageInfo;
import wt.part.WTPartUsageLink; import wt.util.WTException;
public class Example4MyPartUsageInfo extends PartUsageInfo
{
protected boolean isDifferent(PartUsageInfo info)
{
boolean result = super.isDifferent(info);
if (result == false)
{
Example4MyPartUsageInfo other = (Example4MyPartUsageInfo)info; WTPartUsageLink thisLink = this.getPartUsageLink(); WTPartUsageLink otherLink = other.getPartUsageLink(); LineNumber thisLine = thisLink.getLineNumber();
LineNumber otherLine = otherLink.getLineNumber();
if (thisLine == null)
{
if (otherLine != null)
{
// different line number result = true;
}
}
else
{
if (otherLine == null || thisLine.equals(otherLine) == false)
{
// different line number result = true;
}
}
}
return result;
}
}
次の点に注意してください。
package ステートメントは、Java コンパイラの出力が正しいディレクトリに書き込まれるようにします。
Java import ステートメントは、クラスの継承と実装の詳細を指定するために必要です。
以下の方法によってこの例をコンパイルできます。
Windchill PDMLink をインストールしたときに定義された <Windchill> ディレクトリ内から、次のコマンドを使用して Windchill シェルを起動します。
bin/windchill shell
Java コンパイラを使用してクラスをコンパイルします。
javac -d ./codebase ./codebase/com/ptc/windchill/esi/examples/*.java
新しい実装をアクティブ化するには、wt.properties を修正して、wt.part.PartUsageInfo のサービス実装を指定するプロパティファイルを指定します。
wt.services.applicationcontext.WTServiceProviderFromProperties. customPropertyFiles
ファイル名の後ろに、新しい実装の仕様が含まれているプロパティファイルの名前をコンマで区切って追加します。実装例の仕様が含まれているプロパティファイルの例 (<Windchill>/codebase/com/ptc/windchill/esi/examples/Example4.properties) が用意されています。
wt.services/svc/default/wt.part.PartUsageInfo/null/java.lang.Object/0=com.ptc.wind chill.esi.examples.Example4MyPartUsageInfo/duplicate
ドキュメント添付資料差異
Windchill ESI はドキュメント添付資料差異ロジックを使用して、RevisionControlled オブジェクト (WTPart など) が最後にパブリッシングされた後のドキュメント関連付けに対する変更を特定します。この差異情報により、データを ERP システムと同期化するために送信する必要がある情報が明らかになります。
差異は com.ptc.windchill.esi.esidoc.PartDocInfo オブジェクトの列挙として返されます。PartDocInfo クラスは、RevisionControlled オブジェクトへのドキュメントの添付資料を表す一時的なクラスです。
RevisionControlled オブジェクトのドキュメンテーションを表すいくつかの異なる関連付けがあります。WTPart オブジェクトには次のドキュメント関連付けが適用されます。
"詳細" 関連付けによる wt.doc.WTDocument と wt.part.WTPart の関連付け
"参照" 関連付けによる wt.doc.WTDocumentMaster と wt.part.WTPart の関連付け
"構築履歴" 関連付けによる wt.epm.EPMDocument と wt.part.WTPart の関連付け
"詳細" 関連付けによる wt.epm.EPMDocument と wt.part.WTPart の関連付け
"詳細" 関連付けによる wt.doc.WTDocument と (特定の WTPart オブジェクトを表す) wt.esi.ERPMaterial の関連付け
"参照" 関連付けによる wt.doc.WTDocumentMaster と (特定の WTPart オブジェクトを表す) wt.esi.ERPMaterial の関連付け
"詳細" 関連付けによる wt.epm.EPMDocument と (特定の WTPart オブジェクトを表す) wt.esi.ERPMaterial の関連付け
"詳細" 関連付けによる wt.doc.WTDocument と (特定の WTPart オブジェクトまたは com.ptc.windchill.enterprise.data.EnterpriseData を表す) com.ptc.windchill.enterprise.data.EnterpriseData の関連付け
"参照" 関連付けによる wt.doc.WTDocumentMaster と (特定の WTPart オブジェクトまたは com.ptc.windchill.enterprise.data.EnterpriseData を表す) com.ptc.windchill.enterprise.data.EnterpriseData の関連付け
"詳細" 関連付けによる wt.epm.EPMDocument と (特定の WTPart オブジェクトまたは com.ptc.windchill.enterprise.data.EnterpriseData を表す) com.ptc.windchill.enterprise.data.EnterpriseData の関連付け
手順
Windchill Information Modeler を使用してクラスを拡張する手順については、Windchill Customization Guide を参照してください。デフォルトのインタフェース実装の単純な拡張では、次のプロセスを使用します。
1. エディタまたは任意の統合開発環境 (IDE) を使用して java ソースファイルを定義します。
* 
Windchill ESI のインストール時に提供されたクラスを修正したり置き換えたりしないでください。これらのファイルは将来ソフトウェアがリリースされる際に置き換えられる可能性があります。
2. java ソースファイルを Windchill コードベースにコンパイルします。
3. 該当するプロパティを変更して新しい実装を指定します。
(詳細については、「service.properties のカスタマイズ」を参照してください。)
以下の例は、com.ptc.windchill.esi. esidoc.PartDocInfo クラスを拡張してドキュメント URL 生成のデフォルト動作を修正する方法を示しています。この例では、ドキュメントのプロパティページへの URL を生成する代わりに、ドキュメントのコンテンツへの URL を生成しています。
ソースコードは <Windchill>/codebase/com/ptc/windchill/esi/examples/Example5MyPartDocInfo.java にあります。
サンプルファイルのコンテンツを以下に示します。
package com.ptc.windchill.esi.examples;
import com.ptc.windchill.esi.esidoc.PartDocInfo; import java.util.HashMap;
import wt.doc.Document;
import wt.fc.ObjectIdentifier; import wt.fc.Persistable; import wt.fc.PersistenceHelper;
import wt.httpgw.GatewayServletHelper; import wt.httpgw.URLFactory;
import wt.util.WTException;
public class Example5MyPartDocInfo extends PartDocInfo
{
public String getDocumentURL()
{
String url = null;
try
{
// Generate a URL to download the document content.
URLFactory urlFactory = new URLFactory(); HashMap map = new HashMap();
map.put("action", "DownloadContent"); map.put("oid", getDocumentOID());
url = GatewayServletHelper.buildAuthenticatedHREF(
urlFactory, "wt.enterprise.URLProcessor", "URLTemplateAction", map);
}
catch (WTException e)
{
// Use the default logic which generates a URL to display
// the document properties.
url = super.getDocumentURL();
}
return url;
}
private String getDocumentOID() throws WTException
{
Persistable p = (Persistable)getDocument();
ObjectIdentifier oid = PersistenceHelper.getObjectIdentifier(p);
return oid.getStringValue();
}
}
次の点に注意してください。
package ステートメントは、Java コンパイラの出力が正しいディレクトリに書き込まれるようにします。
Java import ステートメントは、クラスの継承と実装の詳細を指定するために必要です。
以下の方法によってこの例をコンパイルできます。
Windchill をインストールしたときに定義された <Windchill> ディレクトリ内から、コマンド bin/windchill shell を使用して Windchill シェルを起動します。
Java コンパイラを使用してクラスをコンパイルします。javac -d ./codebase ./codebase/com/ptc/windchill/esi/examples/*.java
新しい実装をアクティブ化するには、wt.properties を修正して、com.ptc.windchill.esi.esidoc.PartDocInfo のサービス実装を指定するプロパティファイルを指定します。
wt.services.applicationcontext.WTServiceProviderFromProperties.customPropertyFiles
ファイル名の後ろに、新しい実装の仕様が含まれているプロパティファイルの名前をコンマで区切って追加します。実装例の仕様が含まれているプロパティファイルの例 (<Windchill>/codebase/com/ptc/windchill/esi/examples/Example5.properties) が用意されています。
wt.services/svc/default/com.ptc.windchill.esi.esidoc.PartDocInfo/null/java.lang.Object/0=com.ptc.windchill.esi.examples.Example5MyPartDocInfo/duplicate
これは役に立ちましたか?