When defining a context's item groups and adding items to the same item group in a context more than once, you can define how they are handled. This article describes the two options that are available.


Prerequisites


There are two ways to add a part: 


Outer Join

A "+" sign preceding the group name (defined by defobj="") indicates that you want to perform a union operation, adding all the newly found items to the already existing group, establishing relations to items already existing in that group. So, an outer join adds all resulting defobjs to the group.  The first time the group is defined, outer join is implicit, and the plus sign is not necessary.


Inner Join

An inner join is different from the outer join, by not adding any items to the defobj group. It only adds the parts to the part group thereby establishing relationships to items in an already defined defobj group. In other words, omitting the "+" symbol means new items will not be added to the group, but you establish relations to items already existing in that group. 



Example Use Case

For each component, list the Design Signals that it sends and the components that receive that design signal.


Example Solution

<Report>
  <Context name="context1">
    <AddParts owner="main" sid="XESX" part="archToSoftware" defobj="Software"/>
    <AddParts owner="Software" sid="EXAC" part="softwareToComps" defobj="Components"/>
    <AddParts owner="Components" sid="ITOS" part="sendPorts" defobj="DesignSignals"/>
    <AddParts owner="Components" sid="ITIS" part="receivePorts" defobj="+DesignSignals"/>
  </Context>
</Report>

By combining groups of items, it is possible to ”Move forward” along one part defined into a group and then ”Move back” following another part:


From Components, follow sendPorts down to DesignSignals.

From Design Signals follow receivePorts up to Components.