The Part list editor can be used to synchronize two part lists and allocate/deallocate items from one list to another. Typical use cases are to allocate requirements to test specifications, maintain a list of assets such as parameters, and get an overview of version inconsistencies. The view is configured by an Architect and can utilize a grid or structure tree format for the right-side of the view. This article describes how to configure the view.


Prerequisites


Configuring the View

  1. Go to File > Configure the explorer
  2. On the Item views tab, select Part list editor.

  3. Click View example XML and copy the script as a starting point for your configuration. 
  4. Click Edit configuration and paste the script in the Edit XML window. (If there are existing <Config> sections there, just add this new config below them within the <Configs> tag.) 
  5. Modify the configuration to meet the needs of the use case. (See the explanation of available elements below.)
  6. When you are ready to test and make it available to users, check the Active box. Users must log out and back in to see the new option.


Explanation of the Part List Editor Configuration Elements

<Configs> is the top tag which can include one or more <Config>.

<Config> is the top tag of each configuration and must have an id attribute. The id attribute in <Config> identifies the specific configuration, and should be a unique string value when multiple configurations exist. 

<ViewSettings> enables you to set a custom view label, hover-tip, icon, etc. See How to Configure Item View Menu Button Settings. Example: 

<TopItemType> identifies the item type for which the configuration is valid.

<PartTypes> identifies the part type(s) to be included, using <PartType>

<PartType> identifies the part type to be included, by specifying the part SID and the defobj type of the included part. As shown in the below example.

                   <PartType itemType="defobj-SID">part-SID</PartType>

<IgnorePartType> identifies the part type to be ignored by specifying the part SID. This is optional.

<UIMessages> customizes four UI labels:

  • <UIMessageAdd> the option of including a part, i.e., Include XYZ.
  • <UIMessageIgnore> the option of excluding a part, i.e., Ignore XYZ.
  • <UIMessageMappingColumnHeading> the title of the left panel, i.e., Mapping status XYZ.
  • <UIMessageAllocatedHeading> the header of mapping status, which can be found in the right panel, i.e., Status XYZ.



<RightSide>: alternatively, it is possible to include ContextTree, StructureTree or Grid in the right side panel of the view. 


Alternative # 1 <ContextTree>

This alternative includes a SystemWeaver context and tree definition. 

  • <Context> is for building a virtual context with only the information of interest. Read more about how to define a SystemWeaver Context in the SystemWeaver Help.
  • <Tree> specifies which context group to start with and how to navigate in the context tree using <Case>. See the example below.

Example

   <ContextTree>
        <Context>
          <AddParts owner="main" sid="ITSI" part="specif" defobj="spec"/>
          <AddParts owner="spec" sid="ITFC" part="fc" defobj="fuco"/>
          <AddParts owner="fuco" sid="IDRE" part="rq" defobj="req"/>
        </Context>
        <Tree startGroup="spec">
          <Case group="spec" go="/fc"/>
          <Case group="fuco" go="/rq"/>
        </Tree>
      </ContextTree>


Parameterized context can be used if needed. It offers parameterization, where the user may select which item to include in a view. See the example below.


Example

  <ContextTree>
        <Parameters>
          <Parameter name="p1" caption="System" hintContextPath="PALI">
            <Values>
              <ForEachPathReference path="PALI">
                <AddValue/>            
              </ForEachPathReference>        
            </Values>    
          </Parameter>
        </Parameters>      
        <Context name="x">
          <AddParts owner="p1" sid="3VDA" part="Designs" defobj="Design"/>
          <AddParts owner="Design" sid="ITFD" part="FuncLevels" defobj="FuncLevel"/>
          <AddParts owner="FuncLevel" sid="ITAP" part="Functions" defobj="Function"/>
          <AddParts owner="Function" sid="ITFC" part="SWCs" defobj="SWC"/>
          <AddParts owner="SWC" sid="PARA" part="Params" defobj="Param"/>
        </Context>
        <Tree startGroup="Param">
        </Tree>


Alternative # 2 <Grid>

