Zusätzliche Funktionen von Windchill > Fertigungsprozess-Management > Produktstruktur-Explorer (PSE) anpassen > Registerkarte "Anforderungen" erstellen
  
Registerkarte "Anforderungen" erstellen
Dieser Abschnitt enthält Anweisungen für das Anzeigen der Registerkarte "Anforderungen" im Produktstruktur-Explorer. Wenn Sie diesen Anweisungen folgen, erstellen Sie die Registerkarte "Anforderungen", die im Produktstruktur-Explorer angezeigt und nur aktiviert wird, wenn ein Teil eines bestimmten Typs in der Hierarchie ausgewählt ist. Auf der Registerkarte werden die Anforderungsobjekte angezeigt, die dem ausgewählten Objekt zugeordnet sind, und es werden auch einige Operationen für das Arbeiten mit Anforderungen bereitgestellt.
Diese Dokumentation beschreibt Änderungen an vorhandenen Dateien. Erstellen Sie eine separate Kundendatei, die alle neu erstellen Elemente enthält.
Die folgenden Anweisungen stehen zur Verfügung:
<TabSet>-Element so aktualisieren, dass es die Registerkarte "Anforderungen" umfasst
<Tab>-Element für die Registerkarte "Anforderungen" definieren
<AssociationTable>-Element für die Registerkarte "Anforderungen" definieren
<StructureAuthorDefinition>-Element für die Zuordnungstabelle definieren
<StructureDefinitionSimple>-Element für das Teil zur Anforderungszuordnung definieren
<Table>-Element für den Anforderungstyp definieren
Menüs für die Registerkarte "Anforderungen" definieren
Beschriftungen, Tooltips und Zugriffstasten für die Registerkarte "Anforderungen" definieren
<ActionDefinition>-Elemente definieren, auf die in den <MenuItem>-Elementen verwiesen wird
enabledDecider-Klasse implementieren, um zu steuern, wann die Registerkarte aktiviert ist
<TabSet>-Element so aktualisieren, dass es die Registerkarte "Anforderungen" umfasst
Hierdurch wird dem definierten TabSet ein Verweis auf die Registerkarte "Anforderungen" hinzugefügt.
1. Öffnen Sie die Datei PDMLinkExplorerMain.xml am folgenden Speicherort:
<Windchill>/codebase/config/logicrepository/xml/explorer/product
structure
2. Suchen Sie das Element <TabSet>, fügen Sie einen Import für die neue Registerkarte "Anforderungen" hinzu, und speichern Sie diesen am gewünschten Speicherort:
<TabSet id="ptc.pdm.pse.ExplorerTaskTabSet" tabPlacement="top"
tabIdWithFocus="ptc.wnc.exp.PropertiesTab">
<Import id="ptc.wnc.exp.PropertiesTab"/>
<Import id="ptc.wnc.exp.StructureChildrenTab"/>
<Import id="mycom.wnc.exp.RequirementsTab"/>
<Import id="ptc.wnc.exp.GpsParamTab"/>
<Import id="ptc.wnc.exp.GpsConstraintsTab"/>
<Import id="ptc.wnc.exp.ViewTab"/>
<Import id="ptc.wnc.exp.DocTab"/>
<Import id="ptc.wnc.exp.ReplacementsTab"/>
<Import id="ptc.wnc.exp.UsedByTab"/>
</TabSet>
<Tab>-Element für die Registerkarte "Anforderungen" definieren
Dadurch wird das Element der Registerkarte "Anforderungen" definiert.
1. Öffnen Sie die Datei "PDMLinkExplorerMain.xml" am folgenden Speicherort:
<Windchill>/codebase/config/logicrepository/xml/explorer/product
structure
2. Definieren Sie nach dem <TabSet>-Element ein <Tab>-Element für die Registerkarte "Anforderungen":
<TabSet id="ptc.pdm.pse.ExplorerTaskTabSet" ... >
...
</TabSet>
<Tab id="mycom.wnc.exp.RequirementsTab"
tabClass="com.ptc.windchill.explorer.structureexplorer.explorer
.tabs.ShowTablesTab"
enabledDeciderClass="com.mycom.windchill.explorer.structureexpl
orer.deciders.RequirementsEnabledDecider">
<Label imageName="wtcore/images/change_action.gif">
<Resource key="requirementsTabLabel"/>
</Label>
<Panel>
<Import id="mycom.pdm.pse.RequirementAssocTable"/>
</Panel>
</Tab>
* 
Das ID-Attribut für das Tab-Element muss mit der im Importunterelement des oben definierten <TabSet>-Elements angegebenen ID übereinstimmen.
Die für das enabledDeciderClass-Attribut des Tab-Elements definierte Klasse steuert, welche Typen dieser Registerkarte aktiviert werden, wenn Teile in der Hierarchie ausgewählt werden. Dies muss vom Kunden implementiert werden.
Das imageName-Attribut des <Label>-Unterelements definiert das Symbol, das auf der Registerkarte angezeigt werden soll.
Das <Resource>-Unterelement von <Label> bezieht sich auf die für die Registerkarte definierte Beschriftung.
Das <Panel>-Element enthält einen Import zu der definierten Tabelle, die angezeigt werden soll.
<AssociationTable>-Element für die Registerkarte "Anforderungen" definieren
Dadurch wird das von der Registerkarte "Anforderungen" verwendete AssociationTable-Element definiert.
1. Öffnen Sie die Datei PDMLinkExplorerMain.xml am folgenden Speicherort:
<Windchill>/codebase/config/logicrepository/xml/explorer/product
structure
2. Definieren Sie nach der <Tab>-Elementdefinition für die Registerkarte "Anforderungen" das <AssociationTable>-Element.
<Tab id="mycom.wnc.exp.RequirementsTab" ... >
...
</Tab>
<AssociationTable
id="mycom.pdm.pse.mycom.pdm.pse.RequirementAssocTable">
<Label>
<Resource key="requirementsLabel"/>
</Label>
<Import id="mycom.wnc.exp.RequirementSAD"/>
<Import id="mycom.wnc.exp.ChangeActionTabTable"/>
<Import id="mycom.wnc.exp.ChangeActionAssocTableAA"/>
</AssociationTable>
* 
Das ID-Attribut für das <AssociationTable>-Element muss mit der im Importunterelement des oben definierten <Tab>-Elements angegebenen ID übereinstimmen.
Das <Resource>-Unterelement des <Label>-Elements bezieht sich auf die in der Ressourcendatei definierte Beschriftung, die für die Tabelle verwendet werden soll.
<StructureAuthorDefinition>-Element für die Zuordnungstabelle definieren
Dadurch wird das von der Zuordnungstabelle verwendete StructureAuthorDefinition-Element definiert.
1. Öffnen Sie die Datei ExplorerStructures.xml am folgenden Speicherort:
<Windchill>/codebase/config/logicrepository/xml/explorer/struct
ureexplorer
2. Suchen Sie den Abschnitt in der Datei, in dem die Strukturautorendefinitionen definiert werden. Fügen Sie nach dem letzten <StructureAuthorDefinition>-Element die folgende Definition für die Anforderungen hinzu:
<StructureAuthorDefinition id="mycom.wnc.exp.RequirementSAD">
<Import id="mycom.wnc.exp.PartToRequirementSD"/>
</StructureAuthorDefinition>
* 
Das ID-Attribut für das <StructureAuthorDefinition>-Element muss mit der im Importunterelement des oben definierten <AssociationTable>-Elements angegebenen ID übereinstimmen.
<StructureDefinitionSimple>-Element für das Teil zur Anforderungszuordnung definieren
Dadurch wird das vom StructureAuthorDefinition-Element verwendete StructureDefinitionSimple-Element definiert.
1. Öffnen Sie die Datei ExplorerStructures.xml am folgenden Speicherort:
<Windchill>/codebase/config/logicrepository/xml/explorer/struct
ureexplorer
2. Suchen Sie den Abschnitt in der Datei, in dem die Strukturdefinitionen definiert werden. Fügen Sie nach dem letzten <StructureDefinition>-Element die folgende Definition hinzu:
<StructureDefinitionSimple
id="mycom.wnc.exp.PartToRequirementSD"
parentToChild="addressedPartMasterReference"
childDisplayId="number">
<Import id="ptc.wnc.exp.WTPartTD"/>
</StructureDefinitionSimple>
* 
Das ID-Attribut für das <StructureDefinitionSimple>-Element muss mit der im Importunterelement des oben definierten <StructureAuthorDefinition>-Elements angegebenen ID übereinstimmen.
<Table>-Element für den Anforderungstyp definieren
Dadurch wird eine Tabelle definiert, um die dem ausgewählten Teil in der Hierarchie zugewiesenen Anforderungen (Änderungsaktionen) anzuzeigen. Die folgenden Daten werden in Spalten angezeigt:
Nummer der Anforderung
Gültigkeitsbereich der Anforderung
Status der Anforderung
Nummer der ChangeDirective, die diese Anforderung besitzt
ID des Teils, das diese Anforderung erfüllt
Zahl der Vorgänger-Anforderungen dieser Anforderung
So definieren Sie das <Table>-Element für den Anforderungstyp
1. Öffnen Sie die Datei PDMLinkExplorerForTablesAndPanels.xml am folgenden Speicherort:
<Windchill>/codebase/config/logicrepository/xml/explorer/produc
tstructure
2. Am Ende der Datei:
a. Erstellen Sie folgende <ExplorerElementGroup> als Unterelement des <LogicRepository>-Elements.
b. Definieren Sie ein <LogicContext>-Unterelement der <ExplorerElementGroup> mit dem Datentyp der Anforderung.
c. Definieren Sie <Table>-Element, <Table>-Spalten und <CellDefinition>-Elemente, die in der Tabelle angezeigt werden sollen.
<LogicRepository>
...
<ExplorerElementGroup>
<LogicContext
application="ptc.pdm.ProductStructureExplorer"
dataType="wt.change2.ChangeAction"/>

