This article includes an example of a configurable graph config item definition that includes an implicit connection (in-out port). The connection type mimics that of the SWExtension.ComponentGraph. The two connected items point to the same port, but with different part types. 




Example Data

Example Configuration

XML
<Graph>
    <Options>
        <ObjIcons/>
    </Options>
  <Mappings>
    <MappingImplicit id="2" caption="Connect Ports">
      <OutPort partType="ARPP"/>
      <InPort partType="ARRP"/>
    </MappingImplicit>    
  </Mappings>
  <Context name="Vehical">
    <AddParts owner="main" sid="FUPA" part="Functions" defobj="Function"/>
    <AddParts owner="Function" sid="REDC" part="FunctionContainers" defobj="FunctionContainer"/>
    <AddParts owner="FunctionContainer" sid="IBRA" part="LeftRequirements" defobj="LeftRequirement"/>
    <AddParts owner="FunctionContainer" sid="3SBH" part="LeftRequirements" defobj="+LeftRequirement"/>
    <AddParts owner="FunctionContainer" sid="FUAN" part="FunAnchors" defobj="+Anchor"/>
    <AddParts owner="main" sid="DEPA" part="Designs" defobj="Design"/>
    <AddParts owner="Design" sid="DEDS" part="DesignContainers" defobj="DesignContainer"/>
    <AddParts owner="DesignContainer" sid="IXRQ" part="RightRequirements" defobj="RightRequirement"/>
    <AddParts owner="DesignContainer" sid="IXRR" part="RightRequirements" defobj="+RightRequirement"/>
    <AddParts owner="DesignContainer" sid="SYAN" part="SysAnchors" defobj="+Anchor"/>
    <AddParts owner="Design" sid="AIML" part="MappingItemContainers" defobj="MappingItemContainer"/>
    <AddParts owner="MappingItemContainer" sid="IRMM" part="MappingItems" defobj="MappingItem"/>
    <AddParts owner="MappingItem" sid="EXRE" part="MappingItemLeftReq" defobj="+LeftRequirement"/>
    <AddParts owner="MappingItem" sid="INRX" part="MappingItemRightReq" defobj="+RightRequirement"/>
    <AddParts owner="main" sid="DEFU" part="DesignFunctions" defobj="DesignFunction"/>
    <AddParts owner="DesignFunction" sid="ITFC" part="SwComponents" defobj="SwComponent"/>
    <AddParts owner="SwComponent" sid="ARCW" part="SwComponents" defobj="+SwComponent"/>
    <AddParts owner="SwComponent" sid="ARPP" part="SendSignal" defobj="+Port"/>
    <AddParts owner="SwComponent" sid="ARRP" part="ReceiveSignal" defobj="+Port"/>
    <AddParts owner="DesignFunction" sid="ARPP" part="SendSignal" defobj="+Port"/>
    <AddParts owner="DesignFunction" sid="ARRP" part="ReceiveSignal" defobj="+Port"/>
    
  </Context>
  <ForEachInContext name="Vehical" group="DesignFunction">
    <Node>
      <AddPart owner="." partType="ITFC"/>
      <AddPart owner="." partType="ARRP"/>
      <AddPart owner="." partType="ARPP"/>
      <ForEach select="Context:/part::SwComponents">
        <Variable name="currentPart" as="Part" select="."/>
        <ForEach select="Context:/defobj::">
                    <Node>
                        <!--RemovePart part="$currentPart"/-->
                        <AddPart owner="." partType="ARRP"/>
                        <AddPart owner="." partType="ARPP"/>
                        <ForEach select="Context:/part::SendSignal">
                            <OutPort connection="DefObj">
                              <RemovePart part="." caption="Remove Send Signals"/>
                            </OutPort>
                        </ForEach>
                        <ForEach select="Context:/part::ReceiveSignal">
                            <InPort connection="DefObj">
                               <RemovePart part="." caption="Remove Receive Signals"/>
                            </InPort>
                        </ForEach>
                    </Node>
                </ForEach>
            </ForEach>
            <ForEach select="Context:/SendSignal">
                <OutPort connection=".">
                  <RemovePart part="." caption="Remove Send Signals"/>
                </OutPort>                  
            </ForEach>
            <ForEach select="Context:/part::ReceiveSignal">
                <InPort connection="DefObj">
                  <RemovePart part="." caption="Remove Receive Signals"/>   
                </InPort>
            </ForEach>
        </Node>                                     
    </ForEachInContext>         
</Graph>             


<MappingImplicit> has two required attributes.

id identifies the mapping configuration. It is a string value that must be unique within a graph.

caption is the connect option caption text.


<OutPort> defines the OutPort part to be connected. The partType attribute must provide the part type SID.


<InPort> defines the InPort part to be connected. The partType attribute must provide the part type SID.


Example Result

When selecting a port and a component to connect the port to, the configured connection options will be available.  This enables users to work graphically directly in the view.