Advanced Customization > Business Logic Customization > Customizing the Product Structure Explorer (PSE) > Creating a Requirements Tab
  
Creating a Requirements Tab
This section contains instructions for displaying a Requirements tab in PSE. Following these instructions will create a Requirements tab which will be displayed in PSE and will only be enabled when a part of a specified type is selected in the structure tree. The tab will display the Requirement objects which are associated with the selected object and provide some operations for working with Requirements as well.
This documentation describes changes to existing files. It is suggested that you create a separate customer file to contain all new elements created.
The following instructions are provided:
Updating the <TabSet> element to include the Requirements tab
Define a <Tab> element for the Requirements tab
Define the <AssociationTable> element for the Requirements tab
Define the <StructureAuthorDefinition> element for the association table
Define the <StructureDefinitionSimple> element for the part to requirement association
Define the <Table> element for the Requirement type
Define the menus for the Requirements tab
Define the labels, tool tips and mnemonics for the Requirements tab
Define <ActionDefinition> elements referred to in the <MenuItem> elements
Implement an 'enabled decider' class to control when the tab is enabled
Updating the <TabSet> element to include the Requirements tab
This will add a reference to a Requirements tab to the defined TabSet.
1. Open the PDMLinkExplorerMain.xml file from the following location:
<Windchill>/codebase/config/logicrepository/xml/explorer/product
structure
2. Locate the <TabSet> element and add an import for the new Requirements tab, and place it in the desired location:
<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>
Define a <Tab> element for the Requirements tab
This will define the Requirements tab element.
1. Open the PDMLinkExplorerMain.xml file from the following location:
<Windchill>/codebase/config/logicrepository/xml/explorer/product
structure
2. After the <TabSet> element, define a <Tab> element for the Requirements tab:
<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>
* 
The id attribute for the Tab element must match the id specified in the import sub-element of the <TabSet> element defined above.
The class defined for the enabledDeciderClass attribute of the Tab element, controls what types this tab will be enabled for when parts are selected in the structure tree. This must be implemented by the customer.
The imageName attribute of the <Label> sub-element defines the icon to display on the tab.
The <Resource> sub-element of <Label> refers to the defined text label for the tab.
The <Panel> element contains an import to the defined table to be displayed.
Define the <AssociationTable> element for the Requirements tab
This will define the AssociationTable element used by the Requirements tab.
1. Open the PDMLinkExplorerMain.xml file from the following location:
<Windchill>/codebase/config/logicrepository/xml/explorer/product
structure
2. After the <Tab> element definition for the Requirements tab, define the <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>
* 
The id attribute for the <AssociationTable> must match the id specified in the import sub-element of the <Tab> element defined above.
The <Resource> sub-element of the <Label> element refers to the text label defined in the resource file to be used for the table.
Define the <StructureAuthorDefinition> element for the association table
This defines the StructureAuthorDefinition element used by the AssociationTable.
1. Open the ExplorerStructures.xml file from the following location:
<Windchill>/codebase/config/logicrepository/xml/explorer/struct
ureexplorer
2. Find the section in the file where the structure author definitions are defined. After the last <StructureAuthorDefinition> element, add the following definition for the Requirements:
<StructureAuthorDefinition id="mycom.wnc.exp.RequirementSAD">
<Import id="mycom.wnc.exp.PartToRequirementSD"/>
</StructureAuthorDefinition>
* 
The id attribute for the <StructureAuthorDefinition> must match the id specified in the import sub-element of the <AssociationTable> element defined above.
Define the <StructureDefinitionSimple> element for the part to requirement association
This defines the StructureDefinitionSimple element used by the StructureAuthorDefinition element.
1. Open the ExplorerStructures.xml file from the following location:
<Windchill>/codebase/config/logicrepository/xml/explorer/struct
ureexplorer
2. Find the section in the file where the structure definitions are defined. After the last <StructureDefinition> element, add the following definition:
<StructureDefinitionSimple
id="mycom.wnc.exp.PartToRequirementSD"
parentToChild="addressedPartMasterReference"
childDisplayId="number">
<Import id="ptc.wnc.exp.WTPartTD"/>
</StructureDefinitionSimple>
* 
The id attribute for the <StructureDefinitionSimple> must match the id specified in the import sub-element of the <StructureAuthorDefinition> element defined above.
Define the <Table> element for the Requirement type
This will define a table to display Requirements (Change Actions) associated with the selected part in the Structure Tree. The following data will be displayed in columns:
The number of the Requirement
The effectivity range of the Requirement
The status of the Requirement
The number of the ChangeDirective owning this requirement
The identifier of the part which fulfills this Requirement
The number of this Requirement's predecessor Requirement
To define the <Table> element for the Requirement type
1. Open the PDMLinkExplorerForTablesAndPanels.xml file from the following location:
<Windchill>/codebase/config/logicrepository/xml/explorer/produc
tstructure
2. At the end of the file:
a. Create the following <ExplorerElementGroup> as a sub-element of the <LogicRepository> element.
b. Define a <LogicContext> sub-element of the <ExplorerElementGroup> with the data type of the Requirement.
c. Define the <Table> element and the columns, <CellDefinition> elements, to be displayed in the table.
<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>
* 
The dataType attribute of the <LogicContext> element defines the type of part which will be displayed in the table defined.
The id attribute for the <Table> must match the id specified in the import sub-element of the <AssociationTable> element defined above.
The attributeId attribute of the <CellDefinition> element defines the qualified attribute data to be displayed in that cell.
The rendererClass attribute of the <CellDefinition> element is optional and overrides the default renderer for the cell.
The <Resource> sub-element of the <Label> element refers to the text label defined in the resource file to be used for column header.
Define the menus for the Requirements tab
This will define the menus and toolbar for the Requirements tab. A toolbar will be defined with the following structure:
The standard Info button
A Generate Requirements button. This button will trigger an action to generate requirements for the currently selected part in the structure.
A Fulfill Requirement button. This button will present the user with a list of candidate parts from which to select and designate as fulfilling the currently selected Requirement.
A View Effectivity Log button. This button will open a browser window and display the effectivity log for the currently selected Requirement.
The standard Revert button
The standard Comment button
The standard Revert button
The standard Comment button
Popup menus are also defined for the table which contain menu items for the three new operations:
Generate Requirements
Fulfill Requirement
View Effectivity Log
To define menus for the Requirements tab
1. Open the PDMLinkExplorerMenusForRequirementsTab.xml file from the following location:
<Windchill>/codebase/config/logicrepository/xml/explorer/produc
tstructure
2. Add the following content to the file:
<?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>
* 
The id attribute for the <ActionAccess> element must match the id specified in the import sub-element of the <AssociationTable> element defined above.
The <Resource> sub-element of the <Label> and <Tooltip> elements refers to the text label defined in the resource file to be used for column header.
Define the labels, tool tips and mnemonics for the Requirements tab
Define the text for the labels, tool tips and mnemonics used in the Requirements tab.
1. Open the ConfigurationResource.rbInfo file from the following location:
<Windchill>/codebase/config/logicrepository/xml/explorer/produc
tstructure
2. Add the following to the end of the file:
#
# 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
* 
The property name defined in the file, e.g. <property name>.value, must match the key attribute of the <Resource> element in the XML configuration files.
Define <ActionDefinition> elements referred to in the <MenuItem> elements
These are instructions for presenting the actions on the Requirements tab in PSE. These instructions will provide an action to correspond with the menu and toolbar item entries for the Fulfill Requirement action defined in the customization instructions for setting up the Requirements Tab.
1. Open the PDMLinkExplorerActions.xml file from the following location:
<Windchill>/codebase/config/logicrepository/xml/explorer/produc
tstructure
2. Locate the <ExplorerElementGroup> element with a sub-element <LogicContext> with the application attribute value of 'ptc.pdm.ProductStructureExplorer'. The ActionDefinition elements will be added after the LogicContext element.
3. Define the appropriate element using the steps found in the following sections.
Define the ActionDefinition Element for the Fulfill Requirements Action
This will define the Action Definition element for the Fulfill Requirements action.
As detailed above, locate the <ExplorerElementGroup> element with a sub-element <LogicContext> with the application attribute value of 'ptc.pdm.ProductStructureExplorer'. After the LogicContext element, add an ActionDefinition element like the following:
<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>
* 
The id attribute defined in the <ActionDefinition> must match the import id defined for the FulfillReqMI menu item defined in PDMLinkExplorerMenusForRequirementsTab.xml.
The actionClass attribute will be defined based on the node structure for Change Items and Design Solutions. If the set of Design Solutions are immediately under the Change Item node, then the following class should be specified: com.ptc.windchill.explorer.structureexplorer.panel.actions.FulfillChangeActionAction. If the set of Design Solutions are located two levels down from their Change Item node, then the following class should be specified: com.ptc.windchill.explorer.structureexplorer.panel.actions.FulfillChangeActionForStruc tureWithIntermediateNodeAction.
The import id in the <StructureAuthorAction> element must match the id of the structure definition defined in the ExplorerStructures.xml file.
All parts located at the level defined by the actionClass will be considered potential Design Solutions for fulfillment and presented to the user in a picklist.
Define the ActionDefinition Element for the Generate Change Actions Action
This will define the Action Definition element for the Generate Change Actions action.
As detailed above, locate the <ExplorerElementGroup> element with a sub-element <LogicContext> with the application attribute value of 'ptc.pdm.ProductStructureExplorer'. After the LogicContext element, add an ActionDefinition element like the following:
<ActionDefinition id="mycom.wnc.exp.GenerateRequirementsAction"
actionClass="com.ptc.windchill.explorer.structureexplorer.panel
.actions.GenerateChangeActionsAction">
<Action/>
<Import id="ptc.wnc.exp.IsValidInAllVAL"/>
</ActionDefinition>
* 
The id attribute defined in the <ActionDefinition> must match the import id defined for the GenerateReqsMI menu item defined in PDMLinkExplorerMenusForRequirementsTab.xml.
Define the ActionDefinition Element for the View Effectivity Log Action
This will define the Action Definition element for the View Effectivity Log action.
As detailed above, locate the <ExplorerElementGroup> element with a sub-element <LogicContext> with the application attribute value of 'ptc.pdm.ProductStructureExplorer'. After the LogicContext element, add an ActionDefinition element like the following:
<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>
The id attribute defined in the <ActionDefinition> must match the import id defined for the ViewEffLogMI menu item defined in PDMLinkExplorerMenusForRequirementsTab.xml.
Implement an 'enabled decider' class to control when the tab is enabled
This creates a new class which will control when the Requirements tab is enabled and disabled. Only when a part is selected in the structure tree, which matches one of the types specified in the enabled decider class, will the Requirements tab be enabled and operational.
1. Create the RequirementsEnabledDecider.java file from the following location:
<Windchill>/codebase/com/mycom/windchill/explorer/structureexpl
orer/deciders
2. Modify the following implementation as necessary:
Modify the common_ancestry string so that it matches the parent type hierarchy of the parts for which you want to view Requirements.
In the static code block, add an entry to the type_id_list for each part type which you want to view the Requirements
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;
}
}