Sometimes it is possible to create a smaller schema that only accesses the objects that are needed for a particularly performance-instensive process. This can be particularly important if there are many child collections that are referenced by a particular business object (BO). When a child collection on the maintenance object (MO) is not mapped, the application does not issue a read. While a large BO with many collections might be acceptable for online transactions, a process used in a batch could benefit by a smaller subset of elements. These smaller BOs are referred to as Light or "Lite" BOs.
When any XML-mapped field is referenced, the application must parse the XML's columns data. Depending on how much data is mapped, there could be some minor savings gained by avoiding the XML data since it will not need to be parsed.
Here is an example of a very large BO:
<schema fwRel="2">
<mainSection type="group" mdField="C1_TAXFORM_MAIN_LBL"/>
<selectTaxFormLabel type="group" mdField="C1_SELECT_TAXFORM_LBL"/>
<taxFormId mapField="TAX_FORM_ID" isPrimeKey="true" fkRef="C1-TXFRM"/>
<formType mapField="FORM_TYPE_CD" fkRef="C1-FRMTY"/>
<bo mapField="BUS_OBJ_CD" fkRef="F1-BUSOB" suppress="true"/>
<boStatus mapField="BO_STATUS_CD"/>
<statusUpdateDateTime mapField="STATUS_UPD_DTTM" suppress="true"/>
<totalAmountDueOverpaid mapField="C1_TOTAL_OWED_OVERPAID"/>
<remittanceAmount mapField="C1_FORM_PYMNT_AMT"/>
<formSource mapField="C1_FORM_SRCE_CD" fkRef="C1-FRMSC"/>
<formDetailsInfoSection type="group" mdField="C1_ITF_FORM_DTLS_INFO"/>
<demographicInfoSection type="group" mdField="C1_TF_DEMO_INFO_LBL"/>
<taxpayerDemographicInformation type="group">
<includeDA name="C1-TaxpayerDemoInfo"/>
</taxpayerDemographicInformation>
<lineItemsInfoSection type="group" mdField="C1_TF_LINE_ITEMS_LBL"/>
<obligationId mapField="SA_ID" fkRef="SA"/>
<receiveDate mapField="RECV_DT" required="true"/>
<taxFormFilingType mapField="TAX_FORM_FILING_TYPE_FLG" default="C1OR" required="true"/>
<formBatchHeaderId mapField="FORM_BATCH_HDR_ID" fkRef="C1-FBHDR"/>
<documentLocator mapField="DOC_LOC_NBR"/>
<adjustReason dataType="lookup" mdField="C1_TXF_ADJRSN_FLG" mapXML="BO_DATA_AREA"/>
<transferReason dataType="lookup" mdField="C1_TXF_TFRRSN_FLG" mapXML="BO_DATA_AREA"/>
<reverseReason dataType="lookup" mdField="C1_TXF_RVSRSN_FLG" mapXML="BO_DATA_AREA"/>
<cancelReason dataType="lookup" mdField="C1_TXF_CANRSN_FLG" mapXML="BO_DATA_AREA"/>
<issuesSection type="group" mdField="C1_TF_ISSUES_LBL"/>
<suspenseIssueList type="group" mapXML="BO_DATA_AREA">
<includeDA name="C1-IssuesList"/>
</suspenseIssueList>
<waitingForInfoIssueList type="group" mapXML="BO_DATA_AREA">
<includeDA name="C1-IssuesList"/>
</waitingForInfoIssueList>
<taxpayerPersonID fkRef="PER" mdField="PER_ID" mapXML="BO_DATA_AREA"/>
<account fkRef="ACCT" mdField="ACCT_ID" mapXML="BO_DATA_AREA"/>
<taxRole fkRef="C1-TXRL" mdField="TAX_ROLE_ID" mapXML="BO_DATA_AREA"/>
<transferAdjustSection type="group" mdField="C1_TF_TRANSFER_ADJUST"/>
<adjustedFromForm fkRef="C1-TXFRM" mapXML="BO_DATA_AREA" mdField="C1_TF_ADJUSTED_FROM"/>
<transferredFromForm fkRef="C1-TXFRM" mapXML="BO_DATA_AREA" mdField="C1_TF_TRANSFERRED_FROM"/>
<adjustedToForm fkRef="C1-TXFRM" mapXML="BO_DATA_AREA" mdField="C1_TF_ADJUSTED_TO"/>
<transferredToForm fkRef="C1-TXFRM" mapXML="BO_DATA_AREA" mdField="C1_TF_TRANSFERRED_TO"/>
<version mapField="VERSION" suppress="true"/>
</schema>
This performance-sensitive process only required a subset of the BO, so the following light BO was created:
<schema fwRel="2">
<taxFormId mapField="TAX_FORM_ID" isPrimeKey="true" fkRef="C1-TXFRM"/>
<formType mapField="FORM_TYPE_CD" fkRef="C1-FRMTY"/>
<bo mapField="BUS_OBJ_CD" fkRef="F1-BUSOB" suppress="true" required="true"/>
<boStatus mapField="BO_STATUS_CD"/>
<receiveDate mapField="RECV_DT"/>
<formChangeReasons type="group" mapXML="BO_DATA_AREA">
<formChangeReasonsList type="list">
<formChangeReason mdField="FORM_CHG_RSN_CD" isPrimeKey="true" fkRef="C1-FRCHR"/>
</formChangeReasonsList>
</formChangeReasons>
<formChangeComments mdField="COMMENTS" mapXML="BO_DATA_AREA"/>
<version mapField="VERSION" suppress="true"/>
</schema>
While this is not really a disadvantage of the concept, creating additional BOs results in more objects to maintain.