与其他应用程序集成 > 在 Windchill 中管理 CAD 和部件关系 > 自定义自动关联 > 使用和修改 AutoAssociatePartFinderCreator 接口
  
使用和修改 AutoAssociatePartFinderCreator 接口
“自动关联”通过 AutoAssociatePartFinderCreator 接口的实施执行下列操作。
搜索匹配部件。
创建新部件。
默认情况下,“自动关联”操作使用此接口的默认实施来执行上述任务。但是,您可以使用 AutoAssociatePartFinderCreator 接口的自定义实施来自定义它们的执行方式。
该接口位于 com.ptc.windchill.cadx.autoassociate.AutoAssociatePartFinderCreator
AutoAssociatePartFinderCreator 接口支持下列方法:
用于搜索选定的 EPMDocument 或 ModelItem 的匹配部件的 findOrCreateWTPart 方法
CreateNewWTPart 方法用于创建新部件
findWTPart 方法 (不再使用)
isNewPart 方法 (不再使用)
setIsNewPart 方法 (不再使用
)
* 
尽管该接口的一些方法已避免使用和不再使用,但是实现类必须具有这些方法的虚拟实现才能编译类。
要实现自定义 AutoAssociatePartFinderCreator
1. 派生自定义的类,如下所述。
public class CustomFinderCreator implements
AutoAssociatePartFinderCreator
2. 覆盖以下方法。
public WTPart findOrCreateWTPart(EPMDocument epmDoc, EPMWorkspace workspace)
为选择进行自动关联的每个文档调用此方法,以搜索任何匹配部件。可以自定义用于搜索部件的条件,而操作将使用返回的部件来与文档关联。
public WTPart findOrCreateWTPart(EPMDocument doc, ModelItem modelItem, EPMWorkspace workspace)
为选择进行自动关联的每个文档调用此方法,以搜索任何匹配部件。可以自定义用于搜索部件的条件,而操作将使用返回的部件来与文档关联。
public WTPart createNewWTPart(AssociatePartDescriptor newPartDescriptor)
为选择进行自动关联的每个文档调用此方法,以创建一个新部件。可为新创建的部件自定义属性。新创建的部件通过自动关联操作与文档关联。
* 
下列方法已不再适用,并且操作当前不再使用它们;但是,您需提供这些方法的虚拟实现,以便能够正确地编译类。
public boolean isIsNewPart()
public void setIsNewPart(boolean a_IsNewPart)
public WTPart findWTPart(EPMDocument epmDoc)
public WTPart findWTPart(EPMDocument epmDoc, ModelItem modelItem)
编译文件并将类置于任何适当的位置。
3. 设置首选项“操作” > “自动关联” > “自定义自动关联部件的类”以指定实现 AutoAssociatePartFinderCreator 接口的类的名称。
4. 重新启动方法服务器。
自定义的自动关联部件查找器创建者示例
使用下列源创建并编译 <WT_HOME>src\com\ptcts\autoassociate\CustomizedAutoAssociatePartFinderCreator.java
// package com.ptc.windchill.uwgm.cadx.autoassociate;
package com.ptcts;
import java.lang.String;
import wt.epm.EPMDocument;
import wt.epm.workspaces.EPMWorkspace;
import wt.part.WTPart;
import wt.pom.UniquenessException;
import wt.util.WTException;
import wt.util.WTPropertyVetoException;
import wt.vc.VersionControlException;
// import com.ptc.windchill.uwgm.task.autoassociate.DefaultAutoAssociatePartFinderCreator;
import com.ptc.windchill.uwgm.common.autoassociate.DefaultAutoAssociatePartFinderCreator;
// import com.ptc.windchill.cadx.autoassociate.AutoAssociatePartFinderCreator;
import com.ptc.windchill.uwgm.common.autoassociate.AutoAssociatePartFinderCreator;
import wt.type.TypedUtilityServiceHelper;
import com.ptc.windchill.uwgm.common.associate.AssociatePartDescriptor;
import wt.inf.container.WTContainer;
import java.rmi.RemoteException;
public class CustomizedAutoAssociatePartFinderCreator extends DefaultAutoAssociatePartFinderCreator implements AutoAssociatePartFinderCreator
{
public boolean isIsNewPart()
{
System.out.println("Invoked CustomizedAutoAssociatePartFinderCreator :: isIsNewPart()");
return super.isIsNewPart();
}
public void setIsNewPart( boolean a_IsNewPart ) throws WTPropertyVetoException
{
System.out.println("Invoked CustomizedAutoAssociatePartFinderCreator :: setIsNewPart()");
super.setIsNewPart(a_IsNewPart);
}
public WTPart findOrCreateWTPart(EPMDocument epmDoc, EPMWorkspace workspace) throws WTException, WTPropertyVetoException, VersionControlException, UniquenessException
{
System.out.println("Invoked CustomizedAutoAssociatePartFinderCreator :: findOrCreateWTPart()");
return super.findOrCreateWTPart(epmDoc, workspace);
}
public WTPart findWTPart(EPMDocument epmDoc) throws WTException
{
System.out.println("Invoked CustomizedAutoAssociatePartFinderCreator :: findWTPart()");
return super.findWTPart(epmDoc);
}

public WTPart createNewWTPart(AssociatePartDescriptor newPartDescriptor) throws WTException, WTPropertyVetoException {

System.out.println("Invoked CustomizedAutoAssociatePartFinderCreator :: createNewWTPart()");

// get epmdoc
EPMDocument epmDoc = newPartDescriptor.getSourceDoc();
// get workspace
EPMWorkspace ws = newPartDescriptor.getEPMWorkspace();

// get workspace container
WTContainer container = ws.getContainer();

// create wtpart with super class
WTPart newpart = super.createNewWTPart(newPartDescriptor);

// manipulate new part, e.g. set attributes

// return modified new part
return newpart;
}

}