Zusätzliche Funktionen von Windchill > Fertigungsprozess-Management > Produktstruktur-Explorer (PSE) anpassen > PSE zur Verarbeitung von modellierten Unterklassen anpassen
  
PSE zur Verarbeitung von modellierten Unterklassen anpassen
Ziel
Sie haben ein benutzerdefiniertes modelliertes Geschäftsobjekt erstellt, und Sie möchten PSE so anpassen, dass Ihre modellierte Unterklasse vollständig unterstützt wird.
Umfang/Anwendbarkeit/Annahmen
Sie haben die modellierte Unterklasse separat erstellt.
Gewünschtes Ergebnis
Instanzen der modellierten Unterklasse werden von PSE auf die gleiche Weise wie modellierte Standardobjekte erkannt und dargestellt.
Lösung
Nehmen Sie Änderungen in den folgenden drei Bereichen vor:
LogicalAttributes.xml
PSE-Tabellen und -Fenster
Benutzerdefinierte Befehls-Delegates
Vorausgesetzte Kenntnisse
Um dieses Ziel zu erreichen, müssen Sie Folgendes verstehen:
Verwaltung von XML-Dateianpassungen
Verwaltung von RBINFO-Dateianpassungen
Lösungselemente
Element
Typ
Beschreibung
LogicalAttributes.xml
XML-Datei
Wird verwendet, um Zuordnungen modellierter Attribute von einer "logischen Form" zu ihrer "externen Form" zu konfigurieren.
Verfahren – PSE zur Verarbeitung von modellierten Unterklassen anpassen
Dieser Abschnitt enthält die folgenden Themen:
LogicalAttributes.xml
PSE-Tabellen und -Fenster
Benutzerdefinierte Befehls-Delegates
LogicalAttributes.xml
Eine Datei "LogicalAttributes.xml", die sich in "<Windchill>/codebase/LogicalAttributes.xml" befindet, wird zum Konfigurieren von Zuweisungen modellierter Attribute von einer "logischen Form" zu ihrer "externen Form" verwendet. Eine Zuordnung ist für alle modellierten Attribute erforderlich, die eine Zuordnung von einem Objekt zu einem anderen darstellen. Hier einige Beispiele für Einträge, die für die WTPart-zu-WTPartMaster-Referenz definiert sind:
<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>
In dem Beispiel, in dem "ext.cust.CustPart" "wt.part.WTPart" erweitert und "ext.cust.SubPartMaster" "wt.part.WTPartMaster" erweitert, muss Folgendes zur standortspezifischen Datei mit dem Namen "<Windchill>/codebase/LogicalAttributesSite.xml" hinzugefügt werden:
<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>
PSE-Tabellen und -Fenster
Es ist nicht erforderlich, neue modellierte Attribute zur Datei "LogicalAttributes.xml" hinzuzufügen, aber Sie müssen diese den entsprechenden XML-Dateien der PSE-Konfiguration hinzufügen. Weitere Informationen finden Sie unter PSE für Untertypen anpassen.
* 
Wenn Sie neue modellierte Attribute angeben, die nur für Unterklassenobjekte definiert sind, muss die entsprechende "AttributeGroup" oder "AttributeTable" bzw. "Table", die in einem "wt.part.WTPart"-Kontext definiert ist, in den passenden Unterklassenkontext kopiert werden.
Nur neue modellierte Attribute müssen aufgelistet werden. Vorhandene Attribute werden geerbt. Beispielsweise werden Name und Nummer von WTPart geerbt.
Um geerbte Attribute aus einem Unterklassenfenster zu entfernen, verwenden Sie "<Placement remove="true"/>", z.B.:
<AttributeDefinition id="contextName”>
<Placement remove="true"/>"
</AttributeDefinition>
Ein bewährtes Verfahren beim Hinzufügen von Elementgruppen für benutzerdefinierte Objekte besteht darin, alle benutzerdefinierten Änderungen in einer separaten Datei abzulegen, anstatt vorhandene Dateien zu bearbeiten. Benennen Sie sie einheitlich, z.B. "CustomExplorerForTablesAndPanels.xml".
Wenn wie im vorherigen Beispiel "ext.cust.CustPart" "wt.part.WTPart" erweitert, muss die folgende AttributeGroup
<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>
wie folgt unter den LogicContext für "ext.cust.CustPart" kopiert werden:
<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>
Benutzerdefinierte Befehls-Delegates
PSE verwendet eine Befehls-/Befehls-Delegate-Zuordnung, um einige seiner Operationen zu steuern. Das wichtigste Beispiel ist die "Duplizieren-Aktion". Um eine benutzerdefinierte Klasse zu "duplizieren", muss der entsprechende Kopieren-Delegate als Unterklasse festgelegt werden. Im Fall von "CustPart" müssen Sie eine Klasse erstellen, die eine Unterklasse von "wt.enterprise.CopyWTPartDelegate" ist, und das Kopieren der angepassten modellierten Attribute verarbeiten.
Kopieren-Delegates für eine benutzerdefinierte Klasse schreiben
Wenn ein Standardgeschäftsobjekt (z.B. ein Teil) angepasst wird, um eine modellierte Unterklasse zu erstellen, muss eine benutzerdefinierte Kopieren-Delegate-Klasse erstellt und konfiguriert werden, damit beim Kopieren des Teils (bzw. bei "Gespeichert als") die zusätzlichen modellierten Attribute richtig verarbeitet werden.
Dieses Dokument illustriert die Schritte mit einem einfachen Beispiel: Eine benutzerdefinierte Teileklasse "MyPart" erweitert "wt.part.WTPart" mit einem einzelnen Zeichenfolgenattribut "myAttr".
Kopieren-Delegates erstellen
Wie in der folgenden Abbildung veranschaulicht, können Sie einfach "wt.enterprise.CopyWTPartDelegate" erweitern und die newCopy()-Methode überschreiben. Der Zweck ist, alle benutzerdefinierten Attribute zu verarbeiten, in diesem Fall "myAttr". So wird diese Methode implementiert:
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
}
Kopieren-Delegates erstellen
Kopieren-Delegates konfigurieren
Um Windchill anzuweisen, den benutzerdefinierten Kopieren-Delegate "CopyMyPartDelegate" als die Kopieren-Delegate-Klasse für "MyPart" zu verwenden, muss die folgende Zeile in die Konfigurationsdatei "<windchill-install-directory>/codebase/wt/enterprise/EnterpriseServerDelegate.properties" eingefügt werden.
wt.services/svc/default/wt.enterprise.CopyDelegate/null/<my-
package>.MyPart/0=<mypackage>.
CopyMyPartDelegate/singleton
Anpassungspunkte
Lokalisierbare Beschriftungen und Aufzählungen anpassen
Jedes modellierte Objekt weist eine zugeordnete RBINFO-Datei, auf, die während der Generierung erstellt wurde und lokalisierte Zeichenfolgen enthält, die als Beschriftungen für Attribute und Spalten in PSE verwendet werden. Wenn die Beschriftung geändert werden soll, muss die entsprechende RBIFNO-Datei bearbeitet werden. Beispiel: Um in der Datei "CustPartModelRB.rbInfo" die Beschriftung für das Attribut "booleanMBA" zu ändern, bearbeiten Sie die folgende Zeile:
CustPart.booleanMBA.value=New Label for booleanMBA
Modellierte Aufzählungen zeigen die internen Werte der Aufzählungen an, wenn sie als Dropdown-Menü in PSE gerendert werden. Um die Beschriftungen zu ändern, die in einem Dropdown-Menü angezeigt werden, muss die entsprechende RBINFO-Datei für die Aufzählung bearbeitet werden. Beispiel: Wenn Sie eine Klasse "public final class MyEnum extends EnumeratedType" mit den Werten "apple", "dog" und "cat" generieren und den Anzeigewert im Dropdown-Menü ändern möchten, bearbeiten Sie die Datei "MyEnumRB.rbInfo" wie folgt:
# Entry Contents
apple.value=Apples
dog.value=Dogs
cat.value=Cats
Andere Ressourcen
PSE-Tabellenanzeige anpassen