Fonctionnalités supplémentaires de Windchill > Gestion des processus de fabrication > Personnalisation de l'Explorateur de structures produit de fabrication > Personnalisation de l'Explorateur de structures produit pour la gestion des sous-classes modélisées
  
Personnalisation de l'Explorateur de structures produit pour la gestion des sous-classes modélisées
Objectif
Vous avez créé un objet métier modélisé personnalisé, et vous souhaitez personnaliser l'Explorateur de structures produit pour qu'il prenne totalement en charge votre sous-classe modélisée.
Portée/applicabilité/hypothèses
Vous avez créé votre sous-classe modélisée séparément.
Résultats attendus
Les instances de votre sous-classe modélisée seront détectées et présentées par l'Explorateur de structures produit de la même manière que les objets modélisés disponibles en standard.
Solution
Apportez des modifications dans les trois zones suivantes :
LogicalAttributes.xml ;
tableaux et panneaux de l'Explorateur de structures produit ;
délégations de commande personnalisées.
Connaissances préalables
Pour atteindre cet objectif, vous devez disposer d'une bonne connaissance des éléments suivants :
gestion des personnalisations de fichier XML ;
gestion des personnalisations de fichier RBINFO.
Eléments de la solution
Elément
Type
Description
LogicalAttributes.xml ;
Fichier XML
Permet de configurer des mappages entre le "format logique" d'un attribut modélisé et le "format externe" de cet attribut.
Procédure : personnalisation de l'Explorateur de structures produit pour la gestion des sous-classes modélisées
Cette rubrique comporte les sections suivantes :
LogicalAttributes.xml ;
tableaux et panneaux de l'Explorateur de structures produit ;
délégations de commande personnalisées.
LogicalAttributes.xml ;
Un fichier LogicalAttributes.xml, situé dans <Windchill>/codebase/LogicalAttributes.xml, permet de configurer des mappages entre le "format logique" d'un attribut modélisé et le "format externe" de cet attribut. Un mappage est obligatoire pour tous les attributs modélisés qui représentent une association entre deux objets. Par exemple, certaines des entrées définies pour la référence entre WTPart et WTPartMaster sont les suivantes :
<Class name="wt.part.WTPart">
<Property>
<LogicalForm>defaultUnit</LogicalForm>
<ExternalForm>MBA|masterReference^WCTYPE|
wt.part.WTPartMaster~MBA|defaultUnit</ExternalForm>
</Property>
<Property>
<LogicalForm>masterReference</LogicalForm>
<ExternalForm>MBA|masterReference^WCTYPE|
wt.part.WTPartMaster</ExternalForm>
</Property>
<Property>
<LogicalForm>name</LogicalForm>
<ExternalForm>MBA|masterReference^WCTYPE|
wt.part.WTPartMaster~MBA|name</ExternalForm>
</Property>
<Property>
<LogicalForm>number</LogicalForm>
<ExternalForm>MBA|masterReference^WCTYPE|
wt.part.WTPartMaster~MBA|number</ExternalForm>
</Property>
<Property>
<LogicalForm>organizationReference</LogicalForm>
<ExternalForm>MBA|masterReference^WCTYPE|
wt.part.WTPartMaster~MBA|organizationReference^WCTYPE|
wt.org.WTOrganization</ExternalForm>
</Property>
<Property>
<LogicalForm>organizationName</LogicalForm>
<ExternalForm>MBA|masterReference^WCTYPE|
wt.part.WTPartMaster~MBA|organizationReference^WCTYPE|
wt.org.WTOrganization~MBA|name</ExternalForm>
</Property>
<Property>
<LogicalForm>usedLineNumber</LogicalForm>
<ExternalForm>MBA|masterReference^WCTYPE|
wt.part.WTPartMaster~MBA|uses@WCTYPE|
wt.part.WTPartUsageLink~MBA|
lineNumber.value</ExternalForm>
</Property>
<Property>
<LogicalForm>usedLink</LogicalForm>
<ExternalForm>MBA|masterReference^WCTYPE|
wt.part.WTPartMaster~MBA|uses@WCTYPE|
wt.part.WTPartUsageLink</ExternalForm>
</Property>
</Class>
A l'aide de l'exemple selon lequel "ext.cust.CustPart" étend wt.part.WTPart et "ext.cust.SubPartMaster" étend wt.part.WTPartMaster, ajoutez le code ci-après au fichier spécifique du site <Windchill>/codebase/LogicalAttributesSite.xml :
<Class name="ext.cust.CustPart">
<Property>
<LogicalForm>defaultUnit</LogicalForm>
<ExternalForm>MBA|masterReference^WCTYPE|
ext.cust.SubPartMaster~MBA|defaultUnit</ExternalForm>
</Property>
<Property>
<LogicalForm>masterReference</LogicalForm>
<ExternalForm>MBA|masterReference^WCTYPE|
ext.cust.SubPartMaster</ExternalForm>
</Property>
<Property>
<LogicalForm>name</LogicalForm>
<ExternalForm>MBA|masterReference^WCTYPE|
ext.cust.SubPartMaster~MBA|name</ExternalForm>
</Property>
<Property>
<LogicalForm>number</LogicalForm>
<ExternalForm>MBA|masterReference^WCTYPE|
ext.cust.SubPartMaster~MBA|number</ExternalForm>
</Property>
<Property>
<LogicalForm>organizationReference</LogicalForm>
<ExternalForm>MBA|masterReference^WCTYPE|
ext.cust.SubPartMaster~MBA|organizationReference^WCTYPE|
wt.org.WTOrganization</ExternalForm>
</Property>
<Property>
<LogicalForm>organizationName</LogicalForm>
<ExternalForm>MBA|masterReference^WCTYPE|
ext.cust.SubPartMaster~MBA|organizationReference^WCTYPE|
wt.org.WTOrganization~MBA|name</ExternalForm>
</Property>
<LogicalForm>usedLineNumber</LogicalForm>
<ExternalForm>MBA|masterReference^WCTYPE|
ext.cust.SubPartMaster~MBA|uses@WCTYPE|
wt.part.WTPartUsageLink~MBA|
lineNumber.value</ExternalForm>
</Property>
<Property>
<LogicalForm>usedLink</LogicalForm>
<ExternalForm>MBA|masterReference^WCTYPE|
ext.cust.SubPartMaster~MBA|uses@WCTYPE|
wt.part.WTPartUsageLink</ExternalForm>
</Property>
</Class>
tableaux et panneaux de l'Explorateur de structures produit ;
Vous n'avez pas besoin d'ajouter de nouveaux attributs modélisés au fichier LogicalAttributes.xml, mais vous devez les ajouter aux fichiers XML appropriés de configuration de l'Explorateur de structures produit. Pour plus d'informations, consultez la rubrique Personnalisation de l'Explorateur de structures produit pour les sous-types.
* 
Lors de la spécification de nouveaux attributs modélisés définis uniquement pour des objets de sous-classe, l'élément "AttributeGroup", "AttributeTable" ou "Table" défini dans un contexte "wt.part.WTPart" doit être copié dans le contexte de sous-classe approprié.
Seuls les nouveaux attributs modélisés doivent être répertoriés. Les attributs existants seront hérités. Par exemple, le nom et le numéro seront hérités de l'article WTPart.
Pour supprimer des attributs d'un panneau de sous-classe qui sont hérités, utilisez "<Placement remove="true"/>". Par exemple :
<AttributeDefinition id="contextName”>
<Placement remove="true"/>"
</AttributeDefinition>
Lors de l'ajout de groupes d'éléments pour des objets personnalisés, il est recommandé de placer toutes les modifications personnalisées dans un fichier distinct, plutôt que de modifier les fichiers existants. Attribuez-leur un nom logique, par exemple CustomExplorerForTablesAndPanels.xml.
A l'aide de l'exemple précédent selon lequel "ext.cust.CustPart" étend "wt.part.WTPart", le code AttributeGroup ci-après
<ExplorerElementGroup>
<LogicContext application="ptc.wnc.StructureExplorer"
dataType="wt.part.WTPart"/>
<AttributeGroup id="ptc.wnc.exp.ViewPropertiesPanel" displayMode="view">
<CellDefinition id="number">
<AttributeDefinition attributeId="number"/>
</CellDefinition>
<CellDefinition id="organizationIdentifier">
<AttributeDefinition attributeId="organizationIdentifier"/>
</CellDefinition>
<CellDefinition id="name">
<AttributeDefinition attributeId="name"/>
</CellDefinition>
<CellDefinition id="versionIterationView">
<AttributeDefinition attributeId="versionIterationView"/>
</CellDefinition>
...
</AttributeGroup>
</ElementGroup>
doit être copié sous l'élément LogicContext pour "ext.cust.CustPart", comme ceci :
<ExplorerElementGroup>
<LogicContext application="ptc.wnc.StructureExplorer"
dataType=" ext.cust.CustPart "/>
<AttributeGroup id="ptc.wnc.exp.ViewPropertiesPanel" displayMode="view">
<!-- name and number will inherit from WTPart -->
<!-- adding new modeled attributes here -->
<CellDefinition id="intMBA">
<AttributeDefinition attributeId="intMBA"/>
</CellDefinition>
...
</AttributeGroup>
</ElementGroup>
délégations de commande personnalisées.
L'Explorateur de structures produit utilise un mappage Command/CommandDelegate pour contrôler certaines de ses opérations. L'exemple le plus notable est l'"Action Dupliquer". Pour "dupliquer" une classe personnalisée, vous devez sous-classer la délégation de copie appropriée. Dans le cas de "CustPart", vous devez créer une classe constituant une sous-classe de wt.enterprise.CopyWTPartDelegate et gérer la copie de vos attributs modélisés personnalisés.
Ecriture d'une délégation de copie pour une classe personnalisée
Lorsque vous personnalisez un objet métier standard (tel qu'un article) afin de créer une sous-classe modélisée, vous devez créer et configurer une classe de délégation de copie personnalisée pour que lors de la copie (ou de l'enregistrement) de l'article, les attributs modélisés supplémentaires soient correctement gérés.
Cette rubrique décrit les étapes avec un exemple simple : une classe d'article personnalisée "MyPart" qui étend wt.part.WTPart avec un attribut de chaîne unique "myAttr".
Création d'une délégation de copie
Comme illustré dans la figure, vous pouvez simplement étendre wt.enterprise.CopyWTPartDelegate et remplacer sa méthode newCopy(). L'objectif consiste à gérer tous les attributs personnalisés, myAttr dans ce cas précis. Voici la façon dont cette méthode est implémentée :
public final RevisionControlled newCopy( RevisionControlled object
)throws WTException {
//##begin newCopy%461E645C0050f.body preserve=yes
if (object == null) return null;
MyPart new_copy = (MyPart) super.newCopy(object);
MyPart original = (MyPart) object;
String my_attr = original.getMyAttr();
if (my_attr != null) {
try {
new_copy.setMyAttr(original.getMyAttr());
}
catch (WTPropertyVetoException e) {
throw new WTException(e);
}
return new_copy;
//##end newCopy%461E645C0050f.body
}
Création d'une délégation de copie
Configuration d'une délégation de copie
Pour demander à Windchill d'utiliser la délégation de copie personnalisée CopyMyPartDelegate en tant que classe de délégation de copie pour MyPart, vous devez insérer la ligne ci-après dans le fichier de configuration <windchill-install-directory>/codebase/wt/enterprise/EnterpriseServerDelegate.properties.
wt.services/svc/default/wt.enterprise.CopyDelegate/null/<my-
package>.MyPart/0=<mypackage>.
CopyMyPartDelegate/singleton
Points de personnalisation
Personnalisation des libellés et des énumérations localisables
Chaque objet modélisé est associé à un fichier RBINFO, créé lors de la génération, qui contient les chaînes localisées utilisées comme libellés des attributs et des colonnes dans l'Explorateur de structures produit. Si le libellé doit être modifié, il est nécessaire de modifier le fichier RBINFO. Par exemple, pour changer le libellé de l'attribut "booleanMBA" dans le fichier CustPartModelRB.rbInfo, modifiez la ligne suivante :
CustPart.booleanMBA.value=New Label for booleanMBA
Les énumérations modélisées afficheront les valeurs internes des énumérations lorsqu'elles seront présentées sous la forme d'un menu déroulant dans l'Explorateur de structures produit. Pour modifier les libellés affichés dans un menu déroulant, vous devez modifier le fichier RBINFO correspondant pour l'énumération. Par exemple, si vous générez une classe, "la classe finale publique MyEnum étend EnumeratedType" avec les valeurs "apple", "dog" et "cat", et que vous souhaitez modifier la valeur affichée dans le menu déroulant, modifiez le fichier MyEnumRB.rbInfo comme suit :
# Entry Contents
apple.value=Apples
dog.value=Dogs
cat.value=Cats
Autres ressources
Personnalisation de l'affichage des tableaux de l'Explorateur de structures produit