Siebel Tools Reference > Business Objects Layer > Multi-Value Links >

How an Indirect Multi-Value Link Is Constructed


If there is a join object definition that joins a master business component to the master business component of the link, the existing link can be used in a multi-value link. In essence, the multi-value link is being based on a "join to a link." Such a multi-value link is known as an indirect multi-value link. The configuration of an indirect multi-value link is illustrated in Figure 113.

Figure 113. Indirect Multi-Value Link Details

Click for full size image

In Figure 113, the object definition names have been provided for an example multi-value link called Business Address in the Contact business component. Although given the same name as its counterpart in the Account business component, this is a different object definition. For a comparison of conventional and indirect multi-value links, review Figure 112.

The primary difference between the Business Address multi-value link in the Contact business component and in its Account counterpart is that the multi-value link object definition is found in a business component other than the master business component.

The Source Field property in the multi-value link in the Contact business component is non-blank. In a conventional multi-value link this property is blank, indicating that the Id field in the current business component is used (corresponding to ROW_ID in the base table). In the indirect multi-value link, the Source Field property specifies a field in the S_ORG_EXT join called Joined Account ID. The Joined Account ID field provides the Account Id of the Account that corresponds to the current Contact.

The roles of the object definitions in Figure 113 are explained as follows:

The parent component of a multi-value link is usually the same as the business component in which the MVL is defined. However, by using the Source Field property of the Link object, it is also possible to create an MVL whose parent business component is related to the current business component indirectly using a join or another MVL.

Every MVL in a Siebel application is based on an underlying Link object, whose name is specified by the Destination Link property of the multi-value link. Every link, in turn, defines a one-to-many relationship between two business components. Typically, the business component in which an MVL is defined is the same as the parent business component of the underlying link on which the MVL is based.

For example, consider the Business Address multi-value link in the Account business component:

[MultiValueLink]

DestBusComp = "Business Address"
DestLink = "Account/Business Address"
PrimaryIdField = "Primary Address Id"
CheckNoMatch = "TRUE"
PopupUpdOnly = "TRUE"
NoCopy = "TRUE"

The Destination Link property indicates that this MVL is based on the Account/Business Address link, which is itself defined as:

[Link]

Name = "Account/Business Address"
ParentBusComp = "Account"
ChildBusComp = "Business Address"
DestField = "Account Id"
CascadeDelete = "Delete"

The parent business component of this link is the Account business component, which is also the business component in which the MVL has been defined. In this typical MVL configuration, the multi-value group will be populated with all the children Business Address records for whichever Account is currently selected in the Account business component.

Indirect Multi-Value Links Using Joins

Although the parent business component of a multi-value group is usually the same as the business component in which the multi-value link is defined, this is not always the case. For example, the Opportunity business component—like the Account business component—contains a multi-value group of Business Addresses. In this case, however, the Business Addresses are not directly related to the Opportunities themselves; instead, they are children records of whatever Account is associated with the current Opportunity (if there is such an Account). In order for Siebel applications to populate this MVG correctly, it needs to know how to find the appropriate parent Account record for the link given the current record in the Opportunity business component. The Source Field property of the Link object exists for this purpose.

Using the above example, the Business Address MVL is defined as follows within the Opportunity business component:

[MultiValueLink]

SrcField = "Joined Account Id"
DestBusComp = "Business Address"
DestLink = "Account/Business Address"
PrimaryIdField = "Primary Address Id"
CheckNoMatch = "TRUE"
PopupUpdOnly = "TRUE"

The Destination Link property of this MVL is still the Account and Business Address link, which defines the one-to-many relationship between Accounts and Business Addresses. Therefore, in this case, the parent business component of the link (that is, Account) is not the same as the business component in which the MVL is defined (that is, Opportunity).

In order to determine the appropriate Account record for which to get the children Business Addresses, the Siebel application looks at the Source Field property of the MVL. For this particular multi-value link, the Source Field property refers to the Joined Account Id field in the Opportunity business component, which maps to the ROW_ID database column from the joined S_ORG_EXT table. Therefore, for each Opportunity record, the Siebel application will populate the MVG with all Business Address records that are children of whichever Account is indicated by the ROW_ID value stored in the Joined Account Id field.


 Siebel Tools Reference, Version 7.5, Rev. A 
 Published: 18 April 2003