Configuration Guidelines > Performance Guidelines > Multivalue Link Underlying Multivalue Groups >

Nested Multivalue Links

As previously described, a multivalue group can be populated through a joined table by using the SrcField property to refer to a business component field that is a foreign key to the joined table. Although less common, it is also possible to populate a multivalue group through another multivalue link from the same business component by using the SrcField property to refer to a multivalue field instead of a simple (single value) field. For example, consider the relationship between employees, positions, and territories. In Siebel eBusiness applications, one employee can hold multiple positions, while each position can be assigned to multiple territories. This means there is an Employee/Position link that defines the many-to-many relationship between employees and positions and there is a Position/Territory link that defines the many-to-many relationship between positions and territories.

The Employee business component (in Employee.odf) includes multivalue links for both positions and territories. The Position MVL is a standard one (that is, without a SrcField property):

[Multivalue link]

DestBusComp = Position

DestLink = Employee/Position

PrimaryIdField = Primary Position Id

NoInsert = TRUE

UsePrimaryJoin = FALSE

However, because territories and employees are related only indirectly through positions, the Territory MVL is actually based on the Position/Territory link and must reference Position Id as its SrcField to find the appropriate position to use as the parent record for this link:

[Multivalue link]

SrcField = Position Id

DestBusComp = Territory

DestLink = Position/Territory

NoInsert = TRUE

Each employee can hold multiple positions, so the Position Id field is itself defined as a multivalue field (from the Position MVG) in the Employee business component:

[Multivalue link]

Name = Position Id

Field = Id

MultiValueLink = Position

ReadOnly = TRUE

In other words, the Position MVG in the Employee business component shows all of the child Position records for the current employee, while the Territory MVG in this same business component shows all of the child Territory records for whichever Position record is currently selected in the Position MVG.

This type of nested multivalue group may have significant performance implications because of the extra subqueries that must be executed. Furthermore, it is often unclear to the user that changing the currently selected value in one MVG causes another MVG to display an entirely new set of records. Because of these performance and usability concerns, such nested MVGs appear very rarely in the standard configurations of Siebel eBusiness Applications. You should generally avoid them in custom configurations.

 Configuration Guidelines 
 Published: 18 April 2003