Intégration avec d'autres applications > Gestion des relations entre les documents CAO et les articles dans Windchill > Personnalisation de l'association automatique > Utilisation et modification de l'interface AutoAssociatePartFinderCreator
  
Utilisation et modification de l'interface AutoAssociatePartFinderCreator
L'action Association automatique utilise l'implémentation de l'interface AutoAssociatePartFinderCreator pour effectuer les actions suivantes :
recherche d'un article correspondant ;
création d'un article.
Par défaut, l'action Association automatique utilise l'implémentation par défaut de cette interface pour effectuer les tâches mentionnées ci-dessus. Toutefois, vous pouvez personnaliser leur exécution à l'aide d'une implémentation personnalisée de l'interface AutoAssociatePartFinderCreator.
L'interface se trouve à l'emplacement suivant : com.ptc.windchill.cadx.autoassociate.AutoAssociatePartFinderCreator.
L'interface AutoAssociatePartFinderCreator prend en charge les méthodes suivantes :
la méthode findOrCreateWTPart, qui permet de rechercher l'article correspondant au document CAO ou à l'élément de modèle sélectionné ;
la méthode CreateNewWTPart, qui permet de créer un article ;
la méthode findWTPart (obsolète) ;
la méthode isNewPart (obsolète) ;
la méthode setIsNewPart (obsolète).
)
* 
Même si certaines des méthodes de l'interface sont obsolètes, la classe d'implémentation doit comporter des implémentations fictives de ces méthodes en vue de la compilation de la classe.
Pour implémenter une interface AutoAssociatePartFinderCreator personnalisée :
1. Dérivez votre classe personnalisée comme suit.
public class CustomFinderCreator implements
AutoAssociatePartFinderCreator
2. Remplacez les méthodes ci-dessous.
public WTPart findOrCreateWTPart(EPMDocument epmDoc, EPMWorkspace workspace)
Cette méthode est appelée pour chaque document sélectionné en vue d'une association automatique, afin de rechercher un article correspondant. Vous pouvez personnaliser les critères de recherche d'article. L'action utilise l'article renvoyé afin de l'associer au document.
public WTPart findOrCreateWTPart(EPMDocument doc, ModelItem modelItem, EPMWorkspace workspace)
Cette méthode est appelée pour chaque document sélectionné en vue d'une association automatique, afin de rechercher un article correspondant. Vous pouvez personnaliser les critères de recherche d'article. L'action utilise l'article renvoyé afin de l'associer au document.
public WTPart createNewWTPart(AssociatePartDescriptor newPartDescriptor)
Cette méthode est appelée pour chaque document sélectionné en vue d'une association automatique, afin de rechercher un nouvel article. Vous pouvez modifier les propriétés du nouvel article. Le nouvel article est associé au document par le biais d'une association automatique.
* 
Les méthodes suivantes sont obsolètes et ne sont actuellement plus utilisées par l'action. Vous devez cependant implémenter ces méthodes de manière fictive, afin de compiler correctement la classe.
public boolean isIsNewPart()
public void setIsNewPart(boolean a_IsNewPart)
public WTPart findWTPart(EPMDocument epmDoc)
public WTPart findWTPart(EPMDocument epmDoc, ModelItem modelItem)
Compilez le fichier et placez la classe à un emplacement approprié.
3. Définissez la préférence Opération > Association automatique > Classe personnalisée pour l'association automatique d'article pour indiquer le nom de la classe qui implémente l'interface AutoAssociatePartFinderCreator.
4. Relancez le serveur de méthodes.
Exemple personnalisé de créateur d'utilitaire de recherche d'association automatique d'articles
Créez et compilez <WT_HOME>src\com\ptcts\autoassociate\CustomizedAutoAssociatePartFinderCreator.java avec la source suivante.
// 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;
}

}