Интеграция с другими приложениями > Управление взаимосвязями CAD-документов и деталей в Windchill > Настройка автоматического связывания > Использование и изменение интерфейса AutoAssociatePartFinderCreator
  
Использование и изменение интерфейса AutoAssociatePartFinderCreator
При автоматическом связывании реализация интерфейса AutoAssociatePartFinderCreator используется для выполнения следующих действий.
Поиск подходящей детали.
Создание новой детали.
По умолчанию действие Связывать автоматически использует для выполнения перечисленных выше задач реализацию этого интерфейса по умолчанию. Однако можно настроить порядок выполнения этих задач с помощью пользовательской реализации интерфейса AutoAssociatePartFinderCreator.
Интерфейс расположен в com.ptc.windchill.cadx.autoassociate.AutoAssociatePartFinderCreator.
Интерфейс AutoAssociatePartFinderCreator поддерживает следующие методы:
метод findOrCreateWTPart (используется для поиска подходящей детали для выбранного EPM-документа или элемента модели);
метод 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. Перезапустите сервер методов.
Пример пользовательского интерфейса Auto Associate Part Finder Creator
Создайте и скомпилируйте файл <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;
}

}