<Table id="airbus.wnc.exp.ChangeActionTabTable"
selectionMode="multi-non-contiguous" displayMode="view">
<CellDefinition id="number" mandatory="true" \
pinned="true">
<Label>
<Resource key="reqNumberLabel"/>
</Label>
<AttributeDefinition attributeId="number"/>
</CellDefinition>
<CellDefinition id="effVector" mandatory="true">
<Label>
<Resource key="reqValidityLabel"/>
</Label>
<AttributeDefinition attributeId="displayEffectivity"/>
</CellDefinition>
<CellDefinition id="theActionState"
mandatory="true">
<Label>
<Resource key="reqStatusLabel"/>
</Label>
<AttributeDefinition attributeId="theActionState"/>
</CellDefinition>
<CellDefinition id="owningChangeDirective"
mandatory="true">
<Label>
<Resource key="relatedCINLabel"/>
</Label>
<AttributeDefinition attributeId="MBA|
owningChangeDirectiveReference^WCTYPE|
wt.change2.WTChangeDirective~MBA|number"
rendererClass="com.ptc.windchill.explorer.structureexplorer.ren
derer.component.TypeIconifiedStringComponent"/>
</CellDefinition>
<CellDefinition id="satisfyPartMaster"
mandatory="true">
<Label>
<Resource key="fulfillingDSLabel"/>
</Label>
<AttributeDefinition attributeId="MBA|
satisfyPartMasterReference^WCTYPE|wt.part.WTPartMaster~MBA|
masterReference@WCTYPE|wt.part.WTPart~SCA|displayIdentifier"
rendererClass="com.ptc.windchill.explorer.structureexplorer.ren
derer.component.TypeIconifiedStringComponent"/>
</CellDefinition>
<CellDefinition id="oldActionReference"
displayWhenNoPreferenceSet="false">
<Label>
<Resource key="reqPredecessorLabel"/>
</Label>
<AttributeDefinition attributeId="MBA|
oldActionReference^WCTYPE|wt.change2.ChangeAction~MBA|number"
rendererClass="com.ptc.windchill.explorer.structureexplorer.ren
derer.component.TypeIconifiedStringComponent"/>
</CellDefinition>
</Table>
</ExplorerElementGroup>
</LogicRepository>
* 
Das dataType-Attribut des <LogicContext>-Elements definiert den Typ des Teils, der in der definierten Tabelle angezeigt wird.
Das ID-Attribut für das <Table>-Element muss mit der im Importunterelement des oben definierten <AssociationTable>-Elements angegebenen ID übereinstimmen.
Das attributeId-Attribut des <CellDefinition>-Elements definiert die qualifizierten Attributdaten, die in dieser Zelle angezeigt werden sollen.
Das rendererClass-Attribut des <CellDefinition>-Elements ist optional und setzt den Standardrenderer für die Zelle außer Kraft.
Das <Resource>-Unterelement des <Label>-Elements bezieht sich auf die in der Ressourcendatei definierte Beschriftung, die für die Spaltenüberschrift verwendet werden soll.
Menüs für die Registerkarte "Anforderungen" definieren
Dadurch werden die Menüs und die Symbolleiste für die Registerkarte "Anforderungen" definiert. Eine Symbolleiste wird mit der folgenden Struktur definiert:
Standardmäßige Informationsschaltfläche.
Schaltfläche zum Generieren von Anforderungen. Diese Schaltfläche löst eine Aktion aus, um Anforderungen für das derzeit ausgewählte Teil in der Struktur zu generieren.
Schaltfläche zum Erfüllen einer Anforderung. Diese Schaltfläche präsentiert dem Benutzer eine Liste von Kandidatenteilen, aus denen der Benutzer eine Auswahl trifft und die derzeit ausgewählte Anforderung als "Erfüllend" festlegt.
Schaltfläche zum Anzeigen des Gültigkeitsprotokolls. Mit dieser Schaltfläche wird ein Browser-Fenster geöffnet und das Gültigkeitsprotokoll für die aktuell ausgewählte Anforderung angezeigt.
Standardmäßige Schaltfläche zum Wiederherstellen.
Standardmäßige Kommentarschaltfläche.
Standardmäßige Schaltfläche zum Wiederherstellen.
Standardmäßige Kommentarschaltfläche.
Popup-Menüs werden auch für die Tabelle definiert, die Menüelemente für die drei neuen Operationen enthalten:
Anforderungen generieren
Anforderung erfüllen
Gültigkeitsprotokoll anzeigen
So definieren Sie Menüs für die Registerkarte "Anforderungen"
1. Öffnen Sie die Datei PDMLinkExplorerMenusForRequirementsTab.xml am folgenden Speicherort:
<Windchill>/codebase/config/logicrepository/xml/explorer/produc
tstructure
2. Fügen Sie der Datei den folgenden Inhalt hinzu:
<?xml version="1.0" standalone="no" ?>
<!DOCTYPE LogicRepository SYSTEM
"/config/logicrepository/dtd/LogicRepository.dtd">
<LogicRepository>
<ExplorerElementGroup>
<LogicContext
application="ptc.pdm.ProductStructureExplorer"/>
<ActionAccess id="mycom.wnc.exp.ChangeActionAssocTableAA">
<MenuBar id="MenuBar">
<Menu id="Menu">
<Import id="ptc.wnc.exp.InfoPageAssocMI"/>
<Separator/>
<MenuItem id="GenerateReqsMI">
<Label
imageName="com/ptc/windchill/explorer/config/images/child_creat
e.gif">
<Resource key="generateReqsLabel"/>
</Label>
<ToolTip>
<Resource key="generateReqsToolTip"/>
</ToolTip>
<Import
id="mycom.wnc.exp.GenerateRequirementsAction"/>
</MenuItem>
<MenuItem id="FulfillReqMI">
<Label
imageName="com/ptc/windchill/explorer/config/images/child_add.g
if">
<Resource key="fulfillReqLabel"/>
</Label>
<ToolTip>
<Resource key="fulfillReqToolTip"/>
</ToolTip>
<Import
id="mycom.wnc.exp.FulfillRequirementAction"/>
</MenuItem>
<MenuItem id="ViewEffLogMI">
<Label
imageName="com/ptc/windchill/explorer/config/images/child_repor
t.gif">
<Resource key="viewEffLogLabel"/>
</Label>
<ToolTip>
<Resource key="viewEffLogToolTip"/>
</ToolTip>
<Import
id="mycom.wnc.exp.ViewEffectivityLogAction"/>
</MenuItem>
<Separator/>
<MenuItem id="RevertMI">
<Label
imageName="com/ptc/windchill/explorer/config/images/revert.gif"
>
<Resource key="revertLabel"/>
</Label>
<ToolTip>
<Resource key="revertToolTip"/>
</ToolTip>
<Import
id="ptc.wnc.exp.RevertForAltAssocAction"/>
</MenuItem>
<Import id="ptc.wnc.exp.CommentAssocMI"/>
</Menu>
</MenuBar>
<ModeToolBar id="ToolBarA">
<Import id="ptc.wnc.exp.EditAppMode"/>
<MenuItemIdentifier
id="ptc.wnc.exp.InfoPageAssocMI"/>
<Separator/>
<MenuItemIdentifier id="GenerateReqsMI"/>
<MenuItemIdentifier id="FulfillReqMI"/>
<MenuItemIdentifier id="ViewEffLogMI"/>
</ModeToolBar>
<ModeToolBar id="ToolBarB">
<Import id="ptc.wnc.exp.DraftAppMode"/>
<Import id="ptc.wnc.exp.AnnotateAppMode"/>
<Import id="ptc.wnc.exp.ReadOnlyAppMode"/>
<MenuItemIdentifier
id="ptc.wnc.exp.InfoPageAssocMI"/>
<Separator/>
<MenuItemIdentifier id="GenerateReqsMI"/>
<MenuItemIdentifier id="FulfillReqMI"/>
<MenuItemIdentifier id="ViewEffLogMI"/>
<Separator/>
<MenuItemIdentifier id="RevertMI"/>
<MenuItemIdentifier
id="ptc.wnc.exp.CommentAssocMI"/>
</ModeToolBar>
<ModePopupMenu id="PopupMenuA">
<Import id="ptc.wnc.exp.EditAppMode"/>
<MenuItemIdentifier id="GenerateReqsMI"/>
<MenuItemIdentifier id="FulfillReqMI"/>
<MenuItemIdentifier id="ViewEffLogMI"/>
</ModePopupMenu>
<ModePopupMenu id="PopupMenuB">
<Import id="ptc.wnc.exp.DraftAppMode"/>
<Import id="ptc.wnc.exp.AnnotateAppMode"/>
<MenuItemIdentifier id="GenerateReqsMI"/>
<MenuItemIdentifier id="FulfillReqMI"/>
<MenuItemIdentifier id="ViewEffLogMI"/>
<Separator/>
<MenuItemIdentifier id="RevertMI"/>
<MenuItemIdentifier
id="ptc.wnc.exp.CommentAssocMI"/>
</ModePopupMenu>
</ActionAccess>
</ExplorerElementGroup>
</LogicRepository>
* 
Das ID-Attribut für das <ActionAccess>-Element muss mit der im Importunterelement des oben definierten <AssociationTable>-Elements angegebenen ID übereinstimmen.
Das <Resource>-Unterelement des <Label>- und <Tooltip>-Elements bezieht sich auf die in der Ressourcendatei definierte Beschriftung, die für die Spaltenüberschrift verwendet werden soll.
Beschriftungen, Tooltips und Zugriffstasten für die Registerkarte "Anforderungen" definieren
Definieren Sie den Text für die Beschriftungen, Tooltips und Zugriffstasten, die auf der Registerkarte "Anforderungen" verwendet werden.
1. Öffnen Sie die Datei ConfigurationResource.rbInfo am folgenden Speicherort:
<Windchill>/codebase/config/logicrepository/xml/explorer/produc
tstructure
2. Fügen Sie am Ende der Datei Folgendes hinzu:
#
# Tabbed Pane - Requirements
#
requirementsTabLabel.value=Requirements
# Change Item to Requirements table
requirementsLabel.value=Requirements
reqNumberLabel.value=Number
reqValidityLabel.value=Effectivity
reqStatusLabel.value=Status
relatedCINLabel.value=Originating From
fulfillingDSLabel.value=Fulfilled By
reqPredecessorLabel.value=Predecessor
generateReqsLabel.value=Generate Requirements
generateReqsToolTip.value=Generate Requirements
fulfillReqLabel.value=Fulfill Requirement
fulfillReqToolTip.value=Fulfill Requirement
viewEffLogLabel.value=View Effectivity Calculation Log
viewEffLogToolTip.value=View Effectivity Calculation Log
* 
Der in der Datei definierte Eigenschaftenname, z.B. <Eigenschaftenname>.value, muss mit dem Schlüsselattribut des <Resource>-Elements in den XML-Konfigurationsdateien übereinstimmen.
<ActionDefinition>-Elemente definieren, auf die in den <MenuItem>-Elementen verwiesen wird
Dies sind Anweisungen zum Darstellen der Aktionen auf der Registerkarte "Anforderungen" im Produktstruktur-Explorer. Diese Anweisungen bieten eine Aktion, die den Menü- und Symbolleistenelementeinträgen für die Aktion "Anforderung erfüllen" entspricht, die in den Anpassungsanweisungen für das Einrichten der Registerkarte "Anforderungen" definiert ist.
1. Öffnen Sie die Datei PDMLinkExplorerActions.xml am folgenden Speicherort:
<Windchill>/codebase/config/logicrepository/xml/explorer/produc
tstructure
2. Suchen Sie das <ExplorerElementGroup>-Element mit einem Unterelement <LogicContext> mit dem Anwendungsattributwert "ptc.pdm.ProductStructureExplorer". Die ActionDefinitions-Elemente werden nach dem LogicContext-Element hinzugefügt.
3. Definieren Sie das entsprechende Element mithilfe der Schritte in den folgenden Abschnitten.
Definieren Sie das ActionDefinitions-Element für die Aktion "Anforderung erfüllen"
Dadurch wird das ActionDefinitions-Element für die Aktion "Anforderung erfüllen" definiert.
Suchen Sie, wie oben beschrieben, das <ExplorerElementGroup>-Element mit einem Unterelement <LogicContext> mit dem Anwendungsattributwert "ptc.pdm.ProductStructureExplorer". Fügen Sie nach dem LogicContext-Element ein ActionDefinition-Element wie das folgende hinzu.
<ActionDefinition id="mycom.wnc.exp.FulfillRequirementAction"
actionClass="com.ptc.windchill.explorer.structureexplorer.panel
.actions.FulfillChangeActionForStructureWithIntermediateNodeAct
ion">
<StructureAuthorAction>
<Import id="mycom.wnc.exp.PartToRequirementSD"/>
</StructureAuthorAction>
<Import id="ptc.wnc.exp.IsValidInAllWithReadVAL"/>
</ActionDefinition>
* 
Das in der <ActionDefinition> definierte ID-Attribut muss mit der für das FulfillReqMI-Menüelement definierten Import-ID übereinstimmen, das in PDMLinkExplorerMenusForRequirementsTab.xml definiert ist.
Das actionClass-Attribut wird basierend auf der Knotenstruktur für Änderungselemente und Konstruktionslösungen definiert. Wenn sich der Satz von Konstruktionslösungen sofort unter dem Änderungselementknoten befindet, dann sollte die folgende Klasse angegeben werden: com.ptc.windchill.explorer.structureexplorer.panel.actions.FulfillChangeActionAction. Wenn sich der Satz von Konstruktionslösungen zwei Ebenen unter ihrem Änderungselementknoten befindet, dann sollte die folgende Klasse angegeben werden: com.ptc.windchill.explorer.structureexplorer.panel.actions.FulfillChangeActionForStruc tureWithIntermediateNodeAction.
Die Import-ID im <StructureAuthorAction>-Element muss mit der ID der in der Datei "ExplorerStructures.xml" definierten Strukturdefinition übereinstimmen.
Alle Teile, die sich auf der Ebene befinden, die von actionClass definiert wird, werden als mögliche Konstruktionslösungen für die Erfüllung betrachtet und dem Benutzer in einer Auswahlliste dargestellt.
ActionDefinitions-Element für die Aktion "Änderungsaktion generieren" definieren
Dadurch wird das ActionDefinitions-Element für die Aktion "Änderungsaktion generieren" definiert.
Suchen Sie, wie oben beschrieben, das <ExplorerElementGroup>-Element mit einem Unterelement <LogicContext> mit dem Anwendungsattributwert "ptc.pdm.ProductStructureExplorer". Fügen Sie nach dem LogicContext-Element ein ActionDefinition-Element wie das folgende hinzu.
<ActionDefinition id="mycom.wnc.exp.GenerateRequirementsAction"
actionClass="com.ptc.windchill.explorer.structureexplorer.panel
.actions.GenerateChangeActionsAction">
<Action/>
<Import id="ptc.wnc.exp.IsValidInAllVAL"/>
</ActionDefinition>
* 
Das in der <ActionDefinition> definierte ID-Attribut muss mit der für das GenerateReqsMI-Menüelement definierten Import-ID übereinstimmen, das in PDMLinkExplorerMenusForRequirementsTab.xml definiert ist.
Definieren Sie das ActionDefinitions-Element für die Aktion "Gültigkeitsprotokoll anzeigen"
Dadurch wird das ActionDefinitions-Element für die Aktion "Gültigkeitsprotokoll anzeigen" definiert.
Suchen Sie, wie oben beschrieben, das <ExplorerElementGroup>-Element mit einem Unterelement <LogicContext> mit dem Anwendungsattributwert "ptc.pdm.ProductStructureExplorer". Fügen Sie nach dem LogicContext-Element ein ActionDefinition-Element wie das folgende hinzu.
<ActionDefinition id="mycom.wnc.exp.ViewEffectivityLogAction"
actionClass="com.ptc.windchill.explorer.structureexplorer.panel
.actions.AssociationUrlAction">
<UrlAction selectionMode="single"
urlBaseName="servlet/TypeBasedIncludeServlet?">
<UrlParameter value="oid={selected_oid}"/>
</UrlAction>
<Import id="ptc.wnc.exp.IsValidForHTMLLaunchMasterOkVAL"/>
</ActionDefinition>
Das in der <ActionDefinition> definierte ID-Attribut muss mit der für das ViewEffLogMI-Menüelement definierten Import-ID übereinstimmen, das in PDMLinkExplorerMenusForRequirementsTab.xml definiert ist.
enabledDecider-Klasse implementieren, um zu steuern, wann die Registerkarte aktiviert ist
Auf diese Weise wird eine neue Klasse erstellt, die steuert, wann die Anforderungsregisterkarte aktiviert und deaktiviert ist. Nur wenn ein Teil im Strukturbaum ausgewählt wurde, das mit einem in der enabledDecider-Klasse angegebenen Typen übereinstimmt, wird die Registerkarte "Anforderungen" aktiviert und ist funktionsfähig.
1. Erstellen Sie die Datei RequirementsEnabledDecider.java am folgenden Speicherort:
<Windchill>/codebase/com/mycom/windchill/explorer/structureexpl
orer/deciders
2. Ändern Sie die folgende Implementierung wie erforderlich:
Ändern Sie die common_ancestry-Zeichenfolge so, dass diese der übergeordneten Typhierarchie der Teile entspricht, für die Sie Anforderungen anzeigen möchten.
Fügen Sie im statischen Codeblock einen Eintrag zum Typ "_id_list" für jeden Teiletyp hinzu, für den Sie die Anforderungen anzeigen möchten.
package
com.mycom.windchill.explorer.structureexplorer.deciders;
import java.util.ArrayList;
import java.util.List;
import
wt.services.applicationcontext.implementation.DefaultServicePro
vider;
import
com.ptc.core.foundation.struct.common.StructureConstants;
import com.ptc.core.meta.common.AssociationIdentifier;
import com.ptc.core.meta.common.AssociationTypeIdentifier;
import com.ptc.core.meta.common.AttributeTypeIdentifier;
import com.ptc.core.meta.common.IdentifierFactory;
import com.ptc.core.meta.common.TypeIdentifier;
import com.ptc.core.meta.common.TypeInstanceIdentifier;
import com.ptc.core.meta.type.common.TypeInstance;
import
com.ptc.windchill.explorer.structureexplorer.config.AbstractCon
fig;
import
com.ptc.windchill.explorer.structureexplorer.deciders.EnabledDe
cider;
import
com.ptc.windchill.explorer.structureexplorer.utility.CommonData
;
public class RequirementsEnabledDecider implements
EnabledDecider
{
private static IdentifierFactory identifierFactory =
(IdentifierFactory)
DefaultServiceProvider.getService(IdentifierFactory.class,
"logical"); //$NON-NLS-1$
private static List<TypeIdentifier> type_id_list = new
ArrayList<TypeIdentifier>();
private static String common_ancestry = "WCTYPE|
wt.part.WTPart|com.mycom.MyPart|"; //$NON-NLS-1$
static {
try
{
type_id_list.add(
(TypeIdentifier)identifierFactory.get(common_ancestry +
"com.mycom.CustomPartA")); //$NON-NLS-1$
type_id_list.add(
(TypeIdentifier)identifierFactory.get(common_ancestry +
"com.mycom.CustomPartB")); //$NON-NLS-1$
type_id_list.add(
(TypeIdentifier)identifierFactory.get(common_ancestry +
"com.mycom.CustomPartC")); //$NON-NLS-1$
type_id_list.add(
(TypeIdentifier)identifierFactory.get(common_ancestry +
"com.mycom.CustomPartD")); //$NON-NLS-1$
}
catch(Exception e)
{
e.printStackTrace();
}
}

public boolean isItemEnabled(TypeInstance node_ti,
TypeInstance parent_node_ti, AbstractConfig item_config,
CommonData common_data)
{
boolean enabled = true
if (node_ti !=null)
{
enabled = isValidPart(node_ti);
}
return enabled;
}
/**
* is this node a generice part or a configurable generic
part?
**/
public static boolean isValidPart(TypeInstance node_ti)
{
if (node_ti ==null)
{
return false;
}
TypeInstanceIdentifier node_tii = (TypeInstanceIdentifier)
node_ti.getIdentifier();
if (node_tii ==null)
{
return false;
}
try
{
if (IsMasterd(node_ti))
{
return false;
}
TypeIdentifier type_id = trimTypeId((TypeIdentifier)
node_tii.getDefinitionIdentifier());
for(TypeIdentifier spec_type_id : type_id_list)
{
if(type_id.isDescendedFrom(spec_type_id))
(
return true;
}
}
return false;
}
catch (Exception e)
{
return false;
}
}

/**
* Assumes an iteration...
*
* isMastered is an unpersisted Iteration and a persisted
Master.
*@param ti
*@return
*
*/
private static boolean IsMastered(TypeInstance ti)
{
try
{
TypeInstanceIdentifier tii = (TypeInstanceIdentifier)
ti.getIdentifier();
if (tii instanceod AssociationIdentifier)
{
tii = ((AssociationIdentifier) tii).getTail();
}
if (!tii.isInitialized())
{
AttributeTypeIdentifier master_ati =
(AttributeTypeIdentifier)
identifierFactory.get(StructureConstants.MASTER_REFERENCE_ID_ST
R, tii.getDefinitionIdentifier());
Object object = ti.getSingle(master_ati);
TypeInstanceIdentifier master_tii = null;
if (object instanceof TypeInstanceIdentifier)
{
master_tii = (TypeInstanceIdentifier) object;
}
if (master_tii.isIntialized())
{
return true;
}
}
}
catch (Exception ex)
{
return false;
}

return false;
)
private static TypeIdentifier trimTypeId(TypeIdentifier
type_id)
{
if (type_id instanceof AssociationTypeIdentifier)
{
return ((AssociationTypeIdentifier) type_id).getTail();
}
return teyp_id;
}
}