Integración con otras aplicaciones > Gestión de las relaciones entre CAD y artículos en Windchill > Personalización de la asociación automática > Utilización y modificación de la interfaz AutoAssociatePartFinderCreator
  
Utilización y modificación de la interfaz AutoAssociatePartFinderCreator
En la asociación automática se utiliza la implementación de la interfaz AutoAssociatePartFinderCreator para realizar las siguientes acciones.
Buscar artículos coincidentes.
Crear un nuevo artículo.
Por defecto, en la acción Asociación automática se utiliza la implementación por defecto de esta interfaz para realizar las tareas mencionadas arriba. Sin embargo, se puede personalizar cómo se realizan utilizando una implementación personalizada de la interfaz AutoAssociatePartFinderCreator.
La interfaz se encuentra en com.ptc.windchill.cadx.autoassociate.AutoAssociatePartFinderCreator.
La interfaz AutoAssociatePartFinderCreator soporta los siguientes métodos:
Método findOrCreateWTPart que se utiliza para buscar artículos coincidentes de un EPMdocument o un ModelItem seleccionado.
Método CreateNewWTPart que se utiliza para crear un artículo nuevo.
Método findWTPart (ya no se utiliza).
Método isNewPart (ya no se utiliza).
Método setIsNewPart (ya no se utiliza
).
* 
Aunque algunos métodos de la interfaz están desfasados y ya no se utilizan, la clase de implementación debe tener implementaciones simuladas de estos métodos para compilar la clase.
Para implementar un elemento AutoAssociatePartFinderCreator personalizado:
1. Derive la clase personalizada de la siguiente manera.
public class CustomFinderCreator implements
AutoAssociatePartFinderCreator
2. Desestime los siguientes métodos.
public WTPart findOrCreateWTPart(EPMDocument epmDoc, EPMWorkspace workspace)
Este método se invoca para cada documento seleccionado para asociación automática, a fin de buscar los artículos coincidentes. Se pueden personalizar los criterios utilizados para buscar el artículo, y en la acción se utiliza el artículo devuelto para asociarlo al documento.
public WTPart findOrCreateWTPart(EPMDocument doc, ModelItem modelItem, EPMWorkspace workspace)
Este método se invoca para cada documento seleccionado para asociación automática, a fin de buscar los artículos coincidentes. Se pueden personalizar los criterios utilizados para buscar el artículo, y en la acción se utiliza el artículo devuelto para asociarlo al documento.
public WTPart createNewWTPart(AssociatePartDescriptor newPartDescriptor)
Este método se invoca para cada documento seleccionado para asociación automática, a fin de crear un nuevo artículo. Se pueden personalizar las propiedades del artículo que se acaba de crear. La acción de asociación automática asocia el artículo que se acaba de crear al documento.
* 
Los siguientes métodos están desfasados y en la acción no se utilizan actualmente. Sin embargo, es necesario proporcionar una implementación simulada de estos métodos para compilar la clase correctamente.
public boolean isIsNewPart()
public void setIsNewPart(boolean a_IsNewPart)
public WTPart findWTPart(EPMDocument epmDoc)
public WTPart findWTPart(EPMDocument epmDoc, ModelItem modelItem)
Compile el fichero y coloque la clase en cualquier ubicación adecuada.
3. Defina la preferencia Operación > Asociación automática > Clase personalizada para la asociación automática de artículos para que se especifique el nombre de la clase que implementa la interfaz AutoAssociatePartFinderCreator.
4. Reinicie el servidor de métodos.
Ejemplo personalizado de creador de buscador de artículos de asociación automática
Cree y compile <INICIO_WT>src\com\ptcts\autoassociate\CustomizedAutoAssociatePartFinderCreator.java con el siguiente código fuente.
// 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;
}

}