This alternative shares properties of a report Table, like the different columns that are supported. Read more about how to define a SystemWeaver Grid in Tables and Grids - Introductory Training. See the example below.


Example

     <Grid>
        <Columns>
          <ItemNameColumn width="200"/>
          <ItemAttributeColumn type="AUID" width="100"/> 
        </Columns>                      
        <ForEachPart type="ITSI">
          <DefObj>
            <Row/>
          </DefObj> 
        </ForEachPart>
      </Grid>


Alternative # 3 <StructureTree>

This alternative lists the parts of the top item, similar to the Structure Tree that you can find on the left panel of the Items tab. There are two ways of defining StructureTree. The first way is to use a predefined Structure Tree view by selecting the name of the view. The second way, which is more flexible, allows you to list the wanted part SID to be shown in the structure tree.


Option 1: <StructureTree> includes two tags which are:

  • <ViewName> where you can enter the name of the view to be used. At the top-left corner (see example below), you can select which tree view setting you want to use for working with your current model. 
  • <TopItemPath> The Structure tree lists the parts of the top item. In this tab the wanted path can be listed.


Example

      <StructureTree>
        <ViewName>Requirements</ViewName>
        <TopItemPath>/ITSI</TopItemPath>
      </StructureTree>

Option 2: <StructureTree> includes one tag:

  • <ShouldShowSids> where part sid to be shown can be listed.

Example

      <StructureTree>
        <ShouldShowSids>ITEC;ITRQ</ShouldShowSids>
      </StructureTree>

<AdditionalLeftColumns>  by default 

<AdditionalLeftColumns> 
      <TextColumn>#{Name}</TextColumn>
  </AdditionalLeftColumns> 

Example Configuration

<Configs>  
<Config id="Test requirements">
    <ViewSettings>
       <Caption>Allocate Reqs</Caption>
       <RibbonGroup>Test</RibbonGroup>
       <Description>Hint shown in the ribbon</Description>
    </ViewSettings>
    <TopItemType>JTSP</TopItemType>
    <PartTypes>
       <PartType itemType="RQ">ITTR</PartType>
    </PartTypes>
    <IgnorePartType>UASS</IgnorePartType> 
    <UIMessages>
      <UIMessageAdd>Include</UIMessageAdd>
      <UIMessageIgnore>Exclude</UIMessageIgnore>
      <UIMessageMappingColumnHeading>Mapping status</UIMessageMappingColumnHeading>
      <UIMessageAllocatedHeading>Mapping status</UIMessageAllocatedHeading>
    </UIMessages>
    <RightSide>
      <ContextTree>
        <Context>
          <AddParts owner="main" sid="ITSI" part="specif" defobj="spec"/>
          <AddParts owner="spec" sid="ITFC" part="fc" defobj="fuco"/>
          <AddParts owner="fuco" sid="IDRE" part="rq" defobj="req"/>
        </Context>
        <Tree startGroup="spec">
          <Case group="spec" go="/fc"/>
          <Case group="fuco" go="/rq"/>
        </Tree>
      </ContextTree>

      <!--Grid>
        <Columns>
          <ItemNameColumn width="200"/>
          <ItemAttributeColumn type="AUID" width="100"/> 
        </Columns>                      
        <ForEachPart type="ITSI">
          <DefObj>
            <Row/>
          </DefObj> 
        </ForEachPart>
      </Grid-->

      <!--StructureTree>
        <ViewName>Requirements</ViewName>
        <TopItemPath>/ITSI</TopItemPath>
      </StructureTree-->

      <!--StructureTree>
        <ShouldShowSids>ITEC;ITRQ</ShouldShowSids>
      </StructureTree-->
    </RightSide>   
    <AdditionalLeftColumns> 
      <TextColumn caption="NameName">#{Name}</TextColumn>
      <TextColumn caption="Dep">#{?/defobj::/SIGD.Select(Name).Join('')}</TextColumn>
    </AdditionalLeftColumns> 
  </Config>
</Configs>


Example Result