Interface IncludeViaAndDomainKey
Using includeVia with Composite Keys and domainKey
 In some legacy systems, composite primary keys are used to simulate multi-tenancy,
  often by including a domainKey or a similar field in the key. Smart GWT
  supports this pattern by allowing includeVia to work with composite keys.
  
  This usage is generally discouraged in modern development. We strongly recommend using
 Smart GWT?s transparent multi-tenancy approach
 instead, which
 provides true multi-tenant separation with less complexity and better long-term
 maintainability.
  
 However, if you're working with an existing legacy system that uses this pattern,
 includeVia
 can be used to precisely define foreign key paths involving composite keys and indirect
 relation chains.
  
 The examples below are based on the DataSources shown at the end of this section and are using
 the
 same data structure as in the ,
 but with an additional domainKey primary key field added to all DataSources to separate
 data into
 logical domains such as "live" and "test". Similarly all examples below also resolve the same
 relation chain:
  includeVia syntax and behavior
Order > Customer (via accountMgrEmployeeNumber) > Employee > Office
Example 1: Full path specified
Explicit composite keys at every step.includeFrom="Customer.Employee.Office.city" includeVia="Order.customerNumber-domainKey:Customer.accountMgrEmployeeNumber-domainKey:Employee.officeCode-domainKey"
Example 2: Partial includeVia with omitted datasource names
Unambiguous field names allow datasource names to be omitted.includeFrom="Customer.Employee.Office.city" includeVia="customerNumber-domainKey:accountMgrEmployeeNumber-domainKey"
Example 3: Minimal includeVia
Only the override for the non-default FK path is needed; the rest is resolved automatically.includeFrom="Customer.Employee.Office.city" includeVia="accountMgrEmployeeNumber-domainKey"
Example 4: Shorter includeFrom with full includeVia
The includeFrom starts mid-chain, but includeVia ensures correct relation chain from the base DataSource.includeFrom="Employee.Office.city" includeVia="Order.customerNumber-domainKey:Customer.accountMgrEmployeeNumber-domainKey:Employee.officeCode-domainKey"
Example 5: Minimal includeFrom and includeVia
System finds shortest valid path from base to target using the provided override.includeFrom="Office.city" includeVia="accountMgrEmployeeNumber-domainKey"
Datasources used in samples:
  <DataSource ID="Order" serverType="sql">
      <fields>
          <field name="orderNumber" type="integer" primaryKey="true" />
          <field name="domainKey" type="text" primaryKey="true" foreignKey="Customer.domainKey"/>
          <field name="orderDate" type="date" required="true"/>
          <field name="customerNumber" type="integer" foreignKey="Customer.customerNumber" />
      </fields>
  </DataSource>
  
  
  <DataSource ID="Customer" serverType="sql">
      <fields>
          <field name="customerNumber" type="integer" primaryKey="true" />
          <field name="domainKey" type="text" primaryKey="true" foreignKey="Employee.domainKey" />
          <field name="customerName" type="text" required="true"/>
          <field name="salesRepEmployeeNumber" type="integer" foreignKey="Employee.employeeNumber" />
          <field name="accountMgrEmployeeNumber" type="integer" foreignKey="Employee.employeeNumber" />
      </fields>
  </DataSource>
  
  
  <DataSource ID="Employee" serverType="sql">
      <fields>
          <field name="employeeNumber" type="integer" primaryKey="true" />
          <field name="domainKey" type="text" primaryKey="true" foreignKey="Office.domainKey"/>
          <field name="lastName" type="text" required="true"/>
          <field name="firstName" type="text" required="true"/>
          <field name="officeCode" type="text" foreignKey="Office.officeCode" />
      </fields>
  </DataSource>
  
  
  <DataSource ID="Office" serverType="sql">
      <fields>
          <field name="officeCode" type="text" primaryKey="true" />
          <field name="domainKey" type="text" primaryKey="true" />
          <field name="city" type="text" />
      </fields>
  </DataSource>